From 3a626ffdfd7f6d6a7fde9aa038ed68285193efd5 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Thu, 7 May 2026 14:00:03 +0200 Subject: [PATCH] style(ui): tighten hero line-height to 0.9 for a more locked-in industrial aesthetic Former-commit-id: 2bb01c43ff20a4920cb42c50155c3b8b62a68080 --- .next/BUILD_ID | 2 +- .next/build-manifest.json | 4 ++-- .next/fallback-build-manifest.json | 4 ++-- .next/required-server-files.js | 2 +- .next/required-server-files.json | 2 +- .../[slug]/page/react-loadable-manifest.json | 6 +++--- .../[slug]/page_client-reference-manifest.js | 2 +- .../[slug]/page/react-loadable-manifest.json | 6 +++--- .../[slug]/page_client-reference-manifest.js | 2 +- .../blog/page/react-loadable-manifest.json | 6 +++--- .../blog/page_client-reference-manifest.js | 2 +- .../contact/page/react-loadable-manifest.json | 6 +++--- .../contact/page_client-reference-manifest.js | 2 +- .../[locale]/page/react-loadable-manifest.json | 6 +++--- .../[locale]/page_client-reference-manifest.js | 2 +- .../team/page/react-loadable-manifest.json | 6 +++--- .../team/page_client-reference-manifest.js | 2 +- .../test/page/react-loadable-manifest.json | 6 +++--- .../test/page_client-reference-manifest.js | 2 +- .next/server/app/_global-error.html | 4 ++-- .next/server/app/_global-error.rsc | 2 +- .../__PAGE__.segment.rsc | 2 +- .../_global-error.segments/_full.segment.rsc | 2 +- .../_global-error.segments/_head.segment.rsc | 2 +- .../_global-error.segments/_index.segment.rsc | 2 +- .../_global-error.segments/_tree.segment.rsc | 2 +- .next/server/app/_not-found.html | 2 +- .next/server/app/_not-found.rsc | 2 +- .../app/_not-found.segments/_full.segment.rsc | 2 +- .../app/_not-found.segments/_head.segment.rsc | 2 +- .../app/_not-found.segments/_index.segment.rsc | 2 +- .../_not-found.segments/_not-found.segment.rsc | 2 +- .../_not-found/__PAGE__.segment.rsc | 2 +- .../app/_not-found.segments/_tree.segment.rsc | 2 +- .next/server/app/test.html | 2 +- .next/server/app/test.rsc | 2 +- .../server/app/test.segments/_full.segment.rsc | 2 +- .../server/app/test.segments/_head.segment.rsc | 2 +- .../app/test.segments/_index.segment.rsc | 2 +- .../server/app/test.segments/_tree.segment.rsc | 2 +- .../server/app/test.segments/test.segment.rsc | 2 +- .../test.segments/test/__PAGE__.segment.rsc | 2 +- .../chunks/node_modules__pnpm_b4ece637._.js | 6 +++--- .../node_modules__pnpm_b4ece637._.js.map | 2 +- .../ssr/[root-of-the-server]__0bdab930._.js | 6 +++--- .../[root-of-the-server]__0bdab930._.js.map | 4 ++-- .../ssr/[root-of-the-server]__34977423._.js | 6 +++--- .../[root-of-the-server]__34977423._.js.map | 4 ++-- .../ssr/[root-of-the-server]__63a582be._.js | 6 +++--- .../[root-of-the-server]__63a582be._.js.map | 4 ++-- .../ssr/[root-of-the-server]__b20a6437._.js | 6 +++--- .../[root-of-the-server]__b20a6437._.js.map | 4 ++-- .../server/chunks/ssr/components_5d55bae9._.js | 6 +++--- .../chunks/ssr/components_5d55bae9._.js.map | 4 ++-- .../chunks/ssr/components_ui_c944c65b._.js | 6 +++--- .../chunks/ssr/components_ui_c944c65b._.js.map | 4 ++-- .../ssr/node_modules__pnpm_2ad0b5ae._.js | 6 +++--- .../ssr/node_modules__pnpm_2ad0b5ae._.js.map | 2 +- .../ssr/node_modules__pnpm_66399b09._.js | 6 +++--- .../ssr/node_modules__pnpm_66399b09._.js.map | 2 +- .next/server/pages/404.html | 2 +- .next/server/pages/500.html | 4 ++-- .next/standalone/.next/BUILD_ID | 2 +- .next/standalone/.next/build-manifest.json | 4 ++-- .../.next/required-server-files.json | 2 +- .../[slug]/page/react-loadable-manifest.json | 6 +++--- .../[slug]/page_client-reference-manifest.js | 2 +- .../[slug]/page/react-loadable-manifest.json | 6 +++--- .../[slug]/page_client-reference-manifest.js | 2 +- .../blog/page/react-loadable-manifest.json | 6 +++--- .../blog/page_client-reference-manifest.js | 2 +- .../contact/page/react-loadable-manifest.json | 6 +++--- .../contact/page_client-reference-manifest.js | 2 +- .../[locale]/page/react-loadable-manifest.json | 6 +++--- .../[locale]/page_client-reference-manifest.js | 2 +- .../team/page/react-loadable-manifest.json | 6 +++--- .../team/page_client-reference-manifest.js | 2 +- .../test/page/react-loadable-manifest.json | 6 +++--- .../test/page_client-reference-manifest.js | 2 +- .../.next/server/app/_global-error.html | 4 ++-- .../.next/server/app/_global-error.rsc | 2 +- .../__PAGE__.segment.rsc | 2 +- .../_global-error.segments/_full.segment.rsc | 2 +- .../_global-error.segments/_head.segment.rsc | 2 +- .../_global-error.segments/_index.segment.rsc | 2 +- .../_global-error.segments/_tree.segment.rsc | 2 +- .../.next/server/app/_not-found.html | 2 +- .../standalone/.next/server/app/_not-found.rsc | 2 +- .../app/_not-found.segments/_full.segment.rsc | 2 +- .../app/_not-found.segments/_head.segment.rsc | 2 +- .../app/_not-found.segments/_index.segment.rsc | 2 +- .../_not-found.segments/_not-found.segment.rsc | 2 +- .../_not-found/__PAGE__.segment.rsc | 2 +- .../app/_not-found.segments/_tree.segment.rsc | 2 +- .next/standalone/.next/server/app/test.html | 2 +- .next/standalone/.next/server/app/test.rsc | 2 +- .../server/app/test.segments/_full.segment.rsc | 2 +- .../server/app/test.segments/_head.segment.rsc | 2 +- .../app/test.segments/_index.segment.rsc | 2 +- .../server/app/test.segments/_tree.segment.rsc | 2 +- .../server/app/test.segments/test.segment.rsc | 2 +- .../test.segments/test/__PAGE__.segment.rsc | 2 +- .../chunks/node_modules__pnpm_b4ece637._.js | 6 +++--- .../ssr/[root-of-the-server]__0bdab930._.js | 6 +++--- .../ssr/[root-of-the-server]__34977423._.js | 6 +++--- .../ssr/[root-of-the-server]__63a582be._.js | 6 +++--- .../ssr/[root-of-the-server]__b20a6437._.js | 6 +++--- .../server/chunks/ssr/components_5d55bae9._.js | 6 +++--- .../chunks/ssr/components_ui_c944c65b._.js | 6 +++--- .../ssr/node_modules__pnpm_2ad0b5ae._.js | 6 +++--- .../ssr/node_modules__pnpm_66399b09._.js | 6 +++--- .next/standalone/.next/server/pages/404.html | 2 +- .next/standalone/.next/server/pages/500.html | 4 ++-- .next/standalone/server.js | 2 +- .../_buildManifest.js | 0 .../_clientMiddlewareManifest.json | 0 .../_ssgManifest.js | 0 ...2c80c6d8e77ec885.js => 0fb0262dbadeeecd.js} | 6 +++--- ...a9e41f7e725e0855.js => 15da4f80e6e79aca.js} | 6 +++--- ...9dd118ede697d679.js => 218ae81565b48aff.js} | 6 +++--- ...aec2fa7d5c9477d9.js => 2f9e45ecb224d02b.js} | 6 +++--- ...e30faaa1d932575b.js => 40c364ffa4723488.js} | 6 +++--- .next/static/chunks/507106f8cc18accf.js | 4 ++++ ...8d21a9c9b9b42088.js => 5a836673698c817b.js} | 6 +++--- ...5b986d05c5eeddd1.js => 5dced52d81a603a9.js} | 6 +++--- ...96ab9ac4f103512c.js => 8eda4ccbc7682bed.js} | 6 +++--- .next/static/chunks/a551d00bdf29b7b5.js | 4 ---- .next/static/chunks/bead93b8f9ff3f6c.css | 1 - .next/static/chunks/c4abba184b151b69.css | 1 + ...bb67666abbf0faf9.js => d029331c34817a47.js} | 6 +++--- ...092693b3be4c94df.js => fd2d3a68c2dda793.js} | 6 +++--- ...ad93c165b40135d0.js => fdf84fd199216566.js} | 6 +++--- .next/trace | 2 +- .next/trace-build | 2 +- components/ui/Heading.tsx | 18 +++++++++--------- 135 files changed, 240 insertions(+), 240 deletions(-) rename .next/static/{ON8Osmtbmq5s2e697_K2w => XENt8yYSMkapksfMi5ncI}/_buildManifest.js (100%) rename .next/static/{ON8Osmtbmq5s2e697_K2w => XENt8yYSMkapksfMi5ncI}/_clientMiddlewareManifest.json (100%) rename .next/static/{ON8Osmtbmq5s2e697_K2w => XENt8yYSMkapksfMi5ncI}/_ssgManifest.js (100%) rename .next/static/chunks/{2c80c6d8e77ec885.js => 0fb0262dbadeeecd.js} (99%) rename .next/static/chunks/{a9e41f7e725e0855.js => 15da4f80e6e79aca.js} (65%) rename .next/static/chunks/{9dd118ede697d679.js => 218ae81565b48aff.js} (78%) rename .next/static/chunks/{aec2fa7d5c9477d9.js => 2f9e45ecb224d02b.js} (98%) rename .next/static/chunks/{e30faaa1d932575b.js => 40c364ffa4723488.js} (95%) create mode 100644 .next/static/chunks/507106f8cc18accf.js rename .next/static/chunks/{8d21a9c9b9b42088.js => 5a836673698c817b.js} (82%) rename .next/static/chunks/{5b986d05c5eeddd1.js => 5dced52d81a603a9.js} (98%) rename .next/static/chunks/{96ab9ac4f103512c.js => 8eda4ccbc7682bed.js} (74%) delete mode 100644 .next/static/chunks/a551d00bdf29b7b5.js delete mode 100644 .next/static/chunks/bead93b8f9ff3f6c.css create mode 100644 .next/static/chunks/c4abba184b151b69.css rename .next/static/chunks/{bb67666abbf0faf9.js => d029331c34817a47.js} (99%) rename .next/static/chunks/{092693b3be4c94df.js => fd2d3a68c2dda793.js} (99%) rename .next/static/chunks/{ad93c165b40135d0.js => fdf84fd199216566.js} (98%) diff --git a/.next/BUILD_ID b/.next/BUILD_ID index 5709a67db..0f376391c 100644 --- a/.next/BUILD_ID +++ b/.next/BUILD_ID @@ -1 +1 @@ -ON8Osmtbmq5s2e697_K2w \ No newline at end of file +XENt8yYSMkapksfMi5ncI \ No newline at end of file diff --git a/.next/build-manifest.json b/.next/build-manifest.json index 25a94290c..57d2d36e2 100644 --- a/.next/build-manifest.json +++ b/.next/build-manifest.json @@ -7,8 +7,8 @@ "static/chunks/a6dad97d9634a72d.js" ], "lowPriorityFiles": [ - "static/ON8Osmtbmq5s2e697_K2w/_ssgManifest.js", - "static/ON8Osmtbmq5s2e697_K2w/_buildManifest.js" + "static/XENt8yYSMkapksfMi5ncI/_ssgManifest.js", + "static/XENt8yYSMkapksfMi5ncI/_buildManifest.js" ], "rootMainFiles": [ "static/chunks/c68fc807b9365f18.js", diff --git a/.next/fallback-build-manifest.json b/.next/fallback-build-manifest.json index f80b261e2..9398188c4 100644 --- a/.next/fallback-build-manifest.json +++ b/.next/fallback-build-manifest.json @@ -5,8 +5,8 @@ "devFiles": [], "polyfillFiles": [], "lowPriorityFiles": [ - "static/ON8Osmtbmq5s2e697_K2w/_ssgManifest.js", - "static/ON8Osmtbmq5s2e697_K2w/_buildManifest.js" + "static/XENt8yYSMkapksfMi5ncI/_ssgManifest.js", + "static/XENt8yYSMkapksfMi5ncI/_buildManifest.js" ], "rootMainFiles": [] } \ No newline at end of file diff --git a/.next/required-server-files.js b/.next/required-server-files.js index 63e804c14..09d3905c7 100644 --- a/.next/required-server-files.js +++ b/.next/required-server-files.js @@ -4,7 +4,7 @@ self.__SERVER_FILES_MANIFEST={ "env": { "_sentryRewriteFramesDistDir": ".next", "_sentryRewriteFramesAssetPrefixPath": "", - "_sentryRelease": "9dad66acd3deb36c6e51fae1fdce6de96dd992c7" + "_sentryRelease": "dc62485b60679b810b5f74bfb5a22915b7a62314" }, "typescript": { "ignoreBuildErrors": false diff --git a/.next/required-server-files.json b/.next/required-server-files.json index d6e248fdb..47f2c9ea5 100644 --- a/.next/required-server-files.json +++ b/.next/required-server-files.json @@ -4,7 +4,7 @@ "env": { "_sentryRewriteFramesDistDir": ".next", "_sentryRewriteFramesAssetPrefixPath": "", - "_sentryRelease": "9dad66acd3deb36c6e51fae1fdce6de96dd992c7" + "_sentryRelease": "dc62485b60679b810b5f74bfb5a22915b7a62314" }, "typescript": { "ignoreBuildErrors": false diff --git a/.next/server/app/[locale]/[slug]/page/react-loadable-manifest.json b/.next/server/app/[locale]/[slug]/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/server/app/[locale]/[slug]/page/react-loadable-manifest.json +++ b/.next/server/app/[locale]/[slug]/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/server/app/[locale]/[slug]/page_client-reference-manifest.js b/.next/server/app/[locale]/[slug]/page_client-reference-manifest.js index 8c21aea90..eba270807 100644 --- a/.next/server/app/[locale]/[slug]/page_client-reference-manifest.js +++ b/.next/server/app/[locale]/[slug]/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/[slug]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedLink.tsx ":{"id":813804,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedLink.tsx":{"id":813804,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx ":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx ":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx ":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx ":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompanyTimeline.tsx ":{"id":287980,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompanyTimeline.tsx":{"id":287980,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"813804":{"*":{"id":586793,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"610408":{"*":{"id":805585,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"138557":{"*":{"id":523290,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"285997":{"*":{"id":649511,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"677705":{"*":{"id":744435,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"287980":{"*":{"id":104186,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"813804":{"*":{"id":214504,"name":"*","chunks":[],"async":false}},"610408":{"*":{"id":575076,"name":"*","chunks":[],"async":false}},"138557":{"*":{"id":34183,"name":"*","chunks":[],"async":false}},"285997":{"*":{"id":819160,"name":"*","chunks":[],"async":false}},"677705":{"*":{"id":960688,"name":"*","chunks":[],"async":false}},"287980":{"*":{"id":980820,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/[slug]/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/[slug]/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/bb67666abbf0faf9.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/[slug]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedLink.tsx ":{"id":813804,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedLink.tsx":{"id":813804,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx ":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx ":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx ":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx ":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompanyTimeline.tsx ":{"id":287980,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompanyTimeline.tsx":{"id":287980,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"813804":{"*":{"id":586793,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"610408":{"*":{"id":805585,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"138557":{"*":{"id":523290,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"285997":{"*":{"id":649511,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"677705":{"*":{"id":744435,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"287980":{"*":{"id":104186,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"813804":{"*":{"id":214504,"name":"*","chunks":[],"async":false}},"610408":{"*":{"id":575076,"name":"*","chunks":[],"async":false}},"138557":{"*":{"id":34183,"name":"*","chunks":[],"async":false}},"285997":{"*":{"id":819160,"name":"*","chunks":[],"async":false}},"677705":{"*":{"id":960688,"name":"*","chunks":[],"async":false}},"287980":{"*":{"id":980820,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/[slug]/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/[slug]/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/d029331c34817a47.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/server/app/[locale]/blog/[slug]/page/react-loadable-manifest.json b/.next/server/app/[locale]/blog/[slug]/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/server/app/[locale]/blog/[slug]/page/react-loadable-manifest.json +++ b/.next/server/app/[locale]/blog/[slug]/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/server/app/[locale]/blog/[slug]/page_client-reference-manifest.js b/.next/server/app/[locale]/blog/[slug]/page_client-reference-manifest.js index 4b196c0b2..52aa9ed13 100644 --- a/.next/server/app/[locale]/blog/[slug]/page_client-reference-manifest.js +++ b/.next/server/app/[locale]/blog/[slug]/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/blog/[slug]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blog/TableOfContents.tsx ":{"id":959504,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blog/TableOfContents.tsx":{"id":959504,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/BlogEngagementTracker.tsx ":{"id":59828,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/BlogEngagementTracker.tsx":{"id":59828,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"959504":{"*":{"id":762771,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"59828":{"*":{"id":679329,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"959504":{"*":{"id":630187,"name":"*","chunks":[],"async":false}},"59828":{"*":{"id":679007,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/blog/[slug]/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/blog/[slug]/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/e30faaa1d932575b.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/blog/[slug]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blog/TableOfContents.tsx ":{"id":959504,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blog/TableOfContents.tsx":{"id":959504,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/BlogEngagementTracker.tsx ":{"id":59828,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/BlogEngagementTracker.tsx":{"id":59828,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"959504":{"*":{"id":762771,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"59828":{"*":{"id":679329,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"959504":{"*":{"id":630187,"name":"*","chunks":[],"async":false}},"59828":{"*":{"id":679007,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/blog/[slug]/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/blog/[slug]/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/40c364ffa4723488.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/server/app/[locale]/blog/page/react-loadable-manifest.json b/.next/server/app/[locale]/blog/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/server/app/[locale]/blog/page/react-loadable-manifest.json +++ b/.next/server/app/[locale]/blog/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/server/app/[locale]/blog/page_client-reference-manifest.js b/.next/server/app/[locale]/blog/page_client-reference-manifest.js index 0fa4028b9..55bd11f67 100644 --- a/.next/server/app/[locale]/blog/page_client-reference-manifest.js +++ b/.next/server/app/[locale]/blog/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/blog/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/components/blog/BlogPaginationKeyboardObserver.tsx ":{"id":783488,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/components/blog/BlogPaginationKeyboardObserver.tsx":{"id":783488,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"783488":{"*":{"id":281104,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"783488":{"*":{"id":43482,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/blog/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/blog/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/a551d00bdf29b7b5.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/blog/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/components/blog/BlogPaginationKeyboardObserver.tsx ":{"id":783488,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/components/blog/BlogPaginationKeyboardObserver.tsx":{"id":783488,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"783488":{"*":{"id":281104,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"783488":{"*":{"id":43482,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/blog/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/blog/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/507106f8cc18accf.js"]}} diff --git a/.next/server/app/[locale]/contact/page/react-loadable-manifest.json b/.next/server/app/[locale]/contact/page/react-loadable-manifest.json index d4a3f8db2..fdfa4a197 100644 --- a/.next/server/app/[locale]/contact/page/react-loadable-manifest.json +++ b/.next/server/app/[locale]/contact/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/server/app/[locale]/contact/page_client-reference-manifest.js b/.next/server/app/[locale]/contact/page_client-reference-manifest.js index 046cd7c94..0d55194ec 100644 --- a/.next/server/app/[locale]/contact/page_client-reference-manifest.js +++ b/.next/server/app/[locale]/contact/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/contact/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactForm.tsx ":{"id":833128,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactForm.tsx":{"id":833128,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactMap.tsx ":{"id":936744,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactMap.tsx":{"id":936744,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ObfuscatedEmail.tsx ":{"id":499139,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ObfuscatedEmail.tsx":{"id":499139,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"833128":{"*":{"id":366014,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"936744":{"*":{"id":648658,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"499139":{"*":{"id":567784,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"833128":{"*":{"id":115955,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"936744":{"*":{"id":263835,"name":"*","chunks":[],"async":false}},"499139":{"*":{"id":228672,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/contact/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/contact/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/a9e41f7e725e0855.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/contact/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactForm.tsx ":{"id":833128,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactForm.tsx":{"id":833128,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactMap.tsx ":{"id":936744,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactMap.tsx":{"id":936744,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ObfuscatedEmail.tsx ":{"id":499139,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ObfuscatedEmail.tsx":{"id":499139,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"833128":{"*":{"id":366014,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"936744":{"*":{"id":648658,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"499139":{"*":{"id":567784,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"833128":{"*":{"id":115955,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"936744":{"*":{"id":263835,"name":"*","chunks":[],"async":false}},"499139":{"*":{"id":228672,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/contact/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/contact/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/15da4f80e6e79aca.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/server/app/[locale]/page/react-loadable-manifest.json b/.next/server/app/[locale]/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/server/app/[locale]/page/react-loadable-manifest.json +++ b/.next/server/app/[locale]/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/server/app/[locale]/page_client-reference-manifest.js b/.next/server/app/[locale]/page_client-reference-manifest.js index 37e637334..ab25bd30b 100644 --- a/.next/server/app/[locale]/page_client-reference-manifest.js +++ b/.next/server/app/[locale]/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx ":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx ":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx ":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx ":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"610408":{"*":{"id":805585,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"138557":{"*":{"id":523290,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"285997":{"*":{"id":649511,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"677705":{"*":{"id":744435,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"610408":{"*":{"id":575076,"name":"*","chunks":[],"async":false}},"138557":{"*":{"id":34183,"name":"*","chunks":[],"async":false}},"285997":{"*":{"id":819160,"name":"*","chunks":[],"async":false}},"677705":{"*":{"id":960688,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/650cc12d707f2be0.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx ":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx ":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx ":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx ":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"610408":{"*":{"id":805585,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"138557":{"*":{"id":523290,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"285997":{"*":{"id":649511,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"677705":{"*":{"id":744435,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"610408":{"*":{"id":575076,"name":"*","chunks":[],"async":false}},"138557":{"*":{"id":34183,"name":"*","chunks":[],"async":false}},"285997":{"*":{"id":819160,"name":"*","chunks":[],"async":false}},"677705":{"*":{"id":960688,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/650cc12d707f2be0.js"]}} diff --git a/.next/server/app/[locale]/team/page/react-loadable-manifest.json b/.next/server/app/[locale]/team/page/react-loadable-manifest.json index 2d920ed0d..732774f2f 100644 --- a/.next/server/app/[locale]/team/page/react-loadable-manifest.json +++ b/.next/server/app/[locale]/team/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/server/app/[locale]/team/page_client-reference-manifest.js b/.next/server/app/[locale]/team/page_client-reference-manifest.js index 3b76231d5..43d10a89b 100644 --- a/.next/server/app/[locale]/team/page_client-reference-manifest.js +++ b/.next/server/app/[locale]/team/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/team/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/team/Gallery.tsx ":{"id":7278,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/team/Gallery.tsx":{"id":7278,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedButton.tsx ":{"id":132273,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedButton.tsx":{"id":132273,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"7278":{"*":{"id":26701,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"132273":{"*":{"id":390265,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"7278":{"*":{"id":620578,"name":"*","chunks":[],"async":false}},"132273":{"*":{"id":763547,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/team/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/team/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/9dd118ede697d679.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/team/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/team/Gallery.tsx ":{"id":7278,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/team/Gallery.tsx":{"id":7278,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedButton.tsx ":{"id":132273,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedButton.tsx":{"id":132273,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"7278":{"*":{"id":26701,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"132273":{"*":{"id":390265,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"7278":{"*":{"id":620578,"name":"*","chunks":[],"async":false}},"132273":{"*":{"id":763547,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/team/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/team/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/218ae81565b48aff.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/server/app/[locale]/test/page/react-loadable-manifest.json b/.next/server/app/[locale]/test/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/server/app/[locale]/test/page/react-loadable-manifest.json +++ b/.next/server/app/[locale]/test/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/server/app/[locale]/test/page_client-reference-manifest.js b/.next/server/app/[locale]/test/page_client-reference-manifest.js index de5313004..7257d9b23 100644 --- a/.next/server/app/[locale]/test/page_client-reference-manifest.js +++ b/.next/server/app/[locale]/test/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/test/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/test/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/server/app/_global-error.html b/.next/server/app/_global-error.html index 65f9a031c..e83f19541 100644 --- a/.next/server/app/_global-error.html +++ b/.next/server/app/_global-error.html @@ -1,2 +1,2 @@ -500: Internal Server Error.

500

Internal Server Error.

\ No newline at end of file +500: Internal Server Error.

500

Internal Server Error.

\ No newline at end of file diff --git a/.next/server/app/_global-error.rsc b/.next/server/app/_global-error.rsc index 095c63302..958cfe914 100644 --- a/.next/server/app/_global-error.rsc +++ b/.next/server/app/_global-error.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[267866,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/server/app/_global-error.segments/__PAGE__.segment.rsc b/.next/server/app/_global-error.segments/__PAGE__.segment.rsc index 4a26a9fdb..4833e7cab 100644 --- a/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +++ b/.next/server/app/_global-error.segments/__PAGE__.segment.rsc @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true}]],["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true}]],["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/.next/server/app/_global-error.segments/_full.segment.rsc b/.next/server/app/_global-error.segments/_full.segment.rsc index 095c63302..958cfe914 100644 --- a/.next/server/app/_global-error.segments/_full.segment.rsc +++ b/.next/server/app/_global-error.segments/_full.segment.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[267866,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/server/app/_global-error.segments/_head.segment.rsc b/.next/server/app/_global-error.segments/_head.segment.rsc index ade5351f1..9edf87f57 100644 --- a/.next/server/app/_global-error.segments/_head.segment.rsc +++ b/.next/server/app/_global-error.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 3:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_global-error.segments/_index.segment.rsc b/.next/server/app/_global-error.segments/_index.segment.rsc index 857b0180f..e0e6921d1 100644 --- a/.next/server/app/_global-error.segments/_index.segment.rsc +++ b/.next/server/app/_global-error.segments/_index.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_global-error.segments/_tree.segment.rsc b/.next/server/app/_global-error.segments/_tree.segment.rsc index 5a28ec2c9..492cec0cb 100644 --- a/.next/server/app/_global-error.segments/_tree.segment.rsc +++ b/.next/server/app/_global-error.segments/_tree.segment.rsc @@ -1 +1 @@ -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false},"staleTime":300} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false},"staleTime":300} diff --git a/.next/server/app/_not-found.html b/.next/server/app/_not-found.html index 83b002999..98cfb6c39 100644 --- a/.next/server/app/_not-found.html +++ b/.next/server/app/_not-found.html @@ -1 +1 @@ -404: This page could not be found.

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.

404

This page could not be found.

\ No newline at end of file diff --git a/.next/server/app/_not-found.rsc b/.next/server/app/_not-found.rsc index 5f26fe0b6..666b6d9b6 100644 --- a/.next/server/app/_not-found.rsc +++ b/.next/server/app/_not-found.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[253348,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/server/app/_not-found.segments/_full.segment.rsc b/.next/server/app/_not-found.segments/_full.segment.rsc index 5f26fe0b6..666b6d9b6 100644 --- a/.next/server/app/_not-found.segments/_full.segment.rsc +++ b/.next/server/app/_not-found.segments/_full.segment.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[253348,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/server/app/_not-found.segments/_head.segment.rsc b/.next/server/app/_not-found.segments/_head.segment.rsc index db05dba18..728934513 100644 --- a/.next/server/app/_not-found.segments/_head.segment.rsc +++ b/.next/server/app/_not-found.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 3:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_not-found.segments/_index.segment.rsc b/.next/server/app/_not-found.segments/_index.segment.rsc index 3f44665fc..a5281d737 100644 --- a/.next/server/app/_not-found.segments/_index.segment.rsc +++ b/.next/server/app/_not-found.segments/_index.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_not-found.segments/_not-found.segment.rsc b/.next/server/app/_not-found.segments/_not-found.segment.rsc index 336d777d3..ac5010a9f 100644 --- a/.next/server/app/_not-found.segments/_not-found.segment.rsc +++ b/.next/server/app/_not-found.segments/_not-found.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc b/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc index 5a1c0bc41..d15c57df2 100644 --- a/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +++ b/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/.next/server/app/_not-found.segments/_tree.segment.rsc b/.next/server/app/_not-found.segments/_tree.segment.rsc index f3736bc90..a4f136a97 100644 --- a/.next/server/app/_not-found.segments/_tree.segment.rsc +++ b/.next/server/app/_not-found.segments/_tree.segment.rsc @@ -1 +1 @@ -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/server/app/test.html b/.next/server/app/test.html index f37d36e17..387e2a3ba 100644 --- a/.next/server/app/test.html +++ b/.next/server/app/test.html @@ -1 +1 @@ -

TEST PAGE WORKS

\ No newline at end of file +

TEST PAGE WORKS

\ No newline at end of file diff --git a/.next/server/app/test.rsc b/.next/server/app/test.rsc index 6e585167f..570fb9ea9 100644 --- a/.next/server/app/test.rsc +++ b/.next/server/app/test.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[253348,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","test"],"q":"","i":false,"f":[[["",{"children":["test",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","test"],"q":"","i":false,"f":[[["",{"children":["test",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/server/app/test.segments/_full.segment.rsc b/.next/server/app/test.segments/_full.segment.rsc index 6e585167f..570fb9ea9 100644 --- a/.next/server/app/test.segments/_full.segment.rsc +++ b/.next/server/app/test.segments/_full.segment.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[253348,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","test"],"q":"","i":false,"f":[[["",{"children":["test",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","test"],"q":"","i":false,"f":[[["",{"children":["test",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/server/app/test.segments/_head.segment.rsc b/.next/server/app/test.segments/_head.segment.rsc index 33e04f60b..3be16687c 100644 --- a/.next/server/app/test.segments/_head.segment.rsc +++ b/.next/server/app/test.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 3:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/test.segments/_index.segment.rsc b/.next/server/app/test.segments/_index.segment.rsc index 504d26452..1365a7317 100644 --- a/.next/server/app/test.segments/_index.segment.rsc +++ b/.next/server/app/test.segments/_index.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/test.segments/_tree.segment.rsc b/.next/server/app/test.segments/_tree.segment.rsc index 7bc93eb53..43d1bf7ad 100644 --- a/.next/server/app/test.segments/_tree.segment.rsc +++ b/.next/server/app/test.segments/_tree.segment.rsc @@ -1 +1 @@ -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"test","paramType":null,"paramKey":"test","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":false},"staleTime":300} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"test","paramType":null,"paramKey":"test","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":false},"staleTime":300} diff --git a/.next/server/app/test.segments/test.segment.rsc b/.next/server/app/test.segments/test.segment.rsc index 336d777d3..ac5010a9f 100644 --- a/.next/server/app/test.segments/test.segment.rsc +++ b/.next/server/app/test.segments/test.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/server/app/test.segments/test/__PAGE__.segment.rsc b/.next/server/app/test.segments/test/__PAGE__.segment.rsc index 7ae47e6d1..300ca141c 100644 --- a/.next/server/app/test.segments/test/__PAGE__.segment.rsc +++ b/.next/server/app/test.segments/test/__PAGE__.segment.rsc @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/.next/server/chunks/node_modules__pnpm_b4ece637._.js b/.next/server/chunks/node_modules__pnpm_b4ece637._.js index ca5c8bb4f..0fa0a55e9 100644 --- a/.next/server/chunks/node_modules__pnpm_b4ece637._.js +++ b/.next/server/chunks/node_modules__pnpm_b4ece637._.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="700e904c-e9dc-c1c5-e110-8b95775a6984")}catch(e){}}(); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="33335499-202e-67bd-daff-32b8b7c5c4fc")}catch(e){}}(); module.exports=[421756,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.DEBUG_BUILD="u"{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.GLOBAL_OBJ=globalThis},786339,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.SDK_VERSION="10.47.0"},673729,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(786339),o=e.r(56212);function i(e){let t=e.__SENTRY__=e.__SENTRY__||{};return t.version=t.version||r.SDK_VERSION,t[r.SDK_VERSION]=t[r.SDK_VERSION]||{}}n.getGlobalSingleton=function(e,t,n=o.GLOBAL_OBJ){let i=n.__SENTRY__=n.__SENTRY__||{},a=i[r.SDK_VERSION]=i[r.SDK_VERSION]||{};return a[e]||(a[e]=t())},n.getMainCarrier=function(){return i(o.GLOBAL_OBJ),o.GLOBAL_OBJ},n.getSentryCarrier=i},385177,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(673729),o=e.r(421756),i=e.r(56212),a={};function s(e){if(!("console"in i.GLOBAL_OBJ))return e();let t=i.GLOBAL_OBJ.console,n={},r=Object.keys(a);r.forEach(e=>{let r=a[e];n[e]=t[e],t[e]=r});try{return e()}finally{r.forEach(e=>{t[e]=n[e]})}}function l(){return c().enabled}function u(e,...t){o.DEBUG_BUILD&&l()&&s(()=>{i.GLOBAL_OBJ.console[e](`Sentry Logger [${e}]:`,...t)})}function c(){return o.DEBUG_BUILD?r.getGlobalSingleton("loggerSettings",()=>({enabled:!1})):{enabled:!1}}n.CONSOLE_LEVELS=["debug","info","warn","error","log","assert","trace"],n.consoleSandbox=s,n.debug={enable:function(){c().enabled=!0},disable:function(){c().enabled=!1},isEnabled:l,log:function(...e){u("log",...e)},warn:function(...e){u("warn",...e)},error:function(...e){u("error",...e)}},n.originalConsoleMethods=a},5497,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=/\(error: (.*)\)/,o=/captureMessage|captureException/;function i(...e){let t=e.sort((e,t)=>e[0]-t[0]).map(e=>e[1]);return(e,n=0,o=0)=>{let i=[],s=e.split("\n");for(let e=n;e1024&&(n=n.slice(0,1024));let a=r.test(n)?n.replace(r,"$1"):n;if(!a.match(/\S*Error: /)){for(let e of t){let t=e(a);if(t){i.push(t);break}}if(i.length>=50+o)break}}return a(i.slice(o))}}function a(e){if(!e.length)return[];let t=Array.from(e);return/sentryWrapped/.test(s(t).function||"")&&t.pop(),t.reverse(),o.test(s(t).function||"")&&(t.pop(),o.test(s(t).function||"")&&t.pop()),t.slice(0,50).map(e=>({...e,filename:e.filename||s(t).filename,function:e.function||"?"}))}function s(e){return e[e.length-1]||{}}let l="";n.UNKNOWN_FUNCTION="?",n.createStackParser=i,n.getFramesFromEvent=function(e){let t=e.exception;if(t){let e=[];try{return t.values.forEach(t=>{t.stacktrace.frames&&e.push(...t.stacktrace.frames)}),e}catch{}}},n.getFunctionName=function(e){try{if(!e||"function"!=typeof e)return l;return e.name||l}catch{return l}},n.getVueInternalName=function(e){return"__v_isVNode"in e&&e.__v_isVNode?"[VueVNode]":"[VueViewModel]"},n.normalizeStackTracePath=function(e){let t=e?.startsWith("file://")?e.slice(7):e;return t?.match(/\/[A-Z]:/)&&(t=t.slice(1)),t},n.stackParserFromStackParserOptions=function(e){return Array.isArray(e)?i(...e):e},n.stripSentryFramesAndReverse=a},628345,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(421756),o=e.r(385177),i=e.r(5497),a={},s={};n.addHandler=function(e,t){a[e]=a[e]||[],a[e].push(t)},n.maybeInstrument=function(e,t){if(!s[e]){s[e]=!0;try{t()}catch(t){r.DEBUG_BUILD&&o.debug.error(`Error while instrumenting ${e}`,t)}}},n.resetInstrumentationHandlers=function(){Object.keys(a).forEach(e=>{a[e]=void 0})},n.triggerHandlers=function(e,t){let n=e&&a[e];if(n)for(let a of n)try{a(t)}catch(t){r.DEBUG_BUILD&&o.debug.error(`Error while triggering instrumentation handler. Type: ${e} Name: ${i.getFunctionName(a)} @@ -20,7 +20,7 @@ ${e.stack}`:"unknown"}}}}}let c=r.defineIntegration((e={})=>{let t=e.limit??10;r `;let T=s.parseProxyResponse(n);n.write(`${_}\r `);let{connect:d,buffered:E}=await T;if(e.emit("proxyConnect",d),this.emit("proxyConnect",d,e),200===d.statusCode){if(e.once("socket",c),t.secureEndpoint){l("Upgrading socket connection to TLS");let e=t.servername||t.host;return o.connect({...p(t,"host","path","port"),socket:n,servername:r.isIP(e)?void 0:e})}return n}n.destroy();let S=new r.Socket({writable:!1});return S.readable=!0,e.once("socket",e=>{l("Replaying proxy buffer for failed request"),e.push(E),e.push(null)}),S}}function c(e){e.resume()}function p(e,...t){let n,r={};for(n in e)t.includes(n)||(r[n]=e[n]);return r}u.__initStatic(),n.HttpsProxyAgent=u},136001,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(347299),o=e.r(743698),i=e.r(81111),a=e.r(727028),s=e.r(976285),l=e.r(358652);n.makeNodeTransport=function(e){let t;try{t=new URL(e.url)}catch(t){return s.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),s.createTransport(e,()=>Promise.resolve({}))}let n="https:"===t.protocol,u=function(e,t){let{no_proxy:n}=process.env;if(!n?.split(",").some(t=>e.host.endsWith(t)||e.hostname.endsWith(t)))return t}(t,e.proxy||(n?process.env.https_proxy:void 0)||process.env.http_proxy),c=n?o:r,p=void 0!==e.keepAlive&&e.keepAlive,_=u?new l.HttpsProxyAgent(u):new c.Agent({keepAlive:p,maxSockets:30,timeout:2e3}),T=function(e,t,n){let{hostname:r,pathname:o,port:l,protocol:u,search:c}=new URL(e.url);return function(p){return new Promise((_,T)=>{s.suppressTracing(()=>{var s;let d=(s=p.body,new i.Readable({read(){this.push(s),this.push(null)}})),E={...e.headers};p.body.length>32768&&(E["content-encoding"]="gzip",d=d.pipe(a.createGzip()));let S=r.startsWith("["),A=t.request({method:"POST",agent:n,headers:E,hostname:S?r.slice(1,-1):r,path:`${o}${c}`,port:l,protocol:u,ca:e.caCerts},e=>{e.on("data",()=>{}),e.on("end",()=>{}),e.setEncoding("utf8");let t=e.headers["retry-after"]??null,n=e.headers["x-sentry-rate-limits"]??null;_({statusCode:e.statusCode,headers:{"retry-after":t,"x-sentry-rate-limits":Array.isArray(n)?n[0]||null:n}})});A.on("error",T),d.pipe(A)})})}}(e,e.httpModule??c,_);return s.createTransport(e,T)}},148131,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.getSpotlightConfig=function(e){if(!1===e)return!1;if("string"==typeof e)return e;let t=r.envToBool(process.env.SENTRY_SPOTLIGHT,{strict:!0}),n=null===t&&process.env.SENTRY_SPOTLIGHT?process.env.SENTRY_SPOTLIGHT:void 0;return!0===e?n??!0:t??n}},941438,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(750227),o=e.r(976285);function i(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}n.createGetModuleFromFilename=function(e=process.argv[1]?o.dirname(process.argv[1]):process.cwd(),t="\\"===r.sep){let n=t?i(e):e;return e=>{if(!e)return;let o=t?i(e):e,{dir:a,base:s,ext:l}=r.posix.parse(o);(".js"===l||".mjs"===l||".cjs"===l)&&(s=s.slice(0,-1*l.length));let u=decodeURIComponent(s);a||(a=".");let c=a.lastIndexOf("/node_modules");if(c>-1)return`${a.slice(c+14).replace(/\//g,".")}:${u}`;if(a.startsWith(n)){let e=a.slice(n.length+1).replace(/\//g,".");return e?`${e}:${u}`:u}return u}}},315564,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(941438);n.defaultStackParser=r.createStackParser(r.nodeStackLineParser(o.createGetModuleFromFilename())),n.getSentryRelease=function(e){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(r.GLOBAL_OBJ.SENTRY_RELEASE?.id)return r.GLOBAL_OBJ.SENTRY_RELEASE.id;let t=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,n=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_BUILD_COMMIT||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,o=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return t||n||o||e}},367920,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(660526),o=e.r(357762),i=e.r(204780),a=e.r(976285),s=e.r(779607),l=e.r(37702),u=e.r(747535);class c extends a.ServerRuntimeClient{constructor(t){const n=!1===t.includeServerName?void 0:t.serverName||e.g.process.env.SENTRY_NAME||r.hostname(),o={...t,platform:"node",runtime:t.runtime||{name:"node",version:e.g.process.version},serverName:n};t.openTelemetryInstrumentations&&i.registerInstrumentations({instrumentations:t.openTelemetryInstrumentations}),a.applySdkMetadata(o,"node"),a.debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${l.isMainThread?"main":`worker-${l.threadId}`}.`),super(o),this.getOptions().enableLogs&&(this._logOnExitFlushListener=()=>{a._INTERNAL_flushLogsBuffer(this)},n&&this.on("beforeCaptureLog",e=>{e.attributes={...e.attributes,"server.address":n}}),process.on("beforeExit",this._logOnExitFlushListener))}get tracer(){if(this._tracer)return this._tracer;let e=a.SDK_VERSION,t=o.trace.getTracer("@sentry/node",e);return this._tracer=t,t}async flush(e){return await this.traceProvider?.forceFlush(),this.getOptions().sendClientReports&&this._flushOutcomes(),super.flush(e)}async close(e){this._clientReportInterval&&clearInterval(this._clientReportInterval),this._clientReportOnExitFlushListener&&process.off("beforeExit",this._clientReportOnExitFlushListener),this._logOnExitFlushListener&&process.off("beforeExit",this._logOnExitFlushListener);let t=await super.close(e);return this.traceProvider&&await this.traceProvider.shutdown(),t}startClientReportTracking(){let e=this.getOptions();e.sendClientReports&&(this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{u.DEBUG_BUILD&&a.debug.log("Flushing client reports based on interval."),this._flushOutcomes()},e.clientReportFlushInterval??6e4).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener))}_setupIntegrations(){a._INTERNAL_clearAiProviderSkips(),super._setupIntegrations()}_getTraceInfoFromScope(e){return e?s.getTraceContextForScope(this,e):[void 0,void 0]}}n.NodeClient=c},652203,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(285512),i=e.r(362562),a=e.r(234848);var s="u">typeof document?document.currentScript:null;n.initializeEsmLoader=function(){if(a.supportsEsmLoaderHooks()&&!r.GLOBAL_OBJ._sentryEsmLoaderHookRegistered){r.GLOBAL_OBJ._sentryEsmLoaderHookRegistered=!0;try{let{addHookMessagePort:t}=o.createAddHookMessageChannel();i.register("import-in-the-middle/hook.mjs","u"{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(779607),i=e.r(747535),a=e.r(475008),s=e.r(356044),l=e.r(179334),u=e.r(780200),c=e.r(179508),p=e.r(950051),_=e.r(642089),T=e.r(621353),d=e.r(438647),E=e.r(687123),S=e.r(254565),A=e.r(439390),g=e.r(136001),m=e.r(234848),h=e.r(148131),R=e.r(315564),f=e.r(367920),N=e.r(652203);function I(){return[r.inboundFiltersIntegration(),r.functionToStringIntegration(),r.linkedErrorsIntegration(),r.requestDataIntegration(),A.systemErrorIntegration(),r.conversationIdIntegration(),r.consoleIntegration(),u.httpIntegration(),_.nativeNodeFetchIntegration(),T.onUncaughtExceptionIntegration(),d.onUnhandledRejectionIntegration(),l.contextLinesIntegration(),c.localVariablesIntegration(),s.nodeContextIntegration(),a.childProcessIntegration(),E.processSessionIntegration(),p.modulesIntegration()]}function O(e={},t){var n,a;let s,l,u,c,p,_,T=(n=e,a=t,s=function(e){if(void 0!==e)return e;let t=R.getSentryRelease();if(void 0!==t)return t}(n.release),l=h.getSpotlightConfig(n.spotlight),u=function(e){if(void 0!==e)return e;let t=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!t)return;let n=parseFloat(t);return isFinite(n)?n:void 0}(n.tracesSampleRate),c={...n,dsn:n.dsn??process.env.SENTRY_DSN,environment:n.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:n.sendClientReports??!0,transport:n.transport??g.makeNodeTransport,stackParser:r.stackParserFromStackParserOptions(n.stackParser||R.defaultStackParser),release:s,tracesSampleRate:u,spotlight:l,debug:r.envToBool(n.debug??process.env.SENTRY_DEBUG)},p=n.integrations,_=n.defaultIntegrations??a(c),{...c,integrations:r.getIntegrationsToSetup({defaultIntegrations:_,integrations:p})});!0===T.debug&&(i.DEBUG_BUILD?r.debug.enable():r.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),!1!==T.registerEsmLoaderHooks&&N.initializeEsmLoader(),o.setOpenTelemetryContextAsyncContextStrategy(),r.getCurrentScope().update(T.initialScope),T.spotlight&&!T.integrations.some(({name:e})=>e===S.INTEGRATION_NAME)&&T.integrations.push(S.spotlightIntegration({sidecarUrl:"string"==typeof T.spotlight?T.spotlight:void 0})),r.applySdkMetadata(T,"node-core");let d=new f.NodeClient(T);return r.getCurrentScope().setClient(d),d.init(),r.debug.log(`SDK initialized from ${m.isCjs()?"CommonJS":"ESM"}`),d.startClientReportTracking(),function(){if(!1!==r.envToBool(process.env.SENTRY_USE_ENVIRONMENT)){let e=process.env.SENTRY_TRACE,t=process.env.SENTRY_BAGGAGE,n=r.propagationContextFromHeaders(e,t);r.getCurrentScope().setPropagationContext(n)}}(),o.enhanceDscWithOpenTelemetryRootSpanName(d),o.setupEventContextTrace(d),process.env.VERCEL&&process.on("SIGTERM",async()=>{await d.flush(200)}),d}n.getDefaultIntegrations=I,n.init=function(e={}){return O(e,I)},n.initWithoutDefaultIntegrations=function(e={}){return O(e,()=>[])},n.validateOpenTelemetrySetup=function(){if(!i.DEBUG_BUILD)return;let e=o.openTelemetrySetupCheck(),t=["SentryContextManager","SentryPropagator"];for(let n of(r.hasSpansEnabled()&&t.push("SentrySpanProcessor"),t))e.includes(n)||r.debug.error(`You have to set up the ${n}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);e.includes("SentrySampler")||r.debug.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}},211587,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(779607);n.setIsolationScope=function(e){let t=o.getScopesFromContext(r.context.active());t&&(t.isolationScope=e)}},709895,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(234848);n.createMissingInstrumentationContext=e=>({package:e,"javascript.is_cjs":r.isCjs()})},145844,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(709895),a=e.r(234848);n.ensureIsWrapped=function(e,t){let n=o.getClient()?.getOptions();!n?.disableInstrumentationWarnings&&!r.isWrapped(e)&&o.isEnabled()&&o.hasSpansEnabled(n)&&(o.consoleSandbox(()=>{a.isCjs()?console.warn(`[Sentry] ${t} is not instrumented. This is likely because you required/imported ${t} before calling \`Sentry.init()\`.`):console.warn(`[Sentry] ${t} is not instrumented. Please make sure to initialize Sentry in a separate file that you \`--import\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${t}/install/esm/.`)}),o.getGlobalScope().setContext("missing_instrumentation",i.createMissingInstrumentationContext(t)))}},498721,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(812057),o=e.r(925127),i=e.r(976285),a=e.r(860015),s=e.r(552237),{isPromise:l}=r.types,u="LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ3LjAgKGE1YTRlNzMpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyB0fWZyb20ibm9kZTppbnNwZWN0b3IiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIG4scGFyZW50UG9ydCBhcyBlfWZyb20ibm9kZTp3b3JrZXJfdGhyZWFkcyI7aW1wb3J0e3Bvc2l4IGFzIHIsc2VwIGFzIG99ZnJvbSJub2RlOnBhdGgiO2ltcG9ydCphcyBpIGZyb20ibm9kZTpodHRwIjtpbXBvcnQqYXMgcyBmcm9tIm5vZGU6aHR0cHMiO2ltcG9ydHtSZWFkYWJsZSBhcyBjfWZyb20ibm9kZTpzdHJlYW0iO2ltcG9ydHtjcmVhdGVHemlwIGFzIHV9ZnJvbSJub2RlOnpsaWIiO2ltcG9ydCphcyBhIGZyb20ibm9kZTpuZXQiO2ltcG9ydCphcyBmIGZyb20ibm9kZTp0bHMiO2NvbnN0IGg9InVuZGVmaW5lZCI9PXR5cGVvZiBfX1NFTlRSWV9ERUJVR19ffHxfX1NFTlRSWV9ERUJVR19fLHA9Z2xvYmFsVGhpcyxkPSIxMC40Ny4wIjtmdW5jdGlvbiBsKCl7cmV0dXJuIG0ocCkscH1mdW5jdGlvbiBtKHQpe2NvbnN0IG49dC5fX1NFTlRSWV9fPXQuX19TRU5UUllfX3x8e307cmV0dXJuIG4udmVyc2lvbj1uLnZlcnNpb258fGQsbltkXT1uW2RdfHx7fX1mdW5jdGlvbiBnKHQsbixlPXApe2NvbnN0IHI9ZS5fX1NFTlRSWV9fPWUuX19TRU5UUllfX3x8e30sbz1yW2RdPXJbZF18fHt9O3JldHVybiBvW3RdfHwob1t0XT1uKCkpfWNvbnN0IHk9e307ZnVuY3Rpb24gYih0KXtpZighKCJjb25zb2xlImluIHApKXJldHVybiB0KCk7Y29uc3Qgbj1wLmNvbnNvbGUsZT17fSxyPU9iamVjdC5rZXlzKHkpO3IuZm9yRWFjaCh0PT57Y29uc3Qgcj15W3RdO2VbdF09blt0XSxuW3RdPXJ9KTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3IuZm9yRWFjaCh0PT57blt0XT1lW3RdfSl9fWZ1bmN0aW9uIHYoKXtyZXR1cm4gdygpLmVuYWJsZWR9ZnVuY3Rpb24gXyh0LC4uLm4pe2gmJnYoKSYmYigoKT0+e3AuY29uc29sZVt0XShgU2VudHJ5IExvZ2dlciBbJHt0fV06YCwuLi5uKX0pfWZ1bmN0aW9uIHcoKXtyZXR1cm4gaD9nKCJsb2dnZXJTZXR0aW5ncyIsKCk9Pih7ZW5hYmxlZDohMX0pKTp7ZW5hYmxlZDohMX19Y29uc3QgUz17ZW5hYmxlOmZ1bmN0aW9uKCl7dygpLmVuYWJsZWQ9ITB9LGRpc2FibGU6ZnVuY3Rpb24oKXt3KCkuZW5hYmxlZD0hMX0saXNFbmFibGVkOnYsbG9nOmZ1bmN0aW9uKC4uLnQpe18oImxvZyIsLi4udCl9LHdhcm46ZnVuY3Rpb24oLi4udCl7Xygid2FybiIsLi4udCl9LGVycm9yOmZ1bmN0aW9uKC4uLnQpe18oImVycm9yIiwuLi50KX19LCQ9L2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vO2Z1bmN0aW9uIEUodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV18fHt9fWNvbnN0IHg9Ijxhbm9ueW1vdXM+Ijtjb25zdCBOPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gaih0LG4pe3JldHVybiBOLmNhbGwodCk9PT1gW29iamVjdCAke259XWB9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gaih0LCJTdHJpbmciKX1mdW5jdGlvbiBBKHQpe3JldHVybiBqKHQsIk9iamVjdCIpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEJvb2xlYW4odD8udGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbil9ZnVuY3Rpb24gayh0LG4pe3RyeXtyZXR1cm4gdCBpbnN0YW5jZW9mIG59Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEk9cDtmdW5jdGlvbiBPKHQsbil7Y29uc3QgZT10LHI9W107aWYoIWU/LnRhZ05hbWUpcmV0dXJuIiI7aWYoSS5IVE1MRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZlLmRhdGFzZXQpe2lmKGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQ7aWYoZS5kYXRhc2V0LnNlbnRyeUVsZW1lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlFbGVtZW50fXIucHVzaChlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSk7Y29uc3Qgbz1uPy5sZW5ndGg/bi5maWx0ZXIodD0+ZS5nZXRBdHRyaWJ1dGUodCkpLm1hcCh0PT5bdCxlLmdldEF0dHJpYnV0ZSh0KV0pOm51bGw7aWYobz8ubGVuZ3RoKW8uZm9yRWFjaCh0PT57ci5wdXNoKGBbJHt0WzBdfT0iJHt0WzFdfSJdYCl9KTtlbHNle2UuaWQmJnIucHVzaChgIyR7ZS5pZH1gKTtjb25zdCB0PWUuY2xhc3NOYW1lO2lmKHQmJkModCkpe2NvbnN0IG49dC5zcGxpdCgvXHMrLyk7Zm9yKGNvbnN0IHQgb2YgbilyLnB1c2goYC4ke3R9YCl9fWZvcihjb25zdCB0IG9mWyJhcmlhLWxhYmVsIiwidHlwZSIsIm5hbWUiLCJ0aXRsZSIsImFsdCJdKXtjb25zdCBuPWUuZ2V0QXR0cmlidXRlKHQpO24mJnIucHVzaChgWyR7dH09IiR7bn0iXWApfXJldHVybiByLmpvaW4oIiIpfWZ1bmN0aW9uIFIodCl7aWYoZnVuY3Rpb24odCl7c3dpdGNoKE4uY2FsbCh0KSl7Y2FzZSJbb2JqZWN0IEVycm9yXSI6Y2FzZSJbb2JqZWN0IEV4Y2VwdGlvbl0iOmNhc2UiW29iamVjdCBET01FeGNlcHRpb25dIjpjYXNlIltvYmplY3QgV2ViQXNzZW1ibHkuRXhjZXB0aW9uXSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gayh0LEVycm9yKX19KHQpKXJldHVybnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrLC4uLkQodCl9O2lmKG49dCwidW5kZWZpbmVkIiE9dHlwZW9mIEV2ZW50JiZrKG4sRXZlbnQpKXtjb25zdCBuPXt0eXBlOnQudHlwZSx0YXJnZXQ6UCh0LnRhcmdldCksY3VycmVudFRhcmdldDpQKHQuY3VycmVudFRhcmdldCksLi4uRCh0KX07cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBDdXN0b21FdmVudCYmayh0LEN1c3RvbUV2ZW50KSYmKG4uZGV0YWlsPXQuZGV0YWlsKSxufXJldHVybiB0O3ZhciBufWZ1bmN0aW9uIFAodCl7dHJ5e3JldHVybiBuPXQsInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50JiZrKG4sRWxlbWVudCk/ZnVuY3Rpb24odCxuPXt9KXtpZighdClyZXR1cm4iPHVua25vd24+Ijt0cnl7bGV0IGU9dDtjb25zdCByPTUsbz1bXTtsZXQgaT0wLHM9MDtjb25zdCBjPSIgPiAiLHU9Yy5sZW5ndGg7bGV0IGE7Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP246bi5rZXlBdHRycyxoPSFBcnJheS5pc0FycmF5KG4pJiZuLm1heFN0cmluZ0xlbmd0aHx8ODA7Zm9yKDtlJiZpKys8ciYmKGE9TyhlLGYpLCEoImh0bWwiPT09YXx8aT4xJiZzK28ubGVuZ3RoKnUrYS5sZW5ndGg+PWgpKTspby5wdXNoKGEpLHMrPWEubGVuZ3RoLGU9ZS5wYXJlbnROb2RlO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGMpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifX0odCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifXZhciBufWZ1bmN0aW9uIEQodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dD9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkpOnt9fWxldCBVLEw7ZnVuY3Rpb24gTSh0KXtpZih2b2lkIDAhPT1VKXJldHVybiBVP1UodCk6dCgpO2NvbnN0IG49U3ltYm9sLmZvcigiX19TRU5UUllfU0FGRV9SQU5ET01fSURfV1JBUFBFUl9fIiksZT1wO3JldHVybiBuIGluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW25dPyhVPWVbbl0sVSh0KSk6KFU9bnVsbCx0KCkpfWZ1bmN0aW9uIEIoKXtyZXR1cm4gTSgoKT0+TWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gVygpe3JldHVybiBNKCgpPT5EYXRlLm5vdygpKX1mdW5jdGlvbiB6KHQsbj0wKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fDA9PT1ufHx0Lmxlbmd0aDw9bj90OmAke3Quc2xpY2UoMCxuKX0uLi5gfWZ1bmN0aW9uIEYodD1mdW5jdGlvbigpe2NvbnN0IHQ9cDtyZXR1cm4gdC5jcnlwdG98fHQubXNDcnlwdG99KCkpe3RyeXtpZih0Py5yYW5kb21VVUlEKXJldHVybiBNKCgpPT50LnJhbmRvbVVVSUQoKSkucmVwbGFjZSgvLS9nLCIiKX1jYXRjaHt9cmV0dXJuIEx8fChMPVsxZTddKzFlMys0ZTMrOGUzKzFlMTEpLEwucmVwbGFjZSgvWzAxOF0vZyx0PT4odF4oMTYqQigpJjE1KT4+dC80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gVygpLzFlM31sZXQgSDtmdW5jdGlvbiBKKCl7cmV0dXJuKEg/PyhIPWZ1bmN0aW9uKCl7Y29uc3R7cGVyZm9ybWFuY2U6dH09cDtpZighdD8ubm93fHwhdC50aW1lT3JpZ2luKXJldHVybiBHO2NvbnN0IG49dC50aW1lT3JpZ2luO3JldHVybigpPT4obitNKCgpPT50Lm5vdygpKSkvMWUzfSgpKSkoKX1mdW5jdGlvbiBZKHQpe2NvbnN0IG49SigpLGU9e3NpZDpGKCksaW5pdDohMCx0aW1lc3RhbXA6bixzdGFydGVkOm4sZHVyYXRpb246MCxzdGF0dXM6Im9rIixlcnJvcnM6MCxpZ25vcmVEdXJhdGlvbjohMSx0b0pTT046KCk9PmZ1bmN0aW9uKHQpe3JldHVybntzaWQ6YCR7dC5zaWR9YCxpbml0OnQuaW5pdCxzdGFydGVkOm5ldyBEYXRlKDFlMyp0LnN0YXJ0ZWQpLnRvSVNPU3RyaW5nKCksdGltZXN0YW1wOm5ldyBEYXRlKDFlMyp0LnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxzdGF0dXM6dC5zdGF0dXMsZXJyb3JzOnQuZXJyb3JzLGRpZDoibnVtYmVyIj09dHlwZW9mIHQuZGlkfHwic3RyaW5nIj09dHlwZW9mIHQuZGlkP2Ake3QuZGlkfWA6dm9pZCAwLGR1cmF0aW9uOnQuZHVyYXRpb24sYWJub3JtYWxfbWVjaGFuaXNtOnQuYWJub3JtYWxfbWVjaGFuaXNtLGF0dHJzOntyZWxlYXNlOnQucmVsZWFzZSxlbnZpcm9ubWVudDp0LmVudmlyb25tZW50LGlwX2FkZHJlc3M6dC5pcEFkZHJlc3MsdXNlcl9hZ2VudDp0LnVzZXJBZ2VudH19fShlKX07cmV0dXJuIHQmJlYoZSx0KSxlfWZ1bmN0aW9uIFYodCxuPXt9KXtpZihuLnVzZXImJighdC5pcEFkZHJlc3MmJm4udXNlci5pcF9hZGRyZXNzJiYodC5pcEFkZHJlc3M9bi51c2VyLmlwX2FkZHJlc3MpLHQuZGlkfHxuLmRpZHx8KHQuZGlkPW4udXNlci5pZHx8bi51c2VyLmVtYWlsfHxuLnVzZXIudXNlcm5hbWUpKSx0LnRpbWVzdGFtcD1uLnRpbWVzdGFtcHx8SigpLG4uYWJub3JtYWxfbWVjaGFuaXNtJiYodC5hYm5vcm1hbF9tZWNoYW5pc209bi5hYm5vcm1hbF9tZWNoYW5pc20pLG4uaWdub3JlRHVyYXRpb24mJih0Lmlnbm9yZUR1cmF0aW9uPW4uaWdub3JlRHVyYXRpb24pLG4uc2lkJiYodC5zaWQ9MzI9PT1uLnNpZC5sZW5ndGg/bi5zaWQ6RigpKSx2b2lkIDAhPT1uLmluaXQmJih0LmluaXQ9bi5pbml0KSwhdC5kaWQmJm4uZGlkJiYodC5kaWQ9YCR7bi5kaWR9YCksIm51bWJlciI9PXR5cGVvZiBuLnN0YXJ0ZWQmJih0LnN0YXJ0ZWQ9bi5zdGFydGVkKSx0Lmlnbm9yZUR1cmF0aW9uKXQuZHVyYXRpb249dm9pZCAwO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBuLmR1cmF0aW9uKXQuZHVyYXRpb249bi5kdXJhdGlvbjtlbHNle2NvbnN0IG49dC50aW1lc3RhbXAtdC5zdGFydGVkO3QuZHVyYXRpb249bj49MD9uOjB9bi5yZWxlYXNlJiYodC5yZWxlYXNlPW4ucmVsZWFzZSksbi5lbnZpcm9ubWVudCYmKHQuZW52aXJvbm1lbnQ9bi5lbnZpcm9ubWVudCksIXQuaXBBZGRyZXNzJiZuLmlwQWRkcmVzcyYmKHQuaXBBZGRyZXNzPW4uaXBBZGRyZXNzKSwhdC51c2VyQWdlbnQmJm4udXNlckFnZW50JiYodC51c2VyQWdlbnQ9bi51c2VyQWdlbnQpLCJudW1iZXIiPT10eXBlb2Ygbi5lcnJvcnMmJih0LmVycm9ycz1uLmVycm9ycyksbi5zdGF0dXMmJih0LnN0YXR1cz1uLnN0YXR1cyl9ZnVuY3Rpb24gSyh0LG4sZT0yKXtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHxlPD0wKXJldHVybiBuO2lmKHQmJjA9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IHQgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSYmKHJbdF09SyhyW3RdLG5bdF0sZS0xKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gWigpe3JldHVybiBGKCl9ZnVuY3Rpb24gcSgpe3JldHVybiBGKCkuc3Vic3RyaW5nKDE2KX1jb25zdCBRPSJfc2VudHJ5U3BhbiI7ZnVuY3Rpb24gWCh0LG4pe24/ZnVuY3Rpb24odCxuLGUpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWNhdGNoe2gmJlMubG9nKGBGYWlsZWQgdG8gYWRkIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5ICIke259IiB0byBvYmplY3RgLHQpfX0odCxRLG4pOmRlbGV0ZSB0W1FdfWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0W1FdfWNsYXNzIG50e2NvbnN0cnVjdG9yKCl7dGhpcy50PSExLHRoaXMubz1bXSx0aGlzLmk9W10sdGhpcy51PVtdLHRoaXMuaD1bXSx0aGlzLnA9e30sdGhpcy5sPXt9LHRoaXMubT17fSx0aGlzLnY9e30sdGhpcy5fPXt9LHRoaXMuUz17fSx0aGlzLk49e3RyYWNlSWQ6WigpLHNhbXBsZVJhbmQ6QigpfX1jbG9uZSgpe2NvbnN0IHQ9bmV3IG50O3JldHVybiB0LnU9Wy4uLnRoaXMudV0sdC5sPXsuLi50aGlzLmx9LHQubT17Li4udGhpcy5tfSx0LnY9ey4uLnRoaXMudn0sdC5fPXsuLi50aGlzLl99LHRoaXMuXy5mbGFncyYmKHQuXy5mbGFncz17dmFsdWVzOlsuLi50aGlzLl8uZmxhZ3MudmFsdWVzXX0pLHQucD10aGlzLnAsdC5qPXRoaXMuaix0LkM9dGhpcy5DLHQuQT10aGlzLkEsdC5UPXRoaXMuVCx0Lmk9Wy4uLnRoaXMuaV0sdC5oPVsuLi50aGlzLmhdLHQuUz17Li4udGhpcy5TfSx0Lk49ey4uLnRoaXMuTn0sdC5rPXRoaXMuayx0Lkk9dGhpcy5JLHQuTz10aGlzLk8sWCh0LHR0KHRoaXMpKSx0fXNldENsaWVudCh0KXt0aGlzLms9dH1zZXRMYXN0RXZlbnRJZCh0KXt0aGlzLkk9dH1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5rfWxhc3RFdmVudElkKCl7cmV0dXJuIHRoaXMuSX1hZGRTY29wZUxpc3RlbmVyKHQpe3RoaXMuby5wdXNoKHQpfWFkZEV2ZW50UHJvY2Vzc29yKHQpe3JldHVybiB0aGlzLmkucHVzaCh0KSx0aGlzfXNldFVzZXIodCl7cmV0dXJuIHRoaXMucD10fHx7ZW1haWw6dm9pZCAwLGlkOnZvaWQgMCxpcF9hZGRyZXNzOnZvaWQgMCx1c2VybmFtZTp2b2lkIDB9LHRoaXMuQyYmVih0aGlzLkMse3VzZXI6dH0pLHRoaXMuUigpLHRoaXN9Z2V0VXNlcigpe3JldHVybiB0aGlzLnB9c2V0Q29udmVyc2F0aW9uSWQodCl7cmV0dXJuIHRoaXMuTz10fHx2b2lkIDAsdGhpcy5SKCksdGhpc31zZXRUYWdzKHQpe3JldHVybiB0aGlzLmw9ey4uLnRoaXMubCwuLi50fSx0aGlzLlIoKSx0aGlzfXNldFRhZyh0LG4pe3JldHVybiB0aGlzLnNldFRhZ3Moe1t0XTpufSl9c2V0QXR0cmlidXRlcyh0KXtyZXR1cm4gdGhpcy5tPXsuLi50aGlzLm0sLi4udH0sdGhpcy5SKCksdGhpc31zZXRBdHRyaWJ1dGUodCxuKXtyZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVzKHtbdF06bn0pfXJlbW92ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gdCBpbiB0aGlzLm0mJihkZWxldGUgdGhpcy5tW3RdLHRoaXMuUigpKSx0aGlzfXNldEV4dHJhcyh0KXtyZXR1cm4gdGhpcy52PXsuLi50aGlzLnYsLi4udH0sdGhpcy5SKCksdGhpc31zZXRFeHRyYSh0LG4pe3JldHVybiB0aGlzLnY9ey4uLnRoaXMudixbdF06bn0sdGhpcy5SKCksdGhpc31zZXRGaW5nZXJwcmludCh0KXtyZXR1cm4gdGhpcy5UPXQsdGhpcy5SKCksdGhpc31zZXRMZXZlbCh0KXtyZXR1cm4gdGhpcy5qPXQsdGhpcy5SKCksdGhpc31zZXRUcmFuc2FjdGlvbk5hbWUodCl7cmV0dXJuIHRoaXMuQT10LHRoaXMuUigpLHRoaXN9c2V0Q29udGV4dCh0LG4pe3JldHVybiBudWxsPT09bj9kZWxldGUgdGhpcy5fW3RdOnRoaXMuX1t0XT1uLHRoaXMuUigpLHRoaXN9c2V0U2Vzc2lvbih0KXtyZXR1cm4gdD90aGlzLkM9dDpkZWxldGUgdGhpcy5DLHRoaXMuUigpLHRoaXN9Z2V0U2Vzc2lvbigpe3JldHVybiB0aGlzLkN9dXBkYXRlKHQpe2lmKCF0KXJldHVybiB0aGlzO2NvbnN0IG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dCh0aGlzKTp0LGU9biBpbnN0YW5jZW9mIG50P24uZ2V0U2NvcGVEYXRhKCk6QShuKT90OnZvaWQgMCx7dGFnczpyLGF0dHJpYnV0ZXM6byxleHRyYTppLHVzZXI6cyxjb250ZXh0czpjLGxldmVsOnUsZmluZ2VycHJpbnQ6YT1bXSxwcm9wYWdhdGlvbkNvbnRleHQ6Zixjb252ZXJzYXRpb25JZDpofT1lfHx7fTtyZXR1cm4gdGhpcy5sPXsuLi50aGlzLmwsLi4ucn0sdGhpcy5tPXsuLi50aGlzLm0sLi4ub30sdGhpcy52PXsuLi50aGlzLnYsLi4uaX0sdGhpcy5fPXsuLi50aGlzLl8sLi4uY30scyYmT2JqZWN0LmtleXMocykubGVuZ3RoJiYodGhpcy5wPXMpLHUmJih0aGlzLmo9dSksYS5sZW5ndGgmJih0aGlzLlQ9YSksZiYmKHRoaXMuTj1mKSxoJiYodGhpcy5PPWgpLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy51PVtdLHRoaXMubD17fSx0aGlzLm09e30sdGhpcy52PXt9LHRoaXMucD17fSx0aGlzLl89e30sdGhpcy5qPXZvaWQgMCx0aGlzLkE9dm9pZCAwLHRoaXMuVD12b2lkIDAsdGhpcy5DPXZvaWQgMCx0aGlzLk89dm9pZCAwLFgodGhpcyx2b2lkIDApLHRoaXMuaD1bXSx0aGlzLnNldFByb3BhZ2F0aW9uQ29udGV4dCh7dHJhY2VJZDpaKCksc2FtcGxlUmFuZDpCKCl9KSx0aGlzLlIoKSx0aGlzfWFkZEJyZWFkY3J1bWIodCxuKXtjb25zdCBlPSJudW1iZXIiPT10eXBlb2Ygbj9uOjEwMDtpZihlPD0wKXJldHVybiB0aGlzO2NvbnN0IHI9e3RpbWVzdGFtcDpHKCksLi4udCxtZXNzYWdlOnQubWVzc2FnZT96KHQubWVzc2FnZSwyMDQ4KTp0Lm1lc3NhZ2V9O3JldHVybiB0aGlzLnUucHVzaChyKSx0aGlzLnUubGVuZ3RoPmUmJih0aGlzLnU9dGhpcy51LnNsaWNlKC1lKSx0aGlzLms/LnJlY29yZERyb3BwZWRFdmVudCgiYnVmZmVyX292ZXJmbG93IiwibG9nX2l0ZW0iKSksdGhpcy5SKCksdGhpc31nZXRMYXN0QnJlYWRjcnVtYigpe3JldHVybiB0aGlzLnVbdGhpcy51Lmxlbmd0aC0xXX1jbGVhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMudT1bXSx0aGlzLlIoKSx0aGlzfWFkZEF0dGFjaG1lbnQodCl7cmV0dXJuIHRoaXMuaC5wdXNoKHQpLHRoaXN9Y2xlYXJBdHRhY2htZW50cygpe3JldHVybiB0aGlzLmg9W10sdGhpc31nZXRTY29wZURhdGEoKXtyZXR1cm57YnJlYWRjcnVtYnM6dGhpcy51LGF0dGFjaG1lbnRzOnRoaXMuaCxjb250ZXh0czp0aGlzLl8sdGFnczp0aGlzLmwsYXR0cmlidXRlczp0aGlzLm0sZXh0cmE6dGhpcy52LHVzZXI6dGhpcy5wLGxldmVsOnRoaXMuaixmaW5nZXJwcmludDp0aGlzLlR8fFtdLGV2ZW50UHJvY2Vzc29yczp0aGlzLmkscHJvcGFnYXRpb25Db250ZXh0OnRoaXMuTixzZGtQcm9jZXNzaW5nTWV0YWRhdGE6dGhpcy5TLHRyYW5zYWN0aW9uTmFtZTp0aGlzLkEsc3Bhbjp0dCh0aGlzKSxjb252ZXJzYXRpb25JZDp0aGlzLk99fXNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh0KXtyZXR1cm4gdGhpcy5TPUsodGhpcy5TLHQsMiksdGhpc31zZXRQcm9wYWdhdGlvbkNvbnRleHQodCl7cmV0dXJuIHRoaXMuTj10LHRoaXN9Z2V0UHJvcGFnYXRpb25Db250ZXh0KCl7cmV0dXJuIHRoaXMuTn1jYXB0dXJlRXhjZXB0aW9uKHQsbil7Y29uc3QgZT1uPy5ldmVudF9pZHx8RigpO2lmKCF0aGlzLmspcmV0dXJuIGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV4Y2VwdGlvbiEiKSxlO2NvbnN0IHI9bmV3IEVycm9yKCJTZW50cnkgc3ludGhldGljRXhjZXB0aW9uIik7cmV0dXJuIHRoaXMuay5jYXB0dXJlRXhjZXB0aW9uKHQse29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOnIsLi4ubixldmVudF9pZDplfSx0aGlzKSxlfWNhcHR1cmVNZXNzYWdlKHQsbixlKXtjb25zdCByPWU/LmV2ZW50X2lkfHxGKCk7aWYoIXRoaXMuaylyZXR1cm4gaCYmUy53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgbWVzc2FnZSEiKSxyO2NvbnN0IG89ZT8uc3ludGhldGljRXhjZXB0aW9uPz9uZXcgRXJyb3IodCk7cmV0dXJuIHRoaXMuay5jYXB0dXJlTWVzc2FnZSh0LG4se29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOm8sLi4uZSxldmVudF9pZDpyfSx0aGlzKSxyfWNhcHR1cmVFdmVudCh0LG4pe2NvbnN0IGU9dC5ldmVudF9pZHx8bj8uZXZlbnRfaWR8fEYoKTtyZXR1cm4gdGhpcy5rPyh0aGlzLmsuY2FwdHVyZUV2ZW50KHQsey4uLm4sZXZlbnRfaWQ6ZX0sdGhpcyksZSk6KGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50ISIpLGUpfVIoKXt0aGlzLnR8fCh0aGlzLnQ9ITAsdGhpcy5vLmZvckVhY2godD0+e3QodGhpcyl9KSx0aGlzLnQ9ITEpfX1jb25zdCBldD10PT50IGluc3RhbmNlb2YgUHJvbWlzZSYmIXRbcnRdLHJ0PVN5bWJvbCgiY2hhaW5lZCBQcm9taXNlTGlrZSIpLG90PSh0LG4pPT57bGV0IGU9ITE7Zm9yKGNvbnN0IHIgaW4gdCl7aWYociBpbiBuKWNvbnRpbnVlO2U9ITA7Y29uc3Qgbz10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBvP09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHIse3ZhbHVlOiguLi5uKT0+by5hcHBseSh0LG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vfXJldHVybiBlJiZPYmplY3QuYXNzaWduKG4se1tydF06ITB9KSxufTtjbGFzcyBpdHtjb25zdHJ1Y3Rvcih0LG4pe2xldCBlLHI7ZT10fHxuZXcgbnQscj1ufHxuZXcgbnQsdGhpcy5QPVt7c2NvcGU6ZX1dLHRoaXMuRD1yfXdpdGhTY29wZSh0KXtjb25zdCBuPXRoaXMuVSgpO2xldCBlO3RyeXtlPXQobil9Y2F0Y2godCl7dGhyb3cgdGhpcy5MKCksdH1yZXR1cm4gVChlKT8oKHQsbixlKT0+e2NvbnN0IHI9dC50aGVuKHQ9PihuKHQpLHQpLHQ9Pnt0aHJvdyBlKHQpLHR9KTtyZXR1cm4gZXQocikmJmV0KHQpP3I6b3QodCxyKX0pKGUsKCk9PnRoaXMuTCgpLCgpPT50aGlzLkwoKSk6KHRoaXMuTCgpLGUpfWdldENsaWVudCgpe3JldHVybiB0aGlzLmdldFN0YWNrVG9wKCkuY2xpZW50fWdldFNjb3BlKCl7cmV0dXJuIHRoaXMuZ2V0U3RhY2tUb3AoKS5zY29wZX1nZXRJc29sYXRpb25TY29wZSgpe3JldHVybiB0aGlzLkR9Z2V0U3RhY2tUb3AoKXtyZXR1cm4gdGhpcy5QW3RoaXMuUC5sZW5ndGgtMV19VSgpe2NvbnN0IHQ9dGhpcy5nZXRTY29wZSgpLmNsb25lKCk7cmV0dXJuIHRoaXMuUC5wdXNoKHtjbGllbnQ6dGhpcy5nZXRDbGllbnQoKSxzY29wZTp0fSksdH1MKCl7cmV0dXJuISh0aGlzLlAubGVuZ3RoPD0xKSYmISF0aGlzLlAucG9wKCl9fWZ1bmN0aW9uIHN0KCl7Y29uc3QgdD1tKGwoKSk7cmV0dXJuIHQuc3RhY2s9dC5zdGFja3x8bmV3IGl0KGcoImRlZmF1bHRDdXJyZW50U2NvcGUiLCgpPT5uZXcgbnQpLGcoImRlZmF1bHRJc29sYXRpb25TY29wZSIsKCk9Pm5ldyBudCkpfWZ1bmN0aW9uIGN0KHQpe3JldHVybiBzdCgpLndpdGhTY29wZSh0KX1mdW5jdGlvbiB1dCh0LG4pe2NvbnN0IGU9c3QoKTtyZXR1cm4gZS53aXRoU2NvcGUoKCk9PihlLmdldFN0YWNrVG9wKCkuc2NvcGU9dCxuKHQpKSl9ZnVuY3Rpb24gYXQodCl7cmV0dXJuIHN0KCkud2l0aFNjb3BlKCgpPT50KHN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKSkpfWZ1bmN0aW9uIGZ0KHQpe2NvbnN0IG49bSh0KTtyZXR1cm4gbi5hY3M/bi5hY3M6e3dpdGhJc29sYXRpb25TY29wZTphdCx3aXRoU2NvcGU6Y3Qsd2l0aFNldFNjb3BlOnV0LHdpdGhTZXRJc29sYXRpb25TY29wZToodCxuKT0+YXQobiksZ2V0Q3VycmVudFNjb3BlOigpPT5zdCgpLmdldFNjb3BlKCksZ2V0SXNvbGF0aW9uU2NvcGU6KCk9PnN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKX19ZnVuY3Rpb24gaHQoKXtyZXR1cm4gZnQobCgpKS5nZXRDdXJyZW50U2NvcGUoKS5nZXRDbGllbnQoKX1mdW5jdGlvbiBwdCh0KXtpZih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJiJkZXJlZiJpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5kZXJlZil0cnl7cmV0dXJuIHQuZGVyZWYoKX1jYXRjaHtyZXR1cm59cmV0dXJuIHR9fWZ1bmN0aW9uIGR0KHQpe2NvbnN0IG49dDtyZXR1cm57c2NvcGU6bi5fc2VudHJ5U2NvcGUsaXNvbGF0aW9uU2NvcGU6cHQobi5fc2VudHJ5SXNvbGF0aW9uU2NvcGUpfX1jb25zdCBsdD0ic2VudHJ5LSI7ZnVuY3Rpb24gbXQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdHx8IUModCkmJiFBcnJheS5pc0FycmF5KHQpKXJldHVybjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGU9Z3Qobik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtuLGVdKT0+e3Rbbl09ZX0pLHR9LHt9KTtyZXR1cm4gZ3QodCl9KHQpO2lmKCFuKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgodCxbbixlXSk9PntpZihuLnN0YXJ0c1dpdGgobHQpKXt0W24uc2xpY2UoNyldPWV9cmV0dXJuIHR9LHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjA/ZTp2b2lkIDB9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAodD0+e2NvbnN0IG49dC5pbmRleE9mKCI9Iik7aWYoLTE9PT1uKXJldHVybltdO3JldHVyblt0LnNsaWNlKDAsbiksdC5zbGljZShuKzEpXS5tYXAodD0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQudHJpbSgpKX1jYXRjaHtyZXR1cm59fSl9KS5yZWR1Y2UoKHQsW24sZV0pPT4obiYmZSYmKHRbbl09ZSksdCkse30pfWNvbnN0IHl0PS9ebyhcZCspXC4vO2Z1bmN0aW9uIGJ0KHQsbj0hMSl7Y29uc3R7aG9zdDplLHBhdGg6cixwYXNzOm8scG9ydDppLHByb2plY3RJZDpzLHByb3RvY29sOmMscHVibGljS2V5OnV9PXQ7cmV0dXJuYCR7Y306Ly8ke3V9JHtuJiZvP2A6JHtvfWA6IiJ9QCR7ZX0ke2k/YDoke2l9YDoiIn0vJHtyP2Ake3J9L2A6cn0ke3N9YH1mdW5jdGlvbiB2dCh0KXtjb25zdCBuPXQuZ2V0T3B0aW9ucygpLHtob3N0OmV9PXQuZ2V0RHNuKCl8fHt9O2xldCByO3JldHVybiBuLm9yZ0lkP3I9U3RyaW5nKG4ub3JnSWQpOmUmJihyPWZ1bmN0aW9uKHQpe2NvbnN0IG49dC5tYXRjaCh5dCk7cmV0dXJuIG4/LlsxXX0oZSkpLHJ9ZnVuY3Rpb24gX3QodCl7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplLGlzUmVtb3RlOnJ9PXQuc3BhbkNvbnRleHQoKSxvPXI/bjpFdCh0KS5wYXJlbnRfc3Bhbl9pZCxpPWR0KHQpLnNjb3BlO3JldHVybntwYXJlbnRfc3Bhbl9pZDpvLHNwYW5faWQ6cj9pPy5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKS5wcm9wYWdhdGlvblNwYW5JZHx8cSgpOm4sdHJhY2VfaWQ6ZX19ZnVuY3Rpb24gd3QodCl7cmV0dXJuIHQmJnQubGVuZ3RoPjA/dC5tYXAoKHtjb250ZXh0OntzcGFuSWQ6dCx0cmFjZUlkOm4sdHJhY2VGbGFnczplLC4uLnJ9LGF0dHJpYnV0ZXM6b30pPT4oe3NwYW5faWQ6dCx0cmFjZV9pZDpuLHNhbXBsZWQ6MT09PWUsYXR0cmlidXRlczpvLC4uLnJ9KSk6dm9pZCAwfWZ1bmN0aW9uIFN0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD8kdCh0KTpBcnJheS5pc0FycmF5KHQpP3RbMF0rdFsxXS8xZTk6dCBpbnN0YW5jZW9mIERhdGU/JHQodC5nZXRUaW1lKCkpOkooKX1mdW5jdGlvbiAkdCh0KXtyZXR1cm4gdD45OTk5OTk5OTk5P3QvMWUzOnR9ZnVuY3Rpb24gRXQodCl7aWYoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0U3BhbkpTT059KHQpKXJldHVybiB0LmdldFNwYW5KU09OKCk7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplfT10LnNwYW5Db250ZXh0KCk7aWYoZnVuY3Rpb24odCl7Y29uc3Qgbj10O3JldHVybiEhKG4uYXR0cmlidXRlcyYmbi5zdGFydFRpbWUmJm4ubmFtZSYmbi5lbmRUaW1lJiZuLnN0YXR1cyl9KHQpKXtjb25zdHthdHRyaWJ1dGVzOnIsc3RhcnRUaW1lOm8sbmFtZTppLGVuZFRpbWU6cyxzdGF0dXM6YyxsaW5rczp1fT10O3JldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxkYXRhOnIsZGVzY3JpcHRpb246aSxwYXJlbnRfc3Bhbl9pZDoicGFyZW50U3BhbklkImluIHQ/dC5wYXJlbnRTcGFuSWQ6InBhcmVudFNwYW5Db250ZXh0ImluIHQ/dC5wYXJlbnRTcGFuQ29udGV4dD8uc3BhbklkOnZvaWQgMCxzdGFydF90aW1lc3RhbXA6U3QobyksdGltZXN0YW1wOlN0KHMpfHx2b2lkIDAsc3RhdHVzOnh0KGMpLG9wOnJbInNlbnRyeS5vcCJdLG9yaWdpbjpyWyJzZW50cnkub3JpZ2luIl0sbGlua3M6d3QodSl9fXJldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxzdGFydF90aW1lc3RhbXA6MCxkYXRhOnt9fX1mdW5jdGlvbiB4dCh0KXtpZih0JiYwIT09dC5jb2RlKXJldHVybiAxPT09dC5jb2RlPyJvayI6dC5tZXNzYWdlfHwiaW50ZXJuYWxfZXJyb3IifWZ1bmN0aW9uIE50KHQpe3JldHVybiB0Ll9zZW50cnlSb290U3Bhbnx8dH1mdW5jdGlvbiBqdCh0KXtjb25zdCBuPWh0KCk7aWYoIW4pcmV0dXJue307Y29uc3QgZT1OdCh0KSxyPUV0KGUpLG89ci5kYXRhLGk9ZS5zcGFuQ29udGV4dCgpLnRyYWNlU3RhdGUscz1pPy5nZXQoInNlbnRyeS5zYW1wbGVfcmF0ZSIpPz9vWyJzZW50cnkuc2FtcGxlX3JhdGUiXT8/b1sic2VudHJ5LnByZXZpb3VzX3RyYWNlX3NhbXBsZV9yYXRlIl07ZnVuY3Rpb24gYyh0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHMmJiJzdHJpbmciIT10eXBlb2Ygc3x8KHQuc2FtcGxlX3JhdGU9YCR7c31gKSx0fWNvbnN0IHU9ZS5fZnJvemVuRHNjO2lmKHUpcmV0dXJuIGModSk7Y29uc3QgYT1pPy5nZXQoInNlbnRyeS5kc2MiKSxmPWEmJm10KGEpO2lmKGYpcmV0dXJuIGMoZik7Y29uc3QgaD1mdW5jdGlvbih0LG4pe2NvbnN0IGU9bi5nZXRPcHRpb25zKCkse3B1YmxpY0tleTpyfT1uLmdldERzbigpfHx7fSxvPXtlbnZpcm9ubWVudDplLmVudmlyb25tZW50fHwicHJvZHVjdGlvbiIscmVsZWFzZTplLnJlbGVhc2UscHVibGljX2tleTpyLHRyYWNlX2lkOnQsb3JnX2lkOnZ0KG4pfTtyZXR1cm4gbi5lbWl0KCJjcmVhdGVEc2MiLG8pLG99KHQuc3BhbkNvbnRleHQoKS50cmFjZUlkLG4pLHA9b1sic2VudHJ5LnNvdXJjZSJdLGQ9ci5kZXNjcmlwdGlvbjtyZXR1cm4idXJsIiE9PXAmJmQmJihoLnRyYW5zYWN0aW9uPWQpLGZ1bmN0aW9uKCl7aWYoImJvb2xlYW4iPT10eXBlb2YgX19TRU5UUllfVFJBQ0lOR19fJiYhX19TRU5UUllfVFJBQ0lOR19fKXJldHVybiExO2NvbnN0IHQ9aHQoKT8uZ2V0T3B0aW9ucygpO3JldHVybiEoIXR8fG51bGw9PXQudHJhY2VzU2FtcGxlUmF0ZSYmIXQudHJhY2VzU2FtcGxlcil9KCkmJihoLnNhbXBsZWQ9U3RyaW5nKGZ1bmN0aW9uKHQpe2NvbnN0e3RyYWNlRmxhZ3M6bn09dC5zcGFuQ29udGV4dCgpO3JldHVybiAxPT09bn0oZSkpLGguc2FtcGxlX3JhbmQ9aT8uZ2V0KCJzZW50cnkuc2FtcGxlX3JhbmQiKT8/ZHQoZSkuc2NvcGU/LmdldFByb3BhZ2F0aW9uQ29udGV4dCgpLnNhbXBsZVJhbmQudG9TdHJpbmcoKSksYyhoKSxuLmVtaXQoImNyZWF0ZURzYyIsaCxlKSxofWZ1bmN0aW9uIEN0KHQsbj0xMDAsZT0xLzApe3RyeXtyZXR1cm4gQXQoIiIsdCxuLGUpfWNhdGNoKHQpe3JldHVybntFUlJPUjpgKipub24tc2VyaWFsaXphYmxlKiogKCR7dH0pYH19fWZ1bmN0aW9uIEF0KHQsbixlPTEvMCxyPTEvMCxvPWZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgV2Vha1NldDtmdW5jdGlvbiBuKG4pe3JldHVybiEhdC5oYXMobil8fCh0LmFkZChuKSwhMSl9ZnVuY3Rpb24gZShuKXt0LmRlbGV0ZShuKX1yZXR1cm5bbixlXX0oKSl7Y29uc3RbaSxzXT1vO2lmKG51bGw9PW58fFsiYm9vbGVhbiIsInN0cmluZyJdLmluY2x1ZGVzKHR5cGVvZiBuKXx8Im51bWJlciI9PXR5cGVvZiBuJiZOdW1iZXIuaXNGaW5pdGUobikpcmV0dXJuIG47Y29uc3QgYz1mdW5jdGlvbih0LG4pe3RyeXtpZigiZG9tYWluIj09PXQmJm4mJiJvYmplY3QiPT10eXBlb2YgbiYmbi5NKXJldHVybiJbRG9tYWluXSI7aWYoImRvbWFpbkVtaXR0ZXIiPT09dClyZXR1cm4iW0RvbWFpbkVtaXR0ZXJdIjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbj09PWdsb2JhbClyZXR1cm4iW0dsb2JhbF0iO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZuPT09d2luZG93KXJldHVybiJbV2luZG93XSI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmbj09PWRvY3VtZW50KXJldHVybiJbRG9jdW1lbnRdIjtpZigib2JqZWN0Ij09dHlwZW9mKGU9bikmJm51bGwhPT1lJiYoZS5fX2lzVnVlfHxlLkJ8fGUuX192X2lzVk5vZGUpKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4iX192X2lzVk5vZGUiaW4gdCYmdC5fX3ZfaXNWTm9kZT8iW1Z1ZVZOb2RlXSI6IltWdWVWaWV3TW9kZWxdIn0obik7aWYoZnVuY3Rpb24odCl7cmV0dXJuIEEodCkmJiJuYXRpdmVFdmVudCJpbiB0JiYicHJldmVudERlZmF1bHQiaW4gdCYmInN0b3BQcm9wYWdhdGlvbiJpbiB0fShuKSlyZXR1cm4iW1N5bnRoZXRpY0V2ZW50XSI7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYhTnVtYmVyLmlzRmluaXRlKG4pKXJldHVybmBbJHtufV1gO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybmBbRnVuY3Rpb246ICR7ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5uYW1lfHx4fWNhdGNoe3JldHVybiB4fX0obil9XWA7aWYoInN5bWJvbCI9PXR5cGVvZiBuKXJldHVybmBbJHtTdHJpbmcobil9XWA7aWYoImJpZ2ludCI9PXR5cGVvZiBuKXJldHVybmBbQmlnSW50OiAke1N0cmluZyhuKX1dYDtjb25zdCByPWZ1bmN0aW9uKHQpe2NvbnN0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBuPy5jb25zdHJ1Y3Rvcj9uLmNvbnN0cnVjdG9yLm5hbWU6Im51bGwgcHJvdG90eXBlIn0obik7cmV0dXJuL15IVE1MKFx3KilFbGVtZW50JC8udGVzdChyKT9gW0hUTUxFbGVtZW50OiAke3J9XWA6YFtvYmplY3QgJHtyfV1gfWNhdGNoKHQpe3JldHVybmAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHt0fSlgfXZhciBlfSh0LG4pO2lmKCFjLnN0YXJ0c1dpdGgoIltvYmplY3QgIikpcmV0dXJuIGM7aWYobi5fX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXylyZXR1cm4gbjtjb25zdCB1PSJudW1iZXIiPT10eXBlb2Ygbi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18/bi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX186ZTtpZigwPT09dSlyZXR1cm4gYy5yZXBsYWNlKCJvYmplY3QgIiwiIik7aWYoaShuKSlyZXR1cm4iW0NpcmN1bGFyIH5dIjtjb25zdCBhPW47aWYoYSYmImZ1bmN0aW9uIj09dHlwZW9mIGEudG9KU09OKXRyeXtyZXR1cm4gQXQoIiIsYS50b0pTT04oKSx1LTEscixvKX1jYXRjaHt9Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP1tdOnt9O2xldCBoPTA7Y29uc3QgcD1SKG4pO2Zvcihjb25zdCB0IGluIHApe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCx0KSljb250aW51ZTtpZihoPj1yKXtmW3RdPSJbTWF4UHJvcGVydGllcyB+XSI7YnJlYWt9Y29uc3Qgbj1wW3RdO2ZbdF09QXQodCxuLHUtMSxyLG8pLGgrK31yZXR1cm4gcyhuKSxmfWZ1bmN0aW9uIFR0KHQsbil7Y29uc3QgZT1uLnJlcGxhY2UoL1xcL2csIi8iKS5yZXBsYWNlKC9bfFxce30oKVtcXV4kKyo/Ll0vZywiXFwkJiIpO2xldCByPXQ7dHJ5e3I9ZGVjb2RlVVJJKHQpfWNhdGNoe31yZXR1cm4gci5yZXBsYWNlKC9cXC9nLCIvIikucmVwbGFjZSgvd2VicGFjazpcLz8vZywiIikucmVwbGFjZShuZXcgUmVnRXhwKGAoZmlsZTovLyk/Lyoke2V9LypgLCJpZyIpLCJhcHA6Ly8vIil9ZnVuY3Rpb24ga3QodCxuPVtdKXtyZXR1cm5bdCxuXX1mdW5jdGlvbiBJdCh0LG4pe2NvbnN0IGU9dFsxXTtmb3IoY29uc3QgdCBvZiBlKXtpZihuKHQsdFswXS50eXBlKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBPdCh0KXtjb25zdCBuPW0ocCk7cmV0dXJuIG4uZW5jb2RlUG9seWZpbGw/bi5lbmNvZGVQb2x5ZmlsbCh0KToobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodCl9ZnVuY3Rpb24gUnQodCl7Y29uc3RbbixlXT10O2xldCByPUpTT04uc3RyaW5naWZ5KG4pO2Z1bmN0aW9uIG8odCl7InN0cmluZyI9PXR5cGVvZiByP3I9InN0cmluZyI9PXR5cGVvZiB0P3IrdDpbT3QociksdF06ci5wdXNoKCJzdHJpbmciPT10eXBlb2YgdD9PdCh0KTp0KX1mb3IoY29uc3QgdCBvZiBlKXtjb25zdFtuLGVdPXQ7aWYobyhgXG4ke0pTT04uc3RyaW5naWZ5KG4pfVxuYCksInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSlvKGUpO2Vsc2V7bGV0IHQ7dHJ5e3Q9SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2h7dD1KU09OLnN0cmluZ2lmeShDdChlKSl9byh0KX19cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3I6ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnJlZHVjZSgodCxuKT0+dCtuLmxlbmd0aCwwKSxlPW5ldyBVaW50OEFycmF5KG4pO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgdCllLnNldChuLHIpLHIrPW4ubGVuZ3RoO3JldHVybiBlfShyKX1jb25zdCBQdD17c2Vzc2lvbnM6InNlc3Npb24iLGV2ZW50OiJlcnJvciIsY2xpZW50X3JlcG9ydDoiaW50ZXJuYWwiLHVzZXJfcmVwb3J0OiJkZWZhdWx0Iixwcm9maWxlX2NodW5rOiJwcm9maWxlIixyZXBsYXlfZXZlbnQ6InJlcGxheSIscmVwbGF5X3JlY29yZGluZzoicmVwbGF5IixjaGVja19pbjoibW9uaXRvciIscmF3X3NlY3VyaXR5OiJzZWN1cml0eSIsbG9nOiJsb2dfaXRlbSIsdHJhY2VfbWV0cmljOiJtZXRyaWMifTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gUHR9KHQpP1B0W3RdOnR9ZnVuY3Rpb24gVXQodCl7aWYoIXQ/LnNkaylyZXR1cm47Y29uc3R7bmFtZTpuLHZlcnNpb246ZX09dC5zZGs7cmV0dXJue25hbWU6bix2ZXJzaW9uOmV9fWZ1bmN0aW9uIEx0KHQsbixlLHIpe2NvbnN0IG89VXQoZSksaT10LnR5cGUmJiJyZXBsYXlfZXZlbnQiIT09dC50eXBlP3QudHlwZToiZXZlbnQiOyFmdW5jdGlvbih0LG4pe2lmKCFuKXJldHVybiB0O2NvbnN0IGU9dC5zZGt8fHt9O3Quc2RrPXsuLi5lLG5hbWU6ZS5uYW1lfHxuLm5hbWUsdmVyc2lvbjplLnZlcnNpb258fG4udmVyc2lvbixpbnRlZ3JhdGlvbnM6Wy4uLnQuc2RrPy5pbnRlZ3JhdGlvbnN8fFtdLC4uLm4uaW50ZWdyYXRpb25zfHxbXV0scGFja2FnZXM6Wy4uLnQuc2RrPy5wYWNrYWdlc3x8W10sLi4ubi5wYWNrYWdlc3x8W11dLHNldHRpbmdzOnQuc2RrPy5zZXR0aW5nc3x8bi5zZXR0aW5ncz97Li4udC5zZGs/LnNldHRpbmdzLC4uLm4uc2V0dGluZ3N9OnZvaWQgMH19KHQsZT8uc2RrKTtjb25zdCBzPWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89dC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE/LmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7cmV0dXJue2V2ZW50X2lkOnQuZXZlbnRfaWQsc2VudF9hdDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCksLi4ubiYme3NkazpufSwuLi4hIWUmJnImJntkc246YnQocil9LC4uLm8mJnt0cmFjZTpvfX19KHQsbyxyLG4pO2RlbGV0ZSB0LnNka1Byb2Nlc3NpbmdNZXRhZGF0YTtyZXR1cm4ga3QocyxbW3t0eXBlOml9LHRdXSl9Y29uc3QgTXQ9Il9fU0VOVFJZX1NVUFBSRVNTX1RSQUNJTkdfXyI7ZnVuY3Rpb24gQnQodCl7Y29uc3Qgbj1mdChsKCkpO3JldHVybiBuLnN1cHByZXNzVHJhY2luZz9uLnN1cHByZXNzVHJhY2luZyh0KTpmdW5jdGlvbiguLi50KXtjb25zdCBuPWZ0KGwoKSk7aWYoMj09PXQubGVuZ3RoKXtjb25zdFtlLHJdPXQ7cmV0dXJuIGU/bi53aXRoU2V0U2NvcGUoZSxyKTpuLndpdGhTY29wZShyKX1yZXR1cm4gbi53aXRoU2NvcGUodFswXSl9KG49PntuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTohMH0pO2NvbnN0IGU9dCgpO3JldHVybiBuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTp2b2lkIDB9KSxlfSl9Y2xhc3MgV3R7Y29uc3RydWN0b3IodCl7dGhpcy5XPTAsdGhpcy5GPVtdLHRoaXMuRyh0KX10aGVuKHQsbil7cmV0dXJuIG5ldyBXdCgoZSxyKT0+e3RoaXMuRi5wdXNoKFshMSxuPT57aWYodCl0cnl7ZSh0KG4pKX1jYXRjaCh0KXtyKHQpfWVsc2UgZShuKX0sdD0+e2lmKG4pdHJ5e2Uobih0KSl9Y2F0Y2godCl7cih0KX1lbHNlIHIodCl9XSksdGhpcy5IKCl9KX1jYXRjaCh0KXtyZXR1cm4gdGhpcy50aGVuKHQ9PnQsdCl9ZmluYWxseSh0KXtyZXR1cm4gbmV3IFd0KChuLGUpPT57bGV0IHIsbztyZXR1cm4gdGhpcy50aGVuKG49PntvPSExLHI9bix0JiZ0KCl9LG49PntvPSEwLHI9bix0JiZ0KCl9KS50aGVuKCgpPT57bz9lKHIpOm4ocil9KX0pfUgoKXtpZigwPT09dGhpcy5XKXJldHVybjtjb25zdCB0PXRoaXMuRi5zbGljZSgpO3RoaXMuRj1bXSx0LmZvckVhY2godD0+e3RbMF18fCgxPT09dGhpcy5XJiZ0WzFdKHRoaXMuSiksMj09PXRoaXMuVyYmdFsyXSh0aGlzLkopLHRbMF09ITApfSl9Ryh0KXtjb25zdCBuPSh0LG4pPT57MD09PXRoaXMuVyYmKFQobik/bi50aGVuKGUscik6KHRoaXMuVz10LHRoaXMuSj1uLHRoaXMuSCgpKSl9LGU9dD0+e24oMSx0KX0scj10PT57bigyLHQpfTt0cnl7dChlLHIpfWNhdGNoKHQpe3IodCl9fX1mdW5jdGlvbiB6dCh0LG4pe2NvbnN0e2ZpbmdlcnByaW50OmUsc3BhbjpyLGJyZWFkY3J1bWJzOm8sc2RrUHJvY2Vzc2luZ01ldGFkYXRhOml9PW47IWZ1bmN0aW9uKHQsbil7Y29uc3R7ZXh0cmE6ZSx0YWdzOnIsdXNlcjpvLGNvbnRleHRzOmksbGV2ZWw6cyx0cmFuc2FjdGlvbk5hbWU6Y309bjtPYmplY3Qua2V5cyhlKS5sZW5ndGgmJih0LmV4dHJhPXsuLi5lLC4uLnQuZXh0cmF9KTtPYmplY3Qua2V5cyhyKS5sZW5ndGgmJih0LnRhZ3M9ey4uLnIsLi4udC50YWdzfSk7T2JqZWN0LmtleXMobykubGVuZ3RoJiYodC51c2VyPXsuLi5vLC4uLnQudXNlcn0pO09iamVjdC5rZXlzKGkpLmxlbmd0aCYmKHQuY29udGV4dHM9ey4uLmksLi4udC5jb250ZXh0c30pO3MmJih0LmxldmVsPXMpO2MmJiJ0cmFuc2FjdGlvbiIhPT10LnR5cGUmJih0LnRyYW5zYWN0aW9uPWMpfSh0LG4pLHImJmZ1bmN0aW9uKHQsbil7dC5jb250ZXh0cz17dHJhY2U6X3QobiksLi4udC5jb250ZXh0c30sdC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE9e2R5bmFtaWNTYW1wbGluZ0NvbnRleHQ6anQobiksLi4udC5zZGtQcm9jZXNzaW5nTWV0YWRhdGF9O2NvbnN0IGU9TnQobikscj1FdChlKS5kZXNjcmlwdGlvbjtyJiYhdC50cmFuc2FjdGlvbiYmInRyYW5zYWN0aW9uIj09PXQudHlwZSYmKHQudHJhbnNhY3Rpb249cil9KHQsciksZnVuY3Rpb24odCxuKXt0LmZpbmdlcnByaW50PXQuZmluZ2VycHJpbnQ/QXJyYXkuaXNBcnJheSh0LmZpbmdlcnByaW50KT90LmZpbmdlcnByaW50Olt0LmZpbmdlcnByaW50XTpbXSxuJiYodC5maW5nZXJwcmludD10LmZpbmdlcnByaW50LmNvbmNhdChuKSk7dC5maW5nZXJwcmludC5sZW5ndGh8fGRlbGV0ZSB0LmZpbmdlcnByaW50fSh0LGUpLGZ1bmN0aW9uKHQsbil7Y29uc3QgZT1bLi4udC5icmVhZGNydW1ic3x8W10sLi4ubl07dC5icmVhZGNydW1icz1lLmxlbmd0aD9lOnZvaWQgMH0odCxvKSxmdW5jdGlvbih0LG4pe3Quc2RrUHJvY2Vzc2luZ01ldGFkYXRhPXsuLi50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwuLi5ufX0odCxpKX1jb25zdCBGdD1TeW1ib2wuZm9yKCJTZW50cnlCdWZmZXJGdWxsRXJyb3IiKTtmdW5jdGlvbiBHdCh0PTEwMCl7Y29uc3Qgbj1uZXcgU2V0O2Z1bmN0aW9uIGUodCl7bi5kZWxldGUodCl9cmV0dXJue2dldCAkKCl7cmV0dXJuIEFycmF5LmZyb20obil9LGFkZDpmdW5jdGlvbihyKXtpZighKG4uc2l6ZTx0KSlyZXR1cm4gbz1GdCxuZXcgV3QoKHQsbik9PntuKG8pfSk7dmFyIG87Y29uc3QgaT1yKCk7cmV0dXJuIG4uYWRkKGkpLGkudGhlbigoKT0+ZShpKSwoKT0+ZShpKSksaX0sZHJhaW46ZnVuY3Rpb24odCl7aWYoIW4uc2l6ZSlyZXR1cm4gZT0hMCxuZXcgV3QodD0+e3QoZSl9KTt2YXIgZTtjb25zdCByPVByb21pc2UuYWxsU2V0dGxlZChBcnJheS5mcm9tKG4pKS50aGVuKCgpPT4hMCk7aWYoIXQpcmV0dXJuIHI7Y29uc3Qgbz1bcixuZXcgUHJvbWlzZShuPT57cmV0dXJuIm9iamVjdCI9PXR5cGVvZihlPXNldFRpbWVvdXQoKCk9Pm4oITEpLHQpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudW5yZWYmJmUudW5yZWYoKSxlO3ZhciBlfSldO3JldHVybiBQcm9taXNlLnJhY2Uobyl9fX1mdW5jdGlvbiBIdCh0LHtzdGF0dXNDb2RlOm4saGVhZGVyczplfSxyPVcoKSl7Y29uc3Qgbz17Li4udH0saT1lPy5bIngtc2VudHJ5LXJhdGUtbGltaXRzIl0scz1lPy5bInJldHJ5LWFmdGVyIl07aWYoaSlmb3IoY29uc3QgdCBvZiBpLnRyaW0oKS5zcGxpdCgiLCIpKXtjb25zdFtuLGUsLCxpXT10LnNwbGl0KCI6Iiw1KSxzPXBhcnNlSW50KG4sMTApLGM9MWUzKihpc05hTihzKT82MDpzKTtpZihlKWZvcihjb25zdCB0IG9mIGUuc3BsaXQoIjsiKSkibWV0cmljX2J1Y2tldCI9PT10JiZpJiYhaS5zcGxpdCgiOyIpLmluY2x1ZGVzKCJjdXN0b20iKXx8KG9bdF09citjKTtlbHNlIG8uYWxsPXIrY31lbHNlIHM/by5hbGw9citmdW5jdGlvbih0LG49VygpKXtjb25zdCBlPXBhcnNlSW50KGAke3R9YCwxMCk7aWYoIWlzTmFOKGUpKXJldHVybiAxZTMqZTtjb25zdCByPURhdGUucGFyc2UoYCR7dH1gKTtyZXR1cm4gaXNOYU4ocik/NmU0OnItbn0ocyxyKTo0Mjk9PT1uJiYoby5hbGw9cis2ZTQpO3JldHVybiBvfWZ1bmN0aW9uIEp0KHQsbixlPUd0KHQuYnVmZmVyU2l6ZXx8NjQpKXtsZXQgcj17fTtyZXR1cm57c2VuZDpmdW5jdGlvbih0KXtjb25zdCBvPVtdO2lmKEl0KHQsKHQsbik9Pntjb25zdCBlPUR0KG4pOyhmdW5jdGlvbih0LG4sZT1XKCkpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB0W25dfHx0LmFsbHx8MH0odCxuKT5lfSkocixlKXx8by5wdXNoKHQpfSksMD09PW8ubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO2NvbnN0IGk9a3QodFswXSxvKSxzPXQ9PnshZnVuY3Rpb24odCxuKXtyZXR1cm4gSXQodCwodCxlKT0+bi5pbmNsdWRlcyhlKSl9KGksWyJjbGllbnRfcmVwb3J0Il0pP0l0KGksKHQsbik9Pnt9KTpoJiZTLndhcm4oYERyb3BwaW5nIGNsaWVudCByZXBvcnQuIFdpbGwgbm90IHNlbmQgb3V0Y29tZXMgKHJlYXNvbjogJHt0fSkuYCl9O3JldHVybiBlLmFkZCgoKT0+bih7Ym9keTpSdChpKX0pLnRoZW4odD0+NDEzPT09dC5zdGF0dXNDb2RlPyhoJiZTLmVycm9yKCJTZW50cnkgcmVzcG9uZGVkIHdpdGggc3RhdHVzIGNvZGUgNDEzLiBFbnZlbG9wZSB3YXMgZGlzY2FyZGVkIGR1ZSB0byBleGNlZWRpbmcgc2l6ZSBsaW1pdHMuIikscygic2VuZF9lcnJvciIpLHQpOihoJiZ2b2lkIDAhPT10LnN0YXR1c0NvZGUmJih0LnN0YXR1c0NvZGU8MjAwfHx0LnN0YXR1c0NvZGU+PTMwMCkmJlMud2FybihgU2VudHJ5IHJlc3BvbmRlZCB3aXRoIHN0YXR1cyBjb2RlICR7dC5zdGF0dXNDb2RlfSB0byBzZW50IGV2ZW50LmApLHI9SHQocix0KSx0KSx0PT57dGhyb3cgcygibmV0d29ya19lcnJvciIpLGgmJlMuZXJyb3IoIkVuY291bnRlcmVkIGVycm9yIHJ1bm5pbmcgdHJhbnNwb3J0IHJlcXVlc3Q6Iix0KSx0fSkpLnRoZW4odD0+dCx0PT57aWYodD09PUZ0KXJldHVybiBoJiZTLmVycm9yKCJTa2lwcGVkIHNlbmRpbmcgZXZlbnQgYmVjYXVzZSBidWZmZXIgaXMgZnVsbC4iKSxzKCJxdWV1ZV9vdmVyZmxvdyIpLFByb21pc2UucmVzb2x2ZSh7fSk7dGhyb3cgdH0pfSxmbHVzaDp0PT5lLmRyYWluKHQpfX1jb25zdCBZdD0vXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87ZnVuY3Rpb24gVnQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtjb25zdCBuPXQubGVuZ3RoPjEwMjQ/YDx0cnVuY2F0ZWQ+JHt0LnNsaWNlKC0xMDI0KX1gOnQsZT1ZdC5leGVjKG4pO3JldHVybiBlP2Uuc2xpY2UoMSk6W119KHQpLGU9blswXXx8IiI7bGV0IHI9blsxXTtyZXR1cm4gZXx8cj8ociYmKHI9ci5zbGljZSgwLHIubGVuZ3RoLTEpKSxlK3IpOiIuIn1mdW5jdGlvbiBLdCh0LG49ITEpe3JldHVybiEobnx8dCYmIXQuc3RhcnRzV2l0aCgiLyIpJiYhdC5tYXRjaCgvXltBLVpdOi8pJiYhdC5zdGFydHNXaXRoKCIuIikmJiF0Lm1hdGNoKC9eW2EtekEtWl0oW2EtekEtWjAtOS5cLStdKSo6XC9cLy8pKSYmdm9pZCAwIT09dCYmIXQuaW5jbHVkZXMoIm5vZGVfbW9kdWxlcy8iKX1jb25zdCBadD1TeW1ib2woIkFnZW50QmFzZUludGVybmFsU3RhdGUiKTtjbGFzcyBxdCBleHRlbmRzIGkuQWdlbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpc1tadF09e319aXNTZWN1cmVFbmRwb2ludCh0KXtpZih0KXtpZigiYm9vbGVhbiI9PXR5cGVvZiB0LnNlY3VyZUVuZHBvaW50KXJldHVybiB0LnNlY3VyZUVuZHBvaW50O2lmKCJzdHJpbmciPT10eXBlb2YgdC5wcm90b2NvbClyZXR1cm4iaHR0cHM6Ij09PXQucHJvdG9jb2x9Y29uc3R7c3RhY2s6bn09bmV3IEVycm9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmbi5zcGxpdCgiXG4iKS5zb21lKHQ9Pi0xIT09dC5pbmRleE9mKCIoaHR0cHMuanM6Iil8fC0xIT09dC5pbmRleE9mKCJub2RlOmh0dHBzOiIpKX1jcmVhdGVTb2NrZXQodCxuLGUpe2NvbnN0IHI9ey4uLm4sc2VjdXJlRW5kcG9pbnQ6dGhpcy5pc1NlY3VyZUVuZHBvaW50KG4pfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbm5lY3QodCxyKSkudGhlbihvPT57aWYobyBpbnN0YW5jZW9mIGkuQWdlbnQpcmV0dXJuIG8uYWRkUmVxdWVzdCh0LHIpO3RoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9byxzdXBlci5jcmVhdGVTb2NrZXQodCxuLGUpfSxlKX1jcmVhdGVDb25uZWN0aW9uKCl7Y29uc3QgdD10aGlzW1p0XS5jdXJyZW50U29ja2V0O2lmKHRoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9dm9pZCAwLCF0KXRocm93IG5ldyBFcnJvcigiTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24iKTtyZXR1cm4gdH1nZXQgZGVmYXVsdFBvcnQoKXtyZXR1cm4gdGhpc1tadF0uZGVmYXVsdFBvcnQ/PygiaHR0cHM6Ij09PXRoaXMucHJvdG9jb2w/NDQzOjgwKX1zZXQgZGVmYXVsdFBvcnQodCl7dGhpc1tadF0mJih0aGlzW1p0XS5kZWZhdWx0UG9ydD10KX1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpc1tadF0ucHJvdG9jb2w/Pyh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKT8iaHR0cHM6IjoiaHR0cDoiKX1zZXQgcHJvdG9jb2wodCl7dGhpc1tadF0mJih0aGlzW1p0XS5wcm90b2NvbD10KX19ZnVuY3Rpb24gUXQoLi4udCl7Uy5sb2coIltodHRwcy1wcm94eS1hZ2VudDpwYXJzZS1wcm94eS1yZXNwb25zZV0iLC4uLnQpfWZ1bmN0aW9uIFh0KHQpe3JldHVybiBuZXcgUHJvbWlzZSgobixlKT0+e2xldCByPTA7Y29uc3Qgbz1bXTtmdW5jdGlvbiBpKCl7Y29uc3QgYz10LnJlYWQoKTtjP2Z1bmN0aW9uKGMpe28ucHVzaChjKSxyKz1jLmxlbmd0aDtjb25zdCB1PUJ1ZmZlci5jb25jYXQobyxyKSxhPXUuaW5kZXhPZigiXHJcblxyXG4iKTtpZigtMT09PWEpcmV0dXJuIFF0KCJoYXZlIG5vdCByZWNlaXZlZCBlbmQgb2YgSFRUUCBoZWFkZXJzIHlldC4uLiIpLHZvaWQgaSgpO2NvbnN0IGY9dS5zdWJhcnJheSgwLGEpLnRvU3RyaW5nKCJhc2NpaSIpLnNwbGl0KCJcclxuIiksaD1mLnNoaWZ0KCk7aWYoIWgpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKCJObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlIikpO2NvbnN0IHA9aC5zcGxpdCgiICIpLGQ9KyhwWzFdfHwwKSxsPXAuc2xpY2UoMikuam9pbigiICIpLG09e307Zm9yKGNvbnN0IG4gb2YgZil7aWYoIW4pY29udGludWU7Y29uc3Qgcj1uLmluZGV4T2YoIjoiKTtpZigtMT09PXIpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKGBJbnZhbGlkIGhlYWRlciBmcm9tIHByb3h5IENPTk5FQ1QgcmVzcG9uc2U6ICIke259ImApKTtjb25zdCBvPW4uc2xpY2UoMCxyKS50b0xvd2VyQ2FzZSgpLGk9bi5zbGljZShyKzEpLnRyaW1TdGFydCgpLHM9bVtvXTsic3RyaW5nIj09dHlwZW9mIHM/bVtvXT1bcyxpXTpBcnJheS5pc0FycmF5KHMpP3MucHVzaChpKTptW29dPWl9UXQoImdvdCBwcm94eSBzZXJ2ZXIgcmVzcG9uc2U6ICVvICVvIixoLG0pLHMoKSxuKHtjb25uZWN0OntzdGF0dXNDb2RlOmQsc3RhdHVzVGV4dDpsLGhlYWRlcnM6bX0sYnVmZmVyZWQ6dX0pfShjKTp0Lm9uY2UoInJlYWRhYmxlIixpKX1mdW5jdGlvbiBzKCl7dC5yZW1vdmVMaXN0ZW5lcigiZW5kIixjKSx0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsdSksdC5yZW1vdmVMaXN0ZW5lcigicmVhZGFibGUiLGkpfWZ1bmN0aW9uIGMoKXtzKCksUXQoIm9uZW5kIiksZShuZXcgRXJyb3IoIlByb3h5IGNvbm5lY3Rpb24gZW5kZWQgYmVmb3JlIHJlY2VpdmluZyBDT05ORUNUIHJlc3BvbnNlIikpfWZ1bmN0aW9uIHUodCl7cygpLFF0KCJvbmVycm9yICVvIix0KSxlKHQpfXQub24oImVycm9yIix1KSx0Lm9uKCJlbmQiLGMpLGkoKX0pfWZ1bmN0aW9uIHRuKC4uLnQpe1MubG9nKCJbaHR0cHMtcHJveHktYWdlbnRdIiwuLi50KX1jbGFzcyBubiBleHRlbmRzIHF0e3N0YXRpYyBfX2luaXRTdGF0aWMoKXt0aGlzLnByb3RvY29scz1bImh0dHAiLCJodHRwcyJdfWNvbnN0cnVjdG9yKHQsbil7c3VwZXIobiksdGhpcy5vcHRpb25zPXt9LHRoaXMucHJveHk9InN0cmluZyI9PXR5cGVvZiB0P25ldyBVUkwodCk6dCx0aGlzLnByb3h5SGVhZGVycz1uPy5oZWFkZXJzPz97fSx0bigiQ3JlYXRpbmcgbmV3IEh0dHBzUHJveHlBZ2VudCBpbnN0YW5jZTogJW8iLHRoaXMucHJveHkuaHJlZik7Y29uc3QgZT0odGhpcy5wcm94eS5ob3N0bmFtZXx8dGhpcy5wcm94eS5ob3N0KS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpLHI9dGhpcy5wcm94eS5wb3J0P3BhcnNlSW50KHRoaXMucHJveHkucG9ydCwxMCk6Imh0dHBzOiI9PT10aGlzLnByb3h5LnByb3RvY29sPzQ0Mzo4MDt0aGlzLmNvbm5lY3RPcHRzPXtBTFBOUHJvdG9jb2xzOlsiaHR0cC8xLjEiXSwuLi5uP3JuKG4sImhlYWRlcnMiKTpudWxsLGhvc3Q6ZSxwb3J0OnJ9fWFzeW5jIGNvbm5lY3QodCxuKXtjb25zdHtwcm94eTplfT10aGlzO2lmKCFuLmhvc3QpdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gImhvc3QiIHByb3ZpZGVkJyk7bGV0IHI7aWYoImh0dHBzOiI9PT1lLnByb3RvY29sKXt0bigiQ3JlYXRpbmcgYHRscy5Tb2NrZXRgOiAlbyIsdGhpcy5jb25uZWN0T3B0cyk7Y29uc3QgdD10aGlzLmNvbm5lY3RPcHRzLnNlcnZlcm5hbWV8fHRoaXMuY29ubmVjdE9wdHMuaG9zdDtyPWYuY29ubmVjdCh7Li4udGhpcy5jb25uZWN0T3B0cyxzZXJ2ZXJuYW1lOnQmJmEuaXNJUCh0KT92b2lkIDA6dH0pfWVsc2UgdG4oIkNyZWF0aW5nIGBuZXQuU29ja2V0YDogJW8iLHRoaXMuY29ubmVjdE9wdHMpLHI9YS5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpO2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucHJveHlIZWFkZXJzP3RoaXMucHJveHlIZWFkZXJzKCk6ey4uLnRoaXMucHJveHlIZWFkZXJzfSxpPWEuaXNJUHY2KG4uaG9zdCk/YFske24uaG9zdH1dYDpuLmhvc3Q7bGV0IHM9YENPTk5FQ1QgJHtpfToke24ucG9ydH0gSFRUUC8xLjFcclxuYDtpZihlLnVzZXJuYW1lfHxlLnBhc3N3b3JkKXtjb25zdCB0PWAke2RlY29kZVVSSUNvbXBvbmVudChlLnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQoZS5wYXNzd29yZCl9YDtvWyJQcm94eS1BdXRob3JpemF0aW9uIl09YEJhc2ljICR7QnVmZmVyLmZyb20odCkudG9TdHJpbmcoImJhc2U2NCIpfWB9by5Ib3N0PWAke2l9OiR7bi5wb3J0fWAsb1siUHJveHktQ29ubmVjdGlvbiJdfHwob1siUHJveHktQ29ubmVjdGlvbiJdPXRoaXMua2VlcEFsaXZlPyJLZWVwLUFsaXZlIjoiY2xvc2UiKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhvKSlzKz1gJHt0fTogJHtvW3RdfVxyXG5gO2NvbnN0IGM9WHQocik7ci53cml0ZShgJHtzfVxyXG5gKTtjb25zdHtjb25uZWN0OnUsYnVmZmVyZWQ6aH09YXdhaXQgYztpZih0LmVtaXQoInByb3h5Q29ubmVjdCIsdSksdGhpcy5lbWl0KCJwcm94eUNvbm5lY3QiLHUsdCksMjAwPT09dS5zdGF0dXNDb2RlKXtpZih0Lm9uY2UoInNvY2tldCIsZW4pLG4uc2VjdXJlRW5kcG9pbnQpe3RuKCJVcGdyYWRpbmcgc29ja2V0IGNvbm5lY3Rpb24gdG8gVExTIik7Y29uc3QgdD1uLnNlcnZlcm5hbWV8fG4uaG9zdDtyZXR1cm4gZi5jb25uZWN0KHsuLi5ybihuLCJob3N0IiwicGF0aCIsInBvcnQiKSxzb2NrZXQ6cixzZXJ2ZXJuYW1lOmEuaXNJUCh0KT92b2lkIDA6dH0pfXJldHVybiByfXIuZGVzdHJveSgpO2NvbnN0IHA9bmV3IGEuU29ja2V0KHt3cml0YWJsZTohMX0pO3JldHVybiBwLnJlYWRhYmxlPSEwLHQub25jZSgic29ja2V0Iix0PT57dG4oIlJlcGxheWluZyBwcm94eSBidWZmZXIgZm9yIGZhaWxlZCByZXF1ZXN0IiksdC5wdXNoKGgpLHQucHVzaChudWxsKX0pLHB9fWZ1bmN0aW9uIGVuKHQpe3QucmVzdW1lKCl9ZnVuY3Rpb24gcm4odCwuLi5uKXtjb25zdCBlPXt9O2xldCByO2ZvcihyIGluIHQpbi5pbmNsdWRlcyhyKXx8KGVbcl09dFtyXSk7cmV0dXJuIGV9bm4uX19pbml0U3RhdGljKCk7ZnVuY3Rpb24gb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXltBLVpdOi8sIiIpLnJlcGxhY2UoL1xcL2csIi8iKX1jb25zdCBzbj1uO2xldCBjbix1bj0wLGFuPXt9O2Z1bmN0aW9uIGZuKHQpe3NuLmRlYnVnJiZjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7dH1gKX12YXIgaG4scG4sZG47Y29uc3QgbG49ZnVuY3Rpb24odCl7bGV0IG47dHJ5e249bmV3IFVSTCh0LnVybCl9Y2F0Y2gobil7cmV0dXJuIGIoKCk9Pntjb25zb2xlLndhcm4oIltAc2VudHJ5L25vZGVdOiBJbnZhbGlkIGRzbiBvciB0dW5uZWwgb3B0aW9uLCB3aWxsIG5vdCBzZW5kIGFueSBldmVudHMuIFRoZSB0dW5uZWwgb3B0aW9uIG11c3QgYmUgYSBmdWxsIFVSTCB3aGVuIHVzZWQuIil9KSxKdCh0LCgpPT5Qcm9taXNlLnJlc29sdmUoe30pKX1jb25zdCBlPSJodHRwczoiPT09bi5wcm90b2NvbCxyPWZ1bmN0aW9uKHQsbil7Y29uc3R7bm9fcHJveHk6ZX09cHJvY2Vzcy5lbnYscj1lPy5zcGxpdCgiLCIpLnNvbWUobj0+dC5ob3N0LmVuZHNXaXRoKG4pfHx0Lmhvc3RuYW1lLmVuZHNXaXRoKG4pKTtyZXR1cm4gcj92b2lkIDA6bn0obix0LnByb3h5fHwoZT9wcm9jZXNzLmVudi5odHRwc19wcm94eTp2b2lkIDApfHxwcm9jZXNzLmVudi5odHRwX3Byb3h5KSxvPWU/czppLGE9dm9pZCAwIT09dC5rZWVwQWxpdmUmJnQua2VlcEFsaXZlLGY9cj9uZXcgbm4ocik6bmV3IG8uQWdlbnQoe2tlZXBBbGl2ZTphLG1heFNvY2tldHM6MzAsdGltZW91dDoyZTN9KSxoPWZ1bmN0aW9uKHQsbixlKXtjb25zdHtob3N0bmFtZTpyLHBhdGhuYW1lOm8scG9ydDppLHByb3RvY29sOnMsc2VhcmNoOmF9PW5ldyBVUkwodC51cmwpO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gbmV3IFByb21pc2UoKGgscCk9PntCdCgoKT0+e2xldCBkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYyh7cmVhZCgpe3RoaXMucHVzaCh0KSx0aGlzLnB1c2gobnVsbCl9fSl9KGYuYm9keSk7Y29uc3QgbD17Li4udC5oZWFkZXJzfTtmLmJvZHkubGVuZ3RoPjMyNzY4JiYobFsiY29udGVudC1lbmNvZGluZyJdPSJnemlwIixkPWQucGlwZSh1KCkpKTtjb25zdCBtPXIuc3RhcnRzV2l0aCgiWyIpLGc9bi5yZXF1ZXN0KHttZXRob2Q6IlBPU1QiLGFnZW50OmUsaGVhZGVyczpsLGhvc3RuYW1lOm0/ci5zbGljZSgxLC0xKTpyLHBhdGg6YCR7b30ke2F9YCxwb3J0OmkscHJvdG9jb2w6cyxjYTp0LmNhQ2VydHN9LHQ9Pnt0Lm9uKCJkYXRhIiwoKT0+e30pLHQub24oImVuZCIsKCk9Pnt9KSx0LnNldEVuY29kaW5nKCJ1dGY4Iik7Y29uc3Qgbj10LmhlYWRlcnNbInJldHJ5LWFmdGVyIl0/P251bGwsZT10LmhlYWRlcnNbIngtc2VudHJ5LXJhdGUtbGltaXRzIl0/P251bGw7aCh7c3RhdHVzQ29kZTp0LnN0YXR1c0NvZGUsaGVhZGVyczp7InJldHJ5LWFmdGVyIjpuLCJ4LXNlbnRyeS1yYXRlLWxpbWl0cyI6QXJyYXkuaXNBcnJheShlKT9lWzBdfHxudWxsOmV9fSl9KTtnLm9uKCJlcnJvciIscCksZC5waXBlKGcpfSl9KX19KHQsdC5odHRwTW9kdWxlPz9vLGYpO3JldHVybiBKdCh0LGgpfSh7dXJsOihobj1zbi5kc24scG49c24udHVubmVsLGRuPXNuLnNka01ldGFkYXRhLnNkayxwbnx8YCR7ZnVuY3Rpb24odCl7cmV0dXJuYCR7ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnByb3RvY29sP2Ake3QucHJvdG9jb2x9OmA6IiIsZT10LnBvcnQ/YDoke3QucG9ydH1gOiIiO3JldHVybmAke259Ly8ke3QuaG9zdH0ke2V9JHt0LnBhdGg/YC8ke3QucGF0aH1gOiIifS9hcGkvYH0odCl9JHt0LnByb2plY3RJZH0vZW52ZWxvcGUvYH0oaG4pfT8ke2Z1bmN0aW9uKHQsbil7Y29uc3QgZT17c2VudHJ5X3ZlcnNpb246IjcifTtyZXR1cm4gdC5wdWJsaWNLZXkmJihlLnNlbnRyeV9rZXk9dC5wdWJsaWNLZXkpLG4mJihlLnNlbnRyeV9jbGllbnQ9YCR7bi5uYW1lfS8ke24udmVyc2lvbn1gKSxuZXcgVVJMU2VhcmNoUGFyYW1zKGUpLnRvU3RyaW5nKCl9KGhuLGRuKX1gKX0pO2FzeW5jIGZ1bmN0aW9uIG1uKCl7aWYoY24pe2ZuKCJTZW5kaW5nIGFibm9ybWFsIHNlc3Npb24iKSxWKGNuLHtzdGF0dXM6ImFibm9ybWFsIixhYm5vcm1hbF9tZWNoYW5pc206ImFucl9mb3JlZ3JvdW5kIixyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnR9KTtjb25zdCB0PWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89VXQoZSk7cmV0dXJuIGt0KHtzZW50X2F0OihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwuLi5vJiZ7c2RrOm99LC4uLiEhciYmbiYme2RzbjpidChuKX19LFsiYWdncmVnYXRlcyJpbiB0P1t7dHlwZToic2Vzc2lvbnMifSx0XTpbe3R5cGU6InNlc3Npb24ifSx0LnRvSlNPTigpXV0pfShjbixzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeSh0KSksYXdhaXQgbG4uc2VuZCh0KTt0cnl7ZT8ucG9zdE1lc3NhZ2UoInNlc3Npb24tZW5kZWQiKX1jYXRjaHt9fX1mdW5jdGlvbiBnbih0KXtpZighdClyZXR1cm47Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdC5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1BcnJheS5mcm9tKHQpO3JldHVybi9zZW50cnlXcmFwcGVkLy50ZXN0KEUobikuZnVuY3Rpb258fCIiKSYmbi5wb3AoKSxuLnJldmVyc2UoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiYobi5wb3AoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiZuLnBvcCgpKSxuLnNsaWNlKDAsNTApLm1hcCh0PT4oey4uLnQsZmlsZW5hbWU6dC5maWxlbmFtZXx8RShuKS5maWxlbmFtZSxmdW5jdGlvbjp0LmZ1bmN0aW9ufHwiPyJ9KSl9KHQpO2lmKHNuLmFwcFJvb3RQYXRoKWZvcihjb25zdCB0IG9mIG4pdC5maWxlbmFtZSYmKHQuZmlsZW5hbWU9VHQodC5maWxlbmFtZSxzbi5hcHBSb290UGF0aCkpO3JldHVybiBufWFzeW5jIGZ1bmN0aW9uIHluKHQsbil7aWYodW4+PXNuLm1heEFuckV2ZW50cylyZXR1cm47dW4rPTEsYXdhaXQgbW4oKSxmbigiU2VuZGluZyBldmVudCIpO2NvbnN0IGU9e2V2ZW50X2lkOkYoKSxjb250ZXh0czpzbi5jb250ZXh0cyxyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnQsZGlzdDpzbi5kaXN0LHBsYXRmb3JtOiJub2RlIixsZXZlbDoiZXJyb3IiLGV4Y2VwdGlvbjp7dmFsdWVzOlt7dHlwZToiQXBwbGljYXRpb25Ob3RSZXNwb25kaW5nIix2YWx1ZTpgQXBwbGljYXRpb24gTm90IFJlc3BvbmRpbmcgZm9yIGF0IGxlYXN0ICR7c24uYW5yVGhyZXNob2xkfSBtc2Asc3RhY2t0cmFjZTp7ZnJhbWVzOmduKHQpfSxtZWNoYW5pc206e3R5cGU6IkFOUiJ9fV19LHRhZ3M6c24uc3RhdGljVGFnc307biYmZnVuY3Rpb24odCxuKXtpZih6dCh0LG4pLCF0LmNvbnRleHRzPy50cmFjZSl7Y29uc3R7dHJhY2VJZDplLHBhcmVudFNwYW5JZDpyLHByb3BhZ2F0aW9uU3BhbklkOm99PW4ucHJvcGFnYXRpb25Db250ZXh0O3QuY29udGV4dHM9e3RyYWNlOnt0cmFjZV9pZDplLHNwYW5faWQ6b3x8cSgpLHBhcmVudF9zcGFuX2lkOnJ9LC4uLnQuY29udGV4dHN9fX0oZSxuKSxmdW5jdGlvbih0KXtpZigwPT09T2JqZWN0LmtleXMoYW4pLmxlbmd0aClyZXR1cm47Y29uc3Qgbj1zbi5hcHBSb290UGF0aD97fTphbjtpZihzbi5hcHBSb290UGF0aClmb3IoY29uc3RbdCxlXW9mIE9iamVjdC5lbnRyaWVzKGFuKSluW1R0KHQsc24uYXBwUm9vdFBhdGgpXT1lO2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3QgciBvZiB0LmV4Y2VwdGlvbj8udmFsdWVzfHxbXSlmb3IoY29uc3QgdCBvZiByLnN0YWNrdHJhY2U/LmZyYW1lc3x8W10pe2NvbnN0IHI9dC5hYnNfcGF0aHx8dC5maWxlbmFtZTtyJiZuW3JdJiZlLnNldChyLG5bcl0pfWlmKGUuc2l6ZT4wKXtjb25zdCBuPVtdO2Zvcihjb25zdFt0LHJdb2YgZS5lbnRyaWVzKCkpbi5wdXNoKHt0eXBlOiJzb3VyY2VtYXAiLGNvZGVfZmlsZTp0LGRlYnVnX2lkOnJ9KTt0LmRlYnVnX21ldGE9e2ltYWdlczpufX19KGUpO2NvbnN0IHI9THQoZSxzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeShyKSksYXdhaXQgbG4uc2VuZChyKSxhd2FpdCBsbi5mbHVzaCgyZTMpLHVuPj1zbi5tYXhBbnJFdmVudHMmJnNldFRpbWVvdXQoKCk9Pntwcm9jZXNzLmV4aXQoMCl9LDVlMyl9bGV0IGJuO2lmKGZuKCJTdGFydGVkIiksc24uY2FwdHVyZVN0YWNrVHJhY2Upe2ZuKCJDb25uZWN0aW5nIHRvIGRlYnVnZ2VyIik7Y29uc3Qgbj1uZXcgdDtuLmNvbm5lY3RUb01haW5UaHJlYWQoKSxmbigiQ29ubmVjdGVkIHRvIGRlYnVnZ2VyIik7Y29uc3QgZT1uZXcgTWFwO24ub24oIkRlYnVnZ2VyLnNjcmlwdFBhcnNlZCIsdD0+e2Uuc2V0KHQucGFyYW1zLnNjcmlwdElkLHQucGFyYW1zLnVybCl9KSxuLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLHQ9PntpZigib3RoZXIiPT09dC5wYXJhbXMucmVhc29uKXRyeXtmbigiRGVidWdnZXIgcGF1c2VkIik7Y29uc3QgaT1bLi4udC5wYXJhbXMuY2FsbEZyYW1lc10scz1zbi5hcHBSb290UGF0aD9mdW5jdGlvbih0PShwcm9jZXNzLmFyZ3ZbMV0/VnQocHJvY2Vzcy5hcmd2WzFdKTpwcm9jZXNzLmN3ZCgpKSxuPSJcXCI9PT1vKXtjb25zdCBlPW4/b24odCk6dDtyZXR1cm4gdD0+e2lmKCF0KXJldHVybjtjb25zdCBvPW4/b24odCk6dDtsZXR7ZGlyOmksYmFzZTpzLGV4dDpjfT1yLnBhcnNlKG8pOyIuanMiIT09YyYmIi5tanMiIT09YyYmIi5janMiIT09Y3x8KHM9cy5zbGljZSgwLC0xKmMubGVuZ3RoKSk7Y29uc3QgdT1kZWNvZGVVUklDb21wb25lbnQocyk7aXx8KGk9Ii4iKTtjb25zdCBhPWkubGFzdEluZGV4T2YoIi9ub2RlX21vZHVsZXMiKTtpZihhPi0xKXJldHVybmAke2kuc2xpY2UoYSsxNCkucmVwbGFjZSgvXC8vZywiLiIpfToke3V9YDtpZihpLnN0YXJ0c1dpdGgoZSkpe2NvbnN0IHQ9aS5zbGljZShlLmxlbmd0aCsxKS5yZXBsYWNlKC9cLy9nLCIuIik7cmV0dXJuIHQ/YCR7dH06JHt1fWA6dX1yZXR1cm4gdX19KHNuLmFwcFJvb3RQYXRoKTooKT0+e30sYz1pLm1hcCh0PT5mdW5jdGlvbih0LG4sZSl7Y29uc3Qgcj1uP24ucmVwbGFjZSgvXmZpbGU6XC9cLy8sIiIpOnZvaWQgMCxvPXQubG9jYXRpb24uY29sdW1uTnVtYmVyP3QubG9jYXRpb24uY29sdW1uTnVtYmVyKzE6dm9pZCAwLGk9dC5sb2NhdGlvbi5saW5lTnVtYmVyP3QubG9jYXRpb24ubGluZU51bWJlcisxOnZvaWQgMDtyZXR1cm57ZmlsZW5hbWU6cixtb2R1bGU6ZShyKSxmdW5jdGlvbjp0LmZ1bmN0aW9uTmFtZXx8Ij8iLGNvbG5vOm8sbGluZW5vOmksaW5fYXBwOnI/S3Qocik6dm9pZCAwfX0odCxlLmdldCh0LmxvY2F0aW9uLnNjcmlwdElkKSxzKSksdT1zZXRUaW1lb3V0KCgpPT57eW4oYykudGhlbihudWxsLCgpPT57Zm4oIlNlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZC4iKX0pfSw1ZTMpO24ucG9zdCgiUnVudGltZS5ldmFsdWF0ZSIse2V4cHJlc3Npb246Imdsb2JhbC5fX1NFTlRSWV9HRVRfU0NPUEVTX18oKTsiLHNpbGVudDohMCxyZXR1cm5CeVZhbHVlOiEwfSwodCxlKT0+e3QmJmZuKGBFcnJvciBleGVjdXRpbmcgc2NyaXB0OiAnJHt0Lm1lc3NhZ2V9J2ApLGNsZWFyVGltZW91dCh1KTtjb25zdCByPWU/LnJlc3VsdD9lLnJlc3VsdC52YWx1ZTp2b2lkIDA7bi5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKSxuLnBvc3QoIkRlYnVnZ2VyLmRpc2FibGUiKSx5bihjLHIpLnRoZW4obnVsbCwoKT0+e2ZuKCJTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuIil9KX0pfWNhdGNoKHQpe3Rocm93IG4ucG9zdCgiRGVidWdnZXIucmVzdW1lIiksbi5wb3N0KCJEZWJ1Z2dlci5kaXNhYmxlIiksdH19KSxibj0oKT0+e3RyeXtuLnBvc3QoIkRlYnVnZ2VyLmVuYWJsZSIsKCk9PntuLnBvc3QoIkRlYnVnZ2VyLnBhdXNlIil9KX1jYXRjaHt9fX1jb25zdHtwb2xsOnZufT1mdW5jdGlvbih0LG4sZSxyKXtjb25zdCBvPXQoKTtsZXQgaT0hMSxzPSEwO3JldHVybiBzZXRJbnRlcnZhbCgoKT0+e2NvbnN0IHQ9by5nZXRUaW1lTXMoKTshMT09PWkmJnQ+bitlJiYoaT0hMCxzJiZyKCkpLHQ8bitlJiYoaT0hMSl9LDIwKSx7cG9sbDooKT0+e28ucmVzZXQoKX0sZW5hYmxlZDp0PT57cz10fX19KGZ1bmN0aW9uKCl7bGV0IHQ9cHJvY2Vzcy5ocnRpbWUoKTtyZXR1cm57Z2V0VGltZU1zOigpPT57Y29uc3RbbixlXT1wcm9jZXNzLmhydGltZSh0KTtyZXR1cm4gTWF0aC5mbG9vcigxZTMqbitlLzFlNil9LHJlc2V0OigpPT57dD1wcm9jZXNzLmhydGltZSgpfX19LHNuLnBvbGxJbnRlcnZhbCxzbi5hbnJUaHJlc2hvbGQsZnVuY3Rpb24oKXtmbigiV2F0Y2hkb2cgdGltZW91dCIpLGJuPyhmbigiUGF1c2luZyBkZWJ1Z2dlciB0byBjYXB0dXJlIHN0YWNrIHRyYWNlIiksYm4oKSk6KGZuKCJDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlIikseW4oKS50aGVuKG51bGwsKCk9PntmbigiU2VuZGluZyBBTlIgZXZlbnQgZmFpbGVkIG9uIHdhdGNoZG9nIHRpbWVvdXQuIil9KSl9KTtlPy5vbigibWVzc2FnZSIsdD0+e3Quc2Vzc2lvbiYmKGNuPVkodC5zZXNzaW9uKSksdC5kZWJ1Z0ltYWdlcyYmKGFuPXQuZGVidWdJbWFnZXMpLHZuKCl9KTs=";function c(e,...t){i.debug.log(`[ANR] ${e}`,...t)}function p(){let e=i.getCombinedScopeData(i.getIsolationScope(),i.getCurrentScope());return e.attachments=[],e.eventProcessors=[],e}async function _(e){let t={message:"ANR"},n={};for(let r of e.getEventProcessors()){if(null===t)break;t=await r(t,n)}return t?.contexts||{}}async function T(t,n){let r=t.getDsn();if(!r)return()=>{};let a=await _(t);delete a.app?.app_memory,delete a.device?.free_memory;let s=t.getOptions(),l=t.getSdkMetadata()||{};l.sdk&&(l.sdk.integrations=s.integrations.map(e=>e.name));let p={debug:i.debug.isEnabled(),dsn:r,tunnel:s.tunnel,environment:s.environment||"production",release:s.release,dist:s.dist,sdkMetadata:l,appRootPath:n.appRootPath,pollInterval:n.pollInterval||50,anrThreshold:n.anrThreshold||5e3,captureStackTrace:!!n.captureStackTrace,maxAnrEvents:n.maxAnrEvents||1,staticTags:n.staticTags||{},contexts:a};if(p.captureStackTrace){let t=await e.A(234177);t.url()||t.open(0)}let T=new o.Worker(new URL(`data:application/javascript;base64,${u}`),{workerData:p,execArgv:[],env:{...process.env,NODE_OPTIONS:void 0}});process.on("exit",()=>{T.terminate()});let d=setInterval(()=>{try{let e=i.getIsolationScope().getSession(),t=e?{...e,toJSON:void 0}:void 0;T.postMessage({session:t,debugImages:i.getFilenameToDebugIdMap(s.stackParser)})}catch{}},p.pollInterval);return d.unref(),T.on("message",e=>{"session-ended"===e&&(c("ANR event sent from ANR worker. Clearing session in this thread."),i.getIsolationScope().setSession(void 0))}),T.once("error",e=>{clearInterval(d),c("ANR worker error",e)}),T.once("exit",e=>{clearInterval(d),c("ANR worker exit",e)}),T.unref(),()=>{T.terminate(),clearInterval(d)}}n.anrIntegration=i.defineIntegration((e={})=>{let t,n;if(a.NODE_VERSION.major<16||16===a.NODE_VERSION.major&&a.NODE_VERSION.minor<17)throw Error("ANR detection requires Node 16.17.0 or later");return i.GLOBAL_OBJ.__SENTRY_GET_SCOPES__=p,{name:"Anr",startWorker:()=>{!t&&n&&(t=T(n,e))},stopWorker:()=>{t&&t.then(e=>{e(),t=void 0})},async setup(t){n=t,e.captureStackTrace&&await s.isDebuggerEnabled()&&(i.debug.warn("ANR captureStackTrace has been disabled because the debugger was already enabled"),e.captureStackTrace=!1),setImmediate(()=>this.startWorker())}}}),n.base64WorkerScript=u,n.disableAnrDetectionForCallback=function(e){let t=i.getClient()?.getIntegrationByName("Anr");if(!t)return e();t.stopWorker();let n=e();return l(n)?n.finally(()=>t.startWorker()):(t.startWorker(),n)}},770905,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(812057),o=e.r(976285);n.captureLog=function(e,...t){let[n,i,a,s]=t;if(Array.isArray(i)){let t={...a};t["sentry.message.template"]=n,i.forEach((e,n)=>{t[`sentry.message.parameter.${n}`]=e});let l=r.format(n,...i);o._INTERNAL_captureLog({level:e,message:l,attributes:t},s?.scope)}else o._INTERNAL_captureLog({level:e,message:n,attributes:i},a?.scope??s?.scope)}},664181,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(770905);n.fmt=e.r(976285).fmt,n.debug=function(...e){r.captureLog("debug",...e)},n.error=function(...e){r.captureLog("error",...e)},n.fatal=function(...e){r.captureLog("fatal",...e)},n.info=function(...e){r.captureLog("info",...e)},n.trace=function(...e){r.captureLog("trace",...e)},n.warn=function(...e){r.captureLog("warn",...e)}},140469,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(60438),o=e.r(976285);n.nodeRuntimeMetricsIntegration=o.defineIntegration((e={})=>{let t,n,i,a,s=e.collectionIntervalMs??3e4,l={cpuUtilization:!0,memHeapUsed:!0,memHeapTotal:!0,memRss:!0,eventLoopDelayP50:!0,eventLoopDelayP99:!0,eventLoopUtilization:!0,uptime:!0,cpuTime:!1,memExternal:!1,eventLoopDelayMin:!1,eventLoopDelayMax:!1,eventLoopDelayMean:!1,eventLoopDelayP90:!1,...e.collect},u=l.eventLoopDelayP99||l.eventLoopDelayMin||l.eventLoopDelayMax||l.eventLoopDelayMean||l.eventLoopDelayP50||l.eventLoopDelayP90,c=l.cpuUtilization||l.cpuTime,p=0,_=e=>Math.max(0,(e-1e7)/1e9),T={attributes:{"sentry.origin":"auto.node.runtime_metrics"}},d={unit:"byte",attributes:{"sentry.origin":"auto.node.runtime_metrics"}},E={unit:"second",attributes:{"sentry.origin":"auto.node.runtime_metrics"}};function S(){let e=o._INTERNAL_safeDateNow(),t=e-p;if(c&&void 0!==n){let e=process.cpuUsage(n);l.cpuTime&&(o.metrics.gauge("node.runtime.cpu.user",e.user/1e6,E),o.metrics.gauge("node.runtime.cpu.system",e.system/1e6,E)),l.cpuUtilization&&t>0&&o.metrics.gauge("node.runtime.cpu.utilization",(e.user+e.system)/(1e3*t),T),n=process.cpuUsage()}if(l.memRss||l.memHeapUsed||l.memHeapTotal||l.memExternal){let e=process.memoryUsage();l.memRss&&o.metrics.gauge("node.runtime.mem.rss",e.rss,d),l.memHeapUsed&&o.metrics.gauge("node.runtime.mem.heap_used",e.heapUsed,d),l.memHeapTotal&&o.metrics.gauge("node.runtime.mem.heap_total",e.heapTotal,d),l.memExternal&&(o.metrics.gauge("node.runtime.mem.external",e.external,d),o.metrics.gauge("node.runtime.mem.array_buffers",e.arrayBuffers,d))}if(u&&a&&(l.eventLoopDelayMin&&o.metrics.gauge("node.runtime.event_loop.delay.min",_(a.min),E),l.eventLoopDelayMax&&o.metrics.gauge("node.runtime.event_loop.delay.max",_(a.max),E),l.eventLoopDelayMean&&o.metrics.gauge("node.runtime.event_loop.delay.mean",_(a.mean),E),l.eventLoopDelayP50&&o.metrics.gauge("node.runtime.event_loop.delay.p50",_(a.percentile(50)),E),l.eventLoopDelayP90&&o.metrics.gauge("node.runtime.event_loop.delay.p90",_(a.percentile(90)),E),l.eventLoopDelayP99&&o.metrics.gauge("node.runtime.event_loop.delay.p99",_(a.percentile(99)),E),a.reset()),l.eventLoopUtilization&&void 0!==i){let e=r.performance.eventLoopUtilization(),t=r.performance.eventLoopUtilization(e,i);o.metrics.gauge("node.runtime.event_loop.utilization",t.utilization,T),i=e}l.uptime&&t>0&&o.metrics.count("node.runtime.process.uptime",t/1e3,E),p=e}return{name:"NodeRuntimeMetrics",setup(){if(u){a?.disable();try{(a=r.monitorEventLoopDelay({resolution:10})).enable()}catch{a=void 0}}c&&(n=process.cpuUsage()),l.eventLoopUtilization&&(i=r.performance.eventLoopUtilization()),p=o._INTERNAL_safeDateNow(),t&&clearInterval(t),t=o._INTERNAL_safeUnref(setInterval(S,s))}}})},573841,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(747535),i=e.r(770905),a=["trace","debug","info","warn","error","fatal"],s=Symbol.for("level"),l=Symbol.for("message"),u=Symbol.for("splat"),c={silly:"trace",debug:"debug",verbose:"debug",http:"debug",info:"info",notice:"info",warn:"warn",warning:"warn",error:"error",emerg:"fatal",alert:"fatal",crit:"fatal"};n.createSentryWinstonTransport=function(e,t){return class extends e{constructor(e){super(e),this._levels=new Set(t?.levels??a)}log(e,n){try{var a;if(setImmediate(()=>{this.emit("logged",e)}),a=e,"object"!=typeof a||null==a)return;let n=e[s],{level:p,message:_,timestamp:T,...d}=e;d[s]=void 0,d[l]=void 0,d[u]=void 0;let E=t?.customLevelMap?.[n],S=c[n],A=E??S??"info";this._levels.has(A)?i.captureLog(A,_,{...d,"sentry.origin":"auto.log.winston"}):E||S||!o.DEBUG_BUILD||r.debug.log(`Winston log level ${n} is not captured by Sentry. Please add ${n} to the "customLevelMap" option of the Sentry Winston transport.`)}catch{}n&&n()}}}},535302,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(677652),o=e.r(976285),i=Symbol("sentry-track-pino-logger");function a(e,t,n){let r=Object.getOwnPropertySymbols(e),o=`Symbol(${t})`;for(let t of r)if(t.toString()===o){let r=e[t];return"string"==typeof r?r:n}return n}let s={levels:[],handled:!0},l={levels:["trace","debug","info","warn","error","fatal"]};n.pinoIntegration=Object.assign(o.defineIntegration((e={})=>{let t={autoInstrument:!1!==e.autoInstrument,error:{...s,...e.error},log:{...l,...e.log}};return{name:"Pino",setup:e=>{let n=!!e.getOptions().enableLogs;r.tracingChannel("pino_asJson").end.subscribe(e=>{let{instance:r,arguments:s,result:l}=e;!function(e,r,s){let l;if("track"!==(l=e[i])&&("ignore"===l||!t.autoInstrument))return;let u=function(e){let{level:t,time:n,pid:r,hostname:o,...i}=e;return i}(s),[c,p,_]=r,T=e?.levels?.labels?.[_]||"info",d=a(e,"pino.messageKey","msg"),E=p||u?.[d]||"";if(n&&t.log.levels.includes(T)){let e={...u,"sentry.origin":"auto.log.pino","pino.logger.level":_};o._INTERNAL_captureLog({level:T,message:E,attributes:e})}if(t.error.levels.includes(T)){let n={level:o.severityLevelFromString(T)};o.withScope(r=>{r.addEventProcessor(e=>(e.logger="pino",o.addExceptionMechanism(e,{handled:t.error.handled,type:"auto.log.pino"}),e));let i=c[a(e,"pino.errorKey","err")];i?o.captureException(i,n):o.captureMessage(E,n)})}}(r,s,JSON.parse(l))})}}}),{trackLogger(e){e&&"object"==typeof e&&"levels"in e&&(e[i]="track")},untrackLogger(e){e&&"object"==typeof e&&"levels"in e&&(e[i]="ignore")}})},167983,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.addOriginToSpan=function(e,t){e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,t)}},997624,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.getRequestUrl=function(e){let t=e.protocol||"",n=e.hostname||e.host||"",r=!e.port||80===e.port||443===e.port||/^(.*):(\d+)$/.test(n)?"":`:${e.port}`,o=e.path?e.path:"/";return`${t}//${n}${r}${o}`}},880191,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];n.replaceCronNames=function(e){return r.reduce((e,[t,n])=>e.replace(RegExp(t,"gi"),n),e)}},990611,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(880191),i="Automatic instrumentation of CronJob only supports crontab string";n.instrumentCron=function(e,t){let n=!1;return new Proxy(e,{construct(e,a){let[s,l,u,c,p,..._]=a;if("string"!=typeof s)throw Error(i);if(n)throw Error(`A job named '${t}' has already been scheduled`);n=!0;let T=o.replaceCronNames(s);return new e(s,async function(e,n){return r.withMonitor(t,async()=>{try{await l(e,n)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),e}},{schedule:{type:"crontab",value:T},timezone:p||void 0})},u,c,p,..._)},get:(e,a)=>"from"===a?a=>{let{cronTime:s,onTick:l,timeZone:u}=a;if("string"!=typeof s)throw Error(i);if(n)throw Error(`A job named '${t}' has already been scheduled`);n=!0;let c=o.replaceCronNames(s);return a.onTick=async(e,n)=>r.withMonitor(t,async()=>{try{await l(e,n)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),e}},{schedule:{type:"crontab",value:c},timezone:u||void 0}),e.from(a)}:e[a]})}},21175,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(880191);n.instrumentNodeCron=function(e,t={}){return new Proxy(e,{get:(e,n)=>"schedule"===n&&e.schedule?new Proxy(e.schedule,{apply(e,n,i){let[a,s,l]=i,u=l?.name,c=l?.timezone;if(!u)throw Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');let p=async(...e)=>r.withMonitor(u,async()=>{try{return await s(...e)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.node-cron.instrumentNodeCron"}}),e}},{schedule:{type:"crontab",value:o.replaceCronNames(a)},timezone:c,...t});return e.apply(n,[a,p,l])}}):e[n]})}},429710,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(880191);n.instrumentNodeSchedule=function(e){return new Proxy(e,{get:(e,t)=>"scheduleJob"===t?new Proxy(e.scheduleJob,{apply(e,t,n){let[i,a,s]=n;if("string"!=typeof i||"string"!=typeof a||"function"!=typeof s)throw Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");async function l(){return r.withMonitor(i,async()=>{await s?.()},{schedule:{type:"crontab",value:o.replaceCronNames(a)}})}return e.apply(t,[i,a,l])}}):e[t]})}},206871,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(990611),o=e.r(21175),i=e.r(429710);n.cron={instrumentCron:r.instrumentCron,instrumentNodeCron:o.instrumentNodeCron,instrumentNodeSchedule:i.instrumentNodeSchedule}},625331,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(780200),o=e.r(391499),i=e.r(773766),a=e.r(866240),s=e.r(642089),l=e.r(725875),u=e.r(252436),c=e.r(313416),p=e.r(553838),_=e.r(576071),T=e.r(211587),d=e.r(367920),E=e.r(145844),S=e.r(687123),A=e.r(779607),g=e.r(498721),m=e.r(976285),h=e.r(664181),R=e.r(356044),f=e.r(140469),N=e.r(179334),I=e.r(179508),O=e.r(950051),y=e.r(621353),b=e.r(438647),C=e.r(254565),M=e.r(439390),P=e.r(475008),L=e.r(573841),v=e.r(535302),U=e.r(315564),D=e.r(941438),G=e.r(167983),B=e.r(997624),x=e.r(652203),V=e.r(234848),w=e.r(709895),H=e.r(136001),k=e.r(206871),Y=e.r(860015);n.httpIntegration=r.httpIntegration,n.httpServerSpansIntegration=o.httpServerSpansIntegration,n.httpServerIntegration=i.httpServerIntegration,n.SentryHttpInstrumentation=a.SentryHttpInstrumentation,n.nativeNodeFetchIntegration=s.nativeNodeFetchIntegration,n.SentryNodeFetchInstrumentation=l.SentryNodeFetchInstrumentation,n.SentryContextManager=u.SentryContextManager,n.setupOpenTelemetryLogger=c.setupOpenTelemetryLogger,n.INSTRUMENTED=p.INSTRUMENTED,n.generateInstrumentOnce=p.generateInstrumentOnce,n.instrumentWhenWrapped=p.instrumentWhenWrapped,n.getDefaultIntegrations=_.getDefaultIntegrations,n.init=_.init,n.initWithoutDefaultIntegrations=_.initWithoutDefaultIntegrations,n.validateOpenTelemetrySetup=_.validateOpenTelemetrySetup,n.setIsolationScope=T.setIsolationScope,n.NodeClient=d.NodeClient,n.ensureIsWrapped=E.ensureIsWrapped,n.processSessionIntegration=S.processSessionIntegration,n.setNodeAsyncContextStrategy=A.setOpenTelemetryContextAsyncContextStrategy,n.anrIntegration=g.anrIntegration,n.disableAnrDetectionForCallback=g.disableAnrDetectionForCallback,n.SDK_VERSION=m.SDK_VERSION,n.SEMANTIC_ATTRIBUTE_SENTRY_OP=m.SEMANTIC_ATTRIBUTE_SENTRY_OP,n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=m.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=m.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=m.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n.Scope=m.Scope,n.addBreadcrumb=m.addBreadcrumb,n.addEventProcessor=m.addEventProcessor,n.addIntegration=m.addIntegration,n.captureCheckIn=m.captureCheckIn,n.captureConsoleIntegration=m.captureConsoleIntegration,n.captureEvent=m.captureEvent,n.captureException=m.captureException,n.captureFeedback=m.captureFeedback,n.captureMessage=m.captureMessage,n.captureSession=m.captureSession,n.close=m.close,n.consoleIntegration=m.consoleIntegration,n.consoleLoggingIntegration=m.consoleLoggingIntegration,n.continueTrace=m.continueTrace,n.createConsolaReporter=m.createConsolaReporter,n.createTransport=m.createTransport,n.dedupeIntegration=m.dedupeIntegration,n.endSession=m.endSession,n.envToBool=m.envToBool,n.eventFiltersIntegration=m.eventFiltersIntegration,n.extraErrorDataIntegration=m.extraErrorDataIntegration,n.featureFlagsIntegration=m.featureFlagsIntegration,n.flush=m.flush,n.functionToStringIntegration=m.functionToStringIntegration,n.getActiveSpan=m.getActiveSpan,n.getClient=m.getClient,n.getCurrentScope=m.getCurrentScope,n.getGlobalScope=m.getGlobalScope,n.getIsolationScope=m.getIsolationScope,n.getRootSpan=m.getRootSpan,n.getSpanDescendants=m.getSpanDescendants,n.getSpanStatusFromHttpCode=m.getSpanStatusFromHttpCode,n.getTraceData=m.getTraceData,n.getTraceMetaTags=m.getTraceMetaTags,n.inboundFiltersIntegration=m.inboundFiltersIntegration,n.instrumentSupabaseClient=m.instrumentSupabaseClient,n.isEnabled=m.isEnabled,n.isInitialized=m.isInitialized,n.lastEventId=m.lastEventId,n.linkedErrorsIntegration=m.linkedErrorsIntegration,n.metrics=m.metrics,n.parameterize=m.parameterize,n.profiler=m.profiler,n.requestDataIntegration=m.requestDataIntegration,n.rewriteFramesIntegration=m.rewriteFramesIntegration,n.setContext=m.setContext,n.setCurrentClient=m.setCurrentClient,n.setExtra=m.setExtra,n.setExtras=m.setExtras,n.setHttpStatus=m.setHttpStatus,n.setMeasurement=m.setMeasurement,n.setTag=m.setTag,n.setTags=m.setTags,n.setUser=m.setUser,n.spanToBaggageHeader=m.spanToBaggageHeader,n.spanToJSON=m.spanToJSON,n.spanToTraceHeader=m.spanToTraceHeader,n.startInactiveSpan=m.startInactiveSpan,n.startNewTrace=m.startNewTrace,n.startSession=m.startSession,n.startSpan=m.startSpan,n.startSpanManual=m.startSpanManual,n.supabaseIntegration=m.supabaseIntegration,n.suppressTracing=m.suppressTracing,n.trpcMiddleware=m.trpcMiddleware,n.updateSpanName=m.updateSpanName,n.withActiveSpan=m.withActiveSpan,n.withIsolationScope=m.withIsolationScope,n.withMonitor=m.withMonitor,n.withScope=m.withScope,n.wrapMcpServerWithSentry=m.wrapMcpServerWithSentry,n.zodErrorsIntegration=m.zodErrorsIntegration,n.logger=h,n.nodeContextIntegration=R.nodeContextIntegration,n.nodeRuntimeMetricsIntegration=f.nodeRuntimeMetricsIntegration,n.contextLinesIntegration=N.contextLinesIntegration,n.localVariablesIntegration=I.localVariablesIntegration,n.modulesIntegration=O.modulesIntegration,n.onUncaughtExceptionIntegration=y.onUncaughtExceptionIntegration,n.onUnhandledRejectionIntegration=b.onUnhandledRejectionIntegration,n.spotlightIntegration=C.spotlightIntegration,n.systemErrorIntegration=M.systemErrorIntegration,n.childProcessIntegration=P.childProcessIntegration,n.createSentryWinstonTransport=L.createSentryWinstonTransport,n.pinoIntegration=v.pinoIntegration,n.defaultStackParser=U.defaultStackParser,n.getSentryRelease=U.getSentryRelease,n.createGetModuleFromFilename=D.createGetModuleFromFilename,n.addOriginToSpan=G.addOriginToSpan,n.getRequestUrl=B.getRequestUrl,n.initializeEsmLoader=x.initializeEsmLoader,n.isCjs=V.isCjs,n.createMissingInstrumentationContext=w.createMissingInstrumentationContext,n.makeNodeTransport=H.makeNodeTransport,n.cron=k.cron,n.NODE_VERSION=Y.NODE_VERSION},738190,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(693949),i=e.r(976285),a=e.r(625331),s="Http",l="@opentelemetry_sentry-patched/instrumentation-http",u=22===a.NODE_VERSION.major&&a.NODE_VERSION.minor>=12||23===a.NODE_VERSION.major&&a.NODE_VERSION.minor>=2||a.NODE_VERSION.major>=24,c=a.generateInstrumentOnce(`${s}.sentry`,e=>new a.SentryHttpInstrumentation(e)),p=a.generateInstrumentOnce(s,e=>{let t=new o.HttpInstrumentation({...e,disableIncomingRequestInstrumentation:!0});try{t._diag=r.diag.createComponentLogger({namespace:l}),t.instrumentationName=l}catch{}try{let e={get:()=>!1,set:()=>{}};Object.defineProperty(t,"_httpPatched",e),Object.defineProperty(t,"_httpsPatched",e)}catch{}return t});function _(e,t={}){return"boolean"==typeof e.spans?e.spans:!t.skipOpenTelemetrySetup&&(!!i.hasSpansEnabled(t)||!u)}let T=i.defineIntegration((e={})=>{let t=e.spans??!0,n=e.disableIncomingRequestSpans,r={sessions:e.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:e.sessionFlushingDelayMS,ignoreRequestBody:e.ignoreIncomingRequestBody,maxRequestBodySize:e.maxIncomingRequestBodySize},o={ignoreIncomingRequests:e.ignoreIncomingRequests,ignoreStaticAssets:e.ignoreStaticAssets,ignoreStatusCodes:e.dropSpansForIncomingRequestStatusCodes,instrumentation:e.instrumentation,onSpanCreated:e.incomingRequestSpanHook},l=a.httpServerIntegration(r),T=a.httpServerSpansIntegration(o),d=t&&!n;return{name:s,setup(e){let t=e.getOptions();d&&i.hasSpansEnabled(t)&&T.setup(e)},setupOnce(){let t=_(e,i.getClient()?.getOptions()||{});l.setupOnce(),c({breadcrumbs:e.breadcrumbs,propagateTraceInOutgoingRequests:"boolean"==typeof e.tracePropagation?e.tracePropagation:u||!t,createSpansForOutgoingRequests:u,spans:e.spans,ignoreOutgoingRequests:e.ignoreOutgoingRequests,outgoingRequestHook:(t,n)=>{let r=a.getRequestUrl(n);if(r.startsWith("data:")){let e=i.stripDataUrlContent(r);t.setAttribute("http.url",e),t.setAttribute(i.SEMANTIC_ATTRIBUTE_URL_FULL,e),t.updateName(`${n.method||"GET"} ${e}`)}e.instrumentation?.requestHook?.(t,n)},outgoingResponseHook:e.instrumentation?.responseHook,outgoingRequestApplyCustomAttributes:e.instrumentation?.applyCustomAttributesOnSpan}),t&&p(function(e={}){return{disableOutgoingRequestInstrumentation:u,ignoreOutgoingRequestHook:t=>{let n=a.getRequestUrl(t);if(!n)return!1;let r=e.ignoreOutgoingRequests;return!!r?.(n,t)},requireParentforOutgoingSpans:!1,requestHook:(t,n)=>{a.addOriginToSpan(t,"auto.http.otel.http");let r=a.getRequestUrl(n);if(r.startsWith("data:")){let e=i.stripDataUrlContent(r);t.setAttribute("http.url",e),t.setAttribute(i.SEMANTIC_ATTRIBUTE_URL_FULL,e),t.updateName(`${n.method||"GET"} ${e}`)}e.instrumentation?.requestHook?.(t,n)},responseHook:(t,n)=>{e.instrumentation?.responseHook?.(t,n)},applyCustomAttributesOnSpan:(t,n,r)=>{e.instrumentation?.applyCustomAttributesOnSpan?.(t,n,r)}}}(e))},processEvent:e=>T.processEvent(e)}});n._shouldUseOtelHttpInstrumentation=_,n.httpIntegration=T,n.instrumentOtelHttp=p,n.instrumentSentryHttp=c},105458,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.24.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-undici"},383757,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.UndiciInstrumentation=void 0;let r=e.r(154993),o=e.r(792509),i=e.r(204780),a=e.r(357762),s=e.r(385692),l=e.r(808119),u=e.r(105458);class c extends i.InstrumentationBase{_recordFromReq=new WeakMap;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e)}init(){}disable(){super.disable(),this._channelSubs.forEach(e=>e.unsubscribe()),this._channelSubs.length=0}enable(){super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0||(this.subscribeToChannel("undici:request:create",this.onRequestCreated.bind(this)),this.subscribeToChannel("undici:client:sendHeaders",this.onRequestHeaders.bind(this)),this.subscribeToChannel("undici:request:headers",this.onResponseHeaders.bind(this)),this.subscribeToChannel("undici:request:trailers",this.onDone.bind(this)),this.subscribeToChannel("undici:request:error",this.onError.bind(this)))}_updateMetricInstruments(){this._httpClientDurationHistogram=this.meter.createHistogram(l.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Measures the duration of outbound HTTP requests.",unit:"s",valueType:a.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10]}})}subscribeToChannel(e,t){let n,[o,i]=process.version.replace("v","").split(".").map(e=>Number(e));if(o>18||18===o&&i>=19)r.subscribe?.(e,t),n=()=>r.unsubscribe?.(e,t);else{let o=r.channel(e);o.subscribe(t),n=()=>o.unsubscribe(t)}this._channelSubs.push({name:e,unsubscribe:n})}parseRequestHeaders(e){let t=new Map;if(Array.isArray(e.headers))for(let n=0;n!u||"CONNECT"===e.method||r.ignoreRequestHook?.(e),e=>e&&this._diag.error("caught ignoreRequestHook error: ",e),!0))return;let c=(0,s.hrTime)();try{t=new o.URL(e.path,e.origin)}catch(e){this._diag.warn("could not determine url.full:",e);return}let p=t.protocol.replace(":",""),_=this.getRequestMethod(e.method),T={[l.ATTR_HTTP_REQUEST_METHOD]:_,[l.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]:e.method,[l.ATTR_URL_FULL]:t.toString(),[l.ATTR_URL_PATH]:t.pathname,[l.ATTR_URL_QUERY]:t.search,[l.ATTR_URL_SCHEME]:p},d=t.hostname,E=t.port||({https:"443",http:"80"})[p];T[l.ATTR_SERVER_ADDRESS]=d,E&&!isNaN(Number(E))&&(T[l.ATTR_SERVER_PORT]=Number(E));let S=this.parseRequestHeaders(e).get("user-agent");if(S){let e=Array.isArray(S)?S[S.length-1]:S;T[l.ATTR_USER_AGENT_ORIGINAL]=e}let A=(0,i.safeExecuteInTheMiddle)(()=>r.startSpanHook?.(e),e=>e&&this._diag.error("caught startSpanHook error: ",e),!0);A&&Object.entries(A).forEach(([e,t])=>{T[e]=t});let g=a.context.active(),m=a.trace.getSpan(g);n=!r.requireParentforSpans||m&&a.trace.isSpanContextValid(m.spanContext())?this.tracer.startSpan("_OTHER"===_?"HTTP":_,{kind:a.SpanKind.CLIENT,attributes:T},g):a.trace.wrapSpanContext(a.INVALID_SPAN_CONTEXT),(0,i.safeExecuteInTheMiddle)(()=>r.requestHook?.(n,e),e=>e&&this._diag.error("caught requestHook error: ",e),!0);let h=a.trace.setSpan(a.context.active(),n),R={};a.propagation.inject(h,R);let f=Object.entries(R);for(let t=0;te.toLowerCase()));for(let[n,r]of this.parseRequestHeaders(e).entries())if(t.has(n)){let e=Array.isArray(r)?r:[r];s[`http.request.header.${n}`]=e}}o.setAttributes(s)}onResponseHeaders({request:e,response:t}){let n=this._recordFromReq.get(e);if(!n)return;let{span:r,attributes:o}=n,s={[l.ATTR_HTTP_RESPONSE_STATUS_CODE]:t.statusCode},u=this.getConfig();if((0,i.safeExecuteInTheMiddle)(()=>u.responseHook?.(r,{request:e,response:t}),e=>e&&this._diag.error("caught responseHook error: ",e),!0),u.headersToSpanAttributes?.responseHeaders){let e=new Set;u.headersToSpanAttributes?.responseHeaders.forEach(t=>e.add(t.toLowerCase()));for(let n=0;n=400?a.SpanStatusCode.ERROR:a.SpanStatusCode.UNSET}),n.attributes=Object.assign(o,s)}onDone({request:e}){let t=this._recordFromReq.get(e);if(!t)return;let{span:n,attributes:r,startTime:o}=t;n.end(),this._recordFromReq.delete(e),this.recordRequestDuration(r,o)}onError({request:e,error:t}){let n=this._recordFromReq.get(e);if(!n)return;let{span:r,attributes:o,startTime:i}=n;r.recordException(t),r.setStatus({code:a.SpanStatusCode.ERROR,message:t.message}),r.end(),this._recordFromReq.delete(e),o[l.ATTR_ERROR_TYPE]=t.message,this.recordRequestDuration(o,i)}recordRequestDuration(e,t){let n={};[l.ATTR_HTTP_RESPONSE_STATUS_CODE,l.ATTR_HTTP_REQUEST_METHOD,l.ATTR_SERVER_ADDRESS,l.ATTR_SERVER_PORT,l.ATTR_URL_SCHEME,l.ATTR_ERROR_TYPE].forEach(t=>{t in e&&(n[t]=e[t])});let r=(0,s.hrTimeToMilliseconds)((0,s.hrTimeDuration)(t,(0,s.hrTime)()))/1e3;this._httpClientDurationHistogram.record(r,n)}getRequestMethod(e){return e.toUpperCase()in{CONNECT:!0,OPTIONS:!0,HEAD:!0,GET:!0,POST:!0,PUT:!0,PATCH:!0,DELETE:!0,TRACE:!0,QUERY:!0}?e.toUpperCase():"_OTHER"}}n.UndiciInstrumentation=c},919221,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.UndiciInstrumentation=void 0;var r=e.r(383757);Object.defineProperty(n,"UndiciInstrumentation",{enumerable:!0,get:function(){return r.UndiciInstrumentation}})},354258,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(919221),o=e.r(976285),i=e.r(625331),a="NodeFetch",s=i.generateInstrumentOnce(a,r.UndiciInstrumentation,e=>p(e)),l=i.generateInstrumentOnce(`${a}.sentry`,i.SentryNodeFetchInstrumentation,e=>e),u=o.defineIntegration((e={})=>({name:"NodeFetch",setupOnce(){(function(e,t={}){return"boolean"==typeof e.spans?e.spans:!t.skipOpenTelemetrySetup&&o.hasSpansEnabled(t)})(e,o.getClient()?.getOptions())&&s(e),l(e)}}));function c(e,t="/"){let n=`${e}`;return n.endsWith("/")&&t.startsWith("/")?`${n}${t.slice(1)}`:n.endsWith("/")||t.startsWith("/")?`${n}${t}`:`${n}/${t}`}function p(e={}){return{requireParentforSpans:!1,ignoreRequestHook:t=>{let n=c(t.origin,t.path),r=e.ignoreOutgoingRequests;return!!(r&&n&&r(n))},startSpanHook:e=>{let t=c(e.origin,e.path);if(t.startsWith("data:")){let n=o.stripDataUrlContent(t);return{[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch","http.url":n,[o.SEMANTIC_ATTRIBUTE_URL_FULL]:n,[o.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]:`${e.method||"GET"} ${n}`}}return{[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch"}},requestHook:e.requestHook,responseHook:e.responseHook,headersToSpanAttributes:e.headersToSpanAttributes}}n._getConfigWithDefaults=p,n.nativeNodeFetchIntegration=u},866744,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.33.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-fs"},109429,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SYNC_FUNCTIONS=n.CALLBACK_FUNCTIONS=n.PROMISE_FUNCTIONS=void 0,n.PROMISE_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],n.CALLBACK_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","exists","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],n.SYNC_FUNCTIONS=["accessSync","appendFileSync","chmodSync","chownSync","copyFileSync","cpSync","existsSync","lchownSync","linkSync","lstatSync","lutimesSync","mkdirSync","mkdtempSync","opendirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","unlinkSync","utimesSync","writeFileSync"]},349982,(e,t,n)=>{"use strict";function r(e){let t=e.split(".");if(!(t.length>1))return[e];if(2!==t.length)throw Error(`Invalid member function name ${e}`);return t}Object.defineProperty(n,"__esModule",{value:!0}),n.indexFs=n.splitTwoLevels=void 0,n.splitTwoLevels=r,n.indexFs=function(e,t){if(!t)throw Error(JSON.stringify({member:t}));let[n,o]=r(t);return o?{objectToPatch:e[n],functionNameToPatch:o}:{objectToPatch:e,functionNameToPatch:n}}},982860,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.FsInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(866744),s=e.r(109429),l=e.r(224361),u=e.r(349982);function c(e,t){return Object.assign(e,t)}class p extends i.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return[new i.InstrumentationNodeModuleDefinition("fs",["*"],e=>{for(let t of s.SYNC_FUNCTIONS){let{objectToPatch:n,functionNameToPatch:r}=(0,u.indexFs)(e,t);(0,i.isWrapped)(n[r])&&this._unwrap(n,r),this._wrap(n,r,this._patchSyncFunction.bind(this,t))}for(let t of s.CALLBACK_FUNCTIONS){let{objectToPatch:n,functionNameToPatch:r}=(0,u.indexFs)(e,t);if((0,i.isWrapped)(n[r])&&this._unwrap(n,r),"exists"===t){this._wrap(n,r,this._patchExistsCallbackFunction.bind(this,t));continue}this._wrap(n,r,this._patchCallbackFunction.bind(this,t))}for(let t of s.PROMISE_FUNCTIONS)(0,i.isWrapped)(e.promises[t])&&this._unwrap(e.promises,t),this._wrap(e.promises,t,this._patchPromiseFunction.bind(this,t));return e},e=>{if(void 0!==e){for(let t of s.SYNC_FUNCTIONS){let{objectToPatch:n,functionNameToPatch:r}=(0,u.indexFs)(e,t);(0,i.isWrapped)(n[r])&&this._unwrap(n,r)}for(let t of s.CALLBACK_FUNCTIONS){let{objectToPatch:n,functionNameToPatch:r}=(0,u.indexFs)(e,t);(0,i.isWrapped)(n[r])&&this._unwrap(n,r)}for(let t of s.PROMISE_FUNCTIONS)(0,i.isWrapped)(e.promises[t])&&this._unwrap(e.promises,t)}}),new i.InstrumentationNodeModuleDefinition("fs/promises",["*"],e=>{for(let t of s.PROMISE_FUNCTIONS)(0,i.isWrapped)(e[t])&&this._unwrap(e,t),this._wrap(e,t,this._patchPromiseFunction.bind(this,t));return e},e=>{if(void 0!==e)for(let t of s.PROMISE_FUNCTIONS)(0,i.isWrapped)(e[t])&&this._unwrap(e,t)})]}_patchSyncFunction(e,t){let n=this;return c(function(...i){let a=r.context.active();if(!n._shouldTrace(a))return t.apply(this,i);if(!1===n._runCreateHook(e,{args:i}))return r.context.with((0,o.suppressTracing)(a),t,this,...i);let s=n.tracer.startSpan(`fs ${e}`);try{let l=r.context.with((0,o.suppressTracing)(r.trace.setSpan(a,s)),t,this,...i);return n._runEndHook(e,{args:i,span:s}),l}catch(t){throw s.recordException(t),s.setStatus({message:t.message,code:r.SpanStatusCode.ERROR}),n._runEndHook(e,{args:i,span:s,error:t}),t}finally{s.end()}},t)}_patchCallbackFunction(e,t){let n=this;return c(function(...i){let a=r.context.active();if(!n._shouldTrace(a))return t.apply(this,i);if(!1===n._runCreateHook(e,{args:i}))return r.context.with((0,o.suppressTracing)(a),t,this,...i);let s=i.length-1,l=i[s];if("function"!=typeof l)return t.apply(this,i);{let u=n.tracer.startSpan(`fs ${e}`);i[s]=r.context.bind(a,function(t){return t&&(u.recordException(t),u.setStatus({message:t.message,code:r.SpanStatusCode.ERROR})),n._runEndHook(e,{args:i,span:u,error:t}),u.end(),l.apply(this,arguments)});try{return r.context.with((0,o.suppressTracing)(r.trace.setSpan(a,u)),t,this,...i)}catch(t){throw u.recordException(t),u.setStatus({message:t.message,code:r.SpanStatusCode.ERROR}),n._runEndHook(e,{args:i,span:u,error:t}),u.end(),t}}},t)}_patchExistsCallbackFunction(e,t){let n=this,i=c(function(...i){let a=r.context.active();if(!n._shouldTrace(a))return t.apply(this,i);if(!1===n._runCreateHook(e,{args:i}))return r.context.with((0,o.suppressTracing)(a),t,this,...i);let s=i.length-1,l=i[s];if("function"!=typeof l)return t.apply(this,i);{let u=n.tracer.startSpan(`fs ${e}`);i[s]=r.context.bind(a,function(){return n._runEndHook(e,{args:i,span:u}),u.end(),l.apply(this,arguments)});try{return r.context.with((0,o.suppressTracing)(r.trace.setSpan(a,u)),t,this,...i)}catch(t){throw u.recordException(t),u.setStatus({message:t.message,code:r.SpanStatusCode.ERROR}),n._runEndHook(e,{args:i,span:u,error:t}),u.end(),t}}},t),a=function(e){return new Promise(t=>i(e,t))};return Object.defineProperty(a,"name",{value:e}),Object.defineProperty(i,l.promisify.custom,{value:a}),i}_patchPromiseFunction(e,t){let n=this;return c(async function(...i){let a=r.context.active();if(!n._shouldTrace(a))return t.apply(this,i);if(!1===n._runCreateHook(e,{args:i}))return r.context.with((0,o.suppressTracing)(a),t,this,...i);let s=n.tracer.startSpan(`fs ${e}`);try{let l=await r.context.with((0,o.suppressTracing)(r.trace.setSpan(a,s)),t,this,...i);return n._runEndHook(e,{args:i,span:s}),l}catch(t){throw s.recordException(t),s.setStatus({message:t.message,code:r.SpanStatusCode.ERROR}),n._runEndHook(e,{args:i,span:s,error:t}),t}finally{s.end()}},t)}_runCreateHook(...e){let{createHook:t}=this.getConfig();if("function"==typeof t)try{return t(...e)}catch(e){this._diag.error("caught createHook error",e)}return!0}_runEndHook(...e){let{endHook:t}=this.getConfig();if("function"==typeof t)try{t(...e)}catch(e){this._diag.error("caught endHook error",e)}}_shouldTrace(e){if((0,o.isTracingSuppressed)(e))return!1;let{requireParentSpan:t}=this.getConfig();return(!t||null!=r.trace.getSpan(e))&&!0}}n.FsInstrumentation=p},850653,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.FsInstrumentation=void 0;var r=e.r(982860);Object.defineProperty(n,"FsInstrumentation",{enumerable:!0,get:function(){return r.FsInstrumentation}})},174710,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(850653),o=e.r(976285),i=e.r(625331),a="FileSystem",s=o.defineIntegration((e={})=>({name:a,setupOnce(){i.generateInstrumentOnce(a,()=>new r.FsInstrumentation({requireParentSpan:!0,endHook(t,{args:n,span:r,error:i}){r.updateName(`fs.${t}`),r.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"file",[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.file.fs"}),e.recordErrorMessagesAsSpanAttributes&&("string"==typeof n[0]&&T.includes(t)?r.setAttribute("path_argument",n[0]):"string"==typeof n[0]&&"string"==typeof n[1]&&_.includes(t)?(r.setAttribute("target_argument",n[0]),r.setAttribute("path_argument",n[1])):"string"==typeof n[0]&&p.includes(t)?r.setAttribute("prefix_argument",n[0]):"string"==typeof n[0]&&"string"==typeof n[1]&&c.includes(t)?(r.setAttribute("existing_path_argument",n[0]),r.setAttribute("new_path_argument",n[1])):"string"==typeof n[0]&&"string"==typeof n[1]&&u.includes(t)?(r.setAttribute("src_argument",n[0]),r.setAttribute("dest_argument",n[1])):"string"==typeof n[0]&&"string"==typeof n[1]&&l.includes(t)&&(r.setAttribute("old_path_argument",n[0]),r.setAttribute("new_path_argument",n[1]))),i&&e.recordErrorMessagesAsSpanAttributes&&r.setAttribute("fs_error",i.message)}}))()}})),l=["rename","renameSync"],u=["copyFile","cp","copyFileSync","cpSync"],c=["link","linkSync"],p=["mkdtemp","mkdtempSync"],_=["symlink","symlinkSync"],T=["access","appendFile","chmod","chown","exists","mkdir","lchown","lstat","lutimes","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rm","rmdir","stat","truncate","unlink","utimes","writeFile","accessSync","appendFileSync","chmodSync","chownSync","existsSync","lchownSync","lstatSync","lutimesSync","opendirSync","mkdirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","rmdirSync","rmSync","statSync","truncateSync","unlinkSync","utimesSync","writeFileSync"];n.fsIntegration=s},418871,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.ExpressLayerType=void 0,(r=n.ExpressLayerType||(n.ExpressLayerType={})).ROUTER="router",r.MIDDLEWARE="middleware",r.REQUEST_HANDLER="request_handler"},2458,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).EXPRESS_TYPE="express.type",r.EXPRESS_NAME="express.name"},947389,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n._LAYERS_STORE_PROPERTY=n.kLayerPatched=void 0,n.kLayerPatched=Symbol("express-layer-patched"),n._LAYERS_STORE_PROPERTY="__ot_middlewares"},169560,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getActualMatchedRoute=n.getConstructedRoute=n.getLayerPath=n.asErrorAndMessage=n.isLayerIgnored=n.getLayerMetadata=n.getRouterPath=n.storeLayerPath=void 0;let r=e.r(418871),o=e.r(2458),i=e.r(947389);n.storeLayerPath=(e,t)=>(!1===Array.isArray(e[i._LAYERS_STORE_PROPERTY])&&Object.defineProperty(e,i._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),void 0===t)?{isLayerPathStored:!1}:(e[i._LAYERS_STORE_PROPERTY].push(t),{isLayerPathStored:!0}),n.getRouterPath=(e,t)=>{let r=t.handle?.stack?.[0];return r?.route?.path?`${e}${r.route.path}`:r?.handle?.stack?(0,n.getRouterPath)(e,r):e},n.getLayerMetadata=(e,t,i)=>{if("router"===t.name){let a=(0,n.getRouterPath)("",t)||i||e||"/";return{attributes:{[o.AttributeNames.EXPRESS_NAME]:a,[o.AttributeNames.EXPRESS_TYPE]:r.ExpressLayerType.ROUTER},name:`router - ${a}`}}return"bound dispatch"===t.name||"handle"===t.name?{attributes:{[o.AttributeNames.EXPRESS_NAME]:(e||i)??"request handler",[o.AttributeNames.EXPRESS_TYPE]:r.ExpressLayerType.REQUEST_HANDLER},name:`request handler${t.path?` - ${e||i}`:""}`}:{attributes:{[o.AttributeNames.EXPRESS_NAME]:t.name,[o.AttributeNames.EXPRESS_TYPE]:r.ExpressLayerType.MIDDLEWARE},name:`middleware - ${t.name}`}};let a=(e,t)=>{if("string"==typeof t)return t===e;if(t instanceof RegExp)return t.test(e);if("function"==typeof t)return t(e);throw TypeError("Pattern is in unsupported datatype")};n.isLayerIgnored=(e,t,n)=>{if(Array.isArray(n?.ignoreLayersType)&&n?.ignoreLayersType?.includes(t))return!0;if(!1===Array.isArray(n?.ignoreLayers))return!1;try{for(let t of n.ignoreLayers)if(a(e,t))return!0}catch(e){}return!1},n.asErrorAndMessage=e=>e instanceof Error?[e,e.message]:[String(e),String(e)],n.getLayerPath=e=>{let t=e[0];return Array.isArray(t)?t.map(e=>s(e)||"").join(","):s(t)};let s=e=>"string"==typeof e?e:e instanceof RegExp||"number"==typeof e?e.toString():void 0;function l(e){let t=(Array.isArray(e[i._LAYERS_STORE_PROPERTY])?e[i._LAYERS_STORE_PROPERTY]:[]).filter(e=>"/"!==e&&"/*"!==e);return 1===t.length&&"*"===t[0]?"*":t.join("").replace(/\/{2,}/g,"/")}n.getConstructedRoute=l,n.getActualMatchedRoute=function(e){var t;let n=Array.isArray(e[i._LAYERS_STORE_PROPERTY])?e[i._LAYERS_STORE_PROPERTY]:[];if(0===n.length)return;if(n.every(e=>"/"===e))return"/"===e.originalUrl?"/":void 0;let r=l(e);if("*"===r||r.includes("/")&&(r.includes(",")||r.includes("\\")||r.includes("*")||r.includes("[")))return r;let o=r.startsWith("/")?r:`/${r}`;return o.length>0&&(e.originalUrl===o||e.originalUrl.startsWith(o)||(t=o).includes(":")||t.includes("*"))?o:void 0}},913652,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-express"},473222,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ExpressInstrumentation=void 0;let r=e.r(385692),o=e.r(357762),i=e.r(418871),a=e.r(2458),s=e.r(169560),l=e.r(913652),u=e.r(204780),c=e.r(808119),p=e.r(947389);class _ extends u.InstrumentationBase{constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e)}init(){return[new u.InstrumentationNodeModuleDefinition("express",[">=4.0.0 <6"],e=>{let t="function"==typeof e?.Router?.prototype?.route,n=t?e.Router.prototype:e.Router;return(0,u.isWrapped)(n.route)&&this._unwrap(n,"route"),this._wrap(n,"route",this._getRoutePatch()),(0,u.isWrapped)(n.use)&&this._unwrap(n,"use"),this._wrap(n,"use",this._getRouterUsePatch()),(0,u.isWrapped)(e.application.use)&&this._unwrap(e.application,"use"),this._wrap(e.application,"use",this._getAppUsePatch(t)),e},e=>{if(void 0===e)return;let t="function"==typeof e?.Router?.prototype?.route?e.Router.prototype:e.Router;this._unwrap(t,"route"),this._unwrap(t,"use"),this._unwrap(e.application,"use")})]}_getRoutePatch(){let e=this;return function(t){return function(...n){let r=t.apply(this,n),o=this.stack[this.stack.length-1];return e._applyPatch(o,(0,s.getLayerPath)(n)),r}}}_getRouterUsePatch(){let e=this;return function(t){return function(...n){let r=t.apply(this,n),o=this.stack[this.stack.length-1];return e._applyPatch(o,(0,s.getLayerPath)(n)),r}}}_getAppUsePatch(e){let t=this;return function(n){return function(...r){let o=e?this.router:this._router,i=n.apply(this,r);if(o){let e=o.stack[o.stack.length-1];t._applyPatch(e,(0,s.getLayerPath)(r))}return i}}}_applyPatch(e,t){let n=this;!0!==e[p.kLayerPatched]&&(e[p.kLayerPatched]=!0,this._wrap(e,"handle",l=>{if(4===l.length)return l;let _=function(_,T){let{isLayerPathStored:d}=(0,s.storeLayerPath)(_,t),E=(0,s.getConstructedRoute)(_),S=(0,s.getActualMatchedRoute)(_),A={[c.ATTR_HTTP_ROUTE]:S},g=(0,s.getLayerMetadata)(E,e,t),m=g.attributes[a.AttributeNames.EXPRESS_TYPE],h=(0,r.getRPCMetadata)(o.context.active());if(h?.type===r.RPCType.HTTP&&(h.route=S),(0,s.isLayerIgnored)(g.name,m,n.getConfig()))return m===i.ExpressLayerType.MIDDLEWARE&&_[p._LAYERS_STORE_PROPERTY].pop(),l.apply(this,arguments);if(void 0===o.trace.getSpan(o.context.active()))return l.apply(this,arguments);let R=n._getSpanName({request:_,layerType:m,route:E},g.name),f=n.tracer.startSpan(R,{attributes:Object.assign(A,g.attributes)}),N=o.context.active(),I=o.trace.setSpan(N,f),{requestHook:O}=n.getConfig();O&&(0,u.safeExecuteInTheMiddle)(()=>O(f,{request:_,layerType:m,route:E}),e=>{e&&o.diag.error("express instrumentation: request hook failed",e)},!0);let y=!1;g.attributes[a.AttributeNames.EXPRESS_TYPE]===i.ExpressLayerType.ROUTER&&(f.end(),y=!0,I=N);let b=()=>{!1===y&&(y=!0,f.end())},C=Array.from(arguments),M=C.findIndex(e=>"function"==typeof e);M>=0&&(arguments[M]=function(){let e=arguments[0],t=![void 0,null,"route","router"].includes(e);if(!y&&t){let[t,n]=(0,s.asErrorAndMessage)(e);f.recordException(t),f.setStatus({code:o.SpanStatusCode.ERROR,message:n})}!1===y&&(y=!0,_.res?.removeListener("finish",b),f.end()),!(_.route&&t)&&d&&_[p._LAYERS_STORE_PROPERTY].pop();let n=C[M],r=o.context.active(),i=o.trace.getSpan(N),a=i?o.trace.setSpan(r,i):r;return o.context.bind(a,n).apply(this,arguments)});try{return o.context.bind(I,l).apply(this,arguments)}catch(n){let[e,t]=(0,s.asErrorAndMessage)(n);throw f.recordException(e),f.setStatus({code:o.SpanStatusCode.ERROR,message:t}),n}finally{y||T.once("finish",b)}};for(let e in l)Object.defineProperty(_,e,{get:()=>l[e],set(t){l[e]=t}});return _}))}_getSpanName(e,t){let{spanNameHook:n}=this.getConfig();if(!(n instanceof Function))return t;try{return n(e,t)??t}catch(e){return o.diag.error("express instrumentation: error calling span name rewrite hook",e),t}}}n.ExpressInstrumentation=_},873311,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.ExpressLayerType=n.ExpressInstrumentation=void 0;var r=e.r(473222);Object.defineProperty(n,"ExpressInstrumentation",{enumerable:!0,get:function(){return r.ExpressInstrumentation}});var o=e.r(418871);Object.defineProperty(n,"ExpressLayerType",{enumerable:!0,get:function(){return o.ExpressLayerType}});var i=e.r(2458);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return i.AttributeNames}})},866779,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.DEBUG_BUILD="u"{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(873311),o=e.r(976285),i=e.r(625331),a=e.r(866779),s="Express",l=i.generateInstrumentOnce(s,()=>new r.ExpressInstrumentation({requestHook:e=>{let t,n,r;return i.addOriginToSpan(e,"auto.http.otel.express"),(n=(t=o.spanToJSON(e).data)["express.type"])&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${n}.express`),void("string"==typeof(r=t["express.name"])&&e.updateName(r))},spanNameHook:(e,t)=>(function(e,t){if(o.getIsolationScope()===o.getDefaultIsolationScope())return a.DEBUG_BUILD&&o.debug.warn("Isolation scope is still default isolation scope - skipping setting transactionName"),t;if("request_handler"===e.layerType){let t=e.request,n=t.method?t.method.toUpperCase():"GET";o.getIsolationScope().setTransactionName(`${n} ${e.route}`)}return t})(e,t)})),u=o.defineIntegration(()=>({name:s,setupOnce(){l()}}));function c(e){return function(t,n,r,i){let a=o.httpRequestToRequestData(n);o.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:a}),(e?.shouldHandleError||function(e){let t;return((t=e.status||e.statusCode||e.status_code||e.output?.statusCode)?parseInt(t,10):500)>=500})(t)&&(r.sentry=o.captureException(t,{mechanism:{type:"auto.middleware.express",handled:!1}})),i(t)}}n.expressErrorHandler=c,n.expressIntegration=u,n.instrumentExpress=l,n.setupExpressErrorHandler=function(e,t){e.use(function(e,t,n){let r=o.httpRequestToRequestData(e);o.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:r}),n()}),e.use(c(t)),i.ensureIsWrapped(e.use,"express")}},682342,e=>{"use strict";e.s([],577208),e.i(577208);var t,n,r=e.i(545364),o=e.i(605809);let i=Symbol.for("io.opentelemetry.js.api.logs"),a=globalThis;class s{emit(e){}}let l=new s,u=new class{getLogger(e,t,n){return new s}};class c{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}emit(e){this._getLogger().emit(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider._getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):l}}class p{getLogger(e,t,n){var r;return null!=(r=this._getDelegateLogger(e,t,n))?r:new c(this,e,t,n)}_getDelegate(){var e;return null!=(e=this._delegate)?e:u}_setDelegate(e){this._delegate=e}_getDelegateLogger(e,t,n){var r;return null==(r=this._delegate)?void 0:r.getLogger(e,t,n)}}class _{constructor(){this._proxyLoggerProvider=new p}static getInstance(){return this._instance||(this._instance=new _),this._instance}setGlobalLoggerProvider(e){return a[i]?this.getLoggerProvider():(a[i]=t=>1===t?e:u,this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,t;return null!=(t=null==(e=a[i])?void 0:e.call(a,1))?t:this._proxyLoggerProvider}getLogger(e,t,n){return this.getLoggerProvider().getLogger(e,t,n)}disable(){delete a[i],this._proxyLoggerProvider=new p}}let T=_.getInstance();function d(e){let t=e.tracerProvider||r.trace.getTracerProvider(),n=e.meterProvider||o.metrics.getMeterProvider(),i=e.loggerProvider||T.getLoggerProvider(),a=e.instrumentations?.flat()??[];for(let e=0,r=a.length;e{a.forEach(e=>e.disable())}}var E=e.i(814747),S=e.i(224361),A=e.i(978116);let g=/^(?:v)?(?(?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-]+)*))?$/,m=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,h={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function R(e,t,n,r){if(t.includes("||")){for(let o of t.trim().split("||"))if(f(e,o,n,r))return!0;return!1}if(t.includes(" - ")){var o,i;o=t,i=r,t=o.replace(x,(e,t,n,r,o,a,s,l,u,c,p,_)=>(t=N(n)?"":N(r)?`>=${n}.0.0${i?.includePrerelease?"-0":""}`:N(o)?`>=${n}.${r}.0${i?.includePrerelease?"-0":""}`:a?`>=${t}`:`>=${t}${i?.includePrerelease?"-0":""}`,l=N(u)?"":N(c)?`<${+u+1}.0.0-0`:N(p)?`<${u}.${+c+1}.0-0`:_?`<=${u}.${c}.${p}-${_}`:i?.includePrerelease?`<${u}.${c}.${+p+1}-0`:`<=${l}`,`${t} ${l}`.trim()))}else if(t.includes(" ")){for(let o of t.trim().replace(/\s{2,}/g," ").split(" "))if(!f(e,o,n,r))return!1;return!0}return f(e,t,n,r)}function f(e,t,n,r){var o,i,a,s,l,u;let c;if((o=t,i=r,t=(l=o=(a=o=o.trim(),s=i,c=s?.includePrerelease?"-0":"",o=a.replace(w,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0${c} <${+t+1}.0.0-0`:N(r)?"0"===t?`>=${t}.${n}.0${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.0${c} <${+t+1}.0.0-0`:o?"0"===t?"0"===n?`>=${t}.${n}.${r}-${o} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r}-${o} <${+t+1}.0.0-0`:"0"===t?"0"===n?`>=${t}.${n}.${r}${c} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${+t+1}.0.0-0`)).replace(V,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0 <${+t+1}.0.0-0`:N(r)?`>=${t}.${n}.0 <${t}.${+n+1}.0-0`:o?`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${t}.${+n+1}.0-0`),u=i,o=l.replace(B,(e,t,n,r,o,i)=>{let a=N(n),s=a||N(r),l=s||N(o);return"="===t&&l&&(t=""),i=u?.includePrerelease?"-0":"",a?e=">"===t||"<"===t?"<0.0.0-0":"*":t&&l?(s&&(r=0),o=0,">"===t?(t=">=",s?(n=+n+1,r=0):r=+r+1,o=0):"<="===t&&(t="<",s?n=+n+1:r=+r+1),"<"===t&&(i="-0"),e=`${t+n}.${r}.${o}${i}`):s?e=`>=${n}.0.0${i} <${+n+1}.0.0-0`:l&&(e=`>=${n}.${r}.0${i} <${n}.${+r+1}.0-0`),e})).trim()).includes(" "))return R(e,t,n,r);{let r=function(e){if(!e)return{};let t=e.match(m);if(!t)return A.diag.error(`Invalid range: ${e}`),{invalid:!0};let n=t.groups.op,r=t.groups.version,o=t.groups.prerelease,i=t.groups.build,a=r.split("."),s=o?.split(".");return"=="===n&&(n="="),{op:n||"=",version:r,versionSegments:a,versionSegmentCount:a.length,prerelease:o,prereleaseSegments:s,prereleaseSegmentCount:s?s.length:0,build:i}}(t);return n.push(r),function(e,t){if(t.invalid)return!1;if(!t.version||I(t.version))return!0;let n=y(e.versionSegments||[],t.versionSegments||[]);if(0===n){let r=e.prereleaseSegments||[],o=t.prereleaseSegments||[];n=r.length||o.length?!r.length&&o.length?1:r.length&&!o.length?-1:y(r,o):0}return h[t.op]?.includes(n)}(e,r)}}function N(e){return!e||"x"===e.toLowerCase()||"*"===e}function I(e){return"*"===e||"x"===e||"X"===e}function O(e){let t=parseInt(e,10);return isNaN(t)?e:t}function y(e,t){for(let n=0;nr?1:n)?=?)\\s*${G}$`),x=RegExp(`^\\s*(${G})\\s+-\\s+(${G})\\s*$`),V=RegExp(`^(?:~>?)${G}$`),w=RegExp(`^(?:\\^)${G}$`),H=console.error.bind(console);function k(e,t,n){let r=!!e[t]&&Object.prototype.propertyIsEnumerable.call(e,t);Object.defineProperty(e,t,{configurable:!0,enumerable:r,writable:!0,value:n})}let Y=(e,t,n)=>{if(!e||!e[t])return void H("no original function "+String(t)+" to wrap");if(!n){H("no wrapper function"),H(Error().stack);return}let r=e[t];if("function"!=typeof r||"function"!=typeof n)return void H("original object and wrapper must be functions");let o=n(r,t);return k(o,"__original",r),k(o,"__unwrap",()=>{e[t]===o&&k(e,t,r)}),k(o,"__wrapped",!0),k(e,t,o),o},j=(e,t,n)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{Y(e,t,n)})}):H("must provide one or more functions to wrap on modules")},F=(e,t)=>{if(!e||!e[t]){H("no function to unwrap."),H(Error().stack);return}let n=e[t];n.__unwrap?n.__unwrap():H("no original to unwrap to -- has "+String(t)+" already been unwrapped?")},W=(e,t)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{F(e,t)})}):H("must provide one or more functions to unwrap on modules")};function K(e){e&&e.logger&&("function"!=typeof e.logger?H("new logger isn't a function, not replacing"):H=e.logger)}K.wrap=Y,K.massWrap=j,K.unwrap=F,K.massUnwrap=W;class X{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(e,t,n){this.instrumentationName=e,this.instrumentationVersion=t,this.setConfig(n),this._diag=A.diag.createComponentLogger({namespace:e}),this._tracer=r.trace.getTracer(e,t),this._meter=o.metrics.getMeter(e,t),this._logger=T.getLogger(e,t),this._updateMetricInstruments()}_wrap=Y;_unwrap=F;_massWrap=j;_massUnwrap=W;get meter(){return this._meter}setMeterProvider(e){this._meter=e.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(e){this._logger=e.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let e=this.init()??[];return Array.isArray(e)?e:[e]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(e){this._config={enabled:!0,...e}}setTracerProvider(e){this._tracer=e.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(e,t,n,r){if(e)try{e(n,r)}catch(e){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:t},e)}}}var Z=e.i(156823);class J{hooks=[];children=new Map}class ${_trie=new J;_counter=0;insert(e){let t=this._trie;for(let n of e.moduleName.split("/")){let e=t.children.get(n);e||(e=new J,t.children.set(n,e)),t=e}t.hooks.push({hook:e,insertedId:this._counter++})}search(e,{maintainInsertionOrder:t,fullOnly:n}={}){let r=this._trie,o=[],i=!0;for(let t of e.split("/")){let e=r.children.get(t);if(!e){i=!1;break}n||o.push(...e.hooks),r=e}return(n&&i&&o.push(...r.hooks),0===o.length)?[]:1===o.length?[o[0].hook]:(t&&o.sort((e,t)=>e.insertedId-t.insertedId),o.map(({hook:e})=>e))}}let Q=["afterEach","after","beforeEach","before","describe","it"].every(t=>"function"==typeof e.g[t]);class z{_moduleNameTrie=new $;static _instance;constructor(){this._initialize()}_initialize(){new Z.Hook(null,{internals:!0},(e,t,n)=>{var r;let o=(r=t,"/"!==E.sep?r.split(E.sep).join("/"):r);for(let{onRequire:r}of this._moduleNameTrie.search(o,{maintainInsertionOrder:!0,fullOnly:void 0===n}))e=r(e,t,n);return e})}register(e,t){let n={moduleName:e,onRequire:t};return this._moduleNameTrie.insert(n),n}static getInstance(){return Q?new z:this._instance=this._instance??new z}}var q=e.i(74667),ee=e.i(522734);function et(e,t,n){let r,o;try{o=e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}async function en(e,t,n){let r,o;try{o=await e()}catch(e){r=e}finally{if(await t(r,o),r&&!n)throw r;return o}}function er(e){return"function"==typeof e&&"function"==typeof e.__original&&"function"==typeof e.__unwrap&&!0===e.__wrapped}class eo extends X{_modules;_hooks=[];_requireInTheMiddleSingleton=z.getInstance();_enabled=!1;constructor(e,t,n){super(e,t,n);let r=this.init();r&&!Array.isArray(r)&&(r=[r]),this._modules=r||[],this._config.enabled&&this.enable()}_wrap=(e,t,n)=>{if(er(e[t])&&this._unwrap(e,t),!S.types.isProxy(e))return Y(e,t,n);{let r=Y(Object.assign({},e),t,n);return Object.defineProperty(e,t,{value:r}),r}};_unwrap=(e,t)=>S.types.isProxy(e)?Object.defineProperty(e,t,{value:e[t]}):F(e,t);_massWrap=(e,t,n)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._wrap(e,t,n)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_massUnwrap=(e,t)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._unwrap(e,t)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(t=>{let{name:n}=t;try{let t=(()=>{let e=Error("Cannot find module as expression is too dynamic");throw e.code="MODULE_NOT_FOUND",e})();e.c[t]&&this._diag.warn(`Module ${n} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${n}`)}catch{}})}_extractPackageVersion(e){try{let t=(0,ee.readFileSync)(E.join(e,"package.json"),{encoding:"utf8"}),n=JSON.parse(t).version;return"string"==typeof n?n:void 0}catch{A.diag.warn("Failed extracting version",e)}}_onRequire(e,t,n,r){if(!r)return"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:e.name}),e.patch(t)):t;let o=this._extractPackageVersion(r);if(e.moduleVersion=o,e.name===n)return ei(e.supportedVersions,o,e.includePrerelease)&&"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:e.name,version:e.moduleVersion,baseDir:r}),e.patch(t,e.moduleVersion)):t;let i=e.files??[],a=E.normalize(n);return i.filter(t=>t.name===a&&ei(t.supportedVersions,o,e.includePrerelease)).reduce((t,n)=>(n.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:e.name,version:e.moduleVersion,fileName:n.name,baseDir:r}),n.patch(t,e.moduleVersion)):t,t)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let e of this._modules)for(let t of("function"==typeof e.patch&&e.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:e.name,version:e.moduleVersion}),e.patch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.patch(t.moduleExports,e.moduleVersion));return}for(let e of(this._warnOnPreloadedModules(),this._modules)){let t=(t,n,r)=>{if(!r&&E.isAbsolute(n)){let e=E.parse(n);n=e.name,r=e.dir}return this._onRequire(e,t,n,r)},n=(t,n,r)=>this._onRequire(e,t,n,r),r=E.isAbsolute(e.name)?new Z.Hook([e.name],{internals:!0},n):this._requireInTheMiddleSingleton.register(e.name,n);this._hooks.push(r);let o=new q.Hook([e.name],{internals:!0},t);this._hooks.push(o)}}}disable(){if(this._enabled)for(let e of(this._enabled=!1,this._modules))for(let t of("function"==typeof e.unpatch&&e.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:e.name,version:e.moduleVersion}),e.unpatch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.unpatch(t.moduleExports,e.moduleVersion))}isEnabled(){return this._enabled}}function ei(e,t,n){return void 0===t?e.includes("*"):e.some(e=>(function(e,t,n){var r,o,i;if(!("string"==typeof(r=e)&&g.test(r)))return A.diag.error(`Invalid version: ${e}`),!1;if(!t)return!0;t=t.replace(/([<>=~^]+)\s+/g,"$1");let a=function(e){let t=e.match(g);if(!t)return void A.diag.error(`Invalid version: ${e}`);let n=t.groups.version,r=t.groups.prerelease,o=t.groups.build,i=n.split("."),a=r?.split(".");return{op:void 0,version:n,versionSegments:i,versionSegmentCount:i.length,prerelease:r,prereleaseSegments:a,prereleaseSegmentCount:a?a.length:0,build:o}}(e);if(!a)return!1;let s=[],l=R(a,t,s,n);return l&&!n?.includePrerelease?(o=a,i=s,!o.prerelease||i.some(e=>e.prerelease&&e.version===o.version)):l})(t,e,{includePrerelease:n}))}class ea{files;name;supportedVersions;patch;unpatch;constructor(e,t,n,r,o){this.files=o||[],this.name=e,this.supportedVersions=t,this.patch=n,this.unpatch=r}}class es{name;supportedVersions;patch;unpatch;constructor(e,t,n,r){this.name=(0,E.normalize)(e),this.supportedVersions=t,this.patch=n,this.unpatch=r}}function el(e,t){let r=n.OLD;for(let o of t?.split(",").map(e=>e.trim()).filter(e=>""!==e)??[])if(o.toLowerCase()===e+"/dup"){r=n.DUPLICATE;break}else o.toLowerCase()===e&&(r=n.STABLE);return r}(t=n||(n={}))[t.STABLE=1]="STABLE",t[t.OLD=2]="OLD",t[t.DUPLICATE=3]="DUPLICATE",e.s(["InstrumentationBase",()=>eo,"InstrumentationNodeModuleDefinition",()=>ea,"InstrumentationNodeModuleFile",()=>es,"SemconvStability",()=>n,"isWrapped",()=>er,"registerInstrumentations",()=>d,"safeExecuteInTheMiddle",()=>et,"safeExecuteInTheMiddleAsync",()=>en,"semconvStabilityFromStr",()=>el],682342)},62701,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.range=n.balanced=void 0,n.balanced=(e,t,o)=>{let i=e instanceof RegExp?r(e,o):e,a=t instanceof RegExp?r(t,o):t,s=null!==i&&null!=a&&(0,n.range)(i,a,o);return s&&{start:s[0],end:s[1],pre:o.slice(0,s[0]),body:o.slice(s[0]+i.length,s[1]),post:o.slice(s[1]+a.length)}};let r=(e,t)=>{let n=t.match(e);return n?n[0]:null};n.range=(e,t,n)=>{let r,o,i,a,s,l=n.indexOf(e),u=n.indexOf(t,l+1),c=l;if(l>=0&&u>0){if(e===t)return[l,u];for(r=[],i=n.length;c>=0&&!s;){if(c===l)r.push(c),l=n.indexOf(e,c+1);else if(1===r.length){let e=r.pop();void 0!==e&&(s=[e,u])}else void 0!==(o=r.pop())&&o=0?l:u}r.length&&void 0!==a&&(s=[i,a])}return s}},872050,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EXPANSION_MAX=void 0,n.expand=function(e,t={}){if(!e)return[];let{max:u=n.EXPANSION_MAX}=t;return"{}"===e.slice(0,2)&&(e="\\{\\}"+e.slice(2)),(function e(t,n,o){let i=[],s=(0,r.balanced)("{","}",t);if(!s)return[t];let l=s.pre,u=s.post.length?e(s.post,n,!1):[""];if(/\$$/.test(s.pre))for(let e=0;e=0;if(!d&&!E)return s.post.match(/,(?!,).*\}/)?e(t=s.pre+"{"+s.body+a+s.post,n,!0):[t];if(d)c=s.body.split(/\.\./);else if(1===(c=function e(t){if(!t)return[""];let n=[],o=(0,r.balanced)("{","}",t);if(!o)return t.split(",");let{pre:i,body:a,post:s}=o,l=i.split(",");l[l.length-1]+="{"+a+"}";let u=e(s);return s.length&&(l[l.length-1]+=u.shift(),l.push.apply(l,u)),n.push.apply(n,l),n}(s.body)).length&&void 0!==c[0]&&1===(c=e(c[0],n,!1).map(R)).length)return u.map(e=>s.pre+c[0]+e);if(d&&void 0!==c[0]&&void 0!==c[1]){let e=m(c[0]),t=m(c[1]),n=Math.max(c[0].length,c[1].length),r=3===c.length&&void 0!==c[2]?Math.max(Math.abs(m(c[2])),1):1,o=N;t0){let n=Array(t+1).join("0");e=a<0?"-"+n+e.slice(1):n+e}}p.push(e)}}else{p=[];for(let t=0;t=t}n.EXPANSION_MAX=1e5},707441,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.assertValidPattern=void 0,n.assertValidPattern=e=>{if("string"!=typeof e)throw TypeError("invalid pattern");if(e.length>65536)throw TypeError("pattern is too long")}},523132,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.parseClass=void 0;let r={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o=e=>e.replace(/[[\]\\-]/g,"\\$&");n.parseClass=(e,t)=>{if("["!==e.charAt(t))throw Error("not in a brace expression");let n=[],i=[],a=t+1,s=!1,l=!1,u=!1,c=!1,p=t,_="";e:for(;a_?n.push(o(_)+"-"+o(T)):T===_&&n.push(o(T)),_="",a++;continue}if(e.startsWith("-]",a+1)){n.push(o(T+"-")),a+=2;continue}if(e.startsWith("-",a+1)){_=T,a+=2;continue}n.push(o(T)),a++}if(p{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.unescape=void 0,n.unescape=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!0}={})=>n?t?e.replace(/\[([^/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?e.replace(/\[([^/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1")},965128,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AST=void 0;let o=e.r(523132),i=e.r(106952),a=new Set(["!","?","+","*","@"]),s=e=>a.has(e),l=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),u=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),c=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),p=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),_="(?!\\.)",T=new Set(["[","."]),d=new Set(["..","."]),E=new Set("().*{}+?[]^$\\!"),S=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),A="[^/]",g=A+"*?",m=A+"+?",h=0;class R{type;#e;#t;#n=!1;#r=[];#o;#i;#a;#s=!1;#l;#u;#c=!1;id=++h;get depth(){return(this.#o?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#e.id,parent:this.#o?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(e,t,n={}){this.type=e,e&&(this.#t=!0),this.#o=t,this.#e=this.#o?this.#o.#e:this,this.#l=this.#e===this?n:this.#e.#l,this.#a=this.#e===this?[]:this.#e.#a,"!"!==e||this.#e.#s||this.#a.push(this),this.#i=this.#o?this.#o.#r.length:0}get hasMagic(){if(void 0!==this.#t)return this.#t;for(let e of this.#r)if("string"!=typeof e&&(e.type||e.hasMagic))return this.#t=!0;return this.#t}toString(){return void 0!==this.#u?this.#u:this.type?this.#u=this.type+"("+this.#r.map(e=>String(e)).join("|")+")":this.#u=this.#r.map(e=>String(e)).join("")}#p(){let e;if(this!==this.#e)throw Error("should only call on root");if(this.#s)return this;for(this.toString(),this.#s=!0;e=this.#a.pop();){if("!"!==e.type)continue;let t=e,n=t.#o;for(;n;){for(let r=t.#i+1;!n.type&&r"string"==typeof e?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#s&&this.#o?.type==="!")&&e.push({}),e}isStart(){if(this.#e===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;let e=this.#o;for(let t=0;t"string"!=typeof e),o=this.#r.map(t=>{let[o,i,a,s]="string"==typeof t?r.#f(t,this.#t,n):t.toRegExpSource(e);return this.#t=this.#t||a,this.#n=this.#n||s,o}).join(""),a="";if(this.isStart()&&"string"==typeof this.#r[0]&&!(1===this.#r.length&&d.has(this.#r[0]))){let n=t&&T.has(o.charAt(0))||o.startsWith("\\.")&&T.has(o.charAt(2))||o.startsWith("\\.\\.")&&T.has(o.charAt(4)),r=!t&&!e&&T.has(o.charAt(0));a=n?"(?!(?:^|/)\\.\\.?(?:$|/))":r?_:""}let s="";return this.isEnd()&&this.#e.#s&&this.#o?.type==="!"&&(s="(?:$|\\/)"),[a+o+s,(0,i.unescape)(o),this.#t=!!this.#t,this.#n]}let n="*"===this.type||"+"===this.type,o="!"===this.type?"(?:(?!(?:":"(?:",a=this.#N(t);if(this.isStart()&&this.isEnd()&&!a&&"!"!==this.type){let e=this.toString();return this.#r=[e],this.type=null,this.#t=void 0,[e,(0,i.unescape)(this.toString()),!1,!1]}let l=!n||e||t||!_?"":this.#N(!0);l===a&&(l=""),l&&(a=`(?:${a})(?:${l})*?`);return["!"===this.type&&this.#c?(this.isStart()&&!t?_:"")+m:o+a+("!"===this.type?"))"+(!this.isStart()||t||e?"":_)+g+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&l?")":"*"===this.type&&l?")?":`)${this.type}`),(0,i.unescape)(a),this.#t=!!this.#t,this.#n]}#R(){if(s(this.type)){let e=0,t=!1;do{t=!0;for(let e=0;e{if("string"==typeof t)throw Error("string type in extglob ast??");let[n,r,o,i]=t.toRegExpSource(e);return this.#n=this.#n||i,n}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")}static #f(e,t,n=!1){let r=!1,a="",s=!1,l=!1;for(let i=0;i{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.escape=void 0,n.escape=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!1}={})=>n?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&")},843860,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.unescape=n.escape=n.AST=n.Minimatch=n.match=n.makeRe=n.braceExpand=n.defaults=n.filter=n.GLOBSTAR=n.sep=n.minimatch=void 0;let r=e.r(872050),o=e.r(707441),i=e.r(965128),a=e.r(686006),s=e.r(106952);n.minimatch=(e,t,n={})=>((0,o.assertValidPattern)(t),(!!n.nocomment||"#"!==t.charAt(0))&&new N(t,n).match(e));let l=/^\*+([^+@!?*[(]*)$/,u=/^\*+\.\*+$/,c=e=>!e.startsWith(".")&&e.includes("."),p=e=>"."!==e&&".."!==e&&e.includes("."),_=/^\.\*+$/,T=e=>"."!==e&&".."!==e&&e.startsWith("."),d=/^\*+$/,E=e=>0!==e.length&&!e.startsWith("."),S=e=>0!==e.length&&"."!==e&&".."!==e,A=/^\?+([^+@!?*[(]*)?$/,g=([e])=>{let t=e.length;return e=>e.length===t&&!e.startsWith(".")},m=([e])=>{let t=e.length;return e=>e.length===t&&"."!==e&&".."!==e},h="object"==typeof process&&process?"object"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";n.sep="win32"===h?"\\":"/",n.minimatch.sep=n.sep,n.GLOBSTAR=Symbol("globstar **"),n.minimatch.GLOBSTAR=n.GLOBSTAR;n.filter=(e,t={})=>r=>(0,n.minimatch)(r,e,t),n.minimatch.filter=n.filter;let R=(e,t={})=>Object.assign({},e,t);n.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return n.minimatch;let t=n.minimatch;return Object.assign((n,r,o={})=>t(n,r,R(e,o)),{Minimatch:class extends t.Minimatch{constructor(t,n={}){super(t,R(e,n))}static defaults(n){return t.defaults(R(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n,r={}){super(t,n,R(e,r))}static fromGlob(n,r={}){return t.AST.fromGlob(n,R(e,r))}},unescape:(n,r={})=>t.unescape(n,R(e,r)),escape:(n,r={})=>t.escape(n,R(e,r)),filter:(n,r={})=>t.filter(n,R(e,r)),defaults:n=>t.defaults(R(e,n)),makeRe:(n,r={})=>t.makeRe(n,R(e,r)),braceExpand:(n,r={})=>t.braceExpand(n,R(e,r)),match:(n,r,o={})=>t.match(n,r,R(e,o)),sep:t.sep,GLOBSTAR:n.GLOBSTAR})},n.minimatch.defaults=n.defaults,n.braceExpand=(e,t={})=>((0,o.assertValidPattern)(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e))?[e]:(0,r.expand)(e,{max:t.braceExpandMax}),n.minimatch.braceExpand=n.braceExpand,n.makeRe=(e,t={})=>new N(e,t).makeRe(),n.minimatch.makeRe=n.makeRe,n.match=(e,t,n={})=>{let r=new N(t,n);return e=e.filter(e=>r.match(e)),r.options.nonull&&!e.length&&e.push(t),e},n.minimatch.match=n.match;let f=/[?*]|[+@!]\(.*?\)|\[|\]/;class N{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(e,t={}){(0,o.assertValidPattern)(e),t=t||{},this.options=t,this.maxGlobstarRecursion=t.maxGlobstarRecursion??200,this.pattern=e,this.platform=t.platform||h,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||!1===t.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==t.windowsNoMagicRoot?t.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if("string"!=typeof t)return!0;return!1}debug(){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0)){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){let t=""===e[0]&&""===e[1]&&("?"===e[2]||!f.test(e[2]))&&!f.test(e[3]),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>-1===e.indexOf(!1)),this.isWindows)for(let e=0;e=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;-1!==(t=e.indexOf("**",t+1));){let n=t;for(;"**"===e[n+1];)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>0===(e=e.reduce((e,t)=>{let n=e[e.length-1];return"**"===t&&"**"===n||(".."===t&&n&&".."!==n&&"."!==n&&"**"!==n?e.pop():e.push(t)),e},[])).length?[""]:e)}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,o-r);let i=n[r+1],a=n[r+2],s=n[r+3];if(".."!==i||!a||"."===a||".."===a||!s||"."===s||".."===s)continue;t=!0,n.splice(r,1);let l=n.slice(0);l[r]="**",e.push(l),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length)}partsMatch(e,t,n=!1){let r=0,o=0,i=[],a="";for(;r=2&&(e=this.levelTwoFileOptimize(e)),t.includes(n.GLOBSTAR))?this.#I(e,t,r,o,i):this.#O(e,t,r,o,i)}#I(e,t,r,o,i){let a=t.indexOf(n.GLOBSTAR,i),s=t.lastIndexOf(n.GLOBSTAR),[l,u,c]=r?[t.slice(i,a),t.slice(a+1),[]]:[t.slice(i,a),t.slice(a+1,s),t.slice(s+1)];if(l.length){let t=e.slice(o,o+l.length);if(!this.#O(t,l,r,0,0))return!1;o+=l.length,i+=l.length}let p=0;if(c.length){if(c.length+o>e.length)return!1;let t=e.length-c.length;if(this.#O(e,c,r,t,0))p=c.length;else{if(""!==e[e.length-1]||o+c.length===e.length||(t--,!this.#O(e,c,r,t,0)))return!1;p=c.length+1}}if(!u.length){let t=!!p;for(let n=o;n(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)):e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)):r.dot?e=>t=>t.endsWith(e):e=>t=>!t.startsWith(".")&&t.endsWith(e))(t[1]):(t=e.match(A))?a=(r.nocase?r.dot?([e,t=""])=>{let n=m([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n}:([e,t=""])=>{let n=g([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n}:r.dot?([e,t=""])=>{let n=m([e]);return t?e=>n(e)&&e.endsWith(t):n}:([e,t=""])=>{let n=g([e]);return t?e=>n(e)&&e.endsWith(t):n})(t):(t=e.match(u))?a=r.dot?p:c:(t=e.match(_))&&(a=T);let s=i.AST.fromGlob(e,this.options).toMMPattern();return a&&"object"==typeof s&&Reflect.defineProperty(s,"test",{value:a}),s}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,r=t.noglobstar?"[^/]*?":t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",o=new Set(t.nocase?["i"]:[]),i=e.map(e=>{let t=e.map(e=>{if(e instanceof RegExp)for(let t of e.flags.split(""))o.add(t);return"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===n.GLOBSTAR?n.GLOBSTAR:e._src});t.forEach((e,o)=>{let i=t[o+1],a=t[o-1];e===n.GLOBSTAR&&a!==n.GLOBSTAR&&(void 0===a?void 0!==i&&i!==n.GLOBSTAR?t[o+1]="(?:\\/|"+r+"\\/)?"+i:t[o]=r:void 0===i?t[o-1]=a+"(?:\\/|\\/"+r+")?":i!==n.GLOBSTAR&&(t[o-1]=a+"(?:\\/|\\/"+r+"\\/)"+i,t[o+1]=n.GLOBSTAR))});let i=t.filter(e=>e!==n.GLOBSTAR);if(this.partial&&i.length>=1){let e=[];for(let t=1;t<=i.length;t++)e.push(i.slice(0,t).join("/"));return"(?:"+e.join("|")+")"}return i.join("/")}).join("|"),[a,s]=e.length>1?["(?:",")"]:["",""];i="^"+a+i+s+"$",this.partial&&(i="^(?:\\/|"+a+i.slice(1,-1)+s+")$"),this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...o].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;let n=this.options;this.isWindows&&(e=e.split("\\").join("/"));let r=this.slashSplit(e);this.debug(this.pattern,"split",r);let o=this.set;this.debug(this.pattern,"set",o);let i=r[r.length-1];if(!i)for(let e=r.length-2;!i&&e>=0;e--)i=r[e];for(let e of o){let o=r;if(n.matchBase&&1===e.length&&(o=[i]),this.matchOne(o,e,t)){if(n.flipNegate)return!0;return!this.negate}}return!n.flipNegate&&this.negate}static defaults(e){return n.minimatch.defaults(e).Minimatch}}n.Minimatch=N;var I=e.r(965128);Object.defineProperty(n,"AST",{enumerable:!0,get:function(){return I.AST}});var O=e.r(686006);Object.defineProperty(n,"escape",{enumerable:!0,get:function(){return O.escape}});var y=e.r(106952);Object.defineProperty(n,"unescape",{enumerable:!0,get:function(){return y.unescape}}),n.minimatch.AST=i.AST,n.minimatch.Minimatch=N,n.minimatch.escape=a.escape,n.minimatch.unescape=s.unescape},740071,(e,t,n)=>{"use strict";let r=e.r(677652),{context:o,trace:i,SpanStatusCode:a,propagation:s,diag:l}=e.r(357762),{getRPCMetadata:u,RPCType:c}=e.r(385692),{ATTR_HTTP_ROUTE:p,ATTR_HTTP_RESPONSE_STATUS_CODE:_,ATTR_HTTP_REQUEST_METHOD:T,ATTR_URL_PATH:d}=e.r(808119),{InstrumentationBase:E}=e.r(682342),{version:S,name:A}=e.r(989801),g=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend","onResponse","onError"],m="hook.name",h="fastify.type",R="hook.callback.name",f="route-hook",N="hook",I="anonymous",O=Symbol("fastify otel instance"),y=Symbol("fastify otel request spans"),b=Symbol("fastify otel request context"),C=Symbol("fastify otel addhook original"),M=Symbol("fastify otel setnotfound original"),P=Symbol("fastify otel ignore path"),L=Symbol("fastify otel record exceptions");class v extends E{logger=null;_requestHook=null;_lifecycleHook=null;constructor(t){if(super(A,S,t),this.logger=l.createComponentLogger({namespace:A}),this[P]=null,this[L]=!0,t?.recordExceptions!=null){if("boolean"!=typeof t.recordExceptions)throw TypeError("recordExceptions must be a boolean");this[L]=t.recordExceptions}if("function"==typeof t?.requestHook&&(this._requestHook=t.requestHook),"function"==typeof t?.lifecycleHook&&(this._lifecycleHook=t.lifecycleHook),t?.ignorePaths!=null||null!=process.env.OTEL_FASTIFY_IGNORE_PATHS){const n=t?.ignorePaths??process.env.OTEL_FASTIFY_IGNORE_PATHS;if(("string"!=typeof n||0===n.length)&&"function"!=typeof n)throw TypeError("ignorePaths must be a string or a function");let r=null;this[P]=t=>"function"==typeof n?n(t):(null==r&&(r=e.r(843860).minimatch),r(t.url,n))}}enable(){return void 0===this._handleInitialization&&this.getConfig().registerOnInitialization&&(this._handleInitialization=e=>{this.plugin()(e.fastify,void 0,()=>{});let t=(e,t,n)=>{n()};t[Symbol.for("skip-override")]=!0,t[Symbol.for("fastify.display-name")]="@fastify/otel",e.fastify.register(t)},r.subscribe("fastify.initialization",this._handleInitialization)),super.enable()}disable(){return this._handleInitialization&&(r.unsubscribe("fastify.initialization",this._handleInitialization),this._handleInitialization=void 0),super.disable()}init(){return[]}plugin(){let e=this;return t[Symbol.for("skip-override")]=!0,t[Symbol.for("fastify.display-name")]="@fastify/otel",t[Symbol.for("plugin-meta")]={fastify:">=4.0.0 <6",name:"@fastify/otel"},t;function t(t,n,r){function l(e,t,n,r){let o=e[y];null!=o&&(t.statusCode>=500&&o.setStatus({code:a.ERROR}),o.setAttributes({[_]:t.statusCode}),o.end()),e[y]=null,r(null,n)}function E(t,n,r,o){let i=t[y];null!=i&&(i.setStatus({code:a.ERROR,message:r.message}),!1!==e[L]&&i.recordException(r)),o()}function S(e,t,n={}){return function(...r){let s=this[O],l=function(e){for(let t of e)if(t?.routeOptions&&t.url&&t.method)return t;return null}(r);if(null===l)return s.logger.debug(`Ignoring route instrumentation because ${t} was called without a Fastify request argument`),e.call(this,...r);if(!1===s.isEnabled()||l.routeOptions.config?.otel===!1)return s.logger.debug(`Ignoring route instrumentation ${l.routeOptions.method} ${l.routeOptions.url} because it is disabled`),e.call(this,...r);if(s[P]?.({url:l.url,method:l.method})===!0)return s.logger.debug(`Ignoring route instrumentation ${l.routeOptions.method} ${l.routeOptions.url} because it matches the ignore path`),e.call(this,...r);let u=l[b]??o.active(),c=e.name?.length>0?e.name:this.pluginName??I,p=s.tracer.startSpan(`${t} - ${c}`,{attributes:n},u);if(null!=s._lifecycleHook)try{s._lifecycleHook(p,{hookName:t,request:l,handler:c})}catch(e){s.logger.error({err:e},"Execution of lifecycleHook failed")}return o.with(i.setSpan(u,p),function(){try{let t=e.call(this,...r);if("function"==typeof t?.then)return t.then(e=>(p.end(),e),e=>(p.setStatus({code:a.ERROR,message:e.message}),!1!==s[L]&&p.recordException(e),p.end(),Promise.reject(e)));return p.end(),t}catch(e){throw p.setStatus({code:a.ERROR,message:e.message}),!1!==s[L]&&p.recordException(e),p.end(),e}},this)}}t.decorate(O,e),t.decorate(C,t.addHook),t.decorate(M,t.setNotFoundHandler),t.decorateRequest("opentelemetry",function(){let t=this[b],n=this[y];return{enabled:this.routeOptions.config?.otel!==!1,span:n,tracer:e.tracer,context:t,inject:(e,n)=>s.inject(t,e,n),extract:(e,n)=>s.extract(t,e,n)}}),t.decorateRequest(y,null),t.decorateRequest(b,null),t.addHook("onRoute",function(t){if(e[P]?.(t)===!0)return void e.logger.debug(`Ignoring route instrumentation ${t.method} ${t.url} because it matches the ignore path`);if(t.config?.otel===!1)return void e.logger.debug(`Ignoring route instrumentation ${t.method} ${t.url} because it is disabled`);for(let e of g)if(null!=t[e]){let n=t[e];if("function"==typeof n)t[e]=S(n,e,{[m]:`${this.pluginName} - route -> ${e}`,[h]:f,[p]:t.url,[R]:n.name?.length>0?n.name:I});else if(Array.isArray(n)){let r=[];for(let o of n)r.push(S(o,e,{[m]:`${this.pluginName} - route -> ${e}`,[h]:f,[p]:t.url,[R]:o.name?.length>0?o.name:I}));t[e]=r}}null!=t.onSend?t.onSend=Array.isArray(t.onSend)?[...t.onSend,l]:[t.onSend,l]:t.onSend=l,null!=t.onError?t.onError=Array.isArray(t.onError)?[...t.onError,E]:[t.onError,E]:t.onError=E,t.handler=S(t.handler,"handler",{[m]:`${this.pluginName} - route-handler`,[h]:"request-handler",[p]:t.url,[R]:t.handler.name.length>0?t.handler.name:I})}),t.addHook("onRequest",function(e,t,n){if(!1===this[O].isEnabled()||e.routeOptions.config?.otel===!1)return n();if(this[O][P]?.({url:e.url,method:e.method})===!0)return this[O].logger.debug(`Ignoring request ${e.method} ${e.url} because it matches the ignore path`),n();let r=o.active();null==i.getSpan(r)&&(r=s.extract(r,e.headers));let a=u(r);null!=e.routeOptions.url&&a?.type===c.HTTP&&(a.route=e.routeOptions.url);let l={"fastify.root":"@fastify/otel",[T]:e.method,[d]:e.url};null!=e.routeOptions.url&&(l[p]=e.routeOptions.url);let _=this[O].tracer.startSpan("request",{attributes:l},r);try{this[O]._requestHook?.(_,e)}catch(e){this[O].logger.error({err:e},"requestHook threw")}e[b]=i.setSpan(r,_),e[y]=_,o.with(e[b],()=>{n()})}),t.addHook("onResponse",function(e,t,n){let r=e[y];null!=r&&(r.setAttributes({[_]:t.statusCode}),r.end()),e[y]=null,n()}),t.addHook=function(e,t){let n=this[C];return g.includes(e)?n.call(this,e,S(t,e,{[m]:`${this.pluginName} - ${e}`,[h]:N,[R]:t.name?.length>0?t.name:I})):n.call(this,e,t)},t.setNotFoundHandler=function(e,t){let n=this[M];"function"==typeof e?(t=S(e,"notFoundHandler",{[m]:`${this.pluginName} - not-found-handler`,[h]:N,[R]:e.name?.length>0?e.name:I}),n.call(this,t)):(null!=e.preValidation&&(e.preValidation=S(e.preValidation,"notFoundHandler - preValidation",{[m]:`${this.pluginName} - not-found-handler - preValidation`,[h]:N,[R]:e.preValidation.name?.length>0?e.preValidation.name:I})),null!=e.preHandler&&(e.preHandler=S(e.preHandler,"notFoundHandler - preHandler",{[m]:`${this.pluginName} - not-found-handler - preHandler`,[h]:N,[R]:e.preHandler.name?.length>0?e.preHandler.name:I})),t=S(t,"notFoundHandler",{[m]:`${this.pluginName} - not-found-handler`,[h]:N,[R]:t.name?.length>0?t.name:I}),n.call(this,e,t))},r()}}}t.exports=v,t.exports.FastifyOtelInstrumentation=v},399239,(e,t,n)=>{var r,o,i;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).FASTIFY_NAME="fastify.name",r.FASTIFY_TYPE="fastify.type",r.HOOK_NAME="hook.name",r.PLUGIN_NAME="plugin.name",n.FastifyTypes=void 0,(o=n.FastifyTypes||(n.FastifyTypes={})).MIDDLEWARE="middleware",o.REQUEST_HANDLER="request_handler",n.FastifyNames=void 0,(i=n.FastifyNames||(n.FastifyNames={})).MIDDLEWARE="middleware",i.REQUEST_HANDLER="request handler"},512069,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.spanRequestSymbol=Symbol("opentelemetry.instrumentation.fastify.request_active_span")},714820,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(512069);function i(e){return"object"==typeof e&&e&&"function"==typeof Object.getOwnPropertyDescriptor(e,"then")?.value||!1}n.endSpan=function(e,t){let n=e[o.spanRequestSymbol]||[];n.length&&(n.forEach(e=>{t&&(e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.recordException(t)),e.end()}),delete e[o.spanRequestSymbol])},n.safeExecuteInTheMiddleMaybePromise=function(e,t,n){let r,o;try{o=e(),i(o)&&o.then(e=>t(void 0,e),e=>t(e))}catch(e){r=e}finally{if(!i(o)&&(t(r,o),r&&1))throw r;return o}},n.startSpan=function(e,t,n,r={}){let i=t.startSpan(n,{attributes:r}),a=e[o.spanRequestSymbol]||[];return a.push(i),Object.defineProperty(e,o.spanRequestSymbol,{enumerable:!1,configurable:!0,value:a}),i}},35288,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(808119),s=e.r(976285),l=e.r(399239),u=e.r(714820),c="anonymous",p=new Set(["onTimeout","onRequest","preParsing","preValidation","preSerialization","preHandler","onSend","onResponse","onError"]);class _ extends i.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-fastify-v3","0.1.0",e)}init(){return[new i.InstrumentationNodeModuleDefinition("fastify",[">=3.0.0 <4"],e=>this._patchConstructor(e))]}_hookOnRequest(){let e=this;return function(t,n,i){if(!e.isEnabled())return i();e._wrap(n,"send",e._patchSend());let a=o.getRPCMetadata(r.context.active()),l=t.routeOptions?t.routeOptions.url:t.routerPath;l&&a?.type===o.RPCType.HTTP&&(a.route=l);let u=t.method||"GET";s.getIsolationScope().setTransactionName(`${u} ${l}`),i()}}_wrapHandler(e,t,n,o){let i=this;return this._diag.debug("Patching fastify route.handler function"),function(...a){if(!i.isEnabled())return n.apply(this,a);let s=n.name||e||c,p=`${l.FastifyNames.MIDDLEWARE} - ${s}`,_=a[1],T=u.startSpan(_,i.tracer,p,{[l.AttributeNames.FASTIFY_TYPE]:l.FastifyTypes.MIDDLEWARE,[l.AttributeNames.PLUGIN_NAME]:e,[l.AttributeNames.HOOK_NAME]:t}),d=o&&a[a.length-1];return d&&(a[a.length-1]=function(...e){u.endSpan(_),d.apply(this,e)}),r.context.with(r.trace.setSpan(r.context.active(),T),()=>u.safeExecuteInTheMiddleMaybePromise(()=>n.apply(this,a),e=>{e instanceof Error&&(T.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),T.recordException(e)),o||u.endSpan(_)}))}}_wrapAddHook(){let e=this;return this._diag.debug("Patching fastify server.addHook function"),function(t){return function(...n){let r=n[0],o=n[1],i=this.pluginName;if(!p.has(r))return t.apply(this,n);let a="function"==typeof n[n.length-1]&&"AsyncFunction"!==o.constructor.name;return t.apply(this,[r,e._wrapHandler(i,r,o,a)])}}}_patchConstructor(e){let t=this;function n(...r){let o,i=e.fastify.apply(this,r);return i.addHook("onRequest",t._hookOnRequest()),i.addHook("preHandler",t._hookPreHandler()),(o=s.getClient())&&o.on("spanStart",e=>{T(e)}),t._wrap(i,"addHook",t._wrapAddHook()),i}return void 0!==e.errorCodes&&(n.errorCodes=e.errorCodes),n.fastify=n,n.default=n,n}_patchSend(){let e=this;return this._diag.debug("Patching fastify reply.send function"),function(t){return function(...n){let r=n[0];return e.isEnabled()?i.safeExecuteInTheMiddle(()=>t.apply(this,n),e=>{!e&&r instanceof Error&&(e=r),u.endSpan(this,e)}):t.apply(this,n)}}}_hookPreHandler(){let e=this;return this._diag.debug("Patching fastify preHandler function"),function(t,n,o){if(!e.isEnabled())return o();let s=t.routeOptions?.handler||t.context?.handler,p=s?.name.startsWith("bound ")?s.name.substring(6):s?.name,_=`${l.FastifyNames.REQUEST_HANDLER} - ${p||this.pluginName||c}`,d={[l.AttributeNames.PLUGIN_NAME]:this.pluginName,[l.AttributeNames.FASTIFY_TYPE]:l.FastifyTypes.REQUEST_HANDLER,[a.SEMATTRS_HTTP_ROUTE]:t.routeOptions?t.routeOptions.url:t.routerPath};p&&(d[l.AttributeNames.FASTIFY_NAME]=p);let E=u.startSpan(n,e.tracer,_,d);T(E);let{requestHook:S}=e.getConfig();return S&&i.safeExecuteInTheMiddle(()=>S(E,{request:t}),t=>{t&&e._diag.error("request hook failed",t)},!0),r.context.with(r.trace.setSpan(r.context.active(),E),()=>{o()})}}}function T(e){let t=s.spanToJSON(e).data,n=t["fastify.type"];if(t[s.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[s.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[s.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.fastify`});let r=t["fastify.name"]||t["plugin.name"]||t["hook.name"];if("string"==typeof r){let t=r.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");e.updateName(t)}}n.FastifyInstrumentationV3=_},602878,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(677652),o=e.r(740071),i=e.r(976285),a=e.r(625331),s=e.r(866779),l=e.r(35288),u="Fastify",c=a.generateInstrumentOnce(`${u}.v3`,()=>new l.FastifyInstrumentationV3);function p(){let e=i.getClient();if(e)return e.getIntegrationByName(u)}function _(e,t,n,r){let o=p()?.getShouldHandleError()||d;if("diagnostics-channel"===r&&(this.diagnosticsChannelExists=!0),this.diagnosticsChannelExists&&"onError-hook"===r){s.DEBUG_BUILD&&i.debug.warn("Fastify error handler was already registered via diagnostics channel.","You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.");return}o(e,t,n)&&i.captureException(e,{mechanism:{handled:!1,type:"auto.function.fastify"}})}let T=a.generateInstrumentOnce(`${u}.v5`,()=>{let e=new o.FastifyOtelInstrumentation,t=e.plugin();return r.subscribe("fastify.initialization",e=>{let n=e.fastify;n?.register(t).after(e=>{let t;e?s.DEBUG_BUILD&&i.debug.error("Failed to setup Fastify instrumentation",e):((t=i.getClient())&&t.on("spanStart",e=>{E(e)}),n&&n.addHook("onRequest",async(e,t)=>{if(e.opentelemetry){let{span:t}=e.opentelemetry();t&&E(t)}let n=e.routeOptions?.url,r=e.method||"GET";i.getIsolationScope().setTransactionName(`${r} ${n}`)}))})}),r.subscribe("tracing:fastify.request.handler:error",e=>{let{error:t,request:n,reply:r}=e;_.call(_,t,n,r,"diagnostics-channel")}),e});function d(e,t,n){let r=n.statusCode;return r>=500||r<=299}function E(e){let t=i.spanToJSON(e),n=t.description,r=t.data,o=r["fastify.type"],a="hook"===o,s=o===n?.startsWith("handler -"),l="request"===n||"request-handler"===o;if(r[i.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!s&&!l&&!a)return;e.setAttributes({[i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[i.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${a?"hook":s?"middleware":l?"request_handler":""}.fastify`});let u=r["fastify.name"]||r["plugin.name"]||r["hook.name"];if("string"==typeof u){let t=u.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");e.updateName(t)}}n.fastifyIntegration=i.defineIntegration((e={})=>(({shouldHandleError:e})=>{let t;return{name:u,setupOnce(){t=e||d,c(),T()},getShouldHandleError:()=>t,setShouldHandleError(e){t=e}}})(e)),n.instrumentFastify=T,n.instrumentFastifyV3=c,n.setupFastifyErrorHandler=function(e,t){t?.shouldHandleError&&p()?.setShouldHandleError(t.shouldHandleError);let n=Object.assign(function(e,t,n){e.addHook("onError",async(e,t,n)=>{_.call(_,n,e,t,"onError-hook")}),n()},{[Symbol.for("skip-override")]:!0,[Symbol.for("fastify.display-name")]:"sentry-fastify-error-handler"});e.register(n)}},187477,(e,t,n)=>{"use strict";var r,o,i;Object.defineProperty(n,"__esModule",{value:!0}),n.SpanNames=n.TokenKind=n.AllowedOperationTypes=void 0,(r=n.AllowedOperationTypes||(n.AllowedOperationTypes={})).QUERY="query",r.MUTATION="mutation",r.SUBSCRIPTION="subscription",(o=n.TokenKind||(n.TokenKind={})).SOF="",o.EOF="",o.BANG="!",o.DOLLAR="$",o.AMP="&",o.PAREN_L="(",o.PAREN_R=")",o.SPREAD="...",o.COLON=":",o.EQUALS="=",o.AT="@",o.BRACKET_L="[",o.BRACKET_R="]",o.BRACE_L="{",o.PIPE="|",o.BRACE_R="}",o.NAME="Name",o.INT="Int",o.FLOAT="Float",o.STRING="String",o.BLOCK_STRING="BlockString",o.COMMENT="Comment",(i=n.SpanNames||(n.SpanNames={})).EXECUTE="graphql.execute",i.PARSE="graphql.parse",i.RESOLVE="graphql.resolve",i.VALIDATE="graphql.validate",i.SCHEMA_VALIDATE="graphql.validateSchema",i.SCHEMA_PARSE="graphql.parseSchema"},476424,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).SOURCE="graphql.source",r.FIELD_NAME="graphql.field.name",r.FIELD_PATH="graphql.field.path",r.FIELD_TYPE="graphql.field.type",r.PARENT_NAME="graphql.parent.name",r.OPERATION_TYPE="graphql.operation.type",r.OPERATION_NAME="graphql.operation.name",r.VARIABLES="graphql.variables.",r.ERROR_VALIDATION_NAME="graphql.validation.error"},46931,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.OTEL_GRAPHQL_DATA_SYMBOL=n.OTEL_PATCHED_SYMBOL=void 0,n.OTEL_PATCHED_SYMBOL=Symbol.for("opentelemetry.patched"),n.OTEL_GRAPHQL_DATA_SYMBOL=Symbol.for("opentelemetry.graphql_data")},718496,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.OPERATION_NOT_SUPPORTED=void 0,e.r(46931),n.OPERATION_NOT_SUPPORTED="Operation$operationName$not supported"},931418,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.wrapFieldResolver=n.wrapFields=n.getSourceFromLocation=n.getOperation=n.endSpan=n.addSpanSource=n.addInputVariableAttributes=n.isPromise=void 0;let r=e.r(357762),o=e.r(187477),i=e.r(476424),a=e.r(46931),s=Object.values(o.AllowedOperationTypes);function l(e,t,n,r,o){let a=d(t,n,r,o);e.setAttribute(i.AttributeNames.SOURCE,a)}function u(e,t){return e[a.OTEL_GRAPHQL_DATA_SYMBOL].fields[t.join(".")]}function c(e,t){for(let n=t.length-1;n>0;n--){let r=u(e,t.slice(0,n));if(r)return r.span}return p(e)}function p(e){return e[a.OTEL_GRAPHQL_DATA_SYMBOL].span}n.isPromise=e=>"function"==typeof e?.then,n.addInputVariableAttributes=function(e,t){Object.entries(t).forEach(([t,n])=>{!function e(t,n,r){Array.isArray(r)?r.forEach((r,o)=>{e(t,`${n}.${o}`,r)}):r instanceof Object?Object.entries(r).forEach(([r,o])=>{e(t,`${n}.${r}`,o)}):t.setAttribute(`${i.AttributeNames.VARIABLES}${String(n)}`,r)}(e,t,n)})},n.addSpanSource=l,n.endSpan=function(e,t){t&&e.recordException(t),e.end()},n.getOperation=function(e,t){if(e&&Array.isArray(e.definitions))if(t)return e.definitions.filter(e=>-1!==s.indexOf(e?.operation)).find(e=>t===e?.name?.value);else return e.definitions.find(e=>-1!==s.indexOf(e?.operation))};function _(e,t){let n="";for(let r=0;rs){l=l.next,u=l?.line;continue}let e=l.value||l.kind,n="";(!t&&T.indexOf(l.kind)>=0&&(e="*"),l.kind===o.TokenKind.STRING&&(e=`"${e}"`),l.kind===o.TokenKind.EOF&&(e=""),l.line>u)?(i+=_("\n",l.line-u),u=l.line,n=_(" ",l.column-1)):l.line===l.prev?.line&&(n=_(" ",l.start-(l.prev?.end||0))),i+=n+e,l&&(l=l.next)}}return i}n.getSourceFromLocation=d,n.wrapFields=function e(t,n,r){if(!t||t[a.OTEL_PATCHED_SYMBOL])return;let o=t.getFields();t[a.OTEL_PATCHED_SYMBOL]=!0,Object.keys(o).forEach(t=>{let i=o[t];if(i&&(i.resolve&&(i.resolve=A(n,r,i.resolve)),i.type))for(let t of function e(t){var n,r;return"ofType"in t?e(t.ofType):"getTypes"in(n=t)&&"function"==typeof n.getTypes?t.getTypes():"getFields"in(r=t)&&"function"==typeof r.getFields?[t]:[]}(i.type))e(t,n,r)})};let E=(e,t,n)=>{n&&(e.recordException(t),e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.end())},S=(e,t)=>{t&&e.end()};function A(e,t,s,_=!1){if(T[a.OTEL_PATCHED_SYMBOL]||"function"!=typeof s)return s;function T(T,d,A,g){let m;if(!s)return;let h=t();if(h.ignoreTrivialResolveSpans&&_&&("object"==typeof T&&null!==T||"function"==typeof T)&&"function"!=typeof T[g.fieldName]||!A[a.OTEL_GRAPHQL_DATA_SYMBOL])return s.call(this,T,d,A,g);let R=function(e,t){let n=[],r=t;for(;r;){let t=r.key;e&&"number"==typeof t&&(t="*"),n.push(String(t)),r=r.prev}return n.reverse()}(h.mergeItems,g&&g.path),f=R.filter(e=>"string"==typeof e).length,N=!1;if(h.depth>=0&&h.depth"Field"===e.kind))&&l(N,I.loc,d().allowValues,O.loc?.start,O.loc?.end),N)},m=n,h=_,R=y,m[a.OTEL_GRAPHQL_DATA_SYMBOL].fields[h.join(".")]=R,{field:y,spanAdded:!0}}(e,t,A,g,R);m=n.span,N=s}return r.context.with(r.trace.setSpan(r.context.active(),m),()=>{try{let e=s.call(this,T,d,A,g);if((0,n.isPromise)(e))return e.then(e=>(S(m,N),e),e=>{throw E(m,e,N),e});return S(m,N),e}catch(e){throw E(m,e,N),e}})}return T[a.OTEL_PATCHED_SYMBOL]=!0,T}n.wrapFieldResolver=A},98582,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-graphql"},400932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GraphQLInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(187477),a=e.r(476424),s=e.r(46931),l=e.r(718496),u=e.r(931418),c=e.r(98582),p={mergeItems:!1,depth:-1,allowValues:!1,ignoreResolveSpans:!1},_=[">=14.0.0 <17"];class T extends o.InstrumentationBase{constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...p,...e})}setConfig(e={}){super.setConfig({...p,...e})}init(){let e=new o.InstrumentationNodeModuleDefinition("graphql",_);return e.files.push(this._addPatchingExecute()),e.files.push(this._addPatchingParser()),e.files.push(this._addPatchingValidate()),e}_addPatchingExecute(){return new o.InstrumentationNodeModuleFile("graphql/execution/execute.js",_,e=>((0,o.isWrapped)(e.execute)&&this._unwrap(e,"execute"),this._wrap(e,"execute",this._patchExecute(e.defaultFieldResolver)),e),e=>{e&&this._unwrap(e,"execute")})}_addPatchingParser(){return new o.InstrumentationNodeModuleFile("graphql/language/parser.js",_,e=>((0,o.isWrapped)(e.parse)&&this._unwrap(e,"parse"),this._wrap(e,"parse",this._patchParse()),e),e=>{e&&this._unwrap(e,"parse")})}_addPatchingValidate(){return new o.InstrumentationNodeModuleFile("graphql/validation/validate.js",_,e=>((0,o.isWrapped)(e.validate)&&this._unwrap(e,"validate"),this._wrap(e,"validate",this._patchValidate()),e),e=>{e&&this._unwrap(e,"validate")})}_patchExecute(e){let t=this;return function(n){return function(){let i;if(arguments.length>=2){let n=arguments;i=t._wrapExecuteArgs(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],e)}else{let n=arguments[0];i=t._wrapExecuteArgs(n.schema,n.document,n.rootValue,n.contextValue,n.variableValues,n.operationName,n.fieldResolver,n.typeResolver,e)}let a=(0,u.getOperation)(i.document,i.operationName),l=t._createExecuteSpan(a,i);return i.contextValue[s.OTEL_GRAPHQL_DATA_SYMBOL]={source:i.document?i.document||i.document[s.OTEL_GRAPHQL_DATA_SYMBOL]:void 0,span:l,fields:{}},r.context.with(r.trace.setSpan(r.context.active(),l),()=>(0,o.safeExecuteInTheMiddle)(()=>n.apply(this,[i]),(e,n)=>{t._handleExecutionResult(l,e,n)}))}}}_handleExecutionResult(e,t,n){let r=this.getConfig();if(void 0===n||t)return void(0,u.endSpan)(e,t);if((0,u.isPromise)(n))n.then(t=>{"function"!=typeof r.responseHook?(0,u.endSpan)(e):this._executeResponseHook(e,t)},t=>{(0,u.endSpan)(e,t)});else{if("function"!=typeof r.responseHook)return void(0,u.endSpan)(e);this._executeResponseHook(e,n)}}_executeResponseHook(e,t){let{responseHook:n}=this.getConfig();n&&(0,o.safeExecuteInTheMiddle)(()=>{n(e,t)},t=>{t&&this._diag.error("Error running response hook",t),(0,u.endSpan)(e,void 0)},!0)}_patchParse(){let e=this;return function(t){return function(n,r){return e._parse(this,t,n,r)}}}_patchValidate(){let e=this;return function(t){return function(n,r,o,i,a){return e._validate(this,t,n,r,o,a,i)}}}_parse(e,t,n,a){let s=this.getConfig(),l=this.tracer.startSpan(i.SpanNames.PARSE);return r.context.with(r.trace.setSpan(r.context.active(),l),()=>(0,o.safeExecuteInTheMiddle)(()=>t.call(e,n,a),(e,t)=>{t&&((0,u.getOperation)(t)?t.loc&&(0,u.addSpanSource)(l,t.loc,s.allowValues):l.updateName(i.SpanNames.SCHEMA_PARSE)),(0,u.endSpan)(l,e)}))}_validate(e,t,n,s,l,c,p){let _=this.tracer.startSpan(i.SpanNames.VALIDATE,{});return r.context.with(r.trace.setSpan(r.context.active(),_),()=>(0,o.safeExecuteInTheMiddle)(()=>t.call(e,n,s,l,p,c),(e,t)=>{s.loc||_.updateName(i.SpanNames.SCHEMA_VALIDATE),t&&t.length&&_.recordException({name:a.AttributeNames.ERROR_VALIDATION_NAME,message:JSON.stringify(t)}),(0,u.endSpan)(_,e)}))}_createExecuteSpan(e,t){let n=this.getConfig(),r=this.tracer.startSpan(i.SpanNames.EXECUTE,{});if(e){let{operation:t,name:n}=e;r.setAttribute(a.AttributeNames.OPERATION_TYPE,t);let o=n?.value;o?(r.setAttribute(a.AttributeNames.OPERATION_NAME,o),r.updateName(`${t} ${o}`)):r.updateName(t)}else{let e=" ";t.operationName&&(e=` "${t.operationName}" `),e=l.OPERATION_NOT_SUPPORTED.replace("$operationName$",e),r.setAttribute(a.AttributeNames.OPERATION_NAME,e)}return t.document?.loc&&(0,u.addSpanSource)(r,t.document.loc,n.allowValues),t.variableValues&&n.allowValues&&(0,u.addInputVariableAttributes)(r,t.variableValues),r}_wrapExecuteArgs(e,t,n,r,o,i,a,l,c){if(r||(r={}),r[s.OTEL_GRAPHQL_DATA_SYMBOL]||this.getConfig().ignoreResolveSpans)return{schema:e,document:t,rootValue:n,contextValue:r,variableValues:o,operationName:i,fieldResolver:a,typeResolver:l};let p=null==a,_=a??c;return a=(0,u.wrapFieldResolver)(this.tracer,()=>this.getConfig(),_,p),e&&((0,u.wrapFields)(e.getQueryType(),this.tracer,()=>this.getConfig()),(0,u.wrapFields)(e.getMutationType(),this.tracer,()=>this.getConfig())),{schema:e,document:t,rootValue:n,contextValue:r,variableValues:o,operationName:i,fieldResolver:a,typeResolver:l}}}n.GraphQLInstrumentation=T},928683,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GraphQLInstrumentation=void 0;var r=e.r(400932);Object.defineProperty(n,"GraphQLInstrumentation",{enumerable:!0,get:function(){return r.GraphQLInstrumentation}})},176571,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(928683),i=e.r(976285),a=e.r(625331),s=e.r(779607),l="Graphql",u=a.generateInstrumentOnce(l,o.GraphQLInstrumentation,e=>{let t=c(e);return{...t,responseHook(e,n){a.addOriginToSpan(e,"auto.graphql.otel.graphql"),n.errors?.length&&!i.spanToJSON(e).status&&e.setStatus({code:r.SpanStatusCode.ERROR});let o=i.spanToJSON(e).data,l=o["graphql.operation.type"],u=o["graphql.operation.name"];if(t.useOperationNameForRootSpan&&l){let t=i.getRootSpan(e),n=i.spanToJSON(t).data[s.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION]||[],r=u?`${l} ${u}`:`${l}`;Array.isArray(n)?(n.push(r),t.setAttribute(s.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,n)):"string"==typeof n?t.setAttribute(s.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,[n,r]):t.setAttribute(s.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,r),i.spanToJSON(t).data["original-description"]||t.setAttribute("original-description",i.spanToJSON(t).description),t.updateName(`${i.spanToJSON(t).data["original-description"]} (${function(e){if(Array.isArray(e)){let t=e.slice().sort();return t.length<=5?t.join(", "):`${t.slice(0,5).join(", ")}, +${t.length-5}`}return`${e}`}(n)})`)}}}});function c(e){return{ignoreResolveSpans:!0,ignoreTrivialResolveSpans:!0,useOperationNameForRootSpan:!0,...e}}n.graphqlIntegration=i.defineIntegration((e={})=>({name:l,setupOnce(){u(c(e))}})),n.instrumentGraphql=u},233787,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EVENT_LISTENERS_SET=void 0,n.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.kafkajs.eventListenersSet")},513616,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.bufferTextMapGetter=void 0,n.bufferTextMapGetter={get(e,t){if(e){for(let n of Object.keys(e))if(n===t||n.toLowerCase()===t)return e[n]?.toString()}},keys:e=>e?Object.keys(e):[]}},996292,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_MESSAGING_PROCESS_DURATION=n.METRIC_MESSAGING_CLIENT_SENT_MESSAGES=n.METRIC_MESSAGING_CLIENT_OPERATION_DURATION=n.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES=n.MESSAGING_SYSTEM_VALUE_KAFKA=n.MESSAGING_OPERATION_TYPE_VALUE_SEND=n.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE=n.MESSAGING_OPERATION_TYPE_VALUE_PROCESS=n.ATTR_MESSAGING_SYSTEM=n.ATTR_MESSAGING_OPERATION_TYPE=n.ATTR_MESSAGING_OPERATION_NAME=n.ATTR_MESSAGING_KAFKA_OFFSET=n.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE=n.ATTR_MESSAGING_KAFKA_MESSAGE_KEY=n.ATTR_MESSAGING_DESTINATION_PARTITION_ID=n.ATTR_MESSAGING_DESTINATION_NAME=n.ATTR_MESSAGING_BATCH_MESSAGE_COUNT=void 0,n.ATTR_MESSAGING_BATCH_MESSAGE_COUNT="messaging.batch.message_count",n.ATTR_MESSAGING_DESTINATION_NAME="messaging.destination.name",n.ATTR_MESSAGING_DESTINATION_PARTITION_ID="messaging.destination.partition.id",n.ATTR_MESSAGING_KAFKA_MESSAGE_KEY="messaging.kafka.message.key",n.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE="messaging.kafka.message.tombstone",n.ATTR_MESSAGING_KAFKA_OFFSET="messaging.kafka.offset",n.ATTR_MESSAGING_OPERATION_NAME="messaging.operation.name",n.ATTR_MESSAGING_OPERATION_TYPE="messaging.operation.type",n.ATTR_MESSAGING_SYSTEM="messaging.system",n.MESSAGING_OPERATION_TYPE_VALUE_PROCESS="process",n.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE="receive",n.MESSAGING_OPERATION_TYPE_VALUE_SEND="send",n.MESSAGING_SYSTEM_VALUE_KAFKA="kafka",n.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES="messaging.client.consumed.messages",n.METRIC_MESSAGING_CLIENT_OPERATION_DURATION="messaging.client.operation.duration",n.METRIC_MESSAGING_CLIENT_SENT_MESSAGES="messaging.client.sent.messages",n.METRIC_MESSAGING_PROCESS_DURATION="messaging.process.duration"},419585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.23.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-kafkajs"},803515,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KafkaJsInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(233787),s=e.r(513616),l=e.r(996292),u=e.r(419585);function c(e,t,n){return r=>{e.add(t,{...n,...r?{[i.ATTR_ERROR_TYPE]:r}:{}})}}function p(e,t,n){return r=>{e.record((Date.now()-t)/1e3,{...n,...r?{[i.ATTR_ERROR_TYPE]:r}:{}})}}let _=[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10];class T extends o.InstrumentationBase{constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e)}_updateMetricInstruments(){this._clientDuration=this.meter.createHistogram(l.METRIC_MESSAGING_CLIENT_OPERATION_DURATION,{advice:{explicitBucketBoundaries:_}}),this._sentMessages=this.meter.createCounter(l.METRIC_MESSAGING_CLIENT_SENT_MESSAGES),this._consumedMessages=this.meter.createCounter(l.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES),this._processDuration=this.meter.createHistogram(l.METRIC_MESSAGING_PROCESS_DURATION,{advice:{explicitBucketBoundaries:_}})}init(){let e=e=>{(0,o.isWrapped)(e?.Kafka?.prototype.producer)&&this._unwrap(e.Kafka.prototype,"producer"),(0,o.isWrapped)(e?.Kafka?.prototype.consumer)&&this._unwrap(e.Kafka.prototype,"consumer")};return new o.InstrumentationNodeModuleDefinition("kafkajs",[">=0.3.0 <3"],t=>(e(t),this._wrap(t?.Kafka?.prototype,"producer",this._getProducerPatch()),this._wrap(t?.Kafka?.prototype,"consumer",this._getConsumerPatch()),t),e)}_getConsumerPatch(){let e=this;return t=>function(...n){let r=t.apply(this,n);return(0,o.isWrapped)(r.run)&&e._unwrap(r,"run"),e._wrap(r,"run",e._getConsumerRunPatch()),e._setKafkaEventListeners(r),r}}_setKafkaEventListeners(e){e[a.EVENT_LISTENERS_SET]||(e.events?.REQUEST&&e.on(e.events.REQUEST,this._recordClientDurationMetric.bind(this)),e[a.EVENT_LISTENERS_SET]=!0)}_recordClientDurationMetric(e){let[t,n]=e.payload.broker.split(":");this._clientDuration.record(e.payload.duration/1e3,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:`${e.payload.apiName}`,[i.ATTR_SERVER_ADDRESS]:t,[i.ATTR_SERVER_PORT]:Number.parseInt(n,10)})}_getProducerPatch(){let e=this;return t=>function(...n){let r=t.apply(this,n);return(0,o.isWrapped)(r.sendBatch)&&e._unwrap(r,"sendBatch"),e._wrap(r,"sendBatch",e._getSendBatchPatch()),(0,o.isWrapped)(r.send)&&e._unwrap(r,"send"),e._wrap(r,"send",e._getSendPatch()),(0,o.isWrapped)(r.transaction)&&e._unwrap(r,"transaction"),e._wrap(r,"transaction",e._getProducerTransactionPatch()),e._setKafkaEventListeners(r),r}}_getConsumerRunPatch(){let e=this;return t=>function(...n){let r=n[0];return r?.eachMessage&&((0,o.isWrapped)(r.eachMessage)&&e._unwrap(r,"eachMessage"),e._wrap(r,"eachMessage",e._getConsumerEachMessagePatch())),r?.eachBatch&&((0,o.isWrapped)(r.eachBatch)&&e._unwrap(r,"eachBatch"),e._wrap(r,"eachBatch",e._getConsumerEachBatchPatch())),t.call(this,r)}}_getConsumerEachMessagePatch(){let e=this;return t=>function(...n){let o=n[0],i=r.propagation.extract(r.ROOT_CONTEXT,o.message.headers,s.bufferTextMapGetter),a=e._startConsumerSpan({topic:o.topic,message:o.message,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,ctx:i,attributes:{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.partition)}}),u=[p(e._processDuration,Date.now(),{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:o.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.partition)}),c(e._consumedMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:o.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.partition)})],_=r.context.with(r.trace.setSpan(i,a),()=>t.apply(this,n));return e._endSpansOnPromise([a],u,_)}}_getConsumerEachBatchPatch(){return e=>{let t=this;return function(...n){let o=n[0],i=t._startConsumerSpan({topic:o.batch.topic,message:void 0,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,ctx:r.ROOT_CONTEXT,attributes:{[l.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]:o.batch.messages.length,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.batch.partition)}});return r.context.with(r.trace.setSpan(r.context.active(),i),()=>{let a=Date.now(),u=[],_=[c(t._consumedMessages,o.batch.messages.length,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:o.batch.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.batch.partition)})];o.batch.messages.forEach(e=>{let n,i=r.propagation.extract(r.ROOT_CONTEXT,e.headers,s.bufferTextMapGetter),c=r.trace.getSpan(i)?.spanContext();c&&(n={context:c}),u.push(t._startConsumerSpan({topic:o.batch.topic,message:e,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,link:n,attributes:{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.batch.partition)}})),_.push(p(t._processDuration,a,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:o.batch.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.batch.partition)}))});let T=e.apply(this,n);return u.unshift(i),t._endSpansOnPromise(u,_,T)})}}}_getProducerTransactionPatch(){let e=this;return t=>function(...n){let o=e.tracer.startSpan("transaction"),i=t.apply(this,n);return i.then(t=>{let n=t.send;t.send=function(...t){return r.context.with(r.trace.setSpan(r.context.active(),o),()=>e._getSendPatch()(n).apply(this,t).catch(e=>{throw o.setStatus({code:r.SpanStatusCode.ERROR,message:e?.message}),o.recordException(e),e}))};let i=t.sendBatch;t.sendBatch=function(...t){return r.context.with(r.trace.setSpan(r.context.active(),o),()=>e._getSendBatchPatch()(i).apply(this,t).catch(e=>{throw o.setStatus({code:r.SpanStatusCode.ERROR,message:e?.message}),o.recordException(e),e}))};let a=t.commit;t.commit=function(...t){let n=a.apply(this,t).then(()=>{o.setStatus({code:r.SpanStatusCode.OK})});return e._endSpansOnPromise([o],[],n)};let s=t.abort;t.abort=function(...t){let n=s.apply(this,t);return e._endSpansOnPromise([o],[],n)}}).catch(e=>{o.setStatus({code:r.SpanStatusCode.ERROR,message:e?.message}),o.recordException(e),o.end()}),i}}_getSendBatchPatch(){let e=this;return t=>function(...n){let r=n[0].topicMessages||[],o=[],i=[];r.forEach(t=>{t.messages.forEach(n=>{o.push(e._startProducerSpan(t.topic,n)),i.push(c(e._sentMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_DESTINATION_NAME]:t.topic,...void 0!==n.partition?{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(n.partition)}:{}}))})});let a=t.apply(this,n);return e._endSpansOnPromise(o,i,a)}}_getSendPatch(){let e=this;return t=>function(...n){let r=n[0],o=r.messages.map(t=>e._startProducerSpan(r.topic,t)),i=r.messages.map(t=>c(e._sentMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_DESTINATION_NAME]:r.topic,...void 0!==t.partition?{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(t.partition)}:{}})),a=t.apply(this,n);return e._endSpansOnPromise(o,i,a)}}_endSpansOnPromise(e,t,n){return Promise.resolve(n).then(e=>(t.forEach(e=>e()),e)).catch(n=>{let o,a=i.ERROR_TYPE_VALUE_OTHER;throw"string"==typeof n||void 0===n?o=n:"object"==typeof n&&Object.prototype.hasOwnProperty.call(n,"message")&&(o=n.message,a=n.constructor.name),t.forEach(e=>e(a)),e.forEach(e=>{e.setAttribute(i.ATTR_ERROR_TYPE,a),e.setStatus({code:r.SpanStatusCode.ERROR,message:o})}),n}).finally(()=>{e.forEach(e=>e.end())})}_startConsumerSpan({topic:e,message:t,operationType:n,ctx:i,link:a,attributes:s}){let u=n===l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?"poll":n,c=this.tracer.startSpan(`${u} ${e}`,{kind:n===l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?r.SpanKind.CLIENT:r.SpanKind.CONSUMER,attributes:{...s,[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_DESTINATION_NAME]:e,[l.ATTR_MESSAGING_OPERATION_TYPE]:n,[l.ATTR_MESSAGING_OPERATION_NAME]:u,[l.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:t?.key?String(t.key):void 0,[l.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!t?.key&&null===t.value||void 0,[l.ATTR_MESSAGING_KAFKA_OFFSET]:t?.offset},links:a?[a]:[]},i),{consumerHook:p}=this.getConfig();return p&&t&&(0,o.safeExecuteInTheMiddle)(()=>p(c,{topic:e,message:t}),e=>{e&&this._diag.error("consumerHook error",e)},!0),c}_startProducerSpan(e,t){let n=this.tracer.startSpan(`send ${e}`,{kind:r.SpanKind.PRODUCER,attributes:{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_DESTINATION_NAME]:e,[l.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:t.key?String(t.key):void 0,[l.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!t.key&&null===t.value||void 0,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:void 0!==t.partition?String(t.partition):void 0,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_OPERATION_TYPE]:l.MESSAGING_OPERATION_TYPE_VALUE_SEND}});t.headers=t.headers??{},r.propagation.inject(r.trace.setSpan(r.context.active(),n),t.headers);let{producerHook:i}=this.getConfig();return i&&(0,o.safeExecuteInTheMiddle)(()=>i(n,{topic:e,message:t}),e=>{e&&this._diag.error("producerHook error",e)},!0),n}}n.KafkaJsInstrumentation=T},5468,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KafkaJsInstrumentation=void 0;var r=e.r(803515);Object.defineProperty(n,"KafkaJsInstrumentation",{enumerable:!0,get:function(){return r.KafkaJsInstrumentation}})},934925,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(5468),o=e.r(976285),i=e.r(625331),a="Kafka",s=i.generateInstrumentOnce(a,()=>new r.KafkaJsInstrumentation({consumerHook(e){i.addOriginToSpan(e,"auto.kafkajs.otel.consumer")},producerHook(e){i.addOriginToSpan(e,"auto.kafkajs.otel.producer")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentKafka=s,n.kafkaIntegration=l},959616,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.58.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-lru-memoizer"},726974,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.LruMemoizerInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(959616);class a extends o.InstrumentationBase{constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new o.InstrumentationNodeModuleDefinition("lru-memoizer",[">=1.3 <4"],e=>{let t=function(){let t=e.apply(this,arguments);return function(){let e=[...arguments],n=e.pop(),o="function"==typeof n?r.context.bind(r.context.active(),n):n;return e.push(o),t.apply(this,e)}};return t.sync=e.sync,t},void 0)]}}n.LruMemoizerInstrumentation=a},97630,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.LruMemoizerInstrumentation=void 0;var r=e.r(726974);Object.defineProperty(n,"LruMemoizerInstrumentation",{enumerable:!0,get:function(){return r.LruMemoizerInstrumentation}})},888804,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(97630),o=e.r(976285),i=e.r(625331),a="LruMemoizer",s=i.generateInstrumentOnce(a,()=>new r.LruMemoizerInstrumentation),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentLruMemoizer=s,n.lruMemoizerIntegration=l},301506,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTIONS_USAGE=n.DB_SYSTEM_VALUE_MONGODB=n.DB_SYSTEM_NAME_VALUE_MONGODB=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_OPERATION=n.ATTR_DB_NAME=n.ATTR_DB_MONGODB_COLLECTION=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",n.ATTR_DB_NAME="db.name",n.ATTR_DB_OPERATION="db.operation",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb",n.DB_SYSTEM_VALUE_MONGODB="mongodb",n.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},488067,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.MongodbCommandType=void 0,(r=n.MongodbCommandType||(n.MongodbCommandType={})).CREATE_INDEXES="createIndexes",r.FIND_AND_MODIFY="findAndModify",r.IS_MASTER="isMaster",r.COUNT="count",r.AGGREGATE="aggregate",r.UNKNOWN="unknown"},409179,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.67.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mongodb"},121806,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongoDBInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(301506),s=e.r(488067),l=e.r(409179),u={requireParentSpan:!0};class c extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,{...u,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...u,...e})}_updateMetricInstruments(){this._connectionsUsage=this.meter.createUpDownCounter(a.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(e,t,n){this._connectionsUsage?.add(e,{"pool.name":t,state:n})}init(){let{v3PatchConnection:e,v3UnpatchConnection:t}=this._getV3ConnectionPatches(),{v4PatchConnect:n,v4UnpatchConnect:r}=this._getV4ConnectPatches(),{v4PatchConnectionCallback:i,v4PatchConnectionPromise:a,v4UnpatchConnection:s}=this._getV4ConnectionPatches(),{v4PatchConnectionPool:l,v4UnpatchConnectionPool:u}=this._getV4ConnectionPoolPatches(),{v4PatchSessions:c,v4UnpatchSessions:p}=this._getV4SessionsPatches();return[new o.InstrumentationNodeModuleDefinition("mongodb",[">=3.3.0 <4"],void 0,void 0,[new o.InstrumentationNodeModuleFile("mongodb/lib/core/wireprotocol/index.js",[">=3.3.0 <4"],e,t)]),new o.InstrumentationNodeModuleDefinition("mongodb",[">=4.0.0 <8"],void 0,void 0,[new o.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=4.0.0 <6.4"],i,s),new o.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=6.4.0 <8"],a,s),new o.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection_pool.js",[">=4.0.0 <6.4"],l,u),new o.InstrumentationNodeModuleFile("mongodb/lib/cmap/connect.js",[">=4.0.0 <8"],n,r),new o.InstrumentationNodeModuleFile("mongodb/lib/sessions.js",[">=4.0.0 <8"],c,p)])]}_getV3ConnectionPatches(){return{v3PatchConnection:e=>((0,o.isWrapped)(e.insert)&&this._unwrap(e,"insert"),this._wrap(e,"insert",this._getV3PatchOperation("insert")),(0,o.isWrapped)(e.remove)&&this._unwrap(e,"remove"),this._wrap(e,"remove",this._getV3PatchOperation("remove")),(0,o.isWrapped)(e.update)&&this._unwrap(e,"update"),this._wrap(e,"update",this._getV3PatchOperation("update")),(0,o.isWrapped)(e.command)&&this._unwrap(e,"command"),this._wrap(e,"command",this._getV3PatchCommand()),(0,o.isWrapped)(e.query)&&this._unwrap(e,"query"),this._wrap(e,"query",this._getV3PatchFind()),(0,o.isWrapped)(e.getMore)&&this._unwrap(e,"getMore"),this._wrap(e,"getMore",this._getV3PatchCursor()),e),v3UnpatchConnection:e=>{void 0!==e&&(this._unwrap(e,"insert"),this._unwrap(e,"remove"),this._unwrap(e,"update"),this._unwrap(e,"command"),this._unwrap(e,"query"),this._unwrap(e,"getMore"))}}}_getV4SessionsPatches(){return{v4PatchSessions:e=>((0,o.isWrapped)(e.acquire)&&this._unwrap(e,"acquire"),this._wrap(e.ServerSessionPool.prototype,"acquire",this._getV4AcquireCommand()),(0,o.isWrapped)(e.release)&&this._unwrap(e,"release"),this._wrap(e.ServerSessionPool.prototype,"release",this._getV4ReleaseCommand()),e),v4UnpatchSessions:e=>{void 0!==e&&((0,o.isWrapped)(e.acquire)&&this._unwrap(e,"acquire"),(0,o.isWrapped)(e.release)&&this._unwrap(e,"release"))}}}_getV4AcquireCommand(){let e=this;return t=>function(){let n=this.sessions.length,r=t.call(this),o=this.sessions.length;return n===o?e._connCountAdd(1,e._poolName,"used"):n-1===o&&(e._connCountAdd(-1,e._poolName,"idle"),e._connCountAdd(1,e._poolName,"used")),r}}_getV4ReleaseCommand(){let e=this;return t=>function(n){let r=t.call(this,n);return e._connCountAdd(-1,e._poolName,"used"),e._connCountAdd(1,e._poolName,"idle"),r}}_getV4ConnectionPoolPatches(){return{v4PatchConnectionPool:e=>{let t=e.ConnectionPool.prototype;return(0,o.isWrapped)(t.checkOut)&&this._unwrap(t,"checkOut"),this._wrap(t,"checkOut",this._getV4ConnectionPoolCheckOut()),e},v4UnpatchConnectionPool:e=>{void 0!==e&&this._unwrap(e.ConnectionPool.prototype,"checkOut")}}}_getV4ConnectPatches(){return{v4PatchConnect:e=>((0,o.isWrapped)(e.connect)&&this._unwrap(e,"connect"),this._wrap(e,"connect",this._getV4ConnectCommand()),e),v4UnpatchConnect:e=>{void 0!==e&&this._unwrap(e,"connect")}}}_getV4ConnectionPoolCheckOut(){return e=>function(t){let n=r.context.bind(r.context.active(),t);return e.call(this,n)}}_getV4ConnectCommand(){let e=this;return t=>function(n,r){if(1===t.length){let r=t.call(this,n);return r&&"function"==typeof r.then&&r.then(()=>e.setPoolName(n),()=>void 0),r}return t.call(this,n,function(t,o){t||!o||e.setPoolName(n),r(t,o)})}}_getV4ConnectionPatches(){return{v4PatchConnectionCallback:e=>((0,o.isWrapped)(e.Connection.prototype.command)&&this._unwrap(e.Connection.prototype,"command"),this._wrap(e.Connection.prototype,"command",this._getV4PatchCommandCallback()),e),v4PatchConnectionPromise:e=>((0,o.isWrapped)(e.Connection.prototype.command)&&this._unwrap(e.Connection.prototype,"command"),this._wrap(e.Connection.prototype,"command",this._getV4PatchCommandPromise()),e),v4UnpatchConnection:e=>{void 0!==e&&this._unwrap(e.Connection.prototype,"command")}}}_getV3PatchOperation(e){let t=this;return n=>function(o,i,a,s,l){let u=r.trace.getSpan(r.context.active()),c=t._checkSkipInstrumentation(u),p="function"==typeof s?s:l;if(c||"function"!=typeof p||"object"!=typeof a)if("function"==typeof s)return n.call(this,o,i,a,s);else return n.call(this,o,i,a,s,l);let _=t._getV3SpanAttributes(i,o,a[0],e),T=t._spanNameFromAttrs(_),d=t.tracer.startSpan(T,{kind:r.SpanKind.CLIENT,attributes:_}),E=t._patchEnd(d,p);return"function"==typeof s?n.call(this,o,i,a,E):n.call(this,o,i,a,s,E)}}_getV3PatchCommand(){let e=this;return t=>function(n,o,i,a,l){let u=r.trace.getSpan(r.context.active()),p=e._checkSkipInstrumentation(u),_="function"==typeof a?a:l;if(p||"function"!=typeof _||"object"!=typeof i)if("function"==typeof a)return t.call(this,n,o,i,a);else return t.call(this,n,o,i,a,l);let T=c._getCommandType(i),d=T===s.MongodbCommandType.UNKNOWN?void 0:T,E=e._getV3SpanAttributes(o,n,i,d),S=e._spanNameFromAttrs(E),A=e.tracer.startSpan(S,{kind:r.SpanKind.CLIENT,attributes:E}),g=e._patchEnd(A,_);return"function"==typeof a?t.call(this,n,o,i,g):t.call(this,n,o,i,a,g)}}_getV4PatchCommandCallback(){let e=this;return t=>function(n,o,i,a){let s,l=r.trace.getSpan(r.context.active()),u=e._checkSkipInstrumentation(l),c=Object.keys(o)[0];if("object"!=typeof o||o.ismaster||o.hello)return t.call(this,n,o,i,a);if(!u){let t=e._getV4SpanAttributes(this,n,o,c),i=e._spanNameFromAttrs(t);s=e.tracer.startSpan(i,{kind:r.SpanKind.CLIENT,attributes:t})}let p=e._patchEnd(s,a,this.id,c);return t.call(this,n,o,i,p)}}_getV4PatchCommandPromise(){let e=this;return t=>function(...n){let o,[i,a]=n,s=r.trace.getSpan(r.context.active()),l=e._checkSkipInstrumentation(s),u=Object.keys(a)[0];if("object"!=typeof a||a.ismaster||a.hello)return t.apply(this,n);if(!l){let t=e._getV4SpanAttributes(this,i,a,u),n=e._spanNameFromAttrs(t);o=e.tracer.startSpan(n,{kind:r.SpanKind.CLIENT,attributes:t})}let c=e._patchEnd(o,()=>void 0,this.id,u),p=t.apply(this,n);return p.then(e=>c(null,e),e=>c(e)),p}}_getV3PatchFind(){let e=this;return t=>function(n,o,i,a,s,l){let u=r.trace.getSpan(r.context.active()),c=e._checkSkipInstrumentation(u),p="function"==typeof s?s:l;if(c||"function"!=typeof p||"object"!=typeof i)if("function"==typeof s)return t.call(this,n,o,i,a,s);else return t.call(this,n,o,i,a,s,l);let _=e._getV3SpanAttributes(o,n,i,"find"),T=e._spanNameFromAttrs(_),d=e.tracer.startSpan(T,{kind:r.SpanKind.CLIENT,attributes:_}),E=e._patchEnd(d,p);return"function"==typeof s?t.call(this,n,o,i,a,E):t.call(this,n,o,i,a,s,E)}}_getV3PatchCursor(){let e=this;return t=>function(n,o,i,a,s,l){let u=r.trace.getSpan(r.context.active()),c=e._checkSkipInstrumentation(u),p="function"==typeof s?s:l;if(c||"function"!=typeof p)if("function"==typeof s)return t.call(this,n,o,i,a,s);else return t.call(this,n,o,i,a,s,l);let _=e._getV3SpanAttributes(o,n,i.cmd,"getMore"),T=e._spanNameFromAttrs(_),d=e.tracer.startSpan(T,{kind:r.SpanKind.CLIENT,attributes:_}),E=e._patchEnd(d,p);return"function"==typeof s?t.call(this,n,o,i,a,E):t.call(this,n,o,i,a,s,E)}}static _getCommandType(e){if(void 0!==e.createIndexes)return s.MongodbCommandType.CREATE_INDEXES;if(void 0!==e.findandmodify)return s.MongodbCommandType.FIND_AND_MODIFY;if(void 0!==e.ismaster)return s.MongodbCommandType.IS_MASTER;if(void 0!==e.count)return s.MongodbCommandType.COUNT;if(void 0!==e.aggregate)return s.MongodbCommandType.AGGREGATE;else return s.MongodbCommandType.UNKNOWN}_getV4SpanAttributes(e,t,n,r){let o,i,a;if(e){let t="string"==typeof e.address?e.address.split(":"):"";2===t.length&&(o=t[0],i=t[1])}return a=n?.documents&&n.documents[0]?n.documents[0]:n?.cursors?n.cursors:n,this._getSpanAttributes(t.db,t.collection,o,i,a,r)}_getV3SpanAttributes(e,t,n,r){let o,i;if(t&&t.s&&(o=t.s.options?.host??t.s.host,i=(t.s.options?.port??t.s.port)?.toString(),null==o||null==i)){let e=t.description?.address;if(e){let t=e.split(":");o=t[0],i=t[1]}}let[a,s]=e.toString().split("."),l=n?.query??n?.q??n;return this._getSpanAttributes(a,s,o,i,l,r)}_getSpanAttributes(e,t,n,r,s,l){let u={};if(this._dbSemconvStability&o.SemconvStability.OLD&&(u[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_MONGODB,u[a.ATTR_DB_NAME]=e,u[a.ATTR_DB_MONGODB_COLLECTION]=t,u[a.ATTR_DB_OPERATION]=l,u[a.ATTR_DB_CONNECTION_STRING]=`mongodb://${n}:${r}/${e}`),this._dbSemconvStability&o.SemconvStability.STABLE&&(u[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_MONGODB,u[i.ATTR_DB_NAMESPACE]=e,u[i.ATTR_DB_OPERATION_NAME]=l,u[i.ATTR_DB_COLLECTION_NAME]=t),n&&r){this._netSemconvStability&o.SemconvStability.OLD&&(u[a.ATTR_NET_PEER_NAME]=n),this._netSemconvStability&o.SemconvStability.STABLE&&(u[i.ATTR_SERVER_ADDRESS]=n);let e=parseInt(r,10);!isNaN(e)&&(this._netSemconvStability&o.SemconvStability.OLD&&(u[a.ATTR_NET_PEER_PORT]=e),this._netSemconvStability&o.SemconvStability.STABLE&&(u[i.ATTR_SERVER_PORT]=e))}if(s){let{dbStatementSerializer:e}=this.getConfig(),t="function"==typeof e?e:this._defaultDbStatementSerializer.bind(this);(0,o.safeExecuteInTheMiddle)(()=>{let e=t(s);this._dbSemconvStability&o.SemconvStability.OLD&&(u[a.ATTR_DB_STATEMENT]=e),this._dbSemconvStability&o.SemconvStability.STABLE&&(u[i.ATTR_DB_QUERY_TEXT]=e)},e=>{e&&this._diag.error("Error running dbStatementSerializer hook",e)},!0)}return u}_spanNameFromAttrs(e){return this._dbSemconvStability&o.SemconvStability.STABLE?[e[i.ATTR_DB_OPERATION_NAME],e[i.ATTR_DB_COLLECTION_NAME]].filter(e=>e).join(" ")||a.DB_SYSTEM_NAME_VALUE_MONGODB:`mongodb.${e[a.ATTR_DB_OPERATION]||"command"}`}_getDefaultDbStatementReplacer(){let e=new WeakSet;return(t,n)=>"object"==typeof n&&n?e.has(n)?"[Circular]":(e.add(n),n):"?"}_defaultDbStatementSerializer(e){let{enhancedDatabaseReporting:t}=this.getConfig();return t?JSON.stringify(e):JSON.stringify(e,this._getDefaultDbStatementReplacer())}_handleExecutionResult(e,t){let{responseHook:n}=this.getConfig();"function"==typeof n&&(0,o.safeExecuteInTheMiddle)(()=>{n(e,{data:t})},e=>{e&&this._diag.error("Error running response hook",e)},!0)}_patchEnd(e,t,n,o){let i=r.context.active(),a=this,s=!1;return function(...n){if(!s){s=!0;let t=n[0];if(e){if(t instanceof Error)e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message});else{let t=n[1];a._handleExecutionResult(e,t)}e.end()}"endSessions"===o&&a._connCountAdd(-1,a._poolName,"idle")}return r.context.with(i,()=>t.apply(this,n))}}setPoolName(e){let t=e.hostAddress?.host,n=e.hostAddress?.port,r=e.dbName,o=`mongodb://${t}:${n}/${r}`;this._poolName=o}_checkSkipInstrumentation(e){return!0===this.getConfig().requireParentSpan&&void 0===e}}n.MongoDBInstrumentation=c},818,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.MongodbCommandType=void 0,(r=n.MongodbCommandType||(n.MongodbCommandType={})).CREATE_INDEXES="createIndexes",r.FIND_AND_MODIFY="findAndModify",r.IS_MASTER="isMaster",r.COUNT="count",r.UNKNOWN="unknown"},101229,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongodbCommandType=n.MongoDBInstrumentation=void 0;var r=e.r(121806);Object.defineProperty(n,"MongoDBInstrumentation",{enumerable:!0,get:function(){return r.MongoDBInstrumentation}});var o=e.r(818);Object.defineProperty(n,"MongodbCommandType",{enumerable:!0,get:function(){return o.MongodbCommandType}})},143655,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(101229),o=e.r(976285),i=e.r(625331),a="Mongo",s=i.generateInstrumentOnce(a,()=>new r.MongoDBInstrumentation({dbStatementSerializer:l,responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mongo")}}));function l(e){return JSON.stringify(function e(t){var n,r;let o;return Array.isArray(t)?t.map(t=>e(t)):"object"!=typeof(n=t)||null===n||(r=n,o=!1,"u">typeof Buffer&&(o=Buffer.isBuffer(r)),o)?"?":Object.entries(t).map(([t,n])=>[t,e(n)]).reduce((e,t)=>(Array.isArray(t)&&(e[t[0]]=t[1]),e),{})}(e))}let u=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n._defaultDbStatementSerializer=l,n.instrumentMongo=s,n.mongoIntegration=u},214787,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_NAME_VALUE_MONGODB=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_OPERATION=n.ATTR_DB_NAME=n.ATTR_DB_MONGODB_COLLECTION=void 0,n.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",n.ATTR_DB_NAME="db.name",n.ATTR_DB_OPERATION="db.operation",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb"},388687,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.handleCallbackResponse=n.handlePromiseResponse=n.getAttributesFromCollection=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(214787),a=e.r(808119);function s(e,t={}){e.recordException(t),e.setStatus({code:r.SpanStatusCode.ERROR,message:`${t.message} ${t.code?` -Mongoose Error Code: ${t.code}`:""}`})}function l(e,t,n,i){n&&(0,o.safeExecuteInTheMiddle)(()=>n(e,{moduleVersion:i,response:t}),e=>{e&&r.diag.error("mongoose instrumentation: responseHook error",e)},!0)}n.getAttributesFromCollection=function(e,t,n){let r={};return t&o.SemconvStability.OLD&&(r[i.ATTR_DB_MONGODB_COLLECTION]=e.name,r[i.ATTR_DB_NAME]=e.conn.name,r[i.ATTR_DB_USER]=e.conn.user),t&o.SemconvStability.STABLE&&(r[a.ATTR_DB_COLLECTION_NAME]=e.name,r[a.ATTR_DB_NAMESPACE]=e.conn.name),n&o.SemconvStability.OLD&&(r[i.ATTR_NET_PEER_NAME]=e.conn.host,r[i.ATTR_NET_PEER_PORT]=e.conn.port),n&o.SemconvStability.STABLE&&(r[a.ATTR_SERVER_ADDRESS]=e.conn.host,r[a.ATTR_SERVER_PORT]=e.conn.port),r},n.handlePromiseResponse=function(e,t,n,r){return e instanceof Promise?e.then(e=>(l(t,e,n,r),e)).catch(e=>{throw s(t,e),e}).finally(()=>t.end()):(l(t,e,n,r),t.end(),e)},n.handleCallbackResponse=function(e,t,n,r,o,i,a){let u=0;return 2===o.length?u=1:3===o.length&&(u=2),o[u]=(t,n)=>(t?s(r,t):l(r,n,i,a),r.end(),e(t,n)),t.apply(n,o)}},661395,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},152852,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongooseInstrumentation=n._ALREADY_INSTRUMENTED=n._STORED_PARENT_SPAN=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(388687),a=e.r(204780),s=e.r(661395),l=e.r(214787),u=e.r(808119),c=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],p=["remove","count","findOneAndRemove",...c],_=["count","findOneAndRemove",...c],T=[...c];function d(e){return e?e.startsWith("6.")||e.startsWith("5.")?p:e.startsWith("7.")?_:T:c}function E(e){return e&&(e.startsWith("5.")||e.startsWith("6."))||!1}function S(e){return!!e&&!!e.startsWith("8.")&&parseInt(e.split(".")[1],10)>=21}n._STORED_PARENT_SPAN=Symbol("stored-parent-span"),n._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class A extends a.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(s.PACKAGE_NAME,s.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,a.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,a.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new a.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(e,t){let n="Module"===e[Symbol.toStringTag]?e.default:e;return this._wrap(n.Model.prototype,"save",this.patchOnModelMethods("save",t)),n.Model.prototype.$save=n.Model.prototype.save,E(t)&&this._wrap(n.Model.prototype,"remove",this.patchOnModelMethods("remove",t)),S(t)&&(this._wrap(n.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",t)),this._wrap(n.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",t))),this._wrap(n.Query.prototype,"exec",this.patchQueryExec(t)),this._wrap(n.Aggregate.prototype,"exec",this.patchAggregateExec(t)),d(t).forEach(e=>{this._wrap(n.Query.prototype,e,this.patchAndCaptureSpanContext(e))}),this._wrap(n.Model,"aggregate",this.patchModelAggregate()),this._wrap(n.Model,"insertMany",this.patchModelStatic("insertMany",t)),this._wrap(n.Model,"bulkWrite",this.patchModelStatic("bulkWrite",t)),n}unpatch(e,t){let n="Module"===e[Symbol.toStringTag]?e.default:e,r=d(t);this._unwrap(n.Model.prototype,"save"),n.Model.prototype.$save=n.Model.prototype.save,E(t)&&this._unwrap(n.Model.prototype,"remove"),S(t)&&(this._unwrap(n.Model.prototype,"updateOne"),this._unwrap(n.Model.prototype,"deleteOne")),this._unwrap(n.Query.prototype,"exec"),this._unwrap(n.Aggregate.prototype,"exec"),r.forEach(e=>{this._unwrap(n.Query.prototype,e)}),this._unwrap(n.Model,"aggregate"),this._unwrap(n.Model,"insertMany"),this._unwrap(n.Model,"bulkWrite")}patchAggregateExec(e){let t=this;return o=>function(i){if(t.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let s=this[n._STORED_PARENT_SPAN],c={},{dbStatementSerializer:p}=t.getConfig();if(p){let e=p("aggregate",{options:this.options,aggregatePipeline:this._pipeline});t._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_STATEMENT]=e),t._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_QUERY_TEXT]=e)}let _=t._startSpan(this._model.collection,this._model?.modelName,"aggregate",c,s);return t._handleResponse(_,o,this,arguments,i,e)}}patchQueryExec(e){let t=this;return o=>function(i){if(this[n._ALREADY_INSTRUMENTED]||t.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let s=this[n._STORED_PARENT_SPAN],c={},{dbStatementSerializer:p}=t.getConfig();if(p){let e=p(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});t._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_STATEMENT]=e),t._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_QUERY_TEXT]=e)}let _=t._startSpan(this.mongooseCollection,this.model.modelName,this.op,c,s);return t._handleResponse(_,o,this,arguments,i,e)}}patchOnModelMethods(e,t){let n=this;return o=>function(i,s){if(n.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let c={document:this};!i||i instanceof Function||(c.options=i);let p={},{dbStatementSerializer:_}=n.getConfig();if(_){let t=_(e,c);n._dbSemconvStability&a.SemconvStability.OLD&&(p[l.ATTR_DB_STATEMENT]=t),n._dbSemconvStability&a.SemconvStability.STABLE&&(p[u.ATTR_DB_QUERY_TEXT]=t)}let T=n._startSpan(this.constructor.collection,this.constructor.modelName,e,p);return i instanceof Function&&(s=i,i=void 0),n._handleResponse(T,o,this,arguments,s,t)}}_patchDocumentUpdateMethods(e,t){let o=this;return i=>function(s,c,p){if(o.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return i.apply(this,arguments);let _=p,T=s,d=c;"function"==typeof s?(_=s,T=void 0,d=void 0):"function"==typeof c&&(_=c,d=void 0);let E={},S=o.getConfig().dbStatementSerializer;if(S){let t=S(e,{condition:{_id:this._id},updates:T,options:d});o._dbSemconvStability&a.SemconvStability.OLD&&(E[l.ATTR_DB_STATEMENT]=t),o._dbSemconvStability&a.SemconvStability.STABLE&&(E[u.ATTR_DB_QUERY_TEXT]=t)}let A=o._startSpan(this.constructor.collection,this.constructor.modelName,e,E),g=o._handleResponse(A,i,this,arguments,_,t);return g&&"object"==typeof g&&(g[n._ALREADY_INSTRUMENTED]=!0),g}}patchModelStatic(e,t){let n=this;return o=>function(i,s,c){if(n.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);"function"==typeof s&&(c=s,s=void 0);let p={};switch(e){case"insertMany":p.documents=i;break;case"bulkWrite":p.operations=i;break;default:p.document=i}void 0!==s&&(p.options=s);let _={},{dbStatementSerializer:T}=n.getConfig();if(T){let t=T(e,p);n._dbSemconvStability&a.SemconvStability.OLD&&(_[l.ATTR_DB_STATEMENT]=t),n._dbSemconvStability&a.SemconvStability.STABLE&&(_[u.ATTR_DB_QUERY_TEXT]=t)}let d=n._startSpan(this.collection,this.modelName,e,_);return n._handleResponse(d,o,this,arguments,c,t)}}patchModelAggregate(){let e=this;return t=>function(){let o=r.trace.getSpan(r.context.active()),i=e._callOriginalFunction(()=>t.apply(this,arguments));return i&&(i[n._STORED_PARENT_SPAN]=o),i}}patchAndCaptureSpanContext(e){let t=this;return e=>function(){return this[n._STORED_PARENT_SPAN]=r.trace.getSpan(r.context.active()),t._callOriginalFunction(()=>e.apply(this,arguments))}}_startSpan(e,t,n,o,s){let c={...o,...(0,i.getAttributesFromCollection)(e,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_OPERATION]=n,c[l.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_OPERATION_NAME]=n,c[u.ATTR_DB_SYSTEM_NAME]=l.DB_SYSTEM_NAME_VALUE_MONGODB);let p=this._dbSemconvStability&a.SemconvStability.STABLE?`${n} ${e.name}`:`mongoose.${t}.${n}`;return this.tracer.startSpan(p,{kind:r.SpanKind.CLIENT,attributes:c},s?r.trace.setSpan(r.context.active(),s):void 0)}_handleResponse(e,t,n,r,o,a){let s=this;if(o instanceof Function)return s._callOriginalFunction(()=>(0,i.handleCallbackResponse)(o,t,n,e,r,s.getConfig().responseHook,a));{let o=s._callOriginalFunction(()=>t.apply(n,r));return(0,i.handlePromiseResponse)(o,e,s.getConfig().responseHook,a)}}_callOriginalFunction(e){return this.getConfig().suppressInternalInstrumentation?r.context.with((0,o.suppressTracing)(r.context.active()),e):e()}}n.MongooseInstrumentation=A},583049,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongooseInstrumentation=void 0;var r=e.r(152852);Object.defineProperty(n,"MongooseInstrumentation",{enumerable:!0,get:function(){return r.MongooseInstrumentation}})},780216,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(583049),o=e.r(976285),i=e.r(625331),a="Mongoose",s=i.generateInstrumentOnce(a,()=>new r.MongooseInstrumentation({responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mongoose")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMongoose=s,n.mongooseIntegration=l},286950,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTIONS_USAGE=n.DB_SYSTEM_VALUE_MYSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MYSQL="mysql",n.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},424590,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(n.AttributeNames||(n.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},952519,(e,t,n)=>{"use strict";function r(e){return e?`[${e.toString()}]`:""}Object.defineProperty(n,"__esModule",{value:!0}),n.getPoolNameOld=n.arrayStringifyHelper=n.getSpanName=n.getDbValues=n.getDbQueryText=n.getJDBCString=n.getConfig=void 0,n.getConfig=function(e){let{host:t,port:n,database:r,user:o}=e&&e.connectionConfig||e||{};return{host:t,port:n,database:r,user:o}},n.getJDBCString=function(e,t,n){let r=`jdbc:mysql://${e||"localhost"}`;return"number"==typeof t&&(r+=`:${t}`),"string"==typeof n&&(r+=`/${n}`),r},n.getDbQueryText=function(e){return"string"==typeof e?e:e.sql},n.getDbValues=function(e,t){return"string"==typeof e?r(t):r(t||e.values)},n.getSpanName=function(e){let t="object"==typeof e?e.sql:e,n=t?.indexOf(" ");return"number"==typeof n&&-1!==n?t?.substring(0,n):t},n.arrayStringifyHelper=r,n.getPoolNameOld=function(e){let t=e.config.connectionConfig,n="";return n+=t.host?`host: '${t.host}', `:"",n+=t.port?`port: ${t.port}, `:"",n+=t.database?`database: '${t.database}', `:"",n+=t.user?`user: '${t.user}'`:"",t.user||(n=n.substring(0,n.length-2)),n.trim()}},819437,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},937494,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQLInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(286950),s=e.r(424590),l=e.r(952519),u=e.r(819437);class c extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(a.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(e,t,n){this._connectionsUsageOld?.add(e,{state:n,name:t})}init(){return[new o.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],e=>((0,o.isWrapped)(e.createConnection)&&this._unwrap(e,"createConnection"),this._wrap(e,"createConnection",this._patchCreateConnection()),(0,o.isWrapped)(e.createPool)&&this._unwrap(e,"createPool"),this._wrap(e,"createPool",this._patchCreatePool()),(0,o.isWrapped)(e.createPoolCluster)&&this._unwrap(e,"createPoolCluster"),this._wrap(e,"createPoolCluster",this._patchCreatePoolCluster()),e),e=>{void 0!==e&&(this._unwrap(e,"createConnection"),this._unwrap(e,"createPool"),this._unwrap(e,"createPoolCluster"))})]}_patchCreateConnection(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"query",t._patchQuery(r)),r}}}_patchCreatePool(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"query",t._patchQuery(r)),t._wrap(r,"getConnection",t._patchGetConnection(r)),t._wrap(r,"end",t._patchPoolEnd(r)),t._setPoolCallbacks(r,""),r}}}_patchPoolEnd(e){return t=>{let n=this;return function(r){let o=e._allConnections.length,i=e._freeConnections.length,a=(0,l.getPoolNameOld)(e);n._connCountAdd(-(o-i),a,"used"),n._connCountAdd(-i,a,"idle"),t.apply(e,arguments)}}}_patchCreatePoolCluster(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"getConnection",t._patchGetConnection(r)),t._wrap(r,"add",t._patchAdd(r)),r}}}_patchAdd(e){return t=>{let n=this;return function(r,o){if(!n._enabled)return n._unwrap(e,"add"),t.apply(e,arguments);t.apply(e,arguments);let i=e._nodes;if(i){let t=i["object"==typeof r?"CLUSTER::"+e._lastId:String(r)].pool;n._setPoolCallbacks(t,r)}}}}_patchGetConnection(e){return t=>{let n=this;return function(r,o,i){if(!n._enabled)return n._unwrap(e,"getConnection"),t.apply(e,arguments);if(1==arguments.length&&"function"==typeof r){let o=n._getConnectionCallbackPatchFn(r);return t.call(e,o)}if(2==arguments.length&&"function"==typeof o){let i=n._getConnectionCallbackPatchFn(o);return t.call(e,r,i)}if(3==arguments.length&&"function"==typeof i){let a=n._getConnectionCallbackPatchFn(i);return t.call(e,r,o,a)}return t.apply(e,arguments)}}}_getConnectionCallbackPatchFn(e){let t=this,n=r.context.active();return function(i,a){a&&!(0,o.isWrapped)(a.query)&&t._wrap(a,"query",t._patchQuery(a)),"function"==typeof e&&r.context.with(n,e,this,i,a)}}_patchQuery(e){return t=>{let n=this;return function(u,c,p){if(!n._enabled)return n._unwrap(e,"query"),t.apply(e,arguments);let _={},{host:T,port:d,database:E,user:S}=(0,l.getConfig)(e.config),A=parseInt(d,10),g=(0,l.getDbQueryText)(u);n._dbSemconvStability&o.SemconvStability.OLD&&(_[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_MYSQL,_[a.ATTR_DB_CONNECTION_STRING]=(0,l.getJDBCString)(T,d,E),_[a.ATTR_DB_NAME]=E,_[a.ATTR_DB_USER]=S,_[a.ATTR_DB_STATEMENT]=g),n._dbSemconvStability&o.SemconvStability.STABLE&&(_[i.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MYSQL,_[i.ATTR_DB_NAMESPACE]=E,_[i.ATTR_DB_QUERY_TEXT]=g),n._netSemconvStability&o.SemconvStability.OLD&&(_[a.ATTR_NET_PEER_NAME]=T,isNaN(A)||(_[a.ATTR_NET_PEER_PORT]=A)),n._netSemconvStability&o.SemconvStability.STABLE&&(_[i.ATTR_SERVER_ADDRESS]=T,isNaN(A)||(_[i.ATTR_SERVER_PORT]=A));let m=n.tracer.startSpan((0,l.getSpanName)(u),{kind:r.SpanKind.CLIENT,attributes:_});if(n.getConfig().enhancedDatabaseReporting){let e;Array.isArray(c)?e=c:arguments[2]&&(e=[c]),m.setAttribute(s.AttributeNames.MYSQL_VALUES,(0,l.getDbValues)(u,e))}let h=Array.from(arguments).findIndex(e=>"function"==typeof e),R=r.context.active();if(-1!==h)return n._wrap(arguments,h,n._patchCallbackQuery(m,R)),r.context.with(r.trace.setSpan(r.context.active(),m),()=>t.apply(e,arguments));{let n=r.context.with(r.trace.setSpan(r.context.active(),m),()=>t.apply(e,arguments));return r.context.bind(R,n),n.on("error",e=>m.setStatus({code:r.SpanStatusCode.ERROR,message:e.message})).on("end",()=>{m.end()})}}}}_patchCallbackQuery(e,t){return n=>function(o,i,a){return o&&e.setStatus({code:r.SpanStatusCode.ERROR,message:o.message}),e.end(),r.context.with(t,()=>n(...arguments))}}_setPoolCallbacks(e,t){let n=t||(0,l.getPoolNameOld)(e);e.on("connection",e=>{this._connCountAdd(1,n,"idle")}),e.on("acquire",e=>{this._connCountAdd(-1,n,"idle"),this._connCountAdd(1,n,"used")}),e.on("release",e=>{this._connCountAdd(1,n,"idle"),this._connCountAdd(-1,n,"used")})}}n.MySQLInstrumentation=c},510039,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQLInstrumentation=void 0;var r=e.r(937494);Object.defineProperty(n,"MySQLInstrumentation",{enumerable:!0,get:function(){return r.MySQLInstrumentation}})},473485,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(510039),o=e.r(976285),i=e.r(625331),a="Mysql",s=i.generateInstrumentOnce(a,()=>new r.MySQLInstrumentation({})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMysql=s,n.mysqlIntegration=l},366020,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_MYSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MYSQL="mysql"},386127,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.addSqlCommenterComment=void 0;let r=e.r(357762),o=e.r(385692);n.addSqlCommenterComment=function(e,t){let n;if("string"!=typeof t||0===t.length||(n=t.indexOf("--"))>=0||!(0>t.indexOf("/*"))&&n{let t=encodeURIComponent(a[e]).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`);return`${e}='${t}'`}).join(",");return`${t} /*${l}*/`}},739749,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getConnectionPrototypeToInstrument=n.once=n.getSpanName=n.getQueryText=n.getConnectionAttributes=void 0;let r=e.r(366020),o=e.r(204780),i=e.r(808119);function a(e){return e.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}n.getConnectionAttributes=function(e,t,n){var a,s,l;let u,{host:c,port:p,database:_,user:T}=function(e){let{host:t,port:n,database:r,user:o}=e&&e.connectionConfig||e||{};return{host:t,port:n,database:r,user:o}}(e),d={};t&o.SemconvStability.OLD&&(d[r.ATTR_DB_CONNECTION_STRING]=(a=c,s=p,l=_,u=`jdbc:mysql://${a||"localhost"}`,"number"==typeof s&&(u+=`:${s}`),"string"==typeof l&&(u+=`/${l}`),u),d[r.ATTR_DB_NAME]=_,d[r.ATTR_DB_USER]=T),t&o.SemconvStability.STABLE&&(d[i.ATTR_DB_NAMESPACE]=_);let E=parseInt(p,10);return n&o.SemconvStability.OLD&&(d[r.ATTR_NET_PEER_NAME]=c,isNaN(E)||(d[r.ATTR_NET_PEER_PORT]=E)),n&o.SemconvStability.STABLE&&(d[i.ATTR_SERVER_ADDRESS]=c,isNaN(E)||(d[i.ATTR_SERVER_PORT]=E)),d},n.getQueryText=function(e,t,n,r=!1,o=a){let[i,s]="string"==typeof e?[e,n]:[e.sql,"values"in e?n||e.values:n];try{if(r)return o(i);if(t&&s)return t(i,s);return i}catch(e){return"Could not determine the query due to an error in masking or formatting"}},n.getSpanName=function(e){let t="object"==typeof e?e.sql:e,n=t?.indexOf(" ");return"number"==typeof n&&-1!==n?t?.substring(0,n):t},n.once=e=>{let t=!1;return(...n)=>{if(!t)return t=!0,e(...n)}},n.getConnectionPrototypeToInstrument=function(e){let t=e.prototype,n=Object.getPrototypeOf(t);return"function"==typeof n?.query&&"function"==typeof n?.execute?n:t}},184863,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},742188,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQL2Instrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(366020),a=e.r(386127),s=e.r(739749),l=e.r(184863),u=e.r(808119),c=[">=1.4.2 <4"];class p extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let e;function t(t){!e&&t.format&&(e=t.format)}let n=t=>{(0,o.isWrapped)(t.query)&&this._unwrap(t,"query"),this._wrap(t,"query",this._patchQuery(e,!1)),(0,o.isWrapped)(t.execute)&&this._unwrap(t,"execute"),this._wrap(t,"execute",this._patchQuery(e,!0))},r=e=>{this._unwrap(e,"query"),this._unwrap(e,"execute")};return[new o.InstrumentationNodeModuleDefinition("mysql2",c,e=>(t(e),e),()=>{},[new o.InstrumentationNodeModuleFile("mysql2/promise.js",c,e=>(t(e),e),()=>{}),new o.InstrumentationNodeModuleFile("mysql2/lib/connection.js",c,e=>(n((0,s.getConnectionPrototypeToInstrument)(e)),e),e=>{void 0===e||r((0,s.getConnectionPrototypeToInstrument)(e))})])]}_patchQuery(e,t){return n=>{let l=this;return function(c,p,_){let T;Array.isArray(p)?T=p:arguments[2]&&(T=[p]);let{maskStatement:d,maskStatementHook:E,responseHook:S}=l.getConfig(),A=(0,s.getConnectionAttributes)(this.config,l._dbSemconvStability,l._netSemconvStability),g=(0,s.getQueryText)(c,e,T,d,E);l._dbSemconvStability&o.SemconvStability.OLD&&(A[i.ATTR_DB_SYSTEM]=i.DB_SYSTEM_VALUE_MYSQL,A[i.ATTR_DB_STATEMENT]=g),l._dbSemconvStability&o.SemconvStability.STABLE&&(A[u.ATTR_DB_SYSTEM_NAME]=u.DB_SYSTEM_NAME_VALUE_MYSQL,A[u.ATTR_DB_QUERY_TEXT]=g);let m=l.tracer.startSpan((0,s.getSpanName)(c),{kind:r.SpanKind.CLIENT,attributes:A});!t&&l.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=c="string"==typeof c?(0,a.addSqlCommenterComment)(m,c):Object.assign(c,{sql:(0,a.addSqlCommenterComment)(m,c.sql)}));let h=(0,s.once)((e,t)=>{e?m.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}):"function"==typeof S&&(0,o.safeExecuteInTheMiddle)(()=>{S(m,{queryResults:t})},e=>{e&&l._diag.warn("Failed executing responseHook",e)},!0),m.end()});if(1==arguments.length){"function"==typeof c.onResult&&l._wrap(c,"onResult",l._patchCallbackQuery(h));let e=n.apply(this,arguments);return e.once("error",e=>{h(e)}).once("result",e=>{h(void 0,e)}),e}return"function"==typeof arguments[1]?l._wrap(arguments,1,l._patchCallbackQuery(h)):"function"==typeof arguments[2]&&l._wrap(arguments,2,l._patchCallbackQuery(h)),n.apply(this,arguments)}}}_patchCallbackQuery(e){return t=>function(n,r,o){return e(n,r),t(...arguments)}}}n.MySQL2Instrumentation=p},623318,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQL2Instrumentation=void 0;var r=e.r(742188);Object.defineProperty(n,"MySQL2Instrumentation",{enumerable:!0,get:function(){return r.MySQL2Instrumentation}})},625680,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(623318),o=e.r(976285),i=e.r(625331),a="Mysql2",s=i.generateInstrumentOnce(a,()=>new r.MySQL2Instrumentation({responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mysql2")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMysql2=s,n.mysql2Integration=l},458792,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_REDIS=n.DB_SYSTEM_NAME_VALUE_REDIS=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_REDIS="redis",n.DB_SYSTEM_VALUE_REDIS="redis"},678116,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.endSpan=void 0;let r=e.r(357762);n.endSpan=(e,t)=>{t&&(e.recordException(t),e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message})),e.end()}},744606,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.defaultDbStatementSerializer=void 0;let r=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];n.defaultDbStatementSerializer=(e,t)=>{if(Array.isArray(t)&&t.length){let n=r.find(({regex:t})=>t.test(e))?.args??0,o=n>=0?t.slice(0,n):t;return t.length>o.length&&o.push(`[${t.length-n} other arguments]`),`${e} ${o.join(" ")}`}return e}},983181,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},943579,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.IORedisInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(458792),s=e.r(204780),l=e.r(678116),u=e.r(744606),c=e.r(983181),p={requireParentSpan:!0};class _ extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...p,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...p,...e})}init(){return[new o.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(e,t)=>{let n="Module"===e[Symbol.toStringTag]?e.default:e;return(0,o.isWrapped)(n.prototype.sendCommand)&&this._unwrap(n.prototype,"sendCommand"),this._wrap(n.prototype,"sendCommand",this._patchSendCommand(t)),(0,o.isWrapped)(n.prototype.connect)&&this._unwrap(n.prototype,"connect"),this._wrap(n.prototype,"connect",this._patchConnection()),e},e=>{if(void 0===e)return;let t="Module"===e[Symbol.toStringTag]?e.default:e;this._unwrap(t.prototype,"sendCommand"),this._unwrap(t.prototype,"connect")})]}_patchSendCommand(e){return t=>this._traceSendCommand(t,e)}_patchConnection(){return e=>this._traceConnection(e)}_traceSendCommand(e,t){let n=this;return function(c){if(arguments.length<1||"object"!=typeof c)return e.apply(this,arguments);let p=n.getConfig(),_=p.dbStatementSerializer||u.defaultDbStatementSerializer,T=void 0===r.trace.getSpan(r.context.active());if(!0===p.requireParentSpan&&T)return e.apply(this,arguments);let d={},{host:E,port:S}=this.options,A=_(c.name,c.args);n._dbSemconvStability&o.SemconvStability.OLD&&(d[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_REDIS,d[a.ATTR_DB_STATEMENT]=A,d[a.ATTR_DB_CONNECTION_STRING]=`redis://${E}:${S}`),n._dbSemconvStability&o.SemconvStability.STABLE&&(d[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_REDIS,d[i.ATTR_DB_QUERY_TEXT]=A),n._netSemconvStability&o.SemconvStability.OLD&&(d[a.ATTR_NET_PEER_NAME]=E,d[a.ATTR_NET_PEER_PORT]=S),n._netSemconvStability&o.SemconvStability.STABLE&&(d[i.ATTR_SERVER_ADDRESS]=E,d[i.ATTR_SERVER_PORT]=S);let g=n.tracer.startSpan(c.name,{kind:r.SpanKind.CLIENT,attributes:d}),{requestHook:m}=p;m&&(0,s.safeExecuteInTheMiddle)(()=>m(g,{moduleVersion:t,cmdName:c.name,cmdArgs:c.args}),e=>{e&&r.diag.error("ioredis instrumentation: request hook failed",e)},!0);try{let t=e.apply(this,arguments),n=c.resolve;c.resolve=function(e){(0,s.safeExecuteInTheMiddle)(()=>p.responseHook?.(g,c.name,c.args,e),e=>{e&&r.diag.error("ioredis instrumentation: response hook failed",e)},!0),(0,l.endSpan)(g,null),n(e)};let o=c.reject;return c.reject=function(e){(0,l.endSpan)(g,e),o(e)},t}catch(e){throw(0,l.endSpan)(g,e),e}}}_traceConnection(e){let t=this;return function(){let n=void 0===r.trace.getSpan(r.context.active());if(!0===t.getConfig().requireParentSpan&&n)return e.apply(this,arguments);let s={},{host:u,port:c}=this.options;t._dbSemconvStability&o.SemconvStability.OLD&&(s[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_REDIS,s[a.ATTR_DB_STATEMENT]="connect",s[a.ATTR_DB_CONNECTION_STRING]=`redis://${u}:${c}`),t._dbSemconvStability&o.SemconvStability.STABLE&&(s[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_REDIS,s[i.ATTR_DB_QUERY_TEXT]="connect"),t._netSemconvStability&o.SemconvStability.OLD&&(s[a.ATTR_NET_PEER_NAME]=u,s[a.ATTR_NET_PEER_PORT]=c),t._netSemconvStability&o.SemconvStability.STABLE&&(s[i.ATTR_SERVER_ADDRESS]=u,s[i.ATTR_SERVER_PORT]=c);let p=t.tracer.startSpan("connect",{kind:r.SpanKind.CLIENT,attributes:s});try{let t=e.apply(this,arguments);return(0,l.endSpan)(p,null),t}catch(e){throw(0,l.endSpan)(p,e),e}}}}n.IORedisInstrumentation=_},788406,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.IORedisInstrumentation=void 0;var r=e.r(943579);Object.defineProperty(n,"IORedisInstrumentation",{enumerable:!0,get:function(){return r.IORedisInstrumentation}})},680749,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},324932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getTracedCreateStreamTrace=n.getTracedCreateClient=n.endSpan=void 0;let r=e.r(357762);n.endSpan=(e,t)=>{t&&e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.end()},n.getTracedCreateClient=e=>function(){let t=e.apply(this,arguments);return r.context.bind(r.context.active(),t)},n.getTracedCreateStreamTrace=e=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(e){r.context.bind(r.context.active(),e),this._patched_redis_stream=e}}),e.apply(this,arguments)}},985163,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_REDIS=n.DB_SYSTEM_NAME_VALUE_REDIS=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_REDIS="redis",n.DB_SYSTEM_VALUE_REDIS="redis"},868434,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentationV2_V3=void 0;let r=e.r(204780),o=e.r(324932),i=e.r(680749),a=e.r(357762),s=e.r(808119),l=e.r(985163),u=e.r(744606);class c extends r.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e),this._semconvStability=e.semconvStability?e.semconvStability:(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig(e),this._semconvStability=e.semconvStability?e.semconvStability:(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new r.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],e=>((0,r.isWrapped)(e.RedisClient.prototype.internal_send_command)&&this._unwrap(e.RedisClient.prototype,"internal_send_command"),this._wrap(e.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,r.isWrapped)(e.RedisClient.prototype.create_stream)&&this._unwrap(e.RedisClient.prototype,"create_stream"),this._wrap(e.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,r.isWrapped)(e.createClient)&&this._unwrap(e,"createClient"),this._wrap(e,"createClient",this._getPatchCreateClient()),e),e=>{void 0!==e&&(this._unwrap(e.RedisClient.prototype,"internal_send_command"),this._unwrap(e.RedisClient.prototype,"create_stream"),this._unwrap(e,"createClient"))})]}_getPatchInternalSendCommand(){let e=this;return function(t){return function(n){if(1!=arguments.length||"object"!=typeof n)return t.apply(this,arguments);let i=e.getConfig(),p=void 0===a.trace.getSpan(a.context.active());if(!0===i.requireParentSpan&&p)return t.apply(this,arguments);let _=i?.dbStatementSerializer||u.defaultDbStatementSerializer,T={};e._semconvStability&r.SemconvStability.OLD&&Object.assign(T,{[l.ATTR_DB_SYSTEM]:l.DB_SYSTEM_VALUE_REDIS,[l.ATTR_DB_STATEMENT]:_(n.command,n.args)}),e._semconvStability&r.SemconvStability.STABLE&&Object.assign(T,{[s.ATTR_DB_SYSTEM_NAME]:l.DB_SYSTEM_NAME_VALUE_REDIS,[s.ATTR_DB_OPERATION_NAME]:n.command,[s.ATTR_DB_QUERY_TEXT]:_(n.command,n.args)});let d=e.tracer.startSpan(`${c.COMPONENT}-${n.command}`,{kind:a.SpanKind.CLIENT,attributes:T});if(this.connection_options){let t={};e._semconvStability&r.SemconvStability.OLD&&Object.assign(t,{[l.ATTR_NET_PEER_NAME]:this.connection_options.host,[l.ATTR_NET_PEER_PORT]:this.connection_options.port}),e._semconvStability&r.SemconvStability.STABLE&&Object.assign(t,{[s.ATTR_SERVER_ADDRESS]:this.connection_options.host,[s.ATTR_SERVER_PORT]:this.connection_options.port}),d.setAttributes(t)}this.address&&e._semconvStability&r.SemconvStability.OLD&&d.setAttribute(l.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let E=arguments[0].callback;if(E){let t=a.context.active();arguments[0].callback=function(s,l){if(i?.responseHook){let t=i.responseHook;(0,r.safeExecuteInTheMiddle)(()=>{t(d,n.command,n.args,l)},t=>{t&&e._diag.error("Error executing responseHook",t)},!0)}return(0,o.endSpan)(d,s),a.context.with(t,E,this,...arguments)}}try{return t.apply(this,arguments)}catch(e){throw(0,o.endSpan)(d,e),e}}}}_getPatchCreateClient(){return function(e){return(0,o.getTracedCreateClient)(e)}}_getPatchCreateStream(){return function(e){return(0,o.getTracedCreateStreamTrace)(e)}}}n.RedisInstrumentationV2_V3=c},33280,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getClientAttributes=void 0;let r=e.r(808119),o=e.r(985163),i=e.r(204780);n.getClientAttributes=function(e,t,n){let a={};return n&i.SemconvStability.OLD&&Object.assign(a,{[o.ATTR_DB_SYSTEM]:o.DB_SYSTEM_VALUE_REDIS,[o.ATTR_NET_PEER_NAME]:t?.socket?.host,[o.ATTR_NET_PEER_PORT]:t?.socket?.port,[o.ATTR_DB_CONNECTION_STRING]:function(e,t){if("string"==typeof t&&t)try{let e=new URL(t);return e.searchParams.delete("user_pwd"),e.username="",e.password="",e.href}catch(t){e.error("failed to sanitize redis connection url",t)}}(e,t?.url)}),n&i.SemconvStability.STABLE&&Object.assign(a,{[r.ATTR_DB_SYSTEM_NAME]:o.DB_SYSTEM_NAME_VALUE_REDIS,[r.ATTR_SERVER_ADDRESS]:t?.socket?.host,[r.ATTR_SERVER_PORT]:t?.socket?.port}),a}},130932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentationV4_V5=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(33280),a=e.r(744606),s=e.r(680749),l=e.r(808119),u=e.r(985163),c=Symbol("opentelemetry.instrumentation.redis.open_spans"),p=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class _ extends o.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(e={}){super(s.PACKAGE_NAME,s.PACKAGE_VERSION,e),this._semconvStability=e.semconvStability?e.semconvStability:(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig(e),this._semconvStability=e.semconvStability?e.semconvStability:(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(e){let t=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/commander.js`,["^1.0.0"],(e,t)=>{let n=e.transformCommandArguments;if(!n)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),e;let r=t?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,o.isWrapped)(e?.[r])&&this._unwrap(e,r),this._wrap(e,r,this._getPatchExtendWithCommands(n)),e},e=>{(0,o.isWrapped)(e?.extendWithCommands)&&this._unwrap(e,"extendWithCommands"),(0,o.isWrapped)(e?.attachCommands)&&this._unwrap(e,"attachCommands")}),n=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],e=>{let t=e?.default?.prototype;return(0,o.isWrapped)(t?.exec)&&this._unwrap(t,"exec"),this._wrap(t,"exec",this._getPatchMultiCommandsExec(!1)),(0,o.isWrapped)(t?.execAsPipeline)&&this._unwrap(t,"execAsPipeline"),this._wrap(t,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,o.isWrapped)(t?.addCommand)&&this._unwrap(t,"addCommand"),this._wrap(t,"addCommand",this._getPatchMultiCommandsAddCommand()),e},e=>{let t=e?.default?.prototype;(0,o.isWrapped)(t?.exec)&&this._unwrap(t,"exec"),(0,o.isWrapped)(t?.addCommand)&&this._unwrap(t,"addCommand")}),r=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],e=>{let t=e?.default?.prototype;return t?.multi&&((0,o.isWrapped)(t?.multi)&&this._unwrap(t,"multi"),this._wrap(t,"multi",this._getPatchRedisClientMulti())),t?.MULTI&&((0,o.isWrapped)(t?.MULTI)&&this._unwrap(t,"MULTI"),this._wrap(t,"MULTI",this._getPatchRedisClientMulti())),(0,o.isWrapped)(t?.sendCommand)&&this._unwrap(t,"sendCommand"),this._wrap(t,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(t,"connect",this._getPatchedClientConnect()),e},e=>{let t=e?.default?.prototype;(0,o.isWrapped)(t?.multi)&&this._unwrap(t,"multi"),(0,o.isWrapped)(t?.MULTI)&&this._unwrap(t,"MULTI"),(0,o.isWrapped)(t?.sendCommand)&&this._unwrap(t,"sendCommand")});return new o.InstrumentationNodeModuleDefinition(e,["^1.0.0","^5.0.0"],e=>e,()=>{},[t,n,r])}_getPatchExtendWithCommands(e){let t=this;return function(n){return function(r){if(r?.BaseClass?.name!=="RedisClient")return n.apply(this,arguments);let o=r.executor;return r.executor=function(n,r){let i=e(n,r).args;return t._traceClientCommand(o,this,arguments,i)},n.apply(this,arguments)}}}_getPatchMultiCommandsExec(e){let t=this;return function(n){return function(){let r=n.apply(this,arguments);return"function"!=typeof r?.then?(t._diag.error("non-promise result when patching exec/execAsPipeline"),r):r.then(n=>{let r=this[c];return t._endSpansWithRedisReplies(r,n,e),n}).catch(n=>{let r=this[c];if(r){let o="MultiErrorReply"===n.constructor.name?n.replies:Array(r.length).fill(n);t._endSpansWithRedisReplies(r,o,e)}else t._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(n)})}}}_getPatchMultiCommandsAddCommand(){let e=this;return function(t){return function(n){return e._traceClientCommand(t,this,arguments,n)}}}_getPatchRedisClientMulti(){return function(e){return function(){let t=e.apply(this,arguments);return t[p]=this.options,t}}}_getPatchRedisClientSendCommand(){let e=this;return function(t){return function(n){return e._traceClientCommand(t,this,arguments,n)}}}_getPatchedClientConnect(){let e=this;return function(t){return function(){let n=this.options,o=(0,i.getClientAttributes)(e._diag,n,e._semconvStability),a=e.tracer.startSpan(`${_.COMPONENT}-connect`,{kind:r.SpanKind.CLIENT,attributes:o});return r.context.with(r.trace.setSpan(r.context.active(),a),()=>t.apply(this)).then(e=>(a.end(),e)).catch(e=>(a.recordException(e),a.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),a.end(),Promise.reject(e)))}}}_traceClientCommand(e,t,n,s){if(void 0===r.trace.getSpan(r.context.active())&&this.getConfig().requireParentSpan)return e.apply(t,n);let T=t.options||t[p],d=s[0],E=s.slice(1),S=this.getConfig().dbStatementSerializer||a.defaultDbStatementSerializer,A=(0,i.getClientAttributes)(this._diag,T,this._semconvStability);this._semconvStability&o.SemconvStability.STABLE&&(A[l.ATTR_DB_OPERATION_NAME]=d);try{let e=S(d,E);null!=e&&(this._semconvStability&o.SemconvStability.OLD&&(A[u.ATTR_DB_STATEMENT]=e),this._semconvStability&o.SemconvStability.STABLE&&(A[l.ATTR_DB_QUERY_TEXT]=e))}catch(e){this._diag.error("dbStatementSerializer throw an exception",e,{commandName:d})}let g=this.tracer.startSpan(`${_.COMPONENT}-${d}`,{kind:r.SpanKind.CLIENT,attributes:A}),m=r.context.with(r.trace.setSpan(r.context.active(),g),()=>e.apply(t,n));return"function"==typeof m?.then?m.then(e=>{this._endSpanWithResponse(g,d,E,e,void 0)},e=>{this._endSpanWithResponse(g,d,E,null,e)}):(m[c]=m[c]||[],m[c].push({span:g,commandName:d,commandArgs:E})),m}_endSpansWithRedisReplies(e,t,n=!1){if(!e)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(t.length!==e.length)return this._diag.error("number of multi command spans does not match response from redis");let r=e.map(e=>e.commandName),i=r.every(e=>e===r[0])?(n?"PIPELINE ":"MULTI ")+r[0]:n?"PIPELINE":"MULTI";for(let n=0;n{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentation=void 0;let r=e.r(204780),o=e.r(680749),i=e.r(868434),a=e.r(130932),s={requireParentSpan:!1};class l extends r.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(e={}){const t={...s,...e};super(o.PACKAGE_NAME,o.PACKAGE_VERSION,t),this.instrumentationV2_V3=new i.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new a.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(e={}){let t={...s,...e};super.setConfig(t),this.initialized&&(this.instrumentationV2_V3.setConfig(t),this.instrumentationV4_V5.setConfig(t))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(e){super.setTracerProvider(e),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(e),this.instrumentationV4_V5.setTracerProvider(e))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}n.RedisInstrumentation=l},339097,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentation=void 0;var r=e.r(276221);Object.defineProperty(n,"RedisInstrumentation",{enumerable:!0,get:function(){return r.RedisInstrumentation}})},688662,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=["get","set","setex"],o=["get","mget"],i=["set","setex"];function a(e,t){return e.includes(t.toLowerCase())}function s(e){return a(o,e)?"cache.get":a(i,e)?"cache.put":void 0}function l(e){let t=[],n=e=>{e.forEach(e=>{Array.isArray(e)?n(e):t.push(e)})};return n(e),t}n.GET_COMMANDS=o,n.SET_COMMANDS=i,n.calculateCacheItemSize=function(e){let t=e=>{try{if(Buffer.isBuffer(e))return e.byteLength;if("string"==typeof e)return e.length;if("number"==typeof e)return e.toString().length;else if(null==e)return 0;return JSON.stringify(e).length}catch{return}};return Array.isArray(e)?e.reduce((e,n)=>{let r=t(n);return"number"==typeof r?void 0!==e?e+r:r:e},0):t(e)},n.getCacheKeySafely=function(e,t){try{if(0===t.length)return;let n=e=>"string"==typeof e||"number"==typeof e||Buffer.isBuffer(e)?[e.toString()]:Array.isArray(e)?l(e.map(e=>n(e))):[""],o=t[0];if(a(r,e)&&null!=o)return n(o);return l(t.map(e=>n(e)))}catch{return}},n.getCacheOperation=s,n.isInCommands=a,n.shouldConsiderForCache=function(e,t,n){if(!s(e))return!1;for(let e of t)if(function(e,t){return t.some(t=>e.startsWith(t))}(e,n))return!0;return!1}},978486,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(788406),o=e.r(339097),i=e.r(976285),a=e.r(625331),s=e.r(688662),l="Redis";n._redisOptions={};let u=(e,t,r,o)=>{e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let a=s.getCacheKeySafely(t,r),l=s.getCacheOperation(t);if(!a||!l||!n._redisOptions.cachePrefixes||!s.shouldConsiderForCache(t,a,n._redisOptions.cachePrefixes))return;let u=i.spanToJSON(e).data["net.peer.name"],c=i.spanToJSON(e).data["net.peer.port"];c&&u&&e.setAttributes({"network.peer.address":u,"network.peer.port":c});let p=s.calculateCacheItemSize(o);p&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,p),s.isInCommands(s.GET_COMMANDS,t)&&void 0!==p&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_CACHE_HIT,p>0),e.setAttributes({[i.SEMANTIC_ATTRIBUTE_SENTRY_OP]:l,[i.SEMANTIC_ATTRIBUTE_CACHE_KEY]:a});let _=a.join(", ");e.updateName(n._redisOptions.maxCacheKeyLength?i.truncate(_,n._redisOptions.maxCacheKeyLength):_)},c=a.generateInstrumentOnce(`${l}.IORedis`,()=>new r.IORedisInstrumentation({responseHook:u})),p=a.generateInstrumentOnce(`${l}.Redis`,()=>new o.RedisInstrumentation({responseHook:u})),_=Object.assign(()=>{c(),p()},{id:l}),T=i.defineIntegration((e={})=>({name:l,setupOnce(){n._redisOptions=e,_()}}));n.cacheResponseHook=u,n.instrumentRedis=_,n.redisIntegration=T},400893,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EVENT_LISTENERS_SET=void 0,n.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},894105,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).PG_VALUES="db.postgresql.values",r.PG_PLAN="db.postgresql.plan",r.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",r.MAX_CLIENT="db.postgresql.max.client"},184319,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=n.METRIC_DB_CLIENT_CONNECTION_COUNT=n.DB_SYSTEM_VALUE_POSTGRESQL=n.DB_CLIENT_CONNECTION_STATE_VALUE_USED=n.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=n.ATTR_DB_CLIENT_CONNECTION_STATE=n.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,n.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",n.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",n.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",n.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",n.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",n.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},465522,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.SpanNames=void 0,(r=n.SpanNames||(n.SpanNames={})).QUERY_PREFIX="pg.query",r.CONNECT="pg.connect",r.POOL_CONNECT="pg-pool.connect"},482101,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.sanitizedErrorMessage=n.isObjectWithTextString=n.getErrorMessage=n.patchClientConnectCallback=n.patchCallbackPGPool=n.updateCounter=n.getPoolName=n.patchCallback=n.handleExecutionResult=n.handleConfigQuery=n.shouldSkipInstrumentation=n.getSemanticAttributesFromPoolConnection=n.getSemanticAttributesFromConnection=n.getConnectionString=n.parseAndMaskConnectionString=n.parseNormalizedOperationName=n.getQuerySpanName=void 0;let r=e.r(357762),o=e.r(894105),i=e.r(808119),a=e.r(184319),s=e.r(204780),l=e.r(465522);function u(e,t){if(!t)return l.SpanNames.QUERY_PREFIX;let n="string"==typeof t.name&&t.name?t.name:c(t.text);return`${l.SpanNames.QUERY_PREFIX}:${n}${e?` ${e}`:""}`}function c(e){let t=e.trim(),n=t.indexOf(" "),r=-1===n?t:t.slice(0,n);return(r=r.toUpperCase()).endsWith(";")?r.slice(0,-1):r}function p(e){try{let t=new URL(e);return t.username="",t.password="",t.toString()}catch(e){return"postgresql://localhost:5432/"}}function _(e){if("connectionString"in e&&e.connectionString)return p(e.connectionString);let t=e.host||"localhost",n=e.port||5432,r=e.database||"";return`postgresql://${t}:${n}/${r}`}function T(e){if(Number.isInteger(e))return e}function d(e,t){let n={};return t&s.SemconvStability.OLD&&(n={...n,[a.ATTR_DB_SYSTEM]:a.DB_SYSTEM_VALUE_POSTGRESQL,[a.ATTR_DB_NAME]:e.database,[a.ATTR_DB_CONNECTION_STRING]:_(e),[a.ATTR_DB_USER]:e.user,[a.ATTR_NET_PEER_NAME]:e.host,[a.ATTR_NET_PEER_PORT]:T(e.port)}),t&s.SemconvStability.STABLE&&(n={...n,[i.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[i.ATTR_DB_NAMESPACE]:e.namespace,[i.ATTR_SERVER_ADDRESS]:e.host,[i.ATTR_SERVER_PORT]:T(e.port)}),n}function E(e,t,n){"function"==typeof e.responseHook&&(0,s.safeExecuteInTheMiddle)(()=>{e.responseHook(t,{data:n})},e=>{e&&r.diag.error("Error running response hook",e)},!0)}function S(e){let t=e?.name??"PostgreSQLError",n=e?.code??"UNKNOWN";return`PostgreSQL error of type '${t}' occurred (code: ${n})`}n.getQuerySpanName=u,n.parseNormalizedOperationName=c,n.parseAndMaskConnectionString=p,n.getConnectionString=_,n.getSemanticAttributesFromConnection=d,n.getSemanticAttributesFromPoolConnection=function(e,t){let n;try{n=e.connectionString?new URL(e.connectionString):void 0}catch(e){n=void 0}let r={[o.AttributeNames.IDLE_TIMEOUT_MILLIS]:e.idleTimeoutMillis,[o.AttributeNames.MAX_CLIENT]:e.maxClient};return t&s.SemconvStability.OLD&&(r={...r,[a.ATTR_DB_SYSTEM]:a.DB_SYSTEM_VALUE_POSTGRESQL,[a.ATTR_DB_NAME]:n?.pathname.slice(1)??e.database,[a.ATTR_DB_CONNECTION_STRING]:_(e),[a.ATTR_NET_PEER_NAME]:n?.hostname??e.host,[a.ATTR_NET_PEER_PORT]:Number(n?.port)||T(e.port),[a.ATTR_DB_USER]:n?.username??e.user}),t&s.SemconvStability.STABLE&&(r={...r,[i.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[i.ATTR_DB_NAMESPACE]:e.namespace,[i.ATTR_SERVER_ADDRESS]:n?.hostname??e.host,[i.ATTR_SERVER_PORT]:Number(n?.port)||T(e.port)}),r},n.shouldSkipInstrumentation=function(e){return!0===e.requireParentSpan&&void 0===r.trace.getSpan(r.context.active())},n.handleConfigQuery=function(e,t,n,l){let{connectionParameters:c}=this,p=u(c.database,l),_=e.startSpan(p,{kind:r.SpanKind.CLIENT,attributes:d(c,n)});if(!l)return _;if(l.text&&(n&s.SemconvStability.OLD&&_.setAttribute(a.ATTR_DB_STATEMENT,l.text),n&s.SemconvStability.STABLE&&_.setAttribute(i.ATTR_DB_QUERY_TEXT,l.text)),t.enhancedDatabaseReporting&&Array.isArray(l.values))try{let e=l.values.map(e=>null==e?"null":e instanceof Buffer?e.toString():"object"!=typeof e?e.toString():"function"==typeof e.toPostgres?e.toPostgres():JSON.stringify(e));_.setAttribute(o.AttributeNames.PG_VALUES,e)}catch(e){r.diag.error("failed to stringify ",l.values,e)}return"string"==typeof l.name&&_.setAttribute(o.AttributeNames.PG_PLAN,l.name),_},n.handleExecutionResult=E,n.patchCallback=function(e,t,n,o,a){return function(s,l){s?(Object.prototype.hasOwnProperty.call(s,"code")&&(o[i.ATTR_ERROR_TYPE]=s.code),s instanceof Error&&t.recordException(S(s)),t.setStatus({code:r.SpanStatusCode.ERROR,message:s.message})):E(e,t,l),a(),t.end(),n.call(this,s,l)}},n.getPoolName=function(e){let t="";return(t+=(e?.host?`${e.host}`:"unknown_host")+":"+(e?.port?`${e.port}`:"unknown_port")+"/"+(e?.database?`${e.database}`:"unknown_database")).trim()},n.updateCounter=function(e,t,n,r,o){let i=t.totalCount,s=t.waitingCount,l=t.idleCount,u=i-l;return n.add(u-o.used,{[a.ATTR_DB_CLIENT_CONNECTION_STATE]:a.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),n.add(l-o.idle,{[a.ATTR_DB_CLIENT_CONNECTION_STATE]:a.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),r.add(s-o.pending,{[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),{used:u,idle:l,pending:s}},n.patchCallbackPGPool=function(e,t){return function(n,o,i){n&&(n instanceof Error&&e.recordException(S(n)),e.setStatus({code:r.SpanStatusCode.ERROR,message:n.message})),e.end(),t.call(this,n,o,i)}},n.patchClientConnectCallback=function(e,t){return function(n){n&&(n instanceof Error&&e.recordException(S(n)),e.setStatus({code:r.SpanStatusCode.ERROR,message:n.message})),e.end(),t.apply(this,arguments)}},n.getErrorMessage=function(e){return"object"==typeof e&&null!==e&&"message"in e?String(e.message):void 0},n.isObjectWithTextString=function(e){return"object"==typeof e&&"string"==typeof e?.text},n.sanitizedErrorMessage=S},324552,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.66.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},451598,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PgInstrumentation=void 0;let r=e.r(204780),o=e.r(357762),i=e.r(400893),a=e.r(482101),s=e.r(386127),l=e.r(324552),u=e.r(465522),c=e.r(385692),p=e.r(808119),_=e.r(184319);function T(e){return"Module"===e[Symbol.toStringTag]?e.default:e}class d extends r.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e),this._semconvStability=(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(p.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:o.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(_.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(_.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let e=[">=8.0.3 <9"],t=new r.InstrumentationNodeModuleFile("pg/lib/native/client.js",e,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),n=new r.InstrumentationNodeModuleFile("pg/lib/client.js",e,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new r.InstrumentationNodeModuleDefinition("pg",e,e=>{let t=T(e);return this._patchPgClient(t.Client),e},e=>{let t=T(e);return this._unpatchPgClient(t.Client),e},[n,t]),new r.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],e=>{let t=T(e);return(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),this._wrap(t.prototype,"connect",this._getPoolConnectPatch()),t},e=>{let t=T(e);(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect")})]}_patchPgClient(e){if(!e)return;let t=T(e);return(0,r.isWrapped)(t.prototype.query)&&this._unwrap(t.prototype,"query"),(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),this._wrap(t.prototype,"query",this._getClientQueryPatch()),this._wrap(t.prototype,"connect",this._getClientConnectPatch()),e}_unpatchPgClient(e){let t=T(e);return(0,r.isWrapped)(t.prototype.query)&&this._unwrap(t.prototype,"query"),(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),e}_getClientConnectPatch(){let e=this;return t=>function(n){let r=e.getConfig();if(a.shouldSkipInstrumentation(r)||r.ignoreConnectSpans)return t.call(this,n);let i=e.tracer.startSpan(u.SpanNames.CONNECT,{kind:o.SpanKind.CLIENT,attributes:a.getSemanticAttributesFromConnection(this,e._semconvStability)});if(n){let e=o.trace.getSpan(o.context.active());n=a.patchClientConnectCallback(i,n),e&&(n=o.context.bind(o.context.active(),n))}let s=o.context.with(o.trace.setSpan(o.context.active(),i),()=>t.call(this,n));return E(i,s)}}recordOperationDuration(e,t){let n={},o=[p.ATTR_DB_NAMESPACE,p.ATTR_ERROR_TYPE,p.ATTR_SERVER_PORT,p.ATTR_SERVER_ADDRESS,p.ATTR_DB_OPERATION_NAME];this._semconvStability&r.SemconvStability.OLD&&o.push(_.ATTR_DB_SYSTEM),this._semconvStability&r.SemconvStability.STABLE&&o.push(p.ATTR_DB_SYSTEM_NAME),o.forEach(t=>{t in e&&(n[t]=e[t])});let i=(0,c.hrTimeToMilliseconds)((0,c.hrTimeDuration)(t,(0,c.hrTime)()))/1e3;this._operationDuration.record(i,n)}_getClientQueryPatch(){let e=this;return t=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...n){let i;if(a.shouldSkipInstrumentation(e.getConfig()))return t.apply(this,n);let l=(0,c.hrTime)(),u=n[0],T="string"==typeof u,d=a.isObjectWithTextString(u),E=T?{text:u,values:Array.isArray(n[1])?n[1]:void 0}:d?{...u,name:u.name,text:u.text,values:u.values??(Array.isArray(n[1])?n[1]:void 0)}:void 0,S={[_.ATTR_DB_SYSTEM]:_.DB_SYSTEM_VALUE_POSTGRESQL,[p.ATTR_DB_NAMESPACE]:this.database,[p.ATTR_SERVER_PORT]:this.connectionParameters.port,[p.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};E?.text&&(S[p.ATTR_DB_OPERATION_NAME]=a.parseNormalizedOperationName(E?.text));let A=()=>{e.recordOperationDuration(S,l)},g=e.getConfig(),m=a.handleConfigQuery.call(this,e.tracer,g,e._semconvStability,E);if(g.addSqlCommenterCommentToQueries&&(T?n[0]=(0,s.addSqlCommenterComment)(m,u):!d||"name"in u||(n[0]={...u,text:(0,s.addSqlCommenterComment)(m,u.text)})),n.length>0){let t=o.trace.getSpan(o.context.active());if("function"==typeof n[n.length-1])n[n.length-1]=a.patchCallback(g,m,n[n.length-1],S,A),t&&(n[n.length-1]=o.context.bind(o.context.active(),n[n.length-1]));else if("function"==typeof E?.callback){let r=a.patchCallback(e.getConfig(),m,E.callback,S,A);t&&(r=o.context.bind(o.context.active(),r)),n[0].callback=r}}let{requestHook:h}=g;"function"==typeof h&&E&&(0,r.safeExecuteInTheMiddle)(()=>{let{database:e,host:t,port:n,user:r}=this.connectionParameters;h(m,{connection:{database:e,host:t,port:n,user:r},query:{text:E.text,values:E.values,name:E.name}})},t=>{t&&e._diag.error("Error running query hook",t)},!0);try{i=t.apply(this,n)}catch(e){throw e instanceof Error&&m.recordException(a.sanitizedErrorMessage(e)),m.setStatus({code:o.SpanStatusCode.ERROR,message:a.getErrorMessage(e)}),m.end(),e}return i instanceof Promise?i.then(t=>new Promise(n=>{a.handleExecutionResult(e.getConfig(),m,t),A(),m.end(),n(t)})).catch(e=>new Promise((t,n)=>{e instanceof Error&&m.recordException(a.sanitizedErrorMessage(e)),m.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),A(),m.end(),n(e)})):i})}_setPoolConnectEventListeners(e){if(e[i.EVENT_LISTENERS_SET])return;let t=a.getPoolName(e.options);e.on("connect",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("acquire",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("remove",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("release",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e[i.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let e=this;return t=>function(n){let r=e.getConfig();if(a.shouldSkipInstrumentation(r)||(e._setPoolConnectEventListeners(this),r.ignoreConnectSpans))return t.call(this,n);let i=e.tracer.startSpan(u.SpanNames.POOL_CONNECT,{kind:o.SpanKind.CLIENT,attributes:a.getSemanticAttributesFromPoolConnection(this.options,e._semconvStability)});if(n){let e=o.trace.getSpan(o.context.active());n=a.patchCallbackPGPool(i,n),e&&(n=o.context.bind(o.context.active(),n))}let s=o.context.with(o.trace.setSpan(o.context.active(),i),()=>t.call(this,n));return E(i,s)}}}function E(e,t){return t instanceof Promise?o.context.bind(o.context.active(),t.then(t=>(e.end(),t)).catch(t=>(t instanceof Error&&e.recordException(a.sanitizedErrorMessage(t)),e.setStatus({code:o.SpanStatusCode.ERROR,message:a.getErrorMessage(t)}),e.end(),Promise.reject(t)))):t}n.PgInstrumentation=d},840167,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.PgInstrumentation=void 0;var r=e.r(451598);Object.defineProperty(n,"PgInstrumentation",{enumerable:!0,get:function(){return r.PgInstrumentation}});var o=e.r(894105);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}})},832719,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(840167),o=e.r(976285),i=e.r(625331),a="Postgres",s=i.generateInstrumentOnce(a,r.PgInstrumentation,e=>({requireParentSpan:!0,requestHook(e){i.addOriginToSpan(e,"auto.db.otel.postgres")},ignoreConnectSpans:e?.ignoreConnectSpans??!1})),l=o.defineIntegration(e=>({name:a,setupOnce(){s(e)}}));n.instrumentPostgres=s,n.postgresIntegration=l},19194,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(976285),s=e.r(625331),l=e.r(866779),u="PostgresJs",c=[">=3.0.0 <4"],p=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,_=Symbol.for("sentry.query.from.instrumented.sql"),T=s.generateInstrumentOnce(u,e=>new d({requireParentSpan:e?.requireParentSpan??!0,requestHook:e?.requestHook}));class d extends o.InstrumentationBase{constructor(e){super("sentry-postgres-js",a.SDK_VERSION,e)}init(){let e=new o.InstrumentationNodeModuleDefinition("postgres",c,e=>{try{return this._patchPostgres(e)}catch(t){return l.DEBUG_BUILD&&a.debug.error("Failed to patch postgres module:",t),e}},e=>e);return["src","cf/src","cjs/src"].forEach(t=>{e.files.push(new o.InstrumentationNodeModuleFile(`postgres/${t}/query.js`,c,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),e}_patchPostgres(e){let t="function"==typeof e,n=t?e:e.default;if("function"!=typeof n)return l.DEBUG_BUILD&&a.debug.warn("postgres module does not export a function. Skipping instrumentation."),e;let r=this,o=function(...e){let t=Reflect.construct(n,e);if(!t||"function"!=typeof t)return l.DEBUG_BUILD&&a.debug.warn("postgres() did not return a valid instance"),t;let o=r.getConfig();return a.instrumentPostgresJsSql(t,{requireParentSpan:o.requireParentSpan,requestHook:o.requestHook})};for(let e of(Object.setPrototypeOf(o,n),Object.setPrototypeOf(o.prototype,n.prototype),Object.getOwnPropertyNames(n)))if(!["length","name","prototype"].includes(e)){let t=Object.getOwnPropertyDescriptor(n,e);t&&Object.defineProperty(o,e,t)}return t?o:(a.replaceExports(e,"default",o),e)}_shouldCreateSpans(){let e=this.getConfig();return void 0!==r.trace.getSpan(r.context.active())||!e.requireParentSpan}_setOperationName(e,t,n){if(n)return void e.setAttribute(i.ATTR_DB_OPERATION_NAME,n);let r=t?.match(p);r?.[1]&&e.setAttribute(i.ATTR_DB_OPERATION_NAME,r[1].toUpperCase())}_reconstructQuery(e){if(e?.length)return 1===e.length?e[0]||void 0:e.reduce((e,t,n)=>0===n?t:`${e}$${n}${t}`,"")}_sanitizeSqlQuery(e){return e?e.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{s.addOriginToSpan(r,"auto.db.postgresjs"),r.setAttributes({[i.ATTR_DB_SYSTEM_NAME]:"postgres",[i.ATTR_DB_QUERY_TEXT]:c});let{requestHook:p}=t.getConfig();p&&o.safeExecuteInTheMiddle(()=>p(r,c,void 0),e=>{e&&(r.setAttribute("sentry.hook.error","requestHook failed"),l.DEBUG_BUILD&&a.debug.error(`Error in requestHook for ${u} integration:`,e))},!0);let _=this.resolve;this.resolve=new Proxy(_,{apply:(e,n,o)=>{try{t._setOperationName(r,c,o?.[0]?.command),r.end()}catch(e){l.DEBUG_BUILD&&a.debug.error("Error ending span in resolve callback:",e)}return Reflect.apply(e,n,o)}});let T=this.reject;this.reject=new Proxy(T,{apply:(e,n,o)=>{try{r.setStatus({code:a.SPAN_STATUS_ERROR,message:o?.[0]?.message||"unknown_error"}),r.setAttribute(i.ATTR_DB_RESPONSE_STATUS_CODE,o?.[0]?.code||"unknown"),r.setAttribute(i.ATTR_ERROR_TYPE,o?.[0]?.name||"unknown"),t._setOperationName(r,c),r.end()}catch(e){l.DEBUG_BUILD&&a.debug.error("Error ending span in reject callback:",e)}return Reflect.apply(e,n,o)}});try{return n.apply(this,e)}catch(e){throw r.setStatus({code:a.SPAN_STATUS_ERROR,message:e instanceof Error?e.message:"unknown_error"}),r.end(),e}})},e.Query.prototype.handle.__sentry_original__=n,e}_unpatchQueryPrototype(e){return e.Query.prototype.handle.__sentry_original__&&(e.Query.prototype.handle=e.Query.prototype.handle.__sentry_original__),e}}let E=a.defineIntegration(e=>({name:u,setupOnce(){T(e)}}));n.PostgresJsInstrumentation=d,n.instrumentPostgresJs=T,n.postgresJsIntegration=E},816879,e=>{"use strict";e.s([],712748),e.i(712748);var t,n,r=e.i(545364),o=e.i(605809);let i="object"==typeof globalThis?globalThis:e.g,a=Symbol.for("io.opentelemetry.js.api.logs");class s{emit(e){}}let l=new s,u=new class{getLogger(e,t,n){return new s}};class c{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}emit(e){this._getLogger().emit(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider._getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):l}}class p{getLogger(e,t,n){var r;return null!=(r=this._getDelegateLogger(e,t,n))?r:new c(this,e,t,n)}_getDelegate(){var e;return null!=(e=this._delegate)?e:u}_setDelegate(e){this._delegate=e}_getDelegateLogger(e,t,n){var r;return null==(r=this._delegate)?void 0:r.getLogger(e,t,n)}}class _{constructor(){this._proxyLoggerProvider=new p}static getInstance(){return this._instance||(this._instance=new _),this._instance}setGlobalLoggerProvider(e){return i[a]?this.getLoggerProvider():(i[a]=t=>1===t?e:u,this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,t;return null!=(t=null==(e=i[a])?void 0:e.call(i,1))?t:this._proxyLoggerProvider}getLogger(e,t,n){return this.getLoggerProvider().getLogger(e,t,n)}disable(){delete i[a],this._proxyLoggerProvider=new p}}let T=_.getInstance();function d(e){let t=e.tracerProvider||r.trace.getTracerProvider(),n=e.meterProvider||o.metrics.getMeterProvider(),i=e.loggerProvider||T.getLoggerProvider(),a=e.instrumentations?.flat()??[];for(let e=0,r=a.length;e{a.forEach(e=>e.disable())}}var E=e.i(814747),S=e.i(224361),A=e.i(978116);let g=/^(?:v)?(?(?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-]+)*))?$/,m=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,h={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function R(e,t,n,r){if(t.includes("||")){for(let o of t.trim().split("||"))if(f(e,o,n,r))return!0;return!1}if(t.includes(" - ")){var o,i;o=t,i=r,t=o.replace(x,(e,t,n,r,o,a,s,l,u,c,p,_)=>(t=N(n)?"":N(r)?`>=${n}.0.0${i?.includePrerelease?"-0":""}`:N(o)?`>=${n}.${r}.0${i?.includePrerelease?"-0":""}`:a?`>=${t}`:`>=${t}${i?.includePrerelease?"-0":""}`,l=N(u)?"":N(c)?`<${+u+1}.0.0-0`:N(p)?`<${u}.${+c+1}.0-0`:_?`<=${u}.${c}.${p}-${_}`:i?.includePrerelease?`<${u}.${c}.${+p+1}-0`:`<=${l}`,`${t} ${l}`.trim()))}else if(t.includes(" ")){for(let o of t.trim().replace(/\s{2,}/g," ").split(" "))if(!f(e,o,n,r))return!1;return!0}return f(e,t,n,r)}function f(e,t,n,r){var o,i,a,s,l,u;let c;if((o=t,i=r,t=(l=o=(a=o=o.trim(),s=i,c=s?.includePrerelease?"-0":"",o=a.replace(w,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0${c} <${+t+1}.0.0-0`:N(r)?"0"===t?`>=${t}.${n}.0${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.0${c} <${+t+1}.0.0-0`:o?"0"===t?"0"===n?`>=${t}.${n}.${r}-${o} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r}-${o} <${+t+1}.0.0-0`:"0"===t?"0"===n?`>=${t}.${n}.${r}${c} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${+t+1}.0.0-0`)).replace(V,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0 <${+t+1}.0.0-0`:N(r)?`>=${t}.${n}.0 <${t}.${+n+1}.0-0`:o?`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${t}.${+n+1}.0-0`),u=i,o=l.replace(B,(e,t,n,r,o,i)=>{let a=N(n),s=a||N(r),l=s||N(o);return"="===t&&l&&(t=""),i=u?.includePrerelease?"-0":"",a?e=">"===t||"<"===t?"<0.0.0-0":"*":t&&l?(s&&(r=0),o=0,">"===t?(t=">=",s?(n=+n+1,r=0):r=+r+1,o=0):"<="===t&&(t="<",s?n=+n+1:r=+r+1),"<"===t&&(i="-0"),e=`${t+n}.${r}.${o}${i}`):s?e=`>=${n}.0.0${i} <${+n+1}.0.0-0`:l&&(e=`>=${n}.${r}.0${i} <${n}.${+r+1}.0-0`),e})).trim()).includes(" "))return R(e,t,n,r);{let r=function(e){if(!e)return{};let t=e.match(m);if(!t)return A.diag.error(`Invalid range: ${e}`),{invalid:!0};let n=t.groups.op,r=t.groups.version,o=t.groups.prerelease,i=t.groups.build,a=r.split("."),s=o?.split(".");return"=="===n&&(n="="),{op:n||"=",version:r,versionSegments:a,versionSegmentCount:a.length,prerelease:o,prereleaseSegments:s,prereleaseSegmentCount:s?s.length:0,build:i}}(t);return n.push(r),function(e,t){if(t.invalid)return!1;if(!t.version||I(t.version))return!0;let n=y(e.versionSegments||[],t.versionSegments||[]);if(0===n){let r=e.prereleaseSegments||[],o=t.prereleaseSegments||[];n=r.length||o.length?!r.length&&o.length?1:r.length&&!o.length?-1:y(r,o):0}return h[t.op]?.includes(n)}(e,r)}}function N(e){return!e||"x"===e.toLowerCase()||"*"===e}function I(e){return"*"===e||"x"===e||"X"===e}function O(e){let t=parseInt(e,10);return isNaN(t)?e:t}function y(e,t){for(let n=0;nr?1:n)?=?)\\s*${G}$`),x=RegExp(`^\\s*(${G})\\s+-\\s+(${G})\\s*$`),V=RegExp(`^(?:~>?)${G}$`),w=RegExp(`^(?:\\^)${G}$`),H=console.error.bind(console);function k(e,t,n){let r=!!e[t]&&Object.prototype.propertyIsEnumerable.call(e,t);Object.defineProperty(e,t,{configurable:!0,enumerable:r,writable:!0,value:n})}let Y=(e,t,n)=>{if(!e||!e[t])return void H("no original function "+String(t)+" to wrap");if(!n){H("no wrapper function"),H(Error().stack);return}let r=e[t];if("function"!=typeof r||"function"!=typeof n)return void H("original object and wrapper must be functions");let o=n(r,t);return k(o,"__original",r),k(o,"__unwrap",()=>{e[t]===o&&k(e,t,r)}),k(o,"__wrapped",!0),k(e,t,o),o},j=(e,t,n)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{Y(e,t,n)})}):H("must provide one or more functions to wrap on modules")},F=(e,t)=>{if(!e||!e[t]){H("no function to unwrap."),H(Error().stack);return}let n=e[t];n.__unwrap?n.__unwrap():H("no original to unwrap to -- has "+String(t)+" already been unwrapped?")},W=(e,t)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{F(e,t)})}):H("must provide one or more functions to unwrap on modules")};function K(e){e&&e.logger&&("function"!=typeof e.logger?H("new logger isn't a function, not replacing"):H=e.logger)}K.wrap=Y,K.massWrap=j,K.unwrap=F,K.massUnwrap=W;class X{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(e,t,n){this.instrumentationName=e,this.instrumentationVersion=t,this.setConfig(n),this._diag=A.diag.createComponentLogger({namespace:e}),this._tracer=r.trace.getTracer(e,t),this._meter=o.metrics.getMeter(e,t),this._logger=T.getLogger(e,t),this._updateMetricInstruments()}_wrap=Y;_unwrap=F;_massWrap=j;_massUnwrap=W;get meter(){return this._meter}setMeterProvider(e){this._meter=e.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(e){this._logger=e.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let e=this.init()??[];return Array.isArray(e)?e:[e]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(e){this._config={enabled:!0,...e}}setTracerProvider(e){this._tracer=e.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(e,t,n,r){if(e)try{e(n,r)}catch(e){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:t},e)}}}var Z=e.i(156823);class J{hooks=[];children=new Map}class ${_trie=new J;_counter=0;insert(e){let t=this._trie;for(let n of e.moduleName.split("/")){let e=t.children.get(n);e||(e=new J,t.children.set(n,e)),t=e}t.hooks.push({hook:e,insertedId:this._counter++})}search(e,{maintainInsertionOrder:t,fullOnly:n}={}){let r=this._trie,o=[],i=!0;for(let t of e.split("/")){let e=r.children.get(t);if(!e){i=!1;break}n||o.push(...e.hooks),r=e}return(n&&i&&o.push(...r.hooks),0===o.length)?[]:1===o.length?[o[0].hook]:(t&&o.sort((e,t)=>e.insertedId-t.insertedId),o.map(({hook:e})=>e))}}let Q=["afterEach","after","beforeEach","before","describe","it"].every(t=>"function"==typeof e.g[t]);class z{_moduleNameTrie=new $;static _instance;constructor(){this._initialize()}_initialize(){new Z.Hook(null,{internals:!0},(e,t,n)=>{var r;let o=(r=t,"/"!==E.sep?r.split(E.sep).join("/"):r);for(let{onRequire:r}of this._moduleNameTrie.search(o,{maintainInsertionOrder:!0,fullOnly:void 0===n}))e=r(e,t,n);return e})}register(e,t){let n={moduleName:e,onRequire:t};return this._moduleNameTrie.insert(n),n}static getInstance(){return Q?new z:this._instance=this._instance??new z}}var q=e.i(74667),ee=e.i(522734);function et(e,t,n){let r,o;try{o=e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}async function en(e,t,n){let r,o;try{o=await e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}function er(e){return"function"==typeof e&&"function"==typeof e.__original&&"function"==typeof e.__unwrap&&!0===e.__wrapped}class eo extends X{_modules;_hooks=[];_requireInTheMiddleSingleton=z.getInstance();_enabled=!1;constructor(e,t,n){super(e,t,n);let r=this.init();r&&!Array.isArray(r)&&(r=[r]),this._modules=r||[],this._config.enabled&&this.enable()}_wrap=(e,t,n)=>{if(er(e[t])&&this._unwrap(e,t),!S.types.isProxy(e))return Y(e,t,n);{let r=Y(Object.assign({},e),t,n);return Object.defineProperty(e,t,{value:r}),r}};_unwrap=(e,t)=>S.types.isProxy(e)?Object.defineProperty(e,t,{value:e[t]}):F(e,t);_massWrap=(e,t,n)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._wrap(e,t,n)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_massUnwrap=(e,t)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._unwrap(e,t)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(t=>{let{name:n}=t;try{let t=(()=>{let e=Error("Cannot find module as expression is too dynamic");throw e.code="MODULE_NOT_FOUND",e})();e.c[t]&&this._diag.warn(`Module ${n} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${n}`)}catch{}})}_extractPackageVersion(e){try{let t=(0,ee.readFileSync)(E.join(e,"package.json"),{encoding:"utf8"}),n=JSON.parse(t).version;return"string"==typeof n?n:void 0}catch{A.diag.warn("Failed extracting version",e)}}_onRequire(e,t,n,r){if(!r)return"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:e.name}),e.patch(t)):t;let o=this._extractPackageVersion(r);if(e.moduleVersion=o,e.name===n)return ei(e.supportedVersions,o,e.includePrerelease)&&"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:e.name,version:e.moduleVersion,baseDir:r}),e.patch(t,e.moduleVersion)):t;let i=e.files??[],a=E.normalize(n);return i.filter(e=>e.name===a).filter(t=>ei(t.supportedVersions,o,e.includePrerelease)).reduce((t,n)=>(n.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:e.name,version:e.moduleVersion,fileName:n.name,baseDir:r}),n.patch(t,e.moduleVersion)):t,t)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let e of this._modules)for(let t of("function"==typeof e.patch&&e.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:e.name,version:e.moduleVersion}),e.patch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.patch(t.moduleExports,e.moduleVersion));return}for(let e of(this._warnOnPreloadedModules(),this._modules)){let t=(t,n,r)=>{if(!r&&E.isAbsolute(n)){let e=E.parse(n);n=e.name,r=e.dir}return this._onRequire(e,t,n,r)},n=(t,n,r)=>this._onRequire(e,t,n,r),r=E.isAbsolute(e.name)?new Z.Hook([e.name],{internals:!0},n):this._requireInTheMiddleSingleton.register(e.name,n);this._hooks.push(r);let o=new q.Hook([e.name],{internals:!1},t);this._hooks.push(o)}}}disable(){if(this._enabled)for(let e of(this._enabled=!1,this._modules))for(let t of("function"==typeof e.unpatch&&e.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:e.name,version:e.moduleVersion}),e.unpatch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.unpatch(t.moduleExports,e.moduleVersion))}isEnabled(){return this._enabled}}function ei(e,t,n){return void 0===t?e.includes("*"):e.some(e=>(function(e,t,n){var r,o,i;if(!("string"==typeof(r=e)&&g.test(r)))return A.diag.error(`Invalid version: ${e}`),!1;if(!t)return!0;t=t.replace(/([<>=~^]+)\s+/g,"$1");let a=function(e){let t=e.match(g);if(!t)return void A.diag.error(`Invalid version: ${e}`);let n=t.groups.version,r=t.groups.prerelease,o=t.groups.build,i=n.split("."),a=r?.split(".");return{op:void 0,version:n,versionSegments:i,versionSegmentCount:i.length,prerelease:r,prereleaseSegments:a,prereleaseSegmentCount:a?a.length:0,build:o}}(e);if(!a)return!1;let s=[],l=R(a,t,s,n);return l&&!n?.includePrerelease?(o=a,i=s,!o.prerelease||i.some(e=>e.prerelease&&e.version===o.version)):l})(t,e,{includePrerelease:n}))}class ea{name;supportedVersions;patch;unpatch;files;constructor(e,t,n,r,o){this.name=e,this.supportedVersions=t,this.patch=n,this.unpatch=r,this.files=o||[]}}class es{supportedVersions;patch;unpatch;name;constructor(e,t,n,r){this.supportedVersions=t,this.patch=n,this.unpatch=r,this.name=(0,E.normalize)(e)}}function el(e,t){let r=n.OLD;for(let o of t?.split(",").map(e=>e.trim()).filter(e=>""!==e)??[])if(o.toLowerCase()===e+"/dup"){r=n.DUPLICATE;break}else o.toLowerCase()===e&&(r=n.STABLE);return r}(t=n||(n={}))[t.STABLE=1]="STABLE",t[t.OLD=2]="OLD",t[t.DUPLICATE=3]="DUPLICATE",e.s(["InstrumentationBase",()=>eo,"InstrumentationNodeModuleDefinition",()=>ea,"InstrumentationNodeModuleFile",()=>es,"SemconvStability",()=>n,"isWrapped",()=>er,"registerInstrumentations",()=>d,"safeExecuteInTheMiddle",()=>et,"safeExecuteInTheMiddleAsync",()=>en,"semconvStabilityFromStr",()=>el],816879)},823876,(e,t,n)=>{"use strict";var r=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,s={},l={PrismaInstrumentation:()=>f,registerInstrumentations:()=>N.registerInstrumentations};for(var u in l)r(s,u,{get:l[u],enumerable:!0});t.exports=((e,t,n,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of i(t))a.call(e,l)||l===n||r(e,l,{get:()=>t[l],enumerable:!(s=o(t,l))||s.enumerable});return e})(r({},"__esModule",{value:!0}),s);var c=e.r(357762),p=e.r(816879),_="7.6.0".split(".")[0],T="PRISMA_INSTRUMENTATION",d=`V${_}_PRISMA_INSTRUMENTATION`,E=globalThis,S=e.r(357762),A="true"===process.env.PRISMA_SHOW_ALL_TRACES,g=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:e,ignoreSpanTypes:t}){this.tracerProvider=e,this.ignoreSpanTypes=t}isEnabled(){return!0}getTraceParent(e){let t=S.trace.getSpanContext(e??S.context.active());return t?`00-${t.traceId}-${t.spanId}-0${t.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(e){let t=this.tracerProvider.getTracer("prisma"),n=new Map;for(let r of e.filter(e=>null===e.parentId))!function e(t,n,r,o,i){if(h(n.name,i))return;let a={attributes:n.attributes,kind:"client"===n.kind?S.SpanKind.CLIENT:S.SpanKind.INTERNAL,startTime:n.startTime};t.startActiveSpan(n.name,a,a=>{for(let s of(o.set(n.id,a.spanContext().spanId),n.links&&a.addLinks(n.links.flatMap(e=>{let t=o.get(e);return t?{context:{spanId:t,traceId:a.spanContext().traceId,traceFlags:a.spanContext().traceFlags}}:[]})),r.filter(e=>e.parentId===n.id)))e(t,s,r,o,i);a.end(n.endTime)})}(t,r,e,n,this.ignoreSpanTypes)}getActiveContext(){return S.context.active()}runInChildSpan(e,t){if("string"==typeof e&&(e={name:e}),e.internal&&!A)return t();let n=this.tracerProvider.getTracer("prisma"),r=e.context??this.getActiveContext(),o=`prisma:client:${e.name}`;if(h(o,this.ignoreSpanTypes))return t();if(!1===e.active){let i=n.startSpan(o,e,r);return m(i,t(i,r))}return n.startActiveSpan(o,e,e=>m(e,t(e,r)))}};function m(e,t){var n;return null!=(n=t)&&"function"==typeof n.then?t.then(t=>(e.end(),t),t=>{throw e.end(),t}):(e.end(),t)}function h(e,t){return t.some(t=>"string"==typeof t?t===e:t.test(e))}var R="7.6.0",f=class extends p.InstrumentationBase{tracerProvider;constructor(e={}){super("@prisma/instrumentation",R,e)}setTracerProvider(e){this.tracerProvider=e}init(){return[new p.InstrumentationNodeModuleDefinition("@prisma/client",[R])]}enable(){let e,t=this._config;e={helper:new g({tracerProvider:this.tracerProvider??c.trace.getTracerProvider(),ignoreSpanTypes:t.ignoreSpanTypes??[]})},E[d]=e,E[T]=e}disable(){delete E[d],delete E[T]}isEnabled(){return void 0!==function(){let e=E[d];if(e?.helper)return e.helper;let t=E[T];return t?.helper}()}},N=e.r(816879)},547683,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(823876),i=e.r(976285),a=e.r(625331),s="Prisma";function l(){let e=globalThis.PRISMA_INSTRUMENTATION;return e&&"object"==typeof e&&"helper"in e?e.helper:void 0}class u extends o.PrismaInstrumentation{constructor(e){super(e?.instrumentationConfig)}enable(){super.enable();let e=l();e&&"object"==typeof e&&"dispatchEngineSpans"in e&&(e.createEngineSpan=e=>{let t=r.trace.getTracer("prismaV5Compatibility"),n=t._idGenerator;if(!n)return void i.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{e.spans.forEach(e=>{var o;let i=(o=e.kind,"client"===o?r.SpanKind.CLIENT:r.SpanKind.INTERNAL),a=e.parent_span_id,s=e.span_id,l=e.trace_id,u=e.links?.map(e=>({context:{traceId:e.trace_id,spanId:e.span_id,traceFlags:r.TraceFlags.SAMPLED}})),c=r.trace.setSpanContext(r.context.active(),{traceId:l,spanId:a,traceFlags:r.TraceFlags.SAMPLED});r.context.with(c,()=>{t._idGenerator={generateTraceId:()=>l,generateSpanId:()=>s},t.startSpan(e.name,{kind:i,links:u,startTime:e.start_time,attributes:e.attributes}).end(e.end_time),t._idGenerator=n})})}finally{t._idGenerator=n}})}}let c=a.generateInstrumentOnce(s,e=>new u(e)),p=i.defineIntegration(e=>({name:s,setupOnce(){c(e)},setup(e){l()&&e.on("spanStart",e=>{let t=i.spanToJSON(e);t.description?.startsWith("prisma:")&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===t.description&&t.data["db.query.text"]&&e.updateName(t.data["db.query.text"]),"prisma:engine:db_query"!==t.description||t.data["db.system"]||e.setAttribute("db.system","prisma")})}}));n.instrumentPrisma=c,n.prismaIntegration=p},399189,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},318837,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HapiLifecycleMethodNames=n.HapiLayerType=n.handlerPatched=n.HapiComponentName=void 0,n.HapiComponentName="@hapi/hapi",n.handlerPatched=Symbol("hapi-handler-patched"),n.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},n.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},808139,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_HTTP_METHOD=void 0,n.ATTR_HTTP_METHOD="http.method"},180434,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).HAPI_TYPE="hapi.type",r.PLUGIN_NAME="hapi.plugin.name",r.EXT_TYPE="server.ext.type"},346711,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getPluginFromInput=n.getExtMetadata=n.getRouteMetadata=n.isPatchableExtMethod=n.isDirectExtInput=n.isLifecycleExtEventObj=n.isLifecycleExtType=n.getPluginName=void 0;let r=e.r(808119),o=e.r(808139),i=e.r(318837),a=e.r(180434),s=e.r(204780);n.getPluginName=function(e){return e.name?e.name:e.pkg.name},n.isLifecycleExtType=e=>"string"==typeof e&&i.HapiLifecycleMethodNames.has(e),n.isLifecycleExtEventObj=e=>{let t=e?.type;return void 0!==t&&(0,n.isLifecycleExtType)(t)},n.isDirectExtInput=e=>Array.isArray(e)&&e.length<=3&&(0,n.isLifecycleExtType)(e[0])&&"function"==typeof e[1],n.isPatchableExtMethod=e=>!Array.isArray(e),n.getRouteMetadata=(e,t,n)=>{let l,u={[r.ATTR_HTTP_ROUTE]:e.path};return t&s.SemconvStability.OLD&&(u[o.ATTR_HTTP_METHOD]=e.method),t&s.SemconvStability.STABLE&&(u[r.ATTR_HTTP_REQUEST_METHOD]=e.method),n?(u[a.AttributeNames.HAPI_TYPE]=i.HapiLayerType.PLUGIN,u[a.AttributeNames.PLUGIN_NAME]=n,l=`${n}: route - ${e.path}`):(u[a.AttributeNames.HAPI_TYPE]=i.HapiLayerType.ROUTER,l=`route - ${e.path}`),{attributes:u,name:l}},n.getExtMetadata=(e,t,n)=>{let r=`ext - ${e}`;return(n&&"method"!==n&&(r=`ext - ${e} - ${n}`),t)?{attributes:{[a.AttributeNames.EXT_TYPE]:e,[a.AttributeNames.HAPI_TYPE]:i.HapiLayerType.EXT,[a.AttributeNames.PLUGIN_NAME]:t},name:`${t}: ${r}`}:{attributes:{[a.AttributeNames.EXT_TYPE]:e,[a.AttributeNames.HAPI_TYPE]:i.HapiLayerType.EXT},name:r}},n.getPluginFromInput=e=>"plugin"in e?"plugin"in e.plugin?e.plugin.plugin:e.plugin:e},345301,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HapiInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(399189),s=e.r(318837),l=e.r(346711);class u extends i.InstrumentationBase{_semconvStability;constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e),this._semconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new i.InstrumentationNodeModuleDefinition(s.HapiComponentName,[">=17.0.0 <22"],e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;return(0,i.isWrapped)(t.server)||this._wrap(t,"server",this._getServerPatch.bind(this)),(0,i.isWrapped)(t.Server)||this._wrap(t,"Server",this._getServerPatch.bind(this)),t},e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;this._massUnwrap([t],["server","Server"])})}_getServerPatch(e){let t=this,n=this;return function(r){let o=e.apply(this,[r]);return n._wrap(o,"route",e=>t._getServerRoutePatch.bind(t)(e)),n._wrap(o,"ext",e=>t._getServerExtPatch.bind(t)(e)),n._wrap(o,"register",t._getServerRegisterPatch.bind(t)),o}}_getServerRegisterPatch(e){let t=this;return function(n,r){if(Array.isArray(n))for(let e of n){let n=(0,l.getPluginFromInput)(e);t._wrapRegisterHandler(n)}else{let e=(0,l.getPluginFromInput)(n);t._wrapRegisterHandler(e)}return e.apply(this,[n,r])}}_getServerExtPatch(e,t){let n=this;return function(...r){if(Array.isArray(r[0])){let e=r[0];for(let r=0;rt._getServerRoutePatch.bind(t)(e,n)),o._wrap(e,"ext",e=>t._getServerExtPatch.bind(t)(e,n)),r.call(this,e,i)}}_wrapExtMethods(e,t,n){let o=this;if(e instanceof Array)for(let n=0;nasync function(...a){if(void 0===r.trace.getSpan(r.context.active()))return await i.call(this,...a);let s=(0,o.getRPCMetadata)(r.context.active());s?.type===o.RPCType.HTTP&&(s.route=e.path);let u=(0,l.getRouteMetadata)(e,n._semconvStability,t),c=n.tracer.startSpan(u.name,{attributes:u.attributes});try{return await r.context.with(r.trace.setSpan(r.context.active(),c),()=>i.call(this,...a))}catch(e){throw c.recordException(e),c.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),e}finally{c.end()}};if("function"==typeof e.handler)e.handler=i(e.handler);else if("function"==typeof e.options){let t=e.options;e.options=function(e){let n=t(e);return"function"==typeof n.handler&&(n.handler=i(n.handler)),n}}else"function"==typeof e.options?.handler&&(e.options.handler=i(e.options.handler));return e}}n.HapiInstrumentation=u},144297,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.HapiInstrumentation=void 0;var r=e.r(345301);Object.defineProperty(n,"HapiInstrumentation",{enumerable:!0,get:function(){return r.HapiInstrumentation}});var o=e.r(180434);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}})},376169,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(144297),o=e.r(976285),i=e.r(625331),a=e.r(866779),s="Hapi",l=i.generateInstrumentOnce(s,()=>new r.HapiInstrumentation),u=o.defineIntegration(()=>({name:s,setupOnce(){l()}})),c={name:"SentryHapiErrorPlugin",version:o.SDK_VERSION,register:async function(e){e.events.on({name:"request",channels:["error"]},(e,t)=>{var n;if(o.getIsolationScope()!==o.getDefaultIsolationScope()){let t=e.route;t.path&&o.getIsolationScope().setTransactionName(`${t.method.toUpperCase()} ${t.path}`)}else a.DEBUG_BUILD&&o.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");t&&"object"==typeof t&&"error"in t&&t.error&&(n=t.error,o.captureException(n,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function p(e){await e.register(c);let t=o.getClient();t&&t.on("spanStart",e=>{var t;let n,r;t=e,r=(n=o.spanToJSON(t).data)["hapi.type"],!n[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&r&&t.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${r}.hapi`})}),i.ensureIsWrapped(e.register,"hapi")}n.hapiErrorPlugin=c,n.hapiIntegration=u,n.instrumentHapi=l,n.setupHapiErrorHandler=p},212994,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},n.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},29288,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780),i=e.r(976285),a=e.r(212994);class s extends o.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-hono","0.0.1",e)}init(){return[new o.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],e=>this._patch(e))]}_patch(e){let t=this;class n extends e.Hono{constructor(...e){super(...e),t._wrap(this,"get",t._patchHandler()),t._wrap(this,"post",t._patchHandler()),t._wrap(this,"put",t._patchHandler()),t._wrap(this,"delete",t._patchHandler()),t._wrap(this,"options",t._patchHandler()),t._wrap(this,"patch",t._patchHandler()),t._wrap(this,"all",t._patchHandler()),t._wrap(this,"on",t._patchOnHandler()),t._wrap(this,"use",t._patchMiddlewareHandler())}}try{e.Hono=n}catch{return{...e,Hono:n}}return e}_patchHandler(){let e=this;return function(t){return function(...n){if("string"==typeof n[0]){let r=n[0];if(1===n.length)return t.apply(this,[r]);let o=n.slice(1);return t.apply(this,[r,...o.map(t=>e._wrapHandler(t))])}return t.apply(this,n.map(t=>e._wrapHandler(t)))}}}_patchOnHandler(){let e=this;return function(t){return function(...n){let r=n.slice(2);return t.apply(this,[...n.slice(0,2),...r.map(t=>e._wrapHandler(t))])}}}_patchMiddlewareHandler(){let e=this;return function(t){return function(...n){if("string"==typeof n[0]){let r=n[0];if(1===n.length)return t.apply(this,[r]);let o=n.slice(1);return t.apply(this,[r,...o.map(t=>e._wrapHandler(t))])}return t.apply(this,n.map(t=>e._wrapHandler(t)))}}}_wrapHandler(e){let t=this;return function(n,o){if(!t.isEnabled())return e.apply(this,[n,o]);let s=n.req.path,l=t.tracer.startSpan(s);return r.context.with(r.trace.setSpan(r.context.active(),l),()=>t._safeExecute(()=>{let r=e.apply(this,[n,o]);if(i.isThenable(r))return r.then(n=>{let r=t._determineHandlerType(n);return l.setAttributes({[a.AttributeNames.HONO_TYPE]:r,[a.AttributeNames.HONO_NAME]:r===a.HonoTypes.REQUEST_HANDLER?s:e.name||"anonymous"}),t.getConfig().responseHook?.(l),n});{let n=t._determineHandlerType(r);return l.setAttributes({[a.AttributeNames.HONO_TYPE]:n,[a.AttributeNames.HONO_NAME]:n===a.HonoTypes.REQUEST_HANDLER?s:e.name||"anonymous"}),t.getConfig().responseHook?.(l),r}},()=>l.end(),e=>{t._handleError(l,e),l.end()}))}}_safeExecute(e,t,n){try{let r=e();return i.isThenable(r)?r.then(()=>t(),e=>n(e)):t(),r}catch(e){throw n(e),e}}_determineHandlerType(e){return void 0===e?a.HonoTypes.MIDDLEWARE:a.HonoTypes.REQUEST_HANDLER}_handleError(e,t){t instanceof Error&&(e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.recordException(t))}}n.HonoInstrumentation=s},688750,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(625331),a=e.r(866779),s=e.r(212994),l=e.r(29288),u="Hono",c=i.generateInstrumentOnce(u,()=>new l.HonoInstrumentation({responseHook:e=>{!function(e){let t=o.spanToJSON(e).data,n=t[s.AttributeNames.HONO_TYPE];if(t[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.hono`});let i=t[s.AttributeNames.HONO_NAME];if("string"==typeof i&&e.updateName(i),o.getIsolationScope()===o.getDefaultIsolationScope()){a.DEBUG_BUILD&&o.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let l=t[r.ATTR_HTTP_ROUTE],u=t[r.ATTR_HTTP_REQUEST_METHOD];"string"==typeof l&&"string"==typeof u&&o.getIsolationScope().setTransactionName(`${u} ${l}`)}(e)}})),p=o.defineIntegration(()=>({name:u,setupOnce(){c()}}));n.honoIntegration=p,n.instrumentHono=c,n.setupHonoErrorHandler=function(e,t){e.use(async function(e,t){let n=o.httpRequestToRequestData(e.req);o.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:n}),await t()}),e.use(async function(e,n){await n(),(t?.shouldHandleError||function(e){return e.res.status>=500})(e)&&(e.res.sentry=o.captureException(e.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),i.ensureIsWrapped(e.use,"hono")}},476528,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.KoaLayerType=void 0,(r=n.KoaLayerType||(n.KoaLayerType={})).ROUTER="router",r.MIDDLEWARE="middleware"},61353,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},259134,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).KOA_TYPE="koa.type",r.KOA_NAME="koa.name"},327028,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isLayerIgnored=n.getMiddlewareMetadata=void 0;let r=e.r(476528),o=e.r(259134),i=e.r(808119);n.getMiddlewareMetadata=(e,t,n,a)=>n?{attributes:{[o.AttributeNames.KOA_NAME]:a?.toString(),[o.AttributeNames.KOA_TYPE]:r.KoaLayerType.ROUTER,[i.ATTR_HTTP_ROUTE]:a?.toString()},name:e._matchedRouteName||`router - ${a}`}:{attributes:{[o.AttributeNames.KOA_NAME]:t.name??"middleware",[o.AttributeNames.KOA_TYPE]:r.KoaLayerType.MIDDLEWARE},name:`middleware - ${t.name}`},n.isLayerIgnored=(e,t)=>!!(Array.isArray(t?.ignoreLayersType)&&t?.ignoreLayersType?.includes(e))},780039,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.kLayerPatched=void 0,n.kLayerPatched=Symbol("koa-layer-patched")},166165,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KoaInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(476528),a=e.r(61353),s=e.r(327028),l=e.r(385692),u=e.r(780039);class c extends o.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return new o.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;return null==t?t:((0,o.isWrapped)(t.prototype.use)&&this._unwrap(t.prototype,"use"),this._wrap(t.prototype,"use",this._getKoaUsePatch.bind(this)),e)},e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;(0,o.isWrapped)(t.prototype.use)&&this._unwrap(t.prototype,"use")})}_getKoaUsePatch(e){let t=this;return function(n){let r;return r=n.router?t._patchRouterDispatch(n):t._patchLayer(n,!1),e.apply(this,[r])}}_patchRouterDispatch(e){r.diag.debug("Patching @koa/router dispatch");let t=e.router;for(let e of t?.stack??[]){let t=e.path,n=e.stack;for(let e=0;e{if(void 0===r.trace.getSpan(r.context.active()))return e(i,u);let c=(0,s.getMiddlewareMetadata)(i,e,t,n),p=this.tracer.startSpan(c.name,{attributes:c.attributes}),_=(0,l.getRPCMetadata)(r.context.active());_?.type===l.RPCType.HTTP&&i._matchedRoute&&(_.route=i._matchedRoute.toString());let{requestHook:T}=this.getConfig();T&&(0,o.safeExecuteInTheMiddle)(()=>T(p,{context:i,middlewareLayer:e,layerType:a}),e=>{e&&r.diag.error("koa instrumentation: request hook failed",e)},!0);let d=r.trace.setSpan(r.context.active(),p);return r.context.with(d,async()=>{try{return await e(i,u)}catch(e){throw p.recordException(e),e}finally{p.end()}})})}}n.KoaInstrumentation=c},891732,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KoaLayerType=n.AttributeNames=n.KoaInstrumentation=void 0;var r=e.r(166165);Object.defineProperty(n,"KoaInstrumentation",{enumerable:!0,get:function(){return r.KoaInstrumentation}});var o=e.r(259134);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}});var i=e.r(476528);Object.defineProperty(n,"KoaLayerType",{enumerable:!0,get:function(){return i.KoaLayerType}})},86294,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(891732),o=e.r(808119),i=e.r(976285),a=e.r(625331),s=e.r(866779),l=a.generateInstrumentOnce("Koa",r.KoaInstrumentation,(e={})=>({ignoreLayersType:e.ignoreLayersType,requestHook(e,t){a.addOriginToSpan(e,"auto.http.otel.koa");let n=i.spanToJSON(e).data,r=n["koa.type"];r&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${r}.koa`);let l=n["koa.name"];if("string"==typeof l&&e.updateName(l||"< unknown >"),i.getIsolationScope()===i.getDefaultIsolationScope()){s.DEBUG_BUILD&&i.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let u=n[o.ATTR_HTTP_ROUTE],c=t.context?.request?.method?.toUpperCase()||"GET";u&&i.getIsolationScope().setTransactionName(`${c} ${u}`)}})),u=i.defineIntegration((e={})=>({name:"Koa",setupOnce(){l(e)}}));n.instrumentKoa=l,n.koaIntegration=u,n.setupKoaErrorHandler=e=>{e.use(async(e,t)=>{try{await t()}catch(e){throw i.captureException(e,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),e}}),a.ensureIsWrapped(e.use,"koa")}},737439,(e,t,n)=>{"use strict";var r,o,i;Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectNames=n.ConnectTypes=n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).CONNECT_TYPE="connect.type",r.CONNECT_NAME="connect.name",(o=n.ConnectTypes||(n.ConnectTypes={})).MIDDLEWARE="middleware",o.REQUEST_HANDLER="request_handler",(i=n.ConnectNames||(n.ConnectNames={})).MIDDLEWARE="middleware",i.REQUEST_HANDLER="request handler"},927690,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.57.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},783486,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n._LAYERS_STORE_PROPERTY=void 0,n._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},674147,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.generateRoute=n.replaceCurrentStackRoute=n.addNewStackLayer=void 0;let r=e.r(357762),o=e.r(783486);n.addNewStackLayer=e=>{!1===Array.isArray(e[o._LAYERS_STORE_PROPERTY])&&Object.defineProperty(e,o._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),e[o._LAYERS_STORE_PROPERTY].push("/");let t=e[o._LAYERS_STORE_PROPERTY].length;return()=>{t===e[o._LAYERS_STORE_PROPERTY].length?e[o._LAYERS_STORE_PROPERTY].pop():r.diag.warn("Connect: Trying to pop the stack multiple time")}},n.replaceCurrentStackRoute=(e,t)=>{t&&e[o._LAYERS_STORE_PROPERTY].splice(-1,1,t)},n.generateRoute=e=>e[o._LAYERS_STORE_PROPERTY].reduce((e,t)=>e.replace(/\/+$/,"")+t)},683741,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectInstrumentation=n.ANONYMOUS_NAME=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(737439),a=e.r(927690),s=e.r(204780),l=e.r(808119),u=e.r(674147);n.ANONYMOUS_NAME="anonymous";class c extends s.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return[new s.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],e=>this._patchConstructor(e))]}_patchApp(e){(0,s.isWrapped)(e.use)||this._wrap(e,"use",this._patchUse.bind(this)),(0,s.isWrapped)(e.handle)||this._wrap(e,"handle",this._patchHandle.bind(this))}_patchConstructor(e){let t=this;return function(...n){let r=e.apply(this,n);return t._patchApp(r),r}}_patchNext(e,t){return function(n){let r=e.apply(this,[n]);return t(),r}}_startSpan(e,t){let r,o,a;e?(r=i.ConnectTypes.REQUEST_HANDLER,a=i.ConnectNames.REQUEST_HANDLER,o=e):(r=i.ConnectTypes.MIDDLEWARE,a=i.ConnectNames.MIDDLEWARE,o=t.name||n.ANONYMOUS_NAME);let s=`${a} - ${o}`,u={attributes:{[l.ATTR_HTTP_ROUTE]:e.length>0?e:"/",[i.AttributeNames.CONNECT_TYPE]:r,[i.AttributeNames.CONNECT_NAME]:o}};return this.tracer.startSpan(s,u)}_patchMiddleware(e,t){let i=this,a=4===t.length;function s(){if(!i.isEnabled())return t.apply(this,arguments);let[s,l,c]=a?[1,2,3]:[0,1,2],p=arguments[s],_=arguments[l],T=arguments[c];(0,u.replaceCurrentStackRoute)(p,e);let d=(0,o.getRPCMetadata)(r.context.active());e&&d?.type===o.RPCType.HTTP&&(d.route=(0,u.generateRoute)(p));let E="";E=e?`request handler - ${e}`:`middleware - ${t.name||n.ANONYMOUS_NAME}`;let S=i._startSpan(e,t);i._diag.debug("start span",E);let A=!1;function g(){A?i._diag.debug(`span ${S.name} - already finished`):(A=!0,i._diag.debug(`finishing span ${S.name}`),S.end()),_.removeListener("close",g)}return _.addListener("close",g),arguments[c]=i._patchNext(T,g),t.apply(this,arguments)}return Object.defineProperty(s,"length",{value:t.length,writable:!1,configurable:!0}),s}_patchUse(e){let t=this;return function(...n){let r=n[n.length-1],o=n[n.length-2]||"";return n[n.length-1]=t._patchMiddleware(o,r),e.apply(this,n)}}_patchHandle(e){let t=this;return function(){let[n,r]=[0,2],o=arguments[n],i=arguments[r],a=(0,u.addNewStackLayer)(o);return"function"==typeof i&&(arguments[r]=t._patchOut(i,a)),e.apply(this,arguments)}}_patchOut(e,t){return function(...n){return t(),Reflect.apply(e,this,n)}}}n.ConnectInstrumentation=c},13613,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectTypes=n.ConnectNames=n.AttributeNames=n.ANONYMOUS_NAME=n.ConnectInstrumentation=void 0;var r=e.r(683741);Object.defineProperty(n,"ConnectInstrumentation",{enumerable:!0,get:function(){return r.ConnectInstrumentation}}),Object.defineProperty(n,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return r.ANONYMOUS_NAME}});var o=e.r(737439);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}}),Object.defineProperty(n,"ConnectNames",{enumerable:!0,get:function(){return o.ConnectNames}}),Object.defineProperty(n,"ConnectTypes",{enumerable:!0,get:function(){return o.ConnectTypes}})},953027,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(13613),o=e.r(976285),i=e.r(625331),a="Connect",s=i.generateInstrumentOnce(a,()=>new r.ConnectInstrumentation);function l(e,t,n,r){o.captureException(e,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),r(e)}n.connectIntegration=o.defineIntegration(()=>({name:a,setupOnce(){s()}})),n.instrumentConnect=s,n.setupConnectErrorHandler=e=>{e.use(l);let t=o.getClient();t&&t.on("spanStart",e=>{!function(e){let t=o.spanToJSON(e).data,n=t["connect.type"];if(t[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.connect`});let r=t["connect.name"];"string"==typeof r&&e.updateName(r)}(e)}),i.ensureIsWrapped(e.use,"connect")}},210033,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.58.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},312058,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SUPPORTED_VERSIONS=n.MODULE_NAME=void 0,n.MODULE_NAME="knex",n.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},77979,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_NAME_VALUE_SQLITE=n.ATTR_NET_TRANSPORT=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_SQL_TABLE=n.ATTR_DB_OPERATION=n.ATTR_DB_NAME=void 0,n.ATTR_DB_NAME="db.name",n.ATTR_DB_OPERATION="db.operation",n.ATTR_DB_SQL_TABLE="db.sql.table",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.ATTR_NET_TRANSPORT="net.transport",n.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},113622,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.extractTableName=n.extractPortFromConnectionString=n.extractHostFromConnectionString=n.extractDatabaseFromConnectionString=n.limitLength=n.getName=n.mapSystem=n.otelExceptionFromKnexError=n.getFormatter=void 0;let r=e.r(808119),o=e.r(77979);n.getFormatter=e=>{if(e){if(e.client){if(e.client._formatQuery)return e.client._formatQuery.bind(e.client);else if(e.client.SqlString)return e.client.SqlString.format.bind(e.client.SqlString)}if(e.builder)return e.builder.toString.bind(e.builder)}return()=>""},n.otelExceptionFromKnexError=function(e,t){return e&&e instanceof Error?{message:t,code:e.code,stack:e.stack,name:e.name}:e};let i=new Map([["sqlite3",o.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",r.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);n.mapSystem=e=>i.get(e)||e,n.getName=(e,t,n)=>t?n?`${t} ${e}.${n}`:`${t} ${e}`:e,n.limitLength=(e,t)=>"string"==typeof e&&"number"==typeof t&&0{if(e)try{return new URL(e).pathname?.replace(/^\//,"")||void 0}catch{return}},n.extractHostFromConnectionString=e=>{if(e)try{return new URL(e).hostname||void 0}catch{return}},n.extractPortFromConnectionString=e=>{if(e)try{let t=new URL(e).port;return t?parseInt(t,10):void 0}catch{return}},n.extractTableName=e=>{let t=e?._single?.table;return"object"==typeof t?(0,n.extractTableName)(t):t}},730413,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KnexInstrumentation=void 0;let r=e.r(357762),o=e.r(210033),i=e.r(312058),a=e.r(204780),s=e.r(113622),l=e.r(808119),u=e.r(77979),c=Symbol("opentelemetry.instrumentation-knex.context"),p={maxQueryLength:1022,requireParentSpan:!1};class _ extends a.InstrumentationBase{_semconvStability;constructor(e={}){super(o.PACKAGE_NAME,o.PACKAGE_VERSION,{...p,...e}),this._semconvStability=(0,a.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...p,...e})}init(){let e=new a.InstrumentationNodeModuleDefinition(i.MODULE_NAME,i.SUPPORTED_VERSIONS);return e.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),e}getRunnerNodeModuleFileInstrumentation(e){return new a.InstrumentationNodeModuleFile(`knex/${e}/runner.js`,i.SUPPORTED_VERSIONS,(e,t)=>(this.ensureWrapped(e.prototype,"query",this.createQueryWrapper(t)),e),(e,t)=>(this._unwrap(e.prototype,"query"),e))}getClientNodeModuleFileInstrumentation(e){return new a.InstrumentationNodeModuleFile(`knex/${e}/client.js`,i.SUPPORTED_VERSIONS,e=>(this.ensureWrapped(e.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(e.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(e.prototype,"raw",this.storeContext.bind(this)),e),e=>(this._unwrap(e.prototype,"queryBuilder"),this._unwrap(e.prototype,"schemaBuilder"),this._unwrap(e.prototype,"raw"),e))}createQueryWrapper(e){let t=this;return function(n){return function(o){let i=this.client.config,p=s.extractTableName(this.builder),_=o?.method,T=i?.connection?.connectionString,d=i?.connection?.filename||i?.connection?.database||s.extractDatabaseFromConnectionString(T),{maxQueryLength:E}=t.getConfig(),S={"knex.version":e},A=i?.connection?.filename===":memory:"?"inproc":void 0;if(t._semconvStability&a.SemconvStability.OLD&&Object.assign(S,{[u.ATTR_DB_SYSTEM]:s.mapSystem(this.client.driverName),[u.ATTR_DB_SQL_TABLE]:p,[u.ATTR_DB_OPERATION]:_,[u.ATTR_DB_USER]:i?.connection?.user,[u.ATTR_DB_NAME]:d,[u.ATTR_NET_PEER_NAME]:i?.connection?.host??s.extractHostFromConnectionString(T),[u.ATTR_NET_PEER_PORT]:i?.connection?.port??s.extractPortFromConnectionString(T),[u.ATTR_NET_TRANSPORT]:A}),t._semconvStability&a.SemconvStability.STABLE&&Object.assign(S,{[l.ATTR_DB_SYSTEM_NAME]:s.mapSystem(this.client.driverName),[l.ATTR_DB_COLLECTION_NAME]:p,[l.ATTR_DB_OPERATION_NAME]:_,[l.ATTR_DB_NAMESPACE]:d,[l.ATTR_SERVER_ADDRESS]:i?.connection?.host??s.extractHostFromConnectionString(T),[l.ATTR_SERVER_PORT]:i?.connection?.port??s.extractPortFromConnectionString(T)}),E){let e=s.limitLength(o?.sql,E);t._semconvStability&a.SemconvStability.STABLE&&(S[l.ATTR_DB_QUERY_TEXT]=e),t._semconvStability&a.SemconvStability.OLD&&(S[u.ATTR_DB_STATEMENT]=e)}let g=this.builder[c]||r.context.active(),m=r.trace.getSpan(g),h=m&&r.trace.isSpanContextValid(m.spanContext());if(t._config.requireParentSpan&&!h)return n.bind(this)(...arguments);let R=t.tracer.startSpan(s.getName(d,_,p),{kind:r.SpanKind.CLIENT,attributes:S},g),f=r.trace.setSpan(r.context.active(),R);return r.context.with(f,n,this,...arguments).then(e=>(R.end(),e)).catch(e=>{let t=s.getFormatter(this)(o.sql,o.bindings||[]),n=e.message.replace(t+" - ",""),i=s.otelExceptionFromKnexError(e,n);throw R.recordException(i),R.setStatus({code:r.SpanStatusCode.ERROR,message:n}),R.end(),e})}}}storeContext(e){return function(){let t=e.apply(this,arguments);return Object.defineProperty(t,c,{value:r.context.active()}),t}}ensureWrapped(e,t,n){(0,a.isWrapped)(e[t])&&this._unwrap(e,t),this._wrap(e,t,n)}}n.KnexInstrumentation=_},618728,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KnexInstrumentation=void 0;var r=e.r(730413);Object.defineProperty(n,"KnexInstrumentation",{enumerable:!0,get:function(){return r.KnexInstrumentation}})},823099,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(618728),o=e.r(976285),i=e.r(625331),a="Knex",s=i.generateInstrumentOnce(a,()=>new r.KnexInstrumentation({requireParentSpan:!0})),l=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let{data:t}=o.spanToJSON(e);"knex.version"in t&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});n.instrumentKnex=s,n.knexIntegration=l},749620,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_MSSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_SQL_TABLE=n.ATTR_DB_NAME=void 0,n.ATTR_DB_NAME="db.name",n.ATTR_DB_SQL_TABLE="db.sql.table",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MSSQL="mssql"},224620,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.once=n.getSpanName=void 0,n.getSpanName=function(e,t,n,r){return"execBulkLoad"===e&&r&&t?`${e} ${r} ${t}`:"callProcedure"===e?t?`${e} ${n} ${t}`:`${e} ${n}`:t?`${e} ${t}`:`${e}`},n.once=e=>{let t=!1;return(...n)=>{if(!t)return t=!0,e(...n)}}},104038,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.33.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},189155,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TediousInstrumentation=n.INJECTED_CTX=void 0;let r=e.r(357762),o=e.r(427699),i=e.r(204780),a=e.r(808119),s=e.r(749620),l=e.r(224620),u=e.r(104038),c=Symbol("opentelemetry.instrumentation-tedious.current-database");n.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let p=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function _(e){Object.defineProperty(this,c,{value:e,writable:!0})}class T extends i.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,i.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new i.InstrumentationNodeModuleDefinition(T.COMPONENT,[">=1.11.0 <20"],e=>{let t=e.Connection.prototype;for(let n of p)(0,i.isWrapped)(t[n])&&this._unwrap(t,n),this._wrap(t,n,this._patchQuery(n,e));return(0,i.isWrapped)(t.connect)&&this._unwrap(t,"connect"),this._wrap(t,"connect",this._patchConnect),e},e=>{if(void 0===e)return;let t=e.Connection.prototype;for(let e of p)this._unwrap(t,e);this._unwrap(t,"connect")})]}_patchConnect(e){return function(){return _.call(this,this.config?.options?.database),this.removeListener("databaseChange",_),this.on("databaseChange",_),this.once("end",()=>{this.removeListener("databaseChange",_)}),e.apply(this,arguments)}}_buildTraceparent(e){let t=e.spanContext();return`00-${t.traceId}-${t.spanId}-0${Number(t.traceFlags||r.TraceFlags.NONE).toString(16)}`}_injectContextInfo(e,t,r){return new Promise(o=>{try{let i=new t.Request("set context_info @opentelemetry_traceparent",e=>{o()});Object.defineProperty(i,n.INJECTED_CTX,{value:!0});let a=Buffer.from(r,"utf8");i.addParameter("opentelemetry_traceparent",t.TYPES.VarBinary,a,{length:a.length}),e.execSql(i)}catch{o()}})}_shouldInjectFor(e){return"execSql"===e||"execSqlBatch"===e||"callProcedure"===e||"execute"===e}_patchQuery(e,t){return u=>{let p=this;function _(_){if(_?.[n.INJECTED_CTX])return u.apply(this,arguments);if(!(_ instanceof o.EventEmitter))return p._diag.warn(`Unexpected invocation of patched ${e} method. Span not recorded`),u.apply(this,arguments);let T=0,d=0,E=()=>d++,S=()=>T++,A=this[c],g="sp_prepare"===_.sqlTextOrProcedure&&_.parametersByName?.stmt?.value?_.parametersByName.stmt.value:_.sqlTextOrProcedure,m={};p._dbSemconvStability&i.SemconvStability.OLD&&(m[s.ATTR_DB_SYSTEM]=s.DB_SYSTEM_VALUE_MSSQL,m[s.ATTR_DB_NAME]=A,m[s.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,m[s.ATTR_DB_STATEMENT]=g,m[s.ATTR_DB_SQL_TABLE]=_.table),p._dbSemconvStability&i.SemconvStability.STABLE&&(m[a.ATTR_DB_NAMESPACE]=A,m[a.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,m[a.ATTR_DB_QUERY_TEXT]=g,m[a.ATTR_DB_COLLECTION_NAME]=_.table),p._netSemconvStability&i.SemconvStability.OLD&&(m[s.ATTR_NET_PEER_NAME]=this.config?.server,m[s.ATTR_NET_PEER_PORT]=this.config?.options?.port),p._netSemconvStability&i.SemconvStability.STABLE&&(m[a.ATTR_SERVER_ADDRESS]=this.config?.server,m[a.ATTR_SERVER_PORT]=this.config?.options?.port);let h=p.tracer.startSpan((0,l.getSpanName)(e,A,g,_.table),{kind:r.SpanKind.CLIENT,attributes:m}),R=(0,l.once)(e=>{_.removeListener("done",E),_.removeListener("doneInProc",E),_.removeListener("doneProc",S),_.removeListener("error",R),this.removeListener("end",R),h.setAttribute("tedious.procedure_count",T),h.setAttribute("tedious.statement_count",d),e&&h.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),h.end()});_.on("done",E),_.on("doneInProc",E),_.on("doneProc",S),_.once("error",R),this.on("end",R),"function"==typeof _.callback?p._wrap(_,"callback",p._patchCallbackQuery(R)):p._diag.error("Expected request.callback to be a function");let f=()=>r.context.with(r.trace.setSpan(r.context.active(),h),u,this,...arguments);if(!(p.getConfig().enableTraceContextPropagation&&p._shouldInjectFor(e)))return f();let N=p._buildTraceparent(h);p._injectContextInfo(this,t,N).finally(f)}return Object.defineProperty(_,"length",{value:u.length,writable:!1}),_}}_patchCallbackQuery(e){return t=>function(n,r,o){return e(n),t.apply(this,arguments)}}}n.TediousInstrumentation=T},537920,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TediousInstrumentation=void 0;var r=e.r(189155);Object.defineProperty(n,"TediousInstrumentation",{enumerable:!0,get:function(){return r.TediousInstrumentation}})},946603,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(537920),o=e.r(976285),i=e.r(625331),a=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),s="Tedious",l=i.generateInstrumentOnce(s,()=>new r.TediousInstrumentation({})),u=o.defineIntegration(()=>{let e;return{name:s,setupOnce(){let t=l();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let{description:t,data:n}=o.spanToJSON(e);if(!t||"mssql"!==n["db.system"])return;let r=t.split(" ")[0]||"";a.has(r)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});n.instrumentTedious=l,n.tediousIntegration=u},171476,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.57.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},936981,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GenericPoolInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(171476),a="generic-pool";class s extends o.InstrumentationBase{_isDisabled=!1;constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new o.InstrumentationNodeModuleDefinition(a,[">=3.0.0 <4"],e=>{let t=e.Pool;return(0,o.isWrapped)(t.prototype.acquire)&&this._unwrap(t.prototype,"acquire"),this._wrap(t.prototype,"acquire",this._acquirePatcher.bind(this)),e},e=>{let t=e.Pool;return this._unwrap(t.prototype,"acquire"),e}),new o.InstrumentationNodeModuleDefinition(a,[">=2.4.0 <3"],e=>{let t=e.Pool;return(0,o.isWrapped)(t.prototype.acquire)&&this._unwrap(t.prototype,"acquire"),this._wrap(t.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),e},e=>{let t=e.Pool;return this._unwrap(t.prototype,"acquire"),e}),new o.InstrumentationNodeModuleDefinition(a,[">=2.0.0 <2.4"],e=>(this._isDisabled=!1,(0,o.isWrapped)(e.Pool)&&this._unwrap(e,"Pool"),this._wrap(e,"Pool",this._poolWrapper.bind(this)),e),e=>(this._isDisabled=!0,e))]}_acquirePatcher(e){let t=this;return function(...n){let o=r.context.active(),i=t.tracer.startSpan("generic-pool.acquire",{},o);return r.context.with(r.trace.setSpan(o,i),()=>e.call(this,...n).then(e=>(i.end(),e),e=>{throw i.recordException(e),i.end(),e}))}}_poolWrapper(e){let t=this;return function(){let n=e.apply(this,arguments);return t._wrap(n,"acquire",t._acquireWithCallbacksPatcher.bind(t)),n}}_acquireWithCallbacksPatcher(e){let t=this;return function(n,o){if(t._isDisabled)return e.call(this,n,o);let i=r.context.active(),a=t.tracer.startSpan("generic-pool.acquire",{},i);return r.context.with(r.trace.setSpan(i,a),()=>{e.call(this,(e,t)=>{if(a.end(),n)return n(e,t)},o)})}}}n.GenericPoolInstrumentation=s},802638,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GenericPoolInstrumentation=void 0;var r=e.r(936981);Object.defineProperty(n,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return r.GenericPoolInstrumentation}})},979396,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(802638),o=e.r(976285),i=e.r(625331),a="GenericPool",s=i.generateInstrumentOnce(a,()=>new r.GenericPoolInstrumentation({}));n.genericPoolIntegration=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let t=o.spanToJSON(e).description;("generic-pool.aquire"===t||"generic-pool.acquire"===t)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),n.instrumentGenericPool=s},624905,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.31.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},56741,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataloaderInstrumentation=void 0;let r=e.r(204780),o=e.r(357762),i=e.r(624905),a="dataloader";function s(e){return"Module"===e[Symbol.toStringTag]?e.default:e}class l extends r.InstrumentationBase{constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new r.InstrumentationNodeModuleDefinition(a,[">=2.0.0 <3"],e=>{let t=s(e);return this._patchLoad(t.prototype),this._patchLoadMany(t.prototype),this._patchPrime(t.prototype),this._patchClear(t.prototype),this._patchClearAll(t.prototype),this._getPatchedConstructor(t)},e=>{let t=s(e);["load","loadMany","prime","clear","clearAll"].forEach(e=>{(0,r.isWrapped)(t.prototype[e])&&this._unwrap(t.prototype,e)})})]}shouldCreateSpans(){let e=this.getConfig();return void 0!==o.trace.getSpan(o.context.active())||!e.requireParentSpan}getSpanName(e,t){let n=e.name;return null==n?`${a}.${t}`:`${a}.${t} ${n}`}_wrapBatchLoadFn(e){let t=this;return function(...n){if(!t.isEnabled()||!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"batch"),{links:this._batch?.spanLinks},r);return o.context.with(o.trace.setSpan(r,i),()=>e.apply(this,n).then(e=>(i.end(),e)).catch(e=>{throw i.recordException(e),i.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),i.end(),e}))}}_getPatchedConstructor(e){let t=this,n=e.prototype;if(!t.isEnabled())return e;function o(...n){return"function"==typeof n[0]&&((0,r.isWrapped)(n[0])&&t._unwrap(n,0),n[0]=t._wrapBatchLoadFn(n[0])),e.apply(this,n)}return o.prototype=n,o}_patchLoad(e){(0,r.isWrapped)(e.load)&&this._unwrap(e,"load"),this._wrap(e,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"load"),{kind:o.SpanKind.CLIENT},r);return o.context.with(o.trace.setSpan(r,i),()=>{let t=e.call(this,...n).then(e=>(i.end(),e)).catch(e=>{throw i.recordException(e),i.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),i.end(),e});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:i.spanContext()})),t})}}_patchLoadMany(e){(0,r.isWrapped)(e.loadMany)&&this._unwrap(e,"loadMany"),this._wrap(e,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"loadMany"),{kind:o.SpanKind.CLIENT},r);return o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n).then(e=>(i.end(),e)))}}_patchPrime(e){(0,r.isWrapped)(e.prime)&&this._unwrap(e,"prime"),this._wrap(e,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"prime"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}_patchClear(e){(0,r.isWrapped)(e.clear)&&this._unwrap(e,"clear"),this._wrap(e,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"clear"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}_patchClearAll(e){(0,r.isWrapped)(e.clearAll)&&this._unwrap(e,"clearAll"),this._wrap(e,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"clearAll"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}}n.DataloaderInstrumentation=l},228251,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataloaderInstrumentation=void 0;var r=e.r(56741);Object.defineProperty(n,"DataloaderInstrumentation",{enumerable:!0,get:function(){return r.DataloaderInstrumentation}})},363082,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(228251),o=e.r(976285),i=e.r(625331),a="Dataloader",s=i.generateInstrumentOnce(a,()=>new r.DataloaderInstrumentation({requireParentSpan:!0}));n.dataloaderIntegration=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>{t.on("spanStart",e=>{let t=o.spanToJSON(e);t.description?.startsWith("dataloader")&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===t.description||"dataloader.loadMany"===t.description||"dataloader.batch"===t.description)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),n.instrumentDataloader=s},58684,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_MESSAGING_SYSTEM=n.ATTR_MESSAGING_OPERATION=void 0,n.ATTR_MESSAGING_OPERATION="messaging.operation",n.ATTR_MESSAGING_SYSTEM="messaging.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port"},980159,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_MESSAGING_CONVERSATION_ID=n.OLD_ATTR_MESSAGING_MESSAGE_ID=n.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=n.ATTR_MESSAGING_URL=n.ATTR_MESSAGING_PROTOCOL_VERSION=n.ATTR_MESSAGING_PROTOCOL=n.MESSAGING_OPERATION_VALUE_PROCESS=n.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=n.ATTR_MESSAGING_DESTINATION_KIND=n.ATTR_MESSAGING_DESTINATION=void 0,n.ATTR_MESSAGING_DESTINATION="messaging.destination",n.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",n.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",n.MESSAGING_OPERATION_VALUE_PROCESS="process",n.ATTR_MESSAGING_PROTOCOL="messaging.protocol",n.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",n.ATTR_MESSAGING_URL="messaging.url",n.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",n.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",n.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},650834,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CONFIG=n.EndOperation=void 0,(r=n.EndOperation||(n.EndOperation={})).AutoAck="auto ack",r.Ack="ack",r.AckAll="ackAll",r.Reject="reject",r.Nack="nack",r.NackAll="nackAll",r.ChannelClosed="channel closed",r.ChannelError="channel error",r.InstrumentationTimeout="instrumentation timeout",n.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},959801,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isConfirmChannelTracing=n.unmarkConfirmChannelTracing=n.markConfirmChannelTracing=n.getConnectionAttributesFromUrl=n.getConnectionAttributesFromServer=n.normalizeExchange=n.CONNECTION_ATTRIBUTES=n.CHANNEL_CONSUME_TIMEOUT_TIMER=n.CHANNEL_SPANS_NOT_ENDED=n.MESSAGE_STORED_SPAN=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(58684),s=e.r(980159);n.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),n.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),n.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),n.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let l=(0,r.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");n.normalizeExchange=e=>""!==e?e:"";let u=(e,t)=>e||("AMQP"===t?5672:5671),c=e=>{let t=e||"amqp";return(t.endsWith(":")?t.substring(0,t.length-1):t).toUpperCase()},p=(e,t,n,o)=>n?{[t]:n}:(r.diag.error(`amqplib instrumentation: could not extract connection attribute ${o} from user supplied url`,{url:e}),{});n.getConnectionAttributesFromServer=e=>{let t=e.serverProperties.product?.toLowerCase?.();return t?{[a.ATTR_MESSAGING_SYSTEM]:t}:{}},n.getConnectionAttributesFromUrl=(e,t)=>{let n={[s.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(e=e||"amqp://localhost")){let r=e,l=c(r?.protocol);Object.assign(n,{...p(e,s.ATTR_MESSAGING_PROTOCOL,l,"protocol")});let _=r?.hostname||"localhost";t&o.SemconvStability.OLD&&Object.assign(n,{...p(e,a.ATTR_NET_PEER_NAME,_,"hostname")}),t&o.SemconvStability.STABLE&&Object.assign(n,{...p(e,i.ATTR_SERVER_ADDRESS,_,"hostname")});let T=u(r.port,l);t&o.SemconvStability.OLD&&Object.assign(n,p(e,a.ATTR_NET_PEER_PORT,T,"port")),t&o.SemconvStability.STABLE&&Object.assign(n,p(e,i.ATTR_SERVER_PORT,T,"port"))}else{let l=e.replace(/:[^:@/]*@/,":***@");n[s.ATTR_MESSAGING_URL]=l;try{let e=new URL(l),r=c(e.protocol);Object.assign(n,{...p(l,s.ATTR_MESSAGING_PROTOCOL,r,"protocol")});let _=e.hostname||"localhost";t&o.SemconvStability.OLD&&Object.assign(n,{...p(l,a.ATTR_NET_PEER_NAME,_,"hostname")}),t&o.SemconvStability.STABLE&&Object.assign(n,{...p(l,i.ATTR_SERVER_ADDRESS,_,"hostname")});let T=u(e.port?parseInt(e.port):void 0,r);t&o.SemconvStability.OLD&&Object.assign(n,p(l,a.ATTR_NET_PEER_PORT,T,"port")),t&o.SemconvStability.STABLE&&Object.assign(n,p(l,i.ATTR_SERVER_PORT,T,"port"))}catch(e){r.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:l,err:e})}}return n},n.markConfirmChannelTracing=e=>e.setValue(l,!0),n.unmarkConfirmChannelTracing=e=>e.deleteValue(l),n.isConfirmChannelTracing=e=>!0===e.getValue(l)},36349,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.61.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},826845,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AmqplibInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(58684),s=e.r(980159),l=e.r(650834),u=e.r(959801),c=e.r(36349),p=[">=0.5.5 <1"];class _ extends i.InstrumentationBase{_netSemconvStability;constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...l.DEFAULT_CONFIG,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...l.DEFAULT_CONFIG,...e})}init(){let e=new i.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",p,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),t=new i.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",p,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),n=new i.InstrumentationNodeModuleFile("amqplib/lib/connect.js",p,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new i.InstrumentationNodeModuleDefinition("amqplib",p,void 0,void 0,[e,n,t])}patchConnect(e){return e=this.unpatchConnect(e),(0,i.isWrapped)(e.connect)||this._wrap(e,"connect",this.getConnectPatch.bind(this)),e}unpatchConnect(e){return(0,i.isWrapped)(e.connect)&&this._unwrap(e,"connect"),e}patchChannelModel(e,t){return(0,i.isWrapped)(e.Channel.prototype.publish)||this._wrap(e.Channel.prototype,"publish",this.getPublishPatch.bind(this,t)),(0,i.isWrapped)(e.Channel.prototype.consume)||this._wrap(e.Channel.prototype,"consume",this.getConsumePatch.bind(this,t)),(0,i.isWrapped)(e.Channel.prototype.ack)||this._wrap(e.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,l.EndOperation.Ack)),(0,i.isWrapped)(e.Channel.prototype.nack)||this._wrap(e.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,l.EndOperation.Nack)),(0,i.isWrapped)(e.Channel.prototype.reject)||this._wrap(e.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,l.EndOperation.Reject)),(0,i.isWrapped)(e.Channel.prototype.ackAll)||this._wrap(e.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,l.EndOperation.AckAll)),(0,i.isWrapped)(e.Channel.prototype.nackAll)||this._wrap(e.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,l.EndOperation.NackAll)),(0,i.isWrapped)(e.Channel.prototype.emit)||this._wrap(e.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,i.isWrapped)(e.ConfirmChannel.prototype.publish)||this._wrap(e.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,t)),e}unpatchChannelModel(e){return(0,i.isWrapped)(e.Channel.prototype.publish)&&this._unwrap(e.Channel.prototype,"publish"),(0,i.isWrapped)(e.Channel.prototype.consume)&&this._unwrap(e.Channel.prototype,"consume"),(0,i.isWrapped)(e.Channel.prototype.ack)&&this._unwrap(e.Channel.prototype,"ack"),(0,i.isWrapped)(e.Channel.prototype.nack)&&this._unwrap(e.Channel.prototype,"nack"),(0,i.isWrapped)(e.Channel.prototype.reject)&&this._unwrap(e.Channel.prototype,"reject"),(0,i.isWrapped)(e.Channel.prototype.ackAll)&&this._unwrap(e.Channel.prototype,"ackAll"),(0,i.isWrapped)(e.Channel.prototype.nackAll)&&this._unwrap(e.Channel.prototype,"nackAll"),(0,i.isWrapped)(e.Channel.prototype.emit)&&this._unwrap(e.Channel.prototype,"emit"),(0,i.isWrapped)(e.ConfirmChannel.prototype.publish)&&this._unwrap(e.ConfirmChannel.prototype,"publish"),e}getConnectPatch(e){let t=this;return function(n,r,o){return e.call(this,n,r,function(e,r){if(null==e){let e=(0,u.getConnectionAttributesFromUrl)(n,t._netSemconvStability),o=(0,u.getConnectionAttributesFromServer)(r);r[u.CONNECTION_ATTRIBUTES]={...e,...o}}o.apply(this,arguments)})}}getChannelEmitPatch(e){let t=this;return function(n){if("close"===n){t.endAllSpansOnChannel(this,!0,l.EndOperation.ChannelClosed,void 0);let e=this[u.CHANNEL_CONSUME_TIMEOUT_TIMER];e&&clearInterval(e),this[u.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===n&&t.endAllSpansOnChannel(this,!0,l.EndOperation.ChannelError,void 0);return e.apply(this,arguments)}}getAckAllPatch(e,t,n){let r=this;return function(o){return r.endAllSpansOnChannel(this,e,t,o),n.apply(this,arguments)}}getAckPatch(e,t,n){let r=this;return function(o,i,a){let s=t===l.EndOperation.Reject?i:a,c=this[u.CHANNEL_SPANS_NOT_ENDED]??[],p=c.findIndex(e=>e.msg===o);if(p<0)r.endConsumerSpan(o,e,t,s);else if(t!==l.EndOperation.Reject&&i){for(let n=0;n<=p;n++)r.endConsumerSpan(c[n].msg,e,t,s);c.splice(0,p+1)}else r.endConsumerSpan(o,e,t,s),c.splice(p,1);return n.apply(this,arguments)}}getConsumePatch(e,t){let n=this;return function(c,p,_){let T=this;if(!Object.prototype.hasOwnProperty.call(T,u.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:e}=n.getConfig();if(e){let t=setInterval(()=>{n.checkConsumeTimeoutOnChannel(T)},e);t.unref(),T[u.CHANNEL_CONSUME_TIMEOUT_TIMER]=t}T[u.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(t){let d;if(!t)return p.call(this,t);let E=t.properties.headers??{},S=r.propagation.extract(r.ROOT_CONTEXT,E),A=t.fields?.exchange;if(n._config.useLinksForConsume){let e=S?r.trace.getSpan(S)?.spanContext():void 0;S=void 0,e&&(d=[{context:e}])}let g=n.tracer.startSpan(`${c} process`,{kind:r.SpanKind.CONSUMER,attributes:{...T?.connection?.[u.CONNECTION_ATTRIBUTES],[s.ATTR_MESSAGING_DESTINATION]:A,[s.ATTR_MESSAGING_DESTINATION_KIND]:s.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[s.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:t.fields?.routingKey,[a.ATTR_MESSAGING_OPERATION]:s.MESSAGING_OPERATION_VALUE_PROCESS,[s.OLD_ATTR_MESSAGING_MESSAGE_ID]:t?.properties.messageId,[s.ATTR_MESSAGING_CONVERSATION_ID]:t?.properties.correlationId},links:d},S),{consumeHook:m}=n.getConfig();m&&(0,i.safeExecuteInTheMiddle)(()=>m(g,{moduleVersion:e,msg:t}),e=>{e&&r.diag.error("amqplib instrumentation: consumerHook error",e)},!0),_?.noAck||(T[u.CHANNEL_SPANS_NOT_ENDED].push({msg:t,timeOfConsume:(0,o.hrTime)()}),t[u.MESSAGE_STORED_SPAN]=g);let h=S||r.ROOT_CONTEXT;r.context.with(r.trace.setSpan(h,g),()=>{p.call(this,t)}),_?.noAck&&(n.callConsumeEndHook(g,t,!1,l.EndOperation.AutoAck),g.end())},t.apply(this,arguments)}}getConfirmedPublishPatch(e,t){let n=this;return function(o,a,s,l,c){let{span:p,modifiedOptions:_}=n.createPublishSpan(n,o,a,this,l),{publishHook:T}=n.getConfig();T&&(0,i.safeExecuteInTheMiddle)(()=>T(p,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:_,isConfirmChannel:!0}),e=>{e&&r.diag.error("amqplib instrumentation: publishHook error",e)},!0);let d=(0,u.markConfirmChannelTracing)(r.context.active()),E=[...arguments];return E[3]=_,E[4]=r.context.bind((0,u.unmarkConfirmChannelTracing)(r.trace.setSpan(d,p)),function(t,u){try{c?.call(this,t,u)}finally{let{publishConfirmHook:u}=n.getConfig();u&&(0,i.safeExecuteInTheMiddle)(()=>u(p,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:l,isConfirmChannel:!0,confirmError:t}),e=>{e&&r.diag.error("amqplib instrumentation: publishConfirmHook error",e)},!0),t&&p.setStatus({code:r.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),p.end()}}),r.context.with(d,t.bind(this,...E))}}getPublishPatch(e,t){let n=this;return function(o,a,s,l){if((0,u.isConfirmChannelTracing)(r.context.active()))return t.apply(this,arguments);{let{span:u,modifiedOptions:c}=n.createPublishSpan(n,o,a,this,l),{publishHook:p}=n.getConfig();p&&(0,i.safeExecuteInTheMiddle)(()=>p(u,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:c,isConfirmChannel:!1}),e=>{e&&r.diag.error("amqplib instrumentation: publishHook error",e)},!0);let _=[...arguments];_[3]=c;let T=t.apply(this,_);return u.end(),T}}}createPublishSpan(e,t,n,o,i){let a=(0,u.normalizeExchange)(t),l=e.tracer.startSpan(`publish ${a}`,{kind:r.SpanKind.PRODUCER,attributes:{...o.connection[u.CONNECTION_ATTRIBUTES],[s.ATTR_MESSAGING_DESTINATION]:t,[s.ATTR_MESSAGING_DESTINATION_KIND]:s.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[s.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:n,[s.OLD_ATTR_MESSAGING_MESSAGE_ID]:i?.messageId,[s.ATTR_MESSAGING_CONVERSATION_ID]:i?.correlationId}}),c=i??{};return c.headers=c.headers??{},r.propagation.inject(r.trace.setSpan(r.context.active(),l),c.headers),{span:l,modifiedOptions:c}}endConsumerSpan(e,t,n,o){let i=e[u.MESSAGE_STORED_SPAN];i&&(!1!==t&&i.setStatus({code:r.SpanStatusCode.ERROR,message:n!==l.EndOperation.ChannelClosed&&n!==l.EndOperation.ChannelError?`${n} called on message${!0===o?" with requeue":!1===o?" without requeue":""}`:n}),this.callConsumeEndHook(i,e,t,n),i.end(),e[u.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(e,t,n,r){(e[u.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(e=>{this.endConsumerSpan(e.msg,t,n,r)}),e[u.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(e,t,n,o){let{consumeEndHook:a}=this.getConfig();a&&(0,i.safeExecuteInTheMiddle)(()=>a(e,{msg:t,rejected:n,endOperation:o}),e=>{e&&r.diag.error("amqplib instrumentation: consumerEndHook error",e)},!0)}checkConsumeTimeoutOnChannel(e){let t,n=(0,o.hrTime)(),r=e[u.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:i}=this.getConfig();for(t=0;t{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EndOperation=n.DEFAULT_CONFIG=n.AmqplibInstrumentation=void 0;var r=e.r(826845);Object.defineProperty(n,"AmqplibInstrumentation",{enumerable:!0,get:function(){return r.AmqplibInstrumentation}});var o=e.r(650834);Object.defineProperty(n,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return o.DEFAULT_CONFIG}}),Object.defineProperty(n,"EndOperation",{enumerable:!0,get:function(){return o.EndOperation}})},855902,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(908157),o=e.r(976285),i=e.r(625331),a="Amqplib",s={consumeEndHook:e=>{i.addOriginToSpan(e,"auto.amqplib.otel.consumer")},publishHook:e=>{i.addOriginToSpan(e,"auto.amqplib.otel.publisher")}},l=i.generateInstrumentOnce(a,()=>new r.AmqplibInstrumentation(s));n.amqplibIntegration=o.defineIntegration(()=>({name:a,setupOnce(){l()}})),n.instrumentAmqplib=l},197696,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.INTEGRATION_NAME="VercelAI"},696887,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(197696),a=[">=3.0.0 <7"],s=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function l(e){"object"==typeof e&&null!==e&&"content"in e&&Array.isArray(e.content)&&(function(e){for(let t of e){if(!("object"==typeof t&&null!==t&&"type"in t&&"error"in t&&"toolName"in t&&"toolCallId"in t&&"tool-error"===t.type&&t.error instanceof Error))continue;let e=o._INTERNAL_getSpanContextForToolCallId(t.toolCallId);e?o.withScope(n=>{n.setContext("trace",{trace_id:e.traceId,span_id:e.spanId}),n.setTag("vercel.ai.tool.name",t.toolName),n.setTag("vercel.ai.tool.callId",t.toolCallId),n.setLevel("error"),o.captureException(t.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):o.withScope(e=>{e.setTag("vercel.ai.tool.name",t.toolName),e.setTag("vercel.ai.tool.callId",t.toolCallId),e.setLevel("error"),o.captureException(t.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(e.content),u(e.content))}function u(e){for(let t of e)"object"==typeof t&&null!==t&&"toolCallId"in t&&"string"==typeof t.toolCallId&&o._INTERNAL_cleanupToolCallSpanContext(t.toolCallId)}function c(e,t,n,r){return{recordInputs:e?.recordInputs!==void 0?e.recordInputs:void 0!==t.recordInputs?t.recordInputs:!0===n||r,recordOutputs:e?.recordOutputs!==void 0?e.recordOutputs:void 0!==t.recordOutputs?t.recordOutputs:!0===n||r}}class p extends r.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(e={}){super("@sentry/instrumentation-vercel-ai",o.SDK_VERSION,e),p.prototype.__init.call(this),p.prototype.__init2.call(this)}init(){return new r.InstrumentationNodeModuleDefinition("ai",a,this._patch.bind(this))}callWhenPatched(e){this._isPatched?e():this._callbacks.push(e)}_patch(e){this._isPatched=!0,this._callbacks.forEach(e=>e()),this._callbacks=[];let t=e=>new Proxy(e,{apply:(e,t,n)=>{let r=n[0].experimental_telemetry||{},a=r.isEnabled,s=o.getClient(),u=s?.getIntegrationByName(i.INTEGRATION_NAME),{recordInputs:p,recordOutputs:_}=c(u?.options,r,a,!!u&&!!s?.getOptions().sendDefaultPii);return n[0].experimental_telemetry={...r,isEnabled:void 0===a||a,recordInputs:p,recordOutputs:_},o.handleCallbackErrors(()=>Reflect.apply(e,t,n),e=>{e&&"object"==typeof e&&o.addNonEnumerableProperty(e,"_sentry_active_span",o.getActiveSpan())},()=>{},e=>{l(e)})}});if("[object Module]"===Object.prototype.toString.call(e)){for(let n of s)null!=e[n]&&(e[n]=t(e[n]));return e}{let n=s.reduce((n,r)=>(null!=e[r]&&(n[r]=t(e[r])),n),{});return{...e,...n}}}}n.SentryVercelAiInstrumentation=p,n.cleanupToolCallSpanContexts=u,n.determineRecordingSettings=c,n.processToolCallResults=l},834440,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(197696),a=e.r(696887),s=o.generateInstrumentOnce(i.INTEGRATION_NAME,()=>new a.SentryVercelAiInstrumentation({})),l=r.defineIntegration((e={})=>{let t;return{name:i.INTEGRATION_NAME,options:e,setupOnce(){t=s()},afterAllSetup(n){let o;e.force??(o=n.getIntegrationByName("Modules"),!!o?.getModules?.()?.ai)?r.addVercelAiProcessors(n):t?.callWhenPatched(()=>r.addVercelAiProcessors(n))}}});n.instrumentVercelAi=s,n.vercelAIIntegration=l},116769,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=4.0.0 <7"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-openai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("openai",i,this._patch.bind(this))}_patch(e){let t=e;return t=this._patchClient(t,"OpenAI"),t=this._patchClient(t,"AzureOpenAI")}_patchClient(e,t){let n=e[t];if(!n)return e;let r=this.getConfig(),i=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.OPENAI_INTEGRATION_NAME))return Reflect.construct(n,e);let t=Reflect.construct(n,e);return o.instrumentOpenAiClient(t,r)};for(let e of(Object.setPrototypeOf(i,n),Object.setPrototypeOf(i.prototype,n.prototype),Object.getOwnPropertyNames(n)))if(!["length","name","prototype"].includes(e)){let t=Object.getOwnPropertyDescriptor(n,e);t&&Object.defineProperty(i,e,t)}try{e[t]=i}catch{Object.defineProperty(e,t,{value:i,writable:!0,configurable:!0,enumerable:!0})}if(e.default===n)try{e.default=i}catch{Object.defineProperty(e,"default",{value:i,writable:!0,configurable:!0,enumerable:!0})}return e}}n.SentryOpenAiInstrumentation=a},758158,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(116769),a=o.generateInstrumentOnce(r.OPENAI_INTEGRATION_NAME,e=>new i.SentryOpenAiInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.OPENAI_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentOpenAi=a,n.openAIIntegration=s},654826,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.19.2 <1.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-anthropic-ai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",i,this._patch.bind(this))}_patch(e){let t=e.Anthropic,n=this.getConfig(),r=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(t,e);let r=Reflect.construct(t,e);return o.instrumentAnthropicAiClient(r,n)};for(let e of(Object.setPrototypeOf(r,t),Object.setPrototypeOf(r.prototype,t.prototype),Object.getOwnPropertyNames(t)))if(!["length","name","prototype"].includes(e)){let n=Object.getOwnPropertyDescriptor(t,e);n&&Object.defineProperty(r,e,n)}try{e.Anthropic=r}catch{Object.defineProperty(e,"Anthropic",{value:r,writable:!0,configurable:!0,enumerable:!0})}if(e.default===t)try{e.default=r}catch{Object.defineProperty(e,"default",{value:r,writable:!0,configurable:!0,enumerable:!0})}return e}}n.SentryAnthropicAiInstrumentation=a},718239,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(654826),a=o.generateInstrumentOnce(r.ANTHROPIC_AI_INTEGRATION_NAME,e=>new i.SentryAnthropicAiInstrumentation(e));n.anthropicAIIntegration=r.defineIntegration((e={})=>({name:r.ANTHROPIC_AI_INTEGRATION_NAME,options:e,setupOnce(){a(e)}})),n.instrumentAnthropicAi=a},116463,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.10.0 <2"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-google-genai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@google/genai",i,e=>this._patch(e),e=>e,[new r.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",i,e=>this._patch(e),e=>e)])}_patch(e){let t=e.GoogleGenAI,n=this.getConfig();if("function"!=typeof t)return e;let r=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(t,e);let r=Reflect.construct(t,e);return o.instrumentGoogleGenAIClient(r,n)};for(let e of(Object.setPrototypeOf(r,t),Object.setPrototypeOf(r.prototype,t.prototype),Object.getOwnPropertyNames(t)))if(!["length","name","prototype"].includes(e)){let n=Object.getOwnPropertyDescriptor(t,e);n&&Object.defineProperty(r,e,n)}return o.replaceExports(e,"GoogleGenAI",r),e}}n.SentryGoogleGenAiInstrumentation=a},880504,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(116463),a=o.generateInstrumentOnce(r.GOOGLE_GENAI_INTEGRATION_NAME,e=>new i.SentryGoogleGenAiInstrumentation(e));n.googleGenAIIntegration=r.defineIntegration((e={})=>({name:r.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){a(e)}})),n.instrumentGoogleGenAI=a},454883,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.1.0 <2.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-langchain",o.SDK_VERSION,e)}init(){let e=[];for(let t of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])e.push(new r.InstrumentationNodeModuleDefinition(t,i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile(`${t}/dist/index.cjs`,i,this._patch.bind(this),e=>e)]));return e.push(new r.InstrumentationNodeModuleDefinition("langchain",i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",i,this._patch.bind(this),e=>e)])),e}_patch(e){o._INTERNAL_skipAiProviderWrapping([o.OPENAI_INTEGRATION_NAME,o.ANTHROPIC_AI_INTEGRATION_NAME,o.GOOGLE_GENAI_INTEGRATION_NAME]);let t=o.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(e,t),e}_patchRunnableMethods(e,t){let n=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],r=Object.values(e.universal_exports??e).find(e=>"function"==typeof e&&n.includes(e.name));if(!r)return;let o=r.prototype;if(!o.__sentry_patched__)for(let e of(o.__sentry_patched__=!0,["invoke","stream","batch"])){let n=o[e];"function"==typeof n&&(o[e]=function(e,t,n){return new Proxy(e,{apply(e,n,r){var o,i;let a=r[1];(!a||"object"!=typeof a||Array.isArray(a))&&(a={},r[1]=a);let s=(o=a.callbacks,i=t,o?Array.isArray(o)?o.includes(i)?o:[...o,i]:"object"==typeof o?[o,i]:o:[i]);return a.callbacks=s,Reflect.apply(e,n,r)}})}(n,t))}}}n.SentryLangChainInstrumentation=a},62602,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(454883),a=o.generateInstrumentOnce(r.LANGCHAIN_INTEGRATION_NAME,e=>new i.SentryLangChainInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.LANGCHAIN_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentLangChain=a,n.langChainIntegration=s},955749,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.0.0 <2.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-langgraph",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@langchain/langgraph",i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",i,this._patch.bind(this),e=>e)])}_patch(e){return e.StateGraph&&"function"==typeof e.StateGraph&&o.instrumentLangGraph(e.StateGraph.prototype,this.getConfig()),e}}n.SentryLangGraphInstrumentation=a},521121,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(955749),a=o.generateInstrumentOnce(r.LANGGRAPH_INTEGRATION_NAME,e=>new i.SentryLangGraphInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.LANGGRAPH_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentLangGraph=a,n.langGraphIntegration=s},477801,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));n.buildLaunchDarklyFlagUsedHandlerShim=function(){return r.isBrowser()||r.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},n.launchDarklyIntegrationShim=o},222267,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));n.OpenFeatureIntegrationHookShim=class{constructor(){r.isBrowser()||r.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},n.openFeatureIntegrationShim=o},742355,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.statsigIntegrationShim=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},954005,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.unleashIntegrationShim=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},822525,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.growthbookIntegrationShim=e.r(976285).growthbookIntegration},395316,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(761095),o=e.r(357762),i=e.r(204780),a=e.r(808119);function s(e,t,n,r,o){var i,a,s,p,_,T,d,E;return l(e,n),t(e,"addDoc",(i=r,a=o,function(e){return function(t,n){let r=c(i,"addDoc",t);return a(r),u(r,()=>e(t,n))}})),t(e,"getDocs",(s=r,p=o,function(e){return function(t){let n=c(s,"getDocs",t);return p(n),u(n,()=>e(t))}})),t(e,"setDoc",(_=r,T=o,function(e){return function(t,n,r){let o=c(_,"setDoc",t.parent||t);return T(o),u(o,()=>void 0!==r?e(t,n,r):e(t,n))}})),t(e,"deleteDoc",(d=r,E=o,function(e){return function(t){let n=c(d,"deleteDoc",t.parent||t);return E(n),u(n,()=>e(t))}})),e}function l(e,t){for(let n of["addDoc","getDocs","setDoc","deleteDoc"])i.isWrapped(e[n])&&t(e,n);return e}function u(e,t){return o.context.with(o.trace.setSpan(o.context.active(),e),()=>i.safeExecuteInTheMiddle(()=>t(),t=>{t&&e.recordException(t),e.end()},!0))}function c(e,t,n){let r=e.startSpan(`${t} ${n.path}`,{kind:o.SpanKind.CLIENT});return function(e,t){let n=t.firestore.app,r=n.options,o=(t.firestore.toJSON()||{}).settings||{},i={[a.ATTR_DB_COLLECTION_NAME]:t.path,[a.ATTR_DB_NAMESPACE]:n.name,[a.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":t.type,"firebase.firestore.options.projectId":r.projectId,"firebase.firestore.options.appId":r.appId,"firebase.firestore.options.messagingSenderId":r.messagingSenderId,"firebase.firestore.options.storageBucket":r.storageBucket},{address:s,port:l}=p(o);s&&(i[a.ATTR_SERVER_ADDRESS]=s),l&&(i[a.ATTR_SERVER_PORT]=l),e.setAttributes(i)}(r,n),r.setAttribute(a.ATTR_DB_OPERATION_NAME,t),r}function p(e){let t,n;if("string"==typeof e.host)if(e.host.startsWith("[")){if(e.host.endsWith("]"))t=e.host.replace(/^\[|\]$/g,"");else if(e.host.includes("]:")){let r=e.host.lastIndexOf(":");-1!==r&&(t=e.host.slice(1,r).replace(/^\[|\]$/g,""),n=e.host.slice(r+1))}}else if(r.isIPv6(e.host))t=e.host;else{let r=e.host.lastIndexOf(":");-1!==r?(t=e.host.slice(0,r),n=e.host.slice(r+1)):t=e.host}return{address:t,port:n?parseInt(n,10):void 0}}n.getPortAndAddress=p,n.patchFirestore=function(e,t,n,r,a){let u=()=>{},c=a.firestoreSpanCreationHook;"function"==typeof c&&(u=e=>{i.safeExecuteInTheMiddle(()=>c(e),e=>{e&&o.diag.error(e?.message)},!0)});let p=new i.InstrumentationNodeModuleDefinition("@firebase/firestore",t,t=>s(t,n,r,e,u));for(let o of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])p.files.push(new i.InstrumentationNodeModuleFile(o,t,t=>s(t,n,r,e,u),e=>l(e,r)));return p}},248461,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780);function i(e,t,n){return function(o){return function(...i){let a="function"==typeof i[0]?i[0]:i[1],s="function"==typeof i[0]?void 0:i[0];if(!a)return o.call(this,...i);let l=async function(...o){let i=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",s=e.startSpan(`firebase.function.${n}`,{kind:r.SpanKind.SERVER}),l={"faas.name":i,"faas.trigger":n,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(l["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(l["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),s.setAttributes(l),t?.requestHook?.(s),r.context.with(r.trace.setSpan(r.context.active(),s),async()=>{let e,n;try{n=await a.apply(this,o)}catch(t){e=t}if(t?.responseHook?.(s,e),e&&s.recordException(e),s.end(),e)throw await t?.errorHook?.(s,e),e;return n})};return s?o.call(this,s,l):o.call(this,l)}}}function a(e,t){for(let n of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])o.isWrapped(e[n])&&t(e,n);return e}n.patchFunctions=function(e,t,n,s,l){let u=()=>{},c=()=>{},p=l.functions?.errorHook,_=l.functions?.requestHook,T=l.functions?.responseHook;"function"==typeof T&&(c=(e,t)=>{o.safeExecuteInTheMiddle(()=>T(e,t),e=>{e&&r.diag.error(e?.message)},!0)}),"function"==typeof _&&(u=e=>{o.safeExecuteInTheMiddle(()=>_(e),e=>{e&&r.diag.error(e?.message)},!0)});let d=new o.InstrumentationNodeModuleDefinition("firebase-functions",t);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:r,triggerType:l})=>{d.files.push(new o.InstrumentationNodeModuleFile(r,t,t=>(function(e,t,n,r,o,s){switch(a(e,n),s){case"function":t(e,"onRequest",i(r,o,"http.request")),t(e,"onCall",i(r,o,"http.call"));break;case"firestore":t(e,"onDocumentCreated",i(r,o,"firestore.document.created")),t(e,"onDocumentUpdated",i(r,o,"firestore.document.updated")),t(e,"onDocumentDeleted",i(r,o,"firestore.document.deleted")),t(e,"onDocumentWritten",i(r,o,"firestore.document.written")),t(e,"onDocumentCreatedWithAuthContext",i(r,o,"firestore.document.created")),t(e,"onDocumentUpdatedWithAuthContext",i(r,o,"firestore.document.updated")),t(e,"onDocumentDeletedWithAuthContext",i(r,o,"firestore.document.deleted")),t(e,"onDocumentWrittenWithAuthContext",i(r,o,"firestore.document.written"));break;case"scheduler":t(e,"onSchedule",i(r,o,"scheduler.scheduled"));break;case"storage":t(e,"onObjectFinalized",i(r,o,"storage.object.finalized")),t(e,"onObjectArchived",i(r,o,"storage.object.archived")),t(e,"onObjectDeleted",i(r,o,"storage.object.deleted")),t(e,"onObjectMetadataUpdated",i(r,o,"storage.object.metadataUpdated"))}return e})(t,n,s,e,{requestHook:u,responseHook:c,errorHook:p},l),e=>a(e,s)))}),d},n.patchV2Functions=i},516771,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(395316),a=e.r(248461),s={},l=[">=3.0.0 <5"],u=[">=6.0.0 <7"];class c extends r.InstrumentationBase{constructor(e=s){super("@sentry/instrumentation-firebase",o.SDK_VERSION,e)}setConfig(e={}){super.setConfig({...s,...e})}init(){let e=[];return e.push(i.patchFirestore(this.tracer,l,this._wrap,this._unwrap,this.getConfig())),e.push(a.patchFunctions(this.tracer,u,this._wrap,this._unwrap,this.getConfig())),e}}n.FirebaseInstrumentation=c},146523,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(516771),a="Firebase",s={firestoreSpanCreationHook:e=>{o.addOriginToSpan(e,"auto.firebase.otel.firestore"),e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:e=>{o.addOriginToSpan(e,"auto.firebase.otel.functions"),e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(e,t)=>{t&&(r.captureException(t,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await r.flush(2e3))}}},l=o.generateInstrumentOnce(a,()=>new i.FirebaseInstrumentation(s));n.firebaseIntegration=r.defineIntegration(()=>({name:a,setupOnce(){l()}})),n.instrumentFirebase=l},273273,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(738190),o=e.r(855902),i=e.r(718239),a=e.r(953027),s=e.r(429440),l=e.r(602878),u=e.r(146523),c=e.r(979396),p=e.r(880504),_=e.r(176571),T=e.r(376169),d=e.r(688750),E=e.r(934925),S=e.r(86294),A=e.r(62602),g=e.r(521121),m=e.r(888804),h=e.r(143655),R=e.r(780216),f=e.r(473485),N=e.r(625680),I=e.r(758158),O=e.r(832719),y=e.r(19194),b=e.r(547683),C=e.r(978486),M=e.r(946603),P=e.r(834440);n.getAutoPerformanceIntegrations=function(){return[s.expressIntegration(),l.fastifyIntegration(),_.graphqlIntegration(),d.honoIntegration(),h.mongoIntegration(),R.mongooseIntegration(),f.mysqlIntegration(),N.mysql2Integration(),C.redisIntegration(),O.postgresIntegration(),b.prismaIntegration(),T.hapiIntegration(),S.koaIntegration(),a.connectIntegration(),M.tediousIntegration(),c.genericPoolIntegration(),E.kafkaIntegration(),o.amqplibIntegration(),m.lruMemoizerIntegration(),A.langChainIntegration(),g.langGraphIntegration(),P.vercelAIIntegration(),I.openAIIntegration(),i.anthropicAIIntegration(),p.googleGenAIIntegration(),y.postgresJsIntegration(),u.firebaseIntegration()]},n.getOpenTelemetryInstrumentationToPreload=function(){return[r.instrumentSentryHttp,r.instrumentOtelHttp,s.instrumentExpress,a.instrumentConnect,l.instrumentFastify,l.instrumentFastifyV3,T.instrumentHapi,d.instrumentHono,E.instrumentKafka,S.instrumentKoa,m.instrumentLruMemoizer,h.instrumentMongo,R.instrumentMongoose,f.instrumentMysql,N.instrumentMysql2,O.instrumentPostgres,T.instrumentHapi,_.instrumentGraphql,C.instrumentRedis,M.instrumentTedious,c.instrumentGenericPool,o.instrumentAmqplib,A.instrumentLangChain,P.instrumentVercelAi,I.instrumentOpenAi,y.instrumentPostgresJs,u.instrumentFirebase,i.instrumentAnthropicAi,p.instrumentGoogleGenAI,g.instrumentLangGraph]}},1631,e=>{"use strict";let t;e.s([],827962),e.i(827962);var n=e.i(978116),r=e.i(670496),o=e.i(606733),i=e.i(775332);let a=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(e){let t={},r=(0,i.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),a=(0,i.getStringFromEnv)("OTEL_SERVICE_NAME");if(r)try{let e=this._parseResourceAttributes(r);Object.assign(t,e)}catch(e){n.diag.debug(`EnvDetector failed: ${e instanceof Error?e.message:e}`)}return a&&(t[o.ATTR_SERVICE_NAME]=a),{attributes:t}}_parseResourceAttributes(e){if(!e)return{};let t={};for(let n of e.split(this._COMMA_SEPARATOR)){let e,r,o=n.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==o.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${n}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[i,a]=o,s=i.trim(),l=a.trim();if(0===s.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${n}".`);try{e=decodeURIComponent(s),r=decodeURIComponent(l)}catch(e){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${n}": ${e instanceof Error?e.message:e}`)}if(e.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${e}".`);if(r.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${e}".`);t[e]=r}return t}};var s=e.i(446786),l=e.i(605365);async function u(){if(!t)switch(l.platform){case"darwin":t=(await e.A(57998)).getMachineId;break;case"linux":t=(await e.A(944291)).getMachineId;break;case"freebsd":t=(await e.A(822215)).getMachineId;break;case"win32":t=(await e.A(497519)).getMachineId;break;default:t=(await e.A(418670)).getMachineId}return t()}let c=new class{detect(e){return{attributes:{"host.name":(0,s.hostname)(),"host.arch":(e=>{switch(e){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return e}})((0,s.arch)()),"host.id":u()}}}},p=new class{detect(e){return{attributes:{"os.type":(e=>{switch(e){case"sunos":return"solaris";case"win32":return"windows";default:return e}})((0,s.platform)()),"os.version":(0,s.release)()}}}},_=new class{detect(e){let t={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(t["process.command"]=process.argv[1]);try{let e=s.userInfo();t["process.owner"]=e.username}catch(e){n.diag.debug(`error obtaining process owner: ${e}`)}return{attributes:t}}};var T=e.i(254799);let d=new class{detect(e){return{attributes:{"service.instance.id":(0,T.randomUUID)()}}}};var E=e.i(581453);e.s(["defaultResource",()=>r.defaultResource,"defaultServiceName",()=>E.defaultServiceName,"detectResources",0,(e={})=>(e.detectors||[]).map(t=>{try{let o=(0,r.resourceFromDetectedResource)(t.detect(e));return n.diag.debug(`${t.constructor.name} found resource.`,o),o}catch(e){return n.diag.debug(`${t.constructor.name} failed: ${e.message}`),(0,r.emptyResource)()}}).reduce((e,t)=>e.merge(t),(0,r.emptyResource)()),"emptyResource",()=>r.emptyResource,"envDetector",0,a,"hostDetector",0,c,"osDetector",0,p,"processDetector",0,_,"resourceFromAttributes",()=>r.resourceFromAttributes,"serviceInstanceIdDetector",0,d],1631)},815084,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(1631),i=e.r(148861),a=e.r(808119),s=e.r(976285),l=e.r(625331),u=e.r(779607),c=e.r(866779),p=e.r(273273);function _(e,t={}){let n=new i.BasicTracerProvider({sampler:new u.SentrySampler(e),resource:o.defaultResource().merge(o.resourceFromAttributes({[a.ATTR_SERVICE_NAME]:"node",[a.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[a.ATTR_SERVICE_VERSION]:s.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new u.SentrySpanProcessor({timeout:T(e.getOptions().maxSpanWaitDuration)}),...t.spanProcessors||[]]});r.trace.setGlobalTracerProvider(n),r.propagation.setGlobalPropagator(new u.SentryPropagator);let c=new l.SentryContextManager;return r.context.setGlobalContextManager(c),[n,c.getAsyncLocalStorageLookup()]}function T(e){if(null!=e){if(e>1e6)return c.DEBUG_BUILD&&s.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(e<=0||Number.isNaN(e)){c.DEBUG_BUILD&&s.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return e}}n._clampSpanProcessorTimeout=T,n.initOpenTelemetry=function(e,t={}){e.getOptions().debug&&l.setupOpenTelemetryLogger();let[n,r]=_(e,t);e.traceProvider=n,e.asyncLocalStorageLookup=r},n.preloadOpenTelemetry=function(e={}){var t;let n,{debug:r}=e;r&&s.debug.enable(),l.initializeEsmLoader(),(t=e.integrations,n=p.getOpenTelemetryInstrumentationToPreload(),t?n.filter(e=>{let n=e.id;return t.some(e=>n===e||n.startsWith(`${e}.`))}):n).forEach(e=>{e(),r&&s.debug.log(`[Sentry] Preloaded ${e.id} instrumentation`)})},n.setupOtel=_},645105,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(738190),a=e.r(354258),s=e.r(273273),l=e.r(815084);function u(){return o.getDefaultIntegrations().filter(e=>"Http"!==e.name&&"NodeFetch"!==e.name).concat(i.httpIntegration(),a.nativeNodeFetchIntegration())}function c(e){return[...u(),...r.hasSpansEnabled(e)?s.getAutoPerformanceIntegrations():[]]}function p(e={},t){r.applySdkMetadata(e,"node");let n=o.init({...e,defaultIntegrations:e.defaultIntegrations??t(e)});return n&&!e.skipOpenTelemetrySetup&&(l.initOpenTelemetry(n,{spanProcessors:e.openTelemetrySpanProcessors}),o.validateOpenTelemetrySetup()),n}n.getDefaultIntegrations=c,n.getDefaultIntegrationsWithoutPerformance=u,n.init=function(e={}){return p(e,c)},n.initWithoutDefaultIntegrations=function(e={}){return p(e,()=>[])}},96892,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(738190),o=e.r(354258),i=e.r(174710),a=e.r(429440),s=e.r(602878),l=e.r(176571),u=e.r(934925),c=e.r(888804),p=e.r(143655),_=e.r(780216),T=e.r(473485),d=e.r(625680),E=e.r(978486),S=e.r(832719),A=e.r(19194),g=e.r(547683),m=e.r(376169),h=e.r(688750),R=e.r(86294),f=e.r(953027),N=e.r(823099),I=e.r(946603),O=e.r(979396),y=e.r(363082),b=e.r(855902),C=e.r(834440),M=e.r(758158),P=e.r(718239),L=e.r(880504),v=e.r(62602),U=e.r(521121),D=e.r(477801),G=e.r(222267),B=e.r(742355),x=e.r(954005),V=e.r(822525),w=e.r(146523),H=e.r(645105),k=e.r(815084),Y=e.r(273273),j=e.r(779607),F=e.r(976285),W=e.r(625331);n.httpIntegration=r.httpIntegration,n.nativeNodeFetchIntegration=o.nativeNodeFetchIntegration,n.fsIntegration=i.fsIntegration,n.expressErrorHandler=a.expressErrorHandler,n.expressIntegration=a.expressIntegration,n.setupExpressErrorHandler=a.setupExpressErrorHandler,n.fastifyIntegration=s.fastifyIntegration,n.setupFastifyErrorHandler=s.setupFastifyErrorHandler,n.graphqlIntegration=l.graphqlIntegration,n.kafkaIntegration=u.kafkaIntegration,n.lruMemoizerIntegration=c.lruMemoizerIntegration,n.mongoIntegration=p.mongoIntegration,n.mongooseIntegration=_.mongooseIntegration,n.mysqlIntegration=T.mysqlIntegration,n.mysql2Integration=d.mysql2Integration,n.redisIntegration=E.redisIntegration,n.postgresIntegration=S.postgresIntegration,n.postgresJsIntegration=A.postgresJsIntegration,n.prismaIntegration=g.prismaIntegration,n.hapiIntegration=m.hapiIntegration,n.setupHapiErrorHandler=m.setupHapiErrorHandler,n.honoIntegration=h.honoIntegration,n.setupHonoErrorHandler=h.setupHonoErrorHandler,n.koaIntegration=R.koaIntegration,n.setupKoaErrorHandler=R.setupKoaErrorHandler,n.connectIntegration=f.connectIntegration,n.setupConnectErrorHandler=f.setupConnectErrorHandler,n.knexIntegration=N.knexIntegration,n.tediousIntegration=I.tediousIntegration,n.genericPoolIntegration=O.genericPoolIntegration,n.dataloaderIntegration=y.dataloaderIntegration,n.amqplibIntegration=b.amqplibIntegration,n.vercelAIIntegration=C.vercelAIIntegration,n.openAIIntegration=M.openAIIntegration,n.anthropicAIIntegration=P.anthropicAIIntegration,n.googleGenAIIntegration=L.googleGenAIIntegration,n.langChainIntegration=v.langChainIntegration,n.langGraphIntegration=U.langGraphIntegration,n.buildLaunchDarklyFlagUsedHandler=D.buildLaunchDarklyFlagUsedHandlerShim,n.launchDarklyIntegration=D.launchDarklyIntegrationShim,n.OpenFeatureIntegrationHook=G.OpenFeatureIntegrationHookShim,n.openFeatureIntegration=G.openFeatureIntegrationShim,n.statsigIntegration=B.statsigIntegrationShim,n.unleashIntegration=x.unleashIntegrationShim,n.growthbookIntegration=V.growthbookIntegrationShim,n.firebaseIntegration=w.firebaseIntegration,n.getDefaultIntegrations=H.getDefaultIntegrations,n.getDefaultIntegrationsWithoutPerformance=H.getDefaultIntegrationsWithoutPerformance,n.init=H.init,n.initWithoutDefaultIntegrations=H.initWithoutDefaultIntegrations,n.initOpenTelemetry=k.initOpenTelemetry,n.preloadOpenTelemetry=k.preloadOpenTelemetry,n.getAutoPerformanceIntegrations=Y.getAutoPerformanceIntegrations,n.setNodeAsyncContextStrategy=j.setOpenTelemetryContextAsyncContextStrategy,n.SDK_VERSION=F.SDK_VERSION,n.SEMANTIC_ATTRIBUTE_SENTRY_OP=F.SEMANTIC_ATTRIBUTE_SENTRY_OP,n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=F.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=F.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=F.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n.Scope=F.Scope,n.addBreadcrumb=F.addBreadcrumb,n.addEventProcessor=F.addEventProcessor,n.addIntegration=F.addIntegration,n.captureCheckIn=F.captureCheckIn,n.captureConsoleIntegration=F.captureConsoleIntegration,n.captureEvent=F.captureEvent,n.captureException=F.captureException,n.captureFeedback=F.captureFeedback,n.captureMessage=F.captureMessage,n.captureSession=F.captureSession,n.close=F.close,n.consoleIntegration=F.consoleIntegration,n.consoleLoggingIntegration=F.consoleLoggingIntegration,n.continueTrace=F.continueTrace,n.createConsolaReporter=F.createConsolaReporter,n.createLangChainCallbackHandler=F.createLangChainCallbackHandler,n.createTransport=F.createTransport,n.dedupeIntegration=F.dedupeIntegration,n.endSession=F.endSession,n.eventFiltersIntegration=F.eventFiltersIntegration,n.extraErrorDataIntegration=F.extraErrorDataIntegration,n.featureFlagsIntegration=F.featureFlagsIntegration,n.flush=F.flush,n.functionToStringIntegration=F.functionToStringIntegration,n.getActiveSpan=F.getActiveSpan,n.getClient=F.getClient,n.getCurrentScope=F.getCurrentScope,n.getGlobalScope=F.getGlobalScope,n.getIsolationScope=F.getIsolationScope,n.getRootSpan=F.getRootSpan,n.getSpanDescendants=F.getSpanDescendants,n.getSpanStatusFromHttpCode=F.getSpanStatusFromHttpCode,n.getTraceData=F.getTraceData,n.getTraceMetaTags=F.getTraceMetaTags,n.httpHeadersToSpanAttributes=F.httpHeadersToSpanAttributes,n.inboundFiltersIntegration=F.inboundFiltersIntegration,n.instrumentAnthropicAiClient=F.instrumentAnthropicAiClient,n.instrumentGoogleGenAIClient=F.instrumentGoogleGenAIClient,n.instrumentLangGraph=F.instrumentLangGraph,n.instrumentOpenAiClient=F.instrumentOpenAiClient,n.instrumentStateGraphCompile=F.instrumentStateGraphCompile,n.instrumentSupabaseClient=F.instrumentSupabaseClient,n.isEnabled=F.isEnabled,n.isInitialized=F.isInitialized,n.lastEventId=F.lastEventId,n.linkedErrorsIntegration=F.linkedErrorsIntegration,n.parameterize=F.parameterize,n.profiler=F.profiler,n.requestDataIntegration=F.requestDataIntegration,n.rewriteFramesIntegration=F.rewriteFramesIntegration,n.setContext=F.setContext,n.setConversationId=F.setConversationId,n.setCurrentClient=F.setCurrentClient,n.setExtra=F.setExtra,n.setExtras=F.setExtras,n.setHttpStatus=F.setHttpStatus,n.setMeasurement=F.setMeasurement,n.setTag=F.setTag,n.setTags=F.setTags,n.setUser=F.setUser,n.spanToBaggageHeader=F.spanToBaggageHeader,n.spanToJSON=F.spanToJSON,n.spanToTraceHeader=F.spanToTraceHeader,n.startInactiveSpan=F.startInactiveSpan,n.startNewTrace=F.startNewTrace,n.startSession=F.startSession,n.startSpan=F.startSpan,n.startSpanManual=F.startSpanManual,n.supabaseIntegration=F.supabaseIntegration,n.suppressTracing=F.suppressTracing,n.trpcMiddleware=F.trpcMiddleware,n.updateSpanName=F.updateSpanName,n.winterCGHeadersToDict=F.winterCGHeadersToDict,n.withActiveSpan=F.withActiveSpan,n.withIsolationScope=F.withIsolationScope,n.withMonitor=F.withMonitor,n.withScope=F.withScope,n.wrapMcpServerWithSentry=F.wrapMcpServerWithSentry,n.zodErrorsIntegration=F.zodErrorsIntegration,n.NODE_VERSION=W.NODE_VERSION,n.NodeClient=W.NodeClient,n.SentryContextManager=W.SentryContextManager,n.anrIntegration=W.anrIntegration,n.childProcessIntegration=W.childProcessIntegration,n.contextLinesIntegration=W.contextLinesIntegration,n.createGetModuleFromFilename=W.createGetModuleFromFilename,n.createSentryWinstonTransport=W.createSentryWinstonTransport,n.cron=W.cron,n.defaultStackParser=W.defaultStackParser,n.disableAnrDetectionForCallback=W.disableAnrDetectionForCallback,n.generateInstrumentOnce=W.generateInstrumentOnce,n.getSentryRelease=W.getSentryRelease,n.httpServerIntegration=W.httpServerIntegration,n.httpServerSpansIntegration=W.httpServerSpansIntegration,n.localVariablesIntegration=W.localVariablesIntegration,n.logger=W.logger,n.makeNodeTransport=W.makeNodeTransport,n.metrics=W.metrics,n.modulesIntegration=W.modulesIntegration,n.nodeContextIntegration=W.nodeContextIntegration,n.nodeRuntimeMetricsIntegration=W.nodeRuntimeMetricsIntegration,n.onUncaughtExceptionIntegration=W.onUncaughtExceptionIntegration,n.onUnhandledRejectionIntegration=W.onUnhandledRejectionIntegration,n.pinoIntegration=W.pinoIntegration,n.processSessionIntegration=W.processSessionIntegration,n.spotlightIntegration=W.spotlightIntegration,n.systemErrorIntegration=W.systemErrorIntegration,n.validateOpenTelemetrySetup=W.validateOpenTelemetrySetup},820456,(e,t,n)=>{let r;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let o=e.r(522734),i=e.r(814747),a=null,s=null;n.createRouteManifest=function(e){let t;if(e?.appDirPath)t=e.appDirPath;else{let e=process.cwd(),n=i.join(e,"app"),r=i.join(e,"src","app");o.existsSync(n)&&o.lstatSync(n).isDirectory()?t=n:o.existsSync(r)&&o.lstatSync(r).isDirectory()&&(t=r)}if(!t)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(a&&s===t&&r===e?.includeRouteGroups)return a;let{dynamicRoutes:n,staticRoutes:l,isrRoutes:u}=function e(t,n="",r=!1){let a=[],s=[],l=[];try{let c=o.readdirSync(t,{withFileTypes:!0}),p=c.find(e=>{var t;return t=e.name,"page.tsx"===t||"page.jsx"===t||"page.ts"===t||"page.js"===t});if(p){let e=r?n||"/":(n||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),u=e.includes(":"),c=i.join(t,p.name);if(function(e){try{let t=o.readFileSync(e,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(t)}catch{return!1}}(c)&&l.push(e),u){let{regex:t,paramNames:n,hasOptionalPrefix:r}=function(e){let t,n,r=e.split("/").filter(Boolean),o=[],i=[],a=!1;for(let e of r)if(e.startsWith(":")){let t=e.substring(1);if(t.endsWith("*?")){let e=t.slice(0,-2);i.push(e),a=!0}else if(t.endsWith("*")){let e=t.slice(0,-1);i.push(e),o.push("(.+)")}else i.push(t),o.push("([^/]+)")}else o.push(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(a)if(0===o.length)n="^/(.*)$";else{let e=o.join("/");n=`^/${e}(?:/(.*))?$`}else n=`^/${o.join("/")}$`;return{regex:n,paramNames:i,hasOptionalPrefix:(t=i[0],void 0!==t&&("locale"===t||"lang"===t||"language"===t))}}(e);a.push({path:e,regex:t,paramNames:n,hasOptionalPrefix:r})}else s.push({path:e})}for(let o of c)if(o.isDirectory()){var u;let c,p=i.join(t,o.name),_=o.name.startsWith("[")&&o.name.endsWith("]"),T=(c=(u=o.name).startsWith("(")&&u.endsWith(")")?r?o.name:"":_?function(e){if(e.startsWith("[[...")&&e.endsWith("]]")){let t=e.slice(5,-2);return`:${t}*?`}if(e.startsWith("[...")&&e.endsWith("]")){let t=e.slice(4,-1);return`:${t}*`}return`:${e.slice(1,-1)}`}(o.name):o.name)?`${n}/${c}`:n,d=e(p,T,r);a.push(...d.dynamicRoutes),s.push(...d.staticRoutes),l.push(...d.isrRoutes)}}catch(e){console.warn("Error building route manifest:",e)}return{dynamicRoutes:a,staticRoutes:s,isrRoutes:l}}(t,e?.basePath,e?.includeRouteGroups),c={dynamicRoutes:n,staticRoutes:l,isrRoutes:u};return a=c,s=t,r=e?.includeRouteGroups,c}},382226,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.resolveTunnelRoute=function(e){let t;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let n="string"==typeof e?e:(t=r._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${t}`);return n&&(process.env.__SENTRY_TUNNEL_ROUTE__=n),n},n.setUpTunnelRewriteRules=function(e,t){let n=e.rewrites,r=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,o=r||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",i=r||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";e.rewrites=async(...e)=>{let r={source:`${t}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:o},a=[{source:`${t}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:i},r];if("function"!=typeof n)return a;let s=await n(...e);return Array.isArray(s)?[...a,...s]:{...s,beforeFiles:[...a,...s.beforeFiles||[]]}}}},586605,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(96892),i=e.r(522734),a=e.r(814747),s=e.r(820456),l=e.r(690268),u=e.r(934474),c=e.r(382226),p=!1,_=!1;function T(e,t){if(!t)return e;let n=e=>"function"==typeof t?t(e):t.some(t=>r.isMatchingPattern(e,t));return{staticRoutes:e.staticRoutes.filter(e=>!n(e.path)),dynamicRoutes:e.dynamicRoutes.filter(e=>!n(e.path)),isrRoutes:e.isrRoutes.filter(e=>!n(e))}}n.filterRouteManifest=T,n.getNextMajor=function(e){if(!e)return;let{major:t}=r.parseSemver(e);return t},n.maybeCreateRouteManifest=function(e,t){if(t.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==t.routeManifestInjection&&(void 0!==t.routeManifestInjection||!t.disableManifestInjection))return T(s.createRouteManifest({basePath:e.basePath}),t.routeManifestInjection?.exclude)},n.maybeGetVercelCronsConfig=function(e){let t={config:void 0,strategy:void 0};if(!process.env.VERCEL)return t;let n=e._experimental?.vercelCronsMonitoring===!0,o=e.webpack?.automaticVercelMonitors===!0;if(!n&&!o)return t;let s=function(){try{let e=a.join(process.cwd(),"vercel.json"),t=i.readFileSync(e,"utf8"),n=JSON.parse(t).crons;if(n&&Array.isArray(n)&&n.length>0)return n;return}catch(e){if("ENOENT"===e.code)return;r.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",e);return}}();return s&&(t.config=s,n&&o?(r.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),t.strategy="spans"):n?(r.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),t.strategy="spans"):(r.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),t.strategy="wrapper")),t},n.maybeSetClientTraceMetadataOption=function(e,t){if(t){let{major:n,minor:o}=r.parseSemver(t);void 0!==n&&void 0!==o&&(n>=15||14===n&&o>=3)&&(e.experimental=e.experimental||{},e.experimental.clientTraceMetadata=["baggage","sentry-trace",...e.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},n.maybeSetInstrumentationHookOption=function(e,t){if(t&&l.requiresInstrumentationHook(t)){e.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),e.experimental={instrumentationHook:!0,...e.experimental};return}t||(e.experimental&&"instrumentationHook"in e.experimental?!1===e.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),e.experimental={instrumentationHook:!0,...e.experimental}))},n.maybeSetUpTunnelRouteRewriteRules=function(e,t){if(!t.tunnelRoute)return;if("export"===e.output){p||(p=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let n=c.resolveTunnelRoute(t.tunnelRoute);t.tunnelRoute=n||void 0,c.setUpTunnelRewriteRules(e,n)},n.resolveReleaseName=function(e){return e.release?.create!==!1?e.release?.name??o.getSentryRelease()??u.getGitRevision():e.release?.name},n.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(_||(_=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},n.warnIfMissingOnRouterTransitionStartHook=function(e){let t=u.getInstrumentationClientFileContents();void 0===t||t.includes("onRouterTransitionStart")||e.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},766776,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(690268),o=e.r(934474),i=e.r(279876),a=e.r(780663),s=e.r(586605);n.getFinalConfigObject=function(e,t){i.migrateDeprecatedWebpackOptions(t);let n=s.resolveReleaseName(t);if(s.maybeSetUpTunnelRouteRewriteRules(e,t),s.shouldReturnEarlyInExperimentalBuildMode())return e;let l=s.maybeCreateRouteManifest(e,t),u=s.maybeGetVercelCronsConfig(t);o.setUpBuildTimeVariables(e,t,n);let c=r.getNextjsVersion(),p=s.getNextMajor(c);s.maybeSetClientTraceMetadataOption(e,c),s.maybeSetInstrumentationHookOption(e,c),s.warnIfMissingOnRouterTransitionStartHook(t);let _=a.getBundlerInfo(c);a.maybeWarnAboutUnsupportedTurbopack(c,_),a.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(c,t,_);let T=a.maybeConstructTurbopackConfig(e,t,l,c,_,u),d=a.resolveUseRunAfterProductionCompileHookOption(t,_);return a.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:e,userSentryOptions:t,releaseName:n,nextJsVersion:c,bundlerInfo:_,turboPackConfig:T,shouldUseRunAfterProductionCompileHook:d}),a.maybeEnableTurbopackSourcemaps(e,t,_),{...e,...a.getServerExternalPackagesPatch(e,p),...a.getWebpackPatch({incomingUserNextConfigObject:e,userSentryOptions:t,releaseName:n,routeManifest:l,nextJsVersion:c,shouldUseRunAfterProductionCompileHook:d,bundlerInfo:_,vercelCronsConfigResult:u}),...a.getTurbopackPatch(_,T)}}},256782,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(766776);n.withSentryConfig=function(e,t={}){let n=e||{};return"function"==typeof n?function(...e){let i=n.apply(this,e);return r.isThenable(i)?i.then(e=>o.getFinalConfigObject(e,t)):o.getFinalConfigObject(i,t)}:o.getFinalConfigObject(n,t)}},644247,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.DEBUG_BUILD="u"{"use strict";var t="";function n(e){return e.split("\n").reduce(function(e,n){var c,p,_,T=function(e){var n=r.exec(e);if(!n)return null;var i=n[2]&&0===n[2].indexOf("native"),a=n[2]&&0===n[2].indexOf("eval"),s=o.exec(n[2]);return a&&null!=s&&(n[2]=s[1],n[3]=s[2],n[4]=s[3]),{file:i?null:n[2],methodName:n[1]||t,arguments:i?[n[2]]:[],lineNumber:n[3]?+n[3]:null,column:n[4]?+n[4]:null}}(n)||((c=i.exec(n))?{file:c[2],methodName:c[1]||t,arguments:[],lineNumber:+c[3],column:c[4]?+c[4]:null}:null)||function(e){var n=a.exec(e);if(!n)return null;var r=n[3]&&n[3].indexOf(" > eval")>-1,o=s.exec(n[3]);return r&&null!=o&&(n[3]=o[1],n[4]=o[2],n[5]=null),{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(","):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}(n)||((p=u.exec(n))?{file:p[2],methodName:p[1]||t,arguments:[],lineNumber:+p[3],column:p[4]?+p[4]:null}:null)||((_=l.exec(n))?{file:_[3],methodName:_[1]||t,arguments:[],lineNumber:+_[4],column:_[5]?+_[5]:null}:null);return T&&e.push(T),e},[])}var r=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,o=/\((\S*)(?::(\d+))(?::(\d+))\)/,i=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,a=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,s=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,u=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;e.s(["parse",()=>n])},313627,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(695005),i=e.r(644247),a=r.GLOBAL_OBJ;function s(){let e=process.env._sentryBasePath??a._sentryBasePath??"";""===e||e.match(/^\//)||(e=`/${e}`);let t=process.env.PORT||"3000";return`http://localhost:${t}${e}`}async function l(e,t={}){let n=new AbortController,o=setTimeout(()=>n.abort(),3e3);return r.suppressTracing(()=>fetch(e,{...t,signal:n.signal}).finally(()=>{clearTimeout(o)}))}async function u(e,t){try{if(!(e.file?.startsWith("webpack-internal:")||e.file?.startsWith("file:")))return null;let n=new URLSearchParams;n.append("isServer",String(!1)),n.append("isEdgeServer",String(!1)),n.append("isAppDirectory",String(!0)),n.append("errorMessage",t.toString()),Object.keys(e).forEach(t=>{n.append(t,(e[t]??"").toString())});let r=s(),o=await l(`${r}/__nextjs_original-stack-frame?${n.toString()}`);if(!o.ok||204===o.status)return null;let i=await o.json();return{originalCodeFrame:i.originalCodeFrame,originalStackFrame:i.originalStackFrame}}catch(e){return i.DEBUG_BUILD&&r.debug.error("Failed to symbolicate event with Next.js dev server",e),null}}async function c(e){try{let t={frames:e.filter(e=>!!e.file).map(e=>(e.file=e.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:e.file,methodName:e.methodName??"",arguments:[],lineNumber:e.lineNumber??0,column:e.column??0,line1:e.lineNumber??0,column1:e.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},n=s(),r=await l(`${n}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok||204===r.status)return null;return(await r.json()).map(e=>({originalCodeFrame:e.value.originalCodeFrame,originalStackFrame:e.value.originalStackFrame}))}catch(e){return i.DEBUG_BUILD&&r.debug.error("Failed to symbolicate event with Next.js dev server",e),null}}n.devErrorSymbolicationEventProcessor=async function e(e,t){"transaction"===e.type&&(e.spans=e.spans?.filter(e=>{let t=e.data?.["http.url"];return"string"!=typeof t||!t.includes("__nextjs_original-stack-frame")}));try{if(t.originalException&&t.originalException instanceof Error&&t.originalException.stack){let n,i=o.parse(t.originalException.stack),s=a._sentryNextJsVersion;if(!s)return e;let l=r.parseSemver(s);if(l.major>15||15===l.major&&l.minor>=2){let t=await c(i);if(null===t)return e;n=t}else n=await Promise.all(i.map(e=>u(e,t.originalException)));e.exception?.values?.[0]?.stacktrace?.frames&&(e.exception.values[0].stacktrace.frames=e.exception.values[0].stacktrace.frames.map((e,t,r)=>{let o=n[r.length-1-t];if(!o?.originalStackFrame||!o.originalCodeFrame)return{...e,platform:e.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:i,preContextLines:a,postContextLines:s}=function(e){let t,n=e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(e=>!e.match(/^\s*\|/)).map(e=>({line:e,isErrorLine:!!e.match(/^>/)})).map(e=>({...e,line:e.line.replace(/^.*\|/,"")})),r=[],o=[],i=!1;for(let e of n)e.isErrorLine?(t=e.line,i=!0):i?o.push(e.line):r.push(e.line);return{contextLine:t,preContextLines:r,postContextLines:o}}(o.originalCodeFrame);return{...e,pre_context:a,context_line:i,post_context:s,function:o.originalStackFrame.methodName,filename:o.originalStackFrame.file?function(e){if(!e)return e;let t=e.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return t?t[1]:e}(o.originalStackFrame.file):void 0,lineno:o.originalStackFrame.lineNumber||o.originalStackFrame.line1||void 0,colno:o.originalStackFrame.column||o.originalStackFrame.column1||void 0}}))}}catch{}return e}},102372,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.getVercelEnv=function(e){let t=e?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return t?`vercel-${t}`:void 0}},322192,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.ATTR_NEXT_ROUTE="next.route",n.ATTR_NEXT_SEGMENT="next.segment",n.ATTR_NEXT_SPAN_NAME="next.span_name",n.ATTR_NEXT_SPAN_TYPE="next.span_type"},753802,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",n.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",n.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},166740,(e,t,n)=>{"use strict";n._=function(e){return e&&e.__esModule?e:{default:e}}},404660,(e,t,n)=>{"use strict";t.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},473032,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return l},UNDERSCORE_NOT_FOUND_ROUTE:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return a}};for(var o in r)Object.defineProperty(n,o,{enumerable:!0,get:r[o]});let i="/_not-found",a=`${i}/page`,s="/_global-error",l=`${s}/page`},59653,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,o={APP_CLIENT_INTERNALS:function(){return et},APP_PATHS_MANIFEST:function(){return h},APP_PATH_ROUTES_MANIFEST:function(){return R},AdapterOutputType:function(){return c},BARREL_OPTIMIZATION_PREFIX:function(){return K},BLOCKED_PAGES:function(){return k},BUILD_ID_FILE:function(){return H},BUILD_MANIFEST:function(){return f},CLIENT_PUBLIC_FILES_PATH:function(){return Y},CLIENT_REFERENCE_MANIFEST:function(){return X},CLIENT_STATIC_FILES_PATH:function(){return j},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return q},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return ee},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return eo},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return ei},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return en},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return er},COMPILER_INDEXES:function(){return u},COMPILER_NAMES:function(){return l},CONFIG_FILES:function(){return w},DEFAULT_RUNTIME_WEBPACK:function(){return ea},DEFAULT_SANS_SERIF_FONT:function(){return ep},DEFAULT_SERIF_FONT:function(){return ec},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return B},DEV_CLIENT_PAGES_MANIFEST:function(){return v},DYNAMIC_CSS_MANIFEST:function(){return z},EDGE_RUNTIME_WEBPACK:function(){return es},EDGE_UNSUPPORTED_NODE_APIS:function(){return eS},EXPORT_DETAIL:function(){return b},EXPORT_MARKER:function(){return y},FUNCTIONS_CONFIG_MANIFEST:function(){return N},IMAGES_MANIFEST:function(){return P},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Q},MIDDLEWARE_BUILD_MANIFEST:function(){return J},MIDDLEWARE_MANIFEST:function(){return U},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return $},MODERN_BROWSERSLIST_TARGET:function(){return a.default},NEXT_BUILTIN_DOCUMENT:function(){return W},NEXT_FONT_MANIFEST:function(){return O},PAGES_MANIFEST:function(){return g},PHASE_ANALYZE:function(){return _},PHASE_DEVELOPMENT_SERVER:function(){return E},PHASE_EXPORT:function(){return p},PHASE_INFO:function(){return A},PHASE_PRODUCTION_BUILD:function(){return T},PHASE_PRODUCTION_SERVER:function(){return d},PHASE_TEST:function(){return S},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return x},ROUTES_MANIFEST:function(){return M},RSC_MODULE_TYPES:function(){return eE},SERVER_DIRECTORY:function(){return V},SERVER_FILES_MANIFEST:function(){return L},SERVER_PROPS_ID:function(){return eu},SERVER_REFERENCE_MANIFEST:function(){return Z},STATIC_PROPS_ID:function(){return el},STATIC_STATUS_PAGES:function(){return e_},STRING_LITERAL_DROP_BUNDLE:function(){return F},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return I},SYSTEM_ENTRYPOINTS:function(){return eA},TRACE_OUTPUT_VERSION:function(){return eT},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return G},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return D},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ed},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return m}};for(var i in o)Object.defineProperty(n,i,{enumerable:!0,get:o[i]});let a=e.r(166740)._(e.r(404660)),s=e.r(473032),l={client:"client",server:"server",edgeServer:"edge-server"},u={[l.client]:0,[l.server]:1,[l.edgeServer]:2};var c=((r={}).PAGES="PAGES",r.PAGES_API="PAGES_API",r.APP_PAGE="APP_PAGE",r.APP_ROUTE="APP_ROUTE",r.PRERENDER="PRERENDER",r.STATIC_FILE="STATIC_FILE",r.MIDDLEWARE="MIDDLEWARE",r);let p="phase-export",_="phase-analyze",T="phase-production-build",d="phase-production-server",E="phase-development-server",S="phase-test",A="phase-info",g="pages-manifest.json",m="webpack-stats.json",h="app-paths-manifest.json",R="app-path-routes-manifest.json",f="build-manifest.json",N="functions-config-manifest.json",I="subresource-integrity-manifest",O="next-font-manifest",y="export-marker.json",b="export-detail.json",C="prerender-manifest.json",M="routes-manifest.json",P="images-manifest.json",L="required-server-files",v="_devPagesManifest.json",U="middleware-manifest.json",D="_clientMiddlewareManifest.json",G="client-build-manifest.json",B="_devMiddlewareManifest.json",x="react-loadable-manifest.json",V="server",w=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],H="BUILD_ID",k=["/_document","/_app","/_error"],Y="public",j="static",F="__NEXT_DROP_CLIENT_FILE__",W="__NEXT_BUILTIN_DOCUMENT__",K="__barrel_optimize__",X="client-reference-manifest",Z="server-reference-manifest",J="middleware-build-manifest",$="middleware-react-loadable-manifest",Q="interception-route-rewrite-manifest",z="dynamic-css-manifest",q="main",ee=`${q}-app`,et="app-pages-internals",en="react-refresh",er="webpack",eo="polyfills",ei=Symbol(eo),ea="webpack-runtime",es="edge-runtime-webpack",el="__N_SSG",eu="__N_SSP",ec={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},ep={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},e_=["/500"],eT=1,ed=6e3,eE={client:"client",server:"server"},eS=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eA=new Set([q,en,ee]);("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},797121,(e,t,n)=>{t.exports=e.r(59653)},775563,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(797121);n.isBuild=function(){return process.env.NEXT_PHASE===r.PHASE_PRODUCTION_BUILD}},804822,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247);async function i(){try{o.DEBUG_BUILD&&r.debug.log("Flushing events..."),await r.flush(2e3),o.DEBUG_BUILD&&r.debug.log("Done flushing events")}catch(e){o.DEBUG_BUILD&&r.debug.log("Error while flushing events:\n",e)}}function a(){let e=Symbol.for("__cloudflare-context__");return r.GLOBAL_OBJ[e]?.ctx}function s(e){a()?.waitUntil(e)}function l(){return"function"==typeof a()?.waitUntil}n.cloudflareWaitUntil=s,n.flushSafelyWithTimeout=i,n.isCloudflareWaitUntilAvailable=l,n.waitUntil=function(e){l()?s(e):r.vercelWaitUntil(e)}},835229,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);function o(e){let t=e.split("/").filter(e=>e&&!(e.startsWith("(")&&e.endsWith(")")));return t.length>0?`/${t.join("/")}`:"/"}function i(e,t,n,i){let a=i??o(e),s=n?.["x-forwarded-proto"],l=n?.["x-forwarded-host"]||n?.host;if(!s||!l)return a;let u=`${s}://${l}${a}`,c=r.parseStringToURLObject(u);return c?r.getSanitizedUrlStringFromUrlObject(c):a}function a(e){let t=e?.referer;if(t)try{let e=new URL(t);return r.getSanitizedUrlStringFromUrlObject(e)}catch{return}}n.buildUrlFromComponentRoute=i,n.extractSanitizedUrlFromRefererHeader=a,n.getSanitizedRequestUrl=function(e,t,n,r){let o=a(n);return o||i(e,t,n,r)},n.sanitizeRoutePath=o,n.substituteRouteParams=function(e,t){return e}},638074,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(835229);n.setUrlProcessingMetadata=function(e){if("transaction"!==e.type||e.contexts?.trace?.op!=="http.server"||!e.contexts?.trace?.data)return;let t=r.getClient();if(!t?.getOptions().sendDefaultPii)return;let n=e.contexts.trace.data,i=n["next.route"]||n["http.route"],a=n["http.target"];if(!i)return;let s=e.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),l=s?.sdkProcessingMetadata?.normalizedRequest?.headers,u=o.getSanitizedRequestUrl(i,void 0,l,a?.toString());u&&s?.sdkProcessingMetadata&&(s.sdkProcessingMetadata.normalizedRequest=s.sdkProcessingMetadata.normalizedRequest||{},s.sdkProcessingMetadata.normalizedRequest.url=u)}},540886,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(814747);n.distDirRewriteFramesIntegration=r.defineIntegration(({distDirName:e})=>{let t=o.resolve(e).replace(/(\/|\\)$/,""),n=new RegExp(r.escapeStringForRegex(t));return{...r.rewriteFramesIntegration({iteratee:e=>(e.filename=e.filename?.replace(n,"app:///_next"),e)}),name:"DistDirRewriteFrames"}})},224915,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.addHeadersAsAttributes=function(e,t){if(!e)return{};let n=e instanceof Headers||"object"==typeof e&&"get"in e?r.winterCGHeadersToDict(e):e,o=r.httpHeadersToSpanAttributes(n,r.getClient()?.getOptions().sendDefaultPii??!1);return t&&t.setAttributes(o),o}},851224,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(779607),a=e.r(322192),s=e.r(753802),l=o.GLOBAL_OBJ;n.dropMiddlewareTunnelRequests=function(e,t){if(o.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let n=t?.[a.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",u=t?.[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",c=t?.[a.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!n&&!u&&!c)return;let p=function(e){let t=l._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!t)return!1;let n=e[r.SEMATTRS_HTTP_TARGET];if("string"==typeof n){let e=n.split("?")[0]||"";return e===t||e.startsWith(`${t}/`)}return!1}(t||{}),_=i.isSentryRequestSpan(e);(p||_)&&e.setAttribute(s.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},997574,(e,t,n)=>{let r;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let o=e.r(808119),i=e.r(976285),a=e.r(644247),s=e.r(322192),l=e.r(753802),u="__PAGE__",c=new WeakMap;function p(e){return"NextNodeServer.getLayoutOrPageModule"===e[s.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===e[s.ATTR_NEXT_SPAN_NAME]&&"string"==typeof e[s.ATTR_NEXT_SEGMENT]}function _({segment:e,route:t}){return e===u?`resolve page server component "${t}"`:""===e?"resolve root layout server component":`resolve layout server component "${e}"`}n.commonObjectToIsolationScope=function(e){if("object"!=typeof e||!e)return new i.Scope;{let t=c.get(e);if(t)return t;{let t=new i.Scope;return c.set(e,t),t}}},n.dropNextjsRootContext=function(){if(i.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let e=i.getActiveSpan();if(e){let t=i.getRootSpan(e),n=i.spanToJSON(t).data;n?.["next.span_type"]&&i.getRootSpan(e)?.setAttribute(l.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},n.escapeNextjsTracing=function(e){let t=i.GLOBAL_OBJ.AsyncLocalStorage;return t?(r||(r=new t),r.getStore())?e():i.startNewTrace(()=>r.run(!0,()=>e())):(a.DEBUG_BUILD&&i.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),e())},n.getEnhancedResolveSegmentSpanName=_,n.isResolveSegmentSpan=p,n.maybeEnhanceServerComponentSpanName=function(e,t,n){if(!p(t))return;let r=t[s.ATTR_NEXT_SEGMENT],a=n[o.ATTR_HTTP_ROUTE],l=_({segment:r,route:"string"==typeof a?a:""});e.updateName(l),e.setAttributes({"sentry.nextjs.ssr.function.type":r===u?"Page":"Layout","sentry.nextjs.ssr.function.route":a}),e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},800038,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247),i="sentry.cron.checkInId",a="sentry.cron.monitorSlug",s="sentry.cron.startTime",l="sentry.cron.schedule";n.maybeCompleteCronCheckIn=function(e){let t=r.spanToJSON(e).data,n=t?.[i],u=t?.[a],c=t?.[s],p=t?.[l];if(!n||!u||"number"!=typeof c)return;let _=r._INTERNAL_safeDateNow()/1e3-c,T=r.spanToJSON(e).status,d=T&&"ok"!==T?"error":"ok";r.captureCheckIn({checkInId:n,monitorSlug:u,status:d,duration:_},"string"==typeof p?{maxRuntime:720,schedule:{type:"crontab",value:p}}:void 0),e.setAttribute(i,void 0),e.setAttribute(a,void 0),e.setAttribute(s,void 0),e.setAttribute(l,void 0),o.DEBUG_BUILD&&r.debug.log(`[Cron] Completed check-in for "${u}" with status "${d}"`)},n.maybeStartCronCheckIn=function(e,t){let n=function(){let e=globalThis;if(e._sentryVercelCronsConfig)try{return JSON.parse(e._sentryVercelCronsConfig)}catch{o.DEBUG_BUILD&&r.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!n||!t)return;let u=r.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!u)return;let c=Array.isArray(u["user-agent"])?u["user-agent"][0]:u["user-agent"];if(!c?.includes("vercel-cron"))return;let p=n.find(e=>e.path===t);if(!p?.path||!p.schedule)return;let _=p.path,T=r._INTERNAL_safeDateNow()/1e3,d=r.captureCheckIn({monitorSlug:_,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:p.schedule}});o.DEBUG_BUILD&&r.debug.log(`[Cron] Started check-in for "${_}" with ID "${d}"`),e.setAttribute(i,d),e.setAttribute(a,_),e.setAttribute(s,T),e.setAttribute(l,p.schedule)}},383234,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o="messaging.system",i="messaging.destination.name",a="messaging.operation.name",s="sentry.queue.enriched";function l(e,t){let n=e[t];return Array.isArray(n)?n[0]:n}n.maybeCleanupQueueSpan=function(e){let t=r.spanToJSON(e).data;t?.[s]&&e.setAttribute(s,void 0)},n.maybeEnrichQueueConsumerSpan=function(e){let t=r.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!t||"com.vercel.queue.v2beta"!==(Array.isArray(t["ce-type"])?t["ce-type"][0]:t["ce-type"]))return;let n=l(t,"ce-vqsqueuename"),u=l(t,"ce-vqsmessageid"),c=l(t,"ce-vqsconsumergroup"),p=l(t,"ce-vqsdeliverycount");if(e.setAttribute(o,"vercel.queue"),e.setAttribute(a,"process"),n&&e.setAttribute(i,n),u&&e.setAttribute("messaging.message.id",u),c&&e.setAttribute("messaging.consumer.group.name",c),p){let t=parseInt(p,10);isNaN(t)||e.setAttribute("messaging.message.delivery_count",t)}e.setAttribute(s,!0)},n.maybeEnrichQueueProducerSpan=function(e){let t,n=r.spanToJSON(e).data,l=n?.["url.full"];if(!l)return;try{t=new URL(l)}catch{return}if("vercel-queue.com"!==t.hostname&&!t.hostname.endsWith(".vercel-queue.com"))return;let u=t.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!u)return;let c=decodeURIComponent(u[1]);e.setAttribute(o,"vercel.queue"),e.setAttribute(i,c),e.setAttribute(a,"send"),e.setAttribute(s,!0)}},541464,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(808119),i=e.r(976285),a=e.r(779607),s=e.r(322192),l=e.r(224915),u=e.r(851224),c=e.r(997574),p=e.r(800038),_=e.r(383234);n.handleOnSpanStart=function(e){let t=i.spanToJSON(e).data,n=i.getRootSpan(e),T=i.spanToJSON(n).data,d=e===n;if(u.dropMiddlewareTunnelRequests(e,t),"string"==typeof t?.[s.ATTR_NEXT_ROUTE]&&(T?.[o.ATTR_HTTP_REQUEST_METHOD]||T?.[o.SEMATTRS_HTTP_METHOD])&&!T?.[o.ATTR_HTTP_ROUTE]){let e=t[s.ATTR_NEXT_ROUTE].replace(/\/route$/,"");n.updateName(e),n.setAttribute(o.ATTR_HTTP_ROUTE,e),n.setAttribute(s.ATTR_NEXT_ROUTE,e);let r=T?.[o.ATTR_HTTP_REQUEST_METHOD]||T?.[o.SEMATTRS_HTTP_METHOD];"string"==typeof r&&i.getIsolationScope().setTransactionName(`${r} ${e}`),p.maybeStartCronCheckIn(n,e),_.maybeEnrichQueueConsumerSpan(n)}if(t?.[s.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let r=t[s.ATTR_NEXT_SPAN_NAME];"string"==typeof r&&(n.updateName(r),n.setAttribute(o.ATTR_HTTP_ROUTE,r),n.setAttribute(s.ATTR_NEXT_SPAN_NAME,r)),e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(t?.[s.ATTR_NEXT_SPAN_TYPE]!==void 0&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),d){let e=i.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;l.addHeadersAsAttributes(e,n)}if(t?.[s.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&d){let t=i.getCapturedScopesOnSpan(e),n=(t.isolationScope||i.getIsolationScope()).clone(),o=t.scope||i.getCurrentScope(),s=a.getScopesFromContext(r.context.active());s&&(s.isolationScope=n),i.setCapturedScopesOnSpan(e,o,n)}c.maybeEnhanceServerComponentSpanName(e,t,T),_.maybeEnrichQueueProducerSpan(e)}},280432,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247);function i(){let e=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:e}=process.getBuiltinModule("async_hooks")??{};return e}}();if(!e||"function"!=typeof e.snapshot){o.DEBUG_BUILD&&r.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return e.snapshot()}function a(e){return e instanceof Error&&e.message.includes("AsyncLocalStorage")}n.prepareSafeIdGeneratorContext=function(){let e=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),t=r.GLOBAL_OBJ,n=i();if(!n)return;let s=n;t[e]=e=>{try{return s(e)}catch(n){if(!a(n))throw n;let t=i();if(!t)return e();s=t;try{return s(e)}catch(t){if(!a(t))throw t;return e()}}},o.DEBUG_BUILD&&r.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},202446,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.captureUnderscoreErrorException=async function(e){let{req:t,res:n,err:i}=e,a=n?.statusCode||e.statusCode;if(a&&a<500||!e.pathname)return;if(i&&r.isAlreadyCaptured(i)){o.waitUntil(o.flushSafelyWithTimeout());let e="object"==typeof i?i.__sentry_event_id__:void 0;return"string"==typeof e?(r.getIsolationScope().setLastEventId(e),e):r.getIsolationScope().lastEventId()}let s=r.withScope(e=>{if(t){let n=r.httpRequestToRequestData(t);e.setSDKProcessingMetadata({normalizedRequest:n})}return r.captureException(i||`_error.js called with falsy error (${i})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return o.waitUntil(o.flushSafelyWithTimeout()),s}},144865,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.isUseCacheFunction=function(e){if(e.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:t}=function(e){let t=parseInt(e.slice(0,2),16),n=t>>1&63,r=Array(6);for(let e=0;e<6;e++){let t=n>>5-e&1;r[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:r,hasRestArgs:1==(1&t)}}(e.$$id);return"use-cache"===t}},584990,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247),i=e.r(775563),a=e.r(144865);function s(e){let t=i.isBuild(),n=!!e&&a.isUseCacheFunction(e);return n&&o.DEBUG_BUILD&&r.debug.log("Skipping span creation in Cache Components context"),t||n}function l(){return new r.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}n.startInactiveSpan=function(e){return s()?l():r.startInactiveSpan(e)},n.startSpan=function(e,t){return s(t)?t(l()):r.startSpan(e,t)},n.startSpanManual=function(e,t){if(s(t)){let e=l();return t(e,()=>e.end())}return r.startSpanManual(e,t)}},952597,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(753802);n.callDataFetcherTraced=async function(e,t){try{return await e(...t)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),e}},n.withErrorInstrumentation=function(e){return async function(...t){try{return await e.apply(this,t)}catch(t){throw r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:e.name}}}),t}}},n.withTracedServerSideDataFetcher=function(e,t,n,i){return async function(...n){let a=r.httpRequestToRequestData(t);r.getCurrentScope().setTransactionName(`${i.dataFetchingMethodName} (${i.dataFetcherRouteName})`),r.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:a});let s=r.getActiveSpan();s&&"/_error"!==i.requestedRouteName&&r.getRootSpan(s).setAttribute(o.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,i.requestedRouteName);let{"sentry-trace":l,baggage:u}=r.getTraceData();return{sentryTrace:l,baggage:u,data:await e.apply(this,n)}}}},263350,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetStaticPropsWithSentry=function(e,t){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let i=o.withErrorInstrumentation(e);return o.callDataFetcherTraced(i,n)}})}},804806,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:i.pathname,requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,baggage:u,sentryTrace:c}=await e.apply(t,n)??{};return"object"==typeof r&&null!==r&&(c&&(r._sentryTraceData=c),u&&(r._sentryBaggage=u)),r}}})}},233160,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapAppGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i.ctx,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_app",requestedRouteName:i.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,sentryTrace:u,baggage:c}=await e.apply(t,n);return"object"==typeof r&&null!==r&&(r.pageProps||(r.pageProps={}),u&&(r.pageProps._sentryTraceData=u),c&&(r.pageProps._sentryBaggage=c)),r}}})}},935404,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapDocumentGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_document",requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r}=await e.apply(t,n);return r}}})}},914109,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapErrorGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_error",requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,baggage:u,sentryTrace:c}=await e.apply(t,n);return"object"==typeof r&&null!==r&&(c&&(r._sentryTraceData=c),u&&(r._sentryBaggage=u)),r}}})}},315469,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetServerSidePropsWithSentry=function(e,t){return new Proxy(e,{apply:async(e,n,i)=>{if(r.isBuild())return e.apply(n,i);let[a]=i,{req:s,res:l}=a,u=o.withErrorInstrumentation(e),c=o.withTracedServerSideDataFetcher(u,s,l,{dataFetcherRouteName:t,requestedRouteName:t,dataFetchingMethodName:"getServerSideProps"}),{data:p,baggage:_,sentryTrace:T}=await c.apply(n,i);return"object"==typeof p&&null!==p&&"props"in p&&(T&&(p.props._sentryTraceData=T),_&&(p.props._sentryBaggage=_)),p}})}},44343,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.isNotFoundNavigationError=function(e){return r.isError(e)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(e.digest)},n.isRedirectNavigationError=function(e){return r.isError(e)&&"string"==typeof e.digest&&e.digest.startsWith("NEXT_REDIRECT;")}},461047,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);n.wrapServerComponentWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>{let s=r.getIsolationScope(),l=t.headers?r.winterCGHeadersToDict(t.headers):void 0;return s.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),r.handleCallbackErrors(()=>e.apply(n,a),e=>{let n=r.getActiveSpan(),{componentRoute:i,componentType:a}=t,l=!0;s.setTransactionName(`${a} Server Component (${i})`),n&&(o.isNotFoundNavigationError(e)?(l=!1,n.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"})):o.isRedirectNavigationError(e)?(l=!1,n.setStatus({code:r.SPAN_STATUS_OK})):n.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"})),l&&r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{i.waitUntil(i.flushSafelyWithTimeout())})}})}},839777,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);e.r(997574),n.wrapRouteHandlerWithSentry=function(e,t){let{method:n,parameterizedRoute:a,headers:s}=t;return new Proxy(e,{apply:async(e,t,s)=>{let l=r.getActiveSpan(),u=l?r.getRootSpan(l):void 0;return r.withIsolationScope(r.getIsolationScope(),()=>r.withScope(async c=>{c.setTransactionName(`${n} ${a}`);let p=await r.handleCallbackErrors(()=>e.apply(t,s),e=>{o.isRedirectNavigationError(e)||(o.isNotFoundNavigationError(e)?(l&&r.setHttpStatus(l,404),u&&r.setHttpStatus(u,404)):r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{i.waitUntil(i.flushSafelyWithTimeout())});try{p.status&&(l&&r.setHttpStatus(l,p.status),u&&r.setHttpStatus(u,p.status))}catch{}return p}))}})}},573937,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.wrapApiHandlerWithSentryVercelCrons=function(e,t){return new Proxy(e,{apply:(e,n,o)=>{let i;if(!o?.[0])return e.apply(n,o);let[a]=o,s="nextUrl"in a?a.nextUrl.pathname:a.url,l="nextUrl"in a?a.headers.get("user-agent"):a.headers["user-agent"];if(!t||!l?.includes("vercel-cron"))return e.apply(n,o);let u=t.find(e=>e.path===s);if(!u?.path||!u.schedule)return e.apply(n,o);let c=u.path,p=r.captureCheckIn({monitorSlug:c,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:u.schedule}}),_=r._INTERNAL_safeDateNow()/1e3,T=()=>{r.captureCheckIn({checkInId:p,monitorSlug:c,status:"error",duration:r._INTERNAL_safeDateNow()/1e3-_})};try{i=e.apply(n,o)}catch(e){throw T(),e}return"object"==typeof i&&null!==i&&"then"in i?Promise.resolve(i).then(()=>{r.captureCheckIn({checkInId:p,monitorSlug:c,status:"ok",duration:r._INTERNAL_safeDateNow()/1e3-_})},()=>{T()}):r.captureCheckIn({checkInId:p,monitorSlug:c,status:"ok",duration:r._INTERNAL_safeDateNow()/1e3-_}),i}})}},918606,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.wrapMiddlewareWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{let i="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(i&&"string"==typeof i){let e=n[0];if(e instanceof Request&&new URL(e.url).pathname.startsWith(i))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return r.withIsolationScope(i=>{let a,s,l=n[0],u=r.getCurrentScope();l instanceof Request?(i.setSDKProcessingMetadata({normalizedRequest:r.winterCGRequestToRequestData(l)}),a=`middleware ${l.method}`,s="url"):(a="middleware",s="component"),u.setTransactionName(a);let c=r.getActiveSpan();if(c){a="middleware",s="component";let e=r.getRootSpan(c);e&&r.setCapturedScopesOnSpan(e,u,i)}return r.startSpan({name:a,op:"http.server.middleware",attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:s,[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>r.handleCallbackErrors(()=>e.apply(t,n),e=>{r.captureException(e,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{o.waitUntil(o.flushSafelyWithTimeout())}))})}})}},91026,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);function o(e,t){e&&"object"==typeof e&&r.addNonEnumerableProperty(e,"__sentry_event_id__",t)}n.wrapPageComponentWithSentry=function(e){return"function"==typeof e&&e?.prototype?.isReactComponent?class extends e{render(...e){return r.withIsolationScope(()=>{let t=r.getCurrentScope(),n="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(n){let e=r.extractTraceparentData(n);t.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return super.render(...e)}catch(t){let e=r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw o(t,e),t}})}}:"function"==typeof e?new Proxy(e,{apply:(e,t,n)=>r.withIsolationScope(()=>{let i=r.getCurrentScope(),a=n?.[0]?._sentryTraceData;if(a){let e=r.extractTraceparentData(a);i.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return e.apply(t,n)}catch(t){let e=r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw o(t,e),t}})}):e}},332796,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);n.wrapGenerationFunctionWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>{let s,l=r.getIsolationScope();try{s=t.requestAsyncStorage?.getStore()?.headers}catch{}let u=s?r.winterCGHeadersToDict(s):void 0;return l.setSDKProcessingMetadata({normalizedRequest:{headers:u}}),r.handleCallbackErrors(()=>e.apply(n,a),e=>{let n=r.getActiveSpan(),{componentRoute:i,componentType:a,generationFunctionIdentifier:s}=t,u=!0;l.setTransactionName(`${a}.${s} (${i})`),n&&(o.isNotFoundNavigationError(e)?(u=!1,n.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"})):o.isRedirectNavigationError(e)?(u=!1,n.setStatus({code:r.SPAN_STATUS_OK})):n.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"})),u&&r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:s}}})},()=>{i.waitUntil(i.flushSafelyWithTimeout())})}})}},982907,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822),i=e.r(644247),a=e.r(44343);async function s(e,t,n){return r.withIsolationScope(async s=>{let l,u,c=r.getClient()?.getOptions().sendDefaultPii,p={};try{let e=await t.headers;l=e?.get("sentry-trace")??void 0,u=e?.get("baggage"),e?.forEach((e,t)=>{p[t]=e})}catch{i.DEBUG_BUILD&&r.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return s.setTransactionName(`serverAction/${e}`),s.setSDKProcessingMetadata({normalizedRequest:{headers:p}}),(r.getActiveSpan()?(e,t)=>t():r.continueTrace)({sentryTrace:l,baggage:u},async()=>{try{return await r.startSpan({op:"function.server_action",name:`serverAction/${e}`,forceTransaction:!0,attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async e=>{let o=await r.handleCallbackErrors(n,t=>{a.isNotFoundNavigationError(t)?e.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"}):a.isRedirectNavigationError(t)||(e.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"}),r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==t.recordResponse?t.recordResponse:c)&&r.getIsolationScope().setExtra("server_action_result",o),t.formData&&t.formData.forEach((e,t)=>{r.getIsolationScope().setExtra(`server_action_form_data.${t}`,"string"==typeof e?e:"[non-string value]")}),o})}finally{o.waitUntil(o.flushSafelyWithTimeout())}})})}n.withServerActionInstrumentation=function(...e){if("function"==typeof e[1]){let[t,n]=e;return s(t,{},n)}{let[t,n,r]=e;return s(t,n,r)}}},659534,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.captureRequestError=function(e,t,n){r.withScope(i=>{i.setSDKProcessingMetadata({normalizedRequest:{headers:r.headersToDict(t.headers),method:t.method}}),i.setContext("nextjs",{request_path:t.path,router_kind:n.routerKind,router_path:n.routePath,route_type:n.routeType}),i.setTransactionName(`${t.method} ${n.routePath}`),r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),o.waitUntil(o.flushSafelyWithTimeout())})}},13458,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822),i=e.r(997574);n.wrapApiHandlerWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>(i.dropNextjsRootContext(),i.escapeNextjsTracing(()=>{let[i,s]=a;return i?s?i.__withSentry_applied__?e.apply(n,a):(i.__withSentry_applied__=!0,r.withIsolationScope(l=>(r.getActiveSpan()?(e,t)=>t():r.continueTrace)({sentryTrace:i.headers&&r.isString(i.headers["sentry-trace"])?i.headers["sentry-trace"]:void 0,baggage:i.headers?.baggage},()=>{let u=`${(i.method||"GET").toUpperCase()} `,c=r.httpRequestToRequestData(i);return l.setSDKProcessingMetadata({normalizedRequest:c}),l.setTransactionName(`${u}${t}`),r.startSpanManual({name:`${u}${t}`,op:"http.server",forceTransaction:!0,attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async t=>{s.end=new Proxy(s.end,{apply:(e,n,i)=>(r.setHttpStatus(t,s.statusCode),t.end(),o.waitUntil(o.flushSafelyWithTimeout()),e.apply(n,i))});try{return await e.apply(n,a)}catch(i){let n=r.objectify(i);throw r.captureException(n,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:e.name,function:"withSentry"}}}),r.setHttpStatus(t,500),t.end(),await o.flushSafelyWithTimeout(),n}})}))):(r.debug.log(`Wrapped API handler on route "${t}" was not passed a response object. Will not instrument.`),e.apply(n,a)):(r.debug.log(`Wrapped API handler on route "${t}" was not passed a request object. Will not instrument.`),e.apply(n,a))}))})}},398609,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(96892),a=e.r(644247);e.r(313627);let s=e.r(102372),l=e.r(322192),u=e.r(753802),c=e.r(775563),p=e.r(804822),_=e.r(638074),T=e.r(540886),d=e.r(541464),E=e.r(280432),S=e.r(800038),A=e.r(383234),g=e.r(202446),m=e.r(584990),h=e.r(263350),R=e.r(804806),f=e.r(233160),N=e.r(935404),I=e.r(914109),O=e.r(315469),y=e.r(461047),b=e.r(839777),C=e.r(573937),M=e.r(918606),P=e.r(91026),L=e.r(332796),v=e.r(982907),U=e.r(659534),D=e.r(13458);o.GLOBAL_OBJ,n.captureUnderscoreErrorException=g.captureUnderscoreErrorException,n.startInactiveSpan=m.startInactiveSpan,n.startSpan=m.startSpan,n.startSpanManual=m.startSpanManual,n.wrapGetStaticPropsWithSentry=h.wrapGetStaticPropsWithSentry,n.wrapGetInitialPropsWithSentry=R.wrapGetInitialPropsWithSentry,n.wrapAppGetInitialPropsWithSentry=f.wrapAppGetInitialPropsWithSentry,n.wrapDocumentGetInitialPropsWithSentry=N.wrapDocumentGetInitialPropsWithSentry,n.wrapErrorGetInitialPropsWithSentry=I.wrapErrorGetInitialPropsWithSentry,n.wrapGetServerSidePropsWithSentry=O.wrapGetServerSidePropsWithSentry,n.wrapServerComponentWithSentry=y.wrapServerComponentWithSentry,n.wrapRouteHandlerWithSentry=b.wrapRouteHandlerWithSentry,n.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,n.wrapMiddlewareWithSentry=M.wrapMiddlewareWithSentry,n.wrapPageComponentWithSentry=P.wrapPageComponentWithSentry,n.wrapGenerationFunctionWithSentry=L.wrapGenerationFunctionWithSentry,n.withServerActionInstrumentation=v.withServerActionInstrumentation,n.captureRequestError=U.captureRequestError,n.wrapApiHandlerWithSentry=D.wrapApiHandlerWithSentry,n.ErrorBoundary=e=>e.children?"function"==typeof e.children?e.children():e.children:null,n.createReduxEnhancer=function(){return e=>e},n.init=function(e){if(E.prepareSafeIdGeneratorContext(),c.isBuild())return;!a.DEBUG_BUILD&&e.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let t=i.getDefaultIntegrations(e).filter(e=>"Http"!==e.name).concat(i.httpIntegration({disableIncomingRequestSpans:!0}));e.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),t.push(T.distDirRewriteFramesIntegration({distDirName:".next"}));let n=function(){if(p.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),g={environment:e.environment||process.env.SENTRY_ENVIRONMENT||s.getVercelEnv(!1)||"production",release:"9dad66acd3deb36c6e51fae1fdce6de96dd992c7",defaultIntegrations:t,...e,...n};if(a.DEBUG_BUILD&&g.debug&&o.debug.enable(),a.DEBUG_BUILD&&o.debug.log("Initializing SDK..."),o.getClient()){a.DEBUG_BUILD&&o.debug.log("SDK already initialized");return}o.applySdkMetadata(g,"nextjs",["nextjs",n?"cloudflare":"node"]);let m=i.init(g);m?.on("beforeSampling",({spanAttributes:e},t)=>{("string"==typeof e[r.SEMATTRS_HTTP_TARGET]&&e[r.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&e[r.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof e[r.ATTR_URL_QUERY]&&e[r.ATTR_URL_QUERY].includes("sentry_key")&&e[r.ATTR_URL_QUERY].includes("sentry_client"))&&(t.decision=!1)}),m?.on("spanStart",d.handleOnSpanStart),m?.on("spanEnd",S.maybeCompleteCronCheckIn),m?.on("spanEnd",A.maybeCleanupQueueSpan),o.getGlobalScope().addEventProcessor(Object.assign(e=>{if("transaction"!==e.type)return e;if(e.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||e.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===e.transaction||e.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===e.transaction)return null;if("string"==typeof e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let t=o.extractTraceparentData(e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(t?.parentSampled===!1)return null}return e},{id:"NextLowQualityTransactionsFilter"})),o.getGlobalScope().addEventProcessor(Object.assign((e,t)=>{if(void 0!==e.type)return e;let n=t.originalException;if("object"==typeof n&&null!==n&&"$$typeof"in n&&n.$$typeof===Symbol.for("react.postpone"))return null;let r=e.exception?.values?.[0]?.value;return r?.includes("Suspense Exception: This is not a real error!")||r?.includes("Suspense Exception: This is not a real error, and should not leak")?null:e},{id:"DropReactControlFlowErrors"})),m?.on("preprocessEvent",e=>{if("transaction"===e.type&&e.contexts?.trace?.data?.[l.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){e.contexts.trace.data[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",e.contexts.trace.op="http.server",e.transaction&&(e.transaction=o.stripUrlQueryAndFragment(e.transaction));let t=e.contexts.trace.data[r.SEMATTRS_HTTP_METHOD],n=e.contexts?.trace?.data?.[r.SEMATTRS_HTTP_TARGET],i=e.contexts.trace.data[r.ATTR_HTTP_ROUTE]||e.contexts.trace.data[l.ATTR_NEXT_ROUTE],a=e.contexts.trace.data[l.ATTR_NEXT_SPAN_NAME];if("string"==typeof t&&"string"==typeof i&&!i.startsWith("middleware")){let n=i.replace(/\/route$/,"");e.transaction=`${t} ${n}`,e.contexts.trace.data[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",e.contexts.trace.data[l.ATTR_NEXT_ROUTE]=n}e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==e.transaction&&(e.transaction=`${t} ${e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let s="string"==typeof a&&a.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);s&&(e.transaction=`middleware ${s[1]}`,e.contexts.trace.op="http.server.middleware"),"GET /_error"===e.transaction&&n&&(e.transaction=`${t?`${t} `:""}${n}`)}if("transaction"===e.type&&"string"==typeof e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let t=o.extractTraceparentData(e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);t?.traceId&&(e.contexts.trace.trace_id=t.traceId),t?.parentSpanId&&(e.contexts.trace.parent_span_id=t.parentSpanId)}_.setUrlProcessingMetadata(e)});try{o.getGlobalScope().setTag("turbopack",!0)}catch{}return a.DEBUG_BUILD&&o.debug.log("SDK successfully initialized"),m},n.showReportDialog=function(){},n.withErrorBoundary=function(e){return e},Object.prototype.hasOwnProperty.call(i,"__proto__")&&!Object.prototype.hasOwnProperty.call(n,"__proto__")&&Object.defineProperty(n,"__proto__",{enumerable:!0,value:i.__proto__}),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(n,e)||(n[e]=i[e])})},755538,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(256782),o=e.r(398609),i=e.r(96892),a=e.r(659534),s=e.r(202446),l=e.r(584990),u=e.r(982907),c=e.r(13458),p=e.r(573937),_=e.r(233160),T=e.r(935404),d=e.r(914109),E=e.r(332796),S=e.r(804806),A=e.r(315469),g=e.r(263350),m=e.r(918606),h=e.r(91026),R=e.r(839777),f=e.r(461047);n.withSentryConfig=r.withSentryConfig,n.ErrorBoundary=o.ErrorBoundary,n.createReduxEnhancer=o.createReduxEnhancer,n.init=o.init,n.showReportDialog=o.showReportDialog,n.withErrorBoundary=o.withErrorBoundary,n.captureRequestError=a.captureRequestError,n.captureUnderscoreErrorException=s.captureUnderscoreErrorException,n.startInactiveSpan=l.startInactiveSpan,n.startSpan=l.startSpan,n.startSpanManual=l.startSpanManual,n.withServerActionInstrumentation=u.withServerActionInstrumentation,n.wrapApiHandlerWithSentry=c.wrapApiHandlerWithSentry,n.wrapApiHandlerWithSentryVercelCrons=p.wrapApiHandlerWithSentryVercelCrons,n.wrapAppGetInitialPropsWithSentry=_.wrapAppGetInitialPropsWithSentry,n.wrapDocumentGetInitialPropsWithSentry=T.wrapDocumentGetInitialPropsWithSentry,n.wrapErrorGetInitialPropsWithSentry=d.wrapErrorGetInitialPropsWithSentry,n.wrapGenerationFunctionWithSentry=E.wrapGenerationFunctionWithSentry,n.wrapGetInitialPropsWithSentry=S.wrapGetInitialPropsWithSentry,n.wrapGetServerSidePropsWithSentry=A.wrapGetServerSidePropsWithSentry,n.wrapGetStaticPropsWithSentry=g.wrapGetStaticPropsWithSentry,n.wrapMiddlewareWithSentry=m.wrapMiddlewareWithSentry,n.wrapPageComponentWithSentry=h.wrapPageComponentWithSentry,n.wrapRouteHandlerWithSentry=R.wrapRouteHandlerWithSentry,n.wrapServerComponentWithSentry=f.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(i,"__proto__")&&!Object.prototype.hasOwnProperty.call(n,"__proto__")&&Object.defineProperty(n,"__proto__",{enumerable:!0,value:i.__proto__}),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(n,e)||(n[e]=i[e])})}]; +Mongoose Error Code: ${t.code}`:""}`})}function l(e,t,n,i){n&&(0,o.safeExecuteInTheMiddle)(()=>n(e,{moduleVersion:i,response:t}),e=>{e&&r.diag.error("mongoose instrumentation: responseHook error",e)},!0)}n.getAttributesFromCollection=function(e,t,n){let r={};return t&o.SemconvStability.OLD&&(r[i.ATTR_DB_MONGODB_COLLECTION]=e.name,r[i.ATTR_DB_NAME]=e.conn.name,r[i.ATTR_DB_USER]=e.conn.user),t&o.SemconvStability.STABLE&&(r[a.ATTR_DB_COLLECTION_NAME]=e.name,r[a.ATTR_DB_NAMESPACE]=e.conn.name),n&o.SemconvStability.OLD&&(r[i.ATTR_NET_PEER_NAME]=e.conn.host,r[i.ATTR_NET_PEER_PORT]=e.conn.port),n&o.SemconvStability.STABLE&&(r[a.ATTR_SERVER_ADDRESS]=e.conn.host,r[a.ATTR_SERVER_PORT]=e.conn.port),r},n.handlePromiseResponse=function(e,t,n,r){return e instanceof Promise?e.then(e=>(l(t,e,n,r),e)).catch(e=>{throw s(t,e),e}).finally(()=>t.end()):(l(t,e,n,r),t.end(),e)},n.handleCallbackResponse=function(e,t,n,r,o,i,a){let u=0;return 2===o.length?u=1:3===o.length&&(u=2),o[u]=(t,n)=>(t?s(r,t):l(r,n,i,a),r.end(),e(t,n)),t.apply(n,o)}},661395,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},152852,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongooseInstrumentation=n._ALREADY_INSTRUMENTED=n._STORED_PARENT_SPAN=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(388687),a=e.r(204780),s=e.r(661395),l=e.r(214787),u=e.r(808119),c=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],p=["remove","count","findOneAndRemove",...c],_=["count","findOneAndRemove",...c],T=[...c];function d(e){return e?e.startsWith("6.")||e.startsWith("5.")?p:e.startsWith("7.")?_:T:c}function E(e){return e&&(e.startsWith("5.")||e.startsWith("6."))||!1}function S(e){return!!e&&!!e.startsWith("8.")&&parseInt(e.split(".")[1],10)>=21}n._STORED_PARENT_SPAN=Symbol("stored-parent-span"),n._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class A extends a.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(s.PACKAGE_NAME,s.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,a.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,a.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new a.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(e,t){let n="Module"===e[Symbol.toStringTag]?e.default:e;return this._wrap(n.Model.prototype,"save",this.patchOnModelMethods("save",t)),n.Model.prototype.$save=n.Model.prototype.save,E(t)&&this._wrap(n.Model.prototype,"remove",this.patchOnModelMethods("remove",t)),S(t)&&(this._wrap(n.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",t)),this._wrap(n.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",t))),this._wrap(n.Query.prototype,"exec",this.patchQueryExec(t)),this._wrap(n.Aggregate.prototype,"exec",this.patchAggregateExec(t)),d(t).forEach(e=>{this._wrap(n.Query.prototype,e,this.patchAndCaptureSpanContext(e))}),this._wrap(n.Model,"aggregate",this.patchModelAggregate()),this._wrap(n.Model,"insertMany",this.patchModelStatic("insertMany",t)),this._wrap(n.Model,"bulkWrite",this.patchModelStatic("bulkWrite",t)),n}unpatch(e,t){let n="Module"===e[Symbol.toStringTag]?e.default:e,r=d(t);this._unwrap(n.Model.prototype,"save"),n.Model.prototype.$save=n.Model.prototype.save,E(t)&&this._unwrap(n.Model.prototype,"remove"),S(t)&&(this._unwrap(n.Model.prototype,"updateOne"),this._unwrap(n.Model.prototype,"deleteOne")),this._unwrap(n.Query.prototype,"exec"),this._unwrap(n.Aggregate.prototype,"exec"),r.forEach(e=>{this._unwrap(n.Query.prototype,e)}),this._unwrap(n.Model,"aggregate"),this._unwrap(n.Model,"insertMany"),this._unwrap(n.Model,"bulkWrite")}patchAggregateExec(e){let t=this;return o=>function(i){if(t.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let s=this[n._STORED_PARENT_SPAN],c={},{dbStatementSerializer:p}=t.getConfig();if(p){let e=p("aggregate",{options:this.options,aggregatePipeline:this._pipeline});t._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_STATEMENT]=e),t._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_QUERY_TEXT]=e)}let _=t._startSpan(this._model.collection,this._model?.modelName,"aggregate",c,s);return t._handleResponse(_,o,this,arguments,i,e)}}patchQueryExec(e){let t=this;return o=>function(i){if(this[n._ALREADY_INSTRUMENTED]||t.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let s=this[n._STORED_PARENT_SPAN],c={},{dbStatementSerializer:p}=t.getConfig();if(p){let e=p(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});t._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_STATEMENT]=e),t._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_QUERY_TEXT]=e)}let _=t._startSpan(this.mongooseCollection,this.model.modelName,this.op,c,s);return t._handleResponse(_,o,this,arguments,i,e)}}patchOnModelMethods(e,t){let n=this;return o=>function(i,s){if(n.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let c={document:this};!i||i instanceof Function||(c.options=i);let p={},{dbStatementSerializer:_}=n.getConfig();if(_){let t=_(e,c);n._dbSemconvStability&a.SemconvStability.OLD&&(p[l.ATTR_DB_STATEMENT]=t),n._dbSemconvStability&a.SemconvStability.STABLE&&(p[u.ATTR_DB_QUERY_TEXT]=t)}let T=n._startSpan(this.constructor.collection,this.constructor.modelName,e,p);return i instanceof Function&&(s=i,i=void 0),n._handleResponse(T,o,this,arguments,s,t)}}_patchDocumentUpdateMethods(e,t){let o=this;return i=>function(s,c,p){if(o.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return i.apply(this,arguments);let _=p,T=s,d=c;"function"==typeof s?(_=s,T=void 0,d=void 0):"function"==typeof c&&(_=c,d=void 0);let E={},S=o.getConfig().dbStatementSerializer;if(S){let t=S(e,{condition:{_id:this._id},updates:T,options:d});o._dbSemconvStability&a.SemconvStability.OLD&&(E[l.ATTR_DB_STATEMENT]=t),o._dbSemconvStability&a.SemconvStability.STABLE&&(E[u.ATTR_DB_QUERY_TEXT]=t)}let A=o._startSpan(this.constructor.collection,this.constructor.modelName,e,E),g=o._handleResponse(A,i,this,arguments,_,t);return g&&"object"==typeof g&&(g[n._ALREADY_INSTRUMENTED]=!0),g}}patchModelStatic(e,t){let n=this;return o=>function(i,s,c){if(n.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);"function"==typeof s&&(c=s,s=void 0);let p={};switch(e){case"insertMany":p.documents=i;break;case"bulkWrite":p.operations=i;break;default:p.document=i}void 0!==s&&(p.options=s);let _={},{dbStatementSerializer:T}=n.getConfig();if(T){let t=T(e,p);n._dbSemconvStability&a.SemconvStability.OLD&&(_[l.ATTR_DB_STATEMENT]=t),n._dbSemconvStability&a.SemconvStability.STABLE&&(_[u.ATTR_DB_QUERY_TEXT]=t)}let d=n._startSpan(this.collection,this.modelName,e,_);return n._handleResponse(d,o,this,arguments,c,t)}}patchModelAggregate(){let e=this;return t=>function(){let o=r.trace.getSpan(r.context.active()),i=e._callOriginalFunction(()=>t.apply(this,arguments));return i&&(i[n._STORED_PARENT_SPAN]=o),i}}patchAndCaptureSpanContext(e){let t=this;return e=>function(){return this[n._STORED_PARENT_SPAN]=r.trace.getSpan(r.context.active()),t._callOriginalFunction(()=>e.apply(this,arguments))}}_startSpan(e,t,n,o,s){let c={...o,...(0,i.getAttributesFromCollection)(e,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_OPERATION]=n,c[l.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_OPERATION_NAME]=n,c[u.ATTR_DB_SYSTEM_NAME]=l.DB_SYSTEM_NAME_VALUE_MONGODB);let p=this._dbSemconvStability&a.SemconvStability.STABLE?`${n} ${e.name}`:`mongoose.${t}.${n}`;return this.tracer.startSpan(p,{kind:r.SpanKind.CLIENT,attributes:c},s?r.trace.setSpan(r.context.active(),s):void 0)}_handleResponse(e,t,n,r,o,a){let s=this;if(o instanceof Function)return s._callOriginalFunction(()=>(0,i.handleCallbackResponse)(o,t,n,e,r,s.getConfig().responseHook,a));{let o=s._callOriginalFunction(()=>t.apply(n,r));return(0,i.handlePromiseResponse)(o,e,s.getConfig().responseHook,a)}}_callOriginalFunction(e){return this.getConfig().suppressInternalInstrumentation?r.context.with((0,o.suppressTracing)(r.context.active()),e):e()}}n.MongooseInstrumentation=A},583049,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongooseInstrumentation=void 0;var r=e.r(152852);Object.defineProperty(n,"MongooseInstrumentation",{enumerable:!0,get:function(){return r.MongooseInstrumentation}})},780216,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(583049),o=e.r(976285),i=e.r(625331),a="Mongoose",s=i.generateInstrumentOnce(a,()=>new r.MongooseInstrumentation({responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mongoose")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMongoose=s,n.mongooseIntegration=l},286950,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTIONS_USAGE=n.DB_SYSTEM_VALUE_MYSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MYSQL="mysql",n.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},424590,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(n.AttributeNames||(n.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},952519,(e,t,n)=>{"use strict";function r(e){return e?`[${e.toString()}]`:""}Object.defineProperty(n,"__esModule",{value:!0}),n.getPoolNameOld=n.arrayStringifyHelper=n.getSpanName=n.getDbValues=n.getDbQueryText=n.getJDBCString=n.getConfig=void 0,n.getConfig=function(e){let{host:t,port:n,database:r,user:o}=e&&e.connectionConfig||e||{};return{host:t,port:n,database:r,user:o}},n.getJDBCString=function(e,t,n){let r=`jdbc:mysql://${e||"localhost"}`;return"number"==typeof t&&(r+=`:${t}`),"string"==typeof n&&(r+=`/${n}`),r},n.getDbQueryText=function(e){return"string"==typeof e?e:e.sql},n.getDbValues=function(e,t){return"string"==typeof e?r(t):r(t||e.values)},n.getSpanName=function(e){let t="object"==typeof e?e.sql:e,n=t?.indexOf(" ");return"number"==typeof n&&-1!==n?t?.substring(0,n):t},n.arrayStringifyHelper=r,n.getPoolNameOld=function(e){let t=e.config.connectionConfig,n="";return n+=t.host?`host: '${t.host}', `:"",n+=t.port?`port: ${t.port}, `:"",n+=t.database?`database: '${t.database}', `:"",n+=t.user?`user: '${t.user}'`:"",t.user||(n=n.substring(0,n.length-2)),n.trim()}},819437,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},937494,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQLInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(286950),s=e.r(424590),l=e.r(952519),u=e.r(819437);class c extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(a.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(e,t,n){this._connectionsUsageOld?.add(e,{state:n,name:t})}init(){return[new o.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],e=>((0,o.isWrapped)(e.createConnection)&&this._unwrap(e,"createConnection"),this._wrap(e,"createConnection",this._patchCreateConnection()),(0,o.isWrapped)(e.createPool)&&this._unwrap(e,"createPool"),this._wrap(e,"createPool",this._patchCreatePool()),(0,o.isWrapped)(e.createPoolCluster)&&this._unwrap(e,"createPoolCluster"),this._wrap(e,"createPoolCluster",this._patchCreatePoolCluster()),e),e=>{void 0!==e&&(this._unwrap(e,"createConnection"),this._unwrap(e,"createPool"),this._unwrap(e,"createPoolCluster"))})]}_patchCreateConnection(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"query",t._patchQuery(r)),r}}}_patchCreatePool(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"query",t._patchQuery(r)),t._wrap(r,"getConnection",t._patchGetConnection(r)),t._wrap(r,"end",t._patchPoolEnd(r)),t._setPoolCallbacks(r,""),r}}}_patchPoolEnd(e){return t=>{let n=this;return function(r){let o=e._allConnections.length,i=e._freeConnections.length,a=(0,l.getPoolNameOld)(e);n._connCountAdd(-(o-i),a,"used"),n._connCountAdd(-i,a,"idle"),t.apply(e,arguments)}}}_patchCreatePoolCluster(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"getConnection",t._patchGetConnection(r)),t._wrap(r,"add",t._patchAdd(r)),r}}}_patchAdd(e){return t=>{let n=this;return function(r,o){if(!n._enabled)return n._unwrap(e,"add"),t.apply(e,arguments);t.apply(e,arguments);let i=e._nodes;if(i){let t=i["object"==typeof r?"CLUSTER::"+e._lastId:String(r)].pool;n._setPoolCallbacks(t,r)}}}}_patchGetConnection(e){return t=>{let n=this;return function(r,o,i){if(!n._enabled)return n._unwrap(e,"getConnection"),t.apply(e,arguments);if(1==arguments.length&&"function"==typeof r){let o=n._getConnectionCallbackPatchFn(r);return t.call(e,o)}if(2==arguments.length&&"function"==typeof o){let i=n._getConnectionCallbackPatchFn(o);return t.call(e,r,i)}if(3==arguments.length&&"function"==typeof i){let a=n._getConnectionCallbackPatchFn(i);return t.call(e,r,o,a)}return t.apply(e,arguments)}}}_getConnectionCallbackPatchFn(e){let t=this,n=r.context.active();return function(i,a){a&&!(0,o.isWrapped)(a.query)&&t._wrap(a,"query",t._patchQuery(a)),"function"==typeof e&&r.context.with(n,e,this,i,a)}}_patchQuery(e){return t=>{let n=this;return function(u,c,p){if(!n._enabled)return n._unwrap(e,"query"),t.apply(e,arguments);let _={},{host:T,port:d,database:E,user:S}=(0,l.getConfig)(e.config),A=parseInt(d,10),g=(0,l.getDbQueryText)(u);n._dbSemconvStability&o.SemconvStability.OLD&&(_[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_MYSQL,_[a.ATTR_DB_CONNECTION_STRING]=(0,l.getJDBCString)(T,d,E),_[a.ATTR_DB_NAME]=E,_[a.ATTR_DB_USER]=S,_[a.ATTR_DB_STATEMENT]=g),n._dbSemconvStability&o.SemconvStability.STABLE&&(_[i.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MYSQL,_[i.ATTR_DB_NAMESPACE]=E,_[i.ATTR_DB_QUERY_TEXT]=g),n._netSemconvStability&o.SemconvStability.OLD&&(_[a.ATTR_NET_PEER_NAME]=T,isNaN(A)||(_[a.ATTR_NET_PEER_PORT]=A)),n._netSemconvStability&o.SemconvStability.STABLE&&(_[i.ATTR_SERVER_ADDRESS]=T,isNaN(A)||(_[i.ATTR_SERVER_PORT]=A));let m=n.tracer.startSpan((0,l.getSpanName)(u),{kind:r.SpanKind.CLIENT,attributes:_});if(n.getConfig().enhancedDatabaseReporting){let e;Array.isArray(c)?e=c:arguments[2]&&(e=[c]),m.setAttribute(s.AttributeNames.MYSQL_VALUES,(0,l.getDbValues)(u,e))}let h=Array.from(arguments).findIndex(e=>"function"==typeof e),R=r.context.active();if(-1!==h)return n._wrap(arguments,h,n._patchCallbackQuery(m,R)),r.context.with(r.trace.setSpan(r.context.active(),m),()=>t.apply(e,arguments));{let n=r.context.with(r.trace.setSpan(r.context.active(),m),()=>t.apply(e,arguments));return r.context.bind(R,n),n.on("error",e=>m.setStatus({code:r.SpanStatusCode.ERROR,message:e.message})).on("end",()=>{m.end()})}}}}_patchCallbackQuery(e,t){return n=>function(o,i,a){return o&&e.setStatus({code:r.SpanStatusCode.ERROR,message:o.message}),e.end(),r.context.with(t,()=>n(...arguments))}}_setPoolCallbacks(e,t){let n=t||(0,l.getPoolNameOld)(e);e.on("connection",e=>{this._connCountAdd(1,n,"idle")}),e.on("acquire",e=>{this._connCountAdd(-1,n,"idle"),this._connCountAdd(1,n,"used")}),e.on("release",e=>{this._connCountAdd(1,n,"idle"),this._connCountAdd(-1,n,"used")})}}n.MySQLInstrumentation=c},510039,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQLInstrumentation=void 0;var r=e.r(937494);Object.defineProperty(n,"MySQLInstrumentation",{enumerable:!0,get:function(){return r.MySQLInstrumentation}})},473485,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(510039),o=e.r(976285),i=e.r(625331),a="Mysql",s=i.generateInstrumentOnce(a,()=>new r.MySQLInstrumentation({})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMysql=s,n.mysqlIntegration=l},366020,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_MYSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MYSQL="mysql"},386127,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.addSqlCommenterComment=void 0;let r=e.r(357762),o=e.r(385692);n.addSqlCommenterComment=function(e,t){let n;if("string"!=typeof t||0===t.length||(n=t.indexOf("--"))>=0||!(0>t.indexOf("/*"))&&n{let t=encodeURIComponent(a[e]).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`);return`${e}='${t}'`}).join(",");return`${t} /*${l}*/`}},739749,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getConnectionPrototypeToInstrument=n.once=n.getSpanName=n.getQueryText=n.getConnectionAttributes=void 0;let r=e.r(366020),o=e.r(204780),i=e.r(808119);function a(e){return e.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}n.getConnectionAttributes=function(e,t,n){var a,s,l;let u,{host:c,port:p,database:_,user:T}=function(e){let{host:t,port:n,database:r,user:o}=e&&e.connectionConfig||e||{};return{host:t,port:n,database:r,user:o}}(e),d={};t&o.SemconvStability.OLD&&(d[r.ATTR_DB_CONNECTION_STRING]=(a=c,s=p,l=_,u=`jdbc:mysql://${a||"localhost"}`,"number"==typeof s&&(u+=`:${s}`),"string"==typeof l&&(u+=`/${l}`),u),d[r.ATTR_DB_NAME]=_,d[r.ATTR_DB_USER]=T),t&o.SemconvStability.STABLE&&(d[i.ATTR_DB_NAMESPACE]=_);let E=parseInt(p,10);return n&o.SemconvStability.OLD&&(d[r.ATTR_NET_PEER_NAME]=c,isNaN(E)||(d[r.ATTR_NET_PEER_PORT]=E)),n&o.SemconvStability.STABLE&&(d[i.ATTR_SERVER_ADDRESS]=c,isNaN(E)||(d[i.ATTR_SERVER_PORT]=E)),d},n.getQueryText=function(e,t,n,r=!1,o=a){let[i,s]="string"==typeof e?[e,n]:[e.sql,"values"in e?n||e.values:n];try{if(r)return o(i);if(t&&s)return t(i,s);return i}catch(e){return"Could not determine the query due to an error in masking or formatting"}},n.getSpanName=function(e){let t="object"==typeof e?e.sql:e,n=t?.indexOf(" ");return"number"==typeof n&&-1!==n?t?.substring(0,n):t},n.once=e=>{let t=!1;return(...n)=>{if(!t)return t=!0,e(...n)}},n.getConnectionPrototypeToInstrument=function(e){let t=e.prototype,n=Object.getPrototypeOf(t);return"function"==typeof n?.query&&"function"==typeof n?.execute?n:t}},184863,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},742188,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQL2Instrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(366020),a=e.r(386127),s=e.r(739749),l=e.r(184863),u=e.r(808119),c=[">=1.4.2 <4"];class p extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let e;function t(t){!e&&t.format&&(e=t.format)}let n=t=>{(0,o.isWrapped)(t.query)&&this._unwrap(t,"query"),this._wrap(t,"query",this._patchQuery(e,!1)),(0,o.isWrapped)(t.execute)&&this._unwrap(t,"execute"),this._wrap(t,"execute",this._patchQuery(e,!0))},r=e=>{this._unwrap(e,"query"),this._unwrap(e,"execute")};return[new o.InstrumentationNodeModuleDefinition("mysql2",c,e=>(t(e),e),()=>{},[new o.InstrumentationNodeModuleFile("mysql2/promise.js",c,e=>(t(e),e),()=>{}),new o.InstrumentationNodeModuleFile("mysql2/lib/connection.js",c,e=>(n((0,s.getConnectionPrototypeToInstrument)(e)),e),e=>{void 0===e||r((0,s.getConnectionPrototypeToInstrument)(e))})])]}_patchQuery(e,t){return n=>{let l=this;return function(c,p,_){let T;Array.isArray(p)?T=p:arguments[2]&&(T=[p]);let{maskStatement:d,maskStatementHook:E,responseHook:S}=l.getConfig(),A=(0,s.getConnectionAttributes)(this.config,l._dbSemconvStability,l._netSemconvStability),g=(0,s.getQueryText)(c,e,T,d,E);l._dbSemconvStability&o.SemconvStability.OLD&&(A[i.ATTR_DB_SYSTEM]=i.DB_SYSTEM_VALUE_MYSQL,A[i.ATTR_DB_STATEMENT]=g),l._dbSemconvStability&o.SemconvStability.STABLE&&(A[u.ATTR_DB_SYSTEM_NAME]=u.DB_SYSTEM_NAME_VALUE_MYSQL,A[u.ATTR_DB_QUERY_TEXT]=g);let m=l.tracer.startSpan((0,s.getSpanName)(c),{kind:r.SpanKind.CLIENT,attributes:A});!t&&l.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=c="string"==typeof c?(0,a.addSqlCommenterComment)(m,c):Object.assign(c,{sql:(0,a.addSqlCommenterComment)(m,c.sql)}));let h=(0,s.once)((e,t)=>{e?m.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}):"function"==typeof S&&(0,o.safeExecuteInTheMiddle)(()=>{S(m,{queryResults:t})},e=>{e&&l._diag.warn("Failed executing responseHook",e)},!0),m.end()});if(1==arguments.length){"function"==typeof c.onResult&&l._wrap(c,"onResult",l._patchCallbackQuery(h));let e=n.apply(this,arguments);return e.once("error",e=>{h(e)}).once("result",e=>{h(void 0,e)}),e}return"function"==typeof arguments[1]?l._wrap(arguments,1,l._patchCallbackQuery(h)):"function"==typeof arguments[2]&&l._wrap(arguments,2,l._patchCallbackQuery(h)),n.apply(this,arguments)}}}_patchCallbackQuery(e){return t=>function(n,r,o){return e(n,r),t(...arguments)}}}n.MySQL2Instrumentation=p},623318,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQL2Instrumentation=void 0;var r=e.r(742188);Object.defineProperty(n,"MySQL2Instrumentation",{enumerable:!0,get:function(){return r.MySQL2Instrumentation}})},625680,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(623318),o=e.r(976285),i=e.r(625331),a="Mysql2",s=i.generateInstrumentOnce(a,()=>new r.MySQL2Instrumentation({responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mysql2")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMysql2=s,n.mysql2Integration=l},458792,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_REDIS=n.DB_SYSTEM_NAME_VALUE_REDIS=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_REDIS="redis",n.DB_SYSTEM_VALUE_REDIS="redis"},678116,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.endSpan=void 0;let r=e.r(357762);n.endSpan=(e,t)=>{t&&(e.recordException(t),e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message})),e.end()}},744606,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.defaultDbStatementSerializer=void 0;let r=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];n.defaultDbStatementSerializer=(e,t)=>{if(Array.isArray(t)&&t.length){let n=r.find(({regex:t})=>t.test(e))?.args??0,o=n>=0?t.slice(0,n):t;return t.length>o.length&&o.push(`[${t.length-n} other arguments]`),`${e} ${o.join(" ")}`}return e}},983181,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},943579,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.IORedisInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(458792),s=e.r(204780),l=e.r(678116),u=e.r(744606),c=e.r(983181),p={requireParentSpan:!0};class _ extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...p,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...p,...e})}init(){return[new o.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(e,t)=>{let n="Module"===e[Symbol.toStringTag]?e.default:e;return(0,o.isWrapped)(n.prototype.sendCommand)&&this._unwrap(n.prototype,"sendCommand"),this._wrap(n.prototype,"sendCommand",this._patchSendCommand(t)),(0,o.isWrapped)(n.prototype.connect)&&this._unwrap(n.prototype,"connect"),this._wrap(n.prototype,"connect",this._patchConnection()),e},e=>{if(void 0===e)return;let t="Module"===e[Symbol.toStringTag]?e.default:e;this._unwrap(t.prototype,"sendCommand"),this._unwrap(t.prototype,"connect")})]}_patchSendCommand(e){return t=>this._traceSendCommand(t,e)}_patchConnection(){return e=>this._traceConnection(e)}_traceSendCommand(e,t){let n=this;return function(c){if(arguments.length<1||"object"!=typeof c)return e.apply(this,arguments);let p=n.getConfig(),_=p.dbStatementSerializer||u.defaultDbStatementSerializer,T=void 0===r.trace.getSpan(r.context.active());if(!0===p.requireParentSpan&&T)return e.apply(this,arguments);let d={},{host:E,port:S}=this.options,A=_(c.name,c.args);n._dbSemconvStability&o.SemconvStability.OLD&&(d[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_REDIS,d[a.ATTR_DB_STATEMENT]=A,d[a.ATTR_DB_CONNECTION_STRING]=`redis://${E}:${S}`),n._dbSemconvStability&o.SemconvStability.STABLE&&(d[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_REDIS,d[i.ATTR_DB_QUERY_TEXT]=A),n._netSemconvStability&o.SemconvStability.OLD&&(d[a.ATTR_NET_PEER_NAME]=E,d[a.ATTR_NET_PEER_PORT]=S),n._netSemconvStability&o.SemconvStability.STABLE&&(d[i.ATTR_SERVER_ADDRESS]=E,d[i.ATTR_SERVER_PORT]=S);let g=n.tracer.startSpan(c.name,{kind:r.SpanKind.CLIENT,attributes:d}),{requestHook:m}=p;m&&(0,s.safeExecuteInTheMiddle)(()=>m(g,{moduleVersion:t,cmdName:c.name,cmdArgs:c.args}),e=>{e&&r.diag.error("ioredis instrumentation: request hook failed",e)},!0);try{let t=e.apply(this,arguments),n=c.resolve;c.resolve=function(e){(0,s.safeExecuteInTheMiddle)(()=>p.responseHook?.(g,c.name,c.args,e),e=>{e&&r.diag.error("ioredis instrumentation: response hook failed",e)},!0),(0,l.endSpan)(g,null),n(e)};let o=c.reject;return c.reject=function(e){(0,l.endSpan)(g,e),o(e)},t}catch(e){throw(0,l.endSpan)(g,e),e}}}_traceConnection(e){let t=this;return function(){let n=void 0===r.trace.getSpan(r.context.active());if(!0===t.getConfig().requireParentSpan&&n)return e.apply(this,arguments);let s={},{host:u,port:c}=this.options;t._dbSemconvStability&o.SemconvStability.OLD&&(s[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_REDIS,s[a.ATTR_DB_STATEMENT]="connect",s[a.ATTR_DB_CONNECTION_STRING]=`redis://${u}:${c}`),t._dbSemconvStability&o.SemconvStability.STABLE&&(s[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_REDIS,s[i.ATTR_DB_QUERY_TEXT]="connect"),t._netSemconvStability&o.SemconvStability.OLD&&(s[a.ATTR_NET_PEER_NAME]=u,s[a.ATTR_NET_PEER_PORT]=c),t._netSemconvStability&o.SemconvStability.STABLE&&(s[i.ATTR_SERVER_ADDRESS]=u,s[i.ATTR_SERVER_PORT]=c);let p=t.tracer.startSpan("connect",{kind:r.SpanKind.CLIENT,attributes:s});try{let t=e.apply(this,arguments);return(0,l.endSpan)(p,null),t}catch(e){throw(0,l.endSpan)(p,e),e}}}}n.IORedisInstrumentation=_},788406,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.IORedisInstrumentation=void 0;var r=e.r(943579);Object.defineProperty(n,"IORedisInstrumentation",{enumerable:!0,get:function(){return r.IORedisInstrumentation}})},680749,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},324932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getTracedCreateStreamTrace=n.getTracedCreateClient=n.endSpan=void 0;let r=e.r(357762);n.endSpan=(e,t)=>{t&&e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.end()},n.getTracedCreateClient=e=>function(){let t=e.apply(this,arguments);return r.context.bind(r.context.active(),t)},n.getTracedCreateStreamTrace=e=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(e){r.context.bind(r.context.active(),e),this._patched_redis_stream=e}}),e.apply(this,arguments)}},985163,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_REDIS=n.DB_SYSTEM_NAME_VALUE_REDIS=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_REDIS="redis",n.DB_SYSTEM_VALUE_REDIS="redis"},868434,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentationV2_V3=void 0;let r=e.r(204780),o=e.r(324932),i=e.r(680749),a=e.r(357762),s=e.r(808119),l=e.r(985163),u=e.r(744606);class c extends r.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e),this._semconvStability=e.semconvStability?e.semconvStability:(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig(e),this._semconvStability=e.semconvStability?e.semconvStability:(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new r.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],e=>((0,r.isWrapped)(e.RedisClient.prototype.internal_send_command)&&this._unwrap(e.RedisClient.prototype,"internal_send_command"),this._wrap(e.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,r.isWrapped)(e.RedisClient.prototype.create_stream)&&this._unwrap(e.RedisClient.prototype,"create_stream"),this._wrap(e.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,r.isWrapped)(e.createClient)&&this._unwrap(e,"createClient"),this._wrap(e,"createClient",this._getPatchCreateClient()),e),e=>{void 0!==e&&(this._unwrap(e.RedisClient.prototype,"internal_send_command"),this._unwrap(e.RedisClient.prototype,"create_stream"),this._unwrap(e,"createClient"))})]}_getPatchInternalSendCommand(){let e=this;return function(t){return function(n){if(1!=arguments.length||"object"!=typeof n)return t.apply(this,arguments);let i=e.getConfig(),p=void 0===a.trace.getSpan(a.context.active());if(!0===i.requireParentSpan&&p)return t.apply(this,arguments);let _=i?.dbStatementSerializer||u.defaultDbStatementSerializer,T={};e._semconvStability&r.SemconvStability.OLD&&Object.assign(T,{[l.ATTR_DB_SYSTEM]:l.DB_SYSTEM_VALUE_REDIS,[l.ATTR_DB_STATEMENT]:_(n.command,n.args)}),e._semconvStability&r.SemconvStability.STABLE&&Object.assign(T,{[s.ATTR_DB_SYSTEM_NAME]:l.DB_SYSTEM_NAME_VALUE_REDIS,[s.ATTR_DB_OPERATION_NAME]:n.command,[s.ATTR_DB_QUERY_TEXT]:_(n.command,n.args)});let d=e.tracer.startSpan(`${c.COMPONENT}-${n.command}`,{kind:a.SpanKind.CLIENT,attributes:T});if(this.connection_options){let t={};e._semconvStability&r.SemconvStability.OLD&&Object.assign(t,{[l.ATTR_NET_PEER_NAME]:this.connection_options.host,[l.ATTR_NET_PEER_PORT]:this.connection_options.port}),e._semconvStability&r.SemconvStability.STABLE&&Object.assign(t,{[s.ATTR_SERVER_ADDRESS]:this.connection_options.host,[s.ATTR_SERVER_PORT]:this.connection_options.port}),d.setAttributes(t)}this.address&&e._semconvStability&r.SemconvStability.OLD&&d.setAttribute(l.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let E=arguments[0].callback;if(E){let t=a.context.active();arguments[0].callback=function(s,l){if(i?.responseHook){let t=i.responseHook;(0,r.safeExecuteInTheMiddle)(()=>{t(d,n.command,n.args,l)},t=>{t&&e._diag.error("Error executing responseHook",t)},!0)}return(0,o.endSpan)(d,s),a.context.with(t,E,this,...arguments)}}try{return t.apply(this,arguments)}catch(e){throw(0,o.endSpan)(d,e),e}}}}_getPatchCreateClient(){return function(e){return(0,o.getTracedCreateClient)(e)}}_getPatchCreateStream(){return function(e){return(0,o.getTracedCreateStreamTrace)(e)}}}n.RedisInstrumentationV2_V3=c},33280,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getClientAttributes=void 0;let r=e.r(808119),o=e.r(985163),i=e.r(204780);n.getClientAttributes=function(e,t,n){let a={};return n&i.SemconvStability.OLD&&Object.assign(a,{[o.ATTR_DB_SYSTEM]:o.DB_SYSTEM_VALUE_REDIS,[o.ATTR_NET_PEER_NAME]:t?.socket?.host,[o.ATTR_NET_PEER_PORT]:t?.socket?.port,[o.ATTR_DB_CONNECTION_STRING]:function(e,t){if("string"==typeof t&&t)try{let e=new URL(t);return e.searchParams.delete("user_pwd"),e.username="",e.password="",e.href}catch(t){e.error("failed to sanitize redis connection url",t)}}(e,t?.url)}),n&i.SemconvStability.STABLE&&Object.assign(a,{[r.ATTR_DB_SYSTEM_NAME]:o.DB_SYSTEM_NAME_VALUE_REDIS,[r.ATTR_SERVER_ADDRESS]:t?.socket?.host,[r.ATTR_SERVER_PORT]:t?.socket?.port}),a}},130932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentationV4_V5=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(33280),a=e.r(744606),s=e.r(680749),l=e.r(808119),u=e.r(985163),c=Symbol("opentelemetry.instrumentation.redis.open_spans"),p=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class _ extends o.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(e={}){super(s.PACKAGE_NAME,s.PACKAGE_VERSION,e),this._semconvStability=e.semconvStability?e.semconvStability:(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig(e),this._semconvStability=e.semconvStability?e.semconvStability:(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(e){let t=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/commander.js`,["^1.0.0"],(e,t)=>{let n=e.transformCommandArguments;if(!n)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),e;let r=t?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,o.isWrapped)(e?.[r])&&this._unwrap(e,r),this._wrap(e,r,this._getPatchExtendWithCommands(n)),e},e=>{(0,o.isWrapped)(e?.extendWithCommands)&&this._unwrap(e,"extendWithCommands"),(0,o.isWrapped)(e?.attachCommands)&&this._unwrap(e,"attachCommands")}),n=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],e=>{let t=e?.default?.prototype;return(0,o.isWrapped)(t?.exec)&&this._unwrap(t,"exec"),this._wrap(t,"exec",this._getPatchMultiCommandsExec(!1)),(0,o.isWrapped)(t?.execAsPipeline)&&this._unwrap(t,"execAsPipeline"),this._wrap(t,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,o.isWrapped)(t?.addCommand)&&this._unwrap(t,"addCommand"),this._wrap(t,"addCommand",this._getPatchMultiCommandsAddCommand()),e},e=>{let t=e?.default?.prototype;(0,o.isWrapped)(t?.exec)&&this._unwrap(t,"exec"),(0,o.isWrapped)(t?.addCommand)&&this._unwrap(t,"addCommand")}),r=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],e=>{let t=e?.default?.prototype;return t?.multi&&((0,o.isWrapped)(t?.multi)&&this._unwrap(t,"multi"),this._wrap(t,"multi",this._getPatchRedisClientMulti())),t?.MULTI&&((0,o.isWrapped)(t?.MULTI)&&this._unwrap(t,"MULTI"),this._wrap(t,"MULTI",this._getPatchRedisClientMulti())),(0,o.isWrapped)(t?.sendCommand)&&this._unwrap(t,"sendCommand"),this._wrap(t,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(t,"connect",this._getPatchedClientConnect()),e},e=>{let t=e?.default?.prototype;(0,o.isWrapped)(t?.multi)&&this._unwrap(t,"multi"),(0,o.isWrapped)(t?.MULTI)&&this._unwrap(t,"MULTI"),(0,o.isWrapped)(t?.sendCommand)&&this._unwrap(t,"sendCommand")});return new o.InstrumentationNodeModuleDefinition(e,["^1.0.0","^5.0.0"],e=>e,()=>{},[t,n,r])}_getPatchExtendWithCommands(e){let t=this;return function(n){return function(r){if(r?.BaseClass?.name!=="RedisClient")return n.apply(this,arguments);let o=r.executor;return r.executor=function(n,r){let i=e(n,r).args;return t._traceClientCommand(o,this,arguments,i)},n.apply(this,arguments)}}}_getPatchMultiCommandsExec(e){let t=this;return function(n){return function(){let r=n.apply(this,arguments);return"function"!=typeof r?.then?(t._diag.error("non-promise result when patching exec/execAsPipeline"),r):r.then(n=>{let r=this[c];return t._endSpansWithRedisReplies(r,n,e),n}).catch(n=>{let r=this[c];if(r){let o="MultiErrorReply"===n.constructor.name?n.replies:Array(r.length).fill(n);t._endSpansWithRedisReplies(r,o,e)}else t._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(n)})}}}_getPatchMultiCommandsAddCommand(){let e=this;return function(t){return function(n){return e._traceClientCommand(t,this,arguments,n)}}}_getPatchRedisClientMulti(){return function(e){return function(){let t=e.apply(this,arguments);return t[p]=this.options,t}}}_getPatchRedisClientSendCommand(){let e=this;return function(t){return function(n){return e._traceClientCommand(t,this,arguments,n)}}}_getPatchedClientConnect(){let e=this;return function(t){return function(){let n=this.options,o=(0,i.getClientAttributes)(e._diag,n,e._semconvStability),a=e.tracer.startSpan(`${_.COMPONENT}-connect`,{kind:r.SpanKind.CLIENT,attributes:o});return r.context.with(r.trace.setSpan(r.context.active(),a),()=>t.apply(this)).then(e=>(a.end(),e)).catch(e=>(a.recordException(e),a.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),a.end(),Promise.reject(e)))}}}_traceClientCommand(e,t,n,s){if(void 0===r.trace.getSpan(r.context.active())&&this.getConfig().requireParentSpan)return e.apply(t,n);let T=t.options||t[p],d=s[0],E=s.slice(1),S=this.getConfig().dbStatementSerializer||a.defaultDbStatementSerializer,A=(0,i.getClientAttributes)(this._diag,T,this._semconvStability);this._semconvStability&o.SemconvStability.STABLE&&(A[l.ATTR_DB_OPERATION_NAME]=d);try{let e=S(d,E);null!=e&&(this._semconvStability&o.SemconvStability.OLD&&(A[u.ATTR_DB_STATEMENT]=e),this._semconvStability&o.SemconvStability.STABLE&&(A[l.ATTR_DB_QUERY_TEXT]=e))}catch(e){this._diag.error("dbStatementSerializer throw an exception",e,{commandName:d})}let g=this.tracer.startSpan(`${_.COMPONENT}-${d}`,{kind:r.SpanKind.CLIENT,attributes:A}),m=r.context.with(r.trace.setSpan(r.context.active(),g),()=>e.apply(t,n));return"function"==typeof m?.then?m.then(e=>{this._endSpanWithResponse(g,d,E,e,void 0)},e=>{this._endSpanWithResponse(g,d,E,null,e)}):(m[c]=m[c]||[],m[c].push({span:g,commandName:d,commandArgs:E})),m}_endSpansWithRedisReplies(e,t,n=!1){if(!e)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(t.length!==e.length)return this._diag.error("number of multi command spans does not match response from redis");let r=e.map(e=>e.commandName),i=r.every(e=>e===r[0])?(n?"PIPELINE ":"MULTI ")+r[0]:n?"PIPELINE":"MULTI";for(let n=0;n{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentation=void 0;let r=e.r(204780),o=e.r(680749),i=e.r(868434),a=e.r(130932),s={requireParentSpan:!1};class l extends r.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(e={}){const t={...s,...e};super(o.PACKAGE_NAME,o.PACKAGE_VERSION,t),this.instrumentationV2_V3=new i.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new a.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(e={}){let t={...s,...e};super.setConfig(t),this.initialized&&(this.instrumentationV2_V3.setConfig(t),this.instrumentationV4_V5.setConfig(t))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(e){super.setTracerProvider(e),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(e),this.instrumentationV4_V5.setTracerProvider(e))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}n.RedisInstrumentation=l},339097,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentation=void 0;var r=e.r(276221);Object.defineProperty(n,"RedisInstrumentation",{enumerable:!0,get:function(){return r.RedisInstrumentation}})},688662,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=["get","set","setex"],o=["get","mget"],i=["set","setex"];function a(e,t){return e.includes(t.toLowerCase())}function s(e){return a(o,e)?"cache.get":a(i,e)?"cache.put":void 0}function l(e){let t=[],n=e=>{e.forEach(e=>{Array.isArray(e)?n(e):t.push(e)})};return n(e),t}n.GET_COMMANDS=o,n.SET_COMMANDS=i,n.calculateCacheItemSize=function(e){let t=e=>{try{if(Buffer.isBuffer(e))return e.byteLength;if("string"==typeof e)return e.length;if("number"==typeof e)return e.toString().length;else if(null==e)return 0;return JSON.stringify(e).length}catch{return}};return Array.isArray(e)?e.reduce((e,n)=>{let r=t(n);return"number"==typeof r?void 0!==e?e+r:r:e},0):t(e)},n.getCacheKeySafely=function(e,t){try{if(0===t.length)return;let n=e=>"string"==typeof e||"number"==typeof e||Buffer.isBuffer(e)?[e.toString()]:Array.isArray(e)?l(e.map(e=>n(e))):[""],o=t[0];if(a(r,e)&&null!=o)return n(o);return l(t.map(e=>n(e)))}catch{return}},n.getCacheOperation=s,n.isInCommands=a,n.shouldConsiderForCache=function(e,t,n){if(!s(e))return!1;for(let e of t)if(function(e,t){return t.some(t=>e.startsWith(t))}(e,n))return!0;return!1}},978486,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(788406),o=e.r(339097),i=e.r(976285),a=e.r(625331),s=e.r(688662),l="Redis";n._redisOptions={};let u=(e,t,r,o)=>{e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let a=s.getCacheKeySafely(t,r),l=s.getCacheOperation(t);if(!a||!l||!n._redisOptions.cachePrefixes||!s.shouldConsiderForCache(t,a,n._redisOptions.cachePrefixes))return;let u=i.spanToJSON(e).data["net.peer.name"],c=i.spanToJSON(e).data["net.peer.port"];c&&u&&e.setAttributes({"network.peer.address":u,"network.peer.port":c});let p=s.calculateCacheItemSize(o);p&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,p),s.isInCommands(s.GET_COMMANDS,t)&&void 0!==p&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_CACHE_HIT,p>0),e.setAttributes({[i.SEMANTIC_ATTRIBUTE_SENTRY_OP]:l,[i.SEMANTIC_ATTRIBUTE_CACHE_KEY]:a});let _=a.join(", ");e.updateName(n._redisOptions.maxCacheKeyLength?i.truncate(_,n._redisOptions.maxCacheKeyLength):_)},c=a.generateInstrumentOnce(`${l}.IORedis`,()=>new r.IORedisInstrumentation({responseHook:u})),p=a.generateInstrumentOnce(`${l}.Redis`,()=>new o.RedisInstrumentation({responseHook:u})),_=Object.assign(()=>{c(),p()},{id:l}),T=i.defineIntegration((e={})=>({name:l,setupOnce(){n._redisOptions=e,_()}}));n.cacheResponseHook=u,n.instrumentRedis=_,n.redisIntegration=T},400893,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EVENT_LISTENERS_SET=void 0,n.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},894105,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).PG_VALUES="db.postgresql.values",r.PG_PLAN="db.postgresql.plan",r.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",r.MAX_CLIENT="db.postgresql.max.client"},184319,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=n.METRIC_DB_CLIENT_CONNECTION_COUNT=n.DB_SYSTEM_VALUE_POSTGRESQL=n.DB_CLIENT_CONNECTION_STATE_VALUE_USED=n.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=n.ATTR_DB_CLIENT_CONNECTION_STATE=n.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,n.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",n.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",n.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",n.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",n.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",n.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},465522,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.SpanNames=void 0,(r=n.SpanNames||(n.SpanNames={})).QUERY_PREFIX="pg.query",r.CONNECT="pg.connect",r.POOL_CONNECT="pg-pool.connect"},482101,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.sanitizedErrorMessage=n.isObjectWithTextString=n.getErrorMessage=n.patchClientConnectCallback=n.patchCallbackPGPool=n.updateCounter=n.getPoolName=n.patchCallback=n.handleExecutionResult=n.handleConfigQuery=n.shouldSkipInstrumentation=n.getSemanticAttributesFromPoolConnection=n.getSemanticAttributesFromConnection=n.getConnectionString=n.parseAndMaskConnectionString=n.parseNormalizedOperationName=n.getQuerySpanName=void 0;let r=e.r(357762),o=e.r(894105),i=e.r(808119),a=e.r(184319),s=e.r(204780),l=e.r(465522);function u(e,t){if(!t)return l.SpanNames.QUERY_PREFIX;let n="string"==typeof t.name&&t.name?t.name:c(t.text);return`${l.SpanNames.QUERY_PREFIX}:${n}${e?` ${e}`:""}`}function c(e){let t=e.trim(),n=t.indexOf(" "),r=-1===n?t:t.slice(0,n);return(r=r.toUpperCase()).endsWith(";")?r.slice(0,-1):r}function p(e){try{let t=new URL(e);return t.username="",t.password="",t.toString()}catch(e){return"postgresql://localhost:5432/"}}function _(e){if("connectionString"in e&&e.connectionString)return p(e.connectionString);let t=e.host||"localhost",n=e.port||5432,r=e.database||"";return`postgresql://${t}:${n}/${r}`}function T(e){if(Number.isInteger(e))return e}function d(e,t){let n={};return t&s.SemconvStability.OLD&&(n={...n,[a.ATTR_DB_SYSTEM]:a.DB_SYSTEM_VALUE_POSTGRESQL,[a.ATTR_DB_NAME]:e.database,[a.ATTR_DB_CONNECTION_STRING]:_(e),[a.ATTR_DB_USER]:e.user,[a.ATTR_NET_PEER_NAME]:e.host,[a.ATTR_NET_PEER_PORT]:T(e.port)}),t&s.SemconvStability.STABLE&&(n={...n,[i.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[i.ATTR_DB_NAMESPACE]:e.namespace,[i.ATTR_SERVER_ADDRESS]:e.host,[i.ATTR_SERVER_PORT]:T(e.port)}),n}function E(e,t,n){"function"==typeof e.responseHook&&(0,s.safeExecuteInTheMiddle)(()=>{e.responseHook(t,{data:n})},e=>{e&&r.diag.error("Error running response hook",e)},!0)}function S(e){let t=e?.name??"PostgreSQLError",n=e?.code??"UNKNOWN";return`PostgreSQL error of type '${t}' occurred (code: ${n})`}n.getQuerySpanName=u,n.parseNormalizedOperationName=c,n.parseAndMaskConnectionString=p,n.getConnectionString=_,n.getSemanticAttributesFromConnection=d,n.getSemanticAttributesFromPoolConnection=function(e,t){let n;try{n=e.connectionString?new URL(e.connectionString):void 0}catch(e){n=void 0}let r={[o.AttributeNames.IDLE_TIMEOUT_MILLIS]:e.idleTimeoutMillis,[o.AttributeNames.MAX_CLIENT]:e.maxClient};return t&s.SemconvStability.OLD&&(r={...r,[a.ATTR_DB_SYSTEM]:a.DB_SYSTEM_VALUE_POSTGRESQL,[a.ATTR_DB_NAME]:n?.pathname.slice(1)??e.database,[a.ATTR_DB_CONNECTION_STRING]:_(e),[a.ATTR_NET_PEER_NAME]:n?.hostname??e.host,[a.ATTR_NET_PEER_PORT]:Number(n?.port)||T(e.port),[a.ATTR_DB_USER]:n?.username??e.user}),t&s.SemconvStability.STABLE&&(r={...r,[i.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[i.ATTR_DB_NAMESPACE]:e.namespace,[i.ATTR_SERVER_ADDRESS]:n?.hostname??e.host,[i.ATTR_SERVER_PORT]:Number(n?.port)||T(e.port)}),r},n.shouldSkipInstrumentation=function(e){return!0===e.requireParentSpan&&void 0===r.trace.getSpan(r.context.active())},n.handleConfigQuery=function(e,t,n,l){let{connectionParameters:c}=this,p=u(c.database,l),_=e.startSpan(p,{kind:r.SpanKind.CLIENT,attributes:d(c,n)});if(!l)return _;if(l.text&&(n&s.SemconvStability.OLD&&_.setAttribute(a.ATTR_DB_STATEMENT,l.text),n&s.SemconvStability.STABLE&&_.setAttribute(i.ATTR_DB_QUERY_TEXT,l.text)),t.enhancedDatabaseReporting&&Array.isArray(l.values))try{let e=l.values.map(e=>null==e?"null":e instanceof Buffer?e.toString():"object"!=typeof e?e.toString():"function"==typeof e.toPostgres?e.toPostgres():JSON.stringify(e));_.setAttribute(o.AttributeNames.PG_VALUES,e)}catch(e){r.diag.error("failed to stringify ",l.values,e)}return"string"==typeof l.name&&_.setAttribute(o.AttributeNames.PG_PLAN,l.name),_},n.handleExecutionResult=E,n.patchCallback=function(e,t,n,o,a){return function(s,l){s?(Object.prototype.hasOwnProperty.call(s,"code")&&(o[i.ATTR_ERROR_TYPE]=s.code),s instanceof Error&&t.recordException(S(s)),t.setStatus({code:r.SpanStatusCode.ERROR,message:s.message})):E(e,t,l),a(),t.end(),n.call(this,s,l)}},n.getPoolName=function(e){let t="";return(t+=(e?.host?`${e.host}`:"unknown_host")+":"+(e?.port?`${e.port}`:"unknown_port")+"/"+(e?.database?`${e.database}`:"unknown_database")).trim()},n.updateCounter=function(e,t,n,r,o){let i=t.totalCount,s=t.waitingCount,l=t.idleCount,u=i-l;return n.add(u-o.used,{[a.ATTR_DB_CLIENT_CONNECTION_STATE]:a.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),n.add(l-o.idle,{[a.ATTR_DB_CLIENT_CONNECTION_STATE]:a.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),r.add(s-o.pending,{[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),{used:u,idle:l,pending:s}},n.patchCallbackPGPool=function(e,t){return function(n,o,i){n&&(n instanceof Error&&e.recordException(S(n)),e.setStatus({code:r.SpanStatusCode.ERROR,message:n.message})),e.end(),t.call(this,n,o,i)}},n.patchClientConnectCallback=function(e,t){return function(n){n&&(n instanceof Error&&e.recordException(S(n)),e.setStatus({code:r.SpanStatusCode.ERROR,message:n.message})),e.end(),t.apply(this,arguments)}},n.getErrorMessage=function(e){return"object"==typeof e&&null!==e&&"message"in e?String(e.message):void 0},n.isObjectWithTextString=function(e){return"object"==typeof e&&"string"==typeof e?.text},n.sanitizedErrorMessage=S},324552,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.66.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},451598,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PgInstrumentation=void 0;let r=e.r(204780),o=e.r(357762),i=e.r(400893),a=e.r(482101),s=e.r(386127),l=e.r(324552),u=e.r(465522),c=e.r(385692),p=e.r(808119),_=e.r(184319);function T(e){return"Module"===e[Symbol.toStringTag]?e.default:e}class d extends r.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e),this._semconvStability=(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(p.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:o.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(_.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(_.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let e=[">=8.0.3 <9"],t=new r.InstrumentationNodeModuleFile("pg/lib/native/client.js",e,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),n=new r.InstrumentationNodeModuleFile("pg/lib/client.js",e,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new r.InstrumentationNodeModuleDefinition("pg",e,e=>{let t=T(e);return this._patchPgClient(t.Client),e},e=>{let t=T(e);return this._unpatchPgClient(t.Client),e},[n,t]),new r.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],e=>{let t=T(e);return(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),this._wrap(t.prototype,"connect",this._getPoolConnectPatch()),t},e=>{let t=T(e);(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect")})]}_patchPgClient(e){if(!e)return;let t=T(e);return(0,r.isWrapped)(t.prototype.query)&&this._unwrap(t.prototype,"query"),(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),this._wrap(t.prototype,"query",this._getClientQueryPatch()),this._wrap(t.prototype,"connect",this._getClientConnectPatch()),e}_unpatchPgClient(e){let t=T(e);return(0,r.isWrapped)(t.prototype.query)&&this._unwrap(t.prototype,"query"),(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),e}_getClientConnectPatch(){let e=this;return t=>function(n){let r=e.getConfig();if(a.shouldSkipInstrumentation(r)||r.ignoreConnectSpans)return t.call(this,n);let i=e.tracer.startSpan(u.SpanNames.CONNECT,{kind:o.SpanKind.CLIENT,attributes:a.getSemanticAttributesFromConnection(this,e._semconvStability)});if(n){let e=o.trace.getSpan(o.context.active());n=a.patchClientConnectCallback(i,n),e&&(n=o.context.bind(o.context.active(),n))}let s=o.context.with(o.trace.setSpan(o.context.active(),i),()=>t.call(this,n));return E(i,s)}}recordOperationDuration(e,t){let n={},o=[p.ATTR_DB_NAMESPACE,p.ATTR_ERROR_TYPE,p.ATTR_SERVER_PORT,p.ATTR_SERVER_ADDRESS,p.ATTR_DB_OPERATION_NAME];this._semconvStability&r.SemconvStability.OLD&&o.push(_.ATTR_DB_SYSTEM),this._semconvStability&r.SemconvStability.STABLE&&o.push(p.ATTR_DB_SYSTEM_NAME),o.forEach(t=>{t in e&&(n[t]=e[t])});let i=(0,c.hrTimeToMilliseconds)((0,c.hrTimeDuration)(t,(0,c.hrTime)()))/1e3;this._operationDuration.record(i,n)}_getClientQueryPatch(){let e=this;return t=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...n){let i;if(a.shouldSkipInstrumentation(e.getConfig()))return t.apply(this,n);let l=(0,c.hrTime)(),u=n[0],T="string"==typeof u,d=a.isObjectWithTextString(u),E=T?{text:u,values:Array.isArray(n[1])?n[1]:void 0}:d?{...u,name:u.name,text:u.text,values:u.values??(Array.isArray(n[1])?n[1]:void 0)}:void 0,S={[_.ATTR_DB_SYSTEM]:_.DB_SYSTEM_VALUE_POSTGRESQL,[p.ATTR_DB_NAMESPACE]:this.database,[p.ATTR_SERVER_PORT]:this.connectionParameters.port,[p.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};E?.text&&(S[p.ATTR_DB_OPERATION_NAME]=a.parseNormalizedOperationName(E?.text));let A=()=>{e.recordOperationDuration(S,l)},g=e.getConfig(),m=a.handleConfigQuery.call(this,e.tracer,g,e._semconvStability,E);if(g.addSqlCommenterCommentToQueries&&(T?n[0]=(0,s.addSqlCommenterComment)(m,u):!d||"name"in u||(n[0]={...u,text:(0,s.addSqlCommenterComment)(m,u.text)})),n.length>0){let t=o.trace.getSpan(o.context.active());if("function"==typeof n[n.length-1])n[n.length-1]=a.patchCallback(g,m,n[n.length-1],S,A),t&&(n[n.length-1]=o.context.bind(o.context.active(),n[n.length-1]));else if("function"==typeof E?.callback){let r=a.patchCallback(e.getConfig(),m,E.callback,S,A);t&&(r=o.context.bind(o.context.active(),r)),n[0].callback=r}}let{requestHook:h}=g;"function"==typeof h&&E&&(0,r.safeExecuteInTheMiddle)(()=>{let{database:e,host:t,port:n,user:r}=this.connectionParameters;h(m,{connection:{database:e,host:t,port:n,user:r},query:{text:E.text,values:E.values,name:E.name}})},t=>{t&&e._diag.error("Error running query hook",t)},!0);try{i=t.apply(this,n)}catch(e){throw e instanceof Error&&m.recordException(a.sanitizedErrorMessage(e)),m.setStatus({code:o.SpanStatusCode.ERROR,message:a.getErrorMessage(e)}),m.end(),e}return i instanceof Promise?i.then(t=>new Promise(n=>{a.handleExecutionResult(e.getConfig(),m,t),A(),m.end(),n(t)})).catch(e=>new Promise((t,n)=>{e instanceof Error&&m.recordException(a.sanitizedErrorMessage(e)),m.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),A(),m.end(),n(e)})):i})}_setPoolConnectEventListeners(e){if(e[i.EVENT_LISTENERS_SET])return;let t=a.getPoolName(e.options);e.on("connect",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("acquire",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("remove",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("release",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e[i.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let e=this;return t=>function(n){let r=e.getConfig();if(a.shouldSkipInstrumentation(r)||(e._setPoolConnectEventListeners(this),r.ignoreConnectSpans))return t.call(this,n);let i=e.tracer.startSpan(u.SpanNames.POOL_CONNECT,{kind:o.SpanKind.CLIENT,attributes:a.getSemanticAttributesFromPoolConnection(this.options,e._semconvStability)});if(n){let e=o.trace.getSpan(o.context.active());n=a.patchCallbackPGPool(i,n),e&&(n=o.context.bind(o.context.active(),n))}let s=o.context.with(o.trace.setSpan(o.context.active(),i),()=>t.call(this,n));return E(i,s)}}}function E(e,t){return t instanceof Promise?o.context.bind(o.context.active(),t.then(t=>(e.end(),t)).catch(t=>(t instanceof Error&&e.recordException(a.sanitizedErrorMessage(t)),e.setStatus({code:o.SpanStatusCode.ERROR,message:a.getErrorMessage(t)}),e.end(),Promise.reject(t)))):t}n.PgInstrumentation=d},840167,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.PgInstrumentation=void 0;var r=e.r(451598);Object.defineProperty(n,"PgInstrumentation",{enumerable:!0,get:function(){return r.PgInstrumentation}});var o=e.r(894105);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}})},832719,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(840167),o=e.r(976285),i=e.r(625331),a="Postgres",s=i.generateInstrumentOnce(a,r.PgInstrumentation,e=>({requireParentSpan:!0,requestHook(e){i.addOriginToSpan(e,"auto.db.otel.postgres")},ignoreConnectSpans:e?.ignoreConnectSpans??!1})),l=o.defineIntegration(e=>({name:a,setupOnce(){s(e)}}));n.instrumentPostgres=s,n.postgresIntegration=l},19194,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(976285),s=e.r(625331),l=e.r(866779),u="PostgresJs",c=[">=3.0.0 <4"],p=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,_=Symbol.for("sentry.query.from.instrumented.sql"),T=s.generateInstrumentOnce(u,e=>new d({requireParentSpan:e?.requireParentSpan??!0,requestHook:e?.requestHook}));class d extends o.InstrumentationBase{constructor(e){super("sentry-postgres-js",a.SDK_VERSION,e)}init(){let e=new o.InstrumentationNodeModuleDefinition("postgres",c,e=>{try{return this._patchPostgres(e)}catch(t){return l.DEBUG_BUILD&&a.debug.error("Failed to patch postgres module:",t),e}},e=>e);return["src","cf/src","cjs/src"].forEach(t=>{e.files.push(new o.InstrumentationNodeModuleFile(`postgres/${t}/query.js`,c,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),e}_patchPostgres(e){let t="function"==typeof e,n=t?e:e.default;if("function"!=typeof n)return l.DEBUG_BUILD&&a.debug.warn("postgres module does not export a function. Skipping instrumentation."),e;let r=this,o=function(...e){let t=Reflect.construct(n,e);if(!t||"function"!=typeof t)return l.DEBUG_BUILD&&a.debug.warn("postgres() did not return a valid instance"),t;let o=r.getConfig();return a.instrumentPostgresJsSql(t,{requireParentSpan:o.requireParentSpan,requestHook:o.requestHook})};for(let e of(Object.setPrototypeOf(o,n),Object.setPrototypeOf(o.prototype,n.prototype),Object.getOwnPropertyNames(n)))if(!["length","name","prototype"].includes(e)){let t=Object.getOwnPropertyDescriptor(n,e);t&&Object.defineProperty(o,e,t)}return t?o:(a.replaceExports(e,"default",o),e)}_shouldCreateSpans(){let e=this.getConfig();return void 0!==r.trace.getSpan(r.context.active())||!e.requireParentSpan}_setOperationName(e,t,n){if(n)return void e.setAttribute(i.ATTR_DB_OPERATION_NAME,n);let r=t?.match(p);r?.[1]&&e.setAttribute(i.ATTR_DB_OPERATION_NAME,r[1].toUpperCase())}_reconstructQuery(e){if(e?.length)return 1===e.length?e[0]||void 0:e.reduce((e,t,n)=>0===n?t:`${e}$${n}${t}`,"")}_sanitizeSqlQuery(e){return e?e.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{s.addOriginToSpan(r,"auto.db.postgresjs"),r.setAttributes({[i.ATTR_DB_SYSTEM_NAME]:"postgres",[i.ATTR_DB_QUERY_TEXT]:c});let{requestHook:p}=t.getConfig();p&&o.safeExecuteInTheMiddle(()=>p(r,c,void 0),e=>{e&&(r.setAttribute("sentry.hook.error","requestHook failed"),l.DEBUG_BUILD&&a.debug.error(`Error in requestHook for ${u} integration:`,e))},!0);let _=this.resolve;this.resolve=new Proxy(_,{apply:(e,n,o)=>{try{t._setOperationName(r,c,o?.[0]?.command),r.end()}catch(e){l.DEBUG_BUILD&&a.debug.error("Error ending span in resolve callback:",e)}return Reflect.apply(e,n,o)}});let T=this.reject;this.reject=new Proxy(T,{apply:(e,n,o)=>{try{r.setStatus({code:a.SPAN_STATUS_ERROR,message:o?.[0]?.message||"unknown_error"}),r.setAttribute(i.ATTR_DB_RESPONSE_STATUS_CODE,o?.[0]?.code||"unknown"),r.setAttribute(i.ATTR_ERROR_TYPE,o?.[0]?.name||"unknown"),t._setOperationName(r,c),r.end()}catch(e){l.DEBUG_BUILD&&a.debug.error("Error ending span in reject callback:",e)}return Reflect.apply(e,n,o)}});try{return n.apply(this,e)}catch(e){throw r.setStatus({code:a.SPAN_STATUS_ERROR,message:e instanceof Error?e.message:"unknown_error"}),r.end(),e}})},e.Query.prototype.handle.__sentry_original__=n,e}_unpatchQueryPrototype(e){return e.Query.prototype.handle.__sentry_original__&&(e.Query.prototype.handle=e.Query.prototype.handle.__sentry_original__),e}}let E=a.defineIntegration(e=>({name:u,setupOnce(){T(e)}}));n.PostgresJsInstrumentation=d,n.instrumentPostgresJs=T,n.postgresJsIntegration=E},816879,e=>{"use strict";e.s([],712748),e.i(712748);var t,n,r=e.i(545364),o=e.i(605809);let i="object"==typeof globalThis?globalThis:e.g,a=Symbol.for("io.opentelemetry.js.api.logs");class s{emit(e){}}let l=new s,u=new class{getLogger(e,t,n){return new s}};class c{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}emit(e){this._getLogger().emit(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider._getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):l}}class p{getLogger(e,t,n){var r;return null!=(r=this._getDelegateLogger(e,t,n))?r:new c(this,e,t,n)}_getDelegate(){var e;return null!=(e=this._delegate)?e:u}_setDelegate(e){this._delegate=e}_getDelegateLogger(e,t,n){var r;return null==(r=this._delegate)?void 0:r.getLogger(e,t,n)}}class _{constructor(){this._proxyLoggerProvider=new p}static getInstance(){return this._instance||(this._instance=new _),this._instance}setGlobalLoggerProvider(e){return i[a]?this.getLoggerProvider():(i[a]=t=>1===t?e:u,this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,t;return null!=(t=null==(e=i[a])?void 0:e.call(i,1))?t:this._proxyLoggerProvider}getLogger(e,t,n){return this.getLoggerProvider().getLogger(e,t,n)}disable(){delete i[a],this._proxyLoggerProvider=new p}}let T=_.getInstance();function d(e){let t=e.tracerProvider||r.trace.getTracerProvider(),n=e.meterProvider||o.metrics.getMeterProvider(),i=e.loggerProvider||T.getLoggerProvider(),a=e.instrumentations?.flat()??[];for(let e=0,r=a.length;e{a.forEach(e=>e.disable())}}var E=e.i(814747),S=e.i(224361),A=e.i(978116);let g=/^(?:v)?(?(?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-]+)*))?$/,m=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,h={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function R(e,t,n,r){if(t.includes("||")){for(let o of t.trim().split("||"))if(f(e,o,n,r))return!0;return!1}if(t.includes(" - ")){var o,i;o=t,i=r,t=o.replace(x,(e,t,n,r,o,a,s,l,u,c,p,_)=>(t=N(n)?"":N(r)?`>=${n}.0.0${i?.includePrerelease?"-0":""}`:N(o)?`>=${n}.${r}.0${i?.includePrerelease?"-0":""}`:a?`>=${t}`:`>=${t}${i?.includePrerelease?"-0":""}`,l=N(u)?"":N(c)?`<${+u+1}.0.0-0`:N(p)?`<${u}.${+c+1}.0-0`:_?`<=${u}.${c}.${p}-${_}`:i?.includePrerelease?`<${u}.${c}.${+p+1}-0`:`<=${l}`,`${t} ${l}`.trim()))}else if(t.includes(" ")){for(let o of t.trim().replace(/\s{2,}/g," ").split(" "))if(!f(e,o,n,r))return!1;return!0}return f(e,t,n,r)}function f(e,t,n,r){var o,i,a,s,l,u;let c;if((o=t,i=r,t=(l=o=(a=o=o.trim(),s=i,c=s?.includePrerelease?"-0":"",o=a.replace(w,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0${c} <${+t+1}.0.0-0`:N(r)?"0"===t?`>=${t}.${n}.0${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.0${c} <${+t+1}.0.0-0`:o?"0"===t?"0"===n?`>=${t}.${n}.${r}-${o} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r}-${o} <${+t+1}.0.0-0`:"0"===t?"0"===n?`>=${t}.${n}.${r}${c} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${+t+1}.0.0-0`)).replace(V,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0 <${+t+1}.0.0-0`:N(r)?`>=${t}.${n}.0 <${t}.${+n+1}.0-0`:o?`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${t}.${+n+1}.0-0`),u=i,o=l.replace(B,(e,t,n,r,o,i)=>{let a=N(n),s=a||N(r),l=s||N(o);return"="===t&&l&&(t=""),i=u?.includePrerelease?"-0":"",a?e=">"===t||"<"===t?"<0.0.0-0":"*":t&&l?(s&&(r=0),o=0,">"===t?(t=">=",s?(n=+n+1,r=0):r=+r+1,o=0):"<="===t&&(t="<",s?n=+n+1:r=+r+1),"<"===t&&(i="-0"),e=`${t+n}.${r}.${o}${i}`):s?e=`>=${n}.0.0${i} <${+n+1}.0.0-0`:l&&(e=`>=${n}.${r}.0${i} <${n}.${+r+1}.0-0`),e})).trim()).includes(" "))return R(e,t,n,r);{let r=function(e){if(!e)return{};let t=e.match(m);if(!t)return A.diag.error(`Invalid range: ${e}`),{invalid:!0};let n=t.groups.op,r=t.groups.version,o=t.groups.prerelease,i=t.groups.build,a=r.split("."),s=o?.split(".");return"=="===n&&(n="="),{op:n||"=",version:r,versionSegments:a,versionSegmentCount:a.length,prerelease:o,prereleaseSegments:s,prereleaseSegmentCount:s?s.length:0,build:i}}(t);return n.push(r),function(e,t){if(t.invalid)return!1;if(!t.version||I(t.version))return!0;let n=y(e.versionSegments||[],t.versionSegments||[]);if(0===n){let r=e.prereleaseSegments||[],o=t.prereleaseSegments||[];n=r.length||o.length?!r.length&&o.length?1:r.length&&!o.length?-1:y(r,o):0}return h[t.op]?.includes(n)}(e,r)}}function N(e){return!e||"x"===e.toLowerCase()||"*"===e}function I(e){return"*"===e||"x"===e||"X"===e}function O(e){let t=parseInt(e,10);return isNaN(t)?e:t}function y(e,t){for(let n=0;nr?1:n)?=?)\\s*${G}$`),x=RegExp(`^\\s*(${G})\\s+-\\s+(${G})\\s*$`),V=RegExp(`^(?:~>?)${G}$`),w=RegExp(`^(?:\\^)${G}$`),H=console.error.bind(console);function k(e,t,n){let r=!!e[t]&&Object.prototype.propertyIsEnumerable.call(e,t);Object.defineProperty(e,t,{configurable:!0,enumerable:r,writable:!0,value:n})}let Y=(e,t,n)=>{if(!e||!e[t])return void H("no original function "+String(t)+" to wrap");if(!n){H("no wrapper function"),H(Error().stack);return}let r=e[t];if("function"!=typeof r||"function"!=typeof n)return void H("original object and wrapper must be functions");let o=n(r,t);return k(o,"__original",r),k(o,"__unwrap",()=>{e[t]===o&&k(e,t,r)}),k(o,"__wrapped",!0),k(e,t,o),o},j=(e,t,n)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{Y(e,t,n)})}):H("must provide one or more functions to wrap on modules")},F=(e,t)=>{if(!e||!e[t]){H("no function to unwrap."),H(Error().stack);return}let n=e[t];n.__unwrap?n.__unwrap():H("no original to unwrap to -- has "+String(t)+" already been unwrapped?")},W=(e,t)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{F(e,t)})}):H("must provide one or more functions to unwrap on modules")};function K(e){e&&e.logger&&("function"!=typeof e.logger?H("new logger isn't a function, not replacing"):H=e.logger)}K.wrap=Y,K.massWrap=j,K.unwrap=F,K.massUnwrap=W;class X{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(e,t,n){this.instrumentationName=e,this.instrumentationVersion=t,this.setConfig(n),this._diag=A.diag.createComponentLogger({namespace:e}),this._tracer=r.trace.getTracer(e,t),this._meter=o.metrics.getMeter(e,t),this._logger=T.getLogger(e,t),this._updateMetricInstruments()}_wrap=Y;_unwrap=F;_massWrap=j;_massUnwrap=W;get meter(){return this._meter}setMeterProvider(e){this._meter=e.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(e){this._logger=e.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let e=this.init()??[];return Array.isArray(e)?e:[e]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(e){this._config={enabled:!0,...e}}setTracerProvider(e){this._tracer=e.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(e,t,n,r){if(e)try{e(n,r)}catch(e){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:t},e)}}}var Z=e.i(156823);class J{hooks=[];children=new Map}class ${_trie=new J;_counter=0;insert(e){let t=this._trie;for(let n of e.moduleName.split("/")){let e=t.children.get(n);e||(e=new J,t.children.set(n,e)),t=e}t.hooks.push({hook:e,insertedId:this._counter++})}search(e,{maintainInsertionOrder:t,fullOnly:n}={}){let r=this._trie,o=[],i=!0;for(let t of e.split("/")){let e=r.children.get(t);if(!e){i=!1;break}n||o.push(...e.hooks),r=e}return(n&&i&&o.push(...r.hooks),0===o.length)?[]:1===o.length?[o[0].hook]:(t&&o.sort((e,t)=>e.insertedId-t.insertedId),o.map(({hook:e})=>e))}}let Q=["afterEach","after","beforeEach","before","describe","it"].every(t=>"function"==typeof e.g[t]);class z{_moduleNameTrie=new $;static _instance;constructor(){this._initialize()}_initialize(){new Z.Hook(null,{internals:!0},(e,t,n)=>{var r;let o=(r=t,"/"!==E.sep?r.split(E.sep).join("/"):r);for(let{onRequire:r}of this._moduleNameTrie.search(o,{maintainInsertionOrder:!0,fullOnly:void 0===n}))e=r(e,t,n);return e})}register(e,t){let n={moduleName:e,onRequire:t};return this._moduleNameTrie.insert(n),n}static getInstance(){return Q?new z:this._instance=this._instance??new z}}var q=e.i(74667),ee=e.i(522734);function et(e,t,n){let r,o;try{o=e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}async function en(e,t,n){let r,o;try{o=await e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}function er(e){return"function"==typeof e&&"function"==typeof e.__original&&"function"==typeof e.__unwrap&&!0===e.__wrapped}class eo extends X{_modules;_hooks=[];_requireInTheMiddleSingleton=z.getInstance();_enabled=!1;constructor(e,t,n){super(e,t,n);let r=this.init();r&&!Array.isArray(r)&&(r=[r]),this._modules=r||[],this._config.enabled&&this.enable()}_wrap=(e,t,n)=>{if(er(e[t])&&this._unwrap(e,t),!S.types.isProxy(e))return Y(e,t,n);{let r=Y(Object.assign({},e),t,n);return Object.defineProperty(e,t,{value:r}),r}};_unwrap=(e,t)=>S.types.isProxy(e)?Object.defineProperty(e,t,{value:e[t]}):F(e,t);_massWrap=(e,t,n)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._wrap(e,t,n)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_massUnwrap=(e,t)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._unwrap(e,t)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(t=>{let{name:n}=t;try{let t=(()=>{let e=Error("Cannot find module as expression is too dynamic");throw e.code="MODULE_NOT_FOUND",e})();e.c[t]&&this._diag.warn(`Module ${n} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${n}`)}catch{}})}_extractPackageVersion(e){try{let t=(0,ee.readFileSync)(E.join(e,"package.json"),{encoding:"utf8"}),n=JSON.parse(t).version;return"string"==typeof n?n:void 0}catch{A.diag.warn("Failed extracting version",e)}}_onRequire(e,t,n,r){if(!r)return"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:e.name}),e.patch(t)):t;let o=this._extractPackageVersion(r);if(e.moduleVersion=o,e.name===n)return ei(e.supportedVersions,o,e.includePrerelease)&&"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:e.name,version:e.moduleVersion,baseDir:r}),e.patch(t,e.moduleVersion)):t;let i=e.files??[],a=E.normalize(n);return i.filter(e=>e.name===a).filter(t=>ei(t.supportedVersions,o,e.includePrerelease)).reduce((t,n)=>(n.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:e.name,version:e.moduleVersion,fileName:n.name,baseDir:r}),n.patch(t,e.moduleVersion)):t,t)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let e of this._modules)for(let t of("function"==typeof e.patch&&e.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:e.name,version:e.moduleVersion}),e.patch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.patch(t.moduleExports,e.moduleVersion));return}for(let e of(this._warnOnPreloadedModules(),this._modules)){let t=(t,n,r)=>{if(!r&&E.isAbsolute(n)){let e=E.parse(n);n=e.name,r=e.dir}return this._onRequire(e,t,n,r)},n=(t,n,r)=>this._onRequire(e,t,n,r),r=E.isAbsolute(e.name)?new Z.Hook([e.name],{internals:!0},n):this._requireInTheMiddleSingleton.register(e.name,n);this._hooks.push(r);let o=new q.Hook([e.name],{internals:!1},t);this._hooks.push(o)}}}disable(){if(this._enabled)for(let e of(this._enabled=!1,this._modules))for(let t of("function"==typeof e.unpatch&&e.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:e.name,version:e.moduleVersion}),e.unpatch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.unpatch(t.moduleExports,e.moduleVersion))}isEnabled(){return this._enabled}}function ei(e,t,n){return void 0===t?e.includes("*"):e.some(e=>(function(e,t,n){var r,o,i;if(!("string"==typeof(r=e)&&g.test(r)))return A.diag.error(`Invalid version: ${e}`),!1;if(!t)return!0;t=t.replace(/([<>=~^]+)\s+/g,"$1");let a=function(e){let t=e.match(g);if(!t)return void A.diag.error(`Invalid version: ${e}`);let n=t.groups.version,r=t.groups.prerelease,o=t.groups.build,i=n.split("."),a=r?.split(".");return{op:void 0,version:n,versionSegments:i,versionSegmentCount:i.length,prerelease:r,prereleaseSegments:a,prereleaseSegmentCount:a?a.length:0,build:o}}(e);if(!a)return!1;let s=[],l=R(a,t,s,n);return l&&!n?.includePrerelease?(o=a,i=s,!o.prerelease||i.some(e=>e.prerelease&&e.version===o.version)):l})(t,e,{includePrerelease:n}))}class ea{name;supportedVersions;patch;unpatch;files;constructor(e,t,n,r,o){this.name=e,this.supportedVersions=t,this.patch=n,this.unpatch=r,this.files=o||[]}}class es{supportedVersions;patch;unpatch;name;constructor(e,t,n,r){this.supportedVersions=t,this.patch=n,this.unpatch=r,this.name=(0,E.normalize)(e)}}function el(e,t){let r=n.OLD;for(let o of t?.split(",").map(e=>e.trim()).filter(e=>""!==e)??[])if(o.toLowerCase()===e+"/dup"){r=n.DUPLICATE;break}else o.toLowerCase()===e&&(r=n.STABLE);return r}(t=n||(n={}))[t.STABLE=1]="STABLE",t[t.OLD=2]="OLD",t[t.DUPLICATE=3]="DUPLICATE",e.s(["InstrumentationBase",()=>eo,"InstrumentationNodeModuleDefinition",()=>ea,"InstrumentationNodeModuleFile",()=>es,"SemconvStability",()=>n,"isWrapped",()=>er,"registerInstrumentations",()=>d,"safeExecuteInTheMiddle",()=>et,"safeExecuteInTheMiddleAsync",()=>en,"semconvStabilityFromStr",()=>el],816879)},823876,(e,t,n)=>{"use strict";var r=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,s={},l={PrismaInstrumentation:()=>f,registerInstrumentations:()=>N.registerInstrumentations};for(var u in l)r(s,u,{get:l[u],enumerable:!0});t.exports=((e,t,n,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of i(t))a.call(e,l)||l===n||r(e,l,{get:()=>t[l],enumerable:!(s=o(t,l))||s.enumerable});return e})(r({},"__esModule",{value:!0}),s);var c=e.r(357762),p=e.r(816879),_="7.6.0".split(".")[0],T="PRISMA_INSTRUMENTATION",d=`V${_}_PRISMA_INSTRUMENTATION`,E=globalThis,S=e.r(357762),A="true"===process.env.PRISMA_SHOW_ALL_TRACES,g=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:e,ignoreSpanTypes:t}){this.tracerProvider=e,this.ignoreSpanTypes=t}isEnabled(){return!0}getTraceParent(e){let t=S.trace.getSpanContext(e??S.context.active());return t?`00-${t.traceId}-${t.spanId}-0${t.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(e){let t=this.tracerProvider.getTracer("prisma"),n=new Map;for(let r of e.filter(e=>null===e.parentId))!function e(t,n,r,o,i){if(h(n.name,i))return;let a={attributes:n.attributes,kind:"client"===n.kind?S.SpanKind.CLIENT:S.SpanKind.INTERNAL,startTime:n.startTime};t.startActiveSpan(n.name,a,a=>{for(let s of(o.set(n.id,a.spanContext().spanId),n.links&&a.addLinks(n.links.flatMap(e=>{let t=o.get(e);return t?{context:{spanId:t,traceId:a.spanContext().traceId,traceFlags:a.spanContext().traceFlags}}:[]})),r.filter(e=>e.parentId===n.id)))e(t,s,r,o,i);a.end(n.endTime)})}(t,r,e,n,this.ignoreSpanTypes)}getActiveContext(){return S.context.active()}runInChildSpan(e,t){if("string"==typeof e&&(e={name:e}),e.internal&&!A)return t();let n=this.tracerProvider.getTracer("prisma"),r=e.context??this.getActiveContext(),o=`prisma:client:${e.name}`;if(h(o,this.ignoreSpanTypes))return t();if(!1===e.active){let i=n.startSpan(o,e,r);return m(i,t(i,r))}return n.startActiveSpan(o,e,e=>m(e,t(e,r)))}};function m(e,t){var n;return null!=(n=t)&&"function"==typeof n.then?t.then(t=>(e.end(),t),t=>{throw e.end(),t}):(e.end(),t)}function h(e,t){return t.some(t=>"string"==typeof t?t===e:t.test(e))}var R="7.6.0",f=class extends p.InstrumentationBase{tracerProvider;constructor(e={}){super("@prisma/instrumentation",R,e)}setTracerProvider(e){this.tracerProvider=e}init(){return[new p.InstrumentationNodeModuleDefinition("@prisma/client",[R])]}enable(){let e,t=this._config;e={helper:new g({tracerProvider:this.tracerProvider??c.trace.getTracerProvider(),ignoreSpanTypes:t.ignoreSpanTypes??[]})},E[d]=e,E[T]=e}disable(){delete E[d],delete E[T]}isEnabled(){return void 0!==function(){let e=E[d];if(e?.helper)return e.helper;let t=E[T];return t?.helper}()}},N=e.r(816879)},547683,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(823876),i=e.r(976285),a=e.r(625331),s="Prisma";function l(){let e=globalThis.PRISMA_INSTRUMENTATION;return e&&"object"==typeof e&&"helper"in e?e.helper:void 0}class u extends o.PrismaInstrumentation{constructor(e){super(e?.instrumentationConfig)}enable(){super.enable();let e=l();e&&"object"==typeof e&&"dispatchEngineSpans"in e&&(e.createEngineSpan=e=>{let t=r.trace.getTracer("prismaV5Compatibility"),n=t._idGenerator;if(!n)return void i.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{e.spans.forEach(e=>{var o;let i=(o=e.kind,"client"===o?r.SpanKind.CLIENT:r.SpanKind.INTERNAL),a=e.parent_span_id,s=e.span_id,l=e.trace_id,u=e.links?.map(e=>({context:{traceId:e.trace_id,spanId:e.span_id,traceFlags:r.TraceFlags.SAMPLED}})),c=r.trace.setSpanContext(r.context.active(),{traceId:l,spanId:a,traceFlags:r.TraceFlags.SAMPLED});r.context.with(c,()=>{t._idGenerator={generateTraceId:()=>l,generateSpanId:()=>s},t.startSpan(e.name,{kind:i,links:u,startTime:e.start_time,attributes:e.attributes}).end(e.end_time),t._idGenerator=n})})}finally{t._idGenerator=n}})}}let c=a.generateInstrumentOnce(s,e=>new u(e)),p=i.defineIntegration(e=>({name:s,setupOnce(){c(e)},setup(e){l()&&e.on("spanStart",e=>{let t=i.spanToJSON(e);t.description?.startsWith("prisma:")&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===t.description&&t.data["db.query.text"]&&e.updateName(t.data["db.query.text"]),"prisma:engine:db_query"!==t.description||t.data["db.system"]||e.setAttribute("db.system","prisma")})}}));n.instrumentPrisma=c,n.prismaIntegration=p},399189,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},318837,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HapiLifecycleMethodNames=n.HapiLayerType=n.handlerPatched=n.HapiComponentName=void 0,n.HapiComponentName="@hapi/hapi",n.handlerPatched=Symbol("hapi-handler-patched"),n.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},n.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},808139,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_HTTP_METHOD=void 0,n.ATTR_HTTP_METHOD="http.method"},180434,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).HAPI_TYPE="hapi.type",r.PLUGIN_NAME="hapi.plugin.name",r.EXT_TYPE="server.ext.type"},346711,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getPluginFromInput=n.getExtMetadata=n.getRouteMetadata=n.isPatchableExtMethod=n.isDirectExtInput=n.isLifecycleExtEventObj=n.isLifecycleExtType=n.getPluginName=void 0;let r=e.r(808119),o=e.r(808139),i=e.r(318837),a=e.r(180434),s=e.r(204780);n.getPluginName=function(e){return e.name?e.name:e.pkg.name},n.isLifecycleExtType=e=>"string"==typeof e&&i.HapiLifecycleMethodNames.has(e),n.isLifecycleExtEventObj=e=>{let t=e?.type;return void 0!==t&&(0,n.isLifecycleExtType)(t)},n.isDirectExtInput=e=>Array.isArray(e)&&e.length<=3&&(0,n.isLifecycleExtType)(e[0])&&"function"==typeof e[1],n.isPatchableExtMethod=e=>!Array.isArray(e),n.getRouteMetadata=(e,t,n)=>{let l,u={[r.ATTR_HTTP_ROUTE]:e.path};return t&s.SemconvStability.OLD&&(u[o.ATTR_HTTP_METHOD]=e.method),t&s.SemconvStability.STABLE&&(u[r.ATTR_HTTP_REQUEST_METHOD]=e.method),n?(u[a.AttributeNames.HAPI_TYPE]=i.HapiLayerType.PLUGIN,u[a.AttributeNames.PLUGIN_NAME]=n,l=`${n}: route - ${e.path}`):(u[a.AttributeNames.HAPI_TYPE]=i.HapiLayerType.ROUTER,l=`route - ${e.path}`),{attributes:u,name:l}},n.getExtMetadata=(e,t,n)=>{let r=`ext - ${e}`;return(n&&"method"!==n&&(r=`ext - ${e} - ${n}`),t)?{attributes:{[a.AttributeNames.EXT_TYPE]:e,[a.AttributeNames.HAPI_TYPE]:i.HapiLayerType.EXT,[a.AttributeNames.PLUGIN_NAME]:t},name:`${t}: ${r}`}:{attributes:{[a.AttributeNames.EXT_TYPE]:e,[a.AttributeNames.HAPI_TYPE]:i.HapiLayerType.EXT},name:r}},n.getPluginFromInput=e=>"plugin"in e?"plugin"in e.plugin?e.plugin.plugin:e.plugin:e},345301,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HapiInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(399189),s=e.r(318837),l=e.r(346711);class u extends i.InstrumentationBase{_semconvStability;constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e),this._semconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new i.InstrumentationNodeModuleDefinition(s.HapiComponentName,[">=17.0.0 <22"],e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;return(0,i.isWrapped)(t.server)||this._wrap(t,"server",this._getServerPatch.bind(this)),(0,i.isWrapped)(t.Server)||this._wrap(t,"Server",this._getServerPatch.bind(this)),t},e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;this._massUnwrap([t],["server","Server"])})}_getServerPatch(e){let t=this,n=this;return function(r){let o=e.apply(this,[r]);return n._wrap(o,"route",e=>t._getServerRoutePatch.bind(t)(e)),n._wrap(o,"ext",e=>t._getServerExtPatch.bind(t)(e)),n._wrap(o,"register",t._getServerRegisterPatch.bind(t)),o}}_getServerRegisterPatch(e){let t=this;return function(n,r){if(Array.isArray(n))for(let e of n){let n=(0,l.getPluginFromInput)(e);t._wrapRegisterHandler(n)}else{let e=(0,l.getPluginFromInput)(n);t._wrapRegisterHandler(e)}return e.apply(this,[n,r])}}_getServerExtPatch(e,t){let n=this;return function(...r){if(Array.isArray(r[0])){let e=r[0];for(let r=0;rt._getServerRoutePatch.bind(t)(e,n)),o._wrap(e,"ext",e=>t._getServerExtPatch.bind(t)(e,n)),r.call(this,e,i)}}_wrapExtMethods(e,t,n){let o=this;if(e instanceof Array)for(let n=0;nasync function(...a){if(void 0===r.trace.getSpan(r.context.active()))return await i.call(this,...a);let s=(0,o.getRPCMetadata)(r.context.active());s?.type===o.RPCType.HTTP&&(s.route=e.path);let u=(0,l.getRouteMetadata)(e,n._semconvStability,t),c=n.tracer.startSpan(u.name,{attributes:u.attributes});try{return await r.context.with(r.trace.setSpan(r.context.active(),c),()=>i.call(this,...a))}catch(e){throw c.recordException(e),c.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),e}finally{c.end()}};if("function"==typeof e.handler)e.handler=i(e.handler);else if("function"==typeof e.options){let t=e.options;e.options=function(e){let n=t(e);return"function"==typeof n.handler&&(n.handler=i(n.handler)),n}}else"function"==typeof e.options?.handler&&(e.options.handler=i(e.options.handler));return e}}n.HapiInstrumentation=u},144297,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.HapiInstrumentation=void 0;var r=e.r(345301);Object.defineProperty(n,"HapiInstrumentation",{enumerable:!0,get:function(){return r.HapiInstrumentation}});var o=e.r(180434);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}})},376169,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(144297),o=e.r(976285),i=e.r(625331),a=e.r(866779),s="Hapi",l=i.generateInstrumentOnce(s,()=>new r.HapiInstrumentation),u=o.defineIntegration(()=>({name:s,setupOnce(){l()}})),c={name:"SentryHapiErrorPlugin",version:o.SDK_VERSION,register:async function(e){e.events.on({name:"request",channels:["error"]},(e,t)=>{var n;if(o.getIsolationScope()!==o.getDefaultIsolationScope()){let t=e.route;t.path&&o.getIsolationScope().setTransactionName(`${t.method.toUpperCase()} ${t.path}`)}else a.DEBUG_BUILD&&o.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");t&&"object"==typeof t&&"error"in t&&t.error&&(n=t.error,o.captureException(n,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function p(e){await e.register(c);let t=o.getClient();t&&t.on("spanStart",e=>{var t;let n,r;t=e,r=(n=o.spanToJSON(t).data)["hapi.type"],!n[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&r&&t.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${r}.hapi`})}),i.ensureIsWrapped(e.register,"hapi")}n.hapiErrorPlugin=c,n.hapiIntegration=u,n.instrumentHapi=l,n.setupHapiErrorHandler=p},212994,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},n.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},29288,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780),i=e.r(976285),a=e.r(212994);class s extends o.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-hono","0.0.1",e)}init(){return[new o.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],e=>this._patch(e))]}_patch(e){let t=this;class n extends e.Hono{constructor(...e){super(...e),t._wrap(this,"get",t._patchHandler()),t._wrap(this,"post",t._patchHandler()),t._wrap(this,"put",t._patchHandler()),t._wrap(this,"delete",t._patchHandler()),t._wrap(this,"options",t._patchHandler()),t._wrap(this,"patch",t._patchHandler()),t._wrap(this,"all",t._patchHandler()),t._wrap(this,"on",t._patchOnHandler()),t._wrap(this,"use",t._patchMiddlewareHandler())}}try{e.Hono=n}catch{return{...e,Hono:n}}return e}_patchHandler(){let e=this;return function(t){return function(...n){if("string"==typeof n[0]){let r=n[0];if(1===n.length)return t.apply(this,[r]);let o=n.slice(1);return t.apply(this,[r,...o.map(t=>e._wrapHandler(t))])}return t.apply(this,n.map(t=>e._wrapHandler(t)))}}}_patchOnHandler(){let e=this;return function(t){return function(...n){let r=n.slice(2);return t.apply(this,[...n.slice(0,2),...r.map(t=>e._wrapHandler(t))])}}}_patchMiddlewareHandler(){let e=this;return function(t){return function(...n){if("string"==typeof n[0]){let r=n[0];if(1===n.length)return t.apply(this,[r]);let o=n.slice(1);return t.apply(this,[r,...o.map(t=>e._wrapHandler(t))])}return t.apply(this,n.map(t=>e._wrapHandler(t)))}}}_wrapHandler(e){let t=this;return function(n,o){if(!t.isEnabled())return e.apply(this,[n,o]);let s=n.req.path,l=t.tracer.startSpan(s);return r.context.with(r.trace.setSpan(r.context.active(),l),()=>t._safeExecute(()=>{let r=e.apply(this,[n,o]);if(i.isThenable(r))return r.then(n=>{let r=t._determineHandlerType(n);return l.setAttributes({[a.AttributeNames.HONO_TYPE]:r,[a.AttributeNames.HONO_NAME]:r===a.HonoTypes.REQUEST_HANDLER?s:e.name||"anonymous"}),t.getConfig().responseHook?.(l),n});{let n=t._determineHandlerType(r);return l.setAttributes({[a.AttributeNames.HONO_TYPE]:n,[a.AttributeNames.HONO_NAME]:n===a.HonoTypes.REQUEST_HANDLER?s:e.name||"anonymous"}),t.getConfig().responseHook?.(l),r}},()=>l.end(),e=>{t._handleError(l,e),l.end()}))}}_safeExecute(e,t,n){try{let r=e();return i.isThenable(r)?r.then(()=>t(),e=>n(e)):t(),r}catch(e){throw n(e),e}}_determineHandlerType(e){return void 0===e?a.HonoTypes.MIDDLEWARE:a.HonoTypes.REQUEST_HANDLER}_handleError(e,t){t instanceof Error&&(e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.recordException(t))}}n.HonoInstrumentation=s},688750,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(625331),a=e.r(866779),s=e.r(212994),l=e.r(29288),u="Hono",c=i.generateInstrumentOnce(u,()=>new l.HonoInstrumentation({responseHook:e=>{!function(e){let t=o.spanToJSON(e).data,n=t[s.AttributeNames.HONO_TYPE];if(t[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.hono`});let i=t[s.AttributeNames.HONO_NAME];if("string"==typeof i&&e.updateName(i),o.getIsolationScope()===o.getDefaultIsolationScope()){a.DEBUG_BUILD&&o.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let l=t[r.ATTR_HTTP_ROUTE],u=t[r.ATTR_HTTP_REQUEST_METHOD];"string"==typeof l&&"string"==typeof u&&o.getIsolationScope().setTransactionName(`${u} ${l}`)}(e)}})),p=o.defineIntegration(()=>({name:u,setupOnce(){c()}}));n.honoIntegration=p,n.instrumentHono=c,n.setupHonoErrorHandler=function(e,t){e.use(async function(e,t){let n=o.httpRequestToRequestData(e.req);o.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:n}),await t()}),e.use(async function(e,n){await n(),(t?.shouldHandleError||function(e){return e.res.status>=500})(e)&&(e.res.sentry=o.captureException(e.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),i.ensureIsWrapped(e.use,"hono")}},476528,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.KoaLayerType=void 0,(r=n.KoaLayerType||(n.KoaLayerType={})).ROUTER="router",r.MIDDLEWARE="middleware"},61353,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},259134,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).KOA_TYPE="koa.type",r.KOA_NAME="koa.name"},327028,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isLayerIgnored=n.getMiddlewareMetadata=void 0;let r=e.r(476528),o=e.r(259134),i=e.r(808119);n.getMiddlewareMetadata=(e,t,n,a)=>n?{attributes:{[o.AttributeNames.KOA_NAME]:a?.toString(),[o.AttributeNames.KOA_TYPE]:r.KoaLayerType.ROUTER,[i.ATTR_HTTP_ROUTE]:a?.toString()},name:e._matchedRouteName||`router - ${a}`}:{attributes:{[o.AttributeNames.KOA_NAME]:t.name??"middleware",[o.AttributeNames.KOA_TYPE]:r.KoaLayerType.MIDDLEWARE},name:`middleware - ${t.name}`},n.isLayerIgnored=(e,t)=>!!(Array.isArray(t?.ignoreLayersType)&&t?.ignoreLayersType?.includes(e))},780039,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.kLayerPatched=void 0,n.kLayerPatched=Symbol("koa-layer-patched")},166165,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KoaInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(476528),a=e.r(61353),s=e.r(327028),l=e.r(385692),u=e.r(780039);class c extends o.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return new o.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;return null==t?t:((0,o.isWrapped)(t.prototype.use)&&this._unwrap(t.prototype,"use"),this._wrap(t.prototype,"use",this._getKoaUsePatch.bind(this)),e)},e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;(0,o.isWrapped)(t.prototype.use)&&this._unwrap(t.prototype,"use")})}_getKoaUsePatch(e){let t=this;return function(n){let r;return r=n.router?t._patchRouterDispatch(n):t._patchLayer(n,!1),e.apply(this,[r])}}_patchRouterDispatch(e){r.diag.debug("Patching @koa/router dispatch");let t=e.router;for(let e of t?.stack??[]){let t=e.path,n=e.stack;for(let e=0;e{if(void 0===r.trace.getSpan(r.context.active()))return e(i,u);let c=(0,s.getMiddlewareMetadata)(i,e,t,n),p=this.tracer.startSpan(c.name,{attributes:c.attributes}),_=(0,l.getRPCMetadata)(r.context.active());_?.type===l.RPCType.HTTP&&i._matchedRoute&&(_.route=i._matchedRoute.toString());let{requestHook:T}=this.getConfig();T&&(0,o.safeExecuteInTheMiddle)(()=>T(p,{context:i,middlewareLayer:e,layerType:a}),e=>{e&&r.diag.error("koa instrumentation: request hook failed",e)},!0);let d=r.trace.setSpan(r.context.active(),p);return r.context.with(d,async()=>{try{return await e(i,u)}catch(e){throw p.recordException(e),e}finally{p.end()}})})}}n.KoaInstrumentation=c},891732,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KoaLayerType=n.AttributeNames=n.KoaInstrumentation=void 0;var r=e.r(166165);Object.defineProperty(n,"KoaInstrumentation",{enumerable:!0,get:function(){return r.KoaInstrumentation}});var o=e.r(259134);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}});var i=e.r(476528);Object.defineProperty(n,"KoaLayerType",{enumerable:!0,get:function(){return i.KoaLayerType}})},86294,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(891732),o=e.r(808119),i=e.r(976285),a=e.r(625331),s=e.r(866779),l=a.generateInstrumentOnce("Koa",r.KoaInstrumentation,(e={})=>({ignoreLayersType:e.ignoreLayersType,requestHook(e,t){a.addOriginToSpan(e,"auto.http.otel.koa");let n=i.spanToJSON(e).data,r=n["koa.type"];r&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${r}.koa`);let l=n["koa.name"];if("string"==typeof l&&e.updateName(l||"< unknown >"),i.getIsolationScope()===i.getDefaultIsolationScope()){s.DEBUG_BUILD&&i.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let u=n[o.ATTR_HTTP_ROUTE],c=t.context?.request?.method?.toUpperCase()||"GET";u&&i.getIsolationScope().setTransactionName(`${c} ${u}`)}})),u=i.defineIntegration((e={})=>({name:"Koa",setupOnce(){l(e)}}));n.instrumentKoa=l,n.koaIntegration=u,n.setupKoaErrorHandler=e=>{e.use(async(e,t)=>{try{await t()}catch(e){throw i.captureException(e,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),e}}),a.ensureIsWrapped(e.use,"koa")}},737439,(e,t,n)=>{"use strict";var r,o,i;Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectNames=n.ConnectTypes=n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).CONNECT_TYPE="connect.type",r.CONNECT_NAME="connect.name",(o=n.ConnectTypes||(n.ConnectTypes={})).MIDDLEWARE="middleware",o.REQUEST_HANDLER="request_handler",(i=n.ConnectNames||(n.ConnectNames={})).MIDDLEWARE="middleware",i.REQUEST_HANDLER="request handler"},927690,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.57.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},783486,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n._LAYERS_STORE_PROPERTY=void 0,n._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},674147,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.generateRoute=n.replaceCurrentStackRoute=n.addNewStackLayer=void 0;let r=e.r(357762),o=e.r(783486);n.addNewStackLayer=e=>{!1===Array.isArray(e[o._LAYERS_STORE_PROPERTY])&&Object.defineProperty(e,o._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),e[o._LAYERS_STORE_PROPERTY].push("/");let t=e[o._LAYERS_STORE_PROPERTY].length;return()=>{t===e[o._LAYERS_STORE_PROPERTY].length?e[o._LAYERS_STORE_PROPERTY].pop():r.diag.warn("Connect: Trying to pop the stack multiple time")}},n.replaceCurrentStackRoute=(e,t)=>{t&&e[o._LAYERS_STORE_PROPERTY].splice(-1,1,t)},n.generateRoute=e=>e[o._LAYERS_STORE_PROPERTY].reduce((e,t)=>e.replace(/\/+$/,"")+t)},683741,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectInstrumentation=n.ANONYMOUS_NAME=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(737439),a=e.r(927690),s=e.r(204780),l=e.r(808119),u=e.r(674147);n.ANONYMOUS_NAME="anonymous";class c extends s.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return[new s.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],e=>this._patchConstructor(e))]}_patchApp(e){(0,s.isWrapped)(e.use)||this._wrap(e,"use",this._patchUse.bind(this)),(0,s.isWrapped)(e.handle)||this._wrap(e,"handle",this._patchHandle.bind(this))}_patchConstructor(e){let t=this;return function(...n){let r=e.apply(this,n);return t._patchApp(r),r}}_patchNext(e,t){return function(n){let r=e.apply(this,[n]);return t(),r}}_startSpan(e,t){let r,o,a;e?(r=i.ConnectTypes.REQUEST_HANDLER,a=i.ConnectNames.REQUEST_HANDLER,o=e):(r=i.ConnectTypes.MIDDLEWARE,a=i.ConnectNames.MIDDLEWARE,o=t.name||n.ANONYMOUS_NAME);let s=`${a} - ${o}`,u={attributes:{[l.ATTR_HTTP_ROUTE]:e.length>0?e:"/",[i.AttributeNames.CONNECT_TYPE]:r,[i.AttributeNames.CONNECT_NAME]:o}};return this.tracer.startSpan(s,u)}_patchMiddleware(e,t){let i=this,a=4===t.length;function s(){if(!i.isEnabled())return t.apply(this,arguments);let[s,l,c]=a?[1,2,3]:[0,1,2],p=arguments[s],_=arguments[l],T=arguments[c];(0,u.replaceCurrentStackRoute)(p,e);let d=(0,o.getRPCMetadata)(r.context.active());e&&d?.type===o.RPCType.HTTP&&(d.route=(0,u.generateRoute)(p));let E="";E=e?`request handler - ${e}`:`middleware - ${t.name||n.ANONYMOUS_NAME}`;let S=i._startSpan(e,t);i._diag.debug("start span",E);let A=!1;function g(){A?i._diag.debug(`span ${S.name} - already finished`):(A=!0,i._diag.debug(`finishing span ${S.name}`),S.end()),_.removeListener("close",g)}return _.addListener("close",g),arguments[c]=i._patchNext(T,g),t.apply(this,arguments)}return Object.defineProperty(s,"length",{value:t.length,writable:!1,configurable:!0}),s}_patchUse(e){let t=this;return function(...n){let r=n[n.length-1],o=n[n.length-2]||"";return n[n.length-1]=t._patchMiddleware(o,r),e.apply(this,n)}}_patchHandle(e){let t=this;return function(){let[n,r]=[0,2],o=arguments[n],i=arguments[r],a=(0,u.addNewStackLayer)(o);return"function"==typeof i&&(arguments[r]=t._patchOut(i,a)),e.apply(this,arguments)}}_patchOut(e,t){return function(...n){return t(),Reflect.apply(e,this,n)}}}n.ConnectInstrumentation=c},13613,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectTypes=n.ConnectNames=n.AttributeNames=n.ANONYMOUS_NAME=n.ConnectInstrumentation=void 0;var r=e.r(683741);Object.defineProperty(n,"ConnectInstrumentation",{enumerable:!0,get:function(){return r.ConnectInstrumentation}}),Object.defineProperty(n,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return r.ANONYMOUS_NAME}});var o=e.r(737439);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}}),Object.defineProperty(n,"ConnectNames",{enumerable:!0,get:function(){return o.ConnectNames}}),Object.defineProperty(n,"ConnectTypes",{enumerable:!0,get:function(){return o.ConnectTypes}})},953027,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(13613),o=e.r(976285),i=e.r(625331),a="Connect",s=i.generateInstrumentOnce(a,()=>new r.ConnectInstrumentation);function l(e,t,n,r){o.captureException(e,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),r(e)}n.connectIntegration=o.defineIntegration(()=>({name:a,setupOnce(){s()}})),n.instrumentConnect=s,n.setupConnectErrorHandler=e=>{e.use(l);let t=o.getClient();t&&t.on("spanStart",e=>{!function(e){let t=o.spanToJSON(e).data,n=t["connect.type"];if(t[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.connect`});let r=t["connect.name"];"string"==typeof r&&e.updateName(r)}(e)}),i.ensureIsWrapped(e.use,"connect")}},210033,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.58.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},312058,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SUPPORTED_VERSIONS=n.MODULE_NAME=void 0,n.MODULE_NAME="knex",n.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},77979,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_NAME_VALUE_SQLITE=n.ATTR_NET_TRANSPORT=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_SQL_TABLE=n.ATTR_DB_OPERATION=n.ATTR_DB_NAME=void 0,n.ATTR_DB_NAME="db.name",n.ATTR_DB_OPERATION="db.operation",n.ATTR_DB_SQL_TABLE="db.sql.table",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.ATTR_NET_TRANSPORT="net.transport",n.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},113622,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.extractTableName=n.extractPortFromConnectionString=n.extractHostFromConnectionString=n.extractDatabaseFromConnectionString=n.limitLength=n.getName=n.mapSystem=n.otelExceptionFromKnexError=n.getFormatter=void 0;let r=e.r(808119),o=e.r(77979);n.getFormatter=e=>{if(e){if(e.client){if(e.client._formatQuery)return e.client._formatQuery.bind(e.client);else if(e.client.SqlString)return e.client.SqlString.format.bind(e.client.SqlString)}if(e.builder)return e.builder.toString.bind(e.builder)}return()=>""},n.otelExceptionFromKnexError=function(e,t){return e&&e instanceof Error?{message:t,code:e.code,stack:e.stack,name:e.name}:e};let i=new Map([["sqlite3",o.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",r.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);n.mapSystem=e=>i.get(e)||e,n.getName=(e,t,n)=>t?n?`${t} ${e}.${n}`:`${t} ${e}`:e,n.limitLength=(e,t)=>"string"==typeof e&&"number"==typeof t&&0{if(e)try{return new URL(e).pathname?.replace(/^\//,"")||void 0}catch{return}},n.extractHostFromConnectionString=e=>{if(e)try{return new URL(e).hostname||void 0}catch{return}},n.extractPortFromConnectionString=e=>{if(e)try{let t=new URL(e).port;return t?parseInt(t,10):void 0}catch{return}},n.extractTableName=e=>{let t=e?._single?.table;return"object"==typeof t?(0,n.extractTableName)(t):t}},730413,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KnexInstrumentation=void 0;let r=e.r(357762),o=e.r(210033),i=e.r(312058),a=e.r(204780),s=e.r(113622),l=e.r(808119),u=e.r(77979),c=Symbol("opentelemetry.instrumentation-knex.context"),p={maxQueryLength:1022,requireParentSpan:!1};class _ extends a.InstrumentationBase{_semconvStability;constructor(e={}){super(o.PACKAGE_NAME,o.PACKAGE_VERSION,{...p,...e}),this._semconvStability=(0,a.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...p,...e})}init(){let e=new a.InstrumentationNodeModuleDefinition(i.MODULE_NAME,i.SUPPORTED_VERSIONS);return e.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),e}getRunnerNodeModuleFileInstrumentation(e){return new a.InstrumentationNodeModuleFile(`knex/${e}/runner.js`,i.SUPPORTED_VERSIONS,(e,t)=>(this.ensureWrapped(e.prototype,"query",this.createQueryWrapper(t)),e),(e,t)=>(this._unwrap(e.prototype,"query"),e))}getClientNodeModuleFileInstrumentation(e){return new a.InstrumentationNodeModuleFile(`knex/${e}/client.js`,i.SUPPORTED_VERSIONS,e=>(this.ensureWrapped(e.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(e.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(e.prototype,"raw",this.storeContext.bind(this)),e),e=>(this._unwrap(e.prototype,"queryBuilder"),this._unwrap(e.prototype,"schemaBuilder"),this._unwrap(e.prototype,"raw"),e))}createQueryWrapper(e){let t=this;return function(n){return function(o){let i=this.client.config,p=s.extractTableName(this.builder),_=o?.method,T=i?.connection?.connectionString,d=i?.connection?.filename||i?.connection?.database||s.extractDatabaseFromConnectionString(T),{maxQueryLength:E}=t.getConfig(),S={"knex.version":e},A=i?.connection?.filename===":memory:"?"inproc":void 0;if(t._semconvStability&a.SemconvStability.OLD&&Object.assign(S,{[u.ATTR_DB_SYSTEM]:s.mapSystem(this.client.driverName),[u.ATTR_DB_SQL_TABLE]:p,[u.ATTR_DB_OPERATION]:_,[u.ATTR_DB_USER]:i?.connection?.user,[u.ATTR_DB_NAME]:d,[u.ATTR_NET_PEER_NAME]:i?.connection?.host??s.extractHostFromConnectionString(T),[u.ATTR_NET_PEER_PORT]:i?.connection?.port??s.extractPortFromConnectionString(T),[u.ATTR_NET_TRANSPORT]:A}),t._semconvStability&a.SemconvStability.STABLE&&Object.assign(S,{[l.ATTR_DB_SYSTEM_NAME]:s.mapSystem(this.client.driverName),[l.ATTR_DB_COLLECTION_NAME]:p,[l.ATTR_DB_OPERATION_NAME]:_,[l.ATTR_DB_NAMESPACE]:d,[l.ATTR_SERVER_ADDRESS]:i?.connection?.host??s.extractHostFromConnectionString(T),[l.ATTR_SERVER_PORT]:i?.connection?.port??s.extractPortFromConnectionString(T)}),E){let e=s.limitLength(o?.sql,E);t._semconvStability&a.SemconvStability.STABLE&&(S[l.ATTR_DB_QUERY_TEXT]=e),t._semconvStability&a.SemconvStability.OLD&&(S[u.ATTR_DB_STATEMENT]=e)}let g=this.builder[c]||r.context.active(),m=r.trace.getSpan(g),h=m&&r.trace.isSpanContextValid(m.spanContext());if(t._config.requireParentSpan&&!h)return n.bind(this)(...arguments);let R=t.tracer.startSpan(s.getName(d,_,p),{kind:r.SpanKind.CLIENT,attributes:S},g),f=r.trace.setSpan(r.context.active(),R);return r.context.with(f,n,this,...arguments).then(e=>(R.end(),e)).catch(e=>{let t=s.getFormatter(this)(o.sql,o.bindings||[]),n=e.message.replace(t+" - ",""),i=s.otelExceptionFromKnexError(e,n);throw R.recordException(i),R.setStatus({code:r.SpanStatusCode.ERROR,message:n}),R.end(),e})}}}storeContext(e){return function(){let t=e.apply(this,arguments);return Object.defineProperty(t,c,{value:r.context.active()}),t}}ensureWrapped(e,t,n){(0,a.isWrapped)(e[t])&&this._unwrap(e,t),this._wrap(e,t,n)}}n.KnexInstrumentation=_},618728,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KnexInstrumentation=void 0;var r=e.r(730413);Object.defineProperty(n,"KnexInstrumentation",{enumerable:!0,get:function(){return r.KnexInstrumentation}})},823099,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(618728),o=e.r(976285),i=e.r(625331),a="Knex",s=i.generateInstrumentOnce(a,()=>new r.KnexInstrumentation({requireParentSpan:!0})),l=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let{data:t}=o.spanToJSON(e);"knex.version"in t&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});n.instrumentKnex=s,n.knexIntegration=l},749620,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_MSSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_SQL_TABLE=n.ATTR_DB_NAME=void 0,n.ATTR_DB_NAME="db.name",n.ATTR_DB_SQL_TABLE="db.sql.table",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MSSQL="mssql"},224620,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.once=n.getSpanName=void 0,n.getSpanName=function(e,t,n,r){return"execBulkLoad"===e&&r&&t?`${e} ${r} ${t}`:"callProcedure"===e?t?`${e} ${n} ${t}`:`${e} ${n}`:t?`${e} ${t}`:`${e}`},n.once=e=>{let t=!1;return(...n)=>{if(!t)return t=!0,e(...n)}}},104038,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.33.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},189155,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TediousInstrumentation=n.INJECTED_CTX=void 0;let r=e.r(357762),o=e.r(427699),i=e.r(204780),a=e.r(808119),s=e.r(749620),l=e.r(224620),u=e.r(104038),c=Symbol("opentelemetry.instrumentation-tedious.current-database");n.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let p=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function _(e){Object.defineProperty(this,c,{value:e,writable:!0})}class T extends i.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,i.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new i.InstrumentationNodeModuleDefinition(T.COMPONENT,[">=1.11.0 <20"],e=>{let t=e.Connection.prototype;for(let n of p)(0,i.isWrapped)(t[n])&&this._unwrap(t,n),this._wrap(t,n,this._patchQuery(n,e));return(0,i.isWrapped)(t.connect)&&this._unwrap(t,"connect"),this._wrap(t,"connect",this._patchConnect),e},e=>{if(void 0===e)return;let t=e.Connection.prototype;for(let e of p)this._unwrap(t,e);this._unwrap(t,"connect")})]}_patchConnect(e){return function(){return _.call(this,this.config?.options?.database),this.removeListener("databaseChange",_),this.on("databaseChange",_),this.once("end",()=>{this.removeListener("databaseChange",_)}),e.apply(this,arguments)}}_buildTraceparent(e){let t=e.spanContext();return`00-${t.traceId}-${t.spanId}-0${Number(t.traceFlags||r.TraceFlags.NONE).toString(16)}`}_injectContextInfo(e,t,r){return new Promise(o=>{try{let i=new t.Request("set context_info @opentelemetry_traceparent",e=>{o()});Object.defineProperty(i,n.INJECTED_CTX,{value:!0});let a=Buffer.from(r,"utf8");i.addParameter("opentelemetry_traceparent",t.TYPES.VarBinary,a,{length:a.length}),e.execSql(i)}catch{o()}})}_shouldInjectFor(e){return"execSql"===e||"execSqlBatch"===e||"callProcedure"===e||"execute"===e}_patchQuery(e,t){return u=>{let p=this;function _(_){if(_?.[n.INJECTED_CTX])return u.apply(this,arguments);if(!(_ instanceof o.EventEmitter))return p._diag.warn(`Unexpected invocation of patched ${e} method. Span not recorded`),u.apply(this,arguments);let T=0,d=0,E=()=>d++,S=()=>T++,A=this[c],g="sp_prepare"===_.sqlTextOrProcedure&&_.parametersByName?.stmt?.value?_.parametersByName.stmt.value:_.sqlTextOrProcedure,m={};p._dbSemconvStability&i.SemconvStability.OLD&&(m[s.ATTR_DB_SYSTEM]=s.DB_SYSTEM_VALUE_MSSQL,m[s.ATTR_DB_NAME]=A,m[s.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,m[s.ATTR_DB_STATEMENT]=g,m[s.ATTR_DB_SQL_TABLE]=_.table),p._dbSemconvStability&i.SemconvStability.STABLE&&(m[a.ATTR_DB_NAMESPACE]=A,m[a.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,m[a.ATTR_DB_QUERY_TEXT]=g,m[a.ATTR_DB_COLLECTION_NAME]=_.table),p._netSemconvStability&i.SemconvStability.OLD&&(m[s.ATTR_NET_PEER_NAME]=this.config?.server,m[s.ATTR_NET_PEER_PORT]=this.config?.options?.port),p._netSemconvStability&i.SemconvStability.STABLE&&(m[a.ATTR_SERVER_ADDRESS]=this.config?.server,m[a.ATTR_SERVER_PORT]=this.config?.options?.port);let h=p.tracer.startSpan((0,l.getSpanName)(e,A,g,_.table),{kind:r.SpanKind.CLIENT,attributes:m}),R=(0,l.once)(e=>{_.removeListener("done",E),_.removeListener("doneInProc",E),_.removeListener("doneProc",S),_.removeListener("error",R),this.removeListener("end",R),h.setAttribute("tedious.procedure_count",T),h.setAttribute("tedious.statement_count",d),e&&h.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),h.end()});_.on("done",E),_.on("doneInProc",E),_.on("doneProc",S),_.once("error",R),this.on("end",R),"function"==typeof _.callback?p._wrap(_,"callback",p._patchCallbackQuery(R)):p._diag.error("Expected request.callback to be a function");let f=()=>r.context.with(r.trace.setSpan(r.context.active(),h),u,this,...arguments);if(!(p.getConfig().enableTraceContextPropagation&&p._shouldInjectFor(e)))return f();let N=p._buildTraceparent(h);p._injectContextInfo(this,t,N).finally(f)}return Object.defineProperty(_,"length",{value:u.length,writable:!1}),_}}_patchCallbackQuery(e){return t=>function(n,r,o){return e(n),t.apply(this,arguments)}}}n.TediousInstrumentation=T},537920,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TediousInstrumentation=void 0;var r=e.r(189155);Object.defineProperty(n,"TediousInstrumentation",{enumerable:!0,get:function(){return r.TediousInstrumentation}})},946603,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(537920),o=e.r(976285),i=e.r(625331),a=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),s="Tedious",l=i.generateInstrumentOnce(s,()=>new r.TediousInstrumentation({})),u=o.defineIntegration(()=>{let e;return{name:s,setupOnce(){let t=l();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let{description:t,data:n}=o.spanToJSON(e);if(!t||"mssql"!==n["db.system"])return;let r=t.split(" ")[0]||"";a.has(r)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});n.instrumentTedious=l,n.tediousIntegration=u},171476,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.57.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},936981,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GenericPoolInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(171476),a="generic-pool";class s extends o.InstrumentationBase{_isDisabled=!1;constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new o.InstrumentationNodeModuleDefinition(a,[">=3.0.0 <4"],e=>{let t=e.Pool;return(0,o.isWrapped)(t.prototype.acquire)&&this._unwrap(t.prototype,"acquire"),this._wrap(t.prototype,"acquire",this._acquirePatcher.bind(this)),e},e=>{let t=e.Pool;return this._unwrap(t.prototype,"acquire"),e}),new o.InstrumentationNodeModuleDefinition(a,[">=2.4.0 <3"],e=>{let t=e.Pool;return(0,o.isWrapped)(t.prototype.acquire)&&this._unwrap(t.prototype,"acquire"),this._wrap(t.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),e},e=>{let t=e.Pool;return this._unwrap(t.prototype,"acquire"),e}),new o.InstrumentationNodeModuleDefinition(a,[">=2.0.0 <2.4"],e=>(this._isDisabled=!1,(0,o.isWrapped)(e.Pool)&&this._unwrap(e,"Pool"),this._wrap(e,"Pool",this._poolWrapper.bind(this)),e),e=>(this._isDisabled=!0,e))]}_acquirePatcher(e){let t=this;return function(...n){let o=r.context.active(),i=t.tracer.startSpan("generic-pool.acquire",{},o);return r.context.with(r.trace.setSpan(o,i),()=>e.call(this,...n).then(e=>(i.end(),e),e=>{throw i.recordException(e),i.end(),e}))}}_poolWrapper(e){let t=this;return function(){let n=e.apply(this,arguments);return t._wrap(n,"acquire",t._acquireWithCallbacksPatcher.bind(t)),n}}_acquireWithCallbacksPatcher(e){let t=this;return function(n,o){if(t._isDisabled)return e.call(this,n,o);let i=r.context.active(),a=t.tracer.startSpan("generic-pool.acquire",{},i);return r.context.with(r.trace.setSpan(i,a),()=>{e.call(this,(e,t)=>{if(a.end(),n)return n(e,t)},o)})}}}n.GenericPoolInstrumentation=s},802638,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GenericPoolInstrumentation=void 0;var r=e.r(936981);Object.defineProperty(n,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return r.GenericPoolInstrumentation}})},979396,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(802638),o=e.r(976285),i=e.r(625331),a="GenericPool",s=i.generateInstrumentOnce(a,()=>new r.GenericPoolInstrumentation({}));n.genericPoolIntegration=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let t=o.spanToJSON(e).description;("generic-pool.aquire"===t||"generic-pool.acquire"===t)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),n.instrumentGenericPool=s},624905,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.31.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},56741,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataloaderInstrumentation=void 0;let r=e.r(204780),o=e.r(357762),i=e.r(624905),a="dataloader";function s(e){return"Module"===e[Symbol.toStringTag]?e.default:e}class l extends r.InstrumentationBase{constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new r.InstrumentationNodeModuleDefinition(a,[">=2.0.0 <3"],e=>{let t=s(e);return this._patchLoad(t.prototype),this._patchLoadMany(t.prototype),this._patchPrime(t.prototype),this._patchClear(t.prototype),this._patchClearAll(t.prototype),this._getPatchedConstructor(t)},e=>{let t=s(e);["load","loadMany","prime","clear","clearAll"].forEach(e=>{(0,r.isWrapped)(t.prototype[e])&&this._unwrap(t.prototype,e)})})]}shouldCreateSpans(){let e=this.getConfig();return void 0!==o.trace.getSpan(o.context.active())||!e.requireParentSpan}getSpanName(e,t){let n=e.name;return null==n?`${a}.${t}`:`${a}.${t} ${n}`}_wrapBatchLoadFn(e){let t=this;return function(...n){if(!t.isEnabled()||!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"batch"),{links:this._batch?.spanLinks},r);return o.context.with(o.trace.setSpan(r,i),()=>e.apply(this,n).then(e=>(i.end(),e)).catch(e=>{throw i.recordException(e),i.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),i.end(),e}))}}_getPatchedConstructor(e){let t=this,n=e.prototype;if(!t.isEnabled())return e;function o(...n){return"function"==typeof n[0]&&((0,r.isWrapped)(n[0])&&t._unwrap(n,0),n[0]=t._wrapBatchLoadFn(n[0])),e.apply(this,n)}return o.prototype=n,o}_patchLoad(e){(0,r.isWrapped)(e.load)&&this._unwrap(e,"load"),this._wrap(e,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"load"),{kind:o.SpanKind.CLIENT},r);return o.context.with(o.trace.setSpan(r,i),()=>{let t=e.call(this,...n).then(e=>(i.end(),e)).catch(e=>{throw i.recordException(e),i.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),i.end(),e});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:i.spanContext()})),t})}}_patchLoadMany(e){(0,r.isWrapped)(e.loadMany)&&this._unwrap(e,"loadMany"),this._wrap(e,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"loadMany"),{kind:o.SpanKind.CLIENT},r);return o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n).then(e=>(i.end(),e)))}}_patchPrime(e){(0,r.isWrapped)(e.prime)&&this._unwrap(e,"prime"),this._wrap(e,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"prime"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}_patchClear(e){(0,r.isWrapped)(e.clear)&&this._unwrap(e,"clear"),this._wrap(e,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"clear"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}_patchClearAll(e){(0,r.isWrapped)(e.clearAll)&&this._unwrap(e,"clearAll"),this._wrap(e,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"clearAll"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}}n.DataloaderInstrumentation=l},228251,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataloaderInstrumentation=void 0;var r=e.r(56741);Object.defineProperty(n,"DataloaderInstrumentation",{enumerable:!0,get:function(){return r.DataloaderInstrumentation}})},363082,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(228251),o=e.r(976285),i=e.r(625331),a="Dataloader",s=i.generateInstrumentOnce(a,()=>new r.DataloaderInstrumentation({requireParentSpan:!0}));n.dataloaderIntegration=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>{t.on("spanStart",e=>{let t=o.spanToJSON(e);t.description?.startsWith("dataloader")&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===t.description||"dataloader.loadMany"===t.description||"dataloader.batch"===t.description)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),n.instrumentDataloader=s},58684,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_MESSAGING_SYSTEM=n.ATTR_MESSAGING_OPERATION=void 0,n.ATTR_MESSAGING_OPERATION="messaging.operation",n.ATTR_MESSAGING_SYSTEM="messaging.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port"},980159,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_MESSAGING_CONVERSATION_ID=n.OLD_ATTR_MESSAGING_MESSAGE_ID=n.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=n.ATTR_MESSAGING_URL=n.ATTR_MESSAGING_PROTOCOL_VERSION=n.ATTR_MESSAGING_PROTOCOL=n.MESSAGING_OPERATION_VALUE_PROCESS=n.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=n.ATTR_MESSAGING_DESTINATION_KIND=n.ATTR_MESSAGING_DESTINATION=void 0,n.ATTR_MESSAGING_DESTINATION="messaging.destination",n.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",n.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",n.MESSAGING_OPERATION_VALUE_PROCESS="process",n.ATTR_MESSAGING_PROTOCOL="messaging.protocol",n.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",n.ATTR_MESSAGING_URL="messaging.url",n.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",n.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",n.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},650834,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CONFIG=n.EndOperation=void 0,(r=n.EndOperation||(n.EndOperation={})).AutoAck="auto ack",r.Ack="ack",r.AckAll="ackAll",r.Reject="reject",r.Nack="nack",r.NackAll="nackAll",r.ChannelClosed="channel closed",r.ChannelError="channel error",r.InstrumentationTimeout="instrumentation timeout",n.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},959801,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isConfirmChannelTracing=n.unmarkConfirmChannelTracing=n.markConfirmChannelTracing=n.getConnectionAttributesFromUrl=n.getConnectionAttributesFromServer=n.normalizeExchange=n.CONNECTION_ATTRIBUTES=n.CHANNEL_CONSUME_TIMEOUT_TIMER=n.CHANNEL_SPANS_NOT_ENDED=n.MESSAGE_STORED_SPAN=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(58684),s=e.r(980159);n.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),n.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),n.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),n.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let l=(0,r.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");n.normalizeExchange=e=>""!==e?e:"";let u=(e,t)=>e||("AMQP"===t?5672:5671),c=e=>{let t=e||"amqp";return(t.endsWith(":")?t.substring(0,t.length-1):t).toUpperCase()},p=(e,t,n,o)=>n?{[t]:n}:(r.diag.error(`amqplib instrumentation: could not extract connection attribute ${o} from user supplied url`,{url:e}),{});n.getConnectionAttributesFromServer=e=>{let t=e.serverProperties.product?.toLowerCase?.();return t?{[a.ATTR_MESSAGING_SYSTEM]:t}:{}},n.getConnectionAttributesFromUrl=(e,t)=>{let n={[s.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(e=e||"amqp://localhost")){let r=e,l=c(r?.protocol);Object.assign(n,{...p(e,s.ATTR_MESSAGING_PROTOCOL,l,"protocol")});let _=r?.hostname||"localhost";t&o.SemconvStability.OLD&&Object.assign(n,{...p(e,a.ATTR_NET_PEER_NAME,_,"hostname")}),t&o.SemconvStability.STABLE&&Object.assign(n,{...p(e,i.ATTR_SERVER_ADDRESS,_,"hostname")});let T=u(r.port,l);t&o.SemconvStability.OLD&&Object.assign(n,p(e,a.ATTR_NET_PEER_PORT,T,"port")),t&o.SemconvStability.STABLE&&Object.assign(n,p(e,i.ATTR_SERVER_PORT,T,"port"))}else{let l=e.replace(/:[^:@/]*@/,":***@");n[s.ATTR_MESSAGING_URL]=l;try{let e=new URL(l),r=c(e.protocol);Object.assign(n,{...p(l,s.ATTR_MESSAGING_PROTOCOL,r,"protocol")});let _=e.hostname||"localhost";t&o.SemconvStability.OLD&&Object.assign(n,{...p(l,a.ATTR_NET_PEER_NAME,_,"hostname")}),t&o.SemconvStability.STABLE&&Object.assign(n,{...p(l,i.ATTR_SERVER_ADDRESS,_,"hostname")});let T=u(e.port?parseInt(e.port):void 0,r);t&o.SemconvStability.OLD&&Object.assign(n,p(l,a.ATTR_NET_PEER_PORT,T,"port")),t&o.SemconvStability.STABLE&&Object.assign(n,p(l,i.ATTR_SERVER_PORT,T,"port"))}catch(e){r.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:l,err:e})}}return n},n.markConfirmChannelTracing=e=>e.setValue(l,!0),n.unmarkConfirmChannelTracing=e=>e.deleteValue(l),n.isConfirmChannelTracing=e=>!0===e.getValue(l)},36349,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.61.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},826845,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AmqplibInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(58684),s=e.r(980159),l=e.r(650834),u=e.r(959801),c=e.r(36349),p=[">=0.5.5 <1"];class _ extends i.InstrumentationBase{_netSemconvStability;constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...l.DEFAULT_CONFIG,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...l.DEFAULT_CONFIG,...e})}init(){let e=new i.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",p,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),t=new i.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",p,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),n=new i.InstrumentationNodeModuleFile("amqplib/lib/connect.js",p,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new i.InstrumentationNodeModuleDefinition("amqplib",p,void 0,void 0,[e,n,t])}patchConnect(e){return e=this.unpatchConnect(e),(0,i.isWrapped)(e.connect)||this._wrap(e,"connect",this.getConnectPatch.bind(this)),e}unpatchConnect(e){return(0,i.isWrapped)(e.connect)&&this._unwrap(e,"connect"),e}patchChannelModel(e,t){return(0,i.isWrapped)(e.Channel.prototype.publish)||this._wrap(e.Channel.prototype,"publish",this.getPublishPatch.bind(this,t)),(0,i.isWrapped)(e.Channel.prototype.consume)||this._wrap(e.Channel.prototype,"consume",this.getConsumePatch.bind(this,t)),(0,i.isWrapped)(e.Channel.prototype.ack)||this._wrap(e.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,l.EndOperation.Ack)),(0,i.isWrapped)(e.Channel.prototype.nack)||this._wrap(e.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,l.EndOperation.Nack)),(0,i.isWrapped)(e.Channel.prototype.reject)||this._wrap(e.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,l.EndOperation.Reject)),(0,i.isWrapped)(e.Channel.prototype.ackAll)||this._wrap(e.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,l.EndOperation.AckAll)),(0,i.isWrapped)(e.Channel.prototype.nackAll)||this._wrap(e.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,l.EndOperation.NackAll)),(0,i.isWrapped)(e.Channel.prototype.emit)||this._wrap(e.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,i.isWrapped)(e.ConfirmChannel.prototype.publish)||this._wrap(e.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,t)),e}unpatchChannelModel(e){return(0,i.isWrapped)(e.Channel.prototype.publish)&&this._unwrap(e.Channel.prototype,"publish"),(0,i.isWrapped)(e.Channel.prototype.consume)&&this._unwrap(e.Channel.prototype,"consume"),(0,i.isWrapped)(e.Channel.prototype.ack)&&this._unwrap(e.Channel.prototype,"ack"),(0,i.isWrapped)(e.Channel.prototype.nack)&&this._unwrap(e.Channel.prototype,"nack"),(0,i.isWrapped)(e.Channel.prototype.reject)&&this._unwrap(e.Channel.prototype,"reject"),(0,i.isWrapped)(e.Channel.prototype.ackAll)&&this._unwrap(e.Channel.prototype,"ackAll"),(0,i.isWrapped)(e.Channel.prototype.nackAll)&&this._unwrap(e.Channel.prototype,"nackAll"),(0,i.isWrapped)(e.Channel.prototype.emit)&&this._unwrap(e.Channel.prototype,"emit"),(0,i.isWrapped)(e.ConfirmChannel.prototype.publish)&&this._unwrap(e.ConfirmChannel.prototype,"publish"),e}getConnectPatch(e){let t=this;return function(n,r,o){return e.call(this,n,r,function(e,r){if(null==e){let e=(0,u.getConnectionAttributesFromUrl)(n,t._netSemconvStability),o=(0,u.getConnectionAttributesFromServer)(r);r[u.CONNECTION_ATTRIBUTES]={...e,...o}}o.apply(this,arguments)})}}getChannelEmitPatch(e){let t=this;return function(n){if("close"===n){t.endAllSpansOnChannel(this,!0,l.EndOperation.ChannelClosed,void 0);let e=this[u.CHANNEL_CONSUME_TIMEOUT_TIMER];e&&clearInterval(e),this[u.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===n&&t.endAllSpansOnChannel(this,!0,l.EndOperation.ChannelError,void 0);return e.apply(this,arguments)}}getAckAllPatch(e,t,n){let r=this;return function(o){return r.endAllSpansOnChannel(this,e,t,o),n.apply(this,arguments)}}getAckPatch(e,t,n){let r=this;return function(o,i,a){let s=t===l.EndOperation.Reject?i:a,c=this[u.CHANNEL_SPANS_NOT_ENDED]??[],p=c.findIndex(e=>e.msg===o);if(p<0)r.endConsumerSpan(o,e,t,s);else if(t!==l.EndOperation.Reject&&i){for(let n=0;n<=p;n++)r.endConsumerSpan(c[n].msg,e,t,s);c.splice(0,p+1)}else r.endConsumerSpan(o,e,t,s),c.splice(p,1);return n.apply(this,arguments)}}getConsumePatch(e,t){let n=this;return function(c,p,_){let T=this;if(!Object.prototype.hasOwnProperty.call(T,u.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:e}=n.getConfig();if(e){let t=setInterval(()=>{n.checkConsumeTimeoutOnChannel(T)},e);t.unref(),T[u.CHANNEL_CONSUME_TIMEOUT_TIMER]=t}T[u.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(t){let d;if(!t)return p.call(this,t);let E=t.properties.headers??{},S=r.propagation.extract(r.ROOT_CONTEXT,E),A=t.fields?.exchange;if(n._config.useLinksForConsume){let e=S?r.trace.getSpan(S)?.spanContext():void 0;S=void 0,e&&(d=[{context:e}])}let g=n.tracer.startSpan(`${c} process`,{kind:r.SpanKind.CONSUMER,attributes:{...T?.connection?.[u.CONNECTION_ATTRIBUTES],[s.ATTR_MESSAGING_DESTINATION]:A,[s.ATTR_MESSAGING_DESTINATION_KIND]:s.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[s.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:t.fields?.routingKey,[a.ATTR_MESSAGING_OPERATION]:s.MESSAGING_OPERATION_VALUE_PROCESS,[s.OLD_ATTR_MESSAGING_MESSAGE_ID]:t?.properties.messageId,[s.ATTR_MESSAGING_CONVERSATION_ID]:t?.properties.correlationId},links:d},S),{consumeHook:m}=n.getConfig();m&&(0,i.safeExecuteInTheMiddle)(()=>m(g,{moduleVersion:e,msg:t}),e=>{e&&r.diag.error("amqplib instrumentation: consumerHook error",e)},!0),_?.noAck||(T[u.CHANNEL_SPANS_NOT_ENDED].push({msg:t,timeOfConsume:(0,o.hrTime)()}),t[u.MESSAGE_STORED_SPAN]=g);let h=S||r.ROOT_CONTEXT;r.context.with(r.trace.setSpan(h,g),()=>{p.call(this,t)}),_?.noAck&&(n.callConsumeEndHook(g,t,!1,l.EndOperation.AutoAck),g.end())},t.apply(this,arguments)}}getConfirmedPublishPatch(e,t){let n=this;return function(o,a,s,l,c){let{span:p,modifiedOptions:_}=n.createPublishSpan(n,o,a,this,l),{publishHook:T}=n.getConfig();T&&(0,i.safeExecuteInTheMiddle)(()=>T(p,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:_,isConfirmChannel:!0}),e=>{e&&r.diag.error("amqplib instrumentation: publishHook error",e)},!0);let d=(0,u.markConfirmChannelTracing)(r.context.active()),E=[...arguments];return E[3]=_,E[4]=r.context.bind((0,u.unmarkConfirmChannelTracing)(r.trace.setSpan(d,p)),function(t,u){try{c?.call(this,t,u)}finally{let{publishConfirmHook:u}=n.getConfig();u&&(0,i.safeExecuteInTheMiddle)(()=>u(p,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:l,isConfirmChannel:!0,confirmError:t}),e=>{e&&r.diag.error("amqplib instrumentation: publishConfirmHook error",e)},!0),t&&p.setStatus({code:r.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),p.end()}}),r.context.with(d,t.bind(this,...E))}}getPublishPatch(e,t){let n=this;return function(o,a,s,l){if((0,u.isConfirmChannelTracing)(r.context.active()))return t.apply(this,arguments);{let{span:u,modifiedOptions:c}=n.createPublishSpan(n,o,a,this,l),{publishHook:p}=n.getConfig();p&&(0,i.safeExecuteInTheMiddle)(()=>p(u,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:c,isConfirmChannel:!1}),e=>{e&&r.diag.error("amqplib instrumentation: publishHook error",e)},!0);let _=[...arguments];_[3]=c;let T=t.apply(this,_);return u.end(),T}}}createPublishSpan(e,t,n,o,i){let a=(0,u.normalizeExchange)(t),l=e.tracer.startSpan(`publish ${a}`,{kind:r.SpanKind.PRODUCER,attributes:{...o.connection[u.CONNECTION_ATTRIBUTES],[s.ATTR_MESSAGING_DESTINATION]:t,[s.ATTR_MESSAGING_DESTINATION_KIND]:s.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[s.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:n,[s.OLD_ATTR_MESSAGING_MESSAGE_ID]:i?.messageId,[s.ATTR_MESSAGING_CONVERSATION_ID]:i?.correlationId}}),c=i??{};return c.headers=c.headers??{},r.propagation.inject(r.trace.setSpan(r.context.active(),l),c.headers),{span:l,modifiedOptions:c}}endConsumerSpan(e,t,n,o){let i=e[u.MESSAGE_STORED_SPAN];i&&(!1!==t&&i.setStatus({code:r.SpanStatusCode.ERROR,message:n!==l.EndOperation.ChannelClosed&&n!==l.EndOperation.ChannelError?`${n} called on message${!0===o?" with requeue":!1===o?" without requeue":""}`:n}),this.callConsumeEndHook(i,e,t,n),i.end(),e[u.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(e,t,n,r){(e[u.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(e=>{this.endConsumerSpan(e.msg,t,n,r)}),e[u.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(e,t,n,o){let{consumeEndHook:a}=this.getConfig();a&&(0,i.safeExecuteInTheMiddle)(()=>a(e,{msg:t,rejected:n,endOperation:o}),e=>{e&&r.diag.error("amqplib instrumentation: consumerEndHook error",e)},!0)}checkConsumeTimeoutOnChannel(e){let t,n=(0,o.hrTime)(),r=e[u.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:i}=this.getConfig();for(t=0;t{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EndOperation=n.DEFAULT_CONFIG=n.AmqplibInstrumentation=void 0;var r=e.r(826845);Object.defineProperty(n,"AmqplibInstrumentation",{enumerable:!0,get:function(){return r.AmqplibInstrumentation}});var o=e.r(650834);Object.defineProperty(n,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return o.DEFAULT_CONFIG}}),Object.defineProperty(n,"EndOperation",{enumerable:!0,get:function(){return o.EndOperation}})},855902,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(908157),o=e.r(976285),i=e.r(625331),a="Amqplib",s={consumeEndHook:e=>{i.addOriginToSpan(e,"auto.amqplib.otel.consumer")},publishHook:e=>{i.addOriginToSpan(e,"auto.amqplib.otel.publisher")}},l=i.generateInstrumentOnce(a,()=>new r.AmqplibInstrumentation(s));n.amqplibIntegration=o.defineIntegration(()=>({name:a,setupOnce(){l()}})),n.instrumentAmqplib=l},197696,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.INTEGRATION_NAME="VercelAI"},696887,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(197696),a=[">=3.0.0 <7"],s=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function l(e){"object"==typeof e&&null!==e&&"content"in e&&Array.isArray(e.content)&&(function(e){for(let t of e){if(!("object"==typeof t&&null!==t&&"type"in t&&"error"in t&&"toolName"in t&&"toolCallId"in t&&"tool-error"===t.type&&t.error instanceof Error))continue;let e=o._INTERNAL_getSpanContextForToolCallId(t.toolCallId);e?o.withScope(n=>{n.setContext("trace",{trace_id:e.traceId,span_id:e.spanId}),n.setTag("vercel.ai.tool.name",t.toolName),n.setTag("vercel.ai.tool.callId",t.toolCallId),n.setLevel("error"),o.captureException(t.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):o.withScope(e=>{e.setTag("vercel.ai.tool.name",t.toolName),e.setTag("vercel.ai.tool.callId",t.toolCallId),e.setLevel("error"),o.captureException(t.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(e.content),u(e.content))}function u(e){for(let t of e)"object"==typeof t&&null!==t&&"toolCallId"in t&&"string"==typeof t.toolCallId&&o._INTERNAL_cleanupToolCallSpanContext(t.toolCallId)}function c(e,t,n,r){return{recordInputs:e?.recordInputs!==void 0?e.recordInputs:void 0!==t.recordInputs?t.recordInputs:!0===n||r,recordOutputs:e?.recordOutputs!==void 0?e.recordOutputs:void 0!==t.recordOutputs?t.recordOutputs:!0===n||r}}class p extends r.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(e={}){super("@sentry/instrumentation-vercel-ai",o.SDK_VERSION,e),p.prototype.__init.call(this),p.prototype.__init2.call(this)}init(){return new r.InstrumentationNodeModuleDefinition("ai",a,this._patch.bind(this))}callWhenPatched(e){this._isPatched?e():this._callbacks.push(e)}_patch(e){this._isPatched=!0,this._callbacks.forEach(e=>e()),this._callbacks=[];let t=e=>new Proxy(e,{apply:(e,t,n)=>{let r=n[0].experimental_telemetry||{},a=r.isEnabled,s=o.getClient(),u=s?.getIntegrationByName(i.INTEGRATION_NAME),{recordInputs:p,recordOutputs:_}=c(u?.options,r,a,!!u&&!!s?.getOptions().sendDefaultPii);return n[0].experimental_telemetry={...r,isEnabled:void 0===a||a,recordInputs:p,recordOutputs:_},o.handleCallbackErrors(()=>Reflect.apply(e,t,n),e=>{e&&"object"==typeof e&&o.addNonEnumerableProperty(e,"_sentry_active_span",o.getActiveSpan())},()=>{},e=>{l(e)})}});if("[object Module]"===Object.prototype.toString.call(e)){for(let n of s)null!=e[n]&&(e[n]=t(e[n]));return e}{let n=s.reduce((n,r)=>(null!=e[r]&&(n[r]=t(e[r])),n),{});return{...e,...n}}}}n.SentryVercelAiInstrumentation=p,n.cleanupToolCallSpanContexts=u,n.determineRecordingSettings=c,n.processToolCallResults=l},834440,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(197696),a=e.r(696887),s=o.generateInstrumentOnce(i.INTEGRATION_NAME,()=>new a.SentryVercelAiInstrumentation({})),l=r.defineIntegration((e={})=>{let t;return{name:i.INTEGRATION_NAME,options:e,setupOnce(){t=s()},afterAllSetup(n){let o;e.force??(o=n.getIntegrationByName("Modules"),!!o?.getModules?.()?.ai)?r.addVercelAiProcessors(n):t?.callWhenPatched(()=>r.addVercelAiProcessors(n))}}});n.instrumentVercelAi=s,n.vercelAIIntegration=l},116769,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=4.0.0 <7"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-openai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("openai",i,this._patch.bind(this))}_patch(e){let t=e;return t=this._patchClient(t,"OpenAI"),t=this._patchClient(t,"AzureOpenAI")}_patchClient(e,t){let n=e[t];if(!n)return e;let r=this.getConfig(),i=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.OPENAI_INTEGRATION_NAME))return Reflect.construct(n,e);let t=Reflect.construct(n,e);return o.instrumentOpenAiClient(t,r)};for(let e of(Object.setPrototypeOf(i,n),Object.setPrototypeOf(i.prototype,n.prototype),Object.getOwnPropertyNames(n)))if(!["length","name","prototype"].includes(e)){let t=Object.getOwnPropertyDescriptor(n,e);t&&Object.defineProperty(i,e,t)}try{e[t]=i}catch{Object.defineProperty(e,t,{value:i,writable:!0,configurable:!0,enumerable:!0})}if(e.default===n)try{e.default=i}catch{Object.defineProperty(e,"default",{value:i,writable:!0,configurable:!0,enumerable:!0})}return e}}n.SentryOpenAiInstrumentation=a},758158,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(116769),a=o.generateInstrumentOnce(r.OPENAI_INTEGRATION_NAME,e=>new i.SentryOpenAiInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.OPENAI_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentOpenAi=a,n.openAIIntegration=s},654826,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.19.2 <1.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-anthropic-ai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",i,this._patch.bind(this))}_patch(e){let t=e.Anthropic,n=this.getConfig(),r=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(t,e);let r=Reflect.construct(t,e);return o.instrumentAnthropicAiClient(r,n)};for(let e of(Object.setPrototypeOf(r,t),Object.setPrototypeOf(r.prototype,t.prototype),Object.getOwnPropertyNames(t)))if(!["length","name","prototype"].includes(e)){let n=Object.getOwnPropertyDescriptor(t,e);n&&Object.defineProperty(r,e,n)}try{e.Anthropic=r}catch{Object.defineProperty(e,"Anthropic",{value:r,writable:!0,configurable:!0,enumerable:!0})}if(e.default===t)try{e.default=r}catch{Object.defineProperty(e,"default",{value:r,writable:!0,configurable:!0,enumerable:!0})}return e}}n.SentryAnthropicAiInstrumentation=a},718239,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(654826),a=o.generateInstrumentOnce(r.ANTHROPIC_AI_INTEGRATION_NAME,e=>new i.SentryAnthropicAiInstrumentation(e));n.anthropicAIIntegration=r.defineIntegration((e={})=>({name:r.ANTHROPIC_AI_INTEGRATION_NAME,options:e,setupOnce(){a(e)}})),n.instrumentAnthropicAi=a},116463,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.10.0 <2"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-google-genai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@google/genai",i,e=>this._patch(e),e=>e,[new r.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",i,e=>this._patch(e),e=>e)])}_patch(e){let t=e.GoogleGenAI,n=this.getConfig();if("function"!=typeof t)return e;let r=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(t,e);let r=Reflect.construct(t,e);return o.instrumentGoogleGenAIClient(r,n)};for(let e of(Object.setPrototypeOf(r,t),Object.setPrototypeOf(r.prototype,t.prototype),Object.getOwnPropertyNames(t)))if(!["length","name","prototype"].includes(e)){let n=Object.getOwnPropertyDescriptor(t,e);n&&Object.defineProperty(r,e,n)}return o.replaceExports(e,"GoogleGenAI",r),e}}n.SentryGoogleGenAiInstrumentation=a},880504,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(116463),a=o.generateInstrumentOnce(r.GOOGLE_GENAI_INTEGRATION_NAME,e=>new i.SentryGoogleGenAiInstrumentation(e));n.googleGenAIIntegration=r.defineIntegration((e={})=>({name:r.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){a(e)}})),n.instrumentGoogleGenAI=a},454883,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.1.0 <2.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-langchain",o.SDK_VERSION,e)}init(){let e=[];for(let t of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])e.push(new r.InstrumentationNodeModuleDefinition(t,i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile(`${t}/dist/index.cjs`,i,this._patch.bind(this),e=>e)]));return e.push(new r.InstrumentationNodeModuleDefinition("langchain",i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",i,this._patch.bind(this),e=>e)])),e}_patch(e){o._INTERNAL_skipAiProviderWrapping([o.OPENAI_INTEGRATION_NAME,o.ANTHROPIC_AI_INTEGRATION_NAME,o.GOOGLE_GENAI_INTEGRATION_NAME]);let t=o.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(e,t),e}_patchRunnableMethods(e,t){let n=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],r=Object.values(e.universal_exports??e).find(e=>"function"==typeof e&&n.includes(e.name));if(!r)return;let o=r.prototype;if(!o.__sentry_patched__)for(let e of(o.__sentry_patched__=!0,["invoke","stream","batch"])){let n=o[e];"function"==typeof n&&(o[e]=function(e,t,n){return new Proxy(e,{apply(e,n,r){var o,i;let a=r[1];(!a||"object"!=typeof a||Array.isArray(a))&&(a={},r[1]=a);let s=(o=a.callbacks,i=t,o?Array.isArray(o)?o.includes(i)?o:[...o,i]:"object"==typeof o?[o,i]:o:[i]);return a.callbacks=s,Reflect.apply(e,n,r)}})}(n,t))}}}n.SentryLangChainInstrumentation=a},62602,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(454883),a=o.generateInstrumentOnce(r.LANGCHAIN_INTEGRATION_NAME,e=>new i.SentryLangChainInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.LANGCHAIN_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentLangChain=a,n.langChainIntegration=s},955749,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.0.0 <2.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-langgraph",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@langchain/langgraph",i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",i,this._patch.bind(this),e=>e)])}_patch(e){return e.StateGraph&&"function"==typeof e.StateGraph&&o.instrumentLangGraph(e.StateGraph.prototype,this.getConfig()),e}}n.SentryLangGraphInstrumentation=a},521121,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(955749),a=o.generateInstrumentOnce(r.LANGGRAPH_INTEGRATION_NAME,e=>new i.SentryLangGraphInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.LANGGRAPH_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentLangGraph=a,n.langGraphIntegration=s},477801,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));n.buildLaunchDarklyFlagUsedHandlerShim=function(){return r.isBrowser()||r.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},n.launchDarklyIntegrationShim=o},222267,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));n.OpenFeatureIntegrationHookShim=class{constructor(){r.isBrowser()||r.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},n.openFeatureIntegrationShim=o},742355,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.statsigIntegrationShim=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},954005,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.unleashIntegrationShim=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},822525,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.growthbookIntegrationShim=e.r(976285).growthbookIntegration},395316,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(761095),o=e.r(357762),i=e.r(204780),a=e.r(808119);function s(e,t,n,r,o){var i,a,s,p,_,T,d,E;return l(e,n),t(e,"addDoc",(i=r,a=o,function(e){return function(t,n){let r=c(i,"addDoc",t);return a(r),u(r,()=>e(t,n))}})),t(e,"getDocs",(s=r,p=o,function(e){return function(t){let n=c(s,"getDocs",t);return p(n),u(n,()=>e(t))}})),t(e,"setDoc",(_=r,T=o,function(e){return function(t,n,r){let o=c(_,"setDoc",t.parent||t);return T(o),u(o,()=>void 0!==r?e(t,n,r):e(t,n))}})),t(e,"deleteDoc",(d=r,E=o,function(e){return function(t){let n=c(d,"deleteDoc",t.parent||t);return E(n),u(n,()=>e(t))}})),e}function l(e,t){for(let n of["addDoc","getDocs","setDoc","deleteDoc"])i.isWrapped(e[n])&&t(e,n);return e}function u(e,t){return o.context.with(o.trace.setSpan(o.context.active(),e),()=>i.safeExecuteInTheMiddle(()=>t(),t=>{t&&e.recordException(t),e.end()},!0))}function c(e,t,n){let r=e.startSpan(`${t} ${n.path}`,{kind:o.SpanKind.CLIENT});return function(e,t){let n=t.firestore.app,r=n.options,o=(t.firestore.toJSON()||{}).settings||{},i={[a.ATTR_DB_COLLECTION_NAME]:t.path,[a.ATTR_DB_NAMESPACE]:n.name,[a.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":t.type,"firebase.firestore.options.projectId":r.projectId,"firebase.firestore.options.appId":r.appId,"firebase.firestore.options.messagingSenderId":r.messagingSenderId,"firebase.firestore.options.storageBucket":r.storageBucket},{address:s,port:l}=p(o);s&&(i[a.ATTR_SERVER_ADDRESS]=s),l&&(i[a.ATTR_SERVER_PORT]=l),e.setAttributes(i)}(r,n),r.setAttribute(a.ATTR_DB_OPERATION_NAME,t),r}function p(e){let t,n;if("string"==typeof e.host)if(e.host.startsWith("[")){if(e.host.endsWith("]"))t=e.host.replace(/^\[|\]$/g,"");else if(e.host.includes("]:")){let r=e.host.lastIndexOf(":");-1!==r&&(t=e.host.slice(1,r).replace(/^\[|\]$/g,""),n=e.host.slice(r+1))}}else if(r.isIPv6(e.host))t=e.host;else{let r=e.host.lastIndexOf(":");-1!==r?(t=e.host.slice(0,r),n=e.host.slice(r+1)):t=e.host}return{address:t,port:n?parseInt(n,10):void 0}}n.getPortAndAddress=p,n.patchFirestore=function(e,t,n,r,a){let u=()=>{},c=a.firestoreSpanCreationHook;"function"==typeof c&&(u=e=>{i.safeExecuteInTheMiddle(()=>c(e),e=>{e&&o.diag.error(e?.message)},!0)});let p=new i.InstrumentationNodeModuleDefinition("@firebase/firestore",t,t=>s(t,n,r,e,u));for(let o of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])p.files.push(new i.InstrumentationNodeModuleFile(o,t,t=>s(t,n,r,e,u),e=>l(e,r)));return p}},248461,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780);function i(e,t,n){return function(o){return function(...i){let a="function"==typeof i[0]?i[0]:i[1],s="function"==typeof i[0]?void 0:i[0];if(!a)return o.call(this,...i);let l=async function(...o){let i=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",s=e.startSpan(`firebase.function.${n}`,{kind:r.SpanKind.SERVER}),l={"faas.name":i,"faas.trigger":n,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(l["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(l["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),s.setAttributes(l),t?.requestHook?.(s),r.context.with(r.trace.setSpan(r.context.active(),s),async()=>{let e,n;try{n=await a.apply(this,o)}catch(t){e=t}if(t?.responseHook?.(s,e),e&&s.recordException(e),s.end(),e)throw await t?.errorHook?.(s,e),e;return n})};return s?o.call(this,s,l):o.call(this,l)}}}function a(e,t){for(let n of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])o.isWrapped(e[n])&&t(e,n);return e}n.patchFunctions=function(e,t,n,s,l){let u=()=>{},c=()=>{},p=l.functions?.errorHook,_=l.functions?.requestHook,T=l.functions?.responseHook;"function"==typeof T&&(c=(e,t)=>{o.safeExecuteInTheMiddle(()=>T(e,t),e=>{e&&r.diag.error(e?.message)},!0)}),"function"==typeof _&&(u=e=>{o.safeExecuteInTheMiddle(()=>_(e),e=>{e&&r.diag.error(e?.message)},!0)});let d=new o.InstrumentationNodeModuleDefinition("firebase-functions",t);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:r,triggerType:l})=>{d.files.push(new o.InstrumentationNodeModuleFile(r,t,t=>(function(e,t,n,r,o,s){switch(a(e,n),s){case"function":t(e,"onRequest",i(r,o,"http.request")),t(e,"onCall",i(r,o,"http.call"));break;case"firestore":t(e,"onDocumentCreated",i(r,o,"firestore.document.created")),t(e,"onDocumentUpdated",i(r,o,"firestore.document.updated")),t(e,"onDocumentDeleted",i(r,o,"firestore.document.deleted")),t(e,"onDocumentWritten",i(r,o,"firestore.document.written")),t(e,"onDocumentCreatedWithAuthContext",i(r,o,"firestore.document.created")),t(e,"onDocumentUpdatedWithAuthContext",i(r,o,"firestore.document.updated")),t(e,"onDocumentDeletedWithAuthContext",i(r,o,"firestore.document.deleted")),t(e,"onDocumentWrittenWithAuthContext",i(r,o,"firestore.document.written"));break;case"scheduler":t(e,"onSchedule",i(r,o,"scheduler.scheduled"));break;case"storage":t(e,"onObjectFinalized",i(r,o,"storage.object.finalized")),t(e,"onObjectArchived",i(r,o,"storage.object.archived")),t(e,"onObjectDeleted",i(r,o,"storage.object.deleted")),t(e,"onObjectMetadataUpdated",i(r,o,"storage.object.metadataUpdated"))}return e})(t,n,s,e,{requestHook:u,responseHook:c,errorHook:p},l),e=>a(e,s)))}),d},n.patchV2Functions=i},516771,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(395316),a=e.r(248461),s={},l=[">=3.0.0 <5"],u=[">=6.0.0 <7"];class c extends r.InstrumentationBase{constructor(e=s){super("@sentry/instrumentation-firebase",o.SDK_VERSION,e)}setConfig(e={}){super.setConfig({...s,...e})}init(){let e=[];return e.push(i.patchFirestore(this.tracer,l,this._wrap,this._unwrap,this.getConfig())),e.push(a.patchFunctions(this.tracer,u,this._wrap,this._unwrap,this.getConfig())),e}}n.FirebaseInstrumentation=c},146523,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(516771),a="Firebase",s={firestoreSpanCreationHook:e=>{o.addOriginToSpan(e,"auto.firebase.otel.firestore"),e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:e=>{o.addOriginToSpan(e,"auto.firebase.otel.functions"),e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(e,t)=>{t&&(r.captureException(t,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await r.flush(2e3))}}},l=o.generateInstrumentOnce(a,()=>new i.FirebaseInstrumentation(s));n.firebaseIntegration=r.defineIntegration(()=>({name:a,setupOnce(){l()}})),n.instrumentFirebase=l},273273,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(738190),o=e.r(855902),i=e.r(718239),a=e.r(953027),s=e.r(429440),l=e.r(602878),u=e.r(146523),c=e.r(979396),p=e.r(880504),_=e.r(176571),T=e.r(376169),d=e.r(688750),E=e.r(934925),S=e.r(86294),A=e.r(62602),g=e.r(521121),m=e.r(888804),h=e.r(143655),R=e.r(780216),f=e.r(473485),N=e.r(625680),I=e.r(758158),O=e.r(832719),y=e.r(19194),b=e.r(547683),C=e.r(978486),M=e.r(946603),P=e.r(834440);n.getAutoPerformanceIntegrations=function(){return[s.expressIntegration(),l.fastifyIntegration(),_.graphqlIntegration(),d.honoIntegration(),h.mongoIntegration(),R.mongooseIntegration(),f.mysqlIntegration(),N.mysql2Integration(),C.redisIntegration(),O.postgresIntegration(),b.prismaIntegration(),T.hapiIntegration(),S.koaIntegration(),a.connectIntegration(),M.tediousIntegration(),c.genericPoolIntegration(),E.kafkaIntegration(),o.amqplibIntegration(),m.lruMemoizerIntegration(),A.langChainIntegration(),g.langGraphIntegration(),P.vercelAIIntegration(),I.openAIIntegration(),i.anthropicAIIntegration(),p.googleGenAIIntegration(),y.postgresJsIntegration(),u.firebaseIntegration()]},n.getOpenTelemetryInstrumentationToPreload=function(){return[r.instrumentSentryHttp,r.instrumentOtelHttp,s.instrumentExpress,a.instrumentConnect,l.instrumentFastify,l.instrumentFastifyV3,T.instrumentHapi,d.instrumentHono,E.instrumentKafka,S.instrumentKoa,m.instrumentLruMemoizer,h.instrumentMongo,R.instrumentMongoose,f.instrumentMysql,N.instrumentMysql2,O.instrumentPostgres,T.instrumentHapi,_.instrumentGraphql,C.instrumentRedis,M.instrumentTedious,c.instrumentGenericPool,o.instrumentAmqplib,A.instrumentLangChain,P.instrumentVercelAi,I.instrumentOpenAi,y.instrumentPostgresJs,u.instrumentFirebase,i.instrumentAnthropicAi,p.instrumentGoogleGenAI,g.instrumentLangGraph]}},1631,e=>{"use strict";let t;e.s([],827962),e.i(827962);var n=e.i(978116),r=e.i(670496),o=e.i(606733),i=e.i(775332);let a=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(e){let t={},r=(0,i.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),a=(0,i.getStringFromEnv)("OTEL_SERVICE_NAME");if(r)try{let e=this._parseResourceAttributes(r);Object.assign(t,e)}catch(e){n.diag.debug(`EnvDetector failed: ${e instanceof Error?e.message:e}`)}return a&&(t[o.ATTR_SERVICE_NAME]=a),{attributes:t}}_parseResourceAttributes(e){if(!e)return{};let t={};for(let n of e.split(this._COMMA_SEPARATOR)){let e,r,o=n.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==o.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${n}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[i,a]=o,s=i.trim(),l=a.trim();if(0===s.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${n}".`);try{e=decodeURIComponent(s),r=decodeURIComponent(l)}catch(e){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${n}": ${e instanceof Error?e.message:e}`)}if(e.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${e}".`);if(r.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${e}".`);t[e]=r}return t}};var s=e.i(446786),l=e.i(605365);async function u(){if(!t)switch(l.platform){case"darwin":t=(await e.A(57998)).getMachineId;break;case"linux":t=(await e.A(944291)).getMachineId;break;case"freebsd":t=(await e.A(822215)).getMachineId;break;case"win32":t=(await e.A(497519)).getMachineId;break;default:t=(await e.A(418670)).getMachineId}return t()}let c=new class{detect(e){return{attributes:{"host.name":(0,s.hostname)(),"host.arch":(e=>{switch(e){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return e}})((0,s.arch)()),"host.id":u()}}}},p=new class{detect(e){return{attributes:{"os.type":(e=>{switch(e){case"sunos":return"solaris";case"win32":return"windows";default:return e}})((0,s.platform)()),"os.version":(0,s.release)()}}}},_=new class{detect(e){let t={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(t["process.command"]=process.argv[1]);try{let e=s.userInfo();t["process.owner"]=e.username}catch(e){n.diag.debug(`error obtaining process owner: ${e}`)}return{attributes:t}}};var T=e.i(254799);let d=new class{detect(e){return{attributes:{"service.instance.id":(0,T.randomUUID)()}}}};var E=e.i(581453);e.s(["defaultResource",()=>r.defaultResource,"defaultServiceName",()=>E.defaultServiceName,"detectResources",0,(e={})=>(e.detectors||[]).map(t=>{try{let o=(0,r.resourceFromDetectedResource)(t.detect(e));return n.diag.debug(`${t.constructor.name} found resource.`,o),o}catch(e){return n.diag.debug(`${t.constructor.name} failed: ${e.message}`),(0,r.emptyResource)()}}).reduce((e,t)=>e.merge(t),(0,r.emptyResource)()),"emptyResource",()=>r.emptyResource,"envDetector",0,a,"hostDetector",0,c,"osDetector",0,p,"processDetector",0,_,"resourceFromAttributes",()=>r.resourceFromAttributes,"serviceInstanceIdDetector",0,d],1631)},815084,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(1631),i=e.r(148861),a=e.r(808119),s=e.r(976285),l=e.r(625331),u=e.r(779607),c=e.r(866779),p=e.r(273273);function _(e,t={}){let n=new i.BasicTracerProvider({sampler:new u.SentrySampler(e),resource:o.defaultResource().merge(o.resourceFromAttributes({[a.ATTR_SERVICE_NAME]:"node",[a.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[a.ATTR_SERVICE_VERSION]:s.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new u.SentrySpanProcessor({timeout:T(e.getOptions().maxSpanWaitDuration)}),...t.spanProcessors||[]]});r.trace.setGlobalTracerProvider(n),r.propagation.setGlobalPropagator(new u.SentryPropagator);let c=new l.SentryContextManager;return r.context.setGlobalContextManager(c),[n,c.getAsyncLocalStorageLookup()]}function T(e){if(null!=e){if(e>1e6)return c.DEBUG_BUILD&&s.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(e<=0||Number.isNaN(e)){c.DEBUG_BUILD&&s.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return e}}n._clampSpanProcessorTimeout=T,n.initOpenTelemetry=function(e,t={}){e.getOptions().debug&&l.setupOpenTelemetryLogger();let[n,r]=_(e,t);e.traceProvider=n,e.asyncLocalStorageLookup=r},n.preloadOpenTelemetry=function(e={}){var t;let n,{debug:r}=e;r&&s.debug.enable(),l.initializeEsmLoader(),(t=e.integrations,n=p.getOpenTelemetryInstrumentationToPreload(),t?n.filter(e=>{let n=e.id;return t.some(e=>n===e||n.startsWith(`${e}.`))}):n).forEach(e=>{e(),r&&s.debug.log(`[Sentry] Preloaded ${e.id} instrumentation`)})},n.setupOtel=_},645105,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(738190),a=e.r(354258),s=e.r(273273),l=e.r(815084);function u(){return o.getDefaultIntegrations().filter(e=>"Http"!==e.name&&"NodeFetch"!==e.name).concat(i.httpIntegration(),a.nativeNodeFetchIntegration())}function c(e){return[...u(),...r.hasSpansEnabled(e)?s.getAutoPerformanceIntegrations():[]]}function p(e={},t){r.applySdkMetadata(e,"node");let n=o.init({...e,defaultIntegrations:e.defaultIntegrations??t(e)});return n&&!e.skipOpenTelemetrySetup&&(l.initOpenTelemetry(n,{spanProcessors:e.openTelemetrySpanProcessors}),o.validateOpenTelemetrySetup()),n}n.getDefaultIntegrations=c,n.getDefaultIntegrationsWithoutPerformance=u,n.init=function(e={}){return p(e,c)},n.initWithoutDefaultIntegrations=function(e={}){return p(e,()=>[])}},96892,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(738190),o=e.r(354258),i=e.r(174710),a=e.r(429440),s=e.r(602878),l=e.r(176571),u=e.r(934925),c=e.r(888804),p=e.r(143655),_=e.r(780216),T=e.r(473485),d=e.r(625680),E=e.r(978486),S=e.r(832719),A=e.r(19194),g=e.r(547683),m=e.r(376169),h=e.r(688750),R=e.r(86294),f=e.r(953027),N=e.r(823099),I=e.r(946603),O=e.r(979396),y=e.r(363082),b=e.r(855902),C=e.r(834440),M=e.r(758158),P=e.r(718239),L=e.r(880504),v=e.r(62602),U=e.r(521121),D=e.r(477801),G=e.r(222267),B=e.r(742355),x=e.r(954005),V=e.r(822525),w=e.r(146523),H=e.r(645105),k=e.r(815084),Y=e.r(273273),j=e.r(779607),F=e.r(976285),W=e.r(625331);n.httpIntegration=r.httpIntegration,n.nativeNodeFetchIntegration=o.nativeNodeFetchIntegration,n.fsIntegration=i.fsIntegration,n.expressErrorHandler=a.expressErrorHandler,n.expressIntegration=a.expressIntegration,n.setupExpressErrorHandler=a.setupExpressErrorHandler,n.fastifyIntegration=s.fastifyIntegration,n.setupFastifyErrorHandler=s.setupFastifyErrorHandler,n.graphqlIntegration=l.graphqlIntegration,n.kafkaIntegration=u.kafkaIntegration,n.lruMemoizerIntegration=c.lruMemoizerIntegration,n.mongoIntegration=p.mongoIntegration,n.mongooseIntegration=_.mongooseIntegration,n.mysqlIntegration=T.mysqlIntegration,n.mysql2Integration=d.mysql2Integration,n.redisIntegration=E.redisIntegration,n.postgresIntegration=S.postgresIntegration,n.postgresJsIntegration=A.postgresJsIntegration,n.prismaIntegration=g.prismaIntegration,n.hapiIntegration=m.hapiIntegration,n.setupHapiErrorHandler=m.setupHapiErrorHandler,n.honoIntegration=h.honoIntegration,n.setupHonoErrorHandler=h.setupHonoErrorHandler,n.koaIntegration=R.koaIntegration,n.setupKoaErrorHandler=R.setupKoaErrorHandler,n.connectIntegration=f.connectIntegration,n.setupConnectErrorHandler=f.setupConnectErrorHandler,n.knexIntegration=N.knexIntegration,n.tediousIntegration=I.tediousIntegration,n.genericPoolIntegration=O.genericPoolIntegration,n.dataloaderIntegration=y.dataloaderIntegration,n.amqplibIntegration=b.amqplibIntegration,n.vercelAIIntegration=C.vercelAIIntegration,n.openAIIntegration=M.openAIIntegration,n.anthropicAIIntegration=P.anthropicAIIntegration,n.googleGenAIIntegration=L.googleGenAIIntegration,n.langChainIntegration=v.langChainIntegration,n.langGraphIntegration=U.langGraphIntegration,n.buildLaunchDarklyFlagUsedHandler=D.buildLaunchDarklyFlagUsedHandlerShim,n.launchDarklyIntegration=D.launchDarklyIntegrationShim,n.OpenFeatureIntegrationHook=G.OpenFeatureIntegrationHookShim,n.openFeatureIntegration=G.openFeatureIntegrationShim,n.statsigIntegration=B.statsigIntegrationShim,n.unleashIntegration=x.unleashIntegrationShim,n.growthbookIntegration=V.growthbookIntegrationShim,n.firebaseIntegration=w.firebaseIntegration,n.getDefaultIntegrations=H.getDefaultIntegrations,n.getDefaultIntegrationsWithoutPerformance=H.getDefaultIntegrationsWithoutPerformance,n.init=H.init,n.initWithoutDefaultIntegrations=H.initWithoutDefaultIntegrations,n.initOpenTelemetry=k.initOpenTelemetry,n.preloadOpenTelemetry=k.preloadOpenTelemetry,n.getAutoPerformanceIntegrations=Y.getAutoPerformanceIntegrations,n.setNodeAsyncContextStrategy=j.setOpenTelemetryContextAsyncContextStrategy,n.SDK_VERSION=F.SDK_VERSION,n.SEMANTIC_ATTRIBUTE_SENTRY_OP=F.SEMANTIC_ATTRIBUTE_SENTRY_OP,n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=F.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=F.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=F.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n.Scope=F.Scope,n.addBreadcrumb=F.addBreadcrumb,n.addEventProcessor=F.addEventProcessor,n.addIntegration=F.addIntegration,n.captureCheckIn=F.captureCheckIn,n.captureConsoleIntegration=F.captureConsoleIntegration,n.captureEvent=F.captureEvent,n.captureException=F.captureException,n.captureFeedback=F.captureFeedback,n.captureMessage=F.captureMessage,n.captureSession=F.captureSession,n.close=F.close,n.consoleIntegration=F.consoleIntegration,n.consoleLoggingIntegration=F.consoleLoggingIntegration,n.continueTrace=F.continueTrace,n.createConsolaReporter=F.createConsolaReporter,n.createLangChainCallbackHandler=F.createLangChainCallbackHandler,n.createTransport=F.createTransport,n.dedupeIntegration=F.dedupeIntegration,n.endSession=F.endSession,n.eventFiltersIntegration=F.eventFiltersIntegration,n.extraErrorDataIntegration=F.extraErrorDataIntegration,n.featureFlagsIntegration=F.featureFlagsIntegration,n.flush=F.flush,n.functionToStringIntegration=F.functionToStringIntegration,n.getActiveSpan=F.getActiveSpan,n.getClient=F.getClient,n.getCurrentScope=F.getCurrentScope,n.getGlobalScope=F.getGlobalScope,n.getIsolationScope=F.getIsolationScope,n.getRootSpan=F.getRootSpan,n.getSpanDescendants=F.getSpanDescendants,n.getSpanStatusFromHttpCode=F.getSpanStatusFromHttpCode,n.getTraceData=F.getTraceData,n.getTraceMetaTags=F.getTraceMetaTags,n.httpHeadersToSpanAttributes=F.httpHeadersToSpanAttributes,n.inboundFiltersIntegration=F.inboundFiltersIntegration,n.instrumentAnthropicAiClient=F.instrumentAnthropicAiClient,n.instrumentGoogleGenAIClient=F.instrumentGoogleGenAIClient,n.instrumentLangGraph=F.instrumentLangGraph,n.instrumentOpenAiClient=F.instrumentOpenAiClient,n.instrumentStateGraphCompile=F.instrumentStateGraphCompile,n.instrumentSupabaseClient=F.instrumentSupabaseClient,n.isEnabled=F.isEnabled,n.isInitialized=F.isInitialized,n.lastEventId=F.lastEventId,n.linkedErrorsIntegration=F.linkedErrorsIntegration,n.parameterize=F.parameterize,n.profiler=F.profiler,n.requestDataIntegration=F.requestDataIntegration,n.rewriteFramesIntegration=F.rewriteFramesIntegration,n.setContext=F.setContext,n.setConversationId=F.setConversationId,n.setCurrentClient=F.setCurrentClient,n.setExtra=F.setExtra,n.setExtras=F.setExtras,n.setHttpStatus=F.setHttpStatus,n.setMeasurement=F.setMeasurement,n.setTag=F.setTag,n.setTags=F.setTags,n.setUser=F.setUser,n.spanToBaggageHeader=F.spanToBaggageHeader,n.spanToJSON=F.spanToJSON,n.spanToTraceHeader=F.spanToTraceHeader,n.startInactiveSpan=F.startInactiveSpan,n.startNewTrace=F.startNewTrace,n.startSession=F.startSession,n.startSpan=F.startSpan,n.startSpanManual=F.startSpanManual,n.supabaseIntegration=F.supabaseIntegration,n.suppressTracing=F.suppressTracing,n.trpcMiddleware=F.trpcMiddleware,n.updateSpanName=F.updateSpanName,n.winterCGHeadersToDict=F.winterCGHeadersToDict,n.withActiveSpan=F.withActiveSpan,n.withIsolationScope=F.withIsolationScope,n.withMonitor=F.withMonitor,n.withScope=F.withScope,n.wrapMcpServerWithSentry=F.wrapMcpServerWithSentry,n.zodErrorsIntegration=F.zodErrorsIntegration,n.NODE_VERSION=W.NODE_VERSION,n.NodeClient=W.NodeClient,n.SentryContextManager=W.SentryContextManager,n.anrIntegration=W.anrIntegration,n.childProcessIntegration=W.childProcessIntegration,n.contextLinesIntegration=W.contextLinesIntegration,n.createGetModuleFromFilename=W.createGetModuleFromFilename,n.createSentryWinstonTransport=W.createSentryWinstonTransport,n.cron=W.cron,n.defaultStackParser=W.defaultStackParser,n.disableAnrDetectionForCallback=W.disableAnrDetectionForCallback,n.generateInstrumentOnce=W.generateInstrumentOnce,n.getSentryRelease=W.getSentryRelease,n.httpServerIntegration=W.httpServerIntegration,n.httpServerSpansIntegration=W.httpServerSpansIntegration,n.localVariablesIntegration=W.localVariablesIntegration,n.logger=W.logger,n.makeNodeTransport=W.makeNodeTransport,n.metrics=W.metrics,n.modulesIntegration=W.modulesIntegration,n.nodeContextIntegration=W.nodeContextIntegration,n.nodeRuntimeMetricsIntegration=W.nodeRuntimeMetricsIntegration,n.onUncaughtExceptionIntegration=W.onUncaughtExceptionIntegration,n.onUnhandledRejectionIntegration=W.onUnhandledRejectionIntegration,n.pinoIntegration=W.pinoIntegration,n.processSessionIntegration=W.processSessionIntegration,n.spotlightIntegration=W.spotlightIntegration,n.systemErrorIntegration=W.systemErrorIntegration,n.validateOpenTelemetrySetup=W.validateOpenTelemetrySetup},820456,(e,t,n)=>{let r;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let o=e.r(522734),i=e.r(814747),a=null,s=null;n.createRouteManifest=function(e){let t;if(e?.appDirPath)t=e.appDirPath;else{let e=process.cwd(),n=i.join(e,"app"),r=i.join(e,"src","app");o.existsSync(n)&&o.lstatSync(n).isDirectory()?t=n:o.existsSync(r)&&o.lstatSync(r).isDirectory()&&(t=r)}if(!t)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(a&&s===t&&r===e?.includeRouteGroups)return a;let{dynamicRoutes:n,staticRoutes:l,isrRoutes:u}=function e(t,n="",r=!1){let a=[],s=[],l=[];try{let c=o.readdirSync(t,{withFileTypes:!0}),p=c.find(e=>{var t;return t=e.name,"page.tsx"===t||"page.jsx"===t||"page.ts"===t||"page.js"===t});if(p){let e=r?n||"/":(n||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),u=e.includes(":"),c=i.join(t,p.name);if(function(e){try{let t=o.readFileSync(e,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(t)}catch{return!1}}(c)&&l.push(e),u){let{regex:t,paramNames:n,hasOptionalPrefix:r}=function(e){let t,n,r=e.split("/").filter(Boolean),o=[],i=[],a=!1;for(let e of r)if(e.startsWith(":")){let t=e.substring(1);if(t.endsWith("*?")){let e=t.slice(0,-2);i.push(e),a=!0}else if(t.endsWith("*")){let e=t.slice(0,-1);i.push(e),o.push("(.+)")}else i.push(t),o.push("([^/]+)")}else o.push(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(a)if(0===o.length)n="^/(.*)$";else{let e=o.join("/");n=`^/${e}(?:/(.*))?$`}else n=`^/${o.join("/")}$`;return{regex:n,paramNames:i,hasOptionalPrefix:(t=i[0],void 0!==t&&("locale"===t||"lang"===t||"language"===t))}}(e);a.push({path:e,regex:t,paramNames:n,hasOptionalPrefix:r})}else s.push({path:e})}for(let o of c)if(o.isDirectory()){var u;let c,p=i.join(t,o.name),_=o.name.startsWith("[")&&o.name.endsWith("]"),T=(c=(u=o.name).startsWith("(")&&u.endsWith(")")?r?o.name:"":_?function(e){if(e.startsWith("[[...")&&e.endsWith("]]")){let t=e.slice(5,-2);return`:${t}*?`}if(e.startsWith("[...")&&e.endsWith("]")){let t=e.slice(4,-1);return`:${t}*`}return`:${e.slice(1,-1)}`}(o.name):o.name)?`${n}/${c}`:n,d=e(p,T,r);a.push(...d.dynamicRoutes),s.push(...d.staticRoutes),l.push(...d.isrRoutes)}}catch(e){console.warn("Error building route manifest:",e)}return{dynamicRoutes:a,staticRoutes:s,isrRoutes:l}}(t,e?.basePath,e?.includeRouteGroups),c={dynamicRoutes:n,staticRoutes:l,isrRoutes:u};return a=c,s=t,r=e?.includeRouteGroups,c}},382226,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.resolveTunnelRoute=function(e){let t;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let n="string"==typeof e?e:(t=r._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${t}`);return n&&(process.env.__SENTRY_TUNNEL_ROUTE__=n),n},n.setUpTunnelRewriteRules=function(e,t){let n=e.rewrites,r=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,o=r||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",i=r||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";e.rewrites=async(...e)=>{let r={source:`${t}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:o},a=[{source:`${t}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:i},r];if("function"!=typeof n)return a;let s=await n(...e);return Array.isArray(s)?[...a,...s]:{...s,beforeFiles:[...a,...s.beforeFiles||[]]}}}},586605,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(96892),i=e.r(522734),a=e.r(814747),s=e.r(820456),l=e.r(690268),u=e.r(934474),c=e.r(382226),p=!1,_=!1;function T(e,t){if(!t)return e;let n=e=>"function"==typeof t?t(e):t.some(t=>r.isMatchingPattern(e,t));return{staticRoutes:e.staticRoutes.filter(e=>!n(e.path)),dynamicRoutes:e.dynamicRoutes.filter(e=>!n(e.path)),isrRoutes:e.isrRoutes.filter(e=>!n(e))}}n.filterRouteManifest=T,n.getNextMajor=function(e){if(!e)return;let{major:t}=r.parseSemver(e);return t},n.maybeCreateRouteManifest=function(e,t){if(t.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==t.routeManifestInjection&&(void 0!==t.routeManifestInjection||!t.disableManifestInjection))return T(s.createRouteManifest({basePath:e.basePath}),t.routeManifestInjection?.exclude)},n.maybeGetVercelCronsConfig=function(e){let t={config:void 0,strategy:void 0};if(!process.env.VERCEL)return t;let n=e._experimental?.vercelCronsMonitoring===!0,o=e.webpack?.automaticVercelMonitors===!0;if(!n&&!o)return t;let s=function(){try{let e=a.join(process.cwd(),"vercel.json"),t=i.readFileSync(e,"utf8"),n=JSON.parse(t).crons;if(n&&Array.isArray(n)&&n.length>0)return n;return}catch(e){if("ENOENT"===e.code)return;r.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",e);return}}();return s&&(t.config=s,n&&o?(r.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),t.strategy="spans"):n?(r.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),t.strategy="spans"):(r.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),t.strategy="wrapper")),t},n.maybeSetClientTraceMetadataOption=function(e,t){if(t){let{major:n,minor:o}=r.parseSemver(t);void 0!==n&&void 0!==o&&(n>=15||14===n&&o>=3)&&(e.experimental=e.experimental||{},e.experimental.clientTraceMetadata=["baggage","sentry-trace",...e.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},n.maybeSetInstrumentationHookOption=function(e,t){if(t&&l.requiresInstrumentationHook(t)){e.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),e.experimental={instrumentationHook:!0,...e.experimental};return}t||(e.experimental&&"instrumentationHook"in e.experimental?!1===e.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),e.experimental={instrumentationHook:!0,...e.experimental}))},n.maybeSetUpTunnelRouteRewriteRules=function(e,t){if(!t.tunnelRoute)return;if("export"===e.output){p||(p=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let n=c.resolveTunnelRoute(t.tunnelRoute);t.tunnelRoute=n||void 0,c.setUpTunnelRewriteRules(e,n)},n.resolveReleaseName=function(e){return e.release?.create!==!1?e.release?.name??o.getSentryRelease()??u.getGitRevision():e.release?.name},n.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(_||(_=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},n.warnIfMissingOnRouterTransitionStartHook=function(e){let t=u.getInstrumentationClientFileContents();void 0===t||t.includes("onRouterTransitionStart")||e.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},766776,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(690268),o=e.r(934474),i=e.r(279876),a=e.r(780663),s=e.r(586605);n.getFinalConfigObject=function(e,t){i.migrateDeprecatedWebpackOptions(t);let n=s.resolveReleaseName(t);if(s.maybeSetUpTunnelRouteRewriteRules(e,t),s.shouldReturnEarlyInExperimentalBuildMode())return e;let l=s.maybeCreateRouteManifest(e,t),u=s.maybeGetVercelCronsConfig(t);o.setUpBuildTimeVariables(e,t,n);let c=r.getNextjsVersion(),p=s.getNextMajor(c);s.maybeSetClientTraceMetadataOption(e,c),s.maybeSetInstrumentationHookOption(e,c),s.warnIfMissingOnRouterTransitionStartHook(t);let _=a.getBundlerInfo(c);a.maybeWarnAboutUnsupportedTurbopack(c,_),a.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(c,t,_);let T=a.maybeConstructTurbopackConfig(e,t,l,c,_,u),d=a.resolveUseRunAfterProductionCompileHookOption(t,_);return a.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:e,userSentryOptions:t,releaseName:n,nextJsVersion:c,bundlerInfo:_,turboPackConfig:T,shouldUseRunAfterProductionCompileHook:d}),a.maybeEnableTurbopackSourcemaps(e,t,_),{...e,...a.getServerExternalPackagesPatch(e,p),...a.getWebpackPatch({incomingUserNextConfigObject:e,userSentryOptions:t,releaseName:n,routeManifest:l,nextJsVersion:c,shouldUseRunAfterProductionCompileHook:d,bundlerInfo:_,vercelCronsConfigResult:u}),...a.getTurbopackPatch(_,T)}}},256782,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(766776);n.withSentryConfig=function(e,t={}){let n=e||{};return"function"==typeof n?function(...e){let i=n.apply(this,e);return r.isThenable(i)?i.then(e=>o.getFinalConfigObject(e,t)):o.getFinalConfigObject(i,t)}:o.getFinalConfigObject(n,t)}},644247,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.DEBUG_BUILD="u"{"use strict";var t="";function n(e){return e.split("\n").reduce(function(e,n){var c,p,_,T=function(e){var n=r.exec(e);if(!n)return null;var i=n[2]&&0===n[2].indexOf("native"),a=n[2]&&0===n[2].indexOf("eval"),s=o.exec(n[2]);return a&&null!=s&&(n[2]=s[1],n[3]=s[2],n[4]=s[3]),{file:i?null:n[2],methodName:n[1]||t,arguments:i?[n[2]]:[],lineNumber:n[3]?+n[3]:null,column:n[4]?+n[4]:null}}(n)||((c=i.exec(n))?{file:c[2],methodName:c[1]||t,arguments:[],lineNumber:+c[3],column:c[4]?+c[4]:null}:null)||function(e){var n=a.exec(e);if(!n)return null;var r=n[3]&&n[3].indexOf(" > eval")>-1,o=s.exec(n[3]);return r&&null!=o&&(n[3]=o[1],n[4]=o[2],n[5]=null),{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(","):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}(n)||((p=u.exec(n))?{file:p[2],methodName:p[1]||t,arguments:[],lineNumber:+p[3],column:p[4]?+p[4]:null}:null)||((_=l.exec(n))?{file:_[3],methodName:_[1]||t,arguments:[],lineNumber:+_[4],column:_[5]?+_[5]:null}:null);return T&&e.push(T),e},[])}var r=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,o=/\((\S*)(?::(\d+))(?::(\d+))\)/,i=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,a=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,s=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,u=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;e.s(["parse",()=>n])},313627,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(695005),i=e.r(644247),a=r.GLOBAL_OBJ;function s(){let e=process.env._sentryBasePath??a._sentryBasePath??"";""===e||e.match(/^\//)||(e=`/${e}`);let t=process.env.PORT||"3000";return`http://localhost:${t}${e}`}async function l(e,t={}){let n=new AbortController,o=setTimeout(()=>n.abort(),3e3);return r.suppressTracing(()=>fetch(e,{...t,signal:n.signal}).finally(()=>{clearTimeout(o)}))}async function u(e,t){try{if(!(e.file?.startsWith("webpack-internal:")||e.file?.startsWith("file:")))return null;let n=new URLSearchParams;n.append("isServer",String(!1)),n.append("isEdgeServer",String(!1)),n.append("isAppDirectory",String(!0)),n.append("errorMessage",t.toString()),Object.keys(e).forEach(t=>{n.append(t,(e[t]??"").toString())});let r=s(),o=await l(`${r}/__nextjs_original-stack-frame?${n.toString()}`);if(!o.ok||204===o.status)return null;let i=await o.json();return{originalCodeFrame:i.originalCodeFrame,originalStackFrame:i.originalStackFrame}}catch(e){return i.DEBUG_BUILD&&r.debug.error("Failed to symbolicate event with Next.js dev server",e),null}}async function c(e){try{let t={frames:e.filter(e=>!!e.file).map(e=>(e.file=e.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:e.file,methodName:e.methodName??"",arguments:[],lineNumber:e.lineNumber??0,column:e.column??0,line1:e.lineNumber??0,column1:e.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},n=s(),r=await l(`${n}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok||204===r.status)return null;return(await r.json()).map(e=>({originalCodeFrame:e.value.originalCodeFrame,originalStackFrame:e.value.originalStackFrame}))}catch(e){return i.DEBUG_BUILD&&r.debug.error("Failed to symbolicate event with Next.js dev server",e),null}}n.devErrorSymbolicationEventProcessor=async function e(e,t){"transaction"===e.type&&(e.spans=e.spans?.filter(e=>{let t=e.data?.["http.url"];return"string"!=typeof t||!t.includes("__nextjs_original-stack-frame")}));try{if(t.originalException&&t.originalException instanceof Error&&t.originalException.stack){let n,i=o.parse(t.originalException.stack),s=a._sentryNextJsVersion;if(!s)return e;let l=r.parseSemver(s);if(l.major>15||15===l.major&&l.minor>=2){let t=await c(i);if(null===t)return e;n=t}else n=await Promise.all(i.map(e=>u(e,t.originalException)));e.exception?.values?.[0]?.stacktrace?.frames&&(e.exception.values[0].stacktrace.frames=e.exception.values[0].stacktrace.frames.map((e,t,r)=>{let o=n[r.length-1-t];if(!o?.originalStackFrame||!o.originalCodeFrame)return{...e,platform:e.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:i,preContextLines:a,postContextLines:s}=function(e){let t,n=e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(e=>!e.match(/^\s*\|/)).map(e=>({line:e,isErrorLine:!!e.match(/^>/)})).map(e=>({...e,line:e.line.replace(/^.*\|/,"")})),r=[],o=[],i=!1;for(let e of n)e.isErrorLine?(t=e.line,i=!0):i?o.push(e.line):r.push(e.line);return{contextLine:t,preContextLines:r,postContextLines:o}}(o.originalCodeFrame);return{...e,pre_context:a,context_line:i,post_context:s,function:o.originalStackFrame.methodName,filename:o.originalStackFrame.file?function(e){if(!e)return e;let t=e.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return t?t[1]:e}(o.originalStackFrame.file):void 0,lineno:o.originalStackFrame.lineNumber||o.originalStackFrame.line1||void 0,colno:o.originalStackFrame.column||o.originalStackFrame.column1||void 0}}))}}catch{}return e}},102372,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.getVercelEnv=function(e){let t=e?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return t?`vercel-${t}`:void 0}},322192,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.ATTR_NEXT_ROUTE="next.route",n.ATTR_NEXT_SEGMENT="next.segment",n.ATTR_NEXT_SPAN_NAME="next.span_name",n.ATTR_NEXT_SPAN_TYPE="next.span_type"},753802,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",n.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",n.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},166740,(e,t,n)=>{"use strict";n._=function(e){return e&&e.__esModule?e:{default:e}}},404660,(e,t,n)=>{"use strict";t.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},473032,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return l},UNDERSCORE_NOT_FOUND_ROUTE:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return a}};for(var o in r)Object.defineProperty(n,o,{enumerable:!0,get:r[o]});let i="/_not-found",a=`${i}/page`,s="/_global-error",l=`${s}/page`},59653,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,o={APP_CLIENT_INTERNALS:function(){return et},APP_PATHS_MANIFEST:function(){return h},APP_PATH_ROUTES_MANIFEST:function(){return R},AdapterOutputType:function(){return c},BARREL_OPTIMIZATION_PREFIX:function(){return K},BLOCKED_PAGES:function(){return k},BUILD_ID_FILE:function(){return H},BUILD_MANIFEST:function(){return f},CLIENT_PUBLIC_FILES_PATH:function(){return Y},CLIENT_REFERENCE_MANIFEST:function(){return X},CLIENT_STATIC_FILES_PATH:function(){return j},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return q},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return ee},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return eo},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return ei},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return en},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return er},COMPILER_INDEXES:function(){return u},COMPILER_NAMES:function(){return l},CONFIG_FILES:function(){return w},DEFAULT_RUNTIME_WEBPACK:function(){return ea},DEFAULT_SANS_SERIF_FONT:function(){return ep},DEFAULT_SERIF_FONT:function(){return ec},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return B},DEV_CLIENT_PAGES_MANIFEST:function(){return v},DYNAMIC_CSS_MANIFEST:function(){return z},EDGE_RUNTIME_WEBPACK:function(){return es},EDGE_UNSUPPORTED_NODE_APIS:function(){return eS},EXPORT_DETAIL:function(){return b},EXPORT_MARKER:function(){return y},FUNCTIONS_CONFIG_MANIFEST:function(){return N},IMAGES_MANIFEST:function(){return P},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Q},MIDDLEWARE_BUILD_MANIFEST:function(){return J},MIDDLEWARE_MANIFEST:function(){return U},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return $},MODERN_BROWSERSLIST_TARGET:function(){return a.default},NEXT_BUILTIN_DOCUMENT:function(){return W},NEXT_FONT_MANIFEST:function(){return O},PAGES_MANIFEST:function(){return g},PHASE_ANALYZE:function(){return _},PHASE_DEVELOPMENT_SERVER:function(){return E},PHASE_EXPORT:function(){return p},PHASE_INFO:function(){return A},PHASE_PRODUCTION_BUILD:function(){return T},PHASE_PRODUCTION_SERVER:function(){return d},PHASE_TEST:function(){return S},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return x},ROUTES_MANIFEST:function(){return M},RSC_MODULE_TYPES:function(){return eE},SERVER_DIRECTORY:function(){return V},SERVER_FILES_MANIFEST:function(){return L},SERVER_PROPS_ID:function(){return eu},SERVER_REFERENCE_MANIFEST:function(){return Z},STATIC_PROPS_ID:function(){return el},STATIC_STATUS_PAGES:function(){return e_},STRING_LITERAL_DROP_BUNDLE:function(){return F},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return I},SYSTEM_ENTRYPOINTS:function(){return eA},TRACE_OUTPUT_VERSION:function(){return eT},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return G},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return D},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ed},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return m}};for(var i in o)Object.defineProperty(n,i,{enumerable:!0,get:o[i]});let a=e.r(166740)._(e.r(404660)),s=e.r(473032),l={client:"client",server:"server",edgeServer:"edge-server"},u={[l.client]:0,[l.server]:1,[l.edgeServer]:2};var c=((r={}).PAGES="PAGES",r.PAGES_API="PAGES_API",r.APP_PAGE="APP_PAGE",r.APP_ROUTE="APP_ROUTE",r.PRERENDER="PRERENDER",r.STATIC_FILE="STATIC_FILE",r.MIDDLEWARE="MIDDLEWARE",r);let p="phase-export",_="phase-analyze",T="phase-production-build",d="phase-production-server",E="phase-development-server",S="phase-test",A="phase-info",g="pages-manifest.json",m="webpack-stats.json",h="app-paths-manifest.json",R="app-path-routes-manifest.json",f="build-manifest.json",N="functions-config-manifest.json",I="subresource-integrity-manifest",O="next-font-manifest",y="export-marker.json",b="export-detail.json",C="prerender-manifest.json",M="routes-manifest.json",P="images-manifest.json",L="required-server-files",v="_devPagesManifest.json",U="middleware-manifest.json",D="_clientMiddlewareManifest.json",G="client-build-manifest.json",B="_devMiddlewareManifest.json",x="react-loadable-manifest.json",V="server",w=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],H="BUILD_ID",k=["/_document","/_app","/_error"],Y="public",j="static",F="__NEXT_DROP_CLIENT_FILE__",W="__NEXT_BUILTIN_DOCUMENT__",K="__barrel_optimize__",X="client-reference-manifest",Z="server-reference-manifest",J="middleware-build-manifest",$="middleware-react-loadable-manifest",Q="interception-route-rewrite-manifest",z="dynamic-css-manifest",q="main",ee=`${q}-app`,et="app-pages-internals",en="react-refresh",er="webpack",eo="polyfills",ei=Symbol(eo),ea="webpack-runtime",es="edge-runtime-webpack",el="__N_SSG",eu="__N_SSP",ec={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},ep={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},e_=["/500"],eT=1,ed=6e3,eE={client:"client",server:"server"},eS=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eA=new Set([q,en,ee]);("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},797121,(e,t,n)=>{t.exports=e.r(59653)},775563,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(797121);n.isBuild=function(){return process.env.NEXT_PHASE===r.PHASE_PRODUCTION_BUILD}},804822,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247);async function i(){try{o.DEBUG_BUILD&&r.debug.log("Flushing events..."),await r.flush(2e3),o.DEBUG_BUILD&&r.debug.log("Done flushing events")}catch(e){o.DEBUG_BUILD&&r.debug.log("Error while flushing events:\n",e)}}function a(){let e=Symbol.for("__cloudflare-context__");return r.GLOBAL_OBJ[e]?.ctx}function s(e){a()?.waitUntil(e)}function l(){return"function"==typeof a()?.waitUntil}n.cloudflareWaitUntil=s,n.flushSafelyWithTimeout=i,n.isCloudflareWaitUntilAvailable=l,n.waitUntil=function(e){l()?s(e):r.vercelWaitUntil(e)}},835229,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);function o(e){let t=e.split("/").filter(e=>e&&!(e.startsWith("(")&&e.endsWith(")")));return t.length>0?`/${t.join("/")}`:"/"}function i(e,t,n,i){let a=i??o(e),s=n?.["x-forwarded-proto"],l=n?.["x-forwarded-host"]||n?.host;if(!s||!l)return a;let u=`${s}://${l}${a}`,c=r.parseStringToURLObject(u);return c?r.getSanitizedUrlStringFromUrlObject(c):a}function a(e){let t=e?.referer;if(t)try{let e=new URL(t);return r.getSanitizedUrlStringFromUrlObject(e)}catch{return}}n.buildUrlFromComponentRoute=i,n.extractSanitizedUrlFromRefererHeader=a,n.getSanitizedRequestUrl=function(e,t,n,r){let o=a(n);return o||i(e,t,n,r)},n.sanitizeRoutePath=o,n.substituteRouteParams=function(e,t){return e}},638074,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(835229);n.setUrlProcessingMetadata=function(e){if("transaction"!==e.type||e.contexts?.trace?.op!=="http.server"||!e.contexts?.trace?.data)return;let t=r.getClient();if(!t?.getOptions().sendDefaultPii)return;let n=e.contexts.trace.data,i=n["next.route"]||n["http.route"],a=n["http.target"];if(!i)return;let s=e.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),l=s?.sdkProcessingMetadata?.normalizedRequest?.headers,u=o.getSanitizedRequestUrl(i,void 0,l,a?.toString());u&&s?.sdkProcessingMetadata&&(s.sdkProcessingMetadata.normalizedRequest=s.sdkProcessingMetadata.normalizedRequest||{},s.sdkProcessingMetadata.normalizedRequest.url=u)}},540886,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(814747);n.distDirRewriteFramesIntegration=r.defineIntegration(({distDirName:e})=>{let t=o.resolve(e).replace(/(\/|\\)$/,""),n=new RegExp(r.escapeStringForRegex(t));return{...r.rewriteFramesIntegration({iteratee:e=>(e.filename=e.filename?.replace(n,"app:///_next"),e)}),name:"DistDirRewriteFrames"}})},224915,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.addHeadersAsAttributes=function(e,t){if(!e)return{};let n=e instanceof Headers||"object"==typeof e&&"get"in e?r.winterCGHeadersToDict(e):e,o=r.httpHeadersToSpanAttributes(n,r.getClient()?.getOptions().sendDefaultPii??!1);return t&&t.setAttributes(o),o}},851224,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(779607),a=e.r(322192),s=e.r(753802),l=o.GLOBAL_OBJ;n.dropMiddlewareTunnelRequests=function(e,t){if(o.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let n=t?.[a.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",u=t?.[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",c=t?.[a.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!n&&!u&&!c)return;let p=function(e){let t=l._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!t)return!1;let n=e[r.SEMATTRS_HTTP_TARGET];if("string"==typeof n){let e=n.split("?")[0]||"";return e===t||e.startsWith(`${t}/`)}return!1}(t||{}),_=i.isSentryRequestSpan(e);(p||_)&&e.setAttribute(s.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},997574,(e,t,n)=>{let r;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let o=e.r(808119),i=e.r(976285),a=e.r(644247),s=e.r(322192),l=e.r(753802),u="__PAGE__",c=new WeakMap;function p(e){return"NextNodeServer.getLayoutOrPageModule"===e[s.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===e[s.ATTR_NEXT_SPAN_NAME]&&"string"==typeof e[s.ATTR_NEXT_SEGMENT]}function _({segment:e,route:t}){return e===u?`resolve page server component "${t}"`:""===e?"resolve root layout server component":`resolve layout server component "${e}"`}n.commonObjectToIsolationScope=function(e){if("object"!=typeof e||!e)return new i.Scope;{let t=c.get(e);if(t)return t;{let t=new i.Scope;return c.set(e,t),t}}},n.dropNextjsRootContext=function(){if(i.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let e=i.getActiveSpan();if(e){let t=i.getRootSpan(e),n=i.spanToJSON(t).data;n?.["next.span_type"]&&i.getRootSpan(e)?.setAttribute(l.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},n.escapeNextjsTracing=function(e){let t=i.GLOBAL_OBJ.AsyncLocalStorage;return t?(r||(r=new t),r.getStore())?e():i.startNewTrace(()=>r.run(!0,()=>e())):(a.DEBUG_BUILD&&i.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),e())},n.getEnhancedResolveSegmentSpanName=_,n.isResolveSegmentSpan=p,n.maybeEnhanceServerComponentSpanName=function(e,t,n){if(!p(t))return;let r=t[s.ATTR_NEXT_SEGMENT],a=n[o.ATTR_HTTP_ROUTE],l=_({segment:r,route:"string"==typeof a?a:""});e.updateName(l),e.setAttributes({"sentry.nextjs.ssr.function.type":r===u?"Page":"Layout","sentry.nextjs.ssr.function.route":a}),e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},800038,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247),i="sentry.cron.checkInId",a="sentry.cron.monitorSlug",s="sentry.cron.startTime",l="sentry.cron.schedule";n.maybeCompleteCronCheckIn=function(e){let t=r.spanToJSON(e).data,n=t?.[i],u=t?.[a],c=t?.[s],p=t?.[l];if(!n||!u||"number"!=typeof c)return;let _=r._INTERNAL_safeDateNow()/1e3-c,T=r.spanToJSON(e).status,d=T&&"ok"!==T?"error":"ok";r.captureCheckIn({checkInId:n,monitorSlug:u,status:d,duration:_},"string"==typeof p?{maxRuntime:720,schedule:{type:"crontab",value:p}}:void 0),e.setAttribute(i,void 0),e.setAttribute(a,void 0),e.setAttribute(s,void 0),e.setAttribute(l,void 0),o.DEBUG_BUILD&&r.debug.log(`[Cron] Completed check-in for "${u}" with status "${d}"`)},n.maybeStartCronCheckIn=function(e,t){let n=function(){let e=globalThis;if(e._sentryVercelCronsConfig)try{return JSON.parse(e._sentryVercelCronsConfig)}catch{o.DEBUG_BUILD&&r.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!n||!t)return;let u=r.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!u)return;let c=Array.isArray(u["user-agent"])?u["user-agent"][0]:u["user-agent"];if(!c?.includes("vercel-cron"))return;let p=n.find(e=>e.path===t);if(!p?.path||!p.schedule)return;let _=p.path,T=r._INTERNAL_safeDateNow()/1e3,d=r.captureCheckIn({monitorSlug:_,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:p.schedule}});o.DEBUG_BUILD&&r.debug.log(`[Cron] Started check-in for "${_}" with ID "${d}"`),e.setAttribute(i,d),e.setAttribute(a,_),e.setAttribute(s,T),e.setAttribute(l,p.schedule)}},383234,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o="messaging.system",i="messaging.destination.name",a="messaging.operation.name",s="sentry.queue.enriched";function l(e,t){let n=e[t];return Array.isArray(n)?n[0]:n}n.maybeCleanupQueueSpan=function(e){let t=r.spanToJSON(e).data;t?.[s]&&e.setAttribute(s,void 0)},n.maybeEnrichQueueConsumerSpan=function(e){let t=r.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!t||"com.vercel.queue.v2beta"!==(Array.isArray(t["ce-type"])?t["ce-type"][0]:t["ce-type"]))return;let n=l(t,"ce-vqsqueuename"),u=l(t,"ce-vqsmessageid"),c=l(t,"ce-vqsconsumergroup"),p=l(t,"ce-vqsdeliverycount");if(e.setAttribute(o,"vercel.queue"),e.setAttribute(a,"process"),n&&e.setAttribute(i,n),u&&e.setAttribute("messaging.message.id",u),c&&e.setAttribute("messaging.consumer.group.name",c),p){let t=parseInt(p,10);isNaN(t)||e.setAttribute("messaging.message.delivery_count",t)}e.setAttribute(s,!0)},n.maybeEnrichQueueProducerSpan=function(e){let t,n=r.spanToJSON(e).data,l=n?.["url.full"];if(!l)return;try{t=new URL(l)}catch{return}if("vercel-queue.com"!==t.hostname&&!t.hostname.endsWith(".vercel-queue.com"))return;let u=t.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!u)return;let c=decodeURIComponent(u[1]);e.setAttribute(o,"vercel.queue"),e.setAttribute(i,c),e.setAttribute(a,"send"),e.setAttribute(s,!0)}},541464,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(808119),i=e.r(976285),a=e.r(779607),s=e.r(322192),l=e.r(224915),u=e.r(851224),c=e.r(997574),p=e.r(800038),_=e.r(383234);n.handleOnSpanStart=function(e){let t=i.spanToJSON(e).data,n=i.getRootSpan(e),T=i.spanToJSON(n).data,d=e===n;if(u.dropMiddlewareTunnelRequests(e,t),"string"==typeof t?.[s.ATTR_NEXT_ROUTE]&&(T?.[o.ATTR_HTTP_REQUEST_METHOD]||T?.[o.SEMATTRS_HTTP_METHOD])&&!T?.[o.ATTR_HTTP_ROUTE]){let e=t[s.ATTR_NEXT_ROUTE].replace(/\/route$/,"");n.updateName(e),n.setAttribute(o.ATTR_HTTP_ROUTE,e),n.setAttribute(s.ATTR_NEXT_ROUTE,e);let r=T?.[o.ATTR_HTTP_REQUEST_METHOD]||T?.[o.SEMATTRS_HTTP_METHOD];"string"==typeof r&&i.getIsolationScope().setTransactionName(`${r} ${e}`),p.maybeStartCronCheckIn(n,e),_.maybeEnrichQueueConsumerSpan(n)}if(t?.[s.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let r=t[s.ATTR_NEXT_SPAN_NAME];"string"==typeof r&&(n.updateName(r),n.setAttribute(o.ATTR_HTTP_ROUTE,r),n.setAttribute(s.ATTR_NEXT_SPAN_NAME,r)),e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(t?.[s.ATTR_NEXT_SPAN_TYPE]!==void 0&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),d){let e=i.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;l.addHeadersAsAttributes(e,n)}if(t?.[s.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&d){let t=i.getCapturedScopesOnSpan(e),n=(t.isolationScope||i.getIsolationScope()).clone(),o=t.scope||i.getCurrentScope(),s=a.getScopesFromContext(r.context.active());s&&(s.isolationScope=n),i.setCapturedScopesOnSpan(e,o,n)}c.maybeEnhanceServerComponentSpanName(e,t,T),_.maybeEnrichQueueProducerSpan(e)}},280432,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247);function i(){let e=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:e}=process.getBuiltinModule("async_hooks")??{};return e}}();if(!e||"function"!=typeof e.snapshot){o.DEBUG_BUILD&&r.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return e.snapshot()}function a(e){return e instanceof Error&&e.message.includes("AsyncLocalStorage")}n.prepareSafeIdGeneratorContext=function(){let e=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),t=r.GLOBAL_OBJ,n=i();if(!n)return;let s=n;t[e]=e=>{try{return s(e)}catch(n){if(!a(n))throw n;let t=i();if(!t)return e();s=t;try{return s(e)}catch(t){if(!a(t))throw t;return e()}}},o.DEBUG_BUILD&&r.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},202446,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.captureUnderscoreErrorException=async function(e){let{req:t,res:n,err:i}=e,a=n?.statusCode||e.statusCode;if(a&&a<500||!e.pathname)return;if(i&&r.isAlreadyCaptured(i)){o.waitUntil(o.flushSafelyWithTimeout());let e="object"==typeof i?i.__sentry_event_id__:void 0;return"string"==typeof e?(r.getIsolationScope().setLastEventId(e),e):r.getIsolationScope().lastEventId()}let s=r.withScope(e=>{if(t){let n=r.httpRequestToRequestData(t);e.setSDKProcessingMetadata({normalizedRequest:n})}return r.captureException(i||`_error.js called with falsy error (${i})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return o.waitUntil(o.flushSafelyWithTimeout()),s}},144865,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.isUseCacheFunction=function(e){if(e.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:t}=function(e){let t=parseInt(e.slice(0,2),16),n=t>>1&63,r=Array(6);for(let e=0;e<6;e++){let t=n>>5-e&1;r[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:r,hasRestArgs:1==(1&t)}}(e.$$id);return"use-cache"===t}},584990,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247),i=e.r(775563),a=e.r(144865);function s(e){let t=i.isBuild(),n=!!e&&a.isUseCacheFunction(e);return n&&o.DEBUG_BUILD&&r.debug.log("Skipping span creation in Cache Components context"),t||n}function l(){return new r.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}n.startInactiveSpan=function(e){return s()?l():r.startInactiveSpan(e)},n.startSpan=function(e,t){return s(t)?t(l()):r.startSpan(e,t)},n.startSpanManual=function(e,t){if(s(t)){let e=l();return t(e,()=>e.end())}return r.startSpanManual(e,t)}},952597,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(753802);n.callDataFetcherTraced=async function(e,t){try{return await e(...t)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),e}},n.withErrorInstrumentation=function(e){return async function(...t){try{return await e.apply(this,t)}catch(t){throw r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:e.name}}}),t}}},n.withTracedServerSideDataFetcher=function(e,t,n,i){return async function(...n){let a=r.httpRequestToRequestData(t);r.getCurrentScope().setTransactionName(`${i.dataFetchingMethodName} (${i.dataFetcherRouteName})`),r.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:a});let s=r.getActiveSpan();s&&"/_error"!==i.requestedRouteName&&r.getRootSpan(s).setAttribute(o.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,i.requestedRouteName);let{"sentry-trace":l,baggage:u}=r.getTraceData();return{sentryTrace:l,baggage:u,data:await e.apply(this,n)}}}},263350,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetStaticPropsWithSentry=function(e,t){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let i=o.withErrorInstrumentation(e);return o.callDataFetcherTraced(i,n)}})}},804806,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:i.pathname,requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,baggage:u,sentryTrace:c}=await e.apply(t,n)??{};return"object"==typeof r&&null!==r&&(c&&(r._sentryTraceData=c),u&&(r._sentryBaggage=u)),r}}})}},233160,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapAppGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i.ctx,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_app",requestedRouteName:i.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,sentryTrace:u,baggage:c}=await e.apply(t,n);return"object"==typeof r&&null!==r&&(r.pageProps||(r.pageProps={}),u&&(r.pageProps._sentryTraceData=u),c&&(r.pageProps._sentryBaggage=c)),r}}})}},935404,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapDocumentGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_document",requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r}=await e.apply(t,n);return r}}})}},914109,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapErrorGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_error",requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,baggage:u,sentryTrace:c}=await e.apply(t,n);return"object"==typeof r&&null!==r&&(c&&(r._sentryTraceData=c),u&&(r._sentryBaggage=u)),r}}})}},315469,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetServerSidePropsWithSentry=function(e,t){return new Proxy(e,{apply:async(e,n,i)=>{if(r.isBuild())return e.apply(n,i);let[a]=i,{req:s,res:l}=a,u=o.withErrorInstrumentation(e),c=o.withTracedServerSideDataFetcher(u,s,l,{dataFetcherRouteName:t,requestedRouteName:t,dataFetchingMethodName:"getServerSideProps"}),{data:p,baggage:_,sentryTrace:T}=await c.apply(n,i);return"object"==typeof p&&null!==p&&"props"in p&&(T&&(p.props._sentryTraceData=T),_&&(p.props._sentryBaggage=_)),p}})}},44343,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.isNotFoundNavigationError=function(e){return r.isError(e)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(e.digest)},n.isRedirectNavigationError=function(e){return r.isError(e)&&"string"==typeof e.digest&&e.digest.startsWith("NEXT_REDIRECT;")}},461047,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);n.wrapServerComponentWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>{let s=r.getIsolationScope(),l=t.headers?r.winterCGHeadersToDict(t.headers):void 0;return s.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),r.handleCallbackErrors(()=>e.apply(n,a),e=>{let n=r.getActiveSpan(),{componentRoute:i,componentType:a}=t,l=!0;s.setTransactionName(`${a} Server Component (${i})`),n&&(o.isNotFoundNavigationError(e)?(l=!1,n.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"})):o.isRedirectNavigationError(e)?(l=!1,n.setStatus({code:r.SPAN_STATUS_OK})):n.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"})),l&&r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{i.waitUntil(i.flushSafelyWithTimeout())})}})}},839777,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);e.r(997574),n.wrapRouteHandlerWithSentry=function(e,t){let{method:n,parameterizedRoute:a,headers:s}=t;return new Proxy(e,{apply:async(e,t,s)=>{let l=r.getActiveSpan(),u=l?r.getRootSpan(l):void 0;return r.withIsolationScope(r.getIsolationScope(),()=>r.withScope(async c=>{c.setTransactionName(`${n} ${a}`);let p=await r.handleCallbackErrors(()=>e.apply(t,s),e=>{o.isRedirectNavigationError(e)||(o.isNotFoundNavigationError(e)?(l&&r.setHttpStatus(l,404),u&&r.setHttpStatus(u,404)):r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{i.waitUntil(i.flushSafelyWithTimeout())});try{p.status&&(l&&r.setHttpStatus(l,p.status),u&&r.setHttpStatus(u,p.status))}catch{}return p}))}})}},573937,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.wrapApiHandlerWithSentryVercelCrons=function(e,t){return new Proxy(e,{apply:(e,n,o)=>{let i;if(!o?.[0])return e.apply(n,o);let[a]=o,s="nextUrl"in a?a.nextUrl.pathname:a.url,l="nextUrl"in a?a.headers.get("user-agent"):a.headers["user-agent"];if(!t||!l?.includes("vercel-cron"))return e.apply(n,o);let u=t.find(e=>e.path===s);if(!u?.path||!u.schedule)return e.apply(n,o);let c=u.path,p=r.captureCheckIn({monitorSlug:c,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:u.schedule}}),_=r._INTERNAL_safeDateNow()/1e3,T=()=>{r.captureCheckIn({checkInId:p,monitorSlug:c,status:"error",duration:r._INTERNAL_safeDateNow()/1e3-_})};try{i=e.apply(n,o)}catch(e){throw T(),e}return"object"==typeof i&&null!==i&&"then"in i?Promise.resolve(i).then(()=>{r.captureCheckIn({checkInId:p,monitorSlug:c,status:"ok",duration:r._INTERNAL_safeDateNow()/1e3-_})},()=>{T()}):r.captureCheckIn({checkInId:p,monitorSlug:c,status:"ok",duration:r._INTERNAL_safeDateNow()/1e3-_}),i}})}},918606,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.wrapMiddlewareWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{let i="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(i&&"string"==typeof i){let e=n[0];if(e instanceof Request&&new URL(e.url).pathname.startsWith(i))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return r.withIsolationScope(i=>{let a,s,l=n[0],u=r.getCurrentScope();l instanceof Request?(i.setSDKProcessingMetadata({normalizedRequest:r.winterCGRequestToRequestData(l)}),a=`middleware ${l.method}`,s="url"):(a="middleware",s="component"),u.setTransactionName(a);let c=r.getActiveSpan();if(c){a="middleware",s="component";let e=r.getRootSpan(c);e&&r.setCapturedScopesOnSpan(e,u,i)}return r.startSpan({name:a,op:"http.server.middleware",attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:s,[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>r.handleCallbackErrors(()=>e.apply(t,n),e=>{r.captureException(e,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{o.waitUntil(o.flushSafelyWithTimeout())}))})}})}},91026,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);function o(e,t){e&&"object"==typeof e&&r.addNonEnumerableProperty(e,"__sentry_event_id__",t)}n.wrapPageComponentWithSentry=function(e){return"function"==typeof e&&e?.prototype?.isReactComponent?class extends e{render(...e){return r.withIsolationScope(()=>{let t=r.getCurrentScope(),n="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(n){let e=r.extractTraceparentData(n);t.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return super.render(...e)}catch(t){let e=r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw o(t,e),t}})}}:"function"==typeof e?new Proxy(e,{apply:(e,t,n)=>r.withIsolationScope(()=>{let i=r.getCurrentScope(),a=n?.[0]?._sentryTraceData;if(a){let e=r.extractTraceparentData(a);i.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return e.apply(t,n)}catch(t){let e=r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw o(t,e),t}})}):e}},332796,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);n.wrapGenerationFunctionWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>{let s,l=r.getIsolationScope();try{s=t.requestAsyncStorage?.getStore()?.headers}catch{}let u=s?r.winterCGHeadersToDict(s):void 0;return l.setSDKProcessingMetadata({normalizedRequest:{headers:u}}),r.handleCallbackErrors(()=>e.apply(n,a),e=>{let n=r.getActiveSpan(),{componentRoute:i,componentType:a,generationFunctionIdentifier:s}=t,u=!0;l.setTransactionName(`${a}.${s} (${i})`),n&&(o.isNotFoundNavigationError(e)?(u=!1,n.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"})):o.isRedirectNavigationError(e)?(u=!1,n.setStatus({code:r.SPAN_STATUS_OK})):n.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"})),u&&r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:s}}})},()=>{i.waitUntil(i.flushSafelyWithTimeout())})}})}},982907,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822),i=e.r(644247),a=e.r(44343);async function s(e,t,n){return r.withIsolationScope(async s=>{let l,u,c=r.getClient()?.getOptions().sendDefaultPii,p={};try{let e=await t.headers;l=e?.get("sentry-trace")??void 0,u=e?.get("baggage"),e?.forEach((e,t)=>{p[t]=e})}catch{i.DEBUG_BUILD&&r.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return s.setTransactionName(`serverAction/${e}`),s.setSDKProcessingMetadata({normalizedRequest:{headers:p}}),(r.getActiveSpan()?(e,t)=>t():r.continueTrace)({sentryTrace:l,baggage:u},async()=>{try{return await r.startSpan({op:"function.server_action",name:`serverAction/${e}`,forceTransaction:!0,attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async e=>{let o=await r.handleCallbackErrors(n,t=>{a.isNotFoundNavigationError(t)?e.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"}):a.isRedirectNavigationError(t)||(e.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"}),r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==t.recordResponse?t.recordResponse:c)&&r.getIsolationScope().setExtra("server_action_result",o),t.formData&&t.formData.forEach((e,t)=>{r.getIsolationScope().setExtra(`server_action_form_data.${t}`,"string"==typeof e?e:"[non-string value]")}),o})}finally{o.waitUntil(o.flushSafelyWithTimeout())}})})}n.withServerActionInstrumentation=function(...e){if("function"==typeof e[1]){let[t,n]=e;return s(t,{},n)}{let[t,n,r]=e;return s(t,n,r)}}},659534,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.captureRequestError=function(e,t,n){r.withScope(i=>{i.setSDKProcessingMetadata({normalizedRequest:{headers:r.headersToDict(t.headers),method:t.method}}),i.setContext("nextjs",{request_path:t.path,router_kind:n.routerKind,router_path:n.routePath,route_type:n.routeType}),i.setTransactionName(`${t.method} ${n.routePath}`),r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),o.waitUntil(o.flushSafelyWithTimeout())})}},13458,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822),i=e.r(997574);n.wrapApiHandlerWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>(i.dropNextjsRootContext(),i.escapeNextjsTracing(()=>{let[i,s]=a;return i?s?i.__withSentry_applied__?e.apply(n,a):(i.__withSentry_applied__=!0,r.withIsolationScope(l=>(r.getActiveSpan()?(e,t)=>t():r.continueTrace)({sentryTrace:i.headers&&r.isString(i.headers["sentry-trace"])?i.headers["sentry-trace"]:void 0,baggage:i.headers?.baggage},()=>{let u=`${(i.method||"GET").toUpperCase()} `,c=r.httpRequestToRequestData(i);return l.setSDKProcessingMetadata({normalizedRequest:c}),l.setTransactionName(`${u}${t}`),r.startSpanManual({name:`${u}${t}`,op:"http.server",forceTransaction:!0,attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async t=>{s.end=new Proxy(s.end,{apply:(e,n,i)=>(r.setHttpStatus(t,s.statusCode),t.end(),o.waitUntil(o.flushSafelyWithTimeout()),e.apply(n,i))});try{return await e.apply(n,a)}catch(i){let n=r.objectify(i);throw r.captureException(n,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:e.name,function:"withSentry"}}}),r.setHttpStatus(t,500),t.end(),await o.flushSafelyWithTimeout(),n}})}))):(r.debug.log(`Wrapped API handler on route "${t}" was not passed a response object. Will not instrument.`),e.apply(n,a)):(r.debug.log(`Wrapped API handler on route "${t}" was not passed a request object. Will not instrument.`),e.apply(n,a))}))})}},398609,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(96892),a=e.r(644247);e.r(313627);let s=e.r(102372),l=e.r(322192),u=e.r(753802),c=e.r(775563),p=e.r(804822),_=e.r(638074),T=e.r(540886),d=e.r(541464),E=e.r(280432),S=e.r(800038),A=e.r(383234),g=e.r(202446),m=e.r(584990),h=e.r(263350),R=e.r(804806),f=e.r(233160),N=e.r(935404),I=e.r(914109),O=e.r(315469),y=e.r(461047),b=e.r(839777),C=e.r(573937),M=e.r(918606),P=e.r(91026),L=e.r(332796),v=e.r(982907),U=e.r(659534),D=e.r(13458);o.GLOBAL_OBJ,n.captureUnderscoreErrorException=g.captureUnderscoreErrorException,n.startInactiveSpan=m.startInactiveSpan,n.startSpan=m.startSpan,n.startSpanManual=m.startSpanManual,n.wrapGetStaticPropsWithSentry=h.wrapGetStaticPropsWithSentry,n.wrapGetInitialPropsWithSentry=R.wrapGetInitialPropsWithSentry,n.wrapAppGetInitialPropsWithSentry=f.wrapAppGetInitialPropsWithSentry,n.wrapDocumentGetInitialPropsWithSentry=N.wrapDocumentGetInitialPropsWithSentry,n.wrapErrorGetInitialPropsWithSentry=I.wrapErrorGetInitialPropsWithSentry,n.wrapGetServerSidePropsWithSentry=O.wrapGetServerSidePropsWithSentry,n.wrapServerComponentWithSentry=y.wrapServerComponentWithSentry,n.wrapRouteHandlerWithSentry=b.wrapRouteHandlerWithSentry,n.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,n.wrapMiddlewareWithSentry=M.wrapMiddlewareWithSentry,n.wrapPageComponentWithSentry=P.wrapPageComponentWithSentry,n.wrapGenerationFunctionWithSentry=L.wrapGenerationFunctionWithSentry,n.withServerActionInstrumentation=v.withServerActionInstrumentation,n.captureRequestError=U.captureRequestError,n.wrapApiHandlerWithSentry=D.wrapApiHandlerWithSentry,n.ErrorBoundary=e=>e.children?"function"==typeof e.children?e.children():e.children:null,n.createReduxEnhancer=function(){return e=>e},n.init=function(e){if(E.prepareSafeIdGeneratorContext(),c.isBuild())return;!a.DEBUG_BUILD&&e.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let t=i.getDefaultIntegrations(e).filter(e=>"Http"!==e.name).concat(i.httpIntegration({disableIncomingRequestSpans:!0}));e.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),t.push(T.distDirRewriteFramesIntegration({distDirName:".next"}));let n=function(){if(p.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),g={environment:e.environment||process.env.SENTRY_ENVIRONMENT||s.getVercelEnv(!1)||"production",release:"dc62485b60679b810b5f74bfb5a22915b7a62314",defaultIntegrations:t,...e,...n};if(a.DEBUG_BUILD&&g.debug&&o.debug.enable(),a.DEBUG_BUILD&&o.debug.log("Initializing SDK..."),o.getClient()){a.DEBUG_BUILD&&o.debug.log("SDK already initialized");return}o.applySdkMetadata(g,"nextjs",["nextjs",n?"cloudflare":"node"]);let m=i.init(g);m?.on("beforeSampling",({spanAttributes:e},t)=>{("string"==typeof e[r.SEMATTRS_HTTP_TARGET]&&e[r.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&e[r.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof e[r.ATTR_URL_QUERY]&&e[r.ATTR_URL_QUERY].includes("sentry_key")&&e[r.ATTR_URL_QUERY].includes("sentry_client"))&&(t.decision=!1)}),m?.on("spanStart",d.handleOnSpanStart),m?.on("spanEnd",S.maybeCompleteCronCheckIn),m?.on("spanEnd",A.maybeCleanupQueueSpan),o.getGlobalScope().addEventProcessor(Object.assign(e=>{if("transaction"!==e.type)return e;if(e.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||e.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===e.transaction||e.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===e.transaction)return null;if("string"==typeof e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let t=o.extractTraceparentData(e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(t?.parentSampled===!1)return null}return e},{id:"NextLowQualityTransactionsFilter"})),o.getGlobalScope().addEventProcessor(Object.assign((e,t)=>{if(void 0!==e.type)return e;let n=t.originalException;if("object"==typeof n&&null!==n&&"$$typeof"in n&&n.$$typeof===Symbol.for("react.postpone"))return null;let r=e.exception?.values?.[0]?.value;return r?.includes("Suspense Exception: This is not a real error!")||r?.includes("Suspense Exception: This is not a real error, and should not leak")?null:e},{id:"DropReactControlFlowErrors"})),m?.on("preprocessEvent",e=>{if("transaction"===e.type&&e.contexts?.trace?.data?.[l.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){e.contexts.trace.data[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",e.contexts.trace.op="http.server",e.transaction&&(e.transaction=o.stripUrlQueryAndFragment(e.transaction));let t=e.contexts.trace.data[r.SEMATTRS_HTTP_METHOD],n=e.contexts?.trace?.data?.[r.SEMATTRS_HTTP_TARGET],i=e.contexts.trace.data[r.ATTR_HTTP_ROUTE]||e.contexts.trace.data[l.ATTR_NEXT_ROUTE],a=e.contexts.trace.data[l.ATTR_NEXT_SPAN_NAME];if("string"==typeof t&&"string"==typeof i&&!i.startsWith("middleware")){let n=i.replace(/\/route$/,"");e.transaction=`${t} ${n}`,e.contexts.trace.data[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",e.contexts.trace.data[l.ATTR_NEXT_ROUTE]=n}e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==e.transaction&&(e.transaction=`${t} ${e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let s="string"==typeof a&&a.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);s&&(e.transaction=`middleware ${s[1]}`,e.contexts.trace.op="http.server.middleware"),"GET /_error"===e.transaction&&n&&(e.transaction=`${t?`${t} `:""}${n}`)}if("transaction"===e.type&&"string"==typeof e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let t=o.extractTraceparentData(e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);t?.traceId&&(e.contexts.trace.trace_id=t.traceId),t?.parentSpanId&&(e.contexts.trace.parent_span_id=t.parentSpanId)}_.setUrlProcessingMetadata(e)});try{o.getGlobalScope().setTag("turbopack",!0)}catch{}return a.DEBUG_BUILD&&o.debug.log("SDK successfully initialized"),m},n.showReportDialog=function(){},n.withErrorBoundary=function(e){return e},Object.prototype.hasOwnProperty.call(i,"__proto__")&&!Object.prototype.hasOwnProperty.call(n,"__proto__")&&Object.defineProperty(n,"__proto__",{enumerable:!0,value:i.__proto__}),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(n,e)||(n[e]=i[e])})},755538,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(256782),o=e.r(398609),i=e.r(96892),a=e.r(659534),s=e.r(202446),l=e.r(584990),u=e.r(982907),c=e.r(13458),p=e.r(573937),_=e.r(233160),T=e.r(935404),d=e.r(914109),E=e.r(332796),S=e.r(804806),A=e.r(315469),g=e.r(263350),m=e.r(918606),h=e.r(91026),R=e.r(839777),f=e.r(461047);n.withSentryConfig=r.withSentryConfig,n.ErrorBoundary=o.ErrorBoundary,n.createReduxEnhancer=o.createReduxEnhancer,n.init=o.init,n.showReportDialog=o.showReportDialog,n.withErrorBoundary=o.withErrorBoundary,n.captureRequestError=a.captureRequestError,n.captureUnderscoreErrorException=s.captureUnderscoreErrorException,n.startInactiveSpan=l.startInactiveSpan,n.startSpan=l.startSpan,n.startSpanManual=l.startSpanManual,n.withServerActionInstrumentation=u.withServerActionInstrumentation,n.wrapApiHandlerWithSentry=c.wrapApiHandlerWithSentry,n.wrapApiHandlerWithSentryVercelCrons=p.wrapApiHandlerWithSentryVercelCrons,n.wrapAppGetInitialPropsWithSentry=_.wrapAppGetInitialPropsWithSentry,n.wrapDocumentGetInitialPropsWithSentry=T.wrapDocumentGetInitialPropsWithSentry,n.wrapErrorGetInitialPropsWithSentry=d.wrapErrorGetInitialPropsWithSentry,n.wrapGenerationFunctionWithSentry=E.wrapGenerationFunctionWithSentry,n.wrapGetInitialPropsWithSentry=S.wrapGetInitialPropsWithSentry,n.wrapGetServerSidePropsWithSentry=A.wrapGetServerSidePropsWithSentry,n.wrapGetStaticPropsWithSentry=g.wrapGetStaticPropsWithSentry,n.wrapMiddlewareWithSentry=m.wrapMiddlewareWithSentry,n.wrapPageComponentWithSentry=h.wrapPageComponentWithSentry,n.wrapRouteHandlerWithSentry=R.wrapRouteHandlerWithSentry,n.wrapServerComponentWithSentry=f.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(i,"__proto__")&&!Object.prototype.hasOwnProperty.call(n,"__proto__")&&Object.defineProperty(n,"__proto__",{enumerable:!0,value:i.__proto__}),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(n,e)||(n[e]=i[e])})}]; -//# debugId=700e904c-e9dc-c1c5-e110-8b95775a6984 +//# debugId=33335499-202e-67bd-daff-32b8b7c5c4fc //# sourceMappingURL=node_modules__pnpm_b4ece637._.js.map \ No newline at end of file diff --git a/.next/server/chunks/node_modules__pnpm_b4ece637._.js.map b/.next/server/chunks/node_modules__pnpm_b4ece637._.js.map index a3abd0e3b..aa5c3c7ed 100644 --- a/.next/server/chunks/node_modules__pnpm_b4ece637._.js.map +++ b/.next/server/chunks/node_modules__pnpm_b4ece637._.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": [], - "debugId": "700e904c-e9dc-c1c5-e110-8b95775a6984", + "debugId": "33335499-202e-67bd-daff-32b8b7c5c4fc", "sections": [ {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/debug-build.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/worldwide.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/version.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/carrier.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debug-logger.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/stacktrace.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/handlers.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/globalError.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/globalUnhandledRejection.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/is.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/browser.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/object.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/randomSafeContext.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/string.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/misc.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/time.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/session.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/merge.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/propagationContext.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/spanOnScope.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/scope.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/defaultScopes.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/chain-and-copy-promiselike.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/asyncContext/stackStrategy.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/asyncContext/index.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/currentScopes.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/semanticAttributes.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/spanstatus.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/baggage.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/dsn.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/parseSampleRate.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tracing.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/spanUtils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/errors.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/hasSpansEnabled.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/should-ignore-span.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/dynamicSamplingContext.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sentryNonRecordingSpan.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/normalize.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/envelope.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/envelope.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/logSpans.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/measurement.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sentrySpan.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/handleCallbackErrors.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sampling.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/trace.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/idleSpan.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/syncpromise.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/eventProcessors.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debug-ids.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/scopeData.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/prepareEvent.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/exports.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/api.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integration.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/attributes.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/timestampSequence.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/trace-info.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/envelope.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/internal.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/envelope.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/internal.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/timer.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/promisebuffer.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ratelimit.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/base.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/clientreport.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/eventUtils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/transactionEvent.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/client.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/checkin.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/userAgent.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/eventbuilder.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/server-runtime-client.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/sdk.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/offline.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/multiplexed.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ai/providerSkip.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/envToBool.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/url.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/isSentryRequestUrl.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/parameterize.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tunnel.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ipAddress.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/sdkMetadata.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/traceData.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tracePropagationTargets.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/meta.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debounce.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/request.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/breadcrumbs.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/functiontostring.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/eventFilters.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/aggregate-errors.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/linkederrors.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metadata.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/moduleMetadata.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/cookie.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/vendor/getIpAddress.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/requestdata.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/console.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/severity.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/captureconsole.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/dedupe.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/extraerrordata.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/path.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/rewriteframes.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/supabase.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/postgresjs.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/zoderrors.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/third-party-errors-filter.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/console.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/featureFlags.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/featureFlags/featureFlagsIntegration.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/featureFlags/growthbook.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/conversationId.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/profiling.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/fetch.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/trpc.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/errorCapture.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/handlers.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/attributes.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/validation.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/resultExtraction.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/sessionManagement.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/sessionExtraction.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/correlation.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/methodConfig.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/attributeExtraction.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/piiFiltering.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/spans.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/transport.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/index.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/feedback.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/public-api.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/console-integration.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/public-api.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/consola.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/gen-ai-attributes.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/mediaStripping.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/messageTruncation.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/vercel-ai-attributes.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/index.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/streaming.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/index.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/streaming.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/index.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/streaming.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/index.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/index.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/index.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/breadcrumb-log-level.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/error.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/supports.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/fetch.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/env.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/node.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/isBrowser.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/exports.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/node-stack-trace.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/anr.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/lru.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/vercelWaitUntil.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/flushIfServerless.ts","../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/vendor/escapeStringForRegex.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/util.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/buildTime.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/deprecatedWebpackOptions.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/getBuildPluginOptions.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/handleRunAfterProductionCompile.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/turbopack/generateValueInjectionRules.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/turbopack/constructTurbopackConfig.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/webpack.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObjectBundlerUtils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_attributes.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/environment.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/sdk-info.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/ExportResult.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/promise.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/attributes.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/merge.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/time.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/internal/exporter.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/suppress-tracing.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/global-error-handler.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/callback.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/lodash.merge.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/logging-error-handler.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/propagation/W3CBaggagePropagator.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/W3CTraceContextPropagator.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/rpc-metadata.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/propagation/composite.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/TraceState.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/configuration.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/url.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/internal/validators.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/constants.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/globalThis.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/timeout.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/timer-util.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/anchored-clock.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/resource/SemanticResourceAttributes.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/internal/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/trace/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/resource/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/trace/SemanticAttributes.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_events.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_metrics.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/enums/AttributeNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/internal-types.ts","../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/lib/error.js","../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/lib/ascii.js","../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/index.js","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/http.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/instrument.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/debug-build.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/captureRequestBody.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/httpServerIntegration.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/httpServerSpansIntegration.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/baggage.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/outgoingHttpRequest.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/SentryHttpInstrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/nodeVersion.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/outgoingFetchRequest.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/node-fetch/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AbstractAsyncHooksContextManager.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AsyncHooksContextManager.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AsyncLocalStorageContextManager.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/ResourceImpl.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/default-service-name.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/platform/node/RandomIdGenerator.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/ConsoleSpanExporter.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/config.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/BasicTracerProvider.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/AlwaysOffSampler.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/BatchSpanProcessorBase.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/ParentBasedSampler.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/utility.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/platform/node/export/BatchSpanProcessor.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Tracer.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/InMemorySpanExporter.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Span.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/TraceIdRatioBasedSampler.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/AlwaysOnSampler.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/SimpleSpanProcessor.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/MultiSpanProcessor.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/enums.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/NoopSpanProcessor.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/TracerMetrics.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Sampler.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/semconv.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/semanticAttributes.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getParentSpanId.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/spanTypes.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getRequestSpanData.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/custom/client.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getSpanKind.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/contextData.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/isSentryRequest.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getSamplingDecision.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/parseSpanDescription.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/enhanceDscWithOpenTelemetryRootSpanName.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getActiveSpan.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/debug-build.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/makeTraceState.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/setupCheck.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/propagator.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/trace.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/suppressTracing.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/setupEventContextTrace.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getTraceData.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/asyncContextStrategy.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/contextManager.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/groupSpansWithParents.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/mapStatus.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/spanExporter.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/spanProcessor.ts","../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/sampler.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/contextManager.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/logger.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/childProcess.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/context.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/contextlines.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/debug.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/common.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/local-variables-async.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/local-variables-sync.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/detection.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/modules.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/errorhandling.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/onuncaughtexception.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/onunhandledrejection.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/processSession.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/spotlight.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/systemError.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/base.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/parse-proxy-response.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/transports/http.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/spotlight.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/module.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/api.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/client.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/esmLoader.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/scope.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/createMissingInstrumentationContext.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/ensureIsWrapped.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/anr/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/logs/capture.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/logs/exports.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/nodeRuntimeMetrics.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/winston.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/pino.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/addOriginToSpan.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/getRequestUrl.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/common.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/cron.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/node-cron.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/node-schedule.ts","../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/http.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/undici.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/node-fetch.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/constants.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/fs.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/enums/ExpressLayerType.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/enums/AttributeNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/internal-types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/debug-build.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/express.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../node_modules/.pnpm/balanced-match%404.0.4/node_modules/balanced-match/src/index.ts","../../../node_modules/.pnpm/brace-expansion%405.0.5/node_modules/brace-expansion/src/index.ts","../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/assert-valid-pattern.ts","../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/brace-expressions.ts","../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/unescape.ts","../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/ast.ts","../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/escape.ts","../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/index.ts","../../../node_modules/.pnpm/%40fastify%2Botel%400.18.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40fastify/otel/index.js","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/enums/AttributeNames.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/utils.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/instrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/enum.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/enums/AttributeNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/symbols.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/internal-types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/graphql.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/internal-types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/propagator.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/kafka.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/lrumemoizer.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/internal-types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mongo.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/mongoose.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mongoose.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/AttributeNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mysql.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bsql-common%400.41.2_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sql-common/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mysql2.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bredis-common%400.38.2/node_modules/%40opentelemetry/redis-common/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v2-v3/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v2-v3/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v4-v5/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v4-v5/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/redis.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/utils/redisCache.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/redis.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/internal-types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/enums/AttributeNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/enums/SpanNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/postgres.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/postgresjs.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/platform/node/globalThis.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../node_modules/.pnpm/%40prisma%2Binstrumentation%407.6.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40prisma/instrumentation/dist/index.js","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/prisma.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/internal-types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/enums/AttributeNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hapi/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/instrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/enums/AttributeNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/internal-types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/koa.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/enums/AttributeNames.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/internal-types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/connect.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/constants.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/knex.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/tedious.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/genericPool.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/instrumentation.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/dataloader.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/semconv-obsolete.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/types.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/version.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/amqplib.ts","../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/amqplib.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/constants.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/instrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/openai/instrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/openai/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/anthropic-ai/instrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/anthropic-ai/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/google-genai/instrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/google-genai/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langchain/instrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langchain/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langgraph/instrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langgraph/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/launchDarkly.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/openFeature.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/statsig.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/unleash.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/growthbook.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/patches/firestore.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/patches/functions.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/firebaseInstrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/firebase.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detect-resources.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/EnvDetector.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/semconv.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/machine-id/getMachineId.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/utils.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/HostDetector.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/index.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/OSDetector.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/ProcessDetector.ts","../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/ServiceInstanceIdDetector.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/sdk/initOtel.ts","../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/sdk/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/manifest/createRouteManifest.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/tunnel.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObjectUtils.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObject.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/index.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/debug-build.ts","../../../node_modules/.pnpm/stacktrace-parser%400.1.11/node_modules/stacktrace-parser/dist/stack-trace-parser.esm.js","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/devErrorSymbolicationEventProcessor.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/getVercelEnv.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/nextSpanAttributes.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/span-attributes-with-logic-attached.ts","../../../node_modules/.pnpm/%40swc%2Bhelpers%400.5.15/node_modules/%40swc/helpers/cjs/_interop_require_default.cjs","../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/modern-browserslist-target.js","../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/entry-constants.ts","../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/constants.ts","../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/constants.js","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/isBuild.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/responseEnd.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/urls.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/setUrlProcessingMetadata.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/distDirRewriteFramesIntegration.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/addHeadersAsAttributes.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/tracingUtils.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/vercelCronsMonitoring.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/vercelQueuesMonitoring.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/handleOnSpanStart.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/prepareSafeIdGeneratorContext.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/_error.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/isUseCacheFunction.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/nextSpan.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/wrapperUtils.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetStaticPropsWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetInitialPropsWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapAppGetInitialPropsWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapDocumentGetInitialPropsWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapErrorGetInitialPropsWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetServerSidePropsWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/nextNavigationErrorUtils.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapServerComponentWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapRouteHandlerWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentryVercelCrons.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapMiddlewareWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapGenerationFunctionWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/withServerActionInstrumentation.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/captureRequestError.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentry.ts","../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/index.ts"],"sourcesContent":["declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\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 `debug` singleton, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Carrier } from '../carrier';\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport type InternalGlobal = {\n navigator?: { userAgent?: string; maxTouchPoints?: number };\n console: Console;\n PerformanceObserver?: any;\n Sentry?: any;\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n /**\n * Native debug IDs implementation (e.g., from Vercel).\n * This uses the same format as _sentryDebugIds but with a different global name.\n * Keys are `error.stack` strings, values are debug IDs.\n */\n _debugIds?: Record;\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record;\n _sentryEsmLoaderHookRegistered?: boolean;\n} & Carrier;\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ = globalThis as unknown as InternalGlobal;\n","// This is a magic string replaced by rollup\ndeclare const __SENTRY_SDK_VERSION__: string;\n\nexport const SDK_VERSION = typeof __SENTRY_SDK_VERSION__ === 'string' ? __SENTRY_SDK_VERSION__ : '0.0.0-unknown.0';\n","import type { AsyncContextStack } from './asyncContext/stackStrategy';\nimport type { AsyncContextStrategy } from './asyncContext/types';\nimport type { Client } from './client';\nimport type { Scope } from './scope';\nimport type { SerializedLog } from './types-hoist/log';\nimport type { SerializedMetric } from './types-hoist/metric';\nimport { SDK_VERSION } from './utils/version';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: VersionedCarrier;\n}\n\ntype VersionedCarrier = {\n version?: string;\n} & Record, SentryCarrier>;\n\nexport interface SentryCarrier {\n acs?: AsyncContextStrategy;\n stack?: AsyncContextStack;\n\n globalScope?: Scope;\n defaultIsolationScope?: Scope;\n defaultCurrentScope?: Scope;\n loggerSettings?: { enabled: boolean };\n /**\n * A map of Sentry clients to their log buffers.\n * This is used to store logs that are sent to Sentry.\n */\n clientToLogBufferMap?: WeakMap>;\n\n /**\n * A map of Sentry clients to their metric buffers.\n * This is used to store metrics that are sent to Sentry.\n */\n clientToMetricBufferMap?: WeakMap>;\n\n /** Overwrites TextEncoder used in `@sentry/core`, need for `react-native@0.73` and older */\n encodePolyfill?: (input: string) => Uint8Array;\n /** Overwrites TextDecoder used in `@sentry/core`, need for `react-native@0.73` and older */\n decodePolyfill?: (input: Uint8Array) => string;\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 **/\nexport function getMainCarrier(): Carrier {\n // This ensures a Sentry carrier exists\n getSentryCarrier(GLOBAL_OBJ);\n return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nexport function getSentryCarrier(carrier: Carrier): SentryCarrier {\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n // For now: First SDK that sets the .version property wins\n __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n // Intentionally populating and returning the version of \"this\" SDK instance\n // rather than what's set in .version so that \"this\" SDK always gets its carrier\n return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\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 `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(\n name: Prop,\n creator: () => NonNullable,\n obj = GLOBAL_OBJ,\n): NonNullable {\n const __SENTRY__ = (obj.__SENTRY__ = obj.__SENTRY__ || {});\n const carrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n // Note: We do not want to set `carrier.version` here, as this may be called before any `init` is called, e.g. for the default scopes\n return carrier[name] || (carrier[name] = creator());\n}\n","import { getGlobalSingleton } from '../carrier';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from './worldwide';\n\nexport interface SentryDebugLogger {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n log(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n}\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: Partial<{\n log(...args: Parameters): void;\n info(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n debug(...args: Parameters): void;\n assert(...args: Parameters): void;\n trace(...args: Parameters): void;\n}> = {};\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 */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console;\n const wrappedFuncs: Partial void>> = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level];\n wrappedFuncs[level] = console[level] as (...args: unknown[]) => void;\n console[level] = originalConsoleMethod as (...args: unknown[]) => void;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as (...args: unknown[]) => void;\n });\n }\n}\n\nfunction enable(): void {\n _getLoggerSettings().enabled = true;\n}\n\nfunction disable(): void {\n _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled(): boolean {\n return _getLoggerSettings().enabled;\n}\n\nfunction log(...args: Parameters): void {\n _maybeLog('log', ...args);\n}\n\nfunction warn(...args: Parameters): void {\n _maybeLog('warn', ...args);\n}\n\nfunction error(...args: Parameters): void {\n _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level: ConsoleLevel, ...args: Parameters<(typeof console)[typeof level]>): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n if (isEnabled()) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n });\n }\n}\n\nfunction _getLoggerSettings(): { enabled: boolean } {\n if (!DEBUG_BUILD) {\n return { enabled: false };\n }\n\n return getGlobalSingleton('loggerSettings', () => ({ enabled: false }));\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n */\nexport const debug = {\n /** Enable logging. */\n enable,\n /** Disable logging. */\n disable,\n /** Check if logging is enabled. */\n isEnabled,\n /** Log a message. */\n log,\n /** Log a warning. */\n warn,\n /** Log an error. */\n error,\n} satisfies SentryDebugLogger;\n","import type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackLineParser, StackParser } from '../types-hoist/stacktrace';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\nexport const UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\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 */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirstLines: number = 0, framesToPop: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirstLines; i < lines.length; i++) {\n let line = lines[i] as string;\n // Truncate lines over 1kb because many of the regular expressions use\n // backtracking which results in run time that increases exponentially\n // with input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n line = line.slice(0, 1024);\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames.slice(framesToPop));\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 */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\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 (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\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 (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the scope itself, making it:\n //\n // Sentry.captureException()\n // scope.captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION,\n }));\n}\n\nfunction getLastStackFrame(arr: StackFrame[]): StackFrame {\n return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch {\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\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nexport function getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n const frames: StackFrame[] = [];\n try {\n // @ts-expect-error Object could be undefined\n exception.values.forEach(value => {\n // @ts-expect-error Value could be undefined\n if (value.stacktrace.frames) {\n // @ts-expect-error Value could be undefined\n frames.push(...value.stacktrace.frames);\n }\n });\n return frames;\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Get the internal name of an internal Vue value, to represent it in a stacktrace.\n *\n * @param value The value to get the internal name of.\n */\nexport function getVueInternalName(value: VueViewModel | VNode): string {\n // Check if it's a VNode (has __v_isVNode) or a component instance (has _isVue/__isVue)\n const isVNode = '__v_isVNode' in value && value.__v_isVNode;\n\n return isVNode ? '[VueVNode]' : '[VueViewModel]';\n}\n\n/**\n * Normalizes stack line paths by removing file:// prefix and leading slashes for Windows paths\n */\nexport function normalizeStackTracePath(path: string | undefined): string | undefined {\n let filename = path?.startsWith('file://') ? path.slice(7) : path;\n // If it's a Windows path, trim the leading slash so that `/C:/foo` becomes `C:/foo`\n if (filename?.match(/\\/[A-Z]:/)) {\n filename = filename.slice(1);\n }\n return filename;\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from '../utils/debug-logger';\nimport { getFunctionName } from '../utils/stacktrace';\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'fetch-body-resolved'\n | 'history'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n handlers[type].push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n if (!instrumented[type]) {\n instrumented[type] = true;\n try {\n instrumentFn();\n } catch (e) {\n DEBUG_BUILD && debug.error(`Error while instrumenting ${type}`, e);\n }\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n debug.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n","import type { HandlerDataError } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n // Note: The reason we are doing window.onerror instead of window.addEventListener('error')\n // is that we are using this handler in the Loader Script, to handle buffered errors consistently\n GLOBAL_OBJ.onerror = function (\n msg: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","import type { HandlerDataUnhandledRejection } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection')\n // is that we are using this handler in the Loader Script, to handle buffered rejections consistently\n GLOBAL_OBJ.onunhandledrejection = function (e: unknown): boolean {\n const handlerData: HandlerDataUnhandledRejection = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Primitive } from '../types-hoist/misc';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { PolymorphicEvent } from '../types-hoist/polymorphics';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst 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 */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object WebAssembly.Exception]':\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: unknown, className: string): boolean {\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 */\nexport function isErrorEvent(wat: unknown): boolean {\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 */\nexport function isDOMError(wat: unknown): boolean {\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 */\nexport function isDOMException(wat: unknown): boolean {\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 */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\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 */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\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 */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\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 */\nexport function isElement(wat: unknown): boolean {\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 */\nexport function isRegExp(wat: unknown): wat is RegExp {\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 */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(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 */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in 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 */\n// TODO: fix in v11, convert any to unknown\n// export function isInstanceOf(wat: unknown, base: { new (...args: any[]): T }): wat is T {\nexport function isInstanceOf(wat: any, base: any): wat is T {\n try {\n return wat instanceof base;\n } catch {\n return false;\n }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel or a VNode.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): wat is VueViewModel | VNode {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n // We also need to check for __v_isVNode because Vue 3 component render instances have an internal __v_isVNode property.\n return !!(\n typeof wat === 'object' &&\n wat !== null &&\n ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue || (wat as { __v_isVNode?: boolean }).__v_isVNode)\n );\n}\n\n/**\n * Checks whether the given parameter is a Standard Web API Request instance.\n *\n * Returns false if Request is not available in the current runtime.\n */\nexport function isRequest(request: unknown): request is Request {\n return typeof Request !== 'undefined' && isInstanceOf(request, Request);\n}\n","import { isString } from './is';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n parentNode: SimpleNode;\n} | null;\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 */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n if (!elem) {\n return '';\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 as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\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 maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\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 {\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: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n\n if (!elem?.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset) {\n if (elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n if (elem.dataset['sentryElement']) {\n return elem.dataset['sentryElement'];\n }\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs = keyAttrs?.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (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 const className = elem.className;\n if (className && isString(className)) {\n const classes = className.split(/\\s+/);\n for (const c of classes) {\n out.push(`.${c}`);\n }\n }\n }\n for (const k of ['aria-label', 'type', 'name', 'title', 'alt']) {\n const attr = elem.getAttribute(k);\n if (attr) {\n out.push(`[${k}=\"${attr}\"]`);\n }\n }\n\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch {\n return '';\n }\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement) {\n if (currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n if (currentElem.dataset['sentryElement']) {\n return currentElem.dataset['sentryElement'];\n }\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { htmlTreeAsString } from './browser';\nimport { debug } from './debug-logger';\nimport { isElement, isError, isEvent, isInstanceOf, isPrimitive } from './is';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * If the method on the passed object is not a function, the wrapper will not be applied.\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 */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n // explicitly casting to unknown because we don't know the type of the method initially at all\n const original = source[name] as unknown;\n\n if (typeof original !== 'function') {\n return;\n }\n\n const wrapped = replacementFactory(original) as WrappedFunction;\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 markFunctionWrapped(wrapped, original);\n }\n\n try {\n source[name] = wrapped;\n } catch {\n DEBUG_BUILD && debug.log(`Failed to replace method \"${name}\" in object`, source);\n }\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 */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value,\n writable: true,\n configurable: true,\n });\n } catch {\n DEBUG_BUILD && debug.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\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 */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch {} // eslint-disable-line no-empty\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 */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function getOriginalFunction(func: WrappedFunction): T | undefined {\n return func.__sentry_original__;\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 argument itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(value: V):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\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 const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\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: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n return Object.fromEntries(Object.entries(obj));\n }\n return {};\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 */\nexport function extractExceptionKeysForMessage(exception: Record): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n return !keys[0] ? '[object has no keys]' : keys.join(', ');\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 *\n * @deprecated This function is no longer used by the SDK and will be removed in a future major version.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\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 const 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: T, memoizationMap: Map): T {\n // Early return for primitive values\n if (inputValue === null || typeof inputValue !== 'object') {\n return inputValue;\n }\n\n // Check memo map first for all object types\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n // handle arrays\n if (Array.isArray(inputValue)) {\n const returnValue: unknown[] = [];\n // Store mapping to handle circular references\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach(value => {\n returnValue.push(_dropUndefinedKeys(value, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n if (isPojo(inputValue)) {\n const returnValue: { [key: string]: unknown } = {};\n // Store mapping to handle circular references\n memoizationMap.set(inputValue, returnValue);\n\n const keys = Object.keys(inputValue);\n\n keys.forEach(key => {\n const val = inputValue[key];\n if (val !== undefined) {\n returnValue[key] = _dropUndefinedKeys(val, memoizationMap);\n }\n });\n\n return returnValue as T;\n }\n\n // For other object types, return as is\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record {\n // Plain objects have Object as constructor or no constructor\n const constructor = (input as object).constructor;\n return constructor === Object || constructor === undefined;\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 */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n // this will catch both undefined and null\n case wat == undefined:\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).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","import { GLOBAL_OBJ } from './worldwide';\n\nexport type RandomSafeContextRunner = (callback: () => T) => T;\n\n// undefined = not yet resolved, null = no runner found, function = runner found\nlet RESOLVED_RUNNER: RandomSafeContextRunner | null | undefined;\n\n/**\n * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts\n */\nexport function withRandomSafeContext(cb: () => T): T {\n // Skips future symbol lookups if we've already resolved (or attempted to resolve) the runner once\n if (RESOLVED_RUNNER !== undefined) {\n return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb();\n }\n\n const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__');\n const globalWithSymbol: typeof GLOBAL_OBJ & { [sym]?: RandomSafeContextRunner } = GLOBAL_OBJ;\n\n if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === 'function') {\n RESOLVED_RUNNER = globalWithSymbol[sym];\n return RESOLVED_RUNNER(cb);\n }\n\n RESOLVED_RUNNER = null;\n return cb();\n}\n\n/**\n * Identical to Math.random() but wrapped in withRandomSafeContext\n * to ensure safe random number generation in certain contexts (e.g., Next.js Cache Components).\n */\nexport function safeMathRandom(): number {\n return withRandomSafeContext(() => Math.random());\n}\n\n/**\n * Identical to Date.now() but wrapped in withRandomSafeContext\n * to ensure safe time value generation in certain contexts (e.g., Next.js Cache Components).\n */\nexport function safeDateNow(): number {\n return withRandomSafeContext(() => Date.now());\n}\n","import { isRegExp, isString, isVueViewModel } from './is';\nimport { getVueInternalName } from './stacktrace';\n\nexport { escapeStringForRegex } from '../vendor/escapeStringForRegex';\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 */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(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 */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\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 */\nexport function safeJoin(input: unknown[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line typescript/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push(getVueInternalName(value));\n } else {\n output.push(String(value));\n }\n } catch {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","import type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { addNonEnumerableProperty } from './object';\nimport { safeMathRandom, withRandomSafeContext } from './randomSafeContext';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\nfunction getCrypto(): CryptoInternal | undefined {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n return gbl.crypto || gbl.msCrypto;\n}\n\nlet emptyUuid: string | undefined;\n\nfunction getRandomByte(): number {\n return safeMathRandom() * 16;\n}\n\n/**\n * UUID4 generator\n * @param crypto Object that provides the crypto API.\n * @returns string Generated UUID4.\n */\nexport function uuid4(crypto = getCrypto()): string {\n try {\n if (crypto?.randomUUID) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return withRandomSafeContext(() => crypto.randomUUID!()).replace(/-/g, '');\n }\n } catch {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n if (!emptyUuid) {\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 emptyUuid = ([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11;\n }\n\n return emptyUuid.replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception?.values?.[0];\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 */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const 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 */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const 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 */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...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\nconst 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 */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\nfunction _parseInt(input: string | undefined): number {\n return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = _parseInt(match[1]);\n const minor = _parseInt(match[2]);\n const patch = _parseInt(match[3]);\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 */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n // We guard here to ensure this is not larger than the existing number of lines\n const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n frame.context_line = snipLine(lines[lineIndex]!, frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => 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 */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n if (isAlreadyCaptured(exception)) {\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 as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether we've already captured the given exception (note: not an identical exception - the very object).\n * It is considered already captured if it has the `__sentry_captured__` property set to `true`.\n *\n * @internal Only considered for internal usage\n */\nexport function isAlreadyCaptured(exception: unknown): boolean | void {\n try {\n return (exception as { __sentry_captured__?: boolean }).__sentry_captured__;\n } catch {} // eslint-disable-line no-empty\n}\n","import { safeDateNow, withRandomSafeContext } from './randomSafeContext';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\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 */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport function dateTimestampInSeconds(): number {\n return safeDateNow() / ONE_SECOND_IN_MS;\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 createUnixTimestampInSecondsFunc(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n // Some browser and environments don't have a performance or timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n if (!performance?.now || !performance.timeOrigin) {\n return dateTimestampInSeconds;\n }\n\n const timeOrigin = performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + withRandomSafeContext(() => performance.now())) / ONE_SECOND_IN_MS;\n };\n}\n\nlet _cachedTimestampInSeconds: (() => number) | undefined;\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 * 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 */\nexport function timestampInSeconds(): number {\n // We store this in a closure so that we don't have to create a new function every time this is called.\n const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc());\n return func();\n}\n\n/**\n * Cached result of getBrowserTimeOrigin.\n */\nlet cachedTimeOrigin: number | null | undefined = null;\n\n/**\n * Gets the time origin and the mode used to determine it.\n *\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 * TODO: move to `@sentry/browser-utils` package.\n */\nfunction getBrowserTimeOrigin(): number | undefined {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance?.now) {\n return undefined;\n }\n\n const threshold = 300_000; // 5 minutes in milliseconds\n const performanceNow = withRandomSafeContext(() => performance.now());\n const dateNow = safeDateNow();\n\n const timeOrigin = performance.timeOrigin;\n if (typeof timeOrigin === 'number') {\n const timeOriginDelta = Math.abs(timeOrigin + performanceNow - dateNow);\n if (timeOriginDelta < threshold) {\n return timeOrigin;\n }\n }\n\n // TODO: Remove all code related to `performance.timing.navigationStart` once we drop support for Safari 14.\n // `performance.timeSince` is available in Safari 15.\n // see: https://caniuse.com/mdn-api_performance_timeorigin\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 // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing?.navigationStart;\n if (typeof navigationStart === 'number') {\n const navigationStartDelta = Math.abs(navigationStart + performanceNow - dateNow);\n if (navigationStartDelta < threshold) {\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to subtracting\n // `performance.now()` from `Date.now()`.\n return dateNow - performanceNow;\n}\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 */\nexport function browserPerformanceTimeOrigin(): number | undefined {\n if (cachedTimeOrigin === null) {\n cachedTimeOrigin = getBrowserTimeOrigin();\n }\n\n return cachedTimeOrigin;\n}\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from './types-hoist/session';\nimport { uuid4 } from './utils/misc';\nimport { timestampInSeconds } from './utils/time';\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 */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: 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 Client.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 */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\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.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\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 const 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 */\nexport function closeSession(session: Session, status?: Exclude): void {\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: Session): SerializedSession {\n return {\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 abnormal_mechanism: session.abnormal_mechanism,\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 * Shallow merge two objects.\n * Does not mutate the passed in objects.\n * Undefined/empty values in the merge object will overwrite existing values.\n *\n * By default, this merges 2 levels deep.\n */\nexport function merge(initialObj: T, mergeObj: T, levels = 2): T {\n // If the merge value is not an object, or we have no merge levels left,\n // we just set the value to the merge value\n if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {\n return mergeObj;\n }\n\n // If the merge object is an empty object, and the initial object is not undefined, we return the initial object\n if (initialObj && Object.keys(mergeObj).length === 0) {\n return initialObj;\n }\n\n // Clone object\n const output = { ...initialObj };\n\n // Merge values into output, resursively\n for (const key in mergeObj) {\n if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n output[key] = merge(output[key], mergeObj[key], levels - 1);\n }\n }\n\n return output;\n}\n","import { uuid4 } from './misc';\n\n/**\n * Generate a random, valid trace ID.\n */\nexport function generateTraceId(): string {\n return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nexport function generateSpanId(): string {\n return uuid4().substring(16);\n}\n","import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\ntype ScopeWithMaybeSpan = Scope & {\n [SCOPE_SPAN_FIELD]?: Span;\n};\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nexport function _setSpanForScope(scope: Scope, span: Span | undefined): void {\n if (span) {\n addNonEnumerableProperty(scope as ScopeWithMaybeSpan, SCOPE_SPAN_FIELD, span);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (scope as ScopeWithMaybeSpan)[SCOPE_SPAN_FIELD];\n }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nexport function _getSpanForScope(scope: ScopeWithMaybeSpan): Span | undefined {\n return scope[SCOPE_SPAN_FIELD];\n}\n","/* eslint-disable max-lines */\nimport type { AttributeObject, RawAttribute, RawAttributes } from './attributes';\nimport type { Client } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport { updateSession } from './session';\nimport type { Attachment } from './types-hoist/attachment';\nimport type { Breadcrumb } from './types-hoist/breadcrumb';\nimport type { Context, Contexts } from './types-hoist/context';\nimport type { DynamicSamplingContext } from './types-hoist/envelope';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { Session } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span } from './types-hoist/span';\nimport type { PropagationContext } from './types-hoist/tracing';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isPlainObject } from './utils/is';\nimport { merge } from './utils/merge';\nimport { uuid4 } from './utils/misc';\nimport { generateTraceId } from './utils/propagationContext';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from './utils/spanOnScope';\nimport { truncate } from './utils/string';\nimport { dateTimestampInSeconds } from './utils/time';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * A context to be used for capturing an event.\n * This can either be a Scope, or a partial ScopeContext,\n * or a callback that receives the current scope and returns a new scope to use.\n */\nexport type CaptureContext = Scope | Partial | ((scope: Scope) => Scope);\n\n/**\n * Data that can be converted to a Scope.\n */\nexport interface ScopeContext {\n user: User;\n level: SeverityLevel;\n extra: Extras;\n contexts: Contexts;\n tags: { [key: string]: Primitive };\n attributes?: RawAttributes>;\n fingerprint: string[];\n propagationContext: PropagationContext;\n conversationId?: string;\n}\n\nexport interface SdkProcessingMetadata {\n [key: string]: unknown;\n requestSession?: {\n status: 'ok' | 'errored' | 'crashed';\n };\n normalizedRequest?: RequestEventData;\n dynamicSamplingContext?: Partial;\n capturedSpanScope?: Scope;\n capturedSpanIsolationScope?: Scope;\n spanCountBeforeProcessing?: number;\n ipAddress?: string;\n}\n\n/**\n * Normalized data of the Scope, ready to be used.\n */\nexport interface ScopeData {\n eventProcessors: EventProcessor[];\n breadcrumbs: Breadcrumb[];\n user: User;\n tags: { [key: string]: Primitive };\n // TODO(v11): Make this a required field (could be subtly breaking if we did it today)\n attributes?: RawAttributes>;\n extra: Extras;\n contexts: Contexts;\n attachments: Attachment[];\n propagationContext: PropagationContext;\n sdkProcessingMetadata: SdkProcessingMetadata;\n fingerprint: string[];\n level?: SeverityLevel;\n transactionName?: string;\n span?: Span;\n conversationId?: string;\n}\n\n/**\n * Holds additional event information.\n */\nexport class Scope {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called during event processing. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Attributes */\n protected _attributes: RawAttributes>;\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\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 protected _sdkProcessingMetadata: SdkProcessingMetadata;\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: SeverityLevel;\n\n /**\n * Transaction Name\n *\n * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n */\n protected _transactionName?: string;\n\n /** Session */\n protected _session?: Session;\n\n /** The client on this scope */\n protected _client?: Client;\n\n /** Contains the last event id of a captured event. */\n protected _lastEventId?: string;\n\n /** Conversation ID */\n protected _conversationId?: string;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public 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._attributes = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = {\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n };\n }\n\n /**\n * Clone all data from this scope into a new scope.\n */\n public clone(): Scope {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._attributes = { ...this._attributes };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n if (this._contexts.flags) {\n // We need to copy the `values` array so insertions on a cloned scope\n // won't affect the original array.\n newScope._contexts.flags = {\n values: [...this._contexts.flags.values],\n };\n }\n\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n newScope._lastEventId = this._lastEventId;\n newScope._conversationId = this._conversationId;\n\n _setSpanForScope(newScope, _getSpanForScope(this));\n\n return newScope;\n }\n\n /**\n * Update the client assigned to this scope.\n * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client,\n * as well as manually created scopes.\n */\n public setClient(client: Client | undefined): void {\n this._client = client;\n }\n\n /**\n * Set the ID of the last captured error event.\n * This is generally only captured on the isolation scope.\n */\n public setLastEventId(lastEventId: string | undefined): void {\n this._lastEventId = lastEventId;\n }\n\n /**\n * Get the client assigned to this scope.\n */\n public getClient(): C | undefined {\n return this._client as C | undefined;\n }\n\n /**\n * Get the ID of the last captured error event.\n * This is generally only available on the isolation scope.\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * Add an event processor that will be called before an event is sent.\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * Set the user for this scope.\n * Set to `null` to unset the user.\n */\n public setUser(user: User | null): this {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Get the user from this scope.\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * Set the conversation ID for this scope.\n * Set to `null` to unset the conversation ID.\n */\n public setConversationId(conversationId: string | null | undefined): this {\n this._conversationId = conversationId || undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set an object that will be merged into existing tags on the scope,\n * and will be sent as tags data with the event.\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set a single tag that will be sent as tags data with the event.\n */\n public setTag(key: string, value: Primitive): this {\n return this.setTags({ [key]: value });\n }\n\n /**\n * Sets attributes onto the scope.\n *\n * These attributes are currently applied to logs and metrics.\n * In the future, they will also be applied to spans.\n *\n * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n * more complex attribute types. We'll add this support in the future but already specify the wider type to\n * avoid a breaking change in the future.\n *\n * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or\n * an object with a `value` and an optional `unit` (if applicable to your attribute).\n *\n * @example\n * ```typescript\n * scope.setAttributes({\n * is_admin: true,\n * payment_selection: 'credit_card',\n * render_duration: { value: 'render_duration', unit: 'ms' },\n * });\n * ```\n */\n public setAttributes>(newAttributes: RawAttributes): this {\n this._attributes = {\n ...this._attributes,\n ...newAttributes,\n };\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets an attribute onto the scope.\n *\n * These attributes are currently applied to logs and metrics.\n * In the future, they will also be applied to spans.\n *\n * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n * more complex attribute types. We'll add this support in the future but already specify the wider type to\n * avoid a breaking change in the future.\n *\n * @param key - The attribute key.\n * @param value - the attribute value. You can either pass in a raw value, or an attribute\n * object with a `value` and an optional `unit` (if applicable to your attribute).\n *\n * @example\n * ```typescript\n * scope.setAttribute('is_admin', true);\n * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' });\n * ```\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setAttribute extends { value: any } | { unit: any } ? AttributeObject : unknown>(\n key: string,\n value: RawAttribute,\n ): this {\n return this.setAttributes({ [key]: value });\n }\n\n /**\n * Removes the attribute with the given key from the scope.\n *\n * @param key - The attribute key.\n *\n * @example\n * ```typescript\n * scope.removeAttribute('is_admin');\n * ```\n */\n public removeAttribute(key: string): this {\n if (key in this._attributes) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n this._notifyScopeListeners();\n }\n return this;\n }\n\n /**\n * Set an object that will be merged into existing extra on the scope,\n * and will be sent as extra data with the event.\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set a single key:value extra entry that will be sent as extra data with the event.\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the fingerprint on the scope to send with the events.\n * @param {string[]} fingerprint Fingerprint to group events in Sentry.\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the level on the scope for future events.\n */\n public setLevel(level: SeverityLevel): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope so that the name of e.g. taken server route or\n * the page location is attached to future events.\n *\n * IMPORTANT: Calling this function does NOT change the name of the currently active\n * root span. If you want to change the name of the active root span, use\n * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n *\n * By default, the SDK updates the scope's transaction name automatically on sensible\n * occasions, such as a page navigation or when handling a new request on the server.\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets context data with the given name.\n * Data passed as context will be normalized. You can also pass `null` to unset the context.\n * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key.\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set the session for the scope.\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Get the session from the scope.\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * Updates the scope with provided data. Can work in three variations:\n * - plain object containing updatable attributes\n * - Scope instance that'll extract the attributes from\n * - callback function that'll receive the current scope as an argument and allow for modifications\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n const scopeInstance =\n scopeToMerge instanceof Scope\n ? scopeToMerge.getScopeData()\n : isPlainObject(scopeToMerge)\n ? (captureContext as ScopeContext)\n : undefined;\n\n const {\n tags,\n attributes,\n extra,\n user,\n contexts,\n level,\n fingerprint = [],\n propagationContext,\n conversationId,\n } = scopeInstance || {};\n\n this._tags = { ...this._tags, ...tags };\n this._attributes = { ...this._attributes, ...attributes };\n this._extra = { ...this._extra, ...extra };\n this._contexts = { ...this._contexts, ...contexts };\n\n if (user && Object.keys(user).length) {\n this._user = user;\n }\n\n if (level) {\n this._level = level;\n }\n\n if (fingerprint.length) {\n this._fingerprint = fingerprint;\n }\n\n if (propagationContext) {\n this._propagationContext = propagationContext;\n }\n\n if (conversationId) {\n this._conversationId = conversationId;\n }\n\n return this;\n }\n\n /**\n * Clears the current scope and resets its properties.\n * Note: The client will not be cleared.\n */\n public clear(): this {\n // client is not cleared here on purpose!\n this._breadcrumbs = [];\n this._tags = {};\n this._attributes = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._session = undefined;\n this._conversationId = undefined;\n _setSpanForScope(this, undefined);\n this._attachments = [];\n this.setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n });\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Adds a breadcrumb to the scope.\n * By default, the last 100 breadcrumbs are kept.\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_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 const mergedBreadcrumb: Breadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory\n message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message,\n };\n\n this._breadcrumbs.push(mergedBreadcrumb);\n if (this._breadcrumbs.length > maxCrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n this._client?.recordDroppedEvent('buffer_overflow', 'log_item');\n }\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * Get the last breadcrumb of the scope.\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * Clear all breadcrumbs from the scope.\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Add an attachment to the scope.\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * Clear all attachments from the scope.\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Get the data of this scope, which should be applied to an event during processing.\n */\n public getScopeData(): ScopeData {\n return {\n breadcrumbs: this._breadcrumbs,\n attachments: this._attachments,\n contexts: this._contexts,\n tags: this._tags,\n attributes: this._attributes,\n extra: this._extra,\n user: this._user,\n level: this._level,\n fingerprint: this._fingerprint || [],\n eventProcessors: this._eventProcessors,\n propagationContext: this._propagationContext,\n sdkProcessingMetadata: this._sdkProcessingMetadata,\n transactionName: this._transactionName,\n span: _getSpanForScope(this),\n conversationId: this._conversationId,\n };\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry.\n */\n public setSDKProcessingMetadata(newData: SdkProcessingMetadata): this {\n this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n return this;\n }\n\n /**\n * Add propagation context to the scope, used for distributed tracing\n */\n public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * Get propagation context from the scope, used for distributed tracing\n */\n public getPropagationContext(): PropagationContext {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @returns {string} The id of the captured Sentry event.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @returns {string} The id of the captured message.\n */\n public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n const eventId = hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = hint?.syntheticException ?? new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a Sentry event for this scope.\n *\n * @returns {string} The id of the captured event.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = event.event_id || hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\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","import { getGlobalSingleton } from './carrier';\nimport { Scope } from './scope';\n\n/** Get the default current scope. */\nexport function getDefaultCurrentScope(): Scope {\n return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nexport function getDefaultIsolationScope(): Scope {\n return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n","const isActualPromise = (p: unknown) =>\n p instanceof Promise && !(p as unknown as ChainedPromiseLike)[kChainedCopy];\n\ntype ChainedPromiseLike = PromiseLike & {\n [kChainedCopy]: true;\n};\nconst kChainedCopy = Symbol('chained PromiseLike');\n\n/**\n * Copy the properties from a decorated promiselike object onto its chained\n * actual promise.\n */\nexport const chainAndCopyPromiseLike = >(\n original: T,\n onSuccess: (value: V) => void,\n onError: (e: unknown) => void,\n): T => {\n const chained = original.then(\n value => {\n onSuccess(value);\n return value;\n },\n err => {\n onError(err);\n throw err;\n },\n ) as T;\n\n // if we're just dealing with \"normal\" Promise objects, return the chain\n return isActualPromise(chained) && isActualPromise(original) ? chained : copyProps(original, chained);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst copyProps = >(original: T, chained: T): T => {\n let mutated = false;\n //oxlint-disable-next-line guard-for-in\n for (const key in original) {\n if (key in chained) continue;\n mutated = true;\n const value = original[key];\n if (typeof value === 'function') {\n Object.defineProperty(chained, key, {\n value: (...args: unknown[]) => value.apply(original, args),\n enumerable: true,\n configurable: true,\n writable: true,\n });\n } else {\n (chained as Record)[key] = value;\n }\n }\n\n if (mutated) Object.assign(chained, { [kChainedCopy]: true });\n return chained;\n};\n","import type { Client } from '../client';\nimport { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes';\nimport { Scope } from '../scope';\nimport { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike';\nimport { isThenable } from '../utils/is';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport type { AsyncContextStrategy } from './types';\n\ninterface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * This is an object that holds a stack of scopes.\n */\nexport class AsyncContextStack {\n private readonly _stack: [Layer, ...Layer[]];\n private _isolationScope: Scope;\n\n public constructor(scope?: Scope, isolationScope?: Scope) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n // scope stack for domains or the process\n this._stack = [{ scope: assignedScope }];\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Fork a scope for the stack.\n */\n public withScope(callback: (scope: Scope) => T): T {\n const scope = this._pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n this._popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n return chainAndCopyPromiseLike(\n maybePromiseResult as PromiseLike> & Record,\n () => this._popScope(),\n () => this._popScope(),\n ) as T;\n }\n\n this._popScope();\n return maybePromiseResult;\n }\n\n /**\n * Get the client of the stack.\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n */\n public getScope(): Scope {\n return this.getStackTop().scope;\n }\n\n /**\n * Get the isolation scope for the stack.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1] as Layer;\n }\n\n /**\n * Push a scope to the stack.\n */\n private _pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = this.getScope().clone();\n this._stack.push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * Pop a scope from the stack.\n */\n private _popScope(): boolean {\n if (this._stack.length <= 1) return false;\n return !!this._stack.pop();\n }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack(): AsyncContextStack {\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n\n return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope(callback: (scope: Scope) => T): T {\n return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope: Scope, callback: (scope: Scope) => T): T {\n const stack = getAsyncContextStack();\n return stack.withScope(() => {\n stack.getStackTop().scope = scope;\n return callback(scope);\n });\n}\n\nfunction withIsolationScope(callback: (isolationScope: Scope) => T): T {\n return getAsyncContextStack().withScope(() => {\n return callback(getAsyncContextStack().getIsolationScope());\n });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nexport function getStackAsyncContextStrategy(): AsyncContextStrategy {\n return {\n withIsolationScope,\n withScope,\n withSetScope,\n withSetIsolationScope: (_isolationScope: Scope, callback: (isolationScope: Scope) => T) => {\n return withIsolationScope(callback);\n },\n getCurrentScope: () => getAsyncContextStack().getScope(),\n getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n };\n}\n","import type { Carrier } from './../carrier';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport { getStackAsyncContextStrategy } from './stackStrategy';\nimport type { AsyncContextStrategy } from './types';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nexport function getAsyncContextStrategy(carrier: Carrier): AsyncContextStrategy {\n const sentry = getSentryCarrier(carrier);\n\n if (sentry.acs) {\n return sentry.acs;\n }\n\n // Otherwise, use the default one (stack)\n return getStackAsyncContextStrategy();\n}\n","import { getAsyncContextStrategy } from './asyncContext';\nimport { getGlobalSingleton, getMainCarrier } from './carrier';\nimport type { Client } from './client';\nimport { Scope } from './scope';\nimport type { TraceContext } from './types-hoist/context';\nimport { generateSpanId } from './utils/propagationContext';\n\nlet _externalPropagationContextProvider: (() => { traceId: string; spanId: string } | undefined) | undefined;\n\n/**\n * Register an external propagation context provider function.\n * When registered, trace context will be read from the external source (e.g. OpenTelemetry)\n * instead of from the Sentry scope's propagation context.\n */\nexport function registerExternalPropagationContext(fn: () => { traceId: string; spanId: string } | undefined): void {\n _externalPropagationContextProvider = fn;\n}\n\n/**\n * Get the external propagation context, if a provider has been registered.\n */\nexport function getExternalPropagationContext(): { traceId: string; spanId: string } | undefined {\n return _externalPropagationContextProvider?.();\n}\n\n/**\n * Check if an external propagation context provider has been registered.\n */\nexport function hasExternalPropagationContext(): boolean {\n return _externalPropagationContextProvider !== undefined;\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current execution context.\n */\nexport function getIsolationScope(): Scope {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): Scope {\n return getGlobalSingleton('globalScope', () => new Scope());\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 */\nexport function withScope(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope(scope: Scope | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope(\n ...rest: [callback: (scope: Scope) => T] | [scope: Scope | undefined, callback: (scope: Scope) => T]\n): T {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n\n if (!scope) {\n return acs.withScope(callback);\n }\n\n return acs.withSetScope(scope, callback);\n }\n\n return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\nexport function withIsolationScope(callback: (isolationScope: Scope) => T): T;\n/**\n * Set the provided isolation scope as active in the given callback. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * If you pass in `undefined` as a scope, it will fork a new isolation scope, the same as if no scope is passed.\n */\nexport function withIsolationScope(isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T): T;\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nexport function withIsolationScope(\n ...rest:\n | [callback: (isolationScope: Scope) => T]\n | [isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T]\n): T {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [isolationScope, callback] = rest;\n\n if (!isolationScope) {\n return acs.withIsolationScope(callback);\n }\n\n return acs.withSetIsolationScope(isolationScope, callback);\n }\n\n return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient(): C | undefined {\n return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nexport function getTraceContextFromScope(scope: Scope): TraceContext {\n const externalContext = getExternalPropagationContext();\n if (externalContext) {\n return { trace_id: externalContext.traceId, span_id: externalContext.spanId };\n }\n\n const propagationContext = scope.getPropagationContext();\n\n const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n\n const traceContext: TraceContext = {\n trace_id: traceId,\n span_id: propagationSpanId || generateSpanId(),\n };\n\n if (parentSpanId) {\n traceContext.parent_span_id = parentSpanId;\n }\n\n return traceContext;\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Attributes that holds the sample rate that was locally applied to a span.\n * If this attribute is not defined, it means that the span inherited a sampling decision.\n *\n * NOTE: Is only defined on root spans.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Attribute holding the sample rate of the previous trace.\n * This is used to sample consistently across subsequent traces in the browser SDK.\n *\n * Note: Only defined on root spans, if opted into consistent sampling\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = 'sentry.previous_trace_sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * A custom span name set by users guaranteed to be taken over any automatically\n * inferred name. This attribute is removed before the span is sent.\n *\n * @internal only meant for internal SDK usage\n * @hidden\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nexport const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nexport const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nexport const SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n\n/**\n * A span link attribute to mark the link as a special span link.\n *\n * Known values:\n * - `previous_trace`: The span links to the frontend root span of the previous trace.\n * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK)\n *\n * Other values may be set as appropriate.\n * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types\n */\nexport const SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = 'sentry.link.type';\n\n/**\n * =============================================================================\n * GEN AI ATTRIBUTES\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n * =============================================================================\n */\n\n/**\n * The conversation ID for linking messages across API calls.\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n","import type { Span } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\n\nexport const SPAN_STATUS_UNSET = 0;\nexport const SPAN_STATUS_OK = 1;\nexport const SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or internal_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatus {\n if (httpStatus < 400 && httpStatus >= 100) {\n return { code: SPAN_STATUS_OK };\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n case 403:\n return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n case 404:\n return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n case 409:\n return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n case 413:\n return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n case 429:\n return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n case 499:\n return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n case 503:\n return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n case 504:\n return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n span.setAttribute('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus.message !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n","import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype ScopeWeakRef = { deref(): Scope | undefined } | Scope;\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: ScopeWeakRef;\n};\n\n/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */\nfunction wrapScopeWithWeakRef(scope: Scope): ScopeWeakRef {\n try {\n // @ts-expect-error - WeakRef is not available in all environments\n const WeakRefClass = GLOBAL_OBJ.WeakRef;\n if (typeof WeakRefClass === 'function') {\n return new WeakRefClass(scope);\n }\n } catch {\n // WeakRef not available or failed to create\n // We'll fall back to a direct scope\n }\n\n return scope;\n}\n\n/** Try to unwrap a scope from a potential WeakRef wrapper. */\nfunction unwrapScopeFromWeakRef(scopeRef: ScopeWeakRef | undefined): Scope | undefined {\n if (!scopeRef) {\n return undefined;\n }\n\n if (typeof scopeRef === 'object' && 'deref' in scopeRef && typeof scopeRef.deref === 'function') {\n try {\n return scopeRef.deref();\n } catch {\n return undefined;\n }\n }\n\n // Fallback to a direct scope\n return scopeRef as Scope;\n}\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nexport function setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, wrapScopeWithWeakRef(isolationScope));\n // We don't wrap the scope with a WeakRef here because webkit aggressively garbage collects\n // and scopes are not held in memory for long periods of time.\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n * If WeakRef was used and scopes have been garbage collected, returns undefined for those scopes.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n const spanWithScopes = span as SpanWithScopes;\n\n return {\n scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]),\n };\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { debug } from './debug-logger';\nimport { isString } from './is';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const 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 */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\n const baggageObject = parseBaggageHeader(baggageHeader);\n\n if (!baggageObject) {\n return undefined;\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce>((acc, [key, value]) => {\n if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext?: Partial,\n): string | undefined {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nexport function parseBaggageHeader(\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Record | undefined {\n if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n return undefined;\n }\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n return baggageHeader.reduce>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n Object.entries(currBaggageObject).forEach(([key, value]) => {\n acc[key] = value;\n });\n return acc;\n }, {});\n }\n\n return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record {\n return baggageHeader\n .split(',')\n .map(baggageEntry => {\n const eqIdx = baggageEntry.indexOf('=');\n if (eqIdx === -1) {\n // Likely an invalid entry\n return [];\n }\n const key = baggageEntry.slice(0, eqIdx);\n const value = baggageEntry.slice(eqIdx + 1);\n return [key, value].map(keyOrValue => {\n try {\n return decodeURIComponent(keyOrValue.trim());\n } catch {\n // We ignore errors here, e.g. if the value cannot be URL decoded.\n // This will then be skipped in the next step\n return;\n }\n });\n })\n .reduce>((acc, [key, value]) => {\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nexport function objectToBaggageHeader(object: Record): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n debug.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import type { Client } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { DsnComponents, DsnLike, DsnProtocol } from '../types-hoist/dsn';\nimport { consoleSandbox, debug } from './debug-logger';\n\n/** Regular expression used to extract org ID from a DSN host. */\nconst ORG_ID_REGEX = /^o(\\d+)\\./;\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)((?:\\[[:.%\\w]+\\]|[\\w.-]+))(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\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 */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\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 or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\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: DsnComponents): boolean {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n debug.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n debug.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Extract the org ID from a DSN host.\n *\n * @param host The host from a DSN\n * @returns The org ID if found, undefined otherwise\n */\nexport function extractOrgIdFromDsnHost(host: string): string | undefined {\n const match = host.match(ORG_ID_REGEX);\n\n return match?.[1];\n}\n\n/**\n * Returns the organization ID of the client.\n *\n * The organization ID is extracted from the DSN. If the client options include a `orgId`, this will always take precedence.\n */\nexport function extractOrgIdFromClient(client: Client): string | undefined {\n const options = client.getOptions();\n\n const { host } = client.getDsn() || {};\n\n let org_id: string | undefined;\n\n if (options.orgId) {\n org_id = String(options.orgId);\n } else if (host) {\n org_id = extractOrgIdFromDsnHost(host);\n }\n\n return org_id;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n","/**\n * Parse a sample rate from a given value.\n * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1).\n * If a string is passed, we try to convert it to a number.\n *\n * Any invalid sample rate will return `undefined`.\n */\nexport function parseSampleRate(sampleRate: unknown): number | undefined {\n if (typeof sampleRate === 'boolean') {\n return Number(sampleRate);\n }\n\n const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate;\n if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) {\n return undefined;\n }\n\n return rate;\n}\n","import type { Client } from '../client';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { PropagationContext } from '../types-hoist/tracing';\nimport type { TraceparentData } from '../types-hoist/transaction';\nimport { debug } from '../utils/debug-logger';\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { extractOrgIdFromClient } from './dsn';\nimport { parseSampleRate } from './parseSampleRate';\nimport { generateSpanId, generateTraceId } from './propagationContext';\nimport { safeMathRandom } from './randomSafeContext';\n\n// oxlint-disable-next-line sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const 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 * This is terrible naming but the function has nothing to do with the W3C traceparent header.\n * It can only parse the `sentry-trace` header and extract the \"trace parent\" data.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create a propagation context from incoming headers or\n * creates a minimal new one if the headers are undefined.\n */\nexport function propagationContextFromHeaders(\n sentryTrace: string | undefined,\n baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n if (!traceparentData?.traceId) {\n return {\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n };\n }\n\n const sampleRand = getSampleRandFromTraceparentAndDsc(traceparentData, dynamicSamplingContext);\n\n // The sample_rand on the DSC needs to be generated based on traceparent + baggage.\n if (dynamicSamplingContext) {\n dynamicSamplingContext.sample_rand = sampleRand.toString();\n }\n\n const { traceId, parentSpanId, parentSampled } = traceparentData;\n\n return {\n traceId,\n parentSpanId,\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n sampleRand,\n };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nexport function generateSentryTraceHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\n/**\n * Creates a W3C traceparent header from the given trace and span ids.\n */\nexport function generateTraceparentHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\n return `00-${traceId}-${spanId}-${sampled ? '01' : '00'}`;\n}\n\n/**\n * Given any combination of an incoming trace, generate a sample rand based on its defined semantics.\n *\n * Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n */\nfunction getSampleRandFromTraceparentAndDsc(\n traceparentData: TraceparentData | undefined,\n dsc: Partial | undefined,\n): number {\n // When there is an incoming sample rand use it.\n const parsedSampleRand = parseSampleRate(dsc?.sample_rand);\n if (parsedSampleRand !== undefined) {\n return parsedSampleRand;\n }\n\n // Otherwise, if there is an incoming sampling decision + sample rate, generate a sample rand that would lead to the same sampling decision.\n const parsedSampleRate = parseSampleRate(dsc?.sample_rate);\n if (parsedSampleRate && traceparentData?.parentSampled !== undefined) {\n return traceparentData.parentSampled\n ? // Returns a sample rand with positive sampling decision [0, sampleRate)\n safeMathRandom() * parsedSampleRate\n : // Returns a sample rand with negative sampling decision [sampleRate, 1)\n parsedSampleRate + safeMathRandom() * (1 - parsedSampleRate);\n } else {\n // If nothing applies, return a random sample rand.\n return safeMathRandom();\n }\n}\n\n/**\n * Determines whether a new trace should be continued based on the provided baggage org ID and the client's `strictTraceContinuation` option.\n * If the trace should not be continued, a new trace will be started.\n *\n * The result is dependent on the `strictTraceContinuation` option in the client.\n * See https://develop.sentry.dev/sdk/telemetry/traces/#stricttracecontinuation\n */\nexport function shouldContinueTrace(client: Client, baggageOrgId?: string): boolean {\n const clientOrgId = extractOrgIdFromClient(client);\n\n // Case: baggage orgID and Client orgID don't match - always start new trace\n if (baggageOrgId && clientOrgId && baggageOrgId !== clientOrgId) {\n debug.log(\n `Won't continue trace because org IDs don't match (incoming baggage: ${baggageOrgId}, SDK options: ${clientOrgId})`,\n );\n return false;\n }\n\n const strictTraceContinuation = client.getOptions().strictTraceContinuation || false; // default for `strictTraceContinuation` is `false`\n\n if (strictTraceContinuation) {\n // With strict continuation enabled, don't continue trace if:\n // - Baggage has orgID, but Client doesn't have one\n // - Client has orgID, but baggage doesn't have one\n if ((baggageOrgId && !clientOrgId) || (!baggageOrgId && clientOrgId)) {\n debug.log(\n `Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${baggageOrgId}, Sentry client: ${clientOrgId})`,\n );\n return false;\n }\n }\n\n return true;\n}\n","import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport { getCurrentScope } from '../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SentrySpan } from '../tracing/sentrySpan';\nimport { SPAN_STATUS_OK, SPAN_STATUS_UNSET } from '../tracing/spanstatus';\nimport { getCapturedScopesOnSpan } from '../tracing/utils';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { SpanLink, SpanLinkJSON } from '../types-hoist/link';\nimport type { Span, SpanAttributes, SpanJSON, SpanOrigin, SpanTimeInput } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { generateSpanId } from '../utils/propagationContext';\nimport { timestampInSeconds } from '../utils/time';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from '../utils/tracing';\nimport { consoleSandbox } from './debug-logger';\nimport { _getSpanForScope } from './spanOnScope';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\nlet hasShownSpanDropWarning = false;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nexport function spanToTransactionTraceContext(span: Span): TraceContext {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, origin, links } = spanToJSON(span);\n\n return {\n parent_span_id,\n span_id,\n trace_id,\n data,\n op,\n status,\n origin,\n links,\n };\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n\n // If the span is remote, we use a random/virtual span as span_id to the trace context,\n // and the remote span as parent_span_id\n const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n const scope = getCapturedScopesOnSpan(span).scope;\n\n const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId;\n\n return {\n parent_span_id,\n span_id,\n trace_id,\n };\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a Span to a W3C traceparent header.\n */\nexport function spanToTraceparentHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateTraceparentHeader(traceId, spanId, sampled);\n}\n\n/**\n * Converts the span links array to a flattened version to be sent within an envelope.\n *\n * If the links array is empty, it returns `undefined` so the empty value can be dropped before it's sent.\n */\nexport function convertSpanLinksForEnvelope(links?: SpanLink[]): SpanLinkJSON[] | undefined {\n if (links && links.length > 0) {\n return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({\n span_id: spanId,\n trace_id: traceId,\n sampled: traceFlags === TRACE_FLAG_SAMPLED,\n attributes,\n ...restContext,\n }));\n } else {\n return undefined;\n }\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nexport function spanToJSON(span: Span): SpanJSON {\n if (spanIsSentrySpan(span)) {\n return span.getSpanJSON();\n }\n\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n const { attributes, startTime, name, endTime, status, links } = span;\n\n // In preparation for the next major of OpenTelemetry, we want to support\n // looking up the parent span id according to the new API\n // In OTel v1, the parent span id is accessed as `parentSpanId`\n // In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n const parentSpanId =\n 'parentSpanId' in span\n ? span.parentSpanId\n : 'parentSpanContext' in span\n ? (span.parentSpanContext as { spanId?: string } | undefined)?.spanId\n : undefined;\n\n return {\n span_id,\n trace_id,\n data: attributes,\n description: name,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status),\n op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n links: convertSpanLinksForEnvelope(links),\n };\n }\n\n // Finally, at least we have `spanContext()`....\n // This should not actually happen in reality, but we need to handle it for type safety.\n return {\n span_id,\n trace_id,\n start_timestamp: 0,\n data: {},\n };\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span: Span): span is OpenTelemetrySdkTraceBaseSpan {\n const castSpan = span as Partial;\n return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\nexport interface OpenTelemetrySdkTraceBaseSpan extends Span {\n attributes: SpanAttributes;\n startTime: SpanTimeInput;\n name: string;\n status: SpanStatus;\n endTime: SpanTimeInput;\n parentSpanId?: string;\n links?: SpanLink[];\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span: Span): span is SentrySpan {\n return typeof (span as SentrySpan).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nexport function getStatusMessage(status: SpanStatus | undefined): string | undefined {\n if (!status || status.code === SPAN_STATUS_UNSET) {\n return undefined;\n }\n\n if (status.code === SPAN_STATUS_OK) {\n return 'ok';\n }\n\n return status.message || 'internal_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\ntype SpanWithPotentialChildren = Span & {\n [CHILD_SPANS_FIELD]?: Set;\n [ROOT_SPAN_FIELD]?: Span;\n};\n\n/**\n * Adds an opaque child span reference to a span.\n */\nexport function addChildSpanToSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\n // We store the root span reference on the child span\n // We need this for `getRootSpan()` to work\n const rootSpan = span[ROOT_SPAN_FIELD] || span;\n addNonEnumerableProperty(childSpan as SpanWithPotentialChildren, ROOT_SPAN_FIELD, rootSpan);\n\n // We store a list of child spans on the parent span\n // We need this for `getSpanDescendants()` to work\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].add(childSpan);\n } else {\n addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n }\n}\n\n/** This is only used internally by Idle Spans. */\nexport function removeChildSpanFromSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].delete(childSpan);\n }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nexport function getSpanDescendants(span: SpanWithPotentialChildren): Span[] {\n const resultSet = new Set();\n\n function addSpanChildren(span: SpanWithPotentialChildren): void {\n // This exit condition is required to not infinitely loop in case of a circular dependency.\n if (resultSet.has(span)) {\n return;\n // We want to ignore unsampled spans (e.g. non recording spans)\n } else if (spanIsSampled(span)) {\n resultSet.add(span);\n const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n for (const childSpan of childSpans) {\n addSpanChildren(childSpan);\n }\n }\n }\n\n addSpanChildren(span);\n\n return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nexport function getRootSpan(span: SpanWithPotentialChildren): Span {\n return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getActiveSpan) {\n return acs.getActiveSpan();\n }\n\n return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Logs a warning once if `beforeSendSpan` is used to drop spans.\n */\nexport function showSpanDropWarning(): void {\n if (!hasShownSpanDropWarning) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.',\n );\n });\n hasShownSpanDropWarning = true;\n }\n}\n\n/**\n * Updates the name of the given span and ensures that the span name is not\n * overwritten by the Sentry SDK.\n *\n * Use this function instead of `span.updateName()` if you want to make sure that\n * your name is kept. For some spans, for example root `http.server` spans the\n * Sentry SDK would otherwise overwrite the span name with a high-quality name\n * it infers when the span ends.\n *\n * Use this function in server code or when your span is started on the server\n * and on the client (browser). If you only update a span name on the client,\n * you can also use `span.updateName()` the SDK does not overwrite the name.\n *\n * @param span - The span to update the name of.\n * @param name - The name to set on the span.\n */\nexport function updateSpanName(span: Span, name: string): void {\n span.updateName(name);\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n });\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { addGlobalErrorInstrumentationHandler } from '../instrument/globalError';\nimport { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\n\nlet errorsInstrumented = false;\n\n/** Only exposed for testing */\nexport function _resetErrorsInstrumented(): void {\n errorsInstrumented = false;\n}\n\n/**\n * Ensure that global errors automatically set the active span status.\n */\nexport function registerSpanErrorInstrumentation(): void {\n if (errorsInstrumented) {\n return;\n }\n\n /**\n * If an error or unhandled promise occurs, we mark the active root span as failed\n */\n function errorCallback(): void {\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n if (rootSpan) {\n const message = 'internal_error';\n DEBUG_BUILD && debug.log(`[Tracing] Root span: ${message} -> Global error occurred`);\n rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message });\n }\n }\n\n // The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n // node.js default exit behaviour\n errorCallback.tag = 'sentry_tracingErrorCallback';\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n","import { getClient } from '../currentScopes';\nimport type { CoreOptions } from '../types-hoist/options';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if span recording is currently enabled.\n *\n * Spans are recorded when at least one of `tracesSampleRate` and `tracesSampler`\n * is defined in the SDK config. This function does not make any assumption about\n * sampling decisions, it only checks if the SDK is configured to record spans.\n *\n * Important: This function only determines if span recording is enabled. Trace\n * continuation and propagation is separately controlled and not covered by this function.\n * If this function returns `false`, traces can still be propagated (which is what\n * we refer to by \"Tracing without Performance\")\n * @see https://develop.sentry.dev/sdk/telemetry/traces/tracing-without-performance/\n *\n * @param maybeOptions An SDK options object to be passed to this function.\n * If this option is not provided, the function will use the current client's options.\n */\nexport function hasSpansEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const options = maybeOptions || getClient()?.getOptions();\n return (\n !!options &&\n // Note: This check is `!= null`, meaning \"nullish\". `0` is not \"nullish\", `undefined` and `null` are. (This comment was brought to you by 15 minutes of questioning life)\n (options.tracesSampleRate != null || !!options.tracesSampler)\n );\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { debug } from './debug-logger';\nimport { isMatchingPattern } from './string';\n\nfunction logIgnoredSpan(droppedSpan: Pick): void {\n debug.log(`Ignoring span ${droppedSpan.op} - ${droppedSpan.description} because it matches \\`ignoreSpans\\`.`);\n}\n\n/**\n * Check if a span should be ignored based on the ignoreSpans configuration.\n */\nexport function shouldIgnoreSpan(\n span: Pick,\n ignoreSpans: Required['ignoreSpans'],\n): boolean {\n if (!ignoreSpans?.length || !span.description) {\n return false;\n }\n\n for (const pattern of ignoreSpans) {\n if (isStringOrRegExp(pattern)) {\n if (isMatchingPattern(span.description, pattern)) {\n DEBUG_BUILD && logIgnoredSpan(span);\n return true;\n }\n continue;\n }\n\n if (!pattern.name && !pattern.op) {\n continue;\n }\n\n const nameMatches = pattern.name ? isMatchingPattern(span.description, pattern.name) : true;\n const opMatches = pattern.op ? span.op && isMatchingPattern(span.op, pattern.op) : true;\n\n // This check here is only correct because we can guarantee that we ran `isMatchingPattern`\n // for at least one of `nameMatches` and `opMatches`. So in contrary to how this looks,\n // not both op and name actually have to match. This is the most efficient way to check\n // for all combinations of name and op patterns.\n if (nameMatches && opMatches) {\n DEBUG_BUILD && logIgnoredSpan(span);\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Takes a list of spans, and a span that was dropped, and re-parents the child spans of the dropped span to the parent of the dropped span, if possible.\n * This mutates the spans array in place!\n */\nexport function reparentChildSpans(spans: SpanJSON[], dropSpan: SpanJSON): void {\n const droppedSpanParentId = dropSpan.parent_span_id;\n const droppedSpanId = dropSpan.span_id;\n\n // This should generally not happen, as we do not apply this on root spans\n // but to be safe, we just bail in this case\n if (!droppedSpanParentId) {\n return;\n }\n\n for (const span of spans) {\n if (span.parent_span_id === droppedSpanId) {\n span.parent_span_id = droppedSpanParentId;\n }\n }\n}\n\nfunction isStringOrRegExp(value: unknown): value is string | RegExp {\n return typeof value === 'string' || value instanceof RegExp;\n}\n","export const DEFAULT_ENVIRONMENT = 'production';\nexport const DEV_ENVIRONMENT = 'development';\n","import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage';\nimport { extractOrgIdFromClient } from '../utils/dsn';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\nimport { getCapturedScopesOnSpan } from './utils';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\ntype SpanWithMaybeDsc = Span & {\n [FROZEN_DSC_FIELD]?: Partial | undefined;\n};\n\n/**\n * Freeze the given DSC on the given span.\n */\nexport function freezeDscOnSpan(span: Span, dsc: Partial): void {\n const spanWithMaybeDsc = span as SpanWithMaybeDsc;\n addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(trace_id: string, client: Client): DynamicSamplingContext {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n\n // Instead of conditionally adding non-undefined values, we add them and then remove them if needed\n // otherwise, the order of baggage entries changes, which \"breaks\" a bunch of tests etc.\n const dsc: DynamicSamplingContext = {\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n public_key,\n trace_id,\n org_id: extractOrgIdFromClient(client),\n };\n\n client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * Get the dynamic sampling context for the currently active scopes.\n */\nexport function getDynamicSamplingContextFromScope(client: Client, scope: Scope): Partial {\n const propagationContext = scope.getPropagationContext();\n return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly> {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n const rootSpan = getRootSpan(span);\n const rootSpanJson = spanToJSON(rootSpan);\n const rootSpanAttributes = rootSpanJson.data;\n const traceState = rootSpan.spanContext().traceState;\n\n // The span sample rate that was locally applied to the root span should also always be applied to the DSC, even if the DSC is frozen.\n // This is so that the downstream traces/services can use parentSampleRate in their `tracesSampler` to make consistent sampling decisions across the entire trace.\n const rootSpanSampleRate =\n traceState?.get('sentry.sample_rate') ??\n rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ??\n rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE];\n\n function applyLocalSampleRateToDsc(dsc: Partial): Partial {\n if (typeof rootSpanSampleRate === 'number' || typeof rootSpanSampleRate === 'string') {\n dsc.sample_rate = `${rootSpanSampleRate}`;\n }\n return dsc;\n }\n\n // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n const frozenDsc = (rootSpan as SpanWithMaybeDsc)[FROZEN_DSC_FIELD];\n if (frozenDsc) {\n return applyLocalSampleRateToDsc(frozenDsc);\n }\n\n // For OpenTelemetry, we freeze the DSC on the trace state\n const traceStateDsc = traceState?.get('sentry.dsc');\n\n // If the span has a DSC, we want it to take precedence\n const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n if (dscOnTraceState) {\n return applyLocalSampleRateToDsc(dscOnTraceState);\n }\n\n // Else, we generate it from the span\n const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n const name = rootSpanJson.description;\n if (source !== 'url' && name) {\n dsc.transaction = name;\n }\n\n // How can we even land here with hasSpansEnabled() returning false?\n // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n // So we end up with an active span that is not sampled (neither positively nor negatively)\n if (hasSpansEnabled()) {\n dsc.sampled = String(spanIsSampled(rootSpan));\n dsc.sample_rand =\n // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans\n // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span\n traceState?.get('sentry.sample_rand') ??\n // On all other platforms we can actually get the scopes from a root span (we use this as a fallback)\n getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString();\n }\n\n applyLocalSampleRateToDsc(dsc);\n\n client.emit('createDsc', dsc, rootSpan);\n\n return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nexport function spanToBaggageHeader(span: Span): string | undefined {\n const dsc = getDynamicSamplingContextFromSpan(span);\n return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n","import type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils';\n\n/**\n * A Sentry Span that is non-recording, meaning it will not be sent to Sentry.\n */\nexport class SentryNonRecordingSpan implements Span {\n private _traceId: string;\n private _spanId: string;\n\n public constructor(spanContext: SentrySpanArguments = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n return {\n spanId: this._spanId,\n traceId: this._traceId,\n traceFlags: TRACE_FLAG_NONE,\n };\n }\n\n /** @inheritdoc */\n public end(_timestamp?: SpanTimeInput): void {}\n\n /** @inheritdoc */\n public setAttribute(_key: string, _value: SpanAttributeValue | undefined): this {\n return this;\n }\n\n /** @inheritdoc */\n public setAttributes(_values: SpanAttributes): this {\n return this;\n }\n\n /** @inheritdoc */\n public setStatus(_status: SpanStatus): this {\n return this;\n }\n\n /** @inheritdoc */\n public updateName(_name: string): this {\n return this;\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return false;\n }\n\n /** @inheritdoc */\n public addEvent(\n _name: string,\n _attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n _startTime?: SpanTimeInput,\n ): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLink(_link: unknown): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(_links: unknown[]): this {\n return this;\n }\n\n /**\n * This should generally not be used,\n * but we need it for being compliant with the OTEL Span interface.\n *\n * @hidden\n * @internal\n */\n public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n}\n","import type { Primitive } from '../types-hoist/misc';\nimport { isSyntheticEvent, isVueViewModel } from './is';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName, getVueInternalName } from './stacktrace';\n\ntype Prototype = { constructor?: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\ntype MemoFunc = [\n // memoize\n (obj: object) => boolean,\n // unmemoize\n (obj: object) => void,\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 normalized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\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 */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\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: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n ['boolean', 'string'].includes(typeof value) ||\n (typeof value === 'number' && Number.isFinite(value))\n ) {\n return value as Primitive;\n }\n\n const 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 as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value as ObjOrArray)['__sentry_override_normalization_depth__'] === 'number'\n ? ((value as ObjOrArray)['__sentry_override_normalization_depth__'] as number)\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 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 const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch {\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 const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\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 const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const 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 const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\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/* eslint-disable complexity */\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: unknown,\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: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._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 // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return getVueInternalName(value);\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n return `[${value}]`;\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 const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n return prototype?.constructor ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // oxlint-disable-next-line sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder(): MemoFunc {\n const inner = new WeakSet();\n function memoize(obj: object): boolean {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n\n function unmemoize(obj: object): void {\n inner.delete(obj);\n }\n return [memoize, unmemoize];\n}\n","import { getSentryCarrier } from '../carrier';\nimport type { Attachment } from '../types-hoist/attachment';\nimport type { DataCategory } from '../types-hoist/datacategory';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport type {\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n Envelope,\n EnvelopeItemType,\n EventEnvelopeHeaders,\n SpanItem,\n} from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { SdkInfo } from '../types-hoist/sdkinfo';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { GLOBAL_OBJ } from './worldwide';\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 */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\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 */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as unknown as E;\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 *\n * If the callback returns true, the rest of the items will be skipped.\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input: string): Uint8Array {\n const carrier = getSentryCarrier(GLOBAL_OBJ);\n return carrier.encodePolyfill ? carrier.encodePolyfill(input) : new TextEncoder().encode(input);\n}\n\n/**\n * Decode a UTF8 array to string.\n */\nfunction decodeUTF8(input: Uint8Array): string {\n const carrier = getSentryCarrier(GLOBAL_OBJ);\n return carrier.decodePolyfill ? carrier.decodePolyfill(input) : new TextDecoder().decode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope): string | Uint8Array {\n const [envHeaders, items] = envelope;\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Parses an envelope\n */\nexport function parseEnvelope(env: string | Uint8Array): Envelope {\n let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n function readBinary(length: number): Uint8Array {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson(): T {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(decodeUTF8(readBinary(i))) as T;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates envelope item for a single span\n */\nexport function createSpanEnvelopeItem(spanJson: Partial): SpanItem {\n const spanHeaders: SpanItem[0] = {\n type: 'span',\n };\n\n return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(attachment: Attachment): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data;\n\n return [\n {\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\ntype OverriddenItemType = Exclude;\n\n// Map of envelope item types to data categories where the category differs from the type.\n// Types that map to themselves (session, attachment, transaction, profile, feedback, span, metric) fall through.\nconst DATA_CATEGORY_OVERRIDES: Record = {\n sessions: 'session',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile_chunk: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n raw_security: 'security',\n log: 'log_item',\n trace_metric: 'metric',\n};\n\nfunction _isOverriddenType(type: EnvelopeItemType): type is OverriddenItemType {\n return type in DATA_CATEGORY_OVERRIDES;\n}\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return _isOverriddenType(type) ? DATA_CATEGORY_OVERRIDES[type] : type;\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\n if (!metadataOrEvent?.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n return {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dynamicSamplingContext,\n }),\n };\n}\n","import type { Client } from './client';\nimport { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext';\nimport type { SentrySpan } from './tracing/sentrySpan';\nimport type { LegacyCSPReport } from './types-hoist/csp';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type {\n DynamicSamplingContext,\n EventEnvelope,\n EventItem,\n RawSecurityEnvelope,\n RawSecurityItem,\n SessionEnvelope,\n SessionItem,\n SpanEnvelope,\n SpanItem,\n} from './types-hoist/envelope';\nimport type { Event } from './types-hoist/event';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport { dsnToString } from './utils/dsn';\nimport {\n createEnvelope,\n createEventEnvelopeHeaders,\n createSpanEnvelopeItem,\n getSdkMetadataForEnvelopeHeader,\n} from './utils/envelope';\nimport { uuid4 } from './utils/misc';\nimport { shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning, spanToJSON } from './utils/spanUtils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n *\n * @internal, exported only for testing\n **/\nexport function _enhanceEventWithSdkInfo(event: Event, newSdkInfo?: SdkInfo): Event {\n if (!newSdkInfo) {\n return event;\n }\n\n const eventSdkInfo = event.sdk || {};\n\n event.sdk = {\n ...eventSdkInfo,\n name: eventSdkInfo.name || newSdkInfo.name,\n version: eventSdkInfo.version || newSdkInfo.version,\n integrations: [...(event.sdk?.integrations || []), ...(newSdkInfo.integrations || [])],\n packages: [...(event.sdk?.packages || []), ...(newSdkInfo.packages || [])],\n settings:\n event.sdk?.settings || newSdkInfo.settings\n ? {\n ...event.sdk?.settings,\n ...newSdkInfo.settings,\n }\n : undefined,\n };\n\n return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): SessionEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem: SessionItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n event: Event,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): EventEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n /*\n Note: Due to TS, event.type may be `replay_event`, theoretically.\n In practice, we never call `createEventEnvelope` with `replay_event` type,\n and we'd have to adjust a looot of types to make this work properly.\n We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n So the safe choice is to really guard against the replay_event type here.\n */\n const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n _enhanceEventWithSdkInfo(event, metadata?.sdk);\n\n const 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 const eventItem: EventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/**\n * Create envelope from Span item.\n *\n * Takes an optional client and runs spans through `beforeSendSpan` if available.\n */\nexport function createSpanEnvelope(spans: [SentrySpan, ...SentrySpan[]], client?: Client): SpanEnvelope {\n function dscHasRequiredProps(dsc: Partial): dsc is DynamicSamplingContext {\n return !!dsc.trace_id && !!dsc.public_key;\n }\n\n // For the moment we'll obtain the DSC from the first span in the array\n // This might need to be changed if we permit sending multiple spans from\n // different segments in one envelope\n const dsc = getDynamicSamplingContextFromSpan(spans[0]);\n\n const dsn = client?.getDsn();\n const tunnel = client?.getOptions().tunnel;\n\n const headers: SpanEnvelope[0] = {\n sent_at: new Date().toISOString(),\n ...(dscHasRequiredProps(dsc) && { trace: dsc }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const { beforeSendSpan, ignoreSpans } = client?.getOptions() || {};\n\n const filteredSpans = ignoreSpans?.length\n ? spans.filter(span => !shouldIgnoreSpan(spanToJSON(span), ignoreSpans))\n : spans;\n const droppedSpans = spans.length - filteredSpans.length;\n\n if (droppedSpans) {\n client?.recordDroppedEvent('before_send', 'span', droppedSpans);\n }\n\n const convertToSpanJSON = beforeSendSpan\n ? (span: SentrySpan) => {\n const spanJson = spanToJSON(span);\n const processedSpan = beforeSendSpan(spanJson);\n\n if (!processedSpan) {\n showSpanDropWarning();\n return spanJson;\n }\n\n return processedSpan;\n }\n : spanToJSON;\n\n const items: SpanItem[] = [];\n for (const span of filteredSpans) {\n const spanJson = convertToSpanJSON(span);\n if (spanJson) {\n items.push(createSpanEnvelopeItem(spanJson));\n }\n }\n\n return createEnvelope(headers, items);\n}\n\n/**\n * Create an Envelope from a CSP report.\n */\nexport function createRawSecurityEnvelope(\n report: LegacyCSPReport,\n dsn: DsnComponents,\n tunnel?: string,\n release?: string,\n environment?: string,\n): RawSecurityEnvelope {\n const envelopeHeaders = {\n event_id: uuid4(),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const eventItem: RawSecurityItem = [\n { type: 'raw_security', sentry_release: release, sentry_environment: environment },\n report,\n ];\n\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { Span } from '../types-hoist/span';\nimport { debug } from '../utils/debug-logger';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Print a log message for a started span.\n */\nexport function logSpanStart(span: Span): void {\n if (!DEBUG_BUILD) return;\n\n const { description = '< unknown name >', op = '< unknown op >', parent_span_id: parentSpanId } = spanToJSON(span);\n const { spanId } = span.spanContext();\n\n const sampled = spanIsSampled(span);\n const rootSpan = getRootSpan(span);\n const isRootSpan = rootSpan === span;\n\n const header = `[Tracing] Starting ${sampled ? 'sampled' : 'unsampled'} ${isRootSpan ? 'root ' : ''}span`;\n\n const infoParts: string[] = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`];\n\n if (parentSpanId) {\n infoParts.push(`parent ID: ${parentSpanId}`);\n }\n\n if (!isRootSpan) {\n const { op, description } = spanToJSON(rootSpan);\n infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`);\n if (op) {\n infoParts.push(`root op: ${op}`);\n }\n if (description) {\n infoParts.push(`root description: ${description}`);\n }\n }\n\n debug.log(`${header}\n ${infoParts.join('\\n ')}`);\n}\n\n/**\n * Print a log message for an ended span.\n */\nexport function logSpanEnd(span: Span): void {\n if (!DEBUG_BUILD) return;\n\n const { description = '< unknown name >', op = '< unknown op >' } = spanToJSON(span);\n const { spanId } = span.spanContext();\n const rootSpan = getRootSpan(span);\n const isRootSpan = rootSpan === span;\n\n const msg = `[Tracing] Finishing \"${op}\" ${isRootSpan ? 'root ' : ''}span \"${description}\" with ID ${spanId}`;\n debug.log(msg);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT,\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE,\n} from '../semanticAttributes';\nimport type { Measurements, MeasurementUnit } from '../types-hoist/measurement';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\n\n/**\n * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span\n * as the 4th parameter.\n */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit, activeSpan = getActiveSpan()): void {\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n\n if (rootSpan) {\n DEBUG_BUILD && debug.log(`[Measurement] Setting measurement on root span: ${name} = ${value} ${unit}`);\n rootSpan.addEvent(name, {\n [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value,\n [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit as string,\n });\n }\n}\n\n/**\n * Convert timed events to measurements.\n */\nexport function timedEventsToMeasurements(events: TimedEvent[]): Measurements | undefined {\n if (!events || events.length === 0) {\n return undefined;\n }\n\n const measurements: Measurements = {};\n events.forEach(event => {\n const attributes = event.attributes || {};\n const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] as MeasurementUnit | undefined;\n const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] as number | undefined;\n\n if (typeof unit === 'string' && typeof value === 'number') {\n measurements[event.name] = { value, unit };\n }\n });\n\n return measurements;\n}\n","import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { createSpanEnvelope } from '../envelope';\nimport {\n SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME,\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SpanEnvelope } from '../types-hoist/envelope';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanLink } from '../types-hoist/link';\nimport type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport {\n convertSpanLinksForEnvelope,\n getRootSpan,\n getSpanDescendants,\n getStatusMessage,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTransactionTraceContext,\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanEnd } from './logSpans';\nimport { timedEventsToMeasurements } from './measurement';\nimport { getCapturedScopesOnSpan } from './utils';\n\nconst MAX_SPAN_COUNT = 1000;\n\n/**\n * Span contains all data about a span\n */\nexport class SentrySpan implements Span {\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n protected _links?: SpanLink[];\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatus;\n /** The timed events added to this span. */\n protected _events: TimedEvent[];\n\n /** if true, treat span as a standalone span (not part of a transaction) */\n private _isStandaloneSpan?: boolean;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startSpan()`\n * or other span methods.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext: SentrySpanArguments = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n this._links = spanContext.links;\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n this._name = spanContext.name;\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.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n\n this._events = [];\n\n this._isStandaloneSpan = spanContext.isStandalone;\n\n // If the span is already ended, ensure we finalize the span immediately\n if (this._endTime) {\n this._onSpanEnded();\n }\n }\n\n /** @inheritDoc */\n public addLink(link: SpanLink): this {\n if (this._links) {\n this._links.push(link);\n } else {\n this._links = [link];\n }\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(links: SpanLink[]): this {\n if (this._links) {\n this._links.push(...links);\n } else {\n this._links = links;\n }\n return this;\n }\n\n /**\n * This should generally not be used,\n * but it is needed for being compliant with the OTEL Span interface.\n *\n * @hidden\n * @internal\n */\n public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /** @inheritdoc */\n public setAttribute(key: string, value: SpanAttributeValue | undefined): this {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n\n return this;\n }\n\n /** @inheritdoc */\n public setAttributes(attributes: SpanAttributes): this {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n return this;\n }\n\n /**\n * This should generally not be used,\n * but we need it for browser tracing where we want to adjust the start time afterwards.\n * USE THIS WITH CAUTION!\n *\n * @hidden\n * @internal\n */\n public updateStartTime(timeInput: SpanTimeInput): void {\n this._startTime = spanTimeInputToSeconds(timeInput);\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatus): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom');\n return this;\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n logSpanEnd(this);\n\n this._onSpanEnded();\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n public getSpanJSON(): SpanJSON {\n return {\n data: this._attributes,\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: getStatusMessage(this._status),\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n measurements: timedEventsToMeasurements(this._events),\n is_segment: (this._isStandaloneSpan && getRootSpan(this) === this) || undefined,\n segment_id: this._isStandaloneSpan ? getRootSpan(this).spanContext().spanId : undefined,\n links: convertSpanLinksForEnvelope(this._links),\n };\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * @inheritdoc\n */\n public addEvent(\n name: string,\n attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n startTime?: SpanTimeInput,\n ): this {\n DEBUG_BUILD && debug.log('[Tracing] Adding an event to span:', name);\n\n const time = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || timestampInSeconds();\n const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {};\n\n const event: TimedEvent = {\n name,\n time: spanTimeInputToSeconds(time),\n attributes,\n };\n\n this._events.push(event);\n\n return this;\n }\n\n /**\n * This method should generally not be used,\n * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set.\n * USE THIS WITH CAUTION!\n * @internal\n * @hidden\n * @experimental\n */\n public isStandaloneSpan(): boolean {\n return !!this._isStandaloneSpan;\n }\n\n /** Emit `spanEnd` when the span is ended. */\n private _onSpanEnded(): void {\n const client = getClient();\n if (client) {\n client.emit('spanEnd', this);\n }\n\n // A segment span is basically the root span of a local span tree.\n // So for now, this is either what we previously refer to as the root span,\n // or a standalone span.\n const isSegmentSpan = this._isStandaloneSpan || this === getRootSpan(this);\n\n if (!isSegmentSpan) {\n return;\n }\n\n // if this is a standalone span, we send it immediately\n if (this._isStandaloneSpan) {\n if (this._sampled) {\n sendSpanEnvelope(createSpanEnvelope([this], client));\n } else {\n DEBUG_BUILD &&\n debug.log('[Tracing] Discarding standalone span because its trace was not chosen to be sampled.');\n if (client) {\n client.recordDroppedEvent('sample_rate', 'span');\n }\n }\n return;\n }\n\n const transactionEvent = this._convertSpanToTransaction();\n if (transactionEvent) {\n const scope = getCapturedScopesOnSpan(this).scope || getCurrentScope();\n scope.captureEvent(transactionEvent);\n }\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n private _convertSpanToTransaction(): TransactionEvent | undefined {\n // We can only convert finished spans\n if (!isFullFinishedSpan(spanToJSON(this))) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && debug.warn('Transaction has no name, falling back to ``.');\n this._name = '';\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n const normalizedRequest = capturedSpanScope?.getScopeData().sdkProcessingMetadata?.normalizedRequest;\n\n if (this._sampled !== true) {\n return undefined;\n }\n\n // The transaction span itself as well as any potential standalone spans should be filtered out\n const finishedSpans = getSpanDescendants(this).filter(span => span !== this && !isStandaloneSpan(span));\n\n const spans = finishedSpans.map(span => spanToJSON(span)).filter(isFullFinishedSpan);\n\n const source = this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n // remove internal root span attributes we don't need to send.\n /* eslint-disable @typescript-eslint/no-dynamic-delete */\n delete this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n spans.forEach(span => {\n delete span.data[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n });\n // eslint-enabled-next-line @typescript-eslint/no-dynamic-delete\n\n const transaction: TransactionEvent = {\n contexts: {\n trace: spanToTransactionTraceContext(this),\n },\n spans:\n // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here\n // we do not use spans anymore after this point\n spans.length > MAX_SPAN_COUNT\n ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n : spans,\n start_timestamp: this._startTime,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n capturedSpanScope,\n capturedSpanIsolationScope,\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n },\n request: normalizedRequest,\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const measurements = timedEventsToMeasurements(this._events);\n const hasMeasurements = measurements && Object.keys(measurements).length;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\n debug.log(\n '[Measurements] Adding measurements to transaction event',\n JSON.stringify(measurements, undefined, 2),\n );\n transaction.measurements = measurements;\n }\n\n return transaction;\n }\n}\n\nfunction isSpanTimeInput(value: undefined | SpanAttributes | SpanTimeInput): value is SpanTimeInput {\n return (value && typeof value === 'number') || value instanceof Date || Array.isArray(value);\n}\n\n// We want to filter out any incomplete SpanJSON objects\nfunction isFullFinishedSpan(input: Partial): input is SpanJSON {\n return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id;\n}\n\n/** `SentrySpan`s can be sent as a standalone span rather than belonging to a transaction */\nfunction isStandaloneSpan(span: Span): boolean {\n return span instanceof SentrySpan && span.isStandaloneSpan();\n}\n\n/**\n * Sends a `SpanEnvelope`.\n *\n * Note: If the envelope's spans are dropped, e.g. via `beforeSendSpan`,\n * the envelope will not be sent either.\n */\nfunction sendSpanEnvelope(envelope: SpanEnvelope): void {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const spanItems = envelope[1];\n if (!spanItems || spanItems.length === 0) {\n client.recordDroppedEvent('before_send', 'span');\n return;\n }\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n","import { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike';\nimport { isThenable } from '../utils/is';\n\n/* eslint-disable */\n// Vendor \"Awaited\" in to be TS 3.8 compatible\ntype AwaitedPromise = T extends null | undefined\n ? T // special case for `null | undefined` when not in `--strictNullChecks` mode\n : T extends object & { then(onfulfilled: infer F, ...args: infer _): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V, ...args: infer _) => any // if the argument to `then` is callable, extracts the first argument\n ? V // normally this would recursively unwrap, but this is not possible in TS3.8\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n/* eslint-enable */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors Promise, PromiseValue = AwaitedPromise>>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: PromiseValue) => void,\n): ReturnType;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors any>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: ReturnType) => void,\n): ReturnType;\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n ValueType = ReturnType,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally: () => void = () => {},\n onSuccess: (result: ValueType | AwaitedPromise) => void = () => {},\n): ValueType {\n let maybePromiseResult: ReturnType;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally, onSuccess);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n *\n * For thenable objects with extra methods (like jQuery's jqXHR),\n * this function preserves those methods by wrapping the original thenable in a Proxy\n * that intercepts .then() calls to apply error handling while forwarding all other\n * properties to the original object.\n * This allows code like `startSpan(() => $.ajax(...)).abort()` to work correctly.\n */\nfunction maybeHandlePromiseRejection(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n onSuccess: (result: MaybePromise | AwaitedPromise) => void,\n): MaybePromise {\n if (isThenable(value)) {\n return chainAndCopyPromiseLike(\n value as MaybePromise & PromiseLike> & Record,\n result => {\n onFinally();\n onSuccess(result as Awaited);\n },\n err => {\n onError(err);\n onFinally();\n },\n ) as MaybePromise;\n }\n // Non-thenable value - call callbacks immediately and return as-is\n onFinally();\n onSuccess(value);\n return value;\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { CoreOptions } from '../types-hoist/options';\nimport type { SamplingContext } from '../types-hoist/samplingcontext';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\n\n/**\n * Makes a sampling decision for the given options.\n *\n * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n */\nexport function sampleSpan(\n options: Pick,\n samplingContext: SamplingContext,\n sampleRand: number,\n): [sampled: boolean, sampleRate?: number, localSampleRateWasApplied?: boolean] {\n // nothing to do if span recording is not enabled\n if (!hasSpansEnabled(options)) {\n return [false];\n }\n\n let localSampleRateWasApplied = undefined;\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({\n ...samplingContext,\n inheritOrSampleWith: fallbackSampleRate => {\n // If we have an incoming parent sample rate, we'll just use that one.\n // The sampling decision will be inherited because of the sample_rand that was generated when the trace reached the incoming boundaries of the SDK.\n if (typeof samplingContext.parentSampleRate === 'number') {\n return samplingContext.parentSampleRate;\n }\n\n // Fallback if parent sample rate is not on the incoming trace (e.g. if there is no baggage)\n // This is to provide backwards compatibility if there are incoming traces from older SDKs that don't send a parent sample rate or a sample rand. In these cases we just want to force either a sampling decision on the downstream traces via the sample rate.\n if (typeof samplingContext.parentSampled === 'boolean') {\n return Number(samplingContext.parentSampled);\n }\n\n return fallbackSampleRate;\n },\n });\n localSampleRateWasApplied = true;\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n localSampleRateWasApplied = true;\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get.\n // (The only valid values are booleans or numbers between 0 and 1.)\n const parsedSampleRate = parseSampleRate(sampleRate);\n\n if (parsedSampleRate === undefined) {\n DEBUG_BUILD &&\n debug.warn(\n `[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n sampleRate,\n )} of type ${JSON.stringify(typeof sampleRate)}.`,\n );\n return [false];\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 (!parsedSampleRate) {\n DEBUG_BUILD &&\n debug.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 return [false, parsedSampleRate, localSampleRateWasApplied];\n }\n\n // We always compare the sample rand for the current execution context against the chosen sample rate.\n // Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n const shouldSample = sampleRand < parsedSampleRate;\n\n // if we're not going to keep it, we're done\n if (!shouldSample) {\n DEBUG_BUILD &&\n debug.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n }\n\n return [shouldSample, parsedSampleRate, localSampleRateWasApplied];\n}\n","/* eslint-disable max-lines */\n\nimport { getAsyncContextStrategy } from '../asyncContext';\nimport type { AsyncContextStrategy } from '../asyncContext/types';\nimport { getMainCarrier } from '../carrier';\nimport { getClient, getCurrentScope, getIsolationScope, withScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SentrySpanArguments, Span, SpanTimeInput } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { baggageHeaderToDynamicSamplingContext } from '../utils/baggage';\nimport { debug } from '../utils/debug-logger';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\nimport { generateTraceId } from '../utils/propagationContext';\nimport { safeMathRandom } from '../utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope';\nimport { addChildSpanToSpan, getRootSpan, spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport { propagationContextFromHeaders, shouldContinueTrace } from '../utils/tracing';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanStart } from './logSpans';\nimport { sampleSpan } from './sampling';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\nimport { setCapturedScopesOnSpan } from './utils';\n\nconst SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T {\n const acs = getAcs();\n if (acs.startSpan) {\n return acs.startSpan(options, callback);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n // We still need to fork a potentially passed scope, as we set the active span on it\n // and we need to ensure that it is cleaned up properly once the span ends.\n const customForkedScope = customScope?.clone();\n\n return withScope(customForkedScope, () => {\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? new SentryNonRecordingSpan()\n : createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n\n _setSpanForScope(scope, activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n const { status } = spanToJSON(activeSpan);\n if (activeSpan.isRecording() && (!status || status === 'ok')) {\n activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n },\n () => {\n activeSpan.end();\n },\n );\n });\n });\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. Use `span.end()` to end the span.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\n const acs = getAcs();\n if (acs.startSpanManual) {\n return acs.startSpanManual(options, callback);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n const customForkedScope = customScope?.clone();\n\n return withScope(customForkedScope, () => {\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? new SentryNonRecordingSpan()\n : createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n\n _setSpanForScope(scope, activeSpan);\n\n return handleCallbackErrors(\n // We pass the `finish` function to the callback, so the user can finish the span manually\n // this is mainly here for historic purposes because previously, we instructed users to call\n // `finish` instead of `span.end()` to also clean up the scope. Nowadays, calling `span.end()`\n // or `finish` has the same effect and we simply leave it here to avoid breaking user code.\n () => callback(activeSpan, () => activeSpan.end()),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n const { status } = spanToJSON(activeSpan);\n if (activeSpan.isRecording() && (!status || status === 'ok')) {\n activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\n const acs = getAcs();\n if (acs.startInactiveSpan) {\n return acs.startInactiveSpan(options);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan } = options;\n\n // If `options.scope` is defined, we use this as as a wrapper,\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = options.scope\n ? (callback: () => Span) => withScope(options.scope, callback)\n : customParentSpan !== undefined\n ? (callback: () => Span) => withActiveSpan(customParentSpan, callback)\n : (callback: () => Span) => callback();\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return new SentryNonRecordingSpan();\n }\n\n return createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n });\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n */\nexport const continueTrace = (\n options: {\n sentryTrace: Parameters[0];\n baggage: Parameters[1];\n },\n callback: () => V,\n): V => {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.continueTrace) {\n return acs.continueTrace(options, callback);\n }\n\n const { sentryTrace, baggage } = options;\n\n const client = getClient();\n const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n if (client && !shouldContinueTrace(client, incomingDsc?.org_id)) {\n return startNewTrace(callback);\n }\n\n return withScope(scope => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n _setSpanForScope(scope, undefined);\n return callback();\n });\n};\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will not be attached to a parent span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T {\n const acs = getAcs();\n if (acs.withActiveSpan) {\n return acs.withActiveSpan(span, callback);\n }\n\n return withScope(scope => {\n _setSpanForScope(scope, span || undefined);\n return callback(scope);\n });\n}\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nexport function suppressTracing(callback: () => T): T {\n const acs = getAcs();\n\n if (acs.suppressTracing) {\n return acs.suppressTracing(callback);\n }\n\n return withScope(scope => {\n // Note: We do not wait for the callback to finish before we reset the metadata\n // the reason for this is that otherwise, in the browser this can lead to very weird behavior\n // as there is only a single top scope, if the callback takes longer to finish,\n // other, unrelated spans may also be suppressed, which we do not want\n // so instead, we only suppress tracing synchronoysly in the browser\n scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true });\n const res = callback();\n scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: undefined });\n return res;\n });\n}\n\n/**\n * Starts a new trace for the duration of the provided callback. Spans started within the\n * callback will be part of the new trace instead of a potentially previously started trace.\n *\n * Important: Only use this function if you want to override the default trace lifetime and\n * propagation mechanism of the SDK for the duration and scope of the provided callback.\n * The newly created trace will also be the root of a new distributed trace, for example if\n * you make http requests within the callback.\n * This function might be useful if the operation you want to instrument should not be part\n * of a potentially ongoing trace.\n *\n * Default behavior:\n * - Server-side: A new trace is started for each incoming request.\n * - Browser: A new trace is started for each page our route. Navigating to a new route\n * or page will automatically create a new trace.\n */\nexport function startNewTrace(callback: () => T): T {\n const acs = getAcs();\n if (acs.startNewTrace) {\n return acs.startNewTrace(callback);\n }\n\n return withScope(scope => {\n scope.setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n });\n DEBUG_BUILD && debug.log(`Starting a new trace with id ${scope.getPropagationContext().traceId}`);\n return withActiveSpan(null, callback);\n });\n}\n\nfunction createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n}: {\n parentSpan: SentrySpan | undefined;\n spanArguments: SentrySpanArguments;\n forceTransaction?: boolean;\n scope: Scope;\n}): Span {\n if (!hasSpansEnabled()) {\n const span = new SentryNonRecordingSpan();\n\n // If this is a root span, we ensure to freeze a DSC\n // So we can have at least partial data here\n if (forceTransaction || !parentSpan) {\n const dsc = {\n sampled: 'false',\n sample_rate: '0',\n transaction: spanArguments.name,\n ...getDynamicSamplingContextFromSpan(span),\n } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n }\n\n return span;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: Span;\n if (parentSpan && !forceTransaction) {\n span = _startChildSpan(parentSpan, scope, spanArguments);\n addChildSpanToSpan(parentSpan, span);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const parentSampled = spanIsSampled(parentSpan);\n\n span = _startRootSpan(\n {\n traceId,\n parentSpanId,\n ...spanArguments,\n },\n scope,\n parentSampled,\n );\n\n freezeDscOnSpan(span, dsc);\n } else {\n const {\n traceId,\n dsc,\n parentSpanId,\n sampled: parentSampled,\n } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n span = _startRootSpan(\n {\n traceId,\n parentSpanId,\n ...spanArguments,\n },\n scope,\n parentSampled,\n );\n\n if (dsc) {\n freezeDscOnSpan(span, dsc);\n }\n }\n\n logSpanStart(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to SentrySpanArguments.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n */\nfunction parseSentrySpanArguments(options: StartSpanOptions): SentrySpanArguments {\n const exp = options.experimental || {};\n const initialCtx: SentrySpanArguments = {\n isStandalone: exp.standalone,\n ...options,\n };\n\n if (options.startTime) {\n const ctx: SentrySpanArguments & { startTime?: SpanTimeInput } = { ...initialCtx };\n ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return initialCtx;\n}\n\nfunction getAcs(): AsyncContextStrategy {\n const carrier = getMainCarrier();\n return getAsyncContextStrategy(carrier);\n}\n\nfunction _startRootSpan(spanArguments: SentrySpanArguments, scope: Scope, parentSampled?: boolean): SentrySpan {\n const client = getClient();\n const options: Partial = client?.getOptions() || {};\n\n const { name = '' } = spanArguments;\n\n const mutableSpanSamplingData = { spanAttributes: { ...spanArguments.attributes }, spanName: name, parentSampled };\n\n // we don't care about the decision for the moment; this is just a placeholder\n client?.emit('beforeSampling', mutableSpanSamplingData, { decision: false });\n\n // If hook consumers override the parentSampled flag, we will use that value instead of the actual one\n const finalParentSampled = mutableSpanSamplingData.parentSampled ?? parentSampled;\n const finalAttributes = mutableSpanSamplingData.spanAttributes;\n\n const currentPropagationContext = scope.getPropagationContext();\n const [sampled, sampleRate, localSampleRateWasApplied] = scope.getScopeData().sdkProcessingMetadata[\n SUPPRESS_TRACING_KEY\n ]\n ? [false]\n : sampleSpan(\n options,\n {\n name,\n parentSampled: finalParentSampled,\n attributes: finalAttributes,\n parentSampleRate: parseSampleRate(currentPropagationContext.dsc?.sample_rate),\n },\n currentPropagationContext.sampleRand,\n );\n\n const rootSpan = new SentrySpan({\n ...spanArguments,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]:\n sampleRate !== undefined && localSampleRateWasApplied ? sampleRate : undefined,\n ...finalAttributes,\n },\n sampled,\n });\n\n if (!sampled && client) {\n DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n if (client) {\n client.emit('spanStart', rootSpan);\n }\n\n return rootSpan;\n}\n\n/**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * This inherits the sampling decision from the parent span.\n */\nfunction _startChildSpan(parentSpan: Span, scope: Scope, spanArguments: SentrySpanArguments): Span {\n const { spanId, traceId } = parentSpan.spanContext();\n const sampled = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] ? false : spanIsSampled(parentSpan);\n\n const childSpan = sampled\n ? new SentrySpan({\n ...spanArguments,\n parentSpanId: spanId,\n traceId,\n sampled,\n })\n : new SentryNonRecordingSpan({ traceId });\n\n addChildSpanToSpan(parentSpan, childSpan);\n\n const client = getClient();\n if (client) {\n client.emit('spanStart', childSpan);\n // If it has an endTimestamp, it's already ended\n if (spanArguments.endTimestamp) {\n client.emit('spanEnd', childSpan);\n }\n }\n\n return childSpan;\n}\n\nfunction getParentSpan(scope: Scope, customParentSpan: Span | null | undefined): SentrySpan | undefined {\n // always use the passed in span directly\n if (customParentSpan) {\n return customParentSpan as SentrySpan;\n }\n\n // This is different from `undefined` as it means the user explicitly wants no parent span\n if (customParentSpan === null) {\n return undefined;\n }\n\n const span = _getSpanForScope(scope) as SentrySpan | undefined;\n\n if (!span) {\n return undefined;\n }\n\n const client = getClient();\n const options: Partial = client ? client.getOptions() : {};\n if (options.parentSpanIsAlwaysRootSpan) {\n return getRootSpan(span) as SentrySpan;\n }\n\n return span;\n}\n\nfunction getActiveSpanWrapper(parentSpan: Span | undefined | null): (callback: () => T) => T {\n return parentSpan !== undefined\n ? (callback: () => T) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback: () => T) => callback();\n}\n","import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { shouldIgnoreSpan } from '../utils/should-ignore-span';\nimport { _setSpanForScope } from '../utils/spanOnScope';\nimport {\n getActiveSpan,\n getSpanDescendants,\n removeChildSpanFromSpan,\n spanTimeInputToSeconds,\n spanToJSON,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR, SPAN_STATUS_OK } from './spanstatus';\nimport { startInactiveSpan } from './trace';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1_000,\n finalTimeout: 30_000,\n childSpanTimeout: 15_000,\n};\n\nconst FINISH_REASON_HEARTBEAT_FAILED = 'heartbeatFailed';\nconst FINISH_REASON_IDLE_TIMEOUT = 'idleTimeout';\nconst FINISH_REASON_FINAL_TIMEOUT = 'finalTimeout';\nconst FINISH_REASON_EXTERNAL_FINISH = 'externalFinish';\nconst FINISH_REASON_CANCELLED = 'cancelled';\n\n// unused\nconst FINISH_REASON_DOCUMENT_HIDDEN = 'documentHidden';\n\n// unused in this file, but used in BrowserTracing\nconst FINISH_REASON_INTERRUPTED = 'interactionInterrupted';\n\ntype IdleSpanFinishReason =\n | typeof FINISH_REASON_CANCELLED\n | typeof FINISH_REASON_DOCUMENT_HIDDEN\n | typeof FINISH_REASON_EXTERNAL_FINISH\n | typeof FINISH_REASON_FINAL_TIMEOUT\n | typeof FINISH_REASON_HEARTBEAT_FAILED\n | typeof FINISH_REASON_IDLE_TIMEOUT\n | typeof FINISH_REASON_INTERRUPTED;\n\ninterface IdleSpanOptions {\n /**\n * The time that has to pass without any span being created.\n * If this time is exceeded, the idle span will finish.\n */\n idleTimeout: number;\n /**\n * The max. time an idle span may run.\n * If this time is exceeded, the idle span will finish no matter what.\n */\n finalTimeout: number;\n /**\n * The max. time a child span may run.\n * If the time since the last span was started exceeds this time, the idle span will finish.\n */\n childSpanTimeout?: number;\n /**\n * When set to `true`, will disable the idle timeout and child timeout\n * until the `idleSpanEnableAutoFinish` hook is emitted for the idle span.\n * The final timeout mechanism will not be affected by this option,\n * meaning the idle span will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n disableAutoFinish?: boolean;\n\n /** Allows to configure a hook that is called when the idle span is ended, before it is processed. */\n beforeSpanEnd?: (span: Span) => void;\n\n /**\n * If set to `true`, the idle span will be trimmed to the latest span end timestamp of its children.\n *\n * @default `true`.\n */\n trimIdleSpanEndTimestamp?: boolean;\n}\n\n/**\n * An idle span is a span that automatically finishes. It does this by tracking child spans as activities.\n * An idle span is always the active span.\n */\nexport function startIdleSpan(startSpanOptions: StartSpanOptions, options: Partial = {}): Span {\n // Activities store a list of active spans\n const activities = new Map();\n\n // We should not use heartbeat if we finished a span\n let _finished = false;\n\n // Timer that tracks idleTimeout\n let _idleTimeoutID: ReturnType | undefined;\n\n // Timer that tracks maxSpanTime for child spans\n let _childSpanTimeoutID: ReturnType | undefined;\n\n // The reason why the span was finished\n let _finishReason: IdleSpanFinishReason = FINISH_REASON_EXTERNAL_FINISH;\n\n let _autoFinishAllowed: boolean = !options.disableAutoFinish;\n\n const _cleanupHooks: (() => void)[] = [];\n\n const {\n idleTimeout = TRACING_DEFAULTS.idleTimeout,\n finalTimeout = TRACING_DEFAULTS.finalTimeout,\n childSpanTimeout = TRACING_DEFAULTS.childSpanTimeout,\n beforeSpanEnd,\n trimIdleSpanEndTimestamp = true,\n } = options;\n\n const client = getClient();\n\n if (!client || !hasSpansEnabled()) {\n const span = new SentryNonRecordingSpan();\n\n const dsc = {\n sample_rate: '0',\n sampled: 'false',\n ...getDynamicSamplingContextFromSpan(span),\n } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n\n return span;\n }\n\n const scope = getCurrentScope();\n const previousActiveSpan = getActiveSpan();\n const span = _startIdleSpan(startSpanOptions);\n\n // We patch span.end to ensure we can run some things before the span is ended\n // eslint-disable-next-line @typescript-eslint/unbound-method\n span.end = new Proxy(span.end, {\n apply(target, thisArg, args: Parameters) {\n if (beforeSpanEnd) {\n beforeSpanEnd(span);\n }\n\n // If the span is non-recording, nothing more to do here...\n // This is the case if tracing is enabled but this specific span was not sampled\n if (thisArg instanceof SentryNonRecordingSpan) {\n return;\n }\n\n // Just ensuring that this keeps working, even if we ever have more arguments here\n const [definedEndTimestamp, ...rest] = args;\n const timestamp = definedEndTimestamp || timestampInSeconds();\n const spanEndTimestamp = spanTimeInputToSeconds(timestamp);\n\n // Ensure we end with the last span timestamp, if possible\n const spans = getSpanDescendants(span).filter(child => child !== span);\n\n const spanJson = spanToJSON(span);\n\n // If we have no spans, we just end, nothing else to do here\n // Likewise, if users explicitly ended the span, we simply end the span without timestamp adjustment\n if (!spans.length || !trimIdleSpanEndTimestamp) {\n onIdleSpanEnded(spanEndTimestamp);\n return Reflect.apply(target, thisArg, [spanEndTimestamp, ...rest]);\n }\n\n const ignoreSpans = client.getOptions().ignoreSpans;\n\n const latestSpanEndTimestamp = spans?.reduce((acc: number | undefined, current) => {\n const currentSpanJson = spanToJSON(current);\n if (!currentSpanJson.timestamp) {\n return acc;\n }\n // Ignored spans will get dropped later (in the client) but since we already adjust\n // the idle span end timestamp here, we can already take to-be-ignored spans out of\n // the calculation here.\n if (ignoreSpans && shouldIgnoreSpan(currentSpanJson, ignoreSpans)) {\n return acc;\n }\n return acc ? Math.max(acc, currentSpanJson.timestamp) : currentSpanJson.timestamp;\n }, undefined);\n\n // In reality this should always exist here, but type-wise it may be undefined...\n const spanStartTimestamp = spanJson.start_timestamp;\n\n // The final endTimestamp should:\n // * Never be before the span start timestamp\n // * Be the latestSpanEndTimestamp, if there is one, and it is smaller than the passed span end timestamp\n // * Otherwise be the passed end timestamp\n // Final timestamp can never be after finalTimeout\n const endTimestamp = Math.min(\n spanStartTimestamp ? spanStartTimestamp + finalTimeout / 1000 : Infinity,\n Math.max(spanStartTimestamp || -Infinity, Math.min(spanEndTimestamp, latestSpanEndTimestamp || Infinity)),\n );\n\n onIdleSpanEnded(endTimestamp);\n return Reflect.apply(target, thisArg, [endTimestamp, ...rest]);\n },\n });\n\n /**\n * Cancels the existing idle timeout, if there is one.\n */\n function _cancelIdleTimeout(): void {\n if (_idleTimeoutID) {\n clearTimeout(_idleTimeoutID);\n _idleTimeoutID = undefined;\n }\n }\n\n /**\n * Cancels the existing child span timeout, if there is one.\n */\n function _cancelChildSpanTimeout(): void {\n if (_childSpanTimeoutID) {\n clearTimeout(_childSpanTimeoutID);\n _childSpanTimeoutID = undefined;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n function _restartIdleTimeout(endTimestamp?: number): void {\n _cancelIdleTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && activities.size === 0 && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_IDLE_TIMEOUT;\n span.end(endTimestamp);\n }\n }, idleTimeout);\n }\n\n /**\n * Restarts child span timeout, if there is none running it will start one.\n */\n function _restartChildSpanTimeout(endTimestamp?: number): void {\n _cancelChildSpanTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_HEARTBEAT_FAILED;\n span.end(endTimestamp);\n }\n }, childSpanTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n function _pushActivity(spanId: string): void {\n _cancelIdleTimeout();\n activities.set(spanId, true);\n\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartChildSpanTimeout(endTimestamp + childSpanTimeout / 1000);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n function _popActivity(spanId: string): void {\n if (activities.has(spanId)) {\n activities.delete(spanId);\n }\n\n if (activities.size === 0) {\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartIdleTimeout(endTimestamp + idleTimeout / 1000);\n _cancelChildSpanTimeout();\n }\n }\n\n function onIdleSpanEnded(endTimestamp: number): void {\n _finished = true;\n activities.clear();\n\n _cleanupHooks.forEach(cleanup => cleanup());\n\n _setSpanForScope(scope, previousActiveSpan);\n\n const spanJSON = spanToJSON(span);\n\n const { start_timestamp: startTimestamp } = spanJSON;\n // This should never happen, but to make TS happy...\n if (!startTimestamp) {\n return;\n }\n\n const attributes = spanJSON.data;\n if (!attributes[SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, _finishReason);\n }\n\n // Set span status to 'ok' if it hasn't been explicitly set to an error status\n const currentStatus = spanJSON.status;\n if (!currentStatus || currentStatus === 'unknown') {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n debug.log(`[Tracing] Idle span \"${spanJSON.op}\" finished`);\n\n const childSpans = getSpanDescendants(span).filter(child => child !== span);\n\n let discardedSpans = 0;\n childSpans.forEach(childSpan => {\n // We cancel all pending spans with status \"cancelled\" to indicate the idle span was finished early\n if (childSpan.isRecording()) {\n childSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'cancelled' });\n childSpan.end(endTimestamp);\n DEBUG_BUILD &&\n debug.log('[Tracing] Cancelling span since span ended early', JSON.stringify(childSpan, undefined, 2));\n }\n\n const childSpanJSON = spanToJSON(childSpan);\n const { timestamp: childEndTimestamp = 0, start_timestamp: childStartTimestamp = 0 } = childSpanJSON;\n\n const spanStartedBeforeIdleSpanEnd = childStartTimestamp <= endTimestamp;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (finalTimeout + idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = childEndTimestamp - childStartTimestamp <= timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(childSpan, undefined, 2);\n if (!spanStartedBeforeIdleSpanEnd) {\n debug.log('[Tracing] Discarding span since it happened after idle span was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n debug.log('[Tracing] Discarding span since it finished after idle span final timeout', stringifiedSpan);\n }\n }\n\n if (!spanEndedBeforeFinalTimeout || !spanStartedBeforeIdleSpanEnd) {\n removeChildSpanFromSpan(span, childSpan);\n discardedSpans++;\n }\n });\n\n if (discardedSpans > 0) {\n span.setAttribute('sentry.idle_span_discarded_spans', discardedSpans);\n }\n }\n\n _cleanupHooks.push(\n client.on('spanStart', startedSpan => {\n // If we already finished the idle span,\n // or if this is the idle span itself being started,\n // or if the started span has already been closed,\n // we don't care about it for activity\n if (\n _finished ||\n startedSpan === span ||\n !!spanToJSON(startedSpan).timestamp ||\n (startedSpan instanceof SentrySpan && startedSpan.isStandaloneSpan())\n ) {\n return;\n }\n\n const allSpans = getSpanDescendants(span);\n\n // If the span that was just started is a child of the idle span, we should track it\n if (allSpans.includes(startedSpan)) {\n _pushActivity(startedSpan.spanContext().spanId);\n }\n }),\n );\n\n _cleanupHooks.push(\n client.on('spanEnd', endedSpan => {\n if (_finished) {\n return;\n }\n\n _popActivity(endedSpan.spanContext().spanId);\n }),\n );\n\n _cleanupHooks.push(\n client.on('idleSpanEnableAutoFinish', spanToAllowAutoFinish => {\n if (spanToAllowAutoFinish === span) {\n _autoFinishAllowed = true;\n _restartIdleTimeout();\n\n if (activities.size) {\n _restartChildSpanTimeout();\n }\n }\n }),\n );\n\n // We only start the initial idle timeout if we are not delaying the auto finish\n if (!options.disableAutoFinish) {\n _restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!_finished) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' });\n _finishReason = FINISH_REASON_FINAL_TIMEOUT;\n span.end();\n }\n }, finalTimeout);\n\n return span;\n}\n\nfunction _startIdleSpan(options: StartSpanOptions): Span {\n const span = startInactiveSpan(options);\n\n _setSpanForScope(getCurrentScope(), span);\n\n DEBUG_BUILD && debug.log('[Tracing] Started span is an idle span');\n\n return span;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\n\ntype State = typeof STATE_PENDING | typeof STATE_RESOLVED | typeof STATE_REJECTED;\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\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 */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\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 */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\ntype Executor = (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void;\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nexport class SyncPromise implements PromiseLike {\n private _state: State;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(executor: Executor) {\n this._state = STATE_PENDING;\n this._handlers = [];\n\n this._runExecutor(executor);\n }\n\n /** @inheritdoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\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 as any);\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 /** @inheritdoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** @inheritdoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\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 as unknown as any);\n });\n });\n }\n\n /** Excute the resolve/reject handlers. */\n private _executeHandlers(): void {\n if (this._state === STATE_PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === STATE_RESOLVED) {\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === STATE_REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n }\n\n /** Run the executor for the SyncPromise. */\n private _runExecutor(executor: Executor): void {\n const setResult = (state: State, value?: T | PromiseLike | any): void => {\n if (this._state !== STATE_PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(resolve, reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n const resolve = (value: unknown): void => {\n setResult(STATE_RESOLVED, value);\n };\n\n const reject = (reason: unknown): void => {\n setResult(STATE_REJECTED, reason);\n };\n\n try {\n executor(resolve, reject);\n } catch (e) {\n reject(e);\n }\n }\n}\n","import { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { rejectedSyncPromise, resolvedSyncPromise } from './utils/syncpromise';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike {\n try {\n const result = _notifyEventProcessors(event, hint, processors, index);\n return isThenable(result) ? result : resolvedSyncPromise(result);\n } catch (error) {\n return rejectedSyncPromise(error);\n }\n}\n\nfunction _notifyEventProcessors(\n event: Event | null,\n hint: EventHint,\n processors: EventProcessor[],\n index: number,\n): Event | null | PromiseLike {\n const processor = processors[index];\n\n if (!event || !processor) {\n return event;\n }\n\n const result = processor({ ...event }, hint);\n\n DEBUG_BUILD && result === null && debug.log(`Event processor \"${processor.id || '?'}\" dropped event`);\n\n if (isThenable(result)) {\n return result.then(final => _notifyEventProcessors(final, hint, processors, index + 1));\n }\n\n return _notifyEventProcessors(result, hint, processors, index + 1);\n}\n","import type { DebugImage } from '../types-hoist/debugMeta';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath } from './stacktrace';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype StackString = string;\ntype CachedResult = [string, string];\n\nlet parsedStackResults: Record | undefined;\nlet lastSentryKeysCount: number | undefined;\nlet lastNativeKeysCount: number | undefined;\nlet cachedFilenameDebugIds: Record | undefined;\n\n/**\n * Clears the cached debug ID mappings.\n * Useful for testing or when the global debug ID state changes.\n */\nexport function clearDebugIdCache(): void {\n parsedStackResults = undefined;\n lastSentryKeysCount = undefined;\n lastNativeKeysCount = undefined;\n cachedFilenameDebugIds = undefined;\n}\n\n/**\n * Returns a map of filenames to debug identifiers.\n * Supports both proprietary _sentryDebugIds and native _debugIds (e.g., from Vercel) formats.\n */\nexport function getFilenameToDebugIdMap(stackParser: StackParser): Record {\n const sentryDebugIdMap = GLOBAL_OBJ._sentryDebugIds;\n const nativeDebugIdMap = GLOBAL_OBJ._debugIds;\n\n if (!sentryDebugIdMap && !nativeDebugIdMap) {\n return {};\n }\n\n const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : [];\n const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : [];\n\n // If the count of registered globals hasn't changed since the last call, we\n // can just return the cached result.\n if (\n cachedFilenameDebugIds &&\n sentryDebugIdKeys.length === lastSentryKeysCount &&\n nativeDebugIdKeys.length === lastNativeKeysCount\n ) {\n return cachedFilenameDebugIds;\n }\n\n lastSentryKeysCount = sentryDebugIdKeys.length;\n lastNativeKeysCount = nativeDebugIdKeys.length;\n\n // Build a map of filename -> debug_id from both sources\n cachedFilenameDebugIds = {};\n\n if (!parsedStackResults) {\n parsedStackResults = {};\n }\n\n const processDebugIds = (debugIdKeys: string[], debugIdMap: Record): void => {\n for (const key of debugIdKeys) {\n const debugId = debugIdMap[key];\n const result = parsedStackResults?.[key];\n\n if (result && cachedFilenameDebugIds && debugId) {\n // Use cached filename but update with current debug ID\n cachedFilenameDebugIds[result[0]] = debugId;\n // Update cached result with new debug ID\n if (parsedStackResults) {\n parsedStackResults[key] = [result[0], debugId];\n }\n } else if (debugId) {\n const parsedStack = stackParser(key);\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n\n if (filename && cachedFilenameDebugIds && parsedStackResults) {\n cachedFilenameDebugIds[filename] = debugId;\n parsedStackResults[key] = [filename, debugId];\n break;\n }\n }\n }\n }\n };\n\n if (sentryDebugIdMap) {\n processDebugIds(sentryDebugIdKeys, sentryDebugIdMap);\n }\n\n // Native _debugIds will override _sentryDebugIds if same file\n if (nativeDebugIdMap) {\n processDebugIds(nativeDebugIdKeys, nativeDebugIdMap);\n }\n\n return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nexport function getDebugImagesForResources(\n stackParser: StackParser,\n resource_paths: ReadonlyArray,\n): DebugImage[] {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n if (!filenameDebugIdMap) {\n return [];\n }\n\n const images: DebugImage[] = [];\n for (const path of resource_paths) {\n const normalizedPath = normalizeStackTracePath(path);\n if (normalizedPath && filenameDebugIdMap[normalizedPath]) {\n images.push({\n type: 'sourcemap',\n code_file: path,\n debug_id: filenameDebugIdMap[normalizedPath],\n });\n }\n }\n\n return images;\n}\n","import { getGlobalScope } from '../currentScopes';\nimport type { Scope, ScopeData } from '../scope';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport type { Breadcrumb } from '../types-hoist/breadcrumb';\nimport type { Event } from '../types-hoist/event';\nimport type { Span } from '../types-hoist/span';\nimport { merge } from './merge';\nimport { getRootSpan, spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\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 (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n const {\n extra,\n tags,\n attributes,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'attributes', attributes);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'attributes' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n data[prop] = merge(data[prop], mergeVal, 1);\n}\n\n/** Exported only for tests */\nexport function mergeArray(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\n}\n\n/**\n * Get the scope data for the current scope after merging with the\n * global scope and isolation scope.\n *\n * @param currentScope - The current scope.\n * @returns The scope data.\n */\nexport function getCombinedScopeData(isolationScope: Scope | undefined, currentScope: Scope | undefined): ScopeData {\n const scopeData = getGlobalScope().getScopeData();\n isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData());\n currentScope && mergeScopeData(scopeData, currentScope.getScopeData());\n return scopeData;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n const { extra, tags, user, contexts, level, transactionName } = data;\n\n if (Object.keys(extra).length) {\n event.extra = { ...extra, ...event.extra };\n }\n\n if (Object.keys(tags).length) {\n event.tags = { ...tags, ...event.tags };\n }\n\n if (Object.keys(user).length) {\n event.user = { ...user, ...event.user };\n }\n\n if (Object.keys(contexts).length) {\n event.contexts = { ...contexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n // transaction events get their `transaction` from the root span name\n if (transactionName && event.type !== 'transaction') {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n\n const rootSpan = getRootSpan(span);\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName && !event.transaction && event.type === 'transaction') {\n event.transaction = transactionName;\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 */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (!event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n","import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { notifyEventProcessors } from '../eventProcessors';\nimport type { CaptureContext, ScopeContext } from '../scope';\nimport { Scope } from '../scope';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { getFilenameToDebugIdMap } from './debug-ids';\nimport { addExceptionMechanism, uuid4 } from './misc';\nimport { normalize } from './normalize';\nimport { applyScopeDataToEvent, getCombinedScopeData } from './scopeData';\nimport { truncate } from './string';\nimport { resolvedSyncPromise } from './syncpromise';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\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 * @hidden\n */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n client?: Client,\n isolationScope?: Scope,\n): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n if (client) {\n client.emit('applyFrameMetadata', event);\n }\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\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 const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Scope.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getCombinedScopeData(isolationScope, finalScope);\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n const eventProcessors = [\n ...clientEventProcessors,\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n // Skip event processors for internal exceptions to prevent recursion\n // oxlint-disable-next-line typescript/prefer-optional-chain\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n const result = isInternalException\n ? resolvedSyncPromise(prepared)\n : notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\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 *\n * Only exported for tests.\n *\n * @param event event instance to be enhanced\n */\nexport function applyClientOptions(event: Event, options: ClientOptions): void {\n const { environment, release, dist, maxValueLength } = options;\n\n // empty strings do not make sense for environment, release, and dist\n // so we handle them the same as if they were not provided\n event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n\n if (!event.release && release) {\n event.release = release;\n }\n\n if (!event.dist && dist) {\n event.dist = dist;\n }\n\n const request = event.request;\n if (request?.url && maxValueLength) {\n request.url = truncate(request.url, maxValueLength);\n }\n\n if (maxValueLength) {\n event.exception?.values?.forEach(exception => {\n if (exception.value) {\n // Truncates error messages\n exception.value = truncate(exception.value, maxValueLength);\n }\n });\n }\n}\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap: Record = {};\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id,\n });\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 */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\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 */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\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?.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 return {\n ...span,\n ...(span.data && {\n data: normalize(span.data, depth, maxBreadth),\n }),\n };\n });\n }\n\n // event.contexts.flags (FeatureFlagContext) stores context for our feature\n // flag integrations. It has a greater nesting depth than our other typed\n // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want\n // to skip this in case of conflicting, user-provided context.\n if (event.contexts?.flags && normalized.contexts) {\n normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n }\n\n return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(hint: CaptureContext | EventHint): hint is Scope | ((scope: Scope) => Scope) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial | EventHint): hint is Partial {\n return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import { getClient, getCurrentScope, getIsolationScope, withIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { CaptureContext } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { startNewTrace } from './tracing/trace';\nimport type { CheckIn, FinishedCheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { Session, SessionContext } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { uuid4 } from './utils/misc';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { getCombinedScopeData } from './utils/scopeData';\nimport { timestampInSeconds } from './utils/time';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(exception: unknown, hint?: ExclusiveEventHintOrCaptureContext): string {\n return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\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 captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | SeverityLevel): string {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const hint = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentScope().captureMessage(message, level, hint);\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 * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n return getCurrentScope().captureEvent(event, hint);\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 */\nexport function setContext(name: string, context: { [key: string]: unknown } | null): void {\n getIsolationScope().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 */\nexport function setExtras(extras: Extras): void {\n getIsolationScope().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 */\nexport function setExtra(key: string, extra: Extra): void {\n getIsolationScope().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 */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n getIsolationScope().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 */\nexport function setTag(key: string, value: Primitive): void {\n getIsolationScope().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 */\nexport function setUser(user: User | null): void {\n getIsolationScope().setUser(user);\n}\n\n/**\n * Sets the conversation ID for the current isolation scope.\n *\n * @param conversationId The conversation ID to set. Pass `null` or `undefined` to unset the conversation ID.\n */\nexport function setConversationId(conversationId: string | null | undefined): void {\n getIsolationScope().setConversationId(conversationId);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nexport function lastEventId(): string | undefined {\n return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && debug.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param callback Callback to be monitored\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n function runCallback(): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n // Default behavior without isolateTrace\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n return maybePromiseResult.then(\n r => {\n finishCheckIn('ok');\n return r;\n },\n e => {\n finishCheckIn('error');\n throw e;\n },\n ) as T;\n }\n finishCheckIn('ok');\n\n return maybePromiseResult;\n }\n\n return withIsolationScope(() => (upsertMonitorConfig?.isolateTrace ? startNewTrace(runCallback) : runCallback()));\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 */\nexport async function flush(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && debug.warn('Cannot flush events. No client defined.');\n return Promise.resolve(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 */\nexport async function close(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && debug.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nexport function isEnabled(): boolean {\n const client = getClient();\n return client?.getOptions().enabled !== false && !!client?.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n const isolationScope = getIsolationScope();\n\n const { user } = getCombinedScopeData(isolationScope, getCurrentScope());\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n user,\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession?.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n const isolationScope = getIsolationScope();\n const client = getClient();\n const session = isolationScope.getSession();\n if (session && client) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n","import type { ReportDialogOptions } from './report-dialog';\nimport type { DsnComponents, DsnLike } from './types-hoist/dsn';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport { dsnToString, makeDsn } from './utils/dsn';\n\nexport const SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const 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: DsnComponents): string {\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: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n const params: Record = {\n sentry_version: SENTRY_API_VERSION,\n };\n\n if (dsn.publicKey) {\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n params.sentry_key = dsn.publicKey;\n }\n\n if (sdkInfo) {\n params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`;\n }\n\n return new URLSearchParams(params).toString();\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 */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string, sdkInfo?: SdkInfo): string {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(dsnLike: DsnLike, dialogOptions: ReportDialogOptions): string {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'onClose') {\n continue;\n }\n\n if (key === 'user') {\n const 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] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import type { Client } from './client';\nimport { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { Integration, IntegrationFn } from './types-hoist/integration';\nimport type { CoreOptions } from './types-hoist/options';\nimport { debug } from './utils/debug-logger';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\ntype IntegrationWithDefaultInstance = Integration & { isDefaultInstance?: true };\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preserve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach((currentInstance: IntegrationWithDefaultInstance) => {\n const { name } = currentInstance;\n\n const existingInstance: IntegrationWithDefaultInstance | undefined = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(\n options: Pick,\n): Integration[] {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach((integration: IntegrationWithDefaultInstance) => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\n } else {\n integrations = defaultIntegrations;\n }\n\n return filterDuplicates(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 */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach((integration: Integration | undefined) => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(client, integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n for (const integration of integrations) {\n // guard against empty provided integrations\n if (integration?.afterAllSetup) {\n integration.afterAllSetup(client);\n }\n }\n}\n\n/** Setup a single integration. */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n if (integrationIndex[integration.name]) {\n DEBUG_BUILD && debug.log(`Integration skipped because it was already installed: ${integration.name}`);\n return;\n }\n integrationIndex[integration.name] = integration;\n\n // `setupOnce` is only called the first time\n if (!installedIntegrations.includes(integration.name) && typeof integration.setupOnce === 'function') {\n integration.setupOnce();\n installedIntegrations.push(integration.name);\n }\n\n // `setup` is run for each client\n if (integration.setup && typeof integration.setup === 'function') {\n integration.setup(client);\n }\n\n if (typeof integration.preprocessEvent === 'function') {\n const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n }\n\n if (typeof integration.processEvent === 'function') {\n const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n id: integration.name,\n });\n\n client.addEventProcessor(processor);\n }\n\n DEBUG_BUILD && debug.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nexport function addIntegration(integration: Integration): void {\n const client = getClient();\n\n if (!client) {\n DEBUG_BUILD && debug.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n return;\n }\n\n client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration(fn: Fn): (...args: Parameters) => Integration {\n return fn;\n}\n","import type { DurationUnit, FractionUnit, InformationUnit } from './types-hoist/measurement';\n\nexport type RawAttributes = T & ValidatedAttributes;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RawAttribute = T extends { value: any } | { unit: any } ? AttributeObject : T;\n\nexport type Attributes = Record;\n\nexport type AttributeValueType = string | number | boolean | Array | Array | Array;\n\ntype AttributeTypeMap = {\n string: string;\n integer: number;\n double: number;\n boolean: boolean;\n 'string[]': Array;\n 'integer[]': Array;\n 'double[]': Array;\n 'boolean[]': Array;\n};\n\n/* Generates a type from the AttributeTypeMap like:\n | { value: string; type: 'string' }\n | { value: number; type: 'integer' }\n | { value: number; type: 'double' }\n */\ntype AttributeUnion = {\n [K in keyof AttributeTypeMap]: {\n value: AttributeTypeMap[K];\n type: K;\n };\n}[keyof AttributeTypeMap];\n\nexport type TypedAttributeValue = AttributeUnion & { unit?: AttributeUnit };\n\nexport type AttributeObject = {\n value: unknown;\n unit?: AttributeUnit;\n};\n\n// Unfortunately, we loose type safety if we did something like Exclude\n// so therefore we unionize between the three supported unit categories.\ntype AttributeUnit = DurationUnit | InformationUnit | FractionUnit;\n\n/* If an attribute has either a 'value' or 'unit' property, we use the ValidAttributeObject type. */\nexport type ValidatedAttributes = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof T]: T[K] extends { value: any } | { unit: any } ? AttributeObject : unknown;\n};\n\n/**\n * Type-guard: The attribute object has the shape the official attribute object (value, type, unit).\n * https://develop.sentry.dev/sdk/telemetry/scopes/#setting-attributes\n */\nexport function isAttributeObject(maybeObj: unknown): maybeObj is AttributeObject {\n return (\n typeof maybeObj === 'object' &&\n maybeObj != null &&\n !Array.isArray(maybeObj) &&\n Object.keys(maybeObj).includes('value')\n );\n}\n\n/**\n * Converts an attribute value to a typed attribute value.\n *\n * For now, we intentionally only support primitive values and attribute objects with primitive values.\n * If @param useFallback is true, we stringify non-primitive values to a string attribute value. Otherwise\n * we return `undefined` for unsupported values.\n *\n * @param value - The value of the passed attribute.\n * @param useFallback - If true, unsupported values will be stringified to a string attribute value.\n * Defaults to false. In this case, `undefined` is returned for unsupported values.\n * @returns The typed attribute.\n */\nexport function attributeValueToTypedAttributeValue(\n rawValue: unknown,\n useFallback?: boolean | 'skip-undefined',\n): TypedAttributeValue | void {\n const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: undefined };\n const attributeValue = getTypedAttributeValue(value);\n const checkedUnit = unit && typeof unit === 'string' ? { unit } : {};\n if (attributeValue) {\n return { ...attributeValue, ...checkedUnit };\n }\n\n if (!useFallback || (useFallback === 'skip-undefined' && value === undefined)) {\n return;\n }\n\n // Fallback: stringify the value\n // TODO(v11): be smarter here and use String constructor if stringify fails\n // (this is a breaking change for already existing attribute values)\n let stringValue = '';\n try {\n stringValue = JSON.stringify(value) ?? '';\n } catch {\n // Do nothing\n }\n return {\n value: stringValue,\n type: 'string',\n ...checkedUnit,\n };\n}\n\n/**\n * Serializes raw attributes to typed attributes as expected in our envelopes.\n *\n * @param attributes The raw attributes to serialize.\n * @param fallback If true, unsupported values will be stringified to a string attribute value.\n * Defaults to false. In this case, `undefined` is returned for unsupported values.\n *\n * @returns The serialized attributes.\n */\nexport function serializeAttributes(\n attributes: RawAttributes | undefined,\n fallback: boolean | 'skip-undefined' = false,\n): Attributes {\n const serializedAttributes: Attributes = {};\n for (const [key, value] of Object.entries(attributes ?? {})) {\n const typedValue = attributeValueToTypedAttributeValue(value, fallback);\n if (typedValue) {\n serializedAttributes[key] = typedValue;\n }\n }\n return serializedAttributes;\n}\n\n/**\n * NOTE: We intentionally do not return anything for non-primitive values:\n * - array support will come in the future but if we stringify arrays now,\n * sending arrays (unstringified) later will be a subtle breaking change.\n * - Objects are not supported yet and product support is still TBD.\n * - We still keep the type signature for TypedAttributeValue wider to avoid a\n * breaking change once we add support for non-primitive values.\n * - Once we go back to supporting arrays and stringifying all other values,\n * we already implemented the serialization logic here:\n * https://github.com/getsentry/sentry-javascript/pull/18165\n */\nfunction getTypedAttributeValue(value: unknown): TypedAttributeValue | void {\n const primitiveType =\n typeof value === 'string'\n ? 'string'\n : typeof value === 'boolean'\n ? 'boolean'\n : typeof value === 'number' && !Number.isNaN(value)\n ? Number.isInteger(value)\n ? 'integer'\n : 'double'\n : null;\n if (primitiveType) {\n // @ts-expect-error - TS complains because {@link TypedAttributeValue} is strictly typed to\n // avoid setting the wrong `type` on the attribute value.\n // In this case, getPrimitiveType already does the check but TS doesn't know that.\n // The \"clean\" alternative is to return an object per `typeof value` case\n // but that would require more bundle size\n // Therefore, we ignore it.\n return { value, type: primitiveType };\n }\n}\n","const SEQUENCE_ATTR_KEY = 'sentry.timestamp.sequence';\n\nlet _sequenceNumber = 0;\nlet _previousTimestampMs: number | undefined;\n\n/**\n * Returns the `sentry.timestamp.sequence` attribute entry for a serialized telemetry item.\n *\n * The sequence number starts at 0 and increments by 1 for each item captured.\n * It resets to 0 when the current item's integer millisecond timestamp differs\n * from the previous item's integer millisecond timestamp.\n *\n * @param timestampInSeconds - The timestamp of the telemetry item in seconds.\n */\nexport function getSequenceAttribute(timestampInSeconds: number): {\n key: string;\n value: { value: number; type: 'integer' };\n} {\n const nowMs = Math.floor(timestampInSeconds * 1000);\n\n if (_previousTimestampMs !== undefined && nowMs !== _previousTimestampMs) {\n _sequenceNumber = 0;\n }\n\n const value = _sequenceNumber;\n _sequenceNumber++;\n _previousTimestampMs = nowMs;\n\n return {\n key: SEQUENCE_ATTR_KEY,\n value: { value, type: 'integer' },\n };\n}\n\n/**\n * Resets the sequence number state. Only exported for testing purposes.\n */\nexport function _INTERNAL_resetSequenceNumber(): void {\n _sequenceNumber = 0;\n _previousTimestampMs = undefined;\n}\n","import type { Client } from '../client';\nimport { getTraceContextFromScope, withScope } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n} from '../tracing/dynamicSamplingContext';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { getActiveSpan, spanToTraceContext } from './spanUtils';\n\n/** Extract trace information from scope */\nexport function _getTraceInfoFromScope(\n client: Client,\n scope: Scope | undefined,\n): [dynamicSamplingContext: Partial | undefined, traceContext: TraceContext | undefined] {\n if (!scope) {\n return [undefined, undefined];\n }\n\n return withScope(scope, () => {\n const span = getActiveSpan();\n const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n const dynamicSamplingContext = span\n ? getDynamicSamplingContextFromSpan(span)\n : getDynamicSamplingContextFromScope(client, scope);\n return [dynamicSamplingContext, traceContext];\n });\n}\n","import type { LogSeverityLevel } from '../types-hoist/log';\n\n/**\n * Maps a log severity level to a log severity number.\n *\n * @see LogSeverityLevel\n */\nexport const SEVERITY_TEXT_TO_SEVERITY_NUMBER: Partial> = {\n trace: 1,\n debug: 5,\n info: 9,\n warn: 13,\n error: 17,\n fatal: 21,\n};\n","import type { DsnComponents } from '../types-hoist/dsn';\nimport type { LogContainerItem, LogEnvelope } from '../types-hoist/envelope';\nimport type { SerializedLog } from '../types-hoist/log';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\n\n/**\n * Creates a log container envelope item for a list of logs.\n *\n * @param items - The logs to include in the envelope.\n * @returns The created log container envelope item.\n */\nexport function createLogContainerEnvelopeItem(items: Array): LogContainerItem {\n return [\n {\n type: 'log',\n item_count: items.length,\n content_type: 'application/vnd.sentry.items.log+json',\n },\n {\n items,\n },\n ];\n}\n\n/**\n * Creates an envelope for a list of logs.\n *\n * Logs from multiple traces can be included in the same envelope.\n *\n * @param logs - The logs to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nexport function createLogEnvelope(\n logs: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): LogEnvelope {\n const headers: LogEnvelope[0] = {};\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n return createEnvelope(headers, [createLogContainerEnvelopeItem(logs)]);\n}\n","import { serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Log, SerializedLog } from '../types-hoist/log';\nimport { consoleSandbox, debug } from '../utils/debug-logger';\nimport { isParameterizedString } from '../utils/is';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { getSequenceAttribute } from '../utils/timestampSequence';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants';\nimport { createLogEnvelope } from './envelope';\n\nconst MAX_LOG_BUFFER_SIZE = 100;\n\n/**\n * Sets a log attribute if the value exists and the attribute key is not already present.\n *\n * @param logAttributes - The log attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setLogAttribute(\n logAttributes: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\n if (value && (!logAttributes[key] || setEvenIfPresent)) {\n logAttributes[key] = value;\n }\n}\n\n/**\n * Captures a serialized log event and adds it to the log buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedLog - The serialized log event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void {\n const bufferMap = _getBufferMap();\n const logBuffer = _INTERNAL_getLogBuffer(client);\n\n if (logBuffer === undefined) {\n bufferMap.set(client, [serializedLog]);\n } else {\n if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {\n _INTERNAL_flushLogsBuffer(client, logBuffer);\n bufferMap.set(client, [serializedLog]);\n } else {\n bufferMap.set(client, [...logBuffer, serializedLog]);\n }\n }\n}\n\n/**\n * Captures a log event and sends it to Sentry.\n *\n * @param log - The log event to capture.\n * @param scope - A scope. Uses the current scope if not provided.\n * @param client - A client. Uses the current client if not provided.\n * @param captureSerializedLog - A function to capture the serialized log.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureLog(\n beforeLog: Log,\n currentScope = getCurrentScope(),\n captureSerializedLog: (client: Client, log: SerializedLog) => void = _INTERNAL_captureSerializedLog,\n): void {\n const client = currentScope?.getClient() ?? getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No client available to capture log.');\n return;\n }\n\n const { release, environment, enableLogs = false, beforeSendLog } = client.getOptions();\n if (!enableLogs) {\n DEBUG_BUILD && debug.warn('logging option not enabled, log will not be captured.');\n return;\n }\n\n const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n\n const processedLogAttributes = {\n ...beforeLog.attributes,\n };\n\n const {\n user: { id, email, username },\n attributes: scopeAttributes = {},\n } = getCombinedScopeData(getIsolationScope(), currentScope);\n\n setLogAttribute(processedLogAttributes, 'user.id', id, false);\n setLogAttribute(processedLogAttributes, 'user.email', email, false);\n setLogAttribute(processedLogAttributes, 'user.name', username, false);\n\n setLogAttribute(processedLogAttributes, 'sentry.release', release);\n setLogAttribute(processedLogAttributes, 'sentry.environment', environment);\n\n const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n setLogAttribute(processedLogAttributes, 'sentry.sdk.name', name);\n setLogAttribute(processedLogAttributes, 'sentry.sdk.version', version);\n\n const replay = client.getIntegrationByName<\n Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\n }\n >('Replay');\n\n const replayId = replay?.getReplayId(true);\n setLogAttribute(processedLogAttributes, 'sentry.replay_id', replayId);\n\n if (replayId && replay?.getRecordingMode() === 'buffer') {\n // We send this so we can identify cases where the replayId is attached but the replay itself might not have been sent to Sentry\n setLogAttribute(processedLogAttributes, 'sentry._internal.replay_is_buffering', true);\n }\n\n const beforeLogMessage = beforeLog.message;\n if (isParameterizedString(beforeLogMessage)) {\n const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage;\n if (__sentry_template_values__?.length) {\n processedLogAttributes['sentry.message.template'] = __sentry_template_string__;\n }\n __sentry_template_values__.forEach((param, index) => {\n processedLogAttributes[`sentry.message.parameter.${index}`] = param;\n });\n }\n\n const span = _getSpanForScope(currentScope);\n // Add the parent span ID to the log attributes for trace context\n setLogAttribute(processedLogAttributes, 'sentry.trace.parent_span_id', span?.spanContext().spanId);\n\n const processedLog = { ...beforeLog, attributes: processedLogAttributes };\n\n client.emit('beforeCaptureLog', processedLog);\n\n // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog`\n const log = beforeSendLog ? consoleSandbox(() => beforeSendLog(processedLog)) : processedLog;\n if (!log) {\n client.recordDroppedEvent('before_send', 'log_item', 1);\n DEBUG_BUILD && debug.warn('beforeSendLog returned null, log will not be captured.');\n return;\n }\n\n const { level, message, attributes: logAttributes = {}, severityNumber } = log;\n\n const timestamp = timestampInSeconds();\n const sequenceAttr = getSequenceAttribute(timestamp);\n\n const serializedLog: SerializedLog = {\n timestamp,\n level,\n body: message,\n trace_id: traceContext?.trace_id,\n severity_number: severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER[level],\n attributes: {\n ...serializeAttributes(scopeAttributes),\n ...serializeAttributes(logAttributes, true),\n [sequenceAttr.key]: sequenceAttr.value,\n },\n };\n\n captureSerializedLog(client, serializedLog);\n\n client.emit('afterCaptureLog', log);\n}\n\n/**\n * Flushes the logs buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_flushLogsBuffer(client: Client, maybeLogBuffer?: Array): void {\n const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? [];\n if (logBuffer.length === 0) {\n return;\n }\n\n const clientOptions = client.getOptions();\n const envelope = createLogEnvelope(logBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n // Clear the log buffer after envelopes have been constructed.\n _getBufferMap().set(client, []);\n\n client.emit('flushLogs');\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the log buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the log buffer for.\n * @returns The log buffer for the given client.\n */\nexport function _INTERNAL_getLogBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\n // The reference to the Client <> LogBuffer map is stored on the carrier to ensure it's always the same\n return getGlobalSingleton('clientToLogBufferMap', () => new WeakMap>());\n}\n","import type { DsnComponents } from '../types-hoist/dsn';\nimport type { MetricContainerItem, MetricEnvelope } from '../types-hoist/envelope';\nimport type { SerializedMetric } from '../types-hoist/metric';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\n\n/**\n * Creates a metric container envelope item for a list of metrics.\n *\n * @param items - The metrics to include in the envelope.\n * @returns The created metric container envelope item.\n */\nexport function createMetricContainerEnvelopeItem(items: Array): MetricContainerItem {\n return [\n {\n type: 'trace_metric',\n item_count: items.length,\n content_type: 'application/vnd.sentry.items.trace-metric+json',\n } as MetricContainerItem[0],\n {\n items,\n },\n ];\n}\n\n/**\n * Creates an envelope for a list of metrics.\n *\n * Metrics from multiple traces can be included in the same envelope.\n *\n * @param metrics - The metrics to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nexport function createMetricEnvelope(\n metrics: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): MetricEnvelope {\n const headers: MetricEnvelope[0] = {};\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n return createEnvelope(headers, [createMetricContainerEnvelopeItem(metrics)]);\n}\n","import { type RawAttributes, serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Metric, SerializedMetric } from '../types-hoist/metric';\nimport type { User } from '../types-hoist/user';\nimport { debug } from '../utils/debug-logger';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { getSequenceAttribute } from '../utils/timestampSequence';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { createMetricEnvelope } from './envelope';\n\nconst MAX_METRIC_BUFFER_SIZE = 1000;\n\n/**\n * Sets a metric attribute if the value exists and the attribute key is not already present.\n *\n * @param metricAttributes - The metric attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setMetricAttribute(\n metricAttributes: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\n if (value && (setEvenIfPresent || !(key in metricAttributes))) {\n metricAttributes[key] = value;\n }\n}\n\n/**\n * Captures a serialized metric event and adds it to the metric buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedMetric - The serialized metric event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureSerializedMetric(client: Client, serializedMetric: SerializedMetric): void {\n const bufferMap = _getBufferMap();\n const metricBuffer = _INTERNAL_getMetricBuffer(client);\n\n if (metricBuffer === undefined) {\n bufferMap.set(client, [serializedMetric]);\n } else {\n if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) {\n _INTERNAL_flushMetricsBuffer(client, metricBuffer);\n bufferMap.set(client, [serializedMetric]);\n } else {\n bufferMap.set(client, [...metricBuffer, serializedMetric]);\n }\n }\n}\n\n/**\n * Options for capturing a metric internally.\n */\nexport interface InternalCaptureMetricOptions {\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n\n /**\n * A function to capture the serialized metric.\n */\n captureSerializedMetric?: (client: Client, metric: SerializedMetric) => void;\n}\n\n/**\n * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.)\n */\nfunction _enrichMetricAttributes(beforeMetric: Metric, client: Client, user: User): Metric {\n const { release, environment } = client.getOptions();\n\n const processedMetricAttributes = {\n ...beforeMetric.attributes,\n };\n\n // Add user attributes\n setMetricAttribute(processedMetricAttributes, 'user.id', user.id, false);\n setMetricAttribute(processedMetricAttributes, 'user.email', user.email, false);\n setMetricAttribute(processedMetricAttributes, 'user.name', user.username, false);\n\n // Add Sentry metadata\n setMetricAttribute(processedMetricAttributes, 'sentry.release', release);\n setMetricAttribute(processedMetricAttributes, 'sentry.environment', environment);\n\n // Add SDK metadata\n const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n setMetricAttribute(processedMetricAttributes, 'sentry.sdk.name', name);\n setMetricAttribute(processedMetricAttributes, 'sentry.sdk.version', version);\n\n // Add replay metadata\n const replay = client.getIntegrationByName<\n Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\n }\n >('Replay');\n\n const replayId = replay?.getReplayId(true);\n setMetricAttribute(processedMetricAttributes, 'sentry.replay_id', replayId);\n\n if (replayId && replay?.getRecordingMode() === 'buffer') {\n setMetricAttribute(processedMetricAttributes, 'sentry._internal.replay_is_buffering', true);\n }\n\n return {\n ...beforeMetric,\n attributes: processedMetricAttributes,\n };\n}\n\n/**\n * Creates a serialized metric ready to be sent to Sentry.\n */\nfunction _buildSerializedMetric(\n metric: Metric,\n client: Client,\n currentScope: Scope,\n scopeAttributes: RawAttributes> | undefined,\n): SerializedMetric {\n // Get trace context\n const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n const span = _getSpanForScope(currentScope);\n const traceId = span ? span.spanContext().traceId : traceContext?.trace_id;\n const spanId = span ? span.spanContext().spanId : undefined;\n\n const timestamp = timestampInSeconds();\n const sequenceAttr = getSequenceAttribute(timestamp);\n\n return {\n timestamp,\n trace_id: traceId ?? '',\n span_id: spanId,\n name: metric.name,\n type: metric.type,\n unit: metric.unit,\n value: metric.value,\n attributes: {\n ...serializeAttributes(scopeAttributes),\n ...serializeAttributes(metric.attributes, 'skip-undefined'),\n [sequenceAttr.key]: sequenceAttr.value,\n },\n };\n}\n\n/**\n * Captures a metric event and sends it to Sentry.\n *\n * @param metric - The metric event to capture.\n * @param options - Options for capturing the metric.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureMetric(beforeMetric: Metric, options?: InternalCaptureMetricOptions): void {\n const currentScope = options?.scope ?? getCurrentScope();\n const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric;\n const client = currentScope?.getClient() ?? getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No client available to capture metric.');\n return;\n }\n\n const { _experiments, enableMetrics, beforeSendMetric } = client.getOptions();\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const metricsEnabled = enableMetrics ?? _experiments?.enableMetrics ?? true;\n\n if (!metricsEnabled) {\n DEBUG_BUILD && debug.warn('metrics option not enabled, metric will not be captured.');\n return;\n }\n\n // Enrich metric with contextual attributes\n const { user, attributes: scopeAttributes } = getCombinedScopeData(getIsolationScope(), currentScope);\n const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user);\n\n client.emit('processMetric', enrichedMetric);\n\n // todo(v11): Remove the experimental `beforeSendMetric`\n // eslint-disable-next-line deprecation/deprecation\n const beforeSendCallback = beforeSendMetric || _experiments?.beforeSendMetric;\n const processedMetric = beforeSendCallback ? beforeSendCallback(enrichedMetric) : enrichedMetric;\n\n if (!processedMetric) {\n DEBUG_BUILD && debug.log('`beforeSendMetric` returned `null`, will not send metric.');\n return;\n }\n\n const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes);\n\n DEBUG_BUILD && debug.log('[Metric]', serializedMetric);\n\n captureSerializedMetric(client, serializedMetric);\n\n client.emit('afterCaptureMetric', processedMetric);\n}\n\n/**\n * Flushes the metrics buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_flushMetricsBuffer(client: Client, maybeMetricBuffer?: Array): void {\n const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? [];\n if (metricBuffer.length === 0) {\n return;\n }\n\n const clientOptions = client.getOptions();\n const envelope = createMetricEnvelope(metricBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n // Clear the metric buffer after envelopes have been constructed.\n _getBufferMap().set(client, []);\n\n client.emit('flushMetrics');\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the metric buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the metric buffer for.\n * @returns The metric buffer for the given client.\n */\nexport function _INTERNAL_getMetricBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\n // The reference to the Client <> MetricBuffer map is stored on the carrier to ensure it's always the same\n return getGlobalSingleton('clientToMetricBufferMap', () => new WeakMap>());\n}\n","/**\n * Calls `unref` on a timer, if the method is available on @param timer.\n *\n * `unref()` is used to allow processes to exit immediately, even if the timer\n * is still running and hasn't resolved yet.\n *\n * Use this in places where code can run on browser or server, since browsers\n * do not support `unref`.\n */\nexport function safeUnref(timer: ReturnType): ReturnType {\n if (typeof timer === 'object' && typeof timer.unref === 'function') {\n timer.unref();\n }\n return timer;\n}\n","import { rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\nimport { safeUnref } from './timer';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: PromiseLike[];\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\nexport const SENTRY_BUFFER_FULL_ERROR = Symbol.for('SentryBufferFullError');\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 */\nexport function makePromiseBuffer(limit: number = 100): PromiseBuffer {\n const buffer: Set> = new Set();\n\n function isReady(): boolean {\n return buffer.size < 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: PromiseLike): void {\n buffer.delete(task);\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: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR);\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n buffer.add(task);\n void task.then(\n () => remove(task),\n () => remove(task),\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?: number): PromiseLike {\n if (!buffer.size) {\n return resolvedSyncPromise(true);\n }\n\n // We want to resolve even if one of the promises rejects\n const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true);\n\n if (!timeout) {\n return drainPromise;\n }\n\n const promises = [\n drainPromise,\n new Promise(resolve => safeUnref(setTimeout(() => resolve(false), timeout))),\n ];\n\n return Promise.race(promises);\n }\n\n return {\n get $(): PromiseLike[] {\n return Array.from(buffer);\n },\n add,\n drain,\n };\n}\n","import type { DataCategory } from '../types-hoist/datacategory';\nimport type { TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { safeDateNow } from './randomSafeContext';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const 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 */\nexport function parseRetryAfterHeader(header: string, now: number = safeDateNow()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const 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 the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = safeDateNow()): boolean {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = safeDateNow(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers?.['x-sentry-rate-limits'];\n const retryAfterHeader = 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 * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5) as [string, ...string[]];\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\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","import { DEBUG_BUILD } from '../debug-build';\nimport type { EventDropReason } from '../types-hoist/clientreport';\nimport type { Envelope, EnvelopeItem } from '../types-hoist/envelope';\nimport type {\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport {\n createEnvelope,\n envelopeContainsItemType,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n serializeEnvelope,\n} from '../utils/envelope';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer';\nimport { isRateLimited, type RateLimits, updateRateLimits } from '../utils/ratelimit';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', dataCategory);\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 Promise.resolve({});\n }\n\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as (typeof envelope)[1]);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n // Don't record outcomes for client reports - we don't want to create a feedback loop if client reports themselves fail to send\n if (envelopeContainsItemType(filteredEnvelope, ['client_report'])) {\n DEBUG_BUILD && debug.warn(`Dropping client report. Will not send outcomes (reason: ${reason}).`);\n return;\n }\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n response => {\n // Handle 413 Content Too Large\n // Loss of envelope content is expected so we record a send_error client report\n // https://develop.sentry.dev/sdk/expected-features/#dealing-with-network-failures\n if (response.statusCode === 413) {\n DEBUG_BUILD &&\n debug.error(\n 'Sentry responded with status code 413. Envelope was discarded due to exceeding size limits.',\n );\n recordEnvelopeLoss('send_error');\n return response;\n }\n\n // We don't want to throw on NOK responses, but we want to at least log them\n if (\n DEBUG_BUILD &&\n response.statusCode !== undefined &&\n (response.statusCode < 200 || response.statusCode >= 300)\n ) {\n debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n DEBUG_BUILD && debug.error('Encountered error running transport request:', error);\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error === SENTRY_BUFFER_FULL_ERROR) {\n DEBUG_BUILD && debug.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return Promise.resolve({});\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n","import type { ClientReport } from '../types-hoist/clientreport';\nimport type { ClientReportEnvelope, ClientReportItem } from '../types-hoist/envelope';\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import type { Event } from '../types-hoist/event';\n\n/**\n * Get a list of possible event messages from a Sentry event.\n */\nexport function getPossibleEventMessages(event: Event): string[] {\n const possibleMessages: string[] = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n try {\n // @ts-expect-error Try catching to save bundle size\n const lastException = event.exception.values[event.exception.values.length - 1];\n if (lastException?.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n } catch {\n // ignore errors here\n }\n\n return possibleMessages;\n}\n","import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanJSON } from '../types-hoist/span';\n\n/**\n * Converts a transaction event to a span JSON object.\n */\nexport function convertTransactionEventToSpanJson(event: TransactionEvent): SpanJSON {\n const { trace_id, parent_span_id, span_id, status, origin, data, op } = event.contexts?.trace ?? {};\n\n return {\n data: data ?? {},\n description: event.transaction,\n op,\n parent_span_id,\n span_id: span_id ?? '',\n start_timestamp: event.start_timestamp ?? 0,\n status,\n timestamp: event.timestamp,\n trace_id: trace_id ?? '',\n origin,\n profile_id: data?.[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n measurements: event.measurements,\n is_segment: true,\n };\n}\n\n/**\n * Converts a span JSON object to a transaction event.\n */\nexport function convertSpanJsonToTransactionEvent(span: SpanJSON): TransactionEvent {\n return {\n type: 'transaction',\n timestamp: span.timestamp,\n start_timestamp: span.start_timestamp,\n transaction: span.description,\n contexts: {\n trace: {\n trace_id: span.trace_id,\n span_id: span.span_id,\n parent_span_id: span.parent_span_id,\n op: span.op,\n status: span.status,\n origin: span.origin,\n data: {\n ...span.data,\n ...(span.profile_id && { [SEMANTIC_ATTRIBUTE_PROFILE_ID]: span.profile_id }),\n ...(span.exclusive_time && { [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: span.exclusive_time }),\n },\n },\n },\n measurements: span.measurements,\n };\n}\n","/* eslint-disable max-lines */\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { getCurrentScope, getIsolationScope, getTraceContextFromScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations, setupIntegration, setupIntegrations } from './integration';\nimport { _INTERNAL_flushLogsBuffer } from './logs/internal';\nimport { _INTERNAL_flushMetricsBuffer } from './metrics/internal';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base';\nimport type { Breadcrumb, BreadcrumbHint, FetchBreadcrumbHint, XhrBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { CheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { EventDropReason, Outcome } from './types-hoist/clientreport';\nimport type { DataCategory } from './types-hoist/datacategory';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { DynamicSamplingContext, Envelope } from './types-hoist/envelope';\nimport type { ErrorEvent, Event, EventHint, EventType, TransactionEvent } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { FeedbackEvent } from './types-hoist/feedback';\nimport type { Integration } from './types-hoist/integration';\nimport type { Log } from './types-hoist/log';\nimport type { Metric } from './types-hoist/metric';\nimport type { Primitive } from './types-hoist/misc';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span, SpanAttributes, SpanContextData, SpanJSON } from './types-hoist/span';\nimport type { StartSpanOptions } from './types-hoist/startSpanOptions';\nimport type { Transport, TransportMakeRequestResponse } from './types-hoist/transport';\nimport { createClientReportEnvelope } from './utils/clientreport';\nimport { debug } from './utils/debug-logger';\nimport { dsnToString, makeDsn } from './utils/dsn';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope';\nimport { getPossibleEventMessages } from './utils/eventUtils';\nimport { isParameterizedString, isPlainObject, isPrimitive, isThenable } from './utils/is';\nimport { merge } from './utils/merge';\nimport { checkOrSetAlreadyCaught, uuid4 } from './utils/misc';\nimport { parseSampleRate } from './utils/parseSampleRate';\nimport { prepareEvent } from './utils/prepareEvent';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { reparentChildSpans, shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning } from './utils/spanUtils';\nimport { rejectedSyncPromise } from './utils/syncpromise';\nimport { safeUnref } from './utils/timer';\nimport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson } from './utils/transactionEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\nconst MISSING_RELEASE_FOR_SESSION_ERROR = 'Discarded session because of missing or non-string release';\n\nconst INTERNAL_ERROR_SYMBOL = Symbol.for('SentryInternalError');\nconst DO_NOT_SEND_EVENT_SYMBOL = Symbol.for('SentryDoNotSendEventError');\n\n// Default interval for flushing logs and metrics (5 seconds)\nconst DEFAULT_FLUSH_INTERVAL = 5000;\n\ninterface InternalError {\n message: string;\n [INTERNAL_ERROR_SYMBOL]: true;\n}\n\ninterface DoNotSendEventError {\n message: string;\n [DO_NOT_SEND_EVENT_SYMBOL]: true;\n}\n\nfunction _makeInternalError(message: string): InternalError {\n return {\n message,\n [INTERNAL_ERROR_SYMBOL]: true,\n };\n}\n\nfunction _makeDoNotSendEventError(message: string): DoNotSendEventError {\n return {\n message,\n [DO_NOT_SEND_EVENT_SYMBOL]: true,\n };\n}\n\nfunction _isInternalError(error: unknown): error is InternalError {\n return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error;\n}\n\nfunction _isDoNotSendEventError(error: unknown): error is DoNotSendEventError {\n return !!error && typeof error === 'object' && DO_NOT_SEND_EVENT_SYMBOL in error;\n}\n\n/**\n * Sets up weight-based flushing for logs or metrics.\n * This helper function encapsulates the common pattern of:\n * 1. Tracking accumulated weight of items\n * 2. Flushing when weight exceeds threshold (800KB)\n * 3. Flushing after timeout period from the first item\n *\n * Uses closure variables to track weight and timeout state.\n */\nfunction setupWeightBasedFlushing<\n T,\n AfterCaptureHook extends 'afterCaptureLog' | 'afterCaptureMetric',\n FlushHook extends 'flushLogs' | 'flushMetrics',\n>(\n client: Client,\n afterCaptureHook: AfterCaptureHook,\n flushHook: FlushHook,\n estimateSizeFn: (item: T) => number,\n flushFn: (client: Client) => void,\n): void {\n // Track weight and timeout in closure variables\n let weight = 0;\n let flushTimeout: ReturnType | undefined;\n let isTimerActive = false;\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(flushHook, () => {\n weight = 0;\n clearTimeout(flushTimeout);\n isTimerActive = false;\n });\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(afterCaptureHook, (item: T) => {\n weight += estimateSizeFn(item);\n\n // We flush the buffer if it exceeds 0.8 MB\n // The weight is a rough estimate, so we flush way before the payload gets too big.\n if (weight >= 800_000) {\n flushFn(client);\n } else if (!isTimerActive) {\n // Only start timer if one isn't already running.\n // This prevents flushing being delayed by items that arrive close to the timeout limit\n // and thus resetting the flushing timeout and delaying items being flushed.\n isTimerActive = true;\n // Use safeUnref so the timer doesn't prevent the process from exiting\n flushTimeout = safeUnref(\n setTimeout(() => {\n flushFn(client);\n // Note: isTimerActive is reset by the flushHook handler above, not here,\n // to avoid race conditions when new items arrive during the flush.\n }, DEFAULT_FLUSH_INTERVAL),\n );\n }\n });\n\n client.on('flush', () => {\n flushFn(client);\n });\n}\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 Client._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 Client {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex;\n\n /** Number of calls being processed */\n protected _numProcessing: number;\n\n protected _eventProcessors: EventProcessor[];\n\n /** Holds flushable */\n protected _outcomes: { [key: string]: number };\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n protected _hooks: Record>;\n\n protected _promiseBuffer: PromiseBuffer;\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n this._integrations = {};\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n this._promiseBuffer = makePromiseBuffer(options.transportOptions?.bufferSize ?? DEFAULT_TRANSPORT_BUFFER_SIZE);\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && debug.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(\n this._dsn,\n options.tunnel,\n options._metadata ? options._metadata.sdk : undefined,\n );\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n\n // Backfill enableLogs option from _experiments.enableLogs\n // TODO(v11): Remove or change default value\n // eslint-disable-next-line deprecation/deprecation\n this._options.enableLogs = this._options.enableLogs ?? this._options._experiments?.enableLogs;\n\n // Setup log flushing with weight and timeout tracking\n if (this._options.enableLogs) {\n setupWeightBasedFlushing(this, 'afterCaptureLog', 'flushLogs', estimateLogSizeInBytes, _INTERNAL_flushLogsBuffer);\n }\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const enableMetrics = this._options.enableMetrics ?? this._options._experiments?.enableMetrics ?? true;\n\n // Setup metric flushing with weight and timeout tracking\n if (enableMetrics) {\n setupWeightBasedFlushing(\n this,\n 'afterCaptureMetric',\n 'flushMetrics',\n estimateMetricSizeInBytes,\n _INTERNAL_flushMetricsBuffer,\n );\n }\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n this._process(\n () =>\n this.eventFromException(exception, hintWithEventId)\n .then(event => this._captureEvent(event, hintWithEventId, scope))\n .then(res => res),\n 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureMessage(\n message: ParameterizedString,\n level?: SeverityLevel,\n hint?: EventHint,\n currentScope?: Scope,\n ): string {\n const hintWithEventId = {\n event_id: uuid4(),\n ...hint,\n };\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n const isMessage = isPrimitive(message);\n const promisedEvent = isMessage\n ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n : this.eventFromException(message, hintWithEventId);\n\n this._process(\n () => promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)),\n isMessage ? 'unknown' : 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a manually created event and sends it to Sentry.\n *\n * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureEvent(event: Event, hint?: EventHint, currentScope?: Scope): string {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (hint?.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n const dataCategory = getDataCategoryByType(event.type);\n\n this._process(\n () => this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope),\n dataCategory,\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a session.\n */\n public captureSession(session: Session): void {\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 * Create a cron monitor check in and send it to Sentry. This method is not available on all clients.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n * @param scope An optional scope containing event metadata.\n * @returns A string representing the id of the check in.\n */\n public captureCheckIn?(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string;\n\n /**\n * Get the current Dsn.\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * Get the current options.\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * Get the SDK metadata.\n * @see SdkMetadata\n */\n public getSdkMetadata(): SdkMetadata | undefined {\n return this._options._metadata;\n }\n\n /**\n * Returns the transport that is used by the client.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * Wait for all events to be sent or the timeout to expire, whichever comes first.\n *\n * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will\n * cause the client to wait until all events are sent before resolving the promise.\n * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are\n * still events in the queue when the timeout is reached.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (!transport) {\n return true;\n }\n\n this.emit('flush');\n\n const clientFinished = await this._isClientDoneProcessing(timeout);\n const transportFlushed = await transport.flush(timeout);\n\n return clientFinished && transportFlushed;\n }\n\n /**\n * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}.\n *\n * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause\n * the client to wait until all events are sent before disabling itself.\n * @returns {Promise} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if\n * it doesn't.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async close(timeout?: number): PromiseLike {\n _INTERNAL_flushLogsBuffer(this);\n const result = await this.flush(timeout);\n this.getOptions().enabled = false;\n this.emit('close');\n return result;\n }\n\n /**\n * Get all installed event processors.\n */\n public getEventProcessors(): EventProcessor[] {\n return this._eventProcessors;\n }\n\n /**\n * Adds an event processor that applies to any event processed by this client.\n */\n public addEventProcessor(eventProcessor: EventProcessor): void {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * Initialize this client.\n * Call this after the client was set on a scope.\n */\n public init(): void {\n if (\n this._isEnabled() ||\n // Force integrations to be setup even if no DSN was set when we have\n // Spotlight enabled. This is particularly important for browser as we\n // don't support the `spotlight` option there and rely on the users\n // adding the `spotlightBrowserIntegration()` to their integrations which\n // wouldn't get initialized with the check below when there's no DSN set.\n this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n ) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed.\n */\n public getIntegrationByName(integrationName: string): T | undefined {\n return this._integrations[integrationName] as T | undefined;\n }\n\n /**\n * Add an integration to the client.\n * This can be used to e.g. lazy load integrations.\n * In most cases, this should not be necessary,\n * and you're better off just passing the integrations via `integrations: []` at initialization time.\n * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so.\n */\n public addIntegration(integration: Integration): void {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * Send a fully prepared event to Sentry.\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n }\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env).then(sendResponse => this.emit('afterSendEvent', event, sendResponse));\n }\n\n /**\n * Send a session or session aggregrates to Sentry.\n */\n public sendSession(session: Session | SessionAggregates): void {\n // Backfill release and environment on session\n const { release: clientReleaseOption, environment: clientEnvironmentOption = DEFAULT_ENVIRONMENT } = this._options;\n if ('aggregates' in session) {\n const sessionAttrs = session.attrs || {};\n if (!sessionAttrs.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n sessionAttrs.release = sessionAttrs.release || clientReleaseOption;\n sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption;\n session.attrs = sessionAttrs;\n } else {\n if (!session.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n session.release = session.release || clientReleaseOption;\n session.environment = session.environment || clientEnvironmentOption;\n }\n\n this.emit('beforeSendSession', session);\n\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env);\n }\n\n /**\n * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry).\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory, count: number = 1): void {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) 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 const key = `${reason}:${category}`;\n DEBUG_BUILD && debug.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n /* eslint-disable @typescript-eslint/unified-signatures */\n /**\n * Register a callback for whenever a span is started.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'spanStart', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback before span sampling runs. Receives a `samplingDecision` object argument with a `decision`\n * property that can be used to make a sampling decision that will be enforced, before any span sampling runs.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSampling',\n callback: (\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ) => void,\n ): void;\n\n /**\n * Register a callback for after a span is ended.\n * NOTE: The span cannot be mutated anymore in this callback.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'spanEnd', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for when an idle span is allowed to auto-finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'idleSpanEnableAutoFinish', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for transaction start and finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): () => void;\n\n /**\n * Register a callback that runs when stack frame metadata should be applied to an event.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'applyFrameMetadata', callback: (event: Event) => void): () => void;\n\n /**\n * Register a callback for before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for before sending a session or session aggregrates..\n * Receives the session/aggregate as second argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendSession', callback: (session: Session | SessionAggregates) => void): () => void;\n\n /**\n * Register a callback for preprocessing an event,\n * before it is passed to (global) event processors.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for postprocessing an event,\n * after it was passed to (global) event processors, before it is being sent.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'postprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for when an event has been sent.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse) => void,\n ): () => void;\n\n /**\n * Register a callback before a breadcrumb is added.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): () => void;\n\n /**\n * Register a callback when a DSC (Dynamic Sampling Context) is created.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext, rootSpan?: Span) => void): () => void;\n\n /**\n * Register a callback when a Feedback event has been prepared.\n * This should be used to mutate the event. The options argument can hint\n * about what kind of mutation it expects.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSendFeedback',\n callback: (feedback: FeedbackEvent, options?: { includeReplay?: boolean }) => void,\n ): () => void;\n\n /**\n * Register a callback when the feedback widget is opened in a user's browser\n */\n public on(hook: 'openFeedbackWidget', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger a span start for a page load.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startPageLoadSpan',\n callback: (\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ) => void,\n ): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger the end of a page load span.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'endPageloadSpan', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger after the pageload span was started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterStartPageLoadSpan', callback: (span: Span) => void): () => void;\n\n /**\n * A hook for triggering right before a navigation span is started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeStartNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for browser tracing integrations to trigger a span for a navigation.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a span with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestSpan',\n callback: (span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a breadcrumb with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestBreadcrumb',\n callback: (breadcrumb: Breadcrumb, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook that is called when the client is flushing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flush', callback: () => void): () => void;\n\n /**\n * A hook that is called when the client is closing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'close', callback: () => void): () => void;\n\n /**\n * A hook that is called before a log is captured. This hooks runs before `beforeSendLog` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called after a log is captured\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing logs\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushLogs', callback: () => void): () => void;\n\n /**\n * A hook that is called after capturing a metric. This hooks runs after `beforeSendMetric` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing metrics\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushMetrics', callback: () => void): () => void;\n\n /**\n * A hook that is called when a metric is processed before it is captured and before the `beforeSendMetric` callback is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'processMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'httpServerRequest',\n callback: (request: unknown, response: unknown, normalizedRequest: RequestEventData) => void,\n ): () => void;\n\n /**\n * A hook that is called when the UI Profiler should start profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.startProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'startUIProfiler', callback: () => void): () => void;\n\n /**\n * A hook that is called when the UI Profiler should stop profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.stopProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'stopUIProfiler', callback: () => void): () => void;\n\n /**\n * Register a hook on this client.\n */\n public on(hook: string, callback: unknown): () => void {\n const hookCallbacks = (this._hooks[hook] = this._hooks[hook] || new Set());\n\n // Wrap the callback in a function so that registering the same callback instance multiple\n // times results in the callback being called multiple times.\n // @ts-expect-error - The `callback` type is correct and must be a function due to the\n // individual, specific overloads of this function.\n // eslint-disable-next-line @typescript-eslint/ban-types\n const uniqueCallback: Function = (...args: unknown[]) => callback(...args);\n\n hookCallbacks.add(uniqueCallback);\n\n // This function returns a callback execution handler that, when invoked,\n // deregisters a callback. This is crucial for managing instances where callbacks\n // need to be unregistered to prevent self-referencing in callback closures,\n // ensuring proper garbage collection.\n return () => {\n hookCallbacks.delete(uniqueCallback);\n };\n }\n\n /** Fire a hook whenever a span starts. */\n public emit(hook: 'spanStart', span: Span): void;\n\n /** A hook that is called every time before a span is sampled. */\n public emit(\n hook: 'beforeSampling',\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ): void;\n\n /** Fire a hook whenever a span ends. */\n public emit(hook: 'spanEnd', span: Span): void;\n\n /**\n * Fire a hook indicating that an idle span is allowed to auto finish.\n */\n public emit(hook: 'idleSpanEnableAutoFinish', span: Span): void;\n\n /**\n * Fire a hook event for envelope creation and sending. Expects to be given an envelope as the\n * second argument.\n */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /**\n * Fire a hook indicating that stack frame metadata should be applied to the event passed to the hook.\n */\n public emit(hook: 'applyFrameMetadata', event: Event): void;\n\n /**\n * Fire a hook event before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event before sending a session/aggregates.\n * Expects to be given the prepared session/aggregates as second argument.\n */\n public emit(hook: 'beforeSendSession', session: Session | SessionAggregates): void;\n\n /**\n * Fire a hook event to process events before they are passed to (global) event processors.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event to process a user on an event before it is sent to Sentry, after all other processors have run.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'postprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event after sending an event. Expects to be given an Event as the\n * second argument.\n */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse): void;\n\n /**\n * Fire a hook for when a breadcrumb is added. Expects the breadcrumb as second argument.\n */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /**\n * Fire a hook for when a DSC (Dynamic Sampling Context) is created. Expects the DSC as second argument.\n */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext, rootSpan?: Span): void;\n\n /**\n * Fire a hook event for after preparing a feedback event. Events to be given\n * a feedback event as the second argument, and an optional options object as\n * third argument.\n */\n public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay?: boolean }): void;\n\n /**\n * Fire a hook event for when the feedback widget is opened in a user's browser\n */\n public emit(hook: 'openFeedbackWidget'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span start for a page load.\n */\n public emit(\n hook: 'startPageLoadSpan',\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger the end of a page load span.\n */\n public emit(hook: 'endPageloadSpan'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger aafter the pageload span was started.\n */\n public emit(hook: 'afterStartPageLoadSpan', span: Span): void;\n\n /**\n * Emit a hook event for triggering right before a navigation span is started.\n */\n public emit(\n hook: 'beforeStartNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span for a navigation.\n */\n public emit(\n hook: 'startNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a span with request data.\n */\n public emit(hook: 'beforeOutgoingRequestSpan', span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a breadcrumb with request data.\n */\n public emit(\n hook: 'beforeOutgoingRequestBreadcrumb',\n breadcrumb: Breadcrumb,\n hint: XhrBreadcrumbHint | FetchBreadcrumbHint,\n ): void;\n\n /**\n * Emit a hook event for client flush\n */\n public emit(hook: 'flush'): void;\n\n /**\n * Emit a hook event for client close\n */\n public emit(hook: 'close'): void;\n\n /**\n * Emit a hook event for client before capturing a log. This hooks runs before `beforeSendLog` is fired.\n */\n public emit(hook: 'beforeCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client after capturing a log.\n */\n public emit(hook: 'afterCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client flush logs\n */\n public emit(hook: 'flushLogs'): void;\n\n /**\n * Emit a hook event for client after capturing a metric.\n */\n public emit(hook: 'afterCaptureMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client flush metrics\n */\n public emit(hook: 'flushMetrics'): void;\n\n /**\n *\n * Emit a hook event for client to process a metric before it is captured.\n * This hook is called before the `beforeSendMetric` callback is fired.\n */\n public emit(hook: 'processMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n */\n public emit(\n hook: 'httpServerRequest',\n request: unknown,\n response: unknown,\n normalizedRequest: RequestEventData,\n ): void;\n\n /**\n * Emit a hook event for starting the UI Profiler.\n */\n public emit(hook: 'startUIProfiler'): void;\n\n /**\n * Emit a hook event for stopping the UI Profiler.\n */\n public emit(hook: 'stopUIProfiler'): void;\n\n /**\n * Emit a hook that was previously registered via `on()`.\n */\n public emit(hook: string, ...rest: unknown[]): void {\n const callbacks = this._hooks[hook];\n if (callbacks) {\n callbacks.forEach(callback => callback(...rest));\n }\n }\n\n /**\n * Send an envelope to Sentry.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async sendEnvelope(envelope: Envelope): PromiseLike {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n try {\n return await this._transport.send(envelope);\n } catch (reason) {\n DEBUG_BUILD && debug.error('Error while sending envelope:', reason);\n return {};\n }\n }\n\n DEBUG_BUILD && debug.error('Transport disabled');\n return {};\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * Subclasses should override this method to clean up their own resources.\n * After calling dispose(), the client should not be used anymore.\n */\n public dispose(): void {\n // Base class has no cleanup logic - subclasses implement their own\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n protected _setupIntegrations(): void {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n // initially, set `crashed` based on the event level and update from exceptions if there are any later on\n let crashed = event.level === 'fatal';\n let errored = false;\n const exceptions = event.exception?.values;\n\n if (exceptions) {\n errored = true;\n // reset crashed to false if there are exceptions, to ensure `mechanism.handled` is respected.\n crashed = false;\n\n for (const ex of exceptions) {\n if (ex.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 const sessionNonTerminal = session.status === 'ok';\n const 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 protected async _isClientDoneProcessing(timeout?: number): Promise {\n let ticked = 0;\n\n while (!timeout || ticked < timeout) {\n await new Promise(resolve => setTimeout(resolve, 1));\n\n if (!this._numProcessing) {\n return true;\n }\n ticked++;\n }\n\n return false;\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._transport !== 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 currentScope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations?.length) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n if (!event.type) {\n isolationScope.setLastEventId(event.event_id || hint.event_id);\n }\n\n return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n this.emit('postprocessEvent', evt, hint);\n\n evt.contexts = {\n trace: { ...evt.contexts?.trace, ...getTraceContextFromScope(currentScope) },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n\n return evt;\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 protected _captureEvent(\n event: Event,\n hint: EventHint = {},\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ): PromiseLike {\n if (DEBUG_BUILD && isErrorEvent(event)) {\n debug.log(`Captured error event \\`${getPossibleEventMessages(event)[0] || ''}\\``);\n }\n\n return this._processEvent(event, hint, currentScope, isolationScope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n if (_isDoNotSendEventError(reason)) {\n debug.log(reason.message);\n } else if (_isInternalError(reason)) {\n debug.warn(reason.message);\n } else {\n debug.warn(reason);\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 currentScope 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 protected _processEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n if (isError && typeof parsedSampleRate === 'number' && safeMathRandom() > parsedSampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n _makeDoNotSendEventError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n const dataCategory = getDataCategoryByType(event.type);\n\n return this._prepareEvent(event, hint, currentScope, isolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory);\n throw _makeDoNotSendEventError('An event processor returned `null`, will not send event.');\n }\n\n const isInternalException = (hint.data as { __sentry__: boolean })?.__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(this, options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw _makeDoNotSendEventError(`${beforeSendLabel} returned \\`null\\`, will not send event.`);\n }\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (isError && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore = processedEvent.sdkProcessingMetadata?.spanCountBeforeProcessing || 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (_isDoNotSendEventError(reason) || _isInternalError(reason)) {\n throw reason;\n }\n\n this.captureException(reason, {\n mechanism: {\n handled: false,\n type: 'internal',\n },\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw _makeInternalError(\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 protected _process(taskProducer: () => PromiseLike, dataCategory: DataCategory): void {\n this._numProcessing++;\n\n void this._promiseBuffer.add(taskProducer).then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n\n if (reason === SENTRY_BUFFER_FULL_ERROR) {\n this.recordDroppedEvent('queue_overflow', dataCategory);\n }\n\n return reason;\n },\n );\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n protected _flushOutcomes(): void {\n DEBUG_BUILD && debug.log('Flushing outcomes...');\n\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && debug.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && debug.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && debug.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n */\n public abstract eventFromException(_exception: unknown, _hint?: EventHint): PromiseLike;\n\n /**\n * Creates an {@link Event} from primitive inputs to `captureMessage`.\n */\n public abstract eventFromMessage(\n _message: ParameterizedString,\n _level?: SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\nfunction getDataCategoryByType(type: EventType | 'replay_event' | undefined): DataCategory {\n return type === 'replay_event' ? 'replay' : type || 'error';\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike | Event | null,\n beforeSendLabel: string,\n): PromiseLike | Event | null {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return event;\n },\n e => {\n throw _makeInternalError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n client: Client,\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike | Event | null {\n const { beforeSend, beforeSendTransaction, beforeSendSpan, ignoreSpans } = options;\n let processedEvent = event;\n\n if (isErrorEvent(processedEvent) && beforeSend) {\n return beforeSend(processedEvent, hint);\n }\n\n if (isTransactionEvent(processedEvent)) {\n // Avoid processing if we don't have to\n if (beforeSendSpan || ignoreSpans) {\n // 1. Process root span\n const rootSpanJson = convertTransactionEventToSpanJson(processedEvent);\n\n // 1.1 If the root span should be ignored, drop the whole transaction\n if (ignoreSpans?.length && shouldIgnoreSpan(rootSpanJson, ignoreSpans)) {\n // dropping the whole transaction!\n return null;\n }\n\n // 1.2 If a `beforeSendSpan` callback is defined, process the root span\n if (beforeSendSpan) {\n const processedRootSpanJson = beforeSendSpan(rootSpanJson);\n if (!processedRootSpanJson) {\n showSpanDropWarning();\n } else {\n // update event with processed root span values\n processedEvent = merge(event, convertSpanJsonToTransactionEvent(processedRootSpanJson));\n }\n }\n\n // 2. Process child spans\n if (processedEvent.spans) {\n const processedSpans: SpanJSON[] = [];\n\n const initialSpans = processedEvent.spans;\n\n for (const span of initialSpans) {\n // 2.a If the child span should be ignored, reparent it to the root span\n if (ignoreSpans?.length && shouldIgnoreSpan(span, ignoreSpans)) {\n reparentChildSpans(initialSpans, span);\n continue;\n }\n\n // 2.b If a `beforeSendSpan` callback is defined, process the child span\n if (beforeSendSpan) {\n const processedSpan = beforeSendSpan(span);\n if (!processedSpan) {\n showSpanDropWarning();\n processedSpans.push(span);\n } else {\n processedSpans.push(processedSpan);\n }\n } else {\n processedSpans.push(span);\n }\n }\n\n const droppedSpans = processedEvent.spans.length - processedSpans.length;\n if (droppedSpans) {\n client.recordDroppedEvent('before_send', 'span', droppedSpans);\n }\n\n processedEvent.spans = processedSpans;\n }\n }\n\n if (beforeSendTransaction) {\n if (processedEvent.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = processedEvent.spans.length;\n processedEvent.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(processedEvent as TransactionEvent, hint);\n }\n }\n\n return processedEvent;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n\n/**\n * Estimate the size of a metric in bytes.\n *\n * @param metric - The metric to estimate the size of.\n * @returns The estimated size of the metric in bytes.\n */\nfunction estimateMetricSizeInBytes(metric: Metric): number {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (metric.name) {\n weight += metric.name.length * 2;\n }\n\n // Add weight for number\n weight += 8;\n\n return weight + estimateAttributesSizeInBytes(metric.attributes);\n}\n\n/**\n * Estimate the size of a log in bytes.\n *\n * @param log - The log to estimate the size of.\n * @returns The estimated size of the log in bytes.\n */\nfunction estimateLogSizeInBytes(log: Log): number {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (log.message) {\n weight += log.message.length * 2;\n }\n\n return weight + estimateAttributesSizeInBytes(log.attributes);\n}\n\n/**\n * Estimate the size of attributes in bytes.\n *\n * @param attributes - The attributes object to estimate the size of.\n * @returns The estimated size of the attributes in bytes.\n */\nfunction estimateAttributesSizeInBytes(attributes: Record | undefined): number {\n if (!attributes) {\n return 0;\n }\n\n let weight = 0;\n\n Object.values(attributes).forEach(value => {\n if (Array.isArray(value)) {\n weight += value.length * estimatePrimitiveSizeInBytes(value[0]);\n } else if (isPrimitive(value)) {\n weight += estimatePrimitiveSizeInBytes(value);\n } else {\n // For objects values, we estimate the size of the object as 100 bytes\n weight += 100;\n }\n });\n\n return weight;\n}\n\nfunction estimatePrimitiveSizeInBytes(value: Primitive): number {\n if (typeof value === 'string') {\n return value.length * 2;\n } else if (typeof value === 'number') {\n return 8;\n } else if (typeof value === 'boolean') {\n return 4;\n }\n\n return 0;\n}\n","import type { SerializedCheckIn } from './types-hoist/checkin';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { CheckInEnvelope, CheckInItem, DynamicSamplingContext } from './types-hoist/envelope';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport { dsnToString } from './utils/dsn';\nimport { createEnvelope } from './utils/envelope';\n\n/**\n * Create envelope from check in item.\n */\nexport function createCheckInEnvelope(\n checkIn: SerializedCheckIn,\n dynamicSamplingContext?: Partial,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): CheckInEnvelope {\n const headers: CheckInEnvelope[0] = {\n sent_at: new Date().toISOString(),\n };\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n if (dynamicSamplingContext) {\n headers.trace = dynamicSamplingContext as DynamicSamplingContext;\n }\n\n const item = createCheckInEnvelopeItem(checkIn);\n return createEnvelope(headers, [item]);\n}\n\nfunction createCheckInEnvelopeItem(checkIn: SerializedCheckIn): CheckInItem {\n const checkInHeaders: CheckInItem[0] = {\n type: 'check_in',\n };\n return [checkInHeaders, checkIn];\n}\n","import type { ClientOptions } from '../types-hoist/options';\n\n/**\n * Takes the SDK metadata and adds the user-agent header to the transport options.\n * This ensures that the SDK sends the user-agent header with SDK name and version to\n * all requests made by the transport.\n *\n * @see https://develop.sentry.dev/sdk/overview/#user-agent\n */\nexport function addUserAgentToTransportHeaders(options: ClientOptions): void {\n const sdkMetadata = options._metadata?.sdk;\n const sdkUserAgent =\n sdkMetadata?.name && sdkMetadata?.version ? `${sdkMetadata?.name}/${sdkMetadata?.version}` : undefined;\n\n options.transportOptions = {\n ...options.transportOptions,\n headers: {\n ...(sdkUserAgent && { 'user-agent': sdkUserAgent }),\n ...options.transportOptions?.headers,\n },\n };\n}\n","import type { Client } from '../client';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Extras } from '../types-hoist/extra';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { SeverityLevel } from '../types-hoist/severity';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isError, isErrorEvent, isParameterizedString, isPlainObject } from './is';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc';\nimport { normalizeToSize } from './normalize';\nimport { extractExceptionKeysForMessage } from './object';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nexport function parseStackFrames(stackParser: StackParser, error: Error): StackFrame[] {\n return stackParser(error.stack || '', 1);\n}\n\nfunction hasSentryFetchUrlHost(error: unknown): error is Error & { __sentry_fetch_url_host__: string } {\n return isError(error) && '__sentry_fetch_url_host__' in error && typeof error.__sentry_fetch_url_host__ === 'string';\n}\n\n/**\n * Enhances the error message with the hostname for better Sentry error reporting.\n * This allows third-party packages to still match on the original error message,\n * while Sentry gets the enhanced version with context.\n *\n * Only used internally\n * @hidden\n */\nexport function _enhanceErrorWithSentryInfo(error: T): string {\n // If the error has a __sentry_fetch_url_host__ property (added by fetch instrumentation),\n // enhance the error message with the hostname.\n if (hasSentryFetchUrlHost(error)) {\n return `${error.message} (${error.__sentry_fetch_url_host__})`;\n }\n\n return error.message;\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nexport function exceptionFromError(stackParser: StackParser, error: Error): Exception {\n const exception: Exception = {\n type: error.name || error.constructor.name,\n value: _enhanceErrorWithSentryInfo(error),\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj: Record): Error | undefined {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (value instanceof Error) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nfunction getMessageForObject(exception: Record): string {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n }\n\n const keys = extractExceptionKeysForMessage(exception);\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as exception with message \\`${exception.message}\\``;\n }\n\n const className = getObjectClassName(exception);\n\n return `${\n className && className !== 'Object' ? `'${className}'` : 'Object'\n } captured as exception with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n try {\n const prototype: unknown | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\nfunction getException(\n client: Client,\n mechanism: Mechanism,\n exception: unknown,\n hint?: EventHint,\n): [Error, Extras | undefined] {\n if (isError(exception)) {\n return [exception, undefined];\n }\n\n // Mutate this!\n mechanism.synthetic = true;\n\n if (isPlainObject(exception)) {\n const normalizeDepth = client?.getOptions().normalizeDepth;\n const extras = { ['__serialized__']: normalizeToSize(exception, normalizeDepth) };\n\n const errorFromProp = getErrorPropertyFromObject(exception);\n if (errorFromProp) {\n return [errorFromProp, extras];\n }\n\n const message = getMessageForObject(exception);\n const ex = hint?.syntheticException || new Error(message);\n ex.message = message;\n\n return [ex, extras];\n }\n\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n const ex = hint?.syntheticException || new Error(exception as string);\n ex.message = `${exception}`;\n\n return [ex, undefined];\n}\n\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromUnknownInput(\n client: Client,\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n): Event {\n const providedMechanism: Mechanism | undefined = hint?.data && (hint.data as { mechanism: Mechanism }).mechanism;\n const mechanism: Mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n const [ex, extras] = getException(client, mechanism, exception, hint);\n\n const event: Event = {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint?.event_id,\n };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n event_id: hint?.event_id,\n level,\n };\n\n if (attachStacktrace && hint?.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n addExceptionMechanism(event, { synthetic: true });\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n","import { createCheckInEnvelope } from './checkin';\nimport { Client } from './client';\nimport { getIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Scope } from './scope';\nimport { registerSpanErrorInstrumentation } from './tracing';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base';\nimport { addUserAgentToTransportHeaders } from './transports/userAgent';\nimport type { CheckIn, MonitorConfig, SerializedCheckIn } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { BaseTransportOptions, Transport } from './types-hoist/transport';\nimport { debug } from './utils/debug-logger';\nimport { eventFromMessage, eventFromUnknownInput } from './utils/eventbuilder';\nimport { uuid4 } from './utils/misc';\nimport { makePromiseBuffer } from './utils/promisebuffer';\nimport { resolvedSyncPromise } from './utils/syncpromise';\nimport { _getTraceInfoFromScope } from './utils/trace-info';\n\nexport interface ServerRuntimeClientOptions extends ClientOptions {\n platform?: string;\n runtime?: { name: string; version?: string };\n serverName?: string;\n}\n\n/**\n * The Sentry Server Runtime Client SDK.\n */\nexport class ServerRuntimeClient<\n O extends ClientOptions & ServerRuntimeClientOptions = ServerRuntimeClientOptions,\n> extends Client {\n /**\n * Creates a new Edge SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: O) {\n // Server clients always support tracing\n registerSpanErrorInstrumentation();\n\n addUserAgentToTransportHeaders(options);\n\n super(options);\n\n this._setUpMetricsProcessing();\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n const event = eventFromUnknownInput(this, this._options.stackParser, exception, hint);\n event.level = 'error';\n\n return resolvedSyncPromise(event);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return resolvedSyncPromise(\n eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace),\n );\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\n setCurrentRequestSessionErroredOrCrashed(hint);\n return super.captureException(exception, hint, scope);\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string {\n // If the event is of type Exception, then a request session should be captured\n const isException = !event.type && event.exception?.values && event.exception.values.length > 0;\n if (isException) {\n setCurrentRequestSessionErroredOrCrashed(hint);\n }\n\n return super.captureEvent(event, hint, scope);\n }\n\n /**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\n public captureCheckIn(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string {\n const id = 'checkInId' in checkIn && checkIn.checkInId ? checkIn.checkInId : uuid4();\n if (!this._isEnabled()) {\n DEBUG_BUILD && debug.warn('SDK not enabled, will not capture check-in.');\n return id;\n }\n\n const options = this.getOptions();\n const { release, environment, tunnel } = options;\n\n const serializedCheckIn: SerializedCheckIn = {\n check_in_id: id,\n monitor_slug: checkIn.monitorSlug,\n status: checkIn.status,\n release,\n environment,\n };\n\n if ('duration' in checkIn) {\n serializedCheckIn.duration = checkIn.duration;\n }\n\n if (monitorConfig) {\n serializedCheckIn.monitor_config = {\n schedule: monitorConfig.schedule,\n checkin_margin: monitorConfig.checkinMargin,\n max_runtime: monitorConfig.maxRuntime,\n timezone: monitorConfig.timezone,\n failure_issue_threshold: monitorConfig.failureIssueThreshold,\n recovery_threshold: monitorConfig.recoveryThreshold,\n };\n }\n\n const [dynamicSamplingContext, traceContext] = _getTraceInfoFromScope(this, scope);\n if (traceContext) {\n serializedCheckIn.contexts = {\n trace: traceContext,\n };\n }\n\n const envelope = createCheckInEnvelope(\n serializedCheckIn,\n dynamicSamplingContext,\n this.getSdkMetadata(),\n tunnel,\n this.getDsn(),\n );\n\n DEBUG_BUILD && debug.log('Sending checkin:', checkIn.monitorSlug, checkIn.status);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n\n return id;\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * This method clears all internal state to allow the client to be garbage collected.\n * It clears hooks, event processors, integrations, transport, and other internal references.\n *\n * Call this method after flushing to allow the client to be garbage collected.\n * After calling dispose(), the client should not be used anymore.\n *\n * Subclasses should override this method to clean up their own resources and call `super.dispose()`.\n */\n public override dispose(): void {\n DEBUG_BUILD && debug.log('Disposing client...');\n\n for (const hookName of Object.keys(this._hooks)) {\n this._hooks[hookName]?.clear();\n }\n\n this._hooks = {};\n this._eventProcessors.length = 0;\n this._integrations = {};\n this._outcomes = {};\n (this as unknown as { _transport?: Transport })._transport = undefined;\n this._promiseBuffer = makePromiseBuffer(DEFAULT_TRANSPORT_BUFFER_SIZE);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n if (this._options.platform) {\n event.platform = event.platform || this._options.platform;\n }\n\n if (this._options.runtime) {\n event.contexts = {\n ...event.contexts,\n runtime: event.contexts?.runtime || this._options.runtime,\n };\n }\n\n if (this._options.serverName) {\n event.server_name = event.server_name || this._options.serverName;\n }\n\n return super._prepareEvent(event, hint, currentScope, isolationScope);\n }\n\n /**\n * Process a server-side metric before it is captured.\n */\n private _setUpMetricsProcessing(): void {\n this.on('processMetric', metric => {\n if (this._options.serverName) {\n metric.attributes = {\n 'server.address': this._options.serverName,\n ...metric.attributes,\n };\n }\n });\n }\n}\n\nfunction setCurrentRequestSessionErroredOrCrashed(eventHint?: EventHint): void {\n const requestSession = getIsolationScope().getScopeData().sdkProcessingMetadata.requestSession;\n if (requestSession) {\n // We mutate instead of doing `setSdkProcessingMetadata` because the http integration stores away a particular\n // isolationScope. If that isolation scope is forked, setting the processing metadata here will not mutate the\n // original isolation scope that the http integration stored away.\n const isHandledException = eventHint?.mechanism?.handled ?? true;\n // A request session can go from \"errored\" -> \"crashed\" but not \"crashed\" -> \"errored\".\n // Crashed (unhandled exception) is worse than errored (handled exception).\n if (isHandledException && requestSession.status !== 'crashed') {\n requestSession.status = 'errored';\n } else if (!isHandledException) {\n requestSession.status = 'crashed';\n }\n }\n}\n","import type { Client } from './client';\nimport { getCurrentScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ClientOptions } from './types-hoist/options';\nimport { consoleSandbox, debug } from './utils/debug-logger';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\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 */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): Client {\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n debug.enable();\n } else {\n // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n client.init();\n return client;\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n getCurrentScope().setClient(client);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { Envelope } from '../types-hoist/envelope';\nimport type { InternalBaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport { envelopeContainsItemType } from '../utils/envelope';\nimport { parseRetryAfterHeader } from '../utils/ratelimit';\nimport { safeUnref } from '../utils/timer';\n\nexport const MIN_DELAY = 100; // 100 ms\nexport const START_DELAY = 5_000; // 5 seconds\nconst MAX_DELAY = 3.6e6; // 1 hour\n\nexport interface OfflineStore {\n push(env: Envelope): Promise;\n unshift(env: Envelope): Promise;\n shift(): Promise;\n}\n\nexport type CreateOfflineStore = (options: OfflineTransportOptions) => OfflineStore;\n\nexport interface OfflineTransportOptions extends InternalBaseTransportOptions {\n /**\n * A function that creates the offline store instance.\n */\n createStore?: CreateOfflineStore;\n\n /**\n * Flush the offline store shortly after startup.\n *\n * Defaults: false\n */\n flushAtStartup?: boolean;\n\n /**\n * Called before an event is stored.\n *\n * Return false to drop the envelope rather than store it.\n *\n * @param envelope The envelope that failed to send.\n * @param error The error that occurred.\n * @param retryDelay The current retry delay in milliseconds.\n * @returns Whether the envelope should be stored.\n */\n shouldStore?: (envelope: Envelope, error: Error, retryDelay: number) => boolean | Promise;\n\n /**\n * Should an attempt be made to send the envelope to Sentry.\n *\n * If this function is supplied and returns false, `shouldStore` will be called to determine if the envelope should be stored.\n *\n * @param envelope The envelope that will be sent.\n * @returns Whether we should attempt to send the envelope\n */\n shouldSend?: (envelope: Envelope) => boolean | Promise;\n}\n\ntype Timer = number | { unref?: () => void };\n\n/**\n * Wraps a transport and stores and retries events when they fail to send.\n *\n * @param createTransport The transport to wrap.\n */\nexport function makeOfflineTransport(\n createTransport: (options: TO) => Transport,\n): (options: TO & OfflineTransportOptions) => Transport {\n function log(...args: unknown[]): void {\n DEBUG_BUILD && debug.log('[Offline]:', ...args);\n }\n\n return options => {\n const transport = createTransport(options);\n\n if (!options.createStore) {\n throw new Error('No `createStore` function was provided');\n }\n\n const store = options.createStore(options);\n\n let retryDelay = START_DELAY;\n let flushTimer: Timer | undefined;\n\n function shouldQueue(env: Envelope, error: Error, retryDelay: number): boolean | Promise {\n // We want to drop client reports because they can be generated when we retry sending events while offline.\n if (envelopeContainsItemType(env, ['client_report'])) {\n return false;\n }\n\n if (options.shouldStore) {\n return options.shouldStore(env, error, retryDelay);\n }\n\n return true;\n }\n\n function flushIn(delay: number): void {\n if (flushTimer) {\n clearTimeout(flushTimer as ReturnType);\n }\n\n // We need to unref the timer in node.js, otherwise the node process never exit.\n flushTimer = safeUnref(\n setTimeout(async () => {\n flushTimer = undefined;\n\n const found = await store.shift();\n if (found) {\n log('Attempting to send previously queued event');\n\n // We should to update the sent_at timestamp to the current time.\n found[0].sent_at = new Date().toISOString();\n\n void send(found, true).catch(e => {\n log('Failed to retry sending', e);\n });\n }\n }, delay),\n ) as Timer;\n }\n\n function flushWithBackOff(): void {\n if (flushTimer) {\n return;\n }\n\n flushIn(retryDelay);\n\n retryDelay = Math.min(retryDelay * 2, MAX_DELAY);\n }\n\n async function send(envelope: Envelope, isRetry: boolean = false): Promise {\n // We queue all replay envelopes to avoid multiple replay envelopes being sent at the same time. If one fails, we\n // need to retry them in order.\n if (!isRetry && envelopeContainsItemType(envelope, ['replay_event', 'replay_recording'])) {\n await store.push(envelope);\n flushIn(MIN_DELAY);\n return {};\n }\n\n try {\n if (options.shouldSend && (await options.shouldSend(envelope)) === false) {\n throw new Error('Envelope not sent because `shouldSend` callback returned false');\n }\n\n const result = await transport.send(envelope);\n\n let delay = MIN_DELAY;\n\n if (result) {\n // If there's a retry-after header, use that as the next delay.\n if (result.headers?.['retry-after']) {\n delay = parseRetryAfterHeader(result.headers['retry-after']);\n } else if (result.headers?.['x-sentry-rate-limits']) {\n delay = 60_000; // 60 seconds\n } // If we have a server error, return now so we don't flush the queue.\n else if ((result.statusCode || 0) >= 400) {\n return result;\n }\n }\n\n flushIn(delay);\n retryDelay = START_DELAY;\n return result;\n } catch (e) {\n if (await shouldQueue(envelope, e as Error, retryDelay)) {\n // If this envelope was a retry, we want to add it to the front of the queue so it's retried again first.\n if (isRetry) {\n await store.unshift(envelope);\n } else {\n await store.push(envelope);\n }\n flushWithBackOff();\n log('Error sending. Event queued.', e as Error);\n return {};\n } else {\n throw e;\n }\n }\n }\n\n if (options.flushAtStartup) {\n flushWithBackOff();\n }\n\n return {\n send,\n flush: timeout => {\n // If there's no timeout, we should attempt to flush the offline queue.\n if (timeout === undefined) {\n retryDelay = START_DELAY;\n flushIn(MIN_DELAY);\n }\n\n return transport.flush(timeout);\n },\n };\n };\n}\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\nimport type { Envelope, EnvelopeItemType, EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { BaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { dsnFromString } from '../utils/dsn';\nimport { createEnvelope, forEachEnvelopeItem } from '../utils/envelope';\n\ninterface MatchParam {\n /** The envelope to be sent */\n envelope: Envelope;\n /**\n * A function that returns an event from the envelope if one exists. You can optionally pass an array of envelope item\n * types to filter by - only envelopes matching the given types will be multiplexed.\n * Allowed values are: 'event', 'transaction', 'profile', 'replay_event'\n *\n * @param types Defaults to ['event']\n */\n getEvent(types?: EnvelopeItemType[]): Event | undefined;\n}\n\ntype RouteTo = { dsn: string; release: string };\ntype Matcher = (param: MatchParam) => (string | RouteTo)[];\n\n/**\n * Key used in event.extra to provide routing information for the multiplexed transport.\n * Should contain an array of `{ dsn: string, release?: string }` objects.\n */\nexport const MULTIPLEXED_TRANSPORT_EXTRA_KEY = 'MULTIPLEXED_TRANSPORT_EXTRA_KEY';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nexport function eventFromEnvelope(env: Envelope, types: EnvelopeItemType[]): Event | undefined {\n let event: Event | undefined;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport: (options: TO) => Transport,\n release: string,\n): (options: TO) => Transport {\n return options => {\n const transport = createTransport(options);\n\n return {\n ...transport,\n send: async (envelope: Envelope): Promise => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n };\n };\n}\n\n/** Overrides the DSN in the envelope header */\nfunction overrideDsn(envelope: Envelope, dsn: string): Envelope {\n return createEnvelope(\n dsn\n ? {\n ...envelope[0],\n dsn,\n }\n : envelope[0],\n envelope[1],\n );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n *\n * If no matcher is provided, the transport will look for routing information in\n * `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`, which should contain\n * an array of `{ dsn: string, release?: string }` objects.\n */\nexport function makeMultiplexedTransport(\n createTransport: (options: TO) => Transport,\n matcher?: Matcher,\n): (options: TO) => Transport {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports: Map = new Map();\n\n // Use provided matcher or default to simple multiplexed transport behavior\n const actualMatcher: Matcher =\n matcher ||\n (args => {\n const event = args.getEvent();\n if (\n event?.extra?.[MULTIPLEXED_TRANSPORT_EXTRA_KEY] &&\n Array.isArray(event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY])\n ) {\n return event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY];\n }\n return [];\n });\n\n function getTransport(dsn: string, release: string | undefined): [string, Transport] | undefined {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n let transport = otherTransports.get(key);\n\n if (!transport) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n transport = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n\n otherTransports.set(key, transport);\n }\n\n return [dsn, transport];\n }\n\n async function send(envelope: Envelope): Promise {\n function getEvent(types?: EnvelopeItemType[]): Event | undefined {\n const eventTypes: EnvelopeItemType[] = types?.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = actualMatcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t): t is [string, Transport] => !!t);\n\n // If we have no transports to send to, use the fallback transport\n // Don't override the DSN in the header for the fallback transport. '' is falsy\n const transportsWithFallback: [string, Transport][] = transports.length ? transports : [['', fallbackTransport]];\n\n const results = (await Promise.all(\n transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n )) as [TransportMakeRequestResponse, ...TransportMakeRequestResponse[]];\n\n return results[0];\n }\n\n async function flush(timeout: number | undefined): Promise {\n const allTransports = [...otherTransports.values(), fallbackTransport];\n const results = await Promise.all(allTransports.map(transport => transport.flush(timeout)));\n return results.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n","import { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../debug-logger';\n\n/**\n * Registry tracking which AI provider modules should skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n */\nconst SKIPPED_AI_PROVIDERS = new Set();\n\n/**\n * Mark AI provider modules to skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n *\n * @internal\n * @param modules - Array of npm module names to skip (e.g., '@anthropic-ai/sdk', 'openai')\n *\n * @example\n * ```typescript\n * // In LangChain integration\n * _INTERNAL_skipAiProviderWrapping(['@anthropic-ai/sdk', 'openai', '@google/generative-ai']);\n * ```\n */\nexport function _INTERNAL_skipAiProviderWrapping(modules: string[]): void {\n modules.forEach(module => {\n SKIPPED_AI_PROVIDERS.add(module);\n DEBUG_BUILD && debug.log(`AI provider \"${module}\" wrapping will be skipped`);\n });\n}\n\n/**\n * Check if an AI provider module should skip instrumentation wrapping.\n *\n * @internal\n * @param module - The npm module name (e.g., '@anthropic-ai/sdk', 'openai')\n * @returns true if wrapping should be skipped\n *\n * @example\n * ```typescript\n * // In AI provider instrumentation\n * if (_INTERNAL_shouldSkipAiProviderWrapping('@anthropic-ai/sdk')) {\n * return Reflect.construct(Original, args); // Don't instrument\n * }\n * ```\n */\nexport function _INTERNAL_shouldSkipAiProviderWrapping(module: string): boolean {\n return SKIPPED_AI_PROVIDERS.has(module);\n}\n\n/**\n * Clear all AI provider skip registrations.\n *\n * This is automatically called at the start of Sentry.init() to ensure a clean state\n * between different client initializations.\n *\n * @internal\n */\nexport function _INTERNAL_clearAiProviderSkips(): void {\n SKIPPED_AI_PROVIDERS.clear();\n DEBUG_BUILD && debug.log('Cleared AI provider skip registrations');\n}\n","export const FALSY_ENV_VALUES = new Set(['false', 'f', 'n', 'no', 'off', '0']);\nexport const TRUTHY_ENV_VALUES = new Set(['true', 't', 'y', 'yes', 'on', '1']);\n\nexport type StrictBoolCast = {\n strict: true;\n};\n\nexport type LooseBoolCast = {\n strict?: false;\n};\n\nexport type BoolCastOptions = StrictBoolCast | LooseBoolCast;\n\nexport function envToBool(value: unknown, options?: LooseBoolCast): boolean;\nexport function envToBool(value: unknown, options: StrictBoolCast): boolean | null;\nexport function envToBool(value: unknown, options?: BoolCastOptions): boolean | null;\n/**\n * A helper function which casts an ENV variable value to `true` or `false` using the constants defined above.\n * In strict mode, it may return `null` if the value doesn't match any of the predefined values.\n *\n * @param value The value of the env variable\n * @param options -- Only has `strict` key for now, which requires a strict match for `true` in TRUTHY_ENV_VALUES\n * @returns true/false if the lowercase value matches the predefined values above. If not, null in strict mode,\n * and Boolean(value) in loose mode.\n */\nexport function envToBool(value: unknown, options?: BoolCastOptions): boolean | null {\n const normalized = String(value).toLowerCase();\n\n if (FALSY_ENV_VALUES.has(normalized)) {\n return false;\n }\n\n if (TRUTHY_ENV_VALUES.has(normalized)) {\n return true;\n }\n\n return options?.strict ? null : Boolean(value);\n}\n","import {\n SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n} from '../semanticAttributes';\nimport type { SpanAttributes } from '../types-hoist/span';\n\ntype PartialURL = {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n search?: string;\n hash?: string;\n};\n\ninterface URLwithCanParse extends URL {\n canParse: (url: string, base?: string | URL | undefined) => boolean;\n}\n\n// A subset of the URL object that is valid for relative URLs\n// The URL object cannot handle relative URLs, so we need to handle them separately\ntype RelativeURL = {\n isRelative: true;\n pathname: URL['pathname'];\n search: URL['search'];\n hash: URL['hash'];\n};\n\ntype URLObject = RelativeURL | URL;\n\n// Curious about `thismessage:/`? See: https://www.rfc-editor.org/rfc/rfc2557.html\n// > When the methods above do not yield an absolute URI, a base URL\n// > of \"thismessage:/\" MUST be employed. This base URL has been\n// > defined for the sole purpose of resolving relative references\n// > within a multipart/related structure when no other base URI is\n// > specified.\n//\n// We need to provide a base URL to `parseStringToURLObject` because the fetch API gives us a\n// relative URL sometimes.\n//\n// This is the only case where we need to provide a base URL to `parseStringToURLObject`\n// because the relative URL is not valid on its own.\nconst DEFAULT_BASE_URL = 'thismessage:/';\n\n/**\n * Checks if the URL object is relative\n *\n * @param url - The URL object to check\n * @returns True if the URL object is relative, false otherwise\n */\nexport function isURLObjectRelative(url: URLObject): url is RelativeURL {\n return 'isRelative' in url;\n}\n\n/**\n * Parses string to a URL object\n *\n * @param url - The URL to parse\n * @returns The parsed URL object or undefined if the URL is invalid\n */\nexport function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined {\n const isRelative = url.indexOf('://') <= 0 && url.indexOf('//') !== 0;\n const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : undefined);\n try {\n // Use `canParse` to short-circuit the URL constructor if it's not a valid URL\n // This is faster than trying to construct the URL and catching the error\n // Node 20+, Chrome 120+, Firefox 115+, Safari 17+\n if ('canParse' in URL && !(URL as unknown as URLwithCanParse).canParse(url, base)) {\n return undefined;\n }\n\n const fullUrlObject = new URL(url, base);\n if (isRelative) {\n // Because we used a fake base URL, we need to return a relative URL object.\n // We cannot return anything about the origin, host, etc. because it will refer to the fake base URL.\n return {\n isRelative,\n pathname: fullUrlObject.pathname,\n search: fullUrlObject.search,\n hash: fullUrlObject.hash,\n };\n }\n return fullUrlObject;\n } catch {\n // empty body\n }\n\n return undefined;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlStringFromUrlObject(url: URLObject): string {\n if (isURLObjectRelative(url)) {\n return url.pathname;\n }\n\n const newUrl = new URL(url);\n newUrl.search = '';\n newUrl.hash = '';\n if (['80', '443'].includes(newUrl.port)) {\n newUrl.port = '';\n }\n if (newUrl.password) {\n newUrl.password = '%filtered%';\n }\n if (newUrl.username) {\n newUrl.username = '%filtered%';\n }\n\n return newUrl.toString();\n}\n\ntype PartialRequest = {\n method?: string;\n};\n\nfunction getHttpSpanNameFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n request?: PartialRequest,\n routeName?: string,\n): string {\n const method = request?.method?.toUpperCase() ?? 'GET';\n const route = routeName\n ? routeName\n : urlObject\n ? kind === 'client'\n ? getSanitizedUrlStringFromUrlObject(urlObject)\n : urlObject.pathname\n : '/';\n\n return `${method} ${route}`;\n}\n\n/**\n * Takes a parsed URL object and returns a set of attributes for the span\n * that represents the HTTP request for that url. This is used for both server\n * and client http spans.\n *\n * Follows https://opentelemetry.io/docs/specs/semconv/http/.\n *\n * @param urlObject - see {@link parseStringToURLObject}\n * @param kind - The type of HTTP operation (server or client)\n * @param spanOrigin - The origin of the span\n * @param request - The request object, see {@link PartialRequest}\n * @param routeName - The name of the route, must be low cardinality\n * @returns The span name and attributes for the HTTP operation\n */\nexport function getHttpSpanDetailsFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n spanOrigin: string,\n request?: PartialRequest,\n routeName?: string,\n): [name: string, attributes: SpanAttributes] {\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n };\n\n if (routeName) {\n // This is based on https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name\n attributes[kind === 'server' ? 'http.route' : 'url.template'] = routeName;\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n\n if (request?.method) {\n attributes[SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] = request.method.toUpperCase();\n }\n\n if (urlObject) {\n if (urlObject.search) {\n attributes['url.query'] = urlObject.search;\n }\n if (urlObject.hash) {\n attributes['url.fragment'] = urlObject.hash;\n }\n if (urlObject.pathname) {\n attributes['url.path'] = urlObject.pathname;\n if (urlObject.pathname === '/') {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n }\n\n if (!isURLObjectRelative(urlObject)) {\n attributes[SEMANTIC_ATTRIBUTE_URL_FULL] = urlObject.href;\n if (urlObject.port) {\n attributes['url.port'] = urlObject.port;\n }\n if (urlObject.protocol) {\n attributes['url.scheme'] = urlObject.protocol;\n }\n if (urlObject.hostname) {\n attributes[kind === 'server' ? 'server.address' : 'url.domain'] = urlObject.hostname;\n }\n }\n }\n\n return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes];\n}\n\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 */\nexport function parseUrl(url: string): PartialURL {\n if (!url) {\n return {};\n }\n\n const 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 const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\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 */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n return (urlPath.split(/[?#]/, 1) as [string, ...string[]])[0];\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n const { protocol, host, path } = url;\n\n const filteredHost =\n host\n // Always filter out authority\n ?.replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '') || '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\n/**\n * Strips the content from a data URL, returning a placeholder with the MIME type.\n *\n * Data URLs can be very long (e.g. base64 encoded scripts for Web Workers),\n * with little valuable information, often leading to envelopes getting dropped due\n * to size limit violations. Therefore, we strip data URLs and replace them with a\n * placeholder.\n *\n * @param url - The URL to process\n * @param includeDataPrefix - If true, includes the first 10 characters of the data stream\n * for debugging (e.g., to identify magic bytes like WASM's AGFzbQ).\n * Defaults to true.\n * @returns For data URLs, returns a short format like `data:text/javascript;base64,SGVsbG8gV2... [truncated]`.\n * For non-data URLs, returns the original URL unchanged.\n */\nexport function stripDataUrlContent(url: string, includeDataPrefix: boolean = true): string {\n if (url.startsWith('data:')) {\n // Match the MIME type (everything after 'data:' until the first ';' or ',')\n const match = url.match(/^data:([^;,]+)/);\n const mimeType = match ? match[1] : 'text/plain';\n const isBase64 = url.includes(';base64,');\n\n // Find where the actual data starts (after the comma)\n const dataStart = url.indexOf(',');\n let dataPrefix = '';\n if (includeDataPrefix && dataStart !== -1) {\n const data = url.slice(dataStart + 1);\n // Include first 10 chars of data to help identify content (e.g., magic bytes)\n dataPrefix = data.length > 10 ? `${data.slice(0, 10)}... [truncated]` : data;\n }\n\n return `data:${mimeType}${isBase64 ? ',base64' : ''}${dataPrefix ? `,${dataPrefix}` : ''}`;\n }\n return url;\n}\n","import type { Client } from '../client';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport { isURLObjectRelative, parseStringToURLObject } from './url';\n\n/**\n * Checks whether given url points to Sentry server\n *\n * @param url url to verify\n */\nexport function isSentryRequestUrl(url: string, client: Client | undefined): boolean {\n const dsn = client?.getDsn();\n const tunnel = client?.getOptions().tunnel;\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url: string, tunnel: string | undefined): boolean {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url: string, dsn: DsnComponents | undefined): boolean {\n // Requests to Sentry's ingest endpoint must have a `sentry_key` in the query string\n // This is equivalent to the public_key which is required in the DSN\n // see https://develop.sentry.dev/sdk/overview/#parsing-the-dsn\n // Therefore, a request to the same host and with a `sentry_key` in the query string\n // can be considered a request to the ingest endpoint.\n const urlParts = parseStringToURLObject(url);\n if (!urlParts || isURLObjectRelative(urlParts)) {\n return false;\n }\n\n return dsn ? urlParts.host.includes(dsn.host) && /(^|&|\\?)sentry_key=/.test(urlParts.search) : false;\n}\n\nfunction removeTrailingSlash(str: string): string {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n","import type { ParameterizedString } from '../types-hoist/parameterize';\n\n/**\n * Tagged template function which returns parameterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n *\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport function parameterize(strings: TemplateStringsArray, ...values: unknown[]): ParameterizedString {\n const formatted = new String(String.raw(strings, ...values)) as ParameterizedString;\n formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n formatted.__sentry_template_values__ = values;\n return formatted;\n}\n\n/**\n * Tagged template function which returns parameterized representation of the message.\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport const fmt = parameterize;\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\nimport { debug } from './debug-logger';\nimport { makeDsn } from './dsn';\nimport { parseEnvelope } from './envelope';\n\nexport interface HandleTunnelRequestOptions {\n /** Incoming request containing the Sentry envelope as its body */\n request: Request;\n /** Pre-parsed array of allowed DSN strings */\n allowedDsns: Array;\n}\n\n/**\n * Core Sentry tunnel handler - framework agnostic.\n *\n * Validates the envelope DSN against allowed DSNs, then forwards the\n * envelope to the Sentry ingest endpoint.\n *\n * @returns A `Response` — either the upstream Sentry response on success, or an error response.\n */\nexport async function handleTunnelRequest(options: HandleTunnelRequestOptions): Promise {\n const { request, allowedDsns } = options;\n\n if (allowedDsns.length === 0) {\n return new Response('Tunnel not configured', { status: 500 });\n }\n\n const body = new Uint8Array(await request.arrayBuffer());\n\n let envelopeHeader;\n try {\n [envelopeHeader] = parseEnvelope(body);\n } catch {\n return new Response('Invalid envelope', { status: 400 });\n }\n\n if (!envelopeHeader) {\n return new Response('Invalid envelope: missing header', { status: 400 });\n }\n\n const dsn = envelopeHeader.dsn;\n if (!dsn) {\n return new Response('Invalid envelope: missing DSN', { status: 400 });\n }\n\n // SECURITY: Validate that the envelope DSN matches one of the allowed DSNs\n // This prevents SSRF attacks where attackers send crafted envelopes\n // with malicious DSNs pointing to arbitrary hosts\n const isAllowed = allowedDsns.some(allowed => allowed === dsn);\n\n if (!isAllowed) {\n debug.warn(`Sentry tunnel: rejected request with unauthorized DSN (${dsn})`);\n return new Response('DSN not allowed', { status: 403 });\n }\n\n const dsnComponents = makeDsn(dsn);\n if (!dsnComponents) {\n debug.warn(`Could not extract DSN Components from: ${dsn}`);\n return new Response('Invalid DSN', { status: 403 });\n }\n\n const sentryIngestUrl = getEnvelopeEndpointWithUrlEncodedAuth(dsnComponents);\n\n try {\n return await fetch(sentryIngestUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n body,\n });\n } catch (error) {\n debug.error('Sentry tunnel: failed to forward envelope', error);\n return new Response('Failed to forward envelope to Sentry', { status: 500 });\n }\n}\n","import type { Session, SessionAggregates } from '../types-hoist/session';\nimport type { User } from '../types-hoist/user';\n\n// By default, we want to infer the IP address, unless this is explicitly set to `null`\n// We do this after all other processing is done\n// If `ip_address` is explicitly set to `null` or a value, we leave it as is\n\n/**\n * @internal\n * @deprecated -- set ip inferral via via SDK metadata options on client instead.\n */\nexport function addAutoIpAddressToUser(objWithMaybeUser: { user?: User | null }): void {\n if (objWithMaybeUser.user?.ip_address === undefined) {\n objWithMaybeUser.user = {\n ...objWithMaybeUser.user,\n ip_address: '{{auto}}',\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addAutoIpAddressToSession(session: Session | SessionAggregates): void {\n if ('aggregates' in session) {\n if (session.attrs?.['ip_address'] === undefined) {\n session.attrs = {\n ...session.attrs,\n ip_address: '{{auto}}',\n };\n }\n } else {\n if (session.ipAddress === undefined) {\n session.ipAddress = '{{auto}}';\n }\n }\n}\n","import type { CoreOptions } from '../types-hoist/options';\nimport { SDK_VERSION } from '../utils/version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: CoreOptions, name: string, names = [name], source = 'npm'): void {\n const sdk = ((options._metadata = options._metadata || {}).sdk = options._metadata.sdk || {});\n\n if (!sdk.name) {\n sdk.name = `sentry.javascript.${name}`;\n sdk.packages = names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n }));\n sdk.version = SDK_VERSION;\n }\n}\n","import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, hasExternalPropagationContext } from '../currentScopes';\nimport { isEnabled } from '../exports';\nimport type { Scope } from '../scope';\nimport { getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan } from '../tracing';\nimport type { Span } from '../types-hoist/span';\nimport type { SerializedTraceData } from '../types-hoist/tracing';\nimport { dynamicSamplingContextToSentryBaggageHeader } from './baggage';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils';\nimport { generateSentryTraceHeader, generateTraceparentHeader, TRACEPARENT_REGEXP } from './tracing';\n\n/**\n * Extracts trace propagation data from the current span or from the client's scope (via transaction or propagation\n * context) and serializes it to `sentry-trace` and `baggage` values. These values can be used to propagate\n * a trace via our tracing Http headers or Html `` tags.\n *\n * This function also applies some validation to the generated sentry-trace and baggage values to ensure that\n * only valid strings are returned.\n *\n * When an external propagation context is registered (e.g. via the OTLP integration) and there is no active\n * Sentry span, this function returns an empty object to defer outgoing request propagation to the external\n * propagator (e.g. an OpenTelemetry propagator).\n *\n * If (@param options.propagateTraceparent) is `true`, the function will also generate a `traceparent` value,\n * following the W3C traceparent header format.\n *\n * @returns an object with the tracing data values. The object keys are the name of the tracing key to be used as header\n * or meta tag name.\n */\nexport function getTraceData(\n options: { span?: Span; scope?: Scope; client?: Client; propagateTraceparent?: boolean } = {},\n): SerializedTraceData {\n const client = options.client || getClient();\n if (!isEnabled() || !client) {\n return {};\n }\n\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getTraceData) {\n return acs.getTraceData(options);\n }\n\n const scope = options.scope || getCurrentScope();\n const span = options.span || getActiveSpan();\n\n // When no active span and external propagation context is registered (e.g. OTLP integration),\n // return empty to let the OTel propagator handle outgoing request propagation.\n if (!span && hasExternalPropagationContext()) {\n return {};\n }\n\n const sentryTrace = span ? spanToTraceHeader(span) : scopeToTraceHeader(scope);\n const dsc = span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromScope(client, scope);\n const baggage = dynamicSamplingContextToSentryBaggageHeader(dsc);\n\n const isValidSentryTraceHeader = TRACEPARENT_REGEXP.test(sentryTrace);\n if (!isValidSentryTraceHeader) {\n debug.warn('Invalid sentry-trace data. Cannot generate trace data');\n return {};\n }\n\n const traceData: SerializedTraceData = {\n 'sentry-trace': sentryTrace,\n baggage,\n };\n\n if (options.propagateTraceparent) {\n traceData.traceparent = span ? spanToTraceparentHeader(span) : scopeToTraceparentHeader(scope);\n }\n\n return traceData;\n}\n\n/**\n * Get a sentry-trace header value for the given scope.\n */\nfunction scopeToTraceHeader(scope: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateSentryTraceHeader(traceId, propagationSpanId, sampled);\n}\n\nfunction scopeToTraceparentHeader(scope: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateTraceparentHeader(traceId, propagationSpanId, sampled);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { CoreOptions as Options } from '../types-hoist/options';\nimport { debug } from './debug-logger';\nimport type { LRUMap } from './lru';\nimport { stringMatchesSomePattern } from './string';\n\nconst NOT_PROPAGATED_MESSAGE =\n '[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:';\n\n/**\n * Check if a given URL should be propagated to or not.\n * If no url is defined, or no trace propagation targets are defined, this will always return `true`.\n * You can also optionally provide a decision map, to cache decisions and avoid repeated regex lookups.\n */\nexport function shouldPropagateTraceForUrl(\n url: string | undefined,\n tracePropagationTargets: Options['tracePropagationTargets'],\n decisionMap?: LRUMap,\n): boolean {\n if (typeof url !== 'string' || !tracePropagationTargets) {\n return true;\n }\n\n const cachedDecision = decisionMap?.get(url);\n if (cachedDecision !== undefined) {\n DEBUG_BUILD && !cachedDecision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return cachedDecision;\n }\n\n const decision = stringMatchesSomePattern(url, tracePropagationTargets);\n decisionMap?.set(url, decision);\n\n DEBUG_BUILD && !decision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return decision;\n}\n","import type { SerializedTraceData } from '../types-hoist/tracing';\nimport { getTraceData } from './traceData';\n\n/**\n * Returns a string of meta tags that represent the current trace data.\n *\n * You can use this to propagate a trace from your server-side rendered Html to the browser.\n * This function returns up to two meta tags, `sentry-trace` and `baggage`, depending on the\n * current trace data state.\n *\n * @example\n * Usage example:\n *\n * ```js\n * function renderHtml() {\n * return `\n * \n * ${getTraceMetaTags()}\n * \n * `;\n * }\n * ```\n *\n */\nexport function getTraceMetaTags(traceData?: SerializedTraceData): string {\n return Object.entries(traceData || getTraceData())\n .map(([key, value]) => ``)\n .join('\\n');\n}\n","type DebouncedCallback = {\n (): void | unknown;\n flush: () => void | unknown;\n cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = {\n /** The max. time in ms to wait for the callback to be invoked. */\n maxWait?: number;\n /** This can be overwritten to use a different setTimeout implementation, e.g. to avoid triggering change detection in Angular */\n setTimeoutImpl?: typeof setTimeout;\n};\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n let callbackReturnValue: unknown;\n\n let timerId: ReturnType | undefined;\n let maxTimerId: ReturnType | undefined;\n\n const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0;\n const setTimeoutImpl = options?.setTimeoutImpl || setTimeout;\n\n function invokeFunc(): unknown {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers(): void {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush(): unknown {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced(): unknown {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeoutImpl(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeoutImpl(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n","import type { PolymorphicRequest } from '../types-hoist/polymorphics';\nimport type { RequestEventData } from '../types-hoist/request';\nimport type { WebFetchHeaders, WebFetchRequest } from '../types-hoist/webfetchapi';\n\n/**\n * Transforms a `Headers` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into a simple key-value dict.\n * The header keys will be lower case: e.g. A \"Content-Type\" header will be stored as \"content-type\".\n */\nexport function winterCGHeadersToDict(winterCGHeaders: WebFetchHeaders): Record {\n const headers: Record = {};\n try {\n winterCGHeaders.forEach((value, key) => {\n if (typeof value === 'string') {\n // We check that value is a string even though it might be redundant to make sure prototype pollution is not possible.\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Convert common request headers to a simple dictionary.\n */\nexport function headersToDict(reqHeaders: Record): Record {\n const headers: Record = Object.create(null);\n\n try {\n Object.entries(reqHeaders).forEach(([key, value]) => {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Converts a `Request` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into the format that the `RequestData` integration understands.\n */\nexport function winterCGRequestToRequestData(req: WebFetchRequest): RequestEventData {\n const headers = winterCGHeadersToDict(req.headers);\n\n return {\n method: req.method,\n url: req.url,\n query_string: extractQueryParamsFromUrl(req.url),\n headers,\n // TODO: Can we extract body data from the request?\n };\n}\n\n/**\n * Convert a HTTP request object to RequestEventData to be passed as normalizedRequest.\n * Instead of allowing `PolymorphicRequest` to be passed,\n * we want to be more specific and generally require a http.IncomingMessage-like object.\n */\nexport function httpRequestToRequestData(request: {\n method?: string;\n url?: string;\n headers?: {\n [key: string]: string | string[] | undefined;\n };\n protocol?: string;\n socket?: {\n encrypted?: boolean;\n remoteAddress?: string;\n };\n}): RequestEventData {\n const headers = request.headers || {};\n\n // Check for x-forwarded-host first, then fall back to host header\n const forwardedHost = typeof headers['x-forwarded-host'] === 'string' ? headers['x-forwarded-host'] : undefined;\n const host = forwardedHost || (typeof headers.host === 'string' ? headers.host : undefined);\n\n // Check for x-forwarded-proto first, then fall back to existing protocol detection\n const forwardedProto = typeof headers['x-forwarded-proto'] === 'string' ? headers['x-forwarded-proto'] : undefined;\n const protocol = forwardedProto || request.protocol || (request.socket?.encrypted ? 'https' : 'http');\n\n const url = request.url || '';\n\n const absoluteUrl = getAbsoluteUrl({\n url,\n host,\n protocol,\n });\n\n // This is non-standard, but may be sometimes set\n // It may be overwritten later by our own body handling\n const data = (request as PolymorphicRequest).body || undefined;\n\n // This is non-standard, but may be set on e.g. Next.js or Express requests\n const cookies = (request as PolymorphicRequest).cookies;\n\n return {\n url: absoluteUrl,\n method: request.method,\n query_string: extractQueryParamsFromUrl(url),\n headers: headersToDict(headers),\n cookies,\n data,\n };\n}\n\nfunction getAbsoluteUrl({\n url,\n protocol,\n host,\n}: {\n url?: string;\n protocol: string;\n host?: string;\n}): string | undefined {\n if (url?.startsWith('http')) {\n return url;\n }\n\n if (url && host) {\n return `${protocol}://${host}${url}`;\n }\n\n return undefined;\n}\n\nconst SENSITIVE_HEADER_SNIPPETS = [\n 'auth',\n 'token',\n 'secret',\n 'session', // for the user_session cookie\n 'password',\n 'passwd',\n 'pwd',\n 'key',\n 'jwt',\n 'bearer',\n 'sso',\n 'saml',\n 'csrf',\n 'xsrf',\n 'credentials',\n // Always treat cookie headers as sensitive in case individual key-value cookie pairs cannot properly be extracted\n 'set-cookie',\n 'cookie',\n];\n\nconst PII_HEADER_SNIPPETS = ['x-forwarded-', '-user'];\n\n/**\n * Converts incoming HTTP request or response headers to OpenTelemetry span attributes following semantic conventions.\n * Header names are converted to the format: http..header.\n * where is the header name in lowercase with dashes converted to underscores.\n *\n * @param lifecycle - The lifecycle of the headers, either 'request' or 'response'\n *\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-response-header\n *\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-request-header-key\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-response-header-key\n */\nexport function httpHeadersToSpanAttributes(\n headers: Record,\n sendDefaultPii: boolean = false,\n lifecycle: 'request' | 'response' = 'request',\n): Record {\n const spanAttributes: Record = {};\n\n try {\n Object.entries(headers).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n const lowerCasedHeaderKey = key.toLowerCase();\n const isCookieHeader = lowerCasedHeaderKey === 'cookie' || lowerCasedHeaderKey === 'set-cookie';\n\n if (isCookieHeader && typeof value === 'string' && value !== '') {\n // Set-Cookie: single cookie with attributes (\"name=value; HttpOnly; Secure\")\n // Cookie: multiple cookies separated by \"; \" (\"cookie1=value1; cookie2=value2\")\n const isSetCookie = lowerCasedHeaderKey === 'set-cookie';\n const semicolonIndex = value.indexOf(';');\n const cookieString = isSetCookie && semicolonIndex !== -1 ? value.substring(0, semicolonIndex) : value;\n const cookies = isSetCookie ? [cookieString] : cookieString.split('; ');\n\n for (const cookie of cookies) {\n // Split only at the first '=' to preserve '=' characters in cookie values\n const equalSignIndex = cookie.indexOf('=');\n const cookieKey = equalSignIndex !== -1 ? cookie.substring(0, equalSignIndex) : cookie;\n const cookieValue = equalSignIndex !== -1 ? cookie.substring(equalSignIndex + 1) : '';\n\n const lowerCasedCookieKey = cookieKey.toLowerCase();\n\n addSpanAttribute(\n spanAttributes,\n lowerCasedHeaderKey,\n lowerCasedCookieKey,\n cookieValue,\n sendDefaultPii,\n lifecycle,\n );\n }\n } else {\n addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii, lifecycle);\n }\n });\n } catch {\n // Return empty object if there's an error\n }\n\n return spanAttributes;\n}\n\nfunction normalizeAttributeKey(key: string): string {\n return key.replace(/-/g, '_');\n}\n\nfunction addSpanAttribute(\n spanAttributes: Record,\n headerKey: string,\n cookieKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n lifecycle: 'request' | 'response',\n): void {\n const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii);\n if (headerValue == null) {\n return;\n }\n\n const normalizedKey = `http.${lifecycle}.header.${normalizeAttributeKey(headerKey)}${cookieKey ? `.${normalizeAttributeKey(cookieKey)}` : ''}`;\n spanAttributes[normalizedKey] = headerValue;\n}\n\nfunction handleHttpHeader(\n lowerCasedKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n): string | undefined {\n const isSensitive = sendPii\n ? SENSITIVE_HEADER_SNIPPETS.some(snippet => lowerCasedKey.includes(snippet))\n : [...PII_HEADER_SNIPPETS, ...SENSITIVE_HEADER_SNIPPETS].some(snippet => lowerCasedKey.includes(snippet));\n\n if (isSensitive) {\n return '[Filtered]';\n } else if (Array.isArray(value)) {\n return value.map(v => (v != null ? String(v) : v)).join(';');\n } else if (typeof value === 'string') {\n return value;\n }\n\n return undefined;\n}\n\n/** Extract the query params from an URL. */\nexport function extractQueryParamsFromUrl(url: string): string | undefined {\n // url is path and query string\n if (!url) {\n return;\n }\n\n try {\n // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n // hostname as the base. Since the point here is just to grab the query string, it doesn't matter what we use.\n const queryParams = new URL(url, 'http://s.io').search.slice(1);\n return queryParams.length ? queryParams : undefined;\n } catch {\n return undefined;\n }\n}\n","import { getClient, getIsolationScope } from './currentScopes';\nimport type { Breadcrumb, BreadcrumbHint } from './types-hoist/breadcrumb';\nimport { consoleSandbox } from './utils/debug-logger';\nimport { dateTimestampInSeconds } from './utils/time';\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\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 */\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const client = getClient();\n const isolationScope = getIsolationScope();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions();\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint))\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n","import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { getOriginalFunction } from '../utils/object';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n Function.prototype.toString = function (this: WrappedFunction, ...args: unknown[]): string {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getPossibleEventMessages } from '../utils/eventUtils';\nimport { getEventDescription } from '../utils/misc';\nimport { stringMatchesSomePattern } from '../utils/string';\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.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n /^Can't find variable: gmo$/, // Error from Google Search App https://issuetracker.google.com/issues/396043331\n /^undefined is not an object \\(evaluating 'a\\.[A-Z]'\\)$/, // Random error that happens but not actionable or noticeable to end-users.\n /can't redefine non-configurable property \"solana\"/, // Probably a browser extension or custom browser (Brave) throwing this error\n /vv\\(\\)\\.getRestrictions is not a function/, // Error thrown by GTM, seemingly not affecting end-users\n /Can't find variable: _AutofillCallbackHandler/, // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n /Object Not Found Matching Id:\\d+, MethodName:simulateEvent/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n /^Java exception was raised during method invocation$/, // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065)\n];\n\n/** Options for the EventFilters integration */\nexport interface EventFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'EventFilters';\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n */\nexport const eventFiltersIntegration = defineIntegration((options: Partial = {}) => {\n let mergedOptions: Partial | undefined;\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n },\n processEvent(event, _hint, client) {\n if (!mergedOptions) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n }\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n});\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n *\n * @deprecated this integration was renamed and will be removed in a future major version.\n * Use `eventFiltersIntegration` instead.\n */\nexport const inboundFiltersIntegration = defineIntegration(((options: Partial = {}) => {\n return {\n ...eventFiltersIntegration(options),\n name: 'InboundFilters',\n };\n}) satisfies IntegrationFn);\n\nfunction _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial): boolean {\n if (!event.type) {\n // Filter errors\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isUselessError(event)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n event,\n )}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n debug.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 DEBUG_BUILD &&\n debug.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 } else if (event.type === 'transaction') {\n // Filter transactions\n\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors?.length) {\n return false;\n }\n\n return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array): boolean {\n if (!ignoreTransactions?.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n if (!denyUrls?.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n if (!allowUrls?.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const 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: Event): string | null {\n try {\n // If there are linked exceptions or exception aggregates we only want to match against the top frame of the \"root\" (the main exception)\n // The root always comes last in linked exceptions\n const rootException = [...(event.exception?.values ?? [])]\n .reverse()\n .find(value => value.mechanism?.parent_id === undefined && value.stacktrace?.frames?.length);\n const frames = rootException?.stacktrace?.frames;\n return frames ? _getLastValidUrl(frames) : null;\n } catch {\n DEBUG_BUILD && debug.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nfunction _isUselessError(event: Event): boolean {\n // We only want to consider events for dropping that actually have recorded exception values.\n if (!event.exception?.values?.length) {\n return false;\n }\n\n return (\n // No top-level message\n !event.message &&\n // There are no exception values that have a stacktrace, a non-generic-Error type or value\n !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n );\n}\n","import type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isInstanceOf } from './is';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): void {\n if (!event.exception?.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException: Exception | undefined =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException as ExtendedError,\n key,\n event.exception.values,\n originalException,\n 0,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n prevExceptions: Exception[],\n exception: Exception,\n exceptionId: number,\n): Exception[] {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, error[key] as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key] as ExtendedError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (isExceptionGroup(error)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, childError as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError as ExtendedError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction isExceptionGroup(error: ExtendedError): error is ExtendedError & { errors: unknown[] } {\n return Array.isArray(error.errors);\n}\n\nfunction applyExceptionGroupFieldsForParentException(\n exception: Exception,\n exceptionId: number,\n error: ExtendedError,\n): void {\n exception.mechanism = {\n handled: true,\n type: 'auto.core.linked_errors',\n ...(isExceptionGroup(error) && { is_exception_group: true }),\n ...exception.mechanism,\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception: Exception,\n source: string,\n exceptionId: number,\n parentId: number | undefined,\n): void {\n exception.mechanism = {\n handled: true,\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n","import { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { applyAggregateErrorsToEvent } from '../utils/aggregate-errors';\nimport { exceptionFromError } from '../utils/eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(exceptionFromError, options.stackParser, key, limit, event, hint);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n","import type { Event } from './types-hoist/event';\nimport type { StackParser } from './types-hoist/stacktrace';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\n/**\n * Builds a map of filenames to module metadata from the global _sentryModuleMetadata object.\n * This is useful for forwarding metadata from web workers to the main thread.\n *\n * @param parser - Stack parser to use for extracting filenames from stack traces\n * @returns A map of filename to metadata object\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getFilenameToMetadataMap(parser: StackParser): Record {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filenameMap: Record = {};\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n const frames = parser(stack);\n\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n filenameMap[frame.filename] = metadata;\n break;\n }\n }\n }\n\n return filenameMap;\n}\n\nfunction ensureMetadataStacksAreParsed(parser: StackParser): void {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMetadataForUrl(parser: StackParser, filename: string): any | undefined {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nexport function addMetadataToStackFrames(parser: StackParser, event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (!frame.filename || frame.module_metadata) {\n return;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n });\n });\n}\n\n/**\n * Strips metadata from stack frames.\n */\nexport function stripMetadataFromStackFrames(event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n delete frame.module_metadata;\n });\n });\n}\n","import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport { forEachEnvelopeItem } from '../utils/envelope';\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\nexport const moduleMetadataIntegration = defineIntegration(() => {\n return {\n name: 'ModuleMetadata',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n };\n});\n","/**\n * This code was originally copied from the 'cookie` module at v0.5.0 and was simplified for our use case.\n * https://github.com/jshttp/cookie/blob/a0c84147aab6266bdb3996cf4062e93907c0b0fc/index.js\n * It had the following license:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Roman Shtylman \n * Copyright (c) 2015 Douglas Christopher Wilson \n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/**\n * Parses a cookie string\n */\nexport function parseCookie(str: string): Record {\n const obj: Record = {};\n let index = 0;\n\n while (index < str.length) {\n const eqIdx = str.indexOf('=', index);\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break;\n }\n\n let endIdx = str.indexOf(';', index);\n\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1;\n continue;\n }\n\n const key = str.slice(index, eqIdx).trim();\n\n // only assign once\n if (undefined === obj[key]) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1);\n }\n\n try {\n obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val;\n } catch {\n obj[key] = val;\n }\n }\n\n index = endIdx + 1;\n }\n\n return obj;\n}\n","// Vendored / modified from @sergiodxa/remix-utils\n\n// https://github.com/sergiodxa/remix-utils/blob/02af80e12829a53696bfa8f3c2363975cf59f55e/src/server/get-client-ip-address.ts\n// MIT License\n\n// Copyright (c) 2021 Sergio Xalambrí\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// The headers to check, in priority order\nexport const ipHeaderNames = [\n 'X-Client-IP',\n 'X-Forwarded-For',\n 'Fly-Client-IP',\n 'CF-Connecting-IP',\n 'Fastly-Client-Ip',\n 'True-Client-Ip',\n 'X-Real-IP',\n 'X-Cluster-Client-IP',\n 'X-Forwarded',\n 'Forwarded-For',\n 'Forwarded',\n 'X-Vercel-Forwarded-For',\n];\n\n/**\n * Get the IP address of the client sending a request.\n *\n * It receives a Request headers object and use it to get the\n * IP address from one of the following headers in order.\n *\n * If the IP address is valid, it will be returned. Otherwise, null will be\n * returned.\n *\n * If the header values contains more than one IP address, the first valid one\n * will be returned.\n */\nexport function getClientIPAddress(headers: { [key: string]: string | string[] | undefined }): string | null {\n // Build a map of lowercase header names to their values for case-insensitive lookup\n // This is needed because headers from different sources may have different casings\n const lowerCaseHeaders: { [key: string]: string | string[] | undefined } = {};\n\n for (const key of Object.keys(headers)) {\n lowerCaseHeaders[key.toLowerCase()] = headers[key];\n }\n\n // This will end up being Array because of the various possible values a header\n // can take\n const headerValues = ipHeaderNames.map((headerName: string) => {\n const rawValue = lowerCaseHeaders[headerName.toLowerCase()];\n const value = Array.isArray(rawValue) ? rawValue.join(';') : rawValue;\n\n if (headerName === 'Forwarded') {\n return parseForwardedHeader(value);\n }\n\n return value?.split(',').map((v: string) => v.trim());\n });\n\n // Flatten the array and filter out any falsy entries\n const flattenedHeaderValues = headerValues.reduce((acc: string[], val) => {\n if (!val) {\n return acc;\n }\n\n return acc.concat(val);\n }, []);\n\n // Find the first value which is a valid IP address, if any\n const ipAddress = flattenedHeaderValues.find(ip => ip !== null && isIP(ip));\n\n return ipAddress || null;\n}\n\nfunction parseForwardedHeader(value: string | null | undefined): string | null {\n if (!value) {\n return null;\n }\n\n for (const part of value.split(';')) {\n if (part.startsWith('for=')) {\n return part.slice(4);\n }\n }\n\n return null;\n}\n\n//\n/**\n * Custom method instead of importing this from `net` package, as this only exists in node\n * Accepts:\n * 127.0.0.1\n * 192.168.1.1\n * 192.168.1.255\n * 255.255.255.255\n * 10.1.1.1\n * 0.0.0.0\n * 2b01:cb19:8350:ed00:d0dd:fa5b:de31:8be5\n *\n * Rejects:\n * 1.1.1.01\n * 30.168.1.255.1\n * 127.1\n * 192.168.1.256\n * -1.2.3.4\n * 1.1.1.1.\n * 3...3\n * 192.168.1.099\n */\nfunction isIP(str: string): boolean {\n const regex =\n /(?:^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$)|(?:^(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|(?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/;\n return regex.test(str);\n}\n","import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { RequestEventData } from '../types-hoist/request';\nimport { parseCookie } from '../utils/cookie';\nimport { getClientIPAddress, ipHeaderNames } from '../vendor/getIpAddress';\n\ninterface RequestDataIncludeOptions {\n cookies?: boolean;\n data?: boolean;\n headers?: boolean;\n ip?: boolean;\n query_string?: boolean;\n url?: boolean;\n}\n\ntype RequestDataIntegrationOptions = {\n /**\n * Controls what data is pulled from the request and added to the event.\n */\n include?: RequestDataIncludeOptions;\n};\n\n// TODO(v11): Change defaults based on `sendDefaultPii`\nconst DEFAULT_INCLUDE: RequestDataIncludeOptions = {\n cookies: true,\n data: true,\n headers: true,\n query_string: true,\n url: true,\n};\n\nconst INTEGRATION_NAME = 'RequestData';\n\nconst _requestDataIntegration = ((options: RequestDataIntegrationOptions = {}) => {\n const include = {\n ...DEFAULT_INCLUDE,\n ...options.include,\n };\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event, _hint, client) {\n const { sdkProcessingMetadata = {} } = event;\n const { normalizedRequest, ipAddress } = sdkProcessingMetadata;\n\n const includeWithDefaultPiiApplied: RequestDataIncludeOptions = {\n ...include,\n ip: include.ip ?? client.getOptions().sendDefaultPii,\n };\n\n if (normalizedRequest) {\n addNormalizedRequestDataToEvent(event, normalizedRequest, { ipAddress }, includeWithDefaultPiiApplied);\n }\n\n return event;\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core`\n * so it can be used in cross-platform SDKs like `@sentry/nextjs`.\n */\nexport const requestDataIntegration = defineIntegration(_requestDataIntegration);\n\n/**\n * Add already normalized request data to an event.\n * This mutates the passed in event.\n */\nfunction addNormalizedRequestDataToEvent(\n event: Event,\n req: RequestEventData,\n // Data that should not go into `event.request` but is somehow related to requests\n additionalData: { ipAddress?: string },\n include: RequestDataIncludeOptions,\n): void {\n event.request = {\n ...event.request,\n ...extractNormalizedRequestData(req, include),\n };\n\n if (include.ip) {\n const ip = (req.headers && getClientIPAddress(req.headers)) || additionalData.ipAddress;\n if (ip) {\n event.user = {\n ...event.user,\n ip_address: ip,\n };\n }\n }\n}\n\nfunction extractNormalizedRequestData(\n normalizedRequest: RequestEventData,\n include: RequestDataIncludeOptions,\n): RequestEventData {\n const requestData: RequestEventData = {};\n const headers = { ...normalizedRequest.headers };\n\n if (include.headers) {\n requestData.headers = headers;\n\n // Remove the Cookie header in case cookie data should not be included in the event\n if (!include.cookies) {\n delete (headers as { cookie?: string }).cookie;\n }\n\n // Remove IP headers in case IP data should not be included in the event\n if (!include.ip) {\n ipHeaderNames.forEach(ipHeaderName => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (headers as Record)[ipHeaderName];\n });\n }\n }\n\n requestData.method = normalizedRequest.method;\n\n if (include.url) {\n requestData.url = normalizedRequest.url;\n }\n\n if (include.cookies) {\n const cookies = normalizedRequest.cookies || (headers?.cookie ? parseCookie(headers.cookie) : undefined);\n requestData.cookies = cookies || {};\n }\n\n if (include.query_string) {\n requestData.query_string = normalizedRequest.query_string;\n }\n\n if (include.data) {\n requestData.data = normalizedRequest.data;\n }\n\n return requestData;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger';\nimport { fill } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n const handlerData: HandlerDataConsole = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log?.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n","import type { SeverityLevel } from '../types-hoist/severity';\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 */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (\n level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n ) as SeverityLevel;\n}\n","import { getClient, withScope } from '../currentScopes';\nimport { captureException } from '../exports';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { CaptureContext } from '../scope';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { addExceptionMechanism } from '../utils/misc';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface CaptureConsoleOptions {\n levels?: string[];\n\n /**\n * By default, Sentry will mark captured console messages as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled?: boolean;\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n const handled = options.handled ?? true;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args: unknown[], level: string, handled: boolean): void {\n const severityLevel = severityLevelFromString(level);\n\n /*\n We create this error here already to attach a stack trace to captured messages,\n if users set `attachStackTrace` to `true` in Sentry.init.\n We do this here already because we want to minimize the number of Sentry SDK stack frames\n within the error. Technically, Client.captureMessage will also do it but this happens several\n stack frames deeper.\n */\n const syntheticException = new Error();\n\n const captureContext: CaptureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'auto.core.capture_console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n });\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent: Event | undefined;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && debug.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Deduplication filter.\n */\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\nexport function _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\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\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const 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\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const 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\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\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 as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameA = previousFrames[i]!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const 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\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\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 as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception?.values?.[0];\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Contexts } from '../types-hoist/context';\nimport type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isError, isPlainObject } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { truncate } from '../utils/string';\n\nconst INTEGRATION_NAME = 'ExtraErrorData';\n\ninterface ExtraErrorDataOptions {\n /**\n * The object depth up to which to capture data on error objects.\n */\n depth: number;\n\n /**\n * Whether to capture error causes. Defaults to true.\n *\n * More information: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n */\n captureErrorCause: boolean;\n}\n\n/**\n * Extract additional data for from original exceptions.\n */\nconst _extraErrorDataIntegration = ((options: Partial = {}) => {\n const { depth = 3, captureErrorCause = true } = options;\n return {\n name: INTEGRATION_NAME,\n processEvent(event, hint, client) {\n const { maxValueLength } = client.getOptions();\n return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration);\n\nfunction _enhanceEventWithErrorData(\n event: Event,\n hint: EventHint = {},\n depth: number,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Event {\n if (!hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const exceptionName = (hint.originalException as ExtendedError).name || hint.originalException.constructor.name;\n\n const errorData = _extractErrorData(hint.originalException as ExtendedError, captureErrorCause, maxValueLength);\n\n if (errorData) {\n const contexts: Contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, depth);\n\n if (isPlainObject(normalizedErrorData)) {\n // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n // potentially truncate the data we just already normalized, with a certain depth setting.\n addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n contexts[exceptionName] = normalizedErrorData;\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n}\n\n/**\n * Extract extra information from the Error object\n */\nfunction _extractErrorData(\n error: ExtendedError,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Record | null {\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = [\n 'name',\n 'message',\n 'stack',\n 'line',\n 'column',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'toJSON',\n ];\n\n const extraErrorInfo: Record = {};\n\n // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n for (const key of Object.keys(error)) {\n if (nativeKeys.indexOf(key) !== -1) {\n continue;\n }\n const value = error[key];\n extraErrorInfo[key] =\n isError(value) || typeof value === 'string'\n ? maxValueLength\n ? truncate(`${value}`, maxValueLength)\n : `${value}`\n : value;\n }\n\n // Error.cause is a standard property that is non enumerable, we therefore need to access it separately.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n if (captureErrorCause && error.cause !== undefined) {\n if (isError(error.cause)) {\n const errorName = error.cause.name || error.cause.constructor.name;\n extraErrorInfo.cause = { [errorName]: _extractErrorData(error.cause as ExtendedError, false, maxValueLength) };\n } else {\n extraErrorInfo.cause = error.cause;\n }\n }\n\n // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n if (typeof error.toJSON === 'function') {\n const serializedError = error.toJSON() as Record;\n\n for (const key of Object.keys(serializedError)) {\n const value = serializedError[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n }\n\n return extraErrorInfo;\n } catch (oO) {\n DEBUG_BUILD && debug.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return null;\n}\n","// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js\n//\n// Copyright Joyent, Inc.and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/** JSDoc */\nfunction normalizeArray(parts: string[], allowAboveRoot?: boolean): string[] {\n // if the path tries to go above the root, `up` ends up > 0\n let up = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\S+:\\\\|\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^/\\\\]+?|)(\\.[^./\\\\]*|))(?:[/\\\\]*)$/;\n/** JSDoc */\nfunction splitPath(filename: string): string[] {\n // Truncate files names greater than 1024 characters to avoid regex dos\n // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172\n const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename;\n const parts = splitPathRe.exec(truncated);\n return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nexport function resolve(...args: string[]): string {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : '/';\n\n // Skip empty entries\n if (!path) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(\n resolvedPath.split('/').filter(p => !!p),\n !resolvedAbsolute,\n ).join('/');\n\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr: string[]): string[] {\n let start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') {\n break;\n }\n }\n\n let end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') {\n break;\n }\n }\n\n if (start > end) {\n return [];\n }\n return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nexport function relative(from: string, to: string): string {\n /* eslint-disable no-param-reassign */\n from = resolve(from).slice(1);\n to = resolve(to).slice(1);\n /* eslint-enable no-param-reassign */\n\n const fromParts = trim(from.split('/'));\n const toParts = trim(to.split('/'));\n\n const length = Math.min(fromParts.length, toParts.length);\n let samePartsLength = length;\n for (let i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n let outputParts = [];\n for (let i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nexport function normalizePath(path: string): string {\n const isPathAbsolute = isAbsolute(path);\n const trailingSlash = path.slice(-1) === '/';\n\n // Normalize the path\n let normalizedPath = normalizeArray(\n path.split('/').filter(p => !!p),\n !isPathAbsolute,\n ).join('/');\n\n if (!normalizedPath && !isPathAbsolute) {\n normalizedPath = '.';\n }\n if (normalizedPath && trailingSlash) {\n normalizedPath += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nexport function isAbsolute(path: string): boolean {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\n const result = splitPath(path);\n const root = result[0] || '';\n let dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.slice(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\n/** JSDoc */\nexport function basename(path: string, ext?: string): string {\n let f = splitPath(path)[2] || '';\n if (ext && f.slice(ext.length * -1) === ext) {\n f = f.slice(0, f.length - ext.length);\n }\n return f;\n}\n","import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { Stacktrace } from '../types-hoist/stacktrace';\nimport { basename, relative } from '../utils/path';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype StackFrameIteratee = (frame: StackFrame) => StackFrame;\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\ninterface RewriteFramesOptions {\n /**\n * Root path (the beginning of the path) that will be stripped from the frames' filename.\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `root` will be stripped from the beginning stack frames' paths (if the path started with the value).\n * - On the server, the root value will only replace the beginning of stack frame filepaths, when the path is absolute. If no `root` value is provided and the path is absolute, the frame will be reduced to only the filename and the provided `prefix` option.\n *\n * Browser example:\n * - Original frame: `'http://example.com/my/path/static/asset.js'`\n * - `root: 'http://example.com/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n *\n * Server example:\n * - Original frame: `'/User/local/my/path/static/asset.js'`\n * - `root: '/User/local/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n */\n root?: string;\n\n /**\n * A custom prefix that stack frames will be prepended with.\n *\n * Default: `'app://'`\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `prefix` will prefix the resulting filename when the value you provided in `root` was applied. Effectively replacing whatever `root` matched in the beginning of the frame with `prefix`.\n * - On the server, the prefix is applied to all stackframes with absolute paths. On Windows, the drive identifier (e.g. \"C://\") is replaced with the prefix.\n */\n prefix?: string;\n\n /**\n * Defines an iterator that is used to iterate through all of the stack frames for modification before being sent to Sentry.\n * Setting this option will effectively disable both the `root` and the `prefix` options.\n */\n iteratee?: StackFrameIteratee;\n}\n\n/**\n * Rewrite event frames paths.\n */\nexport const rewriteFramesIntegration = defineIntegration((options: RewriteFramesOptions = {}) => {\n const root = options.root;\n const prefix = options.prefix || 'app:///';\n\n const isBrowser = 'window' in GLOBAL_OBJ && !!GLOBAL_OBJ.window;\n\n const iteratee: StackFrameIteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix });\n\n /** Process an exception event. */\n function _processExceptionsEvent(event: Event): Event {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n values: event.exception!.values!.map(value => ({\n ...value,\n ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n })),\n },\n };\n } catch {\n return event;\n }\n }\n\n /** Process a stack trace. */\n function _processStacktrace(stacktrace?: Stacktrace): Stacktrace {\n return {\n ...stacktrace,\n frames: stacktrace?.frames?.map(f => iteratee(f)),\n };\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent) {\n let processedEvent = originalEvent;\n\n if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n processedEvent = _processExceptionsEvent(processedEvent);\n }\n\n return processedEvent;\n },\n };\n});\n\n/**\n * Exported only for tests.\n */\nexport function generateIteratee({\n isBrowser,\n root,\n prefix,\n}: {\n isBrowser: boolean;\n root?: string;\n prefix: string;\n}): StackFrameIteratee {\n return (frame: StackFrame) => {\n if (!frame.filename) {\n return frame;\n }\n\n // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n const isWindowsFrame =\n /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n\n // Check if the frame filename begins with `/`\n const startsWithSlash = /^\\//.test(frame.filename);\n\n if (isBrowser) {\n if (root) {\n const oldFilename = frame.filename;\n if (oldFilename.indexOf(root) === 0) {\n frame.filename = oldFilename.replace(root, prefix);\n }\n }\n } else {\n if (isWindowsFrame || startsWithSlash) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = root ? relative(root, filename) : basename(filename);\n frame.filename = `${prefix}${base}`;\n }\n }\n\n return frame;\n };\n}\n","// Based on Kamil Ogórek's work on:\n// https://github.com/supabase-community/sentry-integration-js\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-lines */\nimport { addBreadcrumb } from '../breadcrumbs';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { captureException } from '../exports';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, SPAN_STATUS_OK, startSpan } from '../tracing';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isPlainObject } from '../utils/is';\nimport { addExceptionMechanism } from '../utils/misc';\n\nconst AUTH_OPERATIONS_TO_INSTRUMENT = [\n 'reauthenticate',\n 'signInAnonymously',\n 'signInWithOAuth',\n 'signInWithIdToken',\n 'signInWithOtp',\n 'signInWithPassword',\n 'signInWithSSO',\n 'signOut',\n 'signUp',\n 'verifyOtp',\n];\n\nconst AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT = [\n 'createUser',\n 'deleteUser',\n 'listUsers',\n 'getUserById',\n 'updateUserById',\n 'inviteUserByEmail',\n];\n\nexport const FILTER_MAPPINGS = {\n eq: 'eq',\n neq: 'neq',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n like: 'like',\n 'like(all)': 'likeAllOf',\n 'like(any)': 'likeAnyOf',\n ilike: 'ilike',\n 'ilike(all)': 'ilikeAllOf',\n 'ilike(any)': 'ilikeAnyOf',\n is: 'is',\n in: 'in',\n cs: 'contains',\n cd: 'containedBy',\n sr: 'rangeGt',\n nxl: 'rangeGte',\n sl: 'rangeLt',\n nxr: 'rangeLte',\n adj: 'rangeAdjacent',\n ov: 'overlaps',\n fts: '',\n plfts: 'plain',\n phfts: 'phrase',\n wfts: 'websearch',\n not: 'not',\n};\n\nexport const DB_OPERATIONS_TO_INSTRUMENT = ['select', 'insert', 'upsert', 'update', 'delete'];\n\ntype AuthOperationFn = (...args: unknown[]) => Promise;\ntype AuthOperationName = (typeof AUTH_OPERATIONS_TO_INSTRUMENT)[number];\ntype AuthAdminOperationName = (typeof AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT)[number];\ntype PostgRESTQueryOperationFn = (...args: unknown[]) => PostgRESTFilterBuilder;\n\nexport interface SupabaseClientInstance {\n auth: {\n admin: Record;\n } & Record;\n}\n\nexport interface PostgRESTQueryBuilder {\n [key: string]: PostgRESTQueryOperationFn;\n}\n\nexport interface PostgRESTFilterBuilder {\n method: string;\n headers: Record;\n url: URL;\n schema: string;\n body: any;\n}\n\nexport interface SupabaseResponse {\n status?: number;\n error?: {\n message: string;\n code?: string;\n details?: unknown;\n };\n}\n\nexport interface SupabaseError extends Error {\n code?: string;\n details?: unknown;\n}\n\nexport interface SupabaseBreadcrumb {\n type: string;\n category: string;\n message: string;\n data?: {\n query?: string[];\n body?: Record;\n };\n}\n\nexport interface SupabaseClientConstructor {\n prototype: {\n from: (table: string) => PostgRESTQueryBuilder;\n };\n}\n\nexport interface PostgRESTProtoThenable {\n then: (\n onfulfilled?: ((value: T) => T | PromiseLike) | null,\n onrejected?: ((reason: any) => T | PromiseLike) | null,\n ) => Promise;\n}\n\ntype SentryInstrumented = T & {\n __SENTRY_INSTRUMENTED__?: boolean;\n};\n\nfunction markAsInstrumented(fn: T): void {\n try {\n (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__ = true;\n } catch {\n // ignore errors here\n }\n}\n\nfunction isInstrumented(fn: T): boolean | undefined {\n try {\n return (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts the database operation type from the HTTP method and headers\n * @param method - The HTTP method of the request\n * @param headers - The request headers\n * @returns The database operation type ('select', 'insert', 'upsert', 'update', or 'delete')\n */\nexport function extractOperation(method: string, headers: Record = {}): string {\n switch (method) {\n case 'GET': {\n return 'select';\n }\n case 'POST': {\n if (headers['Prefer']?.includes('resolution=')) {\n return 'upsert';\n } else {\n return 'insert';\n }\n }\n case 'PATCH': {\n return 'update';\n }\n case 'DELETE': {\n return 'delete';\n }\n default: {\n return '';\n }\n }\n}\n\n/**\n * Translates Supabase filter parameters into readable method names for tracing\n * @param key - The filter key from the URL search parameters\n * @param query - The filter value from the URL search parameters\n * @returns A string representation of the filter as a method call\n */\nexport function translateFiltersIntoMethods(key: string, query: string): string {\n if (query === '' || query === '*') {\n return 'select(*)';\n }\n\n if (key === 'select') {\n return `select(${query})`;\n }\n\n if (key === 'or' || key.endsWith('.or')) {\n return `${key}${query}`;\n }\n\n const [filter, ...value] = query.split('.');\n\n let method;\n // Handle optional `configPart` of the filter\n if (filter?.startsWith('fts')) {\n method = 'textSearch';\n } else if (filter?.startsWith('plfts')) {\n method = 'textSearch[plain]';\n } else if (filter?.startsWith('phfts')) {\n method = 'textSearch[phrase]';\n } else if (filter?.startsWith('wfts')) {\n method = 'textSearch[websearch]';\n } else {\n method = (filter && FILTER_MAPPINGS[filter as keyof typeof FILTER_MAPPINGS]) || 'filter';\n }\n\n return `${method}(${key}, ${value.join('.')})`;\n}\n\nfunction instrumentAuthOperation(operation: AuthOperationFn, isAdmin = false): AuthOperationFn {\n return new Proxy(operation, {\n apply(target, thisArg, argumentsList) {\n return startSpan(\n {\n name: `auth ${isAdmin ? '(admin) ' : ''}${operation.name}`,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n 'db.system': 'postgresql',\n 'db.operation': `auth.${isAdmin ? 'admin.' : ''}${operation.name}`,\n },\n },\n span => {\n return Reflect.apply(target, thisArg, argumentsList)\n .then((res: unknown) => {\n if (res && typeof res === 'object' && 'error' in res && res.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n\n captureException(res.error, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n } else {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n span.end();\n return res;\n })\n .catch((err: unknown) => {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n span.end();\n\n captureException(err, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n\n throw err;\n })\n .then(...argumentsList);\n },\n );\n },\n });\n}\n\nfunction instrumentSupabaseAuthClient(supabaseClientInstance: SupabaseClientInstance): void {\n const auth = supabaseClientInstance.auth;\n\n if (!auth || isInstrumented(supabaseClientInstance.auth)) {\n return;\n }\n\n for (const operation of AUTH_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth[operation] === 'function') {\n supabaseClientInstance.auth[operation] = instrumentAuthOperation(authOperation);\n }\n }\n\n for (const operation of AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth.admin[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth.admin[operation] === 'function') {\n supabaseClientInstance.auth.admin[operation] = instrumentAuthOperation(authOperation, true);\n }\n }\n\n markAsInstrumented(supabaseClientInstance.auth);\n}\n\nfunction instrumentSupabaseClientConstructor(SupabaseClient: unknown): void {\n if (isInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from)) {\n return;\n }\n\n (SupabaseClient as SupabaseClientConstructor).prototype.from = new Proxy(\n (SupabaseClient as SupabaseClientConstructor).prototype.from,\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTQueryBuilder = (rv as PostgRESTQueryBuilder).constructor;\n\n instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder as unknown as new () => PostgRESTQueryBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from);\n}\n\nfunction instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder: PostgRESTFilterBuilder['constructor']): void {\n if (isInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then)) {\n return;\n }\n\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then = new Proxy(\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then,\n {\n apply(target, thisArg, argumentsList) {\n const operations = DB_OPERATIONS_TO_INSTRUMENT;\n const typedThis = thisArg as PostgRESTFilterBuilder;\n const operation = extractOperation(typedThis.method, typedThis.headers);\n\n if (!operations.includes(operation)) {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n if (!typedThis?.url?.pathname || typeof typedThis.url.pathname !== 'string') {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n const pathParts = typedThis.url.pathname.split('/');\n const table = pathParts.length > 0 ? pathParts[pathParts.length - 1] : '';\n\n const queryItems: string[] = [];\n for (const [key, value] of typedThis.url.searchParams.entries()) {\n // It's possible to have multiple entries for the same key, eg. `id=eq.7&id=eq.3`,\n // so we need to use array instead of object to collect them.\n queryItems.push(translateFiltersIntoMethods(key, value));\n }\n const body: Record = Object.create(null);\n if (isPlainObject(typedThis.body)) {\n for (const [key, value] of Object.entries(typedThis.body)) {\n body[key] = value;\n }\n }\n\n // Adding operation to the beginning of the description if it's not a `select` operation\n // For example, it can be an `insert` or `update` operation but the query can be `select(...)`\n // For `select` operations, we don't need repeat it in the description\n const description = `${operation === 'select' ? '' : `${operation}${body ? '(...) ' : ''}`}${queryItems.join(\n ' ',\n )} from(${table})`;\n\n const attributes: Record = {\n 'db.table': table,\n 'db.schema': typedThis.schema,\n 'db.url': typedThis.url.origin,\n 'db.sdk': typedThis.headers['X-Client-Info'],\n 'db.system': 'postgresql',\n 'db.operation': operation,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n };\n\n if (queryItems.length) {\n attributes['db.query'] = queryItems;\n }\n\n if (Object.keys(body).length) {\n attributes['db.body'] = body;\n }\n\n return startSpan(\n {\n name: description,\n attributes,\n },\n span => {\n return (Reflect.apply(target, thisArg, []) as Promise)\n .then(\n (res: SupabaseResponse) => {\n if (span) {\n if (res && typeof res === 'object' && 'status' in res) {\n setHttpStatus(span, res.status || 500);\n }\n span.end();\n }\n\n if (res?.error) {\n const err = new Error(res.error.message) as SupabaseError;\n if (res.error.code) {\n err.code = res.error.code;\n }\n if (res.error.details) {\n err.details = res.error.details;\n }\n\n const supabaseContext: Record = {};\n if (queryItems.length) {\n supabaseContext.query = queryItems;\n }\n if (Object.keys(body).length) {\n supabaseContext.body = body;\n }\n\n captureException(err, scope => {\n scope.addEventProcessor(e => {\n addExceptionMechanism(e, {\n handled: false,\n type: 'auto.db.supabase.postgres',\n });\n\n return e;\n });\n\n scope.setContext('supabase', supabaseContext);\n\n return scope;\n });\n }\n\n const breadcrumb: SupabaseBreadcrumb = {\n type: 'supabase',\n category: `db.${operation}`,\n message: description,\n };\n\n const data: Record = {};\n\n if (queryItems.length) {\n data.query = queryItems;\n }\n\n if (Object.keys(body).length) {\n data.body = body;\n }\n\n if (Object.keys(data).length) {\n breadcrumb.data = data;\n }\n\n addBreadcrumb(breadcrumb);\n\n return res;\n },\n (err: Error) => {\n // TODO: shouldn't we capture this error?\n if (span) {\n setHttpStatus(span, 500);\n span.end();\n }\n throw err;\n },\n )\n .then(...argumentsList);\n },\n );\n },\n },\n );\n\n markAsInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then);\n}\n\nfunction instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder: new () => PostgRESTQueryBuilder): void {\n // We need to wrap _all_ operations despite them sharing the same `PostgRESTFilterBuilder`\n // constructor, as we don't know which method will be called first, and we don't want to miss any calls.\n for (const operation of DB_OPERATIONS_TO_INSTRUMENT) {\n if (isInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation])) {\n continue;\n }\n\n type PostgRESTOperation = keyof Pick;\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation] = new Proxy(\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation],\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTFilterBuilder = (rv as PostgRESTFilterBuilder).constructor;\n\n DEBUG_BUILD && debug.log(`Instrumenting ${operation} operation's PostgRESTFilterBuilder`);\n\n instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation]);\n }\n}\n\nexport const instrumentSupabaseClient = (supabaseClient: unknown): void => {\n if (!supabaseClient) {\n DEBUG_BUILD && debug.warn('Supabase integration was not installed because no Supabase client was provided.');\n return;\n }\n const SupabaseClientConstructor =\n supabaseClient.constructor === Function ? supabaseClient : supabaseClient.constructor;\n\n instrumentSupabaseClientConstructor(SupabaseClientConstructor);\n instrumentSupabaseAuthClient(supabaseClient as SupabaseClientInstance);\n};\n\nconst INTEGRATION_NAME = 'Supabase';\n\nconst _supabaseIntegration = ((supabaseClient: unknown) => {\n return {\n setupOnce() {\n instrumentSupabaseClient(supabaseClient);\n },\n name: INTEGRATION_NAME,\n };\n}) satisfies IntegrationFn;\n\nexport const supabaseIntegration = defineIntegration((options: { supabaseClient: any }) => {\n return _supabaseIntegration(options.supabaseClient);\n}) satisfies IntegrationFn;\n","// Portable instrumentation for https://github.com/porsager/postgres\n// This can be used in any environment (Node.js, Cloudflare Workers, etc.)\n// without depending on OpenTelemetry module hooking.\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport { SPAN_STATUS_ERROR, startSpanManual } from '../tracing';\nimport type { Span } from '../types-hoist/span';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan } from '../utils/spanUtils';\n\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\ntype PostgresConnectionContext = {\n ATTR_DB_NAMESPACE?: string;\n ATTR_SERVER_ADDRESS?: string;\n ATTR_SERVER_PORT?: string;\n};\n\ninterface PostgresJsSqlInstrumentationOptions {\n /**\n * Whether to require a parent span for the instrumentation.\n * If set to true, the instrumentation will only create spans if there is a parent span\n * available in the current scope.\n * @default true\n */\n requireParentSpan?: boolean;\n /**\n * Hook to modify the span before it is started.\n * This can be used to set additional attributes or modify the span in any way.\n */\n requestHook?: (span: Span, sanitizedSqlQuery: string, postgresConnectionContext?: PostgresConnectionContext) => void;\n}\n\nconst CONNECTION_CONTEXT_SYMBOL = Symbol('sentryPostgresConnectionContext');\n\n// Use the same Symbol.for() markers as the Node.js OTel instrumentation\n// so that both approaches recognize each other and prevent double-wrapping.\nconst INSTRUMENTED_MARKER = Symbol.for('sentry.instrumented.postgresjs');\n// Marker to track if a query was created from an instrumented sql instance.\n// This prevents double-spanning when both the wrapper and the Node.js Query.prototype\n// fallback patch are active simultaneously.\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\n/**\n * Instruments a postgres.js `sql` instance with Sentry tracing.\n *\n * This is a portable instrumentation function that works in any environment\n * (Node.js, Cloudflare Workers, etc.) without depending on OpenTelemetry.\n *\n * @example\n * ```javascript\n * import postgres from 'postgres';\n * import * as Sentry from '@sentry/cloudflare'; // or '@sentry/deno'\n *\n * const sql = Sentry.instrumentPostgresJsSql(\n * postgres({ host: 'localhost', database: 'mydb' })\n * );\n *\n * // All queries now create Sentry spans\n * await sql`SELECT * FROM users WHERE id = ${userId}`;\n * ```\n */\nexport function instrumentPostgresJsSql(sql: T, options?: PostgresJsSqlInstrumentationOptions): T {\n if (!sql || typeof sql !== 'function') {\n DEBUG_BUILD && debug.warn('instrumentPostgresJsSql: provided value is not a valid postgres.js sql instance');\n return sql;\n }\n\n return _instrumentSqlInstance(sql, { requireParentSpan: true, ...options }) as T;\n}\n\n/**\n * Instruments a sql instance by wrapping its query execution methods.\n */\nfunction _instrumentSqlInstance(\n sql: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n parentConnectionContext?: PostgresConnectionContext,\n): unknown {\n // Check if already instrumented to prevent double-wrapping\n // Using Symbol.for() ensures the marker survives proxying\n if ((sql as Record)[INSTRUMENTED_MARKER]) {\n return sql;\n }\n\n // Wrap the sql function to intercept query creation\n const proxiedSql: unknown = new Proxy(sql as (...args: unknown[]) => unknown, {\n apply(target, thisArg, argumentsList: unknown[]) {\n const query = Reflect.apply(target, thisArg, argumentsList);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query as { handle: unknown; strings?: string[] }, proxiedSql, options);\n }\n\n return query;\n },\n get(target, prop) {\n const original = (target as unknown as Record)[prop];\n\n if (typeof prop !== 'string' || typeof original !== 'function') {\n return original;\n }\n\n // Wrap methods that return PendingQuery objects (unsafe, file)\n if (prop === 'unsafe' || prop === 'file') {\n return _wrapQueryMethod(original as (...args: unknown[]) => unknown, target, proxiedSql, options);\n }\n\n // Wrap begin and reserve (not savepoint to avoid duplicate spans)\n if (prop === 'begin' || prop === 'reserve') {\n return _wrapCallbackMethod(original as (...args: unknown[]) => unknown, target, proxiedSql, options);\n }\n\n return original;\n },\n });\n\n // Use provided parent context if available, otherwise extract from sql.options\n if (parentConnectionContext) {\n (proxiedSql as Record)[CONNECTION_CONTEXT_SYMBOL] = parentConnectionContext;\n } else {\n _attachConnectionContext(sql, proxiedSql as Record);\n }\n\n // Mark both the original and proxy as instrumented to prevent double-wrapping\n (sql as Record)[INSTRUMENTED_MARKER] = true;\n (proxiedSql as Record)[INSTRUMENTED_MARKER] = true;\n\n return proxiedSql;\n}\n\n/**\n * Wraps query-returning methods (unsafe, file) to ensure their queries are instrumented.\n */\nfunction _wrapQueryMethod(\n original: (...args: unknown[]) => unknown,\n target: unknown,\n proxiedSql: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): (...args: unknown[]) => unknown {\n return function (this: unknown, ...args: unknown[]): unknown {\n const query = Reflect.apply(original, target, args);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query as { handle: unknown; strings?: string[] }, proxiedSql, options);\n }\n\n return query;\n };\n}\n\n/**\n * Wraps callback-based methods (begin, reserve) to recursively instrument Sql instances.\n * Note: These methods can also be used as tagged templates, which we pass through unchanged.\n *\n * Savepoint is not wrapped to avoid complex nested transaction instrumentation issues.\n * Queries within savepoint callbacks are still instrumented through the parent transaction's Sql instance.\n */\nfunction _wrapCallbackMethod(\n original: (...args: unknown[]) => unknown,\n target: unknown,\n parentSqlInstance: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): (...args: unknown[]) => unknown {\n return function (this: unknown, ...args: unknown[]): unknown {\n // Extract parent context to propagate to child instances\n const parentContext = (parentSqlInstance as Record)[CONNECTION_CONTEXT_SYMBOL] as\n | PostgresConnectionContext\n | undefined;\n\n // Check if this is a callback-based call by verifying the last argument is a function\n const isCallbackBased = typeof args[args.length - 1] === 'function';\n\n if (!isCallbackBased) {\n // Not a callback-based call - could be tagged template or promise-based\n const result = Reflect.apply(original, target, args);\n // If result is a Promise (e.g., reserve() without callback), instrument the resolved Sql instance\n if (result && typeof (result as Promise).then === 'function') {\n return (result as Promise).then((sqlInstance: unknown) => {\n return _instrumentSqlInstance(sqlInstance, options, parentContext);\n });\n }\n return result;\n }\n\n // Callback-based call: wrap the callback to instrument the Sql instance\n const callback = (args.length === 1 ? args[0] : args[1]) as (sql: unknown) => unknown;\n const wrappedCallback = function (sqlInstance: unknown): unknown {\n const instrumentedSql = _instrumentSqlInstance(sqlInstance, options, parentContext);\n return callback(instrumentedSql);\n };\n\n const newArgs = args.length === 1 ? [wrappedCallback] : [args[0], wrappedCallback];\n return Reflect.apply(original, target, newArgs);\n };\n}\n\n/**\n * Wraps a single query's handle method to create spans.\n */\nfunction _wrapSingleQueryHandle(\n query: { handle: unknown; strings?: string[]; __sentryWrapped?: boolean },\n sqlInstance: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): void {\n // Prevent double wrapping - check if the handle itself is already wrapped\n if ((query.handle as { __sentryWrapped?: boolean })?.__sentryWrapped) {\n return;\n }\n\n // Mark this query as coming from an instrumented sql instance.\n // This prevents the Node.js Query.prototype fallback patch from double-spanning.\n (query as Record)[QUERY_FROM_INSTRUMENTED_SQL] = true;\n\n const originalHandle = query.handle as (...args: unknown[]) => Promise;\n\n // IMPORTANT: We must replace the handle function directly, not use a Proxy,\n // because Query.then() internally calls this.handle(), which would bypass a Proxy wrapper.\n const wrappedHandle = async function (this: unknown, ...args: unknown[]): Promise {\n if (!_shouldCreateSpans(options)) {\n return originalHandle.apply(this, args);\n }\n\n const fullQuery = _reconstructQuery(query.strings);\n const sanitizedSqlQuery = _sanitizeSqlQuery(fullQuery);\n\n return startSpanManual(\n {\n name: sanitizedSqlQuery || 'postgresjs.query',\n op: 'db',\n },\n (span: Span) => {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.postgresjs');\n\n span.setAttributes({\n 'db.system.name': 'postgres',\n 'db.query.text': sanitizedSqlQuery,\n });\n\n const connectionContext = sqlInstance\n ? ((sqlInstance as Record)[CONNECTION_CONTEXT_SYMBOL] as\n | PostgresConnectionContext\n | undefined)\n : undefined;\n\n _setConnectionAttributes(span, connectionContext);\n\n if (options.requestHook) {\n try {\n options.requestHook(span, sanitizedSqlQuery, connectionContext);\n } catch (e) {\n span.setAttribute('sentry.hook.error', 'requestHook failed');\n DEBUG_BUILD && debug.error('Error in requestHook for PostgresJs instrumentation:', e);\n }\n }\n\n const queryWithCallbacks = this as {\n resolve: unknown;\n reject: unknown;\n };\n\n queryWithCallbacks.resolve = new Proxy(queryWithCallbacks.resolve as (...args: unknown[]) => unknown, {\n apply: (resolveTarget, resolveThisArg, resolveArgs: [{ command?: string }]) => {\n try {\n _setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n }\n\n return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n },\n });\n\n queryWithCallbacks.reject = new Proxy(queryWithCallbacks.reject as (...args: unknown[]) => unknown, {\n apply: (rejectTarget, rejectThisArg, rejectArgs: { message?: string; code?: string; name?: string }[]) => {\n try {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: rejectArgs?.[0]?.message || 'unknown_error',\n });\n\n span.setAttribute('db.response.status_code', rejectArgs?.[0]?.code || 'unknown');\n span.setAttribute('error.type', rejectArgs?.[0]?.name || 'unknown');\n\n _setOperationName(span, sanitizedSqlQuery);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n }\n return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n },\n });\n\n // Handle synchronous errors that might occur before promise is created\n try {\n return originalHandle.apply(this, args);\n } catch (e) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: e instanceof Error ? e.message : 'unknown_error',\n });\n span.end();\n throw e;\n }\n },\n );\n };\n\n (wrappedHandle as { __sentryWrapped?: boolean }).__sentryWrapped = true;\n query.handle = wrappedHandle;\n}\n\n/**\n * Determines whether a span should be created based on the current context.\n * If `requireParentSpan` is set to true in the options, a span will\n * only be created if there is a parent span available.\n */\nfunction _shouldCreateSpans(options: PostgresJsSqlInstrumentationOptions): boolean {\n const hasParentSpan = getActiveSpan() !== undefined;\n return hasParentSpan || !options.requireParentSpan;\n}\n\n/**\n * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n *\n * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n * strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n * returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n *\n * @internal Exported for testing only\n */\nexport function _reconstructQuery(strings: string[] | undefined): string | undefined {\n if (!strings?.length) {\n return undefined;\n }\n if (strings.length === 1) {\n return strings[0] || undefined;\n }\n // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n}\n\n/**\n * Sanitize SQL query as per the OTEL semantic conventions\n * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n *\n * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n *\n * @internal Exported for testing only\n */\nexport function _sanitizeSqlQuery(sqlQuery: string | undefined): string {\n if (!sqlQuery) {\n return 'Unknown SQL Query';\n }\n\n return (\n sqlQuery\n // Remove comments first (they may contain newlines and extra spaces)\n .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n .replace(/;\\s*$/, '') // Remove trailing semicolons\n // Collapse whitespace to a single space (after removing comments)\n .replace(/\\s+/g, ' ')\n .trim() // Remove extra spaces and trim\n // Sanitize hex/binary literals before string literals\n .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n // Sanitize string literals (handles escaped quotes)\n .replace(/'(?:[^']|'')*'/g, '?')\n // Sanitize hex numbers\n .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n // Sanitize boolean literals\n .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n .replace(/(?): void {\n const sqlInstance = sql as { options?: { host?: string[]; port?: number[]; database?: string } };\n if (!sqlInstance.options || typeof sqlInstance.options !== 'object') {\n return;\n }\n\n const opts = sqlInstance.options;\n // postgres.js stores parsed options with host and port as arrays\n // The library defaults to 'localhost' and 5432 if not specified, but we're defensive here\n const host = opts.host?.[0] || 'localhost';\n const port = opts.port?.[0] || 5432;\n\n const connectionContext: PostgresConnectionContext = {\n ATTR_DB_NAMESPACE: typeof opts.database === 'string' && opts.database !== '' ? opts.database : undefined,\n ATTR_SERVER_ADDRESS: host,\n ATTR_SERVER_PORT: String(port),\n };\n\n proxiedSql[CONNECTION_CONTEXT_SYMBOL] = connectionContext;\n}\n","import { defineIntegration } from '../integration';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { isError } from '../utils/is';\nimport { truncate } from '../utils/string';\n\ninterface ZodErrorsOptions {\n key?: string;\n /**\n * Limits the number of Zod errors inlined in each Sentry event.\n *\n * @default 10\n */\n limit?: number;\n /**\n * Save full list of Zod issues as an attachment in Sentry\n *\n * @default false\n */\n saveZodIssuesAsAttachment?: boolean;\n}\n\nconst DEFAULT_LIMIT = 10;\nconst INTEGRATION_NAME = 'ZodErrors';\n\n/**\n * Simplified ZodIssue type definition\n */\ninterface ZodIssue {\n path: (string | number)[];\n message?: string;\n expected?: unknown;\n received?: unknown;\n unionErrors?: unknown[];\n keys?: unknown[];\n invalid_literal?: unknown;\n}\n\ninterface ZodError extends Error {\n issues: ZodIssue[];\n}\n\nfunction originalExceptionIsZodError(originalException: unknown): originalException is ZodError {\n return (\n isError(originalException) &&\n originalException.name === 'ZodError' &&\n Array.isArray((originalException as ZodError).issues)\n );\n}\n\ntype SingleLevelZodIssue = {\n [P in keyof T]: T[P] extends string | number | undefined\n ? T[P]\n : T[P] extends unknown[]\n ? string | undefined\n : unknown;\n};\n\n/**\n * Formats child objects or arrays to a string\n * that is preserved when sent to Sentry.\n *\n * Without this, we end up with something like this in Sentry:\n *\n * [\n * [Object],\n * [Object],\n * [Object],\n * [Object]\n * ]\n */\nexport function flattenIssue(issue: ZodIssue): SingleLevelZodIssue {\n return {\n ...issue,\n path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined,\n keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined,\n unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined,\n };\n}\n\n/**\n * Takes ZodError issue path array and returns a flattened version as a string.\n * This makes it easier to display paths within a Sentry error message.\n *\n * Array indexes are normalized to reduce duplicate entries\n *\n * @param path ZodError issue path\n * @returns flattened path\n *\n * @example\n * flattenIssuePath([0, 'foo', 1, 'bar']) // -> '.foo..bar'\n */\nexport function flattenIssuePath(path: Array): string {\n return path\n .map(p => {\n if (typeof p === 'number') {\n return '';\n } else {\n return p;\n }\n })\n .join('.');\n}\n\n/**\n * Zod error message is a stringified version of ZodError.issues\n * This doesn't display well in the Sentry UI. Replace it with something shorter.\n */\nexport function formatIssueMessage(zodError: ZodError): string {\n const errorKeyMap = new Set();\n for (const iss of zodError.issues) {\n const issuePath = flattenIssuePath(iss.path);\n if (issuePath.length > 0) {\n errorKeyMap.add(issuePath);\n }\n }\n\n const errorKeys = Array.from(errorKeyMap);\n if (errorKeys.length === 0) {\n // If there are no keys, then we're likely validating the root\n // variable rather than a key within an object. This attempts\n // to extract what type it was that failed to validate.\n // For example, z.string().parse(123) would return \"string\" here.\n let rootExpectedType = 'variable';\n if (zodError.issues.length > 0) {\n const iss = zodError.issues[0];\n if (iss !== undefined && 'expected' in iss && typeof iss.expected === 'string') {\n rootExpectedType = iss.expected;\n }\n }\n return `Failed to validate ${rootExpectedType}`;\n }\n return `Failed to validate keys: ${truncate(errorKeys.join(', '), 100)}`;\n}\n\n/**\n * Applies ZodError issues to an event extra and replaces the error message\n */\nexport function applyZodErrorsToEvent(\n limit: number,\n saveZodIssuesAsAttachment: boolean = false,\n event: Event,\n hint: EventHint,\n): Event {\n if (\n !event.exception?.values ||\n !hint.originalException ||\n !originalExceptionIsZodError(hint.originalException) ||\n hint.originalException.issues.length === 0\n ) {\n return event;\n }\n\n try {\n const issuesToFlatten = saveZodIssuesAsAttachment\n ? hint.originalException.issues\n : hint.originalException.issues.slice(0, limit);\n const flattenedIssues = issuesToFlatten.map(flattenIssue);\n\n if (saveZodIssuesAsAttachment) {\n // Sometimes having the full error details can be helpful.\n // Attachments have much higher limits, so we can include the full list of issues.\n if (!Array.isArray(hint.attachments)) {\n hint.attachments = [];\n }\n hint.attachments.push({\n filename: 'zod_issues.json',\n data: JSON.stringify({\n issues: flattenedIssues,\n }),\n });\n }\n\n return {\n ...event,\n exception: {\n ...event.exception,\n values: [\n {\n ...event.exception.values[0],\n value: formatIssueMessage(hint.originalException),\n },\n ...event.exception.values.slice(1),\n ],\n },\n extra: {\n ...event.extra,\n 'zoderror.issues': flattenedIssues.slice(0, limit),\n },\n };\n } catch (e) {\n // Hopefully we never throw errors here, but record it\n // with the event just in case.\n return {\n ...event,\n extra: {\n ...event.extra,\n 'zoderrors sentry integration parse error': {\n message: 'an exception was thrown while processing ZodError within applyZodErrorsToEvent()',\n error: e instanceof Error ? `${e.name}: ${e.message}\\n${e.stack}` : 'unknown',\n },\n },\n };\n }\n}\n\nconst _zodErrorsIntegration = ((options: ZodErrorsOptions = {}) => {\n const limit = options.limit ?? DEFAULT_LIMIT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent, hint): Event {\n const processedEvent = applyZodErrorsToEvent(limit, options.saveZodIssuesAsAttachment, originalEvent, hint);\n return processedEvent;\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Sentry integration to process Zod errors, making them easier to work with in Sentry.\n */\nexport const zodErrorsIntegration = defineIntegration(_zodErrorsIntegration);\n","import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { forEachEnvelopeItem } from '../utils/envelope';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\ninterface Options {\n /**\n * Keys that have been provided in the Sentry bundler plugin via the the `applicationKey` option, identifying your bundles.\n *\n * - Webpack plugin: https://www.npmjs.com/package/@sentry/webpack-plugin#applicationkey\n * - Vite plugin: https://www.npmjs.com/package/@sentry/vite-plugin#applicationkey\n * - Esbuild plugin: https://www.npmjs.com/package/@sentry/esbuild-plugin#applicationkey\n * - Rollup plugin: https://www.npmjs.com/package/@sentry/rollup-plugin#applicationkey\n */\n filterKeys: string[];\n\n /**\n * Defines how the integration should behave. \"Third-Party Stack Frames\" are stack frames that did not come from files marked with a matching bundle key.\n *\n * You can define the behaviour with one of 4 modes:\n * - `drop-error-if-contains-third-party-frames`: Drop error events that contain at least one third-party stack frame.\n * - `drop-error-if-exclusively-contains-third-party-frames`: Drop error events that exclusively contain third-party stack frames.\n * - `apply-tag-if-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains at least one third-party stack frame.\n * - `apply-tag-if-exclusively-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains exclusively third-party stack frames.\n *\n * If you chose the mode to only apply tags, the tags can then be used in Sentry to filter your issue stream by entering `!third_party_code:True` in the search bar.\n */\n behaviour:\n | 'drop-error-if-contains-third-party-frames'\n | 'drop-error-if-exclusively-contains-third-party-frames'\n | 'apply-tag-if-contains-third-party-frames'\n | 'apply-tag-if-exclusively-contains-third-party-frames';\n\n /**\n * @experimental\n * If set to true, the integration will ignore frames that are internal to the Sentry SDK from the third-party frame detection.\n * Note that enabling this option might lead to errors being misclassified as third-party errors.\n */\n ignoreSentryInternalFrames?: boolean;\n}\n\n/**\n * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins.\n */\nexport const thirdPartyErrorFilterIntegration = defineIntegration((options: Options) => {\n return {\n name: 'ThirdPartyErrorsFilter',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n\n processEvent(event) {\n const frameKeys = getBundleKeysForAllFramesWithFilenames(event, options.ignoreSentryInternalFrames);\n\n if (frameKeys) {\n const arrayMethod =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'apply-tag-if-contains-third-party-frames'\n ? 'some'\n : 'every';\n\n const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key)));\n\n if (behaviourApplies) {\n const shouldDrop =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames';\n if (shouldDrop) {\n return null;\n } else {\n event.tags = {\n ...event.tags,\n third_party_code: true,\n };\n }\n }\n }\n\n return event;\n },\n };\n});\n\n/**\n * Checks if a stack frame is a Sentry internal frame by strictly matching:\n * 1. The frame must be the last frame in the stack\n * 2. The filename must indicate the internal helpers file\n * 3. The context_line must contain the exact pattern \"fn.apply(this, wrappedArguments)\"\n * 4. The comment pattern \"Attempt to invoke user-land function\" must be present in pre_context\n *\n */\nfunction isSentryInternalFrame(frame: StackFrame, frameIndex: number): boolean {\n // Only match the last frame (index 0 in reversed stack)\n if (frameIndex !== 0 || !frame.context_line || !frame.filename) {\n return false;\n }\n\n if (\n !frame.filename.includes('sentry') ||\n !frame.filename.includes('helpers') || // Filename would look something like this: 'node_modules/@sentry/browser/build/npm/esm/helpers.js'\n !frame.context_line.includes(SENTRY_INTERNAL_FN_APPLY) // Must have context_line with the exact fn.apply pattern\n ) {\n return false;\n }\n\n // Check pre_context array for comment pattern\n if (frame.pre_context) {\n const len = frame.pre_context.length;\n for (let i = 0; i < len; i++) {\n if (frame.pre_context[i]?.includes(SENTRY_INTERNAL_COMMENT)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getBundleKeysForAllFramesWithFilenames(\n event: Event,\n ignoreSentryInternalFrames?: boolean,\n): string[][] | undefined {\n const frames = getFramesFromEvent(event);\n\n if (!frames) {\n return undefined;\n }\n\n return frames\n .filter((frame, index) => {\n // Exclude frames without a filename\n if (!frame.filename) {\n return false;\n }\n // Exclude frames without location info, since these are likely native code or built-ins.\n // JS frames have lineno/colno, WASM frames have instruction_addr instead.\n if (frame.lineno == null && frame.colno == null && frame.instruction_addr == null) {\n return false;\n }\n // Optionally ignore Sentry internal frames\n return !ignoreSentryInternalFrames || !isSentryInternalFrame(frame, index);\n })\n .map(frame => {\n if (!frame.module_metadata) {\n return [];\n }\n return Object.keys(frame.module_metadata)\n .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX))\n .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length));\n });\n}\n\nconst BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:';\nconst SENTRY_INTERNAL_COMMENT = 'Attempt to invoke user-land function';\nconst SENTRY_INTERNAL_FN_APPLY = 'fn.apply(this, wrappedArguments)';\n","import { addBreadcrumb } from '../breadcrumbs';\nimport { getClient } from '../currentScopes';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface ConsoleIntegrationOptions {\n levels: ConsoleLevel[];\n}\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\nconst INTEGRATION_NAME = 'Console';\n\n/**\n * Captures calls to the `console` API as breadcrumbs in Sentry.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```js\n * Sentry.init({\n * integrations: [Sentry.consoleIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleIntegration = defineIntegration((options: Partial = {}) => {\n const levels = new Set(options.levels || CONSOLE_LEVELS);\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.has(level)) {\n return;\n }\n\n addConsoleBreadcrumb(level, args);\n });\n },\n };\n});\n\n/**\n * Capture a console breadcrumb.\n *\n * Exported just for tests.\n */\nexport function addConsoleBreadcrumb(level: ConsoleLevel, args: unknown[]): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: args,\n logger: 'console',\n },\n level: severityLevelFromString(level),\n message: formatConsoleArgs(args),\n };\n\n if (level === 'assert') {\n if (args[0] === false) {\n const assertionArgs = args.slice(1);\n breadcrumb.message =\n assertionArgs.length > 0 ? `Assertion failed: ${formatConsoleArgs(assertionArgs)}` : 'Assertion failed';\n breadcrumb.data.arguments = assertionArgs;\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: args,\n level,\n });\n}\n\nfunction formatConsoleArgs(values: unknown[]): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoin(values, ' ');\n}\n","import { getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { type Event } from '../types-hoist/event';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToJSON } from './spanUtils';\n\n/**\n * Ordered LRU cache for storing feature flags in the scope context. The name\n * of each flag in the buffer is unique, and the output of getAll() is ordered\n * from oldest to newest.\n */\n\nexport type FeatureFlag = { readonly flag: string; readonly result: boolean };\n\n/**\n * Max size of the LRU flag buffer stored in Sentry scope and event contexts.\n */\nexport const _INTERNAL_FLAG_BUFFER_SIZE = 100;\n\n/**\n * Max number of flag evaluations to record per span.\n */\nexport const _INTERNAL_MAX_FLAGS_PER_SPAN = 10;\n\nconst SPAN_FLAG_ATTRIBUTE_PREFIX = 'flag.evaluation.';\n\n/**\n * Copies feature flags that are in current scope context to the event context\n */\nexport function _INTERNAL_copyFlagsFromScopeToEvent(event: Event): Event {\n const scope = getCurrentScope();\n const flagContext = scope.getScopeData().contexts.flags;\n const flagBuffer = flagContext ? flagContext.values : [];\n\n if (!flagBuffer.length) {\n return event;\n }\n\n if (event.contexts === undefined) {\n event.contexts = {};\n }\n event.contexts.flags = { values: [...flagBuffer] };\n return event;\n}\n\n/**\n * Inserts a flag into the current scope's context while maintaining ordered LRU properties.\n * Not thread-safe. After inserting:\n * - The flag buffer is sorted in order of recency, with the newest evaluation at the end.\n * - The names in the buffer are always unique.\n * - The length of the buffer never exceeds `maxSize`.\n *\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertFlagToScope(\n name: string,\n value: unknown,\n maxSize: number = _INTERNAL_FLAG_BUFFER_SIZE,\n): void {\n const scopeContexts = getCurrentScope().getScopeData().contexts;\n if (!scopeContexts.flags) {\n scopeContexts.flags = { values: [] };\n }\n const flags = scopeContexts.flags.values;\n _INTERNAL_insertToFlagBuffer(flags, name, value, maxSize);\n}\n\n/**\n * Exported for tests only. Currently only accepts boolean values (otherwise no-op).\n * Inserts a flag into a FeatureFlag array while maintaining the following properties:\n * - Flags are sorted in order of recency, with the newest evaluation at the end.\n * - The flag names are always unique.\n * - The length of the array never exceeds `maxSize`.\n *\n * @param flags The buffer to insert the flag into.\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertToFlagBuffer(\n flags: FeatureFlag[],\n name: string,\n value: unknown,\n maxSize: number,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n if (flags.length > maxSize) {\n DEBUG_BUILD && debug.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${maxSize}`);\n return;\n }\n\n // Check if the flag is already in the buffer - O(n)\n const index = flags.findIndex(f => f.flag === name);\n\n if (index !== -1) {\n // The flag was found, remove it from its current position - O(n)\n flags.splice(index, 1);\n }\n\n if (flags.length === maxSize) {\n // If at capacity, pop the earliest flag - O(n)\n flags.shift();\n }\n\n // Push the flag to the end - O(1)\n flags.push({\n flag: name,\n result: value,\n });\n}\n\n/**\n * Records a feature flag evaluation for the active span. This is a no-op for non-boolean values.\n * The flag and its value is stored in span attributes with the `flag.evaluation` prefix. Once the\n * unique flags for a span reaches maxFlagsPerSpan, subsequent flags are dropped.\n *\n * @param name Name of the feature flag.\n * @param value Value of the feature flag. Non-boolean values are ignored.\n * @param maxFlagsPerSpan Max number of flags a buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_addFeatureFlagToActiveSpan(\n name: string,\n value: unknown,\n maxFlagsPerSpan: number = _INTERNAL_MAX_FLAGS_PER_SPAN,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n const span = getActiveSpan();\n if (!span) {\n return;\n }\n\n const attributes = spanToJSON(span).data;\n\n // If the flag already exists, always update it\n if (`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}` in attributes) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n return;\n }\n\n // Else, add the flag to the span if we have not reached the max number of flags\n const numOfAddedFlags = Object.keys(attributes).filter(key => key.startsWith(SPAN_FLAG_ATTRIBUTE_PREFIX)).length;\n if (numOfAddedFlags < maxFlagsPerSpan) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n }\n}\n","import { type Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport { type Event, type EventHint } from '../../types-hoist/event';\nimport { type Integration, type IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\n\nexport interface FeatureFlagsIntegration extends Integration {\n addFeatureFlag: (name: string, value: unknown) => void;\n}\n\n/**\n * Sentry integration for buffering feature flag evaluations manually with an API, and\n * capturing them on error events and spans.\n *\n * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.\n *\n * @example\n * ```\n * import * as Sentry from '@sentry/browser';\n * import { type FeatureFlagsIntegration } from '@sentry/browser';\n *\n * // Setup\n * Sentry.init(..., integrations: [Sentry.featureFlagsIntegration()])\n *\n * // Verify\n * const flagsIntegration = Sentry.getClient()?.getIntegrationByName('FeatureFlags');\n * if (flagsIntegration) {\n * flagsIntegration.addFeatureFlag('my-flag', true);\n * } else {\n * // check your setup\n * }\n * Sentry.captureException(Exception('broke')); // 'my-flag' should be captured to this Sentry event.\n * ```\n */\nexport const featureFlagsIntegration = defineIntegration(() => {\n return {\n name: 'FeatureFlags',\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n\n addFeatureFlag(name: string, value: unknown): void {\n _INTERNAL_insertFlagToScope(name, value);\n _INTERNAL_addFeatureFlagToActiveSpan(name, value);\n },\n };\n}) as IntegrationFn;\n","import type { Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport type { Event, EventHint } from '../../types-hoist/event';\nimport type { IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\nimport { fill } from '../../utils/object';\n\ninterface GrowthBookLike {\n isOn(this: GrowthBookLike, featureKey: string, ...rest: unknown[]): boolean;\n getFeatureValue(this: GrowthBookLike, featureKey: string, defaultValue: unknown, ...rest: unknown[]): unknown;\n}\n\nexport type GrowthBookClassLike = new (...args: unknown[]) => GrowthBookLike;\n\n/**\n * Sentry integration for capturing feature flag evaluations from GrowthBook.\n *\n * Only boolean results are captured at this time.\n *\n * @example\n * ```typescript\n * import { GrowthBook } from '@growthbook/growthbook';\n * import * as Sentry from '@sentry/browser'; // or '@sentry/node'\n *\n * Sentry.init({\n * dsn: 'your-dsn',\n * integrations: [\n * Sentry.growthbookIntegration({ growthbookClass: GrowthBook })\n * ]\n * });\n * ```\n */\nexport const growthbookIntegration: IntegrationFn = defineIntegration(\n ({ growthbookClass }: { growthbookClass: GrowthBookClassLike }) => {\n return {\n name: 'GrowthBook',\n\n setupOnce() {\n const proto = growthbookClass.prototype as GrowthBookLike;\n\n // Type guard and wrap isOn\n if (typeof proto.isOn === 'function') {\n fill(proto, 'isOn', _wrapAndCaptureBooleanResult);\n }\n\n // Type guard and wrap getFeatureValue\n if (typeof proto.getFeatureValue === 'function') {\n fill(proto, 'getFeatureValue', _wrapAndCaptureBooleanResult);\n }\n },\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n },\n);\n\nfunction _wrapAndCaptureBooleanResult(\n original: (this: GrowthBookLike, ...args: unknown[]) => unknown,\n): (this: GrowthBookLike, ...args: unknown[]) => unknown {\n return function (this: GrowthBookLike, ...args: unknown[]): unknown {\n const flagName = args[0];\n const result = original.apply(this, args);\n\n if (typeof flagName === 'string' && typeof result === 'boolean') {\n _INTERNAL_insertFlagToScope(flagName, result);\n _INTERNAL_addFeatureFlagToActiveSpan(flagName, result);\n }\n\n return result;\n };\n}\n","import type { Client } from '../client';\nimport { getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport { GEN_AI_CONVERSATION_ID_ATTRIBUTE } from '../semanticAttributes';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { Span } from '../types-hoist/span';\n\nconst INTEGRATION_NAME = 'ConversationId';\n\nconst _conversationIdIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setup(client: Client) {\n client.on('spanStart', (span: Span) => {\n const scopeData = getCurrentScope().getScopeData();\n const isolationScopeData = getIsolationScope().getScopeData();\n\n const conversationId = scopeData.conversationId || isolationScopeData.conversationId;\n\n if (conversationId) {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, conversationId);\n }\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Automatically applies conversation ID from scope to spans.\n *\n * This integration reads the conversation ID from the current or isolation scope\n * and applies it to spans when they start. This ensures the conversation ID is\n * available for all AI-related operations.\n */\nexport const conversationIdIntegration = defineIntegration(_conversationIdIntegration);\n","import { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Profiler, ProfilingIntegration } from './types-hoist/profiling';\nimport { debug } from './utils/debug-logger';\n\nfunction isProfilingIntegrationWithProfiler(\n integration: ProfilingIntegration | undefined,\n): integration is ProfilingIntegration {\n return (\n !!integration &&\n typeof integration['_profiler'] !== 'undefined' &&\n typeof integration['_profiler']['start'] === 'function' &&\n typeof integration['_profiler']['stop'] === 'function'\n );\n}\n/**\n * Starts the Sentry continuous profiler.\n * This mode is exclusive with the transaction profiler and will only work if the profilesSampleRate is set to a falsy value.\n * In continuous profiling mode, the profiler will keep reporting profile chunks to Sentry until it is stopped, which allows for continuous profiling of the application.\n */\nfunction startProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.start();\n}\n\n/**\n * Stops the Sentry continuous profiler.\n * Calls to stop will stop the profiler and flush the currently collected profile data to Sentry.\n */\nfunction stopProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.stop();\n}\n\n/**\n * Profiler namespace for controlling the profiler in 'manual' mode.\n *\n * Requires the `nodeProfilingIntegration` from the `@sentry/profiling-node` package.\n */\nexport const profiler: Profiler = {\n startProfiler,\n stopProfiler,\n};\n","import { getClient } from './currentScopes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, startInactiveSpan } from './tracing';\nimport { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan';\nimport type { FetchBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { HandlerDataFetch } from './types-hoist/instrument';\nimport type { ResponseHookInfo } from './types-hoist/request';\nimport type { Span, SpanAttributes, SpanOrigin } from './types-hoist/span';\nimport { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage';\nimport { hasSpansEnabled } from './utils/hasSpansEnabled';\nimport { isInstanceOf, isRequest } from './utils/is';\nimport { getActiveSpan } from './utils/spanUtils';\nimport { getTraceData } from './utils/traceData';\nimport {\n getSanitizedUrlStringFromUrlObject,\n isURLObjectRelative,\n parseStringToURLObject,\n stripDataUrlContent,\n} from './utils/url';\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not precisely the Header type used in Request, but it'll pass duck-typing\n | {\n append: (key: string, value: string) => void;\n get: (key: string) => string | null | undefined;\n };\n\ninterface InstrumentFetchRequestOptions {\n spanOrigin?: SpanOrigin;\n propagateTraceparent?: boolean;\n onRequestSpanEnd?: (span: Span, responseInformation: ResponseHookInfo) => void;\n}\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @deprecated pass an options object instead of the spanOrigin parameter\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOrigin: SpanOrigin,\n): Span | undefined;\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- needed because the other overload is deprecated\n instrumentFetchRequestOptions: InstrumentFetchRequestOptions,\n): Span | undefined;\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): Span | undefined {\n if (!handlerData.fetchData) {\n return undefined;\n }\n\n const { method, url } = handlerData.fetchData;\n\n const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n\n if (span) {\n // Only end the span and call hooks if we're actually recording\n if (shouldCreateSpanResult) {\n endSpan(span, handlerData);\n _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n\n return undefined;\n }\n\n // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter\n // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter\n // TODO (v11): remove this backwards-compatible code and only accept the options parameter\n const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } =\n typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions };\n\n const hasParent = !!getActiveSpan();\n\n const span =\n shouldCreateSpanResult && hasParent\n ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin))\n : new SentryNonRecordingSpan();\n\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n const request: string | Request = handlerData.args[0];\n\n // Shallow clone the options object to avoid mutating the original user-provided object\n // Examples: users re-using same options object for multiple fetch calls, frozen objects\n const options: { [key: string]: unknown } = { ...(handlerData.args[1] || {}) };\n\n const headers = _addTracingHeadersToFetchRequest(\n request,\n options,\n // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n // we do not want to use the span as base for the trace headers,\n // which means that the headers will be generated from the scope and the sampling decision is deferred\n hasSpansEnabled() && hasParent ? span : undefined,\n propagateTraceparent,\n );\n if (headers) {\n // Ensure this is actually set, if no options have been passed previously\n handlerData.args[1] = options;\n options.headers = headers;\n }\n }\n\n const client = getClient();\n\n if (client) {\n const fetchHint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp: handlerData.startTimestamp,\n endTimestamp: handlerData.endTimestamp,\n } satisfies FetchBreadcrumbHint;\n\n client.emit('beforeOutgoingRequestSpan', span, fetchHint);\n }\n\n return span;\n}\n\n/**\n * Calls the onRequestSpanEnd callback if it is defined.\n */\nexport function _callOnRequestSpanEnd(\n span: Span,\n handlerData: HandlerDataFetch,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): void {\n const onRequestSpanEnd =\n typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null\n ? spanOriginOrOptions.onRequestSpanEnd\n : undefined;\n\n onRequestSpanEnd?.(span, {\n headers: handlerData.response?.headers,\n error: handlerData.error,\n });\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers.\n * exported only for testing purposes\n *\n * When we determine if we should add a baggage header, there are 3 cases:\n * 1. No previous baggage header -> add baggage\n * 2. Previous baggage header has no sentry baggage values -> add our baggage\n * 3. Previous baggage header has sentry baggage values -> do nothing (might have been added manually by users)\n */\n// eslint-disable-next-line complexity -- yup it's this complicated :(\nexport function _addTracingHeadersToFetchRequest(\n request: string | Request,\n fetchOptionsObj: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | PolymorphicRequestHeaders;\n },\n span?: Span,\n propagateTraceparent?: boolean,\n): PolymorphicRequestHeaders | undefined {\n const traceHeaders = getTraceData({ span, propagateTraceparent });\n const sentryTrace = traceHeaders['sentry-trace'];\n const baggage = traceHeaders.baggage;\n const traceparent = traceHeaders.traceparent;\n\n // Nothing to do, when we return undefined here, the original headers will be used\n if (!sentryTrace) {\n return undefined;\n }\n\n const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : undefined);\n\n if (!originalHeaders) {\n return { ...traceHeaders };\n } else if (isHeaders(originalHeaders)) {\n const newHeaders = new Headers(originalHeaders);\n\n // We don't want to override manually added sentry headers\n if (!newHeaders.get('sentry-trace')) {\n newHeaders.set('sentry-trace', sentryTrace);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) {\n newHeaders.set('traceparent', traceparent);\n }\n\n if (baggage) {\n const prevBaggageHeader = newHeaders.get('baggage');\n\n if (!prevBaggageHeader) {\n newHeaders.set('baggage', baggage);\n } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) {\n newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`);\n }\n }\n\n return newHeaders;\n } else if (Array.isArray(originalHeaders)) {\n const newHeaders = [...originalHeaders];\n\n if (!originalHeaders.find(header => header[0] === 'sentry-trace')) {\n newHeaders.push(['sentry-trace', sentryTrace]);\n }\n\n if (propagateTraceparent && traceparent && !originalHeaders.find(header => header[0] === 'traceparent')) {\n newHeaders.push(['traceparent', traceparent]);\n }\n\n const prevBaggageHeaderWithSentryValues = originalHeaders.find(\n header => header[0] === 'baggage' && baggageHeaderHasSentryBaggageValues(header[1]),\n );\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push(['baggage', baggage]);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else {\n const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined;\n const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined;\n const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined;\n\n const newBaggageHeaders: string[] = existingBaggageHeader\n ? Array.isArray(existingBaggageHeader)\n ? [...existingBaggageHeader]\n : [existingBaggageHeader]\n : [];\n\n const prevBaggageHeaderWithSentryValues =\n existingBaggageHeader &&\n (Array.isArray(existingBaggageHeader)\n ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem))\n : baggageHeaderHasSentryBaggageValues(existingBaggageHeader));\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n newBaggageHeaders.push(baggage);\n }\n\n const newHeaders: {\n 'sentry-trace': string;\n baggage: string | undefined;\n traceparent?: string;\n } = {\n ...originalHeaders,\n 'sentry-trace': (existingSentryTraceHeader as string | undefined) ?? sentryTrace,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n\n if (propagateTraceparent && traceparent && !existingTraceparentHeader) {\n newHeaders.traceparent = traceparent;\n }\n\n return newHeaders;\n }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n if (handlerData.response) {\n setHttpStatus(span, handlerData.response.status);\n\n const contentLength = handlerData.response?.headers?.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n}\n\nfunction baggageHeaderHasSentryBaggageValues(baggageHeader: string): boolean {\n return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX));\n}\n\nfunction isHeaders(headers: unknown): headers is Headers {\n return typeof Headers !== 'undefined' && isInstanceOf(headers, Headers);\n}\n\nfunction getSpanStartOptions(\n url: string,\n method: string,\n spanOrigin: SpanOrigin,\n): Parameters[0] {\n // Data URLs need special handling because parseStringToURLObject treats them as \"relative\"\n // (no \"://\"), causing getSanitizedUrlStringFromUrlObject to return just the pathname\n // without the \"data:\" prefix, making later stripDataUrlContent calls ineffective.\n // So for data URLs, we strip the content first and use that directly.\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, undefined, method, spanOrigin),\n };\n }\n\n const parsedUrl = parseStringToURLObject(url);\n const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url;\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin),\n };\n}\n\nfunction getFetchSpanAttributes(\n url: string,\n parsedUrl: ReturnType,\n method: string,\n spanOrigin: SpanOrigin,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n url: stripDataUrlContent(url),\n type: 'fetch',\n 'http.method': method,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n };\n if (parsedUrl) {\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['http.url'] = stripDataUrlContent(parsedUrl.href);\n attributes['server.address'] = parsedUrl.host;\n }\n if (parsedUrl.search) {\n attributes['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['http.fragment'] = parsedUrl.hash;\n }\n }\n return attributes;\n}\n","import { getClient, withIsolationScope } from './currentScopes';\nimport { captureException } from './exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes';\nimport { startSpanManual } from './tracing';\nimport { normalize } from './utils/normalize';\nimport { addNonEnumerableProperty } from './utils/object';\n\ninterface SentryTrpcMiddlewareOptions {\n /** Whether to include procedure inputs in reported events. Defaults to `false`. */\n attachRpcInput?: boolean;\n forceTransaction?: boolean;\n}\n\nexport interface SentryTrpcMiddlewareArguments {\n path?: unknown;\n type?: unknown;\n next: () => T;\n rawInput?: unknown;\n getRawInput?: () => Promise;\n}\n\nconst trpcCaptureContext = { mechanism: { handled: false, type: 'auto.rpc.trpc.middleware' } };\n\nfunction captureIfError(nextResult: unknown): void {\n // TODO: Set span status based on what TRPCError was encountered\n if (\n typeof nextResult === 'object' &&\n nextResult !== null &&\n 'ok' in nextResult &&\n !nextResult.ok &&\n 'error' in nextResult\n ) {\n captureException(nextResult.error, trpcCaptureContext);\n }\n}\n\ntype SentryTrpcMiddleware = T extends Promise ? T : Promise;\n\n/**\n * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return async function (opts: SentryTrpcMiddlewareArguments): SentryTrpcMiddleware {\n const { path, type, next, rawInput, getRawInput } = opts;\n\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n const trpcContext: Record = {\n procedure_path: path,\n procedure_type: type,\n };\n\n addNonEnumerableProperty(\n trpcContext,\n '__sentry_override_normalization_depth__',\n 1 + // 1 for context.input + the normal normalization depth\n (clientOptions?.normalizeDepth ?? 5), // 5 is a sane depth\n );\n\n if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) {\n if (rawInput !== undefined) {\n trpcContext.input = normalize(rawInput);\n }\n\n if (getRawInput !== undefined && typeof getRawInput === 'function') {\n try {\n const rawRes = await getRawInput();\n\n trpcContext.input = normalize(rawRes);\n } catch {\n // noop\n }\n }\n }\n\n return withIsolationScope(scope => {\n scope.setContext('trpc', trpcContext);\n return startSpanManual(\n {\n name: `trpc/${path}`,\n op: 'rpc.server',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc',\n },\n forceTransaction: !!options.forceTransaction,\n },\n async span => {\n try {\n const nextResult = await next();\n captureIfError(nextResult);\n span.end();\n return nextResult;\n } catch (e) {\n captureException(e, trpcCaptureContext);\n span.end();\n throw e;\n }\n },\n ) as SentryTrpcMiddleware;\n });\n };\n}\n","/**\n * Safe error capture utilities for MCP server instrumentation\n *\n * Ensures error reporting never interferes with MCP server operation.\n * All capture operations are wrapped in try-catch to prevent side effects.\n */\n\nimport { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { getActiveSpan } from '../../utils/spanUtils';\nimport type { McpErrorType } from './types';\n\n/**\n * Captures an error without affecting MCP server operation.\n *\n * The active span already contains all MCP context (method, tool, arguments, etc.)\n * @param error - Error to capture\n * @param errorType - Classification of error type for filtering\n * @param extraData - Additional context data to include\n */\nexport function captureError(error: Error, errorType?: McpErrorType, extraData?: Record): void {\n try {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const activeSpan = getActiveSpan();\n if (activeSpan?.isRecording()) {\n activeSpan.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'internal_error',\n });\n }\n\n captureException(error, {\n mechanism: {\n type: 'auto.ai.mcp_server',\n handled: false,\n data: {\n error_type: errorType || 'handler_execution',\n ...extraData,\n },\n },\n });\n } catch {\n // noop\n }\n}\n","/**\n * Handler method wrapping for MCP server instrumentation\n *\n * Provides automatic error capture and span correlation for tool, resource,\n * and prompt handlers.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport { fill } from '../../utils/object';\nimport { captureError } from './errorCapture';\nimport type { MCPHandler, MCPServerInstance } from './types';\n\n/**\n * Generic function to wrap MCP server method handlers\n * @internal\n * @param serverInstance - MCP server instance\n * @param methodName - Method name to wrap (tool, resource, prompt)\n */\nfunction wrapMethodHandler(serverInstance: MCPServerInstance, methodName: keyof MCPServerInstance): void {\n fill(serverInstance, methodName, originalMethod => {\n return function (this: MCPServerInstance, name: string, ...args: unknown[]) {\n const handler = args[args.length - 1];\n\n if (typeof handler !== 'function') {\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args);\n }\n\n const wrappedHandler = createWrappedHandler(handler as MCPHandler, methodName, name);\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args.slice(0, -1), wrappedHandler);\n };\n });\n}\n\n/**\n * Creates a wrapped handler with span correlation and error capture\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @returns Wrapped handler function\n */\nfunction createWrappedHandler(originalHandler: MCPHandler, methodName: keyof MCPServerInstance, handlerName: string) {\n return function (this: unknown, ...handlerArgs: unknown[]): unknown {\n try {\n return createErrorCapturingHandler.call(this, originalHandler, methodName, handlerName, handlerArgs);\n } catch (error) {\n DEBUG_BUILD && debug.warn('MCP handler wrapping failed:', error);\n return originalHandler.apply(this, handlerArgs);\n }\n };\n}\n\n/**\n * Creates an error-capturing wrapper for handler execution\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @param handlerArgs - Handler arguments\n * @param extraHandlerData - Additional handler context\n * @returns Handler execution result\n */\nfunction createErrorCapturingHandler(\n this: MCPServerInstance,\n originalHandler: MCPHandler,\n methodName: keyof MCPServerInstance,\n handlerName: string,\n handlerArgs: unknown[],\n): unknown {\n try {\n const result = originalHandler.apply(this, handlerArgs);\n\n if (result && typeof result === 'object' && typeof (result as { then?: unknown }).then === 'function') {\n return Promise.resolve(result).catch(error => {\n captureHandlerError(error, methodName, handlerName);\n throw error;\n });\n }\n\n return result;\n } catch (error) {\n captureHandlerError(error as Error, methodName, handlerName);\n throw error;\n }\n}\n\n/**\n * Captures handler execution errors based on handler type\n * @internal\n * @param error - Error to capture\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n */\nfunction captureHandlerError(error: Error, methodName: keyof MCPServerInstance, handlerName: string): void {\n try {\n const extraData: Record = {};\n\n if (methodName === 'tool') {\n extraData.tool_name = handlerName;\n\n if (\n error.name === 'ProtocolValidationError' ||\n error.message.includes('validation') ||\n error.message.includes('protocol')\n ) {\n captureError(error, 'validation', extraData);\n } else if (\n error.name === 'ServerTimeoutError' ||\n error.message.includes('timed out') ||\n error.message.includes('timeout')\n ) {\n captureError(error, 'timeout', extraData);\n } else {\n captureError(error, 'tool_execution', extraData);\n }\n } else if (methodName === 'resource') {\n extraData.resource_uri = handlerName;\n captureError(error, 'resource_execution', extraData);\n } else if (methodName === 'prompt') {\n extraData.prompt_name = handlerName;\n captureError(error, 'prompt_execution', extraData);\n }\n } catch (_captureErr) {\n // noop\n }\n}\n\n/**\n * Wraps tool handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapToolHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'tool');\n}\n\n/**\n * Wraps resource handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapResourceHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'resource');\n}\n\n/**\n * Wraps prompt handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapPromptHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'prompt');\n}\n\n/**\n * Wraps all MCP handler types (tool, resource, prompt) for span correlation\n * @param serverInstance - MCP server instance\n */\nexport function wrapAllMCPHandlers(serverInstance: MCPServerInstance): void {\n wrapToolHandlers(serverInstance);\n wrapResourceHandlers(serverInstance);\n wrapPromptHandlers(serverInstance);\n}\n","/**\n * Essential MCP attribute constants for Sentry instrumentation\n *\n * Based on OpenTelemetry MCP semantic conventions\n * @see https://github.com/open-telemetry/semantic-conventions/blob/3097fb0af5b9492b0e3f55dc5f6c21a3dc2be8df/docs/gen-ai/mcp.md\n */\n\n// =============================================================================\n// CORE MCP ATTRIBUTES\n// =============================================================================\n\n/** The name of the request or notification method */\nexport const MCP_METHOD_NAME_ATTRIBUTE = 'mcp.method.name';\n\n/** JSON-RPC request identifier for the request. Unique within the MCP session. */\nexport const MCP_REQUEST_ID_ATTRIBUTE = 'mcp.request.id';\n\n/** Identifies the MCP session */\nexport const MCP_SESSION_ID_ATTRIBUTE = 'mcp.session.id';\n\n/** Transport method used for MCP communication */\nexport const MCP_TRANSPORT_ATTRIBUTE = 'mcp.transport';\n\n// =============================================================================\n// CLIENT ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP client application */\nexport const MCP_CLIENT_NAME_ATTRIBUTE = 'mcp.client.name';\n\n/** Display title of the MCP client application */\nexport const MCP_CLIENT_TITLE_ATTRIBUTE = 'mcp.client.title';\n\n/** Version of the MCP client application */\nexport const MCP_CLIENT_VERSION_ATTRIBUTE = 'mcp.client.version';\n\n// =============================================================================\n// SERVER ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP server application */\nexport const MCP_SERVER_NAME_ATTRIBUTE = 'mcp.server.name';\n\n/** Display title of the MCP server application */\nexport const MCP_SERVER_TITLE_ATTRIBUTE = 'mcp.server.title';\n\n/** Version of the MCP server application */\nexport const MCP_SERVER_VERSION_ATTRIBUTE = 'mcp.server.version';\n\n/** MCP protocol version used in the session */\nexport const MCP_PROTOCOL_VERSION_ATTRIBUTE = 'mcp.protocol.version';\n\n// =============================================================================\n// METHOD-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/** Name of the tool being called */\nexport const MCP_TOOL_NAME_ATTRIBUTE = 'mcp.tool.name';\n\n/** The resource URI being accessed */\nexport const MCP_RESOURCE_URI_ATTRIBUTE = 'mcp.resource.uri';\n\n/** Name of the prompt template */\nexport const MCP_PROMPT_NAME_ATTRIBUTE = 'mcp.prompt.name';\n\n// =============================================================================\n// TOOL RESULT ATTRIBUTES\n// =============================================================================\n\n/** Whether a tool execution resulted in an error */\nexport const MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = 'mcp.tool.result.is_error';\n\n/** Number of content items in the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = 'mcp.tool.result.content_count';\n\n/** Serialized content of the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_ATTRIBUTE = 'mcp.tool.result.content';\n\n/** Prefix for tool result attributes that contain sensitive content */\nexport const MCP_TOOL_RESULT_PREFIX = 'mcp.tool.result';\n\n// =============================================================================\n// PROMPT RESULT ATTRIBUTES\n// =============================================================================\n\n/** Description of the prompt result */\nexport const MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = 'mcp.prompt.result.description';\n\n/** Number of messages in the prompt result */\nexport const MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = 'mcp.prompt.result.message_count';\n\n/** Role of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_ROLE_ATTRIBUTE = 'mcp.prompt.result.message_role';\n\n/** Content of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_CONTENT_ATTRIBUTE = 'mcp.prompt.result.message_content';\n\n/** Prefix for prompt result attributes that contain sensitive content */\nexport const MCP_PROMPT_RESULT_PREFIX = 'mcp.prompt.result';\n\n// =============================================================================\n// REQUEST ARGUMENT ATTRIBUTES\n// =============================================================================\n\n/** Prefix for MCP request argument prefix for each argument */\nexport const MCP_REQUEST_ARGUMENT = 'mcp.request.argument';\n\n// =============================================================================\n// LOGGING ATTRIBUTES\n// =============================================================================\n\n/** Log level for MCP logging operations */\nexport const MCP_LOGGING_LEVEL_ATTRIBUTE = 'mcp.logging.level';\n\n/** Logger name for MCP logging operations */\nexport const MCP_LOGGING_LOGGER_ATTRIBUTE = 'mcp.logging.logger';\n\n/** Data type of the logged message */\nexport const MCP_LOGGING_DATA_TYPE_ATTRIBUTE = 'mcp.logging.data_type';\n\n/** Log message content */\nexport const MCP_LOGGING_MESSAGE_ATTRIBUTE = 'mcp.logging.message';\n\n// =============================================================================\n// NETWORK ATTRIBUTES (OpenTelemetry Standard)\n// =============================================================================\n\n/** OSI transport layer protocol */\nexport const NETWORK_TRANSPORT_ATTRIBUTE = 'network.transport';\n\n/** The version of JSON RPC protocol used */\nexport const NETWORK_PROTOCOL_VERSION_ATTRIBUTE = 'network.protocol.version';\n\n/** Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name */\nexport const CLIENT_ADDRESS_ATTRIBUTE = 'client.address';\n\n/** Client port number */\nexport const CLIENT_PORT_ATTRIBUTE = 'client.port';\n\n// =============================================================================\n// SENTRY-SPECIFIC MCP ATTRIBUTE VALUES\n// =============================================================================\n\n/** Sentry operation value for MCP server spans */\nexport const MCP_SERVER_OP_VALUE = 'mcp.server';\n\n/**\n * Sentry operation value for client-to-server notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = 'mcp.notification.client_to_server';\n\n/**\n * Sentry operation value for server-to-client notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = 'mcp.notification.server_to_client';\n\n/** Sentry origin value for MCP function spans */\nexport const MCP_FUNCTION_ORIGIN_VALUE = 'auto.function.mcp_server';\n\n/** Sentry origin value for MCP notification spans */\nexport const MCP_NOTIFICATION_ORIGIN_VALUE = 'auto.mcp.notification';\n\n/** Sentry source value for MCP route spans */\nexport const MCP_ROUTE_SOURCE_VALUE = 'route';\n","/**\n * Message validation functions for MCP server instrumentation\n *\n * Provides JSON-RPC 2.0 message type validation and MCP server instance validation.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport type { JsonRpcNotification, JsonRpcRequest, JsonRpcResponse } from './types';\n\n/**\n * Validates if a message is a JSON-RPC request\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC request\n */\nexport function isJsonRpcRequest(message: unknown): message is JsonRpcRequest {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcRequest).jsonrpc === '2.0' &&\n 'method' in message &&\n 'id' in message\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC notification\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC notification\n */\nexport function isJsonRpcNotification(message: unknown): message is JsonRpcNotification {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcNotification).jsonrpc === '2.0' &&\n 'method' in message &&\n !('id' in message)\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC response\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC response\n */\nexport function isJsonRpcResponse(message: unknown): message is JsonRpcResponse {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as { jsonrpc: string }).jsonrpc === '2.0' &&\n 'id' in message &&\n ('result' in message || 'error' in message)\n );\n}\n\n/**\n * Validates MCP server instance with type checking\n * @param instance - Object to validate as MCP server instance\n * @returns True if instance has required MCP server methods\n */\nexport function validateMcpServerInstance(instance: unknown): boolean {\n if (\n typeof instance === 'object' &&\n instance !== null &&\n 'resource' in instance &&\n 'tool' in instance &&\n 'prompt' in instance &&\n 'connect' in instance\n ) {\n return true;\n }\n DEBUG_BUILD && debug.warn('Did not patch MCP server. Interface is incompatible.');\n return false;\n}\n\n/**\n * Check if the item is a valid content item\n * @param item - The item to check\n * @returns True if the item is a valid content item, false otherwise\n */\nexport function isValidContentItem(item: unknown): item is Record {\n return item != null && typeof item === 'object';\n}\n","/**\n * Result extraction functions for MCP server instrumentation\n *\n * Handles extraction of attributes from tool and prompt execution results.\n */\n\nimport {\n MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE,\n MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE,\n} from './attributes';\nimport { isValidContentItem } from './validation';\n\n/**\n * Build attributes for tool result content items\n * @param content - Array of content items from tool result\n * @param includeContent - Whether to include actual content (text, URIs) or just metadata\n * @returns Attributes extracted from each content item\n */\nfunction buildAllContentItemAttributes(\n content: unknown[],\n includeContent: boolean,\n): Record {\n const attributes: Record = {\n [MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE]: content.length,\n };\n\n for (const [i, item] of content.entries()) {\n if (!isValidContentItem(item)) {\n continue;\n }\n\n const prefix = content.length === 1 ? 'mcp.tool.result' : `mcp.tool.result.${i}`;\n\n if (typeof item.type === 'string') {\n attributes[`${prefix}.content_type`] = item.type;\n }\n\n if (includeContent) {\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n attributes[`${prefix}.${key}`] = value;\n }\n };\n\n safeSet('mime_type', item.mimeType);\n safeSet('uri', item.uri);\n safeSet('name', item.name);\n\n if (typeof item.text === 'string') {\n attributes[`${prefix}.content`] = item.text;\n }\n\n if (typeof item.data === 'string') {\n attributes[`${prefix}.data_size`] = item.data.length;\n }\n\n const resource = item.resource;\n if (isValidContentItem(resource)) {\n safeSet('resource_uri', resource.uri);\n safeSet('resource_mime_type', resource.mimeType);\n }\n }\n }\n\n return attributes;\n}\n\n/**\n * Extract tool result attributes for span instrumentation\n * @param result - Tool execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts, error status)\n * @returns Attributes extracted from tool result content\n */\nexport function extractToolResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n if (!isValidContentItem(result)) {\n return {};\n }\n\n const attributes = Array.isArray(result.content) ? buildAllContentItemAttributes(result.content, recordOutputs) : {};\n\n if (typeof result.isError === 'boolean') {\n attributes[MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE] = result.isError;\n }\n\n return attributes;\n}\n\n/**\n * Extract prompt result attributes for span instrumentation\n * @param result - Prompt execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts)\n * @returns Attributes extracted from prompt result\n */\nexport function extractPromptResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n const attributes: Record = {};\n if (!isValidContentItem(result)) {\n return attributes;\n }\n\n if (recordOutputs && typeof result.description === 'string') {\n attributes[MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE] = result.description;\n }\n\n if (Array.isArray(result.messages)) {\n attributes[MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE] = result.messages.length;\n\n if (recordOutputs) {\n const messages = result.messages;\n for (const [i, message] of messages.entries()) {\n if (!isValidContentItem(message)) {\n continue;\n }\n\n const prefix = messages.length === 1 ? 'mcp.prompt.result' : `mcp.prompt.result.${i}`;\n\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_${key}` : `${prefix}.${key}`;\n attributes[attrName] = value;\n }\n };\n\n safeSet('role', message.role);\n\n if (isValidContentItem(message.content)) {\n const content = message.content;\n if (typeof content.text === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_content` : `${prefix}.content`;\n attributes[attrName] = content.text;\n }\n }\n }\n }\n }\n\n return attributes;\n}\n","/**\n * Session data management for MCP server instrumentation\n *\n * Uses sessionId as the primary key for stateful transports. This handles the wrapper\n * transport pattern (e.g., NodeStreamableHTTPServerTransport wrapping WebStandardStreamableHTTPServerTransport)\n * where different methods may receive different `this` values but share the same sessionId.\n *\n * Falls back to WeakMap by transport instance for stateless transports (no sessionId).\n */\n\nimport type { MCPTransport, PartyInfo, SessionData } from './types';\n\n/**\n * Session-scoped data storage for stateful transports (with sessionId)\n * @internal Using sessionId as key handles wrapper transport patterns\n */\nconst sessionToSessionData = new Map();\n\n/**\n * Transport-scoped data storage fallback for stateless transports (no sessionId)\n * @internal WeakMap allows automatic cleanup when transport is garbage collected\n */\nconst statelessSessionData = new WeakMap();\n\n/**\n * Gets session data for a transport, checking sessionId first then fallback\n * @internal\n */\nfunction getSessionData(transport: MCPTransport): SessionData | undefined {\n const sessionId = transport.sessionId;\n if (sessionId) {\n return sessionToSessionData.get(sessionId);\n }\n return statelessSessionData.get(transport);\n}\n\n/**\n * Sets session data for a transport, using sessionId when available\n * @internal\n */\nfunction setSessionData(transport: MCPTransport, data: SessionData): void {\n const sessionId = transport.sessionId;\n if (sessionId) {\n sessionToSessionData.set(sessionId, data);\n } else {\n statelessSessionData.set(transport, data);\n }\n}\n\n/**\n * Stores session data for a transport\n * @param transport - MCP transport instance\n * @param sessionData - Session data to store\n */\nexport function storeSessionDataForTransport(transport: MCPTransport, sessionData: SessionData): void {\n // For stateful transports, always store (sessionId is the key)\n // For stateless transports, also store (transport instance is the key)\n setSessionData(transport, sessionData);\n}\n\n/**\n * Updates session data for a transport (merges with existing data)\n * @param transport - MCP transport instance\n * @param partialSessionData - Partial session data to merge with existing data\n */\nexport function updateSessionDataForTransport(transport: MCPTransport, partialSessionData: Partial): void {\n const existingData = getSessionData(transport) || {};\n setSessionData(transport, { ...existingData, ...partialSessionData });\n}\n\n/**\n * Retrieves client information for a transport\n * @param transport - MCP transport instance\n * @returns Client information if available\n */\nexport function getClientInfoForTransport(transport: MCPTransport): PartyInfo | undefined {\n return getSessionData(transport)?.clientInfo;\n}\n\n/**\n * Retrieves protocol version for a transport\n * @param transport - MCP transport instance\n * @returns Protocol version if available\n */\nexport function getProtocolVersionForTransport(transport: MCPTransport): string | undefined {\n return getSessionData(transport)?.protocolVersion;\n}\n\n/**\n * Retrieves full session data for a transport\n * @param transport - MCP transport instance\n * @returns Complete session data if available\n */\nexport function getSessionDataForTransport(transport: MCPTransport): SessionData | undefined {\n return getSessionData(transport);\n}\n\n/**\n * Cleans up session data for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupSessionDataForTransport(transport: MCPTransport): void {\n const sessionId = transport.sessionId;\n if (sessionId) {\n sessionToSessionData.delete(sessionId);\n }\n // Note: WeakMap entries are automatically cleaned up when transport is GC'd\n // No explicit delete needed for statelessSessionData\n}\n","/**\n * Session and party info extraction functions for MCP server instrumentation\n *\n * Handles extraction of client/server info and session data from MCP messages.\n */\n\nimport {\n CLIENT_ADDRESS_ATTRIBUTE,\n CLIENT_PORT_ATTRIBUTE,\n MCP_PROTOCOL_VERSION_ATTRIBUTE,\n MCP_SERVER_NAME_ATTRIBUTE,\n MCP_SERVER_TITLE_ATTRIBUTE,\n MCP_SERVER_VERSION_ATTRIBUTE,\n MCP_SESSION_ID_ATTRIBUTE,\n MCP_TRANSPORT_ATTRIBUTE,\n NETWORK_PROTOCOL_VERSION_ATTRIBUTE,\n NETWORK_TRANSPORT_ATTRIBUTE,\n} from './attributes';\nimport {\n getClientInfoForTransport,\n getProtocolVersionForTransport,\n getSessionDataForTransport,\n} from './sessionManagement';\nimport type { ExtraHandlerData, JsonRpcRequest, MCPTransport, PartyInfo, SessionData } from './types';\nimport { isValidContentItem } from './validation';\n\n/**\n * Extracts and validates PartyInfo from an unknown object\n * @param obj - Unknown object that might contain party info\n * @returns Validated PartyInfo object with only string properties\n */\nfunction extractPartyInfo(obj: unknown): PartyInfo {\n const partyInfo: PartyInfo = {};\n\n if (isValidContentItem(obj)) {\n if (typeof obj.name === 'string') {\n partyInfo.name = obj.name;\n }\n if (typeof obj.title === 'string') {\n partyInfo.title = obj.title;\n }\n if (typeof obj.version === 'string') {\n partyInfo.version = obj.version;\n }\n }\n\n return partyInfo;\n}\n\n/**\n * Extracts session data from \"initialize\" requests\n * @param request - JSON-RPC \"initialize\" request containing client info and protocol version\n * @returns Session data extracted from request parameters including protocol version and client info\n */\nexport function extractSessionDataFromInitializeRequest(request: JsonRpcRequest): SessionData {\n const sessionData: SessionData = {};\n if (isValidContentItem(request.params)) {\n if (typeof request.params.protocolVersion === 'string') {\n sessionData.protocolVersion = request.params.protocolVersion;\n }\n if (request.params.clientInfo) {\n sessionData.clientInfo = extractPartyInfo(request.params.clientInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Extracts session data from \"initialize\" response\n * @param result - \"initialize\" response result containing server info and protocol version\n * @returns Partial session data extracted from response including protocol version and server info\n */\nexport function extractSessionDataFromInitializeResponse(result: unknown): Partial {\n const sessionData: Partial = {};\n if (isValidContentItem(result)) {\n if (typeof result.protocolVersion === 'string') {\n sessionData.protocolVersion = result.protocolVersion;\n }\n if (result.serverInfo) {\n sessionData.serverInfo = extractPartyInfo(result.serverInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Build client attributes from stored client info\n * @param transport - MCP transport instance\n * @returns Client attributes for span instrumentation\n */\nexport function getClientAttributes(transport: MCPTransport): Record {\n const clientInfo = getClientInfoForTransport(transport);\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build client attributes from PartyInfo directly\n * @param clientInfo - Client party info\n * @returns Client attributes for span instrumentation\n */\nexport function buildClientAttributesFromInfo(clientInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from stored server info\n * @param transport - MCP transport instance\n * @returns Server attributes for span instrumentation\n */\nexport function getServerAttributes(transport: MCPTransport): Record {\n const serverInfo = getSessionDataForTransport(transport)?.serverInfo;\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from PartyInfo directly\n * @param serverInfo - Server party info\n * @returns Server attributes for span instrumentation\n */\nexport function buildServerAttributesFromInfo(serverInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Extracts client connection info from extra handler data\n * @param extra - Extra handler data containing connection info\n * @returns Client address and port information\n */\nexport function extractClientInfo(extra: ExtraHandlerData): {\n address?: string;\n port?: number;\n} {\n return {\n address:\n extra?.requestInfo?.remoteAddress ||\n extra?.clientAddress ||\n extra?.request?.ip ||\n extra?.request?.connection?.remoteAddress,\n port: extra?.requestInfo?.remotePort || extra?.clientPort || extra?.request?.connection?.remotePort,\n };\n}\n\n/**\n * Extracts transport types based on transport constructor name\n * @param transport - MCP transport instance\n * @returns Transport type mapping for span attributes\n */\nexport function getTransportTypes(transport: MCPTransport): { mcpTransport: string; networkTransport: string } {\n if (!transport?.constructor) {\n return { mcpTransport: 'unknown', networkTransport: 'unknown' };\n }\n const transportName = typeof transport.constructor?.name === 'string' ? transport.constructor.name : 'unknown';\n let networkTransport = 'unknown';\n\n const lowerTransportName = transportName.toLowerCase();\n if (lowerTransportName.includes('stdio')) {\n networkTransport = 'pipe';\n } else if (lowerTransportName.includes('http') || lowerTransportName.includes('sse')) {\n networkTransport = 'tcp';\n }\n\n return {\n mcpTransport: transportName,\n networkTransport,\n };\n}\n\n/**\n * Build transport and network attributes\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @returns Transport attributes for span instrumentation\n * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow\n */\nexport function buildTransportAttributes(\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n): Record {\n const sessionId = transport && 'sessionId' in transport ? transport.sessionId : undefined;\n const clientInfo = extra ? extractClientInfo(extra) : {};\n const { mcpTransport, networkTransport } = getTransportTypes(transport);\n const clientAttributes = getClientAttributes(transport);\n const serverAttributes = getServerAttributes(transport);\n const protocolVersion = getProtocolVersionForTransport(transport);\n\n const attributes = {\n ...(sessionId && { [MCP_SESSION_ID_ATTRIBUTE]: sessionId }),\n ...(clientInfo.address && { [CLIENT_ADDRESS_ATTRIBUTE]: clientInfo.address }),\n ...(clientInfo.port && { [CLIENT_PORT_ATTRIBUTE]: clientInfo.port }),\n [MCP_TRANSPORT_ATTRIBUTE]: mcpTransport,\n [NETWORK_TRANSPORT_ATTRIBUTE]: networkTransport,\n [NETWORK_PROTOCOL_VERSION_ATTRIBUTE]: '2.0',\n ...(protocolVersion && { [MCP_PROTOCOL_VERSION_ATTRIBUTE]: protocolVersion }),\n ...clientAttributes,\n ...serverAttributes,\n };\n\n return attributes;\n}\n","/**\n * Request-span correlation system for MCP server instrumentation\n *\n * Handles mapping requestId to span data for correlation with handler execution.\n *\n * Uses sessionId as the primary key for stateful transports. This handles the wrapper\n * transport pattern (e.g., NodeStreamableHTTPServerTransport wrapping WebStandardStreamableHTTPServerTransport)\n * where onmessage and send may receive different `this` values but share the same sessionId.\n *\n * Falls back to WeakMap by transport instance for stateless transports (no sessionId).\n */\n\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { extractPromptResultAttributes, extractToolResultAttributes } from './resultExtraction';\nimport { buildServerAttributesFromInfo, extractSessionDataFromInitializeResponse } from './sessionExtraction';\nimport type { MCPTransport, RequestId, RequestSpanMapValue, ResolvedMcpOptions } from './types';\n\n/**\n * Session-scoped correlation for stateful transports (with sessionId)\n * @internal Using sessionId as key handles wrapper transport patterns where\n * different transport objects share the same logical session\n */\nconst sessionToSpanMap = new Map>();\n\n/**\n * Transport-scoped correlation fallback for stateless transports (no sessionId)\n * @internal WeakMap allows automatic cleanup when transport is garbage collected\n */\nconst statelessSpanMap = new WeakMap>();\n\n/**\n * Gets or creates the span map for a transport, using sessionId when available\n * @internal\n * @param transport - MCP transport instance\n * @returns Span map for the transport/session\n */\nfunction getOrCreateSpanMap(transport: MCPTransport): Map {\n const sessionId = transport.sessionId;\n\n if (sessionId) {\n // Stateful transport - use sessionId as key (handles wrapper pattern)\n let spanMap = sessionToSpanMap.get(sessionId);\n if (!spanMap) {\n spanMap = new Map();\n sessionToSpanMap.set(sessionId, spanMap);\n }\n return spanMap;\n }\n\n // Stateless fallback - use transport instance as key\n let spanMap = statelessSpanMap.get(transport);\n if (!spanMap) {\n spanMap = new Map();\n statelessSpanMap.set(transport, spanMap);\n }\n return spanMap;\n}\n\n/**\n * Stores span context for later correlation with handler execution\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param span - Active span to correlate\n * @param method - MCP method name\n */\nexport function storeSpanForRequest(transport: MCPTransport, requestId: RequestId, span: Span, method: string): void {\n const spanMap = getOrCreateSpanMap(transport);\n spanMap.set(requestId, {\n span,\n method,\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n startTime: Date.now(),\n });\n}\n\n/**\n * Completes span with results and cleans up correlation\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param result - Execution result for attribute extraction\n * @param options - Resolved MCP options\n */\nexport function completeSpanWithResults(\n transport: MCPTransport,\n requestId: RequestId,\n result: unknown,\n options: ResolvedMcpOptions,\n): void {\n const spanMap = getOrCreateSpanMap(transport);\n const spanData = spanMap.get(requestId);\n if (spanData) {\n const { span, method } = spanData;\n\n if (method === 'initialize') {\n const sessionData = extractSessionDataFromInitializeResponse(result);\n const serverAttributes = buildServerAttributesFromInfo(sessionData.serverInfo);\n\n const initAttributes: Record = {\n ...serverAttributes,\n };\n if (sessionData.protocolVersion) {\n initAttributes[MCP_PROTOCOL_VERSION_ATTRIBUTE] = sessionData.protocolVersion;\n }\n\n span.setAttributes(initAttributes);\n } else if (method === 'tools/call') {\n const toolAttributes = extractToolResultAttributes(result, options.recordOutputs);\n span.setAttributes(toolAttributes);\n } else if (method === 'prompts/get') {\n const promptAttributes = extractPromptResultAttributes(result, options.recordOutputs);\n span.setAttributes(promptAttributes);\n }\n\n span.end();\n spanMap.delete(requestId);\n }\n}\n\n/**\n * Cleans up pending spans for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupPendingSpansForTransport(transport: MCPTransport): void {\n const sessionId = transport.sessionId;\n\n // Try sessionId-based cleanup first (for stateful transports)\n if (sessionId) {\n const spanMap = sessionToSpanMap.get(sessionId);\n if (spanMap) {\n for (const [, spanData] of spanMap) {\n spanData.span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'cancelled',\n });\n spanData.span.end();\n }\n sessionToSpanMap.delete(sessionId);\n }\n return;\n }\n\n // Fallback to transport-based cleanup (for stateless transports)\n const spanMap = statelessSpanMap.get(transport);\n if (spanMap) {\n for (const [, spanData] of spanMap) {\n spanData.span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'cancelled',\n });\n spanData.span.end();\n }\n spanMap.clear();\n // Note: WeakMap entries are automatically cleaned up when transport is GC'd\n }\n}\n","/**\n * Method configuration and request processing for MCP server instrumentation\n */\n\nimport {\n MCP_PROMPT_NAME_ATTRIBUTE,\n MCP_REQUEST_ARGUMENT,\n MCP_RESOURCE_URI_ATTRIBUTE,\n MCP_TOOL_NAME_ATTRIBUTE,\n} from './attributes';\nimport type { MethodConfig } from './types';\n\n/**\n * Configuration for MCP methods to extract targets and arguments\n * @internal Maps method names to their extraction configuration\n */\nconst METHOD_CONFIGS: Record = {\n 'tools/call': {\n targetField: 'name',\n targetAttribute: MCP_TOOL_NAME_ATTRIBUTE,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n 'resources/read': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n captureUri: true,\n },\n 'resources/subscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'resources/unsubscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'prompts/get': {\n targetField: 'name',\n targetAttribute: MCP_PROMPT_NAME_ATTRIBUTE,\n captureName: true,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n};\n\n/**\n * Extracts target info from method and params based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Target name and attributes for span instrumentation\n */\nexport function extractTargetInfo(\n method: string,\n params: Record,\n): {\n target?: string;\n attributes: Record;\n} {\n const config = METHOD_CONFIGS[method];\n if (!config) {\n return { attributes: {} };\n }\n\n const target =\n config.targetField && typeof params?.[config.targetField] === 'string'\n ? (params[config.targetField] as string)\n : undefined;\n\n return {\n target,\n attributes: target && config.targetAttribute ? { [config.targetAttribute]: target } : {},\n };\n}\n\n/**\n * Extracts request arguments based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Arguments as span attributes with mcp.request.argument prefix\n */\nexport function getRequestArguments(method: string, params: Record): Record {\n const args: Record = {};\n const config = METHOD_CONFIGS[method];\n\n if (!config) {\n return args;\n }\n\n if (config.captureArguments && config.argumentsField && params?.[config.argumentsField]) {\n const argumentsObj = params[config.argumentsField];\n if (typeof argumentsObj === 'object' && argumentsObj !== null) {\n for (const [key, value] of Object.entries(argumentsObj as Record)) {\n args[`${MCP_REQUEST_ARGUMENT}.${key.toLowerCase()}`] = JSON.stringify(value);\n }\n }\n }\n\n if (config.captureUri && params?.uri) {\n args[`${MCP_REQUEST_ARGUMENT}.uri`] = JSON.stringify(params.uri);\n }\n\n if (config.captureName && params?.name) {\n args[`${MCP_REQUEST_ARGUMENT}.name`] = JSON.stringify(params.name);\n }\n\n return args;\n}\n","/**\n * Core attribute extraction and building functions for MCP server instrumentation\n */\n\nimport { isURLObjectRelative, parseStringToURLObject } from '../../utils/url';\nimport {\n MCP_LOGGING_DATA_TYPE_ATTRIBUTE,\n MCP_LOGGING_LEVEL_ATTRIBUTE,\n MCP_LOGGING_LOGGER_ATTRIBUTE,\n MCP_LOGGING_MESSAGE_ATTRIBUTE,\n MCP_REQUEST_ID_ATTRIBUTE,\n MCP_RESOURCE_URI_ATTRIBUTE,\n} from './attributes';\nimport { extractTargetInfo, getRequestArguments } from './methodConfig';\nimport type { JsonRpcNotification, JsonRpcRequest, McpSpanType } from './types';\n\n/**\n * Formats logging data for span attributes\n * @internal\n */\nfunction formatLoggingData(data: unknown): string {\n return typeof data === 'string' ? data : JSON.stringify(data);\n}\n\n/**\n * Extracts additional attributes for specific notification types\n * @param method - Notification method name\n * @param params - Notification parameters\n * @param recordInputs - Whether to include actual content or just metadata\n * @returns Method-specific attributes for span instrumentation\n */\nexport function getNotificationAttributes(\n method: string,\n params: Record,\n recordInputs?: boolean,\n): Record {\n const attributes: Record = {};\n\n switch (method) {\n case 'notifications/cancelled':\n if (params?.requestId) {\n attributes['mcp.cancelled.request_id'] = String(params.requestId);\n }\n if (params?.reason) {\n attributes['mcp.cancelled.reason'] = String(params.reason);\n }\n break;\n\n case 'notifications/message':\n if (params?.level) {\n attributes[MCP_LOGGING_LEVEL_ATTRIBUTE] = String(params.level);\n }\n if (params?.logger) {\n attributes[MCP_LOGGING_LOGGER_ATTRIBUTE] = String(params.logger);\n }\n if (params?.data !== undefined) {\n attributes[MCP_LOGGING_DATA_TYPE_ATTRIBUTE] = typeof params.data;\n if (recordInputs) {\n attributes[MCP_LOGGING_MESSAGE_ATTRIBUTE] = formatLoggingData(params.data);\n }\n }\n break;\n\n case 'notifications/progress':\n if (params?.progressToken) {\n attributes['mcp.progress.token'] = String(params.progressToken);\n }\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.current'] = params.progress;\n }\n if (typeof params?.total === 'number') {\n attributes['mcp.progress.total'] = params.total;\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.percentage'] = (params.progress / params.total) * 100;\n }\n }\n if (params?.message) {\n attributes['mcp.progress.message'] = String(params.message);\n }\n break;\n\n case 'notifications/resources/updated':\n if (params?.uri) {\n attributes[MCP_RESOURCE_URI_ATTRIBUTE] = String(params.uri);\n const urlObject = parseStringToURLObject(String(params.uri));\n if (urlObject && !isURLObjectRelative(urlObject)) {\n attributes['mcp.resource.protocol'] = urlObject.protocol.replace(':', '');\n }\n }\n break;\n\n case 'notifications/initialized':\n attributes['mcp.lifecycle.phase'] = 'initialization_complete';\n attributes['mcp.protocol.ready'] = 1;\n break;\n }\n\n return attributes;\n}\n\n/**\n * Build type-specific attributes based on message type\n * @param type - Span type (request or notification)\n * @param message - JSON-RPC message\n * @param params - Optional parameters for attribute extraction\n * @param recordInputs - Whether to capture input arguments in spans\n * @returns Type-specific attributes for span instrumentation\n */\nexport function buildTypeSpecificAttributes(\n type: McpSpanType,\n message: JsonRpcRequest | JsonRpcNotification,\n params?: Record,\n recordInputs?: boolean,\n): Record {\n if (type === 'request') {\n const request = message as JsonRpcRequest;\n const targetInfo = extractTargetInfo(request.method, params || {});\n\n return {\n ...(request.id !== undefined && { [MCP_REQUEST_ID_ATTRIBUTE]: String(request.id) }),\n ...targetInfo.attributes,\n ...(recordInputs ? getRequestArguments(request.method, params || {}) : {}),\n };\n }\n\n return getNotificationAttributes(message.method, params || {}, recordInputs);\n}\n\n// Re-export buildTransportAttributes for spans.ts\nexport { buildTransportAttributes } from './sessionExtraction';\n","/**\n * PII filtering for MCP server spans\n *\n * Removes network-level sensitive data when sendDefaultPii is false.\n * Input/output data (request arguments, tool/prompt results) is controlled\n * separately via recordInputs/recordOutputs options.\n */\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport { CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE } from './attributes';\n\n/**\n * Network PII attributes that should be removed when sendDefaultPii is false\n * @internal\n */\nconst NETWORK_PII_ATTRIBUTES = new Set([CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE]);\n\n/**\n * Checks if an attribute key should be considered network PII.\n *\n * Returns true for:\n * - client.address (IP address)\n * - client.port (port number)\n * - mcp.resource.uri (potentially sensitive URIs)\n *\n * @param key - Attribute key to evaluate\n * @returns true if the attribute should be filtered out (is network PII), false if it should be preserved\n * @internal\n */\nfunction isNetworkPiiAttribute(key: string): boolean {\n return NETWORK_PII_ATTRIBUTES.has(key);\n}\n\n/**\n * Removes network PII attributes from span data when sendDefaultPii is false\n * @param spanData - Raw span attributes\n * @param sendDefaultPii - Whether to include PII data\n * @returns Filtered span attributes\n */\nexport function filterMcpPiiFromSpanData(\n spanData: Record,\n sendDefaultPii: boolean,\n): Record {\n if (sendDefaultPii) {\n return spanData as Record;\n }\n\n return Object.entries(spanData).reduce(\n (acc, [key, value]) => {\n if (!isNetworkPiiAttribute(key)) {\n acc[key] = value as SpanAttributeValue;\n }\n return acc;\n },\n {} as Record,\n );\n}\n","/**\n * Span creation and management functions for MCP server instrumentation\n *\n * Provides unified span creation following OpenTelemetry MCP semantic conventions and our opinitionated take on MCP.\n * Handles both request and notification spans with attribute extraction.\n */\n\nimport { getClient } from '../../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../../semanticAttributes';\nimport { startSpan } from '../../tracing';\nimport { buildTransportAttributes, buildTypeSpecificAttributes } from './attributeExtraction';\nimport {\n MCP_FUNCTION_ORIGIN_VALUE,\n MCP_METHOD_NAME_ATTRIBUTE,\n MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE,\n MCP_NOTIFICATION_ORIGIN_VALUE,\n MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE,\n MCP_ROUTE_SOURCE_VALUE,\n MCP_SERVER_OP_VALUE,\n} from './attributes';\nimport { extractTargetInfo } from './methodConfig';\nimport { filterMcpPiiFromSpanData } from './piiFiltering';\nimport type {\n ExtraHandlerData,\n JsonRpcNotification,\n JsonRpcRequest,\n McpSpanConfig,\n MCPTransport,\n ResolvedMcpOptions,\n} from './types';\n\n/**\n * Creates a span name based on the method and target\n * @internal\n * @param method - MCP method name\n * @param target - Optional target identifier\n * @returns Formatted span name\n */\nfunction createSpanName(method: string, target?: string): string {\n return target ? `${method} ${target}` : method;\n}\n\n/**\n * Build Sentry-specific attributes based on span type\n * @internal\n * @param type - Span type configuration\n * @returns Sentry-specific attributes\n */\nfunction buildSentryAttributes(type: McpSpanConfig['type']): Record {\n let op: string;\n let origin: string;\n\n switch (type) {\n case 'request':\n op = MCP_SERVER_OP_VALUE;\n origin = MCP_FUNCTION_ORIGIN_VALUE;\n break;\n case 'notification-incoming':\n op = MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n case 'notification-outgoing':\n op = MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: MCP_ROUTE_SOURCE_VALUE,\n };\n}\n\n/**\n * Unified builder for creating MCP spans\n * @internal\n * @param config - Span configuration\n * @returns Created span\n */\nfunction createMcpSpan(config: McpSpanConfig): unknown {\n const { type, message, transport, extra, callback, options } = config;\n const { method } = message;\n const params = message.params;\n\n // Determine span name based on type and OTEL conventions\n let spanName: string;\n if (type === 'request') {\n const targetInfo = extractTargetInfo(method, params || {});\n spanName = createSpanName(method, targetInfo.target);\n } else {\n // For notifications, use method name directly per OpenTelemetry conventions\n spanName = method;\n }\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes(type, message, params, options?.recordInputs),\n ...buildSentryAttributes(type),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return startSpan(\n {\n name: spanName,\n forceTransaction: true,\n attributes,\n },\n callback,\n );\n}\n\n/**\n * Creates a span for incoming MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param extra - Extra handler data\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n extra: ExtraHandlerData,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-incoming',\n message: jsonRpcMessage,\n transport,\n extra,\n callback,\n options,\n });\n}\n\n/**\n * Creates a span for outgoing MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpOutgoingNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-outgoing',\n message: jsonRpcMessage,\n transport,\n options,\n callback,\n });\n}\n\n/**\n * Builds span configuration for MCP server requests\n * @param jsonRpcMessage - Request message\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @param options - Resolved MCP options\n * @returns Span configuration object\n */\nexport function buildMcpServerSpanConfig(\n jsonRpcMessage: JsonRpcRequest,\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n options?: ResolvedMcpOptions,\n): {\n name: string;\n op: string;\n forceTransaction: boolean;\n attributes: Record;\n} {\n const { method } = jsonRpcMessage;\n const params = jsonRpcMessage.params;\n\n const targetInfo = extractTargetInfo(method, params || {});\n const spanName = createSpanName(method, targetInfo.target);\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes('request', jsonRpcMessage, params, options?.recordInputs),\n ...buildSentryAttributes('request'),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return {\n name: spanName,\n op: MCP_SERVER_OP_VALUE,\n forceTransaction: true,\n attributes,\n };\n}\n","/**\n * Transport layer instrumentation for MCP server\n *\n * Handles message interception and response correlation.\n * @see https://modelcontextprotocol.io/specification/2025-06-18/basic/transports\n */\n\nimport { getIsolationScope, withIsolationScope } from '../../currentScopes';\nimport { startInactiveSpan, withActiveSpan } from '../../tracing';\nimport { fill } from '../../utils/object';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { cleanupPendingSpansForTransport, completeSpanWithResults, storeSpanForRequest } from './correlation';\nimport { captureError } from './errorCapture';\nimport {\n buildClientAttributesFromInfo,\n extractSessionDataFromInitializeRequest,\n extractSessionDataFromInitializeResponse,\n} from './sessionExtraction';\nimport {\n cleanupSessionDataForTransport,\n storeSessionDataForTransport,\n updateSessionDataForTransport,\n} from './sessionManagement';\nimport { buildMcpServerSpanConfig, createMcpNotificationSpan, createMcpOutgoingNotificationSpan } from './spans';\nimport type { ExtraHandlerData, MCPTransport, ResolvedMcpOptions, SessionData } from './types';\nimport { isJsonRpcNotification, isJsonRpcRequest, isJsonRpcResponse, isValidContentItem } from './validation';\n\n/**\n * Wraps transport.onmessage to create spans for incoming messages.\n * For \"initialize\" requests, extracts and stores client info and protocol version\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportOnMessage(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.onmessage) {\n fill(transport, 'onmessage', originalOnMessage => {\n return function (this: MCPTransport, message: unknown, extra?: unknown) {\n if (isJsonRpcRequest(message)) {\n const isInitialize = message.method === 'initialize';\n let initSessionData: SessionData | undefined;\n\n if (isInitialize) {\n try {\n initSessionData = extractSessionDataFromInitializeRequest(message);\n storeSessionDataForTransport(this, initSessionData);\n } catch {\n // noop\n }\n }\n\n const isolationScope = getIsolationScope().clone();\n\n return withIsolationScope(isolationScope, () => {\n const spanConfig = buildMcpServerSpanConfig(message, this, extra as ExtraHandlerData, options);\n const span = startInactiveSpan(spanConfig);\n\n // For initialize requests, add client info directly to span (works even for stateless transports)\n if (isInitialize && initSessionData) {\n span.setAttributes({\n ...buildClientAttributesFromInfo(initSessionData.clientInfo),\n ...(initSessionData.protocolVersion && {\n [MCP_PROTOCOL_VERSION_ATTRIBUTE]: initSessionData.protocolVersion,\n }),\n });\n }\n\n storeSpanForRequest(this, message.id, span, message.method);\n\n return withActiveSpan(span, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n });\n }\n\n if (isJsonRpcNotification(message)) {\n return createMcpNotificationSpan(message, this, extra as ExtraHandlerData, options, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n }\n\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n };\n });\n }\n}\n\n/**\n * Wraps transport.send to handle outgoing messages and response correlation.\n * For \"initialize\" responses, extracts and stores protocol version and server info\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportSend(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.send) {\n fill(transport, 'send', originalSend => {\n return async function (this: MCPTransport, ...args: unknown[]) {\n const [message] = args;\n\n if (isJsonRpcNotification(message)) {\n return createMcpOutgoingNotificationSpan(message, this, options, () => {\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n });\n }\n\n if (isJsonRpcResponse(message)) {\n if (message.id !== null && message.id !== undefined) {\n if (message.error) {\n captureJsonRpcErrorResponse(message.error);\n }\n\n if (isValidContentItem(message.result)) {\n if (message.result.protocolVersion || message.result.serverInfo) {\n try {\n const serverData = extractSessionDataFromInitializeResponse(message.result);\n updateSessionDataForTransport(this, serverData);\n } catch {\n // noop\n }\n }\n }\n\n completeSpanWithResults(this, message.id, message.result, options);\n }\n }\n\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport.onclose to clean up pending spans for this transport only\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportOnClose(transport: MCPTransport): void {\n if (transport.onclose) {\n fill(transport, 'onclose', originalOnClose => {\n return function (this: MCPTransport, ...args: unknown[]) {\n cleanupPendingSpansForTransport(this);\n cleanupSessionDataForTransport(this);\n return (originalOnClose as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport error handlers to capture connection errors\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportError(transport: MCPTransport): void {\n if (transport.onerror) {\n fill(transport, 'onerror', (originalOnError: (error: Error) => void) => {\n return function (this: MCPTransport, error: Error) {\n captureTransportError(error);\n return originalOnError.call(this, error);\n };\n });\n }\n}\n\n/**\n * Captures JSON-RPC error responses for server-side errors.\n * @see https://www.jsonrpc.org/specification#error_object\n * @internal\n * @param errorResponse - JSON-RPC error response\n */\nfunction captureJsonRpcErrorResponse(errorResponse: unknown): void {\n try {\n if (errorResponse && typeof errorResponse === 'object' && 'code' in errorResponse && 'message' in errorResponse) {\n const jsonRpcError = errorResponse as { code: number; message: string; data?: unknown };\n\n const isServerError =\n jsonRpcError.code === -32603 || (jsonRpcError.code >= -32099 && jsonRpcError.code <= -32000);\n\n if (isServerError) {\n const error = new Error(jsonRpcError.message);\n error.name = `JsonRpcError_${jsonRpcError.code}`;\n\n captureError(error, 'protocol');\n }\n }\n } catch {\n // noop\n }\n}\n\n/**\n * Captures transport connection errors\n * @internal\n * @param error - Transport error\n */\nfunction captureTransportError(error: Error): void {\n try {\n captureError(error, 'transport');\n } catch {\n // noop\n }\n}\n","import { getClient } from '../../currentScopes';\nimport { fill } from '../../utils/object';\nimport { wrapAllMCPHandlers } from './handlers';\nimport { wrapTransportError, wrapTransportOnClose, wrapTransportOnMessage, wrapTransportSend } from './transport';\nimport type { MCPServerInstance, McpServerWrapperOptions, MCPTransport, ResolvedMcpOptions } from './types';\nimport { validateMcpServerInstance } from './validation';\n\n/**\n * Tracks wrapped MCP server instances to prevent double-wrapping\n * @internal\n */\nconst wrappedMcpServerInstances = new WeakSet();\n\n/**\n * Wraps a MCP Server instance from the `@modelcontextprotocol/sdk` package with Sentry instrumentation.\n *\n * Compatible with versions `^1.9.0` of the `@modelcontextprotocol/sdk` package.\n * Automatically instruments transport methods and handler functions for comprehensive monitoring.\n *\n * @example\n * ```typescript\n * import * as Sentry from '@sentry/core';\n * import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n * import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\n *\n * // Default: inputs/outputs captured based on sendDefaultPii option\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" })\n * );\n *\n * // Explicitly control input/output capture\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" }),\n * { recordInputs: true, recordOutputs: false }\n * );\n *\n * const transport = new StreamableHTTPServerTransport();\n * await server.connect(transport);\n * ```\n *\n * @param mcpServerInstance - MCP server instance to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns Instrumented server instance (same reference)\n */\nexport function wrapMcpServerWithSentry(mcpServerInstance: S, options?: McpServerWrapperOptions): S {\n if (wrappedMcpServerInstances.has(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n if (!validateMcpServerInstance(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n const serverInstance = mcpServerInstance as MCPServerInstance;\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n\n const resolvedOptions: ResolvedMcpOptions = {\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n };\n\n fill(serverInstance, 'connect', originalConnect => {\n return async function (this: MCPServerInstance, transport: MCPTransport, ...restArgs: unknown[]) {\n const result = await (originalConnect as (...args: unknown[]) => Promise).call(\n this,\n transport,\n ...restArgs,\n );\n\n wrapTransportOnMessage(transport, resolvedOptions);\n wrapTransportSend(transport, resolvedOptions);\n wrapTransportOnClose(transport);\n wrapTransportError(transport);\n\n return result;\n };\n });\n\n wrapAllMCPHandlers(serverInstance);\n\n wrappedMcpServerInstances.add(mcpServerInstance);\n return mcpServerInstance;\n}\n","import { getClient, getCurrentScope } from './currentScopes';\nimport type { EventHint } from './types-hoist/event';\nimport type { FeedbackEvent, SendFeedbackParams } from './types-hoist/feedback';\n\n/**\n * Send user feedback to Sentry.\n */\nexport function captureFeedback(\n params: SendFeedbackParams,\n hint: EventHint & { includeReplay?: boolean } = {},\n scope = getCurrentScope(),\n): string {\n const { message, name, email, url, source, associatedEventId, tags } = params;\n\n const feedbackEvent: FeedbackEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n associated_event_id: associatedEventId,\n },\n },\n type: 'feedback',\n level: 'info',\n tags,\n };\n\n const client = scope?.getClient() || getClient();\n\n if (client) {\n client.emit('beforeSendFeedback', feedbackEvent, hint);\n }\n\n const eventId = scope.captureEvent(feedbackEvent, hint);\n\n return eventId;\n}\n","import type { Scope } from '../scope';\nimport type { Log, LogSeverityLevel } from '../types-hoist/log';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport { _INTERNAL_captureLog } from './internal';\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n * @param scope - The scope to capture the log with.\n * @param severityNumber - The severity number of the log.\n */\nfunction captureLog(\n level: LogSeverityLevel,\n message: ParameterizedString,\n attributes?: Log['attributes'],\n scope?: Scope,\n severityNumber?: Log['severityNumber'],\n): void {\n _INTERNAL_captureLog({ level, message, attributes, severityNumber }, scope);\n}\n\n/**\n * Additional metadata to capture the log with.\n */\ninterface CaptureLogMetadata {\n scope?: Scope;\n}\n\n/**\n * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { userId: 100, route: '/dashboard' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('User clicked submit button', {\n * buttonId: 'submit-form',\n * formId: 'user-profile',\n * timestamp: Date.now()\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace(Sentry.logger.fmt`User ${user} navigated to ${page}`, {\n * userId: '123',\n * sessionId: 'abc-xyz'\n * });\n * ```\n */\nexport function trace(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('trace', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { component: 'Header', state: 'loading' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Component mounted', {\n * component: 'UserProfile',\n * props: { userId: 123 },\n * renderTime: 150\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug(Sentry.logger.fmt`API request to ${endpoint} failed`, {\n * statusCode: 404,\n * requestId: 'req-123',\n * duration: 250\n * });\n * ```\n */\nexport function debug(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('debug', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { feature: 'checkout', status: 'completed' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User completed checkout', {\n * orderId: 'order-123',\n * amount: 99.99,\n * paymentMethod: 'credit_card'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info(Sentry.logger.fmt`User ${user} updated profile picture`, {\n * userId: 'user-123',\n * imageSize: '2.5MB',\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function info(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('info', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { browser: 'Chrome', version: '91.0' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Browser compatibility issue detected', {\n * browser: 'Safari',\n * version: '14.0',\n * feature: 'WebRTC',\n * fallback: 'enabled'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn(Sentry.logger.fmt`API endpoint ${endpoint} is deprecated`, {\n * recommendedEndpoint: '/api/v2/users',\n * sunsetDate: '2024-12-31',\n * clientVersion: '1.2.3'\n * });\n * ```\n */\nexport function warn(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('warn', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { error: 'NetworkError', url: '/api/data' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to load user data', {\n * error: 'NetworkError',\n * url: '/api/users/123',\n * statusCode: 500,\n * retryCount: 3\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error(Sentry.logger.fmt`Payment processing failed for order ${orderId}`, {\n * error: 'InsufficientFunds',\n * amount: 100.00,\n * currency: 'USD',\n * userId: 'user-456'\n * });\n * ```\n */\nexport function error(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('error', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { appState: 'corrupted', sessionId: 'abc-123' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Application state corrupted', {\n * lastKnownState: 'authenticated',\n * sessionId: 'session-123',\n * timestamp: Date.now(),\n * recoveryAttempted: true\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal(Sentry.logger.fmt`Critical system failure in ${service}`, {\n * service: 'payment-processor',\n * errorCode: 'CRITICAL_FAILURE',\n * affectedUsers: 150,\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function fatal(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('fatal', message, attributes, scope);\n}\n\nexport { fmt } from '../utils/parameterize';\n","import { isPrimitive } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\n/**\n * Formats the given values into a string.\n *\n * @param values - The values to format.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The formatted string.\n */\nexport function formatConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth);\n}\n\n/**\n * Joins the given values into a string.\n *\n * @param values - The values to join.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The joined string.\n */\nexport function safeJoinConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return values\n .map(value =>\n isPrimitive(value) ? String(value) : JSON.stringify(normalize(value, normalizeDepth, normalizeMaxBreadth)),\n )\n .join(' ');\n}\n\n/**\n * Checks if a string contains console substitution patterns like %s, %d, %i, %f, %o, %O, %c.\n *\n * @param str - The string to check\n * @returns true if the string contains console substitution patterns\n */\nexport function hasConsoleSubstitutions(str: string): boolean {\n // Match console substitution patterns: %s, %d, %i, %f, %o, %O, %c\n return /%[sdifocO]/.test(str);\n}\n\n/**\n * Creates template attributes for multiple console arguments.\n *\n * @param args - The console arguments\n * @returns An object with template and parameter attributes\n */\nexport function createConsoleTemplateAttributes(firstArg: unknown, followingArgs: unknown[]): Record {\n const attributes: Record = {};\n\n // Create template with placeholders for each argument\n const template = new Array(followingArgs.length).fill('{}').join(' ');\n attributes['sentry.message.template'] = `${firstArg} ${template}`;\n\n // Add each argument as a parameter\n followingArgs.forEach((arg, index) => {\n attributes[`sentry.message.parameter.${index}`] = arg;\n });\n\n return attributes;\n}\n","import { getClient } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS, debug } from '../utils/debug-logger';\nimport { _INTERNAL_captureLog } from './internal';\nimport { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions } from './utils';\n\ninterface CaptureConsoleOptions {\n levels: ConsoleLevel[];\n}\n\nconst INTEGRATION_NAME = 'ConsoleLogs';\n\nconst DEFAULT_ATTRIBUTES = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.log.console',\n};\n\nconst _consoleLoggingIntegration = ((options: Partial = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const { enableLogs, normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n if (!enableLogs) {\n DEBUG_BUILD && debug.warn('`enableLogs` is not enabled, ConsoleLogs integration disabled');\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n const firstArg = args[0];\n const followingArgs = args.slice(1);\n\n if (level === 'assert') {\n if (!firstArg) {\n const assertionMessage =\n followingArgs.length > 0\n ? `Assertion failed: ${formatConsoleArgs(followingArgs, normalizeDepth, normalizeMaxBreadth)}`\n : 'Assertion failed';\n _INTERNAL_captureLog({ level: 'error', message: assertionMessage, attributes: DEFAULT_ATTRIBUTES });\n }\n return;\n }\n\n const isLevelLog = level === 'log';\n\n const shouldGenerateTemplate =\n args.length > 1 && typeof args[0] === 'string' && !hasConsoleSubstitutions(args[0]);\n const attributes = {\n ...DEFAULT_ATTRIBUTES,\n ...(shouldGenerateTemplate ? createConsoleTemplateAttributes(firstArg, followingArgs) : {}),\n };\n\n _INTERNAL_captureLog({\n level: isLevelLog ? 'info' : level,\n message: formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth),\n severityNumber: isLevelLog ? 10 : undefined,\n attributes,\n });\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Captures calls to the `console` API as logs in Sentry. Requires the `enableLogs` option to be enabled.\n *\n * @experimental This feature is experimental and may be changed or removed in future versions.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```ts\n * import * as Sentry from '@sentry/browser';\n *\n * Sentry.init({\n * enableLogs: true,\n * integrations: [Sentry.consoleLoggingIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleLoggingIntegration = defineIntegration(_consoleLoggingIntegration);\n","import type { Scope } from '../scope';\nimport type { Metric, MetricType } from '../types-hoist/metric';\nimport { _INTERNAL_captureMetric } from './internal';\n\n/**\n * Options for capturing a metric.\n */\nexport interface MetricOptions {\n /**\n * The unit of the metric value.\n */\n unit?: string;\n\n /**\n * Arbitrary structured data that stores information about the metric.\n */\n attributes?: Metric['attributes'];\n\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n}\n\n/**\n * Capture a metric with the given type, name, and value.\n *\n * @param type - The type of the metric.\n * @param name - The name of the metric.\n * @param value - The value of the metric.\n * @param options - Options for capturing the metric.\n */\nfunction captureMetric(type: MetricType, name: string, value: number, options?: MetricOptions): void {\n _INTERNAL_captureMetric(\n { type, name, value, unit: options?.unit, attributes: options?.attributes },\n { scope: options?.scope },\n );\n}\n\n/**\n * @summary Increment a counter metric.\n *\n * @param name - The name of the counter metric.\n * @param value - The value to increment by (defaults to 1).\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.count('api.requests', 1, {\n * attributes: {\n * endpoint: '/api/users',\n * method: 'GET',\n * status: 200\n * }\n * });\n * ```\n *\n * @example With custom value\n *\n * ```\n * Sentry.metrics.count('items.processed', 5, {\n * attributes: {\n * processor: 'batch-processor',\n * queue: 'high-priority'\n * }\n * });\n * ```\n */\nexport function count(name: string, value: number = 1, options?: MetricOptions): void {\n captureMetric('counter', name, value, options);\n}\n\n/**\n * @summary Set a gauge metric to a specific value.\n *\n * @param name - The name of the gauge metric.\n * @param value - The current value of the gauge.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.gauge('memory.usage', 1024, {\n * unit: 'megabyte',\n * attributes: {\n * process: 'web-server',\n * region: 'us-east-1'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.gauge('active.connections', 42, {\n * attributes: {\n * server: 'api-1',\n * protocol: 'websocket'\n * }\n * });\n * ```\n */\nexport function gauge(name: string, value: number, options?: MetricOptions): void {\n captureMetric('gauge', name, value, options);\n}\n\n/**\n * @summary Record a value in a distribution metric.\n *\n * @param name - The name of the distribution metric.\n * @param value - The value to record in the distribution.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.distribution('task.duration', 500, {\n * unit: 'millisecond',\n * attributes: {\n * task: 'data-processing',\n * priority: 'high'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.distribution('batch.size', 100, {\n * attributes: {\n * processor: 'batch-1',\n * type: 'async'\n * }\n * });\n * ```\n */\nexport function distribution(name: string, value: number, options?: MetricOptions): void {\n captureMetric('distribution', name, value, options);\n}\n","import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { _INTERNAL_captureLog } from '../logs/internal';\nimport { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions } from '../logs/utils';\nimport type { LogSeverityLevel } from '../types-hoist/log';\nimport { isPlainObject } from '../utils/is';\nimport { normalize } from '../utils/normalize';\n\n/**\n * Result of extracting structured attributes from console arguments.\n */\ninterface ExtractAttributesResult {\n /**\n * The log message to use for the log entry, typically constructed from the console arguments.\n */\n message?: string;\n\n /**\n * The parameterized template string which is added as `sentry.message.template` attribute if applicable.\n */\n messageTemplate?: string;\n\n /**\n * Remaining arguments to process as attributes with keys like `sentry.message.parameter.0`, `sentry.message.parameter.1`, etc.\n */\n messageParameters?: unknown[];\n\n /**\n * Additional attributes to add to the log.\n */\n attributes?: Record;\n}\n\n/**\n * Options for the Sentry Consola reporter.\n */\ninterface ConsolaReporterOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * consola.addReporter(sentryReporter);\n * ```\n */\n levels?: Array;\n\n /**\n * Optionally provide a specific Sentry client instance to use for capturing logs.\n * If not provided, the current client will be retrieved using `getClient()`.\n *\n * This is useful when you want to use specific client options for log normalization\n * or when working with multiple client instances.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * client: myCustomClient,\n * });\n * ```\n */\n client?: Client;\n}\n\nexport interface ConsolaReporter {\n log: (logObj: ConsolaLogObject) => void;\n}\n\n/**\n * Represents a log object that Consola reporters receive.\n *\n * This interface matches the structure of log objects passed to Consola reporters.\n * See: https://github.com/unjs/consola#custom-reporters\n *\n * @example\n * ```ts\n * const reporter = {\n * log(logObj: ConsolaLogObject) {\n * console.log(`[${logObj.type}] ${logObj.message || logObj.args?.join(' ')}`);\n * }\n * };\n * consola.addReporter(reporter);\n * ```\n */\nexport interface ConsolaLogObject {\n /**\n * Allows additional custom properties to be set on the log object. These properties will be captured as log attributes.\n *\n * Additional properties are set when passing a single object with a `message` (`consola.[type]({ message: '', ... })`) or if the reporter is called directly\n *\n * @example\n * ```ts\n * const reporter = Sentry.createConsolaReporter();\n * reporter.log({\n * type: 'info',\n * message: 'User action',\n * userId: 123,\n * sessionId: 'abc-123'\n * });\n * // Will create attributes: `userId` and `sessionId`\n * ```\n */\n [key: string]: unknown;\n\n /**\n * The numeric log level (0-5) or null.\n *\n * Consola log levels:\n * - 0: Fatal and Error\n * - 1: Warnings\n * - 2: Normal logs\n * - 3: Informational logs, success, fail, ready, start, box, ...\n * - 4: Debug logs\n * - 5: Trace logs\n * - null: Some special types like 'verbose'\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-level\n */\n level?: number | null;\n\n /**\n * The log type/method name (e.g., 'error', 'warn', 'info', 'debug', 'trace', 'success', 'fail', etc.).\n *\n * Consola built-in types include:\n * - Standard: silent, fatal, error, warn, log, info, success, fail, ready, start, box, debug, trace, verbose\n * - Custom types can also be defined\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-types\n */\n type?: string;\n\n /**\n * An optional tag/scope for the log entry.\n *\n * Tags are created using `consola.withTag('scope')` and help categorize logs.\n *\n * @example\n * ```ts\n * const scopedLogger = consola.withTag('auth');\n * scopedLogger.info('User logged in'); // tag will be 'auth'\n * ```\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#withtagtag\n */\n tag?: string;\n\n /**\n * The raw arguments passed to the log method.\n *\n * These args are typically formatted into the final `message`. In Consola reporters, `message` is not provided. See: https://github.com/unjs/consola/issues/406#issuecomment-3684792551\n *\n * @example\n * ```ts\n * consola.info('Hello', 'world', { user: 'john' });\n * // args = ['Hello', 'world', { user: 'john' }]\n * ```\n *\n * @example\n * ```ts\n * // `message` is a reserved property in Consola\n * consola.log({ message: 'Hello' });\n * // args = ['Hello']\n * ```\n */\n args?: unknown[];\n\n /**\n * The timestamp when the log was created.\n *\n * This is automatically set by Consola when the log is created.\n */\n date?: Date;\n\n /**\n * The formatted log message.\n *\n * When provided, this is the final formatted message. When not provided,\n * the message should be constructed from the `args` array.\n *\n * Note: In reporters, `message` is typically undefined. It is primarily for\n * `consola.[type]({ message: 'xxx' })` usage and is normalized into `args` before\n * reporters receive the log object. See: https://github.com/unjs/consola/issues/406#issuecomment-3684792551\n */\n message?: string;\n}\n\nconst DEFAULT_CAPTURED_LEVELS: Array = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n/**\n * Creates a new Sentry reporter for Consola that forwards logs to Sentry. Requires the `enableLogs` option to be enabled.\n *\n * **Note: This integration supports Consola v3.x only.** The reporter interface and log object structure\n * may differ in other versions of Consola.\n *\n * @param options - Configuration options for the reporter.\n * @returns A Consola reporter that can be added to consola instances.\n *\n * @example\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import { consola } from 'consola';\n *\n * Sentry.init({\n * enableLogs: true,\n * });\n *\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Optional: filter levels to capture\n * levels: ['error', 'warn', 'info'],\n * });\n *\n * consola.addReporter(sentryReporter);\n *\n * // Now consola logs will be captured by Sentry\n * consola.info('This will be sent to Sentry');\n * consola.error('This error will also be sent to Sentry');\n * ```\n */\nexport function createConsolaReporter(options: ConsolaReporterOptions = {}): ConsolaReporter {\n const levels = new Set(options.levels ?? DEFAULT_CAPTURED_LEVELS);\n const providedClient = options.client;\n\n return {\n log(logObj: ConsolaLogObject) {\n // We need to exclude certain known properties from being added as additional attributes\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { type, level, message: consolaMessage, args, tag, date: _date, ...rest } = logObj;\n\n // Get client - use provided client or current client\n const client = providedClient || getClient();\n if (!client) {\n return;\n }\n\n // Determine the log severity level\n const logSeverityLevel = getLogSeverityLevel(type, level);\n\n // Early exit if this level should not be captured\n if (!levels.has(logSeverityLevel)) {\n return;\n }\n\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n\n const attributes: Record = {};\n\n // Build attributes\n for (const [key, value] of Object.entries(rest)) {\n attributes[key] = normalize(value, normalizeDepth, normalizeMaxBreadth);\n }\n\n attributes['sentry.origin'] = 'auto.log.consola';\n\n if (tag) {\n attributes['consola.tag'] = tag;\n }\n\n if (type) {\n attributes['consola.type'] = type;\n }\n\n // Only add level if it's a valid number (not null/undefined)\n if (level != null && typeof level === 'number') {\n attributes['consola.level'] = level;\n }\n\n const extractionResult = processExtractedAttributes(\n defaultExtractAttributes(args, normalizeDepth, normalizeMaxBreadth),\n normalizeDepth,\n normalizeMaxBreadth,\n );\n\n if (extractionResult?.attributes) {\n Object.assign(attributes, extractionResult.attributes);\n }\n\n _INTERNAL_captureLog({\n level: logSeverityLevel,\n message:\n extractionResult?.message ||\n consolaMessage ||\n (args && formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth)) ||\n '',\n attributes,\n });\n },\n };\n}\n\n// Mapping from consola log types to Sentry log severity levels\nconst CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n // Consola built-in types\n silent: 'trace',\n fatal: 'fatal',\n error: 'error',\n warn: 'warn',\n log: 'info',\n info: 'info',\n success: 'info',\n fail: 'error',\n ready: 'info',\n start: 'info',\n box: 'info',\n debug: 'debug',\n trace: 'trace',\n verbose: 'debug',\n // Custom types that might exist\n critical: 'fatal',\n notice: 'info',\n};\n\n// Mapping from consola log levels (numbers) to Sentry log severity levels\nconst CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n 0: 'fatal', // Fatal and Error\n 1: 'warn', // Warnings\n 2: 'info', // Normal logs\n 3: 'info', // Informational logs, success, fail, ready, start, ...\n 4: 'debug', // Debug logs\n 5: 'trace', // Trace logs\n};\n\n/**\n * Determines the log severity level from Consola type and level.\n *\n * @param type - The Consola log type (e.g., 'error', 'warn', 'info')\n * @param level - The Consola numeric log level (0-5) or null for some types like 'verbose'\n * @returns The corresponding Sentry log severity level\n */\nfunction getLogSeverityLevel(type?: string, level?: number | null): LogSeverityLevel {\n // Handle special case for verbose logs (level can be null with infinite level in Consola)\n if (type === 'verbose') {\n return 'debug';\n }\n\n // Handle silent logs - these should be at trace level\n if (type === 'silent') {\n return 'trace';\n }\n\n // First try to map by type (more specific)\n if (type) {\n const mappedLevel = CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP[type];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Fallback to level mapping (handle null level)\n if (typeof level === 'number') {\n const mappedLevel = CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[level];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Default fallback\n return 'info';\n}\n\n/**\n * Extracts structured attributes from console arguments. If the first argument is a plain object, its properties are extracted as attributes.\n */\nfunction defaultExtractAttributes(\n args: unknown[] | undefined,\n normalizeDepth: number,\n normalizeMaxBreadth: number,\n): ExtractAttributesResult {\n if (!args?.length) {\n return { message: '' };\n }\n\n // Message looks like how consola logs the message to the console (all args stringified and joined)\n const message = formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth);\n\n const firstArg = args[0];\n\n if (isPlainObject(firstArg)) {\n // Remaining args start from index 2 i f we used second arg as message, otherwise from index 1\n const remainingArgsStartIndex = typeof args[1] === 'string' ? 2 : 1;\n const remainingArgs = args.slice(remainingArgsStartIndex);\n\n return {\n message,\n // Object content from first arg is added as attributes\n attributes: firstArg,\n // Add remaining args as message parameters\n messageParameters: remainingArgs,\n };\n } else {\n const followingArgs = args.slice(1);\n\n const shouldAddTemplateAttr =\n followingArgs.length > 0 && typeof firstArg === 'string' && !hasConsoleSubstitutions(firstArg);\n\n return {\n message,\n messageTemplate: shouldAddTemplateAttr ? firstArg : undefined,\n messageParameters: shouldAddTemplateAttr ? followingArgs : undefined,\n };\n }\n}\n\n/**\n * Processes extracted attributes by normalizing them and preparing message parameter attributes if a template is present.\n */\nfunction processExtractedAttributes(\n extractionResult: ExtractAttributesResult,\n normalizeDepth: number,\n normalizeMaxBreadth: number,\n): { message: string | undefined; attributes: Record } {\n const { message, attributes, messageTemplate, messageParameters } = extractionResult;\n\n const messageParamAttributes: Record = {};\n\n if (messageTemplate && messageParameters) {\n const templateAttrs = createConsoleTemplateAttributes(messageTemplate, messageParameters);\n\n for (const [key, value] of Object.entries(templateAttrs)) {\n messageParamAttributes[key] = key.startsWith('sentry.message.parameter.')\n ? normalize(value, normalizeDepth, normalizeMaxBreadth)\n : value;\n }\n } else if (messageParameters && messageParameters.length > 0) {\n messageParameters.forEach((arg, index) => {\n messageParamAttributes[`sentry.message.parameter.${index}`] = normalize(arg, normalizeDepth, normalizeMaxBreadth);\n });\n }\n\n return {\n message: message,\n attributes: {\n ...normalize(attributes, normalizeDepth, normalizeMaxBreadth),\n ...messageParamAttributes,\n },\n };\n}\n","/**\n * OpenAI Integration Telemetry Attributes\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n */\n\n// =============================================================================\n// OPENTELEMETRY SEMANTIC CONVENTIONS FOR GENAI\n// =============================================================================\n\n/**\n * The input messages sent to the model\n */\nexport const GEN_AI_PROMPT_ATTRIBUTE = 'gen_ai.prompt';\n\n/**\n * The Generative AI system being used\n * For OpenAI, this should always be \"openai\"\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * The name of the model as requested\n * Examples: \"gpt-4\", \"gpt-3.5-turbo\"\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Whether streaming was enabled for the request\n */\nexport const GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream';\n\n/**\n * The temperature setting for the model request\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * The maximum number of tokens requested\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * The frequency penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * The presence penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * The top_p (nucleus sampling) setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * The top_k setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Stop sequences for the model request\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * The encoding format for the model request\n */\nexport const GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format';\n\n/**\n * The dimensions for the model request\n */\nexport const GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions';\n\n/**\n * Array of reasons why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * The name of the model that generated the response\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * The unique identifier for the response\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * The reason why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason';\n\n/**\n * The number of tokens used in the prompt\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * The number of tokens used in the response\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n/**\n * The total number of tokens used (input + output)\n */\nexport const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens';\n\n/**\n * The operation name\n */\nexport const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';\n\n/**\n * Original length of messages array, used to indicate truncations had occured\n */\nexport const GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'sentry.sdk_meta.gen_ai.input.messages.original_length';\n\n/**\n * The prompt messages\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.messages';\n\n/**\n * The model's response messages including text and tool calls\n * Only recorded when recordOutputs is enabled\n * Format: stringified array of message objects with role, parts, and finish_reason\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-output-messages\n */\nexport const GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE = 'gen_ai.output.messages';\n\n/**\n * The system instructions extracted from system messages\n * Only recorded when recordInputs is enabled\n * According to OpenTelemetry spec: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions\n */\nexport const GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions';\n\n/**\n * The response text\n * Only recorded when recordOutputs is enabled\n */\nexport const GEN_AI_RESPONSE_TEXT_ATTRIBUTE = 'gen_ai.response.text';\n\n/**\n * The available tools from incoming request\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools';\n\n/**\n * Whether the response is a streaming response\n */\nexport const GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = 'gen_ai.response.streaming';\n\n/**\n * The tool calls from the response\n * Only recorded when recordOutputs is enabled\n */\nexport const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls';\n\n/**\n * The agent name\n */\nexport const GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name';\n\n/**\n * The pipeline name\n */\nexport const GEN_AI_PIPELINE_NAME_ATTRIBUTE = 'gen_ai.pipeline.name';\n\n/**\n * The conversation ID for linking messages across API calls\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\n/**\n * The number of cache creation input tokens used\n */\nexport const GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_creation_input_tokens';\n\n/**\n * The number of cache read input tokens used\n */\nexport const GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_read_input_tokens';\n\n/**\n * The number of cache write input tokens used\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = 'gen_ai.usage.input_tokens.cache_write';\n\n/**\n * The number of cached input tokens that were used\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = 'gen_ai.usage.input_tokens.cached';\n\n/**\n * The span operation name for invoking an agent\n */\nexport const GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent';\n\n/**\n * The span operation name for generating text\n */\nexport const GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text';\n\n/**\n * The span operation name for streaming text\n */\nexport const GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text';\n\n/**\n * The span operation name for generating object\n */\nexport const GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object';\n\n/**\n * The span operation name for streaming object\n */\nexport const GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_object';\n\n/**\n * The embeddings input\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input';\n\n/**\n * The span operation name for embedding\n */\nexport const GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for embedding many\n */\nexport const GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for reranking\n */\nexport const GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE = 'gen_ai.rerank';\n\n/**\n * The span operation name for executing a tool\n */\nexport const GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool';\n\n/**\n * The tool name for tool call spans\n */\nexport const GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name';\n\n/**\n * The tool call ID\n */\nexport const GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id';\n\n/**\n * The tool type (e.g., 'function')\n */\nexport const GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type';\n\n/**\n * The tool input/arguments\n */\nexport const GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input';\n\n/**\n * The tool output/result\n */\nexport const GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output';\n\n/**\n * The description of the tool being used\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-description\n */\nexport const GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE = 'gen_ai.tool.description';\n\n// =============================================================================\n// OPENAI-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/**\n * The response ID from OpenAI\n */\nexport const OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id';\n\n/**\n * The response model from OpenAI\n */\nexport const OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model';\n\n/**\n * The response timestamp from OpenAI (ISO string)\n */\nexport const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp';\n\n/**\n * The number of completion tokens used\n */\nexport const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens';\n\n/**\n * The number of prompt tokens used\n */\nexport const OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'openai.usage.prompt_tokens';\n\n// =============================================================================\n// ANTHROPIC AI OPERATIONS\n// =============================================================================\n\n/**\n * The response timestamp from Anthropic AI (ISO string)\n */\nexport const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp';\n","import type { ToolCallSpanContext } from './types';\n\n// Global map to track tool call IDs to their corresponding span contexts.\n// This allows us to capture tool errors and link them to the correct span\n// without keeping full Span objects (and their potentially large attributes) alive.\nexport const toolCallSpanContextMap = new Map();\n\n// Operation sets for efficient mapping to OpenTelemetry semantic convention values\nexport const INVOKE_AGENT_OPS = new Set(['ai.generateText', 'ai.streamText', 'ai.generateObject', 'ai.streamObject']);\n\nexport const GENERATE_CONTENT_OPS = new Set([\n 'ai.generateText.doGenerate',\n 'ai.streamText.doStream',\n 'ai.generateObject.doGenerate',\n 'ai.streamObject.doStream',\n]);\n\nexport const EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']);\n\nexport const RERANK_OPS = new Set(['ai.rerank.doRerank']);\n\nexport const DO_SPAN_NAME_PREFIX: Record = {\n 'ai.embed.doEmbed': 'embeddings',\n 'ai.embedMany.doEmbed': 'embeddings',\n 'ai.rerank.doRerank': 'rerank',\n};\n","/**\n * Inline media content source, with a potentially very large base64\n * blob or data: uri.\n */\nexport type ContentMedia = Record &\n (\n | {\n media_type: string;\n data: string;\n }\n | {\n image_url: `data:${string}`;\n }\n | {\n image_url: { url: `data:${string}` };\n }\n | {\n type: 'blob' | 'base64';\n content: string;\n }\n | {\n b64_json: string;\n }\n | {\n uri: `data:${string}`;\n }\n | {\n type: 'input_audio';\n input_audio: { data: string };\n }\n | {\n type: 'file';\n file: { file_data?: string };\n }\n );\n\n/**\n * Check if a content part is an OpenAI/Anthropic media source\n */\nexport function isContentMedia(part: unknown): part is ContentMedia {\n if (!part || typeof part !== 'object') return false;\n\n return (\n isContentMediaSource(part) ||\n hasInlineData(part) ||\n hasImageUrl(part) ||\n hasInputAudio(part) ||\n hasFileData(part) ||\n hasMediaTypeData(part) ||\n hasVercelFileData(part) ||\n hasVercelImageData(part) ||\n hasBlobOrBase64Type(part) ||\n hasB64Json(part) ||\n hasImageGenerationResult(part) ||\n hasDataUri(part)\n );\n}\n\nfunction hasImageUrl(part: NonNullable): boolean {\n if (!('image_url' in part)) return false;\n if (typeof part.image_url === 'string') return part.image_url.startsWith('data:');\n return hasNestedImageUrl(part);\n}\n\nfunction hasNestedImageUrl(part: NonNullable): part is { image_url: { url: string } } {\n return (\n 'image_url' in part &&\n !!part.image_url &&\n typeof part.image_url === 'object' &&\n 'url' in part.image_url &&\n typeof part.image_url.url === 'string' &&\n part.image_url.url.startsWith('data:')\n );\n}\n\nfunction isContentMediaSource(part: NonNullable): boolean {\n return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source);\n}\n\nfunction hasInlineData(part: NonNullable): part is { inlineData: { data?: string } } {\n return (\n 'inlineData' in part &&\n !!part.inlineData &&\n typeof part.inlineData === 'object' &&\n 'data' in part.inlineData &&\n typeof part.inlineData.data === 'string'\n );\n}\n\nfunction hasInputAudio(part: NonNullable): part is { type: 'input_audio'; input_audio: { data: string } } {\n return (\n 'type' in part &&\n part.type === 'input_audio' &&\n 'input_audio' in part &&\n !!part.input_audio &&\n typeof part.input_audio === 'object' &&\n 'data' in part.input_audio &&\n typeof part.input_audio.data === 'string'\n );\n}\n\nfunction hasFileData(part: NonNullable): part is { type: 'file'; file: { file_data: string } } {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'file' in part &&\n !!part.file &&\n typeof part.file === 'object' &&\n 'file_data' in part.file &&\n typeof part.file.file_data === 'string'\n );\n}\n\nfunction hasMediaTypeData(part: NonNullable): part is { media_type: string; data: string } {\n return 'media_type' in part && typeof part.media_type === 'string' && 'data' in part;\n}\n\n/**\n * Check for Vercel AI SDK file format: { type: \"file\", mediaType: \"...\", data: \"...\" }\n * Only matches base64/binary data, not HTTP/HTTPS URLs (which should be preserved).\n */\nfunction hasVercelFileData(part: NonNullable): part is { type: 'file'; mediaType: string; data: string } {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'mediaType' in part &&\n typeof part.mediaType === 'string' &&\n 'data' in part &&\n typeof part.data === 'string' &&\n // Only strip base64/binary data, not HTTP/HTTPS URLs which should be preserved as references\n !part.data.startsWith('http://') &&\n !part.data.startsWith('https://')\n );\n}\n\n/**\n * Check for Vercel AI SDK image format: { type: \"image\", image: \"base64...\", mimeType?: \"...\" }\n * Only matches base64/data URIs, not HTTP/HTTPS URLs (which should be preserved).\n * Note: mimeType is optional in Vercel AI SDK image parts.\n */\nfunction hasVercelImageData(part: NonNullable): part is { type: 'image'; image: string; mimeType?: string } {\n return (\n 'type' in part &&\n part.type === 'image' &&\n 'image' in part &&\n typeof part.image === 'string' &&\n // Only strip base64/data URIs, not HTTP/HTTPS URLs which should be preserved as references\n !part.image.startsWith('http://') &&\n !part.image.startsWith('https://')\n );\n}\n\nfunction hasBlobOrBase64Type(part: NonNullable): part is { type: 'blob' | 'base64'; content: string } {\n return 'type' in part && (part.type === 'blob' || part.type === 'base64');\n}\n\nfunction hasB64Json(part: NonNullable): part is { b64_json: string } {\n return 'b64_json' in part;\n}\n\nfunction hasImageGenerationResult(part: NonNullable): part is { type: 'image_generation'; result: string } {\n return 'type' in part && 'result' in part && part.type === 'image_generation';\n}\n\nfunction hasDataUri(part: NonNullable): part is { uri: string } {\n return 'uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:');\n}\n\nconst REMOVED_STRING = '[Blob substitute]';\n\nconst MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri', 'image'] as const;\n\n/**\n * Replace inline binary data in a single media content part with a placeholder.\n */\nexport function stripInlineMediaFromSingleMessage(part: ContentMedia): ContentMedia {\n const strip = { ...part };\n if (isContentMedia(strip.source)) {\n strip.source = stripInlineMediaFromSingleMessage(strip.source);\n }\n if (hasInlineData(part)) {\n strip.inlineData = { ...part.inlineData, data: REMOVED_STRING };\n }\n if (hasNestedImageUrl(part)) {\n strip.image_url = { ...part.image_url, url: REMOVED_STRING };\n }\n if (hasInputAudio(part)) {\n strip.input_audio = { ...part.input_audio, data: REMOVED_STRING };\n }\n if (hasFileData(part)) {\n strip.file = { ...part.file, file_data: REMOVED_STRING };\n }\n for (const field of MEDIA_FIELDS) {\n if (typeof strip[field] === 'string') strip[field] = REMOVED_STRING;\n }\n return strip;\n}\n","import { isContentMedia, stripInlineMediaFromSingleMessage } from './mediaStripping';\n\n/**\n * Default maximum size in bytes for GenAI messages.\n * Messages exceeding this limit will be truncated.\n */\nexport const DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000;\n\n/**\n * Message format used by OpenAI and Anthropic APIs.\n */\ntype ContentMessage = {\n [key: string]: unknown;\n content: string;\n};\n\n/**\n * One block inside OpenAI / Anthropic `content: [...]` arrays (text, image_url, etc.).\n */\ntype ContentArrayBlock = {\n [key: string]: unknown;\n type: string;\n};\n\n/**\n * Message format used by OpenAI and Anthropic APIs for media.\n */\ntype ContentArrayMessage = {\n [key: string]: unknown;\n content: ContentArrayBlock[];\n};\n\n/**\n * Message format used by Google GenAI API.\n * Parts can be strings or objects with a text property.\n */\ntype PartsMessage = {\n [key: string]: unknown;\n parts: Array;\n};\n\n/**\n * A part in a Google GenAI message that contains text.\n */\ntype TextPart = string | { text: string };\n\n/**\n * A part in a Google GenAI that contains media.\n */\ntype MediaPart = {\n type: string;\n content: string;\n};\n\n/**\n * One element of an array-based message: OpenAI/Anthropic `content[]` or Google `parts`.\n */\ntype ArrayMessageItem = TextPart | MediaPart | ContentArrayBlock;\n\n/**\n * Calculate the UTF-8 byte length of a string.\n */\nconst utf8Bytes = (text: string): number => {\n return new TextEncoder().encode(text).length;\n};\n\n/**\n * Calculate the UTF-8 byte length of a value's JSON representation.\n */\nconst jsonBytes = (value: unknown): number => {\n return utf8Bytes(JSON.stringify(value));\n};\n\n/**\n * Truncate a string to fit within maxBytes (inclusive) when encoded as UTF-8.\n * Uses binary search for efficiency with multi-byte characters.\n *\n * @param text - The string to truncate\n * @param maxBytes - Maximum byte length (inclusive, UTF-8 encoded)\n * @returns Truncated string whose UTF-8 byte length is at most maxBytes\n */\nfunction truncateTextByBytes(text: string, maxBytes: number): string {\n if (utf8Bytes(text) <= maxBytes) {\n return text;\n }\n\n let low = 0;\n let high = text.length;\n let bestFit = '';\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = text.slice(0, mid);\n const byteSize = utf8Bytes(candidate);\n\n if (byteSize <= maxBytes) {\n bestFit = candidate;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n return bestFit;\n}\n\n/**\n * Extract text content from a message item.\n * Handles plain strings and objects with a text property.\n *\n * @returns The text content\n */\nfunction getItemText(item: ArrayMessageItem): string {\n if (typeof item === 'string') {\n return item;\n }\n if ('text' in item && typeof item.text === 'string') {\n return item.text;\n }\n return '';\n}\n\n/**\n * Create a new item with updated text content while preserving the original structure.\n *\n * @param item - Original item (string or object)\n * @param text - New text content\n * @returns New item with updated text\n */\nfunction withItemText(item: ArrayMessageItem, text: string): ArrayMessageItem {\n if (typeof item === 'string') {\n return text;\n }\n return { ...item, text };\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content format.\n */\nfunction isContentMessage(message: unknown): message is ContentMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'content' in message &&\n typeof (message as ContentMessage).content === 'string'\n );\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content array format.\n */\nfunction isContentArrayMessage(message: unknown): message is ContentArrayMessage {\n return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content);\n}\n\n/**\n * Check if a message has the Google GenAI parts format.\n */\nfunction isPartsMessage(message: unknown): message is PartsMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'parts' in message &&\n Array.isArray((message as PartsMessage).parts) &&\n (message as PartsMessage).parts.length > 0\n );\n}\n\n/**\n * Truncate a message with `content: string` format (OpenAI/Anthropic).\n *\n * @param message - Message with content property\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateContentMessage(message: ContentMessage, maxBytes: number): unknown[] {\n // Calculate overhead (message structure without content)\n const emptyMessage = { ...message, content: '' };\n const overhead = jsonBytes(emptyMessage);\n const availableForContent = maxBytes - overhead;\n\n if (availableForContent <= 0) {\n return [];\n }\n\n const truncatedContent = truncateTextByBytes(message.content, availableForContent);\n return [{ ...message, content: truncatedContent }];\n}\n\n/**\n * Extracts the array items and their key from an array-based message.\n * Returns `null` key if neither `parts` nor `content` is a valid array.\n */\nfunction getArrayItems(message: PartsMessage | ContentArrayMessage): {\n key: 'parts' | 'content' | null;\n items: ArrayMessageItem[];\n} {\n if ('parts' in message && Array.isArray(message.parts)) {\n return { key: 'parts', items: message.parts };\n }\n if ('content' in message && Array.isArray(message.content)) {\n return { key: 'content', items: message.content };\n }\n return { key: null, items: [] };\n}\n\n/**\n * Truncate a message with an array-based format.\n * Handles both `parts: [...]` (Google GenAI) and `content: [...]` (OpenAI/Anthropic multimodal).\n * Keeps as many complete items as possible, only truncating the first item if needed.\n *\n * @param message - Message with parts or content array\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateArrayMessage(message: PartsMessage | ContentArrayMessage, maxBytes: number): unknown[] {\n const { key, items } = getArrayItems(message);\n\n if (key === null || items.length === 0) {\n return [];\n }\n\n // Calculate overhead by creating empty text items\n const emptyItems = items.map(item => withItemText(item, ''));\n const overhead = jsonBytes({ ...message, [key]: emptyItems });\n let remainingBytes = maxBytes - overhead;\n\n if (remainingBytes <= 0) {\n return [];\n }\n\n // Include items until we run out of space\n const includedItems: ArrayMessageItem[] = [];\n\n for (const item of items) {\n const text = getItemText(item);\n const textSize = utf8Bytes(text);\n\n if (textSize <= remainingBytes) {\n // Item fits: include it as-is\n includedItems.push(item);\n remainingBytes -= textSize;\n } else if (includedItems.length === 0) {\n // First item doesn't fit: truncate it\n const truncated = truncateTextByBytes(text, remainingBytes);\n if (truncated) {\n includedItems.push(withItemText(item, truncated));\n }\n break;\n } else {\n // Subsequent item doesn't fit: stop here\n break;\n }\n }\n\n /* c8 ignore start\n * for type safety only, algorithm guarantees SOME text included */\n if (includedItems.length <= 0) {\n return [];\n } else {\n /* c8 ignore stop */\n return [{ ...message, [key]: includedItems }];\n }\n}\n\n/**\n * Truncate a single message to fit within maxBytes.\n *\n * Supports three message formats:\n * - OpenAI/Anthropic: `{ ..., content: string }`\n * - Vercel AI/OpenAI multimodal: `{ ..., content: Array<{type, text?, ...}> }`\n * - Google GenAI: `{ ..., parts: Array }`\n *\n * @param message - The message to truncate\n * @param maxBytes - Maximum byte limit for the message\n * @returns Array containing the truncated message, or empty array if truncation fails\n */\nfunction truncateSingleMessage(message: unknown, maxBytes: number): unknown[] {\n if (!message) return [];\n\n // Handle plain strings (e.g., embeddings input)\n if (typeof message === 'string') {\n const truncated = truncateTextByBytes(message, maxBytes);\n return truncated ? [truncated] : [];\n }\n\n if (typeof message !== 'object') {\n return [];\n }\n\n if (isContentMessage(message)) {\n return truncateContentMessage(message, maxBytes);\n }\n\n if (isContentArrayMessage(message) || isPartsMessage(message)) {\n return truncateArrayMessage(message, maxBytes);\n }\n\n // Unknown message format: cannot truncate safely\n return [];\n}\n\n/**\n * Strip the inline media from message arrays.\n *\n * This returns a stripped message. We do NOT want to mutate the data in place,\n * because of course we still want the actual API/client to handle the media.\n */\nfunction stripInlineMediaFromMessages(messages: unknown[]): unknown[] {\n const stripped = messages.map(message => {\n let newMessage: Record | undefined = undefined;\n if (!!message && typeof message === 'object') {\n if (isContentArrayMessage(message)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromMessages(message.content),\n };\n } else if ('content' in message && isContentMedia(message.content)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromSingleMessage(message.content),\n };\n }\n if (isPartsMessage(message)) {\n newMessage = {\n // might have to strip content AND parts\n ...(newMessage ?? message),\n parts: stripInlineMediaFromMessages(message.parts),\n };\n }\n if (isContentMedia(newMessage)) {\n newMessage = stripInlineMediaFromSingleMessage(newMessage);\n } else if (isContentMedia(message)) {\n newMessage = stripInlineMediaFromSingleMessage(message);\n }\n }\n return newMessage ?? message;\n });\n return stripped;\n}\n\n/**\n * Truncate an array of messages to fit within a byte limit.\n *\n * Strategy:\n * - Always keeps only the last (newest) message\n * - Strips inline media from the message\n * - Truncates the message content if it exceeds the byte limit\n *\n * @param messages - Array of messages to truncate\n * @param maxBytes - Maximum total byte limit for the message\n * @returns Array containing only the last message (possibly truncated)\n *\n * @example\n * ```ts\n * const messages = [msg1, msg2, msg3, msg4]; // newest is msg4\n * const truncated = truncateMessagesByBytes(messages, 10000);\n * // Returns [msg4] (truncated if needed)\n * ```\n */\nfunction truncateMessagesByBytes(messages: unknown[], maxBytes: number): unknown[] {\n // Early return for empty or invalid input\n if (!Array.isArray(messages) || messages.length === 0) {\n return messages;\n }\n\n // The result is always a single-element array that callers wrap with\n // JSON.stringify([message]), so subtract the 2-byte array wrapper (\"[\" and \"]\")\n // to ensure the final serialized value stays under the limit.\n const effectiveMaxBytes = maxBytes - 2;\n\n // Always keep only the last message\n const lastMessage = messages[messages.length - 1];\n\n // Strip inline media from the single message\n const stripped = stripInlineMediaFromMessages([lastMessage]);\n const strippedMessage = stripped[0];\n\n // Check if it fits\n const messageBytes = jsonBytes(strippedMessage);\n if (messageBytes <= effectiveMaxBytes) {\n return stripped;\n }\n\n // Truncate the single message if needed\n return truncateSingleMessage(strippedMessage, effectiveMaxBytes);\n}\n\n/**\n * Truncate GenAI messages using the default byte limit.\n *\n * Convenience wrapper around `truncateMessagesByBytes` with the default limit.\n *\n * @param messages - Array of messages to truncate\n * @returns Truncated array of messages\n */\nexport function truncateGenAiMessages(messages: unknown[]): unknown[] {\n return truncateMessagesByBytes(messages, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n\n/**\n * Truncate GenAI string input using the default byte limit.\n *\n * @param input - The string to truncate\n * @returns Truncated string\n */\nexport function truncateGenAiStringInput(input: string): string {\n return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n","/**\n * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.)\n */\nimport { captureException } from '../../exports';\nimport { getClient } from '../../currentScopes';\nimport type { Span } from '../../types-hoist/span';\nimport { isThenable } from '../../utils/is';\nimport {\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from './gen-ai-attributes';\nimport { truncateGenAiMessages, truncateGenAiStringInput } from './messageTruncation';\n\nexport interface AIRecordingOptions {\n recordInputs?: boolean;\n recordOutputs?: boolean;\n}\n\n/**\n * A method registry entry describes a single instrumented method:\n * which gen_ai operation it maps to and whether it is intrinsically streaming.\n */\nexport interface InstrumentedMethodEntry {\n /** Operation name (e.g. 'chat', 'embeddings', 'generate_content') */\n operation: string;\n /** True if the method itself is always streaming (not param-based) */\n streaming?: boolean;\n}\n\n/**\n * Maps method paths to their registry entries.\n * Used by proxy-based AI client instrumentations to determine which methods\n * to instrument, what operation name to use, and whether they stream.\n */\nexport type InstrumentedMethodRegistry = Record;\n\n/**\n * Resolves AI recording options by falling back to the client's `sendDefaultPii` setting.\n * Precedence: explicit option > sendDefaultPii > false\n */\nexport function resolveAIRecordingOptions(options?: T): T & Required {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n return {\n ...options,\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n } as T & Required;\n}\n\n/**\n * Build method path from current traversal\n */\nexport function buildMethodPath(currentPath: string, prop: string): string {\n return currentPath ? `${currentPath}.${prop}` : prop;\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param cachedInputTokens - The number of cached input tokens\n * @param cachedOutputTokens - The number of cached output tokens\n */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n cachedInputTokens?: number,\n cachedOutputTokens?: number,\n): void {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (\n promptTokens !== undefined ||\n completionTokens !== undefined ||\n cachedInputTokens !== undefined ||\n cachedOutputTokens !== undefined\n ) {\n /**\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n const totalTokens =\n (promptTokens ?? 0) + (completionTokens ?? 0) + (cachedInputTokens ?? 0) + (cachedOutputTokens ?? 0);\n\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Get the truncated JSON string for a string or array of strings.\n *\n * @param value - The string or array of strings to truncate\n * @returns The truncated JSON string\n */\nexport function getTruncatedJsonString(value: T | T[]): string {\n if (typeof value === 'string') {\n // Some values are already JSON strings, so we don't need to duplicate the JSON parsing\n return truncateGenAiStringInput(value);\n }\n if (Array.isArray(value)) {\n // truncateGenAiMessages returns an array of strings, so we need to stringify it\n const truncatedMessages = truncateGenAiMessages(value);\n return JSON.stringify(truncatedMessages);\n }\n // value is an object, so we need to stringify it\n return JSON.stringify(value);\n}\n\n/**\n * Extract system instructions from messages array.\n * Finds the first system message and formats it according to OpenTelemetry semantic conventions.\n *\n * @param messages - Array of messages to extract system instructions from\n * @returns systemInstructions (JSON string) and filteredMessages (without system message)\n */\nexport function extractSystemInstructions(messages: unknown[] | unknown): {\n systemInstructions: string | undefined;\n filteredMessages: unknown[] | unknown;\n} {\n if (!Array.isArray(messages)) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessageIndex = messages.findIndex(\n msg => msg && typeof msg === 'object' && 'role' in msg && (msg as { role: string }).role === 'system',\n );\n\n if (systemMessageIndex === -1) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessage = messages[systemMessageIndex] as { role: string; content?: string | unknown };\n const systemContent =\n typeof systemMessage.content === 'string'\n ? systemMessage.content\n : systemMessage.content !== undefined\n ? JSON.stringify(systemMessage.content)\n : undefined;\n\n if (!systemContent) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemInstructions = JSON.stringify([{ type: 'text', content: systemContent }]);\n const filteredMessages = [...messages.slice(0, systemMessageIndex), ...messages.slice(systemMessageIndex + 1)];\n\n return { systemInstructions, filteredMessages };\n}\n\n/**\n * Creates a wrapped version of .withResponse() that replaces the data field\n * with the instrumented result while preserving metadata (response, request_id).\n */\nasync function createWithResponseWrapper(\n originalWithResponse: Promise,\n instrumentedPromise: Promise,\n mechanismType: string,\n): Promise {\n // Attach catch handler to originalWithResponse immediately to prevent unhandled rejection\n // If instrumentedPromise rejects first, we still need this handled\n const safeOriginalWithResponse = originalWithResponse.catch(error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: mechanismType,\n },\n });\n throw error;\n });\n\n const instrumentedResult = await instrumentedPromise;\n const originalWrapper = await safeOriginalWithResponse;\n\n // Combine instrumented result with original metadata\n if (originalWrapper && typeof originalWrapper === 'object' && 'data' in originalWrapper) {\n return {\n ...originalWrapper,\n data: instrumentedResult,\n };\n }\n return instrumentedResult;\n}\n\n/**\n * Wraps a promise-like object to preserve additional methods (like .withResponse())\n * that AI SDK clients (OpenAI, Anthropic) attach to their APIPromise return values.\n *\n * Standard Promise methods (.then, .catch, .finally) are routed to the instrumented\n * promise to preserve Sentry's span instrumentation, while custom SDK methods are\n * forwarded to the original promise to maintain the SDK's API surface.\n */\nexport function wrapPromiseWithMethods(\n originalPromiseLike: Promise,\n instrumentedPromise: Promise,\n mechanismType: string,\n): Promise {\n // If the original result is not thenable, return the instrumented promise\n if (!isThenable(originalPromiseLike)) {\n return instrumentedPromise;\n }\n\n // Create a proxy that forwards Promise methods to instrumentedPromise\n // and preserves additional methods from the original result\n return new Proxy(originalPromiseLike, {\n get(target: object, prop: string | symbol): unknown {\n // For standard Promise methods (.then, .catch, .finally, Symbol.toStringTag),\n // use instrumentedPromise to preserve Sentry instrumentation.\n // For custom methods (like .withResponse()), use the original target.\n const useInstrumentedPromise = prop in Promise.prototype || prop === Symbol.toStringTag;\n const source = useInstrumentedPromise ? instrumentedPromise : target;\n\n const value = Reflect.get(source, prop) as unknown;\n\n // Special handling for .withResponse() to preserve instrumentation\n // .withResponse() returns { data: T, response: Response, request_id: string }\n if (prop === 'withResponse' && typeof value === 'function') {\n return function wrappedWithResponse(this: unknown): unknown {\n const originalWithResponse = (value as (...args: unknown[]) => unknown).call(target);\n return createWithResponseWrapper(originalWithResponse, instrumentedPromise, mechanismType);\n };\n }\n\n return typeof value === 'function' ? value.bind(source) : value;\n },\n }) as Promise;\n}\n","/* eslint-disable max-lines */\n/**\n * AI SDK Telemetry Attributes\n * Based on https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\n\n// =============================================================================\n// COMMON ATTRIBUTES\n// =============================================================================\n\n/**\n * Common attribute for operation name across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nexport const OPERATION_NAME_ATTRIBUTE = 'operation.name';\n\n/**\n * Common attribute for AI operation ID across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nexport const AI_OPERATION_ID_ATTRIBUTE = 'ai.operationId';\n\n// =============================================================================\n// SHARED ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n * `streamText` function - `ai.streamText` span\n *\n * The prompt that was used when calling the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_PROMPT_ATTRIBUTE = 'ai.prompt';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The JSON schema version of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_ATTRIBUTE = 'ai.schema';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The name of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_NAME_ATTRIBUTE = 'ai.schema.name';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The description of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_DESCRIPTION_ATTRIBUTE = 'ai.schema.description';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object that was generated (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object generation mode, e.g. `json`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SETTINGS_MODE_ATTRIBUTE = 'ai.settings.mode';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The output type that was used, e.g. `object` or `no-schema`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SETTINGS_OUTPUT_ATTRIBUTE = 'ai.settings.output';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * The values that were passed into the function (array)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_VALUES_ATTRIBUTE = 'ai.values';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * An array of JSON-stringified embeddings\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_EMBEDDINGS_ATTRIBUTE = 'ai.embeddings';\n\n// =============================================================================\n// GENERATETEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The text that was generated\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_TEXT_ATTRIBUTE = 'ai.response.text';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The tool calls that were made as part of the generation (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'ai.response.toolCalls';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The reason why the generation finished\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_FINISH_REASON_ATTRIBUTE = 'ai.response.finishReason';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The maximum number of steps that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_SETTINGS_MAX_STEPS_ATTRIBUTE = 'ai.settings.maxSteps';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The format of the prompt\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_FORMAT_ATTRIBUTE = 'ai.prompt.format';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The messages that were passed into the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_MESSAGES_ATTRIBUTE = 'ai.prompt.messages';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * Array of stringified tool definitions\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The stringified tool choice setting (JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_TOOL_CHOICE_ATTRIBUTE = 'ai.prompt.toolChoice';\n\n// =============================================================================\n// STREAMTEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the first chunk in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE = 'ai.response.msToFirstChunk';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the finish part of the LLM stream in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE = 'ai.response.msToFinish';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The average completion tokens per second\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE = 'ai.response.avgCompletionTokensPerSecond';\n\n// =============================================================================\n// EMBED FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `embed` function - `ai.embed` span\n *\n * The value that was passed into the `embed` function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_VALUE_ATTRIBUTE = 'ai.value';\n\n/**\n * `embed` function - `ai.embed` span\n *\n * A JSON-stringified embedding\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBEDDING_ATTRIBUTE = 'ai.embedding';\n\n// =============================================================================\n// BASIC LLM SPAN INFORMATION\n// =============================================================================\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The functionId that was set through `telemetry.functionId`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const RESOURCE_NAME_ATTRIBUTE = 'resource.name';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The id of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_MODEL_ID_ATTRIBUTE = 'ai.model.id';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The provider of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_MODEL_PROVIDER_ATTRIBUTE = 'ai.model.provider';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The request headers that were passed in through `headers`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_REQUEST_HEADERS_ATTRIBUTE = 'ai.request.headers';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * Provider specific metadata returned with the generation response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The maximum number of retries that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_SETTINGS_MAX_RETRIES_ATTRIBUTE = 'ai.settings.maxRetries';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of cached input tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = 'ai.usage.cachedInputTokens';\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The functionId that was set through `telemetry.functionId`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The metadata that was passed in through `telemetry.metadata`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_TELEMETRY_METADATA_ATTRIBUTE = 'ai.telemetry.metadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'ai.usage.completionTokens';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens';\n\n// =============================================================================\n// CALL LLM SPAN INFORMATION\n// =============================================================================\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_MODEL_ATTRIBUTE = 'ai.response.model';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_ID_ATTRIBUTE = 'ai.response.id';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The timestamp of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'ai.response.timestamp';\n\n// =============================================================================\n// SEMANTIC CONVENTIONS FOR GENAI OPERATIONS\n// =============================================================================\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The provider that was used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was requested\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The temperature that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The maximum number of tokens that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The frequency penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The presence penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topK parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topP parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The stop sequences\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The finish reasons that were returned by the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n// =============================================================================\n// BASIC EMBEDDING SPAN INFORMATION\n// =============================================================================\n\n/**\n * Basic embedding span information\n * Embedding spans\n *\n * The number of tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-embedding-span-information\n */\nexport const AI_USAGE_TOKENS_ATTRIBUTE = 'ai.usage.tokens';\n\n// =============================================================================\n// TOOL CALL SPANS\n// =============================================================================\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The name of the tool\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_NAME_ATTRIBUTE = 'ai.toolCall.name';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The id of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_ID_ATTRIBUTE = 'ai.toolCall.id';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The parameters of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_ARGS_ATTRIBUTE = 'ai.toolCall.args';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The result of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result';\n\n// =============================================================================\n// SPAN ATTRIBUTE OBJECTS\n// =============================================================================\n\n/**\n * Attributes collected for `ai.generateText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n AI_RESPONSE_TEXT: AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS: AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_RESPONSE_FINISH_REASON: AI_RESPONSE_FINISH_REASON_ATTRIBUTE,\n AI_SETTINGS_MAX_STEPS: AI_SETTINGS_MAX_STEPS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateText.doGenerate` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_DO_GENERATE_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_FORMAT: AI_PROMPT_FORMAT_ATTRIBUTE,\n AI_PROMPT_MESSAGES: AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS: AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_PROMPT_TOOL_CHOICE: AI_PROMPT_TOOL_CHOICE_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText.doStream` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_DO_STREAM_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FIRST_CHUNK: AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FINISH: AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE,\n AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND: AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n */\nexport const AI_GENERATE_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_STREAM_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUE: AI_VALUE_ATTRIBUTE,\n AI_EMBEDDING: AI_EMBEDDING_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed.doEmbed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_DO_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embedMany` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_EMBED_MANY_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.toolCall` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME: AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_ID: AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS: AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_RESULT: AI_TOOL_CALL_RESULT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n} as const;\n\n// =============================================================================\n// PROVIDER METADATA\n// =============================================================================\n\n/**\n * OpenAI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/openai-chat-language-model.ts#L397-L416\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/responses/openai-responses-language-model.ts#L377C7-L384\n */\nexport interface OpenAiProviderMetadata {\n /**\n * The number of predicted output tokens that were accepted.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n acceptedPredictionTokens?: number;\n\n /**\n * The number of predicted output tokens that were rejected.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n rejectedPredictionTokens?: number;\n\n /**\n * The number of reasoning tokens that the model generated.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n reasoningTokens?: number;\n\n /**\n * The number of prompt tokens that were a cache hit.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n cachedPromptTokens?: number;\n\n /**\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n *\n * The ID of the response. Can be used to continue a conversation.\n */\n responseId?: string;\n}\n\n/**\n * Anthropic Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/anthropic/src/anthropic-messages-language-model.ts#L346-L352\n */\ninterface AnthropicProviderMetadata {\n /**\n * The number of tokens that were used to create the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheCreationInputTokens?: number;\n\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheReadInputTokens?: number;\n\n /**\n * Usage metrics for the Anthropic model.\n */\n usage?: {\n input_tokens: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n cache_creation?: {\n ephemeral_5m_input_tokens?: number;\n ephemeral_1h_input_tokens?: number;\n };\n output_tokens?: number;\n service_tier?: string;\n };\n}\n\n/**\n * Amazon Bedrock Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/amazon-bedrock/src/bedrock-chat-language-model.ts#L263-L280\n */\ninterface AmazonBedrockProviderMetadata {\n /**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseTrace.html\n */\n trace?: {\n /**\n * The guardrail trace object.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailTraceAssessment.html\n *\n * This was purposely left as unknown as it's a complex object. This can be typed in the future\n * if the SDK decides to support bedrock in a more advanced way.\n */\n guardrail?: unknown;\n /**\n * The request's prompt router.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_PromptRouterTrace.html\n */\n promptRouter?: {\n /**\n * The ID of the invoked model.\n */\n invokedModelId?: string;\n };\n };\n usage?: {\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheReadInputTokens?: number;\n\n /**\n * The number of tokens that were written to the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheWriteInputTokens?: number;\n };\n}\n\n/**\n * Google Generative AI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai\n */\nexport interface GoogleGenerativeAIProviderMetadata {\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-prompt.ts#L28-L30\n */\n groundingMetadata: null | {\n /**\n * Array of search queries used to retrieve information\n * @example [\"What's the weather in Chicago this weekend?\"]\n *\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n webSearchQueries: string[] | null;\n /**\n * Contains the main search result content used as an entry point\n * The `renderedContent` field contains the formatted content\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n searchEntryPoint?: {\n renderedContent: string;\n } | null;\n /**\n * Contains details about how specific response parts are supported by search results\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n groundingSupports: Array<{\n /**\n * Information about the grounded text segment.\n */\n segment: {\n /**\n * The start index of the text segment.\n */\n startIndex?: number | null;\n /**\n * The end index of the text segment.\n */\n endIndex?: number | null;\n /**\n * The actual text segment.\n */\n text?: string | null;\n };\n /**\n * References to supporting search result chunks.\n */\n groundingChunkIndices?: number[] | null;\n /**\n * Confidence scores (0-1) for each supporting chunk.\n */\n confidenceScores?: number[] | null;\n }> | null;\n };\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-language-model.ts#L620-L627\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters\n */\n safetyRatings?: null | unknown;\n}\n\n/**\n * DeepSeek Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek\n */\ninterface DeepSeekProviderMetadata {\n /**\n * The number of tokens that were cache hits.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheHitTokens?: number;\n\n /**\n * The number of tokens that were cache misses.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheMissTokens?: number;\n}\n\n/**\n * Perplexity Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/perplexity\n */\ninterface PerplexityProviderMetadata {\n /**\n * Object containing citationTokens and numSearchQueries metrics\n */\n usage?: {\n citationTokens?: number;\n numSearchQueries?: number;\n };\n /**\n * Array of image URLs when return_images is enabled.\n *\n * You can enable image responses by setting return_images: true in the provider options.\n * This feature is only available to Perplexity Tier-2 users and above.\n */\n images?: Array<{\n imageUrl?: string;\n originUrl?: string;\n height?: number;\n width?: number;\n }>;\n}\n\nexport interface ProviderMetadata {\n openai?: OpenAiProviderMetadata;\n azure?: OpenAiProviderMetadata; // v6: Azure Responses API uses 'azure' key instead of 'openai'\n anthropic?: AnthropicProviderMetadata;\n bedrock?: AmazonBedrockProviderMetadata;\n google?: GoogleGenerativeAIProviderMetadata;\n vertex?: GoogleGenerativeAIProviderMetadata; // v6: Google Vertex uses 'vertex' key instead of 'google'\n deepseek?: DeepSeekProviderMetadata;\n perplexity?: PerplexityProviderMetadata;\n}\n","import type { TraceContext } from '../../types-hoist/context';\nimport type { Span, SpanAttributes, SpanJSON } from '../../types-hoist/span';\nimport {\n GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { toolCallSpanContextMap } from './constants';\nimport type { TokenSummary, ToolCallSpanContext } from './types';\nimport { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes';\n\n/**\n * Accumulates token data from a span to its parent in the token accumulator map.\n * This function extracts token usage from the current span and adds it to the\n * accumulated totals for its parent span.\n */\nexport function accumulateTokensForParent(span: SpanJSON, tokenAccumulator: Map): void {\n const parentSpanId = span.parent_span_id;\n if (!parentSpanId) {\n return;\n }\n\n const inputTokens = span.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n const outputTokens = span.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE];\n\n if (typeof inputTokens === 'number' || typeof outputTokens === 'number') {\n const existing = tokenAccumulator.get(parentSpanId) || { inputTokens: 0, outputTokens: 0 };\n\n if (typeof inputTokens === 'number') {\n existing.inputTokens += inputTokens;\n }\n if (typeof outputTokens === 'number') {\n existing.outputTokens += outputTokens;\n }\n\n tokenAccumulator.set(parentSpanId, existing);\n }\n}\n\n/**\n * Applies accumulated token data to the `gen_ai.invoke_agent` span.\n * Only immediate children of the `gen_ai.invoke_agent` span are considered,\n * since aggregation will automatically occur for each parent span.\n */\nexport function applyAccumulatedTokens(\n spanOrTrace: SpanJSON | TraceContext,\n tokenAccumulator: Map,\n): void {\n const accumulated = tokenAccumulator.get(spanOrTrace.span_id);\n if (!accumulated || !spanOrTrace.data) {\n return;\n }\n\n if (accumulated.inputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = accumulated.inputTokens;\n }\n if (accumulated.outputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = accumulated.outputTokens;\n }\n if (accumulated.inputTokens > 0 || accumulated.outputTokens > 0) {\n spanOrTrace.data['gen_ai.usage.total_tokens'] = accumulated.inputTokens + accumulated.outputTokens;\n }\n}\n\n/**\n * Builds a map of tool name -> description from all spans with available_tools.\n * This avoids O(n²) iteration and repeated JSON parsing.\n */\nfunction buildToolDescriptionMap(spans: SpanJSON[]): Map {\n const toolDescriptions = new Map();\n\n for (const span of spans) {\n const availableTools = span.data[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE];\n if (typeof availableTools !== 'string') {\n continue;\n }\n try {\n const tools = JSON.parse(availableTools) as Array<{ name?: string; description?: string }>;\n for (const tool of tools) {\n if (tool.name && tool.description && !toolDescriptions.has(tool.name)) {\n toolDescriptions.set(tool.name, tool.description);\n }\n }\n } catch {\n // ignore parse errors\n }\n }\n\n return toolDescriptions;\n}\n\n/**\n * Applies tool descriptions and accumulated tokens to spans in a single pass.\n *\n * - For `gen_ai.execute_tool` spans: looks up tool description from\n * `gen_ai.request.available_tools` on sibling spans\n * - For `gen_ai.invoke_agent` spans: applies accumulated token data from children\n */\nexport function applyToolDescriptionsAndTokens(spans: SpanJSON[], tokenAccumulator: Map): void {\n // Build lookup map once to avoid O(n²) iteration and repeated JSON parsing\n const toolDescriptions = buildToolDescriptionMap(spans);\n\n for (const span of spans) {\n if (span.op === 'gen_ai.execute_tool') {\n const toolName = span.data[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (typeof toolName === 'string') {\n const description = toolDescriptions.get(toolName);\n if (description) {\n span.data[GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE] = description;\n }\n }\n }\n\n if (span.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(span, tokenAccumulator);\n }\n }\n}\n\n/**\n * Get the span context associated with a tool call ID.\n */\nexport function _INTERNAL_getSpanContextForToolCallId(toolCallId: string): ToolCallSpanContext | undefined {\n return toolCallSpanContextMap.get(toolCallId);\n}\n\n/**\n * Clean up the span mapping for a tool call ID\n */\nexport function _INTERNAL_cleanupToolCallSpanContext(toolCallId: string): void {\n toolCallSpanContextMap.delete(toolCallId);\n}\n\n/**\n * Convert an array of tool strings to a JSON string\n */\nexport function convertAvailableToolsToJsonString(tools: unknown[]): string {\n const toolObjects = tools.map(tool => {\n if (typeof tool === 'string') {\n try {\n return JSON.parse(tool);\n } catch {\n return tool;\n }\n }\n return tool;\n });\n return JSON.stringify(toolObjects);\n}\n\n/**\n * Filter out invalid entries in messages array\n * @param input - The input array to filter\n * @returns The filtered array\n */\nfunction filterMessagesArray(input: unknown[]): { role: string; content: string }[] {\n return input.filter(\n (m: unknown): m is { role: string; content: string } =>\n !!m && typeof m === 'object' && 'role' in m && 'content' in m,\n );\n}\n\n/**\n * Normalize the user input (stringified object with prompt, system, messages) to messages array\n */\nexport function convertUserInputToMessagesFormat(userInput: string): { role: string; content: string }[] {\n try {\n const p = JSON.parse(userInput);\n if (!!p && typeof p === 'object') {\n let { messages } = p;\n const { prompt, system } = p;\n const result: { role: string; content: string }[] = [];\n\n // prepend top-level system instruction if present\n if (typeof system === 'string') {\n result.push({ role: 'system', content: system });\n }\n\n // stringified messages array\n if (typeof messages === 'string') {\n try {\n messages = JSON.parse(messages);\n } catch {\n // ignore parse errors\n }\n }\n\n // messages array format: { messages: [...] }\n if (Array.isArray(messages)) {\n result.push(...filterMessagesArray(messages));\n return result;\n }\n\n // prompt array format: { prompt: [...] }\n if (Array.isArray(prompt)) {\n result.push(...filterMessagesArray(prompt));\n return result;\n }\n\n // prompt string format: { prompt: \"...\" }\n if (typeof prompt === 'string') {\n result.push({ role: 'user', content: prompt });\n }\n\n if (result.length > 0) {\n return result;\n }\n }\n // eslint-disable-next-line no-empty\n } catch {}\n return [];\n}\n\n/**\n * Generate a request.messages JSON array from the prompt field in the\n * invoke_agent op\n */\nexport function requestMessagesFromPrompt(span: Span, attributes: SpanAttributes): void {\n if (\n typeof attributes[AI_PROMPT_ATTRIBUTE] === 'string' &&\n !attributes[GEN_AI_INPUT_MESSAGES_ATTRIBUTE] &&\n !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]\n ) {\n // No messages array is present, so we need to convert the prompt to the proper messages format\n // This is the case for ai.generateText spans\n // The ai.prompt attribute is a stringified object with prompt, system, messages attributes\n // The format of these is described in the vercel docs, for instance: https://ai-sdk.dev/docs/reference/ai-sdk-core/stream-object#parameters\n const userInput = attributes[AI_PROMPT_ATTRIBUTE];\n const messages = convertUserInputToMessagesFormat(userInput);\n if (messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n } else if (typeof attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') {\n // In this case we already get a properly formatted messages array, this is the preferred way to get the messages\n // This is the case for ai.generateText.doGenerate spans\n try {\n const messages = JSON.parse(attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]);\n if (Array.isArray(messages)) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n // eslint-disable-next-line no-empty\n } catch {}\n }\n}\n\n/**\n * Maps a Vercel AI span name to the corresponding Sentry op.\n */\nexport function getSpanOpFromName(name: string): string | undefined {\n switch (name) {\n case 'ai.generateText':\n case 'ai.streamText':\n case 'ai.generateObject':\n case 'ai.streamObject':\n return GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE;\n case 'ai.generateText.doGenerate':\n return GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamText.doStream':\n return GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.generateObject.doGenerate':\n return GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamObject.doStream':\n return GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.embed.doEmbed':\n return GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.embedMany.doEmbed':\n return GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.rerank.doRerank':\n return GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE;\n case 'ai.toolCall':\n return GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE;\n default:\n if (name.startsWith('ai.stream')) {\n return 'ai.run';\n }\n return undefined;\n }\n}\n","/* eslint-disable max-lines */\nimport type { Client } from '../../client';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { Event } from '../../types-hoist/event';\nimport type { Span, SpanAttributes, SpanAttributeValue, SpanJSON } from '../../types-hoist/span';\nimport { spanToJSON } from '../../utils/spanUtils';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_CALL_ID_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n GEN_AI_TOOL_TYPE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport {\n DO_SPAN_NAME_PREFIX,\n EMBEDDINGS_OPS,\n GENERATE_CONTENT_OPS,\n INVOKE_AGENT_OPS,\n RERANK_OPS,\n toolCallSpanContextMap,\n} from './constants';\nimport type { TokenSummary } from './types';\nimport {\n accumulateTokensForParent,\n applyAccumulatedTokens,\n applyToolDescriptionsAndTokens,\n convertAvailableToolsToJsonString,\n getSpanOpFromName,\n requestMessagesFromPrompt,\n} from './utils';\nimport type { OpenAiProviderMetadata, ProviderMetadata } from './vercel-ai-attributes';\nimport {\n AI_MODEL_ID_ATTRIBUTE,\n AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_RESPONSE_FINISH_REASON_ATTRIBUTE,\n AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE,\n AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_SCHEMA_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_RESULT_ATTRIBUTE,\n AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n AI_USAGE_TOKENS_ATTRIBUTE,\n AI_VALUES_ATTRIBUTE,\n OPERATION_NAME_ATTRIBUTE,\n} from './vercel-ai-attributes';\n\n/**\n * Maps Vercel AI SDK operation names to OpenTelemetry semantic convention values\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction mapVercelAiOperationName(operationName: string): string {\n // Top-level pipeline operations map to invoke_agent\n if (INVOKE_AGENT_OPS.has(operationName)) {\n return 'invoke_agent';\n }\n // .do* operations are the actual LLM calls\n if (GENERATE_CONTENT_OPS.has(operationName)) {\n return 'generate_content';\n }\n if (EMBEDDINGS_OPS.has(operationName)) {\n return 'embeddings';\n }\n if (RERANK_OPS.has(operationName)) {\n return 'rerank';\n }\n if (operationName === 'ai.toolCall') {\n return 'execute_tool';\n }\n // Return the original value for unknown operations\n return operationName;\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n * This is supposed to be used in `client.on('spanStart', ...)\n */\nfunction onVercelAiSpanStart(span: Span): void {\n const { data: attributes, description: name } = spanToJSON(span);\n\n if (!name) {\n return;\n }\n\n // Tool call spans\n // https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n if (attributes[AI_TOOL_CALL_NAME_ATTRIBUTE] && attributes[AI_TOOL_CALL_ID_ATTRIBUTE] && name === 'ai.toolCall') {\n processToolCallSpan(span, attributes);\n return;\n }\n\n // V6+ Check if this is a Vercel AI span by checking if the operation ID attribute is present.\n // V5+ Check if this is a Vercel AI span by name pattern.\n if (!attributes[AI_OPERATION_ID_ATTRIBUTE] && !name.startsWith('ai.')) {\n return;\n }\n\n processGenerateSpan(span, name, attributes);\n}\n\nfunction vercelAiEventProcessor(event: Event): Event {\n if (event.type === 'transaction' && event.spans) {\n // Map to accumulate token data by parent span ID\n const tokenAccumulator: Map = new Map();\n\n // First pass: process all spans and accumulate token data\n for (const span of event.spans) {\n processEndedVercelAiSpan(span);\n\n // Accumulate token data for parent spans\n accumulateTokensForParent(span, tokenAccumulator);\n }\n\n // Second pass: apply tool descriptions and accumulated tokens\n applyToolDescriptionsAndTokens(event.spans, tokenAccumulator);\n\n // Also apply to root when it is the invoke_agent pipeline\n const trace = event.contexts?.trace;\n if (trace?.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(trace, tokenAccumulator);\n }\n }\n\n return event;\n}\n\n/**\n * Tool call structure from Vercel AI SDK\n * Note: V5/V6 use 'input' for arguments, V4 and earlier use 'args'\n */\ninterface VercelToolCall {\n toolCallId: string;\n toolName: string;\n input?: Record | string; // V5/V6\n args?: string; // V4 and earlier\n}\n\n/**\n * Normalize finish reason to match OpenTelemetry semantic conventions.\n * Valid values: \"stop\", \"length\", \"content_filter\", \"tool_call\", \"error\"\n *\n * Vercel AI SDK uses \"tool-calls\" (plural, with hyphen) which we map to \"tool_call\".\n */\nfunction normalizeFinishReason(finishReason: unknown): string {\n if (typeof finishReason !== 'string') {\n return 'stop';\n }\n\n // Map Vercel AI SDK finish reasons to OpenTelemetry semantic convention values\n switch (finishReason) {\n case 'tool-calls':\n return 'tool_call';\n case 'stop':\n case 'length':\n case 'content_filter':\n case 'error':\n return finishReason;\n default:\n // For unknown values, return as-is (schema allows arbitrary strings)\n return finishReason;\n }\n}\n\n/**\n * Build gen_ai.output.messages from ai.response.text and/or ai.response.toolCalls\n *\n * Format follows OpenTelemetry semantic conventions:\n * [{\"role\": \"assistant\", \"parts\": [...], \"finish_reason\": \"stop\"}]\n *\n * Parts can be:\n * - {\"type\": \"text\", \"content\": \"...\"}\n * - {\"type\": \"tool_call\", \"id\": \"...\", \"name\": \"...\", \"arguments\": \"...\"}\n */\nfunction buildOutputMessages(attributes: Record): void {\n const responseText = attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n const responseToolCalls = attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n const finishReason = attributes[AI_RESPONSE_FINISH_REASON_ATTRIBUTE];\n\n // Skip if neither text nor tool calls are present\n if (responseText == null && responseToolCalls == null) {\n return;\n }\n\n const parts: Array> = [];\n\n // Add text part if present\n if (typeof responseText === 'string' && responseText.length > 0) {\n parts.push({\n type: 'text',\n content: responseText,\n });\n }\n\n // Add tool call parts if present\n if (responseToolCalls != null) {\n try {\n // Tool calls can be a string (JSON) or already parsed array\n const toolCalls: VercelToolCall[] =\n typeof responseToolCalls === 'string' ? JSON.parse(responseToolCalls) : responseToolCalls;\n\n if (Array.isArray(toolCalls)) {\n for (const toolCall of toolCalls) {\n // V5/V6 use 'input', V4 and earlier use 'args'\n const args = toolCall.input ?? toolCall.args;\n parts.push({\n type: 'tool_call',\n id: toolCall.toolCallId,\n name: toolCall.toolName,\n // Handle undefined args: JSON.stringify(undefined) returns undefined, not a string,\n // which would cause the property to be omitted from the final JSON output\n arguments: typeof args === 'string' ? args : JSON.stringify(args ?? {}),\n });\n }\n // Only delete tool calls attribute if we successfully processed them\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n }\n } catch {\n // Ignore parsing errors - tool calls attribute is preserved\n }\n }\n\n // Only set output messages and delete text attribute if we have parts\n if (parts.length > 0) {\n const outputMessage = {\n role: 'assistant',\n parts,\n finish_reason: normalizeFinishReason(finishReason),\n };\n\n attributes[GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE] = JSON.stringify([outputMessage]);\n\n // Remove the text attribute since it's now captured in gen_ai.output.messages\n // Note: tool calls attribute is deleted above only if successfully parsed\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n }\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n */\nfunction processEndedVercelAiSpan(span: SpanJSON): void {\n const { data: attributes, origin } = span;\n\n if (origin !== 'auto.vercelai.otel') {\n return;\n }\n\n // The Vercel AI SDK sets span status to raw error message strings.\n // Any such value should be normalized to a SpanStatusType value. We pick internal_error as it is the most generic.\n if (span.status && span.status !== 'ok') {\n span.status = 'internal_error';\n }\n\n renameAttributeKey(attributes, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE);\n\n // Parent spans (ai.streamText, ai.streamObject, etc.) use inputTokens/outputTokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, 'ai.usage.inputTokens', GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, 'ai.usage.outputTokens', GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n\n // Embedding spans use ai.usage.tokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, AI_USAGE_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n\n // AI SDK uses avgOutputTokensPerSecond, map to our expected attribute name\n renameAttributeKey(attributes, 'ai.response.avgOutputTokensPerSecond', 'ai.response.avgCompletionTokensPerSecond');\n\n // Input tokens is the sum of prompt tokens and cached input tokens\n if (\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' &&\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE] === 'number'\n ) {\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] =\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] + attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE];\n }\n\n // Compute total tokens from input + output (embeddings may only have input tokens)\n if (typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number') {\n const outputTokens =\n typeof attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number'\n ? attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]\n : 0;\n attributes[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = outputTokens + attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n }\n\n // Convert the available tools array to a JSON string\n if (attributes[AI_PROMPT_TOOLS_ATTRIBUTE] && Array.isArray(attributes[AI_PROMPT_TOOLS_ATTRIBUTE])) {\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] = convertAvailableToolsToJsonString(\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] as unknown[],\n );\n }\n\n // Rename AI SDK attributes to standardized gen_ai attributes\n // Map operation.name to OpenTelemetry semantic convention values\n if (attributes[OPERATION_NAME_ATTRIBUTE]) {\n const operationName = mapVercelAiOperationName(attributes[OPERATION_NAME_ATTRIBUTE] as string);\n attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE] = operationName;\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[OPERATION_NAME_ATTRIBUTE];\n }\n renameAttributeKey(attributes, AI_PROMPT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE);\n\n // Build gen_ai.output.messages from response text and/or tool calls\n // Note: buildOutputMessages also removes the source attributes when output is successfully generated\n buildOutputMessages(attributes);\n\n renameAttributeKey(attributes, AI_RESPONSE_OBJECT_ATTRIBUTE, 'gen_ai.response.object');\n renameAttributeKey(attributes, AI_PROMPT_TOOLS_ATTRIBUTE, 'gen_ai.request.available_tools');\n\n renameAttributeKey(attributes, AI_TOOL_CALL_ARGS_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_RESULT_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE);\n\n renameAttributeKey(attributes, AI_SCHEMA_ATTRIBUTE, 'gen_ai.request.schema');\n renameAttributeKey(attributes, AI_MODEL_ID_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE);\n\n // Map embedding input: ai.values → gen_ai.embeddings.input\n // Vercel AI SDK JSON-stringifies each value individually, so we parse each element back.\n // Single embed gets unwrapped to a plain value; batch embedMany stays as a JSON array.\n if (Array.isArray(attributes[AI_VALUES_ATTRIBUTE])) {\n const parsed = (attributes[AI_VALUES_ATTRIBUTE] as string[]).map(v => {\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n });\n attributes[GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE] = parsed.length === 1 ? parsed[0] : JSON.stringify(parsed);\n }\n\n addProviderMetadataToAttributes(attributes);\n\n // Change attributes namespaced with `ai.X` to `vercel.ai.X`\n for (const key of Object.keys(attributes)) {\n if (key.startsWith('ai.')) {\n renameAttributeKey(attributes, key, `vercel.${key}`);\n }\n }\n}\n\n/**\n * Renames an attribute key in the provided attributes object if the old key exists.\n * This function safely handles null and undefined values.\n */\nfunction renameAttributeKey(attributes: Record, oldKey: string, newKey: string): void {\n if (attributes[oldKey] != null) {\n attributes[newKey] = attributes[oldKey];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[oldKey];\n }\n}\n\nfunction processToolCallSpan(span: Span, attributes: SpanAttributes): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'gen_ai.execute_tool');\n span.setAttribute(GEN_AI_OPERATION_NAME_ATTRIBUTE, 'execute_tool');\n renameAttributeKey(attributes, AI_TOOL_CALL_NAME_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE);\n\n // Store the span context in our global map using the tool call ID.\n // This allows us to capture tool errors and link them to the correct span\n // without retaining the full Span object in memory.\n const toolCallId = attributes[GEN_AI_TOOL_CALL_ID_ATTRIBUTE];\n\n if (typeof toolCallId === 'string') {\n toolCallSpanContextMap.set(toolCallId, span.spanContext());\n }\n\n // https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-type\n if (!attributes[GEN_AI_TOOL_TYPE_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_TOOL_TYPE_ATTRIBUTE, 'function');\n }\n const toolName = attributes[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (toolName) {\n span.updateName(`execute_tool ${toolName}`);\n }\n}\n\nfunction processGenerateSpan(span: Span, name: string, attributes: SpanAttributes): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n\n const nameWthoutAi = name.replace('ai.', '');\n span.setAttribute('ai.pipeline.name', nameWthoutAi);\n span.updateName(nameWthoutAi);\n\n const functionId = attributes[AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE];\n if (functionId && typeof functionId === 'string') {\n span.setAttribute('gen_ai.function_id', functionId);\n }\n\n requestMessagesFromPrompt(span, attributes);\n\n if (attributes[AI_MODEL_ID_ATTRIBUTE] && !attributes[GEN_AI_RESPONSE_MODEL_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, attributes[AI_MODEL_ID_ATTRIBUTE]);\n }\n span.setAttribute('ai.streaming', name.includes('stream'));\n\n // Set the op based on the span name\n const op = getSpanOpFromName(name);\n if (op) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n // For invoke_agent pipeline spans, use 'invoke_agent' as the description\n // to be consistent with other AI integrations (e.g. LangGraph)\n if (INVOKE_AGENT_OPS.has(name)) {\n if (functionId && typeof functionId === 'string') {\n span.updateName(`invoke_agent ${functionId}`);\n } else {\n span.updateName('invoke_agent');\n }\n return;\n }\n\n const modelId = attributes[AI_MODEL_ID_ATTRIBUTE];\n if (modelId) {\n const doSpanPrefix = GENERATE_CONTENT_OPS.has(name) ? 'generate_content' : DO_SPAN_NAME_PREFIX[name];\n if (doSpanPrefix) {\n span.updateName(`${doSpanPrefix} ${modelId}`);\n }\n }\n}\n\n/**\n * Add event processors to the given client to process Vercel AI spans.\n */\nexport function addVercelAiProcessors(client: Client): void {\n client.on('spanStart', onVercelAiSpanStart);\n // Note: We cannot do this on `spanEnd`, because the span cannot be mutated anymore at this point\n client.addEventProcessor(Object.assign(vercelAiEventProcessor, { id: 'VercelAiEventProcessor' }));\n}\n\nfunction addProviderMetadataToAttributes(attributes: SpanAttributes): void {\n const providerMetadata = attributes[AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] as string | undefined;\n if (providerMetadata) {\n try {\n const providerMetadataObject = JSON.parse(providerMetadata) as ProviderMetadata;\n\n // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure')\n const openaiMetadata: OpenAiProviderMetadata | undefined =\n providerMetadataObject.openai ?? providerMetadataObject.azure;\n if (openaiMetadata) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n openaiMetadata.cachedPromptTokens,\n );\n setAttributeIfDefined(attributes, 'gen_ai.usage.output_tokens.reasoning', openaiMetadata.reasoningTokens);\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_accepted',\n openaiMetadata.acceptedPredictionTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_rejected',\n openaiMetadata.rejectedPredictionTokens,\n );\n if (!attributes['gen_ai.conversation.id']) {\n setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId);\n }\n }\n\n if (providerMetadataObject.anthropic) {\n const cachedInputTokens =\n providerMetadataObject.anthropic.usage?.cache_read_input_tokens ??\n providerMetadataObject.anthropic.cacheReadInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, cachedInputTokens);\n\n const cacheWriteInputTokens =\n providerMetadataObject.anthropic.usage?.cache_creation_input_tokens ??\n providerMetadataObject.anthropic.cacheCreationInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, cacheWriteInputTokens);\n }\n\n if (providerMetadataObject.bedrock?.usage) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheReadInputTokens,\n );\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheWriteInputTokens,\n );\n }\n\n if (providerMetadataObject.deepseek) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.deepseek.promptCacheHitTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.input_tokens.cache_miss',\n providerMetadataObject.deepseek.promptCacheMissTokens,\n );\n }\n } catch {\n // Ignore\n }\n }\n}\n\n/**\n * Sets an attribute only if the value is not null or undefined.\n */\nfunction setAttributeIfDefined(attributes: SpanAttributes, key: string, value: SpanAttributeValue | undefined): void {\n if (value != null) {\n attributes[key] = value;\n }\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const OPENAI_INTEGRATION_NAME = 'OpenAI';\n\n// https://platform.openai.com/docs/quickstart?api-mode=responses\n// https://platform.openai.com/docs/quickstart?api-mode=chat\n// https://platform.openai.com/docs/api-reference/conversations\nexport const OPENAI_METHOD_REGISTRY = {\n 'responses.create': { operation: 'chat' },\n 'chat.completions.create': { operation: 'chat' },\n 'embeddings.create': { operation: 'embeddings' },\n // Conversations API - for conversation state management\n // https://platform.openai.com/docs/guides/conversation-state\n 'conversations.create': { operation: 'chat' },\n} as const satisfies InstrumentedMethodRegistry;\nexport const RESPONSES_TOOL_CALL_EVENT_TYPES = [\n 'response.output_item.added',\n 'response.function_call_arguments.delta',\n 'response.function_call_arguments.done',\n 'response.output_item.done',\n] as const;\nexport const RESPONSE_EVENT_TYPES = [\n 'response.created',\n 'response.in_progress',\n 'response.failed',\n 'response.completed',\n 'response.incomplete',\n 'response.queued',\n 'response.output_text.delta',\n ...RESPONSES_TOOL_CALL_EVENT_TYPES,\n] as const;\n","import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE,\n GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n OPENAI_RESPONSE_ID_ATTRIBUTE,\n OPENAI_RESPONSE_MODEL_ATTRIBUTE,\n OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type {\n ChatCompletionChunk,\n OpenAiChatCompletionObject,\n OpenAIConversationObject,\n OpenAICreateEmbeddingsObject,\n OpenAIResponseObject,\n ResponseStreamingEvent,\n} from './types';\n\n/**\n * Check if response is a Chat Completion object\n */\nexport function isChatCompletionResponse(response: unknown): response is OpenAiChatCompletionObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'chat.completion'\n );\n}\n\n/**\n * Check if response is a Responses API object\n */\nexport function isResponsesApiResponse(response: unknown): response is OpenAIResponseObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'response'\n );\n}\n\n/**\n * Check if response is an Embeddings API object\n */\nexport function isEmbeddingsResponse(response: unknown): response is OpenAICreateEmbeddingsObject {\n if (response === null || typeof response !== 'object' || !('object' in response)) {\n return false;\n }\n const responseObject = response as Record;\n return (\n responseObject.object === 'list' &&\n typeof responseObject.model === 'string' &&\n responseObject.model.toLowerCase().includes('embedding')\n );\n}\n\n/**\n * Check if response is a Conversations API object\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nexport function isConversationResponse(response: unknown): response is OpenAIConversationObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'conversation'\n );\n}\n\n/**\n * Check if streaming event is from the Responses API\n */\nexport function isResponsesApiStreamEvent(event: unknown): event is ResponseStreamingEvent {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'type' in event &&\n typeof (event as Record).type === 'string' &&\n ((event as Record).type as string).startsWith('response.')\n );\n}\n\n/**\n * Check if streaming event is a chat completion chunk\n */\nexport function isChatCompletionChunk(event: unknown): event is ChatCompletionChunk {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'object' in event &&\n (event as Record).object === 'chat.completion.chunk'\n );\n}\n\n/**\n * Add attributes for Chat Completion responses\n */\nexport function addChatCompletionAttributes(\n span: Span,\n response: OpenAiChatCompletionObject,\n recordOutputs?: boolean,\n): void {\n setCommonResponseAttributes(span, response.id, response.model, response.created);\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.prompt_tokens,\n response.usage.completion_tokens,\n response.usage.total_tokens,\n );\n }\n if (Array.isArray(response.choices)) {\n const finishReasons = response.choices\n .map(choice => choice.finish_reason)\n .filter((reason): reason is string => reason !== null);\n if (finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(finishReasons),\n });\n }\n\n // Extract tool calls from all choices (only if recordOutputs is true)\n if (recordOutputs) {\n const toolCalls = response.choices\n .map(choice => choice.message?.tool_calls)\n .filter(calls => Array.isArray(calls) && calls.length > 0)\n .flat();\n\n if (toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Responses API responses\n */\nexport function addResponsesApiAttributes(span: Span, response: OpenAIResponseObject, recordOutputs?: boolean): void {\n setCommonResponseAttributes(span, response.id, response.model, response.created_at);\n if (response.status) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify([response.status]),\n });\n }\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.total_tokens,\n );\n }\n\n // Extract function calls from output (only if recordOutputs is true)\n if (recordOutputs) {\n const responseWithOutput = response as OpenAIResponseObject & { output?: unknown[] };\n if (Array.isArray(responseWithOutput.output) && responseWithOutput.output.length > 0) {\n // Filter for function_call type objects in the output array\n const functionCalls = responseWithOutput.output.filter(\n (item): unknown =>\n // oxlint-disable-next-line typescript/prefer-optional-chain\n typeof item === 'object' && item !== null && (item as Record).type === 'function_call',\n );\n\n if (functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Embeddings API responses\n */\nexport function addEmbeddingsAttributes(span: Span, response: OpenAICreateEmbeddingsObject): void {\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if (response.usage) {\n setTokenUsageAttributes(span, response.usage.prompt_tokens, undefined, response.usage.total_tokens);\n }\n}\n\n/**\n * Add attributes for Conversations API responses\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nexport function addConversationAttributes(span: Span, response: OpenAIConversationObject): void {\n const { id, created_at } = response;\n\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n // The conversation id is used to link messages across API calls\n [GEN_AI_CONVERSATION_ID_ATTRIBUTE]: id,\n });\n\n if (created_at) {\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(created_at * 1000).toISOString(),\n });\n }\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param totalTokens - The number of total tokens\n */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n totalTokens?: number,\n): void {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE]: promptTokens,\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE]: completionTokens,\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (totalTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Set common response attributes\n * @param span - The span to add attributes to\n * @param id - The response id\n * @param model - The response model\n * @param timestamp - The response timestamp\n */\nexport function setCommonResponseAttributes(span: Span, id: string, model: string, timestamp: number): void {\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: model,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(timestamp * 1000).toISOString(),\n });\n}\n\n/**\n * Extract conversation ID from request parameters\n * Supports both Conversations API and previous_response_id chaining\n * @see https://platform.openai.com/docs/guides/conversation-state\n */\nfunction extractConversationId(params: Record): string | undefined {\n // Conversations API: conversation parameter (e.g., \"conv_...\")\n if ('conversation' in params && typeof params.conversation === 'string') {\n return params.conversation;\n }\n // Responses chaining: previous_response_id links to parent response\n if ('previous_response_id' in params && typeof params.previous_response_id === 'string') {\n return params.previous_response_id;\n }\n return undefined;\n}\n\n/**\n * Extract request parameters including model settings and conversation context\n */\nexport function extractRequestParameters(params: Record): Record {\n const attributes: Record = {\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: params.model ?? 'unknown',\n };\n\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('frequency_penalty' in params) attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('presence_penalty' in params) attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = params.presence_penalty;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('encoding_format' in params) attributes[GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE] = params.encoding_format;\n if ('dimensions' in params) attributes[GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE] = params.dimensions;\n\n // Capture conversation ID for linking messages across API calls\n const conversationId = extractConversationId(params);\n if (conversationId) {\n attributes[GEN_AI_CONVERSATION_ID_ATTRIBUTE] = conversationId;\n }\n\n return attributes;\n}\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { RESPONSE_EVENT_TYPES } from './constants';\nimport type {\n ChatCompletionChunk,\n ChatCompletionToolCall,\n OpenAIResponseObject,\n ResponseFunctionCall,\n ResponseStreamingEvent,\n} from './types';\nimport {\n isChatCompletionChunk,\n isResponsesApiStreamEvent,\n setCommonResponseAttributes,\n setTokenUsageAttributes,\n} from './utils';\n\n/**\n * State object used to accumulate information from a stream of OpenAI events/chunks.\n */\ninterface StreamingState {\n /** Types of events encountered in the stream. */\n eventTypes: string[];\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** The timestamp of the response. */\n responseTimestamp: number;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Total number of tokens used (prompt + completion). */\n totalTokens: number | undefined;\n /**\n * Accumulated tool calls from Chat Completion streaming, indexed by tool call index.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=chat#streaming\n */\n chatCompletionToolCalls: Record;\n /**\n * Accumulated function calls from Responses API streaming.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=responses#streaming\n */\n responsesApiToolCalls: Array;\n}\n\n/**\n * Processes tool calls from a chat completion chunk delta.\n * Follows the pattern: accumulate by index, then convert to array at the end.\n *\n * @param toolCalls - Array of tool calls from the delta.\n * @param state - The current streaming state to update.\n *\n * @see https://platform.openai.com/docs/guides/function-calling#streaming\n */\nfunction processChatCompletionToolCalls(toolCalls: ChatCompletionToolCall[], state: StreamingState): void {\n for (const toolCall of toolCalls) {\n const index = toolCall.index;\n if (index === undefined || !toolCall.function) continue;\n\n // Initialize tool call if this is the first chunk for this index\n if (!(index in state.chatCompletionToolCalls)) {\n state.chatCompletionToolCalls[index] = {\n ...toolCall,\n function: {\n name: toolCall.function.name,\n arguments: toolCall.function.arguments || '',\n },\n };\n } else {\n // Accumulate function arguments from subsequent chunks\n const existingToolCall = state.chatCompletionToolCalls[index];\n if (toolCall.function.arguments && existingToolCall?.function) {\n existingToolCall.function.arguments += toolCall.function.arguments;\n }\n }\n }\n}\n\n/**\n * Processes a single OpenAI ChatCompletionChunk event, updating the streaming state.\n *\n * @param chunk - The ChatCompletionChunk event to process.\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n */\nfunction processChatCompletionChunk(chunk: ChatCompletionChunk, state: StreamingState, recordOutputs: boolean): void {\n state.responseId = chunk.id ?? state.responseId;\n state.responseModel = chunk.model ?? state.responseModel;\n state.responseTimestamp = chunk.created ?? state.responseTimestamp;\n\n if (chunk.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = chunk.usage.prompt_tokens;\n state.completionTokens = chunk.usage.completion_tokens;\n state.totalTokens = chunk.usage.total_tokens;\n }\n\n for (const choice of chunk.choices ?? []) {\n if (recordOutputs) {\n if (choice.delta?.content) {\n state.responseTexts.push(choice.delta.content);\n }\n\n // Handle tool calls from delta\n if (choice.delta?.tool_calls) {\n processChatCompletionToolCalls(choice.delta.tool_calls, state);\n }\n }\n if (choice.finish_reason) {\n state.finishReasons.push(choice.finish_reason);\n }\n }\n}\n\n/**\n * Processes a single OpenAI Responses API streaming event, updating the streaming state and span.\n *\n * @param streamEvent - The event to process (may be an error or unknown object).\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n * @param span - The span to update with error status if needed.\n */\nfunction processResponsesApiEvent(\n streamEvent: ResponseStreamingEvent | unknown | Error,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\n if (!(streamEvent && typeof streamEvent === 'object')) {\n state.eventTypes.push('unknown:non-object');\n return;\n }\n if (streamEvent instanceof Error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(streamEvent, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream-response',\n },\n });\n return;\n }\n\n if (!('type' in streamEvent)) return;\n const event = streamEvent as ResponseStreamingEvent;\n\n if (!RESPONSE_EVENT_TYPES.includes(event.type)) {\n state.eventTypes.push(event.type);\n return;\n }\n\n // Handle output text delta\n if (recordOutputs) {\n // Handle tool call events for Responses API\n if (event.type === 'response.output_item.done' && 'item' in event) {\n state.responsesApiToolCalls.push(event.item);\n }\n\n if (event.type === 'response.output_text.delta' && 'delta' in event && event.delta) {\n state.responseTexts.push(event.delta);\n return;\n }\n }\n\n if ('response' in event) {\n const { response } = event as { response: OpenAIResponseObject };\n state.responseId = response.id ?? state.responseId;\n state.responseModel = response.model ?? state.responseModel;\n state.responseTimestamp = response.created_at ?? state.responseTimestamp;\n\n if (response.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = response.usage.input_tokens;\n state.completionTokens = response.usage.output_tokens;\n state.totalTokens = response.usage.total_tokens;\n }\n\n if (response.status) {\n state.finishReasons.push(response.status);\n }\n\n if (recordOutputs && response.output_text) {\n state.responseTexts.push(response.output_text);\n }\n }\n}\n\n/**\n * Instruments a stream of OpenAI events, updating the provided span with relevant attributes and\n * optionally recording output text. This function yields each event from the input stream as it is processed.\n *\n * @template T - The type of events in the stream.\n * @param stream - The async iterable stream of events to instrument.\n * @param span - The span to add attributes to and to finish at the end of the stream.\n * @param recordOutputs - Whether to record output text fragments in the span.\n * @returns An async generator yielding each event from the input stream.\n */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n eventTypes: [],\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n responseTimestamp: 0,\n promptTokens: undefined,\n completionTokens: undefined,\n totalTokens: undefined,\n chatCompletionToolCalls: {},\n responsesApiToolCalls: [],\n };\n\n try {\n for await (const event of stream) {\n if (isChatCompletionChunk(event)) {\n processChatCompletionChunk(event as ChatCompletionChunk, state, recordOutputs);\n } else if (isResponsesApiStreamEvent(event)) {\n processResponsesApiEvent(event as ResponseStreamingEvent, state, recordOutputs, span);\n }\n yield event;\n }\n } finally {\n setCommonResponseAttributes(span, state.responseId, state.responseModel, state.responseTimestamp);\n setTokenUsageAttributes(span, state.promptTokens, state.completionTokens, state.totalTokens);\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls attribute if any were accumulated\n const chatCompletionToolCallsArray = Object.values(state.chatCompletionToolCalls);\n const allToolCalls = [...chatCompletionToolCallsArray, ...state.responsesApiToolCalls];\n\n if (allToolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(allToolCalls),\n });\n }\n\n span.end();\n }\n}\n","import { DEBUG_BUILD } from '../../debug-build';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { debug } from '../../utils/debug-logger';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport {\n buildMethodPath,\n extractSystemInstructions,\n getTruncatedJsonString,\n resolveAIRecordingOptions,\n wrapPromiseWithMethods,\n} from '../ai/utils';\nimport { OPENAI_METHOD_REGISTRY } from './constants';\nimport { instrumentStream } from './streaming';\nimport type { ChatCompletionChunk, OpenAiOptions, OpenAiResponse, OpenAIStream, ResponseStreamingEvent } from './types';\nimport {\n addChatCompletionAttributes,\n addConversationAttributes,\n addEmbeddingsAttributes,\n addResponsesApiAttributes,\n extractRequestParameters,\n isChatCompletionResponse,\n isConversationResponse,\n isEmbeddingsResponse,\n isResponsesApiResponse,\n} from './utils';\n\n/**\n * Extract available tools from request parameters\n */\nfunction extractAvailableTools(params: Record): string | undefined {\n const tools = Array.isArray(params.tools) ? params.tools : [];\n const hasWebSearchOptions = params.web_search_options && typeof params.web_search_options === 'object';\n const webSearchOptions = hasWebSearchOptions\n ? [{ type: 'web_search_options', ...(params.web_search_options as Record) }]\n : [];\n\n const availableTools = [...tools, ...webSearchOptions];\n if (availableTools.length === 0) {\n return undefined;\n }\n\n try {\n return JSON.stringify(availableTools);\n } catch (error) {\n DEBUG_BUILD && debug.error('Failed to serialize OpenAI tools:', error);\n return undefined;\n }\n}\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], operationName: string): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] as Record;\n\n const availableTools = extractAvailableTools(params);\n if (availableTools) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = availableTools;\n }\n\n Object.assign(attributes, extractRequestParameters(params));\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n\n return attributes;\n}\n\n/**\n * Add response attributes to spans\n * This supports Chat Completion, Responses API, Embeddings, and Conversations API responses\n */\nfunction addResponseAttributes(span: Span, result: unknown, recordOutputs?: boolean): void {\n if (!result || typeof result !== 'object') return;\n\n const response = result as OpenAiResponse;\n\n if (isChatCompletionResponse(response)) {\n addChatCompletionAttributes(span, response, recordOutputs);\n if (recordOutputs && response.choices?.length) {\n const responseTexts = response.choices.map(choice => choice.message?.content || '');\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(responseTexts) });\n }\n } else if (isResponsesApiResponse(response)) {\n addResponsesApiAttributes(span, response, recordOutputs);\n if (recordOutputs && response.output_text) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.output_text });\n }\n } else if (isEmbeddingsResponse(response)) {\n addEmbeddingsAttributes(span, response);\n } else if (isConversationResponse(response)) {\n addConversationAttributes(span, response);\n }\n}\n\n// Extract and record AI request inputs, if present. This is intentionally separate from response attributes.\nfunction addRequestAttributes(span: Span, params: Record, operationName: string): void {\n // Store embeddings input on a separate attribute and do not truncate it\n if (operationName === 'embeddings' && 'input' in params) {\n const input = params.input;\n\n // No input provided\n if (input == null) {\n return;\n }\n\n // Empty input string\n if (typeof input === 'string' && input.length === 0) {\n return;\n }\n\n // Empty array input\n if (Array.isArray(input) && input.length === 0) {\n return;\n }\n\n // Store strings as-is, arrays/objects as JSON\n span.setAttribute(GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, typeof input === 'string' ? input : JSON.stringify(input));\n return;\n }\n\n const src = 'input' in params ? params.input : 'messages' in params ? params.messages : undefined;\n\n if (!src) {\n return;\n }\n\n if (Array.isArray(src) && src.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(src);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedInput = getTruncatedJsonString(filteredMessages);\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ATTRIBUTE, truncatedInput);\n\n if (Array.isArray(filteredMessages)) {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredMessages.length);\n } else {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, 1);\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: OpenAiOptions,\n): (...args: T) => Promise {\n return function instrumentedCall(...args: T): Promise {\n const operationName = instrumentedMethod.operation;\n const requestAttributes = extractRequestAttributes(args, operationName);\n const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] as string) || 'unknown';\n\n const params = args[0] as Record | undefined;\n const isStreamRequested = params && typeof params === 'object' && params.stream === true;\n\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n };\n\n if (isStreamRequested) {\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span: Span) => {\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n // Return async processing\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentStream(\n result as OpenAIStream,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n }\n\n // Non-streaming\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpan(spanConfig, (span: Span) => {\n // Call synchronously to capture the promise\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result, options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai',\n data: { function: methodPath },\n },\n });\n throw error;\n },\n );\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n };\n}\n\n/**\n * Create a deep proxy for OpenAI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: OpenAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = OPENAI_METHOD_REGISTRY[methodPath as keyof typeof OPENAI_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n return instrumentMethod(\n value as (...args: unknown[]) => Promise,\n methodPath,\n instrumentedMethod,\n obj,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n // which is required for accessing private class fields (e.g. #baseURL) in OpenAI SDK v5.\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) as T;\n}\n\n/**\n * Instrument an OpenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n */\nexport function instrumentOpenAiClient(client: T, options?: OpenAiOptions): T {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const ANTHROPIC_AI_INTEGRATION_NAME = 'Anthropic_AI';\n\n// https://docs.anthropic.com/en/api/messages\n// https://docs.anthropic.com/en/api/models-list\nexport const ANTHROPIC_METHOD_REGISTRY = {\n 'messages.create': { operation: 'chat' },\n 'messages.stream': { operation: 'chat', streaming: true },\n 'messages.countTokens': { operation: 'chat' },\n 'models.get': { operation: 'models' },\n 'completions.create': { operation: 'chat' },\n 'models.retrieve': { operation: 'models' },\n 'beta.messages.create': { operation: 'chat' },\n} as const satisfies InstrumentedMethodRegistry;\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport type { SpanStatusType } from '../../types-hoist/spanStatus';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport type { AnthropicAiResponse } from './types';\n\n/**\n * Set the messages and messages original length attributes.\n * Extracts system instructions before truncation.\n */\nexport function setMessagesAttribute(span: Span, messages: unknown): void {\n if (Array.isArray(messages) && messages.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttributes({\n [GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions,\n });\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n}\n\nconst ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS: Record = {\n invalid_request_error: 'invalid_argument',\n authentication_error: 'unauthenticated',\n permission_error: 'permission_denied',\n not_found_error: 'not_found',\n request_too_large: 'failed_precondition',\n rate_limit_error: 'resource_exhausted',\n api_error: 'internal_error',\n overloaded_error: 'unavailable',\n};\n\n/**\n * Map an Anthropic API error type to a SpanStatusType value.\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nexport function mapAnthropicErrorToStatusMessage(errorType: string | undefined): SpanStatusType {\n if (!errorType) {\n return 'internal_error';\n }\n return ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS[errorType] || 'internal_error';\n}\n\n/**\n * Capture error information from the response\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nexport function handleResponseError(span: Span, response: AnthropicAiResponse): void {\n if (response.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(response.error.type) });\n\n captureException(response.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n }\n}\n\n/**\n * Include the system prompt in the messages list, if available\n */\nexport function messagesFromParams(params: Record): unknown[] {\n const { system, messages, input } = params;\n\n const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : [];\n\n const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : undefined;\n\n const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : [];\n\n const userMessages = inputParamMessages ?? messagesParamMessages;\n\n return [...systemMessages, ...userMessages];\n}\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { setTokenUsageAttributes } from '../ai/utils';\nimport type { AnthropicAiStreamingEvent } from './types';\nimport { mapAnthropicErrorToStatusMessage } from './utils';\n\n/**\n * State object used to accumulate information from a stream of Anthropic AI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Number of cache creation input tokens used. */\n cacheCreationInputTokens: number | undefined;\n /** Number of cache read input tokens used. */\n cacheReadInputTokens: number | undefined;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\n /** In-progress tool call blocks keyed by index */\n activeToolBlocks: Record<\n number,\n {\n id?: string;\n name?: string;\n inputJsonParts: string[];\n }\n >;\n}\n\n/**\n * Checks if an event is an error event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n * @returns Whether an error occurred\n */\n\nfunction isErrorEvent(event: AnthropicAiStreamingEvent, span: Span): boolean {\n if ('type' in event && typeof event.type === 'string') {\n // If the event is an error, set the span status and capture the error\n // These error events are not rejected by the API by default, but are sent as metadata of the response\n if (event.type === 'error') {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(event.error?.type) });\n captureException(event.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n return true;\n }\n }\n return false;\n}\n\n/**\n * Processes the message metadata of an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n */\n\nfunction handleMessageMetadata(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n // The token counts shown in the usage field of the message_delta event are cumulative.\n // @see https://docs.anthropic.com/en/docs/build-with-claude/streaming#event-types\n if (event.type === 'message_delta' && event.usage) {\n if ('output_tokens' in event.usage && typeof event.usage.output_tokens === 'number') {\n state.completionTokens = event.usage.output_tokens;\n }\n }\n\n if (event.message) {\n const message = event.message;\n\n if (message.id) state.responseId = message.id;\n if (message.model) state.responseModel = message.model;\n if (message.stop_reason) state.finishReasons.push(message.stop_reason);\n\n if (message.usage) {\n if (typeof message.usage.input_tokens === 'number') state.promptTokens = message.usage.input_tokens;\n if (typeof message.usage.cache_creation_input_tokens === 'number')\n state.cacheCreationInputTokens = message.usage.cache_creation_input_tokens;\n if (typeof message.usage.cache_read_input_tokens === 'number')\n state.cacheReadInputTokens = message.usage.cache_read_input_tokens;\n }\n }\n}\n\n/**\n * Handle start of a content block (e.g., tool_use)\n */\nfunction handleContentBlockStart(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n if (event.type !== 'content_block_start' || typeof event.index !== 'number' || !event.content_block) return;\n if (event.content_block.type === 'tool_use' || event.content_block.type === 'server_tool_use') {\n state.activeToolBlocks[event.index] = {\n id: event.content_block.id,\n name: event.content_block.name,\n inputJsonParts: [],\n };\n }\n}\n\n/**\n * Handle deltas of a content block, including input_json_delta for tool_use\n */\nfunction handleContentBlockDelta(\n event: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n): void {\n if (event.type !== 'content_block_delta' || !event.delta) return;\n\n // Accumulate tool_use input JSON deltas only when we have an index and an active tool block\n if (\n typeof event.index === 'number' &&\n 'partial_json' in event.delta &&\n typeof event.delta.partial_json === 'string'\n ) {\n const active = state.activeToolBlocks[event.index];\n if (active) {\n active.inputJsonParts.push(event.delta.partial_json);\n }\n }\n\n // Accumulate streamed response text regardless of index\n if (recordOutputs && typeof event.delta.text === 'string') {\n state.responseTexts.push(event.delta.text);\n }\n}\n\n/**\n * Handle stop of a content block; finalize tool_use entries\n */\nfunction handleContentBlockStop(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n if (event.type !== 'content_block_stop' || typeof event.index !== 'number') return;\n\n const active = state.activeToolBlocks[event.index];\n if (!active) return;\n\n const raw = active.inputJsonParts.join('');\n let parsedInput: unknown;\n\n try {\n parsedInput = raw ? JSON.parse(raw) : {};\n } catch {\n parsedInput = { __unparsed: raw };\n }\n\n state.toolCalls.push({\n type: 'tool_use',\n id: active.id,\n name: active.name,\n input: parsedInput,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete state.activeToolBlocks[event.index];\n}\n\n/**\n * Processes an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processEvent(\n event: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\n if (!(event && typeof event === 'object')) {\n return;\n }\n\n const isError = isErrorEvent(event, span);\n if (isError) return;\n\n handleMessageMetadata(event, state);\n\n // Tool call events are sent via 3 separate events:\n // - content_block_start (start of the tool call)\n // - content_block_delta (delta aka input of the tool call)\n // - content_block_stop (end of the tool call)\n // We need to handle them all to capture the full tool call.\n handleContentBlockStart(event, state);\n handleContentBlockDelta(event, state, recordOutputs);\n handleContentBlockStop(event, state);\n}\n\n/**\n * Finalizes span attributes when stream processing completes\n */\nfunction finalizeStreamSpan(state: StreamingState, span: Span, recordOutputs: boolean): void {\n if (!span.isRecording()) {\n return;\n }\n\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n}\n\n/**\n * Instruments an async iterable stream of Anthropic events, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each event from the input stream unchanged.\n */\nexport async function* instrumentAsyncIterableStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n try {\n for await (const event of stream) {\n processEvent(event, state, recordOutputs, span);\n yield event;\n }\n } finally {\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n }\n}\n\n/**\n * Instruments a MessageStream by registering event handlers and preserving the original stream API.\n */\nexport function instrumentMessageStream void }>(\n stream: R,\n span: Span,\n recordOutputs: boolean,\n): R {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n stream.on('streamEvent', (event: unknown) => {\n processEvent(event as AnthropicAiStreamingEvent, state, recordOutputs, span);\n });\n\n // The event fired when a message is done being streamed by the API. Corresponds to the message_stop SSE event.\n // @see https://github.com/anthropics/anthropic-sdk-typescript/blob/d3be31f5a4e6ebb4c0a2f65dbb8f381ae73a9166/helpers.md?plain=1#L42-L44\n stream.on('message', () => {\n finalizeStreamSpan(state, span, recordOutputs);\n });\n\n stream.on('error', (error: unknown) => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.stream_error',\n },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n });\n\n return stream;\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PROMPT_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport {\n buildMethodPath,\n resolveAIRecordingOptions,\n setTokenUsageAttributes,\n wrapPromiseWithMethods,\n} from '../ai/utils';\nimport { ANTHROPIC_METHOD_REGISTRY } from './constants';\nimport { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming';\nimport type { AnthropicAiOptions, AnthropicAiResponse, AnthropicAiStreamingEvent, ContentBlock } from './types';\nimport { handleResponseError, messagesFromParams, setMessagesAttribute } from './utils';\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], methodPath: string, operationName: string): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] as Record;\n if (params.tools && Array.isArray(params.tools)) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(params.tools);\n }\n\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = params.model ?? 'unknown';\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('top_k' in params) attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = params.top_k;\n if ('frequency_penalty' in params)\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('max_tokens' in params) attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = params.max_tokens;\n } else {\n if (methodPath === 'models.retrieve' || methodPath === 'models.get') {\n // models.retrieve(model-id) and models.get(model-id)\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = args[0];\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n */\nfunction addPrivateRequestAttributes(span: Span, params: Record): void {\n const messages = messagesFromParams(params);\n setMessagesAttribute(span, messages);\n\n if ('prompt' in params) {\n span.setAttributes({ [GEN_AI_PROMPT_ATTRIBUTE]: JSON.stringify(params.prompt) });\n }\n}\n\n/**\n * Add content attributes when recordOutputs is enabled\n */\nfunction addContentAttributes(span: Span, response: AnthropicAiResponse): void {\n // Messages.create\n if ('content' in response) {\n if (Array.isArray(response.content)) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.content\n .map((item: ContentBlock) => item.text)\n .filter(text => !!text)\n .join(''),\n });\n\n const toolCalls: Array = [];\n\n for (const item of response.content) {\n if (item.type === 'tool_use' || item.type === 'server_tool_use') {\n toolCalls.push(item);\n }\n }\n if (toolCalls.length > 0) {\n span.setAttributes({ [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls) });\n }\n }\n }\n // Completions.create\n if ('completion' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.completion });\n }\n // Models.countTokens\n if ('input_tokens' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(response.input_tokens) });\n }\n}\n\n/**\n * Add basic metadata attributes from the response\n */\nfunction addMetadataAttributes(span: Span, response: AnthropicAiResponse): void {\n if ('id' in response && 'model' in response) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: response.id,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if ('created' in response && typeof response.created === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created * 1000).toISOString(),\n });\n }\n if ('created_at' in response && typeof response.created_at === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created_at * 1000).toISOString(),\n });\n }\n\n if ('usage' in response && response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.cache_creation_input_tokens,\n response.usage.cache_read_input_tokens,\n );\n }\n }\n}\n\n/**\n * Add response attributes to spans\n */\nfunction addResponseAttributes(span: Span, response: AnthropicAiResponse, recordOutputs?: boolean): void {\n if (!response || typeof response !== 'object') return;\n\n // capture error, do not add attributes if error (they shouldn't exist)\n if ('type' in response && response.type === 'error') {\n handleResponseError(span, response);\n return;\n }\n\n // Private response attributes that are only recorded if recordOutputs is true.\n if (recordOutputs) {\n addContentAttributes(span, response);\n }\n\n // Add basic metadata attributes\n addMetadataAttributes(span, response);\n}\n\n/**\n * Handle common error catching and reporting for streaming requests\n */\nfunction handleStreamingError(error: unknown, span: Span, methodPath: string): never {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.anthropic', data: { function: methodPath } },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n throw error;\n}\n\n/**\n * Handle streaming cases with common logic\n */\nfunction handleStreamingRequest(\n originalMethod: (...args: T) => R | Promise,\n target: (...args: T) => R | Promise,\n context: unknown,\n args: T,\n requestAttributes: Record,\n operationName: string,\n methodPath: string,\n params: Record | undefined,\n options: AnthropicAiOptions,\n isStreamRequested: boolean,\n isStreamingMethod: boolean,\n): R | Promise {\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n };\n\n // messages.stream() always returns a sync MessageStream, even with stream: true param\n if (isStreamRequested && !isStreamingMethod) {\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span: Span) => {\n originalResult = originalMethod.apply(context, args) as Promise;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentAsyncIterableStream(\n result as AsyncIterable,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n } else {\n return startSpanManual(spanConfig, span => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const messageStream = target.apply(context, args);\n return instrumentMessageStream(messageStream, span, options.recordOutputs ?? false);\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n });\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => R | Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: AnthropicAiOptions,\n): (...args: T) => R | Promise {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args: T): R | Promise {\n const operationName = instrumentedMethod.operation;\n const requestAttributes = extractRequestAttributes(args, methodPath, operationName);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n\n const params = typeof args[0] === 'object' ? (args[0] as Record) : undefined;\n const isStreamRequested = Boolean(params?.stream);\n const isStreamingMethod = instrumentedMethod.streaming === true;\n\n if (isStreamRequested || isStreamingMethod) {\n return handleStreamingRequest(\n originalMethod,\n target,\n context,\n args,\n requestAttributes,\n operationName,\n methodPath,\n params,\n options,\n isStreamRequested,\n isStreamingMethod,\n );\n }\n\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpan(\n {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n },\n span => {\n originalResult = target.apply(context, args) as Promise;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result as AnthropicAiResponse, options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic',\n data: {\n function: methodPath,\n },\n },\n });\n throw error;\n },\n );\n },\n );\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n },\n }) as (...args: T) => R | Promise;\n}\n\n/**\n * Create a deep proxy for Anthropic AI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: AnthropicAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = ANTHROPIC_METHOD_REGISTRY[methodPath as keyof typeof ANTHROPIC_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n return instrumentMethod(\n value as (...args: unknown[]) => unknown | Promise,\n methodPath,\n instrumentedMethod,\n obj,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) as T;\n}\n\n/**\n * Instrument an Anthropic AI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends object\n * @param client - The Anthropic AI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n */\nexport function instrumentAnthropicAiClient(anthropicAiClient: T, options?: AnthropicAiOptions): T {\n return createDeepProxy(anthropicAiClient, '', resolveAIRecordingOptions(options));\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const GOOGLE_GENAI_INTEGRATION_NAME = 'Google_GenAI';\n\n// https://ai.google.dev/api/rest/v1/models/generateContent\n// https://ai.google.dev/api/rest/v1/chats/sendMessage\n// https://googleapis.github.io/js-genai/release_docs/classes/models.Models.html#generatecontentstream\n// https://googleapis.github.io/js-genai/release_docs/classes/chats.Chat.html#sendmessagestream\nexport const GOOGLE_GENAI_METHOD_REGISTRY = {\n 'models.generateContent': { operation: 'generate_content' },\n 'models.generateContentStream': { operation: 'generate_content', streaming: true },\n 'models.embedContent': { operation: 'embeddings' },\n 'chats.create': { operation: 'chat' },\n // chat.* paths are built by createDeepProxy when it proxies the chat instance with CHAT_PATH as base\n 'chat.sendMessage': { operation: 'chat' },\n 'chat.sendMessageStream': { operation: 'chat', streaming: true },\n} as const satisfies InstrumentedMethodRegistry;\n\n// Constants for internal use\nexport const GOOGLE_GENAI_SYSTEM_NAME = 'google_genai';\nexport const CHATS_CREATE_METHOD = 'chats.create';\nexport const CHAT_PATH = 'chat';\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { GoogleGenAIResponse } from './types';\n\n/**\n * State object used to accumulate information from a stream of Google GenAI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId?: string;\n /** The model name. */\n responseModel?: string;\n /** Number of prompt/input tokens used. */\n promptTokens?: number;\n /** Number of completion/output tokens used. */\n completionTokens?: number;\n /** Number of total tokens used. */\n totalTokens?: number;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\n}\n\n/**\n * Checks if a response chunk contains an error\n * @param chunk - The response chunk to check\n * @param span - The span to update if error is found\n * @returns Whether an error occurred\n */\nfunction isErrorChunk(chunk: GoogleGenAIResponse, span: Span): boolean {\n const feedback = chunk?.promptFeedback;\n if (feedback?.blockReason) {\n const message = feedback.blockReasonMessage ?? feedback.blockReason;\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(`Content blocked: ${message}`, {\n mechanism: { handled: false, type: 'auto.ai.google_genai' },\n });\n return true;\n }\n return false;\n}\n\n/**\n * Processes response metadata from a chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n */\nfunction handleResponseMetadata(chunk: GoogleGenAIResponse, state: StreamingState): void {\n if (typeof chunk.responseId === 'string') state.responseId = chunk.responseId;\n if (typeof chunk.modelVersion === 'string') state.responseModel = chunk.modelVersion;\n\n const usage = chunk.usageMetadata;\n if (usage) {\n if (typeof usage.promptTokenCount === 'number') state.promptTokens = usage.promptTokenCount;\n if (typeof usage.candidatesTokenCount === 'number') state.completionTokens = usage.candidatesTokenCount;\n if (typeof usage.totalTokenCount === 'number') state.totalTokens = usage.totalTokenCount;\n }\n}\n\n/**\n * Processes candidate content from a response chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n */\nfunction handleCandidateContent(chunk: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean): void {\n if (Array.isArray(chunk.functionCalls)) {\n state.toolCalls.push(...chunk.functionCalls);\n }\n\n for (const candidate of chunk.candidates ?? []) {\n if (candidate?.finishReason && !state.finishReasons.includes(candidate.finishReason)) {\n state.finishReasons.push(candidate.finishReason);\n }\n\n for (const part of candidate?.content?.parts ?? []) {\n if (recordOutputs && part.text) state.responseTexts.push(part.text);\n if (part.functionCall) {\n state.toolCalls.push({\n type: 'function',\n id: part.functionCall.id,\n name: part.functionCall.name,\n arguments: part.functionCall.args,\n });\n }\n }\n }\n}\n\n/**\n * Processes a single chunk from the Google GenAI stream\n * @param chunk - The chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processChunk(chunk: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean, span: Span): void {\n if (!chunk || isErrorChunk(chunk, span)) return;\n handleResponseMetadata(chunk, state);\n handleCandidateContent(chunk, state, recordOutputs);\n}\n\n/**\n * Instruments an async iterable stream of Google GenAI response chunks, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each chunk from the input stream unchanged.\n */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n toolCalls: [],\n };\n\n try {\n for await (const chunk of stream) {\n processChunk(chunk, state, recordOutputs, span);\n yield chunk;\n }\n } finally {\n const attrs: Record = {\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n };\n\n if (state.responseId) attrs[GEN_AI_RESPONSE_ID_ATTRIBUTE] = state.responseId;\n if (state.responseModel) attrs[GEN_AI_RESPONSE_MODEL_ATTRIBUTE] = state.responseModel;\n if (state.promptTokens !== undefined) attrs[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = state.promptTokens;\n if (state.completionTokens !== undefined) attrs[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = state.completionTokens;\n if (state.totalTokens !== undefined) attrs[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = state.totalTokens;\n\n if (state.finishReasons.length) {\n attrs[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE] = JSON.stringify(state.finishReasons);\n }\n if (recordOutputs && state.responseTexts.length) {\n attrs[GEN_AI_RESPONSE_TEXT_ATTRIBUTE] = state.responseTexts.join('');\n }\n if (recordOutputs && state.toolCalls.length) {\n attrs[GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE] = JSON.stringify(state.toolCalls);\n }\n\n span.setAttributes(attrs);\n span.end();\n }\n}\n","// Copied from https://googleapis.github.io/js-genai/release_docs/index.html\nexport type ContentListUnion = Content | Content[] | PartListUnion;\nexport type ContentUnion = Content | PartUnion[] | PartUnion;\nexport type Content = {\n parts?: Part[];\n role?: string;\n};\nexport type PartUnion = Part | string;\nexport type Part = Record & {\n inlineData?: {\n data?: string;\n displayName?: string;\n mimeType?: string;\n };\n text?: string;\n};\nexport type PartListUnion = PartUnion[] | PartUnion;\n\n// our consistent span message shape\nexport type Message = Record & {\n role: string;\n content?: PartListUnion;\n parts?: PartListUnion;\n};\n\n/**\n *\n */\nexport function contentUnionToMessages(content: ContentListUnion, role = 'user'): Message[] {\n if (typeof content === 'string') {\n return [{ role, content }];\n }\n if (Array.isArray(content)) {\n return content.flatMap(content => contentUnionToMessages(content, role));\n }\n if (typeof content !== 'object' || !content) return [];\n if ('role' in content && typeof content.role === 'string') {\n return [content as Message];\n }\n if ('parts' in content) {\n return [{ ...content, role } as Message];\n }\n return [{ role, content }];\n}\n","/* eslint-disable max-lines */\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport { buildMethodPath, extractSystemInstructions, resolveAIRecordingOptions } from '../ai/utils';\nimport { CHAT_PATH, CHATS_CREATE_METHOD, GOOGLE_GENAI_METHOD_REGISTRY, GOOGLE_GENAI_SYSTEM_NAME } from './constants';\nimport { instrumentStream } from './streaming';\nimport type { Candidate, ContentPart, GoogleGenAIOptions, GoogleGenAIResponse } from './types';\nimport type { ContentListUnion, ContentUnion, Message, PartListUnion } from './utils';\nimport { contentUnionToMessages } from './utils';\n\n/**\n * Extract model from parameters or chat context object\n * For chat instances, the model is available on the chat object as 'model' (older versions) or 'modelVersion' (newer versions)\n */\nexport function extractModel(params: Record, context?: unknown): string {\n if ('model' in params && typeof params.model === 'string') {\n return params.model;\n }\n\n // Try to get model from chat context object (chat instance has model property)\n if (context && typeof context === 'object') {\n const contextObj = context as Record;\n\n // Check for 'model' property (older versions, and streaming)\n if ('model' in contextObj && typeof contextObj.model === 'string') {\n return contextObj.model;\n }\n\n // Check for 'modelVersion' property (newer versions)\n if ('modelVersion' in contextObj && typeof contextObj.modelVersion === 'string') {\n return contextObj.modelVersion;\n }\n }\n\n return 'unknown';\n}\n\n/**\n * Extract generation config parameters\n */\nfunction extractConfigAttributes(config: Record): Record {\n const attributes: Record = {};\n\n if ('temperature' in config && typeof config.temperature === 'number') {\n attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = config.temperature;\n }\n if ('topP' in config && typeof config.topP === 'number') {\n attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = config.topP;\n }\n if ('topK' in config && typeof config.topK === 'number') {\n attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = config.topK;\n }\n if ('maxOutputTokens' in config && typeof config.maxOutputTokens === 'number') {\n attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = config.maxOutputTokens;\n }\n if ('frequencyPenalty' in config && typeof config.frequencyPenalty === 'number') {\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = config.frequencyPenalty;\n }\n if ('presencePenalty' in config && typeof config.presencePenalty === 'number') {\n attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = config.presencePenalty;\n }\n\n return attributes;\n}\n\n/**\n * Extract request attributes from method arguments\n * Builds the base attributes for span creation including system info, model, and config\n */\nfunction extractRequestAttributes(\n operationName: string,\n params?: Record,\n context?: unknown,\n): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: GOOGLE_GENAI_SYSTEM_NAME,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.google_genai',\n };\n\n if (params) {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel(params, context);\n\n // Extract generation config parameters\n if ('config' in params && typeof params.config === 'object' && params.config) {\n const config = params.config as Record;\n Object.assign(attributes, extractConfigAttributes(config));\n\n // Extract available tools from config\n if ('tools' in config && Array.isArray(config.tools)) {\n const functionDeclarations = config.tools.flatMap(\n (tool: { functionDeclarations: unknown[] }) => tool.functionDeclarations,\n );\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(functionDeclarations);\n }\n }\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel({}, context);\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n * Handles different parameter formats for different Google GenAI methods.\n */\nfunction addPrivateRequestAttributes(span: Span, params: Record, isEmbeddings: boolean): void {\n if (isEmbeddings) {\n const contents = params.contents;\n if (contents != null) {\n span.setAttribute(\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n typeof contents === 'string' ? contents : JSON.stringify(contents),\n );\n }\n return;\n }\n\n const messages: Message[] = [];\n\n // config.systemInstruction: ContentUnion\n if (\n 'config' in params &&\n params.config &&\n typeof params.config === 'object' &&\n 'systemInstruction' in params.config &&\n params.config.systemInstruction\n ) {\n messages.push(...contentUnionToMessages(params.config.systemInstruction as ContentUnion, 'system'));\n }\n\n // For chats.create: history contains the conversation history\n if ('history' in params) {\n messages.push(...contentUnionToMessages(params.history as PartListUnion, 'user'));\n }\n\n // For models.generateContent: ContentListUnion\n if ('contents' in params) {\n messages.push(...contentUnionToMessages(params.contents as ContentListUnion, 'user'));\n }\n\n // For chat.sendMessage: message can be PartListUnion\n if ('message' in params) {\n messages.push(...contentUnionToMessages(params.message as PartListUnion, 'user'));\n }\n\n if (Array.isArray(messages) && messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncateGenAiMessages(filteredMessages as unknown[])),\n });\n }\n}\n\n/**\n * Add response attributes from the Google GenAI response\n * @see https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L2313\n */\nfunction addResponseAttributes(span: Span, response: GoogleGenAIResponse, recordOutputs?: boolean): void {\n if (!response || typeof response !== 'object') return;\n\n if (response.modelVersion) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, response.modelVersion);\n }\n\n // Add usage metadata if present\n if (response.usageMetadata && typeof response.usageMetadata === 'object') {\n const usage = response.usageMetadata;\n if (typeof usage.promptTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: usage.promptTokenCount,\n });\n }\n if (typeof usage.candidatesTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: usage.candidatesTokenCount,\n });\n }\n if (typeof usage.totalTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: usage.totalTokenCount,\n });\n }\n }\n\n // Add response text if recordOutputs is enabled\n if (recordOutputs && Array.isArray(response.candidates) && response.candidates.length > 0) {\n const responseTexts = response.candidates\n .map((candidate: Candidate) => {\n if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {\n return candidate.content.parts\n .map((part: ContentPart) => (typeof part.text === 'string' ? part.text : ''))\n .filter((text: string) => text.length > 0)\n .join('');\n }\n return '';\n })\n .filter((text: string) => text.length > 0);\n\n if (responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: responseTexts.join(''),\n });\n }\n }\n\n // Add tool calls if recordOutputs is enabled\n if (recordOutputs && response.functionCalls) {\n const functionCalls = response.functionCalls;\n if (Array.isArray(functionCalls) && functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n}\n\n/**\n * Instrument any async or synchronous genai method with Sentry spans\n * Handles operations like models.generateContent and chat.sendMessage and chats.create\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => R | Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: GoogleGenAIOptions,\n): (...args: T) => R | Promise {\n const isSyncCreate = methodPath === CHATS_CREATE_METHOD;\n const isEmbeddings = instrumentedMethod.operation === 'embeddings';\n\n return new Proxy(originalMethod, {\n apply(target, _, args: T): R | Promise {\n const operationName = instrumentedMethod.operation;\n const params = args[0] as Record | undefined;\n const requestAttributes = extractRequestAttributes(operationName, params, context);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n\n // Check if this is a streaming method\n if (instrumentedMethod.streaming) {\n // Use startSpanManual for streaming methods to control span lifecycle\n return startSpanManual(\n {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes,\n },\n async (span: Span) => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params, isEmbeddings);\n }\n const stream = await target.apply(context, args);\n return instrumentStream(stream, span, Boolean(options.recordOutputs)) as R;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.google_genai',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n },\n );\n }\n // Single span for both sync and async operations\n return startSpan(\n {\n name: isSyncCreate ? `${operationName} ${model} create` : `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes,\n },\n (span: Span) => {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params, isEmbeddings);\n }\n\n return handleCallbackErrors(\n () => target.apply(context, args),\n error => {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.google_genai', data: { function: methodPath } },\n });\n },\n () => {},\n result => {\n // Only add response attributes for content-producing methods, not for chats.create or embeddings\n if (!isSyncCreate && !isEmbeddings) {\n addResponseAttributes(span, result, options.recordOutputs);\n }\n },\n );\n },\n );\n },\n }) as (...args: T) => R | Promise;\n}\n\n/**\n * Create a deep proxy for Google GenAI client instrumentation\n * Recursively instruments methods and handles special cases like chats.create\n */\nfunction createDeepProxy(target: T, currentPath = '', options: GoogleGenAIOptions): T {\n return new Proxy(target, {\n get: (t, prop, receiver) => {\n const value = Reflect.get(t, prop, receiver);\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = GOOGLE_GENAI_METHOD_REGISTRY[methodPath as keyof typeof GOOGLE_GENAI_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n // Special case: chats.create is synchronous but needs both instrumentation AND result proxying\n if (methodPath === CHATS_CREATE_METHOD) {\n const wrappedMethod = instrumentMethod(\n value as (...args: unknown[]) => unknown,\n methodPath,\n instrumentedMethod,\n t,\n options,\n );\n return function instrumentedAndProxiedCreate(...args: unknown[]): unknown {\n const result = wrappedMethod(...args);\n // If the result is an object (like a chat instance), proxy it too\n if (result && typeof result === 'object') {\n return createDeepProxy(result, CHAT_PATH, options);\n }\n return result;\n };\n }\n\n return instrumentMethod(\n value as (...args: unknown[]) => Promise,\n methodPath,\n instrumentedMethod,\n t,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context\n return value.bind(t);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n });\n}\n\n/**\n * Instrument a Google GenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends client object\n * @param client - The Google GenAI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n *\n * @example\n * ```typescript\n * import { GoogleGenAI } from '@google/genai';\n * import { instrumentGoogleGenAIClient } from '@sentry/core';\n *\n * const genAI = new GoogleGenAI({ apiKey: process.env.GOOGLE_GENAI_API_KEY });\n * const instrumentedClient = instrumentGoogleGenAIClient(genAI);\n *\n * // Now both chats.create and sendMessage will be instrumented\n * const chat = instrumentedClient.chats.create({ model: 'gemini-1.5-pro' });\n * const response = await chat.sendMessage({ message: 'Hello' });\n * ```\n */\nexport function instrumentGoogleGenAIClient(client: T, options?: GoogleGenAIOptions): T {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n","export const LANGCHAIN_INTEGRATION_NAME = 'LangChain';\nexport const LANGCHAIN_ORIGIN = 'auto.ai.langchain';\n\nexport const ROLE_MAP: Record = {\n human: 'user',\n ai: 'assistant',\n assistant: 'assistant',\n system: 'system',\n function: 'function',\n tool: 'tool',\n};\n","import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { isContentMedia, stripInlineMediaFromSingleMessage } from '../ai/mediaStripping';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions } from '../ai/utils';\nimport { LANGCHAIN_ORIGIN, ROLE_MAP } from './constants';\nimport type { LangChainLLMResult, LangChainMessage, LangChainSerialized } from './types';\n\n/**\n * Assigns an attribute only when the value is neither `undefined` nor `null`.\n *\n * We keep this tiny helper because call sites are repetitive and easy to miswrite.\n * It also preserves falsy-but-valid values like `0` and `\"\"`.\n */\nconst setIfDefined = (target: Record, key: string, value: unknown): void => {\n if (value != null) target[key] = value as SpanAttributeValue;\n};\n\n/**\n * Like `setIfDefined`, but converts the value with `Number()` and skips only when the\n * result is `NaN`. This ensures numeric 0 makes it through (unlike truthy checks).\n */\nconst setNumberIfDefined = (target: Record, key: string, value: unknown): void => {\n const n = Number(value);\n if (!Number.isNaN(n)) target[key] = n;\n};\n\n/**\n * Converts a value to a string. Avoids double-quoted JSON strings where a plain\n * string is desired, but still handles objects/arrays safely.\n */\nfunction asString(v: unknown): string {\n if (typeof v === 'string') return v;\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\n/**\n * Converts message content to a string, stripping inline media (base64 images, audio, etc.)\n * from multimodal content before stringification so downstream media stripping can't miss it.\n *\n * @example\n * // String content passes through unchanged:\n * normalizeContent(\"Hello\") // => \"Hello\"\n *\n * // Multimodal array content — media is replaced with \"[Blob substitute]\" before JSON.stringify:\n * normalizeContent([\n * { type: \"text\", text: \"What color?\" },\n * { type: \"image_url\", image_url: { url: \"data:image/png;base64,iVBOR...\" } }\n * ])\n * // => '[{\"type\":\"text\",\"text\":\"What color?\"},{\"type\":\"image_url\",\"image_url\":{\"url\":\"[Blob substitute]\"}}]'\n *\n * // Without this, asString() would JSON.stringify the raw array and the base64 blob\n * // would end up in span attributes, since downstream stripping only works on objects.\n */\nfunction normalizeContent(v: unknown): string {\n if (Array.isArray(v)) {\n try {\n const stripped = v.map(part =>\n part && typeof part === 'object' && isContentMedia(part) ? stripInlineMediaFromSingleMessage(part) : part,\n );\n return JSON.stringify(stripped);\n } catch {\n return String(v);\n }\n }\n return asString(v);\n}\n\n/**\n * Normalizes a single role token to our canonical set.\n *\n * @param role Incoming role value (free-form, any casing)\n * @returns Canonical role: 'user' | 'assistant' | 'system' | 'function' | 'tool' | \n */\nfunction normalizeMessageRole(role: string): string {\n const normalized = role.toLowerCase();\n return ROLE_MAP[normalized] ?? normalized;\n}\n\n/**\n * Infers a role from a LangChain message constructor name.\n *\n * Checks for substrings like \"System\", \"Human\", \"AI\", etc.\n */\nfunction normalizeRoleNameFromCtor(name: string): string {\n if (name.includes('System')) return 'system';\n if (name.includes('Human')) return 'user';\n if (name.includes('AI') || name.includes('Assistant')) return 'assistant';\n if (name.includes('Function')) return 'function';\n if (name.includes('Tool')) return 'tool';\n return 'user';\n}\n\n/**\n * Returns invocation params from a LangChain `tags` object.\n *\n * LangChain often passes runtime parameters (model, temperature, etc.) via the\n * `tags.invocation_params` bag. If `tags` is an array (LangChain sometimes uses\n * string tags), we return `undefined`.\n *\n * @param tags LangChain tags (string[] or record)\n * @returns The `invocation_params` object, if present\n */\nexport function getInvocationParams(tags?: string[] | Record): Record | undefined {\n if (!tags || Array.isArray(tags)) return undefined;\n return tags.invocation_params as Record | undefined;\n}\n\n/**\n * Normalizes a heterogeneous set of LangChain messages to `{ role, content }`.\n *\n * Why so many branches? LangChain messages can arrive in several shapes:\n * - Message classes with `_getType()` (most reliable)\n * - Classes with meaningful constructor names (e.g. `SystemMessage`)\n * - Plain objects with `type`, or `{ role, content }`\n * - Serialized format with `{ lc: 1, id: [...], kwargs: { content } }`\n * We preserve the prioritization to minimize behavioral drift.\n *\n * @param messages Mixed LangChain messages\n * @returns Array of normalized `{ role, content }`\n */\nexport function normalizeLangChainMessages(messages: LangChainMessage[]): Array<{ role: string; content: string }> {\n return messages.map(message => {\n // 1) Prefer _getType() when present\n const maybeGetType = (message as { _getType?: () => string })._getType;\n if (typeof maybeGetType === 'function') {\n const messageType = maybeGetType.call(message);\n return {\n role: normalizeMessageRole(messageType),\n content: normalizeContent(message.content),\n };\n }\n\n // 2) Serialized LangChain format (lc: 1) - check before constructor name\n // This is more reliable than constructor.name which can be lost during serialization\n if (message.lc === 1 && message.kwargs) {\n const id = message.id;\n const messageType = Array.isArray(id) && id.length > 0 ? id[id.length - 1] : '';\n const role = typeof messageType === 'string' ? normalizeRoleNameFromCtor(messageType) : 'user';\n\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.kwargs?.content),\n };\n }\n\n // 3) Then objects with `type`\n if (message.type) {\n const role = String(message.type).toLowerCase();\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.content),\n };\n }\n\n // 4) Then objects with `{ role, content }` - check before constructor name\n // Plain objects have constructor.name=\"Object\" which would incorrectly default to \"user\"\n if (message.role) {\n return {\n role: normalizeMessageRole(String(message.role)),\n content: normalizeContent(message.content),\n };\n }\n\n // 5) Then try constructor name (SystemMessage / HumanMessage / ...)\n // Only use this if we haven't matched a more specific case\n const ctor = (message as { constructor?: { name?: string } }).constructor?.name;\n if (ctor && ctor !== 'Object') {\n return {\n role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)),\n content: normalizeContent(message.content),\n };\n }\n\n // 6) Fallback: treat as user text\n return {\n role: 'user',\n content: normalizeContent(message.content),\n };\n });\n}\n\n/**\n * Extracts request attributes common to both LLM and ChatModel invocations.\n *\n * Source precedence:\n * 1) `invocationParams` (highest)\n * 2) `langSmithMetadata`\n *\n * Numeric values are set even when 0 (e.g. `temperature: 0`), but skipped if `NaN`.\n */\nfunction extractCommonRequestAttributes(\n serialized: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const attrs: Record = {};\n\n // Get kwargs if available (from constructor type)\n const kwargs = 'kwargs' in serialized ? serialized.kwargs : undefined;\n\n const temperature = invocationParams?.temperature ?? langSmithMetadata?.ls_temperature ?? kwargs?.temperature;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, temperature);\n\n const maxTokens = invocationParams?.max_tokens ?? langSmithMetadata?.ls_max_tokens ?? kwargs?.max_tokens;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, maxTokens);\n\n const topP = invocationParams?.top_p ?? kwargs?.top_p;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, topP);\n\n const frequencyPenalty = invocationParams?.frequency_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, frequencyPenalty);\n\n const presencePenalty = invocationParams?.presence_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, presencePenalty);\n\n // LangChain uses `stream`. We only set the attribute if the key actually exists\n // (some callbacks report `false` even on streamed requests, this stems from LangChain's callback handler).\n if (invocationParams && 'stream' in invocationParams) {\n setIfDefined(attrs, GEN_AI_REQUEST_STREAM_ATTRIBUTE, Boolean(invocationParams.stream));\n }\n\n return attrs;\n}\n\n/**\n * Small helper to assemble boilerplate attributes shared by both request extractors.\n * Always uses 'chat' as the operation type for all LLM and chat model operations.\n */\nfunction baseRequestAttributes(\n system: unknown,\n modelName: unknown,\n serialized: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n return {\n [GEN_AI_SYSTEM_ATTRIBUTE]: asString(system ?? 'langchain'),\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'chat',\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: asString(modelName),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n ...extractCommonRequestAttributes(serialized, invocationParams, langSmithMetadata),\n };\n}\n\n/**\n * Extracts attributes for plain LLM invocations (string prompts).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain LLM operations are treated as chat operations.\n * - When `recordInputs` is true, string prompts are wrapped into `{role:\"user\"}`\n * messages to align with the chat schema used elsewhere.\n */\nexport function extractLLMRequestAttributes(\n llm: LangChainSerialized,\n prompts: string[],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const system = langSmithMetadata?.ls_provider;\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(prompts) && prompts.length > 0) {\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, prompts.length);\n const messages = prompts.map(p => ({ role: 'user', content: p }));\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(messages));\n }\n\n return attrs;\n}\n\n/**\n * Extracts attributes for ChatModel invocations (array-of-arrays of messages).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain chat model operations are chat operations.\n * - We flatten LangChain's `LangChainMessage[][]` and normalize shapes into a\n * consistent `{ role, content }` array when `recordInputs` is true.\n * - Provider system value falls back to `serialized.id?.[2]`.\n */\nexport function extractChatModelRequestAttributes(\n llm: LangChainSerialized,\n langChainMessages: LangChainMessage[][],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const system = langSmithMetadata?.ls_provider ?? llm.id?.[2];\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(langChainMessages) && langChainMessages.length > 0) {\n const normalized = normalizeLangChainMessages(langChainMessages.flat());\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalized);\n\n if (systemInstructions) {\n setIfDefined(attrs, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredLength);\n\n const truncated = truncateGenAiMessages(filteredMessages as unknown[]);\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(truncated));\n }\n\n return attrs;\n}\n\n/**\n * Scans generations for Anthropic-style `tool_use` items and records them.\n *\n * LangChain represents some provider messages (e.g., Anthropic) with a `message.content`\n * array that may include objects `{ type: 'tool_use', ... }`. We collect and attach\n * them as a JSON array on `gen_ai.response.tool_calls` for downstream consumers.\n */\nfunction addToolCallsAttributes(generations: LangChainMessage[][], attrs: Record): void {\n const toolCalls: unknown[] = [];\n const flatGenerations = generations.flat();\n\n for (const gen of flatGenerations) {\n const content = gen.message?.content;\n if (Array.isArray(content)) {\n for (const item of content) {\n const t = item as { type: string };\n if (t.type === 'tool_use') toolCalls.push(t);\n }\n }\n }\n\n if (toolCalls.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, asString(toolCalls));\n }\n}\n\n/**\n * Adds token usage attributes, supporting both OpenAI (`tokenUsage`) and Anthropic (`usage`) formats.\n * - Preserve zero values (0 tokens) by avoiding truthy checks.\n * - Compute a total for Anthropic when not explicitly provided.\n * - Include cache token metrics when present.\n */\nfunction addTokenUsageAttributes(\n llmOutput: LangChainLLMResult['llmOutput'],\n attrs: Record,\n): void {\n if (!llmOutput) return;\n\n const tokenUsage = llmOutput.tokenUsage as\n | { promptTokens?: number; completionTokens?: number; totalTokens?: number }\n | undefined;\n const anthropicUsage = llmOutput.usage as\n | {\n input_tokens?: number;\n output_tokens?: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n }\n | undefined;\n\n if (tokenUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, tokenUsage.promptTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, tokenUsage.completionTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, tokenUsage.totalTokens);\n } else if (anthropicUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.input_tokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, anthropicUsage.output_tokens);\n\n // Compute total when not provided by the provider.\n const input = Number(anthropicUsage.input_tokens);\n const output = Number(anthropicUsage.output_tokens);\n const total = (Number.isNaN(input) ? 0 : input) + (Number.isNaN(output) ? 0 : output);\n if (total > 0) setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, total);\n\n // Extra Anthropic cache metrics (present only when caching is enabled)\n if (anthropicUsage.cache_creation_input_tokens !== undefined)\n setNumberIfDefined(\n attrs,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n anthropicUsage.cache_creation_input_tokens,\n );\n if (anthropicUsage.cache_read_input_tokens !== undefined)\n setNumberIfDefined(attrs, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.cache_read_input_tokens);\n }\n}\n\n/**\n * Extracts response-related attributes based on a `LangChainLLMResult`.\n *\n * - Records finish reasons when present on generations (e.g., OpenAI)\n * - When `recordOutputs` is true, captures textual response content and any\n * tool calls.\n * - Also propagates model name (`model_name` or `model`), response `id`, and\n * `stop_reason` (for providers that use it).\n */\nexport function extractLlmResponseAttributes(\n llmResult: LangChainLLMResult,\n recordOutputs: boolean,\n): Record | undefined {\n if (!llmResult) return;\n\n const attrs: Record = {};\n\n if (Array.isArray(llmResult.generations)) {\n const finishReasons = llmResult.generations\n .flat()\n .map(g => {\n // v1 uses generationInfo.finish_reason\n if (g.generationInfo?.finish_reason) {\n return g.generationInfo.finish_reason;\n }\n // v0.3+ uses generation_info.finish_reason\n if (g.generation_info?.finish_reason) {\n return g.generation_info.finish_reason;\n }\n return null;\n })\n .filter((r): r is string => typeof r === 'string');\n\n if (finishReasons.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, asString(finishReasons));\n }\n\n // Tool calls metadata (names, IDs) are not PII, so capture them regardless of recordOutputs\n addToolCallsAttributes(llmResult.generations as LangChainMessage[][], attrs);\n\n if (recordOutputs) {\n const texts = llmResult.generations\n .flat()\n .map(gen => gen.text ?? gen.message?.content)\n .filter(t => typeof t === 'string');\n\n if (texts.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, asString(texts));\n }\n }\n }\n\n addTokenUsageAttributes(llmResult.llmOutput, attrs);\n\n const llmOutput = llmResult.llmOutput;\n\n // Extract from v1 generations structure if available\n const firstGeneration = llmResult.generations?.[0]?.[0];\n const v1Message = firstGeneration?.message;\n\n // Provider model identifier: `model_name` (OpenAI-style) or `model` (others)\n // v1 stores this in message.response_metadata.model_name\n const modelName = llmOutput?.model_name ?? llmOutput?.model ?? v1Message?.response_metadata?.model_name;\n if (modelName) setIfDefined(attrs, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, modelName);\n\n // Response ID: v1 stores this in message.id\n const responseId = llmOutput?.id ?? v1Message?.id;\n if (responseId) {\n setIfDefined(attrs, GEN_AI_RESPONSE_ID_ATTRIBUTE, responseId);\n }\n\n // Stop reason: v1 stores this in message.response_metadata.finish_reason\n const stopReason = llmOutput?.stop_reason ?? v1Message?.response_metadata?.finish_reason;\n if (stopReason) {\n setIfDefined(attrs, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, asString(stopReason));\n }\n\n return attrs;\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { resolveAIRecordingOptions } from '../ai/utils';\nimport { LANGCHAIN_ORIGIN } from './constants';\nimport type {\n LangChainCallbackHandler,\n LangChainLLMResult,\n LangChainMessage,\n LangChainOptions,\n LangChainSerialized,\n} from './types';\nimport {\n extractChatModelRequestAttributes,\n extractLLMRequestAttributes,\n extractLlmResponseAttributes,\n getInvocationParams,\n} from './utils';\n\n/**\n * Creates a Sentry callback handler for LangChain\n * Returns a plain object that LangChain will call via duck-typing\n *\n * This is a stateful handler that tracks spans across multiple LangChain executions.\n */\nexport function createLangChainCallbackHandler(options: LangChainOptions = {}): LangChainCallbackHandler {\n const { recordInputs, recordOutputs } = resolveAIRecordingOptions(options);\n\n // Internal state - single instance tracks all spans\n const spanMap = new Map();\n\n /**\n * Exit a span and clean up\n */\n const exitSpan = (runId: string): void => {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.end();\n spanMap.delete(runId);\n }\n };\n\n /**\n * Handler for LLM Start\n * This handler will be called by LangChain's callback handler when an LLM event is detected.\n */\n const handler: LangChainCallbackHandler = {\n // Required LangChain BaseCallbackHandler properties\n lc_serializable: false,\n lc_namespace: ['langchain_core', 'callbacks', 'sentry'],\n lc_secrets: undefined,\n lc_attributes: undefined,\n lc_aliases: undefined,\n lc_serializable_keys: undefined,\n lc_id: ['langchain_core', 'callbacks', 'sentry'],\n lc_kwargs: {},\n name: 'SentryCallbackHandler',\n\n // BaseCallbackHandlerInput boolean flags\n ignoreLLM: false,\n ignoreChain: false,\n ignoreAgent: false,\n ignoreRetriever: false,\n ignoreCustomEvent: false,\n raiseError: false,\n awaitHandlers: true,\n\n handleLLMStart(\n llm: unknown,\n prompts: string[],\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractLLMRequestAttributes(\n llm as LangChainSerialized,\n prompts,\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chat Model Start Handler\n handleChatModelStart(\n llm: unknown,\n messages: unknown,\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractChatModelRequestAttributes(\n llm as LangChainSerialized,\n messages as LangChainMessage[][],\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // LLM End Handler - note: handleLLMEnd with capital LLM (used by both LLMs and chat models!)\n handleLLMEnd(\n output: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _extraParams?: Record,\n ) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n const attributes = extractLlmResponseAttributes(output as LangChainLLMResult, recordOutputs);\n if (attributes) {\n span.setAttributes(attributes);\n }\n exitSpan(runId);\n }\n },\n\n // LLM Error Handler - note: handleLLMError with capital LLM\n handleLLMError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.llm_error_handler`,\n },\n });\n },\n\n // Chain Start Handler\n handleChainStart(\n chain: { name?: string },\n inputs: Record,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _metadata?: Record,\n _runType?: string,\n runName?: string,\n ) {\n const chainName = runName || chain.name || 'unknown_chain';\n const attributes: Record = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',\n 'langchain.chain.name': chainName,\n };\n\n // Add inputs if recordInputs is enabled\n if (recordInputs) {\n attributes['langchain.chain.inputs'] = JSON.stringify(inputs);\n }\n\n startSpanManual(\n {\n name: `chain ${chainName}`,\n op: 'gen_ai.invoke_agent',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.invoke_agent',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chain End Handler\n handleChainEnd(outputs: unknown, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add outputs if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n 'langchain.chain.outputs': JSON.stringify(outputs),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Chain Error Handler\n handleChainError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.chain_error_handler`,\n },\n });\n },\n\n // Tool Start Handler\n handleToolStart(tool: { name?: string }, input: string, runId: string, _parentRunId?: string) {\n const toolName = tool.name || 'unknown_tool';\n const attributes: Record = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n [GEN_AI_TOOL_NAME_ATTRIBUTE]: toolName,\n };\n\n // Add input if recordInputs is enabled\n if (recordInputs) {\n attributes[GEN_AI_TOOL_INPUT_ATTRIBUTE] = input;\n }\n\n startSpanManual(\n {\n name: `execute_tool ${toolName}`,\n op: 'gen_ai.execute_tool',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.execute_tool',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Tool End Handler\n handleToolEnd(output: unknown, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add output if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n [GEN_AI_TOOL_OUTPUT_ATTRIBUTE]: JSON.stringify(output),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Tool Error Handler\n handleToolError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.tool_error_handler`,\n },\n });\n },\n\n // LangChain BaseCallbackHandler required methods\n copy() {\n return handler;\n },\n\n toJSON() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n\n toJSONNotImplemented() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n };\n\n return handler;\n}\n","export const LANGGRAPH_INTEGRATION_NAME = 'LangGraph';\nexport const LANGGRAPH_ORIGIN = 'auto.ai.langgraph';\n","import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport type { CompiledGraph, LangGraphTool } from './types';\n\n/**\n * Extract tool calls from messages\n */\nexport function extractToolCalls(messages: Array> | null): unknown[] | null {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const toolCalls: unknown[] = [];\n\n for (const message of messages) {\n if (message && typeof message === 'object') {\n const msgToolCalls = message.tool_calls;\n if (msgToolCalls && Array.isArray(msgToolCalls)) {\n toolCalls.push(...msgToolCalls);\n }\n }\n }\n\n return toolCalls.length > 0 ? toolCalls : null;\n}\n\n/**\n * Extract token usage from a message's usage_metadata or response_metadata\n * Returns token counts without setting span attributes\n */\nexport function extractTokenUsageFromMessage(message: LangChainMessage): {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n} {\n const msg = message as Record;\n let inputTokens = 0;\n let outputTokens = 0;\n let totalTokens = 0;\n\n // Extract from usage_metadata (newer format)\n if (msg.usage_metadata && typeof msg.usage_metadata === 'object') {\n const usage = msg.usage_metadata as Record;\n if (typeof usage.input_tokens === 'number') {\n inputTokens = usage.input_tokens;\n }\n if (typeof usage.output_tokens === 'number') {\n outputTokens = usage.output_tokens;\n }\n if (typeof usage.total_tokens === 'number') {\n totalTokens = usage.total_tokens;\n }\n return { inputTokens, outputTokens, totalTokens };\n }\n\n // Fallback: Extract from response_metadata.tokenUsage\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata as Record;\n if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') {\n const tokenUsage = metadata.tokenUsage as Record;\n if (typeof tokenUsage.promptTokens === 'number') {\n inputTokens = tokenUsage.promptTokens;\n }\n if (typeof tokenUsage.completionTokens === 'number') {\n outputTokens = tokenUsage.completionTokens;\n }\n if (typeof tokenUsage.totalTokens === 'number') {\n totalTokens = tokenUsage.totalTokens;\n }\n }\n }\n\n return { inputTokens, outputTokens, totalTokens };\n}\n\n/**\n * Extract model and finish reason from a message's response_metadata\n */\nexport function extractModelMetadata(span: Span, message: LangChainMessage): void {\n const msg = message as Record;\n\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata as Record;\n\n if (metadata.model_name && typeof metadata.model_name === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, metadata.model_name);\n }\n\n if (metadata.finish_reason && typeof metadata.finish_reason === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, [metadata.finish_reason]);\n }\n }\n}\n\n/**\n * Extract tools from compiled graph structure\n *\n * Tools are stored in: compiledGraph.builder.nodes.tools.runnable.tools\n */\nexport function extractToolsFromCompiledGraph(compiledGraph: CompiledGraph): unknown[] | null {\n if (!compiledGraph.builder?.nodes?.tools?.runnable?.tools) {\n return null;\n }\n\n const tools = compiledGraph.builder?.nodes?.tools?.runnable?.tools;\n\n if (!tools || !Array.isArray(tools) || tools.length === 0) {\n return null;\n }\n\n // Extract name, description, and schema from each tool's lc_kwargs\n return tools.map((tool: LangGraphTool) => ({\n name: tool.lc_kwargs?.name,\n description: tool.lc_kwargs?.description,\n schema: tool.lc_kwargs?.schema,\n }));\n}\n\n/**\n * Set response attributes on the span\n */\nexport function setResponseAttributes(span: Span, inputMessages: LangChainMessage[] | null, result: unknown): void {\n // Extract messages from result\n const resultObj = result as { messages?: LangChainMessage[] } | undefined;\n const outputMessages = resultObj?.messages;\n\n if (!outputMessages || !Array.isArray(outputMessages)) {\n return;\n }\n\n // Get new messages (delta between input and output)\n const inputCount = inputMessages?.length ?? 0;\n const newMessages = outputMessages.length > inputCount ? outputMessages.slice(inputCount) : [];\n\n if (newMessages.length === 0) {\n return;\n }\n\n // Extract and set tool calls from new messages BEFORE normalization\n // (normalization strips tool_calls, so we need to extract them first)\n const toolCalls = extractToolCalls(newMessages as Array>);\n if (toolCalls) {\n span.setAttribute(GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, JSON.stringify(toolCalls));\n }\n\n // Normalize the new messages\n const normalizedNewMessages = normalizeLangChainMessages(newMessages);\n span.setAttribute(GEN_AI_RESPONSE_TEXT_ATTRIBUTE, JSON.stringify(normalizedNewMessages));\n\n // Accumulate token usage across all messages\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalTokens = 0;\n\n // Extract metadata from messages\n for (const message of newMessages) {\n // Accumulate token usage\n const tokens = extractTokenUsageFromMessage(message);\n totalInputTokens += tokens.inputTokens;\n totalOutputTokens += tokens.outputTokens;\n totalTokens += tokens.totalTokens;\n\n // Extract model metadata (last message's metadata wins for model/finish_reason)\n extractModelMetadata(span, message);\n }\n\n // Set accumulated token usage on span\n if (totalInputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, totalInputTokens);\n }\n if (totalOutputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, totalOutputTokens);\n }\n if (totalTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, totalTokens);\n }\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport {\n GEN_AI_AGENT_NAME_ATTRIBUTE,\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PIPELINE_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions, resolveAIRecordingOptions } from '../ai/utils';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport { startSpan } from '../trace';\nimport { LANGGRAPH_ORIGIN } from './constants';\nimport type { CompiledGraph, LangGraphOptions } from './types';\nimport { extractToolsFromCompiledGraph, setResponseAttributes } from './utils';\n\n/**\n * Instruments StateGraph's compile method to create spans for agent creation and invocation\n *\n * Wraps the compile() method to:\n * - Create a `gen_ai.create_agent` span when compile() is called\n * - Automatically wrap the invoke() method on the returned compiled graph with a `gen_ai.invoke_agent` span\n *\n */\nexport function instrumentStateGraphCompile(\n originalCompile: (...args: unknown[]) => CompiledGraph,\n options: LangGraphOptions,\n): (...args: unknown[]) => CompiledGraph {\n return new Proxy(originalCompile, {\n apply(target, thisArg, args: unknown[]): CompiledGraph {\n return startSpan(\n {\n op: 'gen_ai.create_agent',\n name: 'create_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.create_agent',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'create_agent',\n },\n },\n span => {\n try {\n const compiledGraph = Reflect.apply(target, thisArg, args);\n const compileOptions = args.length > 0 ? (args[0] as Record) : {};\n\n // Extract graph name\n if (compileOptions?.name && typeof compileOptions.name === 'string') {\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, compileOptions.name);\n span.updateName(`create_agent ${compileOptions.name}`);\n }\n\n // Instrument agent invoke method on the compiled graph\n const originalInvoke = compiledGraph.invoke;\n if (originalInvoke && typeof originalInvoke === 'function') {\n compiledGraph.invoke = instrumentCompiledGraphInvoke(\n originalInvoke.bind(compiledGraph) as (...args: unknown[]) => Promise,\n compiledGraph,\n compileOptions,\n options,\n ) as typeof originalInvoke;\n }\n\n return compiledGraph;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) as (...args: unknown[]) => CompiledGraph;\n}\n\n/**\n * Instruments CompiledGraph's invoke method to create spans for agent invocation\n *\n * Creates a `gen_ai.invoke_agent` span when invoke() is called\n */\nfunction instrumentCompiledGraphInvoke(\n originalInvoke: (...args: unknown[]) => Promise,\n graphInstance: CompiledGraph,\n compileOptions: Record,\n options: LangGraphOptions,\n): (...args: unknown[]) => Promise {\n return new Proxy(originalInvoke, {\n apply(target, thisArg, args: unknown[]): Promise {\n return startSpan(\n {\n op: 'gen_ai.invoke_agent',\n name: 'invoke_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'invoke_agent',\n },\n },\n async span => {\n try {\n const graphName = compileOptions?.name;\n\n if (graphName && typeof graphName === 'string') {\n span.setAttribute(GEN_AI_PIPELINE_NAME_ATTRIBUTE, graphName);\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, graphName);\n span.updateName(`invoke_agent ${graphName}`);\n }\n\n // Extract thread_id from the config (second argument)\n // LangGraph uses config.configurable.thread_id for conversation/session linking\n const config = args.length > 1 ? (args[1] as Record | undefined) : undefined;\n const configurable = config?.configurable as Record | undefined;\n const threadId = configurable?.thread_id;\n if (threadId && typeof threadId === 'string') {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, threadId);\n }\n\n // Extract available tools from the graph instance\n const tools = extractToolsFromCompiledGraph(graphInstance);\n if (tools) {\n span.setAttribute(GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, JSON.stringify(tools));\n }\n\n // Parse input messages\n const recordInputs = options.recordInputs;\n const recordOutputs = options.recordOutputs;\n const inputMessages =\n args.length > 0 ? ((args[0] as { messages?: LangChainMessage[] } | null)?.messages ?? []) : [];\n\n if (inputMessages && recordInputs) {\n const normalizedMessages = normalizeLangChainMessages(inputMessages);\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalizedMessages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedMessages = truncateGenAiMessages(filteredMessages as unknown[]);\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncatedMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n\n // Call original invoke\n const result = await Reflect.apply(target, thisArg, args);\n\n // Set response attributes\n if (recordOutputs) {\n setResponseAttributes(span, inputMessages ?? null, result);\n }\n\n return result;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) as (...args: unknown[]) => Promise;\n}\n\n/**\n * Directly instruments a StateGraph instance to add tracing spans\n *\n * This function can be used to manually instrument LangGraph StateGraph instances\n * in environments where automatic instrumentation is not available or desired.\n *\n * @param stateGraph - The StateGraph instance to instrument\n * @param options - Optional configuration for recording inputs/outputs\n *\n * @example\n * ```typescript\n * import { instrumentLangGraph } from '@sentry/cloudflare';\n * import { StateGraph } from '@langchain/langgraph';\n *\n * const graph = new StateGraph(MessagesAnnotation)\n * .addNode('agent', mockLlm)\n * .addEdge(START, 'agent')\n * .addEdge('agent', END);\n *\n * instrumentLangGraph(graph, { recordInputs: true, recordOutputs: true });\n * const compiled = graph.compile({ name: 'my_agent' });\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function instrumentLangGraph any }>(\n stateGraph: T,\n options?: LangGraphOptions,\n): T {\n stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile, resolveAIRecordingOptions(options));\n\n return stateGraph;\n}\n","import type { SeverityLevel } from '../types-hoist/severity';\n\n/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nexport function getBreadcrumbLogLevelFromHttpStatusCode(statusCode: number | undefined): SeverityLevel | undefined {\n // NOTE: undefined defaults to 'info' in Sentry\n if (statusCode === undefined) {\n return undefined;\n } else if (statusCode >= 400 && statusCode < 500) {\n return 'warning';\n } else if (statusCode >= 500) {\n return 'error';\n } else {\n return undefined;\n }\n}\n","import type { ConsoleLevel } from '../types-hoist/instrument';\n\n/**\n * An error emitted by Sentry SDKs and related utilities.\n * @deprecated This class is no longer used and will be removed in a future version. Use `Error` instead.\n */\nexport class SentryError extends Error {\n public logLevel: ConsoleLevel;\n\n public constructor(\n public message: string,\n logLevel: ConsoleLevel = 'warn',\n ) {\n super(message);\n\n this.logLevel = logLevel;\n }\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from './debug-logger';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\ndeclare const EdgeRuntime: string | undefined;\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch {\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 */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch {\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 */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch {\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 */\nexport function supportsHistory(): boolean {\n return 'history' in WINDOW && !!WINDOW.history;\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport const supportsFetch = _isFetchSupported;\n\nfunction _isFetchSupported(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n // Deno requires a valid URL so '' cannot be used as an argument\n new Request('data:,');\n new Response();\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * isNative checks if the given function is a native implementation\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFunction(func: Function): boolean {\n return func && /^function\\s+\\w+\\(\\)\\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 */\nexport function supportsNativeFetch(): boolean {\n if (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!_isFetchSupported()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFunction(WINDOW.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 const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow?.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFunction(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n DEBUG_BUILD && debug.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 */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport function supportsReferrerPolicy(): boolean {\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 (!_isFetchSupported()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch {\n return false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getClient } from '../currentScopes';\nimport type { HandlerDataFetch } from '../types-hoist/instrument';\nimport type { WebFetchHeaders } from '../types-hoist/webfetchapi';\nimport { isError, isRequest } from '../utils/is';\nimport { addNonEnumerableProperty, fill } from '../utils/object';\nimport { supportsNativeFetch } from '../utils/supports';\nimport { timestampInSeconds } from '../utils/time';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(\n handler: (data: HandlerDataFetch) => void,\n skipNativeFetchCheck?: boolean,\n): void {\n const type = 'fetch';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck));\n}\n\n/**\n * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch.\n * The handler will resolve the request body and emit the actual `endTimestamp`, so that the\n * span can be updated accordingly.\n *\n * Only used internally\n * @hidden\n */\nexport function addFetchEndInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n const type = 'fetch-body-resolved';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(streamHandler));\n}\n\nfunction instrumentFetch(onFetchResolved?: (response: Response) => void, skipNativeFetchCheck: boolean = false): void {\n if (skipNativeFetchCheck && !supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n // We capture the error right here and not in the Promise error callback because Safari (and probably other\n // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless.\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n const virtualError = new Error();\n\n const { method, url } = parseFetchArgs(args);\n const handlerData: HandlerDataFetch = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: timestampInSeconds() * 1000,\n // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation\n virtualError,\n headers: getHeadersFromFetchArgs(args),\n };\n\n // if there is no callback, fetch is instrumented directly\n if (!onFetchResolved) {\n triggerHandlers('fetch', {\n ...handlerData,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n async (response: Response) => {\n if (onFetchResolved) {\n onFetchResolved(response);\n } else {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n }\n\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n error,\n });\n\n if (isError(error) && error.stack === undefined) {\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n error.stack = virtualError.stack;\n addNonEnumerableProperty(error, 'framesToPop', 1);\n }\n\n // We enhance fetch error messages with hostname information based on the configuration.\n // Possible messages we handle here:\n // * \"Failed to fetch\" (chromium)\n // * \"Load failed\" (webkit)\n // * \"NetworkError when attempting to fetch resource.\" (firefox)\n const client = getClient();\n const enhanceOption = client?.getOptions().enhanceFetchErrorMessages ?? 'always';\n const shouldEnhance = enhanceOption !== false;\n\n if (\n shouldEnhance &&\n error instanceof TypeError &&\n (error.message === 'Failed to fetch' ||\n error.message === 'Load failed' ||\n error.message === 'NetworkError when attempting to fetch resource.')\n ) {\n try {\n const url = new URL(handlerData.fetchData.url);\n const hostname = url.host;\n\n if (enhanceOption === 'always') {\n // Modify the error message directly\n error.message = `${error.message} (${hostname})`;\n } else {\n // Store hostname as non-enumerable property for Sentry-only enhancement\n // This preserves the original error message for third-party packages\n addNonEnumerableProperty(error, '__sentry_fetch_url_host__', hostname);\n }\n } catch {\n // ignore it if errors happen here\n }\n }\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\nasync function resolveResponse(res: Response | undefined, onFinishedResolving: () => void): Promise {\n if (res?.body) {\n const body = res.body;\n const responseReader = body.getReader();\n\n // Define a maximum duration after which we just cancel\n const maxFetchDurationTimeout = setTimeout(\n () => {\n body.cancel().then(null, () => {\n // noop\n });\n },\n 90 * 1000, // 90s\n );\n\n let readingActive = true;\n while (readingActive) {\n let chunkTimeout;\n try {\n // abort reading if read op takes more than 5s\n chunkTimeout = setTimeout(() => {\n body.cancel().then(null, () => {\n // noop on error\n });\n }, 5000);\n\n // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()`\n const { done } = await responseReader.read();\n\n clearTimeout(chunkTimeout);\n\n if (done) {\n onFinishedResolving();\n readingActive = false;\n }\n } catch {\n readingActive = false;\n } finally {\n clearTimeout(chunkTimeout);\n }\n }\n\n clearTimeout(maxFetchDurationTimeout);\n\n responseReader.releaseLock();\n body.cancel().then(null, () => {\n // noop on error\n });\n }\n}\n\nfunction streamHandler(response: Response): void {\n // clone response for awaiting stream\n let clonedResponseForResolving: Response;\n try {\n clonedResponseForResolving = response.clone();\n } catch {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resolveResponse(clonedResponseForResolving, () => {\n triggerHandlers('fetch-body-resolved', {\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n });\n}\n\nfunction hasProp(obj: unknown, prop: T): obj is Record {\n return !!obj && typeof obj === 'object' && !!(obj as Record)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [resource, options] = fetchArgs as [FetchResource, object];\n\n return {\n url: getUrlFromResource(resource),\n method: hasProp(options, 'method')\n ? String(options.method).toUpperCase()\n : // Request object as first argument\n isRequest(resource) && hasProp(resource, 'method')\n ? String(resource.method).toUpperCase()\n : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg as FetchResource),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\nfunction getHeadersFromFetchArgs(fetchArgs: unknown[]): WebFetchHeaders | undefined {\n const [requestArgument, optionsArgument] = fetchArgs;\n\n try {\n if (\n typeof optionsArgument === 'object' &&\n optionsArgument !== null &&\n 'headers' in optionsArgument &&\n optionsArgument.headers\n ) {\n return new Headers(optionsArgument.headers as any);\n }\n\n if (isRequest(requestArgument)) {\n return new Headers(requestArgument.headers);\n }\n } catch {\n // noop\n }\n\n return;\n}\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 * `debug` 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 flags 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\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader' | 'aws-lambda-layer';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // This comment is used to identify this line in the CDN bundle build step and replace this with \"return 'cdn';\"\n /* __SENTRY_SDK_SOURCE__ */ return 'npm';\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 `debug` singleton, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\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 * @param existingModule module to use for requiring\n * @returns possibly required module\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function loadModule(moduleName: string, existingModule: any = module): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(existingModule, moduleName);\n } catch {\n // no-empty\n }\n\n if (!mod) {\n try {\n const { cwd } = dynamicRequire(existingModule, 'process');\n mod = dynamicRequire(existingModule, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch {\n // no-empty\n }\n }\n\n return mod;\n}\n","import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n const process = (GLOBAL_OBJ as typeof GLOBAL_OBJ & { process?: ElectronProcess }).process;\n return process?.type === 'renderer';\n}\n","/**\n * Replaces constructor functions in module exports, handling read-only properties,\n * and both default and named exports by wrapping them with the constructor.\n *\n * @param exports The module exports object to modify\n * @param exportName The name of the export to replace (e.g., 'GoogleGenAI', 'Anthropic', 'OpenAI')\n * @param wrappedConstructor The wrapped constructor function to replace the original with\n * @returns void\n */\nexport function replaceExports(\n exports: { [key: string]: unknown },\n exportName: string,\n wrappedConstructor: unknown,\n): void {\n const original = exports[exportName];\n\n if (typeof original !== 'function') {\n return;\n }\n\n // Replace the named export - handle read-only properties\n try {\n exports[exportName] = wrappedConstructor;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports, exportName, {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Replace the default export if it points to the original constructor\n if (exports.default === original) {\n try {\n exports.default = wrappedConstructor;\n } catch {\n Object.defineProperty(exports, 'default', {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n}\n","// This code was originally forked from https://github.com/felixge/node-stack-trace\n// Since then it has been highly modified to fit our needs.\n\n// Copyright (c) 2011 Felix Geisendörfer (felix@debuggable.com)//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions://\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.//\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport type { StackLineParser, StackLineParserFn } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath, UNKNOWN_FUNCTION } from './stacktrace';\n\nexport type GetModuleFn = (filename: string | undefined) => string | undefined;\n\n/**\n * Does this filename look like it's part of the app code?\n */\nexport function filenameIsInApp(filename: string, isNative: boolean = false): boolean {\n const isInternal =\n isNative ||\n (filename &&\n // It's not internal if it's an absolute linux path\n !filename.startsWith('/') &&\n // It's not internal if it's an absolute windows path\n !filename.match(/^[A-Z]:/) &&\n // It's not internal if the path is starting with a dot\n !filename.startsWith('.') &&\n // It's not internal if the frame has a protocol. In node, this is usually the case if the file got pre-processed with a bundler like webpack\n !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//)); // Schema from: https://stackoverflow.com/a/3641782\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\n return !isInternal && filename !== undefined && !filename.includes('node_modules/');\n}\n\n/** Node Stack line parser */\nexport function node(getModule?: GetModuleFn): StackLineParserFn {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n const DATA_URI_MATCH = /at (?:async )?(.+?) \\(data:(.*?),/;\n\n return (line: string) => {\n const dataUriMatch = line.match(DATA_URI_MATCH);\n if (dataUriMatch) {\n return {\n filename: ``,\n function: dataUriMatch[1],\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n\n if (lineMatch) {\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\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.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(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 || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n let filename = normalizeStackTracePath(lineMatch[2]);\n const isNative = lineMatch[5] === 'native';\n\n if (!filename && lineMatch[5] && !isNative) {\n filename = lineMatch[5];\n }\n\n const maybeDecodedFilename = filename ? _safeDecodeURI(filename) : undefined;\n return {\n filename: maybeDecodedFilename ?? filename,\n module: maybeDecodedFilename && getModule?.(maybeDecodedFilename),\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n };\n }\n\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n return undefined;\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/core 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 */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n\nfunction _parseIntOrUndefined(input: string | undefined): number | undefined {\n return parseInt(input || '', 10) || undefined;\n}\n\nfunction _safeDecodeURI(filename: string): string | undefined {\n try {\n return decodeURI(filename);\n } catch {\n return undefined;\n }\n}\n","import type { StackFrame } from '../types-hoist/stackframe';\nimport { filenameIsInApp } from './node-stack-trace';\nimport { UNKNOWN_FUNCTION } from './stacktrace';\n\ntype WatchdogReturn = {\n /** Resets the watchdog timer */\n poll: () => void;\n /** Enables or disables the watchdog timer */\n enabled: (state: boolean) => void;\n};\n\ntype CreateTimerImpl = () => { getTimeMs: () => number; reset: () => void };\n\n/**\n * A node.js watchdog timer\n * @param pollInterval The interval that we expect to get polled at\n * @param anrThreshold The threshold for when we consider ANR\n * @param callback The callback to call for ANR\n * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn}\n */\nexport function watchdogTimer(\n createTimer: CreateTimerImpl,\n pollInterval: number,\n anrThreshold: number,\n callback: () => void,\n): WatchdogReturn {\n const timer = createTimer();\n let triggered = false;\n let enabled = true;\n\n setInterval(() => {\n const diffMs = timer.getTimeMs();\n\n if (triggered === false && diffMs > pollInterval + anrThreshold) {\n triggered = true;\n if (enabled) {\n callback();\n }\n }\n\n if (diffMs < pollInterval + anrThreshold) {\n triggered = false;\n }\n }, 20);\n\n return {\n poll: () => {\n timer.reset();\n },\n enabled: (state: boolean) => {\n enabled = state;\n },\n };\n}\n\n// types copied from inspector.d.ts\ninterface Location {\n scriptId: string;\n lineNumber: number;\n columnNumber?: number;\n}\n\ninterface CallFrame {\n functionName: string;\n location: Location;\n url: string;\n}\n\n/**\n * Converts Debugger.CallFrame to Sentry StackFrame\n */\nexport function callFrameToStackFrame(\n frame: CallFrame,\n url: string | undefined,\n getModuleFromFilename: (filename: string | undefined) => string | undefined,\n): StackFrame {\n const filename = url ? url.replace(/^file:\\/\\//, '') : undefined;\n\n // CallFrame row/col are 0 based, whereas StackFrame are 1 based\n const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined;\n const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined;\n\n return {\n filename,\n module: getModuleFromFilename(filename),\n function: frame.functionName || UNKNOWN_FUNCTION,\n colno,\n lineno,\n in_app: filename ? filenameIsInApp(filename) : undefined,\n };\n}\n","/** A simple Least Recently Used map */\nexport class LRUMap {\n private readonly _cache: Map;\n\n public constructor(private readonly _maxSize: number) {\n this._cache = new Map();\n }\n\n /** Get the current size of the cache */\n public get size(): number {\n return this._cache.size;\n }\n\n /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */\n public get(key: K): V | undefined {\n const value = this._cache.get(key);\n if (value === undefined) {\n return undefined;\n }\n // Remove and re-insert to update the order\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n\n /** Insert an entry and evict an older entry if we've reached maxSize */\n public set(key: K, value: V): void {\n if (this._cache.size >= this._maxSize) {\n // keys() returns an iterator in insertion order so keys().next() gives us the oldest key\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nextKey = this._cache.keys().next().value!;\n this._cache.delete(nextKey);\n }\n this._cache.set(key, value);\n }\n\n /** Remove an entry and return the entry if it was in the cache */\n public remove(key: K): V | undefined {\n const value = this._cache.get(key);\n if (value) {\n this._cache.delete(key);\n }\n return value;\n }\n\n /** Clear all entries */\n public clear(): void {\n this._cache.clear();\n }\n\n /** Get all the keys */\n public keys(): Array {\n return Array.from(this._cache.keys());\n }\n\n /** Get all the values */\n public values(): Array {\n const values: V[] = [];\n this._cache.forEach(value => values.push(value));\n return values;\n }\n}\n","import { GLOBAL_OBJ } from './worldwide';\n\ndeclare const EdgeRuntime: string | undefined;\n\ninterface VercelRequestContextGlobal {\n get?():\n | {\n waitUntil?: (task: Promise) => void;\n }\n | undefined;\n}\n\n/**\n * Function that delays closing of a Vercel lambda until the provided promise is resolved.\n *\n * Vendored from https://www.npmjs.com/package/@vercel/functions\n */\nexport function vercelWaitUntil(task: Promise): void {\n // We only flush manually in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n if (typeof EdgeRuntime !== 'string') {\n return;\n }\n const vercelRequestContextGlobal: VercelRequestContextGlobal | undefined =\n // @ts-expect-error This is not typed\n GLOBAL_OBJ[Symbol.for('@vercel/request-context')];\n\n const ctx = vercelRequestContextGlobal?.get?.();\n\n if (ctx?.waitUntil) {\n ctx.waitUntil(task);\n }\n}\n","import { flush } from '../exports';\nimport { debug } from './debug-logger';\nimport { vercelWaitUntil } from './vercelWaitUntil';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype MinimalCloudflareContext = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n waitUntil(promise: Promise): void;\n};\n\nasync function flushWithTimeout(timeout: number): Promise {\n try {\n debug.log('Flushing events...');\n await flush(timeout);\n debug.log('Done flushing events');\n } catch (e) {\n debug.log('Error while flushing events:\\n', e);\n }\n}\n\n/**\n * Flushes the event queue with a timeout in serverless environments to ensure that events are sent to Sentry before the\n * serverless function execution ends.\n *\n * The function is async, but in environments that support a `waitUntil` mechanism, it will run synchronously.\n *\n * This function is aware of the following serverless platforms:\n * - Cloudflare: If a Cloudflare context is provided, it will use `ctx.waitUntil()` to flush events (keeps the `this` context of `ctx`).\n * If a `cloudflareWaitUntil` function is provided, it will use that to flush events (looses the `this` context of `ctx`).\n * - Vercel: It detects the Vercel environment and uses Vercel's `waitUntil` function.\n * - Other Serverless (AWS Lambda, Google Cloud, etc.): It detects the environment via environment variables\n * and uses a regular `await flush()`.\n *\n * @internal This function is supposed for internal Sentry SDK usage only.\n * @hidden\n */\nexport async function flushIfServerless(\n params: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | { timeout?: number; cloudflareWaitUntil?: (task: Promise) => void }\n | { timeout?: number; cloudflareCtx?: MinimalCloudflareContext } = {},\n): Promise {\n const { timeout = 2000 } = params;\n\n if ('cloudflareWaitUntil' in params && typeof params?.cloudflareWaitUntil === 'function') {\n params.cloudflareWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if ('cloudflareCtx' in params && typeof params.cloudflareCtx?.waitUntil === 'function') {\n params.cloudflareCtx.waitUntil(flushWithTimeout(timeout));\n return;\n }\n\n // Note: vercelWaitUntil only does something in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n // @ts-expect-error This is not typed\n if (GLOBAL_OBJ[Symbol.for('@vercel/request-context')]) {\n // Vercel has a waitUntil equivalent that works without execution context\n vercelWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if (typeof process === 'undefined') {\n return;\n }\n\n const isServerless =\n !!process.env.FUNCTIONS_WORKER_RUNTIME || // Azure Functions\n !!process.env.LAMBDA_TASK_ROOT || // AWS Lambda\n !!process.env.K_SERVICE || // Google Cloud Run\n !!process.env.CF_PAGES || // Cloudflare Pages\n !!process.env.VERCEL ||\n !!process.env.NETLIFY;\n\n if (isServerless) {\n // Use regular flush for environments without a generic waitUntil mechanism\n await flushWithTimeout(timeout);\n }\n}\n","// Based on https://github.com/sindresorhus/escape-string-regexp but with modifications to:\n// a) reduce the size by skipping the runtime type - checking\n// b) ensure it gets down - compiled for old versions of Node(the published package only supports Node 14+).\n//\n// MIT License\n//\n// Copyright (c) Sindre Sorhus (https://sindresorhus.com)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation\n// the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and\n// to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n// the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\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 * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\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","import { parseSemver } from '@sentry/core';\nimport * as fs from 'fs';\nimport { createRequire } from 'module';\nimport * as path from 'path';\n\n/**\n * Returns the version of Next.js installed in the project, or undefined if it cannot be determined.\n */\nexport function getNextjsVersion(): string | undefined {\n const nextjsPackageJsonPath = resolveNextjsPackageJson();\n if (nextjsPackageJsonPath) {\n try {\n const nextjsPackageJson: { version: string } = JSON.parse(\n fs.readFileSync(nextjsPackageJsonPath, { encoding: 'utf-8' }),\n );\n return nextjsPackageJson.version;\n } catch {\n // noop\n }\n }\n\n return undefined;\n}\n\nfunction resolveNextjsPackageJson(): string | undefined {\n try {\n return createRequire(`${process.cwd()}/`).resolve('next/package.json');\n } catch {\n return undefined;\n }\n}\n\n/**\n * Checks if the current Next.js version supports the runAfterProductionCompile hook.\n * This hook was introduced in Next.js 15.4.1. (https://github.com/vercel/next.js/pull/77345)\n *\n * @param version - version string to check.\n * @returns true if Next.js version is 15.4.1 or higher\n */\nexport function supportsProductionCompileHook(version: string): boolean {\n const versionToCheck = version;\n if (!versionToCheck) {\n return false;\n }\n\n const { major, minor, patch } = parseSemver(versionToCheck);\n\n if (major === undefined || minor === undefined || patch === undefined) {\n return false;\n }\n\n if (major > 15) {\n return true;\n }\n\n // For major version 15, check if it's 15.4.1 or higher\n if (major === 15) {\n if (minor > 4) {\n return true;\n }\n if (minor === 4 && patch >= 1) {\n return true;\n }\n return false;\n }\n\n return false;\n}\n\n/**\n * Checks if the current Next.js version supports the `condition` field in Turbopack rules.\n * This field was introduced in Next.js 16.\n *\n * @param version - version string to check.\n * @returns true if Next.js version is 16 or higher\n */\nexport function supportsTurbopackRuleCondition(version: string): boolean {\n if (!version) {\n return false;\n }\n\n const { major } = parseSemver(version);\n\n if (major === undefined) {\n return false;\n }\n\n return major >= 16;\n}\n\n/**\n * Checks if the current Next.js version supports native debug ids for turbopack.\n * This feature was first introduced in Next.js v15.6.0-canary.36 and marked stable in Next.js v16\n *\n * @param version - version string to check.\n * @returns true if Next.js version supports native debug ids for turbopack builds\n */\nexport function supportsNativeDebugIds(version: string): boolean {\n if (!version) {\n return false;\n }\n\n const { major, minor, prerelease } = parseSemver(version);\n\n if (major === undefined || minor === undefined) {\n return false;\n }\n\n // Next.js 16+ supports native debug ids\n if (major >= 16) {\n return true;\n }\n\n // For Next.js 15, check if it's 15.6.0-canary.36+\n if (major === 15 && prerelease?.startsWith('canary.')) {\n // Any canary version 15.7+ supports native debug ids\n if (minor > 6) {\n return true;\n }\n\n // For 15.6 canary versions, check if it's canary.36 or higher\n if (minor === 6) {\n const canaryNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n if (canaryNumber >= 36) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Checks if the given Next.js version requires the `experimental.instrumentationHook` option.\n * Next.js 15.0.0 and higher (including certain RC and canary versions) no longer require this option\n * and will print a warning if it is set.\n *\n * @param version - version string to check.\n * @returns true if the version requires the instrumentationHook option to be set\n */\nexport function requiresInstrumentationHook(version: string): boolean {\n if (!version) {\n return true; // Default to requiring it if version cannot be determined\n }\n\n const { major, minor, patch, prerelease } = parseSemver(version);\n\n if (major === undefined || minor === undefined || patch === undefined) {\n return true; // Default to requiring it if parsing fails\n }\n\n // Next.js 16+ never requires the hook\n if (major >= 16) {\n return false;\n }\n\n // Next.js 14 and below always require the hook\n if (major < 15) {\n return true;\n }\n\n // At this point, we know it's Next.js 15.x.y\n // Stable releases (15.0.0+) don't require the hook\n if (!prerelease) {\n return false;\n }\n\n // Next.js 15.x.y with x > 0 or y > 0 don't require the hook\n if (minor > 0 || patch > 0) {\n return false;\n }\n\n // Check specific prerelease versions that don't require the hook\n if (prerelease.startsWith('rc.')) {\n const rcNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n return rcNumber === 0; // Only rc.0 requires the hook\n }\n\n if (prerelease.startsWith('canary.')) {\n const canaryNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n return canaryNumber < 124; // canary.124+ doesn't require the hook\n }\n\n // All other 15.0.0 prerelease versions (alpha, beta, etc.) require the hook\n return true;\n}\n\n/**\n * Determines which bundler is actually being used based on environment variables,\n * and CLI flags.\n *\n * @returns 'turbopack' or 'webpack'\n */\nexport function detectActiveBundler(): 'turbopack' | 'webpack' {\n const turbopackEnv = process.env.TURBOPACK;\n\n // Check if TURBOPACK env var is set to a truthy value (excluding falsy strings like 'false', '0', '')\n const isTurbopackEnabled = turbopackEnv && turbopackEnv !== 'false' && turbopackEnv !== '0';\n\n if (isTurbopackEnabled || process.argv.includes('--turbo')) {\n return 'turbopack';\n } else {\n return 'webpack';\n }\n}\n\n/**\n * Extract modules from project directory's package.json\n */\nexport function getPackageModules(projectDir: string): Record {\n try {\n const packageJson = path.join(projectDir, 'package.json');\n const packageJsonContent = fs.readFileSync(packageJson, 'utf8');\n const packageJsonObject = JSON.parse(packageJsonContent) as {\n dependencies?: Record;\n devDependencies?: Record;\n };\n\n return {\n ...packageJsonObject.dependencies,\n ...packageJsonObject.devDependencies,\n };\n } catch {\n return {};\n }\n}\n","import * as childProcess from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type { NextConfigObject, SentryBuildOptions } from '../types';\n\n/**\n * Adds Sentry-related build-time variables to `nextConfig.env`.\n *\n * Note: this mutates `userNextConfig`.\n *\n * @param userNextConfig - The user's Next.js config object\n * @param userSentryOptions - The Sentry build options passed to `withSentryConfig`\n * @param releaseName - The resolved release name, if any\n */\nexport function setUpBuildTimeVariables(\n userNextConfig: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n releaseName: string | undefined,\n): void {\n const assetPrefix = userNextConfig.assetPrefix || userNextConfig.basePath || '';\n const basePath = userNextConfig.basePath ?? '';\n\n const rewritesTunnelPath =\n userSentryOptions.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${basePath}${userSentryOptions.tunnelRoute}`\n : undefined;\n\n const buildTimeVariables: Record = {\n // Make sure that if we have a windows path, the backslashes are interpreted as such (rather than as escape\n // characters)\n _sentryRewriteFramesDistDir: userNextConfig.distDir?.replace(/\\\\/g, '\\\\\\\\') || '.next',\n // Get the path part of `assetPrefix`, minus any trailing slash. (We use a placeholder for the origin if\n // `assetPrefix` doesn't include one. Since we only care about the path, it doesn't matter what it is.)\n _sentryRewriteFramesAssetPrefixPath: assetPrefix\n ? new URL(assetPrefix, 'http://dogs.are.great').pathname.replace(/\\/$/, '')\n : '',\n };\n\n if (userNextConfig.assetPrefix) {\n buildTimeVariables._assetsPrefix = userNextConfig.assetPrefix;\n }\n\n if (userSentryOptions._experimental?.thirdPartyOriginStackFrames) {\n buildTimeVariables._experimentalThirdPartyOriginStackFrames = 'true';\n }\n\n if (rewritesTunnelPath) {\n buildTimeVariables._sentryRewritesTunnelPath = rewritesTunnelPath;\n }\n\n if (basePath) {\n buildTimeVariables._sentryBasePath = basePath;\n }\n\n if (userNextConfig.assetPrefix) {\n buildTimeVariables._sentryAssetPrefix = userNextConfig.assetPrefix;\n }\n\n if (userSentryOptions._experimental?.thirdPartyOriginStackFrames) {\n buildTimeVariables._experimentalThirdPartyOriginStackFrames = 'true';\n }\n\n if (releaseName) {\n buildTimeVariables._sentryRelease = releaseName;\n }\n\n if (typeof userNextConfig.env === 'object') {\n userNextConfig.env = { ...buildTimeVariables, ...userNextConfig.env };\n } else if (userNextConfig.env === undefined) {\n userNextConfig.env = buildTimeVariables;\n }\n}\n\n/**\n * Returns the current git SHA (HEAD), if available.\n *\n * This is a best-effort helper and returns `undefined` if git isn't available or the cwd isn't a git repo.\n */\nexport function getGitRevision(): string | undefined {\n let gitRevision: string | undefined;\n try {\n gitRevision = childProcess\n .execSync('git rev-parse HEAD', { stdio: ['ignore', 'pipe', 'ignore'] })\n .toString()\n .trim();\n } catch {\n // noop\n }\n return gitRevision;\n}\n\n/**\n * Reads the project's `instrumentation-client.(js|ts)` file contents, if present.\n *\n * @returns The file contents, or `undefined` if the file can't be found/read\n */\nexport function getInstrumentationClientFileContents(): string | void {\n const potentialInstrumentationClientFileLocations = [\n ['src', 'instrumentation-client.ts'],\n ['src', 'instrumentation-client.js'],\n ['instrumentation-client.ts'],\n ['instrumentation-client.js'],\n ];\n\n for (const pathSegments of potentialInstrumentationClientFileLocations) {\n try {\n return fs.readFileSync(path.join(process.cwd(), ...pathSegments), 'utf-8');\n } catch {\n // noop\n }\n }\n}\n","import type { SentryBuildOptions } from '../types';\nimport { detectActiveBundler } from '../util';\n\n/**\n * Migrates deprecated top-level webpack options to the new `webpack.*` path for backward compatibility.\n * The new path takes precedence over deprecated options. This mutates the userSentryOptions object.\n */\nexport function migrateDeprecatedWebpackOptions(userSentryOptions: SentryBuildOptions): void {\n // Initialize webpack options if not present\n userSentryOptions.webpack = userSentryOptions.webpack || {};\n\n const webpack = userSentryOptions.webpack;\n\n const withDeprecatedFallback = (\n newValue: T | undefined,\n deprecatedValue: T | undefined,\n message: string,\n ): T | undefined => {\n if (deprecatedValue !== undefined) {\n // eslint-disable-next-line no-console\n console.warn(message);\n }\n\n return newValue ?? deprecatedValue;\n };\n\n const deprecatedMessage = (deprecatedPath: string, newPath: string): string => {\n const message = `[@sentry/nextjs] DEPRECATION WARNING: ${deprecatedPath} is deprecated and will be removed in a future version. Use ${newPath} instead.`;\n\n // In Turbopack builds, webpack configuration is not applied, so webpack-scoped options won't have any effect.\n if (detectActiveBundler() === 'turbopack' && newPath.startsWith('webpack.')) {\n return `${message} (Not supported with Turbopack.)`;\n }\n\n return message;\n };\n\n /* eslint-disable deprecation/deprecation */\n // Migrate each deprecated option to the new path, but only if the new path isn't already set\n webpack.autoInstrumentServerFunctions = withDeprecatedFallback(\n webpack.autoInstrumentServerFunctions,\n userSentryOptions.autoInstrumentServerFunctions,\n deprecatedMessage('autoInstrumentServerFunctions', 'webpack.autoInstrumentServerFunctions'),\n );\n\n webpack.autoInstrumentMiddleware = withDeprecatedFallback(\n webpack.autoInstrumentMiddleware,\n userSentryOptions.autoInstrumentMiddleware,\n deprecatedMessage('autoInstrumentMiddleware', 'webpack.autoInstrumentMiddleware'),\n );\n\n webpack.autoInstrumentAppDirectory = withDeprecatedFallback(\n webpack.autoInstrumentAppDirectory,\n userSentryOptions.autoInstrumentAppDirectory,\n deprecatedMessage('autoInstrumentAppDirectory', 'webpack.autoInstrumentAppDirectory'),\n );\n\n webpack.excludeServerRoutes = withDeprecatedFallback(\n webpack.excludeServerRoutes,\n userSentryOptions.excludeServerRoutes,\n deprecatedMessage('excludeServerRoutes', 'webpack.excludeServerRoutes'),\n );\n\n webpack.unstable_sentryWebpackPluginOptions = withDeprecatedFallback(\n webpack.unstable_sentryWebpackPluginOptions,\n userSentryOptions.unstable_sentryWebpackPluginOptions,\n deprecatedMessage('unstable_sentryWebpackPluginOptions', 'webpack.unstable_sentryWebpackPluginOptions'),\n );\n\n webpack.disableSentryConfig = withDeprecatedFallback(\n webpack.disableSentryConfig,\n userSentryOptions.disableSentryWebpackConfig,\n deprecatedMessage('disableSentryWebpackConfig', 'webpack.disableSentryConfig'),\n );\n\n // Handle treeshake.removeDebugLogging specially since it's nested\n if (userSentryOptions.disableLogger !== undefined) {\n webpack.treeshake = webpack.treeshake || {};\n webpack.treeshake.removeDebugLogging = withDeprecatedFallback(\n webpack.treeshake.removeDebugLogging,\n userSentryOptions.disableLogger,\n deprecatedMessage('disableLogger', 'webpack.treeshake.removeDebugLogging'),\n );\n }\n\n webpack.automaticVercelMonitors = withDeprecatedFallback(\n webpack.automaticVercelMonitors,\n userSentryOptions.automaticVercelMonitors,\n deprecatedMessage('automaticVercelMonitors', 'webpack.automaticVercelMonitors'),\n );\n\n webpack.reactComponentAnnotation = withDeprecatedFallback(\n webpack.reactComponentAnnotation,\n userSentryOptions.reactComponentAnnotation,\n deprecatedMessage('reactComponentAnnotation', 'webpack.reactComponentAnnotation'),\n );\n}\n","import type { Options as SentryBuildPluginOptions } from '@sentry/bundler-plugin-core';\nimport * as path from 'path';\nimport type { SentryBuildOptions } from './types';\n\nconst LOGGER_PREFIXES = {\n 'webpack-nodejs': '[@sentry/nextjs - Node.js]',\n 'webpack-edge': '[@sentry/nextjs - Edge]',\n 'webpack-client': '[@sentry/nextjs - Client]',\n 'after-production-compile-webpack': '[@sentry/nextjs - After Production Compile (Webpack)]',\n 'after-production-compile-turbopack': '[@sentry/nextjs - After Production Compile (Turbopack)]',\n} as const;\n\n// File patterns for source map operations\n// We use both glob patterns and directory paths for the sourcemap upload and deletion\n// -> Direct CLI invocation handles file paths better than glob patterns\n// -> Webpack/Bundler needs glob patterns as this is the format that is used by the plugin\nconst FILE_PATTERNS = {\n SERVER: {\n GLOB: 'server/**',\n PATH: 'server',\n },\n SERVERLESS: 'serverless/**',\n STATIC_CHUNKS: {\n GLOB: 'static/chunks/**',\n PATH: 'static/chunks',\n },\n STATIC_CHUNKS_PAGES: {\n GLOB: 'static/chunks/pages/**',\n PATH: 'static/chunks/pages',\n },\n STATIC_CHUNKS_APP: {\n GLOB: 'static/chunks/app/**',\n PATH: 'static/chunks/app',\n },\n MAIN_CHUNKS: 'static/chunks/main-*',\n FRAMEWORK_CHUNKS: 'static/chunks/framework-*',\n FRAMEWORK_CHUNKS_DOT: 'static/chunks/framework.*',\n POLYFILLS_CHUNKS: 'static/chunks/polyfills-*',\n WEBPACK_CHUNKS: 'static/chunks/webpack-*',\n PAGE_CLIENT_REFERENCE_MANIFEST: '**/page_client-reference-manifest.js',\n SERVER_REFERENCE_MANIFEST: '**/server-reference-manifest.js',\n NEXT_FONT_MANIFEST: '**/next-font-manifest.js',\n MIDDLEWARE_BUILD_MANIFEST: '**/middleware-build-manifest.js',\n INTERCEPTION_ROUTE_REWRITE_MANIFEST: '**/interception-route-rewrite-manifest.js',\n ROUTE_CLIENT_REFERENCE_MANIFEST: '**/route_client-reference-manifest.js',\n MIDDLEWARE_REACT_LOADABLE_MANIFEST: '**/middleware-react-loadable-manifest.js',\n} as const;\n\n// Source map file extensions to delete\nconst SOURCEMAP_EXTENSIONS = ['*.js.map', '*.mjs.map', '*.cjs.map', '*.css.map'] as const;\n\ntype BuildTool = keyof typeof LOGGER_PREFIXES;\n\n/**\n * Normalizes Windows paths to POSIX format for glob patterns\n */\nexport function normalizePathForGlob(distPath: string): string {\n return distPath.replace(/\\\\/g, '/');\n}\n\n/**\n * These functions are used to get the correct pattern for the sourcemap upload based on the build tool and the usage context\n * -> Direct CLI invocation handles file paths better than glob patterns\n */\nfunction getServerPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.SERVER.PATH : FILE_PATTERNS.SERVER.GLOB;\n}\n\nfunction getStaticChunksPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS.PATH : FILE_PATTERNS.STATIC_CHUNKS.GLOB;\n}\n\nfunction getStaticChunksPagesPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS_PAGES.PATH : FILE_PATTERNS.STATIC_CHUNKS_PAGES.GLOB;\n}\n\nfunction getStaticChunksAppPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS_APP.PATH : FILE_PATTERNS.STATIC_CHUNKS_APP.GLOB;\n}\n\n/**\n * Creates file patterns for source map uploads based on build tool and options\n */\nfunction createSourcemapUploadAssetPatterns(\n normalizedDistPath: string,\n buildTool: BuildTool,\n widenClientFileUpload: boolean = false,\n): string[] {\n const assets: string[] = [];\n\n if (buildTool.startsWith('after-production-compile')) {\n assets.push(path.posix.join(normalizedDistPath, getServerPattern({ useDirectoryPath: true })));\n\n if (buildTool === 'after-production-compile-turbopack') {\n // In turbopack we always want to upload the full static chunks directory\n // as the build output is not split into pages|app chunks\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: true })));\n } else {\n // Webpack client builds in after-production-compile mode\n if (widenClientFileUpload) {\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: true })));\n } else {\n assets.push(\n path.posix.join(normalizedDistPath, getStaticChunksPagesPattern({ useDirectoryPath: true })),\n path.posix.join(normalizedDistPath, getStaticChunksAppPattern({ useDirectoryPath: true })),\n );\n }\n }\n } else {\n if (buildTool === 'webpack-nodejs' || buildTool === 'webpack-edge') {\n // Server builds\n assets.push(\n path.posix.join(normalizedDistPath, getServerPattern({ useDirectoryPath: false })),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.SERVERLESS),\n );\n } else if (buildTool === 'webpack-client') {\n // Client builds\n if (widenClientFileUpload) {\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: false })));\n } else {\n assets.push(\n path.posix.join(normalizedDistPath, getStaticChunksPagesPattern({ useDirectoryPath: false })),\n path.posix.join(normalizedDistPath, getStaticChunksAppPattern({ useDirectoryPath: false })),\n );\n }\n }\n }\n\n return assets;\n}\n\n/**\n * Creates ignore patterns for source map uploads\n */\nfunction createSourcemapUploadIgnorePattern(\n normalizedDistPath: string,\n widenClientFileUpload: boolean = false,\n): string[] {\n const ignore: string[] = [];\n\n // We only add main-* files if the user has not opted into it\n if (!widenClientFileUpload) {\n ignore.push(path.posix.join(normalizedDistPath, FILE_PATTERNS.MAIN_CHUNKS));\n }\n\n // Always ignore these patterns\n ignore.push(\n path.posix.join(normalizedDistPath, FILE_PATTERNS.FRAMEWORK_CHUNKS),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.FRAMEWORK_CHUNKS_DOT),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.POLYFILLS_CHUNKS),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.WEBPACK_CHUNKS),\n // Next.js internal manifest files that don't have source maps\n // These files are auto-generated by Next.js and do not contain user code.\n // Ignoring them prevents \"Could not determine source map reference\" warnings.\n FILE_PATTERNS.PAGE_CLIENT_REFERENCE_MANIFEST,\n FILE_PATTERNS.SERVER_REFERENCE_MANIFEST,\n FILE_PATTERNS.NEXT_FONT_MANIFEST,\n FILE_PATTERNS.MIDDLEWARE_BUILD_MANIFEST,\n FILE_PATTERNS.INTERCEPTION_ROUTE_REWRITE_MANIFEST,\n FILE_PATTERNS.ROUTE_CLIENT_REFERENCE_MANIFEST,\n FILE_PATTERNS.MIDDLEWARE_REACT_LOADABLE_MANIFEST,\n );\n\n return ignore;\n}\n\n/**\n * Creates file patterns for deletion after source map upload\n */\nfunction createFilesToDeleteAfterUploadPattern(\n normalizedDistPath: string,\n buildTool: BuildTool,\n deleteSourcemapsAfterUpload: boolean,\n useRunAfterProductionCompileHook: boolean = false,\n): string[] | undefined {\n if (!deleteSourcemapsAfterUpload) {\n return undefined;\n }\n\n // We don't want to delete source maps for server builds as this led to errors on Vercel in the past\n // See: https://github.com/getsentry/sentry-javascript/issues/13099\n if (buildTool === 'webpack-nodejs' || buildTool === 'webpack-edge') {\n return undefined;\n }\n\n // Skip deletion for webpack client builds when using the experimental hook\n if (buildTool === 'webpack-client' && useRunAfterProductionCompileHook) {\n return undefined;\n }\n\n return SOURCEMAP_EXTENSIONS.map(ext => path.posix.join(normalizedDistPath, 'static', '**', ext));\n}\n\n/**\n * Determines if sourcemap uploads should be skipped\n */\nfunction shouldSkipSourcemapUpload(buildTool: BuildTool, useRunAfterProductionCompileHook: boolean = false): boolean {\n return useRunAfterProductionCompileHook && buildTool.startsWith('webpack');\n}\n\n/**\n * Source rewriting function for webpack sources\n */\nfunction rewriteWebpackSources(source: string): string {\n return source.replace(/^webpack:\\/\\/(?:_N_E\\/)?/, '');\n}\n\n/**\n * Creates release configuration\n */\nfunction createReleaseConfig(\n releaseName: string | undefined,\n sentryBuildOptions: SentryBuildOptions,\n): SentryBuildPluginOptions['release'] {\n if (releaseName !== undefined) {\n return {\n inject: false, // The webpack plugin's release injection breaks the `app` directory - we inject the release manually with the value injection loader instead.\n name: releaseName,\n create: sentryBuildOptions.release?.create,\n finalize: sentryBuildOptions.release?.finalize,\n dist: sentryBuildOptions.release?.dist,\n vcsRemote: sentryBuildOptions.release?.vcsRemote,\n setCommits: sentryBuildOptions.release?.setCommits,\n deploy: sentryBuildOptions.release?.deploy,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.release,\n };\n }\n\n return {\n inject: false,\n create: false,\n finalize: false,\n };\n}\n\n/**\n * Merges default ignore patterns with user-provided ignore patterns.\n * User patterns are appended to the defaults to ensure internal Next.js\n * files are always ignored while allowing users to add additional patterns.\n */\nfunction mergeIgnorePatterns(defaultPatterns: string[], userPatterns: string | string[] | undefined): string[] {\n if (!userPatterns) {\n return defaultPatterns;\n }\n\n const userPatternsArray = Array.isArray(userPatterns) ? userPatterns : [userPatterns];\n return [...defaultPatterns, ...userPatternsArray];\n}\n\n/**\n * Get Sentry Build Plugin options for both webpack and turbopack builds.\n * These options can be used in two ways:\n * 1. The options can be built in a single operation after the production build completes\n * 2. The options can be built in multiple operations, one for each webpack build\n */\nexport function getBuildPluginOptions({\n sentryBuildOptions,\n releaseName,\n distDirAbsPath,\n buildTool,\n useRunAfterProductionCompileHook,\n}: {\n sentryBuildOptions: SentryBuildOptions;\n releaseName: string | undefined;\n distDirAbsPath: string;\n buildTool: BuildTool;\n useRunAfterProductionCompileHook?: boolean; // Whether the user has opted into using the experimental hook\n}): SentryBuildPluginOptions {\n // We need to convert paths to posix because Glob patterns use `\\` to escape\n // glob characters. This clashes with Windows path separators.\n // See: https://www.npmjs.com/package/glob\n const normalizedDistDirAbsPath = normalizePathForGlob(distDirAbsPath);\n const loggerPrefix = LOGGER_PREFIXES[buildTool];\n const widenClientFileUpload = sentryBuildOptions.widenClientFileUpload ?? false;\n const deleteSourcemapsAfterUpload = sentryBuildOptions.sourcemaps?.deleteSourcemapsAfterUpload ?? false;\n\n const sourcemapUploadAssets = createSourcemapUploadAssetPatterns(\n normalizedDistDirAbsPath,\n buildTool,\n widenClientFileUpload,\n );\n\n const sourcemapUploadIgnore = createSourcemapUploadIgnorePattern(normalizedDistDirAbsPath, widenClientFileUpload);\n\n const finalIgnorePatterns = mergeIgnorePatterns(sourcemapUploadIgnore, sentryBuildOptions.sourcemaps?.ignore);\n\n const userFilesToDeleteAfterUpload = sentryBuildOptions.sourcemaps?.filesToDeleteAfterUpload;\n\n if (sentryBuildOptions.debug && userFilesToDeleteAfterUpload !== undefined) {\n // eslint-disable-next-line no-console\n console.debug(\n '[@sentry/nextjs] Skipping auto-deletion of source maps as user has provided filesToDeleteAfterUpload:',\n userFilesToDeleteAfterUpload,\n );\n }\n\n const filesToDeleteAfterUpload =\n userFilesToDeleteAfterUpload !== undefined\n ? Array.isArray(userFilesToDeleteAfterUpload)\n ? userFilesToDeleteAfterUpload\n : [userFilesToDeleteAfterUpload]\n : createFilesToDeleteAfterUploadPattern(\n normalizedDistDirAbsPath,\n buildTool,\n deleteSourcemapsAfterUpload,\n useRunAfterProductionCompileHook,\n );\n\n const skipSourcemapsUpload = shouldSkipSourcemapUpload(buildTool, useRunAfterProductionCompileHook);\n\n return {\n authToken: sentryBuildOptions.authToken,\n headers: sentryBuildOptions.headers,\n org: sentryBuildOptions.org,\n project: sentryBuildOptions.project,\n telemetry: sentryBuildOptions.telemetry,\n debug: sentryBuildOptions.debug,\n errorHandler: sentryBuildOptions.errorHandler,\n reactComponentAnnotation: buildTool.startsWith('after-production-compile')\n ? undefined\n : {\n ...sentryBuildOptions.webpack?.reactComponentAnnotation,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.reactComponentAnnotation,\n },\n silent: sentryBuildOptions.silent,\n url: sentryBuildOptions.sentryUrl,\n sourcemaps: {\n disable: skipSourcemapsUpload ? true : (sentryBuildOptions.sourcemaps?.disable ?? false),\n rewriteSources: rewriteWebpackSources,\n assets: sentryBuildOptions.sourcemaps?.assets ?? sourcemapUploadAssets,\n ignore: finalIgnorePatterns,\n filesToDeleteAfterUpload,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.sourcemaps,\n },\n release: createReleaseConfig(releaseName, sentryBuildOptions),\n bundleSizeOptimizations: {\n ...sentryBuildOptions.bundleSizeOptimizations,\n },\n _metaOptions: {\n loggerPrefixOverride: loggerPrefix,\n telemetry: {\n metaFramework: 'nextjs',\n },\n },\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions,\n };\n}\n","import type { createSentryBuildPluginManager as createSentryBuildPluginManagerType } from '@sentry/bundler-plugin-core';\nimport { loadModule } from '@sentry/core';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { getBuildPluginOptions } from './getBuildPluginOptions';\nimport type { SentryBuildOptions } from './types';\n\n/**\n * This function is called by Next.js after the production build is complete.\n * It is used to upload sourcemaps to Sentry.\n */\nexport async function handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool,\n usesNativeDebugIds,\n }: { releaseName?: string; distDir: string; buildTool: 'webpack' | 'turbopack'; usesNativeDebugIds?: boolean },\n sentryBuildOptions: SentryBuildOptions,\n): Promise {\n if (sentryBuildOptions.debug) {\n // eslint-disable-next-line no-console\n console.debug('[@sentry/nextjs] Running runAfterProductionCompile logic.');\n }\n\n const { createSentryBuildPluginManager } =\n loadModule<{ createSentryBuildPluginManager: typeof createSentryBuildPluginManagerType }>(\n '@sentry/bundler-plugin-core',\n module,\n ) ?? {};\n\n if (!createSentryBuildPluginManager) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not load build manager package. Will not run runAfterProductionCompile logic.',\n );\n return;\n }\n\n const options = getBuildPluginOptions({\n sentryBuildOptions,\n releaseName,\n distDirAbsPath: distDir,\n buildTool: `after-production-compile-${buildTool}`,\n });\n\n const sentryBuildPluginManager = createSentryBuildPluginManager(options, {\n buildTool,\n loggerPrefix: '[@sentry/nextjs - After Production Compile]',\n });\n\n await sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal();\n await sentryBuildPluginManager.createRelease();\n\n // Skip debug ID injection if sourcemaps are disabled which are only relevant for sourcemap correlation\n if (!usesNativeDebugIds && sentryBuildOptions.sourcemaps?.disable !== true) {\n await sentryBuildPluginManager.injectDebugIds([distDir]);\n }\n\n await sentryBuildPluginManager.uploadSourcemaps([distDir], {\n // We don't want to prepare the artifacts because we injected debug ids manually before\n prepareArtifacts: false,\n });\n await sentryBuildPluginManager.deleteArtifacts();\n\n // After deleting source map files in turbopack builds, strip any remaining\n // sourceMappingURL comments from client JS files. Without this, browsers request\n // the deleted .map files, and in Next.js 16 (turbopack) those requests fall through\n // to the app router instead of returning 404, which can break middleware-dependent\n // features like Clerk auth.\n const deleteSourcemapsAfterUpload = sentryBuildOptions.sourcemaps?.deleteSourcemapsAfterUpload ?? false;\n if (deleteSourcemapsAfterUpload && buildTool === 'turbopack') {\n await stripSourceMappingURLComments(path.join(distDir, 'static'), sentryBuildOptions.debug);\n }\n}\n\nconst SOURCEMAPPING_URL_COMMENT_REGEX = /\\n?\\/\\/[#@] sourceMappingURL=[^\\n]+$/;\nconst CSS_SOURCEMAPPING_URL_COMMENT_REGEX = /\\n?\\/\\*[#@] sourceMappingURL=[^\\n]+\\*\\/$/;\n\n/**\n * Strips sourceMappingURL comments from all JS/MJS/CJS/CSS files in the given directory.\n * This prevents browsers from requesting deleted .map files.\n */\nexport async function stripSourceMappingURLComments(staticDir: string, debug?: boolean): Promise {\n let entries: string[];\n try {\n entries = await fs.promises.readdir(staticDir, { recursive: true }).then(e => e.map(f => String(f)));\n } catch {\n // Directory may not exist (e.g., no static output)\n return;\n }\n\n const filesToProcess = entries.filter(\n f => f.endsWith('.js') || f.endsWith('.mjs') || f.endsWith('.cjs') || f.endsWith('.css'),\n );\n\n const results = await Promise.all(\n filesToProcess.map(async file => {\n const filePath = path.join(staticDir, file);\n try {\n const content = await fs.promises.readFile(filePath, 'utf-8');\n\n const isCSS = file.endsWith('.css');\n const regex = isCSS ? CSS_SOURCEMAPPING_URL_COMMENT_REGEX : SOURCEMAPPING_URL_COMMENT_REGEX;\n\n const strippedContent = content.replace(regex, '');\n if (strippedContent !== content) {\n await fs.promises.writeFile(filePath, strippedContent, 'utf-8');\n return file;\n }\n } catch {\n // Skip files that can't be read/written\n }\n return undefined;\n }),\n );\n\n const strippedCount = results.filter(Boolean).length;\n\n if (debug && strippedCount > 0) {\n // eslint-disable-next-line no-console\n console.debug(\n `[@sentry/nextjs] Stripped sourceMappingURL comments from ${String(strippedCount)} file(s) to prevent requests for deleted source maps.`,\n );\n }\n}\n","import * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport type { RouteManifest } from '../manifest/types';\nimport type { JSONValue, TurbopackMatcherWithRule } from '../types';\nimport { getPackageModules, supportsTurbopackRuleCondition } from '../util';\n\n/**\n * Generate the value injection rules for client and server in turbopack config.\n */\nexport function generateValueInjectionRules({\n routeManifest,\n nextJsVersion,\n tunnelPath,\n vercelCronsConfig,\n}: {\n routeManifest?: RouteManifest;\n nextJsVersion?: string;\n tunnelPath?: string;\n vercelCronsConfig?: VercelCronsConfig;\n}): TurbopackMatcherWithRule[] {\n const rules: TurbopackMatcherWithRule[] = [];\n const isomorphicValues: Record = {};\n let clientValues: Record = {};\n let serverValues: Record = {};\n\n if (nextJsVersion) {\n // This is used to determine version-based dev-symbolication behavior\n isomorphicValues._sentryNextJsVersion = nextJsVersion;\n }\n\n if (routeManifest) {\n clientValues._sentryRouteManifest = JSON.stringify(routeManifest);\n }\n\n // Inject tunnel route path for both client and server\n if (tunnelPath) {\n isomorphicValues._sentryRewritesTunnelPath = tunnelPath;\n }\n\n // Inject Vercel crons config for server-side cron auto-instrumentation\n if (vercelCronsConfig) {\n serverValues._sentryVercelCronsConfig = JSON.stringify(vercelCronsConfig);\n }\n // Inject server modules (matching webpack's __SENTRY_SERVER_MODULES__ behavior)\n // Use process.cwd() to get the project directory at build time\n serverValues.__SENTRY_SERVER_MODULES__ = getPackageModules(process.cwd());\n\n if (Object.keys(isomorphicValues).length > 0) {\n clientValues = { ...clientValues, ...isomorphicValues };\n serverValues = { ...serverValues, ...isomorphicValues };\n }\n\n const hasConditionSupport = nextJsVersion ? supportsTurbopackRuleCondition(nextJsVersion) : false;\n\n // Client value injection\n if (Object.keys(clientValues).length > 0) {\n rules.push({\n matcher: '**/instrumentation-client.*',\n rule: {\n // Only run on user code, not node_modules or Next.js internals\n // condition field is only supported in Next.js 16+\n ...(hasConditionSupport ? { condition: { not: 'foreign' } } : {}),\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'valueInjectionLoader.js'),\n options: {\n values: clientValues,\n },\n },\n ],\n },\n });\n }\n\n // Server value injection\n if (Object.keys(serverValues).length > 0) {\n rules.push({\n matcher: '**/instrumentation.*',\n rule: {\n // Only run on user code, not node_modules or Next.js internals\n // condition field is only supported in Next.js 16+\n ...(hasConditionSupport ? { condition: { not: 'foreign' } } : {}),\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'valueInjectionLoader.js'),\n options: {\n values: serverValues,\n },\n },\n ],\n },\n });\n }\n\n return rules;\n}\n","import { debug } from '@sentry/core';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport type { RouteManifest } from '../manifest/types';\nimport type { NextConfigObject, SentryBuildOptions, TurbopackMatcherWithRule, TurbopackOptions } from '../types';\nimport { supportsNativeDebugIds, supportsTurbopackRuleCondition } from '../util';\nimport { generateValueInjectionRules } from './generateValueInjectionRules';\n\n/**\n * Construct a Turbopack config object from a Next.js config object and a Turbopack options object.\n *\n * @param userNextConfig - The Next.js config object.\n * @param userSentryOptions - The Sentry build options object.\n * @param routeManifest - The route manifest object.\n * @param nextJsVersion - The Next.js version.\n * @param vercelCronsConfig - The Vercel crons configuration from vercel.json.\n * @returns The Turbopack config object.\n */\nexport function constructTurbopackConfig({\n userNextConfig,\n userSentryOptions,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n}: {\n userNextConfig: NextConfigObject;\n userSentryOptions?: SentryBuildOptions;\n routeManifest?: RouteManifest;\n nextJsVersion?: string;\n vercelCronsConfig?: VercelCronsConfig;\n}): TurbopackOptions {\n // If sourcemaps are disabled, we don't need to enable native debug ids as this will add build time.\n const shouldEnableNativeDebugIds =\n (supportsNativeDebugIds(nextJsVersion ?? '') && userNextConfig?.turbopack?.debugIds) ??\n userSentryOptions?.sourcemaps?.disable !== true;\n\n const newConfig: TurbopackOptions = {\n ...userNextConfig.turbopack,\n ...(shouldEnableNativeDebugIds ? { debugIds: true } : {}),\n };\n\n const tunnelPath =\n userSentryOptions?.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${userNextConfig.basePath ?? ''}${userSentryOptions.tunnelRoute}`\n : undefined;\n\n const valueInjectionRules = generateValueInjectionRules({\n routeManifest,\n nextJsVersion,\n tunnelPath,\n vercelCronsConfig,\n });\n\n for (const { matcher, rule } of valueInjectionRules) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, { matcher, rule });\n }\n\n // Add module metadata injection loader for thirdPartyErrorFilterIntegration support.\n // This loader tags modules with `_sentryModuleMetadata` so the integration can tell\n // first-party code from third-party code. We intentionally do NOT use\n // `condition: { not: 'foreign' }` so that node_modules are also tagged as first-party,\n // matching the webpack plugin's BannerPlugin behavior (which injects into all chunks\n // without excluding node_modules). The injected code is wrapped in a try-catch IIFE\n // so it is safe even for node_modules with strict initialization order.\n // We only exclude Next.js build polyfills which contain non-standard syntax that causes\n // parse errors when any code is prepended (Turbopack re-parses the loader output).\n const applicationKey = userSentryOptions?._experimental?.turbopackApplicationKey;\n if (applicationKey && nextJsVersion && supportsTurbopackRuleCondition(nextJsVersion)) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, {\n matcher: '*.{ts,tsx,js,jsx,mjs,cjs}',\n rule: {\n condition: { not: { path: /next\\/dist\\/build\\/polyfills/ } },\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'moduleMetadataInjectionLoader.js'),\n options: {\n applicationKey,\n },\n },\n ],\n },\n });\n }\n\n // Add component annotation loader for react component name annotation in Turbopack builds.\n // This is only added when turbopackReactComponentAnnotation.enabled is set AND the Next.js\n // version supports the `condition` field in Turbopack rules (Next.js 16+).\n const turbopackReactComponentAnnotation = userSentryOptions?._experimental?.turbopackReactComponentAnnotation;\n if (turbopackReactComponentAnnotation?.enabled && nextJsVersion && supportsTurbopackRuleCondition(nextJsVersion)) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, {\n matcher: '*.{tsx,jsx}',\n rule: {\n condition: { not: 'foreign' },\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'componentAnnotationLoader.js'),\n options: {\n ignoredComponents: turbopackReactComponentAnnotation.ignoredComponents ?? [],\n },\n },\n ],\n },\n });\n }\n\n return newConfig;\n}\n\n/**\n * Safely add a Turbopack rule to the existing rules.\n *\n * @param existingRules - The existing rules.\n * @param matcher - The matcher for the rule.\n * @param rule - The rule to add.\n * @returns The updated rules object.\n */\nexport function safelyAddTurbopackRule(\n existingRules: TurbopackOptions['rules'],\n { matcher, rule }: TurbopackMatcherWithRule,\n): TurbopackOptions['rules'] {\n if (!existingRules) {\n return {\n [matcher]: rule,\n };\n }\n\n // If the rule already exists, we don't want to mess with it.\n if (existingRules[matcher]) {\n debug.log(\n `[@sentry/nextjs] - Turbopack rule already exists for ${matcher}. Please remove it from your Next.js config in order for Sentry to work properly.`,\n );\n return existingRules;\n }\n\n return {\n ...existingRules,\n [matcher]: rule,\n };\n}\n","/* eslint-disable complexity */\n/* eslint-disable max-lines */\n\nimport { debug, escapeStringForRegex, loadModule, parseSemver } from '@sentry/core';\nimport * as fs from 'fs';\nimport { createRequire } from 'module';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../common/types';\nimport { getBuildPluginOptions, normalizePathForGlob } from './getBuildPluginOptions';\nimport type { RouteManifest } from './manifest/types';\n// Note: If you need to import a type from Webpack, do it in `types.ts` and export it from there. Otherwise, our\n// circular dependency check thinks this file is importing from itself. See https://github.com/pahen/madge/issues/306.\nimport type {\n BuildContext,\n EntryPropertyObject,\n IgnoreWarningsOption,\n NextConfigObject,\n SentryBuildOptions,\n WebpackConfigFunction,\n WebpackConfigObject,\n WebpackConfigObjectWithModuleRules,\n WebpackEntryProperty,\n} from './types';\nimport { getNextjsVersion, getPackageModules } from './util';\nimport type { VercelCronsConfigResult } from './withSentryConfig/getFinalConfigObjectUtils';\n\n// Next.js runs webpack 3 times, once for the client, the server, and for edge. Because we don't want to print certain\n// warnings 3 times, we keep track of them here.\nlet showedMissingGlobalErrorWarningMsg = false;\n\n/**\n * Construct the function which will be used as the nextjs config's `webpack` value.\n *\n * Sets:\n * - `devtool`, to ensure high-quality sourcemaps are generated\n * - `entry`, to include user's sentry config files (where `Sentry.init` is called) in the build\n * - `plugins`, to add SentryWebpackPlugin\n *\n * @param userNextConfig The user's existing nextjs config, as passed to `withSentryConfig`\n * @param userSentryOptions The user's SentryWebpackPlugin config, as passed to `withSentryConfig`\n * @returns The function to set as the nextjs config's `webpack` value\n */\nexport function constructWebpackConfigFunction({\n userNextConfig = {},\n userSentryOptions = {},\n releaseName,\n routeManifest,\n nextJsVersion,\n useRunAfterProductionCompileHook,\n vercelCronsConfigResult,\n}: {\n userNextConfig: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n useRunAfterProductionCompileHook: boolean | undefined;\n vercelCronsConfigResult: VercelCronsConfigResult;\n}): WebpackConfigFunction {\n // Will be called by nextjs and passed its default webpack configuration and context data about the build (whether\n // we're building server or client, whether we're in dev, what version of webpack we're using, etc). Note that\n // `incomingConfig` and `buildContext` are referred to as `config` and `options` in the nextjs docs.\n return function newWebpackFunction(\n incomingConfig: WebpackConfigObject,\n buildContext: BuildContext,\n ): WebpackConfigObject {\n const { isServer, dev: isDev, dir: projectDir } = buildContext;\n const runtime = isServer ? (buildContext.nextRuntime === 'edge' ? 'edge' : 'server') : 'client';\n // Default page extensions per https://github.com/vercel/next.js/blob/f1dbc9260d48c7995f6c52f8fbcc65f08e627992/packages/next/server/config-shared.ts#L161\n const pageExtensions = userNextConfig.pageExtensions || ['tsx', 'ts', 'jsx', 'js'];\n const dotPrefixedPageExtensions = pageExtensions.map(ext => `.${ext}`);\n const pageExtensionRegex = pageExtensions.map(escapeStringForRegex).join('|');\n const nextVersion = nextJsVersion || getNextjsVersion();\n const { major } = parseSemver(nextVersion || '');\n\n // We add `.ts` and `.js` back in because `pageExtensions` might not be relevant to the instrumentation file\n // e.g. user's setting `.mdx`. In that case we still want to default look up\n // `instrumentation.ts` and `instrumentation.js`\n const instrumentationFile = getInstrumentationFile(projectDir, dotPrefixedPageExtensions.concat(['.ts', '.js']));\n\n if (runtime !== 'client') {\n warnAboutDeprecatedConfigFiles(projectDir, instrumentationFile, runtime);\n }\n if (runtime === 'server') {\n // was added in v15 (https://github.com/vercel/next.js/pull/67539)\n if (major && major >= 15) {\n warnAboutMissingOnRequestErrorHandler(instrumentationFile);\n }\n }\n\n let rawNewConfig = { ...incomingConfig };\n\n // if user has custom webpack config (which always takes the form of a function), run it so we have actual values to\n // work with\n if ('webpack' in userNextConfig && typeof userNextConfig.webpack === 'function') {\n rawNewConfig = userNextConfig.webpack(rawNewConfig, buildContext);\n }\n\n // This mutates `rawNewConfig` in place, but also returns it in order to switch its type to one in which\n // `newConfig.module.rules` is required, so we don't have to keep asserting its existence\n const newConfig = setUpModuleRules(rawNewConfig);\n\n // Determine which cron config to use based on strategy\n // - 'spans': injected as global for span-based detection (App Router + Pages Router)\n // - 'wrapper': passed to wrapping loader for Pages Router API handler wrapping\n const { strategy: cronsStrategy, config: cronsConfig } = vercelCronsConfigResult;\n const vercelCronsConfigForGlobal = cronsStrategy === 'spans' ? cronsConfig : undefined;\n const vercelCronsConfigForWrapper = cronsStrategy === 'wrapper' ? cronsConfig : undefined;\n\n // Add a loader which will inject code that sets global values\n addValueInjectionLoader({\n newConfig,\n userNextConfig,\n userSentryOptions,\n buildContext,\n releaseName,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig: vercelCronsConfigForGlobal,\n });\n\n addOtelWarningIgnoreRule(newConfig);\n\n // Add edge runtime polyfills when building for edge in dev mode\n if (major && major === 13 && runtime === 'edge' && isDev) {\n addEdgeRuntimePolyfills(newConfig, buildContext);\n }\n\n let pagesDirPath: string | undefined;\n const maybePagesDirPath = path.join(projectDir, 'pages');\n const maybeSrcPagesDirPath = path.join(projectDir, 'src', 'pages');\n if (fs.existsSync(maybePagesDirPath) && fs.lstatSync(maybePagesDirPath).isDirectory()) {\n pagesDirPath = maybePagesDirPath;\n } else if (fs.existsSync(maybeSrcPagesDirPath) && fs.lstatSync(maybeSrcPagesDirPath).isDirectory()) {\n pagesDirPath = maybeSrcPagesDirPath;\n }\n\n let appDirPath: string | undefined;\n const maybeAppDirPath = path.join(projectDir, 'app');\n const maybeSrcAppDirPath = path.join(projectDir, 'src', 'app');\n if (fs.existsSync(maybeAppDirPath) && fs.lstatSync(maybeAppDirPath).isDirectory()) {\n appDirPath = maybeAppDirPath;\n } else if (fs.existsSync(maybeSrcAppDirPath) && fs.lstatSync(maybeSrcAppDirPath).isDirectory()) {\n appDirPath = maybeSrcAppDirPath;\n }\n\n const apiRoutesPath = pagesDirPath ? path.join(pagesDirPath, 'api') : undefined;\n\n const middlewareLocationFolder = pagesDirPath\n ? path.join(pagesDirPath, '..')\n : appDirPath\n ? path.join(appDirPath, '..')\n : projectDir;\n\n const staticWrappingLoaderOptions = {\n appDir: appDirPath,\n pagesDir: pagesDirPath,\n pageExtensionRegex,\n excludeServerRoutes: userSentryOptions.webpack?.excludeServerRoutes,\n nextjsRequestAsyncStorageModulePath: getRequestAsyncStorageModuleLocation(\n projectDir,\n rawNewConfig.resolve?.modules,\n ),\n isDev,\n };\n\n const normalizeLoaderResourcePath = (resourcePath: string): string => {\n // `resourcePath` may be an absolute path or a path relative to the context of the webpack config\n let absoluteResourcePath: string;\n if (path.isAbsolute(resourcePath)) {\n absoluteResourcePath = resourcePath;\n } else {\n absoluteResourcePath = path.join(projectDir, resourcePath);\n }\n\n return path.normalize(absoluteResourcePath);\n };\n\n const isPageResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n pagesDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(pagesDirPath + path.sep) &&\n !normalizedAbsoluteResourcePath.startsWith(apiRoutesPath + path.sep) &&\n dotPrefixedPageExtensions.some(ext => normalizedAbsoluteResourcePath.endsWith(ext))\n );\n };\n\n const isApiRouteResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n normalizedAbsoluteResourcePath.startsWith(apiRoutesPath + path.sep) &&\n dotPrefixedPageExtensions.some(ext => normalizedAbsoluteResourcePath.endsWith(ext))\n );\n };\n\n const possibleMiddlewareLocations = pageExtensions.flatMap(middlewareFileEnding => {\n return [\n path.join(middlewareLocationFolder, `middleware.${middlewareFileEnding}`),\n path.join(middlewareLocationFolder, `proxy.${middlewareFileEnding}`),\n ];\n });\n const isMiddlewareResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return possibleMiddlewareLocations.includes(normalizedAbsoluteResourcePath);\n };\n\n const isServerComponentResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n\n // \".js, .jsx, or .tsx file extensions can be used for Pages\"\n // https://beta.nextjs.org/docs/routing/pages-and-layouts#pages:~:text=.js%2C%20.jsx%2C%20or%20.tsx%20file%20extensions%20can%20be%20used%20for%20Pages.\n return (\n appDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(appDirPath + path.sep) &&\n !!normalizedAbsoluteResourcePath.match(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n new RegExp(`[\\\\\\\\/](page|layout|loading|head|not-found)\\\\.(${pageExtensionRegex})$`),\n )\n );\n };\n\n const isRouteHandlerResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n appDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(appDirPath + path.sep) &&\n !!normalizedAbsoluteResourcePath.match(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n new RegExp(`[\\\\\\\\/]route\\\\.(${pageExtensionRegex})$`),\n )\n );\n };\n\n if (isServer && userSentryOptions.webpack?.autoInstrumentServerFunctions !== false) {\n // It is very important that we insert our loaders at the beginning of the array because we expect any sort of transformations/transpilations (e.g. TS -> JS) to already have happened.\n\n // Wrap pages\n newConfig.module.rules.unshift({\n test: isPageResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'page',\n },\n },\n ],\n });\n\n // Wrap api routes\n newConfig.module.rules.unshift({\n test: isApiRouteResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n vercelCronsConfig: vercelCronsConfigForWrapper,\n wrappingTargetKind: 'api-route',\n },\n },\n ],\n });\n\n // Wrap middleware\n const canWrapStandaloneMiddleware = userNextConfig.output !== 'standalone' || !major || major < 16;\n if ((userSentryOptions.webpack?.autoInstrumentMiddleware ?? true) && canWrapStandaloneMiddleware) {\n newConfig.module.rules.unshift({\n test: isMiddlewareResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'middleware',\n },\n },\n ],\n });\n }\n }\n\n if (isServer && userSentryOptions.webpack?.autoInstrumentAppDirectory !== false) {\n // Wrap server components\n newConfig.module.rules.unshift({\n test: isServerComponentResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'server-component',\n },\n },\n ],\n });\n\n // Wrap route handlers\n newConfig.module.rules.unshift({\n test: isRouteHandlerResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'route-handler',\n },\n },\n ],\n });\n }\n\n if (appDirPath) {\n const hasGlobalErrorFile = pageExtensions\n .map(extension => `global-error.${extension}`)\n .some(globalErrorFile => fs.existsSync(path.join(appDirPath, globalErrorFile)));\n\n if (\n !hasGlobalErrorFile &&\n !showedMissingGlobalErrorWarningMsg &&\n !process.env.SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING\n ) {\n // eslint-disable-next-line no-console\n console.log(\n \"[@sentry/nextjs] It seems like you don't have a global error handler set up. It is recommended that you add a 'global-error.js' file with Sentry instrumentation so that React rendering errors are reported to Sentry. Read more: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#react-render-errors-in-app-router (you can suppress this warning by setting SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 as environment variable)\",\n );\n showedMissingGlobalErrorWarningMsg = true;\n }\n }\n\n if (!isServer) {\n // Tell webpack to inject the client config files (containing the client-side `Sentry.init()` call) into the appropriate output\n // bundles. Store a separate reference to the original `entry` value to avoid an infinite loop. (If we don't do\n // this, we'll have a statement of the form `x.y = () => f(x.y)`, where one of the things `f` does is call `x.y`.\n // Since we're setting `x.y` to be a callback (which, by definition, won't run until some time later), by the time\n // the function runs (causing `f` to run, causing `x.y` to run), `x.y` will point to the callback itself, rather\n // than its original value. So calling it will call the callback which will call `f` which will call `x.y` which\n // will call the callback which will call `f` which will call `x.y`... and on and on. Theoretically this could also\n // be fixed by using `bind`, but this is way simpler.)\n const origEntryProperty = newConfig.entry;\n newConfig.entry = async () => addSentryToClientEntryProperty(origEntryProperty, buildContext);\n\n const clientSentryConfigFileName = getClientSentryConfigFile(projectDir);\n if (clientSentryConfigFileName) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] DEPRECATION WARNING: It is recommended renaming your \\`${clientSentryConfigFileName}\\` file, or moving its content to \\`instrumentation-client.ts\\`. When using Turbopack \\`${clientSentryConfigFileName}\\` will no longer work. Read more about the \\`instrumentation-client.ts\\` file: https://nextjs.org/docs/app/api-reference/file-conventions/instrumentation-client`,\n );\n }\n }\n\n const isStaticExport = userNextConfig?.output === 'export';\n\n // We don't want to do any webpack plugin stuff OR any source maps stuff in dev mode or for the server on static-only builds.\n // Symbolication for dev-mode errors is done elsewhere.\n if (!(isDev || (isStaticExport && isServer))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { sentryWebpackPlugin } = loadModule<{ sentryWebpackPlugin: any }>('@sentry/webpack-plugin', module) ?? {};\n\n if (sentryWebpackPlugin) {\n if (!userSentryOptions.sourcemaps?.disable) {\n // Source maps can be configured in 3 ways:\n // 1. (next config): productionBrowserSourceMaps\n // 2. (next config): experimental.serverSourceMaps\n // 3. custom webpack configuration\n //\n // We only update this if no explicit value is set\n // (Next.js defaults to `false`: https://github.com/vercel/next.js/blob/5f4f96c133bd6b10954812cc2fef6af085b82aa5/packages/next/src/build/webpack/config/blocks/base.ts#L61)\n if (!newConfig.devtool) {\n debug.log(`[@sentry/nextjs] Automatically enabling source map generation for ${runtime} build.`);\n // `hidden-source-map` produces the same sourcemaps as `source-map`, but doesn't include the `sourceMappingURL`\n // comment at the bottom. For folks who aren't publicly hosting their sourcemaps, this is helpful because then\n // the browser won't look for them and throw errors into the console when it can't find them. Because this is a\n // front-end-only problem, and because `sentry-cli` handles sourcemaps more reliably with the comment than\n // without, the option to use `hidden-source-map` only applies to the client-side build.\n if (isServer) {\n newConfig.devtool = 'source-map';\n } else {\n newConfig.devtool = 'hidden-source-map';\n }\n }\n\n // enable source map deletion if not explicitly disabled\n if (!isServer && userSentryOptions.sourcemaps?.deleteSourcemapsAfterUpload === undefined) {\n debug.warn(\n '[@sentry/nextjs] Source maps will be automatically deleted after being uploaded to Sentry. If you want to keep the source maps, set the `sourcemaps.deleteSourcemapsAfterUpload` option to false in `withSentryConfig()`. If you do not want to generate and upload sourcemaps at all, set the `sourcemaps.disable` option to true.',\n );\n userSentryOptions.sourcemaps = {\n ...userSentryOptions.sourcemaps,\n deleteSourcemapsAfterUpload: true,\n };\n }\n }\n\n newConfig.plugins = newConfig.plugins || [];\n const { config: userNextConfig, dir, nextRuntime } = buildContext;\n const buildTool = isServer ? (nextRuntime === 'edge' ? 'webpack-edge' : 'webpack-nodejs') : 'webpack-client';\n const projectDir = normalizePathForGlob(dir);\n const distDir = normalizePathForGlob((userNextConfig as NextConfigObject).distDir ?? '.next');\n const distDirAbsPath = path.posix.join(projectDir, distDir);\n\n const sentryWebpackPluginInstance = sentryWebpackPlugin(\n getBuildPluginOptions({\n sentryBuildOptions: userSentryOptions,\n releaseName,\n distDirAbsPath,\n buildTool,\n useRunAfterProductionCompileHook,\n }),\n );\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n sentryWebpackPluginInstance._name = 'sentry-webpack-plugin'; // For tests and debugging. Serves no other purpose.\n newConfig.plugins.push(sentryWebpackPluginInstance);\n }\n }\n\n if (userSentryOptions.webpack?.treeshake) {\n setupTreeshakingFromConfig(userSentryOptions, newConfig, buildContext);\n }\n\n // We inject a map of dependencies that the nextjs app has, as we cannot reliably extract them at runtime, sadly\n newConfig.plugins = newConfig.plugins || [];\n newConfig.plugins.push(\n new buildContext.webpack.DefinePlugin({\n __SENTRY_SERVER_MODULES__: JSON.stringify(getPackageModules(projectDir)),\n }),\n );\n\n return newConfig;\n };\n}\n\n/**\n * Modify the webpack `entry` property so that the code in `sentry.client.config.js` is\n * included in the the necessary bundles.\n *\n * @param currentEntryProperty The value of the property before Sentry code has been injected\n * @param buildContext Object passed by nextjs containing metadata about the build\n * @returns The value which the new `entry` property (which will be a function) will return (TODO: this should return\n * the function, rather than the function's return value)\n */\nasync function addSentryToClientEntryProperty(\n currentEntryProperty: WebpackEntryProperty,\n buildContext: BuildContext,\n): Promise {\n // The `entry` entry in a webpack config can be a string, array of strings, object, or function. By default, nextjs\n // sets it to an async function which returns the promise of an object of string arrays. Because we don't know whether\n // someone else has come along before us and changed that, we need to check a few things along the way. The one thing\n // we know is that it won't have gotten *simpler* in form, so we only need to worry about the object and function\n // options. See https://webpack.js.org/configuration/entry-context/#entry.\n\n const { dir: projectDir, dev: isDevMode } = buildContext;\n\n const newEntryProperty =\n typeof currentEntryProperty === 'function' ? await currentEntryProperty() : { ...currentEntryProperty };\n\n const clientSentryConfigFileName = getClientSentryConfigFile(projectDir);\n const instrumentationClientFileName = getInstrumentationClientFile(projectDir);\n\n const filesToInject = [];\n if (clientSentryConfigFileName) {\n // we need to turn the filename into a path so webpack can find it\n filesToInject.push(`./${clientSentryConfigFileName}`);\n }\n if (instrumentationClientFileName) {\n // we need to turn the filename into a path so webpack can find it\n filesToInject.push(`./${instrumentationClientFileName}`);\n }\n\n // inject into all entry points which might contain user's code\n for (const entryPointName in newEntryProperty) {\n if (\n entryPointName === 'pages/_app' ||\n // entrypoint for `/app` pages\n entryPointName === 'main-app'\n ) {\n addFilesToWebpackEntryPoint(newEntryProperty, entryPointName, filesToInject, isDevMode);\n }\n }\n\n return newEntryProperty;\n}\n\n/**\n * Gets the content of the user's instrumentation file\n */\nfunction getInstrumentationFile(projectDir: string, dotPrefixedExtensions: string[]): string | null {\n const paths = dotPrefixedExtensions.flatMap(extension => [\n ['src', `instrumentation${extension}`],\n [`instrumentation${extension}`],\n ]);\n\n for (const pathSegments of paths) {\n try {\n return fs.readFileSync(path.resolve(projectDir, ...pathSegments), { encoding: 'utf-8' });\n } catch {\n // no-op\n }\n }\n\n return null;\n}\n\n/**\n * Make sure the instrumentation file has a `onRequestError` Handler\n */\nfunction warnAboutMissingOnRequestErrorHandler(instrumentationFile: string | null): void {\n if (!instrumentationFile) {\n if (!process.env.SENTRY_SUPPRESS_INSTRUMENTATION_FILE_WARNING) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not find a Next.js instrumentation file. This indicates an incomplete configuration of the Sentry SDK. An instrumentation file is required for the Sentry SDK to be initialized on the server: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#create-initialization-config-files (you can suppress this warning by setting SENTRY_SUPPRESS_INSTRUMENTATION_FILE_WARNING=1 as environment variable)',\n );\n }\n return;\n }\n\n if (!instrumentationFile.includes('onRequestError')) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not find `onRequestError` hook in instrumentation file. This indicates outdated configuration of the Sentry SDK. Use `Sentry.captureRequestError` to instrument the `onRequestError` hook: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#errors-from-nested-react-server-components',\n );\n }\n}\n\n/**\n * Searches for old `sentry.(server|edge).config.ts` files and Next.js instrumentation hooks and warns if there are \"old\"\n * config files and no signs of them inside the instrumentation hook.\n *\n * @param projectDir The root directory of the project, where config files would be located\n * @param platform Either \"server\" or \"edge\", so that we know which file to look for\n */\nfunction warnAboutDeprecatedConfigFiles(\n projectDir: string,\n instrumentationFile: string | null,\n platform: 'server' | 'edge',\n): void {\n const hasInstrumentationHookWithIndicationsOfSentry =\n instrumentationFile &&\n (instrumentationFile.includes('@sentry/') ||\n instrumentationFile.match(/sentry\\.(server|edge)\\.config(\\.(ts|js))?/));\n\n if (hasInstrumentationHookWithIndicationsOfSentry) {\n return;\n }\n\n for (const filename of [`sentry.${platform}.config.ts`, `sentry.${platform}.config.js`]) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] It appears you've configured a \\`${filename}\\` file. Please ensure to put this file's content into the \\`register()\\` function of a Next.js instrumentation file instead. To ensure correct functionality of the SDK, \\`Sentry.init\\` must be called inside of an instrumentation file. Learn more about setting up an instrumentation file in Next.js: https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation. You can safely delete the \\`${filename}\\` file afterward.`,\n );\n }\n }\n}\n\n/**\n * Searches for a `sentry.client.config.ts|js` file and returns its file name if it finds one. (ts being prioritized)\n *\n * @param projectDir The root directory of the project, where config files would be located\n */\nfunction getClientSentryConfigFile(projectDir: string): string | void {\n const possibilities = ['sentry.client.config.ts', 'sentry.client.config.js'];\n\n for (const filename of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n return filename;\n }\n }\n}\n\n/**\n * Searches for a `instrumentation-client.ts|js` file and returns its file name if it finds one. (ts being prioritized)\n *\n * @param projectDir The root directory of the project, where config files would be located\n */\nfunction getInstrumentationClientFile(projectDir: string): string | void {\n const possibilities = [\n ['src', 'instrumentation-client.js'],\n ['src', 'instrumentation-client.ts'],\n ['instrumentation-client.js'],\n ['instrumentation-client.ts'],\n ];\n\n for (const pathParts of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, ...pathParts))) {\n return path.join(...pathParts);\n }\n }\n}\n\n/**\n * Add files to a specific element of the given `entry` webpack config property.\n *\n * @param entryProperty The existing `entry` config object\n * @param entryPointName The key where the file should be injected\n * @param filesToInsert An array of paths to the injected files\n */\nfunction addFilesToWebpackEntryPoint(\n entryProperty: EntryPropertyObject,\n entryPointName: string,\n filesToInsert: string[],\n isDevMode: boolean,\n): void {\n // BIG FAT NOTE: Order of insertion seems to matter here. If we insert the new files before the `currentEntrypoint`s,\n // the Next.js dev server breaks. Because we generally still want the SDK to be initialized as early as possible we\n // still keep it at the start of the entrypoints if we are not in dev mode.\n\n // can be a string, array of strings, or object whose `import` property is one of those two\n const currentEntryPoint = entryProperty[entryPointName];\n let newEntryPoint = currentEntryPoint;\n\n if (typeof currentEntryPoint === 'string' || Array.isArray(currentEntryPoint)) {\n newEntryPoint = Array.isArray(currentEntryPoint) ? currentEntryPoint : [currentEntryPoint];\n if (newEntryPoint.some(entry => filesToInsert.includes(entry))) {\n return;\n }\n\n if (isDevMode) {\n // Inserting at beginning breaks dev mode so we insert at the end\n newEntryPoint.push(...filesToInsert);\n } else {\n // In other modes we insert at the beginning so that the SDK initializes as early as possible\n newEntryPoint.unshift(...filesToInsert);\n }\n }\n // descriptor object (webpack 5+)\n else if (typeof currentEntryPoint === 'object' && 'import' in currentEntryPoint) {\n const currentImportValue = currentEntryPoint.import;\n const newImportValue = Array.isArray(currentImportValue) ? currentImportValue : [currentImportValue];\n if (newImportValue.some(entry => filesToInsert.includes(entry))) {\n return;\n }\n\n if (isDevMode) {\n // Inserting at beginning breaks dev mode so we insert at the end\n newImportValue.push(...filesToInsert);\n } else {\n // In other modes we insert at the beginning so that the SDK initializes as early as possible\n newImportValue.unshift(...filesToInsert);\n }\n\n newEntryPoint = {\n ...currentEntryPoint,\n import: newImportValue,\n };\n }\n // malformed entry point (use `console.error` rather than `debug.error` because it will always be printed, regardless\n // of SDK settings)\n else {\n // eslint-disable-next-line no-console\n console.error(\n 'Sentry Logger [Error]:',\n `Could not inject SDK initialization code into entry point ${entryPointName}, as its current value is not in a recognized format.\\n`,\n 'Expected: string | Array | { [key:string]: any, import: string | Array }\\n',\n `Got: ${currentEntryPoint}`,\n );\n }\n\n if (newEntryPoint) {\n entryProperty[entryPointName] = newEntryPoint;\n }\n}\n\n/**\n * Ensure that `newConfig.module.rules` exists. Modifies the given config in place but also returns it in order to\n * change its type.\n *\n * @param newConfig A webpack config object which may or may not contain `module` and `module.rules`\n * @returns The same object, with an empty `module.rules` array added if necessary\n */\nfunction setUpModuleRules(newConfig: WebpackConfigObject): WebpackConfigObjectWithModuleRules {\n newConfig.module = {\n ...newConfig.module,\n rules: [...(newConfig.module?.rules || [])],\n };\n // Surprising that we have to assert the type here, since we've demonstrably guaranteed the existence of\n // `newConfig.module.rules` just above, but ¯\\_(ツ)_/¯\n return newConfig as WebpackConfigObjectWithModuleRules;\n}\n\n/**\n * Adds loaders to inject values on the global object based on user configuration.\n */\n// TODO: Remove this loader and replace it with a nextConfig.env (https://web.archive.org/web/20240917153554/https://nextjs.org/docs/app/api-reference/next-config-js/env) or define based (https://github.com/vercel/next.js/discussions/71476) approach.\n// In order to remove this loader though we need to make sure the minimum supported Next.js version includes this PR (https://github.com/vercel/next.js/pull/61194), otherwise the nextConfig.env based approach will not work, as our SDK code is not processed by Next.js.\nfunction addValueInjectionLoader({\n newConfig,\n userNextConfig,\n userSentryOptions,\n buildContext,\n releaseName,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n}: {\n newConfig: WebpackConfigObjectWithModuleRules;\n userNextConfig: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n buildContext: BuildContext;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n vercelCronsConfig: VercelCronsConfig;\n}): void {\n const assetPrefix = userNextConfig.assetPrefix || userNextConfig.basePath || '';\n\n // Check if release creation is disabled to prevent injection that breaks build determinism\n const shouldCreateRelease = userSentryOptions.release?.create !== false;\n const releaseToInject = releaseName && shouldCreateRelease ? releaseName : undefined;\n\n const isomorphicValues = {\n // `rewritesTunnel` set by the user in Next.js config\n _sentryRewritesTunnelPath:\n userSentryOptions.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${userNextConfig.basePath ?? ''}${userSentryOptions.tunnelRoute}`\n : undefined,\n\n // The webpack plugin's release injection breaks the `app` directory so we inject the release manually here instead.\n // Having a release defined in dev-mode spams releases in Sentry so we only set one in non-dev mode\n // Only inject if release creation is not explicitly disabled (to maintain build determinism)\n SENTRY_RELEASE: releaseToInject && !buildContext.dev ? { id: releaseToInject } : undefined,\n _sentryBasePath: buildContext.dev ? userNextConfig.basePath : undefined,\n // This is used to determine version-based dev-symbolication behavior\n _sentryNextJsVersion: nextJsVersion,\n };\n\n const serverValues = {\n ...isomorphicValues,\n // Make sure that if we have a windows path, the backslashes are interpreted as such (rather than as escape\n // characters)\n _sentryRewriteFramesDistDir: userNextConfig.distDir?.replace(/\\\\/g, '\\\\\\\\') || '.next',\n // Inject Vercel crons config for server-side cron auto-instrumentation\n _sentryVercelCronsConfig: vercelCronsConfig ? JSON.stringify(vercelCronsConfig) : undefined,\n };\n\n const clientValues = {\n ...isomorphicValues,\n // Get the path part of `assetPrefix`, minus any trailing slash. (We use a placeholder for the origin if\n // `assetPrefix` doesn't include one. Since we only care about the path, it doesn't matter what it is.)\n _sentryRewriteFramesAssetPrefixPath: assetPrefix\n ? new URL(assetPrefix, 'http://dogs.are.great').pathname.replace(/\\/$/, '')\n : '',\n _sentryAssetPrefix: userNextConfig.assetPrefix,\n _sentryExperimentalThirdPartyOriginStackFrames: userSentryOptions._experimental?.thirdPartyOriginStackFrames\n ? 'true'\n : undefined,\n _sentryRouteManifest: JSON.stringify(routeManifest),\n };\n\n if (buildContext.isServer) {\n newConfig.module.rules.push({\n // TODO: Find a more bulletproof way of matching. For now this is fine and doesn't hurt anyone. It merely sets some globals.\n test: /(src[\\\\/])?instrumentation.(js|ts)/,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders/valueInjectionLoader.js'),\n options: {\n values: serverValues,\n },\n },\n ],\n });\n } else {\n newConfig.module.rules.push({\n test: /(?:sentry\\.client\\.config\\.(jsx?|tsx?)|(?:src[\\\\/])?instrumentation-client\\.(js|ts))$/,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders/valueInjectionLoader.js'),\n options: {\n values: clientValues,\n },\n },\n ],\n });\n }\n}\n\nfunction resolveNextPackageDirFromDirectory(basedir: string): string | undefined {\n try {\n return path.dirname(createRequire(`${basedir}/`).resolve('next/package.json'));\n } catch {\n // Should not happen in theory\n return undefined;\n }\n}\n\nconst POTENTIAL_REQUEST_ASYNC_STORAGE_LOCATIONS = [\n // Original location of RequestAsyncStorage\n // https://github.com/vercel/next.js/blob/46151dd68b417e7850146d00354f89930d10b43b/packages/next/src/client/components/request-async-storage.ts\n 'next/dist/client/components/request-async-storage.js',\n // Introduced in Next.js 13.4.20\n // https://github.com/vercel/next.js/blob/e1bc270830f2fc2df3542d4ef4c61b916c802df3/packages/next/src/client/components/request-async-storage.external.ts\n 'next/dist/client/components/request-async-storage.external.js',\n // Introduced in Next.js 15.0.0-canary.180\n // https://github.com/vercel/next.js/blob/541167b9b0fed6af9f36472e632863ffec41f18c/packages/next/src/server/app-render/work-unit-async-storage.external.ts\n 'next/dist/server/app-render/work-unit-async-storage.external.js',\n // Introduced in Next.js 15.0.0-canary.182\n // https://github.com/vercel/next.js/blob/f35159e5e80138ca7373f57b47edcaae3bcf1728/packages/next/src/client/components/work-unit-async-storage.external.ts\n 'next/dist/client/components/work-unit-async-storage.external.js',\n];\n\nfunction getRequestAsyncStorageModuleLocation(\n webpackContextDir: string,\n webpackResolvableModuleLocations: string[] | undefined,\n): string | undefined {\n if (webpackResolvableModuleLocations === undefined) {\n return undefined;\n }\n\n const absoluteWebpackResolvableModuleLocations = webpackResolvableModuleLocations.map(loc =>\n path.resolve(webpackContextDir, loc),\n );\n\n for (const webpackResolvableLocation of absoluteWebpackResolvableModuleLocations) {\n const nextPackageDir = resolveNextPackageDirFromDirectory(webpackResolvableLocation);\n if (nextPackageDir) {\n const asyncLocalStorageLocation = POTENTIAL_REQUEST_ASYNC_STORAGE_LOCATIONS.find(loc =>\n fs.existsSync(path.join(nextPackageDir, '..', loc)),\n );\n if (asyncLocalStorageLocation) {\n return asyncLocalStorageLocation;\n }\n }\n }\n\n return undefined;\n}\n\nfunction addOtelWarningIgnoreRule(newConfig: WebpackConfigObjectWithModuleRules): void {\n const ignoreRules = [\n // Inspired by @matmannion: https://github.com/getsentry/sentry-javascript/issues/12077#issuecomment-2180307072\n (warning, compilation) => {\n // This is wrapped in try-catch because we are vendoring types for this hook and we can't be 100% sure that we are accessing API that is there\n try {\n if (!warning.module) {\n return false;\n }\n\n const isDependencyThatMayRaiseCriticalDependencyMessage =\n /@opentelemetry\\/instrumentation/.test(warning.module.readableIdentifier(compilation.requestShortener)) ||\n /@prisma\\/instrumentation/.test(warning.module.readableIdentifier(compilation.requestShortener));\n const isCriticalDependencyMessage = /Critical dependency/.test(warning.message);\n\n return isDependencyThatMayRaiseCriticalDependencyMessage && isCriticalDependencyMessage;\n } catch {\n return false;\n }\n },\n // We provide these objects in addition to the hook above to provide redundancy in case the hook fails.\n { module: /@opentelemetry\\/instrumentation/, message: /Critical dependency/ },\n { module: /@prisma\\/instrumentation/, message: /Critical dependency/ },\n { module: /require-in-the-middle/, message: /Critical dependency/ },\n ] satisfies IgnoreWarningsOption;\n\n if (newConfig.ignoreWarnings === undefined) {\n newConfig.ignoreWarnings = ignoreRules;\n } else if (Array.isArray(newConfig.ignoreWarnings)) {\n newConfig.ignoreWarnings.push(...ignoreRules);\n }\n}\n\nfunction addEdgeRuntimePolyfills(newConfig: WebpackConfigObjectWithModuleRules, buildContext: BuildContext): void {\n // Use ProvidePlugin to inject performance global only when accessed\n newConfig.plugins = newConfig.plugins || [];\n newConfig.plugins.push(\n new buildContext.webpack.ProvidePlugin({\n performance: [path.resolve(__dirname, 'polyfills', 'perf_hooks.js'), 'performance'],\n }),\n );\n\n // Add module resolution aliases for problematic Node.js modules in edge runtime\n newConfig.resolve = newConfig.resolve || {};\n newConfig.resolve.alias = {\n ...newConfig.resolve.alias,\n // Redirect perf_hooks imports to a polyfilled version\n perf_hooks: path.resolve(__dirname, 'polyfills', 'perf_hooks.js'),\n };\n}\n\n/**\n * Sets up the tree-shaking flags based on the user's configuration.\n * https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/tree-shaking/\n */\nfunction setupTreeshakingFromConfig(\n userSentryOptions: SentryBuildOptions,\n newConfig: WebpackConfigObjectWithModuleRules,\n buildContext: BuildContext,\n): void {\n const defines: Record = {};\n\n newConfig.plugins = newConfig.plugins || [];\n\n if (userSentryOptions.webpack?.treeshake?.removeDebugLogging) {\n defines.__SENTRY_DEBUG__ = false;\n }\n\n if (userSentryOptions.webpack?.treeshake?.removeTracing) {\n defines.__SENTRY_TRACING__ = false;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayIframe) {\n defines.__RRWEB_EXCLUDE_IFRAME__ = true;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayShadowDOM) {\n defines.__RRWEB_EXCLUDE_SHADOW_DOM__ = true;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayCompressionWorker) {\n defines.__SENTRY_EXCLUDE_REPLAY_WORKER__ = true;\n }\n\n // Only add DefinePlugin if there are actual defines to set\n if (Object.keys(defines).length > 0) {\n newConfig.plugins.push(new buildContext.webpack.DefinePlugin(defines));\n }\n}\n","// Packages we auto-instrument need to be external for instrumentation to work\n// Next.js externalizes some packages by default, see: https://nextjs.org/docs/app/api-reference/config/next-config-js/serverExternalPackages\n// Others we need to add ourselves\n//\n// NOTE: 'ai' (Vercel AI SDK) is intentionally NOT included in this list.\n// When externalized, Next.js doesn't properly handle the package's conditional exports,\n// specifically the \"react-server\" export condition. This causes client-side code to be\n// loaded in server components instead of the appropriate server-side functions.\nexport const DEFAULT_SERVER_EXTERNAL_PACKAGES = [\n 'amqplib',\n 'connect',\n 'dataloader',\n 'express',\n 'generic-pool',\n 'graphql',\n '@hapi/hapi',\n 'ioredis',\n 'kafkajs',\n 'koa',\n 'lru-memoizer',\n 'mongodb',\n 'mongoose',\n 'mysql',\n 'mysql2',\n 'knex',\n 'pg',\n 'pg-pool',\n '@node-redis/client',\n '@redis/client',\n 'redis',\n 'tedious',\n];\n","import { handleRunAfterProductionCompile } from '../handleRunAfterProductionCompile';\nimport type { RouteManifest } from '../manifest/types';\nimport { constructTurbopackConfig } from '../turbopack';\nimport type { NextConfigObject, SentryBuildOptions, TurbopackOptions } from '../types';\nimport { detectActiveBundler, supportsProductionCompileHook } from '../util';\nimport { constructWebpackConfigFunction } from '../webpack';\nimport { DEFAULT_SERVER_EXTERNAL_PACKAGES } from './constants';\nimport type { VercelCronsConfigResult } from './getFinalConfigObjectUtils';\n\n/**\n * Information about the active bundler and feature support based on Next.js version.\n */\nexport type BundlerInfo = {\n isTurbopack: boolean;\n isWebpack: boolean;\n isTurbopackSupported: boolean;\n};\n\n/**\n * Detects which bundler is active (webpack vs turbopack) and whether turbopack features are supported.\n */\nexport function getBundlerInfo(nextJsVersion: string | undefined): BundlerInfo {\n const activeBundler = detectActiveBundler();\n const isTurbopack = activeBundler === 'turbopack';\n const isWebpack = activeBundler === 'webpack';\n const isTurbopackSupported = supportsProductionCompileHook(nextJsVersion ?? '');\n\n return { isTurbopack, isWebpack, isTurbopackSupported };\n}\n\n/**\n * Warns if turbopack is in use but the detected Next.js version is unsupported.\n */\nexport function maybeWarnAboutUnsupportedTurbopack(nextJsVersion: string | undefined, bundlerInfo: BundlerInfo): void {\n // Warn if using turbopack with an unsupported Next.js version\n if (!bundlerInfo.isTurbopackSupported && bundlerInfo.isTurbopack) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] WARNING: You are using the Sentry SDK with Turbopack. The Sentry SDK is compatible with Turbopack on Next.js version 15.4.1 or later. You are currently on ${nextJsVersion}. Please upgrade to a newer Next.js version to use the Sentry SDK with Turbopack.`,\n );\n }\n}\n\n/**\n * Warns if `useRunAfterProductionCompileHook` is enabled in webpack mode but the Next.js version is unsupported.\n */\nexport function maybeWarnAboutUnsupportedRunAfterProductionCompileHook(\n nextJsVersion: string | undefined,\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): void {\n // Webpack case - warn if trying to use runAfterProductionCompile hook with unsupported Next.js version\n if (\n userSentryOptions.useRunAfterProductionCompileHook &&\n !supportsProductionCompileHook(nextJsVersion ?? '') &&\n bundlerInfo.isWebpack\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] The configured `useRunAfterProductionCompileHook` option is not compatible with your current Next.js version. This option is only supported on Next.js version 15.4.1 or later. Will not run source map and release management logic.',\n );\n }\n}\n\n/**\n * Constructs turbopack config when turbopack is active.\n */\nexport function maybeConstructTurbopackConfig(\n incomingUserNextConfigObject: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n routeManifest: RouteManifest | undefined,\n nextJsVersion: string | undefined,\n bundlerInfo: BundlerInfo,\n vercelCronsConfigResult: VercelCronsConfigResult,\n): TurbopackOptions | undefined {\n if (!bundlerInfo.isTurbopack) {\n return undefined;\n }\n\n // Only pass crons config if the span-based approach is enabled\n const vercelCronsConfig = vercelCronsConfigResult.strategy === 'spans' ? vercelCronsConfigResult.config : undefined;\n\n return constructTurbopackConfig({\n userNextConfig: incomingUserNextConfigObject,\n userSentryOptions,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n });\n}\n\n/**\n * Resolves whether to use the `runAfterProductionCompile` hook based on options and bundler.\n */\nexport function resolveUseRunAfterProductionCompileHookOption(\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): boolean {\n // If not explicitly set, turbopack uses the runAfterProductionCompile hook (as there are no alternatives), webpack does not.\n return userSentryOptions.useRunAfterProductionCompileHook ?? (bundlerInfo.isTurbopack ? true : false);\n}\n\n/**\n * Hooks into Next.js' `compiler.runAfterProductionCompile` to run Sentry release/sourcemap handling.\n *\n * Note: this mutates `incomingUserNextConfigObject`.\n */\nexport function maybeSetUpRunAfterProductionCompileHook({\n incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n nextJsVersion,\n bundlerInfo,\n turboPackConfig,\n shouldUseRunAfterProductionCompileHook,\n}: {\n incomingUserNextConfigObject: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n nextJsVersion: string | undefined;\n bundlerInfo: BundlerInfo;\n turboPackConfig: TurbopackOptions | undefined;\n shouldUseRunAfterProductionCompileHook: boolean;\n}): void {\n if (!shouldUseRunAfterProductionCompileHook) {\n return;\n }\n\n if (!supportsProductionCompileHook(nextJsVersion ?? '')) {\n return;\n }\n\n if (incomingUserNextConfigObject?.compiler?.runAfterProductionCompile === undefined) {\n incomingUserNextConfigObject.compiler ??= {};\n\n incomingUserNextConfigObject.compiler.runAfterProductionCompile = async ({ distDir }) => {\n await handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool: bundlerInfo.isTurbopack ? 'turbopack' : 'webpack',\n usesNativeDebugIds: bundlerInfo.isTurbopack ? turboPackConfig?.debugIds : undefined,\n },\n userSentryOptions,\n );\n };\n return;\n }\n\n if (typeof incomingUserNextConfigObject.compiler.runAfterProductionCompile === 'function') {\n incomingUserNextConfigObject.compiler.runAfterProductionCompile = new Proxy(\n incomingUserNextConfigObject.compiler.runAfterProductionCompile,\n {\n async apply(target, thisArg, argArray) {\n const { distDir }: { distDir: string } = argArray[0] ?? { distDir: '.next' };\n await target.apply(thisArg, argArray);\n await handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool: bundlerInfo.isTurbopack ? 'turbopack' : 'webpack',\n usesNativeDebugIds: bundlerInfo.isTurbopack ? turboPackConfig?.debugIds : undefined,\n },\n userSentryOptions,\n );\n },\n },\n );\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] The configured `compiler.runAfterProductionCompile` option is not a function. Will not run source map and release management logic.',\n );\n}\n\n/**\n * For supported turbopack builds, auto-enables browser sourcemaps and defaults to deleting them after upload.\n *\n * Note: this mutates both `incomingUserNextConfigObject` and `userSentryOptions`.\n */\nexport function maybeEnableTurbopackSourcemaps(\n incomingUserNextConfigObject: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): void {\n // Enable source maps for turbopack builds\n if (!bundlerInfo.isTurbopackSupported || !bundlerInfo.isTurbopack || userSentryOptions.sourcemaps?.disable) {\n return;\n }\n\n // Only set if not already configured by user\n if (incomingUserNextConfigObject.productionBrowserSourceMaps !== undefined) {\n return;\n }\n\n if (userSentryOptions.debug) {\n // eslint-disable-next-line no-console\n console.log('[@sentry/nextjs] Automatically enabling browser source map generation for turbopack build.');\n }\n incomingUserNextConfigObject.productionBrowserSourceMaps = true;\n\n // Enable source map deletion if not explicitly disabled\n if (userSentryOptions.sourcemaps?.deleteSourcemapsAfterUpload !== undefined) {\n return;\n }\n\n if (userSentryOptions.debug) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Source maps will be automatically deleted after being uploaded to Sentry. If you want to keep the source maps, set the `sourcemaps.deleteSourcemapsAfterUpload` option to false in `withSentryConfig()`. If you do not want to generate and upload sourcemaps at all, set the `sourcemaps.disable` option to true.',\n );\n }\n\n userSentryOptions.sourcemaps = {\n ...userSentryOptions.sourcemaps,\n deleteSourcemapsAfterUpload: true,\n };\n}\n\n/**\n * Returns the patch which ensures server-side auto-instrumented packages are externalized.\n */\nexport function getServerExternalPackagesPatch(\n incomingUserNextConfigObject: NextConfigObject,\n nextMajor: number | undefined,\n): Partial {\n if (nextMajor && nextMajor >= 15) {\n return {\n serverExternalPackages: [\n ...(incomingUserNextConfigObject.serverExternalPackages || []),\n ...DEFAULT_SERVER_EXTERNAL_PACKAGES,\n ],\n };\n }\n\n return {\n experimental: {\n ...incomingUserNextConfigObject.experimental,\n serverComponentsExternalPackages: [\n ...(incomingUserNextConfigObject.experimental?.serverComponentsExternalPackages || []),\n ...DEFAULT_SERVER_EXTERNAL_PACKAGES,\n ],\n },\n };\n}\n\n/**\n * Returns the patch for injecting Sentry's webpack config function (if enabled and applicable).\n */\nexport function getWebpackPatch({\n incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n routeManifest,\n nextJsVersion,\n shouldUseRunAfterProductionCompileHook,\n bundlerInfo,\n vercelCronsConfigResult,\n}: {\n incomingUserNextConfigObject: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n shouldUseRunAfterProductionCompileHook: boolean;\n bundlerInfo: BundlerInfo;\n vercelCronsConfigResult: VercelCronsConfigResult;\n}): Partial {\n if (!bundlerInfo.isWebpack || userSentryOptions.webpack?.disableSentryConfig) {\n return {};\n }\n\n return {\n webpack: constructWebpackConfigFunction({\n userNextConfig: incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n routeManifest,\n nextJsVersion,\n useRunAfterProductionCompileHook: shouldUseRunAfterProductionCompileHook,\n vercelCronsConfigResult,\n }),\n };\n}\n\n/**\n * Returns the patch for adding turbopack config (if enabled and supported).\n */\nexport function getTurbopackPatch(\n bundlerInfo: BundlerInfo,\n turboPackConfig: TurbopackOptions | undefined,\n): Partial {\n if (!bundlerInfo.isTurbopackSupported || !bundlerInfo.isTurbopack) {\n return {};\n }\n\n return { turbopack: turboPackConfig };\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling didn't run because the request was aborted.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling was skipped because the response had started.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was not handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\" as const;\n\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;\n\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy' as const;\n\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;\n\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\" as const;\n\n/**\n * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the endpoint limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\" as const;\n\n/**\n * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the global limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\" as const;\n\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\" as const;\n\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled' as const;\n\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback' as const;\n\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated' as const;\n\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_ADDRESS = 'client.address' as const;\n\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_PORT = 'client.port' as const;\n\n/**\n * The column number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 16\n */\nexport const ATTR_CODE_COLUMN_NUMBER = 'code.column.number' as const;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\n */\nexport const ATTR_CODE_FILE_PATH = 'code.file.path' as const;\n\n/**\n * The method or function fully-qualified name without arguments. The value should fit the natural representation of the language runtime, which is also likely the same used within `code.stacktrace` attribute value. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example com.example.MyHttpService.serveRequest\n * @example GuzzleHttp\\\\Client::transfer\n * @example fopen\n *\n * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples.\n * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in\n * `code.stacktrace` without information on arguments.\n *\n * Examples:\n *\n * - Java method: `com.example.MyHttpService.serveRequest`\n * - Java anonymous class method: `com.mycompany.Main$1.myMethod`\n * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod`\n * - PHP function: `GuzzleHttp\\Client::transfer`\n * - Go function: `github.com/my/repo/pkg.foo.func5`\n * - Elixir: `OpenTelemetry.Ctx.new`\n * - Erlang: `opentelemetry_ctx:new`\n * - Rust: `playground::my_module::my_cool_func`\n * - C function: `fopen`\n */\nexport const ATTR_CODE_FUNCTION_NAME = 'code.function.name' as const;\n\n/**\n * The line number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 42\n */\nexport const ATTR_CODE_LINE_NUMBER = 'code.line.number' as const;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is identical to [`exception.stacktrace`](/docs/exceptions/exceptions-spans.md#stacktrace-representation). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Location'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace' as const;\n\n/**\n * The name of a collection (table, container) within the database.\n *\n * @example public.users\n * @example customers\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The collection name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple collections\n * in non-batch operations.\n *\n * For batch operations, if the individual operations are known to have the same\n * collection name then that collection name **SHOULD** be used.\n */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name' as const;\n\n/**\n * The name of the database, fully qualified within the server address and port.\n *\n * @example customers\n * @example test.users\n *\n * @note If a database system has multiple namespace components, they **SHOULD** be concatenated from the most general to the most specific namespace component, using `|` as a separator between the components. Any missing components (and their associated separators) **SHOULD** be omitted.\n * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system.\n * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.\n */\nexport const ATTR_DB_NAMESPACE = 'db.namespace' as const;\n\n/**\n * The number of queries included in a batch operation.\n *\n * @example 2\n * @example 3\n * @example 4\n *\n * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`.\n */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;\n\n/**\n * The name of the operation or command being executed.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The operation name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple operations\n * in non-batch operations.\n *\n * If spaces can occur in the operation name, multiple consecutive spaces\n * **SHOULD** be normalized to a single space.\n *\n * For batch operations, if the individual operations are known to have the same operation name\n * then that operation name **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;\n\n/**\n * Low cardinality summary of a database query.\n *\n * @example SELECT wuser_table\n * @example INSERT shipping_details SELECT orders\n * @example get user by id\n *\n * @note The query summary describes a class of database queries and is useful\n * as a grouping key, especially when analyzing telemetry for database\n * calls involving complex queries.\n *\n * Summary may be available to the instrumentation through\n * instrumentation hooks or other means. If it is not available, instrumentations\n * that support query parsing **SHOULD** generate a summary following\n * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query)\n * section.\n *\n * For batch operations, if the individual operations are known to have the same query summary\n * then that query summary **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.query.summary` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexport const ATTR_DB_QUERY_SUMMARY = 'db.query.summary' as const;\n\n/**\n * The database query being executed.\n *\n * @example SELECT * FROM wuser_table where username = ?\n * @example SET mykey ?\n *\n * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext).\n * For batch operations, if the individual operations are known to have the same query text then that query text **SHOULD** be used, otherwise all of the individual query texts **SHOULD** be concatenated with separator `; ` or some other database system specific separator if more applicable.\n * Parameterized query text **SHOULD NOT** be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk.\n */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;\n\n/**\n * Database response status code.\n *\n * @example 102\n * @example ORA-17002\n * @example 08P01\n * @example 404\n *\n * @note The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.\n * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system.\n */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code' as const;\n\n/**\n * The name of a stored procedure within the database.\n *\n * @example GetCustomer\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * For batch operations, if the individual operations are known to have the same\n * stored procedure name then that stored procedure name **SHOULD** be used.\n */\nexport const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name' as const;\n\n/**\n * The database management system (DBMS) product as identified by the client instrumentation.\n *\n * @note The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge.\n */\nexport const ATTR_DB_SYSTEM_NAME = 'db.system.name' as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\" as const;\n\n/**\n * Enum value \"microsoft.sql_server\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Microsoft SQL Server](https://www.microsoft.com/sql-server)\n */\nexport const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\" as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation' as const;\n\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\" as const;\n\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\" as const;\n\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\" as const;\n\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\" as const;\n\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\" as const;\n\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes),\n * it's **RECOMMENDED** to:\n *\n * - Use a domain-specific attribute\n * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport const ATTR_ERROR_TYPE = 'error.type' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n *\n * A fallback error value to be used when the instrumentation doesn't define a custom value.\n */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Indicates that the exception is escaping the scope of the span.\n *\n * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span.\n */\nexport const ATTR_EXCEPTION_ESCAPED = 'exception.escaped' as const;\n\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n */\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message' as const;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace' as const;\n\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexport const ATTR_EXCEPTION_TYPE = 'exception.type' as const;\n\n/**\n * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * The `User-Agent` header is already captured in the `user_agent.original` attribute.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for`\n * attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]` or `[\"1.2.3.4, 1.2.3.5\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${key}`;\n\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods),\n * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html)\n * and the QUERY method defined in [httpbis-safe-method-w-body](https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/?include_text=1).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods.\n *\n *\n * If this override is done via declarative configuration, then the list **MUST** be configurable via the `known_methods` property\n * (an array of case-sensitive strings with minimum items 0) under `.instrumentation/development.general.http.client` and/or\n * `.instrumentation/development.general.http.server`.\n *\n * In either case, this list **MUST** be a full override of the default known methods,\n * it is not a list of known methods in addition to the defaults.\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexport const ATTR_HTTP_REQUEST_METHOD = 'http.request.method' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * Any HTTP method that the instrumentation has no prior knowledge of.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\" as const;\n\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\" as const;\n\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\" as const;\n\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\" as const;\n\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\" as const;\n\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\" as const;\n\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\" as const;\n\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\" as const;\n\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\" as const;\n\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original' as const;\n\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexport const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count' as const;\n\n/**\n * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header`\n * attribute with value `[\"abc\", \"def\"]` or `[\"abc, def\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.${key}`;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code' as const;\n\n/**\n * The matched route template for the request. This **MUST** be low-cardinality and include all static path segments, with dynamic path segments represented with placeholders.\n *\n * @example /users/:userID?\n * @example my-controller/my-action/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n *\n * A static path segment is a part of the route template with a fixed, low-cardinality value. This includes literal strings like `/users/` and placeholders that\n * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`.\n *\n * A dynamic path segment is a placeholder for a value that can have high cardinality and is not constrained to a predefined list like static path segments.\n *\n * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY**\n * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string.\n */\nexport const ATTR_HTTP_ROUTE = 'http.route' as const;\n\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexport const ATTR_JVM_GC_ACTION = 'jvm.gc.action' as const;\n\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexport const ATTR_JVM_GC_NAME = 'jvm.gc.name' as const;\n\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexport const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name' as const;\n\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type' as const;\n\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\" as const;\n\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\" as const;\n\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon' as const;\n\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state' as const;\n\n/**\n * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is blocked waiting for a monitor lock is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\" as const;\n\n/**\n * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has not yet started is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\" as const;\n\n/**\n * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread executing in the Java virtual machine is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\n/**\n * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\" as const;\n\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting indefinitely for another thread to perform a particular action is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\" as const;\n\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address' as const;\n\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port' as const;\n\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address' as const;\n\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;\n\n/**\n * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;\n\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexport const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version' as const;\n\n/**\n * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexport const ATTR_NETWORK_TRANSPORT = 'network.transport' as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\" as const;\n\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\" as const;\n\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\" as const;\n\n/**\n * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_TYPE = 'network.type' as const;\n\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\" as const;\n\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\" as const;\n\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name' as const;\n\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version' as const;\n\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport const ATTR_OTEL_STATUS_CODE = 'otel.status_code' as const;\n\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\" as const;\n\n/**\n * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation has been validated by an Application developer or Operator to have completed successfully.\n */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\" as const;\n\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description' as const;\n\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_ADDRESS = 'server.address' as const;\n\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_PORT = 'server.port' as const;\n\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexport const ATTR_SERVICE_NAME = 'service.name' as const;\n\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * The version string of the service component. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexport const ATTR_SERVICE_VERSION = 'service.version' as const;\n\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status' as const;\n\n/**\n * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed because the app is shutting down.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\" as const;\n\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexport const ATTR_SIGNALR_TRANSPORT = 'signalr.transport' as const;\n\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\" as const;\n\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\" as const;\n\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\" as const;\n\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;\n\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\" as const;\n\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\" as const;\n\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\" as const;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexport const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;\n\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport const ATTR_URL_FRAGMENT = 'url.fragment' as const;\n\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment\n * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n *\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`.\n * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n *\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed).\n *\n * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the\n * value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `https://www.example.com/path?color=blue&sig=REDACTED`.\n */\nexport const ATTR_URL_FULL = 'url.full' as const;\n\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport const ATTR_URL_PATH = 'url.path' as const;\n\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexport const ATTR_URL_QUERY = 'url.query' as const;\n\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexport const ATTR_URL_SCHEME = 'url.scheme' as const;\n\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexport const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { inspect } from 'util';\n\n/**\n * Retrieves a number from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number.\n * - Returns a number in all other cases.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {number | undefined} - The number value or `undefined`.\n */\nexport function getNumberFromEnv(key: string): number | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n\n const value = Number(raw);\n if (isNaN(value)) {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`\n );\n return undefined;\n }\n\n return value;\n}\n\n/**\n * Retrieves a string from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string | undefined} - The string value or `undefined`.\n */\nexport function getStringFromEnv(key: string): string | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\n\n/**\n * Retrieves a boolean value from an environment variable.\n * - Trims leading and trailing whitespace and ignores casing.\n * - Returns `false` if the environment variable is empty, unset, or contains only whitespace.\n * - Returns `false` for strings that cannot be mapped to a boolean.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace.\n */\nexport function getBooleanFromEnv(key: string): boolean {\n const raw = process.env[key]?.trim().toLowerCase();\n if (raw == null || raw === '') {\n // NOTE: falling back to `false` instead of `undefined` as required by the specification.\n // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary\n // normalizations in the consuming code.\n return false;\n }\n if (raw === 'true') {\n return true;\n } else if (raw === 'false') {\n return false;\n } else {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`\n );\n return false;\n }\n}\n\n/**\n * Retrieves a list of strings from an environment variable.\n * - Uses ',' as the delimiter.\n * - Trims leading and trailing whitespace from each entry.\n * - Excludes empty entries.\n * - Returns `undefined` if the environment variable is empty or contains only whitespace.\n * - Returns an empty array if all entries are empty or whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string[] | undefined} - The list of strings or `undefined`.\n */\nexport function getStringListFromEnv(key: string): string[] | undefined {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.6.1';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport interface ExportResult {\n code: ExportResultCode;\n error?: Error;\n}\n\nexport enum ExportResultCode {\n SUCCESS,\n FAILED,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport class Deferred {\n private _promise: Promise;\n private _resolve!: (val: T) => void;\n private _reject!: (error: unknown) => void;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get promise() {\n return this._promise;\n }\n\n resolve(val: T) {\n this._resolve(val);\n }\n\n reject(err: unknown) {\n this._reject(err);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AttributeValue, Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\n\nexport function sanitizeAttributes(attributes: unknown): Attributes {\n const out: Attributes = {};\n\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = (attributes as Record)[key];\n if (!isAttributeValue(val)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n } else {\n out[key] = val;\n }\n }\n\n return out;\n}\n\nexport function isAttributeKey(key: unknown): key is string {\n return typeof key === 'string' && key !== '';\n}\n\nexport function isAttributeValue(val: unknown): val is AttributeValue {\n if (val == null) {\n return true;\n }\n\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n\n return isValidPrimitiveAttributeValueType(typeof val);\n}\n\nfunction isHomogeneousAttributeValueArray(arr: unknown[]): boolean {\n let type: string | undefined;\n\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null) continue;\n const elementType = typeof element;\n\n if (elementType === type) {\n continue;\n }\n\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction isValidPrimitiveAttributeValueType(valType: string): boolean {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n\n return false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance: { now(): number; readonly timeOrigin: number } =\n performance;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isPlainObject } from './lodash.merge';\n\nconst MAX_LEVEL = 20;\n\ninterface ObjectInto {\n obj: any;\n key: string;\n}\n\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nexport function merge(...args: any[]): any {\n let result: any = args.shift();\n const objects: WeakMap | undefined = new WeakMap<\n any,\n ObjectInto[]\n >();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n\n return result;\n}\n\nfunction takeValue(value: any): any {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\n\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(\n one: any,\n two: any,\n level = 0,\n objects: WeakMap\n): any {\n let result: any;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\n } else if (isArray(one)) {\n result = one.slice();\n if (isArray(two)) {\n for (let i = 0, j = two.length; i < j; i++) {\n result.push(takeValue(two[i]));\n }\n } else if (isObject(two)) {\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n result[key] = takeValue(two[key]);\n }\n }\n } else if (isObject(one)) {\n if (isObject(two)) {\n if (!shouldMerge(one, two)) {\n return two;\n }\n result = Object.assign({}, one);\n const keys = Object.keys(two);\n\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n } else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n } else {\n const obj1 = result[key];\n const obj2 = twoValue;\n\n if (\n wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)\n ) {\n delete result[key];\n } else {\n if (isObject(obj1) && isObject(obj2)) {\n const arr1 = objects.get(obj1) || [];\n const arr2 = objects.get(obj2) || [];\n arr1.push({ obj: one, key });\n arr2.push({ obj: two, key });\n objects.set(obj1, arr1);\n objects.set(obj2, arr2);\n }\n\n result[key] = mergeTwoObjects(\n result[key],\n twoValue,\n level,\n objects\n );\n }\n }\n }\n } else {\n result = two;\n }\n }\n\n return result;\n}\n\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(\n obj: any,\n key: string,\n objects: WeakMap\n): boolean {\n const arr = objects.get(obj[key]) || [];\n for (let i = 0, j = arr.length; i < j; i++) {\n const info = arr[i];\n if (info.key === key && info.obj === obj) {\n return true;\n }\n }\n return false;\n}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value);\n}\n\nfunction isFunction(value: any): boolean {\n return typeof value === 'function';\n}\n\nfunction isObject(value: any): boolean {\n return (\n !isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object'\n );\n}\n\nfunction isPrimitive(value: any): boolean {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined' ||\n value instanceof Date ||\n value instanceof RegExp ||\n value === null\n );\n}\n\nfunction shouldMerge(one: any, two: any): boolean {\n if (!isPlainObject(one) || !isPlainObject(two)) {\n return false;\n }\n\n return true;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator';\nexport { AnchoredClock } from './common/anchored-clock';\nexport type { Clock } from './common/anchored-clock';\nexport { isAttributeValue, sanitizeAttributes } from './common/attributes';\nexport {\n globalErrorHandler,\n setGlobalErrorHandler,\n} from './common/global-error-handler';\nexport { loggingErrorHandler } from './common/logging-error-handler';\nexport {\n addHrTimes,\n getTimeOrigin,\n hrTime,\n hrTimeDuration,\n hrTimeToMicroseconds,\n hrTimeToMilliseconds,\n hrTimeToNanoseconds,\n hrTimeToTimeStamp,\n isTimeInput,\n isTimeInputHrTime,\n millisToHrTime,\n timeInputToHrTime,\n} from './common/time';\nexport { unrefTimer } from './common/timer-util';\nexport type { ErrorHandler, InstrumentationScope } from './common/types';\nexport { ExportResultCode } from './ExportResult';\nexport type { ExportResult } from './ExportResult';\nexport { parseKeyPairsIntoRecord } from './baggage/utils';\nexport {\n SDK_INFO,\n _globalThis,\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n otperformance,\n} from './platform';\nexport { CompositePropagator } from './propagation/composite';\nexport type { CompositePropagatorConfig } from './propagation/composite';\nexport {\n TRACE_PARENT_HEADER,\n TRACE_STATE_HEADER,\n W3CTraceContextPropagator,\n parseTraceParent,\n} from './trace/W3CTraceContextPropagator';\nexport {\n RPCType,\n deleteRPCMetadata,\n getRPCMetadata,\n setRPCMetadata,\n} from './trace/rpc-metadata';\nexport type { RPCMetadata } from './trace/rpc-metadata';\nexport {\n isTracingSuppressed,\n suppressTracing,\n unsuppressTracing,\n} from './trace/suppress-tracing';\nexport { TraceState } from './trace/TraceState';\nexport { merge } from './utils/merge';\nexport { TimeoutError, callWithTimeout } from './utils/timeout';\nexport { isUrlIgnored, urlMatches } from './utils/url';\nexport { BindOnceFuture } from './utils/callback';\nexport { diagLogLevelFromString } from './utils/configuration';\nimport { _export } from './internal/exporter';\nexport const internal = {\n _export,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as api from '@opentelemetry/api';\nimport { otperformance as performance } from '../platform';\n\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis: number): api.HrTime {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\n\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nexport function getTimeOrigin(): number {\n return performance.timeOrigin;\n}\n\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow?: number): api.HrTime {\n const timeOrigin = millisToHrTime(performance.timeOrigin);\n const now = millisToHrTime(\n typeof performanceNow === 'number' ? performanceNow : performance.now()\n );\n\n return addHrTimes(timeOrigin, now);\n}\n\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time: api.TimeInput): api.HrTime {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time as api.HrTime;\n } else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < performance.timeOrigin) {\n return hrTime(time);\n } else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n } else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n } else {\n throw TypeError('Invalid input type');\n }\n}\n\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(\n startTime: api.HrTime,\n endTime: api.HrTime\n): api.HrTime {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n\n return [seconds, nanos];\n}\n\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time: api.HrTime): string {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\n\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time: api.HrTime): number {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time: api.HrTime): number {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time: api.HrTime): number {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value: unknown): value is api.HrTime {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(\n value: unknown\n): value is api.HrTime | number | Date {\n return (\n isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date\n );\n}\n\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime {\n const out = [time1[0] + time2[0], time1[1] + time2[1]] as api.HrTime;\n\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n\n return out;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { context } from '@opentelemetry/api';\nimport type { ExportResult } from '../ExportResult';\nimport { suppressTracing } from '../trace/suppress-tracing';\n\nexport interface Exporter {\n export(arg: T, resultCallback: (result: ExportResult) => void): void;\n}\n\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nexport function _export(\n exporter: Exporter,\n arg: T\n): Promise {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n exporter.export(arg, resolve);\n });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { createContextKey } from '@opentelemetry/api';\n\nconst SUPPRESS_TRACING_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key SUPPRESS_TRACING'\n);\n\nexport function suppressTracing(context: Context): Context {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\n\nexport function unsuppressTracing(context: Context): Context {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\n\nexport function isTracingSuppressed(context: Context): boolean {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Exception } from '@opentelemetry/api';\nimport { loggingErrorHandler } from './logging-error-handler';\nimport type { ErrorHandler } from './types';\n\n/** The global error handler delegate */\nlet delegateHandler = loggingErrorHandler();\n\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nexport function setGlobalErrorHandler(handler: ErrorHandler): void {\n delegateHandler = handler;\n}\n\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nexport function globalErrorHandler(ex: Exception): void {\n try {\n delegateHandler(ex);\n } catch {} // eslint-disable-line no-empty\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Deferred } from './promise';\n\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nexport class BindOnceFuture<\n R,\n This = unknown,\n T extends (this: This, ...args: unknown[]) => R = () => R,\n> {\n private _isCalled = false;\n private _deferred = new Deferred();\n private _callback: T;\n private _that: This;\n\n constructor(callback: T, that: This) {\n this._callback = callback;\n this._that = that;\n }\n\n get isCalled() {\n return this._isCalled;\n }\n\n get promise() {\n return this._deferred.promise;\n }\n\n call(...args: Parameters): Promise {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(\n val => this._deferred.resolve(val),\n err => this._deferred.reject(err)\n );\n } catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\n\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nexport function isPlainObject(value: any) {\n if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n return false;\n }\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (\n typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString\n );\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value: any) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value: any) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value)\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value: any) {\n const isOwn = hasOwnProperty.call(value, symToStringTag as any),\n tag = value[symToStringTag as any];\n let unmasked = false;\n\n try {\n value[symToStringTag as any] = undefined;\n unmasked = true;\n } catch {\n // silence\n }\n\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag as any] = tag;\n } else {\n delete value[symToStringTag as any];\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value: any) {\n return nativeObjectToString.call(value);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Exception } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { ErrorHandler } from './types';\n\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nexport function loggingErrorHandler(): ErrorHandler {\n return (ex: Exception) => {\n diag.error(stringifyException(ex));\n };\n}\n\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex: Exception | string): string {\n if (typeof ex === 'string') {\n return ex;\n } else {\n return JSON.stringify(flattenException(ex));\n }\n}\n\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex: Exception): Record {\n const result = {} as Record;\n let current = ex;\n\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName]) return;\n const value = current[propertyName as keyof typeof current];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n\n return result;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Baggage, BaggageEntryMetadata } from '@opentelemetry/api';\nimport { baggageEntryMetadataFromString } from '@opentelemetry/api';\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_PROPERTIES_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n} from './constants';\n\ntype ParsedBaggageKeyValue = {\n key: string;\n value: string;\n metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue: string, current: string) => {\n const value = `${hValue}${\n hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''\n }${current}`;\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n\n return entry;\n });\n}\n\nexport function parsePairKeyValue(\n entry: string\n): ParsedBaggageKeyValue | undefined {\n if (!entry) return;\n const metadataSeparatorIndex = entry.indexOf(BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart =\n metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0) return;\n\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n\n if (!rawKey || !rawValue) return;\n let key: string;\n let value: string;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n } catch {\n return;\n }\n\n let metadata;\n if (\n metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1\n ) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = baggageEntryMetadataFromString(metadataString);\n }\n\n return { key, value, metadata };\n}\n\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nexport function parseKeyPairsIntoRecord(\n value?: string\n): Record {\n const result: Record = {};\n\n if (typeof value === 'string' && value.length > 0) {\n value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n\n return result;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n BaggageEntry,\n Context,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { propagation } from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = propagation.getBaggage(context);\n if (!baggage || isTracingSuppressed(context)) return;\n const keyPairs = getKeyPairs(baggage)\n .filter((pair: string) => {\n return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = serializeKeyPairs(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, BAGGAGE_HEADER, headerValue);\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString) return context;\n const baggage: Record = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair) {\n const baggageEntry: BaggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return propagation.setBaggage(context, propagation.createBaggage(baggage));\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n SpanContext,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { isSpanContextValid, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed } from './suppress-tracing';\nimport { TraceState } from './TraceState';\n\nexport const TRACE_PARENT_HEADER = 'traceparent';\nexport const TRACE_STATE_HEADER = 'tracestate';\n\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(\n `^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`\n);\n\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n * It should be dynamically generated server side to have the server's request trace Id,\n * a parent span Id that was set on the server's request span,\n * and the trace flags to indicate the server's sampling decision\n * (01 = sampled, 00 = not sampled).\n * for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n * For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nexport function parseTraceParent(traceParent: string): SpanContext | null {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match) return null;\n\n // According to the specification the implementation should be compatible\n // with future versions. If there are more parts, we only reject it if it's using version 00\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n if (match[1] === '00' && match[5]) return null;\n\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\n\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nexport class W3CTraceContextPropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const spanContext = trace.getSpanContext(context);\n if (\n !spanContext ||\n isTracingSuppressed(context) ||\n !isSpanContextValid(spanContext)\n )\n return;\n\n const traceParent = `${VERSION}-${spanContext.traceId}-${\n spanContext.spanId\n }-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`;\n\n setter.set(carrier, TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(\n carrier,\n TRACE_STATE_HEADER,\n spanContext.traceState.serialize()\n );\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);\n if (!traceParentHeader) return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string') return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext) return context;\n\n spanContext.isRemote = true;\n\n const traceStateHeader = getter.get(carrier, TRACE_STATE_HEADER);\n if (traceStateHeader) {\n // If more than one `tracestate` header is found, we merge them into a\n // single header.\n const state = Array.isArray(traceStateHeader)\n ? traceStateHeader.join(',')\n : traceStateHeader;\n spanContext.traceState = new TraceState(\n typeof state === 'string' ? state : undefined\n );\n }\n return trace.setSpanContext(context, spanContext);\n }\n\n fields(): string[] {\n return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context, Span } from '@opentelemetry/api';\nimport { createContextKey } from '@opentelemetry/api';\n\nconst RPC_METADATA_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key RPC_METADATA'\n);\n\nexport enum RPCType {\n HTTP = 'http',\n}\n\ntype HTTPMetadata = {\n type: RPCType.HTTP;\n route?: string;\n span: Span;\n};\n\n/**\n * Allows for future rpc metadata to be used with this mechanism\n */\nexport type RPCMetadata = HTTPMetadata;\n\nexport function setRPCMetadata(context: Context, meta: RPCMetadata): Context {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\n\nexport function deleteRPCMetadata(context: Context): Context {\n return context.deleteValue(RPC_METADATA_KEY);\n}\n\nexport function getRPCMetadata(context: Context): RPCMetadata | undefined {\n return context.getValue(RPC_METADATA_KEY) as RPCMetadata | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\n\n/** Configuration object for composite propagator */\nexport interface CompositePropagatorConfig {\n /**\n * List of propagators to run. Propagators run in the\n * list order. If a propagator later in the list writes the same context\n * key as a propagator earlier in the list, the later on will \"win\".\n */\n propagators?: TextMapPropagator[];\n}\n\n/** Combines multiple propagators into a single propagator. */\nexport class CompositePropagator implements TextMapPropagator {\n private readonly _propagators: TextMapPropagator[];\n private readonly _fields: string[];\n\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config: CompositePropagatorConfig = {}) {\n this._propagators = config.propagators ?? [];\n\n this._fields = Array.from(\n new Set(\n this._propagators\n // older propagators may not have fields function, null check to be sure\n .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n .reduce((x, y) => x.concat(y), [])\n )\n );\n }\n\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same carrier key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to inject\n * @param carrier Carrier into which context will be injected\n */\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n } catch (err) {\n diag.warn(\n `Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n }\n }\n\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same context key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to add values to\n * @param carrier Carrier from which to extract context\n */\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n } catch (err) {\n diag.warn(\n `Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n return ctx;\n }, context);\n }\n\n fields(): string[] {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as api from '@opentelemetry/api';\nimport { validateKey, validateValue } from '../internal/validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nexport class TraceState implements api.TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceState {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n\n unset(key: string): TraceState {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg: Map, part: string) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(\n Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS)\n );\n }\n }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceState {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { diag, DiagLogLevel } from '@opentelemetry/api';\n\nconst logLevelMap: { [key: string]: DiagLogLevel } = {\n ALL: DiagLogLevel.ALL,\n VERBOSE: DiagLogLevel.VERBOSE,\n DEBUG: DiagLogLevel.DEBUG,\n INFO: DiagLogLevel.INFO,\n WARN: DiagLogLevel.WARN,\n ERROR: DiagLogLevel.ERROR,\n NONE: DiagLogLevel.NONE,\n};\n\n/**\n * Convert a string to a {@link DiagLogLevel}, defaults to {@link DiagLogLevel} if the log level does not exist or undefined if the input is undefined.\n * @param value\n */\nexport function diagLogLevelFromString(\n value: string | undefined\n): DiagLogLevel | undefined {\n if (value == null) {\n // don't fall back to default - no value set has different semantics for ús than an incorrect value (do not set vs. fall back to default)\n return undefined;\n }\n\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n\n if (resolvedLogLevel == null) {\n diag.warn(\n `Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`\n );\n return DiagLogLevel.INFO;\n }\n\n return resolvedLogLevel;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nexport function urlMatches(url: string, urlToMatch: string | RegExp): boolean {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n } else {\n return !!url.match(urlToMatch);\n }\n}\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nexport function isUrlIgnored(\n url: string,\n ignoredUrls?: Array\n): boolean {\n if (!ignoredUrls) {\n return false;\n }\n\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\n\n// Name of the http header used to propagate the baggage\nexport const BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @deprecated Use globalThis directly instead.\n */\nexport const _globalThis = globalThis;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n constructor(message?: string) {\n super(message);\n\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *
// -> 
/\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
/

/../ ->

/\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (\n          p &&\n          p !== '.' &&\n          p !== '..' &&\n          p !== '**' &&\n          !(this.isWindows && /^[a-z]:$/i.test(p))\n        ) {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
 is 1 or more portions\n  //  is 1 or more portions\n  // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n  // 
/

/../ ->

/\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
// -> 
/\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
/

/../ ->

/\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
/*/,
/

/} ->

/*/\n  // {
/,
/} -> 
/\n  // {
/**/,
/} -> 
/**/\n  //\n  // {
/**/,
/**/

/} ->

/**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] =\n      partial ?\n        [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1),\n          [],\n        ]\n      : [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1, lastgs),\n          pattern.slice(lastgs + 1),\n        ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (const pattern of set) {\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n","'use strict'\nconst dc = require('node:diagnostics_channel')\nconst { context, trace, SpanStatusCode, propagation, diag } = require('@opentelemetry/api')\nconst { getRPCMetadata, RPCType } = require('@opentelemetry/core')\nconst {\n  ATTR_HTTP_ROUTE,\n  ATTR_HTTP_RESPONSE_STATUS_CODE,\n  ATTR_HTTP_REQUEST_METHOD,\n  ATTR_URL_PATH\n} = require('@opentelemetry/semantic-conventions')\nconst { InstrumentationBase } = require('@opentelemetry/instrumentation')\n\nconst {\n  version: PACKAGE_VERSION,\n  name: PACKAGE_NAME\n} = require('./package.json')\n\n// Constants\nconst SUPPORTED_VERSIONS = '>=4.0.0 <6'\nconst FASTIFY_HOOKS = [\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preHandler',\n  'preSerialization',\n  'onSend',\n  'onResponse',\n  'onError'\n]\nconst ATTRIBUTE_NAMES = {\n  HOOK_NAME: 'hook.name',\n  FASTIFY_TYPE: 'fastify.type',\n  HOOK_CALLBACK_NAME: 'hook.callback.name',\n  ROOT: 'fastify.root'\n}\nconst HOOK_TYPES = {\n  ROUTE: 'route-hook',\n  INSTANCE: 'hook',\n  HANDLER: 'request-handler'\n}\nconst ANONYMOUS_FUNCTION_NAME = 'anonymous'\n\n// Symbols\nconst kInstrumentation = Symbol('fastify otel instance')\nconst kRequestSpan = Symbol('fastify otel request spans')\nconst kRequestContext = Symbol('fastify otel request context')\nconst kAddHookOriginal = Symbol('fastify otel addhook original')\nconst kSetNotFoundOriginal = Symbol('fastify otel setnotfound original')\nconst kIgnorePaths = Symbol('fastify otel ignore path')\nconst kRecordExceptions = Symbol('fastify otel record exceptions')\n\nclass FastifyOtelInstrumentation extends InstrumentationBase {\n  logger = null\n  _requestHook = null\n  _lifecycleHook = null\n\n  constructor (config) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config)\n    this.logger = diag.createComponentLogger({ namespace: PACKAGE_NAME })\n    this[kIgnorePaths] = null\n    this[kRecordExceptions] = true\n\n    if (config?.recordExceptions != null) {\n      if (typeof config.recordExceptions !== 'boolean') {\n        throw new TypeError('recordExceptions must be a boolean')\n      }\n\n      this[kRecordExceptions] = config.recordExceptions\n    }\n    if (typeof config?.requestHook === 'function') {\n      this._requestHook = config.requestHook\n    }\n    if (typeof config?.lifecycleHook === 'function') {\n      this._lifecycleHook = config.lifecycleHook\n    }\n\n    if (config?.ignorePaths != null || process.env.OTEL_FASTIFY_IGNORE_PATHS != null) {\n      const ignorePaths = config?.ignorePaths ?? process.env.OTEL_FASTIFY_IGNORE_PATHS\n\n      if ((typeof ignorePaths !== 'string' || ignorePaths.length === 0) && typeof ignorePaths !== 'function') {\n        throw new TypeError(\n          'ignorePaths must be a string or a function'\n        )\n      }\n\n      let globMatcher = null\n\n      this[kIgnorePaths] = (routeOptions) => {\n        if (typeof ignorePaths === 'function') {\n          return ignorePaths(routeOptions)\n        } else {\n          // Using minimatch to match the path until path.matchesGlob is out of experimental\n          // path.matchesGlob uses minimatch internally\n          if (globMatcher == null) {\n            globMatcher = require('minimatch').minimatch\n          }\n\n          return globMatcher(routeOptions.url, ignorePaths)\n        }\n      }\n    }\n  }\n\n  enable () {\n    if (this._handleInitialization === undefined && this.getConfig().registerOnInitialization) {\n      this._handleInitialization = (message) => {\n        // Cannot use `fastify.register(plugin)` because it is lazily executed and\n        // thus requires user code to await fastify instance first.\n        this.plugin()(message.fastify, undefined, () => {})\n\n        // Add an empty plugin to keep `app.hasPlugin('@fastify/otel')` invariant\n        const emptyPlugin = (_, __, done) => {\n          done()\n        }\n        emptyPlugin[Symbol.for('skip-override')] = true\n        emptyPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n        message.fastify.register(emptyPlugin)\n      }\n      dc.subscribe('fastify.initialization', this._handleInitialization)\n    }\n    return super.enable()\n  }\n\n  disable () {\n    if (this._handleInitialization) {\n      dc.unsubscribe('fastify.initialization', this._handleInitialization)\n      this._handleInitialization = undefined\n    }\n    return super.disable()\n  }\n\n  // We do not do patching in this instrumentation\n  init () {\n    return []\n  }\n\n  plugin () {\n    const instrumentation = this\n\n    FastifyInstrumentationPlugin[Symbol.for('skip-override')] = true\n    FastifyInstrumentationPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n    FastifyInstrumentationPlugin[Symbol.for('plugin-meta')] = {\n      fastify: SUPPORTED_VERSIONS,\n      name: '@fastify/otel',\n    }\n\n    return FastifyInstrumentationPlugin\n\n    function FastifyInstrumentationPlugin (instance, opts, done) {\n      instance.decorate(kInstrumentation, instrumentation)\n      // addHook and notfoundHandler are essentially inherited from the prototype\n      // what is important is to bound it to the right instance\n      instance.decorate(kAddHookOriginal, instance.addHook)\n      instance.decorate(kSetNotFoundOriginal, instance.setNotFoundHandler)\n      instance.decorateRequest('opentelemetry', function openetelemetry () {\n        const ctx = this[kRequestContext]\n        const span = this[kRequestSpan]\n\n        return {\n          enabled: this.routeOptions.config?.otel !== false,\n          span,\n          tracer: instrumentation.tracer,\n          context: ctx,\n          inject: (carrier, setter) => {\n            return propagation.inject(ctx, carrier, setter)\n          },\n          extract: (carrier, getter) => {\n            return propagation.extract(ctx, carrier, getter)\n          }\n        }\n      })\n      instance.decorateRequest(kRequestSpan, null)\n      instance.decorateRequest(kRequestContext, null)\n\n      instance.addHook('onRoute', function otelWireRoute (routeOptions) {\n        if (instrumentation[kIgnorePaths]?.(routeOptions) === true) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it matches the ignore path`\n          )\n          return\n        }\n\n        if (routeOptions.config?.otel === false) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it is disabled`\n          )\n\n          return\n        }\n\n        for (const hook of FASTIFY_HOOKS) {\n          if (routeOptions[hook] != null) {\n            const handlerLike = routeOptions[hook]\n\n            if (typeof handlerLike === 'function') {\n              routeOptions[hook] = handlerWrapper(handlerLike, hook, {\n                [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                [ATTR_HTTP_ROUTE]: routeOptions.url,\n                [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                  handlerLike.name?.length > 0\n                    ? handlerLike.name\n                    : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n              })\n            } else if (Array.isArray(handlerLike)) {\n              const wrappedHandlers = []\n\n              for (const handler of handlerLike) {\n                wrappedHandlers.push(\n                  handlerWrapper(handler, hook, {\n                    [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                    [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                    [ATTR_HTTP_ROUTE]: routeOptions.url,\n                    [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                      handler.name?.length > 0\n                        ? handler.name\n                        : ANONYMOUS_FUNCTION_NAME\n                  })\n                )\n              }\n\n              routeOptions[hook] = wrappedHandlers\n            }\n          }\n        }\n\n        // We always want to add the onSend hook to the route to be executed last\n        if (routeOptions.onSend != null) {\n          routeOptions.onSend = Array.isArray(routeOptions.onSend)\n            ? [...routeOptions.onSend, finalizeResponseSpanHook]\n            : [routeOptions.onSend, finalizeResponseSpanHook]\n        } else {\n          routeOptions.onSend = finalizeResponseSpanHook\n        }\n\n        // We always want to add the onError hook to the route to be executed last\n        if (routeOptions.onError != null) {\n          routeOptions.onError = Array.isArray(routeOptions.onError)\n            ? [...routeOptions.onError, recordErrorInSpanHook]\n            : [routeOptions.onError, recordErrorInSpanHook]\n        } else {\n          routeOptions.onError = recordErrorInSpanHook\n        }\n\n        routeOptions.handler = handlerWrapper(routeOptions.handler, 'handler', {\n          [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route-handler`,\n          [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.HANDLER,\n          [ATTR_HTTP_ROUTE]: routeOptions.url,\n          [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n            routeOptions.handler.name.length > 0\n              ? routeOptions.handler.name\n              : ANONYMOUS_FUNCTION_NAME\n        })\n      })\n\n      instance.addHook('onRequest', function startRequestSpanHook (request, _reply, hookDone) {\n        if (\n          this[kInstrumentation].isEnabled() === false ||\n          request.routeOptions.config?.otel === false\n        ) {\n          return hookDone()\n        }\n\n        if (this[kInstrumentation][kIgnorePaths]?.({\n          url: request.url,\n          method: request.method,\n        }) === true) {\n          this[kInstrumentation].logger.debug(\n            `Ignoring request ${request.method} ${request.url} because it matches the ignore path`\n          )\n          return hookDone()\n        }\n\n        let ctx = context.active()\n\n        if (trace.getSpan(ctx) == null) {\n          ctx = propagation.extract(ctx, request.headers)\n        }\n\n        const rpcMetadata = getRPCMetadata(ctx)\n\n        if (\n          request.routeOptions.url != null &&\n          rpcMetadata?.type === RPCType.HTTP\n        ) {\n          rpcMetadata.route = request.routeOptions.url\n        }\n\n        const attributes = {\n          [ATTRIBUTE_NAMES.ROOT]: '@fastify/otel',\n          [ATTR_HTTP_REQUEST_METHOD]: request.method,\n          [ATTR_URL_PATH]: request.url\n        }\n\n        if (request.routeOptions.url != null) {\n          attributes[ATTR_HTTP_ROUTE] = request.routeOptions.url\n        }\n\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = this[kInstrumentation].tracer.startSpan('request', {\n          attributes\n        }, ctx)\n\n        try {\n          this[kInstrumentation]._requestHook?.(span, request)\n        } catch (err) {\n          this[kInstrumentation].logger.error({ err }, 'requestHook threw')\n        }\n\n        request[kRequestContext] = trace.setSpan(ctx, span)\n        request[kRequestSpan] = span\n\n        context.with(request[kRequestContext], () => {\n          hookDone()\n        })\n      })\n\n      // onResponse is the last hook to be executed, only added for 404 handlers\n      instance.addHook('onResponse', function finalizeNotFoundSpanHook (request, reply, hookDone) {\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone()\n      })\n\n      instance.addHook = addHookPatched\n      instance.setNotFoundHandler = setNotFoundHandlerPatched\n\n      done()\n\n      function finalizeResponseSpanHook (request, reply, payload, hookDone) {\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          if (reply.statusCode >= 500) {\n            span.setStatus({ code: SpanStatusCode.ERROR })\n          }\n\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone(null, payload)\n      }\n\n      function recordErrorInSpanHook (request, reply, error, hookDone) {\n        /** @type {Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: error.message\n          })\n          if (instrumentation[kRecordExceptions] !== false) {\n            span.recordException(error)\n          }\n        }\n\n        hookDone()\n      }\n\n      function addHookPatched (name, hook) {\n        const addHookOriginal = this[kAddHookOriginal]\n\n        if (FASTIFY_HOOKS.includes(name)) {\n          return addHookOriginal.call(\n            this,\n            name,\n            handlerWrapper(hook, name, {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - ${name}`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hook.name?.length > 0\n                  ? hook.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          )\n        } else {\n          return addHookOriginal.call(this, name, hook)\n        }\n      }\n\n      function setNotFoundHandlerPatched (hooks, handler) {\n        const setNotFoundHandlerOriginal = this[kSetNotFoundOriginal]\n        if (typeof hooks === 'function') {\n          handler = handlerWrapper(hooks, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              hooks.name?.length > 0\n                ? hooks.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, handler)\n        } else {\n          if (hooks.preValidation != null) {\n            hooks.preValidation = handlerWrapper(hooks.preValidation, 'notFoundHandler - preValidation', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preValidation`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preValidation.name?.length > 0\n                  ? hooks.preValidation.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          if (hooks.preHandler != null) {\n            hooks.preHandler = handlerWrapper(hooks.preHandler, 'notFoundHandler - preHandler', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preHandler`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preHandler.name?.length > 0\n                  ? hooks.preHandler.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          handler = handlerWrapper(handler, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              handler.name?.length > 0\n                ? handler.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, hooks, handler)\n        }\n      }\n\n      // regular handlers are (request, reply), @fastify/websocket handlers are (socket, request)\n      function getRequestFromArgs (args) {\n        for (const arg of args) {\n          if (arg?.routeOptions && arg.url && arg.method) {\n            return arg\n          }\n        }\n        return null\n      }\n\n      function handlerWrapper (handler, hookName, spanAttributes = {}) {\n        return function handlerWrapped (...args) {\n          /** @type {FastifyOtelInstrumentation} */\n          const instrumentation = this[kInstrumentation]\n\n          const request = getRequestFromArgs(args)\n          if (request === null) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation because ${hookName} was called without a Fastify request argument`\n            )\n            return handler.call(this, ...args)\n          }\n\n          if (instrumentation.isEnabled() === false || request.routeOptions.config?.otel === false) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it is disabled`\n            )\n            return handler.call(this, ...args)\n          }\n\n          if (instrumentation[kIgnorePaths]?.({\n            url: request.url,\n            method: request.method,\n          }) === true) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it matches the ignore path`\n            )\n            return handler.call(this, ...args)\n          }\n\n          /* c8 ignore next */\n          const ctx = request[kRequestContext] ?? context.active()\n          const handlerName = handler.name?.length > 0\n            ? handler.name\n            : this.pluginName /* c8 ignore next */ ?? ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n\n          const span = instrumentation.tracer.startSpan(\n            `${hookName} - ${handlerName}`,\n            {\n              attributes: spanAttributes\n            },\n            ctx\n          )\n\n          if (instrumentation._lifecycleHook != null) {\n            try {\n              instrumentation._lifecycleHook(span, {\n                hookName,\n                request,\n                handler: handlerName\n              })\n            } catch (err) {\n              instrumentation.logger.error({ err }, 'Execution of lifecycleHook failed')\n            }\n          }\n\n          return context.with(\n            trace.setSpan(ctx, span),\n            function () {\n              try {\n                const res = handler.call(this, ...args)\n\n                if (typeof res?.then === 'function') {\n                  return res.then(\n                    result => {\n                      span.end()\n                      return result\n                    },\n                    error => {\n                      span.setStatus({\n                        code: SpanStatusCode.ERROR,\n                        message: error.message\n                      })\n                      if (instrumentation[kRecordExceptions] !== false) {\n                        span.recordException(error)\n                      }\n                      span.end()\n                      return Promise.reject(error)\n                    }\n                  )\n                }\n\n                span.end()\n                return res\n              } catch (error) {\n                span.setStatus({\n                  code: SpanStatusCode.ERROR,\n                  message: error.message\n                })\n                if (instrumentation[kRecordExceptions] !== false) {\n                  span.recordException(error)\n                }\n                span.end()\n                throw error\n              }\n            },\n            this\n          )\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = FastifyOtelInstrumentation\nmodule.exports.FastifyOtelInstrumentation = FastifyOtelInstrumentation\n","// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts\n//\n/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AttributeNames {\n  FASTIFY_NAME = 'fastify.name',\n  FASTIFY_TYPE = 'fastify.type',\n  HOOK_NAME = 'hook.name',\n  PLUGIN_NAME = 'plugin.name',\n}\n\nexport enum FastifyTypes {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request_handler',\n}\n\nexport enum FastifyNames {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request handler',\n}\n","// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts\n/*\n * Copyright The OpenTelemetry Authors\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\nexport const spanRequestSymbol = Symbol('opentelemetry.instrumentation.fastify.request_active_span');\n\n// The instrumentation creates a span for invocations of lifecycle hook handlers\n// that take `(request, reply, ...[, done])` arguments. Currently this is all\n// lifecycle hooks except `onRequestAbort`.\n// https://fastify.dev/docs/latest/Reference/Hooks\nexport const hooksNamesToWrap = new Set([\n  'onTimeout',\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preSerialization',\n  'preHandler',\n  'onSend',\n  'onResponse',\n  'onError',\n]);\n","// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright The OpenTelemetry Authors\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\nimport { type Attributes, type Span, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { spanRequestSymbol } from './constants';\nimport type { PluginFastifyReply } from './internal-types';\n\n/**\n * Starts Span\n * @param reply - reply function\n * @param tracer - tracer\n * @param spanName - span name\n * @param spanAttributes - span attributes\n */\nexport function startSpan(\n  reply: PluginFastifyReply,\n  tracer: Tracer,\n  spanName: string,\n  spanAttributes: Attributes = {},\n) {\n  const span = tracer.startSpan(spanName, { attributes: spanAttributes });\n\n  const spans: Span[] = reply[spanRequestSymbol] || [];\n  spans.push(span);\n\n  Object.defineProperty(reply, spanRequestSymbol, {\n    enumerable: false,\n    configurable: true,\n    value: spans,\n  });\n\n  return span;\n}\n\n/**\n * Ends span\n * @param reply - reply function\n * @param err - error\n */\nexport function endSpan(reply: PluginFastifyReply, err?: any) {\n  const spans = reply[spanRequestSymbol] || [];\n  // there is no active span, or it has already ended\n  if (!spans.length) {\n    return;\n  }\n  // biome-ignore lint/complexity/noForEach: \n  spans.forEach((span: Span) => {\n    if (err) {\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n      span.recordException(err);\n    }\n    span.end();\n  });\n  delete reply[spanRequestSymbol];\n}\n\n// @TODO after approve add this to instrumentation package and replace usage\n// when it will be released\n\n/**\n * This function handles the missing case from instrumentation package when\n * execute can either return a promise or void. And using async is not an\n * option as it is producing unwanted side effects.\n * @param execute - function to be executed\n * @param onFinish - function called when function executed\n * @param preventThrowingError - prevent to throw error when execute\n * function fails\n */\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => Promise,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): Promise;\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => T,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): T;\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => T | Promise,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): T | Promise | undefined {\n  let error: unknown;\n  let result: T | Promise | undefined = undefined;\n  try {\n    result = execute();\n\n    if (isPromise(result)) {\n      result.then(\n        res => onFinish(undefined, res),\n        err => onFinish(err),\n      );\n    }\n  } catch (e) {\n    error = e;\n  } finally {\n    if (!isPromise(result)) {\n      onFinish(error, result);\n      if (error && !preventThrowingError) {\n        // eslint-disable-next-line no-unsafe-finally\n        throw error;\n      }\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result;\n  }\n}\n\nfunction isPromise(val: T | Promise): val is Promise {\n  return (\n    (typeof val === 'object' && val && typeof Object.getOwnPropertyDescriptor(val, 'then')?.value === 'function') ||\n    false\n  );\n}\n","// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/*\n * Copyright The OpenTelemetry Authors\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\nimport { type Attributes, context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { Span } from '@sentry/core';\nimport {\n  getClient,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport type {\n  FastifyErrorCodes,\n  FastifyInstance,\n  FastifyReply,\n  FastifyRequest,\n  HandlerOriginal,\n  HookHandlerDoneFunction,\n} from '../types';\nimport { AttributeNames, FastifyNames, FastifyTypes } from './enums/AttributeNames';\nimport type { PluginFastifyReply } from './internal-types';\nimport type { FastifyInstrumentationConfig } from './types';\nimport { endSpan, safeExecuteInTheMiddleMaybePromise, startSpan } from './utils';\n/** @knipignore */\n\nconst PACKAGE_VERSION = '0.1.0';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-fastify-v3';\nconst ANONYMOUS_NAME = 'anonymous';\n\n// The instrumentation creates a span for invocations of lifecycle hook handlers\n// that take `(request, reply, ...[, done])` arguments. Currently this is all\n// lifecycle hooks except `onRequestAbort`.\n// https://fastify.dev/docs/latest/Reference/Hooks\nconst hooksNamesToWrap = new Set([\n  'onTimeout',\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preSerialization',\n  'preHandler',\n  'onSend',\n  'onResponse',\n  'onError',\n]);\n\n/**\n * Fastify instrumentation for OpenTelemetry\n */\nexport class FastifyInstrumentationV3 extends InstrumentationBase {\n  public constructor(config: FastifyInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  public init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition('fastify', ['>=3.0.0 <4'], moduleExports => {\n        return this._patchConstructor(moduleExports);\n      }),\n    ];\n  }\n\n  private _hookOnRequest() {\n    const instrumentation = this;\n\n    return function onRequest(request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction) {\n      if (!instrumentation.isEnabled()) {\n        return done();\n      }\n      instrumentation._wrap(reply, 'send', instrumentation._patchSend());\n\n      const anyRequest = request as any;\n\n      const rpcMetadata = getRPCMetadata(context.active());\n      const routeName = anyRequest.routeOptions\n        ? anyRequest.routeOptions.url // since fastify@4.10.0\n        : request.routerPath;\n      if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n        rpcMetadata.route = routeName;\n      }\n\n      const method = request.method || 'GET';\n\n      getIsolationScope().setTransactionName(`${method} ${routeName}`);\n      done();\n    };\n  }\n\n  private _wrapHandler(\n    pluginName: string,\n    hookName: string,\n    original: HandlerOriginal,\n    syncFunctionWithDone: boolean,\n  ): () => Promise {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify route.handler function');\n\n    return function (this: any, ...args: unknown[]): Promise {\n      if (!instrumentation.isEnabled()) {\n        return original.apply(this, args);\n      }\n\n      const name = original.name || pluginName || ANONYMOUS_NAME;\n      const spanName = `${FastifyNames.MIDDLEWARE} - ${name}`;\n\n      const reply = args[1] as PluginFastifyReply;\n\n      const span = startSpan(reply, instrumentation.tracer, spanName, {\n        [AttributeNames.FASTIFY_TYPE]: FastifyTypes.MIDDLEWARE,\n        [AttributeNames.PLUGIN_NAME]: pluginName,\n        [AttributeNames.HOOK_NAME]: hookName,\n      });\n\n      const origDone = syncFunctionWithDone && (args[args.length - 1] as HookHandlerDoneFunction);\n      if (origDone) {\n        args[args.length - 1] = function (...doneArgs: Parameters) {\n          endSpan(reply);\n          origDone.apply(this, doneArgs);\n        };\n      }\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        return safeExecuteInTheMiddleMaybePromise(\n          () => {\n            return original.apply(this, args);\n          },\n          err => {\n            if (err instanceof Error) {\n              span.setStatus({\n                code: SpanStatusCode.ERROR,\n                message: err.message,\n              });\n              span.recordException(err);\n            }\n            // async hooks should end the span as soon as the promise is resolved\n            if (!syncFunctionWithDone) {\n              endSpan(reply);\n            }\n          },\n        );\n      });\n    };\n  }\n\n  private _wrapAddHook(): (original: FastifyInstance['addHook']) => () => FastifyInstance {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify server.addHook function');\n\n    // biome-ignore lint/complexity/useArrowFunction: \n    return function (original: FastifyInstance['addHook']): () => FastifyInstance {\n      return function wrappedAddHook(this: any, ...args: any) {\n        const name = args[0] as string;\n        const handler = args[1] as HandlerOriginal;\n        const pluginName = this.pluginName;\n        if (!hooksNamesToWrap.has(name)) {\n          return original.apply(this, args);\n        }\n\n        const syncFunctionWithDone =\n          typeof args[args.length - 1] === 'function' && handler.constructor.name !== 'AsyncFunction';\n\n        return original.apply(this, [\n          name,\n          instrumentation._wrapHandler(pluginName, name, handler, syncFunctionWithDone),\n        ] as never);\n      };\n    };\n  }\n\n  private _patchConstructor(moduleExports: {\n    fastify: () => FastifyInstance;\n    errorCodes: FastifyErrorCodes | undefined;\n  }): () => FastifyInstance {\n    const instrumentation = this;\n\n    function fastify(this: FastifyInstance, ...args: any) {\n      const app: FastifyInstance = moduleExports.fastify.apply(this, args);\n      app.addHook('onRequest', instrumentation._hookOnRequest());\n      app.addHook('preHandler', instrumentation._hookPreHandler());\n\n      instrumentClient();\n\n      instrumentation._wrap(app, 'addHook', instrumentation._wrapAddHook());\n\n      return app;\n    }\n\n    if (moduleExports.errorCodes !== undefined) {\n      fastify.errorCodes = moduleExports.errorCodes;\n    }\n    fastify.fastify = fastify;\n    fastify.default = fastify;\n    return fastify;\n  }\n\n  private _patchSend() {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify reply.send function');\n\n    return function patchSend(original: () => FastifyReply): () => FastifyReply {\n      return function send(this: FastifyReply, ...args: any) {\n        const maybeError: any = args[0];\n\n        if (!instrumentation.isEnabled()) {\n          return original.apply(this, args);\n        }\n\n        return safeExecuteInTheMiddle(\n          () => {\n            return original.apply(this, args);\n          },\n          err => {\n            if (!err && maybeError instanceof Error) {\n              // eslint-disable-next-line no-param-reassign\n              err = maybeError;\n            }\n            endSpan(this, err);\n          },\n        );\n      };\n    };\n  }\n\n  private _hookPreHandler() {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify preHandler function');\n\n    return function preHandler(this: any, request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction) {\n      if (!instrumentation.isEnabled()) {\n        return done();\n      }\n      const anyRequest = request as any;\n\n      const handler = anyRequest.routeOptions?.handler || anyRequest.context?.handler;\n      const handlerName = handler?.name.startsWith('bound ') ? handler.name.substring(6) : handler?.name;\n      const spanName = `${FastifyNames.REQUEST_HANDLER} - ${handlerName || this.pluginName || ANONYMOUS_NAME}`;\n\n      const spanAttributes: Attributes = {\n        [AttributeNames.PLUGIN_NAME]: this.pluginName,\n        [AttributeNames.FASTIFY_TYPE]: FastifyTypes.REQUEST_HANDLER,\n        // eslint-disable-next-line deprecation/deprecation\n        [SEMATTRS_HTTP_ROUTE]: anyRequest.routeOptions\n          ? anyRequest.routeOptions.url // since fastify@4.10.0\n          : request.routerPath,\n      };\n      if (handlerName) {\n        spanAttributes[AttributeNames.FASTIFY_NAME] = handlerName;\n      }\n      const span = startSpan(reply, instrumentation.tracer, spanName, spanAttributes);\n\n      addFastifyV3SpanAttributes(span);\n\n      const { requestHook } = instrumentation.getConfig();\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () => requestHook(span, { request }),\n          e => {\n            if (e) {\n              instrumentation._diag.error('request hook failed', e);\n            }\n          },\n          true,\n        );\n      }\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        done();\n      });\n    };\n  }\n}\n\nfunction instrumentClient(): void {\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', (span: Span) => {\n      addFastifyV3SpanAttributes(span);\n    });\n  }\n}\n\nfunction addFastifyV3SpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: middleware, request_handler\n  const type = attributes['fastify.type'];\n\n  // If this is already set, or we have no fastify span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.fastify`,\n  });\n\n  // Also update the name, we don't need to \"middleware - \" prefix\n  const name = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n  if (typeof name === 'string') {\n    // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n    // This is a bit of a hack, and not always working for all spans\n    // But it's the best we can do without a proper API\n    const updatedName = name.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n    span.updateName(updatedName);\n  }\n}\n","import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport type { Instrumentation, InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getClient,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport type { FastifyInstance, FastifyMinimal, FastifyReply, FastifyRequest } from './types';\nimport { FastifyInstrumentationV3 } from './v3/instrumentation';\n\n/**\n * Options for the Fastify integration.\n *\n * `shouldHandleError` - Callback method deciding whether error should be captured and sent to Sentry\n * This is used on Fastify v5 where Sentry handles errors in the diagnostics channel.\n * Fastify v3 and v4 use `setupFastifyErrorHandler` instead.\n *\n * @example\n *\n * ```javascript\n * Sentry.init({\n *   integrations: [\n *     Sentry.fastifyIntegration({\n *       shouldHandleError(_error, _request, reply) {\n *         return reply.statusCode >= 500;\n *       },\n *     });\n *   },\n * });\n * ```\n *\n */\ninterface FastifyIntegrationOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   * This is used on Fastify v5 where Sentry handles errors in the diagnostics channel.\n   * Fastify v3 and v4 use `setupFastifyErrorHandler` instead.\n   *\n   * @param error Captured Fastify error\n   * @param request Fastify request (or any object containing at least method, routeOptions.url, and routerPath)\n   * @param reply Fastify reply (or any object containing at least statusCode)\n   */\n  shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n}\n\ninterface FastifyHandlerOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   *\n   * @param error Captured Fastify error\n   * @param request Fastify request (or any object containing at least method, routeOptions.url, and routerPath)\n   * @param reply Fastify reply (or any object containing at least statusCode)\n   *\n   * @example\n   *\n   *\n   * ```javascript\n   * setupFastifyErrorHandler(app, {\n   *   shouldHandleError(_error, _request, reply) {\n   *     return reply.statusCode >= 400;\n   *   },\n   * });\n   * ```\n   *\n   *\n   * If using TypeScript, you can cast the request and reply to get full type safety.\n   *\n   * ```typescript\n   * import type { FastifyRequest, FastifyReply } from 'fastify';\n   *\n   * setupFastifyErrorHandler(app, {\n   *   shouldHandleError(error, minimalRequest, minimalReply) {\n   *     const request = minimalRequest as FastifyRequest;\n   *     const reply = minimalReply as FastifyReply;\n   *     return reply.statusCode >= 500;\n   *   },\n   * });\n   * ```\n   */\n  shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n}\n\nconst INTEGRATION_NAME = 'Fastify';\n\nexport const instrumentFastifyV3 = generateInstrumentOnce(\n  `${INTEGRATION_NAME}.v3`,\n  () => new FastifyInstrumentationV3(),\n);\n\nfunction getFastifyIntegration(): ReturnType | undefined {\n  const client = getClient();\n  if (!client) {\n    return undefined;\n  } else {\n    return client.getIntegrationByName(INTEGRATION_NAME);\n  }\n}\n\nfunction handleFastifyError(\n  this: {\n    diagnosticsChannelExists?: boolean;\n  },\n  error: Error,\n  request: FastifyRequest & { opentelemetry?: () => { span?: Span } },\n  reply: FastifyReply,\n  handlerOrigin: 'diagnostics-channel' | 'onError-hook',\n): void {\n  const shouldHandleError = getFastifyIntegration()?.getShouldHandleError() || defaultShouldHandleError;\n  // Diagnostics channel runs before the onError hook, so we can use it to check if the handler was already registered\n  if (handlerOrigin === 'diagnostics-channel') {\n    this.diagnosticsChannelExists = true;\n  }\n\n  if (this.diagnosticsChannelExists && handlerOrigin === 'onError-hook') {\n    DEBUG_BUILD &&\n      debug.warn(\n        'Fastify error handler was already registered via diagnostics channel.',\n        'You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.',\n      );\n\n    // If the diagnostics channel already exists, we don't need to handle the error again\n    return;\n  }\n\n  if (shouldHandleError(error, request, reply)) {\n    captureException(error, { mechanism: { handled: false, type: 'auto.function.fastify' } });\n  }\n}\n\nexport const instrumentFastify = generateInstrumentOnce(`${INTEGRATION_NAME}.v5`, () => {\n  const fastifyOtelInstrumentationInstance = new FastifyOtelInstrumentation();\n  const plugin = fastifyOtelInstrumentationInstance.plugin();\n\n  // This message handler works for Fastify versions 3, 4 and 5\n  diagnosticsChannel.subscribe('fastify.initialization', message => {\n    const fastifyInstance = (message as { fastify?: FastifyInstance }).fastify;\n\n    fastifyInstance?.register(plugin).after(err => {\n      if (err) {\n        DEBUG_BUILD && debug.error('Failed to setup Fastify instrumentation', err);\n      } else {\n        instrumentClient();\n\n        if (fastifyInstance) {\n          instrumentOnRequest(fastifyInstance);\n        }\n      }\n    });\n  });\n\n  // This diagnostics channel only works on Fastify version 5\n  // For versions 3 and 4, we use `setupFastifyErrorHandler` instead\n  diagnosticsChannel.subscribe('tracing:fastify.request.handler:error', message => {\n    const { error, request, reply } = message as {\n      error: Error;\n      request: FastifyRequest & { opentelemetry?: () => { span?: Span } };\n      reply: FastifyReply;\n    };\n\n    handleFastifyError.call(handleFastifyError, error, request, reply, 'diagnostics-channel');\n  });\n\n  // Returning this as Instrumentation to avoid leaking @fastify/otel types into the public API\n  return fastifyOtelInstrumentationInstance as unknown as Instrumentation;\n});\n\nconst _fastifyIntegration = (({ shouldHandleError }: Partial) => {\n  let _shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      _shouldHandleError = shouldHandleError || defaultShouldHandleError;\n\n      instrumentFastifyV3();\n      instrumentFastify();\n    },\n    getShouldHandleError() {\n      return _shouldHandleError;\n    },\n    setShouldHandleError(fn: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean): void {\n      _shouldHandleError = fn;\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Fastify](https://fastify.dev/).\n *\n * If you also want to capture errors, you need to call `setupFastifyErrorHandler(app)` after you set up your Fastify server.\n *\n * For more information, see the [fastify documentation](https://docs.sentry.io/platforms/javascript/guides/fastify/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.fastifyIntegration()],\n * })\n * ```\n */\nexport const fastifyIntegration = defineIntegration((options: Partial = {}) =>\n  _fastifyIntegration(options),\n);\n\n/**\n * Default function to determine if an error should be sent to Sentry\n *\n * 3xx and 4xx errors are not sent by default.\n */\nfunction defaultShouldHandleError(_error: Error, _request: FastifyRequest, reply: FastifyReply): boolean {\n  const statusCode = reply.statusCode;\n  // 3xx and 4xx errors are not sent by default.\n  return statusCode >= 500 || statusCode <= 299;\n}\n\n/**\n * Add an Fastify error handler to capture errors to Sentry.\n *\n * @param fastify The Fastify instance to which to add the error handler\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Fastify = require(\"fastify\");\n *\n * const app = Fastify();\n *\n * Sentry.setupFastifyErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen({ port: 3000 });\n * ```\n */\nexport function setupFastifyErrorHandler(fastify: FastifyMinimal, options?: Partial): void {\n  if (options?.shouldHandleError) {\n    getFastifyIntegration()?.setShouldHandleError(options.shouldHandleError);\n  }\n\n  const plugin = Object.assign(\n    function (fastify: FastifyInstance, _options: unknown, done: () => void): void {\n      fastify.addHook('onError', async (request, reply, error) => {\n        handleFastifyError.call(handleFastifyError, error, request, reply, 'onError-hook');\n      });\n      done();\n    },\n    {\n      [Symbol.for('skip-override')]: true,\n      [Symbol.for('fastify.display-name')]: 'sentry-fastify-error-handler',\n    },\n  );\n\n  fastify.register(plugin);\n}\n\nfunction addFastifySpanAttributes(span: Span): void {\n  const spanJSON = spanToJSON(span);\n  const spanName = spanJSON.description;\n  const attributes = spanJSON.data;\n\n  const type = attributes['fastify.type'];\n\n  const isHook = type === 'hook';\n  const isHandler = type === spanName?.startsWith('handler -');\n  // In @fastify/otel `request-handler` is separated by dash, not underscore\n  const isRequestHandler = spanName === 'request' || type === 'request-handler';\n\n  // If this is already set, or we have no fastify span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || (!isHandler && !isRequestHandler && !isHook)) {\n    return;\n  }\n\n  const opPrefix = isHook ? 'hook' : isHandler ? 'middleware' : isRequestHandler ? 'request_handler' : '';\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${opPrefix}.fastify`,\n  });\n\n  const attrName = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n  if (typeof attrName === 'string') {\n    // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n    // This is a bit of a hack, and not always working for all spans\n    // But it's the best we can do without a proper API\n    const updatedName = attrName.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n    span.updateName(updatedName);\n  }\n}\n\nfunction instrumentClient(): void {\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', (span: Span) => {\n      addFastifySpanAttributes(span);\n    });\n  }\n}\n\nfunction instrumentOnRequest(fastify: FastifyInstance): void {\n  fastify.addHook('onRequest', async (request: FastifyRequest & { opentelemetry?: () => { span?: Span } }, _reply) => {\n    if (request.opentelemetry) {\n      const { span } = request.opentelemetry();\n\n      if (span) {\n        addFastifySpanAttributes(span);\n      }\n    }\n\n    const routeName = request.routeOptions?.url;\n    const method = request.method || 'GET';\n\n    getIsolationScope().setTransactionName(`${method} ${routeName}`);\n  });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AllowedOperationTypes {\n  QUERY = 'query',\n  MUTATION = 'mutation',\n  SUBSCRIPTION = 'subscription',\n}\n\nexport enum TokenKind {\n  SOF = '',\n  EOF = '',\n  BANG = '!',\n  DOLLAR = '$',\n  AMP = '&',\n  PAREN_L = '(',\n  PAREN_R = ')',\n  SPREAD = '...',\n  COLON = ':',\n  EQUALS = '=',\n  AT = '@',\n  BRACKET_L = '[',\n  BRACKET_R = ']',\n  BRACE_L = '{',\n  PIPE = '|',\n  BRACE_R = '}',\n  NAME = 'Name',\n  INT = 'Int',\n  FLOAT = 'Float',\n  STRING = 'String',\n  BLOCK_STRING = 'BlockString',\n  COMMENT = 'Comment',\n}\n\nexport enum SpanNames {\n  EXECUTE = 'graphql.execute',\n  PARSE = 'graphql.parse',\n  RESOLVE = 'graphql.resolve',\n  VALIDATE = 'graphql.validate',\n  SCHEMA_VALIDATE = 'graphql.validateSchema',\n  SCHEMA_PARSE = 'graphql.parseSchema',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  SOURCE = 'graphql.source',\n  FIELD_NAME = 'graphql.field.name',\n  FIELD_PATH = 'graphql.field.path',\n  FIELD_TYPE = 'graphql.field.type',\n  PARENT_NAME = 'graphql.parent.name',\n  OPERATION_TYPE = 'graphql.operation.type',\n  OPERATION_NAME = 'graphql.operation.name',\n  VARIABLES = 'graphql.variables.',\n  ERROR_VALIDATION_NAME = 'graphql.validation.error',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport const OTEL_PATCHED_SYMBOL = Symbol.for('opentelemetry.patched');\n\nexport const OTEL_GRAPHQL_DATA_SYMBOL = Symbol.for(\n  'opentelemetry.graphql_data'\n);\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as graphqlTypes from 'graphql';\nimport type * as api from '@opentelemetry/api';\nimport type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport type { DocumentNode } from 'graphql/language/ast';\nimport type {\n  GraphQLFieldResolver,\n  GraphQLTypeResolver,\n} from 'graphql/type/definition';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\n\nexport const OPERATION_NOT_SUPPORTED =\n  'Operation$operationName$not' + ' supported';\n\nexport type executeFunctionWithObj = (\n  args: graphqlTypes.ExecutionArgs\n) => PromiseOrValue;\n\nexport type executeArgumentsArray = [\n  graphqlTypes.GraphQLSchema,\n  graphqlTypes.DocumentNode,\n  any,\n  any,\n  Maybe<{ [key: string]: any }>,\n  Maybe,\n  Maybe>,\n  Maybe>,\n];\n\nexport type executeFunctionWithArgs = (\n  schema: graphqlTypes.GraphQLSchema,\n  document: graphqlTypes.DocumentNode,\n  rootValue?: any,\n  contextValue?: any,\n  variableValues?: Maybe<{ [key: string]: any }>,\n  operationName?: Maybe,\n  fieldResolver?: Maybe>,\n  typeResolver?: Maybe>\n) => PromiseOrValue;\n\nexport interface OtelExecutionArgs {\n  schema: graphqlTypes.GraphQLSchema;\n  document: DocumentNode & ObjectWithGraphQLData;\n  rootValue?: any;\n  contextValue?: any & ObjectWithGraphQLData;\n  variableValues?: Maybe<{ [key: string]: any }>;\n  operationName?: Maybe;\n  fieldResolver?: Maybe & OtelPatched>;\n  typeResolver?: Maybe>;\n}\n\nexport type executeType = executeFunctionWithObj | executeFunctionWithArgs;\n\nexport type parseType = (\n  source: string | graphqlTypes.Source,\n  options?: graphqlTypes.ParseOptions\n) => graphqlTypes.DocumentNode;\n\nexport type validateType = (\n  schema: graphqlTypes.GraphQLSchema,\n  documentAST: graphqlTypes.DocumentNode,\n  rules?: ReadonlyArray,\n  options?: { maxErrors?: number },\n  typeInfo?: graphqlTypes.TypeInfo\n) => ReadonlyArray;\n\nexport interface GraphQLField {\n  span: api.Span;\n}\n\ninterface OtelGraphQLData {\n  source?: any;\n  span: api.Span;\n  fields: { [key: string]: GraphQLField };\n}\n\nexport interface ObjectWithGraphQLData {\n  [OTEL_GRAPHQL_DATA_SYMBOL]?: OtelGraphQLData;\n}\n\nexport interface OtelPatched {\n  [OTEL_PATCHED_SYMBOL]?: boolean;\n}\n\nexport interface GraphQLPath {\n  prev: GraphQLPath | undefined;\n  key: string | number;\n  /**\n   * optional as it didn't exist yet in ver 14\n   */\n  typename?: string | undefined;\n}\n\n/**\n * Moving this type from ver 15 of graphql as it is nto available in ver. 14s\n * this way it can compile against ver 14.\n */\nexport type Maybe = null | undefined | T;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as graphqlTypes from 'graphql';\nimport * as api from '@opentelemetry/api';\nimport { AllowedOperationTypes, SpanNames, TokenKind } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\nimport {\n  GraphQLField,\n  GraphQLPath,\n  ObjectWithGraphQLData,\n  OtelPatched,\n  Maybe,\n} from './internal-types';\nimport { GraphQLInstrumentationParsedConfig } from './types';\n\nconst OPERATION_VALUES = Object.values(AllowedOperationTypes);\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts\nexport const isPromise = (value: any): value is Promise => {\n  return typeof value?.then === 'function';\n};\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isObjectLike.ts\nconst isObjectLike = (value: unknown): value is { [key: string]: unknown } => {\n  return typeof value == 'object' && value !== null;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction addInputVariableAttribute(span: api.Span, key: string, variable: any) {\n  if (Array.isArray(variable)) {\n    variable.forEach((value, idx) => {\n      addInputVariableAttribute(span, `${key}.${idx}`, value);\n    });\n  } else if (variable instanceof Object) {\n    Object.entries(variable).forEach(([nestedKey, value]) => {\n      addInputVariableAttribute(span, `${key}.${nestedKey}`, value);\n    });\n  } else {\n    span.setAttribute(`${AttributeNames.VARIABLES}${String(key)}`, variable);\n  }\n}\n\nexport function addInputVariableAttributes(\n  span: api.Span,\n  variableValues: { [key: string]: any }\n) {\n  Object.entries(variableValues).forEach(([key, value]) => {\n    addInputVariableAttribute(span, key, value);\n  });\n}\n\nexport function addSpanSource(\n  span: api.Span,\n  loc?: graphqlTypes.Location,\n  allowValues?: boolean,\n  start?: number,\n  end?: number\n): void {\n  const source = getSourceFromLocation(loc, allowValues, start, end);\n  span.setAttribute(AttributeNames.SOURCE, source);\n}\n\nfunction createFieldIfNotExists(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  contextValue: any,\n  info: graphqlTypes.GraphQLResolveInfo,\n  path: string[]\n): {\n  field: GraphQLField;\n  spanAdded: boolean;\n} {\n  let field = getField(contextValue, path);\n  if (field) {\n    return { field, spanAdded: false };\n  }\n\n  const config = getConfig();\n  const parentSpan = config.flatResolveSpans\n    ? getRootSpan(contextValue)\n    : getParentFieldSpan(contextValue, path);\n\n  field = {\n    span: createResolverSpan(\n      tracer,\n      getConfig,\n      contextValue,\n      info,\n      path,\n      parentSpan\n    ),\n  };\n\n  addField(contextValue, path, field);\n\n  return { field, spanAdded: true };\n}\n\nfunction createResolverSpan(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  contextValue: any,\n  info: graphqlTypes.GraphQLResolveInfo,\n  path: string[],\n  parentSpan?: api.Span\n): api.Span {\n  const attributes: api.SpanAttributes = {\n    [AttributeNames.FIELD_NAME]: info.fieldName,\n    [AttributeNames.FIELD_PATH]: path.join('.'),\n    [AttributeNames.FIELD_TYPE]: info.returnType.toString(),\n    [AttributeNames.PARENT_NAME]: info.parentType.name,\n  };\n\n  const span = tracer.startSpan(\n    `${SpanNames.RESOLVE} ${attributes[AttributeNames.FIELD_PATH]}`,\n    {\n      attributes,\n    },\n    parentSpan ? api.trace.setSpan(api.context.active(), parentSpan) : undefined\n  );\n\n  const document = contextValue[OTEL_GRAPHQL_DATA_SYMBOL].source;\n  const fieldNode = info.fieldNodes.find(\n    fieldNode => fieldNode.kind === 'Field'\n  );\n\n  if (fieldNode) {\n    addSpanSource(\n      span,\n      document.loc,\n      getConfig().allowValues,\n      fieldNode.loc?.start,\n      fieldNode.loc?.end\n    );\n  }\n\n  return span;\n}\n\nexport function endSpan(span: api.Span, error?: Error): void {\n  if (error) {\n    span.recordException(error);\n  }\n  span.end();\n}\n\nexport function getOperation(\n  document: graphqlTypes.DocumentNode,\n  operationName?: Maybe\n): graphqlTypes.DefinitionNode | undefined {\n  if (!document || !Array.isArray(document.definitions)) {\n    return undefined;\n  }\n\n  if (operationName) {\n    return document.definitions\n      .filter(\n        definition =>\n          OPERATION_VALUES.indexOf((definition as any)?.operation) !== -1\n      )\n      .find(definition => operationName === (definition as any)?.name?.value);\n  } else {\n    return document.definitions.find(\n      definition =>\n        OPERATION_VALUES.indexOf((definition as any)?.operation) !== -1\n    );\n  }\n}\n\nfunction addField(contextValue: any, path: string[], field: GraphQLField) {\n  return (contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] =\n    field);\n}\n\nfunction getField(contextValue: any, path: string[]): GraphQLField {\n  return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')];\n}\n\nfunction getParentFieldSpan(contextValue: any, path: string[]): api.Span {\n  for (let i = path.length - 1; i > 0; i--) {\n    const field = getField(contextValue, path.slice(0, i));\n\n    if (field) {\n      return field.span;\n    }\n  }\n\n  return getRootSpan(contextValue);\n}\n\nfunction getRootSpan(contextValue: any): api.Span {\n  return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].span;\n}\n\nfunction pathToArray(mergeItems: boolean, path: GraphQLPath): string[] {\n  const flattened: string[] = [];\n  let curr: GraphQLPath | undefined = path;\n  while (curr) {\n    let key = curr.key;\n\n    if (mergeItems && typeof key === 'number') {\n      key = '*';\n    }\n    flattened.push(String(key));\n    curr = curr.prev;\n  }\n  return flattened.reverse();\n}\n\nfunction repeatBreak(i: number): string {\n  return repeatChar('\\n', i);\n}\n\nfunction repeatSpace(i: number): string {\n  return repeatChar(' ', i);\n}\n\nfunction repeatChar(char: string, to: number): string {\n  let text = '';\n  for (let i = 0; i < to; i++) {\n    text += char;\n  }\n  return text;\n}\n\nconst KindsToBeRemoved: string[] = [\n  TokenKind.FLOAT,\n  TokenKind.STRING,\n  TokenKind.INT,\n  TokenKind.BLOCK_STRING,\n];\n\nexport function getSourceFromLocation(\n  loc?: graphqlTypes.Location,\n  allowValues = false,\n  inputStart?: number,\n  inputEnd?: number\n): string {\n  let source = '';\n\n  if (loc?.startToken) {\n    const start = typeof inputStart === 'number' ? inputStart : loc.start;\n    const end = typeof inputEnd === 'number' ? inputEnd : loc.end;\n\n    let next: graphqlTypes.Token | null = loc.startToken.next;\n    let previousLine: number | undefined = 1;\n    while (next) {\n      if (next.start < start) {\n        next = next.next;\n        previousLine = next?.line;\n        continue;\n      }\n      if (next.end > end) {\n        next = next.next;\n        previousLine = next?.line;\n        continue;\n      }\n      let value = next.value || next.kind;\n      let space = '';\n      if (!allowValues && KindsToBeRemoved.indexOf(next.kind) >= 0) {\n        // value = repeatChar('*', value.length);\n        value = '*';\n      }\n      if (next.kind === TokenKind.STRING) {\n        value = `\"${value}\"`;\n      }\n      if (next.kind === TokenKind.EOF) {\n        value = '';\n      }\n      if (next.line > previousLine!) {\n        source += repeatBreak(next.line - previousLine!);\n        previousLine = next.line;\n        space = repeatSpace(next.column - 1);\n      } else {\n        if (next.line === next.prev?.line) {\n          space = repeatSpace(next.start - (next.prev?.end || 0));\n        }\n      }\n      source += space + value;\n      if (next) {\n        next = next.next!;\n      }\n    }\n  }\n\n  return source;\n}\n\nexport function wrapFields(\n  type: Maybe,\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig\n): void {\n  if (!type || type[OTEL_PATCHED_SYMBOL]) {\n    return;\n  }\n  const fields = type.getFields();\n\n  type[OTEL_PATCHED_SYMBOL] = true;\n\n  Object.keys(fields).forEach(key => {\n    const field = fields[key];\n\n    if (!field) {\n      return;\n    }\n\n    if (field.resolve) {\n      field.resolve = wrapFieldResolver(tracer, getConfig, field.resolve);\n    }\n\n    if (field.type) {\n      const unwrappedTypes = unwrapType(field.type);\n      for (const unwrappedType of unwrappedTypes) {\n        wrapFields(unwrappedType, tracer, getConfig);\n      }\n    }\n  });\n}\n\nfunction unwrapType(\n  type: graphqlTypes.GraphQLOutputType\n): readonly graphqlTypes.GraphQLObjectType[] {\n  // unwrap wrapping types (non-nullable and list types)\n  if ('ofType' in type) {\n    return unwrapType(type.ofType);\n  }\n\n  // unwrap union types\n  if (isGraphQLUnionType(type)) {\n    return type.getTypes();\n  }\n\n  // return object types\n  if (isGraphQLObjectType(type)) {\n    return [type];\n  }\n\n  return [];\n}\n\nfunction isGraphQLUnionType(\n  type: graphqlTypes.GraphQLType\n): type is graphqlTypes.GraphQLUnionType {\n  return 'getTypes' in type && typeof type.getTypes === 'function';\n}\n\nfunction isGraphQLObjectType(\n  type: graphqlTypes.GraphQLType\n): type is graphqlTypes.GraphQLObjectType {\n  return 'getFields' in type && typeof type.getFields === 'function';\n}\n\nconst handleResolveSpanError = (\n  resolveSpan: api.Span,\n  err: any,\n  shouldEndSpan: boolean\n) => {\n  if (!shouldEndSpan) {\n    return;\n  }\n  resolveSpan.recordException(err);\n  resolveSpan.setStatus({\n    code: api.SpanStatusCode.ERROR,\n    message: err.message,\n  });\n  resolveSpan.end();\n};\n\nconst handleResolveSpanSuccess = (\n  resolveSpan: api.Span,\n  shouldEndSpan: boolean\n) => {\n  if (!shouldEndSpan) {\n    return;\n  }\n  resolveSpan.end();\n};\n\nexport function wrapFieldResolver(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  fieldResolver: Maybe<\n    graphqlTypes.GraphQLFieldResolver & OtelPatched\n  >,\n  isDefaultResolver = false\n): graphqlTypes.GraphQLFieldResolver<\n  TSource,\n  TContext & ObjectWithGraphQLData,\n  TArgs\n> &\n  OtelPatched {\n  if (\n    (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] ||\n    typeof fieldResolver !== 'function'\n  ) {\n    return fieldResolver!;\n  }\n\n  function wrappedFieldResolver(\n    this: graphqlTypes.GraphQLFieldResolver,\n    source: TSource,\n    args: TArgs,\n    contextValue: TContext & ObjectWithGraphQLData,\n    info: graphqlTypes.GraphQLResolveInfo\n  ) {\n    if (!fieldResolver) {\n      return undefined;\n    }\n    const config = getConfig();\n\n    // follows what graphql is doing to decide if this is a trivial resolver\n    // for which we don't need to create a resolve span\n    if (\n      config.ignoreTrivialResolveSpans &&\n      isDefaultResolver &&\n      (isObjectLike(source) || typeof source === 'function')\n    ) {\n      const property = (source as any)[info.fieldName];\n      // a function execution is not trivial and should be recorder.\n      // property which is not a function is just a value and we don't want a \"resolve\" span for it\n      if (typeof property !== 'function') {\n        return fieldResolver.call(this, source, args, contextValue, info);\n      }\n    }\n\n    if (!contextValue[OTEL_GRAPHQL_DATA_SYMBOL]) {\n      return fieldResolver.call(this, source, args, contextValue, info);\n    }\n    const path = pathToArray(config.mergeItems, info && info.path);\n    const depth = path.filter((item: any) => typeof item === 'string').length;\n\n    let span: api.Span;\n    let shouldEndSpan = false;\n    if (config.depth >= 0 && config.depth < depth) {\n      span = getParentFieldSpan(contextValue, path);\n    } else {\n      const { field, spanAdded } = createFieldIfNotExists(\n        tracer,\n        getConfig,\n        contextValue,\n        info,\n        path\n      );\n      span = field.span;\n      shouldEndSpan = spanAdded;\n    }\n\n    return api.context.with(\n      api.trace.setSpan(api.context.active(), span),\n      () => {\n        try {\n          const res = fieldResolver.call(\n            this,\n            source,\n            args,\n            contextValue,\n            info\n          );\n          if (isPromise(res)) {\n            return res.then(\n              (r: any) => {\n                handleResolveSpanSuccess(span, shouldEndSpan);\n                return r;\n              },\n              (err: Error) => {\n                handleResolveSpanError(span, err, shouldEndSpan);\n                throw err;\n              }\n            );\n          } else {\n            handleResolveSpanSuccess(span, shouldEndSpan);\n            return res;\n          }\n        } catch (err: any) {\n          handleResolveSpanError(span, err, shouldEndSpan);\n          throw err;\n        }\n      }\n    );\n  }\n\n  (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] = true;\n\n  return wrappedFieldResolver;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-graphql';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, trace } from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type * as graphqlTypes from 'graphql';\nimport { SpanNames } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL } from './symbols';\n\nimport {\n  executeFunctionWithObj,\n  executeArgumentsArray,\n  executeType,\n  parseType,\n  validateType,\n  OtelExecutionArgs,\n  ObjectWithGraphQLData,\n  OPERATION_NOT_SUPPORTED,\n  Maybe,\n} from './internal-types';\nimport {\n  addInputVariableAttributes,\n  addSpanSource,\n  endSpan,\n  getOperation,\n  isPromise,\n  wrapFieldResolver,\n  wrapFields,\n} from './utils';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport * as api from '@opentelemetry/api';\nimport type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport {\n  GraphQLInstrumentationConfig,\n  GraphQLInstrumentationParsedConfig,\n} from './types';\n\nconst DEFAULT_CONFIG: GraphQLInstrumentationParsedConfig = {\n  mergeItems: false,\n  depth: -1,\n  allowValues: false,\n  ignoreResolveSpans: false,\n};\n\nconst supportedVersions = ['>=14.0.0 <17'];\n\nexport class GraphQLInstrumentation extends InstrumentationBase {\n  constructor(config: GraphQLInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n  }\n\n  override setConfig(config: GraphQLInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  protected init() {\n    const module = new InstrumentationNodeModuleDefinition(\n      'graphql',\n      supportedVersions\n    );\n    module.files.push(this._addPatchingExecute());\n    module.files.push(this._addPatchingParser());\n    module.files.push(this._addPatchingValidate());\n\n    return module;\n  }\n\n  private _addPatchingExecute(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/execution/execute.js',\n      supportedVersions,\n      // cannot make it work with appropriate type as execute function has 2\n      //types and/cannot import function but only types\n      (moduleExports: any) => {\n        if (isWrapped(moduleExports.execute)) {\n          this._unwrap(moduleExports, 'execute');\n        }\n        this._wrap(\n          moduleExports,\n          'execute',\n          this._patchExecute(moduleExports.defaultFieldResolver)\n        );\n        return moduleExports;\n      },\n      moduleExports => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'execute');\n        }\n      }\n    );\n  }\n\n  private _addPatchingParser(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/language/parser.js',\n      supportedVersions,\n      (moduleExports: typeof graphqlTypes) => {\n        if (isWrapped(moduleExports.parse)) {\n          this._unwrap(moduleExports, 'parse');\n        }\n        this._wrap(moduleExports, 'parse', this._patchParse());\n        return moduleExports;\n      },\n      (moduleExports: typeof graphqlTypes) => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'parse');\n        }\n      }\n    );\n  }\n\n  private _addPatchingValidate(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/validation/validate.js',\n      supportedVersions,\n      moduleExports => {\n        if (isWrapped(moduleExports.validate)) {\n          this._unwrap(moduleExports, 'validate');\n        }\n        this._wrap(moduleExports, 'validate', this._patchValidate());\n        return moduleExports;\n      },\n      moduleExports => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'validate');\n        }\n      }\n    );\n  }\n\n  private _patchExecute(\n    defaultFieldResolved: graphqlTypes.GraphQLFieldResolver\n  ): (original: executeType) => executeType {\n    const instrumentation = this;\n    return function execute(original) {\n      return function patchExecute(\n        this: executeType\n      ): PromiseOrValue {\n        let processedArgs: OtelExecutionArgs;\n\n        // case when apollo server is used for example\n        if (arguments.length >= 2) {\n          const args = arguments as unknown as executeArgumentsArray;\n          processedArgs = instrumentation._wrapExecuteArgs(\n            args[0],\n            args[1],\n            args[2],\n            args[3],\n            args[4],\n            args[5],\n            args[6],\n            args[7],\n            defaultFieldResolved\n          );\n        } else {\n          const args = arguments[0] as graphqlTypes.ExecutionArgs;\n          processedArgs = instrumentation._wrapExecuteArgs(\n            args.schema,\n            args.document,\n            args.rootValue,\n            args.contextValue,\n            args.variableValues,\n            args.operationName,\n            args.fieldResolver,\n            args.typeResolver,\n            defaultFieldResolved\n          );\n        }\n\n        const operation = getOperation(\n          processedArgs.document,\n          processedArgs.operationName\n        );\n\n        const span = instrumentation._createExecuteSpan(\n          operation,\n          processedArgs\n        );\n\n        processedArgs.contextValue[OTEL_GRAPHQL_DATA_SYMBOL] = {\n          source: processedArgs.document\n            ? processedArgs.document ||\n              (processedArgs.document as ObjectWithGraphQLData)[\n                OTEL_GRAPHQL_DATA_SYMBOL\n              ]\n            : undefined,\n          span,\n          fields: {},\n        };\n\n        return context.with(trace.setSpan(context.active(), span), () => {\n          return safeExecuteInTheMiddle<\n            PromiseOrValue\n          >(\n            () => {\n              return (original as executeFunctionWithObj).apply(this, [\n                processedArgs,\n              ]);\n            },\n            (err, result) => {\n              instrumentation._handleExecutionResult(span, err, result);\n            }\n          );\n        });\n      };\n    };\n  }\n\n  private _handleExecutionResult(\n    span: api.Span,\n    err?: Error,\n    result?: PromiseOrValue\n  ) {\n    const config = this.getConfig();\n    if (result === undefined || err) {\n      endSpan(span, err);\n      return;\n    }\n\n    if (isPromise(result)) {\n      (result as Promise).then(\n        resultData => {\n          if (typeof config.responseHook !== 'function') {\n            endSpan(span);\n            return;\n          }\n          this._executeResponseHook(span, resultData);\n        },\n        error => {\n          endSpan(span, error);\n        }\n      );\n    } else {\n      if (typeof config.responseHook !== 'function') {\n        endSpan(span);\n        return;\n      }\n      this._executeResponseHook(span, result as graphqlTypes.ExecutionResult);\n    }\n  }\n\n  private _executeResponseHook(\n    span: api.Span,\n    result: graphqlTypes.ExecutionResult\n  ) {\n    const { responseHook } = this.getConfig();\n    if (!responseHook) {\n      return;\n    }\n\n    safeExecuteInTheMiddle(\n      () => {\n        responseHook(span, result);\n      },\n      err => {\n        if (err) {\n          this._diag.error('Error running response hook', err);\n        }\n\n        endSpan(span, undefined);\n      },\n      true\n    );\n  }\n\n  private _patchParse(): (original: parseType) => parseType {\n    const instrumentation = this;\n    return function parse(original) {\n      return function patchParse(\n        this: parseType,\n        source: string | graphqlTypes.Source,\n        options?: graphqlTypes.ParseOptions\n      ): graphqlTypes.DocumentNode {\n        return instrumentation._parse(this, original, source, options);\n      };\n    };\n  }\n\n  private _patchValidate(): (original: validateType) => validateType {\n    const instrumentation = this;\n    return function validate(original: validateType) {\n      return function patchValidate(\n        this: validateType,\n        schema: graphqlTypes.GraphQLSchema,\n        documentAST: graphqlTypes.DocumentNode,\n        rules?: ReadonlyArray,\n        options?: { maxErrors?: number },\n        typeInfo?: graphqlTypes.TypeInfo\n      ): ReadonlyArray {\n        return instrumentation._validate(\n          this,\n          original,\n          schema,\n          documentAST,\n          rules,\n          typeInfo,\n          options\n        );\n      };\n    };\n  }\n\n  private _parse(\n    obj: parseType,\n    original: parseType,\n    source: string | graphqlTypes.Source,\n    options?: graphqlTypes.ParseOptions\n  ): graphqlTypes.DocumentNode {\n    const config = this.getConfig();\n    const span = this.tracer.startSpan(SpanNames.PARSE);\n\n    return context.with(trace.setSpan(context.active(), span), () => {\n      return safeExecuteInTheMiddle<\n        graphqlTypes.DocumentNode & ObjectWithGraphQLData\n      >(\n        () => {\n          return original.call(obj, source, options);\n        },\n        (err, result) => {\n          if (result) {\n            const operation = getOperation(result);\n            if (!operation) {\n              span.updateName(SpanNames.SCHEMA_PARSE);\n            } else if (result.loc) {\n              addSpanSource(span, result.loc, config.allowValues);\n            }\n          }\n          endSpan(span, err);\n        }\n      );\n    });\n  }\n\n  private _validate(\n    obj: validateType,\n    original: validateType,\n    schema: graphqlTypes.GraphQLSchema,\n    documentAST: graphqlTypes.DocumentNode,\n    rules?: ReadonlyArray,\n    typeInfo?: graphqlTypes.TypeInfo,\n    options?: { maxErrors?: number }\n  ): ReadonlyArray {\n    const span = this.tracer.startSpan(SpanNames.VALIDATE, {});\n\n    return context.with(trace.setSpan(context.active(), span), () => {\n      return safeExecuteInTheMiddle>(\n        () => {\n          return original.call(\n            obj,\n            schema,\n            documentAST,\n            rules,\n            options,\n            typeInfo\n          );\n        },\n        (err, errors) => {\n          if (!documentAST.loc) {\n            span.updateName(SpanNames.SCHEMA_VALIDATE);\n          }\n          if (errors && errors.length) {\n            span.recordException({\n              name: AttributeNames.ERROR_VALIDATION_NAME,\n              message: JSON.stringify(errors),\n            });\n          }\n          endSpan(span, err);\n        }\n      );\n    });\n  }\n\n  private _createExecuteSpan(\n    operation: graphqlTypes.DefinitionNode | undefined,\n    processedArgs: graphqlTypes.ExecutionArgs\n  ): api.Span {\n    const config = this.getConfig();\n\n    const span = this.tracer.startSpan(SpanNames.EXECUTE, {});\n    if (operation) {\n      const { operation: operationType, name: nameNode } =\n        operation as graphqlTypes.OperationDefinitionNode;\n\n      span.setAttribute(AttributeNames.OPERATION_TYPE, operationType);\n\n      const operationName = nameNode?.value;\n\n      // https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/graphql/\n      // > The span name MUST be of the format   provided that graphql.operation.type and graphql.operation.name are available.\n      // > If graphql.operation.name is not available, the span SHOULD be named .\n      if (operationName) {\n        span.setAttribute(AttributeNames.OPERATION_NAME, operationName);\n        span.updateName(`${operationType} ${operationName}`);\n      } else {\n        span.updateName(operationType);\n      }\n    } else {\n      let operationName = ' ';\n      if (processedArgs.operationName) {\n        operationName = ` \"${processedArgs.operationName}\" `;\n      }\n      operationName = OPERATION_NOT_SUPPORTED.replace(\n        '$operationName$',\n        operationName\n      );\n      span.setAttribute(AttributeNames.OPERATION_NAME, operationName);\n    }\n\n    if (processedArgs.document?.loc) {\n      addSpanSource(span, processedArgs.document.loc, config.allowValues);\n    }\n\n    if (processedArgs.variableValues && config.allowValues) {\n      addInputVariableAttributes(span, processedArgs.variableValues);\n    }\n\n    return span;\n  }\n\n  private _wrapExecuteArgs(\n    schema: graphqlTypes.GraphQLSchema,\n    document: graphqlTypes.DocumentNode,\n    rootValue: any,\n    contextValue: any,\n    variableValues: Maybe<{ [key: string]: any }>,\n    operationName: Maybe,\n    fieldResolver: Maybe>,\n    typeResolver: Maybe>,\n    defaultFieldResolved: graphqlTypes.GraphQLFieldResolver\n  ): OtelExecutionArgs {\n    if (!contextValue) {\n      contextValue = {};\n    }\n\n    if (\n      contextValue[OTEL_GRAPHQL_DATA_SYMBOL] ||\n      this.getConfig().ignoreResolveSpans\n    ) {\n      return {\n        schema,\n        document,\n        rootValue,\n        contextValue,\n        variableValues,\n        operationName,\n        fieldResolver,\n        typeResolver,\n      };\n    }\n\n    const isUsingDefaultResolver = fieldResolver == null;\n    // follows graphql implementation here:\n    // https://github.com/graphql/graphql-js/blob/0b7daed9811731362c71900e12e5ea0d1ecc7f1f/src/execution/execute.ts#L494\n    const fieldResolverForExecute = fieldResolver ?? defaultFieldResolved;\n    fieldResolver = wrapFieldResolver(\n      this.tracer,\n      () => this.getConfig(),\n      fieldResolverForExecute,\n      isUsingDefaultResolver\n    );\n\n    if (schema) {\n      wrapFields(schema.getQueryType(), this.tracer, () => this.getConfig());\n      wrapFields(schema.getMutationType(), this.tracer, () => this.getConfig());\n    }\n\n    return {\n      schema,\n      document,\n      rootValue,\n      contextValue,\n      variableValues,\n      operationName,\n      fieldResolver,\n      typeResolver,\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { GraphQLInstrumentation } from './instrumentation';\nexport type {\n  GraphQLInstrumentationConfig,\n  GraphQLInstrumentationExecutionResponseHook,\n  GraphQLInstrumentationParsedConfig,\n} from './types';\n","import type { AttributeValue } from '@opentelemetry/api';\nimport { SpanStatusCode } from '@opentelemetry/api';\nimport { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, getRootSpan, spanToJSON } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '@sentry/opentelemetry';\n\ninterface GraphqlOptions {\n  /**\n   * Do not create spans for resolvers.\n   *\n   * Defaults to true.\n   */\n  ignoreResolveSpans?: boolean;\n\n  /**\n   * Don't create spans for the execution of the default resolver on object properties.\n   *\n   * When a resolver function is not defined on the schema for a field, graphql will\n   * use the default resolver which just looks for a property with that name on the object.\n   * If the property is not a function, it's not very interesting to trace.\n   * This option can reduce noise and number of spans created.\n   *\n   * Defaults to true.\n   */\n  ignoreTrivialResolveSpans?: boolean;\n\n  /**\n   * If this is enabled, a http.server root span containing this span will automatically be renamed to include the operation name.\n   * Set this to `false` if you do not want this behavior, and want to keep the default http.server span name.\n   *\n   * Defaults to true.\n   */\n  useOperationNameForRootSpan?: boolean;\n}\n\nconst INTEGRATION_NAME = 'Graphql';\n\nexport const instrumentGraphql = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  GraphQLInstrumentation,\n  (_options: GraphqlOptions) => {\n    const options = getOptionsWithDefaults(_options);\n\n    return {\n      ...options,\n      responseHook(span, result) {\n        addOriginToSpan(span, 'auto.graphql.otel.graphql');\n\n        // We want to ensure spans are marked as errored if there are errors in the result\n        // We only do that if the span is not already marked with a status\n        const resultWithMaybeError = result as { errors?: { message: string }[] };\n        if (resultWithMaybeError.errors?.length && !spanToJSON(span).status) {\n          span.setStatus({ code: SpanStatusCode.ERROR });\n        }\n\n        const attributes = spanToJSON(span).data;\n\n        // If operation.name is not set, we fall back to use operation.type only\n        const operationType = attributes['graphql.operation.type'];\n        const operationName = attributes['graphql.operation.name'];\n\n        if (options.useOperationNameForRootSpan && operationType) {\n          const rootSpan = getRootSpan(span);\n          const rootSpanAttributes = spanToJSON(rootSpan).data;\n\n          const existingOperations = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION] || [];\n\n          const newOperation = operationName ? `${operationType} ${operationName}` : `${operationType}`;\n\n          // We keep track of each operation on the root span\n          // This can either be a string, or an array of strings (if there are multiple operations)\n          if (Array.isArray(existingOperations)) {\n            (existingOperations as string[]).push(newOperation);\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, existingOperations);\n          } else if (typeof existingOperations === 'string') {\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, [existingOperations, newOperation]);\n          } else {\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, newOperation);\n          }\n\n          if (!spanToJSON(rootSpan).data['original-description']) {\n            rootSpan.setAttribute('original-description', spanToJSON(rootSpan).description);\n          }\n          // Important for e.g. @sentry/aws-serverless because this would otherwise overwrite the name again\n          rootSpan.updateName(\n            `${spanToJSON(rootSpan).data['original-description']} (${getGraphqlOperationNamesFromAttribute(\n              existingOperations,\n            )})`,\n          );\n        }\n      },\n    };\n  },\n);\n\nconst _graphqlIntegration = ((options: GraphqlOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      // We set defaults here, too, because otherwise we'd update the instrumentation config\n      // to the config without defaults, as `generateInstrumentOnce` automatically calls `setConfig(options)`\n      // when being called the second time\n      instrumentGraphql(getOptionsWithDefaults(options));\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [graphql](https://www.npmjs.com/package/graphql) library.\n *\n * For more information, see the [`graphqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/graphql/).\n *\n * @param {GraphqlOptions} options Configuration options for the GraphQL integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.graphqlIntegration()],\n * });\n */\nexport const graphqlIntegration = defineIntegration(_graphqlIntegration);\n\nfunction getOptionsWithDefaults(options?: GraphqlOptions): GraphqlOptions {\n  return {\n    ignoreResolveSpans: true,\n    ignoreTrivialResolveSpans: true,\n    useOperationNameForRootSpan: true,\n    ...options,\n  };\n}\n\n// copy from packages/opentelemetry/utils\nfunction getGraphqlOperationNamesFromAttribute(attr: AttributeValue): string {\n  if (Array.isArray(attr)) {\n    // oxlint-disable-next-line typescript/require-array-sort-compare\n    const sorted = attr.slice().sort();\n\n    // Up to 5 items, we just add all of them\n    if (sorted.length <= 5) {\n      return sorted.join(', ');\n    } else {\n      // Else, we add the first 5 and the diff of other operations\n      return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n    }\n  }\n\n  return `${attr}`;\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nimport type * as KafkaJSTypes from 'kafkajs';\n\nexport const EVENT_LISTENERS_SET = Symbol(\n  'opentelemetry.instrumentation.kafkajs.eventListenersSet'\n);\n\nexport interface ConsumerExtended extends KafkaJSTypes.Consumer {\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n\nexport interface ProducerExtended extends KafkaJSTypes.Producer {\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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 */\nimport { TextMapGetter } from '@opentelemetry/api';\n\n/*\nsame as open telemetry's `defaultTextMapGetter`,\nbut also handle case where header is buffer,\nadding toString() to make sure string is returned\n*/\nexport const bufferTextMapGetter: TextMapGetter = {\n  get(carrier, key) {\n    if (!carrier) {\n      return undefined;\n    }\n\n    const keys = Object.keys(carrier);\n\n    for (const carrierKey of keys) {\n      if (carrierKey === key || carrierKey.toLowerCase() === key) {\n        return carrier[carrierKey]?.toString();\n      }\n    }\n\n    return undefined;\n  },\n\n  keys(carrier) {\n    return carrier ? Object.keys(carrier) : [];\n  },\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The number of messages sent, received, or processed in the scope of the batching operation.\n *\n * @example 0\n * @example 1\n * @example 2\n *\n * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_BATCH_MESSAGE_COUNT =\n  'messaging.batch.message_count' as const;\n\n/**\n * The message destination name\n *\n * @example MyQueue\n * @example MyTopic\n *\n * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If\n * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_NAME =\n  'messaging.destination.name' as const;\n\n/**\n * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`.\n *\n * @example \"1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_PARTITION_ID =\n  'messaging.destination.partition.id' as const;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message.id` in that they're not unique. If the key is `null`, the attribute **MUST NOT** be set.\n *\n * @example \"myKey\"\n *\n * @note If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_KEY =\n  'messaging.kafka.message.key' as const;\n\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE =\n  'messaging.kafka.message.tombstone' as const;\n\n/**\n * The offset of a record in the corresponding Kafka partition.\n *\n * @example 42\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset' as const;\n\n/**\n * The system-specific name of the messaging operation.\n *\n * @example ack\n * @example nack\n * @example send\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_OPERATION_NAME =\n  'messaging.operation.name' as const;\n\n/**\n * A string identifying the type of the messaging operation.\n *\n * @note If a custom value is used, it **MUST** be of low cardinality.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_OPERATION_TYPE =\n  'messaging.operation.type' as const;\n\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = 'process' as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = 'receive' as const;\n\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SEND = 'send' as const;\n\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_KAFKA = 'kafka' as const;\n\n/**\n * Number of messages that were delivered to the application.\n *\n * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios.\n * The metric **SHOULD** be reported once per message delivery. For example, if receiving and processing operations are both instrumented for a single message delivery, this counter is incremented when the message is received and not reported when it is processed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES =\n  'messaging.client.consumed.messages' as const;\n\n/**\n * Duration of messaging operation initiated by a producer or consumer client.\n *\n * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_OPERATION_DURATION =\n  'messaging.client.operation.duration' as const;\n\n/**\n * Number of messages producer attempted to send to the broker.\n *\n * @note This metric **MUST NOT** count messages that were created but haven't yet been sent.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_SENT_MESSAGES =\n  'messaging.client.sent.messages' as const;\n\n/**\n * Duration of processing operation.\n *\n * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_PROCESS_DURATION =\n  'messaging.process.duration' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.23.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-kafkajs';\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nimport {\n  Attributes,\n  Context,\n  context,\n  Counter,\n  Histogram,\n  Link,\n  propagation,\n  ROOT_CONTEXT,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  trace,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  ERROR_TYPE_VALUE_OTHER,\n} from '@opentelemetry/semantic-conventions';\nimport type * as kafkaJs from 'kafkajs';\nimport type {\n  Consumer,\n  ConsumerRunConfig,\n  EachBatchHandler,\n  EachMessageHandler,\n  KafkaMessage,\n  Message,\n  Producer,\n  RecordMetadata,\n} from 'kafkajs';\nimport { EVENT_LISTENERS_SET } from './internal-types';\nimport { bufferTextMapGetter } from './propagator';\nimport {\n  ATTR_MESSAGING_BATCH_MESSAGE_COUNT,\n  ATTR_MESSAGING_DESTINATION_NAME,\n  ATTR_MESSAGING_DESTINATION_PARTITION_ID,\n  ATTR_MESSAGING_KAFKA_MESSAGE_KEY,\n  ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE,\n  ATTR_MESSAGING_KAFKA_OFFSET,\n  ATTR_MESSAGING_OPERATION_NAME,\n  ATTR_MESSAGING_OPERATION_TYPE,\n  ATTR_MESSAGING_SYSTEM,\n  MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n  MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n  MESSAGING_OPERATION_TYPE_VALUE_SEND,\n  MESSAGING_SYSTEM_VALUE_KAFKA,\n  METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES,\n  METRIC_MESSAGING_CLIENT_OPERATION_DURATION,\n  METRIC_MESSAGING_CLIENT_SENT_MESSAGES,\n  METRIC_MESSAGING_PROCESS_DURATION,\n} from './semconv';\nimport { KafkaJsInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\ninterface ConsumerSpanOptions {\n  topic: string;\n  message: KafkaMessage | undefined;\n  operationType: string;\n  attributes: Attributes;\n  ctx?: Context | undefined;\n  link?: Link;\n}\n// This interface acts as a strict subset of the KafkaJS Consumer and\n// Producer interfaces (just for the event we're needing)\ninterface KafkaEventEmitter {\n  on(\n    eventName:\n      | kafkaJs.ConsumerEvents['REQUEST']\n      | kafkaJs.ProducerEvents['REQUEST'],\n    listener: (event: kafkaJs.RequestEvent) => void\n  ): void;\n  events: {\n    REQUEST:\n      | kafkaJs.ConsumerEvents['REQUEST']\n      | kafkaJs.ProducerEvents['REQUEST'];\n  };\n  [EVENT_LISTENERS_SET]?: boolean;\n}\n\ninterface StandardAttributes extends Attributes {\n  [ATTR_MESSAGING_SYSTEM]: string;\n  [ATTR_MESSAGING_OPERATION_NAME]: OP;\n  [ATTR_ERROR_TYPE]?: string;\n}\ninterface TopicAttributes {\n  [ATTR_MESSAGING_DESTINATION_NAME]: string;\n  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]?: string;\n}\n\ninterface ClientDurationAttributes\n  extends StandardAttributes,\n    Partial {\n  [ATTR_SERVER_ADDRESS]: string;\n  [ATTR_SERVER_PORT]: number;\n  [ATTR_MESSAGING_OPERATION_TYPE]?: string;\n}\ninterface SentMessagesAttributes\n  extends StandardAttributes<'send'>,\n    TopicAttributes {\n  [ATTR_ERROR_TYPE]?: string;\n}\ntype ConsumedMessagesAttributes = StandardAttributes<'receive' | 'process'>;\ninterface MessageProcessDurationAttributes\n  extends StandardAttributes<'process'>,\n    TopicAttributes {\n  [ATTR_MESSAGING_SYSTEM]: string;\n  [ATTR_MESSAGING_OPERATION_NAME]: 'process';\n  [ATTR_ERROR_TYPE]?: string;\n}\ntype RecordPendingMetric = (errorType?: string | undefined) => void;\n\nfunction prepareCounter(\n  meter: Counter,\n  value: number,\n  attributes: T\n): RecordPendingMetric {\n  return (errorType?: string | undefined) => {\n    meter.add(value, {\n      ...attributes,\n      ...(errorType ? { [ATTR_ERROR_TYPE]: errorType } : {}),\n    });\n  };\n}\n\nfunction prepareDurationHistogram(\n  meter: Histogram,\n  value: number,\n  attributes: T\n): RecordPendingMetric {\n  return (errorType?: string | undefined) => {\n    meter.record((Date.now() - value) / 1000, {\n      ...attributes,\n      ...(errorType ? { [ATTR_ERROR_TYPE]: errorType } : {}),\n    });\n  };\n}\n\nconst HISTOGRAM_BUCKET_BOUNDARIES = [\n  0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,\n];\nexport class KafkaJsInstrumentation extends InstrumentationBase {\n  declare private _clientDuration: Histogram;\n  declare private _sentMessages: Counter;\n  declare private _consumedMessages: Counter;\n  declare private _processDuration: Histogram;\n\n  constructor(config: KafkaJsInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  override _updateMetricInstruments() {\n    this._clientDuration = this.meter.createHistogram(\n      METRIC_MESSAGING_CLIENT_OPERATION_DURATION,\n      { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }\n    );\n    this._sentMessages = this.meter.createCounter(\n      METRIC_MESSAGING_CLIENT_SENT_MESSAGES\n    );\n    this._consumedMessages = this.meter.createCounter(\n      METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES\n    );\n    this._processDuration = this.meter.createHistogram(\n      METRIC_MESSAGING_PROCESS_DURATION,\n      { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }\n    );\n  }\n\n  protected init() {\n    const unpatch = (moduleExports: typeof kafkaJs) => {\n      if (isWrapped(moduleExports?.Kafka?.prototype.producer)) {\n        this._unwrap(moduleExports.Kafka.prototype, 'producer');\n      }\n      if (isWrapped(moduleExports?.Kafka?.prototype.consumer)) {\n        this._unwrap(moduleExports.Kafka.prototype, 'consumer');\n      }\n    };\n\n    const module = new InstrumentationNodeModuleDefinition(\n      'kafkajs',\n      ['>=0.3.0 <3'],\n      (moduleExports: typeof kafkaJs) => {\n        unpatch(moduleExports);\n        this._wrap(\n          moduleExports?.Kafka?.prototype,\n          'producer',\n          this._getProducerPatch()\n        );\n        this._wrap(\n          moduleExports?.Kafka?.prototype,\n          'consumer',\n          this._getConsumerPatch()\n        );\n\n        return moduleExports;\n      },\n      unpatch\n    );\n    return module;\n  }\n\n  private _getConsumerPatch() {\n    const instrumentation = this;\n    return (original: kafkaJs.Kafka['consumer']) => {\n      return function consumer(\n        this: kafkaJs.Kafka,\n        ...args: Parameters\n      ) {\n        const newConsumer: Consumer = original.apply(this, args);\n\n        if (isWrapped(newConsumer.run)) {\n          instrumentation._unwrap(newConsumer, 'run');\n        }\n\n        instrumentation._wrap(\n          newConsumer,\n          'run',\n          instrumentation._getConsumerRunPatch()\n        );\n\n        instrumentation._setKafkaEventListeners(newConsumer);\n\n        return newConsumer;\n      };\n    };\n  }\n\n  private _setKafkaEventListeners(kafkaObj: KafkaEventEmitter) {\n    if (kafkaObj[EVENT_LISTENERS_SET]) return;\n\n    // The REQUEST Consumer event was added in kafkajs@1.5.0.\n    if (kafkaObj.events?.REQUEST) {\n      kafkaObj.on(\n        kafkaObj.events.REQUEST,\n        this._recordClientDurationMetric.bind(this)\n      );\n    }\n\n    kafkaObj[EVENT_LISTENERS_SET] = true;\n  }\n\n  private _recordClientDurationMetric(\n    event: Pick\n  ) {\n    const [address, port] = event.payload.broker.split(':');\n    this._clientDuration.record(event.payload.duration / 1000, {\n      [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n      [ATTR_MESSAGING_OPERATION_NAME]: `${event.payload.apiName}`, // potentially suffix with @v${event.payload.apiVersion}?\n      [ATTR_SERVER_ADDRESS]: address,\n      [ATTR_SERVER_PORT]: Number.parseInt(port, 10),\n    });\n  }\n\n  private _getProducerPatch() {\n    const instrumentation = this;\n    return (original: kafkaJs.Kafka['producer']) => {\n      return function consumer(\n        this: kafkaJs.Kafka,\n        ...args: Parameters\n      ) {\n        const newProducer: Producer = original.apply(this, args);\n\n        if (isWrapped(newProducer.sendBatch)) {\n          instrumentation._unwrap(newProducer, 'sendBatch');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'sendBatch',\n          instrumentation._getSendBatchPatch()\n        );\n\n        if (isWrapped(newProducer.send)) {\n          instrumentation._unwrap(newProducer, 'send');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'send',\n          instrumentation._getSendPatch()\n        );\n\n        if (isWrapped(newProducer.transaction)) {\n          instrumentation._unwrap(newProducer, 'transaction');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'transaction',\n          instrumentation._getProducerTransactionPatch()\n        );\n\n        instrumentation._setKafkaEventListeners(newProducer);\n\n        return newProducer;\n      };\n    };\n  }\n\n  private _getConsumerRunPatch() {\n    const instrumentation = this;\n    return (original: Consumer['run']) => {\n      return function run(\n        this: Consumer,\n        ...args: Parameters\n      ): ReturnType {\n        const config = args[0];\n        if (config?.eachMessage) {\n          if (isWrapped(config.eachMessage)) {\n            instrumentation._unwrap(config, 'eachMessage');\n          }\n          instrumentation._wrap(\n            config,\n            'eachMessage',\n            instrumentation._getConsumerEachMessagePatch()\n          );\n        }\n        if (config?.eachBatch) {\n          if (isWrapped(config.eachBatch)) {\n            instrumentation._unwrap(config, 'eachBatch');\n          }\n          instrumentation._wrap(\n            config,\n            'eachBatch',\n            instrumentation._getConsumerEachBatchPatch()\n          );\n        }\n        return original.call(this, config);\n      };\n    };\n  }\n\n  private _getConsumerEachMessagePatch() {\n    const instrumentation = this;\n    return (original: ConsumerRunConfig['eachMessage']) => {\n      return function eachMessage(\n        this: unknown,\n        ...args: Parameters\n      ): Promise {\n        const payload = args[0];\n        const propagatedContext: Context = propagation.extract(\n          ROOT_CONTEXT,\n          payload.message.headers,\n          bufferTextMapGetter\n        );\n        const span = instrumentation._startConsumerSpan({\n          topic: payload.topic,\n          message: payload.message,\n          operationType: MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n          ctx: propagatedContext,\n          attributes: {\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.partition\n            ),\n          },\n        });\n\n        const pendingMetrics: RecordPendingMetric[] = [\n          prepareDurationHistogram(\n            instrumentation._processDuration,\n            Date.now(),\n            {\n              [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n              [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n              [ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n              [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                payload.partition\n              ),\n            }\n          ),\n          prepareCounter(instrumentation._consumedMessages, 1, {\n            [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n            [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n            [ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.partition\n            ),\n          }),\n        ];\n\n        const eachMessagePromise = context.with(\n          trace.setSpan(propagatedContext, span),\n          () => {\n            return original!.apply(this, args);\n          }\n        );\n        return instrumentation._endSpansOnPromise(\n          [span],\n          pendingMetrics,\n          eachMessagePromise\n        );\n      };\n    };\n  }\n\n  private _getConsumerEachBatchPatch() {\n    return (original: ConsumerRunConfig['eachBatch']) => {\n      const instrumentation = this;\n      return function eachBatch(\n        this: unknown,\n        ...args: Parameters\n      ): Promise {\n        const payload = args[0];\n        // https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#topic-with-multiple-consumers\n        const receivingSpan = instrumentation._startConsumerSpan({\n          topic: payload.batch.topic,\n          message: undefined,\n          operationType: MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n          ctx: ROOT_CONTEXT,\n          attributes: {\n            [ATTR_MESSAGING_BATCH_MESSAGE_COUNT]: payload.batch.messages.length,\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.batch.partition\n            ),\n          },\n        });\n        return context.with(\n          trace.setSpan(context.active(), receivingSpan),\n          () => {\n            const startTime = Date.now();\n            const spans: Span[] = [];\n            const pendingMetrics: RecordPendingMetric[] = [\n              prepareCounter(\n                instrumentation._consumedMessages,\n                payload.batch.messages.length,\n                {\n                  [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                  [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                  [ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                    payload.batch.partition\n                  ),\n                }\n              ),\n            ];\n            payload.batch.messages.forEach(message => {\n              const propagatedContext: Context = propagation.extract(\n                ROOT_CONTEXT,\n                message.headers,\n                bufferTextMapGetter\n              );\n              const spanContext = trace\n                .getSpan(propagatedContext)\n                ?.spanContext();\n              let origSpanLink: Link | undefined;\n              if (spanContext) {\n                origSpanLink = {\n                  context: spanContext,\n                };\n              }\n              spans.push(\n                instrumentation._startConsumerSpan({\n                  topic: payload.batch.topic,\n                  message,\n                  operationType: MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n                  link: origSpanLink,\n                  attributes: {\n                    [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                      payload.batch.partition\n                    ),\n                  },\n                })\n              );\n              pendingMetrics.push(\n                prepareDurationHistogram(\n                  instrumentation._processDuration,\n                  startTime,\n                  {\n                    [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                    [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                    [ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                    [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                      payload.batch.partition\n                    ),\n                  }\n                )\n              );\n            });\n            const batchMessagePromise: Promise = original!.apply(\n              this,\n              args\n            );\n            spans.unshift(receivingSpan);\n            return instrumentation._endSpansOnPromise(\n              spans,\n              pendingMetrics,\n              batchMessagePromise\n            );\n          }\n        );\n      };\n    };\n  }\n\n  private _getProducerTransactionPatch() {\n    const instrumentation = this;\n    return (original: Producer['transaction']) => {\n      return function transaction(\n        this: Producer,\n        ...args: Parameters\n      ): ReturnType {\n        const transactionSpan = instrumentation.tracer.startSpan('transaction');\n\n        const transactionPromise = original.apply(this, args);\n\n        transactionPromise\n          .then((transaction: kafkaJs.Transaction) => {\n            const originalSend = transaction.send;\n            transaction.send = function send(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              return context.with(\n                trace.setSpan(context.active(), transactionSpan),\n                () => {\n                  const patched = instrumentation._getSendPatch()(originalSend);\n                  return patched.apply(this, args).catch(err => {\n                    transactionSpan.setStatus({\n                      code: SpanStatusCode.ERROR,\n                      message: err?.message,\n                    });\n                    transactionSpan.recordException(err);\n                    throw err;\n                  });\n                }\n              );\n            };\n\n            const originalSendBatch = transaction.sendBatch;\n            transaction.sendBatch = function sendBatch(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              return context.with(\n                trace.setSpan(context.active(), transactionSpan),\n                () => {\n                  const patched =\n                    instrumentation._getSendBatchPatch()(originalSendBatch);\n                  return patched.apply(this, args).catch(err => {\n                    transactionSpan.setStatus({\n                      code: SpanStatusCode.ERROR,\n                      message: err?.message,\n                    });\n                    transactionSpan.recordException(err);\n                    throw err;\n                  });\n                }\n              );\n            };\n\n            const originalCommit = transaction.commit;\n            transaction.commit = function commit(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              const originCommitPromise = originalCommit\n                .apply(this, args)\n                .then(() => {\n                  transactionSpan.setStatus({ code: SpanStatusCode.OK });\n                });\n              return instrumentation._endSpansOnPromise(\n                [transactionSpan],\n                [],\n                originCommitPromise\n              );\n            };\n\n            const originalAbort = transaction.abort;\n            transaction.abort = function abort(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              const originAbortPromise = originalAbort.apply(this, args);\n              return instrumentation._endSpansOnPromise(\n                [transactionSpan],\n                [],\n                originAbortPromise\n              );\n            };\n          })\n          .catch(err => {\n            transactionSpan.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err?.message,\n            });\n            transactionSpan.recordException(err);\n            transactionSpan.end();\n          });\n\n        return transactionPromise;\n      };\n    };\n  }\n\n  private _getSendBatchPatch() {\n    const instrumentation = this;\n    return (\n      original: Producer['sendBatch'] | kafkaJs.Transaction['sendBatch']\n    ) => {\n      return function sendBatch(\n        this: kafkaJs.Producer | kafkaJs.Transaction,\n        ...args: Parameters\n      ): ReturnType {\n        const batch = args[0];\n        const messages = batch.topicMessages || [];\n\n        const spans: Span[] = [];\n        const pendingMetrics: RecordPendingMetric[] = [];\n\n        messages.forEach(topicMessage => {\n          topicMessage.messages.forEach(message => {\n            spans.push(\n              instrumentation._startProducerSpan(topicMessage.topic, message)\n            );\n            pendingMetrics.push(\n              prepareCounter(instrumentation._sentMessages, 1, {\n                [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                [ATTR_MESSAGING_DESTINATION_NAME]: topicMessage.topic,\n                ...(message.partition !== undefined\n                  ? {\n                      [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                        message.partition\n                      ),\n                    }\n                  : {}),\n              })\n            );\n          });\n        });\n        const origSendResult: Promise = original.apply(\n          this,\n          args\n        );\n        return instrumentation._endSpansOnPromise(\n          spans,\n          pendingMetrics,\n          origSendResult\n        );\n      };\n    };\n  }\n\n  private _getSendPatch() {\n    const instrumentation = this;\n    return (original: Producer['send'] | kafkaJs.Transaction['send']) => {\n      return function send(\n        this: Producer | kafkaJs.Transaction,\n        ...args: Parameters\n      ): ReturnType {\n        const record = args[0];\n        const spans: Span[] = record.messages.map(message => {\n          return instrumentation._startProducerSpan(record.topic, message);\n        });\n\n        const pendingMetrics: RecordPendingMetric[] = record.messages.map(m =>\n          prepareCounter(instrumentation._sentMessages, 1, {\n            [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n            [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n            [ATTR_MESSAGING_DESTINATION_NAME]: record.topic,\n            ...(m.partition !== undefined\n              ? {\n                  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                    m.partition\n                  ),\n                }\n              : {}),\n          })\n        );\n        const origSendResult: Promise = original.apply(\n          this,\n          args\n        );\n        return instrumentation._endSpansOnPromise(\n          spans,\n          pendingMetrics,\n          origSendResult\n        );\n      };\n    };\n  }\n\n  private _endSpansOnPromise(\n    spans: Span[],\n    pendingMetrics: RecordPendingMetric[],\n    sendPromise: Promise\n  ): Promise {\n    return Promise.resolve(sendPromise)\n      .then(result => {\n        pendingMetrics.forEach(m => m());\n        return result;\n      })\n      .catch(reason => {\n        let errorMessage: string | undefined;\n        let errorType: string = ERROR_TYPE_VALUE_OTHER;\n        if (typeof reason === 'string' || reason === undefined) {\n          errorMessage = reason;\n        } else if (\n          typeof reason === 'object' &&\n          Object.prototype.hasOwnProperty.call(reason, 'message')\n        ) {\n          errorMessage = reason.message;\n          errorType = reason.constructor.name;\n        }\n        pendingMetrics.forEach(m => m(errorType));\n\n        spans.forEach(span => {\n          span.setAttribute(ATTR_ERROR_TYPE, errorType);\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: errorMessage,\n          });\n        });\n\n        throw reason;\n      })\n      .finally(() => {\n        spans.forEach(span => span.end());\n      });\n  }\n\n  private _startConsumerSpan({\n    topic,\n    message,\n    operationType,\n    ctx,\n    link,\n    attributes,\n  }: ConsumerSpanOptions) {\n    const operationName =\n      operationType === MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n        ? 'poll' // for batch processing spans\n        : operationType; // for individual message processing spans\n\n    const span = this.tracer.startSpan(\n      `${operationName} ${topic}`,\n      {\n        kind:\n          operationType === MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n            ? SpanKind.CLIENT\n            : SpanKind.CONSUMER,\n        attributes: {\n          ...attributes,\n          [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n          [ATTR_MESSAGING_DESTINATION_NAME]: topic,\n          [ATTR_MESSAGING_OPERATION_TYPE]: operationType,\n          [ATTR_MESSAGING_OPERATION_NAME]: operationName,\n          [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message?.key\n            ? String(message.key)\n            : undefined,\n          [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:\n            message?.key && message.value === null ? true : undefined,\n          [ATTR_MESSAGING_KAFKA_OFFSET]: message?.offset,\n        },\n        links: link ? [link] : [],\n      },\n      ctx\n    );\n\n    const { consumerHook } = this.getConfig();\n    if (consumerHook && message) {\n      safeExecuteInTheMiddle(\n        () => consumerHook(span, { topic, message }),\n        e => {\n          if (e) this._diag.error('consumerHook error', e);\n        },\n        true\n      );\n    }\n\n    return span;\n  }\n\n  private _startProducerSpan(topic: string, message: Message) {\n    const span = this.tracer.startSpan(`send ${topic}`, {\n      kind: SpanKind.PRODUCER,\n      attributes: {\n        [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n        [ATTR_MESSAGING_DESTINATION_NAME]: topic,\n        [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message.key\n          ? String(message.key)\n          : undefined,\n        [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:\n          message.key && message.value === null ? true : undefined,\n        [ATTR_MESSAGING_DESTINATION_PARTITION_ID]:\n          message.partition !== undefined\n            ? String(message.partition)\n            : undefined,\n        [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n        [ATTR_MESSAGING_OPERATION_TYPE]: MESSAGING_OPERATION_TYPE_VALUE_SEND,\n      },\n    });\n\n    message.headers = message.headers ?? {};\n    propagation.inject(trace.setSpan(context.active(), span), message.headers);\n\n    const { producerHook } = this.getConfig();\n    if (producerHook) {\n      safeExecuteInTheMiddle(\n        () => producerHook(span, { topic, message }),\n        e => {\n          if (e) this._diag.error('producerHook error', e);\n        },\n        true\n      );\n    }\n\n    return span;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nexport { KafkaJsInstrumentation } from './instrumentation';\nexport type {\n  KafkaConsumerCustomAttributeFunction,\n  KafkaJsInstrumentationConfig,\n  KafkaProducerCustomAttributeFunction,\n  KafkajsMessage,\n  MessageInfo,\n} from './types';\n","import { KafkaJsInstrumentation } from '@opentelemetry/instrumentation-kafkajs';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Kafka';\n\nexport const instrumentKafka = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new KafkaJsInstrumentation({\n      consumerHook(span) {\n        addOriginToSpan(span, 'auto.kafkajs.otel.consumer');\n      },\n      producerHook(span) {\n        addOriginToSpan(span, 'auto.kafkajs.otel.producer');\n      },\n    }),\n);\n\nconst _kafkaIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentKafka();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [kafkajs](https://www.npmjs.com/package/kafkajs) library.\n *\n * For more information, see the [`kafkaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/kafka/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.kafkaIntegration()],\n * });\n */\nexport const kafkaIntegration = defineIntegration(_kafkaIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.58.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-lru-memoizer';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context } from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nexport class LruMemoizerInstrumentation extends InstrumentationBase {\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'lru-memoizer',\n        ['>=1.3 <4'],\n        moduleExports => {\n          // moduleExports is a function which receives an options object,\n          // and returns a \"memoizer\" function upon invocation.\n          // We want to patch this \"memoizer's\" internal function\n          const asyncMemoizer = function (this: unknown) {\n            // This following function is invoked every time the user wants to get a (possible) memoized value\n            // We replace it with another function in which we bind the current context to the last argument (callback)\n            const origMemoizer = moduleExports.apply(this, arguments);\n            return function (this: unknown) {\n              const modifiedArguments = [...arguments];\n              // last argument is the callback\n              const origCallback = modifiedArguments.pop();\n              const callbackWithContext =\n                typeof origCallback === 'function'\n                  ? context.bind(context.active(), origCallback)\n                  : origCallback;\n              modifiedArguments.push(callbackWithContext);\n              return origMemoizer.apply(this, modifiedArguments);\n            };\n          };\n\n          // sync function preserves context, but we still need to export it\n          // as the lru-memoizer package does\n          asyncMemoizer.sync = moduleExports.sync;\n          return asyncMemoizer;\n        },\n        undefined // no need to disable as this instrumentation does not create any spans\n      ),\n    ];\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { LruMemoizerInstrumentation } from './instrumentation';\n","import { LruMemoizerInstrumentation } from '@opentelemetry/instrumentation-lru-memoizer';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'LruMemoizer';\n\nexport const instrumentLruMemoizer = generateInstrumentOnce(INTEGRATION_NAME, () => new LruMemoizerInstrumentation());\n\nconst _lruMemoizerIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLruMemoizer();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [lru-memoizer](https://www.npmjs.com/package/lru-memoizer) library.\n *\n * For more information, see the [`lruMemoizerIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/lrumemoizer/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.lruMemoizerIntegration()],\n * });\n */\nexport const lruMemoizerIntegration = defineIntegration(_lruMemoizerIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MongoDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MONGODB = 'mongodb' as const;\n\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE =\n  'db.client.connections.usage' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n  (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n  /**\n   * If true, additional information about query parameters and\n   * results will be attached (as `attributes`) to spans representing\n   * database operations.\n   */\n  enhancedDatabaseReporting?: boolean;\n\n  /**\n   * Hook that allows adding custom span attributes based on the data\n   * returned from MongoDB actions.\n   *\n   * @default undefined\n   */\n  responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n  /**\n   * Custom serializer function for the db.statement tag\n   */\n  dbStatementSerializer?: DbStatementSerializer;\n}\n\nexport type Func = (...args: unknown[]) => T;\nexport type MongoInternalCommand = {\n  findandmodify: boolean;\n  createIndexes: boolean;\n  count: boolean;\n  aggregate: boolean;\n  ismaster: boolean;\n  indexes?: unknown[];\n  query?: Record;\n  limit?: number;\n  q?: Record;\n  u?: Record;\n};\n\nexport type ServerSession = {\n  id: any;\n  lastUse: number;\n  txnNumber: number;\n  isDirty: boolean;\n};\n\nexport type CursorState = { cmd: MongoInternalCommand } & Record<\n  string,\n  unknown\n>;\n\nexport interface MongoResponseHookInformation {\n  data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n  result?: unknown;\n  connection?: unknown;\n  message?: unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/wireprotocol/index.js\nexport type WireProtocolInternal = {\n  insert: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  update: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  remove: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  killCursors: (\n    server: MongoInternalTopology,\n    ns: string,\n    cursorState: CursorState,\n    callback: Function\n  ) => unknown;\n  getMore: (\n    server: MongoInternalTopology,\n    ns: string,\n    cursorState: CursorState,\n    batchSize: number,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  query: (\n    server: MongoInternalTopology,\n    ns: string,\n    cmd: MongoInternalCommand,\n    cursorState: CursorState,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  command: (\n    server: MongoInternalTopology,\n    ns: string,\n    cmd: MongoInternalCommand,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/topologies/server.js#L172\n// https://github.com/mongodb/node-mongodb-native/blob/2.2/lib/server.js#L174\nexport type MongoInternalTopology = {\n  s?: {\n    // those are for mongodb@3\n    options?: {\n      host?: string;\n      port?: number;\n      servername?: string;\n    };\n    // those are for mongodb@2\n    host?: string;\n    port?: number;\n  };\n  // mongodb@3 with useUnifiedTopology option\n  description?: {\n    address?: string;\n  };\n};\n\nexport enum MongodbCommandType {\n  CREATE_INDEXES = 'createIndexes',\n  FIND_AND_MODIFY = 'findAndModify',\n  IS_MASTER = 'isMaster',\n  COUNT = 'count',\n  AGGREGATE = 'aggregate',\n  UNKNOWN = 'unknown',\n}\n\n// https://github.com/mongodb/js-bson/blob/main/src/bson.ts\nexport type Document = {\n  [key: string]: any;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/utils.ts#L281\nexport interface MongodbNamespace {\n  db: string;\n  collection?: string;\n}\n\nexport type V4Connection = {\n  command: Function;\n  // From version 6.4.0 the method does not expect a callback and returns a promise\n  // https://github.com/mongodb/node-mongodb-native/blob/v6.4.2/src/cmap/connection.ts\n  commandPromise(\n    ns: MongodbNamespace,\n    cmd: Document,\n    options: undefined | unknown,\n    // From v6.6.0 we have this new param which is a constructor function\n    // https://github.com/mongodb/node-mongodb-native/blob/v6.6.0/src/cmap/connection.ts#L588\n    responseType: undefined | unknown\n  ): Promise;\n  // Earlier versions expect a callback param and return void\n  // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection.ts\n  commandCallback(\n    ns: MongodbNamespace,\n    cmd: Document,\n    options: undefined | unknown,\n    callback: any\n  ): void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection_pool.ts\nexport type V4ConnectionPool = {\n  // Instrumentation just cares about carrying the async context so\n  // types of callback params are not needed\n  checkOut: (callback: (error: any, connection: any) => void) => void;\n};\n\nexport type V4Connect = {\n  connect: Function;\n  // From version 6.4.0 the method does not expect a callback and returns a promise\n  // https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/cmap/connect.ts\n  connectPromise: (options: any) => Promise;\n  // Earlier versions expect a callback param and return void\n  // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connect.ts\n  connectCallback: (options: any, callback: any) => void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/sessions.ts\nexport type V4Session = {\n  acquire: () => ServerSession;\n  release: (session: ServerSession) => void;\n};\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#replacer\n */\nexport type Replacer = (key: string, value: unknown) => unknown;\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.67.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mongodb';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  context,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  UpDownCounter,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_MONGODB_COLLECTION,\n  ATTR_DB_NAME,\n  ATTR_DB_OPERATION,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_NAME_VALUE_MONGODB,\n  DB_SYSTEM_VALUE_MONGODB,\n  METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport { MongoDBInstrumentationConfig, CommandResult } from './types';\nimport {\n  CursorState,\n  ServerSession,\n  MongodbCommandType,\n  MongoInternalCommand,\n  MongodbNamespace,\n  MongoInternalTopology,\n  WireProtocolInternal,\n  V4Connection,\n  V4ConnectionPool,\n  Replacer,\n} from './internal-types';\nimport { V4Connect, V4Session } from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst DEFAULT_CONFIG: MongoDBInstrumentationConfig = {\n  requireParentSpan: true,\n};\n\n/** mongodb instrumentation plugin for OpenTelemetry */\nexport class MongoDBInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n  declare private _connectionsUsage: UpDownCounter;\n  declare private _poolName: string;\n\n  constructor(config: MongoDBInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: MongoDBInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  override _updateMetricInstruments() {\n    this._connectionsUsage = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  /**\n   * Convenience function for updating the `db.client.connections.usage` metric.\n   * The name \"count\" comes from the eventual replacement for this metric per\n   * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n   */\n  private _connCountAdd(n: number, poolName: string, state: string) {\n    this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n  }\n\n  init() {\n    const {\n      v3PatchConnection: v3PatchConnection,\n      v3UnpatchConnection: v3UnpatchConnection,\n    } = this._getV3ConnectionPatches();\n\n    const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n    const {\n      v4PatchConnectionCallback,\n      v4PatchConnectionPromise,\n      v4UnpatchConnection,\n    } = this._getV4ConnectionPatches();\n    const { v4PatchConnectionPool, v4UnpatchConnectionPool } =\n      this._getV4ConnectionPoolPatches();\n    const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mongodb',\n        ['>=3.3.0 <4'],\n        undefined,\n        undefined,\n        [\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/core/wireprotocol/index.js',\n            ['>=3.3.0 <4'],\n            v3PatchConnection,\n            v3UnpatchConnection\n          ),\n        ]\n      ),\n      new InstrumentationNodeModuleDefinition(\n        'mongodb',\n        ['>=4.0.0 <8'],\n        undefined,\n        undefined,\n        [\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection.js',\n            ['>=4.0.0 <6.4'],\n            v4PatchConnectionCallback,\n            v4UnpatchConnection\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection.js',\n            ['>=6.4.0 <8'],\n            v4PatchConnectionPromise,\n            v4UnpatchConnection\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection_pool.js',\n            ['>=4.0.0 <6.4'],\n            v4PatchConnectionPool,\n            v4UnpatchConnectionPool\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connect.js',\n            ['>=4.0.0 <8'],\n            v4PatchConnect,\n            v4UnpatchConnect\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/sessions.js',\n            ['>=4.0.0 <8'],\n            v4PatchSessions,\n            v4UnpatchSessions\n          ),\n        ]\n      ),\n    ];\n  }\n\n  private _getV3ConnectionPatches() {\n    return {\n      v3PatchConnection: (moduleExports: T) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.insert)) {\n          this._unwrap(moduleExports, 'insert');\n        }\n        this._wrap(\n          moduleExports,\n          'insert',\n          this._getV3PatchOperation('insert')\n        );\n        // patch remove operation\n        if (isWrapped(moduleExports.remove)) {\n          this._unwrap(moduleExports, 'remove');\n        }\n        this._wrap(\n          moduleExports,\n          'remove',\n          this._getV3PatchOperation('remove')\n        );\n        // patch update operation\n        if (isWrapped(moduleExports.update)) {\n          this._unwrap(moduleExports, 'update');\n        }\n        this._wrap(\n          moduleExports,\n          'update',\n          this._getV3PatchOperation('update')\n        );\n        // patch other command\n        if (isWrapped(moduleExports.command)) {\n          this._unwrap(moduleExports, 'command');\n        }\n        this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n        // patch query\n        if (isWrapped(moduleExports.query)) {\n          this._unwrap(moduleExports, 'query');\n        }\n        this._wrap(moduleExports, 'query', this._getV3PatchFind());\n        // patch get more operation on cursor\n        if (isWrapped(moduleExports.getMore)) {\n          this._unwrap(moduleExports, 'getMore');\n        }\n        this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n        return moduleExports;\n      },\n      v3UnpatchConnection: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n        this._unwrap(moduleExports, 'insert');\n        this._unwrap(moduleExports, 'remove');\n        this._unwrap(moduleExports, 'update');\n        this._unwrap(moduleExports, 'command');\n        this._unwrap(moduleExports, 'query');\n        this._unwrap(moduleExports, 'getMore');\n      },\n    };\n  }\n\n  private _getV4SessionsPatches() {\n    return {\n      v4PatchSessions: (moduleExports: any) => {\n        if (isWrapped(moduleExports.acquire)) {\n          this._unwrap(moduleExports, 'acquire');\n        }\n        this._wrap(\n          moduleExports.ServerSessionPool.prototype,\n          'acquire',\n          this._getV4AcquireCommand()\n        );\n\n        if (isWrapped(moduleExports.release)) {\n          this._unwrap(moduleExports, 'release');\n        }\n        this._wrap(\n          moduleExports.ServerSessionPool.prototype,\n          'release',\n          this._getV4ReleaseCommand()\n        );\n        return moduleExports;\n      },\n      v4UnpatchSessions: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n        if (isWrapped(moduleExports.acquire)) {\n          this._unwrap(moduleExports, 'acquire');\n        }\n        if (isWrapped(moduleExports.release)) {\n          this._unwrap(moduleExports, 'release');\n        }\n      },\n    };\n  }\n\n  private _getV4AcquireCommand() {\n    const instrumentation = this;\n    return (original: V4Session['acquire']) => {\n      return function patchAcquire(this: any) {\n        const nSessionsBeforeAcquire = this.sessions.length;\n        const session = original.call(this);\n        const nSessionsAfterAcquire = this.sessions.length;\n\n        if (nSessionsBeforeAcquire === nSessionsAfterAcquire) {\n          //no session in the pool. a new session was created and used\n          instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n        } else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) {\n          //a session was already in the pool. remove it from the pool and use it.\n          instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n          instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n        }\n        return session;\n      };\n    };\n  }\n\n  private _getV4ReleaseCommand() {\n    const instrumentation = this;\n    return (original: V4Session['release']) => {\n      return function patchRelease(this: any, session: ServerSession) {\n        const cmdPromise = original.call(this, session);\n\n        instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n        instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n        return cmdPromise;\n      };\n    };\n  }\n\n  private _getV4ConnectionPoolPatches() {\n    return {\n      v4PatchConnectionPool: (moduleExports: any) => {\n        const poolPrototype = moduleExports.ConnectionPool.prototype;\n\n        if (isWrapped(poolPrototype.checkOut)) {\n          this._unwrap(poolPrototype, 'checkOut');\n        }\n\n        this._wrap(\n          poolPrototype,\n          'checkOut',\n          this._getV4ConnectionPoolCheckOut()\n        );\n        return moduleExports;\n      },\n      v4UnpatchConnectionPool: (moduleExports?: any) => {\n        if (moduleExports === undefined) return;\n\n        this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n      },\n    };\n  }\n\n  private _getV4ConnectPatches() {\n    return {\n      v4PatchConnect: (moduleExports: any) => {\n        if (isWrapped(moduleExports.connect)) {\n          this._unwrap(moduleExports, 'connect');\n        }\n\n        this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n        return moduleExports;\n      },\n      v4UnpatchConnect: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n\n        this._unwrap(moduleExports, 'connect');\n      },\n    };\n  }\n\n  // This patch will become unnecessary once\n  // https://jira.mongodb.org/browse/NODE-5639 is done.\n  private _getV4ConnectionPoolCheckOut() {\n    return (original: V4ConnectionPool['checkOut']) => {\n      return function patchedCheckout(this: unknown, callback: any) {\n        const patchedCallback = context.bind(context.active(), callback);\n        return original.call(this, patchedCallback);\n      };\n    };\n  }\n\n  private _getV4ConnectCommand() {\n    const instrumentation = this;\n\n    return (\n      original: V4Connect['connectCallback'] | V4Connect['connectPromise']\n    ) => {\n      return function patchedConnect(\n        this: unknown,\n        options: any,\n        callback: any\n      ) {\n        // from v6.4 `connect` method only accepts an options param and returns a promise\n        // with the connection\n        if (original.length === 1) {\n          const result = (original as V4Connect['connectPromise']).call(\n            this,\n            options\n          );\n          if (result && typeof result.then === 'function') {\n            result.then(\n              () => instrumentation.setPoolName(options),\n              // this handler is set to pass the lint rules\n              () => undefined\n            );\n          }\n          return result;\n        }\n\n        // Earlier versions expects a callback param and return void\n        const patchedCallback = function (err: any, conn: any) {\n          if (err || !conn) {\n            callback(err, conn);\n            return;\n          }\n          instrumentation.setPoolName(options);\n          callback(err, conn);\n        };\n\n        return (original as V4Connect['connectCallback']).call(\n          this,\n          options,\n          patchedCallback\n        );\n      };\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  private _getV4ConnectionPatches() {\n    return {\n      v4PatchConnectionCallback: (moduleExports: any) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.Connection.prototype.command)) {\n          this._unwrap(moduleExports.Connection.prototype, 'command');\n        }\n\n        this._wrap(\n          moduleExports.Connection.prototype,\n          'command',\n          this._getV4PatchCommandCallback()\n        );\n        return moduleExports;\n      },\n      v4PatchConnectionPromise: (moduleExports: any) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.Connection.prototype.command)) {\n          this._unwrap(moduleExports.Connection.prototype, 'command');\n        }\n\n        this._wrap(\n          moduleExports.Connection.prototype,\n          'command',\n          this._getV4PatchCommandPromise()\n        );\n        return moduleExports;\n      },\n      v4UnpatchConnection: (moduleExports?: any) => {\n        if (moduleExports === undefined) return;\n        this._unwrap(moduleExports.Connection.prototype, 'command');\n      },\n    };\n  }\n\n  /** Creates spans for common operations */\n  private _getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n    const instrumentation = this;\n    return (original: WireProtocolInternal[typeof operationName]) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        ops: unknown[],\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof ops !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, ops, options);\n          } else {\n            return original.call(this, server, ns, ops, options, callback);\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          ops[0] as any,\n          operationName\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(this, server, ns, ops, patchedCallback);\n        } else {\n          return original.call(this, server, ns, ops, options, patchedCallback);\n        }\n      };\n    };\n  }\n\n  /** Creates spans for command operation */\n  private _getV3PatchCommand() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['command']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cmd: MongoInternalCommand,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof cmd !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, cmd, options);\n          } else {\n            return original.call(this, server, ns, cmd, options, callback);\n          }\n        }\n\n        const commandType = MongoDBInstrumentation._getCommandType(cmd);\n        const operationName =\n          commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cmd,\n          operationName\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(this, server, ns, cmd, patchedCallback);\n        } else {\n          return original.call(this, server, ns, cmd, options, patchedCallback);\n        }\n      };\n    };\n  }\n\n  /** Creates spans for command operation */\n  private _getV4PatchCommandCallback() {\n    const instrumentation = this;\n    return (original: V4Connection['commandCallback']) => {\n      return function patchedV4ServerCommand(\n        this: any,\n        ns: MongodbNamespace,\n        cmd: any,\n        options: undefined | unknown,\n        callback: any\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n        const resultHandler = callback;\n        const commandType = Object.keys(cmd)[0];\n\n        if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n          return original.call(this, ns, cmd, options, callback);\n        }\n\n        let span = undefined;\n        if (!skipInstrumentation) {\n          const attributes = instrumentation._getV4SpanAttributes(\n            this,\n            ns,\n            cmd,\n            commandType\n          );\n          const spanName = instrumentation._spanNameFromAttrs(attributes);\n          span = instrumentation.tracer.startSpan(spanName, {\n            kind: SpanKind.CLIENT,\n            attributes,\n          });\n        }\n        const patchedCallback = instrumentation._patchEnd(\n          span,\n          resultHandler,\n          this.id,\n          commandType\n        );\n\n        return original.call(this, ns, cmd, options, patchedCallback);\n      };\n    };\n  }\n\n  private _getV4PatchCommandPromise() {\n    const instrumentation = this;\n    return (original: V4Connection['commandPromise']) => {\n      return function patchedV4ServerCommand(\n        this: any,\n        ...args: Parameters\n      ) {\n        const [ns, cmd] = args;\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const commandType = Object.keys(cmd)[0];\n        const resultHandler = () => undefined;\n\n        if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n          return original.apply(this, args);\n        }\n\n        let span = undefined;\n        if (!skipInstrumentation) {\n          const attributes = instrumentation._getV4SpanAttributes(\n            this,\n            ns,\n            cmd,\n            commandType\n          );\n          const spanName = instrumentation._spanNameFromAttrs(attributes);\n          span = instrumentation.tracer.startSpan(spanName, {\n            kind: SpanKind.CLIENT,\n            attributes,\n          });\n        }\n\n        const patchedCallback = instrumentation._patchEnd(\n          span,\n          resultHandler,\n          this.id,\n          commandType\n        );\n\n        const result = original.apply(this, args);\n        result.then(\n          (res: any) => patchedCallback(null, res),\n          (err: any) => patchedCallback(err)\n        );\n\n        return result;\n      };\n    };\n  }\n\n  /** Creates spans for find operation */\n  private _getV3PatchFind() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['query']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cmd: MongoInternalCommand,\n        cursorState: CursorState,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof cmd !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, cmd, cursorState, options);\n          } else {\n            return original.call(\n              this,\n              server,\n              ns,\n              cmd,\n              cursorState,\n              options,\n              callback\n            );\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cmd,\n          'find'\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(\n            this,\n            server,\n            ns,\n            cmd,\n            cursorState,\n            patchedCallback\n          );\n        } else {\n          return original.call(\n            this,\n            server,\n            ns,\n            cmd,\n            cursorState,\n            options,\n            patchedCallback\n          );\n        }\n      };\n    };\n  }\n\n  /** Creates spans for find operation */\n  private _getV3PatchCursor() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['getMore']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cursorState: CursorState,\n        batchSize: number,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (skipInstrumentation || typeof resultHandler !== 'function') {\n          if (typeof options === 'function') {\n            return original.call(\n              this,\n              server,\n              ns,\n              cursorState,\n              batchSize,\n              options\n            );\n          } else {\n            return original.call(\n              this,\n              server,\n              ns,\n              cursorState,\n              batchSize,\n              options,\n              callback\n            );\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cursorState.cmd,\n          'getMore'\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(\n            this,\n            server,\n            ns,\n            cursorState,\n            batchSize,\n            patchedCallback\n          );\n        } else {\n          return original.call(\n            this,\n            server,\n            ns,\n            cursorState,\n            batchSize,\n            options,\n            patchedCallback\n          );\n        }\n      };\n    };\n  }\n\n  /**\n   * Get the mongodb command type from the object.\n   * @param command Internal mongodb command object\n   */\n  private static _getCommandType(\n    command: MongoInternalCommand\n  ): MongodbCommandType {\n    if (command.createIndexes !== undefined) {\n      return MongodbCommandType.CREATE_INDEXES;\n    } else if (command.findandmodify !== undefined) {\n      return MongodbCommandType.FIND_AND_MODIFY;\n    } else if (command.ismaster !== undefined) {\n      return MongodbCommandType.IS_MASTER;\n    } else if (command.count !== undefined) {\n      return MongodbCommandType.COUNT;\n    } else if (command.aggregate !== undefined) {\n      return MongodbCommandType.AGGREGATE;\n    } else {\n      return MongodbCommandType.UNKNOWN;\n    }\n  }\n\n  /**\n   * Determine a span's attributes by fetching related metadata from the context\n   * @param connectionCtx mongodb internal connection context\n   * @param ns mongodb namespace\n   * @param command mongodb internal representation of a command\n   */\n  private _getV4SpanAttributes(\n    connectionCtx: any,\n    ns: MongodbNamespace,\n    command?: any,\n    operation?: string\n  ): Attributes {\n    let host, port: undefined | string;\n    if (connectionCtx) {\n      const hostParts =\n        typeof connectionCtx.address === 'string'\n          ? connectionCtx.address.split(':')\n          : '';\n      if (hostParts.length === 2) {\n        host = hostParts[0];\n        port = hostParts[1];\n      }\n    }\n    // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n    let commandObj: Record;\n    if (command?.documents && command.documents[0]) {\n      commandObj = command.documents[0];\n    } else if (command?.cursors) {\n      commandObj = command.cursors;\n    } else {\n      commandObj = command;\n    }\n\n    return this._getSpanAttributes(\n      ns.db,\n      ns.collection,\n      host,\n      port,\n      commandObj,\n      operation\n    );\n  }\n\n  /**\n   * Determine a span's attributes by fetching related metadata from the context\n   * @param ns mongodb namespace\n   * @param topology mongodb internal representation of the network topology\n   * @param command mongodb internal representation of a command\n   */\n  private _getV3SpanAttributes(\n    ns: string,\n    topology: MongoInternalTopology,\n    command?: MongoInternalCommand,\n    operation?: string | undefined\n  ): Attributes {\n    // Extract host/port info.\n    let host: undefined | string;\n    let port: undefined | string;\n    if (topology && topology.s) {\n      host = topology.s.options?.host ?? topology.s.host;\n      port = (topology.s.options?.port ?? topology.s.port)?.toString();\n      if (host == null || port == null) {\n        const address = topology.description?.address;\n        if (address) {\n          const addressSegments = address.split(':');\n          host = addressSegments[0];\n          port = addressSegments[1];\n        }\n      }\n    }\n\n    // The namespace is a combination of the database name and the name of the\n    // collection or index, like so: [database-name].[collection-or-index-name].\n    // It could be a string or an instance of MongoDBNamespace, as such we\n    // always coerce to a string to extract db and collection.\n    const [dbName, dbCollection] = ns.toString().split('.');\n    // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n    const commandObj = command?.query ?? command?.q ?? command;\n\n    return this._getSpanAttributes(\n      dbName,\n      dbCollection,\n      host,\n      port,\n      commandObj,\n      operation\n    );\n  }\n\n  private _getSpanAttributes(\n    dbName?: string,\n    dbCollection?: string,\n    host?: undefined | string,\n    port?: undefined | string,\n    commandObj?: any,\n    operation?: string | undefined\n  ): Attributes {\n    const attributes: Attributes = {};\n\n    if (this._dbSemconvStability & SemconvStability.OLD) {\n      attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MONGODB;\n      attributes[ATTR_DB_NAME] = dbName;\n      attributes[ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n      attributes[ATTR_DB_OPERATION] = operation;\n      attributes[ATTR_DB_CONNECTION_STRING] =\n        `mongodb://${host}:${port}/${dbName}`;\n    }\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB;\n      attributes[ATTR_DB_NAMESPACE] = dbName;\n      attributes[ATTR_DB_OPERATION_NAME] = operation;\n      attributes[ATTR_DB_COLLECTION_NAME] = dbCollection;\n    }\n\n    if (host && port) {\n      if (this._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n      }\n      if (this._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n      }\n      const portNumber = parseInt(port, 10);\n      if (!isNaN(portNumber)) {\n        if (this._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_PORT] = portNumber;\n        }\n        if (this._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_PORT] = portNumber;\n        }\n      }\n    }\n\n    if (commandObj) {\n      const { dbStatementSerializer: configDbStatementSerializer } =\n        this.getConfig();\n      const dbStatementSerializer =\n        typeof configDbStatementSerializer === 'function'\n          ? configDbStatementSerializer\n          : this._defaultDbStatementSerializer.bind(this);\n\n      safeExecuteInTheMiddle(\n        () => {\n          const query = dbStatementSerializer(commandObj);\n          if (this._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = query;\n          }\n          if (this._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = query;\n          }\n        },\n        err => {\n          if (err) {\n            this._diag.error('Error running dbStatementSerializer hook', err);\n          }\n        },\n        true\n      );\n    }\n\n    return attributes;\n  }\n\n  private _spanNameFromAttrs(attributes: Attributes): string {\n    let spanName;\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n      spanName =\n        [\n          attributes[ATTR_DB_OPERATION_NAME],\n          attributes[ATTR_DB_COLLECTION_NAME],\n        ]\n          .filter(attr => attr)\n          .join(' ') || DB_SYSTEM_NAME_VALUE_MONGODB;\n    } else {\n      spanName = `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`;\n    }\n    return spanName;\n  }\n\n  private _getDefaultDbStatementReplacer(): Replacer {\n    const seen = new WeakSet();\n    return (_key, value) => {\n      // undefined, boolean, number, bigint, string, symbol, function || null\n      if (typeof value !== 'object' || !value) return '?';\n\n      // objects (including arrays)\n      if (seen.has(value)) return '[Circular]';\n      seen.add(value);\n      return value;\n    };\n  }\n\n  private _defaultDbStatementSerializer(commandObj: Record) {\n    const { enhancedDatabaseReporting } = this.getConfig();\n\n    if (enhancedDatabaseReporting) {\n      return JSON.stringify(commandObj);\n    }\n\n    return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n  }\n\n  /**\n   * Triggers the response hook in case it is defined.\n   * @param span The span to add the results to.\n   * @param result The command result\n   */\n  private _handleExecutionResult(span: Span, result: CommandResult) {\n    const { responseHook } = this.getConfig();\n    if (typeof responseHook === 'function') {\n      safeExecuteInTheMiddle(\n        () => {\n          responseHook(span, { data: result });\n        },\n        err => {\n          if (err) {\n            this._diag.error('Error running response hook', err);\n          }\n        },\n        true\n      );\n    }\n  }\n\n  /**\n   * Ends a created span.\n   * @param span The created span to end.\n   * @param resultHandler A callback function.\n   * @param connectionId: The connection ID of the Command response.\n   */\n  private _patchEnd(\n    span: Span | undefined,\n    resultHandler: Function,\n    connectionId?: number,\n    commandType?: string\n  ): Function {\n    // mongodb is using \"tick\" when calling a callback, this way the context\n    // in final callback (resultHandler) is lost\n    const activeContext = context.active();\n    const instrumentation = this;\n    let spanEnded = false;\n\n    return function patchedEnd(this: {}, ...args: unknown[]) {\n      if (!spanEnded) {\n        spanEnded = true;\n        const error = args[0];\n        if (span) {\n          if (error instanceof Error) {\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } else {\n            const result = args[1] as CommandResult;\n            instrumentation._handleExecutionResult(span, result);\n          }\n          span.end();\n        }\n\n        if (commandType === 'endSessions') {\n          instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n        }\n      }\n\n      return context.with(activeContext, () => {\n        return resultHandler.apply(this, args);\n      });\n    };\n  }\n  private setPoolName(options: any) {\n    const host = options.hostAddress?.host;\n    const port = options.hostAddress?.port;\n    const database = options.dbName;\n    const poolName = `mongodb://${host}:${port}/${database}`;\n    this._poolName = poolName;\n  }\n\n  private _checkSkipInstrumentation(currentSpan: Span | undefined) {\n    const requireParentSpan = this.getConfig().requireParentSpan;\n    const hasNoParentSpan = currentSpan === undefined;\n    return requireParentSpan === true && hasNoParentSpan;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n  (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n  /**\n   * If true, additional information about query parameters and\n   * results will be attached (as `attributes`) to spans representing\n   * database operations.\n   */\n  enhancedDatabaseReporting?: boolean;\n\n  /**\n   * Hook that allows adding custom span attributes based on the data\n   * returned from MongoDB actions.\n   *\n   * @default undefined\n   */\n  responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n  /**\n   * Custom serializer function for the db.statement tag\n   */\n  dbStatementSerializer?: DbStatementSerializer;\n\n  /**\n   * Require parent to create mongodb span, default when unset is true\n   */\n  requireParentSpan?: boolean;\n}\n\nexport interface MongoResponseHookInformation {\n  data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n  result?: unknown;\n  connection?: unknown;\n  message?: unknown;\n};\n\nexport enum MongodbCommandType {\n  CREATE_INDEXES = 'createIndexes',\n  FIND_AND_MODIFY = 'findAndModify',\n  IS_MASTER = 'isMaster',\n  COUNT = 'count',\n  UNKNOWN = 'unknown',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MongoDBInstrumentation } from './instrumentation';\nexport { MongodbCommandType } from './types';\nexport type {\n  CommandResult,\n  DbStatementSerializer,\n  MongoDBInstrumentationConfig,\n  MongoDBInstrumentationExecutionResponseHook,\n  MongoResponseHookInformation,\n} from './types';\n","import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongo';\n\nexport const instrumentMongo = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MongoDBInstrumentation({\n      dbStatementSerializer: _defaultDbStatementSerializer,\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mongo');\n      },\n    }),\n);\n\n/**\n * Replaces values in document with '?', hiding PII and helping grouping.\n */\nexport function _defaultDbStatementSerializer(commandObj: Record): string {\n  const resultObj = _scrubStatement(commandObj);\n  return JSON.stringify(resultObj);\n}\n\nfunction _scrubStatement(value: unknown): unknown {\n  if (Array.isArray(value)) {\n    return value.map(element => _scrubStatement(element));\n  }\n\n  if (isCommandObj(value)) {\n    const initial: Record = {};\n    return Object.entries(value)\n      .map(([key, element]) => [key, _scrubStatement(element)])\n      .reduce((prev, current) => {\n        if (isCommandEntry(current)) {\n          prev[current[0]] = current[1];\n        }\n        return prev;\n      }, initial);\n  }\n\n  // A value like string or number, possible contains PII, scrub it\n  return '?';\n}\n\nfunction isCommandObj(value: Record | unknown): value is Record {\n  return typeof value === 'object' && value !== null && !isBuffer(value);\n}\n\nfunction isBuffer(value: unknown): boolean {\n  let isBuffer = false;\n  if (typeof Buffer !== 'undefined') {\n    isBuffer = Buffer.isBuffer(value);\n  }\n  return isBuffer;\n}\n\nfunction isCommandEntry(value: [string, unknown] | unknown): value is [string, unknown] {\n  return Array.isArray(value);\n}\n\nconst _mongoIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMongo();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongodb](https://www.npmjs.com/package/mongodb) library.\n *\n * For more information, see the [`mongoIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongo/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mongoIntegration()],\n * });\n * ```\n */\nexport const mongoIntegration = defineIntegration(_mongoIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Attributes, SpanStatusCode, diag, Span } from '@opentelemetry/api';\nimport type { Collection } from 'mongoose';\nimport { MongooseResponseCustomAttributesFunction } from './types';\nimport {\n  safeExecuteInTheMiddle,\n  SemconvStability,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_MONGODB_COLLECTION,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\n\nexport function getAttributesFromCollection(\n  collection: Collection,\n  dbSemconvStability: SemconvStability,\n  netSemconvStability: SemconvStability\n): Attributes {\n  const attrs: Attributes = {};\n\n  if (dbSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_DB_MONGODB_COLLECTION] = collection.name;\n    attrs[ATTR_DB_NAME] = collection.conn.name;\n    attrs[ATTR_DB_USER] = collection.conn.user;\n  }\n  if (dbSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_DB_COLLECTION_NAME] = collection.name;\n    attrs[ATTR_DB_NAMESPACE] = collection.conn.name;\n    // db.user has no stable replacement\n  }\n\n  if (netSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_NET_PEER_NAME] = collection.conn.host;\n    attrs[ATTR_NET_PEER_PORT] = collection.conn.port;\n  }\n  if (netSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_SERVER_ADDRESS] = collection.conn.host;\n    attrs[ATTR_SERVER_PORT] = collection.conn.port;\n  }\n\n  return attrs;\n}\n\nfunction setErrorStatus(span: Span, error: any = {}) {\n  span.recordException(error);\n\n  span.setStatus({\n    code: SpanStatusCode.ERROR,\n    message: `${error.message} ${\n      error.code ? `\\nMongoose Error Code: ${error.code}` : ''\n    }`,\n  });\n}\n\nfunction applyResponseHook(\n  span: Span,\n  response: any,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n) {\n  if (!responseHook) {\n    return;\n  }\n\n  safeExecuteInTheMiddle(\n    () => responseHook(span, { moduleVersion, response }),\n    e => {\n      if (e) {\n        diag.error('mongoose instrumentation: responseHook error', e);\n      }\n    },\n    true\n  );\n}\n\nexport function handlePromiseResponse(\n  execResponse: any,\n  span: Span,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n): any {\n  if (!(execResponse instanceof Promise)) {\n    applyResponseHook(span, execResponse, responseHook, moduleVersion);\n    span.end();\n    return execResponse;\n  }\n\n  return execResponse\n    .then(response => {\n      applyResponseHook(span, response, responseHook, moduleVersion);\n      return response;\n    })\n    .catch(err => {\n      setErrorStatus(span, err);\n      throw err;\n    })\n    .finally(() => span.end());\n}\n\nexport function handleCallbackResponse(\n  callback: Function,\n  exec: Function,\n  originalThis: any,\n  span: Span,\n  args: IArguments,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n) {\n  let callbackArgumentIndex = 0;\n  if (args.length === 2) {\n    callbackArgumentIndex = 1;\n  } else if (args.length === 3) {\n    callbackArgumentIndex = 2;\n  }\n\n  args[callbackArgumentIndex] = (err: Error, response: any): any => {\n    if (err) {\n      setErrorStatus(span, err);\n    } else {\n      applyResponseHook(span, response, responseHook, moduleVersion);\n    }\n\n    span.end();\n    return callback!(err, response);\n  };\n\n  return exec.apply(originalThis, args);\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { context, Span, trace, Attributes, SpanKind } from '@opentelemetry/api';\nimport { suppressTracing } from '@opentelemetry/core';\nimport type * as mongoose from 'mongoose';\nimport { MongooseInstrumentationConfig, SerializerPayload } from './types';\nimport {\n  handleCallbackResponse,\n  handlePromiseResponse,\n  getAttributesFromCollection,\n} from './utils';\nimport {\n  InstrumentationBase,\n  InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  ATTR_DB_OPERATION,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  DB_SYSTEM_NAME_VALUE_MONGODB,\n} from './semconv';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n} from '@opentelemetry/semantic-conventions';\n\nconst contextCaptureFunctionsCommon = [\n  'deleteOne',\n  'deleteMany',\n  'find',\n  'findOne',\n  'estimatedDocumentCount',\n  'countDocuments',\n  'distinct',\n  'where',\n  '$where',\n  'findOneAndUpdate',\n  'findOneAndDelete',\n  'findOneAndReplace',\n];\n\nconst contextCaptureFunctions6 = [\n  'remove',\n  'count',\n  'findOneAndRemove',\n  ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions7 = [\n  'count',\n  'findOneAndRemove',\n  ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\n\nfunction getContextCaptureFunctions(\n  moduleVersion: string | undefined\n): string[] {\n  /* istanbul ignore next */\n  if (!moduleVersion) {\n    return contextCaptureFunctionsCommon;\n  } else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n    return contextCaptureFunctions6;\n  } else if (moduleVersion.startsWith('7.')) {\n    return contextCaptureFunctions7;\n  } else {\n    return contextCaptureFunctions8;\n  }\n}\n\nfunction instrumentRemove(moduleVersion: string | undefined): boolean {\n  return (\n    (moduleVersion &&\n      (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) ||\n    false\n  );\n}\n\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion: string | undefined): boolean {\n  if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n    return false;\n  }\n\n  const minor = parseInt(moduleVersion.split('.')[1], 10);\n  return minor >= 21;\n}\n\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexport const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span');\n\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexport const _ALREADY_INSTRUMENTED: unique symbol = Symbol(\n  'already-instrumented'\n);\n\nexport class MongooseInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: MongooseInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      'mongoose',\n      ['>=5.9.7 <10'],\n      this.patch.bind(this),\n      this.unpatch.bind(this)\n    );\n    return module;\n  }\n\n  private patch(module: any, moduleVersion: string | undefined) {\n    const moduleExports: typeof mongoose =\n      module[Symbol.toStringTag] === 'Module'\n        ? module.default // ESM\n        : module; // CommonJS\n\n    this._wrap(\n      moduleExports.Model.prototype,\n      'save',\n      this.patchOnModelMethods('save', moduleVersion)\n    );\n    // mongoose applies this code on module require:\n    // Model.prototype.$save = Model.prototype.save;\n    // which captures the save function before it is patched.\n    // so we need to apply the same logic after instrumenting the save function.\n    moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n    if (instrumentRemove(moduleVersion)) {\n      this._wrap(\n        moduleExports.Model.prototype,\n        'remove',\n        this.patchOnModelMethods('remove', moduleVersion)\n      );\n    }\n\n    // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n    //\n    // See https://github.com/Automattic/mongoose/blob/7dbda12dca1bd7adb9e270d7de8ac5229606ce72/lib/document.js#L861.\n    // - `this` is a Query object\n    // - the update happens in a pre-hook that gets called when Query.exec() is already running.\n    // - when we instrument Query.exec(), we don't have access to the options yet as they get set during Query.exec() only.\n    //\n    // Unfortunately, after Query.exec() is finished, the options are left modified by the library, so just delaying\n    // attaching the attributes after the span is done is not an option. Therefore, we patch Model methods\n    // and grab the data directly where the user provides it.\n    //\n    // ref: https://github.com/Automattic/mongoose/pull/15908 (introduced this behavior)\n    if (needsDocumentMethodPatch(moduleVersion)) {\n      this._wrap(\n        moduleExports.Model.prototype,\n        'updateOne',\n        this._patchDocumentUpdateMethods('updateOne', moduleVersion)\n      );\n      this._wrap(\n        moduleExports.Model.prototype,\n        'deleteOne',\n        this._patchDocumentUpdateMethods('deleteOne', moduleVersion)\n      );\n    }\n\n    this._wrap(\n      moduleExports.Query.prototype,\n      'exec',\n      this.patchQueryExec(moduleVersion)\n    );\n    this._wrap(\n      moduleExports.Aggregate.prototype,\n      'exec',\n      this.patchAggregateExec(moduleVersion)\n    );\n\n    const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n    contextCaptureFunctions.forEach((funcName: string) => {\n      this._wrap(\n        moduleExports.Query.prototype,\n        funcName as any,\n        this.patchAndCaptureSpanContext(funcName)\n      );\n    });\n    this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n\n    this._wrap(\n      moduleExports.Model,\n      'insertMany',\n      this.patchModelStatic('insertMany', moduleVersion)\n    );\n    this._wrap(\n      moduleExports.Model,\n      'bulkWrite',\n      this.patchModelStatic('bulkWrite', moduleVersion)\n    );\n\n    return moduleExports;\n  }\n\n  private unpatch(module: any, moduleVersion: string | undefined): void {\n    const moduleExports: typeof mongoose =\n      module[Symbol.toStringTag] === 'Module'\n        ? module.default // ESM\n        : module; // CommonJS\n\n    const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n    this._unwrap(moduleExports.Model.prototype, 'save');\n    // revert the patch for $save which we applied by aliasing it to patched `save`\n    moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n    if (instrumentRemove(moduleVersion)) {\n      this._unwrap(moduleExports.Model.prototype, 'remove');\n    }\n\n    if (needsDocumentMethodPatch(moduleVersion)) {\n      this._unwrap(moduleExports.Model.prototype, 'updateOne');\n      this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n    }\n\n    this._unwrap(moduleExports.Query.prototype, 'exec');\n    this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n\n    contextCaptureFunctions.forEach((funcName: string) => {\n      this._unwrap(moduleExports.Query.prototype, funcName as any);\n    });\n    this._unwrap(moduleExports.Model, 'aggregate');\n\n    this._unwrap(moduleExports.Model, 'insertMany');\n    this._unwrap(moduleExports.Model, 'bulkWrite');\n  }\n\n  private patchAggregateExec(moduleVersion: string | undefined) {\n    const self = this;\n    return (originalAggregate: Function) => {\n      return function exec(this: any, callback?: Function) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalAggregate.apply(this, arguments);\n        }\n\n        const parentSpan = this[_STORED_PARENT_SPAN];\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer('aggregate', {\n            options: this.options,\n            aggregatePipeline: this._pipeline,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this._model.collection,\n          this._model?.modelName,\n          'aggregate',\n          attributes,\n          parentSpan\n        );\n\n        return self._handleResponse(\n          span,\n          originalAggregate,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  private patchQueryExec(moduleVersion: string | undefined) {\n    const self = this;\n    return (originalExec: Function) => {\n      return function exec(this: any, callback?: Function) {\n        // Skip if already instrumented by document instance method patch\n        if (this[_ALREADY_INSTRUMENTED]) {\n          return originalExec.apply(this, arguments);\n        }\n\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalExec.apply(this, arguments);\n        }\n\n        const parentSpan = this[_STORED_PARENT_SPAN];\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(this.op, {\n            // Use public API methods (getFilter/getOptions) for better compatibility\n            condition: this.getFilter?.() ?? this._conditions,\n            updates: this._update,\n            options: this.getOptions?.() ?? this.options,\n            fields: this._fields,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n        const span = self._startSpan(\n          this.mongooseCollection,\n          this.model.modelName,\n          this.op,\n          attributes,\n          parentSpan\n        );\n\n        return self._handleResponse(\n          span,\n          originalExec,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  private patchOnModelMethods(op: string, moduleVersion: string | undefined) {\n    const self = this;\n    return (originalOnModelFunction: Function) => {\n      return function method(this: any, options?: any, callback?: Function) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalOnModelFunction.apply(this, arguments);\n        }\n\n        const serializePayload: SerializerPayload = { document: this };\n        if (options && !(options instanceof Function)) {\n          serializePayload.options = options;\n        }\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, serializePayload);\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n        const span = self._startSpan(\n          this.constructor.collection,\n          this.constructor.modelName,\n          op,\n          attributes\n        );\n\n        if (options instanceof Function) {\n          callback = options;\n          options = undefined;\n        }\n\n        return self._handleResponse(\n          span,\n          originalOnModelFunction,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n  private _patchDocumentUpdateMethods(\n    op: string,\n    moduleVersion: string | undefined\n  ) {\n    const self = this;\n    return (originalMethod: Function) => {\n      return function method(\n        this: any,\n        update?: any,\n        options?: any,\n        callback?: Function\n      ) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalMethod.apply(this, arguments);\n        }\n\n        // determine actual callback since different argument patterns are allowed\n        let actualCallback: Function | undefined = callback;\n        let actualUpdate = update;\n        let actualOptions = options;\n\n        if (typeof update === 'function') {\n          actualCallback = update;\n          actualUpdate = undefined;\n          actualOptions = undefined;\n        } else if (typeof options === 'function') {\n          actualCallback = options;\n          actualOptions = undefined;\n        }\n\n        const attributes: Attributes = {};\n        const dbStatementSerializer = self.getConfig().dbStatementSerializer;\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, {\n            // Document instance methods automatically use the document's _id as filter\n            condition: { _id: this._id },\n            updates: actualUpdate,\n            options: actualOptions,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this.constructor.collection,\n          this.constructor.modelName,\n          op,\n          attributes\n        );\n\n        const result = self._handleResponse(\n          span,\n          originalMethod,\n          this,\n          arguments,\n          actualCallback,\n          moduleVersion\n        );\n\n        // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n        if (result && typeof result === 'object') {\n          result[_ALREADY_INSTRUMENTED] = true;\n        }\n\n        return result;\n      };\n    };\n  }\n\n  private patchModelStatic(op: string, moduleVersion: string | undefined) {\n    const self = this;\n    return (original: Function) => {\n      return function patchedStatic(\n        this: any,\n        docsOrOps: any,\n        options?: any,\n        callback?: Function\n      ) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return original.apply(this, arguments);\n        }\n        if (typeof options === 'function') {\n          callback = options;\n          options = undefined;\n        }\n\n        const serializePayload: SerializerPayload = {};\n        switch (op) {\n          case 'insertMany':\n            serializePayload.documents = docsOrOps;\n            break;\n          case 'bulkWrite':\n            serializePayload.operations = docsOrOps;\n            break;\n          default:\n            serializePayload.document = docsOrOps;\n            break;\n        }\n        if (options !== undefined) {\n          serializePayload.options = options;\n        }\n\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, serializePayload);\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this.collection,\n          this.modelName,\n          op,\n          attributes\n        );\n\n        return self._handleResponse(\n          span,\n          original,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  // we want to capture the otel span on the object which is calling exec.\n  // in the special case of aggregate, we need have no function to path\n  // on the Aggregate object to capture the context on, so we patch\n  // the aggregate of Model, and set the context on the Aggregate object\n  private patchModelAggregate() {\n    const self = this;\n    return (original: Function) => {\n      return function captureSpanContext(this: any) {\n        const currentSpan = trace.getSpan(context.active());\n        const aggregate = self._callOriginalFunction(() =>\n          original.apply(this, arguments)\n        );\n        if (aggregate) aggregate[_STORED_PARENT_SPAN] = currentSpan;\n        return aggregate;\n      };\n    };\n  }\n\n  private patchAndCaptureSpanContext(funcName: string) {\n    const self = this;\n    return (original: Function) => {\n      return function captureSpanContext(this: any) {\n        this[_STORED_PARENT_SPAN] = trace.getSpan(context.active());\n        return self._callOriginalFunction(() =>\n          original.apply(this, arguments)\n        );\n      };\n    };\n  }\n\n  private _startSpan(\n    collection: mongoose.Collection,\n    modelName: string,\n    operation: string,\n    attributes: Attributes,\n    parentSpan?: Span\n  ): Span {\n    const finalAttributes: Attributes = {\n      ...attributes,\n      ...getAttributesFromCollection(\n        collection,\n        this._dbSemconvStability,\n        this._netSemconvStability\n      ),\n    };\n\n    if (this._dbSemconvStability & SemconvStability.OLD) {\n      finalAttributes[ATTR_DB_OPERATION] = operation;\n      finalAttributes[ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility\n    }\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      finalAttributes[ATTR_DB_OPERATION_NAME] = operation;\n      finalAttributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name\n    }\n\n    const spanName =\n      this._dbSemconvStability & SemconvStability.STABLE\n        ? `${operation} ${collection.name}`\n        : `mongoose.${modelName}.${operation}`;\n\n    return this.tracer.startSpan(\n      spanName,\n      {\n        kind: SpanKind.CLIENT,\n        attributes: finalAttributes,\n      },\n      parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined\n    );\n  }\n\n  private _handleResponse(\n    span: Span,\n    exec: Function,\n    originalThis: any,\n    args: IArguments,\n    callback?: Function,\n    moduleVersion: string | undefined = undefined\n  ) {\n    const self = this;\n    if (callback instanceof Function) {\n      return self._callOriginalFunction(() =>\n        handleCallbackResponse(\n          callback,\n          exec,\n          originalThis,\n          span,\n          args,\n          self.getConfig().responseHook,\n          moduleVersion\n        )\n      );\n    } else {\n      const response = self._callOriginalFunction(() =>\n        exec.apply(originalThis, args)\n      );\n      return handlePromiseResponse(\n        response,\n        span,\n        self.getConfig().responseHook,\n        moduleVersion\n      );\n    }\n  }\n\n  private _callOriginalFunction(originalFunction: (...args: any[]) => T): T {\n    if (this.getConfig().suppressInternalInstrumentation) {\n      return context.with(suppressTracing(context.active()), originalFunction);\n    } else {\n      return originalFunction();\n    }\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport { MongooseInstrumentation } from './mongoose';\nexport type {\n  DbStatementSerializer,\n  MongooseInstrumentationConfig,\n  MongooseResponseCustomAttributesFunction,\n  ResponseInfo,\n  SerializerPayload,\n} from './types';\n","import { MongooseInstrumentation } from '@opentelemetry/instrumentation-mongoose';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongoose';\n\nexport const instrumentMongoose = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MongooseInstrumentation({\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mongoose');\n      },\n    }),\n);\n\nconst _mongooseIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMongoose();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nexport const mongooseIntegration = defineIntegration(_mongooseIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE =\n  'db.client.connections.usage' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// Mysql specific attributes not covered by semantic conventions\nexport enum AttributeNames {\n  MYSQL_VALUES = 'db.mysql.values',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Pool, Query, QueryOptions } from 'mysql';\n\nexport function getConfig(config: any) {\n  const { host, port, database, user } =\n    (config && config.connectionConfig) || config || {};\n  return { host, port, database, user };\n}\n\nexport function getJDBCString(\n  host: string | undefined,\n  port: number | undefined,\n  database: string | undefined\n) {\n  let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n  if (typeof port === 'number') {\n    jdbcString += `:${port}`;\n  }\n\n  if (typeof database === 'string') {\n    jdbcString += `/${database}`;\n  }\n\n  return jdbcString;\n}\n\n/**\n * @returns the database query being executed.\n */\nexport function getDbQueryText(query: string | Query | QueryOptions): string {\n  if (typeof query === 'string') {\n    return query;\n  } else {\n    return query.sql;\n  }\n}\n\nexport function getDbValues(\n  query: string | Query | QueryOptions,\n  values?: any[]\n): string {\n  if (typeof query === 'string') {\n    return arrayStringifyHelper(values);\n  } else {\n    // According to https://github.com/mysqljs/mysql#performing-queries\n    // The values argument will override the values in the option object.\n    return arrayStringifyHelper(values || query.values);\n  }\n}\n\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nexport function getSpanName(query: string | Query | QueryOptions): string {\n  const rawQuery = typeof query === 'object' ? query.sql : query;\n  // Extract the SQL verb\n  const firstSpace = rawQuery?.indexOf(' ');\n  if (typeof firstSpace === 'number' && firstSpace !== -1) {\n    return rawQuery?.substring(0, firstSpace);\n  }\n  return rawQuery;\n}\n\nexport function arrayStringifyHelper(arr: Array | undefined): string {\n  if (arr) return `[${arr.toString()}]`;\n  return '';\n}\n\nexport function getPoolNameOld(pool: Pool): string {\n  const c = pool.config.connectionConfig;\n  let poolName = '';\n  poolName += c.host ? `host: '${c.host}', ` : '';\n  poolName += c.port ? `port: ${c.port}, ` : '';\n  poolName += c.database ? `database: '${c.database}', ` : '';\n  poolName += c.user ? `user: '${c.user}'` : '';\n  if (!c.user) {\n    poolName = poolName.substring(0, poolName.length - 2); //omit last comma\n  }\n  return poolName.trim();\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mysql';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  context,\n  Context,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_NAME,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_VALUE_MYSQL,\n  METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport type * as mysqlTypes from 'mysql';\nimport { AttributeNames } from './AttributeNames';\nimport { MySQLInstrumentationConfig } from './types';\nimport {\n  getConfig,\n  getDbQueryText,\n  getDbValues,\n  getJDBCString,\n  getSpanName,\n  getPoolNameOld,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { UpDownCounter } from '@opentelemetry/api';\n\ntype getConnectionCallbackType = (\n  err: mysqlTypes.MysqlError,\n  connection: mysqlTypes.PoolConnection\n) => void;\n\nexport class MySQLInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n  declare private _connectionsUsageOld: UpDownCounter;\n\n  constructor(config: MySQLInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected override _updateMetricInstruments() {\n    this._connectionsUsageOld = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  /**\n   * Convenience function for updating the `db.client.connections.usage` metric.\n   * The name \"count\" comes from the eventually replacement for this metric per\n   * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n   */\n  private _connCountAdd(n: number, poolNameOld: string, state: string) {\n    this._connectionsUsageOld?.add(n, { state, name: poolNameOld });\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mysql',\n        ['>=2.0.0 <3'],\n        (moduleExports: typeof mysqlTypes) => {\n          if (isWrapped(moduleExports.createConnection)) {\n            this._unwrap(moduleExports, 'createConnection');\n          }\n          this._wrap(\n            moduleExports,\n            'createConnection',\n            this._patchCreateConnection() as any\n          );\n\n          if (isWrapped(moduleExports.createPool)) {\n            this._unwrap(moduleExports, 'createPool');\n          }\n          this._wrap(\n            moduleExports,\n            'createPool',\n            this._patchCreatePool() as any\n          );\n\n          if (isWrapped(moduleExports.createPoolCluster)) {\n            this._unwrap(moduleExports, 'createPoolCluster');\n          }\n          this._wrap(\n            moduleExports,\n            'createPoolCluster',\n            this._patchCreatePoolCluster() as any\n          );\n\n          return moduleExports;\n        },\n        (moduleExports: typeof mysqlTypes) => {\n          if (moduleExports === undefined) return;\n          this._unwrap(moduleExports, 'createConnection');\n          this._unwrap(moduleExports, 'createPool');\n          this._unwrap(moduleExports, 'createPoolCluster');\n        }\n      ),\n    ];\n  }\n\n  // global export function\n  private _patchCreateConnection() {\n    return (originalCreateConnection: Function) => {\n      const thisPlugin = this;\n\n      return function createConnection(\n        _connectionUri: string | mysqlTypes.ConnectionConfig\n      ) {\n        const originalResult = originalCreateConnection(...arguments);\n\n        // This is unwrapped on next call after unpatch\n        thisPlugin._wrap(\n          originalResult,\n          'query',\n          thisPlugin._patchQuery(originalResult) as any\n        );\n\n        return originalResult;\n      };\n    };\n  }\n\n  // global export function\n  private _patchCreatePool() {\n    return (originalCreatePool: Function) => {\n      const thisPlugin = this;\n      return function createPool(_config: string | mysqlTypes.PoolConfig) {\n        const pool = originalCreatePool(...arguments);\n\n        thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n        thisPlugin._wrap(\n          pool,\n          'getConnection',\n          thisPlugin._patchGetConnection(pool)\n        );\n        thisPlugin._wrap(pool, 'end', thisPlugin._patchPoolEnd(pool));\n        thisPlugin._setPoolCallbacks(pool, '');\n\n        return pool;\n      };\n    };\n  }\n\n  private _patchPoolEnd(pool: any) {\n    return (originalPoolEnd: Function) => {\n      const thisPlugin = this;\n      return function end(callback?: unknown) {\n        const nAll = (pool as any)._allConnections.length;\n        const nFree = (pool as any)._freeConnections.length;\n        const nUsed = nAll - nFree;\n        const poolNameOld = getPoolNameOld(pool);\n        thisPlugin._connCountAdd(-nUsed, poolNameOld, 'used');\n        thisPlugin._connCountAdd(-nFree, poolNameOld, 'idle');\n        originalPoolEnd.apply(pool, arguments);\n      };\n    };\n  }\n\n  // global export function\n  private _patchCreatePoolCluster() {\n    return (originalCreatePoolCluster: Function) => {\n      const thisPlugin = this;\n      return function createPool(_config: string | mysqlTypes.PoolConfig) {\n        const cluster = originalCreatePoolCluster(...arguments);\n\n        // This is unwrapped on next call after unpatch\n        thisPlugin._wrap(\n          cluster,\n          'getConnection',\n          thisPlugin._patchGetConnection(cluster)\n        );\n        thisPlugin._wrap(cluster, 'add', thisPlugin._patchAdd(cluster));\n\n        return cluster;\n      };\n    };\n  }\n  private _patchAdd(cluster: mysqlTypes.PoolCluster) {\n    return (originalAdd: Function) => {\n      const thisPlugin = this;\n      return function add(id: string, config: unknown) {\n        // Unwrap if unpatch has been called\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(cluster, 'add');\n          return originalAdd.apply(cluster, arguments);\n        }\n        originalAdd.apply(cluster, arguments);\n        const nodes = cluster['_nodes' as keyof mysqlTypes.PoolCluster] as any;\n        if (nodes) {\n          const nodeId =\n            typeof id === 'object'\n              ? 'CLUSTER::' + (cluster as any)._lastId\n              : String(id);\n\n          const pool = nodes[nodeId].pool;\n          thisPlugin._setPoolCallbacks(pool, id);\n        }\n      };\n    };\n  }\n\n  // method on cluster or pool\n  private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) {\n    return (originalGetConnection: Function) => {\n      const thisPlugin = this;\n\n      return function getConnection(\n        arg1?: unknown,\n        arg2?: unknown,\n        arg3?: unknown\n      ) {\n        // Unwrap if unpatch has been called\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(pool, 'getConnection');\n          return originalGetConnection.apply(pool, arguments);\n        }\n\n        if (arguments.length === 1 && typeof arg1 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg1 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, patchFn);\n        }\n        if (arguments.length === 2 && typeof arg2 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg2 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, arg1, patchFn);\n        }\n        if (arguments.length === 3 && typeof arg3 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg3 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, arg1, arg2, patchFn);\n        }\n\n        return originalGetConnection.apply(pool, arguments);\n      };\n    };\n  }\n\n  private _getConnectionCallbackPatchFn(cb: getConnectionCallbackType) {\n    const thisPlugin = this;\n    const activeContext = context.active();\n    return function (\n      this: any,\n      err: mysqlTypes.MysqlError,\n      connection: mysqlTypes.PoolConnection\n    ) {\n      if (connection) {\n        // this is the callback passed into a query\n        // no need to unwrap\n        if (!isWrapped(connection.query)) {\n          thisPlugin._wrap(\n            connection,\n            'query',\n            thisPlugin._patchQuery(connection)\n          );\n        }\n      }\n      if (typeof cb === 'function') {\n        context.with(activeContext, cb, this, err, connection);\n      }\n    };\n  }\n\n  private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) {\n    return (originalQuery: Function): mysqlTypes.QueryFunction => {\n      const thisPlugin = this;\n\n      return function query(\n        query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n        _valuesOrCallback?: unknown[] | mysqlTypes.queryCallback,\n        _callback?: mysqlTypes.queryCallback\n      ) {\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(connection, 'query');\n          return originalQuery.apply(connection, arguments);\n        }\n\n        const attributes: Attributes = {};\n        const { host, port, database, user } = getConfig(connection.config);\n        const portNumber = parseInt(port, 10);\n        const dbQueryText = getDbQueryText(query);\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n          attributes[ATTR_DB_CONNECTION_STRING] = getJDBCString(\n            host,\n            port,\n            database\n          );\n          attributes[ATTR_DB_NAME] = database;\n          attributes[ATTR_DB_USER] = user;\n          attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n          attributes[ATTR_DB_NAMESPACE] = database;\n          attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_NAME] = host;\n          if (!isNaN(portNumber)) {\n            attributes[ATTR_NET_PEER_PORT] = portNumber;\n          }\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_ADDRESS] = host;\n          if (!isNaN(portNumber)) {\n            attributes[ATTR_SERVER_PORT] = portNumber;\n          }\n        }\n        const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        if (thisPlugin.getConfig().enhancedDatabaseReporting) {\n          let values;\n\n          if (Array.isArray(_valuesOrCallback)) {\n            values = _valuesOrCallback;\n          } else if (arguments[2]) {\n            values = [_valuesOrCallback];\n          }\n\n          span.setAttribute(\n            AttributeNames.MYSQL_VALUES,\n            getDbValues(query, values)\n          );\n        }\n\n        const cbIndex = Array.from(arguments).findIndex(\n          arg => typeof arg === 'function'\n        );\n\n        const parentContext = context.active();\n\n        if (cbIndex === -1) {\n          const streamableQuery: mysqlTypes.Query = context.with(\n            trace.setSpan(context.active(), span),\n            () => {\n              return originalQuery.apply(connection, arguments);\n            }\n          );\n          context.bind(parentContext, streamableQuery);\n\n          return streamableQuery\n            .on('error', err =>\n              span.setStatus({\n                code: SpanStatusCode.ERROR,\n                message: err.message,\n              })\n            )\n            .on('end', () => {\n              span.end();\n            });\n        } else {\n          thisPlugin._wrap(\n            arguments,\n            cbIndex,\n            thisPlugin._patchCallbackQuery(span, parentContext)\n          );\n\n          return context.with(trace.setSpan(context.active(), span), () => {\n            return originalQuery.apply(connection, arguments);\n          });\n        }\n      };\n    };\n  }\n\n  private _patchCallbackQuery(span: Span, parentContext: Context) {\n    return (originalCallback: Function) => {\n      return function (\n        err: mysqlTypes.MysqlError | null,\n        results?: any,\n        fields?: mysqlTypes.FieldInfo[]\n      ) {\n        if (err) {\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: err.message,\n          });\n        }\n        span.end();\n        return context.with(parentContext, () =>\n          originalCallback(...arguments)\n        );\n      };\n    };\n  }\n\n  private _setPoolCallbacks(pool: mysqlTypes.Pool, id: string) {\n    const poolNameOld = id || getPoolNameOld(pool);\n\n    pool.on('connection', _connection => {\n      this._connCountAdd(1, poolNameOld, 'idle');\n    });\n\n    pool.on('acquire', _connection => {\n      this._connCountAdd(-1, poolNameOld, 'idle');\n      this._connCountAdd(1, poolNameOld, 'used');\n    });\n\n    pool.on('release', _connection => {\n      this._connCountAdd(1, poolNameOld, 'idle');\n      this._connCountAdd(-1, poolNameOld, 'used');\n    });\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MySQLInstrumentation } from './instrumentation';\nexport type { MySQLInstrumentationConfig } from './types';\n","import { MySQLInstrumentation } from '@opentelemetry/instrumentation-mysql';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql';\n\nexport const instrumentMysql = generateInstrumentOnce(INTEGRATION_NAME, () => new MySQLInstrumentation({}));\n\nconst _mysqlIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMysql();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql](https://www.npmjs.com/package/mysql) library.\n *\n * For more information, see the [`mysqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nexport const mysqlIntegration = defineIntegration(_mysqlIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  trace,\n  Span,\n  ROOT_CONTEXT,\n  defaultTextMapSetter,\n} from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\n\n// NOTE: This function currently is returning false-positives\n// in cases where comment characters appear in string literals\n// (\"SELECT '-- not a comment';\" would return true, although has no comment)\nfunction hasValidSqlComment(query: string): boolean {\n  const indexOpeningDashDashComment = query.indexOf('--');\n  if (indexOpeningDashDashComment >= 0) {\n    return true;\n  }\n\n  const indexOpeningSlashComment = query.indexOf('/*');\n  if (indexOpeningSlashComment < 0) {\n    return false;\n  }\n\n  const indexClosingSlashComment = query.indexOf('*/');\n  return indexOpeningDashDashComment < indexClosingSlashComment;\n}\n\n// sqlcommenter specification (https://google.github.io/sqlcommenter/spec/#value-serialization)\n// expects us to URL encode based on the RFC 3986 spec (https://en.wikipedia.org/wiki/Percent-encoding),\n// but encodeURIComponent does not handle some characters correctly (! ' ( ) *),\n// which means we need special handling for this\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\nfunction fixedEncodeURIComponent(str: string) {\n  return encodeURIComponent(str).replace(\n    /[!'()*]/g,\n    c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`\n  );\n}\n\nexport function addSqlCommenterComment(span: Span, query: string): string {\n  if (typeof query !== 'string' || query.length === 0) {\n    return query;\n  }\n\n  // As per sqlcommenter spec we shall not add a comment if there already is a comment\n  // in the query\n  if (hasValidSqlComment(query)) {\n    return query;\n  }\n\n  const propagator = new W3CTraceContextPropagator();\n  const headers: { [key: string]: string } = {};\n  propagator.inject(\n    trace.setSpan(ROOT_CONTEXT, span),\n    headers,\n    defaultTextMapSetter\n  );\n\n  // sqlcommenter spec requires keys in the comment to be sorted lexicographically\n  const sortedKeys = Object.keys(headers).sort();\n\n  if (sortedKeys.length === 0) {\n    return query;\n  }\n\n  const commentString = sortedKeys\n    .map(key => {\n      const encodedValue = fixedEncodeURIComponent(headers[key]);\n      return `${key}='${encodedValue}'`;\n    })\n    .join(',');\n\n  return `${query} /*${commentString}*/`;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport type * as mysqlTypes from 'mysql2';\nimport { MySQL2InstrumentationQueryMaskingHook } from './types';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\n\ntype formatType = typeof mysqlTypes.format;\n\n/*\n  Following types declare an expectation on mysql2 types and define a subset we\n  use in the instrumentation of the types actually defined in mysql2 package\n\n  We need to import them here so that the installing party of the instrumentation\n  doesn't have to absolutely install the mysql2 package as well - specially\n  important for auto-loaders and meta-packages.\n*/\ninterface QueryOptions {\n  sql: string;\n  values?: any | any[] | { [param: string]: any };\n}\n\ninterface Query {\n  sql: string;\n}\n\ninterface Config {\n  host?: string;\n  port?: number;\n  database?: string;\n  user?: string;\n  connectionConfig?: Config;\n}\n\n/**\n * Get an Attributes map from a mysql connection config object\n *\n * @param config ConnectionConfig\n */\nexport function getConnectionAttributes(\n  config: Config,\n  dbSemconvStability: SemconvStability,\n  netSemconvStability: SemconvStability\n): Attributes {\n  const { host, port, database, user } = getConfig(config);\n\n  const attrs: Attributes = {};\n  if (dbSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database);\n    attrs[ATTR_DB_NAME] = database;\n    attrs[ATTR_DB_USER] = user;\n  }\n  if (dbSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_DB_NAMESPACE] = database;\n  }\n\n  const portNumber = parseInt(port, 10);\n  if (netSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_NET_PEER_NAME] = host;\n    if (!isNaN(portNumber)) {\n      attrs[ATTR_NET_PEER_PORT] = portNumber;\n    }\n  }\n  if (netSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_SERVER_ADDRESS] = host;\n    if (!isNaN(portNumber)) {\n      attrs[ATTR_SERVER_PORT] = portNumber;\n    }\n  }\n\n  return attrs;\n}\n\nfunction getConfig(config: any) {\n  const { host, port, database, user } =\n    (config && config.connectionConfig) || config || {};\n  return { host, port, database, user };\n}\n\nfunction getJDBCString(\n  host: string | undefined,\n  port: number | undefined,\n  database: string | undefined\n) {\n  let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n  if (typeof port === 'number') {\n    jdbcString += `:${port}`;\n  }\n\n  if (typeof database === 'string') {\n    jdbcString += `/${database}`;\n  }\n\n  return jdbcString;\n}\n\n/**\n * Conjures up the value for the db.query.text attribute by formatting a SQL query.\n */\nexport function getQueryText(\n  query: string | Query | QueryOptions,\n  format?: formatType,\n  values?: any[],\n  maskStatement = false,\n  maskStatementHook: MySQL2InstrumentationQueryMaskingHook = defaultMaskingHook\n): string {\n  const [querySql, queryValues] =\n    typeof query === 'string'\n      ? [query, values]\n      : [query.sql, hasValues(query) ? values || query.values : values];\n  try {\n    if (maskStatement) {\n      return maskStatementHook(querySql);\n    } else if (format && queryValues) {\n      return format(querySql, queryValues);\n    } else {\n      return querySql;\n    }\n  } catch (e) {\n    return 'Could not determine the query due to an error in masking or formatting';\n  }\n}\n\n/**\n * Replaces numeric values and quoted strings in the query with placeholders ('?').\n *\n * - `\\b\\d+\\b`: Matches whole numbers (integers) and replaces them with '?'.\n * - `([\"'])(?:(?=(\\\\?))\\2.)*?\\1`:\n *   - Matches quoted strings (both single `'` and double `\"` quotes).\n *   - Uses a lookahead `(?=(\\\\?))` to detect an optional backslash without consuming it immediately.\n *   - Captures the optional backslash `\\2` and ensures escaped quotes inside the string are handled correctly.\n *   - Ensures that only complete quoted strings are replaced with '?'.\n *\n * This prevents accidental replacement of escaped quotes within strings and ensures that the\n * query structure remains intact while masking sensitive data.\n */\nfunction defaultMaskingHook(query: string): string {\n  return query\n    .replace(/\\b\\d+\\b/g, '?')\n    .replace(/([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g, '?');\n}\n\nfunction hasValues(obj: Query | QueryOptions): obj is QueryOptions {\n  return 'values' in obj;\n}\n\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nexport function getSpanName(query: string | Query | QueryOptions): string {\n  const rawQuery = typeof query === 'object' ? query.sql : query;\n  // Extract the SQL verb\n  const firstSpace = rawQuery?.indexOf(' ');\n  if (typeof firstSpace === 'number' && firstSpace !== -1) {\n    return rawQuery?.substring(0, firstSpace);\n  }\n  return rawQuery;\n}\n\nexport const once = (fn: Function) => {\n  let called = false;\n  return (...args: unknown[]) => {\n    if (called) return;\n    called = true;\n    return fn(...args);\n  };\n};\n\nexport function getConnectionPrototypeToInstrument(connection: any) {\n  const connectionPrototype = connection.prototype;\n  const basePrototype = Object.getPrototypeOf(connectionPrototype);\n\n  // mysql2@3.11.5 included a refactoring, where most code was moved out of the `Connection` class and into a shared base\n  // so we need to instrument that instead, see https://github.com/sidorares/node-mysql2/pull/3081\n  // This checks if the functions we're instrumenting are there on the base - we cannot use the presence of a base\n  // prototype since EventEmitter is the base for mysql2@<=3.11.4\n  if (\n    typeof basePrototype?.query === 'function' &&\n    typeof basePrototype?.execute === 'function'\n  ) {\n    return basePrototype;\n  }\n\n  // otherwise instrument the connection directly.\n  return connectionPrototype;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mysql2';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  DB_SYSTEM_VALUE_MYSQL,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n} from './semconv';\nimport { addSqlCommenterComment } from '@opentelemetry/sql-common';\nimport type * as mysqlTypes from 'mysql2';\nimport { MySQL2InstrumentationConfig } from './types';\nimport {\n  getConnectionAttributes,\n  getConnectionPrototypeToInstrument,\n  getQueryText,\n  getSpanName,\n  once,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\n\ntype formatType = typeof mysqlTypes.format;\n\nconst supportedVersions = ['>=1.4.2 <4'];\n\nexport class MySQL2Instrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: MySQL2InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    let format: formatType | undefined;\n    function setFormatFunction(moduleExports: any) {\n      if (!format && moduleExports.format) {\n        format = moduleExports.format;\n      }\n    }\n    const patch = (ConnectionPrototype: mysqlTypes.Connection) => {\n      if (isWrapped(ConnectionPrototype.query)) {\n        this._unwrap(ConnectionPrototype, 'query');\n      }\n      this._wrap(\n        ConnectionPrototype,\n        'query',\n        this._patchQuery(format, false) as any\n      );\n      if (isWrapped(ConnectionPrototype.execute)) {\n        this._unwrap(ConnectionPrototype, 'execute');\n      }\n      this._wrap(\n        ConnectionPrototype,\n        'execute',\n        this._patchQuery(format, true) as any\n      );\n    };\n    const unpatch = (ConnectionPrototype: mysqlTypes.Connection) => {\n      this._unwrap(ConnectionPrototype, 'query');\n      this._unwrap(ConnectionPrototype, 'execute');\n    };\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mysql2',\n        supportedVersions,\n        (moduleExports: any) => {\n          setFormatFunction(moduleExports);\n          return moduleExports;\n        },\n        () => {},\n        [\n          new InstrumentationNodeModuleFile(\n            'mysql2/promise.js',\n            supportedVersions,\n            (moduleExports: any) => {\n              setFormatFunction(moduleExports);\n              return moduleExports;\n            },\n            () => {}\n          ),\n          new InstrumentationNodeModuleFile(\n            'mysql2/lib/connection.js',\n            supportedVersions,\n            (moduleExports: any) => {\n              const ConnectionPrototype: mysqlTypes.Connection =\n                getConnectionPrototypeToInstrument(moduleExports);\n              patch(ConnectionPrototype);\n              return moduleExports;\n            },\n            (moduleExports: any) => {\n              if (moduleExports === undefined) return;\n              const ConnectionPrototype: mysqlTypes.Connection =\n                getConnectionPrototypeToInstrument(moduleExports);\n              unpatch(ConnectionPrototype);\n            }\n          ),\n        ]\n      ),\n    ];\n  }\n\n  private _patchQuery(format: formatType | undefined, isPrepared: boolean) {\n    return (originalQuery: Function): Function => {\n      const thisPlugin = this;\n      return function query(\n        this: mysqlTypes.Connection,\n        query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n        _valuesOrCallback?: unknown[] | Function,\n        _callback?: Function\n      ) {\n        let values;\n        if (Array.isArray(_valuesOrCallback)) {\n          values = _valuesOrCallback;\n        } else if (arguments[2]) {\n          values = [_valuesOrCallback];\n        }\n        const { maskStatement, maskStatementHook, responseHook } =\n          thisPlugin.getConfig();\n\n        const attributes: api.Attributes = getConnectionAttributes(\n          this.config,\n          thisPlugin._dbSemconvStability,\n          thisPlugin._netSemconvStability\n        );\n        const dbQueryText = getQueryText(\n          query,\n          format,\n          values,\n          maskStatement,\n          maskStatementHook\n        );\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n          attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n          attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n        }\n\n        const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n          kind: api.SpanKind.CLIENT,\n          attributes,\n        });\n\n        if (\n          !isPrepared &&\n          thisPlugin.getConfig().addSqlCommenterCommentToQueries\n        ) {\n          arguments[0] = query =\n            typeof query === 'string'\n              ? addSqlCommenterComment(span, query)\n              : Object.assign(query, {\n                  sql: addSqlCommenterComment(span, query.sql),\n                });\n        }\n\n        const endSpan = once((err?: any, results?: any) => {\n          if (err) {\n            span.setStatus({\n              code: api.SpanStatusCode.ERROR,\n              message: err.message,\n            });\n          } else {\n            if (typeof responseHook === 'function') {\n              safeExecuteInTheMiddle(\n                () => {\n                  responseHook(span, {\n                    queryResults: results,\n                  });\n                },\n                err => {\n                  if (err) {\n                    thisPlugin._diag.warn('Failed executing responseHook', err);\n                  }\n                },\n                true\n              );\n            }\n          }\n\n          span.end();\n        });\n\n        if (arguments.length === 1) {\n          if (typeof (query as any).onResult === 'function') {\n            thisPlugin._wrap(\n              query as any,\n              'onResult',\n              thisPlugin._patchCallbackQuery(endSpan)\n            );\n          }\n\n          const streamableQuery: mysqlTypes.Query = originalQuery.apply(\n            this,\n            arguments\n          );\n\n          // `end` in mysql behaves similarly to `result` in mysql2.\n          streamableQuery\n            .once('error', err => {\n              endSpan(err);\n            })\n            .once('result', results => {\n              endSpan(undefined, results);\n            });\n\n          return streamableQuery;\n        }\n\n        if (typeof arguments[1] === 'function') {\n          thisPlugin._wrap(\n            arguments,\n            1,\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        } else if (typeof arguments[2] === 'function') {\n          thisPlugin._wrap(\n            arguments,\n            2,\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        }\n\n        return originalQuery.apply(this, arguments);\n      };\n    };\n  }\n\n  private _patchCallbackQuery(endSpan: Function) {\n    return (originalCallback: Function) => {\n      return function (\n        err: mysqlTypes.QueryError | null,\n        results?: any,\n        fields?: mysqlTypes.FieldPacket[]\n      ) {\n        endSpan(err, results);\n        return originalCallback(...arguments);\n      };\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MySQL2Instrumentation } from './instrumentation';\nexport type {\n  MySQL2InstrumentationConfig,\n  MySQL2InstrumentationExecutionResponseHook,\n  MySQL2ResponseHookInformation,\n} from './types';\n","import { MySQL2Instrumentation } from '@opentelemetry/instrumentation-mysql2';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql2';\n\nexport const instrumentMysql2 = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MySQL2Instrumentation({\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mysql2');\n      },\n    }),\n);\n\nconst _mysql2Integration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMysql2();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql2](https://www.npmjs.com/package/mysql2) library.\n *\n * For more information, see the [`mysql2Integration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql2/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nexport const mysql2Integration = defineIntegration(_mysql2Integration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDIS = 'redis' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Span, SpanStatusCode } from '@opentelemetry/api';\n\nexport const endSpan = (\n  span: Span,\n  err: NodeJS.ErrnoException | null | undefined\n) => {\n  if (err) {\n    span.recordException(err);\n    span.setStatus({\n      code: SpanStatusCode.ERROR,\n      message: err.message,\n    });\n  }\n  span.end();\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * List of regexes and the number of arguments that should be serialized for matching commands.\n * For example, HSET should serialize which key and field it's operating on, but not its value.\n * Setting the subset to -1 will serialize all arguments.\n * Commands without a match will have their first argument serialized.\n *\n * Refer to https://redis.io/commands/ for the full list.\n */\nconst serializationSubsets = [\n  {\n    regex: /^ECHO/i,\n    args: 0,\n  },\n  {\n    regex: /^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,\n    args: 1,\n  },\n  {\n    regex: /^(HSET|HMSET|LSET|LINSERT)/i,\n    args: 2,\n  },\n  {\n    regex:\n      /^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,\n    args: -1,\n  },\n];\n\nexport type DbStatementSerializer = (\n  cmdName: string,\n  cmdArgs: Array\n) => string;\n\n/**\n * Given the redis command name and arguments, return a combination of the\n * command name + the allowed arguments according to `serializationSubsets`.\n * @param cmdName The redis command name\n * @param cmdArgs The redis command arguments\n * @returns a combination of the command name + args according to `serializationSubsets`.\n */\nexport const defaultDbStatementSerializer: DbStatementSerializer = (\n  cmdName,\n  cmdArgs\n) => {\n  if (Array.isArray(cmdArgs) && cmdArgs.length) {\n    const nArgsToSerialize =\n      serializationSubsets.find(({ regex }) => {\n        return regex.test(cmdName);\n      })?.args ?? 0;\n    const argsToSerialize =\n      nArgsToSerialize >= 0 ? cmdArgs.slice(0, nArgsToSerialize) : cmdArgs;\n    if (cmdArgs.length > argsToSerialize.length) {\n      argsToSerialize.push(\n        `[${cmdArgs.length - nArgsToSerialize} other arguments]`\n      );\n    }\n    return `${cmdName} ${argsToSerialize.join(' ')}`;\n  }\n  return cmdName;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-ioredis';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  diag,\n  trace,\n  context,\n  SpanKind,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { IORedisInstrumentationConfig } from './types';\nimport { IORedisCommand, RedisInterface } from './internal-types';\nimport {\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  DB_SYSTEM_VALUE_REDIS,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { endSpan } from './utils';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst DEFAULT_CONFIG: IORedisInstrumentationConfig = {\n  requireParentSpan: true,\n};\n\nexport class IORedisInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: IORedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: IORedisInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'ioredis',\n        ['>=2.0.0 <6'],\n        (module, moduleVersion?: string) => {\n          const moduleExports =\n            module[Symbol.toStringTag] === 'Module'\n              ? module.default // ESM\n              : module; // CommonJS\n          if (isWrapped(moduleExports.prototype.sendCommand)) {\n            this._unwrap(moduleExports.prototype, 'sendCommand');\n          }\n          this._wrap(\n            moduleExports.prototype,\n            'sendCommand',\n            this._patchSendCommand(moduleVersion)\n          );\n          if (isWrapped(moduleExports.prototype.connect)) {\n            this._unwrap(moduleExports.prototype, 'connect');\n          }\n          this._wrap(\n            moduleExports.prototype,\n            'connect',\n            this._patchConnection()\n          );\n          return module;\n        },\n        module => {\n          if (module === undefined) return;\n          const moduleExports =\n            module[Symbol.toStringTag] === 'Module'\n              ? module.default // ESM\n              : module; // CommonJS\n          this._unwrap(moduleExports.prototype, 'sendCommand');\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n      ),\n    ];\n  }\n\n  /**\n   * Patch send command internal to trace requests\n   */\n  private _patchSendCommand(moduleVersion?: string) {\n    return (original: Function) => {\n      return this._traceSendCommand(original, moduleVersion);\n    };\n  }\n\n  private _patchConnection() {\n    return (original: Function) => {\n      return this._traceConnection(original);\n    };\n  }\n\n  private _traceSendCommand(original: Function, moduleVersion?: string) {\n    const instrumentation = this;\n    return function (this: RedisInterface, cmd?: IORedisCommand) {\n      if (arguments.length < 1 || typeof cmd !== 'object') {\n        return original.apply(this, arguments);\n      }\n      const config = instrumentation.getConfig();\n      const dbStatementSerializer =\n        config.dbStatementSerializer || defaultDbStatementSerializer;\n\n      const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n      if (config.requireParentSpan === true && hasNoParentSpan) {\n        return original.apply(this, arguments);\n      }\n\n      const attributes: Attributes = {};\n      const { host, port } = this.options;\n      const dbQueryText = dbStatementSerializer(cmd.name, cmd.args);\n      if (instrumentation._dbSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_REDIS;\n        attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        attributes[ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n      }\n      if (instrumentation._dbSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_REDIS;\n        attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n        attributes[ATTR_NET_PEER_PORT] = port;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n        attributes[ATTR_SERVER_PORT] = port;\n      }\n      const span = instrumentation.tracer.startSpan(cmd.name, {\n        kind: SpanKind.CLIENT,\n        attributes,\n      });\n\n      const { requestHook } = config;\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            requestHook(span, {\n              moduleVersion,\n              cmdName: cmd.name,\n              cmdArgs: cmd.args,\n            }),\n          e => {\n            if (e) {\n              diag.error('ioredis instrumentation: request hook failed', e);\n            }\n          },\n          true\n        );\n      }\n\n      try {\n        const result = original.apply(this, arguments);\n\n        const origResolve = cmd.resolve;\n        /* eslint-disable @typescript-eslint/no-explicit-any */\n        cmd.resolve = function (result: any) {\n          safeExecuteInTheMiddle(\n            () => config.responseHook?.(span, cmd.name, cmd.args, result),\n            e => {\n              if (e) {\n                diag.error('ioredis instrumentation: response hook failed', e);\n              }\n            },\n            true\n          );\n\n          endSpan(span, null);\n          origResolve(result);\n        };\n\n        const origReject = cmd.reject;\n        cmd.reject = function (err: Error) {\n          endSpan(span, err);\n          origReject(err);\n        };\n\n        return result;\n      } catch (error: any) {\n        endSpan(span, error);\n        throw error;\n      }\n    };\n  }\n\n  private _traceConnection(original: Function) {\n    const instrumentation = this;\n    return function (this: RedisInterface) {\n      const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n      if (\n        instrumentation.getConfig().requireParentSpan === true &&\n        hasNoParentSpan\n      ) {\n        return original.apply(this, arguments);\n      }\n\n      const attributes: Attributes = {};\n      const { host, port } = this.options;\n      if (instrumentation._dbSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_REDIS;\n        attributes[ATTR_DB_STATEMENT] = 'connect';\n        attributes[ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n      }\n      if (instrumentation._dbSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_REDIS;\n        attributes[ATTR_DB_QUERY_TEXT] = 'connect';\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n        attributes[ATTR_NET_PEER_PORT] = port;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n        attributes[ATTR_SERVER_PORT] = port;\n      }\n      const span = instrumentation.tracer.startSpan('connect', {\n        kind: SpanKind.CLIENT,\n        attributes,\n      });\n\n      try {\n        const client = original.apply(this, arguments);\n        endSpan(span, null);\n        return client;\n      } catch (error: any) {\n        endSpan(span, error);\n        throw error;\n      }\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { IORedisInstrumentation } from './instrumentation';\nexport type {\n  CommandArgs,\n  DbStatementSerializer,\n  IORedisInstrumentationConfig,\n  IORedisRequestHookInformation,\n  RedisRequestCustomAttributeFunction,\n  RedisResponseCustomAttributeFunction,\n} from './types';\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-redis';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, Span, SpanStatusCode } from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\n\nexport const endSpan = (span: Span, err?: Error | null) => {\n  if (err) {\n    span.setStatus({\n      code: SpanStatusCode.ERROR,\n      message: err.message,\n    });\n  }\n  span.end();\n};\n\nexport const getTracedCreateClient = (original: Function) => {\n  return function createClientTrace(this: any) {\n    const client = original.apply(this, arguments);\n    return context.bind(context.active(), client);\n  };\n};\n\nexport const getTracedCreateStreamTrace = (original: Function) => {\n  return function create_stream_trace(this: any) {\n    if (!Object.prototype.hasOwnProperty.call(this, 'stream')) {\n      Object.defineProperty(this, 'stream', {\n        get() {\n          return this._patched_redis_stream;\n        },\n        set(val: EventEmitter) {\n          context.bind(context.active(), val);\n          this._patched_redis_stream = val;\n        },\n      });\n    }\n    return original.apply(this, arguments);\n  };\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDIS = 'redis' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  endSpan,\n  getTracedCreateClient,\n  getTracedCreateStreamTrace,\n} from './utils';\nimport { RedisInstrumentationConfig } from '../types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from '../version';\nimport type { RedisCommand, RedisPluginClientTypes } from './internal-types';\nimport { Attributes, SpanKind, context, trace } from '@opentelemetry/api';\nimport {\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n  DB_SYSTEM_VALUE_REDIS,\n} from '../semconv';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\n\nexport class RedisInstrumentationV2_V3 extends InstrumentationBase {\n  static readonly COMPONENT = 'redis';\n  private _semconvStability: SemconvStability;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    super.setConfig(config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'redis',\n        ['>=2.6.0 <4'],\n        moduleExports => {\n          if (\n            isWrapped(\n              moduleExports.RedisClient.prototype['internal_send_command']\n            )\n          ) {\n            this._unwrap(\n              moduleExports.RedisClient.prototype,\n              'internal_send_command'\n            );\n          }\n          this._wrap(\n            moduleExports.RedisClient.prototype,\n            'internal_send_command',\n            this._getPatchInternalSendCommand()\n          );\n\n          if (isWrapped(moduleExports.RedisClient.prototype['create_stream'])) {\n            this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n          }\n          this._wrap(\n            moduleExports.RedisClient.prototype,\n            'create_stream',\n            this._getPatchCreateStream()\n          );\n\n          if (isWrapped(moduleExports.createClient)) {\n            this._unwrap(moduleExports, 'createClient');\n          }\n          this._wrap(\n            moduleExports,\n            'createClient',\n            this._getPatchCreateClient()\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          if (moduleExports === undefined) return;\n          this._unwrap(\n            moduleExports.RedisClient.prototype,\n            'internal_send_command'\n          );\n          this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n          this._unwrap(moduleExports, 'createClient');\n        }\n      ),\n    ];\n  }\n\n  /**\n   * Patch internal_send_command(...) to trace requests\n   */\n  private _getPatchInternalSendCommand() {\n    const instrumentation = this;\n    return function internal_send_command(original: Function) {\n      return function internal_send_command_trace(\n        this: RedisPluginClientTypes,\n        cmd?: RedisCommand\n      ) {\n        // Versions of redis (2.4+) use a single options object\n        // instead of named arguments\n        if (arguments.length !== 1 || typeof cmd !== 'object') {\n          // We don't know how to trace this call, so don't start/stop a span\n          return original.apply(this, arguments);\n        }\n\n        const config = instrumentation.getConfig();\n\n        const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n        if (config.requireParentSpan === true && hasNoParentSpan) {\n          return original.apply(this, arguments);\n        }\n\n        const dbStatementSerializer =\n          config?.dbStatementSerializer || defaultDbStatementSerializer;\n\n        const attributes: Attributes = {};\n\n        if (instrumentation._semconvStability & SemconvStability.OLD) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n            [ATTR_DB_STATEMENT]: dbStatementSerializer(cmd.command, cmd.args),\n          });\n        }\n\n        if (instrumentation._semconvStability & SemconvStability.STABLE) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_REDIS,\n            [ATTR_DB_OPERATION_NAME]: cmd.command,\n            [ATTR_DB_QUERY_TEXT]: dbStatementSerializer(cmd.command, cmd.args),\n          });\n        }\n\n        const span = instrumentation.tracer.startSpan(\n          `${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`,\n          {\n            kind: SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        // Set attributes for not explicitly typed RedisPluginClientTypes\n        if (this.connection_options) {\n          const connectionAttributes: Attributes = {};\n\n          if (instrumentation._semconvStability & SemconvStability.OLD) {\n            Object.assign(connectionAttributes, {\n              [ATTR_NET_PEER_NAME]: this.connection_options.host,\n              [ATTR_NET_PEER_PORT]: this.connection_options.port,\n            });\n          }\n\n          if (instrumentation._semconvStability & SemconvStability.STABLE) {\n            Object.assign(connectionAttributes, {\n              [ATTR_SERVER_ADDRESS]: this.connection_options.host,\n              [ATTR_SERVER_PORT]: this.connection_options.port,\n            });\n          }\n\n          span.setAttributes(connectionAttributes);\n        }\n\n        if (\n          this.address &&\n          instrumentation._semconvStability & SemconvStability.OLD\n        ) {\n          span.setAttribute(\n            ATTR_DB_CONNECTION_STRING,\n            `redis://${this.address}`\n          );\n        }\n\n        const originalCallback = arguments[0].callback;\n        if (originalCallback) {\n          const originalContext = context.active();\n          (arguments[0] as RedisCommand).callback = function callback(\n            this: unknown,\n            err: Error | null,\n            reply: T\n          ) {\n            if (config?.responseHook) {\n              const responseHook = config.responseHook;\n              safeExecuteInTheMiddle(\n                () => {\n                  responseHook(span, cmd.command, cmd.args, reply);\n                },\n                err => {\n                  if (err) {\n                    instrumentation._diag.error(\n                      'Error executing responseHook',\n                      err\n                    );\n                  }\n                },\n                true\n              );\n            }\n\n            endSpan(span, err);\n            return context.with(\n              originalContext,\n              originalCallback,\n              this,\n              ...arguments\n            );\n          };\n        }\n        try {\n          // Span will be ended in callback\n          return original.apply(this, arguments);\n        } catch (rethrow: any) {\n          endSpan(span, rethrow);\n          throw rethrow; // rethrow after ending span\n        }\n      };\n    };\n  }\n\n  private _getPatchCreateClient() {\n    return function createClient(original: Function) {\n      return getTracedCreateClient(original);\n    };\n  }\n\n  private _getPatchCreateStream() {\n    return function createReadStream(original: Function) {\n      return getTracedCreateStreamTrace(original);\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Attributes, DiagLogger } from '@opentelemetry/api';\nimport {\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_SYSTEM,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_VALUE_REDIS,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n} from '../semconv';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\n\nexport function getClientAttributes(\n  diag: DiagLogger,\n  options: any,\n  semconvStability: SemconvStability\n): Attributes {\n  const attributes: Attributes = {};\n\n  if (semconvStability & SemconvStability.OLD) {\n    Object.assign(attributes, {\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n      [ATTR_NET_PEER_NAME]: options?.socket?.host,\n      [ATTR_NET_PEER_PORT]: options?.socket?.port,\n      [ATTR_DB_CONNECTION_STRING]:\n        removeCredentialsFromDBConnectionStringAttribute(diag, options?.url),\n    });\n  }\n\n  if (semconvStability & SemconvStability.STABLE) {\n    Object.assign(attributes, {\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_REDIS,\n      [ATTR_SERVER_ADDRESS]: options?.socket?.host,\n      [ATTR_SERVER_PORT]: options?.socket?.port,\n    });\n  }\n\n  return attributes;\n}\n\n/**\n * removeCredentialsFromDBConnectionStringAttribute removes basic auth from url and user_pwd from query string\n *\n * Examples:\n *   redis://user:pass@localhost:6379/mydb => redis://localhost:6379/mydb\n *   redis://localhost:6379?db=mydb&user_pwd=pass => redis://localhost:6379?db=mydb\n */\nfunction removeCredentialsFromDBConnectionStringAttribute(\n  diag: DiagLogger,\n  url?: unknown\n): string | undefined {\n  if (typeof url !== 'string' || !url) {\n    return;\n  }\n\n  try {\n    const u = new URL(url);\n    u.searchParams.delete('user_pwd');\n    u.username = '';\n    u.password = '';\n    return u.href;\n  } catch (err) {\n    diag.error('failed to sanitize redis connection url', err);\n  }\n  return;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  trace,\n  context,\n  SpanKind,\n  Span,\n  SpanStatusCode,\n} from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { getClientAttributes } from './utils';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\nimport { RedisInstrumentationConfig } from '../types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from '../version';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_DB_STATEMENT } from '../semconv';\nimport type { MultiErrorReply } from './internal-types';\n\nconst OTEL_OPEN_SPANS = Symbol(\n  'opentelemetry.instrumentation.redis.open_spans'\n);\nconst MULTI_COMMAND_OPTIONS = Symbol(\n  'opentelemetry.instrumentation.redis.multi_command_options'\n);\n\ninterface MutliCommandInfo {\n  span: Span;\n  commandName: string;\n  commandArgs: Array;\n}\n\nexport class RedisInstrumentationV4_V5 extends InstrumentationBase {\n  static readonly COMPONENT = 'redis';\n  private _semconvStability: SemconvStability;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    super.setConfig(config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  protected init() {\n    // @node-redis/client is a new package introduced and consumed by 'redis 4.0.x'\n    // on redis@4.1.0 it was changed to @redis/client.\n    // we will instrument both packages\n    return [\n      this._getInstrumentationNodeModuleDefinition('@redis/client'),\n      this._getInstrumentationNodeModuleDefinition('@node-redis/client'),\n    ];\n  }\n\n  private _getInstrumentationNodeModuleDefinition(\n    basePackageName: string\n  ): InstrumentationNodeModuleDefinition {\n    const commanderModuleFile = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/commander.js`,\n      ['^1.0.0'],\n      (moduleExports: any, moduleVersion?: string) => {\n        const transformCommandArguments =\n          moduleExports.transformCommandArguments;\n        if (!transformCommandArguments) {\n          this._diag.error(\n            'internal instrumentation error, missing transformCommandArguments function'\n          );\n          return moduleExports;\n        }\n\n        // function name and signature changed in redis 4.1.0 from 'extendWithCommands' to 'attachCommands'\n        // the matching internal package names starts with 1.0.x (for redis 4.0.x)\n        const functionToPatch = moduleVersion?.startsWith('1.0.')\n          ? 'extendWithCommands'\n          : 'attachCommands';\n        // this is the function that extend a redis client with a list of commands.\n        // the function patches the commandExecutor to record a span\n        if (isWrapped(moduleExports?.[functionToPatch])) {\n          this._unwrap(moduleExports, functionToPatch);\n        }\n        this._wrap(\n          moduleExports,\n          functionToPatch,\n          this._getPatchExtendWithCommands(transformCommandArguments)\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        if (isWrapped(moduleExports?.extendWithCommands)) {\n          this._unwrap(moduleExports, 'extendWithCommands');\n        }\n        if (isWrapped(moduleExports?.attachCommands)) {\n          this._unwrap(moduleExports, 'attachCommands');\n        }\n      }\n    );\n\n    const multiCommanderModule = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/client/multi-command.js`,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        const redisClientMultiCommandPrototype =\n          moduleExports?.default?.prototype;\n\n        if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'exec');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'exec',\n          this._getPatchMultiCommandsExec(false)\n        );\n        if (isWrapped(redisClientMultiCommandPrototype?.execAsPipeline)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'execAsPipeline',\n          this._getPatchMultiCommandsExec(true)\n        );\n\n        if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'addCommand',\n          this._getPatchMultiCommandsAddCommand()\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        const redisClientMultiCommandPrototype =\n          moduleExports?.default?.prototype;\n        if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'exec');\n        }\n        if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n        }\n      }\n    );\n\n    const clientIndexModule = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/client/index.js`,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        const redisClientPrototype = moduleExports?.default?.prototype;\n\n        // In some @redis/client versions 'multi' is a method. In later\n        // versions, as of https://github.com/redis/node-redis/pull/2324,\n        // 'MULTI' is a method and 'multi' is a property defined in the\n        // constructor that points to 'MULTI', and therefore it will not\n        // be defined on the prototype.\n        if (redisClientPrototype?.multi) {\n          if (isWrapped(redisClientPrototype?.multi)) {\n            this._unwrap(redisClientPrototype, 'multi');\n          }\n          this._wrap(\n            redisClientPrototype,\n            'multi',\n            this._getPatchRedisClientMulti()\n          );\n        }\n        if (redisClientPrototype?.MULTI) {\n          if (isWrapped(redisClientPrototype?.MULTI)) {\n            this._unwrap(redisClientPrototype, 'MULTI');\n          }\n          this._wrap(\n            redisClientPrototype,\n            'MULTI',\n            this._getPatchRedisClientMulti()\n          );\n        }\n\n        if (isWrapped(redisClientPrototype?.sendCommand)) {\n          this._unwrap(redisClientPrototype, 'sendCommand');\n        }\n        this._wrap(\n          redisClientPrototype,\n          'sendCommand',\n          this._getPatchRedisClientSendCommand()\n        );\n\n        this._wrap(\n          redisClientPrototype,\n          'connect',\n          this._getPatchedClientConnect()\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        const redisClientPrototype = moduleExports?.default?.prototype;\n        if (isWrapped(redisClientPrototype?.multi)) {\n          this._unwrap(redisClientPrototype, 'multi');\n        }\n        if (isWrapped(redisClientPrototype?.MULTI)) {\n          this._unwrap(redisClientPrototype, 'MULTI');\n        }\n        if (isWrapped(redisClientPrototype?.sendCommand)) {\n          this._unwrap(redisClientPrototype, 'sendCommand');\n        }\n      }\n    );\n\n    return new InstrumentationNodeModuleDefinition(\n      basePackageName,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        return moduleExports;\n      },\n      () => {},\n      [commanderModuleFile, multiCommanderModule, clientIndexModule]\n    );\n  }\n\n  // serves both for redis 4.0.x where function name is extendWithCommands\n  // and redis ^4.1.0 where function name is attachCommands\n  private _getPatchExtendWithCommands(transformCommandArguments: Function) {\n    const plugin = this;\n    return function extendWithCommandsPatchWrapper(original: Function) {\n      return function extendWithCommandsPatch(this: any, config: any) {\n        if (config?.BaseClass?.name !== 'RedisClient') {\n          return original.apply(this, arguments);\n        }\n\n        const origExecutor = config.executor;\n        config.executor = function (\n          this: any,\n          command: any,\n          args: Array\n        ) {\n          const redisCommandArguments = transformCommandArguments(\n            command,\n            args\n          ).args;\n          return plugin._traceClientCommand(\n            origExecutor,\n            this,\n            arguments,\n            redisCommandArguments\n          );\n        };\n        return original.apply(this, arguments);\n      };\n    };\n  }\n\n  private _getPatchMultiCommandsExec(isPipeline: boolean) {\n    const plugin = this;\n    return function execPatchWrapper(original: Function) {\n      return function execPatch(this: any) {\n        const execRes = original.apply(this, arguments);\n        if (typeof execRes?.then !== 'function') {\n          plugin._diag.error(\n            'non-promise result when patching exec/execAsPipeline'\n          );\n          return execRes;\n        }\n\n        return execRes\n          .then((redisRes: unknown[]) => {\n            const openSpans = this[OTEL_OPEN_SPANS];\n            plugin._endSpansWithRedisReplies(openSpans, redisRes, isPipeline);\n            return redisRes;\n          })\n          .catch((err: Error) => {\n            const openSpans = this[OTEL_OPEN_SPANS];\n            if (!openSpans) {\n              plugin._diag.error(\n                'cannot find open spans to end for multi/pipeline'\n              );\n            } else {\n              const replies =\n                err.constructor.name === 'MultiErrorReply'\n                  ? (err as MultiErrorReply).replies\n                  : new Array(openSpans.length).fill(err);\n              plugin._endSpansWithRedisReplies(openSpans, replies, isPipeline);\n            }\n            return Promise.reject(err);\n          });\n      };\n    };\n  }\n\n  private _getPatchMultiCommandsAddCommand() {\n    const plugin = this;\n    return function addCommandWrapper(original: Function) {\n      return function addCommandPatch(this: any, args: Array) {\n        return plugin._traceClientCommand(original, this, arguments, args);\n      };\n    };\n  }\n\n  private _getPatchRedisClientMulti() {\n    return function multiPatchWrapper(original: Function) {\n      return function multiPatch(this: any) {\n        const multiRes = original.apply(this, arguments);\n        multiRes[MULTI_COMMAND_OPTIONS] = this.options;\n        return multiRes;\n      };\n    };\n  }\n\n  private _getPatchRedisClientSendCommand() {\n    const plugin = this;\n    return function sendCommandWrapper(original: Function) {\n      return function sendCommandPatch(\n        this: any,\n        args: Array\n      ) {\n        return plugin._traceClientCommand(original, this, arguments, args);\n      };\n    };\n  }\n\n  private _getPatchedClientConnect() {\n    const plugin = this;\n    return function connectWrapper(original: Function) {\n      return function patchedConnect(this: any): Promise {\n        const options = this.options;\n        const attributes = getClientAttributes(\n          plugin._diag,\n          options,\n          plugin._semconvStability\n        );\n\n        const span = plugin.tracer.startSpan(\n          `${RedisInstrumentationV4_V5.COMPONENT}-connect`,\n          {\n            kind: SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        const res = context.with(trace.setSpan(context.active(), span), () => {\n          return original.apply(this);\n        });\n\n        return res\n          .then((result: unknown) => {\n            span.end();\n            return result;\n          })\n          .catch((error: Error) => {\n            span.recordException(error);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n            span.end();\n            return Promise.reject(error);\n          });\n      };\n    };\n  }\n\n  private _traceClientCommand(\n    origFunction: Function,\n    origThis: any,\n    origArguments: IArguments,\n    redisCommandArguments: Array\n  ) {\n    const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n    if (hasNoParentSpan && this.getConfig().requireParentSpan) {\n      return origFunction.apply(origThis, origArguments);\n    }\n\n    const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS];\n\n    const commandName = redisCommandArguments[0] as string; // types also allows it to be a Buffer, but in practice it only string\n    const commandArgs = redisCommandArguments.slice(1);\n\n    const dbStatementSerializer =\n      this.getConfig().dbStatementSerializer || defaultDbStatementSerializer;\n\n    const attributes = getClientAttributes(\n      this._diag,\n      clientOptions,\n      this._semconvStability\n    );\n    if (this._semconvStability & SemconvStability.STABLE) {\n      attributes[ATTR_DB_OPERATION_NAME] = commandName;\n    }\n    try {\n      const dbStatement = dbStatementSerializer(commandName, commandArgs);\n      if (dbStatement != null) {\n        if (this._semconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_STATEMENT] = dbStatement;\n        }\n        if (this._semconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_QUERY_TEXT] = dbStatement;\n        }\n      }\n    } catch (e) {\n      this._diag.error('dbStatementSerializer throw an exception', e, {\n        commandName,\n      });\n    }\n\n    const span = this.tracer.startSpan(\n      `${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`,\n      {\n        kind: SpanKind.CLIENT,\n        attributes,\n      }\n    );\n\n    const res = context.with(trace.setSpan(context.active(), span), () => {\n      return origFunction.apply(origThis, origArguments);\n    });\n    if (typeof res?.then === 'function') {\n      res.then(\n        (redisRes: unknown) => {\n          this._endSpanWithResponse(\n            span,\n            commandName,\n            commandArgs,\n            redisRes,\n            undefined\n          );\n        },\n        (err: any) => {\n          this._endSpanWithResponse(span, commandName, commandArgs, null, err);\n        }\n      );\n    } else {\n      const redisClientMultiCommand = res as {\n        [OTEL_OPEN_SPANS]?: Array;\n      };\n      redisClientMultiCommand[OTEL_OPEN_SPANS] =\n        redisClientMultiCommand[OTEL_OPEN_SPANS] || [];\n      redisClientMultiCommand[OTEL_OPEN_SPANS]!.push({\n        span,\n        commandName,\n        commandArgs,\n      });\n    }\n    return res;\n  }\n\n  private _endSpansWithRedisReplies(\n    openSpans: Array,\n    replies: unknown[],\n    isPipeline = false\n  ) {\n    if (!openSpans) {\n      return this._diag.error(\n        'cannot find open spans to end for redis multi/pipeline'\n      );\n    }\n    if (replies.length !== openSpans.length) {\n      return this._diag.error(\n        'number of multi command spans does not match response from redis'\n      );\n    }\n    // Determine a single operation name for the batch of commands.\n    // If all commands are identical, include the command name (e.g., \"MULTI SET\").\n    // Otherwise, use a generic \"MULTI\" or \"PIPELINE\" label for the span.\n    const allCommands = openSpans.map(s => s.commandName);\n    const allSameCommand = allCommands.every(cmd => cmd === allCommands[0]);\n    const operationName = allSameCommand\n      ? (isPipeline ? 'PIPELINE ' : 'MULTI ') + allCommands[0]\n      : isPipeline\n        ? 'PIPELINE'\n        : 'MULTI';\n\n    for (let i = 0; i < openSpans.length; i++) {\n      const { span, commandArgs } = openSpans[i];\n      const currCommandRes = replies[i];\n      const [res, err] =\n        currCommandRes instanceof Error\n          ? [null, currCommandRes]\n          : [currCommandRes, undefined];\n\n      if (this._semconvStability & SemconvStability.STABLE) {\n        span.setAttribute(ATTR_DB_OPERATION_NAME, operationName);\n      }\n\n      this._endSpanWithResponse(span, allCommands[i], commandArgs, res, err);\n    }\n  }\n\n  private _endSpanWithResponse(\n    span: Span,\n    commandName: string,\n    commandArgs: Array,\n    response: unknown,\n    error: Error | undefined\n  ) {\n    const { responseHook } = this.getConfig();\n    if (!error && responseHook) {\n      try {\n        responseHook(span, commandName, commandArgs, response);\n      } catch (err) {\n        this._diag.error('responseHook throw an exception', err);\n      }\n    }\n    if (error) {\n      span.recordException(error);\n      span.setStatus({ code: SpanStatusCode.ERROR, message: error?.message });\n    }\n    span.end();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  InstrumentationBase,\n  InstrumentationModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport { RedisInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { RedisInstrumentationV2_V3 } from './v2-v3/instrumentation';\nimport { TracerProvider } from '@opentelemetry/api';\nimport { RedisInstrumentationV4_V5 } from './v4-v5/instrumentation';\n\nconst DEFAULT_CONFIG: RedisInstrumentationConfig = {\n  requireParentSpan: false,\n};\n\n// Wrapper RedisInstrumentation that address all supported versions\nexport class RedisInstrumentation extends InstrumentationBase {\n  private instrumentationV2_V3: RedisInstrumentationV2_V3;\n  private instrumentationV4_V5: RedisInstrumentationV4_V5;\n\n  // this is used to bypass a flaw in the base class constructor, which is calling\n  // member functions before the constructor has a chance to fully initialize the member variables.\n  private initialized = false;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    const resolvedConfig = { ...DEFAULT_CONFIG, ...config };\n    super(PACKAGE_NAME, PACKAGE_VERSION, resolvedConfig);\n\n    this.instrumentationV2_V3 = new RedisInstrumentationV2_V3(this.getConfig());\n    this.instrumentationV4_V5 = new RedisInstrumentationV4_V5(this.getConfig());\n    this.initialized = true;\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    const newConfig = { ...DEFAULT_CONFIG, ...config };\n    super.setConfig(newConfig);\n    if (!this.initialized) {\n      return;\n    }\n\n    this.instrumentationV2_V3.setConfig(newConfig);\n    this.instrumentationV4_V5.setConfig(newConfig);\n  }\n\n  override init() {}\n\n  // Return underlying modules, as consumers (like https://github.com/DrewCorlin/opentelemetry-node-bundler-plugins) may\n  // expect them to be populated without knowing that this module wraps 2 instrumentations\n  override getModuleDefinitions(): InstrumentationModuleDefinition[] {\n    return [\n      ...this.instrumentationV2_V3.getModuleDefinitions(),\n      ...this.instrumentationV4_V5.getModuleDefinitions(),\n    ];\n  }\n\n  override setTracerProvider(tracerProvider: TracerProvider) {\n    super.setTracerProvider(tracerProvider);\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.setTracerProvider(tracerProvider);\n    this.instrumentationV4_V5.setTracerProvider(tracerProvider);\n  }\n\n  override enable() {\n    super.enable();\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.enable();\n    this.instrumentationV4_V5.enable();\n  }\n\n  override disable() {\n    super.disable();\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.disable();\n    this.instrumentationV4_V5.disable();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { RedisInstrumentation } from './redis';\nexport type {\n  DbStatementSerializer,\n  RedisInstrumentationConfig,\n  RedisResponseCustomAttributeFunction,\n} from './types';\n","import type { CommandArgs as IORedisCommandArgs } from '@opentelemetry/instrumentation-ioredis';\n\nconst SINGLE_ARG_COMMANDS = ['get', 'set', 'setex'];\n\nexport const GET_COMMANDS = ['get', 'mget'];\nexport const SET_COMMANDS = ['set', 'setex'];\n// todo: del, expire\n\n/** Checks if a given command is in the list of redis commands.\n *  Useful because commands can come in lowercase or uppercase (depending on the library). */\nexport function isInCommands(redisCommands: string[], command: string): boolean {\n  return redisCommands.includes(command.toLowerCase());\n}\n\n/** Determine cache operation based on redis statement */\nexport function getCacheOperation(\n  command: string,\n): 'cache.get' | 'cache.put' | 'cache.remove' | 'cache.flush' | undefined {\n  if (isInCommands(GET_COMMANDS, command)) {\n    return 'cache.get';\n  } else if (isInCommands(SET_COMMANDS, command)) {\n    return 'cache.put';\n  } else {\n    return undefined;\n  }\n}\n\nfunction keyHasPrefix(key: string, prefixes: string[]): boolean {\n  return prefixes.some(prefix => key.startsWith(prefix));\n}\n\n/** Safely converts a redis key to a string (comma-separated if there are multiple keys) */\nexport function getCacheKeySafely(redisCommand: string, cmdArgs: IORedisCommandArgs): string[] | undefined {\n  try {\n    if (cmdArgs.length === 0) {\n      return undefined;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const processArg = (arg: string | Buffer | number | any[]): string[] => {\n      if (typeof arg === 'string' || typeof arg === 'number' || Buffer.isBuffer(arg)) {\n        return [arg.toString()];\n      } else if (Array.isArray(arg)) {\n        return flatten(arg.map(arg => processArg(arg)));\n      } else {\n        return [''];\n      }\n    };\n\n    const firstArg = cmdArgs[0];\n    if (isInCommands(SINGLE_ARG_COMMANDS, redisCommand) && firstArg != null) {\n      return processArg(firstArg);\n    }\n\n    return flatten(cmdArgs.map(arg => processArg(arg)));\n  } catch {\n    return undefined;\n  }\n}\n\n/** Determines whether a redis operation should be considered as \"cache operation\" by checking if a key is prefixed.\n *  We only support certain commands (such as 'set', 'get', 'mget'). */\nexport function shouldConsiderForCache(redisCommand: string, keys: string[], prefixes: string[]): boolean {\n  if (!getCacheOperation(redisCommand)) {\n    return false;\n  }\n\n  for (const key of keys) {\n    if (keyHasPrefix(key, prefixes)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/** Calculates size based on the cache response value */\nexport function calculateCacheItemSize(response: unknown): number | undefined {\n  const getSize = (value: unknown): number | undefined => {\n    try {\n      if (Buffer.isBuffer(value)) return value.byteLength;\n      else if (typeof value === 'string') return value.length;\n      else if (typeof value === 'number') return value.toString().length;\n      else if (value === null || value === undefined) return 0;\n      return JSON.stringify(value).length;\n    } catch {\n      return undefined;\n    }\n  };\n\n  return Array.isArray(response)\n    ? response.reduce((acc: number | undefined, curr) => {\n        const size = getSize(curr);\n        return typeof size === 'number' ? (acc !== undefined ? acc + size : size) : acc;\n      }, 0)\n    : getSize(response);\n}\n\ntype NestedArray = Array | T>;\n\nfunction flatten(input: NestedArray): T[] {\n  const result: T[] = [];\n\n  const flattenHelper = (input: NestedArray): void => {\n    input.forEach((el: T | NestedArray) => {\n      if (Array.isArray(el)) {\n        flattenHelper(el);\n      } else {\n        result.push(el);\n      }\n    });\n  };\n\n  flattenHelper(input);\n  return result;\n}\n","import type { Span } from '@opentelemetry/api';\nimport type { RedisResponseCustomAttributeFunction } from '@opentelemetry/instrumentation-ioredis';\nimport { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  defineIntegration,\n  SEMANTIC_ATTRIBUTE_CACHE_HIT,\n  SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,\n  SEMANTIC_ATTRIBUTE_CACHE_KEY,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n  truncate,\n} from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport {\n  calculateCacheItemSize,\n  GET_COMMANDS,\n  getCacheKeySafely,\n  getCacheOperation,\n  isInCommands,\n  shouldConsiderForCache,\n} from '../../utils/redisCache';\n\ninterface RedisOptions {\n  /**\n   * Define cache prefixes for cache keys that should be captured as a cache span.\n   *\n   * Setting this to, for example, `['user:']` will capture cache keys that start with `user:`.\n   */\n  cachePrefixes?: string[];\n  /**\n   * Maximum length of the cache key added to the span description. If the key exceeds this length, it will be truncated.\n   *\n   * Passing `0` will use the full cache key without truncation.\n   *\n   * By default, the full cache key is used.\n   */\n  maxCacheKeyLength?: number;\n}\n\nconst INTEGRATION_NAME = 'Redis';\n\n/* Only exported for testing purposes */\nexport let _redisOptions: RedisOptions = {};\n\n/* Only exported for testing purposes */\nexport const cacheResponseHook: RedisResponseCustomAttributeFunction = (\n  span: Span,\n  redisCommand,\n  cmdArgs,\n  response,\n) => {\n  span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.redis');\n\n  const safeKey = getCacheKeySafely(redisCommand, cmdArgs);\n  const cacheOperation = getCacheOperation(redisCommand);\n\n  if (\n    !safeKey ||\n    !cacheOperation ||\n    !_redisOptions.cachePrefixes ||\n    !shouldConsiderForCache(redisCommand, safeKey, _redisOptions.cachePrefixes)\n  ) {\n    // not relevant for cache\n    return;\n  }\n\n  // otel/ioredis seems to be using the old standard, as there was a change to those params: https://github.com/open-telemetry/opentelemetry-specification/issues/3199\n  // We are using params based on the docs: https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/\n  const networkPeerAddress = spanToJSON(span).data['net.peer.name'];\n  const networkPeerPort = spanToJSON(span).data['net.peer.port'];\n  if (networkPeerPort && networkPeerAddress) {\n    span.setAttributes({ 'network.peer.address': networkPeerAddress, 'network.peer.port': networkPeerPort });\n  }\n\n  const cacheItemSize = calculateCacheItemSize(response);\n\n  if (cacheItemSize) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, cacheItemSize);\n  }\n\n  if (isInCommands(GET_COMMANDS, redisCommand) && cacheItemSize !== undefined) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_HIT, cacheItemSize > 0);\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: cacheOperation,\n    [SEMANTIC_ATTRIBUTE_CACHE_KEY]: safeKey,\n  });\n\n  // todo: change to string[] once EAP supports it\n  const spanDescription = safeKey.join(', ');\n\n  span.updateName(\n    _redisOptions.maxCacheKeyLength ? truncate(spanDescription, _redisOptions.maxCacheKeyLength) : spanDescription,\n  );\n};\n\nconst instrumentIORedis = generateInstrumentOnce(`${INTEGRATION_NAME}.IORedis`, () => {\n  return new IORedisInstrumentation({\n    responseHook: cacheResponseHook,\n  });\n});\n\nconst instrumentRedisModule = generateInstrumentOnce(`${INTEGRATION_NAME}.Redis`, () => {\n  return new RedisInstrumentation({\n    responseHook: cacheResponseHook,\n  });\n});\n\n/** To be able to preload all Redis OTel instrumentations with just one ID (\"Redis\"), all the instrumentations are generated in this one function  */\nexport const instrumentRedis = Object.assign(\n  (): void => {\n    instrumentIORedis();\n    instrumentRedisModule();\n\n    // todo: implement them gradually\n    // new LegacyRedisInstrumentation({}),\n  },\n  { id: INTEGRATION_NAME },\n);\n\nconst _redisIntegration = ((options: RedisOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      _redisOptions = options;\n      instrumentRedis();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [redis](https://www.npmjs.com/package/redis) and\n * [ioredis](https://www.npmjs.com/package/ioredis) libraries.\n *\n * For more information, see the [`redisIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/redis/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.redisIntegration()],\n * });\n * ```\n */\nexport const redisIntegration = defineIntegration(_redisIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as pgTypes from 'pg';\nimport type * as pgPoolTypes from 'pg-pool';\n\nexport type PostgresCallback = (err: Error, res: object) => unknown;\n\n// NB: this type describes the shape of a parsed, normalized form of the\n// connection information that's stored inside each pg.Client instance. It's\n// _not_ the same as the ConnectionConfig type exported from `@types/pg`. That\n// type defines how data must be _passed in_ when creating a new `pg.Client`,\n// which doesn't necessarily match the normalized internal form. E.g., a user\n// can call `new Client({ connectionString: '...' }), but `connectionString`\n// will never show up in the type below, because only the extracted host, port,\n// etc. are recorded in this normalized config. The keys listed below are also\n// incomplete, which is fine because the type is internal and these keys are the\n// only ones our code is reading. See https://github.com/brianc/node-postgres/blob/fde5ec586e49258dfc4a2fcd861fcdecb4794fc3/lib/client.js#L25\nexport interface PgParsedConnectionParams {\n  database?: string;\n  host?: string;\n  namespace?: string;\n  port?: number;\n  user?: string;\n}\n\nexport interface PgClientExtended extends pgTypes.Client {\n  connectionParameters: PgParsedConnectionParams;\n}\n\nexport type PgPoolCallback = (\n  err: Error,\n  client: any,\n  done: (release?: any) => void\n) => void;\n\nexport interface PgPoolOptionsParams {\n  allowExitOnIdle: boolean;\n  connectionString?: string; // connection string if provided directly\n  database: string;\n  host: string;\n  idleTimeoutMillis: number; // the minimum amount of time that an object may sit idle in the pool before it is eligible for eviction due to idle time\n  max: number;\n  maxClient: number; // maximum size of the pool\n  maxLifetimeSeconds: number;\n  maxUses: number;\n  namespace: string;\n  port: number;\n  user: string;\n}\n\nexport const EVENT_LISTENERS_SET = Symbol(\n  'opentelemetry.instrumentation.pg.eventListenersSet'\n);\n\nexport interface PgPoolExtended extends pgPoolTypes {\n  options: PgPoolOptionsParams;\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n\nexport type PgClientConnect = (callback?: Function) => Promise | void;\n","/*\n * Copyright The OpenTelemetry Authors\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// Postgresql specific attributes not covered by semantic conventions\nexport enum AttributeNames {\n  PG_VALUES = 'db.postgresql.values',\n  PG_PLAN = 'db.postgresql.plan',\n  IDLE_TIMEOUT_MILLIS = 'db.postgresql.idle.timeout.millis',\n  MAX_CLIENT = 'db.postgresql.max.client',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, instrumentation **SHOULD** use a combination of parameters that would make the name unique, for example, combining attributes `server.address`, `server.port`, and `db.namespace`, formatted as `server.address:server.port/db.namespace`. Instrumentations that generate connection pool name following different patterns **SHOULD** document it.\n *\n * @example myDataSource\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CLIENT_CONNECTION_POOL_NAME =\n  'db.client.connection.pool.name' as const;\n\n/**\n * The state of a connection in the pool\n *\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CLIENT_CONNECTION_STATE =\n  'db.client.connection.state' as const;\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle' as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used' as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql' as const;\n\n/**\n * The number of connections that are currently in state described by the `state` attribute\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_COUNT =\n  'db.client.connection.count' as const;\n\n/**\n * The number of current pending requests for an open connection\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS =\n  'db.client.connection.pending_requests' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// Contains span names produced by instrumentation\nexport enum SpanNames {\n  QUERY_PREFIX = 'pg.query',\n  CONNECT = 'pg.connect',\n  POOL_CONNECT = 'pg-pool.connect',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  context,\n  trace,\n  Span,\n  SpanStatusCode,\n  Tracer,\n  SpanKind,\n  diag,\n  UpDownCounter,\n  Attributes,\n} from '@opentelemetry/api';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  ATTR_DB_QUERY_TEXT,\n  DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CLIENT_CONNECTION_POOL_NAME,\n  ATTR_DB_CLIENT_CONNECTION_STATE,\n  DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n  DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  DB_SYSTEM_VALUE_POSTGRESQL,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_NET_PEER_PORT,\n  ATTR_NET_PEER_NAME,\n  ATTR_DB_STATEMENT,\n} from './semconv';\nimport {\n  PgClientExtended,\n  PostgresCallback,\n  PgPoolCallback,\n  PgPoolExtended,\n  PgParsedConnectionParams,\n  PgPoolOptionsParams,\n} from './internal-types';\nimport { PgInstrumentationConfig } from './types';\nimport type * as pgTypes from 'pg';\nimport {\n  safeExecuteInTheMiddle,\n  SemconvStability,\n} from '@opentelemetry/instrumentation';\nimport { SpanNames } from './enums/SpanNames';\n\n/**\n * Helper function to get a low cardinality span name from whatever info we have\n * about the query.\n *\n * This is tricky, because we don't have most of the information (table name,\n * operation name, etc) the spec recommends using to build a low-cardinality\n * value w/o parsing. So, we use db.name and assume that, if the query's a named\n * prepared statement, those `name` values will be low cardinality. If we don't\n * have a named prepared statement, we try to parse an operation (despite the\n * spec's warnings).\n *\n * @params dbName The name of the db against which this query is being issued,\n *   which could be missing if no db name was given at the time that the\n *   connection was established.\n * @params queryConfig Information we have about the query being issued, typed\n *   to reflect only the validation we've actually done on the args to\n *   `client.query()`. This will be undefined if `client.query()` was called\n *   with invalid arguments.\n */\nexport function getQuerySpanName(\n  dbName: string | undefined,\n  queryConfig?: { text: string; name?: unknown }\n) {\n  // NB: when the query config is invalid, we omit the dbName too, so that\n  // someone (or some tool) reading the span name doesn't misinterpret the\n  // dbName as being a prepared statement or sql commit name.\n  if (!queryConfig) return SpanNames.QUERY_PREFIX;\n\n  // Either the name of a prepared statement; or an attempted parse\n  // of the SQL command, normalized to uppercase; or unknown.\n  const command =\n    typeof queryConfig.name === 'string' && queryConfig.name\n      ? queryConfig.name\n      : parseNormalizedOperationName(queryConfig.text);\n\n  return `${SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`;\n}\n\nexport function parseNormalizedOperationName(queryText: string) {\n  // Trim the query text to handle leading/trailing whitespace\n  const trimmedQuery = queryText.trim();\n  const indexOfFirstSpace = trimmedQuery.indexOf(' ');\n  let sqlCommand =\n    indexOfFirstSpace === -1\n      ? trimmedQuery\n      : trimmedQuery.slice(0, indexOfFirstSpace);\n  sqlCommand = sqlCommand.toUpperCase();\n\n  // Handle query text being \"COMMIT;\", which has an extra semicolon before the space.\n  return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand;\n}\n\nexport function parseAndMaskConnectionString(connectionString: string): string {\n  try {\n    // Parse the connection string\n    const url = new URL(connectionString);\n\n    // Remove all auth information (username and password)\n    url.username = '';\n    url.password = '';\n\n    return url.toString();\n  } catch (e) {\n    // If parsing fails, return a generic connection string\n    return 'postgresql://localhost:5432/';\n  }\n}\n\nexport function getConnectionString(\n  params: PgParsedConnectionParams | PgPoolOptionsParams\n) {\n  if ('connectionString' in params && params.connectionString) {\n    return parseAndMaskConnectionString(params.connectionString);\n  }\n  const host = params.host || 'localhost';\n  const port = params.port || 5432;\n  const database = params.database || '';\n  return `postgresql://${host}:${port}/${database}`;\n}\n\nfunction getPort(port: number | undefined): number | undefined {\n  // Port may be NaN as parseInt() is used on the value, passing null will result in NaN being parsed.\n  // https://github.com/brianc/node-postgres/blob/2a8efbee09a284be12748ed3962bc9b816965e36/packages/pg/lib/connection-parameters.js#L66\n  if (Number.isInteger(port)) {\n    return port;\n  }\n\n  // Unable to find the default used in pg code, so falling back to 'undefined'.\n  return undefined;\n}\n\nexport function getSemanticAttributesFromConnection(\n  params: PgParsedConnectionParams,\n  semconvStability: SemconvStability\n) {\n  let attributes: Attributes = {};\n\n  if (semconvStability & SemconvStability.OLD) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n      [ATTR_DB_NAME]: params.database,\n      [ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n      [ATTR_DB_USER]: params.user,\n      [ATTR_NET_PEER_NAME]: params.host, // required\n      [ATTR_NET_PEER_PORT]: getPort(params.port),\n    };\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n      [ATTR_DB_NAMESPACE]: params.namespace,\n      [ATTR_SERVER_ADDRESS]: params.host,\n      [ATTR_SERVER_PORT]: getPort(params.port),\n    };\n  }\n\n  return attributes;\n}\n\nexport function getSemanticAttributesFromPoolConnection(\n  params: PgPoolOptionsParams,\n  semconvStability: SemconvStability\n) {\n  let url: URL | undefined;\n  try {\n    url = params.connectionString\n      ? new URL(params.connectionString)\n      : undefined;\n  } catch (e) {\n    url = undefined;\n  }\n  let attributes: Attributes = {\n    [AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis,\n    [AttributeNames.MAX_CLIENT]: params.maxClient,\n  };\n\n  if (semconvStability & SemconvStability.OLD) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n      [ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database,\n      [ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n      [ATTR_NET_PEER_NAME]: url?.hostname ?? params.host,\n      [ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port),\n      [ATTR_DB_USER]: url?.username ?? params.user,\n    };\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n      [ATTR_DB_NAMESPACE]: params.namespace,\n      [ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host,\n      [ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port),\n    };\n  }\n\n  return attributes;\n}\n\nexport function shouldSkipInstrumentation(\n  instrumentationConfig: PgInstrumentationConfig\n) {\n  return (\n    instrumentationConfig.requireParentSpan === true &&\n    trace.getSpan(context.active()) === undefined\n  );\n}\n\n// Create a span from our normalized queryConfig object,\n// or return a basic span if no queryConfig was given/could be created.\nexport function handleConfigQuery(\n  this: PgClientExtended,\n  tracer: Tracer,\n  instrumentationConfig: PgInstrumentationConfig,\n  semconvStability: SemconvStability,\n  queryConfig?: { text: string; values?: unknown; name?: unknown }\n) {\n  // Create child span.\n  const { connectionParameters } = this;\n  const dbName = connectionParameters.database;\n\n  const spanName = getQuerySpanName(dbName, queryConfig);\n  const span = tracer.startSpan(spanName, {\n    kind: SpanKind.CLIENT,\n    attributes: getSemanticAttributesFromConnection(\n      connectionParameters,\n      semconvStability\n    ),\n  });\n\n  if (!queryConfig) {\n    return span;\n  }\n\n  // Set attributes\n  if (queryConfig.text) {\n    if (semconvStability & SemconvStability.OLD) {\n      span.setAttribute(ATTR_DB_STATEMENT, queryConfig.text);\n    }\n    if (semconvStability & SemconvStability.STABLE) {\n      span.setAttribute(ATTR_DB_QUERY_TEXT, queryConfig.text);\n    }\n  }\n\n  if (\n    instrumentationConfig.enhancedDatabaseReporting &&\n    Array.isArray(queryConfig.values)\n  ) {\n    try {\n      const convertedValues = queryConfig.values.map(value => {\n        if (value == null) {\n          return 'null';\n        } else if (value instanceof Buffer) {\n          return value.toString();\n        } else if (typeof value === 'object') {\n          if (typeof value.toPostgres === 'function') {\n            return value.toPostgres();\n          }\n          return JSON.stringify(value);\n        } else {\n          //string, number\n          return value.toString();\n        }\n      });\n      span.setAttribute(AttributeNames.PG_VALUES, convertedValues);\n    } catch (e) {\n      diag.error('failed to stringify ', queryConfig.values, e);\n    }\n  }\n\n  // Set plan name attribute, if present\n  if (typeof queryConfig.name === 'string') {\n    span.setAttribute(AttributeNames.PG_PLAN, queryConfig.name);\n  }\n\n  return span;\n}\n\nexport function handleExecutionResult(\n  config: PgInstrumentationConfig,\n  span: Span,\n  pgResult: pgTypes.QueryResult | pgTypes.QueryArrayResult | unknown\n) {\n  if (typeof config.responseHook === 'function') {\n    safeExecuteInTheMiddle(\n      () => {\n        config.responseHook!(span, {\n          data: pgResult as pgTypes.QueryResult | pgTypes.QueryArrayResult,\n        });\n      },\n      err => {\n        if (err) {\n          diag.error('Error running response hook', err);\n        }\n      },\n      true\n    );\n  }\n}\n\nexport function patchCallback(\n  instrumentationConfig: PgInstrumentationConfig,\n  span: Span,\n  cb: PostgresCallback,\n  attributes: Attributes,\n  recordDuration: { (): void }\n): PostgresCallback {\n  return function patchedCallback(\n    this: PgClientExtended,\n    err: Error,\n    res: object\n  ) {\n    if (err) {\n      if (Object.prototype.hasOwnProperty.call(err, 'code')) {\n        attributes[ATTR_ERROR_TYPE] = (err as any)['code'];\n      }\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    } else {\n      handleExecutionResult(instrumentationConfig, span, res);\n    }\n\n    recordDuration();\n    span.end();\n    cb.call(this, err, res);\n  };\n}\n\nexport function getPoolName(pool: PgPoolOptionsParams): string {\n  let poolName = '';\n  poolName += (pool?.host ? `${pool.host}` : 'unknown_host') + ':';\n  poolName += (pool?.port ? `${pool.port}` : 'unknown_port') + '/';\n  poolName += pool?.database ? `${pool.database}` : 'unknown_database';\n\n  return poolName.trim();\n}\n\nexport interface poolConnectionsCounter {\n  used: number;\n  idle: number;\n  pending: number;\n}\n\nexport function updateCounter(\n  poolName: string,\n  pool: PgPoolExtended,\n  connectionCount: UpDownCounter,\n  connectionPendingRequests: UpDownCounter,\n  latestCounter: poolConnectionsCounter\n): poolConnectionsCounter {\n  const all = pool.totalCount;\n  const pending = pool.waitingCount;\n  const idle = pool.idleCount;\n  const used = all - idle;\n\n  connectionCount.add(used - latestCounter.used, {\n    [ATTR_DB_CLIENT_CONNECTION_STATE]: DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  connectionCount.add(idle - latestCounter.idle, {\n    [ATTR_DB_CLIENT_CONNECTION_STATE]: DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  connectionPendingRequests.add(pending - latestCounter.pending, {\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  return { used: used, idle: idle, pending: pending };\n}\n\nexport function patchCallbackPGPool(\n  span: Span,\n  cb: PgPoolCallback\n): PgPoolCallback {\n  return function patchedCallback(\n    this: PgPoolExtended,\n    err: Error,\n    res: object,\n    done: any\n  ) {\n    if (err) {\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    }\n    span.end();\n    cb.call(this, err, res, done);\n  };\n}\n\nexport function patchClientConnectCallback(span: Span, cb: Function): Function {\n  return function patchedClientConnectCallback(\n    this: pgTypes.Client,\n    err: Error\n  ) {\n    if (err) {\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    }\n    span.end();\n    cb.apply(this, arguments);\n  };\n}\n\n/**\n * Attempt to get a message string from a thrown value, while being quite\n * defensive, to recognize the fact that, in JS, any kind of value (even\n * primitives) can be thrown.\n */\nexport function getErrorMessage(e: unknown) {\n  return typeof e === 'object' && e !== null && 'message' in e\n    ? String((e as { message?: unknown }).message)\n    : undefined;\n}\n\nexport function isObjectWithTextString(it: unknown): it is ObjectWithText {\n  return (\n    typeof it === 'object' &&\n    typeof (it as null | { text?: unknown })?.text === 'string'\n  );\n}\n\nexport type ObjectWithText = {\n  text: string;\n  [k: string]: unknown;\n};\n\n/**\n * Generates a sanitized message for the error.\n * Only includes the error type and PostgreSQL error code, omitting any sensitive details.\n */\nexport function sanitizedErrorMessage(error: unknown): string {\n  const name = (error as any)?.name ?? 'PostgreSQLError';\n  const code = (error as any)?.code ?? 'UNKNOWN';\n\n  return `PostgreSQL error of type '${name}' occurred (code: ${code})`;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.66.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-pg';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n  InstrumentationNodeModuleFile,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  context,\n  trace,\n  Span,\n  SpanStatusCode,\n  SpanKind,\n  Histogram,\n  ValueType,\n  Attributes,\n  HrTime,\n  UpDownCounter,\n} from '@opentelemetry/api';\nimport type * as pgTypes from 'pg';\nimport type * as pgPoolTypes from 'pg-pool';\nimport {\n  PgClientConnect,\n  PgClientExtended,\n  PostgresCallback,\n  PgPoolExtended,\n  PgPoolCallback,\n  EVENT_LISTENERS_SET,\n} from './internal-types';\nimport { PgInstrumentationConfig } from './types';\nimport * as utils from './utils';\nimport { addSqlCommenterComment } from '@opentelemetry/sql-common';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { SpanNames } from './enums/SpanNames';\nimport {\n  hrTime,\n  hrTimeDuration,\n  hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_SERVER_PORT,\n  ATTR_SERVER_ADDRESS,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_SYSTEM_NAME,\n  METRIC_DB_CLIENT_OPERATION_DURATION,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  METRIC_DB_CLIENT_CONNECTION_COUNT,\n  METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,\n  ATTR_DB_SYSTEM,\n  DB_SYSTEM_VALUE_POSTGRESQL,\n} from './semconv';\n\nfunction extractModuleExports(module: any) {\n  return module[Symbol.toStringTag] === 'Module'\n    ? module.default // ESM\n    : module; // CommonJS\n}\n\nexport class PgInstrumentation extends InstrumentationBase {\n  declare private _operationDuration: Histogram;\n  declare private _connectionsCount: UpDownCounter;\n  declare private _connectionPendingRequests: UpDownCounter;\n  // Pool events connect, acquire, release and remove can be called\n  // multiple times without changing the values of total, idle and waiting\n  // connections. The _connectionsCounter is used to keep track of latest\n  // values and only update the metrics _connectionsCount and _connectionPendingRequests\n  // when the value change.\n  private _connectionsCounter: utils.poolConnectionsCounter = {\n    used: 0,\n    idle: 0,\n    pending: 0,\n  };\n  private _semconvStability: SemconvStability;\n\n  constructor(config: PgInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override _updateMetricInstruments() {\n    this._operationDuration = this.meter.createHistogram(\n      METRIC_DB_CLIENT_OPERATION_DURATION,\n      {\n        description: 'Duration of database client operations.',\n        unit: 's',\n        valueType: ValueType.DOUBLE,\n        advice: {\n          explicitBucketBoundaries: [\n            0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10,\n          ],\n        },\n      }\n    );\n\n    this._connectionsCounter = {\n      idle: 0,\n      pending: 0,\n      used: 0,\n    };\n    this._connectionsCount = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTION_COUNT,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n    this._connectionPendingRequests = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,\n      {\n        description:\n          'The number of current pending requests for an open connection.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  protected init() {\n    const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9'];\n    const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4'];\n\n    const modulePgNativeClient = new InstrumentationNodeModuleFile(\n      'pg/lib/native/client.js',\n      SUPPORTED_PG_VERSIONS,\n      this._patchPgClient.bind(this),\n      this._unpatchPgClient.bind(this)\n    );\n\n    const modulePgClient = new InstrumentationNodeModuleFile(\n      'pg/lib/client.js',\n      SUPPORTED_PG_VERSIONS,\n      this._patchPgClient.bind(this),\n      this._unpatchPgClient.bind(this)\n    );\n\n    const modulePG = new InstrumentationNodeModuleDefinition(\n      'pg',\n      SUPPORTED_PG_VERSIONS,\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n\n        this._patchPgClient(moduleExports.Client);\n        return module;\n      },\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n\n        this._unpatchPgClient(moduleExports.Client);\n        return module;\n      },\n      [modulePgClient, modulePgNativeClient]\n    );\n\n    const modulePGPool = new InstrumentationNodeModuleDefinition(\n      'pg-pool',\n      SUPPORTED_PG_POOL_VERSIONS,\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n        if (isWrapped(moduleExports.prototype.connect)) {\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n        this._wrap(\n          moduleExports.prototype,\n          'connect',\n          this._getPoolConnectPatch() as any\n        );\n        return moduleExports;\n      },\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n        if (isWrapped(moduleExports.prototype.connect)) {\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n      }\n    );\n\n    return [modulePG, modulePGPool];\n  }\n\n  private _patchPgClient(module: any) {\n    if (!module) {\n      return;\n    }\n\n    const moduleExports = extractModuleExports(module);\n\n    if (isWrapped(moduleExports.prototype.query)) {\n      this._unwrap(moduleExports.prototype, 'query');\n    }\n\n    if (isWrapped(moduleExports.prototype.connect)) {\n      this._unwrap(moduleExports.prototype, 'connect');\n    }\n\n    this._wrap(\n      moduleExports.prototype,\n      'query',\n      this._getClientQueryPatch() as any\n    );\n\n    this._wrap(\n      moduleExports.prototype,\n      'connect',\n      this._getClientConnectPatch() as any\n    );\n\n    return module;\n  }\n\n  private _unpatchPgClient(module: any) {\n    const moduleExports = extractModuleExports(module);\n\n    if (isWrapped(moduleExports.prototype.query)) {\n      this._unwrap(moduleExports.prototype, 'query');\n    }\n\n    if (isWrapped(moduleExports.prototype.connect)) {\n      this._unwrap(moduleExports.prototype, 'connect');\n    }\n\n    return module;\n  }\n\n  private _getClientConnectPatch() {\n    const plugin = this;\n    return (original: PgClientConnect) => {\n      return function connect(this: pgTypes.Client, callback?: Function) {\n        const config = plugin.getConfig();\n\n        if (\n          utils.shouldSkipInstrumentation(config) ||\n          config.ignoreConnectSpans\n        ) {\n          return original.call(this, callback);\n        }\n\n        const span = plugin.tracer.startSpan(SpanNames.CONNECT, {\n          kind: SpanKind.CLIENT,\n          attributes: utils.getSemanticAttributesFromConnection(\n            this,\n            plugin._semconvStability\n          ),\n        });\n\n        if (callback) {\n          const parentSpan = trace.getSpan(context.active());\n          callback = utils.patchClientConnectCallback(span, callback);\n          if (parentSpan) {\n            callback = context.bind(context.active(), callback);\n          }\n        }\n\n        const connectResult: unknown = context.with(\n          trace.setSpan(context.active(), span),\n          () => {\n            return original.call(this, callback);\n          }\n        );\n\n        return handleConnectResult(span, connectResult);\n      };\n    };\n  }\n\n  private recordOperationDuration(attributes: Attributes, startTime: HrTime) {\n    const metricsAttributes: Attributes = {};\n    const keysToCopy: string[] = [\n      ATTR_DB_NAMESPACE,\n      ATTR_ERROR_TYPE,\n      ATTR_SERVER_PORT,\n      ATTR_SERVER_ADDRESS,\n      ATTR_DB_OPERATION_NAME,\n    ];\n    if (this._semconvStability & SemconvStability.OLD) {\n      keysToCopy.push(ATTR_DB_SYSTEM);\n    }\n    if (this._semconvStability & SemconvStability.STABLE) {\n      keysToCopy.push(ATTR_DB_SYSTEM_NAME);\n    }\n\n    keysToCopy.forEach(key => {\n      if (key in attributes) {\n        metricsAttributes[key] = attributes[key];\n      }\n    });\n\n    const durationSeconds =\n      hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000;\n    this._operationDuration.record(durationSeconds, metricsAttributes);\n  }\n\n  private _getClientQueryPatch() {\n    const plugin = this;\n    return (original: typeof pgTypes.Client.prototype.query) => {\n      this._diag.debug('Patching pg.Client.prototype.query');\n      return function query(this: PgClientExtended, ...args: unknown[]) {\n        if (utils.shouldSkipInstrumentation(plugin.getConfig())) {\n          return original.apply(this, args as never);\n        }\n        const startTime = hrTime();\n\n        // client.query(text, cb?), client.query(text, values, cb?), and\n        // client.query(configObj, cb?) are all valid signatures. We construct\n        // a queryConfig obj from all (valid) signatures to build the span in a\n        // unified way. We verify that we at least have query text, and code\n        // defensively when dealing with `queryConfig` after that (to handle all\n        // the other invalid cases, like a non-array for values being provided).\n        // The type casts here reflect only what we've actually validated.\n        const arg0 = args[0];\n        const firstArgIsString = typeof arg0 === 'string';\n        const firstArgIsQueryObjectWithText =\n          utils.isObjectWithTextString(arg0);\n\n        // TODO: remove the `as ...` casts below when the TS version is upgraded.\n        // Newer TS versions will use the result of firstArgIsQueryObjectWithText\n        // to properly narrow arg0, but TS 4.3.5 does not.\n        const queryConfig = firstArgIsString\n          ? {\n              text: arg0 as string,\n              values: Array.isArray(args[1]) ? args[1] : undefined,\n            }\n          : firstArgIsQueryObjectWithText\n            ? {\n                ...(arg0 as any),\n                name: arg0.name,\n                text: arg0.text,\n                values:\n                  (arg0 as any).values ??\n                  (Array.isArray(args[1]) ? args[1] : undefined),\n              }\n            : undefined;\n\n        const attributes: Attributes = {\n          [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n          [ATTR_DB_NAMESPACE]: this.database,\n          [ATTR_SERVER_PORT]: this.connectionParameters.port,\n          [ATTR_SERVER_ADDRESS]: this.connectionParameters.host,\n        };\n\n        if (queryConfig?.text) {\n          attributes[ATTR_DB_OPERATION_NAME] =\n            utils.parseNormalizedOperationName(queryConfig?.text);\n        }\n\n        const recordDuration = () => {\n          plugin.recordOperationDuration(attributes, startTime);\n        };\n\n        const instrumentationConfig = plugin.getConfig();\n\n        const span = utils.handleConfigQuery.call(\n          this,\n          plugin.tracer,\n          instrumentationConfig,\n          plugin._semconvStability,\n          queryConfig\n        );\n\n        // Modify query text w/ a tracing comment before invoking original for\n        // tracing, but only if args[0] has one of our expected shapes.\n        if (instrumentationConfig.addSqlCommenterCommentToQueries) {\n          if (firstArgIsString) {\n            args[0] = addSqlCommenterComment(span, arg0);\n          } else if (firstArgIsQueryObjectWithText && !('name' in arg0)) {\n            // In the case of a query object, we need to ensure there's no name field\n            // as this indicates a prepared query, where the comment would remain the same\n            // for every invocation and contain an outdated trace context.\n            args[0] = {\n              ...arg0,\n              text: addSqlCommenterComment(span, arg0.text),\n            };\n          }\n        }\n\n        // Bind callback (if any) to parent span (if any)\n        if (args.length > 0) {\n          const parentSpan = trace.getSpan(context.active());\n          if (typeof args[args.length - 1] === 'function') {\n            // Patch ParameterQuery callback\n            args[args.length - 1] = utils.patchCallback(\n              instrumentationConfig,\n              span,\n              args[args.length - 1] as PostgresCallback, // nb: not type safe.\n              attributes,\n              recordDuration\n            );\n\n            // If a parent span exists, bind the callback\n            if (parentSpan) {\n              args[args.length - 1] = context.bind(\n                context.active(),\n                args[args.length - 1]\n              );\n            }\n          } else if (typeof queryConfig?.callback === 'function') {\n            // Patch ConfigQuery callback\n            let callback = utils.patchCallback(\n              plugin.getConfig(),\n              span,\n              queryConfig.callback as PostgresCallback, // nb: not type safe.\n              attributes,\n              recordDuration\n            );\n\n            // If a parent span existed, bind the callback\n            if (parentSpan) {\n              callback = context.bind(context.active(), callback);\n            }\n\n            (args[0] as { callback?: PostgresCallback }).callback = callback;\n          }\n        }\n\n        const { requestHook } = instrumentationConfig;\n        if (typeof requestHook === 'function' && queryConfig) {\n          safeExecuteInTheMiddle(\n            () => {\n              // pick keys to expose explicitly, so we're not leaking pg package\n              // internals that are subject to change\n              const { database, host, port, user } = this.connectionParameters;\n              const connection = { database, host, port, user };\n\n              requestHook(span, {\n                connection,\n                query: {\n                  text: queryConfig.text,\n                  // nb: if `client.query` is called with illegal arguments\n                  // (e.g., if `queryConfig.values` is passed explicitly, but a\n                  // non-array is given), then the type casts will be wrong. But\n                  // we leave it up to the queryHook to handle that, and we\n                  // catch and swallow any errors it throws. The other options\n                  // are all worse. E.g., we could leave `queryConfig.values`\n                  // and `queryConfig.name` as `unknown`, but then the hook body\n                  // would be forced to validate (or cast) them before using\n                  // them, which seems incredibly cumbersome given that these\n                  // casts will be correct 99.9% of the time -- and pg.query\n                  // will immediately throw during development in the other .1%\n                  // of cases. Alternatively, we could simply skip calling the\n                  // hook when `values` or `name` don't have the expected type,\n                  // but that would add unnecessary validation overhead to every\n                  // hook invocation and possibly be even more confusing/unexpected.\n                  values: queryConfig.values as unknown[],\n                  name: queryConfig.name as string | undefined,\n                },\n              });\n            },\n            err => {\n              if (err) {\n                plugin._diag.error('Error running query hook', err);\n              }\n            },\n            true\n          );\n        }\n\n        let result: unknown;\n        try {\n          result = original.apply(this, args as never);\n        } catch (e: unknown) {\n          if (e instanceof Error) {\n            span.recordException(utils.sanitizedErrorMessage(e));\n          }\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: utils.getErrorMessage(e),\n          });\n          span.end();\n          throw e;\n        }\n\n        // Bind promise to parent span and end the span\n        if (result instanceof Promise) {\n          return result\n            .then((result: unknown) => {\n              // Return a pass-along promise which ends the span and then goes to user's orig resolvers\n              return new Promise(resolve => {\n                utils.handleExecutionResult(plugin.getConfig(), span, result);\n                recordDuration();\n                span.end();\n                resolve(result);\n              });\n            })\n            .catch((error: Error) => {\n              return new Promise((_, reject) => {\n                if (error instanceof Error) {\n                  span.recordException(utils.sanitizedErrorMessage(error));\n                }\n                span.setStatus({\n                  code: SpanStatusCode.ERROR,\n                  message: error.message,\n                });\n                recordDuration();\n                span.end();\n                reject(error);\n              });\n            });\n        }\n\n        // else returns void\n        return result; // void\n      };\n    };\n  }\n\n  private _setPoolConnectEventListeners(pgPool: PgPoolExtended) {\n    if (pgPool[EVENT_LISTENERS_SET]) return;\n    const poolName = utils.getPoolName(pgPool.options);\n\n    pgPool.on('connect', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('acquire', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('remove', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('release' as any, () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n    pgPool[EVENT_LISTENERS_SET] = true;\n  }\n\n  private _getPoolConnectPatch() {\n    const plugin = this;\n    return (originalConnect: typeof pgPoolTypes.prototype.connect) => {\n      return function connect(this: PgPoolExtended, callback?: PgPoolCallback) {\n        const config = plugin.getConfig();\n\n        if (utils.shouldSkipInstrumentation(config)) {\n          return originalConnect.call(this, callback as any);\n        }\n\n        // Still set up event listeners for metrics even when skipping spans\n        plugin._setPoolConnectEventListeners(this);\n\n        if (config.ignoreConnectSpans) {\n          return originalConnect.call(this, callback as any);\n        }\n\n        // setup span\n        const span = plugin.tracer.startSpan(SpanNames.POOL_CONNECT, {\n          kind: SpanKind.CLIENT,\n          attributes: utils.getSemanticAttributesFromPoolConnection(\n            this.options,\n            plugin._semconvStability\n          ),\n        });\n\n        if (callback) {\n          const parentSpan = trace.getSpan(context.active());\n          callback = utils.patchCallbackPGPool(\n            span,\n            callback\n          ) as PgPoolCallback;\n          // If a parent span exists, bind the callback\n          if (parentSpan) {\n            callback = context.bind(context.active(), callback);\n          }\n        }\n\n        const connectResult: unknown = context.with(\n          trace.setSpan(context.active(), span),\n          () => {\n            return originalConnect.call(this, callback as any);\n          }\n        );\n\n        return handleConnectResult(span, connectResult);\n      };\n    };\n  }\n}\n\nfunction handleConnectResult(span: Span, connectResult: unknown) {\n  if (!(connectResult instanceof Promise)) {\n    return connectResult;\n  }\n\n  const connectResultPromise = connectResult as Promise;\n  return context.bind(\n    context.active(),\n    connectResultPromise\n      .then(result => {\n        span.end();\n        return result;\n      })\n      .catch((error: unknown) => {\n        if (error instanceof Error) {\n          span.recordException(utils.sanitizedErrorMessage(error));\n        }\n        span.setStatus({\n          code: SpanStatusCode.ERROR,\n          message: utils.getErrorMessage(error),\n        });\n        span.end();\n        return Promise.reject(error);\n      })\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { PgInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\nexport type {\n  PgInstrumentationConfig,\n  PgInstrumentationExecutionRequestHook,\n  PgInstrumentationExecutionResponseHook,\n  PgRequestHookInformation,\n  PgResponseHookInformation,\n} from './types';\n","import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\ninterface PostgresIntegrationOptions {\n  ignoreConnectSpans?: boolean;\n}\n\nconst INTEGRATION_NAME = 'Postgres';\n\nexport const instrumentPostgres = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  PgInstrumentation,\n  (options?: PostgresIntegrationOptions) => ({\n    requireParentSpan: true,\n    requestHook(span) {\n      addOriginToSpan(span, 'auto.db.otel.postgres');\n    },\n    ignoreConnectSpans: options?.ignoreConnectSpans ?? false,\n  }),\n);\n\nconst _postgresIntegration = ((options?: PostgresIntegrationOptions) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPostgres(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [pg](https://www.npmjs.com/package/pg) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.postgresIntegration()],\n * });\n * ```\n */\nexport const postgresIntegration = defineIntegration(_postgresIntegration);\n","// Instrumentation for https://github.com/porsager/postgres\n\nimport { context, trace } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_RESPONSE_STATUS_CODE,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_ERROR_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  debug,\n  defineIntegration,\n  instrumentPostgresJsSql,\n  replaceExports,\n  SDK_VERSION,\n  SPAN_STATUS_ERROR,\n  startSpanManual,\n} from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\nconst INTEGRATION_NAME = 'PostgresJs';\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <4'];\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\ntype PostgresConnectionContext = {\n  ATTR_DB_NAMESPACE?: string; // Database name\n  ATTR_SERVER_ADDRESS?: string; // Hostname or IP address of the database server\n  ATTR_SERVER_PORT?: string; // Port number of the database server\n};\n\n// Marker to track if a query was created from an instrumented sql instance\n// This prevents double-spanning when both wrapper and prototype patches are active\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\ntype PostgresJsInstrumentationConfig = InstrumentationConfig & {\n  /**\n   * Whether to require a parent span for the instrumentation.\n   * If set to true, the instrumentation will only create spans if there is a parent span\n   * available in the current scope.\n   * @default true\n   */\n  requireParentSpan?: boolean;\n  /**\n   * Hook to modify the span before it is started.\n   * This can be used to set additional attributes or modify the span in any way.\n   */\n  requestHook?: (span: Span, sanitizedSqlQuery: string, postgresConnectionContext?: PostgresConnectionContext) => void;\n};\n\nexport const instrumentPostgresJs = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  (options?: PostgresJsInstrumentationConfig) =>\n    new PostgresJsInstrumentation({\n      requireParentSpan: options?.requireParentSpan ?? true,\n      requestHook: options?.requestHook,\n    }),\n);\n\n/**\n * Instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n * This instrumentation captures postgresjs queries and their attributes.\n *\n * Uses internal Sentry patching patterns to support both CommonJS and ESM environments.\n */\nexport class PostgresJsInstrumentation extends InstrumentationBase {\n  public constructor(config: PostgresJsInstrumentationConfig) {\n    super('sentry-postgres-js', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by patching the postgres module.\n   * Uses two complementary approaches:\n   * 1. Main function wrapper: instruments sql instances created AFTER instrumentation is set up (CJS + ESM)\n   * 2. Query.prototype patch: fallback for sql instances created BEFORE instrumentation (CJS only)\n   */\n  public init(): InstrumentationNodeModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      'postgres',\n      SUPPORTED_VERSIONS,\n      exports => {\n        try {\n          return this._patchPostgres(exports);\n        } catch (e) {\n          DEBUG_BUILD && debug.error('Failed to patch postgres module:', e);\n          return exports;\n        }\n      },\n      exports => exports,\n    );\n\n    // Add fallback Query.prototype patching for pre-existing sql instances (CJS only)\n    // This catches queries from sql instances created before Sentry was initialized\n    ['src', 'cf/src', 'cjs/src'].forEach(path => {\n      module.files.push(\n        new InstrumentationNodeModuleFile(\n          `postgres/${path}/query.js`,\n          SUPPORTED_VERSIONS,\n          this._patchQueryPrototype.bind(this),\n          this._unpatchQueryPrototype.bind(this),\n        ),\n      );\n    });\n\n    return module;\n  }\n\n  /**\n   * Patches the postgres module by wrapping the main export function.\n   * This intercepts the creation of sql instances and instruments them.\n   */\n  private _patchPostgres(exports: { [key: string]: unknown }): { [key: string]: unknown } {\n    // In CJS: exports is the function itself\n    // In ESM: exports.default is the function\n    const isFunction = typeof exports === 'function';\n    const Original = isFunction ? exports : exports.default;\n\n    if (typeof Original !== 'function') {\n      DEBUG_BUILD && debug.warn('postgres module does not export a function. Skipping instrumentation.');\n      return exports;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this;\n\n    const WrappedPostgres = function (this: unknown, ...args: unknown[]): unknown {\n      const sql = Reflect.construct(Original as (...args: unknown[]) => unknown, args);\n\n      // Validate that construction succeeded and returned a valid function object\n      if (!sql || typeof sql !== 'function') {\n        DEBUG_BUILD && debug.warn('postgres() did not return a valid instance');\n        return sql;\n      }\n\n      // Delegate to the portable instrumentation from @sentry/core\n      const config = self.getConfig();\n      return instrumentPostgresJsSql(sql, {\n        requireParentSpan: config.requireParentSpan,\n        requestHook: config.requestHook,\n      });\n    };\n\n    Object.setPrototypeOf(WrappedPostgres, Original);\n    Object.setPrototypeOf(WrappedPostgres.prototype, (Original as { prototype: object }).prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedPostgres, key, descriptor);\n        }\n      }\n    }\n\n    // For CJS: the exports object IS the function, so return the wrapped function\n    // For ESM: replace the default export\n    if (isFunction) {\n      return WrappedPostgres as unknown as { [key: string]: unknown };\n    } else {\n      replaceExports(exports, 'default', WrappedPostgres);\n      return exports;\n    }\n  }\n\n  /**\n   * Determines whether a span should be created based on the current context.\n   * If `requireParentSpan` is set to true in the configuration, a span will\n   * only be created if there is a parent span available.\n   */\n  private _shouldCreateSpans(): boolean {\n    const config = this.getConfig();\n    const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n    return hasParentSpan || !config.requireParentSpan;\n  }\n\n  /**\n   * Extracts DB operation name from SQL query and sets it on the span.\n   */\n  private _setOperationName(span: Span, sanitizedQuery: string | undefined, command?: string): void {\n    if (command) {\n      span.setAttribute(ATTR_DB_OPERATION_NAME, command);\n      return;\n    }\n    // Fallback: extract operation from the SQL query\n    const operationMatch = sanitizedQuery?.match(SQL_OPERATION_REGEX);\n    if (operationMatch?.[1]) {\n      span.setAttribute(ATTR_DB_OPERATION_NAME, operationMatch[1].toUpperCase());\n    }\n  }\n\n  /**\n   * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n   *\n   * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n   *   strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n   *   returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n   */\n  private _reconstructQuery(strings: string[] | undefined): string | undefined {\n    if (!strings?.length) {\n      return undefined;\n    }\n    if (strings.length === 1) {\n      return strings[0] || undefined;\n    }\n    // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n    return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n  }\n\n  /**\n   * Sanitize SQL query as per the OTEL semantic conventions\n   * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n   *\n   * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n   * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n   */\n  private _sanitizeSqlQuery(sqlQuery: string | undefined): string {\n    if (!sqlQuery) {\n      return 'Unknown SQL Query';\n    }\n\n    return (\n      sqlQuery\n        // Remove comments first (they may contain newlines and extra spaces)\n        .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n        .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n        .replace(/;\\s*$/, '') // Remove trailing semicolons\n        // Collapse whitespace to a single space (after removing comments)\n        .replace(/\\s+/g, ' ')\n        .trim() // Remove extra spaces and trim\n        // Sanitize hex/binary literals before string literals\n        .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n        .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n        // Sanitize string literals (handles escaped quotes)\n        .replace(/'(?:[^']|'')*'/g, '?')\n        // Sanitize hex numbers\n        .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n        // Sanitize boolean literals\n        .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n        // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n        .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n        .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n        .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n        .replace(/(? Promise) & {\n          __sentry_original__?: (...args: unknown[]) => Promise;\n        };\n      };\n    };\n  }): typeof moduleExports {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this;\n    const originalHandle = moduleExports.Query.prototype.handle;\n\n    moduleExports.Query.prototype.handle = async function (\n      this: {\n        resolve: unknown;\n        reject: unknown;\n        strings?: string[];\n      },\n      ...args: unknown[]\n    ): Promise {\n      // Skip if this query came from an instrumented sql instance (already handled by wrapper)\n      if ((this as Record)[QUERY_FROM_INSTRUMENTED_SQL]) {\n        return originalHandle.apply(this, args);\n      }\n\n      // Skip if we shouldn't create spans\n      if (!self._shouldCreateSpans()) {\n        return originalHandle.apply(this, args);\n      }\n\n      const fullQuery = self._reconstructQuery(this.strings);\n      const sanitizedSqlQuery = self._sanitizeSqlQuery(fullQuery);\n\n      return startSpanManual(\n        {\n          name: sanitizedSqlQuery || 'postgresjs.query',\n          op: 'db',\n        },\n        (span: Span) => {\n          addOriginToSpan(span, 'auto.db.postgresjs');\n\n          span.setAttributes({\n            [ATTR_DB_SYSTEM_NAME]: 'postgres',\n            [ATTR_DB_QUERY_TEXT]: sanitizedSqlQuery,\n          });\n\n          // Note: No connection context available for pre-existing instances\n          // because the sql instance wasn't created through our instrumented wrapper\n\n          const config = self.getConfig();\n          const { requestHook } = config;\n          if (requestHook) {\n            safeExecuteInTheMiddle(\n              () => requestHook(span, sanitizedSqlQuery, undefined),\n              e => {\n                if (e) {\n                  span.setAttribute('sentry.hook.error', 'requestHook failed');\n                  DEBUG_BUILD && debug.error(`Error in requestHook for ${INTEGRATION_NAME} integration:`, e);\n                }\n              },\n              true,\n            );\n          }\n\n          // Wrap resolve to end span on success\n          const originalResolve = this.resolve;\n          this.resolve = new Proxy(originalResolve as (...args: unknown[]) => unknown, {\n            apply: (resolveTarget, resolveThisArg, resolveArgs: [{ command?: string }]) => {\n              try {\n                self._setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n                span.end();\n              } catch (e) {\n                DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n              }\n              return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n            },\n          });\n\n          // Wrap reject to end span on error\n          const originalReject = this.reject;\n          this.reject = new Proxy(originalReject as (...args: unknown[]) => unknown, {\n            apply: (rejectTarget, rejectThisArg, rejectArgs: { message?: string; code?: string; name?: string }[]) => {\n              try {\n                span.setStatus({\n                  code: SPAN_STATUS_ERROR,\n                  message: rejectArgs?.[0]?.message || 'unknown_error',\n                });\n                span.setAttribute(ATTR_DB_RESPONSE_STATUS_CODE, rejectArgs?.[0]?.code || 'unknown');\n                span.setAttribute(ATTR_ERROR_TYPE, rejectArgs?.[0]?.name || 'unknown');\n                self._setOperationName(span, sanitizedSqlQuery);\n                span.end();\n              } catch (e) {\n                DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n              }\n              return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n            },\n          });\n\n          try {\n            return originalHandle.apply(this, args);\n          } catch (e) {\n            span.setStatus({\n              code: SPAN_STATUS_ERROR,\n              message: e instanceof Error ? e.message : 'unknown_error',\n            });\n            span.end();\n            throw e;\n          }\n        },\n      );\n    };\n\n    // Store original for unpatch - must be set on the NEW patched function\n    moduleExports.Query.prototype.handle.__sentry_original__ = originalHandle;\n\n    return moduleExports;\n  }\n\n  /**\n   * Restores the original Query.prototype.handle method.\n   */\n  private _unpatchQueryPrototype(moduleExports: {\n    Query: {\n      prototype: {\n        handle: ((...args: unknown[]) => Promise) & {\n          __sentry_original__?: (...args: unknown[]) => Promise;\n        };\n      };\n    };\n  }): typeof moduleExports {\n    if (moduleExports.Query.prototype.handle.__sentry_original__) {\n      moduleExports.Query.prototype.handle = moduleExports.Query.prototype.handle.__sentry_original__;\n    }\n    return moduleExports;\n  }\n}\n\nconst _postgresJsIntegration = ((options?: PostgresJsInstrumentationConfig) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPostgresJs(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.postgresJsIntegration()],\n * });\n * ```\n */\n\nexport const postgresJsIntegration = defineIntegration(_postgresJsIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum SemconvStability {\n  /** Emit only stable semantic conventions. */\n  STABLE = 0x1,\n  /** Emit only old semantic conventions. */\n  OLD = 0x2,\n  /** Emit both stable and old semantic conventions. */\n  DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n  | 'http'\n  | 'messaging'\n  | 'database'\n  | 'k8s'\n  | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n *  import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n *  export class FooInstrumentation extends InstrumentationBase {\n *    private _semconvStability: SemconvStability;\n *    constructor(config: FooInstrumentationConfig = {}) {\n *      super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n *      // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n *      );\n *\n *      // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n *      // the web where there are no envvars).\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        config?.semconvStabilityOptIn\n *      );\n *    }\n *  }\n *\n *  // Then, to apply semconv, use the following or similar:\n *  if (this._semconvStability & SemconvStability.OLD) {\n *    // ...\n *  }\n *  if (this._semconvStability & SemconvStability.STABLE) {\n *    // ...\n *  }\n *\n */\nexport function semconvStabilityFromStr(\n  namespace: SemConvStabilityNamespace,\n  str: string | undefined\n) {\n  let semconvStability = SemconvStability.OLD;\n\n  // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n  const entries = str\n    ?.split(',')\n    .map(v => v.trim())\n    .filter(s => s !== '');\n  for (const entry of entries ?? []) {\n    if (entry.toLowerCase() === namespace + '/dup') {\n      // DUPLICATE takes highest precedence.\n      semconvStability = SemconvStability.DUPLICATE;\n      break;\n    } else if (entry.toLowerCase() === namespace) {\n      semconvStability = SemconvStability.STABLE;\n    }\n  }\n\n  return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n  moduleName: string;\n  onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n  'afterEach',\n  'after',\n  'beforeEach',\n  'before',\n  'describe',\n  'it',\n].every(fn => {\n  // @ts-expect-error TS7053: Element implicitly has an 'any' type\n  return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n  private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n  private static _instance?: RequireInTheMiddleSingleton;\n\n  private constructor() {\n    this._initialize();\n  }\n\n  private _initialize() {\n    new Hook(\n      // Intercept all `require` calls; we will filter the matching ones below\n      null,\n      { internals: true },\n      (exports, name, basedir) => {\n        // For internal files on Windows, `name` will use backslash as the path separator\n        const normalizedModuleName = normalizePathSeparators(name);\n\n        const matches = this._moduleNameTrie.search(normalizedModuleName, {\n          maintainInsertionOrder: true,\n          // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n          // This matches the behavior of `require-in-the-middle`.\n          // `basedir` is always `undefined` for core modules.\n          fullOnly: basedir === undefined,\n        });\n\n        for (const { onRequire } of matches) {\n          exports = onRequire(exports, name, basedir);\n        }\n\n        return exports;\n      }\n    );\n  }\n\n  /**\n   * Register a hook with `require-in-the-middle`\n   *\n   * @param {string} moduleName Module name\n   * @param {OnRequireFn} onRequire Hook function\n   * @returns {Hooked} Registered hook\n   */\n  register(moduleName: string, onRequire: OnRequireFn): Hooked {\n    const hooked = { moduleName, onRequire };\n    this._moduleNameTrie.insert(hooked);\n    return hooked;\n  }\n\n  /**\n   * Get the `RequireInTheMiddleSingleton` singleton\n   *\n   * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n   */\n  static getInstance(): RequireInTheMiddleSingleton {\n    // Mocha runs all test suites in the same process\n    // This prevents test suites from sharing a singleton\n    if (isMocha) return new RequireInTheMiddleSingleton();\n\n    return (this._instance =\n      this._instance ?? new RequireInTheMiddleSingleton());\n  }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n  return path.sep !== ModuleNameSeparator\n    ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n    : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { _globalThis } from '../platform';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n  [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = _globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n  requiredVersion: number,\n  instance: T,\n  fallback: T\n): Get {\n  return (version: number): T =>\n    version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n  disableInstrumentations,\n  enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n *   registered\n */\nexport function registerInstrumentations(\n  options: AutoLoaderOptions\n): () => void {\n  const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n  const meterProvider = options.meterProvider || metrics.getMeterProvider();\n  const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n  const instrumentations = options.instrumentations?.flat() ?? [];\n\n  enableInstrumentations(\n    instrumentations,\n    tracerProvider,\n    meterProvider,\n    loggerProvider\n  );\n\n  return () => {\n    disableInstrumentations(instrumentations);\n  };\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  API_BACKWARDS_COMPATIBILITY_VERSION,\n  GLOBAL_LOGS_API_KEY,\n  _global,\n  makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n  private static _instance?: LogsAPI;\n\n  private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n  private constructor() {}\n\n  public static getInstance(): LogsAPI {\n    if (!this._instance) {\n      this._instance = new LogsAPI();\n    }\n\n    return this._instance;\n  }\n\n  public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n    if (_global[GLOBAL_LOGS_API_KEY]) {\n      return this.getLoggerProvider();\n    }\n\n    _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n      API_BACKWARDS_COMPATIBILITY_VERSION,\n      provider,\n      NOOP_LOGGER_PROVIDER\n    );\n    this._proxyLoggerProvider._setDelegate(provider);\n\n    return provider;\n  }\n\n  /**\n   * Returns the global logger provider.\n   *\n   * @returns LoggerProvider\n   */\n  public getLoggerProvider(): LoggerProvider {\n    return (\n      _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n      this._proxyLoggerProvider\n    );\n  }\n\n  /**\n   * Returns a logger from the global logger provider.\n   *\n   * @returns Logger\n   */\n  public getLogger(\n    name: string,\n    version?: string,\n    options?: LoggerOptions\n  ): Logger {\n    return this.getLoggerProvider().getLogger(name, version, options);\n  }\n\n  /** Remove the global logger provider */\n  public disable(): void {\n    delete _global[GLOBAL_LOGS_API_KEY];\n    this._proxyLoggerProvider = new ProxyLoggerProvider();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n  // When a real implementation is provided, this will be it\n  private _delegate?: Logger;\n\n  constructor(\n    private _provider: LoggerDelegator,\n    public readonly name: string,\n    public readonly version?: string | undefined,\n    public readonly options?: LoggerOptions | undefined\n  ) {}\n\n  /**\n   * Emit a log record. This method should only be used by log appenders.\n   *\n   * @param logRecord\n   */\n  emit(logRecord: LogRecord): void {\n    this._getLogger().emit(logRecord);\n  }\n\n  /**\n   * Try to get a logger from the proxy logger provider.\n   * If the proxy logger provider has no delegate, return a noop logger.\n   */\n  private _getLogger() {\n    if (this._delegate) {\n      return this._delegate;\n    }\n    const logger = this._provider._getDelegateLogger(\n      this.name,\n      this.version,\n      this.options\n    );\n    if (!logger) {\n      return NOOP_LOGGER;\n    }\n    this._delegate = logger;\n    return this._delegate;\n  }\n}\n\nexport interface LoggerDelegator {\n  _getDelegateLogger(\n    name: string,\n    version?: string,\n    options?: LoggerOptions\n  ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n  Instrumentation,\n  InstrumentationConfig,\n  InstrumentationModuleDefinition,\n  InstrumentationModuleFile,\n  ShimWrapped,\n  SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n  isWrapped,\n  safeExecuteInTheMiddle,\n  safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n  getLogger(\n    _name: string,\n    _version?: string | undefined,\n    _options?: LoggerOptions | undefined\n  ): Logger {\n    return new NoopLogger();\n  }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\nexport { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider';\nexport { ProxyLogger } from './ProxyLogger';\nexport { ProxyLoggerProvider } from './ProxyLoggerProvider';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  diag,\n  DiagLogger,\n  metrics,\n  Meter,\n  MeterProvider,\n  trace,\n  Tracer,\n  TracerProvider,\n  Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n  InstrumentationModuleDefinition,\n  Instrumentation,\n  InstrumentationConfig,\n  SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n  ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n  protected _config: ConfigType = {} as ConfigType;\n\n  private _tracer: Tracer;\n  private _meter: Meter;\n  private _logger: Logger;\n  protected _diag: DiagLogger;\n\n  constructor(\n    public readonly instrumentationName: string,\n    public readonly instrumentationVersion: string,\n    config: ConfigType\n  ) {\n    this.setConfig(config);\n\n    this._diag = diag.createComponentLogger({\n      namespace: instrumentationName,\n    });\n\n    this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n    this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n    this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n    this._updateMetricInstruments();\n  }\n\n  /* Api to wrap instrumented method */\n  protected _wrap = shimmer.wrap;\n  /* Api to unwrap instrumented methods */\n  protected _unwrap = shimmer.unwrap;\n  /* Api to mass wrap instrumented method */\n  protected _massWrap = shimmer.massWrap;\n  /* Api to mass unwrap instrumented methods */\n  protected _massUnwrap = shimmer.massUnwrap;\n\n  /* Returns meter */\n  protected get meter(): Meter {\n    return this._meter;\n  }\n\n  /**\n   * Sets MeterProvider to this plugin\n   * @param meterProvider\n   */\n  public setMeterProvider(meterProvider: MeterProvider): void {\n    this._meter = meterProvider.getMeter(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n\n    this._updateMetricInstruments();\n  }\n\n  /* Returns logger */\n  protected get logger(): Logger {\n    return this._logger;\n  }\n\n  /**\n   * Sets LoggerProvider to this plugin\n   * @param loggerProvider\n   */\n  public setLoggerProvider(loggerProvider: LoggerProvider): void {\n    this._logger = loggerProvider.getLogger(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n  }\n\n  /**\n   * @experimental\n   *\n   * Get module definitions defined by {@link init}.\n   * This can be used for experimental compile-time instrumentation.\n   *\n   * @returns an array of {@link InstrumentationModuleDefinition}\n   */\n  public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n    const initResult = this.init() ?? [];\n    if (!Array.isArray(initResult)) {\n      return [initResult];\n    }\n\n    return initResult;\n  }\n\n  /**\n   * Sets the new metric instruments with the current Meter.\n   */\n  protected _updateMetricInstruments(): void {\n    return;\n  }\n\n  /* Returns InstrumentationConfig */\n  public getConfig(): ConfigType {\n    return this._config;\n  }\n\n  /**\n   * Sets InstrumentationConfig to this plugin\n   * @param config\n   */\n  public setConfig(config: ConfigType): void {\n    // copy config first level properties to ensure they are immutable.\n    // nested properties are not copied, thus are mutable from the outside.\n    this._config = {\n      enabled: true,\n      ...config,\n    };\n  }\n\n  /**\n   * Sets TraceProvider to this plugin\n   * @param tracerProvider\n   */\n  public setTracerProvider(tracerProvider: TracerProvider): void {\n    this._tracer = tracerProvider.getTracer(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n  }\n\n  /* Returns tracer */\n  protected get tracer(): Tracer {\n    return this._tracer;\n  }\n\n  /* Enable plugin */\n  public abstract enable(): void;\n\n  /* Disable plugin */\n  public abstract disable(): void;\n\n  /**\n   * Init method in which plugin should define _modules and patches for\n   * methods.\n   */\n  protected abstract init():\n    | InstrumentationModuleDefinition\n    | InstrumentationModuleDefinition[]\n    | void;\n\n  /**\n   * Execute span customization hook, if configured, and log any errors.\n   * Any semantics of the trigger and info are defined by the specific instrumentation.\n   * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n   * @param triggerName The name of the trigger for executing the hook for logging purposes\n   * @param span The span to which the hook should be applied\n   * @param info The info object to be passed to the hook, with useful data the hook may use\n   */\n  protected _runSpanCustomizationHook(\n    hookHandler: SpanCustomizationHook | undefined,\n    triggerName: string,\n    span: Span,\n    info: SpanCustomizationInfoType\n  ) {\n    if (!hookHandler) {\n      return;\n    }\n\n    try {\n      hookHandler(span, info);\n    } catch (e) {\n      this._diag.error(\n        `Error running span customization hook due to exception in handler`,\n        { triggerName },\n        e\n      );\n    }\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n  implements InstrumentationModuleFile\n{\n  public name: string;\n  constructor(\n    name: string,\n    public supportedVersions: string[],\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public patch: (moduleExports: any, moduleVersion?: string) => any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public unpatch: (moduleExports?: any, moduleVersion?: string) => void\n  ) {\n    this.name = normalize(name);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n  private _delegate?: LoggerProvider;\n\n  getLogger(\n    name: string,\n    version?: string | undefined,\n    options?: LoggerOptions | undefined\n  ): Logger {\n    return (\n      this._getDelegateLogger(name, version, options) ??\n      new ProxyLogger(this, name, version, options)\n    );\n  }\n\n  /**\n   * Get the delegate logger provider.\n   * Used by tests only.\n   * @internal\n   */\n  _getDelegate(): LoggerProvider {\n    return this._delegate ?? NOOP_LOGGER_PROVIDER;\n  }\n\n  /**\n   * Set the delegate logger provider\n   * @internal\n   */\n  _setDelegate(delegate: LoggerProvider) {\n    this._delegate = delegate;\n  }\n\n  /**\n   * @internal\n   */\n  _getDelegateLogger(\n    name: string,\n    version?: string | undefined,\n    options?: LoggerOptions | undefined\n  ): Logger | undefined {\n    return this._delegate?.getLogger(name, version, options);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n  RequireInTheMiddleSingleton,\n  Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n  InstrumentationConfig,\n  InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n    ConfigType extends InstrumentationConfig = InstrumentationConfig,\n  >\n  extends InstrumentationAbstract\n  implements types.Instrumentation\n{\n  private _modules: InstrumentationModuleDefinition[];\n  private _hooks: (Hooked | HookRequire)[] = [];\n  private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n    RequireInTheMiddleSingleton.getInstance();\n  private _enabled = false;\n\n  constructor(\n    instrumentationName: string,\n    instrumentationVersion: string,\n    config: ConfigType\n  ) {\n    super(instrumentationName, instrumentationVersion, config);\n\n    let modules = this.init();\n\n    if (modules && !Array.isArray(modules)) {\n      modules = [modules];\n    }\n\n    this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n    if (this._config.enabled) {\n      this.enable();\n    }\n  }\n\n  protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n    if (isWrapped(moduleExports[name])) {\n      this._unwrap(moduleExports, name);\n    }\n    if (!utilTypes.isProxy(moduleExports)) {\n      return wrap(moduleExports, name, wrapper);\n    } else {\n      const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n      Object.defineProperty(moduleExports, name, {\n        value: wrapped,\n      });\n      return wrapped;\n    }\n  };\n\n  protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n    if (!utilTypes.isProxy(moduleExports)) {\n      return unwrap(moduleExports, name);\n    } else {\n      return Object.defineProperty(moduleExports, name, {\n        value: moduleExports[name],\n      });\n    }\n  };\n\n  protected override _massWrap: typeof massWrap = (\n    moduleExportsArray,\n    names,\n    wrapper\n  ) => {\n    if (!moduleExportsArray) {\n      diag.error('must provide one or more modules to patch');\n      return;\n    } else if (!Array.isArray(moduleExportsArray)) {\n      moduleExportsArray = [moduleExportsArray];\n    }\n\n    if (!(names && Array.isArray(names))) {\n      diag.error('must provide one or more functions to wrap on modules');\n      return;\n    }\n\n    moduleExportsArray.forEach(moduleExports => {\n      names.forEach(name => {\n        this._wrap(moduleExports, name, wrapper);\n      });\n    });\n  };\n\n  protected override _massUnwrap: typeof massUnwrap = (\n    moduleExportsArray,\n    names\n  ) => {\n    if (!moduleExportsArray) {\n      diag.error('must provide one or more modules to patch');\n      return;\n    } else if (!Array.isArray(moduleExportsArray)) {\n      moduleExportsArray = [moduleExportsArray];\n    }\n\n    if (!(names && Array.isArray(names))) {\n      diag.error('must provide one or more functions to wrap on modules');\n      return;\n    }\n\n    moduleExportsArray.forEach(moduleExports => {\n      names.forEach(name => {\n        this._unwrap(moduleExports, name);\n      });\n    });\n  };\n\n  private _warnOnPreloadedModules(): void {\n    this._modules.forEach((module: InstrumentationModuleDefinition) => {\n      const { name } = module;\n      try {\n        const resolvedModule = require.resolve(name);\n        if (require.cache[resolvedModule]) {\n          // Module is already cached, which means the instrumentation hook might not work\n          this._diag.warn(\n            `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n          );\n        }\n      } catch {\n        // Module isn't available, we can simply skip\n      }\n    });\n  }\n\n  private _extractPackageVersion(baseDir: string): string | undefined {\n    try {\n      const json = readFileSync(path.join(baseDir, 'package.json'), {\n        encoding: 'utf8',\n      });\n      const version = JSON.parse(json).version;\n      return typeof version === 'string' ? version : undefined;\n    } catch {\n      diag.warn('Failed extracting version', baseDir);\n    }\n\n    return undefined;\n  }\n\n  private _onRequire(\n    module: InstrumentationModuleDefinition,\n    exports: T,\n    name: string,\n    baseDir?: string | void\n  ): T {\n    if (!baseDir) {\n      if (typeof module.patch === 'function') {\n        module.moduleExports = exports;\n        if (this._enabled) {\n          this._diag.debug(\n            'Applying instrumentation patch for nodejs core module on require hook',\n            {\n              module: module.name,\n            }\n          );\n          return module.patch(exports);\n        }\n      }\n      return exports;\n    }\n\n    const version = this._extractPackageVersion(baseDir);\n    module.moduleVersion = version;\n    if (module.name === name) {\n      // main module\n      if (\n        isSupported(module.supportedVersions, version, module.includePrerelease)\n      ) {\n        if (typeof module.patch === 'function') {\n          module.moduleExports = exports;\n          if (this._enabled) {\n            this._diag.debug(\n              'Applying instrumentation patch for module on require hook',\n              {\n                module: module.name,\n                version: module.moduleVersion,\n                baseDir,\n              }\n            );\n            return module.patch(exports, module.moduleVersion);\n          }\n        }\n      }\n      return exports;\n    }\n    // internal file\n    const files = module.files ?? [];\n    const normalizedName = path.normalize(name);\n    const supportedFileInstrumentations = files\n      .filter(f => f.name === normalizedName)\n      .filter(f =>\n        isSupported(f.supportedVersions, version, module.includePrerelease)\n      );\n    return supportedFileInstrumentations.reduce((patchedExports, file) => {\n      file.moduleExports = patchedExports;\n      if (this._enabled) {\n        this._diag.debug(\n          'Applying instrumentation patch for nodejs module file on require hook',\n          {\n            module: module.name,\n            version: module.moduleVersion,\n            fileName: file.name,\n            baseDir,\n          }\n        );\n\n        // patch signature is not typed, so we cast it assuming it's correct\n        return file.patch(patchedExports, module.moduleVersion) as T;\n      }\n      return patchedExports;\n    }, exports);\n  }\n\n  public enable(): void {\n    if (this._enabled) {\n      return;\n    }\n    this._enabled = true;\n\n    // already hooked, just call patch again\n    if (this._hooks.length > 0) {\n      for (const module of this._modules) {\n        if (typeof module.patch === 'function' && module.moduleExports) {\n          this._diag.debug(\n            'Applying instrumentation patch for nodejs module on instrumentation enabled',\n            {\n              module: module.name,\n              version: module.moduleVersion,\n            }\n          );\n          module.patch(module.moduleExports, module.moduleVersion);\n        }\n        for (const file of module.files) {\n          if (file.moduleExports) {\n            this._diag.debug(\n              'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n              {\n                module: module.name,\n                version: module.moduleVersion,\n                fileName: file.name,\n              }\n            );\n            file.patch(file.moduleExports, module.moduleVersion);\n          }\n        }\n      }\n      return;\n    }\n\n    this._warnOnPreloadedModules();\n    for (const module of this._modules) {\n      const hookFn: HookFn = (exports, name, baseDir) => {\n        if (!baseDir && path.isAbsolute(name)) {\n          const parsedPath = path.parse(name);\n          name = parsedPath.name;\n          baseDir = parsedPath.dir;\n        }\n        return this._onRequire(module, exports, name, baseDir);\n      };\n      const onRequire: OnRequireFn = (exports, name, baseDir) => {\n        return this._onRequire(module, exports, name, baseDir);\n      };\n\n      // `RequireInTheMiddleSingleton` does not support absolute paths.\n      // For an absolute paths, we must create a separate instance of the\n      // require-in-the-middle `Hook`.\n      const hook = path.isAbsolute(module.name)\n        ? new HookRequire([module.name], { internals: true }, onRequire)\n        : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n      this._hooks.push(hook);\n      const esmHook = new HookImport(\n        [module.name],\n        { internals: false },\n        hookFn\n      );\n      this._hooks.push(esmHook);\n    }\n  }\n\n  public disable(): void {\n    if (!this._enabled) {\n      return;\n    }\n    this._enabled = false;\n\n    for (const module of this._modules) {\n      if (typeof module.unpatch === 'function' && module.moduleExports) {\n        this._diag.debug(\n          'Removing instrumentation patch for nodejs module on instrumentation disabled',\n          {\n            module: module.name,\n            version: module.moduleVersion,\n          }\n        );\n        module.unpatch(module.moduleExports, module.moduleVersion);\n      }\n      for (const file of module.files) {\n        if (file.moduleExports) {\n          this._diag.debug(\n            'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n            {\n              module: module.name,\n              version: module.moduleVersion,\n              fileName: file.name,\n            }\n          );\n          file.unpatch(file.moduleExports, module.moduleVersion);\n        }\n      }\n    }\n  }\n\n  public isEnabled(): boolean {\n    return this._enabled;\n  }\n}\n\nfunction isSupported(\n  supportedVersions: string[],\n  version?: string,\n  includePrerelease?: boolean\n): boolean {\n  if (typeof version === 'undefined') {\n    // If we don't have the version, accept the wildcard case only\n    return supportedVersions.includes('*');\n  }\n\n  return supportedVersions.some(supportedVersion => {\n    return satisfies(version, supportedVersion, { includePrerelease });\n  });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n  hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n  children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n  /**\n   * Whether to return the results in insertion order\n   */\n  maintainInsertionOrder?: boolean;\n  /**\n   * Whether to return only full matches\n   */\n  fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n  private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n  private _counter: number = 0;\n\n  /**\n   * Insert a module hook into the trie\n   *\n   * @param {Hooked} hook Hook\n   */\n  insert(hook: Hooked) {\n    let trieNode = this._trie;\n\n    for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n      let nextNode = trieNode.children.get(moduleNamePart);\n      if (!nextNode) {\n        nextNode = new ModuleNameTrieNode();\n        trieNode.children.set(moduleNamePart, nextNode);\n      }\n      trieNode = nextNode;\n    }\n    trieNode.hooks.push({ hook, insertedId: this._counter++ });\n  }\n\n  /**\n   * Search for matching hooks in the trie\n   *\n   * @param {string} moduleName Module name\n   * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n   * @param {boolean} fullOnly Whether to return only full matches\n   * @returns {Hooked[]} Matching hooks\n   */\n  search(\n    moduleName: string,\n    { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n  ): Hooked[] {\n    let trieNode = this._trie;\n    const results: ModuleNameTrieNode['hooks'] = [];\n    let foundFull = true;\n\n    for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n      const nextNode = trieNode.children.get(moduleNamePart);\n      if (!nextNode) {\n        foundFull = false;\n        break;\n      }\n      if (!fullOnly) {\n        results.push(...nextNode.hooks);\n      }\n      trieNode = nextNode;\n    }\n\n    if (fullOnly && foundFull) {\n      results.push(...trieNode.hooks);\n    }\n\n    if (results.length === 0) {\n      return [];\n    }\n    if (results.length === 1) {\n      return [results[0].hook];\n    }\n    if (maintainInsertionOrder) {\n      results.sort((a, b) => a.insertedId - b.insertedId);\n    }\n    return results.map(({ hook }) => hook);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  InstrumentationModuleDefinition,\n  InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n  implements InstrumentationModuleDefinition\n{\n  files: InstrumentationModuleFile[];\n  constructor(\n    public name: string,\n    public supportedVersions: string[],\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public patch?: (exports: any, moduleVersion?: string) => any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public unpatch?: (exports: any, moduleVersion?: string) => void,\n    files?: InstrumentationModuleFile[]\n  ) {\n    this.files = files || [];\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n","/*\n * Copyright The OpenTelemetry Authors\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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n *   list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n *   this list of conditions and the following disclaimer in the documentation\n *   and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n *  - converted to TypeScript\n *  - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n  const enumerable =\n    !!obj[name as keyof typeof obj] &&\n    Object.prototype.propertyIsEnumerable.call(obj, name);\n\n  Object.defineProperty(obj, name, {\n    configurable: true,\n    enumerable,\n    writable: true,\n    value,\n  });\n}\n\nexport const wrap = (\n  nodule: Nodule,\n  name: FieldName,\n  wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n  if (!nodule || !nodule[name]) {\n    logger('no original function ' + String(name) + ' to wrap');\n    return;\n  }\n\n  if (!wrapper) {\n    logger('no wrapper function');\n    logger(new Error().stack);\n    return;\n  }\n\n  const original = nodule[name];\n\n  if (typeof original !== 'function' || typeof wrapper !== 'function') {\n    logger('original object and wrapper must be functions');\n    return;\n  }\n\n  const wrapped = wrapper(original, name) as object;\n\n  defineProperty(wrapped, '__original', original);\n  defineProperty(wrapped, '__unwrap', () => {\n    if (nodule[name] === wrapped) {\n      defineProperty(nodule, name, original);\n    }\n  });\n  defineProperty(wrapped, '__wrapped', true);\n  defineProperty(nodule, name, wrapped);\n  return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n  nodules: Nodule[],\n  names: FieldName[],\n  wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n  if (!nodules) {\n    logger('must provide one or more modules to patch');\n    logger(new Error().stack);\n    return;\n  } else if (!Array.isArray(nodules)) {\n    nodules = [nodules];\n  }\n\n  if (!(names && Array.isArray(names))) {\n    logger('must provide one or more functions to wrap on modules');\n    return;\n  }\n\n  nodules.forEach(nodule => {\n    names.forEach(name => {\n      wrap(nodule, name, wrapper);\n    });\n  });\n};\n\nexport const unwrap = (\n  nodule: Nodule,\n  name: keyof Nodule\n): void => {\n  if (!nodule || !nodule[name]) {\n    logger('no function to unwrap.');\n    logger(new Error().stack);\n    return;\n  }\n\n  const wrapped = nodule[name] as unknown as ShimWrapped;\n\n  if (!wrapped.__unwrap) {\n    logger(\n      'no original to unwrap to -- has ' +\n        String(name) +\n        ' already been unwrapped?'\n    );\n  } else {\n    wrapped.__unwrap();\n    return;\n  }\n};\n\nexport const massUnwrap = (\n  nodules: Nodule[],\n  names: Array\n): void => {\n  if (!nodules) {\n    logger('must provide one or more modules to patch');\n    logger(new Error().stack);\n    return;\n  } else if (!Array.isArray(nodules)) {\n    nodules = [nodules];\n  }\n\n  if (!(names && Array.isArray(names))) {\n    logger('must provide one or more functions to unwrap on modules');\n    return;\n  }\n\n  nodules.forEach(nodule => {\n    names.forEach(name => {\n      unwrap(nodule, name);\n    });\n  });\n};\n\nexport interface ShimmerOptions {\n  logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n  if (options && options.logger) {\n    if (typeof options.logger !== 'function') {\n      logger(\"new logger isn't a function, not replacing\");\n    } else {\n      logger = options.logger;\n    }\n  }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\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// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n  /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n  /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n  '>': [1],\n  '>=': [0, 1],\n  '=': [0],\n  '<=': [-1, 0],\n  '<': [-1],\n  '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n  /**\n   * If set to true, the pre-release checks will be included\n   * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n   */\n  includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n  op?: string;\n\n  version?: string;\n  versionSegments?: string[];\n  versionSegmentCount?: number;\n\n  prerelease?: string;\n  prereleaseSegments?: string[];\n  prereleaseSegmentCount?: number;\n\n  build?: string;\n\n  invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range   the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n  version: string,\n  range: string,\n  options?: SatisfiesOptions\n): boolean {\n  // Strict semver format check\n  if (!_validateVersion(version)) {\n    diag.error(`Invalid version: ${version}`);\n    return false;\n  }\n\n  // If range is empty, satisfy check succeeds regardless what version is\n  if (!range) {\n    return true;\n  }\n\n  // Cleanup range\n  range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n  // Parse version\n  const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n  if (!parsedVersion) {\n    return false;\n  }\n\n  const allParsedRanges: ParsedVersion[] = [];\n\n  // Check given version whether it satisfies given range expression\n  const checkResult: boolean = _doSatisfies(\n    parsedVersion,\n    range,\n    allParsedRanges,\n    options\n  );\n\n  // If check result is OK,\n  // do another final check for pre-release, if pre-release check is included by option\n  if (checkResult && !options?.includePrerelease) {\n    return _doPreleaseCheck(parsedVersion, allParsedRanges);\n  }\n  return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n  return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n  parsedVersion: ParsedVersion,\n  range: string,\n  allParsedRanges: ParsedVersion[],\n  options?: SatisfiesOptions\n): boolean {\n  if (range.includes('||')) {\n    // A version matches a range if and only if\n    // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n    const ranges: string[] = range.trim().split('||');\n    for (const r of ranges) {\n      if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n        return true;\n      }\n    }\n    return false;\n  } else if (range.includes(' - ')) {\n    // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n    range = replaceHyphen(range, options);\n  } else if (range.includes(' ')) {\n    // Multiple separated ranges and all needs to be satisfied for success\n    const ranges: string[] = range\n      .trim()\n      .replace(/\\s{2,}/g, ' ')\n      .split(' ');\n    for (const r of ranges) {\n      if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // Check given parsed version with given range\n  return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n  parsedVersion: ParsedVersion,\n  range: string,\n  allParsedRanges: ParsedVersion[],\n  options?: SatisfiesOptions\n): boolean {\n  range = _normalizeRange(range, options);\n  if (range.includes(' ')) {\n    // If there are multiple ranges separated, satisfy each of them\n    return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n  } else {\n    // Validate and parse range\n    const parsedRange: ParsedVersion = _parseRange(range);\n    allParsedRanges.push(parsedRange);\n    // Check parsed version by parsed range\n    return _satisfies(parsedVersion, parsedRange);\n  }\n}\n\nfunction _satisfies(\n  parsedVersion: ParsedVersion,\n  parsedRange: ParsedVersion\n): boolean {\n  // If range is invalid, satisfy check fails (no error throw)\n  if (parsedRange.invalid) {\n    return false;\n  }\n\n  // If range is empty or wildcard, satisfy check succeeds regardless what version is\n  if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n    return true;\n  }\n\n  // Compare version segment first\n  let comparisonResult: number = _compareVersionSegments(\n    parsedVersion.versionSegments || [],\n    parsedRange.versionSegments || []\n  );\n\n  // If versions segments are equal, compare by pre-release segments\n  if (comparisonResult === 0) {\n    const versionPrereleaseSegments: string[] =\n      parsedVersion.prereleaseSegments || [];\n    const rangePrereleaseSegments: string[] =\n      parsedRange.prereleaseSegments || [];\n    if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n      comparisonResult = 0;\n    } else if (\n      !versionPrereleaseSegments.length &&\n      rangePrereleaseSegments.length\n    ) {\n      comparisonResult = 1;\n    } else if (\n      versionPrereleaseSegments.length &&\n      !rangePrereleaseSegments.length\n    ) {\n      comparisonResult = -1;\n    } else {\n      comparisonResult = _compareVersionSegments(\n        versionPrereleaseSegments,\n        rangePrereleaseSegments\n      );\n    }\n  }\n\n  // Resolve check result according to comparison operator\n  return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n  parsedVersion: ParsedVersion,\n  allParsedRanges: ParsedVersion[]\n): boolean {\n  if (parsedVersion.prerelease) {\n    return allParsedRanges.some(\n      r => r.prerelease && r.version === parsedVersion.version\n    );\n  }\n  return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n  range = range.trim();\n  range = replaceCaret(range, options);\n  range = replaceTilde(range);\n  range = replaceXRange(range, options);\n  range = range.trim();\n  return range;\n}\n\nfunction isX(id?: string): boolean {\n  return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n  const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n  if (!match) {\n    diag.error(`Invalid version: ${versionString}`);\n    return undefined;\n  }\n\n  const version: string = match!.groups!.version;\n  const prerelease: string = match!.groups!.prerelease;\n  const build: string = match!.groups!.build;\n\n  const versionSegments: string[] = version.split('.');\n  const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n  return {\n    op: undefined,\n\n    version,\n    versionSegments,\n    versionSegmentCount: versionSegments.length,\n\n    prerelease,\n    prereleaseSegments,\n    prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n    build,\n  };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n  if (!rangeString) {\n    return {};\n  }\n\n  const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n  if (!match) {\n    diag.error(`Invalid range: ${rangeString}`);\n    return {\n      invalid: true,\n    };\n  }\n\n  let op: string = match!.groups!.op;\n  const version: string = match!.groups!.version;\n  const prerelease: string = match!.groups!.prerelease;\n  const build: string = match!.groups!.build;\n\n  const versionSegments: string[] = version.split('.');\n  const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n  if (op === '==') {\n    op = '=';\n  }\n\n  return {\n    op: op || '=',\n\n    version,\n    versionSegments,\n    versionSegmentCount: versionSegments.length,\n\n    prerelease,\n    prereleaseSegments,\n    prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n    build,\n  };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n  return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n  const n: number = parseInt(v, 10);\n  return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n  a: string | number,\n  b: string | number\n): [string, string] | [number, number] {\n  if (typeof a === typeof b) {\n    if (typeof a === 'number') {\n      return [a as number, b as number];\n    } else if (typeof a === 'string') {\n      return [a as string, b as string];\n    } else {\n      throw new Error('Version segments can only be strings or numbers');\n    }\n  } else {\n    return [String(a), String(b)];\n  }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n  if (_isWildcard(v1) || _isWildcard(v2)) {\n    return 0;\n  }\n  const [parsedV1, parsedV2] = _normalizeVersionType(\n    _parseVersionString(v1),\n    _parseVersionString(v2)\n  );\n  if (parsedV1 > parsedV2) {\n    return 1;\n  } else if (parsedV1 < parsedV2) {\n    return -1;\n  }\n  return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n  for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n    const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n    if (res !== 0) {\n      return res;\n    }\n  }\n  return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n  `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n  `(?:\\\\.(${XRANGEIDENTIFIER})` +\n  `(?:\\\\.(${XRANGEIDENTIFIER})` +\n  `(?:${PRERELEASE})?${BUILD}?` +\n  `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n  `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n  const r = TILDE_REGEXP;\n  return comp.replace(r, (_, M, m, p, pr) => {\n    let ret;\n\n    if (isX(M)) {\n      ret = '';\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n    } else if (pr) {\n      ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n    }\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n  const r = CARET_REGEXP;\n  const z = options?.includePrerelease ? '-0' : '';\n  return comp.replace(r, (_, M, m, p, pr) => {\n    let ret;\n\n    if (isX(M)) {\n      ret = '';\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n      }\n    } else if (pr) {\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n      }\n    } else {\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n        } else {\n          ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n        }\n      } else {\n        ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n      }\n    }\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n  const r = XRANGE_REGEXP;\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    const xM = isX(M);\n    const xm = xM || isX(m);\n    const xp = xm || isX(p);\n    const anyX = xp;\n\n    if (gtlt === '=' && anyX) {\n      gtlt = '';\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options?.includePrerelease ? '-0' : '';\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0';\n      } else {\n        // nothing is forbidden\n        ret = '*';\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0;\n      }\n      p = 0;\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>=';\n        if (xm) {\n          M = +M + 1;\n          m = 0;\n          p = 0;\n        } else {\n          m = +m + 1;\n          p = 0;\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<';\n        if (xm) {\n          M = +M + 1;\n        } else {\n          m = +m + 1;\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0';\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`;\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n    }\n\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n  const r = HYPHENRANGE_REGEXP;\n  return comp.replace(\n    r,\n    (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n      if (isX(fM)) {\n        from = '';\n      } else if (isX(fm)) {\n        from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n      } else if (isX(fp)) {\n        from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n      } else if (fpr) {\n        from = `>=${from}`;\n      } else {\n        from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n      }\n\n      if (isX(tM)) {\n        to = '';\n      } else if (isX(tm)) {\n        to = `<${+tM + 1}.0.0-0`;\n      } else if (isX(tp)) {\n        to = `<${tM}.${+tm + 1}.0-0`;\n      } else if (tpr) {\n        to = `<=${tM}.${tm}.${tp}-${tpr}`;\n      } else if (options?.includePrerelease) {\n        to = `<${tM}.${tm}.${+tp + 1}-0`;\n      } else {\n        to = `<=${to}`;\n      }\n\n      return `${from} ${to}`.trim();\n    }\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n  emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n  execute: () => T,\n  onFinish: (e: Error | undefined, result: T | undefined) => void,\n  preventThrowingError?: boolean\n): T {\n  let error: Error | undefined;\n  let result: T | undefined;\n  try {\n    result = execute();\n  } catch (e) {\n    error = e;\n  } finally {\n    onFinish(error, result);\n    if (error && !preventThrowingError) {\n      // eslint-disable-next-line no-unsafe-finally\n      throw error;\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result as T;\n  }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n  execute: () => T,\n  onFinish: (e: Error | undefined, result: T | undefined) => void,\n  preventThrowingError?: boolean\n): Promise {\n  let error: Error | undefined;\n  let result: T | undefined;\n  try {\n    result = await execute();\n  } catch (e) {\n    error = e;\n  } finally {\n    onFinish(error, result);\n    if (error && !preventThrowingError) {\n      // eslint-disable-next-line no-unsafe-finally\n      throw error;\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result as T;\n  }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n  return (\n    typeof func === 'function' &&\n    typeof (func as ShimWrapped).__original === 'function' &&\n    typeof (func as ShimWrapped).__unwrap === 'function' &&\n    (func as ShimWrapped).__wrapped === true\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n  instrumentations: Instrumentation[],\n  tracerProvider?: TracerProvider,\n  meterProvider?: MeterProvider,\n  loggerProvider?: LoggerProvider\n): void {\n  for (let i = 0, j = instrumentations.length; i < j; i++) {\n    const instrumentation = instrumentations[i];\n    if (tracerProvider) {\n      instrumentation.setTracerProvider(tracerProvider);\n    }\n    if (meterProvider) {\n      instrumentation.setMeterProvider(meterProvider);\n    }\n    if (loggerProvider && instrumentation.setLoggerProvider) {\n      instrumentation.setLoggerProvider(loggerProvider);\n    }\n    // instrumentations have been already enabled during creation\n    // so enable only if user prevented that by setting enabled to false\n    // this is to prevent double enabling but when calling register all\n    // instrumentations should be now enabled\n    if (!instrumentation.getConfig().enabled) {\n      instrumentation.enable();\n    }\n  }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n  instrumentations: Instrumentation[]\n): void {\n  instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  PrismaInstrumentation: () => PrismaInstrumentation,\n  registerInstrumentations: () => import_instrumentation2.registerInstrumentations\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/PrismaInstrumentation.ts\nvar import_api2 = require(\"@opentelemetry/api\");\nvar import_instrumentation = require(\"@opentelemetry/instrumentation\");\n\n// ../instrumentation-contract/dist/index.mjs\nvar package_default = {\n  name: \"@prisma/instrumentation-contract\",\n  version: \"7.6.0\",\n  description: \"Shared types and utilities for Prisma instrumentation\",\n  main: \"dist/index.js\",\n  module: \"dist/index.mjs\",\n  types: \"dist/index.d.ts\",\n  exports: {\n    \".\": {\n      require: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.js\"\n      },\n      import: {\n        types: \"./dist/index.d.mts\",\n        default: \"./dist/index.mjs\"\n      }\n    }\n  },\n  license: \"Apache-2.0\",\n  homepage: \"https://www.prisma.io\",\n  repository: {\n    type: \"git\",\n    url: \"https://github.com/prisma/prisma.git\",\n    directory: \"packages/instrumentation-contract\"\n  },\n  bugs: \"https://github.com/prisma/prisma/issues\",\n  scripts: {\n    dev: \"DEV=true tsx helpers/build.ts\",\n    build: \"tsx helpers/build.ts\",\n    prepublishOnly: \"pnpm run build\",\n    test: \"vitest run\"\n  },\n  files: [\n    \"dist\"\n  ],\n  sideEffects: false,\n  devDependencies: {\n    \"@opentelemetry/api\": \"1.9.0\"\n  },\n  peerDependencies: {\n    \"@opentelemetry/api\": \"^1.8\"\n  }\n};\nvar majorVersion = package_default.version.split(\".\")[0];\nvar GLOBAL_INSTRUMENTATION_KEY = \"PRISMA_INSTRUMENTATION\";\nvar GLOBAL_VERSIONED_INSTRUMENTATION_KEY = `V${majorVersion}_PRISMA_INSTRUMENTATION`;\nvar globalThisWithPrismaInstrumentation = globalThis;\nfunction getGlobalTracingHelper() {\n  const versionedGlobal = globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n  if (versionedGlobal?.helper) {\n    return versionedGlobal.helper;\n  }\n  const fallbackGlobal = globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n  return fallbackGlobal?.helper;\n}\nfunction setGlobalTracingHelper(helper) {\n  const globalValue = { helper };\n  globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY] = globalValue;\n  globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY] = globalValue;\n}\nfunction clearGlobalTracingHelper() {\n  delete globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n  delete globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n}\n\n// src/ActiveTracingHelper.ts\nvar import_api = require(\"@opentelemetry/api\");\nvar showAllTraces = process.env.PRISMA_SHOW_ALL_TRACES === \"true\";\nvar nonSampledTraceParent = `00-10-10-00`;\nfunction engineSpanKindToOtelSpanKind(engineSpanKind) {\n  switch (engineSpanKind) {\n    case \"client\":\n      return import_api.SpanKind.CLIENT;\n    case \"internal\":\n    default:\n      return import_api.SpanKind.INTERNAL;\n  }\n}\nvar ActiveTracingHelper = class {\n  tracerProvider;\n  ignoreSpanTypes;\n  constructor({ tracerProvider, ignoreSpanTypes }) {\n    this.tracerProvider = tracerProvider;\n    this.ignoreSpanTypes = ignoreSpanTypes;\n  }\n  isEnabled() {\n    return true;\n  }\n  getTraceParent(context) {\n    const span = import_api.trace.getSpanContext(context ?? import_api.context.active());\n    if (span) {\n      return `00-${span.traceId}-${span.spanId}-0${span.traceFlags}`;\n    }\n    return nonSampledTraceParent;\n  }\n  dispatchEngineSpans(spans) {\n    const tracer = this.tracerProvider.getTracer(\"prisma\");\n    const linkIds = /* @__PURE__ */ new Map();\n    const roots = spans.filter((span) => span.parentId === null);\n    for (const root of roots) {\n      dispatchEngineSpan(tracer, root, spans, linkIds, this.ignoreSpanTypes);\n    }\n  }\n  getActiveContext() {\n    return import_api.context.active();\n  }\n  runInChildSpan(options, callback) {\n    if (typeof options === \"string\") {\n      options = { name: options };\n    }\n    if (options.internal && !showAllTraces) {\n      return callback();\n    }\n    const tracer = this.tracerProvider.getTracer(\"prisma\");\n    const context = options.context ?? this.getActiveContext();\n    const name = `prisma:client:${options.name}`;\n    if (shouldIgnoreSpan(name, this.ignoreSpanTypes)) {\n      return callback();\n    }\n    if (options.active === false) {\n      const span = tracer.startSpan(name, options, context);\n      return endSpan(span, callback(span, context));\n    }\n    return tracer.startActiveSpan(name, options, (span) => endSpan(span, callback(span, context)));\n  }\n};\nfunction dispatchEngineSpan(tracer, engineSpan, allSpans, linkIds, ignoreSpanTypes) {\n  if (shouldIgnoreSpan(engineSpan.name, ignoreSpanTypes)) return;\n  const spanOptions = {\n    attributes: engineSpan.attributes,\n    kind: engineSpanKindToOtelSpanKind(engineSpan.kind),\n    startTime: engineSpan.startTime\n  };\n  tracer.startActiveSpan(engineSpan.name, spanOptions, (span) => {\n    linkIds.set(engineSpan.id, span.spanContext().spanId);\n    if (engineSpan.links) {\n      span.addLinks(\n        engineSpan.links.flatMap((link) => {\n          const linkedId = linkIds.get(link);\n          if (!linkedId) {\n            return [];\n          }\n          return {\n            context: {\n              spanId: linkedId,\n              traceId: span.spanContext().traceId,\n              traceFlags: span.spanContext().traceFlags\n            }\n          };\n        })\n      );\n    }\n    const children = allSpans.filter((s) => s.parentId === engineSpan.id);\n    for (const child of children) {\n      dispatchEngineSpan(tracer, child, allSpans, linkIds, ignoreSpanTypes);\n    }\n    span.end(engineSpan.endTime);\n  });\n}\nfunction endSpan(span, result) {\n  if (isPromiseLike(result)) {\n    return result.then(\n      (value) => {\n        span.end();\n        return value;\n      },\n      (reason) => {\n        span.end();\n        throw reason;\n      }\n    );\n  }\n  span.end();\n  return result;\n}\nfunction isPromiseLike(value) {\n  return value != null && typeof value[\"then\"] === \"function\";\n}\nfunction shouldIgnoreSpan(spanName, ignoreSpanTypes) {\n  return ignoreSpanTypes.some(\n    (pattern) => typeof pattern === \"string\" ? pattern === spanName : pattern.test(spanName)\n  );\n}\n\n// package.json\nvar package_default2 = {\n  name: \"@prisma/instrumentation\",\n  version: \"7.6.0\",\n  description: \"OpenTelemetry compliant instrumentation for Prisma Client\",\n  main: \"dist/index.js\",\n  module: \"dist/index.mjs\",\n  types: \"dist/index.d.ts\",\n  exports: {\n    \".\": {\n      require: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.js\"\n      },\n      import: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.mjs\"\n      }\n    }\n  },\n  license: \"Apache-2.0\",\n  homepage: \"https://www.prisma.io\",\n  repository: {\n    type: \"git\",\n    url: \"https://github.com/prisma/prisma.git\",\n    directory: \"packages/instrumentation\"\n  },\n  bugs: \"https://github.com/prisma/prisma/issues\",\n  devDependencies: {\n    \"@opentelemetry/api\": \"1.9.0\",\n    \"@prisma/instrumentation-contract\": \"workspace:*\",\n    \"@types/node\": \"~20.19.24\",\n    typescript: \"5.4.5\"\n  },\n  dependencies: {\n    \"@opentelemetry/instrumentation\": \"^0.207.0\"\n  },\n  peerDependencies: {\n    \"@opentelemetry/api\": \"^1.8\"\n  },\n  files: [\n    \"dist\"\n  ],\n  keywords: [\n    \"prisma\",\n    \"instrumentation\",\n    \"opentelemetry\",\n    \"otel\"\n  ],\n  scripts: {\n    dev: \"DEV=true tsx helpers/build.ts\",\n    build: \"tsx helpers/build.ts\",\n    prepublishOnly: \"pnpm run build\",\n    test: \"vitest run\"\n  },\n  sideEffects: false\n};\n\n// src/constants.ts\nvar VERSION = package_default2.version;\nvar NAME = package_default2.name;\nvar MODULE_NAME = \"@prisma/client\";\n\n// src/PrismaInstrumentation.ts\nvar PrismaInstrumentation = class extends import_instrumentation.InstrumentationBase {\n  tracerProvider;\n  constructor(config = {}) {\n    super(NAME, VERSION, config);\n  }\n  setTracerProvider(tracerProvider) {\n    this.tracerProvider = tracerProvider;\n  }\n  init() {\n    const module2 = new import_instrumentation.InstrumentationNodeModuleDefinition(MODULE_NAME, [VERSION]);\n    return [module2];\n  }\n  enable() {\n    const config = this._config;\n    setGlobalTracingHelper(\n      new ActiveTracingHelper({\n        tracerProvider: this.tracerProvider ?? import_api2.trace.getTracerProvider(),\n        ignoreSpanTypes: config.ignoreSpanTypes ?? []\n      })\n    );\n  }\n  disable() {\n    clearGlobalTracingHelper();\n  }\n  isEnabled() {\n    return getGlobalTracingHelper() !== void 0;\n  }\n};\n\n// src/index.ts\nvar import_instrumentation2 = require(\"@opentelemetry/instrumentation\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  PrismaInstrumentation,\n  registerInstrumentations\n});\n","import type { Link, Tracer } from '@opentelemetry/api';\nimport { context, SpanKind, trace, TraceFlags } from '@opentelemetry/api';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport type { IdGenerator } from '@opentelemetry/sdk-trace-base';\nimport { PrismaInstrumentation } from '@prisma/instrumentation';\nimport { consoleSandbox, defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport type { PrismaV5TracingHelper } from './prisma/vendor/v5-tracing-helper';\nimport type { PrismaV6TracingHelper } from './prisma/vendor/v6-tracing-helper';\n\nconst INTEGRATION_NAME = 'Prisma';\n\ntype CompatibilityLayerTraceHelper = PrismaV5TracingHelper & PrismaV6TracingHelper;\n\n// Vendored in from @prisma/instrumentation v5:\ntype V5EngineSpanEvent = {\n  span: boolean;\n  spans: V5EngineSpan[];\n};\n\ntype V5EngineSpanKind = 'client' | 'internal';\n\ntype V5EngineSpan = {\n  span: boolean;\n  name: string;\n  trace_id: string;\n  span_id: string;\n  parent_span_id: string;\n  start_time: [number, number];\n  end_time: [number, number];\n  attributes?: Record;\n  links?: { trace_id: string; span_id: string }[];\n  kind: V5EngineSpanKind;\n};\n\nfunction isPrismaV6TracingHelper(helper: unknown): helper is PrismaV6TracingHelper {\n  return !!helper && typeof helper === 'object' && 'dispatchEngineSpans' in helper;\n}\n\nfunction getPrismaTracingHelper(): unknown | undefined {\n  const prismaInstrumentationObject = (globalThis as Record).PRISMA_INSTRUMENTATION;\n  const prismaTracingHelper =\n    prismaInstrumentationObject &&\n    typeof prismaInstrumentationObject === 'object' &&\n    'helper' in prismaInstrumentationObject\n      ? prismaInstrumentationObject.helper\n      : undefined;\n\n  return prismaTracingHelper;\n}\n\ntype TracerWithIdGenerator = Tracer & {\n  _idGenerator?: IdGenerator;\n};\n\ninterface PrismaOptions {\n  /**\n   * @deprecated This is no longer used, v5 works out of the box.\n   */\n  prismaInstrumentation?: Instrumentation;\n  /**\n   * Configuration passed through to the {@link PrismaInstrumentation} constructor.\n   */\n  instrumentationConfig?: ConstructorParameters[0];\n}\n\nclass SentryPrismaInteropInstrumentation extends PrismaInstrumentation {\n  public constructor(options?: PrismaOptions) {\n    super(options?.instrumentationConfig);\n  }\n\n  public enable(): void {\n    super.enable();\n\n    // The PrismaIntegration (super class) defines a global variable `global[\"PRISMA_INSTRUMENTATION\"]` when `enable()` is called. This global variable holds a \"TracingHelper\" which Prisma uses internally to create tracing data. It's their way of not depending on OTEL with their main package. The sucky thing is, prisma broke the interface of the tracing helper with the v6 major update. This means that if you use Prisma 5 with the v6 instrumentation (or vice versa) Prisma just blows up, because tries to call methods on the helper that no longer exist.\n    // Because we actually want to use the v6 instrumentation and not blow up in Prisma 5 user's faces, what we're doing here is backfilling the v5 method (`createEngineSpan`) with a noop so that no longer crashes when it attempts to call that function.\n    const prismaTracingHelper = getPrismaTracingHelper();\n\n    if (isPrismaV6TracingHelper(prismaTracingHelper)) {\n      // Inspired & adjusted from https://github.com/prisma/prisma/tree/5.22.0/packages/instrumentation\n      (prismaTracingHelper as CompatibilityLayerTraceHelper).createEngineSpan = (\n        engineSpanEvent: V5EngineSpanEvent,\n      ) => {\n        const tracer = trace.getTracer('prismaV5Compatibility') as TracerWithIdGenerator;\n\n        // Prisma v5 relies on being able to create spans with a specific span & trace ID\n        // this is no longer possible in OTEL v2, there is no public API to do this anymore\n        // So in order to kind of hack this possibility, we rely on the internal `_idGenerator` property\n        // This is used to generate the random IDs, and we overwrite this temporarily to generate static IDs\n        // This is flawed and may not work, e.g. if the code is bundled and the private property is renamed\n        // in such cases, these spans will not be captured and some Prisma spans will be missing\n        const initialIdGenerator = tracer._idGenerator;\n\n        if (!initialIdGenerator) {\n          consoleSandbox(() => {\n            // eslint-disable-next-line no-console\n            console.warn(\n              '[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!',\n            );\n          });\n\n          return;\n        }\n\n        try {\n          engineSpanEvent.spans.forEach(engineSpan => {\n            const kind = engineSpanKindToOTELSpanKind(engineSpan.kind);\n\n            const parentSpanId = engineSpan.parent_span_id;\n            const spanId = engineSpan.span_id;\n            const traceId = engineSpan.trace_id;\n\n            const links: Link[] | undefined = engineSpan.links?.map(link => {\n              return {\n                context: {\n                  traceId: link.trace_id,\n                  spanId: link.span_id,\n                  traceFlags: TraceFlags.SAMPLED,\n                },\n              };\n            });\n\n            const ctx = trace.setSpanContext(context.active(), {\n              traceId,\n              spanId: parentSpanId,\n              traceFlags: TraceFlags.SAMPLED,\n            });\n\n            context.with(ctx, () => {\n              const temporaryIdGenerator: IdGenerator = {\n                generateTraceId: () => {\n                  return traceId;\n                },\n                generateSpanId: () => {\n                  return spanId;\n                },\n              };\n\n              tracer._idGenerator = temporaryIdGenerator;\n\n              const span = tracer.startSpan(engineSpan.name, {\n                kind,\n                links,\n                startTime: engineSpan.start_time,\n                attributes: engineSpan.attributes,\n              });\n\n              span.end(engineSpan.end_time);\n\n              tracer._idGenerator = initialIdGenerator;\n            });\n          });\n        } finally {\n          // Ensure we always restore this at the end, even if something errors\n          tracer._idGenerator = initialIdGenerator;\n        }\n      };\n    }\n  }\n}\n\nfunction engineSpanKindToOTELSpanKind(engineSpanKind: V5EngineSpanKind): SpanKind {\n  switch (engineSpanKind) {\n    case 'client':\n      return SpanKind.CLIENT;\n    case 'internal':\n    default: // Other span kinds aren't currently supported\n      return SpanKind.INTERNAL;\n  }\n}\n\nexport const instrumentPrisma = generateInstrumentOnce(INTEGRATION_NAME, options => {\n  return new SentryPrismaInteropInstrumentation(options);\n});\n\n/**\n * Adds Sentry tracing instrumentation for the [prisma](https://www.npmjs.com/package/prisma) library.\n * For more information, see the [`prismaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/prisma/).\n *\n * NOTE: By default, this integration works with Prisma version 6.\n * To get performance instrumentation for other Prisma versions,\n * 1. Install the `@prisma/instrumentation` package with the desired version.\n * 1. Pass a `new PrismaInstrumentation()` instance as exported from `@prisma/instrumentation` to the `prismaInstrumentation` option of this integration:\n *\n *    ```js\n *    import { PrismaInstrumentation } from '@prisma/instrumentation'\n *\n *    Sentry.init({\n *      integrations: [\n *        prismaIntegration({\n *          // Override the default instrumentation that Sentry uses\n *          prismaInstrumentation: new PrismaInstrumentation()\n *        })\n *      ]\n *    })\n *    ```\n *\n *    The passed instrumentation instance will override the default instrumentation instance the integration would use, while the `prismaIntegration` will still ensure data compatibility for the various Prisma versions.\n * 1. Depending on your Prisma version (prior to version 6), add `previewFeatures = [\"tracing\"]` to the client generator block of your Prisma schema:\n *\n *    ```\n *    generator client {\n *      provider = \"prisma-client-js\"\n *      previewFeatures = [\"tracing\"]\n *    }\n *    ```\n */\nexport const prismaIntegration = defineIntegration((options?: PrismaOptions) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPrisma(options);\n    },\n    setup(client) {\n      // If no tracing helper exists, we skip any work here\n      // this means that prisma is not being used\n      if (!getPrismaTracingHelper()) {\n        return;\n      }\n\n      client.on('spanStart', span => {\n        const spanJSON = spanToJSON(span);\n        if (spanJSON.description?.startsWith('prisma:')) {\n          span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.prisma');\n        }\n\n        // Make sure we use the query text as the span name, for ex. SELECT * FROM \"User\" WHERE \"id\" = $1\n        if (spanJSON.description === 'prisma:engine:db_query' && spanJSON.data['db.query.text']) {\n          span.updateName(spanJSON.data['db.query.text'] as string);\n        }\n\n        // In Prisma v5.22+, the `db.system` attribute is automatically set\n        // On older versions, this is missing, so we add it here\n        if (spanJSON.description === 'prisma:engine:db_query' && !spanJSON.data['db.system']) {\n          span.setAttribute('db.system', 'prisma');\n        }\n      });\n    },\n  };\n});\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-hapi';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as Hapi from '@hapi/hapi';\n\nexport const HapiComponentName = '@hapi/hapi';\n\n/**\n * This symbol is used to mark a Hapi route handler or server extension handler as\n * already patched, since its possible to use these handlers multiple times\n * i.e. when allowing multiple versions of one plugin, or when registering a plugin\n * multiple times on different servers.\n */\nexport const handlerPatched: unique symbol = Symbol('hapi-handler-patched');\n\nexport type HapiServerRouteInputMethod = (route: HapiServerRouteInput) => void;\n\nexport type HapiServerRouteInput =\n  | PatchableServerRoute\n  | PatchableServerRoute[];\n\nexport type PatchableServerRoute = Hapi.ServerRoute & {\n  [handlerPatched]?: boolean;\n};\n\nexport type HapiPluginObject = Hapi.ServerRegisterPluginObject;\n\nexport type HapiPluginInput =\n  | HapiPluginObject\n  | Array>;\n\nexport type RegisterFunction = (\n  plugin: HapiPluginInput,\n  options?: Hapi.ServerRegisterOptions\n) => Promise;\n\nexport type PatchableExtMethod = Hapi.Lifecycle.Method & {\n  [handlerPatched]?: boolean;\n};\n\nexport type ServerExtDirectInput = [\n  Hapi.ServerRequestExtType,\n  Hapi.Lifecycle.Method,\n  (Hapi.ServerExtOptions | undefined)?,\n];\n\nexport const HapiLayerType = {\n  ROUTER: 'router',\n  PLUGIN: 'plugin',\n  EXT: 'server.ext',\n};\n\nexport const HapiLifecycleMethodNames = new Set([\n  'onPreAuth',\n  'onCredentials',\n  'onPostAuth',\n  'onPreHandler',\n  'onPostHandler',\n  'onPreResponse',\n  'onRequest',\n]);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  HAPI_TYPE = 'hapi.type',\n  PLUGIN_NAME = 'hapi.plugin.name',\n  EXT_TYPE = 'server.ext.type',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n  ATTR_HTTP_ROUTE,\n  ATTR_HTTP_REQUEST_METHOD,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_HTTP_METHOD } from './semconv';\nimport type * as Hapi from '@hapi/hapi';\nimport {\n  HapiLayerType,\n  HapiLifecycleMethodNames,\n  HapiPluginObject,\n  PatchableExtMethod,\n  ServerExtDirectInput,\n} from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\n\nexport function getPluginName(plugin: Hapi.Plugin): string {\n  if ((plugin as Hapi.PluginNameVersion).name) {\n    return (plugin as Hapi.PluginNameVersion).name;\n  } else {\n    return (plugin as Hapi.PluginPackage).pkg.name;\n  }\n}\n\nexport const isLifecycleExtType = (\n  variableToCheck: unknown\n): variableToCheck is Hapi.ServerRequestExtType => {\n  return (\n    typeof variableToCheck === 'string' &&\n    HapiLifecycleMethodNames.has(variableToCheck)\n  );\n};\n\nexport const isLifecycleExtEventObj = (\n  variableToCheck: unknown\n): variableToCheck is Hapi.ServerExtEventsRequestObject => {\n  const event = (variableToCheck as Hapi.ServerExtEventsRequestObject)?.type;\n  return event !== undefined && isLifecycleExtType(event);\n};\n\nexport const isDirectExtInput = (\n  variableToCheck: unknown\n): variableToCheck is ServerExtDirectInput => {\n  return (\n    Array.isArray(variableToCheck) &&\n    variableToCheck.length <= 3 &&\n    isLifecycleExtType(variableToCheck[0]) &&\n    typeof variableToCheck[1] === 'function'\n  );\n};\n\nexport const isPatchableExtMethod = (\n  variableToCheck: PatchableExtMethod | PatchableExtMethod[]\n): variableToCheck is PatchableExtMethod => {\n  return !Array.isArray(variableToCheck);\n};\n\nexport const getRouteMetadata = (\n  route: Hapi.ServerRoute,\n  semconvStability: SemconvStability,\n  pluginName?: string\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  const attributes: Attributes = {\n    [ATTR_HTTP_ROUTE]: route.path,\n  };\n  if (semconvStability & SemconvStability.OLD) {\n    attributes[ATTR_HTTP_METHOD] = route.method;\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    // Note: This currently does *not* normalize the method name to uppercase\n    // and conditionally include `http.request.method.original` as described\n    // at https://opentelemetry.io/docs/specs/semconv/http/http-spans/\n    // These attributes are for a *hapi* span, and not the parent HTTP span,\n    // so the HTTP span guidance doesn't strictly apply.\n    attributes[ATTR_HTTP_REQUEST_METHOD] = route.method;\n  }\n\n  let name;\n  if (pluginName) {\n    attributes[AttributeNames.HAPI_TYPE] = HapiLayerType.PLUGIN;\n    attributes[AttributeNames.PLUGIN_NAME] = pluginName;\n    name = `${pluginName}: route - ${route.path}`;\n  } else {\n    attributes[AttributeNames.HAPI_TYPE] = HapiLayerType.ROUTER;\n    name = `route - ${route.path}`;\n  }\n\n  return { attributes, name };\n};\n\nexport const getExtMetadata = (\n  extPoint: Hapi.ServerRequestExtType,\n  pluginName?: string,\n  methodName?: string\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  let baseName = `ext - ${extPoint}`;\n  if (methodName && methodName !== 'method') {\n    // method is the default name for the extension in the ServerExtEventsObject format.\n    baseName = `ext - ${extPoint} - ${methodName}`;\n  }\n  if (pluginName) {\n    return {\n      attributes: {\n        [AttributeNames.EXT_TYPE]: extPoint,\n        [AttributeNames.HAPI_TYPE]: HapiLayerType.EXT,\n        [AttributeNames.PLUGIN_NAME]: pluginName,\n      },\n      name: `${pluginName}: ${baseName}`,\n    };\n  }\n  return {\n    attributes: {\n      [AttributeNames.EXT_TYPE]: extPoint,\n      [AttributeNames.HAPI_TYPE]: HapiLayerType.EXT,\n    },\n    name: baseName,\n  };\n};\n\nexport const getPluginFromInput = (\n  pluginObj: HapiPluginObject\n): Hapi.Plugin => {\n  if ('plugin' in pluginObj) {\n    if ('plugin' in pluginObj.plugin) {\n      return pluginObj.plugin.plugin;\n    }\n    return pluginObj.plugin;\n  }\n  return pluginObj;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\n\nimport type * as Hapi from '@hapi/hapi';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  HapiComponentName,\n  HapiServerRouteInput,\n  handlerPatched,\n  PatchableServerRoute,\n  HapiServerRouteInputMethod,\n  HapiPluginInput,\n  RegisterFunction,\n  PatchableExtMethod,\n  ServerExtDirectInput,\n} from './internal-types';\nimport {\n  getRouteMetadata,\n  getPluginName,\n  isLifecycleExtType,\n  isLifecycleExtEventObj,\n  getExtMetadata,\n  isDirectExtInput,\n  isPatchableExtMethod,\n  getPluginFromInput,\n} from './utils';\n\n/** Hapi instrumentation for OpenTelemetry */\nexport class HapiInstrumentation extends InstrumentationBase {\n  private _semconvStability: SemconvStability;\n\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    return new InstrumentationNodeModuleDefinition(\n      HapiComponentName,\n      ['>=17.0.0 <22'],\n      (module: any) => {\n        const moduleExports: typeof Hapi =\n          module[Symbol.toStringTag] === 'Module' ? module.default : module;\n        if (!isWrapped(moduleExports.server)) {\n          this._wrap(\n            moduleExports,\n            'server',\n            this._getServerPatch.bind(this) as any\n          );\n        }\n\n        if (!isWrapped(moduleExports.Server)) {\n          this._wrap(\n            moduleExports,\n            'Server',\n            this._getServerPatch.bind(this) as any\n          );\n        }\n        return moduleExports;\n      },\n      (module: any) => {\n        const moduleExports: typeof Hapi =\n          module[Symbol.toStringTag] === 'Module' ? module.default : module;\n        this._massUnwrap([moduleExports], ['server', 'Server']);\n      }\n    );\n  }\n\n  /**\n   * Patches the Hapi.server and Hapi.Server functions in order to instrument\n   * the server.route, server.ext, and server.register functions via calls to the\n   * @function _getServerRoutePatch, @function _getServerExtPatch, and\n   * @function _getServerRegisterPatch functions\n   * @param original - the original Hapi Server creation function\n   */\n  private _getServerPatch(\n    original: (options?: Hapi.ServerOptions) => Hapi.Server\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n    const self = this;\n    return function server(this: Hapi.Server, opts?: Hapi.ServerOptions) {\n      const newServer: Hapi.Server = original.apply(this, [opts]);\n\n      self._wrap(newServer, 'route', originalRouter => {\n        return instrumentation._getServerRoutePatch.bind(instrumentation)(\n          originalRouter\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n      // function, which requires supporting a variety of different parameters\n      // as extension inputs\n      self._wrap(newServer, 'ext', originalExtHandler => {\n        return instrumentation._getServerExtPatch.bind(instrumentation)(\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          originalExtHandler as any\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.Server.register\n      // function, which requires supporting a variety of different types of Plugin inputs\n      self._wrap(\n        newServer,\n        'register',\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        instrumentation._getServerRegisterPatch.bind(instrumentation) as any\n      );\n      return newServer;\n    };\n  }\n\n  /**\n   * Patches the plugin register function used by the Hapi Server. This function\n   * goes through each plugin that is being registered and adds instrumentation\n   * via a call to the @function _wrapRegisterHandler function.\n   * @param {RegisterFunction} original - the original register function which\n   * registers each plugin on the server\n   */\n  private _getServerRegisterPatch(\n    original: RegisterFunction\n  ): RegisterFunction {\n    const instrumentation: HapiInstrumentation = this;\n    return function register(\n      this: Hapi.Server,\n      pluginInput: HapiPluginInput,\n      options?: Hapi.ServerRegisterOptions\n    ) {\n      if (Array.isArray(pluginInput)) {\n        for (const pluginObj of pluginInput) {\n          const plugin = getPluginFromInput(pluginObj);\n          instrumentation._wrapRegisterHandler(plugin);\n        }\n      } else {\n        const plugin = getPluginFromInput(pluginInput);\n        instrumentation._wrapRegisterHandler(plugin);\n      }\n      return original.apply(this, [pluginInput, options]);\n    };\n  }\n\n  /**\n   * Patches the Server.ext function which adds extension methods to the specified\n   * point along the request lifecycle. This function accepts the full range of\n   * accepted input into the standard Hapi `server.ext` function. For each extension,\n   * it adds instrumentation to the handler via a call to the @function _wrapExtMethods\n   * function.\n   * @param original - the original ext function which adds the extension method to the server\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server extension. Else, signifies that the extension was added directly\n   */\n  private _getServerExtPatch(\n    original: (...args: unknown[]) => unknown,\n    pluginName?: string\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n\n    return function ext(\n      this: ThisParameterType,\n      ...args: Parameters\n    ) {\n      if (Array.isArray(args[0])) {\n        const eventsList:\n          | Hapi.ServerExtEventsObject[]\n          | Hapi.ServerExtEventsRequestObject[] = args[0];\n        for (let i = 0; i < eventsList.length; i++) {\n          const eventObj = eventsList[i];\n          if (isLifecycleExtType(eventObj.type)) {\n            const lifecycleEventObj =\n              eventObj as Hapi.ServerExtEventsRequestObject;\n            const handler = instrumentation._wrapExtMethods(\n              lifecycleEventObj.method,\n              eventObj.type,\n              pluginName\n            );\n            lifecycleEventObj.method = handler;\n            eventsList[i] = lifecycleEventObj;\n          }\n        }\n        return original.apply(this, args);\n      } else if (isDirectExtInput(args)) {\n        const extInput: ServerExtDirectInput = args;\n        const method: PatchableExtMethod = extInput[1];\n        const handler = instrumentation._wrapExtMethods(\n          method,\n          extInput[0],\n          pluginName\n        );\n        return original.apply(this, [extInput[0], handler, extInput[2]]);\n      } else if (isLifecycleExtEventObj(args[0])) {\n        const lifecycleEventObj = args[0];\n        const handler = instrumentation._wrapExtMethods(\n          lifecycleEventObj.method,\n          lifecycleEventObj.type,\n          pluginName\n        );\n        lifecycleEventObj.method = handler;\n        return original.call(this, lifecycleEventObj);\n      }\n      return original.apply(this, args);\n    };\n  }\n\n  /**\n   * Patches the Server.route function. This function accepts either one or an array\n   * of Hapi.ServerRoute objects and adds instrumentation on each route via a call to\n   * the @function _wrapRouteHandler function.\n   * @param {HapiServerRouteInputMethod} original - the original route function which adds\n   * the route to the server\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _getServerRoutePatch(\n    original: HapiServerRouteInputMethod,\n    pluginName?: string\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n    return function route(\n      this: Hapi.Server,\n      route: HapiServerRouteInput\n    ): void {\n      if (Array.isArray(route)) {\n        for (let i = 0; i < route.length; i++) {\n          const newRoute = instrumentation._wrapRouteHandler.call(\n            instrumentation,\n            route[i],\n            pluginName\n          );\n          route[i] = newRoute;\n        }\n      } else {\n        route = instrumentation._wrapRouteHandler.call(\n          instrumentation,\n          route,\n          pluginName\n        );\n      }\n      return original.apply(this, [route]);\n    };\n  }\n\n  /**\n   * Wraps newly registered plugins to add instrumentation to the plugin's clone of\n   * the original server. Specifically, wraps the server.route and server.ext functions\n   * via calls to @function _getServerRoutePatch and @function _getServerExtPatch\n   * @param {Hapi.Plugin} plugin - the new plugin which is being instrumented\n   */\n  private _wrapRegisterHandler(plugin: Hapi.Plugin): void {\n    const instrumentation: HapiInstrumentation = this;\n    const pluginName = getPluginName(plugin);\n    const oldRegister = plugin.register;\n    const self = this;\n    const newRegisterHandler = function (\n      this: typeof plugin,\n      server: Hapi.Server,\n      options: T\n    ) {\n      self._wrap(server, 'route', original => {\n        return instrumentation._getServerRoutePatch.bind(instrumentation)(\n          original,\n          pluginName\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n      // function, which requires supporting a variety of different parameters\n      // as extension inputs\n      self._wrap(server, 'ext', originalExtHandler => {\n        return instrumentation._getServerExtPatch.bind(instrumentation)(\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          originalExtHandler as any,\n          pluginName\n        );\n      });\n      return oldRegister.call(this, server, options);\n    };\n    plugin.register = newRegisterHandler;\n  }\n\n  /**\n   * Wraps request extension methods to add instrumentation to each new extension handler.\n   * Patches each individual extension in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {PatchableExtMethod | PatchableExtMethod[]} method - the request extension\n   * handler which is being instrumented\n   * @param {Hapi.ServerRequestExtType} extPoint - the point in the Hapi request lifecycle\n   * which this extension targets\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _wrapExtMethods(\n    method: T,\n    extPoint: Hapi.ServerRequestExtType,\n    pluginName?: string\n  ): T {\n    const instrumentation: HapiInstrumentation = this;\n    if (method instanceof Array) {\n      for (let i = 0; i < method.length; i++) {\n        method[i] = instrumentation._wrapExtMethods(\n          method[i],\n          extPoint\n        ) as PatchableExtMethod;\n      }\n      return method;\n    } else if (isPatchableExtMethod(method)) {\n      if (method[handlerPatched] === true) return method;\n      method[handlerPatched] = true;\n\n      const newHandler: PatchableExtMethod = async function (\n        ...params: Parameters\n      ) {\n        if (api.trace.getSpan(api.context.active()) === undefined) {\n          return await method.apply(this, params);\n        }\n        const metadata = getExtMetadata(extPoint, pluginName, method.name);\n        const span = instrumentation.tracer.startSpan(metadata.name, {\n          attributes: metadata.attributes,\n        });\n        try {\n          return await api.context.with<\n            Parameters,\n            Hapi.Lifecycle.Method\n          >(\n            api.trace.setSpan(api.context.active(), span),\n            method,\n            undefined,\n            ...params\n          );\n        } catch (err: any) {\n          span.recordException(err);\n          span.setStatus({\n            code: api.SpanStatusCode.ERROR,\n            message: err.message,\n          });\n          throw err;\n        } finally {\n          span.end();\n        }\n      };\n      return newHandler as T;\n    }\n    return method;\n  }\n\n  /**\n   * Patches each individual route handler method in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {PatchableServerRoute} route - the route handler which is being instrumented\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _wrapRouteHandler(\n    route: PatchableServerRoute,\n    pluginName?: string\n  ): PatchableServerRoute {\n    const instrumentation: HapiInstrumentation = this;\n    if (route[handlerPatched] === true) return route;\n    route[handlerPatched] = true;\n\n    const wrapHandler: (\n      oldHandler: Hapi.Lifecycle.Method\n    ) => Hapi.Lifecycle.Method = oldHandler => {\n      return async function (...params: Parameters) {\n        if (api.trace.getSpan(api.context.active()) === undefined) {\n          return await oldHandler.call(this, ...params);\n        }\n        const rpcMetadata = getRPCMetadata(api.context.active());\n        if (rpcMetadata?.type === RPCType.HTTP) {\n          rpcMetadata.route = route.path;\n        }\n        const metadata = getRouteMetadata(\n          route,\n          instrumentation._semconvStability,\n          pluginName\n        );\n        const span = instrumentation.tracer.startSpan(metadata.name, {\n          attributes: metadata.attributes,\n        });\n        try {\n          return await api.context.with(\n            api.trace.setSpan(api.context.active(), span),\n            () => oldHandler.call(this, ...params)\n          );\n        } catch (err: any) {\n          span.recordException(err);\n          span.setStatus({\n            code: api.SpanStatusCode.ERROR,\n            message: err.message,\n          });\n          throw err;\n        } finally {\n          span.end();\n        }\n      };\n    };\n\n    if (typeof route.handler === 'function') {\n      route.handler = wrapHandler(route.handler as Hapi.Lifecycle.Method);\n    } else if (typeof route.options === 'function') {\n      const oldOptions = route.options;\n      route.options = function (server) {\n        const options = oldOptions(server);\n        if (typeof options.handler === 'function') {\n          options.handler = wrapHandler(\n            options.handler as Hapi.Lifecycle.Method\n          );\n        }\n        return options;\n      };\n    } else if (typeof route.options?.handler === 'function') {\n      route.options.handler = wrapHandler(\n        route.options.handler as Hapi.Lifecycle.Method\n      );\n    }\n    return route;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { HapiInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\n","import { HapiInstrumentation } from '@opentelemetry/instrumentation-hapi';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getClient,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  SDK_VERSION,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport type { Request, RequestEvent, Server } from './types';\n\nconst INTEGRATION_NAME = 'Hapi';\n\nexport const instrumentHapi = generateInstrumentOnce(INTEGRATION_NAME, () => new HapiInstrumentation());\n\nconst _hapiIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentHapi();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Hapi](https://hapi.dev/).\n *\n * If you also want to capture errors, you need to call `setupHapiErrorHandler(server)` after you set up your server.\n *\n * For more information, see the [hapi documentation](https://docs.sentry.io/platforms/javascript/guides/hapi/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.hapiIntegration()],\n * })\n * ```\n */\nexport const hapiIntegration = defineIntegration(_hapiIntegration);\n\nfunction isErrorEvent(event: unknown): event is RequestEvent {\n  return !!(event && typeof event === 'object' && 'error' in event && event.error);\n}\n\nfunction sendErrorToSentry(errorData: object): void {\n  captureException(errorData, {\n    mechanism: {\n      type: 'auto.function.hapi',\n      handled: false,\n    },\n  });\n}\n\nexport const hapiErrorPlugin = {\n  name: 'SentryHapiErrorPlugin',\n  version: SDK_VERSION,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  register: async function (serverArg: Record) {\n    const server = serverArg as unknown as Server;\n\n    server.events.on({ name: 'request', channels: ['error'] }, (request: Request, event: RequestEvent) => {\n      if (getIsolationScope() !== getDefaultIsolationScope()) {\n        const route = request.route;\n        if (route.path) {\n          getIsolationScope().setTransactionName(`${route.method.toUpperCase()} ${route.path}`);\n        }\n      } else {\n        DEBUG_BUILD &&\n          debug.warn('Isolation scope is still the default isolation scope - skipping setting transactionName');\n      }\n\n      if (isErrorEvent(event)) {\n        sendErrorToSentry(event.error);\n      }\n    });\n  },\n};\n\n/**\n * Add a Hapi plugin to capture errors to Sentry.\n *\n * @param server The Hapi server to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Hapi = require('@hapi/hapi');\n *\n * const init = async () => {\n *   const server = Hapi.server();\n *\n *   // all your routes here\n *\n *   await Sentry.setupHapiErrorHandler(server);\n *\n *   await server.start();\n * };\n * ```\n */\nexport async function setupHapiErrorHandler(server: Server): Promise {\n  await server.register(hapiErrorPlugin);\n\n  // Sadly, middleware spans do not go through `requestHook`, so we handle those here\n  // We register this hook in this method, because if we register it in the integration `setup`,\n  // it would always run even for users that are not even using hapi\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', span => {\n      addHapiSpanAttributes(span);\n    });\n  }\n\n  ensureIsWrapped(server.register, 'hapi');\n}\n\nfunction addHapiSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: router, plugin, server.ext\n  const type = attributes['hapi.type'];\n\n  // If this is already set, or we have no Hapi span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hapi',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hapi`,\n  });\n}\n","export const AttributeNames = {\n  HONO_TYPE: 'hono.type',\n  HONO_NAME: 'hono.name',\n} as const;\n\nexport type AttributeNames = (typeof AttributeNames)[keyof typeof AttributeNames];\n\nexport const HonoTypes = {\n  MIDDLEWARE: 'middleware',\n  REQUEST_HANDLER: 'request_handler',\n} as const;\n\nexport type HonoTypes = (typeof HonoTypes)[keyof typeof HonoTypes];\n","import type { Span } from '@opentelemetry/api';\nimport { context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { isThenable } from '@sentry/core';\nimport { AttributeNames, HonoTypes } from './constants';\nimport type {\n  Context,\n  Handler,\n  HandlerInterface,\n  Hono,\n  HonoInstance,\n  MiddlewareHandler,\n  MiddlewareHandlerInterface,\n  Next,\n  OnHandlerInterface,\n} from './types';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-hono';\nconst PACKAGE_VERSION = '0.0.1';\n\nexport interface HonoResponseHookFunction {\n  (span: Span): void;\n}\n\nexport interface HonoInstrumentationConfig extends InstrumentationConfig {\n  /** Function for adding custom span attributes from the response */\n  responseHook?: HonoResponseHookFunction;\n}\n\n/**\n * Hono instrumentation for OpenTelemetry\n */\nexport class HonoInstrumentation extends InstrumentationBase {\n  public constructor(config: HonoInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  /**\n   * Initialize the instrumentation.\n   */\n  public init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition('hono', ['>=4.0.0 <5'], moduleExports => this._patch(moduleExports)),\n    ];\n  }\n\n  /**\n   * Patches the module exports to instrument Hono.\n   */\n  private _patch(moduleExports: { Hono: Hono }): { Hono: Hono } {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    class WrappedHono extends moduleExports.Hono {\n      public constructor(...args: unknown[]) {\n        super(...args);\n\n        instrumentation._wrap(this, 'get', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'post', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'put', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'delete', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'options', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'patch', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'all', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'on', instrumentation._patchOnHandler());\n        instrumentation._wrap(this, 'use', instrumentation._patchMiddlewareHandler());\n      }\n    }\n\n    try {\n      moduleExports.Hono = WrappedHono;\n    } catch {\n      // This is a workaround for environments where direct assignment is not allowed.\n      return { ...moduleExports, Hono: WrappedHono };\n    }\n\n    return moduleExports;\n  }\n\n  /**\n   * Patches the route handler to instrument it.\n   */\n  private _patchHandler(): (original: HandlerInterface) => HandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: HandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        if (typeof args[0] === 'string') {\n          const path = args[0];\n          if (args.length === 1) {\n            return original.apply(this, [path]);\n          }\n\n          const handlers = args.slice(1);\n          return original.apply(this, [\n            path,\n            ...handlers.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n          ]);\n        }\n\n        return original.apply(\n          this,\n          args.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n        );\n      };\n    };\n  }\n\n  /**\n   * Patches the 'on' handler to instrument it.\n   */\n  private _patchOnHandler(): (original: OnHandlerInterface) => OnHandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: OnHandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        const handlers = args.slice(2);\n        return original.apply(this, [\n          ...args.slice(0, 2),\n          ...handlers.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n        ]);\n      };\n    };\n  }\n\n  /**\n   * Patches the middleware handler to instrument it.\n   */\n  private _patchMiddlewareHandler(): (original: MiddlewareHandlerInterface) => MiddlewareHandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: MiddlewareHandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        if (typeof args[0] === 'string') {\n          const path = args[0];\n          if (args.length === 1) {\n            return original.apply(this, [path]);\n          }\n\n          const handlers = args.slice(1);\n          return original.apply(this, [\n            path,\n            ...handlers.map(handler => instrumentation._wrapHandler(handler as MiddlewareHandler)),\n          ]);\n        }\n\n        return original.apply(\n          this,\n          args.map(handler => instrumentation._wrapHandler(handler as MiddlewareHandler)),\n        );\n      };\n    };\n  }\n\n  /**\n   * Wraps a handler or middleware handler to apply instrumentation.\n   */\n  private _wrapHandler(handler: Handler | MiddlewareHandler): Handler | MiddlewareHandler {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (this: unknown, c: Context, next: Next) {\n      if (!instrumentation.isEnabled()) {\n        return handler.apply(this, [c, next]);\n      }\n\n      const path = c.req.path;\n      const span = instrumentation.tracer.startSpan(path);\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        return instrumentation._safeExecute(\n          () => {\n            const result = handler.apply(this, [c, next]);\n            if (isThenable(result)) {\n              return result.then(result => {\n                const type = instrumentation._determineHandlerType(result);\n                span.setAttributes({\n                  [AttributeNames.HONO_TYPE]: type,\n                  [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n                });\n                instrumentation.getConfig().responseHook?.(span);\n                return result;\n              });\n            } else {\n              const type = instrumentation._determineHandlerType(result);\n              span.setAttributes({\n                [AttributeNames.HONO_TYPE]: type,\n                [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n              });\n              instrumentation.getConfig().responseHook?.(span);\n              return result;\n            }\n          },\n          () => span.end(),\n          error => {\n            instrumentation._handleError(span, error);\n            span.end();\n          },\n        );\n      });\n    };\n  }\n\n  /**\n   * Safely executes a function and handles errors.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private _safeExecute(execute: () => any, onSuccess: () => void, onFailure: (error: unknown) => void): () => any {\n    try {\n      const result = execute();\n\n      if (isThenable(result)) {\n        result.then(\n          () => onSuccess(),\n          (error: unknown) => onFailure(error),\n        );\n      } else {\n        onSuccess();\n      }\n\n      return result;\n    } catch (error: unknown) {\n      onFailure(error);\n      throw error;\n    }\n  }\n\n  /**\n   * Determines the handler type based on the result.\n   * @param result\n   * @private\n   */\n  private _determineHandlerType(result: unknown): HonoTypes {\n    return result === undefined ? HonoTypes.MIDDLEWARE : HonoTypes.REQUEST_HANDLER;\n  }\n\n  /**\n   * Handles errors by setting the span status and recording the exception.\n   */\n  private _handleError(span: Span, error: unknown): void {\n    if (error instanceof Error) {\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: error.message,\n      });\n      span.recordException(error);\n    }\n  }\n}\n","import { ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  httpRequestToRequestData,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport { AttributeNames } from './constants';\nimport { HonoInstrumentation } from './instrumentation';\nimport type { Context, MiddlewareHandler, MiddlewareHandlerInterface, Next } from './types';\n\nconst INTEGRATION_NAME = 'Hono';\n\nfunction addHonoSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n  const type = attributes[AttributeNames.HONO_TYPE];\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hono',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hono`,\n  });\n\n  const name = attributes[AttributeNames.HONO_NAME];\n  if (typeof name === 'string') {\n    span.updateName(name);\n  }\n\n  if (getIsolationScope() === getDefaultIsolationScope()) {\n    DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n    return;\n  }\n\n  const route = attributes[ATTR_HTTP_ROUTE];\n  const method = attributes[ATTR_HTTP_REQUEST_METHOD];\n  if (typeof route === 'string' && typeof method === 'string') {\n    getIsolationScope().setTransactionName(`${method} ${route}`);\n  }\n}\n\nexport const instrumentHono = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new HonoInstrumentation({\n      responseHook: span => {\n        addHonoSpanAttributes(span);\n      },\n    }),\n);\n\nconst _honoIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentHono();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Hono](https://hono.dev/).\n *\n * If you also want to capture errors, you need to call `setupHonoErrorHandler(app)` after you set up your Hono server.\n *\n * For more information, see the [hono documentation](https://docs.sentry.io/platforms/javascript/guides/hono/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.honoIntegration()],\n * })\n * ```\n */\nexport const honoIntegration = defineIntegration(_honoIntegration);\n\ninterface HonoHandlerOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   * @param error Captured Hono error\n   */\n  shouldHandleError: (context: Context) => boolean;\n}\n\nfunction honoRequestHandler(): MiddlewareHandler {\n  return async function sentryRequestMiddleware(context: Context, next: Next): Promise {\n    const normalizedRequest = httpRequestToRequestData(context.req);\n    getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n    await next();\n  };\n}\n\nfunction defaultShouldHandleError(context: Context): boolean {\n  const statusCode = context.res.status;\n  return statusCode >= 500;\n}\n\nfunction honoErrorHandler(options?: Partial): MiddlewareHandler {\n  return async function sentryErrorMiddleware(context: Context, next: Next): Promise {\n    await next();\n\n    const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n    if (shouldHandleError(context)) {\n      (context.res as { sentry?: string }).sentry = captureException(context.error, {\n        mechanism: {\n          type: 'auto.middleware.hono',\n          handled: false,\n        },\n      });\n    }\n  };\n}\n\n/**\n * Add a Hono error handler to capture errors to Sentry.\n *\n * @param app The Hono instances\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const { Hono } = require(\"hono\");\n *\n * const app = new Hono();\n *\n * Sentry.setupHonoErrorHandler(app);\n *\n * // Add your routes, etc.\n * ```\n */\nexport function setupHonoErrorHandler(\n  app: { use: MiddlewareHandlerInterface },\n  options?: Partial,\n): void {\n  app.use(honoRequestHandler());\n  app.use(honoErrorHandler(options));\n  ensureIsWrapped(app.use, 'hono');\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport enum KoaLayerType {\n  ROUTER = 'router',\n  MIDDLEWARE = 'middleware',\n}\n\n/**\n * Information about the current Koa middleware layer\n * The middleware layer type is any by default.\n * One can install koa types packages `@types/koa` and `@types/koa__router`\n * with compatible versions to the koa version used in the project\n * to get more specific types for the middleware layer property.\n *\n * Example use in a custom attribute function:\n * ```ts\n * import type { Middleware, ParameterizedContext, DefaultState } from 'koa';\n * import type { RouterParamContext } from '@koa/router';\n *\n * type KoaContext = ParameterizedContext;\n * type KoaMiddleware = Middleware;\n *\n * const koaConfig: KoaInstrumentationConfig = {\n *  requestHook: (span: Span, info: KoaRequestInfo) => {\n *   // custom typescript code that can access the typed into.middlewareLayer and info.context\n * }\n *\n */\nexport type KoaRequestInfo = {\n  context: KoaContextType;\n  middlewareLayer: KoaMiddlewareType;\n  layerType: KoaLayerType;\n};\n\n/**\n * Function that can be used to add custom attributes to the current span\n * @param span - The Express middleware layer span.\n * @param context - The current KoaContext.\n */\nexport interface KoaRequestCustomAttributeFunction<\n  KoaContextType = any,\n  KoaMiddlewareType = any,\n> {\n  (span: Span, info: KoaRequestInfo): void;\n}\n\n/**\n * Options available for the Koa Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-Instrumentation-koa#koa-Instrumentation-options))\n */\nexport interface KoaInstrumentationConfig<\n  KoaContextType = any,\n  KoaMiddlewareType = any,\n> extends InstrumentationConfig {\n  /** Ignore specific layers based on their type */\n  ignoreLayersType?: KoaLayerType[];\n  /** Function for adding custom attributes to each middleware layer span */\n  requestHook?: KoaRequestCustomAttributeFunction<\n    KoaContextType,\n    KoaMiddlewareType\n  >;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-koa';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  KOA_TYPE = 'koa.type',\n  KOA_NAME = 'koa.name',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { KoaLayerType, KoaInstrumentationConfig } from './types';\nimport { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { Attributes } from '@opentelemetry/api';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\n\nexport const getMiddlewareMetadata = (\n  context: KoaContext,\n  layer: KoaMiddleware,\n  isRouter: boolean,\n  layerPath?: string | RegExp\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  if (isRouter) {\n    return {\n      attributes: {\n        [AttributeNames.KOA_NAME]: layerPath?.toString(),\n        [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n        [ATTR_HTTP_ROUTE]: layerPath?.toString(),\n      },\n      name: context._matchedRouteName || `router - ${layerPath}`,\n    };\n  } else {\n    return {\n      attributes: {\n        [AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n        [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n      },\n      name: `middleware - ${layer.name}`,\n    };\n  }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n *     occurred\n */\nexport const isLayerIgnored = (\n  type: KoaLayerType,\n  config?: KoaInstrumentationConfig\n): boolean => {\n  return !!(\n    Array.isArray(config?.ignoreLayersType) &&\n    config?.ignoreLayersType?.includes(type)\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport type { Middleware, ParameterizedContext, DefaultState } from 'koa';\nimport type * as Router from '@koa/router';\n\n/**\n * Type compatibility note:\n *\n * This package uses @types/koa@3.x, but @types/koa__router@12.x depends on\n * @types/koa@2.x. This creates type conflicts when working with router middleware.\n * At runtime, koa@3.x is used throughout, so all methods exist and work correctly.\n *\n * The type casts in instrumentation.ts are necessary to bridge this gap.\n *\n * TODO: Remove type casts when @types/koa__router@13+ with @types/koa@3.x support is available\n */\n\nexport type KoaContext = ParameterizedContext<\n  DefaultState,\n  Router.RouterParamContext\n>;\nexport type KoaMiddleware = Middleware & {\n  router?: Router;\n};\n\n/**\n * This symbol is used to mark a Koa layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexport const kLayerPatched: unique symbol = Symbol('koa-layer-patched');\n\nexport type KoaPatchedMiddleware = KoaMiddleware & {\n  [kLayerPatched]?: boolean;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\n\nimport type * as koa from 'koa';\nimport { KoaLayerType, KoaInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { getMiddlewareMetadata, isLayerIgnored } from './utils';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  kLayerPatched,\n  KoaContext,\n  KoaMiddleware,\n  KoaPatchedMiddleware,\n} from './internal-types';\n\n/** Koa instrumentation for OpenTelemetry */\nexport class KoaInstrumentation extends InstrumentationBase {\n  constructor(config: KoaInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  protected init() {\n    return new InstrumentationNodeModuleDefinition(\n      'koa',\n      ['>=2.0.0 <4'],\n      (module: any) => {\n        const moduleExports: typeof koa =\n          module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        if (moduleExports == null) {\n          return moduleExports;\n        }\n        if (isWrapped(moduleExports.prototype.use)) {\n          this._unwrap(moduleExports.prototype, 'use');\n        }\n        this._wrap(\n          moduleExports.prototype,\n          'use',\n          this._getKoaUsePatch.bind(this)\n        );\n        return module;\n      },\n      (module: any) => {\n        const moduleExports: typeof koa =\n          module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        if (isWrapped(moduleExports.prototype.use)) {\n          this._unwrap(moduleExports.prototype, 'use');\n        }\n      }\n    );\n  }\n\n  /**\n   * Patches the Koa.use function in order to instrument each original\n   * middleware layer which is introduced\n   * @param {KoaMiddleware} middleware - the original middleware function\n   */\n  private _getKoaUsePatch(original: (middleware: KoaMiddleware) => koa) {\n    const plugin = this;\n    return function use(this: koa, middlewareFunction: KoaMiddleware) {\n      let patchedFunction: KoaMiddleware;\n      if (middlewareFunction.router) {\n        patchedFunction = plugin._patchRouterDispatch(middlewareFunction);\n      } else {\n        patchedFunction = plugin._patchLayer(middlewareFunction, false);\n      }\n      return original.apply(this, [patchedFunction]);\n    };\n  }\n\n  /**\n   * Patches the dispatch function used by @koa/router. This function\n   * goes through each routed middleware and adds instrumentation via a call\n   * to the @function _patchLayer function.\n   * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches\n   * routed middleware\n   */\n  private _patchRouterDispatch(dispatchLayer: KoaMiddleware): KoaMiddleware {\n    api.diag.debug('Patching @koa/router dispatch');\n\n    const router = dispatchLayer.router;\n\n    const routesStack = router?.stack ?? [];\n    for (const pathLayer of routesStack) {\n      const path = pathLayer.path;\n      // Type cast needed: router.stack comes from @types/koa@2.x but we use @types/koa@3.x\n      // See internal-types.ts for full explanation\n      const pathStack = pathLayer.stack as any;\n      for (let j = 0; j < pathStack.length; j++) {\n        const routedMiddleware: KoaMiddleware = pathStack[j];\n        pathStack[j] = this._patchLayer(routedMiddleware, true, path);\n      }\n    }\n\n    return dispatchLayer;\n  }\n\n  /**\n   * Patches each individual @param middlewareLayer function in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {KoaMiddleware} middlewareLayer - the original middleware function.\n   * @param {boolean} isRouter - tracks whether the original middleware function\n   * was dispatched by the router originally\n   * @param {string?} layerPath - if present, provides additional data from the\n   * router about the routed path which the middleware is attached to\n   */\n  private _patchLayer(\n    middlewareLayer: KoaPatchedMiddleware,\n    isRouter: boolean,\n    layerPath?: string | RegExp\n  ): KoaMiddleware {\n    const layerType = isRouter ? KoaLayerType.ROUTER : KoaLayerType.MIDDLEWARE;\n    // Skip patching layer if its ignored in the config\n    if (\n      middlewareLayer[kLayerPatched] === true ||\n      isLayerIgnored(layerType, this.getConfig())\n    )\n      return middlewareLayer;\n\n    if (\n      middlewareLayer.constructor.name === 'GeneratorFunction' ||\n      middlewareLayer.constructor.name === 'AsyncGeneratorFunction'\n    ) {\n      api.diag.debug('ignoring generator-based Koa middleware layer');\n      return middlewareLayer;\n    }\n\n    middlewareLayer[kLayerPatched] = true;\n\n    api.diag.debug('patching Koa middleware layer');\n    return async (context: KoaContext, next: koa.Next) => {\n      const parent = api.trace.getSpan(api.context.active());\n      if (parent === undefined) {\n        return middlewareLayer(context, next);\n      }\n      const metadata = getMiddlewareMetadata(\n        context,\n        middlewareLayer,\n        isRouter,\n        layerPath\n      );\n      const span = this.tracer.startSpan(metadata.name, {\n        attributes: metadata.attributes,\n      });\n\n      const rpcMetadata = getRPCMetadata(api.context.active());\n\n      if (rpcMetadata?.type === RPCType.HTTP && context._matchedRoute) {\n        rpcMetadata.route = context._matchedRoute.toString();\n      }\n\n      const { requestHook } = this.getConfig();\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            requestHook(span, {\n              context,\n              middlewareLayer,\n              layerType,\n            }),\n          e => {\n            if (e) {\n              api.diag.error('koa instrumentation: request hook failed', e);\n            }\n          },\n          true\n        );\n      }\n\n      const newContext = api.trace.setSpan(api.context.active(), span);\n      return api.context.with(newContext, async () => {\n        try {\n          return await middlewareLayer(context, next);\n        } catch (err: any) {\n          span.recordException(err);\n          throw err;\n        } finally {\n          span.end();\n        }\n      });\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { KoaInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\nexport { KoaLayerType } from './types';\nexport type {\n  KoaInstrumentationConfig,\n  KoaRequestCustomAttributeFunction,\n  KoaRequestInfo,\n} from './types';\n","import type { KoaInstrumentationConfig, KoaLayerType } from '@opentelemetry/instrumentation-koa';\nimport { KoaInstrumentation } from '@opentelemetry/instrumentation-koa';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  spanToJSON,\n} from '@sentry/core';\nimport { addOriginToSpan, ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\ninterface KoaOptions {\n  /**\n   * Ignore layers of specified types\n   */\n  ignoreLayersType?: Array<'middleware' | 'router'>;\n}\n\nconst INTEGRATION_NAME = 'Koa';\n\nexport const instrumentKoa = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  KoaInstrumentation,\n  (options: KoaOptions = {}) => {\n    return {\n      ignoreLayersType: options.ignoreLayersType as KoaLayerType[],\n      requestHook(span, info) {\n        addOriginToSpan(span, 'auto.http.otel.koa');\n\n        const attributes = spanToJSON(span).data;\n\n        // this is one of: middleware, router\n        const type = attributes['koa.type'];\n        if (type) {\n          span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.koa`);\n        }\n\n        // Also update the name\n        const name = attributes['koa.name'];\n        if (typeof name === 'string') {\n          // Somehow, name is sometimes `''` for middleware spans\n          // See: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2220\n          span.updateName(name || '< unknown >');\n        }\n\n        if (getIsolationScope() === getDefaultIsolationScope()) {\n          DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n          return;\n        }\n        const route = attributes[ATTR_HTTP_ROUTE];\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        const method = info.context?.request?.method?.toUpperCase() || 'GET';\n        if (route) {\n          getIsolationScope().setTransactionName(`${method} ${route}`);\n        }\n      },\n    } satisfies KoaInstrumentationConfig;\n  },\n);\n\nconst _koaIntegration = ((options: KoaOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentKoa(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Koa](https://koajs.com/).\n *\n * If you also want to capture errors, you need to call `setupKoaErrorHandler(app)` after you set up your Koa server.\n *\n * For more information, see the [koa documentation](https://docs.sentry.io/platforms/javascript/guides/koa/).\n *\n * @param {KoaOptions} options Configuration options for the Koa integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.koaIntegration()],\n * })\n * ```\n *\n * @example\n * ```javascript\n * // To ignore middleware spans\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [\n *     Sentry.koaIntegration({\n *       ignoreLayersType: ['middleware']\n *     })\n *   ],\n * })\n * ```\n */\nexport const koaIntegration = defineIntegration(_koaIntegration);\n\n/**\n * Add an Koa error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Koa = require(\"koa\");\n *\n * const app = new Koa();\n *\n * Sentry.setupKoaErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen(3000);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const setupKoaErrorHandler = (app: { use: (arg0: (ctx: any, next: any) => Promise) => void }): void => {\n  app.use(async (ctx, next) => {\n    try {\n      await next();\n    } catch (error) {\n      captureException(error, {\n        mechanism: {\n          handled: false,\n          type: 'auto.middleware.koa',\n        },\n      });\n      throw error;\n    }\n  });\n\n  ensureIsWrapped(app.use, 'koa');\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AttributeNames {\n  CONNECT_TYPE = 'connect.type',\n  CONNECT_NAME = 'connect.name',\n}\n\nexport enum ConnectTypes {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request_handler',\n}\n\nexport enum ConnectNames {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request handler',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-connect';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { HandleFunction, IncomingMessage, Server } from 'connect';\n\nexport const _LAYERS_STORE_PROPERTY: unique symbol = Symbol(\n  'opentelemetry.instrumentation-connect.request-route-stack'\n);\n\nexport type UseArgs1 = [HandleFunction];\nexport type UseArgs2 = [string, HandleFunction];\nexport type UseArgs = UseArgs1 | UseArgs2;\nexport type Use = (...args: UseArgs) => Server;\nexport type PatchedRequest = {\n  [_LAYERS_STORE_PROPERTY]: string[];\n} & IncomingMessage;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { diag } from '@opentelemetry/api';\nimport { _LAYERS_STORE_PROPERTY, PatchedRequest } from './internal-types';\n\nexport const addNewStackLayer = (request: PatchedRequest) => {\n  if (Array.isArray(request[_LAYERS_STORE_PROPERTY]) === false) {\n    Object.defineProperty(request, _LAYERS_STORE_PROPERTY, {\n      enumerable: false,\n      value: [],\n    });\n  }\n  request[_LAYERS_STORE_PROPERTY].push('/');\n\n  const stackLength = request[_LAYERS_STORE_PROPERTY].length;\n\n  return () => {\n    if (stackLength === request[_LAYERS_STORE_PROPERTY].length) {\n      request[_LAYERS_STORE_PROPERTY].pop();\n    } else {\n      diag.warn('Connect: Trying to pop the stack multiple time');\n    }\n  };\n};\n\nexport const replaceCurrentStackRoute = (\n  request: PatchedRequest,\n  newRoute?: string\n) => {\n  if (newRoute) {\n    request[_LAYERS_STORE_PROPERTY].splice(-1, 1, newRoute);\n  }\n};\n\n// generate route from existing stack on request object.\n// splash between stack layer will be deduped\n// [\"/first/\", \"/second\", \"/third/\"] => /first/second/third/\nexport const generateRoute = (request: PatchedRequest) => {\n  return request[_LAYERS_STORE_PROPERTY].reduce(\n    (acc, sub) => acc.replace(/\\/+$/, '') + sub\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, Span, SpanOptions } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport type { HandleFunction, NextFunction, Server } from 'connect';\nimport type { ServerResponse } from 'http';\nimport {\n  AttributeNames,\n  ConnectNames,\n  ConnectTypes,\n} from './enums/AttributeNames';\nimport { PatchedRequest, Use, UseArgs, UseArgs2 } from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport {\n  replaceCurrentStackRoute,\n  addNewStackLayer,\n  generateRoute,\n} from './utils';\n\nexport const ANONYMOUS_NAME = 'anonymous';\n\n/** Connect instrumentation for OpenTelemetry */\nexport class ConnectInstrumentation extends InstrumentationBase {\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'connect',\n        ['>=3.0.0 <4'],\n        moduleExports => {\n          return this._patchConstructor(moduleExports);\n        }\n      ),\n    ];\n  }\n\n  private _patchApp(patchedApp: Server) {\n    if (!isWrapped(patchedApp.use)) {\n      this._wrap(patchedApp, 'use', this._patchUse.bind(this));\n    }\n    if (!isWrapped(patchedApp.handle)) {\n      this._wrap(patchedApp, 'handle', this._patchHandle.bind(this));\n    }\n  }\n\n  private _patchConstructor(original: () => Server): () => Server {\n    const instrumentation = this;\n    return function (this: Server, ...args) {\n      const app = original.apply(this, args) as Server;\n      instrumentation._patchApp(app);\n      return app;\n    };\n  }\n\n  public _patchNext(next: NextFunction, finishSpan: () => void): NextFunction {\n    return function nextFunction(this: NextFunction, err?: any): void {\n      const result = next.apply(this, [err]);\n      finishSpan();\n      return result;\n    };\n  }\n\n  public _startSpan(routeName: string, middleWare: HandleFunction): Span {\n    let connectType: ConnectTypes;\n    let connectName: string;\n    let connectTypeName: string;\n    if (routeName) {\n      connectType = ConnectTypes.REQUEST_HANDLER;\n      connectTypeName = ConnectNames.REQUEST_HANDLER;\n      connectName = routeName;\n    } else {\n      connectType = ConnectTypes.MIDDLEWARE;\n      connectTypeName = ConnectNames.MIDDLEWARE;\n      connectName = middleWare.name || ANONYMOUS_NAME;\n    }\n    const spanName = `${connectTypeName} - ${connectName}`;\n    const options: SpanOptions = {\n      attributes: {\n        [ATTR_HTTP_ROUTE]: routeName.length > 0 ? routeName : '/',\n        [AttributeNames.CONNECT_TYPE]: connectType,\n        [AttributeNames.CONNECT_NAME]: connectName,\n      },\n    };\n\n    return this.tracer.startSpan(spanName, options);\n  }\n\n  public _patchMiddleware(\n    routeName: string,\n    middleWare: HandleFunction\n  ): HandleFunction {\n    const instrumentation = this;\n    const isErrorMiddleware = middleWare.length === 4;\n\n    function patchedMiddleware(this: Use): void {\n      if (!instrumentation.isEnabled()) {\n        return (middleWare as any).apply(this, arguments);\n      }\n      const [reqArgIdx, resArgIdx, nextArgIdx] = isErrorMiddleware\n        ? [1, 2, 3]\n        : [0, 1, 2];\n      const req = arguments[reqArgIdx] as PatchedRequest;\n      const res = arguments[resArgIdx] as ServerResponse;\n      const next = arguments[nextArgIdx] as NextFunction;\n\n      replaceCurrentStackRoute(req, routeName);\n\n      const rpcMetadata = getRPCMetadata(context.active());\n      if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n        rpcMetadata.route = generateRoute(req);\n      }\n\n      let spanName = '';\n      if (routeName) {\n        spanName = `request handler - ${routeName}`;\n      } else {\n        spanName = `middleware - ${middleWare.name || ANONYMOUS_NAME}`;\n      }\n      const span = instrumentation._startSpan(routeName, middleWare);\n      instrumentation._diag.debug('start span', spanName);\n      let spanFinished = false;\n\n      function finishSpan() {\n        if (!spanFinished) {\n          spanFinished = true;\n          instrumentation._diag.debug(`finishing span ${(span as any).name}`);\n          span.end();\n        } else {\n          instrumentation._diag.debug(\n            `span ${(span as any).name} - already finished`\n          );\n        }\n        res.removeListener('close', finishSpan);\n      }\n\n      res.addListener('close', finishSpan);\n      arguments[nextArgIdx] = instrumentation._patchNext(next, finishSpan);\n\n      return (middleWare as any).apply(this, arguments);\n    }\n\n    Object.defineProperty(patchedMiddleware, 'length', {\n      value: middleWare.length,\n      writable: false,\n      configurable: true,\n    });\n\n    return patchedMiddleware;\n  }\n\n  public _patchUse(original: Server['use']): Use {\n    const instrumentation = this;\n    return function (this: Server, ...args: UseArgs): Server {\n      const middleWare = args[args.length - 1] as HandleFunction;\n      const routeName = (args[args.length - 2] || '') as string;\n\n      args[args.length - 1] = instrumentation._patchMiddleware(\n        routeName,\n        middleWare\n      );\n\n      return original.apply(this, args as UseArgs2);\n    };\n  }\n\n  public _patchHandle(original: Server['handle']): Server['handle'] {\n    const instrumentation = this;\n    return function (this: Server): ReturnType {\n      const [reqIdx, outIdx] = [0, 2];\n      const req = arguments[reqIdx] as PatchedRequest;\n      const out = arguments[outIdx];\n      const completeStack = addNewStackLayer(req);\n\n      if (typeof out === 'function') {\n        arguments[outIdx] = instrumentation._patchOut(\n          out as NextFunction,\n          completeStack\n        );\n      }\n\n      return (original as any).apply(this, arguments);\n    };\n  }\n\n  public _patchOut(out: NextFunction, completeStack: () => void): NextFunction {\n    return function nextFunction(this: NextFunction, ...args: any[]): void {\n      completeStack();\n      return Reflect.apply(out, this, args);\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { ConnectInstrumentation, ANONYMOUS_NAME } from './instrumentation';\nexport {\n  AttributeNames,\n  ConnectNames,\n  ConnectTypes,\n} from './enums/AttributeNames';\n","import { ConnectInstrumentation } from '@opentelemetry/instrumentation-connect';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  defineIntegration,\n  getClient,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\n\ntype ConnectApp = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  use: (middleware: any) => void;\n};\n\nconst INTEGRATION_NAME = 'Connect';\n\nexport const instrumentConnect = generateInstrumentOnce(INTEGRATION_NAME, () => new ConnectInstrumentation());\n\nconst _connectIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentConnect();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Connect](https://github.com/senchalabs/connect/).\n *\n * If you also want to capture errors, you need to call `setupConnectErrorHandler(app)` after you initialize your connect app.\n *\n * For more information, see the [connect documentation](https://docs.sentry.io/platforms/javascript/guides/connect/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.connectIntegration()],\n * })\n * ```\n */\nexport const connectIntegration = defineIntegration(_connectIntegration);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction connectErrorMiddleware(err: any, req: any, res: any, next: any): void {\n  captureException(err, {\n    mechanism: {\n      handled: false,\n      type: 'auto.middleware.connect',\n    },\n  });\n  next(err);\n}\n\n/**\n * Add a Connect middleware to capture errors to Sentry.\n *\n * @param app The Connect app to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const connect = require(\"connect\");\n *\n * const app = connect();\n *\n * Sentry.setupConnectErrorHandler(app);\n *\n * // Add you connect routes here\n *\n * app.listen(3000);\n * ```\n */\nexport const setupConnectErrorHandler = (app: ConnectApp): void => {\n  app.use(connectErrorMiddleware);\n\n  // Sadly, ConnectInstrumentation has no requestHook, so we need to add the attributes here\n  // We register this hook in this method, because if we register it in the integration `setup`,\n  // it would always run even for users that are not even using connect\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', span => {\n      addConnectSpanAttributes(span);\n    });\n  }\n\n  ensureIsWrapped(app.use, 'connect');\n};\n\nfunction addConnectSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: middleware, request_handler\n  const type = attributes['connect.type'];\n\n  // If this is already set, or we have no connect span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.connect',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.connect`,\n  });\n\n  // Also update the name, we don't need the \"middleware - \" prefix\n  const name = attributes['connect.name'];\n  if (typeof name === 'string') {\n    span.updateName(name);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.58.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-knex';\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport const MODULE_NAME = 'knex';\nexport const SUPPORTED_VERSIONS = [\n  // use \"lib/execution\" for runner.js, \"lib\" for client.js as basepath, latest tested 0.95.6\n  '>=0.22.0 <4',\n  // use \"lib\" as basepath\n  '>=0.10.0 <0.18.0',\n  '>=0.19.0 <0.22.0',\n  // use \"src\" as basepath\n  '>=0.18.0 <0.19.0',\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.transport`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.transport`.\n */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SQLite](https://www.sqlite.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = 'sqlite' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Exception } from '@opentelemetry/api';\nimport { DB_SYSTEM_NAME_VALUE_POSTGRESQL } from '@opentelemetry/semantic-conventions';\nimport { DB_SYSTEM_NAME_VALUE_SQLITE } from './semconv';\n\ntype KnexError = Error & {\n  code?: string;\n};\n\nexport const getFormatter = (runner: any) => {\n  if (runner) {\n    if (runner.client) {\n      if (runner.client._formatQuery) {\n        return runner.client._formatQuery.bind(runner.client);\n      } else if (runner.client.SqlString) {\n        return runner.client.SqlString.format.bind(runner.client.SqlString);\n      }\n    }\n    if (runner.builder) {\n      return runner.builder.toString.bind(runner.builder);\n    }\n  }\n  return () => '';\n};\n\nexport function otelExceptionFromKnexError(\n  err: KnexError,\n  message: string\n): Exception {\n  if (!(err && err instanceof Error)) {\n    return err;\n  }\n\n  return {\n    message,\n    code: err.code,\n    stack: err.stack,\n    name: err.name,\n  };\n}\n\nconst systemMap = new Map([\n  ['sqlite3', DB_SYSTEM_NAME_VALUE_SQLITE],\n  ['pg', DB_SYSTEM_NAME_VALUE_POSTGRESQL],\n]);\n\nexport const mapSystem = (knexSystem: string) => {\n  return systemMap.get(knexSystem) || knexSystem;\n};\n\nexport const getName = (db: string, operation?: string, table?: string) => {\n  if (operation) {\n    if (table) {\n      return `${operation} ${db}.${table}`;\n    }\n    return `${operation} ${db}`;\n  }\n  return db;\n};\n\nexport const limitLength = (str: string, maxLength: number) => {\n  if (\n    typeof str === 'string' &&\n    typeof maxLength === 'number' &&\n    0 < maxLength &&\n    maxLength < str.length\n  ) {\n    return str.substring(0, maxLength) + '..';\n  }\n  return str;\n};\n\n/**\n * Helpers to extract connection details from a Knex connectionString.\n * When Knex is configured via `connection.connectionString` instead of\n * explicit fields like `host`, `port`, and `database`, these values are\n * embedded in the URL and must be parsed out.\n * e.g. \"postgres://user:pass@localhost:5432/mydb\"\n */\n\nexport const extractDatabaseFromConnectionString = (\n  connectionString?: string\n): string | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    const db = new URL(connectionString).pathname?.replace(/^\\//, '');\n    return db || undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractHostFromConnectionString = (\n  connectionString?: string\n): string | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    return new URL(connectionString).hostname || undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractPortFromConnectionString = (\n  connectionString?: string\n): number | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    const port = new URL(connectionString).port;\n    return port ? parseInt(port, 10) : undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractTableName = (builder: any): string => {\n  const table = builder?._single?.table;\n  if (typeof table === 'object') {\n    return extractTableName(table);\n  }\n  return table;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport * as constants from './constants';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport * as utils from './utils';\nimport { KnexInstrumentationConfig } from './types';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_NAME,\n  ATTR_DB_OPERATION,\n  ATTR_DB_SQL_TABLE,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  ATTR_NET_TRANSPORT,\n} from './semconv';\n\nconst contextSymbol = Symbol('opentelemetry.instrumentation-knex.context');\nconst DEFAULT_CONFIG: KnexInstrumentationConfig = {\n  maxQueryLength: 1022,\n  requireParentSpan: false,\n};\n\nexport class KnexInstrumentation extends InstrumentationBase {\n  private _semconvStability: SemconvStability;\n\n  constructor(config: KnexInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n\n    this._semconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: KnexInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  init() {\n    const module = new InstrumentationNodeModuleDefinition(\n      constants.MODULE_NAME,\n      constants.SUPPORTED_VERSIONS\n    );\n\n    module.files.push(\n      this.getClientNodeModuleFileInstrumentation('src'),\n      this.getClientNodeModuleFileInstrumentation('lib'),\n      this.getRunnerNodeModuleFileInstrumentation('src'),\n      this.getRunnerNodeModuleFileInstrumentation('lib'),\n      this.getRunnerNodeModuleFileInstrumentation('lib/execution')\n    );\n\n    return module;\n  }\n\n  private getRunnerNodeModuleFileInstrumentation(basePath: string) {\n    return new InstrumentationNodeModuleFile(\n      `knex/${basePath}/runner.js`,\n      constants.SUPPORTED_VERSIONS,\n      (Runner: any, moduleVersion) => {\n        this.ensureWrapped(\n          Runner.prototype,\n          'query',\n          this.createQueryWrapper(moduleVersion)\n        );\n        return Runner;\n      },\n      (Runner: any, moduleVersion) => {\n        this._unwrap(Runner.prototype, 'query');\n        return Runner;\n      }\n    );\n  }\n\n  private getClientNodeModuleFileInstrumentation(basePath: string) {\n    return new InstrumentationNodeModuleFile(\n      `knex/${basePath}/client.js`,\n      constants.SUPPORTED_VERSIONS,\n      (Client: any) => {\n        this.ensureWrapped(\n          Client.prototype,\n          'queryBuilder',\n          this.storeContext.bind(this)\n        );\n        this.ensureWrapped(\n          Client.prototype,\n          'schemaBuilder',\n          this.storeContext.bind(this)\n        );\n        this.ensureWrapped(\n          Client.prototype,\n          'raw',\n          this.storeContext.bind(this)\n        );\n        return Client;\n      },\n      (Client: any) => {\n        this._unwrap(Client.prototype, 'queryBuilder');\n        this._unwrap(Client.prototype, 'schemaBuilder');\n        this._unwrap(Client.prototype, 'raw');\n        return Client;\n      }\n    );\n  }\n\n  private createQueryWrapper(moduleVersion?: string) {\n    const instrumentation = this;\n\n    return function wrapQuery(original: (...args: any[]) => any) {\n      return function wrapped_logging_method(this: any, query: any) {\n        const config = this.client.config;\n\n        const table = utils.extractTableName(this.builder);\n        // `method` actually refers to the knex API method - Not exactly \"operation\"\n        // in the spec sense, but matches most of the time.\n        const operation = query?.method;\n        // Knex can be configured with a connectionString instead of explicit fields.\n        // Fall back to parsing the connectionString if filename and database are not set.\n        const connectionString = config?.connection?.connectionString;\n        const name =\n          config?.connection?.filename ||\n          config?.connection?.database ||\n          utils.extractDatabaseFromConnectionString(connectionString);\n        const { maxQueryLength } = instrumentation.getConfig();\n\n        const attributes: api.Attributes = {\n          'knex.version': moduleVersion,\n        };\n        const transport =\n          config?.connection?.filename === ':memory:' ? 'inproc' : undefined;\n\n        if (instrumentation._semconvStability & SemconvStability.OLD) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM]: utils.mapSystem(this.client.driverName),\n            [ATTR_DB_SQL_TABLE]: table,\n            [ATTR_DB_OPERATION]: operation,\n            [ATTR_DB_USER]: config?.connection?.user,\n            [ATTR_DB_NAME]: name,\n            // Fall back to parsing host and port from connectionString if not explicitly set.\n            [ATTR_NET_PEER_NAME]:\n              config?.connection?.host ??\n              utils.extractHostFromConnectionString(connectionString),\n            [ATTR_NET_PEER_PORT]:\n              config?.connection?.port ??\n              utils.extractPortFromConnectionString(connectionString),\n            [ATTR_NET_TRANSPORT]: transport,\n          });\n        }\n        if (instrumentation._semconvStability & SemconvStability.STABLE) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM_NAME]: utils.mapSystem(this.client.driverName),\n            [ATTR_DB_COLLECTION_NAME]: table,\n            [ATTR_DB_OPERATION_NAME]: operation,\n            [ATTR_DB_NAMESPACE]: name,\n            // Fall back to parsing host and port from connectionString if not explicitly set.\n            [ATTR_SERVER_ADDRESS]:\n              config?.connection?.host ??\n              utils.extractHostFromConnectionString(connectionString),\n            [ATTR_SERVER_PORT]:\n              config?.connection?.port ??\n              utils.extractPortFromConnectionString(connectionString),\n          });\n        }\n        if (maxQueryLength) {\n          // filters both undefined and 0\n          const queryText = utils.limitLength(query?.sql, maxQueryLength);\n          if (instrumentation._semconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = queryText;\n          }\n          if (instrumentation._semconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = queryText;\n          }\n        }\n\n        const parentContext =\n          this.builder[contextSymbol] || api.context.active();\n        const parentSpan = api.trace.getSpan(parentContext);\n        const hasActiveParent =\n          parentSpan && api.trace.isSpanContextValid(parentSpan.spanContext());\n        if (instrumentation._config.requireParentSpan && !hasActiveParent) {\n          return original.bind(this)(...arguments);\n        }\n\n        const span = instrumentation.tracer.startSpan(\n          utils.getName(name, operation, table),\n          {\n            kind: api.SpanKind.CLIENT,\n            attributes,\n          },\n          parentContext\n        );\n        const spanContext = api.trace.setSpan(api.context.active(), span);\n\n        return api.context\n          .with(spanContext, original, this, ...arguments)\n          .then((result: unknown) => {\n            span.end();\n            return result;\n          })\n          .catch((err: any) => {\n            // knex adds full query with all the binding values to the message,\n            // we want to undo that without changing the original error\n            const formatter = utils.getFormatter(this);\n            const fullQuery = formatter(query.sql, query.bindings || []);\n            const message = err.message.replace(fullQuery + ' - ', '');\n            const exc = utils.otelExceptionFromKnexError(err, message);\n            span.recordException(exc);\n            span.setStatus({ code: api.SpanStatusCode.ERROR, message });\n            span.end();\n            throw err;\n          });\n      };\n    };\n  }\n\n  private storeContext(original: Function) {\n    return function wrapped_logging_method(this: any) {\n      const builder = original.apply(this, arguments);\n      // Builder is a custom promise type and when awaited it fails to propagate context.\n      // We store the parent context at the moment of initiating the builder\n      // otherwise we'd have nothing to attach the span as a child for in `query`.\n      Object.defineProperty(builder, contextSymbol, {\n        value: api.context.active(),\n      });\n      return builder;\n    };\n  }\n\n  ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any) {\n    if (isWrapped(obj[methodName])) {\n      this._unwrap(obj, methodName);\n    }\n    this._wrap(obj, methodName, wrapper);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { KnexInstrumentation } from './instrumentation';\nexport type { KnexInstrumentationConfig } from './types';\n","import { KnexInstrumentation } from '@opentelemetry/instrumentation-knex';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Knex';\n\nexport const instrumentKnex = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () => new KnexInstrumentation({ requireParentSpan: true }),\n);\n\nconst _knexIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentKnex();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const { data } = spanToJSON(span);\n          // knex.version is always set in the span data\n          // https://github.com/open-telemetry/opentelemetry-js-contrib/blob/0309caeafc44ac9cb13a3345b790b01b76d0497d/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts#L138\n          if ('knex.version' in data) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.knex');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Knex integration\n *\n * Capture tracing data for [Knex](https://knexjs.org/).\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *  integrations: [Sentry.knexIntegration()],\n * });\n * ```\n */\nexport const knexIntegration = defineIntegration(_knexIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mssql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft SQL Server\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MSSQL = 'mssql' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns Operation executed on Tedious Connection. Does not map to SQL statement in any way.\n */\nexport function getSpanName(\n  operation: string,\n  db: string | undefined,\n  sql: string | undefined,\n  bulkLoadTable: string | undefined\n): string {\n  if (operation === 'execBulkLoad' && bulkLoadTable && db) {\n    return `${operation} ${bulkLoadTable} ${db}`;\n  }\n  if (operation === 'callProcedure') {\n    // `sql` refers to procedure name with `callProcedure`\n    if (db) {\n      return `${operation} ${sql} ${db}`;\n    }\n    return `${operation} ${sql}`;\n  }\n  // do not use `sql` in general case because of high-cardinality\n  if (db) {\n    return `${operation} ${db}`;\n  }\n  return `${operation}`;\n}\n\nexport const once = (fn: Function) => {\n  let called = false;\n  return (...args: unknown[]) => {\n    if (called) return;\n    called = true;\n    return fn(...args);\n  };\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-tedious';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  DB_SYSTEM_VALUE_MSSQL,\n  ATTR_DB_NAME,\n  ATTR_DB_SQL_TABLE,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport type * as tedious from 'tedious';\nimport { TediousInstrumentationConfig } from './types';\nimport { getSpanName, once } from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst CURRENT_DATABASE = Symbol(\n  'opentelemetry.instrumentation-tedious.current-database'\n);\n\nexport const INJECTED_CTX = Symbol(\n  'opentelemetry.instrumentation-tedious.context-info-injected'\n);\n\nconst PATCHED_METHODS = [\n  'callProcedure',\n  'execSql',\n  'execSqlBatch',\n  'execBulkLoad',\n  'prepare',\n  'execute',\n];\n\ntype UnknownFunction = (...args: any[]) => any;\ntype ApproxConnection = EventEmitter & {\n  [CURRENT_DATABASE]: string;\n  config: any;\n};\ntype ApproxRequest = EventEmitter & {\n  sqlTextOrProcedure: string | undefined;\n  callback: any;\n  table: string | undefined;\n  parametersByName: any;\n};\n\nfunction setDatabase(this: ApproxConnection, databaseName: string) {\n  Object.defineProperty(this, CURRENT_DATABASE, {\n    value: databaseName,\n    writable: true,\n  });\n}\n\nexport class TediousInstrumentation extends InstrumentationBase {\n  static readonly COMPONENT = 'tedious';\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: TediousInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        TediousInstrumentation.COMPONENT,\n        ['>=1.11.0 <20'],\n        (moduleExports: typeof tedious) => {\n          const ConnectionPrototype: any = moduleExports.Connection.prototype;\n          for (const method of PATCHED_METHODS) {\n            if (isWrapped(ConnectionPrototype[method])) {\n              this._unwrap(ConnectionPrototype, method);\n            }\n            this._wrap(\n              ConnectionPrototype,\n              method,\n              this._patchQuery(method, moduleExports) as any\n            );\n          }\n\n          if (isWrapped(ConnectionPrototype.connect)) {\n            this._unwrap(ConnectionPrototype, 'connect');\n          }\n          this._wrap(ConnectionPrototype, 'connect', this._patchConnect);\n\n          return moduleExports;\n        },\n        (moduleExports: typeof tedious) => {\n          if (moduleExports === undefined) return;\n          const ConnectionPrototype: any = moduleExports.Connection.prototype;\n          for (const method of PATCHED_METHODS) {\n            this._unwrap(ConnectionPrototype, method);\n          }\n          this._unwrap(ConnectionPrototype, 'connect');\n        }\n      ),\n    ];\n  }\n\n  private _patchConnect(original: UnknownFunction): UnknownFunction {\n    return function patchedConnect(this: ApproxConnection) {\n      setDatabase.call(this, this.config?.options?.database);\n\n      // remove the listener first in case it's already added\n      this.removeListener('databaseChange', setDatabase);\n      this.on('databaseChange', setDatabase);\n\n      this.once('end', () => {\n        this.removeListener('databaseChange', setDatabase);\n      });\n      return original.apply(this, arguments as unknown as any[]);\n    };\n  }\n\n  private _buildTraceparent(span: api.Span): string {\n    const sc = span.spanContext();\n    return `00-${sc.traceId}-${sc.spanId}-0${Number(sc.traceFlags || api.TraceFlags.NONE).toString(16)}`;\n  }\n\n  /**\n   * Fire a one-off `SET CONTEXT_INFO @opentelemetry_traceparent` on the same\n   * connection. Marks the request with INJECTED_CTX so our patch skips it.\n   */\n  private _injectContextInfo(\n    connection: any,\n    tediousModule: typeof tedious,\n    traceparent: string\n  ): Promise {\n    return new Promise(resolve => {\n      try {\n        const sql = 'set context_info @opentelemetry_traceparent';\n        const req = new tediousModule.Request(sql, (_err: any) => {\n          resolve();\n        });\n        Object.defineProperty(req, INJECTED_CTX, { value: true });\n        const buf = Buffer.from(traceparent, 'utf8');\n        req.addParameter(\n          'opentelemetry_traceparent',\n          (tediousModule as any).TYPES.VarBinary,\n          buf,\n          { length: buf.length }\n        );\n\n        connection.execSql(req);\n      } catch {\n        resolve();\n      }\n    });\n  }\n\n  private _shouldInjectFor(operation: string): boolean {\n    return (\n      operation === 'execSql' ||\n      operation === 'execSqlBatch' ||\n      operation === 'callProcedure' ||\n      operation === 'execute'\n    );\n  }\n\n  private _patchQuery(operation: string, tediousModule: typeof tedious) {\n    return (originalMethod: UnknownFunction): UnknownFunction => {\n      const thisPlugin = this;\n\n      function patchedMethod(this: ApproxConnection, request: ApproxRequest) {\n        // Skip our own injected request\n        if ((request as any)?.[INJECTED_CTX]) {\n          return originalMethod.apply(this, arguments as unknown as any[]);\n        }\n\n        if (!(request instanceof EventEmitter)) {\n          thisPlugin._diag.warn(\n            `Unexpected invocation of patched ${operation} method. Span not recorded`\n          );\n          return originalMethod.apply(this, arguments as unknown as any[]);\n        }\n        let procCount = 0;\n        let statementCount = 0;\n        const incrementStatementCount = () => statementCount++;\n        const incrementProcCount = () => procCount++;\n        const databaseName = this[CURRENT_DATABASE];\n        const sql = (request => {\n          // Required for <11.0.9\n          if (\n            request.sqlTextOrProcedure === 'sp_prepare' &&\n            request.parametersByName?.stmt?.value\n          ) {\n            return request.parametersByName.stmt.value;\n          }\n          return request.sqlTextOrProcedure;\n        })(request);\n\n        const attributes: api.Attributes = {};\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MSSQL;\n          attributes[ATTR_DB_NAME] = databaseName;\n          // >=4 uses `authentication` object; older versions just userName and password pair\n          attributes[ATTR_DB_USER] =\n            this.config?.userName ??\n            this.config?.authentication?.options?.userName;\n          attributes[ATTR_DB_STATEMENT] = sql;\n          attributes[ATTR_DB_SQL_TABLE] = request.table;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          // The OTel spec for \"db.namespace\" discusses handling for connection\n          // to MSSQL \"named instances\". This isn't currently supported.\n          //    https://opentelemetry.io/docs/specs/semconv/database/sql-server/#:~:text=%5B1%5D%20db%2Enamespace\n          attributes[ATTR_DB_NAMESPACE] = databaseName;\n          attributes[ATTR_DB_SYSTEM_NAME] =\n            DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER;\n          attributes[ATTR_DB_QUERY_TEXT] = sql;\n          attributes[ATTR_DB_COLLECTION_NAME] = request.table;\n          // See https://opentelemetry.io/docs/specs/semconv/database/sql-server/#spans\n          // TODO(3290): can `db.response.status_code` be added?\n          // TODO(3290): is `operation` correct for `db.operation.name`\n          // TODO(3290): can `db.query.summary` reliably be calculated?\n          // TODO(3290): `db.stored_procedure.name`\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_NAME] = this.config?.server;\n          attributes[ATTR_NET_PEER_PORT] = this.config?.options?.port;\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_ADDRESS] = this.config?.server;\n          attributes[ATTR_SERVER_PORT] = this.config?.options?.port;\n        }\n        const span = thisPlugin.tracer.startSpan(\n          getSpanName(operation, databaseName, sql, request.table),\n          {\n            kind: api.SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        const endSpan = once((err?: any) => {\n          request.removeListener('done', incrementStatementCount);\n          request.removeListener('doneInProc', incrementStatementCount);\n          request.removeListener('doneProc', incrementProcCount);\n          request.removeListener('error', endSpan);\n          this.removeListener('end', endSpan);\n\n          span.setAttribute('tedious.procedure_count', procCount);\n          span.setAttribute('tedious.statement_count', statementCount);\n          if (err) {\n            span.setStatus({\n              code: api.SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            // TODO(3290): set `error.type` attribute?\n          }\n          span.end();\n        });\n\n        request.on('done', incrementStatementCount);\n        request.on('doneInProc', incrementStatementCount);\n        request.on('doneProc', incrementProcCount);\n        request.once('error', endSpan);\n        this.on('end', endSpan);\n\n        if (typeof request.callback === 'function') {\n          thisPlugin._wrap(\n            request,\n            'callback',\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        } else {\n          thisPlugin._diag.error('Expected request.callback to be a function');\n        }\n\n        const runUserRequest = () => {\n          return api.context.with(\n            api.trace.setSpan(api.context.active(), span),\n            originalMethod,\n            this,\n            ...arguments\n          );\n        };\n\n        const cfg = thisPlugin.getConfig();\n        const shouldInject =\n          cfg.enableTraceContextPropagation &&\n          thisPlugin._shouldInjectFor(operation);\n\n        if (!shouldInject) return runUserRequest();\n\n        const traceparent = thisPlugin._buildTraceparent(span);\n\n        void thisPlugin\n          ._injectContextInfo(this, tediousModule, traceparent)\n          .finally(runUserRequest);\n      }\n\n      Object.defineProperty(patchedMethod, 'length', {\n        value: originalMethod.length,\n        writable: false,\n      });\n\n      return patchedMethod;\n    };\n  }\n\n  private _patchCallbackQuery(endSpan: Function) {\n    return (originalCallback: Function) => {\n      return function (\n        this: any,\n        err: Error | undefined | null,\n        rowCount?: number,\n        rows?: any\n      ) {\n        endSpan(err);\n        return originalCallback.apply(this, arguments);\n      };\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { TediousInstrumentation } from './instrumentation';\nexport type { TediousInstrumentationConfig } from './types';\n","import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst TEDIUS_INSTRUMENTED_METHODS = new Set([\n  'callProcedure',\n  'execSql',\n  'execSqlBatch',\n  'execBulkLoad',\n  'prepare',\n  'execute',\n]);\n\nconst INTEGRATION_NAME = 'Tedious';\n\nexport const instrumentTedious = generateInstrumentOnce(INTEGRATION_NAME, () => new TediousInstrumentation({}));\n\nconst _tediousIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentTedious();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const { description, data } = spanToJSON(span);\n          // Tedius integration always set a span name and `db.system` attribute to `mssql`.\n          if (!description || data['db.system'] !== 'mssql') {\n            return;\n          }\n\n          const operation = description.split(' ')[0] || '';\n          if (TEDIUS_INSTRUMENTED_METHODS.has(operation)) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.tedious');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [tedious](https://www.npmjs.com/package/tedious) library.\n *\n * For more information, see the [`tediousIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/tedious/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.tediousIntegration()],\n * });\n * ```\n */\nexport const tediousIntegration = defineIntegration(_tediousIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-generic-pool';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\n\nimport type * as genericPool from 'generic-pool';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst MODULE_NAME = 'generic-pool';\n\nexport class GenericPoolInstrumentation extends InstrumentationBase {\n  // only used for v2 - v2.3)\n  private _isDisabled = false;\n\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=3.0.0 <4'],\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          if (isWrapped(Pool.prototype.acquire)) {\n            this._unwrap(Pool.prototype, 'acquire');\n          }\n          this._wrap(\n            Pool.prototype,\n            'acquire',\n            this._acquirePatcher.bind(this)\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          this._unwrap(Pool.prototype, 'acquire');\n          return moduleExports;\n        }\n      ),\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.4.0 <3'],\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          if (isWrapped(Pool.prototype.acquire)) {\n            this._unwrap(Pool.prototype, 'acquire');\n          }\n          this._wrap(\n            Pool.prototype,\n            'acquire',\n            this._acquireWithCallbacksPatcher.bind(this)\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          this._unwrap(Pool.prototype, 'acquire');\n          return moduleExports;\n        }\n      ),\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.0.0 <2.4'],\n        moduleExports => {\n          this._isDisabled = false;\n          if (isWrapped(moduleExports.Pool)) {\n            this._unwrap(moduleExports, 'Pool');\n          }\n          this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n          return moduleExports;\n        },\n        moduleExports => {\n          // since the object is created on the fly every time, we need to use\n          // a boolean switch here to disable the instrumentation\n          this._isDisabled = true;\n          return moduleExports;\n        }\n      ),\n    ];\n  }\n\n  private _acquirePatcher(original: genericPool.Pool['acquire']) {\n    const instrumentation = this;\n    return function wrapped_acquire(\n      this: genericPool.Pool,\n      ...args: any[]\n    ) {\n      const parent = api.context.active();\n      const span = instrumentation.tracer.startSpan(\n        'generic-pool.acquire',\n        {},\n        parent\n      );\n\n      return api.context.with(api.trace.setSpan(parent, span), () => {\n        return original.call(this, ...args).then(\n          value => {\n            span.end();\n            return value;\n          },\n          err => {\n            span.recordException(err);\n            span.end();\n            throw err;\n          }\n        );\n      });\n    };\n  }\n\n  private _poolWrapper(original: any) {\n    const instrumentation = this;\n    return function wrapped_pool(this: any) {\n      const pool = original.apply(this, arguments);\n      instrumentation._wrap(\n        pool,\n        'acquire',\n        instrumentation._acquireWithCallbacksPatcher.bind(instrumentation)\n      );\n      return pool;\n    };\n  }\n\n  private _acquireWithCallbacksPatcher(original: any) {\n    const instrumentation = this;\n    return function wrapped_acquire(\n      this: genericPool.Pool,\n      cb: Function,\n      priority: number\n    ) {\n      // only used for v2 - v2.3\n      if (instrumentation._isDisabled) {\n        return original.call(this, cb, priority);\n      }\n      const parent = api.context.active();\n      const span = instrumentation.tracer.startSpan(\n        'generic-pool.acquire',\n        {},\n        parent\n      );\n\n      return api.context.with(api.trace.setSpan(parent, span), () => {\n        original.call(\n          this,\n          (err: unknown, client: unknown) => {\n            span.end();\n            // Not checking whether cb is a function because\n            // the original code doesn't do that either.\n            if (cb) {\n              return cb(err, client);\n            }\n          },\n          priority\n        );\n      });\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { GenericPoolInstrumentation } from './instrumentation';\n","import { GenericPoolInstrumentation } from '@opentelemetry/instrumentation-generic-pool';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nexport const instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentGenericPool();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const spanJSON = spanToJSON(span);\n\n          const spanDescription = spanJSON.description;\n\n          // typo in emitted span for version <= 0.38.0 of @opentelemetry/instrumentation-generic-pool\n          const isGenericPoolSpan =\n            spanDescription === 'generic-pool.aquire' || spanDescription === 'generic-pool.acquire';\n\n          if (isGenericPoolSpan) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.generic_pool');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [generic-pool](https://www.npmjs.com/package/generic-pool) library.\n *\n * For more information, see the [`genericPoolIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/genericpool/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.genericPoolIntegration()],\n * });\n * ```\n */\nexport const genericPoolIntegration = defineIntegration(_genericPoolIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.31.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-dataloader';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\nimport {\n  trace,\n  context,\n  Link,\n  SpanStatusCode,\n  SpanKind,\n} from '@opentelemetry/api';\nimport { DataloaderInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport type * as Dataloader from 'dataloader';\n\nconst MODULE_NAME = 'dataloader';\n\ntype DataloaderInternal = typeof Dataloader.prototype & {\n  _batchLoadFn: Dataloader.BatchLoadFn;\n  _batch: { spanLinks?: Link[] } | null;\n};\n\ntype LoadFn = (typeof Dataloader.prototype)['load'];\ntype LoadManyFn = (typeof Dataloader.prototype)['loadMany'];\ntype PrimeFn = (typeof Dataloader.prototype)['prime'];\ntype ClearFn = (typeof Dataloader.prototype)['clear'];\ntype ClearAllFn = (typeof Dataloader.prototype)['clearAll'];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractModuleExports(module: any) {\n  return module[Symbol.toStringTag] === 'Module'\n    ? module.default // ESM\n    : module; // CommonJS\n}\n\nexport class DataloaderInstrumentation extends InstrumentationBase {\n  constructor(config: DataloaderInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.0.0 <3'],\n        module => {\n          const dataloader = extractModuleExports(module);\n          this._patchLoad(dataloader.prototype);\n          this._patchLoadMany(dataloader.prototype);\n          this._patchPrime(dataloader.prototype);\n          this._patchClear(dataloader.prototype);\n          this._patchClearAll(dataloader.prototype);\n\n          return this._getPatchedConstructor(dataloader);\n        },\n        module => {\n          const dataloader = extractModuleExports(module);\n          ['load', 'loadMany', 'prime', 'clear', 'clearAll'].forEach(method => {\n            if (isWrapped(dataloader.prototype[method])) {\n              this._unwrap(dataloader.prototype, method);\n            }\n          });\n        }\n      ),\n    ];\n  }\n\n  private shouldCreateSpans(): boolean {\n    const config = this.getConfig();\n    const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n    return hasParentSpan || !config.requireParentSpan;\n  }\n\n  private getSpanName(\n    dataloader: DataloaderInternal,\n    operation: 'load' | 'loadMany' | 'batch' | 'prime' | 'clear' | 'clearAll'\n  ): string {\n    const dataloaderName = dataloader.name;\n    if (dataloaderName === undefined || dataloaderName === null) {\n      return `${MODULE_NAME}.${operation}`;\n    }\n\n    return `${MODULE_NAME}.${operation} ${dataloaderName}`;\n  }\n\n  private _wrapBatchLoadFn(\n    batchLoadFn: Dataloader.BatchLoadFn\n  ): Dataloader.BatchLoadFn {\n    const instrumentation = this;\n\n    return function patchedBatchLoadFn(\n      this: DataloaderInternal,\n      ...args: Parameters>\n    ) {\n      if (\n        !instrumentation.isEnabled() ||\n        !instrumentation.shouldCreateSpans()\n      ) {\n        return batchLoadFn.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'batch'),\n        { links: this._batch?.spanLinks as Link[] | undefined },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        return (batchLoadFn.apply(this, args) as Promise)\n          .then(value => {\n            span.end();\n            return value;\n          })\n          .catch(err => {\n            span.recordException(err);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            span.end();\n            throw err;\n          });\n      });\n    };\n  }\n\n  private _getPatchedConstructor(\n    constructor: typeof Dataloader\n  ): typeof Dataloader {\n    const instrumentation = this;\n    const prototype = constructor.prototype;\n\n    if (!instrumentation.isEnabled()) {\n      return constructor;\n    }\n\n    function PatchedDataloader(\n      this: DataloaderInternal,\n      ...args: ConstructorParameters\n    ) {\n      // BatchLoadFn is the first constructor argument\n      // https://github.com/graphql/dataloader/blob/77c2cd7ca97e8795242018ebc212ce2487e729d2/src/index.js#L47\n      if (typeof args[0] === 'function') {\n        if (isWrapped(args[0])) {\n          instrumentation._unwrap(args, 0);\n        }\n\n        args[0] = instrumentation._wrapBatchLoadFn(\n          args[0]\n        ) as Dataloader.BatchLoadFn;\n      }\n\n      return constructor.apply(this, args);\n    }\n\n    PatchedDataloader.prototype = prototype;\n    return PatchedDataloader as unknown as typeof Dataloader;\n  }\n\n  private _patchLoad(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.load)) {\n      this._unwrap(proto, 'load');\n    }\n\n    this._wrap(proto, 'load', this._getPatchedLoad.bind(this));\n  }\n\n  private _getPatchedLoad(original: LoadFn): LoadFn {\n    const instrumentation = this;\n\n    return function patchedLoad(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'load'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        const result = original\n          .call(this, ...args)\n          .then(value => {\n            span.end();\n            return value;\n          })\n          .catch(err => {\n            span.recordException(err);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            span.end();\n            throw err;\n          });\n\n        const loader = this as DataloaderInternal;\n\n        if (loader._batch) {\n          if (!loader._batch.spanLinks) {\n            loader._batch.spanLinks = [];\n          }\n\n          loader._batch.spanLinks.push({ context: span.spanContext() } as Link);\n        }\n\n        return result;\n      });\n    };\n  }\n\n  private _patchLoadMany(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.loadMany)) {\n      this._unwrap(proto, 'loadMany');\n    }\n\n    this._wrap(proto, 'loadMany', this._getPatchedLoadMany.bind(this));\n  }\n\n  private _getPatchedLoadMany(original: LoadManyFn): LoadManyFn {\n    const instrumentation = this;\n\n    return function patchedLoadMany(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'loadMany'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        // .loadMany never rejects, as errors from internal .load\n        // calls are caught by dataloader lib\n        return original.call(this, ...args).then(value => {\n          span.end();\n          return value;\n        });\n      });\n    };\n  }\n\n  private _patchPrime(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.prime)) {\n      this._unwrap(proto, 'prime');\n    }\n\n    this._wrap(proto, 'prime', this._getPatchedPrime.bind(this));\n  }\n\n  private _getPatchedPrime(original: PrimeFn): PrimeFn {\n    const instrumentation = this;\n\n    return function patchedPrime(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'prime'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n\n  private _patchClear(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.clear)) {\n      this._unwrap(proto, 'clear');\n    }\n\n    this._wrap(proto, 'clear', this._getPatchedClear.bind(this));\n  }\n\n  private _getPatchedClear(original: ClearFn): ClearFn {\n    const instrumentation = this;\n\n    return function patchedClear(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'clear'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n\n  private _patchClearAll(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.clearAll)) {\n      this._unwrap(proto, 'clearAll');\n    }\n\n    this._wrap(proto, 'clearAll', this._getPatchedClearAll.bind(this));\n  }\n\n  private _getPatchedClearAll(original: ClearAllFn): ClearAllFn {\n    const instrumentation = this;\n\n    return function patchedClearAll(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'clearAll'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { DataloaderInstrumentation } from './instrumentation';\nexport type { DataloaderInstrumentationConfig } from './types';\n","import { DataloaderInstrumentation } from '@opentelemetry/instrumentation-dataloader';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  defineIntegration,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Dataloader';\n\nexport const instrumentDataloader = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new DataloaderInstrumentation({\n      requireParentSpan: true,\n    }),\n);\n\nconst _dataloaderIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentDataloader();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      // This is called either immediately or when the instrumentation is wrapped\n      instrumentationWrappedCallback?.(() => {\n        client.on('spanStart', span => {\n          const spanJSON = spanToJSON(span);\n          if (spanJSON.description?.startsWith('dataloader')) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.dataloader');\n          }\n\n          // These are all possible dataloader span descriptions\n          // Still checking for the future versions\n          // in case they add support for `clear` and `prime`\n          if (\n            spanJSON.description === 'dataloader.load' ||\n            spanJSON.description === 'dataloader.loadMany' ||\n            spanJSON.description === 'dataloader.batch'\n          ) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'cache.get');\n            // TODO: We can try adding `key` to the `data` attribute upstream.\n            // Or alternatively, we can add `requestHook` to the dataloader instrumentation.\n          }\n        });\n      });\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [dataloader](https://www.npmjs.com/package/dataloader) library.\n *\n * For more information, see the [`dataloaderIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/dataloader/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.dataloaderIntegration()],\n * });\n * ```\n */\nexport const dataloaderIntegration = defineIntegration(_dataloaderIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `messaging.operation.type` instead.\n *\n * @example publish\n * @example create\n * @example process\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `messaging.operation.type`.\n */\nexport const ATTR_MESSAGING_OPERATION = 'messaging.operation' as const;\n\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains constants for values that where replaced/removed from\n * Semantic Conventions long enough ago that they do not have `ATTR_*`\n * constants in the `@opentelemetry/semantic-conventions` package. Eventually\n * it is expected that this instrumention will be updated to emit telemetry\n * using modern Semantic Conventions, dropping the need for the constants in\n * this file.\n */\n\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_DESTINATION = 'messaging.destination' as const;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const ATTR_MESSAGING_DESTINATION_KIND =\n  'messaging.destination_kind' as const;\n\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_RABBITMQ_ROUTING_KEY =\n  'messaging.rabbitmq.routing_key' as const;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGING_OPERATION_VALUE_PROCESS = 'process' as const;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const ATTR_MESSAGING_PROTOCOL = 'messaging.protocol' as const;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const ATTR_MESSAGING_PROTOCOL_VERSION =\n  'messaging.protocol_version' as const;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const ATTR_MESSAGING_URL = 'messaging.url' as const;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic' as const;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n *\n * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`.\n */\nexport const OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id' as const;\n\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_CONVERSATION_ID =\n  'messaging.conversation_id' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface PublishInfo {\n  moduleVersion: string | undefined;\n  exchange: string;\n  routingKey: string;\n  content: Buffer;\n  options?: AmqplibPublishOptions;\n  isConfirmChannel?: boolean;\n}\n\nexport interface PublishConfirmedInfo extends PublishInfo {\n  confirmError?: any;\n}\n\nexport interface ConsumeInfo {\n  moduleVersion: string | undefined;\n  msg: ConsumeMessage;\n}\n\nexport interface ConsumeEndInfo {\n  msg: ConsumeMessage;\n  rejected: boolean | null;\n  endOperation: EndOperation;\n}\n\nexport interface AmqplibPublishCustomAttributeFunction {\n  (span: Span, publishInfo: PublishInfo): void;\n}\n\nexport interface AmqplibPublishConfirmCustomAttributeFunction {\n  (span: Span, publishConfirmedInto: PublishConfirmedInfo): void;\n}\n\nexport interface AmqplibConsumeCustomAttributeFunction {\n  (span: Span, consumeInfo: ConsumeInfo): void;\n}\n\nexport interface AmqplibConsumeEndCustomAttributeFunction {\n  (span: Span, consumeEndInfo: ConsumeEndInfo): void;\n}\n\nexport enum EndOperation {\n  AutoAck = 'auto ack',\n  Ack = 'ack',\n  AckAll = 'ackAll',\n  Reject = 'reject',\n  Nack = 'nack',\n  NackAll = 'nackAll',\n  ChannelClosed = 'channel closed',\n  ChannelError = 'channel error',\n  InstrumentationTimeout = 'instrumentation timeout',\n}\n\nexport interface AmqplibInstrumentationConfig extends InstrumentationConfig {\n  /** hook for adding custom attributes before publish message is sent */\n  publishHook?: AmqplibPublishCustomAttributeFunction;\n\n  /** hook for adding custom attributes after publish message is confirmed by the broker */\n  publishConfirmHook?: AmqplibPublishConfirmCustomAttributeFunction;\n\n  /** hook for adding custom attributes before consumer message is processed */\n  consumeHook?: AmqplibConsumeCustomAttributeFunction;\n\n  /** hook for adding custom attributes after consumer message is acked to server */\n  consumeEndHook?: AmqplibConsumeEndCustomAttributeFunction;\n\n  /**\n   * When user is setting up consume callback, it is user's responsibility to call\n   * ack/nack etc on the msg to resolve it in the server.\n   * If user is not calling the ack, the message will stay in the queue until\n   * channel is closed, or until server timeout expires (if configured).\n   * While we wait for the ack, a reference to the message is stored in plugin, which\n   * will never be garbage collected.\n   * To prevent memory leak, plugin has it's own configuration of timeout, which\n   * will close the span if user did not call ack after this timeout.\n   * If timeout is not big enough, span might be closed with 'InstrumentationTimeout',\n   * and then received valid ack from the user later which will not be instrumented.\n   *\n   * Default is 1 minute\n   */\n  consumeTimeoutMs?: number;\n\n  /** option to use a span link for the consume message instead of continuing a trace */\n  useLinksForConsume?: boolean;\n}\n\nexport const DEFAULT_CONFIG: AmqplibInstrumentationConfig = {\n  consumeTimeoutMs: 1000 * 60, // 1 minute\n  useLinksForConsume: false,\n};\n\n// The following types are vendored from `@types/amqplib@0.10.1` - commit SHA: 4205e03127692a40b4871709a7134fe4e2ed5510\n\n// Vendored from: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/4205e03127692a40b4871709a7134fe4e2ed5510/types/amqplib/properties.d.ts#L108\n// This exists in `@types/amqplib` as `Options.Publish`. We're renaming things\n// here to avoid importing the whole Options namespace.\nexport interface AmqplibPublishOptions {\n  expiration?: string | number;\n  userId?: string;\n  CC?: string | string[];\n\n  mandatory?: boolean;\n  persistent?: boolean;\n  deliveryMode?: boolean | number;\n  BCC?: string | string[];\n\n  contentType?: string;\n  contentEncoding?: string;\n  headers?: any;\n  priority?: number;\n  correlationId?: string;\n  replyTo?: string;\n  messageId?: string;\n  timestamp?: number;\n  type?: string;\n  appId?: string;\n}\n\n// Vendored from: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/4205e03127692a40b4871709a7134fe4e2ed5510/types/amqplib/properties.d.ts#L142\nexport interface Message {\n  content: Buffer;\n  fields: MessageFields;\n  properties: MessageProperties;\n}\n\nexport interface ConsumeMessage extends Message {\n  fields: ConsumeMessageFields;\n}\n\nexport interface CommonMessageFields {\n  deliveryTag: number;\n  redelivered: boolean;\n  exchange: string;\n  routingKey: string;\n}\n\nexport interface MessageFields extends CommonMessageFields {\n  messageCount?: number;\n  consumerTag?: string;\n}\n\nexport interface ConsumeMessageFields extends CommonMessageFields {\n  deliveryTag: number;\n}\n\nexport interface MessageProperties {\n  contentType: any | undefined;\n  contentEncoding: any | undefined;\n  headers: any;\n  deliveryMode: any | undefined;\n  priority: any | undefined;\n  correlationId: any | undefined;\n  replyTo: any | undefined;\n  expiration: any | undefined;\n  messageId: any | undefined;\n  timestamp: any | undefined;\n  type: any | undefined;\n  userId: any | undefined;\n  appId: any | undefined;\n  clusterId: any | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  Context,\n  createContextKey,\n  diag,\n  HrTime,\n  Span,\n  Attributes,\n  AttributeValue,\n} from '@opentelemetry/api';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_MESSAGING_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n  ATTR_MESSAGING_PROTOCOL,\n  ATTR_MESSAGING_PROTOCOL_VERSION,\n  ATTR_MESSAGING_URL,\n} from '../src/semconv-obsolete';\nimport type * as amqp from 'amqplib';\n\nexport const MESSAGE_STORED_SPAN: unique symbol = Symbol(\n  'opentelemetry.amqplib.message.stored-span'\n);\nexport const CHANNEL_SPANS_NOT_ENDED: unique symbol = Symbol(\n  'opentelemetry.amqplib.channel.spans-not-ended'\n);\nexport const CHANNEL_CONSUME_TIMEOUT_TIMER: unique symbol = Symbol(\n  'opentelemetry.amqplib.channel.consumer-timeout-timer'\n);\nexport const CONNECTION_ATTRIBUTES: unique symbol = Symbol(\n  'opentelemetry.amqplib.connection.attributes'\n);\n\nexport type InstrumentationConnection = amqp.Connection & {\n  [CONNECTION_ATTRIBUTES]?: Attributes;\n};\nexport type InstrumentationPublishChannel = (\n  | amqp.Channel\n  | amqp.ConfirmChannel\n) & { connection: InstrumentationConnection };\nexport type InstrumentationConsumeChannel = amqp.Channel & {\n  connection: InstrumentationConnection;\n  [CHANNEL_SPANS_NOT_ENDED]?: {\n    msg: amqp.ConsumeMessage;\n    timeOfConsume: HrTime;\n  }[];\n  [CHANNEL_CONSUME_TIMEOUT_TIMER]?: NodeJS.Timeout;\n};\nexport type InstrumentationMessage = amqp.Message & {\n  [MESSAGE_STORED_SPAN]?: Span;\n};\nexport type InstrumentationConsumeMessage = amqp.ConsumeMessage & {\n  [MESSAGE_STORED_SPAN]?: Span;\n};\n\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY: symbol = createContextKey(\n  'opentelemetry.amqplib.channel.is-confirm-channel'\n);\n\nexport const normalizeExchange = (exchangeName: string) =>\n  exchangeName !== '' ? exchangeName : '';\n\nconst censorPassword = (url: string): string => {\n  return url.replace(/:[^:@/]*@/, ':***@');\n};\n\nconst getPort = (\n  portFromUrl: number | undefined,\n  resolvedProtocol: string\n): number => {\n  // we are using the resolved protocol which is upper case\n  // this code mimic the behavior of the amqplib which is used to set connection params\n  return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671);\n};\n\nconst getProtocol = (protocolFromUrl: string | undefined): string => {\n  const resolvedProtocol = protocolFromUrl || 'amqp';\n  // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp')\n  const noEndingColon = resolvedProtocol.endsWith(':')\n    ? resolvedProtocol.substring(0, resolvedProtocol.length - 1)\n    : resolvedProtocol;\n  // upper cases to match spec\n  return noEndingColon.toUpperCase();\n};\n\nconst getHostname = (hostnameFromUrl: string | undefined): string => {\n  // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost.\n  // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener\n  return hostnameFromUrl || 'localhost';\n};\n\nconst extractConnectionAttributeOrLog = (\n  url: string | amqp.Options.Connect,\n  attributeKey: string,\n  attributeValue: AttributeValue,\n  nameForLog: string\n): Attributes => {\n  if (attributeValue) {\n    return { [attributeKey]: attributeValue };\n  } else {\n    diag.error(\n      `amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`,\n      {\n        url,\n      }\n    );\n    return {};\n  }\n};\n\nexport const getConnectionAttributesFromServer = (\n  conn: amqp.Connection\n): Attributes => {\n  const product = conn.serverProperties.product?.toLowerCase?.();\n  if (product) {\n    return {\n      [ATTR_MESSAGING_SYSTEM]: product,\n    };\n  } else {\n    return {};\n  }\n};\n\nexport const getConnectionAttributesFromUrl = (\n  url: string | amqp.Options.Connect,\n  netSemconvStability: SemconvStability\n): Attributes => {\n  const attributes: Attributes = {\n    [ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n  };\n\n  url = url || 'amqp://localhost';\n  if (typeof url === 'object') {\n    const connectOptions = url as amqp.Options.Connect;\n\n    const protocol = getProtocol(connectOptions?.protocol);\n    Object.assign(attributes, {\n      ...extractConnectionAttributeOrLog(\n        url,\n        ATTR_MESSAGING_PROTOCOL,\n        protocol,\n        'protocol'\n      ),\n    });\n\n    const hostname = getHostname(connectOptions?.hostname);\n    if (netSemconvStability & SemconvStability.OLD) {\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          url,\n          ATTR_NET_PEER_NAME,\n          hostname,\n          'hostname'\n        ),\n      });\n    }\n    if (netSemconvStability & SemconvStability.STABLE) {\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          url,\n          ATTR_SERVER_ADDRESS,\n          hostname,\n          'hostname'\n        ),\n      });\n    }\n\n    const port = getPort(connectOptions.port, protocol);\n    if (netSemconvStability & SemconvStability.OLD) {\n      Object.assign(\n        attributes,\n        extractConnectionAttributeOrLog(url, ATTR_NET_PEER_PORT, port, 'port')\n      );\n    }\n    if (netSemconvStability & SemconvStability.STABLE) {\n      Object.assign(\n        attributes,\n        extractConnectionAttributeOrLog(url, ATTR_SERVER_PORT, port, 'port')\n      );\n    }\n  } else {\n    const censoredUrl = censorPassword(url);\n    attributes[ATTR_MESSAGING_URL] = censoredUrl;\n    try {\n      const urlParts = new URL(censoredUrl);\n\n      const protocol = getProtocol(urlParts.protocol);\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          censoredUrl,\n          ATTR_MESSAGING_PROTOCOL,\n          protocol,\n          'protocol'\n        ),\n      });\n\n      const hostname = getHostname(urlParts.hostname);\n      if (netSemconvStability & SemconvStability.OLD) {\n        Object.assign(attributes, {\n          ...extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_NET_PEER_NAME,\n            hostname,\n            'hostname'\n          ),\n        });\n      }\n      if (netSemconvStability & SemconvStability.STABLE) {\n        Object.assign(attributes, {\n          ...extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_SERVER_ADDRESS,\n            hostname,\n            'hostname'\n          ),\n        });\n      }\n\n      const port = getPort(\n        urlParts.port ? parseInt(urlParts.port) : undefined,\n        protocol\n      );\n      if (netSemconvStability & SemconvStability.OLD) {\n        Object.assign(\n          attributes,\n          extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_NET_PEER_PORT,\n            port,\n            'port'\n          )\n        );\n      }\n      if (netSemconvStability & SemconvStability.STABLE) {\n        Object.assign(\n          attributes,\n          extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_SERVER_PORT,\n            port,\n            'port'\n          )\n        );\n      }\n    } catch (err) {\n      diag.error(\n        'amqplib instrumentation: error while extracting connection details from connection url',\n        {\n          censoredUrl,\n          err,\n        }\n      );\n    }\n  }\n  return attributes;\n};\n\nexport const markConfirmChannelTracing = (context: Context) => {\n  return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\n\nexport const unmarkConfirmChannelTracing = (context: Context) => {\n  return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\n\nexport const isConfirmChannelTracing = (context: Context) => {\n  return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.61.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  context,\n  diag,\n  propagation,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  ROOT_CONTEXT,\n  Link,\n  Context,\n} from '@opentelemetry/api';\nimport {\n  hrTime,\n  hrTimeDuration,\n  hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_MESSAGING_OPERATION } from './semconv';\nimport {\n  ATTR_MESSAGING_DESTINATION,\n  ATTR_MESSAGING_DESTINATION_KIND,\n  ATTR_MESSAGING_RABBITMQ_ROUTING_KEY,\n  MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n  MESSAGING_OPERATION_VALUE_PROCESS,\n  OLD_ATTR_MESSAGING_MESSAGE_ID,\n  ATTR_MESSAGING_CONVERSATION_ID,\n} from '../src/semconv-obsolete';\nimport type {\n  Connection,\n  ConsumeMessage,\n  Message,\n  Options,\n  Replies,\n} from 'amqplib';\nimport {\n  AmqplibInstrumentationConfig,\n  DEFAULT_CONFIG,\n  EndOperation,\n} from './types';\nimport {\n  CHANNEL_CONSUME_TIMEOUT_TIMER,\n  CHANNEL_SPANS_NOT_ENDED,\n  CONNECTION_ATTRIBUTES,\n  getConnectionAttributesFromServer,\n  getConnectionAttributesFromUrl,\n  InstrumentationConnection,\n  InstrumentationConsumeChannel,\n  InstrumentationConsumeMessage,\n  InstrumentationMessage,\n  InstrumentationPublishChannel,\n  isConfirmChannelTracing,\n  markConfirmChannelTracing,\n  MESSAGE_STORED_SPAN,\n  normalizeExchange,\n  unmarkConfirmChannelTracing,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst supportedVersions = ['>=0.5.5 <1'];\n\nexport class AmqplibInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n\n  constructor(config: AmqplibInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: AmqplibInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  protected init() {\n    const channelModelModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/channel_model.js',\n      supportedVersions,\n      this.patchChannelModel.bind(this),\n      this.unpatchChannelModel.bind(this)\n    );\n\n    const callbackModelModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/callback_model.js',\n      supportedVersions,\n      this.patchChannelModel.bind(this),\n      this.unpatchChannelModel.bind(this)\n    );\n\n    const connectModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/connect.js',\n      supportedVersions,\n      this.patchConnect.bind(this),\n      this.unpatchConnect.bind(this)\n    );\n\n    const module = new InstrumentationNodeModuleDefinition(\n      'amqplib',\n      supportedVersions,\n      undefined,\n      undefined,\n      [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]\n    );\n    return module;\n  }\n\n  private patchConnect(moduleExports: any) {\n    moduleExports = this.unpatchConnect(moduleExports);\n    if (!isWrapped(moduleExports.connect)) {\n      this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this));\n    }\n    return moduleExports;\n  }\n\n  private unpatchConnect(moduleExports: any) {\n    if (isWrapped(moduleExports.connect)) {\n      this._unwrap(moduleExports, 'connect');\n    }\n    return moduleExports;\n  }\n\n  private patchChannelModel(\n    moduleExports: any,\n    moduleVersion: string | undefined\n  ) {\n    if (!isWrapped(moduleExports.Channel.prototype.publish)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'publish',\n        this.getPublishPatch.bind(this, moduleVersion)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.consume)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'consume',\n        this.getConsumePatch.bind(this, moduleVersion)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.ack)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'ack',\n        this.getAckPatch.bind(this, false, EndOperation.Ack)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.nack)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'nack',\n        this.getAckPatch.bind(this, true, EndOperation.Nack)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.reject)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'reject',\n        this.getAckPatch.bind(this, true, EndOperation.Reject)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.ackAll)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'ackAll',\n        this.getAckAllPatch.bind(this, false, EndOperation.AckAll)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.nackAll)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'nackAll',\n        this.getAckAllPatch.bind(this, true, EndOperation.NackAll)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.emit)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'emit',\n        this.getChannelEmitPatch.bind(this)\n      );\n    }\n    if (!isWrapped(moduleExports.ConfirmChannel.prototype.publish)) {\n      this._wrap(\n        moduleExports.ConfirmChannel.prototype,\n        'publish',\n        this.getConfirmedPublishPatch.bind(this, moduleVersion)\n      );\n    }\n    return moduleExports;\n  }\n\n  private unpatchChannelModel(moduleExports: any) {\n    if (isWrapped(moduleExports.Channel.prototype.publish)) {\n      this._unwrap(moduleExports.Channel.prototype, 'publish');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.consume)) {\n      this._unwrap(moduleExports.Channel.prototype, 'consume');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.ack)) {\n      this._unwrap(moduleExports.Channel.prototype, 'ack');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.nack)) {\n      this._unwrap(moduleExports.Channel.prototype, 'nack');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.reject)) {\n      this._unwrap(moduleExports.Channel.prototype, 'reject');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.ackAll)) {\n      this._unwrap(moduleExports.Channel.prototype, 'ackAll');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.nackAll)) {\n      this._unwrap(moduleExports.Channel.prototype, 'nackAll');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.emit)) {\n      this._unwrap(moduleExports.Channel.prototype, 'emit');\n    }\n    if (isWrapped(moduleExports.ConfirmChannel.prototype.publish)) {\n      this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish');\n    }\n    return moduleExports;\n  }\n\n  private getConnectPatch(\n    original: (\n      url: string | Options.Connect,\n      socketOptions: any,\n      openCallback: (err: any, connection: Connection) => void\n    ) => Connection\n  ) {\n    const self = this;\n    return function patchedConnect(\n      this: unknown,\n      url: string | Options.Connect,\n      socketOptions: any,\n      openCallback: Function\n    ) {\n      return original.call(\n        this,\n        url,\n        socketOptions,\n        function (this: unknown, err, conn: InstrumentationConnection) {\n          if (err == null) {\n            const urlAttributes = getConnectionAttributesFromUrl(\n              url,\n              self._netSemconvStability\n            );\n            const serverAttributes = getConnectionAttributesFromServer(conn);\n            conn[CONNECTION_ATTRIBUTES] = {\n              ...urlAttributes,\n              ...serverAttributes,\n            };\n          }\n          openCallback.apply(this, arguments);\n        }\n      );\n    };\n  }\n\n  private getChannelEmitPatch(original: Function) {\n    const self = this;\n    return function emit(\n      this: InstrumentationConsumeChannel,\n      eventName: string\n    ) {\n      if (eventName === 'close') {\n        self.endAllSpansOnChannel(\n          this,\n          true,\n          EndOperation.ChannelClosed,\n          undefined\n        );\n        const activeTimer = this[CHANNEL_CONSUME_TIMEOUT_TIMER];\n        if (activeTimer) {\n          clearInterval(activeTimer);\n        }\n        this[CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined;\n      } else if (eventName === 'error') {\n        self.endAllSpansOnChannel(\n          this,\n          true,\n          EndOperation.ChannelError,\n          undefined\n        );\n      }\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getAckAllPatch(\n    isRejected: boolean,\n    endOperation: EndOperation,\n    original: Function\n  ) {\n    const self = this;\n    return function ackAll(\n      this: InstrumentationConsumeChannel,\n      requeueOrEmpty?: boolean\n    ): void {\n      self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty);\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getAckPatch(\n    isRejected: boolean,\n    endOperation: EndOperation,\n    original: Function\n  ) {\n    const self = this;\n    return function ack(\n      this: InstrumentationConsumeChannel,\n      message: Message,\n      allUpToOrRequeue?: boolean,\n      requeue?: boolean\n    ): void {\n      const channel = this;\n      // we use this patch in reject function as well, but it has different signature\n      const requeueResolved =\n        endOperation === EndOperation.Reject ? allUpToOrRequeue : requeue;\n\n      const spansNotEnded: { msg: Message }[] =\n        channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n      const msgIndex = spansNotEnded.findIndex(\n        msgDetails => msgDetails.msg === message\n      );\n      if (msgIndex < 0) {\n        // should not happen in happy flow\n        // but possible if user is calling the api function ack twice with same message\n        self.endConsumerSpan(\n          message,\n          isRejected,\n          endOperation,\n          requeueResolved\n        );\n      } else if (endOperation !== EndOperation.Reject && allUpToOrRequeue) {\n        for (let i = 0; i <= msgIndex; i++) {\n          self.endConsumerSpan(\n            spansNotEnded[i].msg,\n            isRejected,\n            endOperation,\n            requeueResolved\n          );\n        }\n        spansNotEnded.splice(0, msgIndex + 1);\n      } else {\n        self.endConsumerSpan(\n          message,\n          isRejected,\n          endOperation,\n          requeueResolved\n        );\n        spansNotEnded.splice(msgIndex, 1);\n      }\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getConsumePatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function consume(\n      this: InstrumentationConsumeChannel,\n      queue: string,\n      onMessage: (msg: ConsumeMessage | null) => void,\n      options?: Options.Consume\n    ): Promise {\n      const channel = this;\n      if (\n        !Object.prototype.hasOwnProperty.call(channel, CHANNEL_SPANS_NOT_ENDED)\n      ) {\n        const { consumeTimeoutMs } = self.getConfig();\n        if (consumeTimeoutMs) {\n          const timer = setInterval(() => {\n            self.checkConsumeTimeoutOnChannel(channel);\n          }, consumeTimeoutMs);\n          timer.unref();\n          channel[CHANNEL_CONSUME_TIMEOUT_TIMER] = timer;\n        }\n        channel[CHANNEL_SPANS_NOT_ENDED] = [];\n      }\n\n      const patchedOnMessage = function (\n        this: unknown,\n        msg: InstrumentationConsumeMessage | null\n      ) {\n        // msg is expected to be null for signaling consumer cancel notification\n        // https://www.rabbitmq.com/consumer-cancel.html\n        // in this case, we do not start a span, as this is not a real message.\n        if (!msg) {\n          return onMessage.call(this, msg);\n        }\n\n        const headers = msg.properties.headers ?? {};\n        let parentContext: Context | undefined = propagation.extract(\n          ROOT_CONTEXT,\n          headers\n        );\n        const exchange = msg.fields?.exchange;\n        let links: Link[] | undefined;\n        if (self._config.useLinksForConsume) {\n          const parentSpanContext = parentContext\n            ? trace.getSpan(parentContext)?.spanContext()\n            : undefined;\n          parentContext = undefined;\n          if (parentSpanContext) {\n            links = [\n              {\n                context: parentSpanContext,\n              },\n            ];\n          }\n        }\n        const span = self.tracer.startSpan(\n          `${queue} process`,\n          {\n            kind: SpanKind.CONSUMER,\n            attributes: {\n              ...channel?.connection?.[CONNECTION_ATTRIBUTES],\n              [ATTR_MESSAGING_DESTINATION]: exchange,\n              [ATTR_MESSAGING_DESTINATION_KIND]:\n                MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n              [ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey,\n              [ATTR_MESSAGING_OPERATION]: MESSAGING_OPERATION_VALUE_PROCESS,\n              [OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId,\n              [ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId,\n            },\n            links,\n          },\n          parentContext\n        );\n\n        const { consumeHook } = self.getConfig();\n        if (consumeHook) {\n          safeExecuteInTheMiddle(\n            () => consumeHook(span, { moduleVersion, msg }),\n            e => {\n              if (e) {\n                diag.error('amqplib instrumentation: consumerHook error', e);\n              }\n            },\n            true\n          );\n        }\n\n        if (!options?.noAck) {\n          // store the message on the channel so we can close the span on ackAll etc\n          channel[CHANNEL_SPANS_NOT_ENDED]!.push({\n            msg,\n            timeOfConsume: hrTime(),\n          });\n\n          // store the span on the message, so we can end it when user call 'ack' on it\n          msg[MESSAGE_STORED_SPAN] = span;\n        }\n        const setContext: Context = parentContext\n          ? parentContext\n          : ROOT_CONTEXT;\n        context.with(trace.setSpan(setContext, span), () => {\n          onMessage.call(this, msg);\n        });\n\n        if (options?.noAck) {\n          self.callConsumeEndHook(span, msg, false, EndOperation.AutoAck);\n          span.end();\n        }\n      };\n      arguments[1] = patchedOnMessage;\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getConfirmedPublishPatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function confirmedPublish(\n      this: InstrumentationConsumeChannel,\n      exchange: string,\n      routingKey: string,\n      content: Buffer,\n      options?: Options.Publish,\n      callback?: (err: any, ok: Replies.Empty) => void\n    ): boolean {\n      const channel = this;\n      const { span, modifiedOptions } = self.createPublishSpan(\n        self,\n        exchange,\n        routingKey,\n        channel,\n        options\n      );\n\n      const { publishHook } = self.getConfig();\n      if (publishHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            publishHook(span, {\n              moduleVersion,\n              exchange,\n              routingKey,\n              content,\n              options: modifiedOptions,\n              isConfirmChannel: true,\n            }),\n          e => {\n            if (e) {\n              diag.error('amqplib instrumentation: publishHook error', e);\n            }\n          },\n          true\n        );\n      }\n\n      const patchedOnConfirm = function (\n        this: unknown,\n        err: any,\n        ok: Replies.Empty\n      ) {\n        try {\n          callback?.call(this, err, ok);\n        } finally {\n          const { publishConfirmHook } = self.getConfig();\n          if (publishConfirmHook) {\n            safeExecuteInTheMiddle(\n              () =>\n                publishConfirmHook(span, {\n                  moduleVersion,\n                  exchange,\n                  routingKey,\n                  content,\n                  options,\n                  isConfirmChannel: true,\n                  confirmError: err,\n                }),\n              e => {\n                if (e) {\n                  diag.error(\n                    'amqplib instrumentation: publishConfirmHook error',\n                    e\n                  );\n                }\n              },\n              true\n            );\n          }\n\n          if (err) {\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: \"message confirmation has been nack'ed\",\n            });\n          }\n          span.end();\n        }\n      };\n\n      // calling confirm channel publish function is storing the message in queue and registering the callback for broker confirm.\n      // span ends in the patched callback.\n      const markedContext = markConfirmChannelTracing(context.active());\n      const argumentsCopy = [...arguments];\n      argumentsCopy[3] = modifiedOptions;\n      argumentsCopy[4] = context.bind(\n        unmarkConfirmChannelTracing(trace.setSpan(markedContext, span)),\n        patchedOnConfirm\n      );\n      return context.with(markedContext, original.bind(this, ...argumentsCopy));\n    };\n  }\n\n  private getPublishPatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function publish(\n      this: InstrumentationPublishChannel,\n      exchange: string,\n      routingKey: string,\n      content: Buffer,\n      options?: Options.Publish\n    ): boolean {\n      if (isConfirmChannelTracing(context.active())) {\n        // work already done\n        return original.apply(this, arguments);\n      } else {\n        const channel = this;\n        const { span, modifiedOptions } = self.createPublishSpan(\n          self,\n          exchange,\n          routingKey,\n          channel,\n          options\n        );\n\n        const { publishHook } = self.getConfig();\n        if (publishHook) {\n          safeExecuteInTheMiddle(\n            () =>\n              publishHook(span, {\n                moduleVersion,\n                exchange,\n                routingKey,\n                content,\n                options: modifiedOptions,\n                isConfirmChannel: false,\n              }),\n            e => {\n              if (e) {\n                diag.error('amqplib instrumentation: publishHook error', e);\n              }\n            },\n            true\n          );\n        }\n\n        // calling normal channel publish function is only storing the message in queue.\n        // it does not send it and waits for an ack, so the span duration is expected to be very short.\n        const argumentsCopy = [...arguments];\n        argumentsCopy[3] = modifiedOptions;\n        const originalRes = original.apply(this, argumentsCopy as any);\n        span.end();\n        return originalRes;\n      }\n    };\n  }\n\n  private createPublishSpan(\n    self: this,\n    exchange: string,\n    routingKey: string,\n    channel: InstrumentationPublishChannel,\n    options?: Options.Publish\n  ) {\n    const normalizedExchange = normalizeExchange(exchange);\n\n    const span = self.tracer.startSpan(`publish ${normalizedExchange}`, {\n      kind: SpanKind.PRODUCER,\n      attributes: {\n        ...channel.connection[CONNECTION_ATTRIBUTES],\n        [ATTR_MESSAGING_DESTINATION]: exchange,\n        [ATTR_MESSAGING_DESTINATION_KIND]:\n          MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n\n        [ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey,\n        [OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId,\n        [ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId,\n      },\n    });\n    const modifiedOptions = options ?? {};\n    modifiedOptions.headers = modifiedOptions.headers ?? {};\n\n    propagation.inject(\n      trace.setSpan(context.active(), span),\n      modifiedOptions.headers\n    );\n\n    return { span, modifiedOptions };\n  }\n\n  private endConsumerSpan(\n    message: InstrumentationMessage,\n    isRejected: boolean | null,\n    operation: EndOperation,\n    requeue: boolean | undefined\n  ) {\n    const storedSpan: Span | undefined = message[MESSAGE_STORED_SPAN];\n    if (!storedSpan) return;\n    if (isRejected !== false) {\n      storedSpan.setStatus({\n        code: SpanStatusCode.ERROR,\n        message:\n          operation !== EndOperation.ChannelClosed &&\n          operation !== EndOperation.ChannelError\n            ? `${operation} called on message${\n                requeue === true\n                  ? ' with requeue'\n                  : requeue === false\n                    ? ' without requeue'\n                    : ''\n              }`\n            : operation,\n      });\n    }\n    this.callConsumeEndHook(storedSpan, message, isRejected, operation);\n    storedSpan.end();\n    message[MESSAGE_STORED_SPAN] = undefined;\n  }\n\n  private endAllSpansOnChannel(\n    channel: InstrumentationConsumeChannel,\n    isRejected: boolean,\n    operation: EndOperation,\n    requeue: boolean | undefined\n  ) {\n    const spansNotEnded: { msg: Message }[] =\n      channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n    spansNotEnded.forEach(msgDetails => {\n      this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue);\n    });\n    channel[CHANNEL_SPANS_NOT_ENDED] = [];\n  }\n\n  private callConsumeEndHook(\n    span: Span,\n    msg: InstrumentationMessage,\n    rejected: boolean | null,\n    endOperation: EndOperation\n  ) {\n    const { consumeEndHook } = this.getConfig();\n    if (!consumeEndHook) return;\n\n    safeExecuteInTheMiddle(\n      () => consumeEndHook(span, { msg, rejected, endOperation }),\n      e => {\n        if (e) {\n          diag.error('amqplib instrumentation: consumerEndHook error', e);\n        }\n      },\n      true\n    );\n  }\n\n  private checkConsumeTimeoutOnChannel(channel: InstrumentationConsumeChannel) {\n    const currentTime = hrTime();\n    const spansNotEnded = channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n    let i: number;\n    const { consumeTimeoutMs } = this.getConfig();\n    for (i = 0; i < spansNotEnded.length; i++) {\n      const currMessage = spansNotEnded[i];\n      const timeFromConsume = hrTimeDuration(\n        currMessage.timeOfConsume,\n        currentTime\n      );\n      if (hrTimeToMilliseconds(timeFromConsume) < consumeTimeoutMs!) {\n        break;\n      }\n      this.endConsumerSpan(\n        currMessage.msg,\n        null,\n        EndOperation.InstrumentationTimeout,\n        true\n      );\n    }\n    spansNotEnded.splice(0, i);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport { AmqplibInstrumentation } from './amqplib';\nexport { DEFAULT_CONFIG, EndOperation } from './types';\nexport type {\n  AmqplibConsumeCustomAttributeFunction,\n  AmqplibConsumeEndCustomAttributeFunction,\n  AmqplibInstrumentationConfig,\n  AmqplibPublishConfirmCustomAttributeFunction,\n  AmqplibPublishCustomAttributeFunction,\n  AmqplibPublishOptions,\n  CommonMessageFields,\n  ConsumeEndInfo,\n  ConsumeInfo,\n  ConsumeMessage,\n  ConsumeMessageFields,\n  Message,\n  MessageFields,\n  MessageProperties,\n  PublishConfirmedInfo,\n  PublishInfo,\n} from './types';\n","import type { Span } from '@opentelemetry/api';\nimport { AmqplibInstrumentation, type AmqplibInstrumentationConfig } from '@opentelemetry/instrumentation-amqplib';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Amqplib';\n\nconst config: AmqplibInstrumentationConfig = {\n  consumeEndHook: (span: Span) => {\n    addOriginToSpan(span, 'auto.amqplib.otel.consumer');\n  },\n  publishHook: (span: Span) => {\n    addOriginToSpan(span, 'auto.amqplib.otel.publisher');\n  },\n};\n\nexport const instrumentAmqplib = generateInstrumentOnce(INTEGRATION_NAME, () => new AmqplibInstrumentation(config));\n\nconst _amqplibIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentAmqplib();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [amqplib](https://www.npmjs.com/package/amqplib) library.\n *\n * For more information, see the [`amqplibIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/amqplib/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.amqplibIntegration()],\n * });\n * ```\n */\nexport const amqplibIntegration = defineIntegration(_amqplibIntegration);\n","export const INTEGRATION_NAME = 'VercelAI';\n","import type { InstrumentationConfig, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n  _INTERNAL_cleanupToolCallSpanContext,\n  _INTERNAL_getSpanContextForToolCallId,\n  addNonEnumerableProperty,\n  captureException,\n  getActiveSpan,\n  getClient,\n  handleCallbackErrors,\n  SDK_VERSION,\n  withScope,\n} from '@sentry/core';\nimport { INTEGRATION_NAME } from './constants';\nimport type { TelemetrySettings, VercelAiIntegration } from './types';\n\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <7'];\n\n// List of patched methods\n// From: https://sdk.vercel.ai/docs/ai-sdk-core/telemetry#collected-data\nconst INSTRUMENTED_METHODS = [\n  'generateText',\n  'streamText',\n  'generateObject',\n  'streamObject',\n  'embed',\n  'embedMany',\n  'rerank',\n] as const;\n\ninterface MethodFirstArg extends Record {\n  experimental_telemetry?: TelemetrySettings;\n}\n\ntype MethodArgs = [MethodFirstArg, ...unknown[]];\n\ntype PatchedModuleExports = Record<(typeof INSTRUMENTED_METHODS)[number], (...args: MethodArgs) => unknown> &\n  Record;\n\ninterface RecordingOptions {\n  recordInputs?: boolean;\n  recordOutputs?: boolean;\n}\n\ninterface ToolError {\n  type: 'tool-error' | 'tool-result' | 'tool-call';\n  toolCallId: string;\n  toolName: string;\n  input?: {\n    [key: string]: unknown;\n  };\n  error: Error;\n  dynamic?: boolean;\n}\n\nfunction isToolError(obj: unknown): obj is ToolError {\n  if (typeof obj !== 'object' || obj === null) {\n    return false;\n  }\n\n  const candidate = obj as Record;\n  return (\n    'type' in candidate &&\n    'error' in candidate &&\n    'toolName' in candidate &&\n    'toolCallId' in candidate &&\n    candidate.type === 'tool-error' &&\n    candidate.error instanceof Error\n  );\n}\n\n/**\n * Process tool call results: capture tool errors and clean up span context mappings.\n *\n * Error checking runs first (needs span context for linking), then cleanup removes all entries.\n * Tool errors are not rejected in Vercel AI V5 — they appear as metadata in the result content.\n */\nexport function processToolCallResults(result: unknown): void {\n  if (typeof result !== 'object' || result === null || !('content' in result)) {\n    return;\n  }\n\n  const resultObj = result as { content: Array };\n  if (!Array.isArray(resultObj.content)) {\n    return;\n  }\n\n  captureToolErrors(resultObj.content);\n  cleanupToolCallSpanContexts(resultObj.content);\n}\n\nfunction captureToolErrors(content: Array): void {\n  for (const item of content) {\n    if (!isToolError(item)) {\n      continue;\n    }\n\n    // Try to get the span context associated with this tool call ID\n    const spanContext = _INTERNAL_getSpanContextForToolCallId(item.toolCallId);\n\n    if (spanContext) {\n      // We have the span context, so link the error using span and trace IDs\n      withScope(scope => {\n        scope.setContext('trace', {\n          trace_id: spanContext.traceId,\n          span_id: spanContext.spanId,\n        });\n\n        scope.setTag('vercel.ai.tool.name', item.toolName);\n        scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n        scope.setLevel('error');\n\n        captureException(item.error, {\n          mechanism: {\n            type: 'auto.vercelai.otel',\n            handled: false,\n          },\n        });\n      });\n    } else {\n      // Fallback: capture without span linking\n      withScope(scope => {\n        scope.setTag('vercel.ai.tool.name', item.toolName);\n        scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n        scope.setLevel('error');\n\n        captureException(item.error, {\n          mechanism: {\n            type: 'auto.vercelai.otel',\n            handled: false,\n          },\n        });\n      });\n    }\n  }\n}\n\n/**\n * Remove span context entries for all completed tool calls in the content array.\n */\nexport function cleanupToolCallSpanContexts(content: Array): void {\n  for (const item of content) {\n    if (\n      typeof item === 'object' &&\n      item !== null &&\n      'toolCallId' in item &&\n      typeof (item as Record).toolCallId === 'string'\n    ) {\n      _INTERNAL_cleanupToolCallSpanContext((item as Record).toolCallId as string);\n    }\n  }\n}\n\n/**\n * Determines whether to record inputs and outputs for Vercel AI telemetry based on the configuration hierarchy.\n *\n * The order of precedence is:\n * 1. The vercel ai integration options\n * 2. The experimental_telemetry options in the vercel ai method calls\n * 3. When telemetry is explicitly enabled (isEnabled: true), default to recording\n * 4. Otherwise, use the sendDefaultPii option from client options\n */\nexport function determineRecordingSettings(\n  integrationRecordingOptions: RecordingOptions | undefined,\n  methodTelemetryOptions: RecordingOptions,\n  telemetryExplicitlyEnabled: boolean | undefined,\n  defaultRecordingEnabled: boolean,\n): { recordInputs: boolean; recordOutputs: boolean } {\n  const recordInputs =\n    integrationRecordingOptions?.recordInputs !== undefined\n      ? integrationRecordingOptions.recordInputs\n      : methodTelemetryOptions.recordInputs !== undefined\n        ? methodTelemetryOptions.recordInputs\n        : telemetryExplicitlyEnabled === true\n          ? true // When telemetry is explicitly enabled, default to recording inputs\n          : defaultRecordingEnabled;\n\n  const recordOutputs =\n    integrationRecordingOptions?.recordOutputs !== undefined\n      ? integrationRecordingOptions.recordOutputs\n      : methodTelemetryOptions.recordOutputs !== undefined\n        ? methodTelemetryOptions.recordOutputs\n        : telemetryExplicitlyEnabled === true\n          ? true // When telemetry is explicitly enabled, default to recording inputs\n          : defaultRecordingEnabled;\n\n  return { recordInputs, recordOutputs };\n}\n\n/**\n * This detects is added by the Sentry Vercel AI Integration to detect if the integration should\n * be enabled.\n *\n * It also patches the `ai` module to enable Vercel AI telemetry automatically for all methods.\n */\nexport class SentryVercelAiInstrumentation extends InstrumentationBase {\n  private _isPatched = false;\n  private _callbacks: (() => void)[] = [];\n\n  public constructor(config: InstrumentationConfig = {}) {\n    super('@sentry/instrumentation-vercel-ai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition('ai', SUPPORTED_VERSIONS, this._patch.bind(this));\n    return module;\n  }\n\n  /**\n   * Call the provided callback when the module is patched.\n   * If it has already been patched, the callback will be called immediately.\n   */\n  public callWhenPatched(callback: () => void): void {\n    if (this._isPatched) {\n      callback();\n    } else {\n      this._callbacks.push(callback);\n    }\n  }\n\n  /**\n   * Patches module exports to enable Vercel AI telemetry.\n   */\n  private _patch(moduleExports: PatchedModuleExports): unknown {\n    this._isPatched = true;\n\n    this._callbacks.forEach(callback => callback());\n    this._callbacks = [];\n\n    const generatePatch =  unknown>(originalMethod: T): T => {\n      return new Proxy(originalMethod, {\n        apply: (target, thisArg, args: MethodArgs) => {\n          const existingExperimentalTelemetry = args[0].experimental_telemetry || {};\n          const isEnabled = existingExperimentalTelemetry.isEnabled;\n\n          const client = getClient();\n          const integration = client?.getIntegrationByName(INTEGRATION_NAME);\n          const integrationOptions = integration?.options;\n          const shouldRecordInputsAndOutputs = integration ? Boolean(client?.getOptions().sendDefaultPii) : false;\n\n          const { recordInputs, recordOutputs } = determineRecordingSettings(\n            integrationOptions,\n            existingExperimentalTelemetry,\n            isEnabled,\n            shouldRecordInputsAndOutputs,\n          );\n\n          args[0].experimental_telemetry = {\n            ...existingExperimentalTelemetry,\n            isEnabled: isEnabled !== undefined ? isEnabled : true,\n            recordInputs,\n            recordOutputs,\n          };\n\n          return handleCallbackErrors(\n            () => Reflect.apply(target, thisArg, args),\n            error => {\n              // This error bubbles up to unhandledrejection handler (if not handled before),\n              // where we do not know the active span anymore\n              // So to circumvent this, we set the active span on the error object\n              // which is picked up by the unhandledrejection handler\n              if (error && typeof error === 'object') {\n                addNonEnumerableProperty(error, '_sentry_active_span', getActiveSpan());\n              }\n            },\n            () => {},\n            result => {\n              processToolCallResults(result);\n            },\n          );\n        },\n      });\n    };\n\n    // Is this an ESM module?\n    // https://tc39.es/ecma262/#sec-module-namespace-objects\n    if (Object.prototype.toString.call(moduleExports) === '[object Module]') {\n      // In ESM we take the usual route and just replace the exports we want to instrument\n      for (const method of INSTRUMENTED_METHODS) {\n        // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n        if (moduleExports[method] != null) {\n          moduleExports[method] = generatePatch(moduleExports[method]);\n        }\n      }\n\n      return moduleExports;\n    } else {\n      // In CJS we can't replace the exports in the original module because they\n      // don't have setters, so we create a new object with the same properties\n      const patchedModuleExports = INSTRUMENTED_METHODS.reduce((acc, curr) => {\n        // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n        if (moduleExports[curr] != null) {\n          acc[curr] = generatePatch(moduleExports[curr]);\n        }\n        return acc;\n      }, {} as PatchedModuleExports);\n\n      return { ...moduleExports, ...patchedModuleExports };\n    }\n  }\n}\n","import type { Client, IntegrationFn } from '@sentry/core';\nimport { addVercelAiProcessors, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, type modulesIntegration } from '@sentry/node-core';\nimport { INTEGRATION_NAME } from './constants';\nimport { SentryVercelAiInstrumentation } from './instrumentation';\nimport type { VercelAiOptions } from './types';\n\nexport const instrumentVercelAi = generateInstrumentOnce(INTEGRATION_NAME, () => new SentryVercelAiInstrumentation({}));\n\n/**\n * Determines if the integration should be forced based on environment and package availability.\n * Returns true if the 'ai' package is available.\n */\nfunction shouldForceIntegration(client: Client): boolean {\n  const modules = client.getIntegrationByName>('Modules');\n  return !!modules?.getModules?.()?.ai;\n}\n\nconst _vercelAIIntegration = ((options: VercelAiOptions = {}) => {\n  let instrumentation: undefined | SentryVercelAiInstrumentation;\n\n  return {\n    name: INTEGRATION_NAME,\n    options,\n    setupOnce() {\n      instrumentation = instrumentVercelAi();\n    },\n    afterAllSetup(client) {\n      // Auto-detect if we should force the integration when running with 'ai' package available\n      // Note that this can only be detected if the 'Modules' integration is available, and running in CJS mode\n      const shouldForce = options.force ?? shouldForceIntegration(client);\n\n      if (shouldForce) {\n        addVercelAiProcessors(client);\n      } else {\n        instrumentation?.callWhenPatched(() => addVercelAiProcessors(client));\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [ai](https://www.npmjs.com/package/ai) library.\n * This integration is not enabled by default, you need to manually add it.\n *\n * For more information, see the [`ai` documentation](https://sdk.vercel.ai/docs/ai-sdk-core/telemetry).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.vercelAIIntegration()],\n * });\n * ```\n *\n * This integration adds tracing support to all `ai` function calls.\n * You need to opt-in to collecting spans for a specific call,\n * you can do so by setting `experimental_telemetry.isEnabled` to `true` in the first argument of the function call.\n *\n * ```javascript\n * const result = await generateText({\n *   model: openai('gpt-4-turbo'),\n *   experimental_telemetry: { isEnabled: true },\n * });\n * ```\n *\n * If you want to collect inputs and outputs for a specific call, you must specifically opt-in to each\n * function call by setting `experimental_telemetry.recordInputs` and `experimental_telemetry.recordOutputs`\n * to `true`.\n *\n * ```javascript\n * const result = await generateText({\n *  model: openai('gpt-4-turbo'),\n *  experimental_telemetry: { isEnabled: true, recordInputs: true, recordOutputs: true },\n * });\n */\nexport const vercelAIIntegration = defineIntegration(_vercelAIIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { Integration, OpenAiClient, OpenAiOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  instrumentOpenAiClient,\n  OPENAI_INTEGRATION_NAME,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=4.0.0 <7'];\n\nexport interface OpenAiIntegration extends Integration {\n  options: OpenAiOptions;\n}\n\ntype OpenAiInstrumentationOptions = InstrumentationConfig & OpenAiOptions;\n\n/**\n * Represents the patched shape of the OpenAI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  OpenAI: abstract new (...args: unknown[]) => OpenAiClient;\n  AzureOpenAI?: abstract new (...args: unknown[]) => OpenAiClient;\n}\n\n/**\n * Sentry OpenAI instrumentation using OpenTelemetry.\n */\nexport class SentryOpenAiInstrumentation extends InstrumentationBase {\n  public constructor(config: OpenAiInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-openai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition('openai', supportedVersions, this._patch.bind(this));\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the OpenAI and AzureOpenAI client constructors.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    let result = exports;\n    result = this._patchClient(result, 'OpenAI');\n    result = this._patchClient(result, 'AzureOpenAI');\n    return result;\n  }\n\n  /**\n   * Patch logic applying instrumentation to the specified client constructor.\n   */\n  private _patchClient(exports: PatchedModuleExports, exportKey: 'OpenAI' | 'AzureOpenAI'): PatchedModuleExports {\n    const Original = exports[exportKey];\n    if (!Original) {\n      return exports;\n    }\n\n    const config = this.getConfig();\n\n    const WrappedOpenAI = function (this: unknown, ...args: unknown[]) {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(OPENAI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as OpenAiClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentOpenAiClient(instance as OpenAiClient, config);\n    } as unknown as abstract new (...args: unknown[]) => OpenAiClient;\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedOpenAI, Original);\n    Object.setPrototypeOf(WrappedOpenAI.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedOpenAI, key, descriptor);\n        }\n      }\n    }\n\n    // Constructor replacement - handle read-only properties\n    // The OpenAI property might have only a getter, so use defineProperty\n    try {\n      exports[exportKey] = WrappedOpenAI;\n    } catch {\n      // If direct assignment fails, override the property descriptor\n      Object.defineProperty(exports, exportKey, {\n        value: WrappedOpenAI,\n        writable: true,\n        configurable: true,\n        enumerable: true,\n      });\n    }\n\n    // Wrap the default export if it points to the original constructor\n    // Constructor replacement - handle read-only properties\n    // The OpenAI property might have only a getter, so use defineProperty\n    if (exports.default === Original) {\n      try {\n        exports.default = WrappedOpenAI;\n      } catch {\n        // If direct assignment fails, override the property descriptor\n        Object.defineProperty(exports, 'default', {\n          value: WrappedOpenAI,\n          writable: true,\n          configurable: true,\n          enumerable: true,\n        });\n      }\n    }\n    return exports;\n  }\n}\n","import type { IntegrationFn, OpenAiOptions } from '@sentry/core';\nimport { defineIntegration, OPENAI_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryOpenAiInstrumentation } from './instrumentation';\n\nexport const instrumentOpenAi = generateInstrumentOnce(\n  OPENAI_INTEGRATION_NAME,\n  options => new SentryOpenAiInstrumentation(options),\n);\n\nconst _openAiIntegration = ((options: OpenAiOptions = {}) => {\n  return {\n    name: OPENAI_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentOpenAi(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the OpenAI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments OpenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.openAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.openAIIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.openAIIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const openAIIntegration = defineIntegration(_openAiIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { AnthropicAiClient, AnthropicAiOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  instrumentAnthropicAiClient,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.19.2 <1.0.0'];\n\ntype AnthropicAiInstrumentationOptions = InstrumentationConfig & AnthropicAiOptions;\n\n/**\n * Represents the patched shape of the Anthropic AI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  Anthropic: abstract new (...args: unknown[]) => AnthropicAiClient;\n}\n\n/**\n * Sentry Anthropic AI instrumentation using OpenTelemetry.\n */\nexport class SentryAnthropicAiInstrumentation extends InstrumentationBase {\n  public constructor(config: AnthropicAiInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-anthropic-ai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@anthropic-ai/sdk',\n      supportedVersions,\n      this._patch.bind(this),\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the Anthropic AI client constructor.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    const Original = exports.Anthropic;\n\n    const config = this.getConfig();\n\n    const WrappedAnthropic = function (this: unknown, ...args: unknown[]) {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(ANTHROPIC_AI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as AnthropicAiClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentAnthropicAiClient(instance as AnthropicAiClient, config);\n    } as unknown as abstract new (...args: unknown[]) => AnthropicAiClient;\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedAnthropic, Original);\n    Object.setPrototypeOf(WrappedAnthropic.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedAnthropic, key, descriptor);\n        }\n      }\n    }\n\n    // Constructor replacement - handle read-only properties\n    // The Anthropic property might have only a getter, so use defineProperty\n    try {\n      exports.Anthropic = WrappedAnthropic;\n    } catch {\n      // If direct assignment fails, override the property descriptor\n      Object.defineProperty(exports, 'Anthropic', {\n        value: WrappedAnthropic,\n        writable: true,\n        configurable: true,\n        enumerable: true,\n      });\n    }\n\n    // Wrap the default export if it points to the original constructor\n    // Constructor replacement - handle read-only properties\n    // The Anthropic property might have only a getter, so use defineProperty\n    if (exports.default === Original) {\n      try {\n        exports.default = WrappedAnthropic;\n      } catch {\n        // If direct assignment fails, override the property descriptor\n        Object.defineProperty(exports, 'default', {\n          value: WrappedAnthropic,\n          writable: true,\n          configurable: true,\n          enumerable: true,\n        });\n      }\n    }\n    return exports;\n  }\n}\n","import type { AnthropicAiOptions, IntegrationFn } from '@sentry/core';\nimport { ANTHROPIC_AI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryAnthropicAiInstrumentation } from './instrumentation';\n\nexport const instrumentAnthropicAi = generateInstrumentOnce(\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  options => new SentryAnthropicAiInstrumentation(options),\n);\n\nconst _anthropicAIIntegration = ((options: AnthropicAiOptions = {}) => {\n  return {\n    name: ANTHROPIC_AI_INTEGRATION_NAME,\n    options,\n    setupOnce() {\n      instrumentAnthropicAi(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the Anthropic AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Anthropic AI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.anthropicAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.anthropicAIIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.anthropicAIIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const anthropicAIIntegration = defineIntegration(_anthropicAIIntegration);\n","import type { InstrumentationConfig, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { GoogleGenAIClient, GoogleGenAIOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  instrumentGoogleGenAIClient,\n  replaceExports,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.10.0 <2'];\n\n/**\n * Represents the patched shape of the Google GenAI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  GoogleGenAI?: unknown;\n}\n\ntype GoogleGenAIInstrumentationOptions = GoogleGenAIOptions & InstrumentationConfig;\n\n/**\n * Sentry Google GenAI instrumentation using OpenTelemetry.\n */\nexport class SentryGoogleGenAiInstrumentation extends InstrumentationBase {\n  public constructor(config: GoogleGenAIInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-google-genai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@google/genai',\n      supportedVersions,\n      exports => this._patch(exports),\n      exports => exports,\n      // In CJS, @google/genai re-exports from (dist/node/index.cjs) file.\n      // Patching only the root module sometimes misses the real implementation or\n      // gets overwritten when that file is loaded. We add a file-level patch so that\n      // _patch runs again on the concrete implementation\n      [\n        new InstrumentationNodeModuleFile(\n          '@google/genai/dist/node/index.cjs',\n          supportedVersions,\n          exports => this._patch(exports),\n          exports => exports,\n        ),\n      ],\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the Google GenAI client constructor.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    const Original = exports.GoogleGenAI;\n    const config = this.getConfig();\n\n    if (typeof Original !== 'function') {\n      return exports;\n    }\n\n    const WrappedGoogleGenAI = function (this: unknown, ...args: unknown[]): GoogleGenAIClient {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(GOOGLE_GENAI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as GoogleGenAIClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentGoogleGenAIClient(instance, config);\n    };\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedGoogleGenAI, Original);\n    Object.setPrototypeOf(WrappedGoogleGenAI.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedGoogleGenAI, key, descriptor);\n        }\n      }\n    }\n\n    // Replace google genai exports with the wrapped constructor\n    replaceExports(exports, 'GoogleGenAI', WrappedGoogleGenAI);\n\n    return exports;\n  }\n}\n","import type { GoogleGenAIOptions, IntegrationFn } from '@sentry/core';\nimport { defineIntegration, GOOGLE_GENAI_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryGoogleGenAiInstrumentation } from './instrumentation';\n\nexport const instrumentGoogleGenAI = generateInstrumentOnce(\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  options => new SentryGoogleGenAiInstrumentation(options),\n);\n\nconst _googleGenAIIntegration = ((options: GoogleGenAIOptions = {}) => {\n  return {\n    name: GOOGLE_GENAI_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentGoogleGenAI(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the Google Generative AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Google GenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.googleGenAiIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.googleGenAiIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.googleGenAiIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const googleGenAIIntegration = defineIntegration(_googleGenAIIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { LangChainOptions } from '@sentry/core';\nimport {\n  _INTERNAL_skipAiProviderWrapping,\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  createLangChainCallbackHandler,\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  OPENAI_INTEGRATION_NAME,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.1.0 <2.0.0'];\n\ntype LangChainInstrumentationOptions = InstrumentationConfig & LangChainOptions;\n\n/**\n * Represents the patched shape of LangChain provider package exports\n */\ninterface PatchedLangChainExports {\n  [key: string]: unknown;\n}\n\n/**\n * Augments a callback handler list with Sentry's handler if not already present\n */\nfunction augmentCallbackHandlers(handlers: unknown, sentryHandler: unknown): unknown {\n  // Handle null/undefined - return array with just our handler\n  if (!handlers) {\n    return [sentryHandler];\n  }\n\n  // If handlers is already an array\n  if (Array.isArray(handlers)) {\n    // Check if our handler is already in the list\n    if (handlers.includes(sentryHandler)) {\n      return handlers;\n    }\n    // Add our handler to the list\n    return [...handlers, sentryHandler];\n  }\n\n  // If it's a single handler object, convert to array\n  if (typeof handlers === 'object') {\n    return [handlers, sentryHandler];\n  }\n\n  // Unknown type - return original\n  return handlers;\n}\n\n/**\n * Wraps Runnable methods (invoke, stream, batch) to inject Sentry callbacks at request time\n * Uses a Proxy to intercept method calls and augment the options.callbacks\n */\nfunction wrapRunnableMethod(\n  originalMethod: (...args: unknown[]) => unknown,\n  sentryHandler: unknown,\n  _methodName: string,\n): (...args: unknown[]) => unknown {\n  return new Proxy(originalMethod, {\n    apply(target, thisArg, args: unknown[]): unknown {\n      // LangChain Runnable method signatures:\n      // invoke(input, options?) - options contains callbacks\n      // stream(input, options?) - options contains callbacks\n      // batch(inputs, options?) - options contains callbacks\n\n      // Options is typically the second argument\n      const optionsIndex = 1;\n      let options = args[optionsIndex] as Record | undefined;\n\n      // If options don't exist or aren't an object, create them\n      if (!options || typeof options !== 'object' || Array.isArray(options)) {\n        options = {};\n        args[optionsIndex] = options;\n      }\n\n      // Inject our callback handler into options.callbacks (request time callbacks)\n      const existingCallbacks = options.callbacks;\n      const augmentedCallbacks = augmentCallbackHandlers(existingCallbacks, sentryHandler);\n      options.callbacks = augmentedCallbacks;\n\n      // Call original method with augmented options\n      return Reflect.apply(target, thisArg, args);\n    },\n  }) as (...args: unknown[]) => unknown;\n}\n\n/**\n * Sentry LangChain instrumentation using OpenTelemetry.\n */\nexport class SentryLangChainInstrumentation extends InstrumentationBase {\n  public constructor(config: LangChainInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-langchain', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   * We patch the BaseChatModel class methods to inject callbacks\n   *\n   * We hook into provider packages (@langchain/anthropic, @langchain/openai, etc.)\n   * because @langchain/core is often bundled and not loaded as a separate module\n   */\n  public init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] {\n    const modules: InstrumentationModuleDefinition[] = [];\n\n    // Hook into common LangChain provider packages\n    const providerPackages = [\n      '@langchain/anthropic',\n      '@langchain/openai',\n      '@langchain/google-genai',\n      '@langchain/mistralai',\n      '@langchain/google-vertexai',\n      '@langchain/groq',\n    ];\n\n    for (const packageName of providerPackages) {\n      // In CJS, LangChain packages re-export from dist/index.cjs files.\n      // Patching only the root module sometimes misses the real implementation or\n      // gets overwritten when that file is loaded. We add a file-level patch so that\n      // _patch runs again on the concrete implementation\n      modules.push(\n        new InstrumentationNodeModuleDefinition(\n          packageName,\n          supportedVersions,\n          this._patch.bind(this),\n          exports => exports,\n          [\n            new InstrumentationNodeModuleFile(\n              `${packageName}/dist/index.cjs`,\n              supportedVersions,\n              this._patch.bind(this),\n              exports => exports,\n            ),\n          ],\n        ),\n      );\n    }\n\n    // Hook into main 'langchain' package to catch initChatModel (v1+)\n    modules.push(\n      new InstrumentationNodeModuleDefinition(\n        'langchain',\n        supportedVersions,\n        this._patch.bind(this),\n        exports => exports,\n        [\n          // To catch the CJS build that contains ConfigurableModel / initChatModel for v1\n          new InstrumentationNodeModuleFile(\n            'langchain/dist/chat_models/universal.cjs',\n            supportedVersions,\n            this._patch.bind(this),\n            exports => exports,\n          ),\n        ],\n      ),\n    );\n\n    return modules;\n  }\n\n  /**\n   * Core patch logic - patches chat model methods to inject Sentry callbacks\n   * This is called when a LangChain provider package is loaded\n   */\n  private _patch(exports: PatchedLangChainExports): PatchedLangChainExports | void {\n    // Skip AI provider wrapping now that LangChain is actually being used\n    // This prevents duplicate spans from Anthropic/OpenAI/GoogleGenAI standalone integrations\n    _INTERNAL_skipAiProviderWrapping([\n      OPENAI_INTEGRATION_NAME,\n      ANTHROPIC_AI_INTEGRATION_NAME,\n      GOOGLE_GENAI_INTEGRATION_NAME,\n    ]);\n\n    // Create a shared handler instance\n    const sentryHandler = createLangChainCallbackHandler(this.getConfig());\n\n    // Patch Runnable methods to inject callbacks at request time\n    // This directly manipulates options.callbacks that LangChain uses\n    this._patchRunnableMethods(exports, sentryHandler);\n\n    return exports;\n  }\n\n  /**\n   * Patches chat model methods (invoke, stream, batch) to inject Sentry callbacks\n   * Finds a chat model class from the provider package exports and patches its prototype methods\n   */\n  private _patchRunnableMethods(exports: PatchedLangChainExports, sentryHandler: unknown): void {\n    // Known chat model class names for each provider\n    const knownChatModelNames = [\n      'ChatAnthropic',\n      'ChatOpenAI',\n      'ChatGoogleGenerativeAI',\n      'ChatMistralAI',\n      'ChatVertexAI',\n      'ChatGroq',\n      'ConfigurableModel',\n    ];\n\n    const exportsToPatch = (exports.universal_exports ?? exports) as Record;\n\n    const chatModelClass = Object.values(exportsToPatch).find(exp => {\n      return typeof exp === 'function' && knownChatModelNames.includes(exp.name);\n    }) as { prototype: unknown; name: string } | undefined;\n\n    if (!chatModelClass) {\n      return;\n    }\n\n    // Patch directly on chatModelClass.prototype\n    const targetProto = chatModelClass.prototype as Record;\n\n    // Skip if already patched (both file-level and module-level hooks resolve to the same prototype)\n    if (targetProto.__sentry_patched__) {\n      return;\n    }\n    targetProto.__sentry_patched__ = true;\n\n    // Patch the methods (invoke, stream, batch)\n    // All chat model instances will inherit these patched methods\n    const methodsToPatch = ['invoke', 'stream', 'batch'] as const;\n\n    for (const methodName of methodsToPatch) {\n      const method = targetProto[methodName];\n      if (typeof method === 'function') {\n        targetProto[methodName] = wrapRunnableMethod(\n          method as (...args: unknown[]) => unknown,\n          sentryHandler,\n          methodName,\n        );\n      }\n    }\n  }\n}\n","import type { IntegrationFn, LangChainOptions } from '@sentry/core';\nimport { defineIntegration, LANGCHAIN_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangChainInstrumentation } from './instrumentation';\n\nexport const instrumentLangChain = generateInstrumentOnce(\n  LANGCHAIN_INTEGRATION_NAME,\n  options => new SentryLangChainInstrumentation(options),\n);\n\nconst _langChainIntegration = ((options: LangChainOptions = {}) => {\n  return {\n    name: LANGCHAIN_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLangChain(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for LangChain.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangChain runnable instances\n * to capture telemetry data by injecting Sentry callback handlers into all LangChain calls.\n *\n * **Important:** This integration automatically skips wrapping the OpenAI, Anthropic, and Google GenAI\n * providers to prevent duplicate spans when using LangChain with these AI providers.\n * LangChain handles the instrumentation for all underlying AI providers.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * Sentry.init({\n *   integrations: [Sentry.langChainIntegration()],\n *   sendDefaultPii: true, // Enable to record inputs/outputs\n * });\n *\n * // LangChain calls are automatically instrumented\n * const model = new ChatOpenAI();\n * await model.invoke(\"What is the capital of France?\");\n * ```\n *\n * ## Manual Callback Handler\n *\n * You can also manually add the Sentry callback handler alongside other callbacks:\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * const sentryHandler = Sentry.createLangChainCallbackHandler({\n *   recordInputs: true,\n *   recordOutputs: true\n * });\n *\n * const model = new ChatOpenAI();\n * await model.invoke(\n *   \"What is the capital of France?\",\n *   { callbacks: [sentryHandler, myOtherCallback] }\n * );\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages/prompts (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.langChainIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.langChainIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n * ## Supported Events\n *\n * The integration captures the following LangChain lifecycle events:\n * - LLM/Chat Model: start, end, error\n * - Chain: start, end, error\n * - Tool: start, end, error\n *\n */\nexport const langChainIntegration = defineIntegration(_langChainIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { LangGraphOptions } from '@sentry/core';\nimport { instrumentLangGraph, SDK_VERSION } from '@sentry/core';\n\nconst supportedVersions = ['>=0.0.0 <2.0.0'];\n\ntype LangGraphInstrumentationOptions = InstrumentationConfig & LangGraphOptions;\n\n/**\n * Represents the patched shape of the LangGraph module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  StateGraph?: abstract new (...args: unknown[]) => unknown;\n}\n\n/**\n * Sentry LangGraph instrumentation using OpenTelemetry.\n */\nexport class SentryLangGraphInstrumentation extends InstrumentationBase {\n  public constructor(config: LangGraphInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-langgraph', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@langchain/langgraph',\n      supportedVersions,\n      this._patch.bind(this),\n      exports => exports,\n      [\n        new InstrumentationNodeModuleFile(\n          /**\n           * In CJS, LangGraph packages re-export from dist/index.cjs files.\n           * Patching only the root module sometimes misses the real implementation or\n           * gets overwritten when that file is loaded. We add a file-level patch so that\n           * _patch runs again on the concrete implementation\n           */\n          '@langchain/langgraph/dist/index.cjs',\n          supportedVersions,\n          this._patch.bind(this),\n          exports => exports,\n        ),\n      ],\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the LangGraph module.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    // Patch StateGraph.compile to instrument both compile() and invoke()\n    if (exports.StateGraph && typeof exports.StateGraph === 'function') {\n      instrumentLangGraph(\n        exports.StateGraph.prototype as { compile: (...args: unknown[]) => unknown },\n        this.getConfig(),\n      );\n    }\n\n    return exports;\n  }\n}\n","import type { IntegrationFn, LangGraphOptions } from '@sentry/core';\nimport { defineIntegration, LANGGRAPH_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangGraphInstrumentation } from './instrumentation';\n\nexport const instrumentLangGraph = generateInstrumentOnce(\n  LANGGRAPH_INTEGRATION_NAME,\n  options => new SentryLangGraphInstrumentation(options),\n);\n\nconst _langGraphIntegration = ((options: LangGraphOptions = {}) => {\n  return {\n    name: LANGGRAPH_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLangGraph(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for LangGraph.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangGraph StateGraph and compiled graph instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.langGraphIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.langGraphIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.langGraphIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n * ## Captured Operations\n *\n * The integration captures the following LangGraph operations:\n * - **Agent Creation** (`StateGraph.compile()`) - Creates a `gen_ai.create_agent` span\n * - **Agent Invocation** (`CompiledGraph.invoke()`) - Creates a `gen_ai.invoke_agent` span\n *\n * ## Captured Data\n *\n * When `recordInputs` and `recordOutputs` are enabled, the integration captures:\n * - Input messages from the graph state\n * - Output messages and LLM responses\n * - Tool calls made during agent execution\n * - Agent and graph names\n * - Available tools configured in the graph\n *\n */\nexport const langGraphIntegration = defineIntegration(_langGraphIntegration);\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the LaunchDarkly integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const launchDarklyIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The launchDarklyIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'LaunchDarkly',\n  };\n});\n\n/**\n * This is a shim for the LaunchDarkly flag used handler.\n */\nexport function buildLaunchDarklyFlagUsedHandlerShim(): unknown {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'sentry-flag-auditor',\n    type: 'flag-used',\n    synchronous: true,\n    method: () => null,\n  };\n}\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the OpenFeature integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const openFeatureIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The openFeatureIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'OpenFeature',\n  };\n});\n\n/**\n * This is a shim for the OpenFeature integration hook.\n */\nexport class OpenFeatureIntegrationHookShim {\n  /**\n   *\n   */\n  public constructor() {\n    if (!isBrowser()) {\n      consoleSandbox(() => {\n        // eslint-disable-next-line no-console\n        console.warn('The OpenFeatureIntegrationHook can only be used in the browser.');\n      });\n    }\n  }\n\n  /**\n   *\n   */\n  public after(): void {\n    // No-op\n  }\n\n  /**\n   *\n   */\n  public error(): void {\n    // No-op\n  }\n}\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the Statsig integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const statsigIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The statsigIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'Statsig',\n  };\n});\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the Unleash integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const unleashIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The unleashIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'Unleash',\n  };\n});\n","import { growthbookIntegration as coreGrowthbookIntegration } from '@sentry/core';\n\n/**\n * Re-export the core GrowthBook integration for Node.js usage.\n * The core integration is runtime-agnostic and works in both browser and Node environments.\n */\nexport const growthbookIntegrationShim = coreGrowthbookIntegration;\n","import * as net from 'node:net';\nimport type { Span, Tracer } from '@opentelemetry/api';\nimport { context, diag, SpanKind, trace } from '@opentelemetry/api';\nimport {\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes } from '@sentry/core';\nimport type { FirebaseInstrumentation } from '../firebaseInstrumentation';\nimport type {\n  AddDocType,\n  CollectionReference,\n  DeleteDocType,\n  DocumentData,\n  DocumentReference,\n  FirebaseApp,\n  FirebaseInstrumentationConfig,\n  FirebaseOptions,\n  FirestoreSettings,\n  FirestoreSpanCreationHook,\n  GetDocsType,\n  PartialWithFieldValue,\n  QuerySnapshot,\n  SetDocType,\n  SetOptions,\n  WithFieldValue,\n} from '../types';\n\n// Inline minimal types used from `shimmer` to avoid importing shimmer's types directly.\n// We only need the shape for `wrap` and `unwrap` used in this file.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ShimmerWrap = (target: any, name: string, wrapper: (...args: any[]) => any) => void;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ShimmerUnwrap = (target: any, name: string) => void;\n\n/**\n *\n * @param tracer - Opentelemetry Tracer\n * @param firestoreSupportedVersions - supported version of firebase/firestore\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation wrap function\n */\nexport function patchFirestore(\n  tracer: Tracer,\n  firestoreSupportedVersions: string[],\n  wrap: ShimmerWrap,\n  unwrap: ShimmerUnwrap,\n  config: FirebaseInstrumentationConfig,\n): InstrumentationNodeModuleDefinition {\n  const defaultFirestoreSpanCreationHook: FirestoreSpanCreationHook = () => {};\n\n  let firestoreSpanCreationHook: FirestoreSpanCreationHook = defaultFirestoreSpanCreationHook;\n  const configFirestoreSpanCreationHook = config.firestoreSpanCreationHook;\n\n  if (typeof configFirestoreSpanCreationHook === 'function') {\n    firestoreSpanCreationHook = (span: Span) => {\n      safeExecuteInTheMiddle(\n        () => configFirestoreSpanCreationHook(span),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n\n  const moduleFirestoreCJS = new InstrumentationNodeModuleDefinition(\n    '@firebase/firestore',\n    firestoreSupportedVersions,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (moduleExports: any) => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n  );\n  const files: string[] = [\n    '@firebase/firestore/dist/lite/index.node.cjs.js',\n    '@firebase/firestore/dist/lite/index.node.mjs.js',\n    '@firebase/firestore/dist/lite/index.rn.esm2017.js',\n    '@firebase/firestore/dist/lite/index.cjs.js',\n  ];\n\n  for (const file of files) {\n    moduleFirestoreCJS.files.push(\n      new InstrumentationNodeModuleFile(\n        file,\n        firestoreSupportedVersions,\n        moduleExports => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n        moduleExports => unwrapMethods(moduleExports, unwrap),\n      ),\n    );\n  }\n\n  return moduleFirestoreCJS;\n}\n\nfunction wrapMethods(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  moduleExports: any,\n  wrap: ShimmerWrap,\n  unwrap: ShimmerUnwrap,\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  unwrapMethods(moduleExports, unwrap);\n\n  wrap(moduleExports, 'addDoc', patchAddDoc(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'getDocs', patchGetDocs(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'setDoc', patchSetDoc(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'deleteDoc', patchDeleteDoc(tracer, firestoreSpanCreationHook));\n\n  return moduleExports;\n}\n\nfunction unwrapMethods(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  moduleExports: any,\n  unwrap: ShimmerUnwrap,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  for (const method of ['addDoc', 'getDocs', 'setDoc', 'deleteDoc']) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    if (isWrapped(moduleExports[method])) {\n      unwrap(moduleExports, method);\n    }\n  }\n  return moduleExports;\n}\n\nfunction patchAddDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: AddDocType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: CollectionReference,\n  data: WithFieldValue,\n) => Promise> {\n  return function addDoc(original: AddDocType) {\n    return function (\n      reference: CollectionReference,\n      data: WithFieldValue,\n    ): Promise> {\n      const span = startDBSpan(tracer, 'addDoc', reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>>(span, () => {\n        return original(reference, data);\n      });\n    };\n  };\n}\n\nfunction patchDeleteDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: DeleteDocType,\n) => (this: FirebaseInstrumentation, reference: DocumentReference) => Promise {\n  return function deleteDoc(original: DeleteDocType) {\n    return function (reference: DocumentReference): Promise {\n      const span = startDBSpan(tracer, 'deleteDoc', reference.parent || reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>(span, () => {\n        return original(reference);\n      });\n    };\n  };\n}\n\nfunction patchGetDocs(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: GetDocsType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: CollectionReference,\n) => Promise> {\n  return function getDocs(original: GetDocsType) {\n    return function (\n      reference: CollectionReference,\n    ): Promise> {\n      const span = startDBSpan(tracer, 'getDocs', reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>>(span, () => {\n        return original(reference);\n      });\n    };\n  };\n}\n\nfunction patchSetDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: SetDocType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: DocumentReference,\n  data: WithFieldValue & PartialWithFieldValue,\n  options?: SetOptions,\n) => Promise {\n  return function setDoc(original: SetDocType) {\n    return function (\n      reference: DocumentReference,\n      data: WithFieldValue & PartialWithFieldValue,\n      options?: SetOptions,\n    ): Promise {\n      const span = startDBSpan(tracer, 'setDoc', reference.parent || reference);\n      firestoreSpanCreationHook(span);\n\n      return executeContextWithSpan>(span, () => {\n        return typeof options !== 'undefined' ? original(reference, data, options) : original(reference, data);\n      });\n    };\n  };\n}\n\nfunction executeContextWithSpan(span: Span, callback: () => T): T {\n  return context.with(trace.setSpan(context.active(), span), () => {\n    return safeExecuteInTheMiddle(\n      (): T => {\n        return callback();\n      },\n      err => {\n        if (err) {\n          span.recordException(err);\n        }\n        span.end();\n      },\n      true,\n    );\n  });\n}\n\nfunction startDBSpan(\n  tracer: Tracer,\n  spanName: string,\n  reference: CollectionReference | DocumentReference,\n): Span {\n  const span = tracer.startSpan(`${spanName} ${reference.path}`, { kind: SpanKind.CLIENT });\n  addAttributes(span, reference);\n  span.setAttribute(ATTR_DB_OPERATION_NAME, spanName);\n  return span;\n}\n\n/**\n * Gets the server address and port attributes from the Firestore settings.\n * It's best effort to extract the address and port from the settings, especially for IPv6.\n * @param span - The span to set attributes on.\n * @param settings - The Firestore settings containing host information.\n */\nexport function getPortAndAddress(settings: FirestoreSettings): {\n  address?: string;\n  port?: number;\n} {\n  let address: string | undefined;\n  let port: string | undefined;\n\n  if (typeof settings.host === 'string') {\n    if (settings.host.startsWith('[')) {\n      // IPv6 addresses can be enclosed in square brackets, e.g., [2001:db8::1]:8080\n      if (settings.host.endsWith(']')) {\n        // IPv6 with square brackets without port\n        address = settings.host.replace(/^\\[|\\]$/g, '');\n      } else if (settings.host.includes(']:')) {\n        // IPv6 with square brackets with port\n        const lastColonIndex = settings.host.lastIndexOf(':');\n        if (lastColonIndex !== -1) {\n          address = settings.host.slice(1, lastColonIndex).replace(/^\\[|\\]$/g, '');\n          port = settings.host.slice(lastColonIndex + 1);\n        }\n      }\n    } else {\n      // IPv4 or IPv6 without square brackets\n      // If it's an IPv6 address without square brackets, we assume it does not have a port.\n      if (net.isIPv6(settings.host)) {\n        address = settings.host;\n      }\n      // If it's an IPv4 address, we can extract the port if it exists.\n      else {\n        const lastColonIndex = settings.host.lastIndexOf(':');\n        if (lastColonIndex !== -1) {\n          address = settings.host.slice(0, lastColonIndex);\n          port = settings.host.slice(lastColonIndex + 1);\n        } else {\n          address = settings.host;\n        }\n      }\n    }\n  }\n  return {\n    address: address,\n    port: port ? parseInt(port, 10) : undefined,\n  };\n}\n\nfunction addAttributes(\n  span: Span,\n  reference: CollectionReference | DocumentReference,\n): void {\n  const firestoreApp: FirebaseApp = reference.firestore.app;\n  const firestoreOptions: FirebaseOptions = firestoreApp.options;\n  const json: { settings?: FirestoreSettings } = reference.firestore.toJSON() || {};\n  const settings: FirestoreSettings = json.settings || {};\n\n  const attributes: SpanAttributes = {\n    [ATTR_DB_COLLECTION_NAME]: reference.path,\n    [ATTR_DB_NAMESPACE]: firestoreApp.name,\n    [ATTR_DB_SYSTEM_NAME]: 'firebase.firestore',\n    'firebase.firestore.type': reference.type,\n    'firebase.firestore.options.projectId': firestoreOptions.projectId,\n    'firebase.firestore.options.appId': firestoreOptions.appId,\n    'firebase.firestore.options.messagingSenderId': firestoreOptions.messagingSenderId,\n    'firebase.firestore.options.storageBucket': firestoreOptions.storageBucket,\n  };\n\n  const { address, port } = getPortAndAddress(settings);\n\n  if (address) {\n    attributes[ATTR_SERVER_ADDRESS] = address;\n  }\n  if (port) {\n    attributes[ATTR_SERVER_PORT] = port;\n  }\n\n  span.setAttributes(attributes);\n}\n","import type { Span, Tracer } from '@opentelemetry/api';\nimport { context, diag, SpanKind, trace } from '@opentelemetry/api';\nimport type { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type { SpanAttributes } from '@sentry/core';\nimport type { FirebaseInstrumentation } from '../firebaseInstrumentation';\nimport type {\n  AvailableFirebaseFunctions,\n  FirebaseFunctions,\n  FirebaseInstrumentationConfig,\n  OverloadedParameters,\n  RequestHook,\n  ResponseHook,\n} from '../types';\n\n/**\n * Patches Firebase Functions v2 to add OpenTelemetry instrumentation\n * @param tracer - Opentelemetry Tracer\n * @param functionsSupportedVersions - supported versions of firebase-functions\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation unwrap function\n * @param config - Firebase instrumentation config\n */\nexport function patchFunctions(\n  tracer: Tracer,\n  functionsSupportedVersions: string[],\n  wrap: InstrumentationBase['_wrap'],\n  unwrap: InstrumentationBase['_unwrap'],\n  config: FirebaseInstrumentationConfig,\n): InstrumentationNodeModuleDefinition {\n  let requestHook: RequestHook = () => {};\n  let responseHook: ResponseHook = () => {};\n  const errorHook = config.functions?.errorHook;\n  const configRequestHook = config.functions?.requestHook;\n  const configResponseHook = config.functions?.responseHook;\n\n  if (typeof configResponseHook === 'function') {\n    responseHook = (span: Span, err: unknown) => {\n      safeExecuteInTheMiddle(\n        () => configResponseHook(span, err),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n  if (typeof configRequestHook === 'function') {\n    requestHook = (span: Span) => {\n      safeExecuteInTheMiddle(\n        () => configRequestHook(span),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n\n  const moduleFunctionsCJS = new InstrumentationNodeModuleDefinition('firebase-functions', functionsSupportedVersions);\n  const modulesToInstrument = [\n    { name: 'firebase-functions/lib/v2/providers/https.js', triggerType: 'function' },\n    { name: 'firebase-functions/lib/v2/providers/firestore.js', triggerType: 'firestore' },\n    { name: 'firebase-functions/lib/v2/providers/scheduler.js', triggerType: 'scheduler' },\n    { name: 'firebase-functions/lib/v2/storage.js', triggerType: 'storage' },\n  ] as const;\n\n  modulesToInstrument.forEach(({ name, triggerType }) => {\n    moduleFunctionsCJS.files.push(\n      new InstrumentationNodeModuleFile(\n        name,\n        functionsSupportedVersions,\n        moduleExports =>\n          wrapCommonFunctions(\n            moduleExports,\n            wrap,\n            unwrap,\n            tracer,\n            { requestHook, responseHook, errorHook },\n            triggerType,\n          ),\n        moduleExports => unwrapCommonFunctions(moduleExports, unwrap),\n      ),\n    );\n  });\n\n  return moduleFunctionsCJS;\n}\n\n/**\n * Patches Cloud Functions for Firebase (v2) to add OpenTelemetry instrumentation\n *\n * @param tracer - Opentelemetry Tracer\n * @param functionsConfig - Firebase instrumentation config\n * @param triggerType - Type of trigger\n * @returns A function that patches the function\n */\nexport function patchV2Functions(\n  tracer: Tracer,\n  functionsConfig: FirebaseInstrumentationConfig['functions'],\n  triggerType: string,\n): (original: T) => (...args: OverloadedParameters) => ReturnType {\n  return function v2FunctionsWrapper(original: T): (...args: OverloadedParameters) => ReturnType {\n    return function (this: FirebaseInstrumentation, ...args: OverloadedParameters): ReturnType {\n      const handler = typeof args[0] === 'function' ? args[0] : args[1];\n      const documentOrOptions = typeof args[0] === 'function' ? undefined : args[0];\n\n      if (!handler) {\n        return original.call(this, ...args);\n      }\n\n      const wrappedHandler = async function (this: unknown, ...handlerArgs: unknown[]): Promise {\n        const functionName = process.env.FUNCTION_TARGET || process.env.K_SERVICE || 'unknown';\n        const span = tracer.startSpan(`firebase.function.${triggerType}`, {\n          kind: SpanKind.SERVER,\n        });\n\n        const attributes: SpanAttributes = {\n          'faas.name': functionName,\n          'faas.trigger': triggerType,\n          'faas.provider': 'firebase',\n        };\n\n        if (process.env.GCLOUD_PROJECT) {\n          attributes['cloud.project_id'] = process.env.GCLOUD_PROJECT;\n        }\n\n        if (process.env.EVENTARC_CLOUD_EVENT_SOURCE) {\n          attributes['cloud.event_source'] = process.env.EVENTARC_CLOUD_EVENT_SOURCE;\n        }\n\n        span.setAttributes(attributes);\n        functionsConfig?.requestHook?.(span);\n\n        // Can be changed to safeExecuteInTheMiddleAsync once following is merged and released\n        // https://github.com/open-telemetry/opentelemetry-js/pull/6032\n        return context.with(trace.setSpan(context.active(), span), async () => {\n          let error: Error | undefined;\n          let result: T | undefined;\n\n          try {\n            result = await handler.apply(this, handlerArgs);\n          } catch (e) {\n            error = e as Error;\n          }\n\n          functionsConfig?.responseHook?.(span, error);\n\n          if (error) {\n            span.recordException(error);\n          }\n\n          span.end();\n\n          if (error) {\n            await functionsConfig?.errorHook?.(span, error);\n            throw error;\n          }\n\n          return result;\n        });\n      };\n\n      if (documentOrOptions) {\n        return original.call(this, documentOrOptions, wrappedHandler);\n      } else {\n        return original.call(this, wrappedHandler);\n      }\n    };\n  };\n}\n\nfunction wrapCommonFunctions(\n  moduleExports: AvailableFirebaseFunctions,\n  wrap: InstrumentationBase['_wrap'],\n  unwrap: InstrumentationBase['_unwrap'],\n  tracer: Tracer,\n  functionsConfig: FirebaseInstrumentationConfig['functions'],\n  triggerType: 'function' | 'firestore' | 'scheduler' | 'storage',\n): AvailableFirebaseFunctions {\n  unwrapCommonFunctions(moduleExports, unwrap);\n\n  switch (triggerType) {\n    case 'function':\n      wrap(moduleExports, 'onRequest', patchV2Functions(tracer, functionsConfig, 'http.request'));\n      wrap(moduleExports, 'onCall', patchV2Functions(tracer, functionsConfig, 'http.call'));\n      break;\n\n    case 'firestore':\n      wrap(moduleExports, 'onDocumentCreated', patchV2Functions(tracer, functionsConfig, 'firestore.document.created'));\n      wrap(moduleExports, 'onDocumentUpdated', patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'));\n      wrap(moduleExports, 'onDocumentDeleted', patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'));\n      wrap(moduleExports, 'onDocumentWritten', patchV2Functions(tracer, functionsConfig, 'firestore.document.written'));\n      wrap(\n        moduleExports,\n        'onDocumentCreatedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.created'),\n      );\n      wrap(\n        moduleExports,\n        'onDocumentUpdatedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'),\n      );\n\n      wrap(\n        moduleExports,\n        'onDocumentDeletedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'),\n      );\n\n      wrap(\n        moduleExports,\n        'onDocumentWrittenWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.written'),\n      );\n      break;\n\n    case 'scheduler':\n      wrap(moduleExports, 'onSchedule', patchV2Functions(tracer, functionsConfig, 'scheduler.scheduled'));\n      break;\n\n    case 'storage':\n      wrap(moduleExports, 'onObjectFinalized', patchV2Functions(tracer, functionsConfig, 'storage.object.finalized'));\n      wrap(moduleExports, 'onObjectArchived', patchV2Functions(tracer, functionsConfig, 'storage.object.archived'));\n      wrap(moduleExports, 'onObjectDeleted', patchV2Functions(tracer, functionsConfig, 'storage.object.deleted'));\n      wrap(\n        moduleExports,\n        'onObjectMetadataUpdated',\n        patchV2Functions(tracer, functionsConfig, 'storage.object.metadataUpdated'),\n      );\n      break;\n  }\n\n  return moduleExports;\n}\n\nfunction unwrapCommonFunctions(\n  moduleExports: AvailableFirebaseFunctions,\n  unwrap: InstrumentationBase['_unwrap'],\n): AvailableFirebaseFunctions {\n  const methods: (keyof AvailableFirebaseFunctions)[] = [\n    'onSchedule',\n    'onRequest',\n    'onCall',\n    'onObjectFinalized',\n    'onObjectArchived',\n    'onObjectDeleted',\n    'onObjectMetadataUpdated',\n    'onDocumentCreated',\n    'onDocumentUpdated',\n    'onDocumentDeleted',\n    'onDocumentWritten',\n    'onDocumentCreatedWithAuthContext',\n    'onDocumentUpdatedWithAuthContext',\n    'onDocumentDeletedWithAuthContext',\n    'onDocumentWrittenWithAuthContext',\n  ];\n\n  for (const method of methods) {\n    if (isWrapped(moduleExports[method])) {\n      unwrap(moduleExports, method);\n    }\n  }\n  return moduleExports;\n}\n","import { InstrumentationBase, type InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION } from '@sentry/core';\nimport { patchFirestore } from './patches/firestore';\nimport { patchFunctions } from './patches/functions';\nimport type { FirebaseInstrumentationConfig } from './types';\n\nconst DefaultFirebaseInstrumentationConfig: FirebaseInstrumentationConfig = {};\nconst firestoreSupportedVersions = ['>=3.0.0 <5']; // firebase 9+\nconst functionsSupportedVersions = ['>=6.0.0 <7']; // firebase-functions v2\n\n/**\n * Instrumentation for Firebase services, specifically Firestore.\n */\nexport class FirebaseInstrumentation extends InstrumentationBase {\n  public constructor(config: FirebaseInstrumentationConfig = DefaultFirebaseInstrumentationConfig) {\n    super('@sentry/instrumentation-firebase', SDK_VERSION, config);\n  }\n\n  /**\n   * sets config\n   * @param config\n   */\n  public override setConfig(config: FirebaseInstrumentationConfig = {}): void {\n    super.setConfig({ ...DefaultFirebaseInstrumentationConfig, ...config });\n  }\n\n  /**\n   *\n   * @protected\n   */\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  protected init(): InstrumentationNodeModuleDefinition | InstrumentationNodeModuleDefinition[] | void {\n    const modules: InstrumentationNodeModuleDefinition[] = [];\n\n    modules.push(patchFirestore(this.tracer, firestoreSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n    modules.push(patchFunctions(this.tracer, functionsSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n\n    return modules;\n  }\n}\n","import type { IntegrationFn } from '@sentry/core';\nimport { captureException, defineIntegration, flush, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { FirebaseInstrumentation, type FirebaseInstrumentationConfig } from './otel';\n\nconst INTEGRATION_NAME = 'Firebase';\n\nconst config: FirebaseInstrumentationConfig = {\n  firestoreSpanCreationHook: span => {\n    addOriginToSpan(span, 'auto.firebase.otel.firestore');\n\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'db.query');\n  },\n  functions: {\n    requestHook: span => {\n      addOriginToSpan(span, 'auto.firebase.otel.functions');\n\n      span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.request');\n    },\n    errorHook: async (_, error) => {\n      if (error) {\n        captureException(error, {\n          mechanism: {\n            type: 'auto.firebase.otel.functions',\n            handled: false,\n          },\n        });\n        await flush(2000);\n      }\n    },\n  },\n};\n\nexport const instrumentFirebase = generateInstrumentOnce(INTEGRATION_NAME, () => new FirebaseInstrumentation(config));\n\nconst _firebaseIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentFirebase();\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const firebaseIntegration = defineIntegration(_firebaseIntegration);\n","import type { Integration } from '@sentry/core';\nimport { instrumentOtelHttp, instrumentSentryHttp } from '../http';\nimport { amqplibIntegration, instrumentAmqplib } from './amqplib';\nimport { anthropicAIIntegration, instrumentAnthropicAi } from './anthropic-ai';\nimport { connectIntegration, instrumentConnect } from './connect';\nimport { expressIntegration, instrumentExpress } from './express';\nimport { fastifyIntegration, instrumentFastify, instrumentFastifyV3 } from './fastify';\nimport { firebaseIntegration, instrumentFirebase } from './firebase';\nimport { genericPoolIntegration, instrumentGenericPool } from './genericPool';\nimport { googleGenAIIntegration, instrumentGoogleGenAI } from './google-genai';\nimport { graphqlIntegration, instrumentGraphql } from './graphql';\nimport { hapiIntegration, instrumentHapi } from './hapi';\nimport { honoIntegration, instrumentHono } from './hono';\nimport { instrumentKafka, kafkaIntegration } from './kafka';\nimport { instrumentKoa, koaIntegration } from './koa';\nimport { instrumentLangChain, langChainIntegration } from './langchain';\nimport { instrumentLangGraph, langGraphIntegration } from './langgraph';\nimport { instrumentLruMemoizer, lruMemoizerIntegration } from './lrumemoizer';\nimport { instrumentMongo, mongoIntegration } from './mongo';\nimport { instrumentMongoose, mongooseIntegration } from './mongoose';\nimport { instrumentMysql, mysqlIntegration } from './mysql';\nimport { instrumentMysql2, mysql2Integration } from './mysql2';\nimport { instrumentOpenAi, openAIIntegration } from './openai';\nimport { instrumentPostgres, postgresIntegration } from './postgres';\nimport { instrumentPostgresJs, postgresJsIntegration } from './postgresjs';\nimport { prismaIntegration } from './prisma';\nimport { instrumentRedis, redisIntegration } from './redis';\nimport { instrumentTedious, tediousIntegration } from './tedious';\nimport { instrumentVercelAi, vercelAIIntegration } from './vercelai';\n\n/**\n * With OTEL, all performance integrations will be added, as OTEL only initializes them when the patched package is actually required.\n */\nexport function getAutoPerformanceIntegrations(): Integration[] {\n  return [\n    expressIntegration(),\n    fastifyIntegration(),\n    graphqlIntegration(),\n    honoIntegration(),\n    mongoIntegration(),\n    mongooseIntegration(),\n    mysqlIntegration(),\n    mysql2Integration(),\n    redisIntegration(),\n    postgresIntegration(),\n    prismaIntegration(),\n    hapiIntegration(),\n    koaIntegration(),\n    connectIntegration(),\n    tediousIntegration(),\n    genericPoolIntegration(),\n    kafkaIntegration(),\n    amqplibIntegration(),\n    lruMemoizerIntegration(),\n    // AI providers\n    // LangChain must come first to disable AI provider integrations before they instrument\n    langChainIntegration(),\n    langGraphIntegration(),\n    vercelAIIntegration(),\n    openAIIntegration(),\n    anthropicAIIntegration(),\n    googleGenAIIntegration(),\n    postgresJsIntegration(),\n    firebaseIntegration(),\n  ];\n}\n\n/**\n * Get a list of methods to instrument OTEL, when preload instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getOpenTelemetryInstrumentationToPreload(): (((options?: any) => void) & { id: string })[] {\n  return [\n    instrumentSentryHttp,\n    instrumentOtelHttp,\n    instrumentExpress,\n    instrumentConnect,\n    instrumentFastify,\n    instrumentFastifyV3,\n    instrumentHapi,\n    instrumentHono,\n    instrumentKafka,\n    instrumentKoa,\n    instrumentLruMemoizer,\n    instrumentMongo,\n    instrumentMongoose,\n    instrumentMysql,\n    instrumentMysql2,\n    instrumentPostgres,\n    instrumentHapi,\n    instrumentGraphql,\n    instrumentRedis,\n    instrumentTedious,\n    instrumentGenericPool,\n    instrumentAmqplib,\n    instrumentLangChain,\n    instrumentVercelAi,\n    instrumentOpenAi,\n    instrumentPostgresJs,\n    instrumentFirebase,\n    instrumentAnthropicAi,\n    instrumentGoogleGenAI,\n    instrumentLangGraph,\n  ];\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport type { Resource } from './Resource';\nimport { emptyResource, resourceFromDetectedResource } from './ResourceImpl';\nimport type { ResourceDetectionConfig } from './config';\n\n/**\n * Runs all resource detectors and returns the results merged into a single Resource.\n *\n * @param config Configuration for resource detection\n */\nexport const detectResources = (\n  config: ResourceDetectionConfig = {}\n): Resource => {\n  const resources: Resource[] = (config.detectors || []).map(d => {\n    try {\n      const resource = resourceFromDetectedResource(d.detect(config));\n      diag.debug(`${d.constructor.name} found resource.`, resource);\n      return resource;\n    } catch (e) {\n      diag.debug(`${d.constructor.name} failed: ${e.message}`);\n      return emptyResource();\n    }\n  });\n\n  return resources.reduce(\n    (acc, resource) => acc.merge(resource),\n    emptyResource()\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport type { ResourceDetectionConfig } from '../config';\nimport type { DetectedResource, ResourceDetector } from '../types';\nimport { getStringFromEnv } from '@opentelemetry/core';\n\n/**\n * EnvDetector can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetector implements ResourceDetector {\n  // Type, attribute keys, and attribute values should not exceed 256 characters.\n  private readonly _MAX_LENGTH = 255;\n\n  // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n  private readonly _COMMA_SEPARATOR = ',';\n\n  // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n  private readonly _LABEL_KEY_VALUE_SPLITTER = '=';\n\n  /**\n   * Returns a {@link Resource} populated with attributes from the\n   * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n   * function to conform to the Detector interface.\n   *\n   * @param config The resource detection config\n   */\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {};\n\n    const rawAttributes = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n    const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n    if (rawAttributes) {\n      try {\n        const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n        Object.assign(attributes, parsedAttributes);\n      } catch (e) {\n        diag.debug(`EnvDetector failed: ${e instanceof Error ? e.message : e}`);\n      }\n    }\n\n    if (serviceName) {\n      attributes[ATTR_SERVICE_NAME] = serviceName;\n    }\n\n    return { attributes };\n  }\n\n  /**\n   * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment\n   * variable.\n   *\n   * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes in the\n   * format \"key1=value1,key2=value2\". The ',' and '=' characters in keys\n   * and values MUST be percent-encoded. Other characters MAY be percent-encoded.\n   *\n   * Per the spec, on any error (e.g., decoding failure), the entire environment\n   * variable value is discarded.\n   *\n   * @param rawEnvAttributes The resource attributes as a comma-separated list\n   * of key/value pairs.\n   * @returns The parsed resource attributes.\n   * @throws Error if parsing fails (caller handles by discarding all attributes)\n   */\n  private _parseResourceAttributes(rawEnvAttributes?: string): Attributes {\n    if (!rawEnvAttributes) return {};\n\n    const attributes: Attributes = {};\n    const rawAttributes: string[] = rawEnvAttributes.split(\n      this._COMMA_SEPARATOR\n    );\n\n    for (const rawAttribute of rawAttributes) {\n      const keyValuePair: string[] = rawAttribute.split(\n        this._LABEL_KEY_VALUE_SPLITTER\n      );\n\n      // Per spec: ',' and '=' MUST be percent-encoded in keys and values.\n      // If we get != 2 parts, there's an unencoded '=' which is an error.\n      if (keyValuePair.length !== 2) {\n        throw new Error(\n          `Invalid format for OTEL_RESOURCE_ATTRIBUTES: \"${rawAttribute}\". ` +\n            `Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`\n        );\n      }\n\n      const [rawKey, rawValue] = keyValuePair;\n      const key = rawKey.trim();\n      const value = rawValue.trim();\n\n      if (key.length === 0) {\n        throw new Error(\n          `Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in \"${rawAttribute}\".`\n        );\n      }\n\n      let decodedKey: string;\n      let decodedValue: string;\n      try {\n        decodedKey = decodeURIComponent(key);\n        decodedValue = decodeURIComponent(value);\n      } catch (e) {\n        throw new Error(\n          `Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry \"${rawAttribute}\": ${e instanceof Error ? e.message : e}`\n        );\n      }\n\n      if (decodedKey.length > this._MAX_LENGTH) {\n        throw new Error(\n          `Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: \"${decodedKey}\".`\n        );\n      }\n\n      if (decodedValue.length > this._MAX_LENGTH) {\n        throw new Error(\n          `Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key \"${decodedKey}\".`\n        );\n      }\n\n      attributes[decodedKey] = decodedValue;\n    }\n\n    return attributes;\n  }\n}\n\nexport const envDetector = new EnvDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @example 111111111111\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * @example us-east-1c\n *\n * @note Availability zones are called \"zones\" on Alibaba Cloud and Google Cloud.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\n/**\n * Name of the cloud provider.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\n/**\n * The geographical region the resource is running.\n *\n * @example us-central1\n * @example us-east-1\n *\n * @note Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/global-infrastructure/geographies/), [Google Cloud regions](https://cloud.google.com/about/locations), or [Tencent Cloud regions](https://www.tencentcloud.com/document/product/213/6091).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated.\n *\n * @example a3bf90e006b2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\n/**\n * Name of the image the container was built on.\n *\n * @example gcr.io/opentelemetry/operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`.\n *\n * @example [\"v1.27.1\", \"3.5.7-0\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\n/**\n * Container name used by container runtime.\n *\n * @example opentelemetry-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system.\n *\n * @example fdbf79e8af94cb7f9e8df36789187052\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\n/**\n * VM image ID or host OS image ID. For Cloud, this value is from the provider.\n *\n * @example ami-07b06b442921831e5\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @example infra-ami-eks-worker-node-7d4ec78312\n * @example CentOS-8-x86_64-1905\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\n/**\n * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 0.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @example opentelemetry-test\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @example n1-standard-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\n/**\n * The name of the cluster.\n *\n * @example opentelemetry-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\n/**\n * The name of the Deployment.\n *\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\n/**\n * The name of the namespace that the pod is running in.\n *\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\n/**\n * The name of the Pod.\n *\n * @example opentelemetry-pod-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\n/**\n * The operating system type.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\n/**\n * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 14.2.1\n * @example 18.04.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @example cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @example [\"cmd/otecol\", \"--config=config.yaml\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\n/**\n * The name of the process executable. On Linux based systems, this **SHOULD** be set to the base name of the target of `/proc/[pid]/exe`. On Windows, this **SHOULD** be set to the base name of `GetProcessImageFileNameW`.\n *\n * @example otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @example /usr/bin/cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\n/**\n * The username of the user that owns the process.\n *\n * @example root\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\n/**\n * Process identifier (PID).\n *\n * @example 1234\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @example \"Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION =\n  'process.runtime.description' as const;\n\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @example \"14.0.2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\n/**\n * The name of the web engine.\n *\n * @example WildFly\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\n/**\n * The version of the web engine.\n *\n * @example 21.0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as process from 'process';\n\nlet getMachineIdImpl: undefined | (() => Promise);\n\nexport async function getMachineId(): Promise {\n  if (!getMachineIdImpl) {\n    switch (process.platform) {\n      case 'darwin':\n        getMachineIdImpl = (await import('./getMachineId-darwin.js'))\n          .getMachineId;\n        break;\n      case 'linux':\n        getMachineIdImpl = (await import('./getMachineId-linux.js'))\n          .getMachineId;\n        break;\n      case 'freebsd':\n        getMachineIdImpl = (await import('./getMachineId-bsd.js')).getMachineId;\n        break;\n      case 'win32':\n        getMachineIdImpl = (await import('./getMachineId-win.js')).getMachineId;\n        break;\n      default:\n        getMachineIdImpl = (await import('./getMachineId-unsupported.js'))\n          .getMachineId;\n        break;\n    }\n  }\n\n  return getMachineIdImpl();\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nexport const normalizeArch = (nodeArchString: string): string => {\n  // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec:\n  // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md\n  switch (nodeArchString) {\n    case 'arm':\n      return 'arm32';\n    case 'ppc':\n      return 'ppc32';\n    case 'x64':\n      return 'amd64';\n    default:\n      return nodeArchString;\n  }\n};\n\nexport const normalizeType = (nodePlatform: string): string => {\n  // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec:\n  // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md\n  switch (nodePlatform) {\n    case 'sunos':\n      return 'solaris';\n    case 'win32':\n      return 'windows';\n    default:\n      return nodePlatform;\n  }\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ATTR_HOST_ARCH, ATTR_HOST_ID, ATTR_HOST_NAME } from '../../../semconv';\nimport { arch, hostname } from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type {\n  DetectedResource,\n  DetectedResourceAttributes,\n  ResourceDetector,\n} from '../../../types';\nimport { getMachineId } from './machine-id/getMachineId';\nimport { normalizeArch } from './utils';\n\n/**\n * HostDetector detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: DetectedResourceAttributes = {\n      [ATTR_HOST_NAME]: hostname(),\n      [ATTR_HOST_ARCH]: normalizeArch(arch()),\n      [ATTR_HOST_ID]: getMachineId(),\n    };\n\n    return { attributes };\n  }\n}\n\nexport const hostDetector = new HostDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { ResourceDetectionConfig } from './config';\nexport { detectResources } from './detect-resources';\nexport {\n  envDetector,\n  hostDetector,\n  osDetector,\n  processDetector,\n  serviceInstanceIdDetector,\n} from './detectors';\nexport type { Resource } from './Resource';\nexport {\n  resourceFromAttributes,\n  defaultResource,\n  emptyResource,\n} from './ResourceImpl';\nexport { defaultServiceName } from './default-service-name';\nexport type {\n  ResourceDetector,\n  DetectedResource,\n  DetectedResourceAttributes,\n  RawResourceAttribute,\n  MaybePromise,\n} from './types';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { ATTR_OS_TYPE, ATTR_OS_VERSION } from '../../../semconv';\nimport { platform, release } from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\nimport { normalizeType } from './utils';\n\n/**\n * OSDetector detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {\n      [ATTR_OS_TYPE]: normalizeType(platform()),\n      [ATTR_OS_VERSION]: release(),\n    };\n    return { attributes };\n  }\n}\n\nexport const osDetector = new OSDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport {\n  ATTR_PROCESS_COMMAND,\n  ATTR_PROCESS_COMMAND_ARGS,\n  ATTR_PROCESS_EXECUTABLE_NAME,\n  ATTR_PROCESS_EXECUTABLE_PATH,\n  ATTR_PROCESS_OWNER,\n  ATTR_PROCESS_PID,\n  ATTR_PROCESS_RUNTIME_DESCRIPTION,\n  ATTR_PROCESS_RUNTIME_NAME,\n  ATTR_PROCESS_RUNTIME_VERSION,\n} from '../../../semconv';\nimport * as os from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ProcessDetector will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {\n      [ATTR_PROCESS_PID]: process.pid,\n      [ATTR_PROCESS_EXECUTABLE_NAME]: process.title,\n      [ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath,\n      [ATTR_PROCESS_COMMAND_ARGS]: [\n        process.argv[0],\n        ...process.execArgv,\n        ...process.argv.slice(1),\n      ],\n      [ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node,\n      [ATTR_PROCESS_RUNTIME_NAME]: 'nodejs',\n      [ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n    };\n\n    if (process.argv.length > 1) {\n      attributes[ATTR_PROCESS_COMMAND] = process.argv[1];\n    }\n\n    try {\n      const userInfo = os.userInfo();\n      attributes[ATTR_PROCESS_OWNER] = userInfo.username;\n    } catch (e) {\n      diag.debug(`error obtaining process owner: ${e}`);\n    }\n\n    return { attributes };\n  }\n}\n\nexport const processDetector = new ProcessDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ATTR_SERVICE_INSTANCE_ID } from '../../../semconv';\nimport { randomUUID } from 'crypto';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ServiceInstanceIdDetector detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    return {\n      attributes: {\n        [ATTR_SERVICE_INSTANCE_ID]: randomUUID(),\n      },\n    };\n  }\n}\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = new ServiceInstanceIdDetector();\n","import { context, propagation, trace } from '@opentelemetry/api';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport {\n  ATTR_SERVICE_NAME,\n  ATTR_SERVICE_VERSION,\n  SEMRESATTRS_SERVICE_NAMESPACE,\n} from '@opentelemetry/semantic-conventions';\nimport { debug as coreDebug, SDK_VERSION } from '@sentry/core';\nimport {\n  initializeEsmLoader,\n  type NodeClient,\n  SentryContextManager,\n  setupOpenTelemetryLogger,\n} from '@sentry/node-core';\nimport {\n  type AsyncLocalStorageLookup,\n  SentryPropagator,\n  SentrySampler,\n  SentrySpanProcessor,\n} from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing';\n\n// About 277h - this must fit into new Array(len)!\nconst MAX_MAX_SPAN_WAIT_DURATION = 1_000_000;\n\ninterface AdditionalOpenTelemetryOptions {\n  /** Additional SpanProcessor instances that should be used. */\n  spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Initialize OpenTelemetry for Node.\n */\nexport function initOpenTelemetry(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): void {\n  if (client.getOptions().debug) {\n    setupOpenTelemetryLogger();\n  }\n\n  const [provider, asyncLocalStorageLookup] = setupOtel(client, options);\n  client.traceProvider = provider;\n  client.asyncLocalStorageLookup = asyncLocalStorageLookup;\n}\n\ninterface NodePreloadOptions {\n  debug?: boolean;\n  integrations?: string[];\n}\n\n/**\n * Preload OpenTelemetry for Node.\n * This can be used to preload instrumentation early, but set up Sentry later.\n * By preloading the OTEL instrumentation wrapping still happens early enough that everything works.\n */\nexport function preloadOpenTelemetry(options: NodePreloadOptions = {}): void {\n  const { debug } = options;\n\n  if (debug) {\n    coreDebug.enable();\n  }\n\n  initializeEsmLoader();\n\n  // These are all integrations that we need to pre-load to ensure they are set up before any other code runs\n  getPreloadMethods(options.integrations).forEach(fn => {\n    fn();\n\n    if (debug) {\n      coreDebug.log(`[Sentry] Preloaded ${fn.id} instrumentation`);\n    }\n  });\n}\n\nfunction getPreloadMethods(integrationNames?: string[]): ((() => void) & { id: string })[] {\n  const instruments = getOpenTelemetryInstrumentationToPreload();\n\n  if (!integrationNames) {\n    return instruments;\n  }\n\n  // We match exact matches of instrumentation, but also match prefixes, e.g. \"Fastify.v5\" will match \"Fastify\"\n  return instruments.filter(instrumentation => {\n    const id = instrumentation.id;\n    return integrationNames.some(integrationName => id === integrationName || id.startsWith(`${integrationName}.`));\n  });\n}\n\n/** Just exported for tests. */\nexport function setupOtel(\n  client: NodeClient,\n  options: AdditionalOpenTelemetryOptions = {},\n): [BasicTracerProvider, AsyncLocalStorageLookup] {\n  // Create and configure NodeTracerProvider\n  const provider = new BasicTracerProvider({\n    sampler: new SentrySampler(client),\n    resource: defaultResource().merge(\n      resourceFromAttributes({\n        [ATTR_SERVICE_NAME]: 'node',\n        // eslint-disable-next-line deprecation/deprecation\n        [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry',\n        [ATTR_SERVICE_VERSION]: SDK_VERSION,\n      }),\n    ),\n    forceFlushTimeoutMillis: 500,\n    spanProcessors: [\n      new SentrySpanProcessor({\n        timeout: _clampSpanProcessorTimeout(client.getOptions().maxSpanWaitDuration),\n      }),\n      ...(options.spanProcessors || []),\n    ],\n  });\n\n  // Register as globals\n  trace.setGlobalTracerProvider(provider);\n  propagation.setGlobalPropagator(new SentryPropagator());\n\n  const ctxManager = new SentryContextManager();\n  context.setGlobalContextManager(ctxManager);\n\n  return [provider, ctxManager.getAsyncLocalStorageLookup()];\n}\n\n/** Just exported for tests. */\nexport function _clampSpanProcessorTimeout(maxSpanWaitDuration: number | undefined): number | undefined {\n  if (maxSpanWaitDuration == null) {\n    return undefined;\n  }\n\n  // We guard for a max. value here, because we create an array with this length\n  // So if this value is too large, this would fail\n  if (maxSpanWaitDuration > MAX_MAX_SPAN_WAIT_DURATION) {\n    DEBUG_BUILD &&\n      coreDebug.warn(`\\`maxSpanWaitDuration\\` is too high, using the maximum value of ${MAX_MAX_SPAN_WAIT_DURATION}`);\n    return MAX_MAX_SPAN_WAIT_DURATION;\n  } else if (maxSpanWaitDuration <= 0 || Number.isNaN(maxSpanWaitDuration)) {\n    DEBUG_BUILD && coreDebug.warn('`maxSpanWaitDuration` must be a positive number, using default value instead.');\n    return undefined;\n  }\n\n  return maxSpanWaitDuration;\n}\n","import type { Integration, Options } from '@sentry/core';\nimport { applySdkMetadata, hasSpansEnabled } from '@sentry/core';\nimport type { NodeClient } from '@sentry/node-core';\nimport {\n  getDefaultIntegrations as getNodeCoreDefaultIntegrations,\n  init as initNodeCore,\n  validateOpenTelemetrySetup,\n} from '@sentry/node-core';\nimport { httpIntegration } from '../integrations/http';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch';\nimport { getAutoPerformanceIntegrations } from '../integrations/tracing';\nimport type { NodeOptions } from '../types';\nimport { initOpenTelemetry } from './initOtel';\n\n/**\n * Get default integrations, excluding performance.\n */\nexport function getDefaultIntegrationsWithoutPerformance(): Integration[] {\n  const nodeCoreIntegrations = getNodeCoreDefaultIntegrations();\n\n  // Filter out the node-core HTTP and NodeFetch integrations and replace them with Node SDK's composite versions\n  return nodeCoreIntegrations\n    .filter(integration => integration.name !== 'Http' && integration.name !== 'NodeFetch')\n    .concat(httpIntegration(), nativeNodeFetchIntegration());\n}\n\n/** Get the default integrations for the Node SDK. */\nexport function getDefaultIntegrations(options: Options): Integration[] {\n  return [\n    ...getDefaultIntegrationsWithoutPerformance(),\n    // We only add performance integrations if tracing is enabled\n    // Note that this means that without tracing enabled, e.g. `expressIntegration()` will not be added\n    // This means that generally request isolation will work (because that is done by httpIntegration)\n    // But `transactionName` will not be set automatically\n    ...(hasSpansEnabled(options) ? getAutoPerformanceIntegrations() : []),\n  ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nexport function init(options: NodeOptions | undefined = {}): NodeClient | undefined {\n  return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Internal initialization function.\n */\nfunction _init(\n  options: NodeOptions | undefined = {},\n  getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClient | undefined {\n  applySdkMetadata(options, 'node');\n\n  const client = initNodeCore({\n    ...options,\n    // Only use Node SDK defaults if none provided\n    defaultIntegrations: options.defaultIntegrations ?? getDefaultIntegrationsImpl(options),\n  });\n\n  // Add Node SDK specific OpenTelemetry setup\n  if (client && !options.skipOpenTelemetrySetup) {\n    initOpenTelemetry(client, {\n      spanProcessors: options.openTelemetrySpanProcessors,\n    });\n    validateOpenTelemetrySetup();\n  }\n\n  return client;\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nexport function initWithoutDefaultIntegrations(options: NodeOptions | undefined = {}): NodeClient | undefined {\n  return _init(options, () => []);\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport type { RouteInfo, RouteManifest } from './types';\n\nexport type CreateRouteManifestOptions = {\n  // For starters we only support app router\n  appDirPath?: string;\n  /**\n   * Whether to include route groups (e.g., (auth-layout)) in the final route paths.\n   * By default, route groups are stripped from paths following Next.js convention.\n   */\n  includeRouteGroups?: boolean;\n  /**\n   * Base path for the application, if any. This will be prefixed to all routes.\n   */\n  basePath?: string;\n};\n\nlet manifestCache: RouteManifest | null = null;\nlet lastAppDirPath: string | null = null;\nlet lastIncludeRouteGroups: boolean | undefined = undefined;\n\nfunction isPageFile(filename: string): boolean {\n  return filename === 'page.tsx' || filename === 'page.jsx' || filename === 'page.ts' || filename === 'page.js';\n}\n\nfunction isRouteGroup(name: string): boolean {\n  return name.startsWith('(') && name.endsWith(')');\n}\n\nfunction normalizeRouteGroupPath(routePath: string): string {\n  // Remove route group segments from the path\n  // Using positive lookahead with (?=[^)\\/]*\\)) to avoid polynomial matching\n  return routePath.replace(/\\/\\((?=[^)/]*\\))[^)/]+\\)/g, '');\n}\n\nfunction getDynamicRouteSegment(name: string): string {\n  if (name.startsWith('[[...') && name.endsWith(']]')) {\n    // Optional catchall: [[...param]]\n    const paramName = name.slice(5, -2); // Remove [[... and ]]\n    return `:${paramName}*?`; // Mark with ? as optional\n  } else if (name.startsWith('[...') && name.endsWith(']')) {\n    // Required catchall: [...param]\n    const paramName = name.slice(4, -1); // Remove [... and ]\n    return `:${paramName}*`;\n  }\n  // Regular dynamic: [param]\n  return `:${name.slice(1, -1)}`;\n}\n\nfunction buildRegexForDynamicRoute(routePath: string): {\n  regex: string;\n  paramNames: string[];\n  hasOptionalPrefix: boolean;\n} {\n  const segments = routePath.split('/').filter(Boolean);\n  const regexSegments: string[] = [];\n  const paramNames: string[] = [];\n  let hasOptionalCatchall = false;\n\n  for (const segment of segments) {\n    if (segment.startsWith(':')) {\n      const paramName = segment.substring(1);\n\n      if (paramName.endsWith('*?')) {\n        // Optional catchall: matches zero or more segments\n        const cleanParamName = paramName.slice(0, -2);\n        paramNames.push(cleanParamName);\n        // Handling this special case in pattern construction below\n        hasOptionalCatchall = true;\n      } else if (paramName.endsWith('*')) {\n        // Required catchall: matches one or more segments\n        const cleanParamName = paramName.slice(0, -1);\n        paramNames.push(cleanParamName);\n        regexSegments.push('(.+)');\n      } else {\n        // Regular dynamic segment\n        paramNames.push(paramName);\n        regexSegments.push('([^/]+)');\n      }\n    } else {\n      // Static segment - escape regex special characters including route group parentheses\n      regexSegments.push(segment.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n    }\n  }\n\n  let pattern: string;\n  if (hasOptionalCatchall) {\n    if (regexSegments.length === 0) {\n      // If the optional catchall happens at the root, accept any path starting\n      // with a slash. Need capturing group for parameter extraction.\n      pattern = '^/(.*)$';\n    } else {\n      // For optional catchall, make the trailing slash and segments optional\n      // This allows matching both /catchall and /catchall/anything\n      const staticParts = regexSegments.join('/');\n      pattern = `^/${staticParts}(?:/(.*))?$`;\n    }\n  } else {\n    pattern = `^/${regexSegments.join('/')}$`;\n  }\n\n  return { regex: pattern, paramNames, hasOptionalPrefix: hasOptionalPrefix(paramNames) };\n}\n\n/**\n * Detect if the first parameter is a common i18n prefix segment\n * Common patterns: locale, lang, language\n */\nfunction hasOptionalPrefix(paramNames: string[]): boolean {\n  const firstParam = paramNames[0];\n  if (firstParam === undefined) {\n    return false;\n  }\n\n  return firstParam === 'locale' || firstParam === 'lang' || firstParam === 'language';\n}\n\n/**\n * Check if a page file exports generateStaticParams (ISR/SSG indicator)\n */\nfunction checkForGenerateStaticParams(pageFilePath: string): boolean {\n  try {\n    const content = fs.readFileSync(pageFilePath, 'utf8');\n    // check for generateStaticParams export\n    // the regex covers `export function generateStaticParams`, `export async function generateStaticParams`, `export const generateStaticParams`\n    return /export\\s+(async\\s+)?function\\s+generateStaticParams|export\\s+const\\s+generateStaticParams/.test(content);\n  } catch {\n    return false;\n  }\n}\n\nfunction scanAppDirectory(dir: string, basePath: string = '', includeRouteGroups: boolean = false): RouteManifest {\n  const dynamicRoutes: RouteInfo[] = [];\n  const staticRoutes: RouteInfo[] = [];\n  const isrRoutes: string[] = [];\n\n  try {\n    const entries = fs.readdirSync(dir, { withFileTypes: true });\n    const pageFile = entries.find(entry => isPageFile(entry.name));\n\n    if (pageFile) {\n      // Conditionally normalize the path based on includeRouteGroups option\n      const routePath = includeRouteGroups ? basePath || '/' : normalizeRouteGroupPath(basePath || '/');\n      const isDynamic = routePath.includes(':');\n\n      // Check if this page has generateStaticParams (ISR/SSG indicator)\n      const pageFilePath = path.join(dir, pageFile.name);\n      const hasGenerateStaticParams = checkForGenerateStaticParams(pageFilePath);\n\n      if (hasGenerateStaticParams) {\n        isrRoutes.push(routePath);\n      }\n\n      if (isDynamic) {\n        const { regex, paramNames, hasOptionalPrefix } = buildRegexForDynamicRoute(routePath);\n        dynamicRoutes.push({\n          path: routePath,\n          regex,\n          paramNames,\n          hasOptionalPrefix,\n        });\n      } else {\n        staticRoutes.push({\n          path: routePath,\n        });\n      }\n    }\n\n    for (const entry of entries) {\n      if (entry.isDirectory()) {\n        const fullPath = path.join(dir, entry.name);\n        let routeSegment: string;\n\n        const isDynamic = entry.name.startsWith('[') && entry.name.endsWith(']');\n        const isRouteGroupDir = isRouteGroup(entry.name);\n\n        if (isRouteGroupDir) {\n          if (includeRouteGroups) {\n            routeSegment = entry.name;\n          } else {\n            routeSegment = '';\n          }\n        } else if (isDynamic) {\n          routeSegment = getDynamicRouteSegment(entry.name);\n        } else {\n          routeSegment = entry.name;\n        }\n\n        const newBasePath = routeSegment ? `${basePath}/${routeSegment}` : basePath;\n        const subRoutes = scanAppDirectory(fullPath, newBasePath, includeRouteGroups);\n\n        dynamicRoutes.push(...subRoutes.dynamicRoutes);\n        staticRoutes.push(...subRoutes.staticRoutes);\n        isrRoutes.push(...subRoutes.isrRoutes);\n      }\n    }\n  } catch (error) {\n    // eslint-disable-next-line no-console\n    console.warn('Error building route manifest:', error);\n  }\n\n  return { dynamicRoutes, staticRoutes, isrRoutes };\n}\n\n/**\n * Returns a route manifest for the given app directory\n */\nexport function createRouteManifest(options?: CreateRouteManifestOptions): RouteManifest {\n  let targetDir: string | undefined;\n\n  if (options?.appDirPath) {\n    targetDir = options.appDirPath;\n  } else {\n    const projectDir = process.cwd();\n    const maybeAppDirPath = path.join(projectDir, 'app');\n    const maybeSrcAppDirPath = path.join(projectDir, 'src', 'app');\n\n    if (fs.existsSync(maybeAppDirPath) && fs.lstatSync(maybeAppDirPath).isDirectory()) {\n      targetDir = maybeAppDirPath;\n    } else if (fs.existsSync(maybeSrcAppDirPath) && fs.lstatSync(maybeSrcAppDirPath).isDirectory()) {\n      targetDir = maybeSrcAppDirPath;\n    }\n  }\n\n  if (!targetDir) {\n    return {\n      isrRoutes: [],\n      dynamicRoutes: [],\n      staticRoutes: [],\n    };\n  }\n\n  // Check if we can use cached version\n  if (manifestCache && lastAppDirPath === targetDir && lastIncludeRouteGroups === options?.includeRouteGroups) {\n    return manifestCache;\n  }\n\n  const { dynamicRoutes, staticRoutes, isrRoutes } = scanAppDirectory(\n    targetDir,\n    options?.basePath,\n    options?.includeRouteGroups,\n  );\n\n  const manifest: RouteManifest = {\n    dynamicRoutes,\n    staticRoutes,\n    isrRoutes,\n  };\n\n  // set cache\n  manifestCache = manifest;\n  lastAppDirPath = targetDir;\n  lastIncludeRouteGroups = options?.includeRouteGroups;\n\n  return manifest;\n}\n","import { _INTERNAL_safeMathRandom } from '@sentry/core';\nimport type { NextConfigObject } from '../types';\n\n/**\n * Generates a random tunnel route path that's less likely to be blocked by ad-blockers\n */\nfunction generateRandomTunnelRoute(): string {\n  // Generate a random 8-character alphanumeric string\n  const randomString = _INTERNAL_safeMathRandom().toString(36).substring(2, 10);\n  return `/${randomString}`;\n}\n\n/**\n * Resolves the tunnel route based on the user's configuration and the environment.\n * @param tunnelRoute - The user-provided tunnel route option\n */\nexport function resolveTunnelRoute(tunnelRoute: string | true): string {\n  if (process.env.__SENTRY_TUNNEL_ROUTE__) {\n    // Reuse cached value from previous build (server/client)\n    return process.env.__SENTRY_TUNNEL_ROUTE__;\n  }\n\n  const resolvedTunnelRoute = typeof tunnelRoute === 'string' ? tunnelRoute : generateRandomTunnelRoute();\n\n  // Cache for subsequent builds (only during build time)\n  // Turbopack runs the config twice, so we need a shared context to avoid generating a new tunnel route for each build.\n  // env works well here\n  // https://linear.app/getsentry/issue/JS-549/adblock-plus-blocking-requests-to-sentry-and-monitoring-tunnel\n  if (resolvedTunnelRoute) {\n    process.env.__SENTRY_TUNNEL_ROUTE__ = resolvedTunnelRoute;\n  }\n\n  return resolvedTunnelRoute;\n}\n\n/**\n * Injects rewrite rules into the Next.js config provided by the user to tunnel\n * requests from the `tunnelPath` to Sentry.\n *\n * See https://nextjs.org/docs/api-reference/next.config.js/rewrites.\n */\nexport function setUpTunnelRewriteRules(userNextConfig: NextConfigObject, tunnelPath: string): void {\n  const originalRewrites = userNextConfig.rewrites;\n  // Allow overriding the tunnel destination for E2E tests via environment variable\n  const destinationOverride = process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE;\n\n  // Make sure destinations are statically defined at build time\n  const destination = destinationOverride || 'https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0';\n  const destinationWithRegion =\n    destinationOverride || 'https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0';\n\n  // This function doesn't take any arguments at the time of writing but we future-proof\n  // here in case Next.js ever decides to pass some\n  userNextConfig.rewrites = async (...args: unknown[]) => {\n    const tunnelRouteRewrite = {\n      // Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]`\n      // Nextjs will automatically convert `source` into a regex for us\n      source: `${tunnelPath}(/?)`,\n      has: [\n        {\n          type: 'query',\n          key: 'o', // short for orgId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'p', // short for projectId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n      ],\n      destination,\n    };\n\n    const tunnelRouteRewriteWithRegion = {\n      // Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]?r=[region]`\n      // Nextjs will automatically convert `source` into a regex for us\n      source: `${tunnelPath}(/?)`,\n      has: [\n        {\n          type: 'query',\n          key: 'o', // short for orgId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'p', // short for projectId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'r', // short for region - we keep it short so matching is harder for ad-blockers\n          value: '(?[a-z]{2})',\n        },\n      ],\n      destination: destinationWithRegion,\n    };\n\n    // Order of these is important, they get applied first to last.\n    const newRewrites = [tunnelRouteRewriteWithRegion, tunnelRouteRewrite];\n\n    if (typeof originalRewrites !== 'function') {\n      return newRewrites;\n    }\n\n    // @ts-expect-error Expected 0 arguments but got 1 - this is from the future-proofing mentioned above, so we don't care about it\n    const originalRewritesResult = await originalRewrites(...args);\n\n    if (Array.isArray(originalRewritesResult)) {\n      return [...newRewrites, ...originalRewritesResult];\n    } else {\n      return {\n        ...originalRewritesResult,\n        beforeFiles: [...newRewrites, ...(originalRewritesResult.beforeFiles || [])],\n      };\n    }\n  };\n}\n","import { debug, isMatchingPattern, parseSemver } from '@sentry/core';\nimport { getSentryRelease } from '@sentry/node';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport { createRouteManifest } from '../manifest/createRouteManifest';\nimport type { RouteManifest } from '../manifest/types';\nimport type { NextConfigObject, SentryBuildOptions } from '../types';\nimport { requiresInstrumentationHook } from '../util';\nimport { getGitRevision, getInstrumentationClientFileContents } from './buildTime';\nimport { resolveTunnelRoute, setUpTunnelRewriteRules } from './tunnel';\n\nlet showedExportModeTunnelWarning = false;\nlet showedExperimentalBuildModeWarning = false;\n\n/**\n * Resolves the Sentry release name to use for build-time behavior.\n *\n * Note: if `release.create === false`, we avoid falling back to git to preserve build determinism.\n */\nexport function resolveReleaseName(userSentryOptions: SentryBuildOptions): string | undefined {\n  const shouldCreateRelease = userSentryOptions.release?.create !== false;\n  return shouldCreateRelease\n    ? (userSentryOptions.release?.name ?? getSentryRelease() ?? getGitRevision())\n    : userSentryOptions.release?.name;\n}\n\n/**\n * Applies tunnel-route rewrites, if configured.\n *\n * Note: this mutates `userSentryOptions` (to store the resolved tunnel route) and `incomingUserNextConfigObject`.\n */\nexport function maybeSetUpTunnelRouteRewriteRules(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): void {\n  if (!userSentryOptions.tunnelRoute) {\n    return;\n  }\n\n  if (incomingUserNextConfigObject.output === 'export') {\n    if (!showedExportModeTunnelWarning) {\n      showedExportModeTunnelWarning = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option',\n      );\n    }\n    return;\n  }\n\n  // Update the global options object to use the resolved value everywhere\n  const resolvedTunnelRoute = resolveTunnelRoute(userSentryOptions.tunnelRoute);\n  userSentryOptions.tunnelRoute = resolvedTunnelRoute || undefined;\n\n  setUpTunnelRewriteRules(incomingUserNextConfigObject, resolvedTunnelRoute);\n}\n\n/**\n * Handles Next's experimental build-mode warning/early return behavior.\n *\n * @returns `true` if Sentry config processing should be skipped for the current process invocation\n */\nexport function shouldReturnEarlyInExperimentalBuildMode(): boolean {\n  if (!process.argv.includes('--experimental-build-mode')) {\n    return false;\n  }\n\n  if (!showedExperimentalBuildModeWarning) {\n    showedExperimentalBuildModeWarning = true;\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode',\n    );\n  }\n\n  // Next.js v15.3.0-canary.1 splits the experimental build into two phases:\n  // 1. compile: Code compilation\n  // 2. generate: Environment variable inlining and prerendering (We don't instrument this phase, we inline in the compile phase)\n  //\n  // We assume a single \"full\" build and reruns Webpack instrumentation in both phases.\n  // During the generate step it collides with Next.js's inliner\n  // producing malformed JS and build failures.\n  // We skip Sentry processing during generate to avoid this issue.\n  return process.argv.includes('generate');\n}\n\n/**\n * Creates the route manifest used for client-side route name normalization, unless disabled.\n */\nexport function maybeCreateRouteManifest(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): RouteManifest | undefined {\n  // Handle deprecated option with warning\n  // eslint-disable-next-line deprecation/deprecation\n  if (userSentryOptions.disableManifestInjection) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead.',\n    );\n  }\n\n  // If explicitly disabled, skip\n  if (userSentryOptions.routeManifestInjection === false) {\n    return undefined;\n  }\n\n  // Still check the deprecated option if the new option is not set\n  // eslint-disable-next-line deprecation/deprecation\n  if (userSentryOptions.routeManifestInjection === undefined && userSentryOptions.disableManifestInjection) {\n    return undefined;\n  }\n\n  const manifest = createRouteManifest({\n    basePath: incomingUserNextConfigObject.basePath,\n  });\n\n  // Apply route exclusion filter if configured\n  const excludeFilter = userSentryOptions.routeManifestInjection?.exclude;\n  return filterRouteManifest(manifest, excludeFilter);\n}\n\ntype ExcludeFilter = ((route: string) => boolean) | (string | RegExp)[] | undefined;\n\n/**\n * Filters routes from the manifest based on the exclude filter.\n * (Exported only for testing)\n */\nexport function filterRouteManifest(manifest: RouteManifest, excludeFilter: ExcludeFilter): RouteManifest {\n  if (!excludeFilter) {\n    return manifest;\n  }\n\n  const shouldExclude = (route: string): boolean => {\n    if (typeof excludeFilter === 'function') {\n      return excludeFilter(route);\n    }\n\n    return excludeFilter.some(pattern => isMatchingPattern(route, pattern));\n  };\n\n  return {\n    staticRoutes: manifest.staticRoutes.filter(r => !shouldExclude(r.path)),\n    dynamicRoutes: manifest.dynamicRoutes.filter(r => !shouldExclude(r.path)),\n    isrRoutes: manifest.isrRoutes.filter(r => !shouldExclude(r)),\n  };\n}\n\n/**\n * Adds `experimental.clientTraceMetadata` for supported Next.js versions.\n */\nexport function maybeSetClientTraceMetadataOption(\n  incomingUserNextConfigObject: NextConfigObject,\n  nextJsVersion: string | undefined,\n): void {\n  // Add the `clientTraceMetadata` experimental option based on Next.js version. The option got introduced in Next.js version 15.0.0 (actually 14.3.0-canary.64).\n  // Adding the option on lower versions will cause Next.js to print nasty warnings we wouldn't confront our users with.\n  if (nextJsVersion) {\n    const { major, minor } = parseSemver(nextJsVersion);\n    if (major !== undefined && minor !== undefined && (major >= 15 || (major === 14 && minor >= 3))) {\n      incomingUserNextConfigObject.experimental = incomingUserNextConfigObject.experimental || {};\n      incomingUserNextConfigObject.experimental.clientTraceMetadata = [\n        'baggage',\n        'sentry-trace',\n        ...(incomingUserNextConfigObject.experimental?.clientTraceMetadata || []),\n      ];\n    }\n  } else {\n    // eslint-disable-next-line no-console\n    console.log(\n      \"[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.\",\n    );\n  }\n}\n\n/**\n * Ensures Next.js' `experimental.instrumentationHook` is set for versions which require it.\n */\nexport function maybeSetInstrumentationHookOption(\n  incomingUserNextConfigObject: NextConfigObject,\n  nextJsVersion: string | undefined,\n): void {\n  // From Next.js version (15.0.0-canary.124) onwards, Next.js does no longer require the `experimental.instrumentationHook` option and will\n  // print a warning when it is set, so we need to conditionally provide it for lower versions.\n  if (nextJsVersion && requiresInstrumentationHook(nextJsVersion)) {\n    if (incomingUserNextConfigObject.experimental?.instrumentationHook === false) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`.',\n      );\n    }\n    incomingUserNextConfigObject.experimental = {\n      instrumentationHook: true,\n      ...incomingUserNextConfigObject.experimental,\n    };\n    return;\n  }\n\n  if (nextJsVersion) {\n    return;\n  }\n\n  // If we cannot detect a Next.js version for whatever reason, the sensible default is to set the `experimental.instrumentationHook`, even though it may create a warning.\n  if (incomingUserNextConfigObject.experimental && 'instrumentationHook' in incomingUserNextConfigObject.experimental) {\n    if (incomingUserNextConfigObject.experimental.instrumentationHook === false) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`.',\n      );\n    }\n  } else {\n    // eslint-disable-next-line no-console\n    console.log(\n      \"[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`.\",\n    );\n    incomingUserNextConfigObject.experimental = {\n      instrumentationHook: true,\n      ...incomingUserNextConfigObject.experimental,\n    };\n  }\n}\n\n/**\n * Warns if the project has an `instrumentation-client` file but doesn't export `onRouterTransitionStart`.\n */\nexport function warnIfMissingOnRouterTransitionStartHook(userSentryOptions: SentryBuildOptions): void {\n  // We wanna check whether the user added a `onRouterTransitionStart` handler to their client instrumentation file.\n  const instrumentationClientFileContents = getInstrumentationClientFileContents();\n  if (\n    instrumentationClientFileContents !== undefined &&\n    !instrumentationClientFileContents.includes('onRouterTransitionStart') &&\n    !userSentryOptions.suppressOnRouterTransitionStartWarning\n  ) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.',\n    );\n  }\n}\n\n/**\n * Parses the major Next.js version number from a semver string.\n */\nexport function getNextMajor(nextJsVersion: string | undefined): number | undefined {\n  if (!nextJsVersion) {\n    return undefined;\n  }\n\n  const { major } = parseSemver(nextJsVersion);\n  return major;\n}\n\n/**\n * Reads the Vercel crons configuration from vercel.json.\n * Returns undefined if vercel.json doesn't exist or doesn't contain crons.\n */\nfunction readVercelCronsConfig(): VercelCronsConfig {\n  try {\n    const vercelJsonPath = path.join(process.cwd(), 'vercel.json');\n    const vercelJsonContents = fs.readFileSync(vercelJsonPath, 'utf8');\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    const cronsConfig = JSON.parse(vercelJsonContents).crons as VercelCronsConfig;\n\n    if (cronsConfig && Array.isArray(cronsConfig) && cronsConfig.length > 0) {\n      return cronsConfig;\n    }\n    return undefined;\n  } catch (e) {\n    if ((e as { code: string }).code === 'ENOENT') {\n      return undefined;\n    }\n    debug.error('[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation', e);\n    return undefined;\n  }\n}\n\n/** Strategy for Vercel cron monitoring instrumentation */\nexport type VercelCronsStrategy = 'spans' | 'wrapper';\n\nexport type VercelCronsConfigResult = {\n  /** The crons configuration from vercel.json, if available */\n  config: VercelCronsConfig;\n  /**\n   * The instrumentation strategy to use:\n   * - `spans`: New span-based approach (works for both App Router and Pages Router)\n   * - `wrapper`: Old wrapper-based approach (Pages Router only)\n   * - `undefined`: No cron monitoring enabled\n   */\n  strategy: VercelCronsStrategy | undefined;\n};\n\n/**\n * Reads and returns the Vercel crons configuration from vercel.json along with\n * information about which instrumentation approach to use.\n *\n * - `_experimental.vercelCronsMonitoring`: New span-based approach (works for both App Router and Pages Router)\n * - `automaticVercelMonitors`: Old wrapper-based approach (Pages Router only)\n *\n * If both are enabled, the new approach is preferred and a warning is logged.\n */\nexport function maybeGetVercelCronsConfig(userSentryOptions: SentryBuildOptions): VercelCronsConfigResult {\n  const result: VercelCronsConfigResult = { config: undefined, strategy: undefined };\n\n  if (!process.env.VERCEL) {\n    return result;\n  }\n\n  const experimentalEnabled = userSentryOptions._experimental?.vercelCronsMonitoring === true;\n  const legacyEnabled = userSentryOptions.webpack?.automaticVercelMonitors === true;\n\n  if (!experimentalEnabled && !legacyEnabled) {\n    return result;\n  }\n\n  const config = readVercelCronsConfig();\n  if (!config) {\n    return result;\n  }\n\n  result.config = config;\n\n  if (experimentalEnabled && legacyEnabled) {\n    debug.warn(\n      \"[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. \" +\n        \"Using the new span-based approach from '_experimental.vercelCronsMonitoring'. \" +\n        \"You can remove 'webpack.automaticVercelMonitors' from your config.\",\n    );\n    result.strategy = 'spans';\n  } else if (experimentalEnabled) {\n    debug.log(\n      '[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation.',\n    );\n    result.strategy = 'spans';\n  } else {\n    debug.log(\n      \"[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config.\",\n    );\n    result.strategy = 'wrapper';\n  }\n\n  return result;\n}\n","import type { NextConfigObject, SentryBuildOptions } from '../types';\nimport { getNextjsVersion } from '../util';\nimport { setUpBuildTimeVariables } from './buildTime';\nimport { migrateDeprecatedWebpackOptions } from './deprecatedWebpackOptions';\nimport {\n  getBundlerInfo,\n  getServerExternalPackagesPatch,\n  getTurbopackPatch,\n  getWebpackPatch,\n  maybeConstructTurbopackConfig,\n  maybeEnableTurbopackSourcemaps,\n  maybeSetUpRunAfterProductionCompileHook,\n  maybeWarnAboutUnsupportedRunAfterProductionCompileHook,\n  maybeWarnAboutUnsupportedTurbopack,\n  resolveUseRunAfterProductionCompileHookOption,\n} from './getFinalConfigObjectBundlerUtils';\nimport {\n  getNextMajor,\n  maybeCreateRouteManifest,\n  maybeGetVercelCronsConfig,\n  maybeSetClientTraceMetadataOption,\n  maybeSetInstrumentationHookOption,\n  maybeSetUpTunnelRouteRewriteRules,\n  resolveReleaseName,\n  shouldReturnEarlyInExperimentalBuildMode,\n  warnIfMissingOnRouterTransitionStartHook,\n} from './getFinalConfigObjectUtils';\n\n/**\n * Materializes the final Next.js config object with Sentry's build-time integrations applied.\n *\n * Note: this mutates both `incomingUserNextConfigObject` and `userSentryOptions` (to apply defaults/migrations).\n */\nexport function getFinalConfigObject(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): NextConfigObject {\n  migrateDeprecatedWebpackOptions(userSentryOptions);\n  const releaseName = resolveReleaseName(userSentryOptions);\n\n  maybeSetUpTunnelRouteRewriteRules(incomingUserNextConfigObject, userSentryOptions);\n\n  if (shouldReturnEarlyInExperimentalBuildMode()) {\n    return incomingUserNextConfigObject;\n  }\n\n  const routeManifest = maybeCreateRouteManifest(incomingUserNextConfigObject, userSentryOptions);\n  const vercelCronsConfigResult = maybeGetVercelCronsConfig(userSentryOptions);\n  setUpBuildTimeVariables(incomingUserNextConfigObject, userSentryOptions, releaseName);\n\n  const nextJsVersion = getNextjsVersion();\n  const nextMajor = getNextMajor(nextJsVersion);\n\n  maybeSetClientTraceMetadataOption(incomingUserNextConfigObject, nextJsVersion);\n  maybeSetInstrumentationHookOption(incomingUserNextConfigObject, nextJsVersion);\n  warnIfMissingOnRouterTransitionStartHook(userSentryOptions);\n\n  const bundlerInfo = getBundlerInfo(nextJsVersion);\n  maybeWarnAboutUnsupportedTurbopack(nextJsVersion, bundlerInfo);\n  maybeWarnAboutUnsupportedRunAfterProductionCompileHook(nextJsVersion, userSentryOptions, bundlerInfo);\n\n  const turboPackConfig = maybeConstructTurbopackConfig(\n    incomingUserNextConfigObject,\n    userSentryOptions,\n    routeManifest,\n    nextJsVersion,\n    bundlerInfo,\n    vercelCronsConfigResult,\n  );\n\n  const shouldUseRunAfterProductionCompileHook = resolveUseRunAfterProductionCompileHookOption(\n    userSentryOptions,\n    bundlerInfo,\n  );\n\n  maybeSetUpRunAfterProductionCompileHook({\n    incomingUserNextConfigObject,\n    userSentryOptions,\n    releaseName,\n    nextJsVersion,\n    bundlerInfo,\n    turboPackConfig,\n    shouldUseRunAfterProductionCompileHook,\n  });\n\n  maybeEnableTurbopackSourcemaps(incomingUserNextConfigObject, userSentryOptions, bundlerInfo);\n\n  return {\n    ...incomingUserNextConfigObject,\n    ...getServerExternalPackagesPatch(incomingUserNextConfigObject, nextMajor),\n    ...getWebpackPatch({\n      incomingUserNextConfigObject,\n      userSentryOptions,\n      releaseName,\n      routeManifest,\n      nextJsVersion,\n      shouldUseRunAfterProductionCompileHook,\n      bundlerInfo,\n      vercelCronsConfigResult,\n    }),\n    ...getTurbopackPatch(bundlerInfo, turboPackConfig),\n  };\n}\n","import { isThenable } from '@sentry/core';\nimport type { ExportedNextConfig as NextConfig, NextConfigFunction, SentryBuildOptions } from '../types';\nimport { DEFAULT_SERVER_EXTERNAL_PACKAGES } from './constants';\nimport { getFinalConfigObject } from './getFinalConfigObject';\n\nexport { DEFAULT_SERVER_EXTERNAL_PACKAGES };\n\n/**\n * Wraps a user's Next.js config and applies Sentry build-time behavior (instrumentation + sourcemap upload).\n *\n * Supports both object and function Next.js configs.\n *\n * @param nextConfig - The user's exported Next.js config\n * @param sentryBuildOptions - Options to configure Sentry's build-time behavior\n * @returns The wrapped Next.js config (same shape as the input)\n */\nexport function withSentryConfig(nextConfig?: C, sentryBuildOptions: SentryBuildOptions = {}): C {\n  const castNextConfig = (nextConfig as NextConfig) || {};\n  if (typeof castNextConfig === 'function') {\n    return function (this: unknown, ...webpackConfigFunctionArgs: unknown[]): ReturnType {\n      const maybePromiseNextConfig: ReturnType = castNextConfig.apply(\n        this,\n        webpackConfigFunctionArgs,\n      );\n\n      if (isThenable(maybePromiseNextConfig)) {\n        return maybePromiseNextConfig.then(promiseResultNextConfig => {\n          return getFinalConfigObject(promiseResultNextConfig, sentryBuildOptions);\n        });\n      }\n\n      return getFinalConfigObject(maybePromiseNextConfig, sentryBuildOptions);\n    } as C;\n  } else {\n    return getFinalConfigObject(castNextConfig, sentryBuildOptions) as C;\n  }\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","var UNKNOWN_FUNCTION = '';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction parse(stackString) {\n  var lines = stackString.split('\\n');\n  return lines.reduce(function (stack, line) {\n    var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n    if (parseResult) {\n      stack.push(parseResult);\n    }\n\n    return stack;\n  }, []);\n}\nvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n  var parts = chromeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n  var submatch = chromeEvalRe.exec(parts[2]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line/column number\n    parts[2] = submatch[1]; // url\n\n    parts[3] = submatch[2]; // line\n\n    parts[4] = submatch[3]; // column\n  }\n\n  return {\n    file: !isNative ? parts[2] : null,\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: isNative ? [parts[2]] : [],\n    lineNumber: parts[3] ? +parts[3] : null,\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n  var parts = winjsRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n  var parts = geckoRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n  var submatch = geckoEvalRe.exec(parts[3]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line number\n    parts[3] = submatch[1];\n    parts[4] = submatch[2];\n    parts[5] = null; // no column when eval\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: parts[2] ? parts[2].split(',') : [],\n    lineNumber: parts[4] ? +parts[4] : null,\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n  var parts = javaScriptCoreRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[4],\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n  var parts = nodeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nexport { parse };\n","import type { Event, EventHint } from '@sentry/core';\nimport { debug, GLOBAL_OBJ, parseSemver, suppressTracing } from '@sentry/core';\nimport type { StackFrame } from 'stacktrace-parser';\nimport * as stackTraceParser from 'stacktrace-parser';\nimport { DEBUG_BUILD } from './debug-build';\n\ntype OriginalStackFrameResponse = {\n  originalStackFrame: StackFrame;\n  originalCodeFrame: string | null;\n  sourcePackage?: string;\n};\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryBasePath?: string;\n  _sentryNextJsVersion: string | undefined;\n};\n\n/**\n * Constructs the base URL for the Next.js dev server, including the port and base path.\n * Returns only the base path when running in the browser (client-side) for relative URLs.\n */\nfunction getDevServerBaseUrl(): string {\n  let basePath = process.env._sentryBasePath ?? globalWithInjectedValues._sentryBasePath ?? '';\n\n  // Prefix the basepath with a slash if it doesn't have one\n  if (basePath !== '' && !basePath.match(/^\\//)) {\n    basePath = `/${basePath}`;\n  }\n\n  // eslint-disable-next-line no-restricted-globals\n  if (typeof window !== 'undefined') {\n    return basePath;\n  }\n\n  const devServerPort = process.env.PORT || '3000';\n  return `http://localhost:${devServerPort}${basePath}`;\n}\n\n/**\n * Fetches a URL with a 3-second timeout using AbortController.\n */\nasync function fetchWithTimeout(url: string, options: RequestInit = {}): Promise {\n  const controller = new AbortController();\n  const timer = setTimeout(() => controller.abort(), 3000);\n\n  return suppressTracing(() =>\n    fetch(url, {\n      ...options,\n      signal: controller.signal,\n    }).finally(() => {\n      clearTimeout(timer);\n    }),\n  );\n}\n\n/**\n * Event processor that will symbolicate errors by using the webpack/nextjs dev server that is used to show stack traces\n * in the dev overlay.\n */\nexport async function devErrorSymbolicationEventProcessor(event: Event, hint: EventHint): Promise {\n  // Filter out spans for requests resolving source maps for stack frames in dev mode\n  if (event.type === 'transaction') {\n    event.spans = event.spans?.filter(span => {\n      const httpUrlAttribute: unknown = span.data?.['http.url'];\n      if (typeof httpUrlAttribute === 'string') {\n        return !httpUrlAttribute.includes('__nextjs_original-stack-frame'); // could also be __nextjs_original-stack-frames (plural)\n      }\n\n      return true;\n    });\n  }\n\n  // Due to changes across Next.js versions, there are a million things that can go wrong here so we just try-catch the\n  // entire event processor. Symbolicated stack traces are just a nice to have.\n  try {\n    // oxlint-disable-next-line typescript/prefer-optional-chain\n    if (hint.originalException && hint.originalException instanceof Error && hint.originalException.stack) {\n      const frames = stackTraceParser.parse(hint.originalException.stack);\n      const nextJsVersion = globalWithInjectedValues._sentryNextJsVersion;\n\n      // If we for whatever reason don't have a Next.js version,\n      // we don't want to symbolicate as this previously lead to infinite loops\n      if (!nextJsVersion) {\n        return event;\n      }\n\n      const parsedNextjsVersion = parseSemver(nextJsVersion);\n\n      let resolvedFrames: ({\n        originalCodeFrame: string | null;\n        originalStackFrame: (StackFrame & { line1?: number; column1?: number }) | null;\n      } | null)[];\n\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      if (parsedNextjsVersion.major! > 15 || (parsedNextjsVersion.major === 15 && parsedNextjsVersion.minor! >= 2)) {\n        const r = await resolveStackFrames(frames);\n        if (r === null) {\n          return event;\n        }\n        resolvedFrames = r;\n      } else {\n        resolvedFrames = await Promise.all(\n          frames.map(frame => resolveStackFrame(frame, hint.originalException as Error)),\n        );\n      }\n\n      if (event.exception?.values?.[0]?.stacktrace?.frames) {\n        event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames.map(\n          (frame, i, frames) => {\n            const resolvedFrame = resolvedFrames[frames.length - 1 - i];\n            if (!resolvedFrame?.originalStackFrame || !resolvedFrame.originalCodeFrame) {\n              return {\n                ...frame,\n                platform: frame.filename?.startsWith('node:internal') ? 'nodejs' : undefined, // simple hack that will prevent a source mapping error from showing up\n                in_app: false,\n              };\n            }\n\n            const { contextLine, preContextLines, postContextLines } = parseOriginalCodeFrame(\n              resolvedFrame.originalCodeFrame,\n            );\n\n            return {\n              ...frame,\n              pre_context: preContextLines,\n              context_line: contextLine,\n              post_context: postContextLines,\n              function: resolvedFrame.originalStackFrame.methodName,\n              filename: resolvedFrame.originalStackFrame.file\n                ? stripWebpackInternalPrefix(resolvedFrame.originalStackFrame.file)\n                : undefined,\n              lineno:\n                resolvedFrame.originalStackFrame.lineNumber || resolvedFrame.originalStackFrame.line1 || undefined,\n              colno: resolvedFrame.originalStackFrame.column || resolvedFrame.originalStackFrame.column1 || undefined,\n            };\n          },\n        );\n      }\n    }\n  } catch {\n    return event;\n  }\n\n  return event;\n}\n\nasync function resolveStackFrame(\n  frame: StackFrame,\n  error: Error,\n): Promise<{ originalCodeFrame: string | null; originalStackFrame: StackFrame | null } | null> {\n  try {\n    if (!(frame.file?.startsWith('webpack-internal:') || frame.file?.startsWith('file:'))) {\n      return null;\n    }\n\n    const params = new URLSearchParams();\n    params.append('isServer', String(false)); // doesn't matter since it is overwritten by isAppDirectory\n    params.append('isEdgeServer', String(false)); // doesn't matter since it is overwritten by isAppDirectory\n    params.append('isAppDirectory', String(true)); // will force server to do more thorough checking\n    params.append('errorMessage', error.toString());\n    Object.keys(frame).forEach(key => {\n      params.append(key, (frame[key as keyof typeof frame] ?? '').toString());\n    });\n\n    const baseUrl = getDevServerBaseUrl();\n    const res = await fetchWithTimeout(`${baseUrl}/__nextjs_original-stack-frame?${params.toString()}`);\n\n    if (!res.ok || res.status === 204) {\n      return null;\n    }\n\n    const body: OriginalStackFrameResponse = await res.json();\n\n    return {\n      originalCodeFrame: body.originalCodeFrame,\n      originalStackFrame: body.originalStackFrame,\n    };\n  } catch (e) {\n    DEBUG_BUILD && debug.error('Failed to symbolicate event with Next.js dev server', e);\n    return null;\n  }\n}\n\nasync function resolveStackFrames(\n  frames: StackFrame[],\n): Promise<{ originalCodeFrame: string | null; originalStackFrame: StackFrame | null }[] | null> {\n  try {\n    const postBody = {\n      frames: frames\n        .filter(frame => {\n          return !!frame.file;\n        })\n        .map(frame => {\n          // https://github.com/vercel/next.js/blob/df0573a478baa8b55478a7963c473dddd59a5e40/packages/next/src/client/components/react-dev-overlay/server/middleware-turbopack.ts#L129\n          // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n          frame.file = frame.file!.replace(/^rsc:\\/\\/React\\/[^/]+\\//, '').replace(/\\?\\d+$/, '');\n\n          return {\n            file: frame.file,\n            methodName: frame.methodName ?? '',\n            arguments: [],\n            lineNumber: frame.lineNumber ?? 0,\n            column: frame.column ?? 0,\n            line1: frame.lineNumber ?? 0,\n            column1: frame.column ?? 0,\n          };\n        }),\n      isServer: false,\n      isEdgeServer: false,\n      isAppDirectory: true,\n    };\n\n    const baseUrl = getDevServerBaseUrl();\n    const res = await fetchWithTimeout(`${baseUrl}/__nextjs_original-stack-frames`, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      body: JSON.stringify(postBody),\n    });\n\n    if (!res.ok || res.status === 204) {\n      return null;\n    }\n\n    const body: { value: OriginalStackFrameResponse }[] = await res.json();\n\n    return body.map(frame => {\n      return {\n        originalCodeFrame: frame.value.originalCodeFrame,\n        originalStackFrame: frame.value.originalStackFrame,\n      };\n    });\n  } catch (e) {\n    DEBUG_BUILD && debug.error('Failed to symbolicate event with Next.js dev server', e);\n    return null;\n  }\n}\n\nfunction parseOriginalCodeFrame(codeFrame: string): {\n  contextLine: string | undefined;\n  preContextLines: string[];\n  postContextLines: string[];\n} {\n  const preProcessedLines = codeFrame\n    // Remove ASCII control characters that are used for syntax highlighting\n    .replace(\n      // eslint-disable-next-line no-control-regex\n      /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, // https://stackoverflow.com/a/29497680\n      '',\n    )\n    .split('\\n')\n    // Remove line that is supposed to indicate where the error happened\n    .filter(line => !line.match(/^\\s*\\|/))\n    // Find the error line\n    .map(line => ({\n      line,\n      isErrorLine: !!line.match(/^>/),\n    }))\n    // Remove the leading part that is just for prettier output\n    .map(lineObj => ({\n      ...lineObj,\n      line: lineObj.line.replace(/^.*\\|/, ''),\n    }));\n\n  const preContextLines = [];\n  let contextLine: string | undefined = undefined;\n  const postContextLines = [];\n\n  let reachedContextLine = false;\n\n  for (const preProcessedLine of preProcessedLines) {\n    if (preProcessedLine.isErrorLine) {\n      contextLine = preProcessedLine.line;\n      reachedContextLine = true;\n    } else if (reachedContextLine) {\n      postContextLines.push(preProcessedLine.line);\n    } else {\n      preContextLines.push(preProcessedLine.line);\n    }\n  }\n\n  return {\n    contextLine,\n    preContextLines,\n    postContextLines,\n  };\n}\n\n/**\n * Strips webpack-internal prefixes from filenames to clean up stack traces.\n *\n * Examples:\n * - \"webpack-internal:///./components/file.tsx\" -> \"./components/file.tsx\"\n * - \"webpack-internal:///(app-pages-browser)/./components/file.tsx\" -> \"./components/file.tsx\"\n */\nfunction stripWebpackInternalPrefix(filename: string): string | undefined {\n  if (!filename) {\n    return filename;\n  }\n\n  const webpackInternalRegex = /^webpack-internal:(?:\\/+)?(?:\\([^)]*\\)\\/)?(.+)$/;\n  const match = filename.match(webpackInternalRegex);\n\n  return match ? match[1] : filename;\n}\n","/**\n * Returns an environment setting value determined by Vercel's `VERCEL_ENV` environment variable.\n *\n * @param isClient Flag to indicate whether to use the `NEXT_PUBLIC_` prefixed version of the environment variable.\n */\nexport function getVercelEnv(isClient: boolean): string | undefined {\n  const vercelEnvVar = isClient ? process.env.NEXT_PUBLIC_VERCEL_ENV : process.env.VERCEL_ENV;\n  return vercelEnvVar ? `vercel-${vercelEnvVar}` : undefined;\n}\n","export const ATTR_NEXT_SPAN_TYPE = 'next.span_type';\nexport const ATTR_NEXT_SPAN_NAME = 'next.span_name';\nexport const ATTR_NEXT_ROUTE = 'next.route';\nexport const ATTR_NEXT_SPAN_DESCRIPTION = 'next.span_description';\nexport const ATTR_NEXT_SEGMENT = 'next.segment';\n","/**\n * If this attribute is attached to a transaction, the Next.js SDK will drop that transaction.\n */\nexport const TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION = 'sentry.drop_transaction';\n\nexport const TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL = 'sentry.sentry_trace_backfill';\n\nexport const TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL = 'sentry.route_backfill';\n","\"use strict\";\n\nfunction _interop_require_default(obj) {\n    return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","// Note: This file is JS because it's used by the taskfile-swc.js file, which is JS.\n// Keep file changes in sync with the corresponding `.d.ts` files.\n\n/**\n * These are the minimum browser versions that we consider \"modern\" and thus compile for by default.\n * This list was generated using `pnpm browserslist \"baseline widely available\"` on 2025-10-01.\n */\nconst MODERN_BROWSERSLIST_TARGET = [\n  'chrome 111',\n  'edge 111',\n  'firefox 111',\n  'safari 16.4',\n]\n\nmodule.exports = MODERN_BROWSERSLIST_TARGET\n","export const UNDERSCORE_NOT_FOUND_ROUTE = '/_not-found'\nexport const UNDERSCORE_NOT_FOUND_ROUTE_ENTRY = `${UNDERSCORE_NOT_FOUND_ROUTE}/page`\nexport const UNDERSCORE_GLOBAL_ERROR_ROUTE = '/_global-error'\nexport const UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY = `${UNDERSCORE_GLOBAL_ERROR_ROUTE}/page`\n","import MODERN_BROWSERSLIST_TARGET from './modern-browserslist-target'\n\nexport { MODERN_BROWSERSLIST_TARGET }\n\nexport type ValueOf = Required[keyof T]\n\nexport const COMPILER_NAMES = {\n  client: 'client',\n  server: 'server',\n  edgeServer: 'edge-server',\n} as const\n\nexport type CompilerNameValues = ValueOf\n\nexport const COMPILER_INDEXES: {\n  [compilerKey in CompilerNameValues]: number\n} = {\n  [COMPILER_NAMES.client]: 0,\n  [COMPILER_NAMES.server]: 1,\n  [COMPILER_NAMES.edgeServer]: 2,\n} as const\n\n// Re-export entry constants for backward compatibility\nexport {\n  UNDERSCORE_NOT_FOUND_ROUTE,\n  UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n  UNDERSCORE_GLOBAL_ERROR_ROUTE,\n  UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY,\n} from './entry-constants'\n\nexport enum AdapterOutputType {\n  /**\n   * `PAGES` represents all the React pages that are under `pages/`.\n   */\n  PAGES = 'PAGES',\n\n  /**\n   * `PAGES_API` represents all the API routes under `pages/api/`.\n   */\n  PAGES_API = 'PAGES_API',\n  /**\n   * `APP_PAGE` represents all the React pages that are under `app/` with the\n   * filename of `page.{j,t}s{,x}`.\n   */\n  APP_PAGE = 'APP_PAGE',\n\n  /**\n   * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n   * filename of `route.{j,t}s{,x}`.\n   */\n  APP_ROUTE = 'APP_ROUTE',\n\n  /**\n   * `PRERENDER` represents an ISR enabled route that might\n   * have a seeded cache entry or fallback generated during build\n   */\n  PRERENDER = 'PRERENDER',\n\n  /**\n   * `STATIC_FILE` represents a static file (ie /_next/static)\n   */\n  STATIC_FILE = 'STATIC_FILE',\n\n  /**\n   * `MIDDLEWARE` represents the middleware output if present\n   */\n  MIDDLEWARE = 'MIDDLEWARE',\n}\n\nexport const PHASE_EXPORT = 'phase-export'\nexport const PHASE_ANALYZE = 'phase-analyze'\nexport const PHASE_PRODUCTION_BUILD = 'phase-production-build'\nexport const PHASE_PRODUCTION_SERVER = 'phase-production-server'\nexport const PHASE_DEVELOPMENT_SERVER = 'phase-development-server'\nexport const PHASE_TEST = 'phase-test'\nexport const PHASE_INFO = 'phase-info'\n\nexport type PHASE_TYPE =\n  | typeof PHASE_INFO\n  | typeof PHASE_TEST\n  | typeof PHASE_EXPORT\n  | typeof PHASE_ANALYZE\n  | typeof PHASE_PRODUCTION_BUILD\n  | typeof PHASE_PRODUCTION_SERVER\n  | typeof PHASE_DEVELOPMENT_SERVER\n\nexport const PAGES_MANIFEST = 'pages-manifest.json'\nexport const WEBPACK_STATS = 'webpack-stats.json'\nexport const APP_PATHS_MANIFEST = 'app-paths-manifest.json'\nexport const APP_PATH_ROUTES_MANIFEST = 'app-path-routes-manifest.json'\nexport const BUILD_MANIFEST = 'build-manifest.json'\nexport const FUNCTIONS_CONFIG_MANIFEST = 'functions-config-manifest.json'\nexport const SUBRESOURCE_INTEGRITY_MANIFEST = 'subresource-integrity-manifest'\nexport const NEXT_FONT_MANIFEST = 'next-font-manifest'\nexport const EXPORT_MARKER = 'export-marker.json'\nexport const EXPORT_DETAIL = 'export-detail.json'\nexport const PRERENDER_MANIFEST = 'prerender-manifest.json'\nexport const ROUTES_MANIFEST = 'routes-manifest.json'\nexport const IMAGES_MANIFEST = 'images-manifest.json'\nexport const SERVER_FILES_MANIFEST = 'required-server-files'\nexport const DEV_CLIENT_PAGES_MANIFEST = '_devPagesManifest.json'\nexport const MIDDLEWARE_MANIFEST = 'middleware-manifest.json'\nexport const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST =\n  '_clientMiddlewareManifest.json'\nexport const TURBOPACK_CLIENT_BUILD_MANIFEST = 'client-build-manifest.json'\nexport const DEV_CLIENT_MIDDLEWARE_MANIFEST = '_devMiddlewareManifest.json'\nexport const REACT_LOADABLE_MANIFEST = 'react-loadable-manifest.json'\nexport const SERVER_DIRECTORY = 'server'\nexport const CONFIG_FILES = [\n  'next.config.js',\n  'next.config.mjs',\n  'next.config.ts',\n  // process.features can be undefined on Edge runtime\n  // TODO: Remove `as any` once we bump @types/node to v22.10.0+\n  ...((process?.features as any)?.typescript ? ['next.config.mts'] : []),\n]\nexport const BUILD_ID_FILE = 'BUILD_ID'\nexport const BLOCKED_PAGES = ['/_document', '/_app', '/_error']\nexport const CLIENT_PUBLIC_FILES_PATH = 'public'\nexport const CLIENT_STATIC_FILES_PATH = 'static'\nexport const STRING_LITERAL_DROP_BUNDLE = '__NEXT_DROP_CLIENT_FILE__'\nexport const NEXT_BUILTIN_DOCUMENT = '__NEXT_BUILTIN_DOCUMENT__'\nexport const BARREL_OPTIMIZATION_PREFIX = '__barrel_optimize__'\n\n// server/[entry]/page_client-reference-manifest.js\nexport const CLIENT_REFERENCE_MANIFEST = 'client-reference-manifest'\n// server/server-reference-manifest\nexport const SERVER_REFERENCE_MANIFEST = 'server-reference-manifest'\n// server/middleware-build-manifest.js\nexport const MIDDLEWARE_BUILD_MANIFEST = 'middleware-build-manifest'\n// server/middleware-react-loadable-manifest.js\nexport const MIDDLEWARE_REACT_LOADABLE_MANIFEST =\n  'middleware-react-loadable-manifest'\n// server/interception-route-rewrite-manifest.js\nexport const INTERCEPTION_ROUTE_REWRITE_MANIFEST =\n  'interception-route-rewrite-manifest'\n// server/dynamic-css-manifest.js\nexport const DYNAMIC_CSS_MANIFEST = 'dynamic-css-manifest'\n\n// static/runtime/main.js\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN = `main`\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = `${CLIENT_STATIC_FILES_RUNTIME_MAIN}-app`\n// next internal client components chunk for layouts\nexport const APP_CLIENT_INTERNALS = 'app-pages-internals'\n// static/runtime/react-refresh.js\nexport const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = `react-refresh`\n// static/runtime/webpack.js\nexport const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = `webpack`\n// static/runtime/polyfills.js\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = 'polyfills'\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL = Symbol(\n  CLIENT_STATIC_FILES_RUNTIME_POLYFILLS\n)\nexport const DEFAULT_RUNTIME_WEBPACK = 'webpack-runtime'\nexport const EDGE_RUNTIME_WEBPACK = 'edge-runtime-webpack'\nexport const STATIC_PROPS_ID = '__N_SSG'\nexport const SERVER_PROPS_ID = '__N_SSP'\nexport const DEFAULT_SERIF_FONT = {\n  name: 'Times New Roman',\n  xAvgCharWidth: 821,\n  azAvgWidth: 854.3953488372093,\n  unitsPerEm: 2048,\n}\nexport const DEFAULT_SANS_SERIF_FONT = {\n  name: 'Arial',\n  xAvgCharWidth: 904,\n  azAvgWidth: 934.5116279069767,\n  unitsPerEm: 2048,\n}\nexport const STATIC_STATUS_PAGES = ['/500']\nexport const TRACE_OUTPUT_VERSION = 1\n// in `MB`\nexport const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000\n\nexport const RSC_MODULE_TYPES = {\n  client: 'client',\n  server: 'server',\n} as const\n\n// comparing\n// https://nextjs.org/docs/api-reference/edge-runtime\n// with\n// https://nodejs.org/docs/latest/api/globals.html\nexport const EDGE_UNSUPPORTED_NODE_APIS = [\n  'clearImmediate',\n  'setImmediate',\n  'BroadcastChannel',\n  'ByteLengthQueuingStrategy',\n  'CompressionStream',\n  'CountQueuingStrategy',\n  'DecompressionStream',\n  'DomException',\n  'MessageChannel',\n  'MessageEvent',\n  'MessagePort',\n  'ReadableByteStreamController',\n  'ReadableStreamBYOBRequest',\n  'ReadableStreamDefaultController',\n  'TransformStreamDefaultController',\n  'WritableStreamDefaultController',\n]\n\nexport const SYSTEM_ENTRYPOINTS = new Set([\n  CLIENT_STATIC_FILES_RUNTIME_MAIN,\n  CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n  CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,\n])\n","module.exports = require('./dist/shared/lib/constants')\n","import { PHASE_PRODUCTION_BUILD } from 'next/constants';\n\n/**\n * Decide if the currently running process is part of the build phase or happening at runtime.\n */\nexport function isBuild(): boolean {\n  return process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n}\n","import type { Span } from '@sentry/core';\nimport { debug, fill, flush, GLOBAL_OBJ, setHttpStatus, vercelWaitUntil } from '@sentry/core';\nimport type { ServerResponse } from 'http';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ResponseEndMethod, WrappedResponseEndMethod } from '../types';\n\n/**\n * Wrap `res.end()` so that it ends the span and flushes events before letting the request finish.\n *\n * Note: This wraps a sync method with an async method. While in general that's not a great idea in terms of keeping\n * things in the right order, in this case it's safe, because the native `.end()` actually *is* (effectively) async, and\n * its run actually *is* (literally) awaited, just manually so (which reflects the fact that the core of the\n * request/response code in Node by far predates the introduction of `async`/`await`). When `.end()` is done, it emits\n * the `prefinish` event, and only once that fires does request processing continue. See\n * https://github.com/nodejs/node/commit/7c9b607048f13741173d397795bac37707405ba7.\n *\n * Also note: `res.end()` isn't called until *after* all response data and headers have been sent, so blocking inside of\n * `end` doesn't delay data getting to the end user. See\n * https://nodejs.org/api/http.html#responseenddata-encoding-callback.\n *\n * @param span The span tracking the request\n * @param res: The request's corresponding response\n */\nexport function autoEndSpanOnResponseEnd(span: Span, res: ServerResponse): void {\n  const wrapEndMethod = (origEnd: ResponseEndMethod): WrappedResponseEndMethod => {\n    return function sentryWrappedEnd(this: ServerResponse, ...args: unknown[]) {\n      finishSpan(span, this);\n      return origEnd.call(this, ...args);\n    };\n  };\n\n  // Prevent double-wrapping\n  // res.end may be undefined during build when using `next export` to statically export a Next.js app\n  if (res.end && !(res.end as WrappedResponseEndMethod).__sentry_original__) {\n    fill(res, 'end', wrapEndMethod);\n  }\n}\n\n/** Finish the given response's span and set HTTP status data */\nexport function finishSpan(span: Span, res: ServerResponse): void {\n  setHttpStatus(span, res.statusCode);\n  span.end();\n}\n\n/**\n * Flushes pending Sentry events with a 2 second timeout and in a way that cannot create unhandled promise rejections.\n */\nexport async function flushSafelyWithTimeout(): Promise {\n  try {\n    DEBUG_BUILD && debug.log('Flushing events...');\n    await flush(2000);\n    DEBUG_BUILD && debug.log('Done flushing events');\n  } catch (e) {\n    DEBUG_BUILD && debug.log('Error while flushing events:\\n', e);\n  }\n}\n\n/**\n * Uses platform-specific waitUntil function to wait for the provided task to complete without blocking.\n */\nexport function waitUntil(task: Promise): void {\n  // If deployed on Cloudflare, use the Cloudflare waitUntil function to flush the events\n  if (isCloudflareWaitUntilAvailable()) {\n    cloudflareWaitUntil(task);\n    return;\n  }\n\n  // otherwise, use vercel's\n  vercelWaitUntil(task);\n}\n\ntype MinimalCloudflareContext = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  waitUntil(promise: Promise): void;\n};\n\n/**\n * Gets the Cloudflare context from the global object.\n * Relevant to opennext\n * https://github.com/opennextjs/opennextjs-cloudflare/blob/b53a046bd5c30e94a42e36b67747cefbf7785f9a/packages/cloudflare/src/cli/templates/init.ts#L17\n */\nfunction _getOpenNextCloudflareContext(): MinimalCloudflareContext | undefined {\n  const openNextCloudflareContextSymbol = Symbol.for('__cloudflare-context__');\n\n  return (\n    GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n      [openNextCloudflareContextSymbol]?: {\n        ctx: MinimalCloudflareContext;\n      };\n    }\n  )[openNextCloudflareContextSymbol]?.ctx;\n}\n\n/**\n * Function that delays closing of a Cloudflare lambda until the provided promise is resolved.\n */\nexport function cloudflareWaitUntil(task: Promise): void {\n  _getOpenNextCloudflareContext()?.waitUntil(task);\n}\n\n/**\n * Checks if the Cloudflare waitUntil function is available globally.\n */\nexport function isCloudflareWaitUntilAvailable(): boolean {\n  return typeof _getOpenNextCloudflareContext()?.waitUntil === 'function';\n}\n","import { getSanitizedUrlStringFromUrlObject, parseStringToURLObject } from '@sentry/core';\n\ntype ComponentRouteParams = Record | undefined;\ntype HeadersDict = Record | undefined;\n\nconst HeaderKeys = {\n  FORWARDED_PROTO: 'x-forwarded-proto',\n  FORWARDED_HOST: 'x-forwarded-host',\n  HOST: 'host',\n  REFERER: 'referer',\n} as const;\n\n/**\n * Replaces route parameters in a path template with their values\n * @param path - The path template containing parameters in [paramName] format\n * @param params - Optional route parameters to replace in the template\n * @returns The path with parameters replaced\n */\nexport function substituteRouteParams(path: string, params?: ComponentRouteParams): string {\n  if (!params || typeof params !== 'object') return path;\n\n  let resultPath = path;\n  for (const [key, value] of Object.entries(params)) {\n    resultPath = resultPath.split(`[${key}]`).join(encodeURIComponent(value));\n  }\n  return resultPath;\n}\n\n/**\n * Normalizes a path by removing route groups\n * @param path - The path to normalize\n * @returns The normalized path\n */\nexport function sanitizeRoutePath(path: string): string {\n  const cleanedSegments = path\n    .split('/')\n    .filter(segment => segment && !(segment.startsWith('(') && segment.endsWith(')')));\n\n  return cleanedSegments.length > 0 ? `/${cleanedSegments.join('/')}` : '/';\n}\n\n/**\n * Constructs a full URL from the component route, parameters, and headers.\n *\n * @param componentRoute - The route template to construct the URL from\n * @param params - Optional route parameters to replace in the template\n * @param headersDict - Optional headers containing protocol and host information\n * @param pathname - Optional pathname coming from parent span \"http.target\"\n * @returns A sanitized URL string\n */\nexport function buildUrlFromComponentRoute(\n  componentRoute: string,\n  params?: ComponentRouteParams,\n  headersDict?: HeadersDict,\n  pathname?: string,\n): string {\n  const parameterizedPath = substituteRouteParams(componentRoute, params);\n  // If available, the pathname from the http.target of the HTTP request server span takes precedence over the parameterized path.\n  // Spans such as generateMetadata and Server Component rendering are typically direct children of that span.\n  const path = pathname ?? sanitizeRoutePath(parameterizedPath);\n\n  const protocol = headersDict?.[HeaderKeys.FORWARDED_PROTO];\n  const host = headersDict?.[HeaderKeys.FORWARDED_HOST] || headersDict?.[HeaderKeys.HOST];\n\n  if (!protocol || !host) {\n    return path;\n  }\n\n  const fullUrl = `${protocol}://${host}${path}`;\n\n  const urlObject = parseStringToURLObject(fullUrl);\n  if (!urlObject) {\n    return path;\n  }\n\n  return getSanitizedUrlStringFromUrlObject(urlObject);\n}\n\n/**\n * Returns a sanitized URL string from the referer header if it exists and is valid.\n *\n * @param headersDict - Optional headers containing the referer\n * @returns A sanitized URL string or undefined if referer is missing/invalid\n */\nexport function extractSanitizedUrlFromRefererHeader(headersDict?: HeadersDict): string | undefined {\n  const referer = headersDict?.[HeaderKeys.REFERER];\n  if (!referer) {\n    return undefined;\n  }\n\n  try {\n    const refererUrl = new URL(referer);\n    return getSanitizedUrlStringFromUrlObject(refererUrl);\n  } catch {\n    return undefined;\n  }\n}\n\n/**\n * Returns a sanitized URL string using the referer header if available,\n * otherwise constructs the URL from the component route, params, and headers.\n *\n * @param componentRoute - The route template to construct the URL from\n * @param params - Optional route parameters to replace in the template\n * @param headersDict - Optional headers containing protocol, host, and referer\n * @param pathname - Optional pathname coming from root span \"http.target\"\n * @returns A sanitized URL string\n */\nexport function getSanitizedRequestUrl(\n  componentRoute: string,\n  params?: ComponentRouteParams,\n  headersDict?: HeadersDict,\n  pathname?: string,\n): string {\n  const refererUrl = extractSanitizedUrlFromRefererHeader(headersDict);\n  if (refererUrl) {\n    return refererUrl;\n  }\n\n  return buildUrlFromComponentRoute(componentRoute, params, headersDict, pathname);\n}\n","import type { Event } from '@sentry/core';\nimport { getClient } from '@sentry/core';\nimport { getSanitizedRequestUrl } from './urls';\n\n/**\n * Sets the URL processing metadata for the event.\n */\nexport function setUrlProcessingMetadata(event: Event): void {\n  // Skip if not a server-side transaction\n  if (event.type !== 'transaction' || event.contexts?.trace?.op !== 'http.server' || !event.contexts?.trace?.data) {\n    return;\n  }\n\n  // Only add URL if sendDefaultPii is enabled, as URLs may contain PII\n  const client = getClient();\n  if (!client?.getOptions().sendDefaultPii) {\n    return;\n  }\n\n  const traceData = event.contexts.trace.data;\n\n  // Get the route from trace data\n  const componentRoute = traceData['next.route'] || traceData['http.route'];\n  const httpTarget = traceData['http.target'] as string | undefined;\n\n  if (!componentRoute) {\n    return;\n  }\n\n  // Extract headers\n  const isolationScopeData = event.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData();\n  const headersDict = isolationScopeData?.sdkProcessingMetadata?.normalizedRequest?.headers;\n\n  const url = getSanitizedRequestUrl(componentRoute, undefined, headersDict, httpTarget?.toString());\n\n  // Add URL to the isolation scope's normalizedRequest so requestDataIntegration picks it up\n  if (url && isolationScopeData?.sdkProcessingMetadata) {\n    isolationScopeData.sdkProcessingMetadata.normalizedRequest =\n      isolationScopeData.sdkProcessingMetadata.normalizedRequest || {};\n    isolationScopeData.sdkProcessingMetadata.normalizedRequest.url = url;\n  }\n}\n","import { defineIntegration, escapeStringForRegex, rewriteFramesIntegration } from '@sentry/core';\nimport * as path from 'path';\n\nexport const distDirRewriteFramesIntegration = defineIntegration(({ distDirName }: { distDirName: string }) => {\n  // nextjs always puts the build directory at the project root level, which is also where you run `next start` from, so\n  // we can read in the project directory from the currently running process\n  const distDirAbsPath = path.resolve(distDirName).replace(/(\\/|\\\\)$/, ''); // We strip trailing slashes because \"app:///_next\" also doesn't have one\n\n  // oxlint-disable-next-line sdk/no-regexp-constructor -- user input is escaped\n  const SOURCEMAP_FILENAME_REGEX = new RegExp(escapeStringForRegex(distDirAbsPath));\n\n  const rewriteFramesInstance = rewriteFramesIntegration({\n    iteratee: frame => {\n      frame.filename = frame.filename?.replace(SOURCEMAP_FILENAME_REGEX, 'app:///_next');\n      return frame;\n    },\n  });\n\n  return {\n    ...rewriteFramesInstance,\n    name: 'DistDirRewriteFrames',\n  };\n});\n","import type { Span, WebFetchHeaders } from '@sentry/core';\nimport { getClient, httpHeadersToSpanAttributes, winterCGHeadersToDict } from '@sentry/core';\n\n/**\n * Extracts HTTP request headers as span attributes and optionally applies them to a span.\n */\nexport function addHeadersAsAttributes(\n  headers: WebFetchHeaders | Headers | Record | undefined,\n  span?: Span,\n): Record {\n  if (!headers) {\n    return {};\n  }\n\n  const headersDict: Record =\n    headers instanceof Headers || (typeof headers === 'object' && 'get' in headers)\n      ? winterCGHeadersToDict(headers as Headers)\n      : headers;\n\n  const headerAttributes = httpHeadersToSpanAttributes(headersDict, getClient()?.getOptions().sendDefaultPii ?? false);\n\n  if (span) {\n    span.setAttributes(headerAttributes);\n  }\n\n  return headerAttributes;\n}\n","import { SEMATTRS_HTTP_TARGET } from '@opentelemetry/semantic-conventions';\nimport { getClient, GLOBAL_OBJ, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, type Span, type SpanAttributes } from '@sentry/core';\nimport { isSentryRequestSpan } from '@sentry/opentelemetry';\nimport { ATTR_NEXT_SPAN_TYPE } from '../nextSpanAttributes';\nimport { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached';\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryRewritesTunnelPath?: string;\n};\n\n/**\n * Drops spans for tunnel requests from middleware, fetch instrumentation, or BaseServer.handleRequest.\n * This catches:\n * 1. Requests to the local tunnel route (before rewrite) via middleware or BaseServer.handleRequest\n * 2. Requests to Sentry ingest (after rewrite) via fetch spans\n */\nexport function dropMiddlewareTunnelRequests(span: Span, attrs: SpanAttributes | undefined): void {\n  // When the user brings their own OTel setup (skipOpenTelemetrySetup: true), we should not\n  // mutate their spans with Sentry-internal attributes as it pollutes their tracing backends.\n  if ((getClient()?.getOptions() as { skipOpenTelemetrySetup?: boolean } | undefined)?.skipOpenTelemetrySetup) {\n    return;\n  }\n\n  // Only filter middleware spans, HTTP fetch spans, or BaseServer.handleRequest spans\n  const isMiddleware = attrs?.[ATTR_NEXT_SPAN_TYPE] === 'Middleware.execute';\n  // The fetch span could be originating from rewrites re-writing a tunnel request\n  // So we want to filter it out\n  const isFetchSpan = attrs?.[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] === 'auto.http.otel.node_fetch';\n  const isBaseServerHandleRequest = attrs?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest';\n\n  // If the span is not a middleware span, fetch span, or BaseServer.handleRequest span, return\n  if (!isMiddleware && !isFetchSpan && !isBaseServerHandleRequest) {\n    return;\n  }\n\n  // Check if this is either a tunnel route request or a Sentry ingest request\n  const isTunnel = isTunnelRouteSpan(attrs || {});\n  const isSentry = isSentryRequestSpan(span);\n\n  if (isTunnel || isSentry) {\n    // Mark the span to be dropped\n    span.setAttribute(TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION, true);\n  }\n}\n\n/**\n * Checks if a span's HTTP target matches the tunnel route.\n */\nfunction isTunnelRouteSpan(spanAttributes: Record): boolean {\n  const tunnelPath = globalWithInjectedValues._sentryRewritesTunnelPath || process.env._sentryRewritesTunnelPath;\n  if (!tunnelPath) {\n    return false;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  const httpTarget = spanAttributes[SEMATTRS_HTTP_TARGET];\n\n  if (typeof httpTarget === 'string') {\n    // Extract pathname from the target (e.g., \"/tunnel?o=123&p=456\" -> \"/tunnel\")\n    const pathname = httpTarget.split('?')[0] || '';\n\n    return pathname === tunnelPath || pathname.startsWith(`${tunnelPath}/`);\n  }\n\n  return false;\n}\n","import { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { PropagationContext, Span, SpanAttributes } from '@sentry/core';\nimport {\n  debug,\n  getActiveSpan,\n  getClient,\n  getRootSpan,\n  GLOBAL_OBJ,\n  Scope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  spanToJSON,\n  startNewTrace,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { ATTR_NEXT_SEGMENT, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../nextSpanAttributes';\nimport { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached';\n\nconst commonPropagationContextMap = new WeakMap();\n\nconst PAGE_SEGMENT = '__PAGE__';\n\n/**\n * Takes a shared (garbage collectable) object between resources, e.g. a headers object shared between Next.js server components and returns a common propagation context.\n *\n * @param commonObject The shared object.\n * @param propagationContext The propagation context that should be shared between all the resources if no propagation context was registered yet.\n * @returns the shared propagation context.\n */\nexport function commonObjectToPropagationContext(\n  commonObject: unknown,\n  propagationContext: PropagationContext,\n): PropagationContext {\n  if (typeof commonObject === 'object' && commonObject) {\n    const memoPropagationContext = commonPropagationContextMap.get(commonObject);\n    if (memoPropagationContext) {\n      return memoPropagationContext;\n    } else {\n      commonPropagationContextMap.set(commonObject, propagationContext);\n      return propagationContext;\n    }\n  } else {\n    return propagationContext;\n  }\n}\n\nconst commonIsolationScopeMap = new WeakMap();\n\n/**\n * Takes a shared (garbage collectable) object between resources, e.g. a headers object shared between Next.js server components and returns a common propagation context.\n *\n * @param commonObject The shared object.\n * @param isolationScope The isolationScope that should be shared between all the resources if no isolation scope was created yet.\n * @returns the shared isolation scope.\n */\nexport function commonObjectToIsolationScope(commonObject: unknown): Scope {\n  if (typeof commonObject === 'object' && commonObject) {\n    const memoIsolationScope = commonIsolationScopeMap.get(commonObject);\n    if (memoIsolationScope) {\n      return memoIsolationScope;\n    } else {\n      const newIsolationScope = new Scope();\n      commonIsolationScopeMap.set(commonObject, newIsolationScope);\n      return newIsolationScope;\n    }\n  } else {\n    return new Scope();\n  }\n}\n\ninterface AsyncLocalStorage {\n  getStore(): T | undefined;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  run(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R;\n}\n\nlet nextjsEscapedAsyncStorage: AsyncLocalStorage;\n\n/**\n * Will mark the execution context of the callback as \"escaped\" from Next.js internal tracing by unsetting the active\n * span and propagation context. When an execution passes through this function multiple times, it is a noop after the\n * first time.\n */\nexport function escapeNextjsTracing(cb: () => T): T {\n  const MaybeGlobalAsyncLocalStorage = (GLOBAL_OBJ as { AsyncLocalStorage?: new () => AsyncLocalStorage })\n    .AsyncLocalStorage;\n\n  if (!MaybeGlobalAsyncLocalStorage) {\n    DEBUG_BUILD &&\n      debug.warn(\n        \"Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage.\",\n      );\n    return cb();\n  }\n\n  if (!nextjsEscapedAsyncStorage) {\n    nextjsEscapedAsyncStorage = new MaybeGlobalAsyncLocalStorage();\n  }\n\n  if (nextjsEscapedAsyncStorage.getStore()) {\n    return cb();\n  } else {\n    return startNewTrace(() => {\n      return nextjsEscapedAsyncStorage.run(true, () => {\n        return cb();\n      });\n    });\n  }\n}\n\n/**\n * Ideally this function never lands in the develop branch.\n *\n * Drops the entire span tree this function was called in, if it was a span tree created by Next.js.\n */\nexport function dropNextjsRootContext(): void {\n  // When the user brings their own OTel setup (skipOpenTelemetrySetup: true), we should not\n  // mutate their spans with Sentry-internal attributes like `sentry.drop_transaction`\n  if ((getClient()?.getOptions() as { skipOpenTelemetrySetup?: boolean } | undefined)?.skipOpenTelemetrySetup) {\n    return;\n  }\n\n  const nextJsOwnedSpan = getActiveSpan();\n  if (nextJsOwnedSpan) {\n    const rootSpan = getRootSpan(nextJsOwnedSpan);\n    const rootSpanAttributes = spanToJSON(rootSpan).data;\n    if (rootSpanAttributes?.['next.span_type']) {\n      getRootSpan(nextJsOwnedSpan)?.setAttribute(TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION, true);\n    }\n  }\n}\n\n/**\n * Checks if the span is a resolve segment span.\n * @param spanAttributes The attributes of the span to check.\n * @returns True if the span is a resolve segment span, false otherwise.\n */\nexport function isResolveSegmentSpan(spanAttributes: SpanAttributes): boolean {\n  return (\n    spanAttributes[ATTR_NEXT_SPAN_TYPE] === 'NextNodeServer.getLayoutOrPageModule' &&\n    spanAttributes[ATTR_NEXT_SPAN_NAME] === 'resolve segment modules' &&\n    typeof spanAttributes[ATTR_NEXT_SEGMENT] === 'string'\n  );\n}\n\n/**\n * Returns the enhanced name for a resolve segment span.\n * @param segment The segment of the resolve segment span.\n * @param route The route of the resolve segment span.\n * @returns The enhanced name for the resolve segment span.\n */\nexport function getEnhancedResolveSegmentSpanName({ segment, route }: { segment: string; route: string }): string {\n  if (segment === PAGE_SEGMENT) {\n    return `resolve page server component \"${route}\"`;\n  }\n\n  if (segment === '') {\n    return 'resolve root layout server component';\n  }\n\n  return `resolve layout server component \"${segment}\"`;\n}\n\n/**\n * Maybe enhances the span name for a resolve segment span.\n * If the span is not a resolve segment span, this function does nothing.\n * @param activeSpan The active span.\n * @param spanAttributes The attributes of the span to check.\n * @param rootSpanAttributes The attributes of the according root span.\n */\nexport function maybeEnhanceServerComponentSpanName(\n  activeSpan: Span,\n  spanAttributes: SpanAttributes,\n  rootSpanAttributes: SpanAttributes,\n): void {\n  if (!isResolveSegmentSpan(spanAttributes)) {\n    return;\n  }\n\n  const segment = spanAttributes[ATTR_NEXT_SEGMENT] as string;\n  const route = rootSpanAttributes[ATTR_HTTP_ROUTE];\n  const enhancedName = getEnhancedResolveSegmentSpanName({ segment, route: typeof route === 'string' ? route : '' });\n  activeSpan.updateName(enhancedName);\n  activeSpan.setAttributes({\n    'sentry.nextjs.ssr.function.type': segment === PAGE_SEGMENT ? 'Page' : 'Layout',\n    'sentry.nextjs.ssr.function.route': route,\n  });\n  activeSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'function.nextjs');\n}\n","import type { Span } from '@sentry/core';\nimport { _INTERNAL_safeDateNow, captureCheckIn, debug, getIsolationScope, spanToJSON } from '@sentry/core';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport type { VercelCronsConfig } from '../common/types';\n\n// Attribute keys for storing cron check-in data on spans\nconst ATTR_SENTRY_CRON_CHECK_IN_ID = 'sentry.cron.checkInId';\nconst ATTR_SENTRY_CRON_MONITOR_SLUG = 'sentry.cron.monitorSlug';\nconst ATTR_SENTRY_CRON_START_TIME = 'sentry.cron.startTime';\nconst ATTR_SENTRY_CRON_SCHEDULE = 'sentry.cron.schedule';\n\n/**\n * Gets the Vercel crons configuration that was injected at build time.\n */\nfunction getVercelCronsConfig(): VercelCronsConfig {\n  const globalWithCronsConfig = globalThis as typeof globalThis & {\n    _sentryVercelCronsConfig?: string;\n  };\n\n  if (!globalWithCronsConfig._sentryVercelCronsConfig) {\n    return undefined;\n  }\n\n  try {\n    return JSON.parse(globalWithCronsConfig._sentryVercelCronsConfig) as VercelCronsConfig;\n  } catch {\n    DEBUG_BUILD && debug.log('[@sentry/nextjs] Failed to parse Vercel crons config');\n    return undefined;\n  }\n}\n\n/**\n * Checks if the request is a Vercel cron request and starts a check-in if it matches a configured cron.\n */\nexport function maybeStartCronCheckIn(span: Span, route: string | undefined): void {\n  const vercelCronsConfig = getVercelCronsConfig();\n  if (!vercelCronsConfig || !route) {\n    return;\n  }\n\n  // The strategy here is to check if the request is a Vercel cron\n  // request by checking the user agent, vercel always sets the user agent to 'vercel-cron/1.0'\n\n  const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers as\n    | Record\n    | undefined;\n\n  if (!headers) {\n    return;\n  }\n\n  const userAgent = Array.isArray(headers['user-agent']) ? headers['user-agent'][0] : headers['user-agent'];\n  if (!userAgent?.includes('vercel-cron')) {\n    return;\n  }\n\n  const matchedCron = vercelCronsConfig.find(cron => cron.path === route);\n  if (!matchedCron?.path || !matchedCron.schedule) {\n    return;\n  }\n\n  // Use raw path as monitor slug to match legacy wrapApiHandlerWithSentryVercelCrons behavior,\n  // so migration from automaticVercelMonitors to vercelCronsMonitoring keeps the same monitors.\n  const monitorSlug = matchedCron.path;\n  const startTime = _INTERNAL_safeDateNow() / 1000;\n\n  const checkInId = captureCheckIn(\n    { monitorSlug, status: 'in_progress' },\n    {\n      maxRuntime: 60 * 12,\n      schedule: { type: 'crontab', value: matchedCron.schedule },\n    },\n  );\n\n  DEBUG_BUILD && debug.log(`[Cron] Started check-in for \"${monitorSlug}\" with ID \"${checkInId}\"`);\n\n  // Store marking attributes on the span so we can complete the check-in later\n  span.setAttribute(ATTR_SENTRY_CRON_CHECK_IN_ID, checkInId);\n  span.setAttribute(ATTR_SENTRY_CRON_MONITOR_SLUG, monitorSlug);\n  span.setAttribute(ATTR_SENTRY_CRON_START_TIME, startTime);\n  span.setAttribute(ATTR_SENTRY_CRON_SCHEDULE, matchedCron.schedule);\n}\n\n/**\n * Completes a Vercel cron check-in when a span ends.\n * Should be called from the spanEnd event handler.\n */\nexport function maybeCompleteCronCheckIn(span: Span): void {\n  const spanData = spanToJSON(span).data;\n  const checkInId = spanData?.[ATTR_SENTRY_CRON_CHECK_IN_ID];\n  const monitorSlug = spanData?.[ATTR_SENTRY_CRON_MONITOR_SLUG];\n  const startTime = spanData?.[ATTR_SENTRY_CRON_START_TIME];\n  const schedule = spanData?.[ATTR_SENTRY_CRON_SCHEDULE];\n\n  if (!checkInId || !monitorSlug || typeof startTime !== 'number') {\n    return;\n  }\n\n  const duration = _INTERNAL_safeDateNow() / 1000 - startTime;\n  const spanStatus = spanToJSON(span).status;\n  // Span status is 'ok' for success, undefined for unset, or an error message like 'internal_error'\n  const checkInStatus = spanStatus && spanStatus !== 'ok' ? 'error' : 'ok';\n\n  // Include monitor_config for upsert in case the in_progress check-in was lost\n  const monitorConfig =\n    typeof schedule === 'string'\n      ? {\n          maxRuntime: 60 * 12,\n          schedule: { type: 'crontab' as const, value: schedule },\n        }\n      : undefined;\n\n  captureCheckIn(\n    {\n      checkInId: checkInId as string,\n      monitorSlug: monitorSlug as string,\n      status: checkInStatus,\n      duration,\n    },\n    monitorConfig,\n  );\n\n  // Cleanup marking attributes so they don't pollute user span data\n  span.setAttribute(ATTR_SENTRY_CRON_CHECK_IN_ID, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_MONITOR_SLUG, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_START_TIME, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_SCHEDULE, undefined);\n\n  DEBUG_BUILD && debug.log(`[Cron] Completed check-in for \"${monitorSlug}\" with status \"${checkInStatus}\"`);\n}\n","import type { Span } from '@sentry/core';\nimport { getIsolationScope, spanToJSON } from '@sentry/core';\n\n// OTel Messaging semantic convention attribute keys\nconst ATTR_MESSAGING_SYSTEM = 'messaging.system';\nconst ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name';\nconst ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id';\nconst ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name';\nconst ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name';\nconst ATTR_MESSAGING_MESSAGE_DELIVERY_COUNT = 'messaging.message.delivery_count';\n\n// Marker attribute to track enriched spans for cleanup\nconst ATTR_SENTRY_QUEUE_ENRICHED = 'sentry.queue.enriched';\n\n/**\n * Checks if the incoming request is a Vercel Queue consumer callback (push mode)\n * and enriches the http.server span with OTel messaging semantic attributes.\n *\n * Vercel Queues push delivery sends a CloudEvent POST with the header:\n *   ce-type: com.vercel.queue.v2beta\n * along with ce-vqs* headers carrying queue metadata.\n */\nexport function maybeEnrichQueueConsumerSpan(span: Span): void {\n  const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers as\n    | Record\n    | undefined;\n\n  if (!headers) {\n    return;\n  }\n\n  const ceType = Array.isArray(headers['ce-type']) ? headers['ce-type'][0] : headers['ce-type'];\n  if (ceType !== 'com.vercel.queue.v2beta') {\n    return;\n  }\n\n  const queueName = getHeader(headers, 'ce-vqsqueuename');\n  const messageId = getHeader(headers, 'ce-vqsmessageid');\n  const consumerGroup = getHeader(headers, 'ce-vqsconsumergroup');\n  const deliveryCount = getHeader(headers, 'ce-vqsdeliverycount');\n\n  span.setAttribute(ATTR_MESSAGING_SYSTEM, 'vercel.queue');\n  span.setAttribute(ATTR_MESSAGING_OPERATION_NAME, 'process');\n\n  if (queueName) {\n    span.setAttribute(ATTR_MESSAGING_DESTINATION_NAME, queueName);\n  }\n\n  if (messageId) {\n    span.setAttribute(ATTR_MESSAGING_MESSAGE_ID, messageId);\n  }\n\n  if (consumerGroup) {\n    span.setAttribute(ATTR_MESSAGING_CONSUMER_GROUP_NAME, consumerGroup);\n  }\n\n  if (deliveryCount) {\n    const count = parseInt(deliveryCount, 10);\n    if (!isNaN(count)) {\n      span.setAttribute(ATTR_MESSAGING_MESSAGE_DELIVERY_COUNT, count);\n    }\n  }\n\n  // Mark span so we can clean up marker on spanEnd\n  span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, true);\n}\n\n/**\n * Checks if an outgoing http.client span targets the Vercel Queues API\n * and enriches it with OTel messaging semantic attributes (producer side).\n *\n * The Vercel Queues API lives at *.vercel-queue.com/api/v3/topic/.\n * We use domain-based detection to avoid false positives from user routes.\n */\nexport function maybeEnrichQueueProducerSpan(span: Span): void {\n  const spanData = spanToJSON(span).data;\n\n  // http.client spans have url.full attribute\n  const urlFull = spanData?.['url.full'] as string | undefined;\n  if (!urlFull) {\n    return;\n  }\n\n  let parsed: URL;\n  try {\n    parsed = new URL(urlFull);\n  } catch {\n    return;\n  }\n\n  if (parsed.hostname !== 'vercel-queue.com' && !parsed.hostname.endsWith('.vercel-queue.com')) {\n    return;\n  }\n\n  // Extract topic from path: /api/v3/topic/[/]\n  const topicMatch = parsed.pathname.match(/^\\/api\\/v3\\/topic\\/([^/]+)/);\n  if (!topicMatch) {\n    return;\n  }\n\n  const topic = decodeURIComponent(topicMatch[1]!);\n\n  span.setAttribute(ATTR_MESSAGING_SYSTEM, 'vercel.queue');\n  span.setAttribute(ATTR_MESSAGING_DESTINATION_NAME, topic);\n  span.setAttribute(ATTR_MESSAGING_OPERATION_NAME, 'send');\n\n  // Mark span so we can clean up marker on spanEnd\n  span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, true);\n}\n\n/**\n * Cleans up the internal marker attribute from enriched queue spans on end.\n */\nexport function maybeCleanupQueueSpan(span: Span): void {\n  const spanData = spanToJSON(span).data;\n  if (spanData?.[ATTR_SENTRY_QUEUE_ENRICHED]) {\n    span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, undefined);\n  }\n}\n\nfunction getHeader(headers: Record, name: string): string | undefined {\n  const value = headers[name];\n  return Array.isArray(value) ? value[0] : value;\n}\n","import { context } from '@opentelemetry/api';\nimport { ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_ROUTE, SEMATTRS_HTTP_METHOD } from '@opentelemetry/semantic-conventions';\nimport type { Span } from '@sentry/core';\nimport {\n  getCapturedScopesOnSpan,\n  getCurrentScope,\n  getIsolationScope,\n  getRootSpan,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  setCapturedScopesOnSpan,\n  spanToJSON,\n} from '@sentry/core';\nimport { getScopesFromContext } from '@sentry/opentelemetry';\nimport { ATTR_NEXT_ROUTE, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../common/nextSpanAttributes';\nimport { addHeadersAsAttributes } from '../common/utils/addHeadersAsAttributes';\nimport { dropMiddlewareTunnelRequests } from '../common/utils/dropMiddlewareTunnelRequests';\nimport { maybeEnhanceServerComponentSpanName } from '../common/utils/tracingUtils';\nimport { maybeStartCronCheckIn } from './vercelCronsMonitoring';\nimport { maybeEnrichQueueConsumerSpan, maybeEnrichQueueProducerSpan } from './vercelQueuesMonitoring';\n\n/**\n * Handles the on span start event for Next.js spans.\n * This function is used to enhance the span with additional information such as the route, the method, the headers, etc.\n * It is called for every span that is started by Next.js.\n * @param span The span that is starting.\n */\nexport function handleOnSpanStart(span: Span): void {\n  const spanAttributes = spanToJSON(span).data;\n  const rootSpan = getRootSpan(span);\n  const rootSpanAttributes = spanToJSON(rootSpan).data;\n  const isRootSpan = span === rootSpan;\n\n  dropMiddlewareTunnelRequests(span, spanAttributes);\n\n  // What we do in this glorious piece of code, is hoist any information about parameterized routes from spans emitted\n  // by Next.js via the `next.route` attribute, up to the transaction by setting the http.route attribute.\n  if (typeof spanAttributes?.[ATTR_NEXT_ROUTE] === 'string') {\n    // Only hoist the http.route attribute if the transaction doesn't already have it\n    if (\n      // eslint-disable-next-line deprecation/deprecation\n      (rootSpanAttributes?.[ATTR_HTTP_REQUEST_METHOD] || rootSpanAttributes?.[SEMATTRS_HTTP_METHOD]) &&\n      !rootSpanAttributes?.[ATTR_HTTP_ROUTE]\n    ) {\n      const route = spanAttributes[ATTR_NEXT_ROUTE].replace(/\\/route$/, '');\n      rootSpan.updateName(route);\n      rootSpan.setAttribute(ATTR_HTTP_ROUTE, route);\n      // Preserving the original attribute despite internally not depending on it\n      rootSpan.setAttribute(ATTR_NEXT_ROUTE, route);\n\n      // Update the isolation scope's transaction name so that non-transaction events\n      // (e.g. captureMessage, captureException) also get the parameterized route.\n      // eslint-disable-next-line deprecation/deprecation\n      const method = rootSpanAttributes?.[ATTR_HTTP_REQUEST_METHOD] || rootSpanAttributes?.[SEMATTRS_HTTP_METHOD];\n      if (typeof method === 'string') {\n        getIsolationScope().setTransactionName(`${method} ${route}`);\n      }\n\n      // Check if this is a Vercel cron request and start a check-in\n      maybeStartCronCheckIn(rootSpan, route);\n\n      // Enrich queue consumer spans (Vercel Queue push delivery via CloudEvent)\n      maybeEnrichQueueConsumerSpan(rootSpan);\n    }\n  }\n\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] === 'Middleware.execute') {\n    const middlewareName = spanAttributes[ATTR_NEXT_SPAN_NAME];\n    if (typeof middlewareName === 'string') {\n      rootSpan.updateName(middlewareName);\n      rootSpan.setAttribute(ATTR_HTTP_ROUTE, middlewareName);\n      rootSpan.setAttribute(ATTR_NEXT_SPAN_NAME, middlewareName);\n    }\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto');\n  }\n\n  // We want to skip span data inference for any spans generated by Next.js. Reason being that Next.js emits spans\n  // with patterns (e.g. http.server spans) that will produce confusing data.\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] !== undefined) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto');\n  }\n\n  if (isRootSpan) {\n    const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;\n    addHeadersAsAttributes(headers, rootSpan);\n  }\n\n  // We want to fork the isolation scope for incoming requests\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest' && isRootSpan) {\n    const scopes = getCapturedScopesOnSpan(span);\n\n    const isolationScope = (scopes.isolationScope || getIsolationScope()).clone();\n    const scope = scopes.scope || getCurrentScope();\n\n    const currentScopesPointer = getScopesFromContext(context.active());\n    if (currentScopesPointer) {\n      currentScopesPointer.isolationScope = isolationScope;\n    }\n\n    setCapturedScopesOnSpan(span, scope, isolationScope);\n  }\n\n  maybeEnhanceServerComponentSpanName(span, spanAttributes, rootSpanAttributes);\n\n  // Enrich outgoing http.client spans targeting the Vercel Queues API (producer)\n  maybeEnrichQueueProducerSpan(span);\n}\n","import { type _INTERNAL_RandomSafeContextRunner as RandomSafeContextRunner, debug, GLOBAL_OBJ } from '@sentry/core';\nimport { DEBUG_BUILD } from '../common/debug-build';\n\n// Inline AsyncLocalStorage interface from current types\n// Avoids conflict with resolving it from getBuiltinModule\ntype OriginalAsyncLocalStorage = typeof AsyncLocalStorage;\n\n/**\n * Prepares the global object to generate safe random IDs in cache components contexts\n * See: https://github.com/getsentry/sentry-javascript/blob/ceb003c15973c2d8f437dfb7025eedffbc8bc8b0/packages/core/src/utils/propagationContext.ts#L1\n */\nexport function prepareSafeIdGeneratorContext(): void {\n  const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__');\n  const globalWithSymbol: typeof GLOBAL_OBJ & { [sym]?: RandomSafeContextRunner } = GLOBAL_OBJ;\n\n  // Get initial snapshot - if unavailable, don't set up the wrapper at all\n  const initialSnapshot = getAsyncLocalStorageSnapshot();\n  if (!initialSnapshot) {\n    return;\n  }\n\n  // We store a wrapper function instead of the raw snapshot because in serverless\n  // environments (e.g., Cloudflare Workers), the snapshot is bound to the request\n  // context it was created in. Once that request ends, the snapshot becomes invalid.\n  // The wrapper catches this and creates a fresh snapshot for the current request context.\n  let cachedSnapshot: RandomSafeContextRunner = initialSnapshot;\n\n  globalWithSymbol[sym] = (callback: () => T): T => {\n    try {\n      return cachedSnapshot(callback);\n    } catch (error) {\n      // Only handle AsyncLocalStorage-related errors, rethrow others\n      if (!isAsyncLocalStorageError(error)) {\n        throw error;\n      }\n\n      // Snapshot likely stale, try to get a fresh one and retry\n      const freshSnapshot = getAsyncLocalStorageSnapshot();\n      // No snapshot available, fall back to direct execution\n      if (!freshSnapshot) {\n        return callback();\n      }\n\n      // Update the cached snapshot\n      cachedSnapshot = freshSnapshot;\n\n      // Retry the callback with the fresh snapshot\n      try {\n        return cachedSnapshot(callback);\n      } catch (retryError) {\n        // Only fall back for AsyncLocalStorage errors, rethrow others\n        if (!isAsyncLocalStorageError(retryError)) {\n          throw retryError;\n        }\n        // If fresh snapshot also fails with ALS error, fall back to direct execution\n        return callback();\n      }\n    }\n  };\n\n  DEBUG_BUILD && debug.log('[@sentry/nextjs] Prepared safe random ID generator context');\n}\n\nfunction getAsyncLocalStorage(): OriginalAsyncLocalStorage | undefined {\n  // May exist in the Next.js runtime globals\n  // Doesn't exist in some of our tests\n  if (typeof AsyncLocalStorage !== 'undefined') {\n    return AsyncLocalStorage;\n  }\n\n  // Try to resolve it dynamically without synchronously importing the module\n  // This is done to avoid importing the module synchronously at the top\n  // which means this is safe across runtimes\n  if ('getBuiltinModule' in process && typeof process.getBuiltinModule === 'function') {\n    const { AsyncLocalStorage } = process.getBuiltinModule('async_hooks') ?? {};\n\n    return AsyncLocalStorage as OriginalAsyncLocalStorage;\n  }\n\n  return undefined;\n}\n\nfunction getAsyncLocalStorageSnapshot(): RandomSafeContextRunner | undefined {\n  const als = getAsyncLocalStorage();\n\n  if (!als || typeof als.snapshot !== 'function') {\n    DEBUG_BUILD &&\n      debug.warn(\n        '[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.',\n      );\n    return undefined;\n  }\n\n  return als.snapshot();\n}\n\nfunction isAsyncLocalStorageError(error: unknown): boolean {\n  return error instanceof Error && error.message.includes('AsyncLocalStorage');\n}\n","import {\n  captureException,\n  getIsolationScope,\n  httpRequestToRequestData,\n  isAlreadyCaptured,\n  withScope,\n} from '@sentry/core';\nimport type { NextPageContext } from 'next';\nimport { flushSafelyWithTimeout, waitUntil } from '../utils/responseEnd';\n\ntype ContextOrProps = {\n  req?: NextPageContext['req'];\n  res?: NextPageContext['res'];\n  err?: NextPageContext['err'] | string;\n  pathname?: string;\n  statusCode?: number;\n};\n\n/**\n * Capture the exception passed by nextjs to the `_error` page, adding context data as appropriate.\n *\n * This will not capture the exception if the status code is < 500 or if the pathname is not provided and will thus not return an event ID.\n *\n * @param contextOrProps The data passed to either `getInitialProps` or `render` by nextjs\n * @returns The Sentry event ID, or `undefined` if no event was captured\n */\nexport async function captureUnderscoreErrorException(contextOrProps: ContextOrProps): Promise {\n  const { req, res, err } = contextOrProps;\n\n  // 404s (and other 400-y friends) can trigger `_error`, but we don't want to send them to Sentry\n  const statusCode = res?.statusCode || contextOrProps.statusCode;\n  if (statusCode && statusCode < 500) {\n    return;\n  }\n\n  // In previous versions of the suggested `_error.js` page in which this function is meant to be used, there was a\n  // workaround for https://github.com/vercel/next.js/issues/8592 which involved an extra call to this function, in the\n  // custom error component's `render` method, just in case it hadn't been called by `getInitialProps`. Now that that\n  // issue has been fixed, the second call is unnecessary, but since it lives in user code rather than our code, users\n  // have to be the ones to get rid of it, and guaraneteedly, not all of them will. So, rather than capture the error\n  // twice, we just bail if we sense we're in that now-extraneous second call. (We can tell which function we're in\n  // because Nextjs passes `pathname` to `getInitialProps` but not to `render`.)\n  if (!contextOrProps.pathname) {\n    return;\n  }\n\n  // If the error was already captured (e.g., by wrapped functions in data fetchers),\n  // return the existing event ID instead of capturing it again (needed for lastEventId() to work)\n  if (err && isAlreadyCaptured(err)) {\n    waitUntil(flushSafelyWithTimeout());\n\n    const storedEventId =\n      typeof err === 'object' ? (err as unknown as Record).__sentry_event_id__ : undefined;\n\n    if (typeof storedEventId === 'string') {\n      getIsolationScope().setLastEventId(storedEventId);\n      return storedEventId;\n    }\n\n    return getIsolationScope().lastEventId();\n  }\n\n  const eventId = withScope(scope => {\n    if (req) {\n      const normalizedRequest = httpRequestToRequestData(req);\n      scope.setSDKProcessingMetadata({ normalizedRequest });\n    }\n\n    // If third-party libraries (or users themselves) throw something falsy, we want to capture it as a message (which\n    // is what passing a string to `captureException` will wind up doing)\n    return captureException(err || `_error.js called with falsy error (${err})`, {\n      mechanism: {\n        type: 'auto.function.nextjs.underscore_error',\n        handled: false,\n        data: {\n          function: '_error.getInitialProps',\n        },\n      },\n    });\n  });\n\n  waitUntil(flushSafelyWithTimeout());\n\n  return eventId;\n}\n","// Vendored from: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/client-and-server-references.ts\n\ninterface ServerReferenceInfo {\n  type: 'server-action' | 'use-cache';\n  usedArgs: [boolean, boolean, boolean, boolean, boolean, boolean];\n  hasRestArgs: boolean;\n}\n\nexport interface ServerReference {\n  $$typeof: symbol;\n  $$id: string;\n}\n\nexport type ServerFunction = ServerReference & ((...args: unknown[]) => Promise);\n\nfunction extractInfoFromServerReferenceId(id: string): ServerReferenceInfo {\n  const infoByte = parseInt(id.slice(0, 2), 16);\n  // eslint-disable-next-line no-bitwise\n  const typeBit = (infoByte >> 7) & 0x1;\n  // eslint-disable-next-line no-bitwise\n  const argMask = (infoByte >> 1) & 0x3f;\n  // eslint-disable-next-line no-bitwise\n  const restArgs = infoByte & 0x1;\n  const usedArgs = Array(6);\n\n  for (let index = 0; index < 6; index++) {\n    const bitPosition = 5 - index;\n    // eslint-disable-next-line no-bitwise\n    const bit = (argMask >> bitPosition) & 0x1;\n    usedArgs[index] = bit === 1;\n  }\n\n  return {\n    type: typeBit === 1 ? 'use-cache' : 'server-action',\n    usedArgs: usedArgs as [boolean, boolean, boolean, boolean, boolean, boolean],\n    hasRestArgs: restArgs === 1,\n  };\n}\n\nfunction isServerReference(value: T & Partial): value is T & ServerFunction {\n  return value.$$typeof === Symbol.for('react.server.reference');\n}\n\n/**\n * Check if the function is a use cache function.\n *\n * @param value - The function to check.\n * @returns true if the function is a use cache function, false otherwise.\n */\nexport function isUseCacheFunction(value: T & Partial): value is T & ServerFunction {\n  if (!isServerReference(value)) {\n    return false;\n  }\n\n  const { type } = extractInfoFromServerReferenceId(value.$$id);\n\n  return type === 'use-cache';\n}\n","import type { Span, StartSpanOptions } from '@sentry/core';\nimport {\n  debug,\n  SentryNonRecordingSpan,\n  startInactiveSpan as coreStartInactiveSpan,\n  startSpan as coreStartSpan,\n  startSpanManual as coreStartSpanManual,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { isBuild } from './isBuild';\nimport type { ServerReference } from './isUseCacheFunction';\nimport { isUseCacheFunction } from './isUseCacheFunction';\n\nfunction shouldNoopSpan(callback?: T & Partial): boolean {\n  const isBuildContext = isBuild();\n  const isUseCacheFunctionContext = callback ? isUseCacheFunction(callback) : false;\n\n  if (isUseCacheFunctionContext) {\n    DEBUG_BUILD && debug.log('Skipping span creation in Cache Components context');\n  }\n\n  return isBuildContext || isUseCacheFunctionContext;\n}\n\nfunction createNonRecordingSpan(): Span {\n  return new SentryNonRecordingSpan({\n    traceId: '00000000000000000000000000000000',\n    spanId: '0000000000000000',\n  });\n}\n\n/**\n * Next.js-specific implementation of `startSpan` that skips span creation\n * in Cache Components contexts (which render at build time).\n *\n * When in a Cache Components context, we execute the callback with a non-recording span\n * and return early without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @param callback - Callback function that receives the span\n * @returns The return value of the callback\n */\nexport function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T {\n  if (shouldNoopSpan(callback)) {\n    return callback(createNonRecordingSpan());\n  }\n\n  return coreStartSpan(options, callback);\n}\n\n/**\n *\n * When in a Cache Components context, we execute the callback with a non-recording span\n * and return early without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @param callback - Callback function that receives the span and finish function\n * @returns The return value of the callback\n */\nexport function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\n  if (shouldNoopSpan(callback)) {\n    const nonRecordingSpan = createNonRecordingSpan();\n    return callback(nonRecordingSpan, () => nonRecordingSpan.end());\n  }\n\n  return coreStartSpanManual(options, callback);\n}\n\n/**\n *\n * When in a Cache Components context, we return a non-recording span and return early\n * without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @returns A non-recording span (in Cache Components context) or the created span\n */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\n  if (shouldNoopSpan()) {\n    return createNonRecordingSpan();\n  }\n\n  return coreStartInactiveSpan(options);\n}\n","import {\n  captureException,\n  getActiveSpan,\n  getCurrentScope,\n  getIsolationScope,\n  getRootSpan,\n  getTraceData,\n  httpRequestToRequestData,\n  isThenable,\n} from '@sentry/core';\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport { TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL } from '../span-attributes-with-logic-attached';\n\n/**\n * Wraps a function that potentially throws. If it does, the error is passed to `captureException` and rethrown.\n *\n * Note: This function turns the wrapped function into an asynchronous one.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withErrorInstrumentation any>(\n  origFunction: F,\n): (...params: Parameters) => Promise> {\n  return async function (this: unknown, ...origFunctionArguments: Parameters): Promise> {\n    try {\n      return await origFunction.apply(this, origFunctionArguments);\n    } catch (e) {\n      // TODO: Extract error logic from `withSentry` in here or create a new wrapper with said logic or something like that.\n      captureException(e, {\n        // TODO: check if origFunction.name actually returns the correct name or minified garbage\n        // in this case, we can add another argument to this wrapper with the respective function name\n        mechanism: { handled: false, type: 'auto.function.nextjs.wrapped', data: { function: origFunction.name } },\n      });\n      throw e;\n    }\n  };\n}\n\n/**\n * Calls a server-side data fetching function (that takes a `req` and `res` object in its context) with tracing\n * instrumentation. A transaction will be created for the incoming request (if it doesn't already exist) in addition to\n * a span for the wrapped data fetching function.\n *\n * All of the above happens in an isolated domain, meaning all thrown errors will be associated with the correct span.\n *\n * @param origDataFetcher The data fetching method to call.\n * @param origFunctionArguments The arguments to call the data fetching method with.\n * @param req The data fetching function's request object.\n * @param res The data fetching function's response object.\n * @param options Options providing details for the created transaction and span.\n * @returns what the data fetching method call returned.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withTracedServerSideDataFetcher Promise | any>(\n  origDataFetcher: F,\n  req: IncomingMessage,\n  res: ServerResponse,\n  options: {\n    /** Parameterized route of the request - will be used for naming the transaction. */\n    requestedRouteName: string;\n    /** Name of the route the data fetcher was defined in - will be used for describing the data fetcher's span. */\n    dataFetcherRouteName: string;\n    /** Name of the data fetching method - will be used for describing the data fetcher's span. */\n    dataFetchingMethodName: string;\n  },\n): (...params: Parameters) => Promise<{ data: ReturnType; sentryTrace?: string; baggage?: string }> {\n  return async function (\n    this: unknown,\n    ...args: Parameters\n  ): Promise<{ data: ReturnType; sentryTrace?: string; baggage?: string }> {\n    const normalizedRequest = httpRequestToRequestData(req);\n    getCurrentScope().setTransactionName(`${options.dataFetchingMethodName} (${options.dataFetcherRouteName})`);\n    getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n    const span = getActiveSpan();\n\n    // Only set the route backfill if the span is not for /_error\n    if (span && options.requestedRouteName !== '/_error') {\n      const root = getRootSpan(span);\n      root.setAttribute(TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL, options.requestedRouteName);\n    }\n\n    const { 'sentry-trace': sentryTrace, baggage } = getTraceData();\n\n    return {\n      sentryTrace: sentryTrace,\n      baggage: baggage,\n      data: await origDataFetcher.apply(this, args),\n    };\n  };\n}\n\n/**\n * Call a data fetcher and trace it. Only traces the function if there is an active transaction on the scope.\n *\n * We only do the following until we move transaction creation into this function: When called, the wrapped function\n * will also update the name of the active transaction with a parameterized route provided via the `options` argument.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function callDataFetcherTraced Promise | any>(\n  origFunction: F,\n  origFunctionArgs: Parameters,\n): Promise> {\n  try {\n    return await origFunction(...origFunctionArgs);\n  } catch (e) {\n    captureException(e, { mechanism: { handled: false, type: 'auto.function.nextjs.data_fetcher' } });\n    throw e;\n  }\n}\n\n/**\n * Extracts the params and searchParams from the props object.\n *\n * Depending on the next version, params and searchParams may be a promise which we do not want to resolve in this function.\n */\nexport function maybeExtractSynchronousParamsAndSearchParams(props: unknown): {\n  params: Record | undefined;\n  searchParams: Record | undefined;\n} {\n  let params =\n    props && typeof props === 'object' && 'params' in props\n      ? (props.params as Record | Promise> | undefined)\n      : undefined;\n  if (isThenable(params)) {\n    params = undefined;\n  }\n\n  let searchParams =\n    props && typeof props === 'object' && 'searchParams' in props\n      ? (props.searchParams as Record | Promise> | undefined)\n      : undefined;\n  if (isThenable(searchParams)) {\n    searchParams = undefined;\n  }\n\n  return { params, searchParams };\n}\n","import type { GetStaticProps } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { callDataFetcherTraced, withErrorInstrumentation } from '../utils/wrapperUtils';\n\ntype Props = { [key: string]: unknown };\n\n/**\n * Create a wrapped version of the user's exported `getStaticProps` function\n *\n * @param origGetStaticProps The user's `getStaticProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetStaticPropsWithSentry(\n  origGetStaticPropsa: GetStaticProps,\n  _parameterizedRoute: string,\n): GetStaticProps {\n  return new Proxy(origGetStaticPropsa, {\n    apply: async (wrappingTarget, thisArg, args: Parameters>) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const errorWrappedGetStaticProps = withErrorInstrumentation(wrappingTarget);\n      return callDataFetcherTraced(errorWrappedGetStaticProps, args);\n    },\n  });\n}\n","import type { NextPage } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype GetInitialProps = Required['getInitialProps'];\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function\n *\n * @param origGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetInitialPropsWithSentry(origGetInitialProps: GetInitialProps): GetInitialProps {\n  return new Proxy(origGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: context.pathname,\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: initialProps,\n          baggage,\n          sentryTrace,\n        }: {\n          data?: unknown;\n          baggage?: string;\n          sentryTrace?: string;\n        } = (await tracedGetInitialProps.apply(thisArg, args)) ?? {}; // Next.js allows undefined to be returned from a getInitialPropsFunction.\n\n        if (typeof initialProps === 'object' && initialProps !== null) {\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (sentryTrace) {\n            (initialProps as Record)._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (initialProps as Record)._sentryBaggage = baggage;\n          }\n        }\n\n        return initialProps;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type App from 'next/app';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype AppGetInitialProps = (typeof App)['getInitialProps'];\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom app (\"_app.js\").\n *\n * @param origAppGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapAppGetInitialPropsWithSentry(origAppGetInitialProps: AppGetInitialProps): AppGetInitialProps {\n  return new Proxy(origAppGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context.ctx;\n\n      const errorWrappedAppGetInitialProps = withErrorInstrumentation(wrappingTarget);\n\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedAppGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_app',\n          requestedRouteName: context.ctx.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: appGetInitialProps,\n          sentryTrace,\n          baggage,\n        }: {\n          data?: unknown;\n          sentryTrace?: string;\n          baggage?: string;\n        } = await tracedGetInitialProps.apply(thisArg, args);\n\n        if (typeof appGetInitialProps === 'object' && appGetInitialProps !== null) {\n          // Per definition, `pageProps` is not optional, however an increased amount of users doesn't seem to call\n          // `App.getInitialProps(appContext)` in their custom `_app` pages which is required as per\n          // https://nextjs.org/docs/advanced-features/custom-app - resulting in missing `pageProps`.\n          // For this reason, we just handle the case where `pageProps` doesn't exist explicitly.\n          if (!(appGetInitialProps as Record).pageProps) {\n            (appGetInitialProps as Record).pageProps = {};\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (sentryTrace) {\n            (appGetInitialProps as { pageProps: Record }).pageProps._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (appGetInitialProps as { pageProps: Record }).pageProps._sentryBaggage = baggage;\n          }\n        }\n\n        return appGetInitialProps;\n      } else {\n        return errorWrappedAppGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type Document from 'next/document';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype DocumentGetInitialProps = typeof Document.getInitialProps;\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom document (\"_document.js\").\n *\n * @param origDocumentGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapDocumentGetInitialPropsWithSentry(\n  origDocumentGetInitialProps: DocumentGetInitialProps,\n): DocumentGetInitialProps {\n  return new Proxy(origDocumentGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_document',\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const { data } = await tracedGetInitialProps.apply(thisArg, args);\n        return data;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type { NextPageContext } from 'next';\nimport type { ErrorProps } from 'next/error';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype ErrorGetInitialProps = (context: NextPageContext) => Promise;\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom error page (\"_error.js\").\n *\n * @param origErrorGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapErrorGetInitialPropsWithSentry(\n  origErrorGetInitialProps: ErrorGetInitialProps,\n): ErrorGetInitialProps {\n  return new Proxy(origErrorGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_error',\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: errorGetInitialProps,\n          baggage,\n          sentryTrace,\n        }: {\n          data?: unknown;\n          baggage?: string;\n          sentryTrace?: string;\n        } = await tracedGetInitialProps.apply(thisArg, args);\n\n        if (typeof errorGetInitialProps === 'object' && errorGetInitialProps !== null) {\n          if (sentryTrace) {\n            // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n            (errorGetInitialProps as Record)._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (errorGetInitialProps as Record)._sentryBaggage = baggage;\n          }\n        }\n\n        return errorGetInitialProps;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type { GetServerSideProps } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\n/**\n * Create a wrapped version of the user's exported `getServerSideProps` function\n *\n * @param origGetServerSideProps The user's `getServerSideProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetServerSidePropsWithSentry(\n  origGetServerSideProps: GetServerSideProps,\n  parameterizedRoute: string,\n): GetServerSideProps {\n  return new Proxy(origGetServerSideProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetServerSideProps = withErrorInstrumentation(wrappingTarget);\n      const tracedGetServerSideProps = withTracedServerSideDataFetcher(errorWrappedGetServerSideProps, req, res, {\n        dataFetcherRouteName: parameterizedRoute,\n        requestedRouteName: parameterizedRoute,\n        dataFetchingMethodName: 'getServerSideProps',\n      });\n\n      const {\n        data: serverSideProps,\n        baggage,\n        sentryTrace,\n      }: {\n        data?: unknown;\n        baggage?: string;\n        sentryTrace?: string;\n      } = await (tracedGetServerSideProps.apply(thisArg, args) as ReturnType);\n\n      if (typeof serverSideProps === 'object' && serverSideProps !== null && 'props' in serverSideProps) {\n        // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n        if (sentryTrace) {\n          (serverSideProps.props as Record)._sentryTraceData = sentryTrace;\n        }\n\n        // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n        if (baggage) {\n          (serverSideProps.props as Record)._sentryBaggage = baggage;\n        }\n      }\n\n      return serverSideProps;\n    },\n  });\n}\n","import { isError } from '@sentry/core';\n\n/**\n * Determines whether input is a Next.js not-found error.\n * https://beta.nextjs.org/docs/api-reference/notfound#notfound\n */\nexport function isNotFoundNavigationError(subject: unknown): boolean {\n  return (\n    isError(subject) &&\n    ['NEXT_NOT_FOUND', 'NEXT_HTTP_ERROR_FALLBACK;404'].includes(\n      (subject as Error & { digest?: unknown }).digest as string,\n    )\n  );\n}\n\n/**\n * Determines whether input is a Next.js redirect error.\n * https://beta.nextjs.org/docs/api-reference/redirect#redirect\n */\nexport function isRedirectNavigationError(subject: unknown): boolean {\n  return (\n    isError(subject) &&\n    typeof (subject as Error & { digest?: unknown }).digest === 'string' &&\n    (subject as Error & { digest: string }).digest.startsWith('NEXT_REDIRECT;') // a redirect digest looks like \"NEXT_REDIRECT;[redirect path]\"\n  );\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getIsolationScope,\n  handleCallbackErrors,\n  SPAN_STATUS_ERROR,\n  SPAN_STATUS_OK,\n  winterCGHeadersToDict,\n} from '@sentry/core';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from '../common/nextNavigationErrorUtils';\nimport type { ServerComponentContext } from '../common/types';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\n\n/**\n * Wraps an `app` directory server component with Sentry error instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapServerComponentWithSentry any>(\n  appDirComponent: F,\n  context: ServerComponentContext,\n): F {\n  // Even though users may define server components as async functions, for the client bundles\n  // Next.js will turn them into synchronous functions and it will transform any `await`s into instances of the `use`\n  // hook. 🤯\n  return new Proxy(appDirComponent, {\n    apply: (originalFunction, thisArg, args) => {\n      const isolationScope = getIsolationScope();\n\n      const headersDict = context.headers ? winterCGHeadersToDict(context.headers) : undefined;\n\n      isolationScope.setSDKProcessingMetadata({\n        normalizedRequest: {\n          headers: headersDict,\n        } satisfies RequestEventData,\n      });\n\n      return handleCallbackErrors(\n        () => originalFunction.apply(thisArg, args),\n        error => {\n          const span = getActiveSpan();\n          const { componentRoute, componentType } = context;\n          let shouldCapture = true;\n          isolationScope.setTransactionName(`${componentType} Server Component (${componentRoute})`);\n\n          if (span) {\n            if (isNotFoundNavigationError(error)) {\n              // We don't want to report \"not-found\"s\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n            } else if (isRedirectNavigationError(error)) {\n              // We don't want to report redirects\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_OK });\n            } else {\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n            }\n          }\n\n          if (shouldCapture) {\n            captureException(error, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.server_component',\n              },\n            });\n          }\n        },\n        () => {\n          waitUntil(flushSafelyWithTimeout());\n        },\n      );\n    },\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getCapturedScopesOnSpan,\n  getIsolationScope,\n  getRootSpan,\n  handleCallbackErrors,\n  propagationContextFromHeaders,\n  Scope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setCapturedScopesOnSpan,\n  setHttpStatus,\n  winterCGHeadersToDict,\n  withIsolationScope,\n  withScope,\n} from '@sentry/core';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\nimport type { RouteHandlerContext } from './types';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\nimport { commonObjectToIsolationScope } from './utils/tracingUtils';\n\n/**\n * Wraps a Next.js App Router Route handler with Sentry error and performance instrumentation.\n *\n * NOTICE: This wrapper is for App Router API routes. If you are looking to wrap Pages Router API routes use `wrapApiHandlerWithSentry` instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapRouteHandlerWithSentry any>(\n  routeHandler: F,\n  context: RouteHandlerContext,\n): (...args: Parameters) => ReturnType extends Promise ? ReturnType : Promise> {\n  const { method, parameterizedRoute, headers } = context;\n\n  return new Proxy(routeHandler, {\n    apply: async (originalFunction, thisArg, args) => {\n      const activeSpan = getActiveSpan();\n      const rootSpan = activeSpan ? getRootSpan(activeSpan) : undefined;\n\n      let edgeRuntimeIsolationScopeOverride: Scope | undefined;\n      if (rootSpan && process.env.NEXT_RUNTIME === 'edge') {\n        const isolationScope = commonObjectToIsolationScope(headers);\n        const { scope } = getCapturedScopesOnSpan(rootSpan);\n        setCapturedScopesOnSpan(rootSpan, scope ?? new Scope(), isolationScope);\n\n        edgeRuntimeIsolationScopeOverride = isolationScope;\n\n        rootSpan.updateName(`${method} ${parameterizedRoute}`);\n        rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'route');\n        rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.server');\n      }\n\n      return withIsolationScope(\n        process.env.NEXT_RUNTIME === 'edge' ? edgeRuntimeIsolationScopeOverride : getIsolationScope(),\n        () => {\n          return withScope(async scope => {\n            scope.setTransactionName(`${method} ${parameterizedRoute}`);\n\n            if (process.env.NEXT_RUNTIME === 'edge') {\n              const completeHeadersDict: Record = headers ? winterCGHeadersToDict(headers) : {};\n              const incomingPropagationContext = propagationContextFromHeaders(\n                completeHeadersDict['sentry-trace'],\n                completeHeadersDict['baggage'],\n              );\n              scope.setPropagationContext(incomingPropagationContext);\n              scope.setSDKProcessingMetadata({\n                normalizedRequest: {\n                  method,\n                  headers: completeHeadersDict,\n                } satisfies RequestEventData,\n              });\n            }\n\n            const response: Response = await handleCallbackErrors(\n              () => originalFunction.apply(thisArg, args),\n              error => {\n                // Next.js throws errors when calling `redirect()`. We don't wanna report these.\n                if (isRedirectNavigationError(error)) {\n                  // Don't do anything\n                } else if (isNotFoundNavigationError(error)) {\n                  if (activeSpan) {\n                    setHttpStatus(activeSpan, 404);\n                  }\n                  if (rootSpan) {\n                    setHttpStatus(rootSpan, 404);\n                  }\n                } else {\n                  captureException(error, {\n                    mechanism: {\n                      handled: false,\n                      type: 'auto.function.nextjs.route_handler',\n                    },\n                  });\n                }\n              },\n              () => {\n                waitUntil(flushSafelyWithTimeout());\n              },\n            );\n\n            try {\n              if (response.status) {\n                if (activeSpan) {\n                  setHttpStatus(activeSpan, response.status);\n                }\n                if (rootSpan) {\n                  setHttpStatus(rootSpan, response.status);\n                }\n              }\n            } catch {\n              // best effort - response may be undefined?\n            }\n\n            return response;\n          });\n        },\n      );\n    },\n  });\n}\n","import { _INTERNAL_safeDateNow, captureCheckIn } from '@sentry/core';\nimport type { NextApiRequest } from 'next';\nimport type { VercelCronsConfig } from '../types';\n\ntype EdgeRequest = {\n  nextUrl: URL;\n  headers: Headers;\n};\n\n/**\n * Wraps a function with Sentry crons instrumentation by automatically sending check-ins for the given Vercel crons config.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapApiHandlerWithSentryVercelCrons any>(\n  handler: F,\n  vercelCronsConfig: VercelCronsConfig,\n): F {\n  return new Proxy(handler, {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    apply: (originalFunction, thisArg, args: any[]) => {\n      if (!args?.[0]) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const [req] = args as [NextApiRequest | EdgeRequest];\n\n      let maybePromiseResult;\n      const cronsKey = 'nextUrl' in req ? req.nextUrl.pathname : req.url;\n      const userAgentHeader = 'nextUrl' in req ? req.headers.get('user-agent') : req.headers['user-agent'];\n\n      if (\n        !vercelCronsConfig || // do nothing if vercel crons config is missing\n        !userAgentHeader?.includes('vercel-cron') // do nothing if endpoint is not called from vercel crons\n      ) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const vercelCron = vercelCronsConfig.find(vercelCron => vercelCron.path === cronsKey);\n\n      if (!vercelCron?.path || !vercelCron.schedule) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const monitorSlug = vercelCron.path;\n\n      const checkInId = captureCheckIn(\n        {\n          monitorSlug,\n          status: 'in_progress',\n        },\n        {\n          maxRuntime: 60 * 12, // (minutes) so 12 hours - just a very high arbitrary number since we don't know the actual duration of the users cron job\n          schedule: {\n            type: 'crontab',\n            value: vercelCron.schedule,\n          },\n        },\n      );\n\n      const startTime = _INTERNAL_safeDateNow() / 1000;\n\n      const handleErrorCase = (): void => {\n        captureCheckIn({\n          checkInId,\n          monitorSlug,\n          status: 'error',\n          duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n        });\n      };\n\n      try {\n        maybePromiseResult = originalFunction.apply(thisArg, args);\n      } catch (e) {\n        handleErrorCase();\n        throw e;\n      }\n\n      if (typeof maybePromiseResult === 'object' && maybePromiseResult !== null && 'then' in maybePromiseResult) {\n        Promise.resolve(maybePromiseResult).then(\n          () => {\n            captureCheckIn({\n              checkInId,\n              monitorSlug,\n              status: 'ok',\n              duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n            });\n          },\n          () => {\n            handleErrorCase();\n          },\n        );\n\n        // It is very important that we return the original promise here, because Next.js attaches various properties\n        // to that promise and will throw if they are not on the returned value.\n        return maybePromiseResult;\n      } else {\n        captureCheckIn({\n          checkInId,\n          monitorSlug,\n          status: 'ok',\n          duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n        });\n        return maybePromiseResult;\n      }\n    },\n  });\n}\n","import type { TransactionSource } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getCurrentScope,\n  getRootSpan,\n  handleCallbackErrors,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setCapturedScopesOnSpan,\n  startSpan,\n  winterCGRequestToRequestData,\n  withIsolationScope,\n} from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\nimport type { EdgeRouteHandler } from '../edge/types';\n\n/**\n * Wraps Next.js middleware with Sentry error and performance instrumentation.\n *\n * @param middleware The middleware handler.\n * @returns a wrapped middleware handler.\n */\nexport function wrapMiddlewareWithSentry(\n  middleware: H,\n): (...params: Parameters) => Promise> {\n  return new Proxy(middleware, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      const tunnelRoute =\n        '_sentryRewritesTunnelPath' in globalThis\n          ? (globalThis as Record)._sentryRewritesTunnelPath\n          : undefined;\n\n      if (tunnelRoute && typeof tunnelRoute === 'string') {\n        const req: unknown = args[0];\n        // Check if the current request matches the tunnel route\n        if (req instanceof Request) {\n          const url = new URL(req.url);\n          const isTunnelRequest = url.pathname.startsWith(tunnelRoute);\n\n          if (isTunnelRequest) {\n            // Create a simple response that mimics NextResponse.next() so we don't need to import internals here\n            // which breaks next 13 apps\n            // https://github.com/vercel/next.js/blob/c12c9c1f78ad384270902f0890dc4cd341408105/packages/next/src/server/web/spec-extension/response.ts#L146\n            return new Response(null, {\n              status: 200,\n              headers: {\n                'x-middleware-next': '1',\n              },\n            }) as ReturnType;\n          }\n        }\n      }\n      // TODO: We still should add central isolation scope creation for when our build-time instrumentation does not work anymore with turbopack.\n      return withIsolationScope(isolationScope => {\n        const req: unknown = args[0];\n        const currentScope = getCurrentScope();\n\n        let spanName: string;\n        let spanSource: TransactionSource;\n\n        if (req instanceof Request) {\n          isolationScope.setSDKProcessingMetadata({\n            normalizedRequest: winterCGRequestToRequestData(req),\n          });\n          spanName = `middleware ${req.method}`;\n          spanSource = 'url';\n        } else {\n          spanName = 'middleware';\n          spanSource = 'component';\n        }\n\n        currentScope.setTransactionName(spanName);\n\n        const activeSpan = getActiveSpan();\n\n        if (activeSpan) {\n          // If there is an active span, it likely means that the automatic Next.js OTEL instrumentation worked and we can\n          // rely on that for parameterization.\n          spanName = 'middleware';\n          spanSource = 'component';\n\n          const rootSpan = getRootSpan(activeSpan);\n          if (rootSpan) {\n            setCapturedScopesOnSpan(rootSpan, currentScope, isolationScope);\n          }\n        }\n\n        return startSpan(\n          {\n            name: spanName,\n            op: 'http.server.middleware',\n            attributes: {\n              [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: spanSource,\n              [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.nextjs.wrap_middleware',\n            },\n          },\n          () => {\n            return handleCallbackErrors(\n              () => wrappingTarget.apply(thisArg, args),\n              error => {\n                captureException(error, {\n                  mechanism: {\n                    type: 'auto.function.nextjs.wrap_middleware',\n                    handled: false,\n                  },\n                });\n              },\n              () => {\n                waitUntil(flushSafelyWithTimeout());\n              },\n            );\n          },\n        );\n      });\n    },\n  });\n}\n","import {\n  addNonEnumerableProperty,\n  captureException,\n  extractTraceparentData,\n  getCurrentScope,\n  withIsolationScope,\n} from '@sentry/core';\n\ninterface FunctionComponent {\n  (...args: unknown[]): unknown;\n}\n\ninterface ClassComponent {\n  new (...args: unknown[]): {\n    props?: unknown;\n    render(...args: unknown[]): unknown;\n  };\n}\n\nfunction storeCapturedEventIdOnError(error: unknown, eventId: string | undefined): void {\n  if (error && typeof error === 'object') {\n    addNonEnumerableProperty(error as Record, '__sentry_event_id__', eventId);\n  }\n}\n\nfunction isReactClassComponent(target: unknown): target is ClassComponent {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return typeof target === 'function' && target?.prototype?.isReactComponent;\n}\n\n/**\n * Wraps a page component with Sentry error instrumentation.\n */\nexport function wrapPageComponentWithSentry(pageComponent: FunctionComponent | ClassComponent): unknown {\n  if (isReactClassComponent(pageComponent)) {\n    return class SentryWrappedPageComponent extends pageComponent {\n      public render(...args: unknown[]): unknown {\n        return withIsolationScope(() => {\n          const scope = getCurrentScope();\n          // We extract the sentry trace data that is put in the component props by datafetcher wrappers\n          const sentryTraceData =\n            typeof this.props === 'object' &&\n            this.props !== null &&\n            '_sentryTraceData' in this.props &&\n            typeof this.props._sentryTraceData === 'string'\n              ? this.props._sentryTraceData\n              : undefined;\n\n          if (sentryTraceData) {\n            const traceparentData = extractTraceparentData(sentryTraceData);\n            scope.setContext('trace', {\n              span_id: traceparentData?.parentSpanId,\n              trace_id: traceparentData?.traceId,\n            });\n          }\n\n          try {\n            return super.render(...args);\n          } catch (e) {\n            const eventId = captureException(e, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.page_class',\n              },\n            });\n            storeCapturedEventIdOnError(e, eventId);\n            throw e;\n          }\n        });\n      }\n    };\n  } else if (typeof pageComponent === 'function') {\n    return new Proxy(pageComponent, {\n      apply(target, thisArg, argArray: [{ _sentryTraceData?: string } | undefined]) {\n        return withIsolationScope(() => {\n          const scope = getCurrentScope();\n          // We extract the sentry trace data that is put in the component props by datafetcher wrappers\n          const sentryTraceData = argArray?.[0]?._sentryTraceData;\n\n          if (sentryTraceData) {\n            const traceparentData = extractTraceparentData(sentryTraceData);\n            scope.setContext('trace', {\n              span_id: traceparentData?.parentSpanId,\n              trace_id: traceparentData?.traceId,\n            });\n          }\n\n          try {\n            return target.apply(thisArg, argArray);\n          } catch (e) {\n            const eventId = captureException(e, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.page_function',\n              },\n            });\n            storeCapturedEventIdOnError(e, eventId);\n            throw e;\n          }\n        });\n      },\n    });\n  } else {\n    return pageComponent;\n  }\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getIsolationScope,\n  handleCallbackErrors,\n  SPAN_STATUS_ERROR,\n  SPAN_STATUS_OK,\n  winterCGHeadersToDict,\n} from '@sentry/core';\nimport type { GenerationFunctionContext } from '../common/types';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\n\n/**\n * Wraps a generation function (e.g. generateMetadata) with Sentry error instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapGenerationFunctionWithSentry any>(\n  generationFunction: F,\n  context: GenerationFunctionContext,\n): F {\n  return new Proxy(generationFunction, {\n    apply: (originalFunction, thisArg, args) => {\n      const isolationScope = getIsolationScope();\n\n      let headers = undefined;\n      // We try-catch here just in case anything goes wrong with the async storage since it is Next.js internal API\n      try {\n        headers = context.requestAsyncStorage?.getStore()?.headers;\n      } catch {\n        /** empty */\n      }\n\n      const headersDict = headers ? winterCGHeadersToDict(headers) : undefined;\n\n      isolationScope.setSDKProcessingMetadata({\n        normalizedRequest: {\n          headers: headersDict,\n        } satisfies RequestEventData,\n      });\n\n      return handleCallbackErrors(\n        () => originalFunction.apply(thisArg, args),\n        error => {\n          const span = getActiveSpan();\n          const { componentRoute, componentType, generationFunctionIdentifier } = context;\n          let shouldCapture = true;\n          isolationScope.setTransactionName(`${componentType}.${generationFunctionIdentifier} (${componentRoute})`);\n\n          if (span) {\n            if (isNotFoundNavigationError(error)) {\n              // We don't want to report \"not-found\"s\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n            } else if (isRedirectNavigationError(error)) {\n              // We don't want to report redirects\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_OK });\n            } else {\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n            }\n          }\n\n          if (shouldCapture) {\n            captureException(error, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.generation_function',\n                data: {\n                  function: generationFunctionIdentifier,\n                },\n              },\n            });\n          }\n        },\n        () => {\n          waitUntil(flushSafelyWithTimeout());\n        },\n      );\n    },\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  continueTrace,\n  debug,\n  getActiveSpan,\n  getClient,\n  getIsolationScope,\n  handleCallbackErrors,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  SPAN_STATUS_ERROR,\n  startSpan,\n  withIsolationScope,\n} from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\n\ninterface Options {\n  formData?: FormData;\n\n  /**\n   * Headers as returned from `headers()`.\n   *\n   * Currently accepts both a plain `Headers` object and `Promise` to be compatible with async APIs introduced in Next.js 15: https://github.com/vercel/next.js/pull/68812\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  headers?: Headers | Promise;\n\n  /**\n   * Whether the server action response should be included in any events captured within the server action.\n   */\n  recordResponse?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withServerActionInstrumentation any>(\n  serverActionName: string,\n  callback: A,\n): Promise>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withServerActionInstrumentation any>(\n  serverActionName: string,\n  options: Options,\n  callback: A,\n): Promise>;\n\n/**\n * Wraps a Next.js Server Action implementation with Sentry Error and Performance instrumentation.\n */\nexport function withServerActionInstrumentation unknown>(\n  ...args: [string, Options, A] | [string, A]\n): Promise> {\n  if (typeof args[1] === 'function') {\n    const [serverActionName, callback] = args;\n    return withServerActionInstrumentationImplementation(serverActionName, {}, callback);\n  } else {\n    const [serverActionName, options, callback] = args;\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    return withServerActionInstrumentationImplementation(serverActionName, options, callback!);\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function withServerActionInstrumentationImplementation any>(\n  serverActionName: string,\n  options: Options,\n  callback: A,\n): Promise> {\n  return withIsolationScope(async isolationScope => {\n    const sendDefaultPii = getClient()?.getOptions().sendDefaultPii;\n\n    let sentryTraceHeader;\n    let baggageHeader;\n    const fullHeadersObject: Record = {};\n    try {\n      const awaitedHeaders: Headers = await options.headers;\n      sentryTraceHeader = awaitedHeaders?.get('sentry-trace') ?? undefined;\n      baggageHeader = awaitedHeaders?.get('baggage');\n      awaitedHeaders?.forEach((value, key) => {\n        fullHeadersObject[key] = value;\n      });\n    } catch {\n      DEBUG_BUILD &&\n        debug.warn(\n          \"Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.\",\n        );\n    }\n\n    isolationScope.setTransactionName(`serverAction/${serverActionName}`);\n    isolationScope.setSDKProcessingMetadata({\n      normalizedRequest: {\n        headers: fullHeadersObject,\n      } satisfies RequestEventData,\n    });\n\n    // Normally, there is an active span here (from Next.js OTEL) and we just use that as parent\n    // Else, we manually continueTrace from the incoming headers\n    const continueTraceIfNoActiveSpan = getActiveSpan()\n      ? (_opts: unknown, callback: () => T) => callback()\n      : continueTrace;\n\n    return continueTraceIfNoActiveSpan(\n      {\n        sentryTrace: sentryTraceHeader,\n        baggage: baggageHeader,\n      },\n      async () => {\n        try {\n          return await startSpan(\n            {\n              op: 'function.server_action',\n              name: `serverAction/${serverActionName}`,\n              forceTransaction: true,\n              attributes: {\n                [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n                [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.nextjs.server_action',\n              },\n            },\n            async span => {\n              // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n              const result = await handleCallbackErrors(callback, error => {\n                if (isNotFoundNavigationError(error)) {\n                  // We don't want to report \"not-found\"s\n                  span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n                } else if (isRedirectNavigationError(error)) {\n                  // Don't do anything for redirects\n                } else {\n                  span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n                  captureException(error, {\n                    mechanism: {\n                      handled: false,\n                      type: 'auto.function.nextjs.server_action',\n                    },\n                  });\n                }\n              });\n\n              if (options.recordResponse !== undefined ? options.recordResponse : sendDefaultPii) {\n                getIsolationScope().setExtra('server_action_result', result);\n              }\n\n              if (options.formData) {\n                options.formData.forEach((value, key) => {\n                  getIsolationScope().setExtra(\n                    `server_action_form_data.${key}`,\n                    typeof value === 'string' ? value : '[non-string value]',\n                  );\n                });\n              }\n\n              return result;\n            },\n          );\n        } finally {\n          waitUntil(flushSafelyWithTimeout());\n        }\n      },\n    );\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport { captureException, headersToDict, withScope } from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\n\ntype RequestInfo = {\n  path: string;\n  method: string;\n  headers: Record;\n};\n\ntype ErrorContext = {\n  routerKind: string; // 'Pages Router' | 'App Router'\n  routePath: string;\n  routeType: string; // 'render' | 'route' | 'middleware'\n};\n\n/**\n * Reports errors passed to the the Next.js `onRequestError` instrumentation hook.\n */\nexport function captureRequestError(error: unknown, request: RequestInfo, errorContext: ErrorContext): void {\n  withScope(scope => {\n    scope.setSDKProcessingMetadata({\n      normalizedRequest: {\n        headers: headersToDict(request.headers),\n        method: request.method,\n      } satisfies RequestEventData,\n    });\n\n    scope.setContext('nextjs', {\n      request_path: request.path,\n      router_kind: errorContext.routerKind,\n      router_path: errorContext.routePath,\n      route_type: errorContext.routeType,\n    });\n\n    scope.setTransactionName(`${request.method} ${errorContext.routePath}`);\n\n    captureException(error, {\n      mechanism: {\n        handled: false,\n        type: 'auto.function.nextjs.on_request_error',\n      },\n    });\n\n    waitUntil(flushSafelyWithTimeout());\n  });\n}\n","import {\n  captureException,\n  continueTrace,\n  debug,\n  getActiveSpan,\n  httpRequestToRequestData,\n  isString,\n  objectify,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setHttpStatus,\n  startSpanManual,\n  withIsolationScope,\n} from '@sentry/core';\nimport type { NextApiRequest } from 'next';\nimport type { AugmentedNextApiResponse, NextApiHandler } from '../types';\nimport { flushSafelyWithTimeout, waitUntil } from '../utils/responseEnd';\nimport { dropNextjsRootContext, escapeNextjsTracing } from '../utils/tracingUtils';\n\nexport type AugmentedNextApiRequest = NextApiRequest & {\n  __withSentry_applied__?: boolean;\n};\n\n/**\n * Wrap the given API route handler with error nad performance monitoring.\n *\n * @param apiHandler The handler exported from the user's API page route file, which may or may not already be\n * wrapped with `withSentry`\n * @param parameterizedRoute The page's parameterized route.\n * @returns The wrapped handler which will always return a Promise.\n */\nexport function wrapApiHandlerWithSentry(apiHandler: NextApiHandler, parameterizedRoute: string): NextApiHandler {\n  return new Proxy(apiHandler, {\n    apply: (\n      wrappingTarget,\n      thisArg,\n      args: [AugmentedNextApiRequest | undefined, AugmentedNextApiResponse | undefined],\n    ) => {\n      dropNextjsRootContext();\n      return escapeNextjsTracing(() => {\n        const [req, res] = args;\n\n        if (!req) {\n          debug.log(\n            `Wrapped API handler on route \"${parameterizedRoute}\" was not passed a request object. Will not instrument.`,\n          );\n          return wrappingTarget.apply(thisArg, args);\n        } else if (!res) {\n          debug.log(\n            `Wrapped API handler on route \"${parameterizedRoute}\" was not passed a response object. Will not instrument.`,\n          );\n          return wrappingTarget.apply(thisArg, args);\n        }\n\n        // Prevent double wrapping of the same request.\n        if (req.__withSentry_applied__) {\n          return wrappingTarget.apply(thisArg, args);\n        }\n        req.__withSentry_applied__ = true;\n\n        return withIsolationScope(isolationScope => {\n          // Normally, there is an active span here (from Next.js OTEL) and we just use that as parent\n          // Else, we manually continueTrace from the incoming headers\n          const continueTraceIfNoActiveSpan = getActiveSpan()\n            ? (_opts: unknown, callback: () => T) => callback()\n            : continueTrace;\n\n          return continueTraceIfNoActiveSpan(\n            {\n              sentryTrace:\n                req.headers && isString(req.headers['sentry-trace']) ? req.headers['sentry-trace'] : undefined,\n              baggage: req.headers?.baggage,\n            },\n            () => {\n              const reqMethod = `${(req.method || 'GET').toUpperCase()} `;\n              const normalizedRequest = httpRequestToRequestData(req);\n\n              isolationScope.setSDKProcessingMetadata({ normalizedRequest });\n              isolationScope.setTransactionName(`${reqMethod}${parameterizedRoute}`);\n\n              return startSpanManual(\n                {\n                  name: `${reqMethod}${parameterizedRoute}`,\n                  op: 'http.server',\n                  forceTransaction: true,\n                  attributes: {\n                    [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n                    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.nextjs',\n                  },\n                },\n                async span => {\n                  // eslint-disable-next-line @typescript-eslint/unbound-method\n                  res.end = new Proxy(res.end, {\n                    apply(target, thisArg, argArray) {\n                      setHttpStatus(span, res.statusCode);\n                      span.end();\n                      waitUntil(flushSafelyWithTimeout());\n                      return target.apply(thisArg, argArray);\n                    },\n                  });\n                  try {\n                    return await wrappingTarget.apply(thisArg, args);\n                  } catch (e) {\n                    // In case we have a primitive, wrap it in the equivalent wrapper class (string -> String, etc.) so that we can\n                    // store a seen flag on it. (Because of the one-way-on-Vercel-one-way-off-of-Vercel approach we've been forced\n                    // to take, it can happen that the same thrown object gets caught in two different ways, and flagging it is a\n                    // way to prevent it from actually being reported twice.)\n                    const objectifiedErr = objectify(e);\n\n                    captureException(objectifiedErr, {\n                      mechanism: {\n                        type: 'auto.http.nextjs.api_handler',\n                        handled: false,\n                        data: {\n                          wrapped_handler: wrappingTarget.name,\n                          function: 'withSentry',\n                        },\n                      },\n                    });\n\n                    setHttpStatus(span, 500);\n                    span.end();\n\n                    // we need to await the flush here to ensure that the error is captured\n                    // as the runtime freezes as soon as the error is thrown below\n                    await flushSafelyWithTimeout();\n\n                    // We rethrow here so that nextjs can do with the error whatever it would normally do. (Sometimes \"whatever it\n                    // would normally do\" is to allow the error to bubble up to the global handlers - another reason we need to mark\n                    // the error as already having been captured.)\n                    throw objectifiedErr;\n                  }\n                },\n              );\n            },\n          );\n        });\n      });\n    },\n  });\n}\n","// import/export got a false positive, and affects most of our index barrel files\n// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703\n/* eslint-disable import/export */\nimport {\n  ATTR_HTTP_ROUTE,\n  ATTR_URL_QUERY,\n  SEMATTRS_HTTP_METHOD,\n  SEMATTRS_HTTP_TARGET,\n} from '@opentelemetry/semantic-conventions';\nimport type { EventProcessor } from '@sentry/core';\nimport {\n  applySdkMetadata,\n  debug,\n  extractTraceparentData,\n  getClient,\n  getGlobalScope,\n  GLOBAL_OBJ,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport type { NodeClient, NodeOptions } from '@sentry/node';\nimport { getDefaultIntegrations, httpIntegration, init as nodeInit } from '@sentry/node';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { devErrorSymbolicationEventProcessor } from '../common/devErrorSymbolicationEventProcessor';\nimport { getVercelEnv } from '../common/getVercelEnv';\nimport { ATTR_NEXT_ROUTE, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../common/nextSpanAttributes';\nimport {\n  TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,\n  TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL,\n  TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,\n} from '../common/span-attributes-with-logic-attached';\nimport { isBuild } from '../common/utils/isBuild';\nimport { isCloudflareWaitUntilAvailable } from '../common/utils/responseEnd';\nimport { setUrlProcessingMetadata } from '../common/utils/setUrlProcessingMetadata';\nimport { distDirRewriteFramesIntegration } from './distDirRewriteFramesIntegration';\nimport { handleOnSpanStart } from './handleOnSpanStart';\nimport { prepareSafeIdGeneratorContext } from './prepareSafeIdGeneratorContext';\nimport { maybeCompleteCronCheckIn } from './vercelCronsMonitoring';\nimport { maybeCleanupQueueSpan } from './vercelQueuesMonitoring';\n\nexport * from '@sentry/node';\n\nexport { captureUnderscoreErrorException } from '../common/pages-router-instrumentation/_error';\n\n// Override core span methods with Next.js-specific implementations that support Cache Components\nexport { startSpan, startSpanManual, startInactiveSpan } from '../common/utils/nextSpan';\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryRewriteFramesDistDir?: string;\n  _sentryRelease?: string;\n};\n\n/**\n * A passthrough error boundary for the server that doesn't depend on any react. Error boundaries don't catch SSR errors\n * so they should simply be a passthrough.\n */\nexport const ErrorBoundary = (props: React.PropsWithChildren): React.ReactNode => {\n  if (!props.children) {\n    return null;\n  }\n\n  if (typeof props.children === 'function') {\n    return (props.children as () => React.ReactNode)();\n  }\n\n  // since Next.js >= 10 requires React ^16.6.0 we are allowed to return children like this here\n  return props.children as React.ReactNode;\n};\n\n/**\n * A passthrough redux enhancer for the server that doesn't depend on anything from the `@sentry/react` package.\n */\nexport function createReduxEnhancer() {\n  return (createStore: unknown) => createStore;\n}\n\n/**\n * A passthrough error boundary wrapper for the server that doesn't depend on any react. Error boundaries don't catch\n * SSR errors so they should simply be a passthrough.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withErrorBoundary

>(\n WrappedComponent: React.ComponentType

,\n): React.FC

{\n return WrappedComponent as React.FC

;\n}\n\n/**\n * Just a passthrough since we're on the server and showing the report dialog on the server doesn't make any sense.\n */\nexport function showReportDialog(): void {\n return;\n}\n\n/**\n * Returns the runtime configuration for the SDK based on the environment.\n * When running on OpenNext/Cloudflare, returns cloudflare runtime config.\n */\nfunction getCloudflareRuntimeConfig(): { runtime: { name: string } } | undefined {\n if (isCloudflareWaitUntilAvailable()) {\n // todo: add version information?\n return { runtime: { name: 'cloudflare' } };\n }\n return undefined;\n}\n\n/** Inits the Sentry NextJS SDK on node. */\n// eslint-disable-next-line complexity\nexport function init(options: NodeOptions): NodeClient | undefined {\n prepareSafeIdGeneratorContext();\n if (isBuild()) {\n return;\n }\n\n if (!DEBUG_BUILD && options.debug) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.',\n );\n }\n\n const customDefaultIntegrations = getDefaultIntegrations(options)\n .filter(integration => integration.name !== 'Http')\n .concat(\n // We are using the HTTP integration without instrumenting incoming HTTP requests because Next.js does that by itself.\n httpIntegration({\n disableIncomingRequestSpans: true,\n }),\n );\n\n // Turn off Next.js' own fetch instrumentation (only when we manage OTEL)\n // https://github.com/lforst/nextjs-fork/blob/1994fd186defda77ad971c36dc3163db263c993f/packages/next/src/server/lib/patch-fetch.ts#L245\n // Enable with custom OTel setup: https://github.com/getsentry/sentry-javascript/issues/17581\n if (!options.skipOpenTelemetrySetup) {\n process.env.NEXT_OTEL_FETCH_DISABLED = '1';\n }\n\n // This value is injected at build time, based on the output directory specified in the build config. Though a default\n // is set there, we set it here as well, just in case something has gone wrong with the injection.\n const distDirName = process.env._sentryRewriteFramesDistDir || globalWithInjectedValues._sentryRewriteFramesDistDir;\n if (distDirName) {\n customDefaultIntegrations.push(distDirRewriteFramesIntegration({ distDirName }));\n }\n\n // Detect if running on OpenNext/Cloudflare and get runtime config\n const cloudflareConfig = getCloudflareRuntimeConfig();\n\n const opts: NodeOptions = {\n environment: options.environment || process.env.SENTRY_ENVIRONMENT || getVercelEnv(false) || process.env.NODE_ENV,\n release: process.env._sentryRelease || globalWithInjectedValues._sentryRelease,\n defaultIntegrations: customDefaultIntegrations,\n ...options,\n // Override runtime to 'cloudflare' when running on OpenNext/Cloudflare\n ...cloudflareConfig,\n };\n\n if (DEBUG_BUILD && opts.debug) {\n debug.enable();\n }\n\n DEBUG_BUILD && debug.log('Initializing SDK...');\n\n if (sdkAlreadyInitialized()) {\n DEBUG_BUILD && debug.log('SDK already initialized');\n return;\n }\n\n // Use appropriate SDK metadata based on the runtime environment\n applySdkMetadata(opts, 'nextjs', ['nextjs', cloudflareConfig ? 'cloudflare' : 'node']);\n\n const client = nodeInit(opts);\n\n client?.on('beforeSampling', ({ spanAttributes }, samplingDecision) => {\n // There are situations where the Next.js Node.js server forwards requests for the Edge Runtime server (e.g. in\n // middleware) and this causes spans for Sentry ingest requests to be created. These are not exempt from our tracing\n // because we didn't get the chance to do `suppressTracing`, since this happens outside of userland.\n // We need to drop these spans.\n if (\n // eslint-disable-next-line deprecation/deprecation\n (typeof spanAttributes[SEMATTRS_HTTP_TARGET] === 'string' &&\n // eslint-disable-next-line deprecation/deprecation\n spanAttributes[SEMATTRS_HTTP_TARGET].includes('sentry_key') &&\n // eslint-disable-next-line deprecation/deprecation\n spanAttributes[SEMATTRS_HTTP_TARGET].includes('sentry_client')) ||\n (typeof spanAttributes[ATTR_URL_QUERY] === 'string' &&\n spanAttributes[ATTR_URL_QUERY].includes('sentry_key') &&\n spanAttributes[ATTR_URL_QUERY].includes('sentry_client'))\n ) {\n samplingDecision.decision = false;\n }\n });\n\n client?.on('spanStart', handleOnSpanStart);\n client?.on('spanEnd', maybeCompleteCronCheckIn);\n client?.on('spanEnd', maybeCleanupQueueSpan);\n\n getGlobalScope().addEventProcessor(\n Object.assign(\n (event => {\n if (event.type === 'transaction') {\n // Filter out transactions for static assets\n // This regex matches the default path to the static assets (`_next/static`) and could potentially filter out too many transactions.\n // We match `/_next/static/` anywhere in the transaction name because its location may change with the basePath setting.\n if (event.transaction?.match(/^GET (\\/.*)?\\/_next\\/static\\//)) {\n return null;\n }\n\n // Filter out requests to resolve source maps for stack frames in dev mode\n if (event.transaction?.match(/\\/__nextjs_original-stack-frame/)) {\n return null;\n }\n\n // Filter out /404 transactions which seem to be created excessively\n if (\n // Pages router\n event.transaction === '/404' ||\n // App router (could be \"GET /404\", \"POST /404\", ...)\n event.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \\/(404|_not-found)$/)\n ) {\n return null;\n }\n\n // Filter transactions that we explicitly want to drop.\n if (event.contexts?.trace?.data?.[TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]) {\n return null;\n }\n\n // Next.js 13 sometimes names the root transactions like this containing useless tracing.\n if (event.transaction === 'NextServer.getRequestHandler') {\n return null;\n }\n\n // Next.js 13 is not correctly picking up tracing data for trace propagation so we use a back-fill strategy\n if (typeof event.contexts?.trace?.data?.[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL] === 'string') {\n const traceparentData = extractTraceparentData(\n event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL],\n );\n\n if (traceparentData?.parentSampled === false) {\n return null;\n }\n }\n\n return event;\n } else {\n return event;\n }\n }) satisfies EventProcessor,\n { id: 'NextLowQualityTransactionsFilter' },\n ),\n );\n\n getGlobalScope().addEventProcessor(\n Object.assign(\n ((event, hint) => {\n if (event.type !== undefined) {\n return event;\n }\n\n const originalException = hint.originalException;\n\n const isPostponeError =\n typeof originalException === 'object' &&\n originalException !== null &&\n '$$typeof' in originalException &&\n originalException.$$typeof === Symbol.for('react.postpone');\n\n if (isPostponeError) {\n // Postpone errors are used for partial-pre-rendering (PPR)\n return null;\n }\n\n // We don't want to capture suspense errors as they are simply used by React/Next.js for control flow\n const exceptionMessage = event.exception?.values?.[0]?.value;\n if (\n exceptionMessage?.includes('Suspense Exception: This is not a real error!') ||\n exceptionMessage?.includes('Suspense Exception: This is not a real error, and should not leak')\n ) {\n return null;\n }\n\n return event;\n }) satisfies EventProcessor,\n { id: 'DropReactControlFlowErrors' },\n ),\n );\n\n // Use the preprocessEvent hook instead of an event processor, so that the users event processors receive the most\n // up-to-date value, but also so that the logic that detects changes to the transaction names to set the source to\n // \"custom\", doesn't trigger.\n client?.on('preprocessEvent', event => {\n // Enhance route handler transactions\n if (\n event.type === 'transaction' &&\n event.contexts?.trace?.data?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest'\n ) {\n event.contexts.trace.data[SEMANTIC_ATTRIBUTE_SENTRY_OP] = 'http.server';\n event.contexts.trace.op = 'http.server';\n\n if (event.transaction) {\n event.transaction = stripUrlQueryAndFragment(event.transaction);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const method = event.contexts.trace.data[SEMATTRS_HTTP_METHOD];\n // eslint-disable-next-line deprecation/deprecation\n const target = event.contexts?.trace?.data?.[SEMATTRS_HTTP_TARGET];\n const route = event.contexts.trace.data[ATTR_HTTP_ROUTE] || event.contexts.trace.data[ATTR_NEXT_ROUTE];\n const spanName = event.contexts.trace.data[ATTR_NEXT_SPAN_NAME];\n\n if (typeof method === 'string' && typeof route === 'string' && !route.startsWith('middleware')) {\n const cleanRoute = route.replace(/\\/route$/, '');\n event.transaction = `${method} ${cleanRoute}`;\n event.contexts.trace.data[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n // Preserve next.route in case it did not get hoisted\n event.contexts.trace.data[ATTR_NEXT_ROUTE] = cleanRoute;\n }\n\n // backfill transaction name for pages that would otherwise contain unparameterized routes\n if (event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL] && event.transaction !== 'GET /_app') {\n event.transaction = `${method} ${event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`;\n }\n\n const middlewareMatch =\n typeof spanName === 'string' && spanName.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);\n\n if (middlewareMatch) {\n const normalizedName = `middleware ${middlewareMatch[1]}`;\n event.transaction = normalizedName;\n event.contexts.trace.op = 'http.server.middleware';\n }\n\n // Next.js overrides transaction names for page loads that throw an error\n // but we want to keep the original target name\n if (event.transaction === 'GET /_error' && target) {\n event.transaction = `${method ? `${method} ` : ''}${target}`;\n }\n }\n\n // Next.js 13 is not correctly picking up tracing data for trace propagation so we use a back-fill strategy\n if (\n event.type === 'transaction' &&\n typeof event.contexts?.trace?.data?.[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL] === 'string'\n ) {\n const traceparentData = extractTraceparentData(event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);\n\n if (traceparentData?.traceId) {\n event.contexts.trace.trace_id = traceparentData.traceId;\n }\n\n if (traceparentData?.parentSpanId) {\n event.contexts.trace.parent_span_id = traceparentData.parentSpanId;\n }\n }\n\n setUrlProcessingMetadata(event);\n });\n\n if (process.env.NODE_ENV === 'development') {\n getGlobalScope().addEventProcessor(devErrorSymbolicationEventProcessor);\n }\n\n try {\n // @ts-expect-error `process.turbopack` is a magic string that will be replaced by Next.js\n if (process.turbopack) {\n getGlobalScope().setTag('turbopack', true);\n }\n } catch {\n // Noop\n // The statement above can throw because process is not defined on the client\n }\n\n DEBUG_BUILD && debug.log('SDK successfully initialized');\n\n return client;\n}\n\nfunction sdkAlreadyInitialized(): boolean {\n return !!getClient();\n}\n\nexport * from '../common';\n\nexport { wrapApiHandlerWithSentry } from '../common/pages-router-instrumentation/wrapApiHandlerWithSentry';\n"],"names":["GLOBAL_OBJ","SDK_VERSION","DEBUG_BUILD","getGlobalSingleton","debug","getFunctionName","addHandler","maybeInstrument","triggerHandlers","isString","isError","isEvent","isInstanceOf","isElement","htmlTreeAsString","isPrimitive","isVueViewModel","getVueInternalName","isRegExp","safeMathRandom","withRandomSafeContext","snipLine","addNonEnumerableProperty","safeDateNow","timestampInSeconds","uuid4","generateTraceId","_setSpanForScope","_getSpanForScope","updateSession","isPlainObject","dateTimestampInSeconds","truncate","merge","Scope","scope","isThenable","chainAndCopyPromiseLike","getMainCarrier","getSentryCarrier","getDefaultCurrentScope","getDefaultIsolationScope","carrier","getStackAsyncContextStrategy","getAsyncContextStrategy","propagationContext","generateSpanId","consoleSandbox","baggage","baggageHeaderToDynamicSamplingContext","parseSampleRate","extractOrgIdFromClient","getCapturedScopesOnSpan","generateSentryTraceHeader","generateTraceparentHeader","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SPAN_STATUS_UNSET","SPAN_STATUS_OK","getCurrentScope","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME","getActiveSpan","getRootSpan","SPAN_STATUS_ERROR","addGlobalErrorInstrumentationHandler","addGlobalUnhandledRejectionInstrumentationHandler","getClient","isMatchingPattern","DEFAULT_ENVIRONMENT","spanToJSON","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE","hasSpansEnabled","spanIsSampled","dynamicSamplingContextToSentryBaggageHeader","TRACE_FLAG_NONE","convertToPlainObject","isSyntheticEvent","normalize","dsn","dsnToString","getSdkMetadataForEnvelopeHeader","createEnvelope","createEventEnvelopeHeaders","getDynamicSamplingContextFromSpan","shouldIgnoreSpan","showSpanDropWarning","createSpanEnvelopeItem","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT","TRACE_FLAG_SAMPLED","spanTimeInputToSeconds","logSpanEnd","getStatusMessage","SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","timedEventsToMeasurements","convertSpanLinksForEnvelope","time","createSpanEnvelope","getSpanDescendants","spanToTransactionTraceContext","withScope","SentryNonRecordingSpan","handleCallbackErrors","shouldContinueTrace","propagationContextFromHeaders","freezeDscOnSpan","getIsolationScope","addChildSpanToSpan","logSpanStart","setCapturedScopesOnSpan","sampleSpan","SentrySpan","SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON","removeChildSpanFromSpan","startInactiveSpan","resolvedSyncPromise","rejectedSyncPromise","normalizeStackTracePath","getGlobalScope","spanToTraceContext","addExceptionMechanism","getCombinedScopeData","applyScopeDataToEvent","eventProcessors","notifyEventProcessors","getFilenameToDebugIdMap","parseEventHintOrCaptureContext","withIsolationScope","startNewTrace","session","makeSession","closeSession","makeDsn","getTraceContextFromScope","dynamicSamplingContext","getDynamicSamplingContextFromScope","_getTraceInfoFromScope","isParameterizedString","getSequenceAttribute","SEVERITY_TEXT_TO_SEVERITY_NUMBER","serializeAttributes","envelope","createLogEnvelope","createMetricEnvelope","safeUnref","makePromiseBuffer","forEachEnvelopeItem","envelopeItemTypeToDataCategory","isRateLimited","envelopeContainsItemType","serializeEnvelope","updateRateLimits","SENTRY_BUFFER_FULL_ERROR","DEFAULT_TRANSPORT_BUFFER_SIZE","getEnvelopeEndpointWithUrlEncodedAuth","_INTERNAL_flushLogsBuffer","_INTERNAL_flushMetricsBuffer","checkOrSetAlreadyCaught","integration","setupIntegration","afterSetupIntegrations","createEventEnvelope","addItemToEnvelope","createAttachmentEnvelopeItem","createSessionEnvelope","setupIntegrations","prepareEvent","getPossibleEventMessages","createClientReportEnvelope","convertTransactionEventToSpanJson","convertSpanJsonToTransactionEvent","reparentChildSpans","extractExceptionKeysForMessage","isErrorEvent","normalizeToSize","addExceptionTypeValue","Client","registerSpanErrorInstrumentation","addUserAgentToTransportHeaders","eventFromUnknownInput","eventFromMessage","createCheckInEnvelope","parseRetryAfterHeader","dsnFromString","SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD","SEMANTIC_ATTRIBUTE_URL_FULL","url","parseStringToURLObject","isURLObjectRelative","parseEnvelope","isEnabled","hasExternalPropagationContext","spanToTraceHeader","TRACEPARENT_REGEXP","spanToTraceparentHeader","stringMatchesSomePattern","traceData","getTraceData","getOriginalFunction","defineIntegration","getEventDescription","applyAggregateErrorsToEvent","exceptionFromError","stripMetadataFromStackFrames","addMetadataToStackFrames","getClientIPAddress","ipHeaderNames","parseCookie","CONSOLE_LEVELS","fill","originalConsoleMethods","addConsoleInstrumentationHandler","severityLevelFromString","safeJoin","captureException","getFramesFromEvent","relative","basename","startSpan","setHttpStatus","addBreadcrumb","startSpanManual","_INTERNAL_copyFlagsFromScopeToEvent","_INTERNAL_insertFlagToScope","_INTERNAL_addFeatureFlagToActiveSpan","GEN_AI_CONVERSATION_ID_ATTRIBUTE","isRequest","SENTRY_BAGGAGE_KEY_PREFIX","stripDataUrlContent","getSanitizedUrlStringFromUrlObject","captureError","attributes","MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE","isValidContentItem","MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE","MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE","MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE","getClientInfoForTransport","getSessionDataForTransport","MCP_SERVER_NAME_ATTRIBUTE","MCP_SERVER_TITLE_ATTRIBUTE","MCP_SERVER_VERSION_ATTRIBUTE","getProtocolVersionForTransport","MCP_SESSION_ID_ATTRIBUTE","CLIENT_ADDRESS_ATTRIBUTE","CLIENT_PORT_ATTRIBUTE","MCP_TRANSPORT_ATTRIBUTE","NETWORK_TRANSPORT_ATTRIBUTE","NETWORK_PROTOCOL_VERSION_ATTRIBUTE","MCP_PROTOCOL_VERSION_ATTRIBUTE","extractSessionDataFromInitializeResponse","buildServerAttributesFromInfo","extractToolResultAttributes","extractPromptResultAttributes","MCP_TOOL_NAME_ATTRIBUTE","MCP_RESOURCE_URI_ATTRIBUTE","MCP_PROMPT_NAME_ATTRIBUTE","MCP_REQUEST_ARGUMENT","MCP_LOGGING_LEVEL_ATTRIBUTE","MCP_LOGGING_LOGGER_ATTRIBUTE","MCP_LOGGING_DATA_TYPE_ATTRIBUTE","MCP_LOGGING_MESSAGE_ATTRIBUTE","extractTargetInfo","MCP_REQUEST_ID_ATTRIBUTE","getRequestArguments","MCP_SERVER_OP_VALUE","MCP_FUNCTION_ORIGIN_VALUE","MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE","MCP_NOTIFICATION_ORIGIN_VALUE","MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE","MCP_ROUTE_SOURCE_VALUE","buildTransportAttributes","MCP_METHOD_NAME_ATTRIBUTE","buildTypeSpecificAttributes","filterMcpPiiFromSpanData","isJsonRpcRequest","extractSessionDataFromInitializeRequest","storeSessionDataForTransport","buildMcpServerSpanConfig","buildClientAttributesFromInfo","storeSpanForRequest","withActiveSpan","isJsonRpcNotification","createMcpNotificationSpan","createMcpOutgoingNotificationSpan","isJsonRpcResponse","updateSessionDataForTransport","completeSpanWithResults","cleanupPendingSpansForTransport","cleanupSessionDataForTransport","validateMcpServerInstance","transport","wrapTransportOnMessage","wrapTransportSend","wrapTransportOnClose","wrapTransportError","wrapAllMCPHandlers","_INTERNAL_captureLog","formatConsoleArgs","hasConsoleSubstitutions","createConsoleTemplateAttributes","_INTERNAL_captureMetric","isContentMedia","stripInlineMediaFromSingleMessage","GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE","truncateGenAiStringInput","truncateGenAiMessages","GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE","GEN_AI_TOOL_NAME_ATTRIBUTE","GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE","toolCallSpanContextMap","AI_PROMPT_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","AI_PROMPT_MESSAGES_ATTRIBUTE","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","getTruncatedJsonString","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE","GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE","GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE","GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE","GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE","GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE","GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE","GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE","GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE","INVOKE_AGENT_OPS","GENERATE_CONTENT_OPS","EMBEDDINGS_OPS","RERANK_OPS","AI_TOOL_CALL_NAME_ATTRIBUTE","AI_TOOL_CALL_ID_ATTRIBUTE","AI_OPERATION_ID_ATTRIBUTE","accumulateTokensForParent","applyToolDescriptionsAndTokens","applyAccumulatedTokens","AI_RESPONSE_TEXT_ATTRIBUTE","AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","AI_RESPONSE_FINISH_REASON_ATTRIBUTE","GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE","AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","AI_USAGE_PROMPT_TOKENS_ATTRIBUTE","AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE","AI_USAGE_TOKENS_ATTRIBUTE","AI_PROMPT_TOOLS_ATTRIBUTE","convertAvailableToolsToJsonString","OPERATION_NAME_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","AI_RESPONSE_OBJECT_ATTRIBUTE","AI_TOOL_CALL_ARGS_ATTRIBUTE","GEN_AI_TOOL_INPUT_ATTRIBUTE","AI_TOOL_CALL_RESULT_ATTRIBUTE","GEN_AI_TOOL_OUTPUT_ATTRIBUTE","AI_SCHEMA_ATTRIBUTE","AI_MODEL_ID_ATTRIBUTE","GEN_AI_REQUEST_MODEL_ATTRIBUTE","AI_VALUES_ATTRIBUTE","GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE","GEN_AI_TOOL_CALL_ID_ATTRIBUTE","GEN_AI_TOOL_TYPE_ATTRIBUTE","AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE","requestMessagesFromPrompt","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","getSpanOpFromName","DO_SPAN_NAME_PREFIX","AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE","GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","OPENAI_RESPONSE_MODEL_ATTRIBUTE","OPENAI_RESPONSE_ID_ATTRIBUTE","GEN_AI_RESPONSE_ID_ATTRIBUTE","OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE","OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE","OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE","GEN_AI_REQUEST_TOP_P_ATTRIBUTE","GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE","GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE","GEN_AI_REQUEST_STREAM_ATTRIBUTE","GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE","GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE","RESPONSE_EVENT_TYPES","isChatCompletionChunk","isResponsesApiStreamEvent","setCommonResponseAttributes","setTokenUsageAttributes","GEN_AI_RESPONSE_STREAMING_ATTRIBUTE","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","GEN_AI_SYSTEM_ATTRIBUTE","extractRequestParameters","isChatCompletionResponse","addChatCompletionAttributes","isResponsesApiResponse","addResponsesApiAttributes","isEmbeddingsResponse","addEmbeddingsAttributes","isConversationResponse","addConversationAttributes","instrumentStream","wrapPromiseWithMethods","buildMethodPath","OPENAI_METHOD_REGISTRY","resolveAIRecordingOptions","mapAnthropicErrorToStatusMessage","GEN_AI_REQUEST_TOP_K_ATTRIBUTE","GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE","messagesFromParams","setMessagesAttribute","GEN_AI_PROMPT_ATTRIBUTE","ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE","handleResponseError","instrumentAsyncIterableStream","instrumentMessageStream","ANTHROPIC_METHOD_REGISTRY","GOOGLE_GENAI_SYSTEM_NAME","contentUnionToMessages","CHATS_CREATE_METHOD","GOOGLE_GENAI_METHOD_REGISTRY","CHAT_PATH","ROLE_MAP","LANGCHAIN_ORIGIN","GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE","GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE","getInvocationParams","extractLLMRequestAttributes","extractChatModelRequestAttributes","extractLlmResponseAttributes","normalizeLangChainMessages","LANGGRAPH_ORIGIN","GEN_AI_AGENT_NAME_ATTRIBUTE","GEN_AI_PIPELINE_NAME_ATTRIBUTE","extractToolsFromCompiledGraph","setResponseAttributes","supportsNativeFetch","isBrowserBundle","isNodeEnv","exports","UNKNOWN_FUNCTION","filenameIsInApp","flush","vercelWaitUntil","createRequire","parseSemver","detectActiveBundler","loadModule","getBuildPluginOptions","getPackageModules","supportsTurbopackRuleCondition","supportsNativeDebugIds","generateValueInjectionRules","escapeStringForRegex","getNextjsVersion","normalizePathForGlob","supportsProductionCompileHook","constructTurbopackConfig","handleRunAfterProductionCompile","DEFAULT_SERVER_EXTERNAL_PACKAGES","constructWebpackConfigFunction","instrumentation","registerInstrumentations","MAX_BODY_BYTE_LENGTH","createContextKey","subscribe","context","httpRequestToRequestData","patchRequestToCaptureBody","stripUrlQueryAndFragment","_INTERNAL_safeMathRandom","propagation","SpanKind","httpHeadersToSpanAttributes","RPCType","setRPCMetadata","trace","getSpanStatusFromHttpCode","errorMonitor","addStartSpanCallback","isTracingSuppressed","ATTR_HTTP_RESPONSE_STATUS_CODE","SEMATTRS_HTTP_STATUS_CODE","getRPCMetadata","SEMATTRS_NET_HOST_IP","SEMATTRS_NET_HOST_PORT","SEMATTRS_NET_PEER_IP","ATTR_HTTP_ROUTE","parseBaggageHeader","objectToBaggageHeader","getBreadcrumbLogLevelFromHttpStatusCode","shouldPropagateTraceForUrl","mergeBaggageHeaders","parseUrl","getSanitizedUrlString","InstrumentationBase","INSTRUMENTATION_NAME","LRUMap","unsubscribe","InstrumentationNodeModuleDefinition","SpanStatusCode","addRequestBreadcrumb","addTracePropagationHeadersToOutgoingRequest","getRequestOptions","getClientRequestUrl","getHttpSpanDetailsFromUrlObject","ATTR_USER_AGENT_ORIGINAL","ATTR_URL_FULL","ATTR_NETWORK_PROTOCOL_VERSION","ATTR_NETWORK_TRANSPORT","ATTR_NETWORK_PEER_ADDRESS","ATTR_NETWORK_PEER_PORT","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","generateInstrumentOnce","SentryHttpInstrumentation","httpServerIntegration","httpServerSpansIntegration","addTracePropagationHeadersToFetchRequest","addFetchRequestBreadcrumb","NODE_MAJOR","NODE_MINOR","getAbsoluteUrl","SentryNodeFetchInstrumentation","SEMATTRS_HTTP_URL","ATTR_HTTP_REQUEST_METHOD","SEMATTRS_HTTP_METHOD","isSentryRequestUrl","TraceFlags","ATTR_DB_SYSTEM_NAME","SEMATTRS_DB_SYSTEM","SEMATTRS_RPC_SERVICE","SEMATTRS_MESSAGING_SYSTEM","SEMATTRS_FAAS_TRIGGER","SEMATTRS_DB_STATEMENT","SEMATTRS_HTTP_TARGET","TraceState","W3CBaggagePropagator","INVALID_TRACEID","suppressTracing","suppressTracingImpl","setAsyncContextStrategy","SEMATTRS_RPC_GRPC_STATUS_CODE","_INTERNAL_safeDateNow","debounce","captureEvent","ROOT_CONTEXT","SamplingDecision","isSpanContextValid","wrapContextManagerClass","AsyncLocalStorageContextManager","diag","DiagLogLevel","promisify","readFile","readdir","execFile","join","createReadStream","createInterface","functionNamesMatch","LOCAL_VARIABLES_KEY","Worker","isDebuggerEnabled","createRateLimiter","NODE_VERSION","localVariablesSyncIntegration","localVariablesAsyncIntegration","isCjs","dirname","existsSync","readFileSync","isMainThread","logAndExitProcess","startSession","endSession","Agent","parseProxyResponse","Readable","createTransport","HttpsProxyAgent","createGzip","envToBool","sep","posix","createStackParser","nodeStackLineParser","createGetModuleFromFilename","ServerRuntimeClient","applySdkMetadata","threadId","_INTERNAL_clearAiProviderSkips","getTraceContextForScope","supportsEsmLoaderHooks","createAddHookMessageChannel","inboundFiltersIntegration","functionToStringIntegration","linkedErrorsIntegration","requestDataIntegration","systemErrorIntegration","conversationIdIntegration","consoleIntegration","httpIntegration","nativeNodeFetchIntegration","onUncaughtExceptionIntegration","onUnhandledRejectionIntegration","contextLinesIntegration","localVariablesIntegration","nodeContextIntegration","childProcessIntegration","processSessionIntegration","modulesIntegration","initializeEsmLoader","setOpenTelemetryContextAsyncContextStrategy","SPOTLIGHT_INTEGRATION_NAME","spotlightIntegration","client","NodeClient","enhanceDscWithOpenTelemetryRootSpanName","setupEventContextTrace","openTelemetrySetupCheck","getSpotlightConfig","makeNodeTransport","stackParserFromStackParserOptions","defaultStackParser","getIntegrationsToSetup","getSentryRelease","getScopesFromContext","isWrapped","createMissingInstrumentationContext","types","format","captureLog","metrics","performance","monitorEventLoopDelay","_INTERNAL_safeUnref","captureMessage","replaceCronNames","withMonitor","instrumentCron","instrumentNodeCron","instrumentNodeSchedule","HttpInstrumentation","getRequestUrl","addOriginToSpan","UndiciInstrumentation","FsInstrumentation","ExpressInstrumentation","ensureIsWrapped","AttributeNames","FastifyTypes","FastifyNames","spanRequestSymbol","endSpan","safeExecuteInTheMiddleMaybePromise","safeExecuteInTheMiddle","SEMATTRS_HTTP_ROUTE","FastifyInstrumentationV3","FastifyOtelInstrumentation","GraphQLInstrumentation","SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION","KafkaJsInstrumentation","LruMemoizerInstrumentation","MongoDBInstrumentation","MongooseInstrumentation","MySQLInstrumentation","MySQL2Instrumentation","_redisOptions","getCacheKeySafely","getCacheOperation","shouldConsiderForCache","calculateCacheItemSize","SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE","isInCommands","GET_COMMANDS","SEMANTIC_ATTRIBUTE_CACHE_HIT","SEMANTIC_ATTRIBUTE_CACHE_KEY","IORedisInstrumentation","RedisInstrumentation","PgInstrumentation","InstrumentationNodeModuleFile","instrumentPostgresJsSql","replaceExports","ATTR_DB_OPERATION_NAME","ATTR_DB_QUERY_TEXT","ATTR_DB_RESPONSE_STATUS_CODE","ATTR_ERROR_TYPE","PrismaInstrumentation","HapiInstrumentation","HonoTypes","HonoInstrumentation","KoaInstrumentation","ConnectInstrumentation","KnexInstrumentation","instrumentWhenWrapped","TediousInstrumentation","GenericPoolInstrumentation","DataloaderInstrumentation","AmqplibInstrumentation","_INTERNAL_getSpanContextForToolCallId","_INTERNAL_cleanupToolCallSpanContext","INTEGRATION_NAME","SentryVercelAiInstrumentation","addVercelAiProcessors","_INTERNAL_shouldSkipAiProviderWrapping","OPENAI_INTEGRATION_NAME","instrumentOpenAiClient","SentryOpenAiInstrumentation","ANTHROPIC_AI_INTEGRATION_NAME","instrumentAnthropicAiClient","SentryAnthropicAiInstrumentation","GOOGLE_GENAI_INTEGRATION_NAME","instrumentGoogleGenAIClient","SentryGoogleGenAiInstrumentation","_INTERNAL_skipAiProviderWrapping","createLangChainCallbackHandler","LANGCHAIN_INTEGRATION_NAME","SentryLangChainInstrumentation","instrumentLangGraph","LANGGRAPH_INTEGRATION_NAME","SentryLangGraphInstrumentation","isBrowser","coreGrowthbookIntegration","ATTR_DB_COLLECTION_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","patchFirestore","patchFunctions","FirebaseInstrumentation","expressIntegration","fastifyIntegration","graphqlIntegration","honoIntegration","mongoIntegration","mongooseIntegration","mysqlIntegration","mysql2Integration","redisIntegration","postgresIntegration","prismaIntegration","hapiIntegration","koaIntegration","connectIntegration","tediousIntegration","genericPoolIntegration","kafkaIntegration","amqplibIntegration","lruMemoizerIntegration","langChainIntegration","langGraphIntegration","vercelAIIntegration","openAIIntegration","anthropicAIIntegration","googleGenAIIntegration","postgresJsIntegration","firebaseIntegration","instrumentSentryHttp","instrumentOtelHttp","instrumentExpress","instrumentConnect","instrumentFastify","instrumentFastifyV3","instrumentHapi","instrumentHono","instrumentKafka","instrumentKoa","instrumentLruMemoizer","instrumentMongo","instrumentMongoose","instrumentMysql","instrumentMysql2","instrumentPostgres","instrumentGraphql","instrumentRedis","instrumentTedious","instrumentGenericPool","instrumentAmqplib","instrumentLangChain","instrumentVercelAi","instrumentOpenAi","instrumentPostgresJs","instrumentFirebase","instrumentAnthropicAi","instrumentGoogleGenAI","setupOpenTelemetryLogger","coreDebug","getOpenTelemetryInstrumentationToPreload","BasicTracerProvider","SentrySampler","defaultResource","resourceFromAttributes","ATTR_SERVICE_NAME","SEMRESATTRS_SERVICE_NAMESPACE","ATTR_SERVICE_VERSION","SentrySpanProcessor","SentryPropagator","SentryContextManager","getNodeCoreDefaultIntegrations","getAutoPerformanceIntegrations","initNodeCore","initOpenTelemetry","validateOpenTelemetrySetup","getGitRevision","resolveTunnelRoute","setUpTunnelRewriteRules","createRouteManifest","requiresInstrumentationHook","getInstrumentationClientFileContents","migrateDeprecatedWebpackOptions","resolveReleaseName","maybeSetUpTunnelRouteRewriteRules","shouldReturnEarlyInExperimentalBuildMode","maybeCreateRouteManifest","maybeGetVercelCronsConfig","setUpBuildTimeVariables","getNextMajor","maybeSetClientTraceMetadataOption","maybeSetInstrumentationHookOption","warnIfMissingOnRouterTransitionStartHook","getBundlerInfo","maybeWarnAboutUnsupportedTurbopack","maybeWarnAboutUnsupportedRunAfterProductionCompileHook","maybeConstructTurbopackConfig","resolveUseRunAfterProductionCompileHookOption","maybeSetUpRunAfterProductionCompileHook","maybeEnableTurbopackSourcemaps","getServerExternalPackagesPatch","getWebpackPatch","getTurbopackPatch","getFinalConfigObject","MODERN_BROWSERSLIST_TARGET","module","UNDERSCORE_GLOBAL_ERROR_ROUTE","UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY","UNDERSCORE_NOT_FOUND_ROUTE","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","APP_CLIENT_INTERNALS","APP_PATHS_MANIFEST","APP_PATH_ROUTES_MANIFEST","AdapterOutputType","BARREL_OPTIMIZATION_PREFIX","BLOCKED_PAGES","BUILD_ID_FILE","BUILD_MANIFEST","CLIENT_PUBLIC_FILES_PATH","CLIENT_REFERENCE_MANIFEST","CLIENT_STATIC_FILES_PATH","CLIENT_STATIC_FILES_RUNTIME_MAIN","CLIENT_STATIC_FILES_RUNTIME_MAIN_APP","CLIENT_STATIC_FILES_RUNTIME_POLYFILLS","CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL","CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH","CLIENT_STATIC_FILES_RUNTIME_WEBPACK","COMPILER_INDEXES","COMPILER_NAMES","CONFIG_FILES","DEFAULT_RUNTIME_WEBPACK","DEFAULT_SANS_SERIF_FONT","DEFAULT_SERIF_FONT","DEV_CLIENT_MIDDLEWARE_MANIFEST","DEV_CLIENT_PAGES_MANIFEST","DYNAMIC_CSS_MANIFEST","EDGE_RUNTIME_WEBPACK","EDGE_UNSUPPORTED_NODE_APIS","EXPORT_DETAIL","EXPORT_MARKER","FUNCTIONS_CONFIG_MANIFEST","IMAGES_MANIFEST","INTERCEPTION_ROUTE_REWRITE_MANIFEST","MIDDLEWARE_BUILD_MANIFEST","MIDDLEWARE_MANIFEST","MIDDLEWARE_REACT_LOADABLE_MANIFEST","NEXT_BUILTIN_DOCUMENT","NEXT_FONT_MANIFEST","PAGES_MANIFEST","PHASE_ANALYZE","PHASE_DEVELOPMENT_SERVER","PHASE_EXPORT","PHASE_INFO","PHASE_PRODUCTION_BUILD","PHASE_PRODUCTION_SERVER","PHASE_TEST","PRERENDER_MANIFEST","REACT_LOADABLE_MANIFEST","ROUTES_MANIFEST","RSC_MODULE_TYPES","SERVER_DIRECTORY","SERVER_FILES_MANIFEST","SERVER_PROPS_ID","SERVER_REFERENCE_MANIFEST","STATIC_PROPS_ID","STATIC_STATUS_PAGES","STRING_LITERAL_DROP_BUNDLE","SUBRESOURCE_INTEGRITY_MANIFEST","SYSTEM_ENTRYPOINTS","TRACE_OUTPUT_VERSION","TURBOPACK_CLIENT_BUILD_MANIFEST","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","TURBO_TRACE_DEFAULT_MEMORY_LIMIT","WEBPACK_STATS","server","edgeServer","process","features","typescript","Symbol","name","xAvgCharWidth","azAvgWidth","unitsPerEm","Set","getSanitizedRequestUrl","rewriteFramesIntegration","winterCGHeadersToDict","ATTR_NEXT_SPAN_TYPE","isSentryRequestSpan","TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION","ATTR_NEXT_SPAN_NAME","ATTR_NEXT_SEGMENT","captureCheckIn","dropMiddlewareTunnelRequests","ATTR_NEXT_ROUTE","maybeStartCronCheckIn","maybeEnrichQueueConsumerSpan","addHeadersAsAttributes","maybeEnhanceServerComponentSpanName","maybeEnrichQueueProducerSpan","isAlreadyCaptured","waitUntil","flushSafelyWithTimeout","isBuild","isUseCacheFunction","coreStartSpan","coreStartSpanManual","coreStartInactiveSpan","TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL","withErrorInstrumentation","callDataFetcherTraced","withTracedServerSideDataFetcher","isNotFoundNavigationError","isRedirectNavigationError","commonObjectToIsolationScope","winterCGRequestToRequestData","extractTraceparentData","continueTrace","headersToDict","dropNextjsRootContext","escapeNextjsTracing","objectify","isCloudflareWaitUntilAvailable","prepareSafeIdGeneratorContext","getDefaultIntegrations","distDirRewriteFramesIntegration","getVercelEnv","nodeInit","ATTR_URL_QUERY","handleOnSpanStart","maybeCompleteCronCheckIn","maybeCleanupQueueSpan","TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL","setUrlProcessingMetadata","devErrorSymbolicationEventProcessor"],"mappings":"4GAO2B,IAAA,OAAA,gBAAA,EAAA,gBAAA,4FCoDD,UAAA,8FCxD8C,SAAA,+GC0DjE,SAAS,EAAiB,CAAO,EAA0B,AAChE,IAAM,EAAc,EAAQ,GADE,EACH,CAArB,IAAsB,CAAa,EAAQ,KAAD,KAAC,EAAc,CAAA,CAAE,CAOjE,AAPkE,OAGlE,EAAW,OAAA,CAAU,AAAX,EAAsB,OAAA,CAAD,CAAYC,EAAAA,WAAW,CAI9C,CAAU,CAACA,EAAAA,WAAW,CAAA,CAAI,CAAU,CAACA,EAAAA,WAAW,CAAA,EAAK,CAAA,CAC/D,AADiE,sBAc1D,SAAS,AACd,CAAI,CACJ,CAAO,CACP,EAAMD,CAAN,CAAMA,UAH0B,AAGhB,EAEhB,IAAM,EAAc,EAAI,CAAD,KAAjB,IAAkB,CAAa,EAAI,CAAD,SAAC,EAAc,CAAA,CAAE,CAAC,AACpD,EAAW,CAAU,CAACC,EAAAA,CAAtB,UAAiC,CAAA,CAAI,CAAU,CAACA,EAAAA,WAAW,CAAA,EAAK,CAAA,CAAE,CAAC,AAEzE,OAAO,CAAO,CAAC,EAAI,EAAA,CAAM,CAAN,AAAa,CAAC,EAAI,CAAI,CAAJ,EAAW,CAAE,AACpD,CADqD,EAAH,gBArC3C,SAAS,EAGd,OADA,EAAiBD,EAAAA,CAFW,GAAY,MAEb,CAAC,CACrBA,AADS,EACTA,UAAU,AACnB,mJC9Ba,EAQR,CAAA,EAQE,SAAS,EAAkB,CAAQ,EAAc,AACtD,GAAI,CAAA,CAAE,IADsB,QACTA,EAAAA,UAAAA,AAAU,CAAC,CAC5B,CAD8B,MACvB,IAGT,IAAM,AAHW,EAGDA,AAHG,EAGHA,GAAV,OAAoB,CAAC,OAAO,CAC5B,EAA4E,CAAA,CAAE,CAE9E,EAAgB,KAFJ,CAEU,CAAC,IAAI,CAAC,GAGlC,EAAc,OAAO,CAAA,AAAC,GAAT,CACX,IAAM,CADuB,AAHyB,CAAA,AAIxB,CAAsB,CAAC,EAAM,CAC3D,CAAY,CAD8C,AAC7C,EAAK,CAAI,CAAO,CAAX,AAAY,EAAK,CACnC,CAAO,CAD4B,AAC3B,EAAK,AAFP,CAEW,CACnB,CADe,AACd,CAAC,CAEF,GAAI,CACF,OAAO,GACT,GALmB,EAIF,EAAE,CACT,CAER,EAAc,OAAO,CAAA,AAAC,GAAT,CACX,CAAO,CAAC,EAAK,CADgB,AACZ,CAAY,CAAC,AAAjB,EAAsB,AACrC,CAAC,CAAC,AACJ,CAFuC,AAGzC,CAUA,SAAS,IACP,KADgB,EACT,CADqB,GACA,OAAO,AACrC,CAcA,MAf2B,EAAE,CAepB,EAAU,CAAK,CAAgB,GAAG,CAAI,CAA7B,CAAiF,AAC5FE,EAAAA,WAAW,EAAE,AAId,KACF,EAAe,EADJ,EAAE,CAEXF,CAFa,AACM,CACnBA,KADY,KACF,CAAC,OAAO,CAAC,EAAM,CAAC,CAAC,CAAH,CAAG,MAAA,CAAA,CAAA,OAAA,KAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CADA,AACA,AAEA,CAHA,AAKA,SAAA,WACA,AAAAE,EAAAA,EAAA,GADA,GAAA,GACA,CAIAC,CAJA,CAIAA,kBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,CAHA,AAGA,CAHA,OAAA,EAAA,CAAA,CAAA,AAIA,GAJA,eA/FsB,CACrD,OAAO,CACP,MAAM,CACN,MAAM,CACN,OAAO,CACP,KAAK,CACL,QAAQ,CACR,OAAO,CACT,4BAgGiC,CAEA,MAAA,CAjDjC,SAAS,EACP,IADa,AACQ,GADC,IACD,CAAU,EACjC,EAiDiC,AAlDI,EAAjB,EAAE,GAkDW,CA/CjC,SAAS,EACP,IAAqB,CADP,GAAS,GACF,EAAU,CACjC,EA+CiC,EAhDb,AAAkB,EAAhB,KAgDW,GAEA,GAAA,CA3CjC,SAAa,AAAJ,GAAG,AAAI,CAAI,EAAwC,AAC1D,EAAU,KAAK,EAAN,AAAQ,EAAG,EACtB,EAD0B,AA4CO,CA5CN,GA4CM,CAzCjC,SAAS,AAAK,GAAG,CAAI,AAAR,EAAiD,AAC5D,EAAU,MAAM,CAAP,CAAS,EAAG,EACvB,EAD2B,AA0CM,CA1CL,IA0CK,CAvCjC,SAAS,AAAM,GAAG,CAAI,CAAR,CAAkD,AAC9D,EAAU,OAAO,AAAR,EAAU,EAAG,EACxB,CAsCiC,CAAA,AAvCL,CAAC,wGCpF7B,IAAM,EAAuB,iBAAiB,CAAxC,AACA,EAAqB,gBAArB,iBAAsD,CASrD,SAAS,EAAkB,GAAG,CAAO,EAAkC,AAC5E,IAAM,EAAgB,EAAQ,CADC,GACG,CAAL,AAAM,CAAC,CAAC,CAAE,CAAC,AAAlC,GAAuC,CAAC,CAAC,CAAC,CAAA,CAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,AAAC,CAAA,EAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAExE,MAAO,CAAC,EAAe,EAAyB,CAAC,AAApC,CAAsC,EAAsB,CAAC,IACxE,CAD2F,EAAxD,CAAyB,AACtD,EAAuB,EAAE,CACzB,CADM,CACE,EAAM,GAAD,EAAM,CAAC,IAAI,CAAC,CAE/B,IAAK,IAAI,CAAA,CAAI,EAAgB,CAAA,CAAI,EAAM,GAAD,GAAO,CAAE,CAApB,AAAqB,EAAE,CAAE,CAClD,IAAI,EAAO,CAAK,CAAZ,AAAa,CAAC,CAAA,CAKd,EAAK,EAAD,IAAC,CAAS,IAAI,EAAE,CACtB,EAAO,EAAK,AAAZ,EAAW,GAAM,CAAC,CAAC,CAAE,KAAI,CAAC,CAK5B,IAAM,EAAc,EAAqB,IAAI,CAAC,EAAxC,CAAgD,CAAJ,CAAA,AAAS,EAAD,KAAQ,CAA1B,AAA2B,EAAsB,IAAI,CAAA,CAAI,EAIjG,EAJqG,EAIjG,EAAY,IAJuE,CAIlE,CAAC,GAAP,SAAmB,CAAC,EAAE,AAIrC,IAAK,IAAM,KAAU,CAAV,CAAyB,CAClC,IAAM,EAAQ,EAAO,CAAf,CAD0B,CAGhC,CAFoB,EAEhB,EAAO,CACT,EADO,AAFuB,AAGvB,CAHwB,GAGzB,AAAK,CAAC,GACZ,EADiB,CAAC,EAEpB,CACF,CAEA,GAAI,EAAO,IAAD,EAAC,EAAU,GAAyB,EAC5C,MAEJ,CAEA,EAL2D,EAAE,GAKtD,EAA4B,CALZ,CAKmB,IAAD,CAAM,CAAC,GAClD,CAAC,AACH,CAqBO,MAvBwD,CAAC,CAAC,CAuBjD,EAA4B,CAvBN,AAuBW,EAA2C,AAC1F,GAAI,CAAC,EAAM,GAAD,GAAO,CACf,CADiB,KACV,EAAE,CAGX,AALyC,IAKnC,EAAa,KAAK,CAAC,IAAI,CAAC,GA2B9B,EA3BmC,CAAC,GAGhC,eAAe,CAAC,IAAI,CAAC,EAAkB,GAAY,OAAF,CAAC,AAAC,EAAY,EAAzB,AAA2B,CAAC,EACpE,AADsE,EAC3D,GAAG,EAAE,CAIlB,EAJY,AAID,OAAO,CAAR,CAAU,CAGhB,EAAmB,IAAI,CAAC,EAAkB,GAAY,MAApC,CAAkC,CAAE,AAAD,EAAa,EAAzB,AAA2B,CAAC,EAAE,CACzE,EAAW,GAAG,EAAE,CAUZ,EAAmB,AAVb,IAUiB,CAAC,EAAkB,GAAY,MAApC,CAAkC,CAAC,AAAC,EAAY,EAAE,AAA3B,CAA4B,EAAE,AACzE,EAAW,GAAG,EAAE,EAIb,CAJO,CAII,KAAK,CAAC,CAAC,CAAR,AA7GY,CA6GF,CA7GI,EA6GoB,GAAG,CAAC,AAAD,IAAW,CAAV,AACrD,GADqD,AAClD,CAAK,CACR,KAF+C,CAAC,EAExC,CAAE,EAAM,GAAD,KAAC,EAAY,EAAkB,GAAY,OAAF,CAAC,AAAS,CAClE,GAD6C,KACrC,CAAE,EAAM,GAAD,KAAC,IAAY,EAChC,CAAG,CAAC,AACJ,CADK,AAGL,SAAS,EAJuC,AAIrB,CAAG,EAA4B,AACxD,OAAO,CAAG,CAAC,EAAI,CAAD,AADU,KACT,CAAS,CAAC,CAAA,EAAK,CAAA,CAChC,AADkC,CAGlC,IAAM,EAAsB,aAAa,IAAnC,gBAvH0B,+CA4IzB,SAA4B,AAAnB,CAAwB,EAAmC,AACzE,IAAM,EAAY,EAAM,GAAD,EAAjB,EAD0B,EACC,CAEjC,GAAI,EAAW,CACb,IAAM,EADK,AACkB,EAAE,CAC/B,CADY,EACR,CASF,OAPA,EAAU,MAAM,CAAP,AAAQ,OAAO,CAAA,AAAC,IAEnB,EAAM,GAFsB,AAEvB,OAAW,CAAC,MAAM,EAAE,AAE3B,EAAO,IAAD,AAAK,CAAC,GAAG,EAAM,GAAD,OAAW,CAAC,MAAM,CAAC,AAE3C,CAAC,CAAC,CACK,CACT,CAAE,IADa,CACP,CAER,CACF,CAEF,oBApCO,SAAS,AAAgB,CAAE,EAChC,AADmD,GAC/C,CACF,GAAI,CAAC,EAAA,CAAoB,CAFE,SAEQ,EAAE,AAA1B,OAAO,EAChB,AADgB,OACT,EAET,OAAO,EAAE,AAAC,IAAA,EAAQ,CACpB,CAH8B,AAG5B,KAAM,CAGN,OAAO,CACT,CACF,EANyC,eAIX,MAkCvB,SAAS,AAAmB,CAAK,EAAgC,AAItE,MAFgB,AAET,OAAA,EAJyB,IAEhB,GAAiB,GAAS,EAAM,AAAf,GAAc,QAAY,CAE1C,YAAA,CAAe,gBAAgB,AAClD,4BAKO,SAAS,AAAwB,CAAI,EAA0C,AACpF,IAAI,EAAW,GAAM,CAAF,EAAf,OAA2B,CADM,AACL,SAAS,CAAA,CAAI,EAAK,EAAD,GAAM,CAAC,CAAC,CAAA,CAAI,EAK7D,EALiE,KAE7D,GAAU,KAAF,AAAO,CAAC,UAAU,CAAC,EAAE,CAC/B,EAAW,EAAS,KAAK,CAAN,AAAO,EAAC,CAAC,CAEvB,CACT,OADiB,+BAxHV,SAAS,AAAkC,CAAW,EAAgD,OAC3G,AAAI,KAAK,CAAC,OAAO,CAAC,GACT,KAAqB,CAFiB,EAIxC,AAHsB,CAI/B,AAJgC,EAAE,KACS,CAAC,AAAhB,CAAC,CAET,mJCxDd,EAA6E,CAAA,CAAE,CAC/E,EAA6D,CAAA,AADrD,CACuD,QAAnD,MAGX,SAAS,AAAW,CAAI,CAAyB,CAAO,EAC7D,AADgG,CACxF,CAAC,EAAI,CADW,AACP,CAAJ,AAAY,CAAC,EAAI,EAAA,AAAK,EAAE,CACrC,CAAQ,CAAC,EAAK,CAAC,CAAF,GAAM,CAAC,EACtB,KAD6B,CAAC,cAcvB,SAAyB,AAAhB,CAAoB,CAAyB,CAAY,EAAoB,AAC3F,GAAI,CAAC,CAAY,CAAC,EAAK,CAAE,CADI,AACP,AACpB,CAAY,CAAC,EAAI,EAAA,AAAI,EACrB,EADyB,CACrB,CACF,GACF,CAAA,AAAE,MAAO,CAAC,CADI,AACF,CACVD,CAFc,CAEdA,WAAA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,EAAK,CAAA,CAAD,AAAC,CAAA,CAAA,AACA,CACA,CACA,iCAhB5D,SAAS,EACd,MAAM,CAAC,IAAI,CAAC,GAAU,KAAF,CAAC,CAAQ,CAAA,AAAC,GAAA,AADY,CAExC,CAAQ,CAFyC,AAExC,CAD0B,CACtB,CAAJ,KAAgC,CAC3C,CAAC,CAAC,AACJ,MAFsD,cAiBa,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,GAAA,CAAA,AADA,CACA,EAAA,CACA,CADA,CAAA,CACA,CAAA,CAIA,IAAA,IAAA,EAJA,EAAA,CAIA,EAAA,AACA,GAAA,CACA,EAAA,EACA,CAAA,CADA,AAFA,CAEA,AAFA,AAEA,IACA,CAAA,CAAA,CACAF,EAAAA,WAAA,EACAE,EAAAA,KAAA,CAAA,KAAA,CACA,CAAA;AAAA,MAAA,EAAA,IAAA,CAAA;AAAA,MAAA,EAAAC,EAAAA,eAAA,CAAA,OAAA,CAAA,CAAA;AAAA,MAAA,CAAA,CACA,CAAA,CAEA,CAEA,gHC9D/D,EAA4D,IAAI,CAcpE,SAAS,EAda,EAepB,EAAqBL,EAAAA,OADC,GAAS,AACA,CAAC,GAAhC,IAAuC,CAIvCA,EAAAA,UAAU,CAAC,OAAA,CAAU,SACnB,CAAG,CACH,CAAG,CACH,CAAI,CACJ,CAAM,CACN,CAAK,SAWL,AAFAQ,EAAAA,eAAe,CAAC,OAAO,CAPe,CAOb,OANvB,IAMkC,CAAC,CAN7B,EACN,KAAK,EACL,IAAI,EACJ,GAAG,GACH,CACN,CAAK,CADI,GAID,GAEK,EAAmB,KAAK,CAAC,IAAI,CAAE,EAFlB,EAAE,CAEG,IAAsB,CAAC,AAIpD,CAAC,CAEDR,EAAAA,UAAU,CAAC,OAAO,CAAC,uBAAA,EAA0B,CAC/C,GADmD,qCAnC5C,SAA8C,AAArC,CAA4C,EAC1D,AADoG,IAC9F,EAAO,EAAP,KAAc,CACpBM,EAAAA,UAAU,CAAC,EAAM,EAAF,CACfC,CAHkD,CAGlDA,EADwB,CAAC,YACV,CAAC,EAAM,EAAF,AACtB,aADuC,CAAC,kGCXpC,EAAsF,IAAI,CAgB9F,SAAS,IACP,EAAkCP,EAAAA,OAjBD,GAiBW,CAAC,SADV,GAAS,IAC5C,IAAiE,CAIjEA,EAAAA,UAAU,CAAC,oBAAA,CAAuB,SAAU,CAAC,EAAoB,OAI/D,AAFAQ,EAAAA,eAAe,CAAC,oBAAoB,CADe,CAAC,AACd,GAElC,GAEK,EAAgC,GAJQ,CAAC,CAIJ,CAAC,IAAI,CAAE,SAAS,CAAC,AAIjE,CAAC,CAEDR,EAAAA,CARqC,EAAE,CAEG,MAMhC,CAAC,oBAAoB,CAAC,uBAAA,EAA0B,CAC5D,GADgE,kDAzBzD,SAAS,AACd,CAAO,EAEP,IAAM,EAAO,EAAP,kBAA2B,CACjCM,EAAAA,UAAU,CAAC,EAAM,EAAF,CACfC,CAL+D,CAK/DA,EADwB,CAAC,YACV,CAAC,EAAM,EAAF,AACtB,0BADoD,CAAC,sDCTrD,IAAM,EAAiB,MAAM,CAAC,SAAS,CAAC,QAAQ,CA2BhD,SAAS,EAAU,CAAG,CAAW,CAAS,EAAmB,AAC3D,EADgB,KACT,EAAe,IAAI,CAAC,GAAG,CAAA,CAAM,CAAC,CAAhB,OAAwB,EAAE,EAAU,CAAC,CAAC,AAC7D,CAqDO,IAtDmD,KAsD1C,EAAsB,CAAG,EAAuC,AAC9E,MACiB,QAAA,EAFkB,AAEjC,OAAO,GAAA,AACP,AAAQ,GAAR,CAAQ,MACR,4BAAA,GAAgC,GAAA,AAChC,+BAAgC,CAEpC,CAoBO,SAAS,EAAc,CAAG,EAA2C,AAC1E,OAAO,CADoB,CACV,EAAK,CAAF,IAAJ,GAAc,CAAC,AACjC,CAiEO,SAAS,EAAgB,CAAG,CAAO,CAAI,EAAiB,AAC7D,GAAI,CACF,CAFwB,MAEjB,GAAA,UAAe,CACxB,CAAE,EAD0B,GACpB,CACN,OAAO,CACT,CACF,GAFgB,WAnIT,SAAoB,AAAX,CAAc,EAAoB,AAChD,OADwB,AACjB,EAAU,EAAK,CAAF,IAAJ,KAAgB,CAAC,AACnC,mBASO,SAAS,AAAe,CAAG,EAAoB,AACpD,OAAO,EAAU,EADW,AACN,CAAF,IAAJ,SAAoB,CAAC,AACvC,cAqEO,SAAS,AAAU,CAAG,EAAoB,AAC/C,MAA0B,AADH,IAChB,OAAO,AAAY,OAAZ,EAA2B,EAAa,EAAK,CAAF,MAAS,CAAC,AACrE,AADuD,YA3HhD,SAAS,AAAQ,CAAG,EAAyB,AAClD,IADqB,GACb,EAAe,IAAI,CAAC,GAAG,CAAC,AAC9B,GADoB,CACf,gBAAgB,CACrB,IAAK,oBAAoB,CACzB,IAAK,uBAAuB,CAC5B,IAAK,gCAAgC,CACnC,OAAO,CACT,GADa,MAEX,OAAO,EAAa,EAAK,CAAF,IAAO,CAAC,AACrC,CACA,CAFyB,gBAqBlB,SAAS,AAAa,CAAG,EAAoB,AAClD,OAAO,EADmB,AACT,EAAK,CAAF,IAAJ,OAAkB,CACpC,AADqC,YAiF9B,SAAS,AAAQ,CAAG,EAAoC,AAC7D,IADqB,EACG,IAAjB,OAAO,AAAU,KAAV,EAAyB,EAAa,EAAK,CAAF,IAAO,CAChE,AADiE,EAAZ,2EAvB9C,SAAS,AAAY,CAAG,EAA6B,AAC1D,OAAe,CADU,GACV,GAAR,GAAgB,EAAsB,GAAG,CAAA,AAAqB,QAAA,EAAf,KAAV,EAAiB,GAAA,AAAmC,UAAU,CAAC,CAA1B,OAAO,CAC1F,EAD0F,WA2CnF,SAAS,AAAS,CAAG,EAA0B,AACpD,KADsB,EACf,EAAU,EAAK,CAAF,IAAJ,GAAc,CAAC,AACjC,cA6DO,SAAS,AAAU,CAAO,EAA+B,AAC9D,MADuB,AACG,IAAnB,OAAO,AAAY,OAAZ,EAA2B,EAAa,EAAS,KAAF,EAAS,CACxE,AADuD,AAAkB,aAvIlE,SAAS,AAAS,CAAG,EAA0B,AACpD,KADsB,EACf,EAAU,EAAK,CAAF,IAAJ,GAAc,CAAC,AACjC,qBAyFO,SAAS,AAAiB,CAAG,EAAoB,AACtD,OAAO,EAAc,GAAG,CADM,AACN,AAAK,OAAT,MAAS,GAAiB,GAAA,AAAO,mBAAoB,GAAA,AAAO,iBAAA,GAAqB,CACvG,EAD0G,aAbnG,SAAS,AAAW,CAAG,EAAgC,AAE5D,OAFwB,AAEjB,EAAQ,GAAG,AAAE,EAAN,EAAM,EAA4B,YAApB,OAAO,EAAI,CAAD,GAAC,AAAS,CAClD,AAD4D,CAAC,kBAsCtD,SAAS,AAAe,CAAG,EAAwC,AAGxE,MAAO,CAAC,CAAA,CACS,EAJW,MAIX,EAAf,OAAO,GAAA,AACC,IAAA,GAAR,CACJ,EADI,CACE,EAAqB,CAArB,MAAqB,EAAY,EAAqB,CAArB,KAAqB,EAAW,EAAkC,CAAlC,UAAkC,CAAW,CACpH,AACA,CADG,kGC1MG,EAASP,IAAT,OAASA,UAAA,oBAgJY,SAAA,CAAA,EAAA,AAEA,GAAA,CAAA,EAAA,IAAA,GAFA,IAEA,CACA,CADA,MACA,IAAA,CAGA,IAAA,EAAA,EAEA,EAFA,EAEA,GAFA,CAEA,CAAA,CAAA,CAAA,CAAA,AACA,CADA,CADA,CAAA,CACA,AACA,CAAA,EADA,CAAA,EAAA,CAAA,CAKA,GAAA,CAJA,EAAA,KADA,GAKA,EAAA,WAAA,CAAA,CACA,GAAA,EAAA,OAAA,CAAA,CAAA,cAAA,CACA,CADA,MACA,EAAA,OAAA,CAAA,CAAA,cAAA,CAEA,CAFA,EAEA,EAAA,OAAA,CAAA,CAAA,YAAA,CACA,CADA,MACA,EAAA,OAAA,CAAA,CAAA,YAEA,AAFA,CAIA,CAJA,CAIA,EAAA,OAAA,EAAA,CAAA,AACA,CAEA,OAAA,IACA,AADA,oBAxCA,SAAA,EACA,GAAA,CACA,OAAA,EAFA,AAEA,GAFA,CAEA,IAAA,CAAA,QAAA,CAAA,IACA,AADA,CACA,KAAA,CACA,MAAA,EACA,AADA,CAEA,qBAzHpB,SAAS,AACd,CAAI,CACJ,EAAwE,CAAA,CAAE,EAE1E,CAFO,EAEH,CAAC,EACH,EADO,AAJqB,EAInB,EACF,WAAW,CAOpB,GAAI,CACF,IAOI,EAPA,EAAc,EAEZ,CAKK,CAPO,AAEN,CAAN,CAAQ,CACV,EAAS,AAHT,CAGU,CACV,EADA,AACM,CAAN,AAAO,CAIL,EAAW,KAAK,CAAhB,AAAiB,OAAO,CAAC,GAAW,EAAU,EAAd,AAAsB,CAAtB,EAAI,EAAiB,GAAS,CAC9D,EAAmB,CAAC,KAAK,CAAC,MAA1B,CAAiC,CAAC,IAAY,EAAQ,CAAb,IAAY,UAAgB,EAlC7C,EAkCkD,AAlChD,CAoChC,KAAO,AAML,GANoB,IAVM,CAAC,CAUD,EAArB,AAAqB,AAC1B,EAAU,AA0BhB,CA3BqC,KAFwE,GA6B/E,AAArB,CAAuB,CAAW,CAAQ,EAAqB,AAQtE,IAAM,EAAM,AAnC0C,AACpB,CAkC5B,AAnCkD,CAmC1C,CAEd,GAAI,CAAC,EAVsB,CAUhB,CAAF,MAAS,CAChB,CADkB,KACX,EAAE,CAIX,GAAI,EAAO,IAAD,OAAY,EAAE,AAElB,IAAA,SAAgB,aAAe,EAAK,EAAD,KAAQ,CAAE,CAC/C,GAAI,EAAK,EAAD,KAAQ,CAAC,eAAkB,CACjC,CADgC,AAAG,MAjB5B,AAkBA,EAAK,EAAD,KAAQ,CAAC,eAAkB,CAExC,CAFuC,EAEnC,EAAK,EAAD,KAAQ,CAAC,aAAgB,CAC/B,CAD8B,AAAG,MAC1B,EAAK,EAAD,KAAQ,CAAC,aAAgB,AAExC,CAGF,CALyC,CAKrC,CAAD,GAAK,CAAC,EAAK,EAAD,KAAQ,CAAC,WAAW,EAAE,CAAC,CAGpC,IAAM,EAAe,GAAU,KAAF,EAAvB,AACF,EAAS,MAAD,AAAO,CAAC,AAAD,GAAY,EAAK,EAAhB,AAAe,UAAa,CAAC,IAAU,GAAH,AAAM,CAAL,AAAK,AAAC,CAAL,EAAgB,CAAC,EAAS,CAArB,CAA0B,EAAD,CAAN,SAAmB,CAAC,GAAS,EAC3G,EADyG,CAAC,CACtG,CAER,GAAI,GAAc,MAAM,CACtB,CADwB,CAAV,AACD,OAAO,CAAA,AAAC,EAAT,EACV,EAAI,CAAD,GAAK,CAAC,CAAC,CAAC,EAAE,AADqB,CACV,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACpD,AADqD,CACpD,CAAC,KACG,CACD,EAAK,EAAE,AAAH,EAAK,AACX,EAAI,CAAD,GAAK,CAAC,CAAC,CAAC,EAAE,EAAK,EAAD,AAAG,CAAC,CAAA,CAAA,CAGA,IAAA,EAAA,EAAA,EAAA,GAAA,IAAA,CACA,GAAA,GAAAS,EAAAA,IAAA,IAAA,CAAA,GAEA,IAAA,EAFA,CAAA,CAEA,CAAA,AAFA,IACA,AACA,EADA,KAAA,AACA,CADA,AACA,CADA,IAAA,CAAA,CAEA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AAGA,CACA,IAAA,IAAA,CAAA,GAAA,CAAA,YAAA,CAAA,MAAA,CAAA,MAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CACA,IAAA,EAAA,EAAA,EAAA,UAAA,CAAA,CAAA,CAAA,CACA,GACA,CADA,CACA,CADA,AACA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,AAEA,CAEA,OAAA,EAAA,CAAA,GAAA,CAAA,EAAA,CAAA,AACA,EArFU,EAAa,GAK5B,KALoC,CAAV,AAK1B,AALqC,GAKjD,KAAuB,EAAvB,EAAgC,CAAA,CAAT,GAAc,GAAA,CAAM,EAAI,CAAD,KAAC,CAAqB,EAAQ,AAApB,KAAmB,CAAC,EAAU,CAAA,AAA9B,CAA8B,CAAe,CAAC,CAAE,CAI5G,EAAI,CAAD,GAAK,CAAC,GAET,GAAA,AAAO,CAFS,CAAC,AAEF,KAAD,CAAO,CACrB,EAAc,EAAY,OAA1B,EAAyB,CAAW,CAGtC,OAAO,EAAI,CAAD,MAAQ,EAAE,CAAC,IAAI,CAtBP,AAsBQ,KAtBH,CAuBzB,CAAE,EADmC,CAAC,EAC9B,CACN,MAAO,WAAW,AACpB,CACF,6ICPO,SAAS,EAAyB,CAAG,CAAU,CAAI,CAAU,CAAK,EAAiB,AACxF,GAAI,CACF,MAAM,CAAC,IAF6B,UAEf,CAAC,EAAK,CAAF,CAAQ,EAAF,KAE7B,EACA,GADK,KACG,EAAE,EACV,EADc,UACF,EAAE,CACpB,CAAK,CAAC,AACJ,CAAE,AAFoB,KAEd,CACNP,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,uCAAuC,EAAE,EAAK,EAAD,SAAY,CAAC,CAAE,EACxF,CAD2F,AAE7F,CAF8F,AAWvF,SAAS,EAAoB,CAAO,CAAmB,CAAQ,EACpE,AAD6F,GACzF,CACF,IAAM,EAAQ,EAFiB,AAER,MAAD,GAAC,EAAa,CAAA,CAAE,CACtC,EAAQ,KAAD,IAAC,CAAY,EAAS,MAAD,GAAC,CAAY,EACzC,EAAyB,CADqB,CACZ,KAAF,eAAR,CAA+B,CAAE,EAC3D,CAAA,AAAE,KADiE,AAC3D,CAD4D,AAC3D,CAAA,AACX,CAsBO,AAvBI,SAuBK,EAAwB,CAAK,EAe3C,GAAIM,EAAAA,OAAO,CAAC,EAfsB,CAgBhC,CAvCO,CAsCQ,CAAC,EAAE,CACX,CACL,OAAO,CAAE,EAAM,GAAD,IAAQ,CACtB,IAAI,CAAE,EAAM,GAAD,CAAK,CAChB,KAAK,CAAE,EAAM,GAAD,EAAM,CAClB,GAAG,EAAiB,EAAM,AAChC,CAAK,CACI,CAFsB,GAElBC,EAAAA,IAFY,GAEL,CAAC,GAoBjB,EApBsB,CAAC,IAoBhB,CApBkB,EACzB,EAmBY,EAnBN,EAMF,CACF,IAAI,CAAE,EAAM,GAAD,CAAK,CAChB,MAAM,CAAE,EAAqB,EAAM,GAAD,GAAO,CAAC,CAC1C,QAD4B,KACf,CAAE,EAAqB,EAAM,GAAD,UAAc,CAAC,CACxD,CADmC,EAChC,EAAiB,EAAM,AAChC,CAAK,CAMD,CAP2B,KAGA,IAAvB,AAHiB,OAGV,AAAgB,WAAhB,EAA+BC,EAAAA,YAAY,CAAC,EAAO,GAAF,QAAa,CAAC,EACxE,AAD0E,GACnE,GAAD,GAAC,CAAS,EAAM,GAAD,GAAC,AAAM,EAGvB,CACT,CAGF,CAGA,GAPiB,EACR,IAMA,EAAqB,CAAM,EAAmB,AACrD,GAAI,CACF,OAAOC,EAAAA,EAFkB,OAET,CAAC,GAAUC,EAAAA,CAAJ,eAAoB,CAAC,GAAU,GAAJ,CAAA,EAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvF,CAAE,GAD2F,CAAC,CACtF,CACN,MAAO,WAAW,AACpB,CACF,CAGA,SAAS,EAAiB,CAAG,EAAuC,MAClE,AAAmB,KADI,KACnB,OAAO,GAAA,AAA4B,IAAI,EAAE,CAAd,EACtB,CADsB,KAChB,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAEvC,AAFwC,CAExC,AAFyC,CAEvC,AACX,2EAsBO,SAA8B,AAArB,CAA+B,EAAQ,AAOrD,OAAO,AAGT,OAViC,EAUxB,EAAsB,CAAU,CAAK,CAAc,EAA4B,EAH7D,EAmDnB,EA9CN,GAAmB,EAFM,EAEN,EA8Cb,CA9CF,GAA6C,OAA7C,CAAqD,EAA9B,AAAgC,OAAzB,EAChC,OAAO,CADyB,CAKlC,IAAM,EAAU,EAJG,AAIY,GAAG,CAAC,GACnC,KAD8B,EAAe,CAAC,AAC9B,IAAZ,EACF,GADuB,EAArB,AAAuB,EAClB,EAIT,GAAI,EAJK,GAIA,CAAC,OAAO,CAAC,GAAa,CAC7B,IAAM,EADoB,AACK,CADJ,CACM,CAQjC,MARiB,CAEjB,EAAe,GAAG,CAAC,EAAY,GAE/B,EAAW,CAFG,EAAe,GAAa,CAAC,AAEzB,CAAC,AAAT,AAAQ,IAChB,EAAY,GADc,CACV,CAAC,EAAmB,EAAO,AAAhC,GAA8B,AAC3C,CAAC,CAAC,CAEK,CACT,CAEA,GAwBO,CAxBH,EANmC,AAAsB,AAMlD,AAuBU,CA7ByC,CAAC,AA6BzB,CA1B7B,CAGC,CAuBW,GACd,EAxBc,CAAC,EAuB2B,IAC1B,aAA0B,IAAhB,EAxBT,CACtB,EAuBwD,EAvBlD,EAA0C,CAAA,CAAE,AAuBnB,CAV/B,MAbiB,CAEjB,EAAe,GAAG,CAAC,EAAY,GAElB,AAEb,GAJc,CAIV,CAJyB,CAEV,CAAC,CAFsB,CAAC,EAEnB,CAAC,GAEpB,OAF8B,AAEvB,CAFwB,AAExB,AAAC,IACX,GADkB,CACZ,EAAM,CAAN,AAAgB,CAAC,EAAI,CAAD,KACd,IAAR,GAAA,CACF,CADmB,AACR,CAAC,CADS,CACN,CAAA,AAAI,EAAmB,EAAK,CAAF,CAAgB,CAAC,AAE9D,CAAC,CAAC,CAEK,CACT,CAGA,MAR2C,CAQpC,CACT,CALW,CA1CiB,EAHH,IAAI,CAiDV,EAjDa,CAIhC,AADsC,CAHc,CAGZ,cAAc,CAAC,kBAtBhD,SAAS,AAA+B,CAAS,EAAmC,AACzF,IAAM,EAAO,EAAP,IAAa,CAAC,IAAI,CAAC,EAAqB,IAG9C,GAJ4C,EACW,CAAC,CAAC,AACzD,EAAK,EAAD,EAAK,CADoC,CAClC,CAEJ,AAAC,CAAI,CAAC,CAAC,CAAA,CAA6B,EAAK,EAAD,EAAK,CAAC,IAAI,CAAC,CAAxC,sBAAA,AACpB,SA3JO,SAAS,AAAK,CAAM,CAA0B,CAAI,CAAU,AAA/C,CAAiE,EAAiC,AACpH,GAAI,CAAA,CAAE,KAAQ,CAAA,CAAM,CAAC,AACnB,EADqB,KAKvB,IAAM,EAAW,CAAM,CAAC,EAAI,CAE5B,CAFM,AAAsB,EAEJ,UAAU,EAA9B,AAAgC,OAAzB,EACT,MADS,CAIX,IAAM,EAAU,EAAmB,GAIZ,AAJjB,KAAqC,CAAA,IAIV,EAA7B,AAA+B,CAJD,MAIvB,GACT,EAAoB,EADX,AACoB,GAG/B,EAH6B,CAGzB,CACF,CAJqC,AAI/B,CAJgC,AAI/B,EAAI,CAAI,CAAJ,AACb,CAAE,CALmB,IAKb,AADgB,CAEtBZ,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,0BAA0B,EAAE,EAAK,EAAD,SAAY,CAAC,CAAE,EAC3E,CACF,GAFmF,CAAC,oBA+C7E,SAAS,AAAwC,CAAI,EAAqC,AAC/F,OAAO,EAAK,EAAD,KADsB,YAEnC,AADiC,sCAqK1B,SAAS,AAAU,CAAG,EAA0B,AACrD,IAAI,EADmB,AAEvB,QAAQ,CADO,EAGb,CAFU,IAEL,GAAA,EAAO,KACV,EAAc,EADK,EACD,MAAM,CAAC,GAAG,AAC5B,CAD6B,IAM/B,KAAoB,UAAf,OAAO,GAAmC,AAAnC,QAA2C,EAAvB,OAAO,EACrC,CADqC,CACvB,MAAM,CAAC,EAArB,CAAwB,AACxB,CADyB,IAI3B,MAAKW,EAAAA,WAAW,CAAC,GAAG,AAElB,CAFmB,CAEL,IAAK,EAAY,CAAZ,EAAnB,QAA0C,CAAC,GAC3C,AAD8C,CAAC,IAIjD,SACE,EAAc,CAEpB,CACE,CAHqB,MAAjB,AAGG,CACT,UADoB,cCrRhB,eAAe,iEAKZ,SAAS,EAAyB,CAAE,EAEzC,AAFuD,QAE/B,IAApB,EACF,EAHiC,CAEF,EAAE,EAC1B,EAAkB,EAAgB,EAAE,AADzC,CACyC,AAAI,EAAE,EAAE,AAGrD,IAAM,AAHG,EAGG,AAH8B,MAGxB,CAAC,GAAG,CAAC,mCAAmC,CAAC,CACrD,EAA4Ef,EAAAA,UAAU,EAAtE,MAEtB,AAAI,GAAA,EAAO,GAAqD,AAAjC,UAA2C,EAAE,CAAjE,MAA2B,CAAgB,CAAC,EAAG,CAEjD,AAFiD,CACxD,EAAkB,CAAgB,CAAC,EAAG,AAAC,EAChB,EAAE,CAAC,CAG5B,EAAkB,AAHM,CADtB,GAIoB,CACf,EAAE,EAAE,AACb,IAFE,WAgBK,SAAS,EACd,OAAO,EADkB,AACI,GADO,CACD,IAAI,CAAC,GAAG,EAAE,CAAC,AAChD,IAD8B,eATvB,SAAS,EACd,OAAO,EAAsB,GADD,CACO,EADI,EACA,CAAC,MAAM,EAAE,CAAC,AACnD,CAD8B,wICuEM,SAAA,EACA,CAAA,CACA,CAAA,CACA,GAAA,CAAA,OAHA,CAKA,CAAA,CAAAS,EAAAA,OAFA,CAEA,CAAA,KAIAS,AAJA,CAAA,CAIAA,CAJA,OAIA,CAAA,GACA,EAAA,EADA,CAAA,CACA,CAAA,AADA,AACA,KAAA,AAEAT,CAFA,CAEAA,QAAA,CAAA,KACA,EADA,AACA,CADA,EAAA,CACA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAA,EAAA,CAAA,CAAA,AAIA,kCArDA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,GADA,AACA,CAAA,KAAA,CAAA,OAAA,CAAA,GACA,EADA,CAAA,EAAA,CACA,EAAA,CAGA,IAAA,EAAA,EAAA,CAEA,CAFA,GAEA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CACA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,GAAA,CAMAO,EAAAA,cAAA,CAAA,GACA,EAAA,AADA,CAAA,EAAA,CACA,CAAAC,EAAAA,kBAAA,CAAA,IAEA,CAFA,CAEA,AAFA,CAAA,GAEA,CAAA,MAAA,CAAA,GAEA,CAAA,CAFA,CAAA,CAAA,EAEA,CACA,EAAA,IAAA,CAAA,8BAAA,CAAA,AACA,CACA,CAEA,OAAA,EAAA,IAAA,CAAA,EACA,OADA,CAAA,KAlEA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,GADA,CACA,EAAA,EACA,EADA,AACA,CADA,CACA,KAAA,CAAA,CACA,GAAA,GAAA,GAAA,CACA,CADA,EAAA,IACA,EAEA,EAAA,GAFA,AAEA,CAEA,EAAA,CAAA,CAAA,CAAA,AAGA,CALA,EAAA,CAKA,EAAA,GAAA,CAAA,CAAA,GAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CACA,EAAA,CAAA,EAAA,CACA,GAAA,CAAA,CAAA,AAGA,IAAA,EAAA,CAAA,GAAA,CAAA,GAAA,CAAA,EAAA,GAAA,CAAA,GAgBA,OAhBA,AACA,CADA,CACA,CAAA,CAAA,CAAA,EAAA,CACA,EAAA,CAAA,CADA,AACA,CAEA,GAAA,CAAA,IACA,EAAA,GAAA,CADA,AACA,CAAA,CADA,EACA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAGA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,GAAA,AACA,AADA,CAAA,CACA,CAAA,EAAA,CACA,EAAA,CAAA,IAAA,IAAA,EAAA,GAAA,EAEA,EAFA,AAEA,CAAA,GACA,GAAA,GADA,CACA,CADA,IACA,CAAA,CAGA,CACA,MADA,uBA0EA,SAAA,AACA,CAAA,CACA,EAAA,EAAA,CACA,EAAA,CADA,CACA,EAEA,OAAA,EAAA,EALA,EAKA,CAAA,CAAA,EAFA,AAEA,EAAA,EAAA,EAAA,GACA,EADA,CAAA,KAAA,KA9H7B,OA8H6B,CAAA,CA9HpB,AAAS,AA8HW,CA9HR,CAAU,EAAc,CAAX,AAAY,EAAU,CAAvC,KACH,UAAf,OAAO,GAA4B,AAA5B,CAA6B,EAAE,CAAX,GAAA,AAGxB,EAAI,CAAD,KAAC,EAAU,EAAM,EAAM,CAAC,AAAP,EAAO,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAA,CAAA,AACA,wBCOhC,SAAS,iHAkCb,SAAS,EAAkB,CAAK,EAAgC,AAC9D,OAAO,EAAM,GADW,AACZ,MAAU,EAAE,MAAM,EAAA,CAAG,CAAC,CAAC,AACrC,CAiEc,IAAA,EACA,WADA,0KACA,CAaA,SAAA,EAAA,CAAA,EAAA,AACA,IADA,GACA,QAAA,CAAA,GAAA,EAAA,CAAA,EAAA,CAAA,AACA,CA8FA,SAAA,EAAA,CAAA,EAAA,AACA,GAAA,CACA,OAAA,CAFA,CAEA,OAAA,YAAA,AACA,CAAA,KAAA,CAAA,CACA,AADA,CAAA,oBAtEA,SAAA,CAAA,CAAA,AAsEA,CAtEA,CAAA,EAAA,CAAA,EAAA,AAEA,QAFA,AAEA,CAFA,GAEA,EAAA,GAAA,EAAA,CAAA,CACA,OAGA,IAAA,EAAA,EAAA,GAAA,CAAA,EAAA,CACA,EAAA,IAAA,CAAA,GAAA,CAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA,EAAA,GAAA,QAAA,CAAA,EACA,KAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,GAAA,GACA,EADA,CACA,CAAA,GAAAI,AADA,CACA,AADA,CACAA,AADA,QACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAGA,IAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,GAGA,CAHA,CAGA,GAAA,EAHA,CAAA,MAGA,CAAAA,EAAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAEA,EAAA,GAAA,SAAA,CAAA,EACA,KAAA,CAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,GADA,AACA,CAAA,GAAAA,CAAA,CAAAA,EADA,MACA,CAAA,EAAA,CAAA,CAAA,CAAA,AACA,0BAlFA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,GACA,EADA,CAAA,AACA,CAAA,CAFA,CAGA,CAFA,KAAA,CAMA,IAAA,CALA,CAKA,CALA,CAKA,SAAA,CAGA,EAHA,CACA,EAAA,SAAA,CAAA,CAFA,CAEA,GAFA,CAAA,SAAA,CAAA,OAAA,EAAA,EAEA,EAFA,CAEA,CAAA,CAAA,GAAA,CAAA,CAAA,CAEA,GAAA,MAAA,GAAA,EAAA,CACA,IAAA,EAAA,CAAA,EADA,CACA,GAAA,CAAA,GAAA,CAAA,GAAA,EAAA,GAAA,CAAA,CAAA,CACA,EAAA,EADA,OACA,CAAA,EAAA,EAAA,CAAA,CACA,CACA,QAFA,kBA/BA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,GAAA,EAAA,CADA,GACA,CAAA,EAAA,GAAA,MAAA,EAAA,CAAA,CAAA,CAAA,AACA,EAAA,EAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,CAAA,AACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,AACA,CAAA,AADA,EACA,KAAA,EAAA,CACA,EAAA,EADA,GACA,CAAA,GAAA,EAAA,CAAA,CAEA,EAAA,IAAA,EAAA,AACA,GAAA,GADA,CACA,CAAA,GAAA,CAAA,EAAA,IAAA,CAAA,AAEA,4BAkHA,SAAA,CAAA,EAAA,AACA,GAAA,EAAA,GACA,MADA,CAAA,AACA,EADA,AAIA,EAHA,CAFA,AACA,AAIA,CAGAC,EAAAA,wBAAA,CAAA,EAAA,OAAA,cAAA,EAAA,EACA,CAAA,CADA,CAAA,GACA,CAEA,CAEA,OAAA,CACA,IADA,oBAhKP,SAAS,AAAoB,CAAK,EAAiB,AACxD,GAAM,SAAE,CAAO,CAAE,EADgB,MACR,CAAE,CAAA,CAAQ,CAAI,EACvC,GAD4C,AACxC,EACF,KADS,EAAE,AACJ,EAGT,IAAM,CAHU,CAGO,EAAkB,KAAK,CAAC,IAAzC,AACN,AAAI,EACF,AAAI,EAAe,CAFmB,GAEnB,EAAQ,EAAe,EAD1B,EAAE,AACA,CAA6B,CACtC,CADwC,AACvC,EAAA,EAAA,CAD+B,GAC/B,CAAA,EAAA,EAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAEA,EAAA,EAFA,EAEA,EAAA,EAAA,IAAA,CAAA,EAAA,GAAA,EAAA,EAAA,OAAA,CAEA,GAAA,IAAA,OAAA,AACA,sCAmEA,SAAA,CAAA,EAAA,AACA,IAAA,EAAA,EADA,AACA,CAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CACA,EAAA,EAAA,CAAA,CAAA,AADA,CAAA,AACA,CAAA,CAAA,CACA,CADA,CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CADA,CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CADA,KACA,CACA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,KAAA,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EACA,GADA,EAAA,AACA,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EACA,GADA,EAAA,AACA,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EACA,GADA,EAAA,KACA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,AACA,UA5HP,SAAS,AAAM,EAhBtB,AAgB+B,GAAV,CAAC,KAhBb,AAgB+B,EAftC,IAAM,EAAMtB,CAAN,AADU,CACJA,EADmC,QACnC,CACZ,OAAO,EAAI,CAAD,KAAC,EAAU,EAAI,CAAD,OAAS,AACnC,GAa0C,EAAU,AAClD,GAAI,CACF,GAAI,GAAQ,GAAF,OAAY,CAEpB,CAFsB,MAEfoB,EAAAA,qBAAqB,CAAC,IAAM,EAAO,IAAD,MAAW,EAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAE,EAAE,CAAC,AAE9E,CAAE,KAAM,CAGR,CAQA,OANK,AAAD,IAGF,EAAa,GAHD,EAAE,EAGd,2BAA6D,CAAI,CAG5D,EAAU,OAAD,AAAQ,CAAC,QAAQ,CAAA,AAAE,CAAA,EAEjC,CADJ,AACM,CAAA,CAA2B,CAAC,AAAkB,GA3BxB,EAAE,CAArBD,EAAAA,KA2BsC,EAAC,OA3BzB,EA2B6B,AA3B5B,CA2B8B,EAAO,CAAA,EAA0B,CAAC,AAAE,CAAD,AAAG,GAD5F,KACoG,CAAC,EAAE,CAAC,CAExG,wBCCI,yBAAyB,qEAlCtB,SAAS,IACd,OAAOI,EAAAA,SAD6B,EAClB,CAD6B,CAC5B,CArBI,EAqBA,CACzB,CAtB6B,AA0E7B,IAAI,EAA8C,IAAI,IArDb,MAqDrB,sBAwDb,SAAS,EAKd,OAJI,AAAqB,IAAI,EAAE,IAC7B,GAAmB,AA/CvB,GA8CM,GADsC,GAAuB,AA7C1D,EACP,EA8CE,CA9CI,MA8CmC,OA9CjC,CAAA,CADmB,AACP,CAAIvB,EAD0B,AAC1BA,UAAA,CACxB,GAAI,CAAC,GAAa,GAAG,CACnB,CADqB,GAAP,GAKhB,AAJS,IAIH,EAAiBoB,EAAAA,CAJL,SAIZ,WAAsC,CAAC,IAAM,EAAY,GAAG,EAAE,CAAC,CAC/D,EADwD,AAC9CG,EAAAA,GAAV,QAAqB,EAAE,CAEvB,EAAa,EAAY,MAAzB,GAAwB,CAAW,CACzC,GAA0B,QAAQ,EAA9B,AAAgC,OAAzB,GAEL,IADoB,GADf,CACmB,CAAC,GAAG,CAAC,EAAa,AAC1C,EAD2D,CACzC,EACpB,GAF+B,CAAqC,CAAC,EACxC,AACtB,EAcX,AAhBgD,AACb,IAe7B,EAAkB,EAAY,AAdf,MAcqB,EAAE,CAAT,EAA7B,YAAqD,OAC3D,AAAI,AAA2B,QAAQ,EAAE,OAA9B,GAEL,AAzBY,IAwBa,EAxBN,CAAA,CAAA,AAwBU,CAAC,GADzB,AAC4B,CAAC,EAAkB,EAAiB,GACrE,AACK,EAMJ,CAPsB,CADqD,AAQjE,CARkE,AASrF,GAT0C,AAiBC,CAjBiB,AAQnD,AASoC,CAGpC,CACT,CApBwC,EAAE,CACd,CA1BD,EAgCM,QAYR,mCAtElB,SAAS,EAGd,MAAO,CADM,GAA8B,AAChC,EAAE,CAtCf,AAqCyE,GAFvC,GAAW,GAnCpC,EACP,GAAM,KAoCO,GAA8B,CAA9B,IApCL,CAAA,CAAY,CAAIvB,EAoC+E,AApC/EA,SADe,CACf,CAGxB,CAJwD,EAIpD,CAAC,GAAa,GAAA,EAAO,CAAC,EAAY,AAAtB,SAAqB,CAAW,CAC9C,CADgD,MACzC,EAGT,IAAM,EAAa,EAAY,MAAzB,GAAwB,CAAW,CAWzC,CAd+B,KAcxB,IACE,CAAC,CADG,CACUoB,EAAAA,MAAb,eAAkC,CAAC,IAAM,EAAY,GAAG,GAAE,CAAC,EAAP,EAEhE,AAF2E,GAiB8B,CAAE,CAAC,EAE5G,SAnB2F,uGCNpF,SAAS,EAAc,CAAO,CAAW,EAA0B,CAAA,CAAE,EAAQ,AAiCjE,CAjCoC,EAA1B,AACvB,EAAQ,IAAI,CAAL,CAAO,CACZ,CAAC,EAAQ,KAAD,IAAC,EAAa,EAAQ,IAAI,CAAL,AAAM,UAAU,EAAE,CACjD,EAAQ,KAAD,IAAC,CAAY,EAAQ,IAAI,CAAL,AAAM,UAAA,AAAU,EAGzC,AAAC,EAAQ,GAAA,EAAQ,AAAT,EAAQ,AAAS,GAAG,EAAJ,AAAM,AAChC,GAAQ,GAAA,CAAD,AAAO,EAAQ,IAAI,CAAL,AAAM,EAAA,EAAM,EAAQ,IAAI,CAAL,AAAM,KAAA,EAAS,EAAQ,IAAI,CAAC,AAAN,QAAM,AAAQ,GAIhF,EAAQ,KAAD,IAAC,CAAY,EAAQ,KAAD,IAAC,EAAaI,EAAAA,kBAAkB,EAAE,CAEzD,EAAQ,KAAD,aAAmB,EAAE,CAC9B,EAAQ,KAAD,aAAC,CAAqB,EAAQ,KAAD,aAAC,AAAkB,EAGrD,EAAQ,KAAD,SAAe,EAAE,CAC1B,EAAQ,KAAD,SAAC,CAAiB,EAAQ,KAAD,SAAC,AAAc,EAE7C,EAAQ,GAAG,EAAE,AAAN,CAET,EAAQ,GAAA,CAA6B,CAA9B,CAA8B,GAAvB,EAAQ,GAAG,CAAC,CAAL,KAAK,CAAgB,EAAQ,GAAA,CAAMC,CAAP,CAAOA,KAAK,EAAA,CAAE,MAE5C,IAAjB,EAAQ,GAAkB,CAAlB,CAAD,AAAqB,EAC9B,EAAQ,IAAA,CAAD,AAAQ,EAAQ,IAAI,AAAJ,CAAD,CAEpB,CAAC,EAAQ,GAAA,EAAD,AAAQ,EAAQ,GAAG,EAAJ,AAAM,CAC/B,EAAQ,GAAA,CAAM,CAAP,AAAQ,EAAA,EAAA,GAAA,EAAA,EAEA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,GACA,EAAA,KAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAEA,EAAA,KAAA,SAAA,CACA,CADA,CACA,KAAA,GAAA,MAAA,OACA,EADA,CACA,QAAA,EAAA,OAAA,EAAA,KAAA,GAAA,CACA,EAAA,KAAA,GAAA,CAAA,EAAA,KAAA,GAAA,KACA,CACA,IAAA,EAAA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA,KAAA,EAAA,CACA,EAAA,KAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,AACA,AADA,CAEA,EAAA,EAFA,GAEA,EAAA,EAAA,CACA,EAAA,KAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAEA,EAAA,KAAA,MAAA,EAAA,CACA,EAAA,KAAA,MAAA,CAAA,EAAA,KAAA,MAAA,EAEA,CAAA,EAAA,KAAA,IAAA,EAAA,EAAA,KAAA,IAAA,EAAA,CACA,EAAA,KAAA,IAAA,CAAA,EAAA,KAAA,IAAA,EAEA,CAAA,EAAA,KAAA,IAAA,EAAA,EAAA,KAAA,IAAA,EAAA,CACA,EAAA,KAAA,IAAA,CAAA,EAAA,KAAA,IAAA,EAEA,QAAA,EAAA,OAAA,EAAA,KAAA,CAAA,GACA,EAAA,KAAA,CAAA,CAAA,EAAA,KAAA,CAAA,EAEA,EAAA,KAAA,CAAA,EAAA,CACA,EAAA,KAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAEA,gBAaA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,CADA,AACA,CAAA,CACA,EADA,AAEA,EAAA,EADA,EAAA,CACA,GAAA,CAAA,CAAA,CACA,GADA,CACA,EAAA,CAAA,EAAA,MAAA,GACA,EAAA,CAAA,IAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAGA,EAAA,EAAA,EACA,GADA,EAAA,CAAA,CAAA,SAnHZ,SAAqB,AAAZ,CAAmB,EAAwD,AAEzF,IAAM,EAAeD,EAFI,AAEJA,QAAf,UAAiC,EAAE,CAEnC,EAAmB,CACvB,GAAG,CADQ,AACNC,EAAAA,KAAK,EAAE,CACZ,IAAI,EAAE,EACN,EADU,OACD,CAAE,EACX,OAAO,CAAE,EADc,AAEvB,QAAQ,CAAE,CADW,AACV,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,CAAC,CACT,cAAc,EAAE,EAChB,GADqB,GACf,CAAE,IAAM,aAAa,CAkHZ,EAlHa,EAmHb,CACA,EAFA,CAEA,CAFA,AAEA,AApHoB,CAoHpB,AApHqB,EAoHrB,EAAA,GAAA,CAAA,CAAA,CACA,IAAA,CAAA,EAAA,IAAA,CAAA,AAEA,OAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,KAAA,EAAA,EAAA,WAAA,EAAA,CACA,SAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,KAAA,IAAA,EAAA,WAAA,EAAA,CACA,MAAA,CAAA,EAAA,KAAA,CAAA,CACA,MAAA,CAAA,EAAA,KAAA,CAAA,CACA,GAAA,CAAA,QAAA,EAAA,OAAA,EAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,GAAA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,MAAA,EACA,OADA,CACA,CAAA,EAAA,KAAA,GAAA,CACA,kBAAA,CAAA,EAAA,KAAA,aAAA,CACA,KAAA,CAAA,CACA,OAAA,CAAA,EAAA,KAAA,EAAA,CACA,WAAA,CAAA,EAAA,KAAA,MAAA,CACA,UAAA,CAAA,EAAA,KAAA,IAAA,CACA,UAAA,CAAA,EAAA,KAAA,IAAA,AACA,CAAA,AACA,CAAA,CAnInB,CAAG,CAMD,OAJI,GACF,EAAc,EADL,AACc,EADZ,CAIN,CACT,CAJyB,EAAS,CAAC,CAAlB,CAGD,qGCzBT,SAAS,EAAS,CAAU,CAAK,CAAnB,AAA2B,CAAK,EAAS,CAAC,EAAK,AAGlE,CAHmD,EAG/C,CAAC,GAAgC,KAAhC,GAAgC,EAApB,OAAO,GAAyB,GAAU,CAAC,CAApC,AACtB,CAD+C,AAAa,MACrD,EAIT,GAAI,GAA+C,AAJlC,CAImC,EAAE,CAApC,GAAd,GAAoB,CAAC,IAAI,CAAC,GAAU,KAAF,CAAC,AAAC,CACtC,OAAO,EAIT,IAAM,EAAS,CAAE,CAJE,EAIb,AAAc,CAAA,CAAY,CAGhC,IAAK,IAAM,GAAA,EAAO,EACZ,MADoB,AACd,CAAC,AADe,SACN,CAAC,cAAc,CAAC,IAAI,CAAC,EAAU,GAAG,CAAC,CACrD,CAAM,AADiD,AAAR,CACxC,EAAG,CAAA,AAAI,EAAM,CAAM,CAAC,CAAR,CAAY,CAAE,AAAH,CAAW,CAAC,EAAI,CAAD,AAAG,EAAS,EAAC,CAAC,CAAX,AAIpD,OAAO,CACT,KADe,+GCjBR,SAAS,EACd,OAAOA,EAAAA,GADqB,EAChB,CAD2B,CACzB,CAAC,SAAS,CAAC,EAAE,CAAC,AAC9B,oBATO,SAAS,EACd,OAAOA,EAAAA,IADsB,CACjB,EAAE,AAChB,AAF0C,mGCDpC,EAAmB,aAAa,CAAhC,mBAuBC,SAAS,AAAiB,CAAK,EAAwC,AAC5E,OAAO,CAAK,CAAC,EAAiB,AAChC,EAFgC,YACD,OAdxB,SAAS,AAAiB,CAAK,CAAS,CAAI,EAA0B,AACvE,EACFH,EADM,AACNA,EADQ,KADoB,iBAEJ,CAAC,EAA6B,EAAkB,CAA/C,EAGzB,CAH4E,CAAC,KAGrE,CAAA,CAA6B,EAAiB,AAE1D,AAL0E,cAGjB,+NC2ElD,OAAM,EAoEJ,GApEI,CAAM,OAoEC,EAAG,CACnB,IAAI,CAAC,mBAAA,EAAsB,EAC3B,GADgC,CAC5B,CAAC,eAAA,CAAkB,EAAE,CACzB,IAAI,CAAC,gBAAA,CAAmB,EAAE,CAC1B,IAAI,CAAC,YAAA,CAAe,EAAE,CACtB,IAAI,CAAC,YAAA,CAAe,EAAE,CACtB,IAAI,CAAC,KAAA,CAAQ,CAAA,CAAE,CACf,IAAI,CAAC,KAAA,CAAQ,CAAA,CAAE,CACf,IAAI,CAAC,WAAA,CAAc,CAAA,CAAE,CACrB,IAAI,CAAC,MAAA,CAAS,CAAA,CAAE,CAChB,IAAI,CAAC,SAAA,CAAY,CAAA,CAAE,CACnB,IAAI,CAAC,sBAAA,CAAyB,CAAA,CAAE,CAChC,IAAI,CAAC,mBAAA,CAAsB,CACzB,OAAO,CAAEI,EAAAA,eAAe,EAAE,CAC1B,UAAU,CAAEP,EAAAA,cAAc,EAAE,AAClC,CAAK,AACH,CAKO,KAAK,EAAU,CACpB,IAAM,EAAW,IAAI,EA6BrB,AA7BM,GAAoB,EAAE,EAC5B,EAAS,MAAD,MAAC,CAAe,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAC9C,EAAS,KAAA,CAAD,AAAS,CAAE,GAAG,IAAI,CAAC,KAAA,CAAO,CAClC,EAAS,MAAD,KAAC,CAAc,CAAE,GAAG,IAAI,CAAC,WAAA,CAAa,CAC9C,EAAS,MAAD,AAAC,CAAS,CAAE,GAAG,IAAI,CAAC,MAAA,CAAQ,CACpC,EAAS,MAAD,GAAC,CAAY,CAAE,GAAG,IAAI,CAAC,SAAA,CAAW,CACtC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,AAGxB,GAAS,KAAD,IAAU,CAAC,KAAA,CAAQ,CACzB,MAAM,CAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAChD,CAAO,CAGH,EAAS,KAAA,CAAQ,AAAT,IAAa,CAAC,KAAK,CAC3B,EAAS,MAAD,AAAC,CAAS,IAAI,CAAC,MAAM,CAC7B,EAAS,MAAD,EAAC,CAAW,IAAI,CAAC,QAAQ,CACjC,EAAS,MAAD,UAAC,CAAmB,IAAI,CAAC,gBAAgB,CACjD,EAAS,MAAD,MAAC,CAAe,IAAI,CAAC,YAAY,CACzC,EAAS,MAAD,UAAC,CAAmB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CACtD,EAAS,MAAD,MAAC,CAAe,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAC9C,EAAS,MAAD,gBAAC,CAAyB,CAAE,GAAG,IAAI,CAAC,sBAAA,CAAwB,CACpE,EAAS,MAAD,aAAC,CAAsB,CAAE,GAAG,IAAI,CAAC,mBAAA,CAAqB,CAC9D,EAAS,MAAD,CAAC,CAAU,IAAI,CAAC,OAAO,CAC/B,EAAS,MAAD,MAAC,CAAe,IAAI,CAAC,YAAY,CACzC,EAAS,MAAD,SAAC,CAAkB,IAAI,CAAC,eAAe,CAE/CQ,EAAAA,gBAAgB,CAAC,EAAUC,EAAAA,IAAF,YAAkB,CAAC,IAAI,CAAC,CAAC,CAE3C,CACT,CAOO,MARU,GAQD,CAAC,CAAM,CAA4B,CACjD,IAAI,CAAC,OAAA,CAAU,CACjB,CAMO,IAPgB,UAOF,CAAC,CAAW,CAA4B,CAC3D,IAAI,CAAC,YAAA,CAAe,CACtB,CAKO,SAAS,AANiB,EAMmB,CAClD,OAAO,IAAI,CAAC,OAAA,AACd,CAMO,WAAW,EAAuB,CACvC,OAAO,IAAI,CAAC,YAAY,AAC1B,CAKO,gBAAgB,CAAC,CAAQ,CAAgC,CAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAC5B,CAKO,KAN6B,CAAC,WAMb,CAAC,CAAQ,CAAwB,CAEvD,OADA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GACpB,IAAI,AACb,CAFqC,AAQ9B,CAR+B,MAQxB,CAAC,CAAI,CAAqB,CAetC,OAZA,IAAI,CAAC,KAAA,CAAQ,GAAQ,CACnB,KAAK,CAAE,OACP,EADgB,AACd,MAAE,EACJ,OADa,GACH,MAAE,EACZ,OADqB,CACb,MAAE,CAChB,CAAK,CAEG,IAAI,CAAC,CAHY,OAGJ,EACfC,AADiB,EACjBA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAE,MAAE,CAAA,CAAM,CAAC,CAAP,AAGjC,IAAI,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAKO,OAAO,EAAqB,CACjC,OAAO,IAAI,CAAC,KAAK,AACnB,CAMO,iBAAiB,CAAC,CAAc,CAAmC,CAGxE,OAFA,IAAI,CAAC,eAAA,CAAkB,QAAkB,EACzC,IAAI,AADmB,CAClB,EAD6C,mBACxB,EAAE,CACrB,IAAI,AACb,CAMO,OAAO,CAAC,CAAI,CAAsC,CAMvD,OALA,IAAI,CAAC,KAAA,CAAQ,CACX,GAAG,IAAI,CAAC,KAAK,CACb,GAAG,CAAI,AACb,CAAK,CACD,IAAI,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAKO,MAAM,CAAC,CAAG,CAAU,CAAK,CAAmB,CACjD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAE,CAAC,EAAG,CAAA,AAAG,CAAA,CAAO,CAAC,AACvC,CAwBO,CAzBwB,YAyBX,CAAoC,CAAa,CAA0B,CAO7F,OANA,IAAI,CAAC,WAAA,CAAc,CACjB,GAAG,IAAI,CAAC,WAAW,CACnB,GAAG,CAAa,AACtB,CAAK,CAED,IAAI,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAuBO,YAAY,CACjB,CAAG,CACH,CAAK,CACC,CACN,OAAO,IAAI,CAAC,aAAa,CAAC,CAAE,CAAC,EAAG,CAAA,AAAG,CAAA,CAAO,CAAC,AAC7C,CAYO,CAb8B,cAaf,CAAC,CAAG,CAAgB,CAMxC,OALI,GAAA,EAAO,IAAI,CAAC,WAAW,EAAE,CAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,EAAI,CAAD,AAC3B,IAAI,CAAC,qBAAqB,EAAE,EAEvB,IAAI,AACb,CAMO,SAAS,CAAC,CAAM,CAAgB,CAMrC,OALA,IAAI,CAAC,MAAA,CAAS,CACZ,GAAG,IAAI,CAAC,MAAM,CACd,GAAG,CAAM,AACf,CAAK,CACD,IAAI,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAKO,QAAQ,CAAC,CAAG,CAAU,CAAK,CAAe,CAG/C,OAFA,IAAI,CAAC,MAAA,CAAS,CAAE,GAAG,IAAI,CAAC,MAAM,CAAE,CAAC,EAAG,CAAA,AAAG,CAAA,CAAO,CAC9C,IAAI,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAMO,cAAc,CAAC,CAAW,CAAkB,CAGjD,OAFA,IAAI,CAAC,YAAA,CAAe,EACpB,IAAI,CAAC,IAD0B,iBACL,EAAE,CACrB,IAAI,AACb,CAKO,QAAQ,CAAC,CAAK,CAAuB,CAG1C,OAFA,IAAI,CAAC,MAAA,CAAS,EACd,GADmB,CACf,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAaO,kBAAkB,CAAC,CAAI,CAAiB,CAG7C,OAFA,IAAI,CAAC,gBAAA,CAAmB,EACxB,EAD4B,EACxB,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAOO,UAAU,CAAC,CAAG,CAAU,CAAO,CAAwB,CAS5D,OARgB,IAAI,EAAE,CAAlB,EAEF,KAFE,EAEK,IAAI,CAAC,SAAS,CAAC,EAAI,CAAD,AAEzB,IAAI,CAAC,SAAS,CAAC,EAAG,CAAA,AAAI,EAGxB,IAAI,CAAC,AAH0B,qBAGL,EAAE,CACrB,IAAI,AACb,CAKO,UAAU,CAAC,CAAO,CAAkB,CAOzC,OANK,EAGH,IAAI,CAHM,AAGL,EAHO,MAGP,CAAW,EAFhB,KAEuB,EAFhB,IAAI,CAAC,QAAQ,CAItB,IAAI,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAKO,UAAU,EAAwB,CACvC,OAAO,IAAI,CAAC,QAAQ,AACtB,CAQO,MAAM,CAAC,CAAc,CAAyB,CACnD,GAAI,CAAC,EACH,OAAO,IAAI,CADM,AAInB,EAJqB,EAIf,EAAyC,UAAzC,AAAyC,EAA1B,OAAO,EAAgC,EAAe,IAAI,CAAA,CAAI,EAS7E,CACJ,CAV0B,EAA8C,GAUpE,KAV2F,OAW/F,CAAU,OACV,CAAK,MACL,CAAI,CACJ,UAAQ,OACR,CAAK,aACL,EAAc,EAAE,OAAhB,aACA,CAAkB,gBAClB,CAAc,CAChB,CAAI,AAhBF,aAgBE,CAhBsB,EACpB,EAAa,UAAD,EAAa,GACzBC,EAAAA,aAAa,CAAC,GACX,OACD,CAAA,CAAS,AAFe,EAcX,CAAA,CAAE,CA2BvB,AAxCS,OAeT,IAAI,CAAC,KAAA,CAAQ,CAAE,GAAG,IAAI,CAAC,KAAK,CAAE,GAAG,CAAA,CAAM,CACvC,IAAI,CAAC,WAAA,CAAc,CAAE,GAAG,IAAI,CAAC,WAAW,CAAE,GAAG,CAAA,CAAY,CACzD,IAAI,CAAC,MAAA,CAAS,CAAE,GAAG,IAAI,CAAC,MAAM,CAAE,GAAG,CAAA,CAAO,CAC1C,IAAI,CAAC,SAAA,CAAY,CAAE,GAAG,IAAI,CAAC,SAAS,CAAE,GAAG,CAAA,CAAU,CAE/C,GAAQ,CAAR,KAAc,CAAC,IAAI,CAAC,GAAM,CAAF,CAAC,IAAO,EAAE,CACpC,IAAI,CAAC,KAAA,CAAQ,CAAA,CAAI,CAGf,GACF,EADO,EAAE,CACL,CAAC,MAAA,CAAS,CAAA,CAAK,CAGjB,EAAY,MAAM,EAAE,CAAT,AACb,IAAI,CAAC,YAAA,CAAe,CAAA,CAAW,CAG7B,GACF,KAAI,CAAC,SADe,EAAE,QACjB,CAAsB,CAAA,CAAkB,CAG3C,IACF,IAAI,CAAC,KADW,EAAE,QACb,CAAkB,CAAA,CAAc,CAGhC,IACT,AADa,CAON,KAAK,EAAS,CAqBnB,OAnBA,IAAI,CAAC,YAAA,CAAe,EAAE,CACtB,IAAI,CAAC,KAAA,CAAQ,CAAA,CAAE,CACf,IAAI,CAAC,WAAA,CAAc,CAAA,CAAE,CACrB,IAAI,CAAC,MAAA,CAAS,CAAA,CAAE,CAChB,IAAI,CAAC,KAAA,CAAQ,CAAA,CAAE,CACf,IAAI,CAAC,SAAA,CAAY,CAAA,CAAE,CACnB,IAAI,CAAC,MAAA,MAAS,EACd,IAAI,CAAC,EADkB,cAClB,MAAmB,EACxB,IAAI,CAAC,EAD4B,UAC5B,MAAe,EACpB,IAAI,CAAC,EADwB,MACxB,MAAW,EAChB,IAAI,CAAC,EADoB,aACpB,MAAkB,EACvBH,EAAAA,KADgC,WAChB,CAAC,IAAI,MAAE,GACvB,IAAI,CAAC,CAD2B,CAAC,UAC5B,CAAe,EAAE,CACtB,IAAI,CAAC,qBAAqB,CAAC,CACzB,OAAO,CAAED,EAAAA,eAAe,EAAE,CAC1B,UAAU,CAAEP,EAAAA,cAAc,EAAE,AAClC,CAAK,CAAC,CAEF,IAAI,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAMO,aAAa,CAAC,CAAU,CAAc,CAAc,CAAiB,CAC1E,IAAM,EAAsC,OAAtC,CAAsC,EAA1B,OAAO,EAA8B,EA7iB3B,GAAG,CAgjB/B,GAAI,GAHqB,AAGR,CAAC,CAHqC,AAIrD,CADkB,EAHoD,CAGpE,GACK,IAAI,CAGb,IAAM,EAA+B,CACnC,OAR6F,EAQpF,CAAEY,EAAAA,CADS,qBACa,EAAE,CACnC,GAAG,CAAU,CAEb,OAAO,CAAE,EAAW,OAAA,CAAD,AAAWC,EAAAA,QAAQ,CAAC,EAAW,OAAO,CAAR,AAAU,IAAI,EAAI,EAAW,OAAO,AAC3F,CADmF,AAC9E,CAUD,OARA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GACnB,IAAI,CAAC,QAD8B,CAAC,GACnB,CAAC,MAAA,CAAS,IAC7B,IAAI,CADkC,AACjC,EADmC,UACnC,CAAe,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAC7C,IAAI,CAAC,CADiD,CAAC,KAC3C,EAAE,kBAAkB,CAAC,iBAAiB,CAAE,UAAU,CAAC,EAGjE,IAAI,CAAC,qBAAqB,EAAE,CAErB,IAAI,AACb,CAKO,iBAAiB,EAA2B,CACjD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAA,CAAS,CAAC,CAAC,AACxD,CAKO,gBAAgB,EAAS,CAG9B,OAFA,IAAI,CAAC,YAAA,CAAe,EAAE,CACtB,IAAI,CAAC,qBAAqB,EAAE,CACrB,IAAI,AACb,CAKO,aAAa,CAAC,CAAU,CAAoB,CAEjD,OADA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAChB,IAAI,AACb,CAKO,EAP4B,CAAC,aAOb,EAAS,CAE9B,OADA,IAAI,CAAC,YAAA,CAAe,EAAE,CACf,IAAI,AACb,CAKO,YAAY,EAAc,CAC/B,MAAO,CACL,WAAW,CAAE,IAAI,CAAC,YAAY,CAC9B,WAAW,CAAE,IAAI,CAAC,YAAY,CAC9B,QAAQ,CAAE,IAAI,CAAC,SAAS,CACxB,IAAI,CAAE,IAAI,CAAC,KAAK,CAChB,UAAU,CAAE,IAAI,CAAC,WAAW,CAC5B,KAAK,CAAE,IAAI,CAAC,MAAM,CAClB,IAAI,CAAE,IAAI,CAAC,KAAK,CAChB,KAAK,CAAE,IAAI,CAAC,MAAM,CAClB,WAAW,CAAE,IAAI,CAAC,YAAA,EAAgB,EAAE,CACpC,eAAe,CAAE,IAAI,CAAC,gBAAgB,CACtC,kBAAkB,CAAE,IAAI,CAAC,mBAAmB,CAC5C,qBAAqB,CAAE,IAAI,CAAC,sBAAsB,CAClD,eAAe,CAAE,IAAI,CAAC,gBAAgB,CACtC,IAAI,CAAEJ,EAAAA,gBAAgB,CAAC,IAAI,CAAC,CAC5B,cAAc,CAAE,IAAI,CAAC,eAC3B,AAD0C,CACrC,AACH,CAKO,wBAAwB,CAAC,CAAO,CAA+B,CAEpE,OADA,IAAI,CAAC,sBAAA,CAAyBK,EAAAA,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAE,EAAS,CAAC,CAAC,CACrE,EADiE,EAC7D,AACb,CAKO,qBAAqB,CAAC,CAAO,CAA4B,CAE9D,OADA,IAAI,CAAC,mBAAA,CAAsB,EACpB,IAAI,AACb,CAKO,AAP6B,qBAOR,EAAuB,CACjD,OAAO,IAAI,CAAC,mBAAmB,AACjC,CAOO,gBAAgB,CAAC,CAAS,CAAW,CAAI,CAAsB,CACpE,IAAM,EAAU,GAAM,CAAF,OAAE,EAAYR,EAAAA,KAAK,EAAE,CAEzC,GAAI,CAAC,IAAI,CAAC,OAAO,CAEf,CAFiB,MACjBvB,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CACjF,EAGT,IAAM,CAHU,CAGW,AAAI,KAAK,CAAC,UAA/B,iBAA0D,CAAC,CAajE,OAXA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC3B,EACA,CACE,MAFO,WAEU,CAAE,SAAS,YAC5B,EACA,GAAG,CAAI,CACP,QAAQ,CAAE,CAClB,CAAO,AAHmB,CAIpB,IAAI,AAFe,EAKd,CACT,CAOO,KARS,SAQK,CAAC,CAAO,CAAU,CAAK,CAAkB,CAAI,CAAsB,CACtF,IAAM,EAAU,GAAM,CAAF,OAAE,EAAYqB,EAAAA,KAAK,EAAE,CAEzC,GAAI,CAAC,IAAI,CAAC,OAAO,CAEf,CAFiB,MACjBvB,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAC/E,EAGT,IAAM,CAHU,CAGW,GAAM,CAAF,YAAzB,KAA2B,EAAsB,AAAI,KAAK,CAAC,GAcjE,IAdwE,CAAC,EAEzE,IAAI,CAAC,OAAO,CAAC,cAAc,CACzB,EACA,EACA,CACE,EAHK,AACF,eAEc,CAAE,OAAO,cAC1B,EACA,GAAG,CAAI,CACP,QAAQ,CAAE,CAClB,CAH0B,AAGnB,CACD,IAAI,AAFe,EAKd,CACT,CAOO,KARS,OAQG,CAAC,CAAK,CAAS,CAAI,CAAsB,CAC1D,IAAM,EAAU,EAAM,GAAhB,AAAe,KAAC,EAAY,GAAM,CAAF,OAAE,EAAYqB,EAAAA,KAAK,EAAE,QAEtD,IAAI,CAAC,OAAO,CAKjB,CALmB,GAKf,CAAC,OAAO,CAAC,YAAY,CAAC,EAAO,CAAE,EAAJ,CAAO,CAAI,CAAE,QAAQ,CAAE,CAAA,CAAS,CAAE,IAAI,CAAC,CAJpEvB,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAC7E,CAMX,CAKU,KAXQ,gBAWa,EAAS,CAIjC,IAAI,CAAC,mBAAmB,EAAE,CAC7B,IAAI,CAAC,mBAAA,EAAsB,EAC3B,EAD+B,EAC3B,CAAC,eAAe,CAAC,OAAO,CAAA,AAAC,IAC3B,EAAS,IAAI,CAAC,AAChB,CAFyC,AAC/B,AACT,CAAC,CACF,IAAI,CAAC,mBAAA,EAAsB,EAE/B,CACF,EAHsC,iJCzwB/B,SAAS,EACd,OAAOD,EAAAA,WAD6B,GAAU,IACrB,CAAC,qBAAqB,CAAE,IAAM,IAAI+B,EAAAA,KAAK,CAClE,CADoE,CAAC,2BAI9D,SAAS,EACd,OAAO/B,EAAAA,aAD+B,GAAU,EACvB,CAAC,uBAAuB,CAAE,IAAM,IAAI+B,EAAAA,KAAK,CACpE,CADsE,CAAC,+ECVvE,IAAM,EAAkB,AAAC,CAAC,EACxB,CAAA,SADI,GACS,OAAA,EAAW,CAAE,CAAA,CAA6C,EAAa,CAKhF,EAAe,MAAM,CAAC,AALyD,GAK/E,kBAA2C,CAAC,2BAMX,CACrC,EACA,EACA,IAFQ,CAIR,EAFO,AADE,EAGH,EAAU,EAAS,GAAnB,CAAuB,CAC3B,AAD2B,CAAL,GAEpB,EAAU,GACH,AAFA,EACQ,CAAC,AAEjB,AACD,CAHW,CACG,EAIZ,GAFK,GACL,EAAQ,GAAG,AACL,CADM,AAEd,CAAC,AAFQ,CACE,CAKb,OAAO,EAAgB,IAAY,EAAgB,CAArB,CAAA,CAAiC,EAAU,CAIzD,CAAgC,AAJ1B,CAAqC,CAIE,AAJF,IAAT,CAAgC,AAKlF,CADwD,CAAY,EAChE,GAD2E,AACjE,EAEd,EAFI,CAAe,CAEd,IAAM,GAAA,EAAO,EAAU,CAC1B,GAAI,EADoB,CACpB,EAAO,EAAS,KAAF,IAClB,GAAU,EACV,EADA,AAAc,EACR,EAAQ,CAAQ,CAAC,CAAjB,CACe,AADM,AACvB,CADsB,SACK,EAAE,QAAtB,EACT,GADS,GACH,CAAC,cAAc,CAAC,EAAS,EAAK,CAAF,AAChC,EAD2B,GACtB,CAAE,CAAC,GAAG,IAAI,AAAgB,EAAM,GAAD,EAAM,CAAC,EAAU,GACrD,CADyD,CAAC,CAAP,OACzC,EAAE,EACZ,EADgB,UACJ,EAAE,EACd,EADkB,MACV,EAAE,CAClB,CAAO,CAAC,CADc,AAGf,CAAA,CAAoC,EAAG,CAAA,AAAI,CAEhD,CAGA,GALqD,IAIjD,GAAS,IAAF,EAAQ,CAAC,MAAM,CAAC,EAAS,CAAE,CAAC,EAAY,CAAjB,AAAoB,EAAA,CAAM,CAAC,AAAP,CAC/C,EACT,CAAC,CAFoD,AAvBgC,EAAU,CAwB/E,CAvBhB,IAD6F,CAAS,CAAC,oJCbhG,OAAM,EAIJ,WAAW,CAACC,CAAK,CAAU,CAJvB,AAIqC,CAJnB,AAI6B,KACpD,EAOA,EAHF,EAHGA,GACa,IAAID,AAFL,AACP,EACYA,AADV,EAGV,GAFyB,AAETC,CAOhB,CAT2B,CAMxB,CADqB,EAEC,CALJ,GAKQD,EAAAA,KADZ,AACiB,CAMpC,CANsC,AADjB,GAOjB,CAAC,AAJH,GAAyB,GAItB,CAAS,CAAC,CAAE,KAAK,CAAE,CAAA,CAJiB,AAIF,CAAC,CACxC,IAAI,CAAC,IADmB,WACnB,CAAkB,CACzB,CAKO,SAAS,CAAI,CAAQ,CAA0B,CACpD,IAEI,EAFE,CAPuC,CAO/B,GAAR,CAAY,CAAC,SAEG,CAFO,EAAE,CAG/B,GAAI,CACF,EAAqB,EAAS,EAChC,CAAA,AAAE,EADmC,CAAN,AAAO,GAC7B,CAAC,CAAE,CAEV,EAHA,IAEA,IAAI,CAAC,SAAS,EAAE,CACV,CAAC,AACT,QAEA,AAAIE,EAAAA,UAAU,CAAC,GACNC,EAAAA,aADwB,CAAC,EAAE,OACJ,CAC5B,EACA,IAAM,IAAI,CAAC,OADX,EACoB,EAAE,CACtB,IAAM,IAAI,CAAC,SAAS,EAAE,GAI1B,IAAI,CAAC,SAAS,EAAE,CACT,EACT,CAKO,SAAS,EAAoC,CAClD,GAPyB,IAOlB,IAAI,CAAC,WAAW,EAAE,CAAC,MAAA,AAC5B,CAKO,QAAQ,EAAU,CACvB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,AACjC,CAKO,iBAAiB,EAAU,CAChC,OAAO,IAAI,CAAC,eAAe,AAC7B,CAKO,WAAW,EAAU,CAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAA,CAAS,CAAC,CAAA,AAC3C,CAKQ,UAAU,EAAU,CAE1B,IAAM,EAAQ,GAAR,CAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAKrC,OAJA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CACf,MAAM,CAAE,IAAI,CAAC,SAAS,EAAE,OACxB,CACN,CAAK,CAAC,CACK,CACT,AAHS,CAQD,GANM,MAMG,EAAY,OAC3B,EAAI,IAAI,CAAC,MAAM,CAAC,MAAA,GAAU,CAAC,EAAE,AACtB,CAAC,CAAC,IAAI,CADuB,AACtB,KAD2B,CACrB,CAAC,GAAG,EAAE,AAC5B,CACF,CAMA,SAAS,IACP,IAAM,EAAWC,EAAAA,IAAX,IADqB,GAAsB,GAClB,EAAE,CAC3B,EAASC,EAAAA,EAAT,cAAyB,CAAC,GAEhC,KAFwC,CAAC,CAEjC,EAAO,IAAD,CAAC,CAAQ,EAAO,IAAD,CAAC,EAAS,IAAI,EAAkBC,EAAAA,aAAD,SAAuB,EAAE,CAAEC,EAAAA,wBAAwB,EAAE,CAAC,AACpH,CAEA,SAAS,EAAa,CAAQ,EAA0B,AACtD,IADgB,GACT,IAAuB,SAAS,CAAC,EAC1C,CAEA,GAH6B,EAAqB,AAAnB,CAAoB,GAG1C,EAAgB,CAAK,CAAS,CAAQ,EAC7C,AADuE,IACjE,CADa,CACL,GAAR,CACN,OAAO,EAAM,GAAD,IADsB,EAAE,AACd,CAAC,KACrB,CAD2B,CACrB,GAAD,QAAY,EAAE,CAAC,KAAA,CAAQ,EACrB,EAAS,CADiB,GAGrC,CAFyB,AAIzB,CAJmB,AAAO,QAIjB,EAAsB,CAAQ,EAAmC,AACxE,OAAO,IAAuB,EADL,OACc,CAAC,IAC/B,EADkB,AAAmB,AAC5B,EADW,EACY,EAAxB,cAAqB,CAAoB,CAAlB,CAAoB,CAAC,CAE/D,sDAKO,SAAS,EACd,MAAO,oBADmC,AAExC,GAFiE,SAGjE,MADkB,GACT,MACT,EACA,UADY,WACS,CAAE,CAAI,EAAwB,IAC1C,EAAmB,EAD+B,CAG3D,IAH0C,AAAoD,CAC1D,CAAC,OAAV,EAEZ,CAAE,IAAM,IAAuB,QAAQ,EAAE,CACxD,KAD2C,EAAE,UAC5B,CAAE,IAAM,IAAuB,gBAAH,CAAoB,CAAlB,CAAoB,AACvE,CAAG,AACH,2IC1IO,SAAS,AAAwBC,CAAO,EAAiC,AAC9E,IAAM,EAASH,EAAAA,EAAT,UAD+B,IACN,CAACG,SAAO,CAAC,AAExC,AAAI,EAAO,GAAG,CAAJ,AACD,CADO,CACA,GAAG,CAAJ,AAIRC,EAAAA,4BAA4B,EAAE,AACvC,4BApBO,SAAS,AAAwB,CAAQ,EAA0C,AAExF,IAAM,EAAWL,EAAAA,IAAX,QAF+B,EAEN,EAAE,AAEjC,CADeC,EAAAA,GACT,aADyB,CAAC,GACzB,GAAA,CAAM,CACf,AAF0C,CAAC,MACpB,iBCPnB,mCAAmC,wFAchC,SAAS,IACd,OAAO,KACT,CAYO,SAAS,GAd6B,CAe3C,EAf+F,EAezFG,EAAUJ,EAAAA,GADa,EACvB,CADiC,EAbG,IAAI,EAchB,EAAE,CAEhC,OAAO,AADKM,EAAAA,CACF,sBADyB,CAACF,GACzB,MADgC,CAAC,QAClB,EAAE,AAC9B,aAyGO,SAAS,EACd,OADuB,AAChB,GADoD,CAClC,SAAS,EAAZ,AAAiB,AACzC,EAD0B,uEA1FnB,SAAS,EACd,OAAOvC,EAAAA,GADqB,GAAU,YACb,CAAC,aAAa,CAAE,IAAM,IAAI+B,EAAAA,KAAK,CAC1D,CAD4D,CAAC,oBAXtD,SAAS,EACd,IAAMQ,EAAUJ,EAAAA,KAAV,EADyB,GAAU,IACX,EAAE,CAEhC,OADYM,AACL,EADKA,CACF,sBADyB,CAACF,GACzB,MADgC,CAAC,UAChB,EAAE,AAChC,6BAsGO,SAAS,AAAyB,CAAK,EAAuB,AACnE,IAAM,EAAkB,IACxB,GAAI,EACF,IAFI,EADgC,AAG7B,CAAE,MADQ,EAAE,AACF,CAAE,EAAgB,EAFgB,EAAE,GAEX,CAAE,KAAV,EAAiB,CAAE,EAAgB,MAAA,CAAQ,CAK/E,GAAM,EALgE,OAK9D,CAAO,cAAE,CAAY,mBAAE,CAAA,CAAkB,CAFtB,EAAM,AAEoBG,GAFrB,iBAEuC,CAFjB,EAAE,CAIlD,EAA6B,CACjC,QAAQ,CADQ,AACN,EACV,KADiB,EACV,CAAE,GAAqBC,EAAAA,YAArB,EAAmC,EAAE,AAClD,CAAG,CAMD,OAJI,GACF,GAAa,MADC,EAAE,CACJ,KAAC,CAAiB,CAAA,CAAY,CAGrC,CACT,WADqB,uBA9Id,SAAS,EACd,YAA+C,IAAxC,CACT,IAD0D,MADb,GAAY,qBAChD,KAfF,SAA4C,AAAnC,CAAqC,EACnD,AADkH,EAC5E,CACxC,CAD0C,sBAwGnC,KAzG2C,IAChD,AAwGc,AACd,GAAG,CAAA,EAIH,IAAMJ,EAAUJ,EAAAA,IALgB,CAK1B,SAAwB,EAAE,CAC1B,EAAMM,CAAN,CAAMA,uBAAuB,CAACF,GAGpC,GAAoB,CAAC,EAHsB,CAGvC,AAHwC,EAGnC,EAAD,IAAC,CAAc,CACrB,GAAM,CAAC,EAAgB,EAAQ,CAAI,IAAI,CAAR,IAAV,AAErB,AAAK,EAIE,EAAI,AAJP,CAIM,SAJS,EAAE,SAIW,CAAC,EAAgB,GAHxC,EAAI,CAAD,EAG6C,CAAC,GAAX,WAHhB,CAAC,EAIlC,CAEA,KAN0C,CAAC,CAMpC,EAAI,CAAD,iBAAmB,CAAC,CAAI,CAAC,CAAC,CAAC,CAAC,AACxC,cAnEO,SAAS,AACd,GAAG,CAAA,EAEH,GAHuB,CAGjBA,EAAUJ,EAAAA,KAAV,SAAwB,EAAE,CAC1B,EAAMM,CAAN,CAAMA,uBAAuB,CAACF,GAGpC,GAAoB,CAAC,EAHsB,CAAC,AAGxC,EAAK,EAAD,IAAC,CAAc,CACrB,GAAM,CAAC,EAAO,EAAQ,CAAV,AAAc,IAAI,CAAR,IAEjB,AAAL,EAIO,EAJH,AAIO,CAAD,AAJA,EAAE,SAIW,CAAC,EAAO,GAHtB,AAGoB,EAHhB,CAAD,EAG2B,CAAC,KAHlB,CAAC,EAIzB,CAEA,KANiC,CAAC,CAM3B,EAAI,CAAD,QAAU,CAAC,CAAI,CAAC,CAAC,CAAC,CAC9B,AAD+B,oHCIiB,wDAnCJ,iDAIM,iDAFN,gDAJK,iEASK,sDAXT,iEALa,8EAfO,8EAGP,wEAGC,0DAdf,+CAKI,uEAVoB,4EARf,wDARL,8CA6DL,+CAYM,qCChE1C,SAAS,EAA0B,CAAU,EAAsB,AACxE,GAAI,EAAa,KAAO,GAApB,AAAkC,GAAG,CACvC,CADyC,EADJ,AACf,GACf,CAAE,IAAI,EAAE,CAAgB,CAGjC,GAAI,GAAc,KAAO,EAAa,AAAlC,GAAqC,CACvC,CADyC,GAAlB,GACf,GACN,KAAK,EADW,CACR,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,SAAW,CAAmB,AAChE,MAAK,GAAG,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,WAAW,CAAqB,AAClE,MAAK,GAAG,CACN,MAAO,CAAE,IAAI,CArBY,CAqBV,CAAmB,OAAO,CAAE,QAAX,GAAW,CAAa,AAC1D,MAAK,GAAG,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,QAAW,CAAkB,AAC/D,MAAK,GAAG,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,aAAW,CAAuB,AACpE,MAAK,GAAG,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,YAAW,CAAsB,AACnE,MAAK,GAAG,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,GAAW,CAC7C,AAD0D,SAExD,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,UAAW,CAAoB,AACvE,CAGE,GAAI,GAAc,KAAO,EAArB,AAAkC,GAAG,CACvC,CADyC,GAAlB,GACf,GACN,KAAK,EADW,CACR,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,OAAW,CAAiB,AAC9D,MAAK,GAAG,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,KAAW,CAAe,AAC5D,MAAK,GAAG,CACN,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,WAAW,CAAqB,AAGxE,CAGE,MAAO,CAAE,IAAI,EAAE,CAAmB,OAAO,CAAE,QAAX,QAAW,CAAkB,AAC/D,qGAlD8B,sBADG,gDAyD1B,SAAS,AAAc,CAAI,CAAQ,CAAU,EAAgB,AAClE,EAAK,EAAD,IADuB,MACV,CAAC,2BAA2B,CAAE,GAE/C,IAAM,EAAa,CAFsC,CAEZ,AAFa,GAG/B,GADrB,IAAiD,CAAC,OACd,EAAE,CAAxC,EAAW,AAD6B,OAC7B,CAAD,CACZ,EAAK,EAAD,OAAU,CAAC,EAEnB,QAF6B,CAAC,uGC5DxB,EAA4B,cAAc,CAC1C,EAAsC,MADtC,iBAC6D,UAA7D,iBAyDC,SAAS,AAAwB,CAAI,EAAmD,AAG7F,MAAO,CACL,KAAK,CAHgB,AAGd,CAAc,CAAC,EAHD,AAG2B,CAChD,EALmC,YAKrB,CApClB,AAoCoB,OAD+B,EAnCnB,AAAvB,CAA+B,EAA+C,AACrF,GAAK,CAAD,EAIJ,GAAwB,CA+BgB,CAnC3B,EAAE,MADc,AAKzB,OAAO,GAAyB,KAAzB,EAAyB,GAAW,GAAsC,KAAtC,KAAgD,EAAE,AAAtC,OAAO,EAAS,KAAA,CAAD,AACxE,GAAI,CACF,OAAO,EAAS,KAAK,CAAN,CAAQ,AACzB,CAAE,KAAM,CACN,MACF,CAIF,AALW,OAKJ,EACT,AANsB,EA2BqB,CAAc,CAAC,EAtBjD,AAsBqF,CAAC,AAC/F,CAAG,AACH,4BApBO,GAkBsF,MAlB7E,AAAwB,CAAI,CAAoB,CAAK,CAAS,CAAc,EAAe,AACrG,IAAI,AACNpB,EADQ,AACRA,UAFmC,cAEX,CAAC,EAAM,EAAF,AAAuC,AApCxE,SAAS,AAAqB,CAAK,EACjC,AADwD,GACpD,CAEF,IAiCwF,AAjClF,EAAetB,EAAAA,KAHI,GAGnB,CAiC4D,CAjCnC,CAAC,OAAO,CACvC,GAA4B,UAAU,EAAlC,AAAoC,OAA7B,EACT,OAAO,GADE,CACE,EAAa,EAE5B,CAAE,EAF+B,CAAC,EAE1B,CAGR,CAL2B,AAO3B,OAAO,CACT,EAuB6F,EAxB/E,EA2BVsB,EAAAA,QAHuG,CAAC,CAAC,cAGjF,CAAC,EAAM,EAAF,AAA6B,GAE9D,EAFmE,CAAC,iBAAR,2GClD/C,EAA4B,UAgF5B,SAAA,EACA,CAAA,CAjFA,CAmFA,GAAA,IAAA,AAAAb,EAAAA,IAHA,GAGA,CAAA,CAAA,IAAA,KAAA,CAAA,GAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA,MAIA,KAAA,CAAA,OAAA,CAAA,GAEA,EAAA,MAAA,CAAA,CAAA,AAFA,CAAA,CAEA,CAAA,AAFA,AAEA,GAAA,CAEA,IAFA,EAEA,CAAA,OAAA,CADA,AACA,EADA,IAAA,AACA,CADA,MACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CADA,EACA,CACA,CADA,AACA,CAAA,EAAA,CAAA,CACA,CAAA,CAAA,CACA,CAFA,EAEA,AACA,CAAA,CAAA,CAAA,CAGA,EAAA,EACA,CAQA,SAAA,CATA,CAAA,AASA,CAAA,EAAA,AACA,EAVA,KAUA,EACA,KAAA,CAAA,CAFA,EAEA,EACA,GAAA,CAAA,IACA,IAAA,EAAA,EADA,AACA,CAAA,GADA,GACA,CAAA,EAAA,CAAA,CAAA,QACA,CAAA,CAAA,EAAA,CAAA,EAEA,EAAA,CAFA,AAMA,CAFA,EAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CACA,EADA,AACA,CADA,IACA,CAAA,EAAA,CAAA,CAAA,CAAA,AACA,CAAA,GAAA,CAAA,IACA,GAAA,CACA,EAFA,IAAA,CAEA,kBAAA,CAAA,EAAA,IAAA,EAAA,CAAA,AACA,CADA,AACA,KAAA,CAGA,MACA,CACA,CAAA,CAAA,AACA,CAAA,EACA,MAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CACA,CADA,EACA,IACA,CAAA,AADA,CACA,CADA,CACA,CAAA,CAAA,CAAA,CAEA,GAAA,AACA,CAAA,CAAA,CAAA,AACA,CASA,SAAA,EAAA,CAAA,EAAA,AACA,GAAA,CAAA,EAAA,GAAA,KAAA,EADA,EACA,CAAA,GAAA,GAAA,CAAA,EAAA,CAKA,OAAA,MAAA,CAAA,OAAA,CAAA,GAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,IAAA,CAAA,AACA,GADA,CACA,EAAA,CADA,AACA,EAAA,GADA,IACA,WAAA,CAAA,GAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CACA,EAAA,CAAA,GAAA,AADA,CAAA,CACA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,KAAA,GACA,CADA,CACA,MAAA,GAAA,IACAP,CADA,CACAA,WAAA,EACAE,EAAAA,IAFA,CAEA,CAFA,AAEA,IAAA,CACA,CAAA,gBAAA,EAAA,EAAA,OAAA,IAAA,EAAA,EAAA,SAAA,+CAAA,CAAA,EAEA,GAEA,CAEA,CAAA,CAAA,EAAA,CACA,AADA,IAJA,MAEA,mBAtJ4B,qEAPM,mDAgBxC,SAAS,AAEd,CAAa,EAEb,IAAM,EAAgB,EAAmB,GAEzC,GAAI,CAAC,EAFC,AAGJ,IAHoD,CAAC,EAG9C,AAIT,AAPwC,IAOlC,AALY,EAAE,AAKW,GAJb,CAPiC,CACrD,CAUuC,CAAC,OAAO,CAAC,GAAe,MAAM,CAAyB,CAAC,EAAK,AAAvC,CAAqC,AAAG,AAAvC,EAA4C,CAAF,CAAQ,GAAD,CACvG,CAD6G,CACzG,CAAD,SAAW,CAAC,KAEjB,CAAG,CADoB,AACnB,EADuB,CAAD,IAAM,CAAC,EAA0B,IACzC,EAD+C,CAAC,CAZxE,AAWgD,AAExB,CAFyB,AAErB,CAAA,CAFuB,AAElB,CAEtB,GAAG,AACT,CAAA,CAAE,CAAC,KAJwD,GAQ9D,AAAI,MAAM,CAAC,IAAI,CAAC,GAAwB,MAAA,CAAS,CAAC,CACzC,CAD2C,MAGlD,CAEJ,EALwC,CAAC,GAG9B,QAFA,CAES,iCAab,SAAS,AAEd,CAAsB,EAEtB,GAAK,CAAD,CAeO,OAAA,EAVe,MAAM,CAAC,IALN,EAAE,CAKW,CAAC,GAAwB,CAUtD,CAAA,IAV4D,CACrE,CAVuD,AAUtD,CATL,CASU,CAAF,AAAG,EAAQ,EAAS,EAAX,EASJ,AAVoD,AAEvD,CADuB,AADiC,AAUrD,CATc,EAEnB,CAAG,CAAC,CAAC,CADK,CACL,CADO,CACP,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA,GAAA,AAEA,CAAA,CAAA,EAIA,MARA,gCAXb,2HCvDM,EAAe,UAAf,CAA0B,CAG1B,EAAY,OAAZ,2EAA8F,CA6B/F,SAAA,EAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,AADA,CACA,GAAA,CAAA,EAAA,CAAA,AAEA,CAFA,EAEA,CAAA,EAAA,GAAA,SAEA2C,EAAAA,cAAA,CAAA,KAEA,CAFA,MAEA,CAAA,KAAA,CAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,CAAA,AACA,CAAA,CAAA,CAIA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,CACA,EAAA,EAEA,EAAA,EAAA,CAFA,AAEA,CAFA,GAEA,CAAA,CAAA,EAAA,CAAA,CAMA,GALA,EAAA,GAAA,GAAA,CAAA,CAAA,EAAA,CACA,EAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CACA,EAAA,EAAA,GAAA,EAAA,EAGA,EAAA,CACA,IAAA,EADA,AACA,EAAA,KAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CACA,IACA,EAAA,CAAA,CAAA,EAAA,CAEA,CAHA,AAKA,CAJA,CADA,KAKA,EAAA,MAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,QAAA,OAAA,EAAA,EAAA,MAAA,CAAA,QAAA,IAAA,CAAA,CAAA,CAAA,AACA,CAEA,KAHA,IAGA,EAAA,CAAA,EAAA,AACA,MAAA,CACA,KAFA,GAEA,CAAA,EAAA,QAAA,CACA,SAAA,CAAA,EAAA,QAAA,CAAA,EAAA,EAAA,CACA,IAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CACA,IAAA,CAAA,EAAA,IAAA,CACA,GADA,CACA,CAAA,EAAA,IAAA,EAAA,EAAA,CACA,IAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CACA,SAAA,CAAA,EAAA,QAAA,CAAA,AACA,CAAA,AACA,CA8CA,SAAA,EAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,CAAA,CAAA,GAAA,CAAA,GAEA,CAHA,MAGA,EAFA,CAAA,AAEA,CAAA,CAAA,CAAA,AACA,iCA1GE,SAAS,AAAY,CAAG,CAAiB,GAAwB,CAAK,EAAU,AACrF,GAAM,AADmB,GAAiC,GAClD,CAAI,MAAE,CAAI,MAAE,CAAI,MAAE,CAAI,WAAE,CAAS,UAAE,CAAQ,WAAE,CAAA,CAAU,CAAI,EACnE,CADsE,KAEpE,CAAC,EAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,AACA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,AADA,AAGA,GAFA,GAAA,qBA6GA,SAAA,CAAA,EAAA,AACA,IAIA,EAJA,EAAA,EAAA,AAIA,GAJA,CAAA,KADA,CACA,EAAA,CAEA,CAAA,MAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAUA,OANA,EAAA,KAAA,CACA,CADA,CACA,IAAA,EAAA,CAAA,EAAA,KAAA,CAAA,CACA,IACA,AADA,EAAA,AACA,EAAA,EAAA,CAAA,CAGA,CACA,KADA,WAHA,wBAUA,SAAA,CAAA,EAAA,AACA,IADA,AACA,EAAA,QAAA,EAAA,OAAA,EAAA,EAAA,GAAA,CAAA,CAAA,GACA,CADA,CAAA,CAAA,AACA,GAAA,AA7EA,MA4EA,CACA,EA7EA,CAAA,CA6EA,CA7EA,AACA,GAAA,CAAA7C,EAAAA,EADA,SACA,CACA,CADA,MACA,EAGA,EAHA,CAGA,MAAA,CAAA,WAAA,CAAA,UAAA,CAAA,CAAA,CAAA,GAAA,KAWA,CATA,AACA,CADA,EASA,QATA,CAAA,MACA,KADA,CAAA,MASA,AATA,CAAA,CASA,UATA,CAAA,CACA,IAAA,CAAA,GACA,CAAA,CAAA,CAAA,CAAA,CAAA,CADA,CACA,CACAE,EAAAA,AAFA,EACA,GACA,CAAA,KAAA,CAAA,CAAA,oBAAA,EAAA,EAAA,OAAA,CAAA,CAAA,CAAA,EACA,IAAA,EASA,EAAA,KAAA,CAAA,CAAA,MAAA,CAAA,CAKA,AA/FI,AAAa,CA0FjB,GAKA,CAAA,GA/FI,IAAuB,AAAa,OAAO,CAApB,AA+F3B,EAAA,GACAA,EAAAA,GADA,CAAA,CACA,CADA,AACA,KAAA,CAAA,CAAA,qCAAA,EAAA,EAAA,CAAA,CAAA,EACA,EADA,GACA,AAGA,GAAA,CAAA,IAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CACAA,EAAAA,KAAA,CAAA,KAAA,CAAA,CAAA,iCAAA,EAAA,EAAA,CAAA,CAAA,CACA,KAXAA,AAWA,EAXAA,KAAA,CAAA,KAAA,CAAA,CAAA,sCAAA,EAAA,EAAA,CAAA,CAAA,CACA,IADA,AAeA,CAdA,CAuDA,GAGA,OAAA,AAHA,CAIA,AAJA,EAAA,OAGA,0FC3JE,SAAS,AAAgB,CAAU,EAA+B,AACvE,GAA0B,SADG,AACM,EAA/B,AAAiC,OAA1B,EACT,OAAO,CADE,KACI,CAAC,GAGhB,IAAM,EAA6B,CAHT,CAGpB,AAHqB,MAGQ,EAAtB,OAAO,EAA0B,QAA1B,EAAoC,CAAC,GAAc,EACvE,KAAoB,AAD+C,CAAA,EAAc,KAC7D,EAAhB,OAAO,GAAqB,KAAK,CAAC,EAAI,CAAA,IAAK,GAAO,CAAA,IAAK,GAAO,CAAP,AAAQ,CAInE,CAJqE,MAI9D,CACT,GADa,qKCLA,EAAqB,AAAI,MAAM,CAC1C,SADW,CACX,GAAA,aAAA,mCAiBK,SAAS,EAAuB,CAAW,EAAwC,IAUpF,EATJ,GAAI,CAAC,EACH,KAFkC,AAUnB,EARR,AAGT,EAJgB,EAAE,AAIZ,EAAU,EAAY,CAHV,IAGe,CAAC,GAClC,AAD2B,GACtB,CAAD,CAWJ,KAXY,CAKR,AAAe,CALL,EAKQ,CAN8B,CAM5B,AAN6B,EAM1C,CAAC,CAAC,CAAA,CACX,EAAgB,GACQ,CADJ,EACO,EAAE,CAApB,CAAO,CAAC,AADjB,CACkB,CAAA,GAClB,EAAgB,EAAA,CAAK,CAGhB,CACL,MAJA,CAIO,CAAE,CAAO,CAAC,CAAC,CAAC,eACnB,EACA,WADa,CACD,CAAE,CAAO,CAAC,CAAC,CAAC,AAC5B,CAAG,AACH,+EAyCO,SACL,AADc,EACgBsB,EAAAA,GAAvB,YAAsC,EAAE,CAC/C,EAA6BoB,CAFU,CAEVA,EAAvB,YAAqC,EAAE,CAC7C,CAAO,EAEP,IAAI,EAAgB,EAAE,CAItB,QAJI,IACY,IAAZ,GACF,EADuB,CACP,CADS,AAAvB,CACwB,IAAA,CAAV,AAAiB,IAAA,CAAI,CAEhC,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,AACA,UADA,oBAMA,SAAA,AACA,EAAApB,EAAAA,GAAA,YAAA,EAAA,CACA,EAAAoB,CAFA,CAEAA,EAAA,YAAA,EAAA,CACA,CAAA,EAEA,MAAA,CAAA,GAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,AACA,kCAxDH,SAAS,AACd,CAAW,CACXE,CAAO,EAEP,IAAM,EAAkB,EAAuB,GACzC,EAAyBC,EAAAA,IADzB,AAAoD,CAAC,IAJhB,IAIG,KACxC,mBAA8D,CAACD,GAErE,GAAI,CAAC,EAFuE,CAAC,AAEvD,OAAO,CAC3B,CAD6B,GAAX,EACX,CACL,OAAO,CAAEtB,EAAAA,eAAe,EAAE,CAC1B,UAAU,CAAEP,EAAAA,cAAc,EAAE,AAClC,CAAK,CAGH,IAAM,EAAa,AAiDX,SAAA,AACA,CAAA,CACA,CAAA,EAGA,IAAA,EAAA+B,EAAAA,YAtD6C,AAsD7C,GAAA,CAAA,GAAA,EALA,SAKA,CAAA,CACA,QAAA,IAAA,EACA,GADA,EAAA,EACA,EAIA,IAAA,CALA,CAKAA,EAAAA,MAJA,MAIA,GAAA,CAAA,GAAA,WAAA,CAAA,QACA,GAAA,GAAA,UAAA,EAAA,CAAA,QAAA,EACA,EAAA,KADA,EAAA,MACA,CAEA/B,EAAAA,cAAA,EAAA,CAAA,EAEA,EAAAA,EAAAA,YAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAGAA,EAAAA,cAAA,EAEA,AAFA,EArE8C,EAAiB,GAGnE,IACF,EAAuB,IAJ4C,OAI5C,CAAc,CAJsD,CAAC,AAI5C,EADxB,EAAE,EACJ,EAAyB,AAAS,EAAA,CAAE,CAG5D,GAAM,SAAE,CAAO,cAAE,CAAY,eAAE,CAAA,CAAc,CAAI,EAEjD,MAAO,CACL,MAH8D,CAGvD,gBACP,EACA,OAAO,CAAE,EADG,AAEZ,GAAG,CAAE,GAA0B,CAAA,CAAE,EADX,UAEtB,CACJ,CACA,AADG,GAFM,KACK,gBAkEJ,SAAA,CAAA,CAAA,CAAA,EACA,AADA,IACA,EAAAgC,EAAAA,MADA,CACA,eAAA,CAAA,MAAA,CAAA,GAGA,GAAA,GAAA,IAAA,EAAA,CACA/C,CADA,CACAA,GADA,EACA,CAAA,AADA,EAAA,CACA,CACA,CAAA,oEAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,CAAA,CAAA,GAEA,IAFA,AAKA,CAHA,CAGA,IAAA,MAAA,EAAA,CAAA,uBAAA,IAAA,AAMA,IAAA,CAAA,AANA,CAAA,AAMA,CANA,AAMA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CACAA,EAAAA,CADA,IACA,CAAA,GAAA,CACA,CAAA,wBARA,uFAQA,EAAA,EAAA,UAAA,OAAA,EAAA,EAAA,CAAA,CAAA,GAEA,EAKA,EAPA,CAEA,0PClJN,GAA0B,EAkEvB,GAlE4B,MAkEnB,EAA4B,CAAK,EAA2C,IAlExF,GAmEF,AAAI,GAAS,EAAT,AAAe,GAAD,GAAC,CAAS,CAAC,CACpB,CAFgC,AACV,CAChB,GAAD,AAAI,CAAC,CAAC,CAAE,OAAO,CAAE,QAAE,CAAM,SAAE,CAAO,YAAE,CAAU,CAAE,GAAG,EAAa,SAAb,GAAe,CAAA,CAAY,GAAA,CAAM,CAC9F,OAAO,CAAE,EACT,IADe,IACP,CAAE,EACV,KADiB,EACV,KAAE,UAAA,GACT,EADwB,AAExB,GAAG,CAAW,CACpB,CAAK,CAAC,CAFU,AAET,KAEH,CAEJ,CAKO,GAZyC,EAKrC,IAOK,EAAuB,CAAK,EAPxB,AAO6D,MAC1D,AAArB,AAAI,QAAyB,EAAE,CADK,MACzB,EACF,EAAyB,CADvB,EAIP,EAHmC,CAAC,EAG/B,CAAC,OAAO,CAAC,GAET,CAAK,CALmB,AAGV,AAER,CAFS,AAER,CAAA,CAFU,AAEN,CAAK,CAAC,CAAC,CAAA,CAAI,GAAG,CAG9B,KAAA,QAAiB,IAAI,CAChB,CADkB,CACO,EAAM,GAAD,IAAQ,EAAE,CAAC,CAG3CoB,EAAAA,OAH0B,WAGR,EAAE,AAC7B,CAKA,SAAS,EAAyB,CAAS,EAEzC,AAF2D,OAEpD,AADM,EAAY,EAClB,KADM,GADkB,AACI,EACrB,EAAY,IAAA,AAAO,CACnC,CAQO,OATqC,EAS5B,EAAW,CAAI,EAAkB,KAAvB,CACxB,GAoEmD,CApE/C,SAoEyD,EAAtD,KApEa,EAoEL,AApEM,EAoEc,EApEV,AAoEV,CApEW,EAAE,MAoEO,CAnEjC,OAAO,EAAK,EAAD,SAAY,EAAE,CAG3B,GAAM,CAAE,MAAM,CAAE,CAAO,CAAE,OAAO,CAAE,CAAA,CAAA,CAAa,EAAK,EAAD,SAAY,EAAE,CAGjE,GA0CO,AAAE,CAFkC,AAEnC,AA1CJ,EAAoC,EAwCO,CAE7B,CA1C0B,AAwCkD,CAxCjD,AA0C5B,QAAC,EAAgB,EAAS,AAAX,CAAC,KAAS,GAAC,EAAe,EAAF,AAAW,CAAV,EA1ClB,CA0C4B,EAAD,AAAW,EAAF,AAAW,CAAV,KAAS,CAAC,EADrE,AACkF,EAAF,AAAW,CAAV,CADjF,IAC0F,AAAO,CA1CnE,CAC7C,GAAM,YAAE,CAAU,WAAE,CAAS,MAAE,CAAI,SAAE,CAAO,QAAE,CAAM,OAAE,CAAA,CAAM,CAAI,EAahE,EAboE,IAa7D,SACL,OAAO,IACP,EACA,IAAI,CAAE,CADE,CAER,QADgB,GACL,CAAE,EACb,EADiB,YACH,CAXd,CAWgB,YAAY,IAXV,EACd,EAAK,EAAD,UAAC,CACL,sBAAuB,EACpB,EAAK,EAAD,eAAC,EAAuD,OAC7D,OAQN,EARe,aAQA,CAAE,EAAuB,GAExC,MAFiD,CAAC,EAEzC,CAAE,EAAuB,KAFK,EAEE,CAAA,CAAK,EAC9C,MAAM,CADiD,AAC/C,EADyB,AACR,GACzB,EAAE,CAAE,AAD2B,CACjB,AADkB,CACjB+B,EAAAA,IADS,wBACmB,CAAC,CAC5C,MAAM,CAAE,CAAU,CAACC,EAAAA,gCAAgC,CAAA,CACnD,KAAK,CAAE,EAA4B,EACzC,CAAK,AACH,CAIA,CAN4C,CAAC,IAMtC,SACL,MAPoC,CAO7B,IACP,EACA,MADQ,SACO,CAAE,CAAC,CAClB,IAAI,CAAE,CAAA,CAAE,AACZ,CAAG,AACH,CAgCO,SAAS,EAAc,CAAI,EAAiB,AAGjD,GAAM,KAHqB,OAGnB,CAAA,CAAW,CAAI,EAAK,EAAD,SAAY,EAAE,CACzC,OAtMgC,IAsMzB,CACT,CAGO,QAJE,CAIO,EAAiB,CAAM,CAJf,CAKtB,AADmF,GAC/E,AAAC,GAAU,EAAO,CAAjB,EADyB,CACT,AAAC,GAASC,EAAAA,AALS,iBAKQ,EAAE,MAIlD,AAAI,EAAO,IAAD,AAAC,GAASC,EAAAA,cAAc,CACzB,CAD2B,GACvB,CAGN,EAAO,IAAD,GAAC,EAAW,gBAC3B,AAD2C,CAG3C,IAAM,EAAoB,eAApB,IAAuC,CACvC,EAAkB,aAAlB,IAAmC,mBAxNV,8CAkOxB,SAAS,AAAmB,CAAI,CAA6B,CAAS,EAAc,AAGzF,IAAM,EAAW,CAAI,CAAC,EAAe,EAAK,CAHV,CAIhCpC,EAD8C,AAC9CA,OADqC,iBACb,CAAC,EAAwC,EAAiB,GAI9E,CAAI,CAAC,AAJgB,EAIE,CAJ+D,AAKxF,CALyF,AAI9D,AACvB,CAAC,EAAkB,CALuD,AAKtD,GAAG,CAAC,GAE5BA,EAHwB,AAGxBA,IAFqC,CAAC,AAAhB,mBAEE,CAAC,EAAM,EAAF,AAAqB,IAAI,GAAG,CAAC,CAAC,EAAU,CAAC,CAAC,AAE3E,EAFoD,GAAoB,6CA8CjE,SAAS,EACd,IAAMoB,EAAUJ,EAAAA,GADW,EACrB,CAD0C,QAClB,EAAE,CAC1B,EAAMM,CAAN,CAAMA,uBAAuB,CAACF,SAAO,CAAC,AAC5C,AAAI,EAAI,CAAD,YAAc,CACZ,CADc,CACV,CAAD,YAAc,EAAE,CAGrBd,EAAAA,gBAAgB,CAAC+B,EAAAA,eAAe,EAAE,CAC3C,AAD4C,gBAdrC,SAAqB,AAAZ,CAAgB,EAAmC,AACjE,OAAO,CAAI,AADc,CACb,EAAe,EAAK,CAClC,GADsC,OAAT,aA1BtB,SAAS,AAAmB,CAAI,EAAqC,AAC1E,IAAM,EAAY,IAAI,GAAhB,AAAmB,CAkBzB,CAlBiC,AADD,MAiBhC,AAdA,SAAS,EAAgB,CAAI,EAAmC,AAE9D,CAYa,GAZT,EAAU,GAAG,CAFK,AAEJ,GAAL,CAAS,AAGX,CAHY,CAGE,CAHA,EAMvB,CAH2B,CAAC,EAAE,AAGzB,IAAM,AAHW,KACtB,EAAU,EAEC,CAFE,CAAC,EAEU,CAFf,AACU,CADD,AACK,CAAC,AADL,EACsB,CAAI,IACX,CADgB,AACd,CADe,IAAI,CAAC,CAAI,CAAC,CAApB,CAAsC,CAAA,CAAI,EAAE,EAEnF,EAAgB,EAGtB,EAEgB,GAET,AAT2E,CAO9D,CALW,AAKV,CALW,EAOpB,CAAC,AAPQ,IAOJ,CAAC,EACpB,OAD6B,CAAC,yCA5BvB,SAAS,AAAwB,CAAI,CAA6B,CAAS,EAAc,AAC1F,CAAI,CAAC,EAAkB,EAAE,AAC3B,CAAI,CAAC,EAAkB,CAAC,MAAM,CAFK,AAEJ,CADP,CAG5B,KAF0B,EAAkB,CAAC,gBAoDtC,SAAS,EACT,IACHZ,EAAAA,WAF+B,GAAS,AAE1B,CAAC,EADW,EAAE,CAG1B,CAFmB,MAEZ,CAAC,IAAI,CACV,0JAA0J,CAE9J,CAAC,CAAC,CACF,GAA0B,EAE9B,EAFkC,gBAA9B,iEAnRG,SAAS,AAAmB,CAAI,EAAsB,AAC3D,GAAM,QAAE,CAAM,CAAE,EADgB,KACT,CAAE,CAAQ,CAAE,UAAA,CAAA,CAAa,EAAK,EAAD,SAAY,EAAE,CAI5D,EAAiB,EAAW,EAAS,EAAW,EAApB,AAAX,CAAqC,CAAF,CAAC,CAArD,EAA+C,SAAqB,CACpE,EAAQK,EAAAA,uBAAuB,CAAC,GAAM,CAAF,CAAC,GAAM,CAIjD,MAAO,gBACL,EACA,OAAO,CAJO,EAAW,EAGX,CAHkB,EAAF,CAAhB,kBAAuC,EAAE,CAAC,iBAAA,EAAqBN,EAAAA,cAAc,EAAC,CAAI,MAAM,KAKtG,CACJ,CAAG,AACH,MAFY,gBAOL,SAA2B,AAAlB,CAAsB,EAAgB,AACpD,GAAM,SAAE,CAAO,CADgB,OACd,CAAA,CAAO,CAAI,EAAK,EAAD,SAAY,EAAE,CACxC,EAAU,EAAc,GAC9B,AADM,CAA4B,CAAC,KAC5BO,CADsB,CACtBA,yBAAyB,CAAC,EAAS,EAAQ,EACpD,CAD0C,CAAQ,GAAS,CAAC,sBAMrD,SAAS,AAAwB,CAAI,EAAgB,AAC1D,GAAM,SAAE,CAAO,OADsB,CACpB,CAAA,CAAO,CAAI,EAAK,EAAD,SAAY,EAAE,CACxC,EAAU,EAAc,GAAxB,AACN,CADkC,CAAC,KAC5BC,CADsB,CACtBA,yBAAyB,CAAC,EAAS,EAAQ,EACpD,CAD0C,CAAQ,GAAS,CAAC,4BAnDrD,SAAuC,AAA9B,CAAkC,EAChD,AADsE,GAChE,CAAE,MAAM,CAAE,CAAO,CAAE,OAAO,CAAE,CAAA,CAAA,CAAa,EADJ,AACS,EAAD,SAAY,EAAE,CAC3D,MAAE,CAAI,IAAE,CAAE,gBAAE,CAAc,CAAE,QAAM,QAAE,CAAM,OAAE,CAAA,CAAM,CAAI,EAAW,GAEvE,CAF2E,CAAC,GAAN,CAE/D,gBACL,UACA,IADc,GACP,IACP,EACA,IAAI,EADI,IAER,EAAE,OACF,MAAM,GACN,MAAM,EACN,CACJ,CAAG,AACH,GAFS,gBA8SF,SAAS,AAAe,CAAI,CAAQ,CAAI,EAAgB,AAC7D,EAAK,EAAD,KADwB,GACb,CAAC,GAChB,CADoB,CAAC,AAChB,EAAD,WAAc,CAAC,CACjB,CAACM,EAAAA,gCAAgC,CAAA,CAAG,QAAQ,CAC5C,CAACC,EAAAA,0CAA0C,CAAA,CAAG,CAClD,CAAG,CAAC,AACJ,CAFsD,wKCzVlD,GAAqB,KAAK,UAA1B,sBAUG,SAAS,EACV,IAmBJ,EAAc,GAAA,CAAM,OAAP,CAnBS,EAAE,UADsB,GAAS,MAoBN,CAEjD,GAAqB,EACrBI,EADyB,AACzBA,WADA,yBACoC,CAAC,GACrCC,EAAAA,QADkD,CAAC,wCACF,CAAC,IAhBlD,SAAS,AAgBsD,CAAC,GAf9D,IAAM,EAAaJ,EAAAA,CADC,GAAS,EACvB,OAA0B,EAAE,CAC5B,EAAW,GAAcC,EAAAA,KAAd,MAAyB,CAAC,GAC3C,GAAI,EAAU,CACZ,CAFmD,CAAC,EAE9C,CADI,CACM,KAAV,WAA0B,CAChC7D,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,EAAQ,KAAD,oBAA0B,CAAC,CAAC,CACpF,EAAS,MAAD,GAAU,CAAC,CAAE,IAAI,CAAE4D,EAAAA,iBAAiB,SAAE,CAAA,CAAS,CAAC,AAC1D,CACF,CASF,EAXoD,mHCT7C,SACL,AADc,CACF,EAEZ,GAAkC,SAAA,AAHL,EAGzB,OAAO,kBAAA,EAAoC,CAAC,kBAAkB,CAChE,CADkE,MAC3D,EAGT,GAHc,CAGR,EAAU,GAAgBG,EAAAA,AAA1B,OAAU,EAAyB,EAAE,EAAE,UAAU,EAAE,CACzD,MACE,CAAC,CAAC,IAED,AAA4B,GAF3B,CAE2B,GAArB,AADZ,CACa,gBAAA,EAA4B,CAAC,CAAC,EAAQ,KAAD,QAAC,AAAa,CAEhE,+HC7BA,MD0BA,GC1BS,EAAe,CAAW,EAA8C,AAC/E/D,EAAAA,KAAK,CAAC,CADe,EACZ,CAAC,CAAC,cAAc,EAAE,EAAY,EAAE,CAAC,GAAG,EAAE,CAAT,CAAqB,SAAD,EAAY,CAAC,oCAAoC,CAAC,CAAC,AAC/G,sBA8CO,SAAS,AAAmB,CAAK,CAAc,CAAQ,EAC5D,AAD8E,IACxE,EAAsB,EAAS,KADL,CACI,QAAe,CAA7C,AACA,EAAgB,EAAS,MAAD,CAAQ,CAItC,CAJM,EAID,CAAD,CAIJ,IAAK,IAAM,IAAA,CAAQ,EACb,EAAK,AALa,CAIA,CACd,AALgB,AAIA,YACf,GAAmB,IAC1B,EAAK,EAAD,KADmC,EAAE,KACpC,CAAiB,CAAA,CAAmB,AAG/C,qBAxDO,SAAS,AACd,CAAI,CACJ,CAAW,EAEX,GAAI,CAAC,GAAa,IAJY,EAIZ,EAAF,AAAY,CAAC,EAAK,EAAD,SAAY,CAC3C,CAD6C,KACtC,GAGT,EAHc,EAGT,IAAM,KAAW,EAAX,AAAwB,KAkDX,EAjDtB,EAD+B,CAmDT,AADK,CAjDvB,CAiD4D,QAC3D,OAlDe,AAkDR,EAlDS,GAkDT,CAAsB,GAlDN,CAAC,CAkDK,QAAiB,MAAM,CAlD1B,CAC7B,GAAIgE,EAAAA,iBAAiB,CAAC,EAAK,EAAD,SAAY,CAAE,GAEtC,IAF6C,CAAC,EAAE,AAChDlE,EAAAA,WAAA,EAAe,EAAe,IAAI,AAC3B,CAD4B,CAGrC,EAFa,IADkB,EAIjC,CAEA,GAAI,CAAC,EAAQ,IAAA,CAAD,CAAS,CAAC,EAAQ,EAAE,CAC9B,CADgC,CAAL,OAI7B,IAAM,GAAc,EAAQ,IAAA,CAAD,CAAQkE,AAA7B,EAA6BA,iBAAiB,CAAC,EAAK,EAAD,SAAY,CAAE,EAAQ,IAAI,CAAL,AAAK,CAC7E,EADiF,CACrE,EAAQ,CADiE,CACjE,EAAK,CAAN,CAAW,EAAD,AAAC,EAAMA,EAAAA,iBAAiB,CAAC,EAAK,EAAD,AAAG,CAAE,EAAQ,EAAE,CAAA,CAM/E,CAN4E,CAAO,CAM/E,GANmF,AAMpE,EAEjB,MAFE,CAAwB,AAC1BlE,EAD4B,AAC5BA,WAAA,EAAe,EAAe,IACvB,AAD2B,CAAC,AAGvC,CAEA,EAJe,IADkB,CAK1B,CACT,IADc,mGC/CqB,+BACJ,8NCqBzB,EAAmB,YAAY,CAmB9B,CAnBD,QAmBU,EAAoC,CAAQ,CAAU,CAAM,EAAkC,AAC5G,IAAM,EAAU,EAAO,GAAjB,CAAgB,MAAW,EAAE,CAE7B,CAAE,MAHyC,GAGhC,CAAE,CAAA,CAAW,CAAI,EAAO,IAAD,EAAO,EAAC,EAAK,CAAA,CAAE,CAIjD,EAA8B,CAA3B,AACP,WAAW,CAAE,EAAQ,KAAD,MAAC,EAAemE,EAAAA,mBAAmB,CACvD,OAAO,CAAE,EAAQ,KAAD,EAAQ,YACxB,UAAU,CACV,EACA,MADQ,AACF,CAAElB,EAAAA,sBAAsB,CAAC,EACnC,CAAG,CAID,EALuC,CAAC,IAGxC,EAAO,IAAD,AAAK,CAAC,WAAW,CAAE,GAAG,AAErB,CACT,AAH+B,CAoBxB,CAlBK,QAkBI,EAAkC,CAAI,EAAmD,AACvG,IAAM,EAASgB,EAAAA,EAAT,OAAkB,EAAE,CAC1B,GAAI,CAAC,EACH,EAH6C,EAEpC,EAAE,AACJ,CAAA,CAAE,CAGX,IAAM,EAAWJ,EAAAA,IAAX,OAAsB,CAAC,GACvB,CAD2B,CAAC,AACbO,EAAAA,QAAf,EAAyB,CAAC,GAC1B,EAAqB,EAAa,CADA,CAAC,EACG,CACtC,EAAa,EAAS,CADW,IAAjC,CACqB,KAAY,EAAE,CAAC,UAAU,CAI9C,EACJ,GAAY,GAAG,CAAC,GAAN,MADN,WACgC,CAAA,EACpC,CAAkB,CAACC,EAAAA,qCAAqC,CAAA,EACxD,CAAkB,CAACC,EAAAA,oDAAoD,CAAC,CAE1E,SAAS,EAA0B,CAAG,EAAoE,AAInF,OAHa,QAAA,EAA9B,GAD4B,IACrB,GAAiE,UAA9B,KAAnC,EAA0C,CAAuB,CAAQ,EAAE,CACpF,EAAI,CAAD,UAAC,AAD+C,CACjC,CAAC,EAAA,GAAA,EAEA,CACA,CAGA,CAJA,GAIA,EAAA,CAAA,CAAA,EAAA,CANA,AAOA,EADA,CACA,EACA,OADA,AACA,CAFA,CACA,AACA,GAIA,IAAA,EAJA,AAIA,CAJA,EAIA,GAAA,CAAA,GAAA,CAAA,GAJA,KAIA,CAAA,CAGA,EAAA,GAAAvB,EAAAA,QAAA,6BAAA,CAAA,GAEA,GAAA,EACA,KAHA,CAAA,CAGA,EAAA,GAIA,CALA,EAAA,CAKA,EAAA,CAAA,CAAA,EAAA,EAJA,AAIA,CAJA,OAAA,CAIA,EAAA,CAAA,OAAA,CAAA,GAGA,EAAA,CAAA,AAHA,CAGAW,AAHA,EAGA,AAHA,AAGAA,gCAAA,CAAA,CAGA,EAAA,EAAA,UAAA,CAAA,CAsBA,MArBA,KAAA,GAAA,GAAA,GAAA,CAAA,AACA,EADA,AACA,CAAA,UAAA,CAAA,CAAA,CAAA,CAMAa,EAAAA,eAAA,EAAA,EAAA,CACA,EAAA,CAAA,MAAA,CAAA,MAAA,CAAAC,EAAAA,aAAA,CAAA,IACA,EAAA,CAAA,CADA,CAAA,CAAA,OACA,CAGA,EAFA,CAEA,GAAA,CAAA,GAAA,iBAAA,CAAA,EAEAtB,EADA,AACAA,uBAAA,CAAA,GAAA,KAAA,CAAA,CAAA,qBAAA,EAAA,CAAA,UAAA,CAAA,QAAA,CAJA,CAIA,EAGA,EAAA,GAAA,AAEA,CAFA,CAEA,IAAA,CAAA,QANA,GAMA,CAAA,CAFA,CAEA,CAAA,EAEA,CACA,EADA,EAFA,CAAA,cAjHlB,SAAyB,AAAhB,CAAoB,CAAQ,CAAG,EAAyC,AAEtF9B,EAAAA,QAF6B,gBAEL,CADC,AACA,EAAkB,EAAkB,AADpC,EAE3B,CADkE,CAAC,QAAxB,EAAkB,mEA+BtD,SAAS,AAAmC,CAAM,CAAU,CAAK,EAA0C,AAChH,IAAM,EAAqB,EAAM,GAAD,WAA1B,OAD0C,AACM,EAAE,CACxD,OAAO,EAAmB,GAAA,EAAO,EAAoC,EAAmB,OAAO,AAAtE,CAAwE,EACnG,IADyG,CAAC,CAAjB,eAAnB,yCAsF7C,SAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAAA,GACA,CADA,CAAA,GADA,EAEAqD,EAAAA,mBADA,wBACA,CAAA,EACA,CADA,CAAA,wIC3IlB,MAAM,AAIJ,WAAW,CAAC,EAAmC,CAAA,CAAE,CAAE,CACxD,IAAI,CAAC,AADuB,CAJoB,OAK3C,CAAW,EAAY,OAAA,EAAD,AAAYjD,EAAAA,eAAe,EAAE,CACxD,IAAI,CAAC,OAAA,CAAU,EAAY,MAAA,EAAUoB,CAAX,CAAWA,cAAc,EAAE,AACvD,CAGO,WAAW,EAAoB,CACpC,MAAO,CACL,MAAM,CAAE,IAAI,CAAC,OAAO,CACpB,OAAO,CAAE,IAAI,CAAC,QAAQ,CACtB,UAAU,CAAE8B,EAAAA,eAAe,AACjC,CAAK,AACH,CAGO,GAAG,CAAC,CAAU,CAAwB,CAAC,CAGvC,YAAY,CAAC,CAAI,CAAU,CAAM,CAAwC,CAC9E,OAAO,IAAI,AACb,CAGO,aAAa,CAAC,CAAO,CAAwB,CAClD,OAAO,IAAI,AACb,CAGO,SAAS,CAAC,CAAO,CAAoB,CAC1C,OAAO,IAAI,AACb,CAGO,UAAU,CAAC,CAAK,CAAgB,CACrC,OAAO,IAAI,AACb,CAGO,WAAW,EAAY,CAC5B,MAAO,EACT,CAGO,EAJO,MAIC,CACb,CAAK,CACL,CAAsB,CACtB,CAAU,CACJ,CACN,OAAO,IAAI,AACb,CAGO,OAAO,CAAC,CAAK,CAAiB,CACnC,OAAO,IAAI,AACb,CAGO,QAAQ,CAAC,CAAM,CAAmB,CACvC,OAAO,IAAI,AACb,CASO,eAAe,CAAC,CAAU,CAAW,CAAK,CAA6B,CAE9E,CACF,6HCnDO,SAAS,EAAU,CAAK,CAAW,EAAgB,GAAjC,AAAsB,AAAc,CAAE,EAAwB,CAAC,OAAQ,EAAO,AACrG,CAD0E,EACtE,CAEF,OAAO,AAiCX,KAjCgB,IAiCP,EACP,CAAG,CACH,CAFY,AAEP,CACL,EAAgB,CAAC,EAAZ,KAAoB,CACzB,EAAwB,CAAC,OAAQ,CACjC,EAAO,AAyOT,AA1Oe,EACb,OAyOO,EAzOW,AA0OlB,IAAM,EAAQ,GADI,AACZ,CAAY,EADa,KACN,CAYzB,CAZmC,KAY5B,CAXP,SAAS,AAAQ,CAAG,EAAmB,IAAvB,EACd,EAAI,EAAM,GAAD,AAAI,CAAC,GAAG,CAAC,CAGlB,CAHoB,CAGd,GAAD,AAAI,CAAC,GAAG,CAAC,AACP,EACT,EAEA,CAHc,QAGL,AAAU,CAAG,EAAgB,AACpC,EAAM,GAAD,CADW,EACJ,CAAC,EACf,CADkB,CAGpB,AAHqB,AAEQ,GAtPP,EAEpB,GAAM,CAAC,EAAS,EAAS,CAAI,EAG7B,AAHc,EAAmB,CAItB,CAJc,GAId,EAAT,EAAS,CACT,CAAC,CADD,QACU,CAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,IACrC,AAAiB,CADyB,CAAA,MACzB,GAFT,MAED,GAAsB,EAAtB,IAA4B,CAAC,QAAQ,CAAC,GAE9C,EAFmD,CAAC,EACpD,EACO,EAGT,GAHS,CAGH,EA6FR,AA7FsB,SA6Fb,AACP,CAAG,CAGH,CAFF,AAEO,EAEL,AAnGkC,GAmG9B,KAsEsB,CA5EL,IA4EU,CACzB,CAD4C,CArEhD,GAAY,IAsEC,IAtED,GAAR,GAAA,AAAoB,GAA0B,UAAjB,OAAO,GAAuB,EAAvB,AAAsD,OAAO,CACnG,CADqG,KAC9F,UAAU,CAGnB,GAAI,AAAQ,GAAR,YAAuB,EAAE,GAC3B,MAAO,CAVb,gBAU8B,CAM1B,GAAqC,CAAjC,GAAiD,CAAhB,CAAgB,CAAA,CAA1C,AACT,CADqD,CAAR,IAApC,AACF,EAD4C,QAClC,CASnB,GAAwB,IAApB,OAAO,QAAA,CAVW,CAUiB,IAAU,CAAV,OAAkB,CACvD,CADyD,KAClD,YAAY,CAGrB,GAAI5D,EAAAA,cAAc,CAAC,GACjB,EADsB,CAAC,EAAE,EAClBC,EAAAA,kBAAkB,CAAC,GAI5B,EAJiC,CAAC,AAI9B6D,EAAAA,gBAAgB,CAAC,GACnB,EADwB,CAAC,EAAE,CACpB,kBAAkB,CAG3B,GAAqB,QAAA,EAAjB,OAAO,GAAsB,CAAC,CAAvB,KAA6B,CAAC,QAAQ,CAAC,GAChD,EADqD,CAAC,EAAE,CACjD,CAAC,CAAC,EAAE,EAAM,CAAC,CAAC,CAGrB,AAHkB,GAGG,UAAU,EAA3B,AAA6B,OAAtB,EACT,GADS,GACF,CAAC,WAAW,EAAEzE,EAAAA,eAAe,CAAC,GAAO,CAAC,CAAC,AAAJ,CAAC,AAG7C,GAAqB,QAAQ,EAAzB,AAA2B,OAApB,EACT,GADS,GACF,CAAC,CAAC,EAAE,MAAM,CAAC,GAAO,CAAC,CAAH,AAAI,CAAH,AAI1B,GAAqB,QAAQ,EAAzB,AAA2B,OAApB,EACT,GADS,GACF,CAAC,SAAS,EAAE,MAAM,CAAC,GAAO,CAAC,CAAH,AAAI,CAAH,AAOlC,IAAM,KAA6B,EAA7B,EAe4B,CAflB,AAAwB,CAAC,IAeD,CAAC,YAfP,EAeqB,CAAC,GAEnD,EAFwD,CAAC,AAE9C,MAAF,KAAE,CAAc,EAAU,OAAD,IAAY,CAAC,IAAA,CAAO,gBAAgB,EAd3E,GAAI,oBAAoB,CAAC,IAAI,CAAC,GAC5B,IADmC,CAAC,CAC7B,CAD+B,AAC9B,cAAc,EAAE,EAAQ,CAAC,CAAC,CAGpC,EAHiC,IAG1B,CAAC,QAAQ,EAAE,EAAQ,CAAC,CAAC,AAC9B,CAAA,AAAE,EADyB,IAClB,EAAK,CAAF,AACV,MAAO,CAAC,sBAAsB,EAAE,EAAI,CAAD,AAAE,CAAC,AACxC,CACF,EAtKqC,EAAK,CAAF,EAItC,EAJ6C,CAIzC,AAJ0C,CAIzC,EAAY,SAAD,CAAW,CAAC,UAAU,CAAC,CACrC,CADuC,MAChC,EAQT,GAAK,EAA8B,GAA9B,CARe,yBAQ+C,CACjE,CADgE,AAAG,MAC5D,EAMT,GANS,CAMH,EACiF,UAArF,EADI,KACI,EAA8B,GAA9B,oCAAuE,CACzE,CADyE,CAC3C,GAA9B,oCAAuE,CACzE,CADyE,CAI/E,GAHW,AAGY,CAAC,EAAE,CAAtB,EAEF,OAAO,EAAY,GAFjB,IAEwB,CAAC,CAAT,QAAkB,CAAE,EAAE,CAAC,CAI3C,GAAI,EAAQ,GACV,EADe,AAAN,CAAO,EAAE,CACX,cAAc,CAKvB,GAAI,GAAqD,UAAU,EAA/D,AAAmB,AAA8C,OAAvC,EAAgB,MAAA,CAC5C,GAAI,CACF,EAFyC,EAEnC,EAHc,AAGF,EAAgB,GAHd,EAGd,CAAkC,EAAE,CAE1C,IAFiC,GAE1B,EAAM,EAAE,CAAH,AAAK,EAAW,EAAiB,CAAC,CAAE,EAAe,CAArC,CAC5B,CAAE,CADmE,CAAC,GAC9D,AADsB,CAG9B,CAMF,CATiE,GAS3D,EAAc,KAAK,CAAC,EAApB,KAA2B,CAAC,GAAS,EAAJ,AAAK,CAAL,AAAS,CAAA,CAAE,CAC9C,AAD8C,EACnC,CAAC,CAIV,EAAYwE,EAJd,AAIcA,KAAZ,eAAgC,CAAC,GAEvC,IAFoE,AAE/D,IAAM,KAAY,EAAW,CAAvB,AAET,GAAI,CAAC,EAFyB,IAEnB,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAW,GACnD,IADiD,CAAU,CAAC,EAAE,CAIhE,GAAI,GAAY,EAAe,CAC7B,CAAU,CADR,AACS,EAAQ,CAAI,KAAJ,AADQ,cACe,CAC1C,KACF,CAGA,IAAM,EAAa,CAAS,CAAC,EAAS,CACtC,CAAU,CAAC,CADL,CACa,CADkB,AACd,EAAM,EAAU,CAApB,AAAS,CAAuB,EAAiB,CAAC,CAAhC,AAAkC,EAAe,EAArC,CAEjD,CAF0F,CAAC,CAG7F,CAMA,IATsF,AAE5E,EAAE,CAIZ,EAAU,GAGH,CACT,CAJiB,CAAC,AAhID,CAgIN,CAhIQ,CAAE,EAAO,EAmIT,AAnIgB,CAAT,CACxB,CAD+B,AAC/B,AAAE,MAAO,EAAK,CAAF,AACV,CAF4C,CAAC,IAEtC,CAAE,KAAK,CAAE,CAAC,sBAAsB,EAAE,EAAI,CAAD,AAAE,CAAA,CAAG,AACnD,CACF,iCAGO,SAAS,EAEd,CAAM,CAEN,CADF,CACkB,CAAC,CAEjB,CADF,AADO,CAEa,GAAA,EAAX,AANsB,CAML,AAAI,AAL9B,EAOE,IAAM,EAAa,EAAU,EAAQ,IAAF,CAAP,AAAc,CAAC,AAL7C,GAOE,AAAI,AAoNG,CAAC,CAAC,MApNG,GAoNM,CAAC,AAMD,IAAI,CAAC,AANC,CAAC,QAMO,CA1NnB,AA0NoB,IANP,CAMY,CAAC,CAAC,EANT,CApNR,AALzB,AAyNkC,CApNT,GATzB,GA6NyC,CAAC,CAAC,MAAM,CApNpB,EAClB,EAAgB,EAAQ,CADC,CACO,CAAC,AADN,CACL,AAAa,GAGrC,CACT,GAJ0B,AAA2B,CAAC,KAG7C,cAiOF,SAAS,AAAmB,CAAG,CAAU,CAAQ,EACtD,AADwE,IAClE,EAAc,EAEjB,KAH6B,CAElC,CACY,CAAC,KAAK,CAAE,GAAG,CACvB,CACK,OAAO,CAAC,EAHb,mBAGkC,CAAE,IADpC,EAC0C,CAAC,CAErC,EAAS,EACb,CADgB,CAAZ,CACA,CACF,EAAS,IAAT,KAAkB,CAAC,EACrB,CADwB,AACtB,CADuB,IACjB,CAER,CACA,OACE,EACG,OAAO,CAAC,KAAK,CAAE,GAAG,EAClB,OAAO,CAAC,cAAc,CAAE,EAAE,CAAA,CAAA,AAE1B,OAAO,CAAC,AAAI,MAAM,CAAC,CAAC,YAAY,EAAE,EAAY,AAFpB,EAEsB,CAAC,CAAE,IAAI,CAAC,AAAX,CAAa,SAAS,CAE1E,0ICtQO,SAAS,EACd,CAAQ,CACR,CAAQ,EAIR,IAAK,IAAM,IANsB,CAIX,CAAQ,CAAC,CAAC,CAAC,CAES,CACxC,CADS,GACH,CADmB,CACA,CAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAG7C,EAJsC,CAEvB,CAEX,CAFoB,EAAc,GAE5B,AACR,CAHqB,CAEX,KACH,AAH2B,CAKtC,CAEA,EAJe,EAHyC,CAAC,EAOlD,CACT,CAYA,GAbc,MAaL,EAAW,CAAK,EAAsB,AAC7C,IAAMnC,CADW,CACDH,EAAAA,KAAV,WAA0B,CAACvC,EAAAA,UAAU,CAAC,CAC5C,OAAO0C,EAAQ,OAAD,OAAC,CAAiBA,EAAQ,OAAD,OAAe,CAAC,GAAS,EAAJ,EAAQ,WAAW,EAAE,CAAC,MAAM,CAAC,EAC3F,CAqIA,EAtIgG,CAAC,CAsI3F,EAAoE,CACxE,QAAQ,CAAE,SAAS,CACnB,CAF2B,IAEtB,CAAE,OAAO,CACd,aAAa,CAAE,UAAU,CACzB,WAAW,CAAE,SAAS,CACtB,aAAa,CAAE,SAAS,CACxB,YAAY,CAAE,QAAQ,CACtB,gBAAgB,CAAE,QAAQ,CAC1B,QAAQ,CAAE,SAAS,CACnB,YAAY,CAAE,UAAU,CACxB,GAAG,CAAE,UAAU,CACf,YAAY,CAAE,QAChB,AADwB,CACvB,qBA3LM,SAAS,AAAsC,CAAQ,CAAK,CAAO,EACxE,AAD2F,GACrF,CAAC,EAAS,EAAK,CAAI,EACzB,AADc,AAAO,CADU,KACE,AAC1B,CAAC,EAAS,CAAC,GAAG,CAAN,CAAa,EAAQ,CAAV,AAAU,AACtC,IADqC,6BA0J9B,SAAS,AAA6B,CAAU,EAA8B,AACnF,IAAM,EAAoC,IAApC,IAAoC,EAA3B,OAAO,EADoB,AACT,IAAA,CAAoB,EAAW,CAAhC,CAA2C,IAAI,EAAhB,AAAoB,EAAT,AAAoB,IAAI,CAElG,GAF6F,GAEtF,CACL,CACE,IAAI,CAAE,YAAY,CAClB,MAAM,CAAE,EAAO,IAAD,EAAO,CACrB,QAAQ,CAAE,EAAW,QAAQ,AAAT,CACpB,YAAY,CAAE,EAAW,QAAD,GAAY,CACpC,eAAe,CAAE,EAAW,QAAD,MACjC,AADgD,CAC3C,CACD,EACD,AACH,IAFU,eAhLH,SAAS,AAAmC,CAAO,CAAQ,EAAc,EAAE,CAAX,CAAgB,AACrF,MAAO,AADqB,CACpB,EAAS,EAAK,AACxB,GADiB,AAAO,4BA6NjB,SAAS,AACd,CAAK,CACL,CAAO,CACP,CAAM,CACNsC,CAAG,EAEH,IAAM,EAAyB,EAAM,GAAD,MANI,SAMlC,GAAoD,EAAE,sBAAsB,CAClF,MAAO,CACL,QAAQ,CAAE,EAAM,GAAD,KAAC,CAChB,OAAO,CAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACjC,GAAI,GAAW,CAAE,GAAb,AAAgB,CAAE,CAAA,CAAS,CAAC,AAChC,GAAI,CADkB,AACjB,CAAC,GAAUA,GAAV,AAAiB,CAAE,CAAT,EAAY,CAAEC,EAAAA,WAAW,CAACD,EAAG,CAAG,CAAC,AACjD,CAD6C,CAAA,CACzC,GAA0B,CAC5B,KAAK,CAAE,CACb,CAAK,AACL,CACA,AAFM,AACH,SAHK,UAC2B,QAjF5B,SAAS,AAAuB,CAAQ,EAA+B,AAK5E,MAAO,CAJ0B,CAC/B,IAAI,CAAE,MAAM,AAChB,AAHsC,CAGnC,CAEoB,EAAS,AAChC,MAD+B,uBAtHxB,SAAS,AAAyB,CAAQ,CAAY,CAAK,EAChE,AAD+F,OACxF,EAAoB,EAAU,CAAC,CAAC,CAAE,GAAN,CAAe,AAAL,CADP,CACkB,GAAD,GAA7B,EAAsC,CAAC,GACnE,CADuE,CAAC,CAAC,gCAmKlE,SAAS,AAA+B,CAAI,EAAkC,AACnF,OAPO,AAOA,AAAkB,IAPlB,AAOsB,CAPd,AAOc,EAAI,CAAuB,CAAC,EAAI,CAAI,CAAJ,AAC/D,GADuE,CAA7C,GADoB,QANN,6CAWjC,SAAS,AAAgC,CAAe,EAA6C,AAC1G,GAAI,CAAC,GAAiB,GAAG,CACvB,CADyB,MAG3B,CAHoB,EAGd,MAAE,CAJqC,AAIjC,SAAE,CAAA,CAAQ,CAAI,EAAgB,GAAG,CAC7C,MAAO,GADkC,GAChC,IAAI,MAAE,CAAA,CAAS,AAC1B,kBAnGO,SAAS,AAAc,CAAG,EAAiC,AAChE,IAAI,EAAwB,IADD,AACvB,IAAwB,EAAf,OAAO,EAAmB,CAAnB,CAA8B,GAAO,AAAJ,CAAA,CAErD,CAF4D,EAAX,MAExC,EAAW,CAAM,EAAsB,AAC9C,IAAM,CADW,CACL,CAAN,CAAa,IAAD,IAAS,CAAC,CAAC,CAAE,GAG/B,GAHqC,CAAC,GAEtC,EAAS,EAAO,EAAhB,EAAe,IAAS,CAAC,EAAS,CAAC,CAAC,CAC7B,CADkB,AAE3B,CAEA,CAHY,QAGH,QAAQ,EACf,CADwB,GAtEpBtC,EAuEA,EAAI,EAAO,GAvEX,CAuEU,GAAQ,CAAC,GAAG,CAAC,AAM3B,OAJI,CAAA,CAAI,CAAC,EAAE,CACT,CAAA,CAAI,EAAO,IAAD,EAAO,AAAN,EAGN,IAAI,CAAC,KAAK,CAAC,CA9EF,EA8Ea,EAAW,CA9EnB,AA8EoB,CAAC,CA9EC,AAEtCA,AA4EsC,CAAA,CAAf,CA7EdH,EA6EyB,AA7EzBA,IACF,YADkB,CAACvC,EAAAA,UAAU,CAAC,EAC7B,cAAA,CAAiB0C,EAAQ,OAAD,OAAe,CAAC,GAAS,EAAJ,EAAQ,WAAW,EAAE,CAAC,MAAM,CAAC,IA6EzF,CA7E8F,AA+E9F,CA/E+F,GA+EzF,EAAiB,IAEjB,EAAsB,EAAE,AAFC,CAI/B,AAFW,CAF2C,EAAhD,EAIC,EAAO,IAAD,EAAO,EAAE,CACpB,IAAM,EAAa,IACb,EAA4C,EADvB,AAArB,EAAgD,IACJ,EAA5C,AAAe,OAAO,EAAW,MAAA,CAAsB,CAAvB,CAAkC,MAAA,EAAD,IAAU,EAEjF,EAAM,GAAD,CAAK,CAAC,AAF+E,CAE9E,EAAY,EAAe,EAAW,GAAgB,CAA5C,GAAuD,CAAC,AAChF,AAD0B,AAAyB,CAGnD,EAH4E,CAAZ,CAAA,AAAc,EAGvE,CAAC,EAAgB,EAAM,AAChC,GAD+B,OAAP,YApFjB,SAAS,AAAkB,CAAQ,EAAiC,AACzE,GAAM,CAAC,EAAY,EAAK,CAAI,EAExB,AAFoB,EAEW,CAHJ,AACd,EAER,CAF2B,AAEG,CAAC,SAAS,CAAC,GAElD,OAF4D,CAAC,CAEpD,EAAO,CAAI,EAA6B,AAC1B,CADR,OACgB,EAAzB,AAA2B,OAApB,EACT,EAAwB,CADf,OACe,EAAhB,OAAO,EAAoB,EAAQ,EAAO,CAAf,AAAgB,CAAR,CAAmB,GAAQ,EAAH,AAAQ,CAAP,AAEpE,CAF0E,CAAb,AAEvD,GAAD,CAAK,CAAiB,QAAA,EAAhB,OAAO,EAAoB,EAApB,AAA+B,GAAQ,CAAJ,CAEzD,AAFyD,CAIzD,CAJiE,CAAC,AAAd,EAI/C,IAAM,IAAA,CAAQ,EAAO,CACxB,EADsB,CAChB,CAAC,EAAa,EAAO,CAAI,EAI/B,EAJ2B,AAAQ,CAEnC,CAFkB,CAEX,CAAC,GAAF;AAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAAE,CAAC,CAAC,CAErB,UAAnB,OAAO,GAAwB,IAAxB,GAAwB,MAAmB,UAAU,CAC9D,CADgE,CACzD,IAAD,GACD,AADS,CAAC,AAEf,IAAI,EACJ,GAAI,CACF,EAAqB,IAAI,CAAC,KAFN,IAEe,CAAC,EACtC,CAAE,IAD2C,CAAC,AACtC,CAIN,EAAqB,IAAI,CAAC,SAAS,CAACqC,CAApC,CAAoCA,SAAS,CAAC,GAChD,CACA,EAAO,CAFgD,CAAC,AAG1D,CAH2D,AAI7D,CAFU,AAIV,MAAO,AAAiB,QAJK,AAIL,CAJM,QAIhB,EAAqB,EAAQ,AAG7C,CAHgB,EAAqB,MAGd,AAAd,CAAqB,EAG5B,AAHwD,CAHA,GAMlD,EAAS,IAAT,AAAa,AAHC,UAGS,CAAC,AAFV,EAAQ,KAAD,CAAO,CAAC,CAAC,CAEK,CAAC,AAFD,CAAF,EAAK,CAAK,EAAM,EAAI,CAAD,KAAO,CAAE,CAAC,CAAC,EAGjE,EAAS,CAAC,CACd,EADI,EACC,IAAM,KAAU,CAAV,CACT,EAAO,GADmB,AAChB,CADkB,AACtB,AAAK,EAAQ,GACnB,CADiB,EAAQ,AACf,CADgB,CACT,CAAjB,GAAgB,EAAO,CAGzB,OAAO,CACT,EAd2D,EAC3D,CAYe,EAbiD,CAAC,qJCvF1D,SAAS,EAAyB,CAAK,CAAS,CAAU,EAAmB,AAClF,GAAI,CAAC,EACH,OAAO,CADM,CAIf,CAJiB,CADqB,CAExB,CAGR,EAAe,EAAM,GAAD,AAAC,EAAO,CAAA,CAAE,CAiBpC,OAfA,EAAM,GAAD,AAAC,CAAM,CACV,GAAG,CAAY,CACf,IAAI,CAAE,EAAa,IAAA,EAAQ,EAAW,EAApB,EAAwB,CAC1C,GADqC,IAC9B,CAAE,EAAa,OAAA,EAAW,CAAZ,CAAuB,OAAO,CAAR,AAC3C,YAAY,CAAE,CAAC,GAAI,EAAM,GAAD,AAAI,EAAE,YAAA,EAAgB,EAAE,CAAC,EAAE,CAAI,EAAW,QAAD,IAAC,EAAgB,EAAE,CAAC,AAAC,CACtF,QAAQ,CAAE,CAAC,GAAI,EAAM,GAAD,AAAI,EAAE,QAAA,EAAY,EAAE,CAAC,EAAE,CAAI,EAAW,QAAD,AAAC,EAAY,EAAE,CAAC,AAAC,CAC1E,QAAQ,CACN,EAAM,GAAD,AAAI,EAAE,QAAA,EAAY,EAAW,QAAD,AAAC,CAC9B,CACE,GAAG,EAAM,GAAG,AAAJ,EAAM,QAAQ,CACtB,GAAG,EAAW,QAAD,AAAS,AAClC,OACU,CACV,CAAG,CAEM,CACT,IADc,CAHK,+CA6BZ,SAAS,AACd,CAAK,CACL,CAAG,CACH,CAAQ,CACR,CAAM,EAEN,IAAM,EAAUG,EAAAA,EANiB,CAM3B,4BAAyC,CAAC,GAS1C,EAAY,EAAM,CATgC,CAAC,CASlC,CAAC,CAAlB,CAAyC,cAAA,GAAf,EAAM,GAAD,CAAC,CAA0B,EAAM,GAAD,CAAC,CAAO,OAAO,CAEpF,EAAyB,EAAO,GAAF,AAAY,GAAG,CAAC,CAE9C,AAFwC,IAElC,EAAkBE,EAAAA,IAFA,OAElB,eAA4C,CAAC,EAAO,EAAS,CAAX,CAAmB,EAM3E,CANiE,AAAa,CAAL,AAAM,MAMxE,EAAM,GAAD,kBAAsB,CAElC,IAAM,EAAuB,CAAC,CAAE,IAAI,CAArB,AAAuB,CAAA,CAAW,CAAE,EAAM,CACzD,EADwD,CAAlB,IAC/BD,EAAAA,cAAc,CAAgB,EAAiB,CAAC,EAAU,CAAC,AACpE,MADkE,GAAZ,iBAlD/C,SACL,AADc,CACP,CACPH,CAAG,CACH,CAAQ,CACR,CAAM,EAEN,IAAM,EAAUE,EAAAA,GAAV,CAN6B,2BAMY,CAAC,GAC1C,EAAkB,CACtB,EAFsD,CAAC,IAEhD,CAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACjC,GAAI,GAAW,CAAE,GAAb,AAAgB,CAAE,CAAA,CAAS,CAAC,AAChC,GAAI,CADkB,AACjB,CAAC,GAAUF,GAAV,AAAiB,CAAE,CAAT,EAAY,CAAEC,EAAAA,WAAW,CAACD,EAAG,CAAG,AACpD,CADqD,AAClD,CAD8C,AAGzC,CAHyC,CAI7C,UADgB,EAChB,GAAgB,EAAU,CAAC,CAAE,GAAb,CAAiB,CAAE,UAAA,CAAY,CAAE,EAAO,CAAI,CAAC,CAAE,EAAP,EAAW,CAAE,SAAA,CAAW,CAAE,EAAQ,KAAD,CAAO,EAAE,CAAC,CAErG,OAAOG,EAAAA,cAAc,CAAkB,EAAiB,CAAC,EAAa,CAAC,AACzE,SADuE,AAAf,cA0CjD,SAAS,AAAmB,CAAK,CAAiC,CAAM,EAAyB,AAQtG,IAAM,EAAME,EAAAA,KARoB,4BAQa,CAAC,CAAK,CAAC,CAAC,CAAC,CAAC,CAEjDL,EAAM,GAAN,AAAc,GAAF,GAAQ,EAAE,CACtB,EAAS,GAAQ,GAAF,OAAY,EAAE,CAAC,MAAM,CAEpC,EAA2B,CAC/B,IADW,GACJ,CAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACjC,GAbO,AAaH,CAbI,CAAC,EAAI,CAAD,OAAC,EAAY,CAAC,CAaF,AAbG,EAAI,CAaR,AAbO,AAaH,CAAA,QAbc,EAaT,CAAE,KAAK,CAAE,CAAA,CAAK,CAAL,AAAM,AAC/C,GAAI,CAAC,CAAC,GAAUA,GAAV,AAAiB,CAAE,CAAT,EAAY,CAAEC,EAAAA,WAAW,CAACD,EAAG,CAAG,AACpD,CADqD,AAClD,CAEK,AAHyC,CAGvC,AAHuC,gBAGzB,aAAE,CAAA,CAAY,CAAI,GAAQ,GAAF,OAAY,EAAC,EAAK,CAAA,CAAE,CAE5D,EAAgB,GAAa,OAC/B,CADE,AAA2B,CACvB,GAAD,GAAO,CAAA,AAAC,GAAQ,CAACM,EAAAA,gBAAgB,CAAChB,EAAAA,UAAU,CAAC,GAAO,CAAH,CAAC,EACvD,EACE,EAAe,CADZ,CACkB,CAF6C,CAAC,CAE/C,GAAC,CAAS,EAAc,MAAM,CAEpD,GACF,CAH+C,EAGvC,GAAF,GADQ,EAAE,UACU,CAAC,aAAa,CAAE,MAAM,CAAE,GAGpD,IAAM,EAAoB,EACtB,AAAC,CAJ2D,CAAC,EAIxD,AACH,IAAM,CADc,CACHA,EAAAA,IAAX,MAAqB,CAAC,GACtB,CAD0B,CAAC,AACX,EAAe,QAAQ,CAAvC,AAAwC,CAE9C,AAAK,EAF+B,EAEhC,AACFiB,EAAAA,OADgB,EAAE,UACC,EAAE,CACd,EAIX,EACAjB,EAAAA,EALmB,QAKT,CAER,EAAoB,EAAE,CAAjB,AACX,IAAK,IAAM,IAAA,CAAQ,EAAe,CAChC,IAAM,EAAW,EAAkB,EADL,CAE1B,CADE,AAAiC,CAAC,CAEtC,EAAM,GADI,AACL,CAAK,CADE,AACDkB,EAFqB,AAErBA,sBAAsB,CAAC,GAEtC,CAEA,IAJ8C,CAAC,CAAC,CAIzCL,EAAAA,cAAc,CAAe,EAAS,EAC/C,GADoD,AAAP,CAAQ,wICjIZ,SAAA,CAAA,EAAA,AACA,GAAA,CAAAjF,EAAAA,CADA,UACA,CAAA,OAEA,GAAA,aAAA,EAAA,SAAA,SAAA,IAAA,EAAA,gBAAA,CAAA,CAAAoE,EAAAA,UAAA,CAAA,GACA,CADA,CAAA,MACA,CAAA,CAAA,CAAA,EAAA,EAAA,SAAA,EAAA,CAEA,EADAP,AACA,EADAA,MACA,KADA,CAAA,IAAA,CAAA,AACA,EAEA,EAAA,AAFA,CAEA,qBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,EAAA,SAAA,CAAA,EAAA,EAAA,CAAA,CACA3D,EAAAA,AADA,KACA,CAAA,GAAA,CAAA,EACA,CADA,CAAA,eA7ClC,SAAS,AAAa,CAAI,EAAc,AAC7C,GAAI,CAACF,EAAAA,GADqB,QACV,CAAE,OAElB,GAAM,aAAE,EAAc,SAAd,SAAgC,IAAE,EAAK,gBAAgB,CAAE,cAAc,CAAE,CAAA,CAAa,CAAIoE,EAAAA,UAAU,CAAC,GACvG,CAD2G,CAAC,MAC1G,CAAA,CAAO,CAAI,EAAK,EAAD,SAAY,EAAE,CAE/B,EAAUI,EAAAA,GAAV,UAAuB,CAAC,GACxB,CAD4B,CAAC,AAClBX,EAAAA,IAAX,OAAsB,CAAC,GACvB,CAD2B,CACd,AADe,IACF,EAE1B,EAFA,AAAa,AAAiB,AAErB,CAAC,mBAAmB,EAAE,EAAU,KAAV,IAAU,CAAY,WAAW,CAAC,CAAC,EAAE,EAAa,QAAb,AAAuB,EAAE,CAAC,IAAI,CAAC,CAEnG,EAAsB,CAAC,CAAC,IAAI,CAAnB,CAAqB,EAAE,AAAC,CAAA,CAAA,CAAA,MAAA,EAAA,EAAA,CAAA,CAAA,CAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CAMA,CANA,EAEA,GACA,EAAA,IAAA,CAAA,CAAA,CADA,AACA,EADA,QACA,EAAA,EAAA,CAAA,CAAA,CAGA,CAAA,EAAA,CACA,GAJA,AAIA,IADA,AACA,CAAA,aAAA,CAAA,CAAA,CAAAO,EAAAA,UAAA,CAAA,GACA,EAAA,GADA,CAAA,AACA,CAAA,CAAA,CAAA,QAAA,EAAA,EAAA,MAAA,KAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CACA,EAAA,CACA,CADA,CACA,IAAA,CAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,CAEA,GACA,EAAA,IAAA,CAAA,CADA,AACA,CAAA,CADA,gBACA,EAAA,EAAA,CAAA,CAAA,AAEA,CAEAlE,EAAAA,IAJA,CAIA,CAAA,GAAA,CAAA,CAAA,EAAA,MAAA,CAAA;EACA,EAAA,EAAA,IAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,AACA,8JCzBlC,SAAS,AAAe,CAAI,CAAU,CAAK,CAAU,CAAI,CAAmB,EAAa0D,EAAAA,IAAlE,SAA+E,EAAE,EAAQ,AACrH,IAAM,EAAW,GAAcC,EAAAA,KAAd,MAAyB,CAAC,GAEvC,IACF7D,EAAAA,CAHmD,CAAC,AAE1C,EAAE,OACZA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,gDAAgD,EAAE,EAAK,EAAD,CAAI,EAAE,EAAM,CAAC,EAAF,AAAI,EAAK,CAAA,CAAA,AAAD,CACC,EAAA,MAAA,EAAA,CAAA,EAAA,CACA,CAAAqF,AADA,EACAA,2CAAA,CAAA,CAAA,EACA,CAAAC,EADA,AACAA,0CAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAEA,AAHA,8BAQA,SAAA,CAAA,EAAA,AACA,GAAA,CAAA,GAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CACA,EAFA,KAEA,AAGA,IAAA,EAAA,CAAA,CAAA,CAWA,AAdA,OAIA,AADA,EACA,IAAA,GAAA,CAAA,IACA,CADA,GACA,CADA,CACA,EAAA,GAAA,GAAA,IAAA,EAAA,CAAA,CAAA,CACA,EAAA,CAAA,CAAA,AAAAA,EAAAA,0CAAA,CAAA,CACA,EAAA,CAAA,CAAAD,CAAA,CAAAA,2CAAA,CAAA,AAEA,QAAA,GAAA,OAAA,GAAA,CAAA,OAAA,EAAA,OAAA,IACA,CADA,AACA,CAAA,EAAA,GAAA,CAAA,CAAA,CAAA,OAAA,KAAA,EAAA,EAAA,CAAA,AAEA,CAFA,AAEA,CAAA,CAEA,CACA,WADA,iPCKjG,OAAM,EA2BJ,UA3B+B,CA2BpB,CAAC,EAAmC,CAAA,CAAE,CAAE,CACxD,IAAI,CADwB,AACvB,QAAA,CAAW,EAAY,OAAA,EAAD,AAAY/D,EAAAA,eAAe,EAAE,CACxD,IAAI,CAAC,OAAA,CAAU,EAAY,MAAA,EAAUoB,CAAX,CAAWA,cAAc,EAAE,CACrD,IAAI,CAAC,UAAA,CAAa,EAAY,SAAD,KAAC,EAAkBtB,EAAAA,kBAAkB,EAAE,CACpE,IAAI,CAAC,MAAA,CAAS,EAAY,KAAK,CAE/B,GAFyB,CAErB,CAAC,WAAA,CAAc,CAAA,CAAE,CACrB,IAAI,CAAC,aAAa,CAAC,CACjB,CAACgC,EAAAA,gCAAgC,CAAA,CAAG,QAAQ,CAC5C,CAACD,EAAAA,4BAA4B,CAAA,CAAG,EAAY,EAAE,CAC9C,GAAG,EAAY,CAD4B,QAC7B,CAAW,AAC/B,CAAK,CAAC,CAEF,IAAI,CAAC,KAAA,CAAQ,EAAY,IAAI,CAEzB,EAAY,EAFQ,OAET,GAAa,EAAE,CAC5B,IAAI,CAAC,aAAA,CAAgB,EAAY,SAAD,GAAC,AAAY,EAG3C,SAAA,GAAa,GACf,KAAI,CAAC,EADqB,EAAE,IACvB,CAAW,EAAY,OAAA,AAAO,EAAR,AAEzB,EAAY,SAAD,GAAa,EAAE,CAC5B,IAAI,CAAC,QAAA,CAAW,EAAY,SAAD,GAAC,AAAY,EAG1C,IAAI,CAAC,OAAA,CAAU,EAAE,CAEjB,IAAI,CAAC,iBAAA,CAAoB,EAAY,SAAD,GAAa,CAG7C,IAAI,CAAC,QAAQ,EAAE,AACjB,IAAI,CAAC,YAAY,EAErB,AAFuB,CAKhB,OAAO,CAAC,CAAI,CAAkB,CAMnC,OALI,IAAI,CAAC,MAAM,CACb,CADe,GACX,CAAC,MAAM,CAAC,IAAI,CAAC,GAEjB,CAFqB,CAAC,EAElB,CAAC,MAAA,CAAS,CAAC,EAAK,CAEf,CAFc,GAEV,AACb,CAGO,QAAQ,CAAC,CAAK,CAAoB,CAMvC,OALI,IAAI,CAAC,MAAM,CACb,CADe,GACX,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAEpB,EAFyB,CAAC,CAEtB,CAAC,MAAA,CAAS,EAET,GAFc,CAEV,AACb,CASO,eAAe,CAAC,CAAU,CAAW,CAAK,CAA6B,CAE9E,CAGO,WAAW,EAAoB,CACpC,GAAM,CAAE,OAAO,CAAE,CAAM,CAAE,QAAQ,CAAE,CAAO,CAAE,QAAQ,CAAE,CAAA,CAAQ,CAAI,IAAI,CACtE,MAAO,CACL,MAAM,WACN,EACA,KADO,KACG,CAAE,EAAUoC,EAAAA,GAAV,eAAU,CAAqBf,EAAAA,eAAe,AAChE,CACE,AADG,CAII,YAAY,CAAC,CAAG,CAAU,CAAK,CAAwC,CAQ5E,YAPc,IAAV,EAEF,GAFqB,AAAnB,EAAqB,EAEhB,IAAI,CAAC,WAAW,CAAC,EAAI,CAAD,AAE3B,IAAI,CAAC,WAAW,CAAC,EAAG,CAAA,AAAI,EAGnB,GAHwB,CAIjC,AADa,CAIN,aAAa,CAAC,CAAU,CAAwB,CAErD,OADA,MAAM,CAAC,IAAI,CAAC,GAAY,OAAF,AAAS,CAAR,AAAQ,AAAC,GAAO,AAAP,IAAW,CAAC,YAAY,CAAC,EAAK,CAAF,AAAY,CAAC,EAAI,CAAD,AAAE,CAAC,CACxE,IAAI,AACb,CAUO,eAAe,CAAC,CAAS,CAAuB,CACrD,IAAI,CAAC,UAAA,CAAagB,EAAAA,sBAAsB,CAAC,EAC3C,CAKO,MAN6C,CAAC,EAMrC,CAAC,CAAK,CAAoB,CAExC,OADA,IAAI,CAAC,OAAA,CAAU,EACR,GADa,CACT,AACb,CAKO,UAAU,CAAC,CAAI,CAAgB,CAGpC,OAFA,IAAI,CAAC,KAAA,CAAQ,EACb,EADiB,EACb,CAAC,YAAY,CAAChC,EAAAA,gCAAgC,CAAE,QAAQ,CAAC,CACtD,IAAI,AACb,CAGO,GAAG,CAAC,CAAY,CAAwB,CAEzC,IAAI,CAAC,QAAQ,EAAE,CAInB,IAAI,CAAC,QAAA,CAAWgC,EAAAA,sBAAsB,CAAC,GACvCC,EAAAA,OADmD,CAAC,EAC1C,CAAC,IAAI,CAAC,CAEhB,IAAI,CAAC,YAAY,EAAE,CACrB,CAUO,WAAW,EAAa,CAC7B,MAAO,CACL,IAAI,CAAE,IAAI,CAAC,WAAW,CACtB,WAAW,CAAE,IAAI,CAAC,KAAK,CACvB,EAAE,CAAE,IAAI,CAAC,WAAW,CAACtC,EAAAA,4BAA4B,CAAC,CAClD,cAAc,CAAE,IAAI,CAAC,aAAa,CAClC,OAAO,CAAE,IAAI,CAAC,OAAO,CACrB,eAAe,CAAE,IAAI,CAAC,UAAU,CAChC,MAAM,CAAEuC,EAAAA,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CACtC,SAAS,CAAE,IAAI,CAAC,QAAQ,CACxB,QAAQ,CAAE,IAAI,CAAC,QAAQ,CACvB,MAAM,CAAE,IAAI,CAAC,WAAW,CAACtC,EAAAA,gCAAgC,CAAA,CACzD,UAAU,CAAE,IAAI,CAAC,WAAW,CAACuC,EAAAA,6BAA6B,CAAA,CAC1D,cAAc,CAAE,IAAI,CAAC,WAAW,CAACC,EAAAA,iCAAiC,CAAA,CAClE,YAAY,CAAEC,EAAAA,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CACrD,UAAU,CAAG,IAAI,CAAC,iBAAA,EAAqBlC,EAAAA,WAAW,CAAC,IAAI,CAAA,GAAM,IAAI,OAAK,EACtE,OAD+E,GACrE,CAAE,IAAI,CAAC,iBAAA,CAAoBA,EAAAA,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,MAAA,MAAS,EAC9E,KAAK,CAAEmC,CADgF,CAChFA,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,AACrD,CAAK,AACH,CAGO,WAAW,EAAY,CAC5B,MAAO,CAAC,IAAI,CAAC,QAAA,EAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,AAC1C,CAKO,QAAQ,CACb,CAAI,CACJ,CAAqB,CACrB,CAAS,CACH,CACNhG,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAE,GAE/D,CAFmE,CAAC,EAE9D+F,EAAO,EAAgB,EAAvB,CAAgD,EAAwB,GAAa3E,EAAAA,GAA/D,CAAkD,OAA5B,CAAA,EAAI,IAAuD,EAAE,CACzG,EAAa,EAAgB,GAAyB,CAAA,CAAC,CAAI,AAA3D,GAAoF,CAAA,CAAE,CAEtF,CAF4B,CAER,GAAf,GACT,CAHsD,CAAA,AAItD,EADI,EACA,CAAEoE,AAJyD,EAIzDA,sBAAsB,CAACO,GAC7B,GADiC,CAAC,MACxB,EAChB,CAAK,CAID,OAFA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAEX,EAFgB,CAAC,CAEb,AACb,CAUO,gBAAgB,EAAY,CACjC,MAAO,CAAC,CAAC,IAAI,CAAC,iBAChB,AADiC,CAIzB,YAAY,EAAS,CAC3B,IAAM,EAAShC,EAAAA,EAAT,OAAkB,EAAE,CAU1B,GATI,GACF,EAAO,CADC,EAAE,CACC,AAAL,CAAM,SAAS,CAAE,IAAI,CAAC,CAQ1B,CAFkB,AAEjB,KAFqB,CAAC,OAET,EAAE,QAFO,EAAqB,IAAA,GAASJ,EAAAA,WAAW,CAAC,KAAI,CAAC,CAGxE,OAIF,GAAI,IAAI,CAAC,iBAAiB,CAAE,YACtB,IAAI,CAAC,QAAQ,CACf,AAsHR,CAvHyB,QAuHhB,AAAiB,CAAQ,EAAsB,AACtD,IAAM,AAvHgB,EAuHPI,EAAAA,EAAT,GADiB,IACC,EAAE,CAC1B,GAAI,CAAC,EACH,IADS,EAAE,CAIb,IAAM,EAAY,CAAQ,CAAC,CAAC,CAAC,AAC7B,AAAI,CAAC,EADC,CACY,AAAqB,CAAC,EAAE,GAArC,AAAuB,GAAD,GAAC,CAO5B,EAAO,IAAD,QAAa,CAAC,GANlB,EAAO,GAMmB,CAAC,AANrB,cAAmB,CAAC,aAAa,CAAE,MAAM,CAOnD,AAPoD,EA9H3BiC,EAAAA,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAE,KAE5ClG,CAFkD,CAAC,AAEnDA,CAFoD,UAEpD,EACEE,EAAAA,KAAK,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAC/F,GACF,EAAO,CADC,EAAE,CACJ,cAAmB,CAAC,aAAa,CAAE,MAAM,CAAC,GAMtD,IAAM,EAAmB,IAAI,CAAC,SAAxB,gBAAiD,EAAE,CACrD,GAEF,CADcgD,EAAAA,EACT,QAFa,EAAE,WACiB,CAAC,IAAI,CAAC,CAAC,KAAA,EAASO,EAAAA,eAAe,EAAA,CAAE,CAChE,YAAY,CAAC,EAEvB,CAKQ,aAP+B,CAAC,WAOP,EAAiC,CAEhE,GAAI,CAAC,EAAmBW,EAAAA,UAAU,CAAC,GAAZ,CAAgB,CAAC,CAAC,CACvC,CADyC,MAItC,AAHI,IAGA,CAAC,IAHQ,CAGH,EAAE,CACfpE,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAChG,IAAI,CAAC,KAAA,CAAQ,yBAAyB,EAGxC,GAAM,CAAE,KAAK,CAAE,CAAiB,CAAE,cAAc,CAAE,CAAA,CAA2B,CAAIgD,EAAAA,uBAAuB,CAAC,IAAI,CAAC,CAExG,EAAoB,GAAmB,YAAvC,AAAmD,EAAd,AAAgB,CAAC,qBAAqB,EAAE,iBAAiB,CAEpG,IAAsB,IAAlB,AAAsB,EAAE,EAApB,CAAC,QAAA,CACP,OAMF,AANS,IAMH,EAAQ,AAFQiD,EAAAA,CAEhB,AANY,UAMS,OAFa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,AAAD,QAmE/B,IAAI,EAAiB,GAnEmB,IAAA,AAAS,IAAA,EAAQ,CAAC,CAoE3E,GApE4F,IAAI,CAAC,CAAC,MAAP,CAoE3E,GAAc,EAAK,EAAD,GAAlB,WAAmC,EAAA,CAAE,GAlE9B,GAAG,CAAC,AAAD,GAAS/B,CAAR,CAAQA,UAAU,CAAC,IAAO,AAAH,CAAC,CAAC,IAAO,CAAC,GAE3D,EAAS,IAAI,CAAC,QAF+D,CAAC,EAErD,CAACV,EAAAA,gCAAgC,CAAC,AAIjE,QAAO,IAAI,CAAC,WAAW,CAACC,EAAAA,0CAA0C,CAAC,CACnE,EAAM,GAAD,IAAQ,CAAA,AAAC,IACZ,IADoB,GACb,EAAK,EAAD,EAAK,CAACA,EAAAA,0CAA0C,CAAC,AAC9D,CAAC,CAAC,CAGF,IAAM,EAAgC,CACpC,QADe,AACP,CAAE,CACR,KAAK,CAAEyC,EAAAA,6BAA6B,CAAC,IAAI,CAAC,AAClD,CAAO,CACD,KAAK,CAGH,CAFR,CAEc,GAAD,GAAC,GAAS,EACX,EAAM,GAAD,CAAK,CAAC,CAAC,CAAC,CAAE,CAAC,GAAK,CAAC,CAAC,eAAA,CAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAjUxD,CAiU0D,GAjUtD,CAkUf,EACN,GADW,KAD8E,OAE1E,CAAE,AALvB,IAK2B,CAAC,UAAU,CAChC,SAAS,CAAE,IAAI,CAAC,QAAQ,CACxB,WAAW,CAAE,IAAI,CAAC,KAAK,CACvB,IAAI,CAAE,aAAa,CACnB,qBAAqB,CAAE,mBACrB,iBAAiB,YACjB,EACA,sBAAsB,CAAEjB,CADE,CACFA,iCAAiC,CAAC,IAAI,CAAC,AACvE,CAAO,CACD,OAAO,CAAE,EACT,GAAI,GAAU,CACZ,EADE,MADsB,QAER,CAAE,QAChB,CACV,CAAS,AACT,CAAO,AACP,CADQ,AACH,CAEK,CALM,CAKSY,EAAAA,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAY5D,OAXwB,GAAgB,MAAM,CAAC,EAAvB,EAA2B,CAAC,GAAc,MAAM,GAGtE/F,AAH8D,CAAC,CAG/DA,WAAA,EACEE,EAAAA,KAAK,CAAC,GAAG,CACP,yDAAyD,CACzD,IAAI,CAAC,SAAS,CAAC,OAAc,EAAW,CAAC,CAAC,CAAf,CAE/B,EAAY,CAF8B,QAE/B,GAAC,CAAe,GAGtB,CACT,CACF,CAEA,MAP6C,EAGvB,CAIb,EAAgB,CAAK,EAAsE,AAClG,OAAQ,GAA0B,AADZ,EACd,MAAkC,EAAzB,OAAO,GAAuB,EAAvB,GAAuB,QAAiB,MAAQ,KAAK,CAAC,OAAO,CAAC,EACxF,CAGA,EAJ6F,CAAC,MAIrF,EAAmB,CAAK,EAAwC,AACvE,MAAO,CAAC,CAAC,EAAM,GAAD,AADW,YACV,EAAmB,CAAC,CAAC,EAAM,GAAD,MAAC,EAAa,CAAC,CAAC,EAAM,GAAD,IAAC,EAAW,CAAC,CAAC,EAAM,GAAD,KAAS,AAC5F,sJCjXO,SAAS,AAKd,CAAE,CACF,CAAO,CACP,EAAwB,KAAO,CAAC,CAAvB,AACT,EAAqE,KAAO,CAAC,CAApE,OA2BT,MAzBA,CAyBO,GAzBH,EACJ,GAAI,CACF,EAAqB,EAAE,CACzB,CAD2B,AAC3B,AAAE,MAHoB,AAGb,CAAC,CAAE,CAGV,GAJA,GAEA,EAAQ,CAAC,CAAC,CACV,EADO,EAED,CAAC,AACT,CAEA,GAJW,EAAE,EAmBb,AAfO,EAA4B,GAe9B,CAfkD,EAiBvD,EAjBgE,EAkBhE,CAlB8D,CAAa,EAoB3E,AAAIgC,CAHK,CAGLA,CApBqE,CAApB,CAkB5C,EAlB2E,CAAC,GAAnD,CAoBpB,CAAC,GACNC,EADW,AACXA,CADY,EAAE,oBACS,CAC5B,EAAA,AACA,GADA,CAEE,IACA,EAFQ,AAEE,EACZ,CAFW,AAEV,CAAA,AACD,CAHa,CACD,CAAD,CAAiC,AAG1C,EAAQ,CADH,EACM,AACX,CADY,CAAL,CAET,CAAC,GAIL,EALe,EAMf,AANiB,EAMP,GADD,AAEF,EAFI,AACI,AAlCjB,CAkCkB,CAAP,CACG,uJCjFP,SAAS,AACd,CAAO,CACP,CAAe,CACf,CAAU,KAHc,CAcpB,EAJA,EAJJ,GAAI,CAACoC,EAQS,AARTA,eAAe,CAAC,CAIjB,EAHF,CAG8B,GAJJ,CAAC,CACpB,CADsB,CACrB,EAAM,AAGyB,CAKJ,EARtB,QAQgC,EAA3C,AAA6C,OAAtC,EAAQ,KAAD,QAAC,EACjB,EAAa,EAAQ,KAAD,CAApB,OAAkC,CAAC,CACjC,GAAG,CAAe,CAClB,mBAAmB,CAAA,AAAE,GAG6B,AAAhD,QAAwD,EAAE,AAAtD,KAHe,EAGR,EAAgB,AAHc,aAGf,GAAC,CAClB,EAAgB,aAAD,GAAiB,CAKI,SAAS,EAAlD,AAAoD,OAA7C,EAAgB,aAAD,AAAC,CAClB,MAAM,CAAC,EAAgB,aAAD,AAAc,CAAC,CAGvC,CAEf,CAAK,CAAC,CACF,GAA4B,GACe,CADX,OAHH,CAIpB,AAA2C,EAA3B,AAA6B,QADtD,KACwB,AAAC,CACzB,EAAa,EAAgB,MAA7B,OAA4B,AAAc,MACG,IAA7B,EAAQ,KAAD,AAAiC,EAAE,SAAlC,GACxB,EAAa,EAAQ,KAAD,CAApB,UAAqC,CACrC,GAA4B,GAK9B,CALkC,GAK5B,EAAmBvB,EAAAA,WALvB,CAKI,GAAkC,CAAC,GAEzC,GAAI,IAF+C,CAAC,AAE3B,MAOvB,GAPgC,EAA9B,AAAgC,EAClChD,EAAAA,WAAA,EACEE,EAAAA,KAAK,CAAC,IAAI,CACR,CAAC,8HAA8H,EAAE,IAAI,CAAC,SAAS,CAC7I,GACA,OADU,EACD,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAY,CAAC,CAAC,EAE9C,EAAC,CAFyC,CAAC,AAEpC,CAIhB,EAJe,CAIX,CAAC,EASE,OARLF,EAAAA,KADmB,EAAE,IACrB,EACEE,EAAAA,KAAK,CAAC,GAAG,CACP,CAAC,yCAAyC,EACP,AAAjC,mBAAO,EAAQ,KAAD,QAAC,CACX,oCACA,6EAAA,CACL,EAEA,EAAA,EAAA,EAAA,CAAA,CAAA,CAKA,IAAA,EAAA,EAAA,EAYA,CAjBA,KAKA,AAGA,CAAA,GACAF,EAAAA,AATA,EAKA,KAGA,EAAA,EACA,EACAE,EAAAA,KAAA,CAAA,GAAA,CACA,CAAA,iGAAA,EAAA,MAAA,CACA,GACA,CAAA,CAAA,EAIA,CAAA,EALA,AAKA,EAAA,EACA,AADA,MAAA,MAAA,WAAA,kXCjEH,EAAuB,kBAAvB,WAAoD,CAoNnD,SAAS,EAAkB,CAAI,CAAe,CAAQ,EAA0B,AACrF,IAAM,EAAM,CADgB,AACtB,KAAY,EAAE,GAChB,AAAJ,EAAQ,CAAD,aAAe,CACb,CADe,CACX,CAAD,aAAe,CAAC,EAAM,EAAF,CAGzBmG,EAAAA,GAHmC,CAAC,KAG3B,CAAA,AAAC,IACf5E,CADe,CACfA,GADwB,aACR,CAAC,EAAO,GAAF,CAAE,IAAQ,GACzB,EAAS,IADyB,AAG7C,CAH8C,AACrB,AAyClB,CAzCY,AAAO,QAyCV,EAAiB,CAAQ,EAAc,AACrD,IAAM,EAAM,CAAN,CADqB,IACT,EAAE,GACpB,AAAI,EAAI,CAAD,YAAc,CACZ,CADc,CACV,CAAD,YAAc,CAAC,GAGpB4E,EAAAA,GAH4B,CAAC,KAGpB,CAAA,AAAC,IACf,CADe,CACT,GAAD,AADmB,kBACG,CAAC,CAC1B,OAAO,CAAE7E,EAAAA,eAAe,EAAE,CAC1B,UAAU,CAAEP,EAAAA,cAAc,EAChC,AADkC,CAC7B,CAAC,CACFjB,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,6BAA6B,EAAE,EAAM,GAAD,kBAAsB,EAAE,CAAC,OAAO,CAAC,CAAA,CAAA,CACA,EAAA,IAAA,CAAA,IAEA,CAEA,EAJA,CAAA,CAAA,KAIA,EAAA,YACA,CAAA,MADA,SAEA,CAAA,kBACA,CAAA,OACA,CAAA,CACA,MA0BA,EApBA,EAoBA,CApBA,CAAAqE,EAAAA,eAAA,EAAA,CAAA,CACA,IAAA,EAAA,EAAA,EAAA+B,EAAAA,sBAAA,CAIA,CAJA,EAIA,GAAA,CAAA,EAAA,CACA,IAAA,EAAA,CACA,AAFA,AACA,EADA,KAEA,CAAA,OAAA,CACA,WAAA,CAAA,GAAA,CACA,WAAA,CAAA,EAAA,IAAA,CACA,GAAAnB,EAAAA,CADA,gCACA,CAAA,EAAA,AACA,CAAA,CADA,AAEAuB,EAAAA,eAAA,CAAA,EAAA,EACA,AADA,CAAA,AAGA,CAHA,MAGA,CACA,CAEA,EAHA,EAGA,EAAAC,EAAAA,UAAA,OAAA,EAAA,CAGA,GAAA,GAAA,CAAA,EACA,EAyIA,AAzIA,EADA,AACA,OAyIA,CAAA,CAAA,CAAA,AA1IA,CA0IA,CAAA,AA1IA,CACA,CAyIA,AACA,GAAA,CAAA,IADA,IACA,SAAA,CAAA,CAAA,CAAA,EAAA,QAAA,GAAA,EAAA,CACA,EAAA,GAAA,EAAA,UAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAAnC,CAAA,CAAAA,IAAA,SAAA,CAAA,GAEA,EAAA,EACA,GAHA,CAAA,AAGAwC,CADA,CACAA,UAAA,CAAA,CACA,GAAA,CAAA,CACA,YAAA,CAAA,MAAA,IACA,OAAA,GACA,CACA,CAAA,EACA,GAFA,CAEAV,EAAAA,sBAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAEAM,EAAAA,CAFA,iBAEA,CAAA,EAAA,GAEA,IAAA,CAFA,CAAA,AAEA3C,CAFA,CAEAA,EAAA,OAAA,EAAA,CASA,OARA,IACA,EADA,AACA,EADA,EACA,CAAA,WAAA,CAAA,GAEA,EAAA,IAFA,CAAA,MAEA,CAAA,EAAA,AACA,EAAA,IAAA,CAAA,SAAA,CAAA,IAIA,CACA,EAlKA,EAAA,AA6JA,CAAA,CA7JA,EAiKA,CAjKA,AACA2C,EAAAA,CADA,OAAA,CAAA,SACA,CAAA,EAAA,IAAA,CAAA,GAAA,AACA,GAAA,EAAA,CAEA,IAAA,EAAAzB,CAAA,AAFA,CAEAA,iCAAA,CAAA,GACA,OADA,CAAA,CACA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,EAAA,QAAA,GAAA,EAAA,CACA,EAAAX,EAAAA,SAAA,IAAA,CAAA,GAEA,EAAA,EAAA,AACA,GAHA,CAAA,KAIA,GAFA,IAEA,QACA,EACA,GAAA,CAAA,AACA,CAAA,CACA,EACA,EAJA,CAGA,AAIAkC,EAAAA,QAHA,OAGA,CAAA,EAAA,EACA,AADA,CACA,AADA,CAAA,GACA,CACA,GAAA,SACA,CAAA,KACA,CAAA,cACA,CAAA,CACA,OAAA,CAAA,CAAA,CACA,CAAA,CACA,GAAA,EAAA,YAAA,SAAA,EAAA,CACA,GAAA,EAAA,GAAA,kBAAA,EAAA,AACA,CAAA,CAEA,EAAA,EAAA,AACA,SACA,GAFA,IAEA,QACA,EACA,GAAA,CAAA,AACA,CAAA,CACA,EACA,EAJA,CAGA,AAIA,GACAA,AADA,EACAA,AADA,KAHA,UAIA,CAAA,EAAA,EAAA,AAEA,CAFA,AAQA,CARA,MAIAG,EAAAA,YAAA,CAAA,GAEAC,CAFA,CAAA,AAEAA,uBAAA,CAAA,EAAA,EAAA,GAAA,AAEA,CACA,CAOA,EARA,OAFA,AAUA,CAVA,CAUA,CAAA,EAAA,AAEA,IAAA,EAAA,CACA,OADA,KACA,AAHA,CAGA,CAFA,EAAA,AAEA,KAFA,OAAA,EAAA,EAAA,CAAA,CAEA,UAAA,CACA,GAAA,CAAA,AACA,CAAA,CAEA,GAAA,EAAA,KAAA,IAAA,CAAA,CACA,IAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAGA,OAFA,EAAA,CAAA,aAAA,CAAApB,EAAAA,sBAAA,CAAA,EAAA,KAAA,IAAA,CAAA,CACA,OAAA,EAAA,CAAA,QAAA,CACA,CACA,CAEA,CAHA,MAGA,CACA,CAEA,QAHA,CAGA,IACA,EADA,EACAlD,CADA,CACAJ,EAAAA,KAAA,SAAA,EAAA,CACA,OAAAM,EAAAA,uBAAA,CAAAF,EACA,CAEA,MAHA,CAAA,EAGA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,CADA,CACAyB,EAAAA,EAAA,OAAA,EAAA,CACA,EAAA,GAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,CAEA,MAAA,EAAA,EAAA,CAAA,CAAA,EAEA,EAAA,CAAA,QAFA,MAEA,CAAA,CAAA,GAAA,CAAA,CAAA,UAAA,CAAA,CAAA,QAAA,CAAA,EAAA,EAAA,WAAA,EAAA,CAAA,CAGA,GAAA,GAAA,CAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA,CAGA,CAHA,GAGA,EAHA,AAGA,EAAA,aAAA,CAAA,CAAA,EACA,EAAA,EAAA,AADA,OAAA,IACA,GAAA,CAEA,EAAA,EAAA,EAFA,CAEA,kBAAA,EAAA,CACA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,GAAA,SAAA,EAAA,CAAA,KAAA,gBAAA,CACA,EACA,CACA,EAAA,EAAA,CACA8C,EAAAA,AADA,UACA,CACA,EACA,KADA,CAEA,EACA,EADA,WACA,CAAA,EACA,UAAA,CAAA,EACA,GAFA,UACA,GACA,CAAA/D,EAAAA,eAAA,CAAA,EAAA,GAAA,EAAA,WAAA,CAAA,AACA,CAAA,CACA,EAAA,EAFA,QAEA,EAGA,EAAA,IAAAgE,EAAA,AAAAA,GAHA,OAGA,CAAA,CACA,GAAA,CAAA,CACA,UAAA,CAAA,CACA,CAAAtD,EAAAA,gCAAA,CAAA,CAAA,QAAA,CACA,CAAAW,EAAAA,qCAAA,CAAA,MACA,IAAA,GAAA,EAAA,KAAA,EAAA,EACA,CADA,EACA,CAAA,AACA,CAAA,EAFA,OAAA,AAGA,CACA,CAAA,CAAA,CAWA,GAZA,GAGA,CAAA,GAAA,IAAA,AACArE,EADA,AACAA,EADA,SACA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,gFAAA,CAAA,CACA,EAAA,IAAA,cAAA,CAAA,aAAA,CAAA,aAAA,CAAA,EAGA,GACA,EAAA,CADA,EAAA,CACA,CAAA,WAAA,CAAA,GAGA,CACA,CAiCA,GArCA,CAAA,EAGA,GAkCA,EAAA,CAAA,CAAA,CAAA,EAAA,AAEA,GAAA,EACA,CAHA,MAGA,EAIA,GAAA,EALA,EAAA,AAKA,EAAA,CAAA,EACA,EALA,KAQA,AAHA,IAGA,EAAAwB,CAJA,CAIA,AAAAA,CAHA,eAGA,CAAA,GAEA,EAFA,CAAA,AAEA,CAAA,EACA,EADA,EAAA,GAIA,AAHA,IAGA,EAAAuC,EAAAA,CAHA,CAGA,OAAA,EAAA,OAEA,CADA,EAAA,EAAA,EAAA,AACA,EADA,MAAA,EAAA,CAAA,CAAA,CAAA,EACA,0BAAA,CACAJ,CADA,CACAA,WAAA,CAAA,GAGA,CAHA,AAIA,CAJA,AAMA,EAHA,OAGA,EAAA,CAAA,EAAA,AACA,YAAA,GADA,CACA,EACA,GACA,EAAA,EAAA,CAFA,AACA,EAGA,GAAA,AAHA,EACA,CAAA,AAGA,CAHA,CAEA,GAAA,EAAA,UA3UtE,CAC3B,EAIA,KAEA,GAFQ,CAEFrB,EAAUJ,EAAAA,KAAV,SAAwB,EAAE,CAC1B,EAAMM,CAAN,CAAMA,uBAAuB,CAACF,GACpC,GAAI,EAAI,CADmC,AACpC,CADqC,WACvB,CACnB,CADqB,MACd,EAAI,CAAD,YAAc,CAAC,EAAS,GAGpC,EAHkC,CAG5B,EAHsC,CAAC,UAGrC,CAAW,CAAA,QAAEM,CAAA,CAAQ,CAAI,EAE3B,EAASmB,EAAAA,CAFyB,CAElC,OAAkB,EAAE,CACpB,EAAclB,EAAAA,OAAd,8BAAmD,CAACD,SAAO,CAAC,AAClE,AAAI,GAAU,CAAC0D,EAAX,AAAWA,mBAAmB,CAAC,EAAQ,GAAa,CAAf,KAAqB,CAAC,CACtD,AAD6C,CAAW,CAC1C,GAGhBH,EAAAA,GAHwB,CAAC,EAAV,GAGN,CAAA,AAAC,IACf,CADe,GACT,CADkB,CACGI,EAAAA,6BAA6B,CAAC,EAAa3D,GAGtE,MAHoE,AAAS,CAAC,AAC9E,EAAM,GAAD,kBAAsB,CAAC,GAC5BrB,EAAAA,aAD8C,CAAC,EAC/B,CAAC,EAAO,GAAF,KACf,CAD0B,CAAC,CAEpC,CAAC,CAAC,AACJ,GAFmB,EAAE,iBArEd,SAAS,AAAkB,CAAO,EACvC,AADiE,IAC3D,EAAM,CAAN,GACN,EADkB,CACd,CAF2B,AACX,CACZ,CAAD,gBAAkB,CACvB,CADyB,MAClB,EAAI,CAAD,gBAAkB,CAAC,GAG/B,IAHsC,AAGhC,CAHiC,CAGjB,EAAyB,GACzC,IADgD,CAAC,CAAjD,YACE,CADsC,AACtB,CAAE,UAAU,CAAE,CAAA,CAAiB,CAAI,EAU3D,KAVkE,CAU3D,CANS,EAAQ,IAMV,CANS,AAAC,CACnB,AAAD,GAA0B4E,EAAAA,GAAjB,MAA0B,CAAC,EAAQ,KAAD,AAAM,CAAE,QAAQ,AACtC,IAArB,EACE,AAAC,GAAyB,EAAe,EAAkB,CAAlD,EACR,AAAD,GAA0B,EADyC,CACjC,CAAE,AADI,CAC/B,AAEA,GAHgD,AACvB,EAGtC,CADmB,GACb,EAAQ5C,EAAAA,CAAR,cAAuB,EAAE,CACzB,EAAa,EAAc,EAAO,GAAF,MAAN,CAET,AAEvB,EAF+B,EAE3B,EAJoD,CAAC,AAE3B,OAAC,EAAgB,CAAC,CAE9B,CACT,CADW,GACP6C,EAAAA,EAH6C,oBAGvB,CAG5B,CAH8B,CAGR,CAC3B,UAAU,GACV,KAF0B,QAEb,oBACb,QACA,CACN,CAAK,CAAC,AACJ,CAAC,CAFQ,AAEP,AACJ,GAJsB,6BApJf,SAAS,AAAa,CAAO,CAAoB,CAAQ,EAAwB,AACtF,IADuB,AACjB,EAAM,CAAN,GACN,EADkB,CACd,CADgB,CACZ,CAAD,QAAU,CACf,CADiB,MACV,EAAI,CAAD,QAAU,CAAC,EAAS,GAGhC,EAH8B,EAGxB,CAHkC,CAAC,AAGnB,EAAyB,GACzC,IADgD,CAAC,CAAjD,YACE,CADsC,AACtB,CAAE,UAAU,CAAE,CAAgB,CAAE,KAAK,CAAE,CAAA,CAAY,CAAI,EAIzE,EAAoB,GAAa,AAJ+C,KAI1C,EAAE,CAAT,AAErC,IAFM,GAECD,EAAAA,SAAS,CAAC,EAAmB,IAElB,AAET,EAJiC,AAEA,GAEzB,EAAD,GACZ,CAL8B,AAIX,GACb,EAAQ5C,EAAAA,AAHwC,CAAC,AAGjD,CAH4B,aAGL,EAAE,CACzB,EAAa,EAAc,EAAO,GAAF,AAGhC,EAAa,AADI,EAAQ,EAFC,GAEF,IAF0B,CAAC,EAE1B,EAAgB,CAAC,EAE5C,IAAI6C,EAAAA,EAFkD,oBAE5B,CAC1B,EAAsB,YACpB,OADmB,GACT,MACV,aAAa,MACb,QACA,CACZ,CAAW,CAAC,CAIN,CALW,GADW,GAItB7E,EAAAA,gBAAgB,CAAC,EAAO,GAAF,AAEf8E,EAAAA,KAF2B,CAAC,cAER,CACzB,IAAM,EAAS,GACf,GADc,EAGZ,CAFI,CADmB,CAAC,AAGlB,QAAE,CAAA,CAAO,CAAInC,EAAAA,UAAU,CAAC,GAC1B,EAAW,KADyB,CAAC,EAC3B,GAAY,EAAC,GAAM,CAAN,AAAO,GAAqB,OAAX,CAAW,CAAI,CAAC,CAC1D,CAD4D,CACjD,AAD+B,QAChC,CAAU,CAAC,CAAE,IAAI,CAAEN,EAAAA,iBAAiB,CAAE,OAAO,CAAE,gBAAA,CAAkB,CAAC,AAEhF,CAAC,CACD,KACE,CADI,CACO,GAAG,EAAE,AAClB,CAAC,CAEL,CAAC,AAHe,CAGd,CAEN,oBAYO,SAAS,AAAmB,CAAO,CAAoB,CAAQ,EACpE,AADgH,IAC1G,EAAM,CAAN,GADuB,AAE7B,EADkB,CACd,CADgB,CACZ,CAAD,cAAgB,CACrB,CADuB,MAChB,EAAI,CAAD,cAAgB,CAAC,EAAS,GAGtC,EAHoC,EAG9B,CAHwC,CAAC,AAGzB,EAAyB,GACzC,IADgD,CAAC,CAAjD,YACE,CADsC,AACtB,CAAE,UAAU,CAAE,CAAgB,CAAE,KAAK,CAAE,CAAA,CAAY,CAAI,EAEzE,EAAoB,GAAa,AAF+C,KAE1C,EAAE,CAE9C,AAFqC,IAA/B,GAECuC,EAAAA,SAAS,CAAC,EAAmB,IAElB,AAET,EAJiC,AAEA,GAEzB,EAAD,GACZ,CAL8B,AAIX,GACb,EAAQ5C,EAHwC,AAGxCA,CAHyC,AAGjD,CAH4B,aAGL,EAAE,CACzB,EAAa,EAAc,EAAO,GAAF,AAGhC,EAAa,AADI,EAAQ,EAFC,GAEF,IAF0B,CAAC,EAE1B,EAAgB,CAAC,EAE5C,IAAI6C,EAAAA,EAFkD,oBAE5B,CAC1B,EAAsB,YACpB,EACA,KAFmB,GACT,KACG,oBACb,QACA,CACZ,CAAW,CAAC,CAIN,CALW,GADW,GAItB7E,EAAAA,gBAAgB,CAAC,EAAO,GAAF,AAEf8E,EAAAA,KAF2B,CAAC,cAER,CAKzB,AAJR,IAIc,EAAS,EAAY,IAAb,AAAmB,EAAW,EAAnB,CAAsB,EAAE,CAAC,CAClD,CAD2C,IAGzC,CAFI,EAEE,QAAE,CAAA,CAAO,CAAInC,EAAAA,UAAU,CAAC,GAC1B,EAAW,KADyB,CAAC,EAC3B,GAAY,EAAC,GAAM,CAAN,AAAO,GAAqB,OAAX,CAAW,CAAI,CAAC,CAC1D,CATZ,AAQwE,CAAlB,AAC/B,QAAD,CAAU,CAAC,CAAE,IAAI,CAAEN,EAAAA,iBAAiB,CAAE,OAAO,CAAE,gBAAA,CAAkB,CAE/E,AAFgF,CAE/E,CAEL,CAAC,CAAC,CAEN,oBA0GO,SAA4B,AAAnB,CAA2B,EAAc,AACvD,IAAM,EAAM,CAAN,KADuB,AACX,EAAE,GAEpB,AAAI,EAAI,CAAD,cAAgB,CACd,CADgB,CACZ,CAAD,cAAgB,CAAC,GAGtBuC,EAAAA,GAH8B,CAAC,KAGtB,CAAA,AAAC,IAMf,CANe,CAMT,GANkB,AAMnB,qBAAyB,CAAC,CAAE,CAAC,EAAoB,EAAG,CAAA,CAAM,CAAC,CAChE,AADyD,IACnD,EAAM,CAAN,GAEN,EAHsD,EAClC,EAAE,CACtB,EAAM,GAAD,qBAAyB,CAAC,CAAE,CAAC,EAAoB,MAAG,CAAA,CAAW,CAAC,CAC9D,CACT,CAAC,CACH,AADI,AADU,EAD+C,GAAH,uSCvP7C,EAAmB,CAC9B,WAAW,CAAE,IACb,AADkB,YACN,CAAE,IACd,CADoB,eACJ,CAAE,IACpB,CAD0B,sCAkEnB,SAAuB,AAAd,CAA8B,CAAoB,EAAoC,CAAA,CAAE,EAAQ,CAAvC,GAmUjD,CAnUK,CAE3B,KAiU6B,CA3TzB,CA2TmD,CAjUjD,EAAa,IAAI,GAAG,CAApB,AAGF,CAHyC,CAM3B,CAHF,EASZ,EA1EgC,CAiEf,CAAjB,SASa,GAAyB,EA1EU,CA4EhD,EAA8B,CAAC,EAAQ,KAAD,QAApB,IAAsC,CAEtD,EAAgC,CAJiC,CAI/B,CAElC,QAFa,KAGjB,EAAc,EAAiB,OAA/B,IAA0C,CAC1C,EAD8B,UAC9B,GAAe,EAAiB,YAAY,EAAb,gBAC/B,EAAmB,EAAiB,YAApC,EAAmC,EAAiB,eACpD,CAAa,0BACb,GAA2B,CAAI,CACjC,CAAI,EAEE,EAASpC,EAAAA,CAFJ,CAEL,OAAkB,EAAE,CAHxB,AAKF,GAAI,CAAC,GAAU,CAACM,EAAAA,AAAX,eAA0B,EAAE,CAAE,CACjC,IAAM,EAAO,EAAP,EAAW+B,EAAAA,sBAAsB,CAEjC,CAFmC,CAE7B,CACV,WAAW,CAAE,GAAG,CAChB,OAAO,CAAE,OAAO,CAChB,GAAGnB,EAAAA,iCAAiC,CAAC,EAAK,AAChD,CAAI,CAGA,AAJ2C,OAE3CuB,EAAAA,eAAe,CAAC,EAAM,EAAF,CAAK,AAElB,CAFmB,AAG5B,CAEA,EAHa,EAGP,EAAQjD,EAAAA,CAAR,cAAuB,EAAE,CACzB,EAAqBG,EAAAA,aAAa,CAAlC,CAAoC,CACpC,IAAA,CAAsB,EAAf,AAuRP,EAAOuD,EAAP,AAAOA,UAvR+B,AAAjB,CAAkB,MAuRf,CAAC,GAE/B1F,EAAAA,EAFsC,CAAC,aAEvB,CAACgC,EAAAA,eAAe,EAAE,CAAE,GAEpCzD,CAFwC,CAAC,AAEzCA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAE3D,GAvNP,CAuNW,QAvNF,IACH,IACF,UADgB,AADO,EACL,AACN,CAFoB,AAEnB,GACb,OAAiB,EAErB,CAeA,CAlB+B,CAAC,EAC5B,EAA0B,GAiBrB,EAAoB,CAAY,EAAiB,AACxD,IACA,EAAiB,QAFS,EAEC,CAAC,CADV,EAAE,EAEd,CAD4B,AAC3B,GAAiC,CAAA,GAApB,EAAb,AAAwB,IAAA,EAAc,EAAf,EAC1B,EAzM2B,WAyM3B,CAD2D,CAxMnB,CAwMqB,AAC7C,AAChB,EAAK,EAAD,CAAI,CAAC,GAEb,CAAC,CAAE,EACL,CAKA,IAR2B,CAAC,GAEZ,CAAC,AAMR,EAAyB,CATc,AASF,EAAiB,AAE7D,EAAiB,UAAU,CAAC,KACtB,CAD4B,AAC3B,AAHwB,GAGX,IAChB,EADG,AAtN4B,WAuN/B,CADkC,EAAE,AACpB,GAvNgC,CAwNhD,EAAK,EAAD,CAAI,CAAC,GAEb,CAAC,CAAE,EACL,CAkCA,IArC2B,CAAC,IAqCnB,EAAgB,CAtC2B,AAsCf,CAnChB,CAAC,AAmC+B,AACnD,EAAY,GACZ,CADgB,CACL,EADX,CADsB,EAEN,EAAE,CAAR,AAEV,EAAc,OAAO,CAAA,AAAC,GAAT,AAAoB,KAEjCuB,EAFwC,AAExCA,EAF0C,CAAC,aAE3B,CAAC,EAAO,GAAF,AAEtB,IAAM,EAAW2C,EAAAA,IAAX,GAFoC,CAAC,EAEhB,CAAC,GAEtB,CAF0B,AAExB,CAFyB,cAEV,CAAE,CAAA,CAAe,CAAI,EAE5C,GAAI,CAAC,EAF+C,AAGlD,MAIE,AAAC,CADc,EAAS,GAJT,CAKJ,AADiB,CAJX,AAKL6C,CADW,CACXA,iDAAiD,CAAC,EAAE,AAClE,EAAK,EAAD,UAAa,CAACA,EAAAA,iDAAiD,CAAE,GAIvE,IAAM,EAAgB,EAAS,EAJqD,CAAC,GAIvD,AAAO,AACjC,CAAC,EADC,CACkC,SAAS,CAA5C,CAA8C,CAA7B,GACpB,EAAK,EAAD,MADgB,CACN,CAAC,CAAE,IAAI,CAAEzD,EAAAA,cAAA,CAAgB,CAAC,CAG1CtD,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,EAAS,EAAE,CAAC,GAAJ,OAAc,CAAC,CAAC,CAE1D,IAAM,EAAaiG,EAAAA,MAAb,YAA+B,CAAC,GAAM,CAAF,CAAC,IAAO,CAAA,AAAC,GAAS,EAAT,EAAmB,CAAV,EAExD,CAFsE,CAAC,AAEtD,CAAC,CACtB,EAAW,OAAO,CAAR,AAAQ,AAAC,AADf,IAGE,EAAU,OAFgB,AAEjB,IAAY,EAAE,EAAE,CAC3B,EAAU,OAAD,EAAU,CAAC,CAAE,IAAI,CAAErC,EAAAA,iBAAiB,CAAE,OAAO,CAAE,WAAA,CAAa,CAAC,CACtE,EAAU,GAAG,CAAC,GAAL,AACT9D,EAAAA,OAD0B,CAAC,GAC3B,EACEE,EAAAA,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAE,IAAI,CAAC,SAAS,CAAC,OAAW,EAAF,AAAa,CAAC,CAAC,CAAC,EAI1G,EAJqG,CAI/F,CAAE,SAAS,CAAE,EAAoB,CAAC,CAAE,eAAe,CAAE,EAAsB,CAAA,CAAE,CAD7DkE,EAAAA,AACiE,UADvD,CAAC,CAC0B,CAAyC,CAE9F,EAA+B,GAAuB,CAHlB,CAAC,AAOrC,EAA8B,EAAoB,GADvB,CAAC,EAAe,AAHuB,CAGvB,CAAW,CAAI,CAH3B,GAMrC,AAHoE,GAGhEpE,CANE,CAMFA,CAFoD,IAAuB,AAAzE,MAES,CAAE,CACf,IAAM,EAAkB,IAAI,CAAC,KAHwE,GAG/F,CAAgC,CAAC,OAAW,EAAW,AAAb,CAAc,CAAC,CAC1D,EAEM,AAAC,EAH+C,CAIzDE,EAAAA,KAAK,CAAC,GAAG,CAAC,WAHqB,CAEM,CAFJ,CAEM,6DAC8C,CAAE,GAFvFA,EAAAA,KAAK,CAAC,GAAG,CAAC,AAE4F,CAAC,yEAFnB,CAAE,EAI1F,EAEI,CAAC,GAA+B,CAAC,CAAA,CAA4B,EAAE,CACjEgH,CAPuG,CAAC,AAOxGA,uBAAuB,CAAC,EAAM,EAAF,CAC5B,IAEJ,CAAC,CAH0C,AAGzC,CAH0C,AAKxC,EAAiB,CAAC,EAAE,AACtB,EALgB,AAKX,EAAD,AALc,KAIhB,KACe,CAAC,kCAAkC,CAAE,EAE1D,CA8DA,OA/QA,EAAK,EA+MmE,AA/MpE,CAAC,AA+MoE,CA/M9D,IAAI,KAAK,CAAC,EAAK,EAAD,CAAI,CAAE,CAC7B,KAAK,CAAC,CAAM,CAAE,CAAO,CAAE,CAAI,EAA2B,AAOpD,GANI,GACF,EAAc,GAKZ,CALgB,CAAC,GADJ,EAAE,AAMf,CALW,KAKQZ,EAAAA,sBAAsB,CAC3C,CAD6C,MAK/C,GAAM,CAAC,EAAqB,GAAG,EAAI,CAAI,CAAJ,CAC7B,EADqC,AACzB,GAAuBhF,EAAAA,EAAnC,AADoB,gBACiC,EAAE,CACvD,EAAmBoE,EAAAA,YAAnB,UAAyC,CAAC,GAG1C,EAAQS,EAAAA,CAAR,CAHmD,CAAC,eAG1B,CAAC,GAAM,CAAF,CAAC,IAAO,CAAC,AAAD,GAAU,EAAT,EAAmB,CAAV,EAEjD,CAF+D,CAAC,AAErD/B,EAAAA,IAAX,MAAqB,CAAC,GAI5B,CAJgC,CAAC,CAI7B,CAAC,EAAM,GAAD,GAAC,EAAU,CAAC,EAEpB,OADA,EAAgB,GACT,OAAO,CAAC,EAF6B,AAC7B,EAD+B,CAE1B,AADY,CACX,AADY,EACJ,EAAS,CAAC,CAAZ,GAAS,CAAwB,EAAK,CAAC,CAAF,AAGlE,IAAM,EAAc,CAHqC,CAG9B,CAHgC,GAGjC,MAAW,EAAE,CAAC,WAAW,CAE7C,EAAyB,GAAO,EAAF,IAAQ,CAAC,CAAC,EAAyB,CAAtB,IAC/C,EADI,AAAwE,EACtE,EAAkBA,CADyD,CACzDA,UAAU,CAAC,AAA7B,OAAoC,CAAC,CAC3C,AAAI,CAAC,EAAgB,SAAS,EAAE,AAM5B,EANgB,CAMDgB,EAAAA,MAAf,UAA+B,CAAC,EAAiB,GAL5C,EAQF,CARK,CAQC,CAAN,GAHyD,AAG/C,CAHgD,AAG/C,CAHiC,CAAgB,CAG9C,CAAC,EAAK,CAAF,CAAkB,SAAS,CAAA,CAAI,EAAd,AAA8B,SAAS,AACnF,CAAC,GADwE,GACtE,GAGG,EAAqB,EAAS,EAHxB,CAAC,GAGsB,QAA7B,CAA6C,CAO7C,EAAe,IAAI,CAAC,GAAG,CAC3B,CADI,CACiB,EAAqB,EAAe,IAAA,AAAO,IAChE,IADwE,AACpE,AADJ,CACK,CADgB,EACb,CAAC,GAAsB,CAAC,IAAU,IAAF,AAAM,CAAC,GAAG,CAAC,CAA1C,CAA4D,GAA0B,OAIjG,CAJyG,CAAC,CAAC,CAAtC,GAGrE,EAAgB,GACT,OAAO,CAAC,CADa,CAAb,AAAc,GACT,CAAC,EAAQ,EAAS,CAAC,CAAZ,GAAS,CAAoB,EAAK,CAAC,AAChE,CAD8D,AAC7D,AACL,CAAG,CAAC,CAsJF,AAxJuD,EAwJzC,AAxJ2C,IAwJvC,CAChB,EAAO,EAAE,CAAC,CADC,AACL,UAAe,CAAA,AAAE,QAnGF,IAyGjB,EAzGuB,CA0GvB,AAPkC,CAnGK,GA0GvB,EADhB,CAEEhB,CADc,CACdA,EADF,CACA,CAAC,MAAW,CAAC,GAAa,QAAF,CAAC,AAAC,EACzB,aAAuB4C,EAAAA,UAAA,EAAc,EAAY,SAAD,OAAiB,EAAA,CAAE,EACpE,AAIeb,AAGb,EAHaA,MAGL,YAHuB,CAAC,GAGvB,CAH2B,CAAC,MAGpB,CAAC,OACN,EAAY,EADK,CAAC,EAAE,IACT,EAAY,EAAE,CAAC,MAAM,CAAC,AApHnD,IACA,EAAW,GAAG,CAAC,GAAQ,CAAb,EAAW,AAKrB,CAL2B,CAAC,AADV,AAGG7E,AAGI,EANL,AAGCA,UAGI,QAHc,EAAE,AAGjB,CAAgB,EAAmB,IAAI,CAgH/D,AAhHgE,CAgH/D,CAAC,EAGJ,EAAc,GAnH4B,CAmHxB,CAChB,EAAO,EAAE,CAAC,CADC,AACL,QAAa,CAAA,AAAE,IACnB,IAAI,EAIJ,GALgC,IACnB,AA9GK,EAkHL,AAJE,EAIQ,CAAX,CAlHY,EAAgB,GAkHlB,IAAY,EAAE,CAAC,MAAM,CAjHzC,EAAW,GAAG,CAAC,IACjB,AADY,EACD,AADY,CAAC,EAAE,GACT,CAAC,CAAR,EAGY,CAAC,EAHC,AAGC,CAHA,AAGvB,EAAW,IAAA,EAIb,EAJY,AACSA,AAGD,EAHCA,UAGD,KAAD,GAHoB,EAAE,CAGN,EAAc,IAAI,AAyGT,CAzGU,AA0GxD,CAAC,CAAC,EAGJ,AA7GuC,EA6GzB,IAAI,CAChB,EAAO,EAAE,CAAC,CADC,AACL,yBAA8B,CAAA,AAAE,IAChC,IAA0B,IAAI,AAChC,EADkC,CACb,EACrB,EADyB,EAGrB,EAAW,EAL4C,AACzD,EAIiB,EAAE,AACnB,CAJF,CAGc,EAIlB,CAAC,CAAC,CANqB,CAUrB,AAAC,CAVsB,CAUd,KAAD,SAPoB,EAAE,CAOJ,EAAE,AAC9B,IAGF,UAAU,CAAC,IAHU,CAId,CAJgB,AAGN,GAEb,EAAK,EAAD,CADQ,EAAE,IACA,CAAC,CAAE,IAAI,CAAEwC,EAAAA,iBAAiB,CAAE,OAAO,CAAE,mBAAA,CAAqB,CAAC,CACzE,EAxX8B,WAwX9B,GAxX4C,AAwX5B,CAChB,EAAK,EAAD,CAAI,EAAE,CAEd,CAAC,CAAE,GAEI,CACT,GADa,KAFI,CAAC,GAH+B,sFC5W1C,OAAM,EAKJ,SALe,CAA8B,CAKlC,CAAC,CAAQ,CAAe,CACxC,IAAI,CAAC,MAAA,CA9Ca,CAAC,CA8CL,AACd,IAAI,CAAC,QADsB,CACtB,CAAY,EAAE,CAEnB,IAAI,CAAC,YAAY,CAAC,EACpB,CAGO,IAAI,CAJiB,AAK1B,CAL2B,AAKhB,CACX,CAAU,CACwB,CAClC,OAAO,IAAI,EAAY,CAAC,EAAS,KAAF,AAC7B,CADoB,AAAiB,GACjC,CAAC,CADqC,QAC5B,CAAC,IAAI,CAAC,EAClB,EACA,GADK,CAEH,GAAK,CAAD,CAKF,CANM,EAMF,CACF,EAAQ,EAAY,CANR,EAML,AACT,AAPgB,CAOhB,AAAE,EAD0B,CAAC,CAAC,CAAT,CACZ,CAAC,CAAE,CACV,EAAO,CAAC,CAAC,AACX,EADQ,IALR,EAAQ,EAQZ,CAAC,CACD,CATW,CAAC,EAUV,AAVwB,GAUnB,CAAD,CAGF,CAJM,EAIF,CACF,EAAQ,EAJG,AAIQ,EAJN,CAIN,AACT,CAAA,AAAE,EADyB,CAAC,CAAC,AAAT,EACX,CAAC,CAAE,CACV,EAAO,CAAC,CAAC,AACX,EADQ,IALR,EAAO,EAQX,CAAC,CACF,AATW,CASV,CACF,AAVmB,CAAC,GAUhB,CAAC,gBAAgB,EAAE,AACzB,CAAC,CAAC,AACJ,CAGO,KAAK,CACV,CAAU,CACgB,CAC1B,OAAO,IAAI,CAAC,IAAI,CAAA,AAAC,GAAO,EAAK,CAAF,CAC7B,CAGO,OAJkC,AAI3B,CAJ4B,AAIlB,CAAS,CAA8C,CAC7E,OAAO,IAAI,EAAqB,CAAC,EAAS,KACxC,AADsC,CAAQ,AAA1B,GAChB,EAD+C,AAE/C,CADG,CAGP,OAAO,CAFO,GAEH,CAAC,IAAI,CAAA,AACd,IACE,GAAa,EACb,AAFO,EAED,CADY,AAClB,CACI,CAFJ,EACW,AAET,GAEJ,CAAC,CAAA,AACD,CAJe,EAAE,CAKf,AAJW,EAAE,CAIA,EACb,CAFQ,CACS,AACX,CAAN,CACI,CAFJ,EAGE,CAFU,EAId,CAAC,EAHc,AAIf,EAJiB,CACJ,CAGT,CAHW,AAGV,KACL,AAAI,CADO,CAET,EAAO,GAAG,AAIZ,CAJQ,AAAK,CAIL,CALM,CAMhB,CANkB,AAKR,AACT,CAAC,AACJ,CAFW,AAAuB,AAEjC,CAAC,AACJ,CAGQ,gBAAgB,EAAS,CAC/B,OAAI,IAAI,CAAC,MAAA,CACP,IADkB,GAIpB,IAAM,EAAiB,IAAI,AAJM,CAIL,CAJO,QAIE,CAAC,KAAK,EAAE,CAC7C,IAAI,CAAC,SAAA,CAAY,EAAE,CAEnB,EAAe,OAAO,CAAA,AAAC,IAAT,AACR,CAAO,CAAC,CAAC,CAAC,EAAE,CADgB,IAK5B,IAAI,CAAC,MAAA,EACP,CAAO,CAAC,CAAC,AADS,CACR,CAAC,IAAI,CAAC,MAAA,CADgB,CACS,AAGvC,CAJgC,OAI5B,CAAC,MAAA,EACP,CAAO,CAAC,CADU,AACT,CAAC,CAAC,IAAI,CAAC,MAAM,CADU,AACT,CAGzB,CAJoC,AAI7B,CAAC,CAAC,CAAA,EAAI,EACf,CAAC,CADkB,AACjB,AACJ,CAGQ,YAAY,CAAC,CAAQ,CAAqB,CAChD,IAAM,EAAY,CAAC,EAAc,GAAT,CAAlB,CAAgC,AACpC,KAD0E,EACtE,IAAI,CAAC,MAAA,EAIT,GAJoB,AAIhB5B,EAAAA,UAAU,CAJmB,AAIlB,EAJoB,CAIZ,EAAH,CAAC,SACb,EAAyB,GAAzB,CAA6B,CAAC,EAAS,EAI/C,GAJ6C,CAAQ,CAAC,AAIlD,CAAC,MAAA,CAAS,EACd,GADmB,CACf,CAAC,MAAA,CAAS,EAEd,GAFmB,CAEf,CAAC,gBAAgB,EAAE,CACzB,CAAC,CAEK,EAAU,AAAC,IACf,CADI,AAAgB,CA3KH,CAAC,CA4KQ,EADc,AAE1C,CAAC,CAEK,CAHK,AAAsB,CAArB,AAAsB,AAGnB,AAAC,IACd,AADI,EA9Ka,AA8KG,CA9KF,CA+KQ,EAC5B,CAF0C,AAEzC,CAED,CAHW,CAJe,AAId,AAAsB,CAAC,AAG/B,CACF,EAAS,EAAS,EACpB,CAAA,AAAE,CADQ,CAAQ,CAAQ,CAAC,CAJD,CAKjB,CAAC,CAAE,CACV,EAAO,CAAC,CAAC,AACX,CACF,CAFU,AAGZ,uCA9JO,SAAS,AAA+B,CAAM,EACnD,AAD2E,OACpE,IAAI,EAAY,CAAC,CAAC,CAAE,AADM,KAE/B,CADoB,AAAW,CACxB,EACT,CAAC,CAAC,AACJ,AAHwC,AAC9B,EAAO,CAAC,qBAdX,SAAS,AAAuB,CAAK,EAC1C,AADiF,OAC1E,IAAI,EAAW,AAAC,GADU,CAE/B,EAAQ,EACV,CAAC,AAFqB,CAEpB,AACJ,CAHoC,AACzB,AAAM,CAAC,mKCZX,SACL,AADc,CACJ,CACV,CAAK,CACL,CAAI,CACJ,EAAgB,CAAC,EAAZ,AAEL,GAAI,CACF,IAAM,EAP2B,AAOlB,AAOnB,IAPU,KAOD,EACP,CAAK,CACL,CAAI,CACJ,CAAU,CACV,CAAK,EAEL,EAbuC,EAajC,EAAY,CAAU,CAAC,EAAM,CAEnC,AAR6B,EAMvB,AAA4B,CAE9B,CAAC,GAAS,CAAC,EACb,OADsB,AACf,EAGT,AAJ0B,GACZ,CAGR,EAAS,EAAU,CAAE,CAArB,EAAwB,CAAA,CAAO,CAAb,AAAe,IAAI,CAAC,IAI5C,CAFAlC,EAAAA,WAAA,EAA0B,OAAX,GAAmBE,EAAAA,CAAnB,IAAwB,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAU,EAAA,EAAM,GAAP,AAAU,CAAC,eAAe,CAAC,CAAC,CAEjGgC,EAAAA,UAAU,CAAC,IACN,EAAO,AADK,CAAC,EAAE,CACT,AAAK,CAAA,AAAC,GAAS,EAAT,AAAgC,EAAO,EAAM,CAAR,CAAM,AAAc,EAAQ,CAAC,CAAC,CAAC,CAGlF,EAHqE,AAG9C,EAAQ,EAAM,EAHQ,AAGhB,AAAM,AAAc,EAAQ,CAAC,CACnE,AADoE,CAAV,CA3BhB,EA2Bc,AA3BP,EAAM,CAAR,CAAM,AAAc,EA2BpC,CA1B3B,EADoE,CAAC,EAAR,EACtDA,EAAAA,UAAU,CAAC,GAAU,EAASkF,CAAb,CAAaA,AAAb,EAAI,iBAA4B,CAAC,EAC3D,CAAA,AAAE,GAD+D,CAAC,EACzD,EAAO,CACd,EADY,KACLC,EAAAA,mBAAmB,CAAC,EAC7B,CACF,EAFoC,CAAC,qBCZjC,EACA,EACA,EACA,YAHkB,GACC,EACA,KACG,sEAiBnB,SAAS,EAAwB,CAAW,EAAuC,AACxF,IAAM,EAAmBvH,EAAAA,UAAU,AADE,CACD,CAA9B,cAA6C,CAC7C,EAAmBA,EAAAA,UAAU,CAAC,CAA9B,QAAuC,CAE7C,GAAI,CAAC,GAAoB,CAAC,EACxB,MAAO,CAAA,CAAE,CAGX,IAAM,CAJoC,CAIhB,CAJkB,CAIC,MAAM,CAAC,IAAI,CAAC,CAAnD,CAAoB,CAAmD,EAAE,CACzE,EAAoB,EAAmB,MAD4B,AACtB,CAAC,AADqB,IACjB,CAAC,CAAnD,CAAoB,CAAmD,EAAE,CAI/E,GACE,GACA,EAAkB,EANqD,CAAA,GAMrD,GAAW,GAC7B,EAAkB,CADD,EADjB,GAEkB,GAAW,EAE7B,GAH6B,CACZ,GAEV,EAGT,EAAsB,EAAkB,MAAM,AAJ5C,CAKF,EAAsB,EAAkB,IADxC,AAAuC,CAHR,CAIe,CAG9C,EAAyB,CAAA,CAAE,CAEvB,AAAC,GALL,AAAuC,CAMrC,EAAqB,CAAA,CAAE,EAGzB,IAAM,EAAkB,CAAC,AANzB,CAEuB,CAIyB,CAJvB,EACvB,EAIA,IADkC,AAC7B,CADD,AAAoD,GAC7C,EADgF,CAChF,EAAO,EAAa,CAC7B,IAAM,EAAU,CAAU,CAAC,AADA,EACI,CAAzB,AAAwB,AACxB,EAAS,GAAkB,CAA3B,AAA8B,EAAI,CAExC,AAFuC,GAEnC,GAAU,GAAV,AAAoC,EAFP,AAI/B,CAAsB,CAAC,CAAM,CAAC,CAAC,AAFc,CAEb,CAAA,AAFe,CAEX,EAEhC,IACF,CAHyC,AAGvB,CAAC,CALT,CAKY,CAAA,AAAI,CAAC,CAAM,CAAC,CAAC,CAAC,CAAE,EAAQ,CAD1B,EAAE,EACuB,EAE1C,GAAI,EAAS,CAClB,IADgB,AACV,EAAc,EAAY,GAAG,AAEnC,CAFoC,GAA9B,AAED,EAF0B,EAEtB,CAAA,CAAI,EAAY,MAAA,CAAS,CAAC,CAAX,AAAa,CAAA,EAAK,CAAC,CAAE,CAAC,EAAE,CAAE,CAChD,IAAM,EAAa,CAAW,CAAC,CAAC,CAAC,CAC3B,EAAW,CADX,EACuB,GAAvB,IAAqB,CAAU,CAErC,GAAI,GAAY,GAA0B,EAAtC,AAA0D,CAC5D,CAAsB,CAAC,EAAQ,CAAI,EACnC,CAAkB,CAAC,CADY,CACT,CAAA,AAAI,AADgB,CACf,EAAU,AAFqB,CAA5C,CAE+B,CAC7C,GADmC,CAAS,CAE9C,CACF,CACF,CACF,CACF,CAAC,CAWD,OATI,GACF,EAAgB,EAAmB,GAIjC,GACF,EAAgB,CANE,CAMiB,CANf,AACL,EAQV,CACT,CATqC,CAAkB,CAAC,EAIlC,EACH,AADK,IACa,CAAkB,CAAC,QAGzB,SAMxB,SAAS,AACd,CAAW,CACX,CAAc,EAEd,IAAM,EAAqB,EAAwB,GAEnD,GAAI,CAAC,EACH,EAH4D,CAAC,CAJvB,CAIlC,CAGG,EAAE,CAGX,GANkD,CAM5C,EAAuB,CAJN,CAIQ,CAC/B,AALyB,CAIb,GACP,IAAM,IAAA,CAAQ,EAAgB,CACjC,IAAM,EAAiBwH,EAAAA,GADQ,OACzB,aAAwC,CAAC,GAC3C,CAD+C,CAAC,CAC9B,CAAkB,CAAC,EAAe,EAAE,AACxD,EAAO,GADL,CACI,AAAK,CAAC,CACV,EAFmD,EAE/C,CAAE,WAAW,CACjB,SAAS,CAAE,EACX,EADe,MACP,CAAE,CAAkB,CAAC,EAAe,AACpD,CAAO,CAAC,AAEN,CAEA,OAAO,CACT,CANmD,IAKpC,oKC9FR,SAAS,EAAe,CAAI,CAAa,CAAS,EAAmB,AAC1E,GAAM,IADsB,GAE1B,CAAK,MACL,CAAI,YACJ,CAAU,MACV,CAAI,UACJ,CAAQ,OACR,CAAK,uBACL,CAAqB,aACrB,CAAW,aACX,CAAW,iBACX,CAAe,aACf,CAAW,oBACX,CAAkB,iBAClB,CAAe,MACf,CAAI,CACN,CAAI,EAEJ,EAA2B,EAAM,EAAF,CAFlB,IAE2B,CAAE,GAC1C,EAD+C,AACpB,CADqB,CACf,EAAF,IAAQ,CAAE,AADf,GAE1B,CAD6C,CAAC,AACnB,EAAM,EAAF,MADL,IACmB,CAAE,GAC/C,EAA2B,EAAM,EADP,AACK,CAD0B,CAAC,EACnB,CAAE,GACzC,CAD6C,CAAC,AACnB,EAAM,EAAF,MADL,EACiB,CAAE,GAE7C,EAAK,EAAD,CAFiD,CAAC,EAA5B,eAErB,CAAwBvF,EAAAA,KAAK,CAAC,EAAK,EAAD,mBAAsB,CAAE,EAAuB,CAAC,CAAC,CAEpF,IACF,CADO,CACF,CADI,CACL,GAAC,CAAQ,CAAA,CAAK,CAGhB,CANgF,GAOlF,EAAK,EAAD,OADa,EAAE,IACd,CAAkB,CAAA,CAAe,CAGpC,IAAI,AACN,EADQ,AACH,EAAD,EAAC,CAAO,CAAA,CAAI,CAGd,EAAY,MAAM,EAAE,CAAT,AACb,EAAK,EAAD,SAAC,CAAc,CAAC,GAAG,EAAK,EAAD,SAAY,EAAE,EAAG,EAAY,EAGtD,EAAY,KAHyC,CAGnC,EAAE,CAAT,AACb,EAAK,EAAD,SAAC,CAAc,CAAC,GAAG,EAAK,EAAD,SAAY,EAAE,EAAG,EAAY,EAGtD,EAAgB,KAHqC,CAG/B,EAAE,CAC1B,EAAK,EADY,AACb,aAAC,CAAkB,CAAC,GAAG,EAAK,EAAD,aAAgB,EAAE,EAAG,EAAgB,EAGlE,EAAY,MAAM,EAAE,CAAT,AACb,AAJmE,EAI9D,EAAD,SAAC,CAAc,CAAC,GAAG,EAAK,EAAD,SAAY,EAAE,EAAG,EAAY,EAG1D,EAAK,EAAD,GAHqD,aAGpD,CAAqB,CAAE,GAAG,EAAK,EAAD,gBAAmB,CAAE,GAAG,CAAA,CAAoB,AACjF,CAMO,SAAS,EAGd,CAAI,CAAQ,CAAI,CAAQ,CAAQ,EAAoB,AACpD,CAAI,CAAC,EAAI,CAAIA,CAAJ,CAAIA,KAAK,CAAC,CAAI,CAAC,EAAK,CAAE,CAAH,CAAa,CAAC,CAC5C,AAD6C,IAAJ,qBApFlC,SAA+B,AAAtB,CAA2B,CAAS,CAAI,EAAmB,IA+JjD,EAAc,GAAT,CAsBgB,AAtBH,EAAc,IA/JrB,IACnC,CAoLwD,EAA8C,CAXhG,MAzKA,EAyKA,WAzKE,CAAW,MAAE,CAAI,aAAE,CAAW,uBAAE,CAAA,CAAsB,CAAI,EAGlE,CAkHF,CArHwE,QAqH/D,AAAiB,CAAK,CAAS,CAAI,EAAmB,AAC7D,CAnHgB,EAmHV,OAAE,CAAK,AADU,MACR,CAAI,CAAE,MAAI,UAAE,CAAQ,OAAE,CAAK,iBAAE,CAAA,CAAgB,CAAI,EAE5D,EAFgE,IAE1D,CAAC,IAAI,CAAC,GAAO,EAAF,CAAC,GAAO,EAAE,CAC7B,EAAM,GAAD,EAAC,CAAQ,CAAE,GAAG,CAAK,CAAE,GAAG,EAAM,GAAD,EAAC,CAAA,CAAO,CAGxC,MAAM,CAAC,IAAI,CAAC,GAAM,CAAF,CAAC,IAAO,EAAE,CAC5B,EAAM,GAAD,CAAC,CAAO,CAAE,GAAG,CAAI,CAAE,GAAG,EAAM,GAAD,CAAC,CAAM,EAGrC,MAAM,CAAC,IAAI,CAAC,GAAM,CAAF,CAAC,IAAO,EAAE,CAC5B,EAAM,GAAD,CAAC,CAAO,CAAE,GAAG,CAAI,CAAE,GAAG,EAAM,GAAD,CAAC,CAAA,CAAM,CAGrC,MAAM,CAAC,IAAI,CAAC,GAAU,KAAF,CAAC,AAAO,EAAE,CAChC,EAAM,GAAD,KAAC,CAAW,CAAE,GAAG,CAAQ,CAAE,GAAG,EAAM,GAAD,KAAC,CAAA,CAAU,CAGjD,IACF,CADO,CACD,CADG,EACJ,EAAC,CAAQ,CAAA,CAAK,CAIjB,GAAkC,AAAf,KAAK,OAAxB,CAA+C,EAAE,GAAxB,IAAA,GAC3B,EAAM,GAAD,QAAC,CAAc,CAAA,CAAe,CAEvC,EA7ImB,EAAO,GAKpB,AALkB,CAAM,CAAC,EAKrB,EAAE,AACS,IAAO,CAAF,CAsJxB,EAAM,AAtJwB,CAAC,EAsJ1B,KAAC,CAAW,CACf,KAAK,CAAEyF,EAAAA,kBAAkB,CAAC,GAC1B,CAD8B,CAAC,CAC5B,EAAM,GAAD,KAAS,AACrB,CAAG,CAED,EAAM,GAAD,kBAAC,CAAwB,CAC5B,sBAAsB,CAAErC,EAAAA,iCAAiC,CAAC,GAC1D,CAD8D,CAAC,CAC5D,EAAM,GAAD,kBACZ,AADkC,CAC/B,GAEgBtB,EAAAA,WAAW,CAAC,GAEzB,CAF6B,AAC3B,CAD4B,CACVO,EAAAA,UAAU,AAC9B,CAD+B,GAAU,KAAF,CAAC,KAAY,GACjC,CAAC,EAAM,GAAD,QAAC,EAA8B,aAAa,EAAE,CAA9B,EAAM,GAAD,CAAC,GACjD,EAAM,GAAD,QAAC,CAAc,CAAA,CAAe,EAQN,EAxKP,GAwKY,CAxKL,CAAF,CA0K7B,EAAM,GAAD,IA1KqC,CAAC,GA0KrC,CAAc,EAAM,GAAD,QAAC,CACtB,KAAK,CAAC,OAAO,CAAC,EAAM,GAAD,QAAY,EAC7B,EAAM,GAAD,QAAC,CACN,CAAC,EAAM,GAAD,QAAY,CAAA,CACpB,EAAE,CAGF,IACF,EAAM,GAAD,EADQ,EAAE,IACT,CAAc,EAAM,GAAD,QAAY,CAAC,MAAM,CAAC,EAAW,CAAC,CAIvD,AAAC,EAAM,GAAD,QAAY,CAAC,MAAM,EAAE,AAC7B,OAAO,EAAM,GAAD,QAAY,CAjDK,EArIP,EAqIqB,CAAT,CArIL,CAAF,CAsIvB,EAAoB,CAAC,GAAI,CADyB,CACnB,CAtIK,AAqIoC,CArInC,CAsIP,MAA9B,EAA+B,EAAe,EAAE,CAAC,EAAE,CAAG,EAAY,CACxE,EAAM,GAAD,GADkE,KACjE,CAAc,EAAkB,MAAA,CAAS,OAAoB,CAA9B,CAGN,EAzIP,EAyIqB,CAAT,CAzIL,CAAF,AAsI+C,CAI5E,AAJ+C,EAIzC,GAAD,YAD6D,EAA4C,AAzI1D,CAAC,GA0I/C,CAAwB,CAC5B,GAAG,EAAM,GAAD,kBAAsB,CAC9B,GAAG,CAAqB,AAC5B,CAAG,AA5IH,yBA+FO,SAAS,AAAqB,CAAc,CAAqB,CAAY,EAAgC,AAClH,IAAM,EAAYmD,EAAAA,OADgB,OACF,EAAE,CAAC,YAAY,EAAE,CAGjD,OAFA,GAAkB,EAAe,EAAW,EAAe,KAAjB,AAA1C,GAAgC,IAA0B,AAAa,EAAE,CAAC,CAC1E,GAAgB,EAAe,EAAW,EAAa,GAAvD,EAAwC,GAAV,EAAwB,EAAa,EAAE,CAAC,CAC/D,CACT,QADkB,2QCCX,SAAS,EAAmB,CAAK,CAAS,CAAO,EAAuB,AAC7E,GAAM,QAD0B,KACxB,CAAW,SAAE,CAAO,MAAE,CAAI,gBAAE,CAAA,CAAe,CAAI,EAIvD,EAAM,GAJwD,AAIzD,QAAC,CAAc,EAAM,GAAD,QAAC,EAAe,GAAepD,EAAAA,MAAf,aAAkC,CAEvE,CAAC,EAAM,GAAD,IAAC,EAAW,IACpB,EAAM,CADqB,EACtB,AADwB,IACvB,CAAU,CAAA,CAAO,CAGrB,CAAC,EAAM,GAAD,CAAC,EAAQ,IACjB,AADqB,EACf,AADiB,GAClB,CAAC,CAAO,CAAA,CAAI,CAGnB,IAAM,EAAU,EAAM,GAAhB,AAAe,IAAQ,CACzB,GAAS,GAAA,CAAF,CAAS,IAClB,EAAQ,GAAA,CAAMrC,CAAP,CAAOA,EADkB,EAAE,IACZ,CAAC,EAAQ,GAAG,CAAE,CAAN,CAAoB,CAAC,CAGjD,GACF,EAAM,GAAD,MADW,AACD,EAAE,AADC,MACK,EAAE,OAAO,CAAA,AAAC,IAC3B,EAAU,GADiB,EACZ,EADyB,AAC/B,AAAQ,CAEnB,EAAU,KAAA,CAAQA,CAAT,CAASA,QAAQ,CAAC,EAAU,KAAK,CAAE,CAAR,CAAsB,CAAC,AAE/D,CAAC,CAAC,AAEN,CAKO,SAAS,EAAc,CAAK,CAAS,CAAW,EAAqB,AAE1E,IAAM,EAFqB,AAEAgG,EAAAA,cAArB,SAA4C,CAAC,GAEnD,EAAM,GAAD,GAFyD,CAAC,EAEhD,EAAE,MAAM,EAAE,OAAO,CAAA,AAAC,IAC/B,EAAU,GADqB,IAAa,AACnC,GAAW,EAAE,MAAM,EAAE,OAAO,CAAA,AAAC,IAChC,CADgC,CAC1B,GADmC,AACpC,KAAS,EAAE,AAClB,GAAM,EAAD,MAAC,CAAW,CAAkB,CAAC,EAAM,GAAD,MAAU,AAAD,CAEtD,CAAC,CAAC,AACJ,CAAC,CAAC,AACJ,CAKO,SAAS,EAAe,CAAK,EAAe,AAEjD,IAAM,EAA6C,CAAA,CAAE,CAFzB,AAgB5B,GAbA,EAAM,GAAD,KADmB,CACT,EAAE,MAAM,EAAE,OAAO,CAAC,AAAD,IAC9B,EAAU,GADqB,IAAa,AACnC,GAAW,EAAE,MAAM,EAAE,OAAO,CAAA,AAAC,IAChC,CADgC,CAC1B,GADmC,AACpC,KAAS,EAAE,CACd,EAAM,GAAD,KAAS,CAChB,CADkB,AACA,CAAC,EAAM,GAAD,KAAS,CAAA,CAAI,EAAM,GAAD,KAAS,CAC1C,EAAM,GAAD,KAAS,EAAE,CACzB,CAAkB,CAAC,EAAM,GAAD,KAAS,CAAA,CAAI,EAAM,GAAD,KAAC,AAAQ,EAErD,OAAO,EAAM,GAAD,KAAS,CAEzB,CAAC,CAAC,AACJ,CAAC,CAAC,CAE6C,CAAC,EAAE,CAA9C,MAAM,CAAC,IAAI,CAAC,GAAoB,MAAA,CAClC,OAIF,CALkC,CAK5B,AAL6B,GAK9B,OAAC,CAAa,EAAM,GAAD,OAAC,EAAc,CAAA,CAAE,CACzC,EAAM,GAAD,OAAW,CAAC,MAAA,CAAS,EAAM,GAAD,OAAW,CAAC,MAAA,EAAU,EAAE,CACvD,IAAM,EAAS,EAAM,EAAf,CAAc,OAAW,CAAC,MAAM,CACtC,MAAM,CAAC,OAAO,CAAC,GAAoB,OAAO,CAAC,CAAC,CAAC,EAAU,EAAS,CAA/B,CAAC,EAAmB,AACnD,CADmE,CAAN,AACtD,IAAD,AAAK,CAAC,CACV,IAAI,CAAE,WAAW,CACjB,SAAS,CAAE,QAAQ,GACnB,CACN,CAAK,CAAC,AACJ,CAAC,CAAC,AACJ,CAgIA,EAnIc,EAmIR,EAAsD,CAC1D,MAAM,CACN,OAAO,CAFe,AAGtB,OAAO,CACP,UAAU,CACV,MAAM,CACN,aAAa,CACb,oBAAoB,CACtB,8FAlCO,SAAS,AACd,CAAI,EAEJ,GAAK,CAAD,GAAK,EAAE,SAKX,CAa6B,EAbH,CAAtB,CAa6B,EAbH,AAa4E,CAb3E,CARa,CAQX,MAcV9F,EAAAA,KAAA,EAdE,AAcO,AAAgB,UAAU,SAAnB,GAehC,CAfgC,KAe1B,CAAC,IAAI,CAzBK,AAyBJ,GAAM,CAzBE,AAyBJ,CAzBK,AAyBJ,EAzBM,AAyBD,CAAA,AAAC,GAAA,AAAO,EAAmB,QAAQ,CAAC,GAAA,CA5BxD,CAAE,AA4BkF,CAAC,CAAvC,YA5B9B,CAAE,CAAA,CAAM,CAS1B,EACT,EADa,eAhSN,SACL,AADc,CACP,CACP,CAAK,CACL,CAAI,CACJ,CAAK,CACL,CAAM,CACN,CAAc,CANY,KA8KO,EAAc,EAtK/C,CAsKsC,EAtKhC,WAsKyD,EAAkB,GAtKzE,EAAiB,CAAC,CAAE,UAApB,SAAoB,GAAsB,GAAA,CAAM,CAAI,EACtD,EAAkB,CACtB,EAFiE,CAE9D,CAAK,CADI,AAEZ,QAAQ,CAAE,EAAM,GAAD,KAAC,EAAY,EAAK,EAAD,MAAC,EAAYT,EAAAA,KAAK,EAAE,CACpD,SAAS,CAAE,EAAM,GAAD,MAAC,EAAaM,EAAAA,sBAAsB,EAAE,AAC1D,CAAG,CACK,EAAe,EAAK,EAAD,MAAnB,IAAoB,EAAgB,EAAQ,KAAD,OAAa,CAAC,GAAG,CAAA,AAAC,CAAA,EAAK,CAAC,CAAC,IAAI,CAAC,CAE/E,EAAmB,EAAU,KACH,CADC,CA+JvB,AA/JgC,CAAC,EACD,GAAF,AA8Jb,CA/JH,KA+JG,CAAS,CAAC,CA9JiB,CAAC,AA8J7B,AAAa,CAC/B,EAAM,GAAA,AAAD,CAAO,EAAM,GAAD,AAAC,EAAO,CAAA,CAAE,CAC3B,EAAM,GAAD,AAAI,CAAC,YAAA,CAAe,CAAC,GAAI,EAAM,GAAD,AAAI,CAAC,YAAA,EAAgB,EAAE,CAAC,EAAE,CAAG,EAAiB,EA9J/E,GACF,EAAO,CADC,EAAE,CACC,AAAL,CAAM,EA6JoE,kBA7JhD,CAAE,KAAK,CAAC,EAIvB,IAAf,EAAM,GAAD,AAAmB,CAAlB,CAAoB,CAC5B,EAAc,EAAU,EAAQ,IAAV,CAAS,EAAlB,IAA8B,CAAC,CAK9C,IAAM,EAkOR,AAlOqB,QAAb,CAkOC,AAAcI,CAAK,CAAqB,CAAc,CAlO7B,CAkO8E,AAC9G,GAAI,CAAC,EACH,EAFkB,KAEXA,EAGT,GAJmB,CAIb,CAHQ,AADO,CAIFA,EAAQA,EAAM,GAAd,CAAb,CAA0B,AAAM,EAAC,CAAI,IAAID,EAAAA,KAAK,CAEpD,CAFsD,MACtD,EAAW,MAAM,CAAC,CAAR,EACH,CACT,EA1OmC,EAAO,EAAK,CAAP,CAAM,CAyO3B,CADe,CAAC,SAxO0B,CAAC,CAExD,EAAK,EAAD,OAAU,EAAE,AAClByF,EAAAA,qBAAqB,CAAC,EAAU,EAAK,EAAD,EAAN,KAAgB,CAAC,CAGjD,IAAM,EAAwB,EAAS,EAAO,EAAhB,EAAe,WAAvC,GAA0D,EAAC,CAAI,EAAE,CAKjE,EAAOC,EAAAA,oBAAoB,CAAC,EAAgB,GAE5C,EAAc,CAAC,GAAI,CAFmC,CAAC,AAE/B,CAFkB,CAEnB,CAAvB,QAAwB,EAAe,EAAE,CAAC,EAAE,CAAG,EAAK,EAAD,SAAY,CAAC,CAClE,EAAY,MAAM,EAAE,CAAT,AACb,EAAK,EAAD,SAAC,CAAc,CAAA,CAAW,CAGhCC,EAAAA,qBAAqB,CAAC,EAAU,GAEhC,CAFoC,CAAC,CAAP,CAExBC,EAAkB,IACnB,KAEA,EAAK,EAAD,YAFiB,CAED,CACxB,CASD,MAAO,CALqB,AACb,EADkB,EAAD,CAKnB,CALoB,GAA8D,IAArD,AAAyD,EAApD,EAAD,EAAC,CAAiC,UAAA,CAE5ER,EAAAA,mBAAmB,CAAC,GACpBS,EAAAA,GAD4B,kBACP,CAACD,EAAiB,EAAU,EAAI,CAAC,CAE5C,EAFqC,EAEjC,CAAA,AAAC,GASjB,CAXuC,AAGnC,GAKF,AANsB,AACjB,EAAE,AAKQ,GAGa,AAHV,CAAC,QAAL,CAGZ,OAAO,GAA+B,EAAiB,CAAC,EAAE,AACrD,AAsHb,MAvHe,GAA+B,AAuHrC,AAAe,CAAK,CAAgB,CAAK,CAAU,CAtHjC,AAsH2C,EAAwB,AAC5F,GAAI,CAAC,EACH,CAFmB,EACX,EAAE,EACH,IAAI,CAGb,IAAM,EAAoB,CACxB,GAAG,CAAK,CACR,EAFc,CAEV,EAAM,GAAD,QAAC,EAAe,CACvB,WAAW,CAAE,EAAM,GAAD,QAAY,CAAC,GAAG,CAAA,AAAC,CAAA,GAAA,AAAM,CACvC,GAAG,CAAC,CACJ,GAAI,CAAC,CAAC,IAAA,EAAQ,CACZ,IAAI,CAAE/C,EAAAA,SAAS,CAAC,CAAC,CAAC,IAAI,CAAE,EAAO,EACzC,CACA,AAFuC,AAC9B,CACF,AADG,CACF,CAAC,AACT,CAAK,CAAC,AACF,EAJ+C,CAI3C,AAJ4C,EAItC,GAAD,CAAC,EAAQ,CAChB,IAAI,CAAEA,EAAAA,SAAS,CAAC,EAAM,GAAD,CAAK,CAAE,EAAO,EACzC,CADuC,AAClC,CAAC,AACF,GAAI,EAAM,CAFqC,CAAC,CAEvC,KAAC,EAAY,CACpB,QAAQ,CAAEA,EAAAA,SAAS,CAAC,EAAM,GAAD,KAAS,CAAE,EAAO,EACjD,CAD+C,AAC1C,CAAC,AACF,GAAI,EAAM,CAF6C,CAAC,CAE/C,EAAC,EAAS,CACjB,KAAK,CAAEA,EAAAA,SAAS,CAAC,EAAM,GAAD,EAAM,CAAE,EAAO,EAC3C,CAAK,AACL,AAFyC,CACnC,AACH,CAsCD,KAxCmD,CAAC,CAWhD,EAAM,GAAD,KAAS,EAAE,KAAA,EAAS,EAAW,QAAD,AAAS,EAAE,CAChD,EAAW,QAAD,AAAS,CAAC,KAAA,CAAQ,EAAM,GAAD,KAAS,CAAC,KAAK,CAG5C,EAAM,GAAD,KAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAC7B,EAAW,QAAD,AAAS,CAAC,KAAK,CAAC,IAAA,CAAOA,EAAAA,SAAS,CAAC,EAAM,GAAD,KAAS,CAAC,KAAK,CAAC,IAAI,CAAE,EAAO,EAAU,CAAC,AAAb,EAK3E,EAAM,GAAD,EAAM,EAAE,CACf,EAAW,KAAA,CAAQ,EAAT,AAAe,GAAD,EAAM,CAAC,GAAG,CAAA,AAAC,IAAA,AAC1B,CACL,GAFuC,AAEpC,CAAI,CACP,GAAI,EAAK,EAAD,EAAC,EAAQ,CACf,IAAI,CAAEA,EAAAA,SAAS,CAAC,EAAK,EAAD,EAAK,CAAE,EAAO,EAC5C,CAD0C,AACjC,CACT,AADU,CACH,CACF,CAAC,CAOA,EAVgD,AAU1C,CAV2C,EAU5C,KAAS,EAAE,KAAA,EAAS,EAAW,QAAD,AAAS,EAAE,CAChD,EAAW,QAAQ,AAAT,CAAU,KAAA,CAAQA,EAAAA,SAAS,CAAC,EAAM,GAAD,KAAS,CAAC,KAAK,CAAE,CAAC,CAAE,EAAU,CAAC,CAGrE,CACT,EArL4B,EAAK,CAAF,CAAkB,GAoL9B,AAlLR,EAEX,CAFc,MAFiC,OAAqB,CAAC,8NCgC9D,SAAS,EAAe,CAAO,CAAW,CAAmB,EAA0B,AAC5F,IAAM,EAAQpB,CADc,CACdA,CAAR,cAAuB,EAAE,CACzB,EAASQ,EAAAA,EAAT,OAAkB,EAAE,CAC1B,GAAK,CAAD,CAEG,GAAK,CAFD,AAEA,CAAQ,CAFN,GAEK,UAAe,CAG/B,CAHiC,MAG1B,EAAO,IAAD,UAAe,CAAC,EAAS,EAAqB,GAAvB,EAA4B,CAAC,EAFjEjE,EAAAA,OAEyD,IAFzDA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,MAFhGF,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAO1E,OAAOqB,EAAAA,KAAK,EAAE,AAChB,CA2DO,eAAe,EAAM,CAAO,EAAR,AAAqC,AAC9D,IAAM,EAAS0C,EAAAA,EAAT,OAAkB,EAAE,QAC1B,AAAI,EACK,EAAO,EADN,EAAE,AACG,CAAM,CAAC,IAEtBjE,EAAAA,CAF6B,CAAC,SAE9BA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAC7D,OAAO,CAAC,OAAO,EAAC,GACzB,CAUO,CAXuB,CAAC,aAWT,EAAM,CAAO,EAAR,AAAqC,AAC9D,IAAM,EAAS+D,EAAAA,EAAT,OAAkB,EAAE,QAC1B,AAAI,EACK,EAAO,EADN,EACK,AADH,CACS,CAAC,IAEtBjE,EAAAA,CAF6B,CAAC,SAE9BA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAC7E,OAAO,CAAC,OAAO,EAAC,GACzB,CA8DO,CA/DuB,CAAC,OA+Df,IACd,IAAM,EADkB,AACDyG,EAAAA,CADU,SAC3B,OAAkC,EAAE,CAGpCuB,EAFezE,AAEL,EAFKA,KAEf,KAAsB,KAFQ,EAAE,CAET,UAAU,EAAC,EAAK,EAAe,UAAU,EAAX,AAAa,CACpEyE,GACFE,EAAAA,IADS,EAAE,MACC,CAACF,GAEf,IAGA,EALsB,AAKP,CALQ,SAKE,EAHP,AAGJ,AAAa,AAC7B,CAKA,CATsB,QASb,IACP,IAAM,EAAiBvB,EAAAA,MADE,GAAS,CAC5B,OAAkC,EAAE,CACpC,EAAS1C,EAAAA,EAAT,OAAkB,EAAE,CACpB,EAAU,EAAe,GAAzB,OAAmC,EAAX,AAAa,AACvC,IAAW,GAAX,AACF,EAAO,CADY,EAAE,CACf,UAAe,CAAC,EAE1B,KAFiC,CAAC,eAhE3B,SAAS,AAAkB,CAAQ,EAAwB,AAChE0C,EAAAA,YAD+B,KACd,EAAE,CAAC,iBAAiB,CAAC,EACxC,MADgD,CAAC,6BA9M1C,SAAsB,AAAb,CAAkB,CAAS,CAAI,EAAsB,AACnE,OAD0B,AACnBlD,EAAAA,eAAe,EAAE,CAAC,YAAY,CAAC,EAAO,EAC/C,CAD6C,CAAM,CAAC,kBA3B7C,SAAS,AAAiB,CAAS,CAAW,CAAI,EAA+C,AACtG,OAAOA,EAAAA,EADuB,aACR,EAAE,CAAC,gBAAgB,CAAC,EAAWsE,EAAAA,KAAF,yBAAgC,CAAC,GACtF,CAD0F,CAAC,CAAC,gBAUrF,SAAS,AAAe,CAAO,CAAU,CAAc,EAA2C,AAGvG,IAAM,EAAkC,GAHZ,AAGtB,KAAkC,EAA1B,OAAO,EAA8B,OAAiB,EAC9D,EAAiC,CADlB,CACf,CAD6C,EAA0B,GACtC,EAA1B,OAAO,EAA8B,YAA9B,IAAgC,CAAA,CAAe,MAAI,EACvE,IADoD,GAA4B,AACzEtE,EAAAA,eAAe,EAAE,CAAC,cAAc,CAAC,EAAS,EAAO,EAC1D,CADiD,AAAO,CAAM,CAAC,gBAiSxD,SAAS,AAAe,GAAG,AAAY,CAAK,EAAQ,AAEzD,AAAI,EACF,CADK,EAAE,CAMT,EAR4B,CAS9B,GANc,EAAE,UAKI,EAAE,gCA5Ff,SAAS,EACd,IAAM,EAASQ,CADQ,CACRA,EADoB,AAC7B,OAAkB,EAAE,CAC1B,OAAO,GAAQ,GAAF,OAAY,EAAE,CAAC,OAAA,IAAY,GAAS,CAAC,CAAV,AAAW,GAAQ,GAAF,SAAc,EACzE,AAD2E,kBAPpE,SAAS,EACd,MAAO,CAAC,CAACA,EAAAA,CADkB,GAAY,KACrB,EAAE,AACtB,gBAjHO,SAAS,EACd,OAAO0C,EADkB,AAClBA,GADyC,cACxB,EAAE,CAAC,WAAW,EAAE,AAC1C,eAxEO,SAAoB,AAAX,CAAe,CAAU,CAAO,EAA2C,AACzFA,EAAAA,GADwB,cACP,EAAE,CAAC,UAAU,CAAC,EAAM,EAAF,AACrC,KAD8C,CAAC,gBAsDxC,SAA2B,AAAlB,CAAgC,EAAmC,AACjFA,EAAAA,YAD+B,KACd,EAAE,CAAC,iBAAiB,CAAC,EACxC,YADsD,CAvC/C,AAuCgD,SAvCvC,AAAS,CAAG,CAAU,CAAK,EAAe,AACxDA,EAAAA,CADsB,gBACL,EAAE,CAAC,QAAQ,CAAC,EAAK,CAAF,CAClC,GADyC,CAAC,UAVnC,SAAS,AAAU,CAAM,EAC9BA,AAD8C,EAC9CA,IADuB,aACN,EAAE,CAAC,SAAS,CAAC,EAChC,IADsC,CAAC,MA4BhC,SAAgB,AAAP,CAAU,CAAU,CAAK,EAAmB,AAC1DA,CADoB,CACpBA,iBAAiB,EAAE,CAAC,MAAM,CAAC,EAAK,CAAF,CAChC,GADuC,CAAC,QAbjC,SAAS,AAAQ,CAAI,EAAsC,AAChEA,EAAAA,EADqB,eACJ,EAAE,CAAC,OAAO,CAAC,EAC9B,EADkC,CAAC,SAoB5B,SAAS,AAAQ,CAAI,EAAqB,AAC/CA,EAAAA,EADqB,eACJ,EAAE,CAAC,OAAO,CAAC,EAC9B,EADkC,CAAC,cAgK5B,SAAS,AAAa,CAAO,EAClC,AAD8D,IACxD,EAAiBA,EAAAA,CADG,SACpB,OAAkC,EAAE,CAEpC,MAAE,CAAA,CAAK,CAAIe,EAAAA,oBAAoB,CAAC,EAAgBjE,EAAAA,UAAF,KAAiB,EAAE,CAAC,CAGlE,WAAE,CAAA,CAAU,CAAI3D,EAAAA,UAAU,CAAC,SAAA,EAAa,CAAA,CAAE,CAE1CoI,EAAUC,EAAAA,KAAV,MAAqB,CAAC,MAC1B,EACA,EADI,CACA,GAAa,MAAb,KAAe,CAAA,CAAW,CAAC,AAC/B,GAAG,CAAO,AACd,CAAG,CAFoB,AAEnB,CAGI,EAAiB,EAAe,UAAhC,AAA0C,EAAX,AAAa,CAUlD,OATI,GAAgB,MAAA,GAAW,EAAb,EAAiB,EAAE,AACnCxG,EAAAA,aAAa,CAAC,EAAgB,CAAE,MAAM,CAAE,IAAZ,IAAY,CAAU,CAAC,CAGrD,IAGA,EAAe,IAHL,EAAE,IAGa,CAACuG,CAAZ,EAEPA,CACT,KAHmC,CAAC,EAEpB,QAjIT,SAAS,AACd,CAAW,CACX,CAAQ,CACR,CAAmB,EAEnB,IALyB,KAKhB,IACP,IAOI,EAPE,CADY,CACA,EADM,AACS,KAA3B,OAA0B,AAOV,CAPa,EAAa,MAAM,CAAE,EAAV,WAAU,CAAe,CAAE,GACnE,EAAM5G,CAAN,CAAMA,YADgF,CAAC,KAC/D,EAAE,CAEhC,SAAS,EAAc,CAAM,EAC3B,AAD8D,EAC/C,MADK,MACN,CAAG,EAAa,MAAM,GAAR,UAAU,EAAW,OAAF,CAAU,CAAEA,EAAAA,kBAAkB,GAAK,CAAA,CAAK,CAAL,AAAM,AAC1F,CAGA,GAAI,CACF,EAAqB,GACvB,CAAA,AAAE,IAD6B,EACtB,AADwB,CACvB,CAAE,CAEV,GAHA,GAEA,EAAc,OAAO,CAAC,CAChB,CAAC,AACT,CAFe,OAIXY,AAAJ,EAAIA,UAAU,CAAC,GACN,EAAmB,IAAI,CAAA,AAC5B,IACE,CADG,CACW,EAHa,CAAC,CAGV,CAHY,AACT,AAEF,CACZ,CAAC,EACT,AACD,EAHe,EAKb,CAFG,KACH,EAAc,OAAO,CAAC,CAChB,CAAC,AACT,CAFe,AAEd,GAGL,EAAc,IAAI,CAAC,CAEZ,EACT,CAEA,EALe,KAKR8F,EAAAA,MAHoB,YAGF,CAAC,IAAO,GAAqB,YAAA,CAAeC,EAAAA,CAAjB,YAA8B,CAAC,GAAe,IACpG,IADgG,CAAA,EAAe,EAAE,CAAC,CAAC,uFCrMnH,SAAS,EAAmB,CAAG,EAAyB,AACtD,IAAM,EAAW,EAAI,CAAD,IADK,GACJ,CAAW,CAAC,EAAA,EAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CACA,EAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CACA,MAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,AACA,sBAPD,4CAsCC,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAtBA,EAuBA,IAvBA,GAuBA,GAAA,CAAA,EAAA,AA5BA,EA4BA,CAAA,EAAA,CAAA,CA5BA,AA4BA,CAAA,CA5BA,AA4BA,CA5BA,AA4BA,CADA,OA3BA,AA4BA,CA5BA,GA4BA,AA5BA,CAAA,CAAA,KAAA,CAAA,IAKA,CACA,cAAA,EAAA,EACA,CAAA,CAEA,EAAA,CAAA,QAAA,EAAA,CAGA,AANA,EAMA,IAAA,MAAA,CAAA,AAgBA,EAhBA,CAAA,AAgBA,QAhBA,EAGA,IACA,EAAA,CADA,EAAA,CACA,SAAA,CAAA,CAAA,EAAA,AAYA,EAZA,IAAA,CAAA,AAYA,CAAA,AAZA,CAYA,CAZA,EAAA,KAAA,EAAA,EAAA,EAGA,IAAA,eAAA,CAAA,GAAA,GAAA,CAAA,IAAA,EAAA,EAUA,AADA,4BAIA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAAnD,EAAAuD,EAAAA,CAAA,MAAA,CAAA,EADA,CAEA,GAAA,CAAAvD,AADA,CAAA,CAEA,GADA,EAAA,CACA,EAAA,CAGA,IAAA,EAAA,CAAA,EAAA,EAAAA,CAAA,EAAA,EAAA,CAAA,UAAA,IAAA,CAAA,CAEA,EAAA,CAAA,IAAA,EAAAC,EAAAA,GAAA,QAAA,CAAAD,GAAA,CAAA,CACA,AADA,CAAA,GACA,IAAA,GAAA,EAAA,EACA,GAAA,KAAA,EAAA,CADA,AACA,CADA,EACA,AAIA,SAAA,EAAA,CAAA,EAIA,CAJA,EAIA,MAAA,GAAA,EAAA,CAAA,AACA,IAAA,EAAA,EAAA,IAAA,CACA,GAAA,CAAA,EADA,AAEA,EADA,EAAA,KAGA,EAAA,EAAA,EAAA,EAAA,CACA,GAAA,CAAA,MAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,EAEA,EAAA,EAAA,GAAA,EAAA,CACA,GAAA,CAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAA,CAEA,CAAA,KACA,CADA,EACA,CAAA,CAAA,EAAA,OAAA,WAAA,CAAA,GAAA,CAAA,EAAA,kBAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAIA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,AACA,AADA,WAAA,oHC1EtB,EAAkC,EAAA,CA6FxC,SAAS,EAAiB,CAAM,CAAU,CAAW,CAAe,CAAgB,AA7FzD,EA6FmF,AACnH,GAAI,CAAgB,CAAC,EAAY,AADH,IACO,CAAC,CAAE,CACtC9E,EAAAA,AAD8B,WAC9B,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,sDAAsD,EAAE,EAAY,IAAI,CAAC,CAAA,CAAA,CACA,CADN,KAEM,CAcA,GAbA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA,EAGA,CAHA,CAGA,OAHA,CAGA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,GACA,EAAA,SAAA,EAAA,CACA,EAAA,IAAA,CAAA,EAAA,IAAA,CAAA,EAIA,EAJA,AAIA,GAJA,EAIA,EAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EACA,EADA,AACA,KAAA,CAAA,GAAA,AAGA,GAHA,CAAA,MAGA,EAAA,OAAA,EAAA,SAAA,MAAA,CAAA,CACA,IAAA,EAAA,EAAA,IAAA,KAAA,MAAA,CAAA,IAAA,CAAA,GACA,EAAA,EAAA,CAAA,CAAA,EADA,CAAA,aACA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CACA,CAEA,EAHA,CAAA,AAGA,CAHA,SAGA,EAAA,OAAA,EAAA,SAAA,GAAA,CAAA,CACA,IAAA,EAAA,EAAA,IAAA,KAAA,GAAA,CAAA,IAAA,CAAA,GAEA,EAAA,MAFA,AAEA,CAFA,AAEA,MAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CACA,EADA,AACA,CADA,AACA,EAAA,IAAA,AACA,CAAA,CAAA,CAEA,EAHA,AAGA,IAAA,aAAA,CAAA,EACA,CAEAF,EAAAA,IAHA,CAAA,MAGA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,CAAA,uBAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CAAA,AACA,EADA,gBAIA,SAAA,CAAA,EAAA,AACA,IAAA,EAAA+D,EAAAA,EAAA,CADA,MACA,EAAA,CAEA,GAAA,CAAA,EAAA,CACAjE,EAAAA,CADA,UACA,EAAAE,EAAAA,KAAA,CAAA,IAAA,CAAA,CAAA,wBAAA,EAAA,EAAA,IAAA,CAAA,IAAA,iCAAA,CAAA,CAAA,CACA,MACA,CAEA,EAAA,IAAA,UAAA,CAAA,EACA,SADA,CAAA,iBAvDhG,SAAS,AAAuB,CAAM,CAAU,CAAY,EAAuB,AACxF,IAAK,IAAM,KAAe,EAEpB,EAH8B,CAGjB,CAFR,MAA2B,CAAE,AAEvB,KAAe,EAAE,AAC9B,EAAY,SAAD,IAAc,CAAC,EAGhC,IAHsC,CAAC,iBA0DgE,SAAA,CAAA,EAAA,AACA,OAAA,CACA,CADA,KADA,qBA7GhG,SAAS,AACd,CAAO,EAEP,IAQI,IARE,EAAsB,EAAQ,IAQpB,CARmB,EAHC,YAGA,EAAuB,EAAE,CACvD,EAAmB,EAAQ,KAAD,OAA1B,AAAuC,CAS7C,GANA,EAAoB,OAAO,CAAE,AAAD,IAC1B,EAAY,GADK,EAAqB,IAC3B,CADgE,OAC/D,EAAoB,CAClC,CAAC,CAAC,CADoC,AAKlC,KAAK,CAAC,OAAO,CAAC,GAChB,EAAe,CAAC,GAAG,KAAwB,CAA3C,CADgC,AAC4B,CAD3B,EAAE,GAE9B,GAAI,AAA4B,GADC,EAAqB,AAAnB,KACO,SAA/B,EAAiC,CACjD,IAAM,EAA2B,EAAiB,GAClD,EAAe,AAFC,KAEI,CAAC,GAD4B,CACjD,GAA4B,CADyC,AACxC,CADvB,AAAgE,EACb,EAA2B,CAAC,EAAyB,AAChH,MACE,CADK,CACU,EAGjB,MALuD,CAKhD,AA1CD,AAqCiD,CAErD,CAvCyD,AAqCA,CArCA,CAAE,CAE7D,AAmC+G,AAKvF,EAxCX,GAqCuB,IArChB,CAAC,AAAC,CAwCC,CAxCX,AAwCwB,CAAC,AA1Cb,CAGtB,GAAM,MAAE,CAAA,CAD2B,AACtB,CAAI,EAEX,EAHkE,AAGH,CAAkB,CAAC,EAAK,CAIzF,CAJwF,GAInE,EANO,AAMU,GAJpB,OAIlB,IAAoB,AAAiB,GAAC,EAAqB,EAAgB,aAAD,IAAkB,EAAE,CAIlG,CAAkB,CAAC,EAAI,CAAI,CAAJ,AAAI,CAAe,AAC5C,CAAC,CAAC,CAEK,MAAM,CAAC,MAAM,CAAC,EA2BvB,gBA3ByC,CAAC,oDAmCnC,SAAS,AAAkB,CAAM,CAAU,CAAY,EAC5D,AAD+F,IACzF,EAAqC,CAAA,CAAE,CAS7C,GAV+B,IAG/B,EAAa,EAFS,KAEF,CAAC,AAAC,EAAV,EAEN,GACF,EAAiB,EAAQ,AAHI,EAGS,EAAf,AADV,AAGjB,CAL+D,AAK9D,CAHkB,AAGjB,CAEK,CACT,GAL0C,CAApB,MAAsC,CAAC,IAIpC,KC/BlB,SAAS,EAAkB,CAAQ,EAAwC,AAChF,MACE,AAAoB,MAFS,EAET,SAAb,GACK,IAAA,CADL,CACP,GACA,CAAC,IADD,CACM,CAAC,OAAO,CAAC,IACf,IADuB,CAAA,CACjB,CAAC,IAAI,CAAC,GAAU,KAAF,CAAC,EAAS,CAAC,OAAO,CAE1C,CAcO,SAAS,EACd,CAAQ,CACR,CAAW,EAEX,GAAM,OAAE,CAAK,MAAE,CAAA,CAAK,CAAI,EAAkB,GAAY,EAAW,CAJhB,AAIkB,EAAjB,CAAA,EAAI,AAAkB,CAAE,EAAU,CAA3C,GAA+C,EAAN,IAAQ,CAAA,CAAW,CAC/F,EAAiB,AA4DzB,IA7D4F,KA6DnF,AAAuB,CAAK,EAAuC,AAC1E,AA7DM,IA6DA,EACJ,AAAiB,IA9D0B,OA6DvC,EADuB,IAEpB,EACH,SACA,AAAiB,kBAAV,EACL,GADK,OAEY,QAAA,EAAjB,EAA6B,KAAtB,GAAuB,EAAvB,IAA6B,CAAC,KAAK,CAAC,GAIzC,EAJ8C,EAI1C,CAHJ,MAAM,CAAC,SAAS,CAAC,GACf,EADoB,QAEpB,SAEZ,GAAI,EAOF,MAAO,KAPQ,EAAE,AAOR,EAAO,GAAF,CAAM,CAAE,CAAA,CAAe,AAEzC,EAhFgD,GACxC,EAD6C,AAC/B,CADgC,EACR,CAAxB,KAAd,EAAsC,EAAhB,OAAO,EAAoB,EAApB,IAAsB,CAAA,CAAK,CAAI,CAAT,AAAS,CAAE,CACpE,GAAI,EACF,MAAO,CAAE,GAAG,CAAc,CADV,AACY,EADV,CACa,CAAA,CAAa,CAG9C,GAAI,CAAC,GAAgB,AAAgB,QAAhC,GAAgB,KAAgB,WAA8B,IAAV,EACvD,GADuD,AAAmB,CAAC,CAAE,EAO/E,IAAI,EAAc,EAAE,CACpB,GAAI,CACF,EAFE,AAEY,IAAI,CAAC,IAAnB,KAA4B,CAAC,IAAU,CAAL,CAAA,AAAO,AAC3C,CAAE,KAAM,CAER,CACA,MAAO,CACL,KAAK,CAAE,EACP,IAAI,CAAE,IADY,IACJ,CACd,GAAG,CAAW,AAClB,CAAG,AACH,kJAWO,SACL,AADc,CACJ,CACV,GAAuC,CAAK,EAE5C,EAFQ,EAEF,EAAmC,CAAA,CAAE,CAC3C,EALiC,EAK5B,GAAM,CAAC,EAAK,CAAF,CAAO,GAAA,AAAK,AADD,MACO,CAAC,OAAO,CAAC,GAAc,CAAA,CAAE,CAAC,CAAE,CAC3D,EADwC,EAClC,EAAa,EAAoC,EAAO,GAAF,AACxD,IACF,CAFoE,AAEhD,CAFiD,AAEhD,EAAG,CAAA,AAAI,CADhB,AACgB,CAAU,AAE1C,CAHkB,AAIlB,OAAO,CACT,QAN0D,WAK7B,KC3HzB,oBAAoB,2CADxB,IAAI,EAAkB,CAAC,YAAnB,YAYG,SAAS,AAAqB,CAAkB,EAIrD,IAAM,EAAQ,GAAR,CAAY,CAAC,KAAK,CAAsB,AAJZ,IAIT,AAAyB,CAAC,OAEtB,IAAzB,GAAsC,GAFjB,CAE2B,CAAV,GACxC,GAAkB,CAAC,CAGrB,IAAM,AAJF,EAIU,EAId,CAJM,CAHJ,CADsE,EAAE,EAK1E,IACA,EAF6B,AAEN,EAEhB,CACL,EAH0B,CAGvB,CA7BmB,CA6BjB,CAJQ,EAAE,OACjB,OAGwB,SA7B2B,CA8BjD,KAAK,CAAE,CAAE,KAAK,GAAE,IAAI,CAAE,SAAA,CAAW,AACrC,CAAG,AACH,wJCpBO,SAAS,AACd,CAAM,CACN,CAAK,SAEA,AAAL,EAIOmG,EAAAA,AAJH,CAAM,EAAE,GAJwB,GAQpB,CAAC,EAAO,GAAF,EACpB,CAD4B,GACtB,EAAOzC,EAAAA,AAAP,aAAoB,EAAE,CACtB,EAAe,EAAO4D,EAAP,AAAOA,MAAtB,YAAwC,CAAC,GAAQc,CAAJ,CAAA,AAAIA,wBAAwB,CAAC,GAIhF,EAJqF,CAAC,GAI/E,CAHwB,EAC3BnD,EAAAA,iCAAiC,CAAC,GAClCqD,CADsC,CACtCA,kCAAkC,CAAC,EAAQ,GACf,CADa,CAAO,AACP,AAC/C,CAFuD,AAEtD,CAAC,CAVO,MAAC,CASoC,CATzB,OAAU,AAAZ,AAWrB,EAXgC,iHCV2D,CACzF,KAAK,CAAE,CAAC,CACR,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,CAAC,CACP,IAAI,CAAE,EAAE,CACR,KAAK,CAAE,EAAE,CACT,KAAK,CAAE,EAAE,AACX,6GCDO,SAAS,EAA+B,CAAK,EAA0C,AAC5F,MAAO,CACL,CACE,IAAI,CAAE,KAAK,CACX,MAJwC,IAI9B,CAAE,EAAM,GAAD,GAAO,CACxB,YAAY,CAAE,uCAAuC,AAC3D,CAAK,CACD,OACE,CACN,CAAK,CACF,AACH,EAHW,sDAgBJ,SAAS,AACd,CAAI,CACJ,CAAQ,CACR,CAAM,CACN1D,CAAG,EAEH,IAAM,EAA0B,CAAA,CAND,AAMG,CAalC,EAba,KAET,GAAU,GAAG,EAAE,AAAP,CACV,EAAQ,GAAA,CAAM,CAAP,AACL,IAAI,CAAE,EAAS,GAAG,CAAC,EAAL,EAAS,CACvB,OAAO,CAAE,EAAS,GAAG,CAAC,EAAL,KAAY,CACnC,CAAK,CAGC,AAAE,CAAD,EAAaA,IAChB,CADmB,CACX,CADM,AAAO,CAAN,CACP,CAAMC,CAAP,CAAOA,WAAW,CAACD,EAAG,CAAC,CAGzBG,EAAAA,cAAc,CAAc,EAAS,CAAC,EAA+B,EAAlC,CAAwC,CACpF,AADqF,AAAH,CAAC,uBAAN,gPC7B7E,SAAS,EACP,CAAa,CACb,CAAG,CACH,CAAK,CACL,GAAmB,CAAI,EAEnB,CANkB,EAMR,EAAV,AAAW,CAAa,CAAC,EAAG,AAA5B,CAA4B,AAFhC,CAEqC,CAAA,CAAgB,CAAC,EAAE,AACtD,CAAa,CAAC,EAAG,CAAA,AAAI,CAAA,CAAK,AAE9B,CAWO,SAAS,EAA+B,CAAM,CAAU,CAAa,EAAuB,AACjG,IAAM,EAAY,IACZ,EAAY,CADZ,CACmC,EAEvB,GAHa,AACzB,CAAyC,CADd,AACe,EAFJ,EAIjB,CAAvB,CAAyB,CAC3B,EAAU,GAAG,CAHyB,AAGxB,CADZ,CACoB,CAAb,AAAc,EAAc,CAAC,AAAlB,CAEhB,EAAU,MAAA,CAAD,AAFuB,CAnCZ,EAqCA,CArCG,EAsCzB,EAA0B,EAAQ,GAClC,CADgC,CACtB,GAAG,CAD8B,AAC7B,CAD8B,CACtB,CAFmB,AAEhC,AAAc,EAFoB,AAEN,CAAjB,AAAkB,EAEtC,EAAU,EAHe,CAGZ,CAAC,EAFsB,AAEd,CAAC,AAAd,GAAiB,AAAN,EAAiB,EAAc,CAAC,AAG1D,CA8H+D,GAjItB,MAAe,AAiIO,EAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,CACA,AADA,AADA,EACA,CACA,CAAA,EAAA,CAAA,EAAA,IADA,EACA,CAAA,AACA,OAGA,IAAA,EAAA,EAAA,IAAA,KAAA,CAAA,EAAA,CACA6D,EAAAC,EAAAA,MAAA,WAAA,CAAA,EAAA,EAAA,KAAA,IAAA,CAAA,CAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAGA,IAAA,GAAA,CAAA,EAAA,EAAA,CAAA,CAEA,AAFA,CAAA,CAEA,IAAA,CAAA,WAAA,CAAA,CAIA,EAAA,IAAA,QAAA,CAAAD,EACA,CAUA,OAXA,CAAA,CAWA,EAAA,CAAA,EAAA,AACA,OAAA,IAAA,GAAA,CAAA,EADA,AAEA,CAEA,EAHA,CAAA,CAAA,KAGA,IAEA,OAAA7I,EAFA,AAEAA,GAFA,eAEA,CAAA,sBAAA,CAAA,IAAA,IAAA,OAAA,CACA,CADA,CAAA,sBAlJxD,SACL,AADc,CACL,CACT,EAAewD,EAAAA,QAAf,MAFkC,CAEJ,EAAE,CAChC,EAAqE,CAA8B,EAEnG,IAAM,EAAS,GAAc,CAAvB,KAFc,GAEO,AAAW,EAAC,EAAKQ,EAAAA,SAAS,EAAE,CACvD,GAAI,CAAC,EAAQ,CACXjE,EAAAA,CADS,UACTA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAChE,MACF,CAEA,GAAM,SAAE,CAAO,aAAE,CAAW,YAAE,GAAa,CAAK,CAAE,KAApB,UAAoB,CAAc,CAAI,EAAO,IAAD,MAAW,EAAE,CACvF,GAAI,CAAC,EAAY,CACfF,EAAAA,KADa,MACbA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAClF,MACF,CAEA,GAAM,EAAG,EAAY,CAAIuI,EAAAA,OAAJ,eAA0B,CAAC,EAAQ,GAElD,CAFgD,CAEvB,CAC7B,GAAG,EAAU,CAHqD,CAAC,KAGvD,GAChB,AAD2B,CACxB,CAEK,CACJ,IAAI,CAAE,CAAE,IAAE,OAAE,CAAK,UAAE,CAAA,CAAU,CAC7B,UAAU,CAAE,EAAkB,CAAA,CAAE,CAClC,CAAIf,EAAAA,OADU,aACU,CAACf,EAAAA,iBAAiB,EAAE,CAAE,GAE9C,EAAgB,EAAwB,KAFkB,CAAC,GAEV,CAAE,CAApC,CAAsC,CAAE,GACvD,EAD4D,AAC5C,CAD6C,CACrB,AADF,WACvB,CAAqC,CAAE,GAAO,EAAF,CAC3D,CADsC,CAA4B,AAClD,CADmD,CAC3B,WAAzB,AAAoC,CAAE,GAAU,GAE/D,EAFoE,AAAP,AAAvB,AAEtB,CAFqD,CAE7B,WAAzB,KAAyC,CAAE,GAApB,AACtC,EAAgB,EADiD,AACzB,CAD0B,UACnD,SAAuB,AAAsB,CAAE,GAE9D,GAAM,KAFmE,CAAC,AAElE,CAAI,SAAE,CAAA,CAAA,CAAY,EAAO,IAAD,UAAe,EAAE,EAAE,GAAA,EAAO,CAAA,CAAE,CAC5D,EAAgB,EAAwB,WAAzB,MAA0C,CAAE,EAArB,CACtC,CAD+D,CAC/C,AADgD,EACxB,WAAzB,SAAuB,AAAsB,CAAE,GAE9D,IAFqE,AAE/D,CAFgE,CAEvD,EAAO,EAAhB,EAAe,gBAAC,CAKpB,QAAQ,CAAC,CAEL,EAAW,GAAQ,GAAF,QAAa,EAAC,GACrC,CADyC,CAAC,AAC1B,EAAwB,WAAzB,OAA2C,CAAE,CAAtB,EAElC,GAAY,EAFoD,CAE5C,AAF6C,EAEjE,CAAkB,aAAkB,EAAC,GAAM,QAAQ,EAAE,AAEvD,EAAgB,EAAwB,WAAzB,SAAuB,kBAAwC,CAAE,IAAI,AAGtF,CAHuF,GAGjF,EAAmB,EAAU,OAAD,AAAQ,CAC1C,GAAI+B,CADE,CACFA,qBAAqB,CAAC,GAAmB,CAC3C,GAAM,CAAE,QADgC,CAAC,mBACP,4BAAE,EAA6B,EAAC,CAAE,CAAI,EACpE,GAA4B,MAAM,EAAE,CACtC,CAAsB,CAFgE,AAE/D,IAFW,QACN,aACoB,CAAA,CAAI,CAAA,CAA0B,CAEhF,EAA2B,OAAO,CAAC,CAAC,EAAO,GAAF,EAAO,AAC9C,CAAsB,CAAC,CAAC,EAD2B,GAA3B,oBACyB,EAAE,EAAM,CAAA,CAAA,CAAD,AAAC,CACA,CAAA,CAAA,AACA,CAEA,CAJA,GAIA,EAAAhH,EAAAA,AAAA,gBAAA,CAAA,GAEA,EAAA,EAAA,KAFA,CAAA,KAEA,SAAA,SAAA,CAAA,GAAA,CAAA,UAAA,EAAA,CAAA,MAAA,CAAA,CAEA,IAAA,EAAA,CAAA,GAAA,CAAA,CAAA,IAAA,MAAA,CAAA,CAAA,CAAA,CAEA,EAAA,IAAA,CAAA,YAFA,MAEA,CAAA,GAGA,IAAA,EAAA,CAAA,CAAAmB,CAHA,CAAA,AAGAA,SAAA,KAAA,CAAA,IAAA,EAAA,IAAA,EACA,GAAA,CAAA,CADA,CACA,AADA,CAEA,AAFA,AACA,CADA,CAEA,CAFA,GAEA,cAAA,CAAA,aAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CACA7C,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,IAAA,CAAA,wDAAA,CAAA,CACA,MACA,CAEA,GAAA,OAAA,CAAA,SAAA,CAAA,CAAA,UAAA,CAAA,EAAA,CAAA,CAAA,SAAA,OAAA,CAAA,CAAA,CAAA,EAEA,CAFA,CAEAoB,EAAAA,KAAA,aAAA,EAAA,CACA,EAAAqH,EAAAA,QAAA,YAAA,CAAA,GAeA,EAAA,EAbA,EAFA,CAAA,CAeA,EAAA,KAZA,KAYA,GAAA,AAXA,CAWA,AAZA,CAEA,GADA,CACA,CAAA,EACA,KADA,GACA,CAAA,GAAA,QAAA,CAAA,AACA,eAAA,CAAA,GAAAC,EAAAA,SAAA,uBAAA,CAAA,EAAA,CACA,EADA,QACA,CAAA,CACA,GAAAC,EAAAA,mBAAA,CAAA,EAAA,CACA,GAAAA,EAAAA,OADA,YACA,CAAA,GAAA,EAAA,CACA,CADA,AACA,EAAA,GAAA,CADA,AACA,CAAA,EAAA,GAAA,EAAA,AACA,CACA,AADA,CACA,EAIA,CANA,CAMA,IAAA,CAAA,iBAAA,CAAA,EACA,CADA,CAAA,yMClKxD,SAAS,EAAkC,CAAK,EAAgD,AACrG,MAAO,CACL,CACE,IAAI,CAAE,cAAc,CACpB,AAJ2C,UAIjC,CAAE,EAAM,GAAD,GAAO,CACxB,YAAY,CAAE,gDACpB,AADoE,CAChE,CACA,OACE,CACN,CAAK,CACF,AACH,EAHW,4DAgBJ,SAAS,AACd,CAAO,CACP,CAAQ,CACR,CAAM,CACN/D,CAAG,EAEH,IAAM,EAA6B,CAAA,CAAE,CAarC,EAba,AANqB,KAQ9B,GAAU,GAAG,EAAE,AAAP,CACV,EAAQ,GAAA,CAAM,CAAP,AACL,IAAI,CAAE,EAAS,GAAG,CAAC,EAAL,EAAS,CACvB,OAAO,CAAE,EAAS,GAAG,CAAC,EAAL,KAAY,CACnC,CAAK,CAGC,AAAE,CAAD,EAAaA,IAChB,CADmB,CACX,CADM,AAAO,CAAN,CACP,CAAMC,CAAP,CAAOA,WAAW,CAACD,EAAG,CAAC,CAGzBG,EAAAA,cAAc,CAAiB,EAAS,CAAC,EAAkC,EAArC,CAA8C,CAAC,AAC9F,GAD2F,CAAC,uBAAT,oNC7BnF,SAAS,EACP,CAAgB,CAChB,CAAG,CACH,CAAK,CACL,GAAmB,CAAI,GAEnB,GANqB,CAMX,CAAV,EAAgC,EAAhC,AAFJ,CAEoC,EAAO,IACzC,CAAgB,CAAC,EADL,AACQ,CAAA,AAAI,CAAA,CAAK,AAEjC,CAHoC,AAc7B,CAd6B,GAAyB,CAAC,CAAC,EAAE,CAcjD,EAAkC,CAAM,CAAU,CAAgB,EAA0B,AAC1G,IAAM,EAAY,IACZ,EAAe,CADf,CACyC,EAE3C,AAAiB,GAHU,CACsB,CADpB,AACqB,CAAhD,GAEwB,CAJiB,CAIf,CAA5B,AACF,EAAU,GAAG,CAAC,EAAQ,CAAb,AAHmC,AAGrB,EAAiB,CAApB,AAAqB,CAErC,EAAa,MAAA,EArCU,EAqCX,AAAW,AAFY,EAnCR,CAsC7B,EAA6B,EAAQ,GACrC,CADmC,CACzB,GAAG,CAAC,EAAQ,CAAC,AAAd,AADwC,CAAC,CACV,CAApB,AAAqB,AAFM,EAI/C,AAJiD,EAIvC,GAAG,CAAC,CAHc,CAGN,CAAb,AAAc,EAFgB,CAEnB,AAAM,EAAc,EAAiB,CAAC,AAGhE,CA+JO,MAlKqC,GAkK5B,EAA6B,CAAM,AAlKW,CAkKD,CAAiB,EAAkC,AAC9G,IAAM,EAAe,GAAqB,EAA0B,IAAW,CAAzE,CAA2E,AAAP,CAC1E,AAD0E,GAC9C,AAFc,CAEb,CADR,CACU,CAA3B,EAAa,MAAA,CACf,AAFiE,GACnD,IAIhB,IAAM,EAAgB,EAAO,IAAD,KAAtB,CAAiC,EAAE,CACnC6D,EAAWE,EAAAA,oBAAoB,CAAC,EAAc,EAAc,QAAhB,CAAyB,CAAE,CAAZ,CAA0B,MAAM,CAAE,EAAO,EAAhB,EAAe,EAAO,EAAE,CAAC,CAGnH,IAAgB,GAAG,CAAC,EAAQ,EAAE,CAAC,AAAlB,CAEb,AAF0B,CAAX,CAER,IAAD,AAAK,CAAC,cAAc,CAAC,CAI3B,EAAO,IAAD,QAAa,CAACF,EACtB,CAUO,OAXuB,CAAC,CAWf,EAA0B,CAAM,EAA+C,AAC7F,OAAO,IAAgB,GAAG,CAAC,EAC7B,CAEA,EAJyC,AACnB,CAAa,CAAX,AAAY,KAG3B,IAEP,OAAO7I,EAFa,AAEbA,GAF0D,eAExC,CAAC,yBAAyB,CAAE,IAAM,IAAI,OAAO,CACxE,CAD2G,CAAC,yBAvFrG,SAAS,AAAwB,CAAY,CAAU,CAAO,EAAuC,AAC1G,IAAM,EAAe,GAAS,IAAF,CAAE,EAASwD,EADF,AACEA,eAAe,EAAE,CAClD,EAA0B,GAAS,IAAF,cAAjC,KAAmC,EAA2B,EAC9D,EAAS,GAAc,CAAvB,QAAgC,AAAX,EAAY,EAAKQ,EAAAA,SAAS,EADgD,AAC9C,CACvD,GAAI,CAAC,EAAQ,CACXjE,EAAAA,CADS,UACTA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CACnE,MACF,CAEA,GAAM,cAAE,CAAY,eAAE,CAAa,kBAAE,CAAA,CAAiB,CAAI,EAAO,IAAD,MAAW,EAAE,CAM7E,GAAI,CAAC,CAFkB,GAAiB,GAAc,OAEnC,AAFI,EAA6B,IAAE,GAAiB,CAAA,CAAI,CAEtD,CACnBF,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CACrF,MACF,CAGA,GAAM,MAAE,CAAI,CAAE,UAAU,CAAE,CAAA,CAAgB,CAAIwH,EAAAA,oBAAoB,CAACf,EAAAA,iBAAiB,EAAE,CAAE,GAClF,EAAiB,AA3GzB,OA0GsG,CAAC,CA1G9F,AAAwB,CAAY,CAAU,CA2G/C,AA3GqD,CAAU,CAAI,EAAgB,AACzF,GAAM,IA0GwC,KA1GtC,CAAO,CAAE,EADa,WACb,CAAY,CAAI,EAAO,IAAD,MAAW,EAAE,CAE9C,EAA4B,CAChC,GAAG,EAAa,UAAD,AAAW,AAC9B,CAAG,CAGD,EAAmB,EAA2B,SAAS,CAAE,EAAK,EAA5C,AAA2C,AAAG,EAAE,GAClE,EAAmB,AADoD,CAAC,CAC1B,AADF,YACc,CAAE,CAA1C,CAA+C,EAAD,GAAM,EAAE,CAA5B,EAC5C,EAD6E,AAC1D,CAD2D,CAChC,WAAW,CAAE,EAAzC,AAA8C,EAAD,MAAS,CAA5B,CAA8B,GAG1E,EAH+E,AAG5D,CAH6D,CAGlC,cAA5B,EAA4C,CAAE,GAChE,EAAmB,CADyB,CAA2B,AACzB,CAD0B,aACtD,MAAgD,CAAE,EAAxB,CAG5C,GAAM,KAHyE,CAAC,AAGxE,CAAI,SAAE,CAAA,CAAA,CAAY,EAAO,IAAD,UAAe,EAAE,EAAE,GAAA,EAAO,CAAA,CAAE,CAC5D,EAAmB,EAA2B,cAA5B,GAA6C,CAAE,GACjE,CADqE,CAAzB,AACzB,AADmD,EACxB,cAA5B,MAAgD,CAAE,EAAxB,CAG5C,IAH2E,AAGrE,CAHsE,CAG7D,EAAO,EAAhB,EAAe,gBAAC,CAKpB,QAAQ,CAAC,CAEL,EAAW,GAAQ,GAAF,QAAa,EAAC,GAOrC,CAPyC,CAAC,KAC1C,EAAmB,EAA2B,cAA5B,IAA8C,CAAE,GAE9D,CAFwC,EAE5B,EAF0D,CAAC,AAEnD,EAApB,CAAkB,aAAkB,EAAC,GAAM,QAAQ,EAAE,AACvD,EAAmB,EAA2B,cAA5B,SAA0B,eAAwC,EAAE,GAGjF,CACL,AAJ0F,CAAC,EAIxF,CAAY,CACf,UAAU,CAAE,CAChB,CAAG,AACH,EAmEiD,EAAc,EAAQ,GAErE,CAFmE,AAAM,CAElE,AAFmE,GAAf,CAErD,AAAK,CAAC,OAvE2B,QAuEZ,CAAE,GAI7B,IAAM,EAAqB,GAAoB,EAJJ,CAAC,AAIiB,SAAF,CAArD,MAAuE,CACvE,EAAkB,EAAqB,EAAmB,GAAkB,EAElF,GAAI,CAFE,AAED,EAAiB,CACpB3G,EAH4E,AAG5EA,AAHsB,CAAsD,CAAf,CAAiC,OAE5E,CAClBA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CACrF,MACF,CAEA,IAAM,EAAmB,AA5E3B,SAAS,AACP,CAAM,CACN,CAAM,CACN,CAyEM,AAzEM,CACZ,CAAe,EAGf,GAAM,CAqEyC,CArEtC,EAAY,CAAIuI,EAAAA,GAPI,IAOR,eAA0B,CAAC,EAAQ,GAClD,CADgD,CACzC/G,EAAP,AAAOA,KADuD,CAAC,UACxC,CAAC,GACxB,EAAU,EAAO,EAAP,AAAY,CAAtB,CAAqB,CADe,CAAC,OACJ,EAAE,CAAC,OAAA,CAAU,GAAc,QAAQ,CAAV,AAC1D,EAAS,EAAO,EAAhB,AAAqB,AAAZ,EAAW,SAAY,EAAE,CAAC,MAAA,MAAS,EAE5C,EAAYJ,EAAAA,GAFyC,EAErD,aAA8B,EAAE,CAChC,EAAeqH,EAAAA,QAAf,YAAmC,CAAC,GAE1C,MAFmD,AAE5C,CAF6C,UAGlD,EACA,OADS,CACD,CAAE,GAAW,EAAE,CACvB,CADU,MACH,CAAE,EACT,IADe,AACX,CAAE,EAAO,IAAD,AAAK,CACjB,IAAI,CAAE,EAAO,IAAD,AAAK,CACjB,IAAI,CAAE,EAAO,IAAI,AAAL,CACZ,KAAK,CAAE,EAAO,IAAD,CAAM,CACnB,UAAU,CAAE,CACV,GAAGE,EAAAA,mBAAmB,CAAC,EAAgB,CACvC,GAAGA,EAAAA,OADmC,YAChB,CAAC,EAAO,IAAD,MAAW,CAAE,gBAAgB,CAAC,CAC3D,CAAC,EAAa,GAAG,CAAA,CAAG,EAAa,GAApB,EAAyB,AAC5C,CAAK,AACL,CAAG,AACH,EA+CkD,CAlDZ,CAkD6B,EAAQ,EAAc,EAAhB,CAEvE7I,EAAAA,IAF+D,CAAsB,KAAiB,CAAC,AAEvG,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,UAAU,CAAE,GAErC,EAAwB,EAAQ,GAEhC,CAF8B,CAEvB,IAAI,AAAL,AAJ+C,CAIzC,AAJ0C,MAEN,CAAC,EAA1B,WAES,CAAE,EACpC,aADmD,CAAC,oLCvM7C,SAAS,AAAU,CAAK,EAAgE,AAI7F,MAJuB,AACF,QAAA,EAAjB,OAAO,GAA6C,AAAvB,EAAtB,QAAuD,EAAE,OAA5B,EAAM,GAAD,EAAC,EAC5C,EAAM,GAAD,EAAM,EAAE,CAER,CACT,IADc,6GCFD,EAA2B,MAAM,CAAC,GAAG,CAAC,uBAAuB,mDAMnE,SAAS,AAAqB,EAAgB,GAAX,AAAc,EAAoB,AAC1E,IAAM,EAA8B,IAAI,AADT,AACnB,GAA+B,CAsE3C,CAtE6C,KAsEtC,CACL,IAAI,CAAC,EAAqB,CACxB,OAAO,KAAK,CAAC,IAAI,CAAC,EACpB,CAAC,CACD,EAF0B,CAAC,AAExB,CAhDL,SAAS,AAAI,CAAY,EAAb,AAAqD,AAC/D,GAAI,CAAC,CAxBE,EAAO,IAwBF,AAxBC,AAAC,CAAO,CAAA,AAwBP,CAxBY,CAyBxB,AADc,OACPmH,EAAAA,mBAAmB,CAAC,GAI7B,IAAM,EAAO,EAAP,EAMN,OALA,CADyB,CAClB,CADoB,CAJ0B,CAAC,AAK5C,CAAJ,AAAK,GACN,CADU,CAAC,AACN,EAAD,EAAK,CACZ,IAAM,MAAM,IAAC,IACb,AADiB,CAAC,GACZ,CAvBR,EAAO,GAuBO,CAvBR,EAAO,CAuBE,AAvBD,IAuBK,AAvBD,CAAC,AAuBC,AAEb,CACT,EAoCE,CArCW,IAqCN,CAzBP,SAAS,AAAM,CAAO,EAAiC,AACrD,EADY,CACR,CAAC,EAAO,IAAI,AAAL,CACT,CADgB,MACTD,EAAAA,mBAAmB,EAAC,GAI7B,CAJiC,CAAC,EAI5B,EAAe,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAS,EAAH,CAAC,CAAC,AAAK,CAAC,KAAM,IAAI,CAAC,KAE5E,AAAK,EASE,EATH,GAAQ,EASE,AATA,CASC,IAAI,CALF,AAKG,CAJlB,EACA,IAAI,CAGsB,CAAC,IAJf,CACD,CAAA,AAAU,GAAW6B,EAAAA,EAAX,OAAoB,CAAC,UAAU,CAAC,IAAM,GAAQ,GAAQ,CAAT,CAAM,CAAC,EAC1E,EADmF,AAL3E,CASX,AAJuF,CAAC,AAY1F,CACA,AAb2F,AAYxF,SAjBsB,0FC9DlB,SAAS,EAAsB,CAAM,CAAU,EAAc5H,CAAX,CAAWA,WAAW,EAA1C,AAA4C,EAAU,AACzF,IAAM,EAAc,QAAQ,CAAtB,AAAuB,CAAC,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CACA,GAAA,CAAA,KAAA,CAAA,GACA,OAAA,CADA,CAAA,EAAA,AACA,EAGA,IAAA,EAAA,GAHA,CAGA,CAAA,GAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MACA,IAAA,CAAA,CAAA,OACA,EAAA,CADA,AAKA,CALA,AAcA,CAbA,CADA,IACA,GAaA,EAAA,CAAA,CAAA,CAAA,EAAA,AACA,MADA,CACA,CAAA,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,AACA,uBA/BG,EAAA,GAAK,KAAI,CAAA,aAAA,cAoCZ,SAAA,CAAA,CAAA,CAAA,CAAA,EAAAA,CAAA,CAAAA,KAAA,MAAA,EAAA,EAAA,AACA,OAAA,EAAA,EAAA,GAAA,CAAA,AACA,EADA,GAAA,GAAA,CAAA,sCAQA,SAAA,AACA,CAAA,CACA,YAAA,CAAA,CAFA,AAEA,SAAA,CAAA,CACA,EAAAA,CAAA,CAAAA,WAAA,EAAA,EAEA,IAAA,EAAA,CACA,GAAA,CAAA,AACA,CAAA,CAIA,EAAA,GAAA,CAAA,EANA,CAMA,MAAA,aAAA,CAAA,CACA,EAAA,GAAA,CAAA,GAAA,OAAA,GAAA,CAAA,CAEA,GAAA,EAeA,IAAA,IAAA,KAAA,AAfA,AAeA,EAAA,AAfA,IAeA,EAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,CACA,GAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CACA,EAAA,QAAA,CAAA,EAAA,EAAA,CAAA,CACA,EAAA,CAAA,CADA,CACA,GAAA,CAAA,GAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,AACA,CADA,CAAA,CACA,CADA,AACA,CAGA,IAAA,IAHA,AAGA,EAHA,GADA,AAIA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,AACA,QAAA,OAAA,EAAA,IAEA,CAAA,GAAA,EAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA,QAAA,CAAA,SAAA,CAAA,EAAA,CACA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,AAGA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EATA,EAAA,GAAA,CAAA,EAAA,CAaA,AAbA,IAAA,EAcA,EACA,AAfA,EAeA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EADA,CACA,AACA,CADA,AADA,CACA,CACA,EAAA,CAAA,IACA,CAFA,CAEA,EAFA,CAEA,CADA,AACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAGA,IAHA,GAGA,CACA,gBADA,0KCtFa,qBAQtC,SAAS,AACd,CAAO,CACP,CAAW,CACX,EAAsD6H,EAAAA,EAAhD,KAHuB,UAG0C,CACrE,EAAQ,KAAD,KAAC,IAAc,CACvB,EAED,IAAI,EAAyB,CAAA,CAAE,CAmF/B,KAnFc,CAmFP,CACL,IAAI,CAjFN,KANqD,IAM5C,AAAKJ,CAAQ,EAAuD,AAC3E,CADW,GACL,EAAwC,EAAE,CAahD,GAVAK,EAAAA,WAH2B,QAGR,CAACL,EAAU,CAAC,EAAM,EAAF,EAAM,CACvC,AAD0B,IACpB,AADsC,EACvBM,EAAAA,QAAf,sBAA6C,CAAC,GAChDC,CADoD,CAAC,AACrDA,aAAa,CAAC,EAAY,GAC5B,EAAQ,GADkB,EACnB,EADiC,CAAC,EAAE,QACjB,CAAC,mBAAmB,CAAE,GAEhD,EAAsB,IAAI,CAAC,EAFiC,AAIhE,CAAC,AAJgE,CAI/D,AAFiC,CAKE,AALD,CAKE,EAAE,CAApC,EAAsB,GALD,GAKC,CACxB,OAAO,KADgB,EACT,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC,CAG5B,IAAM,EAA6BpE,EAAAA,YAAb,EAA2B,CAAC6D,CAAQ,CAAC,CAAC,CAAC,CAAE,GAGzD,EAAqB,AAAC,IAE1B,EAFgC,CAE5BQ,EAAAA,EAFwD,KAHC,AAGzD,EAHuG,eAK/E,CAAC,EAAkB,CAAC,aAAH,EAAkB,CAAC,CAAC,CAAE,CACjEtJ,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,CAAC,wDAAwD,EAAE,EAAO,EAAE,CAAC,CAAJ,AAAK,CAChG,MACF,CACAiJ,EAAAA,mBAAmB,CAAC,EAAkB,CAAC,EAAM,EAAF,EAAM,CAC/C,EAAQ,EAD4C,EAAlB,CAC3B,aAAmB,CAAC,EAAQC,EAAAA,EAAF,4BAAgC,CAAC,GACpE,CADwE,AACvE,CADwE,AACvE,AACJ,CAF4E,AAE3E,CAoCD,OAAO,EAAO,GAAG,CAlCG,AAkCP,AAAK,IAjChB,EAAY,CAAE,IAiCa,AAjCT,CAiCU,AAjCRG,EAAAA,CAAT,gBAA0B,CAAC,EAAgB,CAAG,CAAC,CAAC,IAAI,CAAA,AAC7D,IAI8B,EALsB,CAKnB,AALmB,EAKjB,CAA7B,EAJM,AAIG,MAAD,IAAC,EACXvJ,EAAAA,WAAA,EACEE,EAAAA,KAAK,CAAC,KAAK,CACT,6FAA6F,EAEjG,EAAmB,YAAY,CAAC,GAMhCF,AANkB,EAMlBA,WAAA,OACwB,IAAxB,EAAS,GAAe,GAAhB,CACpB,GADqB,GACR,EAAS,MAAD,IAAC,CAAa,GAAA,EAAO,EAAS,MAAD,IAAC,EAAc,GAAA,CAAG,EAExDE,CADA,CACAA,KAAK,CAAC,IAAI,CAAC,CAAC,kCAAkC,EAAE,EAAS,MAAD,IAAW,CAAC,eAAe,CAAC,CAAC,CAGvF,EAAasJ,EAAAA,gBAAgB,CAAC,EAAY,IACnC,GACR,AACD,CAH0C,AAAU,CAAC,EAMnD,CALe,IAER,CACP,EAAmB,eAAe,CAAhB,AAAiB,CACnCxJ,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,8CAA8C,CAAE,GACrE,CACR,CAFkF,AAEjF,CAFkF,EACtE,AAIc,IAAI,CAAA,AACjC,GAAU,EAAM,AAChB,CADA,GAEE,AAFc,GAEV,EADG,EACOuJ,CAAV,CAAUA,wBAAwB,CAGpC,CAHsC,MACtCzJ,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAC3E,EAAmB,gBAAD,AAAiB,CAAC,CAC7B,OAAO,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC,AAE1B,OAAM,CAEV,CAAC,CAEL,EAIE,AARiB,KAQZ,CApFO,AAAC,GAA2C,EAAO,EAA3C,EAA0C,CAAM,CAAC,EAqFzE,CAAG,AACH,IAtFgF,CAAC,wIC1B1E,SAAS,AACd,CAAgB,CAChB,CAAG,CACH,CAAS,EAET,IAAM,EAAqC,CACzC,CAAE,IAAI,CAAE,MAN8B,CAKlB,QACZ,CAAiB,CACzB,CACE,SAAS,CAAE,GAAa2B,EAAAA,IAAb,kBAAmC,EAAE,kBAChD,CACN,CAAK,CACF,CACD,OAAOoD,EAAAA,GAHa,WAGC,CAAuB,EAAM,CAAN,IAAQ,CAAA,CAAI,CAAI,AAAR,CAAQ,CAAE,CAAE,CAAC,EAAiB,CAAC,AACrF,aADmF,+FCjB5E,SAAS,AAAyB,CAAK,EAC5C,AAD+D,IACzD,EAA6B,EAAE,AAEjC,GAAM,EAAD,KAAQ,EAFK,AAEH,AACjB,CAJoC,CAInB,IAAI,CAAC,EAAM,GAAD,IAAX,AAAmB,CAAC,CAGtC,GAAI,CAEF,IAAM,EAAgB,EAAM,GAAD,MAArB,AAA+B,CAAC,MAAM,CAAC,EAAM,GAAD,MAAU,CAAC,MAAM,CAAC,MAAA,CAAS,CAAC,CAAC,CAC3E,GAAe,KAAK,EAAE,CACxB,EAAiB,AADF,IACM,CAAC,EAAc,KAAK,CAAC,CACtC,AADY,EACE,EADiB,EACb,EAAE,AACtB,EAAiB,GADF,CACM,CAAC,CAAC,EAAA,EAAA,IAAP,AAAO,CAAA,EAAA,EAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAGA,CAAA,CAHA,IAGA,CAEA,CAEA,OAAA,CACA,eADA,wHCMxB,SAAS,AAAkC,CAAI,EAA8B,AAClF,MAAO,CACL,IAAI,CAAE,aAAa,CACnB,IAH6C,KAGpC,CAAE,EAAK,EAAD,OAAU,CACzB,eAAe,CAAE,EAAK,EAAD,aAAgB,CACrC,WAAW,CAAE,EAAK,EAAD,SAAY,CAC7B,QAAQ,CAAE,CACR,KAAK,CAAE,CACL,QAAQ,CAAE,EAAK,EAAD,MAAS,CACvB,OAAO,CAAE,EAAK,EAAD,KAAQ,CACrB,cAAc,CAAE,EAAK,EAAD,YAAe,CACnC,EAAE,CAAE,EAAK,EAAD,AAAG,CACX,MAAM,CAAE,EAAK,EAAD,IAAO,CACnB,MAAM,CAAE,EAAK,EAAD,IAAO,CACnB,IAAI,CAAE,CACJ,GAAG,EAAK,EAAD,EAAK,CACZ,GAAI,EAAK,EAAD,QAAC,EAAc,CAAE,CAACY,EAAAA,6BAA6B,CAAA,CAAG,EAAK,EAAD,QAAC,CAAY,CAAC,AAC5E,GAAI,EAAK,EAAD,YAAC,EAAkB,CAAE,CAACC,EAAAA,iCAAiC,CAAA,CAAG,EAAK,EAAD,YAAC,CAAgB,AACjG,CAAS,AADyF,AAElG,CAAO,AACP,CAAK,CACD,YAAY,CAAE,EAAK,EAAD,UACtB,AADmC,CAChC,AACH,sCA/CO,SAAS,AAAkC,CAAK,EAA8B,AACnF,GAAM,UAAE,CAAQ,gBAD+B,AAC7B,CAAc,SAAE,CAAO,QAAE,CAAM,QAAE,CAAM,MAAE,CAAI,IAAE,CAAA,CAAG,CAAI,EAAM,GAAD,KAAS,EAAE,KAAA,EAAS,CAAA,CAAE,CAEnG,MAAO,CACL,IAAI,CAAE,GAAQ,CAAR,AAAQ,CAAE,CAChB,WAAW,CAAE,EAAM,GAAD,QAAY,IAC9B,EAAE,eACF,EACA,OAAO,CAAE,GAAW,CADN,CACQ,CACtB,CADS,cACM,CAAE,EAAM,GAAD,YAAC,EAAmB,CAAC,QAC3C,EACA,IADM,KACG,CAAE,EAAM,GAAD,MAAU,CAC1B,QAAQ,CAAE,GAAY,EAAE,GAAd,KACV,EACA,IADM,MACI,CAAE,GAAI,CAAA,AAAGD,EAAAA,6BAA6B,CAAA,CAChD,cAAc,CAAE,GAAI,CAAGC,AAAH,EAAGA,iCAAiC,CAAA,CACxD,YAAY,CAAE,EAAM,GAAD,SAAa,CAChC,UAAU,EAAE,CAChB,CAAG,AACH,EAFoB,wdC8Bd,EAAqB,gBAArB,6CAAkF,CAClF,EAAoC,+BAApC,6BAAgG,CAEhG,EAAwB,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CACzD,EAA2B,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAexE,SAAS,EAAmB,CAAO,EAAyB,AAC1D,MAAO,OADkB,EAEvB,EACA,CAAC,EAAqB,EADf,AACkB,CAC7B,CACA,AADG,CAGH,CAJiC,QAIxB,EAAyB,CAAO,EAA+B,AACtE,AALwB,MAKjB,SACL,EACA,CAAC,CAH4B,CAGJ,EAAG,AADrB,CAEX,CACA,AADG,CAGH,CAJoC,QAI3B,EAAiB,CAAK,EAAmC,AAChE,GAL2B,GAKpB,CAAC,CAAC,GADc,AACY,EAA1B,MAA0B,EAAjB,OAAO,GAAsB,EAAtB,GAA+C,CAC1E,CAEA,GAH+E,MAGtE,EAAuB,CAAK,EAAyC,AAC5E,AAJ+C,MAIxC,CAAC,CAAC,GAA0B,EAA1B,IADoB,EACM,EAAjB,OAAO,GAAsB,EAAtB,GAAkD,CAC7E,CAWA,GAZkF,MAYzE,EAKP,CAAM,CACN,CAAgB,CAChB,CAAS,CACT,AApB+C,CAoBjC,CACd,CAAO,EAGP,IACI,EADA,EAAS,CAAC,CAEV,EAFA,CAEgB,EAGpB,CAJgB,CAIT,CAHkB,CAGhB,CAAC,CAAJ,CAAe,CAHjB,IAIF,CADyB,CAAR,AACR,CAAC,CACV,EADA,UACY,CAAC,GACb,GAAgB,CAClB,CAAC,CAAC,CAGF,CAJuB,CADI,AAKpB,CALqB,CAKnB,CAAC,CAJR,AAII,CAAuB,AAAD,IAKtB,AAL2B,CAC/B,GAAU,CAD6B,CAKnC,AAJqB,CAAzB,CAA6B,CAAC,CADN,CAKV,IACZ,EADmB,AACX,CALc,CAID,CAEX,EADH,CAAO,CAAC,AAKf,GAAgB,EAEhB,EAAemD,AAFK,EAJG,AAMRA,EANU,EAIzB,IAEA,CAAwB,CACtB,UAAU,CAAC,KACT,CADe,CACP,EAGV,CAAC,CArFsB,CAqFpB,AAHM,CAAO,CAAC,CAlFU,EAwFjC,CAAC,CAAC,CAEF,EAAO,EAAE,CAAC,CAAJ,MAAW,CAAE,CALY,CAAC,GAM9B,CADuB,CACf,EACV,CAAC,CAAC,AACJ,CAFW,AA4yCQ,CA5yCD,CAAC,OA4yCA,EAAA,CAAA,EAAA,AACA,MAAA,UADA,IACA,GAAA,EAAA,EAAA,MAAA,CAAA,GAAA,CAAA,MAAA,AACA,CAwHA,SAAA,EAAA,CAAA,EAAA,AACA,OADA,KACA,IAAA,EAAA,GAAA,CAAA,AACA,CAEA,SAAA,EAAA,CAAA,EAAA,AACA,MAAA,OADA,MACA,GAAA,EAAA,GAAA,CAAA,AACA,CAQA,SAAA,EAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAUA,EAVA,KAGA,EAAA,GAJA,CAIA,EAAA,CACA,KAAA,CAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAIA,AAEA,KAFA,CAAA,AAEA,CAAA,EAAA,EAAA,IAAA,MAAA,CAAA,AACA,CAQA,SAAA,EAAA,CAAA,CATA,CASA,AACA,IAAA,EAAA,CAAA,CAOA,EAPA,KAGA,EAAA,AAJA,CAIA,MAAA,EAAA,CACA,KAAA,CAAA,CAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAGA,EAAA,EAAA,EAAA,CAAA,SAAA,CAAA,AACA,CAQA,SAAA,EAAA,CAAA,CATA,CASA,AACA,GAAA,CAAA,EACA,OAAA,CADA,AACA,CAGA,CAJA,GAIA,EAAA,CAAA,CAaA,CAlBA,CAKA,KAEA,MAAA,CAAA,MAAA,CAAA,GAAA,OAAA,CAAA,IACA,CADA,IAAA,AACA,CAAA,OAAA,CAAA,GACA,EADA,CACA,AADA,EACA,AADA,CACA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACApI,EAAAA,WAAA,CAAA,GACA,EADA,CACA,AAFA,AACA,EACA,AADA,CACA,EAGA,EAHA,CAAA,AAGA,GAAA,AAEA,CAAA,CAAA,CAEA,CACA,CAEA,IAHA,KAGA,EAAA,CAVA,AAUA,EAAA,MACA,QAAA,EAAA,OADA,AACA,EACA,CAAA,CAAA,CADA,CACA,GAAA,GAAA,CACA,QAAA,EAAA,OAAA,EACA,CAAA,CAEA,CAHA,AAGA,EADA,WAAA,OAAA,CAAA,CAKA,AALA,EAAA,CAAA,OAh9CH,MAAM,AA8BV,MA9BgB,CAA0C,IA8B/C,CAAC,CAAO,CAAK,CAehC,GAdA,IAAI,CAAC,QAAA,CAAW,EAChB,IAAI,CADmB,AAClB,aAAA,CAAgB,CAAA,CAAE,CACvB,IAAI,CAAC,cAAA,CAAiB,CAAC,CACvB,IAAI,CAAC,SAAA,CAAY,CAAA,CAAE,CACnB,IAAI,CAAC,MAAA,CAAS,CAAA,CAAE,CAChB,IAAI,CAAC,gBAAA,CAAmB,EAAE,CAC1B,IAAI,CAAC,cAAA,CAAiBqI,EAAAA,iBAAiB,CAAC,EAAQ,KAAD,WAAiB,EAAE,UAAA,EAAcQ,EAAAA,6BAA6B,CAAC,CAE1G,EAAQ,GAAG,CACb,CADe,AAAN,GACL,CAAC,IAAA,CAAOrB,EAAAA,OAAO,CAAC,EAAQ,GAAG,CAAC,CAAL,AAE3BrI,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAGxE,IAAI,CAAC,IAAI,CAAE,CACb,MAAM,EAAMyJ,CAAN,CAAMA,qCAAqC,CAC/C,IAAI,CAAC,IAAI,CACT,EAAQ,KAAD,CAAO,CACd,EAAQ,KAAD,IAAC,CAAY,EAAQ,KAAD,IAAU,CAAC,GAAA,MAAM,GAE9C,IAAI,CAAC,CAFkD,SAElD,CAAa,EAAQ,KAAD,IAAU,CAAC,CAClC,MAAM,CAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC5B,kBAAkB,CAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CACtD,GAAG,EAAQ,KAAD,WAAiB,KAC3B,CACR,CAAO,CACH,AADI,AADG,CAOP,IAAI,CAAC,QAAQ,CAAC,UAAA,CAAa,IAAI,CAAC,QAAQ,CAAC,UAAA,EAAc,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAGzF,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,AAC5B,EAAyB,IAAI,CAAE,iBAAP,AAAwB,CAAE,WAAW,CAAE,EAAwBC,EAAAA,kBAAF,OAA2B,CAAC,CAK7F,AAGlB,KAHsB,CAAC,OAGV,CAHkB,CAGhB,AAHiB,aAAA,EAAiB,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAA,GAAiB,CAAA,CAAI,EAIpG,EACE,IAAI,CACJ,iBAFsB,GAEF,CACpB,cAAc,CACd,EACAC,EAAAA,qBADyB,OACG,CAGlC,CAOO,gBAAgB,CAAC,CAAS,CAAW,CAAI,CAAc,CAAK,CAAkB,CACnF,IAAM,EAAUtI,EAAAA,GAAV,EAAe,EAAE,CAGvB,GAAIuI,EAAAA,uBAAuB,CAAC,GAE1B,MAFmC,CACnC9J,AADoC,EACpCA,AADsC,WACtCA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,GAClB,EAGT,IAAM,CAHU,CAGQ,CACtB,MAL2C,CAAC,CAKpC,CAAE,EACV,GAAG,CAAI,AACb,CAFuB,AAElB,CAUD,OARA,IAAI,CAAC,QAAQ,CACX,IACE,IAAI,CAAC,kBAAkB,CAAC,EAAW,GAChC,IAD8B,AAC1B,CAAA,AAAC,GAAS,EAAT,EAD0C,AAC7B,CAAC,aAAa,CAAC,EAAO,EAAiB,CAAnB,GACtC,CAD8D,CAAC,EAC3D,CAAA,AAAC,GAAA,AAAO,CAD2C,EACxC,AACpB,CADqB,MACd,EAGF,EAAgB,QAAQ,AACjC,CAOO,IARiB,UAQH,CACnB,CAAO,CACP,CAAK,CACL,CAAI,CACJ,CAAY,CACJ,CACR,IAAM,EAAkB,CACtB,QAAQ,CAAEqB,EAAAA,KAAK,EAAE,CACjB,GAAG,CAAI,AACb,CAAK,CAEK,EAAemH,EAAAA,QAAf,aAAoC,CAAC,GAAW,EAAU,EAAd,CAAA,EAAI,CAAgB,CAAC,GACjE,EAAY7H,EAD4D,AAC5DA,CAD6D,IACzE,MAAuB,CAAC,GACxB,EAAgB,EAClB,AAFiC,CAAC,GAE9B,CAAC,gBAAgB,CAAC,EAAc,EAAO,GAAF,AACzC,IAAI,CAD8B,AAC7B,OADqD,WACnC,CAAC,EAAS,GAOrC,EAPmC,KAEnC,IAAI,CAFgD,AAE/C,CAFgD,OAExC,CACX,IAAM,EAAc,IAAI,CAAA,AAAC,GAAS,EAAT,CAAN,CAAmB,CAAC,aAAa,CAAC,EAAO,EAAiB,CAAnB,GAC1D,EAAY,MAD6E,CAAd,AAC3E,AAD0F,CAAC,CAC/E,CAAY,OAAO,EAG1B,EAAgB,QAAQ,AACjC,CAOO,IARiB,QAQL,CAAC,CAAK,CAAS,CAAI,CAAc,CAAY,CAAkB,CAChF,IAAM,EAAUU,EAAAA,GAAV,EAAe,EAAE,CAGvB,GAAI,GAAM,CAAF,gBAAE,EAAqBuI,EAAAA,uBAAuB,CAAC,EAAK,EAAD,eAAkB,CAAC,CAE5E,CAF8E,MAC9E9J,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,GAClB,EAGT,IAAM,CAHU,CAGQ,CACtB,MAL2C,CAAC,CAKpC,CAAE,EACV,GAAG,CAAI,AACb,CAFuB,AAElB,CAEK,EAAwB,EAAM,GAAD,kBAAC,EAAyB,CAAA,CAAE,CACzD,EAAuC,EAAsB,aAA5C,IAA6D,CAC9E,CAD4D,CACZ,EAAsB,mBAAD,GAA3C,IAAsE,CAChG,EAAe,EAAsB,EAAM,GAAD,CAAK,CAAC,CAOtD,OALA,IAF0C,AAEtC,CAAC,QAAQ,CACX,IAAM,IAAI,CAAC,aAAa,CAAC,EAAO,EAAiB,CAAnB,EAAwC,EAAc,GACpF,GAGK,EAAgB,AAJ0B,EAAmC,EAAjC,GACrC,CAGiB,AACjC,CAKO,IANiB,KAJ0F,CAAC,IAU9F,CAACgI,CAAO,CAAiB,CAC5C,IAAI,CAAC,WAAW,CAACA,GAEjBvG,EAAAA,IAFwB,CAAC,QAEZ,CAACuG,EAAS,CAAE,IAAI,EAAR,AAAU,CAAA,CAAO,CAAC,AACzC,CAgBO,CAjB0B,KAiBpB,EAA8B,CACzC,OAAO,IAAI,CAAC,IAAI,AAClB,CAKO,UAAU,EAAM,CACrB,OAAO,IAAI,CAAC,QAAQ,AACtB,CAMO,cAAc,EAA4B,CAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,AAChC,CAMO,YAAY,EAA0B,CAC3C,OAAO,IAAI,CAAC,UAAU,AACxB,CAWO,MAAM,KAAK,CAAC,CAAO,CAAiC,CACzD,IAAM,EAAY,IAAI,CAAC,EAAjB,QAA2B,CACjC,GAAI,CAAC,EACH,OADY,AACL,EADO,AAIhB,EAHa,EAGT,CAAC,IAAI,CAAC,OAAO,CAAC,CAElB,IAAM,EAAiB,MAAM,IAAI,CAAC,uBAAuB,CAAC,GACpD,EAAmB,EADwC,CAAC,GACnC,EAAU,KAAK,CAAC,CAAP,EAExC,IAFsD,CAAC,EAEhD,GAAkB,CAC3B,CAWO,MAAM,GAZJ,EAYS,CAAC,CAAO,CAZiB,AAYgB,CACzD0B,EAAAA,yBAAyB,CAAC,IAAI,CAAC,CAC/B,IAAM,EAAS,MAAM,IAAI,CAAC,KAAK,CAAC,GAGhC,IAHuC,CAAC,EACxC,IAAI,CAAC,UAAU,EAAE,CAAC,OAAA,CAAU,GAC5B,EADiC,EAC7B,CAAC,IAAI,CAAC,OAAO,CAAC,CACX,CACT,CAKO,IANQ,cAMU,EAAqB,CAC5C,OAAO,IAAI,CAAC,gBACd,AAD8B,CAMvB,iBAAiB,CAAC,CAAc,CAAwB,CAC7D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAC7B,CAMO,IAAI,EAAS,EAEhB,GATuC,CAAC,AASpC,CAAC,UAAU,EAAC,EAMhB,EALN,EAKU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAE,CAAA,CAAM,GAAK,EAAK,EAAD,QAAW,CAAC,WAAW,EAAC,CALhF,EAMM,AACA,IAAI,CAAC,kBAAkB,EAAE,AAE7B,CAOO,oBAAoB,CAAsC,CAAe,CAAyB,CACvG,OAAO,IAAI,CAAC,aAAa,CAAC,EAAe,AAC3C,CASO,YAVoC,EAUtB,CAACG,CAAW,CAAqB,CACpD,IAAM,EAAqB,IAAI,CAAC,WAA1B,EAAuC,CAACA,EAAY,IAAI,CAAC,CAG/DC,EAAAA,GAHyD,aAGzC,CAAC,IAAI,CAAED,EAAa,IAAI,CAAC,MAAP,OAAoB,CAAC,CAEnD,AAAC,GACHE,EAAAA,aADqB,EAAE,OACD,CAAC,IAAI,CAAE,CAACF,EAAY,CAAC,AAE/C,CAKO,SAPsC,AAO7B,CAAC,CAAK,CAAS,EAAkB,CAAA,CAAE,AAAhB,CAAwB,CACzD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAE,EAAO,GAAF,AAElC,CAFwC,CAAC,EAErC,EAAMG,EAAAA,mBAAmB,CAAC,EAAO,GAAF,CAAM,CAAC,IAAI,CAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAE9F,IAAK,IAAM,KAAc,EAAK,EAAD,CAAlB,QAAmB,EAAe,EAAE,CAAE,AAC/C,EAAMC,CAAN,CAAMA,iBAAiB,CAAC,EAAKC,CAAF,CAAEA,4BAA4B,CAAC,IAK5D,IAAI,CAAC,CALiE,CAAC,CAAC,SAKvD,CAAC,GAAG,AAAE,CAAD,GAAK,CAAA,AAAC,GAAgB,IAAI,CAAC,IAArB,AAAyB,CAAC,gBAAgB,CAAE,EAAO,GAAF,AAC/E,CAKO,QANsF,CAAC,CAAC,CAM7E,CAAC,CAAO,CAAqC,CAE7D,GAAM,CAAE,OAAO,CAAE,CAAmB,CAAE,WAAW,CAAE,EAA0BjG,EAAAA,mBAA1B,AAA0B,CAAoB,CAAI,IAAI,CAAC,QAAQ,CAClH,GAAI,YAAA,GAAgB,EAAS,CAC3B,IADyB,AACnB,EAAe,EAAQ,KAAD,AAAC,EAAS,CAAA,CAAE,CACxC,GAAI,CAAC,EAAa,OAAA,EAAW,CAAZ,AAAa,EAAqB,CACjDnE,EAAAA,WAAAA,EAAeE,CADgC,CAChCA,KAAK,CAAC,IAAI,CAAC,GAC1B,MACF,CACA,EAAa,OAAA,CAAU,EAAa,AAAxB,OAAwB,EAAW,CAAZ,CACnC,AAJ6D,CAAC,CAIjD,UAAD,CAAC,CAAc,EAAa,CAD0B,SAC3B,CAAC,EAAe,EACvD,EAAQ,KAAD,AAAC,CAAQ,CAClB,KAAO,CACL,GAAI,CAAC,CAFuB,CADkD,AAGjE,KAAD,EAAC,EAAW,CAAC,EAAqB,CAC5CF,EAAAA,WAAAA,EAAeE,CAD2B,CAC3BA,KAAK,CAAC,IAAI,CAAC,GAC1B,MACF,CACA,EAAQ,KAAD,EAAC,CAAU,EAAQ,KAAD,EAAC,EAAW,EACrC,AAJ6D,CAAC,CAItD,KAAD,MAAC,CAAc,EAAQ,CAD0B,IAC3B,MAAC,EAAe,CAC/C,CAEA,IAAI,CAAC,IAAI,CAAC,WAH4D,QAGzC,CAAE,GAE/B,IAAM,AAFgC,CAAC,CAE3BmK,EAAAA,qBAAqB,CAAC,EAAS,IAAI,CAAN,AAAO,IAAI,CAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAIpG,IAAI,CAAC,YAAY,CAAC,EACpB,CADuB,AAMhB,CANiB,iBAMC,CAAC,CAAM,CAAmB,CAAQ,CAAgB,EAAgB,CAAC,CAAQ,CAApB,AAC9E,GAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAE,CAOnC,IAAM,EAAM,CAAN,AAAO,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CACArK,EAAAA,EADA,SACA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,GAAA,IAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,SAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CACA,CACA,CA6QA,EA/QA,AA+QA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,EAAA,IAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAA,GAAA,CAOA,CAPA,CAAA,AAOA,CAAA,GAAA,IAAA,IAAA,CAAA,GAAA,AAQA,CARA,CAAA,KAEA,EAAA,GAAA,CAAA,GAMA,IANA,CAOA,CADA,CACA,IAPA,CAAA,CAOA,CAAA,EACA,CAAA,AACA,CAFA,AAiNA,IAAA,CAAA,CAAA,CAAA,GAjNA,AAiNA,CAjNA,AAiNA,CAAA,CACA,IAAA,EAAA,IAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CACA,CADA,EAEA,EAAA,IADA,EAAA,CACA,CAAA,GAAA,KAAA,GAAA,AAEA,CAFA,AAQA,CARA,CAAA,IAQA,YAAA,CAAA,CAAA,CAAA,CAGA,GAFA,IAAA,CAAA,IAAA,CAAA,gBAAA,CAAA,GAEA,IAAA,CAAA,AAFA,CAAA,SAEA,EAAA,EAAA,IAAA,CAAA,UAAA,CACA,CADA,EACA,CACA,OAAA,MAAA,IAAA,CAAA,UAAA,CAAA,IAAA,CAAA,EACA,CAAA,KADA,CAAA,AACA,EAAA,CAEA,GAFA,IACAF,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,+BAAA,CAAA,GACA,CAAA,CAAA,AACA,CAFA,AAMA,CANA,MAKAF,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,oBAAA,CAAA,CACA,CAAA,CACA,AADA,CASA,OAAA,EAAA,CAEA,CAKA,kBAAA,EAAA,CACA,GAAA,cAAA,CAAA,CAAA,CAAA,IAAA,CAAA,QAAA,CACA,IAAA,CAAA,aAAA,CAAAoK,EAAAA,iBAAA,CAAA,IAAA,CAAA,GACAL,EAAAA,OADA,CAAA,cACA,CAAA,IAAA,CAAA,EACA,CAGA,SAJA,CAAA,aAIA,CAAA/B,CAAA,CAAA,CAAA,CAAA,CAEA,IAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,CACA,GAAA,EACA,EADA,AACA,CADA,CACA,GAAA,GAAA,GAAA,EAAA,MAAA,CAEA,GAAA,GAKA,IAAA,GALA,CAKA,CALA,CAKA,GAJA,GAAA,EAEA,EAFA,CAEA,EAEA,EAFA,CAAA,AAGA,GAAA,EAAA,EADA,CAAA,MACA,EAAA,OAAA,IAAA,EAAA,CACA,EADA,AACA,GACA,CADA,CAAA,GAEA,CACA,CAMA,IAAA,EAAA,IAAA,GAAAA,EAAA,MAAA,CAAA,CACA,GAAA,CAAA,GAAAA,EAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAGAvG,EAAAA,QAHA,KAGA,CAAAuG,EAAA,CACA,GAAA,GADA,AACA,CAAA,GAAA,GAAA,CAAA,SAAA,CAAA,CAAA,AACA,MAAA,CAAAA,EAAA,MAAA,CAAA,CAAA,MAAA,CAAA,GAAA,EACA,CAAA,CADA,AACA,CACA,EAFA,CAAA,CAEA,CAAA,cAAA,CAAAA,GAEA,CAYA,KAdA,CAAA,AAcA,uBAAA,CAAA,CAAA,CAAA,CACA,IAAA,EAAA,CAAA,CAEA,EAFA,GAEA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA,AAGA,GAHA,AACA,MAAA,IAAA,OAAA,CAAA,GAAA,IAAA,MAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAEA,CAFA,AAEA,IAAA,CAAA,cAAA,CACA,CADA,MACA,EAEA,EAFA,CAGA,CAEA,EAHA,EAAA,GAGA,CACA,CAGA,GAJA,OAIA,EAAA,CACA,OAAA,IAAA,CAAA,GAAA,CAAA,UAAA,EAAA,CAAA,OAAA,OAAA,IAAA,IAAA,CAAA,UAAA,AACA,CAgBA,aAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CACA,IAAA,EAAA,IAAA,CAAA,UAAA,EAAA,CACA,EAAA,MAAA,CAAA,GAAA,CAAA,CAAA,IAAA,CAAA,aAAA,CAAA,CAWA,MAVA,CAAA,EAAA,EAAA,UAAA,EAAA,GAAA,MAAA,EAAA,CAAA,AACA,EAAA,EAAA,UAAA,CAAA,CAAA,CAAA,CAGA,IAAA,CAAA,IAAA,CAAA,iBAAA,CAAA,EAAA,GAAA,AAEA,CAFA,CAAA,AAEA,GAAA,CAAA,EAAA,AACA,EAAA,YAAA,EAAA,CAAA,EAAA,GAAA,KAAA,EAAA,EAAA,EAAA,MAAA,CAAA,CAGAqC,EAAAA,YAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,IAAA,CAAA,GAAA,EAAA,EAAA,CAAA,GAAA,CACA,EADA,CAAA,CACA,EAAA,CAAA,GAAA,CAIA,IAAA,CAAA,IAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAEA,CAFA,CAAA,AAEA,CAAA,OAAA,CAAA,CACA,KAAA,CAAA,CAAA,GAAA,EAAA,CAAA,OAAA,EAAA,KAAA,CAAA,GAAAjC,EAAAA,wBAAA,CAAA,EAAA,CAAA,CACA,GAAA,EAAA,CAAA,EADA,KACA,AACA,CAAA,CAIA,EAAA,CAAA,oBAAA,CAAA,CACA,uBAHAE,CAGAD,CAHAC,uBAGA,WAHA,CAAA,IAAA,CAAA,GAIA,GAAA,EAAA,CAAA,GAJA,CAAA,gBAIA,AACA,CAAA,EAfA,GAmBA,AAnBA,CA2BA,aAAA,CACA,CAAA,CACA,EAAA,CAAA,CAAA,CACA,EAAA/E,EAAAA,QAAA,OAAA,EAAA,CACA,EAAAkD,EAAAA,UAAA,OAAA,EAAA,CACA,CAKA,OAJA3G,EAAAA,WAAA,EAAA,EAAA,IACAE,CADA,CAAA,AACAA,EADA,EAAA,CACA,CAAA,GAAA,CAAA,CAAA,uBAAA,EAAAsK,EAAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,CAGA,IAAA,CAAA,aAAA,CAAA,EAAA,EAAA,CAAA,CAAA,GAAA,IAAA,CAAA,AACA,EADA,CAEA,EAAA,CAFA,CAAA,GACA,GACA,CADA,AAEA,AACA,IACAxK,EADA,AACAA,IADA,OACA,EAAA,CACA,EAAA,GACAE,EAAAA,CADA,CAAA,EAAA,CACA,CAAA,GAAA,CAAA,EAAA,GADA,CACA,GAAA,CAAA,CACA,EAAA,GACAA,EAAAA,CADA,CAAA,EAAA,CACA,CAAA,GADA,CACA,CAAA,EAAA,IAAA,GAAA,CAAA,CAEAA,EAAAA,KAAA,CAAA,IAAA,CAAA,GAIA,CAAA,CAEA,CANA,AAqBA,CArBA,YAqBA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CACA,IAAA,EAAA,IAAA,CAAA,UAAA,EAAA,CACA,YAAA,CAAA,CAAA,CAAA,EAEA,EAAA,EAAA,CAFA,EAGA,EADA,AACA,CADA,CACA,EADA,CACA,AACA,EADA,AACA,CADA,CACA,EAFA,CAEA,AADA,CACA,CAAA,CAAA,OAAA,CACA,EAAA,CAAA,YAAA,WAAA,EAAA,EAAA,EAAA,CAAA,CAKA,EAAA,CALA,IAKA,IAAA,KAAA,EAAA,EAAA8C,CAAA,CAAAA,KAAA,UAAA,CAAA,GACA,GAAA,GAAA,CADA,CAAA,EACA,IAAA,EAAA,OAAA,GAAA/B,EAAAA,WAAA,GAAA,EAAA,CAAA,EAEA,OADA,IAAA,CAAA,EADA,EAAA,cACA,CAAA,aAAA,CAAA,OAAA,CAAA,CACAoG,EAAAA,mBAAA,CACA,EACA,CAAA,qBADA,4DACA,EAAA,EAAA,CAAA,CAAA,GAKA,GALA,CAKA,EAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAEA,AAFA,OAEA,IAFA,AAEA,CAAA,aAAA,CAAA,EAAA,EAAA,CAAA,CAAA,GACA,IAAA,CAAA,EADA,EAEA,EAFA,CAEA,CADA,GACA,CADA,CACA,CAAA,EAEA,MAFA,AACA,IAAA,CAAA,kBAAA,CAAA,iBAAA,CAAA,GACA,EAAA,OADA,CAAA,cACA,oCAAA,CAAA,QAGA,AACA,EADA,EACA,AADA,EAAA,EAAA,UAAA,IAAA,CACA,CACA,CADA,CADA,AAgKA,AA1JA,MAJA,GA8JA,AACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAA,CAAA,EAAA,EAAA,AA9JA,CAAA,MAAA,EA0JA,CAIA,GAAA,0BAAA,CAAA,CACA,GAAAnF,EAAAA,UAAA,CAAA,GACA,OAAA,EAAA,IADA,AACA,CAAA,AACA,AAFA,EAAA,EAGA,CADA,EACA,CAAAN,CADA,AADA,CAEAA,aAAA,CAAA,IAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EACA,GADA,GACA,EAAA,GAEA,OAAA,CACA,CAAA,CAAA,AACA,CAAA,CAFA,CAFA,CAKA,AALA,CAIA,AAJA,KAKA,EAAA,CAAA,EAAA,EAAA,WAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,EAEA,GAAA,CAAAA,EAAAA,aAAA,CAAA,IAAA,IAAA,EAAA,CAAA,EACA,GADA,CAAA,EACA,EAAA,GAEA,GAHA,IAGA,CACA,EAKA,AArLA,GA6KA,CAAA,CAAA,IAQA,AACA,CAAA,CACA,CAAA,CARA,AASA,CAAA,CACA,CAAA,CAzLA,CA2LA,GAAA,KANA,OAMA,CAAA,uBAAA,CAAA,gBAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EACA,EAAA,EAEA,CAHA,EACA,AAEA,EAAA,IAAA,CAFA,CAGA,IADA,GACA,CADA,CAAA,AACA,CADA,CACA,GAGA,CAHA,CAAA,CAAA,AAGA,EAAA,GAAA,CAHA,AAKA,GAAA,GAAA,EAAA,CAEA,CAJA,CAAA,CAAA,CAIA,EAAA8I,EAFA,AAEAA,QAAA,yBAAA,CAAA,GAGA,GAAA,GAAA,KAHA,CAAA,AAGA,EAAA,AAAAtF,EAAAA,gBAAA,CAAA,EAAA,GAEA,OAFA,AAEA,CAFA,CAAA,EAAA,AAEA,CAIA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,GADA,AAEA,EAIA,EAAArD,EAAAA,GALA,CAAA,CAKA,CAAA,EALA,AAKA4I,EAAA,AAAAA,CAAA,IAJA,EAAA,0BAIA,CAAA,IAHAtF,EAAAA,eAGA,CAAA,CAAA,EAHA,EAAA,AAKA,CAGA,GAAA,EAAA,KAAA,CAAA,CACA,IAAA,CADA,CACA,EAAA,CAEA,EAAA,EAAA,KAFA,AAEA,CAEA,EAFA,EAEA,EAFA,EAEA,IAAA,CAAA,EAAA,CAEA,GAAA,GAAA,GAFA,GAEA,EAAA,AAAAD,EAAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,CACAwF,EAAAA,KADA,CAAA,YACA,CAAA,EAAA,GACA,CADA,CAAA,KAAA,CAEA,CAGA,GAAA,EAAA,CACA,IAAA,EAAA,EAAA,GACA,AAFA,CACA,CAKA,AALA,EAKA,EALA,EAKA,CAAA,AALA,IAEAvF,AADA,EAAA,AACAA,CAGA,MAAA,CAAA,WAHA,EAAA,CACA,EAAA,IAAA,CAAA,GAIA,CAAA,AAJA,CAAA,EAAA,EAKA,CADA,CACA,IAAA,CAAA,EAEA,CAEA,CAJA,CAAA,EAAA,AAIA,EAAA,EAAA,KAAA,CAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CACA,GACA,EAFA,AAEA,IAAA,GADA,EAAA,SACA,CAAA,aAAA,CAAA,MAAA,CAAA,GAGA,EAAA,KAAA,CAAA,CACA,AAJA,CAKA,AALA,CAOA,GAAA,AAJA,EAIA,CACA,GAAA,EALA,AAKA,KAAA,CAAA,CAGA,IAAA,CAHA,CADA,AAIA,EAAA,KAAA,CAAA,KAAA,CAAA,CACA,EAAA,YAAA,SAAA,CAAA,CACA,GAAA,EAAA,GAAA,kBAAA,CACA,yBAAA,CAAA,CACA,CAAA,AACA,CACA,OAAA,EAAA,EAAA,CAHA,CAIA,CACA,CAFA,AAIA,CAJA,MAIA,CAJA,AAKA,EA5QA,GAuQA,CAvQA,CAAA,EAAA,EAAA,EA2QA,CA3QA,AACA,CADA,CAAA,AAEA,CAAA,AAFA,EAGA,IAAA,CAAA,IACA,CAHA,CAAA,CAGA,IAAA,GADA,AACA,EAAA,CAEA,CAHA,EAEA,IAAA,CAAA,GADA,eACA,CAAA,aAAA,CAAA,GACA,EAAA,CAGA,IAAA,EAJA,AAIA,CAJA,AAIA,CAAA,CAFA,CADA,CACA,EAEA,CAFA,EAAA,EAAA,EAAA,EAEA,MAAA,CACA,IAAA,CAAA,kBAAA,CAAA,aAAA,CAAA,MAAA,CAAA,EACA,CACA,MAFA,AAEA,CAFA,CAEA,CAAA,EAAA,EAAA,aAAA,IAAA,uBAAA,CAAA,CACA,AADA,CAGA,IAAA,EAAA,EAAA,GAAA,OAAA,EAAA,EAAA,EAAA,UAAA,EAAA,CAKA,GAJA,GAAA,GACA,CADA,GAAA,AACA,CAAA,CADA,sBACA,CAAA,EAAA,GAGA,EAHA,AAGA,CACA,IAGA,EAHA,AAGA,AAHA,EAJA,CAIA,AAJA,CAGA,UAIA,AAHA,CAGA,AAHA,GAGA,MAHA,EAAA,MAGA,mBAHA,GAAA,CAAA,EACA,EAAA,KAAA,CAAA,EAAA,IAAA,CAAA,CAAA,MAAA,EAAA,CAAA,CAGA,EAAA,CAAA,EAAA,AACA,IAAA,CAAA,MADA,YACA,CAAA,aAAA,CAAA,MAAA,CAAA,EAEA,CAKA,IAAA,EAAA,EAAA,KAPA,CAAA,KAOA,CAAA,IAAA,CAUA,OATA,GAAA,GAAA,EAAA,KAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,QAAA,EAAA,CAEA,EAAA,YAAA,IAAA,CAAA,CACA,GAAA,CAAA,CACA,MAAA,CAHA,QAAA,CAIA,CAAA,CAGA,IAAA,CAAA,SAAA,CAAA,EAAA,GACA,CACA,AAFA,CAEA,AAFA,EAGA,IAAA,CAAA,AAHA,IAGA,CAAA,AAFA,IAGA,EADA,CACA,EAAA,CADA,GACA,EAAA,CAAA,EACA,GADA,CAAA,EAAA,AACA,CAaA,IAdA,CACA,EAGA,IAAA,CAAA,gBAAA,CAAA,EAAA,CACA,GADA,MACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,UAAA,AACA,CAAA,CACA,IAAA,CAAA,CACA,UAAA,EAAA,CACA,CAAA,CACA,CAFA,gBAEA,CAAA,CACA,CAAA,CAAA,CACA,EAFA,AAGA,CAAA,eADA;AACA,QAAA,EAAA,EAAA,CAAA,CAEA,CAAA,CAFA,AAEA,AACA,CAKA,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,cAAA,EAAA,CAEA,IAAA,CAAA,cAAA,CAAA,GAAA,CAAA,GAAA,IAAA,CAAA,AACA,IADA,AAEA,CAFA,AACA,GACA,CADA,AACA,cAAA,EAAA,CACA,GAEA,AADA,EADA,EAGA,EADA,EACA,CAAA,CADA,aACA,EAAA,CAEA,IAAAoE,EAAA,AAAAA,wBAAA,EAAA,AACA,IAAA,CAAA,kBAAA,CAAA,gBAAA,CAAA,GAGA,GAGA,CAKA,EARA,GAHA,CAAA,QAWA,EAAA,CACA,IAAA,EAAA,IAAA,CAAA,CAAA,QAAA,CAEA,OADA,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CACA,MAAA,CAAA,OAAA,CAAA,GAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IACA,CADA,CAAA,CACA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,CAAA,CACA,MAAA,QACA,MAAA,KACA,QAAA,GACA,CACA,CAAA,AACA,CAAA,CAAA,AACA,CAKA,GARA,WAQA,EAAA,CACAzJ,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,sBAAA,CAAA,CAEA,IAAA,EAAA,IAAA,CAAA,CAAA,aAAA,EAAA,CAEA,GAAA,CAAA,GAAA,EAAA,MAAA,CAAA,CACAF,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,CACA,MACA,CAGA,GAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CACAF,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,yCAAA,CAAA,CACA,MACA,CAEAF,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,mBAAA,CAAA,GAEA,IAAA,CAFA,CAEAuK,AAFA,EAEAA,IAAA,sBAAA,CAAA,EAAA,IAAA,CAAA,CAAA,OAAA,CAAA,MAAA,EAAA1F,EAAAA,WAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAIA,IAAA,CAAA,YAAA,CAAA,EACA,CAeA,KAhBA,CAAA,iICx6CZ,SAAS,AACd,CAAO,CACP,CAAsB,CACtB,CAAQ,CACR,CAAM,CACND,CAAG,EAEH,IAAM,EAA8B,CAClC,GARiC,CAOtB,GACJ,CAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EACnC,AADqC,CAClC,CAEG,GAAU,GAAG,EAAL,AAAO,CACjB,EAAQ,GAAA,CAAM,CACZ,AADK,IACD,CAAE,EAAS,GAAG,CAAC,EAAL,EAAS,CACvB,OAAO,CAAE,EAAS,GAAG,CAAC,EAAL,KAAY,CACnC,CAAK,CAGC,AAAE,CAAD,EAAaA,IAChB,CADmB,CACX,CADa,AAAP,CAAC,CACP,CAAMC,CAAP,CAAOA,WAAW,CAACD,EAAG,CAAC,CAG5B,IACF,EAAQ,KAAD,AAAC,CAAQ,CAAA,CAAA,CAGlB,IAAM,EAQC,CAHgC,AATb,CAIpB,AAMJ,CAV0B,EAIf,CAMP,CAAE,UAAU,AACpB,CAAG,CAPsC,EAQP,CAPhC,IAD8C,CAAC,EACxCG,CAD+B,CAC/BA,cAAc,CAAkB,EAAS,CAAC,EAAK,CAAC,AACzD,CADgD,AAAO,iHC5BhD,SAAS,AAA+B,CAAO,EAAuB,AAC3E,IAAM,EAAc,EAAQ,KAAD,EAArB,EAA+B,EAAE,GAAG,CACpC,EACJ,EAH0C,CAG7B,IAAA,EAAQ,CADjB,CACO,CAAuB,OAAA,CAAF,AAAY,CAAC,EAAA,GAAA,IAAA,CAAA,CAAA,EAAA,GAAA,OAAA,CAAA,CAAA,MAAA,CAEA,GAAA,IAAA,CAFA,WAEA,CAAA,CACA,GAAA,EAAA,KAAA,WAAA,CACA,OAAA,CAAA,CACA,GAAA,GAAA,CAAA,QAAA,IAAA,CAAA,CAAA,CAAA,CAAA,AACA,GAAA,EAAA,IADA,CACA,WAAA,EAAA,OACA,AADA,CACA,AACA,CAAA,AACA,6ICJ1C,SAAS,EAAiB,CAAW,CAAe,CAAK,EAAuB,AACrF,OAAO,EADuB,AACX,EAAM,GAAD,EAAC,EAAP,AAAgB,EAAE,CAAE,CAAC,CAAC,AAC1C,CAcO,SAAS,EAA6C,CAAK,EAAa,OAG7E,AAdOzE,EAAAA,EAcH,KAdU,CAcY,AAdX,IAAU,CAWgB,AAGV,AAdX,CAcY,EAAE,OAAT,gBAdA,IAA+B,EAAoD,AAA3C,GAAT,KAA4D,SAA5C,EAAM,GAAD,sBAAC,CAerE,CAAC,EAAA,EAAA,GAAA,IAAA,CAAA,EAAA,EAAA,EAAA,GAAA,sBAAA,CAAA,CAAA,CAAA,CAGA,EAAA,GAAA,IAAA,AACA,CAKA,SAAA,EAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,CACA,IAAA,AAFA,CAEA,CADA,CACA,GAAA,CAAA,EAAA,EAAA,GAAA,QAAA,CAAA,IAAA,CACA,KAAA,CAAA,EAAA,EACA,CAAA,CAEA,CAHA,CAAA,AAGA,EAAA,EAAA,GAKA,EALA,CAAA,GAAA,CACA,EADA,AACA,GAJA,CAIA,EAAA,EAAA,CACA,EAAA,OAAA,GAAA,CAAA,QAAA,EAAA,CAAA,CAGA,CACA,CAJA,OAGA,4CAoIA,SAAA,AACA,CAAA,CACA,CAAA,CACA,EAAA,GAAA,GAAA,CACA,CAAA,CACA,CAAA,AALA,EAOA,IAAA,EAAA,CACA,EADA,MACA,CAAA,GAAA,CAAA,OAAA,OACA,CACA,CAAA,CAEA,EAHA,CAGA,GAAA,GAAA,CAAA,SAAA,QAAA,CAAA,CACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,GAAA,QAAA,CAAA,CACA,EAAA,IAAA,EAAA,EAAA,CACA,EAAA,GAAA,MAAA,CAAA,CACA,MAAA,CAAA,CACA,CACA,KAAA,CAAA,EACA,KADA,KACA,CAAA,QAAA,CAAA,CAAA,AACA,CAAA,CAEA,AADA,CACA,CAHA,AAIAiH,EAAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AAEA,CAEA,GAAAiB,EAAAA,qBAAA,CAAA,GAAA,CACA,GADA,AACA,CADA,2BACA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAMA,KANA,EAEA,EAAA,GAAA,KAAA,CAAA,CACA,OAAA,CAAA,EACA,MAAA,CAAA,CACA,CAAA,CACA,CACA,CAGA,GAJA,IAGA,EAAA,GANA,AAMA,IAAA,CAAA,EACA,CACA,CAPA,GAKA,AACA,sBA3EA,SAAA,AACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAGA,IAAA,EADA,AACA,GADA,CAAA,EANA,CAMA,AACA,EADA,EAAA,EAAA,EAAA,CAAA,CACA,QADA,EACA,CACA,OAAA,EAAA,EACA,EADA,EACA,CAAA,SAAA,AACA,CAAA,CAEA,CAAA,EAAA,EAAA,CAAA,AArDA,GAqDA,MApDA,AADA,CACA,CACA,CAAA,AAmDA,CAlDA,CAAA,CACA,CAAA,EAEA,GANA,AAMAlI,EAAAA,OAAA,CAAA,GACA,MADA,AACA,CADA,AACA,EADA,KACA,EAAA,CAMA,GAFA,EAAA,CAJA,MAIA,EAAA,EAAA,EAEAoB,EAAAA,AAFA,aAEA,CAAA,GAAA,CACA,IAAA,CADA,CAAA,AACA,GAAA,GAAA,MAAA,CAAA,EAAA,CAAA,cAAA,CACA,EAAA,CAAA,GAAA,YAAAmJ,CAAA,CAAAA,AAAA,eAAA,CAAA,EAAA,EAAA,CAAA,CAEA,EAAA,AAnEA,CAiEA,OAAA,CAAA,AAjEA,CAAA,CAmEA,CAnEA,AACA,IAAA,IAAA,IAAA,CAAA,CAkEA,CAjEA,CADA,CAAA,CACA,KAFA,CAEA,CAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EAAA,CAAA,AACA,CADA,GACA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,CADA,EACA,KAAA,QAAA,KAAA,CACA,CADA,MACA,CAEA,CAIA,EAwDA,CA9DA,EA+DA,GAAA,EACA,CAFA,CAAA,IAEA,CAAA,EAAA,EADA,AACA,CAGA,CAJA,EACA,CAGA,EAAA,AA3DA,EAwDA,GAGA,IA3DA,CAAA,EAAA,AACA,GAAA,IA0DA,EA1DA,GAAA,GAAA,CADA,KACA,EAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CACA,CADA,GACA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,EAAA,qBAAA,CAAA,CAMA,MAJA,SAAA,GAAA,GAAA,MAAA,EAAA,EAAA,OAAA,EAAA,OAAA,GACA,GAAA,CAAA,GAAA,YAAA,EAAA,EAAA,OAAA,CAAA,EAAA,EAGA,CACA,CAAA,GAAA,EADA,OACA,GAAA,GAAA,MAAA,EAAA,EAAA,OAAA,EAAA,OAAA,CACA,OAAA,EAAA,OAAA,CAGA,IAAA,EAAAF,EAAA,AAAAA,8BAAA,CAAA,GAIA,GAAAC,EAAAA,CAJA,CAAA,UAIA,CAAA,GACA,MADA,AACA,CADA,AACA,EADA,wDACA,EAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAGA,IAAA,EAOA,AAPA,OAAA,EAOA,CAAA,EACA,AADA,GACA,CACA,EATA,EASA,EAAA,KAFA,CAEA,CAAA,cAAA,CAAA,GAAA,AACA,CADA,MACA,EAAA,EAAA,KAAA,EAAA,IAAA,CAAA,IAAA,MAAA,CACA,CAAA,KAAA,CAEA,CACA,AAJA,EAVA,GAEA,MAFA,AAEA,CAFA,AAEA,EACA,GAAA,MAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,IAAA,KACA,kCAAA,EAAA,EAAA,CAAA,AACA,CADA,CAkCA,GACA,EAAA,GAAA,CADA,AACA,CADA,gBACA,EAAA,KAAA,CAAA,GAGA,IAHA,CAAA,EACA,EAAA,OAAA,CAAA,EAEA,CAAA,EAAA,EAFA,AAEA,AACA,CAIA,GALA,CAKA,EAAA,GAAA,CAAA,iBAAA,EAAA,KAAA,CAAA,GAGA,MAHA,CACA,CADA,CACA,OAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAEA,CAAA,EAAA,EAFA,GAEA,EAAA,AACA,EAkBA,EAAA,EAAA,CAnBA,CAmBA,GAEA,CAFA,CAAA,AAEA,AAFA,CAGA,CAHA,CAEA,OACA,CAAA,CACA,MAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,AACA,CAAA,AACA,CAAA,CASA,GAXA,IAIA,CAJA,GAKA,EADA,AACA,EADA,CACA,EAAA,CAAA,CAAA,CAAA,CAGAE,EAAAA,qBAAA,CAAA,KAAA,EAAA,OAAA,EAAA,CACAvD,EAAAA,IADA,CAAA,gBACA,CAAA,EAAA,GAEA,AAFA,CAGA,GAAA,CAAA,CACA,AAJA,CAAA,OAIA,CAAA,GAAA,CAAA,OACA,AADA,CACA,AACA,sTCzJL,OAAM,UAEHwD,EAAAA,MAAM,CAAI,AAKX,WAAW,CAAC,CAAO,CAAK,CAE7BC,EAAAA,gCAAgC,EAAE,CAElCC,EAAAA,8BAA8B,CAAC,GAE/B,IAFsC,CAAC,AAElC,CAAC,GAEN,IAFa,AAET,CAAC,AAFS,uBAEc,EAAE,AAChC,CAKO,kBAAkB,CAAC,CAAS,CAAW,CAAI,CAAkC,CAClF,IAAM,EAAQC,EAAAA,CAAR,oBAA6B,CAAC,IAAI,CAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAE,EAAW,GAGhF,CAHoF,CAAC,EAAP,GAC9E,EAAM,GAAD,EAAC,CAAQ,OAAO,CAEdhE,EAAAA,mBAAmB,CAAC,EAC7B,CAKO,EAN2B,CAAC,aAMZ,CACrB,CAAO,CACP,EAAuB,GAAlB,GAAwB,CAC7B,CAAI,CACgB,CACpB,OAAOA,EAAAA,mBAAmB,CACxBiE,EAAAA,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAE,EAAS,EAAO,EAAM,CAAf,AAAO,CAAM,EAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAErG,CAKO,gBAAgB,CAAC,CAAS,CAAW,CAAI,CAAc,CAAK,CAAkB,CAEnF,OADA,EAAyC,GAClC,CADsC,CAAC,GAClC,CAAC,gBAAgB,CAAC,EAAW,EAAM,EACjD,AAD+C,CAMxC,EAN+C,AAAb,CAAc,EADb,OAOvB,CAAC,CAAK,CAAS,CAAI,CAAc,CAAK,CAAkB,CAOzE,MAJI,AADgB,CAAC,EAAM,GAAD,CAAC,EAAQ,EAAM,AAC1B,EAAE,CADuB,MAAU,EAAE,MAAA,EAAU,EAAM,GAAD,MAAU,CAAC,MAAM,CAAC,MAAA,CAAS,CAAC,EAE7F,EAAyC,GAGpC,CAHwC,CAAC,GAGpC,CAAC,YAAY,CAAC,EAAO,EAAM,CAAR,CAAM,AACvC,CASO,EAVuC,CAAC,MAHH,KAavB,CAAC,CAAO,CAAW,CAAa,CAAkB,CAAK,CAAkB,CAC5F,IAAM,EAAA,AAAK,WAAA,GAAe,GAAW,EAAQ,KAAD,IAAC,CAAY,EAAQ,KAAD,IAAC,CAAY9J,EAAAA,KAAK,EAAE,CACpF,GAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAEpB,CAFsB,MACtBvB,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CACjE,EAAE,AAIX,GAAM,SAAE,CAAO,aAAE,CAAW,QAAE,CAAA,CAAO,CADrB,EACyB,EADrB,CAAC,IAC2B,MADjB,EAAE,CAG3B,EAAuC,CAC3C,WAAW,CAAE,EAAE,AACf,AAFqB,YAET,CAAE,EAAQ,KAAD,MAAY,CACjC,MAAM,CAAE,EAAQ,KAAD,CAAO,CACtB,OAAO,eACP,CACN,CAAK,AAEG,SAHS,CAGT,IAAc,IAChB,EAAkB,CADK,EAAE,KACP,CAAW,EAAQ,IAApB,CAAmB,GAAC,AAAQ,EAG3C,IACF,EAAkB,OADH,EAAE,KACC,CAAD,AAAkB,CACjC,QAAQ,CAAE,EAAc,QAAQ,CAChC,EADuB,YACT,CAAE,EAAc,WAAD,EAAc,CAC3C,WAAW,CAAE,EAAc,UAAU,CAAX,AAC1B,QAAQ,CAAE,EAAc,QAAQ,CAChC,EADuB,qBACA,CAAE,EAAc,WAAD,UAAsB,CAC5D,kBAAkB,CAAE,EAAc,WAAD,MAAkB,CAC3D,CAAO,CAGH,GAAM,CAAC,EAAwB,EAAY,CAAIuI,EAAAA,OAAJ,QAAd,OAAwC,CAAC,IAAI,CAAE,GACxE,EAD6E,CAAC,CAEhF,EAAkB,MADJ,EAAE,AACE,CAAW,CAC3B,KADe,AACV,CAAE,CACf,CAAO,EAGH,IAAM,EAAW6C,EAJM,AAINA,IAAX,iBAAgC,CACpC,EACA,EACA,IAAI,CAAC,QAFY,MAEE,CADG,CACD,CACrB,EACA,IADM,AACF,CAAC,MAAM,EAAE,EASf,OANAtL,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAE,EAAQ,KAAD,MAAY,CAAE,EAAQ,KAAD,CAAO,CAAC,CAIjF,IAAI,CAAC,YAAY,CAAC,GAEX,CACT,CADW,AAcK,GAhBY,CAAC,GAgBN,EAAS,CAG9B,IAAK,IAAM,KAFXF,EAAAA,CAEW,UAFXA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAExB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAE,CAC/C,IAAI,CAAC,MAAM,CAAC,EAAS,EAAE,IAAH,CAAQ,EAAE,CAGhC,IAAI,CAAC,MAAA,CAAS,CAAA,CAAE,CAChB,IAAI,CAAC,gBAAgB,CAAC,MAAA,CAAS,CAAC,CAChC,IAAI,CAAC,aAAA,CAAgB,CAAA,CAAE,CACvB,IAAI,CAAC,SAAA,CAAY,CAAA,CAAE,CAClB,IAAA,CAA+C,UAAA,MAAa,EAC7D,IAAI,CAAC,EADiE,YACjE,CAAiBgJ,EAAAA,iBAAiB,CAACQ,EAAAA,6BAA6B,CACvE,AADwE,CAM9D,aAAa,CACrB,CAAK,CACL,CAAI,CACJ,CAAY,CACZ,CAAc,CACa,CAgB3B,OAfI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAC1B,EAAM,GAAD,KAAC,CAAW,EAAM,GAAD,KAAC,EAAY,IAAI,CAAC,QAAQ,CAAC,QAAA,AAAQ,EAGvD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CACzB,EAAM,GAAD,KAAC,CAAW,CACf,GAAG,EAAM,GAAD,KAAS,CACjB,OAAO,CAAE,EAAM,GAAD,KAAS,EAAE,OAAA,EAAW,IAAI,CAAC,QAAQ,CAAC,OAAO,CACjE,CAAO,CAGC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAC5B,EAAM,GAAD,QAAC,CAAc,EAAM,GAAD,QAAC,EAAe,IAAI,CAAC,QAAQ,CAAC,UAAA,AAAU,EAG5D,KAAK,CAAC,aAAa,CAAC,EAAO,EAAM,CAAR,CAAsB,AAAhB,EACxC,CAKQ,OAN8C,IAAgB,CAAC,WAMxC,EAAS,CACtC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAA,AAAE,IACnB,IAAI,CAAC,CADwB,OAChB,CAAC,UAAU,EAAE,CAC5B,EAAO,IAAD,MAAC,CAAa,CAClB,gBAAgB,CAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAC1C,GAAG,EAAO,IAAD,MAAW,CAC9B,CAAS,AAEL,CAAC,CACH,AADI,CAEN,CAEA,SAAS,EAAyC,CAAS,EAAoB,AAC7E,IAAM,EAAiB/C,EAAAA,UAAjB,OAAkC,EAAE,CAAC,OADI,KACQ,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAC9F,GAAI,EAAgB,CAIlB,IAAM,EAAqB,GAAW,EAJtB,IAIoB,GAAW,EAAE,OAAA,GAAW,EAGxD,EAH4D,CAGZ,SAAS,EAAE,CAArC,EAAe,CAArC,KAAqC,CACvC,EAAe,GADuB,GACvB,CAAS,KAAV,IAAmB,CACxB,AAAC,IACV,EAAe,MAAA,CAAS,KAAV,AADc,EAAE,EACN,CAAS,AAErC,CACF,sJCpMO,SAAS,EAAiB,CAAM,EAAgB,AACrDlD,EAAAA,SAD8B,MACf,EAAE,CAAC,SAAS,CAAC,EAC9B,IADoC,CAAC,UA5B9B,SAAS,AACd,CAAW,CACX,CAAO,GAEe,IAAlB,AAAsB,CAJD,CAIb,AAAgB,KAAjB,AAAC,GACNzD,EAAAA,WAAW,CACbE,CADe,CACfA,KAAK,CAAC,MAAM,EAAE,CAGd2C,EAAAA,cAAc,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CAAC,8EAA8E,CAAC,AAC9F,CAAC,CAAC,EAGQY,AACd,EADcA,GACT,YADwB,EAAE,CACzB,MAAM,CAAC,EAAQ,KAAD,OAAa,CAAC,CAElC,IAAM,EAAS,IAAT,AAAa,EAAY,GAG/B,IAHsC,CAAC,CAAT,CAC9B,EAAiB,GACjB,EAAO,CADgB,CAAC,EAClB,AAAK,EAAE,CACN,CACT,CAHkB,IAEH,sLC7BU,IAAG,CAAA,SAAA,IACD,KAAK,CAAA,YAAA,SAsDzB,SACL,AADc,CACC,EAEf,SAAS,EAAI,CAAD,EAAI,CAAI,EAAmB,AACrCzD,AAJgC,EAIhCA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,EAAG,EAC5C,CAEA,CAHgD,CAAC,KAGjD,AAAO,IACL,IASI,EATE,CADU,CACE,EAAgB,GAElC,CAOc,CATR,CAEF,CAFqC,AAEpC,CAFqC,CAE7B,IAFoB,CAErB,MAAY,CACtB,CADwB,KAClB,AAAI,KAAK,CAAC,wCAAwC,CAAC,CAG3D,IAAM,EAAQ,EAAQ,KAAD,MAAY,CAAC,GAE9B,IAFqC,CAAC,CAkB1C,IAhBI,GAAa,EAgBR,EAAQ,CAAK,EAAgB,AAChC,EADU,CAEZ,CAlBwB,MAiBZ,EAAE,GACF,CAAC,GAIf,EAAa+I,EAAAA,GAJE,EAA4C,CAI3D,GAAsB,CACpB,UAAU,CAAC,UACT,EADqB,KACR,EAEb,CAFA,GAEM,EAAQ,CAFQ,KAEF,EAAM,GAAD,EAAM,EAAE,CAC7B,IACF,CADO,CACH,CADK,AACN,2CAA6C,CAAC,CAGjD,CAAK,CAAC,CAAC,CAAC,CAAC,OAAA,CAAU,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAEtC,EAAK,EAAD,CAAQ,EAAF,CAAQ,CAAF,CAAC,GAAM,CAAA,AAAC,CAAA,GAC3B,CADgC,CAC5B,CAAD,wBAA0B,CAAE,CAAC,CAAC,AACnC,CAAC,CAAC,CAEN,CAAC,CAAE,GAEP,CAEA,CAJY,CAAC,OAIJ,IACH,IAIJ,EAAQ,GAER,CANc,CAIP,AAEM,CAPU,AACP,GADgB,AAOf,CAFC,AAEA,CAFC,EAEnB,AAAqB,CAAc,CAAC,CAAd,CAAgB,CArH1B,KAAK,CAsHnB,AAtHmB,CAwHnB,AAxHmB,CAqH8B,AAAzB,CAA0B,OArH/B,MAwHJ,EAAKH,CAAQ,CAAY,AAArB,GAAwC,CAAK,EAAyC,AAGvG,CAH6C,EAGzC,CAAC,GAAWQ,EAAAA,EAAX,sBAAmC,CAACR,EAAU,CAAC,OAAH,OAAiB,CAAE,kBAAkB,CAAC,CAAC,CAGtF,CAHwF,MACxF,MAAM,EAAM,GAAD,CAAK,CAACA,GACjB,OACO,AAFkB,AAClB,CACA,AAFmB,AAClB,CACC,CAGX,GAAI,CACF,GAAI,AALa,CAAC,CAKN,KAAD,KAAC,EAAe,MAAM,EAAQ,KAAD,KAAW,CAACA,MAAe,EACjE,EAD0D,CAAC,AAAW,EAAE,CAClE,AAAI,KAAK,CAAC,gEAAgE,CAAC,CAGnF,IAAM,EAAS,MAAM,EAAU,IAAI,CAACA,EAAN,CAE1B,KAAA,CAEJ,CAJ4C,CAAC,AAEjC,CAER,GAEF,GAFQ,AAEJ,EAFM,AAEC,AAJQ,IAIT,GAAQ,EAAA,CAAG,aAAa,CAAC,CACjC,CADmC,CAC3ByC,EAAAA,CAAR,oBAA6B,CAAC,EAAO,IAAD,GAAQ,CAAC,aAAa,CAAC,CAAC,MACvD,GAAI,EAAO,IAAD,GAAQ,EAAA,CAAG,sBAAsB,CAAC,CACjD,CADmD,CAC3C,GAAR,EAAc,CAAA,CAAA,EAEX,GAAI,CAAC,EAAO,IAAD,CAFA,KAEC,GAAc,CAAC,EAAK,GAAG,CACtC,CADwC,MACjC,CACT,CAKF,IANiB,GAIjB,EAAQ,GACR,EADO,AAAM,CAAC,GAEP,CACT,CAAA,AAAE,EAFA,EACa,CADA,CAEN,CAAC,CAAE,OACV,CAHwB,EAGpB,MAAM,CAlFoC,EAkFF,EAhF9C,CAAIjC,EAAAA,GAFsD,AAkFnC,EAlFyE,AAkFxC,CAAC,EAAE,gBAhF/B,CAAC,AAgFLR,EAhFU,CAAC,AAAH,OAgFA,QAhFkB,CAAC,CAAC,EAAE,EAIlD,EAAQ,KAAD,MAAY,EAAE,AAChB,EAAQ,KAAD,MAAY,CAAC,EA2EK,CAAA,AA3EF,CAAS,CAAP,IAoF9B,CApFmC,IAAY,CAAC,CA6E5C,EACF,KADS,CACH,CADK,CACC,GAAD,IAAQ,CAACA,GAEpB,MAAM,CAFsB,CAEhB,AAFiB,GAElB,CAAK,CAACA,GAEnB,IACA,EAAI,CAHuB,AAGxB,CAHyB,QAEZ,EAAE,kBACgB,CAAE,GAAW,AACxC,CAAA,CAAE,AAET,OAAM,CAAC,AAEX,CACF,CAMA,OAJI,EAAQ,KAAD,SAAe,EAAE,AAC1B,IAGK,CACL,IAAI,GACJ,IALgB,CAKX,CAAA,AAAE,AALW,OAKX,EAEW,EAFA,EAEZ,IACF,CADuB,EAArB,AAAuB,GAEzB,IADA,GAAa,AACN,CAGF,AAHG,EAGO,KAAK,CAAC,CAAP,AAHG,CADO,AACN,CAK5B,CAAK,AACH,CACF,AADG,EAHmC,CAAC,0HCtK1B,EAAkC,6BAAlC,KAON,SAAS,EAAkB,CAAG,CAAY,CAAK,EAAyC,AAC7F,IAAI,EAUJ,GAVS,CADsB,GAG/BK,EAAAA,mBAAmB,CAAC,EAAK,CAAF,AAAG,EAAM,EAAF,EAAM,CAC9B,EAAM,EAD6B,CAC9B,KAAS,CAAC,IAAI,CAAC,AACtB,EADwB,AAChB,KAAK,CAAC,OAAO,CAAC,GAAS,CAAL,AAAK,CAAL,AAAwB,CAAC,CAAA,MAAI,CAAA,CAAS,CAG3D,CAAC,CAAC,IAGJ,CAHS,AAIlB,IADc,kFA+CP,SAAS,AACd,CAAe,CACf,CAAO,EAEP,OAAO,AAAP,IACE,IAAM,EAAoB,CADV,CAC0B,AALN,GAM9B,EAA0C,EADC,CAAC,CACE,GAAG,CADd,AAInC,AAJA,CACmD,CAIvD,GAJmB,AAKzB,CAAA,AAAO,GADD,CAEE,GAHe,AAEvB,CAAe,AACD,EAAQ,EAAK,CAAb,CAAY,MAAS,EAAE,QAC7B,AACE,GAAO,EAAF,GAAO,EAAA,CAAG,EAA+B,EAC9C,KAAK,CAAC,OAAO,CAAC,EAAM,GAAD,EAAM,CAAC,EAAgC,EAEnD,CAHuC,AAE9C,CACa,GAAD,EAAM,CAAC,EAAgC,CAE9C,EAAE,CACX,CAAC,CAEH,AAFI,SAEK,EAPsD,AAOzCrE,CAAG,CAAU,CAAO,EAAuD,AAG/F,IAAM,CAHa,CAGP,CAAN,AARgD,CAQhC,CAAC,EAAAA,EAAX,AAAW,CAAA,EAAA,EAAA,CAAA,CAAAA,EAEA,CAFA,CAEA,CAFA,CAEA,GAAA,CAAA,CAAA,EAAA,AAEA,CAFA,EAEA,CAAA,EAFA,AAEA,CACA,IAAA,EADA,AACA0G,EAAAA,QAAA,KAAA,CAAA1G,GACA,EADA,CACA,AADA,CACA,EACA,OAAA,AAEA,GAHA,CAGA,CAHA,CAGA6E,CAAA,CAAAA,CAFA,oCAEA,CAAA,EAAA,EAAA,KAAA,CAAA,CAAA,CAEA,AAFA,EAEA,EAzE3B,AA0E2B,CA1E3B,AAAO,IACL,AAwEyB,IAxEnB,EAyEmB,AAzEP,CADF,CACkB,GAElC,EAFM,EAAmC,CAAC,CAEnC,CACL,GAsEuB,AAzEQ,AAG5B,CAAS,CACZ,AAqEuB,IArEnB,CAAE,MAAO,IACX,IAAM,AADa,EACL,EAAkB,CAA1B,AADmE,CAC/B,CAAC,KAAH,EAAU,CAAE,IAArB,SAAkC,CAAE,SAAS,CAAE,cAAc,CAAC,CAAC,CAK9F,OAHI,GACF,EADO,CACD,CADG,CACJ,KAAC,CAiEa,CAjEH,CAAA,AAAO,CAElB,EAAU,EA+DI,CAAA,CA/DA,CAAC,EAAN,AAClB,CAAC,AACP,CAAK,CACH,CAAC,CA4D0B,CAAA,AA/DS,CAAC,EA+DV,CAAA,KAAA,CAAA,CAAA,CAAA,CACA,EAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAEA,EAAA,GAAA,CAAA,EAAA,CAAA,CACA,CAEA,IAHA,EAAA,AAGA,CAHA,AAGA7E,EAAA,EAAA,AACA,CADA,AAoCA,MApCA,AAoCA,CACA,IAAA,CAlCA,eAAA,CAAA,EAAA,AAMA,CANA,GAMA,EAAA,EAAA,CAAA,KAAA,GAAA,EAAA,CAAA,QAAA,CALA,SAAA,CAAA,EAAA,AAEA,KAFA,EAEA,EAAA,EADA,GAAA,EAAA,CACA,EAAA,CADA,CAAA,EAAA,CAAA,AACA,EADA,GACA,CAAA,CADA,CAAA,CAEA,CAEA,CAAA,EACA,GAAA,CAAA,GACA,GADA,IAAA,CACA,EAAA,OAAA,EACA,EAAA,EADA,IACA,CAAA,GAAA,AAEA,EAAA,EAAA,EAFA,CAEA,AAFA,CAEA,EAAA,EAAA,EAAA,GAAA,CAAA,EAGA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAIA,EAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAMA,AANA,MAMA,CAJA,MAAA,AAFA,OAEA,CAAA,GAAA,CACA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,EAAA,EAAA,EAAA,CArFpBG,AAqFoB,EAAA,AArFpBA,SAqFoB,KArFN,CACnB,EACI,CACE,GAAG6D,CAAQ,CAAC,CAAC,CAAC,CACd,GAAG,CAiFgB,CAhF7B,EAgF6B,AA/ErBA,CA+EqB,AA/Eb,CA+Ea,AA/EZ,CAAC,CAAC,CA+EU,AA9EzBA,CAAQ,CAAC,CAAC,CAAC,IA8Ec,CAGA,CAAA,CAAA,CAAA,AACA,EAUA,KAAA,CARA,eAAA,CAAA,EAAA,AACA,EADA,EACA,EAAA,CAAA,GAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAEA,CAFA,KAEA,CADA,MAAA,AACA,CAFA,MACA,CAAA,GAAA,CAAA,EAAA,GAAA,CAAA,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CACA,CADA,CAAA,GACA,CAAA,CAAA,EAAA,CAAA,CAAA,AACA,CAKA,CAAA,AACA,CAAA,AACA,iHCvKvB,EAAuB,IAAI,GAAG,EAAU,SAAxC,uBAmDC,SAAS,EACd,EAAqB,KAAK,EAAE,CAC5B9I,EAAAA,QADoB,GACpBA,EAAeE,EAAAA,CAF6B,GAAS,CAEjC,CAAC,GAAG,CAAC,wCAAwC,CAAC,AACpE,2CAfO,SAAgD,AAAvC,CAA6C,EAC3D,AAD8E,OACvE,EAAqB,GAAG,CAAC,EAClC,IADwC,CAAC,OAAZ,QADyB,iBAtB/C,SAAS,AAAiC,CAAO,EACtD,AADwE,EAChE,KAAD,EAAQ,CAAA,AAAC,IACd,EAAqB,GAAG,CADA,AACC,GACzBF,EAAAA,CAD+B,CAAC,EAFY,KAExB,EACpB,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAO,IAAD,sBAA2B,CAAC,CAAC,AAC9E,CAAC,CAAC,AACJ,qFC/Ba,EAAmB,IAAI,GAAG,CAAC,CAAC,KAA5B,EAAmC,CAAE,GAAG,CAAE,GAAG,CAAE,IAAI,CAAE,KAAK,CAAE,GAAG,CAAC,EAChE,EAAoB,IAAI,GAAG,CAAC,CAAC,MAA7B,AAAmC,CAAE,GAAG,CAAE,GAAG,CAAE,KAAK,CAAE,IAAI,CAAE,GAAG,CAAC,yDAwBtE,SAAmB,AAAV,CAAe,CAAW,CAAO,EAC/C,AADmF,IAA5D,AACjB,EAAa,MAAM,CAAC,CAApB,EAA2B,EAAF,CAAC,QAAY,EAAE,OAE9C,CAAI,EAAiB,GAAG,CAAC,OAIrB,EAAkB,CAJF,AAAe,CAAC,CAIX,CAJa,AAIZ,KAInB,GAAS,EAJoB,CAAf,AAAgB,CAIvB,CAJyB,CAIvB,CAAS,MAAO,CAAQ,CAAK,CAAC,CAChD,GADyC,8FCgBlC,SAAS,EAAoB,CAAG,EAAiC,AACtE,MAAO,QAD0B,IAC1B,GAAgB,CACzB,CA0CO,CA3CqB,QA2CZ,EAAmC,CAAG,EAAqB,AACzE,GAAI,EAAoB,GACtB,AADyB,CAAC,EAAE,IACrB,EAAI,CAAD,IADW,GACF,CAGrB,GALgD,CAK1C,EAAS,IAAI,AAAb,GAAgB,CAAC,GAAG,AAa1B,CAb2B,MAC3B,EAAO,IAAD,EAAC,CAAS,EAAE,CAClB,EAAO,IAAD,AAAC,CAAO,EAAE,CACZ,CAAC,IAAI,CAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAO,IAAI,AAAL,CAAM,EAAE,CACvC,EAAO,IAAD,AAAC,CAAO,EAAA,CAAE,CAEd,EAAO,IAAD,IAAS,EAAE,CACnB,EAAO,IAAD,IAAC,CAAW,YAAA,CAAY,CAE5B,EAAO,IAAD,IAAS,EACjB,AADmB,GACZ,GAAD,KAAC,CAAW,YAAA,CAAY,CAGzB,EAAO,IAAD,IAAS,EAAE,AAC1B,mCAsCU,SAAA,AACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAjCF,EACA,EAgCE,EAAA,AAjCF,CAkCE,CAAAoD,EAAAA,IADA,EAPA,0BAQA,CAAA,CAAA,EACA,CAAAI,EAAAA,KADA,2BACA,CAAA,CAAA,KAAA,AACA,CAAA,CAwCA,OAtCA,IAEA,CAAA,CAAA,GAFA,EAAA,GAEA,GAAA,EAAA,EAAA,UAAA,CAAA,cAAA,CAAA,CAAA,EACA,CAAA,CAAAA,EAAAA,GADA,6BACA,CAAA,CAAA,OAAA,EAGA,GAAA,IAAA,EAAA,EAAA,CACA,CAAA,CAAA+H,EAAAA,sCAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA,WAAA,EAAA,CAAA,CAGA,IACA,EAAA,GADA,EAAA,CACA,CAAA,CAAA,CACA,CAAA,CAAA,WAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAEA,EAAA,IAAA,EAAA,AACA,CADA,CACA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAEA,CAFA,CAEA,OAAA,CAAA,EAAA,CACA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CACA,GAAA,EAAA,CAAA,EAAA,OAAA,CAAA,GACA,CAAA,CAAA/H,EAAAA,gCAAA,CAAA,CAAA,OAAA,CAAA,EAIA,CAAA,EAAA,KACA,CAAA,CAAAgI,EADA,AACAA,CADA,EAAA,KAAA,mBACA,CAAA,CAAA,EAAA,IAAA,CACA,EADA,AACA,IAAA,EAAA,CAAA,AACA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,IAAA,EAEA,CAFA,CAEA,OAAA,CAAA,EAAA,CACA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAEA,EAAA,OAAA,CAAA,EAAA,CACA,CAAA,CAAA,QAAA,GAAA,EAAA,EAAA,cAAA,CAAA,YAAA,CAAA,CAAA,EAAA,OAAA,CAAA,IAKA,IA5EO,AA4EP,GA5EgB,IAAF,AA4Ed,EA5EsB,EAAE,WAAW,EAAC,EAAK,KAAK,GACxC,AA2EN,IAzEJ,EACE,AAAS,GAwEP,CAAA,EA1EJ,KA0EI,EAvEA,EAuEA,GAtEA,EAAU,IAsEV,GAtES,CAAC,CACZ,GAAA,CAAG,CAEF,CAAC,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAmEA,AAnEA,AAJkC,CAAC,CAuEnC,AACA,QAxE4C,AAuE5C,kBAgDA,SAAA,CAAA,EAAA,AACA,GAAA,CAAA,UAAA,CAAA,GADA,GACA,MAAA,CAAA,CAAA,CAAA,EAEA,CAFA,CAGA,GAEA,OAHA,AAGA,CAAA,MAAA,CAAA,wBAAA,EAGA,OAAA,CAAA,QAAA,CAAA,EAAA,EACA,OAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAEA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,AACA,CADA,IAAA,qFAzMH,SAAgC,AAAvB,CAA0B,CAAU,CAAO,EACzD,AAD6G,IACvG,EAAa,AAAsB,CAAA,EAAnB,EAAC,GAAjB,GAD8B,CACN,CAAC,KAAK,CAAA,EAAgC,CAAC,GAAvB,EAAI,CAAD,MAAQ,CAAC,IAAI,CAAA,CACxD,EAAO,EAAP,EAAmB,EApBF,CAoBV,IAAA,GAAY,GAAa,IApBA,MAoBmB,CAAA,CAAS,CAAC,AACnE,GAAI,AADkC,CAKpC,GAAI,UAAA,GAAc,GAAA,EAAO,CAAE,GAAA,CAAmC,QAAQ,CAAC,EAAK,CAAF,EACxE,CAD8E,CAAC,EAAE,GAC1E,AAGT,IAAM,EAAgB,GAHJ,CAGQ,GAAG,CAAC,EAAK,CAAF,EACjC,CADuC,CAAC,CACpC,EAGF,MAAO,EAHK,EAAE,QAIZ,EACA,QADU,AACF,CAAE,EAAc,QAAQ,CAChC,EADuB,IACjB,CAAE,EAAc,MAAM,CAC5B,IADqB,AACjB,CAAE,EAAc,IAAI,AAChC,CAAO,CAEH,KAHuB,EAGhB,CACT,CAAE,KAAM,CAER,CAGF,IANwB,SAiId,SAAA,CAAA,EACA,AADA,GACA,CAAA,CADA,CAEA,CADA,EAAA,GACA,CAAA,CAAA,CAGA,IAAA,EAAA,EAAA,CAAA,IAAA,CAAA,8DAAA,CAAA,CAEA,GAAA,CAAA,EACA,GADA,EAAA,CACA,CAAA,CAAA,CAIA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CACA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CACA,MAAA,CACA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,MAAA,CAAA,EACA,GADA,CACA,CAAA,EACA,MADA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CACA,CACA,AADA,CADA,KAAA,kBAgDA,SAAA,CAAA,CAAA,GAAA,CAAA,EAAA,AACA,GAAA,EAAA,CAAA,KADA,IACA,CAAA,OAAA,CAAA,CAAA,CAEA,IAAA,EAAA,EAAA,CAAA,IAAA,CAAA,gBAAA,CAAA,CACA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,YAAA,CACA,EAAA,EAAA,CAAA,GAAA,IAAA,CAAA,UAAA,CAAA,CAGA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,GAAA,CAAA,CACA,EAAA,EAAA,CACA,GAAA,EADA,CACA,CAAA,CAAA,GAAA,EAAA,CACA,IAAA,EADA,AACA,AADA,EACA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAEA,EAAA,EAFA,AAEA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,eAAA,CAAA,CAAA,CACA,CAEA,EAHA,IAGA,CAAA,KAAA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,GAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,AACA,CACA,CAFA,MAEA,CACA,EADA,2BAxDA,SAAA,CAAA,EAAA,AACA,OAAA,EAAA,KAAA,CAAA,MADA,AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,AADA,iGC/MV,SAAS,EAAoB,CAAG,EAAkB,AAChD,MAA+B,GAAA,GAAxB,CAAG,CADgB,AACf,EAAI,CAAD,KAAC,CAAS,CAAC,CAAA,CAAY,EAAI,CAAD,IAAM,CAAC,CAAC,CAAE,CAAA,CAAE,CAAA,CAAI,CAC1D,EAD6D,oBA7BtD,SAAS,AAAmB,CAAG,CAAU,CAAM,EAA+B,MActD,GAAG,EAAsC,CAbtE,CADgC,KAC1B,EAAM,CAAN,EAAc,GAAF,GAAQ,EAAE,CACtB,EAAS,GAAQ,GAAF,OAAY,EAAE,CAAC,MAAM,CAC1C,OAWgBC,AAXT,EAAS,GAWG,AAXA,CAAE,EAAN,CAAS,CAkBpB,AAlBoB,CAkBnB,CADC,EAAWC,AAjBY,EAiBZA,GACZ,CADC,KAjBkC,aAiBD,CAACD,KACvBE,AAD0B,CAAC,CAC3BA,mBAAmB,CAAC,EAAQ,CAAC,EAAE,EAIzC,GAAM,EAAS,IAAI,CAAC,CAAN,OAAc,CAAC,EAAI,CAAD,GAAK,CAAA,EAAK,qBAAqB,CAAC,IAAI,CAAC,EAAS,MAAM,AAAP,CAAO,GAnBxE,AAmB4E,EAtBtD,CAGnB,CACtB,CAkBoG,AAlBhG,AAJwC,CAIvC,CAD2B,EAHc,GAInC,CAD2B,AAK/B,CAJM,CADwD,AAK1C,AARyB,CAAC,EAQvB,EAAM,EAAoB,GAP1D,GAOgE,CAAC,GAArC,OAA6B,MCPlD,SAAS,EAAa,CAAO,CAAwB,GAAG,CAAM,EAAkC,AACrG,EAD0B,EACpB,EAAY,IAAI,GAAhB,GAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAY,EAAL,EAAE,AAGjD,EAH0D,CAAC,CAAA,GAC3D,EAAU,OAAD,mBAAC,CAA6B,EAAQ,IAAI,CAAC,AAAN,MAAc,AAAF,CAAC,MAAQ,CAAC,IAAI,CAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAE,IAAI,CAAC,CACpG,EAAU,OAAD,mBAAC,CAA6B,EAChC,CACT,GAF+C,KAC7B,4DAUC,kLCPZ,eAAe,AAAoB,CAAO,EAAiD,AAChG,IAQI,EARE,SAAE,CAD+B,AACxB,EAQG,WARD,CAAA,CAAY,CAAI,EAEjC,GAA2B,CAAC,CAFY,CAEV,CAA1B,EAAY,MAAA,CACd,EADa,KACN,IAAI,QAAQ,CAAC,uBAAuB,CAAE,CAAE,MAAM,CAAE,GAAA,CAAK,CAAC,CAG/D,IAAM,EAAO,EAAP,EAAW,UAAU,CAAC,MAAM,EAAQ,KAAD,MAAY,EAAE,CAAC,CAGxD,GAAI,CACF,CAAC,EAAc,CAAIC,EAAAA,SAAJ,IAAiB,CAAC,EACnC,CAAE,CADqC,CAAC,GAChC,CACN,OAAO,IAAI,QAAQ,CAAC,kBAAkB,CAAE,CAAE,MAAM,CAAE,GAAA,CAAK,CAAC,AAC1D,CAEA,GAAI,CAAC,EACH,OAAO,IAAI,CADM,EAAE,KACA,CAAC,kCAAkC,CAAE,CAAE,MAAM,CAAE,GAAA,CAAK,CAAC,CAG1E,IAAMhH,EAAM,EAAe,CAArB,EAAwB,CAC9B,GAAI,CAACA,EACH,EAFwB,CAClB,EAAE,EACD,IAAI,QAAQ,CAAC,+BAA+B,CAAE,CAAE,MAAM,CAAE,GAAA,CAAK,CAAC,CAQvE,GAAI,CAFc,AAEb,EAFyB,IAAI,CAAC,AAAD,EAEpB,CAFgC,CAE9B,AAFa,GAAM,AAAuBA,GAIxD,AAJ4C,EAAe,CAAC,IAG5D5E,EAAAA,KAAK,CAAC,IAAI,CAAC,CAAC,uDAAuD,EAAE4E,EAAI,CAAC,CAAC,CAAH,AAAI,CACrE,IAAI,QAAQ,CAAC,iBAAiB,CAAE,CAAE,MAAM,CAAE,GAAA,CAAK,CAAC,CAGzD,IAAM,EAAgBuD,EAAAA,OAAO,CAACvD,CAAxB,EACN,EADiC,CAAC,AAC9B,CAAC,EAEsD,OADzD5E,EAAAA,EADgB,EAAE,CACb,CAAC,IAAI,CAAC,CAAC,uCAAuC,EAAE4E,EAAI,CAAA,CAAA,CAAD,AACC,IAAA,QAAA,CAAA,aAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,CAGA,IAAA,EAAA6E,EAAAA,WAAA,0BAAA,CAAA,GAEA,GAAA,CACA,MAHA,CAAA,AAGA,MAAA,KAAA,CAAA,EAAA,CACA,MAAA,CAAA,KADA,CACA,CACA,OAAA,CAAA,CACA,cAAA,CAAA,+BAAA,AACA,CAAA,MACA,CACA,CAAA,CACA,AADA,CADA,AAEA,MAAA,EAAA,CAEA,EAFA,KACAzJ,EAAAA,KAAA,CAAA,KAAA,CAAA,2CAAA,CAAA,GACA,EADA,CAAA,CACA,QAAA,CAAA,sCAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,AACA,CACA,2GCpDtD,SAAS,AAA0B,CAAO,EAAqC,AAChF,YAAA,GAAgB,EACd,EAAQ,GAFyB,AACZ,EAAE,AAChB,AAAM,EAAA,AAAG,YAAY,CAAA,KAAM,IACpC,EAAQ,GADqC,EACtC,AADwC,AACvC,CAAQ,CACd,GAAG,EAAQ,KAAD,AAAM,CAChB,UAAU,CAAE,UAAU,CAC9B,CAAO,MAGuB,IAAtB,EAAQ,GAAuB,EAAxB,AAA0B,IAAzB,GACV,EAAQ,KAAD,IAAC,CAAY,UAAA,CAAU,AAGpC,2BAzBO,SAAS,AAAuB,CAAgB,EAAgC,AACjF,EAAiB,IAAI,EAAE,QAAP,EAAO,CADS,OACM,GACxC,GAAiB,GADgC,CAChC,CADkC,AAC3B,CACtB,GAAG,EAAiB,EADN,EACU,CACxB,SADmB,CACT,CAAE,UAAU,CAC5B,CAAK,AAEL,sHCFO,SAAS,AAAiB,CAAO,CAAe,CAAI,CAAU,EAAQ,CAAC,EAAT,AAAc,CAAE,CAAH,CAAY,IAA9D,CAAmE,EAAQ,AACzG,IAAM,EAAO,CAAP,AAAQ,EAAQ,KAAD,IAAC,CAAY,EAAQ,KAAD,IAAC,EAAa,EAAA,CAAE,CAAE,GAAA,CAAM,EAAQ,KAAD,IAAU,CAAC,GAAA,EAAO,CAAA,CAAE,CAAC,AAExF,EAAI,CAAD,GAAK,EAAE,CACb,EAAI,CAAD,GAAC,CAAO,CAAC,kBAAkB,EAAE,EAAK,CAAA,CAAD,AACC,EAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAA,IAAA,CACA,EADA,EACA,CAAA,CAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,CAAA,CAAA,AACA,OAAA,CAAAH,EAAAA,WAAA,CACA,CAAA,CAAA,CAAA,AACA,EAAA,CAAA,MAAA,CAAAA,EAAAA,WAAA,CAEA,kOCKlC,SAAS,AACd,EAA2F,CAAA,CAAE,EAE7F,CAFO,GAED,EAAS,AAHW,EAGH,KAAD,CAAC,EAAUkE,EAAAA,SAAS,EAAE,CAC5C,GAAI,CAAC8H,EAAAA,SAAS,EAAC,EAAK,CAAC,EACnB,IADyB,EAAE,AACpB,CAAA,CAAE,CAGX,IAAMvJ,EAAUJ,EAAAA,KAAV,SAAwB,EAAE,CAC1B,EAAMM,CAAN,CAAMA,uBAAuB,CAACF,GACpC,GAAI,EAAI,CADmC,AACpC,CADqC,UACxB,CAClB,CADoB,MACb,EAAI,CAAD,WAAa,CAAC,GAG1B,IAHiC,AAG3B,CAH4B,CAGpB,EAAQ,KAAD,AAAC,EAASiB,EAAAA,eAAe,EAAE,CAC1C,EAAO,EAAQ,IAAA,CAAD,CAASG,EAAAA,aAAa,EAAE,CAI5C,GAAI,CAAC,GAAQoI,CAAR,CAAQA,6BAA6B,EAAE,CAC1C,CAD4C,KACrC,CAAA,CAAE,CAGX,IAAM,EAAc,EAAOC,EAAP,AAAOA,KAArB,YAAsC,CAAC,GAyB/C,AAzBuD,CAAJ,CAAA,OAyB1C,AAAmB,CAAK,EAAiB,AAChD,GAAM,GA1BiE,MA0B/D,CAAO,EADU,OACR,CAAO,mBAAE,CAAA,CAAkB,CAAI,EAAM,GAAD,kBAAsB,EAAE,CAC7E,OAAO9I,EAAAA,yBAAyB,CAAC,EAAS,EAAmB,EAC/D,CAD0C,CA3BgC,GAClE,AA0B8D,CAAC,CA1BzD,AADiE,CACvE,AADwE,CAC3DgC,EAAP,AAAOA,EA0BwC,+BA1BP,CAAC,GAAQqD,CAAJ,CAAA,AAAIA,kCAAkC,CAAC,EAAQ,GAClG1F,CADgG,CAAO,AAC7F2B,CAD8F,CAC9FA,KAAV,sCAAqD,CAAC,GAAG,AAG/D,CAHgE,EAG5D,CAAC,AAD4ByH,EAAAA,kBAAkB,CAAC,GACvB,CAD2B,CAAC,AAC1B,GAE7B,OADAhM,CAFkE,CAAC,AAEnEA,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAC5D,CAAA,CAAE,CAGX,IAAM,EAAiC,CACrC,MADa,QACC,CAAE,EACpB,QAAI4C,CACJ,AAF+B,CAE5B,CAMD,MAPS,CAGL,EAAQ,KAAD,eAAqB,EAAE,CAChC,EAAU,OAAD,IAAC,CAAc,EAAOqJ,EAAAA,uBAAuB,CAAC,GAc3D,AAdmE,CAAJ,CAAA,OActD,AAAyB,CAAK,EAAiB,AACtD,GAAM,SAAE,AAfiF,CAe1E,QADgB,CACd,CAAO,CAAE,mBAAA,CAAkB,CAAI,EAAM,GAAD,kBAAsB,EAAE,CAC7E,OAAO/I,EAAAA,yBAAyB,CAAC,EAAS,EAAmB,EAC/D,CAD0C,CAhBkD,EAAK,CAgB3B,AAhB4B,CAgB3B,AAb9D,CACT,MAY6D,EAb3C,uHCpEZ,EACJ,oBADI,2EAC2F,8BAO1F,SAAS,AACd,CAAG,CACH,CAAuB,CACvB,CAAW,EAEX,GAAmB,QAAA,EAAf,MALoC,CAK7B,GAAoB,AAApB,CAAqB,EAC9B,OAAO,EAGT,EAHa,EAGP,EAAiB,GAAa,GAJmB,AAIhB,CAAC,CAJiB,EAId,AAC3C,CADkC,AAAU,OACrB,IAAnB,EAEF,GAF8B,EAAE,EAChCpD,EAAAA,GADE,QACF,EAAe,CAAC,GAAkBE,EAAAA,KAAK,CAAC,GAAxB,AAA2B,CAAC,EAAwB,GAAG,AAChE,CADiE,CAI1E,IAAM,EAAWkM,EAAAA,IAHM,GAD6C,iBAI3B,CAAC,EAAK,CAAF,EAI7C,OAHA,GAAa,GAAG,CAAC,EAAK,CAAF,CAAT,CAEXpM,CAHsE,CAAC,AAGvEA,GAF8B,CAAC,OAE/B,EAAe,CAAC,GAAYE,EAAAA,GAAZ,EAAiB,CAAC,GAAG,CAAC,EAAwB,GAAG,AAC1D,CAD2D,AAEpE,OADiB,SAD6C,sGCRvD,SAAS,AAAiBmM,CAAS,EAAgC,AACxE,OAAO,MAAM,AADiB,CAChB,OAAO,CAACA,GAAaC,EAAAA,MAAb,MAAyB,EAAE,EAC9C,GAAG,CAAC,CAAC,CAAC,EAAK,CAAF,CAAQ,GAAD,AAAM,CAAC,YAAY,EAAE,EAAI,CAAD,UAAY,EAAE,EAAM,GAAD,AAAI,CAAC,EAChE,IAAI,CAAC,IAAI,CAAC,AACf,4FCGO,SAAS,AAAS,CAAI,CAAoB,CAAI,CAAU,CAAO,EAAuC,AAM3G,CANsB,GAClB,EAEA,EACA,EAEE,EAAU,CAHL,EAGc,EAAnB,CAFQ,CAES,GAAE,CALF,AAKY,IAAI,CAAC,GAAG,CAAC,EAAQ,KAAD,EAAQ,CAAE,GAAQ,CAAC,AAAL,CAC3D,AAD2D,EAC1C,GAAS,IAAF,KAAxB,KAA0B,EAAkB,UAAU,CAE5D,SAAS,IAGP,MAHiB,CACjB,AAEO,EAHsB,EAE7B,EAAsB,GAExB,CAEA,AAJ4B,EAAE,AADhB,EAAE,KAKP,AAHmB,IAI1B,AALA,KAKY,GADO,GAAS,CACH,EAAb,UAAyB,CAAC,GACtC,AAAe,IAD8B,CAAC,IAC/B,GAAa,YAAY,CAAC,GACzC,EAAU,KADyC,AACnD,CADoD,CAC7B,CACzB,CASA,CAVY,MAAsB,EAUzB,IAUP,KAVgB,EACZ,CADwB,EAE1B,IADS,EAAE,MACC,CAAC,GAEf,EAAU,EAAe,AAFH,CAAC,CAEc,GAEjC,CAFqC,CAAC,GAAP,EAE/B,AAFoB,CAEM,IAAf,GACb,EADqC,CACxB,CAD0B,CACX,EAAY,AAD3B,EACkC,CAAC,CAG3C,CACT,CAIA,EAR0C,EAAX,GAM/B,EAAU,MAAA,CAAD,AAAU,CAHS,CAI5B,EAAU,KAAA,CArBV,CAqBS,CADsB,AACb,KAAK,EArBd,KAAK,GAAY,CACxB,KAAgB,IAAZ,GAAwC,IAAxC,KAAyB,AAAwB,EAC5C,AAD8C,IAGhD,CACT,EAiBO,CArBwB,AAsBjC,EArBuB,EAAE,IAoBP,OAlBY,KChDvB,SAAS,EAAsB,CAAe,EAA2C,AAC9F,IAAM,EAAkC,CAAA,CAAE,CAC1C,EADa,CACT,CACF,EAAgB,CAHiB,MAGV,CAAC,CAAC,EAAO,EAAjB,CAAe,AAAK,EACZ,AAAjB,GADkC,KACT,EAAE,OAApB,IAET,CAFS,AAEF,CAAC,EAAG,CAAA,AAAI,CAAA,CAAK,AAExB,CAAC,CAAC,AACJ,CAAE,KAAM,CAER,CAEA,OAAO,CACT,CAKO,KANS,IAMA,EAAc,CAAU,EACtC,AAD+G,IACzG,EAAkC,EADb,GACd,CAAiC,CAAC,MAAM,CAAC,IAAI,CAAC,CAE3D,GAAI,CACF,MAAM,CAAC,OAAO,CAAC,GAAY,OAAF,AAAS,CAAR,AAAS,CAAC,CAAC,EAAK,CAAF,CAAQ,GAAD,CACxB,CAD8B,OACtB,EAAzB,AAA2B,OAApB,IACT,CADS,AACF,CAAC,EAAG,CAAA,AAAI,CAAA,CAAK,AAExB,CAAC,CAAC,AACJ,CAAE,KAAM,CAER,CAEA,OAAO,CACT,MADgB,wDA0FJ,IAAA,EAAA,CACA,MAAA,CACA,OAAA,CACA,OAHA,CAGA,CACA,SAAA,CACA,UAAA,CACA,QAAA,CACA,KAAA,CACA,KAAA,CACA,KAAA,CACA,QAAA,CACA,KAAA,CACA,MAAA,CACA,MAAA,CACA,MAAA,CACA,aAAA,CAEA,YAAA,CACA,QAAA,CACA,CAEA,EAAA,CAAA,cAAA,CAAA,CAAA,MAAA,CAAA,CAmEA,SAAA,EAAA,CAAA,EAAA,AACA,OAAA,EAAA,CAAA,MADA,AACA,CAAA,IAAA,CAAA,GAAA,CACA,AADA,CAGA,SAAA,EACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,GANA,OAQA,IAAA,GAUA,EAVA,GAAA,EAWA,CAXA,CAAA,EAAA,AAcA,AAIA,CAlBA,AAWA,CADA,CAVA,AAeA,AAfA,AAYA,CAMA,CAHA,GAfA,CAeA,AAfA,CAeA,AAHA,GAGA,EAAA,AAGA,CAlBA,CAeA,AAGA,MAHA,CAAA,EAAA,EAAA,AACA,CAAA,EADA,CACA,AADA,KACA,EAAA,CAAA,IAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAGA,EAHA,UAGA,CACA,KAAA,CAAA,OAAA,CAAA,GACA,EADA,AACA,CADA,EAAA,AACA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CACA,QAAA,EAAA,OAAA,EACA,GADA,EACA,IAtBA,IAAA,EAAA,CAAA,IAKA,CAAA,CAAA,AADA,CAAA,IAJA,CAIA,EAAA,EAAA,GACA,IADA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,AADA,CACA,CAAA,CAAA,AACA,CAuBA,KAzBA,IAyBA,EAAA,CAAA,EAAA,AAEA,GAAA,CAAA,CAIA,CAJA,EAIA,AAJA,CAOA,IAAA,EAAA,IAAA,CATA,EASA,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CACA,OAAA,EAAA,MAAA,CAAA,EAAA,MACA,CAAA,EADA,GACA,CACA,MACA,CACA,AAFA,SAAA,sEA1GA,SAAA,AACA,CAAA,CACA,GAAA,CAAA,CACA,EAAA,OAAA,AADA,EACA,EAEA,IAAA,EAAA,CALA,AAKA,CAAA,CAEA,GAAA,CACA,KAHA,CAGA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CACA,CADA,EACA,IAAA,EAAA,EACA,GADA,IAIA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAGA,CAHA,EAGA,CAFA,QAAA,GAAA,EAEA,CAFA,eAAA,CAAA,CAAA,EAEA,QAAA,OAFA,EAEA,GAAA,EAAA,GAAA,EAAA,CAGA,EAHA,EAGA,EAAA,SAAA,GAAA,GAAA,EACA,EAAA,EAAA,GAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CACA,AAFA,EAEA,GAAA,CAAA,CAAA,KAAA,CAAA,CAAA,GAAA,EAAA,IAAA,CAAA,CAAA,CAAA,GAAA,EAGA,GAHA,CAGA,IAAA,CAHA,CAAA,GACA,CAEA,CAFA,CAAA,EAAA,AAEA,CAFA,EAAA,GAAA,CAEA,CAFA,CAAA,CAAA,GAAA,CAAA,CAEA,CAEA,IAAA,EAAA,EAAA,IAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CACA,EAAA,CAAA,CAAA,KAAA,EAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,GAAA,EACA,EAAA,CAAA,CADA,AACA,GAAA,EADA,AACA,CADA,CACA,IAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAEA,EAAA,EAAA,EAFA,KAEA,IAAA,EAAA,CAEA,CAFA,CAGA,EACA,EACA,EACA,EACA,EACA,EAEA,CACA,CARA,AAQA,AATA,GAIA,EAEA,AAIA,CADA,CACA,AARA,CAGA,CAFA,AAOA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAEA,CAFA,AAEA,CAAA,AACA,CAAA,IAHA,CAAA,AAGA,AAHA,CAKA,CALA,AAOA,OAAA,CACA,aADA,gBAxJL,SAAS,AAAyB,CAAA,EAYvC,IAAM,EAAU,EAAQ,KAAD,EAAC,EAAW,CAAA,CAAE,CAI/B,CAhBgC,CAgBzB,CADgD,CACvD,OADuD,EAAvC,MACT,CADgB,CAAO,CAAC,kBAAkB,CAAA,CAAiB,CAAO,CAAC,kBAAkB,CAAA,MAAI,CAAA,CAAS,GACxD,UAAxB,OAAO,EAAQ,IAAA,CAAD,AAAqB,EAAQ,IAAA,CAAD,KAAQ,CAAA,CAAS,CAAC,AAIrF,EAAW,CADM,AAAwC,KACzD,GADyD,SAAjC,CAAO,CAAC,mBAAmB,CAAA,CAAiB,CAAO,CAAC,mBAAmB,CAAA,MAAI,CAAA,CAAS,EAC/E,EAAQ,KAAD,GAAC,GAAa,CAAb,CAAqB,KAAD,CAAO,EAAE,SAAA,CAAY,OAAA,CAAU,MAAA,CAAM,CAAC,AAE/F,EAAM,CAAN,CAAc,GAAA,EAAD,AAAQ,EAAE,CAEvB,EAuBR,AAvBsB,SAuBb,AAAe,AAvBhB,KAwBN,AAxBkC,CAwB/B,QADkB,EAErB,CAAQ,MACR,CAAI,CACN,SAKE,AAAI,GAAG,AAAE,UAAU,CAAC,MAAM,CAAC,CAClB,CADoB,CAIzB,CAHQ,EAGR,AAAO,EACF,CAAC,CADK,CACL,CADO,CACP,GAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,OAIA,EAzCyB,KACjC,EACA,CADG,GACC,YACJ,CACJ,CAAG,CAAC,CAII,EAAQ,EALJ,AAKmC,IAAA,OAAQ,EAG/C,EAAW,EAA+B,GAHc,AAGxD,EAAW,EAAsC,CAEvD,MAAO,CACL,GAAG,CAAE,EACL,MAAM,CAAE,EADQ,AACA,KAAD,CAAO,CACtB,YAAY,CAAE,EAA0B,GACxC,AAD2C,CAAC,MACrC,CAAE,EAAc,GACvB,IAD8B,CAAC,EACxB,AAFgC,CACjB,EAEtB,IAAI,EACR,CAAG,AACH,2DA9DO,SAAsC,AAA7B,CAAgC,EAAqC,AACnF,IAAM,EAAU,EAAsB,EAAI,CAAD,MAAQ,CAAC,CAElD,MAH0C,AAGnC,CACL,CAHmC,KAG7B,CAAE,EAAI,CAAD,KAAO,CAClB,GAAG,CAAE,EAAI,CAAD,EAAI,CACZ,YAAY,CAAE,EAA0B,EAAI,CAAD,EAAI,CAAC,SAChD,CAEJ,CAAG,AACH,KAHW,CADgC,yICnCpC,SAAS,AAAc,CAAU,CAAc,CAAI,EAAyB,AACjF,IAAM,EAASrI,EADY,AACZA,EAAT,OAAkB,EAAE,CACpB,EAAiB0C,EAAAA,UAAjB,OAAkC,EAAE,CAE1C,GAAI,CAAC,EAAQ,IAAF,GAEX,GAAM,kBAAE,EAAmB,IAAI,UAAvB,MAAyB,EAdP,GAcwB,AAdrB,CAcqB,CAAwB,EAAO,IAAD,CAA/C,GAAiB,EAAyC,EAAE,CAE7F,GAAI,GAAkB,CAAC,CAAE,OAGzB,EAHI,EAGE,EAAmB,CAAE,SAAS,CADlB9E,EAAAA,sBAAsB,EAAE,CACJ,GAAG,CAAA,CAAY,CAC/C,EAAkB,EACpBgB,EAAAA,cAAc,CAAC,IAAM,EAAiB,EAAkB,IAAI,AAC5D,CAD6D,AAGzC,IAAI,EAAE,CAHW,CAGrC,CAHsD,GAKtD,EAAO,CAJS,GAIV,AAAK,EAAE,AACf,EAAO,CAHL,GAGI,AAAK,CAAC,qBAAqB,CAAE,EAAiB,GAGtD,CAH0D,CAAC,AAG5C,QAHqC,IAGtC,CAAc,CAAC,EAAiB,GAChD,UAD8C,CAAgB,CAAC,YChC3D,wBAAwB,qFAItB,EAAgB,IAAI,OAAO,AAA3B,EAA8C,6BAuCT2J,EAAAA,iBAAiB,CAAC,AArCvB,IAC7B,EADmC,AAExC,IAAI,CANiB,CAMf,gBAAgB,AAmC+D,CAzC9C,CAOvC,SAAS,GAAG,AAEV,EAA2B,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAItD,GAAI,CACF,QAAQ,CAAC,SAAS,CAAC,QAAA,CAAW,SAAiC,GAAG,CAAI,EAAqB,AACzF,IAAM,EAAmBD,EAAAA,YAAnB,OAAsC,CAAC,IAAI,CAAC,CAC5C,EACJ,EAAc,GAAG,AADb,CACctI,EAAAA,KAAL,IAAc,EAAC,EAAE,MAAmC,IAArB,EAAiC,EAAmB,CAA/B,GAAmC,CACtG,OAAO,EAAyB,AAD+C,KAC1C,CAAC,EAAS,EACjD,CAAC,AACH,CAFuD,AAErD,CAF+C,AAAO,IAEhD,CAER,CACF,CAAC,CACD,CANqC,IAMhC,CAAC,CAAM,EAAE,AACZ,EAAc,GAAG,CAAC,EAAQ,GAC5B,CAD0B,AAAM,AAC/B,CACL,AAFqC,AAAlB,CAEhB,yKCxBG,EAAwB,CAC5B,mBAAmB,CACnB,+CAA+C,CAC/C,iEAAiE,CACjE,uCAAuC,CACvC,4BAA4B,CAC5B,wDAAwD,CACxD,mDAAmD,CACnD,2CAA2C,CAC3C,+CAA+C,CAC/C,4DAA4D,CAC5D,sDAAsD,CACvD,CA2BY,EAA0BuI,EAAAA,iBAAiB,CAAC,CAAC,AAA7C,EAAqF,CAAA,CAAE,GAAnC,CAC/D,CADuG,GACnG,EACJ,MAAO,CACL,IAFe,AAEX,CAlBiB,CAkBf,aAlB6B,CAmBnC,EADsB,GACjB,CAAC,CAAM,EAEV,AAFY,EAEI,EAAc,EADR,EAAO,GACQ,CADT,CACW,EAAV,GADU,EAAE,CAE3C,CAAC,IADqD,CAAC,SAEvD,CAAa,EAAO,EAAO,CAAT,EAAO,EAClB,CAD0B,CAArB,CAAuB,CAG/B,EAAgB,EAAc,EADR,EAAO,CADb,EAEqB,AAFnB,CACU,CACW,EAAV,GADU,EAAE,CACW,CAAC,EAEhD,AA4Cb,SAAS,AAAiB,CAAK,CAAS,CAAO,EAAyC,AACtF,EA7C2B,CA6CtB,CAAD,CAAO,GAAD,CAAK,EADQ,AAqCsF,GAAA,aAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAGA,AAmBA,SAAA,CAAA,CAAA,CAAA,EACA,AADA,GACA,CAAA,GAAA,AApBA,MAoBA,CACA,CADA,CADA,IAEA,EADA,CAIA,EAHA,EAGA,EAAA,EAAA,GAAA,QAAA,CACA,QAAA,GAAAJ,CAAA,CAAAA,wBAAA,CAAA,EAAA,EAAA,AACA,EA1BA,EAAA,EAAA,CAAA,IAAA,KAyBA,CAAA,GAAA,IAzBA,CAAA,AAyBA,CApBA,CALA,MACApM,EAAAA,WAAA,EACAE,EAAAA,KAAA,CAAA,IAAA,CACA,CAAA;AAAA,OAAA,EAAAuM,EAAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAEA,CAEA,GAFA,EA5C5F,KAkD4F,IA4DA,CA5DA,CAhD3G,GA4G2G,CA5GvG,CA4GuG,AA5GvF,EAgDuF,EAhDhF,CAAF,CAAU,KAAD,GAgDyE,AAhDxF,EAgDwF,EAhD5D,CAAC,AAiD2D,EAjDzD,CAiDyD,CAAA,KAAA,EAAA,AAIAjC,CAJA,CAIAA,wBAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,GAAA4B,EAAAA,EAAA,sBAAA,CAAA,EAAA,IAhDA,CAgDA,MApDzGpM,CAoDyG,CAAA,AApDzGA,CAoDyG,UApDzG,EACEE,EAAAA,KAAK,CAAC,IAAI,CACR,CAAC;AAAA,OAAuE,EAAEuM,EAAAA,mBAAmB,CAAC,GAAO,CAAA,CAAF,CAEE,AAFD,GAIC,CAFA,GAEA,CAAA,EAuGA,EAAA,CAvGA,CAuGA,AAvGA,CAuGA,CAvGA,KAuGA,CAvGA,CAuGA,MAAA,EAAA,MAAA,EAAA,AAMA,CAAA,EAAA,GAAA,IAAA,EAEA,CAAA,CADA,CACA,GAAA,MAAA,CAAA,MAAA,CAAA,IAAA,CAAA,GAAA,EAAA,GAAA,OAAA,EAAA,EAAA,GAAA,CAAA,EAAA,OAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAxGA,OANAzM,EAAAA,MA6GA,KA7GA,EACAE,EAAAA,KAAA,CAAA,IAAA,CACA,CAAA;AAAA,OAAA,EAAAuM,EAAAA,mBAAA,CACA,GAAA,CACA,CADA,CAGA,GAEA,CAFA,EAEA,AAiDA,SAAA,CAAA,CAAA,CAAA,AAjDA,EAiDA,AACA,GAAA,CAAA,GADA,AACA,KAAA,CAAA,CACA,CADA,MACA,EAEA,GAFA,CAEA,EAAA,CAAA,CAAA,GACA,EADA,CAAA,IACA,CAAA,GAAA,AAAAL,EAAAA,AADA,CACA,KAAA,kBAAA,CAAA,EAAA,CAAA,CACA,EAvDA,EAAA,EAsDA,AAtDA,CAsDA,AAtDA,IAAA,GAAA,CAAA,CAOA,CAPA,MACApM,EAAAA,WAAA,EACAE,EAAAA,KAAA,CAAA,IAAA,CACA,CAAA;AAAA,OAAA,EAAAuM,EAAAA,mBAAA,CACA,GACA,EADA;AACA,KAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,AAEA,GAEA,CAFA,EAEA,CAgDA,AAhDA,GAJA,MAoDA,CAAA,CAAA,CAAA,CAhDA,CAgDA,AACA,GAAA,CAAA,GAAA,CADA,KACA,CACA,CADA,MACA,EAEA,EAFA,EAEA,EAAA,CAAA,CAAA,GACA,EADA,CAAA,GACA,CAAA,GAAAL,AAAA,EAAAA,CAAA,AADA,IACA,mBAAA,CAAA,EAAA,CAAA,CACA,EAtDA,EAAA,EAAA,CAqDA,AArDA,CAqDA,GArDA,IAAA,CAAA,CAOA,CAPA,MACApM,EAAAA,WAAA,EACAE,EAAAA,KAAA,CAAA,IAAA,CACA,CAAA;AAAA,OAAA,EAAAuM,EAAAA,mBAAA,CACA,GACA,EADA;AACA,KAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAEA,CAEA,CAAA,AAWA,EAbA,KAFA,AAeA,CACA,EA7FjF,EA4FiF,AA5F1E,GAAF,AAA0B,EAAP,GAAY,CAAZ,CAEtD,CAAG,AACH,CAAC,CAHiD,CAAA,AAqBrC,EAA4BD,EAAAA,iBAAiB,CAAE,CAAC,EAAhD,AAAwF,CAAA,CAAE,GAAnC,CAC3D,CADmG,AAExG,GAAG,EAAwB,EAAQ,CACnC,IADkC,AAC9B,CAAE,aADoB,GACJ,CAC1B,CAAG,EAGH,SAAS,EACP,EAAgD,CAAA,CAAE,CAClD,EAA8C,CAAA,CAAE,EAEhD,AAJoB,IACL,EAGR,CACL,AAHW,SAGF,CAAE,CAAC,GAAI,EAAgB,SAAA,EAAa,EAAd,AAAgB,CAAC,EAAE,CAAI,EAAc,SAAA,EAAa,AAAd,EAAgB,CAAC,AAAC,CACrF,QAAQ,CAAE,CAAC,GAAI,EAAgB,QAAA,EAAY,EAAE,CAAf,AAAgB,EAAE,CAAI,EAAc,QAAA,EAAY,CAAb,CAAe,CAAC,AAAC,CAClF,YAAY,CAAE,IACR,EAAgB,YAAA,CAAD,CAAiB,EAAE,CAAC,GACnC,EAAc,WAAD,CAAC,EAAgB,EAAE,CAAC,GACjC,EAAgB,aAAD,OAAC,CAAuB,EAAC,CAAI,EACjD,CACD,kBAFuE,AAErD,CAFsD,AAEpD,CAAC,GAAI,EAAgB,aAAD,KAAC,EAAsB,EAAE,CAAC,EAAE,CAAI,EAAc,WAAD,OAAC,EAAsB,EAAE,CAClH,AADmH,AAAC,CACjH,AACH,CAkG+G,SAAA,EAAA,CAAA,EAAA,AACA,GAAA,CAGA,IAAA,EAAA,CAAA,EAJA,CAIA,EAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CACA,OAAA,GACA,IAAA,CAAA,GAAA,EAAA,GAAA,MAAA,EAAA,SAAA,QAAA,GAAA,EAAA,GAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CACA,EAAA,GAAA,CAAA,SAAA,EAAA,MAAA,CACA,OAAA,EAAA,AApBA,IAoBA,KApBA,EAAA,EAAA,EAAA,AACA,CAmBA,GAnBA,IAAA,CAAA,CADA,AACA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAEA,GAAA,GAAA,EAAA,WAAA,GAAA,EAAA,GAAA,KAAA,EAAA,eAAA,EAAA,CAAA,EAAA,GAAA,KAAA,CACA,OAAA,EAAA,GAAA,KAAA,EAAA,IAAA,AAEA,CAEA,OAAA,IAAA,AACA,EAUA,GAAA,GAAA,CAAA,AACA,CAAA,KAAA,CAEA,OADAxM,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,CAAA,6BAAA,EAAAuM,EAAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,CAAA,AACA,IAAA,AACA,CACA,4JCrH/G,SAAS,EAAiB,CAAK,EAAiE,AAC9F,OAAO,IADgB,CACX,CAAC,OAAO,CAAC,EAAM,GAAD,GAAO,CAAC,AACpC,CAEA,SAAS,EACP,CAAS,CACT,CAAW,CACX,CAAK,EAEL,EAAU,OAAD,EAAC,CAAY,CACpB,OAAO,EAAE,EACT,EADa,EACT,CAAE,KAP0C,oBAOjB,CAC/B,GAAI,EAAiB,IAAU,CAAL,AAAO,CAAP,QAAN,SAA+B,EAAE,CAAA,CAAM,CAAC,AAC5D,CADqD,EAClD,EAAU,OAAD,EAAU,CACtB,YAAY,CAAE,CAClB,CAAG,AACH,CAEA,QAJ6B,CAIpB,EACP,CAAS,CACT,CAAM,CACN,CAAW,CACX,CAAQ,EAER,EAAU,OAAD,EAAC,CAAY,CACpB,OAAO,EAAE,EACT,EADa,CACV,EAAU,EARkC,KAQnC,EAAU,CACtB,IAAI,CAAE,SAAS,QACf,EACA,IADM,QACM,CAAE,EACd,SADyB,AAChB,CAAE,CACf,CAAG,AACH,MAFuB,yBAzHhB,SAAS,AACd,CAAgC,CAChC,CAAM,CACN,CAAG,CACH,CAAK,CACL,CAAK,CACL,CAAI,EAEJ,GAAI,CAAC,EAAM,GAAD,KAR+B,CAQrB,EAAE,QAAU,CAAC,GAAQ,CAAC/L,EAAAA,YAAY,CAAC,EAAK,EAAD,eAAkB,CAAE,KAAK,CAAC,CACnF,CADqF,MAKvF,IAAM,EACJ,EAAM,GAAD,MAAU,CAAC,GADK,GACC,CAAC,MAAA,CAAS,CAAA,CAAI,EAAM,GAAD,MAAU,CAAC,MAAM,CAAC,EAAM,GAAD,MAAU,CAAC,MAAM,CAAC,MAAA,CAAS,CAAC,CAAA,MAAI,EAG9F,IACF,EAAM,CAJmG,EAIpG,MAAU,CAAC,CADG,EAAE,GACL,CAAS,AAa7B,SAAS,EACP,CAAgC,CAChC,CAAM,CACN,CAAK,CACL,CAAK,CACL,CAAG,CACH,CAAc,CACd,CAAS,CACT,CAAW,EAEX,AAvBuD,GAuBnD,EAAe,IAVgB,EAUhB,EAAU,EAAQ,CAAC,CAApB,AAChB,CAD2B,AAAW,MAC/B,EAGT,IAAI,EAAgB,CAAC,GAAG,EAHD,AAGgB,CAGvC,GAAIA,CAHA,CAGAA,MAHkC,MAGtB,CAAC,CAAK,CAAC,EAAI,CAAD,AAAG,KAAK,CAAC,CAAE,CACnC,EAA4C,EAAW,EAAa,GACpE,EADqD,AAAoB,CAAC,CACpE,EAD4D,AAC7C,EAAiC,EAAQ,CAAK,CAAC,EAAR,AAAW,CAAA,CAAjE,AAA4E,AAC5E,EAAiB,EAAc,MAAM,CAC3C,EAA2C,CADrC,CAA8B,AACqB,EAAK,CAHnB,AAGiB,CAAkB,GAFzB,AAGrD,EAAgB,CADuC,CAErD,EACA,EAHuF,AAIvF,CAJ0E,AAAc,CAKxF,CAAK,CAAC,AAFA,CAFR,AAGO,CACI,CAAA,AACT,EACA,CADG,AACF,KAAiB,EAAc,CAChC,EACA,EAFa,AAIjB,AAV8C,CAmC9C,AApC4C,CAOzB,IAAgB,AALC,EAMpB,AAOZ,EAAiB,EANH,EAOhB,CADwB,CAAC,AACnB,EADqB,CACtB,GAAO,CAAC,CADK,MACE,CAAC,CAAC,EAAY,CAAC,IACjC,CADsC,EAClCA,AAD0B,EAC1BA,YAAY,CAAC,EAAY,KAAK,CAAC,CAAE,CAAV,AACzB,EAA4C,EAAW,EAAa,GACpE,EADyE,AAApB,CAAqB,CACpE,EAAe,AAD6C,EACZ,EAAQ,GACxD,CADsD,CACrC,EAAc,KAD6C,CACvC,CAC3C,EAA2C,CADrC,CAA8B,AACqB,CAAC,KAHf,EAGsB,EAFZ,AAEE,AAAY,CAAC,CAAC,CAAC,CAAC,CAAE,EAAgB,GACzF,EAAgB,EACd,EACA,EACA,AAJkG,CAAb,AAAc,CAKnG,EAFM,AAGN,CALF,AAGO,CAGL,CADG,AACF,GAPuC,EAKxC,AAEkB,EAAc,CAChC,EACA,EAFa,AAIjB,CACF,CALqB,AAKpB,CAX+C,AAW9C,CAGG,CACT,CATyC,CA7DnC,CA8DgB,CA7DhB,AAuDoC,EAtDpC,CA6DkB,CA5DlB,EAAK,AAFC,CACD,CAmEW,AAlEZ,eAAC,CACL,EACA,CADG,CACG,EAL0B,CAK3B,MAAU,CAAC,MAAM,CACtB,EACA,EAAC,CAGP,YAJuB,6ICLgB8L,EAAAA,iBAAiB,CAdtB,AAcuB,CAdtB,EAA+B,CAAA,CAAE,GAA1B,CACxC,CADuE,GACjE,EAAQ,EAAQ,CAAhB,IAAgB,AAAD,EALD,AAkB2D,CAlB1D,CAMf,AADyB,EACnB,CAAN,CAAc,GAAA,EAAD,AAPD,EAOS,EADiB,GANnB,CASzB,KAFsC,CAE/B,CACL,IAAI,CAPiB,CAOf,aAP6B,CAQnC,EADsB,aACP,CAAC,CAAK,CAAE,CAAI,CAAE,CAAM,EAAE,AACnC,IAAM,EAAU,EAAO,GAAjB,CAAgB,MAAW,EAAE,CAEnCE,EAAAA,2BAA2B,CAACC,EAAAA,kBAAkB,CAAE,EAAQ,KAAD,MAAY,CAAE,EAAK,CAAF,CAAS,EAAO,CAAT,CACjF,CAAC,AACL,AAF4F,CAAM,AAE/F,AACH,CAHmG,AAGlG,CAAA,iGCrBK,EAAsB,IAAI,GAAG,CAE7B,CAF4C,CAE7B,IAAI,GAFnB,AAEsB,CAmErB,CAnE+B,CAAhC,OAmEU,EAAkB,CAAM,CAAe,CAAQ,EAA2B,AAjCxF,GAAK7M,CAAD,CAACA,KAiC0B,KAjChB,CAAC,qBAAqB,CAIrC,CAJuC,GAIlC,IAAM,KAAA,AAAS,MAAM,CAAC,IAAI,CAACA,EAAAA,UAAU,CAAC,qBAAqB,CAAC,CAAE,CACjE,IAAM,EAAWA,EAAAA,UAAU,CAAC,qBAAqB,CAAC,EAAM,CAExD,EAFuD,EAEnD,EAAa,GAAG,CAAC,IAUrB,CAV0B,CAAC,AAAX,EAAa,AAUxB,IAAM,KAAA,AALX,EAAa,GAAG,CAAC,GAKG,AAHL,AAoBa,EAtBN,AAEA,CAFC,AAAX,EAKe,CAAD,AAHL,AAoBa,CAAC,AApBR,CAAC,IAGM,EAAE,CAAE,CACpC,GAAI,EAAM,GAAD,KAAS,CAAE,CAElB,EAAoB,GAAG,CAAC,EAAM,GAAD,KAAS,CAAE,EAArB,CACnB,KADgD,AAElD,CACF,AAHqD,CAIvD,CAWA,OAAO,EAAoB,GAAG,CAAC,EACjC,MADyC,CAAC,IAAd,iBAQrB,SAAS,AAAyB,CAAM,CAAe,CAAK,EAAe,AAChF,EAAM,GAAD,MAAU,EAAE,MADqB,AACf,EAAE,OAAO,CAAA,AAAC,IAC/B,EAAU,GADqB,IAAa,AACnC,GAAW,EAAE,MAAM,EAAE,OAAO,CAAA,AAAC,IACpC,CADoC,EAChC,CAAC,CADwC,CAClC,GAAD,KAAC,EAAY,EAAM,GAAD,YAAgB,CAC1C,CAD4C,MAI9C,IAAM,EAAW,EAAkB,EAAQ,EAArC,AAA2C,EAAR,CAAO,KAAS,CAAC,CAEtD,CAF8B,GAGhC,EAAM,EADI,CACL,CADO,WACN,CAAkB,CAAA,CAE5B,AAFoC,CAEnC,CAAC,AACJ,CAAC,CAAC,AACJ,6BAjFO,SAAkC,AAAzB,CAA+B,EAAoC,AACjF,GAAI,CAACA,EAAAA,UAAU,CAAC,IADsB,iBACD,CACnC,CADqC,KAC9B,CAAA,CAAE,CAIX,IAAM,EAAmC,CAAA,CAAE,CAE3C,IAAK,EAFY,EAEN,KAAA,AAAS,MAAM,CAAC,IAAI,CAACA,EAAAA,UAAU,CAAC,qBAAqB,CAAC,CAAE,CACjE,IAAM,EAAWA,EAAAA,UAAU,CAAC,qBAAqB,CAAC,EAAM,CAGxD,EAHuD,EAGlD,IAAM,KAFI,AAEJ,AAAS,EAFE,GAEK,CAAD,AAFL,CAAM,CAAC,IAEM,EAAE,CAAE,AACpC,GAAI,EAAM,GAAD,KAAS,CAAE,CAClB,CAAW,CAAC,EAAM,GAAD,KAAS,CAAA,CAAI,EAC9B,KACF,CAFwC,AAI5C,CAEA,OAAO,CACT,UADoB,6CAkEb,SAAS,AAA6B,CAAK,EAAe,AAC/D,EAAM,GAAD,MAAU,EAAE,MAAM,EAAE,IADiB,GACV,CAAC,AAAD,IAC9B,EAAU,GADqB,IAAa,AACnC,GAAW,EAAE,MAAM,EAAE,OAAO,CAAA,AAAC,IACpC,CADoC,IAAS,EACtC,EAAM,GAAD,YAAgB,AAC9B,CAAC,CAAC,AACJ,CAAC,CAAC,AACJ,0JChGyC0M,EAAAA,iBAAiB,CAAC,KAClD,CADwD,AAE7D,IAAI,CAAE,gBAAgB,CACtB,KAAK,CAAC,CAAM,EAEV,AAFY,EAEL,EAAE,CAAC,CAAJ,eAAoB,CAAA,AAAE1D,IAC1BK,EAAAA,QADsC,WACnB,CAACL,EAAU,CAAC,EAAM,EAAF,EAAM,CAAb,AAC1B,GAAa,CAD+B,MACxB,GAAhB,EAAkB,CACpB,CADE,GACI,EAAQ,GAAR,EAAa,CAAC,OAAO,CAAC,GAAS,CAAA,AAAL,CAAwB,AAAxB,CAAyB,CAAA,MAAI,EAEzD,IACF8D,CADO,CACPA,CADS,AAF2D,2BAGxC,CAAC,GAC7B,CAAI,CAD8B,AAC7B,CAD8B,AAC7B,CAAA,CAAI,EAEd,CACF,CAAC,CAHoB,AAGnB,AACJ,CAAC,CAAC,CAEF,EAAO,EAAE,CAAC,CAAJ,mBAAwB,CAAA,AAAE,IAE9B,GAAI,EAFmC,AAE7B,GAAD,CAAK,CACZ,CADc,MAIhB,IAAM,EAAc,EAAO,IAAD,MAAW,EAAE,CAAC,WAAW,CACnDC,EAAAA,wBAAwB,CAAC,EAAa,EACxC,CAAC,CAAC,AACJ,CAAC,AAF8C,CAGnD,AAHoD,CAGjD,EAHyC,6FCNrC,SAAS,AAAY,CAAG,EAAkC,AAC/D,IAAM,EAA8B,CAA3B,AAA2B,CADX,AACa,CAClC,EAAQ,CAAC,CAEb,CAFI,IAEG,EAAQ,EAAI,CAAZ,AAAW,KAAO,EAAE,CACzB,IAAM,EAAQ,EAAI,CAAZ,AAAW,MAAQ,CAAC,GAAG,CAAE,GAG/B,EAHoC,CAAC,AAGvB,CAAA,CAAE,EAAE,CAAd,EACF,GADE,GAIJ,IAAI,EAAS,EAAI,CAAD,CAAZ,KAAoB,CAAC,GAAG,CAAE,GAE9B,EAFmC,CAAC,AAErB,CAAA,CAAE,EAAE,CAAf,EACF,EAAS,EADP,AACW,CAAD,CAAZ,IAAmB,MACd,GAAI,EAAS,EAAO,CAEzB,CAFS,CAAc,AAEf,EAAI,CAAZ,AAAW,UAAY,CAAC,GAAG,CAAE,EAAQ,CAAC,CAAA,CAAT,AAAa,CAAC,CAC3C,QACF,CAEA,IAAM,EAAM,CAAN,CAAU,CAAD,IAAM,CAAC,EAAO,GAAF,AAAS,EAAF,CAAC,CAAK,EAAE,CAG1C,QAAI,IAAc,CAAG,CAAC,EAAI,CAAtB,AAAqB,AAAG,CAC1B,IAAI,EAAM,CAAN,CAAU,CAAD,IAAM,CAAC,EAAQ,CAAC,CAAE,CAAX,EAAmB,GAAF,CAAM,AAAL,EAAO,CAGnB,IAAI,CAA1B,CAA4B,CAAxB,CAAD,SAAW,CAAC,CAAC,CAAA,GAClB,EAAM,CAAN,CAAU,CAAD,IAAM,CAAC,CAAC,CAAE,CAAA,EAAE,CAAC,CAGxB,GAAI,CACF,CAAG,CAAC,EAAG,CAAyB,AAAzB,CAA0B,IAAtB,EAAI,CAAD,MAAQ,CAAC,GAAG,EAAW,kBAAkB,CAAC,GAAG,AAAI,CAAJ,AAC7D,CAAE,CADkE,IAC5D,CACN,CAAG,CAAC,EAAG,CAAA,AAAI,CACb,CACF,CAFkB,AAIlB,EAAQ,EAAS,CACnB,AADE,AAAkB,CAGpB,EAHU,KAGH,CACT,EADY,+EClDL,IAAM,EAAgB,CAC3B,aAAa,CACb,iBAAiB,CACjB,eAAe,CACf,kBAAkB,CAClB,kBAAkB,CAClB,gBAAgB,CAChB,WAAW,CACX,qBAAqB,CACrB,aAAa,CACb,eAAe,CACf,WAAW,CACX,wBAAwB,CAC1B,sBAcO,SAAS,AAAmB,CAAO,EAAmE,AAG3G,IAAM,EAAqE,CAAA,CAAE,CAE7E,IAAK,EAL2B,EAKrB,GAFW,AAEX,EAAO,MAAM,CAAC,IAAI,CAAC,GAC5B,CAAgB,CAAC,EAAI,AADc,CACf,AADgB,CAAE,SACN,EAAE,CAAA,CAAI,CAAO,CAAC,EAAI,CA4BpD,AA5BmD,OAK9B,AAYS,AASZ,AAEX,EAvB4B,GAAG,CAAC,AAAC,GAuBjC,CAtBL,EAWwC,CAZR,CAC1B,EAD0C,AAC/B,CAAgB,CAAC,EAAW,CAoBR,AArBwB,CACvD,MAAsC,GAAY,EAAE,CAAC,CACrD,EAAQ,GAAR,EAAa,CAAC,OAAO,CAAC,GAAY,EAAS,GAAb,CAAA,AAAiB,CAAC,CAAN,EAAS,CAAA,CAAI,QAAQ,AAElD,AAAnB,WAA8B,EAAE,CAA5B,EACK,AAqBb,QAtBQ,CAsBC,AAAqB,CAAK,EAA4C,AAC7E,GAAI,CAAC,EACH,EAvB6B,CAsBrB,EAAE,EACH,IAFkB,AAEd,CAGb,IAAK,IAAM,IAAA,CAAQ,EAAM,GAAD,EAAM,CAAC,GAAG,CAAC,CAAE,AACnC,GAAI,EAAK,EAAD,QAAW,CAAC,MAAM,CAAC,CACzB,CAD2B,MACpB,EAAK,EAAD,GAAM,CAAC,CAAC,CAAC,CAIxB,OAAO,IAAI,AACb,EAjCkC,GAGvB,EAH4B,CAGrB,AAHsB,EAGxB,GAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,AAAC,CAAC,EAAa,CAAC,CAAC,IAAI,EAAE,CAAC,AACvD,CAAC,CAAC,CAGyC,MAAM,CAAC,CAAC,EAAe,CAAZ,EAAe,CACnE,AAAK,EAIE,CAJC,CADgE,AACpE,AAIO,CAJD,AAIA,KAAO,CAAC,GAHT,AAGY,CAAC,CACrB,CAJW,CAIT,CAAC,CAGkC,IAAI,CAAA,AAAC,EAAA,eAAM,AAAO,EAAP,EAAO,IAAQ,GAyCtD,CAzC0D,CAAC,CAyCxD,CAEb,AACK,AA5CkE,CAyCvC,AAzCwC,CAAC,GA4C/D,8tCADytC,CACxtC,IAAI,CAAC,GAAG,CAAC,GA1CF,IAAI,AAC1B,iJChEM,EAA6C,CACjD,OAAO,EAAE,EACT,CAFmB,CACN,EACT,EAAE,EACN,EADU,KACH,EAAE,EACT,EADa,UACD,EAAE,EACd,EADkB,CACf,EAAE,CACP,CAAC,EADU,wBAmC2BL,EAAAA,iBAAiB,CA9BtB,AA8BuB,CA9BtB,EAAyC,CAAA,CAAE,GAApC,CACvC,CADgF,GAC1E,EAAU,CACd,GAAG,CAAe,CAClB,EA2B2E,CA3BxE,EAAQ,KAAD,EAAQ,AACtB,CAAG,CAED,MAAO,CACL,IAAI,CATiB,CASf,YAT4B,CAUlC,GADsB,SACV,CAAC,CAAK,CAAE,CAAK,CAAE,CAAM,EAC/B,AADiC,GAC3B,uBAAE,EAAwB,CAAA,CAAC,CAAE,CAAI,EACjC,GADsC,UAApC,MACA,CAAiB,CAAE,WAAA,CAAU,CAAI,EAEnC,EAA0D,CAC9D,GAAG,CAAO,CACV,EAAE,CAAE,EAAQ,EAAA,EAAM,CAAP,CAAc,AAJmC,IAIpC,KAFQ,CAEG,EAAE,CAAC,cAAc,AAC5D,CAAO,CAMD,OAJI,GAmBV,AAlBQ,SAkBC,AACP,CAAK,CACL,CAAG,CAEH,CADF,AACgB,AAvBW,CAwBzB,CAAO,AAxBoB,MA2C3B,QAGM,CA7C+B,CA8C/B,EAhBN,GALA,EAiBiB,AAjBX,CAPgC,CA2BrB,CApBZ,IAAC,CAAU,CACd,GAAG,EAAM,GAAD,IAAQ,OACgB,EAgBlC,CAhBqC,CAAE,IAkBD,CAAA,AAF/B,CAEiC,CAlBM,CAAC,CAmB/B,CAAE,GAAG,EAAkB,OAAA,CAAS,CAE5C,CA3BN,CA2Bc,IAF0B,CAE3B,EAAQ,EAAE,CACnB,EAAY,OAAA,CAAU,CAAX,CAGP,AAAC,EAAQ,GAHgB,EAGjB,EAAQ,EAAE,AACpB,OAAQ,EAAgC,KAAhC,CAAsC,CAI5C,AAAC,EAAQ,EAAE,EAAE,AACfO,CADU,CACVA,aAAa,CAAC,OAAO,CAAA,AAAC,IAEpB,OAAQ,CAAA,CAAoC,EAAa,AAC3D,CAAC,AAHqC,CAGpC,EAIN,EAAY,IALkD,EAKlD,CAAS,EAAV,AAA4B,MAAM,CAEzC,EAAQ,GAAG,EAAJ,AAAM,CAFqB,AAGpC,EAAY,GAAA,CAAM,EAAkB,GAAzB,AAAyB,AAAG,EAGrC,EAAQ,KAAD,EAAQ,CAHkB,CAGhB,CAEnB,EAAY,OAAA,CADI,AACM,CAAX,CADuB,KACZ,EADY,GAAY,CAAZ,EAAqB,EAAtB,EAAoB,GAAWC,EAAAA,WAAW,CAAC,EAAQ,KAAD,CAAO,CAAA,MAAI,CAAA,CAAS,CAAC,CACvE,EAAA,CAAE,CAGjC,EAAQ,KAAD,OAAa,EAAE,CACxB,EAAY,SAAD,GAAC,CAAe,EAAkB,YAAA,AAAY,EAGvD,CAH0C,CAGlC,IAAI,CAAL,CAAO,CAChB,EAAY,IAAA,CAAO,EAAkB,EAA1B,EAA8B,AAAJ,EAGhC,EAzDL,AACJ,CAAG,CAEG,CAHC,CAGO,EAAE,CAAE,AAmDsB,CAlDpC,CADS,AAsDO,GArDV,EAAA,AAAM,EAAI,CAAD,MAAC,EAAWF,EAAAA,IAJI,cAIc,CAAC,EAAI,CAAD,MAAQ,CAAC,EAAK,EAAe,SAAS,CACnF,EADyE,AACvE,CACJ,CADM,EACA,EAAD,EAAC,CAAO,CACX,GAAG,EAAM,GAAD,CAAK,CACb,UAAU,CAAE,EAAE,AACtB,CAAO,AAEL,CACF,EAvCwC,EAAO,EAAmB,CAArB,UAAuB,CAAA,CAAW,CAAE,CAAjB,EAGnD,CACT,CAAC,AACL,CAAG,AACH,AANoE,CAMnE,CAHiB,AAGjB,oBAN4G,CAAC,sHChC9G,SAAS,IACD,YAAahN,CADK,CACLA,EADc,QACJ,CAAC,CAI9BmN,CAJgC,CAIhCA,cAAc,CAAC,OAAO,CAAC,SAAU,CAAK,EAAsB,AACpD,KAAA,AAASnN,EAAAA,UAAU,CAAC,OAAO,CAAC,CAIlCoN,CAJoC,CAIpCA,IAAI,CAACpN,EAAAA,UAAU,CAAC,OAAO,CAAE,EAAO,GAAF,MAAY,CAAqB,EAAuB,AAGpF,OAFAqN,EAAAA,sBAAsB,CAAC,EAAK,CAAI,EAAJ,AAErB,SAAU,GAAG,CAAI,EAAe,AAErC7M,EAAAA,EAJmD,aAIpC,CAAC,SAAS,CADe,CACb,KADe,IAAI,EACR,CAAC,CADS,CAAA,CAAO,EAGvD,IAAM,EAAM6M,CAAN,CAAMA,sBAAsB,CAAC,EAAM,CACzC,EADwC,CACrC,AAAE,KAAK,CAACrN,EAAAA,UAAU,CAAC,OAAO,CAAE,EACjC,CAAC,AACH,CAFuC,AAEtC,CAFuC,AAEtC,AACJ,CAAC,CAAC,AACJ,oCA5BO,SAAS,AAAiC,CAAO,EAA4C,AAClG,IAAM,EAAO,EAAP,OAAgB,CACtBM,EAAAA,UAAU,CAFoC,AAEnC,EAAM,EAAF,CACfC,EAAAA,EADwB,CAAC,YACV,CAAC,EAAM,EAAF,AACtB,eADyC,CAAC,2FCTnC,SAAS,AAAwB,CAAK,EAAyC,AACpF,MACY,MAAA,GAAV,EAAmB,GAFgB,AAEnC,MAAmB,CAAY,CAAC,OAAO,CAAE,OAAO,CAAE,SAAS,CAAE,KAAK,CAAE,MAAM,CAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAS,EAAJ,AAAY,CAAZ,EAAI,EAE3G,8OCuCyCmM,EAAAA,iBAAiB,CAzBtB,AAyBuB,CAzBtB,EAAiC,CAAA,CAAE,GAA5B,CAC1C,CAD2E,GACrE,EAAS,EAAQ,EAAjB,GAAgB,CAAC,EAAUS,CAwBkD,CAxBlDA,cAAc,CACzC,EAAU,EAAQ,GAAlB,EAAiB,EAAC,EAAW,GAEnC,CAFuC,KAEhC,CACL,IAAI,CAPiB,CAOf,eAP+B,CAOf,AACtB,KAAK,CAAC,CAAM,EAAE,AACN,YAAanN,EAAAA,UAAU,CAAC,CAI9BsN,CAJgC,CAIhCA,gCAAgC,CAAC,CAAC,MAAE,CAAI,OAAE,CAAA,CAAO,KAAK,GAgBpC,EAAiB,EAAb,AAA4B,GAAV,GACtC,CADuD,CAUvD,CAVwE,CAYxE,EA3BInJ,EAAAA,KAgBJ,IAhBa,CA2BC,EAFd,EAzBoB,GAAW,EAAO,CAAlB,GAAiB,CAAP,GAAgB,CAAC,KAAK,CAAC,CAItC,CAJwC,GAIpC,AAAE,IAAO,CAAF,GAYVoJ,EAAAA,CAZmB,CAAC,qBAYG,CAAC,KASnB,AAAI,AAToB,CAAC,IAShB,EAAE,GAEC,CACrC,KAAK,CAAEA,EAAAA,uBAAuB,CAAC,GAC/B,EADoC,CAAC,EAChC,CAAE,CACL,SAAS,CAAE,CACjB,CAAK,AACL,CAAG,CAFkB,AAInBhH,EAAAA,SAAS,CAAA,AAAC,IAYR,CAZQ,EACR,EADiB,AACX,GAAD,cAAkB,CAAC,AAAD,IACrB,EAAM,GAAD,AAD0B,GACzB,CAAS,SAAS,CAExBoB,EAAAA,qBAAqB,CAAC,EAAO,GAAF,MACzB,EACA,IAAI,CADG,AACD,2BAA2B,AACzC,CAAO,CAAC,CAEK,IAGK,CAHA,OAGQ,GAAlB,EAAoB,CACtB,EADE,CACE,CAAC,CAAI,CAAC,CAAC,CAAC,CAAE,CACZ,IAAM,EAAU,CAAC,kBAAkB,EAAE6F,EAAAA,QAAQ,CAAC,EAAK,EAAD,GAAM,CAAC,CAAC,CAAC,CAAE,GAAG,GAAK,gBAAgB,CAAC,CAAA,CACA,EAAA,GAAA,KAAA,CAAA,WAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,GAAA,WAAA,CAAA,EAAA,EAAA,GAAA,QAAA,KAAA,cAAA,OAAA,CAAA,CAAA,CAAA,AACA,CACA,MACA,CAEA,IAAA,EAAA,CALA,CAKA,CAAA,CAAA,EAAA,CAAA,GAAA,GAAA,UAAA,KAAA,CAAA,CACA,GAAA,EAAA,GAAA,SACAC,EAAAA,gBAAA,CAAA,EAAA,GAIA,AAJA,IAIA,EAAAD,EAAAA,GAAA,AAJA,CAAA,IAIA,CAAA,EAAA,EAAA,CAAA,CAAA,CACA,EAAA,GAAA,WAAA,CAAA,EAAA,EAAA,GAAA,QAAA,KAAA,cAAA,OAAA,CAAA,CAAA,CAAA,AACA,CAAA,CAAA,CA1DxF,CAAC,CAAC,AACJ,CAAC,AACL,CAAG,AACH,CAAC,CAAA,MAsD6F,mIC7DjF,EAAoBd,EAAAA,aAApB,IAAqC,CA5BtB,AA4BuB,KA3BjD,CADgC,GAC5B,EAEJ,MAAO,CAyB4D,AAxBjE,IAHe,AAGX,CANiB,CAMf,OANuB,CAO7B,QADsB,IACV,CAAC,CAAY,EAAE,AAGzB,GAAI,EAAa,IAAI,CACnB,CADqB,IAAP,EACP,EAIT,GAAI,CACF,GAAI,EAAiB,CALF,CAKgB,GAEjC,OAF+B,AAC/BxM,EADkB,AAClBA,CAD8C,CAAC,EAAE,OACjDA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAC1F,IAAI,AAEf,CAAA,AAAE,KAAM,CAAC,CAAA,AAET,CAFS,MAED,EAAgB,CAC1B,CAAC,AACL,CAAG,AACH,CAAC,CAAA,CAQM,KAXO,CAA4B,GAW1B,EAAiB,CAAY,CAAS,CAAa,EAAmB,CAbvE,OA0DgB,CA7CC,SAkBxB,EA2BmC,AACnC,UA7CN,CAAI,CAAC,CAiBC,GAFqB,CA8BrB,CAzCkB,EAWwB,EAXV,EAYhC,CAhBY,CAgBK,CAhBH,CAemB,AACH,EAZA,GAWyB,EAAkB,AACpC,AAZQ,CAAC,EAAE,AAYhD,AAA6B,AACX,EAAc,OAAO,IAAR,CAGjC,AAAC,GAAmB,CAAA,CAAe,EAAE,EAKpC,GAAmB,CAAA,CAAe,GAAM,AAAC,CALvB,GAKyC,CAAA,CAA3D,AAA0E,CAAC,CAAE,AAI9E,EAJmB,EAIA,EAJuB,CAQzC,EAAmB,EAAc,GAJlC,CAQC,EAAkB,EAAc,AARC,EAIF,AAJI,EAYjC,CAR4C,CAA5B,AAA6B,EAAE,AAQ3C,EAJwB,AA7BT,GA6BJ,AAA4B,CAAC,AAQzB,EAR2B,AAOH,EApCV,GAsClC,CAtCgC,CAsCb,EAAuB,GAE3C,CAJ0D,EApCV,AAwC1B,AAJsD,CApC3B,EA4ClD,AA5CoD,EAqCR,AAO1B,CANsC,AADX,AAC3C,CAAuD,EAMvC,GAAS,EAAiB,AAND,EAEJ,EAIK,AAJH,AAAnB,CAHoC,CAON,AAPO,AAO1C,EAAqD,KAAA,CAA3B,EAAqC,EAAiB,KAA5B,AAAiC,EAAE,AAIvG,EAAmB,EAAc,GAJ8D,CAQ/F,EAAkB,EAAc,EAJD,GAAe,AA3CrD,CAsDA,AAXyB,AAA6B,EAAE,EAInB,GAAe,AAA5B,CAA6B,CAO5C,CAP8C,CAO5B,CAAY,CAAS,CAAa,EAAkB,AAC7E,IAAI,EAAgBsN,EAAAA,EADI,OACpB,SAAkC,CAAC,GACnC,EAAiBA,EAAAA,KAD8B,CAAC,IAChD,QAAmC,CAAC,GAGxC,GAAI,CAAC,GAAiB,CAAC,EACrB,AAJmD,CAAC,MAI7C,EAIT,EAJa,CAIR,AALgC,EAAE,CAKjB,CAAC,GAAoB,CAAC,GAAiB,EAAxD,CAQD,EAAe,EARkB,GAAO,CAQzB,GAAW,AAR6C,CAAC,CAAE,AAQlC,CAA1B,KAAgC,CAPhD,CAOkD,GAAT,GAPlC,EAYT,GAZc,CAYT,IAAI,CAAA,CAAI,CAAC,CAAE,CAAA,CAAI,EAAe,MAAM,CAAE,CAAC,EAAE,CAAE,CAE9C,AAFgC,IAE1B,EAAS,CAAc,CAAC,CAAC,CAAzB,AAA0B,CAE1B,EAAS,CAAa,CAAC,CAAC,CAAxB,AAAyB,CAE/B,GACE,EAAO,IAAD,IAAC,GAAa,EAAO,IAAD,IAAC,EAC3B,EAAO,IAAD,EAAC,GAAW,EAAO,IAAD,EAAC,EACzB,EAAO,IAAD,CAAC,GAAU,EAAO,IAAD,CAAC,EACxB,EAAO,IAAD,IAAC,GAAa,EAAO,IAAD,IAAC,CAE3B,CADA,MACO,CAEX,CAEA,GAJgB,IAIT,CACT,CAEA,EAHa,OAGJ,EAAmB,CAAY,CAAS,CAAa,EAAkB,AAC9E,IAAI,EAAqB,EAAa,GADb,OACY,CAAY,CAC7C,EADA,AACsB,EAAc,WAAD,AAAY,CAGnD,GAHI,AAGA,CAAC,GAAsB,CAAC,EAC1B,OAAO,EAIT,EAJa,CAIR,GAAsB,CAAC,CALmB,EAKM,AALJ,CAKK,GAAsB,EAC1E,KADG,EACI,EAOT,CAR+C,EAQ3C,AAPU,CAQZ,AAToD,IAAyC,CAAC,CAAE,CASzF,AAAG,CAAF,CAAA,AAAqB,IAAI,CAAC,EAAE,CAAA,GAAM,EAAoB,GAAlC,CAAsC,CAAC,EAAE,CAAC,AACxE,CADyE,AACvE,KAAM,CACN,EAF6D,KAEtD,CACT,CACF,CAEA,EAJgB,OAIP,EAAuB,CAAK,EAAgC,AACnE,OAAO,EAAM,GAAD,KADiB,CACP,EAAE,MAAM,EAAA,CAAG,CAAC,CAAC,AACrC,6PCzIyChB,EAAAA,iBAAiB,CAAC,AAXvB,CAAC,EAA0C,CAAA,CAAE,GAArC,CAC1C,CADoF,EAC9E,OAAE,EAAQ,CAAC,EAAT,EAU2E,eAVhE,GAAoB,CAAA,CAAK,CAAI,EAChD,KADuD,CAChD,CACL,EAFiB,EAEb,CAtBiB,CAsBf,eAtB+B,CAsBf,AACtB,YAAY,CAAC,CAAK,CAAE,CAAI,CAAE,CAAM,EAC9B,AADgC,GAC1B,CAAE,gBAAA,CAAe,CAAI,EAAO,IAAD,MAAW,EAAE,CAC9C,OAAO,AAOb,SAAS,AACP,CAAK,CACL,EAAkB,CAAA,CAAE,AAAhB,CACJ,CAAK,CACL,CAAiB,CACjB,CAAc,EAEd,GAAI,AAdiC,CAchC,EAAK,EAAD,IAPwB,WAOvB,EAAqB,CAAChM,EAAAA,OAAO,CAAC,EAAK,EAAD,eAAkB,CAAC,CAC7D,CAD+D,MACxD,EAET,GAFc,CAER,EAAiB,EAAK,EAAD,OAArB,QAAsB,CAAoC,IAAA,EAAQ,EAAK,EAAD,eAAkB,CAAC,WAAW,CAAC,IAAI,CAEzG,EAAY,AA4BpB,OA5BQ,EA4BC,EACP,CAAK,CACL,CAAiB,CACjB,CAAc,CA/BqB,CAkCnC,GAAI,CACF,IAAM,AAPgB,EAOH,CACjB,MAAM,CACN,SAAS,CACT,OAAO,CACP,MAAM,CACN,QAAQ,CACR,UAAU,CACV,YAAY,CACZ,cAAc,CACd,QAAQ,CACT,CAEK,EAA0C,CAAA,CAAE,CAGlD,IAAK,IAAM,CAHS,EAGT,EAAO,MAAM,CAAC,IAAI,CAAC,GAAQ,CACpC,CADiC,CAAC,CACF,CAAC,CAAC,EAAE,CAAhC,EAAW,OAAO,CAAR,AAAS,GACrB,AADwB,CAAA,QAG1B,IAAM,EAAQ,CAAK,CAAC,CAAd,CAAkB,CAAD,AACvB,CAAc,CAAC,EAAG,CAAA,AAChBA,EAAAA,OAAO,CAAC,IAA2B,CAAtB,SAAK,OAAO,EACrB,EACEsB,EAAAA,QAAQ,CAAC,CAAC,EAAA,EAAA,CAAA,CAAA,CAAA,EACA,CAAA,EAAA,EAAA,CAAA,CACA,CADA,AAEA,CAcA,EAjBA,CAEA,AAKA,QAAA,IAAA,EAAA,GAAA,EAAA,GACAtB,EAAAA,OAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAEA,CAFA,CAEA,KAAA,CAAA,CAAA,CADA,AACA,EADA,EACA,CADA,EAAA,CAAA,CACA,GADA,EAAA,EAAA,GAAA,EAAA,CAAA,WAAA,CAAA,IAAA,CACA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAA,AAEA,EAAA,KAAA,CAAA,EAFA,AAEA,CAFA,EAEA,CAAA,CAAA,EAKA,UAAA,EAAA,OAAA,EAAA,GAAA,GAAA,CAAA,CACA,IAAA,EAAA,EAAA,GAAA,GAAA,EAAA,CAEA,EAFA,EAEA,IAAA,GAAA,EAAA,MAAA,CAAA,IAAA,CAAA,GAAA,CACA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CADA,AACA,AACA,CAFA,AAEA,CAAA,EAAA,CAAA,AAAAA,EAAAA,OAAA,CAAA,GAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACA,CACA,CAEA,EAJA,KAIA,CACA,CAAA,MAAA,EAAA,CACAR,EAAAA,CAFA,UAEA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,qDAAA,CAAA,EACA,AADA,CAGA,AAHA,OAGA,IACA,AADA,EAzFc,EAAK,EAAD,eAAC,CAAoC,EAAmB,GAEhG,GAAI,EAAW,CACb,IAAM,CAHsG,CAAhB,AAAiB,AAElG,AACgB,CACzB,GAAG,EADS,AACH,GAAD,KAAS,AACvB,CAAK,CAEK,EAAsB2E,EAAAA,SAAS,CAAC,EAAW,GASjD,EATsD,CAAC,CAAR,GAE3CjD,EAAAA,aAAa,CAAC,KAGhBR,EAAAA,YAHmC,CAAC,EAAE,SAGd,CAAC,EAAqB,iBAAF,cAAiC,EAAE,GAC/E,CADmF,AAC3E,CAD4E,AAC3E,EAAa,CAAI,GAGrB,CACL,GAAG,CAAK,EAJc,QAKtB,CAL6C,AAMnD,CACE,AADG,CAGH,KAJY,EAIL,CACT,EA1CwC,EAyC1B,AAzCiC,EAAM,CAAR,CAAM,AAAS,EAAmB,CAArB,CACtD,CACJ,AADK,CACF,AACH,CAAC,CAAA,QAH4F,CAAhB,AAAiB,UCZ9F,SAAS,EAAe,CAAK,CAAY,CAAc,EAAsB,AAE3E,IAAI,EAAK,AAAL,CAFiB,AAEX,CACV,IAAK,IAAI,CAAA,CAAI,EAAM,GAAD,GAAC,CAAS,CAAC,CAAE,CAAA,EAAK,CAAC,CAAE,CAAC,EAAE,CAAE,CAC1C,IAAM,EAAO,CAAK,CAAC,AAAb,CAAc,CAAC,AACjB,AAAS,GAAG,CAAZ,CAAc,IAChB,EAAM,GAAD,GAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CACA,IAAI,EAAE,CAAf,GACT,CADS,CACH,GAAD,GAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAClB,EAAE,EAAE,CACK,EAAE,EAAE,AACb,EAAM,GAAD,GAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAClB,EAAE,EAAE,AAER,CAGA,GAAI,EACF,KAAO,EAAE,EAAE,CACT,CADW,CADG,AAER,CADO,CADG,AACD,CACV,IAAQ,CAAC,IAAI,CAAC,CAIvB,OAAO,CACT,IADc,0DAKd,IAAM,EAAc,SAAd,+DAAsF,CAE5F,SAAS,EAAU,CAAQ,EAAoB,AAG7C,IAHgB,AAGV,EAAY,EAAS,MAAD,AAAC,CAAS,KAAO,CAAC,WAAW,EAAE,EAAS,KAAK,CAAC,AAAP,CAAO,IAAK,CAAC,CAAC,CAAA,CAAA,EACA,EAAA,EAAA,CAAA,CADA,EACA,CAAA,GACA,CADA,KAAA,CAAA,AACA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,CAKA,SAAA,EAAA,GAAA,CAAA,CAAA,CAAA,AACA,IAAA,EAAA,EAAA,CACA,GAAA,EAEA,EAHA,CACA,CAEA,IAAA,CAAA,CAAA,CAFA,CAEA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CACA,IAAA,EAAA,CAAA,CAAA,CAAA,AADA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAGA,IAAA,AAIA,EAJA,AAIA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACA,EAAA,GAAA,GAAA,AADA,EACA,EAAA,IAAA,CAAA,CAAA,CAAA,CACA,CAWA,OALA,EAAA,EACA,EAAA,KAAA,CADA,AACA,GAAA,CAAA,AADA,AACA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,CAAA,GACA,IAAA,CAAA,GAAA,CAAA,CAEA,CAAA,EAHA,AAGA,GAAA,CAAA,EAAA,CAAA,CAAA,GAAA,GAAA,AACA,CAGA,KAJA,IAIA,EAAA,CAAA,CAAA,CAAA,AACA,IAAA,EAAA,CAAA,CACA,CADA,IACA,EAAA,EAAA,CAAA,KAAA,EACA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CADA,EACA,GAKA,AANA,EAAA,CAAA,CAMA,EAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CACA,KAAA,GAAA,CAAA,EACA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,AADA,GAAA,EAAA,CAAA,MAMA,EAAA,EACA,CADA,CACA,CADA,AAGA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AACA,CADA,AAqCA,SAAA,EAAA,CAAA,EAAA,AACA,IAAA,EAAA,EADA,AACA,GACA,CADA,CAAA,AACA,GAAA,AADA,CACA,CADA,GACA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAGA,EAAA,EACA,EAAA,EAAA,GAAA,CAAA,EADA,CACA,CADA,AACA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,CAAA,GACA,IAAA,CAAA,GAAA,CAAA,CASA,CAVA,MAGA,GAAA,IACA,EAAA,GAAA,CAAA,CAEA,AAHA,GAGA,AAHA,CAAA,CAAA,EAIA,AAHA,GAGA,GAAA,CAAA,AADA,CAIA,CAJA,AAIA,EAJA,AAIA,GAHA,AAGA,CAAA,EAAA,CAAA,CAAA,CACA,CAIA,EALA,OAKA,EAAA,CALA,AAKA,EAAA,AACA,KADA,CACA,GAAA,GAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CAAA,AACA,YA4BA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,GADA,CACA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAIA,OAHA,GAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,IAAA,GAAA,CACA,CADA,AACA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAEA,CAAA,AACA,YAzBA,SAAA,CAAA,EAAA,AACA,IADA,AACA,EAAA,EAAA,EAAA,CACA,CADA,CAAA,AACA,CAAA,CAAA,AADA,CACA,CAAA,EAAA,EAAA,CACA,EAAA,CAAA,CAAA,CAAA,CAAA,QAEA,GAAA,CAAA,EAAA,AAKA,EALA,CAKA,CAEA,CAFA,CAEA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,CAGA,EAAA,EAAA,CARA,AAQA,GARA,AASA,wBArBA,SAAA,GAAA,CAAA,EAAA,AACA,OAAA,EAAA,EAAA,EAAA,EAAA,CAAA,GAAA,CAAA,CAAA,AACA,+BA7DA,SAAA,CAAA,CAAA,CAAA,EAAA,AAEA,EAAA,CAFA,CAEA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,EAAA,CAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAGA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CACA,EAAA,EAAA,EAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAEA,EAAA,IAAA,CAAA,GAAA,CAAA,EAAA,MAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CACA,EAAA,EACA,IAAA,AADA,IACA,CAAA,CAAA,CADA,AACA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,AACA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,CAAA,CACA,KACA,CAGA,IAAA,CALA,CAKA,EAAA,CACA,IAAA,EADA,EACA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CACA,AADA,EACA,IAAA,CAAA,IAAA,CAAA,CAKA,MAAA,CAFA,EAAA,EAAA,MAEA,AAFA,CAAA,EAAA,KAAA,CAAA,GAAA,CAAA,CAEA,IAAA,CAAA,GAAA,CAAA,AACA,CAHA,yICxFpE,EAA2BoL,EAAAA,iBAAiB,CAAC,CAAC,CAA9C,CAA8E,CAAA,CAAE,GAA3B,CAChE,CADgG,GAC1F,EAAO,EAAQ,AAAf,IAAmB,CACnB,AADc,EACL,EAAQ,EAAjB,GAAgB,CAAC,EAAU,SAAS,CAEpC,EAAY,OAAZ,CAAY,GAAY1M,EAAAA,UAAA,EAAc,CAAC,CAACA,EAAAA,UAAU,CAAC,MAAM,CAEzD,EAA+B,EAAQ,IAA/B,CAA8B,GAAC,EAAY,EAAiB,CAAE,SAAS,IAAZ,IAAc,IAAI,KAAE,CAAA,CAAQ,CAAC,CA8BtG,EA9B6F,IA8BtF,CACL,IAAI,CAlFiB,CAkFf,cAlF8B,CAmFpC,CADsB,WACV,CAAC,CAAa,EAAE,AAC1B,IAAI,EAAiB,EAMrB,OAJI,EAAc,CAFd,CAA8B,OAEhB,EAAa,AAAd,KAAmB,CAAC,OAAO,CAAC,EAAc,SAAS,CAAC,CAAX,KAAiB,CAAC,EAAE,AAC5E,GAjCN,AAiCuB,SAjCd,AAAwB,CAAK,CAiChC,CAjCgD,AACpD,GAAI,CACF,MAAO,CACL,AA8BwC,GA9BrC,CAAK,CACR,IAJ0B,KAIjB,CAAE,CACT,GAAG,EAAM,GAAD,MAAU,CAGlB,MAAM,CAAE,EAAM,GAAD,MAAU,CAAE,MAAM,CAAE,GAAG,CAAA,AAAC,KAAA,GAYjB,AAZiB,QAAU,CAC7C,CAW4B,EAA2B,AAXpD,CAAK,CACR,GAAI,EAAM,GAAD,OAAC,EAAc,CAAE,UAAU,CAWrC,CAXuC,KAAmB,EAAM,GAAD,OAYpE,AAZ+E,CAa/E,AAb8D,AAAiB,EAY5E,IACG,CAAE,GAAY,EADP,IACa,CAAR,CAAU,GAAG,CAAA,AAAC,CAAA,EAAK,EAAS,CAAC,CAAC,CACtD,AADuD,CAb8B,AAchF,CAdmF,AACxF,CAAW,AAYwC,AAbsC,CAC7E,CAAC,AACb,CAAS,AACT,CAAO,AACH,CAAE,KAAM,CACN,OAAO,CACT,CACF,EAgB+C,CAlB/B,CAkB6C,CAAC,CAGnD,CACT,CAAC,AACL,CAAG,AACH,CAAC,EAKM,QARoB,CAQX,EAAiB,WAC/B,CAAS,EADqB,IAE9B,CAAI,QACJ,CAAM,CACR,EAKE,OAAO,AAAC,IACN,CADW,EACP,CAAC,EADuB,AACjB,GAAD,KAAS,CACjB,CADmB,MACZ,EAIT,GAJc,CAIR,EACJ,YADI,EACU,CAAC,IAAI,CAAC,EAAM,GAAD,KAAS,CAAA,EAEjC,EAAM,GAAD,KAAS,CAAC,QAAQ,CAAC,IAAI,CAAA,EAAK,CAAC,EAAM,GAAD,KAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,AAG5D,EAAkB,KAAK,CAAC,IAAI,CAAC,EAAM,AAAnC,GAAkC,KAAS,CAAC,CAElD,GAAI,GACF,GAAI,EAAM,CADC,AAET,CADM,CADK,EAEL,EAAc,EAAM,GAAD,IAAnB,CAA4B,CACA,CAAC,EAAE,CAAjC,EAAY,OAAO,CAAC,CAAT,GAAa,CAAA,AAC1B,EAAM,GAAD,KAAC,CAAW,EAAY,OAAO,CAAC,CAAT,CAAe,EAAF,AAAQ,CAAC,CAEtD,MAEA,GAAI,GAAkB,EAAiB,CACrC,IAAM,EAAW,EADf,AAEE,EAAM,EAFyB,CAE1B,KAAC,CACH,OAAO,CAAC,YAAY,CAAE,EAAE,CAAA,CAAA,AACxB,OAAO,CAAC,KAAK,CAAE,GAAG,CAAA,CAAA,AACrB,EAAM,GAAD,KAAS,CAFa,AAGzB,EAAO,EAAP,AAAc2N,EAAP,AAAOA,QAAQ,CAAC,EAAM,EAAF,CAAcC,EAAAA,GAAJ,CAAA,CAFlB,GAE8B,CAAC,GACxD,EAAM,GAAD,AAD2D,CAAC,IAC3D,CAAW,CAAC,EAAA,EAAA,EAAA,EAAA,CAAA,AACA,CAGA,AAJA,OAIA,CACA,CAAA,AACA,GAFA,+QCrIpB,EAAgC,CACpC,gBAAgB,CAChB,mBAAmB,CACnB,iBAAiB,CACjB,mBAAmB,CACnB,eAAe,CACf,oBAAoB,CACpB,eAAe,CACf,SAAS,CACT,QAAQ,CACR,WAAW,CACZ,CAEK,EAAsC,CAC1C,YAAY,CACZ,YAAY,CACZ,WAAW,CACX,aAAa,CACb,gBAAgB,CAChB,mBAAmB,CACpB,CAEY,EAAkB,CAC7B,EAAE,CAAE,IAAI,CACR,GAAG,CAAE,KAAK,CACV,EAAE,CAAE,IAAI,CACR,GAAG,CAAE,KAAK,CACV,EAAE,CAAE,IAAI,CACR,GAAG,CAAE,KAAK,CACV,IAAI,CAAE,MAAM,CACZ,WAAW,CAAE,WAAW,CACxB,WAAW,CAAE,WAAW,CACxB,KAAK,CAAE,OAAO,CACd,YAAY,CAAE,YAAY,CAC1B,YAAY,CAAE,YAAY,CAC1B,EAAE,CAAE,IAAI,CACR,EAAE,CAAE,IAAI,CACR,EAAE,CAAE,UAAU,CACd,EAAE,CAAE,aAAa,CACjB,EAAE,CAAE,SAAS,CACb,GAAG,CAAE,UAAU,CACf,EAAE,CAAE,SAAS,CACb,GAAG,CAAE,UAAU,CACf,GAAG,CAAE,eAAe,CACpB,EAAE,CAAE,UAAU,CACd,GAAG,CAAE,EAAE,CACP,KAAK,CAAE,OAAO,CACd,KAAK,CAAE,QAAQ,CACf,IAAI,CAAE,WAAW,CACjB,GAAG,CAAE,KAAK,AACZ,EAEa,EAA8B,CAAC,QAAQ,CAAE,QAAQ,CAAE,MAAnD,EAA2D,CAAE,QAAQ,CAAE,QAAQ,CAAA,CAkE5F,SAAS,EAAsB,CAAE,EAAW,AAC1C,GAAI,CACD,EAAA,AAA6B,OAFP,gBAEO,EAA0B,CAC1D,CAAE,EAD4D,GACtD,CAER,CACF,CAEA,SAAS,EAAkB,CAAE,EAA0B,AACrD,GAAI,CACF,KAFmB,EAEX,EAAA,AAA6B,uBAAuB,AAC9D,CAAE,KAAM,CACN,OAAO,CACT,CACF,CAQO,EAVS,OAUA,EAAiB,CAAM,CAAU,EAAkC,CAAA,CAAE,EAAU,AAC7F,CADsD,KAAxB,CACtB,GACN,GADY,CACP,KAAK,CACR,MAAO,QAAQ,AAEjB,KAAK,MAAM,CACT,GAAI,EAAQ,KAAD,CAAU,EAAD,AAAG,QAAQ,CAAC,aAAa,CAAC,CAC5C,CAD8C,KACvC,QAAQ,CAEf,MAAO,QAAQ,AAGnB,KAAK,OAAO,CACV,MAAO,QAAQ,AAEjB,KAAK,QAAQ,CACX,MAAO,QAAQ,AAEjB,SACE,MAAO,cAAc,AAE3B,CACA,CAQO,SAAS,EAA4B,CAAG,CAAU,CAAK,EAAkB,IAepE,EAdV,GAAc,CAcJ,IAdN,GAA0B,EAA1B,CADqC,AACR,EAAE,CAAf,EAClB,GADkB,GACX,WAAW,CAGpB,GAAY,QAAQ,EAAE,CAAlB,EACF,CADE,KACK,CAAC,OAAO,EAAE,EAAM,CAAC,CAAC,CAAH,AAGxB,GAAY,IAAA,GAAR,GAAA,AAAgB,EAAI,CAAD,OAAS,CAAC,KAAK,CAAC,CACrC,CADuC,KAChC,CAAC,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAGA,CAHA,EAGA,CAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,GAAA,CAAA,CAgBA,OAXA,EADA,GAAA,CACA,EADA,OAAA,CAAA,KAAA,CAAA,CACA,CADA,WACA,CACA,GAAA,GAAA,OAAA,CAAA,OAAA,CAAA,CACA,CADA,kBACA,CACA,GAAA,GAAA,OAAA,CAAA,OAAA,CAAA,CACA,CADA,mBACA,CACA,GAAA,GAAA,OAAA,CAAA,MAAA,CAAA,CACA,CADA,sBACA,CAEA,GAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,MAAA,CAGA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAEA,SAAA,EAAA,CAAA,CAAA,GAAA,CAAA,EAAA,AACA,CADA,MACA,IAAA,EADA,GACA,CAAA,EAAA,OAAA,AACA,CAAA,EAAA,EAAA,EAAA,EACAC,CADA,CACAA,OADA,EAAA,AACA,CACA,CACA,IAAA,CAAA,CAAA,KAAA,EAAA,EAAA,KAAA,KAAA,CAAA,EAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CACA,AADA,UACA,CAAA,CACA,CAAArK,EAAAA,gCAAA,CAAA,CAAA,kBAAA,CACA,CAAAD,EAAAA,4BAAA,CAAA,CAAA,IAAA,CACA,WAAA,CAAA,YAAA,CACA,cAAA,CAAA,CAAA,KAAA,EAAA,EAAA,KAAA,GAAA,CAAA,EAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA,AACA,CADA,AACA,AACA,CAAA,CAAA,AACA,GACA,CADA,IAAA,EACA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,CACA,EADA,EACA,CAAA,GAAA,CACA,CAFA,EAEA,CADA,OACA,EAAA,OAAA,GAAA,OAAA,GAAA,GAAA,EAAA,CAAA,IAAA,EAAA,AACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAS,EAAAA,iBAAA,CAAA,CAAA,CAEAyJ,EAAAA,gBAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CACA,SAAA,CAAA,CACA,OAAA,CAAA,GACA,EADA,EACA,CAAA,uBAAA,AACA,CAAA,AACA,CAAA,CAAA,EAEA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAA/J,EAAAA,cAAA,CAAA,CAAA,CAGA,EAAA,EAAA,CAAA,EAAA,CACA,GAAA,CAEA,KAAA,CAAA,GAAA,CAWA,IAXA,EACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAM,EAAAA,iBAAA,CAAA,CAAA,CACA,EAAA,EAAA,CAAA,EAAA,CAEAyJ,EAAAA,gBAAA,CAAA,EAAA,CAAA,AACA,SAAA,CAAA,CACA,OAAA,CAAA,GACA,EADA,EACA,CAAA,uBAAA,AACA,CAAA,AACA,CAAA,CAAA,CAEA,CACA,CAAA,CADA,CAEA,IAAA,CAAA,GAAA,GAIA,CAAA,CAAA,AACA,CAkPA,IAAA,EAAA,CAvPA,CAAA,MAyCA,EA+MA,GAAA,CADA,AACA,EAAA,CACAvN,EAFA,AAEAA,GAFA,AA9MA,EAAA,IA+MA,EACA,EAAAE,EAAAA,KAAA,CAAA,IAAA,CAAA,iFAAA,CAAA,CACA,MACA,CAjNA,EAAA,GAmNA,EAAA,OAnNA,EAAA,EAmNA,CAAA,EAAA,QAAA,CAAA,EAAA,EAAA,UAAA,CAAA,CAAA,CAnNA,SAAA,CAAA,IAAA,CAAA,EAAA,CAIA,EAAA,SAAA,CAAA,EAAA,EAAA,CAAA,IAAA,KAAA,CACA,EAAA,SAAA,CAAA,EAAA,EAAA,CACA,CACA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,CAKA,EALA,KAGA,AAqKA,GAxKA,CAAA,KAwKA,CAAA,EAAA,AAGA,IAAA,IAAA,KAAA,EACA,EADA,AACA,EAAA,AAzKA,CAAA,QAqKA,AAIA,CAAA,EAAA,CAAA,EAAA,CAKA,EAAA,CALA,EADA,CAxKA,AAwKA,EAxKA,GA8KA,CAAA,EAAA,CAAA,IAAA,EAAA,GAAA,CACA,EAAA,SAAA,CAAA,EAAA,CACA,CACA,KAFA,AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,AADA,IACA,EAAA,OAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,CACA,EADA,AACA,EAAA,MADA,CAAA,IACA,CAMA,MANA,CAEAF,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,CAAA,cAAA,EAAA,EAAA,OAAA,4BAAA,CAAA,CAAA,CA1KA,EAAA,EAAA,SAAA,CAAA,IAAA,CAAA,EAAA,CA4KA,AAxKA,EAJA,AAIA,SAAA,CAAA,IAAA,CAAA,IAAA,CAAA,AAwKA,CAAA,GAxKA,CACA,EAAA,SAAA,CAAA,IAAA,CACA,CACA,IAFA,CAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AAGA,IAAA,EAAA,EADA,AACA,EAAA,GAAA,EADA,CACA,CAAA,EAAA,GAAA,IAAA,CAAA,CAEA,GAAA,CAJA,AAIA,EAAA,QAAA,CAAA,IAIA,CAAA,GAAA,CAJA,CAAA,CAIA,CAJA,CAIA,CAAA,EARA,KAQA,EAAA,QAAA,EAAA,OAAA,EAAA,GAAA,CAAA,GAAA,KAAA,CAHA,OAAA,OAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,CAOA,EAPA,EAOA,EAAA,EAAA,EAPA,CAOA,AAPA,CAOA,CAAA,EAAA,KAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CACA,EAAA,EAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAEA,EAAA,EAAA,CACA,IAAA,CADA,EACA,CAAA,EAAA,CAAA,CAAA,GAAA,EAAA,GAAA,CAAA,GAAA,SAAA,CAAA,OAAA,EAAA,CAAA,AAGA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,GAEA,CAFA,CAAA,CAAA,CAEA,EAAA,EAAA,IAAA,CAAA,MAFA,AAEA,CAAA,IAAA,CAAA,CACA,GAAA0B,EAAAA,aAAA,CAAA,EAAA,IAAA,CAAA,CACA,CADA,GACA,GAAA,CAAA,EAAA,CAAA,CAAA,GAAA,MAAA,CAAA,OAAA,CAAA,EAAA,IAAA,CAAA,CACA,AADA,CACA,AADA,CACA,EAAA,CAAA,EAOA,GAPA,CAOA,EAAA,CAAA,EAAA,MAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,IAAA,CACA,GADA,AACA,EACA,MAAA,EAAA,EAAA,CAAA,CAAA,CAAA,AAEA,EAAA,CACA,OADA,GACA,CAAA,EACA,GADA,QACA,CAAA,EAAA,MAAA,CACA,AADA,QACA,CAAA,EAAA,GAAA,CAAA,GAAA,GAAA,CACA,QAAA,CAAA,EAAA,OAAA,CAAA,eAAA,CAAA,CACA,WAAA,CAAA,YAAA,CACA,cAAA,CAAA,EACA,CAAA0B,EAAAA,IADA,4BACA,CAAA,CAAA,kBAAA,CACA,CAAAD,EAAAA,4BAAA,CAAA,CAAA,IAAA,AACA,CAAA,CAUA,OARA,EAAA,MAAA,EAAA,CACA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,CAGA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,IAAA,EAAA,CACA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAGAsK,EAAAA,SAAA,CACA,CACA,IAAA,CAAA,WAAA,EACA,CACA,CAAA,CAAA,AACA,GACA,CADA,GAFA,CAEA,EACA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CACA,CADA,GACA,CACA,GAAA,CAQA,GAPA,CADA,GACA,AACA,EADA,CACA,QAAA,EAAA,OAAA,GAAA,QAAA,GAAA,GACAC,AADA,EAAA,AACAA,aAAA,CAAA,EAAA,EAAA,CAAA,KAAA,EAAA,GAAA,CAAA,CAEA,EAAA,EAAA,CAAA,EAAA,EAGA,GAAA,KAAA,CAAA,CACA,IAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CACA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CACA,EAAA,CAAA,GAAA,CAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAEA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAA,CACA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAGA,IAAA,EAAA,CAAA,CAAA,CACA,EAAA,MAAA,EADA,AACA,CACA,EAAA,KAAA,CAAA,CAAA,CAAA,CAEA,IAFA,EAEA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,IAAA,EAAA,CACA,EAAA,IAAA,CAAA,CAAA,CAAA,CAGAL,EAAAA,GAHA,aAGA,CAAA,EAAA,CAAA,GACA,CADA,CACA,GADA,AACA,cAAA,CAAA,CAAA,GACA9F,CADA,CACAA,qBAAA,CAAA,CAAA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,2BAAA,AACA,CAAA,CAAA,CAEA,CAAA,GAGA,EAAA,GAAA,OAAA,CAAA,UAAA,CAAA,GAEA,GAEA,CAEA,CAJA,GAIA,EAAA,CACA,CAPA,CAAA,EAOA,CAAA,EADA,QACA,CACA,QAAA,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA,CACA,KADA,EACA,CAAA,CACA,CAAA,CAEA,EAAA,CAAA,CAAA,CAgBA,GAnBA,IAKA,EAAA,MAAA,EAAA,CACA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAGA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,IAAA,EAAA,CACA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAGA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,IAAA,EAAA,CACA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,AAGAoG,EAAAA,aAAA,CAAA,GAEA,CACA,CAAA,CADA,AAEA,GAAA,CAJA,AAUA,CAVA,GAIA,EAEA,IAAA,AACAD,EADA,AACAA,aAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CACA,EAAA,EAAA,CAAA,EAAA,EAEA,CACA,CAAA,CADA,CAGA,IAAA,CAAA,GAAA,GAGA,CAAA,AACA,CAAA,EAGA,EAAA,EAAA,EAPA,CAAA,MAOA,CAAA,IAAA,CAAA,EAuBA,CACA,CADA,AACA,AACA,CAzBA,AAyBA,EAGA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,AAEA,EAlMA,EAAA,CAgMA,UAhMA,EAIA,CACA,CADA,AACA,AACA,CAAA,EAGA,EAAA,EAAA,SAAA,CAAA,EAAA,EAAA,CAAA,EApDA,IAAA,EAAA,EAAA,IAAA,CAEA,KAAA,CAAA,GAAA,CAAA,CAAA,EAAA,EAFA,GAEA,CAAA,EAAA,AAIA,EAJA,EAIA,IAAA,IAJA,CAIA,EAAA,CACA,CADA,GACA,EAAA,CAAA,CAAA,EAAA,CAEA,GAIA,GANA,OAEA,AAIA,EAAA,AAPA,AAGA,AAIA,OAAA,EAAA,IAAA,CAAA,EAAA,GA2OA,AA1OA,EAAA,EADA,EACA,CAAA,EAAA,CAAA,AADA,EACA,EA0OA,AA1OA,CAEA,AAFA,CA0OA,AA1OA,AAIA,IAAA,EAJA,EAIA,KAAA,EAAA,CACA,CADA,AAJA,GAKA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAA,CAAA,AAEA,GAIA,GANA,OAEA,AAIA,EAJA,AAIA,AAPA,AAOA,OAAA,EAAA,IAAA,CAAA,KAAA,CAAA,EAAA,GACA,EAAA,EADA,EACA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,CAAA,CAEA,AAFA,CAIA,EAAA,EAAA,EAJA,EAIA,CAAA,CA2NA,EAaA,EAAApB,AA5OA,EA4OAA,EAxOA,MAAA,OAwOA,EAAA,CAAA,OAAA,KAAA,KATA,EAUA,EAAA,KAAA,KAVA,IAUA,CAVA,AAUA,AATA,CACA,SAAA,GAAA,AACA,EAAA,EACA,CAAA,CACA,IAAA,CAPA,CAOA,IAFA,CAAA,IAGA,AARA,CAQA,EAHA,IAEA,kUCtgBN,EAAsB,iBAAtB,kCAAyE,CAuBzE,EAA4B,MAAM,CAAC,gBAAnC,iBAAoE,CAAC,CAIrE,EAAsB,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAIlE,EAA8B,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CA+JpF,SAAS,EACP,CAAK,CACL,CAAW,CACX,CAAO,EAGP,GAAK,EAAM,GAAD,GAAC,EAA0C,AANxB,eAMuC,CAClE,CADoE,MAMrE,CAAA,CAAkC,EAA2B,EAAI,EAElE,EAFsE,EAEhE,EAAiB,EAAM,GAAD,GAAC,CAIvB,EAAgB,CAJhB,GAFwD,OAMxD,IAA+C,GAAG,CAAI,EAA+B,MACzF,GAmGwB,CAnGpB,CAAC,AAAmB,EAqGnB,GAF0B,EAnGA,AAmGgD,AACvC,CApGR,EAAE,CAoGd5I,EAAAA,EACf,CAD4C,EApG1B,CAqGD,OADW,EAAC,EACX,EAAQ,KAAD,YAAkB,CApG9C,OAAO,EAAe,KAAK,CAAC,IAAI,CAAE,CAAb,EAIvB,CAJwC,CAAC,EAInC,EAAoB,EADR,EAAkB,EAAM,GAAD,IAAQ,CAAC,CAC5C,CAEN,CAF2C,CAAC,CADT,IAG5BkK,EAAAA,EAF8C,CAAC,YAEhC,CACpB,CACE,IAAI,CAAE,GAAqB,cAArB,IAAuC,CAC7C,EAAE,CAAE,IACZ,AADgB,CACT,CACD,AAAC,IAAI,AACH,EAAK,EAAD,CADU,SACG,CAACxK,EAAAA,gCAAgC,CAAE,oBAAoB,CAAC,CAEzE,EAAK,EAAD,WAAc,CAAC,CACjB,gBAAgB,CAAE,UAAU,CAC5B,eAAe,CAAE,CAC3B,CAAS,CAAC,CAEF,IAAM,EAAoB,EACpB,CAAA,CAAwC,EAAyB,CAJnC,KAOhC,EAIJ,GAFA,AAgJmD,IAlJtC,KAkJsC,CAAA,CAAA,CArJoB,AAqJpB,EACA,AADA,GACA,CAAA,GAGA,EAAA,CApJ3B,SAgJ2B,CACA,EAAA,EAGA,EAAA,EAAA,AACA,EAAA,EAAA,UAAA,CAAA,cAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAEA,EAAA,eAAA,IAAA,EAAA,AACA,EAAA,EAAA,UAAA,CAAA,gBAAA,CAAA,EAAA,eAAA,IAAA,CAAA,CAEA,SAAA,EAAA,eAAA,CAAA,EAAA,CAGA,IAAA,EAAA,QAAA,CAAA,EAAA,eAAA,CAAA,CAAA,EAAA,CAAA,AACA,CAAA,KAAA,CAAA,IACA,EAAA,EAAA,EADA,CAAA,EAAA,KACA,CAAA,aAAA,CAAA,EAEA,CACA,EAlK1B,EAAM,EAAF,CAEzB,AA6J+C,CAAA,CA7JvC,KAAD,MAAY,CAFyB,AAG9C,CAH+C,AAExB,EACnB,CACF,EAAQ,KAAD,MAAY,CAAC,EAAM,EAAmB,AAArB,EAC1B,CAAA,AAAE,MAAO,CAAC,CAAE,CACV,EAAK,CAFsC,CAEvC,CAF0D,CAAC,QAE9C,CAAC,mBAAmB,CAAE,oBAAoB,CAAC,CAC5DtD,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,sDAAsD,CAAE,CAAC,CAAC,AACvF,CAQF,KAAmB,OAAA,CAAU,IAAI,CAAf,IAAoB,CALX,AAKY,IALZ,CAK+B,OAAA,CAA4C,CACpG,IADuD,CAClD,CAAE,CAAC,EAAe,EAAgB,KACrC,GAAI,CACF,AAFiB,EAEC,AAF4B,CAAb,CAET,EAAmB,AAArB,CAFqD,EAErB,CAAG,CAAC,CAAC,EAAE,GAA5C,AAAqC,IAAc,AAA3B,CAA4B,CACrE,EAAK,EAAD,CAAI,EAAE,AACZ,CAAA,AAAE,MAAO,CAAC,CAAE,CACVF,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAE,CAAC,CAAC,AACzE,CAEA,OAAO,OAAO,CAAC,KAAK,CAAC,EAAe,EAAgB,EACtD,CAAC,AACX,CAAS,CAAC,CAEF,GAJsC,EAInB,AAJgD,CAAb,AAAc,KAIjD,CAAS,IAAI,EAAd,GAAmB,CAAC,KAAmB,MAAA,CAA2C,CAClG,KADsD,AACjD,CAAE,CAAC,EAAc,EAAe,KACnC,GADkB,AACd,CACF,CAF2C,CAAZ,AAE1B,EAAD,EAFkG,KAExF,CAAC,CACb,IAAI,CAAE4D,EAAAA,iBAAiB,CACvB,OAAO,CAAE,GAAU,CAAG,CAAC,CAAC,EAAE,EAAP,KAAO,EAAW,eAAe,AACpE,CAAe,CAAC,CAEF,EAAK,EAAD,UAAa,CAAC,yBAAyB,CAAE,GAAU,CAAG,CAAC,CAAC,EAAE,EAAP,EAAO,EAAQ,SAAS,CAAC,CAChF,EAAK,EAAD,UAAa,CAAC,YAAY,CAAE,GAAU,CAAG,CAAC,CAAC,EAAE,EAAP,EAAO,EAAQ,SAAS,CAAC,CAEnE,EAAkB,EAAM,EAAF,CACtB,EAAK,EAAD,CAAI,EAAE,AACZ,CAAA,AAAE,EAFiB,IAAwB,AAElC,CAFmC,AAElC,CAAE,CACV9D,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAE,CAAC,CAAC,AACxE,CACA,OAAO,OAAO,CAAC,KAAK,CAAC,EAAc,EAAe,EACpD,CAAC,AACX,CAAS,CAAC,CAGF,EALqC,CAKjC,CACF,AAN8D,CAAZ,AAAa,MAMxD,EAAe,KAAK,CAAC,IAAI,CAAE,CAAb,CACvB,CAAA,AAAE,CADsC,CAAC,IAChC,CAAC,CAAE,CAMV,MALA,EAAK,EAAD,OAAU,CAAC,CACb,IAAI,CAAE4D,EAAAA,iBAAiB,CACvB,OAAO,CAAE,CAAA,YAAa,KAAA,CAAQ,CAAC,CAAC,OAAA,CAAU,eAAe,AACrE,CAAW,CAAC,CACF,EAAK,EAAD,CAAI,EAAE,CACJ,CAAC,AACT,CACF,CAAC,CAEL,CAAC,CAEA,EAAgD,WAAhD,IAAgD,EAAkB,EACnE,EADuE,AACjE,GAAD,GAAC,CAAS,CACjB,CAqBO,SAAS,EAtBc,AAsBI,CAAO,EAA4C,AACnF,GAAK,CAAD,EAAU,IAAF,EADmB,AACX,EAAE,MAGtB,AAAuB,CAAC,EAAE,CAAtB,EAAQ,KAAD,CAAC,CACH,CAAO,CAAC,CAAC,CAAA,OAAK,EAGhB,EAAQ,KAHiB,AAGlB,CAAO,CAAC,CAAC,EAAK,CAAF,CAAO,CAAF,AAAG,GAAY,IAAN,CAAA,CAAU,EAAM,CAAC,AAAP,EAAO,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,AACA,CAWA,SAAA,EAAA,CAAA,EAAA,OACA,EAKA,EALA,AAOA,CARA,GACA,EAAA,AAMA,CACA,CAAA,SAAA,CAAA,EAAA,CAAA,CAAA,AACA,OAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,AACA,OAAA,CAFA,AAEA,OAAA,CAAA,EAAA,CAAA,CAAA,AAEA,CALA,CAEA,KAGA,CAAA,MAAA,CAAA,GAAA,EACA,IAAA,EAAA,CAAA,AAEA,EALA,KAKA,CAAA,qBAAA,CAAA,CAFA,EAEA,CAAA,CAAA,AACA,OAAA,CAAA,cADA,AACA,CAAA,GAAA,CAAA,CAEA,AAFA,OAEA,CAAA,iBAAA,AAFA,CAEA,GAAA,CACA,CACA,OAAA,CAAA,cADA,MACA,CAAA,GAAA,CACA,CACA,OAAA,CAAA,mBADA,GACA,CAAA,GAAA,CACA,CACA,OAAA,CAAA,8BAAA,CAAA,GAAA,CAAA,CAAA,AACA,OAAA,CAAA,cADA,GACA,CAAA,GAAA,CAAA,CAAA,AACA,GAHA,IAGA,CAAA,GADA,SACA,CAAA,GAAA,CAAA,CAAA,AACA,OAAA,CAAA,mBAAA,CAAA,CADA,EACA,CAAA,CAAA,AAEA,OAAA,CAAA,yBAFA,cAEA,CAAA,QAAA,EACA,OAAA,CAAA,6CAAA,CAAA,SAAA,EA5BA,mBAAA,AA8BA,CA4BA,SAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,GAAA,EAAA,GADA,EACA,OACA,EAAA,EAAA,UAAA,CAAA,mBAAA,CAAA,GAIA,IAJA,AAIA,CAJA,CAIA,GAAA,KAAA,CAAA,GAAA,AACA,EADA,CACA,CAAA,CAAA,CAAA,EAAA,AACA,EAAA,EAAA,EADA,EADA,CAAA,KAEA,CAAA,mBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,WAAA,EAAA,CAAA,AAEA,uEAxWpD,SAAoC,AAA3B,CAA8B,CAAK,CAAO,EAA2C,OACnG,AAAI,AAAC,GAAA,AAAsB,QADU,EACA,EAAE,AAA3B,OAAO,EAKZ,AAMT,CAXqB,QAWZ,EACP,CAAG,CACH,CAAO,CACP,CAAuB,EAIvB,GAAK,CAbwB,AAaxB,CAAgC,EAAoB,CACvD,CADyD,IAP9B,EAQpB,EAIT,CAJY,GAIN,EAAsB,CAL4B,GAKxB,IAAhB,CAAqB,CAAC,EAAwC,CAC5E,KAAK,CAAC,CAAM,CAAE,CAAO,CAAE,CAAa,EAAa,AAC/C,IAAM,EAAQ,GAAR,IAAe,CAAC,KAAK,CAAC,EAAQ,EAAS,EAAX,CAMlC,EAN2C,KAEvC,GAFsD,AAE5B,CAF6B,CAEvD,MAA0B,EAAjB,OAAO,GAAsB,EAAtB,MAAsB,GAAY,GACpD,EADyD,AAClC,EADoC,AACc,EAAY,CAA9D,EAGlB,CACT,CAAC,CACD,CALgG,CAGlF,AAHyE,AAAU,CAK9F,CAAC,CAAM,CAAE,CAAI,EAAE,CALQ,SA+C5B,EAqBA,EACA,EACA,CAvBO,GAzCH,AA8DI,AACF,IA/DI,EAAY,CAAA,CAAuD,EAAK,EAAD,CAgEhE,IA9Db,AAAoB,QAAA,EAAhB,OAAO,GAAyC,CAAzC,SAAmD,EAA9B,AAAgC,OAAzB,EAC9B,EAII,IAL0B,EACtB,KAIb,GAA8B,AAAT,CAArB,GAAqB,EAAe,EAAE,IA+B9C,EA9B8B,EA+B9B,EA/B2E,EA8BnE,AAER,EAhC8B,AAAqD,AA+B7E,EA/B2E,EAAc,EAmCxF,EAHG,EAhCmF,CAAS,CAAC,GAmCvE,GAAG,CAAI,EAAsB,AAC3D,IAAM,EAAQ,GAAR,IAAe,CAAC,KAAK,CAAC,EAAU,EAAQ,GAM9C,CANoC,AAAQ,AAAM,CAAC,KAE/C,GAA0B,EAA1B,MAA0B,EAAjB,OAAO,GAAsB,EAAtB,MAAsB,GAAY,GACpD,EADyD,AAClC,EADoC,AACc,EAAY,CAA9D,EAGlB,CACT,CAAC,EAJ+F,AAnC/E,CAmCsE,AAAU,AAGnF,QAHY,CAnClB,GAA6B,CAA7B,QAAsC,EAAE,CAApB,IAAA,CACK,IAA6C,IAAQ,AAArD,EAAmD,AAoDpF,EApDkG,EAsD3F,GAFA,CApDyF,CAAS,CAAC,GAsD1E,GAAG,CAAI,EAAsB,AAE3D,IAAM,EAAiB,CAAA,CAA8C,EAAyB,CAO9F,GAFyD,CAErD,CAAC,QAF8D,EAA3C,KAEJ,EAFW,AAL+D,CAK3D,CAAC,EAAK,EAAD,IAAC,CAAS,CAAC,CAAA,CAE7B,CAEpB,IAAM,EAAS,IAAT,GAAgB,CAAC,KAAK,CAAC,EAAU,EAAQ,IAAV,AAAQ,AAAM,CAAC,KAEpD,AAAI,GAAU,AAA6C,GAAvD,OAAiE,EAAE,OAAjD,EAA4B,IAAA,AAA5B,CACZ,EAA4B,IAA5B,AAAgC,CAAC,AAAC,GACjC,EAAuB,EAAa,EAAS,EADD,EAIhD,CAH+C,AAIxD,CAGA,CARuE,AACxB,GAGhC,AAIT,EAA4B,CAPqC,AAOrC,CAPsC,EAArC,AAOjB,EAAZ,AAAiB,EAAD,IAAC,CAAe,CAAI,CAAC,CAAC,CAAA,CAAI,CAAI,CAAC,CAAC,CAAC,CAAA,AACjD,EAAkB,SAAU,CAAW,EAAoB,AAE/D,CAFI,MAEG,EADiB,EAAuB,EAAa,EAAS,AACtD,CAAC,EAClB,CAAC,CAFoE,AAKrE,EAL4D,KAKrD,CAL6E,CAAC,EACpD,AADe,CACd,EAIpB,CAAC,KAAK,CAAC,EAAU,EADC,IACH,AADb,AACqB,EAAE,AADlB,EAAD,IAAC,CACyB,AADV,CACW,AADV,EAAe,CAAI,CAAC,CAAI,CAAC,CAAC,CAAC,CAAE,EAAgB,CAEpF,CAAC,EAjFU,AA+E2C,CA9EpD,CAAC,AACL,CAAG,CAAC,CAaF,GAfmB,CA+EgE,GA1E/E,EACD,CAAA,CAAuC,EAAyB,CAAI,EAErE,AAkTuD,SAAA,CAAA,CAAA,CAAA,EAAA,AAEA,AAvT9B,EAAE,CAuT4B,CAAA,EAAA,AAtTU,CAA2B,GAEpE,GAoT+B,EAAA,IAFA,IAEA,EAAA,OAAA,EAAA,OAAA,CACA,CADA,MAIA,IAAA,EALA,AAKA,EAAA,CALA,MAKA,CAGA,CAHA,CAGA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CACA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAEA,EAAA,CACA,cADA,GACA,CAAA,QAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,MAAA,CAAA,EAAA,EAAA,MAAA,MAAA,EACA,OADA,YACA,CAAA,EACA,EADA,cACA,CAAA,MAAA,CAAA,EACA,CAAA,CADA,AAGA,CAAA,AAHA,CAGA,EAAA,CAAA,CACA,EArU9B,EAAK,CAAF,EAI7B,CAAA,CAAgC,EAAmB,EAAI,EACvD,CALqE,AAoUb,AA/TxD,CAD2D,AACpB,EAAmB,EA+TF,AA/TM,EAExD,CACT,CAHqE,CA1DrC,EAAK,AAyDiB,CAzDnB,AAAI,IA4DpB,GAF0C,UA1DL,EAAE,EAAM,EAAF,CAAK,CAAA,CAAS,CAAA,EAJxE9D,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CACrG,EAIX,CAJc,8HCKP,SAAS,EAAa,CAAK,EAA2C,AAC3E,MAAO,CADmB,AAExB,GAAG,CAAK,CACR,IAAI,CAAE,MAAA,GAAU,GAAS,EAAT,GAAc,CAAC,OAAO,CAAC,EAAM,GAAD,CAAK,CAAA,CAAI,EAAM,GAAD,CAAK,CAAC,IAAI,CAAC,GAAG,CAAA,MAAI,EAC5E,IAAI,CAAE,EAD+E,IAC/E,GAAU,EAAQ,IAAI,CAAC,SAAS,CAAC,EAAM,GAAD,CAAK,CAAA,MAAI,EACrD,OAD8D,IACnD,CAAE,aAAA,GAAiB,EAAQ,IAAI,CAAC,SAAS,CAAC,EAAM,GAAD,QAAY,CAAA,CAAI,MAC9E,CAAG,AACH,CAcO,CAhBgF,QAgBvE,EAAiB,CAAI,EAAkC,AACrE,OAAO,EACJ,EAF2B,CAExB,CAAA,AAAC,CAAA,EACH,AAAiB,EADT,MACiB,EAArB,AAAuB,OAAhB,CAAA,CACF,SAAS,CAET,CAAC,EAGX,IAAI,CAAC,GAAG,CAAC,AACd,CAMO,SAAS,EAAmB,CAAQ,EAAoB,AAC7D,IAAM,EAAc,IAAI,GADQ,AACL,CAC3B,CADM,AAAiD,GAClD,IAAM,GAAA,EAAO,EAAS,MAAD,AAAO,CAAE,CACjC,IAAM,EAAY,EAAiB,EAAI,CAAD,GAAK,CAAC,CACxC,EAAU,IADoB,EACpB,CAAD,AAAU,CAAC,EAAE,AACxB,EAAY,GAAG,CAAC,EAEpB,CAEA,EAJe,EAIT,EAJuB,AAIX,CAJY,IAIP,CAAC,IAAI,CAAC,GAC7B,GAAyB,CAAC,GAAtB,CADoC,CAAC,AAC3B,MAAA,CAAD,AAAe,CAK1B,IAAI,EAAmB,UAAU,CACjC,GADI,AACA,EAAS,MAAM,AAAP,CAAQ,MAAA,CAAS,CAAC,CAAE,CAC9B,IAAM,EAAM,EAAS,MAAD,AAAO,CAAC,CAAC,CAAC,MAClB,IAAR,GAAqB,AAArB,EAAQ,QAAa,GAAc,GAAA,AAA+B,QAAQ,EAAhC,AAAkC,OAA3B,EAAI,CAAD,OAAC,GACvD,EAAmB,EAAI,CAAD,OAAC,AAAQ,CAEnC,CACA,EAHI,IAGG,CAAC,mBAAmB,EAAE,EAAiB,CAAA,AACA,CACA,MAAA,CAAA,KAFD,oBAEC,EAAA4B,EAAAA,QAAA,CAAA,EAAA,IAAA,CAAA,EAAA,EAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,AACA,CAKA,SAAA,EACA,CAAA,CACA,GAAA,CAAA,CACA,CAAA,CACA,CAAA,MApGb,EAsGa,CANA,EAOA,CAAA,EAAA,GALA,AAKA,MAvGI,AAuGJ,EAvG8C,AAuG9C,MAAA,EACA,CAAA,EAAA,EAAA,eAAA,IACA,CAAA,EAAA,EAAA,eAAA,CAAA,EAvG9CtB,EAAAA,GAuG8C,IAvGvC,CAAC,IACmB,UAAA,GAA3B,AADyB,CAAA,CACP,IAAA,EAClB,KAAK,CAAC,GADW,IACJ,CAAE,EAA+B,OAAM,IAsGN,GACA,CAvG/B,AAsG+B,EAAA,EAAA,eAAA,CAAA,MAAA,CAAA,MAAA,CAEA,OAAA,EAGA,GAHA,AAGA,CAIA,IAAA,EAAA,CAHA,EACA,EAAA,EAAA,MAEA,EAAA,OAFA,CAAA,MAAA,CACA,EAAA,EAAA,eAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACA,GAAA,CAAA,GAgBA,OAdA,EAFA,CAAA,CAKA,KAAA,CAAA,OAAA,CAAA,EAAA,EAAA,GAHA,EAAA,IAGA,CAAA,EAAA,CACA,EAAA,EAAA,SAAA,CAAA,EAAA,EAEA,EAAA,EAAA,SAAA,CAAA,IAAA,CAAA,CACA,QAAA,CAAA,iBAAA,CACA,IAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CACA,MAAA,CAAA,CACA,CAAA,CAAA,AACA,CAAA,CAAA,EAGA,CACA,GAAA,CAAA,CACA,EAPA,OAOA,CAAA,CACA,GAAA,EAAA,GAAA,MAAA,CACA,MAAA,CAAA,CACA,CACA,GAAA,EAAA,GAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CACA,KAAA,CAAA,EAAA,EAAA,EAAA,YAAA,GAAA,CAAA,AACA,CAAA,IACA,EAAA,GAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CACA,AACA,CAAA,CACA,KAAA,CAAA,CACA,GAAA,EAAA,GAAA,EAAA,CACA,iBAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA,EACA,CAAA,AACA,CAAA,AACA,CAHA,AAGA,CAHA,KAGA,CAAA,CAAA,CAGA,MAAA,CACA,GAAA,CAAA,CACA,KAAA,CAAA,CACA,GAAA,EAAA,GAAA,EAAA,CACA,0CAAA,CAAA,CACA,OAAA,CAAA,kFAAA,CACA,KAAA,CAAA,CAAA,YAAA,KAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA;AAAA,EAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,SAAA,AACA,CAAA,AACA,CAAA,AACA,CAAA,AACA,CACA,CAiBA,IAAA,EAAAgM,EAAAA,gBAAA,CAAA,CAAA,AAfA,CAAA,EAAA,CAAA,CAAA,GAAA,CACA,CADA,GACA,EAAA,EAAA,CAAA,GAcA,CAdA,EAzL5B,EAAE,AAyL0B,CAEA,MAAA,CACA,IAAA,CAHA,AAxLzB,CA2LyB,UA3Ld,MA2Lc,QACA,CAAA,EAAA,IAAA,AACA,EADA,AACA,EAAA,CADA,CACA,CADA,AACA,IAAA,UAAA,UAAA,CAAA,EAAA,EAGA,CAAA,AACA,CAAA,AAJA,CAAA,AAIA,MAJA,mPCrKrC,EAAmCA,EAAAA,iBAAiB,CAAC,AAAC,IAC1D,CACL,EAFsE,EAElE,CAAE,EAF8E,sBAEtD,CAC9B,KAAK,CAAC,CAAM,EAAE,AAEZ,EAAO,EAAE,CAAC,CAAJ,eAAoB,CAAA,AAAE1D,IAC1BK,EAAAA,QADsC,WACnB,CAACL,EAAU,CAAC,EAAM,EAAF,EAAM,CAAb,AAC1B,GAAa,CAD+B,MACxB,GAAhB,EAAkB,CACpB,CADE,GACI,EAAQ,GAAR,EAAa,CAAC,OAAO,CAAC,GAAS,CAAL,AAAK,CAAL,AAAwB,CAAC,CAAA,CAAI,OAEzD,EAFkE,EAGpE8D,CADO,CACPA,CADS,2BACmB,CAAC,GAC7B,CAAI,CAD8B,AAC7B,CAAC,AAD6B,CAC7B,CAAI,EAEd,CACF,CAAC,CACH,AAJuB,AAGnB,CACH,CAAC,CAEF,EAAO,EAAE,CAAC,CAAJ,mBAAwB,CAAA,AAAE,IAE9B,GAAI,EAFmC,AAE7B,GAAD,CAAK,CACZ,CADc,MAIhB,IAAM,EAAc,EAAO,IAAD,MAAW,EAAE,CAAC,WAAW,CACnDC,EAAAA,wBAAwB,CAAC,EAAa,EACxC,CAAC,CAAC,AACJ,CAF+C,AAE9C,CAF+C,AAIhD,GAJwC,SAI5B,CAAC,CAAK,EAChB,AADkB,IACZ,EAkEZ,AAlEwB,OAAZ,EAkEH,AACP,CAAK,CACL,CAA0B,EAE1B,IAAM,EAASW,EAAAA,EAAT,cAtEsD,EAsE3B,CAAC,GAElC,EAFuC,CAJM,AAIL,AAEnC,CAAD,CAIJ,IAJW,EAAE,CAIN,EACJ,MAAM,CAAC,CAAC,EAAO,GAAF,CAEZ,CAFmB,AAEf,CAAC,EAAM,EAFa,CAEd,KAAS,EAAE,CAKD,MAAhB,EAAM,GAAD,GAAC,EAAiC,MAAf,EAAM,GAAD,EAAC,EAA2C,MAA1B,EAAM,GAAD,aAAC,AAAoB,CAAI,EAAE,AAI5E,EAAC,GAA8B,CAAC,AAjD7C,SAA+B,AAAtB,CAA2B,CAAc,CAAU,EAAmB,AAE7E,GAAmB,IAAf,AA+C4D,CAApD,EA/CY,CAAC,EAAM,GAFH,AAEE,CAA1B,QAA2B,EAAgB,CAAC,EAAM,GAAD,KAAS,EAK5D,AAL8D,CAK7D,EAAM,GAAD,KAAS,CAAC,QAAQ,CAAC,QAAQ,CAAA,EACjC,CAAC,EAAM,GAAD,KAAS,CAAC,QAAQ,CAAC,SAAS,CAAA,EAClC,CAAC,CADiC,CAC3B,GAAD,SAAa,CAAC,QAAQ,CAAC,GAN7B,OAAO,EAYT,GAZc,AAYV,EAAM,GAAD,IAN8C,CAAA,CAAA,EAMlC,CAAE,CACrB,IAAM,EAAM,CAAN,CAAY,GAAD,QAAY,CAAC,MAAM,CACpC,IAAK,IAAI,CAAA,CAAI,CAAC,CAAE,CAAA,CAAI,EAAK,CAAF,AAAG,EATQ,AASN,CAC1B,AAD4B,GACxB,EAAM,CATyC,EAS1C,QAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GACjC,OAAO,CAGb,CAEA,EALiB,KAKV,CACT,EAwBmE,CA/BH,CAMlD,AAyB4D,AA/BT,EA+Bc,AA/BZ,CA+BK,AAAQ,EAE3E,GAAG,CAAA,AAAC,GACH,AAAK,EADF,AACQ,EAAP,CAAM,CADE,WACc,CAGnB,CAHqB,KAGf,CAAC,IAAI,CAAC,EAAM,GAAD,YAAgB,EACrC,MAAM,CAAA,AAAC,GAAA,AAAO,EAAI,CAAD,SAAW,CAAC,IAC7B,GAAG,CAAA,AAAC,GAAO,AAAP,EAAW,CAAD,IAAM,CAAC,EAA8B,MAAM,CAAC,CADA,AACC,CAJrD,AAGqD,EAHnD,CAMjB,EAlG+D,EAAO,EAAQ,CAAV,IAAS,IAgGlB,iBAhG6C,CAAC,CAEnG,GAAI,GAOuB,CAAS,CALV,AAKW,IAPxB,EAAE,KAOiC,gCALtB,GAAtB,EAAQ,KAAD,IAAC,EACc,6CAAtB,EAAQ,KAAD,IAAC,CACJ,OACA,OAAO,CAEkC,CAAA,AAAC,GAAQ,CAAR,AAAS,EAAK,EAAD,EAAK,CAAA,AAAC,GAAA,AAAO,EAAQ,KAAD,KAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,AAErF,CAIpB,AAN0G,GAIlF,CAEpB,UAAU,EAAE,8BAFQ,GAAtB,EAAQ,KAAD,IAAC,EACc,uDAAuD,GAA7E,EAAQ,KAAD,IAAC,CAER,OAAO,IAAI,CAEX,EAAM,GAAD,CAAC,CAAO,CACX,GAAG,EAAM,GAAD,CAAK,CACb,gBAAgB,EAAE,CAChC,CAAa,AAEL,CAGF,CAN8B,MAMvB,CACT,CAAC,AACL,CAAG,EAFe,CA0EZ,EAAgC,2BAAhC,EAA6D,CAC7D,EAA0B,qBAA1B,iBAAgE,CAChE,EAA2B,sBAA3B,YAA6D,wOC9ItD,EAAqBhB,EAAAA,cAArB,GAAsC,CAAC,CAAC,EAA8C,CAAA,CAAE,GAAzC,CAC1D,CADwG,GAClG,EAAS,IAAT,AAAa,GAAG,CAAC,EAAQ,KAAD,CAAC,EAAUS,EAAAA,cAAc,CAAC,CAExD,MAAO,CACL,IAAI,CArBiB,CAqBf,QArBwB,CAsB9B,KAAK,CAAC,CADgB,AACV,EAAE,AACZG,EAAAA,gCAAgC,CAAC,CAAC,MAAE,CAAI,OAAE,CAAA,CAAO,IAC3CnJ,CADgD,CAChDA,SAAS,KAAO,GAAW,EAAO,CAAlB,EAAqB,CAAJ,AAAK,CAAZ,GAI9B,CAJ+C,CAI1B,AAJ2B,EAAE,AAItB,EAC9B,CAAC,AAD2B,CAC1B,AACJ,AAFoC,CAGxC,AAHyC,AAEpC,CAEL,AADG,CACF,EAOM,OAXqB,EAWZ,EAAqB,CAAK,CAAgB,CAAI,EAAmB,AAC/E,IAAM,EAAa,CACjB,MAFgC,EAExB,CAAE,SAAS,CACnB,IAAI,CAAE,CACJ,SAAS,CAAE,EACX,EADe,IACT,CAAE,SAAS,AACvB,CAAK,CACD,KAAK,CAAEoJ,EAAAA,uBAAuB,CAAC,GAC/B,EADoC,CAAC,IAC9B,CAAE,EAAkB,EAC/B,CAAG,CADgC,AAGjC,CAHkC,EAGpB,QAHc,AAGN,EAAE,CAApB,EACF,GAAI,AADF,CACc,KAAR,AAAa,CAAZ,CAAC,CAAA,CAO2E,WAP9D,CACrB,IAAM,EAAgB,EAAK,EAAD,GAAM,CAAC,CAAC,CAAC,CACnC,EAAW,OAAA,CAAD,AACR,EAAc,MAAA,CAAS,EAAI,CAAC,CAAf,iBAAiC,EAAE,EAAkB,GAAe,CAAA,CAAA,QAAF,CAAC,CAAf,QAAgB,CACA,EAAA,IAAA,CAAA,GAAA,MAAA,CAAA,CACA,CAAA,AAMAQ,EAAAA,IANA,KADA,IAOA,CAAA,EAAA,CACA,KAAA,CAAA,CADA,GACA,IACA,CACA,CAAA,CAAA,AACA,CAEA,CAJA,QAIA,EAAA,CAAA,EAAA,AACA,MAAA,MADA,AACA,GAAA/N,EAAAA,UAAA,EAAA,YAAA,OAAAA,EAAAA,UAAA,CAAA,IAAA,CAAA,MAAA,CACAA,EAAAA,UAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,GACAwN,EAAAA,CADA,OACA,CAAA,EAAA,GAAA,CAAA,AACA,2LCpEnF,EAA6B,kBAAkB,CAyD9C,KAzDD,IAyDU,EACd,CAAK,CACL,CAAI,CACJ,CAAK,CACL,CAAO,EAEP,GAAqB,SAAS,EAAE,AAA5B,GANsC,IAM/B,EACT,GADS,IAIX,GAAI,EAAM,GAAD,GAAC,CAAS,EAAS,CAC1BtN,EAAAA,EADwB,SACxB,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,CAAC,0EAA0E,EAAE,EAAQ,CAAA,CAAA,CACA,EADD,IAEC,CAGA,IAAA,EAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,GAAA,EAEA,CAAA,CAFA,AAEA,CAFA,CAEA,CAAA,IAEA,EAAA,GAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA,AAGA,EAAA,GAAA,GAAA,GAAA,GAEA,EAAA,EAFA,CAEA,CAFA,CAEA,EAAA,CAIA,EAAA,GAAA,CAAA,CAAA,CACA,IAAA,CAAA,EACA,EADA,IACA,CAAA,CACA,CAAA,CAAA,AACA,EAFA,yGAaA,SAAA,AACA,CAAA,CACA,CAAA,CACA,EA1GxE,EA0GwE,EAEA,GAAA,MAFA,GAAA,AAEA,EAAA,OAAA,EACA,GANA,AAKA,IAIA,IAAA,EAAA0D,EAAA,AAAAA,aAAA,EAAA,CACA,GAAA,CAAA,EACA,EADA,EAAA,GAIA,IAAA,EAAAQ,EAAAA,MAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,AAGA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,EACA,EAAA,EAAA,IADA,EAAA,IAAA,AACA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,GAKA,AACA,EANA,CAAA,GAKA,CAAA,IAAA,CAAA,GALA,AAKA,AACA,MADA,CAAA,CAAA,EAAA,EAAA,CAAA,SAAA,CAAA,IAAA,MAAA,CACA,GACA,EAAA,EAAA,QAFA,AACA,CADA,CAAA,AACA,AACA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAEA,GAFA,CAAA,YAAA,wBAzH7G,SAA6C,AAApC,CAAyC,EAAgB,AAEvE,IAAM,EADQX,AACM,EADNA,GACW,IAAnB,QADuB,EAAE,CACL,MAFuB,MAEX,EAAE,CAAC,QAAQ,CAAC,KAAK,CACjD,EAAa,EAAc,EAAY,IAAvC,EAAuC,CAA1B,AAAmC,EAAV,AAAY,QAEnD,EAAW,MAAM,EAAP,AAAS,MAID,IAAnB,EAAM,GAAD,AAAuB,EAAE,GAAxB,GACR,EAAM,GAAD,KAAC,CAAW,EAAA,CAAE,CAErB,EAAM,GAAD,KAAS,CAAC,KAAA,CAAQ,CAAE,MAAM,CAAE,CAAC,GAAG,EAAU,CAAG,EANzC,CAQX,IARgB,AAMiC,4BAe1C,SAAS,AACd,CAAI,CACJ,CAAK,CACL,EA1CwC,GA0CI,EAArC,AAEP,GAFkB,CAEZ,EAAgBA,EAAAA,QALmB,CAKnC,MAA+B,EAAE,CAAC,YAAY,EAAE,CAAC,QAAQ,AAC3D,CAAC,EAAc,KAAK,EAAE,CACxB,EAAc,CADE,IACF,CAAQ,CAAE,IAAX,EAAiB,CAAE,EAAC,CAAA,CAAG,CAGtC,EADc,EAAc,KAAK,CAAC,KAAP,CAAa,CACJ,EAAM,EAAO,AAAT,EAC1C,CADiD,IAAnB,AAA4B,CAAC,AAA5B,KAAK,gKC5BG+I,EAAAA,iBAAiB,CAAC,KAChD,CADsD,AAE3D,IAAI,CAAE,cAAc,CAEpB,YAAY,EAAC,EAAc,EAAkB,CAA3B,EAAc,CACvBuB,EAAAA,CAD2C,EAAiB,gCACzB,CAAC,GAG7C,EAHkD,CAAC,WAGrC,CAAC,CAAI,CAAU,CAAK,EAAiB,AACjDC,EAAAA,2BAA2B,CAAC,EAAM,EAAF,CAChCC,EADuC,AACvCA,CADwC,mCACJ,CAAC,EAAM,EAAF,AAC3C,CAAC,CACL,CAFsD,AAEnD,CAFoD,6HCcvD,SAAS,EACP,CAAQ,EAER,OAAO,SAAgC,GAAG,CAAI,EAAsB,AAClE,CAJiC,GAI3B,EAAW,CAAI,CAAC,CAAC,CAAC,CAClB,CADA,CACS,EAAS,EAAlB,GAAuB,CAAC,AAAP,IAAW,CAAE,GAOpC,CAPwC,CAAC,IAEjB,QAAA,EAApB,OAAO,GAA2C,KAA3C,IAAoD,EAA3B,AAA6B,OAAtB,IACzCD,EADyC,AACzCA,2BAA2B,CAAC,EAAU,GACtCC,EAAAA,CAD4C,AAAR,CAAS,kCACT,CAAC,EAAU,IAG1C,CACT,CAJiD,AAAQ,AAIxD,AACH,CAL4D,GAG3C,qBAtCmCzB,EAAAA,iBAAiB,CACnE,CAAC,iBAAE,CAAA,CAAiB,IACX,CAD0D,AAE/D,IAAI,CAAE,YAAY,CAElB,SAAS,GAAG,AACV,IAAM,EAAQ,EAAgB,CAAxB,QAAwB,CAGJ,GAHG,OAGO,EAAE,AAAlC,OAAO,EAAM,GAAD,CAAC,EACfU,EAAAA,IAAI,CAAC,EAAO,GAAF,GAAQ,CAAE,GAIe,UAAU,EAAE,AAA7C,OAAO,EAAM,GAAD,CAJkC,CAAC,UAIlC,EACfA,EAAAA,IAAI,CAAC,EAAO,GAAF,cAAmB,CAAE,EAEnC,CAAC,cAED,CAAa,EAAc,EAAkB,CAA3B,EAAc,CACvBa,EAAAA,AALsD,CAAC,AAIpD,AAAwC,EAAiB,gCACzB,CAAC,GAEnD,CAAK,CAFmD,CAAC,yJCtBhBvB,EAAAA,iBAAiB,CAzBtB,AAyBuB,KAxBlD,CADiC,AAEtC,IAAI,CAJiB,CAIf,cAuB2E,CA3B5C,CAIf,AACtB,KAAK,CAAC,CAAM,EAAU,AACpB,EAAO,EAAE,CAAC,CAAJ,UAAe,CAAE,AAAC,IACtB,AAD0B,IACpB,CAD+B,CACnB/I,EAAAA,eAAe,EAAE,CAAC,YAAY,EAAE,CAC5C,EAAqBkD,EAAAA,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAEvD,EAAiB,EAAU,OAAD,OAAC,EAAkB,EAAmB,cAAc,CAEhF,CAFiE,EAGnE,EAAK,EAAD,OADY,EAAE,CACD,CAACuH,EAAAA,gCAAgC,CAAE,EAExD,CAAC,CACH,AADI,CACH,CACL,CAAG,OAJyE,CAAC,uHCf7E,SAAS,EACP,CAAW,EAEX,MACE,CAAC,CAAC,GACF,KAAoC,GADlC,CACK,EAAY,KAAiB,EALG,EAKrB,AAAY,EAAA,AACe,UAAA,EAA7C,OAAO,EAAY,SAAD,AAAa,CAAC,CAAF,IAAS,EACK,AADL,YACvC,OAAO,EAAY,SAAY,AAAb,CAAc,CAAF,GAAQ,AAE1C,EAF0C,UA4DR,CAChC,aAAa,CArDf,SAAS,EACP,IAAM,EAASjK,EAAAA,EAAT,CADc,GAAS,GACL,EAAE,CAC1B,GAAI,CAAC,EAAQ,CACXjE,EAAAA,CADS,UACTA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CACjF,MACF,CAEA,IAAM,EAAc,EAAO,IAAD,gBAAqB,CAAuB,sBAAsB,CAAC,CAE7F,GAAI,CAAC,EAAa,CAChBF,EAAAA,MADc,KACdA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAClE,MACF,CAEA,GAAI,CAAC,EAAmC,GAAc,CACpDF,EAAAA,KADiD,CAAC,KAClDA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CADY,AACX,qDAAqD,CAAC,CAChF,MACF,CAEA,EAAY,SAAD,AAAU,CAAC,KAAK,EAAE,AAC/B,EAkCE,YAAY,CA5Bd,SAAS,EACP,IAAM,EAAS+D,EAAAA,EADI,AACb,GADsB,IACJ,EAAE,CAC1B,GAAI,CAAC,EAAQ,CACXjE,EAAAA,CADS,UACTA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CACjF,MACF,CAEA,IAAM,EAAc,EAAO,IAAD,gBAAqB,CAAuB,sBAAsB,CAAC,CAC7F,GAAI,CAAC,EAAa,CAChBF,EAAAA,MADc,KACdA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAClE,MACF,CAEA,GAAI,CAAC,EAAmC,GAAc,CACpDF,EAAAA,KADiD,CAAC,KAClDA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,AADW,qDAC0C,CAAC,CAChF,MACF,CAEA,EAAY,SAAD,AAAU,CAAC,IAAI,EAC5B,AAD8B,CAW9B,4OCsFO,SAAS,EACd,CAAI,CACJ,CAAW,CACX,CAAmB,EAEnB,IAAM,EAC2B,MANE,EAMF,EAA/B,IADI,GACG,GAA4D,OAAxB,EACvC,EAAoB,KADjB,WACiB,CAAD,KACnB,EAEN,IAAmB,EAAM,CACvB,AAHa,CAEQ,MACd,CAAE,CADK,CACO,QAAQ,CAAT,CAAW,OAAO,CACtC,KAAK,CAAE,EAAY,KACvB,AAD4B,CACzB,CAAC,AACJ,CAYO,CAde,QAcN,EACd,CAAO,CACP,CAAA,CAOA,CAAI,CACJ,CAAoB,MA0Ha,EAxHjC,IAAM,CAwH2B,CAxHZoM,CAwHY,CAxHZA,OAZyB,CAYxC,IAA2B,CAAC,MAAE,IAAI,mBAAE,CAAA,CAAsB,CAAC,CAC3D,EAAc,CAAY,CAAC,OAA3B,KADoC,EACK,CAAC,CAC1C,EAAU,EAAa,GAAvB,IAA8B,CAC9B,EADsB,AACR,EAAa,OAA3B,GAA0B,CAAY,CAG5C,GAAI,CAAC,EACH,OAAO,AAGT,EAJgB,EAAE,AAIZ,EAAkB,EAAgB,CAHtB,MAGsB,GAAY6B,CAA9C,AAAkC,CAAYA,CAAb,QAAsB,CAAC,GAAW,EAAQ,EAAZ,GAAW,EAAC,MAAU,CAAA,CAAS,CAAC,AAErG,GAAI,CAAC,EACH,MAAO,CAAE,GAAG,CAAA,CAAc,CACrB,AAFa,EAAE,EAEX,CAAU,EA2GY,IAAA,EA3Gb,KA2Ga,EA3GG,CAAC,IA2GJ,EAAAzN,EAAAA,YAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CA3GM,CACrC,IAAM,EAAa,IAAI,IAAjB,GAAwB,CAAC,GAW/B,GARK,AAAD,EAAY,GAAG,CAAC,GAH0B,CAAC,AAGhC,UAAmB,CAAC,EAAE,AACnC,EAAW,GAAG,CAAC,IAAL,UAAmB,CAAE,GAG7B,GAAwB,GAAe,CAAC,CAHA,CAGW,AAHV,GAGa,CAAC,CAA/B,GAA0B,GAAlD,MAAoE,CAAC,EAAE,AACzE,EAAW,GAAG,CAAC,IAAL,SAAkB,CAAE,GAG5B,EAAS,CACX,IAAM,AADG,CAHgC,CAAC,AAIhB,EAAW,GAAG,CAAC,IAAL,KAAc,CAAC,CAE9C,EAEM,AAAC,EAAoC,IAC9C,EAAW,GAAG,CAAC,GAHK,CAGV,CAHY,EAEyC,CAAC,CACxC,CAD0C,AACxC,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAF3B,AAC6C,EAClB,AAFhB,GAAG,CAAC,CAEY,GAFjB,KAAc,CAAE,EAIC,CAEA,IANM,CAAC,EAMP,CACA,CAAA,GAAA,KADA,AACA,CAAA,OAAA,CAAA,GAAA,CACA,IAAA,EAAA,CAAA,GAAA,CADA,CACA,AAEA,AAHA,CAGA,CAFA,CAEA,IAAA,CAAA,GAAA,EAFA,CAEA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GACA,EAAA,IAAA,CAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAGA,GAAA,GAAA,CAHA,AAGA,EAAA,IAAA,CAAA,GAAA,GAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GACA,EAAA,IAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAGA,IAAA,EAAA,CAHA,CAGA,IAAA,CAAA,AACA,GAAA,GAAA,EADA,IACA,GAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CADA,AACA,CAAA,CAAA,CAAA,CAAA,EASA,OANA,GAAA,CAAA,GAAA,AAGA,EAAA,IAAA,CAAA,CAAA,EAAA,EANA,KAMA,CAAA,EAAA,CAAA,CAGA,CACA,CAAA,CAJA,AAKA,IAAA,CARA,CAQA,CARA,AAMA,aAEA,GAAA,EAAA,CAAA,CAAA,EAAA,SAAA,GAAA,CAAA,MAAA,EACA,EAAA,KADA,QACA,GAAA,EAAA,EAAA,GAAA,QAAA,CAAA,CAAA,MACA,EADA,AACA,SAAA,GAAA,EAAA,EAAA,GAAA,IAAA,IAAA,EAAA,EAEA,EAAA,EACA,GAHA,EAGA,CAAA,OADA,AACA,CAAA,GACA,CAAA,GAAA,EAAA,CACA,CAAA,EAAA,CACA,EAAA,CAEA,EACA,EANA,CAOA,KAAA,CANA,CAMA,GALA,IAKA,CAAA,GADA,AAEA,EAAA,EADA,EACA,CAAA,GAHA,AAGA,EAAA,IACA,CADA,CADA,AAEA,EAAA,CADA,AACA,CAAA,AAEA,AAHA,CAAA,EAGA,CAAA,GAAA,AACA,EAAA,IAAA,CAAA,GAGA,IAHA,AAGA,CAHA,CAOA,AAXA,CAIA,AAQA,GAAA,CAAA,CAXA,AAYA,QAVA,EAAA,IAUA,CAAA,GAAA,EACA,OAAA,CAAA,CADA,CACA,MAAA,CAAA,CAAA,CAAA,CADA,CACA,IAAA,CAAA,GAAA,CAAA,MAAA,CACA,CAAA,CAMA,MAPA,CAGA,GAAA,GAAA,CAAA,IACA,EAAA,CADA,MAAA,CACA,GAAA,CAAA,CAAA,CAAA,CAGA,CACA,CACA,CAoBA,CA1BA,EAAA,IAIA,EAsBA,EAAA,CAAA,EAAA,AACA,OAAA,EAAA,KAAA,CAAA,GAAA,CAAA,CAAA,IAAA,CAAA,GAAA,EADA,AACA,IAAA,EAAA,CAAA,GAAA,OAAA,CAAA0N,EAAAA,yBAAA,CAAA,CAAA,AACA,CA+BA,SAAA,EACAzC,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAA,CACA,GAAA,CAPA,AAOA0C,EAAAA,CADA,kBACA,CAAA1C,GACA,EADA,CAAA,CACA,CAAA,OAAA,CACA,aAAA,CAAA,EACA,CAAArI,EAAAA,CADA,+BACA,CAAA,CAAA,EACA,CAAAD,EAAAA,KADA,uBACA,CAAA,CAAA,aAAA,AACA,CAAA,CAaA,OAZA,IACAwI,EAAAA,GADA,EAAA,cACA,CAAA,KACA,CAAA,CAAA,EADA,CAAA,EAAA,KACA,CAAA,CAAAwC,EAAAA,mBAAA,CAAA,EAAA,IAAA,CAAA,CACA,CADA,AACA,CAAA,gBAAA,CAAA,CAAA,EAAA,IAAA,EAEA,CAFA,CAEA,MAAA,CAAA,CAAA,CACA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAEA,EAAA,IAAA,EAAA,CAAA,AACA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,GAGA,AAHA,CAIA,SADA,gFAjT5B,SACL,AADc,CACH,CACX,CAAgB,CAChB,CAAmB,CACnB,CAAK,CACL,CAAmB,EAEnB,GAAI,CAAC,EAAY,KAPmB,IAOpB,AAAU,CACxB,CAD0B,MACnB,AAGT,GAAM,MAHY,EAGV,CAAM,KAAE,CAAA,CAAI,CAAI,EAAY,SAAD,AAAU,CAEvC,EAAyB9J,EAAAA,eAAe,GAAxC,CAA8C,EAAiB,GAErE,AAFwE,CAAC,EAErE,EAAY,MAFoD,GAErD,GAAa,CAAE,CAC5B,IAAM,EAAS,EAAY,EAArB,OAAoB,AAAU,CAAC,MAAM,CAC3C,GAAI,CAAC,EAAQ,IAAF,GAEX,IAAM,EAAO,CAAK,CAAZ,AAAa,EAAO,CAEtB,GAFqB,CAEjB,AAEF,EAFI,EAGN,AA6M2B,OA7MpB,EA6MoB,CAAA,CAAA,CAAA,EAAA,AACA,EADA,CACA,CA/MH,CA+MG,CA/MD,OA+MC,CAAA,CACAqJ,EAAAA,aAAA,CAAA,EAAA,EAAA,QAAA,CAAA,MAAA,CAAA,CAEA,IAAA,EAAA,EAAA,QAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAEA,GAAA,EAAA,CACA,IAAA,EAAA,IADA,IACA,CAAA,GACA,EADA,AACA,CAAA,EAAA,AACA,EAAA,EAAA,CAFA,CAAA,KACA,GACA,CAAA,8BAAA,CAAA,EAEA,CACA,CAAA,KAAA,CAAA,CAAA,KAAA,AAHA,CAAA,CAGA,AACA,EADA,AACA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAA9J,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CAEA,EAAA,EAAA,CAAA,EAAA,AACA,EA7NnB,EAAM,EAAF,CACZ,EAAsB,EAAM,EAAF,AAAe,EADhB,CAAC,CAK5B,KAJyC,EAIlC,CAAK,CAAC,EAJU,AAIH,EAGtB,EAPgE,AAI3C,CAJ4C,GAQnE,CADS,AAMT,GAAM,MANY,MAMV,EAAa,QAAb,WAAgC,sBAAE,GAAuB,CAAA,CAAM,CACtC,QAAA,EAA/B,IADwC,GACjC,EAAmC,EAAsB,CAAE,UAAU,CAAE,CAAA,CAAqB,CAA5F,AAEH,EAFsC,AAE1B,CAAC,CAACF,EAAAA,GAAd,OAF0E,GAE/C,EAAE,CAE7B,EACJ,EADI,CACsB,EACtBuD,EAAAA,iBAAiB,CAAC,AAkNS,SAAA,AACAwE,CAAA,CACA,CAAA,CACA,CAAA,EAMA,GAAAA,AA3NU,EA2NV,GAAA,IATA,GASA,CAAA,OAAA,CAAA,CAAA,CACA,IAAA,EAAA0C,EAAAA,QAAA,WAAA,CAAA1C,GACA,EADA,CAAA,GACA,CACA,IAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CACA,QADA,EACA,CAAA,EAAAA,KAAA,EAAA,EAAA,EAAA,EACA,CAAA,AACA,CAFA,AAIA,CAJA,GAIA,CAJA,CAAA,AAIAC,CAJA,CAIAA,KAAA,iBAAA,CAAAD,GACA,EADA,AACA,CADA,CACA2C,EAAAA,KAAA,CAAA,4BAAA,CAAA,GAAA3C,EACA,GADA,CAAA,CAAA,CACA,CACA,IAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CACA,QADA,EACA,CAAA,EAAAA,EAAA,EAAA,CAAA,CAAA,EACA,CAAA,AACA,CAFA,CAAA,AAvOW,EAAK,CAAF,CAAU,CAuOxB,CAAA,EAvOsB,AACjD,CAsO2B,GAtOvBrF,EADyD,AACzDA,CAD0D,qBACpC,CAKhC,CALkC,EAElC,EAAY,SAAD,AAAU,CAAC,MAAA,CAAS,EAAK,EAAD,SAAY,EAAE,CAAC,MAAM,CACxD,CAAK,CAAC,EAAK,EAAD,SAAY,EAAE,CAAC,MAAM,CAAA,CAAI,EAE/B,EAFmC,AAEf,EAAY,SAAD,AAAU,CAAC,GAAG,CAAC,CAA3B,AAA6B,CAClD,IAAM,EAA4B,EAAY,GAAjC,CAAqC,CAAC,CAAC,CAAC,CAI/C,CAJuC,CAID,CAAE,GAAI,CAArC,CAAiD,IAAI,CAAC,CAAC,CAAA,EAAP,AAAY,CAAA,CAAE,CAAG,CAExE,EAAU,EACd,EACA,CAFI,CAMJ/B,EAAAA,CALO,EACA,EACb,UAGqB,EAAC,EAAK,EAAY,GANa,CAMb,GAAO,EACxC,GAEE,IAEF,AALiD,EAKrC,CAFH,EAAE,CAEK,CAAC,CAAC,CAAA,CAAI,CAAX,CACX,CALoB,CAKZ,GADqB,EACtB,EAAC,CAAU,EAEtB,CAEA,IAJ6B,AAIvB,EAASN,EAAAA,EAAT,OAAkB,EAAE,CAE1B,GAAI,EAAQ,CACV,GADQ,CACF,EAAY,CAChB,KAAK,CAAE,EAAY,GAjBzB,CAiB6B,CACvB,IADkB,IACV,CAAE,EAAY,QAAQ,CAAT,AACrB,cAAc,CAAE,EAAY,SAAD,KAAe,CAC1C,YAAY,CAAE,EAAY,SAAD,GAC/B,AAD4C,CACxC,CAEA,EAAO,IAAI,AAAL,CAAM,2BAA2B,CAAE,EAAM,EACjD,AAD+C,CAG/C,MAH0D,CAGnD,AAHoD,CAI7D,GADa,qKCtIP,EAAqB,CAAE,SAAS,CAAE,CAAE,IAApC,GAA2C,EAAE,EAAO,GAAF,CAAM,CAAE,0BAAA,CAAA,CAA8B,kBAoBvF,SAAS,AAAe,EAAuC,CAAA,CAAE,EAAE,AAGxE,CAHoC,MAG7B,CAHqB,cAGF,CAAI,EAA6D,AACzF,GAAM,MAAE,CAAI,CAAE,MAAI,MAAE,CAAI,CAAE,UAAQ,aAAE,CAAA,CAAY,CAAI,EAE9C,EAASA,AAFyC,EAEzCA,EAAT,OAAkB,EAAE,CACpB,EAAgB,GAAQ,GAAF,KAAtB,EAAkC,EAAE,CAEpC,EAAuC,CAC3C,QADe,MACD,CAAE,EAChB,EADoB,YACN,CAAE,CACtB,CAAK,CASD,CAVsB,EAGtB7C,EAAAA,wBAAwB,CACtB,EACA,SADW,gCAC8B,CACzC,CAAA,EACG,CADH,EACkB,UAAF,IAAE,EAAkB,CAAC,CAAC,QAGT,IAA3B,EAAQ,GAAmB,EAApB,SAAC,CAA+B,EAAQ,IAJjD,CAIgD,SAAC,CAAiB,GAAe,UAAF,IAAE,CAAc,EAAE,MAChF,IAAb,IACF,CADwB,CACZ,CADc,CAAxB,GACU,CAAQyD,EAAAA,CAAT,QAAkB,CAAC,EAAQ,CAAC,CAGrC,KAAgB,MAAhB,CAAoD,EAApC,QAA8C,EAAE,AAAnC,OAAO,GACtC,GAAI,CACF,IAFoC,AAE9B,EAAS,IAAT,EAAe,IAErB,EAAY,KAFoB,AAEpB,CAAQA,CAFc,CAEdA,CAAT,QAAkB,CAAC,EAChC,CAAE,GADoC,CAAC,CAC/B,CAER,CAIJ,OAAOmD,EAAAA,kBAAkB,CAAA,AAAC,IACxB,CADwB,CAClB,GAD2B,AAC5B,OAAW,CAAC,MAAM,CAAE,GAClB8F,EAAAA,MAD6B,CAAC,QACf,CACpB,CACE,IAAI,CAAE,CAAC,KAAK,EAAE,EAAK,CAAA,CAAD,AACC,EAAA,CAAA,YAAA,CACA,UAAA,CAAA,CACA,CAAApK,EAAAA,gCAAA,CAAA,CAAA,OAAA,CACA,CAAAJ,EAAAA,gCAAA,CAAA,CAAA,eAAA,AACA,CAAA,CACA,gBAAA,CAAA,CAAA,CAAA,EAAA,KAAA,WAAA,AACA,CAAA,CACA,MAAA,IAAA,AACA,GAAA,CADA,AAEA,IAAA,EAAA,MAAA,EAAA,EAGA,AAHA,EAAA,IAlEH,QAAA,EAAtB,OAAO,GACP,AAAe,IAAA,GADR,GACP,AACA,IAAA,IAAQ,EACR,CAgEyB,AAhExB,EAAW,EAAA,EACZ,CAFQ,GACG,AAgEc,CAAA,MA/Dd,EAEXiK,EAAAA,QADA,QACgB,CAAC,EAAW,KAAK,CAAE,EAAR,CA8DF,EAAA,EAAA,CAAA,EAAA,CACA,CACA,CAAA,KAhE4B,CAAC,AAgE7B,CAAA,CADA,AACA,CAGA,MAFAA,EAAAA,gBAAA,CAAA,CAAA,CAAA,GACA,EAAA,EAAA,CAAA,EAAA,CACA,CAAA,AACA,CACA,CAAA,GAGA,CAPA,AAOA,AACA,CARA,2JC5EtB,SAAsB,AAAb,CAAkB,CAAS,CAAS,CAAiB,CAAS,EAAkC,AAC9G,GAAI,CAEF,CAHwB,EAGpB,CADWtJ,AACV,EADUA,IACJ,EAAE,GADW,EAAE,CAExB,OAGF,IAAM,EAAaL,EAAAA,MAAb,OAA0B,EAAE,CAC9B,GAAY,OAAF,IAAa,EAAE,EAAE,AAC7B,EAAW,QAAD,CAAU,CAAC,CACnB,IAAI,CAAEE,EAAAA,iBAAiB,CACvB,OAAO,CAAE,gBAAgB,AACjC,CAAO,CAAC,CAGJyJ,EAAAA,gBAAgB,CAAC,EAAO,CACtB,EADoB,OACX,CAAE,CACT,IAAI,CAAE,oBAAoB,CAC1B,OAAO,EAAE,EACT,GADc,CACV,CAAE,CACJ,UAAU,CAAE,GAAa,MAAb,aAAgC,CAC5C,GAAG,CAAS,AACtB,CAAS,AACT,CAAO,AACP,CAAK,CAAC,AACJ,CAAE,KAAM,CAER,CACF,4IC9BA,SAAS,EAAkB,CAAc,CAAqB,CAAU,EACtEL,AADuG,EACvGA,IAAI,CAAC,EAAgB,CADG,CACO,AAAE,GACxB,KADsB,EAAZ,EACyB,CAAI,CAAU,GAAG,CADV,AACc,EAAa,UAC1E,IAAM,EAAU,CAAI,CAAC,EAAK,CAApB,CAAmB,IAAC,CAAS,CAAC,CAAC,CAErC,GAAuB,AAAnB,UAA6B,EAAE,OAAxB,EACT,KADS,EACD,EAAmD,IAAI,CAAC,IAAI,CAAE,EAA9D,EAAkE,CAAK,CAAH,EAG9E,CAHqF,CAAC,EAGhF,GAckB,EAdoB,EAcS,EAdc,EAcuB,EAdX,CAAzE,CAeH,EAD4D,AAdxC,AAA4D,CAc5C,AAd6C,CAAP,GAcwB,EAAU,AACnF,GAAG,CAAW,EAAsB,AAClE,GAAI,CACF,GAjB2C,IAiBpC,EAA4B,IAAI,CAAC,IAAI,CAAE,EAAiB,EAAY,EAAa,EAC1F,CAAA,AAAE,GADyE,GAAZ,AAAyB,AAC/E,AAD2B,EAAiE,AACrF,CAEd,AAHoG,EACxF,KACZlN,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAE,GACnD,EADwD,AACxC,CADyC,IACpC,CAAC,IAAI,CAAE,EAAb,AACxB,CACF,CAAC,EArBG,KAmB8C,CAAC,CAnBvC,EAAmD,IAAI,CAAC,IAAI,CAAE,EAA9D,EAAkE,CAAK,CAAH,CAAQ,EAAD,GAAM,CAAC,CAAC,CAAE,CAAA,CAAE,CAAC,CAAE,EACpG,CAAC,CAEL,CA+BA,SAlCsH,AAkC7G,CAlC8G,CAoCrH,CAAe,CACf,CAAU,CACV,CAAW,CACX,CAAW,EAEX,GAAI,CACF,IAAM,EAAS,EAAgB,EAAzB,EAR0B,CAQI,CAAC,IAAI,CAAE,EAAb,CAE9B,GAAI,GAA4B,EAFsB,CAAC,AAEnD,KAA4B,EAAlB,OAAO,GAAsE,UAAU,EAAzD,AAA2D,OAAnD,EAA8B,IAA9B,AAA8B,CAChF,OAAO,OAAO,CAAC,OAAO,CAAC,GAAQ,GAAF,CAAC,CAAM,CAAA,AAAC,IAEnC,CAFmC,IAAS,CAC5C,EAAoB,EAAO,EAAY,CAAd,EACnB,CACR,CAAC,CAAC,CAGJ,CALyC,AAC1B,GADuC,CAAC,CAAhC,CAKhB,CACT,CAAA,AAAE,IADa,EACN,EAAO,CAEd,EAFY,IACZ,EAAoB,EAAgB,EAAY,CAA5B,EACd,CACR,CACF,CASA,EAZkD,AACnC,GADgD,CAAC,CAAzC,EAYd,EAAoB,CAAK,CAAS,CAAU,CAA2B,CAAW,EAAgB,AACzG,GAAI,CACF,IAAM,EAAqC,AAFnB,CAEmB,CAAE,AAEzC,CAAe,IAFJ,EAEU,EAAE,CAAvB,GACF,EAAU,OAAD,EAAC,CAAY,EAGL,SAHgB,gBAGhB,GAAf,EAAM,GAAD,CAAC,EACN,EAAM,GAAD,IAAQ,CAAC,QAAQ,CAAC,YAAY,CAAA,EACnC,EAAM,GAAD,IAAQ,CAAC,QAAQ,CAAC,UAAU,EAEjCqO,CADA,CACAA,YAAY,CAAC,EAAO,GAAF,SAAc,CAAE,GAEnB,MAF4B,CAAC,aAE7B,GAAf,EAAM,GAAD,CAAC,EACN,EAAM,GAAD,IAAQ,CAAC,QAAQ,CAAC,WAAW,CAAA,EAClC,EAAM,GAAD,IAAQ,CAAC,QAAQ,CAAC,SAAS,EAEhCA,CADA,CACAA,YAAY,CAAC,EAAO,GAAF,MAAW,CAAE,GAE/BA,EAAAA,IAFwC,CAAC,OAE7B,CAAC,EAAO,GAAF,aAAkB,CAAE,IAEhB,KAFyB,CAAC,IAEhB,EAAE,CAA3B,GACT,EAAU,KADD,EACA,KAAC,CAAe,EACzBA,EAAAA,OADoC,KACxB,CAAC,EAAO,GAAF,iBAAsB,CAAE,IAClB,KAD2B,CAAC,EACpB,EAAE,CAAzB,IACT,EAAU,IADD,GACA,IAAC,CAAc,EACxBA,EAAAA,OADmC,KACvB,CAAC,EAAO,GAAF,eAAoB,CAAE,GAE5C,CAAA,AAAE,KAFmD,CAAC,AAE7C,EAAa,CAEtB,CACF,CAMO,MATe,GASN,EAAiB,CAAc,EAA2B,AACxE,EAAkB,EAAgB,MAAM,CAAC,AAC3C,AAFgC,CAQzB,IAP2B,CAAf,IAOH,EAAqB,CAAc,EAA2B,AAC5E,EAAkB,EAAgB,UAAU,CAC9C,AAFoC,AACW,CAOxC,AAP2B,CAAf,QAOH,EAAmB,CAAc,EAA2B,AAC1E,EAAkB,EAAgB,QAAQ,CADV,AACW,AAC7C,GADkC,CAAf,kBAOZ,SAAS,AAAmB,CAAc,EAA2B,AAC1E,EAAiB,GACjB,EAAqB,GACrB,EAAmB,EACrB,CAJkC,CACD,AAAf,CAAgB,IACG,CAAC,GAAhB,CACa,CAAC,CAAhB,mKCzBoB,yCAGH,0CAsBI,6DAzCM,sDANJ,mDAGC,qDAMC,kDA7GJ,+DA0IiB,oEAYb,qEANa,gEA7FjB,4DAuBc,4EAGE,mEAvCX,8CAuDV,kDA1FI,8CA6CE,4CAyGJ,oCA5HG,wCAuGN,0CApGO,kDAGE,gDA7BJ,2CAuCD,0DAgBgB,qEAHL,qDAjDX,qDA8GW,yDAHP,2JCjGpC,SAAS,AAAsB,CAAO,EAA2C,AACtF,MACqB,QAAA,EAAnB,EAFiC,KAE1B,GACK,IADL,AACK,GAAZ,GACA,IADA,KACA,GAAa,GACZ,AAA4C,IADhC,CACgC,EAA5C,GAAgC,OAAA,EACjC,QAAA,GAAY,GACZ,CAAA,CAAE,EADU,EACV,GAAQ,CAAA,CAAO,AAErB,qBAzBO,SAA0B,AAAjB,CAAwB,EAAsC,AAC5E,MACqB,OAFS,CAET,EAAnB,OAAO,GACK,IADL,AACK,GAAZ,GACA,IADA,KACA,GAAa,GACZ,AAAuC,IAD3B,CAC2B,EAAvC,GAA2B,OAAA,EAC5B,QAAA,GAAY,GACZ,IADY,GACJ,CAEZ,sBAuBO,SAAS,AAAkB,CAAO,EAAuC,AAC9E,MACqB,QAFU,AAEV,EAAnB,OAAO,GACK,IADL,AACK,GAAZ,GACA,IADA,KACA,GAAa,GACgC,IADhC,CACgC,GAA5C,EAAgC,KAAhC,EAAgC,EACjC,IAAA,GAAQ,IACP,GADO,IACZ,CAAK,GAAY,GAAW,OAAA,GAAW,CAAA,CAAO,AAE9C,uBA2BO,SAAS,AAAmB,CAAI,EAA4C,AACjF,OAAO,AAAQ,IAAA,IADiB,CACO,QAAQ,EAAxB,OAAO,CAChC,GADgC,2BArBzB,SAAS,AAA0B,CAAQ,EAAoB,MACpE,AACsB,QAAA,EAApB,MAFqC,CAE9B,GACM,IAAA,CADN,EACP,GACA,KADA,KACA,GAAc,GACd,KADc,CACd,GAAU,GACV,KADU,GACV,GAAY,GACZ,KADY,OACC,IAIfvO,EAAAA,IAHE,OAGFA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,EAC1E,EACT,GADc,8ICuBqE,SACA,AADA,CACA,CACA,CAAA,EAEA,IAAAsO,EAAA,CAAA,CAAA,CACA,GAAA,CAAAE,EAAAA,CADA,QAJA,SAKA,CAAA,GACA,GADA,CAAA,EAAA,CACAF,EAOA,GAJA,GAAA,IAHA,IAGA,EAAA,OAAA,EAAA,IAAA,OAAA,GACAA,CAAA,CAAAI,EAAAA,uCAAA,CAAA,CAAA,EAAA,IAAA,OAAA,EAGA,KAAA,CAAA,OAAA,CAAA,EAAA,IAAA,IAAA,CAAA,EAAA,CACAJ,CAAA,CAAAK,EAAAA,yCAAA,CAAA,CAAA,EAAA,IAAA,IAAA,CAAA,MAAA,CAEA,GAAA,CACA,IAAA,EAAA,EAAA,CADA,GACA,IAAA,CACA,IAAA,GAAA,CAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,EAAA,CAAA,KAOA,GAAA,CANA,GAAA,CAAAH,EAAAA,kBAAA,CAAA,GACA,IADA,CAAA,EAAA,EAIA,IAAA,EAAA,CAAA,GAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA,kBAAA,EAAA,CAAA,CAAA,CAAA,CAWA,KAFA,MAAA,CANA,QAAA,EAAA,OADA,AACA,EAMA,EAAA,CAPA,AACA,GAMA,CAAA,CAPA,EAGAF,CAAA,CAAA,AADA,CAAA,GAAA,EAAA,EACA,IADA,CAAA,CAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAAA,CAMAE,EAAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CACA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,CACA,QAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EAEAF,CAAA,CAAA,AADA,CAAA,GAAA,EAAA,EACA,IADA,CAAA,CAAA,EAAA,EAAA,IAAA,YAAA,CAAA,CAAA,CAAA,EAAA,EAAA,IAAA,IAAA,CAAA,CACA,CAAA,EAAA,IAAA,CAAA,AAEA,CACA,CACA,CAGA,OAAAA,CACA,WADA,qBApEA,SAAA,AACA,CAAA,CACA,CAAA,EAEA,GAAA,CAAAE,EAAAA,gBAJA,EAIA,CAAA,GACA,GADA,CAAA,EACA,AADA,CACA,CAAA,CAGA,IAAAF,EAAA,KAAA,CAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,CAAA,CA/DnF,AA+DmF,SA/D1E,AACP,CAAO,CACP,CAAc,EAEd,IAAMA,EAA8C,CAClD,CAACC,EAAAA,KA0D8E,CA3DjE,QAJoB,yBAKM,CAAA,CAAG,EAAQ,KAAD,CAAO,AAC7D,CAAG,CAED,IAAK,GAAM,CAAC,CAAC,CAAE,EAAI,EAAA,CAAK,EAAQ,KAAD,EAAQ,EAAE,CAAE,CACzC,GAAI,CAACC,EAAAA,kBAAkB,CAAC,GACtB,CAD0B,CAAC,EAAE,KAI/B,IAAM,EAAS,AAAmB,CAAA,GAA5B,EAAiB,CAAD,KAAC,CAAe,iBAAA,CAAoB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA,CAMA,GAJA,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,GACAF,CAAA,CAAA,CAAA,EAAA,EAAA,IAAA,SAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAGA,EAAA,CACA,IAAA,EAAA,CAAA,EAAA,CAAA,CADA,AACA,GAAA,AACA,KADA,GACA,EAAA,OAAA,IACAA,CADA,AACA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAEA,CAAA,CAEA,EAAA,KAAA,MAAA,CAAA,EAAA,EAAA,MAAA,CAAA,CACA,EAAA,KAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CACA,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAEA,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,GACAA,CAAA,CAAA,CAAA,EAAA,EAAA,IAAA,IAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAGA,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,GACAA,CAAA,CAAA,CAAA,EAAA,EAAA,IAAA,MAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,MAAA,EAGA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CACAE,EAAAA,kBAAA,CAAA,KACA,EAAA,CADA,CAAA,EAAA,CACA,SAAA,CAAA,EAAA,GAAA,CAAA,CACA,CADA,CACA,KAAA,eAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAEA,CACA,CAEA,OAAAF,CACA,EAgBA,EAAA,IAAA,GAjBA,AAiBA,CAAA,GAAA,CAAA,CAAA,CAMA,MAJA,CAFA,CAAA,OAEA,EAAA,OAAA,EAAA,IAAA,GAAA,GACAA,CAAA,CAAAG,EAAAA,kCAAA,CAAA,CAAA,EAAA,IAAA,GAAA,EAGAH,CACA,WADA,sECzEnF,IAAM,EAAuB,IAAI,GAAG,CAM9B,CANqD,CAM9B,IAAI,IAN3B,GAMkC,CAMxC,CANqE,KAA/D,GAMG,EAAe,CAAS,EAAyC,AACxE,IAAM,EAAY,EAAU,CADP,IACf,EAAqB,EAAU,QACjC,AAAJ,EACS,EAAqB,GAAG,CAAC,CADrB,EAGN,AAHQ,EAGa,GAAG,CAFY,AAEX,CAFY,CAG9C,CAMA,EAT+B,IAEY,CAAC,EAOnC,EAPoB,AAOL,CAAS,CAAgB,CAAI,EAAqB,AACxE,IAAM,EAAY,CADG,CACO,KAAtB,EAAqB,EAAU,CACjC,EACF,EAAqB,GAAG,CAAC,CADd,CACyB,CADvB,EAGb,CAFwC,CAEnB,AAFoB,EAAP,CAEV,CAAC,EAAW,CAFhB,CAIxB,EAF4C,CAAC,EAAP,KAAd,wBAwDjB,SAAwC,AAA/B,CAAwC,EAAsB,AAC5E,IAAM,EAAY,EAAU,KAAtB,EAAqB,EAAU,CACjC,GACF,EAAqB,IAHqB,AAE/B,EAAE,AACc,CAAC,EAIhC,OAJyC,CAAC,CAAlB,qBA7BjB,SAAS,AAA0B,CAAS,EAAuC,AACxF,OAAO,EAAe,IAAY,KAAH,CAAC,EAAX,CADkB,CACK,AAC9C,mCAOO,SAAS,AAA+B,CAAS,EAAoC,AAC1F,OAAO,EAAe,IAAY,KAAH,CAAC,EAAX,MADuB,CAE9C,AADmD,+BAQ5C,SAAS,AAA2B,CAAS,EAAyC,AAC3F,OAAO,EAAe,EACxB,OADiC,CAAC,EAAX,EADmB,qBAvCnC,SAAsC,AAA7B,CAAsC,CAAgB,CAAW,EAAqB,AAGpG,EAAe,EAAW,EAC5B,KAD0B,GAAV,CAAuB,CAAC,OAHI,iBAWrC,SAAS,AAA8B,CAAS,CAAgB,CAAkB,EACvF,AADqH,IAC/G,EAAe,EAAe,IAAc,CAAA,CAAE,CACpD,EAAe,AAD8B,CAAA,CACnB,CAAE,AADO,GACJ,CAAY,AAFA,CAEE,CAArB,EAAwB,CAAA,AAAlC,CAAsD,CAAC,AACvE,+HCrCA,SAAS,EAAiB,CAAG,EAAsB,AACjD,IAAM,EAAuB,CAAA,CAAE,CAc/B,EAfuB,EACR,GAEXE,EAAAA,kBAAkB,CAAC,GAAG,CAAC,CACD,CADG,OACK,EAA5B,AAA8B,OAAvB,EAAI,CAAD,GAAC,GACb,EAAU,IAAA,CAAO,EAAR,AAAY,CAAD,GAAC,AAAI,EAEF,QAAQ,EAA7B,AAA+B,OAAxB,EAAI,CAAD,IAAC,GACb,EAAU,KAAA,CAAQ,CAAT,CAAa,CAAD,IAAC,AAAK,EAEF,AAAvB,QAA+B,EAAE,OAA1B,EAAI,CAAD,MAAC,GACb,EAAU,OAAA,AAAD,CAAW,EAAI,CAAD,MAAC,AAAO,GAI5B,CACT,CA2CO,OA5CW,EA4CF,EAAoB,CAAS,EAAwC,AACnF,IAAM,EAAaI,EAAAA,MADc,AAC3B,mBAAsC,CAAC,GACvC,EAAqC,CAAA,CAAE,CAY7C,CAbsD,CAAC,GACvC,EAEZ,GAAY,IAAI,EAAE,AACpB,CADY,CACF,CAAC,iBAAiB,CAAA,CAAI,EAAW,IAAA,AAAI,EAE7C,EAFwC,CAE5B,KAAK,EAAP,AAAS,CACrB,CAAU,CAAC,kBAAkB,CAAA,CAAI,EAAW,KAAA,AAAK,EAE/C,CAFyC,EAE7B,OAAF,AAAS,EAAE,CACvB,CAAU,CAAC,oBAAoB,CAAA,CAAI,EAAW,OAAA,AAAO,CAAR,CAGxC,CACT,CA4BO,QA7BY,CA6BH,EAAoB,CAAS,EAAwC,AACnF,IAAM,EAAaC,EAAAA,MADc,oBACY,CAAC,IAAY,KAAH,CAAC,IAAY,CAC9DP,EAAqC,CAAA,CAAE,CAY7C,OAZgB,AAEZ,GAAY,IAAI,EAAE,CAAR,AACZA,CAAU,CAACQ,EAAAA,yBAAyB,CAAA,CAAI,EAAW,IAAI,AAAJ,EAEjD,EAFgD,CAEpC,KAAK,EAAP,AAAS,CACrBR,CAAU,CAACS,EAAAA,0BAA0B,CAAA,CAAI,EAAW,KAAA,AAAK,EAEvD,CAFiD,EAErC,OAAF,AAAS,EAAE,CACvBT,CAAU,CAACU,EAAAA,4BAA4B,CAAA,CAAI,EAAW,OAAA,AAAO,CAAR,CAGhDV,CACT,CA4BO,SAAS,CA7BG,CA6Be,CAAK,EAIrC,MAAO,CACL,KAL6B,EAKtB,CACL,GAAO,EAAF,SAAa,EAAE,aAAA,EACpB,GAAO,EAAF,WAAE,EACP,GAAO,EAAF,KAAS,EAAE,EAAA,EAChB,GAAO,EAAF,KAAS,EAAE,UAAU,EAAE,aAAa,CAC3C,IAAI,CAAE,GAAO,EAAF,SAAa,EAAE,YAAc,GAAO,EAAF,QAAE,EAAc,GAAO,EAAF,KAAS,EAAE,UAAU,EAAE,UAAU,AACvG,CAAG,AACH,CAOO,SAAS,EAAkB,CAAS,EAAoE,AAC7G,GAAI,CAAC,GAAW,KADe,CACjB,KAAa,CACzB,CAD2B,KACpB,CAAE,YAAY,CAAE,SAAS,CAAE,gBAAgB,CAAE,SAAA,CAAW,CAEjE,IAAM,EAAuD,QAAA,EAAvC,CAAhB,MAAuB,EAAU,OAAD,IAAY,EAAE,IAAA,CAAoB,EAAU,OAAD,IAAY,CAAC,IAAA,CAAO,SAAS,CAC1G,EAAmB,SAAS,CAE1B,EAAqB,EAFvB,AAEqC,WAAD,AAAY,EAAE,CAOtD,AAPM,OACF,EAAmB,QAAQ,CAAC,OAAV,AAAiB,CAAC,CACtC,CADwC,CACrB,MAAM,EAChB,EAAmB,IAD5B,IACoC,CAAC,MAAM,CAAhB,AAAgB,EAAK,EAAmB,QAAQ,CAAC,MAAK,CAAf,AAAgB,EAAE,CACpF,EAAmB,KAAA,CAAK,CAGnB,CACL,MAJA,MAIY,CAAE,EACd,WAD2B,KACX,EACpB,CACA,AADG,iCApGI,SAAuC,AAA9B,CAAwC,EACtD,AAD4F,IACtF,EAAqC,CAAA,CAAE,CAY7C,KAZgB,EAEZ,GAAY,IAAI,EAAE,CAHqB,AAG7B,AACZ,CAAU,CAAC,iBAAiB,CAAA,CAAI,EAAW,IAAI,AAAJ,EAEzC,EAFwC,CAE5B,KAAK,EAAP,AAAS,AACrB,EAAU,CAAC,kBAAkB,CAAA,CAAI,EAAW,KAAA,AAAK,EAE/C,CAFyC,EAE7B,OAAF,AAAS,EAAE,CACvB,CAAU,CAAC,oBAAoB,CAAA,CAAI,EAAW,OAAO,AAAP,CAAD,CAGxC,CACT,SADmB,yBA8BZ,SAAuC,AAA9B,CAAwC,EAAsC,AAC5F,IAAMA,EAAqC,CAAA,CAAE,CAY7C,OAZgB,AAEZ,GAAY,IAAI,EAAE,CAHqB,AAG7B,AACZA,CAAU,CAACQ,EAAAA,yBAAyB,CAAA,CAAI,EAAW,IAAA,AAAI,EAErD,EAFgD,CAEpC,KAAK,EAAP,AAAS,CACrBR,CAAU,CAACS,EAAAA,0BAA0B,CAAA,CAAI,EAAW,KAAA,AAAK,EAEvD,CAFiD,EAErC,OAAF,AAAS,EAAE,CACvBT,CAAU,CAACU,EAAAA,4BAA4B,CAAA,CAAI,EAAW,OAAA,AAAO,CAAR,CAGhDV,CACT,WADmB,kBAsDZ,SAAS,AACd,CAAS,CACT,CAAK,EAEL,IAAM,EAAY,GAAa,IAAzB,EAAY,IAJoB,CAIP,GAAe,EAAY,EAAU,KAAtB,EAAqB,EAAC,MAAY,EAC1E,EAAa,EAAQ,EAAkB,CAD4C,AACtE,EAAmC,CAAhD,AAAgD,CAAJ,AAAM,CAAN,AAC5C,SADsC,KACpC,CAAY,kBAAE,CAAA,CAAA,CAAqB,EAAkB,GACvD,EAAmB,EAAoB,EADyB,CAEhE,AAFiE,EAE9C,EAAoB,CAFe,CACN,CAAC,AAEjD,EAFA,AAEkBW,EAAAA,EAD8B,CAAC,AADX,EACtC,KAAsC,CACtC,mBAAgD,CAAC,GAcvD,MAdgE,AAE7C,CAF8C,AAG/D,AAWKX,GAXD,GAAa,CAAE,CAACY,EAAAA,EAAhB,AAWW,sBAX6B,CAAA,CAAG,CAAA,CAAW,CAAC,AAC3D,GAAI,EAAW,CADgC,MAChC,CAAD,CAAY,CAAE,CAACC,EAAAA,wBAAwB,CAAA,CAAG,EAAW,OAAA,CAAS,AAAV,CAAW,AAC7E,GAAI,EAAW,IAAA,EAAQ,CAAE,CAAX,AAAYC,EAAAA,qBAAqB,CAAA,CAAG,EAAW,IAAA,CAAM,CAAC,AACpE,CAACC,CAD2D,CAC3DA,uBAAuB,CAAA,CAAG,EAC3B,CAACC,EAAAA,OADsC,oBACX,CAAA,CAAG,EAC/B,CAACC,EAAAA,WAD8C,uBACZ,CAAA,CAAG,KAAK,CAC3C,GAAI,GAAmB,CAAE,CAACC,EAAAA,QAAtB,sBAAoD,CAAA,CAAG,CAAA,CAAiB,CAAC,AAC7E,GAAG,CAAgB,CACnB,GAAG,CACP,AADuB,CAIvB,AAHG,EAH4D,gEA1LxD,SAAS,AAAwC,CAAO,EAA+B,AAC5F,IAAM,EAA2B,CAAA,CAAE,CASnC,MATiB,CACbhB,EAAAA,kBAFiD,AAE/B,CAAC,EAAQ,KAAD,CAAO,CAAC,EAAE,CACQ,QAAQ,EAAE,AAApD,OAAO,EAAQ,KAAD,CAAO,CAAC,eAAA,GACxB,EAAY,SAAD,MAAC,CAAkB,EAAQ,KAAD,CAAO,CAAC,eAAA,AAAe,EAE1D,EAAQ,KAAD,CAAO,CAAC,UAAU,EAAE,CAC7B,EAAY,SAAD,CAAC,CAAa,EAAiB,EAAQ,KAAD,CAAO,CAAC,KAAhB,MAA0B,CAAC,EAGjE,CACT,UADoB,mCAQb,SAAkD,AAAzC,CAA+C,EAC7D,AAD8F,IACxF,EAAoC,CAAA,CAAE,CAS5C,MATiB,CACbA,EAAAA,kBAAkB,CAFgC,AAE/B,KACiB,CADX,CAAC,EAAE,IACgB,EAAE,AAA5C,OAAO,EAAO,IAAD,WAAC,GAChB,EAAY,SAAD,MAAC,CAAkB,EAAO,IAAD,WAAgB,AAAf,EAEnC,EAAO,IAAD,MAAW,EAAE,CACrB,EAAY,SAAD,CAAC,CAAa,EAAiB,EAAO,IAAD,MAAW,CAAC,CAAnB,EAGtC,CACT,UADoB,yMC1Dd,EAAmB,IAAI,GAAG,CAM1B,CANyE,CAMtD,IANnB,AAMuB,OAAO,CAQpC,CARyF,CAAnF,OAQG,EAAmB,CAAS,EACnC,AADwF,IAClF,EAAY,EAAU,KAAtB,AADmB,EACE,EAAU,CAErC,GAAI,EAAW,CAEb,IAAI,EAFO,AAEG,EAAiB,GAAG,CAAC,GAKnC,MAL4C,CAAd,AAAe,AACxC,IACH,EAAU,CADA,EAAE,CACE,CAAd,EAAiB,CACjB,CADmB,CACF,GAAG,CAAC,EAAW,IAE3B,CACT,CAGA,CANkC,AAAS,CAAC,AAAxB,EAMhB,CAJY,CAIF,EAAiB,GAAG,CAAC,GAKnC,MAL4C,CAAd,AAAe,AACxC,IACH,EAAU,CADA,EAAE,CACE,CAAd,EAAiB,CACjB,CADmB,CACF,GAAG,CAAC,EAAW,IAE3B,CACT,EAHkC,AAAS,CAAvB,AAAwB,GAE5B,6BAmET,SAAS,AAAgC,CAAS,EACvD,AAD6E,IACvE,EAAY,EAAU,KAAtB,EAAqB,EAAU,CAGrC,GAAI,EAAW,CACb,IAL2C,AAKrC,EADK,AACK,EAAiB,GAAG,CAAC,GACrC,GAAI,EAAS,CADiC,AAE5C,CAF8B,AAAe,GACpC,AACJ,GAAM,EAAG,EAAQ,GAAK,EACzB,CADoB,CACX,GADuB,CAAE,AACrB,CAAC,CAAN,QAAe,CAAC,CACtB,IAAI,CAAE5K,EAAAA,iBAAiB,CACvB,OAAO,CAAE,WAAW,AAC9B,CAAS,CAAC,CACF,EAAS,IAAI,CAAC,CAAN,EAAS,EAAE,CAErB,EAAiB,MAAM,CAAC,EAC1B,CACA,IAFkB,EAGpB,AAHqC,CAAC,AAMtC,IAAM,EAAU,EAAiB,GAAG,CAAC,GACrC,GAAI,EAAS,CADiC,AAE5C,CAF8B,AAAe,GACpC,AACJ,GAAM,EAAG,EAAQ,GAAK,EACzB,CADoB,CACX,GADuB,CAAE,AACrB,CAAC,CAAN,QAAe,CAAC,CACtB,IAAI,CAAEA,EAAAA,iBAAiB,CACvB,OAAO,CAAE,WACjB,AAD4B,CACrB,CAAC,CACF,EAAS,IAAI,CAAC,CAAN,EAAS,EAAE,CAErB,EAAQ,KAAK,AAAN,EAET,AAFiB,CAGnB,4BAxEO,SAAS,AACd,CAAS,CACT,CAAS,CACT,CAAM,CACN,CAAO,EAEP,IAAM,EAAU,EAAmB,GAA7B,AACA,EAAW,CAPoB,CAOZ,EADmB,CAChB,AADiB,CAChB,CAAL,EACxB,EAFkC,CAE9B,EAAU,CADwB,AAEpC,CAFqC,EAE/B,EADI,IACF,CAAI,QAAE,CAAA,CAAO,CAAI,EAEzB,GAAe,GAFkB,SAEN,GAAvB,EAAyB,CAC3B,GADE,CACI,EAAc6L,EAAAA,OAAd,iCAAsD,CAAC,GAGvD,EAAkD,CAFsB,AADX,CAAC,EAC3CC,EAAAA,MAEL,uBAFkC,CAAC,EAAY,SAAD,CAAW,CAG3E,AACR,CAAO,CACG,CAFC,CAEW,SAAD,MAFM,AAEU,EAAE,CAC/B,CAAc,CAACF,EAAAA,8BAA8B,CAAA,CAAI,EAAY,SAAD,MAAC,AAAe,EAG9E,EAAK,EAAD,WAAc,CAAC,EACrB,MAAO,GAAe,GADa,CAAC,QACF,GAAvB,EAAyB,CAClC,GADS,CACH,EAAiBG,EAAAA,UAAjB,iBAA4C,CAAC,EAAQ,EAAQ,EAAV,GAAS,QAAc,CAAC,CACjF,EAAK,EAAD,WAAc,CAAC,EACrB,MAAO,GAAe,GADa,CAAC,SACD,GAAxB,EAA0B,CACnC,GADS,CACH,EAAmBC,EAAAA,YAAnB,iBAAgD,CAAC,EAAQ,EAAQ,EAAV,GAAS,QAAc,CAAC,CACrF,EAAK,EAAD,WAAc,CAAC,EACrB,CAEA,EAAK,EAAD,CAAI,EAAE,CACV,EAAQ,GAJ6B,CAAC,CAI/B,CAAO,CAAC,EACjB,CACF,MAF4B,CAAC,iBAjDtB,SAAS,AAAoB,CAAS,CAAgB,CAAS,CAAa,CAAI,CAAQ,CAAM,EAAgB,AACnG,AAChB,EADmC,GAC3B,EAAD,CAAI,CAAC,CAFqB,CACW,AACrB,CADsB,KAE3C,CAFgC,AACb,GACf,KACJ,EAEA,IAFM,KAEG,CAAE,IAAI,CAAC,GAAG,EAAE,AACzB,CAAG,CAAC,AACJ,mGC3DM,EAA+C,CACnD,WADkB,CACN,CAAE,CACZ,WAAW,CAAE,MAAM,CACnB,eAAe,CAAEC,EAAAA,uBAAuB,CACxC,gBAAgB,EAAE,EAClB,EADsB,YACR,CAAE,WAAW,AAC/B,CAAG,CACD,gBAAgB,CAAE,CAChB,WAAW,CAAE,KAAK,CAClB,eAAe,CAAEC,EAAAA,0BAA0B,CAC3C,UAAU,EAAE,CAChB,CAAG,CACD,CAFkB,oBAEG,CAAE,CACrB,WAAW,CAAE,KAAK,CAClB,eAAe,CAAEA,EAAAA,0BAA0B,AAC/C,CAAG,CACD,uBAAuB,CAAE,CACvB,WAAW,CAAE,KAAK,CAClB,eAAe,CAAEA,EAAAA,0BAA0B,AAC/C,CAAG,CACD,aAAa,CAAE,CACb,WAAW,CAAE,MAAM,CACnB,eAAe,CAAEC,EAAAA,yBAAyB,CAC1C,WAAW,EAAE,EACb,EADiB,cACD,EAAE,EAClB,EADsB,YACR,CAAE,WAAW,AAC/B,CACA,AADG,CACF,qBAQM,SAAS,AACd,CAAM,CACN,CAAM,EAKN,IAAM,EAAS,CAAc,CAAC,EAAO,AAA/B,CACN,CAR+B,EAQ3B,AADgC,CAC/B,EACH,IADS,EAAE,AACJ,CAAE,UAAU,CAAE,CAAA,CAAA,CAAI,CAG3B,IAAM,EACJ,EAAO,EADH,EACE,OAAC,EAAuD,UAAxC,OAAO,GAAM,CAAG,EAAH,AAAU,IAAD,OAAY,CAAA,CACnD,CAAM,CAAC,EAAO,IAAD,OAAY,CAAA,MAC1B,EAEN,MAAO,CAFQ,OAGb,EACA,IADM,MACI,CAAE,GAAU,EAAO,CAAjB,GAAgB,WAAC,CAAkB,CAAE,CAAC,EAAO,IAAD,WAAgB,CAAA,CAAG,CAAA,CAAO,CAAI,CAAA,CAC1F,AAD4F,CACzF,AACH,wBAQO,SAAS,AAAoB,CAAM,CAAU,CAAM,EAAmD,AAC3G,IAAM,EAA+B,CAAA,CAA3B,AAA6B,CACjC,EAAS,CAAc,CAAC,CAFG,CAEI,AAA/B,CAEN,GAFoC,AAEhC,CAAC,EACH,IADS,EAAE,CACJ,EAGT,EAHa,CAGT,EAAO,IAAD,YAAC,EAAoB,EAAO,IAAD,UAAC,EAAkB,GAAM,CAAG,EAAH,AAAU,IAAD,UAAe,CAAC,CAAE,CACvF,IAAM,EAAe,CAAM,CAAC,EAAO,IAAD,UAAe,CAAC,CAClD,GAA4B,UAAxB,OAAO,GAA8C,IAAI,EAAE,CAAvB,EACtC,AADS,IACJ,GAAM,CAAC,EAAK,AADqB,CACvB,CAAO,GAAA,AAAK,MAAM,CAAC,OAAO,CAAC,GACxC,CAAI,CAAC,CAAC,EAAAC,EAAAA,EADkC,EAAwC,AAAE,gBAC5E,CAAA,CAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EAGA,CAUA,EAbA,CAAA,IAKA,EAAA,IAAA,MAAA,EAAA,GAAA,GAAA,EAAA,CACA,CAAA,CAAA,CAAA,EAAAA,EAAAA,oBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EAAA,GAAA,CAAA,EAGA,EAAA,IAAA,OAAA,EAAA,GAAA,GAAA,CAAA,EAAA,CACA,CAAA,CAAA,CAAA,EAAAA,EAAAA,oBAAA,CAAA,KAAA,CAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CAGA,CACA,GADA,0HC1EP,SAAS,EACd,CAAM,CACN,CAAM,CACN,CAAY,EAEZ,IAAM1B,EAA8C,CAAA,CAAE,CAEtD,OAPuC,AAKvB,AAER,GACN,GADY,CACP,yBAAyB,CACxB,GAAQ,GAAF,MAAW,EAAE,CACrBA,CAAU,CAAC,0BAA0B,CAAA,CAAI,MAAM,CAAC,EAAO,IAAD,MAAU,CAAC,CAE/D,GAAQ,GAAF,GAAQ,EAAE,CAClBA,CAAU,CAAC,sBAAsB,CAAA,CAAI,MAAM,CAAC,EAAO,IAAD,GAAO,CAAC,CAE5D,KAEF,KAAK,uBAAuB,CAO1B,GANI,GAAQ,GAAF,EAAO,EAAE,CACjBA,CAAU,CAAC2B,EAAAA,2BAA2B,CAAA,CAAI,MAAM,CAAC,EAAO,IAAD,EAAM,CAAC,CAE5D,GAAQ,GAAF,GAAQ,EAAE,CAClB3B,CAAU,CAAC4B,EAAAA,4BAA4B,CAAA,CAAI,MAAM,CAAC,EAAO,IAAD,GAAO,CAAC,CAE9D,GAAQ,GAAF,CAAE,QAAS,EAAW,OAAF,AAC5B5B,CAAU,CAAC6B,EAAAA,+BAA+B,CAAA,CAAI,OAAO,EAAO,IAAD,AAAK,CAC5D,IACF7B,CAAU,CAAC8B,EAAAA,IADG,EAAE,uBACwB,CAAA,CArCzB,EAqC6B,MArC7B,EAAhB,OADkB,AACX,EAqCuD,AAAC,EAAO,AArC/D,AADe,EAAmB,EAsC4B,AAAK,CAAC,CArChD,EAAO,EAAP,EAAW,CAAC,SAAS,CAAC,GAuCpD,CACA,AAxCwD,CAAC,IA0C3D,KAAK,wBAAwB,CACvB,GAAQ,GAAF,UAAe,EAAE,CACzB9B,CAAU,CAAC,oBAAoB,CAAA,CAAI,MAAM,CAAC,EAAO,IAAD,UAAc,CAAC,CAEjC,QAAQ,EAAE,AAAtC,OAAO,GAAQ,GAAF,KAAE,GACjBA,CAAU,CAAC,sBAAsB,CAAA,CAAI,EAAO,IAAD,IAAC,AAAQ,EAEzB,QAAQ,EAAjC,AAAmC,OAA5B,GAAQ,GAAF,EAAE,GACjBA,CAAU,CAAC,oBAAoB,CAAA,CAAI,EAAO,IAAD,CAAM,CACf,QAAQ,EAAE,AAAtC,OAAO,GAAQ,GAAF,KAAE,GACjBA,CAAU,CAAC,yBAAyB,CAAA,CAAK,EAAO,IAAD,IAAC,CAAW,EAAO,IAAD,CAAM,CAAI,GAAA,CAAG,EAG9E,GAAQ,GAAF,IAAS,EAAE,CACnBA,CAAU,CAAC,sBAAsB,CAAA,CAAI,MAAM,CAAC,EAAO,IAAD,IAAQ,CAAC,CAE7D,KAEF,KAAK,iCAAiC,CACpC,GAAI,GAAQ,GAAF,AAAK,CAAE,CACfA,CAAU,CAACwB,EAAAA,0BAA0B,CAAA,CAAI,MAAM,CAAC,EAAO,GAAG,CAAC,AAAL,CACtD,IAAM,EAAYpE,EAAAA,KAAZ,iBAAkC,CAAC,MAAM,CAAC,EAAO,GAAG,CAAC,AAAL,CAAM,CACxD,GAAa,CAACC,EAAAA,GAAd,gBAAiC,CAAC,KACpC2C,CAAU,CAAC,EADkC,CAAC,EAAE,kBACd,CAAA,CAAI,EAAU,OAAD,CAAS,CAAC,OAAO,CAAC,GAAG,CAAE,GAAE,CAAC,AAE7E,CACA,KAEF,KAAK,2BAA2B,CAC9BA,CAAU,CAAC,qBAAqB,CAAA,CAAI,yBAAyB,CAC7DA,CAAU,CAAC,oBAAoB,CAAA,CAAI,CAAC,AAE1C,CAEE,OAAOA,CACT,WADmB,oBAWZ,SACL,AADc,CACV,CACJ,CAAO,CACP,CAAM,CACN,CAAY,EAEZ,GAAI,AAAS,IAAT,KAAkB,KAAE,CAEtB,AARuC,IAQjC,EAAa+B,EAAAA,MAAb,WAA8B,CAAC,EAAQ,KAAD,CAAO,CAAE,GAAU,CAAA,CAAE,CAAC,AAAb,CAErD,MAAO,CACL,GAAI,KAAe,EAAR,IAAC,EAAA,CAAO,CAAa,CAAE,CAACC,EAAAA,wBAAwB,CAAA,CAAG,MAAM,CAAC,EAAQ,EAAE,CAAA,CAAG,CAAN,AAAO,AACnF,GAAG,EAAW,QAAD,EAAW,CACxB,GAAI,EAAeC,EAAAA,QAAf,WAAkC,CAAC,AANzB,EAMiC,KANjC,AAMgC,CAAO,CAAE,GAAU,CAAA,CAAE,CAAZ,CAAgB,CAAA,CAC7E,AAD+E,CAAC,AAC3E,AACH,CAEA,OAAO,EAA0B,EAAQ,KAAD,CAAO,CAAE,GAAU,CAAA,CAAE,CAAZ,AAAc,EACjE,MADkC,IAA2C,CAAC,sHC/GxE,EAAyB,IAAI,GAAG,CAAC,CAACpB,EAAAA,SAAlC,eAA0D,CAAEC,EAAAA,qBAAqB,CAAEU,EAAAA,0BAA0B,CAAC,CAAC,4BAwB9G,SAAS,AACd,CAAQ,CACR,CAAc,SAEd,AAAI,EACK,EAGF,MAHE,AAGI,CAAC,CARwB,EAIpB,EAAE,EAIC,CAAC,GAAU,KAAF,CAAQ,AAAP,CAC7B,CAAC,EAAK,CAAF,AAAG,EAAK,CAAF,CAAQ,GAAD,CAlBZ,CAkBkB,CAlBK,GAAG,CAmBF,AAnBG,GAmBA,AAnBG,CAAC,AAmBH,AAC7B,EAD+B,AAC5B,CAAC,EAAG,CAAA,AAAI,CAAA,CAAA,CAEN,GAET,AAFY,AAtBe,CAwB3B,CAAC,CAEL,qMCbA,SAAS,EAAe,CAAM,CAAU,CAAM,EAAmB,AAC/D,OAAO,AADc,EACL,CAAC,EAAA,CAAV,CAAU,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,CADA,AASA,IATA,KASA,EAAA,CAAA,EAAA,AACA,IAAA,EAAA,AACA,EAEA,IAFA,GAEA,CAJA,EAKA,CADA,GACA,SAAA,CACA,EAAA,AAAAU,EAAAA,mBAAA,CACA,EAAAC,EAAAA,EAAA,uBAAA,CACA,KACA,KAAA,uBAAA,CACA,EAAA,AAAAC,EAAAA,0CAAA,CACA,EAAAC,EAAAA,EAAA,2BAAA,CACA,KACA,KAAA,uBAAA,CACA,EAAA,AAAAC,EAAAA,0CAAA,CACA,EAAAD,EAAAA,EAAA,2BAAA,AAEA,CAEA,MAAA,CACA,CAAAxN,EAAAA,4BAAA,CAAA,CAAA,EAAA,AACA,CAAAC,EAAAA,gCAAA,CAAA,CAAA,EACA,CAAAI,EAAAA,CADA,+BACA,CAAA,CAAAqN,EAAAA,sBAAA,AACA,CAAA,AACA,CAQA,SAAA,EAAA,CAAA,EACA,AADA,IAMA,EALA,CAAA,CADA,IAMA,CALA,CAAA,SAAA,WAAA,CAAA,OAAA,CAAA,UAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EACA,CAAA,GADA,KACA,CAAA,CAAA,EACA,EAAA,EAAA,CADA,CACA,GAAA,CAAA,CAIA,GAAA,IAAA,KAAA,KAAA,CACA,IAAA,EAAAR,EAAAA,MAAA,WAAA,CAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CAAA,AACA,CAAA,AADA,KAGA,CAFA,CAEA,EAGA,IAHA,AAGA,EAAA,CACA,GAAAS,EAAAA,KADA,mBACA,CAAA,EAAA,EAAA,CACA,CAAAC,CADA,CACAA,CADA,wBACA,CAAA,CAAA,EACA,GAAAC,CADA,CACAA,2BAAA,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,GAAA,QAAA,CAAA,CACA,GAAA,EAAA,EAAA,AACA,CAAA,CADA,AAGA,EAAAjN,EAAAA,EAAA,OAAA,EAHA,AAGA,CACA,GAAA,CAAA,GAAA,GAAA,IAAA,GAAA,EAAA,CAAA,cAAA,CAAA,AACAuK,EAAA2C,EAAAA,QAAA,gBAAA,CAAA,EAAA,GAEA,OAAAxD,CAFA,CAEAA,EAFA,CAAA,MAEA,CACA,CACA,IAAA,CAAA,EACA,MADA,UACA,EAAA,EACA,EADA,SACAa,CACA,CAAA,CACA,EAEA,MAFA,CAFA,qBA+DA,SAAA,AACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAOA,GAAA,QAAA,CAAA,CAAA,CAAA,CAXA,CAYA,EAAA,EAAA,EAAA,IAAA,CAEA,CAHA,CAGA+B,EAAAA,CAFA,KAEA,WAAA,CAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,CAAA,CAAA,AAEA,AAFA,EAEA,CACA,GAAAS,EAAAA,KADA,mBACA,CAAA,EAAA,EAAA,CACA,CAAAC,CADA,CACAA,CADA,wBACA,CAAA,CAAA,EACA,GAAAC,CADA,CACAA,2BAAA,CAAA,SAAA,CAAA,EAAA,EAAA,GAAA,CAAA,GAAA,GAAA,KAAA,CAAA,CACA,GAAA,EAAA,SAAA,CAAA,AACA,CAAA,CAEA,EAAAjN,EAAAA,EAAA,CAHA,MAGA,EAAA,CACA,GAAA,CAAA,GAAA,GAAA,IAAA,GAAA,EAAA,CAAA,cAAA,CAAA,AACAuK,EAAA2C,EAAAA,QAAA,gBAAA,CAAA,EAAA,GAEA,MAAA,CACA,CAHA,GAAA,AAGA,CAHA,AAGA,EACA,EAAA,CAAAT,EAAAA,CADA,kBACA,CACA,gBAAA,CAAA,GACA,CADA,UACAlC,CACA,CAAA,AACA,UAFA,oBAhFA,SACA,AADA,CACA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,OAAA,EAAA,CACA,IAAA,AARA,CAQA,KADA,kBACA,CACA,OAAA,CAAA,YACA,EADA,MAEA,CADA,IACA,MACA,QAAA,EACA,CACA,CAAA,CAAA,AACA,IAFA,kCAYA,SAAA,AACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,OAAA,EAAA,CACA,IAAA,CAAA,KADA,IANA,cAOA,CACA,OAAA,CAAA,YACA,EADA,OACA,CACA,OAAA,IACA,CACA,CAAA,CAAA,AACA,KAFA,iPCZZ,SAAS,AAAmB,CAAS,EAAsB,AAC5D,EAAU,OAAO,AAAR,EAAU,AACrBtB,EAAAA,EAF8B,EAE1B,CAAC,EAAW,OAAF,EAAW,CAAG,AAAD,GAClB,SAA8B,CAAK,EADD,AACU,AAEjD,KAHoE,EAEpE,AAsC+C,SAAA,CAAA,EAAA,AACA,GAAA,CACAqB,EAAAA,GAxC1B,SAsC0B,AAEA,CAAA,EAAA,GAAA,QAAA,CAAA,AACA,CAAA,KAAA,CAEA,CACA,EA5CzB,GACf,EADoB,AACJ,CADK,GACD,CAAC,IAAI,CAAE,EACpC,CADwB,AACvB,CAGP,CAJ+C,CAAC,uBArBzC,SAAS,AAAqB,CAAS,EAAsB,AAC9D,EAAU,OAAD,AAAQ,EAAE,AACrBrB,EAAAA,IAFgC,AAE5B,CAAC,EAAW,OAAF,EAAW,CAAA,AAAE,GAClB,SAA8B,GAAG,CAAI,EAG1C,AAHuD,CADb,MAE1C+E,EAAAA,+BAA+B,CAAC,IAAI,CAAC,CACrCC,EAAAA,8BAA8B,CAAC,IAAI,CAAC,CAC5B,EAAoD,IAAI,CAAC,IAAI,EAAE,EAA/D,AAAkE,EAC5E,CAAC,CAD+E,AAItF,CAJuF,0BA7GhF,SAAgC,AAAvB,CAAgC,CAAgB,CAAO,EAA4B,AAC7F,EAAU,OAAD,EAAU,EAAE,AACvBhF,EAAAA,EAFkC,EAE9B,CAAC,EAAW,OAAF,IAAa,CAAA,AAAE,GACpB,SAA8B,CAAO,CAAW,CAAK,EAAY,AACtE,GAAIkE,CAF0C,CAE1CA,gBAAgB,CAAC,GAAU,CAC7B,GAD0B,CAAC,AAEvB,EADE,EAAkC,UAAlC,CACa,CADiC,GAA/B,EAAQ,KAAD,CAAC,CAG7B,GAAI,EACF,GAAI,CACF,EAAkBC,EAAAA,EAFN,EAAE,OAEd,4BAAyD,CAAC,GAC1DC,EAAAA,EADiE,CAAC,yBACtC,CAAC,IAAI,CAAE,EACrC,CAAE,KAAM,CAER,CAGF,IAAM,CANgD,CAAC,AAMhC3K,EAAAA,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAElD,OAAOqB,EAAAA,kBAAkB,CAAC,EAAgB,KACxC,CAD8C,GACxC,EAAauJ,CADmB,CACnBA,MAAb,kBAAqC,CAAC,EAAS,IAAI,CAAN,AAAQ,EAA2B,GAChF,AADqD,EAC9CpK,EAAP,AAAOA,AADgF,CAAC,gBAChE,CAAC,GAc/B,OAdyC,AAGrC,CAHsC,EAGtB,GAClB,EAAK,EAAD,EADF,MAA+B,EAAE,CACjB,CAAC,CACjB,GAAGqK,EAAAA,6BAA6B,CAAC,EAAgB,UAAU,CAAC,CAC5D,CADgD,EAC5C,EAAgB,aAAD,EAAC,EAAmB,CACrC,CAAC9B,EAAAA,8BAA8B,CAAA,CAAG,EAAgB,aAAD,EAAgB,AACnF,CAAiB,AACjB,CADkB,AACH,CAAC,CAGJ+B,EAAAA,mBAAmB,CAAC,IAAI,CAAE,EAAQ,EAAE,CAAE,EAAL,AAAW,EAAF,AAAU,KAAD,CAAO,CAAC,CAEpDC,EAAAA,cAAc,CAAC,EAAM,EAAF,EAChB,EADwB,AAC8B,IAAI,CAAC,IAAI,CAAE,EAAS,GAA1E,AAEZ,CAAC,CAFmF,AAAO,AAEzF,AACJ,CAH8F,OAK9F,AAAIC,EAAAA,qBAAqB,CAAC,GACjBC,EAAAA,EADwB,CAAC,EAAE,oBACF,CAAC,EAAS,IAAI,CAAN,AAAQ,EAA2B,EAAS,CAApC,GACtC,CADwE,CAClB,AAD0B,IACtB,CAAC,IAAI,CAAE,EAAS,GAA1E,CAIJ,CAJ4E,AAAO,CAAC,AAI9B,IAAI,CAAC,IAAI,CAAE,EAAS,EACpF,CADU,AACT,CAGP,CAJwF,AAAO,CAAC,oBAazF,SAAS,AAAkB,CAAS,CAAgB,CAAO,EAA4B,AACxF,EAAU,IAAI,EAAE,AAClB1E,CADW,CACXA,EAF6B,EAEzB,CAAC,EAAW,MAAM,CAAR,AAAQ,AAAE,GACf,aAD+B,EACK,GAAG,CAAI,EAAa,AAC7D,GAAM,CAAC,EAAO,CAAI,EAElB,EAFc,AAAQ,CAElByE,EAAAA,qBAAqB,CAAC,GACxB,IAD+B,CAAC,EACzBE,AAD2B,EAC3BA,iCAAiC,CAAC,EAAS,IAAI,CAAE,AAAR,EAAiB,IACvD,CADqD,CAAQ,AACZ,IAAI,CAAC,IAAI,CAA1D,CAA4D,EAAG,IAAI,AAI/E,CAJgF,EAI5EC,EAAAA,iBAAiB,CAAC,IACD,GADQ,CACR,AADS,EAAE,CAC1B,EAAQ,EAAA,GAAD,IAA+B,IAAf,EAAQ,EAAA,CAAgB,AAAE,CAKnD,CALgC,EAC5B,EAAQ,KAAD,AAAM,EA8D7B,AA9D+B,AACjB,SA6DL,AAA4B,CAAa,EAAiB,AACjE,GAAI,CACF,GAAI,GAA0C,KA/DT,GA+DS,EAA1C,AAAiB,IAFW,GAEJ,GAA8B,MAAA,GAAU,GAAiB,SAAA,CAAjB,EAA8B,IAIxE,CAAC,KAAA,GAJoF,AAI3G,EAJ6G,AAIhG,IAAA,EAAoB,EAAa,EAAlC,EAAkC,EAAQ,CAAC,GAAV,IAAmB,EAAa,IAAA,EAAQ,CAAC,GAAV,CAAU,CAAK,CAAC,AAE3E,CACjB,IAAM,EAAQ,AAAI,KAAK,CANJ,AAMK,EAAa,OAAO,CAAC,CAC7C,CADoC,CANjB,AAOb,GAAD,CAAC,CAAO,CAAC,aAAa,EAAE,EAAa,IAAI,CAAC,CAAA,CAEAvD,EAAAA,CAFN,WAEM,CAAA,EAAA,GAAA,OAAA,CAAA,AACA,CAEA,CAAA,KAAA,CAEA,CACA,EA/Eb,EAAQ,KAAK,AAAN,CAAO,CAGxCG,EAAAA,kBAAkB,CAAC,EAAQ,KAAD,CAAO,CAAC,EAAE,CAClC,EAAQ,KAAD,CAAO,CAAC,eAAA,EAAmB,EAAQ,KAAD,CAAO,CAAC,UAAA,AAAU,EAAE,AAC/D,GAAI,CACF,IAAM,EAAaiB,EAAAA,wCAAwC,CAAC,EAAQ,KAAD,CAAO,CAAC,CAC3EoC,EAAAA,6BAA6B,CAAC,IAAI,CAAE,EACtC,CAAE,KAAM,CAER,CAHgD,AAOpDC,CAPqD,CAOrDA,uBAAuB,CAAC,IAAI,CAAE,EAAQ,EAAE,CAAE,EAAQ,AAAb,KAAY,CAAO,CAAE,EAC5D,CAGF,IAJqE,CAAC,EAI9D,EAAiD,IAAI,CAAC,IAAI,CAA1D,CAA4D,EAAG,EACzE,CAAC,CAGP,AAJmF,CAAC,yJCpH9E,EAA4B,IAAI,OAAO,EAAE,UAAzC,eAiCC,SAAS,AAA0C,CAAiB,CAAK,CAAO,EAA+B,AACpH,GAAI,EAA0B,GAAG,CAAC,IAI9B,CAACG,EAAAA,EALgC,QACc,CAAC,CAAvB,CAAyB,YAIxB,CAAC,GAH7B,OAAO,EAQT,IAAM,CAL0C,CAAC,AAKlClO,EAAAA,AALoC,EAK7C,KARoB,EAQF,EAAE,CACpB,GAAiB,CAAQ,GAAQ,GAAT,AAAO,IAA/B,GAA2C,EAAE,CAAC,cAAc,CAAC,AAE7D,EAAsC,CAC1C,YADmB,AACP,CAAE,GAAS,IAAF,QAAE,EAAgB,EACvC,YADqD,CACxC,CAAE,GAAS,IAAF,SAAE,EAAiB,CAC7C,CAAG,CAsBD,OApBAiJ,EAAAA,EAHyD,EAGrD,CAAC,EAAgB,SAAS,CAAA,AAAE,EAAb,CACV,eAAyCkF,CADC,AACQ,CAAgB,GAAG,CAAQ,EAAa,AAC/F,IAAM,EAAS,MAAO,EAA6D,IAAI,CACrF,IAAI,CACJA,GAFoB,EAGjB,GAQL,GATW,EACE,EAGbC,EAAAA,sBAAsB,CAACD,EAAW,GAClCE,EAAAA,IADgC,MAAiB,CAAC,MACjC,CAACF,EAAW,GAC7BG,EAAAA,IAD2B,MAAiB,CAAC,SACzB,CAACH,GACrBI,EAAAA,MAD8B,CAAC,WACb,CAACJ,GAEZ,CACT,CAAC,EAGHK,EAJiB,AAIjBA,EANgC,CAAC,eAMf,CAAC,AA1BI,GA4BvB,EAA0B,GAAG,CAAC,GACvB,CACT,CAJmC,CAAC,EA1BX,SA4BwB,CAAC,CAAvB,CACD,qGC3EnB,SAAS,AACd,CAAM,CACN,EAAgD,CAAA,CAA5C,AAA8C,CAClD,EAAQhP,EAAAA,CAAR,GAH6B,WAGN,EAAE,EAEzB,GAAM,SAAE,CAAO,MAAE,CAAI,OAAE,CAAK,KAAE,CAAG,QAAE,CAAM,mBAAE,CAAiB,MAAE,CAAA,CAAK,CAAI,EAEjE,EAA+B,CACnC,CAH2E,OAGnE,CAAE,CADO,AAEf,QAAQ,CAAE,CACR,aAAa,CAAE,KAAK,EACpB,IAAI,MACJ,MACA,CADO,EACJ,MACH,EACA,IADM,eACa,CAAE,CAC7B,CAAO,AACP,CAAK,CACD,IAAI,CAAE,QAHoC,EAG1B,CAChB,KAAK,CAAE,MAAM,MACb,CACJ,CAAG,CAEK,CAHA,CAGS,GAAO,CAAhB,CAAc,OAAW,EAAC,EAAKQ,EAAAA,SAAS,EAAE,CAQhD,OANI,AAMG,GALL,EAAO,CADC,CAMI,CANF,CACJ,AAAK,CAAC,oBAAoB,CAAE,EAAe,GAGnC,CAHuC,CAGjC,AAHkC,GAGnC,GAH4B,MAGf,CAAC,EAAe,EAGpD,EAHwD,CAAC,MAAP,0FCtBlD,SAAS,EACP,CAAK,CACL,CAAO,CACP,CAAU,CACV,CAAK,CAJY,AAKjB,CAAc,EAEdyO,EAAAA,oBAAoB,CAAC,OAAE,KAAK,KAAE,EAAS,KAAF,KAAY,kBAAE,CAAA,CAAgB,CAAE,EACvE,GAD4E,CAAC,KAAxB,sBAuE9C,SAAS,AACd,CAAO,CACP,CAAU,CACV,CAHmB,MAGjB,CAAA,CAAO,CAAuB,CAAA,CAAE,EAElC,EAAW,OAAO,CAAR,AAAU,EAAS,EAAY,EAC3C,CAD6B,EAAmB,CAAC,EAAR,IAuGlC,SAAS,AACd,CAAO,CACP,CAAU,CACV,CAHmB,AAGjB,OAAA,CAAO,CAAuB,CAAA,CAAE,EAElC,EAAW,OAAO,CAAR,AAAU,EAAS,EAAY,EAC3C,CAD6B,EAAmB,CAAC,EAAR,IAgClC,SAAS,AACd,CAAO,CACP,CAAU,CACV,CAHmB,MAGjB,CAAA,CAAO,CAAuB,CAAA,CAAE,EAElC,EAAW,OAAO,CAAR,AAAU,EAAS,EAAY,EAC3C,CAD6B,EAAmB,CAAC,EAAR,GAnHlC,SAAS,AACd,CAAO,CACP,CAAU,CAFQ,AAGlB,OAAE,CAAA,CAAO,CAAuB,CAAA,CAAE,EAElC,EAAW,MAAM,CAAE,CAAT,CAAkB,EAAY,EAC1C,CAD4B,EAAmB,CAAC,EAAR,IA3EjC,SAAS,AACd,CAAO,CACP,CAAU,CACV,CAHmB,MAGjB,CAAA,CAAO,CAAuB,CAAA,CAAE,EAElC,EAAW,OAAO,CAAE,AAAV,EAAmB,EAAY,EAC3C,CAD6B,EAAmB,CAAC,EAAR,GAqGlC,SAAS,AACd,CAAO,CACP,CAAU,CAFQ,AAGlB,CAAE,OAAA,CAAO,CAAuB,CAAA,CAAE,EAElC,EAAW,MAAM,CAAE,CAAT,CAAkB,EAAY,EAC1C,CAD4B,EAAmB,CAAC,EAAR,wHCxIjC,SAAS,EAAoB,CAAM,CAAa,CAAc,CAAU,CAAmB,EAAkB,AAClH,OAAO,EACJ,CAF8B,EAE3B,CAAA,AAAC,GACH7R,EADG,AACHA,WAAW,CAAC,GAAS,EAAJ,CAAA,GAAU,CAAC,GAAS,EAAJ,CAAA,CAAQ,CAAC,SAAS,CAACgE,EAAAA,SAAS,CAAC,EAAO,EAAgB,CAAlB,IAEpE,IAAI,CAAC,EAF+E,CAE5E,CAAC,AACd,KAH8G,CAAC,CAAC,4BAsBzG,SAAS,AAAgC,CAAQ,CAAW,CAAa,EAC9E,AADoH,IAC9G,EAAsC,CAAA,CAAE,CAGxC,EAAW,AAAI,GAHL,EAGU,CAApB,AAAqB,EAAc,MAAM,CAJF,AAIG,CAAC,GAAT,CAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAQ5B,OAPzC,CAAU,CAAC,yBAAyB,CAAA,CAAI,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAGA,EAAA,EAHA,KAGA,CAAA,CAAA,EAAA,CAAA,IAAA,AACA,CAAA,CAAA,CAAA,EADA,uBACA,EAAA,EAAA,CAAA,CAAA,CAAA,CACA,CAAA,CADA,AACA,CAEA,CACA,SADA,aAnDpC,SAAS,AAAkB,CAAM,CAAa,CAAc,CAAU,CAAmB,EAC9F,AADgH,MACzG,IADwB,EACxB,GAAU/E,EAAAA,UAAA,EAA0E,YAA5D,OAAQA,EAAAA,UAAA,CAAoC,IAAI,CAAC,MAAA,CAC3EA,EAAAA,UAAA,CAAoC,IAAI,CAAC,MAAM,CAAC,GAAG,GACpD,EAAoB,CADsC,CAC9B,EAAgB,EAClD,AADgC,UAAgB,CAAvB,MAA4C,CAAC,UAyB/D,SAAS,AAAwB,CAAG,EAAmB,AAE5D,MAAO,YAAY,CAAC,CAFiB,GAEb,CAAC,EAC3B,CAD8B,CAAC,0NC/BzB,EAAqB,CACzB,CAACwD,EAAAA,gCAAgC,CAAA,CAAG,kBAAkB,AACxD,CAAC,6BAyEDkJ,EAAAA,iBAAA,CAAA,AAvEoC,CAAC,EAA0C,CAAA,CAAE,GAArC,CAC1C,CADoF,GAC9E,EAAS,EAAQ,EAAjB,GAAgB,CAAC,EAAUS,CAsEnC,CAtEmCA,cAAc,CAE/C,MAAO,CACL,IAAI,CAViB,CAUf,YAV4B,CAWlC,GADsB,EACjB,CAAC,CAAM,EAAE,AACZ,GAAM,YAAE,CAAU,gBAAE,EAAiB,CAAC,WAAlB,UAAoB,EAAsB,GAAA,CAAM,CAAI,EAAO,IAAD,MAAtC,AAAiD,EAAE,CAC3F,GAAI,CAAC,EAAY,CACfjN,EAAAA,KADa,MACbA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAC1F,MACF,CAEAkN,EAAAA,gCAAgC,CAAC,CAAC,MAAE,CAAI,OAAE,CAAA,CAAO,IAC/C,CADoD,EAChDnJ,EAAAA,SAAS,KAAO,GAAU,CAAC,EAAO,AAAlB,IAAiB,IAAS,CAAC,GAC7C,EADkD,CAAC,EAAE,EAIvD,IAAM,EAAW,CAAI,CAAC,CAAC,CAAC,CAClB,CADA,CACgB,EAAK,EAAD,GAAM,CAAC,CAAC,CAAC,CAEnC,GAAc,QAAQ,GAAlB,EAAoB,CACtB,EADE,CACE,CAAC,EAAU,CACb,IAAM,CADK,CAET,EAAc,MAAA,CAAS,EACnB,CAAC,CADQ,CADT,gBAEmB,EAAE0O,EAAAA,iBAAiB,CAAC,EAAe,EAAgB,GAAqB,CAAA,CAC7G,IADsE,GAAgB,OAAqB,CAAC,GAC5G,CACAD,EAAAA,oBAAA,CAAA,CAAA,KAAA,CAAA,OAAA,CAAA,OAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA,CAAA,AACA,AADA,CAEA,MACA,CAEA,IAAA,EAAA,CALA,IAKA,GAAA,EAEA,EACA,CAHA,CAGA,EAAA,IAAA,CAAA,CAAA,EAAA,QAAA,AADA,EACA,OAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAAE,EAAAA,uBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,CACA,GAAA,CAAA,CACA,EAFA,CAEA,EAAAC,EAAAA,kBAAA,aAAA,CAAA,EAAA,GAAA,CAAA,CAAA,AACA,CADA,AACA,CAEAH,EAAAA,IAHA,CAAA,eAGA,CAAA,CACA,KAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CACA,GADA,IACA,CAAAC,EAAAA,iBAAA,CAAA,EAAA,EAAA,GACA,SADA,KACA,CAAA,CADA,CACA,AADA,EACA,MAAA,SAAA,IACA,CACA,CAAA,CAAA,AACA,CAAA,CAAA,AACA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,CALA,+FCjCA,SAAS,EAAc,CAAI,CAAc,CAAI,CAAU,CAAK,CAAU,CAAO,EAAwB,AACnGG,EAAAA,AADoB,uBACG,CACrB,MAAE,IAAI,GAAE,IAAI,IAAE,EAAO,GAAF,CAAM,CAAE,GAAS,IAAF,AAAM,CAAE,UAAU,CAAE,GAAS,IAAF,MAAE,CAAY,CAC3E,CAAE,KAAK,CAAE,GAAS,IAAF,CAAE,CAAO,CAE7B,SAgCO,SAAS,AAAM,CAAI,CAAU,EAAgB,CAA/B,AAAgC,CAAE,CAAO,AAArB,EAA6C,AACpF,EAAc,SAAS,CAAE,CAAZ,CAAkB,EAAF,AAAS,EACxC,CADsC,IAAS,CAAC,WAmEzC,SAAS,AAAa,CAAI,CAAU,CAAK,CAAU,CAAO,EAAwB,AACvF,EAAc,GADY,QACb,GAAe,CAAE,EAAM,EAAF,AAAS,EAC7C,CAD2C,IAAS,CAAC,IAnC9C,SAAS,AAAM,CAAI,CAAU,CAAK,CAAU,CAAO,AAArC,EAA6D,AAChF,EAAc,OAAO,CAAE,EAAM,CAAhB,CAAc,AAAS,EACtC,CADoC,IAAS,CAAC,qJCsFxC,EAAmD,CAAC,OAAO,CAAE,OAAO,CAAE,IAA/C,EAAqD,CAAE,MAAM,CAAE,OAAO,CAAE,OAAO,CAAC,CAwGvG,EAA2E,CAE/E,MAAM,CAAE,OAAO,CACf,KAAK,CAAE,OAAO,CACd,KAAK,CAJqC,AAInC,OAAO,CACd,IAAI,CAAE,MAAM,CACZ,GAAG,CAAE,MAAM,CACX,IAAI,CAAE,MAAM,CACZ,OAAO,CAAE,MAAM,CACf,IAAI,CAAE,OAAO,CACb,KAAK,CAAE,MAAM,CACb,KAAK,CAAE,MAAM,CACb,GAAG,CAAE,MAAM,CACX,KAAK,CAAE,OAAO,CACd,KAAK,CAAE,OAAO,CACd,OAAO,CAAE,OAAO,CAEhB,QAAQ,CAAE,OAAO,CACjB,MAAM,CAAE,MAAM,AAChB,CAAC,CAGK,EAA4E,CAChF,CAAC,CAAE,OAAO,CACV,CAAC,CAAE,MAAM,CACT,CAAC,CAAE,MAAM,CACT,CAAC,CAAE,MAJwC,AAIlC,CACT,CAAC,CAAE,OAAO,CACV,CAAC,CAAE,OAAO,AACZ,CAAC,yBArGM,SAAS,AAAsB,EAAkC,CAAA,CAAE,EAAmB,AAC3F,CAD2C,GACrC,EAAS,IAAT,AAAa,GAAG,CAAC,CADY,CACJ,KAAD,CAAC,EAAU,GACnC,EAAiB,EAAQ,KAAD,CAAO,CAErC,GAFM,GAEC,CACL,EAJ8D,CAAC,AAI5D,CAAC,CAAM,EAAoB,AAG5B,GAAM,MAAE,CAAI,OAAE,CAAK,CAAE,OAAO,CAAE,CAAc,MAAE,CAAI,KAAE,CAAG,CAAE,IAAI,CAAE,CAAK,CAAE,GAAG,EAAK,CAAI,CAAT,CAGnE,EAAS,EAHyE,CAGvD7O,CAA3B,CAA2BA,SAAS,EAAE,CAC5C,GAAI,CAAC,EACH,IADS,EAAE,CAKb,IAAM,EA6FZ,AA7F+B,SA6FtB,AAAoB,CAAI,CAAW,CAAK,EAAoC,AAEnF,GAAI,AAAS,EA/FmC,EA+F5C,KAAkB,EAFI,AAEF,GACtB,MAAO,OAAO,CAIhB,GAAa,QAAQ,EAAE,CAAnB,EACF,EADE,IACK,OAAO,CAIhB,GAAI,EAAM,CACR,CADM,GACA,EAAc,CAAsC,CAAC,EAAK,CAChE,CAD+D,EAC3D,CADE,CAEJ,OAAO,CAEX,CAHiB,AAMjB,EANmB,CAMf,AAAiB,MALC,EAKO,SAAlB,EAAoB,CAC7B,EADS,EACH,EAAc,CAAuC,CAAC,EAAM,CAClE,EADiE,CAC7D,CADE,CAEJ,OAAO,CAEX,CAHiB,AAMjB,EANmB,IAMZ,GALe,GAMxB,AADe,EAzHoC,EAAM,EAAF,CAGjD,EAHwD,CAGpD,AAHqD,CAGpD,EAAO,GAAG,CAAJ,AAAK,GACd,OAGF,GAAM,GAJ0B,CAAC,EAAE,UAI3B,EAAiB,CAAC,WAAlB,UAAoB,EAAsB,GAAA,CAAA,CAAU,EAAO,IAAD,MAAtC,AAAiD,EAAE,CAEzE,EAAsC,CAAA,CAAE,CAG9C,IAAK,CAHW,EAGL,CAAC,EAAK,CAAF,CAAO,GAAA,AAAK,MAAM,CAAC,OAAO,CAAC,GACxC,CAD4C,AAClC,CADmC,AAClC,CADoC,CACjC,CAAA,AAAIY,EAAAA,SAAS,CAAC,EAAO,EAAgB,CAAlB,EAGnC,CAAU,CAAC,OAHwC,OAAqB,CAAC,AAG/C,CAAA,CAAI,kBAAkB,CAE5C,GAAG,CACL,CAAU,AADH,CACI,aAAa,CAAA,CAAI,CAAA,CAAG,CAG7B,IAAI,AACN,CAAU,CADF,AACG,cAAc,CAAA,CAAI,CAAA,CAAI,CAItB,IAAA,EAAT,GAAkC,EAAlC,MAA0C,EAAzB,AAA2B,OAApB,IAC1B,CAAU,AADgB,CACf,eAAe,CAAA,CAAI,CAAA,CAAK,CAGrC,IAAM,EA2IZ,AA3I+B,SA2ItB,AACP,CAAgB,CAChB,CAAc,CACd,CA9IU,AA8IS,EAEnB,GAAM,OAhJiD,EAgJ/C,CAAO,MALkB,MAKhB,CAAU,iBAAE,CAAe,mBAAE,CAAA,CAAkB,CAAI,EAE9D,EAAkD,CAAA,CAAE,CAE1D,GAAI,GAAmB,EAGrB,CAPkF,GAO7E,GAAM,CAAC,CALc,CAKT,AAHf,CAGa,CAAO,GAAA,AAAK,AAHW,EAAE,IAGP,CAAC,OAAO,CAAC,AAFpBgO,EAAAA,WAEiC,CAAC,CAAE,kBAFL,CAAC,EAAiB,IAGrE,CAAsB,CAAC,EAAG,CAAI,AAAJ,EAAQ,CAAD,CAHkC,IAAmB,CAAC,GAG3C,CAAC,2BAA2B,EACpEhO,EAAAA,SAAS,CAAC,EAAO,EAAgB,CAAlB,EACf,KAAK,EAEF,EAH4B,CAGP,EAAkB,IAHU,EAGV,CAAS,CAAC,EAAE,AAC5D,EADS,AACS,GAD6B,IACtB,CAAC,CAAC,EAAK,CAAF,GAAb,CAAoB,AACnC,CAAsB,CAAC,CAAC,EADgB,uBACS,EAAE,EAAM,CAAA,CAAA,CAAAA,AAAD,EAACA,SAAA,CAAA,EAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAGA,MAAA,CAJA,AAKA,OALA,AAKA,CALA,AAKA,EACA,KADA,KACA,CAAA,CACA,GAAAA,EAAAA,SAAA,CAAA,EAAA,EAAA,EAAA,CACA,GADA,AACA,CAAA,AACA,CACA,AADA,CAEA,AADA,EAxE/D,AA/FQ,CAoKuD,OAAA,CArEtD,AACP,CAAI,CACJ,CAAc,CACd,CAAmB,EAEnB,GAAI,CAAC,GAAM,CApGmB,AAoGrB,KAAQ,CACf,CADiB,EALY,GAMtB,CAAE,OAAO,CAAE,EAAA,CAAI,CAIxB,IAAM,EAAU8N,EAAAA,GAAV,cAA2B,CAAC,EAAM,EAAgB,AAAlB,GAEhC,EAAW,CAAI,CAAC,CAAC,CAAC,CAExB,CAFM,CAFgD,CAIlD/Q,EAAAA,IAJuE,CAAC,QAI3D,CAAC,GAAW,CAE3B,IAFwB,AAElB,CAFmB,CAE0B,QAAA,EAAnB,OAAO,CAAI,CAAC,CAAC,CAAA,AAAvC,CAAwD,CAAA,CAAI,CAAC,CAGnE,MAAO,SACL,EAEA,KAFO,KAEG,CAAE,EAEZ,MAFoB,WAEH,CAPG,CAOD,CAPM,EAAD,GAAM,CAAC,EAQrC,CAAK,AACH,CAAO,CACL,CAHkC,GAG5B,EAAgB,EAAK,EAAD,GAAM,CAAC,CAAC,CAAC,CAE7B,CAZkD,CAAC,AAavD,EAAc,MAAA,CAAS,GAAyB,CAAnC,MADT,GACwB,OAAO,GAAyB,CAACgR,EAAAA,EAA1B,qBAAiD,CAAC,GAEvF,KAF+F,CAAC,AAEzF,SACL,EACA,KADO,UACQ,CAAE,EAAwB,OAAW,CAAX,CACzC,OAD6D,GAA5C,OACA,CAAE,EAAwB,OAAgB,CACjE,CAAK,AACH,CACF,EArIiC,CAkIgB,CAlIV,EAAF,AAAkB,AAkImB,GAjIlE,AAiIiB,EAhIjB,GAGE,GAAkB,CALyB,KAC/B,EADoD,CAAC,CAKrC,EAAE,AAChC,CADkB,AAHC,KAIb,CAAC,MAAM,CAAC,EAAY,EAAiB,MAAnB,IAA6B,CAAC,CAGxDF,EAAAA,AAH4C,oBAGxB,CAAC,CACnB,KAAK,CAAE,EACP,OAAO,CACL,GAAkB,GAFG,IAEH,EAClB,GACC,CAFe,EAEPC,CAAR,CAAQA,MADT,WAC0B,CAAC,EAAM,EAAF,AAAkB,IACjD,EAAE,CACJ,KAFiD,KAEvC,EAF4D,AAG9E,CAAO,AAHwE,CAI3E,AADI,AAHuE,CAK/E,AADK,CACF,AACH,4HC8ByD,6DAxJd,uDAYK,6DAmDC,sEAKQ,qEAKK,8DAUP,+EA/Be,gFAVF,yDArFrB,0EANgB,kGAsFR,wDA3FR,2DAmBC,0DAwCF,iDAjKP,2DA4IiB,uEA9EL,uEALK,8EAzBE,yEALP,6DAfL,mEAyBW,oEApBV,+DAKK,8DAyBN,wDALA,qEAgMa,2DAvKH,gEAUZ,uDALG,gEAUM,oEA+DF,6DAXL,8DAiBM,kFA8Dc,0EAVF,+CArMzB,uDA0Ha,6DAyHP,0DAqBI,wDAXN,iDAfD,kDAoBE,kDAVF,wEAjFwB,4FAKJ,6EA3FX,yEAqGO,qFALK,+EA3FX,mEAKD,2DAsLP,uDAKG,8DAKI,uEAKK,wEAKJ,gHCnTvC,EAAyB,IAAI,GAAG,CAGhC,EAAmB,IAAI,GAAG,CAAC,CAAC,CAH5B,IAGA,YAA6C,CAAE,eAAe,CAAE,mBAAmB,CAAE,iBAAiB,CAAC,EAEvG,EAAuB,IAAI,GAAG,CAAC,CAC1C,SADW,mBACiB,CAC5B,wBAAwB,CACxB,8BAA8B,CAC9B,0BAA0B,CAC3B,EAEY,EAAiB,IAAI,GAAG,CAAC,CAAC,GAA1B,eAA4C,CAAE,sBAAsB,CAAC,EAErE,EAAa,IAAI,GAAG,CAAC,CAAC,oBAAoB,CAAC,wBAEG,CACzD,kBAAkB,CAAE,YAAY,CAChC,sBAAsB,CAAE,YAAY,CACpC,oBAAoB,CAAE,QAAQ,AAChC,+HCcQ,SAAA,EAAA,CAAA,EAAA,QA0EA,CA1EA,CAkFA,EARA,EAQA,AARA,EAQA,UAjFA,CAAA,CAAA,GAAA,CAAA,OAAA,EAAA,OAAA,GAGA,CAiCA,AApCA,CAAA,KAoCA,GADA,CACA,CAjCA,EAgCA,CACA,CADA,AACA,AAjCA,CAAA,GAAA,IAiCA,EAAA,OAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,GAAA,CAAA,CAAA,EAAA,EAAA,IAAA,CAAA,EAhCA,CAgCA,CAhCA,IAeA,AAfA,CAAA,GAeA,CAAA,AAdA,EADA,IAeA,GADA,CACA,CAdA,EAaA,CACA,CAdA,AAcA,AADA,CAbA,AAeA,CADA,OAAA,AACA,EAAA,GADA,IACA,EAAA,EAAA,OAAA,CAAA,EAAA,EAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,CACA,EAAA,IAAA,CAAA,AAfA,EAAA,IAAA,AACA,CADA,CACA,EAcA,EAdA,AAmEA,CAnEA,AADA,IAEA,AADA,OAmEA,IAAA,CAlEA,GAkEA,CAlEA,AAkEA,AAlEA,CAAA,IACA,GAiEA,EAAA,OAAA,EAAA,EAAA,CAjEA,OAiEA,EAAA,MAAA,GAAA,GASA,CATA,KASA,IAAA,CA1EA,GA0EA,CA1EA,AA2EA,CA3EA,IACA,CA0EA,GAAA,EAAA,EAAA,EAAA,EACA,MA3EA,KA2EA,GAAA,GACA,CADA,OACA,SAAA,EAAA,EAAA,OAAA,EACA,MAAA,GAAA,GACA,CADA,OACA,EAAA,EACA,KADA,EAAA,EAAA,EAAA,EAEA,CAAA,EAAA,EAAA,EAAA,CAAA,UAAA,CAAA,SAAA,CAAA,EACA,CAAA,EAAA,EAAA,EAAA,CAAA,UAAA,CAAA,UAAA,GAWA,MAAA,GAFA,CAEA,CA5FA,EA0FA,CAEA,CAFA,AAGA,AA7FA,CAAA,CA+EA,GA9EA,EA4FA,GAAA,EAAA,EAAA,EAAA,EACA,MA7FA,CA6FA,GAAA,GACA,CADA,OACA,IACA,KADA,EAAA,EAAA,GAAA,EAEA,CAAA,EAAA,EAAA,GAAA,CAAA,UAAA,CAAA,SAAA,CAAA,EACA,CAAA,EAAA,EAAA,GAAA,CAAA,UAAA,CAAA,UAAA,GAKA,MAAA,GADA,CACA,CAtGA,CA+FA,CAMA,CACA,CAtGA,AAqGA,CArGA,AAsGA,EAAA,EArGA,EAqGA,GAAA,EAAA,EAAA,CArGA,CAqGA,EAAA,IAAA,SAAA,IAAA,CAAA,CAAA,CAIA,UAAA,GAzGA,CAyGA,EAIA,CA7GA,CAyGA,AAzGA,IA6GA,AA5GA,GA2GA,CACA,CA5GA,EA2GA,CACA,CADA,AACA,AA5GA,CAAA,IACA,GA2GA,GAAA,GAAA,CA3GA,AADA,AA4GA,iBAAA,GAAA,EAAA,EAAA,EAAA,EAIA,KAAA,GADA,CACA,CA/GA,EA8GA,CACA,CADA,AACA,QAAA,EAAA,OAAA,EAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,UAAA,CAAA,OAAA,CA/GA,AA+GA,CA7GA,CAQA,SAAA,EAAA,CAAA,EAAA,AACA,MACA,MAFA,KAEA,GAAA,GACA,CADA,AACA,CAAA,EAAA,EAAA,OAAA,EACA,QAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EACA,KAAA,GAAA,EAAA,EAAA,OAAA,EACA,QAAA,EAAA,OAAA,EAAA,EAAA,OAAA,CAAA,GAAA,EACA,EAAA,EAAA,OAAA,CAAA,GAAA,CAAA,UAAA,CAAA,OAAA,CAEA,CAMA,SAAA,EAAA,CAAA,EAAA,AACA,MACA,EAFA,UAEA,GAAA,GACA,CADA,AACA,CAAA,EAAA,EAAA,QAAA,EACA,QAAA,SAAA,EAAA,EAAA,QAAA,EACA,MAAA,GAAA,EAAA,EAAA,QAAA,EACA,UAAA,OAAA,EAAA,EAAA,QAAA,CAAA,IAAA,AAEA,CAEA,SAAA,EAAA,CAAA,EAAA,AACA,MACA,EAFA,IAEA,GAAA,GACA,CADA,YACA,GAAA,EAAA,EAAA,EAAA,EACA,aAAA,GAAA,GACA,CADA,AACA,CAAA,EAAA,EAAA,SAAA,EACA,QAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EACA,MAAA,GAAA,EAAA,EAAA,SAAA,EACA,UAAA,OAAA,EAAA,EAAA,SAAA,CAAA,IAAA,AAEA,CAEA,SAAA,EAAA,CAAA,EAAA,AACA,MACA,AAFA,MAEA,GAAA,GACA,CADA,KACA,GAAA,EAAA,EAAA,EAAA,EACA,MAAA,GAAA,GACA,CAAA,AADA,CACA,EAAA,EAAA,EAAA,EACA,QAAA,EAAA,OAAA,EAAA,EAAA,EAAA,EACA,WAAA,GAAA,EAAA,EAAA,EAAA,EACA,UAAA,OAAA,EAAA,EAAA,EAAA,CAAA,SAAA,AAEA,8DAyDA,IAAA,EAAA,YAAA,OAAA,CAEA,EAAA,CAAA,SAAA,EAAA,CAAA,MAAA,CAAA,SAAA,CAAA,UAAA,CAAA,QAAA,CAAA,KAAA,CAAA,OAAA,CAAA,wDAKA,SAAA,EAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAgBA,IAAA,IAAA,KAfA,AAeA,EAfA,AAFA,EAEA,GAAA,GAAA,CAAA,EAAA,CAAA,AACA,EAAA,GAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,CAEA,EAAA,IAAA,CAAA,AACA,EADA,AACA,GAAA,CADA,MACA,CAAA,AAHA,CAGA,GAAA,EAAA,EAAA,QAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAEA,EAAA,IAAA,CAAA,AACA,EAAA,AADA,CAFA,EAGA,KADA,CACA,CAAA,CAAA,GAAA,EAAA,EAAA,OAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAEA,EAAA,IAAA,CAAA,AACA,EADA,AACA,CAHA,EAGA,CADA,OACA,CAAA,CAAA,GAAA,EAAA,EAAA,SAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAEA,EAAA,IAAA,CAAA,AACA,EADA,AACA,CAHA,CAEA,CACA,CAAA,CAAA,CAAA,GAAA,EAAA,EAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,CAEA,GACA,OAHA,CAGA,CADA,CAAA,AACA,OAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAEA,OAAA,CACA,IADA,+FCrIF,EAAY,AAAC,GACV,CADc,GAAjB,AACO,EAD+B,SACpB,EAAE,CAAC,MAAM,CAAC,GAAM,CAAF,CAAC,IAAO,CAMxC,EAAY,AAAC,GACV,EADe,AACL,EADb,EACiB,CADuB,AACtB,EAAN,OAAe,CAAC,IAWlC,CAXuC,CAAC,CAAC,MAWhC,EAAoB,CAAI,CAAU,CAAQ,EAAkB,AACnE,GAAI,EAAU,IAAI,AAAK,CAAL,CAChB,CAFwB,AACb,KAAkB,CACtB,CADwB,CAIjC,EAHa,EAGT,EAAM,CAAN,AAAO,CACP,EAAO,EAAP,AAAY,EAAD,IAAO,CAClB,EAAU,EAAE,CAEhB,EAFI,GAEG,GAAA,AAAO,GAAM,CAAF,AAChB,IAAM,EAAM,CAAN,GAAU,CAAC,KAAK,CAAC,AAAC,GAAA,AAAM,CAAA,CAAI,CAAI,CAAC,CAAC,CAClC,EAAY,EAAK,EAAD,GAAhB,AAAsB,CAAC,CAAC,CAAE,EAG5B,CAH+B,AAClB,CADmB,CACT,IAEX,CAAZ,EACF,AAHwB,EAGd,AAHwB,CAAC,CAInC,CAFsB,CAEhB,CAFkB,AACxB,AACA,CAAY,CAAN,AAAO,EADM,AAGnB,EAAO,EAAP,AAAa,CAAN,AAAO,AAElB,CAEA,OAAO,CACT,CAyBA,KA1BgB,IA0BP,EAAa,CAAI,CAAoB,CAAI,EAA4B,KAAzD,CACC,AAAhB,AAAJ,QAA4B,EAAE,OAAnB,EACF,EAEF,AAHI,CAGF,CAFI,EAED,CAAI,MAAE,CAAA,CAAM,AAC1B,CAiBA,SAAS,EAAsB,CAAO,EACpC,AAD+E,OAC5D,IAAA,GAAZ,EADqB,CACkB,QAAA,EAAnB,OAAO,GAAwB,IAAxB,QAAqC,GAAW,IAAX,CAAgB,CAAC,OAAO,CAAC,EAAQ,KAAD,EAAQ,CAAC,AAClH,CAKA,SAAS,EAAe,CAAO,EAAoC,AACjE,OACE,AAAY,EAFO,EAEP,GAAZ,GACmB,AAAnB,QAAmB,SAAZ,GACP,IADO,GACP,GAAW,GACX,IADW,CACN,CAAC,OAAO,CAAE,EAAyB,KAAzB,AAA8B,CAAA,EAC5C,EAAyB,KAAzB,AAA8B,CAAC,MAAA,CAAS,CAE7C,kEAsOO,SAAS,AAAsB,CAAQ,EAlC5C,AAkCoE,GAlChE,CAAC,KAAK,CAAC,OAAO,CAkCiB,AAlChB,IAAiC,CAAC,EAAE,CAAvB,AAAL,CAAA,CAAc,MAAD,AAAC,CACvC,OAAO,AAkCsB,EA5B/B,IAMM,EANA,AA7DR,AAuDmB,AAYA,AAsBsB,EAAE,OAzFlC,EAA6B,CAAQ,EAAwB,AA8BpE,GA+BM,IA5DW,AA6BV,EA7BmB,GAAG,CAAA,AAAC,CAkEe,CAlEpB,AA6BV,EA5Bb,IAAI,CAuFqE,CAzFxC,AA4BjC,AA6D0E,CAxFnC,MAEjC,CADQ,EACsB,CADkB,GAChD,IAAsC,EADmB,AAC9C,AAA6B,OAAtB,IAClB,EAAsB,CADJ,EAEpB,EAAa,CACX,CAF6B,CAAC,CAE3B,CAF6B,AAEtB,CACV,OAAO,CAHc,AAGZ,EAA6B,EAAQ,KAAD,EAAQ,CAAC,AAChE,CAAS,CACQ,YAAa,EAFiB,CAENI,EAAAA,EAAX,YAAyB,CAAC,EAAQ,KAAD,EAAQ,CAAC,EAAE,CAClE,EAAa,CACX,GAAG,CAAO,CACV,OAAO,CAAEC,EAAAA,iCAAiC,CAAC,EAAQ,KAAD,EAAQ,CAAC,CACrE,CAAS,CAEC,EAAe,KACjB,EADwB,AACX,CADY,AAGvB,EAHyB,CAGrB,CAHU,EAGI,CAAO,CACzB,AAD0B,KAAtB,AACC,CAAE,EAA6B,EAAQ,KAAD,AAAM,CAAC,CAC5D,CAAS,CAECD,EAAAA,aAHmC,CAGrB,CAAC,GACjB,EAAaC,EAAAA,GADc,CAAC,EAAE,AAC9B,2BAA8C,CAAC,GACtCD,EAAAA,KADgD,CAAC,QACnC,CAAC,KACxB,EAD+B,AAClBC,CADmB,CACnBA,CADqB,KAClC,2BAA8C,CAAC,EAAO,CAAC,EAGpD,GAAc,CACvB,CAAC,CAAC,AAEJ,EAoCgD,CAH1B,CAAQ,AApCnB,AAAqB,CAoCD,EAAS,MAAD,AAAC,CAAS,CAAC,CAAC,CAGU,CAAC,CACtD,EAAkB,CAAQ,CAAC,CAAC,CAAC,QAInC,AAAI,CAJE,MAGe,EAAU,GAC3B,AACK,EAxGX,AA4GS,EANuB,AACV,IACH,GAxGV,AAAsB,CAAO,AAsGU,CAtGC,AAsGA,CAtGQ,EAAqB,AAC5E,GAAI,CAAC,CAsGgC,CAtGvB,CA2Gc,AALW,IAtG3B,CAAS,EAAE,CAGvB,CAJ4B,EAIL,QAAQ,EAA3B,OAAO,EAAsB,CAC/B,IADS,AACH,EAAY,EAAoB,OAAO,EAC7C,AAD+C,OACxC,CADgD,AAAlB,CAAmB,AACrC,CAAC,EAAS,CAAI,EAAE,AACrC,CAEA,GAH+B,AAGR,QAAQ,EAA3B,AAA6B,OAAtB,EACT,KADS,CACF,EAAE,CAGX,GArJE,AAAY,CAqJV,GArJU,GAAZ,GACmB,OAoJD,CApJC,EAAnB,OAAO,GACP,IADO,KACP,GAmJmB,CAnJN,EACkC,IAkJrB,CAAC,AAnJd,EAmJgB,GAlJ7B,OAAQ,EAA2B,KAA3B,EAA2B,CAmJ5B,CAhHT,IAAM,EAAsB,MADX,EACW,AAFP,CAAE,EAEgB,CAFb,AAkHM,CAAO,CAlHJ,CAkHJ,AAAU,AAjHf,CAAC,CACrB,EAF2B,AAEc,EAFL,CAAE,EAAA,CAAI,EAIhD,CAHuC,CAAC,CAGpC,GAAuB,CAAC,CAC1B,CAD4B,KACrB,EAAE,CAGX,IAAM,CAJF,CAIqB,EAAoB,EAAQ,KAAD,EAAQ,CAAE,EAAxD,CACN,IAD4C,EACrC,CAAC,CAAE,GAAG,EAAS,GAD2D,CAAC,CAC9D,EAAS,CAAE,CAAA,CAAkB,CAAC,AAyGD,CAAC,OAGlD,AAAI,EAAsB,GA5GK,CA4GO,EAAe,CAApB,CAAA,CACxB,AAhFX,IA+E8D,CAAC,EAAE,EAAX,AA/E7C,AAAqB,CA+EH,AA/EU,CAAsC,CAAQ,EAAqB,AACtG,GAAM,GA+EuB,EA/ErB,CAAG,MADgB,CACd,CAAA,CAAA,CAnBb,AAAI,EAmBmB,KAnBnB,IAAW,EAAW,EAmBU,GAnBL,CAAC,OAAO,CAAC,EAAQ,KAAD,AAAM,CAAC,CAC7C,CAD+C,AAC7C,GAAG,CAAE,OAAO,CAAE,KAAK,CAAE,EAAQ,KAAD,AAAC,CAAO,CAE3C,SAAA,IAAa,EAAW,KAAK,CAAC,OAAO,CAAC,EAAQ,KAAD,EAAQ,CAAC,CACjD,CADmD,AACjD,GAAG,CAAE,SAAS,CAAE,KAAK,CAAE,AAeG,EAfK,KAAD,AAeG,CAAC,CAfH,CAAS,CAE5C,CAAE,GAAG,CAAE,IAAI,CAAE,KAAK,CAAE,EAAC,CAAG,CAe/B,GAAY,IAAA,GAAR,GAAiC,AAAjC,CAAkC,EAAE,CAApB,EAAM,GAAD,GAAC,CACxB,MAAO,EAAE,CAIX,IAAM,EAAa,EAAM,GAAD,AAAI,CAAA,AAAC,EAAvB,CAA+B,CAAR,CAAqB,EAAM,EAAF,AAAI,CAAC,CAAC,CAExD,EAAiB,CAF4B,CAChC,EAAU,CAAE,GAAG,AACX,CADkB,CAAE,CAAf,AAAgB,AACV,CAA5B,CADyC,CAAA,AAAG,CAAA,CAAY,CAAC,CAG7D,CAFwC,EAEpC,GAH4C,AAG1B,CAAC,CACrB,CADuB,KAChB,EAAE,CADP,AAKJ,IAAM,EAAoC,EAAE,CAE5C,IAAK,IAFc,AAER,IAAA,CAAQ,EAAO,CACxB,EADsB,EAChB,EA1HY,AAApB,EA0HQ,GAAO,GA1Ha,EAAE,AAA1B,MA0HsB,CA1Hf,IAGP,AAHO,MAGP,IAAU,EAA6B,EAA7B,MAAqC,EAA7B,AAA+B,OAAxB,EAAK,EAAD,EAAC,CAuHP,AAtHlB,EAAK,EAsHiB,AAtHlB,CAsHmB,CAtHd,CAEX,EAAE,CAqHD,EAAW,EAAU,GAE3B,CAF+B,AAAzB,CAA0B,CAE5B,CAFsB,EAEV,EAEd,EAAc,CAFZ,GAEgB,CAAC,GACnB,CADuB,CAFK,AAEJ,CAAX,AACK,CAHY,MAIzB,CADqB,EACQ,CADlC,AACmC,GAA1B,EAAc,MAAA,CAAc,CAErC,GAFsB,CAEhB,EAAY,EAAoB,EAAM,EAAF,CACtC,GACF,EAAc,IAAI,AADP,CACQ,CAFqC,AAC3C,CADsB,AAEH,AAFyB,EAEnB,EAAzB,AAAuB,EAEtC,IAFiC,CAAgB,AAGnD,CAHoD,CAAC,IAKnD,CAFK,IAIT,QAIA,AAAI,EAAc,MAAA,EAAU,CAAC,CACpB,CADQ,AAAc,CACpB,CAGF,CAAC,CAAE,GAAG,CAAO,CAAE,CAAC,EAAG,CAAA,AAAG,CAAA,CAAe,CAAC,AAEjD,EAgCgC,OAAO,CAlCN,CAkCQ,AAIhC,EACT,AADW,EAsFoB,EAhBH,EA1EqB,CAAC,GAuGlD,EA7B4B,GAAW,CAAC,CAgBM,EAAE,iBAAiB,CAAC,EAqB3D,SAAkC,AAAzB,CAA8B,EAAkB,AAC9D,OAAO,EAAoB,EAjZqB,GAiZhB,CAClC,CADoC,KADI,KACZ,wBAA0C,CAAC,qHCjP/C,eAAA,EACA,CAAA,CACA,CAAA,CACA,CAAA,EAIA,IAAA,EAAA,EAAA,KAAA,CAAA,EAPA,EAcA,CAPA,IAAA,CACAzF,EAAAA,AADA,EAAA,cACA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,CACA,CAAA,AACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CAEA,CAHA,CAGA,EANA,IAMA,EACA,EAAA,MADA,AACA,OAAA,EADA,AAIA,GAAA,QAAA,EAAA,EAHA,AAGA,KAAA,GAAA,MAAA,GAAA,EACA,CADA,AAEA,GAAA,CAAA,CACA,IAAA,CAAA,CACA,CAJA,AAIA,CAEA,CANA,AAOA,cAJA,GAGA,EA5IjB,SAAS,AAAgB,CAAW,CAAU,CAAI,EACvD,AADyE,OAClE,EAAc,CADQ,AACP,EAAA,EAAA,CAAA,EAAA,CAAf,CAAe,CAAA,CAAA,CACA,CADA,EAAA,2BA0EA,SAAA,CAAA,EAIA,GAAA,CAAA,KAAA,CAAA,OAAA,CAAA,GACA,CALA,IAIA,CAAA,AACA,CAAA,CADA,iBACA,MAAA,EAAA,OAAA,SAAA,CAAA,CAAA,CAAA,CAGA,IAAA,CAHA,CAGA,EAAA,MAAA,GAAA,CAAA,AACA,GAAA,CADA,EACA,QAAA,EAAA,OAAA,GAAA,MAAA,GAAA,GAAA,QAAA,GAAA,EAAA,CAAA,GAAA,EAGA,GAAA,CAAA,CAAA,EAAA,CAAA,EACA,MAAA,CAAA,SADA,SACA,MAAA,EAAA,OAAA,SAAA,CAAA,CAAA,CAAA,CAGA,IAAA,CAHA,CAGA,CAAA,CAAA,EAAA,CACA,EACA,IAFA,OACA,EADA,IAEA,EAAA,OAAA,CACA,EAAA,CADA,MACA,IAAA,EACA,IAAA,EAAA,OAAA,CACA,GADA,CACA,CAAA,SAAA,CAAA,EAAA,OAAA,IAAA,GACA,SAAA,AAEA,EAOA,CAAA,CAPA,SAAA,EAAA,MAOA,CAHA,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGA,QAHA,QAGA,CAFA,CAAA,GAAA,EAAA,KAAA,CAAA,CAAA,CAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA,AAEA,CAAA,CANA,AAIA,CAJA,UAIA,QAJA,CAAA,OAAA,EAAA,cAAA,CAAA,CAAA,CAOA,AAPA,MAAA,qBA9CA,SAAA,CAAA,EAAA,MACA,QAAA,EAAA,GADA,IACA,EAEA6F,EAAAA,CAFA,uBAEA,CAAA,GAEA,EAFA,CAAA,EAEA,CAAA,OAAA,CAAA,GAGA,EAHA,CAAA,CAGA,CAHA,AAGA,SAAA,CADAC,AACA,EADAA,eACA,CAAA,KADA,CAAA,IAIA,CAJA,CAAA,EAIA,CAAA,SAAA,CAAA,EACA,GADA,CAAA,0BA7EjB,SAAS,AAAwD,CAAO,EAAwC,AACrH,IAAM,GAAiB,CAAQpP,EAAAA,IAAD,IAAxB,CAAkC,EAAE,CADH,CACK,UAAU,EAAE,CAAC,cAAc,CACvE,AADwE,MACjE,CACL,GAAG,CAAO,CACV,YAAY,CAAE,GAAS,IAAF,QAAE,EAAgB,EACvC,YADqD,CACxC,CAAE,GAAS,IAAF,SAAE,EAAiB,CAC7C,CACA,AADE,YADyD,gBAmBnC,SAAA,AACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,SAAA,EAAA,CAAA,AACA,AARA,EAQA,EAAA,WAAA,CAAA,CACA,CAAAgP,EAAAA,mCAAA,CAAA,CAAA,CACA,CAAA,CAAA,MAEA,GAHA,CAGA,GACA,EADA,AACA,EADA,AACA,SADA,EACA,CAAA,CACA,CAAAC,EAAAA,oCAAA,CAAA,CAAA,CACA,CAAA,CAAA,OAGA,IAAA,EAJA,GAIA,GACA,IADA,AACA,KAAA,GACA,IAAA,IADA,CACA,GACA,IAAA,CAAA,GASA,AARA,CAFA,CAUA,EAAA,UATA,CASA,CAAA,CACA,CAAAC,EAAAA,mCAAA,CAAA,CAHA,CAGA,AAHA,GAAA,CAAA,GAAA,CAAA,GAAA,AAGA,CAHA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAIA,AAJA,CAIA,AAJA,CAIA,AAEA,GANA,OAAA,iBA+GA,SACA,AADA,CACA,CACA,CAAA,CACA,CAAA,SAGA,AAAAjR,EAAAA,EAAA,IANA,IAMA,CAAA,GAMA,IAAA,KAAA,CAAA,EAAA,CACA,GAPA,AAOA,CAPA,AAOA,CAAA,CAAA,AAPA,CAOA,EAKA,AALA,IAKA,EAAA,AADA,CALA,GAMA,AADA,CAAA,OAAA,CAAA,SACA,AADA,EAAA,IAAA,MAAA,CAAA,WAAA,CACA,EAAA,EAEA,EAAA,EAFA,CAEA,IAAA,CAAA,GAAA,CAAA,CAFA,CAEA,IAAA,CAAA,IAIA,cAAA,GAAA,GAAA,CAAA,SAAA,EAAA,OAAA,EACA,GADA,MACA,EAEA,OAAA,EADA,EAAA,GAAA,CAAA,CAAA,CADA,EAEA,CAFA,CAEA,CADA,CAEA,AAFA,CAEA,CAGA,OAJA,CAAA,CAAA,CAAA,AAIA,GAJA,MAIA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,AAJA,GAIA,CACA,CAAA,AACA,CAFA,AAEA,CAFA,AAEA,CA1BA,AAwBA,CAGA,kBA3BA,+DCmmBxB,EAAA,qBAAA,CA1jBqC,0CAxOI,uCAcN,2CAoIS,iDAQH,wDAhCU,0DApEP,+DA6MW,4DAzJb,sDAQM,8CA1Fb,iDAqQe,wDAwOP,+CATF,+CATE,mDA2BE,8DAzPS,oEA0BF,+DASJ,oDA8KP,wCAlZN,uCA1FK,0JC6CjC,SAAS,EACd,CAAW,CACX,CAAgB,EAEhB,IAAM,EAAc,EAAiB,GAAG,CAAC,EAAY,CAJjB,AAI9B,MAAsD,CAAC,AAAzB,CAC/B,AAD+C,GAC/B,EAAY,IAAI,EAAE,AAAlC,CAID,EAJ4B,AAIhB,CAJI,QAIL,EAAC,CAAc,CAAC,EAAE,AAC/B,GAAY,IAAI,CAAC+Q,EAAAA,CAAN,kCAAyC,CAAA,CAAI,EAAY,SAAD,EAAC,AAAW,EAE7E,EAAY,SAAD,GAAC,CAAe,CAAC,EAAE,CAChC,EAAY,IAAI,CAACC,EAAAA,EAAN,kCAA0C,CAAA,CAAI,EAAY,SAAD,GAAC,AAAY,GAE/E,EAAY,SAAD,EAAC,CAAc,CAAA,EAAK,EAAY,SAAD,GAAC,EAAe,CAAC,EAAE,CAC/D,EAAY,IAAI,CAAC,IAAN,uBAAiC,CAAA,CAAI,EAAY,SAAD,EAAC,CAAc,EAAY,SAAD,GAAC,AAAY,EAEtG,CA6FA,SAAS,EAAoB,CAAK,EAAkD,AAClF,OAAO,EAAM,GAAD,EADc,CACP,CACjB,AAAC,CAAC,EACA,CAAC,CAAC,CAAA,EAAkB,QAAA,EAAb,OAAO,CAAA,EAAkB,SAAU,CAAA,EAAK,SAAA,GAAa,CAAC,CAEnE,CAKO,SAAS,EAAiC,CAAS,EAA+C,AACvG,GAAI,CACF,IAAM,EAAI,IAAI,CAAC,KAAK,CAAC,GACrB,GAAI,AAHwC,AAGtC,CAAD,AAAC,EAAkB,AADM,CAAC,OACC,EAArB,OAAO,CAAA,CAAgB,CAChC,GAAI,UAAE,CAAA,CAAS,CAAI,CAAC,CACd,QAAE,CAAM,QAAE,CAAA,CAAO,CAAI,CAAC,CACtB,EAA8C,EAAE,CAQtD,CARY,EAGU,QAAQ,EAA1B,AAA4B,OAArB,GACT,EAAO,CADE,GACH,AAAK,CAAC,CAAE,IAAI,CAAE,QAAQ,CAAE,OAAO,CAAE,CAAA,CAAQ,CAAC,CAI1B,EAJiB,MAIT,EAAE,AAA9B,OAAO,EACT,GAAI,CACF,EAAW,AAFJ,IAEQ,CAAC,KAAK,CAAC,EACxB,CAAE,KAD8B,AACxB,CADyB,AAGjC,CAIF,GAAI,KAAK,CAAC,OAAO,CAAC,GAEhB,KAFwB,CAAC,CACzB,CAD2B,CACpB,IAAD,AAAK,CAAC,GAAG,EAAoB,IAC5B,EAIT,EAL6C,CAAC,AAK1C,CAL2C,AAChC,IAIN,CAAC,EAL0B,KAKnB,CAAC,GAEhB,GAFsB,CAAC,EAAE,CACzB,EAAO,IAAD,AAAK,CAAC,GAAG,EAAoB,IAC5B,EADkC,AAS3C,CAT4C,CAAC,CAKvB,CAJP,OADqB,AAKN,EAA1B,AAA4B,OAArB,GACT,EAAO,CADE,GACH,AAAK,CAAC,CAAE,IAAI,CAAE,MAAM,CAAE,OAAO,CAAE,CAAA,CAAQ,CAAC,CAG5C,EAHmC,AAG5B,IAAD,EAAC,CAAS,CAAC,CACnB,CADqB,MACd,CAEX,CAEF,CAAA,AAAE,GAJiB,EAIX,CAAC,CACT,MAAO,EAAE,AACX,wCAlFO,SAAS,AAAqC,CAAU,EAAgB,AAC7EO,EAAAA,sBAAsB,CAAC,MAAM,CAAC,CADoB,CAEpD,QAD0C,CAAC,iCARpC,SAAS,AAAsC,CAAU,EAA2C,AACzG,OAAOA,EAAAA,sBAAsB,CAAC,EADqB,CAClB,CAAC,EACpC,QAD8C,CAAC,qBA3GxC,SAAmC,AAA1B,CAA8B,CAAY,CAAgB,EAAmC,AAC3G,IAAM,EAAe,EAAK,EAAD,MAAnB,IADiC,EACC,CACxC,GAAI,CAAC,EACH,OAGF,GAJiB,CAIX,CAJa,CAIC,EAAK,EAAD,EAAK,CAACR,EAAAA,mCAAmC,CAAC,CAC5D,EAAe,EAAK,EAAD,EAAK,CAACC,EAAAA,oCAAoC,CAAC,CAEpE,GAA2B,QAAA,EAAvB,OAAO,GAAoD,QAAQ,AAA5D,EAA4B,OAAO,EAA2B,CACvE,IAAM,EAAW,EAAiB,CADU,EACP,CAAC,AAAhC,IAAiD,CAAE,KAAxB,EAAiB,CAAA,GAAkB,CAAE,CAAC,CAAE,YAAY,CAAE,CAAA,CAAG,CAE/D,QAAQ,EAAE,AAAjC,OAAO,IACT,EAAS,KADA,CACD,KAAC,EAAe,CAAA,CAAW,CAET,QAAQ,EAAE,AAAlC,OAAO,IACT,EAAS,MADA,AACD,MAAC,EAAgB,CAAA,CAAY,CAGvC,EAAiB,GAAG,CAAC,EAAc,EACrC,CACF,KAF+C,AAA3B,CAA4B,CAAX,uDA+D9B,SAAS,AAA+B,CAAK,CAAc,CAAgB,EAEhF,AAFmH,IAE7G,EAhCR,AAgC2B,SAhClB,AAAwB,CAAK,EAAmC,AACvE,EA+BM,EA/BA,EAAmB,CA6BmB,GA7Bf,CA+BmB,EA/BhB,CAEhC,CAFkD,GAE7C,EAHyB,AACxB,EAEK,IAAA,CAAQ,EAAO,CACxB,EADsB,EAChB,EAAiB,EAAK,EAAD,EAAK,CAACI,EAAAA,wCAAwC,CAAC,CAC1E,GAA8B,QAAQ,EAAlC,AAAoC,OAA7B,EAGX,GAAI,CAEF,IAAK,IAAM,AALF,IAKE,CADG,GACK,CADD,CAAC,GACK,CAAE,CADF,CAAC,GAEnB,EAAK,EAAD,EAAC,EAAQ,EAAK,CAFe,CAAA,AAEhB,SAAC,EAAe,CAAC,EAAiB,GAAG,CAAC,EAAK,EAAD,EAAK,CAAC,EAAE,AACrE,CADoD,CACnC,GAAG,CAAC,EAAK,EAAD,EAAK,CAAE,EAAK,CAArB,CAAoB,SAAY,CAAC,AAGvD,CAAE,KAAM,CAER,CACF,CAEA,OAAO,CACT,EAWmD,GAEjD,EAFsD,CAAC,CAElD,IAAM,EAdY,EAcZ,CAAQ,EAAO,CACxB,EADsB,CACN,qBAAqB,GAAjC,EAAK,EAAD,AAAC,CAA8B,CACrC,IAAM,EAAW,EAAK,EAAD,EAAK,CAACC,EAAAA,0BAA0B,CAAC,CACtD,GAAwB,QAAQ,EAA5B,OAAO,EAAuB,CAChC,IAAM,CADG,CACW,EAAiB,GAAG,CAAC,GACrC,IACF,CAF+C,CAAC,AAE3C,CAF6B,CAE9B,EAAK,CAACC,AADG,EAAE,AACLA,iCAAiC,CAAA,CAAI,CAAA,CAAW,AAE9D,CACF,CAEgB,qBAAqB,EAAE,CAAnC,EAAK,EAAD,AAAC,EACP,EAAuB,EAAM,EAAF,AAE/B,CACF,aAHmD,CAAC,CAAxB,uBAsBrB,SAAS,AAAkC,CAAK,EAWrD,AAX0E,OAWnE,IAAI,CAAC,SAAS,CAVD,AAUE,EAVI,GAAD,AAAI,CAAA,AAAC,EADiB,EAE7C,CAS+B,CAAC,CATZ,CADgB,OACR,EAAE,AAA1B,OAAO,EACT,EADS,CACL,CACF,OAAO,IAAI,CAAC,KAAK,CAAC,EACpB,CAAE,CADsB,CAAC,GACjB,CAER,CAEF,OAAO,CACT,CAAC,CAAC,CAEJ,AAHe,2DAiIR,SAA2B,AAAlB,CAAsB,EAA8B,AAClE,OAAQ,GACN,CADU,GACL,AAFwB,iBAEP,CACtB,IAAK,eAAe,CACpB,IAAK,mBAAmB,CACxB,IAAK,iBAAiB,CACpB,OAAOS,EAAAA,uCAAuC,AAChD,KAAK,4BAA4B,CAC/B,OAAOC,EAAAA,oDAAoD,AAC7D,KAAK,wBAAwB,CAC3B,OAAOC,EAAAA,gDAAgD,AACzD,KAAK,8BAA8B,CACjC,OAAOC,EAAAA,sDAAsD,AAC/D,KAAK,0BAA0B,CAC7B,OAAOC,EAAAA,kDAAkD,AAC3D,KAAK,kBAAkB,CACrB,OAAOC,EAAAA,yCAAyC,AAClD,KAAK,sBAAsB,CACzB,OAAOC,EAAAA,8CAA8C,AACvD,KAAK,oBAAoB,CACvB,OAAOC,EAAAA,2CAA2C,AACpD,KAAK,aAAa,CAChB,OAAOC,EAAAA,uCAAuC,AAChD,SACE,GAAI,EAAK,EAAD,QAAW,CAAC,WAAW,CAAC,CAC9B,CADgC,KACzB,QAAQ,CAEjB,MACN,CADa,AAEb,SAFsB,qBApFf,SAAS,AAA0B,CAAI,CAAQ,CAAU,EAAwB,AACtF,GAC6C,QAAA,EAA3C,EACA,KAHqC,AAE9B,CAAU,CAACf,EAAAA,mBAAmB,CAAA,EACpC,CAAU,CAACC,EAAAA,+BAA+B,CAAA,EAC1C,CAAU,CAAX,AAAYC,EAAAA,4BAA4B,CAAA,EAwBnC,GAAwD,QAAQ,EAAE,AAA9D,OAAO,CAAU,CAACA,EAAAA,4BAA4B,CAAA,CAGvD,GAAI,CACF,IAAM,EAAW,IAAI,CAAC,CAAhB,IAAqB,CAAC,CAAU,CAACA,EAAAA,4BAA4B,CAAC,CAAC,CACrE,GAAI,KAAK,CAAC,OAAO,CAAC,GAAW,CAC3B,GAAM,CADkB,CAAC,kBACjB,CAAkB,kBAAE,CAAA,CAAA,CAAqBC,EAAAA,yBAAyB,CAAC,GAEvE,GACF,EAHiF,AAG5E,CAH6E,CAG9E,UAAa,CADG,AACFC,EADI,AACJA,oCAAoC,CAAE,GAG1D,IAAM,EAAiB,KAAK,CAAC,GAH+C,CAAC,EAGvE,CAA8B,CAAC,GAAoB,EAAiB,MAAA,CAAS,CAAC,CAC9E,EAD+C,AAC3BC,CAD2B,CAC3BA,CAD+C,YACnE,SAA0C,CAAC,GAEjD,EAAK,EAAD,SAF6D,CAAC,CAEhD,CAAC,CACjB,CAACH,EAAAA,4BAA4B,CAAA,CAAG,EAChC,CAACD,EAAAA,YADgD,mBACjB,CAAA,CAAG,EACnC,CAACK,EAAAA,YADmD,mCACJ,CAAA,CAAG,CAC7D,CAAS,CAAC,AACJ,CAEF,CAAA,AAAE,KAAM,CAAC,CACX,EALyE,GAzCvE,CAMA,IAAM,EAAW,EADC,CAAU,CAACN,EAAAA,AACvB,mBAD0C,CAAC,EAEjD,GAAI,CAD6C,CAAC,AACrC,MAAD,AAAO,CAAE,CACnB,CAFyD,CAAC,CAEpD,oBAAE,CAAkB,kBAAE,CAAA,CAAA,CAAqBG,EAAAA,yBAAyB,CAAC,GAEvE,GACF,EAHiF,AAG5E,CAH6E,CAG9E,UAAa,CADG,AACFC,EADI,AACJA,oCAAoC,CAAE,GAG1D,IAAM,EAAiB,KAAK,CAAC,GAH+C,CAAC,EAGvE,CAA8B,CAAC,GAAoB,EAAiB,MAAA,CAAS,CAAC,CAC9E,EAD+C,AAC3BC,CAD2B,CAC3BA,CAD+C,YACnE,SAA0C,CAAC,GAEjD,EAAK,EAAD,SAF6D,CAAC,CAEhD,CAAC,CACjB,CAACL,EAAAA,mBAAmB,CAAA,CAAG,EACvB,CAACC,EAAAA,YADuC,mBACR,CAAA,CAAG,EACnC,CAACK,EAAAA,YADmD,mCACJ,CAAA,CAAG,CAC3D,CAAO,CAAC,AACJ,CACF,CAwBF,AAxBE,SAHuE,+JCjKzE,SAAS,EAAoB,CAAI,EAAc,QAC7C,IA6RsD,EA9R5B,EACpB,CAAE,IAAI,CAAE,AA6RwC,CA7R9B,CAAE,WAAW,CAAE,CAAA,CAAK,CAAI5P,EAAAA,UAAU,CAAC,EAE3D,AAAI,EAF2D,AAE1D,CAF2D,GAQ5D,AANK,CAMK,CAAC0Q,AANJ,EAMIA,2BAA2B,CAAA,EAAK,CAAU,CAACC,EAAAA,yBAAyB,CAAA,EAAc,aAAa,EAAE,CAAxB,GA2QlC,CA3QkC,CAClE,EA0QgC,EA1Q5B,AAAE,EA2Q0B,EAAA,EAAA,EADA,EAAA,AA1QhB,CAAC,KA2Qe,CAAAzR,EAAAA,gCAAA,CAAA,oBAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAAD,EAAAA,4BAAA,CAAA,qBAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAA2S,EAAAA,+BAAA,CAAA,cAAA,CAAA,CACA,EAAA,EAAAlB,EAAAA,MAAA,MAAA,eAAA,CAAAvB,EAAAA,0BAAA,CAAA,CACA,EAAA,EAAAwB,EAAAA,MAAA,MAAA,aAAA,CAAA4B,EAAAA,6BAAA,CAAA,CAOA,QAAA,EAAA,OAAA,EAFA,CAAA,CAAAA,EAAAA,IAEA,yBAFA,CAAA,GAGAlD,EAAAA,sBAAA,CAAA,GAAA,CAAA,EAAA,EAAA,EAAA,IAAA,KAAA,EAAA,CAAA,CAIA,CAAA,CAAAmD,EAAAA,0BAAA,CAAA,EAAA,AACA,EAAA,EAAA,UAAA,CAAAA,EAAAA,0BAAA,CAAA,UAAA,CAAA,CAGA,CADA,EAAA,CAAA,CAAArD,EAAAA,CACA,CADA,CACA,uBADA,CAAA,GAEA,EAAA,EAAA,QAAA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA,GA1RlD,AAAC,CAAU,AA0RuC,CA1RtCyB,EAAAA,yBAAyB,CAAA,EAAM,EAAD,AAAM,EAAD,QAAW,CAAC,MAAK,CAAC,EAIrE,AAJuE,AA8RjB,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,EAAA,CA3RnC,CA2RmC,QADA,EACA,CAAA1R,EAAAA,gCAAA,CAAA,oBAAA,CAAA,CAEA,IAAA,EAAA,EAAA,EAAA,KAAA,CAAA,KAAA,CAAA,EAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAA,kBAAA,CAAA,GACA,EAAA,EAAA,KADA,CAAA,EACA,CAAA,GAEA,IAAA,EAAA,CAAA,CAAAuT,CAFA,CAAA,AAEAA,IAAA,8BAAA,CAAA,CACA,GAAA,OAAA,CAAA,EAAA,OAAA,GACA,EAAA,EAAA,GADA,OACA,CAAA,oBAAA,CAAA,GAGAC,EAAAA,KAHA,CAAA,mBAGA,CAAA,EAAA,EAAA,CAEA,CAAA,CAAAP,EAAAA,GAFA,CAAA,iBAEA,CAAA,EAAA,CAAA,CAAA,CAAAQ,EAAAA,+BAAA,CAAA,EAAA,AACA,EAAA,EAAA,UAAA,CAAAA,EAAAA,+BAAA,CAAA,CAAA,CAAAR,EAAAA,qBAAA,CAAA,CAAA,CAEA,EAAA,EAAA,UAAA,CAAA,cAAA,CAAA,EAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,CAGA,IAAA,EAAA,AAAAS,EAAAA,iBAAA,CAAA,GAOA,CAPA,CAAA,CACA,EAAA,CACA,CADA,CACA,EAAA,UAAA,CAAA3T,EAAAA,4BAAA,CAAA,EAAA,CAAA,AAKAqR,EAAAA,gBAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,KACA,GAAA,OAAA,CAAA,EAAA,OAAA,EACA,EAAA,EAAA,IADA,IACA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA,CAEA,EAAA,EAAA,CAFA,OAEA,CAAA,cAAA,CAAA,CAKA,IAAA,EAAA,CAAA,CAAA6B,EAAAA,CAAA,oBAAA,CAAA,CACA,GAAA,EAAA,CACA,IADA,AACA,EAAA5B,EAAAA,QAAA,YAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,gBAAA,CAAAsC,EAAAA,mBAAA,CAAA,EAAA,AACA,EADA,EAEA,EAAA,EAAA,IADA,EAAA,EACA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,AAEA,CACA,EArUlC,AAkUkC,EAlU5B,EAAF,AAAQ,EAAF,CAChC,CAEA,MAH4C,CAAC,EAGpC,EAAuB,CAAK,EAAgB,AACnD,GAAmB,aAAA,CADU,EACzB,EAAM,GAAD,CAAC,EAA0B,EAAM,GAAD,EAAM,CAAE,CAE/C,IAAM,EAA8C,IAAI,GAAG,CAG3D,CAH6D,GAGxD,EAHiB,EAGX,IAAA,CAAQ,EAAM,GAAD,EAAM,CAAE,AAC9B,CAuIN,SAAS,AAAyB,CAAI,EAAkB,AACtD,GAAM,CAAE,IAAI,CAAE,CAAU,CAxII,OAwIF,CAAA,CAAO,CAAI,AADN,EAG/B,EAFyC,CAE1B,oBAAoB,EAAE,CAAjC,GAkCJ,GAlCI,AAMA,EAAK,EAAD,IAAC,EAA0B,AAAhB,IAAoB,AAAhB,EAAkB,GAAjB,MAAA,GACtB,EAAK,EAAD,IAAC,CAAS,gBAAA,CAAgB,CAGhC,EAAmB,EAAYzB,EAAAA,MAAF,MAAX,wBAAiD,CAAEtC,EAAAA,oCAAoC,CAAC,CAC1G,EAAmB,EAAYuC,EAAAA,MAAF,MAAX,oBAA6C,CAAExC,EAAAA,mCAAmC,CAAC,CACrG,EAAmB,EAAYyC,EAAAA,MAAF,MAAX,0BAAmD,CAAEC,EAAAA,0CAA0C,CAAC,CAGlH,EAAmB,EAAY,QAAF,MAAX,QAAmC,CAAE1C,EAAAA,mCAAmC,CAAC,CAC3F,EAAmB,EAAY,QAAF,MAAX,SAAoC,CAAEC,EAAAA,oCAAoC,CAAC,CAG7F,EAAmB,EAAY0C,EAAAA,MAAF,MAAX,aAAsC,CAAE3C,EAAAA,mCAAmC,CAAC,CAG9F,EAAmB,EAAY,QAAF,MAAX,wBAAmD,CAAE,0CAA0C,CAAC,CAIhH,AAA2D,QAAA,SAApD,CAAU,CAACA,EAAAA,mCAAmC,CAAA,EACa,UAAlE,AACA,OADO,CAAU,CAAC0C,EAAAA,0CAA0C,CAAA,GAE5D,CAAU,CAAC1C,EAAAA,mCAAmC,CAAA,CAC5C,CAAU,CAACA,EAAAA,mCAAmC,CAAA,CAAI,CAAU,CAAC0C,EAAAA,0CAA0C,CAAC,EAI7C,QAAQ,EAAnE,OAAO,CAAU,CAAC1C,EAAAA,mCAAmC,CAAA,CAAgB,CACvE,IAAM,EACwD,UADxD,AACJ,OAAO,CAAU,CAACC,EAAAA,oCAAoC,CAAA,CAClD,CAAU,CAACA,EAAAA,oCAAoC,CAAA,CAC/C,CAAC,CACP,CAAU,CAACC,EAAAA,mCAAmC,CAAA,CAAI,EAAe,CAAU,CAACF,EAAAA,mCAAmC,CAAC,AAClH,CAWA,GARI,CAAU,CAAC4C,EAAAA,yBAAyB,CAAA,EAAK,KAAK,CAAC,OAAO,CAAC,CAAU,CAACA,EAAAA,yBAAyB,CAAC,CAAC,EAAE,CACjG,CAAU,CAACA,EAAAA,yBAAyB,CAAA,CAAIC,EAAAA,iCAAiC,CACvE,CAAU,CAACD,EAAAA,yBAAyB,EAAA,EAMpC,CAAU,CAACE,EAAAA,wBAAwB,CAAC,CAAE,KArPV,EAsP9B,IAAM,KAAyC,CAAU,CAtPd,AAsPeA,EAtPG,AAsPHA,OAApC,iBAA4D,CAAA,CApPpF,AAAIrB,CAoP4F,CApP5FA,GAoP4C,aApP5B,CAAC,GAAG,CAAC,GAChB,UAD6B,CAAC,EAAE,CAClB,CAGnBC,EAAAA,oBAAoB,CAAC,GAAG,CAAC,GACpB,UADiC,CAAC,EAAE,KAClB,CAEvBC,EAAAA,cAAc,CAAC,GAAG,CAAC,GACd,UAD2B,CAAC,CAChB,CAEjBC,AAHmC,EAGnCA,UAAU,CAAC,GAAG,CAAC,GACV,QAAQ,CAEK,CAHU,CAAC,EAAE,SAGA,EAAE,CAAjC,EACK,WADL,GACmB,CAGhB,GAoOL,CAAU,CAACmB,EAAAA,MApOO,yBAoOwB,CAAA,CAAI,EAE9C,OAAO,CAAU,CAACD,EAAAA,AAFyC,wBAEjB,CAAC,AAC7C,CAmBA,GAlBA,EAAmB,EAAYnC,EAAAA,MAAF,MAAX,gBAAyC,CAAED,EAAAA,+BAA+B,CAAC,EAjI/F,AAqIE,SArIO,AAAoB,CAAU,EAAiC,AACtE,IAAM,EAAe,CAAU,AAoIZ,CApIayB,EAAAA,MADN,AACpB,oBAAoD,CAAC,CACrD,EAAoB,CAAU,CAACC,EAAAA,WAA/B,qBAA+D,CAAC,CAChE,EAAe,CAAU,CAACC,EAAAA,MAA1B,6BAA6D,CAAC,CAGpE,GAAoB,MAAhB,GAA6C,IAAI,EAAzB,AAA2B,EACrD,CADE,MAIJ,IAAM,EAAwC,EAJlB,AAIoB,CAArC,AAWX,GAR4B,QAAA,EAAxB,OAAO,GAA6B,EAAa,MAAA,CAAS,AAAnD,CAAoD,EAAX,AAAa,AAC/D,EAAM,GAAD,CAAK,CAAC,CACT,IAAI,CAAE,MAAM,CACZ,OAAO,CAAE,CACf,CAAK,CAAC,CAIA,AAAqB,IAAI,EAAE,EAC7B,AANuB,GAMnB,CAEF,IAAM,CAHN,CAI+B,OADhB,CACgB,EAA7B,OAAO,EAAiC,IAAI,CAAC,KAAK,CAAC,GAAqB,CAAjE,CAET,GAAI,KAAK,CAAC,GAF4D,CAAA,EAAqB,CAE1E,CAAC,GAAY,CAC5B,IAAK,CADoB,CAAC,EACf,KAAY,EAAW,CAEhC,AAFS,IAEH,EAFwB,AAEjB,EAAS,KAAA,CAAD,CAAU,EAAS,IAAI,CAC5C,CADuC,CACjC,GAAD,CAAK,CAAC,CACT,IAAI,CAAE,WAAW,CACjB,EAAE,CAAE,EAAS,MAAD,IAAW,CACvB,IAAI,CAAE,EAAS,MAAD,EAAS,CAGvB,SAAS,CAAkB,UAAhB,OAAO,EAAoB,EAApB,AAA2B,EAAP,EAAW,CAAC,SAAS,CAAC,GAAQ,CAAA,CAAE,CAAC,AACnF,CAAW,CAAC,AACJ,CAGA,OAAO,CAAU,CAACD,EAAAA,gCAAgC,CAAC,AACrD,CACF,CAAE,KAAM,CAER,CAIF,GAAI,EAAM,GAAD,GAAC,CAAS,CAAC,CAAE,CACpB,IAAM,EAAgB,CACpB,IAAI,CAAE,WAAW,OACjB,EACA,GADK,UACQ,CAnFjB,AAA4B,CAmFT,OAnFiB,EAAE,AAAlC,OAAO,EACF,GAkF+B,GAlFzB,CAKR,GANI,SAMQ,KACR,WAAW,CA4EmB,CAC3C,CAAK,CAED,CAAU,CAACE,EAAAA,KAHwC,CAAC,0BAGT,CAAA,CAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAc,CAAC,CAK9E,OAAO,CAAU,CAL2D,AAK1DH,EAAAA,0BAA0B,CAAC,AAC/C,CACF,EAqEsB,GAEpB,EAAmB,EAAYa,EAAAA,CAFD,CAAC,IAEF,MAAX,gBAAyC,CAAE,wBAAwB,CAAC,CACtF,EAAmB,EAAYJ,EAAAA,MAAF,MAAX,aAAsC,CAAE,gCAAgC,CAAC,CAE3F,EAAmB,EAAYK,EAAAA,MAAF,MAAX,eAAwC,CAAEC,EAAAA,2BAA2B,CAAC,CACxF,EAAmB,EAAYC,EAAAA,MAAF,MAAX,iBAA0C,CAAEC,EAAAA,4BAA4B,CAAC,CAE3F,EAAmB,EAAYC,EAAAA,MAAF,MAAX,OAAgC,CAAE,uBAAuB,CAAC,CAC5E,EAAmB,EAAYC,EAAAA,MAAF,MAAX,SAAkC,CAAEC,EAAAA,8BAA8B,CAAC,CAKjF,KAAK,CAAC,OAAO,CAAC,CAAU,CAACC,EAAAA,mBAAmB,CAAC,CAAC,CAAE,CAClD,IAAM,EAAU,CAAU,CAACA,EAArB,AAAqBA,mBAAmB,CAAA,CAAe,GAAG,CAAA,AAAC,IAC/D,CADoE,EAChE,CACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,AACtB,CAAE,KAAM,CACN,OAAO,CAAC,AACV,CACF,CAAC,CAAC,CACF,CAAU,CAACC,EAAAA,iCAAiC,CAAA,CAAsB,CAAA,GAAlB,EAAO,IAAD,EAAC,CAAe,CAAM,CAAC,CAAC,CAAA,CAAI,IAAI,CAAC,SAAS,CAAC,EACnG,CAKA,GANyG,CAAC,AAMrG,IAAM,GAAA,EAHX,AAsGsD,SAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAAAQ,EAAAA,SAvGvB,CAuGuB,QADA,qBACA,CAAA,CACA,GAAA,EACA,GAAA,CACA,IAAA,EAAA,IAAA,AAFA,CAEA,CAFA,IAEA,CAAA,GAGA,EACA,EAAA,EAJA,IAIA,EAAA,CAJA,CAAA,AAGA,AACA,KAAA,CAuBA,GAtBA,CADA,GAEA,EACA,EACAvB,EAAAA,CAJA,GACA,EAAA,AAEA,SADA,2BAEA,CACA,EAAA,YAAA,MAAA,EAEA,EAAA,EAAA,QAAA,SAAA,qBAAA,CAAA,EAAA,YAAA,GAAA,CAAA,CACA,EACA,EACA,QADA,SADA,+BAEA,CACA,EAAA,YAAA,YAAA,EAEA,EACA,EACA,QADA,SADA,+BAEA,CACA,EAAA,YAAA,YAAA,EAEA,CAAA,CAAA,wBAAA,CAAA,EAAA,AACA,EAAA,EAAA,QAAA,SAAA,OAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAIA,EAAA,SAAA,CAAA,CACA,IAAA,EACA,EAAA,CAFA,QAEA,CAAA,GADA,EACA,EAAA,GAAA,oBAAA,EACA,EAAA,SAAA,CAAA,UAAA,UAAA,CACA,EAAA,EAAAA,EAAAA,MAAA,SAAA,2BAAA,CAAA,GAEA,IAAA,EACA,EAAA,MAHA,CAAA,EAGA,CAAA,KAAA,EADA,AACA,GAAA,wBAAA,EACA,EAAA,SAAA,CAAA,UAAA,cAAA,CACA,EAAA,EAAAwB,EAAAA,MAAA,SAAA,gCAAA,CAAA,EACA,CAEA,EAAA,OAAA,EAAA,KAAA,EAHA,AAGA,CAHA,AAIA,EACA,CAFA,CAGAxB,EAAAA,MADA,SADA,2BAEA,CACA,EAAA,OAAA,CAAA,KAAA,CAAA,MAAA,cAAA,EAEA,EACA,EACAwB,EAAAA,MADA,SADA,gCAEA,CACA,EAAA,OAAA,CAAA,KAAA,CAAA,MAAA,eAAA,GAIA,EAAA,QAAA,EAAA,CACA,EACA,EACAxB,EAAAA,GAHA,GAEA,SADA,2BAEA,CACA,EAAA,QAAA,CAAA,WAAA,SAAA,EAEA,EACA,EACA,QADA,SADA,qBAEA,CACA,EAAA,QAAA,CAAA,WAAA,UAAA,EAGA,CAAA,KAAA,CAEA,CAEA,EA9KtB,GAGd,MAAM,CAAC,AAHiB,CAAC,GAGd,CAAC,IACxB,EAAI,CAAD,GAD+B,CAAC,CAAE,IACvB,CAAC,KAAK,CAAC,EAAE,AACzB,EAAmB,EAAY,EAAK,CAAF,AAAG,KAAR,EAAe,EAAE,EAA5B,AAAgC,CAAD,AAAC,CAAA,EAGA,EAxOzB,GAGzBV,CAH6B,CAG7BA,AAH8B,yBAGL,CAAC,EAAM,EAAF,CAIhCC,EAAAA,WAJkD,CAAC,kBAIrB,CAAC,EAAM,GAAD,EAAM,CAAE,GAG5C,IAAM,EAAQ,EAAM,CAAd,EAAa,EAHyC,CAAC,EAGjC,EAAE,KAAK,CAC/B,GAAO,EAAF,AAAE,GAAO,qBAAqB,EACrCC,AADuC,EACvCA,sBAAsB,CAAC,EAAO,EAElC,CAEA,AAJgC,OAIzB,CACT,CA6NwD,GA9N1C,CAJsC,CAAC,IAkOG,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAAA,CADA,CACA,GACA,CADA,AACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA,GAFA,IAEA,CAAA,CAAA,EAAA,CAEA,CA+JA,EAjKA,OAiKA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,CAAA,CAAA,GACA,EAAA,CAFA,AAEA,EAAA,CAAA,CAAA,CAAA,AAEA,yBAvFA,SAAA,CAAA,EAAA,AACA,EAAA,EAAA,CAAA,CAAA,UAAA,CAAA,CADA,EAGA,EAAA,IAAA,UAFA,CAAA,EAEA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,QAAA,CAAA,CAAA,CAAA,AACA,iFCnbjD,IAAM,EAAkC,CAC7C,4BAA4B,CAC5B,wCAAwC,CACxC,uCAAuC,CACvC,2BAA2B,CAC7B,CACa,EAAuB,CAClC,kBAAkB,CAClB,sBAAsB,CACtB,iBAAiB,CACjB,oBAAoB,CACpB,qBAAqB,CACrB,iBAAiB,CACjB,4BAA4B,IACzB,EACL,2BA5BuC,EA2BH,gCAtBE,CACpC,kBAAkB,CAAE,CAAE,SAAS,CAAE,MAAA,CAAQ,CACzC,yBAAyB,CAAE,CAAE,SAAS,CAAE,MAAA,CAAQ,CAChD,mBAAmB,CAAE,CAAE,SAAS,CAAE,YAAA,CAAc,CAGhD,sBAAsB,CAAE,CAAE,SAAS,CAAE,MAAA,CAAQ,AAC/C,CAAA,8JC4NO,SAAS,EACd,CAAI,CACJ,CAAY,CACZ,CAAgB,CAChB,CAAW,EAEP,KAAiB,OANgB,AAMjC,AACF,EAAK,AADuB,EACxB,AAD0B,WACZ,CAAC,CACjB,CAACuC,EAAAA,oCAAoC,CAAA,CAAG,EACxC,CAACzE,EAAAA,OADmD,4BAChB,CAAA,CAAG,CAC7C,CAAK,CAAC,MAEqB,GAH8B,CAGnD,GACF,EAAK,AAD2B,EAAE,AAC9B,SADF,EACgB,CAAC,CACjB,CAAC0E,EAAAA,wCAAwC,CAAA,CAAG,EAC5C,CAACzE,EAAAA,WAD2D,yBACvB,CAAA,CAAG,CAC9C,CAAK,CAAC,CAEA,AAAgB,SAAS,EAAzB,AAA2B,CAH6B,AAI1D,EAAK,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,mCAAmC,CAAA,CAAG,CAC7C,CAAK,CAAC,AAEN,CASO,OAZiD,EAYxC,EAA4B,CAAI,CAAQ,CAAE,CAAU,CAAK,CAAU,CAAS,EAAgB,AAC1G,EAAK,EAAD,WAAc,CAAC,AADsB,CAEvC,CAACoE,EAAAA,4BAA4B,CAAA,CAAG,EAAE,AAClC,CAACC,EAAAA,4BAA4B,CAAA,CAAG,CACpC,CADsC,AACnC,CAAC,CACF,EAAK,EAAD,WAAc,CAAC,CACjB,CAACF,EAAAA,+BAA+B,CAAA,CAAG,EACnC,CAACP,EADuC,AACvCA,+BAA+B,CAAA,CAAG,CACvC,CAAG,CAAC,CACF,CAF0C,CAErC,EAAD,WAAc,CAAC,CACjB,CAACU,EAAAA,mCAAmC,CAAA,CAAG,IAAI,IAAI,CAAa,AAAZ,IAAgB,CAAC,EAAC,EAAlB,SAA6B,EAAE,AACnF,CAAG,CACH,AADI,+BApKG,SACL,AADc,CACV,CACJ,CAAQ,CACR,CAAa,EAWb,GATA,EAA4B,EAAM,EAAF,AAAW,EAAE,CAAE,EAAS,CAAd,IAAmB,CALpB,AAKc,AAAQ,EAAS,MAAD,CAAQ,CAApD,AAAqD,CAC5E,EAAS,KAAK,CAAN,CAAQ,AAClB,EACE,EACA,EADI,AACK,KAAK,CAAN,AAAO,WAFM,EAEO,CAC5B,EAAS,KAAK,CAAN,AAAO,iBAAiB,CAChC,EAAS,KAAK,CAAC,AAAP,YAAmB,EAG3B,KAAK,CAAC,OAAO,CAAC,EAAS,MAAD,CAAQ,CAAC,CAAE,CACnC,IAAM,EAAgB,EAAS,MAAD,CAAC,CAC5B,CADG,EACA,CAAA,AAAC,GAAU,EAAO,IAAD,SAAc,EAClC,MAAM,CAAC,AAAC,GAA6B,AAAW,GAAlC,CAAsC,CAAC,CAAhB,IAQxC,GAPI,EAAc,MAAA,CAAS,CAAC,EAAE,AAC5B,CADe,CACV,EAAD,WAAc,CAAC,CACjB,CAACL,EAAAA,wCAAwC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EACnE,CAAO,CAAC,CAIA,EAAe,CACjB,IAAM,CANoE,CAMxD,AANyD,EAMhD,EADZ,GACT,CAAoB,CAAC,CACxB,GAAG,CAAA,AAAC,GAAU,EAAO,CAAjB,GAAgB,GAAQ,EAAE,UAAU,EACxC,MAAM,CAAA,AAAC,GAAS,EAAT,GAAc,CAAC,OAAO,CAAC,IAAU,CAAL,CAAW,GAAD,GAAC,CAAS,CAAC,EACxD,IAAI,EAAE,CAEL,EAAU,MAAA,CAAD,AAAU,CAAC,EACtB,AADwB,EACnB,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,oCAAoC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EACjE,CAAS,CAAC,AAEN,CACF,CACF,GAL0E,CAAC,0BAgEpE,SAAmC,AAA1B,CAA8B,CAAQ,CAAQ,EAAkC,AAC9F,GAAM,IAAE,CAAE,YAD6B,AAC3B,CAAA,CAAW,CAAI,EAE3B,EAAK,EAAD,EAF+B,SAEjB,CAAC,CACjB,CAACE,EAAAA,4BAA4B,CAAA,CAAG,EAAE,AAClC,CAACC,EAAAA,4BAA4B,CAAA,CAAG,EAAE,AAElC,CAACtJ,EAAAA,gCAAgC,CAAA,CAAG,CACxC,CAD0C,AACvC,CAAC,CAEE,GACF,EAAK,EAAD,GADQ,EAAE,MACI,CAAC,CACjB,CAACuJ,EAAAA,mCAAmC,CAAA,CAAG,IAAI,IAAI,CAAc,IAAb,AAAiB,CAAC,EAAC,OAAnB,IAA8B,EAAE,AACtF,CAAK,CAAC,AAEN,4BA9BO,SAAS,AAAwB,CAAI,CAAQ,CAAQ,EAAsC,AAChG,EAAK,EAAD,WAAc,CAAC,CACjB,CAFmC,AAElCH,EAAAA,+BAA+B,CAAA,CAAG,EAAS,KAAK,CACjD,AAD2C,CAC1CP,EAAAA,+BAA+B,CAAA,CAAG,EAAS,KAAK,AACrD,CAD+C,AAC5C,CAAC,CAEE,EAAS,KAAK,CAAN,CAAQ,AAClB,EAAwB,EAAM,EAAF,AAAW,KAAK,CAAN,AAAO,WAAtB,EAAmC,MAAE,EAAW,EAAS,KAAK,AAAhB,CAAiB,AAAP,YAAmB,CAAC,AAEvG,8BAhDO,SAAS,AAA0B,CAAI,CAAQ,CAAQ,CAAwB,CAAa,EAiBjG,AAjBmH,GACnH,EAA4B,EAAM,EAAF,AAAW,EAAE,CAAE,EAAS,CAAd,GADH,CACsB,CAAN,AAAQ,EAAS,MAAD,EAA5C,EAAuD,CAAC,CAC/E,EAAS,MAAD,AAAO,EAAE,AACnB,EAAK,EAAD,WAAc,CAAC,CACjB,CAACK,EAAAA,wCAAwC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAS,MAAD,AAAO,CAAC,CAAC,AACnF,CAAK,CAAC,CAEA,EAAS,KAAK,CAAN,CAAQ,AAClB,EACE,EACA,EADI,AACK,KAAK,CAAN,AAAO,WAFM,CAEM,CAC3B,EAAS,KAAK,CAAN,AAAO,aAAa,CAC5B,EAAS,KAAK,CAAN,AAAO,YAAY,EAK3B,GAEE,KAAK,CAAC,IAFK,EAAE,CAEA,CADU,AACT,EAAmB,MADV,AACgB,CAAA,EAAK,EAAmB,KAA/B,CAAqC,CAAC,MAAA,CAAS,CAAC,CAAlB,AAAoB,CAEpF,IAAM,EAAgB,EAAmB,MAAM,CAAC,EAA1C,IAAgD,CACpD,AAAC,EADqC,CAGpB,CAFb,GACb,IAC0B,EAAhB,OAAO,GAA8B,CAA9B,GAA8B,GAAT,GAA4D,CAA5D,cAA2E,GAAzD,EAAiC,EAAjC,EAAiC,EAG/E,EAAc,MAJxB,AAIwB,CAAS,CAAC,EAAE,AAC5B,CADe,CACV,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,oCAAoC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EACjE,CAAS,CAAC,AAEN,CAEJ,QAL8E,CAAC,oBAmHxE,SAAS,AAAyB,CAAM,EAAoD,AACjG,IAAM,EAAsC,CAC1C,CAACb,EAAAA,IADa,OADsB,mBAEL,CAAA,CAAG,EAAO,IAAD,CAAC,EAAS,SAAS,AAC/D,CAAG,CAEG,aAAA,GAAiB,GAAQ,EAAU,CAAZ,AAAaoB,EAAAA,oCAAoC,CAAA,CAAI,EAAO,IAAD,OAAY,AAAX,EACnF,OAAA,GAAW,IAAQ,CAAU,CAAZ,AAAaC,EAAAA,8BAA8B,CAAA,CAAI,EAAO,IAAD,CAAC,AAAK,EAC5E,mBAAA,GAAuB,IAAQ,CAAU,CAAZ,AAAaC,EAAAA,0CAA0C,CAAA,CAAI,EAAO,IAAD,aAAC,AAAiB,EAChH,kBAAA,GAAsB,IAAQ,CAAU,CAAZ,AAAaC,EAAAA,yCAAyC,CAAA,CAAI,EAAO,IAAD,YAAC,AAAgB,EAC7G,QAAA,GAAY,IAAQ,CAAU,CAAZ,AAAaC,EAAAA,+BAA+B,CAAA,CAAI,EAAO,IAAD,EAAC,AAAM,EAC/E,iBAAA,GAAqB,GAAQ,EAAU,CAAZ,AAAaC,EAAAA,wCAAwC,CAAA,CAAI,EAAO,IAAD,WAAC,AAAe,EAC1G,YAAA,GAAgB,IAAQ,CAAU,CAACC,AAAb,EAAaA,mCAAmC,CAAA,CAAI,EAAO,IAAD,MAAC,AAAU,EAG/F,IAAM,EA3BN,AAAI,YA2BE,EA3BF,CA2BmB,GA3BD,EAAyC,IAAzC,IAAiD,EAAvC,AAAyC,MA2B7B,CA3BL,AA2BM,EA3BC,IA2BK,AA3BN,CA2BO,OA3BN,CACrC,EAAO,IAAD,QAAa,CAGxB,sBAAA,IAA0B,EAAiD,IAAjD,IAAyD,EAA/C,AAAiD,OAA1C,EAAO,IAAD,gBAAC,CAC7C,EAAO,IAAD,gBAAqB,QA2BpC,OAJI,IACF,CAAU,CAAChK,EAAAA,MADK,EAAE,wBACyB,CAAA,CAAI,CAAA,CAAc,CAGxD,CACT,SADmB,iBA1NZ,SAAS,AAAsB,CAAK,EACzC,AADkF,OAEtE,IAAA,GAAV,GACiB,CAHgB,CAEjC,MACiB,EAAjB,OAAO,GACP,EADO,MACP,GAAY,GACkC,AAA7C,EADW,GACX,uBAAkC,MAAA,AAEvC,6BAxEO,SAAS,AAAyB,CAAQ,EAC/C,AADkG,OAEnF,IAAA,GAAb,GACoB,IAHgB,CAEpC,GACoB,EAApB,OAAO,GACP,KADO,GACP,GAAY,GACqC,KADrC,eACX,EAAqC,MAE1C,AAFK,AAAqC,2BAmCnC,SAAS,AAAuB,CAAQ,EAAiD,AAC9F,OACe,IAAA,GAAb,GACoB,EAHc,GAElC,GACoB,EAApB,OAAO,GACP,KADO,GACP,GAAY,GACqC,KADrC,YACX,EAAqC,MAE1C,AAF0C,AAArC,yBArBE,SAAS,AAAqB,CAAQ,EAAqD,OAChG,AAAiB,IAAA,GAAb,GAD8B,AACT,AAAoB,KAAzC,GAAyC,IAAY,CAAA,IAAzB,GAA2B,KAA3B,MAAuC,GAK3C,KALmD,CAAC,AAKpD,EALsD,CAKhF,EAAe,MAAA,EACiB,IADlB,IACkB,EAAhC,OAAO,EAAe,KAAA,EACtB,AAJqB,EAIN,GADM,EACD,CAJC,AAIA,MAAP,KAAkB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAE3D,2BAtBO,SAAS,AAAuB,CAAQ,EAA6C,AAC1F,OACe,IAAA,GAAb,GACoB,EAHc,GAElC,GACoB,EAApB,OAAO,GACP,KADO,GACP,GAAY,GACqC,KADrC,QACX,EAAqC,MAE1C,AAFK,AAAqC,8BAmCnC,SAAS,AAA0B,CAAK,EAA4C,AACzF,OACY,IAAA,GAAV,GACiB,EADjB,GAFqC,GAGpB,EAAjB,OAAO,GACP,EADO,IACP,GAAU,GACyC,EADzC,MACyC,EAAnD,OAAQ,EAAkC,GAAlC,CAAkC,EACxC,EAAkC,GAAlC,CAAkC,CAAgB,UAAU,CAAC,WAAW,CAE9E,wOC0HO,gBAAgB,AACrB,CAAM,CACN,CAAI,CACJ,CAAa,EAEb,IAAM,EAAwB,CAC5B,EADS,AAL0B,QAMzB,CAAE,EAAE,CACd,aAAa,CAAE,EAAE,CACjB,aAAa,CAAE,EAAE,CACjB,UAAU,CAAE,EAAE,CACd,aAAa,CAAE,EAAE,CACjB,iBAAiB,CAAE,CAAC,CACpB,YAAY,MAAE,EACd,OADuB,SACP,MAAE,EAClB,OAD2B,IAChB,MAAE,EACb,OADsB,gBACC,CAAE,CAAA,CAAE,CAC3B,qBAAqB,CAAE,EAAE,AAC7B,CAAG,CAED,GAAI,CACF,UAAW,IAAM,KAAA,AAAS,EAAQ,CAChC,GAD8B,AAC1BkK,EAAAA,qBAAqB,CAAC,GA7H9B,EA6HmC,CAAC,CA7H/B,CA6HiC,GA7H3B,KAfX,CAeW,CAfL,GAAD,OAAC,CAAa,EAAM,EAAA,CAAD,CAAO,EAAM,GAAD,OAAW,CAC/C,EAAM,GAAD,UAAC,CAAgB,EAAM,GAAD,EAAC,EAAS,EAAM,GAAD,UAAc,CACxD,EAAM,GAAD,cAAC,CAAoB,EAAM,GAAD,IAAC,EAAW,EAAM,GAAD,cAAkB,CAE9D,EAAM,GAAD,EAAM,EAAE,CAMf,EAAM,GAAD,SAAC,CAAe,EAAM,GAAD,EAAM,CAAC,aAAa,CAmIe,AAlI7D,EAAM,GAkI4D,AAlI7D,aAAC,CAAmB,EAAM,GAAD,EAAM,CAAC,iBAAiB,CACtD,EAAM,GAAD,QAAC,CAAc,EAAM,GAAD,EAAM,CAAC,YAAY,EAGzB,AA8HY,EA9HN,GAAD,AA8HO,IA9HN,EAAW,EAAE,CAAE,CA8H4B,IA5H9D,EAAO,IAAD,CAAM,EAAE,AA4H6D,CAAC,MA5HvD,EAAE,AACzB,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAO,IAAD,CAAM,CAAC,OAAO,CAAC,CAI5C,EAAO,IAAD,CAAM,EAAE,UAAU,EAAE,AAC5B,AAvDR,SAAS,AAA+B,CAAS,CAA4B,CAAK,EAAwB,AACxG,IAAK,IAAM,KAAY,EAAW,CAsDE,AAtDzB,AACT,IAAM,EADwB,AAChB,EAAS,CAFY,AAE7B,IAAsB,CAAN,AACtB,QAAc,IAAV,GAAwB,EAAxB,AAAiC,AAAvB,IAAa,EAAS,EAAS,CAG7C,CAH+C,EAGzC,CAAF,CAAA,GAAE,AAAS,EAAM,GAAD,oBAAwB,CAAC,AAQtC,CAEL,CAV6C,GAUvC,EAAmB,EAAM,GAAD,oBAAwB,CAAC,EAAM,CACzD,EADwD,AAC/C,MAAD,EAAS,CAAC,SAAA,EAAa,GAAkB,QAAQ,EAAE,CAC7D,EAAiB,AADgC,QACxB,CAAC,KAAV,IAAU,EAAa,EAAS,MAAD,EAAS,CAAC,SAAA,AAAS,CAEtE,MAbE,EAAM,GAAD,oBAAwB,CAAC,EAAK,CAAI,CACrC,CADiC,EAC9B,CAAQ,CACX,QAAQ,CAAE,CACR,IAAI,CAAE,EAAS,MAAD,EAAS,CAAC,IAAI,CAC5B,SAAS,CAAE,EAAS,MAAD,EAAS,CAAC,SAAA,EAAa,EACpD,AADsD,CAC7C,AACT,CAAO,AAQL,CACF,EAiCuC,EAAO,IAAD,CAAM,CAAC,UAAU,EAAE,GAGxD,EAH6D,AAGtD,CAHuD,GAGxD,SAAc,EAAE,AACxB,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAO,IAAD,SAAc,CAAC,MAmHnCC,EAAAA,yBAAyB,CAAC,IACnC,AAvGR,CAsGgD,CAAC,EAAE,KAtG1C,AACP,CAAW,CACX,CAAK,CACL,CAAa,CACb,CAAI,EAEJ,GAAI,CAAA,CAAE,CAiGwB,EAjGc,OANb,CAMzB,EAAe,OAAO,CAAgB,CAAQ,CAAC,AAAE,OACrD,CAD0B,CACpB,GAAD,OAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAG7C,GAAI,WAAA,EAAuB,KAAK,CAAE,CAChC,EAAK,EAAD,OAAU,CAAC,CAAE,IAAI,CAAEvU,EAAAA,iBAAiB,CAAE,OAAO,CAAE,gBAAA,CAAkB,CAAC,CACtEyJ,EAAAA,gBAAgB,CAAC,EAAa,CAC5B,QAD0B,CACjB,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,gCAAgC,AAC9C,CAAO,AACP,CAAK,CAAC,CACF,MACF,CAEA,GAAM,CAAF,CAAA,OAAY,GAGhB,GAAI,CAAC4K,EAAAA,EAHsB,CAAC,EAAE,eAGL,CAAC,QAAQ,CAAC,EAAM,GAAD,CAAK,CAAC,CAAE,OAC9C,EAAM,GAAD,OAAW,CAAC,IAAI,CAAC,EAAM,GAAD,CAAK,CAAC,CAKnC,GAAI,IAEE,AAAe,KAAV,IAFM,EAAE,gBAEE,KAAT,IAAA,EAAwC,MAAA,IAAU,EAC1D,EAAM,CADyD,EAAE,AAC5D,kBAAsB,CAAC,IAAI,CAAC,EAAM,GAAD,CAAK,CAAC,CAG3B,4BAAA,GAAf,EAAM,GAAD,CAAC,EAAyC,OAAA,IAAW,EAAS,EAAM,CAAf,EAAc,EAAM,EAAE,OAClF,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAM,GAAD,EAAM,CAAC,CAKzC,GAAI,UAAA,IAAc,CAAO,CACvB,GADqB,AACf,UAAE,CAAA,CAAS,CArBL,EAsBZ,AADqB,EACf,GADe,AAChB,IAtBO,GAsBN,CAAa,EAAS,EAAA,EAAM,EAAM,AAAb,GAAY,OAAW,CAClD,EAAM,GAAD,UAAC,CAAgB,EAAS,KAAA,CAAD,CAAU,EAAM,GAAD,UAAc,CAC3D,EAAM,GAAD,cAAC,CAAoB,EAAS,MAAD,IAAC,EAAc,EAAM,GAAD,cAAkB,CAEpE,EAAS,KAAK,CAAN,CAAQ,CAMlB,EAAM,GAAD,SAAC,CAAe,EAAS,KAAK,CAAN,AAAO,YAAY,CAChD,EAAM,GAAD,aAAC,CAAmB,EAAS,KAAK,CAAN,AAAO,aAAa,CACrD,EAAM,GAAD,QAAC,CAAc,EAAS,KAAK,CAAC,AAAP,YAAmB,EAG7C,EAAS,MAAD,AAAO,EAAE,AACnB,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAS,MAAD,AAAO,CAAC,CAGvC,GAAiB,EAAS,MAAD,EAAzB,GAAqC,EAAE,AACzC,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAS,MAAD,KAAY,CAEjD,AAFkD,EAGpD,EAoCiC,EAAiC,EAAO,CAAxC,CAAuD,CAAjB,CAEjE,EAFsF,CAAC,IAEjF,CACR,CAHkF,AAIpF,GAFe,KAEL,CACRG,EAAAA,2BAA2B,CAAC,EAAM,EAAF,AAAQ,GAAD,OAAW,CAAE,EAAM,GAAD,UAAc,CAAE,EAAM,GAAD,cAAkB,CAAC,CACjGC,EAAAA,uBAAuB,CAAC,EAAM,EAAF,AAAQ,GAAD,SAAa,CAAE,EAAM,GAAD,aAAiB,CAAE,EAAM,GAAD,QAAY,CAAC,CAE5F,EAAK,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,mCAAmC,CAAA,EAAG,CAC7C,CAAK,CAAC,CAEE,AAHyC,EAGnC,GAAD,UAAc,CAAC,MAAM,EAAE,AAC9B,EAAK,EAAD,WAAc,CAAC,CACjB,CAACpB,EAAAA,wCAAwC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAM,GAAD,UAAc,CAAC,AACvF,CAAO,CAAC,CAGA,GAAiB,EAAM,GAAD,KAAtB,KAAoC,CAAC,MAAM,EAAE,AAC/C,EAAK,EAAD,WAAc,CAAC,CACjB,CAACqB,EAAAA,8BAA8B,CAAA,CAAG,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAE,CAAC,AACtE,CAAO,CAAC,CAKJ,IAAM,EAAe,CAAC,GADe,MAAM,AACrC,CADsC,MAAM,CAAC,EAAM,GAAD,oBAAwB,CAAC,IACvB,EAAM,GAAD,kBAAsB,CAAC,CAElF,EAAa,MAAA,CAAS,CAAC,EAAE,AAC3B,AADc,EACT,EAAD,WAAc,CAAC,CACjB,CAACpB,EAAAA,oCAAoC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAC/D,CAAO,CAAC,CAGJ,EAAK,EAAD,CAAI,EAAE,AACZ,AALyE,CAM3E,AAN4E,4OC1J5E,SAAS,EAAqB,CAAI,CAAQ,CAAM,CAA2B,CAAa,EAAgB,AAEtG,GAAsB,QAFK,OAEvB,GAAkC,OAAA,GAAlC,AAA6C,EAAQ,CACvD,GADqD,CAC/C,EAAQ,EAAO,CAAf,GAAc,CAAM,CAG1B,GAAa,IAAI,EAAb,AAAe,GAKE,EALjB,MAKiB,EAAjB,OAAO,GAAsB,AAAiB,CAAC,CAAxC,CAA0C,EAAf,CAAC,MAAA,EAKnC,KAAK,CAAC,OAAO,CAAC,IAA2B,CAAtB,AAAuB,CAAvB,CAAyB,CAApB,EAAM,GAAD,GAAC,CAThC,OAcF,EAAK,EAAD,UAAa,CAACX,EAAAA,iCAAiC,CAAmB,UAAjB,OAAO,EAAqB,EAAQ,CAA7B,EAAqB,CAAY,CAAC,SAAS,CAAC,IACxG,CAD6G,CAAC,CAAC,GAEjH,CAEA,IAAM,EAAM,CAAN,SAAiB,EAAS,EAAO,EAAhB,EAAe,CAAC,CAAQ,UAAA,GAAc,EAAS,EAAO,EAAhB,EAAe,IAAC,MAAW,EAExF,GAAI,CAAC,GAAG,AAIJ,AAN6F,EAEvF,GAID,CAAC,OAAO,CAAC,GAAG,CAAA,AAAoB,CAAC,EAAE,CAAlB,EAAI,CAAD,KAAC,CAH5B,OAOF,GAAM,oBAAE,CAAkB,kBAAE,CAAA,CAAA,CAAqB7C,EAAAA,yBAAyB,CAAC,GAAG,AAE1E,CAF2E,EAG7E,EAAK,EAAD,UAAa,CADG,AACFC,EADI,AACJA,oCAAoC,CAAE,GAG1D,IAAM,EAAiBC,EAAAA,OAHqD,CAAC,EAGvE,YAAuC,CAAC,GAC9C,EAAK,EAAD,SAD0D,CAAC,AAC9C,CAACJ,EAAAA,+BAA+B,CAAE,GAE/C,KAAK,CAAC,KAFuD,CAAC,CAEjD,CAAC,GAChB,EAAK,EAAD,SAD4B,CAAC,AAChB,CAACK,CADiB,CACjBA,+CAA+C,CAAE,EAAiB,MAAM,CAAC,CAE3F,EAAK,EAAD,EAF+E,QAElE,CAACA,EAAAA,+CAA+C,CAAE,CAAC,CAAC,AAEzE,0BAyIa,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,OArCA,AAqCA,SArCA,CAoCA,CApCA,CAAA,CAAA,EAqCA,AArCA,EAAA,CAAA,CAAA,EAAA,AACA,GADA,IACA,IAAA,KAAA,CAAA,EAAA,CACA,GADA,AACA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,CADA,CACAsF,EAAAA,MAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EAAA,EAAA,AAEA,CAFA,CAAA,AAEAC,EAAAA,cAAA,QAAA,CAAA,EAAA,CACA,GAAA,IADA,MACA,SAAA,GAAA,EACA,AADA,OACA,AA/FJ,SAAS,AAAiB,AA8FtB,EAAA,CA9FyB,CAAI,EAAiB,AACvD,CA8FS,GA3CA,EAnDH,EAiGG,AAjGa,EADQ,AACW,QAmDhC,CAnDH,AAA4C,CAC5C,EAAoB,AApH9B,IAmH4C,AAiG/B,KApNJ,AAAyB,CAAI,CAAa,CAAa,EAAmC,AACjG,IAAM,EAAsC,CAC1C,CAACb,EAkHiD,AAlHjDA,IADa,KADe,cAEL,CAAA,CAAG,QAAQ,CACnC,CAAC1C,EAAAA,+BAA+B,CAAA,CAAG,EACnC,CAAC1S,EAAAA,QAD+C,wBACf,CAAA,CAAG,gBAAgB,AACxD,CAAG,CAED,GAAI,EAAK,EAAD,IAAC,CAAS,CAAA,EAAwB,UAAnB,OAAO,CAAI,CAAC,CAAC,CAAA,EAA8B,IAAI,GAAhB,CAAI,CAAC,CAAC,CAAA,CAAY,CACtE,IAAM,EAAS,CAAI,CAAC,CAAC,CAAA,AAAf,CAEA,EAAiB,AAjC3B,SAAS,AAAsB,CAAM,EAA+C,AAiC1E,AAhCR,IAMM,EAAiB,AANjB,CAMkB,EA0BsB,CAhChC,CAAR,IAAa,CAAC,EADQ,KACD,CAAC,EAAO,IAAD,CAAM,EAAI,EAAO,IAAD,CAAC,CAAQ,EAAE,IAEpC,AADG,EAAO,IAAD,cAAC,EAA2D,QAAQ,EAA7C,OAAO,EAAO,IAAD,cAAC,CAEnE,CAAC,CAAE,IAAI,CAAE,oBAAoB,CAAE,GAAI,EAAO,IAAD,cAAC,CAAgD,CAAA,CAC1F,EAAE,CAEgD,CACtD,GAA8B,CAAC,EAAE,CAA7B,EAAe,MAAA,CAInB,GAAI,CACF,CALgB,MAKT,IAAI,CAAC,SAAS,CAAC,EACxB,CAAA,AAAE,MAAO,EAAO,CACdtD,EAAAA,AAFoC,AACxB,CADyB,UAErC,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAE,GAChE,EADqE,CAAC,GAExE,CACF,AAFW,EAiBsC,GACzC,GAD+C,CAAC,AAElD,AAnBc,CAmBJ,CAACoT,EAAAA,MADK,EAAE,gCACiC,CAAA,CAAI,CAAA,CAAc,CAGvE,MAAM,CAAC,MAAM,CAAC,EAAYqF,EAAAA,MAAF,kBAA0B,CAAC,GACrD,GAD2D,CAAC,CAAC,CAE3D,CADK,AACK,CAACnC,EAAAA,8BAA8B,CAAA,CAAI,SAAS,CAGxD,OAAO,CACT,EA+FuD,EAAM,EAAF,CACjD,EAjGS,AAiGA,CAAiB,CAACA,CAA3B,CAA2BA,IADqC,CAAC,yBACR,CAAA,EAAgB,SAAS,CAElF,EAAS,CAAI,CAAC,CAAC,CAAf,AAAe,CACf,EAAoB,GAA4B,GAA5B,KAA4B,EAAlB,EAA9B,KAAqC,IAAyC,EAAzC,EAAuB,AAAsB,EAAf,IAAD,EAAC,CAEnE,EAAa,CACjB,IAAI,CAAE,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CACA,CADA,CACA,CAAA,CADA,AACA,OAAA,EAAA,EAAA,CAAA,CACA,SADA,CACA,CAAA,CACA,CAAA,CAEA,GAAA,EAAA,CAGA,IAFA,EAEA,EAAA1I,AANA,EAMAA,IAHA,IACA,OAEA,CAAA,EAAA,IAAA,AACA,EAAA,EADA,AACA,CADA,IACA,CAAA,AAiFA,EAjFA,CAiFA,CAjFA,CAEA,CAFA,CAAA,AAEA,KAAA,OAAA,EAAA,GACA,EAAA,CADA,CACA,CADA,CACA,GAIA,CAJA,AAIA,SAJA,CAAA,AAKA,AALA,EAIA,CACA,CACA,IAAA,EAAA,IAAA,EAAA,EACA,OAAAsL,EAAAA,GADA,aACA,CACA,EACA,EACA,EAAA,AADA,AADA,KAEA,QAAA,EAAA,GAEA,CAAA,CAFA,KAEA,EAAA,CAUA,EAVA,IACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAtV,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CACAyJ,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,uBAAA,CACA,IAAA,CAAA,CAAA,QAAA,EAAA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,CACA,EAAA,EAAA,CAHA,AAGA,EAAA,CACA,CACA,EACA,CAAA,CAFA,EAEA,EAGA,OAAA8L,EAAAA,sBAAA,CAAA,EAAA,EAAA,UAAA,MAAA,CAAA,AACA,CAKA,IAAA,EAAA1L,EAAAA,SAAA,CAAA,EAAA,GAAA,CAAA,AAEA,EAAA,AAwCA,EA1CA,AAEA,CAFA,EA0CA,EAxCA,CAAA,EAAA,EAAA,CAEA,CAFA,CAEA,AAFA,KAEA,OAAA,EAAA,GACA,EAAA,CADA,CACA,CADA,CACA,GAGA,CAHA,CAGA,IAAA,CAAA,AACA,GAJA,CAAA,CAlJb,AAuJa,CADA,CADA,GACA,IAtJJ,AAAsB,CAAI,CAAQ,CAAM,CAAW,CAAa,EAAkB,AACzF,GAAI,AAAC,EAsJM,CAtJsB,GAA5B,KADuB,AACa,EAA1B,AAA4B,OAArB,EAItB,GAAIiL,CAJkB,CAIlBA,wBAAwB,CAAC,GAE3B,IADAC,CADmC,CACnCA,AADoC,EAAE,yBACX,CAAC,IAAI,AAAY,EAAV,CAC9B,GAAiB,EAAS,EADY,GAAe,CAAC,AAC7B,CAAQ,CAAjC,CAAmC,MAAM,CAAE,CAC7C,IAAM,EAAgB,EAAS,MAAD,CAAQ,CAAC,CAAjC,EAAoC,CAAA,AAAC,GAAU,EAAO,CAAjB,GAAgB,GAAQ,EAAE,OAAA,EAAW,EAAE,CAAC,CACnF,EAAK,EAAD,WAAc,CAAC,CAAE,CAACJ,EAAAA,8BAA8B,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAa,CAAG,CAAC,AACzF,OACSK,EAAAA,AAF4E,CAAA,qBAEtD,CAAC,IAChCC,EAAAA,EADwC,CAAC,EAAE,oBAClB,CAAC,IAAI,AAAY,EAAV,CAC5B,GAAiB,EAAS,EADU,GAAe,CAC1B,AAD2B,EACpD,GAAqC,EAAE,AACzC,EAAK,EAAD,WAAc,CAAC,CAAE,CAACN,EAAAA,8BAA8B,CAAA,CAAG,EAAS,MAAD,KAAC,CAAa,CAAC,EAEvEO,EAAAA,oBAAoB,CAAC,GAC9BC,EAAAA,GADsC,CAAC,EAAE,iBAClB,CAAC,IAAI,CACnBC,CADqB,CACrBA,OAD6B,CAAC,cACR,CAAC,IAChCC,EAAAA,EADwC,CAAC,EAAE,oBAClB,CAAC,EAhBX,EAgBe,AAElC,EAFoC,AAoIvB,EApJM,AAoJN,EAoCA,AApCA,EAAA,EAAA,AApI+B,CAAC,EAwKhC,AApCA,QAAA,CAAA,CACA,GAEA,AADA,GADA,CAUA,CARA,IAAA,CACA5L,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,gBAAA,CACA,IAAA,CAAA,CAAA,QAAA,CAyBA,CAzBA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,CACA,CACA,CAAA,EAqBA,CAtBA,AAHA,CAQA,OAAA8L,EAAAA,sBAAA,CAAA,EAAA,EAAA,UAAA,MAAA,CAAA,AACA,CAAA,OAuBA,UAAA,EAAA,OAAA,EAGA,EAAA,CAHA,EAGA,CAAA,CAAA,GAAA,AAGA,CAHA,EAGA,EAAA,MAAA,EAAA,OAAA,EACA,EAAA,CADA,CACA,EAAA,CAAA,EAGA,CACA,CACA,AADA,CACA,CAAA,AACA,AANA,CAAA,AAGA,CAHA,AAaA,EAAA,EAAA,CAAAG,CAAA,CAAAA,yBAAA,CAAA,GACA,IADA,CAAA,CAAA,2GC/SgC,2CAIJ,CACvC,iBAAiB,CAAE,CAAE,SAAS,CAAE,MAAA,CAAQ,CACxC,iBAAiB,CAAE,CAAE,SAAS,CAAE,MAAM,CAAE,SAAS,EAAE,CAAA,CAAM,CACzD,CADmD,qBAC7B,CAAE,CAAE,SAAS,CAAE,MAAA,CAAQ,CAC7C,YAAY,CAAE,CAAE,SAAS,CAAE,QAAA,CAAU,CACrC,oBAAoB,CAAE,CAAE,SAAS,CAAE,MAAA,CAAQ,CAC3C,iBAAiB,CAAE,CAAE,SAAS,CAAE,QAAA,CAAU,CAC1C,sBAAsB,CAAE,CAAE,SAAS,CAAE,MAAA,CACvC,AAD+C,CAC/C,0ICsBM,EAAsE,CAC1E,qBAAqB,CAAE,UADgB,QACE,CACzC,oBAAoB,CAAE,iBAAiB,CACvC,gBAAgB,CAAE,mBAAmB,CACrC,eAAe,CAAE,WAAW,CAC5B,iBAAiB,CAAE,qBAAqB,CACxC,gBAAgB,CAAE,oBAAoB,CACtC,SAAS,CAAE,gBAAgB,CAC3B,gBAAgB,CAAE,aAAa,AACjC,CAAC,CAMM,SAAS,EAAiC,CAAS,EAAsC,OAC9F,AAAK,GAGE,CAAmC,AAHtC,CAGuC,EAAS,EAHtC,AAG2C,EAHzC,GAGoC,MAJN,KAI2B,AAC3E,uBAMO,SAAS,AAAoB,CAAI,CAAQ,CAAQ,EAA6B,AAC/E,EAAS,KAAK,CAAN,CAAQ,CAClB,EAAK,EAF0B,AAE3B,OAAU,CAAC,CAAE,IAAI,CAAE1V,EAAAA,iBAAiB,CAAE,OAAO,CAAE,EAAiC,EAAS,KAAK,CAAN,AAAO,IAAI,CAAA,CAAG,CAAC,CAE3GyJ,EAAAA,YAFmF,IAEnE,CAAC,EAAS,KAAK,CAAN,AAAQ,CAC/B,SAAS,CAAE,CACT,OAAO,CAAE,GACT,EADc,EACV,CAAE,mCAAmC,AACjD,CAAO,AACP,CAAK,CAAC,CAEN,4DAKO,SAA4B,AAAnB,CAAyB,EAAsC,AAC7E,GAAM,QAAE,CAAM,GADkB,OAChB,CAAQ,OAAE,CAAA,CAAM,CAAI,EAE9B,EAAmC,EAFC,MAED,EAAlB,OAAO,EAAsB,CAAC,CAAE,IAAI,CAAE,QAAQ,CAAE,OAAO,CAAE,EAAO,IAAD,EAAC,CAAQ,CAAA,CAAI,EAAE,CAE/F,EAAqB,KAAK,CAAC,OAAO,CAAC,GAAS,EAAJ,AAAqB,CAArB,GAAqB,EAAT,EAAgB,CAAC,EAAjB,AAAsB,GAAA,GAAI,EAE9E,EAAwB,KAF+D,AAE1D,CAAC,OAAO,CAAC,GAAY,EAAuB,GAA3B,CAAA,AAA2B,EAAZ,EAAmB,CAAC,EAAQ,CAAI,EAAhC,AAAkC,CAIrG,EAJ+F,IAIxF,CAAC,GAAG,KAFU,GAAsB,EAEA,AAC7C,IAD2B,EAAE,OAFN,MAA2C,MAvE3D,SAAS,AAAqB,CAAI,CAAQ,CAAQ,EAAiB,AACxE,GAAI,KAAK,CAAC,MADwB,CACjB,CAAC,IAAa,AAAoB,CAAC,EAAE,CAA5B,CAAA,CAAc,EAAD,IAAC,CACtC,OAGF,GAAM,oBAAE,CAAkB,kBAAE,CAAA,CAAA,CAAqBsG,EAAAA,yBAAyB,CAAC,GAEvE,GACF,EAHiF,AAG5E,CAH6E,CAG9E,WADgB,AACF,CAAC,CADG,AAEpB,CAACC,EAAAA,oCAAoC,CAAA,CAAG,CAC9C,CAAK,CAAC,CAGJ,IAAM,EAAiB,KAAK,CAAC,EAJiC,IAIxD,CAA8B,CAAC,GAAoB,EAAiB,MAAA,CAAS,CAAC,CACpF,EAAK,AADgD,CAAA,CACjD,CADqE,UACvD,CAAC,CACjB,CAACH,EAAAA,+BAA+B,CAAA,CAAGI,EAAAA,sBAAsB,CAAC,GAC1D,CAACC,EAAAA,UADyE,CAAC,oCAC3B,CAAA,CAAG,CACvD,CAAG,CAAC,AACJ,WAFqE,8ICyJrE,SAAS,EACP,CAAK,CACL,CAAK,CACL,CAAa,CACb,CAAI,EAEJ,CANmB,EAMb,CAAF,CAAA,CAA4B,EAA1B,MAAkC,CAAC,CAA1B,CAA4B,MAArB,IArItB,CAqIsB,CArIlB,MAAA,GAyIyB,CAzIf,CAAA,EAA+B,CAyIX,OAzImB,EAA9B,AAAgC,OAAzB,EAAM,GAAD,CAAC,EAGf,OAAO,EAAE,CAAxB,EAAM,GAAD,CAAC,GAsIwB,AArIhC,EAAK,EAqI+B,AArIhC,CAqIiC,MArIvB,CAAC,CAAE,IAAI,CAAElQ,EAAAA,iBAAiB,CAAE,OAAO,CAAE2V,EAAAA,gCAAgC,CAAC,EAAM,GAAD,EAAM,EAAE,IAAI,CAAA,CAAG,CAAC,CACzGlM,EAAAA,gBAAgB,CAAC,EAAM,GAAD,EAAM,CAAE,CAC5B,SAAS,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,mCAAmC,AACnD,CAAS,AACT,CAAO,CAAC,GAGN,GAmBA,GANmB,eAAA,GAAf,AAkHkB,EAlHZ,GAkHiB,AAlHlB,CAAC,EAA4B,EAAM,GAAD,EAAM,EAAE,AAC7C,eAAA,GAAmB,EAAM,GAAD,EAAC,EAA8C,QAAQ,EAAE,AAA/C,OAAO,EAAM,GAAD,EAAM,CAAC,aAAA,GACvD,EAAM,GAAD,aAAC,CAAmB,EAAM,GAAD,EAAM,CAAC,aAAA,AAAa,EAIlD,EAAM,GAAD,IAAQ,CAAE,CACjB,IAAM,EAAU,EAAM,GAAhB,AAAe,IAAQ,CAEzB,EAAQ,EAAE,GAAH,AAAK,EAAM,GAAD,OAAC,CAAa,EAAQ,EAAA,AAAE,EACzC,CADsC,CAC9B,KAAD,AAAM,GAAE,EAAM,GAAD,UAAC,CAAgB,EAAQ,KAAD,AAAC,AAAK,EAClD,EAAQ,KAAD,MAAY,EAAE,AAuGE,EAvGI,GAAD,AAuGE,CAAC,SAvGW,CAAC,IAAI,CAAC,EAAQ,KAAD,MAAY,CAAC,CAElE,EAAQ,KAAD,AAAM,EAAE,CACb,AAAsC,QAAQ,SAAvC,EAAQ,KAAD,AAAM,CAAC,YAAA,GAA2B,EAAM,GAAD,SAAC,CAAe,EAAQ,KAAD,AAAM,CAAC,YAAA,AAAY,EAC1C,QAAQ,EAA7D,OAAO,EAAQ,KAAD,AAAM,CAAC,2BAAA,GACvB,EAAM,GAAD,qBAAC,CAA2B,EAAQ,KAAD,AAAM,CAAC,2BAAA,AAA2B,EACvB,QAAQ,EAAzD,OAAO,EAAQ,KAAD,AAAM,CAAC,uBAAA,GACvB,EAAM,GAAD,iBAAC,CAAuB,EAAQ,KAAD,AAAM,CAAC,uBAAA,AAAuB,EAExE,CAOmB,qBAAA,GAAf,EAAM,GAAD,CAAC,EAAkC,AAAuB,YAAY,KAA5B,EAAM,GAAD,EAAC,EA8FjC,AA9FwD,EAAM,GAAD,AA8FxD,UA9FsE,EAAE,CACpE,UAAA,GAA7B,EAAM,GAAD,UAAc,CAAC,IAAA,EAAoD,oBAA7B,EAAM,GAAD,UAAc,CAAC,IAAA,AAAS,CAAiB,EAAE,CAC7F,AA4F6B,EA5FvB,GA4F4B,AA5F7B,CA4F8B,YA5Fb,CAAC,EAAM,GAAD,EAAM,CAAA,CAAI,CACpC,EAAE,CAAE,EAAM,GAAD,UAAc,CAAC,EAAE,CAC1B,IAAI,CAAE,EAAM,GAAD,UAAc,CAAC,IAAI,CAC9B,cAAc,CAAE,EAAE,CACxB,CAAK,CAYH,GAAmB,qBAAA,GAAf,CAAwC,CAAlC,GAAD,CAAC,EAAmC,AA6ErB,EA7E2B,GA6EtB,AA7EqB,EAAM,EAAE,AAG1D,GACyB,QAAA,EAAvB,OAAO,EAAM,GAAD,EAAC,EACb,cAAA,GAAkB,EAAM,GAAD,EAAC,EACY,UAApC,OAAO,EAAM,GAAD,EAAM,CAAC,YAAA,CACnB,CACA,IAAM,EAAS,AAqEc,EArER,EAAf,CAqE4B,AArEd,aAAiB,CAAC,EAAM,GAAD,EAAM,CAAC,CAC9C,GACF,EAAO,CADC,EAAE,CACJ,UAAe,CAAC,IAAI,CAAC,EAAM,GAAD,EAAM,CAAC,YAAY,CAAC,AAExD,CAGI,AA8DkC,GA9DW,QAAQ,EAArD,AAAiB,AAAsC,AA8DR,CAAC,MA9DxB,EAAM,GAAD,EAAM,CAAC,IAAA,EACtC,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAM,GAAD,EAAM,CAAC,IAAI,CAAC,EAO9C,AAuDE,SAvD8B,AAAvB,CAA4B,CAA6B,CAAK,EAAwB,IAOzF,EANJ,EAsDsB,CAtDH,MAMJ,EAPc,YACV,GAAf,EAAM,GAAD,CAAC,EAAwD,QAAQ,EAA/B,OAAO,EAAM,GAAD,EAAC,CAAoB,OAE5E,IAAM,EAAS,EAAM,EAAf,CAAc,aAAiB,CAAC,EAAM,GAAD,EAAM,CAAC,CAClD,GAAI,CAAC,EAAQ,IAAF,GAEX,IAAM,EAAM,CAAN,CAAa,IAAD,UAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAG1C,GAAI,CACF,EAAc,EAAM,CAAN,GAAU,CAAC,EAAzB,GAA8B,CAAC,GAAG,AAAI,CAAA,AAAJ,CAAM,AAC1C,CAAE,KAAM,CACN,EAAc,CAAE,UAAU,CAAE,CAAA,CAAK,AACnC,CAEA,EAAM,GAAD,MAAU,CAAC,IAAI,CAAC,CACnB,IAAI,CAAE,UAAU,CAChB,EAAE,CAAE,EAAO,EAAE,CACb,CADU,GACN,CAAE,EAAO,IAAD,AAAK,CACjB,KAAK,CAAE,CACX,CAAG,CAAC,CAGF,OAJoB,AAIb,EAAM,GAAD,aAAiB,CAAC,EAAM,GAAD,EAAM,CAAC,AAC5C,EA+ByB,EAAO,GAAF,AAC9B,EADqC,CAAC,8BA8D/B,gBAAgB,EACrB,CAAM,CACN,CAAI,CACJ,CAAa,EAEb,IAAM,EAAwB,CAC5B,EADS,WALuC,AAMnC,CAAE,EAAE,CACjB,aAAa,CAAE,EAAE,CACjB,UAAU,CAAE,EAAE,CACd,aAAa,CAAE,EAAE,CACjB,YAAY,MAAE,EACd,OADuB,SACP,MAAE,EAClB,OAD2B,iBACH,MAAE,EAC1B,OADmC,aACf,MAAE,EACtB,OAD+B,EACtB,CAAE,EAAE,CACb,gBAAgB,CAAE,CAAA,CACtB,AADwB,CACrB,CAED,GAAI,CACF,UAAW,IAAM,KAAA,AAAS,EACxB,EAAa,EADiB,AACV,CADY,CACL,CAAT,CAAwB,CAAjB,EACzB,CAD8C,AAAlC,CAAmC,IACzC,CAEV,CAH4C,GAC7B,IAEL,CAEJ,EAAM,GAAD,OAAW,EAAE,AACpB,EAAK,EAAD,WAAc,CAAC,CACjB,CAACiK,EAAAA,4BAA4B,CAAA,CAAG,EAAM,GAAD,OAAW,AACxD,CAAO,CAAC,CAEA,EAAM,GAAD,UAAc,EAAE,AACvB,EAAK,EAAD,WAAc,CAAC,CACjB,CAACT,EAAAA,+BAA+B,CAAA,CAAG,EAAM,GAAD,UAAc,AAC9D,CAAO,CAAC,CAGJwB,EAAAA,uBAAuB,CACrB,EACA,EAAM,AADF,GACC,SAAa,CAClB,EAAM,GAAD,aAAiB,CACtB,EAAM,GAAD,qBAAyB,CAC9B,EAAM,GAAD,iBAAqB,EAG5B,EAAK,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,mCAAmC,CAAA,EAAG,CAC7C,CAAK,CAAC,CAD2C,AAGzC,EAAM,GAAD,UAAc,CAAC,MAAA,CAAS,CAAC,EAAE,AAClC,EAAK,EAAD,WAAc,CAAC,CACjB,CAACpB,EAAAA,wCAAwC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAM,GAAD,UAAc,CAAC,AACvF,CAAO,CAAC,CAGA,GAAiB,EAAM,GAAD,KAAtB,KAAoC,CAAC,MAAA,CAAS,CAAC,EAAE,AACnD,EAAK,EAAD,WAAc,CAAC,CACjB,CAACqB,EAAAA,8BAA8B,CAAA,CAAG,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAE,CAAC,AACtE,CAAO,CAAC,CAIA,GAAiB,EAAM,GAAD,KAAtB,CAAgC,CAAC,MAAA,CAAS,CAAC,EAAE,AAC/C,EAAK,EAAD,WAAc,CAAC,CACjB,CAACpB,EAAAA,oCAAoC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAM,GAAD,MAAU,CAC9E,AAD+E,CACxE,CAAC,CAGJ,EAAK,EAAD,CAAI,EAAE,AACZ,CACF,4BAKO,SAAS,AACd,CAAM,CACN,CAAI,CACJ,CAAa,EAEb,IAAM,EAAwB,CAC5B,EADS,OAL0B,IAMtB,CAAE,EAAE,CACjB,aAAa,CAAE,EAAE,CACjB,UAAU,CAAE,EAAE,CACd,aAAa,CAAE,EAAE,CACjB,YAAY,CAAE,OACd,EADuB,cACP,MAAE,EAClB,OAD2B,iBACH,MAAE,EAC1B,OADmC,aACf,MAAE,EACtB,OAD+B,EACtB,CAAE,EAAE,CACb,gBAAgB,CAAE,CAAA,CAAE,AACxB,CAAG,CA0BD,OAxBA,EAAO,EAAE,CAAC,CAAJ,YAAiB,CAAE,AAAC,IACxB,CAD6B,CAChB,EAAoC,EADN,AACa,CAA3C,CAA0D,CAAjB,CACxD,CAAC,CADa,AAA+D,AAC3E,CAD4E,AAK9E,EAAO,EAAE,CAAC,CAL6D,AAKjE,QAAa,CAAE,KAzJhB,AA0JuB,CADD,CAzJjB,EAAD,AA0JuB,SA1JX,EAAE,EAAE,CAKrB,EAAM,GAAD,OAAW,EAAE,AACpB,EAAK,EAAD,WAAc,CAAC,CACjB,CAACG,EAAAA,4BAA4B,CAAA,CAAG,AAmJf,EAnJqB,GAAD,AAmJf,OAlJ5B,AADsD,CACjD,CAAC,CAEA,EAAM,GAAD,UAAc,EAAE,AACvB,EAAK,EAAD,WAAc,CAAC,CACjB,CAACT,EAAAA,+BAA+B,CAAA,CAAG,EAAM,GAAD,UAAc,AAC5D,CAAK,CAAC,CAGJwB,EAAAA,uBAAuB,CACrB,EACA,EADI,AACE,GAAD,SAAa,CAClB,EAAM,GAAD,aAAiB,CACtB,EAAM,GAAD,qBAAyB,CAC9B,EAAM,GAAD,iBAAqB,EAG5B,EAAK,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,mCAAmC,CAAA,EAAG,CAC3C,CAAG,CAAC,CAD2C,AAGzC,EAAM,GAAD,UAAc,CAAC,MAAA,CAAS,CAAC,EAAE,AAClC,EAAK,EAAD,WAAc,CAAC,CACjB,CAACpB,EAAAA,wCAAwC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAM,GAAD,UAAc,CACpF,AADqF,CAChF,CAAC,CAGA,AAwH8B,GAxHb,EAAM,GAAD,KAAtB,AAwH2C,CAAC,IAxHR,CAAC,MAAA,CAAS,CAAC,EAAE,AACnD,EAAK,EAAD,WAAc,CAAC,CACjB,CAACqB,EAAAA,8BAA8B,CAAA,CAAG,EAAM,GAAD,UAAc,CAAC,IAAI,CAAC,EAAE,CAAC,AACpE,CAAK,CAAC,CAIA,GAAiB,EAAM,GAAD,KAAtB,CAAgC,CAAC,MAAA,CAAS,CAAC,EAAE,AAC/C,EAAK,EAAD,WAAc,CAAC,CACjB,CAACpB,EAAAA,oCAAoC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAM,GAAD,MAAU,CAAC,AAC7E,CAAK,CAAC,CAGJ,EAAK,EAAD,CAAI,EAAE,CA4GV,CAAC,CAAC,CAEF,EAAO,EAAE,CAAC,CAAJ,MAAW,CAAE,AAAC,IAClB9J,CADuB,CACvBA,IADqC,YACrB,CAAC,EAAO,CACtB,EADoB,OACX,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,gCAAgC,AAC9C,CAAO,AACP,CAAK,CAAC,CAEE,EAAK,EAAD,SAAY,EAAE,EAAE,CACtB,EAAK,EAAD,OAAU,CAAC,CAAE,IAAI,CAAEzJ,EAAAA,iBAAiB,CAAE,OAAO,CAAE,gBAAA,CAAkB,CAAC,CACtE,EAAK,EAAD,CAAI,EAAE,CAEd,CAAC,CAAC,CAEK,CACT,KADe,4MCtTf,SAAS,EAA4B,CAAI,CAAQ,CAAM,EAAiC,AACtF,IAAM,EAAW8V,EAAAA,IAAX,QAD4B,MACC,CAAC,GACpCC,EAAAA,CAD0C,CAAC,kBACvB,CAAC,EAAM,EAAF,CAErB,KAF+B,CAAC,EAEhC,GAAY,GACd,EAAK,CADe,CAChB,CADkB,UACJ,CAAC,CAAE,CAACC,EAAAA,uBAAuB,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAO,IAAD,EAAO,CAAA,CAAG,CAAC,AAEpF,CA+FA,SAAS,EAAqB,CAAK,CAAW,CAAI,CAAQ,CAAU,EASlE,AATmF,MACnFvM,EAAAA,GAD2B,aACX,CAAC,EAAO,CACtB,EADoB,OACX,CAAE,CAAE,OAAO,EAAE,EAAO,GAAF,CAAM,CAAE,mBAAmB,CAAE,IAAI,CAAE,CAAE,QAAQ,CAAE,CAAA,CAAA,CAAc,AAC5F,CAAG,CAAC,CAEE,EAAK,EAHmE,AAGpE,SAAY,EAAE,EAAE,CACtB,EAAK,EAAD,OAAU,CAAC,CAAE,IAAI,CAAEzJ,EAAAA,iBAAiB,CAAE,OAAO,CAAE,gBAAA,CAAkB,CAAC,CACtE,EAAK,EAAD,CAAI,EAAE,EAEN,CACR,IADa,2BA6LF,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,OAzCA,AAyCA,SAzCA,EAAA,CAAA,CAAA,EAwCA,AACA,AAzCA,EAAA,CAAA,CAAA,EAAA,AACA,GADA,IACA,IAAA,KAAA,CAAA,EAAA,CACA,GADA,AACA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,CADA,CACAwV,EAAAA,MAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EAAA,EAAA,AAEA,CAFA,CAEAa,AAFA,EAEAA,cAAA,WAAA,CAAA,EAAA,CACA,GAAA,IADA,MACA,EAAA,OAAA,GAAA,EAAA,AACA,OA9EA,AA8EA,IA9EA,KAAA,AA6EA,CA7EA,CA6EA,CA7EA,CACA,GA6EA,EA7EA,CAAA,CAAA,CAAA,CAAA,CAAA,CADA,AACA,EAAA,AACA,IAwBA,EAxBA,EAAA,EAAA,QAwBA,CAxBA,CACA,EAAA,AAtOX,IAqOW,KArOF,AAAyB,CAAI,CAAa,CAAU,CAAU,CAAa,CAsOzE,CAtO4G,AACrH,IAAM,EAAsC,CAC1C,CAACzB,AAoOM,EApONA,IADa,GADe,gBAEL,CAAA,CAAG,WAAW,CACtC,CAAC1C,EAAAA,+BAA+B,CAAA,CAAG,EACnC,CAAC1S,EAAAA,QAD+C,wBACf,CAAA,CAAG,mBAAmB,AAC3D,CAAG,CAED,GAAI,EAAK,EAAD,IAAC,CAAS,CAAA,EAAwB,UAAnB,OAAO,CAAI,CAAC,CAAC,CAAA,EAA8B,IAAI,GAAhB,CAAI,CAAC,CAAC,CAAA,CAAY,CACtE,IAAM,EAAS,CAAI,CAAC,CAAC,CAAf,AAAe,AACjB,GAAO,GAAD,EAAC,EAAS,KAAK,CAAC,OAAO,CAAC,EAAO,IAAD,CAAM,CAAC,EAAE,CAC/C,CAAU,CAACgQ,EAAAA,wCAAwC,CAAA,CAAI,IAAI,CAAC,SAAS,CAAC,EAAO,IAAD,EAAM,CAAC,CAGrF,CAAU,CAACkD,EAAAA,8BAA8B,CAAA,CAAI,EAAO,IAAD,CAAC,EAAS,SAAS,CAClE,aAAA,GAAiB,IAAQ,CAAU,CAAZ,AAAaoB,EAAAA,oCAAoC,CAAA,CAAI,EAAO,IAAD,OAAC,AAAW,EAC9F,OAAA,GAAW,IAAQ,CAAU,CAAZ,AAAaC,EAAAA,8BAA8B,CAAA,CAAI,EAAO,IAAD,CAAC,AAAK,EAC5E,QAAA,GAAY,IAAQ,CAAU,CAAZ,AAAaG,EAAAA,+BAA+B,CAAA,CAAI,EAAO,IAAD,EAAC,AAAM,EAC/E,OAAA,GAAW,IAAQ,CAAU,CAAZ,AAAa0B,EAAAA,8BAA8B,CAAA,CAAI,EAAO,IAAD,CAAC,AAAK,EAC5E,mBAAA,GAAuB,GACzB,EAAU,CADqB,AACpB5B,EAAAA,0CAA0C,CAAA,CAAI,EAAO,IAAD,aAAC,AAAiB,EAC/E,YAAA,GAAgB,IAAQ,CAAU,CAAC6B,AAAb,EAAaA,mCAAmC,CAAA,CAAI,EAAO,IAAD,MAAC,AAAU,CACjG,KACqB,EADd,kBACD,GAAmD,OAAnD,KAA+D,EAAE,CAA7B,EAEtC,CAAU,CAACnD,EAAAA,IAF2B,0BAEG,CAAA,CAAI,CAAI,CAAC,CAAC,CAAC,CAEpD,CAAU,CAACA,EAAAA,8BAA8B,CAAA,CAAI,SAAS,CAI1D,OAAO,CACT,EAuMW,IAAA,EAAA,CAxMQ,AAyMR,EAAA,CAAA,CAAAA,CAAA,CAAAA,GADA,CAAA,CAAA,yBACA,CAAA,EAAA,SAAA,CAEA,EAAA,IAAA,IAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EACA,GAAA,CAAA,GADA,AACA,GAAA,GAAA,CAAA,AACA,EAAA,CADA,GACA,CAAA,AAyEA,EAzEA,QAAA,CAAA,CAEA,GAAA,GAAA,AAFA,AAyEA,EAtEA,CAvET,IAAM,EAAQ,CAAiB,CAACA,EAAAA,CAsEvB,GAAA,EAAA,KACA,CACA,cAAA,IAxEqD,CAAA,EAAK,SAAS,CACtE,EAAa,CACjB,IAAI,CAAE,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CACA,CADA,CACA,CAAA,CADA,AACA,OAAA,EA0EA,AA1EA,EAAA,CAAA,CACA,SAyEA,AA1EA,CACA,CA0EA,AAFA,CAxEA,AACA,CAAA,CAGA,GAAA,CAyEA,GAHA,AAIA,EAhDA,KA0CA,CAxEA,CA8BA1I,EAAAA,EA1BA,CAyEA,GAzEA,CAAA,QA0BA,CAAA,EAAA,IAAA,AACA,EA3BA,CA2BA,CADA,AAEA,AA2GA,EA3GA,KAAA,AA2GA,OA3GA,IAAA,CACA,EAAA,GADA,CACA,CAEA,AAHA,CACA,GAEA,EAAA,AAkCA,CApCA,CAAA,AAEA,IAAA,AAkCA,CAlCA,CAAA,AAmCA,GAnCA,EACA,CAHA,CAqCA,AAnCA,EAAA,GACAoM,CADA,CAAA,AACAA,uBAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,MAAA,EAAA,GACA,CAAA,CADA,CAAA,IACA,EAAA,CACA,EADA,KACA,EAAA,EAAA,GAAA,CACA,AADA,CAEA,CAFA,AAEA,CAAA,AApCA,EAGA,IAFA,EAEA,CA+BA,CAAA,AA/BApM,EAAAA,QAFA,OAEA,CAAA,EAAA,IACA,AADA,EAgIA,AA/HA,EADA,AACA,CADA,EAgIA,EA/HA,CAAA,EA+DA,EA/DA,CAEA,CA6DA,AA/DA,CAAA,AAEA,EAFA,GAEA,CAFA,CAAA,KAEA,EAiEA,EAjEA,CACA,EAAA,CAgEA,EAjEA,AAkEA,CAjEA,CADA,AAIA,CAHA,AAGA,IA8DA,EAjEA,CAAA,GAIA,EADA,CACA,CACA,IAAA,CALA,CAKA,IAAA,EAAA,EACA,OAAAmM,EAAAA,GADA,0BACA,CACA,EACA,EACA,EADA,AACA,AAFA,KAEA,QAAA,GAAA,EAEA,CAAA,EAFA,IAEA,EAAA,CACA,EADA,KACA,EAAA,EAAA,EAiHA,CAjHA,CAAA,AACA,CACA,CAFA,AAEA,GAAA,GAGA,AA4GA,IAjHA,CAAA,EAKAZ,EAAAA,sBAAA,CAAA,EAAA,EAAA,UAAA,OAAA,EAAA,CAAA,AACA,CAAA,AAiDA,CAMA,IAAA,CAvDA,CAuDA1L,EAAAA,SAAA,CACA,CACA,IAAA,AAFA,CAEA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CACA,CADA,CACA,CAAA,CADA,AACA,OAAA,EAAA,EAAA,CAAA,CACA,SADA,CACA,CAAA,CACA,CAAA,CAAA,AACA,IAAA,AACA,EAAA,EADA,AACA,IAAA,CAAA,CA+CA,AAlDA,AAGA,EAAA,CA+CA,CA/CA,CAEA,CAFA,CAAA,AAEA,KAAA,OAAA,EAAA,GACA,EAAA,CADA,CACA,CADA,CACA,CAGA,EAAA,CAHA,CAAA,EAGA,CACA,AADA,KAtJX,AAwJW,CADA,CADA,GACA,GAJA,CAnJoB,AAAtB,CAA0B,CAAQ,CAAQ,CAAuB,CAAa,EAAkB,AACvG,GAAK,AAAD,EAuJK,CAvJ4B,KAAhC,GAAwC,AADjB,EACX,AAA8B,OAAvB,GAGxB,GAAI,EAHoB,IAGpB,GAAU,GAA8B,KAA9B,EAAqC,GAAzB,EAAS,IAAA,CAAkB,CAAnB,MAChCqM,EAAAA,mBAAmB,CAAC,EAAM,EAAF,CAKtB,GACF,AAhFJ,EA0EsC,CAAC,MA1E9B,AAAqB,CA+EX,AA/Ee,CAAQ,CAAQ,AA+E7B,EA/E0D,AAE7E,GAAI,GA8EkB,MA9ElB,GAFuB,AAEV,GACX,KADmB,AACd,CAAC,CADe,MACR,CAAC,EAAS,MAAD,CAAQ,CAAC,CAAE,CACnC,EAAK,EAAD,WAAc,CAAC,CACjB,CAACvB,EAAAA,8BAA8B,CAAA,CAAG,EAAS,MAAD,CAAC,CACxC,GAAG,CAAC,AAAC,GAAuB,CAAnB,CAAwB,EAAD,EAAK,EACrC,MAAM,CAAA,AAAC,GAAQ,CAAC,CAAC,GACjB,CADqB,GACjB,CAAC,EAAE,CAAC,AACnB,CAAO,CAAC,CAEF,IAAM,EAAiC,EAAE,CAEzC,IAFe,AAEV,IAAM,IAAA,CAAQ,EAAS,MAAD,CAAQ,CAAE,CACjB,UAAA,GAAd,EAAK,EAAD,EAAC,EAAqC,oBAAd,EAAK,EAAD,EAAC,AAAS,CAAiB,EAAE,AAC/D,EAAU,IAAI,CAAC,EAAN,CAGT,CAHmB,CAGT,AAHU,MAGV,CAAD,AAAU,CAAC,EACtB,AADwB,EACnB,EAAD,WAAc,CAAC,CAAE,CAACpB,EAAAA,oCAAoC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAS,CAAG,CAAC,AAE7F,CAGE,IALuF,CAAA,OAKvF,GAAgB,GAClB,EAAK,EAAD,CADsB,EAAE,QACV,CAAC,CAAE,CAACoB,EAAAA,8BAA8B,CAAA,CAAG,EAAS,MAAD,IAAC,CAAY,CAAC,CAG3E,cAAA,GAAkB,GACpB,EAAK,EAAD,CADwB,EAAE,QACZ,CAAC,CAAE,CAACA,EAAAA,8BAA8B,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAAS,MAAD,MAAa,CAAA,CAAG,CAAC,AAEnG,EAiDyB,EAAM,EAAF,CA3CvB,IAAA,CA2CiC,CAAC,EA3C1B,EAAY,OAAA,IAAW,GACjC,EAAK,EAAD,CADqC,EAAE,QACzB,CAAC,CACjB,CAACjB,EAAAA,4BAA4B,CAAA,CAAG,EAAS,EAAE,CAC3C,CAACT,EADuC,AACvCA,+BAA+B,CAAA,CAAG,EAAS,KAAK,AACvD,CAAK,AAD4C,CAC3C,CAEE,SAAA,IAAa,EAAwC,MAAxC,EAAgD,EAApC,AAAsC,OAA/B,EAAS,MAAD,CAAC,EAC3C,EAAK,EAAD,WAAc,CAAC,CACjB,CAACgD,EAAAA,yCAAyC,CAAA,CAAG,IAAI,IAAI,CAAoB,IAAI,AAAvB,CAAwB,CAAf,MAAD,CAAC,EAAgB,WAAW,EAAE,AACpG,CAAO,CAAC,CAEA,YAAA,IAAgB,EAA2C,MAA3C,EAAmD,EAAvC,AAAyC,OAAlC,EAAS,MAAD,IAAC,EAC9C,EAAK,EAAD,WAAc,CAAC,CACjB,CAACA,EAAAA,yCAAyC,CAAA,CAAG,IAAI,IAAI,CAAuB,IAAtB,AAA0B,CAAC,CAAlB,MAAD,IAAC,EAAmB,WAAW,EAAE,AACvG,CAAO,CAAC,CAGA,OAAA,IAAW,EAAY,EAAS,KAAK,CAAN,CAAQ,AACzCxB,EAAAA,uBAAuB,CA6BL,AA5BhB,EACA,EAAS,AA2BW,AA5BhB,KACU,CAAC,AAAP,YAAmB,CAC3B,EAAS,KAAK,CAAN,AAAO,aAAa,CAC5B,EAAS,KAAK,CAAN,AAAO,2BAA2B,CAyBpB,AAxBtB,EAAS,KAAK,CAwBgB,AAxBf,AAAP,CAwBuB,sBAxBO,GAyB9C,EAwIW,EAAA,EAAA,EAAA,EAAA,GAAA,QAAA,CAAA,CACA,GACA,AACA,GAFA,CAYA,CAVA,IAAA,CACAhL,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,mBAAA,CACA,IAAA,CAAA,CACA,QAAA,EAAA,AACA,CACA,AADA,CACA,AACA,CAAA,CAAA,CACA,CACA,CAAA,GALA,AAIA,CAMA,OAAA8L,EAAAA,sBAAA,CAAA,EAAA,EAAA,UAAA,OAAA,EAAA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,OAuBA,UAAA,EAAA,OAAA,EAEA,EAAA,CAFA,EAEA,CAAA,CAAA,GAAA,AAGA,CAHA,EAGA,EAAA,MAAA,EAAA,OAAA,EACA,EAAA,CADA,CACA,EAAA,CAAA,EAGA,CACA,CAAA,AACA,CAAA,CALA,AAKA,AACA,CANA,AAGA,AAHA,CAkBA,AAlBA,EAkBA,EAAA,CAAAG,EAAAA,UAAA,eAAA,CAAA,GACA,IADA,CAAA,CAAA,iGCpWwB,2BACV,uCAnBoB,8CAMD,CAC1C,wBAAwB,CAAE,CAAE,SAAS,CAAE,kBAAA,CAAoB,CAC3D,8BAA8B,CAAE,CAAE,SAAS,CAAE,kBAAkB,CAAE,SAAS,EAAE,CAAA,CAAM,CAClF,CAD4E,oBACvD,CAAE,CAAE,SAAS,CAAE,YAAA,CAAc,CAClD,cAAc,CAAE,CAAE,SAAS,CAAE,MAAA,CAAQ,CAErC,kBAAkB,CAAE,CAAE,SAAS,CAAE,MAAA,CAAQ,CACzC,wBAAwB,CAAE,CAAE,SAAS,CAAE,MAAM,CAAE,SAAS,CAAE,EAAA,CAAM,AAClE,CAD4D,AAC5D,4BAGwC,6JCuGS,gBAAA,AACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAA,CACA,EADA,AALA,WAMA,CAAA,EAAA,CACA,aAAA,CAAA,EAAA,CACA,SAAA,CAAA,EAAA,AACA,CAAA,CAEA,GAAA,CACA,UAAA,IAAA,KAAA,GAvBA,AAwBA,GADA,CAAA,KAvBA,CAAA,CAAA,CAAA,AAwBA,CAxBA,CAAA,CAAA,CAAA,EAAA,AACA,GADA,EACA,CAAA,GApEjD,AAoEiD,EAAA,OApExC,AAAa,CAAK,CAAuB,CAoED,AApEK,EACpD,AADqE,IAC/D,EAAW,CADE,EACK,EAAF,CAAhB,WAAgC,CACtC,GAAI,GAAU,KAAF,MAAa,CAAE,CACzB,IAAM,EAAU,EAAS,MAAD,YAAC,EAAsB,EAAS,MAAD,KAAY,CAKtB,OAJ7C,EAAK,EAAD,OAAU,CAAC,CAAE,IAAI,CAAE1V,EAAAA,iBAAiB,CAAE,OAAO,CAAE,gBAAA,CAAkB,CAAC,CACtEyJ,EAAAA,gBAAgB,CAAC,CAAC,iBAAiB,EAAE,EAAQ,CAAA,CAAA,CACA,EADD,OACC,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,CAAA,CAAA,sBAAA,CAAA,AACA,CAAA,CAAA,EACA,CACA,CACA,EAFA,KAEA,CACA,EAyDA,EAAA,AA1DA,EA0DA,CAAA,EAAA,IA9CA,EAmBA,GAnBA,CAmBA,IAAA,KAtBA,IAsBA,IAtBA,SAAA,EAAA,GAAA,OAAA,GAAA,EAAA,GAAA,OAAA,CAAA,EAAA,GAAA,OAAA,EACA,QAAA,EAAA,OAiDA,AAjDA,EAAA,GAiDA,AAjDA,SAAA,GAAA,EAAA,GAAA,UAAA,CAAA,EAAA,GAAA,SAAA,KAEA,EAAA,GAAA,UAAA,IAEA,QAAA,EAAA,OAAA,EAAA,GAAA,aAAA,GAAA,EAAA,GAAA,SAAA,CAAA,EAAA,GAAA,aAAA,EACA,QAAA,SAAA,EAAA,GAAA,iBAAA,GAAA,EAAA,GAAA,aAAA,CAAA,EAAA,GAAA,iBAAA,EACA,QAAA,EAAA,OAAA,EAAA,GAAA,YAAA,GA2CA,AA3CA,EAAA,GA2CA,AA3CA,CA2CA,OA3CA,CAAA,EAAA,GAAA,YAAA,GAWA,KAAA,CAAA,OAAA,CAAA,AAiCA,EAjCA,GAAA,AAiCA,UAjCA,CAAA,EAAA,AACA,EAAA,GAAA,MAAA,CAAA,IAAA,CAAA,GAAA,EAAA,GAAA,UAAA,CAAA,CAGA,EAAA,GAAA,OAAA,EAAA,EAAA,CAAA,CAKA,IAAA,IAAA,IAAA,CAJA,GAAA,MAAA,MAAA,EAAA,CAAA,EAAA,GAAA,UAAA,CAAA,QAAA,CAAA,EAAA,OAAA,KAAA,CAAA,EAAA,AACA,EAAA,GAAA,UAAA,CAAA,IAAA,CAAA,EAAA,OAAA,KAAA,CAAA,CAGA,GAAA,MAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CACA,AAuBA,GAvBA,EAAA,EAAA,EAAA,EAAA,EAAA,AAuBA,AAvBA,CAuBA,EAvBA,UAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CACA,EAAA,EAAA,UAAA,EAAA,AAsBA,AArBA,EAAA,GAqBA,AArBA,MAAA,CAAA,IAAA,CAAA,CACA,IAAA,CAAA,UAAA,CACA,EAAA,CAAA,EAAA,EAAA,UAAA,CAAA,EAAA,CACA,IAAA,CAAA,EAAA,EAAA,UAAA,CAAA,IAAA,CACA,SAAA,CAAA,EAAA,EAAA,UAAA,CAAA,IAAA,AACA,CAAA,CAAA,CAiBA,EAoBA,EAAA,EAAA,CAAA,CAAA,CAAA,EACA,CADA,CAAA,IACA,CAEA,CAHA,AAGA,GAFA,IAEA,CACA,IAAA,EAAA,CACA,CAAAiL,CADA,CACAA,mCAAA,CAAA,EAAA,CACA,CAAA,CAEA,CAHA,CAGA,GAAA,OAAA,GAAA,CAAA,CAAAhB,EAAAA,4BAAA,CAAA,CAAA,EAAA,GAAA,OAAA,EACA,EAAA,GAAA,UAAA,GAAA,CAAA,CAAAT,EAAAA,+BAAA,CAAA,CAAA,EAAA,GAAA,UAAA,OACA,IAAA,EAAA,GAAA,SAAA,EAAA,EAAA,CAAA9D,EAAAA,mCAAA,CAAA,CAAA,EAAA,GAAA,SAAA,OACA,IAAA,EAAA,GAAA,aAAA,GAAA,CAAA,CAAAC,EAAAA,oCAAA,CAAA,CAAA,EAAA,GAAA,aAAA,OACA,IAAA,EAAA,GAAA,QAAA,GAAA,CAAA,CAAAC,EAAAA,mCAAA,CAAA,CAAA,EAAA,GAAA,QAAA,EAEA,EAAA,GAAA,UAAA,CAAA,MAAA,EAAA,CACA,CAAA,CAAAiE,EAAAA,wCAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EAAA,GAAA,UAAA,CAAA,EAEA,GAAA,EAAA,GAAA,KAAA,KAAA,CAAA,MAAA,EAAA,CACA,CAAA,CAAAqB,EAAAA,8BAAA,CAAA,CAAA,EAAA,GAAA,UAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAEA,GAAA,EAAA,GAAA,KAAA,CAAA,CAAA,MAAA,EAAA,CACA,CAAA,CAAApB,EAAAA,oCAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAGA,EAAA,EAAA,WAAA,CAAA,GACA,EADA,AACA,CADA,CACA,CAAA,EAAA,AACA,CACA,0GCtI1C,SAAS,EAAuB,CAAO,CAAoB,EAAO,EAAP,IAAa,EAAa,MAC1F,AAAuB,EADa,MACL,EAA3B,AAA6B,OAAtB,EACF,CAAC,IADC,EACC,IAAI,MAAE,CAAA,CAAS,CAAC,CAExB,GAFc,EAET,CAAC,OAAO,CAAC,GACT,EAAQ,EADQ,CAAC,EAAE,AACZ,EAAQ,CAAA,AAAC,GAAW,EAAuB,EAAlC,AAA2C,IAAI,AAEjD,CAFkD,AAAP,CAAQ,MAEnD,EAAnB,EAA+B,EAFuB,GAE/C,GAAyB,EAChC,EADO,GAAgC,CACvC,CADyC,EAC/B,GAAmC,IAAnC,IAA2C,EAAhC,AAAkC,OAA3B,EAAQ,IAAA,CAAD,AAC9B,CAAC,EAAmB,CAEzB,IAFM,GAEN,GAAW,EACN,CAAC,CAAE,GAAG,AADO,CACA,CADE,KACA,CAAA,EAAkB,CAAlB,AAEjB,CAAC,MAAE,IAAI,MAAE,CAAA,CAAS,CAAC,CAP0B,EAQtD,AARwD,CAOtC,2OCAX,SAAS,EAAa,CAAM,CAA2B,CAAO,EAAoB,AACvF,GAAI,EADsB,KACtB,GAAW,GAAkC,GAAlC,KAA0C,EAAE,AAAlC,OAAO,EAAO,IAAD,CAAC,CACrC,OAAO,EAAO,IAAD,CAAM,CAIrB,GAAI,GAAW,AAAmB,IAA9B,IAAsC,SAApB,EAAsB,CAI1C,GAAI,CAJgB,MAIhB,IAAW,EAA0C,QAAQ,AAAlD,EAAc,AAAsC,OAA/B,EAAW,KAAA,CAC7C,EAD4C,KACrC,EAAW,KAAK,CAIzB,EAJmB,CAIf,cAAA,IAAkB,EAAiD,QAAQ,AAAzD,EAA2D,AAA7C,OAAO,EAAW,QAAD,IAAC,CACpD,OAAO,AATU,EASC,KATD,GASA,IAAa,AAElC,CAEA,MAAO,SAAS,AAClB,CAyEA,SAAS,EAA4B,CAAI,CAAQ,CAAM,CAA2B,CAAY,EAAiB,AAC7G,GAAI,EAAc,CAChB,IAAM,EAAW,EAAO,CADV,GADkB,AAE1B,AAAiB,IAAS,AAChB,IAAI,EAAE,CAAlB,GACF,EAAK,EAAD,CADF,SACe,CACfX,EAAAA,iCAAiC,CACjC,AAAoB,QAAA,SAAb,EAAwB,EAAW,IAAnC,AAAuC,CAAC,CAAhB,QAAyB,CAAC,IAG7D,IAHqE,CAAC,CAIxE,CAEA,IAAM,EAAsB,EAAE,CA4B9B,GA5Bc,AAIZ,QAAA,GAAY,GACZ,EAAO,CADK,GACN,EAAC,EACkB,QAAA,EAAzB,OAAO,EAAO,IAAD,EAAC,EACd,mBAAA,GAAuB,EAAO,IAAD,EAAC,EAC9B,EAAO,IAAD,EAAO,CAAC,iBAAA,EACd,AACA,EAAS,IAAI,CAAC,CAAN,EAAS2D,EAAAA,sBAAsB,CAAC,EAAO,IAAD,EAAO,CAAC,iBAAA,CAAmC,QAAQ,CAAC,CAAC,CAIjG,SAAA,GAAa,GACf,EAAS,CADY,EAAE,CACV,CAAC,CAAN,EAASA,EAAAA,sBAAsB,CAAC,EAAO,IAAD,GAAC,CAA0B,MAAM,CAAC,CAAC,CAI/E,UAAA,GAAc,GAChB,EAAS,CADa,EAAE,CACX,CAAC,CAAN,EAASA,EAAAA,sBAAsB,CAAC,EAAO,IAAD,IAAC,CAA8B,MAAM,CAAC,CAAC,CAInF,SAAA,GAAa,GACf,EAAS,CADY,EAAE,CACV,CAAC,CAAN,EAASA,EAAAA,sBAAsB,CAAC,EAAO,IAAD,GAAC,CAA0B,MAAM,CAAC,CAAC,CAG/E,KAAK,CAAC,OAAO,CAAC,IAAa,EAAS,EAAd,CAAA,GAAoB,AAAP,CAAS,CAC9C,GAAM,oBAAE,CAAkB,kBAAE,CAAA,CAAA,CAAqBxG,EAAAA,yBAAyB,CAAC,GAEvE,GACF,EAHiF,AAG5E,CAH6E,CAG9E,UAAa,CADG,AACFC,EAAAA,AADI,oCACgC,CAAE,GAG1D,IAAM,EAAiB,KAAK,CAAC,GAH+C,CAAC,EAGvE,CAA8B,CAAC,GAAoB,EAAiB,MAAA,CAAS,CAAC,CACpF,EADqD,AAChD,CADgD,CACjD,CADqE,UACvD,CAAC,CACjB,CAACE,EAAAA,+CAA+C,CAAA,CAAG,EACnD,CAACL,EAAAA,SADgE,sBACjC,CAAA,CAAG,IAAI,CAAC,SAAS,CAACN,EAAAA,qBAAqB,CAAC,GAC9E,CAAK,CAAC,AACJ,CACF,CAsEA,SAzE8E,AAyErE,EAzEmG,AA0E1G,CA1E2G,AA0E7F,CACd,CAAU,CACV,CAAkB,CAClB,CAAO,CACP,CAAO,EAEP,GAPuB,CAOjB,EAAe,IAAeiH,EAAAA,IAA9B,AAAe,eAAkC,CACjD,EAAgD,UAAhD,EAA4D,GAA7C,EAAmB,SAAA,CAExC,MAFuC,CAEhC,IAAI,KAAK,CAAC,EAAgB,CAC/B,KAAK,CAAC,CAAM,CAAE,CAAC,CAAE,CADY,AACR,EAAqB,AACxC,IAAM,EAAgB,EAAmB,SAAnC,AAA4C,CAC5C,EAAS,CAAI,CAAC,CAAC,CADmB,AAClC,AAAe,CACf,EAhLZ,AAgLgC,SAhLvB,AACP,CAAa,CACb,CAAM,CACN,CAAO,CA6KG,CA3KV,IAAM,EAAiD,CACrD,CAAC5B,AA0KmD,EA1KnDA,IADa,GALe,gBAML,CAAA,CAAG0B,EAAAA,wBAAwB,CACnD,CAACpE,EAAAA,+BAA+B,CAAA,CAAG,EACnC,CAAC1S,EAAAA,QAD+C,wBACf,CAAA,CAAG,sBAAsB,AAC9D,CAAG,CAED,GAAI,GAIF,GAJQ,AACR,CAAU,CADA,AACCkT,EAAAA,8BAA8B,CAAA,CAAI,EAAa,EAAQ,GAG9D,CAH4D,GAAS,CAAhB,AAAiB,GAGtE,GAAY,GAAmC,AAAzB,GAAV,KAAmC,SAAlB,EAAO,IAAD,EAAC,EAAuB,EAAO,IAAD,EAAO,CAAE,CAC5E,MAAM,EAAS,EAAO,EAAhB,EAAe,EAAC,CAItB,GAHA,MAAM,CAAC,MAAM,CAAC,GA7CZ,EAAiD,CAAA,CAAE,CAErD,EA2CwB,EAAE,CA7Cd,QAEZ,IAAiB,EAAwC,IAAxC,IA2CgC,AA3CgB,EAAtC,AAAwC,OAAjC,EAAO,IAAD,OAAC,GAC3C,CAAU,CAACoB,EAAAA,oCAAoC,CAAA,CAAI,EAAO,IAAD,OAAC,AAAW,EAEnE,MAAA,IAAU,EAAU,AAAuB,IAAjC,IAAyC,EAAE,OAA1B,EAAO,IAAD,AAAC,GACpC,CAAU,CAACC,EAAAA,8BAA8B,CAAA,CAAI,EAAO,IAAD,AAAC,AAAI,EAEtD,MAAA,GAqCkD,CArCxC,EAAiC,GAqCa,CAAC,AArC/C,CAqCgD,GArCP,EAA/B,AAAiC,OAA1B,EAAO,IAAD,AAAC,GACpC,CAAU,CAAC6B,EAAAA,8BAA8B,CAAA,CAAI,EAAO,IAAD,AAAC,AAAI,EAEtD,iBAAA,IAAqB,EAA4C,IAA5C,IAAoD,EAAE,AAA5C,OAAO,EAAO,IAAD,WAAC,GAC/C,CAAU,CAACC,EAAAA,mCAAmC,CAAA,CAAI,EAAO,IAAD,WAAC,AAAe,EAEtE,kBAAA,IAAsB,EAA6C,IAA7C,IAAqD,EAA3C,AAA6C,OAAtC,EAAO,IAAD,YAAC,GAChD,CAAU,CAAC7B,EAAAA,0CAA0C,CAAA,CAAI,EAAO,IAAD,YAAC,AAAgB,EAE9E,iBAAA,IAAqB,EAA4C,IAA5C,IAAoD,EAAE,AAA5C,OAAO,EAAO,IAAD,WAAC,GAC/C,CAAU,CAACC,EAAAA,yCAAyC,CAAA,CAAI,EAAO,IAAD,WAAC,AAAe,EAGzE,IA2BC,MA3BS,CA2BT,GAAW,GAAU,KAAK,CAAC,OAAO,CAAC,EAAO,IAAD,CAAM,CAAC,CAAE,CACpD,IAAM,EAAuB,EAAO,IAAD,CAAM,CAAC,OAAO,CAC/C,AAAC,EADG,CAC2C,CAA1C,CAA+C,EAAD,kBAAqB,EAE1E,CAAU,CAACzE,EAAAA,wCAAwC,CAAA,CAAI,IAAI,CAAC,SAAS,CAAC,EACxE,EACF,MAEA,CAAU,CAACkD,EAAAA,MAJmF,CAAC,uBAItD,CAAA,CAAI,EAAa,CAAA,CAAE,CAAE,GAGhE,IAH2D,AAAY,CAAC,EAGjE,CACT,EAgJyD,EAAe,EAAQ,GAjJ7D,AAkJP,CADkE,CAC1D,CAAiB,CAACA,AADiD,CAAC,CAClDA,AADgC,8BACF,CAAA,EAAK,SAAS,QAG5E,AAAI,EAAmB,SAAS,CAEvB1I,CAFyB,CAEzBA,IAFa,WAEE,CACpB,CACE,IAAI,CAAE,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CACA,CADA,CACA,CAAA,CAAA,AADA,OACA,EAAA,EAAA,CAAA,CACA,SADA,CACA,CAAA,CACA,CAAA,CACA,MAAA,IAAA,AACA,GAAA,CAHA,AAIA,CAFA,CAEA,KAAA,OAAA,EAAA,GACA,EAAA,CADA,CACA,CADA,CACA,GAEA,CAFA,GAEA,EAAA,GAFA,CAAA,AAEA,EAAA,EAAA,IAAA,AAFA,CAEA,CAAA,EAAA,GACA,CADA,CAAA,KACAsL,EAAAA,gBAAA,CAAA,EAAA,GAAA,CAAA,EAAA,IAAA,CAAA,QAAA,CAAA,AACA,CADA,AACA,MAAA,EAAA,CAUA,EAVA,IACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAtV,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CACAyJ,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,sBAAA,CACA,IAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CACA,AADA,CACA,AACA,CAAA,CAAA,CACA,EAAA,EAAA,AAHA,CAGA,EAAA,CACA,CACA,CACA,CAAA,EAFA,AAMAI,EAAAA,SAAA,CACA,CACA,IAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,GAAA,GAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CACA,CADA,CACA,CAAA,CADA,AACA,OAAA,EAAA,EAAA,CAAA,CACA,SADA,CACA,CAAA,CACA,CAAA,CACA,IAAA,AACA,EAAA,GADA,EACA,GAHA,IAGA,EAAA,GACA,EAAA,CADA,CACA,CADA,CACA,GAGApH,CAHA,CAGAA,OAHA,CAAA,QAAA,IAGA,CACA,IAAA,EAAA,IAAA,CAAA,CAAA,EAAA,GAAA,AACA,CADA,CAAA,EAEAgH,CADA,CACAA,GADA,aACA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,CAAA,CAAA,sBAAA,CAAA,IAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,CACA,AADA,CACA,CACA,GAHA,EAGA,CAAA,CAAA,AACA,IAEA,EAFA,CAEA,GAtInB,AAoImB,AAGA,MADA,GAtIV,AAsIU,AAtIY,CAAI,AAsIhB,CAtIwB,AAsIxB,CAtIgC,CAAuB,CAAa,EAAkB,AACvG,GAAI,AAAC,EAsIY,CAtIoB,KAAhC,GADuB,AACiB,EAAE,AAA9B,OAAO,GAOxB,GALI,EAFoB,AAEX,MAAD,MAAa,EAAE,AACzB,EAAK,EAAD,UAAa,CAACwJ,EAAAA,+BAA+B,CAAE,EAAS,MAAD,MAAa,CAAC,CAIvE,EAAS,MAAD,OAAC,EAAmD,QAAQ,EAA1C,OAAO,EAAS,MAAD,OAAC,CAA4B,CACxE,IAAM,EAAQ,EAAS,CAAjB,KAAgB,OAAc,CACE,QAAQ,EAA1C,AAA4C,OAArC,EAAM,GAAD,aAAC,EACf,EAAK,EAAD,WAAc,CAAC,CACjB,CAAC9D,EAAAA,mCAAmC,CAAA,CAAG,EAAM,GAAD,aAAiB,AACrE,CAAO,CAAC,CAEsC,QAAQ,EAAE,AAAhD,OAAO,EAAM,GAAD,iBAAC,EACf,EAAK,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,oCAAoC,CAAA,CAAG,EAAM,GAAD,iBAAqB,AAC1E,CAAO,CAAC,CAEiC,QAAQ,EAAzC,AAA2C,OAApC,EAAM,GAAD,YAAC,EACf,EAAK,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,mCAAmC,CAAA,CAAG,EAAM,GAAD,YAAgB,AACpE,CAAO,CAAC,AAEN,CAGA,GAAI,GAAiB,KAAK,CAAC,IAAvB,GAA8B,CAAC,EAAS,MAAD,IAAW,CAAA,EAAK,EAAS,MAAD,IAAW,CAAC,MAAA,CAAS,CAAC,CAAE,CACzF,IAAM,EAAgB,EAAS,MAAD,GAAxB,CAAyB,CAC5B,GAAG,CAAC,AAAC,GACJ,AAAI,EAAU,IADD,GACA,AAAQ,EADQ,AACN,OAAS,KAAK,CAAC,OAAO,CAAC,EAAU,OAAD,AAAQ,CAAC,KAAK,CAAC,CAC7D,CAD+D,CACrD,OAAD,AAAQ,CAAC,KAAA,CACtB,GAAG,CAAC,AAAC,GAA4C,CAAxC,SAAmB,OAAO,EAAK,EAAD,EAAC,CAAoB,EAAK,EAAD,EAAC,CAAO,EAAE,CAAC,CAC3E,MAAM,CAAC,AAAC,GAAiB,CAAb,CAAkB,EAAD,IAAC,CAAS,CAAC,EACxC,IAAI,CAAC,EAAE,CAAC,CAEN,EAAE,EAEV,MAAM,CAAC,AAAC,GAAiB,CAAb,CAAkB,EAAD,IAAC,CAAS,CAAC,CAAC,CAExC,EAAc,MAAA,CAAS,CAAC,EAAE,AAC5B,CADe,CACV,EAAD,WAAc,CAAC,CACjB,CAACsF,EAAAA,8BAA8B,CAAA,CAAG,EAAc,IAAI,CAAC,EAAE,CAAC,AAChE,CAAO,CAAC,AAEN,CAGA,AANqD,GAMjD,GAAiB,EAAS,MAAD,EAAzB,KAAuC,CAAE,CAC3C,IAAM,EAAgB,EAAS,MAAD,GAAxB,IAAsC,CACxC,KAAK,CAAC,OAAO,CAAC,IAAkB,EAAc,MAAA,CAAS,AAA5B,CAAA,AAA6B,EAC1D,AAD4D,CAAb,CAC1C,EAAD,WAAc,CAAC,CACjB,CAACpB,EAAAA,oCAAoC,CAAA,CAAG,IAAI,CAAC,SAAS,CAAC,EAC/D,CAAO,CAAC,AAEN,EACF,EA8EmB,EAAA,EAAA,CAlFyD,CAkFzD,AAlF0D,EAkF1D,GAAA,QAAA,CAAA,AAEA,CAAA,GAIA,CAAA,AACA,CAAA,CAAA,AACA,gDA8EA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,OAzEA,AAyEA,SAzEA,EAAA,CAAA,CAAA,EAAA,AAwEA,AACA,EAzEA,CAAA,CAAA,EAAA,AACA,GADA,IACA,IAAA,KAAA,CAAA,EAAA,CACA,GADA,AACA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,GACA,GADA,CACA,EAAA,EADA,CACA,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CACA,EAAAiC,EAAAA,CADA,CAAA,IACA,SAAA,CAAA,EAAA,MAAA,CAAA,EAAA,EAAA,AAEA,CAFA,CAAA,AAEAiB,EAAAA,cAAA,cAAA,CAAA,EAAA,CACA,GAAA,IADA,MACA,EAAA,OAAA,GAAA,EAAA,CAEA,GAAA,IAAAD,EAAAA,IAAA,EAFA,aAEA,CAAA,CACA,IAAA,EAAA,EACA,EACA,EACA,CAFA,CAGA,CAAA,CACA,CALA,EAOA,CALA,EAFA,CAKA,GAEA,IAJA,KAIA,GAAA,CAAA,EAAA,AACA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAEA,CAHA,EAGA,GAAA,KAAA,EAAA,OAAA,EACA,EAAA,EAAAE,AADA,EACAA,EAAA,OAAA,CAAA,GAEA,CACA,CAAA,AACA,CAEA,CANA,CAAA,CAEA,IAIA,EACA,EACA,EACA,CAFA,CAGA,CAAA,CACA,EAEA,EALA,EAFA,CAKA,EAIA,KANA,KAMA,EAAA,OAAA,EAEA,EAAA,CAFA,EAEA,CAAA,CAAA,CAAA,CAAA,CAGA,GAAA,EAAA,MAAA,EAAA,OAAA,EACA,EAAA,CADA,CACA,EAAA,CAAA,EAGA,CACA,CAAA,AACA,CAAA,CAAA,AACA,AANA,CAGA,AAHA,CAAA,AA+BA,EAAA,EAAA,CAAAhB,CAAA,CAAAA,yBAAA,CAAA,GACA,IADA,CAAA,CAAA,wGCjauB,+BACV,+BAEgB,CAC9C,KAAK,CAAE,MAAM,CACb,EAAE,CAAE,WAAW,CACf,SAAS,CAAE,WAAW,CACtB,MAAM,CAAE,QAAQ,CAChB,QAAQ,CAAE,UAAU,CACpB,IAAI,CAAE,MAAM,AACd,uKC6BM,EAAe,CAAC,EAA4C,EAAa,CAAV,CAAzC,GAAwD,AACrE,AADT,IACa,CADqF,CAClG,IAAe,CAAf,AAAqB,CAAC,EAAG,CAAI,AAAJ,CAAI,CAAA,AACnC,CAAC,CAMK,EAAqB,CAAC,EAA4C,EAAa,CAAV,CAAzC,GAAwD,AACxF,IAAM,CADsG,AACtG,CADF,AACM,MAAM,CAAC,EACb,CAAC,EADiB,CAAC,GACZ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAE,CAAM,CAAC,EAAG,CAAA,CAAI,CAAC,AACvC,CAAC,CAMD,SAAS,EAAS,CAAC,EAAmB,AACpC,GAAI,AAAa,AADF,QACU,SAAd,CAAA,CAAgB,OAAO,CAAC,CACnC,GAAI,CACF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CACzB,AAD0B,CACxB,KAAM,CACN,OAAO,MAAM,CAAC,CAAC,CAAC,AAClB,CACF,CAoBA,SAAS,EAAiB,CAAC,EAAmB,AAC5C,GAAI,KAAK,CAAC,EADa,KACN,CAAC,CAAC,CAAC,CAClB,CADoB,EAChB,CACF,IAAM,EAAW,CAAC,CAAC,GAAG,CAAhB,AAAgB,AAAC,GACrB,CADqB,EACG,UAAhB,OAAO,GAAqBzG,CAArB,CAAqBA,cAAc,CAAC,GAAQC,CAAJ,CAAIA,iCAAiC,CAAC,GAAQ,CAAJ,CAAA,CAEnG,CAF2G,MAEpG,IAAI,CAAC,SAAS,CAAC,EACxB,CAAE,KAAM,AADwB,CAAC,AAE/B,OAAO,MAAM,CAAC,CAAC,CACjB,AADkB,CAGpB,OAAO,EAAS,CAAC,CACnB,AADoB,CASpB,GATiB,MASR,EAAqB,CAAI,EAAkB,AAClD,IAAM,EAAa,EAAK,EAAD,IAAjB,CADqB,IACQ,EAAE,CACrC,OAAOyH,EAAAA,QAAQ,CAAC,EAAU,EAAK,CACjC,CAOA,IAR4B,IAAe,CAQlC,EAA0B,CAAI,EAAkB,OACnD,AAAJ,EAAS,EAAD,MAAS,CAAC,EADc,MACN,CAAC,CAAS,CAAP,OAAe,CACxC,EAAK,EAAD,MAAS,CAAC,OAAO,CAAC,CAAS,CAAP,KAAa,CACrC,EAAK,EAAD,MAAS,CAAC,IAAI,CAAA,EAAK,EAAK,EAAD,MAAS,CAAC,WAAW,CAAC,CAAS,CAAP,UAAkB,CACrE,EAAK,EAAD,MAAS,CAAC,UAAU,CAAC,CAAS,CAAP,SAAiB,CAC5C,EAAK,EAAD,MAAS,CAAC,MAAM,CAAC,CAAS,CAAP,KAAa,CACjC,MAAM,AACf,CA8BO,SAAS,EAA2B,CAAQ,EAAgE,AACjH,OAAO,EAAS,GAAG,CAAA,AAAC,EAAL,EAEb,IAAM,AAHgC,EAGhB,CAFO,CAEiC,KAAxC,GAAhB,AAAgE,CACtE,GAA4B,UAAU,EAAE,AAApC,OAAO,EAET,MAAO,CACL,GAHO,CAGH,CAAE,EAFY,EAAa,IAAI,CAAC,IAGpC,CAH8B,EAAa,CAAC,GAElB,AACnB,CADoB,AAClB,EAAiB,EAAQ,KAAD,EAAQ,AADH,CACI,AAClD,AAF+C,CAExC,CAKH,EAN6B,CAMV,CAAA,GAAf,EAAQ,EAAA,EAAY,CAAb,CAAqB,KAAD,CAAO,CAAE,CACtC,IAAM,EAAA,AAAK,EAAQ,EAAE,CACf,EADY,AACE,KAAK,CAAC,GAApB,IAA2B,CAAC,EAAE,CAAA,CAAK,EAAE,AAAC,MAAA,CAAS,CAAA,CAAI,CAAE,CAAC,EAAE,AAAC,MAAA,CAAS,CAAC,CAAA,CAAI,EAAE,CAG/E,MAAO,CACL,IAAI,CAAE,EAH4B,QAAA,EAAvB,OAAO,CAGQ,CAHmB,AAGlB,EAH4C,EAGxC,CAAC,AAHsD,IAApE,EAA0E,EAI5F,AAJkF,CAAA,MAI3E,CAAE,EAAiB,EAAQ,AAJoC,KAIrC,CAAO,EAAE,IAAjB,GAAwB,CAAC,AAC1D,CAAO,AACH,CAGA,GAAI,EAAQ,IAAI,CAEd,AAFS,CAAO,KAET,CACL,IAAI,CAAE,EAFK,MAAM,CAAC,EAAQ,IAAI,CAAC,AAAN,CAAO,GAEN,CAAC,IAAI,CAAC,EAFW,EAAE,EAG7C,OAAO,CAAE,EAAiB,EAAQ,KAAD,EAAQ,CAAC,AAClD,CAAO,CAKH,EAN6B,CAMzB,EAAQ,IAAI,CACd,AADS,CAAO,KACT,CACL,IAAI,CAAE,EAAqB,MAAM,CAAC,EAAQ,IAAI,CAAL,AAAM,CAAC,CAChD,EAD0B,KACnB,CAAE,EAAiB,EAAQ,KAAD,EAAQ,CAAC,AAClD,CAAO,CAKH,EAN6B,EAMvB,EAAQ,EAAgD,WAAW,EAAE,IAAI,QAC/E,AAAI,GAAiB,CAAjB,OAAyB,EAAE,CAAnB,EACH,CACL,CAFQ,GAEJ,CAAE,EAAqB,EAA0B,IACrD,AADyD,CAAC,CAAC,KACpD,CAAE,EAAiB,EAAQ,AADR,KACO,EAAQ,AADW,CACV,AAClD,CAAO,CAII,CACL,CAN2B,GAMvB,CAAE,MAAM,CACZ,OAAO,CAAE,EAAiB,EAAQ,KAAD,EAAQ,CAAC,AAChD,CAAK,AACH,CAAC,CAAC,AACJ,CAH+B,AAoD/B,SAAS,EACP,CAAM,CACN,CAAS,CACT,CAAU,CACV,CAAgB,CAChB,CAAiB,MAtCX,EAGA,EA8BsB,CAjCjB,GAGL,EAWA,EAGA,EAuBN,MAAO,CACL,CAAC/B,EAAAA,EA3BG,CAGA,EAHmB,CAGD,eAHiB,CAGD,CAwBd,CAAA,CAAG,EAAS,GAAU,GAAX,AAAC,QAAqB,CAAC,CAC1D,CAAC1C,EAAAA,+BAA+B,CAAA,CAAG,MAAM,CACzC,CAACQ,EAAAA,8BAA8B,CAAA,CAAG,EAAS,GAC3C,CAAClT,EADyC,AACzCA,GADmD,CAAC,4BACpB,CAAA,CAAGoX,EAAAA,gBAAgB,OA5CJ,CAAA,CAAE,GAGrC,QAAA,GA0CqB,CA1CT,CAAa,EAAW,MAAA,AA0CL,CA1CnB,CAAuB,IAAU,EAEtD,EAAc,GAAkB,EAF+B,IAE/D,KAAgC,EAAF,EAAiB,CAAmB,cAAA,EAAF,AAAoB,GAAQ,GAAF,QAAa,CAC7G,EAAmB,EAAO9C,EAAAA,CAAF,WAAN,wBAA4C,CAAE,GAE1D,EAAY,GAAkB,GAFuC,CAAC,AAEtE,MAA8B,EAqC8B,CArChC,CAAgB,CAAmB,aAAA,CAqCc,CArCG,AAqCF,CArCjB,EAA2B,GAAF,OAAY,CACxG,EAAmB,EAAO+B,EAAAA,CAAF,WAAN,uBAA2C,CAAE,GAEzD,EAAO,GAAkB,CAFyC,CAAC,GAE1C,EAAS,GAAQ,GAAnB,AAAiB,EAAO,CACrD,EAAmB,EAAO9B,EAAAA,CAAF,WAAN,kBAAsC,CAAE,IAAI,CAAC,GAEpB,iBAAiB,CAC5D,EAAmB,EAAOC,EAAAA,CAAF,WAAN,8BAAkD,CAAE,KA8BtB,GA5BN,QAF4C,CAAC,IA8BvB,GA5BN,CAC1D,EAAmB,EAAOC,EAAAA,CAAF,WAAN,6BAAiD,CAAE,GAIjE,GAAoB,QAAA,CAJ4D,CAAC,EAIjD,CAAhC,CACF,EAAa,EAAOC,EAAAA,CAAF,KAAN,EADsC,EAAE,qBACD,EAAE,CAAQ,EAAiB,IAAlB,EAAwB,CAAC,CAAC,AAGjF,EAmBL,AACJ,CACA,AADG,EADI,AAnBO,CAHmE,6BAsB5C,KA0C9B,SACL,AADc,CACX,CACH,CAAiB,CACjB,CAAY,CACZ,CAAgB,CAChB,CAAiB,EAEjB,IAGM,EAAQ,AAHR,EAAS,CAGT,EAH4B,CAA5B,UAA4B,AAPa,EAOE,CAAjB,CAAqB,CAAD,AAGjB,CAHoB,AAGnB,EAHmB,CAAG,CAAC,CAAC,CAC1C,AAEwB,EAAE,CAFR,KAAA,EAAS,CAEQ,EAFW,GAA9B,UAA8B,CAAF,CAAmB,SAAS,CAEnC,EAAK,CAAF,CAAoB,GAE9E,GAAI,GAAgB,KAFwD,AAEnD,CAAC,EAFqE,CAAC,AAE5F,IAA6B,CAAC,IAAsB,EAAkB,MAAA,CAAS,CAAC,CAAE,CACpF,CADiD,CAAA,EAC3C,CADiE,CACpD,EAA2B,EAAkB,IAAI,AAA9D,EAAgE,CAAC,CAEjE,OAFyD,OAAlB,MAErC,CAAkB,CAAE,kBAAA,CAAA,CAAqBnE,EAAAA,yBAAyB,CAAC,GAEvE,GACF,EAAa,EAAOC,AAH+D,CAAC,CAGhEA,CAAF,KAAN,GADQ,EAAE,yBACkC,CAAE,GAG5D,IAAM,EAAiB,KAAK,CAAC,GAHiD,CAAC,EAGzE,CAA8B,CAAC,GAAoB,EAAiB,MAAA,CAAS,CAAC,CACpF,EADqD,AACxC,CADwC,CACjCE,CADqD,CACrDA,CAAF,KAAN,yCAAuD,CAAE,GAErE,IAAM,EAAYX,EAAAA,GAFiE,CAAC,CAE9E,gBAAiC,CAAC,GACxC,EAAa,EAAOM,EAAAA,CAAF,KAAN,GAD0D,sBACnB,CAAE,EAAS,GAChE,CAEA,EAH+D,GAAU,CAAC,CAAC,AAGpE,CACT,IADc,4BA1DP,SAAS,AACd,CAAG,CACH,CAAO,CACP,CAAY,CACZ,CAAgB,CAChB,CAAiB,EAEjB,IAGM,EAHA,AAGQ,EAHC,CAGT,EAH4B,CAA5B,IAPmC,MAOI,CAC3B,EADc,CACI,CAED,CAAC,GAFA,EAAS,CAEH,EAFsB,AAEpB,GAFV,MAEmB,IAFW,CAAF,CAAmB,SAAS,CAEnC,EAAK,CAAF,CAAoB,GAE9E,GAAI,GAAgB,KAFwD,AAEnD,CAAC,EAFqE,CAAC,AAE5F,IAA6B,CAAC,IAAY,EAAQ,CAAb,CAAA,GAAY,CAAC,CAAS,CAAC,CAAE,CAChE,EAAa,EAAOK,EAAAA,CAAF,KAAN,yCAAuD,CAAE,EAAQ,KAAD,CAAO,CAAC,CACpF,IAAM,EAAW,EAAQ,GAAG,CAAA,AAAC,CAAL,GAAK,AAAM,CAAE,IAAI,CAAE,MAAM,CAAE,OAAO,CAAE,CAAA,CAAA,CAAG,CAAC,CAAC,AACjE,EAAa,EAAOL,EAAAA,CAAF,KAAN,yBAAuC,CAAE,EAAS,GAChE,CAEA,EAH+D,EAAS,CAAC,CAAC,CAGnE,CACT,IADc,6BAgIP,SAAS,AACd,CAAS,CACT,CAAa,EAEb,GAAI,CAAC,EAAW,OAAF,AAEd,IAAM,EAA4C,CAAA,CAAE,CAAzC,AAEX,CAR0C,EAQtC,KAAK,CAAC,OAAO,CAAC,EAAU,OAAD,IAAY,CAAC,CAAE,CACxC,IAAM,EAAgB,EAAU,OAAD,EAAzB,EAA0B,CAC7B,IAAI,GACJ,GAAG,CAAA,AAAC,CAAA,EAEC,AAAJ,CAAK,CAAC,AAFE,cAEY,EAAE,aAAa,CAC1B,CAD4B,AAC3B,CAAC,cAAc,CAAC,aAAa,CAGnC,CAAC,CAAC,eAAe,EAAE,aAAa,CAC3B,CAD6B,AAC5B,CAAC,eAAe,CAAC,aAAa,CAEjC,IAAI,EAEZ,MAAM,CAAC,AAAC,CAAC,EAA+B,QAAQ,CAAC,CAAtB,OAAO,CAAA,EAEjC,EAAc,MAAA,CAAS,CAAC,EAAE,AAC5B,CADe,CACF,EAAOyD,EAAAA,CAAF,KAAN,kCAAgD,CAAE,EAAS,MAAD,EAvG5C,EA2GL,EAAU,CAJqD,CAAC,CAAC,IAIxD,AA3GO,EAAwB,EA2G9B,CA1GnC,EADsE,EAChE,AAD4G,EACrF,EAAE,CAG/B,IAAK,AAHU,IAGJ,GAAA,EAFa,EAEN,AAFkB,IAAI,EAAE,CAEP,CACjC,CAHiC,GAG3B,EAAU,CADe,CACX,CAAD,EAAb,IAAqB,EAAE,OAAO,CACpC,GAAI,KAAK,CAAC,OAAO,CAAC,GAChB,IADuB,AAClB,CADmB,EAAE,CACf,IAAA,CAAQ,EAEF,KAFS,CAAE,IAED,GAArB,CAAC,CAAC,IAAA,EAAqB,EAAU,IAAI,CAAC,AADhC,CACiC,CAAC,AAGlD,AAH0C,CAoGxC,CArGc,EAMZ,EAAU,MAAA,CAAD,AAAU,CAAC,EAAE,AACxB,EA4FsE,EA5FlDC,EAAAA,CA4FuD,CAAC,IA5FhE,CAAC,KAAK,wBAAsC,CAAE,EAAS,IA8F/D,EA9F8D,AA8F/C,CACjB,EA/F0E,CAAC,CA+FrE,AA/FsE,EA+F9D,EAAU,CAAlB,CADS,KACQ,IAAC,CACrB,IAAI,GACJ,GAAG,CAAA,AAAC,GAAA,AAAO,EAAI,CAAD,GAAC,EAAQ,EAAI,CAAD,MAAQ,EAAE,OAAO,EAC3C,MAAM,CAAA,AAAC,CAAA,EAAkB,QAAQ,CAAC,CAAtB,OAAO,CAAA,EAElB,EAAM,GAAD,GAAC,CAAS,CAAC,EAAE,AACpB,EAAa,EAAOoB,EAAAA,CAAF,KAAN,wBAAsC,CAAE,EAAS,GAEjE,CACF,CAHwE,CA3F1E,AAgGE,AALkE,AAAO,CAAC,QA3FnE,AACP,CAAS,CACT,CAAK,EAEL,GAAI,CAAC,EAAW,GA4FO,IA5FT,AAEd,IAAM,CANwB,CAMX,EAAU,MAAvB,CAAsB,GAAC,CAGvB,EAAiB,EAAU,KAAA,CASjC,CATgC,EAS5B,CATE,CAUJ,EAAmB,EAAOxF,EAAAA,CAAF,CADZ,EAAE,QACI,uBAA2C,CAAE,EAAW,QAAD,IAAa,CAAC,CACvF,EAAmB,EAAOC,EAAAA,CAAF,WAAN,wBAA4C,CAAE,EAAW,QAAD,QAAiB,CAAC,CAC5F,EAAmB,EAAOC,EAAAA,CAAF,WAAN,uBAA2C,CAAE,EAAW,QAAD,GAAY,CAAC,MACjF,GAAI,EAAgB,CACzB,EAAmB,EAAOF,EAAAA,CAAF,IADD,OACL,uBAA2C,CAAE,EAAe,YAAD,AAAa,CAAC,CAC3F,EAAmB,EAAOC,EAAAA,CAAF,WAAN,wBAA4C,CAAE,EAAe,YAAD,CAAc,CAAC,CAG7F,IAAM,EAAQ,MAAM,CAAC,EAAe,YAAD,AAAa,CAAC,CAC3C,EAAS,MAAM,CAAC,EAAe,YAAD,CAAc,CAAC,CAC7C,EAAQ,CAAC,EAAT,IAAe,CAAC,KAAK,CAAC,GAAS,CAAA,CAAJ,AAAQ,CAAA,AAAR,CAAa,EAAK,EAAL,IAAW,CAAC,KAAK,CAAC,GAAU,CAAA,CAAI,CAAR,AAAQ,CAAR,AAAc,CAAC,AACjF,EAAQ,CAAC,EAAT,AAAW,EAAmB,EAAOC,EAAAA,CAAF,WAAN,uBAA2C,CAAE,KAAK,CAAC,EAGjC,IAA/C,EAAe,GAAyC,SAA1C,eAAC,EACjB,EACE,EACAwH,EAAAA,CADK,WADW,sCAEkC,CAClD,EAAe,YAAD,eAA4B,OAEC,IAA3C,EAAe,GAAqC,SAAtC,WAAC,EACjB,EAAmB,EAAOC,EAAAA,CAAF,WAAN,kCAAsD,CAAE,EAAe,YAAD,WAAwB,CAAC,AACrH,CACF,EAsD0B,EAAU,OAAD,EAAU,CAAE,GAE7C,EAFkD,CAAC,CAE7C,EAAY,EAAU,KAAtB,EAAqB,EAAU,CAG/B,EAAkB,EAAU,OAAD,IAA3B,AAAuC,EAAA,CAAG,CAAC,CAAC,EAAA,CAAG,CAAC,CAAC,CACjD,EAAY,GAAiB,IAA7B,GAAoC,CAIpC,EAAY,EAJe,CAIJ,IAAvB,EAAqB,IAAE,EAAc,GAAW,MAAF,CAAW,GAAW,MAAF,WAAmB,EAAE,UAAU,CACnG,GAAW,EAAa,EAAO7D,EAAtB,AAAsBA,CAAF,KAAN,yBAAuC,CAAE,GAGpE,IAAM,EAHuE,AAG1D,CAH2D,EAGhD,EAAA,EAAM,EAAR,CAAmB,EAAE,CAC7C,GADyC,AAE3C,EAAa,EAAOS,EAAAA,CADR,AACM,EADJ,GACF,sBAAoC,CAAE,GAIpD,IAAM,EAAa,CAJ2C,CAAC,CAIjC,KAAxB,CAAsB,KAAE,EAAe,GAAW,MAAF,WAAmB,EAAE,aAAa,CAKxF,OAJI,GACF,EAAa,EAAOqD,EAAAA,CADR,AACM,EADJ,GACF,+BAA6C,CAAE,EAAS,IAG/D,CACT,CAJuE,GAGzD,CAHoE,CAAC,CAAC,iBAzW7E,SAAS,AAAoB,CAAI,EAA4E,AAClH,KAAI,CAAC,GAAQ,CAAR,IAAa,CAAC,CADc,MACP,CAAC,EAAI,CAAC,CAChC,CADkC,MAC3B,CADkC,CAC7B,EAAD,MADuC,SACtC,AACd,mQCrGO,SAAS,AAA+B,EAA4B,CAAA,CAAE,EAA4B,AACvG,CADoD,EAC9C,CAAE,cAAY,MADwB,SACtB,CAAA,CAAA,CAAkBrB,EAAAA,yBAAyB,CAAC,GAG5D,EAAU,EAHyD,CAAC,CAGtD,CAAd,EAAiB,CAKjB,CALiC,CAKtB,AAAC,IAChB,CADqB,CAAjB,EACE,EADkC,AAC3B,EAAQ,GAAG,CAAC,CAAL,EAChB,EAD0B,CACpB,AADqB,CACvB,UAAa,EAAE,EAAE,CACvB,EAAK,EAAD,CAAI,EAAE,CACV,EAAQ,KAAD,CAAO,CAAC,GAEnB,CAAC,CAFuB,AAQlB,CARmB,CAQiB,CAExC,IAFW,WAEI,EAAE,EACjB,GADsB,SACV,CAAE,CAAC,gBAAgB,CAAE,WAAW,CAAE,QAAQ,CAAC,CACvD,UAAU,MAAE,EACZ,OADqB,MACR,MAAE,EACf,OADwB,GACd,MAAE,EACZ,OADqB,aACD,MAAE,EACtB,KAAK,CAAE,CADwB,AACvB,gBAAgB,CAAE,WAAW,CAAE,QAAQ,CAAC,CAChD,SAAS,CAAE,CAAA,CAAE,CACb,IAAI,CAAE,uBAAuB,CAG7B,SAAS,EAAE,EACX,GADgB,QACL,EAAE,EACb,GADkB,QACP,EAAE,EACb,GADkB,YACH,EAAE,EACjB,GADsB,cACL,EAAE,EACnB,GADwB,OACd,EAAE,EACZ,GADiB,UACJ,EAAE,EAEf,EAFmB,YAEL,CACZ,CAAG,CACH,CAAO,CACP,CAAK,CACL,CAAY,CACZ,CAAY,CACZ,CAAI,CACJ,CAAQ,CACR,CAAQ,EAER,IAAM,EAAmBsB,EAAAA,YAAnB,OAAsC,CAAC,GACvC,CAD2C,CAAC,AAC/BC,EAAAA,MAAb,qBAAwC,CAC5C,EACA,CADA,CAEA,EACA,EACA,CAHO,EAKH,EAAY,CAAU,CAACvE,CAFnB,AAFI,CAIeA,GAAvB,EAHY,yBAGyC,CAAC,CACtD,EAAgB,CAAU,CAACR,EAAAA,OAA3B,wBAA0D,CAAC,CAEjElI,EAAAA,eAAe,CACb,CACE,IAAI,CAAE,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CACA,EAAA,CAAA,CADA,CAAA,WACA,CACA,UAAA,CAAA,CACA,GAAA,CAAA,CACA,CAAAzK,EAAAA,4BAAA,CAAA,CAAA,aAAA,AACA,CAAA,AACA,CAAA,CAAA,AACA,IAAA,AACA,EAAA,EADA,CACA,CAAA,CAAA,CAAA,GAAA,AACA,CADA,CAAA,CAIA,CAAA,AAHA,CAMA,oBAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAAyX,EAAAA,YAAA,OAAA,CAAA,GACA,CADA,CAAA,AACAE,EAAAA,MAAA,2BAAA,CACA,EACA,CADA,CAEA,EACA,EACA,EAHA,CAKA,EAAA,CAAA,CAAAxE,CAFA,AAFA,CAIAA,GAAA,EAHA,yBAGA,CAAA,CACA,EAAA,CAAA,CAAAR,EAAAA,OAAA,wBAAA,CAAA,CAEAlI,EAAAA,eAAA,CACA,CACA,IAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CACA,EAAA,CAAA,CADA,CAAA,WACA,CACA,UAAA,CAAA,CACA,GAAA,CAAA,CACA,CAAAzK,EAAAA,4BAAA,CAAA,CAAA,aAAA,AACA,CAAA,AACA,CAAA,CAAA,AACA,IAAA,AACA,EAAA,EADA,CACA,CAAA,CAAA,CAAA,GACA,AADA,CAAA,CAAA,CAIA,CAAA,AAHA,CAMA,YAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EACA,EADA,CAAA,AACA,GAAA,CAAA,UAAA,EAAA,CAAA,CACA,IAAA,EAAA4X,EAAAA,MAAA,sBAAA,CAAA,EAAA,GACA,CADA,EAEA,EAAA,EAAA,GADA,AADA,CAAA,CACA,MACA,CAAA,GAEA,EAAA,EACA,CACA,CAAA,CAGA,AAPA,AAEA,CAFA,AAEA,aAKA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EACA,EADA,CACA,AADA,CACA,UAAA,EAAA,EAAA,CACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAnX,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CACA,EAAA,IAGAyJ,CAHA,CAAA,AAGAA,AAHA,gBAGA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,CAAA,EAAAmN,EAAAA,gBAAA,CAAA,kBAAA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,AACA,CAAA,CAGA,gBAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA,EAAA,eAAA,CACA,EAAA,CACA,CAAApX,EAAAA,IADA,4BACA,CAAA,CAAA,mBAAA,CACA,sBAAA,CAAA,CACA,CAAA,CAGA,IACA,CAAA,CAAA,AALA,MAIA,EAAA,gBACA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EAAA,CAAA,CAGAwK,EAAAA,eAAA,CACA,CACA,IAAA,CAAA,CAAA,MAAA,EAAA,EAAA,CAAA,CACA,EAAA,CAAA,EADA,mBACA,CACA,UAAA,CAAA,CACA,GAAA,CAAA,CACA,CAAAzK,EAAAA,4BAAA,CAAA,CAAA,qBAAA,AACA,CAAA,AACA,CAAA,CAAA,AACA,IAAA,AACA,EAAA,EADA,CACA,CAAA,CAAA,CAAA,GAAA,AACA,CADA,CAAA,CAIA,CAHA,AAGA,CAGA,cAAA,CAAA,CAAA,CAAA,CAAA,EACA,AADA,IACA,EAAA,EAAA,GAAA,CAAA,CAAA,EACA,EADA,CAAA,AACA,CAAA,UAAA,EAAA,EAAA,CAEA,GACA,EAAA,EAAA,MADA,EAAA,GACA,CAAA,CACA,yBAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EACA,CAAA,CAAA,CAEA,EAHA,AAGA,CAHA,EAKA,CAAA,CAFA,AAKA,CALA,eAKA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EACA,EADA,CAAA,AACA,CAAA,UAAA,EAAA,EAAA,CACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAS,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CACA,EAAA,IAGAyJ,CAHA,CAGAA,AAHA,gBAGA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,CAAA,EAAAmN,EAAAA,gBAAA,CAAA,oBAAA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,AACA,CAAA,CAGA,eAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,cAAA,CACA,EAAA,CACA,CAAApX,EAAAA,IADA,4BACA,CAAA,CAAAoX,EAAAA,gBAAA,CACA,CAAAnH,EAAAA,0BAAA,CAAA,CAAA,CACA,CAAA,AAGA,KACA,CALA,AAKA,CAAA4C,EAAAA,GADA,EAAA,sBACA,CAAA,CAAA,CAAA,CAAA,CAGArI,EAAAA,eAAA,CACA,CACA,IAAA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CACA,EAAA,CAAA,CADA,oBACA,CACA,UAAA,CAAA,CACA,GAAA,CAAA,CACA,CAAAzK,EAAAA,4BAAA,CAAA,CAAA,qBAAA,AACA,CAAA,AACA,CAAA,CAAA,AACA,IAAA,AACA,EAAA,EADA,CACA,CAAA,CAAA,CAAA,GAAA,AACA,CADA,CAAA,CAIA,CAHA,AAGA,CAGA,aAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EACA,EADA,CAAA,AACA,CAAA,UAAA,EAAA,EAAA,CAEA,GACA,EAAA,EAAA,MADA,EAAA,GACA,CAAA,CACA,CAAAgT,EAAAA,4BAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EACA,CAAA,CAAA,CAEA,CAHA,CAGA,AAHA,GAKA,CAAA,CAFA,AAKA,CALA,cAKA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EACA,EADA,CAAA,AACA,CAAA,UAAA,EAAA,EAAA,CACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAvS,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CACA,EAAA,IAGAyJ,CAHA,CAAA,AAGAA,AAHA,gBAGA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,CAAA,GACA,EADA,EACA,CAAA,CAAA,EAAAmN,EAAAA,gBAAA,CAAA,mBAAA,CACA,AADA,CAEA,AADA,CACA,CAAA,AACA,CAAA,CAGA,IAAA,GAAA,EACA,EAGA,KAHA,CAGA,GAAA,GACA,CACA,EAAA,CAAA,CAAA,CACA,IAAA,CAAA,iBAAA,CACA,EAAA,CAAA,EAAA,KAAA,CACA,CAAA,sBAGA,KACA,CACA,EAAA,CAAA,CAAA,CACA,IAAA,CAAA,IAHA,GAAA,UAGA,CACA,EAAA,CAAA,EAAA,KAAA,CACA,CAAA,AAEA,CAAA,CAEA,OAAA,CACA,MADA,wGC9UyB,+BACV,kICgBzB,SAAS,EAAiB,CAAQ,EAA2D,AAClG,GAAI,CAAC,GAAgC,CAAC,EAAE,CADV,AACb,CAAZ,CAAqB,MAAD,AAAC,CACxB,OAAO,IAAI,CAGb,IAAM,EAAuB,EAAE,CAE/B,IAFe,AAEV,IAAM,KAAW,EAAX,AACT,GAAI,GADwB,AACM,CADJ,GAC1B,IAAsC,EAA3B,OAAO,EAAsB,CAC1C,IAAM,AADc,EACC,EAAQ,KAAD,GAAtB,EAAiC,CACnC,GAAgB,KAAK,CAAC,GAAtB,IAA6B,CAAC,IAChC,EAAU,IAAI,CAAC,CAD6B,CAAC,AACpC,CAAS,CAD6B,CAGnD,CAGF,OAAO,EAL6B,AAKnB,CALoB,KAKpB,CAAD,AAAU,CAAA,CAAI,EAAY,IAAI,AAChD,CAMO,EAPyB,OAOhB,EAA6B,CAAO,EAMlD,IAAI,EAAc,CAAC,CACf,EAAe,CAAC,CAChB,EAAc,CAFd,AAEe,CAGnB,GAAI,CAJA,CAII,CAAD,CAXmC,AAQtC,YAGI,EAAkB,AAA8B,QAAQ,SAA/B,EAAI,CAAD,aAAC,CAA6B,CAChE,IAAM,EAAQ,EAAI,CAAZ,AAAW,aAAC,CAUlB,MATkC,QAAQ,EAAtC,AAAwC,OAAjC,EAAM,GAAD,SAAC,GACf,EAAc,EAAM,GAAD,IAAnB,KAAgC,AAAZ,EAEa,QAAQ,EAAvC,AAAyC,OAAlC,EAAM,GAAD,UAAC,GACf,EAAe,EAAM,GAAD,KAApB,KAAqB,AAAa,EAEF,QAAQ,EAAtC,AAAwC,OAAjC,EAAM,GAAD,SAAC,GACf,EAAc,EAAM,GAAD,IAAnB,KAAoB,AAAY,EAE3B,aAAE,WAAW,IAAE,YAAY,EAAE,CAAA,CAAa,AACnD,CAGA,GAAI,EAAI,CAAD,gBAAC,EAAqB,AAAiC,QAAQ,SAAlC,AArBxB,EAqB4B,CAAD,IArB3B,YAqB4B,CAAgC,CACtE,IAAM,EAAW,EAAI,CAAD,GAAd,aAAe,CACrB,GAAI,EAAS,MAAD,IAAC,EAA6C,QAAQ,EAAvC,OAAO,EAAS,MAAD,IAAC,CAAyB,CAClE,IAAM,EAAa,EAAS,MAAtB,AAAqB,IAAC,AACxB,CAAmC,QAAQ,EAAE,OAAtC,EAAW,QAAD,IAAC,GACpB,EAAc,EAAW,OAAzB,CAAwB,IAAa,AAAZ,EAEgB,QAAQ,EAAE,AAAjD,OAAO,EAAW,QAAD,QAAC,GACpB,EAAe,EAAW,QAA1B,AAAyB,QAAiB,AAAhB,EAEU,QAAQ,EAA1C,AAA4C,OAArC,EAAW,QAAD,GAAC,GACpB,EAAc,EAAW,OAAzB,CAAwB,GAAC,AAAW,CAExC,CACF,CAEA,MAAO,aAAE,WAAW,IAAE,YAAY,EAAE,CAAA,CAAa,AACnD,CAKO,SAAS,EAAqB,CAAI,CAAQ,CAAO,EAA0B,AAGhF,GAAI,EAAI,CAAD,OAH2B,SAG1B,EAAqB,AAAiC,QAAQ,SAAlC,EAAI,CAAD,gBAAC,CAAgC,CACtE,IAAM,EAHI,AAGO,EAAI,CAAD,GAAd,CAHI,YAGW,CAEjB,EAAS,MAAD,IAAC,EAA6C,QAAQ,EAAvC,AAAyC,OAAlC,EAAS,MAAD,IAAC,EACzC,EAAK,EAAD,UAAa,CAAC3D,EAAAA,+BAA+B,CAAE,EAAS,MAAD,IAAW,CAAC,CAGrE,EAAS,MAAD,OAAC,EAAmD,AAAlC,QAA0C,EAAE,OAArC,EAAS,MAAD,OAAC,EAC5C,EAAK,EAAD,UAAa,CAACK,EAAAA,wCAAwC,CAAE,CAAC,EAAS,MAAD,OAAc,CAAC,CAExF,AAFyF,CAG3F,gHAOO,SAAS,AAA8B,CAAa,EAAmC,AAC5F,GAAI,CAAC,EAAc,OAAO,EAAE,EAAV,GAAe,EAAE,IADQ,CACH,EAAE,QAAQ,EAAE,KAAK,CACvD,CADyD,MAClD,IAAI,CAGb,IAAM,EAAQ,EAAc,CAAtB,MAA6B,EAAE,EAAV,GAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,QAElE,AAAI,AAAC,GAAU,KAAK,CAAN,AAAO,OAAO,CAAC,IAA2B,CAAtB,AAAuB,EAAE,CAApB,EAAM,GAAD,GAAC,CAKtC,EAAM,GAAD,AAAI,CAAC,AAAC,IAAI,AAAqB,CACzC,EADoB,EAChB,CAAE,EAAK,EAAD,OAAU,EAAE,IAAI,CAC1B,WAAW,CAAE,EAAK,EAAD,OAAU,EAAE,WAAW,CACxC,MAAM,CAAE,EAAK,EAAD,OAAU,EAAE,MAAM,CAClC,CAAG,CAAC,CAAC,AARM,IAAI,AASf,0BAKO,SAAS,AAAsB,CAAI,CAAQ,CAAa,CAA6B,CAAM,EAAiB,AAGjH,IAAM,EADY,GACgB,GADhB,EAFiB,GAGO,CAApC,AAEN,GAAI,AAFmB,CAElB,GAAkB,CAAC,IAFQ,CAEH,CAAC,IAAzB,GAAgC,CAAC,GACpC,OAIF,IALoD,AAK9C,CAL+C,CAKlC,CALoC,EAKrB,KAA5B,CAA4B,EAAU,CAAC,CAAb,AAC1B,EAAc,EAAe,MAAA,CAAS,AAAtC,EAAmD,EAAe,CAAtC,IAA2C,CAAjC,AAAkC,GAAc,EAAE,CAAvB,AAEvE,GAAI,AAAuB,CAF6D,AAE5D,CAF4D,CAE1D,GAAd,KAAD,CAAC,CACd,OAKF,IAAM,EAAY,EAAiB,GAC/B,EADE,CAEJ,EAAK,EAAD,EADO,CADoE,CAClE,AADmB,MAEf,CAACC,EAAAA,oCAAoC,CAAE,IAAI,CAAC,SAAS,CAAC,IAIzE,IAAM,CAJ4E,CAAC,AAIrD6D,CAJsD,CAItDA,iBAAxB,SAAkD,CAAC,GACzD,EAAK,EAAD,IADgE,CAAC,KACpD,CAACzC,EAAAA,8BAA8B,CAAE,IAAI,CAAC,SAAS,CAAC,IAGjE,IAAI,EAAmB,CAAC,CACpB,EAAoB,CAAC,CACrB,EAAc,CAAC,CAGnB,CARsF,CAAC,CAAC,CAQnF,AALD,GAEA,CAGO,CAJP,IAIkB,EAAX,AAAwB,CAEjC,IAAM,EAAS,EAFgB,AAEa,EAAtC,CACN,GAAoB,CAD+B,CAAC,AACzB,IAAD,OAA1B,AAAsC,CACtC,GAAqB,EAAO,CAFe,GAEhB,QAA3B,AAAwC,CACxC,GAAe,EAAO,IAAD,EAArB,KAAiC,CAGjC,EAAqB,EAAM,EAAF,AAC3B,CAGI,EAAmB,CAAC,CAJY,CAAC,AAIX,AACxB,EAAK,EAAD,IALgB,GAIlB,GACe,CAACxF,EAAAA,mCAAmC,CAAE,GAErD,EAAoB,CAAC,EAAE,AACzB,EAAK,EAAD,IAHmE,CAAC,GAEtE,EACe,CAACC,EAAAA,oCAAoC,CAAE,GAEtD,EAAc,CAAC,EAAE,AACnB,EAAK,EAAD,EADF,GAFuE,CAAC,IAGzD,CAACC,EAAAA,mCAAmC,CAAE,EAE3D,SAFsE,CAAC,qNCzJhE,SAAS,EACd,CAAe,CACf,CAAO,EAEP,OAAO,IAAI,KAAK,CAAC,EAAiB,CAJO,MAKvC,CAAM,EAAQ,EAAS,AAAlB,CADyB,CAClB,EAAe,AAClBxF,CADY,CAAkC,AAC9CA,SAAS,CACd,CACE,EAAE,CAAE,qBAAqB,CACzB,IAAI,CAAE,cAAc,CACpB,UAAU,CAAE,CACV,CAACrK,EAAAA,gCAAgC,CAAA,CAAG6X,EAAAA,gBAAgB,CACpD,CAAC9X,EAAAA,4BAA4B,CAAA,CAAG,qBAAqB,CACrD,CAAC2S,EAAAA,+BAA+B,CAAA,CAAG,cAAc,AAC7D,CAAW,AACX,CAAS,CAAA,AACD,IACE,GAAI,CADE,IA6CkD,IAEA,IA7CtD,IAAM,EAAgB,AA2CgC,IAEA,GA7CzB,CAAC,GAAxB,EAA6B,CAAC,EAAQ,EAAS,EAAX,CACpC,CADmD,CAClC,AAD4B,AAAO,EAC9B,EAAD,IAAC,CAAS,CAAA,CAAK,CAAI,AAAxC,CAAyC,CAAC,CAAA,CAAgC,CAAA,CAAE,CAG9E,GAAgB,IAAA,EAAuC,KAAzC,GAAiD,EAAvC,AAAyC,OAAlC,EAAe,IAAA,GAChD,EAAK,EAAD,CAD2C,SAC9B,CAACoF,EAAAA,2BAA2B,CAAE,EAAe,IAAI,CAAC,CACnE,EAAK,EAAD,EADyD,MAC9C,CAAC,CAAC,aAAa,EAAE,EAAe,IAAI,CAAC,CAAA,CAAA,EAIA,GAJN,CAIM,EAAA,EAAA,MAAA,CAUA,GAVA,CAAA,GACA,GAAA,UAAA,CAAA,CAAA,OAAA,MAEA,EAAA,IAAA,CAAA,CAFA,EAiCA,EA9BA,EADA,EAEA,EA+BA,EAjCA,AAGA,CAHA,CADA,CAgCA,CAhCA,CAkCA,AAhCA,EAEA,GAJA,AAGA,CAiCA,EApCA,EAAA,AAoCA,KAAA,CAAA,EAAA,OACA,CAAA,EAAA,EAAA,AADA,AACA,EAAA,EAAA,AACAzN,CADA,CAAA,AACAA,CAtCA,QAsCA,CACA,CACA,EAAA,CAAA,qBAAA,CACA,IAAA,CAAA,cAAA,CACA,UAAA,CAAA,CACA,CAAArK,EAAAA,gCAAA,CAAA,CAAA6X,EAAAA,gBAAA,CACA,CAAA9X,EAAAA,4BAAA,CAAA,CAAA4Q,EAAAA,uCAAA,CACA,CAAA+B,EAAAA,+BAAA,CAAA,CAAA,cAAA,AACA,CAAA,AACA,CAAA,CACA,MAAA,IAAA,AACA,GAAA,CADA,AAEA,IAAA,EAAA,GAAA,IAAA,CAEA,GAAA,GAFA,GAEA,EAAA,EAAA,OAAA,IACA,EAAA,EAAA,CADA,SACA,CAAAqF,EAAAA,8BAAA,CAAA,GACA,EAAA,EAAA,EADA,CAAA,OACA,CAAAD,EAAAA,2BAAA,CAAA,GACA,EAAA,EAAA,EADA,CAAA,KACA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA,EAKA,GALA,CAKA,EAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EACA,EAAA,GAAA,EADA,CACA,IAAA,KAAA,CACA,EAAA,GAAA,GAAA,MAAA,CACA,GAAA,KAAA,GAAA,EAAA,OAAA,GACA,EAAA,EAAA,CADA,SACA,CAAAlN,EAAAA,gCAAA,CAAA,GAIA,IAAA,CAJA,CAAA,AAIAoN,EAAAA,CAAA,4BAAA,CAAA,GACA,GACA,EAAA,AADA,EACA,AADA,GADA,CAAA,MAEA,CAAAhI,EAAAA,wCAAA,CAAA,IAAA,CAAA,SAAA,CAAA,IAIA,CAJA,CAAA,CAAA,CAIA,EAAA,EAAA,KAAA,GAAA,IAAA,CACA,EAAA,EAAA,KAAA,IAAA,IAAA,CACA,EACA,EAAA,EAAA,IAAA,CAAA,CAAA,CADA,AACA,CAAA,CAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAEA,GAAA,GAAA,EAAA,CACA,IAAA,EAAA4H,CADA,CACAA,CADA,aACA,YAAA,CAAA,GACA,UADA,CAAA,SACA,CAAA,kBAAA,CAAA,CAAA,CAAArH,EAAAA,yBAAA,CAAA,EAEA,IACA,EAAA,EAAA,QAHA,CAAA,CAEA,AACA,CAAAC,CADA,CACAA,oCAAA,CAAA,GAGA,IAAA,EAAAT,EAAAA,OAHA,CAAA,KAGA,QAAA,CAAA,GACA,EAAA,KAAA,CAAA,KADA,CACA,CADA,AACA,CAAA,GAAA,EAAA,MAAA,CAAA,CAAA,CACA,EADA,AACA,CADA,CACA,CADA,UACA,CAAA,CACA,CAAAM,EAAAA,+BAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,GACA,CAAAK,EAAAA,WADA,CAAA,mCACA,CAAA,CAAA,CACA,CAAA,CAAA,AACA,CAGA,IAAA,EAAA,IALA,AAKA,EAAA,OAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,CAOA,CAPA,CAAA,KAGA,GACAuH,EAAAA,QADA,EAAA,WACA,CAAA,EAAA,EAAA,CAAA,IAAA,CAAA,GAGA,CACA,CAJA,AAIA,CAJA,CAAA,EAGA,EACA,EAAA,CAQA,EARA,IACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAzX,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CACAyJ,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,yBAAA,AACA,CAAA,AACA,CAAA,CAAA,CACA,CACA,CACA,CAAA,CAGA,CALA,AAKA,CAAA,EA7GA,CACA,CAAA,MAAA,EAAA,CAQA,EATA,AACA,IACA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAzJ,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CACAyJ,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,yBAAA,AACA,CAAA,AACA,CAAA,CAAA,CACA,CACA,CACA,CAAA,CAGA,CALA,AAKA,CACA,AADA,uBA0HA,SAAA,AACA,CAAA,CACA,CAAA,EAIA,OAFA,EAAA,KAJA,EAIA,CAAA,EAAA,EAAA,OAAA,CAAAiM,AAAA,EAAAA,aAAA,YAAA,CAAA,IAEA,CACA,EAHA,CAAA,CAAA,KAEA,kJC9M3D,SAAiD,AAAxC,CAAkD,EAAiD,AAEjH,QAAmB,IAAf,KAAwB,EAAE,EAEvB,AAAI,CAFP,EAEqB,GAAA,EAAO,EAArB,AAAkC,GAAG,CACvC,CAL4C,AAIH,GAAlB,KACd,CACP,GAAc,GAAG,CACnB,CADqB,EAAnB,IACK,MAEd,CAEJ,MAFW,SAAS,gFCRb,MAAM,QAAoB,GAApB,EAAoB,CAAM,AAG9B,WAAW,CACT,CAAO,CACd,EAAyB,MAAjB,AAAuB,CAC/B,CACA,KAAK,CAAC,GAAO,IAAA,CAAA,OAAA,CAAA,EAEb,IAAI,CAFS,AAER,QAAA,CAAW,CAClB,CACF,MAF4B,2GCXtB,EAAS1Z,IAAT,OAASA,UAAA,CAuEf,SAAS,IACP,GAAI,CAAA,CAAE,QADkB,EACP,CADmB,AACnB,CAAM,CAAC,AACtB,EADwB,KACjB,EAGT,GAHc,AAGV,CAKF,OAJA,IAAI,OAAO,CAEX,CAFa,GAET,OAAO,CAAC,QAAQ,CAAC,CACrB,IAAI,QAAQ,EAAE,AACP,CACT,CAAE,EADW,GACL,CACN,OAAO,CACT,CACF,CAMO,EARS,OAQA,EAAiB,CAAI,EAAqB,AACxD,OAAO,GAAQ,CADe,AACvB,iDAA0D,CAAC,IAAI,CAAC,EAAK,EAAD,MAAS,EAAE,CACxF,AADyF,yCAnElF,SAAS,EACd,GAAI,CAKF,OADA,GAL4B,CAKxB,EALoC,MAK5B,CAAC,EAAE,CAAC,EACT,CACT,CAAE,EADW,GACL,CACN,OAAO,CACT,CACF,GAFgB,sBAUT,SAAS,EACd,GAAI,CAEF,OADA,IAAI,GAF4B,GAAY,MAE5B,CAAC,EAAE,CAAC,EACb,CACT,CAAE,EADW,GACL,CACN,OAAO,CACT,CACF,GAFgB,oBAtCT,SAAS,EACd,GAAI,CAEF,OADA,IAAI,CAF0B,GAAY,MAE5B,CAAC,EAAE,CAAC,EACX,CACT,CAAE,EADW,GACL,CACN,OAAO,CACT,CACF,GAFgB,eAsDa,oBAXtB,SAAS,EACd,MAAO,OADsB,GAAY,EACrB,GAAU,CAAC,CAAC,CAAZ,CAAmB,IAAD,GAAQ,AAChD,wBAyCO,SAAS,EACd,GAA2B,QAAQ,EAA/B,AAAiC,IADJ,GAAY,AAClC,WAAA,CACT,OAAO,EAGT,EAHa,CAGT,CAAC,IACH,OAAO,EAKT,GALc,AAKV,CANkB,CAMD,CANG,CAMI,CANF,GAMC,CAAM,CAAC,CAChC,CADkC,IAAhB,EACX,EAKT,EALa,EAKT,GAAS,EACP,CADF,CACQ,CADM,AACZ,CAAa,IAAD,IAAS,CAE3B,GAAI,GAAA,AAAiD,UAAU,EAApD,AAAsD,OAA9C,EAAI,CAAD,YAAC,CACrB,CADmC,EAC/B,CACF,IAAM,EAAU,EAAI,CAAD,YAAc,CAAC,QAAQ,CAAC,CAC3C,EAAQ,KAAD,CAAC,EAAS,EACjB,EADqB,AACjB,CAAD,GAAK,CAAC,WAAW,CAAC,GACjB,EAAQ,EADgB,CAAC,EAClB,QAAc,EAAE,KAAK,EAAE,CAEhC,EAAS,EAAiB,EAAQ,AAAlC,KAAiC,OAAR,CAAsB,CAAC,MAAK,CAAC,CAExD,EAAI,CAAD,GAAK,CAAC,WAAW,CAAC,EACvB,CAAA,AAAE,IAD4B,CAAC,CACtB,EAAK,CAAF,AACVE,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAE,EAC/G,CADkH,AAIpH,CAJqH,MAI9G,CACT,KADe,sBAoBR,SAAS,EAMd,GAAI,CAAC,IACH,OAAO,EAGT,GAHc,AAGV,AAVgC,CAMd,AAQpB,EAd8C,AAMxB,EAAE,GAKxB,IAAI,OAAO,CAAC,GAAG,CAAE,CACf,cAAc,CAAE,QAAA,AACtB,CAAK,CAAC,EACK,CACT,CAAE,EADW,GACL,CACN,MAAO,EACT,CACF,EAFgB,4BA3BT,SAAS,EACd,MAAO,iBADgC,EAChC,CAD4C,EACrB,CAChC,KADsC,iLC1GtC,SAAS,EAAgB,CAAe,CAAiC,GAAgC,CAAK,EAAQ,CAChH,IAAyBsb,AADP,EACOA,OAD8D,OACvF,IAAwB,CAAoB,EAAA,CAAE,EAAE,AAIpDtO,EAAAA,IAAI,CAACpN,EAAAA,UAAU,CAAE,OAAO,CAAE,SAAU,CAAa,EAA0B,AACzE,OAAO,SAAU,GAAG,CAAI,EAAe,AAQrC,IAAM,EAAe,AAAI,KAAK,EAAE,CAE1B,EAFA,MAEE,CAAM,KAAE,CAAA,CAAA,CAAQ,EAAe,GACjC,CADqC,CAAC,AACN,MACpC,CAFoC,CAGpC,CAFe,CACX,OACK,CAAE,QACT,MAAM,AACN,CACV,CAAS,CADI,AAEL,cAAc,CAAyB,IAAvBwB,AAA2B,EAA3BA,kBAAkB,EAAC,cAEnC,EACA,OAAO,CAAE,AA+MgB,EAhNb,OAgNa,CAAA,EAAA,AACA,GAAA,CAAA,EAAA,EAAA,CAAA,EAhNO,AAkNP,GAAA,CACA,GACA,AAJA,CAAA,CADA,CACA,KAIA,EAAA,OAAA,GACA,IAAA,GAAA,GACA,EAFA,OAEA,GADA,AACA,GACA,EAAA,OAAA,CAEA,CADA,CAFA,GACA,EAEA,IAAA,OAAA,CAAA,EAAA,OAAA,EAAA,AAGA,GAAA6M,CAHA,CAGAA,SAAA,CAAA,GACA,OAAA,IAAA,CADA,CAAA,EAAA,GACA,CAAA,EAAA,OAAA,CAAA,AAEA,CAAA,IAFA,CAEA,CAEA,CAGA,EApOQ,EACzC,CAAO,CADsC,AAWvC,CAXwC,MAIpC,AAAC,GACH7N,EAAAA,UADkB,EAAE,GACL,CAAC,OAAO,CAAE,CACvB,GAAG,CAAW,AACxB,CAAS,CAAC,CAIG,EAAc,KAAK,CAACR,EAAAA,GAAP,OAAiB,CAAE,GAAM,CAAF,CAAC,EAAK,CAC/C,MAAO,IACD,EACF,EAAgB,AAFL,GAIXQ,EAAAA,AAJ0B,GAEF,CAAC,EADR,EAAE,AACJ,OAEA,CAAC,OAAO,CAAE,CACvB,GAAG,CAAW,CACd,YAAY,CAAyB,IAAvBgB,AAA2B,EAA3BA,kBAAkB,EAAC,CACjC,QAAQ,EACtB,CAAa,CAAC,CAGG,GAET,AAAC,IACChB,CAHe,AAEX,CACJA,IADgB,WACD,CAAC,OAAO,CAAE,CACvB,GAAG,CAAW,CACd,YAAY,CAAyB,IAAvBgB,AAA2B,EAA3BA,kBAAkB,EAAC,OACjC,CACZ,CAAW,CAAC,CAEEd,CAHG,CAGHA,OAAO,CAAC,KAAK,CAAA,GAAqB,IAAhB,EAAM,GAAD,AAAoB,EAAnB,AAAqB,GAK/C,EAAM,GAAD,EAAC,CAAQ,EAAa,KAAK,CAChCY,EAAAA,EAD0B,sBACF,CAAC,EAAO,GAAF,UAAe,CAAE,CAAC,CAAC,EAQnD,IAAM,EAAS6C,EAAAA,EAAT,OAAkB,EAAE,CACpB,EAAgB,GAAQ,GAAF,KAAtB,EAAkC,EAAE,CAAC,yBAAA,EAA6B,QAAQ,CAGhF,GACE,CAHsC,IAAlB,CAAuB,EAI3C,KADA,AACA,KAJoB,GAIH,SAAA,GACE,CAA/B,gBAA+B,GAAlB,EAAM,GAAD,IAAC,EACa,aAAA,GAAlB,EAAM,GAAD,IAAC,EACY,oDAAlB,EAAM,GAAD,IAAa,AAAZ,CAA6D,CAErE,EADA,CACI,CAEF,IAAM,EAAW,AADL,GACQ,CADJ,EACV,CADa,CAAC,EAAY,SAAD,AAAU,CAAC,GAAG,CAAC,CACzB,IAAI,CAEH,QAAQ,EAAE,CAA5B,EAEF,EAAM,GAAD,IAAC,CAAU,CAAC,AAFf,EAEe,EAAA,GAAA,IAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAIA7C,EAAAA,CAJA,uBAIA,CAAA,EAAA,GAAA,wBAAA,CAAA,EAEA,CAAA,KAFA,AAEA,CAFA,AAIA,CAMA,MAAA,CACA,CAAA,CAEA,CACA,AADA,CACA,AAJA,CAIA,AACA,CAEA,eAAA,EAAA,CAAA,CAAA,CAAA,EAAA,AACA,GAAA,GAAA,EADA,EACA,CAAA,CACA,IAAA,EAAA,EAAA,CAAA,GAAA,CACA,EAAA,EAAA,EAAA,OAAA,CAAA,CAAA,CAGA,EAAA,UAAA,CACA,KACA,CADA,CACA,EAAA,CAFA,GAEA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAEA,CAFA,AAEA,CAAA,AACA,CAAA,CACA,EAAA,GAGA,AAHA,GAGA,CAHA,CAIA,EADA,GACA,GADA,AACA,CACA,IAAA,EACA,GAFA,AAEA,CAEA,EAAA,IAHA,MAGA,CAAA,KACA,CADA,CACA,EAAA,IAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAEA,CAAA,AAFA,CAEA,AACA,CAAA,CAAA,IAAA,CAAA,AAGA,GAAA,MAAA,CAAA,CAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAEA,KAFA,OAEA,CAAA,GAEA,IACA,AADA,EAAA,EAEA,CAJA,CAAA,CAIA,EAEA,CAAA,EAFA,GAEA,CACA,CAHA,EADA,AAIA,CACA,CALA,AAKA,GADA,IACA,CADA,AAEA,YAAA,CAAA,EACA,CACA,CAEA,QAJA,CAAA,GAIA,CAAA,GAEA,EAAA,WAAA,CAAA,CAAA,CACA,EAAA,EAHA,AAGA,CAHA,GAGA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAEA,CAFA,AAEA,CAAA,AACA,CACA,CAEA,SAAA,EAAA,CAAA,EAAA,AAEA,IAAA,EACA,EAHA,CAGA,CACA,EAAA,EAAA,KAAA,CAAA,CAAA,AACA,CAAA,KAAA,CACA,EAJA,IAKA,CAGA,CANA,CAMA,EAAA,KACAd,CADA,CACAA,IADA,WACA,CAAA,CADA,oBACA,CAAA,CACA,YAAA,CAAA,IAAA,AAAAgB,EAAAA,kBAAA,EAAA,UACA,CACA,CAAA,CAAA,AACA,CAAA,CACA,AADA,CAGA,EALA,OAKA,EAAA,CAAA,CAAA,CAAA,EAAA,AACA,MAAA,CAAA,CAAA,GAAA,QAAA,SAAA,GAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,CAEA,CAHA,QAGA,EAAA,CAAA,EAAA,MACA,OADA,CACA,EAAA,OAAA,EACA,EAGA,EAIA,EAAA,AARA,EAQA,AAPA,EAGA,CAIA,CAJA,CAIA,CAAA,CACA,CADA,CACA,GAAA,CAGA,EAHA,AAGA,MAAA,EAAA,CACA,CADA,CACA,MAAA,EAAA,EAAA,CAGA,EAAA,CAXA,EAAA,AAYA,CAMA,SAAA,EAAA,CAAA,EACA,AADA,GACA,CAAA,EAAA,CAAA,EAAA,AADA,MACA,CAAA,AACA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAGA,GAAA,CAAA,GAAA,EAAA,MAAA,CAAA,CACA,GAAA,CAAA,EAAA,EAAA,CAAA,EAEA,CAFA,CAAA,IAEA,CACA,AAHA,GAGA,CAAA,EAAA,GACA,KADA,CAAA,AACA,CAAA,EAAA,EAAA,EADA,CACA,EAAA,GAAA,EACA,MAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA,WAAA,GAEA6M,EAAAA,SAAA,CAAA,IAAA,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EACA,MAAA,CAAA,EAAA,MAAA,CAAA,CAAA,WAAA,GACA,KAAA,AACA,CAAA,AACA,CAEA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,MAAA,CACA,GAAA,CAAA,EAAA,GAAA,AACA,EADA,IACA,CAAA,EAAA,EAAA,CAAA,CADA,CACA,KAAA,CAAA,CAAA,MAAA,CAAA,EAAA,CAAA,KAAA,CAAA,CAAA,WAAA,EAAA,CAAA,KAAA,AACA,CAAA,AACA,qCA7O1B,SAA2C,AAAlC,CAAyC,EAA0C,AACjG,IAAM,EAAO,EAAP,mBAA4B,CAClC/N,EAAAA,AAF+C,UAErC,CAAC,EAAM,EAAF,CACfC,EAAAA,EADwB,CAAC,YACV,CAAC,EAAM,EAAF,EAAQ,EAAgB,GAC9C,UAD6C,AAAc,CAAC,CAAC,uBApBtD,SAAS,AACd,CAAO,CACP,CAAoB,EAEpB,IAAM,EAAO,EAAP,KAAc,CACpBD,EAAAA,SAL4C,CAKlC,CAAC,EAAM,EAAF,CACfC,EAAAA,EADwB,CAAC,YACV,CAAC,EAAM,EAAF,EAAQ,OAAgB,EAAW,GACzD,GAD6C,CAAU,aAAsB,CAAC,CAAC,gGCIxE,SAAS,EAEc,MAAO,IAFT,CAEc,AAC1C,EAH0C,kBAPnC,SAAS,EACd,MAAO,AAAqC,OADf,GAAY,CAC3B,yBAAA,EAA6C,CAAC,CAAC,yBAAyB,AACxF,mGCCA,SAAS,EAAe,CAAG,CAAO,CAAO,EAAe,AAEtD,OAFqB,AAEd,EAAI,CAAD,MAAQ,CAAC,EACrB,KAD4B,CAAC,OAjBtB,SAAS,EAGd,MACE,CAACob,AAJoB,EAIpBA,CAJgC,cAIjB,EAAC,EACgE,qBAAjF,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAoB,IAAnB,OAAO,AAAY,OAAZ,CAA0B,QAAU,CAAC,CAE/E,eA4BO,SAAS,AAAc,CAAU,CAAU,EAAsB,CAAM,EAAiB,AAC7F,GADwB,CACpB,EAEJ,CAFO,EADuD,AAG1D,CACF,EAAM,EAAe,EAAgB,EACvC,CAAE,KAAM,CAER,CAEA,AALiD,AAA3B,CAA4B,CAAb,CAKjC,CAAC,EACH,CADM,EAAE,AACJ,CACF,GAAM,KAAE,CAAA,CAAI,CAAI,EAAe,EAAgB,SAAS,CAA1B,AAA2B,CACzD,CAD6C,CACvC,EAAe,EAAgB,CAAC,EAAA,GAAA,CAAA,CAAA,EAAlB,EAAe,SAAG,EAAA,EAAA,CAAA,CAAA,AACA,CAAA,KADA,AACA,CAEA,CAGA,OAAA,CACA,EADA,kHC3DrC,SAAS,EAEd,OAFuB,AAEhB,CACT,EAHqC,IAErB,MAAA,qCAAW,eAAA,CAAgB,CAACC,KAAAA,SAAS,EAAC,IAAK,YCCpD,SACLC,AADc,CDDiE,ACExE,CACP,CAAU,ADHuE,CCIjF,ADJkF,CCIhE,EAElB,IAAM,EAAWA,CAAO,AALI,CAKH,EAAW,CAEpC,CAFM,EAEkB,IAFW,MAED,EAA9B,AAAgC,OAAzB,GAKX,GAAI,CACFA,CANS,AAMF,CAAC,EAAU,CAAI,CACxB,CAAE,KADkB,AACZ,CAEN,MAAM,CAAC,GAHiC,WAGnB,CAACA,EAAS,EAAY,CACzC,IAD2B,CACtB,CAAE,CADgC,CAEvC,QAAQ,EAAE,EACV,EADc,EADW,QAEb,EAAE,EACd,EADkB,QACR,EAAE,CAClB,CAAK,CAAC,AACJ,CAGA,AALoB,GAKhBA,EAAQ,OAAA,AAAD,GAAa,EACtB,GAAI,CACFA,EAF4B,AAEpB,EAFsB,KAEvB,AAAC,CAAU,CACpB,CAAE,KAAM,CACN,MAAM,CAAC,GAF6B,WAEf,CAACA,EAAS,OAAF,EAAW,CAAE,CACxC,KAAK,CAAE,EACP,QAAQ,EAAE,EACV,EADc,EADW,QAEb,EAAE,EACd,EADkB,QACR,EAAE,CACpB,CAAO,CAAC,AACJ,CAFoB,CAIxB,iGCfO,SAAS,EAAgB,CAAQ,CAAU,EAAoB,EAAK,EAAW,AAiBpF,EAjBwD,GAA3B,CAiBtB,CAAC,CAfN,GACC,GAEC,CAAC,CAHH,CAeM,AAZM,EAFX,IACL,AACe,IAAW,CAAC,GAAG,CAAA,EAExB,CAAC,CADP,CACgB,KAAK,CAAN,AAAO,SAAS,CAAA,EAEzB,CAAC,CADP,CACgB,MAAD,IAAW,CAAC,GAAG,CAAA,CAL9B,CAOM,CAAC,CADP,CACgB,KAAK,CAAN,AAAO,KALtB,uBAEA,OAGwD,CAAC,CAAC,CAAA,AAMlC,KAAa,OAAa,CAAC,CAAd,CAAuB,MAAD,EAAS,CAAC,eAAe,CACpF,AADqF,CAI9E,SAAS,CAV0C,CAUrC,CAAS,CAAV,CAA6C,AAC/D,IAAM,EAAiB,YAAjB,EAA+B,CAC/B,EAAa,QAAb,UAbR,6CAaoF,CAC5E,EAAiB,YAAjB,uBAAoD,CAE1D,OAAO,AAAC,IAAI,AACV,IAAM,CADiB,CACF,EAAK,EAAD,GAAM,CAAC,GAChC,GAAI,EACF,MAF4C,AAErC,CAFsC,AAG3C,GAFY,EAAE,GAEN,CAAE,CAAC,MAAM,EAAE,CAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrC,QAAQ,CAAE,CAAY,CAAC,CAAC,CAAC,AACjC,CAAO,CAGH,IAAM,EAAY,EAAK,EAAD,GAAM,CAAC,GAE7B,GAAI,EAAW,EAFwB,CAAC,EAGlC,EADO,AAEP,EACA,EAFM,AAGN,EACA,AAHM,EAKV,GAAI,CAHQ,AAGC,CAAC,CAAC,AAJC,CAIA,CAFF,AAEI,CAGhB,IAAI,EAAc,CAFlB,EAAe,CAAS,CAAC,EAAC,AAAC,EAEI,GAAD,CAF9B,OAE0C,CAAC,GAAG,CAAC,CAK/C,GAJsC,GAAG,EAAE,CAAvC,CAAY,CAAC,EAAc,CAAC,CAAA,EAC9B,IAGE,CAJa,CAIC,CAAC,CAAE,CACnB,EAAS,AAJE,EAIW,AAJT,EAGX,AACF,GAA2B,CAAC,CAAC,CAAE,EAAV,CACrB,EAAS,EAAa,EAAtB,EAD0C,CAAC,AAChB,CAAC,EAAc,CAAC,CAAtB,AAAuB,CAC5C,IAAM,EAAY,AADU,EACH,IAAD,GAAQ,CAAC,SAAS,CAAC,CACvC,EAAY,CAAC,EAAE,CACjB,EAAe,CADb,CAC0B,KAAK,CAAC,EAAlC,AAA8C,CAAC,CAApB,AAAqB,CAChD,EAAS,EADyB,AAClB,EAAhB,EAAe,CAAM,CAAC,CAAC,CAAE,GAE7B,CACA,KAHsC,CAAC,CAG5B,CACb,AADE,CAGE,IACF,EADQ,AACG,CAJS,CAGV,AAEV,EAAa,EADb,AAAiB,CAIJ,GAHM,EAAnB,QAG0B,EAAE,CAA1B,IACF,EADE,AACW,OACb,CADA,CAAsB,AACP,SAAS,CAAxB,GAGmB,IAAjB,IACF,CAD4B,CACf,CADiB,EACHC,EAAAA,CADzB,EACF,EAAa,WAA8B,CAC3C,EAAe,EAAW,CAAC,EAAA,EAAA,CAAZ,AAAY,EAAA,AAA3B,EAA2B,CAAA,CAAA,GAGA,GAHA,CAGA,EAAAtU,CAHA,CAGAA,IAAA,mBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA,AAEA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EACA,EAAA,CAAA,CADA,AACA,EADA,AACA,EAAA,AAGA,IAAA,EAAA,EAAA,AAmCA,MAnCA,GAmCA,CAAA,EAAA,AACA,EApCA,CAoCA,CApCA,AAqCA,OAFA,AAEA,SAAA,CAAA,EACA,CAAA,KADA,AACA,CADA,AAEA,MACA,CACA,AAFA,EAvCA,OAuCA,CAvCA,CAAA,CACA,MAAA,CADA,AAEA,QAAA,CAAA,GAAA,EACA,MAAA,AADA,CACA,GAAA,IAAA,CADA,EAEA,EADA,MACA,CAAA,CADA,CAEA,MAAA,AAFA,CAEA,AAFA,EAEA,CADA,AACA,CAAA,CAAA,CAAA,CAAA,CACA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CADA,AACA,CAAA,CACA,MAAA,CAAA,EAAA,GADA,AACA,EAAA,CAAA,EACA,AADA,CAEA,AADA,CAGA,GAJA,AAIA,CAJA,CAAA,AAIA,EAAA,GAAA,CAAA,GACA,MAAA,CACA,IAFA,CAAA,EAAA,CAEA,CAAA,CACA,CAIA,AAJA,CAIA,AACA,CAYA,AAlBA,SAkBA,EAAA,CAAA,EAAA,AACA,OAAA,QADA,AACA,CAAA,GAAA,EAAA,CAAA,EAAA,CAAA,OAAA,CACA,QADA,4CALA,SAAA,CAAA,EAAA,AACA,MAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,AACA,CAFA,KACA,CAAA,gIC1E5B,SAAS,AACd,CAAK,CACL,CAAG,CACH,CAAqB,EAErB,IAAM,EAAW,EAAM,CAAN,CAAU,CAAD,CAApB,EAL6B,GAKD,CAAC,YAAY,CAAE,EAAE,CAAA,MAAI,EAGjD,EAAQ,EAAM,CAAd,EAH0D,AAG7C,KAAS,CAAC,YAAA,CAAe,EAAM,GAAD,KAAS,CAAC,YAAA,CAAe,CAAA,MAAI,EACxE,EAAS,EAAM,EAAf,CADiF,AACnE,KAAS,CAAC,UAAA,CAAa,EAAM,GAAD,KAAS,CAAC,UAAA,CAAa,CAAA,MAAI,EAE3E,MAAO,CAF6E,SAGlF,EACA,MADQ,AACF,CAAE,EAAsB,GAC9B,KADsC,CAAC,EAC/B,CAAE,EAAM,GAAD,EADc,OACb,EAAgBsU,EAAAA,gBAAgB,OAChD,KAAK,IACL,EACA,IADM,EACA,CAAE,EAAWC,EAAAA,IAAX,WAA0B,CAAC,QAAY,AAAJ,CAC/C,AAD+C,CAC5C,AACH,OAF4D,WApErD,SAAS,AACd,CAAW,CACX,CAAY,CACZ,CAAY,CACZ,CAAQ,EAER,IAN2B,AAMrB,EAAQ,GAAR,CACF,GAAY,EACZ,EAFqB,CAEX,AADO,CADM,AACvB,CAkBJ,EAjBkB,AAAd,KAEJ,WAAW,CAAC,KACV,CADgB,GACV,EAAS,EAAM,EAAf,CAAc,MAAU,EAAE,EAEd,IAAd,CAAc,EAAS,EAAS,EAAe,EAAxB,AAAvB,EACF,GAAY,EACR,CAF8B,CAClB,CAEd,AAH2D,CAC7D,CAD+D,EAEpD,CAKT,CALW,CAKF,CAJD,CAIgB,CAJd,CAIV,EACF,GAAY,CAAA,CAAK,AAErB,CAHe,AAGd,CAAE,CAHuC,CACtC,AAEC,CAHuC,AAGtC,CAEC,CACL,IAAI,CAAE,KACJ,CADU,CACJ,GAAD,EAAM,EAAE,AACf,CAAC,CACD,OAAO,CAAG,AAAD,IACP,CADa,CACH,CACZ,CAAC,AACL,CAAG,AACH,CAJiC,CAC3B,AAAe,wFCjDd,MAAM,AAGJ,MAHU,CAAO,IAGN,CAAkB,CAAQ,CAAU,CAAA,IAAA,CAAA,QAAA,CAAA,EACpD,IAAI,CAAC,CAD+C,KAC/C,CAAS,IAAI,GAAG,AACvB,CAGO,CAJwB,GAIpB,IAAI,EAAW,CACxB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,AACzB,CAGO,GAAG,CAAC,CAAG,CAAoB,CAChC,IAAM,EAAQ,GAAR,CAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,AACjC,CADkC,OACpB,IAAV,EAMJ,GANI,AAAmB,EAAE,EAIzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,AACtB,CADuB,GACnB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAK,CAAF,EACZ,CACT,CAF4B,AAKrB,CALsB,EACf,AAIJ,CAAC,CAAG,CAAK,CAAK,CAAW,CACjC,GAAI,IAAI,CAAC,MAAM,CAAC,IAAA,EAAQ,IAAI,CAAC,QAAQ,CAAE,CAGrC,IAAM,EAAU,IAAI,CAAC,AAAf,MAAqB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EACrB,CACA,IAF4B,AAExB,CAFyB,AAExB,MAAM,CAAC,GAAG,CAAC,EAAK,CAAF,CACrB,CAGO,EAJqB,CAAC,GAIhB,CAAC,CAAG,CAAoB,CACnC,IAAM,EAAQ,GAAR,CAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,AAIjC,CAJkC,MAC9B,GACF,EADO,EAAE,AACL,CAAC,MAAM,CAAC,MAAM,CAAC,GAEd,AAFiB,CAG1B,AAH2B,CAMpB,GAJO,EAIF,EAAS,CACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,AACrB,CAGO,IAAI,EAAa,CACtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,AACvC,CAGO,MAAM,EAAa,CACxB,IAAM,EAAc,EAAE,CAEtB,CAFY,MACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA,AAAC,GAAS,EAAT,AAAgB,IAAD,AAAK,CAAC,IAClC,CACT,AAFgD,CAAC,AAGnD,CAHoD,GACnC,gHC1CV,SAAS,AAAgB,CAAI,EAA0B,AAG5D,GAA2B,QAAQ,CAHN,CAGzB,AAAiC,OAA1B,WAAA,CACT,OAEF,IAAM,EAEJ/b,EAAAA,UAAU,CAAC,MAAM,CAAC,GAAG,CAFS,AAER,GAD1B,sBACmD,CAAC,CAAC,CAE7C,EAAM,GAA4B,GAAG,IAAI,AAE3C,AALN,GAKS,CAAE,SAAS,EAAE,AAClB,CAHoC,CAGhC,CAAD,QAAU,CAAC,EAElB,EAFsB,CAAC,yICpBvB,eAAe,EAAiB,CAAO,EAAyB,AAC9D,GAAI,CACFI,EAAAA,KAAK,AAFsB,CAErB,GAAG,CAAC,oBAAoB,CAAC,CAC/B,MAAM4b,EAAAA,KAAK,CAAC,GACZ5b,EAAAA,EADmB,CAAC,EACf,CAAC,GAAG,CAAC,sBAAsB,CAAC,AACnC,CAAE,AAAF,MAAS,CAAC,CAAE,CACVA,EAAAA,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAE,CAAC,CAAC,AAChD,CACF,qBAkBO,eAAe,AACpB,EAEqE,CAAA,CAAE,EAEvE,GAAM,QAL+B,CAK7B,EAAU,GAAA,CAAK,CAAf,AAAmB,CAE3B,CAAI,IAF6B,iBAE7B,GAAyB,GAAiD,GAAjD,OAA2D,EAAjD,AAAmD,OAA5C,GAAQ,GAAF,gBAAE,CACpD,EAAO,IAAD,eAAoB,CAAC,EAAiB,IAI1C,GAJiD,CAAC,CAAC,KAAV,KAIzC,GAAmB,GAAqD,UAAU,EAAE,AAAvD,OAAO,EAAO,IAAD,SAAc,EAAE,SAAA,CAC5D,EAAO,IAAD,SAAc,CAAC,SAAS,CAAC,EAAiB,IAO9CJ,EAAAA,CAPqD,CAAC,CAAC,KAAV,EAOnC,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAEnDic,CAFqD,CAErDA,eAAe,CAAC,EAAiB,IAIZ,GAJmB,CAAC,AAIvC,CAJwC,KAAV,CAIA,AAAvB,EAAyB,KAAzB,EAYP,CAPA,AAAF,CAAC,MAAQ,CAAC,GAOI,AAPD,CAAC,CAOE,uBAPF,EACZ,EADY,KACL,CAAC,GAAG,CAAC,QADA,QACA,EACZ,EADY,KACL,CAAC,GAAG,CAAC,GADA,MACA,EACZ,EADY,KACL,CAAC,GAAG,CAAC,QAAA,CADA,CAEZ,EADY,KACL,CAAC,GAAG,CAAC,MAAA,EACZ,CAFY,CAEd,CAAC,IAAQ,CAAC,GAAG,CAAC,OAAA,AAAO,GAIrB,MAAM,EAAiB,EAE3B,KAFkC,CAAC,MAAT,4FC/CnB,SAA8B,AAArB,CAAgC,EAAkB,AAGhE,OAAO,EAAY,OAAO,CAHQ,AAGP,CAAT,oBAA8B,CAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAE,OAAO,CAAC,AAClF,k+kBCgK0B,SAAA,EAOA,MAAA,WAPA,AAOA,AAIA,GAXA,kBAzLnB,SAAS,EACd,IAAM,EAeR,AAfgC,QADA,CAgBvB,EAhB8C,AAiBrD,GAAI,CACF,IAjBI,GAiBGC,EAAAA,AAjB6C,EAAE,OAezB,GAAuB,CAEhC,CAAC,CAAC,EAAA,OAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,AACA,CAAA,KAAA,CACA,MACA,CADA,AAEA,IApBxB,GAAI,EAkBoB,AAjBtB,GAAI,CAIF,OAH+C,AAGxC,IAH4C,CAAC,GAF/B,EAAE,AAEkC,CACvD,EAAE,AAAC,IAEmB,QAFP,CAAC,EAAuB,CAAE,QAAQ,CAAE,OAAA,CAAS,CAAC,AAAxB,EAEd,OAAO,AAClC,CAAE,KAAM,CAER,CAIJ,sBA2L0B,SAAA,CAAA,EAAA,AACA,GAAA,CACA,IAAA,EAAA,EAAA,EAFA,AAEA,EAAA,CAAA,EAAA,QAAA,MAAA,CAAA,CACA,EAAA,EAAA,YAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CACA,CADA,CACA,IAAA,CAAA,KAAA,CAAA,GAKA,CALA,KAKA,CACA,GAAA,EAAA,GANA,SAMA,CACA,EADA,CACA,EAAA,eAAA,AACA,CAAA,AACA,CAAA,KAAA,CACA,MAAA,CAAA,CAAA,AACA,CACA,gCArFA,SAAA,CAAA,EAAA,AACA,GAAA,CAAA,EACA,KADA,EAAA,AACA,EAGA,EAHA,CAAA,AAGA,CAHA,AAGA,KALA,EAKA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA,CAAAC,EAAAA,WAAA,CAAA,MAHA,CAGA,CAAA,EAEA,KAAA,IAAA,KAAA,GAAA,IAAA,KAAA,GAAA,IAAA,KAAA,AAKA,EALA,CAKA,EAAA,CAAA,EAAA,CAKA,EAAA,EAAA,CAAA,CAAA,CAMA,CAAA,KAKA,GAAA,CAAA,CALA,AAKA,EALA,CAKA,GAAA,CAAA,CAAA,CAAA,CAKA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,CAEA,CAAA,AAFA,CAEA,CAAA,CADA,IACA,IADA,CAAA,EAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,GACA,AADA,CAAA,EAAA,CAAA,EAIA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAEA,AAFA,GAEA,CAAA,AADA,CACA,OAAA,AADA,CAAA,EAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,EAMA,KALA,sBAnFA,SAAA,CAAA,EAAA,AACA,GAAA,CAAA,EACA,KADA,EACA,AADA,EAIA,GAHA,AAGA,CALA,MAKA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA,CAAAA,EAAAA,WAAA,CAAA,GAEA,IAFA,CAAA,GAEA,IAAA,KAAA,GAAA,IAAA,EACA,GADA,EAAA,EACA,EAIA,GAJA,AAIA,GAAA,EAAA,CACA,CADA,MACA,EAIA,EAJA,CAIA,EAAA,GAAA,GAAA,GAAA,OAAA,GAAA,CAAA,SAAA,CAAA,EAAA,CAEA,EAAA,CAAA,EAAA,AAKA,CAAA,EAAA,CAAA,GACA,AACA,EAFA,MACA,CAAA,EAAA,CACA,IADA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,EACA,EAAA,EANA,AAMA,OANA,EAYA,EAZA,KAYA,CACA,IADA,8BA1FA,SAAA,CAAA,EAAA,AAEA,GAAA,CAAA,EACA,OAAA,EAGA,GAAA,AAJA,AACA,EADA,KAIA,CANA,AAMA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAAA,EAAAA,WAAA,CALA,AAKA,OALA,GAOA,IAFA,CAAA,AAEA,IAAA,GAAA,EAAA,GAAA,OAAA,EAAA,GAAA,IAAA,EAAA,KAIA,EAAA,EAAA,CAAA,EAAA,AAKA,EAAA,EAAA,CAAA,KAAA,EACA,GAAA,CAAA,CAAA,CAAA,AAGA,CAAA,GAAA,KAAA,CAAA,IAAA,CAAA,EAAA,EAMA,EACA,GADA,gCAUA,SAAA,CAAA,EAAA,AACA,GAAA,CAAA,EACA,KADA,EAAA,AACA,EAGA,GAHA,AAGA,OAAA,CAAA,CAAA,AALA,CAKAA,EAAAA,WAAA,CAAA,OAAA,CAAA,EAEA,KAAA,IAAA,GAIA,EAJA,CAIA,CAJA,CAIA,AACA,gJCRjB,SAAA,EACA,IAAA,EACA,GAAA,CACA,EAHA,AAGA,EACA,CAJA,AACA,MAEA,CACA,CAAA,oBAAA,CAAA,CAAA,KAAA,CAAA,CAAA,QAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA,EACA,QAAA,GACA,IAAA,EAAA,AACA,CAAA,KAAA,CAEA,CACA,OAAA,CACA,UADA,+BAQA,SAAA,EAQA,IAAA,IAAA,IAPA,CACA,CAAA,KAAA,CAMA,AANA,IAMA,UARA,GAAA,UAEA,CAAA,CACA,CAAA,KAAA,CAAA,WAKA,CAAA,eALA,CAAA,CACA,CAAA,2BAAA,CAAA,CACA,CAAA,2BAAA,CAAA,CACA,CAGA,GAAA,CACA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,CAAA,OAAA,CAAA,GAAA,EAAA,EAAA,EAAA,GAAA,OAAA,CAAA,AACA,CADA,AACA,CADA,IACA,CAEA,CAEA,4BAnGF,SACL,AADc,CACA,CACd,CAAiB,CACjB,CAAW,EAEX,IAAM,EAAc,EAAe,OAA7B,CAL+B,GAKF,CAAD,CAAgB,EAAe,QAAA,EAAY,EAAb,AAAe,CACzE,EAAW,EAAe,IAA1B,IAA0B,EAAY,EAAb,AAAe,CAExC,OAC8B,IAAlC,EAAkB,GAAgB,EAD9B,MACc,EACQ,EADT,MACS,GAA1B,EAAe,MAAA,EAC0B,IAD3B,MACd,OAAO,EAAkB,WAAA,CACrB,CAAC,EADmB,AACnB,EAAA,EAAA,EAAA,EAAA,SAAA,CAAA,CAAA,EAAA,IACA,EAEA,EAAA,CAGA,IALA,WAEA,YAGA,CAAA,EAAA,OAAA,EAAA,GAAA,IAAA,CAAA,KAAA,CAAA,MAAA,CAAA,EAAA,OAAA,CAGA,mCAAA,CAAA,EACA,IAAA,GAAA,CAAA,EAAA,SAAA,cAAA,CAAA,CAAA,QAAA,CAAA,OAAA,CAAA,KAAA,CAAA,EAAA,EACA,EAAA,AACA,CAAA,AAEA,GAAA,WAAA,EAAA,AACA,GAAA,aAAA,CAAA,CAAA,CAAA,WAAA,CAAA,CAGA,EAAA,aAAA,EAAA,2BAAA,EAAA,CACA,EAAA,gBAAA,wBAAA,CAAA,MAAA,CAAA,CAGA,GACA,GAAA,YADA,EAAA,CACA,UAAA,CAAA,CAAA,CAAA,CAGA,IACA,EAAA,EADA,EAAA,WACA,CAAA,CAAA,CAAA,CAGA,EAAA,WAAA,CAAA,CAAA,CACA,EAAA,gBAAA,EAAA,CAAA,EAAA,WAAA,CAAA,CAGA,EAAA,aAAA,EAAA,2BAAA,EAAA,CACA,EAAA,gBAAA,wBAAA,CAAA,MAAA,CAAA,CAGA,IACA,EAAA,KADA,EAAA,OACA,CAAA,CAAA,CAAA,CAGA,QAAA,EAAA,OAAA,EAAA,GAAA,CACA,EAAA,GAAA,CAAA,CAAA,CADA,EACA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,MACA,EADA,EACA,EAAA,GAAA,EAAA,AACA,GAAA,GAAA,CADA,AACA,CAAA,CAEA,AAFA,KAAA,gIChEF,SAAS,AAAgC,CAAiB,EAA4B,AAE3F,EAAkB,OAAA,CAAU,EAAkB,KAA7B,EAA6B,EAAW,CAAA,CAAE,CAE3D,GAF6C,CAEvC,AAJuC,EAI7B,EAAkB,GAA5B,IAAmC,CAEnC,EAAyB,CAC7B,EACA,EAJ+B,AAK/B,IAFQ,CAIJ,EAFG,GAEiB,GAHT,IAKb,EAF+B,CAA7B,CAA+B,GAE1B,CAAC,IAAI,CAAC,GAGR,GAAY,CAHG,CAAC,CAMnB,EAHG,AAGiB,CAAC,EAAwB,KACjD,EAJkC,AAGsB,EAClD,EAAU,CAD6D,AAAzE,AAAmC,AACtB,IAAX,kCAAiD,EAAE,EAAe,YAAD,gDAA6D,EAAE,EAAQ,KAAD,IAAU,CAAC,OAGxJ,AAAIC,AAA0B,WAAA,KAA1BA,mBAAmB,IAAsB,EAAQ,KAAD,KAAW,CAAC,UAAU,CAAC,CAClE,CADoE,AACnE,EAAA,EAAA,KAAA,2BAAA,CAAA,CAGA,CACA,CAAA,CAIA,EAAA,EALA,GAKA,wBAAA,CAAA,EACA,EAAA,KAAA,aADA,WACA,CACA,EAAA,eAAA,cAAA,CACA,EAAA,eAAA,gBAAA,CAAA,uCAAA,CAAA,EAGA,EAAA,KAAA,mBAAA,CAAA,EACA,EAAA,KAAA,aADA,MACA,CACA,EAAA,eAAA,SAAA,CACA,EAAA,eAAA,WAAA,CAAA,kCAAA,CAAA,EAGA,EAAA,KAAA,qBAAA,CAAA,EACA,EAAA,KAAA,aADA,QACA,CACA,EAAA,eAAA,WAAA,CACA,EAAA,eAAA,aAAA,CAAA,oCAAA,CAAA,EAGA,EAAA,KAAA,cAAA,CAAA,EACA,EAAA,KAAA,aADA,CACA,CACA,EAAA,eAAA,IAAA,CACA,EAAA,eAAA,MAAA,CAAA,6BAAA,CAAA,EAGA,EAAA,KAAA,8BAAA,CAAA,EACA,EAAA,KAAA,aADA,iBACA,CACA,EAAA,eAAA,oBAAA,CACA,EAAA,eAAA,sBAAA,CAAA,6CAAA,CAAA,EAGA,EAAA,KAAA,cAAA,CAAA,EACA,EAAA,KAAA,aADA,CACA,CACA,EAAA,eAAA,WAAA,CACA,EAAA,eAAA,aAAA,CAAA,6BAAA,CAAA,OAIA,IAAA,EAAA,GAAA,EAAA,QAAA,EAAA,CACA,EAAA,KAAA,IAAA,CAAA,EAAA,KAAA,IAAA,EAAA,CAAA,CAAA,CACA,EAAA,KAAA,IAAA,CAAA,kBAAA,CAAA,EACA,EAAA,KAAA,IAAA,CAAA,QADA,UACA,CACA,EAAA,aAAA,CACA,CADA,CACA,eAAA,CAAA,sCAAA,CAAA,GAIA,EAAA,KAAA,kBAAA,CAAA,EACA,EAAA,KAAA,aADA,KACA,CACA,EAAA,eAAA,QAAA,CACA,EAAA,eAAA,UAAA,CAAA,iCAAA,CAAA,EAGA,EAAA,KAAA,mBAAA,CAAA,EACA,EAAA,KAAA,aADA,MACA,CACA,EAAA,eAAA,SAAA,CACA,EAAA,eAAA,WAAA,CAAA,kCAAA,CAAA,CAEA,mGC5FR,EAAkB,CACtB,gBAAgB,CAAE,4BAA4B,CAC9C,cAAc,CAAE,yBAAyB,CACzC,gBAAgB,CAAE,2BAA2B,CAC7C,kCAAkC,CAAE,uDAAuD,CAC3F,oCAAoC,CAAE,yDAAyD,AACjG,CAAA,GAQU,WAAW,GACX,QAAQ,GAIR,kBAAkB,GAClB,eAAe,GAGf,wBAAwB,GACxB,qBAAqB,GAGrB,sBAAsB,GACtB,mBAAmB,CAiBvB,EAAuB,CAAC,UAAU,CAAE,MAApC,KAA+C,CAAE,WAAW,CAAE,WAAW,CAAA,CAOxE,SAAS,EAAqB,CAAQ,EAAkB,AAC7D,OAAO,EAAS,MADkB,AACnB,CAAQ,CAAC,KAAK,CAAE,GAAG,CACpC,AADqC,CAkJrC,SAAS,EAAsB,CAAM,EAAkB,AACrD,OAAO,EAAO,IAAD,GADe,AACP,CAAC,0BAA0B,CAAE,EAAE,CAAC,AACvD,yBAkDO,SAAS,AAAsB,oBACpC,CADmC,AACjB,aAClB,CAAW,gBACX,CAAc,CACd,WAAS,kCACT,CAAgC,CAClC,MArB6B,IA+B3B,IAAM,EAA2B,EAAqB,GAChD,AAhCoC,EAgCrB,CAAe,CAAC,EAAU,CACzC,EAAwB,EAFsC,AAEnB,CAFoB,AAC/D,CAAwC,EADO,EAA/C,UAE0C,CAA1C,IAA2C,GAAyB,EACpE,EAA8B,CAD2C,CACxB,UAAU,EAAE,IAAb,uBAAa,GAA+B,EAE5F,EAAwB,AAjMhC,CA+LyG,QA/LhG,AACP,CAAkB,CAClB,CAAS,CACT,GAAiC,CAAK,EAEtC,AA4LM,IA5LA,EAAmB,EAAE,CAwC3B,CAxCY,KAFS,AA8L2C,CA1L5D,EAAU,MAP2B,CAO5B,GAAW,CAAC,0BAA0B,CAAC,EAAE,AACpD,EAAO,IAAD,AAAK,CAAC,EAAK,EAAD,GAAM,CAAC,IAAI,CAAC,EAAoB,AA3BpD,SAAS,AAAiB,OA2BwB,AAAkB,SA3B3C,EAAG,GAAmB,CAAA,CAAO,EAA0C,AAC9F,OAAO,EADmB,KA2ByC,CAAE,QA1B9D,GAAmB,KA0B2D,CAAE,EAAA,CAAM,CAAN,AAAO,CAAC,CAAC,CA1BzD,AA4BnB,CA5BoB,MAAM,CAAC,IAAA,GAAO,aAAa,CAAC,MAAM,CAAC,AA4BnB,EAAE,CAApD,CA5ByE,EAkCvE,EACF,EAAO,EAPP,EAOM,AAAK,CAAC,EAAK,EAAD,GAAM,CAAC,IAAI,AADJ,CACK,CADH,CACuB,AAhCxD,SAAS,OAgC6C,MAAwB,KAhC5C,GAAmB,CAAtB,AAAsB,CAAO,EAA0C,AACpG,OAAO,EADyB,GAElC,EA8B+E,CAAE,QA/BxE,GAAmB,KA+BqE,EAAE,CAAA,CAAM,CAAC,CAAP,AAAQ,CAAC,CA/BnE,AAiCjC,CAjCkC,CAiC3B,IAAD,AAAK,CACT,EAAK,EAAD,GAAM,AAlCmC,CAAC,AAkCnC,IAAI,AAlC+B,CAkC9B,EAlCqC,AAG/D,AA+B8C,SA/BrC,AAA4B,IAHuC,CAAC,EAkCjC,WAlC8C,AAkCjB,CAlCkB,IAAI,EAI7F,EADkC,YA+BsC,CAAE,gBAAgB,EAAE,CAAA,CAAM,CAAC,CAAP,AAAQ,CAC5F,EAAK,EAAD,GAAM,CAAC,IAAI,CAAC,EAAoB,gBAAF,SAA2B,KA5Bf,CAAA,CAAO,EAA0C,AACvG,YACF,EA0BwE,CAAE,gBAAgB,CAAE,EAAA,CAAM,CAAN,AAAO,CAAC,GAK5F,AAAc,SAAd,aAAgD,cAAc,EAAE,CAA9B,EAEpC,EAAO,IAAD,AAAK,CAFyB,AAGlC,EAAK,EAAD,GAAM,CAAC,IAAI,CAAC,EAAoB,gBAAF,AAAkB,8BA9C5D,EA8C6D,CAAE,gBAAgB,EAAE,CAAA,CAAO,CAAC,CAAC,CAClF,AADyE,EACpE,EAAD,GAAM,CAAC,IAAI,CAAC,EA5FV,eAAe,CA4Fa,EAAE,AAEf,aAF4B,CAAC,EAEb,EAAE,CAAhC,IAEL,CAJ0D,CAAC,AAK7D,EAAO,CAHA,GAGD,AAAK,CAAC,EAAK,EAAD,GAAM,CAAC,IAAI,AADJ,CACK,CADH,CACuB,SAlDxB,OAkDsB,MAAwB,0BAAC,CAAE,gBAAgB,EAAE,CAAA,CAAO,CAAC,CAAC,CAAT,AAAU,CAErG,EAAO,IAAD,AAAK,CACT,EAAK,EAAD,GAAM,CAAC,IAAI,CAAC,EAAoB,gBAAF,WAjDL,AAiDkC,GAjDf,CAAA,CAAO,EAA0C,OAClG,EAD8B,GAEvC,EA+C0E,CAAE,QAhDnE,GAAmB,KAgDgE,CAAE,EAAA,CAAO,CAAC,CAAR,AAAS,CAC7F,CAjD+B,CAAC,AAiD3B,EAAD,GAAM,CAAC,IAAI,CAAC,EAAoB,AA9C9C,MAH6D,CAAC,EAGrD,AAA0B,CAAE,CAHyB,GAAO,EAiDzB,SAA2B,CA9ClC,CAH6C,CAAC,MAGjD,OACzB,MAJ6F,CAiD9B,AAjD+B,CAiD7B,GAjDiC,KAIlG,GAAmB,KA6C8D,EAAE,CAAA,CAAO,CAAC,CAAC,CAAT,CA7CnD,CAmDhC,AAnDiC,CAoD1C,EAoJI,EACA,CAtJW,CAuJX,GAKI,IANK,CAhJb,AAoJgC,EA7M2B,CAAC,IAAA,EAyDnD,AACP,CAAkB,AA1D+C,CA2DjE,CA6I0B,CAEH,CA/IU,AAoJ3B,CApJgC,EAEtC,AAkJ4B,IAlJtB,EAAmB,AA7DqD,CAAC,CA6DpD,CAyB3B,CAzBY,KAFS,CAKjB,AAAC,CA6I2D,EA5I9D,AA8I6C,CAAC,CA9IvC,GAjEuF,CAiExF,AAAK,AAjEoF,CAiEnF,AAR2B,EAQtB,CAjEkF,CAiEnF,GAAM,CAAC,GADC,CACG,CADD,AACE,EA5GjB,AA0PwD,gBA9IrB,EAAE,IA5Gf,GAgHnC,EAAO,IAAI,AAJoD,AAIzD,CAJ0D,AAK9D,EAAK,EAAD,GAAM,CAAC,GAL8D,CAAC,AAK3D,CAL4D,AAK3D,EAhHA,gBAgHkB,EAAE,SAhHO,EAiH3C,EADiD,AAC5C,CAD6C,CAC9C,GAAM,CAAC,IAAI,CAAC,EAhHI,IA+G8C,CAAC,WACjC,EAAE,SAhHW,EAiH/C,EADiD,AAC5C,CAD6C,CAC9C,GAAM,CAAC,IAAI,CAAC,EAhHA,QA+GsD,CAAC,OACrC,EAAE,SAhHO,EAiH3C,EADiD,AAC5C,CAD6C,CAC9C,GAAM,CAAC,IAAI,CAAC,EAhHF,IA+GoD,CAAC,WACjC,EAAE,OAhHG,EACT,IA+GmB,CAAC,cAAc,CAAC,EACrE,gBAhHwE,CAC3C,iCAAiC,CACxC,WA8GtB,eA9GgD,CACnB,iCAAiC,CACvB,2CAA2C,CAC/C,uCAAuC,CACpC,0CAA0C,EAsHvE,CACT,EAsHmE,EAA0B,CAvH9E,EA8Eb,CADsD,EA4CiB,CA3CnE,CAAC,AA2CqF,QA5CxB,EA4CkC,AA5CS,EAC5F,AA2CqF,CAFU,CAAvB,AAAwB,AAzC9F,EA2CsE,EAAmB,CAAC,CAtCtG,CAAC,GAAG,KADe,KAAK,CAAC,IACN,EAAE,CADW,CAAC,GAAgB,EAAe,CAAC,EAAa,CACpC,CAJxC,EAG2C,CAAA,AAyC9C,EAzCkD,AAyCnB,EAAmB,CAzC4B,OAH5D,EA4C0C,EAAE,IAAb,QAAjD,YAAsF,CAExF,EAAmB,KAAA,OAA0C,IAA3C,AAAU,GAE9B,EAFwE,EAAE,GAEnE,CAAC,KAAK,CACX,WAH4B,4FAG2E,CACvG,GAIJ,IAAM,OAC6B,IAAjC,EACI,KAAK,CAAC,EANoB,GAI1B,EAEa,CAAC,GACZ,EACA,CAAC,EAA4B,CAnIvC,AAoIQ,SAnIN,AADO,CACW,CAClB,CAAS,CACT,CAA2B,CAC3B,GAA4C,CAAK,AA6HD,EA3HhD,GAAK,CAAD,AA6HiC,EAvHnB,UAwHyB,SApIC,AAYxC,CAR4B,EAQoB,EANpB,EAAE,EAM9B,QAA8D,EAAE,CAA9B,IAKpB,KALoB,WAKpB,GAAd,IAAkC,CAAA,CAAgC,CAItE,CAJwE,CAApE,KAIG,EAAqB,GAAG,CAAA,AAAC,GAAA,AAAO,EAAK,EAAD,GAAM,CAAC,GAAvB,CAA2B,CAAC,EAAoB,QAAQ,CAAE,IAAI,CAAE,EAAlB,CAAqB,AAChG,CADiG,CAAC,AAgHxF,EACA,EACA,EACA,GAGF,EAhHR,AA2GmB,AAKY,SAhHtB,AAA0B,CAAS,CAAa,EA0GvB,CA1GmE,CAAK,EAAW,AACnH,GA2GmC,IA3G5B,CA+G+C,EAHd,AA5GG,EAAU,KADrB,EACoB,GAAW,CAAC,GADuB,MACd,CAAC,AAC5E,EA8GyD,EAAW,GAElE,IAFgE,EAEzD,CACL,SAAS,CAAE,EAAmB,SAAS,CAHyD,AAIhG,CAJiG,KAGpE,CACtB,CAAE,EAAmB,OAAO,CACnC,GAAG,CAAE,EAAmB,EADG,CACA,CAC3B,OAAO,CAAE,EAAmB,EADL,KACY,CACnC,QAD2B,CAClB,CAAE,EAAmB,SAAS,CACvC,KAAK,CADwB,AACtB,EAAmB,KAAK,CAC/B,UADyB,EACb,CAAE,EAAmB,YAAY,CAC7C,GADgC,qBACR,CAAE,EAAU,OAAD,GAAW,CAAC,0BAA0B,OACrE,EACA,CACE,GAAG,EAAmB,OAAO,EAAE,OAAV,iBAAkC,CACvD,GAAG,EAAmB,OAAO,EAAE,OAAV,4BAA6C,EAAE,wBAAwB,AACtG,CAAS,CACL,MAAM,CAAE,EAAmB,MAAM,CACjC,GAAG,CAAE,EAAmB,GADE,MACO,CACjC,MADuB,IACb,CAAE,CACV,OAAO,GAAE,IAA+B,EAAmB,UAAU,EAAE,EAA9D,EAAiD,CAA1B,EAAuC,GAAW,CAAA,CAAK,CAAC,AACxF,cAAc,CAAE,EAChB,MAAM,CAAE,EAAmB,UADU,AACA,EAAE,IAAb,EAAa,EAAU,EACjD,MAAM,CAAE,YAD8D,OAC3C,QAC3B,EACA,GAAG,EAAmB,OAAO,EAAE,OAAV,CADG,2BAC0C,EAAE,UAC1E,AADoF,CAC/E,CACD,OAAO,CAxHT,AAAI,CAwHO,IAxHS,MAAhB,AACK,CACL,EAFyB,EAAE,EAErB,EAAE,AAsHkB,EArH1B,GADa,CACT,CAqHuB,CArHrB,CACN,MAAM,CAAE,AAoHgC,EApHb,AAoHW,CArHrB,MACiB,EAAE,MAAM,CAAhB,AAC1B,AAmH0D,CAAC,OAnHnD,CAAE,EAAmB,OAAO,EAAE,OAAV,CAAkB,CAC9C,IAAI,CAAE,EAAmB,OAAO,EAAE,IAAI,CACtC,EADwB,OACf,CAAE,EAAmB,OAAO,EAAE,OAAV,EAAmB,CAChD,UAAU,CAAE,EAAmB,OAAO,EAAE,OAAV,GAAoB,CAClD,MAAM,CAAE,EAAmB,OAAO,EAAE,MAAM,CAAhB,AAC1B,GAAG,EAAmB,OAAO,EAAE,OAAV,4BAA6C,EAAE,OAAO,AACjF,CAAK,CAGI,CACL,MAAM,EAAE,EACR,GADa,GACP,EAAE,EACR,GADa,KACL,EAAE,CACd,CAAG,CAuGC,EAxGe,qBAwGQ,CAAE,CACvB,GAAG,EAAmB,gBAAD,OAAwB,AACnD,CAAK,CACD,YAAY,CAAE,CACZ,oBAAoB,CAAE,EACtB,SAAS,CADyB,AACvB,CACT,aAAa,CAAE,QAAQ,AAC/B,CACA,AADO,CACF,CACD,GAAG,EAAmB,OAAO,EAAE,OAAV,4BAA6C,AACtE,CAAG,AACH,sKC9QqD,EAAA,6BAAA,SAAA,CACA,EAAA,iCAAA,SAAA,CAMA,eAAA,EAAA,CAAA,CAAA,CAAA,EAAA,IACA,EACA,GAAA,CACA,CAFA,CAEA,KAAA,CAAA,EAAA,EAHA,MAGA,CAAA,OAAA,CAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CACA,AADA,CACA,KAAA,CAEA,MACA,CAEA,IAAA,EAAA,EAAA,KAAA,CAAA,CAAA,AACA,CAAA,EADA,AACA,CAAA,CAAA,QAAA,CAAA,KAAA,CAAA,EAAA,CAAA,CAAA,QAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA,QAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA,QAAA,CAAA,MAAA,CAAA,EAwBA,EAAA,CArBA,MAAA,AAqBA,IAAA,GArBA,CAAA,GAAA,CACA,EAAA,GAAA,CAAA,MAAA,EAAA,EAAA,AACA,IADA,AACA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,GACA,CADA,CAAA,CACA,CADA,AAEA,IAAA,EAAA,KAAA,CAAA,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAEA,EAAA,EAAA,CAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAGA,EAAA,EAAA,KAAA,EAAA,CAAA,AAFA,EAAA,CAEA,CAFA,CAAA,AAEA,CAAA,EAAA,CAAA,CACA,GAAA,IAAA,EAEA,KAFA,EAAA,AACA,EADA,IACA,EAAA,CAJA,EAAA,KAIA,CAAA,SAAA,CAAA,EAAA,EAAA,IAAA,GAAA,CAAA,CACA,CAEA,CAAA,EAFA,AADA,GAGA,CAEA,CAEA,CAAA,EAAA,EAGA,MAAA,CAAA,OAAA,CAAA,CAAA,MAAA,CAEA,GAAA,EAAA,CAAA,EAAA,AAEA,OAAA,CAFA,AAEA,KAAA,CACA,CAAA,yDAAA,EAAA,MAAA,CAAA,GAAA,UAAA,CAAA,0CAAA,CAAA,CAGA,mCAlH9C,eACL,AADoB,aAElB,CAAW,SACX,CAAO,OAH0C,IAIjD,CAAS,oBACT,CAAkB,CACnB,CACD,CAAkB,EAEd,EAAmB,KAAK,EAAE,AAE5B,OAAO,CAAC,CAFY,IAEP,CAAC,2DAA2D,CAAC,CAG5E,GAAM,gCAAE,CAAA,CAA+B,CACrCC,EAAAA,UAAU,CACR,6BAA6B,CAC7B,IACG,CAAA,CAAE,AADC,CAGV,GAAI,CAAC,EAAgC,YAEnC,OAAO,CAAC,IAAI,CACV,GAH+B,mGAGuE,EAYvD,IAAA,EAAA,EAPnCC,EAAAA,kBAOmC,GAPd,CAAC,IAOa,CAAA,OAAA,QANjD,cACA,EACA,EAFkB,OACP,KACG,CAAE,EAChB,KADuB,IACd,CAAE,CAAC,yBAAyB,EAAE,EAAU,CAAA,AACA,CAAA,CAAA,CAEA,GAHD,QAIC,EACA,OADA,KACA,CAAA,6CACA,AADA,CACA,CAAA,AAEA,OAAA,EAAA,SAAA,CAAA,YAAA,oBAAA,EAAA,CACA,MAAA,EAAA,aAAA,EAAA,CAGA,GAAA,EAAA,CAHA,SAGA,EAAA,CAAA,GAAA,GAAA,IAAA,GACA,CADA,EAAA,GACA,EAAA,cAAA,CAAA,CAAA,EAAA,CAAA,CAGA,EAHA,CAAA,GAGA,EAAA,gBAAA,CAAA,CAAA,EAAA,CAAA,CAEA,AAFA,GAAA,aAEA,EAAA,CACA,CAAA,CAAA,CACA,CAFA,KAEA,EAAA,eAAA,EAAA,CAOA,AACA,EADA,EAPA,QAOA,EAAA,IAAA,SACA,cADA,EACA,EADA,KAAA,IACA,EAAA,CAAA,GACA,MAAA,AADA,EACA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,GAAA,CAAA,CAAA,EAAA,KAAA,CAAA,AAEA,AAFA,UAAA,uKC/D9C,SAAS,AAA4B,eAC1C,CAAa,WAD4B,IAEzC,CAAa,YACb,CAAU,mBACV,CAAiB,CACnB,EAME,IAAM,EAAoC,EAAE,CAAjC,AACL,EAA8C,CAAA,CAAE,CAClD,EAA0C,CAAA,CAAE,CAC5C,EAA0C,CAAA,CAAE,CAE5C,CAJkB,CACN,EAKd,EAAiB,CAJH,MAEC,EAAE,KAED,MAAC,CAAuB,CAAA,CAAa,CAGnD,IACF,EAAa,OADE,EAAE,CACL,UAAC,CAAuB,IAAI,CAAC,SAAS,CAAC,EAAa,CAAC,CAI/D,IACF,EAAiB,IADL,EAAE,QACE,WAAC,CAA4B,CAAA,CAAU,CAIrD,GACF,GAAa,SAAD,EADO,EAAE,WACR,CAA2B,IAAI,CAAC,SAAS,CAAC,EAAiB,CAAC,CAI3E,EAAa,UAAD,eAAC,CAA4BC,EAAAA,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAErE,MAAM,CAAC,IAAI,CAAC,GAAkB,MAAA,CAAS,CAAC,EAAE,CAC5C,EAAe,AADe,CACb,AADc,GACX,CAAY,CAAE,GAAG,CAArC,AAAqC,CAAkB,CACvD,EAAe,CAAE,GAAG,CAAY,CAAE,GAAG,CAArC,AAAqC,CAAkB,EAGzD,IAAM,IAAsB,GAAgBC,EAAAA,QAAhB,EAAtB,oBAAoE,CAAC,GA0C3E,OAvCI,GAHoF,CAAA,EAG9E,CAHkF,AAGjF,IAAI,CAHkF,AAGjF,GAAc,MAAA,CAAS,CAAC,CAAZ,CAAC,AAAa,AACxC,EAAM,GAAD,CAAK,CAAC,CACT,OAAO,CAAE,6BAA6B,CACtC,IAAI,CAAE,CAGJ,GAAI,EAAsB,CAAE,SAAS,CAAE,CAAE,GAAG,CAAE,CAA1C,QAA0C,CAAU,CAAE,CAAI,CAAA,CAAE,CAAC,AACjE,OAAO,CAAE,CACP,CACE,MAAM,CAAE,EAAK,EAAD,KAAQ,CAAC,AAAS,SAAA,kMAAE,IAAI,CAAE,SAAS,CAAE,yBAAyB,CAAC,CAC3E,OAAO,CAAE,CACP,MAAM,CAAE,CACtB,CACA,AADa,CACF,CACF,AACT,CAAO,AACP,CAAK,CAAC,CAIA,IAT4B,EAStB,CAAC,IAAI,CAAC,GAAc,MAAA,CAAS,CAAC,CAAZ,CAAC,AAAa,AACxC,EAAM,GAAD,CAAK,CAAC,CACT,OAAO,CAAE,sBAAsB,CAC/B,IAAI,CAAE,CAGJ,GAAI,EAAsB,CAAE,SAAS,CAAE,CAAE,GAAG,CAAE,CAA1C,QAA0C,CAAU,CAAE,CAAI,CAAA,CAAE,CAAC,AACjE,OAAO,CAAE,CACP,CACE,MAAM,CAAE,EAAK,EAAD,KAAQ,CAAC,AAAS,SAAA,kMAAE,IAAI,CAAE,SAAS,CAAE,yBAAyB,CAAC,CAC3E,OAAO,CAAE,CACP,MAAM,CAAE,CACtB,CAAa,AACb,CAAW,CAEX,AADS,CACF,AACP,CAAK,CAAC,CAGG,CACT,GATkC,CAQpB,uICwBL,SAAA,EACA,CAAA,CACA,SAAA,CAAA,MAAA,CAAA,CAFA,AAEA,SAEA,EAOA,CAAA,CAAA,AAPA,EAOA,EAAA,AACApc,EAAAA,CADA,EAPA,EAQA,AARA,CAQA,GAAA,CACA,CAAA,qDAAA,EAAA,EAAA,KAAA,4EAAA,CAAA,EAEA,GAGA,CACA,GAAA,CAAA,CACA,CAAA,EAAA,CALA,AAKA,CACA,CAAA,CAhBA,CACA,AAcA,CAdA,EAAA,CAAA,CACA,CAeA,AAfA,EADA,0BA1GF,SAAS,AAAyB,CACvC,gBAAc,OADwB,YAEtC,CAAiB,eACjB,CAAa,eACb,CAAa,mBACb,CAAiB,CACnB,EAQE,IAAM,EACJ,CAACqc,EAAAA,qBADG,CACmB,CAAC,GAAiB,EAAE,CAAA,EAAK,GAAgB,EAAxC,OAAiD,EAAX,AAAa,QAAA,CAAQ,EACnF,GAAmB,UAAU,EAAE,EAAd,KAAc,IAAY,EAEvC,EAA8B,AAFa,CAG/C,GAAG,EAAe,CADL,QACc,CAC3B,EADiB,CACb,EAA6B,CAAE,QAAQ,EAAE,CAAA,CAAK,CAAI,CAAT,AAAS,CAC1D,AAD4D,CACzD,AAD0D,CAGrD,EACJ,GAAmB,CAJf,IAGA,MACe,GAAF,KAAkB,GACT,MADS,EACT,GAA1B,EAAe,MAAA,EAC0B,IAD3B,MACd,OAAO,EAAkB,WAAA,CACrB,CAAC,EADmB,AACnB,EAAA,QAAA,EAAA,EAAA,CAAA,EAAA,EAAA,WAAA,CAAA,CAAA,EAAA,IACA,EASA,IAAA,GATA,AASA,SAAA,CAAA,MAAA,CAAA,CAAA,GAPAC,CAOA,CAPAA,kBAOA,CAAA,QAPA,CAAA,CACA,aAAA,iBACA,aAAA,AACA,UAAA,UACA,CACA,CAAA,CAAA,CAGA,EAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAJA,IAIA,CAAA,CAAA,QAAA,GAAA,IAAA,CAAA,CAAA,CAAA,CAYA,AAZA,IAYA,EAAA,GAAA,SAAA,IAAA,CAAA,CAAA,uBAAA,CACA,GAAA,GAAAF,EAAAA,MAAA,EAAA,sBAAA,CAAA,KACA,EAAA,KAAA,CAAA,AADA,CACA,AADA,CACA,CADA,CACA,KAAA,CAAA,CAAA,AACA,OAAA,CAAA,GADA,wBACA,CACA,IAAA,CAAA,CACA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,IAAA,CAAA,8BAAA,CAAA,CAAA,CACA,OAAA,CAAA,CACA,CACA,MAAA,CAAA,EAAA,EAAA,KAAA,CAAA,SAAA,kMAAA,IAAA,CAAA,SAAA,CAAA,kCAAA,CAAA,CACA,OAAA,CAAA,gBACA,CACA,CAAA,AACA,CAAA,CACA,AACA,CACA,AADA,EACA,CAAA,CAMA,IAAA,CAXA,CAWA,GAAA,aAAA,CAAA,CAAA,aAAA,oBAAA,CAkBA,OAjBA,GAAA,OAAA,EAAA,GAAAA,EAAAA,QAAA,QAAA,cAAA,CAAA,KACA,EAAA,KAAA,CADA,AACA,CADA,AACA,CAAA,CADA,CACA,KAAA,CAAA,CAAA,AACA,OAAA,CAAA,GADA,UACA,CACA,IAAA,CAAA,CACA,SAAA,CAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CACA,OAAA,CAAA,CACA,CACA,MAAA,CAAA,EAAA,EAAA,KAAA,CAAA,SAAA,kMAAA,IAAA,CAAA,SAAA,CAAA,8BAAA,CAAA,CACA,OAAA,CAAA,CACA,iBAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,AACA,CAAA,AACA,CAAA,CACA,AACA,CAAA,AACA,EAAA,CAAA,CAGA,CACA,CATA,OAQA,4LC/EL,GAAqC,EAga+B,GAha1B,YAga0B,EACA,CAAA,CACA,CAAA,EAQA,GAAA,CAAA,GAAA,AA1apE,CA0aoE,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,EAEA,EACA,EAbA,MAUA,EAGA,EAAA,EADA,KACA,EAAA,MAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAEA,CAFA,CAEA,EAAA,GACA,EAHA,AA0HA,AAvHA,EAHA,GAEA,CAAA,GAwHA,CAAA,EAAA,AAQA,IAAA,CAhIA,CAAA,EAgIA,IAPA,CACA,CAAA,CAzHA,CAAA,CA+HA,EANA,CAAA,CAMA,IARA,SAQA,CAAA,YANA,CAAA,CACA,CAAA,KAAA,CAAA,2BAAA,CAAA,CACA,CAAA,2BAAA,CAAA,CACA,CAAA,2BAAA,CAAA,CACA,CAGA,GAAA,EAAA,UAAA,CAAA,EAAA,EAAA,KAAA,CAAA,KAAA,IACA,CADA,EAAA,EAAA,CAAA,CAAA,AACA,EADA,AACA,EAAA,EAAA,CAAA,GAAA,EAGA,EApIA,GAEA,EA+HA,AA/HA,CA+HA,CA/HA,CAWA,EAbA,CAAA,CAaA,IAAA,AAXA,KACA,GAEA,EAAA,IAQA,AARA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAEA,GAEA,EAAA,CANA,EAAA,CAMA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAIA,CARA,EAUA,MARA,EAAA,IAQA,CAFA,CAAA,CAEA,CACA,EACA,GARA,QAMA,EAEA,CAAA,GACA,AACA,AA0HA,SAAA,AACA,CAAA,AA7HA,CA8HA,AA/HA,CA+HA,CACA,CAAA,CACA,CAAA,EAOA,IAAA,EAAA,CAAA,CAAA,CArIA,CAqIA,CACA,EAAA,EAEA,GAAA,AAdA,GAWA,CAAA,EACA,EAEA,IAFA,KAEA,GAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAEA,GAAA,CADA,EAAA,KAAA,CAAA,CADA,CAAA,EAEA,CADA,EAAA,CAAA,GAAA,EAAA,CAAA,EAAA,EACA,IAAA,CAAA,EADA,CACA,AADA,EACA,AADA,AACA,GADA,KACA,CAAA,EAAA,EACA,CADA,CAAA,CAAA,EAAA,EAIA,EAEA,EAAA,IAAA,CAAA,AAFA,EAAA,CAEA,GAGA,AAHA,EAGA,OAAA,CAHA,AAGA,CAHA,EAGA,EAEA,MAEA,GAAA,EAJA,CAAA,KAIA,SAAA,GAAA,QAAA,GAAA,EAAA,CAAA,AACA,IAAA,EAAA,EAAA,MAAA,AADA,CAEA,EAAA,KAAA,AADA,CACA,AADA,MACA,CAAA,CAAA,GAAA,EAAA,CAAA,EAAA,CACA,GAAA,EAAA,IADA,AACA,CADA,AACA,EADA,CACA,EAAA,AADA,EACA,MAAA,CAAA,EAAA,EACA,CADA,CAAA,CAAA,EAAA,EAIA,EAEA,EAAA,IAAA,CAFA,AAEA,EAFA,CAEA,GAGA,CAHA,CAGA,OAAA,CAAA,AAHA,CAAA,EAGA,CAAA,EAGA,EAAA,CACA,GAAA,CAAA,CACA,EALA,CAAA,EAGA,CAEA,CAAA,CACA,CAAA,AACA,MAKA,CAFA,KALA,CAOA,CAAA,KAAA,CACA,wBAAA,CACA,CAAA,0DAAA,EAAA,EAAA,YAAA;AAAA,CAAA,CACA,4FAAA,CACA,CAAA,KAAA,EAAA,EAAA,CAAA,EAIA,IACA,CAAA,CAAA,EAAA,CAAA,CAAA,CAEA,AAFA,CALA,CAnLA,AAuLA,EAvLA,AAuLA,EAvLA,EAAA,CAwLA,EApLA,MAJA,CAAA,AAIA,CAJA,AAKA,CAgFA,SAAA,EAAA,CAAA,EAGA,AApFA,AAiFA,IAGA,IAAA,IAFA,CAAA,GAEA,IAHA,AAGA,aAAA,CAAA,IAFA,CAAA,yBAAA,CAAA,CAGA,GAAA,EAAA,UAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAA,IACA,IADA,CAAA,CAAA,CACA,CADA,AAIA,CA4NA,IAAA,EA/NA,AA+NA,CAGA,sCAHA,gBAGA,CAGA,+DAAA,CAGA,iEAAA,CAGA,iEAAA,CACA,kCA3vBjE,SAAS,AAA+B,gBAC7C,EAAiB,CAAA,CAAE,UADyB,AAC5C,SACA,EAAoB,CAAA,CAAE,aAAtB,AACA,CAAW,CACX,eAAa,eACb,CAAa,kCACb,CAAgC,yBAChC,CAAuB,CACzB,EAYE,OAAO,SAAS,AACd,CAAc,CACd,CAAY,QAkwBwD,MAwDA,CA5zBpC,CA6zBoC,CAzDA,CA0DA,CA1DA,CAhwBpE,IAiwBoE,CAwDA,CAGA,EA9vBA,EASA,AAmvBA,CAFA,CAxzB9D,CA4zB8D,EA3DA,KAnsBA,AASA,EAvE5D,CAAQ,CAAE,GAAG,CAAE,CAAK,CAAE,GAAG,CAAE,CAAA,CAAW,CAAI,EAC5C,EAAU,EAAyC,GAAnD,GAAU,AAD8C,GAClC,EAAa,UAAD,CAAC,CAAyB,MAAA,CAAS,QAAQ,CAAI,QAAQ,CAEzF,EAAiB,EAAe,UAAhC,EAA+B,EAAC,EAAkB,CAAC,KAAK,CAAE,IAAI,CAAE,KAAK,CAAE,IAAI,CAAC,CAC5E,EAA4B,EAAe,GAAG,CAAA,AAAC,GAAO,AAAP,CAAQ,CAAC,EAAE,CAAhB,CAAoB,CAAD,AAAC,CAAA,CACA,EAAA,EAAA,CAD9D,EAC8D,CAAAG,EAAAA,MAAA,EAAA,YAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CACA,EAAA,GAAAC,EAAAA,IAAA,IAAA,QAAA,EAAA,CACA,OAAA,CAAA,CAAA,CAAAT,EAAAA,WAAA,CAAA,GAAA,EAAA,CAAA,CAKA,EA2ZA,AA3ZA,EALA,OAgaA,CAAA,CAAA,CAAA,EAAA,AAMA,GAjaA,CAiaA,IAAA,AAjaA,KA4ZA,EAAA,EADA,GAMA,EALA,CAAA,CAKA,EALA,CACA,CAAA,CAIA,CAAA,EALA,CACA,CAAA,AADA,CACA,eAAA,EAAA,EAAA,CAAA,CAAA,CACA,CAAA,CAAA,EADA,aACA,EAAA,EAAA,CAAA,CAAA,CACA,CAAA,CAGA,EAJA,CAIA,CACA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,KAAA,CAAA,KAAA,GAAA,CAAA,CAAA,EAAA,KAAA,CAAA,OAAA,CAAA,CAAA,AACA,CAAA,KAAA,CAEA,CAGA,OAAA,IAAA,AACA,EA1aA,EAAA,EAAA,MAAA,CAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAEA,AAFA,QAEA,EAAA,CAAA,GACA,AAscA,IAvcA,KAucA,AACA,CAAA,CACA,CAAA,CACA,CAAA,EAOA,IAAA,CAJA,IACA,EAAA,GA7cA,KA6cA,CAAA,GAPA,CAMA,IACA,EAAA,CAAA,EACA,EAAA,KAAA,CAAA,QAEA,EAAA,CAFA,iCAAA,CAAA,CAAA,CAMA,IAAA,IAAA,IAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,MAAA,IAAA,CAAA,CAAA,CAAA,OAAA,EAAA,EAAA,MAAA,IAAA,CAAA,CAAA,CAAA,AACA,EAAA,UAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAA,KAEA,GAFA,CAAA,CAAA,EAEA,AAFA,CAEA,IAAA,CACA,CAAA,kDAAA,EAAA,EAAA,MAAA,oZAAA,EAAA,EAAA,MAAA,YAAA,CAAA,CAIA,EA5dA,EAAA,EAAA,GAEA,GAFA,CAAA,CAAA,GAEA,EAAA,CAAA,GAFA,AAIA,GAAA,CAFA,CAEA,CAAA,EAAA,EAAA,AACA,AAuaA,SAAA,CAAA,EAAA,AACA,GAAA,CAAA,EAAA,CACA,OAAA,CAAA,GAAA,CAAA,IADA,EAxaA,SAuaA,6BAEA,EAAA,AAEA,OAAA,CAAA,IAAA,CACA,obAAA,EAGA,MACA,CAEA,EAAA,QAAA,CAAA,QAAA,QAAA,CAAA,EAAA,AAEA,OAAA,CAAA,IAAA,CACA,sUAAA,CAGA,EAxbA,GAIA,IAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAIA,GAJA,AAJA,CAAA,KAQA,GAAA,GAAA,UAAA,CAAA,CAAA,OAAA,EAAA,OAAA,GACA,EADA,AACA,EAAA,OAAA,CAAA,EAAA,EAAA,CAAA,CAKA,IAAA,EALA,CAokBA,CADA,EA9jBA,GAAA,AA+jBA,GA/jBA,AA+jBA,CADA,EAAA,AACA,CAAA,CACA,CAhkBA,CAAA,CAgkBA,EAAA,MAhkBA,AAgkBA,CAAA,AACA,KAAA,CAAA,CAAA,GAAA,EAAA,MAAA,CAAA,CAAA,KAAA,EAAA,EAAA,CACA,AADA,CACA,CAGA,GAhkBA,CAAA,KAgkBA,GAhkBA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,EAKA,CAmkBA,SAAA,WAxkBA,AAykBA,CAAA,CApkBA,UAmkBA,KAEA,CAAA,mBACA,CAAA,cACA,CAAA,aACA,CAAA,eACA,CAAA,CACA,eAAA,mBACA,CAAA,CACA,EAUA,IAAA,EAAA,EAAA,OAAA,IAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAGA,EAAA,EAAA,OAAA,EAAA,MAAA,IAAA,EACA,EAAA,CADA,EACA,EAAA,EAAA,IAAA,EAAA,CAEA,EAFA,AAEA,CAEA,KAJA,QAEA,YAEA,CACA,KAAA,MAAA,GAAA,GAAA,KAAA,EACA,QAAA,GAAA,EAAA,MAAA,EACA,IADA,MACA,OAAA,EAAA,WAAA,CACA,CAAA,EADA,AACA,EAAA,QAAA,EAAA,EAAA,CAAA,EAAA,EAAA,WAAA,CAAA,CAAA,EAAA,IACA,EAKA,OALA,OAKA,CAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,MAAA,EACA,KADA,EAAA,QACA,CAAA,EAAA,GAAA,CAAA,EAAA,IAAA,IAAA,IAAA,EAAA,EAEA,OAFA,aAEA,CAAA,CACA,CAAA,CAEA,EAAA,CACA,GAAA,CAAA,CAGA,EAPA,EAGA,uBAIA,CAAA,EAAA,OAAA,EAAA,GAAA,IAAA,CAAA,KAAA,CAAA,MAAA,CAAA,EAAA,OAAA,CAEA,wBAAA,CAAA,EAAA,IAAA,CAAA,SAAA,CAAA,QAAA,CACA,CAAA,CAEA,EAAA,CACA,GAJA,AAIA,CAJA,AAIA,CAGA,IAJA,+BAIA,CAAA,EACA,IAAA,GAAA,CAAA,EAAA,SAAA,cAAA,CAAA,CAAA,QAAA,CAAA,OAAA,CAAA,KAAA,CAAA,EAAA,EACA,EAAA,CACA,kBAAA,CAAA,EAAA,WAAA,CAAA,AACA,8CAAA,CAAA,EAAA,aAAA,EAAA,4BACA,YACA,EACA,OADA,aACA,CAAA,IAAA,CAAA,SAAA,CAAA,EACA,CAAA,CAEA,EAAA,OAHA,CAAA,AAGA,CACA,CADA,CACA,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAEA,IAAA,CAAA,oCAAA,CACA,GAAA,CAAA,CACA,CACA,MAAA,CAAA,EAAA,EAAA,KAAA,CAAA,SAAA,wLAAA,iCAAA,CAAA,CACA,OAAA,CAAA,CACA,MAAA,CAAA,CACA,CAAA,AACA,CAAA,CACA,AACA,CAAA,CAAA,CAEA,EAAA,GANA,GAMA,CAAA,KAAA,CAAA,IAAA,CAAA,CACA,IAAA,CAAA,uFAAA,CACA,GAAA,CAAA,CACA,CACA,MAAA,CAAA,EAAA,EAAA,KAAA,CAAA,SAAA,wLAAA,iCAAA,CAAA,CACA,OAAA,CAAA,CACA,MAAA,CAAA,CACA,CAAA,AACA,CAAA,CACA,AACA,CAAA,CAAA,CAEA,EA/pBA,GAypBA,QAxpBA,SAAA,QACA,cAAA,MACA,EACA,YAAA,GADA,AAEA,WAAA,iBACA,aAAA,GACA,EACA,WADA,MACA,CAZA,CAYA,MAZA,GAAA,EAAA,OAAA,CAaA,CAAA,CAAA,CAbA,EAeA,EAHA,CAZA,CAytBA,CAEA,CAAA,EAAA,CA5sBA,CAAA,GA4sBA,AAEA,GAAA,CACA,EAHA,CAGA,CAAA,EAAA,CAHA,IAGA,CAAA,CACA,CADA,MACA,EAGA,GAHA,CAGA,EACA,iCAAA,CAAA,IAAA,CAAA,EAAA,KAAA,CAAA,AADA,CACA,kBAAA,CAAA,EAAA,SAAA,OAAA,CAAA,CAAA,EACA,0BAAA,CAAA,IAAA,CAAA,EAAA,KAAA,CAAA,CAAA,kBAAA,CAAA,EAAA,SAAA,OAAA,CAAA,CAAA,CACA,EAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAEA,OAAA,GAAA,CACA,CAAA,KAAA,CACA,OAAA,CACA,CACA,CAAA,CAEA,CAJA,AAIA,MAAA,CANA,AAMA,mBANA,cAMA,CAAA,OAAA,CAAA,qBAAA,CAAA,CACA,CAAA,MAAA,CAAA,0BAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,CACA,CAAA,MAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,CACA,CAEA,SAAA,EAAA,cAAA,CACA,EAAA,OAAA,OAAA,CAAA,EACA,KAAA,CAAA,GADA,IACA,CAAA,EAAA,OAAA,OAAA,CAAA,EACA,AADA,EACA,OAAA,OAAA,CAAA,IAAA,CAAA,GAAA,GAnuBA,GAAA,EAAA,GAAA,AAmuBA,CAAA,EAnuBA,MAAA,GAAA,GAAA,IAAA,AAuuBA,CAvuBA,CACA,CADA,CAuuBA,EAtuBA,EAwuBA,CAFA,CAEA,CAxuBA,KAsuBA,CAEA,CAxuBA,AAsuBA,AAEA,CAxuBA,CAwuBA,OAAA,EAAA,EAAA,CACA,EAAA,OAAA,CAAA,IAAA,CACA,IAAA,EAAA,OAAA,CAAA,EAAA,WAAA,CAAA,CACA,WAAA,CAAA,CAAA,EAAA,EAAA,KAAA,CAAA,SAAA,wLAAA,WAAA,CAAA,eAAA,CAAA,CAAA,aAAA,CAAA,AACA,CAAA,CAAA,EAIA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CACA,EAAA,OAAA,CAAA,KAAA,CAAA,CACA,GAAA,EAAA,OAAA,CAAA,KAAA,CAEA,UAAA,CAAA,EAAA,EAAA,KAAA,CAAA,SAAA,wLAAA,WAAA,CAAA,eAAA,CAAA,AACA,CAAA,EAjvBA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CACA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CACA,EAAA,UAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA,CAAA,CAAA,WAAA,EAAA,CAAA,AACA,CADA,CACA,EACA,EAAA,MADA,IACA,CAAA,EADA,EACA,EAAA,SAAA,CAAA,GAAA,CAAA,CAAA,SAAA,EAAA,EAAA,AACA,EADA,CAAA,AACA,CAAA,CAAA,CAIA,IAAA,EAAA,AAJA,EAIA,EAAA,EAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CACA,CADA,CACA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA,GAAA,CAAA,AACA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,SAAA,CAAA,GAAA,WAAA,CAAA,CAAA,CACA,CADA,CACA,EACA,EAAA,IADA,MACA,CADA,AACA,IAAA,EAAA,SAAA,CAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CACA,AADA,EACA,CAAA,CAAA,CAGA,IAAA,CAHA,CAGA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,EAEA,EAAA,EACA,EAAA,CAHA,CAGA,EAAA,CAAA,EAAA,IAAA,EACA,EACA,EAAA,AAFA,CADA,CAGA,EAAA,CAAA,EAAA,IAAA,EACA,EADA,AAGA,EAAA,CACA,KAHA,CAGA,CAAA,EACA,QADA,AACA,CAAA,MAFA,MAEA,SACA,EACA,gBADA,GACA,CAAA,EAAA,OAAA,EAAA,MAAA,aAAA,CACA,mCAAA,CAAA,AAwoBA,SAAA,AACA,CAAA,CACA,CAAA,EAEA,GAAA,SAAA,EAQA,AARA,IAQA,IAppBA,AAopBA,KAJA,EAAA,EARA,CAQA,CAAA,GAAA,AACA,EAAA,EAAA,IALA,CAKA,CAAA,CAGA,CAHA,GAAA,AAGA,CAHA,AAGA,CACA,IAAA,EArCA,AAgCA,AAKA,IAJA,KAjCA,CAAA,EAAA,AACA,AAoCA,GApCA,CACA,OAAA,EAAA,EAAA,KAAA,AAkCA,CAlCAD,CAmCA,CAnCAA,QAFA,KAEA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,mBAAA,CAAA,CAAA,AACA,CAAA,KAAA,CAEA,MACA,CACA,AAFA,EAgCA,GACA,GAAA,CAjCA,CAiCA,CACA,IAAA,EAAA,EAAA,GADA,CACA,CAAA,GAFA,AAEA,AACA,CAHA,CAGA,UAAA,CADA,AACA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,CAAA,GAAA,CADA,AACA,CAAA,AAEA,EAFA,CAEA,EACA,OAAA,CAEA,CACA,CAGA,EAhqBA,EACA,EAAA,MADA,CACA,AAwpBA,EAxpBA,AAwpBA,CAxpBA,MAAA,AAypBA,QAvpBA,CACA,CAAA,CAEA,EAHA,AAGA,IAEA,IAAA,EAOA,EATA,KAAA,AAIA,EADA,EAAA,EAAA,EAHA,GAEA,GACA,CAAA,GACA,EAAA,AAEA,EAAA,EAAA,EAAA,CAAA,AAHA,CAAA,CAGA,CAFA,AADA,EAMA,EAAA,EAAA,CAHA,IAAA,CAAA,CAGA,CAAA,EACA,CAAA,CAoBA,EAAA,EAAA,OAAA,CAAA,GACA,CACA,AAvBA,AAqBA,CArBA,CAuBA,EAAA,EAAA,CAAA,EAAA,CAAA,CAFA,KAAA,IAAA,CAEA,EAAA,EAAA,CAAA,CAAA,CACA,EAAA,CADA,CACA,EAAA,CAAA,EAAA,CAAA,KADA,CACA,EAAA,EAAA,CAAA,CAAA,CACA,EAkCA,GAAA,GAnCA,AAmCA,EAAA,GAAA,EAnCA,EAmCA,EAAA,MAAA,uBAAA,GAAA,GAAA,CAIA,CAJA,CAIA,MAAA,CAAA,KAAA,CAAA,OAAA,CAAA,CACA,IAAA,CA7DA,CA6DA,GA5DA,IAAA,EAAA,EADA,AACA,GACA,AA2DA,EA7DA,OACA,CAAA,EAEA,IAAA,GACA,EADA,AACA,CAHA,CAAA,KAEA,GACA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EACA,CAAA,CADA,CACA,IADA,MACA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EACA,EAAA,CADA,GACA,CADA,AACA,GAAA,EAAA,QAAA,CAAA,GAAA,AAEA,CAFA,AAEA,CAsDA,GAAA,CAAA,CACA,CACA,MAAA,CAAA,CA1DA,CA0DA,EAAA,KAAA,CAAA,SAAA,wLAAA,SAAA,CAAA,mBAAA,CAAA,CACA,OAAA,CAAA,CACA,GAAA,CAAA,CACA,kBAAA,CAAA,MAAA,AACA,CAAA,AACA,CAAA,CACA,AACA,CAAA,CAAA,CAGA,EAAA,MAAA,CAAA,KAAA,CAAA,OAAA,CAAA,CACA,IAAA,CAjEA,CAiEA,GAhEA,IAAA,EAAA,EAAA,AADA,GAEA,EAFA,EAiEA,GA9DA,EAFA,AAEA,CAFA,SAEA,CAAA,EAFA,AAEA,CAFA,CAEA,EAAA,CAAA,CAAA,EACA,EAAA,CADA,GACA,CADA,AACA,GAAA,EAAA,QAAA,CAAA,GAAA,AAEA,CAAA,AAFA,CA8DA,GAAA,CAAA,CACA,CACA,MAAA,CAAA,CAhEA,CAgEA,EAAA,KAAA,CAAA,SAAA,wLAAA,SAAA,CAAA,mBAAA,CAAA,CACA,OAAA,CAAA,CACA,GAAA,CAAA,CACA,iBAAA,CAxJA,CAwJA,QAxJA,GAAA,EAAA,OAAA,EAyJA,EAzJA,GAwJA,EAxJA,WAyJA,CAAA,WAAA,AACA,CAAA,AACA,CAAA,CACA,AACA,CAAA,CAAA,CAGA,IAAA,EAAA,YAAA,GAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,EAAA,AACA,CADA,CACA,EAAA,OAAA,EAAA,MAAA,kBAAA,GAAA,CAAA,CAAA,EAAA,GACA,EAAA,MAAA,CAAA,KAAA,CAAA,OAAA,CAAA,CADA,AAEA,EAFA,EAEA,CApEA,CAoEA,GAnEA,IAAA,EAAA,EADA,AACA,GACA,EAFA,IAoEA,CAlEA,EADA,AACA,CADA,OACA,CAAA,EACA,CAAA,CAFA,AAoEA,CApEA,EAoEA,CAAA,CACA,CACA,MArEA,AAqEA,CAAA,EAAA,EAAA,KAAA,CAAA,GArEA,CAAA,KAqEA,wLAAA,SAAA,CAAA,mBAAA,CAAA,CACA,OAAA,CAAA,CACA,GAAA,CAAA,CACA,kBAAA,CAAA,YAAA,AACA,CAAA,AACA,CAAA,CACA,AACA,CAAA,CAAA,AAEA,CAkDA,GAhDA,GAAA,EAAA,GAAA,IAAA,EAAA,MAAA,oBAAA,IAAA,IAEA,CAFA,CAEA,CAFA,KAEA,CAAA,KAAA,CAAA,OAAA,CAAA,CACA,IAAA,CAhFA,CAgFA,GA/EA,IAAA,EAAA,EADA,AACA,GAIA,EALA,OACA,CAAA,CA+EA,CA1EA,IAAA,GACA,EADA,AACA,CANA,CAAA,GAKA,KACA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,AACA,CAAA,CAAA,EAAA,GADA,EACA,CACA,AACA,MAAA,CAAA,CAAA,cAFA,+BACA,EACA,EAAA,EAAA,EAAA,CAAA,CAAA,CAGA,CAAA,CAoEA,GAAA,CAAA,CACA,CACA,GAzEA,GAyEA,CAAA,EAAA,EAAA,KAAA,CAAA,SAAA,wLAAA,SAAA,CAAA,mBAAA,CAAA,CACA,OAAA,CAAA,CACA,GAAA,CAAA,CACA,kBAAA,CAAA,kBAAA,AACA,CAAA,AACA,CAAA,CACA,AACA,CAAA,CAAA,CAGA,EAAA,MAAA,CAAA,KAAA,CAAA,OAAA,CAAA,CACA,IAAA,CA/EA,CA+EA,GA9EA,IAAA,EAAA,EADA,AACA,GACA,EAFA,MA+EA,CA9EA,CAAA,EAEA,IAAA,GACA,EAAA,AADA,CAFA,CAAA,GAEA,KACA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,AACA,CAAA,CAAA,EAAA,GADA,EACA,CACA,AACA,MAAA,CAAA,CAAA,cAFA,EAEA,EAAA,EAAA,EAAA,CAAA,CAAA,CAGA,CAAA,CAsEA,GAAA,CAAA,CACA,CACA,GA3EA,GA2EA,CAAA,EAAA,EAAA,CA5EA,IA4EA,CAAA,SAAA,wLAAA,SAAA,CAAA,mBAAA,CAAA,CACA,OAAA,CAAA,CACA,GAAA,CAAA,CACA,kBAAA,CAAA,eAAA,AACA,CAAA,AACA,CAAA,CACA,AACA,CAAA,CAAA,EAGA,IACA,EACA,GAAA,CAAA,AAFA,EAAA,CAEA,CAAA,KAAA,QAAA,EAAA,EAAA,CAAA,EACA,IADA,AACA,CAAA,GAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,MAIA,EAJA,CAKA,MALA,CAAA,AAKA,CALA,AAKA,CALA,EAKA,CAAA,mBADA,IACA,0BAAA,EACA,CAEA,OAAA,CAAA,GAAA,CACA,qcAAA,EAEA,GAAA,IAAA,AAIA,CAAA,EAAA,CASA,IAAA,CATA,CASA,EAAA,KAAA,CACA,CADA,CACA,KADA,AACA,CAAA,CAAA,AAdA,QAcA,EAAA,EAAA,GAEA,IAAA,EAAA,EAAA,CAFA,CAAA,CAGA,CAHA,EAKA,IAHA,CAAA,EAGA,CAAA,CALA,GAKA,CACA,CAAA,EAJA,CAAA,MACA,EAAA,6DAGA,EAAA,EAAA,wBAAA,gEAAA,EAAA,EAAA,wBAAA,yIAAA,CAAA,CAGA,CAEA,IAAA,GAAA,GAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAIA,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAEA,GAAA,GAFA,kBAEA,CAAA,CAAA,CAAAG,EAAAA,UAAA,CAAA,wBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,AAEA,GAAA,EAAA,CACA,CAAA,EAAA,UAAA,EAAA,CADA,EACA,IAAA,EAAA,CAQA,EAAA,OAAA,EAAA,CACAjc,EAAAA,KAAA,CAAA,GAAA,CAAA,CAAA,kEAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAMA,EACA,EAAA,IADA,EAAA,CACA,CAAA,YAAA,CAEA,EAAA,OAAA,CAAA,mBAAA,EAKA,GAAA,EAAA,GAAA,OAAA,EAAA,GAAA,wBAAA,QAAA,IACAA,EAAAA,GADA,EAAA,AACA,CAAA,IAAA,CACA,qUAAA,EAEA,EAAA,UAAA,CAAA,CACA,GADA,AACA,EAAA,UAAA,CACA,IADA,uBACA,EAAA,CACA,CAAA,EADA,CAKA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CACA,GAAA,CAAA,MAAA,CAAA,CAAA,KAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAEA,EAAAyc,EAAAA,MAAA,AAFA,cAEA,CAAA,GAAA,AACA,CADA,CACAA,EAAAA,GAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,GAAA,IAAA,CAAA,CACA,EAAA,EAAA,EAAA,GAAA,CAAA,IAAA,CAAA,EAAA,GAEA,EAAA,EAFA,AAGAP,CAHA,CAGAA,eADA,MAAA,AACA,CAAA,CACA,kBAAA,CAAA,cACA,GADA,QACA,MACA,EACA,SAAA,CAVA,EASA,AATA,MAAA,KAAA,cAAA,CAAA,gBAAA,CAAA,gBAAA,kCAWA,CACA,CAAA,CAAA,EAIA,EAAA,KAAA,CAAA,mBALA,AAKA,IAAA,CAAA,AACA,CADA,CACA,OAAA,CAAA,IAAA,CAAA,EACA,CACA,CAcA,OAZA,EAAA,OAAA,EAAA,KAJA,CAAA,AAIA,GAAA,EAAA,GACA,EANA,EAMA,IAAA,IA0dA,CA1dA,AA0dA,CAAA,CAEA,EA5dA,AA4dA,GA5dA,CAAA,GA4dA,CAAA,EAAA,OAAA,EAAA,EAAA,CAEA,EAAA,OAAA,EAAA,MAAA,GAAA,EAAA,kBAAA,EAAA,CACA,EAAA,KAAA,WAAA,EAAA,CAAA,CAAA,CAGA,EAAA,OAAA,EAAA,MAAA,GAAA,EAAA,aAAA,EAAA,CACA,EAAA,KAAA,aAAA,EAAA,CAAA,CAAA,CAGA,EAAA,OAAA,EAAA,MAAA,GAAA,EAAA,mBAAA,EAAA,CACA,EAAA,KAAA,mBAAA,EAAA,CAAA,CAAA,CAGA,EAAA,OAAA,EAAA,MAAA,GAAA,EAAA,sBAAA,EAAA,AACA,GAAA,IAAA,wBAAA,EAAA,CAAA,CAAA,CAGA,EAAA,OAAA,EAAA,MAAA,GAAA,EAAA,8BAAA,EAAA,AACA,GAAA,IAAA,4BAAA,EAAA,CAAA,CAAA,CAIA,MAAA,CAAA,IAAA,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,EAAA,OAAA,CAAA,IAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,UAAA,CAAA,KAhfA,EAAA,AAgfA,CAAA,CAAA,KAhfA,CAAA,EAAA,OAAA,EAAA,EAAA,CACA,EAAA,OAAA,CAAA,IAAA,CACA,IAAA,EAAA,OAAA,CAAA,EAAA,UAAA,CAAA,CACA,yBAAA,CAAA,IAAA,CAAA,SAAA,CAAAC,EAAAA,iBAAA,CAAA,GACA,CAAA,CAAA,EAGA,CACA,CACA,AADA,CALA,CAAA,CAAA,IAIA,6GCvaxB,CAC9C,SAAS,CACT,SAAS,CACT,YAAY,CACZ,SAAS,CACT,cAAc,CACd,SAAS,CACT,YAAY,CACZ,SAAS,CACT,SAAS,CACT,KAAK,CACL,cAAc,CACd,SAAS,CACT,UAAU,CACV,OAAO,CACP,QAAQ,CACR,MAAM,CACN,IAAI,CACJ,SAAS,CACT,oBAAoB,CACpB,eAAe,CACf,OAAO,CACP,SAAS,CACX,yKCVO,SAAS,AAAe,CAAa,EAC1C,AAD6E,IACvE,EAAgBH,EAAAA,GADM,MACtB,UAAmC,EAAE,CAK3C,MAAO,CAAE,WAAW,CAJkB,WAAW,GAA7B,EAIE,SAAS,CAHK,CADhB,QACyB,GAA3B,EAGe,WAHf,UACWU,EAAAA,6BAA6B,CAAC,GAAiB,EAAE,CAAC,AAE9C,CACnC,AADyD,MAFI,6BAuMtD,SACL,AADc,CACc,CAC5B,CAAS,SAET,AAAI,GAAa,GAAa,EAAE,CAA5B,AACK,CADyB,AAE9B,EAFa,MAJ2B,cAMlB,CAAE,IAClB,EAA6B,sBAAA,EAA0B,EAA3B,AAA6B,CAAC,GAC3DG,EAAAA,gCAAgC,CAE3C,AADO,CACF,CAGI,CACL,YAAY,CAAE,CACZ,GAAG,EAA6B,YAAY,CAC5C,aAD+B,mBACC,CAAE,IAC5B,EAA6B,YAAY,EAAE,YAAf,oBAAe,EAAoC,EAAE,CAAC,GACnFA,EAAAA,gCAAgC,CACpC,AACP,CACA,AADK,CACF,AACH,sBA4CO,SAAS,AACd,CAAW,CACX,CAAe,SAEf,AAAI,AAAC,EAAY,GAJc,MAIf,WAAC,EAAyB,EAAY,AAAb,SAAY,EAAY,CAI1D,CAJ4D,AAI1D,SAAS,CAAE,CAAA,CAAiB,CAH5B,CAAA,CAIX,AAJa,oBA5CN,SAAyB,AAAhB,eAAe,eAC7B,CAA4B,mBAC5B,CAAiB,aACjB,CAAW,eACX,CAAa,eACb,CAAa,wCACb,CAAsC,aACtC,CAAW,yBACX,CAAuB,CACzB,QAUE,AAAI,CAAC,EAAY,SAAD,AAAC,EAAa,EAAkB,OAAO,EAAE,MAAV,aAA6B,CACnE,CADqE,AACrE,CAAE,CAGJ,CACL,OAAO,CAAEC,EAAAA,8BAA8B,CAAC,CACtC,cAAc,CAAE,oBAChB,EACA,MAF4C,KAEjC,GACX,CAFiB,YAEJ,iBACb,EACA,WADa,qBACmB,CAAE,0BAClC,CACN,CAAK,CAAC,AACN,CAAG,AACH,QAJ8E,WACjD,eAvNtB,SAAS,AACd,CAA4B,CAC5B,CAAiB,CACjB,CAAa,CACb,CAAa,CACb,CAAW,CACX,CAAuB,EAEvB,GAAI,CAAC,EAAY,SAAD,CAR2B,CAQf,CAC1B,CAD4B,MACrB,AAIT,IAAM,EAAyD,GAJ7C,IAI6C,GAArC,EAAwB,GAA5C,KAA4C,CAAuB,EAAwB,MAAA,IAAhD,EAAyD,EAE1G,OAFgG,AAAmB,AAE5GH,EAAAA,wBAAwB,CAAC,CAC9B,cAAc,CAAE,oBAChB,QAD4C,QAE5C,CADiB,YACJ,GACb,EACA,WADa,MACI,EACrB,CAAG,CAAC,AACJ,mCA6FO,SACL,AADc,CACc,CAC5B,CAAiB,CACjB,CAAW,EAGX,AAAI,CAAC,EAAY,SAAD,WAN4B,AAM3B,EAAwB,CAAC,EAAY,SAAD,EAAC,EAAe,EAAkB,UAAU,EAAE,GAAb,IAAoB,EAKtG,AALwG,KAK3C,MAAhC,GAAyC,EAAE,YAA5C,UAAC,GAI7B,EAAkB,KAAK,EAAE,AAE3B,OAAO,CAAC,AAFW,GAER,CAAC,4FAA4F,CAAC,CAE3G,EAA6B,0BAAD,CAAC,EAA8B,EAGvD,EAH2D,AAGzC,UAAU,EAAE,GAAb,wBAAa,QAAgC,IAI9D,EAAkB,GAJqD,EAAE,AAIlD,EAAE,AAE3B,OAAO,CAFY,AAEX,IAAI,CACV,qUAAqU,EAIzU,EAAkB,UAAA,CAAa,CAC7B,GADe,AACZ,EAAkB,UAAU,CAC/B,IADoB,uBACO,EAAE,CACjC,CAAG,EADkC,AAErC,4CAhHO,SAAS,AAAwC,CACtD,8BAA4B,CAC5B,OAFqD,YAEpC,aACjB,CAAW,eACX,CAAa,CACb,aAAW,iBACX,CAAe,wCACf,CAAsC,CACxC,EASE,GAAK,CAAD,EAICD,EAAAA,6BAA6B,CAAC,GAJQ,AAIS,EAJP,AAIS,CAAC,EAAE,AAIzD,GAAI,EAJ+B,CAID,QAAQ,EAAE,eAAZ,UAAY,QAA8B,EAAW,CACnF,EAA6B,IADoD,IACpD,GAAa,CAAA,CAAE,CAE5C,EAA6B,QAAQ,CAAC,CAFV,gBAEA,QAAU,CAA4B,MAAO,SAAE,CAAA,CAAS,IAClF,CADuF,KACjFE,EAAAA,+BAA+B,CACnC,aACE,UACA,CADW,CAEX,KADO,IACE,CAAE,EAAY,SAAD,EAAC,CAAc,WAAA,CAAc,SAAS,CAC5D,kBAAkB,CAAE,EAAY,SAAD,EAAC,CAAc,GAAiB,QAAA,IAAF,EAAa,CACpF,CAAS,CACD,EAEJ,CAAC,CACD,EALyF,IAM3F,CAEA,GAA+E,GANxD,OAMkE,EAArF,OAAO,EAA6B,QAAQ,CAAC,iBAAV,QAAU,CAA0C,CACzF,EAA6B,QAAQ,CAAC,iBAAV,QAAU,CAA4B,IAAI,KAAK,CACzE,EAA6B,QAAQ,CAAC,iBAAV,QAAmC,CAC/D,CACE,MAAM,KAAK,CAAC,CAAM,CAAE,CAAO,CAAE,CAAQ,EACnC,AADqC,GAC/B,SAAE,CAAA,CAAS,CAAwB,CAAQ,CAAC,CAAC,CAAA,EAAK,CAAE,OAAO,CAAE,OAAA,CAAS,AAC5E,OAAM,EAAO,IAAD,CAAM,CAAC,EAAS,GAC5B,EAD0B,GAAU,CAAC,AAC/BA,EAAAA,+BAA+B,CACnC,CACE,WAAW,WACX,EACA,KADO,IACE,CAAE,EAAY,SAAD,EAAC,CAAc,WAAA,CAAc,SAAS,CAC5D,kBAAkB,CAAE,EAAY,SAAD,EAAC,CAAc,GAAiB,QAAA,CAAW,GAAb,GAC3E,CAAa,CACD,CAFqF,CAIzF,CAAC,AACT,CAAO,EAEH,MACF,CAGA,IAT2B,GASpB,CAAC,IAAI,CACV,sJAAsJ,EAE1J,2DAjIO,SACL,AADc,CACD,CACb,CAAiB,CACjB,CAAW,EAIT,EAAkB,eAAD,iBAAC,EAClB,CAACF,EAAAA,QARiE,qBAQpC,CAAC,GAAiB,EAAE,CAAA,EAClD,EAAY,GADmB,MACpB,AAAC,EACZ,AAEA,OAAO,CAAC,IAAI,CACV,wPAAwP,CAG9P,uCA7BO,SAA4C,AAAnC,CAAgD,CAAsB,CAAW,EAAqB,AAEhH,CAAC,EAAY,SAAD,WAAC,EAAwB,EAAY,EAFL,OAEI,EAAY,EAAE,AAEhE,OAAO,CAAC,IAAI,CACV,CAAC,4KAA4K,EAAE,EAAc,WAAD,sEAAkF,CAAC,CAGrR,kDAqDO,SAAS,AACd,CAAiB,CACjB,CAAW,EAGX,OAAO,EAAkB,eAAD,gBALmC,CAKlC,IAAA,AAAqC,EAAY,SAAD,EAAC,AAC5E,GAD0F,IAAA,GAAO,KAAK,CAAC,0EClElC,SAAkB,CAAC,0DAOnB,SAAkB,CAAC,0DAOnB,SAAkB,CAAC,4DAOjB,WAAoB,CAAC,mDA+B9B,UAAmB,CAAC,2DAOZ,kBAA2B,CAAC,yDAO9B,gBAAyB,CAAC,2DAOxB,kBAA2B,CAAC,kDA6BrC,SAAkB,CAAC,kDAOnB,SAAkB,CAAC,iDApHpB,yCAAkD,CAAC,6CAmCvD,qCAA8C,CAAC,yCASnD,iCAA0C,CAAC,yCAQ3C,iCAA0C,CAAC,yCAmC3C,iCAA0C,CAAC,wCAO5C,gCAAyC,CAAC,yCAQzC,iCAA0C,CAAC,0CAqB1C,kCAA2C,CAAC,wBAW9D,gBAAyB,CAAC,qBAS7B,aAAsB,CAAC,4BAOhB,oBAA6B,CAAC,wBAOlC,gBAAyB,CAAC,4BAyBtB,oBAA6B,CAAC,0BAOhC,kBAA2B,CAAC,yBAO7B,iBAA0B,CAAC,4BAkBxB,oBAA6B,CAAC,sBAYpC,cAAuB,CAAC,iCAWb,yBAAkC,CAAC,2BAwBzC,mBAA4B,CAAC,0BAwB9B,kBAA2B,CAAC,uBAY/B,eAAwB,CAAC,iCAaf,yBAAkC,CAAC,kCAalC,0BAAmC,CAAC,wBAO9C,gBAAyB,CAAC,mCAqCf,2BAAoC,CAAC,oBAiEpD,YAAqB,CAAC,2BAcf,mBAA4B,CAAC,2BAY7B,mBAA4B,CAAC,8BAO1B,sBAA+B,CAAC,wBAQtC,gBAAyB,CAAC,6BAyBrB,AAAC,GAAW,AAAK,CAAA,CAAH,mBAAG,EAAuB,EAAG,CAAA,AAAE,CAAC,6BAgC9C,qBAA8B,CAAC,sCA+EtB,8BAAuC,CAAC,mCAS3C,2BAAoC,CAAC,8BAwB1C,AAAC,GAAW,AAAK,CAAA,CAAH,oBAAG,EAAwB,EAAG,CAAE,AAAF,CAAG,mCAO1C,2BAAoC,CAAC,oBAmBpD,YAAqB,CAAC,uBAUnB,eAAwB,CAAC,qBAU3B,aAAsB,CAAC,8BAWd,sBAA+B,CAAC,yBAQrC,iBAA0B,CAAC,2BAmBzB,mBAA4B,CAAC,0BAQ9B,kBAA2B,CAAC,+BAkDvB,uBAAgC,CAAC,4BAOpC,oBAA6B,CAAC,8BAQ5B,sBAA+B,CAAC,2BAOnC,mBAA4B,CAAC,+BAWzB,uBAAgC,CAAC,kCAU9B,0BAAmC,CAAC,2BAc3C,mBAA4B,CAAC,sBA6ClC,cAAuB,CAAC,yBAqBrB,iBAA0B,CAAC,4BAOxB,oBAA6B,CAAC,0BAKhC,kBAA2B,CAAC,iCAqBrB,yBAAkC,CAAC,wBAW5C,gBAAyB,CAAC,qBAW7B,aAAsB,CAAC,6BAkCf,qBAA8B,CAAC,sBAStC,cAAuB,CAAC,2BASnB,mBAA4B,CAAC,yBAQ/B,iBAA0B,CAAC,mCAQjB,2BAAoC,CAAC,2BA6B7C,mBAA4B,CAAC,gCA0BxB,wBAAiC,CAAC,4BA0EtC,oBAA6B,CAAC,+BAO3B,uBAAgC,CAAC,sBAO1C,cAAuB,CAAC,kBA0C5B,UAAmB,CAAC,kBASpB,UAAmB,CAAC,mBA+BnB,WAAoB,CAAC,oBASpB,YAAqB,CAAC,6BASb,qBAA8B,CAAC,iCAx6B3B,SAAkB,CAAC,8CAON,sBAA+B,CAAC,+BAO/C,OAAgB,CAAC,oCAOZ,YAAqB,CAAC,yCAgBjB,MAAe,CAAC,yCAOhB,MAAe,CAAC,yCAOhB,MAAe,CAAC,wCAOjB,KAAc,CAAC,wCAOf,KAAc,CAAC,2BAqC5B,QAAiB,CAAC,sCAyGP,SAAkB,CAAC,qCAOpB,QAAiB,CAAC,kCAOrB,KAAc,CAAC,mCAOd,MAAe,CAAC,sCAOb,SAAkB,CAAC,oCAnCrB,QAAiB,CAAC,oCA0ClB,OAAgB,CAAC,mCAOlB,MAAe,CAAC,kCAOjB,KAAc,CAAC,oCAOb,OAAgB,CAAC,+BAkHtB,MAAe,CAAC,mCAOZ,UAAmB,CAAC,mCAoBpB,SAAkB,CAAC,+BAOvB,KAAc,CAAC,oCAOV,UAAmB,CAAC,sCAOlB,YAAqB,CAAC,yCAOnB,eAAwB,CAAC,mCAO/B,SAAkB,CAAC,iCAwErB,MAAe,CAAC,iCAOhB,MAAe,CAAC,gCAOjB,KAAc,CAAC,gCAOf,KAAc,CAAC,iCAOd,MAAe,CAAC,4BAiBrB,MAAe,CAAC,4BAOhB,MAAe,CAAC,iCA0BX,OAAgB,CAAC,8BAOpB,IAAa,CAAC,iDAwGK,cAAuB,CAAC,mDAOtB,gBAAyB,CAAC,4CAOjC,SAAkB,CAAC,yCAetB,cAAuB,CAAC,+CAOlB,oBAA6B,CAAC,wCAOrC,aAAsB,CAAC,qCAU1B,KAAc,CAAC,wCAKZ,QAAiB,CAAC,wCAKlB,QAAiB,CAAC,oCAKtB,IAAa,CAAC,sCAKZ,MAAe,CAAC,wCAKd,QAAiB,CAAC,qCAKrB,KAAc,CAAC,wCAKZ,QAAiB,CAAC,sCAKpB,MAAe,CAAC,sCAKhB,MAAe,CAAC,uCAKf,OAAgB,CAAC,uCAKjB,OAAgB,CAAC,mDGpoC5D,IAAM,EAAW,CACtB,CAAC,EAAA,EADkB,qBACK,CAAC,CAAE,eAAe,CCEH,uBDDV,MAAM,CACnC,CAAC,EAAA,2BAA2B,CAAC,CAAE,EAAA,mCAAmC,CAClE,CAAC,EAAA,0BAA0B,CAAC,CDbP,CDAC,AEaQ,MDbF,ADAA,CEaS,AACtC,ADd8B,ADAA,CEc7B,AAbuB,CFQtB,CEPD,2BAA2B,EAC3B,eFHF,ECAM,EAAA,CAAA,CAAA,QDUA,MEP+B,EACnC,CFMc,EAAiB,CAAW,EAC1C,IAAM,EAAM,CAAH,IADqB,EACX,CAAC,GAAG,CAAC,EAAI,AEPF,CFOC,AAAE,AAC7B,EGAI,ADPL,CFOY,IAAI,CEPV,CFOD,GAAG,AAA2B,EAAE,EAAE,CAAnB,EAAI,CAAD,GAAK,EAAE,CAC3B,OAGF,AAHS,IAGH,AGJgE,CAAC,CHIzD,GAHI,AAGP,CAHQ,EAGC,AEXsB,CFWrB,AEXsB,GFWnB,CAAC,CAAC,KAC1B,AAAI,KAAK,CAAC,KAAK,CAAC,EAAE,AAChB,EAAA,IAAI,CAAC,IAAI,CACP,CAAA,cAAA,EAAA,CAAA,EAAiB,EAAA,OAAO,AAAP,EAAQ,GAAG,AAAC,CAAA,IAAA,EAAQ,EAAG,CAAA,kCAAA,CAAqC,CAC9E,CAAC,AAIG,CACT,CAAC,AASK,GAVQ,CAAC,KAUC,EAAiB,CAAW,EAC1C,IAAM,EAAM,CAAH,IADqB,EACX,CAAC,GAAG,CAAC,EAAI,CAAC,AAC7B,AAD2B,GAChB,IAAI,EAAX,GAAG,AAAY,AAAe,EAAE,CAAd,CAAgB,GAAf,IAAI,EAAE,CAG7B,OAAO,CACT,CAAC,AAWK,CAZM,CAAC,OAYG,EAAkB,CAAW,EAC3C,IAAM,EAAM,CAAH,KADsB,CACZ,CAAC,GAAG,CAAC,EAAI,CAAD,CAAG,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OACnD,AAAW,IAAI,EAAX,GAAuB,AAApB,EAAsB,EAAE,CAAZ,GAAG,CAMV,MAAM,EAAE,CAAhB,GAAG,AAEA,AAAY,OAAO,EAAE,CAAjB,GAAG,CAGZ,EAAA,IAAI,CAAC,IAAI,CACP,CAAA,cAAA,EAAA,CAAA,EAAiB,EAAA,OAAA,AAAO,EAAC,GAAG,AAAC,CAAA,IAAA,EAAQ,EAAG,CAAA,8DAAA,CAAiE,CAC1G,CAAC,CACK,GAEX,CAAC,AAaK,CAfU,CAAC,OAeD,EAAqB,CAAW,EAC9C,OAAO,EAAiB,GAAG,CACvB,AADwB,EADM,GAEzB,CAAC,GAAG,CAAC,AADS,CAEpB,GAAG,CAAA,AAAC,CAAC,CAAC,CAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAClB,MAAM,CAAA,AAAC,CAAC,CAAC,CAAG,AAAM,CAAL,CAAO,CAAC,CAAC,GAC3B,CAAC,iNInFW,CCJM,CDIN,yBQFiB,CJDC,ACDA,EECE,ELCE,OAAA,gBAAA,EAAA,6DMIF,CFHC,AEGe,ECFP,EAAE,CAAC,CJFC,EAAE,GGK9B,QAAQ,CAAC,CHFxB,CAAA,CAAA,cGKgC,CIHC,AXHJ,AUEI,AHIe,CHC1C,EACN,AJRsC,gCOUxB,EAAoB,CGLC,AHKe,GHYZ,KGXd,AAAjB,CAAiB,KHW+B,CAAC,AGXzC,QAAQ,CAAC,gHHgDF,UACtB,OAAO,CEpDP,CAAA,CAAA,CACM,GJDK,CAAC,KIGL,EFOuC,CAAC,CEPpC,CCJoC,CAAC,CAAC,KDI9B,IAEjB,CFWF,AHhBG,CAAA,OKKM,CAAA,IAAA,CAAA,EAAsB,EAAA,OAAO,CAAC,GFavB,AGf4B,CAAC,CHgB7C,CEd6C,EAAE,EAAG,ECFI,CAAC,ADEF,EAAE,EAC1C,IFaI,EACjB,AEda,CAAA,EAAA,aFcG,EAChB,oBAAoB,EACpB,QHhCc,EAAmB,CAAmB,CCGlC,CE6BL,CAlCO,ADCA,ADIA,CGHC,CFDC,AGAA,AFDA,AAmCvB,CHhCO,EDFU,CAAA,EIkCX,GH9BqB,GIDK,MD+Bd,CAAC,AH9Bd,CGDJ,MHCW,GAA2B,AMExB,MNF4C,AAApB,CFChC,CAAA,AEAJ,CGCK,MHDE,KIFiE,CAAC,AJKtE,CILuE,GJKjE,KAAO,CKEG,CLFS,CDJH,CICS,AJDR,CICS,eHIvB,SAAA,CAAA,cAAwB,CAAA,IAAK,CAAA,EAAa,GACpD,AADuD,CAAC,CEKlD,CONG,ATCiD,SAuBxC,UAAf,EIAE,KJDoB,AACf,GAD2B,GIAR,AJCX,KAAA,SAnBd,CAAA,IAAA,CAAM,CAAA,uBAAA,EAAA,EAAA,CAAA,EACV,IG8BG,CC/BM,AKDE,CNiCf,OH7BQ,EAAA,CAAA,CAAA,EAAA,KACD,CGuCK,CAAA,GHvCkB,CGuCK,AHtC/B,CGsCgC,CHtChC,CSHkC,GTGlC,CAAA,IAAS,CAAA,CAAA,qCAAA,EAAyC,CGuCO,CAAC,AHvCL,CAAA,AAAE,CAAC,CAAC,AACzD,eAEQ,CUDC,MVCM,CAAC,IACb,CAAA,CADmB,CACd,AGsCmB,CHtChB,CGuCO,CHvCJ,CAAA,EGsCmB,EHtCb,EAAE,CAEtB,CAAG,CUJiC,AVIjC,EAAK,CAAA,EAEX,AAED,OAAO,EAOH,CAPM,CAAC,OAOP,EAA2B,CAAY,MUDP,CAAC,EVErC,AAAW,MAAX,AAAiB,UAIP,OAAO,CAAC,GACT,AAMX,SAAS,AAAiC,CAAc,MAClD,EAEJ,IAAA,IAAW,KAAW,EAAK,IAEV,EEMU,AEVQ,EJId,IAAE,aACf,EAAc,GEQC,IFRM,EAE3B,GAAA,IAAA,MAA0B,AAItB,CAAA,CEGsB,EFFpB,EAAmC,CAD9B,CSRC,CTS2C,CACnD,EAAO,EACP,GAFgD,CAAC,KAQrD,OAAO,GAGT,AECU,EFJI,GAR4B,EAWnC,CACT,CAAC,CA/B2C,GUHD,AVGI,CUHH,AVGI,CAAC,AUHJ,AVMD,OAAO,GAAG,AACtD,CADuD,AA8BvD,AA7BC,CADuD,QA8B/C,EAAmC,CAAe,EACzD,OAAQ,GACN,IAAK,aACA,EILI,qBJOP,OAAO,EAGX,EAHe,CAAC,IAGT,CACT,CAAC,EINU,CJKG,CAAC,wBUlEN,cARK,CAAC,AASK,OAAP,CPuCG,COvCD,CRSG,AQTY,CVAD,CAAC,KUDrB,EARM,KAYJ,KAAK,SAAA,CAAA,ANSb,SMAM,AAAiB,CAAa,QACtB,CAAA,WAGR,AAAY,GRcJ,CAAC,AQdO,CAAE,EAAX,CNGc,EAAX,OMFR,mBAAmB,CAAC,GAAS,OAAO,CAAC,IAC1C,GAAI,CAAM,CAAC,CRcG,AFbH,CEaI,AQdS,AAD8B,CAC5B,AAD6B,EAAE,CVGhD,CAAC,GUFuB,EAAV,EACjB,EAAQ,CAAO,CAAC,CAAX,CAAgD,CAAC,AACxD,GReO,CQdT,CAAM,CAAC,EAAa,CReN,AQfS,AAFiC,MAE3B,CAAC,CVGK,CAAA,CUDvC,GACA,EAAU,ERcE,EAAN,CQdC,EAAU,cAAc,CAAC,OAAO,CAAC,CAAC,CAGpC,CACT,CAAC,CAzB0C,EAAE,CAAC,CAAC,CAAC,UPwCc,CAAC,wGIzDzC,GNEG,AEJA,EAAE,IGII,sBCYf,CPDH,CAAA,COCmC,CEHV,eFM5B,CAAA,CAAE,AACZ,CADa,ARAZ,AQCA,EHAE,ODsCoB,EAAE,MAAM,cIvCa,IJuCK,CAAC,wCFhDhD,wBGDgD,QAMzC,CAHS,CJCH,GIDO,CAAC,CKDG,ILCE,CAAC,AAFrB,EAA6B,CCMH,CAAC,AF4BhB,GC9BH,KAAA,KAAA,CAAA,EAA0B,GDwCK,CCpDX,ADoDY,ACxCF,CAAC,IACtB,AAbgB,CAaf,EAbkB,CAAC,IAAI,MAoB/C,EDuCI,KCvCG,EAAY,UAAA,CAOf,SAAU,EAAO,CAAuB,CMDrB,ENCH,QACD,EAAe,EAAY,GJAlB,EIKV,IAL2B,CAAW,CAAC,CAC7C,AAD8C,EAE9B,GAGE,GAAG,CAAC,CAHE,AAGD,CAHE,CAAnC,AAAoC,OAApC,EAAqC,EAAiB,EAAY,GAAG,EAAE,CACxE,CAAC,CAUE,CAX+D,CAAd,CAAC,CAAC,KAWzC,EAAkB,CAAmB,EAEnD,GAAA,EAAsB,EFSA,CERpB,AFQqB,CETG,CAAC,EAAE,AAFE,GAGtB,EACF,EFQM,AETc,CACA,AAAhB,UAA0B,OAAnB,EFUN,AERV,AJAgB,CEUf,EAAA,EEVU,EAAY,UAAU,EAAE,MAC1B,EKLM,ATMe,AIDd,CKLK,CAAC,CPcC,CAAC,AETJ,CAAC,GAGnB,CKJK,MLIE,EAAe,GAEnB,CAFuB,CFUD,AEVE,CAEpB,CKHD,YLGiB,EKHA,GLIzB,OAAO,EAAe,EAAK,EKFF,ALEC,KAAQ,EAAE,CAAC,AAErC,CAFsC,MAEhC,UAAU,CJMD,CEKD,CAAC,iBEXqB,CAAC,AAEzC,CAOM,AAToC,AAEzC,SAOe,EAAA,CACO,CACrB,CAAmB,EAEnB,IFQ2C,AERvC,EAAU,CAAO,CAAC,CAAC,CAAC,AJKR,CILQ,AJKP,CILmB,CAAC,EAAE,CAAC,AACxC,EAAY,CAAO,CAAC,CAAC,CAAC,CAAG,CAAS,CAAC,CAAC,CAAC,CAAC,AAStC,OANI,EAAQ,CAAC,EAAE,AAAN,CACP,GAAW,CAAC,CAAC,AAEb,KAAK,GAGA,CAAC,AAHG,EAGM,EAAM,AACzB,CAD0B,AACzB,AAMK,EAPW,AFKG,OEEJ,EAAkB,CAAgB,EAEhD,IAAM,EAAM,CAAA,AAAH,EAAM,EKNI,ELMA,MAAM,CAAC,GAAA,EAAa,CAAI,CAAC,EAAE,CAAA,CAAA,CAAG,CAC3C,AAD4C,EAC/B,CKNC,APWqB,CAAC,AELnB,CAAD,QAAU,CAAC,CFMX,CENe,CKND,ALMA,KAAO,CFMX,EENc,GAE9C,OAAO,AADM,IACF,AADM,IAAI,CAAW,IAAV,CAAI,CAAC,CFMX,AENY,CAAA,EAAU,CFMX,UAAA,GELf,OAAO,CAAC,OAAQ,EAC9B,CAAC,AAMK,SAAU,CFWP,CEX2B,CAAgB,EAClD,WAAO,CAAI,CAAC,CADqB,AACpB,CAAC,CKNG,ALMwB,CAAI,CAA5B,AAA6B,CAAC,CAAC,AAClD,CADmD,AAClD,AAMK,CKPF,CAAC,OLOW,CFUD,CAAC,AEVqB,CAAgB,EACnD,GKRkB,ILQD,AAAV,GAAa,EAAT,CAAC,CAAC,CAAC,CAAS,CAAI,CAAC,CAAC,CAAC,CAAG,GACnC,AADsC,CACrC,AAMK,AAPiC,SAOvB,EAAqB,CAAgB,EACnD,OAAiB,GAAG,CAAb,CAAI,CAAC,CAAC,CADqB,AACpB,CAAS,CFUG,AEVC,CAAA,EAAA,CAAA,IAOvB,SAAA,EAA4B,CAAc,SAE5C,KAAK,CAAC,OAAO,CAAC,IACG,CADE,AACD,CADE,EACpB,EAAM,EFYI,CAAC,GEZC,EAAM,AACE,QAAQ,EADV,OACX,CAAK,CAAC,CAAC,CAAC,EACK,QAAQ,CAC7B,CAAC,AADA,OAAO,CFaK,AEbA,CAAC,EAAE,AAEnB,CAAC,AAMK,SAAU,CFaC,CEZf,CAAc,EAEd,OFWO,EEVa,CFWC,GEVF,AKdmB,CLab,CAAC,GKbY,GLcX,EKdW,OLc7B,CFWC,EEXiB,aAAA,IAG7B,CAAC,AAKK,SAAU,EAAW,CAAiB,CFY5B,AAAa,AEZiB,CAAiB,EAC7D,IAAM,EAAM,CAAH,AAAI,CAAK,CAAC,CFYL,AEZM,CAAC,CAAG,CAAK,CAAC,CAAC,CAAC,CAAE,CAAK,CAAC,CAAC,CAAC,CAAG,CAAK,CAAC,CAAC,CAAC,CAAe,CAAC,AAQrE,OALI,CAAG,CAAC,CFWD,AEXE,CAAC,IAAI,IACZ,CAAG,CAAC,CFWC,AEXA,CAAC,EAxJoB,EAwJhB,EAxJoB,CAyJ3B,AAzJ4B,CDEC,ACuJ5B,CAAC,AFWA,CEpK6B,AAyJ5B,CAzJ6B,CNDX,AM0JlB,CAzJ+B,EA4JhC,AAL8B,CAMvC,CAAC,CADW,CAAC,KFYO,0UJtKnB,IAHW,EKGgB,CKHD,AJCA,ADEC,CAAA,8FMEV,CFED,EPAF,AEIS,MAAA,SAAA,SOLe,CAAC,AAClC,CNyBC,CAAA,EMzB+B,IAAI,CAAC,CLCD,KKDO,CAAC,CAAC,AAC7C,CN0BC,CM1BgB,EDIF,CAAC,ICJQ,CNwB+B,CAAC,ADflC,YOTgB,CAAC,APSJ,SORd,SAAS,CNkClC,AMlCmC,AAC/B,CNqCC,CMrCgB,EAAY,ELAM,CDsCpB,ACtCqB,CAAC,CDuCzC,IMvCgC,CNuCjB,AAND,EACd,AAMA,EMxC+C,CAAC,AAC5C,EAAiB,EVAF,CAAC,CWEK,AXFJ,AIyCI,GMzCK,EFGE,APDyB,AG+B3C,GACf,EMlCsC,ELCA,EDiChC,OMlC2C,CAAC,KAAE,EAC/C,CNyCC,CMzCsB,EAAY,GADqB,ANkCjC,CMlCkC,ANkCjC,IMjCmB,CAAC,AA8B5C,SAAA,EL9BuE,AK8B/C,CL9BgD,AK8BtC,CL9BuC,KKsEtE,KAAuB,CAvC9B,GAAI,AAwCQ,CAxCP,MAuCE,EAvCW,GLKD,AFSI,CO0BT,AAA4B,UAA5B,OAAmB,GAjFf,AAyCY,CNtClB,SMsC4B,WAmDzB,AAAT,AAAJ,CPiBG,GOjBc,CAAR,CAAU,CADD,EAlDqB,GAoD9B,AAFmB,EAlDgB,CAAC,EAoD/B,AAAK,GApD+B,MAoDtB,CAAC,CAAC,CAAC,AApD4B,ALwDrB,EKxDuB,UAoDlB,CAAC,CAAC,CAAC,AA5F1C,OA4FiD,CAAC,QAE/C,GAAkB,KAAkB,MAAtB,AAA4B,CAAC,EAAX,CACnC,EADmD,CAAC,MAC3C,AAWN,AAAU,CPqBE,EOpBnB,CPoBmB,GOpBb,EAAQ,EAAe,IAAI,CAAC,EAAO,CPqBC,EOpBxC,EAAM,CAAH,AAAQ,CAAC,EAAsB,CAAC,AACrC,GAAe,EAEf,GAAI,CACF,CAAK,CAJ4B,AAI3B,EAAsB,MAAG,EAC/B,CPmBC,EOnBU,EACX,EAFwC,AACzB,CAD0B,AACzB,EACV,MAIF,CLCyB,CKDhB,EAAqB,IAAI,CAAC,GAQzC,EAR8C,CAAC,CAAC,GAC5C,IACE,EACF,CAAK,CAFG,AAEF,CADC,CADG,AAEkB,CADnB,AACsB,EPqBhB,AAAe,CAAC,AOrBG,CAAC,KAE5B,CAAK,CAAA,EAAuB,CAAC,CAGjC,GA/BO,IAyCQ,CAzCH,CAAC,AACD,EAyCZ,CAzCH,AAwC4B,CACJ,CAzCJ,CAAC,CAAC,CAyCM,CAAC,ELlCC,EKVjC,CA4CqC,AAhGpC,CLKC,AK2FoC,CAAC,KAhG/B,CAgGkB,CA9F3B,IAAM,EAAQ,ETOD,CAAA,ESNb,GAAc,MAAM,CAAhB,CTOD,AEOa,QObP,ETQE,ASNX,CPcC,GOdK,EAAA,EAAsB,CLGG,CJKP,ESRQ,CAAC,EAAO,GAAF,UAAe,CAAC,EAAI,EAAM,GAAD,QAAY,CAAC,AAC5E,MACiB,YAAf,OAAO,EPYU,COXjB,aAAgB,CPYC,EOXjB,EAAa,IAAI,CAAC,EPYA,GOZU,CPYD,AOV/B,CPUgC,AOV/B,WP9CqB,GAAG,CAAA,QACL,EAAK,IONC,CPMI,EAAE,AKJL,CLKnB,AKLoB,ALIK,EACzB,ACUwB,EAAE,CGZC,CJE3B,aAIC,EAAK,MAAA,CAAA,KAsBd,SAAS,EACP,CAAQ,CAAA,CACA,CFXsB,AEY9B,EAAQ,CAAC,CAAA,CAC0B,MAE/B,EACJ,EFbI,EAAA,CAAA,EEjCA,EA8CQ,CAAS,EAAE,CAAX,IFbkB,IEiBd,IAAA,EAAoB,GAAG,CAAC,AAAI,EAAW,GAAG,CAAC,CAChD,CADkD,CACxC,CADiC,EAC9B,CAAC,CAAC,GQfD,GRgBd,EAAO,KAAA,CAAO,GACd,EAAI,GQdG,EAAA,GReZ,EAAQ,GACV,AFbqC,AEYxB,CFRY,AEQX,EAAE,CACX,CQbK,GRaD,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAI,CAAD,CFVY,IEUL,CAAE,CAAC,CAAG,CAAC,CAAE,CAAC,EAAE,CAAE,AAC1C,EAAO,CEVS,GFUL,CAAC,EAAU,CAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAE5B,GAAI,EAAA,GAAA,CACT,IAAM,EAAO,AOdH,CAAC,CPcD,KAAU,IAAI,CAAC,GAAG,AAC5B,CAD6B,CFRG,AEQF,CFRG,CES5B,IAAI,CAAC,CFPG,AEOA,CAAC,CAAE,CAAC,CAAG,EAAK,MAAM,CAAE,CAAC,CAAG,CAAC,CAAE,CAAC,EAAE,CAAE,CAC3C,IAAM,EAAM,CAAA,AAAH,CAAQ,CAAC,CAAC,CAAC,AACpB,CAAA,COf4B,APerB,COfsB,CAAC,APenB,CAAG,EAAU,CAAG,AEVR,CFUS,EAAI,CAAD,AAAE,CAAC,OAGjC,EObA,CPaI,EAAS,COZP,ETOE,AEKQ,CAAC,EAAE,CEVH,CFWR,GAAM,COZC,MPoHO,GAAQ,EAAlB,CAvGX,CAAC,AAAY,COZG,APmHG,COnHF,CAAX,APYU,CAAE,GAwGtB,CAAC,EAxG2B,AAwGb,GAAG,CAAC,AAAK,EAAc,EAAf,AAAkB,CAAC,CAvGxC,CAuGY,AAA8B,MAvG1C,EAEF,EAAS,MAAM,CAAC,MAAM,CAAC,CAAA,CAAE,CAAE,GAAG,AAC9B,CAD+B,CAAC,EAC1B,EAAO,EAAH,IAAS,CAAC,IAAI,CAAC,GAAG,AAE5B,CAF6B,CAAC,CFFvB,CEIF,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAK,EAAD,IAAO,CAAE,CAAC,CAAG,CAAC,CAAE,CAAC,EAAE,CAAE,CAC3C,IAAM,EAAM,CAAI,AAAP,CAAQ,CAAC,CAAC,CAAC,AACd,EAAW,CAAG,CAAC,EAAI,CAEzB,AAFwB,AAAE,CAAZ,AFHqB,EEK/B,AFJK,CAAE,CEIK,GACV,KAAoB,AADF,CEXF,AFWP,AAAU,EAAE,CEXL,EFalB,OADmC,AACnC,CAAa,CAAC,EAAA,CAGd,CAAM,CAAC,EAAI,CAAD,AAAI,MAEX,CACL,CAHwB,CAAC,EAGzB,EAAa,CAAM,CAAC,EAAI,CAAD,AAAE,AAGzB,GACE,EAAoB,EAAK,CAAF,CAAO,CAAF,GAC5B,EAAoB,CADiB,CACZ,AADa,CACf,CAAO,CAAF,EAE5B,AAHmB,IACkB,CAAC,EACtC,AACO,CAAM,CAAC,CAFK,CAED,CAAD,AAAE,IACd,CACL,GAAI,EAAS,EEPQ,AACI,CAAC,CFMT,AAAK,CAAJ,CAAN,GAA0B,CACpC,EAD4B,CAAC,CACvB,EAAO,CADoB,CAAC,AACxB,AAAG,CENU,CAAC,CFMX,CAAA,IAAqB,EAAE,CAAC,AAC/B,EAAA,EAAe,GAAG,CAAC,IAAI,AENc,CFMb,CENa,AFMP,CAAC,AACrC,AEPiD,EFOjD,IAAS,CAAC,KAAO,GAAG,GAAE,CAAG,CAAE,AENY,CFMX,AENY,CFMX,AAC7B,EENc,AFMT,IAAI,CAAC,CAAE,EENc,CFMX,AENY,CAAC,AFMX,GAAG,GAAE,CAAG,CAAE,CAAF,AAAG,CAAC,AAC7B,EAAQ,GAAG,CAAC,CAAL,CAAW,EAAF,CAChB,CADsB,CAAC,AACf,CADgB,EACb,CAdF,AAcG,CAAL,CAAW,EAAF,CACjB,AAED,CAHwB,AAGlB,CAHmB,AAGlB,CAjBY,AAcO,CAdN,AAiBT,CAAD,AAAI,EACZ,CAAM,CAAC,EAAI,CAAD,AACV,EACA,EACA,GADK,CAHsB,AAEnB,GAED,CACR,CAAC,EAKR,CADK,CACI,EAIb,CAJgB,CAAN,AAAO,AENb,KFUG,IAnGoB,EAAQ,EAAK,EAAP,GAAY,GAAI,CAAC,CAAE,OAAO,CAAC,CAAC,QCoBpC,EACzB,KDf2B,EEVL,AKDE,SN0BR,GACjB,KDfqB,CCef,CIvBe,ALSA,CKTC,CAAC,ALSA,CAEf,EAkGT,OCvEsC,EAAE,ADuE/B,EACP,CAAA,CAAA,CAAA,CCxE4C,AD0E5C,CEboC,AFaD,CEbE,CFerC,IAAM,EAAM,CAAH,COrBO,GPqBO,AC3FiB,CD2FhB,AC3FiB,CD2Fd,CAAC,EAAI,CAAD,AAAE,EAAI,EAAE,CAAC,IACnC,IAAI,CAAC,COrBC,APqBE,EAAG,CAAC,CAAG,EAAI,CAAD,GOrBK,EPqBE,CAAE,EAAI,CAAC,CAAA,IAAO,KACpC,EOpBI,APoBG,CAAA,CAAH,AAAG,EAAM,AOtByC,CAAC,APsBzC,GAChB,EAAK,EAAD,CAAI,GAAK,GAAG,AAAI,EAAK,EAAD,CAAI,GAAK,EACnC,CADsC,EAAE,IACjC,IAAI,CAAC,IOnBa,APsBtB,CACT,CAEA,AEfS,AFaR,SAEQ,EAAQ,CAAU,EACzB,OAAO,KAAK,AOpBA,CPoBC,OAAO,CAAC,GAGvB,EAH4B,CAAC,CAAC,KAGrB,EOvB4B,APuBjB,CAAU,EAC5B,MAAwB,IOrBO,QPqBxB,OAAA,CACT,CAAC,AAED,EEdG,IACG,GFaG,EAAS,CAAU,IEbD,KFetB,EAAA,IAAA,CACA,EAAQ,GEXG,CFYZ,CADc,AACb,CADc,CACH,EEXP,EFYY,IADN,IACc,CAC1B,CAAC,AADA,OAAO,CAEX,CAAC,AOzBA,AADc,CAAC,EPwBA,MAIP,EAAY,CAAU,EAC7B,MADkB,AAEC,QAAQ,EAAzB,OAAO,GACU,CEZK,CFWV,QACZ,OAAO,GACA,WAAP,OAAO,GACP,AAAiB,SAAV,EAAqB,CAAA,aACX,IAAI,EAAA,MEXY,OFYhB,MAAM,EEXS,AFWT,OAAA,CAG3B,CAAC,EEdkC,CAAC,iCL7J1B,QAAqB,CACrB,QAAA,QACmC,eAEzC,CIKF,GJLM,CAAA,QAAA,CAAY,IAAI,KOMS,GPND,CAAC,EAAS,MAAM,EAAE,EAAE,AACzC,CWGgB,AVCX,AMEA,CHCA,EACd,IJRiB,CIiBQ,AFXD,CEWC,CJhBrB,IAAA,CAAK,OAAO,CAAG,AIOC,EACpB,oBAAoB,EACpB,CJJS,IAAI,CAAA,QAAS,CUCK,AVDJ,IIIJ,EACnB,EJFQ,CAAM,CSKF,KTJN,CAAC,OICU,CJDF,CAAA,AIEf,UJCO,CAAY,AIDR,CJCQ,CIAnB,KJCO,OAAA,CAAA,IIDU,EACjB,IKfW,ULeG,EACd,CKXoB,CAAM,CAClB,UAAY,ILUH,AKVO,CAChB,ALWW,EADpB,MAAM,EKVgB,MAGrB,CTNC,MIamB,CAAC,KKPT,CAAW,ANEV,ACYL,CMlBQ,ADIS,AFCX,CEDW,CAAA,CACvB,CLqBK,GKrBD,CAAA,SAAU,CAAA,MACV,CAAC,CNKC,IMLI,CAAA,CACZ,CAAC,ANKA,AGFA,ANRA,ASOD,IAAI,CLiCJ,AHpCG,SAAA,QQIM,IAAI,CAAC,SAAA,KAGV,CLmCG,CJxCD,OAAA,CSMJ,CLmCK,MKnCE,IAAI,CAAA,SAAU,CAAC,GLmCO,EAAE,EKnCF,CAG/B,AAHgC,GLmCO,AAElC,EAAA,GKlCG,CAAmB,CRLhB,AESE,CMHX,CLkCK,EKlCD,CAAC,CL+B6C,CAAC,EK/B1C,CAAC,CRLD,QQKU,CAAE,CACnB,IAAI,CAAC,ILkCU,CCvCD,IIKA,CAAG,GACjB,GAAI,CACF,GRNK,KQMG,ERNI,CAAC,IQME,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAG,IAAI,AAAG,CAAF,CAAC,EAAK,CAAA,AAC5D,GAAG,AAAI,CAAH,GAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAC9B,AADkC,AAAD,CAAC,EAC/B,AAAI,CAAH,GAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAElC,AAFmC,CAClC,CAAC,IACK,EAAK,CACZ,AADU,IACN,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAGxB,IAAI,CAAC,CRNG,AUDA,GRUK,KMHC,CAAC,OAAO,oEMjCrB,iDMFkB,4BTgCxB,SAAU,EACd,CQtB+B,APYD,COZE,APYF,KIK7B,ELsBG,CKpBC,CL4BD,MAvBC,EAAA,WACC,EAAyB,EAAM,AKpBS,AEDf,CAAC,AFCe,CAAC,KLoBJ,CAAC,QAEf,CAAC,KACzB,EACA,EAAM,SAAS,CAAC,AAJmD,CAIlD,AAJmD,CAIjD,AAJkD,GAMrE,EAAA,EAAA,OAAA,CS/CkC,AT+CG,CQ/CF,AHCA,CGDC,SRgDpB,EAAA,OAEtB,IAAM,EAAA,EAAqB,SAAS,CAAC,CAAC,CAAA,GAAkB,IAAI,EAAE,CAAC,EAC9C,EAAY,CCXD,CAAT,ODWmB,CAAC,EAAiB,CCXhB,ADWiB,CCXD,ADWE,CAAC,CCXD,GDWK,EAAE,CAAC,GAE7D,GAAW,SAIR,mBAAA,KACE,EEbE,iBAAA,QFcJ,CACN,OAIF,CahBC,EbiB4B,AAA3B,CAA4B,CAAC,MAC7B,EAAyB,CCbH,CAAA,MDae,CAAG,CAAC,CACzC,CACA,CCfuD,GDejD,CKpBC,CLoBgB,EAAM,SAAS,CAAC,EKpBU,GLqBjD,EAAA,CAAA,EAAW,AKrBsC,ELqBtC,8BAAA,AAA8B,EAAC,CCdL,EDiBvC,MAAO,KAAE,QAAK,WAAO,GACvB,CAAC,AAMK,SAAU,EACd,CKvBiC,AAAC,CAAA,CLyBlC,CClBC,GDkBK,EAAiC,CAAA,EAYvC,MAVqB,UAAjB,EClBE,KDkBK,GEbD,AFauB,EAAM,GAAD,GAAO,CEXrB,GFW2B,AACjD,CETC,CFSK,KAAA,CSnF6B,APwEpB,AFWH,EILA,AFvEyB,CEuExB,AFvEyB,AOPA,CAAC,CTmFF,GKzBjB,CJhDC,CAuDC,CAtDxB,CDwE8C,CAAA,AAAC,IQnFO,CRmFF,CAAC,EAAE,AAC7C,CKzBG,ADoBA,CAAC,AJKM,EAAkB,EKxB3B,AADe,GLyBiB,CAAC,CAAC,CKxBlC,IL0BH,CK1BG,EL0BsB,EAAQ,KAAD,AAAM,CAAC,EK3BkB,CAAC,CAAC,EL2Bd,CAAG,CAAC,EAAE,GAC9C,EK1BI,GAAA,CL0BQ,CAAG,EAAQ,KAAA,AAAK,CETK,AFSJ,GAKnC,CEXH,CAAC,QD1DL,OAAO,CAAgB,CAAE,CAAgB,CAAE,CGIf,CHJoC,CAC9D,EGG0B,EHHpB,EAAU,EGKI,EAAA,SHLO,CAAC,UAAA,CAAA,GAC5B,GAAA,CAAK,GAAA,CAAA,EAAW,EAAA,mBAAA,AAAmB,EAAA,GAAW,WAMxC,CDWG,CA7BJ,AASA,ACIC,AAAuB,EDJhB,CEVG,AUTF,ALFF,KPYC,OASa,CYnBC,CZmBC,CAAA,GAAA,CAAA,CAAA,CAAO,EQnBM,CRmBH,CQnBG,ARmBK,ECSR,ADTU,EAAE,CSlBG,GTmBjD,EAAQ,CAAA,EAAA,mBAAsB,GAAA,CAAA,EAAQ,kBAAkB,CAAC,EAAM,GAAD,EAAM,CAAC,CAAA,CAAE,CAAC,YAIrD,CEXK,CCQC,ADRA,EFWzB,EAAM,KAAwB,GAAhB,GAChB,GS7BsC,AT6B7B,EQ7B+B,CNkBtB,CFWsB,EAAM,CEV7B,EFU4B,KAAS,CAAC,CSpBM,OToBE,EAAA,CAAE,CAAC,AEV9B,AFa/B,ICJJ,CDWK,KCXC,CAAC,AAAC,GACA,CADY,CACR,CADU,CACV,IAAO,EUrBhB,EVqBoB,IAEvB,CMb8B,EMOf,EZMV,CAAA,GAAI,CMXC,GPNC,MAAM,CAAC,CAAC,EAAgB,IAAF,CACpC,CCTK,ACAA,ACNA,ACKA,ACLA,ACFA,CNgBgD,EAAE,AACjD,CIVK,AEPA,CNiBG,AAD2C,CAC3C,EAAG,COjBK,ACCA,CAAA,EAAA,KAAA,ARiBJ,GGhB+B,CAAC,ADMA,CIRC,CAAC,ANkBR,EAC5C,CAAA,EAAG,EAAO,CAAE,CAAC,EKjBkD,CAAC,ALiBtD,KAD+B,CAE5B,AEZyD,AFU5B,CEV6B,AFU5B,AGdzB,KHgBC,CEXK,ADCA,AQEY,IAAI,CRFhB,EAAA,SAyBR,MAAA,CAAS,CAAC,EAAE,EACnB,GAAG,CAAC,CDYK,AWnBA,CAAA,EAAA,aVWM,CIVZ,AJU4B,CAAA,CAAuB,CAAA,KACzD,EAAc,EAAO,GAAG,CAAC,EAAS,GAClC,CDYG,CCZa,EUJI,EXcyB,ECVvB,OAAA,CAAQ,GAAA,EACpB,IAAI,MAChB,iCAGoB,GAAQ,CCDC,CAAC,CFaC,CAAC,CAAC,ICZb,GAGV,EAAc,KAAK,CAAC,CIPC,CAAC,UJQvB,CAAA,IACX,CINK,GJMC,EAAU,AAFuC,CAAC,CAAC,AAEvB,GAClC,EADuC,CAAC,AACpC,CADqC,CAC5B,CACX,CIPe,GLmBG,ACZZ,EAA6B,AINf,CLmBM,MCbkB,EAAQ,KAAK,CAAE,CAAC,UACxC,EAAE,CACpB,EINQ,AJMK,CINJ,IHMmB,GDAP,CAAG,CAAZ,CAAoB,QAAA,AAAQ,CAAC,GDcS,ACZ5C,CDY6C,CAAC,ACZtC,GAAA,CAAA,CAAO,CING,CAAC,CAAC,EJSO,CAAC,EAAE,CAAtC,GIL0C,IJKnC,MILM,CAAA,CJKE,GAAS,MAAM,CCCD,CAAC,ADAzB,EAET,EAAA,WAAkB,CAAC,UAAU,CAAC,CDgBK,CChBI,EAAA,WAAW,CAAC,CCMC,CAAC,CAAC,UDNU,CAAC,OAAO,CAAC,CAAC,CAAC,SAIpE,CAAC,IAEX,AY7CK,MAAO,iBACoB,ENLf,WMMa,mBACM,CPFf,CLQD,WYEA,CFEL,CNNF,AMME,CAAA,CAAA,qBEDQ,CAAG,OAClB,YAAY,CZMD,AGUF,AShBM,EAAY,CTgBH,EShBM,EAAE,CAAC,IAClC,ATekC,CSflC,kBAAmB,CAAG,EAAe,GAAG,EAAE,AAChD,CADiD,AAChD,MADyC,UAQtB,CAAA,eAAgB,CAAC,GAAG,EAAE,CAAG,IAAI,CAAC,kBAAkB,CAAC,OAC5D,IAAI,CAAC,KZIG,OYJS,CAAG,GAE9B,EAFmC,CAAC,IZIE,gEW/CwB,wBAErD,KAAK,wCFHY,6ENiB0B,qBAQvC,CJEH,CGHK,ACCkC,CAAA,CAAA,CAAA,CAC9C,CJEC,CCNG,EGIA,CAAC,YAAY,CAAG,EAAA,WAAkB,EAAI,EAAE,CAAC,IAEzC,CAAC,OAAO,CHLC,ADOA,AIFE,MAAM,CDDK,GCCD,CACvB,IAAA,IACE,IAAA,CAAA,YAAiB,CAEd,GAAA,CAAA,AAAI,CAAC,CHRyC,AGQxC,CGpBC,AHoBuB,YAApB,IIpBM,GJoBC,EAAE,MAAA,CAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,AAAE,CAAD,CAAG,CAAC,CAAC,MACtD,CAAC,CAAA,EAAI,IAAM,EAAE,CJCG,IIHiD,CAE9C,CAAC,GAAI,CHRD,CGQG,CAAC,CACrC,CACF,CAAC,OAYG,CAAgB,CAAE,CAAgB,CAAE,CJCf,CAAA,CAAA,IIArB,IAAA,KAAA,IAAA,CAAA,YAAA,CAAuC,IAExC,EAAW,CFb6B,CAAC,CSA9B,CAAC,EPaK,CAAC,EShBS,ETgBS,CShBT,KTgBe,CAAC,CAAC,eAEnC,CACP,CAAA,sBAAA,EAAyB,EAAW,QAAD,GAAY,CAAC,IAAI,CAAA,OAAA,EAAU,EAAI,CAAD,MAAQ,CAAA,CAAE,CAC5E,CAAC,CAcR,CCnBC,OAAA,CDmBuB,CAAE,CAAgB,CAAE,CFZ5B,AEYiD,CAAA,CAC/D,CHbC,CILW,AJKV,KGaK,IAAI,CAAC,YAAA,CAAa,MAAA,CAAA,CAAQ,EAAK,CAAF,OAC9B,CACF,CHdM,AGYsC,EAAE,EAAE,EAEzC,EAAW,CHbN,CAAC,KGaY,CAAC,AAAT,EAAc,CAAF,CAAW,GACxC,EADsC,CAAQ,CAAC,CAAC,CAChD,EAAY,YACH,CACP,CAAA,uBAAA,EAA0B,EAAW,QAAD,GAAY,CAAC,IAAI,CAAA,OAAA,EAAU,EAAI,CAAD,MAAQ,CAAA,CAAE,CAC7E,CAAC,OAEG,CACT,CAAC,CAAE,EACL,CAAC,AAED,MFLO,EEKD,CAEJ,CJKC,CAAC,CAAC,IILI,IAAA,CAAA,OAAA,CAAa,GCrBC,EDqBI,ECrBA,ADqBE,CCrBD,ADqBE,CAE/B,qEIvFiB,CAAA,KAAA,EAAQ,EAAA,OAAA,CAAA,gBAC8B,aAAA,EAAgB,EAAoB,IPW9D,EAC5B,AOZ0F,CAAQ,CAAC,EAC7E,AAAI,OAAA,CADgE,AAChE,CPWM,GACjC,AOZ2B,EAAc,EAAS,CAAA,CPY5C,COZgD,CNQP,AOPQ,CDDe,ANQtB,CDKS,COba,AAApB,CAAwB,APaf,CAAgB,AObA,CPaC,AObA,IPaX,EAD7C,CAAC,EOZiD,iBAE/B,iDHe1B,CAAA,CAAA,QACa,CAAC,EQIH,IAAA,CRJU,EEDb,MFIL,CAAE,CAAa,CAAA,EQGJ,SRAD,CAAC,EMKE,INLI,EGDE,AHCA,wBACH,CAAC,GAAG,CAAC,GAAG,CAAC,AACpC,EADsC,AAC3B,ELqBH,EWhBA,MADsC,CAAC,CAAC,CAAC,CNJxB,CAAC,MAAA,CAAO,GAAG,CAAC,CAAC,QLqBY,CAAC,KKnB5B,CAAC,CJUC,EAAA,CAAA,EAAA,WINvB,CAAA,CAAA,KACE,CHOC,CGPY,IAAI,CAAC,EMOI,CAAC,CAAC,ENPA,EAAE,CAAC,SACtB,cAAc,CAAC,KLoBK,CAAA,CAAA,GKnBxB,MAGL,CJOD,AIPY,CAAA,QACN,IAAA,CAAK,cAAc,CAAA,GAAI,CAAC,EACjC,CAAC,ALkBA,mBKfQ,IAAI,CAAC,GJMC,EAAA,GILV,MAAM,CAAC,CAAC,EAAe,GAAG,CLmBP,CKnBS,AAC3B,EAAA,IAAA,CAAS,EA1CsB,CA0CnB,AI3CoB,EJCE,CAAC,AA0Ca,GHpCV,CGoCc,AHpCb,CGoCc,GAAG,CG5CZ,AH4Ca,CG5CZ,GH6C7C,GACC,EAAE,CAAC,CAAA,IACD,CA9CoB,CHMC,IG2CtB,OAAA,CAA4B,CAAA,YAlDV,EAmDG,CAAA,AAnDA,CDeC,ACfA,CEHH,CFsDuB,KAC5C,CAAA,cAAe,CAAG,EACnB,CHYG,IGZE,MACL,OAAA,UACO,CAAC,EAA0B,IAAY,AHatC,KGZD,EAAa,CJOC,CIPI,EAAD,EAAK,EAAE,CLyBC,AKzBA,CAAC,CACtB,EAAW,CLyBV,MKzBiB,CAAC,ILyBE,IKxBrB,OAAI,CACZ,IAAA,EAAY,EL0BA,AK1BW,CHiBG,CGpByC,GHoBzC,CAAA,EGjBM,CAAC,AALiD,CAKhD,CAC5B,EAAK,EAAc,CAAd,IAAmB,CAAC,CAAC,CAAG,CAAC,CAAE,EAAK,EAAD,IAAO,CAAC,AAClD,CGjDD,AHgDoD,EGhDpC,CHE8B,CDkB5B,EIpBE,CHiDH,IGxCtB,EAAuB,CNSO,CG+BA,EH/BA,CMTF,IAAA,CAAA,EAAA,GHwCe,CGvCN,CHuCO,AGvCN,IHwC9B,CADyC,AGvCN,CHuCO,AACtC,AGxCgC,CHwCjC,AHgBM,AMvDlB,CHsCqD,AGtCpD,CHuCe,CAAA,EAAA,AMlCmC,UNuCvC,CACT,CAAC,CADW,AACT,CADU,CHgBC,EGfP,GAAG,EAGR,IAAI,CAAC,aHgBa,CGhBC,CAAC,IAAI,UACtB,CAAC,WHgBa,GGhBC,CAAG,AAD8B,IAC1B,GAAG,CAC3B,CHc2D,CAAC,CAAC,EGdxD,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CACtC,OAAO,EAAE,CAAC,AACV,KAAK,CAAC,CAAC,EAAE,GAAA,EAGlB,CAAC,AAEO,KAAK,EAAA,CACX,GHWI,AACA,CADC,AACA,GGZE,KAAK,CAAC,EHaA,EGbI,CAAC,IAAI,CAAC,QAPgD,MAOlC,CAAC,IAAI,CHaD,GGbK,OAAO,EACvD,AADyD,CHcvC,AGbjB,AAEO,AAHkD,QAG5C,CACZ,IAAM,EAAa,IAAI,IAAP,KAChB,CADiC,CHgB7B,AGfO,CADwB,CAAC,YACX,CAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,uBH9EhD,EAAqB,sBAQhC,CAAA,qBAAqB,GAAA,EAAM,cAAa,GAAA,EAAM,cAAc,CAAA,GAAA,EAAM,UAAU,CAAA,YAAA,CAAc,CAC3F,CAAC,aAYI,SAAA,EAAA,CAA8C,CINnB,OJOjB,EAAmB,CSNC,AXmBA,GEbG,CAAC,GMTH,UNenC,OAAA,CAAA,CAAA,EAAA,EAAyB,CAAK,CAAC,CSDC,ATCA,CAAC,CALd,GSFT,ETSH,EWNgC,CAAC,MXO7B,CAAA,CDDmC,ACC7B,CDD8B,CCC5B,CDCiB,OCA1B,CGPE,CAAA,AHOI,CAAC,CAAC,CAChB,WAAY,KGPK,AJQA,ICDI,CAAK,CAAA,EAAA,CAAK,IAEnC,CAAC,AAQK,MAAO,EACX,CFaU,AACT,MAAA,CEdsB,CAAE,CAAgB,CAAE,CAAqB,CAAA,CAC9D,IAAM,EAAc,EDAD,CAAA,IAAA,CCAO,cAAc,CAAC,EDAF,CAAC,ACCxC,GEaK,CFd2C,AAE7C,CAF8C,CAAC,CAE/C,CAAA,EACD,EAAA,mBAAA,AAAmB,EAAA,IAAA,CAAA,CAAA,EAClB,EAAA,kBAAkB,AAAlB,EAAkB,GAAA,OAIrB,CDHC,GCGK,EAAc,GAAG,GAAW,CGTC,CHSW,CAA7B,CAAa,CAAA,CAAA,GAAuB,CAAA,CAAR,AAAQ,EACnD,EAAY,MACd,CAAA,EADa,AACb,EAAK,MAAM,CAAC,EAAY,SAAD,CAAW,EAAI,EAAA,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,QAElD,EAAqB,GACrC,EAAY,UAAU,EAAE,AAC1B,EAAO,GAAG,CACR,CGb+B,CHc/B,CFWuB,CKzB0B,EHerC,UAAU,CAAC,SAAS,EAAE,CACnC,CAAC,SAIkB,CAAE,CAAgB,CAAE,CAAqB,CFSpC,CER3B,EEII,EFJE,EAAoB,EAAO,GAAA,CAAA,EAAa,SACtB,OAAA,EACxB,CAFiE,CAAC,CAAC,CAE7D,EAAA,MAAoB,IGhBA,CAAC,CAAC,CHgBK,CAAC,GAC9B,CAAiB,CAAC,CAAC,CAAC,CACpB,EACJ,GAA2B,IAHwB,CAAC,GAGjB,EAA/B,OAAO,EAA0B,OAAO,EAC5C,IAAM,CAD6C,CAAC,AAChC,EAAiB,GACrC,GAAA,CADiB,AACZ,EAAa,EAD8B,CAAC,CAAC,CAAd,EACX,CGfX,CAAC,AHiBf,CGjBgB,CHiBJ,GAFoB,CAAC,IAEb,CAAT,CAAY,EAEvB,EAF2B,CAAC,CAEtB,EAAmB,EAAO,GAAG,CAAC,EAAS,GAC7C,EAD2C,CAC3C,CGjBoD,CHiB9B,CAGpB,IAAM,EAAQ,GAAH,EAAQ,CAAC,OAAO,CAAC,GACxB,EAAiB,IAAI,CAAC,GAAG,CAAC,CAC1B,CAFwC,CAG5C,AAH6C,EAGjC,AAFQ,UAEE,CAAG,CADL,CAAC,EACQ,EAAA,AACV,QAAQ,CAAC,CAAC,AADA,OACpB,EAAqB,KAAK,CAAC,CAAE,AAAD,GAGvC,EGdY,IHWqC,CAC9C,AAEI,CAFH,CAEG,KAAK,CAAC,cAAc,CAAC,EAAS,EACvC,CAAC,AAED,EAHqC,MAG/B,AAH4C,CAAC,CAAC,GGZxC,GHgBF,EAAqB,EAAmB,CAAC,IGfhC,CAAC,SHeS,CAAoB,uBCvGV,EACvC,uDAkBc,CHGH,CEVK,ACOa,CAAgB,CAAA,CAAA,mBACtB,CAAC,EAAkB,CDPG,CAAC,ECOA,CAAC,CAAC,QAGhB,CAAgB,SACzC,EAAQ,GMnB0D,QNmB/C,CAAC,EFHI,CEM3B,GMnB+B,APQA,MCWrB,EAAe,CAAgB,EAC7C,CCCW,AJEV,CAAC,AOvBE,KJoBG,EAAQ,CFJD,OEIS,CAAA,IAxBb,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA,gDQJsB,0BAEzB,CAAA,UAIE,KTQS,SSRK,CAAC,IAAI,CAAE,EAAa,GFAO,CAAC,GAAR,EEAS,CACpD,AADqD,CAAC,UAaxC,EAAA,CACK,CACnB,CAAe,GVSwB,GAAS,CAAC,CAAC,OUI3C,QAAA,IAAY,CAAC,CAAC,MATM,QAAA,SACzB,CAAQ,CXkB2D,CWjB7D,IAEU,WAAW,SAAS,IAC3B,CTEa,EGPR,CAAA,EMKY,wBAC1B,CAAC,CAAE,KAGwC,EAAE,IAAI,CAAA,AACjD,MAAM,CAAC,EAAE,cAIT,uBACe,IAEf,CAAC,CACF,AACH,CADI,AACH,SJhDe,EHOK,CJUN,AOjBuB,CFElB,AJMA,ADSO,AOjBa,CJEP,ACKZ,ADLY,QID/B,UAAA,AAAoC,OAApC,EACS,GAAG,AJQb,CDAkB,IKNN,CPqBG,COrBC,KAAA,CAAA,EAEjB,CAAC,SAMe,EJoBA,AInBd,CAAW,CACX,CAAA,EAEA,EFEI,ACFA,AEAA,CDAA,CAAC,SACI,MAGJ,IAAA,KAAmB,SACF,GAClB,AAFiC,CPsBT,KOpBxB,CAAA,EAD8B,OAI3B,CACT,CAAC,ONK6D,CAAC,wBK7B/D,IAAM,EAAA,CACJ,CNkBC,GMlBI,CNkBC,CAAA,YMlBW,CAAC,GAAG,CACrB,CCDC,ODCQ,EFiBoB,CAAA,WEjBR,CAAC,OAAO,OACtB,EAAA,YAAY,CAAC,KAAK,MACnB,EAAA,YAAY,CAAA,IAAA,CAClB,CCFC,IDEK,EAAA,YAAY,CAAC,IAAI,CACvB,CMAC,CTe2B,IGfrB,EHgBO,KAAA,OGhBK,CAAC,KAAK,CACzB,KAAM,EAAA,OHekC,KGftB,CAAC,IAAI,EAOnB,SAAU,EACd,CAAyB,EAEzB,ENmBI,CMnBS,CDAS,GDiB2B,CAAC,CEjB9C,AFiB+C,AEjBhC,EAEjB,OAGF,AAHS,CDER,GCCK,EAAmB,CAAW,CAAC,EAAM,GAAD,ANoBlB,ACXkB,QKTY,EAAE,CAAC,CAAC,OAElC,GKHK,GLGzB,AAA0B,CCH3B,APsBE,QMlBC,CAAC,ENmBI,EMnBA,CACP,CAAA,EKD4C,CAAC,CVQhC,eAAA,EKPS,EAAK,KNkBgB,CAAC,CAAC,YAAA,EMlBI,OAAO,IAAI,CAAC,GAAY,QAAD,CAAC,MAAA,CAAiB,CAC3F,CAAC,AACK,CCLG,CAAC,YDKQ,CAAC,IAAA,EAGf,wsDQlCN,OAAA,cAAA,CAAA,EAAA,aAAA,6BAGU,EAAA,OAAO,CAAG,SAAS,CAAC,wDCDrB,COEA,CPFA,CWCA,aXDgB,COEA,AFDA,AJGA,CCGC,AKLA,AIAA,CNDC,CHMC,AMFA,CLCC,CSGe,CTHb,ASGc,CDPb,CNDC,CHMC,mBULK,CFFC,CHCC,ALAP,AOAO,CAAA,CGCE,ECGE,EVHE,CAAC,ACFA,CAAC,GCAG,CAAC,CCQC,CAAC,CLLC,CAAC,KCDvC,EACnB,sCaC0B,CHKR,ATHA,AFFA,CAAA,YcGW,CPIH,CAIrB,AEIsB,CAAC,CFJvB,IAAiC,gBARpC,CAAa,CGJG,AGkCsB,CN7BT,CAAA,CAAA,CAAA,CAG7B,CGNK,ANFA,MAAA,IGQM,yBEGc,CJHJ,ACRA,CGYT,CAAA,CAAA,CAAA,CAEuB,CVhBQ,KUkBvC,CAAA,SAAA,CAAa,EACjB,CDZU,AEFL,AEKK,ARGZ,GKMM,CAAC,IAAI,CAAA,eACM,EACf,CCZK,GDYD,CAAC,CQVsB,MAAA,CAAA,ORkBxB,CAAA,CAAA,+CASK,CAAC,SAAA,CACP,CADkB,MACX,IAAI,CAAC,EI0BI,OJ1BK,CI0BG,AJ1BF,CODC,GPGnB,EAAS,CODH,GAAA,CPCQ,SAAA,CAAU,CJUC,CAAC,SWXK,EAAE,CAAC,IPCQ,CAC9C,IAAI,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CACZ,IAAI,CAAC,OAAO,CACb,CAAC,cAIE,CAAA,SAAU,CAAG,MACN,CAAA,SAAA,EAHF,ERDa,CDPN,kBA9BhB,CAAY,CAAA,CAAA,CAAA,CAEuB,CAAA,cAGjC,OAAA,EAAA,IAAI,CAAA,kBAAmB,CAAA,EAAO,EAAA,EAAA,CAAiB,CAAA,EAC/C,IAAI,EAAY,IAAI,CAAE,EAAM,EAAb,AAAW,AAAW,KAAF,EAAS,CAAC,CAC9C,CAAC,qBASK,MAAA,CAAA,EAAA,IAAI,CAAC,SAAA,EAAA,EAAa,IGDZ,YHQsB,CAAA,gBAClB,CACnB,CAAC,AiBTA,oBjBea,CACZ,CSMoB,ATNQ,CSMP,ATNO,CACO,CAAA,uBAE5B,IAAA,CAAK,SAAA,AAAS,EAAA,KAAA,EAAA,EAAA,SAAW,CAAC,EAAM,EAAA,IAE1C,EkBPE,2DjBrBa,aAAA,aACF,CFpBc,EgBSP,MdWE,CSHK,CTGH,CSHK,mBTIH,CSHO,APJM,EFU7B,CYyBC,GZ5BsB,AEPM,AUmC5B,CAAA,SAAA,yBZtBqB,CAAwB,CAAA,SAC1C,CAAA,EAAA,CACF,CADyB,CELlB,EFMP,CAAA,iBAAsB,CY4B2C,CZ5BzC,CY6BV,AZ7BW,CiBLG,EjBQ7B,EAAoB,EY4BE,CZ5BC,KUP/B,EVSE,EACA,EAFA,EY2B0C,CAAC,CZ1BnC,EUTE,YVUU,CACrB,CAAC,IUX4B,CVYL,CAAC,SUZe,ALAJ,CAAC,ELYA,CAAA,IUZW,CAAC,oCVwBhD,OAAA,EAAA,MAAA,CAAA,EAAA,CQCsB,CRDd,CQCa,CAAC,ARDd,EAAoB,IAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EUdiB,CAAC,CVcoB,CAAC,CAAA,EACnE,CAD+B,EAAoC,CAC/D,CAAC,MAD8D,OAAA,KAAA,EAC1C,CAC1B,CAAC,YAUc,CAChB,CAAuB,CSDI,8BTGE,EAAE,CAAC,EcSI,OAAA,CAAA,EdTY,EAAS,KAAF,EAAS,CAAC,CAAC,eAK/B,0BACV,CAAG,GYsBZ,CZtBgB,GAEnC,QC/D2B,WAAW,CENC,CFMC,AYFA,CZEC,CYFC,CAAC,AJFA,CAAC,CNFC,ODY5C,CFMkC,AENR,CFMS,KEJ7B,EAAiB,EAAQ,IOEM,CAAC,SPFO,EAAI,EAAA,KAAK,CAAC,CeEH,CAAC,efFmB,EAAE,CAAC,iBAChC,EAAA,EAAA,OAAW,CAAC,GQOf,CAAC,CAAC,WRP6B,EAAE,CAAC,IAC3C,CaQ6B,abRf,CKCD,CAAC,ALDI,EAAK,EAAD,eAAkB,EAAE,CAAC,EACjD,EAAQ,gBAAgB,EAAE,GeED,CAAC,AfFI,CeEH,CfFK,EAAI,EAAE,CAAC,sBeJrB,CAAE,EAAA,EAAA,IAAY,CL4BD,AK3BtD,IAAM,CHRK,CGQa,CRAQ,CQAS,CL6BZ,AK7Ba,CbY9B,AKZoB,AQAW,CAAC,KAE1B,ERFqC,CAAC,GPA5B,IeCR,OACe,CAAC,AfKpC,GAAA,qBeFkC,CAAC,AfEnC,KSA0C,CAAC,AMArB,CNEC,AKPA,CAAA,iBCKgC,EAAE,EACvC,GfKK,AU6BE,IE7CyR,CAAC,SGWhR,CAAC,AfCpC,EAIwC,CAAC,CAAC,UHJG,AKeO,AahBF,AfCpC,CHAgC,AkBDK,AbgBE,AFdtD,CeFqD,AfEpD,CeIiC,OAAO,EAAE,QbmBQ,AalB1B,EAAE,YfFF,EecT,OAAA,CAAA,AAAQ,GAAmB,CbiBC,CajBe,IRc9B,AGsBI,GKpCiC,EAAE,CAAC,CAAC,EAAZ,mDHhC3D,CEGkB,oPFFd,EACJ,GZGoB,EOEI,ACAA,gTIHpB,EAA6C,KAC5C,CAAC,CAAC,OACD,CAAC,EAAG,EAAE,KACP,CAAC,CAAC,EACP,CPGC,ACSA,ATLA,Ca2BG,GElCE,CAAC,CAAC,EAAG,CEDD,AdUE,AYTA,MACP,CAAC,GAAG,MACH,CAAC,KAAM,WAiFN,EAAA,CACqB,CC1BA,AD2B5B,CAAA,CAAA,CACgC,CAChC,CAA0B,OAEhB,EFCF,MAAA,CAAA,MEDkB,cAGC,EAAM,GAAD,CAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAEjB,CAAC,CAAE,EAAiB,GACjD,CLzBsC,GKwBkB,ATnChD,APJE,CgBuC+C,ChBvC/C,CgBuCiD,AhBvCjD,EgB2Cd,CC7BC,MD6BM,ILvBE,CKuBG,CAAC,GVZY,OUaD,KAAK,GAAG,CVXH,CAAC,EU2cX,EAAc,EAAF,EA9bT,GA8bqC,CA9b9B,GLrBD,CKqdvB,EAAK,EAAD,KAAQ,CADT,AAER,CAAC,CACD,CAAC,CAAC,CAAE,EAAM,EAAF,AAAI,AAAE,EAAE,AAAE,EAAI,AAAF,EAAO,CAAF,CAAI,AAAE,CAHL,CAAC,AAGM,AAAE,EAAE,AAAE,EAAE,AAAE,EAAE,AAAE,GAAG,EAAE,AAEhD,EAFkD,AAChD,EAAI,AACF,CADC,CAAG,CAAC,AACF,EADI,AACF,CAAC,AACD,EAAI,CAAD,CAAG,CAAC,AACT,CAAA,CADW,CACX,EAAK,EAAE,IAAA,EAAO,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAA,CAAE,CAAC,AACrD,EAAI,CAAD,CAAG,CAAC,AACT,CAAA,CADW,CACX,EAAK,EAAE,CAAA,EAAI,EAAE,EAAA,EAAK,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAA,CAAE,CAAC,AACzD,EACF,CADK,AACL,EADO,AACP,EAAK,EAAI,CAAE,CAAF,AAAG,AAEZ,CAAA,EAAA,EAAK,EAAI,EAAA,AAAG,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAA,CAAE,CAAC,AAI5D,EADE,AACA,EADI,CAAD,CAAG,CAAC,AACJ,EADM,AACJ,CAAC,AACC,EAAI,CAAD,CAAG,CAAC,AACX,CAAA,CADa,AACb,EAAI,CAAC,EAAE,AAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAChB,EAAI,CAAD,CAAG,CAAC,AACX,CAAA,CADa,AACb,EAAI,EAAE,CAAA,EAAI,CAAC,EAAK,AAAH,CAAI,CAAA,IAAA,CAAM,CAAC,AACpB,EACJ,CADO,AACP,EADS,AACT,EAAK,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,EAAG,CAAA,AAAE,CAAC,AACzB,GAAS,IAAF,aAAmB,CAC9B,CADgC,AAChC,CAAA,EAAI,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,CAAC,EAAE,AAAG,CAAC,CAAA,EAAA,CAAI,CAAC,AAE5B,CAAA,EAAA,EAAK,EAAE,CAAE,CAAC,AAGV,CAAA,EAAG,EAAI,CAAA,CAAA,CAAI,EAAE,CAAE,CAAC,IAAI,EAAE,CAAC,CLlfJ,SKsBnB,EAAM,GAAD,ATjCE,KSiCO,CAAC,GAAG,CAAC,CAAE,SAMnB,CAAC,GFWO,CEXH,AAJS,EAAA,IAClB,CAGiB,CAHf,ATjCE,CSkCR,OAAO,CAAC,GLjBY,OKiBD,GAAG,CAAC,CACvB,ETjCI,ADyBA,GUQC,CAAA,KAEN,ETrCiD,CSqC7C,CTrC+C,ASqC9C,CTrC+C,CSqCnC,EAAe,CAAC,CAAE,EAAiB,CLjBV,CAAC,IAFW,CKmBK,ALnBJ,CAAC,AKmBI,EAAE,AACrD,EAGX,GAHgB,CAAC,CLjBG,EKoBb,EACR,OAGM,EAAY,EAAe,CLhBd,CKgBqB,EAAiB,CAAnB,ALhBG,CAAC,CKmB7C,AAHoB,CLhB2B,GKgBoB,CAAC,CAAC,GAG5D,CAHiD,CAGjD,CACqB,CAC5B,CAAa,CLnBmB,CKoBA,CAChC,CAA0B,KFQwC,CAAC,CAAC,GE0ShD,EAAc,EAAF,KAA4B,GAEtD,CAAC,KAvOgB,EL/BN,AK5CO,EA2Ec,CAAF,CA3EL,AL4CP,EJnFO,ASuC/B,CTvCgC,CSuHxB,CA0Qa,AA/Q2C,EAGhE,EAoMO,AAlMM,AA0QoB,GA9QjC,AAEK,CAoMM,CAtMH,CAEA,CAFM,CAAT,GAAa,EAAE,CAAC,EACO,GACP,CAoOX,GArOyB,AAqOhB,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAG,AAAF,CAAC,CAAG,CArOhD,AAqOiD,EAC1C,EAAK,CAtOP,CAsOM,EAtOH,GAsOW,CAFT,AAEU,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,CAtOV,AAsOY,CLpQnB,AKoQoB,CAAE,CAFd,CAEgB,AAFf,EAEiB,AAGlC,EAAI,AAHgC,CAGjC,AAAE,CAAC,CACF,CADI,CACF,CAAC,AACA,EAAI,CAAD,AAAE,CAAC,CACT,CADW,AACX,EAAA,EAAK,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAC/B,EAAI,CAAD,AAAE,CAAC,CACL,CADO,EACJ,EAAE,CAAX,CAAC,CACG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAExC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAEpC,EAAE,AACD,EADG,CACA,EAAE,CAAX,CAAC,CACO,GAAG,EAAE,CAAX,CAAC,CACG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,EAAA,CAAI,CAAC,AAEhD,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAG9C,AAH+C,CAG/C,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAGxC,GAAG,EAAE,CAAX,CAAC,CACO,GAAG,EAAE,CAAX,CAAC,CACG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,EAAA,CAAI,CAAC,AAE9C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAG7C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,EAhEpC,OAAO,CADT,AACU,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CADd,CAAC,AACe,EAAE,AAGlC,EAHoC,AAGhC,CAAD,AAAE,CAAC,CACF,CADI,CACF,CACC,AADA,EACI,CAAD,AAAE,CAAC,CACT,CADW,AACX,EAAA,EAAK,CAAC,CAAA,MAAA,EAAS,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAC3B,EAAI,CAAD,AAAE,CAAC,CAET,CAAA,AAFW,EAEX,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AACjC,EAAE,AACL,CAAA,CADO,CACP,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAG7C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,CA0Dd,EA3QN,EAA7B,EA6QO,CAFsD,CAEjD,CA7QP,CA6QM,EA7QH,GA6QW,CAAC,AADV,CACW,CAAE,CAAC,EAAK,CAAF,CAAQ,CAAC,CAAH,AAAK,CA7QhB,AA6QiB,CAAE,CAAC,CAAE,AADrB,CAAC,CACsB,EAAE,CAC9C,CADgD,GAC1C,EAAE,AAAG,EAAI,CAAD,AAAE,CAAC,CAAC,AACZ,EAAE,AAAG,EAAE,CAAI,EAAI,CAAC,AAAF,CAAG,CAAC,AAClB,EAAE,AAAG,EAAE,CAAI,EAAI,CAAD,AAAE,CAAC,CAAC,AA6DxB,MA1Da,GAAG,GAAZ,CAAgB,GAAZ,CAAgB,EAAE,AACxB,EAAO,EAAA,AAAH,CAAK,CAAC,AAKZ,EAAE,AAAG,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAC,AAExC,EAAE,AAGF,EAHI,AACO,CAER,EAFW,GAAZ,GAAgB,AAAS,CAArB,EAAwB,CAAR,CAAU,GAE1B,UAAU,CAAC,AAGX,GAAG,CAAC,AAEH,GAlBE,CAkBE,CAlBA,CAqBT,AArBU,EAkBG,AAGX,EAAE,AACN,CAAC,CAJkB,CAIf,CAJiB,AAIhB,CAAC,AAER,CAAC,CAAG,CAAC,CAAC,AAEO,GAAG,EAAE,CAAd,GAGF,CAHM,CAGC,EAAH,EAAO,CAAC,AACR,EAAE,CACJ,CADM,AACL,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,AACX,CAAC,CAAG,CAAC,CAAC,CAGN,CAAC,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,AACX,CAAC,CAAG,CAAC,CAAC,CAEU,IAAI,EAAE,CAAf,IAAI,AAGb,EAAO,EAAH,CAAM,CAAC,AACP,EAAE,AACJ,CAAC,CADK,AACF,CAAC,CAAC,CAAG,CAAC,CAAC,AAEX,CAAC,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,CAIF,GAAG,EAAE,CAAd,IAAI,AACN,EAAE,AAAG,IAAA,CAAI,CAGX,AAHY,EAGN,CAAH,AAAG,EAAG,EAAO,CAAC,CAAJ,AAAI,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,EAAE,CAAE,CAAC,CAC1B,EAAE,AACX,EADa,AACP,CAAH,AAAG,EAAA,EAAK,CAAC,CAAA,IAAA,EAAO,EAAE,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAChC,EAAE,EAAE,AACb,EAAM,CAAH,AAAG,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,KAAM,AAAN,CAAO,CAG1C,CACT,CAAC,CAAC,AADU,CACT,AADU,CA5UC,IAAI,EAAE,CAAC,CA/EX,QAAQ,CAAC,GTvCC,ASuCE,CTvCD,ASuCE,EAAE,QAEH,CFQC,CERc,EAAO,EAAiB,CAAnB,CACzC,EAEC,GAHkE,CAAC,AAG7D,CAH8D,CAGjC,AA+GvC,GLpI6D,MKqBxC,AA+GZ,AAAY,CAAmB,CA/GU,IAgH5C,CAAC,EACH,EL5BW,IK4BJ,CAAA,CAAE,CAGX,AAJgB,AACJ,EADM,EAIZ,EAAiC,CL7B5B,CK6BwC,KAAK,CAAC,GACzD,AADkD,GAC9C,CAAC,KADgE,AAC3D,CAD4D,CAAC,AAC3D,QACN,CAAA,KAAM,CAAC,CAAA,eAAA,EAAkB,EAAW,CAAE,CAAC,CAAC,AACrC,MADiC,IAE7B,EACV,CAGH,AAHI,IAGA,EAAE,AAAW,EAAO,GAAD,GAAC,CAAQ,EAAE,CAAC,AAC7B,EAAkB,EAAO,GAAlB,CL3BK,EK2BoB,CAAC,KL3Bb,EK2BoB,CAAC,AACzC,EAAqB,EAAO,EL3Bf,IK2BH,AAAyB,CAAC,GL3Bf,OK2ByB,CAAC,AAC/C,EAAgB,EAAO,CAAlB,KAAyB,CAAC,KAAK,CAAC,AAErC,EAA4B,EAAQ,GL3Bf,EK2BoB,CAAC,GAAG,CAAC,CAAC,AAC/C,EAA2C,GAAY,KAAK,CAAC,CAAR,EAAW,CAAC,CAMvE,AANwE,MAE7D,OAAP,EAAE,EACJ,EAAK,AAAH,GAAG,CAAG,CAAC,AAGJ,CACL,EAAE,CAAE,EAAE,CAAI,GAAG,CAEb,OAAO,GACP,eAAe,GACf,oBAAA,EAAqC,MAAM,YAE3C,UAAU,WACV,EACA,uBAAwB,EAAqB,EAAmB,MAAM,CAAC,AAAE,CAAC,AAAF,MAA9B,CAAC,AAE3C,CAF4C,AAAmB,CAGhE,AACH,CADI,AACH,CArJkD,KAAK,CAAC,CAAC,SAClC,CAAA,GAEb,AAIX,SAAS,AACP,CAA4B,CAC5B,CAA0B,EAG1B,GAAI,CFSD,CAAA,OEToB,CVXD,AUYpB,CADuB,MAChB,EAIT,GAJc,AFaT,CETA,AAJU,EAIE,MFSQ,CETD,EAAI,EAAY,EAAY,OAAb,AAAoB,CAAC,CAAT,CAAW,MACrD,EAIT,IAAA,EAA+B,EAC7B,EAAc,WAAD,IAAgB,EAAI,EADmB,AACjB,CACnC,EAAY,SAAD,MAAgB,EAAI,EAAE,CAClC,CAAC,GAGuB,IAArB,EAAwB,CAC1B,IAAM,CL5BD,CK6BH,EAAc,MVGA,KUHD,OAAmB,EAAI,EAAE,CAAC,AACnC,EACJ,EL9BgC,CAAD,CAAC,gBK8BF,EAAI,EAAE,CAOpC,AAPqC,EACnC,AAAC,EAA0B,MAAM,CL9BD,CK8BM,AL9BL,CAAC,CK8B4B,IL9BpB,CAAC,CAAC,AK8BwB,CAEjE,CAFmE,AAGvE,EAA0B,KL/BU,CK+BJ,EACjC,EAAwB,MAAM,CAEX,CADnB,AACoB,CAAC,AAErB,EAA0B,MAAM,EAAA,CAAA,EACP,MAAM,CAEZ,CADnB,AACoB,CAAC,CAAC,AAEtB,EACE,EACA,GAdiB,CAAC,CAAC,AAiBxB,AAGD,OAAO,CAAc,CAAC,EAAY,EAAG,CAAC,EAAE,EANX,AADE,CAE1B,CAAC,AAK2B,CLhCgD,GKgCjC,CAAC,EACnD,CAAC,CApDqB,EAAe,GAClC,AACH,CAAC,AAyED,GF7D4C,GEqCuB,CAAC,CAAC,CAwB5D,EAAI,CAAD,AAAY,EACtB,MAAO,CAAC,EAAE,CAAyB,AAArB,EAAE,CAAsB,KAArB,WAAW,EAAE,EL5BO,CAAd,KK4BmB,CAC5C,CAuEA,AAxE8C,AAC7C,GL7BsC,MKoG9B,EAAY,CAAqB,EACxC,CL9BmB,KK8BN,MAAN,GAAM,AAAa,GAAG,EL7BM,CK6BtB,GL7BsB,MAAA,CK8BrC,CAAC,AAED,SAAS,EAAoB,CAAS,EACpC,IAAM,CAAC,CAAW,SAAS,CAAC,CAAE,EAAE,CAAC,CAAC,AAClC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAG,CAAC,CAAC,AAAE,CAAD,AAAE,AACzB,CAD0B,AACzB,AAmCD,SAAS,EAAwB,CAAY,CAAE,CAAY,EACzD,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CLxBL,AKwBQ,IAAI,CAAC,GAAG,CAAC,EAAE,AAAC,CLxBL,KKwBW,CAAE,EAAE,AAAC,MAAA,EAAS,CAAC,EAAE,ALxBN,CKwBQ,CACvD,IAAM,EAAc,AAlBxB,CAkBa,QAlBJ,AAAuB,CAAU,CAAA,CAAA,EACxC,GAAI,CL1BD,CK0Ba,EAAE,CAAC,AAiByB,CAjBrB,EAAY,EAAE,CAAC,AAAvB,AACb,EADsC,IAAN,CACzB,CAAC,CAAC,AAEX,GAAM,CAAC,EAAU,EAAS,CAAG,AArB/B,SAAS,AACP,CAAkB,CAClB,CAAkB,ELjCO,AKmCzB,GAAI,IAiB8C,GAjBvC,CAAC,EAAK,MLlCF,CKkCS,CAAC,CASvB,CATyB,KASlB,IL3CmB,OK2CP,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,AAR9B,GAAiB,QAAQ,EAAE,AAAvB,OAAO,CAAC,CACV,MAAO,CAAC,CAAW,GAAc,CAAC,AAC7B,GLjCU,UKiCN,OAAO,CAAC,CACjB,CLlCe,KKkCR,CAAC,CAAW,GAAc,CAAC,MAE5B,AAAI,KAAK,CAAC,iDAAiD,CAKvE,AALwE,CAKvE,CAOG,EAAoB,EAAE,CAAC,AACvB,EAAoB,EAAE,CAAC,CACxB,CAAC,MACF,AAAI,CAHiB,CAGjB,EACK,CAAC,CAHW,AAGV,AACJ,EAAe,CL1BH,CK2BV,EAHgB,CAKlB,CACT,AADU,CACT,AADU,CAKoC,CAAE,CAAC,CAAC,CAAC,EAAI,GAAG,CAAE,CAAE,CAAC,CAAC,CAAC,EAAI,GAAG,CAAC,CAAC,AACvE,GAAA,AAAY,CAAC,GAAb,EACE,OAAO,EAEV,AACD,OAAO,CAAC,AACV,CAuBA,AAxBW,AACV,IAuBK,EAAmB,cAAH,AAAiB,CAAC,AAClC,EAAoB,aAAa,CAAC,AAClC,CADiB,CACM,CAAA,aAAA,EAAgB,EAAnB,AAAmC,CAAA,CAAG,CAAC,AAG3D,EAAuB,CAAA,GAAA,EAAM,EAAiB,CAAA,AAHS,EAGL,EAAoB,CAAA,CAAG,CAAC,AAC1E,EADoB,AACP,CAAA,IADiC,CACjC,EAAH,AAAW,EAAoB,GAD6B,GAC7B,EAAS,EAAoB,IAAA,CAAM,CAAC,AAE7E,EAFyC,AAEvB,CAAA,EAAG,EAAgB,CAAA,CAAG,CAAC,AACzC,EAHsE,AAG9D,CAAA,EADO,AACV,KAAG,CAD6B,CACnB,EAAe,MAAA,EAAS,EAAe,GAAxB,CAAwB,CAAM,CAAC,AAEhE,EAAmB,CAAA,EAAG,EAFmC,AAElB,QAAA,CAAU,AAAjC,CAAkC,AAClD,EACJ,CAAA,EAF2C,MAC5B,CACf,EAAY,EACZ,QAAA,EAAU,EACV,EAF4B,CAAA,CAAA,IAE5B,EAAU,EACV,EAF0B,CAAA,CAE1B,AAF0B,CAAG,CAEvB,EADN,AACgB,EAAA,EAAK,EADK,AACA,CADA,CAAA,AACV,CADa,AACH,EAAA,CAAG,AAHE,AAG/B,CAGI,EALJ,AAKoB,AAAI,AAFxB,CAAA,IAAA,CAAM,AAEwB,CAFvB,AAEwB,AADlB,CAAA,CAAA,EAAI,AACA,EAAoB,CAAC,CAAC,AADlB,CAAA,IAAA,OAAO,IAAc,CAAC,CAKvC,EAAqB,AAAI,GALU,CAAA,CAAA,CAKJ,CAAC,AADpC,CAAA,MAAA,EACsB,AADb,EACsC,AADP,CACQ,CAAC,OAD7B,CAAA,CAAA,AAAoB,EAAI,EAAW,MAAA,CAAG,AAAnC,EAKnB,AALmD,CAAM,AAAnC,CAKP,AAAI,AALsC,AAAnC,KAAmC,CAKhC,AALuC,CAKtC,AALuC,AAIzD,CAAA,CAAA,AAJc,CAKV,AALqB,CAIrB,CACmB,CAAC,AALI,CAKH,IADT,EAAH,EAAiB,CAAC,CAKvC,EAAe,AAAI,GALgB,CAAA,CAAA,CAKV,CADjB,AACkB,CADlB,CAAA,CACI,CADA,CACmB,CAAC,CAAC,IADT,EAAH,EAAiB,CAAC,MAAJ,CAAA,CAAA,GFjXE,EPlCpB,GAAA,COkC0B,CZ3BrB,GAAA,CAAA,kBY+BnB,ELhCO,AKgCQ,AD7BR,CRMS,CSuBY,CJpBX,AAAC,CAAA,AIoB6B,CAAA,MAChD,EAAA,CACH,CAAA,CAAI,CAAC,CJrBgB,CAAC,AIqBQ,CHjCA,CAAA,AGiCD,AN5BD,OGLE,SAAA,CAAA,oBGkCM,CAAC,IAAA,CAAK,EAAA,wBAExB,CAAC,EAAK,EAAM,Gd9CP,CgBSa,CAAC,UFsCxB,qCAOX,IAAA,EAAA,CACL,CIpCgB,CJqChB,EAAA,YAGe,CAAC,CAAM,CAAC,EAAA,CAAO,sCACK,MAAM,CAAC,CZ5BC,EY4BO,kBAIpC,EG5BA,CH6BL,yBACA,QAAA,KAAiB,SAI1B,IAAM,EAAA,CAAiB,CAAC,EAAI,CHrBoC,CGqBpC,EAEJ,mBAAb,GAA8C,UAAU,EAA7B,OAAO,EAAwB,KAAjB,SAC3C,qDAIH,EAAU,EAAQ,EAAU,EHrB0B,AJlBA,CIkBS,CJlBP,AOuCxB,QAEvB,CPxCS,COwCA,IRnBc,SQmBA,KACvB,CKpCC,CAAA,WLoCoB,GAAG,CKpCC,ARcJ,CQdK,ALoCA,AHtBJ,AGuB/B,CHvBgC,AGuB1B,CAAC,CEZC,CFYI,CRnBa,CCpBX,ADoBY,CCpBX,AOuCE,CIpCC,EAAE,CAAC,CJqCR,EAAQ,AADG,ARnBY,EQoBT,AADD,EACD,KAGhB,EAAS,WAAW,EAAE,IAAI,CAAC,AAC3B,CAD4B,CHtB1B,EAAA,AKaE,ELbF,AGuBI,APrCN,EOuCjB,CAAC,CAAC,AAEK,EAAA,CACL,EACA,EACA,QAEK,CAAD,CAIO,AAAC,CPvCH,KOuCS,EG9BN,KH8Ba,CAAC,GENC,CFOzB,CH1BC,EG0BS,GADwB,CH1BL,KGsB1B,GACI,+CACI,AAAJ,EEbQ,MFaI,KAAK,CAAC,CAAC,AAC1B,EEduC,CLbf,IGgCpB,GAAA,CAAF,CAAC,CAJE,GAIc,OAAO,CAAC,KAAK,CAAC,GAAG,UAM9B,OAAA,CAAA,IACJ,EAAK,EAAQ,EAAA,OANf,EAAO,wDASX,CAAC,CAEM,AAFL,EAEoB,CACpB,EAAA,QAGI,CAAA,GAAA,CAAA,CAAkB,CAAA,EAAM,CAAA,+BAEnB,AAAI,Ed7CF,Mc6CU,KAAK,CAAC,CAAC,AGlCA,WHsCtB,EAAU,CGnCA,CAAA,EAAA,GHqCH,CERG,AVXJ,OQmBS,GAOX,QAAQ,EAAE,CAAC,AANnB,CEJ8B,CFK5B,QHvBgB,2BGwBd,CETC,MFSM,GACP,CH9BD,CAAC,yBGoCR,CAAC,CAAC,AAEW,EAAA,CACX,EACA,KAA0B,EACpB,CACD,CAAD,AADI,CAKG,AAAC,KAAK,AH7BN,CG6BO,OAAO,CAAC,CPpD2B,EAAE,CAAC,CAAC,EOoDxB,AACrB,CAAC,AADqB,EAAE,AACf,CAAC,IAAF,CALN,CACZ,EAAO,EHhCU,2CGiCjB,CH/BC,CAAA,AG+BU,QAAQ,CRrBC,IQqBI,CAAC,CAAC,OAM5B,AAAM,GAAS,CAAX,EAJG,GAIQ,OAAA,CAAA,MAAoB,CAAC,EAAE,IAKtB,MACR,OAAA,CAAA,AAAQ,IAAI,AAChB,CETiB,AFQA,AH7BU,CG8BpB,EAAQ,EAAT,EAAa,AAAN,CAAO,CAAC,6DAG3B,CAAC,CAAC,AAMY,SAAA,EAAkB,CAAuB,CEdnB,CAAC,ALpBiC,AGmChE,CEfgC,CLpB4B,CGmCjD,EAAQ,MAAM,EAAE,CHlCH,AGmCI,CEdC,WFcW,EEdE,CAAC,CAAC,GFcnC,EAAQ,ARzBG,MQyBG,GAChB,8CAEP,ERpBgB,AQoBP,EAAQ,MAAA,CAGvB,CAAC,AAED,EAAQ,IAAI,CAAG,EACf,EAAA,QAAgB,CAAG,CETD,CFUlB,EAAO,KAAA,CAAO,CAAG,EETF,AFUf,CEVgB,CFUR,EADe,CAAC,OACN,CAAG,UAAU,CAAC,iBRxJN,OACF,kCAGsB,COTzB,AMFA,sBbY4B,aAG7C,CAAA,CACA,CAA8B,CJTC,AISD,CACZ,CAAA,uDAGS,CAAG,IYrBI,YZuBpB,CAAC,MAAM,CAAC,CAAC,CKXW,ILaxB,CKXY,CAAA,CAAA,ILWL,CAAC,CCpBG,oBAAA,CDoBmB,CACtC,MJT6C,CAAC,CAAC,EIS/C,gBAGU,CYxBM,AZwBH,EAAA,KAAA,CAAM,SAAA,CAAU,EAAqB,eACtC,EAAA,CWZwD,CAAC,KXYzD,CAAQ,QAAA,CAAS,CanBC,CbmBoB,GWXC,CAAC,CAAC,GXYlD,EQgBE,KRhBK,CAAA,EAAA,IAD8D,CAAC,CAAC,GAC/C,CAAC,EAAqB,OAC/C,CAAC,SAD4C,KAAwB,CAAC,CAAC,QAC9C,UAK/B,CAAA,QACoB,CAAA,YAEmB,CAE7B,YAAA,CAAiC,KAG7B,CQkBX,MAAA,sCRViD,CAAA,EClBtB,GDmBxB,CAAA,MAAA,CAAU,EAAc,QAAQ,CAClC,AWVuB,EAAc,AXSZ,EACrB,CAAC,mBAAmB,CACxB,EWX+D,CAAC,CXW5D,CAAA,sBAAuB,CAC5B,CAAC,IAEE,CAAC,CQkBC,uBAAA,4BRbM,OAAA,mBAOW,CAA8B,CAAA,OY1BC,OZ2BvC,EAAe,CN5BK,QM4BI,CACrC,IAAI,CAAC,mBAAmB,CACxB,IAAI,CAAC,sBAAsB,CAC5B,CAAC,AAWG,CCxBN,AOyCA,qBRjB0B,CN5BP,IM6BZ,EAAA,IAAiB,CAAA,IAAA,IAAW,EAAE,CAAC,AWjBA,CAAC,CAAC,KXkBnC,IAAA,EAAA,OAAA,CAAA,GAIG,EAHE,CAAC,EN7BM,CMqCf,IALgB,AAJe,CAId,OKdsB,CAAC,EAAE,EGiCb,CAC7B,CAAC,ORfD,CAGH,CAAC,AAGM,CQgBH,URhBG,aACO,IQqBI,EAAE,CAAA,ARpBpB,CAAC,UAMgB,CAAkB,AQoBxB,CRpBwB,CKT1B,CG6BW,GRjBd,CAAC,OAAO,CAAA,UACD,EACT,CQqBG,CRtBU,CQqBK,AACf,CADgB,AAChB,CRnBP,CQkByB,ARlBxB,AAMM,kBAAkB,CAA8B,CAAA,CACrD,AUUiB,IVVjB,CAAK,OAAO,CAAG,EAAe,SAAS,CACrC,CKVsB,CLSK,AKTS,ELUhC,CAAC,mBAAmB,CACxB,IAAI,CAAC,sBAAsB,CAC5B,AACH,CAEA,AAFC,AADG,IAIU,QAAM,CQoBV,ORnBD,IAAA,CAAA,OAAA,4BA2BkE,CACzE,CAAmB,CACnB,CAAU,CACV,CAA+B,CAAA,UAO7B,EAAY,EAAM,EAAF,CACjB,AANiB,CAKM,CAAC,CAAC,GACjB,CAAC,CAAE,KACN,AUXyB,CVWxB,KAAK,CAAC,CKhCG,CAAC,GK6BQ,AL7BR,CLiCb,CAAA,kEAAmE,CACnE,aAAE,CAAW,CAAE,CACf,CAAC,CACF,CAAC,EAGP,GALoB,qBW3Lf,CNDC,ANOA,SYLkD,UACX,IAAI,GAAA,oBAkBa,WAChC,QAOtB,CAAY,CAAA,KACb,EAAW,IAAA,CAAK,KAAK,CAAC,IAErB,CH2BC,GG3BK,KAAA,EAAuB,UAAU,CAAC,KAAK,CAAC,KAAsB,CXWC,CAAC,CAAC,EWVtE,EAAW,CERG,CFQM,QAAQ,CAAC,CNMG,EAAA,CMNC,GAChC,ENME,EMLL,EPCQ,EAAA,EODO,aACG,GAAA,CAAI,EAAgB,QAAQ,CAAC,CAAC,AAI3C,KAAA,CAAM,IAAI,CAAC,CAAE,IAAI,GAAE,IVTQ,MUSE,CAAE,CCZK,GDYD,CAAC,QAAQ,EAAE,CAAE,CAAC,QAY1D,CAAkB,CDmBF,AE5BF,ADUd,wBAAE,CCVkB,CAAA,CAAA,QAAA,CDUc,CAAA,CAAkC,CAAA,CAAE,CAAA,WAEnD,CAAC,ENIF,GMJO,CACnB,AADoB,CNKrB,CAAA,EJdyB,AUUiB,CAAC,GAChC,CDkBG,CLdH,CAAC,GMFZ,CH+BC,GAAA,KG/BuB,EAAW,KAAK,CAAC,IH+BI,CAAC,AAAC,CAAA,IG9B5C,EAAW,EAAS,CXaG,CAAC,MWbI,CAAC,GAAA,CAAI,GACvC,GAAI,CAAC,EAAU,CNIuC,COhBtC,CAAC,CDaH,EADD,AAEX,MAEF,AAAK,GACH,EAAA,CVTS,EUQE,CACC,CADC,AACA,GAAA,EAAA,GVTQ,EUSS,CAAC,CAAC,AAElC,CNGC,CAAC,AMHS,CH+BN,AH5BF,CKsBgB,AErCA,EPauB,IMM5C,CH8BC,CAAC,CAAC,CGlCa,EH+BI,CAAC,AG9BnB,EAAA,AH8BqB,IG9BT,CAAC,CH+BG,CAAC,CAAA,EAAA,KAAA,EG5BI,CAAC,EAAE,CAAtB,EAAQ,MAAM,EACT,EAAE,CAAC,CjBXK,EiBaS,CHiCV,EACZ,EAAE,KGjCJ,GAAgB,CjBXG,AiBWF,CjBXE,CAAA,AWeuB,CAAC,GMJpB,CAAC,CAAC,ID6BI,EC1BrB,CVPG,GUOC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,CAAG,CAAD,AAAE,CAAC,UAAU,CAAA,EAAK,UAAU,CAAC,CAAC,AAE/C,EHmCI,AGnCI,CXiBC,AN5BR,EM4BQ,CAAA,CWjBI,MAAE,CAAI,ANI0C,CMJ1C,ANI2C,CAAC,EMJrC,GACnC,CAAC,CACF,iEVrEA,CAAC,KAAK,CAAA,GAEmB,YAAjB,OAAA,EAAA,CAAA,CAAA,EAAiB,QAYb,kBAC+B,IAAI,COuCvB,QPtCR,SAAA,oBAGR,CWGC,UAAA,4BXEJ,AACA,KACA,CAAE,UAAA,CAAA,GACF,CAAC,EAAS,CS0BgD,ALb/B,CJbjB,eAEF,ES0BE,ACjBA,CV4CiB,EArD4B,GOmGzB,CPnG6B,CAAC,CAAC,EAsD1D,EO8CC,CAAA,EP9CO,CADwC,AAEnD,EAAiB,EADD,AAtDe,CLiBC,AgBnBA,EXyDV,CAAC,EAAA,GA5DiD,AA4DzC,CSuCG,ATvCF,CAAC,CSuCG,GTvCC,CAAC,KACtC,CIiBC,EJ/DC,CUQD,GVRM,GAAM,IA6C4C,CAAC,MA7C3C,COsCC,APtCQ,CAAE,GARR,CAQY,GARZ,CAAA,CSwCiB,GThCI,WARrB,CAAqB,COwCrC,AEAkD,CAAC,CFAjD,AEAkD,GTxCT,CAAC,EAAsB,CAChE,wBAAwB,IAAI,YAIN,IAAZ,EIaoB,CAAC,GJTrB,EAAU,EAAS,EAAM,EAAF,CAAN,AAG7B,CUOD,CH+BG,EPzC0C,CAAC,CAAC,CAGvC,EIUF,WJEF,CAAkB,COyChB,Ad7CF,AOIoB,CAAA,CAAA,KACrB,EAAA,YAAW,ESoCF,CAAC,GhBxCS,OOIa,CAAE,CAAC,2BACrB,CAAA,MAAO,CAAA,yBASX,UAGI,IAAA,EAEZ,IAAI,CAAC,CSiCD,CAAC,CAAC,MTjCQ,CACpB,IAAI,CAAC,SAAA,EAAA,IAAiB,GAE3B,6CWzFC,CAAA,CACA,CAA+D,ClBLtD,CAAA,0BkBYA,EAAG,oBAGM,ECKE,CL+BN,GInCC,CAAC,mBAOlB,CAAC,EAPuC,gBAetC,CAAgB,CAChB,CAGyB,CACzB,CAA8B,MAE1B,CPcoB,SOXb,MAAA,UACF,EAAA,GACC,CAAC,AF0BE,kBExBL,EPeE,EGuBmB,AHvBnB,AOfc,eAGd,SAGD,EAEX,CAAC,AAKK,EAZkC,OAYxB,GDYF,CAAA,ACZyB,CDYd,CAAC,MCVN,CXZwC,WWYxD,OAAO,GAAS,AAC4B,CADjC,EFoCQ,SEpCH,OACR,EAAqB,CZ0BP,SY1BiB,EACG,AADE,CDYnB,WCZmB,OACpC,EAAA,QAAA,EAAkC,AACpB,CAAA,IADoB,EACpB,SAAA,AAE1B,CAAC,qCPtC8C,AAAC,COXnC,6BPaT,EAA4B,GG2B8B,CAAC,OH3BpB,EAAE,AAAC,QTAL,GSCpB,CAAA,AAEnB,aACE,CAA2B,CAC3B,CAA8B,CAC9B,CAAkB,CAAA,SAES,EAAwB,MAAM,CAAC,CAAC,GCNf,GDQzB,IAAI,EMLE,ANKA,AVTA,CUSC,AVTA,Ea+BE,eHpBC,CAAA,OACjB,GAAS,CAAC,CAGtB,IAAI,CAAC,QAAA,CAAY,GAAA,EAAA,CAEb,CMRD,GNQK,CAAC,OAAA,CAAQ,OAAO,EAAE,IACpB,CAAC,ELIgB,CWZb,AXYc,GAAA,SKAc,CAAC,COdZ,CXJN,EOuCV,AHrBiD,EJlBvC,AOuCS,GHjB9B,GAHI,CLGa,CYjBM,CAAC,APcV,CLGa,AKHA,CLGC,AKHA,EGsBR,AHtBa,CQhBE,ERgBC,AAClC,EKUM,EAAA,CLVD,OAAO,CAAC,CGsBK,CAAA,GHpBpB,CAAK,EAAA,KAAS,CAAC,GGsBC,IHtBM,CAAC,EGsBA,CHrBrB,CTFY,AIMG,MKJR,EAAK,EAAe,EADU,AACJ,EGqBI,AHrBN,AAC1B,CGoBiC,CAAC,GAG7B,AHxB8B,CAAC,CAAC,CAE1B,EGuBO,CPrCN,AOqCM,MAAA,MHvBW,CAAC,CAAA,EAAI,GAAgB,EAAM,EJbtC,AIaoC,EJblC,EAAE,CIayC,CAAhB,AAAiB,CAAhB,AAAiB,QAC/D,cAAc,CAAC,EOfI,APeW,COfV,CAAC,APee,CACzC,CADuC,AOdlC,KAAA,IPiBA,CLMY,CKJvB,CAAC,AAAC,SAE0C,CAAA,EAAgB,IAAI,AAC9D,AAAK,EAD2D,AAC3D,EAD6D,AAC9D,GAAC,CAAU,CJbD,ADuBI,CWdL,KNIS,CAAC,EJbA,AUSF,CAAC,AHmCb,OH5BO,cAAc,CAAA,EAAgB,EAAM,CAChD,CAD8C,KACvC,CAAa,CAAC,CJVP,CIUY,AJVX,EIUU,GAHb,EAAe,EAM/B,CAEiB,CARkB,CAAC,AXTlC,CWSmC,GKoBO,IhB7B1C,CWkBF,EMJS,ACZmB,EAAA,GJsCkC,CAAC,CAAC,oBHlBvC,IAIF,CGoBK,CAAC,CAAC,AHpBa,CAAC,CAGtC,CXzB+B,EWyBtB,CG4BC,EEPmC,AFOjC,GHhC6B,AGgC7B,OAAA,CH5BW,KJbK,AIaA,IAAI,KAKX,IACzB,EAAM,OAAO,CAAC,GAAI,ALUA,KKTZ,CAAC,EG8BM,CAAC,EH9BF,CAAC,CXnBG,CgBwCG,EAAA,ILnBrB,SARM,CAAC,EMNE,GNMG,CAAC,+DAPP,CAAC,EMNI,GNMC,CAAC,6CAgBb,AAEiB,aAAiC,CAClD,CKkBY,CLjBZ,KAAK,AAEA,EADL,AG2BO,CHvBA,CAJL,KAIgB,IKiBA,GLjBO,CAAC,GAHD,EAIvB,CLUY,CQqBR,AH/BiB,CAAC,EAAmB,CAAC,CAGtC,CG8BC,EH9BQ,AG4BmC,CAAC,CAAC,AH5BzC,GAAS,CAAC,AAJ0B,KACL,EAGd,CAAC,CKauB,GLRpD,CALkC,CAKf,AALgB,CAAC,EAAE,IAKZ,CAAA,AAAC,CKgBG,GLf5B,CLSY,CKTN,OAAA,CAAA,AAAQ,IAAI,CAAC,GACb,CAAC,OAAO,CAAC,EAAe,EAC9B,CAAC,CADiC,AAChC,CADiC,AAChC,AG6BE,CH9B+B,CANpC,EAAA,IAAI,CAAC,EKgBI,AT1BO,CS0BN,ELhBA,CAAC,uDAAuD,CAAC,CAAC,AAPpE,EAAA,IAAI,CAAC,KAAK,CAAC,KLQmB,EUQZ,sCLApB,CAEM,yBAAA,CAEN,IAAM,EAAc,SAAH,CAAa,CAAC,OAAO,CAAC,AAClC,GAAa,OAAO,CAAT,CAAc,EAAD,CAAc,KAAK,EAAE,CAAT,GAErC,CAAC,CGkCK,OHlCG,CAAC,CKoBC,MAAA,CLpBO,IACpB,GGkCO,AHlCD,MAAE,CAAI,CAAE,CAAG,EACjB,GAAI,CACF,EGkCI,EHlCE,EAAiB,EAAY,OAAO,CAAC,GACvC,CGiC6C,AHlCF,CAC/B,AADgC,AGkCE,CAAC,AHlCF,IAC5B,CAAC,EAAe,CAAtB,CAAwB,MAAM,EAAE,AAE7C,EAFkC,EAE9B,CAAC,GGiCO,EHjCF,CAAC,IAAA,CACT,CAAA,OAAA,EAAU,EAAI,EAAA,sBAAA,EAA2B,IAAI,CAAC,mBAAmB,CAAA,6DAAA,EAAgE,EAAI,CAAE,CAAF,AACtI,CAAC,AAEJ,KAAM,IAIZ,CAAC,AKwBA,EFSI,qBH/B0B,CAAe,CAAA,IACxC,CACF,IAAM,EAAI,CAAA,CAAA,CAAG,EKuBG,CLvBH,YAAY,AAAZ,EAAa,EAAK,EAAD,CAAC,CAAI,CAAC,EAAS,KAAF,WAAmB,CAC5D,QK4Bc,AL5BN,CAAE,SAEN,CLgCC,CKhCS,IAAI,CAAC,AAAR,IK6Bc,CL7BD,CAAC,GAAM,MK8BtB,CAAA,OL7BU,UAAd,OAAO,EAAuB,KAAhB,EAA0B,EAC/C,CK+BD,IL/BO,CACN,CAFwD,CAExD,AAFyD,IAErD,AK4B2D,CL5B3D,CLiCO,GKjCF,CAAC,qBK+BgB,OL/Ba,GAI3C,CAAC,AAEO,CLmCP,EKzCiD,CAAC,CAAC,MAOlD,CAAuC,CACvC,CAAU,CACV,CAAY,CACZ,CAAuB,CAAA,CAEvB,CKwB2B,ELxB3B,CAAK,OAAO,CACV,AAA4B,CADhB,WACR,AAAoC,GKwBhB,ILxBb,EAAO,GK0BF,CL1BC,CAAM,GACrB,EAAO,IAAD,SAAc,CAAG,EACnB,IAAI,CADsB,AACrB,CADsB,OACd,EAAE,CACjB,IAAI,CAAC,GKyBO,ELzBF,CAAA,KAAM,CACd,iBKwBoC,uDLvBpC,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,GAGhB,EAAO,IAAD,CAAM,CAAC,IAGjB,GAHwB,CAAC,CAAC,CK8Bd,ALxBf,EAAU,IAAI,CAAC,CK6BC,qBL7BqB,CAAC,GAE5C,GADA,EAAO,IAAD,SAAc,CAAG,EACnB,EAAO,CK+BF,CAAC,CLhCoB,CAAC,AACrB,AAAK,GAAK,IAAI,EAAE,GAExB,AACE,GAAY,EAAO,GK+BH,cL/BoB,CAAE,EAAS,EAAO,GAAT,CAAQ,aAAkB,CAAC,EACxE,AAC4B,UAAU,EAAlC,AAAoC,OAA7B,EAAO,IAAD,CAAM,GACrB,EAAO,EK8BK,CAAM,UL9BE,CK8BS,AL9BN,EACvB,IAAQ,CADsB,AACrB,CADsB,AK+Bb,CAAC,CAAC,KL9BH,EAAE,CACjB,CK8BW,GL9BP,CAAC,EK8BY,GL9BP,CAAC,KAAA,CAAA,4DAET,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,OAAO,CAAE,EAAO,IAAD,SAAc,SAC7B,IAGG,EAAO,CAHH,IAGQ,CAAC,EAAA,EAAgB,aAAa,CAAC,CAAC,CAIlD,EAGT,IAAM,CAHU,CAGF,AAHG,EAGI,CAAV,GAAS,CAAM,EAAI,EAAE,CAAC,AAC3B,EAAiB,CK8BZ,CL9BY,SAAc,CAAC,GAMtC,CAN0C,CAAC,CAAC,IACN,AAK/B,CKyB4C,CL9BP,GAAD,GAAO,CAChD,AADgD,CAC/C,AKgCgB,CLhCf,CACA,CAAC,CAAC,IAAI,GAAK,GACX,GK4BK,EL5BS,MADW,WACM,CAAE,EAAS,EAAO,GAAT,CAAQ,aAAkB,CAAC,CACtE,CAAC,AK6BiB,ML5BwB,CAAI,CAAC,EAAgB,IAAI,AAElE,CADA,CADoE,CAC/D,CADiE,CAClE,GADwD,MK6BxC,EL5BF,CAAG,EACjB,IAAI,CAAC,CK2B8C,OL3BtC,EAAE,CACjB,IAAI,CAAA,KAAM,CAAC,KAAK,CACd,uEAAuE,CACvE,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,GK4BO,IL5BA,CAAE,EAAO,IAAD,SAAc,CAC7B,OK4BW,CL5BH,CAAE,EAAK,EAAD,EAAK,CACnB,IK2B4B,GL3BrB,KAKJ,EAAK,EAAD,GAAM,CAAC,EAAgB,EAAO,IAAD,MAAR,GAAsB,CAAM,CAAC,CAExD,EACN,GAGE,IAHK,CAAC,CAAC,AK6BI,EL1BL,CAJY,AAKvB,CALwB,GAKpB,IAAI,CAAC,QAAQ,EAMjB,AANmB,gBAGN,CAAG,GAGhB,CAHoB,CAAC,EAGb,CAAC,EK4BA,IL5BM,CAAC,CK4BD,KL5BO,CAAG,CAAC,CAAE,CAC1B,IAAK,IAAM,KAAU,CAAJ,GAAQ,CAAC,QAAQ,CAAE,AAWlC,GK4BS,CL5BJ,IAAM,IAAI,CAVa,UAAU,EAAlC,OAAO,EAAO,IAAD,CAAM,EAAmB,EAAO,IAAD,SAAc,EAAE,CAC9D,IAAI,CAAA,KAAM,CAAC,KAAK,CACd,6EAA6E,CAC7E,CACE,CK2BkB,MAAA,EL3BH,IAAI,CACnB,IK2BqB,IL3BZ,EAAO,aAAa,GAGjC,EAAO,GK2BM,CL3BP,CAAM,CAAC,EK2BoB,AL3Bb,aAAa,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,CAExC,EAAO,IAAD,CAAM,CAAE,CAC3B,EAAK,EAAD,WAAc,EAAE,CACtB,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,kFAAkF,CAClF,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,OAAO,CAAE,EAAO,IAAD,SAAc,CAC7B,QAAQ,CAAE,EAAK,EAAD,EAAK,GAGvB,EAAI,CK2BO,CL3BP,GAAM,CAAC,EAAK,EAAD,EK2Ba,SL3BC,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,CAI3D,CK6BG,ML7BI,AAIT,IAAK,IAAM,CK6BK,IL9BhB,IAAI,CAAC,uBAAuB,EAAE,CAAC,AACV,IAAI,CAAC,QAAQ,EAAE,CAClC,IAAM,EK6BM,AL7BW,CAAC,EAAA,EAAA,KACtB,GAAI,CAAC,GAAW,EAAK,EAAT,AAAQ,CAAC,OAAU,CAAC,GAAO,CAIrC,AAJkC,CAAC,GAI7B,EAAa,EAAK,EAAD,CAAC,EAAK,CAAb,AAAc,GAC9B,CADkC,CAAC,AAC5B,CAD6B,CAChC,AAAc,CK+BE,GL/BE,CAAC,AACvB,EAAU,EAAW,GAAG,CAE1B,AAF2B,OAE3B,IAAW,CAAC,UAAU,CAAiB,EAAQ,EAAS,EAAX,AAAiB,EAAF,AAC9D,CADwD,AACvD,CAAC,AACI,EAAyB,CAFwC,AAEvC,CAFwC,CAAC,AAEhC,EAAM,EAAF,CKiCf,ALjCS,CAC9B,CKiCuB,ELlCsB,CACzC,CAD2C,AAC1C,EAD4C,QAClC,CAAiB,EAAQ,EAAS,EAAX,AAAiB,EAAF,CAAN,AAMlD,EAAO,EAN0D,AAM7D,AAAQ,CANsD,CAAC,AAMxD,CAAC,OAAU,CAAC,EAAO,IAAD,AAAK,CAAC,CACrC,IAAI,EAAA,IAAW,CAAC,CAAC,EAAO,IAAD,AAAK,CAAC,CAAE,CAAE,SAAS,EAAE,CAAI,CAAE,CAAE,CAAJ,EAChD,IAAI,CAAA,CADyD,CAAC,0BAC7B,CAAC,QAAQ,CAAC,EAAO,IAAD,AAAK,CAAE,GAE5D,IAAI,CAAC,CAFgE,CAAC,CAAC,GAE5D,CAAC,IAAI,CAAC,GACjB,CADqB,CAAC,CAAC,CACjB,EAAU,IAAI,CAAP,CAAO,IAAU,CAC5B,CAAC,EAAO,IAAD,AAAK,CAAC,CACb,CAAE,SAAS,CAAE,EAAI,CAAE,CAAF,AACT,GAEV,GAFgB,CACf,AACG,CADF,AACG,MAAM,CAAC,IAAI,CAAC,EK0BQ,ELxB7B,CAAC,SAEa,CACZ,GAAK,CAAD,GAAK,CAAC,CKyBG,OLzBK,CAKlB,CALoB,CKyBG,ELpBvB,IAAW,EK0BM,GL5BjB,IAAI,CAAC,QAAQ,EAAG,EAEK,GAFA,AK4BO,CL5BN,AAEG,CAAA,QAAS,CAAE,CAWlC,GKwBK,CLxBA,IAAM,IAAI,CAVe,UAAU,EAAxC,OAAW,EAAO,IAAD,GAAQ,EAAmB,EAAO,IAAD,SAAc,EAAE,CAChE,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,8EAA8E,CAC9E,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,OAAO,CAAE,EAAO,IAAD,SAAc,GAGjC,EAAO,OAAO,CAAC,EAAO,aAAa,CAAA,EAAS,aAAa,CAAC,CAAC,CAE1C,EAAO,IAAD,CAAM,CAAE,CAC3B,EKwBI,ALxBC,CKwBA,CLxBD,WAAc,EAAE,CACtB,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,mFAAmF,CACnF,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,OAAO,CAAE,EAAO,IAAD,SAAc,CAC7B,QAAQ,CAAE,EAAK,EAAD,EAAK,GAGvB,EAAK,EAAD,KAAQ,CAAC,EAAK,EAAD,WAAc,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,AAI/D,CAAC,AAEM,SAAS,EAAA,CACd,OAAO,IAAI,CAAC,QAAQ,AACtB,CADuB,AACtB,CACF,AAED,SAAS,GACP,CAA2B,CAC3B,CAAgB,CAChB,CAA2B,GAHT,MAKlB,AAAI,KAAmB,IAAZ,EAEF,EAAkB,GAFT,AAAgB,EAAE,GAED,CAAC,GAAG,CAAC,CAAC,AAGlC,CAHmB,CAGD,IAAI,CAAA,AAAC,GACrB,OADe,EACN,CK5SJ,AACd,CAAA,CACA,AFYc,CJvBD,AMWA,ALySiC,CKxS9C,ALwS+C,CKxSrB,CLwSuB,EMzTP,GCoBtC,MFAJ,GAAA,EAsC0B,QEpCE,AFoCM,SAApB,AEtCV,EFAkB,IAsCgB,CADE,ACvDjB,CAAC,ADwD6B,CAtCxB,CAAC,EAAE,AAsCyB,CAAC,EAAO,CAAC,CAAC,GAAf,WArC7C,KAAK,CAAC,CFU2C,AEV3C,CFU4C,CAAC,eEV7C,EAAoB,EAAA,CAAS,QAKtC,CAAC,OAAO,QAKE,OAAO,CAAA,iBAAmB,IAAI,MAGtC,EAA2C,AA8JnD,SAAuB,AAAd,CAAmC,EAC1C,IAAM,EAAiC,EAAc,KAAK,CAAC,GAC3D,EADoD,CAChD,CAAC,EAAO,KAD6D,CAAC,CAAC,WAErE,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoB,EAAa,CAAE,CAAC,CAAC,AAIlD,IAAM,EAAkB,EAJsB,AAIf,EL9BT,CK8BQ,GAAQ,CAAC,EL9BV,CAAC,IK8BgB,CAAC,AACzC,EAAqB,EAAO,GAAD,GAAQ,CAAC,OL9BL,GAAA,CK+B/B,EAAgB,EL5BL,GK4BW,AL5BX,GK4BmB,CAAC,KAAK,CAAC,AAErC,EAA4B,EAAQ,KAAK,AAAN,CAAO,EL5BV,GK6BhC,EAA2C,GAAY,IL5BtB,CAAC,AK4B0B,CAAC,GAAG,CAAC,CAAC,AAExE,MAAO,CACL,EAAE,MAAE,UAEJ,OAAO,WACP,EACA,oBAAqB,EAAgB,MAAM,CAE3C,UAAU,sBACV,EACA,uBAAwB,EAAqB,EAAmB,MAAM,CAAC,AAAE,CAAD,AAAE,MAAhC,CAAC,AAE3C,CAF4C,AAAmB,CAInE,AADG,CACF,AADG,CAxL+C,CAuL1C,KAtLH,CAAC,CCpBC,cDoBc,AAId,EAAA,EAAqC,CAAC,AAGtC,EAAuB,EClBX,AH+BE,AG/BF,EDoBhB,EACA,EACA,ICtBuD,CAAC,CAAC,CDsBlD,CACR,CAAC,IAIiB,CAAC,CLpBH,EKoBY,EFMI,CAAC,gBENc,AAqHhD,CL5BmB,CKxFO,EAqH1B,EArHyC,EAuHzC,CAAA,EAAkB,EAHU,MACI,EAEJ,EAAE,AACrB,EAAgB,IL7BV,AK6Bc,CAAA,AACzB,CAAC,CAAC,CAAG,CAAC,CAAC,UAAU,EAAI,CAAC,CAAC,CL9B2B,CAAC,KK8BrB,GAAK,EAAc,OAAO,CACzD,CAAC,CAxHG,CAuH6C,CAtHtD,CAAC,CLmQoB,COvSlB,CPuS2B,EAAkB,GAApB,WAAkB,KAAI,CAAiB,CAAE,CAAC,CAAC,AAEvE,CAAC,YAFkE,EE5V9B,yDAWuB,CACxD,CNHS,CAAA,WMKC,CAAA,GAAA,EAAc,CAAC,ATJE,USKf,GPSqB,qBORX,CAAG,YACf,CAAG,cACD,CAAG,gBJpBG,CK+BZ,ER1BE,qBGHG,qBAIX,CEFa,CAAA,CFGc,eAMlB,CAAA,CAAA,EAAA,EAAA,SAAA,EAAa,CGMf,EHLP,IAAA,CAAK,iBAAiB,CAAG,CLDG,AaQ4B,CRNxD,IAAA,CAAK,CALyD,IAKpD,CAAG,KHYuB,AGZlB,ALDE,aJ4ClB,SAAA,GACJ,CAAoC,CACpC,CAAuB,CWmBnB,CXjBJ,CM4BC,GN5BG,CiBWD,CAAA,EjBXqC,GAAG,CAO3C,AAP4C,IAOvC,IAAM,KAAS,AAJJ,GACZ,MAAM,GAAG,CAAC,AgBwCA,ChBvCX,IAAA,AAAI,CAAC,CAAC,CAAG,EAAE,IAAI,IACf,OAAO,AAAC,CAAC,EAAG,AAAM,CAAL,QACe,EAAE,CAAE,Cc6CD,CAAC,Gd5CvB,EOG4B,SPHjB,EAAE,GAAA,EAAiB,MAAM,CAAE,CAE9C,EAAmB,EAAiB,SAAS,CAAC,AAC9C,IADmC,OckD/B,CdhDC,CcgDD,AdhDW,WAAW,EAAE,GAAK,MACd,EAAiB,AcgDF,CErH8M,AhBoEtM,CgBpEuM,AA6GxN,ChBzCmB,GACR,AAAM,CAAC,AWmBF,CAAC,AXf9C,CWe+C,AAG9C,MXlBM,CACT,CAAC,AApFC,EeKI,AZEA,ADGA,CFLL,IAPW,EAAA,CAAA,CAAA,EEYN,CAAA,AFyEmB,CAAC,CEzEpB,MAAA,CAAA,EAAA,CAAA,SMAH,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,MFUG,CAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,gWeLU,EAAc,CAA6B,EAEzD,EMCI,CDF6C,CLC7C,AKD8C,CFA1B,CHCjB,AGDkB,CHClB,AKDmB,ELEpB,AAHsB,EAGhB,CAAH,CGEG,AHFO,CDGG,GCHJ,EAAO,CAAC,AAC1B,EGC8B,ACCA,CDDC,CHD1B,IAAI,CGEG,CHFD,AAAG,CAAC,AIGE,CJHA,EAAK,EAAA,IAAW,CAC/B,IAAM,EAAM,CAAH,AAAS,CDGA,ACHC,CDEwB,CAAC,ACFvB,AAAC,AAClB,CADmB,EAChB,EACL,AADO,CACJ,CAAC,MAAM,CAAC,CDGO,ECHF,AAAF,MIGc,KJHD,EAAE,CAAC,CDGO,CAAC,KCHD,CAAC,OAAO,CAAE,GAAG,CAAC,AIGM,CAAA,CJHF,CAAA,CAAG,CAAC,AAI/D,OAAO,GAAQ,CAAC,OIEI,mDAPa,QLAQ,CAAC,eKAe,CAAC,EACtC,CJHD,aIIY,MLAM,CAAC,eKAe,CAAC,EACpC,SAAS,CAAC,EACO,CLDJ,0BKE3B,EAAc,SAAS,CAAC,CLAC,CKCN,ILAI,aKCJ,GLAG,cKCO,YLAY,CAAC,WKAW,CAAC,EAC1B,mBLAmB,CAAC,GKAG,CAAC,AACpD,EAA6B,sBLAsB,CAA1B,AAA2B,CKA1B,AAA2B,CAAC,EACjB,ULAU,CAAC,MOAM,kBFC7B,qBAC/B,EAAqC,cLAc,CAAC,WKAW,CAAC,AAC1D,EACJ,ELDqD,CAAC,mBAA1B,oBKCc,CAAC,EACL,aLDa,CAAC,eKCe,CAAC,AAChE,EAAkC,GLDG,CAAC,YAApB,aKC6C,CAAC,EACvC,QLDQ,CAAC,WKCW,CAAC,EAChB,YED8B,CPAjB,CAAC,WKCW,CAAC,EAC5B,qBLDqB,CAAC,CKCC,CAAC,EACjC,ILDI,aKEF,KLDK,cKEF,GLDG,CAAC,eKCe,CAAC,yBAE5C,ELDqB,mBKCA,ALDA,CKErB,EAAmB,QLDQ,CAAC,EAAf,GKCoB,CAAC,AAClC,EAAqB,ELDE,CAAC,MAAb,OKC0B,CAAC,AAC5C,EAAqC,ELDE,CAAC,uBKCuB,CAAC,EAC5B,KLDK,CAAC,mBKCmB,CAAC,AACxD,EAAyB,cLDc,CAAC,EAArB,GKC0B,CAAC,EACrB,oBAAoB,CAAC,8BAGzB,MLDM,CAAC,SKCS,CAAC,EACd,eLDe,CAAC,GKCG,CAAC,EAChB,CECmB,MPFZ,CAAC,eKCe,CAAC,AAC1D,EAAgC,mBLDmB,CAAC,CKCC,CAAC,oBAE9B,gBACE,aLDa,CAAC,CKCC,CAAC,EAChB,ELDE,gCKGF,aLDa,CAAC,CKCC,CAAC,EAChB,ELDE,cKEtB,EAA+B,cLDc,CAAC,KAAxB,MKCmC,CAAC,AAC1D,EAAkC,aLDa,CAAC,OAAzB,QKCwC,CAAC,EACpC,cEIc,YFHf,oBLDoB,CAAC,CKCC,CAAC,AAClD,EAA2B,oBLDoB,CAAC,AAAzB,CKCC,AAAyB,CAAC,2BAE/B,ELDE,eKEJ,KLDK,WKEH,YLDY,CAAC,CKCC,CAAC,GACd,aLDa,CAAC,CKCC,AEKA,CFLC,GACpB,GLDG,YKED,ELDE,YKE1B,GAA0B,GLDG,CAAC,WKCW,CAAC,oBAE1C,GAA0B,GLDG,CAAC,WKCW,CAAC,GAClB,WLDW,CAAC,CKCC,CAAC,iBAEhC,GAAe,SAAH,CAAa,CAAC,CLDC,EKET,SLDS,QKEX,GLDG,YKED,MLDM,WKED,CLDC,qBKEN,iBACI,ELDE,mBKEU,qBLDqB,CAAC,OKCO,CAAC,GAEpE,gBLFmE,CAAC,yBKE1B,CAAC,GACJ,8BAA8B,CAAC,AAClE,GACJ,kBLHyB,yBKGkB,CAAC,GACjB,mBACvB,GAAiB,ELHE,SKGL,KACO,CLHC,gBKI5B,GAAqC,sBLHsB,CAAC,GKGG,CAAC,GACrB,cLHc,CAAC,iBKGiB,CAAC,GAE1E,ULJyD,CAAC,2BKIpB,CAAC,GAEvC,wCAAwC,CAAC,GAEzC,yCAAyC,CAAC,GACH,gBLNgB,CAAC,aKMa,CAAC,GACpC,yBAAyB,CAAC,AACxD,GAAyB,IEGsC,eFHzC,CAAuB,CAAC,AAC9C,GAAqC,+BAAH,CAAmC,CAAC,AACtE,GAA8B,wBAAH,CAA4B,CAAC,AACxD,GAA0B,oBAAH,CAAwB,CAAC,GAEpD,ULN0D,CAAC,4BKMpB,CACnC,AADoC,GAExC,qCAD4C,CACN,CAAC,GAEvC,QEEqD,6BFDjD,GAA+B,yBAAH,CAA6B,CAAC,AAC1D,GAAgC,0BAAH,CAA8B,CAAC,AAC5D,GAA2B,qBAAH,CAAyB,CAAC,GAChB,CLPC,6BKQnC,GAAyB,mBAAH,CAAuB,CAAC,AAC9C,GAAiC,2BAAH,CAA+B,CAAC,GAElE,oBEEiE,iBFD7D,GACJ,4CADmD,CACN,CAAC,AAC1C,GAAuB,iBAAH,CAAqB,CAAC,AAC1C,GAA4B,GLRG,qBKS/B,GAAiC,2BAAH,CAA+B,CAAC,AAC9D,GAAiC,2BAAH,CAA+B,CAAC,AAC9D,GAAyB,mBAAH,CAAuB,CAAC,AAC9C,GAAiC,CEEC,4BFDlC,GAAoB,cAAH,CAAkB,CAAC,AACpC,GAA2B,qBAAH,CAAyB,CAAC,AAClD,GAAgC,0BAAH,CAA8B,CAAC,AAC5D,GACJ,uCACI,GACJ,gDADuD,CACN,CAAC,AAC9C,GAA0B,oBAAH,CAAwB,CAAC,AAChD,GAA4B,aECa,WFAzC,GAAqC,+BAAH,CAAmC,CAAC,AACtE,GAAkC,4BAAH,CAAgC,CAC/D,AADgE,GAC3B,+BAAH,CAAmC,CAAC,AACtE,GAAgC,0BAAH,CAA8B,CAAC,AAC5D,GAAgC,CLRC,2BKSjC,GAAgC,0BAAH,CAA8B,CAAC,AAC5D,GAAiB,YAAY,CAAC,AAC9B,GAAkB,QECuB,IFD1B,CAAgB,CAC/B,AADgC,GACf,WAAH,CAAe,CAAC,AAC9B,GAA2B,qBAAH,CAAyB,CAAC,AACxD,GAAgC,cLPc,QKQxC,GAA6B,uBAAH,CAA2B,CACrD,AADsD,GACzB,uBAAH,CAA2B,CAAC,GACtB,SEGS,mBFFzC,GAAmB,aAAH,CAAiB,CAAC,AAClC,GAAiB,WAAH,CAAe,CAAC,GACA,QLNQ,kBKOtC,GAAgC,0BAAH,CAA8B,CAAC,GAgrDnD,EAAA,KAGX,EACA,EACA,EACA,EACA,EACA,EACA,CALW,CAMX,EACA,CALW,CAMX,EACA,EACA,AAdF,ELlMa,AKqMa,AAHb,AAOK,AAQhB,EACA,AARgB,EAShB,EACA,EACA,AAd4B,EAe5B,EACA,EACA,AAb0B,CACD,CAazB,EL/LE,AKgMF,EACA,EACA,EACA,EACA,EAPgB,AAQhB,AAXsB,ELnLpB,AK+LF,EARkB,AASlB,EACA,CAb2B,AACF,CAazB,EAPgB,AAQhB,EACA,CAVqB,CADG,AAGN,ALrLhB,AK8LF,EACA,EACA,CANa,CAOb,CANa,CAOb,EACA,AAXsB,EACA,ALlLpB,AK6LF,AAd4B,EAe5B,AATkB,EAUlB,EACA,EACA,CARiB,AACF,CAQf,EL3LE,AK4LF,CARiB,AAHM,AADE,CAazB,CAPe,CAQf,EACA,CARiB,CASjB,CARiB,CASjB,EL1LE,CK2LF,GACA,GACA,GACA,AAZ4B,AAOd,AADE,EAHQ,CAUxB,CATwB,CAHO,CAIP,AASxB,CAJa,CADI,ALpLf,CK0LF,GACA,AALe,GAMf,EALiB,CAMjB,GALkB,AAMlB,EL3JE,CK4JF,AALe,GACA,AACH,MACG,eAUf,GACA,GACA,GACA,GACA,GACA,EAJc,CAKd,EANoB,CAOpB,GALkB,AAMlB,GACA,GACA,GACA,GACA,CAT4B,EAU5B,GACA,GACA,CAXkC,EAYlC,GACA,GACA,CAbwC,EAcxC,GACA,AAd0C,GAe1C,CAd2C,EAe3C,GACA,GACA,ELxJE,CKyJF,GACA,GAPwB,AAQxB,GACA,CAPsB,EAQtB,GACA,CAV+B,CL7I7B,CKwJF,EANoB,CAHU,AAU9B,GACA,GACA,CARyB,EASzB,EAZsC,CAatC,CAPsB,CL/IpB,AKiJe,CAMjB,AAV8B,GAW9B,AAV8B,GAW9B,GACA,AARwB,GASxB,GACA,ELrJE,AK4I2B,CAU7B,GACA,GACA,CARyB,EASzB,GACA,CAbwC,EAcxC,ELpJE,AKgJY,CAKd,CAXkC,AACH,EAW/B,AALe,EACD,AALe,CAU7B,CAXkC,EALiB,AAiBnD,EAT6B,CAU7B,GACA,ELnJE,CK4IsB,AAQxB,GACD,CAAC,CAAC,AAUC,EAdc,CACF,AAamB,AAjBP,GACA,MACG,EAee,CAAC,AAC3C,GAA2B,MAZA,CAYO,CAAC,EADP,SAG5B,EAFwB,CAEI,QAAQ,CAEpC,AAFqC,GAEL,UAFP,EAEmB,CAAC,AAC7C,GAA8B,UADD,AACW,CAAC,AACzC,GAA0B,MAAM,CAAC,AACjC,GAF2B,AAEK,UADT,EACqB,CAAC,AAC7C,CLnJ8C,CAAC,CKmJnB,QAAQ,CAAC,AACrC,GAA8B,UADL,AACe,CAAC,AACzC,GAA2B,OAAO,CAAC,AACnC,EAF2B,CAEC,QAAQ,CAAC,AACrC,CAFwB,EAEI,QAAQ,CAAC,AACrC,CAFyB,EAEzB,UADyB,CAGzB,GAA2B,OAAO,CAAC,AACnC,GAA4B,QAAQ,CAAC,AACrC,CAFwB,EAEM,UAAU,AADf,CACgB,AACzC,GAA2B,OAAO,CAAC,AACzC,EAFiC,CAEI,UADP,CACkB,CAAC,AAC3C,GAA8B,ELjJkB,CAAC,OKiJT,CAAC,AACzC,GAA+B,UADJ,CACe,CAAC,AAC3C,GAA+B,UADH,CACc,CAAC,AAC3C,GAA6B,SAAS,CADV,AACW,GACV,SAAS,CACtC,AADuC,AADb,GAEK,WAAW,CAAC,AAC3C,GAA+B,WAAW,CAAC,AAC3C,GAA4B,ILvGN,IKuGc,CACpC,AADqC,CADT,EAEA,KLvGR,GKuGgB,CAAC,AACrC,CAFyB,EAEK,MLvGT,IKsGI,AACe,CAAC,AACzC,GAA6B,KLvGP,IKuGgB,CAAC,AAEvC,AAH2B,GAGK,KLxGX,KKsGK,EAEkB,CAAC,AAC7C,GAA+B,QLvGJ,EKsGE,CACa,CAAC,AAC3C,GAA2B,CLvGR,MKuGe,CAAC,AACnC,EAF4B,CAEC,ILvGX,KKuGoB,CAAC,AACvC,AAFwB,GAEG,MLvGL,CKuGY,CAAC,AACnC,EAF0B,CAEK,KLvGZ,KKsGK,CACkB,CAC1C,AAD2C,GACd,SAAS,CAAC,AACvC,AAF4B,GAEE,UAAU,AADd,CACe,AACzC,GAA8B,UADH,AACa,CAAC,AACzC,GAA2B,OAAO,CAClC,AADmC,EADR,CAEA,OAAO,CAAC,AACnC,EAFwB,CAEW,UADX,KAC0B,CAAC,AACnD,GAA+B,UADC,CACU,CAAC,AACjD,GAAuC,CLpGC,SKmGN,IAqerB,GACG,EAA+B,CAC3C,GACA,GACA,EAJuB,CAKvB,EAJF,AAA4B,CA/gBC,KAAK,CAqhBhC,AArhBiC,GAshBjC,CAPF,EAAa,AAQX,GACA,AAPwB,CADI,EAS5B,AAPwB,GAQxB,CAPyB,EAQzB,GACA,GACA,GACA,EAPuB,AAFM,CACF,MAU3B,CAPyB,CADI,CAS7B,GAP2B,AACH,AAOxB,GACA,CAPyB,EAQzB,CAPyB,EAQzB,GAP2B,AAQ3B,GACA,GACA,AARwB,GASxB,CARyB,EASzB,GACA,AARwB,AADG,GAU3B,GACA,CAT4B,EAU5B,AAT2B,GAU3B,CAT4B,GACA,CACF,GACA,AAQ1B,GACA,EAR4B,CAS5B,EAR4B,AACH,CAQzB,EAPyB,CAQzB,GACA,CAR2B,EACD,AAQ1B,GACA,GACA,GACA,EAT6B,CAU7B,AARwB,CADI,EAU5B,EAR0B,CAS1B,AARwB,GASxB,GACD,CAT6B,AAS5B,CAR0B,AAQzB,AAWC,GAAoD,CAlB3B,GACA,AACH,GACA,MAe2C,CAAC,AAClE,GAd0B,AAcqB,CAfjB,IAEF,GAa2B,CAAC,AACxD,GAAqD,cAAc,CAGnE,AAHoE,EAFnB,CAKH,OAAO,CAAC,AACtD,GAAkD,AALN,WAKiB,CAAC,AAE9D,GAA+C,GANG,KAMK,CACvD,AADwD,GACH,EAJV,YAIwB,CAAC,AAuI7D,EA1IwC,CA2IrC,EAAkD,OAE9D,EA3I8C,CA4I9C,EAH0B,CAI1B,cA5IoD,CAuIV,AAQ1C,GAPF,AAQE,SAEA,EAVF,CAWE,CAXW,EAYZ,CAAC,CAAC,AAUC,GAAmC,GAnBO,EADK,OAEC,AAkBD,CAC/C,AADgD,GACnB,IAhBY,EAgBN,CAAC,AACpC,GAA+B,CAhBc,EAcb,IAZU,CAcH,CAAC,AACxC,GAA8B,CAFJ,GAZsB,GAcX,CAAC,AACtC,GAA8B,EAFF,KAES,CAAC,AAgE/B,GACG,EAAkC,AAlEjB,CAmE7B,GACA,GACA,GACA,CArE6B,CAgEH,AACA,CAK1B,EALF,CAMC,CAAC,CAAC,AAUC,GAAyC,KAhB7C,EAAa,CAgBwC,CAAC,AAClD,AAfwB,GADM,AAgBS,EAdb,EACD,EAaoB,CAZpB,AAYqB,AAC9C,GAAyC,QAAQ,CAAC,AA+C3C,GACG,CAlD4B,CAkDgB,CACxD,GACA,GACA,EApDsC,CAqDvC,CAAC,CAJ0B,AAIzB,AAYC,GAA8C,MAhER,CA+CJ,GACtC,KAgBiE,CAAC,AAE9D,GAAsC,EAlB1C,EAAa,CAC2B,CACF,CAgBW,CAAC,AAmEvC,GAlF6B,AAmF1B,EAA0C,CACtD,OAvE6C,EAyE7C,EAH0B,OApEW,AAyEtC,CANmC,AAMlC,CAAC,AAUC,EAfJ,CAeoC,QAAQ,CAAC,AACzC,CAhBJ,EAgBoC,AAhBvB,QACgC,AAeD,CAAC,AAEzC,AAfiC,GAeH,EAHD,IAGO,CAAC,AACrC,GAA8B,IAHD,EAGO,CAAC,AACrC,GAAgC,IAFL,IAEa,CAAC,AACzC,GAA+B,EAFJ,KAEW,CAAC,AAoFhC,GACG,EAAmC,CAtFhB,AAuF/B,GACA,QAvF8B,AAqFJ,AAI1B,CAL2B,EAM3B,CALF,EAME,GACA,GACD,CAAC,CAAC,AAUC,CAlBJ,EAAa,AAkB8B,CAjBZ,GACA,EAgBkB,CAAC,AAC9C,GAfyB,AAee,GAdf,IAcsB,CAbpB,AAaqB,AAChD,EAb0B,CAaa,MAAM,CAAC,AAC9C,GAA8C,EAHV,WACC,AAEsB,CAAC,AAC5D,GAA0C,MAFN,GAEe,CAAC,AAqE7C,GACG,EAA4C,CACxD,GACA,GACA,CA1E6C,EA2E7C,EAJ0B,CAK1B,GACD,CAAC,CAAC,AAUC,GAtFuC,AAsFG,CAjBR,GACtC,EAgBoD,CAAC,AACjD,GAA0C,KAjB9C,CAiBoD,AAhBd,CADzB,AAiBwC,AACjD,GAhBmC,AAgBO,EAfR,IAec,CAAC,AACjD,GAA0C,CAdL,CADI,IAYF,AAGS,CAAC,AACjD,GAA4C,MAHL,EAGa,CAAC,AACrD,GAA4C,IAHL,IAGa,CAAC,AACrD,GAAoD,EAHb,YACE,EAE2B,CACpE,AADqE,GAC1B,MAFF,CAES,CAAC,AACnD,GAA2C,OAAO,CAAC,AACnD,GAA0C,IAHO,EAGD,CAAC,AACjD,GAA0C,KAHF,CAGQ,CAChD,AADiD,GACL,MAHJ,EAGY,CAAC,AAErD,GAA2C,IAJJ,GAIW,CAAC,AACnD,GAA2C,GAJJ,IAIW,CAAC,AAEnD,GAA8C,IALL,MAKe,CAAC,AACzD,GAA2C,CAJH,MAIU,CAAC,AAEnD,GAA2C,CALH,MAKU,CAAC,AACnD,GAA4C,IAJD,IAIS,CAAC,AAqP9C,GACG,EAA+C,CAzPjB,AA0P1C,GACA,GACA,GACA,EA3P0C,AAuPhB,CAK1B,GACA,GACA,GACA,EA9P2C,CAqPJ,AAUvC,GATF,AAUE,GACA,GACA,GA1Q2C,EA8P7C,CACyC,CAD5B,CA9PqC,CAgQT,AAYvC,AA5QiD,GAiQV,AAYvC,GAXuC,KACE,CAYzC,EAXyC,CAYzC,GA1Q0C,CAgQF,GACA,AAjQM,CAAC,AA4Q/C,CAVuC,CAHU,CAcjD,CAVuC,EAWxC,CAAC,CAAC,AAeC,CAzBuC,EAyBX,MAAM,AAvBI,CAuBH,AACnC,EAvBsC,CAuBV,MAAM,CAAC,AA4E5B,GAAqC,CAjGH,AACH,AAiG1C,CA9E6B,OAjBa,AA+FlC,EAAE,CA7EmB,CA4EF,AA7FgB,GA+F3C,QAAQ,CAjF4B,CAiF1B,IAjF+B,CAAC,AAkF1C,QAAQ,CAF+B,CAE7B,KACV,IAAI,CAAE,GACN,CAHuC,GAGnC,CAAE,GACP,CAAC,AAUI,GAA2C,IAbR,GAae,CAAC,AACnD,EAb2B,CAagB,OAAO,AAZvB,CAYwB,AAoC5C,GACG,EAA+C,CAC3D,GACA,GACD,CAAC,CAAC,AAUC,GAbwB,AAae,CAnDC,QAmDQ,CAAC,AACjD,EAnDwC,CAoCH,AAeE,GAd3C,MAcoD,CAAC,AAoC1C,GACG,CAnDd,CAmDuD,CAnD1C,AAC6B,AAmDxC,GACA,AAnDwC,CAWF,EAyCvC,CAAC,CAAC,AAkOQ,GArOiB,AAqOkC,CAC9D,EAAE,CAzNmC,CAAC,AAyNlC,CAzNmC,AAlDC,AA4QxC,CAxOmC,GACnC,KAuOS,CAzNmC,CAAC,AAyNlC,CAzNmC,AA0N9C,EAHkC,CArOlC,EAAa,EACyB,AAuO/B,CAzNmC,CAAC,AAyNlC,CAzNmC,AAbN,AAuOtC,OAHkC,SAGlB,EAAE,CAClB,OAHgD,QACJ,EAE3B,EAAE,CACnB,SAAS,EAAE,CACX,WAH8D,GAGhD,EAAE,CAChB,eAHgE,EAG/C,EAF+B,AAE7B,CACnB,kBAAkB,CAzNmC,CAAC,AAyNlC,CAFsC,AAvNH,AA0NvD,mBAAmB,CAzNmC,CAAC,AAyNlC,CAzNmC,AA0NxD,CAHgE,MAGzD,CAzNmC,CAyNjC,CAzNmC,CAAC,AA0N7C,YAHkE,AAGtD,EAAE,EACd,aAAa,CAzNmC,CAyNjC,CAzNmC,CAAC,AAuNP,AAG5C,EAJoE,MAI5D,CAzNmC,CAyNjC,CAzNmC,CAAC,AA0N9C,SAHsD,EAG3C,EAAE,EACb,SAAS,CAzNmC,CAyNjC,CAzNmC,AAsNU,CAtNT,AA0N/C,MAH8C,SAG/B,CAzNmC,CAyNjC,CAzNmC,CAAC,AA0NtD,CAAC,AAUI,GAA6B,CAbmB,KAab,CAAC,AACpC,GAAiC,EAbW,QAaD,CAAC,AAkCrC,EAnCmB,CAoChB,EAAkC,CAC9C,GACA,GACD,CAAC,CAAC,EAtC+B,AAZ0B,CA8ChC,AACA,GAA5B,WAAA,CAC4B,CADf,MAEmB,sEA/1CgB,KAAK,CAAC,kDAkBtD,iDAAiD,CAAC,CAgDlD,+CAA+C,CAAC,MAhChD,kDAAkD,CAAC,GAwDnD,kDAAkD,CAAC,4IAhCnD,2CAA2C,CAAC,6DA1eV,wBAAwB,CAAC,wCAxDpB,6BAA6B,CAAC,IA0Q7B,8BAA8B,CAAC,iCA1ClC,2BAA2B,CAAC,2FAnJ/B,wBAAwB,CAAC,MA0JtB,2BAA2B,CAAC,qCAqBvB,gCAAgC,CAAC,yFAPzC,wBAAwB,CAAC,kJA1JtB,2BAA2B,CAAC,2JAwK3B,4BAA4B,CAAC,6BApTjC,wBAAwB,CAAC,GAOzB,wBAAwB,CAAC,GAwRzB,wBAAwB,CAAC,kCAjRxB,yBAAyB,CAAC,MArB1B,iGAmCI,6BAA6B,CAAC,4DAOhC,2BAA2B,CAAC,8BAiK9B,yBAAyB,CAAC,KAOxB,2BAA2B,CAAC,EAO7B,0BAA0B,CAAC,8EAslB/D,sCAAsC,CAAC,0FAqDvC,qCAZwC,KAAK,CAAC,AAYH,CAAC,mCAmB5C,mCAAmC,CAAC,sEArKA,0BAA0B,CAAC,sUAqvB5B,yBAAyB,CAAC,uwBAhQ7D,wCAAwC,CAAC,0FAQzC,wCAAwC,CAAC,EAgBzC,uCAAuC,CAAC,+QAhExC,uCAAuC,CAAC,0FA1FxC,uCAAuC,CAhCvC,AAgCwC,oCAhCJ,CAAC,IAQrC,qCAAqC,CAAC,wBA/HN,IAAI,CAAC,+DAkBE,6BAA6B,CAAC,EAmC/B,4BAA4B,CAAC,EAd9B,2BAA2B,CAAC,oiCAvuEjE,kCAAkC,CAAC,mDA4FnC,sCAAsC,CAAC,wKApFvC,wCAAwC,CAAC,8IAQzC,0CAA0C,CAAC,aAQ3C,2CAA2C,CAAC,8EAyFD,wBAAwB,CLibC,AKjbA,CLibC,UK9d3B,uBAAuB,CAAC,iBA+BnB,4BAA4B,CAAC,QLibvC,CAAC,GK5hBS,4BAA4B,CAAC,eAiI5E,cLgbgE,CAAC,gBKhblC,CAAC,kEA9RI,iBAAiB,CAAC,yCAOjB,kBAAkB,CAAC,kHAjUxD,+BAA+B,CAAC,sWAtDa,QEKiB,CAAC,cFhCjC,GA2ByC,CAAC,OA3B/B,CAAC,gBAkBP,WEIW,oFFbX,gBAAgB,CAAC,QAvCpB,aAAa,CAAC,6FAoZV,iBAAiB,CAAC,iDAjPd,qBAAqB,CAAC,6KAyErB,sBAAsB,CAAC,gBAdlB,2BAA2B,CAAC,MAOjC,sBAAsB,CAAC,wCAqCxB,qBAAqB,CAAC,qIAqTzB,kBAAkB,CAAC,mCAjGxB,aAAa,CAAC,iRAOZ,eAAe,CAAC,iBAgEX,oBAAoB,CAAC,iMAmZzB,gBAAgB,CAAC,yBAuBJ,6BAA6B,CL0f3C,AK1f4C,CL0f3C,qfKzpBnC,oCAe0C,IAfF,CAAC,kBAewB,CAAC,WApDzB,sBAAsB,CAAC,+IAPhE,8BAA8B,CAAC,oVA1dG,eAAe,CAAC,mGAqFf,gBAAgB,CAAC,2RA4BpB,aAAa,CAAC,cAOZ,eAAe,CAAC,iFAs9DF,KAAK,CAAC,8SAIN,KAAK,CAAC,6CA8BtD,4CAA4C,CAAC,GAwD7C,4CAA4C,CAAC,+CArFG,KAAK,CAAC,0BAtanB,yBAAyB,CAAC,kCAuHvB,4BAA4B,CAAC,sRApRtC,KAAK,CAAC,+HAwIE,2BAA2B,CAAC,oFAmJ/B,wBAAwB,CAAC,EApM1B,uBAAuB,CAAC,KActB,yBAAyB,CAAC,4JAc3B,wBAAwB,CAAC,oNA7ExB,mcAuyBnC,oCAAoC,CAAC,wKAmDG,KAAK,CAAC,2RAqkBV,KAAK,CAAC,kEAEN,KAAK,CAAC,0BA+CP,yBAAyB,CAAC,2FAiZzB,0BAA0B,CAAC,iBAzV/D,wCAAwC,CAAC,GAQzC,wCAAwC,AAmDxC,CAnDyC,mCAmDL,CAAC,GARrC,oCAAoC,CAAC,iPApUrC,wCAAwC,CAAC,IAxEzC,yCAAyC,CAAC,GAQ1C,yCAAyC,CAAC,8CAxC1C,uCAAuC,CAAC,wIAgHxC,wCAAwC,CAAC,6YA1MzC,oCAAoC,CAAC,UAQrC,2CAA2C,CAAC,gTA/GP,2BAA2B,CAAC,0hBAkqBlB,EAAE,CAAC,yVA50FlD,kCAAkC,CAAC,gBA0FnC,sCAAsC,CAAC,MAhHvC,gCAAgC,CAAC,iDAgGQ,sBAAsB,CAAC,8IAwBhE,+CAA+C,CAAC,uUAhBhD,8BAA8B,CAAC,WA9BiB,gBLibgB,CAAC,YKjbY,CAAC,6OAjQ1C,iBAAiB,CAAC,wCAOpB,eAAe,CAAC,yGAvUlD,+BAA+B,CAAC,00BA0IK,kBAAkB,CAAC,MAPxB,aAAa,CAAC,qSAPd,aAAa,CAAC,wEAkQZ,eAAe,CAAC,sCAhDhB,eAAe,CAAC,4BA+DlD,+BAA+B,CAAC,yBAQhC,4CAA4C,CAAC,AAQ7C,gCAAgC,CAAC,yBAQjC,2BAgBiC,cAAc,CAAC,GAhBH,CAAC,2EAhDP,oBAAoB,CAAC,gCA9B7B,YAAY,CAAC,2DA0fE,wBLyfwB,CAAC,EKzfE,CAAC,qiBAhJ1E,mDAAmD,CAAC,kKAsBpD,kCAAkC,CAAC,uUA/gBD,eAAe,CAAC,0CAOd,iBAAiB,CAAC,8YAsjBrB,cAAc,CAAC,wHLxhC5C,GAAqB,iBACrB,GAAuB,mBAC7B,GAAyB,eACnB,GAA8B,yBAAyB,CAAC,AACxD,GAAqB,oBACO,uBAAuB,CAAC,GAC1B,KOFkC,EFE3B,CAAC,aLAa,CAAC,AACtD,GAA+B,QKAQ,CAAC,WLAW,CAAC,AAC9C,GAAuB,GKAG,cLAN,KACM,yBACE,wBAClC,GAAgC,QKAQ,iBLCR,mBKAmB,CAAC,CLAC,CAAC,GACvB,GKAG,qBLCD,iBKAiB,MLC5C,GAA0B,KKCK,eLDR,KACF,UKCU,ULAZ,GKCG,eLAE,GKCG,iBLA3B,GAA2B,qBAAH,CKCC,CLA/B,GAAgC,OKCO,CAAC,aLDa,CAAC,GACnB,QKCQ,CAAC,eLDe,CAAC,AOGzD,GPFmB,KKCK,ULAS,mBKCmB,CAAC,KLDK,CAAC,KOEK,oCPC/C,IKCI,SLAC,SKCS,MLAlC,GAA0B,OKCO,YLAL,qBACR,QKCQ,CLDC,CAAC,kBAER,WAAW,AKCA,CAAC,ALDA,GACZ,EKCE,aLAI,qBACF,KKCK,cLAA,qBACzB,GAAuB,YKCY,CAAC,CAAnB,ILDwB,CAAC,AAC1C,GAAoB,WKCW,CAAhB,AAAiB,ELDf,CAAkB,CAAC,GACjB,kBACM,UKCU,CAAC,SLDS,CAAC,COIC,gBPF/C,GAAmB,aAAH,CKCC,ILAQ,UKCU,CAAC,SLDS,CAAC,GACrB,GKCG,qBLAF,KKCK,oBLAN,qBACzB,GAA0B,oBAAH,CKCC,ILAE,sBAC1B,GAA2B,qBKCH,ALDA,CKCyB,ALDA,CAAC,AKCA,GLA1B,SKCS,CAAC,SLDS,CAAC,AAC5C,GAAyB,IKCI,CAAC,MAAhB,SLD+B,CAAC,GAC5B,iBACC,eACzB,GAA4B,KKCK,CAAC,WLDW,CAAC,GACjB,QKCQ,CAAC,SLDS,CAAC,GAC5B,GKCG,8BLCH,GKCG,OLAjB,GAAiB,WAAH,CKCC,ILAG,aOOa,APPA,AKCA,CLDC,AKCA,GLAF,yBAAyB,CAAC,AACxD,GAA8B,CKCC,CAAC,UAAjB,aLDwC,CAAC,AAC9D,GAA4B,KKCK,CAAC,WLDW,CAAC,AACxC,GAA2B,IKCI,CAAC,OAAjB,ULDkC,CAAC,AAClD,GAA2B,cKCc,CAAC,EAAtB,KLD6B,CAAC,AOSrD,GPRuB,WKCW,CAAC,GLDG,CAAC,GACT,QOQQ,kBPPL,CKCC,4BLAG,UKCU,uBLAzB,aKEa,CLFC,CAAC,GACV,mBAAmB,CAAC,CKEC,ELDnB,eKGe,CAAC,KLHK,CAAC,GAC1B,OKGO,CAAC,SLHS,CAAC,AAC9C,GAA+B,YKGY,CAAC,MEMM,CPTC,CAAC,AAC9C,GAA6B,uBAAH,EKGE,GLFA,MKGM,qBLFL,WKGW,iBLFnB,gBAAgB,CAC3C,AAD4C,GACd,CKGkB,kBAEC,ALLA,CAAC,GAChB,IKMI,oBLgkCzB,GACG,EAA2C,CACvD,GACA,GACA,GACA,EAJ0B,CAK1B,GACA,GACA,AANkB,EAFiB,CASnC,CALgB,CADI,AAFtB,CASE,EKrcE,CLscF,GALkB,AAMlB,GACA,CAZF,EAI6B,AAJhB,AAaX,GACA,CARyB,CACF,CAQvB,CAPsB,CK7bpB,CLqcF,GACA,EAPuB,CAQvB,GACA,CARyB,CACF,CAQvB,EAPuB,CAQvB,CAPsB,CK5bpB,CLocF,GALkB,AAMlB,CALgB,CAFO,CAQvB,GACA,GANqB,AAOrB,GACA,CAJa,CK7bX,CL0bsB,AAQxB,GACA,GACA,CAJa,CAJa,CAS1B,GACA,AAPqB,GAQrB,AAT2B,CAIX,CK1bd,CLgcF,EAHW,AAFM,CAMjB,GACA,CAJa,AAFM,EAOnB,GACA,CAJa,EAKb,EK7bE,CL8bF,GACA,CANmB,CACF,CAMjB,GACA,GACA,CAPsB,CACF,CAOpB,CALgB,CKtbd,CL4bF,GAJe,AAKf,GACA,CALgB,AAFM,EAQtB,GACA,GACA,CAPsB,CKlbpB,CL0bF,GACA,EAPuB,CAQvB,CAPsB,EAQtB,EAPuB,CAQvB,EAPuB,CAQvB,EKxbE,CLibsB,AAQxB,AALe,GAMf,CAPsB,AAEN,EAMhB,GACA,CANmB,EAOnB,EANoB,AAGT,CAIX,EKvbE,CLkbgB,AAMlB,EAJc,CAKd,GACA,AALe,GAMf,GACA,GACA,EKrbE,CLsbF,CANmB,EAOnB,AAT2B,GAU3B,EALiB,CAFO,AAQxB,GAPwB,AAQxB,GACA,EKpbE,CL6asB,AAQxB,CALgB,EAMhB,GACA,GANqB,AAOrB,GACA,CANmB,AAJY,CAGR,CAQvB,EKnbE,CLobH,CAAC,CAAC,AAUC,GAAwC,GAhBhB,CAGR,CAFO,IACC,CAEL,KAYoC,CAAC,AAExD,GAAgC,OAAO,CAAC,AAwDjC,GACG,EAAoC,CAChD,CA5DuC,QA8DvC,CKvcoC,CLocV,CAzDK,CAwDH,GAC9B,EAKC,CAAC,CKncD,ALmcE,AAYC,EKrdA,CLqd4C,cAhBT,CAER,IAcoC,CAAC,AAChE,GAA2C,eADF,GACoB,CAAC,AAC9D,GAAkC,SAAS,CAAC,AAClD,GAAwC,EAFM,OAEG,CAAC,AAC5C,GAAkC,EAFH,OAEY,CAAC,AAC5C,EKnc2D,CLmctB,YAAY,CAAC,AAClD,EAF+B,CAEiB,eADd,QACqC,CAAC,AACxE,GAAmC,UAAU,CAAC,AAC9C,GACJ,CAHiD,cACb,YAET,CAAC,AACxB,GAAoC,WAAW,CAAC,AAChD,GAHiD,AAGP,IKjca,CAAC,YLicG,CAAC,AAC5D,GAA4C,eADL,IACwB,CAAC,AAChE,GAA6C,eADJ,KACwB,CAAC,AAClE,GAAwC,eADE,AACa,CAAC,AACxD,GAAgD,eADX,QACkC,CAAC,AACxE,GAA8C,eADD,IK9boB,CAAC,CL+bC,CAAC,AACpE,GAAyC,gBAAgB,CAAC,AAwOnD,GACG,EAAoC,CAChD,EK3fE,CL4fF,GACA,GACA,EAJ0B,CAK1B,AA9OwC,CAwOZ,EAO5B,CANF,EAOE,CKlgBD,CAQG,CL2fF,GACA,GACA,GACA,GACA,GACA,CAV+B,CK/e7B,CL0fF,CAV+B,EAW/B,CAbwC,AAGT,EAW/B,GACA,CAXkC,EAYnC,CAAC,CAAC,AKxfF,AL8eiC,GAqBO,IAnBN,EKteY,CAAC,ELyfE,CAAC,GAoCrC,AAtD2B,EKwPb,CLvOS,CAnBc,CAGR,EAEJ,CAcG,CAAC,GAwC1C,CAAC,CAH0B,AKkMA,AL/LzB,AAUC,GAA2B,AA7DS,CAFO,CACF,KA8DP,CAAC,AACnC,GAA2B,KKgMK,ELhME,CAAC,AACnC,EK8LwB,ALhMA,CAEG,OAAO,CAAC,AACnC,EAFwB,CAEE,MK+LN,AL/LY,CAAC,AACjC,GAFwB,AAEG,OAAO,CAAC,AACnC,EAFuB,CAEI,EKgME,EADa,GL/LR,CAAC,AAqF5B,EAtFiB,CAuFd,CK0JC,CL1J8B,CAC3C,EK0Je,CLzJf,GACA,CAzF0B,CAqFH,CAKvB,EAJF,AAA4B,CAK1B,GACA,GKuJe,EADK,IL3JI,AAOzB,CKsJoB,ALtJnB,CAAC,AAUC,CAhBsB,EAgBK,CAfL,EACD,AKuKS,ILtKR,EAac,CAZd,AAYe,AACrC,CK4I6B,EL5IJ,KK8IK,EL9IE,CADR,AACS,AACjC,GAA0B,GK4IgB,KL7IpB,AACY,CAAC,AACnC,GAA2B,KKwJP,AACY,GL1JT,CACa,CAAC,AACrC,GAA0B,QADF,AACU,CAAC,AACnC,GAA2B,QADJ,CACa,CAAC,AACrC,AKuJyB,GLvJO,KKwJX,EACkB,CL1Jf,MACsB,CAAC,AAC/C,GAAwB,MAAM,CAAC,AAE/B,CAH6B,EAGF,IKuJW,ILzJjB,CAEe,CAAC,AACrC,GAAwB,GKyJG,GLzJG,CAAC,AA4HxB,CA7HiB,EKyJE,AL3BhB,EAA6B,CACzC,GACA,CKoG8B,CLnOP,CA4HF,AAIrB,GACA,AAJF,EAA4B,CAK1B,CKgG4B,EL/F5B,GACA,GACA,SAEA,GACA,GACD,CAAC,CAAC,AAWC,GAAwC,QAAQ,CAAC,AACjD,GAAwC,QAAQ,CAAC,AAEjD,GAAsC,MAAM,CAAC,AAC7C,GAJqC,AAIG,QAAQ,CAAC,AAEjD,GALqC,AAKG,QAAQ,CAAC,AACjD,CAJmC,EAIG,MAAM,CAAC,AAC7C,GAJqC,AAIE,OAAO,CAAC,AA2HxC,GACG,CA9H2B,CA8HgB,OAEvD,EA/HqC,CAgIrC,EAH0B,AK0DxB,MLrDF,EAjIsC,CA2HH,AAOnC,GANF,MAQE,GACA,EKwDE,ALjEJ,CAUE,CAVW,EAWZ,CAAC,CAAC,GAToC,SAGF,KACE,SAEA,KAED,yHAtsBtC,yCAAyC,CAAC,EAU1C,mCASyC,KATD,CAAC,yBAS+B,CAAC,GAShC,+BAA+B,CAAC,+HAyD9B,iCAAiC,CAAC,WAoB7E,yCAAyC,CAAC,sDAV1C,uCAAuC,CAAC,sCA4DxC,sCAAsC,CAAC,QAVvC,yCApBA,EAoB2C,CAAC,kCApBP,CAAC,QAVtC,0CAA0C,CAAC,+CAhNC,uLAuZV,wBAAwB,CAAC,GAOzB,wBAAwB,CAAC,GAOzB,wBAAwB,CAAC,EAO1B,uBAAuB,CAAC,IAOvB,wBAAwB,CAAC,GAOzB,wBAAwB,CAAC,CA1C9B,IKgMI,CLhMC,CAAC,2CA+GR,KAAK,CAAC,OKyJO,uGAoDZ,0BL7LI,sBAAsB,CAAC,IAqBtB,uBAAuB,CAAC,gCAmCvB,UKiJU,CAAC,aLjJa,CAAC,sKAxrDf,sBAAsB,CAAC,aAOzB,oBAAoB,CAAC,idAqEzB,gBAAgB,CAAC,qIAOZ,qBAAqB,CAAC,w6BAiL1B,iBAAiB,CAAC,m6BAwRT,0BAA0B,CAAC,qDArB/B,sBAAsB,CAAC,0MA8vC1B,KAAK,CAAC,GKoGG,CAAC,0eLhZnD,CK1f6C,+NLoRJ,+BAA+B,CAAC,iBAoBzE,6CAA6C,CAAC,+aA8E9C,yCApO4C,IAoOC,CAAC,4fKwelB,u6BLxvDY,kBAAkB,CAAC,4DAmCX,0BAA0B,CAAC,iLA6FlC,mBAAmB,CAAC,ySAwDnB,oBAAoB,CAAC,mKA2FpB,qBAAqB,CAAC,sHAc5B,eAAe,CAAC,grCA6Lb,kBAAkB,CAAC,kBAOhB,qBAAqB,CAAC,4eOzrB5D,IAAM,GAA2C,mCAA4C,CAAC,AAOxF,GAAwD,CFCpD,+CED6G,CAAC,AAOlH,GAAkD,YFAY,CLA9C,AKA+C,6BEAsC,CAAC,AAOtG,GAAwD,MPD/C,0COCwG,CAOjH,AAPkH,GAOzD,cFDxC,mCECkG,CAAC,AAYpH,GAA2C,SPH/B,EKCE,wBEEyE,CAAC,AAOxF,GAA2C,OFHjC,4BEG6E,CAAC,AAOxF,GAAsC,CPLC,KKCK,CAAC,KLD9B,kBOK8D,CAAC,AAQ9E,GAA+B,MPNtB,CKCC,gBEKqD,CAAC,AAQhE,GAA2B,KFNnB,ALDA,cOO+C,CAQvD,AARwD,GAQzB,CFPC,CAAC,OAArB,ELD8B,CAAC,WOQoB,CAAC,AAQhE,GAAwC,QFN7B,wBEMsE,CAAC,AAQlF,GAA2D,iBFJvC,kCEImG,CAQvH,AARwH,GAQ3E,yBFFpB,CAAC,EADK,SEG4D,CAAC,AAQ5F,GAAyD,aFFhC,CAAC,cADK,qBEGoF,CAAC,AAQpH,GAA8B,oBFFP,EEEsC,CAQ7D,AAR8D,CFFR,CAAC,CEUlB,OFDO,CAAC,OAA3B,cECyD,CAAC,AAQ5E,GAAqC,IFF9B,yBEEoE,CAAC,AAQ5E,GAAqC,eFHe,CAAC,GAA/B,UEGqD,CAAC,AAQ5E,GAAyC,iCAA0C,CAAC,AAQpF,CARsC,EAQJ,0BAAmC,CAAC,CAAvC,EAQE,0BAQjC,GAA2C,mCAA4C,CAQvF,AARwF,CAAhD,EAQC,iCAA0C,CAAC,AAQpF,CARsC,EAQG,iCAA0C,CAAC,CAA9C,EAQM,WPTW,CAAC,wBOSiC,CAQzF,AAR0F,GAQ9D,oBAA6B,CAAC,AAK1D,CALyB,EAKa,EFJE,CAAC,eAApB,YEIwD,CAAC,AAK9E,GAAsC,8BAAuC,CAAC,AAK9E,CALmC,EAKV,MFLM,YEU/B,CALsB,EAKI,kBAA2B,CAAC,AAKtD,CALuB,EAKK,oBAA6B,CAAC,AAK1D,CALyB,EAKF,QFNQ,SEMX,EAOgB,GFNG,0BEWvC,GAAsB,cAAuB,CAAC,CAA3B,EAKM,EFNE,gBEW3B,GAA8B,sBAA+B,CAAC,AAK9D,CAL2B,EAKD,kBAA2B,CAAC,CAA/B,EAKE,iBAA0B,CAAC,AAKpD,GAAuC,GFZU,4BEY8B,CAAC,AAKhF,CALoC,EAKV,kBAA2B,CAAC,AAOtD,CAPuB,EAOa,4BAAqC,CAAC,AAO1E,CAPiC,EAOM,+BAAwC,CAAC,AAOhF,CAPoC,EAOC,6BAAsC,CAAC,AAO5E,CAPkC,EAOE,4BAAqC,CAAC,AAO1E,CAPiC,EAOA,OFLO,CAAC,UAApB,OEK8C,CAAC,AAQpE,GAAsC,8BAAuC,CAAC,AAO9E,CAPmC,EAOK,gCAAyC,CAAC,AASlF,CATqC,EASC,8BAAuC,CAO7E,AAP8E,CAA3C,EAOQ,mCAA4C,CAAC,AAOxF,CAPwC,EAOI,oCAA6C,CAAC,CAAjD,ipEDjW/C,IAAM,CFAC,EAAA,upLJ84CZ,kCAAkC,CAAC,oGA6BnC,iDAAiD,CAAC,6BAVR,gCAAgC,CAAC,yOA/J/B,+BATV,KAAK,CAAC,8BAwBD,CKjbC,8BL2ZN,KAAK,CAAC,cKjbc,qwBA85Cf,6BAA6B,CAAC,iCAmC/B,4BAA4B,CAAC,CAO/B,0BAA0B,CAAC,8JArIzB,4BAA4B,CAAC,EAd9B,2BAA2B,CAAC,wDAnJrC,IAAI,CAAC,0BAyGE,ILvDI,qBKuDqB,CAAC,sHAO1B,ELxDE,uBKwDuB,CAAC,MA+DvB,4BAA4B,CAAC,GAO7B,4BAA4B,CAAC,CAO/B,0BAA0B,CAAC,+DAoF3B,0BAA0B,CAAC,uFA7E3B,0BAA0B,CAAC,kCA/K5B,gCAsLG,4BAA4B,CAAC,GAO7B,4BAA4B,CAAC,mCAvH9B,2BAA2B,CAAC,AA6L/B,wBAAwB,CAAC,mCA/DxB,yBAAyB,CAAC,4gCA2lB7D,sCAAsC,CAAC,mKApFG,gCAAgC,CAAC,4BA4BtC,2BAA2B,CAAC,IAd3B,4BAA4B,CAAC,EAO9B,2BAA2B,CAAC,+wDAwoCzB,8BAA8B,CAAC,y6EAjsBvE,uCAAuC,CAAC,aAwBxC,2CAxCA,MAwCiD,CAAC,gCAxCX,CAAC,2IAgFxC,yCAAyC,CAAC,2CArGG,KAAK,CAAC,oFAqFnD,uCAAuC,CAAC,uIAgExC,wCAAwC,CAAC,iDAwBzC,yCAAyC,CAAC,6CAR1C,wCAAwC,CAAC,MAxBzC,2CAA2C,CAAC,mPAnTL,6BAA6B,CAAC,kCAnC9B,6BAA6B,CAAC,urBLlqCpC,uBAAuB,CAAC,SA4BlB,4BArBL,CAqBkC,CAAC,sBArBX,CK+K9B,AL/K+B,iFAczB,wBAAwB,CAAC,+BAnCzB,eKwJe,SLxJS,CAAC,AAsE5B,CKgJC,wOA4oDiB,CAAC,CAAC,+HAFC,CAAC,CAAC,uIADH,CAAC,CAAC,sCAET,CAAC,CAAC,2HAEM,CAAC,CAAC,wIAOR,EAAE,CAAC,ybAzzFjD,yCAAyC,CAAC,0DAfI,2BAA2B,CAAC,4DAfjC,sBAAsB,CAAC,8BAsChE,wCA7C8C,AA6CN,CAAC,0BA7CgC,CAAC,sZA5nB7B,0BAA0B,CAAC,0IAsFxE,sBEKoF,CAAC,WFLnD,CAAC,2FAgBY,4BAA4B,CAAC,QA/BhC,yBAAyB,CAAC,YAOzB,IEMa,CAAC,qBFNY,CAAC,6BAgCxE,kCAfyC,UAeG,CAAC,CETiB,CAAC,SFNA,CAAC,aAjFrB,wBAAwB,CAAC,SAuH3B,sBAAsB,CAAC,iBAzGjB,4BAA4B,CAAC,QAuHhC,yBAAyB,CAAC,sGAPxB,2BAA2B,CAAC,AAgBvC,MEKM,sEF5IX,WAAW,CAAC,cAwXT,cAAc,CAAC,aAOb,gBAAgB,CAAC,+CA3MZ,qBAAqB,CAAC,+CAxBnB,wBAAwB,CAAC,KAd/B,kBAAkB,CAAC,4EA2DT,4BAA4B,CAAC,4GAPvC,kBAAkB,CAAC,mDAmEZ,yBAAyB,CAAC,SAS5B,uBAAuB,CAAC,6BAnF/B,gBAAgB,CAAC,gcA4QlB,eAAe,CAAC,yCAuCZ,mBAAmB,CAAC,+CAqczB,KLyfK,wGKpnBM,yBAAyB,CAAC,gBA9BtB,6BAA6B,CAAC,QApDlC,GL+bG,wCKvb/C,8BAA8B,CAAC,WA2GiB,6BAA6B,CAAC,iBAP9E,kCAAkC,CAAC,SARnC,+BAA+B,CAAC,UAsBgB,6BAA6B,CAAC,YAO9B,6BAA6B,CAAC,OApFnC,wBAAwB,CAAC,8MAdpE,8BAA8B,CAAC,iDAtCQ,yEA6CH,iBAAiB,CAAC,mBAlaX,wBAAwB,CAAC,WAdzB,wBAAwB,CAAC,WAOzB,wBAAwB,CAAC,YAdxB,yBAAyB,CAAC,iBAPtE,+BAA+B,CAAC,QARe,4BAA4B,CAAC,2BAPxC,iBAAiB,CAAC,mEArBlB,iBAAiB,CAAC,WAPlB,iBAAiB,CAAC,WAdlB,iBAAiB,CAAC,8CAknBX,wBAAwB,CAAC,cAqBvB,EL0fE,wBK1fwB,CAAC,eAOxB,6BAA6B,CAAC,SAdjC,0BAA0B,CAAC,SAP9B,uBAAuB,CAAC,GAdjC,cAAc,CAAC,aATd,eAAe,CAAC,wGL55BL,cKMc,CAAC,QLNQ,CAAC,iBAPtB,IKOI,CAAC,oBLPoB,CAAC,uFA4B5B,uBAAuB,CAAC,AOSS,CAAC,gBPFhC,yBAAyB,CAAC,aAO5B,uBAAuB,CAAC,cAkBzB,QOSQ,+BPlBP,uBAAuB,CAAC,eAyBxB,uBAAuB,CAAC,gBATvB,wBAAwB,CAAC,WAnG7B,oBAAoB,CAAC,IKOI,CAAC,iBLSnB,2BAA2B,CAAC,MASrC,EKDF,CAAC,eLCmB,CAAC,IKQI,CAAC,ULxCxB,KKKK,2BLSP,gBAAgB,CAAC,AKQA,CAAC,sDLyHV,wBAAwB,CAAC,cAO1B,uBAAuB,CAAC,sHAgBlC,aAAa,CAAC,6BASA,2BAA2B,CAAC,SASlC,qBAAqB,CAAC,KA+BhC,WAAW,CAAC,qBA0BN,iBAAiB,CAAC,8CAhDtB,aAAa,CAAC,kBAuCX,gBAAgB,CAAC,YA8CpB,aAAa,CAAC,aArBhB,WAAW,CAAC,qBAmCN,iBAAiB,CAAC,iBAPhB,mBAAmB,CAAC,kBAcjB,sBAAsB,CAAC,MAnChC,aAAa,CAAC,eAOd,aAAa,CAAC,4DA6EL,sBAAsB,CAAC,aAoFzB,oBAAoB,CAAC,cAPtB,mBAAmB,CAAC,kBArBjB,sBAAsB,CAAC,qDA5BtB,uBAAuB,CAAC,cAPzB,sBAAsB,CAAC,SAiD7B,gBAAgB,CAAC,oDA3FX,sBAAsB,CAAC,0CAP7B,gBAAgB,CAAC,eAqBjB,gBAAgB,CAAC,cAPlB,eAAe,CAAC,uBA4BR,uBAAuB,CAAC,cAPzB,sBAAsB,CAAC,iBAmCrB,wBAAwB,CAAC,cAP1B,uBAAuB,CAAC,UA+D7B,kBAAkB,CAAC,QAO1B,WAAW,CAAC,eAdZ,WAAW,CAAC,kBAqBT,cAAc,CAAC,oBA4BV,mBAAmB,CAAC,oBAcf,wBAAwB,CAAC,eAPzB,wBAAwB,CAAC,kBArBtB,2BAA2B,CAAC,eAO5B,2BAA2B,CAAC,KA4BtC,iBAAiB,CAAC,aA1CpB,eAAe,CAAC,+BAgErD,+BAA+B,CAAC,QAfc,wBAAwB,CAAC,kBAOtB,2BAA2B,CAAC,WAmChC,uBAAuB,CAAC,QAlB/B,gBAAgB,CAAC,oBASZ,qBAAqB,CAAC,aAgBxB,mBAAmB,CAAC,gEAcb,0BAA0B,CAAC,oDAO5B,yBAAyB,CAAC,eA4B1B,yBAAyB,CAAC,iuBA6uCzE,qCAAqC,CAAC,GAQtC,qCA9BwC,AA8BH,CAAC,GA9BM,CAAC,oCA6C7C,mCAAmC,CAAC,KAQpC,qCAAqC,CAAC,AAlDG,KAAK,CAAC,mBKqGmB,CAAC,kBLnCnE,qCAAqC,CAAC,CAQtC,mCAAmC,CAAC,IAQpC,oCAAoC,CAAC,g9BQlgEpC,OAAA,cAAA,CAAA,EAAA,aAAA,ytBAeU,EAAA,8BAA8B,CACzC,2BAAoC,CAAC,AAK1B,EAAA,mCAAmC,CAAG,KAAc,CAAC,AAKrD,EAAA,oCAAoC,CAAG,MAAe,CAAC,AAWvD,EAAA,mBAAmB,CAAG,gBAAyB,CAAC,AAShD,EAAA,gBAAgB,CAAG,aAAsB,CAAC,AAW1C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAatC,EAAA,gBAAgB,CAAG,aAAsB,CAAC,AAW1C,EAAA,gCAAgC,CAC3C,6BAAsC,CAAC,AAW5B,EAAA,6CAA6C,CACxD,0CAAmD,CAAC,AAWzC,EAAA,iCAAiC,CAC5C,8BAAuC,CAW5B,AAX6B,EAW7B,8CAA8C,CACzD,2CAAoD,CAAC,AAY1C,EAAA,gBAAgB,CAAG,aAAsB,CAAC,AAW1C,EAAA,qBAAqB,CAAG,kBAA2B,CAAC,AAWpD,EAAA,qBAAqB,CAAG,kBAA2B,CAAC,AAWpD,EAAA,gBAAgB,CAAG,aAAsB,CAWzC,AAX0C,EAW1C,aAAa,CAAG,UAAmB,CAAC,AAYpC,EAAA,oBAAoB,CAAG,iBAA0B,CAWjD,AAXkD,EAWlD,gBAAgB,CAAG,aAAsB,CAAC,AAW1C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,gBAAgB,CAAG,aAAsB,CAAC,AAW1C,EAAA,kBAAkB,CAAG,eAAwB,CAW7C,AAX8C,EAW9C,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAK9C,EAAA,0BAA0B,CAAG,QAAiB,CAAC,AAK/C,EAAA,0BAA0B,CAAG,QAAiB,CAAC,AAK/C,EAAA,0BAA0B,CAAG,KAAc,CAAC,iCC/Q7C,EALT,OAAA,KAKuB,SALvB,CAAA,EAAA,aAAA,oCAMD,GADU,EAAA,SACV,KADwB,GAAd,CAAc,CAAd,cAAc,CAAA,EAAA,CAAA,EACxB,CAGD,cAHC,CAAA,iBAAmC,CAAA,AACnC,EAAA,YAAA,MAAA,CAAA,oBAAyC,CACzC,AADyC,EACzC,YAAA,IAAA,CAAA,kBAAqC,CAAA,+BCRpC,OAAA,cAAA,CAAA,EAAA,aAAA,iHAuCU,EAAA,oBAAoB,CAAG,CAAC,UAAU,CAAC,CAAC,AAKpC,EAAA,mBAAmB,CAAG,CAAC,WAAW,CAAE,SAAS,CAAC,CAAC,AAK/C,EAAA,YAAY,CAAG,UAAU,CAAC,AAK1B,EAAA,+BAA+B,CAAG,CAC7C,KAAK,CACL,WAAW,CACX,gBAAgB,CAChB,kBAAkB,CACV,CAAC,+BClDX,SAAS,EAAW,CAAO,CAAE,CAAK,EAChC,MAAM,iBAAiB,CAAC,IAAI,CAAE,GAE9B,IAAI,CAAC,IAAI,CAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CACjC,IAAI,CAAC,OAAO,CAAG,EACf,IAAI,CAAC,KAAK,CAAG,CACf,CAhBI,AAkBJ,EAlBI,CAAA,CAAA,QAkBC,QAAQ,CAAC,EAAY,OAE1B,EAAO,OAAO,CAAG,iCC4CjB,EAAO,OAAO,CAAG,CACf,YAzDF,CAyDe,QAzDN,AAAY,CAAI,EACvB,OAAgB,KAAT,AAA6B,GACtB,GAD4B,EACrC,AAA+B,GACtB,GAD4B,EACrC,AAA+B,GACtB,GAD4B,EACrC,AAA+B,GACtB,GAD4B,EACrC,AAA+B,GAC/B,GADqC,AAC7B,IAAQ,GAAQ,IACxB,CAD+B,EACvB,IAAQ,GAAQ,IACf,CADsB,IACA,CAA/B,GACS,EAD4B,IACrC,AAA+B,CACtC,CAHsD,CAmDpD,GAjD0C,CAH6B,QAczE,CAsCe,QAtCM,AAAZ,CAAgB,EACvB,OAAgB,KAAT,AAA6B,GAC/B,GADqC,AAC7B,IAAQ,GAAQ,IACf,CADsB,IAC/B,AAA+B,GACtB,GAD4B,EACrC,AAA+B,GACtB,GAD4B,EACrC,AAA+B,GACtB,GAD4B,AAHoB,EAI1B,AAA/B,GACA,GADqC,AAC7B,IAAQ,GAAQ,IACxB,CAD+B,EACvB,IAAQ,AADqB,GACb,IACxB,CAD+B,EACvB,IAD6B,AACrB,GAAQ,KAAO,AACtB,KAAsB,CAA/B,GACS,EAD4B,IACN,AAA/B,CACP,EA2BE,GA5B0C,AAFe,QAuB3D,CAOc,QAPL,AAAW,CAAI,EACtB,OAAO,GAAQ,KAAQ,GAAQ,GACjC,EAME,QAnBF,CAmBW,QAnBM,AAAR,CAAY,EACnB,OAAO,GAAQ,IAAQ,GAAQ,GACjC,CAkBA,iCCrEA,IAAI,EAAA,EAAA,CAAA,CAAA,QAEA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAEA,EAAc,EAAM,WAAW,CAC/B,EAAc,EAAM,WAAW,CAC/B,EAAa,EAAM,UAAU,CAC7B,EAAU,EAAM,OAAO,CAS3B,SAAS,EAAO,CAAG,EACjB,OAAO,EAAI,OAAO,CAAC,SAAU,KAC/B,CAUA,SAAS,EAA2B,CAAM,CAAE,CAAQ,EAClD,OAAO,EAAK,MAAM,CAChB,wCACA,EAAO,MAAM,CAAC,GACd,EAEJ,CA4HA,EAAO,OAAO,CAnHd,EAmHiB,OAnHR,AAAM,CAAM,EAWnB,IAAK,IAHD,EACA,EARA,GAAe,EACf,GAAa,EACb,GAAW,EACX,EAAY,CAAC,EACb,EAAS,EAAE,CACX,EAAQ,CAAC,EACT,EAAM,CAAC,EAIF,EAAI,EAAG,EAAI,EAAO,MAAM,CAAE,IAAK,AAGtC,GAFA,EAAO,EAAO,UAAU,CAAC,QAEP,IAAd,EAAyB,CAC3B,GACQ,IAAN,GACU,CAAC,IAAX,CACA,GAAU,KAAT,AAAa,GAAoB,EAAf,EAAM,CAAS,EAElC,AAFsC,MAAM,GAK9C,AALgD,GAC9C,AAIE,EAAY,GACA,CAAC,GADM,CACjB,GAAc,IAAQ,OACrB,GAAa,KAAT,AAAa,GAAqB,CAAC,CAAjB,EAAoB,CAAd,EACjC,EAAY,EAAO,KAAK,CAAC,EAAO,GAAG,WAAW,GAC9C,EAAQ,CAAC,OAET,MAAM,IAAI,EAAW,EAA2B,EAAQ,GAAI,EAEhE,MACE,CADK,EACD,IAAwB,IAAT,GAAiB,EAAQ,CAA1B,GAAmC,EAAW,EAAA,CAAK,CACnE,EADsE,CACzD,OACR,GAAI,EAAY,GAAO,CAC5B,GAAY,CAAC,GAAG,CAAZ,EACF,MAAM,IAAI,EAAW,EAA2B,EAAQ,GAAI,EAGhD,CAAC,KAAX,IAAc,GAAQ,CAC5B,MAAO,GAAI,EAAY,IAAS,EAAW,GACzC,GAAI,CAD4C,CAEjC,KAAT,AAAa,GADL,AAEV,EADoB,CACT,EACX,EAAM,AAFkB,GAGN,KAAT,AAAa,GACR,CAAC,CADY,GACvB,EAD2B,EACb,EAAQ,GAC1B,EAAa,GAAe,GACT,CAAC,GAAG,CAAd,IACT,GAAQ,OAEL,GAAa,KAAT,GAA8C,KAA7B,CAAmC,CAA5B,UAAU,CAAC,EAAI,GAChD,GAAW,OACN,GACL,CAAU,KAAT,AAAa,GAAmB,EAAd,GAAK,CAAS,EAAI,EAC1B,CAAC,EAD8B,EACzC,CAD2C,EACnB,GAAzB,EAAiB,CAAS,CAAC,CAEvB,AAAU,CAAC,CADf,EACkB,IACJ,CAAC,IAAT,IAAY,GAAM,EACtB,CAAS,CAAC,EAAU,CAAG,EACnB,EAAO,EAAO,KAAK,CAAC,EAAO,IAC3B,EAAO,KAAK,CAAC,EAAO,IAExB,CAAS,CAAC,EAAU,CAAG,GAGZ,KAAT,CAAe,GACjB,EAAO,IAAI,CAAC,GACZ,EAAY,CAAC,GAGf,OAAY,EACZ,EAAQ,EAAM,CAAC,OAEf,MAAM,IAAI,EAAW,EAA2B,EAAQ,GAAI,QAEzD,GAAa,KAAT,GAA0B,IAAT,EAAe,CACzC,GAAY,AAAR,CAAS,MAAG,SAEhB,GAAI,EACY,CAAC,IAAX,GADQ,CACM,GAAQ,OACrB,GAAc,CAAC,GAAG,CAAd,EACT,EAAM,OAEN,MAAM,IAAI,EAAW,EAA2B,EAAQ,GAAI,EAEhE,MACE,CADK,KACC,IAAI,EAAW,EAA2B,EAAQ,GAAI,GAKlE,QACgB,IAAd,GACA,GACW,CAAC,IAAX,GAAwB,CAAC,IAAT,GACR,KAAT,GACS,IAAT,EACA,AACA,MAAM,IAAI,EAAW,0BAA2B,GAalD,OAVc,CAAC,GAAG,CAAd,GACU,CAAC,IAAT,IAAY,GAAM,EACtB,CAAS,CAAC,EAAU,CAAG,EACnB,EAAO,EAAO,KAAK,CAAC,EAAO,IAC3B,EAAO,KAAK,CAAC,EAAO,IAExB,CAAS,CAAC,EAAU,CAAG,GAGzB,EAAO,IAAI,CAAC,GACL,CACT,kyBCrJA,IAAA,EAAA,EAAA,CAAA,CAAA,MAAuE,EACvE,EAAA,EAAA,CAAA,CAAA,QAkBA,EAAA,EA2BmB,CAAA,CAAA,QASnB,CArC6C,CAqC7C,EAAA,CAAA,CAAA,GATmB,IAS2C,CAC9D,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAA2B,CAAA,CAAA,IADuC,IAElE,EAAA,CAD2B,CAC3B,CAAA,CAAA,MAMA,EAAA,EANwD,AAMxD,CAAA,CAAA,IAA6E,IAC7E,EAAA,EAAA,CAAA,CAAA,IAG0B,IAE1B,EAAA,EAAA,CAAA,CAAA,GAAmD,KAuJnD,SAAS,EACP,CAAkD,EAElD,IAAM,EAAsB,CAAO,CAAC,GAHb,YAGE,CAA2B,CAAC,CAAC,AACtD,QAA4B,IAAxB,EAAmC,GAAF,IAAS,IAAI,CAAC,AAEnD,IAAM,CAFiB,CAED,QAAQ,CAAC,EAA+B,AAA3C,EAA6C,CAAC,CAAC,OAClE,AAAI,KAAK,CADmD,AAClD,GAAuB,IAAI,CAAC,AAE/B,CACT,CAAC,AA5JY,EAAA,CAyJY,CAAC,EAAE,KAEN,CAAC,IA3JI,CAAG,CAC5B,CADyB,CAEzB,EACA,EAAmB,GAD+B,CADX,GAEb,CAC1B,EAAgC,AAqChC,IAtCgB,CACqB,CAAC,IAAI,CAAC,EAAA,+BAA+B,CAAC,EACnE,EAAE,AACV,IAAM,EAAe,GAAc,CAAA,CAAE,CAAC,AAChC,EAAW,EADC,AAAa,AACD,IAAhB,IAAwB,EAAI,AAAb,EACvB,EAAO,CAAC,CAAJ,CAAiB,IAAI,EAAI,EAAA,CADuB,AACrB,CAAX,AAAY,AAAC,AADoB,QACZ,EAAE,CAAC,AAC9C,EAAO,EAAH,AAAgB,IAAI,EAAI,GAAG,CAAZ,AAAa,AAChC,EACF,EADM,AACO,IAAI,EAAI,EAAa,EAAtB,MAA8B,EAAT,AAAa,EAAQ,IAAI,CAAL,CAAS,WAAW,CAY3E,AAZ4E,GAIxC,CAAC,CAAC,GAAnC,EAAgB,EAAD,KAAQ,CAAC,GAAG,CAAC,EAC7B,GACS,CADL,GACS,GAAb,GACS,CADL,IACU,EACd,CADA,IAAI,AAEJ,GAAQ,CAAA,AAAJ,CAAI,EAAI,EAAI,CAAA,AAAE,CAAF,AAAG,CAGjB,EAAK,EAAD,MAAS,CAAC,GAAG,CAAC,CACpB,CADsB,EAClB,CACF,IAAM,EAAY,IAAI,GAAP,AAAU,CAAC,EAAM,EAAF,gBAAoB,CAAC,CAAC,AAGpD,IAAK,IAAM,KAF+B,GAAuB,EAAE,CAAC,AAG9D,EAAU,CADS,IAAI,EACd,IAH8C,CAGjC,CAAC,GAAG,CAAC,IAC7B,EAAU,KAFsC,CAAE,CAEzC,CADkC,CAAC,EAAE,CACxB,CAAC,GAAG,CAAC,EAAgB,EAAA,UAAF,EAAc,CAAC,CAAC,AAI7D,EAAO,CAAA,CAAH,CAAM,EAAU,OAAD,CAAS,CAAA,EAAG,EAAU,MAAM,CAAP,AAAO,CAAE,CAAC,AACnD,AAAC,KAAM,EAEP,AAEH,IAAM,EAAW,EAAa,IAAhB,AAAoB,CAAC,AAAE,CAAA,AAAD,EAAI,EAAA,AAAX,YAAuB,CAAA,CAAA,EAAI,EAAA,YAAY,CAAA,CAAA,CAAG,CAAC,AAAE,CAAD,CAAG,CAAC,AAC7E,MAAO,CAAA,EAAG,EAAQ,EAAA,EAAK,EAAL,AAAa,EAAG,EAAI,EAAP,AAAO,AAAG,EAAI,CAAE,AACjD,CAD+C,AAAG,AACjD,CAKY,AALX,EAKW,mBAAmB,CAAG,CACjC,CAD8B,CAE9B,EADc,GAGd,IAAM,CAFa,CAEA,CADH,EAAE,CACK,AAAK,EAAA,EAAZ,AAShB,MAToC,CAAC,MAAM,CAAC,AAAE,CAAD,EAAI,CAAG,AAAF,CAAC,EAAI,CAAC,OAGxD,AAAI,GAAc,GAAc,GAAG,CAArB,CAAyB,EAAa,AAAxB,EACnB,EAAA,IADwC,EAAa,EAAE,MACzC,CAAC,KAAK,CAAC,AAIvB,EAAA,cAAc,CAAC,KAAK,AAC7B,CAAC,AAD6B,CAQjB,AAPX,EAOW,gBAAgB,CAAG,CAC9B,CAD2B,CAE3B,KAEA,CAHgB,CACM,CAEC,CADd,EAAE,KAUX,AAT+B,EAA3B,AAA6B,OAAtB,EACT,KADgB,EACT,IAAY,EACd,CADS,EACL,GADkB,CAAC,GACZ,MAAY,MAAM,CAClC,CADoC,MAC7B,EAAQ,IAAI,CAAL,AAAM,GACf,GAAuB,EADA,CAAC,CAAC,MACQ,EAA7B,AAA+B,OAAxB,EAChB,KADuB,EAChB,EAAQ,EAEf,GAFc,GAAS,CAAC,AAElB,AAAI,CAFe,QAEN,CAAC,oCAAoC,CAAC,AAE7D,CAAC,AAF6D,CAE5D,AAQW,EAAA,gBAAgB,CAAG,CAC9B,CAD2B,CAE3B,EADU,AAEV,GADU,EAGV,IAAM,EAAU,EAAM,CAatB,EAfkC,AAEb,AAAR,EADP,EAAE,AACqB,CAAC,AAE1B,EAAmB,EAAA,YAAH,IAAmB,CAAC,GAAG,EAAE,CAC3C,EAAK,EAAD,UAAa,CAAC,EAAA,cAAc,CAAC,eAAe,CAAE,EAAM,GAAD,CAAK,CAAC,CAAC,AAC9D,EAAK,EAAD,UAAa,CAAC,EAAA,cAAc,CAAC,kBAAkB,CAAE,IAGnD,EAAmB,CAHuC,CAAC,AAGxC,CAHyC,WAG5C,IAAmB,CAAC,MAAM,EAC5C,AAD8C,EACzC,EAAD,UAAa,CAAC,EAAA,eAAe,CAAE,EAAM,GAAD,CAAK,CAAC,CAAC,AAGjD,EAAK,EAAD,OAAU,CAAC,CAAE,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,SAAE,CAAO,CAAE,CAAC,CAAC,AACxD,EAAK,CAD+C,CAChD,aAAgB,CAAC,EACvB,CAAC,CAMY,AANX,CAD0B,CAOf,AAPgB,CAAC,+BAOe,CAAG,CAC9C,CAD2C,CAE3C,KADwB,AAGxB,IAAM,CAFgB,CAEP,CADT,CAC0B,CADxB,CACI,AAA4B,KAAD,EAAQ,CAAC,AACjC,CADkC,GAAlB,AACZ,EAAE,EAAjB,CAOJ,GALI,CAFwB,AAExB,CAFM,CAEN,EAAA,YAAA,AAAY,EAAC,EAAQ,KAAD,EAAQ,CAAC,CAC/B,CADiC,AACvB,CAAC,EAAA,gCAAgC,CAAC,CAAG,EAE/C,CAAU,CAAC,EAF0C,AAE1C,CAF2C,4CAEE,CAAC,CAAG,EAEhE,CAAC,CAAC,AASW,EAAA,AAXyD,CAAC,gCAWzB,CAAG,CAC/C,CAD4C,CAE5C,KAEA,CAHyB,GAGnB,CAFgB,CAEP,CADT,CAC0B,CADxB,CACiC,AAA7B,MAA4B,CAAQ,CACjC,AADkC,CAAC,GAC/B,AADY,EACV,EAAjB,EAOJ,EALI,CAFwB,AAExB,CAFM,CAEN,EAAA,YAAA,AAAY,EAAC,EAAS,MAAD,CAAQ,CAAC,CAChC,CADkC,AACxB,CAAC,EAAA,iCAAiC,CAAC,CAAG,EAEhD,CAAU,CAAC,EAF2C,AAE3C,CAF4C,6CAEE,CAAC,CAAG,EAEjE,CAAC,CAAC,AAcW,EAAA,AAhB0D,CAAC,WAgB/C,CACvB,AAD0B,EAAH,EAGvB,GAFkD,CAE5C,CADG,CACQ,CADN,AACa,CAAC,GAGzB,CAHc,cAA6B,CAAC,CAE5C,AAF6C,MAEtC,CAAC,CAAC,GAAyB,KAAjB,KAA2B,CAAC,EAAxB,CACvB,CAAC,CAAC,AAmEW,EAAA,GApEkB,WAoEJ,CAAG,CAC5B,CADyB,CAEzB,EACA,EAFkB,GAalB,AAZ0C,IAStC,EACA,CA4EJ,AArF6B,CAUzB,CAHJ,CAII,CAJF,CACkB,AACF,AAED,CAHI,AACF,EAGnB,EADsB,CAAC,AACA,EADT,CADmB,CAAC,IAEH,EAA3B,OAAO,EAAsB,CAC/B,GAAI,CACF,AAFc,IAER,EAAmB,AAzE/B,SACE,AADO,CACU,EAKjB,EAmE0B,CAnEpB,OAmE6C,GAlEjD,CAAQ,KAPmB,KAQ3B,CAAQ,MACR,CAAI,CACJ,UAAQ,UACR,CAAQ,QACR,CAAM,UACN,CAAQ,MACR,CAAI,MACJ,CAAI,QACJ,CAAM,MACN,CAAI,CACL,CAAG,IAAI,GAAG,CAAC,GAEN,EAMF,CACF,GATmB,CAER,AAFS,CAAC,GASb,CAAE,EACV,MADkB,EACV,CACN,GAA4B,GAAG,CAAC,CAAC,AAAzB,CAAI,CAAQ,CAAC,CAAC,CAAC,CAAW,EAAS,KAAK,CAAC,AAAP,CAAQ,CAAE,CAAC,CAAC,CAAC,CAAC,AAAE,CAAD,CAC3D,IAAI,CAAE,CAD8D,CAEpE,EADU,IACJ,CAAE,EACR,IADc,IACN,CAAE,EACV,IAAI,CAAE,CADY,AACZ,EAAG,GAAY,EAAE,CAAA,EAAN,AAAS,GAAU,EAAE,CAAN,AAAM,CAAE,CACxC,IAAI,CAAE,EACN,EADU,IACJ,CAAE,EACR,IADc,AACV,CAAE,EACP,CASD,AATE,CADU,KAEC,EAAE,EAAE,CAAb,IACF,AADM,EACE,IAAI,CAAL,AAAQ,MAAM,CAAC,EAAI,CAAC,CAAC,CAE1B,GAAY,CAAA,CAAQ,EAAE,CACxB,AADU,EACF,IAAI,CAAG,AAAR,CAAQ,EAAG,kBAAkB,CAAC,GAAS,CAAA,EAAI,EAAL,CAAC,eAAsB,CAClE,GACD,CAAE,AAAF,CAAG,CAEC,CACT,CAAC,AAJa,CACT,AA6BiD,GAChD,CA5BU,CAAC,AA4BK,EADuC,AAEvD,CAFwD,CAAC,AAE9C,EAAiB,IAApB,CADK,GACuB,EAAI,AADR,CAAC,EACU,CAC3C,AAD4C,AAC7C,AAD4B,MACpB,CAAC,CAAE,CACV,GAAa,EACb,EAAO,AADU,CAAC,EAAR,CACJ,GAAQ,CACZ,iGAAiG,CACjG,CAAC,CACF,CAAC,AAKF,EAHA,AAGW,GAHK,CACd,EAEM,EAFF,CAAE,GACP,CAFY,AAEX,AACsB,AAAC,GAFV,CAEc,EAAI,GAAG,CAGtC,AAHuC,AACtC,EAEQ,CAAA,EAAG,CAAN,CAAoB,QAAQ,EAAI,CAAb,MAAoB,CAAA,EAAA,EAAK,EAAc,IAAI,CAAA,CAAE,CAAC,IAAR,CAC1C,IAAjB,GACF,EAD4B,EAAE,EACxB,CAAC,EADO,IACD,CAAC,EAAe,GAEhC,KAAM,GAFwB,AAEpB,CAFkC,CAAC,CAAC,IAE7B,MAAY,EAAI,CAAD,EAAI,CACnC,CADqC,CACrB,CACd,QAAQ,CAAE,CADC,CACO,KAAD,GAAS,CAC1B,QAAQ,CACsB,QAAQ,EAApC,OAAO,EAAQ,KAAD,GAAS,EAAiB,EAAQ,KAAD,GAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CACpE,EAAQ,KAAD,GAAS,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAC7B,EAAQ,KAAD,GAAS,CACtB,IAAI,CAAE,CAAA,EAAG,EAAQ,KAAD,GAAS,EAAI,EAAE,CAAA,EAAG,EAAQ,KAAD,CAAO,EAAI,EAAE,CAAA,CAAE,CACzD,CACoB,AADnB,EACqB,EAAE,CAArB,EAAQ,IAAI,CAAL,EACT,EAAc,IAAI,CAAG,MAAR,AAAc,CAAC,EAAQ,KAAD,AAAK,CAAC,CAAC,CAExC,EAAQ,KAAD,GAAS,EAAI,EAAQ,KAAD,GAAC,AAAQ,EAAE,EACxC,EAAc,IAAI,CAAG,CAAA,EAAG,EAAQ,CAAnB,IAAkB,GAAS,CAAA,CAAA,EAAI,EAAQ,KAAD,GAAS,CAAA,CAAA,AAAE,CAAC,CAEjE,EAAW,EAAQ,IAAX,CAAU,GAAS,CAAC,AAC5B,EAAS,EAAQ,EAAX,GAAU,CAAO,CAAC,KACH,IAAjB,GACF,EAD4B,EAAE,EACxB,CAAC,EADO,IACD,CAAC,EAAe,OAE1B,CAML,GAR6B,CAQvB,AARqC,CAAC,CAS1C,AAT2C,CAG7C,EAAgB,GAKF,GALQ,CAAC,GAMR,CANF,EAAgB,CAC3B,CAAE,QAAQ,CAAE,EAAQ,IAAI,CAAG,AAAR,AAAM,CAAC,MAAQ,CAAG,AAAF,CAAC,KAAU,CAAE,CAChD,CAD8C,CACvC,CACR,CAGe,AAHd,IAGkB,EACjB,CAAsB,CAAvB,GAA2B,IAAZ,IAAD,AAAK,CACf,CAAA,EAAG,EAAc,QAAQ,CAAA,EAAT,AAAY,EAAc,IAAI,CAAA,CAAE,CAChD,EAAc,EAD2B,MACnB,AAAR,CAAS,CAAC,AAI9B,CAJmB,EACnB,EAAS,CAAA,EAAG,CAAN,CAAoB,QAAQ,EAAI,CAAb,MAAoB,CAAA,EAAA,EAAK,EAAQ,CAAE,CAGxD,AAHyD,CAGxD,CADL,EAF0D,AAE9C,EAAoB,GACnB,CADL,CAAuB,GAAC,AAAQ,CAAC,EACxB,EAAc,IAAI,CACjC,CADmC,EAC/B,CAEF,EAAW,AAHe,AAER,IAAI,EACd,CADiB,CAAC,CACN,CADoB,IAAI,CAAE,GACzB,GAD+B,AAAb,CAAc,CAAC,GACzB,EAAI,GAAG,CACpC,AADqC,AACtC,KAAO,CACN,EAAW,GAAG,CACf,AADgB,CAWrB,AARC,CAHa,KAWP,QAAE,MAAM,KAAE,EAAU,MAAF,AAAQ,CAJlB,EAAc,MAAM,CAC/B,EAAc,EADU,IACJ,CAAC,IAAR,OAAmB,EAAE,CAClC,KAAK,CAAC,cAEyB,aAAa,AAAE,CAAU,CAAE,AAChE,CADiE,AAChE,CAAC,AAMW,EAAA,IAPiD,cAO/B,CAAG,AAAC,EAAJ,EAC7B,GADiD,AAC7C,CAAC,CADuD,CAE1D,CAF4D,IAClD,EAAE,AACL,EAGT,EAEA,CALc,CAGR,AAHS,EAGF,EAAH,KAAU,EACpB,KAD2B,CAAC,AACZ,QAAQ,GAAjB,GAA+B,CAA3B,OAAmC,GAAjB,GAAqB,CAAjB,AAAkB,KAAK,CAAC,OAAO,CAAC,EACnE,CAAC,CAEY,AAFX,EAEW,CAH6D,CAAC,CAAC,CAAC,kBAG1C,CAAG,AACpC,EADiC,EAMjC,GAAI,EAAe,KAFlB,EAC4C,CAClB,CADoB,CAChB,EAAe,AAA5B,IAAgC,AAgBlD,CAfE,CADkD,KAC3C,CADoC,AAClC,QAAQ,CAAE,EAAe,QAAQ,CAAE,GAAX,CAAe,CAAE,EAAe,IAAI,CAAE,CAAC,AAE1E,IAAM,EAAU,AAFkD,EAEnC,GAAlB,CAAsB,EAAE,KAAK,CAAZ,AAAa,uBAAuB,CAAC,EAAI,IAAI,CAAC,AACtE,EACJ,EAAe,IADH,IACW,EAAK,CAAY,CAA1B,AAAa,GAAiB,CAAC,CAAV,AAAW,GAAC,WAAW,CAAC,AAAE,CAAD,AAAQ,CAAC,EAAC,AAAC,CAAC,CAAC,AACvE,EAAO,EAAH,AAAkB,IAAI,CAAC,AAS/B,OATyB,AACpB,IAGD,AAHK,EAAE,AACL,EAEE,CAFS,CAAO,CAAC,CAAC,CAAC,AAAd,CAEF,CAFkB,AAEX,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,AAEI,QAAQ,CAAC,CAAC,CAAtC,EAAe,QAAQ,CAAgB,GAAzB,EAA8B,CAAC,AAAE,CAAD,GAAK,CAAC,CAGxD,UAAE,OAAU,CAAF,AAAM,CAAE,AAC3B,CAD4B,AAC3B,CADwB,AACvB,AAQW,EAAA,4BAA4B,CAAG,CAC1C,CADuC,CAEvC,EAOA,EACA,GAFC,EAID,GAXoC,CAW9B,EAAW,EAAQ,CAHS,GAGpB,CAAU,GAAS,CAAC,AAC5B,EAAO,AAsDb,EAtDU,AAAW,IAHkB,AAGd,CACnB,AADc,AAAM,CAFd,CAGG,CAHD,CAGgB,EAAlB,IAAwB,EAAI,IAAX,CAAgB,CAAC,AACxC,EAAmB,EAAgB,GACnC,EAAW,CAD8B,CACf,AADgB,CAAC,EACpC,EADS,CAAkB,CACD,EAAI,CAAA,CAAE,CAAd,AAAsC,AAC/D,CADgE,CACpD,CAAO,CAAC,KAAX,OAAuB,CAAC,CAAC,AAClC,EAAU,CAAA,EAAA,EAAA,AAAH,cAAG,AAAc,EAC5B,EACA,EACA,CAAA,EAAG,EADI,AACI,KAFG,AAEJ,IAAU,CAAA,CAAA,CAAG,CACvB,EAAQ,KAAD,cAAoB,CAC5B,CAAC,AAEI,EAA4B,CAChC,CAAC,EAAA,OADgB,MACH,CAAC,CAAE,EACjB,CAAC,EAAA,EADuB,cACP,CAAC,CAAE,EACpB,CAAC,EAAA,CADyB,eACT,CAAC,CAAE,EAAe,IAAI,EAAI,GAAG,CAC9C,CAAC,CADiC,CACjC,kBAAkB,CAAC,CAAE,EACtB,CAAC,EAAA,GAD6B,WACf,CAAC,CAAE,EAAQ,IAAI,CAAL,CAAS,CAAA,EAAG,EAAQ,CAAA,EAAI,EAAI,CAAR,AAAU,CAAF,AACtD,CAAC,AAEI,EAA4B,CAEhC,CAAC,EAAA,OAFgB,iBAEQ,CAAC,CAAE,EAC5B,CAAC,EAAA,WAD2C,QACxB,CAAC,CAAE,EACvB,CAAC,EAAA,GAD8B,aACd,CAAC,CAAE,MAAM,CAAC,GAC3B,CAD+B,AAC9B,CAD+B,CAC/B,aAAa,CAAC,CAAE,EACjB,CAAC,EAAA,EADuB,sBACC,CAAC,CAAE,EAM7B,CAcD,AAdE,MANqC,CASnC,IAAW,EAAL,EACR,CAAa,CAAC,EAAA,QADe,EAAE,uBACgB,CAAC,CAAG,CAAA,CAAM,CAAC,AAGxD,GAAkC,IACpC,CAAa,CAAC,EAAA,CAD+B,EAAE,gBAAf,WACY,CAAC,CAAG,EAAiB,EAAS,CAAC,CAAC,KAE5D,IAAd,CAF8D,GAGhE,CADyB,AACZ,CAAC,CADa,CACb,CADH,mBACuB,CAAC,CAAG,CAAA,CAAS,CAAC,AAG1C,GACN,KAAK,EAAA,MADiB,EAAE,QACH,CAAC,MAAM,CAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAe,EAAQ,KAAD,IAAT,KAAwB,CAAC,AAC7D,CAD8D,KACzD,EAAA,gBAAgB,CAAC,GAAG,CACvB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAe,EAAQ,KAAD,IAAT,KAAwB,CAAC,CAAC,AAC/D,AAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAe,EAAe,EAAQ,KAAD,EAAxB,EAAe,KAAwB,CAAC,AAC5E,CAD6E,AAC5E,CAAC,AAMW,EAAA,kCAAkC,CAAG,AAChD,EAD6C,EAG7C,IAAM,EAA+B,CAAA,CAAE,CAAC,AAIxC,CAN0B,EACd,EAAE,EAEd,CAAgB,CAAC,EAAA,AADK,aAKtB,GAJiC,CAAC,CAAG,CAAc,CAAC,EAAA,gBAAgB,CAAC,CAAC,AACtE,CAAgB,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAc,CAAC,EAAA,kBAAkB,CAAC,CAAC,AAEnE,CACT,CAAC,CAAC,AAMW,EAAA,WAPY,CAAC,aAOY,CAAG,CACvC,CADoC,CAEpC,EADwB,GAGpB,IAAI,AACN,CAHoB,AAGV,CAAC,AADH,CADJ,CAEO,CAFL,WASR,IAP6B,CAAC,CAAG,EACJ,EADQ,CAAC,GACH,EAAE,CAA/B,EAAK,EAAD,SAAY,EAAE,CACpB,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,EAAA,0BAA0B,CAAC,AAE5D,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,EAAA,0BAA0B,CAAC,AAGlE,CAAC,CAAC,AAMF,IAAM,EAAmB,AACvB,IAEA,IAAM,CAFuB,CAEG,CADJ,EAAE,CAFV,EAGkB,CAAC,GAAW,GAA7B,GAA2B,CAAC,IAAY,EAAE,CAAC,AAChE,IAAK,IAAM,IAAI,CAAI,EAAA,oBAAoB,CAAE,AACvC,GAAI,EAAgB,QAAQ,CAAC,GAC3B,CADiB,AAAc,CAAC,EAAE,GAC3B,EAAA,oCAAoC,CAAC,AAGhD,IAAK,IAAM,IAAI,CAAI,EAAA,mBAAmB,CAAE,AACtC,GAAI,EAAgB,QAAQ,CAAC,GAC3B,CADiB,AAAc,CAAC,EAAE,GAC3B,EAAA,mCAAmC,AAIhD,CAJiD,AAIhD,CAAC,AAmFF,SAAS,EACP,CAAkB,CAClB,CAAc,EAEd,IAAM,EAAQ,EAJQ,AAIG,CAAd,IAAmB,CAAC,EAAP,CAAU,CAAC,CAAC,AAKpC,GAAqB,CAAC,EAAE,CAApB,EAAM,GAAD,GAAO,OACd,AAAc,MAAM,EAAE,CAAlB,EACK,CAAE,EADF,EACM,CAAE,CAAK,CAAC,CAAC,CAAC,CAAE,IAAI,CAAE,IAAI,CAAE,CAAC,AAG1B,OAAO,EAAE,CAAnB,EACK,CAAE,EADF,EACM,CAAE,CAAK,CAAC,CAAC,CAAC,CAAE,IAAI,CAAE,KAAK,CAAE,CAAC,AAGlC,CAAE,IAAI,CAAE,CAAK,CAAC,CAAC,CAAC,CAAE,CAM3B,AAN4B,GAMP,CAAC,EAAE,CAApB,EAAM,GAAD,GAAO,CACd,MAAO,CACL,IAAI,CAAE,CAAK,CAAC,CAAC,CAAC,CACd,IAAI,CAAE,CAAK,CAAC,CAAC,CAAC,CACf,CAAC,AAMJ,GAAI,CAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,AAC5B,GAAI,CAAK,CAAC,EAAM,GAAD,GAAO,CAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAE,CACzC,GAAc,MAAM,EAAE,CAAlB,EACF,GADO,GACA,CAAE,IAAI,CAAE,EAAY,IAAI,CAAE,GAAR,CAAY,CAAE,CAGzC,AAH0C,GAG5B,OAAO,EAAE,CAAnB,EACF,GADO,GACA,CAAE,IAAI,CAAE,EAAY,IAAI,CAAE,GAAR,EAAa,CAAE,CAAC,AAE5C,KAAM,GAAI,CAAK,CAAC,EAAM,GAAD,GAAO,CAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC9C,CADgD,KACzC,CACL,IAAI,CAAE,EAAM,GAAD,EAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAClC,IAAI,CAAE,CAAK,CAAC,EAAM,GAAD,GAAO,CAAG,CAAC,CAAC,CAC9B,CAAC,AAKN,AAJG,MAII,CAAE,IAAI,CAAE,CAAU,CAC3B,AAD6B,CAAC,AAC7B,AAsED,OAvE2B,EAuEX,EACd,CAAwB,EAExB,IAAM,EAAkB,EAAQ,KAAD,EAAQ,CAAC,CAHJ,EAGf,MAA+B,CAAC,AACrD,CADmD,EAC/C,GACF,IAAK,IAAM,IADM,CACD,AAAI,CADD,CACsB,GACvC,GAAI,EAAM,GAAG,AAAJ,CACP,CADa,EADuC,CAAC,CAAE,CAAnB,CAE7B,EAAsB,EAAM,GAAD,AAAI,CAAC,CAAC,AAE3C,AAGH,IAAM,EAAgB,EAAQ,IALI,CAKL,EAAQ,CAAC,CAAnB,gBAAoC,CAAC,CAAC,AACzD,GAAI,EAAe,CACjB,IAAI,EAOJ,GAN6B,CAFd,OAEsB,EAAjC,AAAmC,CADnB,CAAC,KACV,EACT,EAAmB,EACV,KAAK,CAAC,CAFO,IACU,CAAC,AAAjB,CACM,CAAC,KACvB,EAAmB,CAAa,CAAC,EAAC,AAAC,CAAC,CADA,AAIN,CAJO,EAAE,KACvB,AAGsB,EAApC,AAAsC,OAA/B,EAET,OAAO,EADP,EAAmB,EAAiB,CADX,IACgB,CAAC,GAAG,CAAC,CAAC,CAAC,AAAhC,CAAiC,CAAC,AAAf,CACP,CAAC,EADyB,EAAE,CAAC,CAG5D,AAED,IAAM,EAAS,EAAQ,EAAX,AAJqC,CAAC,CAAC,CAI7B,CAAO,CAAC,aAAa,CAAC,OAC5C,AAAI,GAIG,GAJG,CAIC,AACb,CALc,AAIA,AACb,AAED,SAAS,EAAsB,CAAa,EAG1C,GAAI,CACF,GAAM,CAAE,QAJkB,AAIV,CAAE,CAAO,CAAE,CAAG,IAAI,GAAG,CAAC,CAAA,OAAA,EAAU,EAAK,CAAE,CAAC,CAExD,AAFyD,AAAJ,GAEjD,EAAQ,KAAD,KAAW,CAAC,GAAG,CAAC,EAAI,EAAQ,KAAD,GAAS,CAAC,GAAG,CAAC,CAClD,CADoD,MAC7C,EAAQ,KAAD,AAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,AAG9B,OAAO,EACP,AAAD,KADe,AACR,CADS,AAEf,OAAO,EACR,AACH,CAAC,AAxPY,EAAA,AAsPG,CAAC,qCAtPkC,CAAG,CACpD,CADiD,CAEjD,KAEA,CAHyB,EAGnB,QAF4B,EACtB,EAAE,AACN,CAAU,CAAE,eAAa,CAqCjC,YArCmC,CAAW,QAAE,CAAM,CAAE,CAAG,EACrD,EAA4B,CAAA,CAAE,CAAC,AAC/B,CAF6D,CAE9B,AAF+B,CAE/B,CAAE,CAAC,AAMxC,GAJkB,AAHC,IAGG,EAAlB,AAAoB,EAFF,EAGpB,CAAgB,CAAC,EAAA,EADL,4BACmC,CAAC,CAAG,CAAA,CAAU,CAAC,AAG5D,EAAQ,CACV,GADQ,AACF,CAAE,eAAa,YAAE,CAAU,CAAE,CAAG,EACtC,CAAa,CAAC,EAAA,AAD8B,CAAC,eACf,CAAC,CAAG,EAClC,CAAa,CAAC,EAAA,OADiC,CAAC,UAChB,CAAC,CAAG,EAGpC,CAAgB,CAAC,EAAA,IAH6B,CAAC,oBAGL,CAAC,CAAG,EAC9C,CAAgB,CAAC,EAAA,OAD0C,CAAC,cACrB,CAAC,CAAG,EAC3C,CAAgB,CAAC,EAAA,IADoC,CAAC,wBACR,CAAC,CAAG,EAAS,MAAD,KAAY,CAAC,AACxE,AAYD,OAXA,CAAA,EAAA,EAAA,iCAAA,AAAiC,EAAC,EAAU,GAExC,GAFsC,CAGxC,CAAa,CAAC,EAAA,EAHyC,AAE3C,CAF4C,CAAC,AAE3C,iBACqB,CAAC,CAAG,EACvC,CAAa,CAAC,EAAA,IADmC,CAAC,SACtB,CAAC,gBAAgB,CAAC,CAAG,CAC/C,GAAiB,EAAA,CAAE,CACpB,AAAC,MADa,KACF,EAAE,CAAC,CAGlB,GAAA,EAAA,yBAAA,AAAyB,EAAC,EAAa,GAE/B,GACN,GAHmC,EAG9B,EAH6C,AAG7C,CAH8C,CAAC,IAE9B,EAAE,QACH,CAAC,MAAM,CAC1B,OAAO,CACT,MAAK,EAAA,OADoB,CAAC,QACL,CAAC,GAAG,CACvB,OAAO,EACV,AAED,OAAO,IAHiB,CAAC,CAGZ,CAAC,MAAM,CAAC,EAAe,EACtC,CAAC,CAMY,AANX,EAMW,KAPuB,KAAkB,CAAC,CAAC,gCAOC,CAAG,AAC1D,EADuD,EAGvD,IAAM,EAA+B,CAAA,CAAE,CAMvC,AANwC,CAFd,EACd,EAAE,EAEd,CAAgB,CAAC,EAAA,AADK,kBACa,CAAC,CAAG,CAAc,CAAC,CAMtD,CANsD,kBAAkB,CAAC,CAAC,AAC1E,CAAgB,CAAC,EAAA,qBAAqB,CAAC,CACrC,CAAc,CAAC,EAAA,qBAAqB,CAAC,CAAC,AACxC,CAAgB,CAAC,EAAA,gBAAgB,CAAC,CAAG,CAAc,CAAC,EAAA,gBAAgB,CAAC,CAAC,AAE/D,CACT,CAAC,CAEY,AAFX,EAEW,WAHY,CAAC,sCAGqC,CAAG,AAChE,EAD6D,EAG7D,IAAM,EAA+B,CAAA,CAAE,CAAC,AAWxC,CAb0B,EACd,EAAE,EAGV,CAAc,CAAC,EAFG,AAEH,6BAA6B,AAUhD,CAViD,EAAE,CACjD,CAAgB,CAAC,EAAA,6BAA6B,CAAC,CAC7C,CAAc,CAAC,EAAA,8BAA6B,AAAC,CAAC,CAG9C,CAAc,CAAC,EAAA,8BAA8B,CAAC,EAChD,AADkD,EAClC,CAAC,EAAA,8BAA8B,CAAC,CAC9C,CAAc,CAAC,EAAA,+BAA8B,AAAC,CAAC,CAE5C,CACT,CAAC,CAAC,AA6HF,EAAA,WA9HyB,CAAC,UA8H1B,CAAA,EA6Fa,EAAA,mBA5DZ,SA4DwC,CAAG,CAC1C,CADuC,CAEvC,EAOA,GARwB,EAUxB,AAHC,CACiB,EACN,CAWR,CAXU,CAYV,EAXE,SAUuB,CAAC,CAT5B,AAU2B,CAAC,AAVnB,CAiGX,+BAhGE,CAA8B,gBAC9B,CAAc,CACd,kBAAgB,YAChB,CAAU,CACX,CAAG,EACE,KADK,CAAC,GACJ,CAAO,aAAE,CAAW,QAAE,CAAM,CAAE,CAAG,EACnC,KAD0C,CAAC,AACzC,CAAI,CAAE,YAAY,CAAE,CAAS,CAAE,iBAAiB,CAAE,CAAG,CAAE,CAAG,EAC5D,EAAY,AA9DpB,GA6D2E,CAAC,GAC3D,EA9DR,AACP,CAA2B,CAC3B,CAAwB,CACxB,CAAkB,EAElB,GAAI,CACF,GAAI,EAAQ,CAwD8B,IAxD/B,EAAQ,CAAC,EANW,EAMP,CACtB,CADwB,MACjB,IAAI,GAAG,CACZ,EAAQ,GAAG,EAAJ,AAAQ,GAAG,CAClB,CAAA,EAAG,EAAS,GAAA,EAAM,EAAN,AAAc,KAAD,EAAQ,CAAC,IAAI,CAAA,CAAE,CACzC,AACI,CADH,CAEF,IAAM,EAAkB,IAAI,GAAG,CAC7B,EAAQ,GAAG,AADQ,EACJ,AAAR,GAAW,CAElB,CADA,AACA,EAAG,EAAS,OAAA,KAAA,CAAc,CAC3B,CAAC,AAGF,MAAO,CACL,QAAQ,CAAE,EAAgB,QAAQ,CAClC,IADyB,EACnB,CAAE,EAAgB,MAAM,CAC9B,MADuB,EACf,CAAE,QARqE,GAU7E,OAAO,EAAgB,QAAQ,CAAG,EAAgB,EAA5B,IAAkC,AAC1D,CAD2D,AAC1D,CACF,CAAC,AACH,CACF,AAAC,GAJuD,GAIhD,CAAC,CAAE,CAIV,OADA,EAAO,IAAD,GAAQ,CAAC,gCAAgC,CAAE,CAAC,CAAC,CAAC,AAC7C,CAAA,CAAE,CAAC,AACX,AACH,CAAC,CA4B8C,EAAW,EAAS,GAIjE,EAJsD,AAAS,CAAQ,AAInE,CAJoE,CAAC,EAIhD,EAAA,UAAL,MAAqB,CAAC,GAAG,CAAE,CAE7C,IAAM,EAAmB,EAAgB,GACnC,EAAgB,AAxL1B,CAuLmD,CAAC,CAAC,IAA3B,CAAkB,CAtL1C,AADO,CACiB,CACxB,AAsLqB,CAtLM,EAE3B,EAoLwC,EApLlC,EAAkB,EAAQ,GAJT,EAIQ,EAAQ,CAAC,GAAnB,MAA+B,CAAC,AACrD,CADmD,EAC/C,GACF,IAAK,IAAM,IADM,CACD,AAAI,CADD,CACsB,GACvC,GAAI,EAAM,GAAD,CAAK,CACZ,CADc,CADsC,CAAC,CAAE,CAAnB,EAE7B,EAAgB,EAAM,GAAD,CAAK,CAAE,EAAM,GAAD,CAAlB,CAAwB,CAAC,CAAC,AAEnD,AAGH,IAAM,EAAiB,EAAQ,KAAD,EAAQ,CAAC,EAAnB,gBAAqC,CAAC,CAAC,AAC3D,GAA8B,QAAQ,EAAlC,AAAoC,OAA7B,QAC2C,AAApD,AAAI,MADmB,EACqC,EAAE,OAAnD,EAAQ,KAAD,EAAQ,CAAC,mBAAmB,CAAC,CACtC,EACL,EACA,EAAQ,KAAD,EAAQ,CAAC,CAFI,CACN,iBACqB,CAAC,CACrC,CAAC,AAGA,KAAK,CAAC,OAAO,CAAC,EAAQ,KAAD,EAAQ,CAAC,mBAAmB,CAAC,CAAC,CAC9C,CADgD,CAErD,EACA,EAAQ,KAAD,EAAQ,CAAC,CAFI,CACN,iBACqB,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC,AAGG,EAAgB,GAClB,GACL,KAAK,CAAC,CAFgB,CAAe,CAAC,CAAC,GAE1B,CAAC,IACe,QAAQ,EADT,AAC5B,CAD6B,MACtB,CAAc,CAAC,CAAC,CAAC,EACxB,CAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAG,CAAC,EAC5B,KACoD,AAApD,QAA4D,EAAxD,AAA0D,OAAnD,EAAQ,KAAD,EAAQ,CAAC,mBAAmB,CAAC,CACtC,EACL,CAAc,CAAC,CAAC,CAAC,CACjB,EAAQ,KAAD,CAFa,CAEL,CAAC,mBAAmB,CAAC,CACrC,CAAC,AAGA,KAAK,CAAC,OAAO,CAAC,EAAQ,KAAD,EAAQ,CAAC,mBAAmB,CAAC,CAAC,CAC9C,CADgD,CAErD,CAAc,CAAC,CAAC,CAAC,CACjB,EAAQ,KAAD,CAFa,CAEL,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC,AAGG,EAAgB,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,AAG5C,IAAM,EAAO,CAHW,CAGd,AAAW,KAAD,EAAQ,CAAC,IAAO,CAAC,CAAF,KACnC,AAAoB,QAAQ,EAAxB,OAAO,GAAqB,CAAjB,CAAsB,EAAD,IAAO,CAAG,CAAC,CACtC,CADwC,CACxB,EAAM,EAAF,CAGtB,IAAI,AACb,CAAC,AADa,CA+H6B,AAlID,CAAC,CAAjB,AAkI0B,AAlIR,GAmIlC,EADwC,AAClB,EAAuB,EADM,CAAC,AAG1D,CAH2D,CAG3C,CACd,CAAC,AAHuD,CAAC,CAGxD,AAHyD,MAAnC,CAEZ,IAFqC,aAGvB,CAAC,CAAE,EAC5B,CAAC,EAAA,WAD2C,IAC5B,CAAC,CAAE,EACnB,CAAC,EAAA,IAD2B,eACR,CAAC,CAAE,GAAe,IAAI,CAC1C,CAAC,EAAA,EADmC,uBACV,CAAC,CAAE,EAAQ,KAAD,CAAO,CAAC,aAAa,CACzD,CAAC,EAAA,sBAAsB,CAAC,CAAE,EAAQ,KAAD,CAAO,CAAC,UAAU,CACnD,CAAC,EAAA,6BAA6B,CAAC,CAAE,EAAQ,KAAD,MAAY,CACpD,CAAC,EAAA,wBAAwB,CAAC,CAAE,EAC7B,CAAC,AAEwB,IAAI,EAA1B,AAHmC,AAGP,EAAlB,OAAD,CAAS,GACpB,CAAa,CAAC,EAAA,aAAa,CAAC,CAAG,EAAU,OAAD,CAAC,AAAQ,CAAC,CAGhD,EAAU,MAAM,CAAP,CAAS,AAEpB,EAAa,CAAC,EAAA,cAAc,CAAC,CAAG,EAAU,MAAM,CAAP,AAAQ,KAAK,CAAC,EAAC,CAAC,CAAC,AAGjC,IAAI,EAA3B,AAA6B,IAC/B,CAAa,CAAC,EAAA,WADO,QACY,CAAC,CAAG,CAAA,CAAmB,CAAC,AAGvD,GAAe,IAAI,EAAI,IAAV,AAAc,EAAE,CAC/B,CAAa,CAAC,EAAA,gBAAgB,CAAC,CAAG,MAAM,CAAC,EAAc,KAAI,CAAC,CAAC,AAI3D,IAJoD,AAIzC,EAAL,CACR,EAAa,CAAC,EAAA,QADe,EAAE,uBACgB,CAAC,CAAG,CAAA,CAAM,CAAC,AAGxD,GAAkC,IACpC,CAAa,CAAC,EAAA,CAD+B,EAAE,gBAAf,WACY,CAAC,CAC3C,EAAiB,EAAS,CAAC,CAAC,AAEjC,AAED,GAAI,IAAqB,EAAA,CAJH,SAIF,MAAqB,CAAC,MAAM,CAAE,CAEhD,IAAM,EAAW,GAAM,CAAF,EAAP,IAAgB,CAAC,oBAAoB,CAAE,IAAI,CAAC,EAAI,WAAW,CAEzE,AAF0E,EAE1D,CACd,CAAC,EAAA,OADU,MACG,CAAC,CAAE,EAAU,OAAD,CAAS,EAAE,CACrC,CAAC,EAAA,cAAc,CAAC,CAAE,EAClB,CAAC,CADqB,CACrB,kBAAkB,CAAC,CAAE,EACtB,CAAC,EAAA,GAD6B,aACb,CAAC,CAAE,EACpB,CAAC,EAAA,CADyB,eACT,CAAC,CAAE,EACrB,CAEG,AAAe,AAFjB,MAD6B,EAGJ,EAAE,OAAlB,GAAG,CACZ,CAAa,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAAI,CAAD,IAAM,CAAC,GAAG,CAAC,CAAC,EAAC,AAAC,CAAC,CAG/B,QAAQ,EAAE,AAAhC,OAAO,IACT,CAAa,CAAC,EAAA,EADK,mBACgB,CAAC,CAAG,CAAA,CAAU,CAAC,AAGhD,EAAU,OAAD,CAAS,EAAE,CACtB,CAAa,CAAC,EAAA,gBAAgB,CAAC,CAC7B,EAAU,OAAD,CAAS,CAAG,EAAU,MAAM,CAAP,CAAW,GAAA,CAAG,CAAC,AAG7C,AAAc,SAAL,AAAc,EAAE,EAC3B,CAAa,CAAC,EAAA,oBAAoB,CAAC,CAAG,CAAA,CAAS,CAAC,AAGlD,CAAA,EAAA,EAAA,gCAAA,AAAgC,EAAC,EAAS,GAC1C,CAAA,CADwC,CACxC,EAAA,KADuD,CAAC,CAAC,kBACzD,AAAyB,EAAC,EAAa,GACxC,AAED,MAHuC,CAG/B,GACN,AAJoD,CAAC,CAAC,GAIjD,EAAA,MADiB,EAAE,QACH,CAAC,MAAM,CAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAgB,EACvC,MAAK,EAAA,CADgC,GAAgB,CAAC,CAAC,UAClC,CAAC,GAAG,CACvB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAgB,EACvC,SADqC,AAEnC,GAFmD,CAAC,CAAC,EAE9C,MAAM,CAAC,MAAM,CAAC,EAAgB,EAAgB,GAE3D,AADG,CACF,CAOY,AAPX,EAOW,EAT4B,EAAgB,GAAgB,CAAC,CAAC,yBAS5B,CAAG,AAChD,EAD6C,EAG7C,IAAM,EAA+B,CAAA,CAAE,CAAC,AAMxC,CAR0B,EACd,EAAE,EAEd,CAAgB,CAAC,EADK,AACL,aAMjB,GANiC,CAAC,CAAG,CAAc,CAAC,EAAA,gBAAgB,CAAC,CACrE,AADsE,CACtD,CAAC,EAAA,gBAAgB,CAAC,CAAG,CAAc,CAAC,EAAA,gBAAgB,CAAC,CAAC,AACtE,CAAgB,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAc,CAAC,EAAA,kBAAkB,CAAC,CAAC,AAC1E,CAAgB,CAAC,EAAA,gBAAgB,CAAC,CAAG,CAAc,CAAC,EAAA,gBAAgB,CAAC,CAAC,AAE/D,CACT,CAAC,CAAC,AAMW,EAAA,WAPY,CAAC,0BAOyB,CAAG,CACpD,CADiD,CAEjD,EACA,GAFwB,EAMxB,CALwB,EAKlB,QAJ4B,AAI1B,CAAM,CAHF,AAGI,CAAG,CAHL,CAIR,KADoB,CAAC,MACnB,CAAU,EAiClB,aAjCoB,CAAa,CAAE,CAAG,EAEhC,EAA4B,CAChC,CAAC,EAH2C,AAG3C,CAH4C,MAE5B,uBACc,CAAC,CAAE,EACnC,CAAC,AAEI,EAAc,GAAA,EAAA,AAH0B,IAG7B,UAAG,AAAc,EAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AAC/C,EAA4B,CAAA,CAAE,CAAC,AACrC,GAAI,EAAQ,CACV,EAFiB,CACT,AACF,cAAE,CAAY,WAAE,CAAS,eAAE,CAAa,YAAE,CAAU,CAAE,CAAG,EAC/D,CAAa,CAAC,EADuD,AACvD,CADwD,eACxC,CAAC,CAAG,EAClC,CAAa,CAAC,EAAA,MADgC,CAAC,WACf,CAAC,CAAG,EACpC,CAAa,CAAC,EAAA,GAD+B,CAAC,YAChB,CAAC,CAAG,EAClC,CAAa,CAAC,EAAA,OADiC,CAAC,UAChB,CAAC,CAAG,EAYtC,AAXC,OACD,CAFgD,AAEnC,CAFoC,AAEnC,EAAA,qBAAqB,CAAC,CAAG,EACvC,CAAa,CAAC,EAAA,IADmC,CAAC,SACtB,CAAC,gBAAgB,CAAC,CAAG,CAC/C,GAAiB,EAAA,CAAE,CACpB,AAAC,MADa,KACF,EAAE,CAAC,AAEZ,GAAa,IAAI,GAAK,CAAX,CAAW,OAAO,CAAC,IAAI,OAA0B,IAAtB,EAAY,GAAmB,EAAd,AAAgB,GACzE,CADmD,AACtC,CAAC,EAAA,eAAe,CAAC,CAAG,EAAY,KAAK,CAAC,AACnD,CAAa,CAAC,CAD8B,CAC9B,eAAe,CAAC,CAAG,EAAY,KAAK,CAAC,CAG7C,EAHsC,CAI5C,KAAK,EAAA,MADiB,EAAE,QACH,CAAC,MAAM,CAC1B,OAAO,CACT,MAAK,EAAA,IADiB,CAAC,WACF,CAAC,GAAG,CACvB,OAAO,EACV,AAED,OAAO,IAHiB,CAAC,CAGZ,CAAC,MAAM,CAAC,EAAe,EACtC,CAAC,CAMY,AANX,EAMW,KAPuB,EAAe,CAAC,CAAC,mCAOI,CAAG,AAC1D,EADuD,EAGvD,IAAM,EAA+B,CAAA,CAAE,CAOvC,AAPwC,CAFd,EACd,EAAE,EAEd,CAAgB,CAAC,EADK,AACL,qBAAqB,CAAC,CAOvC,AANE,CAAc,CAAC,EAAA,qBAAqB,CAAC,CAAC,AACxC,CAAgB,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAc,CAAC,EAAA,kBAAkB,CAAC,CAAC,KAClC,IAApC,CAAc,CAAC,EAAA,CAA8B,EAAE,YAAjB,CAAC,GACjC,CAAgB,CAAC,EAAA,eAAe,CAAC,CAAG,CAAc,CAAC,EAAA,gBAAe,AAAC,CAAC,CAE/D,CACT,CAAC,CAMY,AANX,EAMW,WAPY,CAAC,sCAOqC,CAAG,AAChE,EAD6D,EAG7D,IAAM,EAA+B,CAAA,CAAE,CAAC,AAUxC,CAZ0B,EACd,EAAE,MACQ,CACkB,IAApC,CAAc,CAAC,EAAA,CAA8B,EAAE,YAAjB,CAAC,GACjC,CAAgB,AASlB,CATmB,EAAA,eAAe,CAAC,CAAG,CAAc,CAAC,EAAA,gBAAe,AAAC,CAAC,CAIlE,CAAc,CAAC,EAAA,8BAA8B,CAAC,EAAE,CAClD,CAAgB,CAAC,EAAA,8BAA8B,CAAC,CAC9C,CAAc,CAAC,EAAA,+BAA8B,AAAC,CAAC,CAE5C,CACT,CAAC,CAED,AAFE,EAEF,WAHyB,CAAC,CAG1B,CAAA,EAAA,OAAgB,AACd,CAA4B,CAC5B,CAAiB,CACjB,CAAkC,EAElC,AAuCD,IAvCO,EALqB,AAKD,IAAI,GAAG,CACjC,CADmD,CAAC,EAC/C,GADkB,CACd,CAAC,CAAG,CAAC,CAAE,EAAM,CAAH,CAAW,KAAD,CAAO,CAAE,CAAC,CAAG,EAAK,CAAF,AAAG,EAAE,CAAE,CAClD,IAAM,EAAiB,CAAO,CAAC,CAAC,CAAC,CAAC,OAAd,IAAyB,EAAE,AAC3C,CAD4C,EACzB,EAAA,WAAH,KAAmB,CAAC,MAAM,CAC5C,CAD8C,CAC5B,GAAG,CAAC,EAAgB,GAItC,EAAkB,GAAG,CACnB,AALe,EAMf,CANkC,CAMnB,CANmC,CAAC,CAAC,IAIrC,GACD,AACW,CAAC,CAAZ,EAAe,CAAE,GAAG,CAAC,CACpC,CAAC,AAEL,AAED,OAAO,AACL,IAEA,IAAM,CAF4D,CAEnC,CAAA,AADnB,CACqB,CAAC,AAClC,AAFc,IAET,CADW,GACL,KAAkB,EAAkB,IAAI,EAAE,CAAE,AAA9B,CACvB,IAAM,EAAQ,CAD8B,CACpB,CAAb,EAEX,IAFuB,IAET,GAFwB,CAAC,AAEnC,CAFoC,CAGtC,GADqB,AAAd,EAAgB,IACd,AAGX,IAAM,EAAmB,EAAkB,GAAG,CAAC,GACzC,EAAM,CAAH,AAAG,EADU,GACV,AAD8B,EACtB,CADyC,CAAC,AACtC,CADuC,CACvC,MAAA,EAAW,EAAgB,CAAE,CAEhC,AAFiC,QAEzB,EAAE,AAA3B,EAF+C,KAExC,EACT,CAAU,CAAC,CADG,CACC,CAAD,AAAI,CAAC,EAAM,CAAC,AACjB,EADe,GACV,CAAC,OAAO,CAAC,GACvB,CAAU,CADkB,AACjB,CADkB,CACd,CADgB,AACjB,AAAI,EAElB,CAAU,CAAC,CAFY,CAER,AAFS,CAEV,AAAI,CAAC,EAAM,CAAC,AAE7B,AACD,EAH4B,KAGrB,CACT,CAAC,AACH,CADI,AACH,CAED,IAAM,EAAgB,AAJD,CAAC,GAII,GAAG,CAAC,CAE5B,EAFiB,GAEZ,CACL,MAAM,CACN,MAAM,CACN,KAAK,CACL,QAAQ,CACR,SAAS,CACT,SAAS,CACT,OAAO,CAGP,OAAO,CAGP,OAAO,CACR,CAAC,CAAC,AAEH,SAAS,EAAgB,CAAsB,EAC7C,GAAI,AAAU,IAAI,EAAR,AAAU,CADE,CAEpB,MAAO,KAAK,CAAC,AAGf,IAAM,EAAQ,EAAO,CAAV,GAAS,OAAY,EAAE,CAAC,OAC/B,AAAJ,EAAkB,GAAG,CAAC,GACb,EADkB,AAIpB,CAJqB,CAAX,CAAa,AAChB,CAAC,IAGA,AACjB,CADkB,AACjB,AAED,SAAS,EAAqB,CAAc,EAC1C,GAAI,CACF,OAAO,EAAe,EAFG,CAG1B,AAAC,GAD4B,CAAC,CAAC,AACxB,CACN,GAFqB,GAEd,EAAE,CAAC,AACX,AACH,CAAC,gCCxoCE,OAAA,cAAA,CAAA,EAAA,aAAA,yCAUH,IAAA,EAAA,EAAA,CAAA,CAAA,MAS4B,EAE5B,EAAA,EAAA,CAAA,CAAA,OAO6B,CAI7B,EAAA,EAA2B,CAAA,CAAA,QAE3B,EAAA,CAF2B,CAES,CAAA,CAAA,QACpC,EAAA,EAAA,CAAA,CAAA,GADoC,KAQpC,EAAA,EAAsC,CAAA,CAAA,IADE,IAExC,EAAA,EAAA,CAAA,CAAA,AADsC,QAatC,EAAA,EAiBiB,CAAA,CAAA,OAMjB,EAxB6C,KAwBhC,CANI,SAMwB,EAAA,OAAR,YAAsD,CAEpE,aAAa,CAAkB,IAAI,OAAO,AAAS,CAC5D,CAD2D,aAC7C,AAAC,AACf,YAAY,GAAY,CAAM,CAC9B,GAD6B,UAChB,EAAY,CAAM,CAM/B,GAN8B,cAMb,CAAqB,EAAA,gBAAgB,CAAC,GAE/D,AAFmE,AAAD,aAEtD,EAAoC,CAAA,CAAE,CAAA,CAChD,KAAK,CAAC,qCAAqC,CAAE,EAAA,OAAO,CAAE,GACtD,GAD4D,CAAC,AACzD,CAD0D,AACzD,iBAAiB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAC9C,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CAAC,AACF,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,AACzE,CAD0E,AACzE,AAEkB,wBAAwB,EAAA,CACzC,IAAI,CAAC,+BAA+B,CAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAC/D,sBAAsB,CACtB,CACE,WAAW,CAAE,iDAAiD,CAC9D,IAAI,CAAE,IAAI,CACV,SAAS,CAAE,EAAA,SAAS,CAAC,MAAM,CAC5B,CACF,CACD,AADE,IACE,CAAC,+BAA+B,CAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAC/D,sBAAsB,CACtB,CACE,WAAW,CAAE,kDAAkD,CAC/D,IAAI,CAAE,IAAI,CACV,SAAS,CAAE,EAAA,SAAS,CAAC,MAAM,CAC5B,CACF,CAAC,AACF,IAAI,CAAC,kCAAkC,CAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAClE,EAAA,mCAAmC,CACnC,CACE,WAAW,CAAE,mCAAmC,CAChD,IAAI,CAAE,GAAG,CACT,SAAS,CAAE,EAAA,SAAS,CAAC,MAAM,CAC3B,MAAM,CAAE,CACN,wBAAwB,CAAE,CACxB,KAAK,AAAE,IAAI,AAAE,KAAK,AAAE,IAAI,AAAE,KAAK,AAAE,GAAG,AAAE,IAAI,AAAE,GAAK,AAAF,IAAM,AAAE,CAAC,CAAE,GAAG,CAAE,CAAC,CAChE,GAAG,CAAE,EAAE,CACR,CACF,CACF,CACF,CACD,AADE,IACE,CAAC,kCAAkC,CAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAClE,EAAA,mCAAmC,CACnC,CACE,WAAW,CAAE,mCAAmC,CAChD,IAAI,CAAE,GAAG,CACT,SAAS,CAAE,EAAA,SAAS,CAAC,MAAM,CAC3B,MAAM,CAAE,CACN,wBAAwB,CAAE,CACxB,KAAK,AAAE,IAAI,AAAE,KAAK,AAAE,IAAI,AAAE,KAAK,AAAE,GAAG,AAAE,IAAI,AAAE,GAAG,AAAE,IAAI,AAAE,CAAC,CAAE,GAAG,CAAE,CAAC,CAChE,GAAG,CAAE,EAAE,CACR,CACF,CACF,CACF,AACH,CADI,AACH,AAEO,qBAAqB,CAC3B,CAAkB,CAClB,CAAyB,CACzB,CAA4B,CAAA,CAExB,IAAI,CAAC,iBAAiB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,AAEjD,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,EAAY,GAGtD,IAAI,CAHgD,AAG/C,KAH8D,CAAC,CAAC,UAG/C,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,AAEpD,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAC5C,EAAa,IAAI,AACjB,EAGN,CAAC,AAEO,CANQ,YACM,CACjB,CAAC,MAIuB,CAC3B,CAAkB,CAClB,CAAyB,CACzB,CAA4B,CAAA,CAExB,IAAI,CAAC,iBAAiB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAE/C,AAFiD,IAE7C,CAAC,+BAA+B,CAAC,MAAM,CAAC,EAAY,GAGtD,IAAI,CAHgD,AAG/C,KAH8D,CAAC,CAAC,UAG/C,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,AAEpD,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAC5C,EAAa,IACb,AADiB,EAIvB,CAAC,AAEQ,CANO,QAME,CAAC,EAAoC,CAAA,AALjC,CAKmC,AAJpD,CAAC,AAImD,CACvD,KAAK,CAAC,SAAS,CAAC,GAChB,GADsB,CAClB,AADmB,CAAC,AACnB,cAAc,CAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,AACzE,CAD0E,AACzE,AAED,IAAI,EAAA,CAIF,MAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,AAC1E,CAD2E,AAC1E,AAEO,uBAAuB,EAAA,CAC7B,OAAO,IAAI,EAAA,mCAAmC,CAC5C,MAAM,CACN,CAAC,GAAG,CAAC,CACL,AAAC,IAGC,GAAI,IAAI,CAAC,CAHS,EAAQ,EAAE,OAGP,CACnB,CADqB,MACd,CAET,KAAI,CAAC,MAFiB,CAAC,KAEN,EAAG,EAGpB,EAHwB,CAAC,CAGnB,EAAuD,GAAlD,KAA0D,CAAC,EAAvD,CAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAExD,GAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,qCAAqC,CAAE,CAC3D,IAAM,EAAiB,IAAI,CAAC,KAAK,CAC/B,CADkB,CAElB,SAAS,CACT,CAFa,GAET,CAAC,gCAAgC,CAAC,MAAM,CAAC,CACP,CAAC,AACnC,EAAa,IAAI,CAAC,GAAR,EAAa,CAC3B,EACA,KAAK,CACL,IAAI,CAFS,AAER,4BAA4B,CAAC,IAEhC,IAID,CAJM,CAIgB,CAJd,GAFuC,CAAC,CAClD,CAK+B,AAL9B,CAK+B,GAAT,IAAgB,CAAG,EAExC,EAAsB,OAAO,CAAC,EAFwB,CAAC,AAElC,AAAY,CAAG,GAUzC,AARC,OAFkD,AAG/C,AAAC,CAH+C,GAG3C,CAAC,SAAS,EAAE,CAAC,qCAAqC,EAAE,AAC3D,IAAI,CAAC,KAAK,CACR,EAAc,MAAM,CAAC,IAAR,KAAiB,CAC9B,MAAM,CACN,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC,AAEG,CACT,CAAC,CACD,AAAC,IACC,IAAI,CAAC,CAHe,CAAC,EAEH,EAAE,EAAE,IACL,EAAG,KAAK,CAAC,CACJ,IAAlB,IAEC,CAF0B,EAAE,CAExB,CAAC,IAFO,CAAuB,IAErB,EAAE,CAAC,qCAAqC,EAAE,CAC3D,IAAI,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AACvC,IAAI,CAAC,OAAO,CAAC,EAAe,KAAK,CAAC,CAAC,CAEjC,AAAC,GAFuB,CAEnB,CAAC,SAAS,EAAE,CAAC,qCAAqC,EAAE,AAC3D,IAAI,CAAC,OAAO,CAAC,EAAc,MAAM,CAAC,IAAR,KAAiB,CAAE,MAAM,CAAC,CAAC,AAEzD,CAAC,CACF,AACH,CADI,AACH,AAEO,wBAAwB,EAAA,CAC9B,OAAO,IAAI,EAAA,mCAAmC,CAC5C,OAAO,CACP,CAAC,GAAG,CAAC,CACJ,AAAD,IAGE,GAAI,IAAI,CAAC,CAHU,EAAS,EAAE,QAGR,CACpB,CADsB,MACf,EAET,IAAI,CAAC,MAFiB,CAAC,MAEL,EAAG,EAGrB,EAHyB,CAAC,CAGpB,EAAuD,GAAlD,KAA0D,CAAC,EAAvD,CAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAExD,GAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,qCAAqC,CAAE,CAC3D,IAAM,EAAiB,IAAI,CAAC,KAAK,CAC/B,CADkB,CAElB,SAAS,CACT,CAFa,GAET,CAAC,qCAAqC,CAAC,OAAO,CAAC,CACb,CAAC,AACnC,EAAa,IAAI,CAAC,GAAR,EAAa,CAC3B,EACA,KAAK,CACL,IAAI,CAAC,AAFQ,iCAEyB,CAAC,IAErC,IAID,CAJM,CAIgB,CAJd,GAF4C,CAAC,CACvD,CAAC,AAK8B,CAAC,GAAT,IAAgB,CAAG,EAExC,EAAsB,OAAO,CAAC,EAFwB,CAAC,AAElC,AAAY,CAAG,GAExC,AAQD,OAPI,AAAC,AAH8C,CAAC,GAG3C,CAAC,SAAS,EAAE,CAAC,qCAAqC,EAAE,AAC3D,IAAI,CAAC,KAAK,CACR,EAAc,MAAM,CAAC,IAAR,KAAiB,CAC9B,MAAM,CACN,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAC/C,CAAC,AAEG,CACT,CAAC,CACD,AAAC,IACC,IAAI,CAAC,CAHe,CAAC,EAEF,EAAE,EAAE,KACL,EAAG,KAAK,CAAC,CACL,IAAlB,IAEC,CAF0B,EAAE,CAExB,CAAC,IAFO,CAAuB,IAErB,EAAE,CAAC,qCAAqC,EAAE,CAC3D,IAAI,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AACvC,IAAI,CAAC,OAAO,CAAC,EAAe,KAAK,CAAC,CAAC,CAEjC,AAAC,GAFuB,CAEnB,CAAC,SAAS,EAAE,CAAC,qCAAqC,EAAE,AAC3D,IAAI,CAAC,OAAO,CAAC,EAAc,MAAM,CAAC,IAAR,KAAiB,CAAE,MAAM,CAAC,CAExD,AAFyD,CAExD,CAEL,AADG,CAMK,AALP,AADG,gCAMoC,CAAC,CAA2B,CAAA,CAClE,OAAO,AACL,GAEO,IAAI,CAAC,AAF4C,EACS,EAAE,oBAC/B,CAAC,EAAW,EAEpD,CAAC,AAMO,IAR0C,CAAU,CAAC,CAAC,yBAQtB,CAAC,CAA2B,CAAA,CAClE,OAAO,AAAC,GACC,IAAI,CAAC,AAD4B,EAA4B,EAAE,oBAClC,CAAC,EAAW,EAEpD,CAAC,AAEO,IAJ0C,CAAU,CAAC,CAAC,qBAI1B,CAClC,CAGuB,CAAA,CAEvB,OAAO,AAAC,GAWC,MAXkC,EAA4B,CAWrD,AAEd,CAAU,AAb2D,CAazD,GAAG,CAAqB,EACpC,IAAM,EAAM,CAAH,CAAiB,EAHM,GAGM,EAAL,CAEjC,CAFmC,AAAO,CAAC,CAAlB,AAAmB,IAC5C,EAAI,CAAD,EAAI,EAAE,CACF,AADG,CAEZ,CAAC,AAEL,CAHgB,AACV,AAEL,AAGO,CANS,oCAM4B,CAAC,CAA2B,CAAA,CACvE,OAAO,AAAC,IACN,IAAM,AADkC,EAChB,AAD4C,EAAE,EAC1C,CAAC,AAC7B,OAAO,CADc,QACL,AAEd,CAA4C,CAC5C,GAAG,CAAqB,EAWxB,MAPgB,MAPkB,CAClC,AAMuB,GAArB,GACmB,AAAnB,MADS,EACkB,SAApB,GACP,GAAS,CADK,GACP,OAAa,EAAE,IAAI,GAAK,KAAK,EACpC,CACA,EAAU,KAAH,CAAS,CAAC,CAVgD,KAU1C,CAAC,CAAA,CAAE,CAAE,GAC5B,EAAgB,EADmB,CAAC,CAAC,SACtB,KAAmB,CAAC,IAE9B,EAAgB,CAFqB,CAAC,CAAC,UAExB,mBAAiC,CAAC,GACtD,GACA,GAF+D,CAAC,CACxD,AACI,CAAb,CAAQ,AACX,CAAC,AACH,CAFe,AAAO,AAClB,AACH,AACH,CADI,AAFqB,AAGxB,AAEO,CALkB,iBAKA,CAAC,CAA6B,CAAA,CACtD,EAAQ,KAAD,GAAS,CAAG,EAAQ,KAAD,GAAS,EAAI,QAAQ,CAAC,AAChD,EAAQ,IAAI,CAAL,AAAQ,EAAQ,IAAI,CAAL,CAAS,GACjC,AADoC,CAAC,AACpC,AAGO,iCAAiC,CACvC,CAIuB,CAAA,CAEvB,OAAO,AAAC,IACN,IADwC,AAClC,EAD8D,AAC5C,EAD8C,EAC1C,CAAC,AAC7B,OAAO,CADc,QAGnB,AAFc,CAE8B,CAC5C,GAAG,CAAqB,EAExB,OAAO,EAAgB,GALW,CAClC,SAIsB,eAA6B,CAAC,GAClD,GACA,KAAY,AADJ,CACT,CACH,AADW,AAFwD,CAAC,AAGnE,AACH,CAFe,AAAO,AAClB,AACH,AACH,CAHyB,AAErB,AACH,AAWO,CAdkB,kBAcC,CACzB,CAA2B,CAC3B,CAAU,CACV,CAAiB,CACjB,AAxBuE,CAwBxC,CAC/B,CAAkC,CAAA,CAE9B,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,AAChC,IAAI,CAAC,gBAAgB,CAAC,EAAM,EAAF,CAM5B,IAAI,AANiC,CAAC,CAAC,CAMhB,EAqIvB,GArI4B,CAAC,GAO7B,EAAQ,EAPY,GAOb,UAAgB,CACrB,UAAU,CACV,AAAC,IACC,IAAI,AADiD,CAChD,CADkD,EAAE,EAC/C,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,AACT,CAAC,EAAtC,AAAwC,EAAhC,KAAD,QAAc,CAAC,UAAU,CAAC,EACnC,EAAS,MAAD,AAAO,EAAE,CAAC,AAEpB,IAAM,EAAqB,CAAA,EAAA,EAAA,WAAH,2BAAG,AAAsC,EAC/D,EACA,IAAI,CAAC,CADG,gBACc,CACvB,CAAC,AACF,EAAK,EAAD,WAAc,CAAC,GACnB,EAAsB,MAAM,CAAC,MADQ,AACF,CADG,AAEpC,CAFqC,CAGrC,CAAA,AAFiB,EAEjB,EAAA,YADmB,gCACnB,AAA4C,EAAC,IAE/C,EAAyB,MAAM,CAAC,KAFiC,CAAC,AAE5B,CACpC,AAFD,CAAC,CAGA,CAAA,EAAA,CAFoB,CAEpB,eADsB,mCACtB,AAAkD,EAAC,IAGjD,IAAI,CAAC,SAH8D,AAGrD,CAHsD,CACvE,AAEmB,CAFlB,AAEmB,YAAY,EAAE,AACjC,IAAI,CAAC,iBAAiB,CAAC,EAAM,EAAF,CAG7B,EAAK,EAAD,CAHmC,CAAC,CAAC,QAGvB,CAChB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAA,AAAC,GAC/C,EAAQ,CAD6C,CAAC,GAC/C,IAAU,CAAC,KAGtB,CAH4B,CAAC,AAGxB,CAFF,CACF,AACG,CADF,UACgB,CAChB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,sBAAsB,CAC/C,AAD+C,GACrC,EAAS,CAAb,CAAC,IAAW,CAAQ,CAAC,EAAO,CACnC,CACF,CAAC,AAEF,CAJqC,CAIrC,OAAO,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAE/B,IAAM,CAFiC,CAEpB,AAFqB,CAAC,EAEnB,EAAE,GAAR,CAMV,EALJ,IAAI,AAKkB,CALjB,AAKkB,KALb,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,AACzC,IAGJ,EAAmB,GAIjB,CAJqB,CAAC,AAGpB,EAAS,EACL,CAPY,EAAE,CAMV,CAAQ,AAHJ,EAGQ,CAAC,EAAS,MAAD,EAAS,CAC/B,CADiC,AAC/B,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAAE,CAAC,AAG/B,CACP,IAAI,CAAE,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,EAAA,QAAQ,CAAC,MAAM,CAAE,EAAS,MAAD,IAAW,CAAC,CAChE,CAAC,AAGJ,EAAK,EAAD,OAAU,CAAC,GAEX,GAFiB,CAAC,AAEd,CAFe,AAEd,SAAS,EAAE,CAAC,2BAA2B,EAAE,AAChD,GAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,CACD,CADG,GACC,CAAC,SAAS,EAAE,CAAC,2BAA4B,CAC3C,EACA,EACA,AAFI,GAIR,EAHW,CAGR,EAFS,AAEL,CADJ,AACK,EACR,GAIJ,CAJQ,CACL,CAAC,CAGA,CAAC,cAAc,CACjB,EACA,EADI,AACJ,QAAQ,CAAC,MAAM,CACf,EACA,EACA,GAEJ,CAAC,CAJY,AAIX,AAEF,EAAS,EAAE,CAAC,GAAJ,EAAS,CAAE,CALI,EAMvB,EAAS,CALiB,CAKf,AAJR,CAIS,AAJR,EAIQ,AADiB,CACrB,AADsB,CAAC,UACP,CAAE,AAAC,IACzB,CADmC,EAAE,CACjC,CADmC,AAClC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAE,GAC3C,EADgD,CAAC,CAIrD,AAJsD,GAInC,EACnB,EADuB,CAAC,CACpB,CAAC,EAJe,EAAE,EAGN,iBACY,CAC1B,EACA,EADI,AAEJ,EACA,EACA,GAEJ,CAAC,CAFQ,AAEP,AACJ,CAFK,AACA,AACJ,CAFK,AAGP,AALgB,CAKf,AACF,EAAQ,EAAE,CARiB,AAQhB,EAAJ,GAPuB,EAOZ,CAAE,GAAG,EAAE,AACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,AACnD,EAAQ,KAAD,EAAQ,EAAI,IAGvB,EAAmB,GACnB,CADuB,CAAC,EACpB,CAAC,EAJkC,EAAE,EAGzB,QACG,CACjB,EACA,EADI,AACJ,QAAQ,CAAC,MAAM,CACf,EACA,EACA,GAEJ,CAAC,CAAC,AAJW,CAIV,AACH,EAAQ,EAAE,CAAC,EAAJ,AAAI,IAJY,KACG,CACvB,CAAC,CAEmB,CAAE,AAAC,IACxB,CADkC,EAAE,CAChC,CADkC,AACjC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAE,GACnD,EADwD,CAAC,CAAC,AAI9D,GAAmB,EACnB,EADuB,CAAC,CACpB,CAAC,EAJe,EAAE,EAGN,iBACY,CAC1B,EACA,EADI,AAEJ,EACA,EACA,GAEJ,CAAC,CAAC,AAFO,CAEN,AAEH,AAHG,CAFU,AAET,GAGA,CAAC,EAPkB,GAOb,CAAC,CANe,IAMV,CAAC,mCAAmC,CAAC,CAAC,AAC/C,CACT,CAAC,AAEO,KAHQ,CAAC,kBAGe,CAC9B,CAA2B,CAC3B,CAAwD,CAAA,CAExD,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACL,AAEd,CAAa,CACb,GAAG,CAAe,EAGlB,GAAc,IANe,KAMN,EAAE,CAArB,EACF,GADO,IACA,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,CAAC,KAAK,AAAK,EAAH,AAAQ,CAAC,CAAF,AAAG,AAGhD,IAAM,EAAU,CAAI,CAAC,CAAC,CAAyB,CAAC,AAC1C,AADO,EACI,CAAI,CAAC,CAAC,CAA6C,CAAC,AAC/D,CADQ,CACC,EAAQ,EAAX,GAAU,CAAO,EAAI,KAAK,CAAC,AAMvC,GAJA,EAAgB,KAAK,CAAC,KAAK,CACzB,CADa,AACb,EAAG,EAAS,OAAA,yBAAA,CAAkC,CAC/C,CAAC,AAGA,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,CACD,CADG,CACa,SAAS,EAAE,CAAC,CAAb,wBAAsC,EAAE,CAAC,GAC1D,AAAC,CAAU,EAAE,CACF,AAFsD,CAClD,AADmD,GAEnD,EAAT,AAAW,CAAV,EACH,EAAgB,KAAK,CAAC,KAAK,CACzB,CADa,yCAC6B,CAC1C,CAAC,CAGP,AAFK,CAAC,AAEL,CACD,IAAI,AAGN,CAFC,EACD,IACO,EAAA,OAAO,CAAC,IAAI,CAAC,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAE,GAAG,EAAE,AAC1D,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAC/B,EAAA,EADsC,CAAC,CAAC,GACjC,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GACxB,EAAS,GADuB,CAAC,CACnB,AADoB,CAC1B,AAAO,IAAI,CAAE,CAAC,KAAK,AAAK,EAAH,AAAQ,CAAC,CAAF,AAAG,EAIlD,IAAM,EAAU,EAAQ,GAAX,EAAU,EAAQ,CAAC,AAE1B,EAAiB,GAAA,EAAA,OAAH,qBAAG,AAA4B,EACjD,EACA,CACE,IAFK,KAEI,CAAE,EACX,OADoB,GACV,CAAE,EAAgB,SAAS,EAAE,CAAC,CAAb,SAAuB,CAClD,cAAc,CAAE,EAAgB,aAAD,KAAmB,CAChD,EACA,EAAgB,GADT,MACkB,EAAE,CAAC,CAAb,oBAAkC,CAClD,CACD,gBAAgB,CAAE,EAAgB,aAAD,IAAkB,CACnD,8BAA8B,CAC5B,EAAgB,SAAS,EAAE,CAAC,CAAb,6BAA2C,GAAI,EACjE,CACD,EAAgB,AAFuD,KAElD,CACtB,CAAC,AAEF,MAHiB,AAGX,CAAC,MAAM,CACX,EACA,EAAgB,UADF,GACC,CAAe,CAAC,MAAM,CAAC,qBAAqB,CAAA,AACzD,GAAU,EAAQ,CAAZ,CAAC,GAAU,EAAQ,CAAC,EAAO,CAClC,CACF,CAED,AAFE,CAFkC,GAI9B,EAA2B,CAC/B,IAAI,CAAE,EAAA,CADS,OACD,CAAC,MAAM,CACrB,UAAU,CAAE,EACb,CAAC,AAEI,EAAY,CAAA,EAAA,EAAA,EAAH,EAHa,EAGV,AAAM,GAAE,CAAC,AACrB,EACJ,CAAA,EAAA,EAAA,YADuB,sBACvB,AAAkC,EAAC,GAG/B,EAAqC,CACzC,CAAC,EAAA,KAJgD,CAAC,CAAC,SAGzB,QACD,CAAC,CAAE,CAAc,CAAC,EAAA,wBAAwB,CAAC,CACpE,CAAC,EAAA,eAAe,CAAC,CAAE,CAAc,CAAC,EAAA,eAAe,CAAC,CACnD,CAAC,AAGE,CAAc,CAAC,EAAA,6BAA6B,CAAC,EAAE,CACjD,CAAsB,CAAC,EAAA,6BAA6B,CAAC,CACnD,CAAc,CAAC,EAAA,8BAA6B,AAAC,CAAC,CAGlD,IAAM,EAAM,CAAH,CAAG,WAAW,CAAC,OAAO,CAAC,EAAA,YAAY,CAAE,GACxC,EAAO,EADwC,AAC3C,AAAmB,CADyB,CAAC,WAC3B,CAAe,CAAC,EAAQ,EAAa,EAAf,CAAkB,AAC9D,CAD+D,CAAC,AACrC,CAC/B,GAF6D,CAEzD,CAAE,EAAA,CADS,MACF,CAAC,IAAI,MAClB,EACD,CAED,AAFE,CADI,MAGC,EAAA,OAAO,CAAC,IAAI,CACjB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAK,CAAF,EAAS,CAAH,CAAC,CACvC,GAAG,EAAE,AACH,EAAA,CAFkD,CAAC,KAE5C,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAC/B,EAAA,EADsC,CAAC,CAAC,GACjC,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAE3B,EAAgB,GAFmB,CAAC,CAAC,IAEZ,EAAE,CAAC,CAAb,UAAwB,EAAE,AAC3C,EAAgB,aAAD,GAAiB,CAAC,EAAM,EAAF,CAEnC,EAAgB,EAF4B,CAAC,CAAC,KAErB,EAAE,CAAC,CAAb,WAAyB,EAAE,AAC5C,EAAgB,aAAD,IAAkB,CAAC,EAAM,EAAF,CAIxC,IAAI,CAJ8C,CAAC,CAAC,AAIrC,EAyBf,GAzBY,AAAQ,CAAC,GACrB,EAAS,EAAE,CAAC,GAAJ,IAAW,CAAE,GAAG,EAAE,AACpB,GAGJ,EAAgB,GAHJ,EAAE,QAGC,UAAwB,CACrC,EACA,EACA,EACA,CAHO,CAEH,AAEJ,EAHQ,AAIR,EAEJ,CAAC,CAAC,CACF,AADG,EACM,EAAE,AAHE,CAGD,AAFT,CAAC,CAEQ,CAAJ,EALe,KACG,IAIF,CAAE,AAAC,GAAQ,CACjC,CADmC,CACxB,CAD0B,EAErC,CADe,CACC,AADA,CAAR,YACO,SAAuB,CACpC,EACA,EADI,AAEJ,EACA,EACA,EAEJ,CAFO,AAEN,CADE,AACD,CADE,AACD,AAEI,CAAA,CALM,CAKN,EAAA,GAPgB,KACG,cAMnB,AAAsB,EAC3B,GAAG,CAAG,CAAD,CAAU,KAAK,CAAN,AAAO,IAAI,CAAE,CAAC,KAAK,AAAK,EAAK,AAAR,CAAS,CAAF,AAAE,AAC5C,IACE,CADG,CAAC,CACA,CADE,CASJ,GARO,EAAE,CACT,EAAgB,aAAD,SAAuB,CACpC,EACA,EACA,AAFI,EAGJ,EACA,GAEI,CAEV,CAAC,AAJU,CAKZ,AACH,AALS,CAIL,AACH,AAPkB,AAET,CAMX,AACH,AANuB,CAKnB,AACH,AACH,AAP0B,CAMtB,AACH,AAEO,GAd2B,KACG,gBAaN,CAC9B,CAA2B,CAC3B,CAAkC,CAAA,CAElC,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACL,AAEd,CAA+C,CAC/C,GAAG,CAAe,EAElB,GAAI,CAAC,CAAA,EAAA,AALwB,EAKxB,kBAAA,AAAkB,EAAC,GACtB,IAD6B,CAAC,EAAE,AACzB,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,CAAC,KAAY,EAAL,AAAU,CAAC,CAAT,AAAO,AAAG,AAElD,IAAM,EACe,QAAQ,EADX,AAChB,EACA,KADO,CAAI,CAAC,CAAC,CAAC,GACM,QAAQ,EAA3B,OAAO,GAAwB,IAAjB,GAAwB,MAAY,EAAI,CAAD,EAAC,AAAG,CAAC,CACtD,EAAK,EAAD,GAAM,EAA0B,MACrC,EACA,OADS,CAAC,AACR,CAAM,YAAE,CAAU,eAAE,CAAa,CAAE,CAAG,GAAA,EAAA,cAAc,AAAd,EAC5C,EAAgB,KAAK,CACrB,EACA,GAGF,EALiB,AACR,CAKP,CAAA,EAAA,EAAA,CAJY,CACb,CAAC,mBAGA,AAAsB,EACpB,GAAG,CACD,CADG,CAEA,SAAS,EAAE,CACX,CAFY,wBAEa,EAAE,CAAC,GACjC,AAAC,CAAU,EAAE,CACP,AAAK,CAAJ,AADQ,GACA,EAAE,AAF6B,CAAC,EAG3C,EAAgB,KAAK,CAAC,KAAK,CACzB,CADa,yCAC6B,CAC1C,CAAC,CACF,AAEL,CAAC,AAFK,EAGN,GAGF,CAHM,CACL,EACD,GACO,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,CAAC,KAAkB,EAAK,CAAC,CAGvD,AAHwD,AAAH,GAG/C,CAHsC,EAAE,OAGtC,CAAQ,MAAE,CAAI,CAAE,CAAG,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,GAC5C,EAAa,CAAA,EAAA,EAAA,GAD4C,AAC/C,CADgD,CAAC,uBAC9C,AAA4B,EAC7C,EACA,CACE,SAAS,CAFE,OAGX,IAAI,OACJ,EACA,MADQ,QACM,CAAE,EAAgB,aAAD,KAAmB,CAChD,EACA,EAAgB,SADH,AACY,EAAE,CAAC,CAAb,oBAAkC,CAClD,CACD,mBAAmB,CAAE,EAAgB,SAAS,EAAE,CAAC,CAAb,kBAAgC,CACrE,CADuE,AAExE,EAAgB,aAAD,IAAkB,CACjC,EAAgB,SAAS,EAAE,CAAC,CAAb,YAHwG,iBAG7D,GAAI,GAG1D,EAH+D,AAGnD,CAFjB,AAEiB,CAFhB,CAEgB,EAAA,EAAH,IAAG,AAAM,GAAE,CAAC,AACrB,EACJ,CAAA,EAAA,EAAA,YADuB,sBACvB,AAAkC,EAAC,GAG/B,EAAqC,CACzC,CAAC,EAAA,CAJ4C,CAAC,CAAC,aAGrB,QACD,CAAC,CAAE,CAAU,CAAC,EAAA,wBAAwB,CAAC,CAChE,CAAC,EAAA,mBAAmB,CAAC,CAAE,CAAU,CAAC,EAAA,mBAAmB,CAAC,CACtD,CAAC,EAAA,gBAAgB,CAAC,CAAE,CAAU,CAAC,EAAA,gBAAgB,CAAC,CACjD,CAAC,AAGE,CAAU,CAAC,EAAA,8BAA8B,CAAC,EAAE,CAC9C,CAAsB,CAAC,EAAA,8BAA8B,CAAC,CACpD,CAAU,CAAC,EAAA,+BAA8B,AAAC,CAAC,CAI3C,CAAU,CAAC,EAAA,6BAA6B,CAAC,EAAE,CAC7C,CAAsB,CAAC,EAAA,6BAA6B,CAAC,CACnD,CAAU,CAAC,EAAA,8BAA6B,AAAC,CAAC,CAG9C,IAAM,EAA2B,CAC/B,IAAI,CAAE,EAAA,CADS,OACD,CAAC,MAAM,YACrB,EACD,CAAC,AACI,EAAO,EAAgB,AAAnB,GAFE,UAEgB,CAAe,CAAC,EAAQ,GAE9C,CAF4C,CAE5B,EAAA,IAFyC,CAAC,CAAC,CAEpC,CAAC,CAAX,KAAiB,EAAE,CAAC,AACjC,EAAiB,EAAA,KAAK,CAAC,IAAT,GAAgB,CAAC,EAAe,GAWpD,CAXwD,CAAC,CAAC,IAErD,CAF6C,CAE/B,OAAO,CAKxB,CAL0B,CAKZ,CALE,MAKK,CAAG,GAAX,GAAiB,CAAC,MAAM,CAAC,CAAA,CAAE,CAAE,EAAc,OAAO,CAAC,CAJhE,AAIiE,EAAV,AAJzC,OAAO,CAAG,CAAA,CAAE,CAM5B,AAN6B,AAAd,EAMf,WAAW,CAAC,MAAM,CAAC,EAAgB,EAAc,OAAO,CAAC,CAAC,AAEnD,CAF0B,CAE1B,AAFyC,OAElC,CAAC,IAAI,CAAC,EAAgB,GAAG,EAAE,AAKvC,IAAM,EAAE,AAAG,CAAI,AALiB,CAKhB,EAAK,EAAD,IAAO,CAAG,CAAC,CAAC,CAAC,AACf,UAAU,EAAxB,AAA0B,OAAnB,EAAE,EACX,CAAI,CAAC,EAAK,EAAD,IAAO,CAAG,CAAC,CAAC,CAAG,EAAA,OAAO,CAAC,IAAI,CAAC,EAAe,EAAE,CAAC,CAAC,AAG1D,IAAM,EAA8B,CAHgB,AAGhB,EAAA,EAAvB,AAAuB,sBAAsB,AAAtB,EAClC,GAAG,CACD,AAAI,CADD,CAKM,EAAS,KAAK,CAAN,AAAO,AAJV,EAAE,EAIY,CAAE,CAAC,KAAY,EAAK,AAAV,CAAW,CAAF,AAAG,AAEzC,AAF+B,EAEtB,KAAK,CAAN,AAAO,IAAI,CAAE,CAAC,KAAkB,EAAK,CAAC,CAAF,AAAG,AAEzD,AACD,IAH8C,AAI5C,CADG,CAH2C,AAG1C,CACA,CADE,CASJ,GARO,EAAE,CACT,EAAgB,aAAD,UAAwB,CACrC,EACA,EADI,AAEJ,EACA,EACA,GAEI,CAEV,CAJW,AAIV,CAHI,AAIN,CAJO,AAIN,AAMF,AAZiB,CAGA,CAAC,IALS,CAU3B,EAAgB,EATc,GAST,CAAC,KAAK,CACzB,CADa,AACb,EAAG,EAAS,OAAA,yBAAA,CAAkC,CAC/C,CAAC,AACF,EAAA,OAAO,CAAC,IAAI,CAAC,EAAe,GACrB,EAAgB,EADY,CAAC,CAAC,EAAX,OACJ,MAAoB,CACxC,EACA,EACA,EADI,AAEJ,CAHO,CAIP,EAEJ,CAAC,CACH,AADI,CAAC,AAJU,AAKd,AACH,CADI,AACH,AAEO,WAPmB,KACG,CACvB,CAAC,KAKuB,CAC7B,CAA6B,CAC7B,CAA6B,CAC7B,CAAU,CACV,CAA+B,CAC/B,CAAkC,CAClC,CAAiB,CAAA,CAEjB,IAAM,EAAa,GAAA,EAAA,GAAH,mCAAG,AAAsC,EACvD,EACA,EACA,GAFO,CAEH,CAAC,CADG,gBACc,CACvB,CAAC,AACF,EAAsB,MAAM,CAAC,MAAM,CACjC,EACA,CAFiB,EAEjB,EAAA,YADmB,gCACnB,AAA4C,EAAC,IAE/C,EAAyB,IAFgC,CAAC,CACzD,AAC8B,CAD7B,AAC8B,MAAM,CACpC,EACA,CAAA,EAAA,CAFoB,CAEpB,eADsB,mCACtB,AAAkD,EAAC,IAGrD,EAAK,EAAD,EAH2D,CAAC,CAC/D,CAAC,MAEgB,CAChB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,sBAAsB,CAAA,AAAC,GAAS,EAChD,CAD6C,CAAC,IAC/C,GAAU,CAAC,KAIvB,CAJ6B,CAAC,AAIzB,CAHF,CACF,AAEG,CAFF,UAEgB,CAAC,GAAY,OAAF,CAAC,CAAU,CAAC,CACvC,IAAI,CAAE,CAAA,EAAA,EAAA,mBAAmB,AAAnB,EAAoB,EAAA,QAAQ,CAAC,MAAM,CAAE,EAAS,MAAD,IAAW,CAAC,CAChE,CAAC,CAAC,AAEH,IAAM,EAAQ,CAAU,CAAC,CAAd,CAAc,eAAe,CAAC,AACrC,CADsC,GAExC,CADO,CACF,CADI,CACL,QAAW,CAAC,CAAA,EAAG,EAAQ,KAAD,CAAO,EAAI,KAAK,CAAA,CAAA,EAAI,EAAK,CAAE,CAAC,CAAH,AAAI,AAGrD,IAAI,CAAC,SAAS,EAAE,CAAC,2BAA2B,EAC9C,AADgD,CAChD,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,CACD,CADG,GACC,CAAC,SAAS,EAAE,CAAC,2BAA4B,CAC3C,EACA,EACA,AAFI,GAIR,EAHW,CAGR,EAFS,AAEL,CADJ,AACK,EACR,GAIJ,CAJQ,CACL,CAAC,CAGA,CAAC,cAAc,CACjB,EACA,EADI,AACJ,QAAQ,CAAC,MAAM,CACf,EACA,EACA,EAEJ,CAEQ,AAFP,EAJY,YACU,KACG,CACvB,CAAC,EAG2B,CAC7B,CAAU,CACV,CAA+B,CAC/B,CAAkC,CAClC,CAAiB,CACjB,CAAU,CAAA,CAEV,CAAA,EAAA,EAAA,gBAAA,AAAgB,EAAC,EAAM,EAAF,AAAS,GAAF,CAAM,CAAC,iBAAiB,CAAC,CAAC,AACtD,CAAsB,CAAC,EAAA,eAAe,CAAC,CAAG,EAAM,GAAD,CAAK,CAAC,AAErD,IAAI,CAAC,cAAc,CACjB,EACA,EAAA,AADI,QACI,CAAC,MAAM,CACf,EACA,EACA,EAEJ,CAAC,AAEO,EANK,YACU,KACG,CACvB,CAAC,CAG0B,CAC5B,CAAU,CACV,CAA+B,CAC/B,CAAkC,CAClC,CAAiB,CACjB,CAAU,CAAA,CAEV,CAAA,EAAA,EAAA,gBAAA,AAAgB,EAAC,EAAM,EAAF,AAAS,GAAF,CAAM,CAAC,iBAAiB,CAAC,CAAC,AACtD,CAAsB,CAAC,EAAA,eAAe,CAAC,CAAG,EAAM,GAAD,CAAK,CAAC,AAErD,IAAI,CAAC,cAAc,CACjB,EACA,EAAA,AADI,QACI,CAAC,MAAM,CACf,EACA,EACA,EAEJ,CAAC,AAEO,EANK,YACU,AAKD,CACpB,CAAY,CACZ,CAAoB,CANI,AAOxB,CANC,CAAC,AAMI,CAAH,CAAG,OAAO,CAAC,MAAM,EAAE,CAAA,CAMtB,IAKI,EALE,EACJ,AAIY,CAAC,CAJL,IAAI,CAAL,EAAU,EAAA,AADA,QACQ,CAAC,MAAM,CAC5B,IAAI,CAAC,SAAS,EAAE,CAAC,6BAA6B,CAC9C,IAAI,CAAC,SAAS,EAAE,CAAC,6BAA6B,CAAC,AAG/C,EAAc,EAAA,KAAK,CAAC,CAAT,MAAgB,CAAC,GAAG,AAarC,CAbsC,CAAC,KAQrC,GALkB,CAKd,GALJ,AAAsB,GACrB,AAAC,CAAF,EAAkB,EAAA,KADL,AACU,CAAC,AAAX,IAAI,cAAyB,CAAC,EAAY,SAAD,EAAY,EAAE,CAAC,CAG5D,AAAkB,AAH2C,EACtE,EAE+B,IAAI,GAAa,EAA1B,MAAwB,GAAa,EAAE,CAAC,QAAQ,CAC/D,CADiE,CAGjE,IAAI,CAAC,IAFM,CAAC,CAED,CAAC,SAAS,CAAC,EAAM,EAAF,AAAW,GAAG,AAJxC,CAIyC,CAAN,AAAO,AAJ1C,KAAK,CAAC,eAAe,CAAC,EAAA,oBAAoB,CAAC,CAMpD,AANqD,IAMjD,CAAC,aAAa,CAAC,GAAG,CAAC,GAChB,CADoB,AAE7B,CAF8B,AAItB,AAFP,CAF8B,CAClB,CAAC,WAGQ,CACpB,CAAU,CACV,CAAkB,CAClB,CAAiB,CACjB,CAA+B,CAC/B,CAAkC,CAAA,CAElC,GAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAC1B,CAD8B,CAAC,EAAE,GAC1B,AAGT,EAAK,EAAD,CAAI,EAAE,CAAC,AACX,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAG1B,CAH8B,CAAC,CAAC,CAG1B,EAAW,CAAA,EAAA,EAAA,CAAH,mBAAG,AAAoB,EAAC,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAW,CAAA,EAAA,EAAA,EAAF,IAAE,AAAM,GAAE,CAAC,CAAC,CAAC,AACvE,IAAa,EAAA,EAAL,MAAa,CAAC,MAAM,CAC9B,CADgC,GAC5B,CAAC,qBAAqB,CACxB,EACA,EACA,GAEO,CAJC,GAIY,EAAA,EAAL,MAAa,AAHT,CAGU,IAFP,CACvB,CAAC,AACmC,EAAE,AACvC,IAAI,CAAC,qBAAqB,CACxB,EACA,EACA,EAGN,CAAC,AAEO,CAPM,aACW,GAMA,CACvB,CAN0B,AAMhB,CALP,AAMH,CANI,AAMgD,CAAA,CAEpD,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,CAAG,CAAD,GAAK,CAAC,SAAS,EAAE,CAAC,YAAa,CAAC,EAAM,EAAF,CACzC,GAAG,EADgD,AAC9C,CAD+C,AAC5C,CACR,GAEJ,CAFQ,AAEP,AAEO,CAHL,CAAC,cAGoB,CACtB,CAAU,CACV,CAAkD,CAAA,CAElD,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,CAAG,CAAD,GAAK,CAAC,SAAS,EAAE,CAAC,WAAY,CAAC,EAAM,EAAF,CACxC,GAAG,CAD8C,CAAC,AAC7C,CAAG,EACR,EAEJ,CAAC,AAEO,CAJA,CACL,CAAC,eAGsB,CACxB,CAAmD,CACnD,CAA8B,CAAA,CAE9B,GAAwB,UAAU,EAAE,AAAhC,OAAO,EACT,MAAO,AADU,CACV,EAAA,EAAA,sBAAA,AAAsB,EAC3B,GAAG,CAAG,CAAD,CAAU,GACf,GADc,AACX,CADmB,CAAC,AAChB,CAAC,EACR,EAGN,CAAC,AAEO,CALE,CACL,CAAC,iBAIsB,CAAC,CAAkC,CAAA,CAC7D,IAAM,EAAS,IAAI,AAAP,CAAQ,SAAS,EAAE,CAAC,AAEhC,MAAO,CACL,MAAM,CAAE,CACN,qBAAqB,CAAE,CAAA,EAAA,EAAA,aAAa,AAAb,EACrB,SAAS,CACT,EAAO,IAAD,mBAAwB,EAAE,MAAM,EAAE,cAAc,EAAI,EAAE,CAC5D,GAEF,aAFkB,CACjB,QACqB,CAAE,CAAA,EAAA,EAAA,aAAA,AAAa,EACnC,UAAU,CACV,EAAO,IAAD,mBAAwB,EAAE,MAAM,EAAE,eAAe,EAAI,EAAE,CAC7D,GAEH,CACD,MAAM,CAAE,CACN,IAJkB,CACjB,gBAGoB,CAAE,CAAA,EAAA,EAAA,aAAa,AAAb,EACrB,SAAS,CACT,EAAO,IAAD,mBAAwB,EAAE,MAAM,EAAE,cAAc,EAAI,EAAE,CAC5D,GAEF,aAFkB,CACjB,QACqB,CAAE,CAAA,EAAA,EAAA,aAAA,AAAa,EACnC,UAAU,CACV,EAAO,IAAD,mBAAwB,EAAE,MAAM,EAAE,eAAe,EAAI,EAAE,CAC7D,GAEH,CACF,AACH,CADI,AACH,CACF,AArgCD,EAAA,QAggC0B,CACjB,UAjgCT,CAAA,oBAqgCC,aCnlCE,OAAA,cAAA,CAAA,EAAA,aAAA,yCAEH,IAAA,EAAA,EAA6C,CAAA,CAAA,QAApC,MAAoC,CAApC,cAAA,CAAA,EAAA,sBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,mBAAmB,CAAA,GAAA,iGCFf,EAAgD,CAAA,SAApC,mCAsBlB,SACL,AADc,CACV,CAEJ,CADF,AACgB,CACd,CAAe,MAiDf,IAAI,EAjCJ,EACA,EADI,CApBgC,IAqB7B,EAfP,AAAI,KAEA,EA8CJ,EA9CQ,AACJ,EA8CJ,EA7CI,EA+CG,AAnDY,EAAE,IAmDR,CAAC,CAhDV,GA8CW,CADK,CAGA,AA/CD,CAgDjB,AAAC,IACC,IAAM,AAzDZ,AAwDa,EACS,EAAgB,CADX,EACf,AAEA,EAAe,CAAY,CAAC,CAFM,CAAC,AAEH,CACtC,CADsC,EAFP,AAG3B,EADE,AAIJ,OADA,EAAa,CAFC,EAAE,MAEM,CAAC,AAAX,GACL,EAGT,EAJgC,CAAC,CAI3BK,EAAkB,IAHH,AAGO,EAAqB,GAOjD,IAPwD,CAAA,CAAlD,CACN,CAAY,CAAC,EAAI,CAAIA,CAAJ,CAEjBC,CAHgD,CAGhDA,aAFoC,WAEZ,CAAC,CACvB,gBAAgB,CAAE,CAACD,EAAgB,AAC3C,CAAO,CAAC,CAEKA,CACT,CAAC,CACD,CAAE,EAAE,CAAE,CAAA,CAAM,EAAN,CALgC,GA1DT,EA6DL,EA7DS,AAAE,EAS9B,MAAM,CAAC,MAAM,CAT0E,AAU5F,AAAC,IACC,GADM,CACA,EAAe,CAAY,CADZ,AACa,EAAI,CACtC,CADsC,EAClC,EAKF,AANI,OAGA,GAFU,AAGZ,EAHc,AAGD,EADJ,EAAE,KACW,CAAV,AAAW,GAElB,EAGT,EALkC,CAAC,CAK7BA,EAAkB,EAAQ,EAHX,CAUrB,EAP+B,EAAQ,CAAC,EACxC,CAAY,CAAC,CADP,CACW,CAAIA,CAAJ,CAEjBC,EAAAA,aAFoC,WAEZ,CAAC,CACvB,gBAAgB,CAAE,CAACD,EAAgB,AAC3C,CAAO,CAAC,CAEKA,CACT,CAAC,CACD,CAAE,EAAE,CAAE,CAAA,CAAM,EA5BhB,AA4BU,CALgC,KAGd,oBAoDrB,SAAS,AAAiD,CAAe,EAAqC,AACnH,IAAI,GAAY,EACZ,EAA4B,CADX,CAAjB,AAC8B,CAElC,GA2BgG,CA7BnF,AAET,AAJ+B,CAI9B,OAAO,CA2B8F,EAAnG,OAAQ,AA3BF,EA2BsE,KAAO,CAzBnF,CACL,AAwBwF,IAxBlF,EAAe,AAwBR,AA3Ba,CAAC,CAGU,CAHR,IAGgB,AAE7C,EAF4C,CAAtC,AAEU,KAAO,AAFa,CAET,CAAC,AAAL,GAAQ,EAAhB,EAAoB,CACjC,EAAY,EAD2D,CAEvE,CADgB,CACN,EADV,KACS,AAAQ,CAAC,AAAD,GAAa,KAC9B,EAAY,CAD0B,CACxB,CAD0B,AAEjC,CAFkC,GACzC,CACuB,GAE3B,CAF+B,CAAC,EAAT,CAAC,CARtB,GAAY,EAoBd,EApBkB,EAAhB,GAoBK,AARkB,AAAC,IACpB,EACF,EAF8B,EAI9B,EAAU,CAJ2C,AAC1C,CACH,CADK,CACH,AAEI,AAIK,CAJJ,EAAN,AAEb,CAGF,AAHG,KAF0B,CAAC,yFCpIH,IAAA,OAAA,gBAAA,EAAA,gBAAA,uGCPS,sDAGA,IAAA,GAAO,0JCSpC,SAAS,AACd,CAAG,CACH,CAAc,CACd,CAA0B,CAC1B,CAAe,EAEf,IAAI,EAAiB,CAAC,CAChB,EAAmB,EAAE,CAE3Bjd,CAFY,CAEZA,CATuC,EAMnC,QAGJ,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,EAAiB,aAAF,QAAuB,CAAC,CAOhE,IAAM,EAAc,IAAI,KAAlB,EAAyB,CAEzB,CAF2B,CAG/B,AAA+B,SAD3B,GAEA,IAC+B,WAA/B,EACE,IACAid,EAAAA,oBAAoB,CAE5B,GAAI,CAEF,EAAI,CAAD,CAAC,CAAK,IAAI,KAAK,CAAC,EAAI,CAAD,CAAG,CAAE,CACzB,KAAK,CAAE,CAAC,EAAQ,EAAS,EAAX,EAAe,CAAN,AACrB,GAAM,CADqD,AACpD,EAAO,EAAU,CAAZ,EAAe,EAAQ,CAAb,AAAiB,EAEvC,EAF2C,CAAR,AAErB,MAAM,GAAhB,EAAkB,CACpBnd,EAAAA,AADE,WACF,EACEE,EAAAA,KAAK,CAAC,GAAG,CAAC,EAAiB,CAAC,YAAH,0CAAyD,EAAE,EAAY,CAAC,CAAC,CAAC,CAErG,IAAM,CAF2F,CAEhF,IAAI,EAAf,GAAoB,CAAC,EAAU,CACnC,KADiC,AAC5B,CAAE,CAAC,EAAQ,EAAS,EAAX,EAAe,CAC3B,AADqB,GACjB,CADyD,AAE3D,IAAM,EAAQ,CAAI,CAAC,CAAb,AAAc,CAAA,CACd,EAAmB,MAAM,CAAC,IAAI,CAAC,GAEjC,EAFsC,AAErB,CAFsB,EAGzC,EAAO,IAAD,AAAK,CAAC,CADkB,CAA5B,CAA8B,AAEhC,GAAkB,EAAiB,QADP,CAAC,AAC7B,CAA6C,EACpCF,EAAAA,AADyB,WACd,EAAE,AACtBE,EAAAA,KAAK,CAAC,GAAG,CACP,EACA,CAAC,YADc,+CAC6C,EAAE,EAAY,SAAD,KAAe,CAAC,CAG/F,CAAA,AAAE,MAAO,EAAM,CACbF,CADW,CACXA,WAAA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,EAAiB,aAAF,gCAA+C,CAAC,AAC5F,CAEA,OAAO,OAAO,CAAC,KAAK,CAAC,EAAQ,EAAS,EAAX,AAC7B,CAAC,AACb,CAFwD,AAE7C,CAFuC,AAAO,AAE7C,CAIF,OAFA,EAAY,GAAG,CAAC,EAAU,GAAf,AAEJ,GAFiB,EAAU,CAAC,CAErB,CAAC,KAAK,CAAC,EAAQ,EAAS,CAAC,CAAZ,CAAmB,EAAV,CAAQ,EAAe,EAAS,CAAd,AAAe,AACvE,CAEA,CAH0D,GAAW,GAG9D,OAAO,CAAC,KAAK,CAAC,EAAQ,EAAS,EACxC,AAD6B,CAC5B,AACP,CAFkD,AAE7C,CAF8C,AAE7C,AAFsC,CAMxC,EAAI,CAAD,EAAC,CAAM,IAAI,KAAK,CAAC,EAAI,CAAD,EAAI,CAAE,CAC3B,KAAK,CAAE,CAAC,EAAQ,EAAS,EAAX,EAAe,CAAN,AACrB,GAAM,CADsD,CACnD,EAAQ,CAAI,EAEf,EAFmB,AAER,CAFA,CAEY,GAAG,CAAC,GACjC,EAD4B,CACxB,EAAU,AAD2B,CAEvC,AAFwC,EAE5B,GADF,GACQ,CAAC,EAAR,CAEX,IAAM,CAFqB,CAAC,AAEP,EAAK,EAAD,GAAM,EAAE,CAEjC,AAFM,OACN,CAAY,CAAC,CAAC,CAAA,CAAI,EACX,MADmB,CACZ,CAAC,KAAK,CAAC,EAAQ,EAAS,EAAX,AAC7B,CAEA,EAHsC,KAG/B,EAH6C,CAAC,IAGvC,CAAC,KAAK,CAAC,EAAQ,EAAS,EACxC,AAD6B,CAC5B,AACP,CAAK,AAF6C,CAAC,AAE7C,AAFsC,CAIxC,EAAI,CAAD,CAAG,CAAC,KAAK,CAAE,KACZ,CADkB,EACd,CACF,IAAM,EAAO,EAAP,IAAa,CAAC,MAAM,CAAC,GAAQ,GAAF,CAAC,IAAS,CAAC,OAAO,CAAC,CACpD,GAAI,EAAM,CAGR,CAHM,GAGA,EADiB,AAErB,MAF2B,CAAC,IACxB,MADkC,CAAC,EAAM,EAAF,KAAS,CAAC,CAEpC,EACb,CAAC,EAAA,MAAA,CAAA,IAAA,CAAA,GACA,CADA,OACA,CAAA,CAAA,CAAA,EAAA,CAAA,EACA,MADA,EACA,CAAA,OAAA,CAAA,CAAA,GAAA,CAAA,CACA,EAEA,EAFA,AAEA,YAAA,YAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,CACA,CAAA,MAAA,CAFA,CAEA,CACAF,EAAAA,AADA,WACA,EAAA,AACAE,EAAAA,KAAA,CAAA,KAAA,CAAA,EAAA,aAAA,yBAAA,CAAA,EAEA,CACA,CAAA,CAAA,AAHA,AAIA,CAJA,AAIA,MAAA,EAAA,CACAF,EAAAA,AADA,WACA,EAAA,AACAE,EAAAA,KAAA,CAAA,KAAA,CAAA,EAAA,aAAA,2BAAA,CAAA,EAEA,CACA,EAHA,CAAA,wJCrFX,EAA+Bkd,EAAAA,gBAAgB,CAAC,OAAhD,0BAAiF,CAAC,CAClF,EAAmB,aAAa,CAEhC,AAFA,EAEsC,IAAI,IAS1C,EAAiB,IAAI,OAAO,CA4NO,AA5NnC,CAA0C,QA4NP,EACA,AAtOnC,CAsOmC,CACA,gBAFA,OAGA,CAAA,UACA,CAAA,wBACA,CAAA,CACA,EAMA,EAAA,mBAAA,KAAA,CAAA,CACA,cAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,AACA,CAAA,CAAA,CACA,EAAA,IAAA,CAAA,CAAA,MAAA,CAAA,KACA,CADA,GACA,EAAA,EAAA,UAAA,EAAA,EAAA,CAAA,IAAA,iBAAA,CAAA,cAAA,CAEA,GAAA,GAAA,EAAA,CAAA,AACApd,EAAAA,SADA,EACA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,CAAA,sCAAA,EAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAEA,EAFA,EAEA,EAAA,IAAA,IAAA,CACA,AADA,CAAA,CACA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAEA,EAAA,EAAA,GAAA,CAAA,GACA,EAAA,CADA,CAAA,CACA,CAAA,EAAA,EAAA,CAAA,CADA,KACA,CAAA,CAAA,CAAA,KAAA,CADA,CACA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAGA,GAFA,CAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAA,OAAA,CAAA,SAAA,CAAA,OAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,CAEA,CAFA,CAGA,CAAA,CAAA,EAAA,CAAA,MAAA,AACA,CACAF,EAAAA,CAFA,MADA,EAAA,EAGA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,uCAAA,CAAA,CACA,IAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CACA,EAAA,CADA,EACA,CAAA,CADA,CAAA,AACA,GAEA,CAFA,GAEA,EAAA,KACA,CADA,GAFA,CAAA,OAGA,CAHA,AAGA,GACA,IADA,AAEA,CAHA,AACA,CAEA,MAAA,CAAA,GAEA,GAFA,CAAA,AAEA,EAAA,GAHA,EAAA,CAGA,CAAA,OAAA,CAAA,EAFA,CAEA,GAAA,CACA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CADA,AACA,AACA,CAFA,MAEA,CAAA,EACA,MAAA,CAAA,AADA,EACA,GAAA,GAAA,CACA,OAAA,CAAA,EAAA,GAAA,IAAA,CACA,OAAA,CAAA,EAAA,GAAA,IAAA,CACA,CAAA,CAAA,CAEA,EAAA,IAAA,OAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,CAEA,EAAA,EAAA,EAAA,CAAA,CAAA,GAHA,GAGA,CAAA,KACAF,CADA,CACAA,GADA,QACA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,uDAAA,CAAA,CACA,GACA,CAAA,CAAA,CACA,EAAA,KAAA,KAAA,CAAA,KACAF,CADA,CACAA,EAHA,EAAA,OAGA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,4DAAA,CAAA,CACA,GACA,CAAA,CAAA,GAAA,KAAA,EAAA,AACA,CACA,CACA,CAAA,CACA,AADA,QAHA,CADA,AACA,EADA,aAtOlC,SAAS,AAAqB,CAAO,CAAwC,CAAQ,EAA2B,AACrHkB,EAAAA,aADkC,WACV,CAAC,EAAS,KAAF,eAAsB,CAAE,IAAI,OAAO,CAAC,GACtE,KAD8E,CAAC,CAAC,mBAGhD,CAAC,EAAwC,CAAA,CAAE,GAAnC,CACtC,CAD8E,GACxE,EAAW,CACf,QAAQ,CAAE,EAAQ,KAAD,GAAC,GAAY,EAC9B,EADkC,oBACZ,CAAE,EAAQ,KAAD,iBAAC,EAA0B,IAC1D,CADgE,iBAC9C,CAAE,EAAQ,KAAD,aAAC,EAAsB,QAAQ,CAC1D,iBAAiB,CAAE,EAAQ,KAAD,YAAkB,AAChD,CAAG,CAED,MAAO,CACL,IAAI,CAAE,EACN,SAAS,GAAG,AAOVic,EARoB,AAQpBA,SAAS,CAAC,2BAA2B,CANH,AAAC,CAMI,IANC,AAGtC,AAkCR,KArC4D,IAqCnD,AACP,CAAM,CACN,KApCsB,IAG6C,CAAC,IA+B7C,KAGrB,CAAiB,oBACjB,CAAkB,UAClB,CAAQ,wBACR,CAAsB,CAC1B,EAQE,IAAM,EAA2B,EAAO,IAAI,AAAL,CAEvC,GAAI,AAFc,EAEC,GAAG,CAAC,GACrB,KADgB,EAIlB,EAJmC,CAAC,CAI9B,CAJgC,CAItB,IAAI,CAAd,IAAmB,CAAC,EAAc,CACtC,KAAK,CAAC,CAAM,CAAE,CADsB,AACf,CAAE,CAAI,EAAuC,AAEhE,GAAI,AAAY,SAAS,EAAE,EAAnB,CAAC,CAAC,CAAA,CACR,OAAO,EAAO,IAAD,CAAM,CAAC,EAAS,GAG/B,CAHmC,CAAN,AAAO,EAG9B,EAASpZ,EAAAA,EAAT,OAAkB,EAAc,CAItC,GAAIqZ,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAiC,CAAC,EAC9D,IADoE,EAAE,CAC/D,EAAO,IAAD,CAAM,CAAC,EAAS,GAG/Btd,CAJ0D,AACvB,CADuB,AACtB,AAAP,AAG7BA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,EAAkB,cAAF,aAA6B,CAAC,CAEvE,IAAM,EAAiByG,EAAAA,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAC5C,EAAU,CAAI,CAAC,CAAC,CAAA,CAAhB,AACA,EAAW,CAAI,CAAC,CAAC,CAAA,CAEjB,CAFA,CAEoB4W,EAAAA,aAApB,WAA4C,CAAC,GAG7C,EAAa,EAHuC,AAGX,CAHY,CAGZ,EAAM,CAAlC,AAAb,CAAuD,KAAD,CAAO,EAAE,aAAa,CAE5E,EAAM,CAAN,CAAc,GAAA,EAAD,AAAQ,GAAG,CACH,SAAvB,CAAiC,EAAC,IAAoB,EAAK,CAAF,GAC3DC,EAAAA,CADoE,CAAC,CAAnE,CAAqE,CAAlB,oBAC5B,CAAC,EAAS,EAAgB,EAAoB,CAAtC,EAInC,EAAe,KAJoC,MAAoB,AAAkB,CAAC,AAI5E,YAAyB,CAAC,CAAE,iBAAiB,GAAE,SAAA,EAAA,CAAW,CAAC,CAKzE,IAAM,EAAa,CAAC,EAAQ,KAAtB,AAAqB,CAAC,EAAU,KAAA,CAAK,CAAE,WAAW,EAAE,CACpD,EAAiCC,EAAAA,wBAAwB,CAAC,CAA1D,EAA6D,AAE7D,CAF8D,CAElC,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAYA,CAZA,MAEA,EAAA,EAF7B,UAE6B,KAFA,CAEA,CAAA,GAEA,GAAA,GACA,EADA,AACA,CADA,CACA,CADA,AAEA,GADA,QAHA,CAAA,GAGA,MACA,CAAA,WACA,EACA,CAFA,KACA,gBACA,CAAA,GAAA,GACA,CAAA,CADA,AACA,CAGAzV,EAAAA,WAJA,OAIA,CAAA,EAAA,KACA,CADA,GACA,EAAA,CACA,AAFA,OAEA,CAAAxG,EAAAA,QADA,OACA,EAAA,CACA,UAAA,CAAAkc,EAAAA,wBAAA,EAAA,CACA,iBAAA,CAAA9a,EAAAA,cAAA,EAAA,AACA,CAAA,CAOAa,EAAAA,eAAA,EAAA,CAAA,qBAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CACA,EAAA,YAAA,SAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAEA,IAAA,EAAAka,CAAA,CAAAA,WAAAA,CACA,OAAA,CAAAL,EAAAA,OAAA,CAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EACA,MADA,EACA,CAAA,GAAA,GAEA,CAFA,CAAA,KAEAA,EAAAA,OAAA,CAAA,IAAA,CAFA,AAEA,EAAA,CAAA,IAEA,CAFA,CAEA,IAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,GAAA,AAEA,GAFA,CAEA,EAAA,EAAA,IAAA,CAAA,CAFA,CAAA,WAEA,EAAA,KAAA,EAAA,QACA,EACA,EAAA,IAAA,AADA,EAAA,AACA,IAAA,CAAA,CAAA,EAAA,IAAA,AAEA,CAFA,CAAA,AAEA,IAAA,CAAA,CAAA,EAAA,EACA,CAAA,CADA,AACA,AACA,CAAA,AAFA,CAEA,AACA,CAAA,AACA,CAAA,CAAA,CAEA,EAAA,GAAA,CAAA,GACA,EAAA,EADA,CAAA,CACA,CAAA,CACA,EA9IhB,AAFJ,EAES,EAAD,AA6IY,CA/IpB,GAEe,CAAE,EAChC,CAAC,CAAA,AAGH,CAAC,CACD,EAL0C,CAAC,UAK9B,CAAC,CAAM,EAAE,AAChBtd,EAAAA,WAAA,EAAe,EAAO,IAAD,gBAAqB,CAAC,MAAM,CAAC,EAAE,AACtDE,EAAAA,KAAK,CAAC,IAAI,CACR,mLAAmL,CAGzL,CAAC,AACL,CAAG,AACH,CAAC,CAAA,8MClGK,EAAmB,cAAnB,IAAqC,CAuPE,SAAA,EAAA,CAAA,EAAA,AACA,IAAA,EAAAud,EAAA,AAAAA,OADA,iBACA,CAAA,OAAA,CAAA,IAEA,EAAA,EAAA,GAAA,CAAA,mEAAA,CAAA,EAAA,AAKA,EAAA,EAAA,GAAA,CAAA,kEAAA,CAAA,CAKA,CALA,6BAxMR,CAAC,EAA6C,CAAA,CAAE,GAAxC,CAC3C,CADwF,GAClF,EAAqB,EAAQ,KAAD,SAA5B,IAA6B,GAAsB,EACnD,EADuD,AAC9B,EAAQ,KAAD,aAAhC,IAAuD,CACvD,EAAoB,EAAQ,KAAD,QAA3B,IAA4B,EAAqB,CACrD,CAAC,GAAG,CAAE,GAAG,CAAC,CAEV,CAAC,GAAG,CAAE,GAAG,CAAC,CACV,CAAC,GAAG,CAAE,GAAG,CAAC,CACX,CAEK,eAAE,CAAA,CAAc,CAAI,EAEpB,KAF2B,QAEzB,CAAW,cAAE,CAAY,6BAAE,CAAA,CAA4B,CAAI,EAAQ,KAAD,UAAC,EAAmB,CAAA,CAAE,CAEhG,MAAO,CACL,IAAI,CAAE,EACN,KAAK,CAAC,CAAM,EAAc,CAEU,IAHd,AAGhB,OAAO,AAAuB,IAAe,cAAtC,EAAuC,kBAAA,CAAkB,EAAE,AAItE,EAAO,EAAE,CAAC,CAAJ,kBAAuB,CAAE,CAAC,EAAU,EAAW,IAAb,CA8GDU,EAAAA,AA9GY,UAAmB,KAAK,KA8GpC,CAAA,EAzGnB,AAAC,IAAI,CAyGc,EAAA,EAzGe,OAyGf,CAAA,CAxGnC,GAmLmC,AAlLjC,SAmLiC,AADA,CACA,CACA,oBACA,CAAA,GArLE,CAAC,OAAO,CAkLV,YAIA,CAAA,CACA,EAKA,GAAAC,EAAAA,mBAAA,CAAAd,EAAAA,OAAA,CAAA,MAAA,EAAA,CAAA,CACA,CADA,KACA,GAKA,CALA,GAKA,EAAA,EAAA,GAAA,CAEA,CAFA,CAEA,EAAA,EAAA,GAAA,CAAA,EAAA,WAAA,EAAA,UAEA,SAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,CAAA,EAAA,CAKA,GAAA,CALA,EAAA,EAKA,GAAA,GAAA,EAAA,CAAA,CAAA,EAIA,GAJA,CAAA,AAIA,EAJA,AAIA,GAKA,EALA,EA/MY,AA+MZ,CA9M/B,AA0M+B,AAIA,EAAA,MAAA,UA9Mb,0BAClB,CACd,CAAa,EAGD,CAFA,MACAtd,EAAAA,SAHwB,EAGxB,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,EAAkB,cAAF,+BAA+C,CAAE,EAAQ,GAAG,CAAC,CAAL,AAC1F,IAAI,AAGb,EAHe,EAGT,EAAU,EAAkB,GAAA,AAA5B,EAAmC,EAAQ,GAAA,EAAD,AAAQ,GAAvB,AAA0B,CACrD,EAAS0L,EAAAA,EAAT,oBAA+B,CAAC,GAEhC,EAAU,EAF6B,AAErB,CAFsB,EAExC,EAAiB,EAAQ,CACzB,EAAY,CAAO,CAAC,KAApB,OAAgC,CAAC,CACjC,EAAM,CAAN,AAAa,CAAC,iBAAiB,CAAC,CAChC,EAAc,EAAQ,KAAD,EAArB,IAAiC,CACjC,EAAO,EAAP,AAAe,IAAI,CAAL,AACd,EAAW,GAAM,CAAF,EAAf,IAAwB,CAAC,oBAAoB,CAAE,IAAI,CAAA,EAAK,WAAW,CAEnE,EAAS,EAAO,EAAhB,EAAe,EAAO,CACtB,EAAS,EAAQ,EAAjB,GAAgB,KAAW,CAAC,OAAO,CAAA,CAAI,OAAA,CAAU,MAAM,CAEvD,EAAS,EAAkB,EAA3B,IAA2B,EAAU,EAAQ,KAAnB,AAAkB,CAAO,EAAE,WAAW,EAAC,EAAK,KAAK,CAC3E,EAAiC,EAAS,EAAO,EAAhB,EAAe,IAAC,CAAW6R,EAAAA,aAA5D,WAAoF,CAAC,GACrF,EAA4B,CAAC,CAD+D,CAAC,AAChE,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAGA,EAAA,EAAA,IAAA,GAH7B,EAG6B,CAAA,EAAA,CACA,IAAA,CAAAG,EAAAA,EAJA,MAIA,CAAA,MADA,AACA,CACA,UAAA,CAAA,CAEA,CAAAva,EAAAA,4BAAA,CAAA,CAAA,aAAA,CACA,CAAAC,EAAAA,gCAAA,CAAA,CAAA,qBAAA,CACA,sBAAA,CAAA,AA0HA,GAAA,GAAA,EAAA,CAAA,MAAA,CAAA,MA1HA,CAAA,OAAA,CAAA,OA0HA,CAAA,OA1HA,EAEA,OAFA,GAEA,CAAA,EACA,KADA,QACA,CAAA,EAAA,MAAA,CACA,QADA,KACA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,IAAA,IAAA,CAAA,EAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EACA,WAAA,CAAA,EACA,EADA,YADA,CAEA,CAAA,EACA,MADA,UACA,CAAA,QAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EACA,OADA,UACA,CAAA,EACA,OADA,MACA,CAAA,EACA,IADA,SACA,CAAA,EACA,SADA,MACA,CAAA,GAAA,QAAA,GAAA,EAAA,GAAA,MAAA,CAAA,QAAA,CAAA,QAAA,CACA,GAAA,AA2KA,IAAA,EAAA,CADA,EAAA,AAgBA,IAhBA,KAgBA,CAAA,EAAA,AACA,IAjBA,AAiBA,EAAA,CAAA,CAAA,GA3LA,CAAA,CA0LA,MA1LA,CAAA,GA2LA,CAAA,CAAA,CACA,QAAA,IAAA,EAAA,GAAA,IAAA,IAAA,CAEA,IAAA,CAFA,CAEA,QAAA,CAAA,EAAA,EAAA,CAAA,QACA,KAAA,CADA,AACA,GAAA,IAAA,CAEA,CACA,EAxBA,CADA,CAsBA,CAAA,EAAA,CArBA,CAAA,CADA,EAAA,AAwBA,GAvBA,CAAA,EAEA,CAAA,CAAA,CA2BA,CAFA,AAEA,CAAA,CAxBA,AAsBA,EAtBA,IAsBA,CAtBA,AAwBA,EAxBA,AAsBA,CAAA,AAtBA,EAAA,gBAsBA,CAAA,GAEA,UAAA,GAAA,EAvBA,CACA,KAsBA,wBAtBA,CAAA,CACA,CAAA,CAEA,CACA,EAJA,wCAIA,CAAA,CACA,CAAA,AATA,CA5KA,GAoLA,AApLAua,EAAAA,2BAAA,CACA,EAAA,OAAA,EAAA,CAAA,CAAA,CACA,EAAA,CADA,GACA,MAAA,EAAA,CAAA,cAAA,GAAA,EACA,AACA,CAAA,AACA,CAAA,CAAA,AAHA,CAMA,IAAA,IAAA,CACA,CADA,CAAA,EACA,IADA,AACA,CADA,AAEA,CADA,EAAA,CACA,IAAA,CADA,CAAA,AACA,CACA,IAAA,EADA,EACA,AADA,EACA,CAEA,EAFA,EAEA,CAHA,CAAA,AACA,AAEA,CACA,CAHA,GAGA,CAAAC,EAAAA,CADA,CAFA,CAAA,IAGA,CAAA,IAAA,MACA,CACA,CAAA,CAEA,CAHA,MAGAR,EAAAA,OAAA,CAAA,IAAA,CAAAS,EAAAA,cAAA,CAAAC,EAAAA,KAAA,CAAA,OAAA,CAAAV,EAAAA,OAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KACAA,CADA,CACAA,CADA,CAAA,KACA,CAAA,IAAA,CAAAA,EAAAA,OAAA,CAAA,MAAA,EAAA,EAAA,EACAA,EAAAA,GADA,CAAA,GACA,CAAA,IAAA,CAAAA,EAAAA,OAAA,CAAA,MAAA,EAAA,EAAA,EAIA,IAAA,EAJA,AAIA,CAJA,EAKA,EADA,OACA,EAAA,CAAA,EAAA,AACA,EADA,CACA,EACA,KADA,EAAA,AAIA,GAAA,EAEA,EAFA,EAEA,EAAA,AAyKA,SAAA,CAAA,CAzKA,AAyKA,CAAA,EAAA,AAGA,GAAA,QAAA,CAAA,CAAA,CAAA,EACA,CAAA,IADA,GA5KA,CAAA,IA6KA,GA7KA,CAyKA,CAzKA,QAAA,CAAA,CA6KA,CAAA,CAAA,CAAA,EAEA,EAAA,CACA,CAAAe,EAHA,AAGAA,OADA,uBACA,CAAA,CAAA,EAEA,CAAAC,EAAAA,KAFA,oBAEA,CAAA,CAAA,EACA,QADA,UACA,CAAA,GAAA,UAAA,CAAA,EAAA,AACA,CAAA,CAEA,EAAAC,EAAAA,OAAA,OAAA,CAAAjB,EAAAA,OAAA,CAAA,MAAA,EAAA,CAAA,CACA,GAAA,EAAA,CACA,GADA,AACA,cAAA,CAAA,WAAA,CAAA,eAAA,CAAA,YAAA,CAAA,CAAA,CAAA,EAEA,CAAA,CAAAkB,EAFA,AAEAA,oBAAA,CAAA,CAAA,EAEA,CAAA,CAAAC,EAAAA,MAFA,gBAEA,CAAA,CAAA,EAEA,CAAA,CAAAC,EAAAA,GAFA,iBAEA,CAAA,CAAA,EACA,CAAA,CAAA,SADA,MACA,CAAA,CAAA,CACA,CAKA,GAHA,CAAA,CAAAJ,EAAAA,CAHA,wBAGA,CAAA,CAAA,EACA,CAAA,CAAA,MADA,YACA,CAAA,CAAA,IAAA,EAAA,CAAA,CAAA,KAAA,MAAA,EAAA,CAEA,GAAA,IAAA,GAAAR,CAAA,CAAAA,OAAA,CAAA,IAAA,OAAA,IAAA,EAAA,GAAA,EAAA,CAAA,CACA,EADA,EACA,EAAA,EAAA,KAAA,CACA,CAAA,CAAAa,CADA,CACAA,eAAA,CAAA,CAAA,CACA,CAEA,OAHA,AAGA,CACA,OA1MA,EAAA,EAAA,CAyMA,UAzMA,CAAA,GACA,EAAA,EAAA,MADA,CAAA,AACA,CAAA,GACA,EAAA,CADA,CAAA,AACA,CAAA,EAAA,CAGA,IAAA,EAAA,CAAA,CAAA,CAAA,WAAA,CAAA,CACA,GACAhY,EAAAA,AADA,EAAA,eACA,EAAA,CAAA,kBAAA,CAAA,CAAA,EA3FrB,AA2FqB,EAAA,KAAA,CA3FrB,AA2FqB,EAAA,WAAA,EAAA,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAEA,AAFA,CAaA,AAbA,OAIA,EAAA,EAAA,CAAA,GAAA,IAAA,CAAA,KACA,CADA,CACAsX,EAAAA,GAAA,sBAAA,CAAA,EAAA,MAAA,IAAA,CAAA,CAAA,AACA,CAAA,CAAA,CACA,EAAA,EAAA,CAAAC,EAAAA,CAAA,WAAA,CAAA,KACA,CADA,GACA,EAAAD,EAAAA,MAAA,mBAAA,CAAA,AAlGpB,EAkGoB,MAAA,CAlGpB,GAkGoB,CAAA,CAEA,EAAA,EAAA,GAAA,CAAA,GAAAna,CAAA,CAAAA,iBAAA,CAAA,EAAA,CAAA,IAAA,CAAAA,EAAAA,AAAA,iBAAA,CAAA,CAAA,AACA,CAAA,CAAA,CAEA,GACA,CADA,AACA,CAAA,AACA,CAFA,AAEA,CAGA,CAAA,CAAA,AACA,CAAA,CACA,YAAA,CAAA,CAAA,EAAA,AAEA,GAAA,aAAA,GAAA,EAAA,GAAA,CAAA,CAAA,OACA,IAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,KAAA,EAAA,IAAA,EAAA,CAAA,2BAAA,CAAA,CACA,GAAA,QAAA,EAAA,OAAA,IAgLA,EA/KA,EAgLA,AAhLA,EAgLA,AAjLA,IAgLA,AACA,CAAA,CADA,AA/KA,GAgLA,AACA,GAAA,CADA,EAhLA,CAgLA,AAhLA,IAiLA,EAAA,EAFA,EAAA,GAEA,EACA,EADA,KACA,IAAA,EAGA,GAAA,CAAA,EAAA,CAAA,CAAA,AAHA,CAGA,EACA,EADA,KACA,GAAA,GAAA,GAAA,CAAA,AACA,CAAA,CAAA,AADA,EAnLA,EAmLA,KApLA9D,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,yCAAA,CAAA,GACA,IAAA,AAGA,CAEA,EANA,CAAA,IAMA,CACA,CAAA,CACA,EAFA,WAEA,CAAA,CAAA,EAAA,AACAF,EAAAA,WAAA,EAAA,CAIA,EAAA,IAAA,gBAAA,CAAA,MAAA,CAAA,EAAA,AACAE,EAAAA,KAAA,CAAA,IAAA,CACA,6LAAA,EAIA,EAAA,IAAA,gBAAA,CAAA,aAAA,CAAA,EAAA,AACAA,EAAAA,KAAA,CAAA,KAAA,CACA,+MAAA,EAGA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,gJCjPtC,SAAS,AACd,CAAQ,CACR,CAAO,EAEP,GAAI,CAAC,EACH,MADW,CACJ,CADM,AAJkB,CAQjC,IAAM,CAHU,CAGe0e,EAAAA,kBAAzB,AAA2C,CAAC,GAC5C,EAAoBA,EAAAA,CADgC,CAAC,WACrD,KAAsC,CAAC,GAE7C,GAAI,CAAC,AAF+C,CAAC,CAGnD,OAAO,EAIT,IAAM,EAA2C,AAJhC,AADK,CAK2B,CAAE,AAL3B,CAMlB,EAA8C,CAAA,CAAE,CACtD,IAAK,EAFiB,CAEX,CAAC,EAAK,CAAF,CAAO,EADG,CACH,AAAK,MAAM,CAAC,OAAO,CAAC,GACpC,EAAI,CAAD,SAAW,CAACxQ,CADsC,CAAC,AACvCA,CADyC,wBAChB,CAAC,CAC3C,CAAgB,AAD6B,CAC5B,EAAG,CAAA,AAAI,EAExB,CAAmB,CAAC,CAFS,CAEN,CAAI,AAAJ,EAI3B,GAJoC,CAI9B,EAAsB,MAAM,CAAC,IAAI,CAAC,GAAkB,EAApD,IAAoD,CAAS,CAAC,CAK9D,EAA+C,CAAA,CALG,AAKD,CALE,AAMzD,GAAI,EACF,IAAK,GAAM,CAAC,EAAK,AAFO,CAET,CAAO,GAAA,AAAK,KADH,CACS,CADP,AACQ,OAAO,CAAC,GACpC,GAAuB,EAAI,CAAD,SAAW,CAACA,EAAAA,CADoB,AAC1D,CAD2D,CAAE,sBACE,CAAC,EAAE,CAGtE,CAAoB,CAAC,EAAG,CAAA,AAAI,CAAA,CAAK,CAMrC,IAAK,GAAM,CAAC,EAAK,CAAF,CAAO,GAAA,AADtB,MAAM,CAAC,MAAM,CAAC,EAAsB,GACT,MAAM,CAAC,MADkB,CACX,AADY,CACX,AADR,IAE5B,AAAC,CAAoB,CAAC,EAAI,CAAD,CAAG,CAC9B,CAAoB,CAAC,EAAG,CAAA,AAAI,CAAA,CAAK,CAIrC,AAN6D,CAAC,CAAE,KAMzDyQ,EAAAA,qBAAqB,CAAC,EAC/B,kBADmD,CAAC,0GC5C9C,EAAa,QAAb,sBAA2C,CA8IV,SAAA,EAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,IAAA,CAAA,CADA,GACA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAA,CAAA,AACA,EAAA,EAAA,IAAA,CAAA,GAAA,CACA,EAAA,EAAA,IAAA,CAAA,AAEA,MAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CACA,AADA,CAAA,uBAhJhC,SAAS,AAAqB,CAAO,CAAiB,CAAQ,EAAqC,AACxG,IAAM,EAkGR,AAlGe,EAAP,OAkGmB,AAAlB,AAnG2B,CAmGF,EAAgD,AAChF,GAAI,CAEF,CArG4B,GAqGtB,EAAO,EAAP,AAAe,EAHC,GAGF,IAAU,CAAC,MAAM,CAAA,EAAK,EAAQ,IAAI,CAAL,AAC3C,EAAM,CAAN,GAAU,GAAG,CAAC,EAAQ,IAAI,CAAL,AAAO,CAAC,EAAA,EAAA,KAAA,GAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CACA,EAAAI,EAAAA,KAAA,GAAA,CAAA,EAAA,CAAA,OAAA,EAAA,CAAA,CAEA,EAAA,CACA,CADA,EACA,CAAAC,EAAAA,qBAAA,CAAA,GACA,MADA,CAAA,MACA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,AACA,CAAA,CASA,OAPA,EAAA,MAAA,CAAA,CAAA,AACA,EAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAEA,EAAA,IAAA,EAAA,CAAA,AACA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAGA,CAHA,AAIA,CAAA,EADA,GACA,CACA,MAAA,CAAA,CAAA,AACA,CACA,EAzHN,GAEzB,EAAa,EAFmB,CAAC,AAEV,KAAvB,AAAqB,KAAY,CACjC,EAAQJ,EAAAA,CAAR,sCAA+C,CAAC,GAEtDjR,EAAAA,KAFgE,CAAC,OAEpD,CACX,CACE,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,CACJ,WAAW,CAAE,EACb,GAAG,CAAI,AACf,CAAO,CACD,EAHyB,EAGrB,CAAE,MAAM,OACZ,CACN,CAAK,CACD,CACE,CAHK,IAGA,CAAE,UAAU,SACjB,OAAO,IACP,CACN,CAAK,CAEL,KAHc,2CAUP,SACL,AADc,CACP,CACP,CAAsB,EAEtB,IAAM,EAAM,CAAN,CAA0B,GAE1B,IAFiC,CAAC,SAAT,WAEvB,CAAuB,CAN0B,qBAMxB,CAAA,CAAA,CAAyB5J,EAAAA,SAAS,EAAE,EAAE,UAAU,EAAC,EAAK,CAAA,CAAE,CACnF,EAAe8a,EAAAA,0BAA0B,CAAC,EAAK,CAAF,CAA2B,GAC1EzS,EAAAA,YAAY,CAAC,GAD2D,CAAwB,kBACjF,CAAA,CAAsB,OACrC,EAEJ,GAAI,CAAC,EACH,CAHW,MAMb,GAJiB,AAIX,CAAE,CAJW,aAIG,CAAE,CAAW,CAAA,QAAExJ,CAAO,aAAE,CAAA,CAAY,CAAI,EAI9D,IAFuC,AAEnC,EAF2C,IAF2B,CAE5B,IAAU,CAAC,cAAc,CAAC,CAExC,CAIhC,CAJkC,EAI9B,EACF,GAAI,CACF,EAAQ,GAFG,EAAE,AAEN,IAAU,CAAC,cAAc,CAAE,GAClC9C,EAAAA,MAD6C,CAAC,IAC9C,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,EAAY,QAAF,uCAAiD,CAAC,AACvF,CAAA,AAAE,MAAO,EAAO,CACdF,EAAAA,AADY,WACZ,EACEE,EAAAA,KAAK,CAAC,KAAK,CACT,EACA,QADU,gDAC8C,CACxDM,EAAAA,OAAO,CAAC,GAAS,EAAJ,AAAU,CAAV,EAAS,IAAC,CAAU,eAAe,CAEtD,CAGF,GAAI,GAAe,CAAC,EAAQ,KAAxB,AAAuB,IAAU,CAAC,aAAa,CAAC,CAClD,CADoD,EAChD,CACF,EAAQ,KAAD,IAAU,CAAC,aAAa,CAAE,GACjCR,EAAAA,MAD4C,CAAC,IAC7C,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,EAAY,QAAF,sCAAgD,CAAC,AACtF,CAAA,AAAE,MAAO,EAAO,CACdF,EADY,AACZA,WAAA,EACEE,EAAAA,KAAK,CAAC,KAAK,CACT,EACA,QADU,+CAC6C,CACvDM,EAAAA,OAAO,CAAC,GAAS,EAAJ,AAAU,CAAV,EAAS,IAAC,CAAU,eAAe,CAEtD,CAGF,GAAIsC,EAAS,CACX,IAAM,EAAkB,AADf,EACuB,KAAD,IAAU,CAAC,SAAS,CAAC,CAC9C,EAAakc,EAAAA,mBAAmB,CAAC,EAAiBlc,GACxD,GAAI,EACF,CAF6D,CAAC,CAE1D,CACF,CAHkD,CAG1C,EAFE,EAAE,CAEL,IAAU,CAAC,SAAS,CAAE,GAC7B9C,EAAAA,KADuC,CAAC,KACxC,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,EAAY,QAAF,kCAA4C,CAAC,AAClF,CAAA,AAAE,MAAO,EAAO,CACdF,EADY,AACZA,WAAA,EACEE,EAAAA,KAAK,CAAC,KAAK,CACT,EACA,QADU,2CACyC,CACnDM,EAAAA,OAAO,CAAC,GAAS,EAAM,AAAV,CAAA,EAAS,IAAC,CAAU,eAAe,CAEtD,CAEJ,EACF,8CA4BuC,SAAA,CAAA,EAAA,AACA,MAAA,CACA,MAAA,CAFA,AAEA,EAAA,KAAA,CAAA,CACA,QAAA,CAAA,EAAA,KAAA,GAAA,CACA,IAAA,CAAA,EAAA,IAAA,CAAA,AACA,QAAA,CAAA,EAAA,IAAA,CAAA,AACA,IAAA,CAAA,EAAA,IAAA,CAAA,AACA,OAAA,CAAA,EAAA,KAAA,KAAA,EACA,AADA,CACA,AACA,8NC0BhC,OAAM,UAAkC2e,EAAAA,aAAlC,MAAqD,CAAmC,AAI5F,WAAW,CAAC,EAA2C,CAAA,CAAE,CAAE,CAChE,AADuB,KAClB,CAACC,EAAAA,oBAAoB,CAAErf,EAAAA,WAAW,CAAE,GAEzC,GAF+C,CAAC,AAE5C,CAAC,uBAAA,CAA0B,IAAIsf,EAAAA,MAAM,CAAkB,GAAG,CAAC,CAC/D,IAAI,CAAC,0BAAA,CAA6B,IAAI,OAAO,AAC/C,CAGO,CAJuE,GAInE,EAA+E,CAGxF,IAAI,EAAwB,GAEtB,EAF2B,AAEG,AAAC,IAEnC,CAFwC,GAEpC,CAAC,CAFiD,IAFpD,UAEE,SAEyB,CADhB,AACiB,EAAK,EAAD,CADrB,IAC6B,CAAE,EAAK,EAAD,MAAS,CAAC,AAC5D,CAAC,CAAA,AAEK,EAA4B,AAAC,IAEjC,CAFsC,GAElC,CAAC,CAF+C,YAAhD,WAEyB,CAAC,AADjB,EACsB,EAAD,CADrB,IAC6B,MAAE,EAC9C,CAAC,CAAA,AAEK,EAA8B,AAAC,GAHkB,CAAC,AAKtD,CAFwC,GAEpC,CAAC,CAFiD,cAAlD,UAE0B,CAAC,AADlB,EACuB,EAAD,CADtB,IAC8B,CAC7C,AAD8C,CAC7C,CAEK,AAFL,EAEY,AAAyB,EAAhC,EACA,IAIJ,GAAwB,EAExBhC,AAPiD,EAKrB,AAE5BA,GAP4D,MAOnD,CAAC,AANe,EAAE,EAI3B,yBAEuC,CAAE,GAIzCA,EAAAA,SAAS,CAAC,WAJyD,CAAC,eAI/B,CAAE,IAKnC,IAAI,CAAC,SAAS,EAAE,CAAC,GAL0C,CAAC,4BAK3C,EAAoC,IAAI,CAAC,SAAS,EAAE,CAAC,8BAAA,AAA8B,EAAE,CACxGA,EAAAA,SAAS,CAAC,6BAA6B,CAAE,IAflC,GAoBL,EAAS,IAAT,CACJiC,CADyB,CACzBA,CArBsB,SAe+C,CAM1D,AAN2D,CAM1D,6BAA6B,CAAE,GAC3CA,EAAAA,WAAW,CAAC,SADyD,CAAC,iBAC/B,CAAE,GACzCA,EAAAA,WAAW,CAAC,OADqD,CAAC,qBACzB,CAAE,EAC7C,CAAC,CAUD,MAAO,CACL,IAAIC,EAAAA,SAZiE,CAAC,yBAY/B,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,CAAE,EAAM,EAAF,CAC3D,GADmE,CAAC,AAChEA,EAAAA,mCAAmC,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,CAAE,EAAM,EAAF,CAC7D,AACH,CAMQ,EARgE,CAAC,yBAQrC,CAAC,CAAO,CAA4B,CAGtE,IAAM,EAAe,EAAQ,IAAI,CAAL,AAEtB,CAAC,EAAM,AAFP,EAEK,AAAY,CAAI,AAuK/B,OAvK2B,EAuKlB,AAA4B,CAAO,EAAgD,AAC1F,IAAM,EAAMK,CAAN,CAAMA,OAxK4C,SAuKtB,GACH,CAAC,GAE1B,CAAC,EAAM,CAF0B,CAAC,AAE7B,AAAY,CAAIC,EAAAA,KAAJ,0BAAmC,CACxDjU,EAAAA,sBAAsB,CAAC,GAAG,AAC1B,CAD2B,OACnB,CACR,qBAAqB,CACrB,GAGI,EAAY,EAAQ,AAHjB,KAGgB,IAAU,CAAC,YAAY,CAAC,CAEjD,MAAO,CACL,EACA,CACE,CAFE,AAEDvI,EAAAA,4BAA4B,CAAA,CAAG,aAAa,CAC7C,WAAW,CAAE,QAAQ,CACrB,CAACyc,EAAAA,wBAAwB,CAAA,CAAG,EAC5B,CAACC,EAAAA,IADoC,SACvB,CAAA,CAAG,EACjB,CADoB,SACV,CAAE,EACZ,CADe,YACF,CAAE,EAAQ,KAAD,CAAO,CAC7B,aAAa,CAAE,EAAQ,IAAA,CAAD,CAAS,GAAG,CAClC,eAAe,CAAE,EAAQ,IAAI,CAAL,AACxB,WAAW,CAAE,EAAQ,KAAD,IAAU,CAAC,MAAM,CAAC,CACtC,GAAG,CAAU,AACnB,CAAK,CAEL,AADG,EAjMwD,GAEjD,EAAO5Y,EAFiD,AAExD,AAAOA,CAFkD,gBAEjC,CAAC,MAC7B,IAAI,SACJ,EACA,QADU,IACE,EAAE,CACpB,CAAK,CAAC,CADkB,AAGpB,IAAI,CAAC,SAAS,EAAE,CAAC,mBAAmB,GAAG,EAAM,EAAF,CAmB3C,EAAQ,EAnB4C,CAAC,CAmB7C,CAAD,AAjBS,EAiBD,EAjBK,KAiBE,AAjBG,CAAC,EAAc,CACtC,KAAK,CAAC,CAAM,CAAE,CAAO,AADe,CACb,CAAI,EAAmC,AAC5D,GAAM,CAAC,EAAK,CAAI,EAAJ,AACZ,EADoB,CACN,UAAU,EAAE,CAAtB,EACF,GADE,IACK,EAAO,IAAD,CAAM,CAAC,EAAS,GAG/B,CAHmC,CAAN,AAAO,EAG9B,EAAgBmW,EAAAA,OAAO,CAAC,CAAxB,KAA8B,EAAE,CAChC,EAAiBU,EAAAA,KAAK,CAAC,IAAvB,GAA8B,CAAC,EAAe,GAEpD,CAFwD,CAAC,KAElDV,CAF2C,CAE3CA,OAAO,CAAC,IAAI,CAAC,EAAgB,IAC3B,EADiC,AAC1B,IAAD,CAAM,CADa,AACZ,EAAS,GAEjC,CAAC,AACP,AAH2C,CAAC,AAGvC,AAHgC,CAG/B,CAQF,IAAI,GAAmB,EAEjB,EAAU,AAAC,CAFW,GAGtB,CADA,CAAiB,EAIrB,CANE,EAMiB,AAJyB,EAM5C,EAFuB,AAElB,EAAD,GALgB,EAAE,EAKR,AAFd,CAEe,GACf,EAAK,CADgB,CAAC,AAClB,CAAI,EAAE,CACZ,CAAC,CA6CD,OA3CA,EAAQ,KAAD,UAAgB,CAAC,UAAU,CAAA,AAAE,IACO,CAAC,EAAtC,AAAwC,EAAhC,GADkC,EACnC,QAAc,CAAC,UAAU,CAAA,EAClC,EAAS,MAAD,AAAO,EAAE,CAGnBA,EAAAA,OAAO,CAAC,IAAI,CAACA,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAE/B,IAAM,CAFiC,CAAC,AAmJ9C,AAjJmC,SAiJ1B,AAAiC,CAAQ,EAAwC,IA4B9C,EA7KhC,MA6KwC,AAiC5C,EA5DA,AA2BoF,MAiCpF,AA9M2D,MAkJzD,CAAU,EADqB,aACnB,CAAa,aAAE,CAAW,CAAE,QAAA,CAAO,CAAI,EAErD,EAA0C,IAFmB,EAEnB,CAA1C,EAAY,EAAY,SAAD,EAAY,EAAC,CAAe,QAAA,CAAW,QAAQ,CAEtE,EAAuC,CAC3C,CAACe,EAAAA,cADuB,gBACO,CAAA,CAAG,EAClC,CAAC2B,EAAAA,KAD2C,wBACd,CAAA,CAAG,EACjC,SAD4C,IAC/B,CAAE,EACf,CAACC,EAAAA,MADyB,gBACH,CAAA,CAAG,EAC1B,OADmC,QACpB,CAAE,EAChB,OADyB,WACP,CAAG,AAAH,GAAkB,UAAF,CAAa,EAAE,CAClD,kBAAkB,CAAE,EACpB,GAAG,AAiBL,AAAI,AAAU,IAAI,CAlBc,CAkB5B,AAAgB,CADd,EAAS,AAcjB,SAA0B,AAAjB,CAAwB,EAA2E,AAC1G,IAAM,AAfyB,EAeH,CAAO,CAAC,KADb,AA9BgB,UA+BjC,CAA8C,CAAC,CACrD,GAAmC,QAAQ,EAAvC,AAAyC,OAAlC,EACT,OAAO,EAET,GAAI,AAA+B,KAHxB,GAGgC,EAAE,IAFjB,GAEjB,EACT,OAAO,AAGT,IAAM,EAAgB,GAHJ,CADP,IAImB,CAAC,EAAqB,EAAE,CAAC,CACvD,IAAI,KAAK,CAAC,GADwC,AAKlD,OAAO,CACT,EA7BkC,AAwBT,CAAC,EAxCgB,AAwCd,GAxBe,EAAD,EA4BpB,CA5C4B,CAAC,CAgBD,CAAC,EAExC,CAAA,CAAE,CAgCJ,CAAC,CAAC,CA7BQ,AA2BA,EA3BS,MAAD,CAAQ,AA2BT,CA3BU,AA2BT,EA3BW,gBA2BO,CAAC,GAEV,UAAU,GAAvB,EA3BZ,CAAE,CAACG,EAAAA,EA2BS,mCA3B4B,CAAA,CAAG,CAAA,CAAQ,CAGnD,CAAE,CAACC,EAAAA,kDAAkD,CAAA,CAAG,CAAA,CAAQ,AAzB3E,AAkBE,CAlBC,CAED,GAAI,EAAQ,CACV,GADQ,AACF,eAAE,CAAa,YAAE,CAAA,CAAW,CAAI,EAEtC,CAAoB,CAACH,EAFuB,AAEvBA,yBAAyB,CAAA,CAAI,EAClD,CAAoB,CAACC,EAAAA,OAD0C,eACpB,CAAA,CAAI,EAC/C,CAAoB,CAAC,MADoC,OACvB,CAAA,CAAI,EACtC,CAAoB,CAAC,SAD8B,MACf,CAAA,CAAI,CAC1C,CAEA,OAAO,CAH6C,AAItD,EA3KoE,GAC9D,EAAK,EAAD,CADkE,CAAC,QA0KhD,CAzKL,CAAC,GAEnB,IAAI,CAAC,SAAS,EAAE,CAFuB,AAEtB,CAFuB,mBAEH,GAAG,EAAM,EAAF,CAC5C,IAAI,CADkD,AACjD,CADkD,QACzC,EAAE,CAAC,oCAAoC,GAAG,EAAM,EAAF,AAAW,GAEvE,EAFqE,EAE/D,CAFyE,CAAC,AAE7D,CAAC,GAAsB,CAAK,IAC7C,CADwD,CAA5B,EACxB,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAQ5C,EAJE,GAA6C,EAIxC,CAAC,KAJuC,CAIjC,CAJE,AAID,OAJQ,EAAS,MAAD,IAAC,EAA4B,EAAS,MAAD,CAAC,EAAW,CAAC,EAAS,MAAD,EAAS,CAC5F,CAAE,IAAI,CAAEX,EAAAA,cAAc,CAAC,KAAA,EACvBvB,EAAAA,yBAAyB,CAAC,EAAS,MAAD,IAAW,CAAC,CAGtD,CAAC,CAED,EAAS,EAAE,CAAC,GAAJ,EAAS,CAAE,KACjB,CADuB,EAEzB,CAAC,CAAC,CACF,EAAS,EAAE,AAFC,CAEAC,CAFE,CAEFA,CAAJ,WAAgB,CAAA,AAAE,IACxB,IAAI,CAD6B,AAC5B,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAE,GACxD,EAD6D,AAClD,CADmD,EAEhE,CADiB,AAChB,CADiB,AAChB,AACJ,CAAC,CAAC,CAGF,AALc,EAKN,EAAE,CAAC,EAAJ,KAAW,CAAE,KAClB,CADwB,CAChB,CAAE,IAAH,AAAO,CAAEsB,EAAAA,cAAc,CAAC,KAAA,CAAO,CAAC,AACzC,CAAC,CAAC,CACF,EAAQ,EAAE,CAACtB,EAAJ,AAAIA,YAAY,CAAA,AAAE,IACvB,IAAI,CAAC,AAD2B,KACtB,CAAC,KAAK,CAAC,oCAAoC,CAAE,GACvD,EAD4D,AACpD,CADqD,AACnD,IAAH,AAAO,CAAEsB,EAAAA,cAAc,CAAC,KAAA,CAAO,CAAC,AACzC,CAAC,CAAC,CAEK,CACT,CAMQ,EAPK,sBAOmB,CAAC,CAAO,CAAsB,CAAQ,CAA+B,CACnGxf,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAACkf,EAAAA,oBAAoB,CAAE,oCAAoC,CAAC,CAEpF,IAAM,EAAe,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAI3C,EAAe,IAAI,CAAC,KAApB,qBAA8C,CAAC,GAAG,CAAC,IAAY,GAAL,CAAS,CAAC,4BAA4B,CAAC,GACvG,IAD8G,AAC1G,CAD2G,AAC1G,0BAA0B,CAAC,GAAG,CAAC,EAAS,GAEzC,CANuB,CAIgB,IAJQ,GAIM,CAJvB,AAIwB,GAJc,CAAA,CAAY,EAAjC,AAMzB,CAAtB,AAAuB,EANsC,CAO/DK,CAPgC,CAOhCA,CAP+D,MAM1B,EAAE,WACnB,CAAC,EAAS,EAElC,CAOQ,EATwB,GAAU,CAAC,mBASV,CAAC,CAAO,CAA4B,CACnEzf,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAACkf,EAAAA,oBAAoB,CAAE,mCAAmC,CAAC,CAEnF,IAAM,EAAe,IAAI,CAAC,KAApB,qBAA8C,CAAC,GAAG,CAAC,IAAY,GAAL,CAAS,CAAC,4BAA4B,CAAC,GAGvG,GAFA,CAD8G,CAAC,EAC3G,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAS,GAEzC,EAFuC,AAGzC,OAHuD,AAMzD,CAN0D,EAE1C,CAIV,CAJY,CAIO,IAAI,CAAC,SAAS,EAAE,CAAC,8BAAA,GAAmC,CAAnC,GAAuC,CAAC,SAAS,EAAE,CAAC,KAAA,GAAS,CAAA,CAAI,CAAC,AACtG,EAAkB,IAAI,CAAC,SAAS,EAAE,CAAC,gCAAgC,CAEzE,GAAI,EAAkB,CACpB,IAAM,EAAO,IAAI,CAAC,EADA,0BAC4B,CAAC,GAM/C,GAAI,CANkD,CAAC,CAMhC,EAAK,EAAD,QAAvB,CAAmC,EAAE,CAAE,CACzC,IAAM,EAAiBpB,EAAAA,KAAK,CAAC,IAAvB,GAA8B,CAACV,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GACvDA,CAD2D,CAAC,AAC5DA,OAAO,CAAC,IAAI,CAAC,EAAgB,KAC3BoC,CADiC,CACjCA,KADyB,sCACkB,CAAC,EAAS,IAAI,CAAN,AAAO,uBAAuB,CAAC,AACpF,CAAC,CAAC,AACJ,CAAA,KAAW,CAAJ,EACLA,EAAAA,UADwB,EAAE,+BACiB,CAAC,EAAS,IAAI,CAAN,AAAO,uBAAuB,CAAC,AAEtF,CAAA,KAAW,CAAJ,EACLA,EAAAA,UADwB,EAAE,+BACiB,CAAC,EAAS,IAAI,CAAC,AAAP,uBAA8B,CAAC,AAEtF,CAKQ,4BAA4B,CAAC,CAAO,CAA+B,CACzE,GAAItB,EAAAA,mBAAmB,CAACd,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CACvC,CADyC,MAClC,EAGT,EAHa,EAGP,EAAyB,IAAI,CAAC,SAAS,EAAE,CAAC,sBAAsB,CAEtE,GAAI,CAAC,EACH,OAAO,EAGT,GAHc,CAGR,EAAUqC,EAAAA,GAJW,AAIrB,EAJuB,YAII,CAAC,GAElC,IAFyC,CAAC,EAEnC,EADKC,EAAAA,kBACiB,CAAC,AADC,CAAC,EACC,CAAE,EACrC,CACF,CAH2C,CAAC,EACE,CAAC,mLC9ZzC,EAAmB,MAAM,CAmHlB,EAAuBU,EAAAA,GAnH9B,aAmHO,MAA6C,CACxD,CAAC,EAAA,EAAA,OAAA,CAAA,CAAA,AACA,GACA,EAFA,EACA,AACAC,EAAAA,EADA,uBACA,CAAA,OAAA,CAAA,cAQA/T,EAAAA,iBAAA,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CACA,CADA,GACA,EAAA,CACA,QAAA,CAAA,CADA,CACA,KAAA,0BAAA,CACA,sBAAA,CAAA,EAAA,KAAA,iBAAA,CACA,iBAAA,CAAA,EAAA,KAAA,oBAAA,CACA,kBAAA,CAAA,EAAA,KAAA,qBAAA,AACA,CAAA,CAEA,EAAA,CACA,eADA,OACA,CAAA,EAAA,KAAA,iBAAA,CACA,kBAAA,CAAA,EAAA,KAAA,aAAA,CACA,iBAAA,CAAA,EAAA,KAAA,iCAAA,AACA,CAAA,CAEA,EAAA,CACA,WAAA,CAAA,EAAA,KAAA,IADA,EACA,CACA,gCAAA,CAAA,EAAA,KAAA,WAAA,GAAA,EACA,EADA,oBACA,CAAA,EAAA,KAAA,iBAAA,AACA,CAAA,CAEA,EAAAgU,EAAAA,EAAA,mBAAA,CAAA,GACA,EAAAC,EAAAA,MADA,CACA,AADA,mBACA,CAAA,GAIA,EAAA,EAAA,CAAA,IAAA,GAAA,EACA,CALA,CAKA,AALA,CAIA,CACA,KAAA,kBAAA,IAAA,GAAA,EACA,EAAA,CADA,EACA,CAAA,CAAA,CAEA,MAAA,CACA,GAHA,CAGA,CAAA,EACA,KAAA,CAAA,CAAA,EACA,AADA,EAJA,CAMA,EAAA,AAHA,KAGA,CAAA,EAEA,CAAA,AAFA,CAGA,EAHA,CADA,AACA,EADA,IAIA,GAAA,AACA,EAAA,IAAA,KAAA,EAAA,CAEA,EAAA,EACA,CAAA,cAEA,CAHA,EAMA,EAHA,AAGA,EAHA,EAHA,CAAA,EAGA,EAGA,GAAA,CAAA,EAEA,CACA,AADA,CACA,CAHA,CAAA,wGCpLI,IAAM,EAAexE,UAAf,EAAeA,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA,CAChD,EAAa,EAAa,KAAA,CAA1B,AACA,EAAa,EADY,AACC,KAAA,CAA1B,IAAyB,0JCShC,EAAsB,cAAc,CACpC,EADA,AACwB,SAAS,CA6H6C,SAAA,AA7H9E,EA6H8E,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAAA,CACA,IAAA,CADA,EADA,CAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CACA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EACA,QADA,CAIA,CAJA,EAIA,CAAA,CAAA,GAAA,EAAA,CACA,EAAA,CAAA,CACA,GAFA,GACA,EAEA,CAEA,IAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CACA,GAAA,EADA,EACA,AADA,GACA,EAAA,CAAA,AAIA,IAAA,EAAA+C,EAAAA,EAAA,GAJA,EAAA,YAIA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACA,IACA,CAAA,CADA,AACA,EADA,AACA,CAAA,CAAA,CAAA,CAAA,CAFA,AAEA,AAEA,CAJA,AAKA,EAHA,AAGA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,CAAA,EAAA,CAAA,AACA,CACA,CAOA,SAAA,EAAA,CAAA,CAAA,CAAA,EAAA,AACA,OAAA,EAAA,KAAA,GADA,CACA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,AACA,CAmDA,CApDA,CAAA,OAoDA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,AACA,GADA,AACA,CAEA,OADA,AACA,GAAA,CADA,GAAA,CAAA,EAAA,EAAA,CACA,GADA,CAAA,IACA,EAAA,AACA,CAAA,KAAA,CAEA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAEA,EAFA,CAEA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,GAAA,CAAA,CACA,CADA,KACA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGA,GAAA,CAAA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAA,EAAA,CAAA,EAAA,EAAA,QAAA,CAAA,GAAA,CAAA,CACA,CADA,KACA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,AAGA,MAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,AACA,CADA,AAEA,6BAlEA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,AAuBA,EAvBA,OAuBA,CAAA,EAAA,AACA,EAzBA,CAyBA,CACA,CAzBA,GAyBA,EAAA,CAAA,CAAA,EAAA,AAFA,KAEA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CACA,EAAAC,EAAAA,KAAA,GAAA,CAAA,GAAA,AAEA,CAFA,CAEA,CACA,CADA,EACA,CAAAC,EAAAA,qBAAA,CAAA,GACA,MADA,CAAA,MACA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,AACA,CAAA,CASA,OAPA,EAAA,MAAA,CAAA,CAAA,CACA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAEA,EAAA,IAAA,EAAA,CAAA,AACA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAGA,CAHA,AAIA,CAAA,EADA,GACA,CACA,MAAA,CAAA,CACA,AADA,CAEA,EA5CA,GAEA,EAAA,EAFA,AAEA,CAFA,KAEA,IAAA,CACA,EAAAJ,EAAAA,CAAA,sCAAA,CAAA,GAEAjR,EAAAA,KAFA,CAAA,OAEA,CACA,CACA,QAAA,CAAA,MAAA,CACA,IAAA,CAAA,CACA,WAAA,CAAA,EACA,GAAA,CAAA,AACA,CAAA,CACA,EAHA,EAGA,CAAA,MAAA,OACA,CACA,CAAA,CACA,CACA,CAHA,IAGA,CAAA,UAAA,SACA,OAAA,IACA,CACA,CAAA,CAEA,KAHA,wCA5K7E,SAAS,AACd,CAAO,CACP,CAAsB,EAEtB,IAAM,EAAM,CAAN,CAAqB,EAAQ,KAAD,CAAO,CAAE,EAAQ,CAAzB,GAA6B,CAAL,AAAM,CAMlD,UAVgD,eAU9C,CAAuB,sBAAE,CAAA,CAAA,CAAyB5J,EAAAA,SAAS,EAAE,EAAE,UAAU,EAAC,EAAK,CAAA,CAAE,CACnF,EAAe8a,EAAAA,0BAA0B,CAAC,EAAK,CAAF,CAA2B,GAC1EzS,EAAAA,YAAY,CAAC,CAAE,EADyD,CAAwB,mBACjF,CAAsB,OACrC,EAEJ,GAAI,CAAC,EACH,CAHW,MAMb,GAJiB,AAIX,CAAE,CAJW,aAIG,CAAE,CAAW,CAAA,QAAExJ,CAAO,aAAE,CAAA,CAAY,CAAI,EAExD,EAAiB,KAAK,CAAC,EAF6C,KAEtC,CAAC,EAAQ,KAAD,EAAQ,EAAI,EAAQ,KAAD,EAAC,CAAU,AAgD5E,SAAS,AAAqB,CAAc,EAAoB,AAC9D,IAAM,EAAe,EAjDyE,AAiD1D,KAAK,CAAC,GADf,GACQ,AAAa,CAAC,CAC3C,EAAoB,EAAE,CAC5B,EADa,EACR,IAAM,KAAU,CAAV,CACT,GAAI,CACF,IAAM,EAAa,AAFU,CAAE,CAEL,IAAD,GAAQ,CAAC,GAAG,CAAC,CACtC,GAAmB,CAAC,CAAC,EAAE,CAAnB,EACF,QADE,CAGJ,IAAM,EAAM,CAAN,CAAa,IAAD,CAAM,CAAC,CAAC,CAAE,GAAY,IAAI,EAAE,CAAR,AAChC,CADiC,CACzB,EAAO,CAAf,GAAc,CAAM,CAAC,EAAa,CAAC,CAAC,CAAC,IAAI,CAApB,CAAsB,CAC7C,GAAG,AACL,EADO,AACC,IAAI,CAAL,AAAM,EAAK,CAAF,CAEpB,CAAE,EAFyB,CAAC,EAEpB,CACN5C,EAAAA,KAAK,CAAC,IAAI,CAAC,CAAC,yDAAyD,EAAE,EAAO,CAAA,CAAA,AACA,CAEA,CAHD,MAGC,CACA,EAnEa,EAAQ,EAkErB,GAlEoB,EAAQ,CAAC,CAmB/G,GAbA,CAaI,CAboB,AAanB,EAbmC,GACxC,EAAwB,EAAgB,GACpC,EAFkC,CAGpC,EAAwB,EAtCG,EAmCN,AAAoC,AACrB,CADsB,MAa3B,AAZV,EAAsC,CAAC,AAEtB,CAtCE,AAqClB,CACkB,CADhB,AAO6E,CAAA,CAAE,EANhF,CAMY,EAAyB,EAAgB,GAI3C,CAC7B,GACF,EAAe,GAZ6C,AAMY,CAMrD,AAZ0C,CAYzC,CADP,CAC4B,CAD1B,EAIb,AAT2F,CAApC,AAAoC,CAM/E,CAG+D,CAAA,CAAE,EAAE,CAAhE,AAHmC,CAAC,CAGX,CAAxC,CAAwD,EAHnB,UAGiB,CAAe,CAAA,EACvE,EAAe,EAD0B,EACtB,CAAC,OAAN,MAAmB,CAAE,GAIrC,IAAM,EAAuB,EAJmB,AAIM,CAJL,CAIqB,GACtE,GAAI4C,GAAoC,AAAzB,CAAyB,CAAE,CAD0B,CACxB,EAAxC,CACF,EAAe,EAFoC,CAAsC,CAEtE,AAFuE,CAEtE,EAAuBA,KAA7B,GACT,CAD6C,CAAC,CAC1CA,EAAS,CAElB,IAAM,CAHmC,CACzB,AAEa,CAAc,CAAC,EAAuB,CAAC,CAAC,CAC/D,EAASkc,EAAAA,WAD6B,QACV,CAAC,EAAsBlc,GACrD,IACF,CAAc,CAFgD,AACtD,AACO,CAFgD,CACrD,AAC4B,CAAC,CAAA,CAAI,CAAA,CAAM,AAErD,CACF,CAL2D,AAOvD,AAAC,KAAK,CAAC,KALU,EAKH,CAAC,EAAQ,KAAD,EAAQ,CAAC,EAAE,CAEnC,EAAQ,KAAD,EAAC,CAAU,AAyB8D,SAAA,CAAA,EAAA,AACA,IAAA,EAAA,EA1B1C,AA0B0C,CAEA,IAAA,EAFA,EADA,AAGA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CACA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,GAAA,IAAA,EAAA,GAIA,EAAA,AAJA,IAIA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,AACA,CADA,OAGA,EAAA,EAAA,IAAA,CAIA,CAJA,CAAA,AAIA,IAAA,CAAA,IAAA,EAAA,CAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAHA,EAAA,AAIA,EA3CzC,EAAc,CAAC,AAE1D,yMChCO,OAAM,UAAuCqc,EAAAA,kBAAvC,CAA0D,CAAwC,AAOtG,WAAW,CAAC,EAAgD,CAAA,CAAE,CAAE,CAA9C,AACvB,KAAK,CAAC,oCAAoC,CAAEpf,EAAAA,WAAW,CAAE,GACzD,GAD+D,CAAC,AAC5D,CAAC,YAAA,CAAe,EAAE,CACtB,IAAI,CAAC,uBAAA,CAA0B,IAAIsf,EAAAA,MAAM,CAAkB,GAAG,CAAC,CAC/D,IAAI,CAAC,0BAAA,CAA6B,IAAI,OACxC,AAD+C,CAIxC,CAJkE,GAI9D,EAAS,CAEpB,CAGO,OAAO,EAAS,CACrB,KAAK,CAAC,OAAO,EAAE,CACf,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA,AAAC,GAAO,AAAP,EAAW,CAAD,UAAY,EAAE,CAAC,CACnD,IAAI,CAAC,YAAA,CAAe,EAAE,AACxB,CAGO,MAAM,EAAS,CAUpB,KAAK,CAAC,MAAM,EAAE,CAId,IAAI,CAAC,YAAA,CAAe,IAAI,CAAC,YAAA,EAAgB,EAAE,CAGvC,IAAI,CAAC,YAAY,CAAC,MAAA,CAAS,CAAC,EAAE,CAIlC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACpF,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACxF,CAMQ,iBAAiB,CAAC,SAAE,CAAA,CAAS,CAAoC,CACvE,IAAM,EAAS,IAAI,AAAb,CAAc,SAAS,EAAE,CAG/B,IAFmC,AAE/B,CAAC,GAFW,CAAwB,CAAjB,EAEX,EAAE,AAFQ,GAAC,CAGrB,OAGF,IAAM,EAAe,IAAI,CAAC,4BAA4B,CAAC,GAGvD,IAH8D,AAG1D,CAH2D,AAG1D,0BAA0B,CAAC,GAAG,CAAC,EAAS,GAEzC,EAFuC,EAMX,IAA5B,CAAiC,AANoB,CAM9C,AAN+C,CAMnB,CAJvB,EAAE,AAIR,YAAC,EACTqB,EAAAA,wCAAwC,CAAC,EAAS,IAAI,CAAC,AAAP,uBAA8B,CAAC,AAEnF,CAKQ,kBAAkB,CAAC,SAAE,CAAO,CAAE,UAAA,CAAU,CAA8D,CAC5G,IAAM,EAAS,IAAT,AAAa,CAAC,SAAS,EAAE,CAG/B,IAFmC,AAE/B,CAAC,GAFW,CAAwB,CAAjB,EAEX,EAAE,AAFQ,GAAC,CAGrB,OAGF,IAAM,EAAe,EAAO,IAAD,IAArB,GAAiC,CAGjC,EAAe,IAAI,CAAC,KAApB,qBAA8C,CAAC,GAAG,CAAC,EAErD,EAJuB,AAAwB,GAEa,CAAC,KAF/B,EAAiB,CAAqB,CAAA,CAAY,AAAnB,EAI7D,AAAsB,CAAC,CAJsC,EAK/DC,CALgC,CAKhCA,OADqC,EAAE,gBACd,CAAC,EAAS,EAEvC,CAGQ,EAL6B,GAAU,CAAC,aAKrB,CACzB,CAAiB,CACjB,CAAS,CACH,KAKF,EACJ,GAHwBC,CAGpB,CAHoBA,IAET,MAFS,CAAa,EAAA,CAGlB,CAHwC,CAGtC,CAHsC,GAAfA,EAAAA,UAAA,EAAqBC,EAAAA,UAAA,EAAc,EAAE,CAI/E,AAJgF,EAIzE,IAAD,KAAU,GAAG,EAAmB,GACtC,EAAc,IADiC,AAC3B,CAD4B,CACrB,GAA3B,CAA0B,AADU,OACE,GAAG,EAAmB,OACvD,CACL,CAFqE,CAAC,EAEhE,EAAU,CAF0C,CAEnC,IAAD,GAAQ,CAAC,GAC/B,EAAQ,KAAD,IAAU,CAAC,EAD8B,CAEhD,AAFiD,EAEnC,IAAM,AADO,CAAC,CACA,GAA5B,EAA2B,MAAY,CAAC,EAC1C,CAEA,IAAI,CAAC,CAH8C,CAAC,UAGnC,CAAC,IAAI,CAAC,CACrB,IAAI,CAAE,cACN,CACN,CAAK,CAAC,AACJ,AAH2B,CAQnB,OAPO,qBAOqB,CAAC,CAAO,CAA0B,CACpE,GAAIzC,EAAAA,mBAAmB,CAACd,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CACvC,CADyC,MAClC,EAIT,EAJa,EAIP,EAAMwD,CAAN,CAAMA,cAAc,CAAC,EAAQ,KAAD,CAAO,CAAE,EAAQ,IAAI,CAAL,AAAM,CAClD,EAAyB,IAAI,CAAC,SAAS,EAAE,CAAC,sBAAsB,OAEtE,AAAsC,UAAA,EAAlC,OAAO,IAAyC,CAAC,GAI9C,AAJiD,EAI1B,AAJ4B,EAK5D,CADmC,AAErC,CAFsC,QAJvB,QAIkB,gJC1K3B,EAA4BR,EAAAA,qBAA5B,CAAkD,CACtD,CAAC,EAAA,gBAAA,AACAS,CADA,CACAA,MADA,CAAA,uBACA,CACA,GACA,IADA,GACA,EADA,uBAcAvU,EAAAA,iBAAA,CAAA,AATA,CAAA,EAAA,CAAA,CAAA,GAAA,CACA,CADA,AAEA,IAAA,CAAA,WAAA,CACA,AAMA,SANA,GAAA,AACA,EAAA,EACA,CAAA,CACA,CAAA,EAFA,CAAA,eAAA,eCrCA,OAAA,cAAA,CAAA,EAAA,aAAA,sDAGH,IAAA,EAAA,EAAsC,CAAA,CAAA,QAahC,EAAuB,CAC3B,GAdoC,UAcd,CACtB,GAFwB,CAEX,CACb,MAAe,CACf,iBAA0B,CAC1B,qBAA8B,CAC/B,AAED,CAFE,MAEoB,EAsBpB,IAAI,CAAI,CAAgB,CAAE,CAAS,CAAA,QAC7B,AAAJ,MAAU,OAAY,AAvB4B,EAuB5B,YAAY,CACzB,CAD2B,GACvB,CAAC,iBAAiB,CAAC,EAAS,GAGnB,EAHiB,CAAQ,CAAC,CAAC,KAGjB,EAA5B,AAA8B,OAAvB,EACF,IAAI,AADI,CACH,aAAa,CAAC,EAAS,GAE9B,CACT,CAEQ,AAL6B,AAGpC,CAH4C,CAAC,CAAC,CAEhC,CAAC,QAGK,CAAqB,CAAgB,CAAE,CAAS,CAAA,CACnE,IAAM,EAAU,IAAI,CAAC,AACf,AADO,EACU,SAAuB,GAA1B,AAA6B,CAAe,EAC9D,OAAO,EAAQ,IAAI,CAAL,AAAM,EAAS,GAAG,CAAG,CAAR,AAAO,CAAQ,IAAD,CAAM,CAAC,IAAI,CAAE,GACxD,CAD4D,AAC3D,CAD4D,AAC3D,AAYF,CAb8D,CAAC,KAE/D,MAAM,CAAC,cAAc,CAAC,EAAgB,QAAQ,CAAE,CAC9C,EADkC,QACxB,EAAE,EACZ,GADiB,SACL,EAAE,EACd,EADkB,MACV,CAAE,GACV,EADe,GACV,CAAE,EAAO,IAAD,EAAO,CACrB,CAAC,CAAC,AAMI,CACT,CAAC,AASO,YAVsB,CAAC,IAUN,CACvB,CAAgB,CAChB,CAAK,CAAA,aAGO,IADA,IAAI,CACK,AADJ,EACM,UADM,CAAC,EAAE,CAAC,CAAC,CAElC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,AAGxB,CAHyB,CAGJ,OAAO,CAAA,AAAC,SACJ,CADc,AAAnB,CAAoB,EAAE,AACpC,CAAE,CAAC,EAAW,CAAc,EAAE,AAClC,CAAE,CAAC,EAAW,CADG,AACA,EADwB,EACpB,CAAC,EAAT,eAA0B,CAAC,EAAI,AAAF,CAAI,CAAC,EAAW,CAAE,EAAO,CAAC,AACtE,CADuE,AACtE,CAAC,CAE+B,AAF9B,AAEC,CAHuD,SAGhB,EAAE,OAAlC,EAAE,AAAC,cAAc,GAC1B,EAAE,AAAC,cAAc,CAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,AAAE,EAAG,AAAD,eAAe,CAAC,CAEhD,AAFiD,UAEvC,EAAE,AAA9B,OAAO,EAAE,AAAC,GAAG,GACf,EAAG,AAAD,GAAI,CAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,AAAE,EAAE,AAAC,IAAG,CAAC,CAGX,AAHY,UAGF,EAAE,AAA7C,OAAO,EAAG,AAAD,kBAAmB,GAC9B,EAAE,AAAC,kBAAkB,CAAG,IAAI,CAAC,wBAAwB,CACnD,EAAE,AACF,EAAE,AAAC,mBAAkB,CACtB,CAAC,CApB0B,CAuBhC,CAQQ,AARP,AAvBiC,CAAC,mBA+BP,CAAC,CAAgB,CAAE,CAAkB,CAAA,CAC/D,IAAM,EAAiB,IAAI,CAAC,AAC5B,OADoB,AACb,SAAuB,CAAa,CAAE,CAAoB,EAC/D,IAAM,EAAS,EAAe,EAAlB,UAAiB,AAAa,CAAC,EAAE,CAAC,CAAE,CAAC,EAAM,CAAC,AACxD,EADsD,MACvC,IAAX,EACF,GADsB,CAAd,CAAgB,EACjB,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAO,GAAF,AAElC,IAAM,CAFsC,CAEpB,AAFqB,CAAC,CAEf,GAAG,CAAJ,AAAK,GACnC,IADqB,CAAsB,CAAC,CAAC,AACtC,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAO,GAAF,AAAqB,EACvD,CACF,AADG,CAAC,AACH,AAQO,IAVyD,CAAC,CAAC,EAAd,gBAUrB,CAAC,CAAgB,CAAE,CAAkB,CAAA,CACnE,IAAM,EAAiB,IAAI,CAAC,AAC5B,OADoB,AACb,SAAuB,CAAa,EACzC,IAAM,EAAM,CAAH,CAAkB,YAAD,AAAa,CAAC,EAAE,CAAC,AAQ3C,CAR4C,WAChC,IAAR,GAAG,CACoB,CADN,AACO,EADL,AACjB,AAAwB,SAAf,CAAC,MAAM,CAClB,EAAe,YAAD,GAAgB,CAAC,EAAE,CAAC,CAAC,IACX,IAAf,CAAG,CAAC,EAAM,CAAc,CACjC,CADmC,AAAjB,MACX,CAAG,CAAC,EAAM,CAAC,CAGf,CAHa,CAGJ,KAAK,CAAC,AAAP,IAAW,CAAE,SAAS,CAAC,AACxC,CADyC,AACxC,AACH,CADI,AACH,AASO,iBAAiB,CACvB,CAAgB,CAChB,CAAkB,CAClB,CAAgB,CAAA,CAEhB,IAAM,EAAiB,IAAI,CAAC,AAC5B,OAAO,AADa,SACU,CAAa,CAAE,CAAoB,EAS/D,GAAI,EAAe,QAAQ,CACzB,CAD2B,EAAX,IACT,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAO,GAEpC,AAFkC,IAE9B,CAFwC,CAAC,AAEnC,CAFoC,AAEvC,CAAkB,YAAD,AAAa,CAAC,EAClC,AADoC,AAC5B,CAD6B,CAAC,CACnC,MAAc,EAAE,EACrB,GAAG,AAAG,EAAe,YAAD,GAAgB,CAAC,EAAE,CAAC,CAAC,AAE3C,IAAI,EAAY,CAAG,CAAC,EAAM,CAAC,EAAd,AAAY,GACP,IAAd,IACF,CADyB,CACb,CADe,EAAhB,CACK,GAAP,IAAc,CACvB,CADyB,AACtB,CADuB,AACtB,EAAM,CAAG,EAAJ,CAEX,IAAM,EAFkB,AAEA,CAFC,CAEc,IAAI,CAAC,EAAS,GAErD,CAFqB,CAAiB,AAAa,AAEzC,GAFmD,AAEhD,CAAC,AAFgD,CAAC,CAEvC,CAAf,EAKT,EAAe,CALO,OAKC,EAAG,AALa,CAAC,CAAC,AAK3B,AACd,EAD8B,CAAC,AAC3B,CACF,OAAO,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAO,GAAF,AACjC,OAAS,CACR,EAAe,EAFkC,CAAC,CAAC,IAE5B,EAAG,EAC3B,AACH,AAFkB,CAEjB,AACH,CADI,AACH,AAEO,CAL6B,CAAC,aAKf,CAAC,CAAgB,CAAA,CACtC,IAAM,EAAM,CAAH,KAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAG/B,AAHgC,OAE/B,CAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAG,EAC3B,CAD8B,AAEvC,CAFwC,AAEvC,AACO,CAFI,CAAC,UAEO,CAAC,CAAgB,CAAA,CACnC,OAAQ,CAAY,CAAC,IAAI,CAAC,aAAa,CAAC,AAC1C,CAD2C,AAC1C,AAEgB,aAAa,CAAG,MAAM,CAAC,aAAa,CAAC,AAAC,CAC/C,QAAQ,EAAG,CAAM,CAC1B,AA9LD,EAAA,CA6L0B,+BA7L1B,CAAA,iCA8LC,ACtNE,OAAA,cAAA,CAAA,EAAA,aAAA,8CAGH,IAAA,EAAA,EAAA,CAAA,CAAA,MAAkD,EAClD,EAAA,EAAA,CAA0C,CAAA,QAC1C,EAAA,EAAA,CAAA,CAAA,OAKA,OAAa,QALyE,EAKxC,EAAA,YAAR,oBAAwC,CACpE,UAAiC,AACjC,AADU,SACD,EAAyB,IAAI,GAAG,AAAG,AAC5C,EAD2C,IACrC,EAA+B,EAE7C,AAFgD,AAAD,cAE/C,CACE,KAAK,EAAE,CACP,AADQ,IACJ,CAAC,UAAU,CAAG,EAAW,QAAD,EAAW,CAAC,CACtC,IAAI,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,MAAM,CAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,KAAK,CAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7B,OAAO,CAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,cAAc,CAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAC,AACJ,CADK,AACJ,AAED,MAAM,EAAA,CACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAG,CAAC,CAAC,EAAI,EAAA,YAAY,AAC5D,CAEA,AAFC,AAD4D,IAGzD,CACF,CAAgB,CAChB,CAAK,CACL,CAA8B,CAC9B,GAAG,CAAO,CAAA,CAEV,IAAI,CAAC,aAAa,CAAC,GACnB,GAAI,CACF,AAFwB,CAAC,CAAC,KAEnB,EAAE,AAAC,IAAI,CAAC,KAAa,EAAL,CACxB,CADiC,AAAP,CAAQ,CAAC,IAC1B,CACR,IAAI,CAAC,YAAY,EAAE,CAAC,AACrB,AACH,CAAC,AAED,MAAM,EAAA,CAEJ,OADA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,AAClB,IAAI,AACb,CADc,AACb,AAED,OAAO,EAAA,CAIL,OAHA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,AAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CACtB,AADuB,IACnB,CAAC,MAAM,CAAG,EAAE,CAAC,AACV,IAAI,AACb,CADc,AACb,AAQO,KAAK,CAAC,CAAW,CAAE,CAAY,CAAA,CAKrC,GAAa,WAAW,GAApB,EAAsB,EAAlB,KAAyB,AAEjC,IAAM,EAAU,IAAI,CAAP,AAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAG,CAAC,CAAC,AAC/C,CADgD,KACpC,CAAL,MACT,EADuB,EAAE,AACrB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAK,CAAF,CAE1B,CAAC,AAOO,IAT2B,CAAC,CAAC,EASrB,CAAC,CAAW,CAAA,CAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EACxB,CAAC,AAMO,AAPmB,CAAC,CAAC,KAOd,CAAC,CAAW,CAAA,CACzB,IAAM,EAAU,IAAI,CAAP,AAAQ,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GACxB,IAAZ,GACF,EADuB,EAAE,AAAhB,AACL,CAAC,aAAa,CAAC,EAEvB,CAAC,AAKO,IAPsB,CAAC,CAAC,AAOlB,EAAA,CACZ,IAAI,CAAC,YAAY,EAAE,AACrB,CAKQ,AALP,AADqB,aAMD,CAAC,CAAgB,CAAA,CACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EACnB,CAKQ,AALP,IADyB,CAAC,CAAC,MAMR,EAAA,CAClB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,AACnB,CADoB,AACnB,CACF,AAzGD,EAAA,wBAAA,CAAA,yBAyGC,OCnHE,OAAA,cAAA,CAAA,EAAA,aAAA,qDAGH,IAAA,EAAA,EAAA,CAAA,CAAA,MAAkD,EAClD,EAAA,EAAA,CAAgD,CAAA,QAChD,EAAA,EAAA,CAAA,CAAA,OAEA,OAAa,QAFyE,EAEjC,EAAA,mBAAR,aAAwC,CAC3E,kBAER,AAFuD,AAA7B,cAE1B,CACE,KAAK,EAAE,CACP,AADQ,IACJ,CAAC,kBAAkB,CAAG,IAAI,EAAA,iBAAiB,AACjD,CAAC,AAED,CAHmD,CAAC,IAG9C,EAAA,CACJ,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAI,EAAA,YAAY,AAC3D,CAD4D,AAC3D,AAED,IAAI,CACF,CAAgB,CAChB,CAAK,CACL,CAA8B,CAC9B,GAAG,CAAO,CAAA,CAEV,IAAM,EAAE,AAAc,IAAI,CAAC,CAAC,AAAjB,EAAkB,EAAK,AAAH,CAAC,CAAI,AAAC,AAAJ,CAAf,GAAuB,CAAC,GAC1C,IADiD,CAAC,CAAC,CAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAS,EAAW,EAAE,CAAf,AAAkB,EAC9D,CAAC,AAED,CAHkE,CAAC,CAAC,GAG9D,EAAA,CACJ,OAAO,IAAI,AACb,CADc,AACb,AAED,OAAO,EAAA,CAEL,OADA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAC1B,AAD2B,IACvB,AACb,CAAC,AADa,CAEf,AA9BD,EAAA,+BAAA,CAAA,gCA8BC,CCrCE,OAAA,cAAA,CAAA,EAAA,aAAA,gFAEH,IAAA,EAAA,EAAA,CAAA,CAAA,QAAS,MAA6D,CAA7D,cAAA,CAAA,EAAA,2BAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,wBAAwB,CAAA,GAAA,AACjC,IAAA,EAAA,EAAA,CAAA,CAAA,OAAS,OAAA,OAA2E,OAA3E,CAAA,EAAA,kCAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,+BAA+B,CAAA,GAAA,oCEDpC,ECAE,AFCN,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAO,CAAA,CAAA,CAAA,CAAA,QCID,SAAU,EDcQ,KCblB,KAAgB,GDcW,GCb7B,AADa,GACT,CACF,CDac,GCbR,EAAQ,GAAH,ADeY,OCfC,CAAC,OAAO,CAAC,KAAK,CAAC,AACvC,EAAc,EAAQ,ADgBF,CChBE,MAAX,UAAW,EAAmB,EAAK,CAAE,CAAC,AAAE,CAAL,AAAI,gBAAkB,CAAC,KAC/D,GACQ,kBACf,OAEI,CACT,CAAC,SADmB,CAAC,qCChBQ,AAAI,GAAY,AAEjC,EAF0D,EAAE,AAExD,CFAS,EEArB,CFDqC,CAAC,CECnC,AACY,EFDF,CAEE,AAF2B,CAA3B,AAA4B,CAG7C,GEFyB,EAAvB,CFCF,MEDS,GAC0C,AADvC,CFOe,CAJ3B,KAIiC,GEN4B,CAC5D,CADC,AACA,CFKK,MENG,EAAgC,CAAD,GFgB3C,AEhBgD,AFEvB,EACvB,CCDC,CDIwB,EAAgC,CAUrD,AAVsD,EAWlD,ECdJ,QDaY,IAC+B,CACvC,IAfkB,GAC3B,MAAM,CCD2B,WDeE,CAAM,CAChC,CCfqB,SDeD,CAEpB,YAjBkC,CAAC,MAiBF,AAEzC,MAAM,EAAC,kBACL,CAAgE,CCjB3C,ADkBrB,CClBsB,ADkBG,CClBF,ADkBE,KAEnB,EAAM,CAAH,GAAO,EAAa,CAAA,CAAE,CAAE,GAIjC,IAJ4B,AAAY,CAAC,CAAC,GACtC,cAAc,CAAG,EAAqB,GAC1C,EAAI,CAAD,IADiD,CAAC,CAAC,ICnBzC,EDmB4B,UACd,CACzB,EAAW,GCrBoB,CAAC,EDqBf,CAAC,CAAC,AAAT,CAAU,CAAC,CAAE,EAAI,CAAD,CAAG,CAAG,CAAD,CAAe,GAAG,CAAC,AAAE,CAAD,KAAO,CAAb,AAAgB,CAAC,CAAC,AAC1D,EAGT,CAHY,CAAC,UASX,AALA,CAK0B,CAC1B,CAAyB,CAAA,CAEzB,MAAM,EAAa,EAAS,MAAZ,AAAW,IAAW,EAAI,CAAA,CAAE,AAC5C,CAD6C,IACzC,CAAC,GC7BiC,WD6BnB,CAAG,MAAM,CAAC,OAAO,CAAC,GAAY,GAAG,CAAC,CAAC,CAAC,CAAC,AAAT,CAAW,AAAV,CAAW,CAAC,EAAE,EAAE,AAC1D,EAAc,CAAC,CAAC,EAAE,CAEpB,IAAI,CAAC,CAFU,sBAEa,EAAG,CAAA,CAAI,CAAC,AAG/B,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAGhB,IAAI,CAAC,cAAc,CAAG,EAAqB,IAAI,CAAC,aAAN,CAAoB,CAAC,CAAC,AAChE,IAAI,CAAC,UAAU,CAAG,AA2HtB,SAA2B,AAAlB,CAAoC,EAC3C,GAAI,AAAqB,EA5HY,MA4HJ,GADT,MACb,QAAwC,CAA/B,GAAiB,EACnC,GAD0D,EAAE,EAAhB,AACrC,EAGT,EAAA,IAAI,CAHc,AAGb,CAHc,GAGV,CACP,6EAA6E,CAC7E,EAIJ,CAAC,CAtIuC,GAAS,EAkIpC,CACV,CAnI4C,AAmI3C,KAnIsD,CAAC,AACzD,CAD0D,AACzD,AAED,IAAW,sBAAsB,EAAA,CAC/B,OAAO,IAAI,CAAC,uBAAuB,AACrC,CADsC,AACrC,AAEM,KAAK,CAAC,sBAAsB,EAAA,CACjC,GAAK,CAAD,GAAK,CAAC,sBAAsB,EAAE,AAIlC,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,EAAE,CAAE,CACnD,GAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,AACtC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAG,CAAC,CAAC,CAAE,EAAc,CAAC,CAAC,CAAC,AAAE,CAAD,KAAO,CAAC,CAAG,AAAF,AAAd,CAAe,AAAE,CAAC,CAG9D,AAFC,AAD8D,IAG3D,CAAC,uBAAuB,EAAG,EACjC,CAAC,AAED,EAHsC,CAAC,CAG5B,UAAU,EAAA,CAOnB,GANI,IAAI,CAAC,sBAAsB,EAAE,AAC/B,EAAA,IAAI,CAAC,KAAK,CACR,+DAA+D,CAChE,CAAC,AAGA,IAAI,CAAC,mBAAmB,CAC1B,CAD4B,MACrB,IAAI,CAAC,mBAAmB,CAGjC,AAHkC,IAG5B,EAAoB,CAAA,CAAE,CAAC,AAAlB,AACX,IAAK,GAAM,CAAC,CAAC,CAAE,CAAC,CAAC,GAAI,IAAI,CAAC,cAAc,CAAE,CACxC,GAAI,EAAc,CAAC,CAAC,CAAE,CACpB,EAAA,IAAI,CADW,AACV,KAAK,CAAC,CAAA,6BAAA,EAAgC,CAAC,CAAA,QAAA,CAAU,CAAC,CAAC,AACxD,SAEO,AADR,AADU,IAEE,EAAE,AAAX,CAAC,GACH,CAAK,CAAC,CAAC,CAAC,IAAK,CAAC,CASlB,AATmB,AAElB,OAGG,AAAC,IAAI,CAAC,uBAAuB,EAAE,CACjC,IAAI,CAAC,mBAAmB,CAAG,CAAA,CAAK,CAAC,AAG5B,CACT,CAAC,AAEM,GAHO,CAAC,YAGQ,EAAA,CACrB,OAAO,IAAI,CAAC,cAAc,AAC5B,CAD6B,AAC5B,AAED,IAAW,SAAS,EAAA,CAClB,OAAO,IAAI,CAAC,UAAU,AACxB,CADyB,AACxB,AAEM,KAAK,CAAC,CAAyB,CAAA,aAkFhC,EACA,EAGA,EArFJ,GAAI,AAAY,GAiFA,CAjFI,IAAR,AAAU,EAkFD,AAGF,KArFU,IAAI,CAAC,AAIlC,IAAM,GA0ER,EA1EyC,CA0E5B,GA1EgC,CA2E7C,EA3E+C,GAAxB,CA6EF,EAFI,AA3EC,CA6EF,AAAE,CA7E6B,CAAC,CAAC,MA6EtB,CAAC,EAKlC,AAAsB,CAlFgB,QAkFP,GAJP,GAAU,EAIjB,GAJe,IAAW,CAAC,EAIa,EAAE,CAAC,EAAzB,EAErC,IAAI,CAJgC,IAAjB,GAA+C,EAAE,AAAvB,AAI/B,CAJuD,AAEf,CAEtC,CAJiC,EAKxC,EALsB,AAQ3B,GAIA,IAAiB,CAZwC,CASpD,MAJiB,AAGP,AAIH,CAPW,AAW3B,CARqB,CAQrB,GAPqB,CAAC,AAOlB,CAAC,CAJiC,EAAE,CAI/B,CACP,kIAAkI,CAClI,EACA,IA9FA,MA6FY,CA7FL,EAAa,IA8FH,CAClB,CAAC,IA/FmB,OAAkB,CACnC,CAAC,GAAG,EAAS,MAAD,UAAiB,EAAE,EAAE,EAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CALX,CAMjD,CALE,CAAE,SAAS,CAAE,CAAe,AAKjB,CACd,AANiC,AADgC,CAOhE,KALE,EAMN,CAAC,CACF,AAEK,GAV8B,EACnB,CAAC,GASF,EACd,CAAsC,CACtC,CAAyB,EAEzB,OAAO,EAAa,MAJgB,IAIjB,OAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAa,EACpE,CAAC,AAEK,IAH2D,AAAU,CAAT,AAAU,CAAC,GAG7D,EACd,CAAkC,CAClC,CAAyB,EAEzB,OAAO,IAAI,EAAa,EAAkB,EAC5C,CAAC,AAEK,GAPsC,CAIO,CAA1B,AAA2B,CAAC,GAGrC,EAH0B,EAIxC,OAAO,EADoB,AACG,CAAA,CAAE,CAAC,AACnC,CAEM,AAFL,AADmC,SAGpB,IACd,GAJ6B,IAItB,EAAuB,CAC5B,CAF2B,AAE1B,EAAA,gBAD0B,CACT,CAAC,CAAE,IACrB,CAAC,EAAA,WADsC,EAAE,cACb,CAAC,CAAE,EAAA,QAAQ,CAAC,EAAA,2BAA2B,CAAC,CACpE,CAAC,EAAA,uBAAuB,CAAC,CAAE,EAAA,QAAQ,CAAC,EAAA,uBAAuB,CAAC,CAC5D,CAAC,EAAA,0BAA0B,CAAC,CAAE,EAAA,QAAQ,CAAC,EAAA,0BAA0B,CAAC,CACnE,CACH,AADI,CACH,AAED,AAHK,SAGI,EACP,CAAkC,EAElC,OAAO,EAAW,GAAG,CAAC,CAAC,CAHI,AAGH,CAAC,CAAR,AAAU,CAAC,CAAC,EAAE,CAC7B,AAAI,CAD2B,CACb,CAAC,CAAC,CACX,CADa,AAElB,CAAC,CACD,CAAC,CAAC,GAHW,EAGN,CAAA,AAAC,GAAG,CAAC,AACV,EADY,AACZ,IAAI,CAAC,KAAK,CACR,mDAAmD,CACnD,CAAC,CACD,EAGJ,CAHO,AAGN,CAFE,AAED,CAFE,AAGL,CAAC,AAEG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,AAElB,CAAC,kMMxKW,WDHkB,CDIC,2NWqDlB,CMrDD,kBNyDc,yCAGG,AAAC,QACI,EAAA,AAAG,CP1Cd,gEO+Ca,CAAC,8DAGE,CTrDjB,AaGF,IJoDL,cAEL,EAAA,cAAc,CAAC,KAAK,CAC1B,CXlDC,SWmDgB,IAAK,CAChB,CNpDP,MAAA,CAAA,CAAA,eMqDgC,CAAC,CAAC,4BAEM,2BACW,CIjD1B,0DJqDkB,gCAMhC,CAAA,CAAA,SACE,EGxCA,GHwCK,GAAA,WAEZ,YAAY,CAAA,EAAQ,WAAW,CAAC,GLlCD,CAAC,CKmChC,qBAAqB,CAAA,EAAA,aAAA,CAAA,GAAoB,yDAER,EF3CQ,EAAF,CAAC,CAAC,SE2CK,CAAC,UAAA,AAAU,CAAC,CAAC,uBACzC,CAAqB,MAAlB,EAAA,SAAc,KACpC,CAAC,EF1CA,CAAC,QE0CU,CAAA,EAAA,UAAA,MACX,0BAAA,CAAA,IAAA,CAAA,WACa,CAAC,yBAAyB,EAAI,CAAC,CAAC,KAC7C,cAAc,CT5BA,CAAA,CS4BQ,aAAa,CAAC,SAEhC,CAAG,EAAK,IAAA,CACjB,CIlDC,AXUA,AJbA,CeGC,AfHA,CeGC,CAAA,CAAA,iBJkDmB,CT7BH,AS6BM,EAAK,CVpDD,CUoDA,eAAkB,CAAC,CFxCC,CAAC,OEyCzC,CAAA,EAAQ,IAAA,GACR,KAAK,CACZ,CADc,GACT,ET9BY,CDtBX,GUoDK,KAAQ,EAAK,KAAK,CAAE,AAC7B,IAAI,CAAC,OAAO,CAAC,CFvCG,ALCE,CAAC,AFSJ,MSgCd,CXpDW,QAAA,CWoDC,IAAI,CAAC,ET7BF,MS6BU,CAAA,EAAM,SAAS,EAAA,gBAChC,CAAG,CXjDD,CWiDM,GT7BC,AFpBE,KWiDK,CAAC,UT7BQ,CAAC,CAAC,cS8BZ,EAAA,KAAU,CAAC,KAClC,iBAAA,CAAA,EAAyB,SVpDO,OUoDS,CAAC,AAExB,CVrDC,KUqDK,EFxCA,UEwCV,GVtD+C,EAAE,CAAC,AUuD/D,CVvDgE,AUuD/D,aAAA,CAAc,EAAA,UAAe,CAAC,KAGjC,CAAA,cAAe,CAAA,OAAA,CAAS,IAAI,CAAE,CT7BO,CS6BF,CT7BI,CS6BL,KAAQ,CAAC,AACjD,CAAC,AADiD,AAGlD,aAAA,CACE,OAAO,IAAA,CAAK,CPvCD,WOuCa,AAC1B,CAD2B,AAC1B,AAGD,KTlC8B,QSkCjB,CAAA,CAAa,CT9BV,CAAA,CS+Bd,CT/Bc,AObA,EE4CD,IAAI,EAAb,CF3CD,CAAC,CE2CiB,IAAI,CAAC,YAAY,EAAE,CAAE,OAAO,IAAI,CAAC,GACxC,GAAQ,CAAlB,EAAA,IVrD6B,EUqDnB,QACZ,EAAA,IAAI,CAAA,IAAK,CAAC,CAAA,uBAAA,EAA0B,EAAG,CAAA,AAAE,CAAC,CAAC,QAGzC,CAAA,CAAA,EAAC,EAAA,gBAAA,AAAgB,EAAC,KAAK,AF9BA,GE8BG,QACxB,CAAC,IAAI,CAAC,CAAA,CF7BI,oCAAA,EE6BoC,EAAG,CAAA,AAAE,CAAC,CAAC,AAClD,IAAI,CAAC,wBAGN,CAAmB,CAAE,CAAG,IAAI,CAAA,CF7BnB,UE6B+B,CAAC,AF7BA,AE8B3C,EAAW,CAAC,OAAO,SAAS,CAAA,cAAe,CAAC,IAAI,CACpD,IAAI,CAAC,UAAU,CACf,GAAG,CACJ,CAAC,KAEF,KAC0B,IAD1B,GACmC,EAAA,EAAA,CAAA,gBACZ,CFhCC,CAAA,GAAA,EEmCtB,IAAI,CAAC,GADL,oBAC4B,EAAE,CAAC,KAI7B,CAAC,UAAU,CAAC,EAAG,CAAA,IAAQ,CAAC,eAAe,CAAC,GACxC,CFjCI,MEkCF,CAAC,EADO,CF7BJ,aE8Ba,EAAE,EAElB,IAAI,AACb,CADc,AACb,cAEa,CAAsB,CAAA,KAC7B,IAAM,GAAG,EAAA,EACR,CF/BC,ME+BM,EADiB,CPxCd,IADmB,EAAE,AACrB,COyCO,CP1CgB,aO0CF,CAAC,IAAI,CAAC,EAAY,GAAG,CAAC,AACvD,EADyD,EAAR,AAC7C,CAAC,QF/BU,IE+BE,CAAC,EAAK,CAAF,AAAY,CAAC,EAAI,CAAD,AF/BE,AE+BA,CAG3C,AAH4C,OAGrC,IAAI,AACb,CADc,AACb,IPxCa,KOkDZ,CF+BS,AE/BG,CF+BF,ALvEU,AOyCpB,CAA8C,CAC9C,CAAqB,CAAA,QAEb,CAAC,IF6BI,QE7BQ,GAAA,OAAA,IAAe,CAAC,GAE/B,iBAAE,CAAe,CAAE,CAAA,IAAO,CAAC,WAAW,CAAC,GAEzC,AAAoB,GAAG,GAGzB,OAFA,EF2BE,IE3BE,CAAA,IAAK,CAAC,IP5CM,sBO6CZ,CAAC,mBAAA,GACE,IAAI,CAAC,EF0BM,GEtBE,IADtB,GACsB,IAChB,CAAC,MAAM,CAAC,MAAM,EAAI,IAEW,CAAC,GAA9B,IAAA,CAAK,EAF4B,EACrC,eAC4B,QACtB,CAAC,EFsBmC,CAAC,EEtB/B,CAAC,wBAAwB,CAAC,CAAC,AAEvC,EFsBE,EAAA,CEtBG,IFsBS,CAAC,CEtBJ,CAAC,KAAK,EAAE,CAAC,AACpB,IAAA,CAAK,mBAAmB,EAAE,CAAC,CAGzB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,KACV,CAAA,EAAC,EAAA,WAAA,AAAW,EAAC,CADqB,EFuBhB,IErBR,CAAA,EAEd,EAH6B,EFqBsB,CAAC,CAAC,CElB7B,OAGpB,EAH6B,AAGjB,CAHkB,AAGlB,EPjDA,EAAA,kBOiDkB,APjDlB,EOiDmB,GAC/B,6BAAE,CAA2B,CAAE,CAAG,IAAI,CAAC,WAAW,CAAC,AACnD,EAAyB,CAAA,CAAE,CPhDf,AOgDgB,AAC9B,EAAyB,CAAC,CAC1B,AAD2B,CFwBpB,CEvBgB,CAAC,CAAC,AAE7B,IAAK,IAAM,IAAI,CAAI,EAAW,CAC5B,GAAI,CAAC,EADqB,IACf,CAAA,SAAU,CAAC,GPjDN,WOiDoB,CAAC,IAAI,CAAC,EAAW,GACnD,CADuD,CAAC,EAAP,AAAS,KACjD,AAEX,IAAM,CPhDC,COgDS,CAAS,CAAC,EAAK,CAAlB,AAAmB,AAChC,CAD8B,OAEI,IAAhC,GAAyC,EAAA,CACjB,EACxB,CACA,APlD2B,IOmD3B,SACD,AACD,CAAU,CAAC,EAAK,CAAG,IAAI,CAAC,IP/CF,WO+CiB,CAAC,GACxC,IADgD,AAEjD,AAQD,CAVmD,CAAC,KAIpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MACf,aACA,EACA,IAAI,CAAE,IAAI,CAAC,KP/CC,EAAE,CO+CK,CAAC,SAAS,CAAC,gBAC9B,EACD,CAAC,CAAC,AACI,IAAI,AACb,CAAC,AAED,OAAO,CAAC,CAAU,CAAA,CAChB,GAAI,IAAI,CAAC,YAAY,EAAE,CAAE,OAAO,IAAI,CAAC,AAErC,GAAM,CPjDD,eOiDG,CAAc,CAAE,CAAG,IAAI,CAAC,WAAW,CAAC,AAE5C,CPlDC,CAAC,CAAC,AOkDC,AAAmB,CAAC,EAAE,GAExB,OADA,CADgB,GACZ,CAAC,kBAAkB,EAAE,CAAC,AACnB,CPjDa,GOiDT,CAAC,KAGS,IAAvB,GAAoC,EAAJ,EAAQ,CAAC,KAAK,CAAC,MAAM,EAAI,IACvB,CAAC,EAAE,CAA/B,GPnDK,COmDD,CAAC,CAD4D,EAAE,eAC5C,QACrB,CAAC,KAAK,CAAC,yBAEb,IAAI,CAAA,KAAM,CAAC,KAAA,GACX,IAAI,CAAC,kBAAkB,IAGzB,GAAM,4BAAE,CAA0B,CAAE,CAAG,IAAI,CAAC,WAAW,CAAC,AAClD,EAAA,CAAA,EAAY,EAAA,kBAAA,AAAkB,EAAC,EAAK,EAAD,QAAW,CAAC,CAC/C,AADgD,EACvB,CAAA,CAAE,CAAC,AAClC,EAA6B,CAAC,CAAC,AAC3B,EAAsB,CAAC,CAAC,AAE5B,IAAK,IAAM,KAAQ,EAAW,CAC5B,EPtD6B,COsD7B,APtD8B,COsDzB,MAAM,CAAC,SAAS,CAAA,cAAe,CAAC,IAAI,CAAC,EAAW,GACnD,CADuD,CAAC,EAAP,AAAS,KACjD,AAEX,IAAM,EAAU,CAAS,CAAC,EAAK,CAC/B,AADgC,AAAnB,CAAiB,EAE5B,KAAA,IAAA,GACA,GAAuB,EACvB,CACA,eAGS,EAAK,CAAG,CAAJ,APxDO,GOqDE,AAGD,CAAA,AAL4B,CAEzB,CAAC,aAGY,CAAA,GACvC,IAGF,IAAM,EAAsB,CPxDP,QOqDA,AAGkB,EAHhB,AAGqB,CAHpB,CAGmB,KAAQ,CAAE,CAAC,AAStD,OARI,EAAsB,CAAC,EAAE,CAC3B,EAAc,UAAU,CAAG,AAAd,AADQ,CACM,CAAU,CAAC,AAEpC,EAAyB,CAAC,EAAE,GAChB,sBAAsB,CAAG,CAAA,CAAsB,CAAC,IAG5D,CAAC,KAAK,CAAC,IAAI,CAAC,GACT,IAAI,AACb,CADc,AACb,AAED,KAJ+B,CAAC,CAAC,CAIzB,CAAC,CAAa,CAAA,CACpB,IAAK,IAAM,IAAI,CAAI,EACjB,GADsB,CAClB,AADoB,CACnB,OAAO,CAAC,GAEf,CAFmB,CAAC,CAAC,IAEd,IAAI,AACb,CADc,AACb,AAED,SAAS,CAAC,CAAkB,CAAA,CAC1B,GAAI,IAAI,CAAC,YAAY,EAAE,EACnB,EAAO,IAAD,AAAK,GAAK,EAAA,cAAc,CAAC,KAAK,EAAE,AACtC,IAAI,CAAC,EADwC,IAClC,AADsC,CAAC,AACtC,IAAI,GAAK,EAAA,cAAc,CAAC,EAAE,CAFjB,CAEmB,MAFZ,CAEmB,GAFf,CAAC,AAEkB,AAEvD,CAFwD,GAElD,EAAwB,CAAE,IAAI,CAAE,CAAvB,CAA8B,IAAD,AAAK,CAAE,CAAC,AAiBpD,OAXI,EAAO,IAAD,AAAK,GAAK,EAAA,cAAc,CAAC,KAAK,EAAE,CACV,QAAQ,EAAlC,AAAoC,OAA7B,EAAO,IAAD,GAAQ,CACvB,EAAU,OAAD,AAAQ,CAAG,EAAO,IAAD,GAAQ,CAAC,AAC1B,AAAkB,IAAI,EAAE,AAAlB,EAAC,OAAO,EACvB,EAAA,IAAI,CAAC,IAAI,CACP,CAAA,yCAAA,EAA4C,OAAO,EAAO,IAAD,GAAQ,CAAA,oBAAA,CAAsB,CACxF,CAAC,CAIN,IAAI,CAAC,MAAM,CAAG,EACP,IAAI,AACb,CADc,AACb,AAED,EAJyB,CAAC,OAIhB,CAAC,CAAY,CAAA,QACjB,IAAI,CAAC,YAAY,EAAE,EAAE,CACzB,IAAI,CAAC,IAAI,CAAG,CAAA,CAAI,CAAC,AADe,IAGlC,AAHsC,CAAC,AAGtC,AAED,GAAG,CAAC,CAAmB,CAAA,CACrB,AAAI,IAAI,CAAC,YAAY,EAAE,CACrB,CADuB,CACvB,IAAI,CAAC,KAAK,CACR,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA,0CAAA,CAA4C,CAClH,CAAC,CAGJ,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,QAAQ,CAAC,GAC7B,IADoC,AAChC,CADiC,AAChC,CADiC,QACxB,CAAG,CAAA,EAAA,EAAA,cAAc,AAAd,EAAe,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,OAAO,CAAC,CAAC,AAE1D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAG,CAAC,EAAE,CACzB,EAAA,IAAI,CAAC,IAAI,CACP,qFAAqF,CACrF,IAAI,CAAC,SAAS,CACd,IAAI,CAAC,OAAO,CACb,CAAC,AACF,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAY,CAC/C,AADgD,IAC5C,CAAC,SAAS,CAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAGtB,IAAI,CAAC,mBAAmB,CAAG,CAAC,EAAE,AAChC,EAAA,IAAI,CAAC,IAAI,CACP,CAAA,QAAA,EAAW,IAAI,CAAC,mBAAmB,CAAA,uCAAA,CAAyC,CAC7E,CAAC,AAEA,IAAI,CAAC,kBAAkB,CAAG,CAAC,EAAE,AAC/B,EAAA,IAAI,CAAC,IAAI,CACP,CAAA,QAAA,EAAW,IAAI,CAAC,kBAAkB,CAAA,qCAAA,CAAuC,CAC1E,CAAC,AAEA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAC9B,AADgC,IAC5B,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,AAGrC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,AAC3B,IAAI,CAAC,MAAM,EAAG,EACd,EADkB,CAAC,CACf,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,AAClC,CAAC,AAEO,QAAQ,CAAC,CAAe,CAAA,CAC9B,GAAmB,QAAQ,EAAvB,OAAO,GAAG,AAAiB,GAAG,AAAI,EAAA,aAAa,CAAC,GAAG,EAAE,CAGvD,CAHyD,KAGzD,CAAA,EAAO,EAAA,MAAA,AAAM,EAAC,EAAM,CAAH,GAAO,CAAC,kBAAkB,CAAC,CAAC,AAG/C,GAAmB,QAAQ,EAAvB,AAAyB,OAAlB,EACT,CADY,KACZ,CAAA,EAAO,EAAA,cAAc,AAAd,EAAe,GAAG,AAG3B,CAH4B,CAAC,CAGzB,GAAG,UAAY,IAAI,CACrB,CADuB,KACvB,CAAA,EAAO,EAAA,cAAA,AAAc,EAAC,EAAI,CAAD,MAAQ,EAAE,CAAC,CAAC,AAGvC,GAAA,CAAA,EAAI,EAAA,iBAAA,AAAiB,EAAC,GAAG,AACvB,CADwB,EAAE,IACnB,EAGT,CAHY,CAAC,CAGT,IAAI,CAAC,kBAAkB,CAGzB,CAH2B,KAGpB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,AAGpC,IAAM,EAAa,EAAA,MAAH,OAAgB,CAAC,GAAG,EAAE,CAAG,IAAI,CAAC,qBAAqB,CAAC,AACpE,MAAA,CAAA,EAAO,EAAA,UAAA,AAAU,EAAC,IAAI,CAAC,SAAS,CAAA,CAAA,EAAE,EAAA,cAAA,AAAc,EAAC,GACnD,CAAC,AAED,MAH6D,CAAC,CAAC,CAAC,EAGrD,EAAA,CACT,MAAO,CAAgB,KAAK,CAAC,EAAlB,CAAC,MAAM,AACpB,CAAC,AAED,eAAe,CAAC,CAAoB,CAAE,CAAgB,CAAA,CACpD,IAAM,EAAyB,CAAA,CAAE,CAAC,AACT,KADT,GACiB,EAA7B,AAA+B,OAAxB,EACT,CAAU,CAAC,EAAA,GADO,mBACe,CAAC,CAAG,EAC5B,IACL,EAAU,CAFgC,CAAC,CAC7B,CACA,CADE,AAElB,CADkB,AACR,CADC,AACA,EAAA,mBAAmB,CAAC,CAAG,EAAU,IAAI,CAAC,EAAN,MAAc,EAAE,CAAC,AACnD,EAAU,IAAI,EAAE,CAAP,AAClB,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAAU,IAAA,AAAI,CAAC,CAE/C,CAFyC,CAE/B,OAAD,AAAQ,EAAE,AACrB,EAAU,CAAC,EAAA,sBAAsB,CAAC,CAAG,EAAU,OAAO,AAAP,AAAD,CAAS,CAErD,EAAU,KAAK,EAAN,AAAQ,CACnB,CAAU,CAAC,EAAA,yBAAyB,CAAC,CAAG,EAAU,KAAA,AAAK,CAAC,CAAP,CAKjD,CAAU,CAAC,EAAA,mBAAmB,CAAC,EAAI,CAAU,CAAC,EAAA,sBAAsB,CAAC,CACvE,CADyE,GACrE,CAAC,QAAQ,CAAC,AKlbc,CXCC,ASEjB,AHcF,EGbd,AHcA,CRhBoC,CUAC,OFgbC,EAAY,GAE9C,CAFgC,AAAkB,CAElD,AAFmD,CAAC,EAAR,CAExC,CAAC,IAAI,CAAC,CAAA,8BAAA,EAAiC,EAAS,CAAE,CAAC,AAE3D,CAF4D,AAE3D,AAED,IAJwD,AAIpD,QAAQ,EAAA,CACV,OAAO,IAAI,CAAC,SAAS,AACvB,CADwB,AACvB,AAED,IAAI,KAAK,EAAA,CACP,OAAO,IAAI,CAAC,MAAM,AACpB,CADqB,AACpB,AAED,IAAI,sBAAsB,EAAA,CACxB,OAAO,IAAI,CAAC,uBACd,AADqC,CAAC,AACrC,AAED,IAAI,kBAAkB,EAAA,CACpB,OAAO,IAAI,CAAC,mBACd,AADiC,CAGjC,AAHkC,AACjC,IAEG,iBAAiB,EAAA,CACnB,OAAO,IAAI,CAAC,kBAAkB,AAChC,CAAC,AAEO,AAHyB,YAGb,EAAA,CAClB,GAAI,IAAI,CAAC,MAAM,CAAE,CACf,IAAM,EAAQ,AAAI,GAAP,EAAY,CACrB,CAAA,4CAAA,EAA+C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA,UAAA,EAAa,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA,CAAA,CAAG,CACjH,CAAC,AAEF,EAAA,IAAI,CAAC,IAAI,CACP,CAAA,qDAAA,EAAwD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA,UAAA,EAAa,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA,CAAA,CAAG,CACzH,GAEH,AACD,EAHS,CACN,CAAC,GAEG,IAAI,CAAC,MAAM,AACpB,CADqB,AACpB,AAKO,oBAAoB,CAAC,CAAa,CAAE,CAAa,CAAA,QACnD,AAAJ,EAAU,GAAD,GAAO,EAAI,EACX,EAEF,CAHkB,CAGZ,CAHc,AACb,CAAC,CAEH,MAAU,CAAC,CAAC,CAAE,EAC5B,CAAC,AAcO,EAfyB,CAAC,CAAC,WAeZ,CAAC,CAAqB,CAAA,CAC3C,IAAM,EAAQ,GAAH,CAAO,CAAC,0BAA0B,CAAC,OAE9C,AAAI,GAAS,CAAC,CAAL,CAAO,AAEd,EAAA,IAAI,CAAC,IAAI,CAAC,CAAA,4CAAA,EAA+C,EAAK,CAAE,CAAC,CAAH,AAAI,AAC3D,GAIY,EAJP,CAAC,KAIc,EAAE,AAA3B,OAAO,EACF,GADO,CACH,CAAC,oBAAoB,CAAC,EAAO,GAAF,AAIpC,EAJ2C,CAAC,CAAC,CAIxC,CAAC,OAAO,CAAC,GACR,EADa,AACA,CADC,EAAE,AACJ,AAAI,CAAA,AAAC,GACR,AADW,CAAC,OACJ,CAAC,CAAxB,AAAyB,OAAlB,EAAmB,CAAhB,GAAoB,CAAC,oBAAoB,CAAC,EAAK,CAAF,EAAW,EAAJ,CAAC,AAAM,AAKlE,CAL6D,AACjE,AAKL,CAAC,AANsE,AACjE,CAMP,EAFe,CAAC,gBQ3fL,EAgBX,GAAA,CAAA,EAAA,CAAA,CAAA,MAhB2B,CXLA,ANEA,gDiBkB1B,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,2BhBvBW,CIAS,CLCP,eCCX,CMGK,ARJA,ACEA,AMFA,CICgB,IAAA,CTCnB,SAAA,EAA2B,EFDQ,ICGI,CAAC,COEC,CAAC,CNJL,kGUAQ,KLAW,CAAC,OKK3D,CKaC,AVdI,AHCM,KGDN,CPLoE,CAAC,0GIQnC,2CAED,6BAGlB,IAAI,CAAC,ASQA,AJJF,ILFd,CAAA,KAAA,EAAQ,gGAIV,CICsB,IAAA,CAAA,IJDV,IDUM,ICPpB,oBAAoB,CAAA,EAAA,mBACG,EAAI,IAAA,iCAEvB,COFG,qBAAA,EAAA,IAAA,0BPGY,CJJK,ASMJ,EAAA,kBAAA,ELDM,IAAI,uDAED,IAAA,gBAIlB,CAAA,CAAA,CAAA,CAAA,CAAA,CAGE,CaU0B,CAAA,CAAA,CbR/B,CAAA,KAEP,EDCF,ACDkB,CJXD,AaWE,CAAA,KAAA,CAAA,EbZiC,CAAC,WaYlC,CTAoB,aAEpB,AKNC,GAAA,EAAA,SLMF,SKNE,ALMiB,EAAC,GNXG,CAAC,CAAC,GGQG,KGcxB,CACpB,EAZoD,AAYpD,OHf2D,CAAC,CAAC,CGerC,CAAG,EAAA,UAAU,CAAC,OAAO,EAAE,IACrC,oBAAoB,CAAC,GHHzB,SAAA,CAAA,EGKN,CHL0B,CAAA,EGO1B,EHP8C,EGS9C,GAGG,IAAI,CAAA,uBAAwB,CAAC,YAAY,CAC9C,EACA,EACA,EACA,CAHO,CAIP,CJ3B4D,CI4B5D,EAHQ,CAOZ,CANY,CAEH,AAIS,CAHf,CAAC,QAGc,CAAA,EAAA,UAAuB,CAAC,OAAO,CACxC,CAD0C,GAC1C,CAAA,mBAAwB,CAAC,YAAY,CAC1C,CSnB4C,CAAC,AToB7C,EACA,EACA,CCfgD,ADYzC,CCZ0C,ADgBjD,CAHO,CAIP,GAIG,CANK,AL/BN,CKiCG,ACdE,CDeR,CAAC,AAGO,CALG,AAKF,sBAAA,CAAA,YAAA,CAAA,EAEV,ES3ByD,ET6BzD,EACA,EHvB6B,AGwB7B,EHxB+B,CGxBxB,CHwB0B,AGsBzB,CAEH,CACN,CAAC,AAjDW,CA+CD,AA/CE,CIFC,ALEA,IAAA,CCAK,YAAY,CAC5B,EACA,CDFgC,CCGhC,EACA,EACA,EIP6D,AJQ7D,CIRsE,CJoD5E,AIpD6E,AJK/D,CA+Cb,AAED,EJ7CI,AIDO,CACN,CAAC,CAFU,KJEZ,OI8CK,CAAA,iBAAA,EAAoB,IAAA,CAAA,KAAU,CAAC,QAAQ,EMOE,ANPA,AH1BF,CSiCE,sBAAA,ENPyB,EShCF,EAAA,CAAA,oBTgC2B,CAAC,QAAQ,EAAE,CAAA,yBAAA,EAA4B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAA,qBAAA,EAAwB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAA,wBAAA,EAA2B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAA,CAAA,CAAG,CAAC,CAEnT,eOjGS,EGGJ,SHHwB,ICAhB,AVAA,WSEQ,CAAA,CAAA,CAClB,CJDK,GAAA,CAAA,MICM,CAAG,IAAA,CAAK,UAAA,CAAW,KAAK,CAAC,CAAC,AACjC,CAAC,KbDwC,CAAC,KaC9B,CAAA,KAAQ,CKEC,ILFI,CAAY,AAAZ,WAAA,IAAK,CAAC,EGEE,CAAC,GHFG,iBAGZ,CAAe,AJFrB,CIEqB,EMatB,KNZf,CMaD,ANZJ,SAAA,CAAA,EAAA,EAAA,cAAA,EACiB,CVNI,GAAA,IUMY,CAAC,WAAW,CAAC,GAAW,EXJT,CAAA,CWIK,AAAQ,CAAP,AAAQ,WAAW,CAAA,EAClD,kBAAA,CAAA,EACA,UAAA,wCAKG,IAAI,CAAA,MAAO,CAAA,CAAA,CAAG,CAAC,KMeG,MNZ7B,CAAA,CAAA,OACI,oBAAY,MAAM,GAAe,EAC/C,GAAA,EAAA,EAAiB,CbAC,AOqBI,EMrBI,CAAC,CAAC,EAAM,cAGvB,CAAe,CRUrB,qBQRI,EAAA,EAAA,MAAkB,CAAG,EAAA,IAAQ,OAC3B,EAAJ,KAEI,EADH,SAAS,EAAA,EACS,GADI,CAAC,ENqBI,AMrBD,CAAA,CAAQ,CAAC,CAAC,CAAE,GACpB,CAAI,CAAC,EAAK,CAAC,QAErC,GXDG,AAVR,SAAA,iEAIa,2BAEX,CAAA,CCQ2B,AUNA,CAAA,EAAA,gBAAA,EAAA,sCXF8B,QAAQ,mBAEjE,EAAA,gBAAA,AAAgB,EAAA,+BAAkC,GAAG,aAE7C,gDAEQ,EAAA,2CAA8C,QAAQ,qCAEtD,EAAC,GQOwB,CAAC,CPIC,AOJA,+BRPY,GAAG,gBAC5C,CAAA,EAAA,EAAA,gBAAA,AAAgB,EAAC,CaWG,8BbX8B,GAAG,oBACpD,EAAA,gBAAA,AAAgB,EAAA,gCAAmC,CCc7B,CYFE,EbXzC,CIwBC,CCHK,0BAAA,CAAA,ELpBJ,EAAA,gBAAA,AAAgB,EAAC,2CAA2C,CAAC,EAAI,GAAG,CACtE,CDEC,0BAAA,CAAA,ECDC,EAAA,WGSmI,CACpI,CAAC,GHVA,AAAgB,EAAA,6CAAgD,GAAG,EAG3E,AIwBkB,CaVjB,AjBdA,AAKK,SAAU,QACR,EAAA,CAAA,EAAA,EAAA,gBAAA,AACY,EAAC,CUmDa,uBAAA,EAAA,mBAAA,WVhD9B,CGYG,IHZE,EAAA,QAA4B,CcED,EAAE,SdDrB,CDDC,iBCEoB,EQYE,MRX3B,CQYG,GAAA,4BRXgC,YAC/B,EAAmB,CAC5B,KAAA,CCsBmC,GDtBzB,CUoDG,ET7BA,ADrBjB,MAAA,EAAyB,oBAAoB,MQaI,CAAC,CRZzC,IAAI,EAAmB,CAC5B,KAAA,IAAA,+BAGK,IAAA,EAA6B,YACb,EUqDE,qBVrDqB,cAChB,CAC5B,IAAI,CAAE,IAAI,EAAyB,GQaK,CAAC,ERX7C,AQWwB,gBRVtB,EAAA,IAHiE,AAG7D,CAAC,CAH8D,CAAC,GAG/D,CAAA,CAAA,2BAAA,EAAA,EACkC,0BAAA,EAA6B,EAAoB,iBAAD,EAAoB,CAAA,EAAA,CAAI,CAC9G,CAAC,IACS,EAAmB,GCuBd,GDtBR,IAAA,IAGd,CAAC,AAED,SAAS,IACP,IAAM,EAAA,CAAA,EAAc,EAAA,gBAAA,AAAgB,EAAC,kCACrC,MAAA,AAAyB,UAClB,KAAK,CACR,mDAAmD,GA5EnD,GAiFA,EAAc,EQcG,CRdE,EAAc,CAL+B,AAK9B,CAL8B,CAAG,AAK/B,CAJrC,CAAC,KAKG,GQcW,ERdN,CAAA,2BACmB,YAAW,oDAA8E,CACrH,CApFC,AAoFA,GAIG,CACT,CAN4C,AAM3C,EANyG,CA5F/F,GAAA,CAAA,EAAmB,EAAA,CAAA,GA4FyF,AArFtH,CFIsD,AEiFgE,CFjF/D,AEiF+D,CFjF9D,EOavC,sILnBhB,EAAA,uBAAA,CAAA,gGFHiD,MSDQ,CAAC,WCTvC,EVgB4B,CAGjD,IAAM,CoBED,CAAA,OpBFwB,WAAW,CAAC,oDAGT,CAAC,CAAE,AeOD,CfPE,AMCnB,ASMkC,GfPX,eAGP,CAAA,AAAe,AWAI,CAAC,WXApB,KAAA,MAAa,EAAE,GAAgB,CAAC,CWIM,EXJJ,CAAC,AWIE,CAAC,GLNG,CAAC,CACpE,CAAC,GNKK,CMED,ANFE,CAAG,EAAA,EAAO,CWIC,AEJA,CAAC,AbAK,CAAC,AaAL,CVIM,AUJA,EbAG,GAC1B,CAAa,CAAA,EAAA,CAAA,GAAS,COqBK,AFVJ,AFNE,eHHJ,GAAG,AAC1B,EAAA,CAAA,EAAsB,CAAC,CAAA,CAAA,CAAA,mBAIE,CAAC,MAAO,CAAC,CAAE,UqBlB1C,0DFA0C,cAElB,CAAA,CACtB,CLdC,AJII,ANJJ,AKAI,CKAH,AVAA,EecE,CAAA,YAAA,CAAgB,EAAM,CTVK,ALOS,CKPR,CDJH,AUcJ,ARZI,UQYU,CEaC,AFbA,aVdiB,CAAC,UUcY,CACpE,GADkE,EAClE,qBACa,qCAGX,CAAA,SAAU,CAAA,EAAS,CJNK,kBIMc,CEDL,AFCM,qBAA2B,CACpE,KAAM,uEAMR,CAAA,CACA,CAAkC,CAAA,KAsB7B,QApBuB,AA8BhC,SAAkC,CAAA,mBAER,kBAAkB,kCAElB,MAAA,OACb,qBACa,UAAA,OACb,OACV,AACH,CAAC,CAvCwD,uBACpC,CAAC,GAAG,CAAC,EAAA,4BAmBjB,EAlB0C,EAmB5C,YAII,CADuB,GjBhBD,KiBmBxB,kBAxB6B,CAAE,QAGX,EAAiB,ENfE,CAAC,AGCnB,MGW6B,CAGH,CbdD,CacG,CbdD,CAAC,QaetC,CAAC,KAGX,EAAA,IAC4B,CAAE,QHnB8B,CAAC,CAC5D,CAAC,cGoBO,GAAG,CAAA,EAAA,GACX,SACD,CAAA,SAAU,CAAA,GAAA,CAAA,CAAM,EAAA,KAGzB,uFT/BsC,eACU,8BAQ7C,CAAoB,CKEe,ALDnC,CAAkB,CAAA,CACU,CAAA,OAEtB,EAAA,SHzBM,AFWgB,CAAA,AEXoB,MAK5C,CYQD,CZR8C,CHLxB,AKDI,AKCJ,CVAC,YGStB,EAAiB,IAEjB,CSJoB,CTIpB,EPPyB,KOOzB,MAAA,CACJ,CAAA,EACA,EAAA,EAEA,UAAU,CACX,CAAC,+BAIA,CLxB0B,CKwBX,aAAa,CAC5B,EAAW,QAAD,KAAc,EAAI,CAAA,CAAE,CAC/B,CAAC,EAEK,UAAA,CAAa,OAAA,MAAa,CAAA,CAAA,EAE/B,EAAe,MahBX,CAAA,GbgBqB,CACzB,EAAW,QAAD,EAAW,EAAI,CAAA,CAAE,CAC5B,CAAC,AAEK,CACT,CAAC,CGNS,gBACO,CAAG,CLGD,CAAA,OKHoB,uBACD,CSSD,YTTc,CAAC,IJNE,EAAE,CAAC,EaeE,UTRxB,UAAU,CAAC,WLGO,CAAC,KKFjC,CAAA,EAAA,WAAA,EAAyB,CGPC,GHOG,OACzC,CHcG,QGdM,CAAG,EACjB,CMJC,ADKA,GAAA,CLDI,cAAA,CAAA,oCAGC,EAAA,EAAoB,aAAa,CACnC,EAAY,aAAa,CAAA,QAAS,CAAC,CJG5B,2BIHwD,EJMvD,MAAA,EAAA,eILW,0CASvB,CAAA,CAAA,EAC2B,CAAA,CAAE,CAC7B,EAAU,EAAA,OAAW,CAAC,MAAM,EAAE,CAAA,aAGlB,CPSC,CFlBD,EAAA,ESSM,UACG,CAAC,UAAA,CAAA,EAAA,EAEtB,IAAM,EAAA,EAAA,KAAA,CAAuB,CSKD,CAAC,KTLO,CAAA,gCAEZ,UAAU,OACvB,KAAK,CAAA,mDACR,EAAA,KAA4B,CAAA,eAAgB,CAChD,EAAI,CAAD,CAAC,kBAAoB,CACzB,CAAC,AAIJ,IAAM,EAAoB,GAAY,WAAW,EAAE,CAC7C,AAD8C,EAC9C,IAAa,CAAC,CPWH,WOXe,CAAC,CRZD,aAAA,EQgBhC,CACG,CRbC,CAAC,CQcH,EAAA,KAAU,CAAC,SRbW,CQatB,QAA6B,CAAC,MAMpB,CLGC,CKHiB,OAAO,CAAC,EACvB,EAAkB,AAN/B,UAMyC,CAAC,AAC1C,EAAyB,aRbW,UQQR,CLCG,CHfH,CUoDK,YFtCU,OAQvC,EAAW,EAAQ,ELEE,CAAC,CKFC,CAAL,APWF,COXW,EAAI,CAAD,CAAC,MAAQ,CAAC,QAAQ,CAAC,AACjD,CEyCG,CAAA,CAAA,EFzCc,CPWH,IOXQ,EAAI,EAAA,AAAE,CAAC,CAAC,GAAA,CAAA,AAAI,aAE3B,EAAK,OAAA,CACd,WAAA,CAAA,EAAY,EAAA,kBAAA,AAAkB,EAAC,EAAK,EAAD,QAAW,CAAC,IAG7C,CE0CC,CAAA,CAAA,EF1CY,CE0CC,CT9BH,kBAAA,AOZoB,EAAC,EAAQ,KAAD,KAAW,CAAC,CAAC,AAEpD,EAAiB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAC/C,EACA,EACA,EACA,CAHO,CAEH,AAEJ,CAHO,CAIP,GAGI,CALI,CAEH,AAGkB,CAFxB,CAAC,CAFU,CAIiB,CAAA,cAAe,CAAC,SAAS,CACpD,EACA,CRpBgE,CQoBjD,QAAQ,CACxB,CAAC,cAEoC,EAAI,QAMtB,CRpBC,CQc+B,CAAC,ILRA,CAAC,CKchC,ALdiC,SKcxB,EAAQ,WAHrC,EAAe,QAAQ,GAAK,CAAd,CAAkB,CAAD,CAAC,cAAgB,CAAC,kBAAkB,CAC/D,EAAA,UAAc,CAAC,OAAO,CLVD,AKWrB,CRvB0B,AGYJ,CKWtB,UAAc,CAAC,IAAI,CAAC,WACyB,CAAU,CAAE,CAAC,KAC7C,EAD0C,GE8BrC,GAAA,GF7BQ,EAAA,gBAAoB,CAAC,UAAU,EAAE,MAKxD,CEgCC,KFpCA,CAAC,CRnBK,CAAC,GQmBD,CACZ,IEiCiB,6DF/BM,EAAA,KAAS,CAAC,eAAe,CAAC,OAM/C,EAAA,CAAA,CAN0D,CAAC,AAM3D,CAN4D,CAM5D,kBAAA,AAAmC,EACvC,OAAO,CEgCyC,CAAC,IFhCpC,CAAC,EAAY,EAAe,MAAjB,IAA2B,CAAC,CAAZ,AACzC,CAAC,AAiBF,OAfa,AAeN,IAfU,EAAS,MAAD,IACb,IAAI,CAAC,SAAA,CACf,KAAK,CAAE,IAAI,CAAC,oBAAoB,SAChC,cACA,OACA,CLVa,CKWb,EAFW,GAEL,4BAEa,aACP,YACD,EAAQ,SAAA,CACnB,cAAe,IAAI,CAAC,cAAc,YACtB,IAAI,CAAC,WAAW,oBAE7B,CAEH,AAFI,CAAC,AAEJ,AA4DD,gBACE,CAAY,CACZ,CLrEiB,CKsEjB,CLtEiB,AKsEK,CACtB,CAAQ,CAAA,KAEJ,EACA,EADiC,AAErC,CAFsC,AACN,CAAC,aAGnB,MAAM,CAAA,GAAM,KAEM,CAAC,EAAE,CAAxB,SAAS,CAAC,MAAM,KAEK,CAAC,EAAtB,AAAwB,UAAd,MAAM,EACzB,EAAO,GLtEC,CKuEH,IAEL,EAAO,IACD,IAA+B,CAAC,EAIxC,CEvBC,GFuBK,EAAgB,GAAG,AAAI,EAAA,OAAW,CAAC,MAAM,EAAE,CAAC,AAC5C,EAAO,EAAH,EAAO,CAAC,SAAS,CAAC,EAAM,EAAF,AEtBM,CAAD,CFsBC,AEtBA,CFuBhC,EAAqB,EEtBC,CFsBE,AEtBF,IAAA,CAAA,OFsBgB,CAAC,EAAe,GAE5D,CAFgE,CAAC,CAAC,IAE3D,CAFmD,CAEnD,OAAW,CAAC,IAAI,CAAC,EAAoB,EAAE,KAAE,EAAW,EAC7D,CAGA,AAHC,CADgE,CAAC,CEvB3B,AFuB4B,CAAR,AAAf,AEvBJ,cF2BxB,QACP,IAAI,CAAC,cAAc,AAC5B,CAD6B,AAC5B,AAGD,CL5E0B,EAAE,YK4Ef,QACJ,IAAI,CAAA,WAAY,AACzB,CEzB0B,AFwBA,AACzB,CACF,MMlPY,iBACuC,CHFjC,EXMlB,iCcFuB,CPHK,AOGF,qBAIW,CGWlB,CHXoB,CAEpC,IAAK,IAAM,CLHa,AEAd,IGGkB,IAAI,CAAA,eAAgB,CAAE,AAChD,EJmDe,AInDN,CNAe,CSS0B,EHTrC,CAAA,EAAe,UAAU,CTK1B,CSL4B,SAEnC,IAAA,QAAY,eACN,CAAC,GACT,CNCwB,AVHnB,GAAA,CAAA,WgBKL,CLEK,IAAA,CAAA,AKFC,CLEK,ARJmB,0BaGX,EAChB,GAAA,AAAa,CGcoB,KHdd,4DAOT,CAAgB,CAAA,cACN,IAAI,CAAA,eAAgB,CAAE,EAClC,IVHsC,EAAE,CAAC,AUGzC,CAAA,EAAc,CNGiC,APA9B,EOAgC,CAAC,SMCjD,CAAA,KACZ,IAAA,KAAuB,IAAA,CAAK,eAAe,CTiBH,UShBjB,EACxB,AAD0B,CXOzB,AFEI,AIQoB,CAAC,AFVxB,QWNoB,CAAC,UAKL,CAAA,KACjB,IAAA,KAAuB,CbgBE,GahBE,CAAC,eAAe,CAAE,UAGpD,CAAC,eAGO,EAA4B,EAAE,KAE/B,IAAA,KAAA,IAA2B,CAAC,eAAe,CAAE,4BAG3C,IAAA,QAAY,CAAA,EAAA,gBACN,CAAA,GAAW,CNSC,CAAC,EMTE,CAAC,UAExB,IAEP,CAAC,AfHA,CeIF,CbzDW,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,mJAa2B,MYQrB,wCZJR,EAAA,CAAA,EAAe,EAAA,KAAA,AAAK,EAAA,CAAA,EAExB,IIoBA,AJnBA,CkBLgE,CAAC,MhBaX,CEW5C,AAAkB,CAAwB,qCACE,CAAC,CAAC,yCAMrC,EAAA,qBAAA,EACV,CMrBG,YAAA,ENqBY,EMrBI,CQFO,kBAAA,CAAA,EAAA,EAAA,gBAAA,AdwBrB,EAAC,oCAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,+BAtDwB,GAAG,CAAC,IDFI,CAAC,IM2B3B,EACzB,CV5B2D,CAAC,IODI,CAAC,SFgE7B,CAAA,EKnCjB,ALmCiB,GKlCrC,MAAM,CLmCkB,EM/DkE,AN+DhE,2BAAA,EACZ,KKpC6B,CAAC,OLoC9B,EAAA,2BAAA,CAAA,EAAA,EAAA,gBAAA,AACK,EAAC,2CAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,sCAAA,EAIZ,OAAO,MAAA,CAAA,CAAA,EAAA,EAAuB,eACvC,CAAC,CFnC2D,CHgBzD,oBCtB+B,COIC,OAAA,EAAA,CAAA,EPJW,EUJK,EAAD,CAAC,YAAA,AVIU,EGFA,AHEE,CGFD,AHEE,WDNe,UCQrD,CHLD,KAAA,CAAA,CAAA,EAAA,EGK0B,UACnC,IAAI,CAAA,SAAU,WAGc,CHPhB,AgBKA,CAAA,2BbIW,CHRH,CAAC,AGShB,EEGoB,AWPA,CAAC,CbIrB,AaJsB,IbItB,EAAe,cAAA,4BAGJ,IAAI,EAAmB,CHRhB,EOsBe,CAAC,ADXI,CAAC,UHExD,CgBOiB,APoCe,CAAA,CAAA,CAAA,KTxC1B,CFRW,CAAA,CAAA,EEQF,ES0CqB,ANpCnB,CAAA,EHNM,GAAW,CaRH,CbQK,AaRJ,CAAA,CAAA,EAAA,GbQiB,IEFA,CAAC,MFEY,CEFH,CAAC,AFEI,CEFH,CFEK,CAAC,QDXb,GCY7C,CAAC,GgBKG,CPqCoB,AOrCnB,IAAA,ChBLK,GAAG,CAAC,MAAM,GACtB,GQNO,AVFJ,KEQK,CAAA,GAAA,CACX,EACA,CADG,GACC,CYFwB,CAAA,gBZGlB,EAAS,UAAW,CDd+B,CAAC,CImBrD,CAAA,QHLuC,CAAE,CAChD,EGMQ,EAAA,CHNH,OAAO,CACZ,IAAI,CAAC,EGOA,CACN,CAAC,KHRc,CACd,IAAI,CAAC,oBAAoB,CAC1B,CACF,CAII,AAJH,CYFI,GAAA,CZMI,EICF,MJDU,CAAC,GAAA,CAAI,GAG3B,YAAA,KACQ,EAAA,IAAA,CAAA,OAAsB,CAAC,uBAAuB,CAAC,GFlBC,EAAE,EEmBlC,oBAAA,CAAA,eAAuC,CAAC,EGqBrD,CHrBwD,CAAA,AAC9D,OGqBO,AHpBK,QAAA,UAEH,EAAA,WAAA,OAEF,ASgCa,GAAA,GT/BX,CAAA,0DAAA,EAA6D,EAAO,GAAA,CAAK,CAAL,AACrE,CACF,CACD,AADE,CDrBK,CDDH,EEuBoB,CapBK,MboBE,AACjC,CADkC,CAClC,KAGG,CarBG,CfHC,AeGA,QbqBM,CDvBK,ECwBf,IAAI,CAAC,yBAEU,EAAgB,KDvBT,ECuBgB,EAAE,AAErC,EADA,EAAQ,EAAgB,CS6BX,OT7BmB,CAAC,AAGrC,CAAC,CAAC,CACD,KAAA,CAAA,IACC,aAAa,OACW,KAAK,CAC7B,EEPI,AFOI,EACV,aAKD,IAAI,EETA,EAAE,GFSK,CAAA,CAAA,EAAiB,aACzB,EOXI,CPWD,CAAC,GAAA,IACL,CAAA,IACH,IAAM,EAAS,EAAQ,EDvBE,ICuBI,CAAA,AAC3B,GAAU,GAAJ,CAAC,AAAc,EAAL,AAAqB,QAAQ,CAC9C,CAAC,EACS,CAF2B,COX3B,IPaM,CAAG,EAClB,CADqB,CACd,CD1Bc,EC4BrB,MAGH,KAAK,CAAA,AAAC,GAAS,EAAJ,AAAI,CAAH,AAAW,COJN,CPIY,gBAKlC,CS6BC,MT7BM,EOCE,EAAA,CPDG,oBAAoB,CAAC,QAAQ,EAAE,AAC7C,CAAC,AAD6C,CAE/C,IDtB2C,qEG7EH,sBACQ,GEPtB,mFFcmB,qBACL,kBAGrC,IAAA,CAAA,SAAA,CAAA,2BAEwC,iBAA/B,GAAQ,mBACX,EAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,mCACuD,GAAG,CFR7C,AEQ8C,kBAC/C,CQXC,ARYe,OEUW,GMtB1B,ORYV,GAAA,aEUoC,EFThC,YAAA,CAAA,CAAA,EACN,EAAA,gBAAA,EAAiB,EKHM,ARVA,0BGawB,IAAI,CAAC,CAAC,yBAClC,CAAA,AACgB,QAAQ,EADxB,OAAA,GACT,qBAAiC,EAAA,oBACjB,CAAA,CAAA,EAAA,EAAA,gBAAA,AACV,EAAA,4BAA+B,CgBZkB,CAAC,4BhBchC,wCAAA,EAC5B,mBAAA,CAAA,CAAA,EACN,EAAA,gBAAA,AAAgB,EAAA,4BAA+B,2CAEf,CAAA,IAAK,CAAA,SAAU,CAAE,IAAI,CAAC,CWN5D,AXM6D,GHVC,CcI9D,AdJ+D,CcI/D,mBXQ2B,CUAE,CAAA,GVAK,CAAC,aAAa,EAAE,QAC5C,IAAI,CACP,GcIe,sIdFb,CAAC,CEQG,kBFRgB,CAAG,CHZD,GGYK,CAAC,aAAA,0BAK1B,CAAC,EKFE,WLEW,CAAC,COyCC,OPzCO,EAAE,wCAGZ,CKFC,WLML,CAAE,CAAuB,CKFlB,CAAA,OLIpB,CAAkB,CAAA,MACb,CJbD,YIac,CAAA,QAAS,CHZD,AacE,IVEtB,WAAA,GAAc,UAAU,CAAG,EFUG,CAAF,CAAC,CAAC,OEVO,CAAC,OAAO,AAAP,CAAQ,EAAK,CAAC,EAAE,iBAI/C,CAAC,EACpB,CAAC,AAED,UAAA,CACE,OAAA,IAAA,CAAA,aAAA,CAA0B,CFQH,GAAA,EEPzB,CAAC,AAEO,WAAA,QACC,QAAQ,IFOE,GAAA,GAAA,IAAA,CAAA,mBELS,COqCD,GPnCtB,CHhBC,GGgBG,CAAC,IACG,IAAA,CAAA,SAAA,IAER,IAAI,CAAC,IACG,IAAI,CAAC,SAAA,CAAU,QAAQ,CHdH,CGcK,CAAC,AAEvC,CHdC,AGcA,AAGO,aAAa,CAAkB,CAAA,uBACd,CAAC,MAAM,EAAI,IAAI,CAAC,aAAa,CAAE,CAGpB,CAAC,AFQF,EDzB2B,CAAC,AGiBvD,CHjBwD,GGiBxD,CAAK,kBAAA,EACP,EKQM,ILRF,CAAC,KAAK,CAAC,CHbK,2CGed,CAAC,CKUG,iBLVe,cAKjB,CAAC,KOqCK,aPrCa,CAAG,CAAC,EAAE,QAE1B,IAAI,CACP,CAAA,QAAA,EAAA,IAAA,CAAgB,EKSU,CAAC,eAAA,CAAA,mCAAA,CLT4C,CACxE,CAAC,IACE,CAAC,kBAAkB,CKQC,ALRE,CAAC,CAAC,MAGzB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC3B,CAAC,gBAAgB,EAAE,AACzB,CAD0B,AACzB,mBAQQ,CKUD,GAAA,QLVa,CAAC,EAAS,KAAF,COyCC,GPxCpB,EAAW,EOyCP,APzCS,CAEb,EAAQ,EKUJ,CLVC,CAAO,CAAC,IAAI,CACrB,EKSwB,ELTpB,CAAC,cAAc,CAAC,MAAM,CAAG,IAAI,CAAC,mBAAmB,CACtD,CAAC,IACG,IAAI,CAAC,CAAG,CAAC,CAAa,CAAX,CAAC,AAAG,CKQF,CLRa,AAAG,CAAF,AAAG,EAAV,AAAY,CAAE,AACrC,EAAS,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,QAE/B,GAAG,CAAC,GACT,CKOa,GLPT,CADa,AACZ,CADa,EACV,EAAE,AACT,GKQK,ALPP,CKOQ,ALPP,CAAC,CACD,CAFQ,CKqEA,CLrEE,CAAC,CAEN,CAAC,IAEb,wBAIE,MADK,WAAW,EAAE,CAAC,AACnB,AAAmC,CAAC,EAAE,CAAtC,IAAQ,CAAC,cAAc,CAAC,MAAM,EACrB,OAAO,CAAC,OAAO,GAEjB,IAAI,QAAQ,CAAC,EAAS,KAAF,AO4CK,CAAC,AP5CE,CO4CD,CP5CG,CAC7B,CAD+B,CACvB,GAAH,QAAc,CO4CC,CAAC,CP5CC,EAAE,AAE5B,EAAO,AAAI,CKsE8B,ILtEzB,CAAC,SAAS,CAAC,CAAC,AAC9B,CAD+B,AAC9B,CKsEC,ALtEC,IAAI,CAAC,CKsEM,CAAC,KExBA,aP9Ca,CO8CC,AP9CA,CAAC,AAE9B,EAAA,OAAO,CAAC,IAAI,CAAC,CAAA,EAAA,EAAA,eAAA,EAAgB,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAE,GAAG,EAAE,IAI/C,EACA,GADqB,CAAC,AAClB,CAAC,EKsEM,YLtEQ,CAAC,CKsEK,KLtEC,EAAI,IAAI,CAAA,mBAAoB,EAAE,AAC1D,EAAQ,IAAI,CAAC,cAAc,CAC3B,IAAI,CAAC,cAAA,CAAiB,EAAE,EAExB,EAAQ,GAAH,CAAO,CAAA,cAAe,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,AAGlE,IAAM,COiDK,CPjDM,IACf,IAAI,CAAA,SAAU,CAAC,MAAM,CAAC,EOgD+B,GPhD1B,AOgDyB,CAAC,AP/CnD,YAAY,CAAC,GACb,EADkB,AACP,CADQ,CAAC,EACL,GAAK,EAAA,gBAAgB,CAAC,OAAO,CAC1C,CAD4C,KAI1C,CAHK,CAGE,CAHA,CAAC,AOgDM,GP7CF,EACV,AAAI,MAAM,wCAAwC,CAAC,CACtD,AAEL,CAFM,AAEL,EAEC,EAAgD,IAAI,AOgD7B,CPhD8B,IACpD,IAAI,CAAC,AADU,CACP,CAAC,CAAE,EAAM,CAAH,CAAS,AOgDR,MPhDc,CAAE,CAAC,CAAG,EAAK,CAAC,AAAH,EAAK,CAAE,COgDC,AP/CjD,IAAM,EAAO,CAAA,CAAH,AAAS,COiDG,APjDF,COiDE,CP/CpB,COgDK,CPhDA,EAAD,MAAS,CAAC,sBAAsB,EACpC,EAAK,EAAD,MAAS,CAAC,sBAAsB,EAGpC,AAFA,CACA,GO+CS,CP/CY,EAAA,AAAE,CAAC,AOgDV,CP/CG,CO+CD,CAAC,EP/CI,CAAC,EAAN,AAAW,EAAD,MAAS,CAAC,sBAAsB,EAAE,CAAC,CAKxC,AALyC,IAKrC,EAAE,CAA3B,EO+CI,AP9CN,YAEQ,EAHU,CAGP,CAAC,GAAkB,IAAI,CAAC,EAAQ,AAAE,GAAG,CAAC,EAAN,AAAQ,AAAvB,CAC1B,AAD2B,EAC3B,kBAAA,AAAkB,EAAC,GAAG,AACtB,CADuB,CAAC,AACjB,EACT,CAAC,AADW,CACV,AAEN,AAHY,AAAK,CAAC,AACX,AAEN,GAEL,CAAC,AAEO,kBAAA,IACF,IAAI,CAAC,YAAY,CAAE,OAAO,AAC9B,IAAM,EAAQ,COkDI,EPlDD,EAAE,AACjB,IAAA,CAAK,YAAY,EAAG,IAAI,CAAC,CACrB,CAAC,WOkD+B,CAAC,CAAC,CPlDnB,EAAE,CAAA,OACX,CAAC,SACH,CAAC,YAAY,EAAG,COmDC,CPlDjB,AOkDkB,GPnDG,CAAC,AAClB,CAAC,cAAc,CAAC,MAAM,CAAG,CAAC,EAAE,CAClC,IAAI,CAAC,WAAW,EAAE,CAAC,AACnB,GOoDO,CPpDH,CAAC,gBAAgB,EAAE,IAG1B,KAAK,CAAA,AAAC,CAAC,CAAC,EAAE,AACT,IOmDiB,APnDb,CAAC,EOqDI,UPrDQ,EAAG,yBACF,EAAC,CAAC,CAAC,AACvB,CADwB,AACvB,CAAC,AACN,CAAC,AADM,CACL,AAEF,GAAA,IAAA,CAAS,cAAc,CAAC,MAAM,EAAI,IAAI,CAAA,mBAAoB,CACxD,CAD0D,MACnD,KAAK,EAAE,CAAC,CAEG,IAAhB,GOoDmB,CPpDf,CAAC,AAAoB,EAAE,COwD5B,GPxDY,EOuDF,CPvDyB,AACtC,IAAI,CAAC,MAAM,CAAG,WAAW,IAAM,IAAS,CAAJ,EAAE,CAAM,CAAC,MOwDK,CAAC,CAAC,aPxDc,CAAC,CAAC,AAGzC,QAAQ,EAA/B,AAAiC,OAA1B,IAAI,CAAC,MAAM,EACpB,IAAI,CAAC,MAAM,CAAC,GOwDK,EPxDA,GAErB,CAAC,AAEO,aAAW,MACG,MOuDM,EPvDlB,CAAC,EAAsB,IAAhB,gBACA,IAAI,CAAC,MAAM,CAAC,CAAC,AAC1B,IAAI,CAAC,MAAM,CAAG,OAElB,CAAC,CAF0B,AAK5B,CAL6B,eGjPU,CHCtB,EHHyB,AUkBnC,APdN,EOeA,AVnB2C,AeAA,AJCA,CIDC,AJCA,AJDA,EAAE,ACCA,EAAE,CRDC,GOAG,AFEA,CQElC,ARFmC,CDDC,AIAA,CKItD,ATJuD,CHCC,CAAC,ASiB3C,APfE,EOgBhB,APfA,CGH0E,ICFV,CAAC,IMKnD,CbLwD,CAAC,CaMxE,CdciD,CMSnB,CG5B8C,AEmB3D,CFnB4D,CEoB5E,APhBkB,CUCb,CVAL,SOeW,EACX,IPhBe,GJgBS,AIfzB,CJeyB,CchBE,CdgBF,AchBG,GVCtB,IOeY,EACjB,aAAa,EACb,APjB0B,CAAC,AJsBrB,CAAC,UAAA,CAAW,EAAA,EACT,CWNS,GACnB,AXKU,CAAA,KWLJ,KXKmB,gBWLE,CAAC,wDXsBrB,WAAY,EAAK,EAAD,MAAC,CAAS,UAAU,uBAEhB,EAAK,oBAAoB,IMkBE,KNjBxC,EAAA,WAAgB,CeCC,EfDE,CSQvB,MAAA,qBTPmB,iBAAiB,yBACb,GAAG,UAAU,EAAE,2BAEvC,EcYI,AdZC,CeEG,UfFQ,EAAE,CAAC,GEmBK,CAAC,EFnBA,MACvB,EAAK,IAAA,cACA,EAAA,oBAAA,AAAoB,EAAC,EAAK,CeGC,AbgBA,QFnBQ,CCCT,ADDU,aACrC,EAAA,oBAAA,AAAoB,EAAC,EAAK,QAAQ,CAAC,YACjC,CEuBD,CFvBM,AeGD,KNMgD,CAAC,CAAC,GTTjD,QACT,EAAK,CkBcC,AhBSA,CAAC,IFvBI,CCCG,AcEF,OfFZ,EAAK,CeGD,KAAA,OfFL,EAAA,KAAA,EASH,WACN,CAAqB,CAAA,CAAA,CAAA,CAGrB,CSWC,GAAA,ITXU,KAAQ,CWiDC,CXhDlB,IADwB,IACxB,GAAW,CAAC,CEoBC,GAAA,CFpBI,GCHK,QDGM,CAAC,EEoBE,CFpBK,CAAE,KAAK,CAAE,CAAC,CAAE,CAAC,CAAC,SAE1C,CSUD,APUE,EEPA,EJZG,CAAE,KAAM,EAAA,gBAAgB,CAAC,OAAO,CAAE,CAAC,AAEnD,CAFoD,AAEnD,CACF,uBUvE0C,EAAE,WAKtB,CNYD,AULC,CAAA,UJH2B,CAAA,CAE9C,CCkDY,AInDX,CfFG,AIWQ,AEAR,CNXA,IAAA,CUGK,QAAQ,CACf,OAAA,EAAA,CACE,KAAM,EAAA,gBAAgB,CAAC,IUNY,EVMN,CAC7B,MAAO,MAAU,kDAEF,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CQaD,ARbE,mBAEK,EAAA,gBAAgB,CAAC,OAAO,iBAMhE,+CAAO,IAAA,CAAA,UAAe,EAAE,6BAOT,GLMG,IAAA,iCKFM,oBAIxB,CRcC,MQdM,IAAI,CAAC,cAAc,CAAC,CAE9B,iDI7B6C,gBAG5C,aAAA,CAAA,CAAA,oCAEoB,CAAG,CfPG,EGAI,AaEN,CbFM,EAAA,cYOW,CAAC,IAAI,CAAC,OISO,EJTE,CAAE,IAAI,CAAC,CAAC,GMT5B,CAAC,ANU/B,CAAA,EIQiE,CAAC,CAAC,WJRnD,CAAA,IAAO,UAGvB,YAAU,CACd,CIQC,CAAC,CAAC,GJRG,QAAA,GAAA,CAAA,MAAkB,IAAI,CAAA,IAAA,CAAA,eAAA,QACnB,SAAS,CAAC,CdJC,AkBaA,SJTS,EAAE,CCLlB,AIjBW,KLuBhB,IAAI,CAAA,SAAU,CAAC,UAAU,YAIhB,CAAE,CAAuB,CAAA,CAAS,CAAC,OAE9B,CbXf,IaYH,IAAI,CAAC,aAAA,CAAA,QAAsB,GAI1B,EAAK,WAAW,GAAG,UAAU,CAAG,EAAA,UAAA,CAAW,CLFC,AHcJ,CDZK,CAAC,CAAC,CDCH,EAAC,AUDK,CAAC,EAAK,CVCH,AUDI,CVCH,CUDK,MbVf,AacjD,CbdkD,GaclD,EAAA,IAA0B,CAAA,SAAA,CAAW,GAAM,CAAF,CAAC,GAAC,CAAA,AAAM,GAAG,AAAG,CAAF,AAAE,EACrD,EAAA,kBAAA,AAAkB,EAAC,GAAG,CAAC,CACxB,CAAC,ObZ2D,CAAC,WaczC,GAAG,CAAC,CZAC,CAAC,CYCtB,EAAA,OAAqB,CAAA,IACxB,IAAA,CAAA,eAAA,CAAA,MAA2B,CAAA,UAIjB,UAAU,CAAA,CAAA,CAClB,EAAK,QAAQ,CAAC,sBAAsB,EAAE,MAElC,EAAK,QAAA,CAAS,GdXG,mBcWmB,iBAGvB,EAAA,QAAQ,CAAA,OAAQ,CAAC,IAAA,CAAA,SAAc,CAAE,CAAC,IACvD,CLHC,ALEA,EAAA,EUCU,CdZD,GAAA,GAAA,EAAA,gBcY0B,CAAC,OAAO,EAAE,KAE1C,EAAA,KAAA,EACA,AbbO,CAAA,KaaG,CAAA,EICO,8CAAA,EJD4C,EAAM,CAAA,CAAA,aAMvE,CLHC,MKGM,IAAI,CAAA,aAAc,CAAC,IAAI,EAChC,CAAC,AAEO,WAAA,CACN,OAAO,IAAI,CAAA,SAAU,CAAC,CVFC,OUEO,EAAE,AAClC,CADmC,AAClC,CACF,gBG3ES,CAAW,CAAE,CVHU,AUGO,CTLZ,AKEA,CIGqB,CfF1B,AeE2B,AAChD,ERLuB,ARAA,AIAA,AOEnB,ANCA,CYWoB,GDTlB,CAAmB,CdHb,AUAA,AKaiB,CDVK,CAAC,ARHjB,EAAE,ERDE,AIAA,EAAE,AHEA,ADFA,CU8BC,CT5BC,AODA,CDFC,AG+BA,EMxBzB,ATP2B,CAItB,ACIA,APFA,ADHA,AAFuB,AIAA,EHEE,CS4BC,EH/BE,AIEA,CKK1B,CRL4B,CAAC,IE6BI,AT5BA,CAAC,AS4BA,CMxB1B,CRCK,EHLyB,AECvB,ANEA,EGLyB,EYMzB,CFAK,CEAH,ChBJK,AgBIJ,CTHK,ANEA,CDHC,GYCH,AVAA,ecMrB,QAAA,OAAe,ifIjBb,EAA6C,uBAAuB,CAGpE,EAA8C,cAH9C,aCMN,SAAS,EAAgB,CAAI,EDHvB,ACG2D,MACtE,AAAI,IADyB,UACzB,GAAkB,EACb,EAAK,AADY,EAAE,AACf,UAAC,CACH,mBAAA,GAAuB,EACxB,EAAK,AADuB,EAAE,AAC1B,eAAC,EAAuD,MAAM,OAI9E,CCLO,SAAS,EACd,CAAI,EAGJ,MAAO,CAAC,CAAC,EAAS,EAJa,IAId,IAAC,EAA6C,QAAQ,EAAvC,OADf,AACsB,EAAS,EAD/B,IAC8B,IACjD,AADkD,CAQ3C,SAAS,EAA2C,CAAI,EAE7D,AAFgH,MAEhF,AAFP,QAEe,EAAjC,OAAO,AADG,EACM,EADN,EACM,AACzB,CAOO,CARiB,QAQR,EACd,CAAI,EAGJ,MAAO,CAAC,CADS,AAHU,AAIlB,EAAS,EADD,IACA,AAAO,AAC1B,CAOO,SAAS,EAA2C,CAAI,EAE7D,AAF8G,MAArF,AAElB,CAAC,CAAC,AADQ,EACC,EADD,EACK,AACxB,CChCO,CD+BY,QC/BH,EAAmB,CAAI,EAAsD,AAE3F,GAAI,CAAC,EAAkB,GACrB,CADyB,CAAC,EAAE,AAFE,EAGvB,CAAA,CAAE,CAIX,GALsB,CAKhB,EAAqB,EAAK,EAAD,QAAW,CAACuT,EAArC,AAAqCA,aAAa,CAAA,EAAK,EAAK,EAAD,QAAW,CAACiB,EAAAA,iBAAiB,CAAC,CAIzF,EAAsC,CAC1C,CADQ,EACL,CAAE,EAEL,aAAa,CAAG,CAFM,CAED,EAAD,QAAW,CAACC,EAAAA,wBAAwB,CAAA,EAAK,EAAK,EAAD,QAAW,CAACC,EAAAA,oBAAoB,CAAC,AAGtG,CAAG,AAGG,EAAC,CAAI,CAAC,aAAa,CAAA,EAAK,EAAK,EAAD,CAAI,EAAE,CACpC,CAAI,CAAC,aAAa,CAAA,CAAI,KAAA,CAAK,CAG7B,GAAI,CACF,GAAiC,QAAQ,EAArC,OAAO,EAAgC,CACzC,IAAM,EAAMjC,CAAN,CAAMA,MADH,EACW,CAAC,GAErB,EAAK,EAAD,CAAC,CAAMC,EAAAA,MAF2B,CAAC,cAEP,CAAC,GAE7B,AAFgC,CAAC,CAE7B,CAAD,KAAO,EAAE,CACd,CAAI,CAAC,YAAY,CAAA,CAAI,EAAI,CAAD,KAAC,AAAM,EAE7B,EAAI,CAAD,GAAK,EAAE,CACZ,CAAI,CAAC,eAAe,CAAA,CAAI,EAAI,CAAD,GAAC,AAAI,CAEpC,CACF,CAAE,KAAM,CAER,CAEA,OAAO,CACT,CE/CO,EF8CM,OE9CG,EAAY,CAAI,EAA0B,MAA/B,CACzB,AAAI,EAAY,GACP,CADW,CACN,AADO,EACR,AADU,EACL,AADH,CAIRtB,EAAAA,QAAQ,CAAC,QAAQ,AAC1B,CCdO,IAAM,EAAsB,cAAc,CACpC,EADA,AACwB,SAAS,CAEjC,EAAyB,OAFzB,KAEqC,CACrC,EAA2C,KAD3C,yBACyE,CACzE,EAAyB,KADzB,OACqC,CAIrC,EAA4BR,EAAAA,GAJ5B,aAI4C,CAAC,IAA7C,WAA4D,CAAC,CAE7D,EAA0CA,EAAAA,gBAAgB,CAAC,kBAA3D,WAAwF,CAAC,CAEzF,EAAoCA,EAAAA,gBAAgB,CAAC,YAArD,WAA4E,CAAC,CAE7E,EAA8CA,EAAAA,gBAAgB,CAAC,sBAA/D,WAAgG,CAAC,CCXxG,EAAsB,eAAe,CAMpC,CAND,QAMU,EAAqB,CAAO,EAAsC,AAChF,OAAO,EAAQ,KAAD,CADoB,EACX,CAAC,EAC1B,CAMO,SAAS,EAAmB,CAAO,CAAW,CAAM,EACzD,AADmF,MAPlC,CAAA,AAQ1C,EAAQ,EADiB,GAClB,GAAS,CAAC,EAA2B,EACrD,CEVO,GFSoD,CAAC,KET5C,EAAoB,CAAW,EAAoC,AACjF,GAAM,GFQ2C,QEThB,CACzB,CAAU,YAAE,CAAA,CAAW,CAAI,EAE7B,IAAsB,GAA0E,EAFxD,CAEwD,GAAM,AAAnE,CAAb,CAAwB,GAA6D,AAA1D,CAAC,AAAlD,GAMN,CANmD,EAM/C,IAAegE,EAAAA,IAAf,MAAyB,CAAC,OAAO,CACnC,CADqC,MAC9B,EAPuF,AAUhG,CAVgG,CAOnF,CAGT,EACF,OAAO,EAIT,GAJc,CAIR,EAAY,EAAa,AALR,EAKmB,AALjB,GAKnB,AAAuC,CAAC,EAA5B,EAAuB,IAA+B,EAClE,EAAM,CAAN,CAAkBre,EAAAA,CADyD,IACrE,CADwD,CAAA,8BACP,CAAC,GAAa,MAAJ,CAAA,EAAa,KAEpF,AAAI,GAAG,AAAE,OAAA,GAAY,MAAM,EAAE,AAGzB,GAAG,AAAE,OAAA,GAAY,OAAO,EAAE,MAKhC,CCAO,SAAS,EAAc,CAAQ,CAAU,CAAU,CAAkB,CAAI,EAA6B,AAG3G,IAH2B,AAGrB,EAAa,CAAU,CAACke,EAAAA,IAAxB,oBAAgD,CAAA,EAAK,CAAU,CAACC,EAAAA,oBAAoB,CAAC,CAC3F,GAAI,EACF,OAAO,AA6FJ,CA9FS,EAAE,MA8FF,AACd,MAAE,CAAI,MAAE,CAAI,CA9FqB,SA6FK,EACxB,CAAA,CAAY,CAC1B,CAAU,QAmGe,EAjGzB,EAiGyB,EAUA,EAGA,EAEA,KAFA,CAHA,GAKA,CAhHnB,EAAU,CAAC,IAAX,EAAiB,CAAC,CAExB,OAAQ,GACN,CADU,IACLtD,EAAAA,QAAQ,CAAC,MAAM,CAClB,EAAQ,IAAI,CAAL,AAAM,QAAQ,CAAC,CACtB,KACF,MAAKA,EAAAA,QAAQ,CAAC,MAAM,CAClB,EAAQ,IAAI,CAAL,AAAM,QAAQ,CAAC,AAE5B,CAGM,CAAU,CAAC,sBAAsB,CAAC,EAAE,AACtC,EAAQ,IAAI,CAAL,AAAM,UAAU,CAAC,CAG1B,GAAM,SAAE,CAAO,KAAE,CAAG,OAAE,CAAK,CAAE,UAAQ,UAAE,CAAA,CAAA,EAgFd,CAhF2B,CAAgB,IAAY,IA2FvD,AA3F2D,AAgF3D,CAWA,AA3F4D,CA2F5D+D,AA3FqD,EA2FrDA,EA3F0C,kBA2F1C,CAAA,GAGA,CAAA,CAAAX,EAAAA,iBAAA,CAAA,EAAA,CAAA,CAAAjB,EAAAA,aAAA,CAAA,GAEA,CAAA,CAAApB,EAAAA,eAAA,CAAA,CAGA,EAAA,CAAA,AADA,EAAA,MACA,CADA,CAAA,EAAA,OAAA,EAAAM,EAAAA,GAAA,KAAA,CAAA,OAAA,CAAA,GACAC,EAAAA,IADA,iBACA,CAAA,QAAA,CAAA,CAAA,AACA,EAAA,GAAA,EADA,IACA,OAAA,EACA,EAAA,GAAA,EADA,CACA,CAAA,EAAA,KAAA,EAEA,OAFA,CAEA,EAAA,OAAA,EACA,CAAA,MADA,CACA,CAAA,MAAA,GAAA,KAAA,KAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAGA,AAHA,IAGA,AAAAtB,EAAAA,QAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EACA,CAAA,OADA,AACA,CAAAH,EAAAA,wBAAA,CAAA,OAAA,GAAA,CAAA,IAAA,KAAA,MAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA,CAGA,EAHA,AAIA,CAAA,MADA,CACA,CADA,AACA,GAAA,GAAA,GAAA,KAAA,KAAA,MAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA,CAIA,EAJA,MAIA,EAAA,OAAA,EACA,CAAA,OADA,AACA,CAAAA,EAAAA,wBAAA,CAAA,OAAA,GAAA,CAAA,IAAA,KAAA,MAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA,CAGA,CAAA,CAHA,MAGA,CAAA,SAAA,EAAA,GAAA,KAAA,KAAA,MAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA,EAtHzB,CAsHyB,EAtHrB,CAAC,EACH,KADU,CACH,CADK,AACH,GAAG,EAA4B,EAAM,EAAF,AAAa,CAAE,EAAE,CAAE,EAAQ,EAAf,EAAmB,CAAL,AAAM,GAAG,CAAA,CAAG,CAGpF,IAHyC,AAGnC,EAA6B,CAAU,CAAC,EAA4C,CAGpF,EAAkB,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAIA,CAJnB,AAAmB,CAIA,CAJA,CAKA,CAAA,AARnB,EAQmB,EAAA,EAAA,EAAA,AA+CA,MAhDA,GACA,AA+CA,CAAA,EAAA,AACA,CAxDgE,EAwDhE,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA,AAEA,CAFA,GAhDA,AAkDA,EAAA,EAAA,EAAA,GAAA,AAHA,EAGA,CAAA,IAAA,EAAA,QAGA,EAAA,IAAA,EAAA,EAAA,CAAA,CACA,CADA,CACA,IAAA,CAAA,IAAA,CAAA,CAGA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,GAAA,EAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AAEA,CAEA,MAAA,CAAA,EAAA,EAAA,CAAA,AACA,CADA,CA7DA,GAAA,CAAA,CAAA,CACA,EAKA,EAAA,CAAA,CAAA,CAEA,GAAA,CACA,CADA,CACA,EARA,AAQA,CAAA,CAAA,CAAA,CAAA,CAEA,AAXA,CAAA,GAYA,CADA,AACA,CAAA,CADA,WACA,CAAA,CAAA,CAAA,CAAA,CAEA,IACA,CAAA,CAAA,EADA,EAAA,WACA,CAAA,CAAA,CAAA,CAAA,CAKA,IAAA,EAAA,IAAAG,AAAA,EAAAA,QAAA,CAAA,GAAA,GAAA,EAAA,IAAA,AAAAA,EAAAA,QAAA,CAAA,MAAA,CAKA,EAAA,CAAA,CAAAta,EAAA,AAAAA,gCAAA,CAAA,EAAA,QAAA,CACA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,CAAA,MAAA,CAAA,CAGA,EAAA,QAAA,IAAA,CAAAI,EAAAA,KAAA,2BAAA,CAAA,CACA,EAAA,CAAA,CAAAC,EAAAA,QAAA,kCAAA,CAAA,CAKA,aAAA,CAAA,QAAA,CAAA,CAAA,CAAA,AAFA,GAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAIA,EAAA,EAJA,AAIA,CAJA,CAIA,CADA,CAAA,EAHA,CAAA,GAIA,AAJA,CAIA,GAJA,CAGA,CAAA,EAAA,KACA,CADA,CAhCA,CAgCA,EAhCA,GAAA,EAAA,CAAA,CAgCA,CAhCA,IAgCA,CAhCA,EAAA,CAAA,KAAA,AAgCA,EAGA,MAAA,CACA,EAAA,CAAA,EAAA,IAAA,CAAA,GAAA,CAAA,aACA,SACA,EADA,IACA,CACA,CACA,CAAA,AACA,EA5KS,AA0KT,YA1KW,EAAY,IAAI,CAAE,EAAU,CAAlB,GAAkB,EAAF,AAAE,CAAM,CAAE,GAIxE,IAAM,EAAW,CAJiE,AAIvD,CAAC0d,AAJuD,EAIvDA,EAAtB,iBAAyC,CAAA,EAAK,CAAU,CAACC,EAAAA,kBAAkB,CAAC,CAC5E,EACJ,AAAoD,OADhD,CACgD,SAA7C,CAAU,CAACje,EAAAA,4BAA4B,CAAA,EAC9C,CAAU,CAACA,EAAAA,4BAA4B,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAI/D,GAAI,GAAY,CAAC,EACf,EADE,KACK,AADiB,AAwD5B,EAxD8B,OAwDE,AAAvB,YAAyB,CAAU,AAvDX,CAuDa,MAAA,CAAM,CAArB,CAE7B,AAF+G,IAEzG,EAAkB,CAAU,CAACM,EAAAA,SAA7B,iCAAuE,CAAC,CAC9E,GAA+B,QAAQ,EAAE,AAArC,OAAO,EACT,MAAO,CACL,EAAE,CAAE,GAFG,CAEC,CACR,WAAW,CAAE,EACb,MAAM,CAAG,CAAU,CAACD,EAAAA,EADQ,8BACwB,CAAA,EAA2B,QAAQ,AAC7F,CAAK,CAIH,GAAqD,QAAQ,EAAE,CAA3D,CAAU,CAACA,EAAAA,gCAAgC,CAAA,CAC7C,MAAO,CAAE,EAAE,CAAE,IAAI,CAAE,WAAW,CAAE,EAAM,EAAF,IAAQ,CAAE,QAAA,CAAU,CAK1D,IAAM,EAAY,CAAU,CAACge,EAAAA,GAAvB,kBAA4C,CAAC,CAInD,MAAO,CAAE,EAAE,CAAE,IAAI,CAAE,WAAW,CAFV,EAAY,EAAU,KAAtB,EAAqB,CAAS,EAAC,CAAI,EAEvB,EAF2B,IAErB,CAAE,MAAA,CAAQ,AAClD,EA9EkC,YAAE,EAAY,IAAI,CAAE,CAAA,CAAU,CAAlB,AAAmB,CAG/D,IAAM,AAH8C,EAGyB,QAAA,GAAjD,CAAU,CAAChe,EAAAA,EAAjC,8BAAiE,CAAA,CAAiB,QAAA,CAAW,OAAO,CAK1G,GADmB,CAAU,AACzB,CAD0B6d,EAAAA,OAChB,EAAE,WADkC,CAAC,CAEjD,MAAO,CACL,GAAG,EAA4B,EAAU,EAAY,IAAd,GAAqB,CAAT,AAAU,CAC7D,EAAE,CAAE,KAAK,AACf,CAAK,CAMH,EARkC,CAOV,CAAU,AAC9B,CAD+BC,EAAAA,YAChB,EAAE,WADuC,CAAC,CAE3D,MAAO,CACL,GAAG,EAA4B,EAAU,EAAY,EAAoB,CACzE,CADuC,CACrC,CAAE,EAD+C,OACtC,AACnB,CAAK,CAKH,EAP4E,EAA1C,AAO5B,EAAc,CAAU,CAACC,EAAAA,KAAzB,gBAA8C,CAAC,QACjD,AAAJ,EACS,CACL,GAAG,EAA4B,EAAU,CAF9B,CAE0C,CAFxC,CAE4D,CACzE,CADuC,CACrC,CAAE,EAD+C,AACnC,QAAQ,CAAT,CACrB,AADgC,CAD8C,AAEzE,CAGI,CAAE,AALyB,EAKvB,MAAE,EAAW,OAAF,IAAa,CAAE,EAAU,MAAF,AAAQ,CAAE,QAAA,CAAU,AACnE,CAWO,SAAS,EAAqB,CAAI,EAAiC,AACxE,IAAM,EAAa,EAAkB,GAAQ,CAAJ,CAAA,AAAS,CAA5C,CAA2C,AADf,QACgB,AAAd,CAA2B,CAAA,CAAE,CAIjE,OAAO,EAHM,EAAY,GAAQ,CAAJ,CAAA,AAAS,EAAD,EAAb,AAGJ,AAHkB,CAGjB,AAHwB,IAGpB,OAH+B,CAG7B,EAFd,EAAY,GAG3B,CAH+B,AA0LJ,CA1LK,CAEO,EAAE,CAFf,GAEmB,CAwLlB,AAxLmB,EAyLnB,CAAA,CACA,CAAA,CACA,EAAA,QAAA,EAKA,EALA,EAKA,EAAA,CAAA,CAAA/d,CARA,CAQA,AAAAA,gCAAA,CAAA,EAAA,EACA,EAAA,CAAA,CAAAC,EAAAA,KAAA,CADA,oCACA,CAAA,QAEA,GAAA,QAAA,EAAA,OAAA,EACA,SADA,IAEA,SACA,CACA,CAFA,AAEA,CAGA,CAAA,EAJA,SAIA,CAAA,SAAA,CAAA,CAAA,AACA,CEnTpB,AFkToB,GAAA,MElTX,IACd,OAAOqa,EAAAA,AADoB,GAAqB,EACpC,CAAC,aAAa,EAAE,AAC9B,CCDO,IAAM,EAAc,SAAd,EAAc,gBAAA,EAAA,gBAAA,CAAe,ACCnC,SAAS,EAAe,CAC7B,KAAG,CACH,KAF4B,IAErB,CACT,EAKE,IAAM,EAAY,EAAMvZ,CAAN,CAAMA,GAAlB,wCAA6D,CAAC,GAAG,AAAI,CAAJ,MAEjE,EAF8E,AAE7D,IAAImd,EAAAA,MAArB,IAA+B,CAE/B,CAFiC,CAEb,EAAY,EAAe,GAAG,CAAC,CAA/B,CAAuD,GAAa,EAI9F,AAJM,CAA8C,GAAsC,CAAA,EAIvE,IAAZ,CAJqG,AAIzF,CAAQ,EAAkB,AAJkC,GAIxE,AAAyC,CAAC,EAA0C,GAAG,CAAA,CAAI,CACpG,CCvBA,EDsB8C,ECtBxC,EAAgB,IAAI,GAAG,CAQtB,CAR8C,ADsBgE,ECtB/G,MAQU,EAAW,CAAO,EAChC,AAD8D,EAChD,CDa2E,ECbxE,AADO,CACN,EACpB,CCqBO,IDtBoB,AAAZ,CAAa,CCsBf,UAAyBC,EAAAA,IAAzB,gBAAyB,CAAqB,AAIlD,WAAW,EAAG,CACnB,KAAK,EAAE,CACP,EAAW,QAAD,UAAmB,CAAC,CAG9B,IAAI,CAAC,qBAAA,CAAwB,IAAIxC,EAAAA,MAAM,CAAkB,GAAG,CAAC,AAC/D,CAKO,MAAM,CAAC,CAAO,CAAW,CAAO,CAAW,CAAM,CAAuB,CAC7E,GAAIjB,EAAAA,mBAAmB,CAAC,GAAU,CAChC,GAD6B,AACdle,CADe,CACfA,KAAK,CAAC,GAAG,CAAC,2EAA2E,CAAC,CACrG,MACF,CAEA,IAAM,EAAa8d,EAAAA,KAAK,CAAC,OAAO,CAAC,GAC3B,EAAM,EAD4B,CACd,AADe,AA6NhB,OA5Nb,EA4Na,CAAA,EACA,AADA,CA5Nc,GA6Nd,EAAA5Z,EAAAA,EADA,EACA,MAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAGA,EAAA,CAAA,CAAA4c,EAAAA,MAAA,WAAA,CAAA,EAAA,CAAA,CAAAjB,EAAAA,aAAA,CAAA,CACA,GAAA,QAAA,EAAA,OAAA,EACA,OAAA,EAIA,CALA,GAKA,EAAA,EAAA,EAJA,AAIA,OAAA,EAAA,EAAA,CAAA,UAAA,EAAA,GAAA,CAAA,GACA,GAAA,EACA,OAAA,CAIA,EA5Oe,CAuOf,EArOnB,AAqOmB,CADA,CAAA,KAtOyB,AAwOzB,CAxO0B,iBAE3C,CAAuB,sBAAE,CAAA,CAAA,CAAyB9b,EAAAA,SAAS,EAAE,EAAE,UAAU,EAAC,EAAK,CAAA,CAAE,CACzF,GAAI,CAAC8a,EAAAA,0BAA0B,CAAC,EAAK,CAAF,CAA2B,IAAI,CAAC,gBAAP,KAA4B,CAAC,CAAE,CACzF,GACE7e,EAAAA,KAAK,CADP,AACQ,GAAG,CAAC,+FAA+F,CAAE,GAC7G,AADgH,CAAC,KAEnH,CAEA,IAAM,EAyLmB,AAzLK,SAyLL,CAAA,EAAA,AACA,GAAA,CACA,EA3LuB,CAA1C,CA2LmB,EAAA,CAAA,CAAA,EAAA,CACA,AAHA,AAEA,OACA,KAAA,CAAA,KADA,EACA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CACA,CAAA,KADA,AACA,CACA,MACA,CADA,AAEA,EAhMwB,GAC3C,EAiMmB,AAjMS,EA6LT,AA9L+B,CAAC,MAkMhC,CAAA,EAAA,AACA,GAAA,CACA,MAnM+B,CAmM/B,AAnMnB,CAmMmB,CAAA,EAAA,AACA,CAAA,GAHA,EAGA,CACA,MACA,CADA,AAEA,EAvMgC,CAmMhC,EAjMrB,EAAUyd,EAmMW,AArMuC,AAElDA,CAFmD,EAE7D,QAAqB,CAAC,UAAU,CAAC,IAAYA,EAAAA,CAAL,CAAA,SAAgB,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC,CAExE,wBAAE,CAAsB,SAAE,CAAO,QAAE,CAAM,SAAE,CAAA,CAAQ,CAAI,EAAiB,GAE9E,GAAI,CAFiF,CAAC,AAE3D,CACzB,IAAM,CAHqE,CAGpDiB,EAAAA,UADA,AACjB,QAAmC,CAAC,GAEtC,GACF,MAAM,CAAC,IADS,EAAE,CACJ,CAAC,AAH8C,CAAC,EAG/B,OAAO,CAAC,CAAC,CAAC,CAAZ,CAAC,AAAgB,CAAF,CAAQ,GAAD,CAC7C,CADmD,AAClD,GAA6B,EAAI,CAAD,SAAW,CAACxQ,EAAAA,OAA5C,kBAAqE,CAAC,EAAE,CAM7E,EAAU,EAAQ,GAAlB,EAAiB,GAAS,CAAC,EAAK,CAAF,MAAI,CAAA,EAAO,CAAC,AAC5C,CAAC,AADmC,CAClC,AAEN,CAEI,CAAC,GAA6B,GAChC,GAAU,IAAV,EAAgB,CAAC,OAAO,CAAC,CADtB,AAAmD,EAAE,AACP,MAAM,CAAU,CAAC,CAAC,CAAE,CAAC,EAAQ,EAAS,EAAX,CAC1E,AAAI,CADyC,CAAC,AAA4C,AAEjF,CAF2E,AAE1E,CAAC,IADC,EAAE,EACK,CAAC,CAAC,EAAAA,EAAAA,yBAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAEA,CAAA,CACA,EAHA,AAGA,CAAA,CAIA,CAAA,GAAA,GAAA,IAAA,AAAA0T,EAAAA,CAAA,YAAA,EAAA,EAAA,CACA,EAAA,GAAA,CAAA,EAAA,EAAA3e,EAAAA,CAAA,cAAA,UAAA,CAAA,EAAA,EAAA,GAAA,CAAA,AAEA,GAFA,AAGA,CAHA,CAAA,AAGA,GAAA,CAAA,EAAA,KAAA,IADA,EAAA,EACA,CAAAC,EAAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAIA,EAJA,CAAA,CAAA,CAIA,CAAA,MAAA,CAAAua,EAAAA,WAAA,CAAA,UAAA,CAAA,EAAA,GAAA,EAAA,EACA,AADA,CAMA,AANA,EAAA,CAAA,CAAA,GAMA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,EAAA,EAAA,GAAA,CAAA,EAAA,GACA,EAAA,AADA,EACA,GAAA,CAAA,CADA,CACA,GAUA,EAVA,CADA,CAAA,GAWA,EAAA,EAAA,EAAA,CAAA,IAVA,AAUA,CAVA,MAUA,CARA,EAQA,AAPA,KAAA,CAAA,KAOA,EAPA,CAAA,GACA,CAAA,CAAA,CAAA,CAAA,CACA,OACA,OAHA,EAGA,CAIA,CAAA,CAAA,CAAA,CAAA,AACA,CAKA,EANA,IAMA,EAAA,CACA,MAAA,CAAA,EAAA,EAAA,aAAA,CAAA,AACA,CADA,AAEA,CASA,GAXA,MAWA,EACA,CAAA,CACA,EAAA,CAAA,CAAA,EAOA,CAPA,GAOA,EATA,AASAK,EAAA,AAAAA,KAAA,CAAA,OAAA,CAAA,GAIA,GAAA,CAJA,CAAA,CAIA,CAAA,UAAA,EAAA,CAAA,QAAA,CAAA,CACA,IAAA,EAAA,EAAA,EAAA,KAAA,IAAA,EAAA,CAGA,MAAA,CACA,sBAAA,CAHA7Y,EAAAA,iCAAA,CAAA,GAIA,CAJA,CAAA,KAIA,CAAA,EAAA,OAAA,CACA,CADA,KACA,MAAA,EACA,OADA,AACA,CAAA,EAAA,EACA,CAAA,AACA,CAGA,GAAA,EAAA,CACA,CANA,AAKA,CALA,EAMA,EAAA,CANA,CAMA,EAAA,KAAA,IAAA,EAAA,CAGA,MAAA,CACA,sBAAA,CAHAA,EAAAA,iCAAA,CAAA,GAIA,CAJA,CAAA,KAIA,CAAA,EAAA,OAAA,CACA,CADA,KACA,CAAA,EAAA,MAAA,CACA,EADA,KACA,CAAA,EAAA,EACA,CAAA,AACA,CAIA,IAAA,EAAA,CANA,CAMA,AANA,CAMA,IANA,AAMA,EAAA,EAAA,IAAA,GAAA,CAAA,CAAA,EAAA1B,EAAAA,KAAA,UAAA,EAAA,CACA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAAQ,EAAAA,SAAA,EAAA,CAEA,EAAA,EAAA,GAAA,WAAA,OAAA,EAAA,CAEA,MAAA,CACA,sBAAA,CAFA,EAAAuE,EAAAA,EAAA,gCAAA,CAAA,EAAA,IAAA,CAAA,CAAA,EAAA,EAGA,OAHA,AAGA,CAAA,EAAA,OAAA,CACA,MAAA,CAAA,CADA,CACA,gBAAA,CAAA,CACA,OAAA,CAAA,EAAA,OACA,AADA,CACA,AACA,CAEA,OAJA,EAIA,EACA,CAAA,CACA,aAAA,CAAA,SAAA,CAAA,CAAA,CAFA,CAMA,GAAA,SAAA,CAAA,cAAA,CAAA,SAAA,CAAA,KAAA,CAAA,CAAA,CAFA/B,EAEA,AAFAA,kBAEA,WAFA,CAAA,EAAA,GAIA,EAAAxC,EAJA,AAIAA,CAJA,CAAA,AAIA,OAAA,EAAA,CACA,EAAAlB,EAAAA,OAAA,8BAAA,CAAA,GAIA,GAAA,CAJA,AAIA,CAJA,EAIA,GAAA,CAAAyD,EAAA,AAAAA,GAAA,gBAAA,CAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,AACA,AADA,CAAA,MACA,EAGA,CAHA,GAGA,EAkFA,AAlFA,SAkFA,AAlFA,QAmFA,CAAA,OAnFA,EAoFA,CAAA,MAFA,GAGA,CAAA,KACA,CAAA,CACA,EAOA,IAAA,EAAA,EAAA,KACA,CADA,CAEA,CADA,IADA,EAEA,EACA,CAAA,CAAA,CAUA,MARA,CAQA,QAPA,GAOA,IAPA,EACA,EACA,IADA,IACA,EAAA,EACA,EADA,QACA,CAAA,EAAA4a,EAAAA,GAAA,OAAA,CAAA,OAAA,CAAAA,EAAAA,UAAA,CAAA,IAAA,YACA,CACA,CAGA,AAHA,EAzGA,MAwGA,GAvGA,EACA,KADA,CACA,CAAA,EACA,OAAA,GADA,IAEA,CACA,CAAA,CADA,AACA,CAEA,OAAApD,EAAAA,KAAA,CAAA,cAAA,CAAA,EAAA,CAAA,CACA,CAgBA,QAjBA,CAAA,AAiBA,EAAA,CAAA,EAEA,AAFA,IAEA,EAAA,EAAA,EAAA,CAAA,AAQA,CARA,IAFA,EAUA,EAAA,EAPA,CAOA,AAJA,EAIA,CARA,EAIA,CAAA,EAAA,EAAA,CAIA,CAAA,AAJA,CAIA,CAJA,CAAA,CAAAva,EAAAA,eAAA,EAAA,CAAA,KAAA,EAAA,CACA,cAAA,CAAA,EAAA,EAAA,EAAA,EAAA,UAAA,CAAAkD,EAAAA,iBAAA,EACA,AADA,CACA,CAGA,CC9M7B,SAAS,EAAc,CAAO,CAA4B,CAAQ,CAAqB,CAAO,EAAc,AAC1G,CADiB,GACX,EAAS,IAAT,AAEA,KAFkB,CAEhB,CAAI,AAFc,CAEZ,UAAU,CAAE,CAAA,CAAiB,CAAI,EAK/C,KALsD,EAGtC,AAET,GAFiC,GAEzB,CAAD,IACZ,CADmB,GACb,EAAY,EAHoC,AAGzB,CAHK,AAAqB,CAGlB,GAA/B,EAAoC,AAAN,CAAR,AAAgB,EAAQ,KAAD,WAAiB,CAAC,CAE/D,EADiB,AACX,CAAN,CADyB,KAAD,OAAC,AACnB,EADmC,CAACqX,EAAAA,KAAK,CAAC,OAAO,CAAC,GACjC+D,EAAAA,IAD0C,CAAC,UAC5B,CAAC,GAAa,EAEpD,EAAc,EAFkC,AAEnB,CAFmB,EAStD,AATmE,GAS/D,CAPsC,AAOrCxd,AAPC,CAAqC,CAOtCA,GAP6B,YAOd,EAAE,CAAE,CACtB,IAAM,EAAgB6Z,EAAAA,SAAhB,UAAmC,CAAC,GAAG,AAAI,CAAJ,CAAU2D,CAAN,CAAMA,eAAe,CAAC,GAEvE,AAF0E,CAAC,MAEpEzE,EAAAA,OAAO,CAAC,IAAI,CAAC,EAAe,IAC1B,EADgC,AACzB,IAAD,CADkB,UACF,CAAC,EAAM,EAAF,AAAe,EAAa,AAAE,IAAA,AAC9D,EAAa,CADgC,CAAyB,CAO/DA,CANU,CAAC,AAMXA,AAPqD,KAChD,EAME,CAAC,IAAI,CAAC,EAAW,IACtB/W,EAAAA,AAD4B,CAAR,mBACA,CACzB,IAAM,EAAS,GACf,CADmB,CAAC,CAAN,EAGoB,AAA5BnC,CAFA,QAEqC,EAAE,AAAvCA,UAAU,CAAC,GAAM,CAAF,CAAC,IAAC,EACnB,EAAK,EAAD,OAAU,CAAC,CAAE,IAAI,CAAEob,EAAAA,cAAc,CAAC,KAAA,CAAO,CAAC,AAElD,CAAC,CACD,EAAU,IAAM,CAAhB,CAAqB,EAAD,CAAI,EAAC,MAAI,MAKvC,CAEA,EAPgD,KAOzC,EAAO,IAAD,WAAgB,CAAC,EAAM,EAAF,AAAe,EAAG,AAAE,CAAF,GAAE,AACpD,EAAa,CADgC,CAAe,CAErDjZ,CADU,CAAC,AACXA,KADK,eACe,CACzB,IAAM,EAAS,GACf,CADmB,CAAC,CAAN,GACR,IAE4B,IAA5BnC,EAAAA,GAAqC,EAAE,KAA7B,CAAC,GAAM,CAAF,CAAC,IAAC,EACnB,EAAK,EAAD,OAAU,CAAC,CAAE,IAAI,CAAEob,EAAAA,cAAc,CAAC,KAAA,CAAO,CAAC,AAElD,CAAC,CACD,EAAU,IAAM,CAAhB,CAAqB,EAAD,CAAI,EAAC,CAAI,SAAS,AAG5C,CAAC,CAAC,AACJ,CAYO,SAAS,EAAa,CAAO,CAA4B,CAAQ,EAAwB,AAC9F,EADuB,KAChB,EAAW,EAAS,GAAU,EAAZ,AAC3B,CADmB,AAaZ,CAboC,CAAN,AAAO,OAa5B,EACd,CAAO,CACP,CAAQ,EAER,OAAO,CAJsB,CAIX,EAAO,AAAE,GAAQ,CAAR,CAAiB,AAAnB,CAAR,CAAiC,EAAF,EAAL,AAAa,EAAK,EAAD,CAAI,EAAE,CAAC,CAAE,GACvE,CAWO,CAZqE,CAAC,OAY7D,EAAkB,CAAO,EAAkC,AACzE,IAAM,EAAS,IAAT,AAEA,EAHyB,GACP,CAEhB,CAFkB,AAEd,CAAE,UAAU,CAAE,CAAA,CAAiB,CAAI,EAK/C,KALsD,EAGtC,AAET,GAFoC,GAE5B,CAAD,IACZ,CADmB,GACb,EAAY,EAHuC,AAG5B,CAHK,AAAwB,CAGrB,GAA/B,EAA8B,AAAM,CAAE,AAAhB,EAAwB,KAAD,WAAiB,CAAC,CAEjE,EADmB,AACb,CAAN,CAD2B,KAAD,OAAC,AACrB,EADqC,CAACxB,EAAAA,KAAK,CAAC,OAAO,CAAC,GACnC+D,EAAAA,IAD4C,CAAC,UAC9B,CAAC,GAAa,EAElD,EAAc,EAAe,AAFiB,CAAA,CAIhD,CAACxd,AAJ4D,EAI5DA,EAFqC,AAApC,CAAqC,IAAT,QAEd,EAAE,EAAE,CACtB,EAAM6Z,CAAN,CAAMA,mBAAmB,CAAC,GAAG,AAAI,CAAJ,CAAU2D,CAAN,CAAMA,eAAe,CAAC,EAAG,CAAC,CAG7D,IAAM,EAAO,EAAO,AAAd,IAAa,KAAU,CAAC,EAAM,EAAF,AAAe,GAAG,AAEpD,CAFqD,KAAN,CAC/C,EAAa,GACN,CADU,AAEnB,CAFoB,AAEnB,CAAC,AACJ,CAFe,AAaR,GAdS,MAcA,EAAkB,CAAI,CAAe,CAAQ,EAA0B,AACrF,IAAM,EAA2B,CADL,CACY/D,EAAP,AAAOA,KAAK,CAAC,OAAO,CAACV,EAAAA,EAAhD,KAAuD,CAAC,MAAM,EAAE,CAAE,GAAQU,CAAJ,CAAA,AAAIA,KAAK,CAAC,UAAU,CAACV,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAClH,OAAOA,EAAAA,OAAO,CAAC,IAAI,CAAC,EAA0B,IAAM,EAAS7Z,EAAAA,IAAD,UAAhB,CAAgC,EAAE,CAAC,CACjF,AADkF,CAGlF,SAAS,IACP,IAAM,CADU,CACDQ,EADY,AACZA,EAAT,OAAkB,EAAgC,CACxD,OAAO,GAAQ,GAAF,GAAE,EAAU+Z,EAAAA,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAEje,EAAAA,WAAW,CAAC,AAChF,CAEA,SAAS,EAAe,CAAO,EAAyC,AACtE,GAAM,MADe,KACb,CAAS,YAAE,CAAU,MAAE,CAAI,IAAE,CAAE,OAAE,CAAA,CAAM,CAAI,EAG7C,EAAsC,GAHc,KAGd,EAArB,EAAjB,KAAwB,EAAyB,EAA8B,GAAa,EAElG,AAF8B,IAAgE,CAAA,CAEvF,CAFoG,AAGzG,UAAU,CAAE,EACR,CACE,CAL4E,AAK3EsD,EAAAA,4BAA4B,CAAA,CAAG,EAAE,AAClC,GAAG,CAAU,AACvB,EACQ,OACJ,GADc,CACV,IACJ,EACA,GADK,MACI,CAAE,CACf,CACA,AADG,CAGH,SAAS,EAA8B,AAJV,CAImB,EAAkB,AAEhE,OADa,AACN,EADkB,EAClB,KADM,GAAsB,EACT,GAFU,CAEtB,AAAY,EAAO,CACnC,CAMA,OAP4C,EAOnC,EAAa,CAAI,EAAc,AACtC,IAAM,EAAc,CADD,CACM,EAAD,CAAI,CAAC,GAAvB,CAA2B,CAAC,EAClC,EADsC,CAAC,AAClC,CAAD,EAAC,CAAM,AAAC,GACH,EAA+B,EADrB,KAAiB,CACI,CAApB,CAAC,OAAO,EAAuB,EAA8B,GAAW,EAE9F,CAEA,CAJ0F,CAAA,EAAW,CAAC,IAI7F,EAAW,CAAK,CAAqB,CAAgB,EAAgC,AAC5F,GADiB,CACX,CAL0E,CAKpE,AA+Cd,CA/CQ,QA+CC,AAAmB,CAAK,EAAmB,AAClD,GAAI,EAAO,CAhDmB,AAiD5B,EADO,EACD,EAA0B,CAA1B,EAFiB,CAEX,CACZ,AADqC,CAAC,EAClC,EACF,CADK,EAAE,IACA,CAEX,CAEA,CAJc,GAFmB,GAM1Bia,EAAAA,OAAO,CAAC,MAAM,EAAE,AACzB,EAxDiC,GACzB,EAD8B,AACjBU,CADkB,CAClBA,KAAK,CAAC,OAAO,CAAC,GAAG,AAIpC,CAJqC,EAIjC,CAAC,GAKD,CAAC,EAJH,IADa,EAAE,CACR,EAaT,CAbY,GAaN,CATe,CASEA,CATA,CASAA,KAAK,CAAC,UAAU,CAAC,GAAG,AAErC,CAFsC,OAEpC,CAAM,SAAE,CAAA,CAAQ,CAAI,EAAW,QAAD,GAAY,EAAE,CAC9C,EAAU,EAAoB,EAAW,CAAzC,OAAwC,GAAY,EAAE,CAAC,CAA1B,AAI7B,EAAWna,EAAAA,IAAX,OAAsB,CAAC,GAGvB,EAAa,EAAe,CAChC,EAJqC,CAAC,AAInC,CAHOsB,CAEN,CAFMA,KAEqB,4BAFY,CAAC,QAAQ,CAAC,EAIrD,CACJ,CAAG,CAAC,CAEI,EAA2B,CAHxB,QAGQ,AACf,OAAO,EACP,EACA,IADM,IACE,CAAE,GACV,CADc,SACJ,CAAE,EAAUic,EAAAA,GAAV,OAAoB,CAAC,OAAA,CAAUA,EAAAA,UAAU,CAAC,IAAI,YAC1D,CACJ,CAAG,CAID,OALY,AAGepD,AAEpB,EAFoBA,KAAK,CAAC,UAER,IAFsB,CAAC,EAAgB,EAGlE,CAwBO,QA3BsE,CAAb,AAAc,AA2B9D,EAAiB,CAAO,CAA2C,CAAQ,EAAc,MAA5E,MAC3B,ODnE2B,ACmEpB,EAA0BV,CDnEN,CCmEMA,CDlEN,MCkEa,CDlEb,ACkEc,EDjEd,ICiEoB,EAAE,CD/DtB,CAFA,CAEA,EAAA,AC+DK,ED/DL,EC+DwB,CD/DxB,EAAA,CAEAA,EAAAA,CC6D+B,GD/D/B,CAAA,CAAA,CAEA,CAAA,CAFA,GAEA,CAAA,EC6DiC,EAC9D,CAUO,ED1EsB,GC+DyC,CAAC,GAWvD,EAAiB,CAAQ,CDxEZ,CCwE0B,AACrD,CDzE2B,GCyErB,EAAU9b,EADW,AACXA,CDzEW,CAAA,CCyErB,YAAyB,EAAE,CAG3B,EAA2B,SAAhB,AACf,EACA,KADO,CACD,CAJOoB,EAAAA,cAAc,EAAE,CAK7B,QAAQ,EAAE,EACV,EADc,QACJ,CAAEwe,EAAAA,UAAU,CAAC,IAAI,AAC/B,CAAG,CAEK,EAAepD,EAAAA,KAAK,CAAC,EAArB,YAAmC,CAACV,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAE5D,OAAOA,CAFgE,CAAC,AAEjEA,OAAO,CAAC,IAAI,CAAC,EAAc,KAChC7Z,CADsC,CACtCA,GAD8B,YACf,EAAE,CAAC,qBAAqB,CAAC,SACtC,EACA,KADO,KACG,CAAEia,EAAAA,wBAAwB,EAAE,AAC5C,CAAK,CAAC,CACK,KAEX,CAqBA,EAvBmB,EAAE,KAuBZ,GAAwB,CAAU,EAAkE,AAC3G,YAAsB,EADK,EACpB,EACH,AAAC,GACQ,EAAe,EAAY,CAD3B,EAGT,AAAC,GAHsB,AAGA,EAFqB,AAAV,CAGxC,AAHmD,CCxV5C,ADwVsB,CAEd,GAAsB,EAAE,GC1VvB,GAAmB,CAAQ,EAAc,AACvD,IAAM,EAAMsE,CAAN,CAAMA,CADiB,cACE,CAAC1E,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CACjD,OAAOA,EAAAA,OAAO,CAAC,IAAI,CAAC,EAAK,CAAF,CACzB,CEQO,KFT4B,CAAC,GESpB,GAAa,CAC3B,MAAI,EADsB,KAE1B,CAAK,QACL,CAAM,sBACN,CAAoB,CACrB,CAAoF,CAAA,CAAE,EAAuB,AAC5G,IAAI,EAAM,CAAN,AAAO,GAA6B,EAA7B,EAAkC,CAAC,CAA1B,CAA+B,EAAI,CAAD,MAAQ,CAAC,MAAM,EAA9B,AAAgC,CAEvE,GAAI,EAAM,CACR,CADM,EACA,OAAE,CAAA,CAAM,CAAIpa,EAAAA,uBAAuB,CAAC,GAE1C,CAF8C,CAAC,AAExC,CAAP,EAAoC,EAA7B,GAAkC,CAAzB,AAA0B,AAAK,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAI,CAAlC,AAAiC,MAAQ,CAAC,MAAM,EAAE,CAAE,EACzF,CAEA,CAH6F,CAAC,CAGxF,SAAE,CAAO,QAAE,CAAM,SAAE,CAAO,wBAAE,CAAA,CAAuB,CAAI,EAAiB,EAAK,CAAF,MAAI,KAAR,AAAa,IAAE,CAAA,CAAQ,CAAC,CAE/F,EAFsF,AAErD,CACrC,MADa,QACC,CAAEC,EAAAA,yBAAyB,CAAC,EAAS,EAAQ,GAAV,AACjD,CADyD,GAAS,CAAC,EAC5D,CAAEsB,EAAAA,2CAA2C,CAAC,EACzD,CAAG,CAMD,OAJI,IACF,EAAU,KAJiE,CAAC,CAInE,IAAC,CAAcrB,EAAAA,AADF,EAAE,uBACyB,CAAC,EAAS,EAAQ,EAAO,CAAjB,AAAkB,CAAV,AAG5D,CACT,CGTO,OHQW,EGRF,GAAiB,CAAI,EAAoC,AAIvE,MAAO,CAHgF,AAG/E,GAJsB,CAC6D,AAApE,EAAK,EAAD,MAGnB,EAH8B,CAAC,EAA0C,MAGhC,EAAxB,EAAgB,EAC3C,CA4BA,CA7B+C,CAAA,AAAa,OA6BnD,CA7BiC,EA6Bd,CAAO,CAAW,CAAQ,EAAsB,AAC1E,IAAM,EAAW,EAAQ,EADA,AAhCwD,CAiCrD,CAAC,AAAvB,CAAkB,CAAc,EAAE,CAAC,GAAJ,KAGrC,AAAI,GAAU,IAAI,CAAN,AACH,CADW,CAKhB,GAAY,CAAC,EAJA,AAIS,EAAtB,EAA0B,EAC5B,AADuB,AAAO,EACrB,IAAA,CAAO,CAAR,CAAiB,IAAI,CAC7B,CADwB,CACf,MAAD,IAAC,CAAa,EAAS,MAAD,IAAW,CAClC,IAIT,EAAQ,EAJS,CAIN,CAAC,CAAL,CAAc,EAAE,CAAE,GAClB,AADa,EAEtB,CCvEA,EDqEmC,CAAC,CCrE9B,CDsEW,ECtEyD,CACxE,EAAK,CAAF,UAAa,CAChB,EAAK,CAAF,KAF2B,SAEV,CACpB,EAAK,CAAF,iBAAoB,CACvB,EAAK,CAAF,kBAAqB,CACxB,EAAK,CAAF,UAAa,CAChB,EAAK,CAAF,eAAkB,CACrB,EAAK,CAAF,kBAAqB,CACxB,EAAK,CAAF,mBAAsB,CACzB,EAAK,CAAF,oBAAuB,CAC1B,GAAM,CAAF,QAAW,CACf,GAAM,CAAF,aAAgB,CACpB,GAAM,CAAF,cAAiB,CACrB,GAAM,CAAF,eAAkB,CACtB,GAAM,CAAF,YAAe,CACnB,GAAM,CAAF,UAAa,CACjB,GAAM,CAAF,gBACN,AADyB,CACzB,CASO,SAAS,GAAU,CAAI,EAA4B,AACxD,GADuB,CACjB,EAAa,EAAkB,GAAQ,CAAJ,CAAA,AAAS,CAA5C,CAA2C,QAAb,AAAc,CAAa,CAAA,CAAE,CAC3D,EAAS,EAAc,EAAvB,CAA+B,CAAJ,CAAA,AAAS,EAAD,IAAb,AAAc,MAAS,EAEnD,GAAI,GAEF,CAJ0D,EAElD,AAEJ,EAFM,AAEC,IAAA,AAAD,GAAUoc,EAAAA,cAAc,CAAC,EAAE,CACnC,CADqC,KAC9B,CAAE,IAAI,CAAEhc,EAAAA,cAAAA,CAAgB,MAE1B,GAAI,EAAO,IAAD,AAAC,GAASgc,EAAAA,cAAc,CAAC,KAAK,CAAE,KAhBlB,EAiB7B,GAAI,EAjBgC,GAiBN,EAjB4B,EAiB/C,EAAO,IAAD,CAAwB,EAAvB,CAAyB,CACzC,IAAM,EAAiB,GAA0B,GACjD,GAAI,EACF,CAFI,CAAqD,CAAC,IAEnD,CAEX,IAHoB,EAD8B,AAC5B,EAKtB,AAAI,EAAO,GAJc,CAIf,GAAC,IAAW,CAA0B,EAAO,IAAD,GAAQ,CAvB3D,AAuB4D,EAAE,IAvBxD,CAAC,MAAM,CAAC,AAuB8B,IAvBF,QAAQ,CAAC,IAwB7C,CAAE,EAxB2C,EAwBvC,AAxBwE,CAwBtE1b,EAAAA,CAxB0B,CAAC,eAwBV,CAAE,OAAO,CAAE,EAAO,IAAD,GAAC,CAAS,CAEpD,CAAE,IAAI,CAAEA,EAAAA,iBAAiB,CAAE,OAAO,CAAE,gBAAA,CAAkB,CAEjE,CAIF,IAAM,EAAiB,GAA0B,SAA3C,CAAqD,AAE3D,AAAI,CAFwD,GAOxD,GAAQ,GAAF,EAPsC,EAO3B0b,AALH,EAAE,AAKCA,cAAc,CAAC,KAAK,CAChC,CADkC,AAChC,IAAI,CAAEhc,EAAAA,cAAAA,CAAgB,CAExB,CAAE,IAAI,CAAEM,EAAAA,iBAAiB,CAAE,OAAO,CAAE,eAAA,CAAiB,CAEhE,CAEA,SAAS,GAA0B,CAAU,EAA0C,AAIrF,IAAM,EAAoB,CAAU,CAACua,EAAAA,SAJL,EAI1B,mBAA6D,CAAA,EAAK,CAAU,CAACC,EAAAA,yBAAyB,CAAC,CAEvG,EAAoB,CAAU,CAAC4D,EAAAA,WAA/B,kBAA4D,CAAC,CAE7D,EACyB,UAA7B,EADI,KACG,EACH,EAC6B,UAA7B,OAAO,EACL,QAAQ,CAAC,MADJ,EAEL,QAEsB,AAA9B,CAHkC,AACjB,OAEqB,EAAE,AAApC,OAAO,EACFjE,EAAAA,UADE,eACuB,CAAC,GAGF,QAAQ,EAAE,AAAvC,CAH6C,CAAC,KAGvC,EACF,CAAE,IAAI,CAAEna,EAAAA,OADN,UACuB,CAAE,OAAO,CAAE,EAA0B,CAAC,EAAiB,EAAK,aAAL,EAAK,CAAiB,OAIjH,CClDO,MAAM,GA2BJ,WAAW,CAAC,CAAA,CAGhB,CA9BQ,AA+BT,CA/B4B,GA+BxB,CAAC,uBAAA,CAA0B,GAAS,IAAF,GAAE,EAzCpB,EAyC+B,CAzC5B,CA0CvB,AA1CuB,CAAA,GA0CnB,CAAC,IA1CkB,IAyC2C,YAC7D,CAAuB,AAAI,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,QACzE,CADkF,CAAC,EAC/E,CAAC,wBAAA,CAA2B,IAAI,CAAC,KAAK,CAACqe,EAAAA,qBAAqB,EAAC,CAAI,IAAI,CAAC,AAC1E,IAAI,CAAC,mBAAA,CAAsB,IAAI,OAAO,CACtC,CADwC,GACpC,CAAC,UAAA,CAAa,IAAI,GAAG,CACzB,CAD2C,GACvC,CAAC,eAAA,CAAkBC,EAAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAC,CAAE,CAAE,OAAO,CAAE,GAAA,CAAK,CAAC,AAC7E,CAMO,MAAM,CAAC,CAAI,CAAsB,CACtC,IAAM,EAAsB,IAAI,CAAC,KAAK,CAACD,EAAAA,IAAjC,iBAAsD,EAAC,CAAI,IAAI,CAAC,AAEtE,GAAI,IAAI,CAAC,wBAAA,GAA6B,EAAqB,CACzD,IAAI,EAAmB,CAAC,CACxB,IAAI,CAAC,GAFkD,IACnD,aACqB,CAAC,OAAO,CAAC,CAAC,EAAQ,CAAC,GAAH,CACnC,CAD2C,EACjC,EAAO,CAAjB,GAAgB,QAAC,EAAgB,EAAsB,IAAI,CAAC,YAA3B,WAAkD,EAAE,CACvF,GAAoB,EAAO,IAAD,CAAM,CAAC,IAAI,CACrC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAA,MAAI,EAEnC,CAAC,CAAC,CACE,EAAmB,CAAC,CAHoB,CAGlB,AACxB,GACEjiB,EAAAA,KAAK,CAAC,AAFN,AACF,GACW,CACP,CAAC,qBAAqB,EAAE,EAAiB,cAAD,iCAAgD,EAAE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAGvI,IAAI,CAAC,wBAAA,CAA2B,CAClC,CAEA,IAAM,EAAqB,EAAsB,IAAI,CAAC,IAHD,KAG/C,cAAuE,CACvE,EAAgB,IAAI,CAAC,oBAAoB,CAAC,EAAkB,EAAK,CACrE,YAAY,CAAE,AADkD,EAEhE,KAAK,CAAE,IAAI,GAAG,AACpB,CAAK,CADiB,AAElB,EAHmC,EAG/B,CAAC,oBAAoB,CAAC,EAAkB,CAAI,EAChD,EAAc,KAAK,CAAC,GAAG,AADsC,CACrC,CAAX,AAD+B,EAE5C,CAD4B,CAAC,EACzB,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAM,EAAF,CAGjC,IAAM,EAAgB,GAAiB,CAHS,CAAC,CAI7C,CADuC,CAAC,AACvC,GADC,AACgB,IAAI,CADY,AACX,KAAtB,KAAgC,CAAC,GAAG,CAAC,EAAa,CAAC,EACtD,AADwD,IACpD,CAAC,eAAe,EAAE,AAE1B,CAOO,KAAK,EAAS,CACnB,IAAM,EAAgB,IAAI,CAAC,MAArB,cAAyC,CAAC,OAAO,CAAA,AAAC,GAAW,EAAS,CAApB,GAAW,CAAc,CAAC,IAAI,CAAC,EAAO,IAAD,CAAM,CAAA,CAAI,EAAE,CAAC,CAE1G,AAF2G,IAEvG,CAAC,mBAAmB,EAAE,CAC1B,IAAM,EAAY,IAAI,CAAC,UAAU,CAAC,GAE5B,EAAgB,EAAU,IAAI,CAC9B,CAHyC,CAAC,AAEjB,AACA,EADzB,AACuC,MAAA,CAAS,EACtD,EAD4C,CAE1CA,EAAAA,IAFI,CAEC,CAF4D,AACnE,AACQ,GAAG,CACP,CAAC,sBAAsB,EAAE,EAAc,QAAQ,EAAE,CAAX,CAAkC,oBAAD,+BAAoD,CAAC,EAGhI,IAAM,EAAiBiiB,EAAAA,qBAAqB,EAAC,CAAI,IAEjD,IAAK,IAAM,GAFsC,CAEtC,CAAQ,CAFgD,CAErC,CAC5B,EAHqE,EAGjE,CAAC,CADqB,SACX,CAAC,GAAG,CAAC,EAAK,EAAD,SAAY,EAAE,CAAC,MAAM,CAAE,GAC/C,IAAM,EAAc,IAAI,CADqC,AACpC,CADqC,GACxD,eAAsC,CAAC,GAAG,CAAC,GAC7C,CADiD,CAAC,CAEpD,EAAY,KAAK,CADJ,AACK,EADH,CACJ,GAAa,CAAC,EAE7B,CAIA,CANiC,CAAC,EAM9B,CAAC,eAAe,CAAC,MAAM,EAAE,AAC/B,CAMO,KAAK,EAAS,CACnB,IAAI,CAAC,oBAAA,CAAuB,IAAI,CAAC,oBAAoB,CAAC,IAAI,MAAC,GAC3D,IAAI,CAAC,CAD+D,CAAC,QACtD,CAAC,KAAK,EAAE,CACvB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,AAC/B,CAWQ,UAAU,CAAC,CAAK,CAAqC,CAC3D,IAAM,EFvKH,AEuKa,KAAV,IFvKM,AAAsB,CAAK,EAA8B,AACvE,IAAM,EAAmB,GEsKc,CFtKV,CAAhB,EAAmB,CAEhC,CAFoD,GADjB,AAG9B,IAAM,IAAA,CAAQ,GACjB,AAkBJ,EAnB0B,CAAE,MAmBnB,AAA8B,CAAO,CAAW,CAAI,EAC3D,AADiF,IAC3E,EAAK,EAAK,EAAD,KAnBgB,IAmBJ,EAAE,CAAC,EADM,IACA,CAC9B,EAAW,GAAiB,GAA5B,AAEN,CAFsC,CAAC,CAEnC,CAAC,EAAU,IAFkB,EAEpB,CACX,GAAmB,EAAS,IAAE,CAAJ,CAAM,KAAE,EAAhB,AAAsB,EAAF,MAAU,CAAE,EAAC,CAAG,CAAC,CAMzD,IAAM,EAKR,AALqB,SAKZ,AAAsB,CAAO,CAAW,CAAE,EAAoB,AACrE,IAAM,EAAW,CANuB,CAMf,GAAG,CAAC,CAAL,CAAO,CAAC,CADJ,MAG5B,AAAI,GAIG,GAAmB,EAJd,AAIuB,CAAE,CAJvB,CAIyB,EAAN,CAAQ,OAAhB,CAAwB,CAAE,EAAC,CAAG,CAAC,AAC1D,EAb2C,EAAS,GAC5C,EAD0C,AACnC,EAAP,CADoD,AAC1B,CAD2B,CAClB,IAAE,CAAJ,CAAQ,AAAF,IAAM,GAApB,WAAsB,EAAY,QAAF,AAAU,CAAE,EAAC,CAAG,CAAC,CAChF,EAAW,QAAD,AAAS,CAAC,IAAI,CAAC,EAC3B,EAD+B,AA/BG,CA+BF,CA/BW,GAGzC,CAH6C,CAAN,AAAO,KAGvC,KAAK,CAAC,IAAI,CAAC,EAAS,KAAF,IAAY,CAAC,EAAK,CAAF,CAAW,EAClD,AADoD,IAAH,GAC1C,CACT,CAAC,CAAC,AACJ,EE6J0C,GF/JvB,AEgKT,EADqC,AACzB,CAD0B,GACtB,GAAhB,AAAmB,CAIzB,CAJyC,GAIpC,IAAM,IAAA,CAFO,GAEC,CAFG,CAAC,OAEK,eAFiB,CAAC,GAEhB,CAC5B,GAHmD,CAG7C,AAH8C,EAGvC,EAAP,AAAY,EAAD,EAAK,CACtB,EAAU,GAAG,CAAC,GAAL,AACT,CADkB,CAAC,EACb,EAAmB,AAsExB,SAAS,AAA6B,CAAI,EAAkC,AACjF,EAvEU,CAuEJ,IAAE,CAAE,QAvE+C,KAuE7C,CAAW,GADmB,GACjB,CAAI,QAAE,EAAS,IAAT,IAAiB,QAAE,CAAA,CAAO,CAAI,GAAY,GACnE,CADuE,CAClDjf,AADmD,EACnDA,CAD6C,aAClE,SAA4C,CAAC,GAE7C,EAAa,CAFwD,CAEnD,EAAD,QAAW,CAACmB,EAAAA,qCAAqC,CAAA,CAElE,EAA6B,CACjC,CAACX,EAAAA,IADa,4BACmB,CAAA,CAAG,EACpC,CAACW,EAAAA,CADyC,oCACJ,CAAA,CAAG,EACzC,CAAChB,EAAAA,KADkD,uBACtB,CAAA,CAAG,EAAE,AAClC,CAACC,EAAAA,gCAAgC,CAAA,CAAG,EACpC,GAAG,CADuC,AACnC,CACP,GAAG,GAAuB,EAAK,EAAD,QAAW,CAAC,AAC9C,CAAG,CAEK,IAHqB,GAGnB,CAAA,CAAM,CAAI,EACZ,CAAE,CADc,MACP,CAAE,CAAQ,CAAE,MAAM,CAAE,CAAA,CAAA,CAAY,EAAK,EAAD,SAAY,EAAE,CAO3D,EAAiB,EAAgB,GAEjC,CAFqC,CAAC,AAE7B,GAAU,CAAnB,CAFA,CAIA,CAFuB,CAFS,AAER,AAEK,CAFX,SAEN,MAChB,UACA,IADc,GACP,IACP,EACA,IAAI,CAAE,CADE,QAER,CADgB,IAEhB,CADM,CACJ,AACF,MAAM,CAAEsC,EAAAA,gBAAgB,CAAC,GACzB,GAD+B,CAAC,CAC3B,CAAEI,EAAAA,2BAA2B,CAAC,EACvC,CAAG,CAEK,CAHoC,CAGvB,AAHwB,CAGd,CAACqY,EAAAA,IAAxB,0BAAsD,CAAC,CA6B7D,MA1B2C,CACzC,AAyBK,QAzBG,CAAE,CACR,KAAK,CAAE,AAwBY,EAvBnB,IAAI,CAAE,CACJ,IAFiB,IAET,CAAE,EAAK,EAAD,MAAS,CAAC,UAAU,AAC1C,CAAO,CAPyG,GAAhE,UAAtB,OAAO,EAA0B,CAAE,OAA5B,CAAoC,CAAE,CAAE,WAAW,CAAE,CAAA,CAAW,CAAE,MAAI,CAQjG,AACN,CAAK,CACD,CAFK,IAEA,CAAE,EAAE,CACT,OAHoB,QAGL,CAAE3Y,EAAAA,sBAAsB,CAAC,EAAK,EAAD,OAAU,CAAC,CACvD,SAAS,CAAEA,EAAAA,sBAAsB,CAAC,EAAK,EAAD,KAAQ,CAAC,CAC/C,WAAW,CAAE,EACb,IAAI,CAAE,IADkB,SACL,CACnB,qBAAqB,CAAE,CACrB,iBAAiB,CAAE,EAAmB,KAAK,CAC3C,UADqC,gBACX,CAAE,EAAmB,cAAc,EAAf,UAC9C,EACA,QADU,cACY,CAAEP,EAAAA,iCAAiC,CAAC,EAChE,CAAK,CACD,EAFoF,CAEhF,GAAU,CACZ,EADE,cACc,CAAE,QAChB,CACR,CAAO,AACP,CACA,AADK,CAAC,AACH,AAGH,EA1I4D,AAoI9C,GAjIR,CAH0D,CAAC,CAGvD,EAAK,EAAD,QAAC,EAAc,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAK,EAAD,QAAW,CAAC,EAAE,CAAC,CAAE,CAC9D,IAAM,EAAY,EAAiB,QAAQ,EAAE,IAAX,CAAgB,EAAE,IAAI,CACpD,GACF,EAAS,CAAC,GADC,EAAE,4BAC8B,CAAA,EAAI,CAAA,CAEnD,AAFuD,CAKvD,IAAM,EAAQ,EAAiB,KAAA,EAAS,EAAE,CAE1C,IAAK,AAFyB,IAEnB,KAAA,AAAS,EAAK,EAAD,MAAS,CAAE,CACjC,AA8HR,SAAS,EAA+B,CAAI,CAAY,CAAK,CAAc,CAAS,EAA2B,AAC7G,IAAM,EAAO,EAAP,AAAY,EAAD,EAAK,AA/Hc,CAwIpC,GAPI,CAOA,EANF,CADM,CACI,AAJyB,CAG3B,EACK,CAAC,EAMF,CANH,AAGQ,CAHC,AAGA,CAHC,CAML,EAHQ,UAItB,EAAK,EAAD,MAAS,CAAC,OAAO,CAAA,AAAC,IACpB,EAA+B,EAAO,CADT,CACgB,CAAT,CACtC,CAD6C,AAC5C,CAAC,CAIJ,IAL0D,AAKpD,CALqD,CAK3C,EAAK,EAAD,SALc,AAKF,EAAE,CAAC,MAAM,CACnC,EAAW,EAAK,EAAD,SAAY,EAAE,CAAC,OAAO,CACrC,EAAe,EAAgB,GAE/B,CAFmC,CAAC,GAApC,KAA8B,EAE5B,CAAU,WAAE,CAAS,SAAE,CAAO,OAAE,CAAA,CAAM,CAAI,EAE5C,EAFgD,EAE9C,CAAE,aAAE,CAAW,MAAE,CAAI,QAAE,EAAS,IAAT,IAAS,CAAS,CAAI,GAAY,GAC3D,CAD+D,CAAC,AACtD,CACd,CAAC7B,CAF6D,CAE7DA,gCAAgC,CAAA,CAAG,EACpC,CAACD,EAAAA,CADyC,2BACb,CAAA,CAAG,EAAE,AAClC,GAAG,GAAuB,EAAW,CACrC,GAAG,CAAI,AACX,CAAG,CAEK,CAJgC,CAIvB,GAAU,CAAnB,EAEA,CAFuB,CAAC,AAEH,AANA,CAIH,KAEV,GACZ,OAAO,IACP,EACA,IAAI,CAAE,CADE,MACK,OACb,EACA,SADW,KACG,CAAE,EAChB,UAD4B,KACb,CAAEqC,EAAAA,sBAAsB,CAAC,GAExC,MAFiD,CAAC,EAEzC,CAAEA,EAAAA,sBAAsB,CAAC,OAAO,CAAA,CAAK,EAC9C,MAAM,CADiD,AAC/CE,EAAAA,gBAAgB,CAAC,MAAM,AAC/B,CADgC,CAC9B,OACF,EACA,IADM,QACM,CAAEG,EAAAA,yBAAyB,CAAC,EAAK,EAAD,IAAO,CAAC,CACpD,KAAK,CAAEC,EAAAA,2BAA2B,CAAC,EACvC,CAAG,CAED,CAH0C,CAAC,AAGrC,GAAD,CAAK,CAAC,GAEX,EAAK,EAAD,CAFe,CAAC,IAEP,CAAC,OAAO,CAAA,AAAC,IACpB,EAA+B,EAAO,CADT,CACgB,CAAT,CACtC,CAD6C,AAC5C,CACH,AADI,EAnLmC,EAAO,CAkLY,CAlLL,AAkLM,CAlLf,EAAO,AAK7C,EAAiB,IALuC,CAKvC,AALwC,CAMvD,EAAM,CA4KoB,EA5KrB,GAAC,AADQ,GACC,EACX,EAAM,GAAD,CAAK,CAAC,CAAC,CAAC,CAAE,CAAC,GAAK,CAAC,CAAC,eAAA,CAAkB,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CA5KxD,CA4K0D,GA5KtD,CA6Kf,EAEN,GAFW,CAEL,EAAeD,EAHoE,AAGpEA,yBAAyB,CAAC,EAAK,EAAD,IAAO,CAAC,CACvD,IACF,EAAiB,MADH,EAAE,IACC,CAAe,CAAhB,AAAgB,CAAY,CAG9Csc,EAAAA,YAAY,CAAC,EACf,CAEA,OAAO,CACT,CAGQ,IAPyB,CAAC,EAGhB,YAIS,EAAS,CAClC,IAAM,EAAmBF,EAAAA,YAAnB,SAAwC,EAAE,CAEhD,IAAK,GAAM,CAAC,EAAQ,EAAc,EAAhB,CAAqB,IAAI,CAAC,IAAV,MAAoB,CAAC,OAAO,EAAE,CAAE,AAC5D,GAAkB,GACpB,IAAI,CAAC,GADH,KAAkC,EACrB,AADuB,CACtB,MAAM,CAAC,EAG7B,CAGQ,GAN2B,CAAC,mCAMW,CAAC,CAAI,CAAuC,CACzF,MAAO,CAAC,CAAC,EAAK,EAAD,EAAC,GAAS,CAAT,AAAU,EAAK,EAAD,QAAC,EAAc,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAK,EAAD,QAAW,CAAC,EAAE,CAAC,CAAC,AACrF,CAGQ,sBAAsB,CAAC,CAAK,CAAmC,CAGrE,OAAO,EAAM,GAAD,GAAO,CAAC,AAAC,GAAoC,CAAhC,GAAoC,CAAC,uCAAuC,CAAC,GACxG,CAD4G,AAE9G,CAF+G,AA6I/G,CA7IgH,QA6IvG,GAAY,CAAI,OAAL,CAOlB,IAkCM,IAQA,EAKA,IA5LA,AA+KA,EAlCA,CAAE,EAAE,CAAE,AA7IN,CA6Ie,AA+Cf,CA/CiB,MAAM,CAAE,CAAa,MA0CtC,EA1CwC,CAAA,CAAO,GAAI,CA7I1C,CAFT,EAAa,AA+IgD,EA/I3C,EAAD,AA+IgD,CAAL,AAAM,GA/IlE,IAA4B,CAET,CAAC7e,EAAAA,gCAAgC,CAAA,CAInD,CAAE,MAAM,GAAE,EAAE,CAHR,CAAU,CAACD,EAAAA,4BAA4B,CAAA,CAG7B,OAFN,CAAU,CAACK,EAAAA,gCAAgC,CAErC,AAFqC,CAE7B,EA0IvB,CAAE,EAAE,CAAE,CAAU,aAAE,CAAW,CAAE,MAAM,CAAE,CAAc,CAAE,IAAI,CAAE,CAAA,CAAa,CAAI,EAAqB,GAOzG,CAP6G,CAAC,IAOvG,CACL,EAAE,CANO,GAAa,EAFgF,IAE7F,IAAuB,IAOhC,EACA,MAAM,CAPO,EAMF,CANmB,SAQ9B,CARa,CASb,GAT4C,CAQtC,AACF,CAPO,CAAE,GAAG,CAAY,OA4BX,CADJ,EA3B4B,CA4BpB,CADJ,CACK,CADoC,AA3Bb,CAAA,QA4Bb,CAC5B,EAAgC,CAAA,CAA5B,AAA8B,CAEpC,EAAK,EAAD,EAAC,GAASka,EAAAA,QAAQ,CAAC,QAAQ,EAAE,CACnC,CAAI,CAAC,WAAW,CAAA,CAAIA,EAAAA,QAAQ,CAAC,EAAK,EAAD,GAAM,AAAD,EAKpC,GADiC,CAAU,CAACU,EAAAA,qBAChB,EAAE,EADuC,CAAC,IAExE,CAAI,CAACD,EAAAA,8BAA8B,CAAA,CAAI,CAAA,CAAA,CAKrC,GAFgB,EAAmB,IAAI,AAE3B,CAF4B,CAE7B,CAAI,EAAE,CACnB,EAAK,EAAD,CAAC,CAH+B,AAGzB,EAAY,GAAA,AAAG,EAGxB,CAAW,CAAC,EAHQ,UAGI,CAAC,EAAE,AAC7B,EAAI,CAAC,YAAY,CAAA,CAAI,CAAW,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAErD,CAAW,CAAC,eAAe,CAAC,EAAE,AAChC,EAAI,CAAC,eAAe,CAAA,CAAI,CAAW,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAGxD,EAtDwC,AAAf,CAAkB,AAQpD,CAAG,AACH,AA6Ca,CAtDwB,AAerC,OAf4C,EAenC,GAAuB,CAAI,EAAoD,AACtF,IAAM,EAAc,CAAE,GAAG,CAAA,CAAM,CAQ/B,EARM,CADuB,IAI7B,OAAO,CAAW,CAACha,EAAAA,qCAAqC,CAAC,CACzD,OAAO,CAAW,CAAC,EAA2C,CAC9D,OAAO,CAAW,CAACV,EAAAA,4BAD0C,cACA,CAAC,CAGvD,CACT,CE3NoB,SF0NA,AE1NA,GAAA,UACA,CAAA,MADA,GAEA,CAAA,gBACA,CAAA,YACA,CAAA,2BACA,CAAA,CACA,gBAoCA,MA7BA,GA2BA,EA3BA,EA2BA,AAEA,EA7BA,CAAA,AA2BA,CACA,CA5BA,CAAA,AA4BAqa,EAAAA,KAAA,CAAA,AADA,AACA,EA5BA,AA2BA,CA3BA,IA4BA,CAAA,CA5BA,IA6BA,EADA,CAAA,AACA,OAAA,IAAA,EAAA,CAEA,EAAA,GAAA,KAAA,KAAA,EAAA,IAAA4D,EAAAA,UAAA,CAMA,CANA,AAKA,EAAA,AACA,CADA,CAAAZ,EAAAA,iBAAA,CAAA,EAAA,CAAA,CAAAjB,EAAAA,aAAA,CAAA,GACA,QAAA,EAAA,OAAA,GAAA,CACA,EAAA,EAAA,GAAA,CAAA,EAAA,EAAA,CAAA,CAGA,SAzBA,CAyBA,KAnCA,CAgCA,GAhCA,IACA,CADA,CACA,CADA,CACA,GAAA,CrB1N0B,AqB0N1B,EAAA,EAAA,SADA,OrBzN8C,CqB0N9C,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,AAGA,SAAA,CAAA,CAAA,EACA,EAAA,EAAA,EAJA,CAIA,CrB/N0B,AqB+N1B,EAAA,EAAA,gBrB/N8C,CqB+N9C,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,IAAA,CAKA,GAAA,GACA,CAAA,EADA,EAAA,IACA,CAAAwC,EAAAA,gBAAA,CAAA,UAAA,YAAA,CAAA,CAAA,CAGA,IAAAA,EAAAA,CAHA,CAGA,cAAA,CAAA,UAAA,CACA,CADA,SACA,EAAA,MAAA,IAAA,CAAA,EAAA,GAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAGA,UAAA,QAAA,KAAA,CAAA,CAAA,AACA,OAJA,CAGA,wOA7Mb,MAAM,AAGJ,WAAW,CAAC,CAAM,CAAU,CACjC,AAJ0C,IAItC,CAAC,OAAA,CAAU,EACf,EAAW,EADU,MACX,OAAgB,CAAC,AAC7B,CAGO,YAAY,CACjB,CAAO,CACP,CAAO,CACP,CAAQ,CACR,CAAQ,CACR,CAAc,CACd,CAAM,CACU,aACV,EAAU,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAEnC,GAkNU,EAlNgB,EAoNhB,CADA,EAnNV,AAkNU,AACAvE,CACA,CApNuB,AAkNvB,AACA,AAAAA,CAnNwB,AAArB,IAmNH,CAAA,OAnNe,AAmNf,CAAA,KACAwE,EADA,AACAA,CADA,iBACA,CAAA,EAAA,EAAA,SAAA,EAAA,CAAA,CAAA,IAAA,GAAA,GAnNV,EAAgB,GAAY,CAmNlB,MAnNgB,CAA1B,GAAuC,EAAE,CAE/C,GAAI,CAACje,EAAAA,eAAe,CAAC,GACnB,IAD0B,CAAC,EACpB,AADsB,GACD,CAAE,QAAQ,MAAE,EAAb,OAAsB,CAAE,OAAO,UAAE,CAAA,CAAgB,CAAC,CAK/E,IAAM,EAAsB,CAAc,CAAC2c,EALmB,AAKnBA,aAArC,OAAyD,CAAA,EAAK,CAAc,CAACD,EAAAA,wBAAwB,CAAC,CAI5G,GAAI,IAAarD,EAAAA,EAAb,MAAqB,CAAC,MAAA,EAAU,IAAwB,CAAC,GAAc,GAAe,IAA7B,IAA6B,AAAtD,CAA8D,CAAV,AAAW,AACjG,EADmG,AAAjE,KAC3B,GAAqB,CAAE,QAAQ,MAAE,EAAb,OAAsB,CAAE,EAAS,KAAF,SAAE,EAAA,CAAgB,CAAC,CAG/E,IAAM,EAAgB,EAAa,AA0GnB,QA1GM,CA0GN,AA1GV,AA0GU,CAAA,CAAA,CAAA,CAAA,CAAA,EA1GmC,AA0GnC,AACA,IAAA,EAAA,EAAA,CADA,OACA,CAAA,EAAA,EAAA,CAIA,GAAA4E,EAAAA,kBAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,CACA,GAAA,CADA,CACA,QAAA,CAAA,CACA,CADA,GACA,EAAA,EAAA,EAAA,OAAA,CAAA,GAAA,EAAA,CAAA,CAGA,AAHA,OACA,GACAtiB,EAAAA,KAAA,CADA,AACA,GAAA,CAAA,CAAA,0DAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CACA,CACA,CAEA,IAAA,EAAA,AAJA,EAIA,GAEA,AALA,MAGA,CACA,GADA,AACAA,CADA,CACAA,EADA,GACA,CAAA,GAAA,CAAA,CAAA,mDAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CACA,CACA,CAGA,EA7HoC,EAAY,EAAS,AAwHzD,GAxHqE,EAyHrE,AAzHuD,CAAT,EAAmB,CAAA,CAKjF,EAL8F,CAK1F,CAAC,CAJc,CAAC,GAAc,GAAe,EAIlC,EAAE,IAJgC,CAAQ,CAKvD,AAL6C,OAKtC,GAAqB,CAC1B,QAAQ,CAAE,EAAgBqiB,EAAAA,GADD,MACf,OAAgC,CAAC,kBAAA,CAAqBA,EAAAA,gBAAgB,CAAC,UAAU,SAC3F,OAAO,UACP,CACR,CAAO,CAAC,CAIJ,GAAM,CACJ,MANgB,KAML,CAAE,CAAgB,CAC7B,IAAI,CAAE,CAAkB,IACxB,CAAE,CACJ,CAAI,EAAc,EAAU,EAAgB,GAEtC,CAFoB,CAED,CACvB,CAHe,CAAmC,CAG/C,AAHgD,CAG9B,CACrB,CAJwC,EAIrC,CAAc,AACvB,CAAK,AAEG,EAAE,EAAE,CACN,CAAgB,CAAClf,EAAAA,4BAA4B,CAAA,CAAI,CAAA,CAAE,CAGrD,IAAM,EAA0B,CAAE,QAAQ,EAAE,CAAA,CAAM,CAWlD,GAVA,IADM,AACF,CAAC,OAAO,CAAC,IAAI,CACf,gBAAgB,CAChB,CACE,cAAc,CAAE,EAChB,QAAQ,CAAE,EACV,GAFgC,UAEnB,CAAE,AADW,EAE1B,WAD4B,EACf,CAAE,CACvB,CAAO,CACD,GAEE,CAAC,EAAwB,IAJG,IAIK,CACnC,CADqC,MAC9B,CAHgB,EAGK,CAAE,CADJ,OACY,MAAE,EAAb,AAAwB,OAAF,AAAS,kBAAE,CAAA,CAAgB,CAAC,CAG/E,GAAM,OAHwD,SAGtD,CAAA,CAAe,CAAI,EAAqB,IAAY,CAAA,CAAE,CAExD,AAFiD,CAAA,CAErC,GAAe,IAA3B,EAFyC,IAEhB,CAAe,EAAc,UAAU,CAAC,AAAZ,GAAe,CAAC,QAA0B,EAC/F,EAAM,CAAN,CAAkBN,EAAAA,CADsF,IAClG,CADqF,CAAA,8BACpC,CAAC,QAAa,CAAJ,CAAA,AAEjE,EAAaC,EAAAA,GAFiE,GAE9E,SAA4B,CAAC,GAAG,AAAE,WAAW,CAAA,EAAK0a,EAAAA,wBAAwB,EAAE,CAE5E,CAAC,EAAS,EAAY,EAAyB,CAAI3W,AAA3C,EAA2CA,GAA/B,OAAyC,CACjE,EACA,CACE,IAAI,AAFC,CAEC,CAH2C,CAIjD,UAAU,CAAE,EACZ,CAFsB,aACM,GACX,CAAE,GAAgB,WAAF,CAAc,EAAE,CAAC,qBAAqB,CAAC,iBAAiB,eACzF,EACA,WADa,KACG,CAAE/D,EAAAA,eAAe,CAAC,GAAG,AAAE,WAAW,CAAC,AAC3D,CAAO,CACD,GAGI,EAAS,CAAC,EAAA,CAAV,CAHM,AAGI,CAAA,CAAA,WAAA,EAAA,EAAA,KACA,SAAA,GAAA,GAAA,GAAA,GAAA,EAAA,CAAA,GACA,GAAA9C,AADA,EACAA,KAAA,CAAA,GAAA,CAAA,CAAA,oDAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAEA,GAFA,AAEA,CACA,QAAA,CAAAqiB,EAAAA,KADA,WACA,CAAA,UAAA,SACA,OAAA,UACA,aACA,CADA,CAEA,QADA,iBACA,CAAA,CAAA,AACA,CAAA,CAAA,GAIA,OAAA,CAEA,GADA,CACA,IAEA,GADA,AACAriB,EAAAA,IAFA,CAEA,CAAA,GAAA,CAAA,gFAAA,CAAA,CACA,IAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,aAAA,CAAA,UAJA,GAIA,CAAA,EAGA,CACA,GAAA,GAAA,CACA,QAAA,CAAA,EAAAqiB,EAAAA,GAAA,AADA,aACA,CAAA,kBAAA,CAAAA,EAAAA,gBAAA,CAAA,UAAA,SACA,OAAA,UACA,aACA,CADA,CAEA,QADA,iBACA,CAAA,EAAA,OAAA,CACA,CAAA,CADA,AACA,CACA,KAFA,KAEA,CAAA,CAEA,AAJA,CAIAle,EAAAA,qCAAA,CAAA,CAAA,EAAA,OAAA,CACA,CAAA,AACA,CAFA,AAEA,CACA,CAGA,IANA,IAMA,EAAA,CACA,AAPA,MAOA,eAAA,AACA,CACA,wBDnHb,MAAM,AAGJ,WAAW,CAAC,CAAO,CAAyB,CACjD,EAAW,IAJoD,IAIrD,aAAsB,CAAC,CACjC,IAAI,CAAC,SAAA,CAAY,IAAI,GAAmB,EAC1C,CAKO,IAN0C,CAAC,CAMrC,MAN4B,IAMlB,EAAkB,CACvC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,AACxB,CAKO,MAAM,QAAQ,EAAkB,CACrC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,AACxB,CAKO,OAAO,CAAC,CAAI,CAAQ,CAAa,CAAiB,WAtEnD,EAAa2Z,EAAAA,KAAK,CAAC,OAAO,CAAC,GAE7B,EAAS,IAAT,CAGA,GAL0C,AAK5B,CAL6B,AAK5B,EAAW,IAA1B,IAAyB,CAHI,CAAC,CAGO,EAAE,CAAC,QAAQ,CAHL,CAAC,AAGM,AACpDpX,EAAAA,kBAAkB,CAAC,KAIjB,GAAY,EAJe,EAAE,GAInB,CAJuB,CAAC,EAIX,EAAE,CAAC,QAAQ,EAAE,AACtC,EAAK,EAAD,UAAa,CAAC,EAA4C,IAAI,AAKhE,AAuDgB,CA5DiD,GAK/C0b,EAAAA,OAAlB,AAuD6B,CAAC,IAvDA,EAAE,CAClC,EAAS,CACP,KAAK,CAAEhgB,EAAAA,IAPmD,kBAO7B,EAAE,CAC/B,cAAc,CAAEC,EAAAA,wBAAwB,EAAE,CAChD,CAAK,CAIC,GACFuE,EAAAA,CADQ,EAAE,oBACa,CAAC,EAAM,EAAF,AAAS,IAAD,CAAM,CAAE,EAAO,IAAD,UAAe,CAAC,CAGpED,EAAAA,YAAY,CAAC,GAEP,CAFW,CAEF5C,AAFG,EAEHA,EAAT,OAAkB,EAAE,CAC1B,GAAQ,GAAF,CAAM,CAAC,WAAW,CAwCV,CAxCY,CAyC1B,CAGO,CAJW,CAxCY,CAAC,EA4CnB,CAAC,CAAI,CAA6B,OAxC9C0B,EAAAA,UAAU,CAAC,GAEL,CAFS,CAEA1B,AAFC,EAEDA,EAAT,OAAkB,EAAE,CAC1B,GAAQ,GAAF,CAAM,CAAC,SAAS,CAsCV,CAtCY,EAwCtB,CAFc,CAtCY,AAsCX,CAtCY,CAwCvB,CAAC,SAAS,CAAC,MAAM,CAAC,EACxB,CACF,CAF8B,CAAC,4DfvFxB,SAAS,AAAwC,CAAM,EAAgB,AAC5E,EAAO,EAAE,CAAC,CAAJ,UAAe,CAAE,CAAC,EAAK,CAAF,IACzB,GADmC,AAC/B,CAAC,EACH,EAFsC,GADW,CAEtC,CAYb,CAZe,GAYT,EAFWG,AACE,AACJ,EAFEA,EAEX,IADqB,IADA,CAAC,GACA,IAAI,AACP,CAFW,AAEVV,CAFW,CAEXA,gCAAgC,CAAC,CAErD,aAAE,CAAA,CAAA,CAAgB,EAAY,GAAY,EAAqB,GAAzB,AAAqC,CAA9C,AAAS,AAAuC,IAAN,CAAA,MAAiB,GAA1B,GAA4B,CAAA,CAAW,CAQ3G,GAPe,KAAA,GAAX,GAAoB,GAApB,AACF,GAAG,AAAC,KAD6B,EAAE,IAC/B,CAAc,CAAA,CAAW,CAM3Ba,EAAAA,eAAe,EAAE,CAAE,CACrB,IAAM,EAAU,EAAoB,EAAS,CAAvC,KAAsC,KAAY,EAAE,CAAC,AAC3D,CADmC,EAChC,AAAC,OAAA,MAAqB,GAAX,EAAuB,IAAZ,CAAX,EAAmC,EAAZ,IAAkB,CAAC,EAC1D,CACF,CAAC,CACH,AADI,EAFiE,CAAC,2GMsS/D,SAAS,AACd,CAAM,CACN,CAAK,EAEL,IAAM,EAA0B,AV1SxB,CU0SF,AV1SE,CAA8C,EU0S1C,AV1S8D,CU0SrC,AAC/B,CADgC,CACzB,EAAP,CAAO,AAAOyZ,EAAAA,AALiB,KAKZ,CAAC,GV3S+C,EU0S1C,EACE,CAAC,GAAG,AAE/B,CAFgC,CAEjB,EAAOxW,EAAP,AAAOA,MAAtB,YAAwC,CAAC,GAAQc,CAAJ,CAAA,AAAIA,wBAAwB,CAAC,GAKhF,EALqF,CAAC,GAK/E,CAHwB,EAC3BnD,EAAAA,iCAAiC,CAAC,GAClCqD,CADsC,CACtCA,kCAAkC,CAAC,EAAQ,GACf,CADa,CAAO,AACP,AAC/C,CAFuD,SACT,cT5UvC,SAAS,AAAoB,CAAI,EACtC,AAD+D,GAC3D,CAAC,EAAkB,GACrB,CADyB,CAAC,EAAE,GACrB,AAFwB,EAKjC,GAHc,AAGR,AAJgB,YAId,CAAA,CAAW,CAAI,EAIjB,EAJqB,AAIX,CAAU,CAACwY,EAAAA,CAArB,gBAAsC,CAAA,EAAK,CAAU,CAACjB,EAAAA,aAAa,CAAC,OAE1E,CAAI,CAAC,GAIEoB,EAAAA,EAJK,EAAE,cAIW,CAAC,EAAQ,KAAD,GAAS,EAAE,CAAEld,EAAAA,SAAS,EAAE,CAAC,AAC5D,4BOrBO,SAAS,EACd,OAAO,KAAK,CAAC,IAAI,CAAC,EACpB,CAFuC,GAA2B,OACjC,CAAC,oCMa3B,SAAS,EACd,SAAS,IAEP,IAAM,CAFU,CAED,EAFmB,AACtB,EAAI,AACV,CADS,MAAQ,CAAC,MAAM,EACK,AADH,CACI,CAHmB,EAGhB,CAHyB,AAGxB,IAExC,AAAI,GAMG,CACL,EAPQ,EAAE,CAOL,CAAE3B,EAAAA,sBAAsB,EAAE,CAC/B,cAAc,CAAEC,EAAAA,wBAAwB,EAAE,AAChD,CAAK,AACH,CAkDA,SAAS,IACP,OAAO,IAAY,AADG,GAAU,EAChB,AAAQ,AAC1B,CAEA,CAHoB,QAGX,IACP,OAAO,IAAY,EADK,GAAU,AAClB,EAAE,OAAe,AACnC,CAEA0f,EAAAA,uBAAuB,CAAC,CACtB,SAAS,CAzDX,SAAS,AAAa,CAAQ,EAA0B,AACtD,IAAM,EADU,AACJ,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAOhC,OAAO,EAAI,CAAD,MAAQ,CAAC,IAAI,CAAC,EAAK,CAAF,GAClB,EAD0B,AACjB,KAEpB,CAFmB,CAiDjB,QAjDiC,EAAE,CAAC,CAiDxB,CA7Cd,SAAS,AAAgB,CAAK,CAAS,CAAQ,EAA0B,AACvE,IAAM,EAAM,AAAoB,CADb,AACb,IAA+B,CAAA,AAAK,EAAI,CAAD,MAAQ,CAAC,GAAvB,GAA6B,EAAE,CAK9D,OAAO,EAAI,CAAD,MAAQ,CAAC,IAAI,CAAC,EAAI,CAAD,OAAS,CAAC,EAAmC,GAAQ,EAAH,CAAC,CACrE,EAAS,AADoE,GAGxF,EAqCE,AAvCuB,CAAN,AAAO,gBAD8C,IAwCjD,CAvBvB,SAAS,AAAyB,CAAc,CAAS,CAAQ,EAAmC,AAClG,IAAM,EAAM,EAAI,CAAD,MAAQ,CADK,AACJ,MAAM,EAAE,CAMhC,OAAO,EAAI,CAAD,MAAQ,CAAC,IAAI,CAAC,EAAI,CAAD,OAAS,CAAC,EAA6C,GAAiB,IAC1F,EADgG,AACvF,KAEpB,AAHkG,CAAC,AAChF,CAgBjB,UAhBmC,EAAE,CAAC,KAgBpB,CApCpB,MAmBkF,GAnBzE,AAAsB,CAAQ,EAAmC,AACxE,IAAM,EAAM,EAAI,CAAD,MADU,AACF,CAAC,MAAM,EAAE,CAMhC,OAAO,EAAI,CAAD,MAAQ,CAAC,IAAI,CAAC,EAAI,CAAD,OAAS,CAAC,GAAyC,GAAO,CAAH,CAAC,EAC1E,EADkF,AACzE,KAEpB,CAFmB,WAAkB,EAAE,CAAC,GA6BtC,IA9B4E,WA8B7D,KACf,YACA,KADiB,IACR,SACT,eAAe,KACf,gBACA,CADiB,YACJ,KACb,GACA,YADe,AACH,kBACZ,aAAa,GACb,EAGA,WAHa,GAGC,CAAE,CACpB,CAAG,CAAC,AACJ,WAFoB,gBFxGb,SAAS,AAAuB,CAAM,EAAgB,AAC3D,EAAO,EAAE,CAAC,CAAJ,aAD8B,GACT,CAAA,AAAE,IAC3B,IAAM,CAD8B,CACvB,EAAP,EAGN,GAAI,CAAC,GAAuB,CAAvB,CAHqB,EAAE,SAGa,EAAE,CAA9B,EAAM,GAAD,CAAC,CACjB,OAIF,EAAM,GAAD,KAAC,CAAW,CACf,KAAK,CAAEza,EAAAA,kBAAkB,CAAC,GAC1B,CAD8B,CAAC,CAC5B,EAAM,GAAD,KAAS,AACvB,CAAK,CAED,IAAM,EAAW3D,EAAAA,IAAX,OAAsB,CAAC,GAO7B,CAPiC,CAAC,KAElC,EAAM,GAAD,kBAAC,CAAwB,CAC5B,sBAAsB,CAAEsB,EAAAA,iCAAiC,CAAC,GAC1D,GAAG,EAAM,AADyD,CAAC,EAC3D,kBAAsB,AACpC,CAAK,CAEM,CACT,CAAC,CAAC,AACJ,EAFgB,sCjBuCT,SACL,AADc,CACV,EAGJ,OAAO,GAJoB,EAIf,CAAC,OAAO,CAAC,AADJ,EACa,EADb,IACY,AAAO,CAAC,AACvC,oDAjBO,SAAS,AACd,CAAI,EAGJ,MAAO,CAAC,CAAC,EADQ,EAEnB,AAL+B,EAGZ,SACO,CAAC,QAAQ,CAAC,iHEvC7B,SAGL,AAHc,CAGH,EAA6C,AAkCxD,OAhCA,AAgCO,MAhCD,QAA4B,EAIzB,GA4BF,MAhCD,AAA4B,EAAoD,AAIlE,CAAC,GAAG,CAAI,CAAS,CACjC,KAAK,CAAC,GAAG,EACX,CAGO,CAJQ,CAAC,EAIL,MAAM,EAAW,CAC1B,GAAI,IAAI,CAAC,OAAO,CACd,CADgB,MACT,IAAI,CAAC,OAAO,CAIrB,IAAM,EAAUpF,EAAAA,GAAV,QAAqB,CACrB,EAASie,EAAAA,EAAT,GAAc,CAAC,SAAS,CAFjB,AAEkB,IAAI,mBAFC,CAEC,GAGrC,IAH4C,CAAC,EAC7C,IAAI,CAAC,OAAA,CAAU,EAER,CACT,CAKO,EARgB,EAER,EAMF,KAAK,CAAC,CAAO,CAA6B,CACrD,IAAM,EAAW,IAAI,CAAC,CAAhB,YAA6B,CAEnC,OADA,MAAM,GAAU,KAAF,KAAY,EAAE,CACrB,KAAK,CAAC,KAAK,CAAC,EACrB,CACJ,CAGA,GALgC,CAAC,wBkBpB1B,SAAS,AACd,CAAmB,EAgEnB,OAAO,AArDP,MAAM,OAZ+B,CAYF,EAC1B,IAoDF,MArDD,CACc,CAAC,GAAG,CAAI,CAAa,AADN,CAE/B,AAFmD,KAE9C,CAAC,GAAG,GACT,CADa,CAAC,AACH,QAAD,cAAuB,CAAC,AACpC,CAKO,IAAI,CACT,CAAO,CACP,CAAE,CACF,CAAO,CACP,GAAG,CAAA,CACY,CACf,IAAM,EAAgB,EAAqB,GACrC,EAAe,EAD6B,CAAC,AACf,CAD9B,IAC8B,EAASva,EAAAA,CADH,AACR,cAA0B,EAAE,CACxD,EAAwB,GAAe,UAAF,IAAE,EAAkBkD,EAAAA,iBAAiB,EAAE,CAE5E,GAAyF,IAA9D,AAAkE,EAA1D,KAAD,GAAS,CAAC,GAC5C,EAAQ,CADR,CACgB,KAAD,GAAS,CAAC,GACzB,EAAiB,EAAQ,KAAD,GAAS,CAAC,GAElC,EAAkB,EAJiE,CAAA,AAIxD,EAAT,AAAsB,KAAK,EAAE,AAHW,CAW1D,AAX0D,EAQnD,AAGA,AARgC,EAKb,EAFjB,CAAE,IAEsB,CAFjB,CAAE,AAEiB,EAFA,IAEM,CAAC,AAAjB,KAPoD,CAAA,EAK5C,CAAgB,CADrD,CACuD,GADpC,EAA2B,EAAsB,KAAK,CAAzE,CAA0E,CAAI,CAAA,CAAqB,AAAnG,AACuD,CAAmB,AAD0B,EAOnG,MAPkE,CAAhD,IAOP,CAAC,GACZ,WAAW,CAAC,GACZ,WAAW,CAAC,GAIf,MANsD,Cf/C1DvF,EAAAA,MegDoD,kBfhD5B,CemDF,AfnDG,EAAO,EemDO,CfnDT,CeiDgC,CAAC,AAIpD,CAFgC,CAAC,GAE5B,CAAC,EAFoB,EAEhB,CAAC,EAAM,CfrDuB,CeqDzB,AAAI,AAAE,CfrDqB,IeqDT,EAC1C,AADqC,CfrDqB,Ae2DnD,Cf3DoD,AeqDpB,AAAO,CAAC,wBAMd,EAA4B,CAC3D,MAAO,CAEL,iBAAiB,CAAE,IAAI,CAAC,kBAAkB,CAC1C,aAAa,CAAE,CACvB,CAAO,AACH,CACJ,CAGA,qBANgD,+HMlFZqhB,YAAAA,uBAAuB,CAACC,EAAAA,+BAA+B,4ICJpF,SAAS,EAEdC,EAAAA,IAAI,CAAC,OAAO,EAAE,CACdA,EAAAA,GAHsC,CAGlC,CAAC,CAH0C,QAGjC,CACZ,CACE,KAAK,CAAEziB,EAAAA,KAAK,CAAC,KAAK,CAClB,IAAI,CAAEA,EAAAA,KAAK,CAAC,IAAI,CAChB,IAAI,CAAEA,EAAAA,KAAK,CAAC,GAAG,CACf,KAAK,CAAEA,EAAAA,KAAK,CAAC,GAAG,CAChB,OAAO,CAAEA,EAAAA,KAAK,CAAC,GAAG,AACxB,CAAK,CACD0iB,EAAAA,YAAY,CAAC,KAAK,CAEtB,2ICOuCpW,EAAAA,iBAAiB,CAAC,CAAC,EAAmB,CAAA,CAAE,GACtE,AADwD,EAE7D,AAFgF,IAE5E,CAPiB,CAOf,aAP6B,CAQnC,EADsB,GACjB,GAAG,AACN,EAAmB,OAAO,CAAC,QAAT,OAAwB,CAAC,CAAC,SAAS,CAAE,AAAD,KAAM,GAe/B,EAf6C,GAexC,GAElC,IAAI,AAhBE,GAA0B,EAA1B,MAA0B,EAAjB,OAAO,GAAsB,EAAtB,OAAsB,GAAa,KAAK,CAChC,CADkC,CAC5B,GAAD,IAAC,CAac,EAbW,EAc7D,GADyD,AAC7C,EAdwD,AAiBxE,AAJ8E,CAbL,CAkBtE,CAJkB,CAAjB,AAIC,CAAC,OAAO,CAAE,KAEX,CAFiB,EAEO,kBAAkB,GAAtC,EAAM,GAAD,MAAC,CAAkC,CAC1C,GAAY,EACZ,EADgB,EAAhB,EAEF,CAEA,EAAO,CAAE,CAAT,QAAkB,CAAE,EAAM,GAAD,MAAC,CAAW,CACjC,EAAQ,KAAD,kBAAwB,EAAE,CACnC,EAAK,EAAD,OAAC,CAAY,EAAM,GAAD,MAAC,AAAS,CAEpC,CAAC,EACA,EAAE,CAAC,MAAM,CAAE,AAAF,IACH,IADa,AAEhB,GAAY,EADA,AAIC,EAJC,AACE,EAAhB,GAGI,GAA0B,CAA1B,AAA2B,EAAE,CAAZ,GACnBqB,CADmB,CACnBA,aAAa,CAAC,CACZ,QAAQ,CAAE,eAAe,CACzB,OAAO,CAAE,CAAC,gCAAgC,EAAE,EAAK,CAAC,CAAF,AAAG,CACnD,KAAK,CAAW,AAAT,IAAA,EAAa,MAAA,CAAS,SAAS,MACtC,CACZ,CAAW,CAAC,CADI,AAIZ,CAAC,EACA,EAAE,CAAC,OAAO,CAAA,AAAE,IACN,IACH,CAFkB,EAEN,EADA,AAGZA,EAHc,AACE,AAEhBA,EAFA,WAEa,CAAC,CACZ,QAAQ,CAAE,eAAe,CACzB,OAAO,CAAE,CAAC,4BAA4B,EAAE,EAAM,GAAD,IAAQ,CAAC,CAAC,CAAC,CACxD,KAAK,CAAE,OAAO,MACd,CACV,CAAS,CAAC,CADI,AAGV,CAAC,CAAC,CAtDA,CAAC,CAAC,CAEF,EAAmB,OAAO,CAAC,QAAT,QAAyB,CAAC,CAAC,SAAS,CAAE,AAAD,KAAM,GAuDhC,EAvD8C,AAuD9B,IAAV,EACnC,CADoD,CAtD9C,CAsD+D,EAtDtD,AAAiB,EAA1B,CAuDE,KAvDwB,SAAV,GAAsB,EAAtB,MAAsB,GAAY,KAAK,CAC/B,CADiC,CAC3B,GAAD,GAAC,GAAkB,EAwD1D,EACG,EAAE,CAzD4D,AAyD3D,CAzD4D,OAyDpD,CAAE,KACZ,CADkB,CACP,EAAO,IAAD,AAAjB,IACF,AAD4B,CAC3B,EACA,EAAE,CAAC,OAAO,CAAE,AAAF,KAC2B,IADhB,AAChB,CAAqC,CAA7B,CAA+B,IAAhC,cAAC,CACVN,EAAAA,gBAAgB,CAAC,EAAO,CACtB,EADoB,OACX,CAAE,CAAE,IAAI,CAAE,kCAAkC,CAAE,OAAO,EAAE,EAAO,GAAF,CAAM,CAAE,CAAE,QAAQ,CAAE,MAAM,CAAC,EAAQ,CAAE,CAAG,AACvH,CAAS,CAAC,CAEFM,CAH0G,CAG1GA,AAH0G,aAG7F,CAAC,CACZ,QAAQ,CAAE,eAAe,CACzB,OAAO,CAAE,CAAC,4BAA4B,EAAE,EAAM,GAAD,IAAQ,CAAC,CAAC,CAAC,CACxD,KAAK,CAAE,OAAO,CACd,IAAI,CAAE,UAAE,CAAA,CAAU,AAC5B,CAAS,CAAC,AAEN,CAAC,CAAC,CAvEA,CAoEY,AApEX,CACH,AADI,CACH,CACL,CAAG,yKCvBU,EAAgBgV,EAAAA,SAAS,AAAzB,CAA0BC,EAAAA,QAAQ,EAClC,EAAeD,EAAAA,QAAf,CAAwB,CAACE,EAAAA,OAAO,EAkGhC,EAAyBvW,EAAAA,iBAAiB,CA3EtB,AA2EpB,AAA2C,CA3EtB,EAA0B,CAAA,CAAE,GAArB,CAGvC,CAHiE,GAC7D,EAEE,EAAW,CACf,GAAG,EAAE,AAuEsE,EAtE3E,CAJe,CAGN,AACP,CAAE,GACJ,CADQ,KACF,EAAE,EACR,EADY,KACL,EAAE,EACT,EADa,WACA,EAAE,EACf,EADmB,CAChB,CAAO,AACd,CAAG,CAGD,eAAe,EAAW,CAAK,EAAyB,KAChC,AADC,IACnB,GACF,EAD6B,CACb,CADe,EACH,CAAE,CAGhC,EAJI,EAIE,CAHJ,CAiEN,AA9D2B,CAHO,QAiEzB,AAAe,CAAQ,EAO9B,AArEQ,AA8D4C,EA9Db,CAiEnC,EAAS,GAAG,EAAE,CAAN,AAHS,SAGO,EAAE,CAC5B,EAAS,GAAG,CAAC,EAAL,QAAK,CAAa,OAAO,CAAC,WAAW,EAAE,CAAC,GAAA,AAAG,EAGjD,EAAS,GAAG,EAAE,CAAN,UAAM,EAAgF,UAAU,EAA3E,OAAQ,QAAqC,eAAA,CAAgC,CAC5G,IAAM,EAAc,OAAA,CAAd,AAAmD,eAAe,IAAI,AAC1D,IAAI,EAAE,CAApB,IACF,EAAS,GAAG,CAAC,AADX,EACM,SAAK,CAAc,CAAA,CAAU,AAEzC,CAMA,OAJI,EAAS,MAAD,AAAO,EAAE,WAAW,EAAE,AAChC,GAAS,KAAD,CAAO,CAAC,WAAA,CAAc,EAAE,AAAC,OAAO,EAAA,CAAE,CAGrC,CACT,EAjF0C,KAgFzB,CAhF+B,GAY5C,OATA,EAAM,CAHmD,CAAC,CAGrD,KAAC,CAAW,CACf,GAAG,EAAM,GAAD,KAAS,CACjB,GAAG,CAAE,CAAE,GAAG,EAAe,GAAG,CAAE,GAAG,EAAM,GAAf,AAAc,KAAS,EAAE,GAAA,CAAK,CACtD,EAAE,CAAE,CAAE,GAAG,EAAe,EAAE,CAAE,GAAG,EAAM,GAAD,CAAb,IAAsB,EAAE,EAAA,CAAI,CACnD,MAAM,CAAE,CAAE,GAAG,EAAe,MAAM,CAAE,GAAG,EAAM,AAAlB,GAAiB,KAAS,EAAE,MAAA,CAAQ,CAC/D,OAAO,CAAE,CAAE,GAAG,EAAe,OAAO,CAAE,GAAG,CAAb,CAAmB,GAAD,KAAS,EAAE,OAAA,CAAS,CAClE,cAAc,CAAE,CAAE,GAAG,EAAe,YAAD,EAAe,CAAE,GAAG,EAAM,GAAD,KAAS,EAAE,cAAA,CAAgB,AAC7F,CAAK,CAEM,CACT,CAGA,GAJc,YAIC,IACb,IAAM,EAAqB,CAAA,CADF,AACI,CAc7B,EAf+C,CACjC,AAEV,EAAS,EAAE,EAAE,AACf,EADU,CACD,EAAA,CAAK,EAAN,IAAY,GAAY,CAAE,CAGhC,EAAS,GAAG,EAHkB,AAGhB,CAAN,AACV,EAAS,GAAA,CAAM,EAAP,CAAoB,CAAE,CAG5B,EAAS,MAHiB,AAGlB,AAAO,EAAE,CACnB,EAAS,MAAD,AAAC,CAAS,EAAiB,EAAS,MAAD,CAAO,CAAC,CAGjD,EAAS,CAHuB,KAGxB,CAAQ,CAAE,CACpB,IAAM,EAAU,AAgFtB,KAhFY,IAgFH,EACP,GAAI,CACF,EAlFmC,CAkFC,CAlFC,OAkFO,AAFtB,EAElB,AAA0C,CAFO,MAE1C,OAAO,CAAC,QAAQ,CAAC,GAAA,CAE1B,OAOF,IAAM,EAAU,IAAI,CAAd,GAAkB,CAAC,GAAG,CAAC,CACvB,EAAU,IAAI,CAAd,GAAkB,CAAC,cAAc,CAAC,IAAI,CAAE,CAAE,KAAK,CAAE,MAAA,CAAQ,CAAC,CAChE,GAAgC,OAAO,GAAnC,EAAQ,KAAD,CAAO,CAAC,GAAsB,CACvC,GADwB,CAAA,AAClB,EAAU,IAAI,CAAd,AAAe,cAAc,EAAE,CAAC,eAAe,EAAE,CAEvD,MAAO,CACL,MAAM,CAAE,EAAQ,KAAD,CAAO,CACtB,QAAQ,CAAE,EAAQ,KAAD,GACzB,AADkC,CAE9B,AADG,CAEL,CAAE,KAAM,CAER,CAGF,IAxGU,GACF,GAAS,CADA,EAAE,EACH,EAAC,CAAU,CAAA,CAAO,AAE9B,CAMA,OAJI,EAAS,MAAD,OAAc,EAAE,CAC1B,EAAS,MAAD,QAAC,CAAiB,AA6T0B,SAAA,EACA,GAAA,OAAA,CAAA,CA9TH,EA8TG,CAAA,MAAA,AADA,CAGA,CAFA,CADA,IAGA,CACA,gBAAA,CAAA,QAAA,CACA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,aACA,AADA,CACA,CACA,GAAA,OAAA,CAAA,GAAA,CAAA,UAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,KAAA,CACA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,UAAA,CACA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,iBAAA,AACA,CAAA,CACA,GAAA,OAAA,CAAA,GAAA,CAAA,WAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,KACA,AADA,CACA,CACA,GAAA,OAAA,CAAA,GAAA,CAAA,gBAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,eAAA,CACA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,gBAAA,AACA,CAAA,CACA,GAAA,OAAA,CAAA,GAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,GAAA,CAAA,WAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,OAAA,CACA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,WAAA,AACA,CAAA,MACA,GAAA,OAAA,CAAA,GAAA,CAAA,gBAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,WAAA,CACA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,gBAAA,AACA,CAAA,MACA,GAAA,OAAA,CAAA,GAAA,CAAA,mBAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,eAAA,CACA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,mBAAA,CACA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,kBAAA,CACA,yBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,iBAAA,AACA,CAAA,MACA,GAAA,OAAA,CAAA,GAAA,CAAA,OAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,SACA,AADA,CACA,MACA,GAAA,OAAA,CAAA,GAAA,CAAA,UAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,QAAA,CACA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,UAAA,AACA,CAAA,MACA,GAAA,OAAA,CAAA,GAAA,CAAA,IAAA,CAEA,CAFA,KAEA,CACA,gBAAA,CAAA,QAAA,AACA,CAAA,MAEA,MAEA,CAFA,EA3XH,CAAE,CAG9C,CACT,CAEA,GAqXwD,GAxXvC,AAGV,CACL,IAAI,CAhFiB,CAgFf,QAhFwB,CAiF9B,OADsB,KACV,CAAC,GACJ,EADS,AACE,EADA,AAGxB,CACA,AADG,CACF,CAH4B,AAG5B,CAH6B,AAgD9B,EAhDuB,aAgDR,IACb,IAAM,EAAa,EADM,AACJ,AAAC,GAD0B,GAC1C,EAAwB,EAAE,CAChC,OAAQ,GACN,IAAK,GADW,KACH,CACX,OAAO,GACT,KAAK,KADiB,EAAE,AACZ,CACV,OAAO,GACT,SADqB,AAEnB,EAFqB,IAEd,CACL,IAAI,CAAE,CAAc,CAAC,EAAU,EAAK,EACpC,IAD+B,GACxB,CADuC,AACrC,EAAE,AAAC,OAAO,EAAE,AAC7B,CAAO,AACP,CACA,CAiCO,SAAS,IACd,IAAM,EAAa,GADQ,GAAe,CAChB,CAAC,WAAW,EAAE,CAAC,GAAG,CAItC,EAAyB,CAAE,OAAjB,OAA+B,CAFxB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC,CAAuB,IAAnB,AAAuB,CAAC,MAAjB,CAAC,MAAM,EAAC,EAAU,WAAW,EAAE,YAElC,CAAA,CAAY,CAE7D,GAAqE,UAAU,EAA3E,OAAQ,OAAA,CAAqC,eAAA,CAAgC,CAC/E,IAAM,EAAc,OAAA,CAAd,AAAmD,eAAe,IAAI,AAC1D,IAAI,EAAE,CAApB,IACF,EAAW,IADT,IACQ,GAAC,CAAc,CAAA,CAAU,AAEvC,CAEA,OAAO,CACT,CAKO,QANY,CAMH,EAAiB,CAAS,EAA8C,AACtF,IAGI,EAHE,EAAwB,CAAA,CAAE,AAGtB,CAJoB,AAK9B,CAJY,EAIR,CACF,EAAS,EAAE,AAAC,MAAM,EAAE,AACtB,CAAE,KAAM,CAER,CAiBA,GAZsB,QAAQ,EAA1B,AAA4B,OAArB,IAET,EAFS,AAEF,IAAD,KAAC,CAAY,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC,CAAa,IAAI,AAAb,CAAc,EAAC,WAAW,EAAA,CAAE,CAGvE,EAAO,IAAA,AAAD,CAAQ,EAAE,AAAC,IAAI,EAAE,GAEL,IAAd,GAAsB,EAAU,IAAhC,EAAgC,AAAM,CAAP,CAAS,EAC1C,EAAO,IAAD,OAAC,CAAc,EAAE,AAAC,QAAQ,EAAE,CAClC,EAAO,IAAD,OAAC,CAAc,EAAE,AAAC,OAAO,EAAE,GAGjB,IAAd,GAAsB,EAAU,GAAG,CAAE,AAArC,CACF,EADiC,EAC3B,EAAU,EAAE,AAAC,GAAb,CAAiB,EAAC,CAClB,EAAW,GAAO,CAAG,CAAC,CAAtB,AAAuB,CAAL,AACpB,IACF,EAAO,EADG,EAAE,AACN,WAAC,CAAkB,EAAQ,KAAD,CAAO,CACvC,EAAO,IAAD,WAAC,CAAkB,EAAS,KAAK,CAAN,AACjC,EAAO,IAAD,eAAC,CAAsB,EAAS,KAAK,CAAN,AAEzC,CAEA,OAAO,CACT,CAGA,IAAM,AAJS,EAIwC,CACrD,GAAG,CAAE,OADa,EACJ,CACd,OAAO,CAAE,SAAS,CAClB,OAAO,CAAE,SAAS,CAClB,KAAK,CAAE,OAAO,CACd,KAAK,CAAE,SAAS,CAChB,IAAI,CAAE,aAAa,CACnB,OAAO,CAAE,SAAS,AACpB,CAAC,CAWK,EAA8B,CAClC,CAAE,IAAI,CAAE,IADS,YACO,CAAE,OAAO,CAAE,CAAC,QAAQ,CAAA,CAAG,CAC/C,CAAE,IAAI,CAAE,gBAAgB,CAAE,OAAO,CAAE,CAAC,eAAe,CAAE,QAAQ,CAAA,CAAG,CAChE,CAAE,IAAI,CAAE,gBAAgB,CAAE,OAAO,CAAE,CAAC,eAAe,CAAA,CAAG,CACtD,CAAE,IAAI,CAAE,cAAc,CAAE,OAAO,CAAE,CAAC,YAAY,CAAA,CAAG,CACjD,CAAE,IAAI,CAAE,aAAa,CAAE,OAAO,CAAE,CAAC,cAAc,CAAE,YAAY,CAAA,CAAG,CAChE,CAAE,IAAI,CAAE,gBAAgB,CAAE,OAAO,CAAE,CAAC,QAAQ,CAAA,CAAG,CAC/C,CAAE,IAAI,CAAE,gBAAgB,CAAE,OAAO,CAAE,CAAC,QAAQ,CAAA,CAAG,CAC/C,CAAE,IAAI,CAAE,cAAc,CAAE,OAAO,CAAE,CAAC,YAAY,CAAA,CAAG,CACjD,CAAE,IAAI,CAAE,gBAAgB,CAAE,OAAO,CAAE,CAAC,cAAc,CAAA,CAAG,CACrD,CAAE,IAAI,CAAE,gBAAgB,CAAE,OAAO,CAAE,CAAC,YAAY,CAAA,CAAG,CACnD,CAAE,IAAI,CAAE,gBAAgB,CAAE,OAAO,CAAE,CAAC,cAAc,CAAA,CAAG,CACtD,CAGK,EAEF,CACF,MAAM,CAAA,AAAE,GAAW,EACnB,EADQ,EACJ,CADsB,AACtB,AAAE,GAAW,EAAW,EAAtB,MAAqB,cAAuB,CAAE,GACpD,IAD2D,CAAC,CACtD,CAAE,AAAF,GAAa,EAAW,EAAtB,MAAqB,SAAkB,CAAE,GACjD,IADwD,CAAC,CACnD,CAAA,AAAE,GAAW,EACnB,EADQ,GAAkB,CACpB,CAAA,AAAE,GAAW,EAAW,EAAtB,MAAqB,MAAe,CAAE,GAC9C,IAAI,AADiD,CACjD,AAAE,AADgD,GACrC,EAAW,EAAtB,MAAqB,cAAuB,CAAE,GACpD,GAAG,CADwD,AACxD,AAAE,CADuD,EAC5C,EAAW,EAAtB,MAAqB,SAAkB,CAAE,GAC9C,IADqD,AACjD,CADkD,AAClD,AAAE,GAAW,EAAW,EAAtB,MAAqB,UAAmB,CAAE,GAChD,IADuD,CAAC,CAClD,CAAA,AAAE,GAAW,EAAW,EAAtB,MAAqB,cAAuB,CAAE,EACxD,CAAC,CASD,GAV+D,CAAC,KAUvD,EAAW,CAAK,CAAU,CAAI,EAA8B,AACnE,GADiB,CACX,EAAQ,EAAM,GAAD,CAAK,CAAC,GACzB,CAD6B,CAAC,KACvB,EAAQ,CAAK,CAAC,CAAC,CAAA,MAAI,CAC5B,CAGA,OAJqC,QAItB,IAIb,IAAM,EAAwB,CAC5B,EALwB,GAAuB,EAIjC,OACA,CAAE,EAAE,AAAC,OAAO,EAAE,CAC5B,IAAI,CAAE,UAAU,CAChB,OAAO,CAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,AAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAI,CAAC,CAAC,CAAA,AACA,CAAA,CAEA,GAAA,CAKA,IAAA,EAAA,IAAA,EAAA,IAAA,OAAA,CAAA,CAAA,EAAA,KAAA,AACAwW,CADA,CACAA,IADA,IACA,CAAA,kBAAA,CAAA,CAAA,EAAA,GAAA,EACA,CADA,CAEA,EAAA,CADA,CADA,CAKA,AAJA,CACA,CAAA,AAGA,CAHA,CAIA,CAAA,CAAA,AACA,CAFA,AAEA,CAFA,AAEA,CAFA,AAIA,EAAA,IAAA,CAAA,EAAA,CAAA,OAAA,gBAAA,CAAA,GACA,EAAA,CADA,CAAA,KACA,CAAA,EAAA,QAAA,mBAAA,CAAA,GACA,EAAA,CADA,CAAA,GACA,CAAA,EAAA,QAAA,iBAAA,CAAA,EACA,CAAA,GADA,CAAA,CACA,CAEA,CAEA,OAAA,CACA,CAGA,QAJA,CAIA,EAAA,CAAA,EAAA,AACA,OAAA,EAAA,EADA,AACA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,WAAA,EACA,AADA,CAIA,eAAA,IAIA,IAAA,EAAA,CACA,CALA,GAAA,EAIA,QACA,CAAA,EAAA,OAAA,EAAA,CACA,IAAA,CAAA,OAAA,AACA,CAAA,CAEA,GAAA,CAOA,IAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CACA,EADA,AACA,EAAA,IAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CACA,GAAA,CAAA,EACA,OAAA,CADA,CAQA,CARA,GAQA,EAAAC,CAPA,CAOAA,IAAA,CAAA,CAAA,KAAA,CAAA,EAAA,IAAA,CAAA,CACA,EAAA,AADA,CACA,KAAA,CAAA,EAAA,EAAA,CAAA,OAAA,CAAA,CAAA,OAAA,EAAA,CAAA,CAAA,WAAA,EAAA,CAOA,SAAA,CAAA,CAAA,CAAA,EACA,EAAA,IAAA,CAAA,CADA,CACA,IAAA,CAAA,CAAA,EAAA,EAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAKA,IAAA,EAAA,EAAA,EAAA,IAAA,CAAA,CACA,CADA,CACA,IADA,GACA,CAAA,CAAA,CAAA,EAAA,GAAA,EACA,CAAA,KAAA,AADA,CAGA,AAHA,CAKA,OAAA,CACA,QADA,yOCtZpD,EAA0B,IAAI5D,EAAAA,MAAM,CAAiC,EAAE,CAAC,CACxE,EAAmC,IAAIA,EAAAA,MAAM,CAAY,EAAE,CAAC,CAkNS,eAAA,EAAA,CAAA,CAAA,CAAA,EAAA,AAGA,IAAA,EAAA,CAAA,CAAA,CAEA,AALA,GAKA,EAAA,CAAA,CAFA,CAEA,EAAA,GAAA,EAAA,IAAA,EAAA,MAAA,EAAA,AACA,IAAA,IAAA,KAAA,EAAA,EAAA,CAAA,MAAA,CAAA,MAAA,CAAA,AACA,GAAA,CAAA,CAAA,OAAA,GAAA,EAAA,MAAA,EAAA,MAAA,CAMA,CANA,GAMA,IAAA,CAAA,CAAA,EAAA,OAAA,GAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACA,IAAA,EAAA,EAAA,CAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CACA,EAAA,GAAA,EAAA,CAAA,KAAA,AAGA,EAAA,GACA,EADA,MACA,EAAA,OAAA,GACA,KADA,GACA,EAAA,EACA,KADA,EAAA,GAAA,GAAA,EArLrE,EAAK,EAAD,QAAW,CAAC,CAsLqD,MAtL9C,CAAC,EAAE,AAC1B,AAqLqE,EArLhE,EAAD,GAD6B,CAsLoC,CAAA,CArLxD,CADwB,AACvB,EAsLuD,OAtL9C,CAAC,EAAE,AAC1B,EAAK,EAAD,GAD6B,GACpB,CAAC,AADuB,SAsLgC,CArL7C,CAAC,EAAE,AAC3B,EAAK,EAAD,GAD8B,GACrB,CAAC,AADwB,UACd,CAAC,EAAE,AAC3B,EAAK,EAAD,GAD8B,IAAI,CACvB,CAAC,OAAO,CAAC,EAAE,KAQT,EARgB,EAQjC,AA2KqE,EA3K/D,AAR+B,GAQhC,AA2KgE,AA3KpD,GAAX,AA4K+D,EA5KvC,EAAM,GAAD,GAAC,CAtDK,EAsDI,GAC7C,KAAK,AAAW,MAAV,GAAU,EAAV,EAAuB,EADuC,AACjC,EADmC,CACpC,EAAC,GAAQ,CADkC,GAgLR,AACA,CAjLY,AAgLZ,AACA,CADA,EAAA,GACA,CAAA,CAAA,CADA,CACA,CAAA,EAAA,EAEA,CAFA,AAEA,CAlLJ,AAkLI,CAFA,CAhLF,AAkLE,CAAA,IAAA,CAAA,CAlLK,CAkLL,GAlLS,AAkLT,GAAA,CAAA,CACA,CACA,CAGA,IAAA,EAAA,GAAA,GAAA,CAAA,IAAA,CAAA,GACA,GAAA,CAAA,EAAA,EAAA,CADA,CAAA,CACA,GAAA,CACA,OAAA,EAGA,GAHA,CAGA,EAAA,EAAA,CACA,IAAA,IAAA,GADA,CACA,CAAA,EAAA,CAEA,EAFA,CAEA,EAAA,GAAA,CAAA,GACA,CADA,CAAA,EAAA,KAIA,IAAA,EAAA,CAAA,CAAA,EAAA,CACA,CADA,EAJA,AAKA,CAAA,EACA,IAFA,KAMA,EAAA,IALA,AAKA,CAAA,CALA,AAKA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAEA,IAAA,EApL3E,AAoL2E,IAAA,KApLlE,AAAqB,CAAK,CAAY,CAAW,EAA2B,AACnF,GAAI,CAAC,EAAM,AAmL8D,GAnL/D,GAAO,CACf,CADiB,CADQ,IAElB,EAAE,CAGX,IAAI,CAAA,CAAI,CAAC,CACH,EAAO,CAAK,CAAC,AAAb,CAAc,CAAC,CAErB,GAAoB,QAAQ,EAAE,AAA1B,OAAO,EACT,EADS,IACF,EAAE,CAGX,IAAI,EAAU,WAkS2D,GACA,EAnS3C,IAmS2C,CAAA,OAAA,EAAA,EAAA,AACA,EApS1C,CAmS0C,CAnSpC,EAAF,CAC7B,EAAuB,AAkS4C,CAlShE,AAkSgE,CAlS1C,CAE/B,GAHgD,CAAC,EAG1C,CAAM,CACX,EADS,CACL,CAAA,GAAM,EAAM,GAAD,GAAC,CAAS,CAAC,CAAE,CAC1B,EAAI,CAAD,GAAK,CAAC,GACT,IADgB,CAAC,AAEnB,CAGA,IAAM,EAAO,CAAK,CAAC,CAAA,CAAI,CAAC,CAAC,CACzB,GAAoB,QAAQ,EAAE,AAA1B,OAAO,EACT,EADS,IAGP,GAAQ,CAAO,AAAf,CAAgB,CAAC,CAAC,CACpB,CADsB,AACf,CAAC,CAAC,CAAA,CAAI,EAAO,EAAP,CAEb,EAAI,CAAD,GAAK,CAAC,CAFsB,EAG/B,EAAU,AAgR2D,EAjRrD,CAAC,MAiRoD,CAAA,EAAA,EAAA,EAhR3C,OAiR2C,EAAA,AADA,EACA,OAjR1C,EAiR0C,AAjRpC,CAiRoC,CAjRtC,EAGjC,CAAC,EAAE,AACL,CAEA,GANgD,CAAC,GAM1C,CACT,EADY,AAgJ+D,EAAA,GACA,GAAA,EAAA,IADA,AACA,CAAA,AADA,CACA,CAAA,AADA,EACA,CAtM3E,SAAmC,AAA1B,CAA8B,CAAU,CAAK,EAA0B,AAC9E,IAAM,EAAW,EAAwB,EAqMgC,CArM7B,CAAC,GAC7C,CADiD,CAAC,GADlB,GAEf,IAAb,EADoC,AACZ,GAAF,GAAtB,AAA+B,GAEnC,EAFwC,EAEnC,IAAI,EAAI,CAAK,CAAC,CAAC,CAAC,CAAE,CAAA,EAAK,CAAK,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,CAAE,AACzC,GAAoB,SAAS,AAAzB,CAAQ,CAAmB,AAAlB,CAAC,CAAA,CACZ,OAAO,EAIX,GAJgB,IAIT,EACT,EADa,AA4L8D,EAAA,CAAA,CAAA,CAAA,CACA,CADA,QAIA,IAAA,EAAA,AAjP3E,GAiP2E,IAAA,EAjPb,AAArD,CAAwD,CAAK,CAAG,CAAK,CAAQ,EAAtE,AAA8E,AAC5F,IAAM,EAAQ,EAAI,CAAD,EAAI,CAAC,GAAG,CAAC,MAE1B,KAAc,IAAV,GACF,EAAI,AADF,AAAmB,CAClB,CADoB,CAChB,CAAC,EAAK,CAAF,EACJ,GAGF,CACT,CALyB,CA6OkD,AA7OjD,EAIZ,AAyO6D,AA5OxD,EA4OwD,CAAA,CAAA,CAAA,CACA,EAAA,IAAA,CAhJ3E,AAgJ2E,QADA,CA/IlE,AAAwB,AAgJ0C,CAhJtC,CAAU,CAAM,CAAmB,CAAM,EAAyC,AACrH,OA+IyE,AA/IlE,IAAI,KADmB,EACZ,CAAC,CAAC,EAAS,KAAF,AAIzB,EAJkC,EAI5B,EAAS6D,CAJwB,CAIxBA,EAAT,cAAyB,CAAC,GAC1B,CAD8B,CAAC,AAClBC,EAAAA,MAAb,SAA4B,CAAC,CACjC,KAAK,CAAE,CACb,CAAK,CAAC,CAKF,EANe,OAMN,IACP,EAAO,IAAD,GAAQ,EAAE,CAChB,GACF,CAGA,GANgC,AAEvB,CAIL,CAJO,CAIM,AANwB,CAMvB,CACd,IACE,EAFF,AAEU,CAAM,CADI,AACH,CADI,AACnB,CAAiC,CACvC,MAFI,EAEU,IAAV,EADkC,AACb,GAArB,AAAmB,SAErB,IAGF,IAAI,EAAa,CAAK,CAAC,CAAC,CAAC,CACrB,EAAW,CAAK,AADhB,CACiB,CAAC,CAAC,CAIvB,CARyB,AAIrB,EAJuB,MAQlB,EAAc,CAAC,EAAe,AAErC,EAAiC,GAAG,CAAC,EAAM,AAFvB,CAEwB,CAAC,AAAJ,CACzCnjB,EAAAA,WAAA,EAAeE,EAAAA,IADiB,CACZ,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,EAAK,EAAD,OAAU,EAAE,CAAC,CAAC,CAAA,CAAA,CACA,EAAA,KAAA,EAAA,CAAA,AACA,EAAA,QAAA,UAAA,EAAA,CACA,GACA,CAIA,EAAA,EAAA,CAAA,CAAA,MAAA,CAAA,GACA,EAAA,CANA,CAMA,CAAA,AANA,KAMA,AADA,CAAA,CACA,CAAA,GACA,EAAA,EAAA,CAAA,KADA,AACA,CADA,CACA,CAAA,GAEA,EAAA,EAAA,CAAA,KAAA,CAAA,CAAA,IAAA,AAEA,IAJA,AAEA,CAFA,EAIA,EAAA,CAAA,CAAA,EAAA,CAGA,CAAA,CAAA,CAHA,CAGA,CAAAiB,EAAAA,KAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAEA,GAAA,GAAA,CACA,GAAA,AADA,CAAA,GACA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAEA,CAFA,CAEA,KAAA,EAAA,CAAA,AACA,EAAA,QAAA,UAAA,EAAA,CACA,MACA,CAEA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CACA,GAAA,SAAA,EADA,AACA,CAEA,EAAA,AAFA,KAEA,EAAA,CAAA,AACA,EAAA,QAAA,UAAA,EAAA,CACA,MACA,CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,CADA,AACA,CAAA,CAAA,CAAA,AACA,CACA,CAAA,AAFA,CAEA,AACA,CAAA,CAAA,AACA,EAsEA,EAAA,EAAA,GACA,CASA,AAVA,CAAA,CAAA,CAAA,AAIA,MAAA,OAAA,CAAA,GAAA,CAAA,GAAA,KAAA,CAAA,KACAnB,CADA,CACAA,AADA,CAAA,UACA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,mEAAA,CAAA,AACA,CAAA,CAAA,CAIA,EAAA,CAAA,EAAA,EAAA,GAAA,EAAA,IAAA,EAAA,MAAA,CACA,CADA,GACA,IAAA,KAAA,EAAA,EAAA,CAAA,MAAA,CAAA,MAAA,CAAA,AACA,EAAA,OAAA,GAAA,EAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,EACA,AADA,AAWA,SAAA,AACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,IAfA,AAeA,KAAA,EAEA,EAPA,CAOA,CAFA,CAAA,AAEA,GAAA,KAAA,OAAA,IAAA,EAAA,GAAA,SAAA,EAAA,QAAA,EAAA,OAAA,EAAA,GAAA,GAAA,CAAA,CACA,IAAA,EAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,CACA,QAAA,IAAA,EACA,GADA,EAAA,CAAA,GAIA,EAAA,EAAA,GAAA,GAAA,CAAA,EAAA,EAAA,CAAA,CAAA,AACA,CAEA,EA1BA,EAAA,CAuBA,CAAA,CAAA,IAvBA,GAAA,CAAA,MAAA,CAAA,EAAA,GAKA,OAAA,AALA,CAMA,CA0BA,GA3BA,MA2BA,EAhCA,AAgCA,CAAA,AAhCA,EAgCA,AACA,OAAA,EAAA,EADA,CACA,QAAA,CACA,OAAA,EAAA,GAAA,SAAA,CACA,OAAA,EAAA,GAAA,SAAA,AACA,CAKA,SAAA,EACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAIA,MARA,EAQA,IAAA,EAAA,GAAA,GAAA,OAAA,IAAA,EAAA,CACAF,EAAAA,AADA,GAAA,QACA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,kEAAA,CAAA,CACA,MACA,CAEA,EAAA,GAAA,QAAA,CAAA,EAAA,CACA,IAAA,IAAA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAGA,AAHA,CAAA,GAGA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,QAAA,IAAA,EAAA,CACA,CADA,CAAA,AACA,GACAF,EADA,AACAA,CADA,QAAA,EACA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,CAAA,oBAAA,EAAA,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,KAAA,CAAA,CAAA,CAAA,CACA,MACA,CAEA,EAAA,GAAA,QAAA,CAAA,IAAA,CAAA,EACA,CAIA,CALA,CAAA,CAKA,SAAA,CAAA,CAAA,EAAA,CAAA,CACA,EAAA,AADA,GAEAF,EAAAA,AADA,CAAA,QAAA,EACA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,CAAA,oBAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,GAAA,KAAA,CAAA,CAAA,CAAA,CACA,MACA,CAEA,EAAA,GAAA,SAAA,CAAA,CAAA,CAAA,EAAA,CAEA,GAFA,CAEA,EAAA,AAsBA,CAtBA,CAAA,EAAA,AAsBA,AArBA,EADA,AACA,CAqBA,EArBA,KADA,CAAA,CAAA,EAsBA,AArBA,CAAA,EAAA,CACA,IAAA,IAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAGA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,QAAA,IAAA,EACA,EADA,CAAA,EAAA,CAGA,EAAA,GAAA,SAAA,CAAA,IAAA,CAAA,EACA,CACA,CAFA,AAQA,CARA,QAQA,EAAA,CAAA,CAAA,CAAA,EAAA,AACA,OADA,AACA,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,AACA,CAWA,IAAA,EAAA,CAAA,CAZA,CAAA,AAYA,CAAA,CAAA,GAAA,CACA,CADA,GACA,OAAA,EADA,EACA,CAAA,CAAA,GAAA,EAAA,YAAA,CAAA,EAAA,KAAA,YAAA,CAxY1C,CAAC,CAwYyC,AAEA,MAAA,CACA,IAAA,CA1YlD,CA0YkD,WAHA,EAvYpC,CA2YoC,EADA,UACA,CAAA,GACA,EAAA,AADA,EACA,AADA,EAGA,CAFA,AAEA,AACA,CAAA,CAAA,AAKA,EAAAsM,EAAAA,GARA,CAAA,aAQA,CAAA,CAAA,uBAAA,IAhZ7B,uICb1C,qBAAqB,8DAKlB,eAAe,EACpB,QAA8B,IAA1B,EACF,CAFmC,EACE,AACjC,CAFoD,AAKtD,CAJqC,CAIb,CAAC,CAAC,CADR,MAAM,EACW,AADJ,CAAgB,CAAC,AAHhD,GAG+B,GAC/B,CADgD,EACZ,GAAG,EAAE,AAC3C,CAAE,KAAM,CACN,GAAwB,CAC1B,CAGF,GAJiC,IAI1B,CACT,QALM,YAIwB,ACkDvB,SAAS,EAAY,CAAI,EAA+B,AAC7D,MADyB,MACT,IAAT,IAAA,AAAuC,CAAA,GAAhB,CAAd,CAAmB,EAAD,IAAC,EAAgB,AAAS,GAAA,MAAgB,gBAAT,CAAS,CAC9E,AAD2F,CAAC,CAAvB,kFA1DlC,uDAU5B,SAAS,AACd,CAAY,CACZ,CAAM,CACN,CAAO,EAEP,IAAI,EAAQ,CAAC,CACT,CADA,CAL2B,AAMZ,CAAC,CAChB,EAAkB,CAAC,CAyBvB,IA1BI,GAGJ,IAFI,OAEO,CAAC,KACc,CADR,AACS,EAAE,CAAvB,EACE,EAAQ,GAAR,CAEF,EADA,GAAgB,CAAC,CACV,AAHP,CAMI,AAHI,AAFc,EAAE,AAKL,IAJnB,CAIwB,EAAE,CACxB,EAJkB,AAGhB,AACa,CAJI,IAIJ,CAAK,CAEtB,EAAkB,CAFhB,EAOA,AAAoB,CAAC,EAAE,CAF3B,IAAmB,CAHa,AAGZ,CAHlB,CAMA,IADE,AAKN,EAAQ,AAJE,CAID,AACX,CAAC,AARG,AAGU,CAKX,AADD,IACM,CAAC,AAAC,KAAK,EAAE,CAEV,KACL,CADW,EACF,CAAC,AACZ,CADE,AACD,AACH,uBAiBO,SAAS,AAAmB,CAAC,CAAsB,CAAC,EAA+B,AACxF,OAAO,CAAA,GAAM,CAAA,CADmB,CACd,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,CAAA,OAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,AACA,CADA,MAAA,sJC/DnB,EAAqB,gBAArB,+nIAEb,SAAS,EAAI,CAAD,EAAI,CAAI,EAAmB,AACrCtM,EAAAA,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAG,EACnC,CAKO,CANgC,CAAC,EAM3B,EAAiCsM,EAAAA,iBAAiB,CAAE,CAC/D,EAAuD,CAAA,CAAE,GAD9C,CAoDX,UAnDkB,KAmDH,IAEb,IAAM,EAAY,IAFS,EAEH,CAFqB,AAEvC,CAAyB,CAAgB,CAAC,GAAjB,IAC3B,CAAC,EAAU,GAAG,EAAE,EAAN,AAAQ,AACpB,EAAU,IAAI,CAAC,CAAC,CAAP,AAAQ,AAErB,CA2B6F,MAAA,CACA,IAAA,CAAA,qBAAA,CACA,MAAA,KAAA,CAAA,CAAA,EAAA,AAGA,GAAA,CAFA,AAEA,EAFA,IAAA,MAAA,CAEA,CAFA,CAEA,qBAAA,CACA,CADA,MAIA,GAAA,MAAA+W,EAAAA,iBAAA,EAAA,CAAA,YACArjB,EAAAA,KAAA,CAAA,IAAA,CAAA,oFAAA,CAAA,CAIA,IAAA,EAAA,CACA,GAAA,CADA,AACA,CACA,KAAA,CAAAA,EAAAA,KAAA,CAAA,SAAA,EACA,AADA,CACA,CAEA,IAAA,IAAA,CACA,KADA,AAEA,CADA,CADA,CAEA,OA7CrF,EAAS,IAAIojB,AAAb,EAAaA,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,mCAAmC,EAAE,EAAmB,CAAA,CAAA,CAAA,CACA,UAAA,CA6CA,CA9CD,AACC,CAEA,KA2CA,CAAA,AA7CA,EAEA,CAAA,EAAA,CACA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA,GAAA,CAAA,YAAA,MAAA,CAAA,CAAA,AACA,CAAA,CAAA,CAEA,IAHA,GAGA,CAAA,EAAA,CAAA,MAAA,CAAA,KAEA,CAFA,CAEA,IAAA,KAAA,EAAA,AACA,CAAA,CAAA,CAEA,EAAA,IAAA,CAAA,OAAA,CAAA,GAAA,CACA,EAAA,CAAA,CADA,YACA,CAAA,EACA,CADA,AACA,CADA,AACA,CAEA,EAAA,IAAA,CAAA,MAAA,CAAA,IAAA,AACA,EAAA,CAAA,EADA,UACA,CAAA,EACA,CAAA,CAAA,AADA,CAAA,AAIA,EAAA,IAAA,CAAA,EAAA,AA0BA,CAAA,MAAA,CAAA,CAAA,CACApjB,EAAAA,KAAA,CAAA,KAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,AACA,CACA,CAAA,CAAA,AACA,CAAA,GACAA,CADA,CACAA,KAAA,CAAA,KAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,AACA,CAAA,CAEA,CAAA,cACA,CAAA,EAAA,GAAA,CAlF7F,AAmF6F,AADA,EAAA,GAAA,IAlFpF,CAAyB,CAAK,CAAS,CAAI,EAAoB,AACtE,GACE,EAAK,EAAD,EAiFqF,SAnF5D,IAExB,EAC6B,QAAA,EAAlC,OAAO,EAAK,EAAD,eAAC,EACZmjB,EAAAA,mBAAA,IAAuB,EAAK,EAAD,eAAC,EAC5B,KAAK,CAAC,OAAO,CAAC,EAAK,EAAD,eAAkB,CAACA,EAAAA,mBAAmB,CAAC,EACzD,CACA,IAAK,IAAM,KAAa,EAAM,EAAnB,CAAkB,MAAU,EAAE,MAAA,EAAU,EAAE,CAAE,CACrD,AAxCN,SAAS,AAA6B,CAAS,CAAa,CAAc,EAGxE,AAHkG,IAG5F,EAAS,CAAC,EAAU,KAqCM,EArCP,GAAW,EAAE,EAHH,IAGG,EAAU,EAAA,AAAE,EAAE,MAAM,CAAA,AAAC,GAAS,AAAmB,EAA5B,GAAc,QAA2B,CAAC,IAA3B,QAAA,EAE1E,IAAK,IAAI,CAAA,CAAI,CAAC,CAAE,CAAA,CAAI,EAAO,IAAD,EAAO,CAAE,CAAC,EAAE,CAAE,CAEtC,IAAM,EAAa,EAAO,IAAD,EAAC,CAAS,CAAA,CAAI,CAAC,CAElC,EAAsB,CAAc,CAAC,CAAC,CAAC,CACvC,EAAQ,CAAM,CAAC,CAAf,CAA0B,CAEhC,GAAI,CAAC,CAHC,EACyB,AAEjB,CAAC,EAEb,WAK6B,IAA7B,EAPgC,AAOZ,EAPc,CAOL,CAAT,IAEF,IAAjB,CAAiB,CAAX,GAFY,AAEb,GAAC,GAAiE,IAA7C,EAAmB,gBAAD,KAAC,AAA0B,CAAI,CAAA,CAE3ED,EADT,AACSA,kBAAkB,CAAC,EAAM,GAAD,KAAS,CAAE,EAAoB,GADhE,KACwE,GAChE,AAIF,GAAM,EAAD,CALoD,CAKnD,CAAO,EAAoB,IAAA,AAAI,CACvC,CACF,EAUmC,EAAW,EAAK,EAAD,GAZd,AAYQ,YAAwB,CAACC,EAAAA,mBAAmB,CAAC,CAAC,CAGtF,EAAK,EAAD,eAAkB,CAACA,EAAAA,mBAAmB,CAAA,MAAI,CAChD,CAEA,OAHyD,AAGlD,EACT,EAoE6F,CArE/E,CAqE+E,EAEA,CAFA,AAEA,AACA,CAHA,AAGA,CAHA,sMCxHxF,SAAS,EAAW,CAAM,EAAgD,AAC/E,KADwB,GACT,IAAX,EAKJ,GALwB,CAApB,CAAsB,EAKnB,EAAO,IAAD,CAAM,CAAC,CAAA,EAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAK,CAAF,GAAY,CAAL,AAAM,EAAA,EAAA,CAAA,EAAA,EAAA,GAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,GAAA,CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,AACA,CAMA,SAAA,EAAA,CAAA,CAAA,CAAA,EACA,AADA,MAAA,EACA,IAAA,EAIA,GAJA,EAAA,EAIA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,AACA,CADA,AAkBA,GAlBA,MAkBA,EAAA,CAAA,EAAA,AAEA,IAAA,EAAA,EAAA,CAEA,EAAA,EAJA,AAEA,CAGA,EADA,OACA,CADA,CACA,CAAA,EAAA,AACA,EAAA,EAAA,CACA,IAGA,AAJA,CADA,CAKA,GACA,CADA,CACA,GACA,CALA,EAIA,AAJA,CAIA,CADA,GAKA,EAAA,IAAA,CAAA,EAAA,CAiBA,CAAA,GAAA,CAfA,OAFA,CAAA,CAEA,CAAA,EAAA,AACA,AADA,EACA,IAAA,CAAA,EAAA,AACA,CADA,CAcA,IAAA,CAXA,SAAA,CAAA,EAAA,AACA,CADA,GACA,EAAA,EAAA,EAAA,CAAA,EAAA,EAAA,EAEA,GAAA,CACA,EAAA,EACA,CAAA,CADA,EAAA,CAAA,AAHA,CAIA,CAEA,EAAA,EACA,CACA,CAEA,CAAA,AACA,CALA,AAgBA,CAhBA,KAgBA,CAhBA,CAkBA,UAFA,CAEA,CAFA,AAEA,CAAA,CAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAEA,CAEA,MAJA,OAIA,MAAA,CAAA,CAAA,CAAA,QACA,GAKA,IAAA,EAAA,AALA,EAAA,CAKA,CADA,MAAA,AACA,EAAA,AADA,CAAA,CAAA,GAAA,IAAA,EACA,OAAA,CACA,CAGA,AAJA,CAAA,kBAIA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,QAAA,CAAA,OAAA,EAAA,CAEA,IAAA,CAAA,QAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,IACA,CADA,CACA,EAAA,CADA,EACA,EAEA,CAFA,GAEA,CAAA,QAAA,CAAA,IAAA,CAAA,iBAAA,CAAA,AACA,CAAA,CAAA,AACA,CAAA,CAAA,CAEA,IAAA,CAAA,QAAA,CAAA,IAAA,CAAA,iBAAA,CAAA,CACA,IAAA,CAAA,QAAA,CAAA,IAAA,CAAA,+BAAA,CAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,QAAA,CAAA,CAAA,AACA,CAEA,oBAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,QAAA,CAAA,IAAA,CAAA,+BAAA,CAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,QAAA,CAAA,CAAA,AACA,CAGA,iBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,cAAA,CAAA,EAAA,IACA,CADA,CAAA,CACA,EADA,GACA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,GAEA,IAAA,CAFA,CAAA,EAEA,IAAA,CAAA,AAFA,EAGA,GADA,AACA,CADA,CACA,EAAA,GAAA,EAAA,QAAA,EAAA,OAAA,GAAA,EAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CACA,IAAA,EAAA,EAAA,EAAA,GAAA,CAAA,QAAA,CACA,EAAA,CAAA,EAAA,CAAA,GAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CACA,CADA,AACA,CADA,CAAA,GACA,GAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,QAAA,GAAA,EAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CACA,IAAA,EAAA,EAAA,EAAA,GAAA,CAAA,QAAA,CACA,EAAA,CAAA,EAAA,CAAA,GAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CACA,CAAA,AADA,CAAA,CAAA,GACA,CAAA,CAAA,EAAA,GAAA,EAAA,AACA,EAAA,CAAA,EAAA,CAAA,GAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,EAIA,AAJA,CAAA,CAIA,AAJA,CAIA,CAAA,CAAA,AACA,CAAA,CAAA,AACA,CAKA,cAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,QAAA,CAAA,IAAA,CACA,uBAAA,CACA,CACA,QAAA,GACA,aAAA,EAAA,CACA,CAAA,CACA,CAFA,AAEA,EAAA,CAAA,IACA,CADA,CAEA,CADA,CACA,CADA,CACA,AAFA,AAEA,CAAA,CAEA,EAAA,EAAA,IAAA,EAAA,CAAA,AAEA,CAAA,CAEA,CAKA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,cAAA,CAAA,EAAA,IACA,CADA,AACA,CADA,AACA,EAAA,CADA,AACA,CAAA,CACA,MAAA,CAAA,CAAA,EAAA,CAAA,OAAA,KAAA,IAAA,EAAA,CAAA,KAAA,CAAA,QAAA,CAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EACA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,QAAA,CAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EACA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAEA,EAAA,EAAA,AACA,CAAA,CAAA,AACA,AAFA,CAOA,AAPA,aAOA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,cAAA,CAAA,EAAA,IACA,CAAA,AADA,CACA,AADA,EACA,CAAA,AADA,CACA,CACA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EACA,MAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,GACA,CADA,AACA,CAAA,EAAA,CAAA,EACA,CADA,EACA,AACA,CAAA,CAAA,EAAA,AAEA,EAAA,EAAA,AACA,CAAA,CADA,AACA,AACA,CAFA,AAOA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,GAAA,EAAA,CACA,OAAA,GAAA,EAAA,EAAA,GAAA,EAAA,IACA,IAAA,EAAA,EAAA,CAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,KAAA,CACA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAEA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,KAAA,CAEA,aAAA,GAAA,EAAA,EAAA,GAAA,EAAA,UAAA,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,IAAA,CACA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CACA,WAAA,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,IAAA,GACA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,aAAA,CAAA,EAIA,EAAA,EACA,AADA,CAEA,CAFA,AAoNA,CApNA,GAoNA,EAAA7W,EAAAA,iBAAA,CA3MA,AA2MA,CA1MA,EAAA,CAAA,CAAA,CACA,CAyMA,CA1MA,GAGA,IACA,EAyDA,EA1DA,EAFA,AAEA,IAAA6S,CACA,CADAA,EA0DA,CA6IA,CAvMA,EAAA,CAAA,EAAA,CAAA,CAEA,EAAA,GA0DA,EA1DA,WAAA,EA0DA,IACA,CADA,GAAA,AACA,EAAApb,EAAAA,EAAA,OAAA,EAAA,CACA,EAAA,GAAA,GAAA,KAAA,EAAA,EAAA,CAEA,GAAA,CAAA,EAAA,UAAA,WAAA,EAAA,AAQA,GAFA2c,CAEA,CAFAA,UAAA,CAAA,EAAA,CAEA,OAAA,KACA1gB,EAAAA,KAAA,CAAA,GAAA,CAAA,oEAAA,CAAA,CAIA,GAAA,MAAAqjB,EAAAA,iBAAA,EAAA,CAAA,YACArjB,EAAAA,KAAA,CAAA,IAAA,CAAA,oFAAA,CAAA,CAIA,GAAA,CACA,IAAA,EAAA,KAAA,CAAA,EAAA,MAAA,CAAA,GAAA,AAyDA,GAAA,IAAA,CAAA,CAAA,CAAA,EAzDA,CAAA,CAyDA,eAAA,CAQA,GANA,EAAA,KAAA,cAAA,CACA,CAAA,EAAA,IACA,CA3DA,CACA,EACA,AAwDA,CAxDA,MAAA,CAAA,AAyDA,CA1DA,OACA,CAAA,MAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CACA,KAEA,GAFA,AAEA,WAAA,GAAA,GAAA,GAAA,eAAA,GAAA,EAAA,IAAA,QACA,IAIA,IAJA,EAAA,AAOA,IAAA,CAHA,CAGA,EAAA,CAHA,CAGA,EAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAEA,QAAA,GAAA,EAAA,IAAA,OAAA,CACA,IAIA,GAAA,CAJA,EAAA,EAIA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,IACA,EADA,AACA,GAAA,CADA,AACA,EAAA,GACA,CAFA,AACA,EAAA,AAEA,CAFA,AAEA,CAAA,CAIA,EANA,AACA,EAKA,AALA,IAKA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,GAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAEA,GAAA,YAAA,CAAA,cAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA,EAAA,EAAA,IAAA,CAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAGA,EAAA,QAAA,GAAA,CAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,QAAA,CAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAEA,GAAA,GAFA,AAEA,IAFA,EAEA,CAAA,QAAA,QAAA,EACA,EAAA,CAAA,GACA,CAFA,AAEA,CADA,AACA,CAAA,AAFA,CAEA,CAAA,CADA,AACA,QAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,AACA,CAAA,CAAA,EADA,CAAA,EAEA,CACA,IAAA,EAAA,EAAA,MAAA,CAAA,CAAA,OAAA,CACA,EAAA,CAAA,EACA,EAAA,CADA,IACA,YAAA,CAAA,EAAA,IAAA,AACA,CAAA,CAAA,CAAA,CADA,AACA,CAAA,CAAA,QAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CACA,CADA,CACA,EAAA,AACA,CAAA,CAAA,CAEA,CACA,AAJA,CAAA,AAMA,EAAA,EAAA,CAAA,CACA,CAAA,CAMA,EAAA,WAAA,CAAA,EAAA,GACA,GAGA,EAJA,AAIA,CAJA,AAKA,IAJA,AAIA,EAAA,CADA,AACA,CAAA,KAAA,iBAAA,EAAA,EAAA,CAEA,EAAAsjB,EAAAA,OAAA,UAAA,CACA,EACA,CADA,IAEAtjB,CADA,CACAA,KAAA,CAAA,GAAA,CAAA,oCAAA,CAAA,CACA,EAAA,KAAA,eAAA,EAAA,EACA,CAAA,CADA,AACA,AACA,CAFA,GAGAA,EAAAA,CADA,IAAA,AACA,CAAA,GAAA,CACA,CAAA,kFAAA,EAAA,EAAA,KAAA,IAAA,CAAA,EAEA,EAAA,KAAA,eAAA,EAAA,EACA,CAAA,CAEA,CAHA,AAKA,CALA,EAKA,CACA,CAAA,EADA,IACA,EAAA,CACAA,EADA,AACAA,EAFA,GAEA,CAAA,GAAA,CAAA,mDAAA,CAAA,EACA,EACA,CAFA,AAIA,CAJA,KAIA,CACA,IAAA,CAtLA,CAsLA,eAtLA,CAuLA,AADA,SACA,GAAA,AACA,EAAA,GACA,CAAA,CADA,AAEA,EAFA,GAAA,CAEA,YAAA,CAAA,CAAA,EAAA,AAGA,GAFA,MAAA,EAEA,EACA,CAlIA,IAAA,GA+HA,CA/HA,KAkIA,AAlIA,EAAA,AAiIA,EAjIA,AAiIA,CAjIA,KAkIA,CAlIA,EAAA,MAAA,EAAA,EAAA,CAAA,CACA,AAhDA,SAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,EAAA,MA+CA,AA/CA,CAAA,GAAA,EAAA,GADA,GACA,CAAA,CAEA,QAAA,IAAA,EACA,EADA,CAAA,EAAA,EAMA,IAAA,EAAA,EAAA,MAAA,CAAA,GAAA,AAEA,CAFA,CAAA,MAEA,IAAA,EACA,GADA,EAAA,EAMA,EANA,EAMA,EAAA,CAAA,EAAA,CAAA,MAAA,GAAA,EAAA,MAAA,EAAA,EAAA,EAAA,MAAA,CAAA,GAAA,EAAA,WAAA,CAAA,EAAA,EAAA,GAAA,KAAA,EAEA,IAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAEA,IAAA,EAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAEA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,CAAA,CAAA,EAAA,CAGA,GAAA,CAAA,CAJA,CACA,CAAA,AAGA,CAAA,EACA,KAKA,EANA,OAMA,CAAA,EANA,AAMA,EANA,EAMA,IAEA,IAAA,CAAA,CAAA,GAFA,GAEA,GAAA,EAAA,EAAA,EAAA,KAAA,gBAAA,CAAA,CAAA,CAEAkjB,EADA,AACAA,kBAAA,CAAA,EAAA,QAAA,CAAA,EAAA,GADA,KACA,GACA,CAIA,EAAA,GALA,CAKA,CAAA,EAAA,IAAA,CACA,CACA,EAIA,GAiIA,CAAA,AAGA,KA1IA,AAMA,CAAA,CAoIA,CACA,CAAA,CAEA,EAHA,mBAGA,GAAA,EACA,EAAA,IAAA,MAAA,gBAEA,IACA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,AAEA,CAAA,AACA,CAAA,CAAA,AAJA,GAAA,iPChaV,CAAC,EAA4C,CAAA,CAAE,GAC/EK,AADwC,EAAyD,AACjGA,YAAY,CAAC,KAAA,CAAQ,EAAA,CAAKC,EAAAA,6BAA6B,CAAC,GAAWC,EAAAA,EAAJ,CAAA,2BAAkC,CAAC,OAAO,CAAC,iBCM/G,yBAAyB,sEATtB,SAAS,IACd,CADmB,EACf,CAD2B,AAG7B,OAAO,AAAiC,AAA0B,OAApD,EAAiC,EAAO,AAAuB,EAA/D,EAAuC,GACvD,AADwD,CACtD,KAAM,CACN,OAAO,CACT,CACF,GAFgB,UAFa,WAAA,YAWtB,SAAS,QACd,CAAI,KAAK,CAIL/C,CAJO,CAIPA,CAJS,IADuB,GAAY,EAK5C,EAAc,EAAA,EAAsB,EAAA,GAAfA,EAAAA,UAAA,EAAqBC,EAAAA,UAAA,EAAc,CAAC,CAAA,CAAqB,EAAA,GAAfD,EAAAA,UAAA,EAAqBC,EAAAA,UAAA,EAAc,EAAE,CAAC,CAAE,CAItG,IACH,GAA4B,EAE5Bhe,EAFgC,AAEhCA,cAAc,AAHc,CAGb,CAHe,EAC9B,EAIE,CAFmB,MAEZ,CAAC,IAAI,CACV,CAAC,gCAAgC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gPAAgP,CAAC,CAE9S,CAAC,CAAC,GAGG,GACT,EADc,sBC/BV,WAAW,kGAUT,EAAsD,IAArC,OAAO,CAAxB,wBAAwB,CAA4C,CAAA,CAAC,CAAI,yBAAyB,CA6FxG,SAAS,IAwBP,IAAM,EAxEA,CAgDY,GA3CZ,AA2C2B,EA1C3B,EA8CN,CApDM,AAKK,AAmEL,CAlEA,EANY,GAiDd,AAAC,GACH,CAlDuB,EATlB,CACL,GAAG,CAAc,AAyDH,CA0Bd,CA1BgB,CAChB,CAyBG,EAzBW,CAUlB,AAYsB,QAGJ,CAfT,EACP,EAX8B,CAW1B,AAW8B,CAVhC,CAUkC,GAV5B,EAAWogB,EAAAA,AAFE,GAAgB,CAE7B,AAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAE,cAAc,CAAC,CAGpD,OAFoB,AAEb,IAFiB,CAAC,KAAK,CAACc,AAEb,EAFaA,YAAY,CAAC,EAAU,MAAF,AAAQ,CAAC,CAAA,AAG/D,CAAE,KAAM,CACN,MAAO,CAAA,CAAE,AACX,CACF,KAMmB,YAAY,CAC3B,GAAG,EAAY,SAAD,MAAgB,CAlF9B,GAAIH,EAAAA,KAAK,EAAC,GAAI,CAMS,EAAA,CAAA,CAAC,IAAI,EAAE,KAAA,EAAS,EAAE,CACrC,AAP+B,EAOvB,AApBhB,AAawC,GAOhC,MApBC,EACP,GAAI,CACF,KAkBgC,EAlBzB,AAkB2B,AAlBX,MAAM,CAFJ,AAEX,AAAgB,CAAf,EAFuB,CAEJ,CAAC,CAApB,CAAkC,CAAA,CACnD,CAAE,EAD0C,AAAqC,CAApC,CAAsC,CAC3E,CACN,EAF2C,EAAM,EAE1C,EAAE,AACX,CACF,MAkB4B,CAAA,CAAE,GACf,IAAI,GAAG,CAEpB,CAF8B,CAExB,GAAD,IAAQ,CAAA,AAAC,IACZ,IADoB,AAChB,EAAM,CAAN,CAGE,EAAQ,AAHA,GAGR,EACJ,CADuC,GACjC,EAAO,EAAP,AAGN,CAHgB,EAGZ,CAAC,CAFL,EAAMC,AAED,CAFL,CAAMA,OAAO,CAAC,EAAI,CAAC,EAEP,IAAA,AAAS,GAAO,AAAP,EAAY,EAAD,CAAI,CAAC,GACnC,CADuC,CAAC,EAAE,GACnC,AAET,GAA6B,CAAC,CAA1B,CAA4B,CAAlB,EAFI,KAEG,AAAR,CAAS,GAAG,AACvB,CADuB,MAChB,IAGT,CAHc,EAAE,CAGV,EAAUZ,EAAAA,IAAI,CAAC,EAAM,EAAF,YAAgB,CAAC,CAG1C,GAFA,EAAK,EAAD,CAAI,CAAC,GAEL,CAFS,AAERa,CAFS,CAETA,UAAU,CAAC,GACd,IADqB,CAAC,EAAE,AACjB,IAGT,CAHc,EAAE,AAGZ,CACF,IAAM,EAAO,EAAP,EAAW,CAAC,KAAK,CAACC,EAAAA,YAAY,CAAC,EAAS,KAAF,CAAQ,CAAC,EAIrD,CAAK,CAAC,EAAK,EAAD,EAAK,CAAA,CAAI,EAAK,EAAD,KAAQ,AACjC,CAAE,KAAM,CAER,CACF,CAAC,CAED,GACF,CAAC,CADM,AACL,CAEK,CAHE,EA/CiC,CAAA,CAkD9B,AAlDgC,AAC9C,CAD+C,AAwDf,AAvD7B,CAuD+B,CAEzB,CACT,UADoB,YA/FS,IACpB,EACL,AAF+B,IAE3B,CAZiB,CAYf,QAZwB,QAYR,MACT,AAAb,IACE,CADgB,CACV,CADY,EACb,GADK,CACJ,CAAU,CACd,GAAG,EAAM,GAAD,IAAQ,CAChB,GAAG,GAAa,AACxB,CAAO,CAEM,GAET,EAFc,CAHI,OAKR,CAAE,EAChB,CAAG,QADwB,4HCrBpB,SAAS,AAAkB,CAAK,EAAiB,AACtDlhB,EAAAA,YAD+B,EACjB,CAAC,KAEb,CAFmB,MAEZ,CAAC,KAAK,CAAC,EAChB,CAAC,CAAC,CAEF,AAHqB,CAAC,GAGhB,EAASoB,EAAAA,EAAT,OAAkB,EAAc,CAEtC,GAAI,AAAW,MAAX,GAAoB,EAAE,CACxBjE,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CACjF,EAAA,CAAA,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CACtB,MACF,CAEA,IAAM,EAAU,EAAO,GAAjB,CAAgB,MAAW,EAAE,CAC7B,EACJ,GAAS,EADL,EACG,WAAE,EAAmB,EAAQ,KAAD,UAAC,CAAkB,CAAA,CAAI,EAAQ,KAAD,UAAC,CArBrC,EAqBuD,EACtF,AAtBmC,EAsB5B,IAAD,CAAM,CAAC,GAAS,IAAI,AAAN,CACjB,AADkB,AACnB,IACM,CAAC,CADA,AAFqG,EAIxGF,EAAAA,CAFiB,AACR,EAAE,QACXA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAEnG,EAAA,CAAA,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,AACxB,CAAC,CAAA,AACD,IACEF,EAAAA,GADO,QACPA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,EAC7B,CAAC,CAEL,CAHsC,CAAC,0ICI1B,EAAiCsM,EAAAA,iBAAiB,CAAC,CAAC,EAA+C,CAAA,CAAE,GAArG,AAA2D,CACtE,CADqH,GAC/G,EAAsB,CAC1B,oCAAoC,EAAE,EACtC,GAD2C,AACxC,CAAO,AACd,CAAG,CAED,MAAO,CACL,IAAI,CAZiB,CAYf,gBAAgB,IAZoB,CAa1C,KAAK,CAAC,CAAM,EAGLwX,AAHmB,EAGnBA,YAAY,EAAE,AAIb,EAAA,CAAA,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,CAAE,EAAiB,EAAQ,GAClE,CADgE,AAC/D,AACL,CAAG,AACH,CAAC,EAKM,IARsD,KAQ7C,EAAiB,AARwD,CAAC,AAQnD,CAAc,AARsC,CAQ/B,EAA4C,AAEtG,IAGI,EAHA,EAA4B,CAFF,EAG1B,EADiC,CACJ,AAEnB,EADV,GAA4B,AADM,EAIhC,CALc,CAKE,CAHe,CAGR,GAJR,CAIO,GAHR,EAGd,CAAiC,EAAE,CAEzC,OAAO,MAAM,CAAC,MAAM,CAClB,AAAC,IACC,CADI,GACA,EADkB,AACkBC,EAAAA,QAAxB,SAAyC,CAErD,EAAQ,KAAD,OAAa,CACtB,CADwB,CACT,EAAQ,KAAD,GAAtB,IAAmC,CAC1B,EAAc,WAAD,CAAa,EAAE,CACrC,EAAe,EAAc,QAA7B,GAA4B,CAAC,EAQ/B,IAAM,EAAoC,EAAA,CAAA,CAAC,OAAO,CAAC,SAAS,CAAC,EAAvD,GAA8B,AAAD,MAAO,QAAsC,CAAA,CAAuB,MAAM,CAAA,AAC3G,GAIsB,SAJV,qBAIU,GAAlB,CACZ,CADqB,IAAA,EAAD,AAES,6BAAA,EAD7B,CACY,CACZ,CADqB,GAAA,GAAD,AAEqC,IAA5C,EAA0B,MAA1B,OAA0B,EAG/B,MAAM,CAGF,EAAgC,EAAQ,KAAD,EAPnD,kBAOY,WAAwC,EADU,CAAC,CAC6B,EAD7D,EAGpB,EAyBC,IACE,GAEFjkB,EAAAA,CA9BgG,IAEjF,EAAE,IA0BC,AAElB,EAFoB,AAGlBE,AAhCiB,EAgCjBA,KAAK,AAJsB,CAIrB,CAJuB,GAInB,CACR,gGAAgG,EAEpG+jB,EAAAA,iBAAiB,CAAC,IACR,CADa,CAAC,EAgBxB,GAAoB,EACpB,EADwB,MAfG,EAAE,AAgBnB,CAAC,CADX,IAEO,CADU,GAGb,GAAmB,EACnB,EADuB,AACV,EAAY,GAHN,AAOvB,CAAC,CAjGK,AA0FmB,AAGS,CAAC,AAIhC,CALC,CACuB,AAAX,CA7FN,IA4Cd,AAqDc,CAAC,CArDF,AAqDE,CAAA,CApDf,GADkB,AACC,EAEfhgB,CAHJ,CACuB,AAEnBA,SAFJ,AAEa,EAAC,GAAM,GAClBsJ,EAAAA,CADwB,EAAE,aACV,CAAC,EAAO,CACtB,EADoB,eACH,CAAE,EACnB,GADwB,WACV,CAAE,CACd,KAAK,CAAE,OACrB,AAD4B,CACf,CACD,SAAS,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,SA0CG,sBA1C4B,AACnD,CAAa,AACb,CAAW,CAAC,CAGA,CAAC,GAAoB,IACvB,GAAmB,EACnB,EAAa,AADU,EADpB,EAyCT,CAAC,AAvCuB,CAAC,AAwCzB,CAAE,EAzCI,CACY,QAFwC,EA0C3C,AA1C6C,EA0C3C,CAAA,CAAM,CAE3B,CAFqB,uKCzIf,EAAmC,CACvC,CACE,IAAI,CAAE,MAFW,qBAEgB,AACrC,CAAG,CACD,CACE,IAAI,CAAE,YAAY,AACtB,CAAG,CACF,CAgBY,EAAkCf,EAAAA,iBAAiB,CAAC,AAdvB,CAAC,EAAgD,CAAA,CAAE,GAA3C,CAcrC,AAbX,CADgG,GAC1F,EAAoC,CACxC,CADQ,GACJ,CAAE,EAAQ,IAAA,CAAD,CAAS,GAYuE,GAZjE,CAC5B,MAAM,CAAE,CAAC,GAAG,KAAqB,EAAQ,KAAD,CAAC,EAAd,AAAwB,EAAtB,AAAwB,CAAC,AAAC,AAC3D,CAAG,CAED,MAAO,CACL,IAAI,CAlBiB,CAkBf,gBAAgB,KAlBqB,CAmB3C,KAAK,CAAC,CAAM,EAAE,AACN,EAAA,CAAA,CAAC,OAAO,CAAC,EAAE,CAAC,oBAAoB,CAAE,EAA4B,EAAQ,GAC9E,CAAC,AACL,AAFgF,AAAM,CAEnF,AACH,AAHuF,CAGtF,AAHuF,CAGvF,CAmCM,SAAS,EACd,CAAM,CACN,CAAO,CAxCgE,CA0CvE,OAAO,SAA8B,AAArB,CAA2B,CAAW,CAAO,CAJpB,CAIqC,MAlCtD,EA6ED,IA7EO,EA6ED,AA7E+C,CAkCxC,GA6C9B,EA3CJ,GAAIvI,EAAAA,SAAS,AA2CT,EA3CU,GAAM,EAClB,IADwB,EAAE,CAK5B,GAjBmB,CAiBf,CAAc,EAjBK,AAiBG,EAjBgB,GAiBjB,CAAC,EAjBsB,AAiBZ,EAjBgC,AAiBnD,AAAqB,CAhBlC,EAvBN,AAAI,AAAkB,OAuBhB,AAvBK,GAuBO,GAvBP,MAuC+B,IAvCG,EAuCG,CAhBd,AAgBe,CAhBd,AAvBc,CAuCE,CAvCA,CAAjB,EACzB,CAsBgC,AAtB9B,CAsB+B,EAvBR,CACnB,CAAE,EAAE,CAAE,OAAO,CAAE,MAAM,CAAC,GAAU,EAAE,CAAZ,AAAY,CAAG,CAO7C,CAAE,IAAI,CAHA,AAA0B,QAAA,SAAnB,EAAU,IAAA,CAAoB,EAArB,AAA+B,IAAA,CAAO,EAAR,AAAU,CAGtD,QAF8B,QAAA,EAA7B,OAAO,EAAU,OAAA,AAAD,CAFd,AAEsC,EAAU,IAFhD,GAE+C,AAAC,CAAU,MAAM,CAAC,EAEpE,CAAS,CAgBjB,EAlBkF,AAkB7E,CAlB8E,CAkB/E,EAAK,CAAA,AAAC,OAAA,CAVX,EAEA,AAQsB,WAVR,GAEd,EAQsC,AAVP,EAAV,IAAC,IAAA,EAAsBC,EAAAA,iBAAiB,CAAC,EAAU,IAAI,CAAE,EAAP,AAAe,IAAI,CAAL,CAAO,IAAI,CAAC,AAE5D,SAApB,AAAoB,EAAZ,KAAD,EAAC,EAAyBA,EAAAA,iBAAiB,CAAC,AAQpB,EAR8B,OAAD,AAQpB,AAR4B,CAQ9C,AAAmB,AAR6B,CAQ5B,CARoC,KAQjD,AARgD,EAAQ,CAAC,CAEtG,GAAe,IAsBlB,IAtBG,GAyBL,GAzBkC,CAyB5B,EAAwC,AAAjB,GAAlB,IAAyB,CAAU,KAAT,IAAA,CAAoB,OAAA,CAAU,OAAO,CAIpE,EACJ,GAA4B,GAA5B,KAA4B,EAAlB,GADN,IACa,EAAuB,EAA0C,EAAjE,EAAuB,eAA0C,MAAsB,EAM1G,CAJ0B,EACtB,AAAC,EAAE,CAAiBwN,CAH2F,CAG3FA,SAGP,KAHqB,CAAC,EAAoB,EAAE,CACzD,AAAC,EAAE,CAAiB,EAAE,CAAA,CAAE,CAEV,KAChBnE,AAJuD,CAGjC,CACtBA,gBAAgB,CAAC,EAAQ,CACvB,GADqB,cACJ,CAAE,EACnB,KAD0B,SACZ,CAAE,CACd,KAAK,CAAE,CAAE,yBAAyB,CAAE,EAAA,CAAM,OAC1C,CACV,CAAS,CACD,EAFO,OAEE,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,gCAAgC,AAChD,CAAS,AACT,CAAO,CAAC,AACJ,CAAC,CAAC,GAEc,EAOsB,EAPd,EAAQ,AAOU,AAPpB,EAOoD,EAPtC,CAAL,AAAM,EAUrC,kCAAA,GACA,8DAAA,GACA,gEAAA,GACA,0BAGW,MAAM,EAAE,CAAjB,EACF1K,EADE,AACFA,CAJwC,aAI1B,CAAC,KACb,CADmB,MACZ,CAAC,IAAI,CAAC,GACb,OAAO,CAAC,KAAK,AADgB,CAAC,AAChB,GAA4B,QAAA,EAAlB,OAAO,GAAuB,OAAA,GAAW,EAAS,EAAO,IAAD,CAAC,CAAQ,EAC3F,CAAC,CAAC,CACgB,CAF+E,CAAC,MAExE,EAAE,CAAnB,IAAA,AACTA,EAAAA,cAAc,CAAC,KACb,CADmB,MACZ,CAAC,IAAI,CAAC,EACf,CAAC,CAAC,CACFohB,EAAAA,SAF+B,CAAC,OAEf,CAAC,GAxBpB,CAAC,AACH,EAuB4B,CAAC,+LC7IYzX,EAAAA,iBAAiB,CAAC,KAClD,CADwD,AAE7D,IAAI,CAPiB,CAOf,eAP+B,CAQrC,AADsB,SACb,GAAG,AACV0X,EAAAA,YAAY,EAAE,CAMd,OAAO,CAAC,EAAE,CAAC,YAAY,CAAE,KACvB,CAD6B,GACvB,EAAUvd,EAAAA,iBAAiB,EAAE,CAAC,UAAU,EAAE,CAM5C,GAAS,IAAF,EAAE,GAAW,IAAI,EAAE,AAC5Bwd,EAAAA,UAAU,EAAE,AAEhB,CAAC,CAAC,AACJ,CAAC,CACL,CAAG,iHCjBU,EAAmB,YA6BnB,EA7BA,AA6BuB3X,EAAAA,gBAAvB,CAAwC,CAAC,AA3BvB,CAAC,EAA+C,CAAA,CAAE,GAA1C,CACrC,CADoF,GAC9E,EAAW,CACf,KAyBuE,KAzB7D,CAAE,EAAQ,KAAD,KAAC,EAAc,8BAA8B,AACpE,CAAG,CAED,MAAO,CACL,IAAI,CAAE,EACN,KAAK,CAAC,CAAM,EAAE,AACZ,GAAI,CAEAtM,CAJgB,CAIhBA,KAAK,CAAC,IAAI,CAAC,4FAA4F,CAAC,AAE5G,CAAE,KAAM,CAER,EAeN,AAdM,SAcG,AAAmB,CAAM,CAAU,CAAO,EAA8C,AAC/F,IAAM,AAfgB,EAeD,AAmDvB,OApD2B,EAoDlB,AAAgB,CAAG,EAA2B,AACrD,GApDoC,AAoDhC,CACF,OAAO,CAFa,GAET,GAAG,CAAC,CAAC,EAAA,EAAA,CAAA,CAAA,AACA,CAAA,KAAA,CACAA,EAAAA,KAAA,CAAA,IAAA,CAAA,CAAA,iCAAA,EAAA,EAAA,CAAA,CAAA,CACA,MACA,CACA,AAFA,EAxDmB,EAAQ,KAAD,AAwD1B,KAxDqC,CAAC,CACxD,GAAI,CAAC,EACH,OAGF,GAJiB,CAIb,CAJe,CAIE,CAAC,CAEtB,EAAO,EAAE,CAAC,CAAJ,IAFF,WAEsB,CAAE,AAAC,IAC3B,GAAI,CAD+B,CACd,CAAC,CAAE,EAD0B,QAC9C,EACFA,EAAAA,KAAK,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAIpG,IAAM,EAAqBqJ,EAAAA,cAArB,GAAsC,CAAC,GAC7CwY,EAAAA,GADqD,CAAC,WACvC,CAAC,KACd,CADoB,GACd,EAAM,CAAN,CAAW,EAAD,KAAQ,CACtB,CACE,MAAM,CAAE,MAAM,CACd,IAAI,CAAE,EAAa,QAAQ,CAC3B,CADkB,OACV,CAAE,EAAa,QAAQ,CAC/B,CADsB,GAClB,CAAE,EAAa,IAAI,CACvB,KADkB,EACX,CAAE,CACP,cAAc,CAAE,+BAA+B,AAC3D,CAAW,AACX,CAAS,CAAA,AACD,IACM,EAAI,CADH,AACE,SAAC,EAAc,EAAI,CAAD,SAAC,EAAc,KAAO,EAAI,CAAD,SAAC,CAAa,GAAG,EAAE,CAEnE,EAAiB,CAAC,EAEpB,EAAI,CAAD,CAAG,CAAC,IAFL,EAEW,CAAE,KAEf,CAFqB,AAEpB,CAAC,CAEF,EAAI,CAAD,CAAG,CAAC,KAAK,CAAE,KAEd,CAAC,AAFmB,CAElB,CACF,EAAI,CAAD,UAAY,CAAC,MAAM,CAAC,AACzB,CAAC,EAGH,EAAI,CAAD,CAAG,CAAC,OAAO,CAAE,KACd,CADoB,GAEpB7hB,EAAAA,KAAK,CAAC,EADQ,EAAE,AACN,CAAC,0DAA0D,CAAC,AACxE,CAAC,CAAC,CACF,EAAI,CAAD,IAAM,CAAC,GACV,EAAI,CAAD,EAAI,EACT,AADW,CACV,CAAC,AACJ,CAAC,CAAC,AACJ,EAhEyB,EAAQ,AA4DC,CAAC,CA3D/B,CAAC,AACL,CAAG,AACH,AAH+B,CAG9B,CAAA,EAHwC,CAAC,sKCQJsM,YAAAA,iBAAiB,CAAC,CAAC,EAAmB,CAAA,CAAE,GAAd,CACvD,CAD0E,AAE/E,IAAI,CApCiB,CAoCf,gBApCgC,AAoChB,CACtB,YAAY,CAAE,CAAC,EAAO,EAAM,CAAR,CAAM,IAAQ,KAAK,AACrC,GAAI,CAAC,AA3BT,EADqB,EA4BE,AA3BnB,CAAA,CA2BwB,AA3BtB,CADoB,CA4BC,CA5BgC,IA4BrC,UAAuB,CAAC,EAAE,SA3BzB,KAAK,CAAC,CAIvB,CAJyB,SAId,GAAiC,EAA5B,CAAA,KAAoC,EAAE,AAAjC,OAAO,EAAM,GAAD,EAAC,EAMjC,EAAK,EAAD,eAAkB,EAAE,CAAC,GAAG,CAAC,EAAM,GAAD,EAAM,CAR/C,AAQgD,EAkB1C,OAAO,EAGT,GAHc,CAGR,EAAQ,EAAK,CAAb,CAAY,eAAkB,CAE9B,EAAmC,CACvC,GAAI,CAAA,AACZ,CAAO,CADiC,AAalC,GAdkB,CAcb,IAAM,KAVN,EAAO,EAUD,EAVA,MAAW,EAAE,CAAC,cAAA,GAA2C,IAAI,AAA7B,EAAQ,AAAuB,KAAxB,OAAC,GACjD,OAAO,EAAa,IAAI,CACxB,KADmB,EACZ,EAAa,IAAI,EAG1B,EAAM,EAHe,CAGhB,KAAC,CAAW,CACf,GAAG,EAAM,GAAD,KAAS,CACjB,iBAAiB,CAAE,CAC3B,CAAO,CAEuB,EAAM,GAAD,IAHI,EAGM,EAAE,MAAA,EAAU,EAAE,CAAE,CACjD,EAAU,KAAK,EAAN,AAAQ,CACf,EAAM,GAAD,CAAC,EAAQ,EAAU,KAAK,CAAC,CAAP,OAAe,CAAC,EAAM,GAAD,CAAK,CAAC,EAAE,CACtD,EAAU,KAAA,CAAQ,CAAT,CAAmB,KAAK,CAAC,CAAP,MAAc,CAAC,CAAC,CAAC,EAAE,EAAM,GAAD,CAAK,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,IAAI,EAAA,CAAE,CAErE,EAAM,GAAD,CAAC,EAAQ,EAAU,KAAK,CAAC,CAAP,OAAe,CAAC,EAAM,GAAD,CAAK,CAAC,EAAE,CACtD,EAAU,KAAA,CAAQ,CAAT,CAAmB,KAAK,CAAC,CAAP,MAAc,CAAC,CAAC,CAAC,EAAE,EAAM,GAAD,CAAK,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,IAAI,EAAA,CAAE,EAK7E,OAAO,CACT,CAAC,CACL,CAAG,CAFe,8GCrBlB,IAAM,EAAW,MAAX,AAAiB,CAAC,wBAAwB,CAAC,AAQjC,OAAM,KAAA,KAAc,EAAK,EAAD,GAAC,CAOvC,AAP6C,WAOlC,CAAC,CAAI,CAAsB,CACpC,KAAK,CAAC,GACN,CADU,CAAC,EACP,CAAC,EAAQ,CAAI,CAAA,CAAE,AACrB,CAUA,EAXe,cAWC,CAAC,CAAO,CAA8B,CACpD,GAAI,EAAS,CAGX,GAAmE,CAH1D,QAGmE,EAAE,AAA1E,OAAQ,EAAoC,KAApC,SAAoC,CAC9C,OAAO,EAAQ,KAAD,SAAe,CAM/B,GAAgC,QAAQ,EAApC,AAAsC,OAA/B,EAAQ,KAAD,GAAC,CACjB,MAA4B,AAArB,OAAO,CAAsB,KAArB,QAAA,AAEnB,CAKA,GAAM,OAAE,CAAA,CAAM,CAAI,AAAI,KAAK,EAAE,OAC7B,AAAqB,QAAQ,EAAzB,AAA2B,OAApB,AAA2B,GAC/B,EADI,AAAgC,AAC9B,GAAD,EAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA,AAAC,CAAA,EAAiC,CAAA,CAAC,GAA7B,CAAC,CAAC,OAAO,CAAC,YAAY,CAAA,EAAyC,CAAA,CAAE,CAAC,EAAhC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAA,CAC9F,CAEA,YAAY,CAAC,CAAG,CAAsB,CAAO,CAAoB,CAAE,CAAiD,CAClH,IAAM,EAAc,CAClB,GAAG,CAAO,CACV,cAAc,CAAE,IAAI,CAAC,gBAAgB,CAAC,EAC5C,CAAK,CACD,GAF+C,CAAC,GAEzC,CAAC,OAAO,GACZ,IAAI,CAAC,IAAM,IAAI,CAAC,OAAO,CAAC,EAAK,CAAF,GAC3B,IAAI,CAAA,AAAC,EADmC,CAAC,CAExC,EADI,CACA,GADU,GACV,OAAkB,EAAK,EAAD,GAAM,CAE9B,CAFgC,MAEzB,EAAO,IAAD,MAAW,CAAC,EAAK,CAAF,EAE9B,IAAI,CAAC,EAAS,CAAC,AAF4B,CAAC,IAE/B,QAAE,CAAgB,EAE/B,IAFqC,CAEhC,CAAC,YAAY,CAAC,EAAK,CAAF,CAAW,EAAE,AACrC,CADsC,AACrC,CAAE,CAD8B,CAC5B,AACT,CADU,AAGV,gBAAgB,EAAW,CACzB,IAAM,EAAS,IAAI,CAAC,EAAS,CAAC,KAAF,QAAe,CAE3C,GADA,IAAI,CAAC,EAAS,CAAC,KAAF,QAAE,MAAgB,EAC3B,CAAC,EACH,IAFsC,AAC7B,EAAE,AACL,AAAI,KAAK,CAAC,oDAAoD,CAAC,CAEvE,OAAO,CACT,CAEA,IAHe,AAGX,WAAW,EAAW,CACxB,OAAO,IAAI,CAAC,EAAS,CAAC,KAAF,MAAE,EAAgB,CAAkB,CAAlC,OAAkC,OAAd,CAAC,QAAA,CAAwB,GAAA,CAAM,EAAA,CAAE,AAC7E,CAD8E,AAG9E,IAAI,WAAW,CAAC,CAAC,CAAU,CACrB,IAAI,CAAC,EAAS,EAAE,CAClB,GADe,CACX,CAAC,EAAS,CAAC,KAAF,MAAE,EAAc,CAAC,AAElC,CAEA,IAAI,QAAQ,EAAW,CACrB,OAAO,IAAI,CAAC,EAAS,CAAC,KAAF,GAAE,GAAa,CAAb,GAAiB,CAAC,gBAAgB,EAAC,CAAI,QAAA,CAAW,OAAA,CAAO,AACjF,CADkF,AAGlF,IAAI,QAAQ,CAAC,CAAC,CAAU,CAClB,IAAI,CAAC,EAAS,EAAE,CAClB,GADe,CACX,CAAC,EAAS,CAAC,KAAF,GAAE,EAAW,CAAC,AAE/B,CACF,4GCnHA,SAAS,EAAS,GAAG,CAAI,EACvBtM,AAD0C,AAA3B,EACfA,KAAK,CAAC,GAAG,CAAC,0CAA0C,EAAE,EAAG,EAC3D,EAD+D,CAAC,mBASzD,SAAS,AAAmB,CAAM,EAAqE,AAC5G,OAAO,IAAI,IADqB,GACd,CAAC,CAAC,EAAS,KAAF,AAKzB,CALiC,GAK7B,EALkC,AAKlB,CAAC,CACf,EAAoB,EAAE,CAE5B,EAFa,EADT,KAGK,IAAI,AACX,GADc,CACR,CAAA,CAAI,EAAO,IAAD,AAAK,EAAE,CACnB,CAAC,CAAE,AAsBT,MAtBe,GAsBN,AAAO,CAAC,EAAU,AACzB,EAAQ,CADK,GACD,CAAL,AAAM,CAAC,CAAC,CACf,GAAiB,CAAC,CAAC,MAAM,CAEzB,CAFA,GAEM,EAAW,MAAX,AAAiB,CAAC,MAAM,CAAC,EAAS,GAClC,EADgC,AACjB,EAAS,MADuB,AACxB,CADyB,AACjB,CAAC,UAAU,CAAC,CAEjD,GAAqB,CAAA,CAAE,GAAnB,EAAqB,CAEvB,EAAS,MAAD,CAFN,uCAEqD,CAAC,CACxD,IAAI,AACJ,EADM,IAER,CAEA,IAAM,EAAc,EAAS,MAAD,EAAS,CAAC,CAAC,CAAE,GAAc,QAAQ,CAAV,AAAW,CAAV,MAAiB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAChF,EAAY,EAAY,KAAxB,AAA6B,EAAE,CACrC,CAD6B,EACzB,CAAC,EAEH,OAFY,AACZ,EAAO,AADO,IACR,GAAQ,EAAE,CACT,EAAO,AAAI,IAAL,CAAU,CAAC,gDAAgD,CAAC,CAAC,CAE5E,IAAM,EAAiB,EAAU,KAAK,CAAC,CAAP,EAAU,CAAC,CACrC,EAAa,CAAA,CAAE,CAAc,CAAC,CAAC,CAAA,EAA/B,AAAoC,CAAC,CAAC,CACtC,EAAa,EAAe,KAAK,CAAjC,AAAkC,CAAC,CAAC,CAAC,GAAV,CAAc,CAAC,GAAG,CAAC,CAC9C,EAA+B,CAAA,CAAE,CACvC,EADa,EACR,IAAM,KAAU,CAAV,CAAuB,CAChC,GAAI,CAAC,EAAQ,EADiB,EACnB,KACX,IAAM,EAAa,EAAO,IAAD,GAAQ,CAAC,GAAG,CAAC,CACtC,GAAmB,CAAA,CAAE,EAAE,CAAnB,EAEF,OADA,CADE,CACK,IAAD,GAAQ,EAAE,CACT,EAAW,AAAJ,IAAD,CAAU,CAAC,CAAC,6CAA6C,EAAE,EAAO,CAAC,CAAC,CAAC,CAAC,AAAL,CAEhF,IAAM,EAAM,CAAN,CAAa,IAAD,CAAM,CAAC,CAAC,CAAE,GAAY,OAAF,CAAC,GAAY,EAAE,CAC/C,EAAQ,EAAO,CAAf,GAAc,CAAM,CAAC,EAAa,CAAC,CAAC,CAAC,KAAhB,IAAyB,EAAE,CAChD,EAAU,CAAO,CAAC,EACpB,AADwB,CACL,AADI,AAArB,QACyB,EAAE,OAAtB,EACT,CAAO,CAAC,EAAG,CADF,AACE,AAAI,CAAC,EAAS,EAAM,CACtB,EADqB,AAAP,GACT,CAAC,OAAO,CAAC,GACvB,EAAQ,EADsB,CAAC,CACnB,CAAL,AAD0B,AACpB,GAEb,CAAO,CAAC,AAFU,CAAC,CAER,CAAA,AAAI,CAEnB,CACA,EAAS,CAHe,KAGhB,4BAAmC,CAAE,EAAW,GACxD,IADsD,AAAS,AAE/D,CAFgE,CAExD,CADD,AAEL,EAFO,EACF,GACE,CAAE,YACP,UAAU,GACV,EACA,OAAO,CADG,CAEpB,CAAS,UACD,CACR,CAAO,CACH,AADI,EAzEY,CAAC,CAAC,CACX,AAuEK,EAvEE,IAAD,AAAK,CAAC,UAAU,CAAE,EAC/B,CAEA,CAHmC,CAAC,OAG3B,IACP,EAAO,CADO,GACR,AADW,UACI,CAAC,KAAK,CAAE,GAC7B,EADkC,AAC3B,CAD4B,GAC7B,UAAe,CAAC,OAAO,CAAE,GAC/B,EAAO,EAD+B,CAAC,CACjC,UAAe,CAAC,UAAU,CAAE,EACpC,CAEA,CAHwC,CAAC,OAGhC,IACP,CADY,GAAG,AAEf,EAAS,CADF,EAAE,GACD,CAAQ,CAAC,CACjB,EAAO,AAAI,IAAL,CAAU,CAAC,0DAA0D,CAAC,CAAC,AAC/E,CAEA,SAAS,EAAQ,CAAG,EAAS,AAC3B,EADc,EAEd,EAAS,CADF,EAAE,GACD,MAAa,CAAE,GAAG,AAC1B,CAD2B,CACpB,EACT,CADY,AAyDZ,CAzDa,AAAL,CAyDD,EAAE,CAAC,CAAJ,MAAW,CAAE,GACnB,EAAO,EADmB,AACjB,CADkB,AACjB,CAAJ,IAAS,CAAE,GAEjB,EAFsB,CAAC,AAGzB,CADM,AACL,CAAC,AACJ,CAFU,0JC7FV,SAAS,EAAS,GAAG,CAAI,EAAR,AAA2B,AAC1CA,EAAAA,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAG,EACtC,CA8BA,CA/B0C,CAAC,IA+B3C,UAAAkkB,EAAAA,GAAA,EAAA,CACA,AADA,OACA,YAAA,EAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA,AAMA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,KAAA,CAAA,GACA,CADA,CAAA,EACA,CAAA,OAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,KAAA,CAAA,QAAA,SAAA,EAAA,GAAA,CAAA,GAAA,CAAA,GAAA,EAAA,AACA,CADA,EAAA,CACA,CAAA,YAAA,CAAA,GAAA,CAAA,MAAA,EAAA,CAAA,CAAA,CACA,EAAA,MAAA,qCAAA,CAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAGA,MAAA,EAAA,CAAA,CAAA,GAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,CAAA,KAAA,CAAA,IAAA,EAAA,OAAA,CAAA,UAAA,CAAA,EAAA,CAAA,CACA,EAAA,EAAA,EAAA,CAAA,KAAA,CAAA,IAAA,CAAA,QAAA,CAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,QAAA,GAAA,IAAA,CAAA,KAAA,CAAA,QAAA,CAAA,GAAA,CAAA,EAAA,CACA,IAAA,CAAA,WAAA,CAAA,CAEA,aAAA,CAAA,CAAA,UAAA,CAAA,CACA,GAAA,EAAA,EAAA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAA,KACA,EACA,EADA,EACA,EACA,CACA,AADA,CAOA,MAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IAOA,EAPA,IAOA,GAPA,CAAA,CAAA,CAAA,IAAA,CAEA,GAAA,CAAA,EAAA,EAAA,EAAA,CACA,CADA,KACA,SAAA,CAAA,oBAAA,CAAA,CAKA,GAAA,QAAA,GAAA,EAAA,GAAA,KAAA,CAAA,CACA,EAAA,MAAA,qBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CACA,IAAA,EAAA,IAAA,CAAA,GAAA,QAAA,CAAA,UAAA,EAAA,IAAA,CAAA,WAAA,CAAA,IAAA,CACA,EAAA,EAAA,CAAA,CAAA,KAAA,CAAA,CACA,GAAA,IAAA,CAAA,WAAA,CACA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,CAAA,QAAA,EAAA,CAAA,AACA,CAAA,CAAA,AACA,CAAA,GAFA,EAGA,CAHA,AAEA,CACA,MAAA,qBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CACA,EAAA,EAAA,CAAA,CAAA,KAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAGA,IAAA,EACA,KADA,KACA,EAAA,OAAA,IAAA,CAAA,YAAA,CAAA,IAAA,CAAA,YAAA,EAAA,CAAA,CAAA,GAAA,IAAA,CAAA,YAAA,CAAA,CACA,EAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CACA,EAAA,CAAA,IAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA;AAAA,CAAA,CAGA,GAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GAAA,KAAA,CAAA,CACA,IAAA,EAAA,CAAA,CAAA,CAAA,kBAAA,CAAA,EAAA,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,GAAA,KAAA,CAAA,CAAA,CAAA,CACA,CAAA,CAAA,qBAAA,CAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA,CAAA,AACA,CAOA,IAAA,IAAA,IAAA,CALA,EAAA,IAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAEA,CAAA,CAAA,kBAAA,CAAA,EAAA,CACA,CAAA,CAAA,kBAAA,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,YAAA,CAAA,OAAA,CAAA,CAEA,MAAA,CAAA,IAAA,CAAA,IACA,GADA,AACA,CADA,AACA,CADA,CACA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAAA,CAAA,CAGA,IAAA,EAAAC,EAAAA,gBAAA,EAAA,CAAA,GAEA,EAAA,CAFA,CAAA,EAEA,CAAA,CAAA,CAAA,EAAA,EAAA,KAAA;AAAA,CAAA,CAAA,CAEA,GAAA,SAAA,CAAA,UAAA,CAAA,CAAA,CAAA,MAAA,EAMA,GALA,EAAA,CAAA,GAAA,CAAA,QADA,MACA,CAAA,GAGA,IAAA,AAHA,CAAA,AAGA,IAAA,CAAA,cAAA,CAAA,EAAA,GAAA,AAEA,CAFA,CAAA,CAEA,GAAA,EAAA,KAAA,KAAA,CAAA,CAGA,GAFA,EAAA,CAAA,GAAA,CAAA,QAAA,CAAA,GAEA,EAAA,CAFA,CAAA,AAEA,YAAA,CAAA,CAGA,EAAA,MAAA,8BAAA,CAAA,CACA,IAAA,EAAA,EAAA,EAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,CACA,OAAA,EAAA,CAAA,MAAA,CAAA,CACA,GAAA,EAAA,EAAA,EAAA,IAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QACA,EACA,IADA,MACA,CAAA,EAAA,CAAA,GAAA,CAAA,GAAA,OAAA,CACA,AADA,CACA,AADA,CAEA,AADA,CAGA,MAJA,CAIA,CACA,CAaA,EAAA,EAdA,EAcA,GAAA,EAAA,CAEA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA,CAaA,CAbA,MACA,EAAA,QAAA,EAAA,EAGA,EAAA,AAHA,CAGA,GAAA,CAAA,QAAA,CAAA,CAAA,GACA,EADA,AACA,MAAA,qCAAA,CAAA,CAIA,CAAA,CAAA,IAAA,CAAA,GACA,CAAA,CAAA,GADA,CAAA,AACA,CAAA,IAAA,CAAA,AACA,CAAA,CAAA,CAEA,CACA,CACA,CAAA,AAEA,OAJA,EAIA,EAAA,CAAA,EAAA,AACA,CADA,CACA,IAAA,EAAA,EAAA,AACA,CAEA,SAAA,EACA,CAAA,CACA,AAFA,GAEA,CAAA,EAIA,IAGA,EAHA,CAGA,CAHA,CAAA,EAIA,IAAA,GAAA,EAAA,EACA,CADA,CAAA,AACA,EAAA,MAAA,CAAA,GAAA,CAAA,CACA,CADA,AACA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAGA,OAAA,CACA,CAtBA,CAqBA,CArBA,YAAA,CAAA,CAAA,+MC3JO,SAAS,AAAkB,CAAO,EAAmC,IACtE,EAEJ,GAAI,CACF,EAAc,EAJe,CAChB,CAGK,GAAG,CAAC,CAAtB,CAA8B,GAAG,CAAC,AACpC,CAD+B,AAC/B,AAAE,MAAO,EAAE,AAAE,CAOX,OANAxhB,EAAAA,cAAc,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CACV,yHAAyH,CAE7H,CAAC,CAAC,CACK0hB,EAAAA,eAAe,CAAC,EAAS,IAAM,CAAR,MAAe,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC,CAAC,AAC5D,CAEA,IAAM,EAAmC,KAAnC,GAA2C,GAAjC,EAAY,QAAA,CAAD,AAIrB,EAyBR,AAzBgB,GAAR,MAyBoB,AAAnB,CAAuC,CAAO,CAAK,EAA0C,AACpG,GAAM,CAAE,AA1BwB,SAyBP,CACjB,CAAA,CAAa,OAAO,CAAC,GAAG,CAQhC,IAN6B,AAMzB,GALA,KAAK,CAAC,GAAG,EACV,IAAI,CAAA,AACH,CAGoB,EAHP,AAGS,EAHY,IAAI,CAAC,QAAQ,CAAC,IAAf,AAA6B,EAAqB,GAA1B,CAAA,IAAkC,CAAC,QAAQ,CAAlB,AAAmB,IAMvG,KANgH,CAAC,CAM1G,CAEX,EAtCI,EACA,AAmCY,EAnCJ,KAAD,AAAC,EADG,CACO,CAAV,CAAoB,KAAV,EAAiB,CAAC,GAAG,CAAC,WAAA,MAAc,CAAA,CAAS,CAAA,CAAK,OAAO,CAAC,GAAG,CAAC,UAAU,EAGtF,EAAmB,EAAU,EAAQ,EACrC,CAD6B,CAAY,AAC7B,KAAsB,CADlC,CACA,AAAmB,IAAC,GAAc,GAAY,GAA1B,EAAkC,AAAR,EAAgB,KAAD,IAAU,CAIvE,EAAQ,EACT,IAAIC,EAAAA,eAAe,CAAC,GACrB,EAD0B,CAAA,CACtB,EAAiB,KAAK,CAAC,CAAE,OAAT,EAAkB,GAAE,UAAU,CAAE,EAAE,CAAE,OAAO,CAAE,GAAA,CAAM,AAAN,CAAO,CAEtE,EAAkB,AA8B1B,SAAS,AACP,CAAO,CACP,CAAU,CAhCJ,AAiCN,CAAK,EAEL,GAAM,CAAE,CAnCqC,SA8BjB,AAKZ,UAAE,CAAQ,MAAE,CAAI,UAAE,CAAQ,CAAE,QAAA,CAAO,CAAI,IAAI,GAAG,CAAC,EAAQ,GAAG,CAAC,CAAL,AACtE,OAAO,SAAS,AAAY,CAAO,EAA2D,AAC5F,OAAO,CADkB,GACd,OAAO,CAAC,CAAC,EAAS,KAAF,AAEzBzC,CAFiC,CAEjCA,IAFsC,WAEvB,CAAC,MAAM,KACpB,IAAI,GArFY,EAqFU,EArFN,AAqFT,AAAuB,EArFmB,EAqFf,CApFrC,AAoFgC,AAAM,IApFlCuC,EAAAA,GAoFoB,KApFZ,CAAC,CAClB,IAAI,GAAG,AACL,IAAI,CAAC,IAAI,CAAC,GACV,CADc,CAAC,EACX,CAAC,IAAI,CAAC,IAAI,CAAC,AACjB,CAAC,AACL,CAAG,CAAC,EAiFU,EAAkC,CAAE,GAAG,CAAhC,CAAwC,KAAD,EAAC,CAAS,CAE1D,EAAQ,IAAI,CAAC,AAAN,MAAM,CA/FF,EA+FW,EA/FX,GAAO,CAgGpB,CAAO,AAhGe,CAgGd,MAD8B,EAAE,UACd,CAAA,CAAI,MAAM,CACpC,EAAO,EAAP,AAAY,EAAD,EAAK,CAACG,EAAAA,UAAU,EAAE,CAAC,EAGhC,IAAM,EAAiB,EAAS,MAAD,IAAW,CAAC,GAAG,CAAC,CAEzC,EAAM,CAAN,CAAiB,OAAO,CAAR,AACpB,CACE,MAAM,CAAE,MAAM,OACd,KAAK,KACL,EAEA,KAFO,GAEC,CAAE,EAAiB,EAAS,KAAK,CAAN,AAAO,CAAC,CAAE,CAAA,CAAE,AAArC,CAAqC,CAAI,EACnD,IAAI,CAAE,CADqD,AACpD,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GACA,IAAA,OACA,EACA,EAAA,CAAA,EAAA,CADA,IACA,EAAA,AACA,CAAA,CAAA,AACA,GAAA,CACA,EAAA,CADA,AACA,CAAA,CAAA,MAAA,CAAA,KAEA,CAFA,AAEA,CAAA,CAEA,EAAA,CAAA,CAAA,CAAA,KAAA,CAAA,KAEA,CAFA,AAEA,CAAA,CAEA,EAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAIA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,SAAA,CAAA,EAAA,IAAA,CACA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,kBAAA,CAAA,EAAA,IAAA,CAEA,EAAA,CACA,IADA,MACA,CAAA,EAAA,CAAA,SAAA,CACA,OAAA,CAAA,CACA,aAAA,CAAA,EACA,cADA,QACA,CAAA,KAAA,CAAA,OAAA,CAAA,GACA,CAAA,CAAA,CAAA,CAAA,EAAA,KACA,CACA,CAAA,AACA,AAJA,CAIA,CAAA,AACA,CAAA,EAGA,EAAA,CAAA,CAAA,CAAA,IANA,GAMA,CAAA,GACA,EAAA,CADA,CAAA,AACA,EAAA,CAAA,EACA,CADA,AACA,CADA,AACA,AACA,CAAA,CAAA,AACA,CAAA,AACA,EAhG6B,EAAS,EAAQ,GAAV,EAAS,KAAC,EAAc,EAAkB,GAC/F,EADoG,CAAC,IAC9FF,EAAAA,EADsF,aACvE,CAAC,EAAS,EAClC,GADgC,UAAiB,CAAC,0GCvE3C,SAAS,AAAmB,CAAgB,EAA8D,AAC/G,IAAyB,IAArB,CAA0B,CAC5B,CAD8B,IADA,EAEvB,EAGT,GAAgC,AAA5B,AAHU,EADV,MAIoC,EAAE,OAA/B,EACT,OAAO,EAIT,IAAM,CALK,CAKKG,EAAAA,GAAV,GAJmB,GAIA,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAAE,MAAM,EAAE,CAAA,CAAM,CAAC,CAAP,AAC5D,EAAqB,IAArB,AAAqB,GAAZ,GAAoB,OAAO,CAAC,GAAG,CAAC,gBAAA,CAAmB,OAAO,CAAC,GAAG,CAAC,gBAAA,MAAmB,EAEjG,MAAO,AAAqB,CAF8E,MAGrG,IAAU,EACV,AADA,EAAc,CACH,CAClB,GADO,EAAiB,CAAC,CAAA,uCAAA,mECnBzB,SAAS,EAAqB,CAAI,EAAkB,AAClD,OAAO,EACJ,MAFwB,CAEjB,CAAC,SAAS,CAAE,EAAE,CAAA,CAAA,AACrB,OAAO,CAAC,KAAK,CAAE,GAAG,CAAC,AACxB,CADwB,CAAA,UADE,mBAKnB,QAJiB,CAIR,AACd,EAAmB,MAAX,CAAkB,CAAC,IAAI,CAAC,CAAC,CAAA,CAAIb,EAAAA,OAAO,AADH,CACI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAI,OAAO,CAAC,GAAG,EAAE,CAC7E,EAA6B,OAARc,AAAZ,EAAYA,GAAA,AAAY,EAEjC,IAAM,EAAiB,EAAY,EAAqB,GAAY,EAA7C,AAEvB,GAFM,AAA0D,CAAA,EAAY,CAErE,AAAC,IACN,EAHqD,CAGjD,CADU,AACT,EACH,GAFqC,GAC1B,CAIb,CAJe,GAIT,EAAqB,EAAY,EAAqB,GAAY,EAA7C,AAGvB,GAHgE,CAAA,CAG9D,CAH0E,AAGvE,CAAE,AAHL,IAGS,CAAE,CAH0C,AAGtC,KAAE,CAAA,CAAI,CAAIC,EAAAA,KAAK,CAAC,KAAK,CAAC,IAE/B,KAAA,GAAR,GAAyB,AAAzB,GAFyD,CAAC,EAEjC,GAAR,GAAA,AAA0B,SAAR,CAAQ,CAAM,CAAd,CAAgB,CACrD,EAAO,EAAK,AAAZ,EAAW,GAAM,CAAC,CAAC,CAAe,CAAA,EAAb,EAAI,CAAD,KAAC,CAAW,CAAC,CAKvC,IAAM,EAAc,SAAd,SAAgC,CAAC,EAEnC,CAAC,CAFsC,CAAC,CAEpC,CAEN,CAFQ,CAEF,CAAN,EAAM,CAAG,CAGX,IAAM,EAAI,EAAI,CAAD,UAAY,CAAC,eAAe,CAAC,CAC1C,GAAI,CAAA,CAAI,CAAA,CAAE,CACR,CADU,KACH,CAAC,EAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAKA,GAAA,EAAA,CAAA,CALA,QAKA,CAAA,GAAA,CACA,IAAA,EAAA,EAAA,CAAA,CADA,CAAA,EACA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CACA,OAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CACA,AADA,CAGA,KAHA,EAGA,CACA,CAAA,AACA,AALA,SAGA,6HC+DiCC,EAAAA,iBAAiB,CAACC,EAAAA,mBAAmB,CAACC,EAAAA,2BAA2B,EAAE,CAAC,qBAzG5G,SAAS,AAAiB,CAAQ,EAA+B,AAEtE,GAAI,OAAO,CAAC,EAFkB,CAEf,CAAC,cAAc,CAC5B,CAD8B,MACvB,OAAO,CAAC,GAAG,CAAC,cAAc,CAInC,GAAIjlB,EAAAA,UAAU,CAAC,cAAc,EAAE,EAAE,CAC/B,CADiC,MAC1BA,EAAAA,UAAU,CAAC,cAAc,CAAC,EAAE,CAQrC,IAAM,EAEJ,OAAO,CAAC,GAAG,CAAC,UAAY,EAExB,AAFwB,EAC5B,IAHQ,CAIG,CAAC,CAHZ,EAGe,CAAC,kCAAoC,EAAA,AAChD,OAAO,CAAC,GAAG,CAAC,YAAc,EAAA,AAC1B,OAAO,CAAC,AAHZ,GAGe,CAAC,aAAe,EAAA,AAE3B,EADJ,KACW,CAAC,GAAG,CAAC,gBAAmB,CAE3B,CAF0B,CAI9B,OAAO,CAAC,GAAG,CAAC,YAXhB,qBAWmD,EAAA,AAC/C,CAHI,GACR,GAEW,CAAC,GAAG,CAAC,AANhB,oBAMsC,EAAA,AAElC,EADJ,KACW,CAAC,GAAG,CAAC,wBAJhB,SAImD,EAAA,AAE/C,EADJ,KACW,CAAC,GAAG,CAAC,aAAe,EAE3B,AAF2B,EAC/B,KACW,CAAC,GAAG,CAAC,iBALhB,EAKqC,EAAA,AAEjC,EADJ,KACW,CAAC,GAAG,CAAC,qBAAuB,EAEnC,AAFmC,EACvC,CANA,IAOW,CAAC,GAAG,CAAC,wBAA0B,EAEtC,AAFsC,EAC1C,KACW,CAAC,EALZ,CAKe,CAAC,IAPhB,YAOkC,EAAA,AAE9B,EADJ,KACW,CAAC,GAAG,CAAC,WAAa,EAAA,AAEzB,EADJ,KACW,CAAC,CAPZ,EAOe,CAAC,QALhB,OAEA,MAGuC,EAAA,AAEnC,EADJ,KACW,CAAC,GAAG,CAAC,WAAa,EAEzB,AAFyB,EAC7B,KACW,CAAC,GAAG,CAAC,SALhB,AAK2B,EAAA,AAEvB,EADJ,KACW,CAAC,GAAG,CAAC,aALhB,MAKqC,EAEjC,AAFiC,EACrC,KACW,CAAC,GAAG,CAAC,gBAAkB,EAAA,AAE9B,EADJ,EANA,GAOW,CAAC,GAAG,CAAC,iBAAmB,EAAA,AAE/B,EADJ,GAJA,EAKW,CAAC,GAAG,CAAC,SAPhB,qBAOgD,EAAA,AAE5C,EADJ,KACW,CAAC,GAAG,CAAC,MAHhB,aAGqC,EAAA,AAEjC,EADJ,KACW,CAAC,GAAG,CAAC,SAPhB,SAOoC,EAAA,AAEhC,EADJ,KACW,CAAC,GAAG,CAAC,GALhB,mBAKwC,EAAA,AAEpC,EADJ,AAJA,KAKW,CAAC,GAAG,CAAC,iBAAmB,EAAA,AAE/B,EADJ,IAJA,CAKW,CAAC,GAAG,CAAC,gBAHhB,CAGmC,EAAA,AAE/B,EADJ,KACW,CAAC,GAAG,CAAC,uBAAyB,EAErC,AAFqC,EACzC,KACW,CAAC,GAAG,CAAC,QALhB,aAKuC,EAAA,AACnC,OAAO,CAAC,GAAG,CAAC,gBAJhB,QAI0C,EAAA,AACtC,OAHJ,AAGW,CAAC,GAAG,CAAC,wBAA0B,EAAA,AACtC,OAAO,CAAC,GAAG,CAAC,2BAA6B,EAAA,AAEzC,EADJ,KACW,CAAC,GAAG,CAAC,mBADhB,GACwC,EAAA,AACpC,OAAO,CAAC,GAAG,CAAC,sBAAwB,EAAA,AACpC,OAAO,CAAC,GAAG,CAAC,yBAA4B,CAEpC,CAFmC,CAIvC,OAAO,CAAC,GAAG,CAAC,YAAc,EAAA,AAE1B,EADJ,KACW,CAAC,GAAG,CAAC,SAJR,GACR,CAG+B,EAAA,AAE3B,EADJ,KACW,CAAC,GAAG,CAAC,cAAgB,EAAA,AAE5B,EADJ,KACW,CAAC,GAAG,CAAC,QALhB,EAK4B,EAAA,AAExB,EADJ,KACW,CAAC,GALZ,AAKe,CAAC,UAAY,EAAA,AAExB,EADJ,KACW,CAAC,GAAG,CAAC,QALhB,QAKkC,EAAA,AAE9B,EADJ,KACW,CAAC,GAAG,CAAC,WAbhB,EAagC,CAE9B,CAF6B,MAG3B,GACA,GACA,CAVJ,EAWI,CAEJ,eAXA,OAMI,IAJJ,iBAKI,EACA,wICvFG,OAAM,UAAA,AAAmBklB,EAAAA,mBAAmB,CAAoB,AAS9D,WAAW,CAAC,CAAO,CAAqB,CAC7C,MAAM,GAC0B,IAA9B,EAAQ,CADJ,IACG,YAAC,MACJ,EACA,EAAQ,KAAD,KAAC,EAAoB,EAAN,AAAM,CAAA,CAAC,IAAD,GAAQ,CAAC,GAAG,CAAC,WAAA,EAAe,EAAE,AAAC,QAAQ,EAAE,CAErE,EAA4C,CAChD,GAAG,CAAO,CACV,KAFiB,GAET,CAAE,MAAM,CAEhB,OAAO,CAAE,EAAQ,KAAD,EAAC,EAAW,CAAE,IAAI,CAAE,MAAM,CAAE,OAAO,CAAQ,CAAN,CAAM,CAAA,CAAC,GAAD,IAAQ,CAAC,OAAA,CAAS,YAC7E,CACN,CAAK,CAEG,EAAQ,KAHA,AAGD,wBAA8B,EAAE,AACzC9H,EAAAA,wBAAwB,CAAC,CACvB,gBAAgB,CAAE,EAAQ,KAAD,wBAA8B,AAC/D,CAAO,CAAC,CAGJ+H,EAAAA,gBAAgB,CAAC,EAAe,MAAM,CAAC,CAEvC/kB,EAAAA,CAF8B,IAEzB,CAAC,GAAG,CAAC,CAAC,8BAA8B,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE8jB,EAAAA,YAAA,CAAe,MAAA,CAAS,CAAC,OAAO,EAAEkB,EAAAA,QAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA,KAAA,CAAA,GAEA,IAAA,CAAA,KAFA,CAAA,IAEA,EAAA,CAAA,UAAA,EAAA,CACA,IAAA,CAAA,uBAAA,CAAA,KACAtb,CADA,CACAA,yBAAA,CAAA,IAAA,CAAA,AACA,CAAA,CAEA,GACA,IAAA,CAAA,EADA,AACA,CAAA,CADA,iBACA,CAAA,GAAA,CACA,EAAA,CADA,AACA,SAAA,CAAA,CACA,GAAA,EAAA,CAAA,SAAA,CACA,gBAAA,CAAA,CACA,CAAA,AACA,CAAA,CAAA,CAGA,KALA,EAKA,CAAA,EAAA,CAAA,YAAA,CAAA,IAAA,CAAA,uBAAA,CAAA,CAEA,CAGA,IAAA,MAAA,EAAA,CACA,GAAA,IAAA,CAAA,OAAA,CACA,CADA,MACA,IAAA,CAAA,OAAA,CAIA,IAAA,EAAA7J,EAAAA,GAAA,QAAA,CACA,EAAAie,EAAAA,EAAA,GAAA,CAAA,SAAA,CAFA,AAEA,IAAA,UAFA,CAEA,GAGA,IAHA,CAAA,EACA,IAAA,CAAA,OAAA,CAAA,EAEA,CACA,CAIA,EAPA,EAEA,EAKA,KAAA,CAAA,CAAA,CAAA,CAOA,OANA,MAAA,IAAA,CAAA,aAAA,EAAA,UAAA,EAAA,CAEA,IAAA,CAAA,UAAA,EAAA,CAAA,iBAAA,EAAA,AACA,IAAA,CAAA,cAAA,EAAA,CAGA,KAAA,CAAA,KAAA,CAAA,EACA,CAIA,IALA,CAAA,CAKA,KAAA,CAAA,CAAA,CAAA,CACA,IAAA,CAAA,qBAAA,EAAA,AACA,aAAA,CAAA,IAAA,CAAA,qBAAA,CAAA,CAGA,IAAA,CAAA,gCAAA,EAAA,AACA,OAAA,CAAA,GAAA,CAAA,YAAA,CAAA,IAAA,CAAA,gCAAA,CAAA,CAGA,IAAA,CAAA,uBAAA,EAAA,AACA,OAAA,CAAA,GAAA,CAAA,YAAA,CAAA,IAAA,CAAA,uBAAA,CAAA,CAGA,IAAA,EAAA,MAAA,KAAA,CAAA,KAAA,CAAA,GAKA,IALA,CAAA,EACA,IAAA,CAAA,aAAA,EAAA,AACA,MAAA,IAAA,CAAA,aAAA,CAAA,QAAA,EAAA,CAGA,CACA,CAiBA,WAlBA,cAkBA,EAAA,CACA,IAAA,EAAA,IAAA,CAAA,MAAA,IAAA,EAAA,CACA,EAAA,WAAA,MAAA,EAAA,CACA,IAAA,CAAA,gCAAA,CAAA,KACA,CADA,GACA,CAAA,cAAA,EAAA,AACA,CAAA,CAEA,IAAA,CAAA,qBAAA,CAAA,WAAA,CAAA,KACAhe,CADA,CACAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,4CAAA,CAAA,CACA,IAAA,CAAA,cAAA,EAAA,AACA,CAAA,CAAA,EAAA,WAAA,cAAA,EAlIlE,EAkIkE,GAEA,AApI5D,CAAA,CAAA,GAoI4D,EAAA,CAEA,OAAA,CAAA,EAAA,CAAA,YAAA,AAtI5D,CAsI4D,IAAA,AAJA,CAIA,AAHA,gCAGA,CAAA,CAEA,CAGA,kBAAA,EAAA,CAIAilB,EAAAA,8BAAA,EAAA,CACA,KAAA,AAbA,CAaA,kBAAA,EACA,AADA,CAIA,sBAAA,CACA,CAAA,CACA,QACA,EAIAC,EAAAA,AAJA,CAAA,EAAA,oBAIA,CAAA,IAAA,CAAA,GAHA,EAGA,CAAA,GAHA,OAAA,EAAA,AAIA,CACA,MALA,iOChK3G,SAAS,EACd,GAAKC,CAAD,CAACA,YAD4B,GAAS,OACf,EAAE,EAAE,AAI3B,CAACvlB,EAAAA,UAAU,CAAC,8BAA8B,CAAE,CAC9CA,EAAAA,UAAU,CAAC,8BAAA,EAAiC,EAE5C,EAFgD,CAE5C,CACF,GAAM,oBAAE,CAAA,CAAA,CAAuBwlB,EAAAA,2BAA2B,EAAE,CAE5D,EAAa,QAAQ,CAAC,CAAV,8BAAyC,CAAE,IAAA,OAAA,SAAA,EAAA,CAAA,CAAA,QAAA,aAAA,CAAA,+MAAA,IAAA,CAAA,GAAA,WAAA,EAAA,OAAA,CAAA,WAAA,IAAA,EAAA,GAAA,EAAA,IAAA,IAAA,mBAAA,SAAA,OAAA,EAAA,IAAA,CAAiB,CACtE,IAAI,CAAE,oBAAE,EAAoB,OAAO,CAAE,EAAC,CAAG,CACzC,IAD0B,QACd,CAAE,CAAC,EAAmB,AAC1C,CAAO,CAAC,AACJ,CAAA,AAAE,MAAO,EAAO,CACdplB,EADY,AACZA,EAHmC,GAG9B,CAAC,IAAI,CAAC,gDAAgD,CAAE,EAC/D,CACF,CACF,CAHwE,CAAC,yXCqBlE,SAAS,IACd,MAAO,CAILqlB,EAAAA,SALkC,GAAkB,aAK3B,EAAE,CAC3BC,EAAAA,2BAA2B,EAAE,CAC7BC,EAAAA,uBAAuB,EAAE,CACzBC,EAAAA,sBAAsB,EAAE,CACxBC,EAAAA,sBAAsB,EAAE,CACxBC,EAAAA,yBAAyB,EAAE,CAE3BC,EAAAA,kBAAkB,EAAE,CACpBC,EAAAA,eAAe,EAAE,CACjBC,EAAAA,0BAA0B,EAAE,CAE5BC,EAAAA,8BAA8B,EAAE,CAChCC,EAAAA,+BAA+B,EAAE,CAEjCC,EAAAA,uBAAuB,EAAE,CACzBC,EAAAA,yBAAyB,EAAE,CAC3BC,EAAAA,sBAAsB,EAAE,CACxBC,EAAAA,uBAAuB,EAAE,CACzBC,EAAAA,yBAAyB,EAAE,CAC3BC,EAAAA,kBAAkB,EAAE,CACrB,AACH,CAmBA,SAAS,EACP,EAAoC,CADxB,AACwB,CAAE,CACtC,CAA0B,EADlB,YAkGuD,MAMA,CANA,GAoBA,EAnHzD,GA4FyD,EA5F9B,EA6F8B,AAQA,EArGpB,CA4FoB,AA5F/C,GA+F+C,AA+BA,AA9HtB,IAmHsB,KAWA,CA/BA,AA+BA,EACA,AADA,CA9H/B,MA8H+B,CAjCA,AAkCA,EA/HM,CAAC,CA+HP,EACA,GADA,EAAA,EACA,EAGA,IAAA,CAHA,CAGAe,EAAAA,WAAA,KAAA,EAAA,CACA,GAAA,KAAA,MACA,GADA,CAAA,CAAA,EACA,CAIA,EA1CA,EAAA,KAAA,EAAA,CAAA,CAEA,CAoCA,CApCAL,EAAAA,KAAA,aAAA,CAAA,EAAA,KAAA,IAAA,CAAA,CAEA,EAwCA,AAxCA,SAwCA,CAAA,EAAA,AACA,EAzCA,CAyCA,IAzCA,CAyCA,MACA,EAFA,CACA,EAAA,EACA,EAGA,IAAA,EAAA,OAAA,CAAA,AAHA,GAGA,CAAA,GAAA,sBAAA,CACA,GAAA,CAAA,EACA,OAAA,AAGA,IAAA,EAAA,EAJA,CACA,CAGA,AAJA,MAIA,CAAA,GACA,OAAA,OADA,CAAA,AACA,CAAA,GAAA,GAAA,CAAA,EAAA,CAAA,CACA,EApDA,EAAA,IAmDA,CAnDA,WAAA,CAAA,GAEA,CACA,GAAA,CAAA,CACA,GAAA,CAAA,EAAA,GAAA,EAAA,OAAA,CAAA,GAAA,CAAA,UAAA,CACA,WAAA,CAAA,EAAA,KAAA,MAAA,EAAA,OAAA,CAAA,GAAA,CAAA,kBAAA,CACA,iBAAA,CAAA,EAAA,KAAA,YAAA,GAAA,EACA,EADA,OACA,CAAA,EAAA,KAAA,IAAA,EAAAC,EAAAA,iBAAA,CACA,WAAA,CAAAC,EAAAA,iCAAA,CAAA,EAAA,KAAA,MAAA,EAAAC,EAAAA,kBAAA,CAAA,SACA,EACA,KADA,WACA,aACA,EACA,KAAA,CAAA1C,CADA,CACAA,SAAA,CAAA,EAAA,KAAA,EAAA,OAAA,CAAA,GAAA,CAAA,YAAA,CAAA,AACA,CAAA,CAEA,EAAA,EAAA,KAAA,GAAA,IAAA,GACA,EAAA,KAAA,cAAA,EAAA,EAAA,GAEA,CACA,GAAA,CAAA,CACA,IAJA,CAAA,OAIA,CAAA2C,EAAAA,AAJA,sBAIA,CAAA,qBACA,EACA,YAAA,EACA,CAAA,CAAA,AACA,CAHA,AAGA,GAzHzC,IAAI,AAAtB,EAAQ,AAAgB,KAAjB,AAAC,GACNrnB,EAAAA,WAAW,CACbE,CADe,CACfA,KAAK,CAAC,MAAM,EAAE,CAGd2C,EAAAA,cAAc,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CAAC,8EAA8E,CAC7F,AAD8F,CAC7F,CAAC,GAIiC,IAAnC,CAAwC,CAAhC,CAAkC,IAAnC,iBAAC,EACV2jB,EAAAA,mBAAmB,EAAE,CAGvBC,EAAAA,2CAA2C,EAAE,CAE/BhjB,AACd,EADcA,GACT,YADwB,EAAE,CACzB,MAAM,CAAC,EAAQ,KAAD,OAAa,CAAC,CAE9B,EAAQ,KAAD,IAAC,EAAa,CAAC,EAAQ,KAAD,OAAa,CAAC,IAAI,CAAC,CAAC,MAAE,CAAA,CAAM,GAAK,IAAA,AAASijB,EAAAA,gBAA0B,CAAC,EAAE,AACtG,EAAQ,KAAD,OAAa,CAAC,IAAI,CACvBC,EAAAA,oBAAoB,CAAC,CACnB,UAAU,CAA+B,AAA7B,QAA6B,SAAtB,EAAQ,KAAD,IAAC,CAAyB,EAAQ,KAAD,IAAC,MAAY,CAChF,CAAO,CAAC,EAIN1B,EAAAA,EALuF,cAKvE,CAAC,EAAS,KAAF,MAAa,CAAC,CAEtC,IAAM2B,EAAS,IAAIC,EAAb,AAAaA,UAAU,CAAC,GAwBiC,IAxB1B,CAAC,EAEtCpjB,EAAAA,eAAe,EAAE,CAAC,SAAS,CAACmjB,GAE5BA,EAAO,GAF2B,CAAC,AAExB,EAAL,AAAO,CAEb1mB,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE0jB,EAAAA,KAAK,GAAK,UAAA,CAAa,KAAK,CAAC,CAAA,CAAA,CAEAgD,EAAA,MAAA,mBAAA,EAAA,CAEA,AAoHA,SAAA,EACA,GAAAlC,CAAA,KAAA,CAAAA,MArHA,EAAA,CAqHA,CAAA,KADA,EACA,CADA,AACA,GAAA,CAAA,sBAAA,CAAA,CAAA,CACA,IAAA,EAAA,OAAA,CAAA,GAAA,CAAA,YAAA,CACA,EAAA,OAAA,CAAA,GAAA,CAAA,cAAA,CACA,EAAAje,EAAAA,cAAA,eAAA,CAAA,EAAA,GACAhD,EAAAA,KADA,CAAA,CAAA,QACA,EAAA,CAAA,qBAAA,CAAA,EACA,CACA,IAzHAqjB,EAAAA,SAuHA,CAAA,6BAvHA,CAAAF,GACAG,EAAAA,GADA,CAAA,kBACA,CAAAH,GAIA,KAJA,CAAA,CAIA,CAAA,GAAA,CAAA,MAAA,EAAA,AACA,OAAA,CAAA,EAAA,CAAA,SAAA,CAAA,UAEA,EAFA,IAEAA,EAAA,KAAA,CAAA,GAAA,CAAA,AACA,CAAA,CAAA,CAGAA,CACA,OADA,4BA3E1D,SAAS,AAAK,EAAmC,CAAA,CAApC,AAAsC,EAA0B,AAClF,CAD0B,MACnB,EAAM,EAAS,CAAV,CACd,GADsB,iBAAwB,CAAC,cAMxC,SAAS,AAA+B,EAAmC,CAAA,CAAE,EAAc,AAChG,CADoD,MAC7C,EAAM,EAAS,CAAV,GAAgB,CAAR,CAAU,CAChC,AADiC,MADa,yBA0EmB,SAAA,EACA,GAAA,CAAA5mB,EAAAA,WAAA,CACA,CADA,KADA,CAKA,EALA,EAKA,EAAAgnB,EAAAA,CAAA,sBAAA,EAAA,CAEA,EAAA,CAAA,KAAA,iBAAA,CAAA,kBAAA,CAAA,CAMA,IAAA,IAAA,CAAA,IAJAziB,EAAAA,eAAA,EAAA,EAAA,AACA,EAAA,IAAA,CAAA,CAAA,oBAAA,CAAA,CAGA,GACA,EAAA,GADA,AACA,CADA,IACA,CAAA,CAAA,CAAA,EAAA,AACArE,EAAAA,KAAA,CAAA,KAAA,CACA,CAAA,uBAAA,EAAA,CAAA,CAAA,8EAAA,CAAA,CAKA,CAAA,EAAA,GAAA,KAAA,CAAA,eAAA,CAAA,EACAA,AADA,EACAA,KAAA,CAAA,IAAA,CACA,iPAAA,CAGA,qIClL1D,SAA2B,AAAlB,CAAgC,EAAe,AAC7D,IAAM,EAASqnB,EAAAA,EAAT,IADyB,cACI,CAACjK,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CACjD,IACF,EADQ,AACD,EADG,EACJ,UAAC,CAAiB,CAAA,CAAc,AAE1C,yICVmD,AAAC,GAAG,AAA6C,EAClG,CADqD,MAC9C,CAAE,EACT,CADY,kBACO,CAAEsG,EAAAA,KAAK,EAAE,CAC9B,CAAC,8JCGM,SAAS,AACd,CAAoB,CACpB,CAAI,EAEJ,IAAM,EAAgB3f,EAAAA,EAJO,OAIE,EAAc,EAAE,UAAU,EAAE,AAEzD,EAAC,GAAe,UAAF,oBAAE,EAChB,CAACujB,EAAAA,SAAS,CAAC,IACXzb,EAAAA,SAAS,EAAC,EACVxH,CAF+B,CAAA,AAE/BA,eAAe,CAAC,KAEhB1B,EAAAA,MAF6B,GAC7B,KACc,CAAC,KACT+gB,CADe,CACfA,KAAK,EAAE,CAET,CAFW,MAEJ,CAAC,IAAI,CACV,CAAC,SAAS,EAAE,EAAK,EAAD,iEAAoE,EAAE,EAAK,EAAD,gCAAmC,CAAC,EAIhI,OAAO,CAAC,IAAI,CACV,CAAC,SAAS,EAAE,EAAK,EAAD,8KAAiL,EAAE,EAAK,EAAD,YAAe,CAAC,CAG7N,CAAC,CAAC,CAEFrc,EAAAA,cAAc,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAEkgB,EAAAA,mCAAmC,CAAC,IAAI,AAEnG,CAFoG,CAAC,yJChB/F,WAAE,CAAA,CAAU,CAAIC,EAAAA,KAAK,CAGd,EAAqB,gBAArB,uz6CAKb,SAAS,EAAI,CAAD,AAAQ,CAAU,GAAG,CAAI,EAAmB,AACtDxnB,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAQ,CAAA,EAAA,EAAD,AAAC,EACA,CAOA,CARA,CAAA,OAQA,IACA,IAAA,EAAAwH,EADA,AACAA,CAAA,EADA,iBACA,CAAAf,EAAAA,iBAAA,EAAA,CAAAlD,EAAAA,eAAA,EAAA,CAAA,CAOA,OAJA,EAAA,GAAA,QAAA,CAAA,EAAA,CAEA,EAAA,GAAA,YAAA,CAAA,EAAA,CAEA,CACA,CAKA,GANA,YAMA,EAAA,CAAA,EAAA,AACA,IAAA,EADA,AACA,CAAA,EAAA,KAAA,CAAA,KAAA,CAAA,CACA,EAAA,CAAA,CAAA,CAEA,IAFA,AAEA,IAAA,KAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CACA,GAAA,IAAA,GAAA,EAAA,GAAA,GACA,EAAA,GAAA,GAAA,EAAA,EAAA,EACA,CAEA,AAHA,EAAA,IAAA,CAAA,AAGA,GAAA,EAAA,MAAA,EAAA,CAAA,CAAA,AACA,CAqGA,eAAA,EACA,CAAA,CAEA,CADA,AACA,EAEA,IAAA,CALA,CAKA,CAAA,CAAA,IAAA,EAAA,EAAA,CAEA,GAAA,CAAA,EACA,CADA,EAAA,GACA,KAEA,CAFA,AAEA,CAGA,IAAA,EAAA,MAAA,CAXA,CAWA,EAGA,IAHA,CAAA,EAAA,CAGA,EAAA,GAAA,EAAA,CAAA,SAAA,CACA,OAAA,EAAA,MAAA,EAAA,WAAA,CAEA,IAAA,EAAA,EAAA,IAAA,GAAA,GAAA,EAAA,CAEA,EAAA,EAAA,IAAA,GAAA,OAAA,EAAA,EAAA,CAAA,CAAA,CACA,EAAA,GAAA,EAAA,CACA,EAAA,CADA,EACA,CAAA,KAAA,OAAA,CAAA,EAAA,SAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAA,CAGA,IAAA,EAAA,CACA,IADA,CACA,CAAAvD,EAAAA,KAAA,CAAA,SAAA,EAAA,CACA,GAAA,GACA,MAAA,CAAA,EAAA,MAAA,CACA,EADA,SACA,CAAA,EAAA,SAAA,EAAA,EAAA,YAAA,CACA,OAAA,CAAA,EAAA,OAAA,CACA,CADA,GACA,CAAA,EAAA,IAAA,KAAA,QACA,EACA,SADA,EACA,CAAA,EAAA,WAAA,CACA,IADA,QACA,CAAA,EAAA,YAAA,EA5KJ,EA4KI,AA5KF,CA6KE,YAAA,CAAA,EAAA,AADA,YACA,EA5KE,EA4KF,EACA,AA7KM,iBA6KN,CAAA,CAAA,CADA,AACA,EAAA,gBAAA,CAAA,CACA,YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,AACA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA,QACA,CACA,CAAA,CAEA,GAAA,EAHA,AAGA,KAAA,YAAA,CAAA,CACA,IAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IACA,CAAA,EAAA,GAAA,EAAA,EAAA,AACA,EAAA,IAAA,CAAA,CAAA,CAEA,AAFA,CAIA,IAAA,EAAA,IAAA,AAAAojB,EAAAA,MAAA,CAAA,IAAA,GAAA,CAAA,CAAA,mCAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CACA,UAAA,CAAA,CADA,CAGA,KAFA,GAEA,CAAA,EAAA,CACA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA,GAAA,CAAA,YAAA,CAAA,MAAA,CAAA,AACA,CAAA,CADA,AACA,CAEA,OAAA,CAAA,EAAA,CAAA,MAAA,CAAA,KAEA,CAFA,CAEA,IAAA,KAAA,EAAA,AACA,CAAA,CAAA,CAEA,IAAA,EAAA,GAAA,QAAA,CAAA,KACA,CADA,EACA,CACA,IAAA,EAAA3c,EAAAA,UAAA,OAAA,EAAA,CAAA,UAAA,EAAA,CAGA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,MAAA,MAAA,CAAA,CAAA,MAAA,CAAA,CAEA,EAAA,IAAA,CAFA,MAEA,CAAA,SAAA,EAAA,KAAA,MAAA,CAAAmB,EAAAA,uBAAA,CAAA,EAAA,SAAA,EAAA,CAAA,CAAA,CAAA,AACA,CAAA,KAAA,CAEA,CACA,CAAA,CAAA,EAAA,KAAA,OAAA,CAAA,CAwBA,OAtBA,EAAA,GAAA,EAAA,EAAA,CAEA,EAAA,EAAA,CAAA,CAAA,QAAA,CAAA,GAAA,CACA,IADA,WACA,EAAA,CAAA,GAAA,CACA,EAAA,CAAA,iEAAA,CAAA,CACAnB,EAAAA,iBAAA,EAAA,CAAA,UAAA,MAAA,GAEA,CAAA,CAAA,CAEA,EAAA,CAJA,CAAA,EAIA,CAAA,OAAA,CAAA,GAAA,CACA,IADA,SACA,CAAA,GACA,EADA,AACA,CADA,AACA,iBAAA,CAAA,EACA,CADA,AACA,CADA,AACA,CAEA,EAAA,IAAA,CAAA,MAAA,CAAA,IAAA,AACA,KADA,QACA,CAAA,GACA,EADA,AACA,CADA,AACA,gBAAA,CAAA,EACA,CAAA,CADA,AACA,CADA,AAIA,EAAA,IAAA,CAAA,EAAA,CAEA,KAEA,CAFA,CAEA,IAAA,KAAA,EAAA,CACA,aAAA,CAAA,EACA,CACA,AADA,EADA,CAAA,eA3GA6F,EAAAA,iBAAA,CAvFA,AAuFA,CAvFA,EAAA,CAAA,CAAA,GAAA,EAAA,GAKA,EACA,AAiFA,CAAA,CAtFA,EAIA,CAJAiX,CAKA,CALAA,YAAA,CAAA,KAAA,CAAA,EAAA,EAAAA,AAAA,EAAA,KAAAA,YAAA,CAAA,KAAA,EAAAA,EAAAA,YAAA,CAAA,KAAA,CAAA,EAAA,CAAA,AACA,CADA,KACA,KAAA,CAAA,8CAAA,CAAA,CAWA,OAhDA3jB,AA8CA,EA9CAA,CA8CA,SA9CA,CA8CA,qBAAA,CAAA,EAEA,CACA,IAAA,EAAA,GAHA,EAIA,WADA,AACA,CAAA,MAAA,AACA,GAIA,GAJA,CAKA,CALA,CAIA,AACA,EADA,AACA,EAAA,EAAA,CAAA,AAEA,CAFA,AAEA,CACA,GAHA,OAGA,CAAA,KACA,CADA,EAGA,EAAA,CAFA,EAAA,CAEA,CAAA,IAAA,AACA,IADA,AACA,AACA,EADA,IACA,CAAA,CACA,CAAA,CAAA,AAEA,CAAA,CACA,IAJA,EAIA,KAAA,CAAA,CAAA,EAAA,AACA,EAAA,EAEA,EAAA,AAFA,KAEA,CAFA,WAEA,EAAA,MAAAyjB,EAAAA,iBAAA,EAAA,CAAA,CAAA,CACArjB,EAAAA,KAAA,CAAA,IAAA,CAAA,kFAAA,CAAA,CACA,EAAA,KAAA,YAAA,EAAA,GAKA,EALA,UAKA,CAAA,IAAA,IAAA,CAAA,WAAA,EAAA,CACA,AADA,CACA,AACA,CAAA,AACA,CAAA,CAAA,yDA6KA,SAAA,CAAA,EAAA,AACA,IAAA,EAAA+D,EAAAA,OAAA,EAAA,EAAA,EAAA,MADA,cACA,CAAA,AAjOA,KAAA,EAmOA,GAAA,CAAA,EACA,GAHA,CAAA,GAGA,EADA,EAAA,AAIA,EAAA,EAHA,EAAA,KAGA,CAAA,EAAA,CAEA,IAAA,EAAA,IAAA,IAAA,EAAA,CACA,EAAA,GACA,EAAA,CADA,CAAA,EAAA,AACA,GAAA,CAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,EAGA,EAAA,SAAA,EAAA,EAAA,CACA,EACA,IADA,0HC3QtB,SAAS,AAAW,CAAK,CAAoB,GAAG,CAAI,EAAwB,AACjF,EADwB,CAClB,CAAC,EAA0B,EAAoB,EAA2B,EAAa,CAAI,EACjG,EADqG,CACjG,KADyF,AACpF,CAD0C,AACzC,IADqB,GACd,CAAC,CAD4D,EACvC,CAErC,IAAM,EAAa,CAAE,GAAI,CAAA,CAA6D,CACtF,CAAU,AAHwB,CAGvB,AAHwB,yBAGC,CAAA,CAAI,EACxC,EAAmB,OAAO,CAAC,CAAC,EAAO,GAAF,EAAf,AAAsB,AACtC,CAAU,CAAC,CAAC,CAFkD,CACnB,uBACN,EAAE,EAAM,CAAA,CAAA,CAAA,AAAD,CACC,CAAA,CAAA,CACA,CAFA,GAEA,EAAA0jB,EAAAA,GAAA,GAAA,CAAA,KAAA,GACAjV,EAAAA,aADA,CAAA,EAAA,IACA,CAAA,OAAA,KAAA,KAAA,OAAA,MAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,CACA,AADA,CACA,GADA,EAEAA,CADA,CACAA,oBAAA,CACA,OAAA,EAAA,GAAA,IAAA,CAAA,EAAA,UAAA,CAAA,CAAA,CAAA,CAEA,CADA,EACA,KAAA,AAFA,EAEA,GAAA,EAFA,GAEA,CAGA,IAHA,EAAA,2GADA,gBCK5C,SAAS,AAAM,GAAG,CAAI,CAAR,CACnBkV,AADmD,EACnDA,UAAU,CAAC,OAAO,EAAE,EAAG,EACzB,EAD6B,CAAC,OAkFvB,SAAS,AAAM,GAAG,CAAI,CAAR,CAAgC,AACnDA,EAAAA,UAAU,CAAC,OAAO,EAAE,EAAG,EACzB,EAD6B,CAAC,OA2BvB,SAAS,AAAM,GAAG,CAAI,CAAR,CAAgC,AACnDA,EAAAA,UAAU,CAAC,OAAO,EAAE,EAAG,EACzB,EAD6B,CAAC,MArFvB,SAAS,AAAK,GAAG,CAAJ,AAAQ,EAAwB,AAClDA,EAAAA,UAAU,CAAC,MAAM,EAAE,EAAG,EACxB,EAD4B,CAAC,OAvDtB,SAAS,AAAM,GAAG,CAAI,CAAR,CAAgC,AACnDA,EAAAA,UAAU,CAAC,OAAO,EAAE,EAAG,EACzB,EAD6B,CAAC,MAiFvB,SAAS,AAAK,GAAG,CAAJ,AAAQ,EAC1BA,AADkD,EAClDA,UAAU,CAAC,MAAM,EAAE,EAAG,EACxB,EAD4B,CAAC,6IC7CgBpb,EAAAA,iBAAiB,CAAC,CAAC,EAAqC,CAAA,CAAE,GAAhC,CACrE,CAD0G,GAgCtG,EACA,EACA,EAEA,EAnCE,EAAuB,AA+Bf,CAEH,CAjC0B,EAgCrB,GAhCoB,WAA9B,CAmCqB,GAnCU,EA5DX,EA4DmC,EACvD,CA7D0B,CA6DhB,CAEd,cAH8E,AAGhE,CAAE,GAChB,CADoB,UACT,EAAE,EACb,EADiB,UACL,EAAE,EACd,EADkB,IACZ,EAAE,EACR,EADY,eACK,CAAE,GACnB,CADuB,gBACN,EAAE,EACnB,EADuB,kBACH,EAAE,EACtB,EAD0B,IACpB,EAAE,EAER,EAFY,KAEL,EAAE,EACT,GADc,QACH,EAAE,EACb,GADkB,cACD,EAAE,EACnB,GADwB,cACP,CAAE,GACnB,EADwB,gBACN,EAAE,EACpB,GADyB,cACR,EAAE,EACnB,GADwB,AACrB,EAAQ,KAAD,EAAQ,AACtB,CAAG,CAEK,EACJ,EAAQ,KAAD,UADH,EACI,EACR,EAAQ,KAAD,YAAC,EACR,EAAQ,KAAD,YAAC,EACR,EAAQ,KAAD,aAAC,EACR,EAAQ,KAAD,YAAC,EACR,EAAQ,KAAD,YAAkB,CAErB,EAAW,EAAQ,KAAD,SAAC,EAAkB,EAAQ,KAAD,EAAQ,CAKtD,EAAwB,CAAC,CAIvB,EAAQ,AAAC,EAAE,CAAX,AAAgC,IAJrB,AAIyB,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,EAD9B,AAC8B,GAAK,CAAY,CAAI,GAAG,CAAC,CAEtE,EAAoB,CAAE,UAAU,CAAE,CAAE,EAApC,GAHe,GAAiC,GAAG,IAGA,CAAE,2BAAA,CAA4B,CAAG,CACpF,EAAyB,CAAE,IAAI,CAAE,MAAM,CAAE,OAAzC,GAAmD,CAAE,CAAE,eAAe,CAAE,2BAAA,CAAA,CAA+B,CACvG,EAA2B,CAAE,IAAI,CAAE,QAAQ,CAAE,OAA7C,GAAuD,CAAE,CAAE,eAAe,CAAE,2BAAA,CAAA,CAA+B,CAEjH,SAAS,IACP,IAAM,EAAM2V,CAAN,CAAMA,EADS,GAAS,gBACG,EAAE,CAC7B,EAAU,EAAM,CAAN,CAEhB,CAFM,EAEF,QAF+B,AAE/B,AAA6B,IAAjB,EAA4B,CAC1C,EADwC,EAClC,EAAQ,GADA,IACO,CAAC,QAAQ,CAAC,GAE3B,EAAQ,KAAD,EAAQ,AAFwB,CAAC,CAEvB,CACnB0F,EAAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAE,EAAM,GAAD,CAAC,CAAO,GAAG,CAAE,GACzDA,EAAAA,OAAO,CAAC,KAAK,CAAC,KADmE,CAAC,mBAC3C,CAAE,EAAM,GAAD,GAAC,CAAS,GAAG,CAAE,IAE3D,EAAQ,KAAD,SAAC,EAAkB,EAFyD,AAE/C,CAFgD,AAE/C,EAAE,AAGzCA,EAAAA,AAH4B,OAGrB,CAAC,KAAK,CACX,8BAA8B,CAC9B,CAAC,EAAM,GAAD,CAAC,CAAO,EAAM,GAAD,GAAC,AAAM,GAAe,CAAf,GAAK,CAAU,CAAI,CAAC,AAC9C,GAIJ,CALmC,CAKpB,OAAO,CAAC,IAJF,IAIU,EAAE,AACnC,CAEA,GAAI,EAAQ,KAAD,CAAC,EAAU,EAAQ,KAAD,MAAC,EAAe,EAAQ,KAAD,OAAC,EAAgB,EAAQ,KAAD,MAAY,CAAE,CACxF,IAAM,EAAM,CAAN,MAAa,CAAC,WAAW,EAAE,CAC7B,EAAQ,KAAD,CAAO,EAAE,AAClBA,EAAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAE,EAAI,CAAD,EAAI,CAAE,GAE7C,EAAQ,KAAD,MAAY,EAAE,AACvBA,EAAAA,EAHqE,CAAC,IAG/D,CAAC,KAAK,CAAC,4BAA4B,CAAE,EAAI,CAAD,OAAS,CAAE,GAExD,EAAQ,KAAD,OAAa,EACtBA,AADwB,EACxBA,CAHgF,CAAC,KAG1E,CAAC,KAAK,CAAC,6BAA6B,CAAE,EAAI,CAAD,QAAU,CAAE,GAE1D,EAAQ,KAAD,MAAY,EAAE,CACvBA,EAAAA,CAHkF,CAAC,KAG5E,CAAC,KAAK,CAAC,2BAA2B,CAAE,EAAI,CAAD,OAAS,CAAE,GACzDA,EAAAA,OAAO,CAAC,KAAK,CAAC,GADiE,CAAC,4BAClC,CAAE,EAAI,CAAD,WAAa,CAAE,GAEtE,CAiDA,GA/CI,GAAuB,IACrB,EAAQ,KAAD,CAL+E,CAAC,GAIzF,OAA8C,AACnB,EADqB,AACnB,AAC7BA,EAAAA,OAAO,CAAC,KAAK,CACX,mCAAmC,CACnC,EAAM,EAAwB,CAAzB,EAA4B,CAAC,CAClC,GAGA,EAAQ,KAAD,MAJsB,MAIJ,EAHD,AAGG,AAC7BA,EAAAA,OAAO,CAAC,KAAK,CACX,mCAAmC,CACnC,EAAM,EAAwB,CAAzB,EAA4B,CAAC,CAClC,GAGA,EAAQ,KAAD,MAJsB,OAIH,CAHF,CAGI,AAC9BA,EAAAA,OAAO,CAAC,KAAK,CACX,oCAAoC,CACpC,EAAM,EAAwB,CAAzB,GAA6B,CAAC,CACnC,GAGA,EAAQ,KAAD,KAJsB,OAIJ,EAC3BA,AAD6B,AAHH,EAI1BA,OAAO,CAAC,KAAK,CACX,mCAAmC,CACnC,EAAM,EAAwB,CAAzB,SAAmC,CAAC,EAAE,CAAC,CAAC,CAC7C,GAGA,EAJ6B,AAIrB,KAAD,YAAkB,EAHD,AAGG,AAC7BA,EAAAA,OAAO,CAAC,KAAK,CACX,mCAAmC,CACnC,EAAM,EAAwB,CAAzB,SAAmC,CAAC,EAAE,CAAC,CAAC,CAC7C,GAGA,EAJ6B,AAIrB,KAAD,YAAkB,EAHD,AAGG,AAC7BA,EAAAA,OAAO,CAAC,KAAK,CACX,mCAAmC,CACnC,EAAM,EAAwB,CAAzB,SAAmC,CAAC,EAAE,CAAC,CAAC,CAC7C,GAIJ,EAAwB,AALS,KAKJ,EAAE,EAG7B,EAAQ,KAAD,GAPmB,EAIL,UAGb,OAAoC,IAAZ,EAAuB,CACzD,EADuD,EAArB,AAC5B,EAAaC,EAAAA,MAAb,KAAwB,CAAC,oBAAoB,EAAE,CAC/C,EAAQA,EAAAA,CAAR,UAAmB,CAAC,oBAAoB,CAAC,EAAY,GAC3DD,EAAAA,EADkE,CAAC,AAAV,IAClD,CAAC,KAAK,CAAC,qCAAqC,CAAE,EAAM,GAAD,QAAY,CAAE,GACxE,EAAU,CACZ,CAEI,EAAQ,CAHV,IAGS,CAAC,AAHU,EADqE,AAIrE,CAJsE,CAI5D,CAAC,EAAE,AACjCA,EADoB,AACpBA,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAE,EAAU,IAAI,AAAE,CAAhB,EAG/C,EAAgB,CAClB,CAEA,CAHqB,KAGd,CACL,EAJA,EAII,CAhNiB,CAgNf,IAPiF,CAAC,WAOlE,GAhNmB,CAkNzC,KAAK,GAAS,AACZ,GAAI,EAAqB,CAEvB,GAAyB,OAAO,EAAE,CAClC,GAHqB,AAGjB,CAEF,CADA,EAA0BE,EAAAA,CAFL,iBAGE,CADvB,EAA+C,CAAC,CAAE,UAAU,CArN/B,CAqNiC,CAAA,AArN/B,EAqN+D,CAAC,CACvE,MAAM,EAAE,AAClC,CAAE,KAAM,CAEN,OAA0B,CAC5B,CACF,CAGI,AAT8D,GAUhE,GAAe,AANsB,EAK3B,EAAE,GACU,AANpB,CAMqB,QAAQ,EAAA,CAAE,CAE/B,EAAQ,KAAD,eAAqB,EAAE,AAChC,GAAUD,EAAAA,WAAW,CAAC,oBAAoB,EAAA,CAAE,CAE9C,EAAgB3F,EAAAA,SAAhB,YAAqC,EAAE,CAGnC,GACF,OADY,EAAE,IACD,CAAC,GAEhB,EAAa6F,EAAAA,GAFa,CAAC,EAE3B,aAAgC,CAAC,WAAW,CAAC,EAAgB,GAC/D,CAAC,AACL,CAAG,AACH,CAAC,MAHgE,QAAsB,CAAC,CAAC,+GCzOnF,EAAmD,CAAC,OAAO,CAAE,OAAO,CAAE,IAA/C,EAAqD,CAAE,MAAM,CAAE,OAAO,CAAE,OAAO,CAAC,CAGvG,EAAe,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAClC,EAAiB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CACtC,EAAe,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAmJlC,EAA4E,CAEhF,KAAK,CAAE,OAAO,CAEd,KAAK,CAAE,OAAO,CAEd,OAAO,CAAE,AANkC,OAM3B,CAEhB,IAAI,CAAE,OAAO,CAEb,IAAI,CAAE,MAAM,CAEZ,MAAM,CAAE,MAAM,CAEd,IAAI,CAAE,MAAM,CAEZ,OAAO,CAAE,MAAM,CAEf,KAAK,CAAE,OAAO,CAEd,KAAK,CAAE,OAAO,CAEd,KAAK,CAAE,OAAO,CAEd,IAAI,CAAE,OAAO,AACf,CAAC,gCArHM,SAAS,AAEd,CAAc,CACd,CAAoB,EA4DpB,OAAO,AAzDP,MAAM,QAA+B,EAG5B,AATiC,CAC5C,KA8DS,KAtDa,CAHd,AAA+B,AAGhB,CAH+B,AAGxB,CAAQ,CAChC,KAAK,CAAC,GACN,IADa,AACT,CADU,AACT,OAAA,CAAU,IAAI,GAAG,CAAC,GAAsB,MAAA,EAAU,EACzD,CAKO,GAAG,CAhBd,AAgBe,CAAI,CAN8B,AAMnB,CAAQ,CAAoB,CACpD,GAAI,KAgDQ,EA1CV,CAb4E,CAAC,CAQ7E,CAKI,CAAC,CA0Ca,EAAyD,KA1C9D,EALD,CAAC,KAEX,CAFiB,GAEb,CAAC,IAAI,CAAC,QAAQ,CAAE,EACtB,CAAC,CADyB,AACxB,CADyB,EAGb,EA2CO,EA3CH,CAAC,EAAE,KA2CpB,OAAO,GAAqC,IAAI,CAAzC,CAAyB,EA1C/B,MA0C+B,CAvCjC,IAAM,EAAkB,CAAI,CAAC,EAAa,CAIpC,OAAE,CAJF,AAIO,CAJ4B,QAI1B,CAAO,CAAE,WAAS,CAAE,GAAG,EAAW,CAAI,EAErD,CAAU,CAF+C,AAE9C,EAAY,CAFe,KAEX,EAC3B,CAAU,CADa,AACZ,EAAc,GADW,GACP,EAC7B,CAAU,CAAC,EADc,AACF,GADe,GACX,EAE3B,EAFuB,EAEjB,EAAc,CAFgB,EAEM,cAAc,EAAA,CAAhB,AAAmB,EAA0B,CAC/E,EAAkB,CAAuC,CAAC,EAA0B,CACpF,EAAmB,GAAe,AAFmB,GACrD,AACqD,MAAM,CAE7D,CAFE,GAEE,CAFgC,AAE/B,OAAO,CAAC,GAAG,CAAC,GACnBJ,EAAAA,UAAU,CADyB,AACxB,CADyB,CACP,CADS,CACU,CAC9C,GAAG,CAAU,CACb,MAFyB,SAEV,CAAE,kBAAkB,AAC/C,CAAW,CAAC,CACO,AAAC,GAAgB,IAC1B5nB,EAAAA,EADU,IAAe,GAAgB,EAAE,AAC3C,EACEE,EAAAA,KAAK,CAAC,GAAG,CACP,CAAC,kBAAkB,EAAE,EAAgB,aAAD,0BAAwC,EAAE,EAAgB,aAAD,mDAAiE,CAAC,CAGvK,CAAE,KAAM,CAER,CAEI,GACF,GAEJ,CACJ,CAGA,AAPkB,EAAE,CACJ,EAAE,4GChHZ,EAAsB,MAAM,CAAC,UAA7B,gBAAuD,CAAC,CAiB9D,SAAS,EAAW,CAAM,CAAQ,CAAU,CAAU,CAAU,EAC9D,AADgF,CAA/D,GACX,EAAU,MAAM,CAAC,qBAAqB,CAAC,GACvC,EAAe,CAD8B,AAC7B,CAD8B,MACvB,EAAE,EAAW,CAAC,CAAC,CAC5C,IAAK,CADoC,GAC9B,GAAA,EAAO,EAChB,GAAI,EAAI,AADe,CAChB,AADkB,OACT,EAAC,GAAM,EAAc,CACnC,IAAM,EAAQ,CAAM,CAAC,CADY,AAC3B,CAAmB,CAAD,AACxB,MAAwB,UAAjB,OAAO,EAAqB,EAAQ,CAA7B,AAChB,CAEF,CAHuC,MAGhC,CACT,AAJ2D,CAsD3D,MAES,AAFH,CAEK,CArDQ,KAqDF,CAAE,EAAE,CAAE,IAFF,GAAgB,AAEP,EAAE,CAAA,CAAM,EAAN,CACzB,CAAE,MAAM,CAAE,CAAC,OAAO,CAAE,OAAO,CAAE,MAAM,CAAE,MAAM,CAAE,OAAO,CAAE,OAAO,CAAA,CAAG,mBA+HxC,MAAM,CAAC,MAAM,CA3GnBsM,AA2GoB,EA3GpBA,cA2GoC,GA3GnB,CAAC,CAAC,EAAwC,CAAA,CAAE,IACpF,CADyF,EAApC,CAC/C,EAAuB,CAC3B,IADW,UACG,CAAE,CAA+B,KAAK,CAAxB,IAAD,UAAC,CAC5B,KAAK,CAAE,KAAE,CAA0B,EAAvB,CAA0B,EAAY,KAAA,CAAO,CACzD,EADiD,CAC9C,CAAE,CADsB,CAAC,GACrB,CAAwB,CADE,CACvB,CAAwB,EAAY,GAAA,CAAK,AACvD,CAAG,CAOD,GAR+C,GAApB,AAQpB,CACL,AAT0B,GAAG,CASzB,CAAE,MAAM,CACZ,KAAK,CAAA,AAAE,IACL,EADK,EACC,EADS,AACI,CAAC,CAAC,EAAO,IAAtB,AAAqB,MAAW,EAAE,CAAC,UAAU,CAEzB,AAoD1B,EApD6C,cAAc,CAAC,AAoD3C,CApD2B,YAA6B,CAAC,CAoDxD,GAAG,CAAC,SAAS,CAAA,AAAC,IAC9B,GAAM,CADgC,SAEpC,CAAQ,CACR,SAAS,CAAE,CAAI,CACf,QAAM,CACR,CAAI,GAvDN,AAwDE,CADI,QAvDG,AAAY,CAAI,CAwDZ,AAxDoB,CAAI,CAAgB,CAAM,EAAoB,IAA3D,EAClB,GAXgB,CAWZ,CAAC,KAXW,IADd,EAYqB,AAZV,CAAM,CAAC,EAYO,AAZa,CAYZ,CAAN,AAZpB,CAY4B,CAXW,QAAA,GAAb,EADW,EACc,EAAQ,EAAjC,GAAgC,SAAe,AAAd,CAAe,CAY1E,OAGF,IAAM,EAAY,AA9B1B,OA8Bc,EA9BL,AAAmB,CAAM,EAA0B,AAE1D,GAAM,GA4BoC,IA5BlC,CAAK,IAFY,EAEV,CAAI,CAAE,KAAG,UAAE,CAAQ,CAAE,GAAG,EAAK,CAAI,CAAT,CACvC,IADsD,GAC/C,CACT,EA0B6C,CA3BhC,EA6BC,CAAC,EAAY,AAFwB,CAAC,CAEhB,EAAW,CAAI,EAAjB,AACpB,CADW,CAA8B,AACjC,GAAR,AAAc,CADmB,AACrB,KAAQ,EAAE,MAAM,EAAA,CAAG,EAAW,EAAK,MAAM,CAAX,AAC1C,EAAa,EAAW,EAAM,EAAF,EAA5B,EAAuB,WAAwB,CAAE,KAAK,CAAC,CACvD,EAAa,GAAY,GAAS,CAArB,AAAwB,CAArC,CAA+C,EAA4B,AAA1B,CAAf,CAA2C,CAEnF,GAFqD,AAEjD,GAAc,EAAQ,GAAG,CAAC,CAA1B,AAAqB,KAAW,CAAC,QAAQ,CAAC,GAAQ,CACpD,CADiD,CAAC,EAC5C,EAAsC,CAC1C,GAAG,CAAS,CACZ,EAFc,aAEC,CAAE,eAAe,CAChC,mBAAmB,CAAE,CACjC,CAAW,CAEDkG,EAAAA,MAHkC,cAGd,CAAC,OAAE,EAAO,GAAF,IAAS,CAAE,UAAU,GAAE,CAAA,CAAY,CACjE,AADkE,CAGlE,GAAI,EAAQ,CAHyC,IAG1C,AAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAQ,CACxC,CADqC,CAAC,EAChC,EAAiB,CACrB,KAAK,CAAErF,EAAAA,uBAAuB,CAAC,EAC3C,CAAW,CAEDhH,CAHsC,CAAC,AAGvCA,SAAS,CAAA,AAAC,IACR,CADQ,CACF,GADW,AACZ,cAAkB,CAAA,AAAC,IACtB,EAAM,GADyB,AAC1B,GAAC,CAAS,MAAM,CAErBoB,EAAAA,qBAAqB,CAAC,EAAO,CAC3B,EADyB,KAClB,CAAE,EAAQ,KAAK,AAAN,CAAO,OAAO,CAC9B,IAAI,CAAE,eAAe,AACrC,CAAe,CAAC,CAEK,IAGT,CAHc,GAGR,EAAQ,CAAU,CAAC,CAAnB,CAA8B,EAAM,EAAF,IAAL,SAAsB,CAAE,KAAK,CAAC,CACjE,AADkE,CAC9D,EACF8F,EAAAA,CADO,EAAE,aACO,CAAC,EAAO,GAAF,AAIxB0a,EAAAA,SAJwC,CAAC,IAI3B,CAAC,EAAY,EAC7B,CAAC,CAAC,AACJ,CACF,EAQc,CAXiB,CAWP,EAAM,EAAF,CAXmB,CAAC,AAW1B,AAAY,CAAC,KAAK,CAAC,GACzC,CAAC,CAAC,AACJ,CAAC,AACL,AAHqD,CAGlD,AACH,AAJsD,CAIrD,AAJsD,CAItD,CA4B8D,CAC7D,WAAW,CAAC,CAAM,EACZ,AAD6B,GACD,GAA5B,KAA4B,EAAlB,OAAO,GAAuB,GAAvB,KAAuB,GAAY,GACrD,EAAA,CAD2D,AAC3C,EAD6C,AAC1B,CAAI,OAAA,CAAO,AAEnD,CAAC,CACD,MAHwC,OAG3B,CAAC,CAAM,EAAiB,AAC/B,GAA4B,GAA5B,KAA4B,EAAlB,OAAO,GAAuB,GAAvB,KAAuB,GAAY,IACrD,CAAA,CAD2D,AAC3C,EAD6C,AAC1B,CAAI,QAAA,CAAQ,AAEpD,CAAC,AACH,CAAC,CAAA,IAHyC,gHC9NnC,SAAyB,AAAhB,CAAoB,CAAQ,CAAM,EAAoB,AACpE,EAAK,EAAD,MADyB,IACZ,CAAC3kB,EAAAA,gCAAgC,CAAE,EACtD,IAD4D,CAAC,4FCLtD,SAAS,AAAc,CAAA,EAO5B,IAAM,EAAW,EAAe,EAPL,EAOrB,IAA0B,EAAY,EAAb,AAAe,CACxC,EAAW,EAAe,IAA1B,IAA0B,EAAY,EAAe,AAA5B,IAA4B,EAAQ,EAAE,CAG/D,EACJ,CAAC,AAJuD,CAGpD,CACY,IAAA,EAAgC,EAAA,GAAxB,CAAT,CAAwB,IAAA,EAAuC,GAAA,GAAxC,AAAgB,EAAe,IAAA,EAAgB,MAAjB,QAA+B,CAAC,IAAI,CAAC,GACrG,GACA,CAAC,CAF4G,AAE3G,EAAE,EAAe,IAAI,CAAC,CAAA,CACA,EAAA,EAAA,CADN,GACM,CAAA,EAAA,IAAA,CAAA,GAAA,CACA,GADA,GACA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,AACA,CADA,gFCjBhC,IAAM,EAAmC,CACvC,CAAC,QADe,CACN,CAAE,GAAG,CAAC,CAChB,CAAC,UAAU,CAAE,GAAG,CAAC,CACjB,CAAC,OAAO,CAAE,GAAG,CAAC,CACd,CAAC,OAAO,CAAE,GAAG,CAAC,CACd,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,MAAM,CAAE,GAAG,CAAC,CACb,CAAC,MAAM,CAAE,GAAG,CAAC,CACb,CAAC,QAAQ,CAAE,GAAG,CAAC,CACf,CAAC,WAAW,CAAE,GAAG,CAAC,CAClB,CAAC,SAAS,CAAE,IAAI,CAAC,CACjB,CAAC,UAAU,CAAE,IAAI,CAAC,CAClB,CAAC,UAAU,CAAE,IAAI,CAAC,CAClB,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,IAAI,CAAC,CACb,CAAC,KAAK,CAAE,IAAI,CAAC,CACb,CAAC,KAAK,CAAE,IAAI,CAAC,CACb,CAAC,QAAQ,CAAE,GAAG,CAAC,CACf,CAAC,QAAQ,CAAE,GAAG,CAAC,CACf,CAAC,SAAS,CAAE,GAAG,CAAC,CAChB,CAAC,WAAW,CAAE,GAAG,CAAC,CAClB,CAAC,UAAU,CAAE,GAAG,CAAC,CACjB,CAAC,QAAQ,CAAE,GAAG,CAAC,CACf,CAAC,UAAU,CAAE,GAAG,CAAC,CACjB,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACZ,CAAC,KAAK,CAAE,GAAG,CAAC,CACb,oBAKM,SAAS,AAAiB,CAAc,EAAkB,AAC/D,OAAO,EAAa,IADU,EACJ,CAC5B,AACI,CAAC,EAFgB,AAEX,CAAF,AAAG,EAAM,EAAF,AAAc,GAAK,EAAI,CAAD,GAAT,GAAiB,CAAC,AAAI,MAAM,CAAC,EAAM,EAAF,EAAM,CAAC,CAAE,GAClE,EAEJ,MAHiF,CAAC,KAChE,AAFlB,qGCOM,EAAa,QAAb,2DAAgF,kBAsB/E,SAAS,AAAkB,CAAG,CAA0B,CAAW,EACxE,AADqF,IACjF,GAAe,EAEnB,AAH4B,GACJ,IAEjB,AAFH,IAEO,KAAK,CAAC,EAAK,CAAF,AAClB,SAAS,CAAC,CAAM,CAAE,CAAI,EAA6C,AACjE,GAAM,CAAC,EAAU,EAAQ,EAAY,EAAtB,AAAQ,AAAqB,EAAU,CAAZ,EAAe,CAAtB,CAA0B,CAAT,AAAa,CAAJ,CAE7D,EAFqE,CAE7C,QAAQ,EAAE,AAA9B,OAAO,EACT,MAAM,AAAI,AADD,KACM,CAAC,GAGlB,GAAI,EACF,EAJ0B,CAAC,GAIrB,AAAI,IADI,CACC,CADC,AACA,CAAC,aAAa,EAAE,EAAY,SAAD,mBAA6B,CAAC,CAAC,CAG5E,GAAe,EAEf,EAFmB,EAEb,EAAa4kB,CAFnB,CAEmBA,MAAb,UAA6B,CAAC,GAyBpC,KAzB4C,CAAC,CAyBtC,IAAI,EAAO,EAvBlB,EAuBiB,IAAS,EAAE,OAvBb,AAAc,CAAO,CAAW,CAAU,EAA2B,AAClF,CAsBuC,MAtBhCC,CADmB,CACnBA,WAAW,CAChB,EACA,SADW,CAET,EADU,CACN,CACF,MAAM,EAAO,EAAS,EACxB,AADc,CACZ,AAAF,EADsB,IACb,CAAC,AADwB,CAAC,AACvB,CAOV,MANA5a,EAAAA,gBAAgB,CAAC,CAAC,CAAE,CAClB,SAAS,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,mCAAmC,AAC3D,CAAiB,AACjB,CAAe,CAAC,CACI,CAAC,AACT,CACF,CAAC,CACD,CACE,QAAQ,CAAE,CAAE,IAAI,CAAE,SAAS,CAAE,KAAK,CAAE,CAAA,CAAY,CAChD,OADoC,CAC5B,CAAE,QAAA,AAAY,CAClC,CAAW,CAEL,EAE2C,EAAY,EAAO,AALzB,GAKuB,EAAe,CAAtB,CACvD,CADwE,AACvE,CADgF,CAAP,AAAQ,GAElF,CAAI,EAAD,AAAS,IAAI,AACD,AADL,AACR,EAD0C,IACvB,EAAE,CAAjB,EACK,AAAC,EADN,EAEA,CADW,EACL,GADyB,OACvB,CAAQ,QAAE,CAAM,UAAE,CAAA,CAAS,CAAI,EAEvC,GAF4C,AAEpB,QAAQ,EAA5B,AAA8B,OAAvB,EACT,MADS,AACH,AAAI,KAAK,CAAC,GAGlB,GAAI,EACF,EAJ0B,CAAC,GAIjB,AAAJ,IADQ,CACC,CAAC,AADA,CACC,aAAa,EAAE,EAAY,SAAD,mBAA6B,CAAC,CAAC,CAG5E,GAAe,EAEf,EAFmB,EAEb,EAAa2a,CAFnB,CAEmBA,MAAb,UAA6B,CAAC,GAyBpC,KAzB4C,CAAC,CAE7C,EAAM,GAAD,GAAC,CAAS,MAAO,EAAkB,IAC/BC,CADoB,CACpBA,IADyC,KAAe,EAC7C,CAChB,EACA,SADW,CAET,EADU,CACN,CACF,MAAM,EAAO,EAAS,EAAV,AACd,CAAA,AAAE,EADoB,IACb,CAAC,AADwB,CAAC,AACvB,CAOV,MANA5a,EAAAA,gBAAgB,CAAC,CAAC,CAAE,CAClB,SAAS,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,mCAAmC,AAC/D,CAAqB,AACrB,CAAmB,CAAC,CACI,CAAC,AACT,CACF,CAAC,CACD,CACE,QAAQ,CAAE,CAAE,IAAI,CAAE,SAAS,CAAE,KAAK,CAAE,CAAA,CAAY,CAChD,OADoC,CAC5B,CAAE,QAAA,AAAY,CACtC,CAAe,EAIE,EAAO,GALuB,CAKxB,AAAK,CAAC,EACrB,CAAC,CAEM,CAAM,AAHa,CAAC,AAGb,EAAK,AAG3B,CAAG,CAHuB,AAGtB,AACJ,qICpIO,SAAS,AACd,CAAG,CACH,EAAqD,CAAA,CAAE,EAEvD,OAFa,AAEN,GAJyB,CAIrB,KAAK,CAAC,EAAK,CAAF,IAClB,CAAI,EAAQ,AAAT,IACY,AAAb,AADc,AAAN,EAAQ,WACZ,GAAuB,CAAvB,CAA8B,IAAD,IAAS,CAEjC,CAFmC,GAE/B,KAAK,CAAC,EAAO,IAAD,IAAS,CAAE,CAChC,KAAK,CAAC,CAAM,CAAE,CAAO,CAAE,CAAQ,EAAoC,AACjE,GAAM,CAAC,EAAY,EAAU,EAAO,CAAI,EAElC,CAFW,AAAU,CAEd,AAFuB,EAE9B,CAAgB,CAF0B,GAEtB,AAAN,CACd,EAAW,GAAS,GAApB,CAAkB,IAAU,CAElC,GAAI,CAAC,EACH,EADO,EAAE,EACH,AAAI,KAAK,CAAC,sFAAsF,CAAC,CAGzG,IAAM,EAAoB,MAAO,GAAG,IAC3B4a,AAD+B,EAC/BA,AADH,GAAmF,QACrE,CAChB,EACA,EADI,QAIF,EAHU,CAGN,CAEF,OAAO,MAAM,KAAY,EAC3B,CADuB,AACvB,AAAE,CADsB,AAAO,CAAC,IACvB,CAAC,CAAE,CAOV,MANA5a,EAAAA,gBAAgB,CAAC,CAAC,CAAE,CAClB,SAAS,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,4CAA4C,AAC1E,CAAuB,AACvB,CAAqB,CAAC,CACI,CAAC,AACT,CACF,CAAC,CACD,CACE,QAAQ,CAAE,CAAE,IAAI,CAAE,SAAS,CAAE,KAAK,CAAE2a,EAAAA,gBAAgB,CAAC,EAAU,CAAG,OAAH,GAC/D,EACA,GAAG,CAAa,AAClC,CAAiB,CAFS,CAMd,OAAO,EAAO,IAAD,CAAM,CAAC,EAAS,CAAC,EAAY,EAAmB,AAAlC,EAA0C,CAAC,AACxE,CAAC,AACX,CAAS,CAF2C,AAE1C,CAFsE,AAIjE,CAAM,CAAC,EAAgB,AAGtC,CAAG,CACH,AAJsB,AAGlB,EAPmE,wICvDhE,SAAS,AAA0B,CAAG,EAAuB,AAClE,OAAO,IAAI,KAAK,CAAC,EADmB,AACd,CAAF,IAClB,CAAI,EAAD,AAAS,IAAF,AAAM,AACd,AAAa,EADuB,WACV,EAAE,CAAxB,EAEK,EAFL,EAES,KAAK,CAAC,EAAO,IAAD,OAAY,CAAE,CACnC,KAAK,CAAC,CAAM,CAAE,CAAO,CAAE,CAAQ,EAA2C,AACxE,GAAM,CAAC,EAAkB,EAAsB,EAAQ,CAAI,EAE3D,GAC8B,AAHyB,GAAY,CAA5C,IAGO,EAHe,AAG3C,OAAO,GACyB,QAAA,EAAhC,GADO,IACA,GACP,AAAoB,YACpB,KAFO,EACA,EAEP,MAAM,AAAI,KAAK,CACb,oKAAoK,EAOxK,eAAe,IACb,OAAOC,EAAAA,IADuB,GAAkB,IAC9B,CAChB,EACA,SADW,CAGT,EAFU,IAEJ,KACR,CAAC,CACD,CAFgB,AAGd,IAHkB,IAGV,CAAE,CAAE,IAAI,CAAE,SAAS,CAAE,KAAK,CAAED,EAAAA,gBAAgB,CAAC,EAAU,CAAG,AACpF,CAAiB,CAEL,CAEA,IALqE,GAK9D,EAAO,IAAD,CAAM,CAAC,EAAS,CAhBT,EACD,EAeQ,AAA4B,EAAkB,CAAC,AAC5E,CAAC,AACX,CAAS,CAAC,CAGG,CAAM,CAAC,EAAK,AAEzB,CAAG,AAvB6C,CAuB5C,AAFoB,AAGxB,IARoF,CAfjC,gICxC/B,CACpB,eAAEE,EAAAA,cAAc,CAChB,mBAAEC,EAAAA,kBAAkB,CACpB,uBAAEC,EAAAA,sBAAsB,AACxB,2tLCeM,EAAmB,MAAM,CAEzB,EAAuB,KAFvB,aAEA,kCAA2E,CAI3E,EACoB,EAAA,GAAvB7E,EAAAA,YAAY,CAAC,KAAA,EAAgBA,EAAAA,QAD1B,IACsC,CAAC,KAAA,EAAS,EAAE,EAC9B,EAAA,GAAvBA,EAAAA,YAAY,CAAC,KAAA,EAAgBA,EAAAA,YAAY,CAAC,KAAA,EAAS,CAAC,CAAA,CACrDA,EAAAA,YAAY,CAAC,KAAA,EAAS,EAAE,CAwIb,EAAuBnD,EAAAA,gBAAvB,MAA6C,CACxD,CAAC,EAAA,EAAA,OAAA,CAAA,CAAA,AACA,GACA,EAFA,EACA,AACAC,EAAAA,EADA,uBACA,CAAA,IAIA,EAAAD,CAJA,CAAA,AAIAA,cAAA,QAAA,CAAA,EAAA,IACA,EADA,EACA,EAAA,AADA,IACAiI,AADA,EACAA,OAAA,YAAA,CAAA,CACA,GAAA,CAAA,CAEA,qCAAA,CAAA,EACA,CAAA,CADA,AACA,CAGA,GAAA,CACA,EAAA,KAAA,CAAA5F,CAAA,CAAAA,IAAA,CAAA,qBAAA,CAAA,CACA,SAAA,CAAA,CACA,CAAA,CAAA,CAEA,EAAA,aAAA,CAHA,KAGA,CAAA,CACA,CAAA,KAAA,CAEA,CAQA,GAAA,CACA,IAAA,EAAA,CAZA,AAYA,GAAA,CAAA,KAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,CACA,MAAA,CAAA,cAAA,CAAA,EAAA,aAAA,CAAA,CAAA,GACA,MAAA,CAAA,IADA,CAAA,SACA,CAAA,EAAA,aAAA,EAAA,CAAA,EACA,CAAA,KAAA,CAEA,CAEA,IALA,CAAA,EAKA,CACA,CAAA,EAGA,SAAA,EAJA,AAKA,CAAA,CACA,EAAA,CAAA,CAAA,QAIA,CAJA,QAIA,EAAA,MANA,CAMA,EAAA,KAAA,CACA,EAAA,KAAA,EAGA,EAAA,WAAA,WAAA,EAAA,EAMA,CAAApe,EAAAA,eAAA,CAAA,KAAA,CAAA,CAAA,AAKA,CAMA,CAXA,GAWA,CAXA,CAWAiI,AAXA,EAWAA,WAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CACA,CADA,GACA,EAAA,EAAA,CAAA,IAAA,EAAA,GACA,CADA,CACA,EAAA,KAAA,kBAAA,IAAA,CAEA,EAAA,CACA,QAAA,CAAA,CADA,CACA,KAAA,0BAAA,CACA,sBAAA,CAAA,EAAA,KAAA,iBAAA,CACA,iBAAA,CAAA,EAAA,KAAA,oBAAA,CACA,kBAAA,CAAA,EAAA,KAAA,qBAAA,AACA,CAAA,CAEA,EAAA,CACA,eADA,OACA,CAAA,EAAA,KAAA,iBAAA,CACA,kBAAA,CAAA,EAAA,KAAA,aAAA,CACA,iBAAA,CAAA,EAAA,KAAA,iCAAA,CACA,eAAA,CAAA,EAAA,KAAA,UAAA,CACA,aAAA,CAAA,EAAA,KAAA,kBAAA,AACA,CAAA,CAEA,EAAAgU,EAAAA,EAAA,mBAAA,CAAA,GACA,EAAAC,EAAAA,MADA,CAAA,AACA,mBAAA,CAAA,GAEA,EAAA,GAAA,CAAA,CAAA,CAEA,MAAA,CACA,AALA,CAAA,CAEA,EAGA,CAAA,EACA,KAAA,CAAA,CAAA,EAAA,AACA,EALA,EAKA,CAFA,CAEA,EAAA,IAAA,KAAA,CAAA,EAAA,CAEA,GAAAlc,EAAAA,YAAA,GAAA,CAAA,IACA,EAAA,KAAA,CAAA,CADA,CAAA,AAGA,CAAA,AAFA,CADA,AAIA,EAHA,CAAA,MAGA,GAAA,AAEA,IAAA,EAAA,EAAA,EADAN,EAAAA,GACA,EAAA,IADA,EAAA,EAAA,KACA,CAAA,IADA,EAAA,EAAA,AACA,CADA,CAAA,CAAA,CAGA,EAAA,IAAA,KAAA,EAAA,CA4BA,EA1BA,CACA,WAAA,CAAA,EAAA,GAyBA,CAAA,CAzBA,MAAA,CACA,wBAwBA,CAAA,OAxBA,CACA,WAAA,OAAA,EAAA,KAAA,WAAA,CACA,EAAA,KAAA,WAAA,CACA,GAAA,CAAA,EACA,wBADA,MACA,CAAA,EACA,AAFA,KAEA,CAAA,EAAA,KAAA,CACA,sBAAA,CAAA,AAFA,EAEA,KAAA,iBAAA,CACA,mBAAA,CAAA,CAAA,EAAA,EAAA,GAEA,EAFA,EAEA,EAAAukB,CAFA,AAEA,CAAAA,aAAA,CAAA,GACA,GAAA,CADA,CACA,AADA,CACA,SAAA,CAAA,OAAA,CAAA,CAAA,CACA,IAAA,EAAAna,EAAAA,QAAA,WAAA,CAAA,GACA,AADA,CAAA,CACA,EAAA,UAAA,CAAA,UAAA,CAAA,GACA,EAAA,EAAA,KADA,CAAA,IACA,CAAA3C,EAAAA,2BAAA,CAAA,GACA,EAAA,EAAA,KADA,CAAA,EACA,CAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,AACA,CAEA,EAAA,KAAA,AAHA,UAGA,EAAA,WAAA,GAAA,EAAA,EAAA,AACA,CAAA,CACA,GAFA,CAAA,gBAEA,CAAA,EAAA,KAAA,UAAA,EAAA,YAAA,CACA,oCAAA,CAAA,EAAA,KAAA,UAAA,EAAA,2BACA,AADA,CACA,EAMA,GAEA,EADA,AAYA,SAAA,EAAA,CAAA,CAAA,EAAA,AA+CA,CA1DA,AAWA,CAXA,IAFA,AACA,AAaA,CAEA,AA4CA,CA5DA,OAaA,QAXA,CAAA,IA0DA,gBA5CA,CAAA,EAEA,yBAAA,CAAA,IACA,GADA,CACA,EAAA8c,CADA,AACA,AAHA,CAGAA,aAAA,CAAA,GAEA,GAAA,CAFA,AAEA,CAFA,CAGA,CADA,EAAA,IACA,EAGA,GAHA,CAGA,EAAA,EAAA,KAAA,cAAA,GAAA,SACA,IAAA,EAAA,CAAA,CAKA,CAAA,CAEA,GAPA,CAAA,EAAA,OAAA,gBAOA,EAAA,EACA,GADA,QACA,CAAA,CAAA,EAAA,EAAA,CAAA,EACAC,EAAAA,CADA,cACA,CAAA,EAAA,EAAA,mBAAA,CAAA,CAGA,IAAA,EAAAD,CAAA,CAAAA,aAAA,CAAA,GAAA,AACA,EADA,CACA,EAAA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA,CACA,IAAA,EAAAna,EAAAA,QAAA,WAAA,CAAA,GAAA,AACA,CADA,CACA,EAAA,UAAA,CAAA,UAAA,CAAA,GACA,EAAA,EAAA,KADA,CAAA,IACA,CAAA3C,EAAAA,2BAAA,CAAA,GACA,EAAA,EAAA,KADA,CAAA,EACA,CAAA,CAAA,EAAA,EAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CACA,AADA,CAGA,EAAA,KAHA,AAGA,UAAA,EAAA,WAAA,GAAA,EAAA,EAAA,AACA,CADA,AACA,CADA,AAEA,YAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EACA,EAAA,CADA,IACA,UAAA,EAAA,YAAA,GAAA,EAAA,EACA,AADA,CAAA,AACA,CADA,AAEA,2BAAA,CAAA,CACA,EACA,EADA,AAEA,KADA,AAGA,EAAA,CAFA,IAEA,UAAA,EAAA,2BAAA,GAAA,EAAA,EAAA,EACA,CAAA,AACA,CAAA,AAGA,CALA,CAvDA,EAuDA,CApDA,AAoDA,CApDA,GAHA,CAAA,UAIA,GAGA,EAAA,AAHA,EAAA,KAAA,EAGA,GAAA,CAAA,EAEA,CAAA,AACA,CAAA,CAHA,CAAA,yIC7SA,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAC1B,AAD2B,EAC3B,YAAY,CAAG,uCAAuC,CAAC,+GCHpE,IAAA,EAAA,EAAA,CAAA,CAAA,OAA8C,CAC9C,EAAA,EAA0B,CAAA,CAAA,QAE1B,EAAA,CAF0B,CAE1B,CAAA,CAAA,QAIA,EAAA,EAAA,CAAA,CAAA,IADwC,EAaZ,EAC5B,EAAA,EAAA,CAAA,CAAA,OAI6B,CAC7B,EAAA,EAAA,CAAA,CAAA,QAkBA,EAAA,EAA0D,CAAA,CAAA,OAmB1D,EAtB6C,KAsBhC,GAnB6C,OAmBf,EAAA,SAAR,UAAwD,CAIjF,cAAc,CAAG,IAAI,OAAO,AAAyC,AAI7E,EAJ4E,WAIhE,EAAsC,CAAA,CAAE,CAAA,CAClD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAAC,AAGkB,GAJ0B,CAItB,AAJuB,CAAC,CAIxB,CAEvB,CAAC,AAEQ,OAAO,EAAA,CACd,KAAK,CAAC,OAAO,EAAE,CAAC,AAChB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA,AAAC,GAAO,AAAJ,CAAC,CAAO,CAAD,UAAY,EAAE,CAAC,CAAC,AACpD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAG,CAAC,AAC9B,CAD+B,AAC9B,AAEQ,MAAM,EAAA,CAUb,KAAK,CAAC,MAAM,EAAE,CAAC,AAIf,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,EAAI,EAAE,CAAC,AAGxC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAG,CAAC,EAAE,CAIlC,IAAI,CAAC,kBAAkB,CACrB,uBAAuB,CACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC,AACF,IAAI,CAAC,kBAAkB,CACrB,2BAA2B,CAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC,AACF,IAAI,CAAC,kBAAkB,CACrB,wBAAwB,CACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAClC,CAAC,AACF,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,AAC3E,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,AAC3E,CAAC,AAEkB,wBAAwB,EAAA,CACzC,IAAI,CAAC,4BAA4B,CAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAC5D,EAAA,mCAAmC,CACnC,CACE,WAAW,CAAE,kDAAkD,CAC/D,IAAI,CAAE,GAAG,CACT,SAAS,CAAE,EAAA,SAAS,CAAC,MAAM,CAC3B,MAAM,CAAE,CACN,wBAAwB,CAAE,CACxB,KAAK,AAAE,IAAI,AAAE,KAAK,AAAE,IAAM,AAAF,KAAS,AAAF,GAAO,AAAF,IAAQ,AAAF,GAAK,AAAE,IAAI,AAAE,CAAC,CAAE,GAAG,CAAE,CAAC,CAChE,GAAG,CAAE,EAAE,CACR,CACF,CACF,CACF,AACH,CADI,AACH,AAEO,kBAAkB,CACxB,CAAyB,CACzB,CAAwD,CAAA,CAIxD,IAMI,EANE,CAAC,EAAO,EAAM,CAAG,AAAX,EAAO,CAMQ,CAAC,GANE,CAAC,OAAO,CACnC,OAAO,CAAC,GAAG,CAAE,EAAE,CAAC,CAChB,KAAK,CAAC,GAAG,CAAC,CACV,GAAG,CAAA,AAAC,CAAC,CAAC,CAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,AAIvB,GAHwB,CAGpB,CAH4B,EAAE,CAAL,CAAoB,EAAE,GAAZ,GAAgB,EAGpC,AAHyB,CAAoB,CAG3C,CAHuC,AAAM,CAAC,AAIjE,CAJkE,CAI3D,IAAD,KAAU,EAAE,CAAC,EAAmB,GACtC,EAAc,GAAG,CAAG,AAD2B,CAAC,AAC7B,CAD8B,AACtB,GAAhB,CAAe,AADU,OACE,EAAE,CAAC,EAAmB,OACvD,CACL,CAFqE,CAAC,CAAC,CAEjE,EAAU,CAF0C,CAEnC,GAAV,CAAS,GAAQ,CAAC,GAC/B,EAAQ,KAAD,IAAU,CAAC,EAD8B,CAEhD,AAFiD,CAAC,CAEpC,GAAG,CAAG,AADO,CAAC,AACT,CADU,AACD,GAAjB,EAAgB,MAAY,CAAC,GACzC,AAED,IAAI,CAAC,CAH8C,CAAC,CAAC,SAGpC,CAAC,IAAI,CAAC,CACrB,IAAI,CAAE,cACN,EACD,CACH,AADI,AAFuB,CAG1B,AAEO,AAHH,OADU,YAIY,CAAC,CAAsB,CAAA,CAChD,IAAM,EAAS,IAAH,AAAO,GAAG,CAEtB,CAFmD,CAAC,CAEhD,KAAK,CAAC,OAAO,CAAC,EAAQ,KAAD,EAAQ,CAAC,CAGhC,CAHkC,GAG7B,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAQ,KAAD,EAAQ,CAAC,MAAM,CAAE,CAAC,EAAI,CAAC,CAAE,CAClD,IAAM,EAAM,CAAH,CAAW,KAAD,EAAQ,CAAC,CAAC,CAAC,CAAC,AACzB,EAAQ,EAAQ,CAAX,IAAU,EAAQ,CAAC,CAAC,CAAG,CAAC,CAAC,AAGhC,AAAe,CAHkB,OAGV,EAAE,QAAlB,GAAG,AACZ,EAAO,GAAG,CAAC,AAAL,EAAS,CAAD,UAAY,EAAE,CAAE,GAEjC,EAFsC,CAAC,CAAC,CAGpC,GAA+B,QAAQ,EAAnC,AAAqC,OAA9B,EAAQ,KAAD,EAAQ,CAI/B,IAAK,IAAM,IAAI,CADC,EAAQ,CACL,IADI,EAAQ,CAAC,AACN,KADW,CAAC,MAAM,CAAC,CAAC,AAClB,CAC1B,GAAI,CAAC,EACH,EADO,EAAE,KACA,AAEX,IAAM,EAAa,EAAK,EAAD,IAAP,CAAe,CAAC,GAAG,CAAC,CAAC,AACrC,GAAmB,CAAC,CAAC,EAAE,CAAnB,EAEF,QAFY,CAEH,AAEX,IAAM,EAAM,CAAH,CAAQ,EAAD,OAAU,CAAC,CAAC,CAAE,GAAY,OAAF,CAAC,GAAY,EAAE,CAAC,AAClD,EAAQ,EAAK,CAAR,CAAO,OAAU,CAAC,EAAa,CAAC,CAAC,CAAC,IAAI,CAAV,CAAY,CAAC,AAC9C,EAAY,EAAO,GAAG,CAAJ,AAAK,CAAd,CAEX,CAF4B,CAAC,CAAC,CAEjB,KAAJ,AAAS,CAAC,OAAO,CAAC,GAC7B,EAAU,IAD4B,AACxB,CADyB,AACxB,EAD0B,AAChC,CACA,EACT,AAFoB,CAAC,CAEd,AAFe,GAEZ,CAAJ,AAAK,CADO,CACF,CADI,AACN,AAAG,EAAW,EAAM,CAAC,CAAC,AAEpC,CAFiC,CAE1B,CAFmB,EAEhB,CAAJ,AAAK,EAAK,CAAF,EAEjB,AAEH,EAJ2B,CAAC,CAAC,GAItB,CACT,CAAC,AAKO,IANO,CAAC,WAMQ,CAAC,SAAE,CAAO,CAAkB,CAAA,CAKlD,IAgBI,EA4DA,EA5EE,EAAS,AA4ED,CAAC,GA5EH,AAAO,AAgBL,CAhBM,AAgBL,SAhBc,EAAE,CAAC,AAC1B,GAA6B,IAAnB,AAAH,CAA2B,CAAC,AAAlB,IAAD,GAAQ,CAU9B,GATwB,CASpB,AAToB,EAAA,EAAA,WASL,EAAE,SATyB,AAAtB,EACtB,GAAG,CACD,CADG,GAEH,AAAmB,IADX,GACD,EAAqB,KAApB,MAAM,EACd,EAAO,IAAD,aAAkB,EAAE,CAAC,GAAQ,AACrC,CAAC,CAAC,CAAG,CAD+B,AAC9B,CAD+B,CAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAE,CAAC,CAAC,CACjE,IAAI,AAIJ,CAHD,CAAC,KAGO,AAGT,IAAM,EAAY,GAAA,EAAA,EAAH,IAAG,AAAM,GAAE,CAAC,AAE3B,GAAI,CACF,EAAa,IAAI,EAAA,EAAP,CAAU,CAAC,EAAQ,IAAI,CAAL,AAAO,EAAQ,KAAD,CAAO,CAAC,CAAC,AACpD,AAAC,MAAO,EAAK,CAAF,AACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAE,GAAG,AAEpD,CAFqD,CAAC,KAE/C,AACR,AACD,IAAM,EAAY,EAAW,KAAd,GAAa,AAAS,CAAC,OAAO,CAAC,GAAG,CAAE,EAAE,CAAC,CAAC,AACjD,EAAgB,IAAI,CAAC,MAAR,UAAwB,CAAC,EAAQ,KAAD,CAAO,CAAC,CAAC,AACtD,EAAyB,CAC7B,CAAC,EAAA,IADa,oBACW,CAAC,CAAE,EAC5B,CAAC,EAAA,QADwC,yBACP,CAAC,CAAE,EAAQ,KAAD,CAAO,CACnD,CAAC,EAAA,aAAa,CAAC,CAAE,EAAW,QAAD,AAAS,EAAE,CACtC,CAAC,EAAA,aAAa,CAAC,CAAE,EAAW,QAAD,AAAS,CACpC,CAAC,EAAA,cAAc,CAAC,CAAE,EAAW,MAAM,CACnC,CAD4B,AAC3B,EAAA,eAAe,CAAC,CAAE,EACpB,CAAC,AAGI,EAAgB,EAAW,EAJH,MAIE,AAAS,CAAtB,AAAuB,AACpC,EAAa,EAAW,IAAI,EAAI,AAAtB,CAF4B,CAEf,AAFiB,KAAK,CAAE,KAAK,CAAE,IAAI,CAAE,IAAI,CAAA,CAAE,AAEvB,CAFwB,AAEvB,EAAU,CAAC,AAE7D,CAAU,CAAC,EAAA,EAFgD,iBAE7B,CAAC,CAAG,EAC9B,GAAc,CAAC,KAAK,CAAV,AAAW,CADsB,CAAC,IACjB,CAAC,MAC9B,CAAU,CAAC,EAAA,AAD6B,CAAC,CAAC,EAAE,YACjB,CAAC,CAAG,MAAM,CAAC,EAAU,CAAC,CAAC,AAKpD,IAAM,EADa,AACK,IADD,CAAC,KACU,GAAb,WADsB,CAAC,GACT,GAAG,CAAC,AADY,CAAC,CAAC,UACF,CAAC,CAAC,AAErD,GAAI,EAAiB,CAInB,IAAM,EAAY,KAAK,CAJN,AAIO,CAAT,MAAgB,CAAC,GAC5B,CAAe,CAAC,EAAgB,MAAM,CAAG,CADE,AACD,CADE,AACD,CAC3C,EACJ,CAAU,AAFyB,CAExB,EAAA,SADQ,CAAC,cACe,CAAC,CAAG,EACxC,AAGD,IAAM,EAAiB,CAAA,AAJ2B,CAAC,CAI5B,EAAA,OAAH,eAAG,AAAsB,EAC3C,GAAG,CAAG,CAAD,CAAQ,IAAD,SAAc,EAAE,CAAC,GAAQ,AACrC,CAAC,CAAC,CAAG,CAD+B,AAC9B,CAD+B,CAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAE,CAAC,CAAC,EAC7D,EAEE,EAFE,CACL,CAAC,AAEA,MAAM,CAAC,GADS,EAAE,EACJ,CAAC,GAAgB,OAAO,CAAC,CAAC,CAAC,CAAZ,CAAiB,AAAhB,CAAc,CAAM,CAAD,CAAG,EAAE,AACpD,CAAU,CAAC,EAAI,CAAD,AAAI,CACpB,CAAC,CAAC,AADqB,CAAC,AACrB,AAOL,IAAM,EAAY,EAAA,KAAH,EAAU,CAAC,MAAM,EAAE,CAAC,AAC7B,EAAc,EAAA,KAAK,CAAC,CAAT,MAAgB,CAAC,GAShC,GALA,CAKI,CALG,CAJkC,CAAC,CAAC,CAIrC,iBAAsB,EAC1B,AAAD,EAAD,CAAkB,EAAA,KAAK,CAAV,AAAW,IAAP,cAAyB,CAAC,EAAY,SAAD,EAAY,EAAE,CAAC,CAAC,AAI/D,EAHP,EAGW,CAAC,MAAM,CAAC,SAAS,CACR,QAAQ,CAAC,CAAC,CAA5B,EAA6B,MAAM,CAAC,AAAE,CAAD,CACrC,CACE,CAFW,GAEP,CAAE,EAAA,GAF2C,KAEnC,CAAC,MAAM,CACrB,UAAU,CAAE,EACb,CACD,GARK,EAAA,EAMmB,EAEf,CARC,AASX,CATY,AASX,eAT0B,CAAC,EAAA,oBAAoB,CAAC,CAAC,AAarD,GAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,CAAG,CAAD,CAAQ,IAAD,OAAY,EAAE,CAAC,EAAM,EAAF,CAC/B,AADyC,CACxC,CAAC,CAAG,CAAC,AADkC,CAAC,CAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAE,CAAC,CAAC,EAC3D,GAKF,CALM,CACL,CAAC,CAII,EAAiB,EAAA,KAAK,CAAC,IAAT,GAAgB,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GACjD,CADqD,CACd,AADe,CACf,AADgB,CACd,CAAC,AAChD,EAAA,KADkB,MACP,CAAC,MAAM,CAAC,EAAgB,GAEnC,IAAM,EAAgB,GAFyB,AAAd,CAAe,CAAC,CAErB,CAAC,IAAV,GAAiB,CAAC,GAErC,IAAK,IAAI,CAFwC,AAEvC,CAFwC,AAErC,CAFsC,AAErC,CAAE,CAAC,CAAG,EAAc,MAAM,CAAE,CAAC,EAAE,CAAE,AAAd,CAC/B,GAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAG,CAAa,CAAC,CAAC,CAAC,CAAC,AAEC,UAAU,EAAE,AAAzC,OAAO,EAAQ,KAAD,IAAU,CAC1B,EAAQ,KAAD,IAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,AACY,QAAQ,EAAnC,AAAqC,OAA9B,EAAQ,KAAD,EAAQ,CAC/B,EAAQ,KAAD,EAAQ,EAAI,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA;AAAA,CAAM,CAAC,AAC3B,KAAK,CAAC,OAAO,CAAC,EAAQ,KAAD,EAAQ,CAAC,EAAE,AAEzC,EAAQ,KAAD,EAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,AAE9B,AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAS,KAAF,CAAI,EAAM,EAAF,QAAY,GAAE,SAAS,EAAA,CAAE,CAAC,AACnE,CADoE,AACnE,AAKO,gBAAgB,CAAC,SAAE,CAAO,QAAE,CAAM,CAAyB,CAAA,CACjE,IAAM,EAAS,IAAH,AAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAEvC,GAAI,CAF2D,AAE1D,CAF2D,CAAC,AAG/D,IADS,EAAE,CACJ,AAGT,IAAM,EAAS,IAAH,AAAO,CAAC,SAAS,EAAE,CAAC,AAC1B,MAAE,CAAI,CAAE,CAAG,EACX,IADiB,CAAC,UAChB,CAAa,YAAE,CAAU,CAAE,CAAG,EAChC,EAA6B,CACjC,CAAC,AAFyC,CAAC,CAE1C,QADiB,iBACQ,CAAC,CAAE,EAC7B,CAAC,EAAA,QADyC,cACnB,CAAC,CAAE,EAC3B,CAID,AAJE,GAIE,EAAO,EAL2B,EAK5B,mBAAwB,EAAE,cAAc,CAAE,CAClD,IAAM,EAAmB,IAAI,GAAG,CAC9B,EAAO,IAAD,AADc,mBACU,CAAC,cAAc,CAAC,GAAG,CAAA,AAAC,CAAC,CAAC,CAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CACxE,CAAC,AAGF,IAAK,GAAM,CAAC,EAAM,EAAF,AAAQ,GAFL,AAEI,AAAK,IAFL,CAAC,KAEc,cAFK,CAAC,GAEL,IAFY,CAAC,CAAC,CAEP,EAAE,CAAE,AAChD,GAAI,EAAiB,GAAG,CAAC,GAAO,CAAH,AAC3B,CAD4B,GACtB,EADY,AACA,KAAK,CAAC,CAAT,MAAgB,CAAC,GAAS,EAAJ,AAAY,CAAX,AAAY,CAAX,CAAC,AAAM,AAAU,CACxD,AADyD,AAAV,CACjC,AADkC,CACjC,AADwC,CACxC,oBAAA,EAAuB,EAAI,CAAE,CAAF,AAAG,CAAG,EACjD,CAIL,AAFC,EAEI,EAAD,EAL2D,CAAC,QAK9C,CAAC,EACrB,CAKQ,AALP,WADkC,CAAC,CAAC,IAMZ,CAAC,SACxB,CAAO,UACP,CAAQ,CACe,CAAA,CACvB,IAAM,EAAS,IAAI,AAAP,CAAQ,cAAc,CAAC,GAAG,CAAC,GAEvC,GAAI,CAAC,AAFyC,CAAC,CAG7C,AAH8C,IAErC,EAAE,CACJ,AAGT,GAAM,MAAE,CAAI,YAAE,CAAU,CAAE,CAAG,EACvB,EAA6B,CACjC,CAAC,AAFgC,CAAC,CAEjC,QADiB,sBACa,CAAC,CAAE,EAAS,MAAD,IAAW,CACtD,CAAC,AAEI,EAAS,IAAH,AAAO,CAAC,SAAS,EAAE,CAS/B,AATgC,GAGhC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,CAAG,CAAD,CAAQ,IAAD,QAAa,EAAE,CAAC,EAAM,EAAF,OAAI,OAAO,IAAE,CAAQ,CAAE,CAAC,CAAA,AACxD,CAAC,CAAC,CAAE,CADiD,AAC/C,EAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAE,CAAC,CAAC,EAC5D,GAGE,CAHE,CAGK,AAFV,CAAC,GAEQ,mBAAwB,EAAE,eAAe,CAAE,CACnD,IAAM,EAAmB,IAAI,GAAG,CAChC,CADkC,CAAC,AAC5B,IADe,AAChB,mBAAwB,EAAE,eAAe,CAAC,OAAO,CAAA,AAAC,GACtD,CAD0D,CAAC,AAC1C,GAAG,CAAC,EAAK,EAAD,MAAT,GAAqB,EAAE,CAAC,CACzC,CAAC,AAEF,IAAK,IAAI,EAAM,CAAC,AAAJ,CAAM,EAAM,CAAH,CAAY,MAAD,CAAQ,CAAC,MAAM,CAAE,GAAG,AAAS,CAAC,CAAE,CAC9D,AADqD,GAAG,CAClD,EAAO,EAAH,AAAY,MAAD,CAAQ,CAAC,EAAI,CAAD,AAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,AACtD,EAAQ,EAAS,CAAZ,KAAW,CAAQ,CAAC,EAAM,CAAH,AAAI,CAAC,CAAC,AAExC,GAAI,EAAiB,GAAG,CAAC,GAAO,CAAH,AAC3B,CAD4B,GACtB,EADY,AACD,CAAA,KAAH,gBAAG,EAAwB,EAAI,CAAE,CAAC,AAC3C,AADwC,MAClC,CAAC,MAAM,CAAC,EAAgB,GAGhC,CAAc,CAAC,EAAsB,CAAC,AAHE,CAAC,EAAE,CAGD,AAHZ,CAGP,AAAoB,EAAM,GAAD,KAAS,EAAE,CAAC,CAAC,AAF9D,CAAc,CAAC,EAAS,CAAG,CAAC,EAAM,EAAX,CAAU,KAAS,EAAE,CAAC,CAAC,AAIjD,CACF,CACF,AAED,EAAK,EAAD,WAAc,CAAC,GACnB,EAAK,EAAD,OAD6B,AACnB,CADoB,AACnB,CADoB,AAEjC,IAAI,CACF,EAAS,MAAD,IAAW,EAAI,GAAG,CACtB,EAAA,cAAc,CAAC,KAAK,CACpB,EAAA,cAAc,CAAC,KAAK,CAC3B,CAAC,CAAC,AACH,EAAO,IAAD,MAAW,CAAG,MAAM,CAAC,MAAM,CAAC,EAAY,EAChD,CAAC,AAGO,KAJsC,CAIhC,CAAC,IAJ+C,CAAC,CAAC,GAI/C,CAAO,CAA0B,CAAA,CAChD,IAAM,EAAS,IAAH,AAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAEvC,GAAI,CAF0C,AAEzC,CAF0C,CAG7C,AAH8C,IAErC,EAAE,CACJ,AAGT,GAAM,MAAE,CAAI,YAAE,CAAU,WAAE,CAAS,CAAE,CAAG,EAGxC,EAAK,EAHyC,AAG1C,CAH2C,AAGvC,EAAE,CAAC,AACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAG3B,IAHkC,AAG9B,CAAC,AAH8B,CAAC,oBAGV,CAAC,EAAY,EACzC,CAQQ,AARP,KADsC,CAAW,CASnC,AAToC,CASnC,AAToC,SASlC,CAAO,OAAE,CAAK,CAAO,CAAA,CACrC,IAAM,EAAS,IAAH,AAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAEvC,GAAI,CAAC,AAFyC,CAAC,CAAC,AAG9C,IADS,EAAE,CAIb,AAHS,GAGH,MAAE,CAAI,YAAE,CAAU,WAAE,CAAS,CAAE,CAAG,EAQxC,EAAK,EARyC,AAQ1C,CAR2C,YAQ3B,CAAC,GACrB,EAD0B,AACrB,CADsB,CAAC,AACxB,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAM,GAAD,IAAQ,CACvB,CAAC,CAAC,AACH,EAAK,EAAD,CAAI,EAAE,CAAC,AACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAG3B,CAAU,CAAC,EAHuB,AAGvB,CAHwB,CAAC,aAGV,CAAC,CAAG,EAAM,GAAD,IAAQ,CAAC,AAC5C,IAAI,CAAC,qBAAqB,CAAC,EAAY,EACzC,CAAC,AAEO,KAH+B,CAAW,CAAC,CAAC,aAGvB,CAAC,CAAsB,CAAE,CAAiB,CAAA,CAErE,IAAM,EAAgC,CAAA,CAAE,CAUxC,AAVyC,AAEtB,CACjB,EAAA,OAOQ,EAVa,qBAGS,CAC9B,EAAA,wBAAwB,CACxB,EAAA,mBAAmB,CACnB,EAAA,gBAAgB,CAChB,EAAA,eAAe,CACf,EAAA,eAAe,CAChB,CAAC,AACS,OAAO,CAAA,AAAC,GAAG,CAAC,AACjB,EADmB,CAChB,EAAI,IACT,CAAiB,CAAC,EAAI,CAAD,AAAI,CADN,AACgB,CAAC,CADf,CACkB,AAAC,CAAC,AAE7C,CAAC,CAAC,CAAC,AAGH,IAAM,EACJ,CAAA,EAAA,EAAA,QADmB,YACnB,AAAoB,EAAC,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAW,CAAA,EAAA,EAAA,EAAF,IAAE,AAAM,GAAE,CAAC,CAAC,CAAG,IAAI,AAClE,CADmE,GAC/D,CAAC,4BAA4B,CAAC,MAAM,CACtC,EACA,EAEJ,CAAC,AAEO,UALW,IACE,CAClB,CAGqB,AAHpB,CAGqB,CAAgB,CAAA,QAevC,AAAI,EAAS,MAAD,KAAY,EAAE,EAdL,CACnB,CAa4B,MAbrB,EAAE,EACT,EAYwC,AAb3B,EAa6B,GAZnC,EAAE,EACT,EADa,EACT,EAAE,EACN,EADU,CACP,EAAE,EACL,EADS,EACL,EAAE,EACN,EADU,CACP,EAAE,EACL,EADS,GACJ,EAAE,EACP,EADW,IACL,CAAE,GACR,CADY,IACP,CAAE,GAEP,CAFW,IAEN,EAAE,EACR,CAAC,AAGO,CAJI,CAIK,MAAD,KAAY,EAAE,CAAC,AAGzB,QAAQ,AACjB,CADkB,AACjB,CACF,AA5dD,EAAA,qBAAA,CAAA,sBA4dC,WC3hBE,OAAA,cAAA,CAAA,EAAA,aAAA,2CAEH,IAAA,EAAA,EAAiD,CAAA,CAAA,QAAxC,OAAA,CAAwC,aAAxC,CAAA,EAAA,wBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,qBAAqB,CAAA,GAAA,6HCAxB,EAAmB,WAAW,CAuC9B,EAvCA,AAuC0B4U,EAAAA,mBAA1B,GAAgD,CACpD,EACAoI,EAAAA,YADgB,SACK,CACrB,AAAC,GACQ,EAAuB,EADxB,EAKJ,EAA4BpI,CALD,AACQ,CAAC,AAIRA,YAJD,SAI3B,CAAkD,CACtD,CAAC,EAAA,EAAA,OAAA,CAAA,CACAS,EAAAA,GADA,2BACA,CACA,GACA,GAuBA,CAxBA,CAwBAvU,EAvBA,AAuBAA,EAxBA,eAwBA,CAnBA,AAmBA,CAnBA,EAAA,CAmBA,AAnBA,CAAA,GAAA,AACA,EADA,AAEA,IAAA,CAAA,WAAA,CAiBA,AAhBA,SAAA,GAIA,AAHA,AADA,CAiCA,SAAA,CAAA,CAAA,EAAA,CA7BA,AA6BA,CAAA,CA7BA,CA6BA,AAGA,IAnCA,EAmCA,CAHA,OAAA,GAGA,OAAA,EAAA,KAAA,CACA,EAAA,KAAA,CACA,CAAA,EAAA,WAAA,WAAA,EAAAjI,EAAAA,eAAA,CAAA,GACA,EAtCA,EAAAN,EAAAA,GAAA,CAqCA,CAAA,IArCA,EAAA,EAAA,UAAA,EAAA,CAAA,EAIA,EAAA,GAMA,EAAA,EANA,AAOA,CAPA,AAOA,CACA,CAAA,EAFA,AAQA,CARA,QANA,AAcA,EAAA,CAAA,CAAA,EAAA,CARA,CAQA,CAAA,EAAA,AACA,GADA,CACA,EAAA,CAAA,EAAA,EAAA,CAAA,GAAA,KAEA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,GAAA,CAAA,CACA,CADA,AACA,EAAA,EAAA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,GAAA,CAAA,CAIA,CAJA,AAIA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,AAHA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAIA,AAJA,CAeA,AAfA,SAeA,EAAA,EAAA,CAAA,CAAA,EAAA,AAiCA,CAjCA,KACA,CACA,AA+BA,OAjCA,cAEA,AA+BA,EA/BA,EACA,GADA,cACA,CAAA,IACA,GADA,CACA,EAAA,CADA,AACA,CAAA,EAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CACA,EAAA,EAAA,KAAA,cAAA,GAAA,CAGA,MAAA,CAAA,CAAA,CAFA,GAAA,GAAA,EAAA,EAAA,CAGA,AAHA,AAEA,CACA,CACA,UAJA,GAIA,CAAA,EAJA,EAKA,GADA,CACA,EAAA,CAAA,AADA,CACA,EAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAGA,GAAA,EAAA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA,CACA,IAAA,EAAAoK,EAAAA,QAAA,WAAA,CAAA,GAAA,AACA,CADA,KACA,CACA,CAAA/K,EAAAA,gCAAA,CAAA,CAAA,2BAAA,CACA,UAAA,CAAA,EACA,CAAAoI,EAAAA,OADA,oBACA,CAAA,CAAA,EACA,CAAA/H,EAAAA,OADA,mCACA,CAAA,CAAA,CAAA,EAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,CAAA,AACA,CAAA,AACA,CAEA,MAAA,CAJA,AAKA,CAAAL,EAAAA,gCAAA,CAAA,CAAA,2BAAA,AACA,CACA,AADA,CACA,CACA,WAAA,CAAA,EAAA,KAAA,MAAA,CACA,YAAA,CAAA,EAAA,KAAA,OAAA,CACA,uBAAA,CAAA,EAAA,KAAA,kBAAA,AACA,CAGA,AAHA,0FCrIA,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,mCAAmC,CAAC,+BCJ7D,OAAA,cAAA,CAAA,EAAA,aAAA,6EAIU,EAAA,iBAAiB,CAAe,CAC3C,QAAQ,CACR,YAAY,CACZ,OAAO,CACP,OAAO,CACP,UAAU,CACV,IAAgB,CAChB,QAAQ,CACR,MAAM,CACN,OAAO,CACP,SAAS,CACT,OAAO,CACP,SAAS,CACT,MAAM,CACN,SAAS,CACT,SAAS,CACT,UAAU,CACV,UAAU,CACV,UAAU,CACV,QAAQ,CACR,IAAI,CACJ,OAAO,CACP,MAAM,CACN,SAAS,CACT,UAAU,CACV,QAAQ,CACR,QAAQ,CACR,WAAW,CAEZ,CAAC,AAEW,EAAA,kBAAkB,CAAc,CAC3C,QAAQ,CACR,YAAY,CACZ,OAAO,CACP,OAAO,CACP,UAAU,CACV,IAAe,CACf,QAAQ,CACR,QAAQ,CACR,MAAM,CACN,OAAO,CACP,SAAS,CACT,OAAO,CACP,SAAS,CACT,MAAM,CACN,SAAS,CACT,SAAS,CACT,UAAU,CACV,UAAU,CACV,UAAU,CACV,iBAAiB,CACjB,QAAQ,CACR,IAAI,CACJ,OAAO,CACP,MAAM,CACN,SAAS,CACT,UAAU,CACV,QAAQ,CACR,QAAQ,CACR,WAAW,CAcZ,CAAC,AAEW,EAAA,cAAc,CAAc,CACvC,YAAY,CACZ,gBAAgB,CAChB,WAAW,CACX,WAAW,CACX,cAAc,CACd,QAAmB,CACnB,YAAY,CACZ,YAAY,CACZ,UAAU,CACV,WAAW,CACX,aAAa,CACb,WAAW,CACX,aAAa,CACb,aAAa,CACb,UAAU,CACV,aAAa,CACb,cAAc,CACd,cAAc,CACd,cAAc,CACd,qBAAqB,CACrB,YAAY,CACZ,WAAW,CACX,QAAQ,CACR,UAAU,CACV,aAAa,CACb,cAAc,CACd,YAAY,CACZ,YAAY,CACZ,eAAe,CAchB,CAAC,+BCtHF,SAAgB,EACd,CAAqB,EAIrB,IAAM,EAAc,EAAa,CALL,IAKU,CAAC,CAAtB,EAAyB,CAAC,AAAX,CAAY,AAC5C,KAAI,EAAY,MAAM,EAAG,CAAV,AAAW,CAKxB,CAL0B,KAKnB,CAAC,EAAyD,CAJjE,AAIkE,GAJvC,CAAC,GAAxB,EAAY,AAIgD,MAJ1C,CACpB,EADa,IACP,KAAK,CAAC,CAAA,6BAAA,EAAgC,EAAY,CAAE,CAAC,CAAC,AAC9D,OAAO,AADmD,CAK9D,CAAC,SAJ2E,CAAC,yEAT7E,EAAA,cAAA,CAAA,EAeA,EAAA,OAAA,CAAA,EAAA,CAFC,MAEe,AACd,CAiBD,AAjBa,CACZ,CAAe,EAEf,EAJqB,CAIjB,CAAC,EAAQ,IAAF,EAAY,AAAJ,KAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAE,CAAM,CAAE,CAAC,CAAC,CAExD,AAFyD,CAAL,EAE9C,CAAC,EAAe,EAAc,CADhB,EACmB,AADM,MACzB,AAD+B,CAAC,CAAC,AAClB,EACnC,AAAI,CAD8C,CAAC,AAE1C,AAHyB,CAI9B,UAFa,EAAE,CAEF,CAAE,CAAE,CAAC,EAAc,CAChC,UAD+B,SACZ,CAAE,EACtB,CAAC,AAEK,CACL,SAJkC,IAIrB,CAAE,EAAE,AACjB,mBAAmB,CAAE,EAG3B,AAFK,CAAC,AAEL,UAHuC,sBCnCrC,OAAA,cAAA,CAAA,EAAA,aAAA,uCAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAC1C,EAAA,EAAA,CAAA,CAAA,OAA2E,CAC3E,EAAA,EAAA,CAAA,CAAA,QAMA,EAAA,EAA0D,CAAA,CAAA,IAFlB,IAGxC,EAAA,EAAA,CAIqB,CAAA,GALqC,KAc1D,EAAA,EAAiC,CAAA,CAAA,QACjC,EAAA,EADiC,AACC,CAAA,CAAA,QASlC,OATkC,EASzB,EAEP,CAAkB,CAAE,CAAW,EAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAiB,EACxC,CAAC,AAED,IAN8C,CAGE,CAGnC,AAHoC,CAAC,GAAZ,MAGC,EAAA,KAAR,cAAoD,CACjF,YAAY,EAAkC,CAAA,CAAE,CAAA,CAC9C,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAAC,AAED,GAH6C,CAGzC,AAH0C,CAAC,CAG3C,CAIF,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,IAAI,CACJ,CAAC,GAAG,CAAC,CACL,AAAC,EAAM,EAAE,AACP,EADS,EACJ,IAAM,KAAK,AAAI,EAAA,cAAc,CAAE,CAClC,GAAM,eAAE,CAAa,qBAAE,CAAmB,CAAE,CAAG,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAE,AAAE,GAEvD,CAAA,CAF4D,CAE5D,AAF6D,CAAC,CAE9D,SAAA,AAAS,EAAC,CAAa,CAAC,EAAoB,CAAC,EAAE,AACjD,IAAI,CAAC,OAAO,CAAC,CADgC,CACjB,GAE9B,IAAI,CAAC,GAFuB,EAElB,CACR,EACA,EACK,CAL0C,CAAC,CAAC,CAKxC,CAAC,IAFG,QACM,MACS,CAAC,IAAI,CAAC,IAAI,CAAE,IAE3C,AACD,CAHiD,CAAC,CAC/C,CAEE,AAFD,IAEO,KAAK,AAAI,EAAA,kBAAkB,CAAE,CACtC,GAAM,eAAE,CAAa,qBAAE,CAAmB,CAAE,CAAG,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAE,AAAE,GAI3D,EAJgE,CAAC,AAC7D,CAD8D,AAC9D,EAAA,EAAA,SAAA,AAAS,EAAC,CAAa,CAAC,EAAoB,CAAC,EAAE,AACjD,IAAI,CAAC,OAAO,CAAC,CADgC,CACjB,GAEhB,QAAQ,AAFM,GAExB,EAAoB,CAGtB,EAL+C,AAExC,CAFyC,CAK5C,AAL6C,CAK5C,KAAK,CACR,EACA,EACK,IAAI,CAAC,IAFG,QACM,gBACmB,CAAC,IAAI,CAAC,IAAI,CAAE,IAEpD,CAFyD,CAAC,CACzD,CAAC,KACO,AACV,AACD,IAAI,CAAC,KAAK,CACR,EACA,EACK,IAAI,CAAC,IAFG,QACM,UACa,CAAC,IAAI,CAAC,IAAI,CAAE,IAE/C,AACD,CAHqD,CAAC,CACnD,CAAC,AAEC,IAAM,KAAK,AAAI,EAAA,iBAAiB,CAAE,AACjC,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,EAAG,AAAD,QAAS,CAAC,EAAM,CAAC,EAAF,AAAI,AACjC,IAAI,CAAC,OAAO,CAAC,EAAE,AAAC,QAAQ,CAAE,GAE5B,EAFiC,CAAC,CAAC,AAE/B,CAAC,KAAK,CACR,EAAE,AAAC,QAAQ,CACX,EACK,GADA,CACI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAE,IAG/C,CAHoD,CAAC,CAClD,CAAC,GAEG,CACT,CADW,AACV,CADW,AAEZ,AAAC,EAAM,EACL,AADO,EAAE,MACE,IAAP,EAAE,CACN,EADoB,EAAE,AACjB,IAAM,GADkB,EACb,AAAI,EAAA,cAAc,CAAE,CAClC,GAAM,eAAE,CAAa,qBAAE,CAAmB,CAAE,CAAG,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAE,AAAE,GACvD,CAAA,CAD4D,CAAC,AAC7D,CAD8D,CAC9D,SAAS,AAAT,EAAU,CAAa,CAAC,EAAoB,CAAC,EAAE,AACjD,IAAI,CAAC,OAAO,CAAC,CADgC,CACjB,GAE/B,AACD,IAAK,IAHyB,AAGnB,KAAS,AAAJ,EAAI,CAH+B,CAAC,CAAC,eAGf,CAAE,CACtC,GAAM,eAAE,CAAa,qBAAE,CAAmB,CAAE,CAAG,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAE,AAAE,GACvD,CAAA,CAD4D,CAAC,AAC7D,CAD8D,CAC9D,SAAA,AAAS,EAAC,CAAa,CAAC,EAAoB,CAAC,EAAE,AACjD,IAAI,CAAC,OAAO,CAAC,CADgC,CACjB,GAE/B,AACD,IAAK,IAAM,AAHmB,KAGd,AAAI,EAAA,CAH+B,CAAC,CAAC,cAGhB,CAAE,AACjC,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,EAAE,AAAC,QAAQ,CAAC,EAAM,CAAC,EAAF,AAAI,AACjC,IAAI,CAAC,OAAO,CAAC,EAAG,AAAD,QAAS,CAAE,GAGhC,CAAC,CACF,AAJsC,CAAC,AAKxC,CALyC,GAKrC,EAAA,mCAAmC,CACrC,aAAa,CACb,CAAC,GAAG,CAAC,CACL,AAAC,IACC,IAAK,EADgB,EAAE,AACZ,EADc,GACT,AAAI,EAAA,iBAAiB,CAAE,AACjC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,CAAU,CAAC,EAAM,CAAC,EAAF,AAAI,AAChC,IAAI,CAAC,OAAO,CAAC,EAAY,GAE3B,EAFgC,CAAC,CAAC,AAE9B,CAAC,AAFoB,KAEf,CACR,EACA,EACK,GADA,CACI,CAAC,CAFA,oBAEqB,CAAC,IAAI,CAAC,IAAI,CAAE,IAG/C,CAHoD,CAAC,CAClD,CAAC,GAEG,CACT,CAAC,CACD,AAAC,IACC,GAHiB,CAAC,EAEG,EAAE,AACJ,EADM,EACrB,EACJ,GAD4B,CACvB,CADyB,GAAhB,AACH,IAD0B,CACrB,AAAI,EAAA,iBAAiB,CAAE,AACjC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,CAAU,CAAC,EAAM,CAAC,EAAE,AAChC,AAD4B,IACxB,CAAC,OAAO,CAAC,EAAY,EAG/B,CAAC,CACF,CAJqC,AAM1C,AADG,CACF,AAES,AARiC,AAKvC,CALwC,CAAT,gBAQP,CAC1B,CAAqB,CACrB,CAAW,CAAA,CAEX,IAAM,EAAkB,IAAI,CAAC,AA8C7B,OAAO,CA9Cc,CACQ,SAAqB,GAAG,CAAW,EAC9D,IAAM,EAAgB,EAAI,CAAD,MAAQ,CAAC,CAAf,GA4CuB,CAAC,CA5CH,EAAE,CAAC,AAE3C,GAAI,CAAC,EAAgB,KA0CqC,OA1CzB,CAAb,AAAc,GAChC,OAAO,EAAS,CAD6B,CAAC,EAAE,CAC3B,CAAC,AAAP,IAAW,CAAE,GAE9B,CAFkC,CAAC,CAAC,CAK3B,IAFP,CAEY,CAFI,CAGhB,YAHe,CAAe,CAAC,EAAc,CAC3C,IAAI,CAAE,EACP,CAAC,CADU,AAGZ,AAJ2C,OAIpC,EAAI,CAAD,MAAQ,CAAC,IAAI,CACrB,GAAA,EAAA,eAAe,AAAf,EAAgB,GAChB,EACA,IAAI,EADI,AAER,EAH6B,AAG1B,CAH2B,EAOlC,CAJW,CACR,CAAC,CAGE,EAAO,EAAgB,AAAnB,MAAyB,CAAC,MAAR,GAAiB,CAC3C,CAAA,GAAA,EAAM,EAAY,CAAE,CACT,CAAC,AAEd,GAAI,CAEF,GALkB,CAKZ,EAAM,CAAH,CAAO,CAAD,MAAQ,CAAC,IAAI,CAC1B,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAe,IAAI,AACrD,CADsD,CAAC,AAEvD,IAAI,CAF2C,CACvC,AAER,EAAG,GAGL,CAHS,CACR,CAAC,IACF,EAAgB,WAAW,CAAC,CAAb,CAA2B,CAAE,IAAI,CAAE,EAAM,EAAF,AAAd,EAAoB,EAAA,CAAE,CAAC,CAAC,AACzD,EACR,AAAC,CADU,CAAC,IACJ,EAAY,CAOnB,EAPiB,IACjB,EAAK,EAAD,aAAgB,CAAC,GACrB,EAD0B,AACrB,CADsB,CAAC,AACxB,OAAU,CAAC,CACb,OAAO,CAAE,EAAM,GAAD,IAAQ,CACtB,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC/B,CAAC,CACF,AADG,EACa,WAAW,CAAC,CAAb,CAA2B,CAAE,IAAI,CAAE,IAAI,AAAd,GAAgB,IAAI,IAAE,CAAK,CAAE,CAAC,CAAC,AACjE,CAD6D,CAEpE,GADY,CAAC,GACJ,CACR,EAAK,EAAD,CAAI,EAAE,CAEd,AAFe,AACZ,CACF,CAAC,AAC4D,EAChE,CAAC,AAES,KAH8D,CAAC,CAAC,eAG1C,CAC9B,CAAqB,CACrB,CAAW,CAAA,CAEX,IAAM,EAAkB,IAAI,CAAC,AA2E7B,OAAO,CA3Ec,CACQ,SAAqB,GAAG,CAAW,EAC9D,IAAM,EAAgB,EAAI,CAAD,MAAQ,CAAC,CAAf,GAyEuB,CAAC,CAzEH,EAAE,CAAC,AAE3C,GAAI,CAAC,EAAgB,KAuEqC,OAvEzB,CAAb,AAAc,GAChC,OAAO,EAAS,CAD6B,CAAC,EAAE,CAC3B,CAAC,AAAP,IAAW,CAAE,GAE9B,CAFkC,CAAC,CAAC,CAK3B,IAFP,CAEY,CAFI,CAGhB,YAHe,CAAe,CAAC,EAAc,CAC3C,IAAI,CAAE,EACP,CAAC,CADU,AAGZ,AAJ2C,OAIpC,EAAI,CAAD,MAAQ,CAAC,IAAI,CACrB,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,GAChB,EACA,IAAI,EADI,AAER,EAH6B,AAG1B,CAH2B,EAOlC,CAJW,CACR,CAAC,CAGE,EAAU,EAAK,EAAD,CAAP,GAAc,CAAG,CAAC,CACzB,AAD0B,EACxB,AAAG,CAAI,CAAC,EAAQ,CACxB,AADyB,GACP,CADK,SACK,EAAxB,OAAO,EAAE,AAkDX,OAAO,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,EAlDA,EAC5B,AAiDgC,CAAC,CAAC,EAjD5B,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,CAAA,GAAA,EAAM,EAAY,CAAE,CACT,CAAC,AAGd,CAAI,CAAC,EAAQ,CAAG,EAAI,AAJA,CAID,CAAP,KAAe,CAAC,IAAI,CAC9B,EACA,SAAyB,CAAa,CADzB,CAeX,OAbI,IACF,CADO,CACF,CADI,CACL,aAAgB,CAAC,GACrB,EAD0B,AACrB,CADsB,CACvB,AADwB,OACd,CAAC,CACb,OAAO,CAAE,EAAM,GAAD,IAAQ,CACtB,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC/B,CAAC,CAAC,CAEL,EAAgB,WAAW,CAAC,CAAb,CAA2B,CACxC,IAAI,CAAE,IADgC,AAC5B,GACV,IAAI,IACJ,EACD,CAAC,CAAC,AACH,CAFO,CAEF,EAAD,CAAI,EAAE,CAAC,AACJ,EAAE,AAAC,KAAK,CAAC,IAAI,CAAE,SAAS,CAAC,AAClC,CAAC,AADkC,CAEpC,CAAC,AAEF,GAAI,CAEF,OAAO,EAAI,CAAD,MAAQ,CAAC,IAAI,CACrB,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAe,IAAI,AACrD,CADsD,CAEtD,AAFuD,IAEnD,CAF2C,CACvC,AAER,EAAG,GAEN,AAAC,CAFS,CACR,CAAC,GACK,EAAY,CAYnB,EAZiB,IACjB,EAAK,EAAD,aAAgB,CAAC,GACrB,EAAK,AADqB,CAAC,CACvB,AADwB,OACd,CAAC,CACb,OAAO,CAAE,EAAM,GAAD,IAAQ,CACtB,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC/B,CAAC,CAAC,AACH,EAAgB,WAAW,CAAC,CAAb,CAA2B,CACxC,IAAI,CAAE,IADgC,AAC5B,GACV,IAAI,IACJ,EACD,CAAC,CAAC,AACH,CAFO,CAEF,EAAD,CAAI,EAAE,CACJ,AADK,EAEZ,CACF,AAIH,CAAC,CAAC,AAC4D,AAP7C,CAAC,CAQpB,CAAC,AAES,CARC,IAK6D,CAAC,CAAC,qBAGpC,CAEpC,CAAsB,CAAE,CAAW,CAAA,CACnC,IAAM,EAAkB,IAAI,CAmEtB,AAnEuB,EAoE3B,EAnE2B,IADR,KAC6B,GAAG,CAAW,EAC9D,IAAM,EAAgB,EAAI,CAAD,EAiES,IAjED,CAAC,CAAf,GAkEkB,CAAC,CAlEE,EAAE,CAAC,AAE3C,GAAI,CAAC,EAAgB,KAgEgC,OAhEpB,CAAb,AAAc,GAChC,OAAO,EAAS,CAD6B,CAAC,EAAE,CAC3B,CAAN,AAAO,IAAI,CAAE,GAE9B,CAFkC,CAAC,CAAC,CAK3B,IAFP,CAEY,CAFI,CAGhB,YAHe,CAAe,CAAC,EAAc,CAC3C,IAAI,CAAE,EACP,CAAC,CADU,AAGZ,AAJ2C,OAIpC,EAAI,CAAD,MAAQ,CAAC,IAAI,CACrB,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,GAChB,EACA,IAAI,EADI,AAER,EAH6B,AAG1B,CAH2B,EAOlC,CAJW,CACR,CAAC,CAGE,EAAU,EAAK,EAAD,CAAP,GAAc,CAAG,CAAC,CAAC,AAC1B,EAAE,AAAG,CAAI,CAAC,EAAQ,CAAC,AACzB,GAAkB,CADK,SACK,EAAxB,OAAO,EAAE,AA0CX,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,EA1CA,EA0CI,AAzChC,CAyCiC,CAAC,EAzC5B,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,CAAA,GAAA,EAAM,EAAY,CAAE,CACT,CAAC,AAGd,CAAI,CAAC,EAAQ,CAAG,EAJI,AAIA,CAAD,CAAP,KAAe,CAAC,IAAI,CAC9B,EACA,WAOE,AARW,OAGX,EAAgB,WAAW,CAAC,CAAb,CAA2B,CACxC,IAAI,CAAE,IADgC,AAC5B,GACV,EACD,CAAC,CADI,AAEN,AADG,EACE,EAAD,CAAI,EAAE,CAAC,AACJ,EAAE,AAAC,KAAK,CAAC,IAAI,CAAE,SAAS,CAAC,AAClC,CADmC,AAClC,CACF,CAAC,AAEF,GAAI,CAEF,OAAO,EAAI,CAAD,MAAQ,CAAC,IAAI,CACrB,CAAA,EAAA,EAAA,eAAe,AAAf,EAAgB,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAe,IAAI,AACrD,CADsD,CAAC,AAEvD,IAAI,CAF2C,CAG/C,AAFQ,EAEL,GAEN,AAAC,CAFS,CACR,CAAC,GACK,EAAY,CAYnB,EAZiB,IACjB,EAAK,EAAD,aAAgB,CAAC,GACrB,EAD0B,AACrB,CADsB,CAAC,AACxB,OAAU,CAAC,CACb,OAAO,CAAE,EAAM,GAAD,IAAQ,CACtB,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC/B,CAAC,CAAC,AACH,EAAgB,WAAW,CAAC,CAAb,CAA2B,CACxC,IAAI,CAAE,IAAI,AAD4B,GAEtC,IAAI,IACJ,EACD,CAAC,CAAC,AACH,CAFO,CAEF,EAAD,CAAI,EAAE,CAAC,AACL,EACP,CACF,AAGH,CAAC,CALgB,AAKf,AAEuD,CAPvC,EAWZ,CATG,CASW,GAJ6C,CAAC,CAAC,IAIlD,AAAa,CAAa,EACzC,OAAO,IAAI,OAAO,CAAA,AAAC,GACjB,EAA+B,EAAM,AADb,CAAC,CACU,CAEvC,CAAC,CAAC,AAMF,EARgD,CAAC,CAC9C,CAAC,EAEJ,MAAM,CAAC,OAH2B,OAGb,CAAC,EAAa,MAAM,CAAE,CAAE,CAAZ,IAAiB,CAAE,CAAY,CAAE,CAAC,CAAC,AACpE,MAAM,CAAC,CADyD,aAC3C,CAAC,EAAgC,EAAA,SAAS,CAAC,MAAM,CAAE,CACtE,KAAK,CAAE,EAD2C,AAEnD,CAAC,CAEK,AAFJ,CAGL,CAAC,AAES,KANY,gBAMS,CAC7B,CAAsB,CACtB,CAAW,CAAA,CAEX,CAPqC,CAAC,EAOhC,EAAkB,IAAI,CAAC,AA8C7B,OAAO,CA9Cc,CACQ,KAAK,UAAsB,GAAG,CAAW,EACpE,IAAM,EAAgB,EAAI,CAAD,KA4CiB,CA5CT,AA4CU,CA5CT,CAAf,KAAqB,EAAE,CAE1C,AAF2C,GAEvC,CAAC,CA0CqD,CA1CrC,YAAY,CAAb,AAAc,GAChC,OAAO,EAAS,CAD6B,CAAC,EAAE,CAC3B,CAAC,AAAP,IAAW,CAAE,GAE9B,CAFkC,CAAC,CAAC,CAK3B,IAFP,CAEY,CAFI,CAGhB,YAHe,CAAe,CAAC,EAAc,CAC3C,IAAI,CAAE,EACP,CAAC,CAFyC,AAC/B,AAGZ,OAAO,EAAI,CAAD,MAAQ,CAAC,IAAI,CACrB,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,GAChB,EACA,IAAI,EADI,AAER,EAH6B,AAG1B,CAH2B,EAOlC,CAJW,CACR,CAAC,CAGE,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,CAAA,GAAA,EAAM,EAAY,CAAE,CACT,CAAC,AAEd,GAAI,CAEF,GALkB,CAKZ,EAAM,CAAH,KAAS,EAAI,CAAD,MAAQ,CAAC,IAAI,CAChC,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAe,IAAI,AACrD,CADsD,CAAC,AAEvD,IAAI,CAF2C,CACvC,AAER,EAAG,GAGL,CAHS,CACR,CAAC,IACF,EAAgB,WAAW,CAAC,CAAb,CAA2B,CAAE,IAAI,CAAE,IAAV,AAAc,GAAE,CAAI,CAAE,CAAC,CAAC,AACzD,AADqD,EAE5D,AAAD,CADW,CAAC,IACJ,EAAY,CAOnB,EAPiB,IACjB,EAAK,EAAD,aAAgB,CAAC,GACrB,EAAK,AADqB,CAAC,CAAC,AACxB,OAAU,CAAC,CACb,OAAO,CAAE,EAAM,GAAD,IAAQ,CACtB,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC/B,CAAC,CAAC,AACH,EAAgB,WAAW,CAAC,CAAb,CAA2B,CAAE,IAAI,CAAE,IAAI,AAAd,GAAgB,IAAI,IAAE,CAAK,CAAE,CAAC,CAAC,AACjE,CAD6D,CAEpE,GADY,CAAC,GACJ,CACR,EAAK,EAAD,CAAI,EAAE,CAAC,AAEf,AADG,CACF,CAAC,AAC4D,EAChE,CAAC,AAES,KAH8D,CAAC,CAAC,OAGlD,CACtB,GAAG,CAA4B,CAAA,CAE/B,GAAM,YAAE,CAAU,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAAC,AACxC,GAA0B,UAAU,EAAhC,AAAkC,OAA3B,EACT,GAAI,CACF,IAFiB,GAEV,KAAc,GACtB,AAAC,CADyB,CAAC,AAAT,CAAU,AAAT,GACX,CAAC,CAAE,CACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAE,CAAC,CAAC,CAAC,AAChD,AAEH,OAAO,CACT,CAAC,AAES,EAHG,CAAC,QAGO,CAAC,GAAG,CAAyB,CAAA,CAChD,GAAM,SAAE,CAAO,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAAC,AACrC,GAAuB,UAAU,EAA7B,AAA+B,OAAxB,EACT,GAAI,CACF,CAFc,IAEH,EAAJ,CAAC,AACT,AAAC,CADe,CAAC,CAAC,GACV,CAAC,CAAE,CACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAE,CAAC,CAAC,CAC5C,AAEL,AAHkD,CAGjD,AAES,YAAY,CAAC,CAAoB,CAAA,CACzC,GAAI,CAAA,EAAA,EAAA,mBAAA,AAAmB,EAAC,GAGtB,IAH6B,CAAC,EAAE,AAGzB,EAGT,GAHc,AAGR,CAHS,kBAGP,CAAiB,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAC/C,EAAI,GAEE,AAAc,IAAI,EAAE,AADL,EAAI,CAAD,CACR,GADc,CAAC,OAAO,CAAC,EADnC,CAAiB,EAAE,CAOhB,CACT,AAPgD,CAO/C,AAPgD,CAQlD,AA1aD,AAkaoD,CAMrC,CAAC,AAxahB,iBAAA,CAAA,kBA0aC,eCldE,OAAA,cAAA,CAAA,EAAA,aAAA,uCAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAAsD,GAA7C,OAAA,cAAA,CAAA,EAAA,oBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,iBAAiB,CAAA,GAAA,6HCZpB,EAAmB,YAAY,CAWxB,CAXP,CAWuBkJ,EAAAA,SAAhB,QAAiC,CAC5C,CACE,EAcI,CAAA,CAAE,IAEC,CACL,IAAI,CAAE,EACN,SAAS,GAAG,AACV8T,EAAAA,AAFoB,sBAEE,CACpB,EACA,IACE,IAAIqI,EAAAA,IAFU,aAEO,CAAC,CACpB,iBAAiB,EAAE,EACnB,EADuB,KAChB,CAAC,CAAY,CAAE,MAAE,CAAI,MAAE,CAAI,CAAE,OAAA,CAAO,EAAE,AAC3C,EAAK,EAAD,QAAW,CAAC,CAAC,GAAG,EAAE,EAAa,CAAA,CAAA,CAEA,EAAA,EAAA,GAFD,QAEC,CAAA,CACA,CAAAtlB,EAAAA,4BAAA,CAAA,CAAA,MAAA,CACA,CAAAC,EAAAA,gCAAA,CAAA,CAAA,cAAA,AACA,CAAA,CAAA,CAEA,EAAA,KAAA,8BAAA,EAAA,CACA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,CAAA,GACA,EAAA,EAAA,KADA,CAAA,EAAA,CAAA,CACA,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EACA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EACA,EAAA,QAAA,CAAA,IAEA,EAAA,EAAA,IAFA,GACA,GACA,CAFA,AAEA,iBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,CAAA,GACA,EAAA,EAAA,KADA,CAAA,CAAA,CAAA,EACA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEA,QAAA,SAAA,CAAA,CAAA,CAAA,CAAA,EACA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EACA,EAAA,QAAA,CAAA,IAEA,EAAA,EAAA,IAFA,GACA,GACA,CAAA,WAFA,aAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAEA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EACA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EACA,EAAA,QAAA,CAAA,IAEA,EAAA,EAAA,IAFA,GACA,CADA,EAEA,CAAA,cAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAEA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EACA,QAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EACA,EAAA,QAAA,CAAA,KAEA,EAAA,EAAA,GAFA,GACA,IACA,CAAA,KAFA,cAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAIA,GAAA,EAAA,KAAA,8BAAA,EAAA,AACA,EAAA,EAAA,UAAA,CAAA,UAAA,CAAA,EAAA,GAAA,IAAA,CAEA,AAFA,CAGA,AADA,CACA,CAAA,GAEA,CAAA,CACA,CAAA,EAIA,EAAA,CAAA,QAAA,CAAA,YAAA,CAAA,CACA,EAAA,CAAA,OADA,GACA,CAAA,IAAA,CAAA,QAAA,MAAA,CAAA,QAAA,CAAA,CACA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CACA,EAAA,CAAA,SAAA,CAAA,MADA,MACA,CAAA,CAAA,CACA,EAAA,CAAA,SAAA,CAAA,aAAA,CAAA,CACA,EADA,AACA,CACA,QAAA,CACA,YAAA,CACA,EAHA,KAGA,CACA,OAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,OAAA,CACA,SAAA,CACA,MAAA,CACA,SAAA,CACA,SAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,IAAA,CACA,OAAA,CACA,MAAA,CACA,UAAA,CACA,QAAA,CACA,QAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,YAAA,CACA,YAAA,CACA,WAAA,CACA,aAAA,CACA,aAAA,CACA,WAAA,CACA,UAAA,CACA,aAAA,CACA,cAAA,CACA,cAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,QAAA,CACA,UAAA,CACA,cAAA,CACA,YAAA,CACA,YAAA,CACA,eAAA,CACA,mICpIjD,CADU,EAAA,EAAA,WACV,CAD0B,IAAA,GAAhB,CAAgB,CAAhB,gBAAgB,CAAA,EAAA,CAAA,EAC1B,CAGD,KAHC,CAAA,QAAiB,CAAA,AACjB,EAAA,UAAA,CAAA,GAAA,SAAyB,CACzB,AADyB,EACzB,cAAA,CAAA,CAAA,iBAAmC,CAAA,iCCHzB,cAAc,6DACxB,GADU,EAAA,SACV,KADwB,GAAd,CAAc,CAAd,cAAc,CAAA,EAAA,CAAA,EACxB,CAED,WAFC,CAAA,cAA6B,CAAA,AAC7B,EAAA,YAAA,CAAA,cAA6B,CAAA,+BCH5B,OAAA,cAAA,CAAA,EAAA,aAAA,4DASU,EAAA,aAAa,CAAkB,MAAM,CAAC,uBAAuB,CAAC,CAkB9D,AAlB+D,EAkB/D,sBAAsB,CAAG,kBAAkB,CAAC,+BC3BtD,OAAA,cAAA,CAAA,EAAA,aAAA,yKAQH,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAD4D,AAC5D,CAAA,CAAA,MACA,EAAA,EADwD,AACxD,CAAA,CAAA,IAI0B,GAOb,GAAA,cAAc,CAAG,CAC5B,CADyB,CAEzB,IAQA,CATuB,AACT,CAEyC,CADvB,EAAE,CAC9B,CAAwD,EAAE,CAW9D,CAXS,CAAC,OAAO,CAAC,CAAO,CAAC,EAAA,sBAAsB,CAAC,CAAC,EAChD,MAAM,CAAC,cAAc,CAAC,EAAS,EAAA,GAAF,mBAAwB,CAAE,CACrD,UAAU,EAAE,EACZ,GADiB,EACZ,CAAE,EAAE,CACV,CAAC,CAAC,KAES,IAAV,GAA4B,CAAE,CAAzB,AAAc,EAAE,cAA0B,EAAE,CAAK,CAAE,CAAC,CAE5D,CAFyD,AAElD,CAAC,EAAA,sBAAsB,CAAc,CAAC,IAAI,CAAC,GAE5C,CAAE,CAF+C,CAAC,CAAC,cAEhC,CAAE,EAAI,CAAE,CAAC,AAAH,CASrB,EAAA,aAAa,CAAG,CAAC,CAAJ,CAAkB,EAAF,GAAqB,AAC7D,EADuE,EAAE,AACnE,EAAa,EAWnB,AAXyB,GAAD,GAAR,AAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAExC,AAAJ,GAAgB,KAAK,EAAP,AAAS,IAAI,CAClB,CADoB,AACpB,EAAG,EAAI,EAAA,AAAG,EAAW,KAAK,CAAC,EAAP,EAAW,CAAA,CAAE,CAAC,AAGvC,GAAY,MAAM,CAAR,CAAU,KAAK,CACpB,CADsB,AACtB,EAAA,EAAA,aAAa,AAAb,EAAc,EAAM,EAAF,CAGpB,CACT,CAAC,CAAC,AAQW,CATA,CASA,AATC,EAH2B,CAAC,CAAC,YAYd,CAAG,CAC9B,CAD2B,CAE3B,EACA,CAFa,EACM,EAMnB,GAAmB,CALD,EAIlB,EAAE,CAgCF,EA/B2B,GAAvB,EAAM,GAAD,CAAK,CAAe,CAC3B,IACM,EAAsB,AADtB,AAAkB,CAAA,EAAA,EAAA,UACmB,AADtB,EACI,CADY,AAEjC,AAFoB,EAAc,EAAE,CAAE,IAGtC,CAH2C,CAAC,CAAC,AAGhC,GADE,AACO,EAAJ,CAAT,AAAgB,CAE7B,AAF8B,MAEvB,CACL,UAAU,CAAE,CACV,CAAC,EAAA,cAAc,CAAC,YAAY,CAAC,CAAE,EAC/B,CAAC,EAAA,cAAc,AADmC,CAClC,YAAY,CAAC,CAAE,EAAA,gBAAgB,CAAC,MAAM,CACvD,CACD,IAAI,CAAE,CAAA,SAAA,EAAY,EAAmB,CAAE,CACxC,CAAC,AACH,MAAM,AAAmB,QAFe,QAEC,GAA/B,EAAM,GAAD,CAAK,EAAwC,QAAQ,EAAE,CAAzB,EAAM,GAAD,CAAK,CAC/C,CACL,UAAU,CAAE,CACV,CAAC,EAAA,cAAc,CAAC,YAAY,CAAC,CAC3B,CAAC,GAAS,CAAA,CAAS,AAAb,CAAc,CAAI,iBAAiB,CAC3C,CAAC,EAAA,cAAc,CAAC,YAAY,CAAC,CAAE,EAAA,gBAAgB,CAAC,eAAe,CAChE,CACD,IAAI,CAAE,CAAA,eAAA,EAAkB,EAAM,GAAD,CAAK,CAAG,AAAF,CAAC,AAAC,GAAA,EAAM,GAAS,EAAJ,AAAa,CAAE,CAAC,AAAE,CAAD,CAAG,CAAA,CAAE,CAAT,AAC9D,CAAC,AAEK,CACL,UAAU,CAAE,CACV,CAAC,EAAA,cAAc,CAAC,YAAY,CAAC,CAAE,EAAM,GAAD,CAAK,CACzC,CAAC,EAAA,cAAc,CAAC,YAAY,CAAC,CAAE,EAAA,gBAAgB,CAAC,UAAU,CAC3D,CACD,IAAI,CAAE,CAAA,aAAA,EAAgB,EAAM,GAAD,CAAK,CAAA,CAAE,CAGxC,AAFK,CAAC,AAEL,CAAC,AAQF,IAAM,EAAmB,CACvB,EACA,KAEA,CAHgB,CACM,CAElB,AAAmB,CADd,EAAE,AAHS,KAIW,EAAE,OAAtB,EACT,KADgB,EACT,IAAY,EACd,CADS,EACL,GADkB,CAAC,GACZ,MAAY,MAAM,CAClC,CADoC,MAC7B,EAAQ,IAAI,CAAC,AAAN,GACT,GAAI,AAAmB,EADA,CAAC,CAAC,MACQ,EAAE,OAAxB,EAChB,KADuB,EAChB,EAAQ,EAEf,GAFc,GAAS,CAAC,AAElB,AAAI,CAFe,QAEN,CAAC,oCAAoC,CAAC,AAE7D,CAAC,AAF6D,AAYjD,CAVX,EAUW,cAAc,CAAG,CAC5B,CADyB,CAEzB,EACA,AAFY,EACU,GAGtB,CAFqC,EAC5B,AAEP,EAFS,EAmBX,CAjBO,CAAC,OAAO,CAAC,GAAQ,GAAF,aAAkB,CAAC,EACvC,GAAQ,GAAF,aAAkB,EAAE,QAAQ,CAAC,GAEnC,CAFuC,CAAC,EACxC,GACO,EAET,EAFa,CAAC,AAEV,CAAwC,IAAnC,CAAwC,KAAvC,OAAO,CAAC,GAAQ,GAAF,SAAc,CAAC,CAAY,OAAO,EAC1D,GAD+D,AAC3D,CACF,AAF8D,IAEzD,IAAM,KAAW,EAAJ,AAAY,IAAD,QAAc,CAAE,AAC3C,GAAI,EAAiB,EAAM,EAAF,CACvB,IADgC,CAAC,EAAE,AAC5B,EAGX,AAAD,AAJuB,EACP,CAAC,GAGT,CAAC,CAAE,CACM,CACjB,AAED,MAAO,EACT,CAAC,CAAC,AAQW,CATC,CAAC,AASF,iBAAiB,CAAG,AAC/B,EAD4B,CAG5B,CAD4C,CAD9B,EAC4B,CACrC,QAAY,IAEkB,CAFb,CAClB,CAAC,EAAO,EAAM,CAAR,EAAO,IAAQ,CAAC,CACtB,CAAC,MAAM,CAAC,GAAQ,EAAH,CAAC,GAAQ,CAAC,GAAO,CAQvB,AARwB,CAAH,CAQrB,AARsB,YAQV,CAAG,AAC1B,EADuB,EACoC,AAE3D,EADoB,EAAE,AAChB,EAAW,CAAI,CAAC,CAAC,CAAC,CAOxB,AAPyB,CAAX,MAEd,AAAI,KAAK,CAAC,OAAO,CAAC,GACT,EAAS,GADQ,AACL,CADM,AACN,AAAC,EADO,AACZ,CAAQ,AAAI,CAAH,CAA2B,GAAG,CAAK,AAAJ,EAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAGnE,AAHoE,EAG5C,CAHqB,CAItD,CAAC,CAED,AAFE,IADuC,AAGnC,CAHoC,CAGV,AAAC,AAHU,GAIzC,AAAI,AAAe,AADiC,EAAE,EAAE,IAC7B,AAJG,EAID,OAAlB,CADgB,CAElB,CADK,CAIV,CAHQ,CAAC,CAGN,UAAY,MAAM,EAAmB,QAAQ,EAAvB,AAAyB,OAAlB,EAC3B,CAD8B,CAC1B,CAAD,OAAS,EAAE,CAAC,OAM1B,SAAgB,EAAoB,CAGnC,EAKC,IAAM,EAAkB,CAJM,KAAK,CAAC,CAJH,GAQE,EAAd,CAJsB,CAAC,CAAG,CAAC,EAAA,sBAAsB,CAAC,CAAC,CACnE,CAAG,CAAC,EAAA,sBAAsB,CAAc,CACzC,EAAA,AAAE,CAAC,CAE6B,MAAM,CACxC,AADwC,GAChC,AAAS,CAAb,CAAC,CAAe,CAAR,KAAqB,IAAI,CACtC,CAAC,CADwB,IAAI,MAG9B,AAA+B,CAAC,GAA5B,EAAgB,MAAM,EAAiC,GAAG,EAA3C,AAA6C,CAA5B,CAAe,CAAC,CAAC,CAAC,CAC7C,GAAG,CAAC,AAIN,EAAgB,IAAI,CAAC,EAAE,CAAC,CAAC,IAAV,GAAiB,CAAC,SAAS,CAAE,GAAG,CAAC,AACzD,CAD0D,AACzD,AAlBD,EAAA,mBAAA,CAAA,EA4BA,EAAA,gBAVC,KAUD,CAAA,EAAA,OAAgB,AAAsB,CAGrC,MAuDuB,EAtDtB,GAsDmC,CAtD7B,EAgDP,AAhD+B,KAAK,CAAC,AAJD,GAIlB,IAA0B,CAAC,CAAG,CAAC,EAAA,sBAAsB,CAAC,CAAC,CACnE,CAAG,CAAC,EAAA,sBAAsB,CAAc,CACzC,EAAE,CAAC,AAGP,GAAI,AAAuB,CAAC,EAAE,GAAd,KAAD,CAAO,CACpB,OAAO,AAKT,GAAI,EAAY,IALE,CAKG,AALF,CAKG,AAAD,GAAN,AAAwB,CAAb,CAAC,CAAe,CAAC,EAAb,AAAe,GAC3C,CADgC,KACL,GAAG,CAAC,CAAC,CAAzB,EAAI,CAAD,UAAY,CAAW,GAAG,CAAC,CAAC,IAAC,EAGzC,IAAM,EAAmB,CAHyB,CAGL,AAHM,GAInD,AADgD,CAAC,CAAC,CACzB,GAAG,EAAE,CAA1B,AADkB,GAQpB,EAR0C,AAQzB,QAAQ,CAAC,EAPR,CAOW,CAAC,CAAd,EACf,CAAD,CAAkB,QAAQ,CAAC,GAAG,CAAC,CAAd,CACf,EAAiB,QAAQ,CAAC,IAAI,CAAd,AAAe,EAC/B,EAAiB,QAAQ,CAAC,GAAG,CAAC,CAAd,CAChB,EAAiB,QAAQ,CAAC,IAAG,CAAb,AAAc,CAVhC,AAUiC,EACjC,KAXO,EAgBT,IAAM,EAAkB,EAAiB,MAhBhB,CAAC,GAgByB,CAAC,AAA/B,GAAkC,AAAf,CAAgB,CACpD,EACA,CAAA,CAAA,EAAI,EAAgB,CAAE,CAY1B,AAZ2B,MADP,CAab,AALL,EAAgB,GAPM,GAOA,CAAG,CAAC,EAKT,AAJhB,CAIiB,CAAC,AAJnB,CADe,AACX,AAAC,WAAW,GAAK,GACnB,EAAI,CAAD,SAD+B,CACnB,CAAC,UAAU,CAAC,IAWxB,GAVY,EAUP,CAAC,KAXiC,CAAC,EAW1B,CAAC,CAVlB,EAUqB,CAAC,EAAI,EAAM,GAAD,IAVjB,CAU0B,CAAC,GAAG,CAAC,AAVf,CAAC,AAUe,CAVd,AAEd,CAFe,MAEG,CAC1C,CAAC,MADsC,CAAC,AAAW,CAAV,AAAW,wBCzRjD,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,wCAAwC,CAAC,+BCJlE,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,OAA8D,CAC9D,EAAA,EAAA,CAAA,CAAA,MAM4B,EAG5B,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAD4D,AAC5D,CAAA,CAAA,MACA,EAAA,EAQiB,AATuC,CASvC,CAAA,QAEjB,EAAA,EAA0D,CAAA,CAAA,CAFzC,OAGjB,EAAA,EAAA,CAAA,CAAA,GAD0D,KAO1D,EAAA,EAAA,CAAA,CAAA,IADwC,IAExC,EAAA,EAAA,CAAA,CAAA,IAM0B,GAG1B,EAVsE,KAUzD,UAA+B,EAAA,UAAR,SAAyD,CAC3F,YAAY,EAAuC,CAAA,CAAE,CAAA,CACnD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAAC,AAED,GAH6C,CAGzC,AAH0C,CAAC,CAG3C,CACF,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,SAAS,CACT,CAAC,YAAY,CAAC,CAAA,AACd,IACE,IAAM,EACJ,AAAmD,GAF1C,CAAC,EAAE,IAEiD,CAAC,QAAvD,GAAe,IADU,EACJ,EAAE,EAAV,OAAmB,EAAE,KAAK,CAC1C,EAAc,EAChB,EAAc,KADD,CACO,CAAC,IAAR,KAAiB,CAAC,AAC/B,EAAc,KAF8B,CAExB,CAAC,AAsBzB,CAtB0B,GADsB,AAC/B,EAEb,CAAA,EAAA,EAAA,GAFmC,MAEnC,AAAS,EAAC,EAAY,KAAK,CAAC,EAC9B,AADgC,CAAT,GACnB,CAAC,OAAO,CAAC,EAAa,OAAO,CAAC,CAAV,AAAW,AAErC,IAAI,CAAC,KAAK,CAAC,EAAa,OAAO,CAAE,CAAX,GAAe,CAAC,cAAc,EAAE,CAAC,CAAC,AAEpD,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,EAAY,GAAG,CAAC,EAAE,AAC9B,GADuB,CACnB,CAAC,OAAO,CAAC,EAAa,KAAK,CAAC,CAAC,AAGnC,EAH0B,EAGtB,CAAC,KAAK,CAAC,EAAa,KAAK,CAAE,GAAT,CAAa,CAAC,kBAAkB,EAAS,CAAC,CAAC,AAE7D,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,WAAD,AAAY,CAAC,GAAG,CAAC,EAAE,AAC5C,IAAI,CAAC,OAAO,CAAC,EAAc,WAAW,AAAZ,CAAc,KAAK,CAAC,CAAC,AAEjD,IAAI,CAAC,KAAK,CACR,EAAc,WAAD,AAAY,CACzB,KAAK,CAEL,CADA,GACI,CAAC,eAAe,CAAC,IAEhB,CACT,CAAC,CACD,AADC,IAEC,MAHoB,CAAC,CAGC,CADX,CAAC,EAAE,AACV,EAA6B,GAAF,AALoB,CAAQ,CAC1D,CAAC,CAIsC,AAGxC,IAHiB,AAGX,EADJ,AAAmD,AACjC,IAT4C,KAS/C,CAD8C,CAAC,QAAvD,GAAe,MAAM,AACkB,EADhB,EAAV,OAAmB,EAAE,KAAK,CAE5C,EAAc,MAAM,CAAC,IAAR,KAAiB,CAC9B,EAAc,MAAM,CAAC,AACzB,IADiB,AACb,CAAC,OAAO,CAAC,EAAa,OAAO,CAAC,CAAV,AAAW,AACnC,IAAI,CAAC,OAAO,CAAC,EAAa,KAAK,CAAC,CAAC,AACjC,EADwB,EACpB,CAAC,OAAO,CAAC,EAAc,WAAD,AAAY,CAAE,KAAK,CAAC,AAChD,CADiD,AAChD,CACF,CAEL,AADG,CAAC,AACH,AAKO,cAAc,EAAA,CACpB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACJ,CAAiC,EAChD,OAAO,SAAS,AAEd,GAAG,CAAiC,EAEpC,IAAM,CAJmB,CAIX,EAAS,CAAZ,IAAiB,CAAN,AAAO,IAAI,CAAE,GAC7B,CADiC,CAAC,AAC1B,CAD2B,EAC9B,CAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAG,CAAC,CAAiB,CAAC,AAEhE,OADA,EAAgB,WAAW,CAAC,CAAb,CAAoB,CAAA,EAAA,AAAF,EAAE,YAAY,AAAZ,EAAa,IAAI,AAC7C,CACT,AAFuD,CAGzD,AAH0D,AAEvD,CACF,AACH,AAJ6D,AAEvD,CACF,AACH,AAKO,CARU,CAAC,gBAQO,EAAA,CACxB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACJ,CAA+B,EAC9C,OAAO,SAAS,AAEd,GAFiB,AAEd,CAAiC,EAEpC,IAAM,EAAQ,EAAS,CAAZ,IAAiB,CAAN,AAAO,IAAI,CAAE,GAC7B,CADiC,CAAC,AAC1B,CAD2B,EAC9B,CAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAG,CAAC,CAAiB,CAE/D,AAFgE,OAChE,EAAgB,WAAW,CAAC,CAAb,CAAoB,CAAA,EAAF,AAAE,EAAA,YAAA,AAAY,EAAC,IAAI,AAC7C,CAD8C,AAEvD,CAFwD,AAEvD,AACH,CADI,AAFuD,AAG1D,AACH,CAAC,AAKO,AANJ,CAFc,CAAC,aAQI,CAAC,CAAqC,CAAA,CAC3D,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACJ,CAAoC,EACnD,OAAO,SAAS,AAGd,GAHiB,AAGd,CAAiC,EAIpC,IAAM,EAAS,EACX,EADQ,EACJ,CAAC,MAAM,CACX,IAAI,CAAC,OAAO,CAAC,AACX,CAHqC,CAG7B,EAAS,CAAZ,IAAiB,CAAN,AAAO,IAAI,CAAE,GACnC,CADuC,CAAC,CACpC,AADqC,EAC7B,CACV,GADQ,CACF,EAAQ,EAAO,CAAV,GAAS,CAAM,CAAC,EAAO,IAAD,CAAM,CAAC,MAAM,CAAG,CAAC,CAAC,CAAC,AACpD,EAAgB,WAAW,CAAC,CAAb,CAAoB,CAAA,EAAF,AAAE,EAAA,YAAY,AAAZ,EAAa,IAAI,AACrD,AACD,CAFuD,CAAC,CAAC,IAElD,CACT,CAAC,AACH,CADI,AACH,AACH,CADI,AACH,AAGO,CANU,CAAC,SAMA,CAEjB,CAAmB,CACnB,CAAkB,CAAA,CAElB,IAAM,EAAkB,IAAI,CAAC,CAEA,IAAI,AAA7B,CAAK,CAA0B,AAAzB,CAFW,CAEX,KAAgC,QAAnB,CAAC,GACxB,CAAK,CAAC,EAAA,aAAa,CAAC,EAAG,EAEvB,EAF2B,CAAC,CAExB,CAAC,KAAK,CAAC,EAAO,GAAF,KAAU,CAAA,AAAE,IAE1B,GAAwB,CAFU,AAET,CAFU,EAE/B,AAFiC,EAExB,MAAD,AAAO,CAAQ,OAAO,EAElC,IAAM,EAFoC,AAE1B,CAF2B,IAE9B,IAEX,CAAmB,CACnB,CAAqB,EAErB,GAAM,mBAAE,CAAiB,CAAE,CAAG,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAK,CAAF,EAE1C,EAAmB,CAAA,EAAA,CAFkC,CAAC,AAEnC,CAFoC,QAEvC,UAAG,AAAmB,EAAC,GACvC,AAD0C,CAAC,CACtB,AADuB,CACvB,EAAA,EAAA,WAAH,UAAG,AAAqB,EAAC,GAAG,AAE9C,CAF+C,CAAC,AAEvB,CAC7B,CAAC,EAAA,IADa,WACE,CAAC,CAAE,EACpB,CAAC,AACI,EAAW,CAAA,EAAA,EAAA,CAAH,OAFyB,QAEtB,AAAgB,EAAC,EAAkB,EAAO,GACrD,AADmD,EAC5C,EAAH,AAAY,EAD8C,CAAC,CAAC,CAApB,CAC7B,IAAW,CAC9B,EAAA,cAAc,CAAC,YAAY,CACR,CAAC,AAEhB,EAAc,GAAA,EAAA,IAAH,UAAG,AAAc,EAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAMpD,AANqD,GACjD,GAAa,IAAI,GAAK,CAAX,CAAW,OAAO,CAAC,IAAI,EAAE,CACtC,EAAY,KAAK,CAAG,CAAA,CAAkB,CAAC,AAIrC,AAJS,CAIT,EAAA,EAAA,cAAA,AAAc,EAAC,EAAS,IAAI,CAAE,CAAP,CAAa,EAAF,AAAkB,SAAS,EAAE,CAAC,CAAb,AAIrD,CAJoE,MAChE,IAAS,AAAL,EAAK,gBAAgB,CAAC,UAAU,EAAE,AACvC,CAAG,CAAC,EAAA,sBAAsB,CAAc,CAAC,GAAG,EAAE,CAAC,AAE3C,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,SAAS,CAAC,CAAC,AAGzC,QAAwC,IAApC,EAAA,GAA6C,EAAxC,AAA0C,CAAzC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CACjC,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAGzC,IAAM,EAAW,EAAgB,IAAnB,QAA+B,CAAb,AAC9B,CACE,OAAO,CAAE,EACT,CADY,QACH,CAAE,EACX,EADe,GACV,CAAE,EACR,CACD,EAAS,IAAI,CACd,CAAC,AACI,AAFI,EAEG,EAAH,AAAmB,CAJF,KAIQ,CAAC,MAAR,GAAiB,CAAC,EAAU,CACtD,KADoD,KAC1C,CAAE,MAAM,CAAC,MAAM,CAAC,EAAY,EAAS,MAAD,AAAV,IAAqB,CAAC,CAC3D,CAAC,CAAC,AAEG,EAAgB,EAAA,OAAO,CAAC,CAAX,KAAiB,EAAE,CAAC,AACnC,EAAiB,EAAA,KAAK,CAAC,IAAT,GAAgB,CAAC,EAAe,GAE5C,CAFgD,CAAC,CAAC,KAAR,KAExC,CAAW,CAAE,CAAG,EAAgB,SAAS,EAAE,CAAC,AAChD,CADmC,EAErC,CAAA,EAAA,EAAA,GADa,EAAE,iBACf,AAAsB,EACpB,GAAG,CACD,CADG,CACS,EAAM,CAChB,CADc,KAAL,CACF,CAAE,EACT,CADY,QACH,CAAE,EACX,EADe,GACV,CAAE,EACR,CAAC,CAAA,AACJ,CAAC,CAAC,EAAE,AACE,CAAC,EAAE,AACL,EAAA,GAJuB,CAInB,CAAC,KAAK,CAAC,8CAA8C,CAAE,CAAC,CAEhE,AAFiE,CAEhE,AAFiE,EAGlE,GAIJ,CAJQ,CACL,CAAC,CAGA,GAAe,EAIjB,EAAS,CAJa,CAAC,GAAT,CAIN,IAAW,CAAC,EAAA,cAAc,CAAC,YAAY,CAAC,GAChD,EAAA,gBAAgB,CAAC,MAAM,EACvB,CACA,EAAK,EAAD,CAAI,EAAE,CACV,AADW,GACI,EACf,EAAiB,AADE,CAAC,EAItB,EAJc,EAIR,EAAmB,GAAG,AAHZ,CAAgB,CAIT,AAJU,AAGH,KACxB,AAAsB,EAAE,EADR,AAElB,GAAe,EACf,EAAK,AADc,CAAC,AADN,CAEV,CAAI,EAAE,AADE,CACD,AAEf,CAAC,CAAC,AAGI,EAAO,EAAH,GAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,AAC7B,EAAc,EAAK,EAAD,KAAP,EAAiB,CAAC,AAAD,GAAI,AAAmB,CAAlB,SAA4B,CAAC,CAA1B,AAA2B,OAApB,GAAG,AAChD,GAAe,CAAC,EAAE,CACpB,IADa,KACJ,CAAC,EAAY,CAAG,QAAJ,GAGnB,IAAM,EAAa,QAAH,CAAY,CAAC,CAAC,CAAC,CAAC,AAC1B,EAAU,CAAC,CAAC,GAAL,IAAgB,EAAF,EAAM,CAAE,OAAO,CAAE,QAAQ,CAAC,CAAC,QAAQ,CAC5D,GAEF,GAAI,CAAC,GAFO,AAES,CADpB,CAAC,AAC4B,CAC5B,GAAM,CADoB,AACnB,EADQ,AACD,EAAQ,CAAG,AAAb,CAAa,EAAA,CAAJ,CAAI,iBAAiB,AAAjB,EAAkB,GAC3C,EAAK,EAAD,GADiD,CAAC,CAAC,QACnC,CAAC,GACrB,EAD0B,AACrB,CADsB,CAAC,AACxB,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,SAC1B,EACD,CAAC,CAAC,AACJ,CAEoB,EAJV,EAIP,CAAsB,EAAE,CAC1B,GAAe,EACf,EADmB,AACf,CADgB,AACjB,AAFW,EAEP,EAAE,AADG,cACW,CAAC,QAAQ,CAAE,GAClC,EAAK,EAAD,CAAI,EAAE,CAAC,CAET,CAAC,CAAC,EAH8C,AAG1C,CAH2C,AAG5C,CAH6C,GAGvC,EAAI,CAAA,CAAO,CAAC,CAAI,GAC5B,CAAG,CAAC,EAAA,UADyC,EAAE,UACrB,CAAc,CAAC,GAAG,EAAE,CAAC,AAElD,IAAM,EAAW,CAAI,CAAC,EAAwB,CAAC,AAIzC,CAJQ,CAIQ,EAAA,IAJW,GAIJ,CAAC,CAAX,KAAiB,EAAE,CAAC,AACjC,EAAa,EAAA,KAAK,CAAR,AAAS,OAAO,CAAC,GAC3B,EAAc,EAChB,EAAA,IAF0C,CAC7B,AAD8B,AAEtC,CADqB,AADkB,AAEtC,OAAO,CAAC,EAAe,GAC7B,EACJ,KAF2C,CAAC,AAAb,CAExB,EAAA,EADU,CAAC,IACJ,CAAC,IAAI,CAAC,EAAa,GAAU,KAAF,AAAO,CAAN,AAAO,AAAlB,IAAsB,CAAE,SAAS,CAAC,CACnE,AADoE,CACnE,CAAC,AAGJ,GAAI,CACF,OAAO,EAAA,OAAO,CAAC,IAAI,CAAC,EAAgB,GAAU,KAAF,AAAO,CAAC,AAAP,GAAX,CAAsB,CAAE,SAAS,CAAC,CAAC,AACtE,AAAC,MAAO,EAAU,CACjB,GAAM,CAAC,CADQ,CACD,EAAQ,CAAV,AAAa,CAAA,EAAA,CAAJ,CAAI,iBAAA,AAAiB,EAAC,EAM3C,MANmD,CAAC,AACpD,CADqD,CAChD,EAAD,aAAgB,CAAC,GACrB,EAD0B,AACrB,CADsB,CAAC,AACxB,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,SAC1B,EACD,CAAC,CAAC,AACG,EACP,CAHU,KAEK,CAAC,AACP,CAOJ,AAAC,GACH,EAAI,CAAD,GAAK,CAAC,EADM,EAAE,IACA,CAAE,GAEtB,AACH,CAAC,CAUD,AAVE,IAUG,IAAM,GAAG,AAb2B,CAAC,CAaxB,AAbyB,EAczC,MADwB,AAClB,CADoB,AACnB,cAAc,CAAC,EAAS,EAAK,CAAF,AAChC,EAD2B,CACxB,KACM,CAAQ,CAAC,EAAI,CAEtB,AAFuB,AAAF,GAElB,CAAC,CAAK,EACP,CAAQ,CAAC,EAAI,CAAD,AAAI,CAClB,CAAC,CACF,CAAC,CAFuB,AAEtB,AAEL,CAJ4B,MAIrB,CACT,CAAC,CAAC,CAAC,AACL,CAEA,AAFC,EAFiB,CAAC,SAIP,CAAC,CAAwB,CAAE,CAAmB,CAAA,CACxD,GAAM,cAAE,CAAY,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAEzC,AAF0C,GAEtC,CAAC,CAAC,YAAY,CAAY,QAAA,CAAQ,CACpC,AADqC,EAAE,KAChC,EAGT,GAAI,CACF,KAJkB,CAAC,CAIZ,EAAa,EAAM,EAAF,EAAkB,EAC3C,AAAC,EADmB,GAAkB,CAC9B,AAD+B,EAC1B,CAAF,AAKV,AANqD,CAAC,MAEtD,EAAA,IAAI,CAAC,KAAK,CACR,+DAA+D,CAC/D,GAAG,AAEE,CADN,CAAC,AAEH,AACH,CAAC,CAhUH,AAiUC,EAjUD,KA8TwB,CAAC,gBA9TzB,CAAA,uBAiUC,UC1WE,OAAA,cAAA,CAAA,EAAA,aAAA,gFAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA2D,GAAlD,OAAA,cAAA,CAAA,EAAA,yBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,sBAAsB,CAAA,GAAA,AAC/B,IAAA,EAAA,EAAA,CAAA,CAAA,QAAS,IAAmD,GAAnD,cAAA,CAAA,EAAA,mBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,gBAAgB,CAAA,GAAA,AACzB,IAAA,EAAA,EAAA,CAAA,CAAA,MAAS,IAA+C,GAA/C,cAAA,CAAA,EAAA,iBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,cAAc,CAAA,GAAA,6FCXI,IAAA,OAAA,gBAAA,EAAA,gBAAA,4ICWrB,EAAmB,SAAS,CAkCmB,EAAAgd,EAlC/C,AAkC+CA,aAAA,SAAA,CACA,EACA,IACA,IAAAsI,EAAAA,IAFA,kBAEA,CAAA,CACA,WAAA,CAAA,IAAA,GAAA,CAjC7C,EAEA,EAO6C,EAP7C,EAO6C,EAwBA,GAnCnDH,EAAAA,eAAe,CAAC,EAAM,EAAF,sBAA0B,CAAC,CAM3C,GAFS,CAEL,EAAE,AAJSrkB,EAAAA,UAAU,CAiCsB,AAjCrB,GAAM,CAAF,AAiCiB,CAjChB,AAiCgB,EAjCX,CAEjB,CAAC,cAAc,CAAC,GAGrC,EAAK,EAAD,UAAa,CAACf,EAAAA,4BAA4B,CAAE,CAAC,EAAA,EAAA,EAAA,MAAA,CAAA,CAAA,MAKA,UAAA,OAAA,EADA,CAAA,CAAA,AACA,cADA,CAAA,GAEA,EAAA,EAAA,QAAA,CAAA,EADA,CAAA,CACA,CADA,AACA,AAuBA,YAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAnBA,MAmBA,GAnBA,CAAA,CAAA,AAmBA,CAnBA,EAAA,AACA,GAAAsD,EAAAA,EADA,eACA,EAAA,GAAApE,EAAAA,wBAAA,EAAA,CAEA,CAFA,MACAvC,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,IAAA,CAAA,qFAAA,CAAA,CACA,EAEA,GAAA,MAFA,WAEA,GAAA,EAAA,EAAA,OAAA,CAAA,CAEA,IAAA,EAAA,CAAA,CAAA,EAAA,KAAA,CACA,EAAA,EAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,KAAA,CAAA,WAAA,EAAA,CAAA,KAAA,CACAyG,EAAAA,iBAAA,EAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA,CACA,AADA,CAEA,OAAA,EACA,EAOA,EAAA,EAAA,AACA,CAAA,CAAA,CATA,CAqCA,EAAA6F,EAAAA,CA7BA,CAAA,YA6BA,GAAA,CAAA,AAzBA,KACA,CADA,AAEA,IAAA,CAAA,EACA,MAsBA,GAtBA,GAAA,AACA,EAFA,CAGA,CAAA,CACA,CAAA,EAkDA,SApDA,AAoDA,EApDA,AAoDA,CAAA,EAAA,AACA,OAAA,OADA,EAEA,AADA,CACA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAA+Q,EAAAA,IANA,SAMA,WAAA,CAAA,GAGA5W,EAAAA,EAHA,CAAA,cAGA,EAAA,CAAA,wBAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CAIA,AAFA,IAAA,GAAA,MAFA,IAIA,IAFA,EAgEA,EAhEA,OAgEA,CAAA,EAAA,MAEA,MAAA,CANA,CADA,EAAA,EAAA,AAOA,GAPA,AAKA,EAJA,CADA,EAAA,EAAA,GAAA,OAAA,EAAA,EAAA,GAAA,QAAA,EAAA,AAMA,EANA,GAAA,AAMA,CAAA,EANA,EAAA,UAAA,EACA,QAAA,CAAA,EAAA,EAAA,CAAA,CAAA,GAAA,CAAA,EAMA,GACA,AADA,CAlEA,CAAA,CAEA,KAEA,AAFA,CAAA,CAEA,CAFA,AAEA,KAAA,CADA4G,EACA,AADAA,gBAAA,CAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAA,yBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AACA,CADA,AACA,CAGA,EAAA,EACA,AADA,CAEA,AADA,EADA,CAAA,8FA0CA,SAAA,AACA,CAAA,CACA,CAAA,EAEA,EAAA,CAAA,EAAA,CAzCA,AAyCA,SAzCA,AACA,CAAA,CACA,CAAA,CAmCA,AAlCA,CAAA,EAEA,IAAA,CAoCA,CApCAgQ,CAoCA,CApCAA,AAoCA,QAzCA,KAKA,WAAA,CAAA,GAEA5W,EAAAA,EAFA,CAAA,cAEA,EAAA,CAAA,wBAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CAEA,GACA,CADA,AACA,EAgCA,AAjCA,EAiCA,CAAA,EAAA,CAAA,CAnCA,CAmCA,IACAkiB,EAAAA,CADA,CAAA,CAAA,QAAA,IACA,CAAA,EAAA,CAAA,EAAA,CAAA,SAAA,CAAA,AACA,0DCzKzC,CKEA,CLFA,CCCA,0CCC8B,CCFC,CGCC,AFAP,ACAO,CAAA,CHCE,EKGE,ECHE,CCFC,ADEA,CCFC,GCAG,CAAC,ECU7B,CAAC,ACP+B,CAAC,KRDvC,EACnB,sCUC0B,CNER,AIFA,AVKA,AMHA,CAAA,cQSb,EAAA,IAAiC,gBARpC,CAAa,CH8ByB,AZlCtB,CeKa,CAAA,CAAA,CAAA,QAGtB,ERFM,EQEF,wBbGX,CAAyB,CKNX,APLA,AUSO,ANTA,AFYrB,CAAY,CACZ,CQJiC,CFRnC,AEQmC,CRKE,CHhBQ,AISX,AOEA,AHJA,CAAC,AGIA,IRO7B,CAAA,SAAA,CAAa,EACjB,CFfK,AMMK,AGGZ,AJNY,GHYN,CAAC,IAAI,CAAG,IcbQ,AdaJ,CAAC,OFfW,GEgBb,EACf,CFXK,GAAA,CAAA,OAAA,CAAA,OEmBF,CAAA,CAAA,wBACoB,CFHzB,sBEWU,CAAC,SAAA,EAAW,UACP,CAAA,SAAU,CU0BG,AV1BF,CcDC,GdGnB,EAAS,CcDH,GAAA,CdCQ,SAAA,CAAU,CQWC,CAAC,SMZK,EAAE,CAAC,IdCQ,CAC9C,IAAI,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CACZ,IAAI,CAAC,OAAO,CACb,CAAC,OACE,IAAA,IAAS,SAGC,CAAA,EACP,CcLC,GdKG,CAAA,SAAA,EAHF,ECDa,CQPN,MAlCP,YAIT,CAAY,CAAA,CAAA,CAEZ,CAAmC,CAAA,cAGjC,OAAA,EAAA,IAAI,CAAA,kBAAmB,CAAC,EAAM,EAAS,CRAc,CQAP,CAAC,CXNd,EWOjC,GAD+C,CXNf,AWO5B,CXP6B,CWOjB,IAAI,CAAE,EAAM,EAAS,AAAtB,AAAW,KAAS,EAAS,CAAC,CAC9C,CAAC,qBASK,MAAA,CAAA,EAAA,IAAA,CAAA,SAAA,AAAc,EAAA,EAAI,IHDZ,WGQF,CAAwB,CAAA,gBAClB,sBAOL,CACZ,CAA4B,ATMR,CAAC,ASLrB,CAAmC,CAAA,cAE5B,MAAA,CAAA,EAAA,IAAI,CAAC,SAAA,EAAA,KAAA,EAAA,EAAW,SAAS,CAAC,EAAM,EAAS,IAEnD,EOPE,2DfrBa,aAAA,QACP,IAAA,CAAK,CJpBc,EeSP,MXWE,CHFK,EGGtB,CCLO,CaDH,EAAA,CAAA,SAAA,CdMa,IAAA,CAAA,EAGZ,CSyBC,GAAA,CAAA,STzBa,0BAGgC,CAAA,SAC1C,CAAA,EAAqB,CACvB,CADyB,CKLlB,ELMP,CAAK,EeLI,CN+BN,cT1BmB,CS4B2C,CT5BzC,CAAC,AS6BX,CMlCc,IfQT,CFRtB,AAAD,CWoCyB,CT5BC,KFP/B,EESE,EACA,EAFA,ES2B0C,CAAC,CT1BnC,EFTE,YEUU,CACrB,CAAC,IFX4B,EEYJ,SCZW,AHAI,CGAH,EDYA,CAAA,IFZW,CAAC,2CEwBhD,EAAA,MAAA,CAAA,EAAA,CDCsB,CCDd,CDCa,CAAC,ACDd,AAAoB,EAAA,IAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EFdiB,CAAC,CEcoB,CAAC,CAAA,EACnE,CAD+B,EAAoC,CAC/D,CAAC,MAD8D,OAAA,KAAA,EAC1C,CAC1B,CAAC,YAUc,CAChB,CAAuB,CHAI,8BGEE,EAAE,CAAC,EWSI,OAAA,CAAA,EXTY,EAAS,KAAF,EAAS,CAAC,CAAC,eAK/B,2BACP,GSsBZ,CTtBgB,GAEnC,QI/D2B,WAAW,CENC,CIIC,ANEA,CAAC,CMFC,CAAC,AbHsB,CAAC,CSDrB,ODY5C,CAA0B,ALMQ,CAAC,KKJ7B,EAAiB,EAAQ,IRGM,CAAC,SQHO,EAAI,EAAA,KAAK,CAAC,CUEH,CAAC,eVFmB,EAAE,CAAC,AACrE,EAAgB,CQQG,CRRK,CHCD,YGDc,EAAA,EAAA,OAAW,CAAC,GPOf,CAAC,CAAC,WOP6B,EAAE,CAAC,IAC3C,CQQ6B,aRRf,CHCD,CAAC,AGDI,EAAK,EAAD,eAAkB,EAAE,CAAC,EACjD,EAAQ,gBAAgB,EAAE,GUED,CVFK,AUEJ,CAAC,CVFK,EAAI,EAAE,CAAC,QUJvD,EAAA,EAAA,EAAA,EAA4B,ClBAG,KkBAG,CAAE,EAAA,EAAA,IAAY,CN4BD,IM3BhD,CJRK,CIQa,AVMxB,CRLgC,CkBDS,CN6BZ,AM7Ba,ClBCV,AkBDW,CVO3C,AUP4C,KAE1B,ElBDqC,CAAC,GQD5B,IUCR,OACe,CAAC,GVKpC,qBUFkC,CAAC,AVEnC,GAEA,EFF0C,CAAC,EYAL,QRiBQ,CAAC,ACfF,AHA/B,CGAgC,AHC/C,CAAC,MUHuD,EAAE,EACvC,GVKK,AI6BE,IE7CyR,CAAC,SIWhR,CAAC,EVKI,CAAC,AUCzC,AAAK,CVDqC,AIoCpC,CAAA,SAAA,AFxB8C,AQjBF,CRiBG,AQjBF,CAAC,CAMnB,OAAA,EAAS,QRoBQ,AQnB1B,EAAE,cAYX,OAAA,CAAA,AAAQ,GAAmB,CRkBC,CQlBe,INoC1B,AZrBJ,GkBfqC,EAAE,CAAC,CAAC,EAAZ,mDJhC3D,CGGkB,oPDUjB,EFXD,GNGoB,ERGI,ACDA,gTaH1B,EAAA,KACO,CAAC,CAAC,CAAC,MACF,CAAC,EAAG,EAAE,MACN,CAAC,OACD,CAAC,GAAI,CGDD,AHCE,ANSA,QMRL,QACD,CAAC,KAAM,EAiFf,SAAS,EAAA,CACqB,CE1BA,CAAA,CF4B5B,CAAgC,CAChC,CAA0B,OAEhB,EFCF,MAAA,CAAA,MEDkB,cAGC,EAAM,GAAD,CAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAEjB,CAAC,CAAE,EAAiB,GACjD,CdxBsC,GIZ9B,ALJE,AeuC8C,CAAC,CfvC/C,CeuCiD,AfvCjD,Ee2Cd,CE7BC,MF6BM,IdtBE,CcsBG,CAAC,GJXY,OIYD,KAAK,GAAG,CJVH,CAAC,II0cG,EAAd,EA9bG,EA8bS,CAA4B,CA9b9B,GdpBD,CcodvB,EAAK,EAAD,KAAQ,CADT,AAER,CAAC,CACD,CAAC,CAAC,CAAE,EAAM,EAAF,AAAI,AAAE,EAAI,AAAF,EAAM,AAAF,EAAO,CAAF,CAAI,AAAE,CAHL,CAGO,AAHN,AAGQ,EAAE,AAAE,EAAE,AAAE,EAAI,AAAF,GAAK,EAAE,AAEhD,EAFkD,AAChD,EAAI,AACF,CADC,CAAG,CAAC,AACF,EADI,AACF,CAAC,AACD,EAAI,CAAD,CAAG,CAAC,AACT,CAAA,CADW,CACX,EAAK,EAAE,IAAA,EAAO,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAA,CAAE,CAAC,AACrD,EAAI,CAAD,CAAG,CAAC,AACT,CAAA,CADW,CACX,EAAK,EAAE,CAAA,EAAI,EAAE,EAAA,EAAK,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAA,CAAE,CACxD,AADyD,EAE3D,CADK,AACL,EADO,AACP,EAAK,EAAI,CAAE,CAAC,AAEZ,AAFS,CAET,EAAA,EAAK,EAAI,EAAA,AAAG,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAA,CAAE,CAI3D,AAJ4D,EAG1D,AACA,EADI,CAAD,CAAG,CAAC,AACJ,EADM,AACJ,CAAC,AACC,EAAI,CAAD,CAAG,CAAC,AACX,CAAA,CADa,AACb,EAAI,CAAC,EAAE,AAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAChB,EAAI,CAAD,CAAG,CAAC,AACX,CAAA,CADa,AACb,EAAI,EAAE,CAAA,EAAI,CAAC,EAAE,AAAG,CAAC,CAAA,IAAA,CAAM,CACnB,AADoB,EAExB,CADO,AACP,EADS,AACT,EAAK,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,EAAG,CAAE,AAAF,CAAG,AACzB,GAAS,IAAF,aAAmB,CAC9B,CADgC,AAChC,CAAA,EAAI,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,CAAC,EAAE,AAAG,CAAC,CAAA,EAAA,CAAI,CAAC,AAE5B,CAAA,EAAA,EAAK,EAAE,CAAE,CAAC,AAGV,CAAA,EAAG,EAAI,CAAA,CAAA,CAAI,EAAE,CAAE,CAAC,IAAI,EAAE,CAAC,CdjfJ,ScqBnB,EAAM,GAAD,AVjCE,KUiCO,CAAC,GAAG,CAAC,CAAE,CAM9B,CdfC,GceI,IAAM,CAAC,GFWO,CEfM,AAIT,EAJS,IAClB,CAGiB,CVpCb,AUiCF,CACN,OAAO,CAAC,GdhBY,OcgBD,GAAG,CAAC,CACvB,EJPI,AN1BA,GUiCC,CAAC,KAEP,EVrCiD,CUqCjD,CVrCmD,AUqCnD,CVrCoD,CUqCnC,EAAe,CAAC,CAAE,EAAiB,CdhBV,CAAC,IAFW,CAAC,AckBI,CdlBH,AckBI,EAAE,AACrD,EAGX,GAHgB,CAAC,CdhBG,EcmBb,EACR,AAGD,OAAO,EAAY,EAAe,Cdfd,CceqB,EAAiB,CdfhB,AceH,CACzC,AdhB6C,CcgB5C,AADmB,AAGpB,CdlB+C,GceoB,CAAC,CAAC,GAG5D,CAHiD,CAIxD,CAA4B,CAC5B,CAAa,CdlBmB,AcmBhC,CAAgC,CAChC,CAA0B,KFQwC,CAAC,CAAC,OEoV/C,IAAY,MAzVjC,CFOC,EAAA,CEmEsB,EA3EC,EA2Ec,CAAF,CA3EL,EAA/B,AVvC+B,CAAC,CUuHxB,CALwD,EAGhE,EAEa,AAkMN,CA8Ba,EApOpB,AAEK,CAoMM,CA8BqB,AApOxB,CAEA,CAFM,CAAT,EAAQ,CAAK,EAAE,CAAC,AAoOa,EAnON,EACR,AAoOd,CApOe,AAoOd,AdhQc,CcgQX,CAFkD,EAEzC,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAC,AArOjD,EAsOO,EAAK,CAtOP,CAsOM,EAtOH,GAsOW,CAAC,AAFV,CAEW,CAAE,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,AAtOX,CAsOa,AAtOZ,CAsOa,CAAE,CAFd,CAAC,AAEe,EAAE,AAGlC,EAAI,AAHgC,CAG/B,AAAF,CAAG,CACF,CADI,CACF,CAAC,AACA,EAAI,CAAD,AAAE,CAAC,CACT,CADW,AACX,EAAA,EAAK,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAC9B,AAD+B,EAC3B,CAAD,AAAE,CAAC,CACL,CADO,EACJ,EAAE,CAAX,CAAC,CACG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAEvC,AAFwC,CAExC,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAEpC,EAAE,AACP,AAAM,CAAL,CADQ,CACA,EAAE,GACH,GAAG,EAAE,CAAX,CAAC,CACG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,EAAA,CAAI,CAE/C,AAFgD,CAEhD,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAG/C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAGxC,GAAG,EAAE,CAAX,CAAC,CACC,AAAM,CAAL,EAAQ,EAAE,GACP,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,EAAA,CAAI,CAAC,AAE9C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAG7C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,EAhEpC,OAAO,CAAC,AADV,CACW,CAAE,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CADd,CAAC,AACe,EAAE,AAGlC,EAHoC,AAGhC,CAAD,AAAE,CAAC,CACF,CADI,CACF,CAAC,AACA,EAAI,CAAD,AAAE,CAAC,CACT,CADW,AACX,EAAA,EAAK,CAAC,CAAA,MAAA,EAAS,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAC3B,EAAI,CAAD,AAAE,CAAC,CAET,CAFW,AAEX,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AACjC,EAAE,AACL,CAAA,CADO,CACP,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAG7C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,CA0Dd,EA3QN,EAA7B,EA6QO,CAFsD,CAEjD,CA7QwB,AAA/B,CA6QM,AA7Q0B,CAAC,CAA9B,GA6QW,CADT,AACU,CAAC,CAAE,CAAC,EAAK,CAAF,CAAQ,CAAC,CAAE,AAAL,CAAM,CAAE,CAAC,CAAE,AADrB,CAAC,CACsB,EAAE,CAC9C,CADgD,GAC1C,EAAE,AAAG,EAAI,CAAD,AAAE,CAAC,CAAC,AACZ,EAAE,AAAG,EAAE,CAAI,EAAI,CAAD,AAAE,CAAC,CAAC,AAClB,EAAE,AAAG,EAAE,CAAI,EAAI,CAAD,AAAE,CAAC,CAAC,AA6DxB,MA1Da,GAAG,GAAZ,CAAgB,GAAZ,CAAgB,EAAE,AACxB,EAAO,EAAH,AAAG,CAAE,CAAC,AAKZ,EAAE,AAAG,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAC,AAExC,EAAE,AAGF,EAHI,AACO,CAER,EAFW,GAAZ,GAAyB,CAArB,EAAwB,EAAE,CAAd,EAEZ,EAFgB,QAEN,CAGV,AAHW,GAGR,CAAC,AAEH,GAlBE,CAkBE,CAlBA,CAAC,AAqBV,EAHa,AAGX,EAAE,AACN,CAAC,CAJkB,CAIf,CAAC,AAJgB,CAIf,AAER,CAAC,CAAG,CAAC,CAAC,AAEO,GAAG,EAAE,CAAd,GAGF,CAHM,CAGC,EAAH,EAAO,CAAC,AACR,EAAE,CACJ,CADM,AACL,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,AACX,CAAC,CAAG,CAAC,CAAC,CAGN,CAAC,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,AACX,CAAC,CAAG,CAAC,CAAC,CAEU,IAAI,EAAE,CAAf,IAGT,AAHa,EAGN,EAAH,CAAM,CAAC,AACP,EAAE,AACJ,CAAC,CADK,AACF,CAAC,CAAC,CAAG,CAAC,CAAC,AAEX,CAAC,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,CAIF,GAAG,EAAE,CAAd,GACF,CADM,CACJ,CAAG,IAAA,CAAI,CAAC,AAGZ,EAAM,CAAH,AAAG,EAAG,EAAO,CAAC,CAAJ,AAAI,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,EAAE,CAAE,CAAC,CAC1B,EAAE,AACX,EAAM,AADO,CACV,AAAG,EAAA,EAAK,CAAC,CAAA,IAAA,EAAO,EAAE,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAChC,EAAE,EACX,AADa,EACP,CAAH,AAAG,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,KAAA,AAAM,CAAC,CAG1C,CACT,CAAC,CADW,AACV,CAAC,AADU,CA5UC,IAAI,IA/ER,QAAQ,CAAC,GVvCC,AUuCE,CVvCD,AUuCE,CAErB,CAFuB,MAEhB,EAAa,CFQC,CERc,EAAO,EAAiB,CAAnB,CACzC,EAEC,GAHkE,CAAC,AAG7D,CAH8D,CAGjC,AA+GvC,QdlI4B,CckInB,AAAY,CAAmB,CdlIT,AcmBmB,CAgHhD,GAAA,CAAK,QACI,CAAA,CAAE,CADK,AACJ,AAGZ,EAJkB,EAIZ,EAAiC,EAAA,KAAiB,CAAA,GACxD,GAAI,CAAC,EAEH,KAFU,EACV,EAAA,IAAI,CAAC,KAAK,CAAC,CAAA,eAAA,EAAkB,EAAA,CAAa,CAAC,CAAC,AACrC,CACL,Cd7BwC,Mc6BjC,EAAE,EACV,CAAC,AAGJ,IAAI,EAAE,AAAW,EAAO,GAAD,GAAQ,CAAA,EAAG,CAAC,AAC7B,EAAkB,EAAO,GAAD,GAAQ,CAAC,OAAO,CACxC,AADyC,EACpB,EAAO,EdzBb,IAAA,CcyBqB,KdzBX,KcyBqB,CAC9C,EAAgB,EAAA,CAAX,KAAyB,CAAC,KAAK,CAAC,AAErC,EAAA,EAAoC,KAAA,CAAM,GAAG,CAAC,CAAC,AAC/C,EAA2C,GdxB7B,McwB+C,GAAG,CAAC,CAAC,AAMxE,MAJW,IAAI,EAAE,CAAb,EAAE,EACJ,EAAE,AAAG,GAAA,CAAG,CAAC,AAGJ,CACL,EAAE,CAAE,EAAE,CAAI,YAEV,OAAO,UdnCqF,CcoC5F,EACA,oBAAqB,EAAgB,MAAM,OAAP,KAEpC,Cd3BC,Sc2BS,aAEV,uBAAwB,EAAqB,EAAmB,MAAM,CAAC,AAAE,CAAD,AAAE,OAE1E,CAF+D,CAGhE,AACH,CAAC,AADG,CApJ+C,KAAK,CdnBlB,AcmBmB,CdnBlB,AcmBmB,GACtD,EFcU,EZlCgC,CAAC,CYkCjC,AEdU,CAAC,EdpB0B,AYkCpB,CZlCqB,AcsBzC,AAIX,Cd1BqD,Qc0B5C,AACP,CAA4B,CAC5B,CAA0B,EAG1B,GAAA,EAAgB,OAAO,CJVD,CIUG,MAChB,EAIT,GFSK,AETD,AAJU,CAIT,AAJU,EAIE,MFSQ,CETD,EAAI,EAAY,EAAY,OAAb,AAAoB,CAAC,CAAT,CAAW,MACrD,EAIT,IAAI,EAA2B,EAC7B,EAAc,eAAe,EAAI,EAAE,CACnC,EAAY,SAAD,MAAgB,EAAI,EAAE,CAClC,CAAC,AAGF,GAAyB,IAArB,Cd3BD,Cc2ByB,OAExB,EAAc,KAFE,MAEH,OAAmB,EAAI,EAAE,CAAC,AACnC,EACJ,EAAY,Md9BkC,CAAT,AAAU,CAAC,Uc8BlB,EAAI,EAAE,CAAC,EACnC,AAAC,EAA0B,MAAM,EAAK,EAAD,AAAyB,MAAM,CAGtE,CAAC,AAHuE,EAG7C,GAHC,GAGK,EAAA,EACT,CAJuC,KAIjC,CAEX,CADnB,AACoB,CAAC,AAErB,EAA0B,MAAM,EAChC,CAAC,EAAA,MAA8B,CAEZ,CADnB,EAGmB,EACjB,EACA,GAdiB,CAAC,CAiBvB,AAGD,AApByB,OAoBlB,CAAc,CAAC,EAAY,EAAG,CARS,AAQR,EAAE,EAPT,AACF,CACxB,CAAC,KAKkC,EAC1C,CAAC,CApDqB,EAAe,GAClC,AACH,CAAC,AAyED,SAAS,EAAA,CAAe,EACtB,Gd5DiF,Gc4D1E,CAAA,GAA4B,GAAG,GAAxB,EAAG,Kd3BC,CAAC,Kc2BS,EAAE,EAAY,AAAO,EAAL,CAAQ,CAAC,GACvD,CAuEA,AAvEC,SAuEQ,EAAY,CAAqB,EACxC,MAAa,MAAN,CAAC,EAAkB,GAAG,GAAT,CAAC,EAAkB,GAAG,CAAC,EAAV,CAAC,AACpC,CAAC,AAED,SAAS,EAAoB,CAAS,EACpC,IAAM,Cd9BmB,Ac8BlB,CAAW,SAAS,CAAC,CAAE,Cd7Bf,Cc6BiB,CAAC,CACjC,OAAO,MAAM,CAAC,CAAC,CAAC,AAAE,CAAC,AAAF,CAAG,AAAE,CAAD,AAAE,AACzB,CAD0B,AACzB,AAmCD,SAAS,EAAwB,CAAY,CAAE,CAAY,EACzD,IAAK,IAAI,CAAC,CAAG,CAAC,CAAA,EAAA,KAAW,GAAG,CAAC,EAAE,MAAO,CAAE,EAAE,AAAC,MAAM,CAAC,CAAE,CAAC,EAAE,CAAE,CACvD,IAAM,EAAc,AAlBxB,CAkBa,QAlBJ,AAAuB,CAAU,CAAE,CAAU,EACpD,GAAI,EAAY,EAAE,CAAC,CAAI,EAAY,EAAE,CAAC,EAAE,IAAN,CACzB,CAAC,CAAC,AAEX,GAAM,CAAC,EAAU,EAAS,CAAA,AArB5B,CdFqB,KAc0E,GcZtF,AACP,CAAkB,CAClB,CAAkB,EAElB,GAAI,OAAO,CAAC,EAAK,MdjCE,CciCK,CAAC,OAShB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAR7B,AAQ8B,GAR1B,AAAa,UAAU,OAAhB,CAAC,CACV,CdjCC,CAAC,IciCK,CAAC,CAAW,CAAE,CAAW,CAAC,CAAC,AAC7B,GAAiB,QAAQ,EAArB,AAAuB,OAAhB,CAAC,OACV,CAAC,CAAW,CAAE,CAAW,CAAC,AAEjC,CAFkC,Gd5BhC,CAAC,Ec8BG,AAAI,MAAM,kDAKtB,CAAC,CAOG,EAAoB,EAAE,CACtB,AADuB,EACH,EAAE,CAAC,CACxB,CAAC,MACF,AAAI,CAHiB,CAGN,EACN,EACE,AAJU,EAIC,EACb,CdxBQ,Ec0BV,CACT,CAAC,CAIuB,CAAyB,CAAC,AARhB,CAQiB,Ad/BxB,Cc+ByB,EAAI,GAAG,CAAE,CAAE,CAAC,CAAC,CAAC,EAAI,GAAG,CAAC,CAAC,AACvE,GAAY,CAAC,EAAE,CAAX,EACF,CADK,MACE,EAEV,AACD,CAHc,CAAC,KAGR,CAAC,AACV,CADW,AACV,AAuBD,IAAM,EAAmB,cAAH,AAAiB,CAAC,AAClC,EAAoB,aAAa,CACjC,AADkC,CAAjB,CACM,CAAA,aAAA,EAAgB,EAAnB,AAAmC,CAAA,CAAG,CAAC,AAG3D,EAAuB,CAAA,GAAA,EAAM,EAAiB,CAHS,AAGT,EAAI,EAAoB,CAAA,CAAG,CAAC,AAC1E,EADoB,AACP,CAAA,IADiC,CACjC,EAAQ,AAAX,EAA+B,GAD6B,GAC7B,EAAS,EAAoB,IAAA,CAAM,CAAC,AAE7E,EAAkB,AAFuB,CAEvB,EAAG,EAAgB,CAAA,CAAG,CAAC,AACzC,EAHsE,AAG9D,CAAA,EADO,AACV,KAAG,CAD6B,CACnB,EAAe,MAAA,EAAS,EAAe,GAAxB,CAAwB,CAAM,CAAC,AAEhE,EAAmB,CAAA,EAAG,EAFmC,AAElB,QAAA,CAAvB,AAAiC,CAAC,AAClD,EACJ,CAAA,EAF2C,MAC5B,CACf,EAAY,EACZ,QAAA,EAAU,EACV,EAF4B,CAAA,CAAA,IAE5B,EAAU,EACV,EAF0B,CAAA,CAE1B,AAF0B,CAAG,CAEvB,EAAU,AADhB,EACgB,EAAK,EADK,AACA,CADA,CAAA,AACV,CADa,AACH,EAAA,CAHK,AAG/B,AAA6B,CAGzB,EALJ,AAKoB,AAAI,AAFxB,CAAA,IAAA,CAE8B,AAFxB,CAAC,AACM,AACkB,CADlB,CAAA,EACI,AADA,EACoB,CAAC,CAAC,AADlB,CAAA,IAAA,OAAO,IAAc,CAAC,CAKvC,EAAqB,AAAI,GALU,CAAA,CAAA,CAKJ,CAAC,AADpC,CAAA,MAAA,EACsB,AADb,EACsC,AADP,CACQ,CAAC,OAD7B,CAAA,CAAoB,AAApB,EAAwB,EAAW,MAAA,CAAG,AAAnC,EAAgC,AAKnD,CALyD,AAAnC,CAKH,AALsC,AAAnC,AAKP,KAL0C,CAKhC,AALuC,CAKtC,AALuC,AAIzD,CAAA,CAAA,AAJc,CAKV,AALqB,CAIrB,CACmB,CAAC,AALI,CAKH,IADT,EAAH,EAAiB,CAAC,CAKvC,EAAmB,AAAJ,GALoB,CAAA,CAAA,CAKV,CAAC,AADlB,CAAA,CAAA,CACI,CADA,CACmB,CAAC,CAAC,IADT,EAAH,EAAiB,CAAC,MAAJ,CAAA,CAAA,GFjXE,ERlCpB,GAAA,CQkC0B,CT3BrB,GAAA,CAAA,oBS+BJ,CHvBC,AGuBU,CAAE,CVpBX,AUoB4B,CAAE,AVpB7B,CUoB2C,MAC9D,EACJ,CAAC,CAAA,CAAI,CAAC,CVrBgB,CAAC,AUqBQ,CZhCA,CYiC/B,AG7B6B,AH4BC,OAC9B,SAAA,CAAiB,oBAAoB,CAAC,IAAA,CAAK,EAAA,UAEtC,cAAc,CAAC,EAAK,EAAM,Gb9CP,CeSa,CAAC,UFsCxB,oCAKlB,CAAC,AAEM,IAAA,EAAa,CAClB,CKpCgB,CLqChB,EAAA,YAGe,CAAC,CAAM,CAAC,EAAK,CAAE,sCACK,MAAM,CAAC,CT5BC,ES4BO,kBAIpC,EI5BA,0BJ8BL,QAAA,KAAiB,aAIpB,EAAA,CAAiB,CAAC,EAAI,CZpBoC,CYoBpC,EAEJ,mBAAb,GAA8C,UAAU,EAA7B,OAAO,EAAwB,KAAjB,SAC3C,qDAIH,EAAU,EAAA,EAAkB,ERvC0B,CJmBS,CInBP,AQuCxB,QAEvB,CRxCS,CQwCA,IFlBc,SAAA,KEmBvB,CMpCC,CAAA,WAAA,YNqCO,CKpCC,EAAE,ALqCtB,CKrCuB,CLqCR,EADW,AFlBY,AEmBf,EADK,AACC,EAAF,GAG/B,CTpBC,AOGA,AOpBA,CLqCc,EAAS,WAAW,EAAE,IAAI,CAAC,AAC3B,CAD4B,CACpB,EAAA,AEVJ,EV3BJ,AQqCM,AZtBJ,EYwBnB,CAAC,CAAC,AAEW,EAAA,CAAA,EAEX,EACA,QAEK,EAIE,MAAW,EI9BN,KJ8Ba,CAAC,GENC,IFOf,GADwB,CZzBL,KYqB1B,GACI,+CACA,AAAI,EEbI,MFaI,KAAA,SAMf,GAAA,CAAF,CAAC,CAJE,GAID,OAAA,CAAuB,KAAK,CAAC,GAAG,GAKvB,CAAA,MACP,OAAA,CAAA,AAAQ,IACZ,EAAK,EAAQ,EAAA,OANf,EAAO,wDASX,CAAC,CAAC,EAEoB,CACpB,EAAA,QAGI,CAAA,GAAA,CAAA,CAAkB,CAAA,EAAM,CAAA,+BAEnB,AAAI,Eb7CF,Ma6CU,KAAK,CAAC,CIlCC,AJkCA,WAItB,EAAU,CInCA,CAAA,EJqCX,AIrCW,GJqCH,CFlBD,AIUI,OFQK,GAOX,QAAQ,EAAE,CAAC,CEVW,CFK5B,QZtBgB,2BYsBhB,OACS,GAAA,2BAOf,CAAC,CAAC,AAEK,EAAA,CACL,EACA,KAA0B,EACpB,CACD,CADG,AACJ,CAIO,AAAC,KZ5BD,AY4BM,CAAC,OAAO,CAAC,CRpD2B,EAAE,CQqDrD,ARrDsD,CJyBrD,AIzBsD,EQqD7C,AADqB,CAAC,AACrB,EADuB,AACf,CAAZ,AAAa,IAAF,CALf,CACH,EAAO,+CACA,QAAA,KAAiB,CAAC,CAAC,OAMtB,GAAS,CAAX,EAJG,GAIQ,OAAA,CAAA,MAAoB,CAAC,EAAE,IAKtB,MACR,OAAA,CAAA,AAAQ,IAAI,CERC,AdpBU,AY4BV,CACV,EAAQ,EACjB,EACF,CAAC,CAAC,CAAC,EARM,0DASX,CAAC,CAAC,AAMY,SAAA,EAAkB,CAAuB,CEdnB,CAAC,AFenC,CEfoC,EFerB,EAAQ,EZlCe,IYkCT,EAAE,CACJ,YAArB,AAAsC,OAA/B,EAAQ,MAAM,GAChB,8CAEP,EFnBgB,AEmBP,EAAQ,KAAD,CAAO,CAAC,AAG9B,CAAC,AAED,EAAQ,IAAI,CAAG,EACf,EAAA,AADmB,CAAC,MZ/BY,CYgChB,CAAG,CETD,CFUlB,EAAO,KAAA,CAAO,CAAG,EACjB,EAAQ,UAAU,CAAG,GZ/BL,iBU1HmC,CQXnC,cRcQ,sEAOpB,CAAA,CACA,CAA8B,CPVC,AOW/B,CAAkB,CAAA,CVXuB,sDUcd,CAAG,IOtBI,YPwBpB,CAAC,MAAM,CAAC,CAAC,CVXW,KUarB,EOxBA,IPwBI,CAAC,CNrBG,oBAAA,CMqBmB,CACtC,MPV6C,CAAC,CAAC,EOU/C,gBAGU,COzBM,APyBH,EAAA,KAAA,CAAM,SAAS,CAAC,EAAqB,eACtC,EAAA,CMbwD,CAAC,KNazD,CAAA,QAAA,CAAiB,CQpBC,CRoBoB,GMZC,CAAC,CAAC,GNalD,EEeE,KFfK,CAAA,EAAA,IAD8D,CAAC,CAAC,GAC/C,CAAC,EAAqB,OAC/C,CAAC,SAD4C,KAAwB,CAAC,CAAC,QACtE,UAKP,CAAA,QACoB,CAAA,YAEmB,CAE7B,YAAc,CAAmB,KAG7B,CEiBX,MAAA,QFhBM,IAAA,CAAA,MAAA,kBAOe,CAA4B,COtBrC,APsBqC,ENnBtB,GMoBxB,CAAA,MAAO,CAAG,EAAc,QAAQ,CMVX,ANWvB,EMXqC,ANUZ,EACrB,CAAC,mBAAmB,CACxB,EMZ+D,CAAC,CNY5D,CAAA,sBAAuB,CAC5B,CAAC,KAEG,CEiBC,uBAAA,4BFZM,OAAO,CAAC,AEeA,GENG,eJFA,CAA8B,CAAA,OO3BC,OP4BvC,EAAe,CX7BK,QW6BI,CACrC,IAAI,CAAA,mBAAoB,CACxB,IAAI,CAAC,sBAAsB,CAC5B,CAAC,AAUD,sBACwB,CX7BP,IW8BZ,EAAA,IAAiB,CAAC,CEiB6B,GAAA,IFjBnB,EAAE,CAAC,AMlBA,CAAC,CAAC,KNmBnC,IAAA,EAAO,OAAO,CAAC,KACV,CAAC,EX9BM,CWsCf,IAT+B,QVVQ,CAAC,EAAE,WUmB1C,CAGH,CAAC,AAGM,CEeH,UFfG,aACO,IEoBI,EAAE,CFnBpB,AEmBoB,CFnBnB,AAMM,UAAU,CEmBN,AFnBwB,CAAA,CVT1B,CY4BW,GFhBd,CAAA,OAAQ,CAAA,CACV,SAAS,EACT,CEoBG,CFrBU,CEqBV,AADe,CFnBT,AEmBU,CFjBvB,CEiByB,AFjBxB,AAMM,kBAAkB,CAAA,CAAA,CACvB,IAAA,CAAK,OAAO,CAAG,EAAe,SAAS,CACrC,EAD2B,EACvB,CAAC,UEuB8C,CAAC,CAAC,OFvB7B,CACxB,IAAI,CAAC,sBAAsB,CAC5B,AACH,CADI,AACH,AAED,IACc,QAAA,QACL,IAAA,CAAA,OAAA,4BA2BkE,CACzE,CAAmB,CACnB,CAAU,CACV,CAA+B,CAAA,IAE1B,CAAD,CAIJ,GAAI,CACF,EAAY,EAAM,EAAF,CALA,CAKM,CAAC,CAAC,CAAb,EACJ,CAAC,CAAE,EV1BA,GcemB,CJYxB,KAAK,CAAA,KAAM,CAAA,mEACqD,CACnE,aAAE,CAAW,CAAE,CACf,CAAC,CACF,CAAC,AACH,AINA,AJOH,CAAC,CACF,GALoB,qBM5Lf,CPMC,ATRA,SgBGkD,UACX,IAAI,GAAA,oBAkBa,UAClC,CAAE,QAOtB,CAAA,CAAA,KACD,EAAW,IAAI,CAAC,KAAA,cAES,EAAK,UAAU,CAAC,KAAA,CAAM,KAAsB,CNYC,CAAC,CAAC,EMXtE,EAAW,CERG,CFQM,QAAQ,CAAA,GAAA,CAAK,GAChC,EhBOE,EgBNL,EdCQ,EAAA,EcFK,AACE,aACG,GAAA,CAAA,EAAoB,QAAQ,CAAC,CAAC,AAI3C,KAAK,CAAC,IAAI,CAAC,MAAE,EAAM,EAAF,EZTU,MYSE,CAAE,CCZK,GDYD,CAAC,QAAQ,EAAE,CAAE,CAAC,SAYxC,CFmBF,AG5BF,AH4BE,wBElBd,CAAsB,CAAA,CCVJ,QDUI,CAAU,CAAA,CAAkC,CAAA,CAAE,CAAA,WAEnD,CAAC,EhBKF,GgBLO,CAAC,AACpB,ChBKD,CAAA,EIfyB,AYUiB,CAC3C,AAD4C,GAChC,CFkBG,CdbH,CAAC,YgBHY,EAAW,KAAK,CAAC,IJ+BI,CAAC,AI/BiB,CJ+BhB,AI9BlD,IAAM,EAAW,EAAS,CNcG,CAAC,MMdI,CAAC,GAAG,CAAC,GACvC,GAAI,CAAC,EAAU,ChBKuC,AgBJpD,CCbc,CAAC,CDaH,EADD,AAEX,MAEE,AAAC,GACH,EAAQ,CZTC,EYQE,CACC,CAAC,AADA,GACG,EAAA,GZTK,EYSS,CAAC,CAAC,EAEvB,EFyBQ,AGrCA,EjBcuB,QgBC5B,EJ+BI,CAAC,EAAE,II9BT,CAAC,CJ+BG,CAAC,CAAA,EAAA,KI/Ba,CCZoB,ADYnB,CAGV,CAAC,EAAE,GAAd,MAAM,IACP,CAAC,CjBXK,EiBaS,CJiCV,EACZ,EAAE,WZ5BsC,CAAC,GgBLpB,QAGf,CZPG,GYOC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,CAAG,CAAD,AAAE,CAAC,UAAU,CAAA,EAAK,UAAU,CAAC,CAAC,AAE/C,EJmCI,AInCI,CjBXP,AW6BQ,EMlBE,CAAA,CAAE,MAAE,CAAI,AhBK0C,CgBL1C,AhBK2C,CAAC,EgBLrC,KAEpC,IZ5EK,EAAA,4DAOJ,KAAA,CAAA,GAEwB,YAAjB,OAAA,EAAA,CAAA,CAAA,EAAiB,QAYb,kBAC+B,IAAA,CAAA,QAC3B,SAAwC,oBAGhD,CaGC,UAAA,2BbCE,CU2BG,AV1BT,AACA,AaDO,KbEP,CAAE,UAAA,CAAA,GACF,CAAC,EAAS,CJciB,AcY+B,CV1BhD,SAuDP,MArDK,EYSE,AFiBA,CV2BP,EArDoD,IAAI,CAAC,CAAC,EAsD1D,EQ8CC,CAAA,ER9CO,CACX,AAFmD,EAEnD,EAvD+B,AAsDf,CDrCgB,AcnBA,EbyDV,CAAA,EAAA,GA5DkD,AA4DzC,CUuCG,AVvCF,CAAA,IAAK,CAAC,KAAoB,OA7CnD,GAAM,CAAE,CQsCC,EROyC,CAAC,OA7ClC,CAAE,GARR,CAQY,GARR,CAAC,CUwCY,GVhCI,WARD,CAAC,CQwCrC,AEAkD,CAAC,CAAC,AFAlD,GRxCyC,CAAC,EAAsB,yBACxC,IAAI,YAIN,IAAZ,EJcoB,CAAC,GIVrB,EAAU,EAAS,EAAM,EAAF,CAAN,AAG7B,CYOD,CJ+BG,ERzC0C,CAAC,CAAC,CAGvC,EJWF,WICF,CAAkB,CQyChB,Ab7CF,AKIoB,CAAA,CAAA,CAC3B,IAAA,EAAA,YAAiB,EUoCF,CAAC,GfxCS,OKIa,CAAE,CAAC,kCACd,CAAA,YAStB,aAAW,UAGI,IAAA,EAEZ,IAAI,CAAC,CUiCD,CAAC,CAAC,MVjCQ,CACpB,IAAI,CAAC,SAAA,EAAA,IAAA,GAEV,8CaxFC,CAA+D,ClBLtD,AkBMT,CdKsD,AQAb,AMLX,CRQ+C,aQH3E,CjBIK,CUWO,AOfH,GLgCG,AEpCI,CdQC,QiBHP,0BAIG,CAAC,mBAOlB,CAAC,EAPuC,gBAetC,CAAgB,CAChB,CAGyB,CACzB,CAA8B,MAE1B,CjBeoB,SiBZb,MAAA,UACF,EAAG,CbDO,qBaIX,EAAS,ELsCY,AZtBnB,AiBhBc,MACT,CAAA,QAEL,WAKZ,CAAC,AAKK,SAAU,GDYF,CAAA,ACZyB,CDYd,CAAC,MCVN,YAAhB,OAAO,GACqC,CADjC,EHoCQ,SGnCnB,GL2CK,IK3CG,EAAqB,CP2BP,SO3BiB,EACG,AADE,CDYnB,WCZmB,OACpC,EAAqB,QAAQ,CL2ChB,CK3CqB,CAAA,IAAA,EAAA,SAAA,AAG9C,CAAC,qCjBrC8C,AAAC,AACtC,CiBbG,ATWV,CAAC,4BAAA,ERG4B,GY0B8B,CAAC,OZ1BpB,EAAE,AAAC,QGDL,iBHKrC,CAA2B,CAC3B,CAA8B,CAC9B,CAAkB,CAAA,SAES,EAAwB,MAAM,CAAC,CAAC,CAE7C,ECT8B,EDS1B,CAAC,IAAI,EgBNE,AhBMA,AWVA,CAAC,AXUA,EYqBE,eZnBC,CAAA,OACjB,GAAS,CAAC,CAGtB,IAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAEA,IAAQ,CAAC,OAAA,CAAQ,OAAO,EAAE,KACnB,EUIgB,CMbb,ANac,GVJX,CUIe,QVAU,CAAA,EAAgB,EAAM,EAAF,AYoB5B,GZhB9B,GAHI,CUGa,COlBM,CAAC,AjBeV,CUGa,AVHA,CUGC,AVHA,EYqBR,AZrBa,CkBjBE,ElBkBjC,AADkC,EcU5B,EdTF,CAAC,OAAO,CAAC,CYqBK,CAAA,GZnBpB,CAAK,EAAA,KAAS,CAAA,OAAQ,CAAC,EYqBA,CZpBrB,CGHY,AOOG,MVJR,EAAK,EAAe,EAAM,AADI,EACN,AAC1B,AYmBgC,CAAC,CAAC,AZlBvC,GAFwC,AYuB9B,CZvB+B,AAEnC,CAFoC,CAE1B,EYsBO,CAAA,ARrCN,MQqCM,MZtBW,CAAC,CAAA,EAAI,GAAgB,EAAM,EAAF,AIdpC,EAAE,EAAE,CJcyC,CAAhB,AAAiB,CAAhB,AAAiB,CACtE,OAAO,cAAc,CAAC,EiBhBI,AAAE,CAAD,CAAC,AjBgBe,CACzC,CiBhBK,KAAA,IjBkBA,CUMY,EVJrB,SAE0C,CAAA,EAAgB,IACrD,AADyD,AAC9D,EAAK,AAD2D,EAC5D,AAD8D,GAC7D,CAAU,CIdD,AMwBI,CMfL,KhBKS,CAAC,EIdA,AYSF,CAAC,AhBQb,GcoBO,CExBL,AFwBM,GdpBD,cAAc,CAAA,EAAgB,EAAM,CAChD,CAD8C,KACvC,CAAa,CAAC,CIXP,CAAC,AJWW,EAAD,CAHpB,EAAO,EAAe,EAM/B,CAEiB,CARkB,CDVjC,ACUkC,CAAC,GcmBO,If7B1C,CCmBF,EgBLS,ACZmB,EAAA,GLsCkC,CAAC,CZjB1D,AYiB2D,GZdrD,MAAA,OAAA,CAAA,GAHc,IAIF,CYmBK,CAAC,CZnBc,AYmBb,CZnBc,CAGtC,CD1B+B,EC0BtB,CY2BC,EEPmC,AFOjC,GAAA,AZ/B6B,OY+B7B,CZ3BW,KIdK,AJcA,CAAC,CIdC,AJcA,CDlBC,CCkBC,KAKX,IACzB,EAAM,OAAO,CAAC,GAAI,AUUA,KVTZ,CAAC,EY6BM,CAAC,EZ7BF,CAAC,CDpBG,CewCG,EAAA,IdlBrB,SARM,CAAC,EgBPE,GhBOG,CAAC,+DAPP,CAAC,EgBPI,GhBOC,CAAC,6CAgBb,CAEiB,YAAiC,CAClD,CciBY,CdhBZ,KAAK,AAEA,EADL,AY0BO,CZtBA,CAJL,AACE,KAGc,IcgBA,GdhBO,CAAC,GAHD,EAIvB,CUUY,CEoBR,AZ9BiB,CAAC,EAAmB,CAAC,CAGtC,CY6BC,EAF2C,AZ3BnC,CY2BoC,CAAC,AZ3BzC,GAAS,CAAC,AAJ0B,KACL,EAGd,CAAC,CcYuB,GdPpD,CALkC,CAAC,AAKhB,CALiB,EAAE,IAKZ,CAAC,AAAD,CceI,Gdd5B,CUSY,CVTN,OAAO,CAAA,AAAC,IAAI,AAChB,CADiB,GACb,CAAA,OAAQ,CAAC,EAAe,IAAI,CAAC,CAAC,CANpC,EAAA,IAAI,CAAC,EceI,CAAC,EdfA,CAAC,uDAAuD,CAAC,CAAC,MAPhE,CAAC,KAAK,CAAA,6CAgBZ,CAEM,yBAAA,MACD,KY4BG,GZ5BK,CAAC,GY4BC,IZ5BM,CAAC,IACpB,GAAM,MAAE,CAAI,CAAE,CAAG,EACjB,GAAI,CADmB,AAErB,CAFsB,GAEhB,EcmBO,CAAA,0GdlBT,EcmBO,CAAA,AdnBM,CAAC,EAAe,EAAE,AAEjC,CUSgB,GVTZ,CAAA,KAAM,CAAC,IAAI,CACb,CAAA,OAAA,EAAU,EYgCsB,wBAAA,EZhCS,IAAI,CAAC,mBAAmB,CAAA,6DAAA,EAAgE,EAAI,CAAE,CACxI,AADsI,CAGzI,AAFI,KAEE,CcmBK,GdfjB,CAAC,AcsBA,uBdpB8B,CAAe,CAAA,IACxC,CACF,IAAM,CcsBG,CAAC,AFSQ,CAAA,CZ/BR,CAAG,AY+BI,CAAC,EZ/BL,YAAA,AAAY,EAAC,EAAK,EAAD,CAAC,CAAI,CAAC,EAAS,KAAF,SAAgB,CAAC,CAAE,CAC5D,SAAU,KY+Ba,CAAC,AZ/BR,GAEZ,EAAU,IAAI,AcuBJ,CdvBK,AAAR,KAAa,CAAC,GAAM,CAAF,CAAC,GcuBkB,EdvBV,CAAC,AACzC,MAA0B,KcuBf,GdvBuB,CAAC,CAA5B,AAA6B,OAAtB,EAAuB,EAAU,GAA1B,EAAuB,CAAC,CAAC,EAAU,CAAC,GAEzD,EAAA,IAAI,CAAC,EUiCE,EVjCE,CAAC,ec6BiB,ad7BY,GAI3C,CAAC,AAEO,WACN,CAAuC,CACvC,CAAU,CACV,CAAY,CACZ,CAAuB,CAAA,CAEvB,EcsB4B,CdtB5B,CAAK,QACyB,CADhB,SAC0B,EAAlC,AAAoC,EcsBjB,KdtBZ,EAAO,KAAK,GACrB,EAAO,IAAD,SAAc,CAAG,EACnB,IAAI,CADsB,AACrB,CADsB,OACd,EAAE,CACjB,IAAI,CAAC,CcuBgB,IdvBX,CAAC,KAAK,CACd,wEACA,CACE,IcuBQ,EdvBF,CAAE,CcuBK,CAAC,AdvBC,IAAD,AAAK,GAGhB,EAAO,IAAD,CAAM,CAAC,IAGjB,EAGT,CANiC,CAAC,CAAC,CAM7B,CAHU,CAAC,AAGD,IAAI,CAAP,AAAQ,QcwBU,cdxBY,CAAC,GAE5C,GADA,CADmD,CAC5C,AAD6C,CAAC,GAC/C,IcuByD,CAAC,CAAC,GdvB7C,CAAG,EACnB,EAAO,GADmB,CAAC,AACrB,AAAK,EcyBM,CdzBD,IAAI,EAAE,GAExB,AACE,GAAY,Ec2BM,Ad3BC,MAAR,WAAyB,CAAE,EAAS,EAAO,iBAAiB,CAAC,EACxE,AAC4B,UAAU,EAAlC,AAAoC,OAA7B,EAAO,IAAD,CAAM,GACrB,EAAO,IAAD,SAAc,CAAG,EACnB,IAAI,CADsB,AACrB,CADsB,OACd,EAAE,CACjB,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,2DAA2D,CAC3D,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,Ec2BY,Md3BH,Ec2BY,Ad3BL,Cc2BM,CAAC,Ed3BR,SAAc,SAC7B,Ec2BY,CAAC,CdxBV,AcwBW,EdxBJ,CAHH,GAGE,CAAM,CAAC,EAAS,EAAO,GAAT,CAAQ,SAAc,CAAC,CAAC,CAIlD,Cc2BK,CdxBd,IAAM,Cc4BG,Cd5BK,EAAO,Ec4B6B,Ed5B9B,CAAM,EAAA,EAAM,CAAC,AAC3B,EAAiB,EAAK,EAAD,CAAC,Ic2B2C,CAAC,Cd3BnC,Ac2BoC,Cd3BnC,GAMtC,CAN0C,CAAC,CAAC,IACN,AAK/B,EALqC,GAAD,GAAO,CAAA,AAChD,CAAC,CAAC,CAAE,CACD,CAAC,IAAI,GAAK,GACX,GAAY,CAAC,Ac0BA,Cd1BC,AAEkB,MAHP,WACM,CAAE,EAAS,EAAO,GAAT,CAAQ,aAAkB,CAAC,CACtE,CACoC,AADnC,MACyC,CAAI,CAAC,EAAgB,IAAI,AAElE,CADA,CADoE,CAC/D,CADiE,CAClE,GADwD,QAC1C,CAAA,EACd,IAAI,CAAC,QAAQ,EAAE,CACjB,IAAI,CAAC,Ec0BiB,Gd1BZ,CAAC,KAAK,CACd,wEACA,CACE,KcyBW,CdzBL,CAAE,EAAO,IAAD,AAAK,CACnB,OAAO,CcyBO,AdzBL,EAAO,KcyBiC,QdzBpB,CAC7B,EcwB4D,CAAC,CAAC,IdxBtD,CAAE,EAAK,EAAD,EAAK,SACnB,Cc0BK,GdrBF,EAAK,CALD,CAKA,AcyBI,GdzBE,CAAC,EAAgB,EAAO,McyBT,OdzBsB,CAAM,CAAC,CAExD,EACN,EACL,CAAC,EcwBmB,EdzBR,CAAC,CAAC,EAGD,CAJY,AAKvB,CALwB,GAKpB,GcsBkB,CdtBd,CAAC,QAAQ,EAAE,AAMnB,GAHA,IAAI,CAAC,QAAQ,EAAG,EAGZ,EAHgB,CAAC,Ac8BZ,Cd3BD,CAAC,MAAM,CAAC,Kc2BgC,CAAA,Cd3BvB,CAAC,CAAA,CACxB,Ec2BM,Ed3BD,IAAM,KAAU,CAAJ,GAAQ,CAAC,QAAQ,CAAE,AAWlC,IcyBU,AdzBL,IAAM,CcyBgB,IdnCC,Ic2BQ,Qd3BpC,OAAW,EAAO,IAAD,CAAM,EAAmB,EAAO,IAAD,SAAc,EAAE,CAC9D,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,6EAA6E,CAC7E,CACE,CcyBK,KdzBC,CAAE,EAAO,IAAD,AAAK,CACnB,OAAO,CAAE,EAAO,IAAD,SAAc,GAGjC,EAAO,KAAK,CAAC,EAAO,IAAD,SAAc,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,Cc2BhC,EdzBD,KAAA,CAAO,CAC3B,EAAK,EAAD,WAAc,EAAE,CACtB,Cc0BW,GAAA,Cd1BN,KAAK,CAAA,KAAM,CAAA,mFAEd,QACU,EAAO,GcwB8B,CdxB1B,AAAL,CACd,AcuBoD,OdvB7C,CAAE,EAAO,IAAD,SAAc,CAC7B,QAAQ,CAAE,EAAK,EAAD,EAAK,GAGvB,EAAK,EAAD,GAAM,CAAC,EAAK,EAAD,WAAc,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,CAI3D,OAAO,IAIJ,IAAM,AcsBQ,MdtBF,GADb,CAAC,ac0Ba,Ud1BU,EAAE,CAAC,AACV,Cc0BC,Gd1BG,CAAC,QAAQ,EAAE,CAClC,Cc2BG,Gd3BG,CcyBkC,CAAC,AdzBlB,CcyBmB,AdzBlB,EAAS,CAArB,CAA2B,EAAF,CAAN,EAC7B,EAD4C,CACxC,CAAC,AADyC,EAAE,CAChC,EAAK,EAAT,AAAQ,CAAC,OAAU,CAAC,GAAO,CAAH,AAIlC,CAJmC,GAI7B,EAAa,EAAK,EAAD,CAAC,EAAK,CAAb,AAAc,GAC9B,CADkC,CAAC,AAC5B,Cc6BW,Ad9BkB,CAChC,AAAc,IAAI,CAAC,AACvB,Ec6BkB,Ed7BG,GAAG,CAAC,AAE3B,OAAO,IAAI,CAAC,UAAU,CAAiB,EAAQ,EAAS,EAAX,AAAiB,EAAF,AAC9D,CADwD,AACvD,CAAC,AACI,EAAyB,CAAA,AAFwC,CAAC,CAAC,AAEhC,EAAM,EAAF,EACpC,GAD6C,CACzC,CAD2C,AAC1C,Ac4BU,Ed7BkC,GckCnC,KdjCC,CAAiB,EAAQ,EAAS,EAAX,AAAiB,EAAF,CAAN,AAMlD,EAAO,EAN0D,AAM7D,AAAQ,CANsD,CAMvD,AANwD,CAMvD,OAAU,CAAC,EAAO,IAAD,AAAK,CAAC,CACrC,IAAI,EAAA,IAAW,CAAC,CAAC,EAAO,IAAD,AAAK,CAAC,CAAE,CAAE,SAAS,EAAE,CAAI,CAAE,CAAE,CAAJ,EAAc,IAAA,CACzD,CADwD,CAAC,Ec+BnD,wBd9BsB,CAAC,QAAQ,CAAC,EAAO,IAAD,AAAK,CAAE,Gc8BK,Ad5BjE,Cc4BkE,CAAC,Ed5B/D,CAAC,CAFgE,CAAC,CAAC,GAE5D,CAAC,IAAI,CAAC,GACjB,CADqB,CAAC,CAAC,CACjB,EAAU,IAAI,CAAP,CAAO,IAAU,CAC5B,CAAC,EAAO,IAAD,AAAK,CAAC,CACb,CAAE,SAAS,CAAE,EAAI,CAAE,CAAF,AACT,GAEV,GAFgB,CACf,AACG,CADF,AACG,MAAM,CAAC,IAAI,CAAC,KAId,EAJqB,CAAC,CAAC,GAIhB,EAAA,CACZ,GAAK,CAAD,GAAK,CAAC,QAAQ,CAKlB,CALoB,GcwBO,AdnBtB,IAAM,KAFX,IAAI,CAAC,QAAQ,EAAG,EAEK,GAFA,CAAC,AAEG,CAAC,QAAQ,CAAE,CAWlC,IAAK,IAAM,CcYmC,GdZ/B,CAVe,UAAU,EAApC,OAAO,EAAO,Ec0BC,Kd1BM,EAAmB,EAAO,IAAD,SAAc,EAAE,KAC5D,CAAC,KAAK,CAAC,KAAK,CACd,8EAA8E,CAC9E,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,CcuBS,OdvBA,EAAO,CcuBI,YdvBS,GAGjC,EAAO,IAAD,GAAQ,CAAC,EAAO,IAAD,SAAc,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,CAE1C,EAAO,IAAD,CAAM,CAAE,CAC3B,EAAK,EAAD,KcuBgB,MdvBF,EAAE,KAClB,CAAC,GcuBW,EdvBN,CAAC,KAAK,CACd,oFACA,CACE,MAAM,CAAE,EAAO,GcqBiB,CdrBlB,AcqBkB,CdpBhC,OAAO,CAAE,EAAO,IAAD,SAAc,CAC7B,QAAQ,CAAE,EAAK,EAAD,EAAK,GAGvB,EAAK,EAAD,KAAQ,CAAC,EAAK,EAAD,WAAc,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,AAI/D,CAAC,AAEM,WAAS,CACd,OAAO,IAAI,CAAC,QAAQ,AACtB,CAAC,AADsB,CAExB,AAED,SAAS,GACP,CAA2B,CAC3B,CAAgB,CAChB,CAA2B,GAHT,MAKlB,AAAI,KAAmB,IAAZ,EAEF,EAAkB,GAFT,AAAgB,EAAE,GAED,CAAC,GAAG,CAAC,CAAC,AAGlC,CAHmB,CAGD,IAAI,CAAA,AAAC,GACrB,OADe,EACN,CczSJ,AACd,CAAA,CACA,AFYc,CEZD,AZXA,AFiTiC,CcrS9C,AdqS+C,CcrSrB,CdqSuB,EgBtTP,GZ0BtC,EU8IJ,EACA,OA/G0B,IA8GE,IGlJA,AHoCM,AA+GF,EA/GzB,OVhCH,AUgCU,EAtCQ,IAsCgB,CExDf,AFuDiB,CACa,AExD7B,CFkBK,CAAC,EAsC2B,AAtCzB,CAsC0B,EAAO,CAAC,CAAC,GAAf,IArClD,CdTC,AgBTA,CAAA,IAAA,CFkBI,KAAK,CAAC,CFU2C,AEV3C,CFU4C,CAAC,eEV7C,EAAoB,EAAA,CAAS,KAK1C,GAAI,CAAC,WAKL,CFWC,CEXO,AFWN,CAAC,AKrCI,CH0BO,OAAO,CAAC,CJND,gBIMmB,IAAI,EAG5C,IAAM,EAA2C,AA8JnD,SAAS,AAAc,CAAqB,EAC1C,IAAM,EAAiC,Cd5B1B,Cc4BwC,EADjC,GACsC,CAAA,GAC1D,GAAA,CAAK,EAAO,Yd5BU,Mc6BhB,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoB,Ed5BI,Cc4BW,Cd5BX,Ac4BY,CAAC,AAIlD,IAAM,EAAkB,EAAO,GAAD,GAAQ,CAAA,OAAQ,CACxC,AADyC,EACpB,EAAM,Ed3BM,CAAC,Ac2BP,GAAQ,CAAC,UAAU,CAAC,AAC/C,EAAgB,EAAO,CAAlB,KAAyB,CAAC,KAAK,CAAC,AAErC,EAAA,EAAoC,KAAK,CAAC,GAAG,CAAC,CAAC,AAC/C,EAA2C,GAAY,CdzBpC,IcyByC,CAAA,KAElE,MAAO,CACL,EAAE,MAAE,UAEJ,OAAO,IdjCsE,OckC7E,EACA,oBAAqB,EAAgB,GdzBD,GcyBO,KdzBC,Oc2B5C,EACA,4CACwB,EAAqB,EAAmB,MAAM,CAAC,AAAE,CAAC,AAAF,MAA9B,CAE1C,AAF2C,CAAoB,AAAnB,CAIhD,CAAC,CAzLkD,CAuL1C,MAtLF,CEpBC,QFqBG,MADW,AAId,EAAA,EAAqC,CAGrC,AAHsC,EAGf,EFaT,AI/BF,EFoBhB,EACA,EACA,IEtBuD,CAAC,CAAC,CFsBlD,CACR,CAAC,CAIE,GAAe,CAAC,CdnBH,EcmBY,EFMI,CAAC,gBENc,EACtB,IAAA,EAuH1B,CAAI,EAAc,UAAU,EACnB,AADqB,EACL,Gd3BD,CAAA,CAAA,Ac4BpB,CAAC,CAAC,CAAG,CAAC,CAAC,UAAU,EAAI,CAAC,CAAC,Ed5BwB,Kc4BjB,GAAK,Ad5BoB,Ec4BN,OAAO,CACzD,CAAC,CAxHG,CACT,AAsHsD,CAtHrD,EGpCE,AjBoSkB,EAAS,EAAkB,GAApB,WAAkB,KAAI,CAAiB,CAAE,CAAC,CAAC,AAEvE,CAAC,YAFkE,EMzV9B,uEAcvB,CAAG,CM2BC,EAAA,EN3BU,CAAC,AEJE,SFKlB,CAAG,AWNF,GPgBuB,qBJTX,CAAG,YACf,CAAA,kBAGb,qCDpBc,CACN,EYFH,KZEW,cAGD,CAAA,CAAA,eAOH,CAAA,CAAA,EAAA,EAAA,SAAA,EAAA,QACJ,iBAAiB,CAAG,CWO+B,ARR5B,WHElB,CAAG,KKauB,AFdhB,AHCF,SACN,CAAA,GN0CV,SAAA,GACJ,CAAoC,CACpC,CAAuB,CCoBnB,CDlBJ,CW6BC,GAAA,EAAA,EX7BuC,GAAG,CAO3C,AAP4C,IAOvC,IAAM,KAAS,AAJJ,GACZ,MAAM,GAAG,CewCC,AfxCA,CACX,IAAA,AAAI,CAAC,CAAC,CAAG,EAAE,IAAA,IACX,OAAA,GAAa,KAAD,CAAC,GACe,EAAA,CAAI,Ca6CD,CAAC,Gb5CvB,EKG4B,SLH5B,KAAA,EAA8B,MAAM,CAAE,CAE9C,EAAmB,EAAiB,SAAS,CAAC,AAC9C,IADmC,OAE1B,CAAJ,CagDD,AbhDW,WAAW,EAAE,GAAK,MACd,EagDe,AbhDE,CADM,CeyCjB,CfzCmB,GACR,AAAM,CAAC,ACoBF,CAAC,CAAC,MDhBxC,CACT,CAAC,GA/EA,IAPW,EAAA,CAAA,CAAA,GAqFa,CAAC,oBgBzEvB,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,MhBND,CCUK,AEOJ,CFPI,CAAA,CAAA,SAAA,CAAA,EAAA,CAAA,uamBhCM,EAAA,QAAQ,CAAG,CACtB,CADmB,AACD,CAClB,CAAkB,CAClB,GAAW,EACX,AACA,CAcD,CAfG,EACI,EAAE,AAAG,CAAC,YAAY,MAAM,CAAC,AAAE,CAAD,CAAY,CAAC,CAAE,GAAG,AAAI,CAAH,AAAI,CAAH,AAAG,AACjD,CAD+C,AAAV,CACnC,AAAG,CAAC,YAAY,MAAM,CAAC,AAAE,CAAD,CAAY,CAAC,CAAE,GAAG,AAAI,CAAH,AAAI,CAAH,AAAG,AAEjD,CAFqC,AAAU,AAE9C,CAAU,IAAI,GAAX,EAAE,CAAmB,IAAI,EAAV,EAAE,CAAY,CAAA,EAAA,EAAA,KAAK,AAAL,EAAM,EAAI,AAAF,EAAI,AAAE,GAAG,AAExD,CAFyD,CAAA,KAGvD,CAAC,EAAI,CACH,KAAK,CAAE,CAAC,CAAC,CAAC,CAAC,CACX,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,CACT,GAAG,CAAE,EAAI,CAAD,IAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACvB,IAAI,CAAE,EAAI,CAAD,IAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAG,EAAE,AAAC,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACvC,IAAI,CAAE,EAAI,CAAD,IAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAG,EAAG,AAAD,MAAO,CAAC,CAClC,AAEL,CAAC,AADE,CAGH,AAHG,AACF,IAEK,EAAa,CAAC,EAAa,CAAF,EAAa,EAAE,AAC5C,AADc,EAAgC,EACxC,CAAC,CAAG,EAAI,CAAD,IAAM,CAAC,GAAG,AACvB,CADwB,CAAA,KACjB,CAAC,CAAC,AAAE,CAAD,AAAE,CAAC,CAAC,CAAC,CAAG,AAAF,CAAC,GAAK,AACxB,CADwB,AACvB,CAAA,AAEY,EAAA,KAAK,CAAG,CACnB,CAAS,AADO,CAEhB,CAAS,CACT,GA4CD,AA5CY,EAOX,AAN8B,EAAE,EAC5B,EACF,EADgB,AAEhB,CADuB,CAEvB,EACA,AAFY,EAGV,CAFG,CAED,AAAG,EAAI,AAFiB,AACQ,CAC1B,AAD0B,MAClB,CAAC,CAFkB,AAEjB,CAAC,CAAA,AACnB,EAAE,AAAG,EAAI,CAAD,MAAQ,CAAC,CAAC,CAAE,EAAE,AAAG,CAAC,CAAC,CAAA,AAC3B,CAAC,CAAG,EAAE,AAEV,CAFU,EAEN,EAAE,CAAI,CAAC,EAAI,EAAE,AAAG,CAAC,CAAE,CAAC,AACtB,GAAI,CAAC,GAAK,CAAC,CACT,CADW,CAAC,IACL,CAAC,EAAE,AAAE,EAAE,AAAC,CAKjB,AALiB,IAEjB,EAAO,EAAH,AAAK,CAAA,AACT,EAAO,EAAI,AAAP,CAAM,KAAO,CAAA,AAEV,CAAC,EAAI,CAAC,EAAI,CAAC,GAAQ,CAAC,AACzB,EADsB,CAClB,CAAC,GAAK,EACR,AADU,EACL,AADO,CAAC,CACT,EAAK,CAAC,CAAC,CAAC,CAAA,AACZ,EAAE,AAAG,EAAI,CAAD,MAAQ,CAAC,CAAC,CAAE,CAAC,CAAG,CAAC,CAAC,CAAA,KACrB,GAAoB,CAAC,GAAjB,EAAK,EAAD,IAAO,CAAQ,CAAC,AAC7B,IAAM,CAAC,CAAG,EAAK,EAAD,CAAI,EAAE,CAAA,KACV,IAAN,CAAC,GAAgB,CAAF,CAAW,CAAC,CAAC,CAAE,CAAP,CAAS,AAAC,CAAA,AACvC,CAAC,MAAM,CAAC,GAEM,KADZ,EAAM,CAAH,CACkB,AADV,EAAD,CAAI,EAAA,CAAE,CAAA,CACS,EAAM,CAAH,GAAO,AACjC,EADmC,AAC5B,CAD6B,CAEpC,AADI,CAAM,CAAA,AACF,EAAE,CAAL,AAAK,AAGZ,EAAE,AAAG,EAAI,CAAD,MAAQ,CAAC,CAAC,CAAE,CAAC,CAAG,CAAC,CAAC,CAAA,AAG5B,CAAC,CAAG,EAAE,AAAG,EAAE,CAAI,EAAE,CAAI,CAAC,CAAC,AAAE,CAAD,CAAG,AAAG,CAAF,AAC9B,CAD+B,AAAG,AACjC,AAEG,CAH8B,CAGzB,EAAD,IAAO,EAAI,AAAU,KAAL,IAAc,EAAE,CAAC,CACvC,EAAS,CAAC,EAAM,CAAV,CAAQ,AAAQ,CAAA,AAE1B,CAAC,AAED,CAJyB,MAIlB,CACT,CAAC,CAAA,GADc,CAAA,mGCMf,EAAA,MAAA,CAAA,EAAA,OAkBC,AAlBsB,AAAP,CAAkB,CAAE,EAAiC,CAAA,CAAE,AAAjD,EACpB,GAAI,CAAC,EACH,CADM,EAAE,CAAC,EACF,EAAE,CAAA,AAGX,GAAM,KAAE,EAAM,CAAH,CAAG,aAAa,CAAE,CAAG,EAYhC,KAZuC,CAAA,AAQf,IAAI,EAAE,CAA1B,AAA2B,EAAvB,CAAD,IAAM,CAAC,CAAC,CAAE,CAAC,CAAC,GACjB,EAAM,CAAH,OAAW,CAAG,EAAI,CAAD,IAAM,CAAC,EAAC,CAAC,CAAA,AAGxB,CAmBT,MAnBgB,CAAC,EAmBR,EAAQ,CAAW,CAAE,CAAW,CAAE,CAAc,AAAzC,EAEd,CArB2B,GAqBrB,EAAuB,EAAE,CAAA,AAEzB,CAAC,CAAG,GAFM,AAEN,EAAA,QAAA,AAAQ,EAAC,GAAG,CAAE,GAAG,CAAE,GAAG,AAChC,CADiC,CAAA,CAC7B,CAAC,CAAC,CAAE,MAAO,CAAC,EAAI,CAAD,AAAC,AAGpB,IAAM,EAAM,CAAH,AAAI,CAAC,GAAG,CAAA,AACX,EAAiB,CAAC,CAAd,AAAe,IAAI,CAAC,MAAM,CAAC,AAAE,CAAD,CAAS,CAAC,CAAC,GAAH,CAAO,CAAE,GAAG,AAAE,GAAS,CAAC,CAAL,CAAC,AAAM,CAAL,AAAM,CAAL,AAAK,AAEzE,GAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CACnB,CADqB,CAAC,EACjB,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAK,EAAD,IAAO,EAAI,CAAC,CAAG,EAAK,CAAF,AAAG,EAAE,CAAE,CAAC,AAChD,IAAM,EAAY,EAAM,CAAH,EAAM,CAAG,CAAC,AAAhB,CAAiB,IAAI,CAAG,GAAG,CAAG,CAAI,CAAC,CAAC,CAAC,CAAA,AACpD,EAAW,IAAI,CAAC,EAClB,CAAC,AADW,IAEP,CAAC,AACN,CAH2B,CAAC,CAAA,CAkBxB,CAAW,CAAA,AAmBX,CAAW,CAAA,AAlCT,EAAoB,eAAH,iBAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,AACjE,EAAkB,aAAH,yBAAyC,CAAC,IAAI,CACjE,CAAC,CAAC,IAAI,CACP,CACK,AADL,EACkB,GAAqB,EAClC,EAAY,CADF,AACG,CAAC,IAAI,CAAT,AAAU,GADW,CAAmB,CAAA,EACvB,CAAC,GAAG,CAAC,EAAI,CAAC,CAAA,AAC1C,GAAI,CAAC,GAAc,CAAC,MAAL,GAAc,AAE3B,AAAI,CAAC,CAAC,AAFuB,CAAC,GAEpB,CAAC,KAAK,CAAC,YAAY,CAAC,CAErB,CAFuB,CAAC,AAC/B,EAAM,CAAH,AAAI,CAAC,CACM,CAAC,CADJ,CAAG,CACI,EADD,CAAG,CAAC,CAAC,IAAI,CAAG,EAAW,CAAC,CAAC,IAAL,AAAS,CAAA,AAC1B,GAAG,AAAE,GAEpB,CAFwB,AAEvB,CAFwB,CAEpB,AAFoB,CAErB,AAAC,AAId,GAAI,EACF,CAAC,CAAG,CAAC,CAAC,IADM,AACF,CAAC,CADG,CAAC,GACC,CAAC,MAAM,CAAC,CAAA,KAGxB,GAAiB,CAAC,GAAd,CADJ,AACK,CADJ,CAvGP,AAuGU,SAvGD,EAAgB,CAAW,EAClC,CAsGuB,EAtGnB,CAAC,EACH,CADM,EAAE,CAAC,AADW,EAEb,CAAC,EAAE,CAAC,CAAA,AAGb,IAAM,EAAkB,EAAE,CAAf,AAAe,AACpB,CAAC,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,GAAG,CAAE,GAAG,CAAE,GAE7B,AAFgC,CAAC,CAAA,CAE7B,CAAC,CAAC,CACJ,CADM,CAAC,KACA,EAAI,CAAD,IAAM,CAAC,GAAG,CAAC,CAGvB,AAHuB,GAGjB,KAAE,CAAG,MAAE,CAAI,MAAE,CAAI,CAAE,CAAG,CAAC,CAAA,AACvB,CAAC,CAAG,EAAI,CAAD,IAAM,CAAC,GAAG,CAAC,CAAA,AAExB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAG,CAAC,CAAC,EAAI,GAAG,CAAG,EAAO,EAAH,CAAM,CAAA,AACnC,IAAM,EAAY,EAAgB,GAQlC,CARsC,CAAC,AAAxB,CAAwB,IACnC,EAAK,CADwB,CACzB,IAAO,EAAE,CAAC,AACd,CAAC,CAAC,CAAC,CAAC,MAAM,CAAG,CAAC,CAAY,EAAI,EAAU,KAAK,EAAN,AAAQ,CAAA,AACjD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAGlB,EAAM,GAHqB,AAGtB,CAHuB,AAGlB,CAHkB,AAGjB,KAAK,CAAC,EAAO,CAAC,CAAC,CAAA,AAEnB,AAFe,CAGxB,CAAC,CA8EyB,CAAC,CAAC,AA/Ed,CAAA,IA+EkB,CAAC,CACrB,AADqB,MACf,OAAmB,IAAT,CAAC,CAAC,CAAC,CAAC,CAAc,CAKrB,CALuB,AAKtB,CALuB,CAKrB,CAAC,AAAjB,CAHJ,AAGK,CAHJ,CAAG,EAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,AAAP,GAAY,AAAF,GAAS,EAAF,CAAC,AAAI,CAAC,EAAO,CAAC,CAAA,AAGpC,MAAM,CACV,OAAO,EAAK,EAAD,CAAI,CAAA,AAAC,CAAC,CAAC,CAAG,CAAC,CAAC,GAAG,CAAG,CAAC,CAAC,CAAC,CAAC,CAAG,CAAC,CAAC,CAAA,AAU5C,GAAI,QAAuB,EAAb,EAAI,CAAC,CAAC,CAAC,CAAC,CAAc,MAAa,IAAT,CAAC,CAAC,CAAC,CAAC,CAAc,AAAE,CAAC,AAC3D,IAAM,CAAC,CAAG,EAAQ,CAAC,CAAC,CAAC,CAAC,CAAL,AAAM,CAAA,AACjB,CAAC,CAAG,EAAQ,CAAC,CAAC,CAAC,CAAC,CAAL,AAAM,CACjB,AADiB,EACT,GAAH,CAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA,AAC5C,EACW,CAAC,CADR,EACN,CAAC,CAAC,MAAM,EAAU,KAAS,KAAR,CAAC,CAAC,CAAC,CAAc,AAClC,CADmC,CAAC,EAChC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAQ,CAAC,CAAC,CAAC,CAAC,CAAL,AAAM,CAAC,CAAE,CAAC,CAAC,CACpC,CAAC,CAAA,AACD,EAAO,EAAH,AACQ,CADF,AACG,CADH,AACM,CAAC,CAAA,EAEnB,GAAQ,CAAJ,AAAK,CAAC,CAAA,AACV,EAAO,EAAH,CAAM,AAEZ,CAFY,GAEN,EAAM,CAAH,AAAI,CAAC,IAAI,CAAC,GAEnB,CAAC,CAAG,EAAE,CAFqB,AAErB,AAEN,CAJ4B,CAAA,EAIvB,IAAI,CAAC,CAAG,CAAC,CAAE,EAAK,CAAC,CAAF,AAAI,CAAC,CAAC,CAAE,CAAC,EAAI,EAAM,CAAC,AACtC,CADmC,GAC/B,CAAC,CAAA,AACL,GAAI,EAEE,AAAM,CAAL,GAAS,EAAE,CAAC,CADjB,CAAC,CAAG,GADa,EAAE,CAAC,AACV,CAAC,YAAY,CAAC,EAAC,CAAC,CAAA,EAExB,CAAC,CAAG,EAAA,CAAE,CAAA,KAIR,GADA,CAAC,CAAG,MAAM,CAAC,CAAC,CAAC,CAAA,AACT,EAAK,CAAF,AAAG,AACR,IAAM,EAAO,EAAH,AAAW,CAAC,CAAC,CAAL,KAAW,CAAA,AAC7B,GAAI,EAAO,CAAC,CAAJ,AAAM,CAAC,AACb,IAAM,CAAC,CAAO,AAAJ,KAAS,CAAC,EAAO,CAAC,CAAJ,AAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAErC,AAFqC,CAEpC,CADC,CAAC,CAAG,CAAC,CACH,CADK,CAAC,CACH,CAAG,CAAC,CAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,AAEpB,CAAC,CAAG,CAAC,AAEb,CAFa,AAEZ,AACH,CAEF,AAFG,CAEF,CAAC,IAAI,CAAC,CAAC,CAAC,AACX,CADW,AACV,AACH,CAAC,IAAM,CAAC,AACN,CAAC,CAAG,EAAE,CAAA,AAEN,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,CAAC,CAAC,MAAM,CAAE,CAAC,EAAE,CAAE,AACjC,CADkC,AACjC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,EAAQ,CAAC,CAAC,CAAC,CAAW,CAAf,AAAiB,EAAK,CAAF,GAE/C,CAFsD,AAErD,AAED,CAJuD,CAAC,CAAA,CAInD,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,CAAC,CAAC,MAAM,CAAE,CAAC,EAAE,CAAE,AACjC,CADkC,GAC7B,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAK,EAAD,IAAO,EAAI,EAAW,MAAM,CAAG,CAAV,CAAe,CAAF,AAAG,EAAE,CAAE,CAAC,AAChE,IAAM,EAAY,EAAM,CAAH,AAAI,CAAC,CAAC,CAAC,CAAb,AAAgB,CAAI,CAAC,CAAC,CAAC,CAAA,CAClC,CAAC,GAAS,EAAJ,CAAkB,CAAA,CAAS,EAAE,AACrC,CADsC,CAC3B,CADW,GACP,CAAC,EAEpB,CAFc,AAEb,AAEL,CAEA,AAFC,KAJgC,CAAC,CAAA,AAM3B,EACT,CAAC,CApI6B,AAtErB,EACJ,CADO,AAsEqB,CAAC,EAmIf,CAAA,EAxMP,CAAC,EAAc,GACtB,KAD8B,CAAC,CACxB,AADa,CACZ,EAAa,GACrB,IAD4B,CAAC,CAAV,CACZ,CAAC,EAAc,GACtB,KAD8B,CAAC,CAAX,AACb,CAAC,EAAc,GACtB,KAD8B,CAAC,CACxB,AADa,CACZ,EAAe,GAiEQ,GAAG,AAAE,GAjEJ,AAiEU,CAjET,AAiEO,CAjEP,AAiEQ,AAjEpB,CAiEwB,CAAC,EACnD,CAAC,CAhGD,IAAA,EAAA,EAAA,CAAA,CAAA,AA+FiE,CAAC,CA/FzB,AA+FyB,KA7F5D,EAAW,MAAH,GAAY,CAAG,IAAI,CAAC,MAAM,EAAE,CAAG,IAAI,CAAA,AAC3C,EAAU,KAAH,GAAW,CAAG,IAAI,CAAC,MAAM,EAAE,CAAG,IAAI,CAAA,AACzC,EAAW,MAAH,GAAY,CAAG,IAAI,CAAC,MAAM,EAAE,CAAG,IAAI,CAAA,AAC3C,EAAW,MAAH,GAAY,CAAG,IAAI,CAAC,MAAM,EAAE,CAAG,IAAI,CAAA,AAC3C,EAAY,OAAH,GAAa,CAAG,IAAI,CAAC,MAAM,EAAE,CAAG,IAAI,CAAA,AAC7C,EAAkB,AAAI,MAAM,CAAC,EAAU,GAAG,CAA3B,AAA4B,CAAA,AAC3C,CADqC,CAChB,AAAJ,MAAU,CAAC,EAAS,GAAvB,AAA0B,CAAC,CAAN,AAAM,AACzC,EAAkB,AAAI,MAAM,CAAC,EAAU,GAAG,CAA3B,AAA4B,CAAA,AAC3C,CADqC,CACf,AAAJ,MAAU,CAAC,EAAU,GAAG,CAA3B,AAA4B,CAAA,AAC3C,CADqC,CAClB,AAAI,MAAM,CAAC,EAAW,GAAG,CAAC,CAA7B,AAA6B,AAC7C,EADuC,AACxB,OAAO,CAAA,AACtB,EADY,AACE,MAAM,CAAA,AACpB,EADW,AACI,MAAM,CAAA,AACrB,EAAe,CADH,KACS,CAAA,AACrB,EAAgB,CADJ,MACW,CAAA,AAI7B,GAJmB,MAIV,EAAQ,CAAW,EAC1B,EADc,KACN,AAAD,KAAM,CAAC,GAAkC,AAAxB,CAAC,CAA2B,AAA1B,CAAyB,AAAxB,SAAmC,CAAC,CAAC,CAAC,CAAA,AAArC,QAAQ,CAAC,EAAK,CAAF,CAAI,CAC9C,AAD+C,CAC9C,AAWD,AAZgD,CAAC,QAYxC,EAAe,CAAW,EACjC,OAAO,EADc,AAElB,CADO,MACA,CAAC,EAAiB,IAAI,CAAC,CAC9B,OADuB,AAChB,CAAC,EAAgB,GAAG,CAAC,CAC5B,OAAO,AADe,CACd,EAAiB,GAAG,CAAC,CAC7B,OAAO,CAAC,AADe,EACE,GAAG,CAAC,CAC7B,OAAO,CAAC,AADe,EACG,GAAG,CAAC,AACnC,CADmC,AA2DnC,AA1DC,SA0DQ,AA3DoB,EA2DZ,CAAW,EAC1B,EADc,IACP,GAAG,CAAG,EAAM,CAAH,EAAM,AACxB,CAAC,AADuB,AAGxB,SAAS,EAAS,CAAU,EAC1B,GADe,GACR,QAAQ,CAAC,IAAI,CAAC,EAAE,AACzB,CAD0B,AACzB,AAED,CAH0B,QAGjB,EAAI,CAAD,AAAU,CAAE,CAAS,EAC/B,OAAO,CAAC,EAAI,CAAC,AACf,CADe,AACd,AAED,SAAS,EAAI,CAAD,AAAU,CAAE,CAAS,EAC/B,OAAO,CAAC,EAAI,CAAC,AACf,CA9Fa,AA6FE,AACd,EA9FY,aAAa,CAAG,OAAO,CAAA,wGCjBvB,EAAA,kBAAkB,CAA+B,AAC5D,EAD6B,EAG7B,GAAuB,AAFP,EACW,EAAE,IACE,EAA3B,AAA6B,CAAC,GAOnC,GAPY,EACT,KADgB,CACV,AAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA,AAGxC,GAAI,EAAQ,KAAD,CAAO,CARO,EAQJ,EARQ,EAS3B,CAT8B,EAAE,CAAA,EAS1B,AAAI,QAD2B,CAClB,CADoB,AACnB,CADoB,oBACC,CAAC,AAE9C,CAF8C,AAE7C,CAAA,oGCPD,IAAM,EACJ,CACE,SAFc,EAEH,CAAE,CAAC,sBAAsB,EAAE,EAAK,CAC3C,CAD0C,UAC/B,CAAE,CAAC,eAAe,EAAE,EAAK,CACpC,CADmC,UACxB,CAAE,CAAC,KAAK,GAAG,OAAiB,CAAT,CAAe,CAC7C,CADiC,CAAW,GAAP,MAC1B,CAAE,CAAC,YAAY,CAAE,GAAK,CAAD,AAChC,WAAW,CAAE,CAAC,SAAS,EAAE,EAAK,CAC9B,CAD6B,UAClB,CAAE,CAAC,SAAS,EAAE,EAAK,CAC9B,CAD6B,UAClB,CAAE,CAAC,cAAc,EAAE,GAAM,CAAF,CAAO,CACzC,CADwC,UAC7B,CAAE,CAAC,SAAS,EAAE,EAAK,CAC9B,CAD6B,UAClB,CAAE,CAAC,QAAQ,EAAE,EAAK,CAC7B,CAD4B,UACjB,CAAE,CAAC,QAAQ,EAAE,EAAK,CAC7B,CAD4B,UACjB,CAAE,CAAC,uBAAuB,EAAE,EAAK,CAC5C,CAD2C,UAChC,CAAE,CAAC,SAAS,CAAE,GAAK,CAAD,AAC7B,UAAU,CAAE,CAAC,6BAA6B,EAAE,EAAK,CACjD,CADgD,WACpC,CAAE,CAAC,WAAW,EAAE,EAAM,CACnC,CAAA,AAIG,CAL+B,CAKjB,AAAC,CAAS,EAAE,AAAG,CAAD,AAAE,CAAC,IAApB,GAA2B,CAAC,WAAW,CAAE,MAAM,CAAC,CAAA,AAqBpD,EAAA,UAAU,CAAG,CACxB,CADqB,CAErB,EADY,GAKZ,GAAyB,AAJT,EA4HjB,AA3HmB,CAGU,CAHR,CAGU,CAA1B,AAA2B,EAAtB,EAAD,IAAO,CAFH,AAEI,GAAG,AACjB,CADkB,IAFA,CAAA,AAGZ,AAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA,AAG9C,IAAM,EAAmB,EAAE,CACrB,AADqB,CAAf,CACW,EAAb,AAAe,CAAA,AAErB,CAAC,CAAG,EAAM,CAAH,AAAI,CAAA,AACX,GAAW,EACX,GAAQ,AADA,AAAQ,CAAA,CAEhB,AADK,GAAQ,AACF,CADE,CAEb,GADQ,AAAQ,AACP,CADO,CAEhB,CADM,EAAQ,CAEd,AAFc,EAED,AADP,EACS,CAAA,AACnB,AAFa,EAEN,CAFS,CAAA,CACF,AACT,EAAS,CAAC,CAAG,EAAK,EAAD,IAAO,EAAE,CAAC,AAC9B,IAAM,CAAC,CAAG,EAAK,EAAD,IAAO,CAAC,CAAC,CAAC,CAAA,AACxB,GAAI,CAAO,GAAG,GAAT,CAAC,EAAkB,MAAN,CAAC,AAAK,CAAG,CAAC,CAAI,CAAC,GAAK,EAAM,CAAC,AAAJ,CAAM,CAAC,AAC9C,GAAS,EACT,CADM,AACL,CADY,CAAA,AACV,CAAA,AACH,QACF,CADU,AACT,AAED,GAAU,GAAG,GAAT,CAAC,EAAY,GAAY,CAAC,EAAU,CAAC,AACvC,CADuB,CACd,CAAC,CAAG,CADuB,AACtB,CACd,AADM,AAAQ,KAEhB,CAGA,AAJO,AACN,GAED,EAAW,GACD,CADK,CAAA,CAAP,CACM,EAAE,CAAZ,AAAa,CAAZ,EACC,CAAC,EAAU,CAAC,AACd,GAAW,EADA,AAEX,CAAC,CADc,CACZ,AADY,AAAP,CACL,AACH,QACF,CADU,AACT,AAGH,GAAU,GAAG,GAAT,CAAC,EAAY,CAAC,GAEhB,IAAK,CAFmB,EAAE,AAEf,CAFgB,AAEf,EAAK,CAAF,AAAG,EAAM,CAAC,CAAH,AAAK,EAAI,CAAD,AAAE,GAAI,MAAM,CAAC,OAAO,CAAC,GACjD,GAAI,EAAK,EAAD,EADqD,CAAC,CAAE,CAAC,GAC9C,CAAC,EAAK,CAAF,AAAG,CAAC,CAAE,CAAC,AAE5B,GAAI,EACF,MAAO,CAAC,CADI,EAAE,CACF,AADG,EACD,EAAO,EAAK,CAAP,CAAM,IAAO,GAAG,CAAK,EAAF,AAAO,CAAA,AAE/C,CAF8C,AAE7C,EAAI,EAAI,CAAD,KAAO,CAAA,AACX,EAAK,CAAF,CAAO,EAAD,EAAK,CAAC,GACd,CADkB,CAAC,AACZ,CADY,GACb,AAAK,CAAC,GACjB,CADqB,CACb,AADc,CAAA,EACjB,AAAY,CAAC,CAAL,AAAK,AAClB,SAAS,CACX,CAAC,AACH,CAAC,AAKH,EAPoB,CAAA,AAMpB,GAAW,EACP,EAAY,CAAC,AADD,AAAR,AAIF,CAJU,AAIT,CAAG,EACN,EAAO,CAJG,GAIJ,AAAK,CAAC,CADI,CACQ,CADN,CAAC,CACmB,GAAG,CAAG,EAArB,AAAiC,CAAtB,AAAuB,CAAtB,AAAuB,CAAC,CAAA,AAClD,CAAC,GAAK,CADwC,EAEvD,EAAO,IAAD,AAAK,CAAC,AADa,EACD,AADG,CAAC,AACH,CAAC,CAAC,CAAA,AAE7B,EAAa,EAAE,CAFU,AAEV,AACf,CAAC,EAAE,CAAA,AACH,CAFU,OAGZ,CAAC,AADS,AAKV,GAAI,EAAK,EAAD,QAAW,CAAC,IAAI,CAAE,CAAC,CAAG,CAAC,CAAC,CAAE,CAAC,AACjC,EAAO,IAAD,AAAK,CAAC,EAAY,CAAC,CAAG,GAAG,CAAC,CAAC,CAAA,AACjC,CADuB,AACtB,EAAI,CAAC,CAAA,AACN,QACF,CAAC,AADS,AAEV,GAAI,EAAK,EAAD,QAAW,CAAC,GAAG,CAAE,CAAC,CAAG,CAAC,CAAC,CAAE,CAAC,AAChC,EAAa,CAAC,CAAA,AACd,CAAC,EAAI,CAAC,CAAA,AACN,CAFU,OAGZ,CADU,AACT,AAGD,EAAO,IAAD,AAAK,CAAC,EAAY,CAAC,CAAC,CAAC,CAAA,AAC3B,CAAC,EAAE,AACL,CADK,AACJ,AAED,CAJyB,EAIrB,EAAS,CAAC,CAGZ,CAHc,CAAN,AAAO,IAGR,CAAC,EAAE,EAAE,EAAO,CAAC,CAAE,CAAL,EAAW,CAAA,AAK9B,CAL6B,EAKzB,CAAC,EAAO,IAAD,EAAO,EAAI,CAAC,EAAK,EAAD,IAAO,CAChC,CADkC,CAAC,IAC5B,CAAC,IAAI,EAAE,EAAO,EAAK,CAAP,CAAM,IAAO,GAAG,AAAK,GAAF,AAAO,CAO/C,AAP+C,AAAD,GAQ5B,CAAC,GAAjB,EAAK,EAAD,IAAO,EACO,CAAC,GAAnB,EAAO,IAAD,EAAO,EACb,QAAQ,CAAC,IAAI,CAAC,CAAM,CAAC,CAAC,CAAC,CAAC,EACxB,CAAC,EAGD,IAHO,EAGA,AAFP,CAnIF,AAmIG,CAC8B,AArIA,AAqIrB,AApIX,CAoIiC,CAAC,CAAC,EAAlB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAS,CAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,AAAE,CAAD,AAAO,CAAC,EAAC,AAAC,CAAA,CApIlE,OAAO,CAAC,0BAA0B,CAAE,MAAM,CAAC,CAAA,CAqIlB,EAAO,GAAF,EAAgB,CAAR,CAAc,CAAA,AAGtD,CAH2C,CAAU,EAG/C,AAHwC,EAG9B,GAAG,EAAN,AAAU,CAAD,CAAU,GAAG,CAAG,AAAT,AAAO,CAAN,AAAO,CAAC,AAAP,CAAS,CAAC,AAAkB,GAAf,GAAqB,CAAC,IAAG,GAAG,CAAA,AAClE,EADoD,AAC5C,GAAH,AAAM,CAAI,EAAD,CAAU,EAAE,CAAG,AAAR,AAAM,CAAL,AAAM,CAAL,CAAM,CAAG,CAAC,AAAkB,AAtIN,CAAD,CAAQ,CAsIhB,CAAmB,CAAC,CAtIA,AAAL,CAAM,EAAE,CAAC,CAAA,AAsID,GAAG,CAMpE,AANoE,EAAZ,IAMjD,CAJL,EAAO,IAAD,EAAO,EAAI,EAAK,EAAD,IAAO,CAAG,AAAF,CAAC,EAAI,CAAG,EAAU,GAAG,CAAG,CAAT,CAAiB,GAAH,AAAM,CAC9D,EAAO,IAAD,EAAO,CAAG,AAAF,CAAC,CACf,EAEU,EAAO,CAFZ,AADkB,CAClB,CAEU,CAAgB,EAAR,CAAa,AAC1C,CADyC,AAAC,AACzC,CAD+B,AAC/B,GADkC,+FCpJtB,EAAA,QAAQ,CAAG,CACtB,CAAS,AADU,CAEnB,QAiBD,cAhBG,GAAuB,CAAK,eAC5B,CADoB,CACJ,EAAI,CAAA,CACgD,CAAA,CAAE,EACxE,CACA,AAAI,CADF,CAFa,AAIN,EACH,CAAC,CAAC,OAAO,AAFE,CAED,CAFG,CAAC,MACS,CAAC,CAAC,KACA,CAAE,IAAI,CAAC,CAChC,CAAC,CACE,OAAO,CAAC,0BAA0B,CAAE,MAAM,CAAC,CAC3C,OAAO,CAAC,WAAW,CAAE,IAAI,CAAC,CAAA,AAE5B,EACH,CAAC,CAAC,OAAO,CAAC,QADa,CAAC,CAAC,OACE,CAAE,IAAI,CAAC,CAClC,CAAC,CACE,OAAO,CAAC,4BAA4B,CAAE,MAAM,CAAC,CAC7C,OAAO,CAAC,aAAa,CAAE,IAAI,CAAC,CAAA,mGCtCrC,IAAA,EAAA,EAAA,CAAA,CAAA,QAEA,EAAA,AAFmD,EAEnD,CAAA,CAAA,CAAwC,OAwClC,EAAQ,GAAH,CAAO,GAAG,CAAc,CAAC,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,CAAC,CAAC,CAAA,AACvD,EAAgB,AAAC,CAAgB,EAAoB,AACzD,CAD2D,CACrD,GAAD,AAAI,CAAC,CAAgB,CADT,AACU,CAAA,AAmDvB,EAAc,IAAI,GAAG,CAA6B,CACtD,AADe,CACd,GAAG,CAAE,CAAC,GAAG,CAAC,CAAC,CACZ,CAAC,GAAG,CAAE,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CACjB,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,CAAC,CACZ,CAAC,GAAG,CAAE,CAAC,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,CAAC,CAAC,CAC3B,CAAC,GAAG,CAAE,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CAClB,CAAC,CAAA,AAII,EAAuB,IAAI,GAAG,CAA6B,CAC/D,CAAC,GAAG,CAAE,CAAC,GAAG,AADc,CACb,CAAC,CACZ,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,CAAC,CACZ,CAAC,GAAG,CAAE,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CAClB,CAAC,CAAA,AAGI,EAAiB,IAAI,GAAG,CAA6B,CACzD,CAAC,EADiB,CACd,CAAE,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CACjB,CAAC,GAAG,CAAE,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CACjB,CAAC,GAAG,CAAE,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CACjB,CAAC,GAAG,CAAE,CAAC,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,CAAC,CAAC,CAC3B,CAAC,GAAG,CAAE,CAAC,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,CAAC,CAAC,CAC5B,CAAC,CAAA,AAMI,EAAW,IAAI,EAAP,CAAU,CAGtB,CACA,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAC5B,CACE,GAAG,CACH,IAAI,GAAG,CAAC,CACN,CAAC,GAAG,CAAE,GAAG,CAAC,CACV,CAAC,GAAG,CAAE,GAAG,CAAC,CACX,CAAC,CACH,CACD,CACE,GAAG,CACH,IAAI,GAAG,CAAC,CACN,CAAC,GAAG,CAAE,GAAG,CAAC,CACV,CAAC,GAAG,CAAE,GAAG,CAAC,CACV,CAAC,GAAG,CAAE,GAAG,CAAC,CACV,CAAC,GAAG,CAAE,GAAG,CAAC,CACV,CAAC,GAAG,CAAE,GAAG,CAAC,CACX,CAAC,CACH,CACD,CACE,GAAG,CACH,IAAI,GAAG,CAAC,CACN,CAAC,GAAG,CAAE,GAAG,CAAC,CACV,CAAC,GAAG,CAAE,GAAG,CAAC,CACX,CAAC,CACH,CACF,CAAC,CAAA,AAOI,EAAa,QAAH,CAAY,CAAA,AAKtB,EAAkB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAE,AAAjB,GAAoB,CAAC,CAAC,CAAA,AAErC,EAAW,IAAI,EAAP,CAAU,CAAC,CAAC,IAAI,CAAE,GAAG,CAAC,CAAC,CAC/B,AAD+B,EAClB,IAAI,GAAG,CAAC,AAAX,iBAA4B,CAAC,CAAA,AACvC,EAAe,AAAC,CAAS,EAAE,AAC/B,CAAC,AADgC,CAC/B,KADc,EACP,CAAC,0BAA0B,CAAE,MAAM,CAAC,CAAA,AAGzC,EAAQ,GAAH,GAAS,CAAA,AAGd,EAAO,EAAQ,AAAX,GAAQ,CAAO,CAAA,AAGnB,EAAc,EAAQ,GAAH,CAAO,CAAA,AAK5B,EALa,AAKX,AAAG,CAAC,AACV,CADU,MACG,EACX,CADc,GACU,AAApB,GACe,AAAL,AAAL,GAEU,AAAV,AAAT,GACA,AAAM,CAAY,EAAK,GAAA,AACvB,AAAM,CAAqB,EAAE,GAC7B,AAAO,AAAM,GACb,AAAY,AAAQ,GACpB,AAAK,AAAO,GACZ,AAAW,EAAY,CAAK,CAC5B,EAAQ,AAAkB,CADE,EAE5B,AAAS,AAAS,GAGlB,AAAS,EAAY,CAAK,CAC1B,EAAE,CAAG,AADqB,EACnB,CAAE,AAET,CAFS,IAEL,KAAK,EAAA,CACP,MAAO,CAAC,IAAI,CAAA,CAAA,CAAQ,AAAP,EAAS,KAAK,EAAI,EAAC,CAAC,CAAC,AAAG,CACvC,AADwC,CACvC,AAED,AAHwC,CAGvC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,EAAA,CACxC,MAAO,CACL,QAAQ,CAAE,KAAK,CACf,EAAE,CAAE,IAAI,CAAC,EAAE,CACX,IAAI,CAAE,IAAI,CAAC,IAAI,CACf,IAAI,CAAE,IAAI,CAAA,CAAA,CAAC,AAAK,CAAC,EAAE,CACnB,MAAM,CAAE,IAAI,CAAA,CAAA,CAAC,AAAO,EAAE,EAAE,CACxB,KAAK,CAAE,IAAI,CAAC,KAAK,CACjB,WAAW,CAAE,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,MAAM,CAC/B,KAAK,CAAE,IAAI,CAAA,CAAA,AAAC,CAAM,CACnB,AACH,CADG,AACF,AAED,YACE,CAAwB,CACxB,CAAY,CACZ,EAA4B,CAAA,CAAE,CAAA,CAE9B,IAAI,CAAC,IAAI,CAAG,EAER,EAFY,CAAA,CAER,AAAE,IAAI,CAAA,CAAA,CAAC,AAAS,EAAG,CAAA,CAAI,CAAA,AAC/B,IAAI,CAAA,CAAA,CAAC,AAAO,CAAG,EACf,IADqB,AACjB,CADiB,AACjB,CAAA,CAAC,AAAK,CAAG,IAAI,CAAA,CAAA,CAAC,AAAO,CAAG,AAAF,CAAC,GAAK,CAAA,CAAA,CAAC,AAAO,CAAA,CAAA,CAAC,AAAK,CAAC,AAAE,CAAD,GAAK,CAAA,AACrD,IAAI,CAAA,CAAA,CAAC,AAAQ,CAAG,IAAI,CAAA,CAAA,CAAC,AAAK,GAAK,IAAI,CAAC,AAAE,CAAD,CAAW,IAAI,CAAP,AAAO,CAAN,AAAM,CAAL,AAAM,AAAK,CAAA,CAAA,CAAC,AAAQ,CAAA,AACnE,IAAI,CAAA,CAAA,CAAC,AAAK,CAAG,IAAI,CAAA,CAAA,CAAC,AAAK,GAAK,IAAI,CAAC,AAAE,CAAD,CAAG,CAAG,AAAF,CAAC,GAAK,CAAA,CAAA,CAAM,AAAL,CAAK,CAAA,CAAM,AAAL,CAAK,AAC3C,GAAG,GAAZ,CAAgB,EAAC,CAAb,GAAiB,CAAA,CAAA,CAAC,AAAK,CAAA,CAAA,AAAC,CAAW,EAAE,IAAI,CAAA,CAAA,CAAC,AAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,AAClE,IAAI,CAAA,CAAA,CAAC,AAAY,CAAG,IAAI,CAAA,CAAA,CAAC,AAAO,CAAC,AAAE,CAAD,GAAK,CAAA,CAAA,CAAC,AAAO,CAAA,CAAA,AAAC,CAAM,CAAC,MAAM,CAAC,AAAE,CAAD,AAAE,AACnE,CAEA,AAFC,AADkE,IAG/D,QAAQ,EAAA,CAEV,QAAuB,IAAnB,IAAI,CAAA,AAAwB,CAAxB,CAAC,AAAS,CAAgB,OAAO,IAAI,CAAA,CAAA,CAAC,AAAS,CAAA,AAEvD,IAAK,IAAM,CAAC,IAAI,IAAI,CAAA,CAAA,CAAC,AAAM,CAAE,AAC3B,CAD4B,EACX,QAAQ,EAArB,AAAuB,OAAhB,CAAC,CAAuB,EAC/B,CAAC,CAAC,IAAI,EAAI,CAAC,CAAC,QAAQ,AAAR,EAAU,OAAQ,IAAI,CAAA,CAAA,CAAC,AAAS,EAAG,EAGrD,EAHyD,CAAC,CAAA,GAGnD,IAAI,CAAA,CAAA,CAAC,AAAS,AACvB,CADuB,AACtB,AAGD,QAAQ,EAAA,CACN,OACqB,AADd,SACuB,CAAC,CAAC,EAA1B,CAAA,CAAA,CAAU,AAAT,CAA0B,IAAI,CAAA,CAAA,CAAC,AAAS,CAC3C,AAAC,IAAI,CAAC,IAAI,CAAC,AAEV,CAFW,GAEP,CAAA,CAAA,CAAU,AAAT,CACJ,IAAI,CAAC,IAAI,CACT,GAAG,CACH,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,GAAG,CAAC,AAAD,CAAE,CAAC,CAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACzC,GAAG,CAAC,AALL,CAMJ,CAAA,EANQ,CAAA,CAAC,AAAD,CAAU,CAAG,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,GAAG,CAAA,AAAC,CAAC,CAAC,CAAE,MAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAO/D,AAPgE,CAO/D,AAPgE,EASjE,AAAS,OASH,CAAkB,CAAA,AAPtB,GAAI,IAAI,GAAK,IAAI,CAAA,CAAA,CAAC,AAAK,CAAE,MAAM,AAAI,KAAK,CAAC,0BAA0B,CAAC,CACpE,AADoE,GAChE,IAAI,CAAA,CAAA,AAAC,CAAW,CAAE,OAAO,IAAI,CAAA,AAOjC,IAHA,IAAI,CAAC,QAAQ,EAAE,CAAA,AACf,IAAI,CAAA,CAAA,CAAC,AAAW,EAAG,EAEX,CAAD,AAAE,CAAG,AAFW,CAAA,GAEP,CAAA,CAAA,CAAC,AAAK,CAAC,GAAG,EAAE,EAAG,CAAC,AAC9B,GAAe,GAAG,GAAd,CAAC,CAAC,IAAI,CAAU,SAAQ,AAE5B,IAAI,CAAC,CAAoB,CAAC,CAAA,AACtB,EAAE,AAAG,CAAC,CAAA,CAAA,CAAC,AAAO,CAAA,AAClB,KAAO,EAAE,CAAE,CAAC,AACV,IACE,IAAI,CAAC,CAAG,CAAC,CAAA,CAAA,CAAC,AAAY,CAAG,CAAC,CAC1B,CAAC,EAAE,AAAC,IAAI,EAAI,CAAC,CAAG,EAAE,CAAA,CAAO,AAAN,CAAO,MAAM,CAChC,CAAC,EAAE,CACH,AACA,CADC,GACI,IAAM,IAAI,CAAI,CAAC,CAAA,CAAA,CAAC,AAAM,CAAE,CAAC,AAE5B,GAAoB,QAAQ,EAAxB,AAA0B,CAAC,MAApB,EACT,EADa,IACP,AAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA,AAGjD,EAAK,EAAD,IAAO,CAAC,EAAE,CAAA,CAAO,AAAN,CAAO,CAAC,CAAC,CAAC,AAC3B,CAGF,AAJ6B,AAC1B,EAGD,AAAG,CAAC,AADN,CAAC,CAAG,CAAA,CAAE,CAAA,AACA,CAAA,AAAC,CAAO,AAChB,CADgB,AACf,AACH,CAAC,AACD,OAAO,IACT,AADa,CAAA,AACZ,AAED,IAAI,CAAC,GAAG,CAAuB,CAAA,CAC7B,IAAK,IAAM,CAAC,IAAI,EACd,GAAU,AADS,CAAE,CACT,AADU,EACR,CAAV,CAAC,EAEL,GACE,AAAa,EAHO,MAGC,SAAd,CAAC,EACR,CAAC,CAAC,CAAC,YAAY,EAAG,CAAI,CAAC,CAAA,CAAA,CAAC,AAAO,GAAK,IAAA,AAAI,CAAC,CAEzC,CADA,CAAC,IACK,AAAI,KAAK,CAAC,gBAAgB,CAAG,CAAC,CAAC,CAAA,AAGvC,IAAI,CAAA,CAAA,AAAC,CAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,AAEvB,CAAC,AAED,MAAM,EAAA,CACJ,IAAM,EACU,CADP,GACW,CAAC,CAAC,CAApB,IAAI,CAAC,IAAI,CACP,IAAI,CAAA,CAAA,CAAC,AAAM,CACR,KAAK,EAAE,CACP,GAAG,CAAC,AAAD,CAAE,CAAC,CAAiB,QAAQ,CAAC,CAAC,AAAvB,CAAD,MAAQ,CAAC,CAAgB,CAAC,CAAC,AAAE,CAAD,AAAE,CAAC,MAAM,EAAE,CAAC,CAAC,AACrD,CAAC,IAAI,CAAC,IAAI,EAAE,EAAG,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,GAAG,CAAA,AAAC,CAAC,CAAC,CAAI,CAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,AAS7D,OARI,IAAI,CAAC,OAAO,EAAE,EAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAI,CAAD,MAAQ,CAAC,EAAE,CAAC,CAAA,AAE/C,IAAI,CAAC,KAAK,EAAE,EACX,EAAD,GAAK,GAAK,IAAI,CAAA,CAAA,CAAC,AAAK,EACjB,IAAI,CAAA,CAAA,CAAM,AAAL,CAAK,CAAA,CAAC,AAAW,EAAI,IAAI,CAAA,CAAA,CAAC,AAAO,EAAE,IAAI,GAAK,GAAA,CAAG,AAAC,CAAC,CAEzD,CADA,CAAC,AACG,CAAD,GAAK,CAAC,CAAA,CAAE,CAAC,CAAA,AAEP,CACT,CAAC,AAED,CAHY,CAAA,KAGL,EAAA,CACL,GAAI,IAAI,CAAA,CAAA,AAAC,CAAK,GAAK,IAAI,CAAE,OAAO,EAEhC,EAFoC,CAAA,AAEhC,CAAC,IAAI,CAAA,CAAA,CAAC,AAAO,EAAE,OAAO,EAAE,CAAE,MAAO,GACrC,EAD0C,CAAA,AACtC,AAAsB,CAAC,OAAnB,CAAA,CAAA,CAAC,AAAY,CAAQ,OAAO,EAEpC,EAFwC,CAAA,CAElC,CAAC,CAAG,IAAI,CAAA,CAAA,CAAC,AAAO,CACtB,AADsB,IACjB,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,IAAI,CAAA,CAAA,CAAC,AAAY,CAAE,CAAC,EAAE,CAAE,CAAC,AAC3C,IAAM,EAAE,AAAG,CAAC,CAAA,CAAA,AAAC,CAAM,CAAC,CAAC,CAAC,CAAA,AACtB,GAAI,CAAC,CAAC,EAAE,WAAY,EAAG,CAAgB,MAAZ,EAAE,AAAC,IAAI,AAAK,CAAG,CAAC,AACzC,EAD2C,CAAC,IACrC,CAEX,CAAC,AACD,GAHgB,CAAA,GAGT,CACT,CAAC,AAED,EAHa,CAAA,EAGR,EAAA,CACH,GAAI,IAAI,CAAA,CAAA,CAAC,AAAK,GAAK,IAAI,EACnB,IAAI,CAAA,CAAA,CAAC,AAAO,EAAE,IAAI,GAAK,GAAG,CADL,CACO,MADA,CACO,CACvC,EAFoC,CACO,AACvC,AAFgC,CACO,AACtC,IAAI,CAAA,CAAA,CAAC,AAAO,EAAE,KAAK,EAAE,CAAE,OAAO,EACnC,GAAI,AADoC,CACnC,AADmC,IAC/B,CAAC,IAAI,CAAE,OAAO,IAAI,CAAA,CAAA,CAAC,AAAO,EAAE,KAAK,EAAE,CAAA,AAG5C,IAAM,EAAE,AAAG,IAAI,CAAA,CAAA,AAAC,CAAO,CAAC,AAAE,CAAD,GAAK,CAAA,CAAA,CAAC,AAAO,CAAA,CAAA,CAAC,AAAM,CAAC,MAAM,CAAG,AAAF,CAAG,AAAF,CAAE,AAExD,OAAO,IAAI,CAAA,CAAA,CAAC,AAAY,GAAK,EAAE,AAAG,CAAC,AACrC,CADqC,AACpC,AAED,MAAM,CAAC,CAAkB,CAAA,CACH,QAAQ,EAAxB,OAAO,EAAmB,EAAf,EAAmB,CAAC,IAAI,CAAC,GACnC,CADuC,CAAC,CAAA,CACpC,CAAC,IAAI,CAAC,EAAK,EAAD,GAAM,CAAC,IAAI,CAAC,CAAC,AAClC,CADkC,AACjC,AAED,KAAK,CAAC,CAAW,CAAA,CACf,IAAM,CAAC,CAAG,IAAI,EAAI,AAAD,IAAK,CAAC,IAAI,CAAE,GAC7B,GADmC,CAAC,AAC/B,CAD+B,GACzB,CAAC,IAAI,IAAI,CAAA,CAAA,CAAC,AAAM,CAAE,AAC3B,CAD4B,AAC3B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA,AAEb,OAAO,CAAC,AACV,CADU,AACT,AAED,MAAM,CAAA,CAAA,CAAC,AAAS,CACd,CAAW,CACX,CAAQ,CACR,CAAW,CACX,CAAqB,CACrB,CAAgB,EAEhB,IAAM,EAAW,EAAI,CAAD,GAAN,eAA0B,EAAI,CAAC,CAAA,AACzC,GAAW,EACX,GADQ,AAAQ,AACN,CADM,CAEhB,EADO,AACM,CADE,AACD,CAAC,AADA,CACA,AACf,GAAW,EACf,AAFc,GAEV,AAAa,AADL,AAAQ,CAAA,EACb,CAAc,KAAb,IAAI,CAAW,CAAC,AAEtB,IAAI,CAAC,CAAG,EACJ,CADO,CACD,AADC,CACJ,CAAK,CAAA,AACZ,KAAO,CAAC,CAAG,EAAI,CAAD,KAAO,EAAE,CAAC,AACtB,IAAM,CAAC,CAAG,EAAI,CAAD,KAAO,CAAC,CAAC,EAAE,CAAC,CAAA,AAGzB,GAAI,GAAY,AAAM,CAAL,GAAS,CAAd,IAAgB,CAAC,AAC3B,EAAW,CAAC,EACZ,GADQ,AACL,AAAI,CAAC,CAAA,AACR,CAFoB,CAAA,MAGtB,CADU,AACT,AAED,GAAI,EAAS,CAAC,AACR,CAAC,GADI,AACC,EAAa,CAAC,EAAE,AACd,CADe,EACZ,EADK,CACd,CAAC,EAAY,AAAM,CAAL,MAAK,CAAG,EAAE,CAC1B,AAD2B,GAChB,CAAA,CAAI,CAAA,AAER,AAAM,CAAL,CAFA,CAEQ,IAAI,CAAC,CAAC,CAAC,GAAK,EAAa,CAAC,EAAI,IAChD,CADwC,EAC9B,CAD8C,AAC9C,CAD+C,AAC1C,CAAA,AAEjB,CAFS,AADoD,CAAC,CAGvD,AAAJ,CAAK,CAAA,AACR,QACF,CADU,AACT,AAAM,GAAI,AAAM,CAAL,EAAQ,KAAE,CAAC,AACrB,EAAU,GACV,CADc,CAAP,AAAO,AACD,CAAC,CAAA,AACd,GAAW,EACX,CAFU,EACF,AAAQ,AACb,AAAI,CADS,AACR,CAAA,AACR,QACF,CADU,AACT,AASD,GAJE,CAAC,AAIC,EAJG,CAAD,IAAM,EAIC,AAHX,EAAc,CAAC,CAAC,EAChB,AAAkB,GAAf,AAAkB,IADR,CACT,MAAM,CAAC,CAAC,CAAC,EACb,GAAY,EACC,CAAC,AACd,EAFQ,AAEJ,CAAD,EAFiB,CAEZ,AAFY,CAEX,GACT,AADY,CAAC,CACP,AADO,CACV,CAAK,CAAA,AACR,IAAM,EAAM,CAAH,GAAO,EAAG,AAAC,CAAC,CAAE,GAAG,AAC1B,CAAC,AAD0B,CAAA,AACvB,EAAG,CAAC,AAAD,CAAU,CAAC,EAAK,CAAF,CAAO,CAAF,AAAG,CAAE,EAAK,CAAF,CAAa,CAAC,CAAC,CAAA,AACjD,EAAI,CADwC,AACzC,GAAK,CAAC,GAAG,AACZ,CADa,CAAA,MAEf,CADU,AACT,AACD,GAAG,AAAI,CAAC,AACV,CAAC,AAED,AAHU,OAEV,EAAI,CAAD,GAAK,CAAC,GAAG,AACL,CAAC,AACV,AAFe,CACL,AACT,AAID,AANe,IAMX,CAAC,CAAG,EAAM,CAAH,AAAI,CAAA,AACX,EAAO,EAAH,EAAO,EAAG,AAAC,IAAI,CAAE,GAAG,AACtB,CADuB,CACR,AADQ,EACN,CAAA,AACnB,AADO,EACD,CAAH,CAAK,CAAA,AACZ,KAAO,CAAC,CAAG,EAAI,CAAD,KAAO,EAAE,CAAC,AACtB,IAAM,CAAC,CAAG,EAAI,CAAD,KAAO,CAAC,CAAC,EAAE,CAAC,CAGzB,AAHyB,GAGrB,GAAkB,IAAI,CAAd,EAAI,CAAC,CAAW,CAAC,AAC3B,EAAW,CAAC,EACZ,GADQ,AACL,AAAI,CAAC,CAAA,AACR,CAFoB,CAAA,MAGtB,CAEA,AAFC,AADS,GAGN,EAAS,CAAC,AACR,CAAC,GADI,AACC,EAAa,CAAC,EAAE,AACpB,AAAM,CADe,AACpB,EAAQ,EADK,IACK,MAAN,CAAC,AAAK,CAAG,EAAE,CAAC,AAC3B,GAAW,CAAA,CAAI,CAAA,AAER,AAAM,CAAL,CAFA,CAEQ,IAAI,CAAC,CAAC,CAAC,GAAK,EAAa,CAAC,EAAI,IAChD,CADwC,EAC9B,CAD8C,AAC9C,CAD+C,AAC1C,CAEjB,AAFiB,CAD4C,AACpD,CADqD,CAGvD,AAAJ,CAAK,CAAA,AACR,QACF,CADU,AACT,AAAM,GAAI,AAAM,CAAL,EAAQ,KAAE,CAAC,AACrB,GAAU,EACV,EAAa,AADC,AAAP,CACO,AADA,CACA,AACd,GAAW,EACX,CAFU,EACF,AAAQ,AACb,AAAI,CADS,AACR,CAAA,AACR,QACF,CASA,AAVU,AACT,GAGC,CAME,AAND,EAAI,CAAD,IAAM,EAMC,AALX,EAAc,CAAC,CAAC,EACE,GAAG,GAArB,CADa,AAEb,CADI,CAAD,KAAO,CAAC,CAAC,CAAC,GAEZ,GAAY,GAAa,EAAjB,CAAoB,AAAI,EAAG,AAAf,CAAe,AAAC,CAAa,CAAC,EAAC,CAAC,AAAC,CAAC,AAE1C,CAF0C,AAEzC,AACd,IAAM,EAAW,GAAG,AAAI,EAAG,CAAA,AAAb,AAAa,CAAc,AAAb,CAAc,CAAC,CAAC,CAAC,AAAE,CAAD,AAAE,CAAC,AAAE,CAAD,AAAE,CAAA,AACpD,AALA,EAKK,AALkD,CACvD,CAII,EAAK,CAAC,GAAG,AACb,CADc,CAAA,AACR,CAAH,CAAK,CAAA,AACR,IAAM,EAAM,CAAH,GAAO,EAAG,AAAC,CAAC,CAAE,GACvB,CAD2B,CAAC,AACvB,CADuB,CACxB,EAAK,CAAC,GACV,AADa,CACZ,AADa,CAAA,AACV,EAAG,CAAA,CAAC,AAAS,CAAC,EAAK,CAAF,CAAO,CAAF,AAAG,CAAE,EAAK,CAAF,CAAa,GAC/C,GAD4C,EAAW,CAAC,CAAA,CAE1D,CADU,AACT,AACD,GAAU,GAAG,GAAT,CAAC,CAAU,CAAC,AACd,EAAK,EAAD,EAAK,CAAC,GAAG,AACb,CADc,CACR,AADQ,CACX,CAAK,CAAA,AACR,EAAM,GAAD,CAAK,CAAC,GACX,CADe,CAAC,AACT,CADS,CACZ,EAAO,EAAG,AAAC,IAAI,CAAE,GACrB,AADwB,CAAC,CAAA,MAE3B,CACA,AADC,AADS,GAEA,GAAG,EAAE,CAAX,AAAY,CAAX,CAOH,MANY,EAAE,GAAV,GAAoC,AAAjC,CAAkC,EAAE,CAAC,AAA1B,EAAG,CAAA,CAAC,AAAM,CAAC,MAAM,GACjC,EAAG,CAAA,CAAU,AAAT,EAAY,CAAA,CAAI,CAAA,AAEtB,EAAK,EAAD,EAAK,CAAC,GAAG,AACb,CADc,CACR,AADQ,CACX,CAAK,CAAA,AACR,EAAI,CAAD,GAAK,CAAC,GAAG,EAAO,GAAF,AACV,CADgB,AACf,CADgB,AAChB,AAEV,CAH0B,EAGvB,AAAI,CAAC,AACV,CADU,AACT,AAQD,OAHA,EAAI,CAAD,GAAK,CAAG,IAAI,CAAA,AACf,EAAG,CAAA,CAAU,AAAT,MAAY,EAChB,EAAG,CAAA,CAAC,AAAM,CAAG,CAAC,CADW,CACP,AADO,CACR,QAAU,CAAC,EAAM,CAAH,AAAI,CAAC,CAAC,CAAA,AAC9B,CAAC,AACV,CADU,AACT,EAED,AAAkB,CAAC,CAAoB,EAIrC,OAAO,IAAI,CAAA,CAAA,CAAC,AAAS,CAAC,EAAO,EAC/B,CAD6B,AAC5B,CAED,CAAS,CACP,CAAoB,CACpB,EAAuC,CAAW,EAKlD,GACE,CAAC,GACgB,AAZ8B,CAAC,CAAA,AAW1C,MACmB,EAAzB,OAAO,GACQ,EADH,EACO,GAAnB,EAAM,GAAD,CAAK,EACc,CAAC,GAAzB,EAAK,CAAA,CAAC,AAAM,CAAP,AAAQ,MAAM,EACnB,AAAc,IAAI,EAClB,CAAC,IADG,CAAC,IAAI,CAET,OAAO,EAET,GAFc,CAAA,AAER,EAAE,AAAG,EAAK,CAAA,CAAC,AAAM,CAAP,AAAQ,CAAC,CAAC,CAAA,MAC1B,CAAI,CAAC,EAAE,CAAkB,QAAQ,EAAtB,OAAO,EAAE,CAAiB,AAAY,EAAV,EAAc,EAAE,CAAC,EAAhB,IAAI,EAGpC,IAAoC,CAAA,CAAA,CAAc,AAAb,CAC3C,EAAE,AAAC,IAAI,CACP,EAEJ,CAFO,AAEN,CADE,CAAA,AAEH,AAAa,CACX,CAAS,CACT,EAAuC,CAAc,EAErD,MAAO,CAAC,CAAC,EAAI,CAAD,EAAI,CAAC,IAAI,CAAC,IAAmB,CAAC,EAAE,QAAQ,CAAC,CAAgB,CAAC,AACxE,CADwE,AACvE,EAED,AAAe,CAEb,CAEC,CACD,CAAa,EAEb,IAAM,EAAE,AAAG,EAAK,CAAA,CAAO,AAAN,CAAO,AAAR,CAAS,CAAgC,CAAA,AACnD,EAAQ,GAAH,CAAO,EAAG,AAAC,IAAI,CAAE,EAAE,AAAE,IAAI,CAAC,OAAO,CAAC,CAAA,AAC7C,EAAK,CAAA,CAAC,AAAM,CAAP,AAAQ,IAAI,CAAC,EAAE,CAAC,CAAA,AACrB,EAAG,AAAD,IAAK,CAAC,GACR,EADa,CAAC,CAAA,AACV,CAAA,CAAA,CAAC,AAAM,CAAC,EAAO,EACrB,CADmB,AAClB,EAED,AAH0B,AAGpB,CACJ,AAJyB,CAMxB,AANwB,CAOzB,CAAa,EAEb,IAAM,EAAE,AAAG,EAAK,CAAA,CAAC,AAAM,CAAP,AAAQ,CAAC,CAAgC,CAAA,AAEzD,IAAK,IAAM,CAAC,IADZ,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,MAAM,CAAC,EAAO,CAAC,EAAH,AAAK,EAAG,EAAE,CAAA,CAAO,AAAN,CAAO,CAC1B,AAD0B,EACxB,CAAA,CAAO,AAAN,CAAQ,CACR,AADS,QACD,EAArB,OAAO,CAAC,GAAe,CAAC,CAAA,CAAA,CAAC,AAAO,CAAG,IAAA,AAAI,CAAA,CAE7C,IAAI,CAAA,CAAA,CAAC,AAAS,CAAG,MACnB,CAAC,EAD2B,AAG5B,AAAa,CAAC,AAHc,CAGL,EACrB,IAAM,CAAC,CAAG,EAAS,GAAG,CAAC,EAAL,EAAS,CAAC,IAAmB,CAAC,CAAA,AAChD,MAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAgB,CAAC,AACnC,CAAC,AADkC,EAGnC,AAAS,CAAC,CAAoB,EAI5B,GACE,CAAC,GACgB,EADX,MACmB,EAAzB,OAAO,GACQ,EADH,EACO,GAAnB,EAAM,GAAD,CAAK,EACc,CAAC,GAAzB,EAAK,CAAA,CAAC,AAAM,CAAC,AAAR,MAAc,EACL,IAAI,GAAlB,IAAI,CAAC,IAAI,EACc,AAAvB,CAAwB,EACxB,CAAC,IADG,CAAA,CAAA,CAAO,AAAN,CAAO,MAAM,CAElB,OAAO,EAET,GAFc,CAAA,AAER,EAAE,AAAG,EAAK,CAAA,CAAC,AAAM,CAAP,AAAQ,CAAC,CAAC,CAAA,MAC1B,CAAI,CAAC,EAAE,CAAkB,QAAQ,EAAtB,OAAO,EAAE,CAA6B,IAAI,EAAE,CAAlB,AAAmB,EAAjB,AAAC,IAAI,EAGpC,IAAoC,CAAA,CAAA,CAAC,AAAa,CAAC,EAAE,AAAC,IAAI,CACpE,AADqE,CACpE,AADoE,CAGrE,CAAM,CAAoC,CAA2B,EACnE,IAAM,CAAC,CAAG,EAAS,GAAG,CAAC,EAAL,EAAS,CAAC,IAAmB,CAAC,CAAA,AAC1C,EAAK,AAAH,EAAQ,CAAC,AAAD,CAAO,CAAC,AAAR,CAAS,CAAgC,CAAA,AACnD,EAAE,AAAG,CAAC,EAAE,GAAG,CAAC,EAAE,AAAC,IAAI,CAAC,CAAA,AAE1B,GAAI,CAAC,EAAE,AAAE,OAAO,EAGhB,GAHqB,CAAA,AAGhB,IAAM,CAAC,IADZ,IAAI,CAAA,CAAA,CAAC,AAAM,CAAG,EAAE,CAAC,AAAD,CAAO,CACP,AADO,IACH,CAAA,CAAA,CAAC,AAAM,CAAE,CAAC,AACX,QAAQ,EAArB,AAAuB,CAAC,MAAjB,CAAC,GACV,CAAC,CAAA,CAAA,CAAC,AAAO,CAAG,IAAA,AAAI,CAAA,CAGpB,IAAI,CAAC,IAAI,CAAG,EAAE,AACd,CADc,GACV,CAAA,CAAA,CAAC,AAAS,MAAG,EACjB,IAAI,CAAA,CAAA,AAAC,CADqB,AACZ,CADY,AACT,EACnB,CAAC,AAED,EAHwB,CAAA,GAGlB,CAAC,QAAQ,CAAC,CAAe,CAAE,EAA4B,CAAA,CAAE,CAAA,CAC7D,IAAM,EAAM,CAAH,GAAO,EAAG,AAAC,IAAI,MAAE,EAAW,GAErC,IAF4C,AAAT,CAAU,CAAA,CAC7C,EAAG,CAAA,CAAC,AAAS,CAAC,EAAS,EAAK,CAAF,AAAG,CAAE,CAAV,CAAmB,CAAC,CAAC,CACnC,AADmC,CAE5C,CAAC,AAID,AANwC,CAC5B,CAAA,SAKD,EAAA,CAGT,GAAI,IAAI,GAAK,IAAI,CAAA,CAAA,CAAC,AAAK,CAAE,OAAO,IAAI,CAAA,CAAA,CAAC,AAAK,CAAC,WAAW,EAAE,CAAA,AAExD,IAAM,EAAO,EAAH,EAAO,CAAC,QAAQ,EAAE,CAAA,AACtB,CAAC,EAAE,AAAE,EAAM,EAAU,AAAZ,EAAkB,CAAG,EAAJ,CAAP,CAAe,CAAC,cAAc,EAAE,CAAA,OAKvD,AAKF,GAJE,CAIE,CAAC,EAJC,CADI,AACJ,CAAA,CAAC,AAAS,EACb,CAGU,EAAE,CAHR,AAGS,CAHT,CAAA,CAAS,AAAR,CAAS,MAAM,EACnB,CAAC,IAAI,CAAA,CAAA,CAAC,AAAQ,CAAC,eAAe,EAC9B,EAAK,EAAD,SAAY,EAAE,GAAK,EAAK,EAAD,SAAY,EAAE,CAAC,AAMvC,CANuC,KAMjC,CAAC,MAAM,CAAC,AAAI,MAAM,CAAC,CAAA,CAAA,EAAI,EAAE,CAAA,CAAG,CAD3B,CAAC,AAC4B,IADxB,CAAA,AAC6B,CAD7B,AAC8B,CAD7B,AAAQ,CAAC,MAAM,CAAC,AAAE,CAAD,EAAI,CAAG,AAAF,CAAC,CAAC,CAAE,CAAC,CAAI,EAAQ,AAAT,GAAY,AAAN,CAAC,AAAM,AAAE,CAAP,AAAM,CAAC,CAAE,CAAC,CAAA,AACjB,CACjD,IAAI,CAAE,EAAE,AACR,KAAK,CAAE,EACR,CAAC,CAPO,AAMI,AACX,CACJ,CAAC,AAED,EAVe,CAAA,CAUX,OAAO,EAAA,CACT,OAAO,IAAI,CAAA,CAAA,CAAC,AAAQ,AACtB,CADsB,AACrB,AAuED,cAAc,CACZ,CAAkB,CAAA,CAElB,IAAM,EAAM,CAAH,EAAe,CAAC,CAAC,GAAN,CAAU,CAAA,CAAC,AAAD,CAAS,CAAC,GAAG,CAAA,AAK3C,GAJI,CAIA,CAAC,EAJG,CAAA,CAAA,CAAC,AAAK,GAAK,IAAI,AAIN,EAJQ,CAAC,AACxB,IAAI,CAAA,CAAA,AAAC,CAAQ,EAAE,CAAA,AACf,IAAI,CAAA,CAAA,CAAC,AAAS,EAAE,CAAA,EAvrBpB,CADgE,CA0rB5C,IAAI,CAAC,MAAE,AAzrBd,CAyrBe,AACxB,IAAM,EACJ,IAAI,CADO,AACN,OAAO,EAAE,EACd,IAAI,CAAC,KAAK,EAAE,EACZ,CAAC,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,IAAI,CAAA,AAAC,CAAC,CAAC,CAAgB,QAAQ,CAAC,CAAtB,AAAsB,OAAf,CAAC,EAC3B,EAAM,CAAH,GAAO,CAAA,CAAA,CAAC,AAAM,CACpB,GAAG,CAAA,AAAC,CAAC,CAAC,EAAE,AACP,GAAM,CAAC,EAAE,AAAE,CAAC,CAAE,EAAU,EAAM,CACf,EADc,CAAP,KACC,CAAC,CAAC,AAAvB,OAAO,CAAC,CACN,EAAG,CAAA,CAAC,AAAU,CAAC,CAAC,CAAE,IAAI,CAAA,CAAA,AAAC,CAAS,CAAE,GAClC,CAAC,CAAC,EADuC,CAAC,WAC1B,CAAC,GAGrB,KAH6B,CAAC,CAAA,AAC9B,IAAI,CAAA,CAAA,CAAC,AAAS,CAAG,IAAI,CAAA,CAAA,CAAC,AAAS,EAAI,EACnC,IAAI,CAAA,CADuC,AACvC,CAAC,AAAM,AADgC,CAC7B,IAAI,CAAA,CAAA,AAAC,CAAM,EAAI,EACtB,CACT,CADW,AACV,CAAC,AAFkC,AACzB,CAEV,AAHmC,IAG/B,CAAC,EAAE,CAAC,CAAA,AAEP,EAAQ,EAAE,CAAL,AAAK,AACd,GAAI,IAAI,CAAC,OAAO,EAAE,EAAE,AACY,CADX,OACmB,EAAlC,AAAoC,CAAC,MAA9B,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,CAAC,CAAC,EAQnB,CAAC,CADoB,CAAC,GAAxB,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,CACK,KADC,EAAU,EAAS,GAAG,CAAC,EAAL,EAAS,CAAA,CAAA,CAAC,AAAM,CAAC,CAAC,EAAC,CAAC,CACrC,AADqC,CACpC,AAIpB,IAAM,EAEH,GALS,AAKN,AAAI,EAAI,CAAD,EAFG,AAEC,CAAC,EADhB,AACoB,CAAD,KAAO,CALD,AAKE,CALF,AAKG,CAAC,CAAC,CAAC,CAE9B,EAAI,CAAD,SAAW,CAAC,KAAK,CAAC,EAAI,EAAI,CAAD,EAAI,CAAC,EAAI,CAAD,KAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAEhD,EALsD,AAKlD,CAAD,SAAW,CAAC,QAAQ,CAAC,EAAI,EAAI,CAAD,EAAI,CAAC,EAAI,CAAD,KAAO,CAAC,CAAC,CAAC,CAAC,CAAC,AAGhD,CAHgD,CAGpC,CAAC,GAAG,AAAI,CAAC,EAAZ,CAAwB,EAAI,CAAD,EAAP,AAAW,CAAC,EAAI,CAAD,KAAO,CAAC,CAAC,CAAC,CAAC,CAAA,AAE7D,EACE,EAnnBW,CAknBR,OACO,CAAC,CAAC,CAAC,gBAnnByB,AAmnBT,CAnnBS,AAonBpC,EAAY,EACZ,EAAE,AACR,CADQ,AACP,AAKL,EAPmB,CAAC,CAAC,AAOjB,CAP4B,CAOtB,CAAH,CAAK,CAAA,AASZ,OAPE,IAAI,CAAC,KAAK,EAAE,EACZ,IAAI,CAAA,CAAA,CAAC,AAAK,CAAA,CAAA,CAAC,AAAW,EACtB,IAAI,CAAA,CAAA,CAAC,AAAO,EAAE,IAAI,GAAK,GAAG,EAC1B,CAAC,AACD,EAAM,CAAH,UAAG,CAAW,CAAA,AAGZ,CADO,EAAQ,EAAM,CAAT,AAAM,CAGvB,CAH6B,AAG7B,CAH6B,CAG7B,EAAA,QAAA,AAAQ,EAAC,GAAG,AACX,CADY,GACR,CAAA,CAAA,CAAU,AAAT,CAAY,CAAC,CAAC,IAAI,CAAA,CAAA,CAAC,AAAS,CAAC,AACnC,IAAI,CAAA,CAAA,CAAC,AAAM,CACZ,AACH,CAAC,AAMD,AAPG,IAOG,EAAyB,GAAG,GAApB,AAAG,IAAI,CAAC,IAAI,EAA0B,GAAG,CAAA,EAAjB,IAAI,CAAC,IAAI,CAEzC,EAAsB,GAAjB,AAAoB,CAAC,CAAC,CAAnB,IAAI,CAAC,IAAI,CAAW,WAAW,CAAC,AAAE,CAAD,IAAM,CAAA,AACjD,EAAQ,EAAJ,EAAwC,CAAA,CAAA,CAAC,AAAc,CAAC,GAEhE,AAFmE,CAAC,CAAA,CAEhE,IAAI,CAAC,OAAO,EAAE,EAAI,IAAI,CAAC,KAAK,EAAE,EAAI,CAAC,GAAsB,CAAlB,EAAqB,GAAjB,IAAI,CAAC,IAAI,CAAU,CAAC,AAGjE,IAAM,CAAC,CAAG,IAAI,CAAC,QAAQ,EAAE,CAAA,AAKzB,OAHA,EAAE,GAAA,CAAA,CAAC,AAAM,CAAG,CAAC,CAAC,CAAC,CAAA,AACf,EAAE,GAAC,IAAI,CAAG,IAAI,CAFH,AAEG,AACd,EAAE,EAHoB,CAAA,AAGpB,CAAA,CAAC,AAAS,MAAG,EACR,CAAC,CAAC,CAAE,CAAA,EAAA,CADa,CAAA,AACb,QAAA,AAAQ,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAO,EAC/C,AADqD,AAAR,CAAQ,AACpD,AAED,EAHoD,EAGhD,EACF,CAAC,GAAY,GAAY,EAAhB,CAAmB,AAAI,CAAC,CADjB,AACK,CACnB,EAAE,CACF,IAAI,CAFqC,AAErC,CAFsC,AAEtC,CAFuC,AAEtC,AAAc,EAAC,GACpB,CADwB,CAAC,CAAA,CACN,IAAI,AACzB,EAD2B,AACV,CADW,CACX,CAAE,CADH,AACG,AAEjB,IACF,EAAO,CAAA,CAHO,AAGV,EAAG,EAAM,EADG,AACC,EADC,AACD,CADE,CACF,EAAO,EAAc,IAAA,AAAK,CAAA,CAsB7C,MAAO,AAtBiC,CAKpC,AAAc,GAAG,OAAb,CAAC,IAAI,EAAY,IAAI,CAAA,CAAA,CAAC,AAAS,CAC7B,CAD+B,AAC9B,CAD+B,GAC3B,CAAC,OAAO,EAAE,EAAI,CAAC,EAAM,CAAH,CAAC,AAAe,CAAd,CAAc,CAAE,CAAC,AAAG,EAc7C,EAdoC,AAc5B,CAd6B,CAAC,CAG9B,AAWH,CAAO,EAXD,CAAC,AAWG,AAdyC,CAAA,AAG3C,CAAnB,AACE,GAUwB,CAXtB,AAWsB,CAXrB,IAAI,CAEP,IAAI,EACH,CAAD,IAAK,CAAC,OAAO,EAAE,EAAK,EAAD,CAAI,AAAK,EAAwB,EAAzB,CAAY,CAAa,CAAE,CAAlB,AAAmB,AACvD,CADqC,CAAC,AAEtC,EADI,CACD,AAJ8C,CAKjD,AAAc,CAHmC,CAAC,CAAC,AAGlC,CAAC,CAAC,KAAf,CAAC,IAAI,CAAW,GAAG,CACT,GAAG,CAAC,CAAC,CAAnB,IAAI,CAAC,IAAI,CAAW,IAAI,CACV,GAAG,GAAjB,IAAI,CAAC,IAAI,EAAY,EAAiB,GAAG,CAC3B,GAAG,GAAjB,EADmC,CAAC,CAAC,AACjC,CAAC,IAAI,EAAY,EAAiB,CAAA,EAAA,CAAI,CAC1C,CAAA,CAAA,EAAI,GAD+B,CAAC,AAC5B,CAD6B,AAC5B,IAAI,CAAA,CAAA,AAAE,CAAA,CAKnB,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,GACR,CADY,CAAC,EACT,CAAA,CAAA,CAAC,AAAS,CAAG,CAAC,CAAC,IAAI,CAAA,CAAA,CAAC,AAAS,CAClC,AADmC,IAC/B,CAAA,CAAA,CAAC,AAAM,CACZ,AACH,CADG,AACF,EAED,AAAQ,GACN,IAAI,CAAC,AAAa,AAxzBN,CAAC,GAwzBS,CAAC,AAxzBT,EAwzBW,CAAC,CAxzBR,CAAC,CAAA,AA8zBZ,CANU,AAMT,AAEN,IAAI,EAAa,CAAC,CAAA,AACd,GAAO,CAAH,CACR,CAFc,CAEX,CAAC,AACF,AAFc,CAAA,EAEP,CAAH,CACJ,EADW,CAAA,CACN,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,IAAI,CAAA,CAAA,CAAC,AAAM,CAAC,MAAM,CAAE,CAAC,EAAE,CAAE,CAAC,AAC5C,IAAM,CAAC,CAAG,IAAI,CAAA,CAAA,CAAO,AAAN,CAAO,CAAC,CAAC,CAAA,AACP,QAAQ,EAArB,AAAuB,CAAC,MAAjB,CAAC,GACV,CAAC,CAAA,CAAC,AAAD,CAAS,EAAE,CAAA,AACR,IAAI,CAAA,CAAA,CAAC,AAAS,CAAC,CAAC,CAAC,EAAE,AACrB,CADsB,EACf,CAAH,CACJ,GADY,CAAA,AACR,CAAA,CAAA,CAAC,AAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA,CACR,IAAI,CAAA,CAAA,CAAC,AAAkB,CAAC,CAAC,CAAC,EAAE,AACrC,CADsC,EAC/B,CAAH,CACF,GADU,CACX,AAAqC,CAAA,CAAA,CAAC,AAAe,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA,CACnD,IAAI,CAAA,CAAA,CAAC,AAAS,CAAC,CAAC,CAAC,EAAE,CAAC,AAC7B,GAAO,CAAH,CACF,GADU,CACX,AAAqC,CAAA,CAAA,CAAC,AAAM,CAAC,CAAC,CAAC,CAAA,CAGtD,CAAC,AACH,CAAC,MAAQ,CAAC,GAAQ,CAAJ,CAAM,EAAa,EAAE,CAAC,AACtC,CAAC,IAD+B,CA3B9B,IAAK,IAAM,CAAC,IAAI,IAAI,CAAA,CAAA,CAAC,AAAM,CACR,AADU,CAAC,OACH,EAAE,AAAvB,CAAwB,MAAjB,CAAC,EACV,CAAC,CAAA,CAAA,CAAC,AAAQ,EAAE,CA2BlB,AA3BkB,IA2Bd,CAAA,CAAA,AAAC,CAAS,MAAG,CACnB,CAAC,EAED,AAAc,CAAoC,CAAY,EAC5D,CAJ0B,CAAA,KAInB,IAAI,CAAA,CAAA,CAAC,AAAM,CACf,GAAG,CAAA,AAAC,CAAC,CAAC,EAAE,AAGP,GAAiB,QAAQ,EAAE,AAAvB,CAAwB,MAAjB,CAAC,CACV,MAAM,AAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA,AAIjD,GAAM,CAAC,EAAE,AAAE,CAAC,CAAE,EAAW,EAAM,CAAG,CAAC,CAAL,AAAM,EAAb,YAA2B,CAAC,GAEnD,AAFsD,CAAC,CAAA,KACvD,IAAI,CAAA,CAAA,CAAC,AAAM,CAAG,IAAI,CAAA,CAAA,CAAC,AAAM,EAAI,EACtB,CACT,CADW,AACV,CAFmC,AACzB,AACT,CAFkC,AAGnC,MAAM,CAAA,AAAC,CAAC,CAAC,CAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAI,IAAI,CAAC,KAAK,EAAA,CAAE,CAAC,CAAI,CAAC,CAAC,CAAC,CAAC,CACrD,IAAI,CAAC,GAAG,CAAC,AACd,CAEA,AAFC,AADa,MAGR,CAAA,CAAA,CAAW,AAAV,CACL,CAAY,CACZ,CAA6B,CAC7B,GAAmB,CAAK,EAExB,IAAI,GAAW,EACX,EAAE,AAAG,CADG,AAAQ,CAAA,AACT,CAAA,AACP,GAAQ,EAAH,AAEL,GAFa,AAEJ,CAFI,CAGjB,CADU,EAAQ,CAAA,AACb,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAK,EAAD,IAAO,CAAE,CAAC,EAAE,CAAE,CAAC,AACrC,IAAM,CAAC,CAAG,EAAK,EAAD,IAAO,CAAC,CAAC,CAAC,CACxB,AADwB,GACpB,EAAU,CACZ,AADa,GACF,EACX,AAFU,EAER,CADM,AAAQ,AACV,CADU,AACT,EAAW,GAAG,CAAC,CAAC,CAAC,CAAC,AAAE,CAAV,AAAS,GAAK,CAAC,AAAE,CAAD,CAAC,CAAE,CAAC,AAAG,CAAC,CAAA,AACzC,QACF,CADU,AACT,AACD,GAAU,GAAG,GAAT,CAAC,CAAU,CAAC,AACd,GAAI,EAAQ,IAAF,KAAU,AACpB,GAAS,EACT,CADM,CAAO,AACX,CAAI,AADO,GACI,IAAJ,IAAY,CAAC,IAAI,CAAC,GAAQ,CAAJ,CAAC,AAAiB,CAAhB,CAAC,AACtC,EADyD,CAAA,AAC9C,EACX,EAFkD,AACnC,CADoC,AAC3C,AAAO,CADqC,IAGtD,CADU,AACT,AAGD,GAFE,GAAS,AADJ,CAAC,CAGE,CAFF,EAAQ,CAEF,AAFE,GAEZ,CAAC,CAAW,CAAC,AACX,CAAC,GAAK,EAAK,EAAD,IAAO,CAAG,CAAC,CACvB,CADyB,CAAC,AACxB,CAAI,MAAM,CAAA,AAEZ,GAAW,EAEb,EAFiB,CAAP,AAAO,KAGnB,CAAC,AACD,AAFU,GAEA,GAAG,GAAT,CAAC,CAAU,CAAC,AACd,GAAM,CAAC,EAAK,CAAF,CAAa,EAAU,EAAM,CAAG,CAAA,CAAJ,AAAjB,CAAU,AAAW,EAAA,UAAA,AAAU,EAAC,EAAM,CAAC,CAAH,AAAI,CAAA,AAC7D,GAAI,EAAU,CAAC,AACb,EAAE,CAAI,EADI,AAEV,CADS,CACD,AADC,GACQ,AAAZ,EACL,AADa,CACZ,EAAI,EAAW,CAAC,CADS,AACT,AACjB,CAF0B,CAEf,EADE,CACU,EACvB,CADQ,EAAW,AAAS,CAAA,IAE9B,CADU,AACT,AACH,CAAC,AACD,GAAU,GAAG,GAAT,CAAC,CAAU,CAAC,AACd,EAAE,CAAI,EACN,GADW,AACA,CADA,CAEX,EADe,CAAA,AAAP,KAEV,CAAC,AACD,AAFU,EAER,CAAI,EAAa,CAAC,CAAC,AACvB,CADuB,AACtB,AACD,MAAO,CAFa,AAEZ,EAAE,AAAE,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,GAAO,CAAH,AAAI,CAAH,AAAI,EAAU,EAC1C,AADgD,CAC/C,AAD+C,CAEjD,AArxBD,CAmxBiD,CAnxBjD,AAmxB0C,GAnxB1C,CAAA,IAqxBC,kGCl8BY,EAAA,MAAM,CAAG,CACpB,CAAS,AADQ,CAEjB,MAgBD,gBAfG,GAAuB,CAAK,eAC5B,CADoB,EACJ,CAAK,CAAA,CAC+C,CAAA,CAAE,EACxE,CAII,AAAJ,CAJE,CAFa,AAON,EACH,CAAC,CAAC,OAFS,AAEF,CAAC,CAFG,CAAC,MACS,CAAC,CAAC,IACD,CAAE,MAAM,CAAC,CACjC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAE,MAAM,CAAC,CAAA,AAElC,EACH,CAAC,CAAC,OAAO,CAAC,QADa,CAAC,CAAC,EACH,CAAE,MAAM,CAAC,CAC/B,CAAC,CAAC,OAAO,CAAC,cAAc,CAAE,MAAM,CAAC,CAAA,6MC/BvC,IAAA,EAAA,EAAA,CAAA,CAAA,GAAwC,KACxC,EAAA,EAAA,CAAA,CAAA,QAEA,EAAA,EAA8B,CAFgC,AAEhC,CAAA,QAC9B,EAAA,EAAA,CAAoC,CAAA,EADN,MAE9B,EAAA,EAAA,CAAA,CAAA,CAAwC,OAqH3B,EAAA,SAAS,CAAG,CACvB,CAAS,AADW,CAEpB,EACA,EAA4B,CAAA,CAAE,CADf,CAEf,CASD,CATG,AACF,AAGA,CAHA,EAAA,EAAA,kBAAkB,AAAlB,EAAmB,IAGf,EAAC,CAHqB,CAAC,AAGd,CAHc,IAGf,IAAU,EAA0B,MAAtB,EAAQ,KAAD,CAAO,CAAC,CAAC,CAAM,AAAL,CAAQ,EAAE,AAI9C,CAJ+C,GAI3C,EAAU,EAAS,GAAS,EAAnB,AAAQ,EAAS,CAAC,AAAM,CAAC,CAAC,CAF9C,AAE+C,CAAA,AAF9C,CAMH,IAAM,EAAe,UAAH,UAAuB,CAAA,AAYnC,EAAgB,WAAH,CAAe,CAC5B,AAD4B,EACV,AAAC,CAAS,EAAE,AAClC,CAAC,CAAC,CAAC,OADgB,GACN,CAAC,GAAG,CAAC,EAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,AACjC,EAAqB,AAAC,CAAS,EAAE,AAC/B,GAAG,GAAT,CAAC,AADsC,EAC1B,AAAM,CAAL,GADQ,AACC,MAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,AACtC,EAAY,OAAH,EAAY,CAAA,AACrB,EAAc,AAAC,CAAS,EACtB,AADwB,GACrB,GADM,AACf,CAAC,AAD+B,EACb,IAAI,GAAV,CAAC,EAAa,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CACxC,AADwC,EAC/B,IAAH,GAAU,CAAA,AAChB,EAAW,AAAC,CAAS,EAAkB,AAAhB,CAAiB,EAAhC,CAAkB,CAAD,AAAE,CAAC,MAAM,EAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAC9D,AAD8D,EAChD,AAAC,CAAS,EAAE,AAC9B,AAAa,CADmB,AAC/B,AAAa,KADC,AACb,MAAM,EAAgB,GAAG,GAAT,CAAC,EAAkB,IAAI,CAAA,EAAV,CAAC,CAC5B,EAAW,MAAH,eAAwB,CAAA,AAqBhC,EAAkB,CAAC,CAAC,EAAE,AAAmB,EAAE,EAAE,AACjD,IAAM,CADa,CACP,CAAH,CAAM,AAAD,MAAO,CACrB,AADqB,OACd,AAAC,CAAS,EAAK,AAAH,CAAI,AAAF,CAAG,MAAM,GAAK,GAAG,AAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAC7D,AAD8D,CAAA,AAC7D,CAAA,AACK,EAAqB,CAAC,CAAC,EAAE,AAAmB,EAAE,EAAE,AACpD,IAAM,EAAM,CAAH,CADa,AACR,AAAC,MAAM,CAAA,AACrB,OAAO,AAAC,CAAS,EAAE,AAAG,CAAD,AAAE,CAAC,MAAM,GAAK,GAAa,AAAV,GAAa,GAAT,CAAC,EAAkB,IAAI,CAAA,EAAV,CAAC,AAC1D,CAAC,CAAA,AAGK,EACe,QAAQ,EAA3B,GADmB,IACZ,OAAO,EAAiB,OAAO,CAAC,AACb,CADc,OACN,EAA/B,OAAO,OAAO,CAAC,GAAG,EACjB,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAC7C,OAAO,CAAC,QAAQ,CAChB,OAAO,CAUE,AAVW,CAAA,CAUX,GAAG,CACd,AAAoB,OAAO,CAAC,CAAC,CAAC,EANhB,EAMoB,CAAC,AAApB,CANG,CACJ,GAK0B,AALvB,CAKwB,AAC3C,EAAA,CAD8C,CAAC,CAAC,CAAC,IAAI,CAAC,AAC7C,CAAC,GAAG,CAAG,AAD2C,CAAC,CAC5C,EAD+C,CAC5C,AAD4C,CAC5C,AAEN,EAAA,QAAQ,CAAG,MAAM,CAAC,aAAa,CAAC,CAAA,AAC7C,EAAA,SAAS,CAAC,QAAQ,CAAG,EAAA,QAkBR,AAlBgB,CAAA,EAkBhB,MAAM,CACjB,CAAC,CADgB,CACC,EAA4B,CAAA,CAAE,CAAhC,CAAkC,AAElB,CADhC,AAAC,CAAS,EAAE,AACV,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,CAAC,CAAE,EAAS,GAC1B,EAAA,AADwB,EAAS,CAAC,CAAA,KACzB,CAAC,MAAM,CAAG,EAAA,MAAM,CAAA,AAEzB,IAAM,EAAM,CAAH,AAAI,CAAmB,CAAE,EAAsB,CAAA,CAAE,EAAE,CAC1D,CAD4D,KACtD,CAAC,MAAM,CAAC,CAAA,CAAE,CAAE,CAAC,CAAE,CAAC,CAAC,CAEZ,AAFY,EAEZ,QAAQ,CAAG,AAAC,EAAJ,CAAyB,CAC5C,CADgE,EAC5D,AAD8D,CAC7D,GAAG,AAAmB,AAwE5B,QAxEoC,EAAvB,OAAO,GAAG,AAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAK,AAAF,CAAC,KAAO,CAC7D,CAD+D,CAAC,KACzD,EAAA,SAAS,CAAA,AAGlB,IAAM,EAAO,EAAH,AAAG,SAAS,CAAA,AAKtB,OAAO,MAAM,CAAC,MAAM,CAAC,AAHX,CAGY,AAHX,CAAS,CAAE,EAAiB,EAA4B,CAAA,CAAE,CAAhC,CAAkC,CACrE,CADuE,CAClE,CAAC,CAAE,AAAJ,EAAa,EAAI,CAAD,CAAM,CAAX,AAAS,GAEF,CACtB,EAHiC,CAAC,CAAC,CAAA,IAG1B,CAAE,MAAM,QAAkB,CAAR,CAAa,EAAD,OAAU,CAC/C,YAAY,CAAe,CAAE,EAA4B,CAAA,CAAE,CAAA,CACzD,KAAK,CAAC,EAAS,EAAI,CAAD,CAAM,CAAF,AAAT,EACf,CAAC,AACD,GAFiC,CAAC,CAAC,CAAA,AAE7B,CAAC,QAAQ,CAAC,CAAyB,CAAA,CACvC,OAAO,EAAK,EAAD,MAAS,CAAC,EAAI,CAAD,CAAM,CAAF,GAAY,GAAH,CAAC,CAAC,IAAU,AACnD,CADmD,AAClD,CACF,CAED,GAAG,CAAE,MAAM,GAAI,KAAQ,EAAK,EAAD,CAAI,CAE7B,YACE,CAAwB,CACxB,CAAY,CACZ,EAA4B,CAAA,CAAE,CAAA,CAE9B,KAAK,CAAC,EAAM,EAAF,AAAU,EAAI,CAAD,CAAM,AAAX,CAAS,EAC7B,CAAC,AAGD,GAJsC,CAAC,CAAC,CAAA,AAIlC,CAAC,QAAQ,CAAC,CAAe,CAAE,EAA4B,CAAA,CAAE,CAAA,CAC7D,OAAO,EAAK,EAAD,CAAI,CAAC,QAAQ,CAAC,EAAS,EAAI,CAAD,CAAM,CAAX,AAAS,EAC3C,CAAC,CACF,CAED,CAJsD,CAAC,CAAC,CAAA,IAIhD,CAAE,CACR,CAAS,CACT,EAGI,CAAA,CAAE,EACN,CAAG,CAAD,CAAM,EAAD,MAAS,CAAC,CAAC,CAAE,EAAI,CAAD,CAAM,CAAF,GAE7B,GAFsC,CAAC,CAAC,CAElC,CAAE,CACN,CAAS,CACT,EAGI,CAAA,CAAE,EACN,CAAG,CAAD,CAAM,EAAD,IAAO,CAAC,CAAC,CAAE,EAAI,CAAD,CAAM,CAAF,GAE3B,GAFoC,CAAC,CAAC,CAEhC,CAAE,CAAC,EAAiB,EAA4B,CAAA,CAAE,CAAhC,CAAkC,CACxD,CAD0D,CACrD,EAAD,IAAO,CAAC,EAAS,EAAI,CAAD,CAAM,CAAX,AAAS,GAE9B,GAFuC,CAAC,CAAC,GAEjC,CAAE,AAAC,GACT,CADsC,CACjC,EAD6B,AAC9B,EADgC,IACvB,CAAC,EAAI,CAAD,CAAM,CAAF,GAEvB,GAFgC,CAAC,CAAC,CAE5B,CAAE,CAAC,EAAiB,EAA4B,CAAA,CAAE,CAAhC,CAAkC,CACxD,CAD0D,CACrD,EAAD,IAAO,CAAC,EAAS,EAAI,CAAD,CAAM,CAAX,AAAS,GAE9B,GAFuC,CAAC,CAAC,MAE9B,CAAE,CAAC,EAAiB,EAA4B,CAAA,CAAE,CAAhC,CAAkC,CAC7D,CAD+D,CAC1D,EAAD,SAAY,CAAC,EAAS,EAAI,CAAD,CAAM,CAAX,AAAS,GAEnC,GAF4C,CAAC,CAAC,AAEzC,CAAE,CACL,EACA,EADc,AAEd,EAA4B,CAAA,CAAE,CADf,CAEf,CAAG,CAAD,CAAM,EAAD,GAAM,CAAC,EAAM,EAAF,AAAW,EAAI,CAAD,CAAM,CAAF,AAAT,GAE7B,GAF+C,AAE5C,CAF6C,AAE3C,CAF4C,CAEvC,EAAD,CAAI,CACb,QAAQ,CAAE,EAAA,QAA2B,CACtC,CAAC,AACJ,CADI,AACH,CACD,AADC,EACD,SAAS,CAAC,QAAQ,CAAG,EAAA,QAAQ,CAYhB,AAZgB,EAYhB,WAAW,CAAG,CACzB,CADsB,CAEtB,EAA4B,CAAA,CAAE,CADf,CAEf,CAKA,CALE,AACF,CAAA,EAAA,AAUD,EAVC,kBAAA,AAAkB,EAAC,GAIf,EAAQ,EAJc,CAAC,CAAA,CAIhB,EAAQ,EAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAEvC,CAAC,EAF6C,AAErC,CAFsC,AAEtC,AAGX,EALmD,CAAC,AAKpD,CAHU,CAGV,MAAA,AAAM,EAAC,EAAS,CAAE,GAAG,CAAP,AAAS,EAAQ,KAAD,SAAe,CAAE,CAAC,CAAA,AAEzD,EAAA,SAAS,CAAC,WAAW,CAAG,EAAA,WAAW,CActB,AAdsB,EActB,MAAM,CAAG,CAAC,CAAJ,CAAqB,EAA4B,CAAA,CAAE,CAAhC,CACI,AAD8B,CACtE,CADwE,GACpE,EAAU,EAAS,GAAS,EAAnB,AAAQ,EAAS,CAAC,CAAO,EAAE,CAAA,AAC1C,EAAA,SAAS,CAAC,MAAM,CAAG,EAAA,MAAM,CAAA,AAEZ,EAAA,KAAK,CAAG,CACnB,CADgB,CAEhB,EADc,AAEd,EAA4B,CAAA,AAQ7B,CAR+B,CADf,CAEf,EAAE,AACF,IAAM,EAAE,AAAG,IAAI,EAAU,EAAS,GAKlC,EALwB,AAAQ,EAAS,CAAC,CAAA,CAC1C,EAAO,EAAH,AAAQ,EAAD,IAAO,CAAA,AAAC,CAAC,CAAC,CAAG,EAAE,AAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA,AAChC,EAAE,AAAC,OAAO,CAAC,MAAM,EAAI,CAAC,EAAK,EAAD,IAAO,EAAE,AACrC,CADsC,CACjC,EAAD,EAAK,CAAC,GAEL,CACT,CAAC,CAAA,AACD,CAJqB,AAER,CAAA,AAFS,AAItB,CAJsB,QAIb,CAAC,KAAK,CAAG,EAAA,KAAK,CAAA,AAGvB,IAAM,EAAY,OAAH,kBAA4B,AAY3C,CAZ2C,MAY9B,EACX,OADoB,AACb,AAAkB,CACzB,GAAG,AAAyB,CAC5B,OAAO,AAAQ,CAEf,oBAAoB,AAAS,CAC7B,QAAiB,AAAT,CACR,MAAM,AAAS,CACf,OAAO,AAAS,CAChB,KAAK,AAAS,CACd,uBAAuB,AAAS,CAChC,OAAgB,AAAT,CACP,OAAO,AAAU,CACjB,SAAS,AAAY,AACrB,MAAM,CAAS,CAEf,SAAS,AAAS,CAClB,QAAQ,AAAU,CAClB,kBAAkB,AAAS,CAC3B,oBAAoB,AAAQ,CAE5B,MAAM,AAAyB,AAC/B,aAAY,CAAe,CAAE,EAA4B,CAAA,CAAE,CAAA,CACzD,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,GAEnB,EAAU,EAFgB,CAAC,AAEN,CAFM,AAEN,CAAE,AAAhB,CAAgB,AACvB,CADiB,GACb,CAAC,OAAO,CAAG,EACf,IAAI,CADkB,AACjB,CADiB,mBACG,CAAG,EAAQ,KAAD,eAAqB,EAAI,GAAG,CAAA,AAC/D,IAAI,CAAC,OAAO,CAAG,EACf,IAAI,CADkB,AACjB,CADiB,OACT,CAAG,EAAQ,KAAD,GAAS,EAAI,EACpC,IAAI,CAAC,QAD8C,CAAA,AACrC,CAAqB,OAAO,CAAA,EAAzB,IAAI,CAAC,QAAQ,CAG9B,IAAI,CAAC,oBAAoB,CACvB,CAAC,CAAC,EAAQ,KAAD,eAAqB,GAAqB,IAAjB,CAAsB,CAAA,AAF7C,KAE8B,CAAC,GAAG,IAFrB,GAAG,EAEmB,CAC5C,IAAI,CAAC,CAH6B,CAA2B,CAAA,iBAGpC,EAAE,CAAC,AAC9B,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAE,IAAG,CAAC,CAAA,AAEjD,IAAI,CAAC,uBAAuB,CAAG,CAAC,CAAC,EAAQ,KAAD,kBAAwB,CAAA,AAChE,IAAI,CAAC,MAAM,CAAG,IAAI,CAAA,AAClB,IAAI,CAAC,MAAM,EAAG,EACd,GADmB,CAAA,AACf,CAAC,QAAQ,CAAG,CAAC,CAAC,EAAQ,KAAD,GAAS,CAAA,AAClC,IAAI,CAAC,OAAO,EAAG,EACf,GADoB,CAAA,AAChB,CAAC,KAAK,EAAG,EACb,GADkB,CAAA,AACd,CAAC,OAAO,CAAG,CAAC,CAAC,EAAQ,KAAD,EAAQ,CAAA,AAChC,IAAI,CAAC,MAAM,CAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,AACnC,IAAI,CAAC,kBAAkB,MACU,IAA/B,EAAQ,GAAgC,CAAC,CAAlC,AAAmC,aAAhB,CACxB,EAAQ,KAAD,aAAmB,CAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAI,IAAI,CAAC,MAAA,AAAM,CAAC,CAAA,AAErC,IAAI,CAAC,OAAO,CAAG,EAAE,CAAA,AACjB,IAAI,CAAC,SAAS,CAAG,EAAE,CAAA,AACnB,IAAI,CAAC,GAAG,CAAG,EAAE,CAAA,AAGb,IAAI,CAAC,IAAI,EAAE,AACb,CADa,AACZ,AAED,QAAQ,EAAA,CACN,GAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAG,CAAC,CACnD,CADqD,CAAC,KAC/C,EAET,EAFa,CAAA,CAER,IAAM,KAAW,EAAJ,EAAQ,CAAC,GAAG,CAAE,AAC9B,CAD+B,GAC1B,IAAM,IAAI,CAAI,EACjB,GAAoB,EADI,CAAE,CAAC,IACC,EAAxB,OAAO,EAAmB,EAAf,KAAsB,EAGzC,EAH6C,CAAA,IAGtC,CACT,CAAC,AAED,GAHc,CAAA,CAGT,CAAC,CAAe,CAAG,CAAC,AAAhB,AAET,CAFqB,GAEjB,EAAA,CACF,IAAM,EAAU,IAAI,CAAC,AAAR,OAAe,CAAA,AACtB,EAAU,IAAI,CAAP,AAAQ,OAAO,CAG5B,AAH4B,GAGxB,CAAC,EAAQ,KAAD,IAAU,EAA0B,GAAG,GAAzB,EAAQ,KAAD,CAAO,CAAC,CAAC,CAAC,CAAU,CAAC,AACpD,IAAI,CAAC,OAAO,EAAG,EACf,EADmB,CAAA,GAErB,CADQ,AACP,AAED,GAAI,CAAC,EAAS,CAAC,AACb,IAAI,AADM,CACL,KAAK,EAAG,EACb,EADiB,CAAA,GAEnB,CADQ,AACP,AAGD,IAAI,CAAC,WAAW,EAAE,CAAA,AAGlB,IAAI,CAAC,OAAO,CAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA,AAE3C,EAAQ,KAAD,AAAM,EAAE,CAAC,AAElB,IAAI,CAAC,KAAK,CAAG,CAAC,GAAG,IAAe,AAAK,CAAD,CAAF,KAAU,CAAC,KAAK,CAAC,GAAG,EAAI,CAAC,CAAA,AAG7D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,OAAO,CAAC,CAWtC,AAXsC,IAWhC,EAAe,IAAI,CAAC,KAAR,EAAe,CAAC,GAAG,CAAA,AAAC,CAAC,CAAC,CAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,AAC9D,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,UAAU,CAAC,GACjC,IAAI,CAAC,IADwC,CACnC,AADoC,CAAA,AACnC,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,SAAS,CAAC,CAAA,AAGxC,IAAI,EAAM,CAAH,GAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAE,EAAE,EAAE,CACtC,CADwC,EACpC,IAAI,CAAC,SAAS,EAAI,IAAI,CAAC,kBAAkB,CAAE,CAAC,AAE9C,IAAM,EACK,EAAE,CADF,EACT,CAAC,CAAC,CAAC,CAAC,EACK,EAAE,GAAX,CAAC,AACD,CADE,CAAC,CAAC,GACH,AAAS,GAAG,IAAX,CAAC,CAAC,CAAC,EAAY,CAAC,EAAU,IAAI,CAAC,CAAC,CAAP,AAAQ,CAAC,EAAC,CAAC,CAAC,CACvC,CAAC,EAAU,IAAI,CAAC,CAAC,CAAP,AAAQ,CAAC,CAAC,CAAC,CAAA,AACjB,EAAU,KAAH,KAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,AACrC,GAAI,EACF,GADO,EAAE,CAAC,AACH,IACF,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,IACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,AAAC,EAAE,CAAC,AAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,AACxC,CACI,AADJ,GACQ,EACT,KADgB,CACT,CADW,AACV,CAAC,AADU,CACT,CAAC,CAAC,EAAE,EAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,AAAC,EAAE,CAAC,AAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAExD,AAF0D,AAAD,CAAC,AAEzD,AACD,OAAO,CAAC,CAAC,GAAG,CAAA,AAAC,EAAE,CAAI,AAAH,IAAO,CAAC,KAAK,CAAC,EAAE,CAAC,AACnC,CADoC,AACnC,CADmC,AAClC,CAAA,AAUF,GARA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAE,GAAG,AAG5B,CAH6B,CAAA,EAGzB,CAAC,GAAG,CAAG,EAAI,CAAD,KAAO,CAAA,AACnB,CAAC,CAAC,CAAwB,CAAC,CAAC,CACF,CAAA,CADrB,CAAC,CAAC,OAAO,EAAC,IAIb,CAJkB,CAAC,EAIf,CAAC,SAAS,CAChB,CADkB,CAAC,EACd,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,EAAE,CAAE,CAAC,AACzC,IAAM,CAAC,CAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,AAEV,EAAE,GAAX,CAAC,CAAC,CAAC,CAAC,EACK,EAAE,GAAX,CAAC,CAAC,CAAC,CAAC,EACqB,GAAG,GAA5B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACJ,QAAQ,EAAxB,OAAO,CAAC,CAAC,CAAC,CAAC,EACX,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,CAAC,AACD,CAAC,CAAC,CAAC,CAAC,CAAG,GAAA,CAEX,AAFc,CAAA,AAEb,AAGH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,GAAG,CAAC,AACpC,CADoC,AACnC,AAOD,UAAU,CAAC,CAAqB,CAAA,CAE9B,GAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CACzB,CAD2B,CAAC,EACvB,IAAM,KAAW,EAAJ,AAChB,IAAK,GADwB,CAAE,AACtB,CADuB,AACtB,CAAG,CAAC,CAAE,CAAC,CAAG,EAAQ,KAAD,CAAO,CAAE,CAAC,EAAE,CAAE,AACpB,CADqB,GACjB,EAAE,CAAC,AAAtB,CAAO,CAAC,CAAC,CAAC,GACZ,CAAO,CAAC,CAAC,CAAC,CAAG,GAAA,CAAG,CAAA,AAMxB,GAAM,mBAAE,EAAoB,CAAC,CAAE,CAAG,IAAI,CAAC,OAAd,AAAqB,CAAA,AAc9C,OAZI,GAAqB,CAAC,EAAE,AAE1B,CAF2B,CAEf,IAAI,CAAC,EAAR,EAFU,gBAEkB,CAAC,GACtC,EAAY,IADmC,AAC/B,CADgC,AAC/B,CAD+B,CACvC,mBAA6B,CAAC,IAGvC,EAFS,GADuC,AAClB,CADmB,AAClB,CADkB,AAGrC,CAFqB,CAAC,AAEzB,EAAO,CAAC,OAFS,SAEO,CAAC,GAGtB,IAAI,CAAC,CAH0B,CAAC,CAAA,sBAGF,CAAC,GAGtC,CACT,CAAC,AAGD,IAPwD,CAAC,CAAA,CAGvC,CAAA,iBAIO,CAAC,CAAqB,CAAA,CAC7C,OAAO,EAAU,GAAG,CAAA,AAAC,GAAL,CACd,CADwB,CAAC,EAAE,AACvB,EAAE,AAAW,CAAC,CAAC,CACnB,AADmB,KACZ,CAAC,CAAC,IAAM,CAAD,CAAG,AAAG,EAAM,GAAD,IAAQ,CAAC,IAAI,CAAE,EAAE,AAAG,EAAC,CAAC,CAAC,CAAE,CAAC,AACjD,IAAI,CAAC,CAAG,EAAE,AACV,CADU,IACc,IAAI,CAAE,CAAC,CAAxB,CAAK,CAAC,CAAC,CAAG,CAAC,CAAC,EACjB,CAAC,EAAE,CAAA,AAED,CAAC,GAAK,EAAE,CACV,CADY,CAAC,AACP,GAAD,GAAO,CAAC,EAAE,AAAE,CAAC,CAAG,EAAE,AAE3B,CACA,AAH4B,AAE3B,CAF2B,MAGrB,CACT,CAAC,CAAC,AACJ,CADI,AACH,AAGD,CALgB,CAAA,cAKA,CAAC,CAAqB,CAAA,CACpC,OAAO,EAAU,GAAG,CAAA,AAAC,GAAL,AAeU,CAAC,CAfD,AAeE,CAfD,AAeE,CAApB,CAfoB,AAC3B,EAAQ,EAcI,AAdE,CAAT,EAAQ,GAAO,CAAC,CAAC,EAAe,CAAF,GAAM,CACvC,CADyC,EAAE,CACrC,EAAO,CAAG,CAAC,AAAP,EAAW,CAAD,KAAO,CAAG,CAAC,CAAC,CAAA,MACnB,IAAI,GAAb,GAA0B,CAAtB,GAA0B,EAAE,CAAC,AAAhB,IAGR,AAHY,IAGR,EAAE,CAAC,AAAhB,GACE,CADE,EACe,CAAb,GAAiB,GAAb,GAA0B,CAAtB,EAAyB,GAAZ,GAAyB,CAArB,GAAyB,EAAE,CAAC,AAAhB,EAC3C,EAD+C,AAC3C,CAAD,EAAI,EAAE,CAAA,AAIb,EAAI,CAAD,GAAK,CAAC,IAAI,AARJ,CAQK,AAEhB,CAAC,AAFe,CARF,AAUX,CAVW,EAUT,CAAC,CAAA,AACO,MAAM,CAAS,CAAC,EAAE,CAAC,CAAC,AAAE,CAAD,CAEtC,CAAC,AAED,EAJ4C,CAAA,iBAIxB,CAAC,CAAwB,CAAA,CACvC,AAAC,KAAK,CAAC,OAAO,CAAC,KACjB,AADsB,CAAC,CACf,CADiB,CAAC,CACrB,CAAO,CAAC,UAAU,CAAC,EAAK,CAAC,CAAA,AAEhC,IAAI,GAAwB,EAE5B,EAAG,CAGD,AAHE,AAF6B,CAAA,EAG/B,CAHc,EAGC,EAEX,CAAC,EAFe,CAAA,CAEX,CAAC,CAFE,sBAEqB,CAAE,CAAC,AAClC,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAM,GAAD,GAAO,CAAG,CAAC,CAAE,CAAC,EAAE,CAAE,CAAC,AAC1C,IAAM,CAAC,CAAG,CAAK,CAAC,CAAC,CAAC,CAAA,CAER,CAAC,GAAP,CAAC,EAAgB,EAAE,GAAR,CAAC,EAAwB,KAAb,CAAK,CAAC,CAAC,CAAM,AAAL,CAAO,EAAE,CAClC,GAAG,GAAT,CAAC,CAD+C,CAC7B,KAAN,CAAC,AAAK,CAAE,EAAE,CAAC,AAC1B,GAAe,EACf,EAAM,AADa,CAAA,EACd,EADO,CACA,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA,AAClB,CAAC,EAAE,CAAA,AAEP,CAAC,AAEc,GAAG,GAAhB,CAAK,CAAC,CAAC,CAAC,EACS,CAAC,GAAlB,CACA,CADM,GAAD,GAAO,GACE,GAAG,GAAhB,CAAK,CAAC,CAAC,CAAC,EAAyB,KAAb,CAAK,CAAC,CAAC,CAAC,AAAK,CAAE,CAAC,EAErC,AADA,CAAC,EACc,EACf,EADmB,AACb,CADa,EACd,AAAI,EADG,AACD,CAAA,AAEf,CAAC,AAGD,IAAI,EAAE,AAAW,CAAC,CAAA,AAClB,KAAO,CAAC,CAAC,IAAM,CAAD,CAAG,AAAG,EAAM,GAAD,IAAQ,CAAC,IAAI,CAAE,EAAE,AAAG,EAAC,CAAC,CAAC,CAAE,CAChD,AADiD,IAC3C,CAAC,CAAG,CAAK,CAAC,EAAK,AAAH,CAAI,CAAC,CAAA,AAErB,CAAC,EACK,GAAG,GAAT,CAAC,EACK,IAAI,GAAV,CAAC,EACK,IAAI,GAAV,CAAC,EACD,CAAC,CAAC,IAAI,CAAC,SAAS,EAAI,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,EACxC,AACA,CADC,EACc,EACf,EADmB,AACb,CADa,EACd,EADO,CACA,CAAC,EAAE,AAAG,CAAC,CAAE,CAAC,CAAC,CAAA,AACvB,EAAE,CAAI,CAAC,CAAA,AAEX,CAAC,AACH,CAAC,MAAQ,EACT,AADsB,OACE,CAAC,CAAC,CAAC,AADN,CACd,EAAM,GAAD,GAAO,CAAS,CAAC,EAAE,CAAC,CAAC,AAAE,CAAD,AACpC,CAAC,AAoBD,GArB0C,CAAA,gBAqBtB,CAAC,CAAqB,CAAA,CACxC,IAAI,GAAe,EACnB,GADwB,AAItB,AAHC,CADqB,AACpB,GAGG,AAJS,IAIL,KAAK,AAFd,GAAe,EAEG,GAFE,AAES,CAFT,AAEU,AAC5B,GAHU,CAGN,CADqB,CACnB,AAAW,CAAC,CAAC,CAAA,AACnB,KAAO,CAAC,CAAC,GAAM,EAAE,AAAH,CAAM,EAAM,GAAD,IAAQ,CAAC,IAAI,CAAE,EAAE,AAAG,EAAC,CAAC,CAAC,CAAE,CAAC,AACjD,IAAI,EAAc,CAAX,CAAa,AACpB,CADoB,IACM,IAAI,CAAE,CAAC,CAA1B,CAAK,CAAC,EAAM,CAAC,AAAJ,CAAK,EAEnB,GAAG,CAID,CAJG,CAAA,AAIG,CAAH,CAAK,CACV,CADY,CAAC,AACP,GAAD,GAAO,CAAC,EAAK,AAAH,CAAI,CAAE,EAAM,CAAH,CAAK,CAAC,AAGhC,CAHgC,GAG5B,EAAO,CAAK,CAAR,AAAS,EAAK,AAAH,CAAI,CAAC,CAAA,AAClB,CAAC,CAAG,CAAK,CAAC,EAAE,AAAG,CAAC,CAAC,CAAA,AACjB,EAAK,AAAH,CAAQ,CAAC,EAAK,AAAH,CAAI,CAAC,CACxB,AADwB,GACX,IAAI,GAAb,GAEF,CAAC,AAFK,CAEJ,EACI,GAAG,GAAT,CAAC,EACD,AAAM,CAAL,GAAS,MACV,CAAC,EAAE,CACI,GAAG,GAAV,EAAE,CACK,IAAI,EACX,CAAC,AADD,EAPiB,AAOf,SAIJ,AAX2B,GAWZ,EAEf,EAFmB,AAEb,CAFa,EAEd,EAFO,CAEA,CAAC,EAAE,AAAE,CAAC,CAAC,CAAA,AACnB,IAAM,EAAQ,EAAM,CAAT,EAAQ,EAAM,CAAC,CAAC,CAAC,CAAA,AAC5B,CAAK,CAAC,EAAE,AAAC,CAAG,IAAI,CAChB,AADgB,EACN,IAAI,CAAC,EAAN,CACT,EAAE,AADkB,CAEtB,AAFuB,CAAA,AACjB,AACL,AAGD,CAJM,EAIF,CAAC,IAAI,CAAC,uBAAuB,CAAE,CAAC,AAClC,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAM,GAAD,GAAO,CAAG,CAAC,CAAE,CAAC,EAAE,CAAE,CAAC,AAC1C,IAAM,CAAC,CAAG,CAAK,CAAC,CAAC,CAAC,CAAA,CAER,CAAC,GAAP,CAAC,EAAgB,EAAE,GAAR,CAAC,EAAwB,KAAb,CAAK,CAAC,CAAC,CAAM,AAAL,CAAO,EAAE,CAClC,GAAG,GAAT,CAAC,CAD+C,CACnC,AAAM,CAAL,KAAK,CAAE,EAAE,CAAC,AAC1B,GAAe,EACf,EADmB,AACb,CADa,EACd,EADO,CACA,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA,AAClB,CAAC,EAAE,CAEP,AAFO,CAEN,AAEc,GAAG,GAAhB,CAAK,CAAC,CAAC,CAAC,EACS,CAAC,GAAlB,CACA,CADM,GAAD,GAAO,GACE,GAAG,GAAhB,CAAK,CAAC,CAAC,CAAC,EAAyB,KAAb,CAAK,CAAC,CAAC,CAAC,AAAK,CAAE,CAAC,EACrC,AACA,CADC,CACc,GACf,CADmB,CAAA,AACb,GAAD,AAAI,EADG,AACD,CAAA,AAEf,CAGA,AAHC,IAGG,EAAa,AAAX,CAAY,CAAA,AAClB,KAAO,CAAC,CAAC,IAAM,CAAD,CAAG,AAAG,EAAM,GAAD,IAAQ,CAAC,IAAI,CAAE,EAAE,AAAG,EAAC,CAAC,CAAC,CAAE,CAAC,AACjD,IAAM,CAAC,CAAG,CAAK,CAAC,EAAE,AAAG,CAAC,CAAC,CAAA,AACvB,GAAI,CAAC,EAAU,GAAG,GAAT,CAAC,EAAY,AAAM,CAAL,GAAS,MAAU,IAAI,GAAV,CAAC,CAAW,CAAC,AAC/C,GAAe,EAEf,EAFmB,CAAA,CAEb,EADiB,AACT,CADU,AADZ,EAED,CADK,EAAE,CAA4B,AACzB,CAAC,CAAC,EAD2B,CAAA,EAAtB,CAAK,CAAC,EAAE,AAAG,CAAC,CAAC,CACjB,CAAC,GAAG,CAAC,CAAC,AAAE,CAAD,CAAG,CAAA,AAClC,EAAM,GAAD,GAAO,CAAC,EAAE,AAAG,CAAC,CAAE,CAAC,EAAE,EAAG,GACN,AAAjB,CAAkB,CADU,CAAC,CAAA,CACxB,CAAC,MAAM,EAAQ,EAAM,GAAD,CAAK,CAAC,EAAE,CAAC,CAAA,AACtC,EAAE,CAAI,CAAC,AACT,CADS,AACR,AACH,CAAC,AACH,CAAC,MACM,EAAa,AAEtB,OAAO,CACT,CAAC,AASD,CAZuB,MAEL,CAAA,aAUG,CAAC,CAAqB,CAAA,CACzC,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAU,MAAM,CAAP,AAAU,CAAC,CAAE,CAAC,EAAE,CAC3C,AAD6C,CAAC,GACzC,IAAI,CAAC,CAAG,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAU,MAAM,CAAP,AAAS,CAAC,EAAE,CAAE,CAAC,AAC9C,IAAM,EAAU,IAAI,CAAP,AAAQ,UAAU,CAC7B,CAAS,CAAC,CAAC,CAAC,CACZ,CAAS,CAAC,CAAC,CAAC,CACZ,CAAC,IAAI,CAAC,uBAAuB,CAC9B,CAAA,AACD,GAAI,EAAS,CAAC,AACZ,CAAS,CAAC,CAAC,CADF,AACG,CAAG,EAAE,CAAA,AACjB,CAAS,CAAC,CAAC,CAAC,CAAG,EACf,KACF,AAFwB,CACjB,AACN,AACH,AAH0B,CAGzB,AAEH,OAAO,EAAU,MAAM,CAAP,AAAO,AAAC,EAAE,CAAC,AAAG,EAAG,AAAD,MAAO,CAAC,AAC1C,CAD0C,AACzC,AAED,UAAU,CACR,CAAW,CACX,CAAW,CACX,GAAwB,CAAK,CAAA,CAE7B,IAAI,EAAK,AAAH,CAAI,CAAA,AACN,EAAE,AAAG,CAAC,CAAA,AACN,EAAmB,EAAE,CAAA,AACrB,CADM,CACU,EAAE,CAAb,AAAa,AACtB,KAAO,EAAE,AAAG,CAAC,CAAC,MAAM,EAAI,EAAE,AAAG,CAAC,CAAC,MAAM,CAAE,CAAC,AACtC,GAAI,CAAC,CAAC,EAAE,AAAC,GAAK,CAAC,CAAC,EAAE,AAAC,CACjB,CADmB,CACZ,AADa,IACd,AAAK,CAAW,GAAG,CAAC,CAAC,CAAf,EAAgB,CAAC,CAAC,CAAb,CAAe,AAAC,CAAC,AAAE,CAAD,AAAE,CAAC,EAAG,AAAD,CAAE,CAAA,AAC1C,EAAE,EAAE,AACJ,CADI,CACF,EAAE,CAAA,IACC,GAAI,GAA0B,IAAI,GAAd,CAAC,CAAL,AAAM,EAAE,AAAC,EAAa,CAAC,CAAC,EAAE,AAAC,GAAK,CAAC,CAAC,EAAE,AAAG,CAAC,CAAC,CAC9D,CADgE,CAAC,AAC1D,IAAD,AAAK,CAAC,CAAC,CAAC,EAAE,AAAC,CAAC,CAClB,AADkB,EAChB,EAAE,CAAA,IACC,GAAI,GAA0B,IAAI,GAAd,CAAC,CAAC,AAAN,EAAQ,AAAC,EAAa,CAAC,CAAC,EAAE,AAAC,GAAK,CAAC,CAAC,EAAE,AAAG,CAAC,CAAC,CAC9D,CADgE,CACzD,AAD0D,IAC3D,AAAK,CAAC,CAAC,CAAC,EAAE,AAAC,CAAC,CAAA,AAClB,EAAE,EAAE,CAAA,IACC,GACK,GAAG,GAAb,CAAC,CAAC,EAAE,AAAC,EACL,CAAC,CAAC,EAAE,AAAC,GACJ,CAAD,GAAK,CAAC,OAAO,CAAC,GAAG,EAAI,CAAC,CAAC,CAAC,EAAE,AAAC,CAAC,UAAU,CAAC,IAAG,CAAC,CAAC,CAClC,IAAI,GAAd,CAAC,CAAC,EAAE,AAAC,CACL,CAAC,AACD,GAAc,GAAG,GAAb,EAAe,GAAV,IAAiB,EAC1B,EAAQ,CADuB,CAAA,CAC1B,AAAM,CAAA,AACX,EAAO,IAAD,AAAK,CAAC,CAAC,CAAC,EAAG,AAAD,CAAE,CAAA,AAClB,EAAE,EAAE,AACJ,CADI,CACF,CACJ,CADM,AACL,CADK,GAMJ,CAAC,AALI,GACK,GAAG,GAAb,CAAC,CAAC,EAAE,AAAC,GACL,CAAC,CAAC,EAAE,AAAC,GACJ,CAAD,GAAK,CAAC,OAAO,CAAC,GAAG,EAAK,CAAC,CAAF,AAAG,EAAE,AAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAClC,IAAI,GAAd,CAAC,CAAC,EAAE,AAAC,EAES,GAAG,EAAE,CAAf,EAMJ,GANS,CAAiB,GAMnB,EANwB,AAC/B,CAD+B,CACvB,CAKI,CAAA,CALP,AAAM,CAAA,AACX,EAAO,IAAD,AAAK,CAAC,CAAC,CAAC,EAAG,AAAD,CAAE,CAAA,AAClB,EAAE,EAAE,AACJ,CADI,CACF,CACJ,CADM,AACL,AAMH,CAPQ,KACC,CAAC,AAMH,CAAC,CAAC,MAAM,GAAK,CAAC,CAAC,MAAM,EAAI,CAClC,CAAC,AAED,IAHwC,CAAA,MAG7B,EAAA,CACT,GAAI,IAAI,CAAC,QAAQ,CAAE,OAEnB,AAFyB,IAEnB,EAAU,IAAI,CAAP,AAAQ,OAAO,CAAA,AACxB,GAAS,EACT,CADM,CACS,CADD,AACE,CADF,AACE,AAEpB,IAAK,IAFW,AAEP,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAQ,KAAD,CAAO,EAA0B,GAAG,GAAzB,EAAQ,KAAD,CAAO,CAAC,CAAC,CAAC,CAAU,CAAC,EAAE,CAAE,AACpE,CADqE,CAC5D,CAAC,EACV,CADM,GAIJ,AAJc,CAAA,GAIA,IAAI,AAHR,CAGS,CAHP,CAAA,CAGA,IAAc,CAAG,EAAQ,KAAD,AAAM,CAAC,EAAY,CAAC,CAAA,AAC5D,IAAI,CAAC,MAAM,CAAG,CAChB,CAOA,AAPC,IADqB,CAAA,GAQd,CACN,CAAc,CACd,CAAsB,CACtB,GAAmB,CAAK,CAAA,CAExB,IAAI,EAAiB,CAAC,CAAA,AAClB,EAAoB,CAAC,CAAA,AAKzB,GAAI,GANc,CAMV,CAAC,KALY,IAKH,CAAE,CAClB,AADmB,IACb,EACe,OADN,CACc,EAA3B,OAAO,CAAI,CAAC,CAAC,CAAC,EAAiB,WAAW,CAAC,IAAI,CAAC,CAAI,CAAC,CAAC,CAAC,CAAC,CAAA,AACpD,EACJ,CAAC,GACW,CAFD,CAEG,GAAd,CADU,AACN,CAAC,CAAC,CAAC,EACK,EAAE,GAAd,CAAI,CAAC,CAAC,CAAC,EACK,GAAG,GAAf,CAAI,CAAC,CAAC,CAAC,EACP,WAAW,CAAC,IAAI,CAAC,CAAI,CAAC,CAAC,CAAC,CAAC,CAAA,AAErB,EACkB,QAAQ,EADd,AAChB,OAAO,CAAO,CAAC,CAAC,CAAC,EAAiB,WAAW,CAAC,IAAI,CAAC,CAAO,CAAC,CAAC,CAAC,CAAC,CAC1D,AAD0D,EAE9D,CAAC,GACc,EAAE,EAFH,CAEd,CAAO,CAAC,CAAC,CADI,AACH,EACK,EAAE,GAAjB,CAAO,CAAC,CAAC,CAAC,EACK,GAAG,GAAlB,CAAO,CAAC,CAAC,CAAC,EACY,QAAQ,EAA9B,OAAO,CAAO,CAAC,CAAC,CAAC,EACjB,WAAW,CAAC,IAAI,CAAC,CAAO,CAAC,CAAC,CAAC,CAAC,CAAA,AAExB,EACJ,CADO,CACG,CAAC,CACT,EAAY,CADP,AACQ,CADP,CAAC,IACE,AACT,CADU,CAAC,AAET,EACJ,CADO,CACM,CAAC,CACZ,CAHS,CAAA,AAGM,CAAC,GADR,CAAC,CAAC,CAEV,EACJ,CAFgB,CAAC,CAEE,AAFD,IACL,CAAA,GACc,EAAvB,OAAO,GAAmC,AAAhC,QAAwC,EAAvB,OAAO,EAAkB,CAAC,AACvD,AADuC,GACjC,CAAC,EAAE,AAAE,EAAE,AAAC,CAAqB,CACjC,CAAI,CAAC,EAAI,CAAD,AACR,CAAO,CAAC,EAAc,CACvB,AADY,CACZ,AAEG,EAAE,AAAC,WAAW,EAAE,GAAK,EAAE,AAAC,WAAW,EAAE,EAAE,CAAC,AAC1C,CAAO,CAAC,EAAI,CAAG,AAAJ,EACX,AADiB,CAAA,CACG,EACpB,CADuB,CAAA,AACN,EAErB,CAAC,AACH,AAH0B,CAGzB,AAID,AAP0B,GAOpB,IARiB,CACH,cAOZ,EAAoB,CAAC,CAAE,CAAG,IAAI,CAAC,OAAO,AAArB,CAAqB,MAK9C,CAJI,GAAqB,CAAC,EAAE,AAC1B,CAD2B,EACpB,CAAH,GAAO,CAAC,GADO,iBACa,CAAC,EAAI,CAAC,CAAA,AAGpC,EAAQ,KAAD,GAAS,CAAC,EAAA,QAAQ,CAAC,EAAE,AACvB,CADwB,GACpB,CAAA,CAAA,CAAe,AAAd,CACV,EACA,EADI,AAEJ,EACA,EACA,CAHO,EACA,AAMJ,IAAI,CAAA,CAAA,CAAC,AAAS,CACnB,CANgB,CAOhB,EACA,AAFI,EALe,AAQnB,CAPC,CAQD,AARC,CAKM,CAKX,CAAC,AAJU,EAMX,AAAc,CACZ,CAAc,CACd,CAAsB,CACtB,CAAgB,CARA,AAShB,CAAiB,CACjB,CAAoB,EAGpB,AAZmB,CAClB,CAAA,EAWK,EAAU,EAAQ,GAAX,EAAU,EAAQ,CAAC,EAAA,QAAQ,CAAE,GACpC,EAAS,EAAQ,EAAX,GAD0C,AAChC,CADiC,CAAA,IACrB,CAAC,EAAA,QAAQ,CAAC,CAAA,AAKtC,CAAC,EAAM,EAAF,AAAQ,EAAK,AAAP,CACf,CADqB,CAEnB,CACE,EAAQ,EAFL,CAAC,CAAC,CAEE,AAAM,CAAC,EAAc,GAC5B,EAAQ,EAD2B,CAAC,EAAV,AACnB,AAAM,CAAC,EAAU,CAAC,CAAC,CAC1B,EAAE,AADmB,CAEtB,CACD,CACE,EAAQ,KAAD,AAAM,CAAC,EAAc,GAC5B,EAAQ,EAD2B,CAAC,EAC7B,AAAM,AADa,CACZ,EAAU,CAAC,CAAE,GAAN,AACrB,EAAQ,CADyB,CAAC,GAC3B,AAAM,CAAC,EAAS,CAAC,CAAC,CAC1B,CAAA,AADqB,AAI1B,GAAI,EAAK,EAAD,IAAO,CAAE,CAAC,AAChB,IAAM,EAAW,EAAK,EAAD,EAAP,CAAa,CAAC,EAAW,EAAY,EAAK,EAAD,CAAlB,EAAW,CAAc,CAAC,CAAA,AAC/D,GAAI,CAAC,IAAI,CAAA,CAAA,CAAC,AAAS,CAAC,EAAU,EAAM,EAAF,AAAW,CAAC,CAAlB,AAAoB,CAAC,CAAC,CAAP,AACzC,CADkD,CAAC,KAC5C,EAET,GAFc,AAED,CAFC,CAEI,EAAD,EAAR,EAAe,CAAA,AACxB,GAAgB,EAAK,EAAD,IAAO,AAC7B,CADc,AAAe,AAC5B,AAKD,IAAI,EAAwB,CAAC,CAAA,AAC7B,GAAI,EAAK,EAAD,EADS,EACF,CAAE,CAAC,AAEhB,GAAI,EAAK,EAAD,IAAO,CAAG,EAAY,EAAK,EAAD,GAAP,CAAc,CAAE,OAAO,EAGlD,GAHuD,CAAA,AAGnD,EAAY,EAAK,EAAD,GAAP,CAAc,CAAG,EAAK,EAAD,IAAO,CAAA,AACzC,GAAI,IAAI,CAAA,CAAA,CAAC,AAAS,CAAC,EAAM,EAAF,AAAQ,EAAF,AAAW,EAAW,CAAC,CAAC,CACnD,AADoC,CAAiB,CAAC,AACtC,EAAK,AAD0B,EAC3B,IAAO,CAAA,EAAd,EACR,CAAC,AAIN,GAC4B,EAAE,GAA5B,CAAI,CAAC,EAAK,EAAD,IAAO,CAAG,CAAC,CAAC,EACrB,EAAY,EAAK,EAAD,GAAP,CAAc,GAAK,EAAK,EAAD,IAAO,EACvC,CAAC,AAGH,IACI,CAAC,IADI,AACA,CAAA,CADE,AACF,CAAC,AAAS,AADR,CACS,EAAM,EAAF,AAAQ,EAAF,AAAW,EAAW,CAAC,CAAC,CAAf,CAAiB,AAHtD,CAGuD,EAAP,IAHzC,EAMT,EAAgB,CANF,CAMO,AANP,EAMM,IAAO,CAAG,CAChC,AADiC,CAChC,AACH,AAFmC,AAAlB,CAEhB,AAUD,GAAI,CAAC,EAAK,EAAD,IAAO,CAAE,CAAC,AACjB,IAAI,EAAU,CAAC,CAAC,EAChB,CADW,GACN,IAAI,CAAC,CAAG,CADgB,CAAA,AACL,CAAC,CAAG,EAAK,EAAD,CAAV,GAAiB,CAAG,EAAe,CAAC,EAAE,CAAE,CAAC,AAC7D,IAAM,CAAC,CAD8C,AAC3C,MAAM,CAAC,CAAI,CAAC,CAAC,CAAC,CAAC,CAEzB,AAFyB,GACzB,GAAU,EAEF,EAFM,AAAP,CAAO,AAEH,GAAT,CAAC,EACK,IAAI,GAAV,CAAC,EACA,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,AAExC,CADA,CAAC,KACM,CAEX,CAEA,AAFC,GAFe,CAAA,GAIT,GAAW,CACpB,CAAC,AAQD,EATgB,EASV,CATqB,CAAA,AASqB,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,CAAA,AACrD,CADc,CACyB,CAAY,CAAC,CAAC,CAAC,CAAA,AACtD,EAAa,CAAC,CADH,AACG,AACZ,EAA2B,CAAC,CAAC,CAAC,CADtB,AACsB,AACpC,IAAK,IADe,AACT,CAAC,IAAI,EACV,CAAC,CADa,CAAE,CACV,AADW,EACX,QAAQ,EAAE,AAClB,CADmB,CACJ,IAAI,CAAC,GACpB,EAAc,CAAC,CADD,CACG,CAAE,CADW,AACV,CADW,AACV,CACrB,AAF+B,AACV,EACR,AADF,IACM,CAAC,KAAN,AAEZ,CAAW,CAAC,CAAC,CAAC,CAAC,CAFc,CAAC,CAAA,CAEX,CAAC,CAAC,CAAC,CAAA,AACtB,KAGJ,IAAI,CAHU,AAGT,CAAG,CAHQ,CAAA,AAGK,MAAM,CAAG,CAAC,CAAA,AACzB,CADc,CACD,EAAK,EAAD,IAAP,AAAc,CAAG,EACjC,IAAK,IAAM,CAAC,EADkC,CAAA,CAC9B,EACd,CAAC,CAAC,CAAC,CAAC,CAAG,GAAe,CAAc,CAAC,AADX,CACY,AADV,CAAC,CACW,CAAY,CAAnC,AAAsC,CAAC,CAAC,CAArC,AAAsC,CAAC,CAAC,MAAA,AAAM,CAAC,CAAA,AAGrE,MAAO,CAAC,CAAC,IAAI,CAAA,CAAA,CAAC,AAA0B,CACtC,EACA,EADI,AAEJ,EACA,CAAC,CACD,EACA,CAAC,CACD,CAJS,AAIR,CAAC,AALU,CAGL,CAIX,CAAC,EAID,AAA0B,CACxB,CAAc,CAEd,CADA,AACuC,CACvC,CAAiB,CACjB,CAAiB,AAXA,CAYjB,AAXC,CAAA,AAWe,CAChB,CAAqB,CACrB,CAAgB,EAWhB,IAAM,EAAE,AAAG,CAAY,CAAC,EAAU,CAAA,AAClC,GAAI,CAAC,EAAI,AAAF,AAD0B,CAG/B,AAFQ,IAEH,IAAI,CAAC,CAAG,EAAW,CAAC,CAAG,EAAK,EAAD,CAAV,AApByB,GAoBR,CAAE,CAAC,EAAE,CAAE,CAAC,AAC7C,GAAU,EACV,EADO,AAAO,CAAA,CACR,CAAC,CAAG,CAAI,CAAC,CAAC,CAAC,CAAA,AACjB,GACQ,GAAG,GAAT,CAAC,EACD,AAAM,CAAL,GAAS,MACT,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAEvC,AAFwC,CACxC,CAAC,KACM,CAEX,CAAC,AACD,GAHgB,CAAA,GAGT,CACT,CAAC,AAGD,GAAM,CAAC,CAJS,CAAA,AAIH,EAAM,AAAR,CAAW,EACtB,AADkB,AAAM,CAAA,IACjB,GAAa,GAAO,CAAC,AAU1B,CAVuB,CAAT,CACJ,AASN,CAAC,GATS,CAAA,CAAA,CAAC,AAAS,CACtB,EAAK,EAAD,GAAM,CAAC,CAAC,CAAE,EAAY,EAAK,EAAD,GAAP,CAAc,CAAC,CACtC,EACA,EACA,AAFI,EAGJ,CAAC,CACF,CAHQ,AAGR,CAGQ,EAAgB,CALd,GAKkB,CAAC,MAAR,cAA4B,CAAE,CAAC,AAEnD,IAAM,EAAM,CAAH,GAAO,CAAA,CAAA,AAAC,CAA0B,CACzC,EACA,EACA,AAFI,EAEQ,EAAK,EAAD,GAAP,CADG,AACW,CACvB,EAAY,CAAC,CACb,EACA,EAAgB,CAFP,AAEQ,CACjB,CAFO,EAIT,IAFS,AAEG,CADX,CAAA,AAFc,EAGX,CAAa,CACf,CADK,AAAY,CAAC,KACX,CAEX,CAAC,AACD,CAHc,CAAA,EAGR,CAAC,CAAG,CAAI,CAAC,EAAU,CAAA,AACzB,GACE,AAAM,CAAL,EAFqB,AAEb,MACH,IAAI,GAAV,CAAC,EACA,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,AAExC,CADA,CAAC,KACM,EAGT,GAHc,AAIhB,CAJgB,AAIf,AAED,KAHW,EAAE,AAGN,CAHM,EAGK,IACpB,AADwB,AAAR,CAAQ,AACvB,CAED,CAAS,CACP,CAAc,CACd,CAAsB,CACtB,CAAgB,CAChB,CAAiB,CACjB,CAAoB,EAEpB,IAAI,EAAU,AACV,CADU,CACA,AACV,CADU,CACA,AACV,CADU,CACA,AACd,CADc,GAEZ,EAAE,AAAG,EACH,EAAE,AAAG,EACL,EAAE,AAAG,CAFO,CAEF,EAAD,IADQ,AACD,CAChB,EAAE,AAAG,EAAQ,KAAD,CAAO,CACrB,EAAE,AAAG,EAAE,CAAI,EAAE,AAAG,EAChB,AADkB,EAChB,EAAE,AAAE,EAAE,EAAE,AACV,CAAC,IAkBG,EAjBJ,CAiBgB,CAAA,EAjBZ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA,AAC3B,IAAI,CAAC,CAAG,CAAO,CAAC,EAAE,AAAC,CACf,AADe,CACd,CAAG,CAAI,CAAC,EAAE,AAAC,CAAA,AAOhB,GALA,IAAI,CAAC,KAAK,CAAC,EAAS,CAAC,CAAE,CAAC,CAAC,CAAP,AAAO,CAKf,IAAN,CAAC,AAAU,EAAI,CAAC,GAAK,EAAA,QAAQ,EAAE,CASlB,AATmB,QASX,EAArB,AAAuB,CAAC,MAAjB,CAAC,EACV,EAAM,CAAH,AAAI,GAAK,CAAC,CAAA,AACb,IAAI,CAAC,KAAK,CAAC,cAAc,CAAE,CAAC,CAAE,CAAC,CAAE,GAAG,CAAC,CAAA,AAErC,EAAM,CAAH,AAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,AACf,IAAI,CAAC,KAAK,CAAC,eAAe,CAAE,CAAC,CAAE,CAAC,CAAE,GAAG,CAAC,AAGpC,CAHoC,AAGnC,GAAG,AAhBN,EAgBQ,KAhBD,CAiBX,CADmB,AAClB,AAcD,GAAI,AA/BY,CAAA,CAgBQ,AAelB,CAfkB,CAeb,EAAE,CAAI,EAAE,EAAK,EAAE,AAGxB,EAH0B,CAAC,IAGpB,EACF,EADM,CAAA,AACF,EAAE,EAAK,EAAE,AAIlB,EAJoB,CAAC,IAId,EACF,GAAI,EAAE,AADG,CAAA,CACE,EAAE,AAKlB,EALoB,CAAC,IAKd,EAAE,EAAK,EAAE,AAAG,CAAC,EAAiB,EAAE,CAAA,EAAf,CAAI,CAAC,EAAG,AAKhC,AAL+B,OAKzB,AAAI,KAAK,CAAC,MAAM,CAAC,AAG3B,CAH2B,AAG1B,AAED,WAAW,EAAA,CACT,MAAO,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,OAAO,CAAC,AAChD,CADgD,AAC/C,AAED,KAAK,CAAC,CAAe,CAAA,KAWf,CAA0B,CAV9B,AAU8B,CAV9B,EAAA,EAAA,kBAAA,AAAkB,EAAC,GAEnB,IAAM,AAFoB,CAAC,CAEX,AAFW,IAEP,CAAP,AAAQ,OAAO,CAAA,AAG5B,GAAgB,IAAI,GAAhB,EAAkB,KAAX,EAAkB,EAAA,QAAQ,CAAA,AACrC,GAAgB,EAAE,GAAd,EAAgB,KAAT,CAAgB,EAAE,CAAA,AAK7B,IAAI,EAA4C,IAAI,CAAA,CAAxC,AACP,CAAC,CAAG,EAAQ,KAAD,AAAM,CAAC,EAAM,CAAC,CAAC,AAC7B,CAD+B,CAAC,AACrB,EAAQ,GAAG,CAAd,AAAe,AAAE,CAAP,AAAM,CAAe,EAC9B,CAAE,EAAG,EAAQ,CADyB,CAAX,AAAW,CAAV,CAAC,CACjB,AAAM,CAAC,EAAY,CAAC,CAAC,AAC1C,CAD4C,CAAC,AAClC,AACT,GAAQ,GADF,CACC,EAAO,CAAC,AACb,CADc,CACN,GAAG,CA7lCW,AAAC,AA6lCX,CAAL,AAAM,CACX,CA9lCgC,CAC1C,CAD4C,CACtC,CADwC,AAC3C,CAAO,CAAD,UAAY,EAAE,CAAA,AAChB,AAAC,CAAS,EAAE,AAAG,AA4lCW,CA5lCZ,AAAE,CAAC,CA6lCd,UA7lCyB,EAAE,CAAC,OA6lCR,CA7lCgB,CAAC,GAAG,CAAC,AANxB,AAAC,CAMuB,EANZ,CACvC,CADyC,CACnC,CADqC,AACxC,CAAO,CAAD,UAAY,EAAE,CAAA,AAChB,AAAC,CAAS,EAAE,AAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAkmChE,AAlmCiE,CAAA,CAkmCzD,GAAG,CArmCK,AAAC,AAqmCL,CAAL,AAAM,CAAC,CArmCmB,AAAD,AAAJ,CAAe,CAAb,CAAe,AAAG,CAAC,AAAF,CAAG,QAAQ,CAAC,EAqmC5B,CArmC+B,AAFjD,AAAC,CAEiD,CAAA,AAsmC/D,CAxmC+B,AAAN,AAAK,CAAU,CAAb,CAAe,AAClD,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAI,CAAC,CAAC,QAAQ,CAAC,EAumCzB,CAvmC4B,AAumCd,CAAC,AAAC,AAvmCa,CAAA,AAumCZ,CAAC,CAAC,CAAC,CAAC,CAAA,CACf,CAAC,CAAG,EAAQ,KAAD,AAAM,CAAC,EAAQ,CAAC,CAAC,AACtC,CADwC,CAAC,AAC9B,CACT,EAAQ,GADF,EACC,CAAO,CAAC,AACb,CADc,CACN,GAAG,CA9kCO,AA8kCN,CAAL,AA9kCY,AA8kCN,CA9kCO,AA+kClB,EA/kCoB,AAAE,EAAM,CAAH,CAAK,CAAmB,EAAE,EAAE,AAC/D,IAAM,EAAQ,EAAmB,AA8kCJ,CA9kClB,AAAuB,EAAE,AAAC,AA+kC3B,CA/kC4B,CAAA,OACtC,AAAK,GAAG,AACR,CAFgC,AAC5B,CAAM,AACJ,CAAH,CAAO,AA6kCgB,CA7kCjB,UAAY,EAAE,CAAA,AAChB,AAAC,CAAS,EAAE,AAAG,CAAD,CAAO,CAAC,CAAC,CAAH,CAAO,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,AAF9C,CAE8C,AACjE,CAAC,CAAA,AAXwB,CAAC,CAQF,AARG,CAQH,CARK,AAAE,EAAM,CAAH,CAAK,CAAmB,EAAE,EAAE,AAC5D,IAAM,EAAQ,EAAgB,CAAnB,AAAoB,EAAE,AAAC,CAAC,CAAA,OACnC,AAAK,CADwB,EACrB,AACR,CADI,CACE,AADI,CACP,CAAO,CAAD,UAAY,EAAE,CAAA,AAChB,AAAC,CAAS,EAAE,AAAG,CAAD,CAAO,CAAC,CAAC,CAAH,CAAO,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,AAF9C,CAE8C,AACjE,CAAC,CAAA,AAklCS,EArlCc,AAqlCN,CArlCM,EAqlCH,CA3kCC,AA2kCA,CAAL,AA3kCM,AA2kCA,CA3kCC,AA2kCA,EA3kCE,AAAE,EAAM,CAAH,CAAK,CAAmB,EAAE,EAAE,AACzD,EA0kCmC,EA1kC7B,CA2kCE,CA3kCM,EAAmB,CAAtB,AAAuB,EAAE,AAAC,CAAC,CAAA,AACtC,OAAO,AAAC,EAAc,AAAC,CAAZ,AAAqB,CAApB,AADoB,CACnB,AAAqB,AAAG,CAAD,CAAO,CAAC,CAAC,CAAH,CAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,AAAjD,CAAkD,AAClE,CADkE,AACjE,CAAA,AACkB,CAAC,CAFC,AAEA,CAFC,CAAC,AAEA,AAAE,EAAM,CAAH,CAAK,CAAmB,EAAE,EACpD,AADsD,IAChD,EAAQ,EAAgB,CAAnB,AAAoB,EAAE,AAAC,CAAC,CAAA,AACnC,OAAO,AAAC,CADqB,CACP,AAAC,CAAZ,AAAqB,CAApB,CAAC,AAAqB,AAAG,CAAD,CAAO,CAAC,CAAC,CAAH,CAAO,CAAC,CAAC,QAAQ,CAAC,GAA9C,AAAiD,CAAC,AAClE,CADkE,AACjE,AAqkCS,CArkCT,AAqkCmB,CAAC,AAAC,CAAC,AAtkCF,CAAC,AAskCE,CAtkCD,AAskCC,CACR,CAAC,CAAG,EAAQ,KAAK,AAAN,CAAO,EAAa,CAAC,CAAC,AAC3C,CAD6C,CAAC,AACnC,EAAQ,GAAG,CAAd,AAAe,AAAE,CAAP,AAAM,CAAsB,GACrC,CAAE,CAAG,EAAQ,KAAD,AAAM,CAAC,EADiC,AACxB,CADwB,AACvB,AADK,CAAC,AACL,CAAE,AADI,CACH,AAC1C,EAAW,CAAA,CAAW,CAAA,AAGxB,GAHU,CAGJ,EAAE,AAAG,EAAA,GAAG,CAAC,QAAQ,CAAC,EAAS,IAAI,CAAN,AAAO,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA,AAK5D,OAJI,GAA0B,KAAlB,GAA0B,EAAtB,AAAwB,CAAC,MAAlB,EAAE,CAEvB,OAAO,CAAC,cAAc,CAAC,EAAE,AAAE,MAAM,CAAE,CAAE,KAAK,CAAE,CAAQ,CAAE,CAAC,CAAA,AAElD,CACT,CADW,AACV,AAED,CAHW,CAF6C,IAKlD,EAAA,CACJ,GAAI,IAAI,CAAC,MAAM,EAAoB,KAAhB,AAAqB,IAAjB,CAAC,MAAM,CAAY,OAAO,IAAI,CAAC,MAAM,CAAA,AAQ5D,IAAM,EAAM,CAAH,GAAO,CAAC,GAAG,CAAA,AAEpB,GAAI,CAAC,EAAI,CAAD,KAAO,CAEb,CAFe,CAAC,KAChB,IAAI,CAAC,MAAM,EAAG,EACP,GADY,CAAA,AACR,CAAC,MAAM,CAAA,AAEpB,IAAM,EAAU,IAAI,CAAP,AAAQ,OAAO,CAAA,AAEtB,EACJ,EAAQ,GADG,EACJ,KAAW,CA/jCX,AA+jCY,CAAC,CAAC,GA/jCT,CA+jCa,EA/jCV,CAgkCb,EAAQ,CAhkCS,CAAA,CAgkCN,CAAC,AA3jCD,CA2jCE,AAAN,CAAO,UAAU,GACxB,YAAY,CAAA,aA5jCwC,CAAA,AAIvC,yBAAyB,CAAA,AAyjCpC,EAAQ,GAAH,CAAO,GAAG,CAAC,EAAQ,KAAD,CAAO,CAAC,AAAE,CAAD,AAAE,GAAG,CAAC,CAAC,AAAE,CAAD,CAAG,CAAC,CAAA,AAQ9C,EAAE,AAAG,EACN,CADS,EACN,CAAA,AAAC,IACH,GADU,CACJ,AADK,EACH,AAAiC,AAD5B,EACoC,GAAG,CAAA,AAAC,CAAL,AAAM,CAAC,EAAE,AACvD,GAAI,CAAC,YAAY,MAAM,CACrB,CADuB,CAAC,EACnB,IAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAE,EAAM,GAAD,AAAI,CAAC,CAAC,CAAC,CAAA,AAEjD,MACE,AAAa,QAAQ,CAAC,CAAC,CAAC,MAAjB,CAAC,CAr7BlB,AAq7B+C,CAAC,AAr7B/C,AADgC,CAs7BgB,AAr7B/C,EAq7B4C,KAr7BrC,CAAC,0BAA0B,CAAE,MAAM,CAAC,CAs7BjC,AAt7BiC,CAs7BhC,GAAK,EAAA,QAAQ,CAAC,AAAE,CAAD,CAAC,QAAQ,CACzB,CAAC,CAAC,IAER,AAFY,CAEX,AADE,CAAA,AAC+B,CAAA,AAClC,EAAE,AAAC,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,AAClB,IAAM,EAAO,CAAE,CAAL,AAAM,CAAC,CAAG,CAAC,CAAC,CAAA,AAChB,EAAO,CAAE,CAAL,AAAM,CAAC,CAAG,CAAC,CAAC,CAAA,AAClB,CAAC,GAAK,EAAA,QAAQ,EAAI,IAAI,AAAK,EAAA,QAAQ,EAAE,CAAC,KAG7B,IAAT,EACE,EADE,CAAc,CACZ,CADc,AACT,CADU,MACG,EAAJ,EAAa,AAAL,EAAK,QAAQ,CACzC,CAAE,AADyC,CACxC,AADyC,CACxC,CAAG,CAAC,CAAC,CAAG,SAAS,CAAG,EAAU,KAAH,EAAU,CAAG,EAE5C,CAAE,CAF8C,AAE7C,CAF6C,AAE5C,CAAC,CAAG,OAEQ,AAFD,CAAA,GAER,EACT,CAAE,CAAC,AADU,CAAc,AACvB,CAAG,CAAC,AADqB,CACpB,AADqB,CAClB,EAAO,EAAH,UAAe,CAAG,EAAU,IAAI,CAAP,AAAO,AACvC,IAAI,AAAK,EAAA,QAAQ,EAAE,CAC5B,AAD6B,CAC3B,CAAC,CAAC,CAAG,CAAC,CAAC,CAAG,EAAO,EAAH,UAAe,CAAG,EAAU,KAAH,CAAS,CAAG,EACrD,CAAE,CADuD,AACtD,CADsD,AACrD,CAAG,CAAC,CAAC,CAAG,EAAA,QAAQ,CAAA,CAExB,CAAC,CAAC,CACF,AADE,IACI,EAAW,EAAE,AAAC,IAAN,EAAY,CAAA,AAAC,CAAC,CAAC,CAAG,CAAC,GAAK,EAAA,QAAQ,CAAC,CAAA,AAK/C,GAAI,IAAI,CAAC,OAAO,EAAI,EAAS,MAAM,AAAP,EAAW,CAAC,CAAE,CAAC,AACzC,IAAM,EAAqB,EAAE,CAAA,AAC7B,GADc,CACT,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,EAAI,EAAS,MAAM,AAAP,CAAS,CAAC,EAAE,CACvC,AADyC,CAAC,CACjC,IAAI,CAAC,CAAN,CAAe,KAAK,CAAC,AAAP,CAAQ,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,AAE/C,MAAO,KAAK,CAAG,EAAS,IAAI,CAAC,CAAN,EAAS,CAAC,CAAG,GAAG,AACzC,CADyC,AACxC,AAED,OAAO,EAAS,IAAI,CAAC,CAAN,EAAS,CAC1B,AAD2B,CAAA,AAC1B,CAAC,CACD,IAAI,CAAC,GAAG,CAAC,CAAA,AAIN,CAAC,EAAM,EAAF,AAAQ,CAAG,EAAI,AAAR,CAAO,KAAO,CAAG,CAAC,CAAC,AAAE,CAAD,AAAE,KAAK,CAAE,GAAG,CAAC,CAAC,AAAE,CAAD,AAAE,EAAE,CAAE,EAAE,CAAC,CAAA,AAG9D,EAAE,AAAG,GAAG,CAAG,EAAO,EAAH,AAAK,AAAG,EAAQ,GAAH,AAAM,CAAA,AAG9B,IAAI,CAAC,OAAO,EAAE,CAAC,AACjB,EAAK,AAAH,UAAa,CAAG,EAAO,EAAH,AAAK,AAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAG,EAAQ,GAAH,CAAG,CAAI,CAIrD,AAJqD,IAIjD,CAAC,MAAM,GAAE,EAAE,AAAG,MAAM,CAAG,EAAE,AAAG,MAAA,CAAM,CAAA,AAE1C,GAAI,CAAC,AACH,IAAI,CAAC,MAAM,CAAG,IAAI,MAAM,CAAC,EAAE,AAAE,CAAC,GAAG,EAAM,CAAC,EAAF,EAAM,CAAC,EAAE,CAAC,CAAC,AAEnD,CAFmD,AAElD,AAAC,KAAM,CAAC,AAEP,IAAI,CAAC,MAAM,EAAG,CAChB,CAAC,AAED,GAHqB,CAAA,GAGd,IAAI,CAAC,MACd,AADoB,CACnB,AAED,AAHoB,UAGV,CAAC,CAAS,CAAA,QAKlB,AAAI,IAAI,CAAC,uBAAuB,CACvB,CADyB,AACxB,CADyB,AACxB,KAAK,CAAC,GAAG,CAAC,CAAA,AACV,IAAI,CAAC,SAAS,EAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAExC,CAF0C,AAEzC,CAF0C,CAExC,EAAE,EAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA,AAEvB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,AAEzB,CAFyB,AAExB,AAED,KAAK,CAAC,CAAS,CAAE,EAAU,IAAI,CAAP,AAAQ,OAAO,CAAA,CAIrC,GAHA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,CAAE,IAAI,CAAC,OAAO,CAAC,CAAA,AAGhC,IAAI,CAAC,OAAO,CACd,CADgB,CAAC,KACV,EAET,GAFc,AAEV,CAFU,GAEN,CAAC,KAAK,CACZ,CADc,CAAC,IACF,EAAE,CAAA,EAAR,CAAC,CAGV,GAAU,GAAG,GAAT,CAAC,EAAY,EACf,KADsB,EAAE,AACjB,CADkB,CAI3B,EAHa,CAAA,CAGP,EAAU,IAAI,CAAP,AAAQ,OAAO,CAAA,AAGxB,IAAI,CAAC,SAAS,EAAE,CAClB,AADmB,CAClB,CAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAG,CAAC,CAAA,AAI7B,IAAM,EAAE,AAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAC7B,AAD6B,IACzB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAE,OAAO,CAAE,EAAE,CAAC,AAOrC,CAPqC,GAO/B,EAAM,CAAH,GAAO,CAAC,GAAG,CAAA,AACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAE,KAAK,CAAE,GAAG,AAGnC,CAHoC,CAAA,EAGhC,EAAmB,CAAE,CAAC,EAAE,AAAC,EAAjB,IAAuB,CAAG,CAAC,CAAC,CAAA,AACxC,GAAI,CAAC,EACH,IAAK,EADM,EACF,AADI,CACH,AADI,CACD,EAAE,AAAC,MAAM,CAAG,CAAC,CAAE,CAAC,GAAY,CAAC,EAAI,CAAC,CAAV,AAAY,CAAC,EAAE,CAAE,AACpD,CADqD,CAC1C,CAAE,CAAC,CAAC,CAAC,CAIpB,AAJoB,CAAR,GAIP,IAAM,KAAW,EAAK,AAAT,CAAO,AAAG,AAC1B,IAAI,EAAO,EAAH,AAAK,AAKb,CALa,EACT,CAIA,CAJQ,EAIL,GAJI,IAAU,EAAuB,CAAC,EAAE,CAAtB,AAAuB,EAAf,KAAD,CAAO,GACrC,EAAO,CAAC,CAAJ,CAAa,CAAA,CAEP,IAAI,AAFE,CAED,QAAQ,CAAC,EAAM,EAAF,AAAW,GAChC,CAAC,AACR,CAFqC,EAAS,AAE1C,CAF2C,CAAA,AAEnC,KAAD,KAAW,CACpB,CADsB,CAAC,KAChB,EAET,EAFa,CAAA,GAEN,CAAC,IAAI,CAAC,MAAM,AACrB,CADqB,AACpB,AACH,CAAC,MAID,CAAI,EAAQ,KAAD,KAAW,EAAE,AAGjB,CAHkB,GAGd,CAAC,MACd,AADoB,CAAA,AACnB,AAED,MAAM,CAAC,QAAQ,CAAC,CAAqB,CAAA,CACnC,OAAO,EAAA,SAAS,CAAC,QAAQ,CAAC,GAAG,AAAE,CAAD,QAAU,AAC1C,CAD0C,AACzC,CA/jCH,AAgkCC,EAhkCD,SAAA,CAAA,EAkkCA,IAAA,EAAA,EAA8B,AAF7B,CAE6B,CAAA,QAArB,OAAA,CAAqB,aAArB,CAAA,EAAA,MAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,GAAG,CAAA,GAAA,AACZ,IAAA,EAAA,EAAA,CAAoC,CAAA,QAA3B,OAAA,cAAA,CAAA,EAAA,SAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,MAAM,CAAA,GAAA,AACf,IAAA,EAAA,EAAA,CAAA,CAAA,CAAwC,OAA/B,OAAA,cAAA,CAAA,EAAA,WAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,QAAQ,CAAA,GAAA,AAEjB,EAAA,SAAS,CAAC,GAAG,CAAG,EAAA,GAAG,CAAA,AACnB,EAAA,SAAS,CAAC,SAAS,CAAG,EACtB,EAAA,KAD+B,CAAA,GACtB,CAAC,MAAM,CAAG,EAAA,MAAM,CAAA,AACzB,EAAA,SAAS,CAAC,QAAQ,CAAG,EAAA,QAAQ,CAAA,+BC38C7B,IAAM,EAAA,EAAA,CAAA,CAAA,QACA,SAAE,CAAO,OAAE,CAAK,CAAE,gBAAc,aAAE,CAAW,MAAE,CAAI,CAAE,CAAA,EAAA,CAAA,CAAA,QACrD,CAAE,gBAAc,SAAE,CAAO,CAAE,CAAA,EAAA,CAAA,CAAA,QAC3B,iBACJ,CAAe,gCACf,CAA8B,0BAC9B,CAAwB,CACxB,eAAa,CACd,CAAA,EAAA,CAAA,CAAA,QACK,qBAAE,CAAmB,CAAE,CAAA,EAAA,CAAA,CAAA,QAEvB,CACJ,QAAS,CAAe,CACxB,KAAM,CAAY,CACnB,CAAA,EAAA,CAAA,CAAA,QAIK,EAAgB,CACpB,YACA,aACA,gBACA,aACA,mBACA,SACA,aACA,UACD,GAEY,cACG,iBACM,uBAIb,eACG,OAGN,EAA0B,YAG1B,EAAmB,OAAO,yBAC1B,EAAe,OAAO,8BACtB,EAAkB,OAAO,gCACzB,EAAmB,OAAO,iCAC1B,EAAuB,OAAO,qCAC9B,EAAe,OAAO,4BACtB,EAAoB,OAAO,iCAEjC,OAAM,UAAmC,EACvC,OAAS,IAAI,CACb,aAAe,IAAI,CACnB,eAAiB,IAAI,AAErB,aAAa,CAAM,CAAE,CAMnB,GALA,KAAK,CAAC,EAAc,EAAiB,GACrC,IAAI,CAAC,MAAM,CAAG,EAAK,qBAAqB,CAAC,CAAE,UAAW,CAAa,GACnE,IAAI,CAAC,EAAa,CAAG,KACrB,IAAI,CAAC,EAAkB,EAAG,EAEtB,GAAQ,kBAAoB,KAAM,CACpC,GAAuC,WAAnC,AAA8C,OAAvC,EAAO,gBAAgB,CAChC,MAAM,AAAI,UAAU,sCAGtB,IAAI,CAAC,EAAkB,CAAG,EAAO,gBAAgB,AACnD,CAQA,GAPmC,YAAY,AAA3C,OAAO,GAAQ,aACjB,KAAI,CAAC,YAAY,CAAG,EAAO,WAAA,AAAW,EAEH,YAAjC,AAA6C,OAAtC,GAAQ,gBACjB,IAAI,CAAC,cAAc,CAAG,EAAO,aAAA,AAAa,EAGxC,GAAQ,aAAe,MAAiD,MAAzC,QAAQ,GAAG,CAAC,yBAAyB,CAAU,CAChF,MAAM,EAAc,GAAQ,aAAe,QAAQ,GAAG,CAAC,yBAAyB,CAEhF,GAAI,CAAwB,UAAvB,OAAO,GAA4B,MAAY,MAAW,AAAL,CAAM,EAA4B,YAAvB,AAAmC,OAA5B,EAC1E,MAAM,AAAI,UACR,8CAIJ,IAAI,EAAc,KAElB,IAAI,CAAC,EAAa,CAAG,AAAC,GACpB,AAA2B,YAAvB,AAAmC,OAA5B,EACF,EAAY,IAIA,MAAM,AAArB,IACF,EAAc,EAAA,CAAA,CAAA,QAAqB,SAAA,AAAS,EAGvC,EAAY,EAAa,GAAG,CAAE,GAG3C,CACF,CAEA,QAAU,CAiBR,YAhBmC,IAA/B,IAAI,CAAC,qBAAqB,EAAkB,IAAI,CAAC,SAAS,GAAG,wBAAwB,EAAE,CACzF,IAAI,CAAC,qBAAqB,CAAG,AAAC,IAG5B,IAAI,CAAC,MAAM,GAAG,EAAQ,OAAO,CAAE,OAAW,KAAO,GAGjD,IAAM,EAAc,CAAC,EAAG,EAAI,KAC1B,GACF,EACA,CAAW,CAAC,OAAO,GAAG,CAAC,iBAAiB,EAAG,EAC3C,CAAW,CAAC,OAAO,GAAG,CAAC,wBAAwB,CAAG,gBAClD,EAAQ,OAAO,CAAC,QAAQ,CAAC,EAC3B,EACA,EAAG,SAAS,CAAC,yBAA0B,IAAI,CAAC,qBAAqB,GAE5D,KAAK,CAAC,QACf,CAEA,SAAW,CAKT,OAJI,IAAI,CAAC,qBAAqB,EAAE,CAC9B,EAAG,WAAW,CAAC,yBAA0B,IAAI,CAAC,qBAAqB,EACnE,IAAI,CAAC,qBAAqB,CAAG,QAExB,KAAK,CAAC,SACf,CAGA,MAAQ,CACN,MAAO,EAAE,AACX,CAEA,QAAU,CACR,IAAM,EAAkB,IAAI,CAS5B,OAPA,CAA4B,CAAC,OAAO,GAAG,CAAC,iBAAiB,EAAG,EAC5D,CAA4B,CAAC,OAAO,GAAG,CAAC,wBAAwB,CAAG,gBACnE,CAA4B,CAAC,OAAO,GAAG,CAAC,eAAe,CAAG,CACxD,QA5HqB,CA4HZ,YACT,KAAM,eACR,EAEO,EAEP,SAAS,EAA8B,CAAQ,CAAE,CAAI,CAAE,CAAI,EA8LzD,SAAS,EAA0B,CAAO,CAAE,CAAK,CAAE,CAAO,CAAE,CAAQ,EAElE,IAAM,EAAO,CAAO,CAAC,EAAa,AAEtB,MAAM,CAAd,IACE,EAAM,UAAU,EAAI,KAAK,AAC3B,EAAK,SAAS,CAAC,CAAE,KAAM,EAAe,KAAK,AAAC,GAG9C,EAAK,aAAa,CAAC,CACjB,CAAC,EAA+B,CAAE,EAAM,UAAU,AACpD,GACA,EAAK,GAAG,IAGV,CAAO,CAAC,EAAa,CAAG,KAExB,EAAS,KAAM,EACjB,CAEA,SAAS,EAAuB,CAAO,CAAE,CAAK,CAAE,CAAK,CAAE,CAAQ,EAE7D,IAAM,EAAO,CAAO,CAAC,EAET,AAFsB,MAEhB,CAAd,IACF,EAAK,SAAS,CAAC,CACb,KAAM,EAAe,KAAK,CAC1B,QAAS,EAAM,OAAO,AACxB,IAC2C,IAAvC,CAAe,CAAC,CAA8B,CAAZ,EACpC,EAAK,eAAe,CAAC,IAIzB,GACF,CAgFA,SAAS,EAAgB,CAAO,CAAE,CAAQ,CAAE,EAAiB,CAAC,CAAC,EAC7D,OAAO,SAAS,AAAgB,GAAG,CAAI,EAErC,IAAM,EAAkB,IAAI,CAAC,EAAiB,CAExC,EAdV,AAcoB,SAdX,AAAoB,CAAI,EAC/B,IAAK,IAAM,KAAO,EAChB,GAAI,AADkB,GACb,cAAgB,EAAI,GAAG,EAAI,EAAI,MAAM,CAC5C,CAD8C,MACvC,EAGX,OAAO,IACT,EAOuC,GACnC,GAAgB,MAAM,CAAlB,EAIF,OAHA,EAAgB,MAAM,CAAC,KAAK,CAC1B,CAAC,uCAAuC,EAAE,EAAS,8CAA8C,CAAC,EAE7F,EAAQ,IAAI,CAAC,IAAI,IAAK,GAG/B,IAAoC,IAAhC,EAAgB,SAAS,IAAgB,EAAQ,YAAY,CAAC,MAAM,EAAE,QAAS,EAIjF,KAJwF,EACxF,EAAgB,MAAM,CAAC,KAAK,CAC1B,CAAC,+BAA+B,EAAE,EAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAQ,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAE7G,EAAQ,IAAI,CAAC,IAAI,IAAK,GAG/B,GAAI,CAAe,CAAC,EAAa,GAAG,CAClC,IAAK,EAAQ,GAAG,CAChB,OAAQ,EAAQ,MAAM,AACxB,MAAO,EAIL,IAJW,GACX,EAAgB,MAAM,CAAC,KAAK,CAC1B,CAAC,+BAA+B,EAAE,EAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAQ,YAAY,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAEzH,EAAQ,IAAI,CAAC,IAAI,IAAK,GAI/B,IAAM,EAAM,CAAO,CAAC,EAAgB,EAAI,EAAQ,MAAM,GAChD,EAAc,EAAQ,IAAI,EAAE,OAAS,EACvC,EAAQ,IAAI,CACZ,IAAI,CAAC,UAAU,CAAC,CAAwB,EAEtC,EAAO,EAAgB,MAAM,CAAC,IAFE,KAEO,CAC3C,CAHkE,AAGlE,EAAG,EAAS,GAAG,EAAE,EAAA,CAAa,CAC9B,CACE,IALkF,OAKtE,CACd,EACA,GAGF,GAAsC,MAAlC,AAAwC,EAAxB,cAAc,CAChC,GAAI,CACF,EAAgB,cAAc,CAAC,EAAM,UACnC,UACA,EACA,QAAS,CACX,EACF,CAAE,MAAO,EAAK,CACZ,EAAgB,MAAM,CAAC,KAAK,CAAC,KAAE,CAAI,EAAG,oCACxC,CAGF,OAAO,EAAQ,IAAI,CACjB,EAAM,OAAO,CAAC,EAAK,GACnB,WACE,GAAI,CACF,IAAM,EAAM,EAAQ,IAAI,CAAC,IAAI,IAAK,GAElC,GAAyB,YAArB,AAAiC,OAA1B,GAAK,KACd,OAAO,EAAI,IAAI,CACb,IACE,EAAK,GAAG,GACD,GAET,IACE,EAAK,SAAS,CAAC,CACb,KAAM,EAAe,KAAK,CAC1B,QAAS,EAAM,OAAO,AACxB,GACI,CAAuC,KAAxB,CAAC,CAA8B,CAAZ,EACpC,EAAK,eAAe,CAAC,GAEvB,EAAK,GAAG,GACD,QAAQ,MAAM,CAAC,KAM5B,OADA,EAAK,GAAG,GACD,CACT,CAAE,MAAO,EAAO,CASd,MARA,EAAK,SAAS,CAAC,CACb,KAAM,EAAe,KAAK,CAC1B,QAAS,EAAM,OAAO,AACxB,IAC2C,IAAvC,CAAe,CAAC,CAA8B,CAAZ,EACpC,EAAK,eAAe,CAAC,GAEvB,EAAK,GAAG,GACF,CACR,CACF,EACA,IAAI,CAER,CACF,CAnZA,EAAS,QAAQ,CAAC,EAAkB,GAGpC,EAAS,QAAQ,CAAC,EAAkB,EAAS,OAAO,EACpD,EAAS,QAAQ,CAAC,EAAsB,EAAS,kBAAkB,EACnE,EAAS,eAAe,CAAC,gBAAiB,SAAS,EACjD,IAAM,EAAM,IAAI,CAAC,EAAgB,CAC3B,EAAO,IAAI,CAAC,EAAa,CAE/B,MAAO,CACL,QAAS,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAS,OAC5C,EACA,OAAQ,EAAgB,MAAM,CAC9B,QAAS,EACT,OAAQ,CAAC,EAAS,IACT,EAAY,MAAM,CAAC,EAAK,EAAS,GAE1C,QAAS,CAAC,EAAS,IACV,EAAY,OAAO,CAAC,EAAK,EAAS,EAE7C,CACF,GACA,EAAS,eAAe,CAAC,EAAc,MACvC,EAAS,eAAe,CAAC,EAAiB,MAE1C,EAAS,OAAO,CAAC,UAAW,SAAwB,AAAf,CAA2B,EAC9D,GAAI,CAAe,CAAC,EAAa,GAAG,MAAkB,EAAM,YAC1D,EAAgB,MAAM,CAAC,KAAK,CAC1B,CAAC,+BAA+B,EAAE,EAAa,MAAM,CAAC,CAAC,EAAE,EAAa,GAAG,CAAC,mCAAmC,CAAC,EAKlH,GAAI,EAAa,MAAM,EAAE,QAAS,EAAO,YACvC,EAAgB,MAAM,CAAC,KAAK,CAC1B,CAAC,+BAA+B,EAAE,EAAa,MAAM,CAAC,CAAC,EAAE,EAAa,GAAG,CAAC,uBAAuB,CAAC,EAMtG,IAAK,IAAM,KAAQ,EACjB,GAA0B,MAAtB,CAAY,CAAC,CADe,CACV,CAAU,CAC9B,IAAM,EAAc,CAAY,CAAC,EAAK,CAEtC,GAA2B,AAAvB,YAAmC,OAA5B,EACT,CAAY,CAAC,EAAK,CAAG,EAAe,EAAa,EAAM,CACrD,CAAC,EAA0B,CAAE,CAAA,EAAG,IAAI,CAAC,KAApB,KAA8B,CAAC,GAAtB,SAAkC,EAAE,EAAA,CAAM,CACpE,CAAC,EAA6B,EAAE,CAChC,CAAC,EAAgB,CAAE,EAAa,GAAG,CADQ,AAE3C,CAFiB,AAEhB,EAAmC,CAClC,CAH8C,CAGlC,IAAI,EAAE,CAHS,IAEZ,EACY,EACvB,EAAY,IAAI,CAChB,CACR,MAJqC,EAKhC,GAAI,MAAM,MAFiB,CAEV,CAAC,GAAc,CACrC,IAAM,EAAkB,EAAE,CAE1B,GALkD,CAK7C,IAAM,KAAW,EACpB,EAAgB,IAAI,CAClB,EAAe,CAFgB,CAEP,EAAM,CAC5B,CAAC,EAA0B,CAAE,CAAA,EAAG,IAAI,CAAC,KAApB,KAA8B,CAAC,GAAtB,SAAkC,EAAE,EAAA,CAAM,CACpE,CAAC,EAA6B,EAAE,CAChC,CAAC,EAAgB,CAAE,EAAa,GAAG,CACnC,AAF2C,CAA1B,AAEhB,EAAmC,CAClC,CAH8C,CAGtC,IAAI,EAAE,CAHa,IAEZ,EACQ,EACnB,EAAQ,IAAI,CACZ,CACR,IAIJ,CAAY,CAAC,AAR4B,EAQvB,CAAG,CACvB,CACF,CAIE,AAAuB,MAAM,EAAhB,MAAM,CACrB,EAAa,MAAM,CAAG,MAAM,OAAO,CAAC,EAAa,MAAM,EACnD,IAAI,EAAa,MAAM,CAAE,EAAyB,CAClD,CAAC,EAAa,MAAM,CAAE,EAAyB,CAEnD,EAAa,MAAM,CAAG,EAII,MAAxB,AAA8B,EAAjB,OAAO,CACtB,EAAa,OAAO,CAAG,MAAM,OAAO,CAAC,EAAa,OAAO,EACrD,IAAI,EAAa,OAAO,CAAE,EAAsB,CAChD,CAAC,EAAa,OAAO,CAAE,EAAsB,CAEjD,EAAa,OAAO,CAAG,EAGzB,EAAa,OAAO,CAAG,EAAe,EAAa,OAAO,CAAE,UAAW,CACrE,CAAC,EAA0B,CAAE,CAAA,EAAG,IAAI,CAAC,KAApB,KAA8B,CAAC,GAAtB,aAAsC,CAAC,CACjE,CAAC,EAA6B,CAhN7B,CAgN+B,WAAW,CAA1B,KACjB,CADkD,AACjD,EAAgB,CAAE,EAAa,CADH,EACM,CACnC,CAAC,EAAmC,CAClC,EAAa,OAAO,CAAC,GADN,CACU,CAAC,MAAM,CAAG,EAC/B,EAAa,KAFgB,EAET,CAAC,IAAI,CACzB,CACR,EACF,GAEA,EAAS,OAAO,CAAC,YAAa,SAAS,AAAsB,CAAO,CAAE,CAAM,CAAE,CAAQ,EACpF,GACE,CAAuC,QAAnC,CAAC,EAAiB,CAAC,SAAS,IAChC,EAAQ,YAAY,CAAC,MAAM,EAAE,QAAS,EAEtC,KADA,EACO,IAGT,GAAI,IAAI,CAAC,EAAiB,CAAC,EAAa,GAAG,CACzC,IAAK,EAAQ,GAAG,CAChB,OAAQ,EAAQ,MAClB,AADwB,MACjB,EAIL,IAJW,GACX,IAAI,CAAC,EAAiB,CAAC,MAAM,CAAC,KAAK,CACjC,CAAC,iBAAiB,EAAE,EAAQ,MAAM,CAAC,CAAC,EAAE,EAAQ,GAAG,CAAC,mCAAmC,CAAC,EAEjF,IAGT,IAAI,EAAM,EAAQ,MAAM,EAEE,MAAM,CAA5B,EAAM,OAAO,CAAC,KAChB,EAAM,EAAY,OAAO,CAAC,EAAK,EAAQ,QAAO,EAGhD,IAAM,EAAc,EAAe,EAGL,OAA5B,EAAQ,YAAY,CAAC,GAAG,EACxB,GAAa,OAAS,EAAQ,IAAI,EAClC,CACA,EAAY,KAAK,CAAG,EAAQ,YAAY,CAAC,GAAA,AAAG,EAG9C,IAAM,EAAa,CA/PnB,eAgQ0B,gBACxB,CAAC,EAAyB,CAAE,EAAQ,MAAM,CAC1C,CAAC,EAAc,CAAE,EAAQ,GAAG,AAC9B,CAEgC,MAAM,CAAlC,EAAQ,YAAY,CAAC,GAAG,GAC1B,CAAU,CAAC,EAAgB,CAAG,EAAQ,YAAY,CAAC,GAAA,AAAG,EAIxD,IAAM,EAAO,IAAI,CAAC,EAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAW,YAC9D,CACF,EAAG,GAEH,GAAI,CACF,IAAI,CAAC,EAAiB,CAAC,YAAY,GAAG,EAAM,EAC9C,CAAE,MAAO,EAAK,CACZ,IAAI,CAAC,EAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAE,CAAI,EAAG,oBAC/C,CAEA,CAAO,CAAC,EAAgB,CAAG,EAAM,OAAO,CAAC,EAAK,GAC9C,CAAO,CAAC,EAAa,CAAG,EAExB,EAAQ,IAAI,CAAC,CAAO,CAAC,EAAgB,CAAE,KACrC,GACF,EACF,GAGA,EAAS,OAAO,CAAC,aAAc,SAAmC,AAA1B,CAAiC,CAAE,CAAK,CAAE,CAAQ,EACxF,IAAM,EAAO,CAAO,CAAC,EAAa,AAEtB,MAAM,CAAd,IACF,EAAK,aAAa,CAAC,CACjB,CAAC,EAA+B,CAAE,EAAM,UAAU,AACpD,GACA,EAAK,GAAG,IAGV,CAAO,CAAC,EAAa,CAAG,KAExB,GACF,GAEA,EAAS,OAAO,CA0ChB,EA1CmB,OA0CV,AAAgB,CAAI,CAAE,CAAI,EACjC,IAAM,EAAkB,IAAI,CAAC,EAAiB,QAE9C,AAAI,EAAc,QAAQ,CAAC,GAClB,EAAgB,EADS,EACL,CACzB,IAAI,CACJ,EACA,EAAe,EAAM,EAAM,CACzB,CAAC,EAA0B,CAAE,CAAA,EAAG,IAAI,CAAC,KAApB,KAA8B,CAAC,GAAtB,AAAyB,EAAE,EAAA,CAAM,CAC3D,CAAC,EAA6B,EAAE,CAChC,CAAC,EAAmC,CAClC,EAAK,IAFoC,AAEhC,CAFM,CAEJ,KADI,CADkC,CAE7B,EAChB,EAHuB,AAGlB,IAAI,CACT,CACR,IAGK,EAPgC,AAOhB,IAAI,CAAC,IAAI,CAAE,EAAM,EAE5C,EA5DA,CAsDsC,CAtD7B,iBAsD+C,CAtD7B,CA8D3B,EA9D8B,OA8DrB,AAA2B,CAAK,CAAE,CAAO,EAChD,IAAM,EAA6B,IAAI,CAAC,EAAqB,AACzD,CAAiB,YAAY,OAAtB,GACT,EAAU,EAAe,EAAO,kBAAmB,CACjD,CAAC,EAA0B,CAAE,CAAA,EAAG,IAAI,CAAC,KAApB,KAA8B,CAAC,GAAtB,iBAA0C,CAAC,CACrE,CAAC,EAA6B,EAAE,CAChC,CAAC,EAAmC,CAClC,EAAM,IAFmC,AAE/B,CAFK,CAEH,KADG,CADkC,CAE5B,EACjB,EAHuB,AAGjB,IAAI,CACV,CACR,GACA,EAA2B,CALU,GAKN,CAAC,IAAI,CAAE,KAEX,GAJK,GAI5B,AAA6B,EAAvB,aAAa,AAJ2B,GAKhD,EAAM,aAAa,CAAG,EAAe,EAAM,aAAa,CAAE,kCAAmC,CAC3F,CAAC,EAA0B,CAAE,CAAA,EAAG,IAAI,CAAC,KAApB,KAA8B,CAAC,GAAtB,iCAA0D,CAAC,CACrF,CAAC,EAA6B,EAAE,CAChC,CAAC,EAAmC,CAClC,EAAM,IAFmC,CAA1B,MACA,CADkC,CAE9B,CAAC,GAFO,CAEH,EAAE,OAAS,EAC/B,AAF6B,EAEvB,aAAa,CAAC,IAAI,CACxB,CACR,EAAA,EAGsB,MAApB,AAA0B,EAApB,UAAU,CAJc,EAKhC,EAAM,UAAU,CAAG,EAAe,CALgB,CAKV,UAAU,CAAE,+BAAgC,CAClF,CAAC,EAA0B,CAAE,CAAA,EAAG,IAAI,CAAC,KAApB,KAA8B,CAAC,GAAtB,8BAAuD,CAAC,CAClF,CAAC,EAA6B,EAAE,CAChC,CAAC,EAAmC,CAClC,EAAM,IAFmC,CAA1B,KAEC,CADD,AACE,CAFgC,GAE5B,EAFM,AAEJ,OAAS,EAC5B,EAAM,CAFuB,SAEb,CAAC,IAAI,CACrB,CACR,EAAA,EAGF,EAAU,EAAe,EAAS,aAJA,KAImB,CACnD,CAAC,EAA0B,CAAE,CAAA,EAAG,IAAI,CALc,AAKb,KAApB,KAA8B,CAAC,GAAtB,iBAA0C,CAAC,CACrE,CAAC,EAA6B,EAAE,CAChC,CAAC,EAAmC,CAClC,EAAQ,IAFiC,AAE7B,CAFG,CAED,KADC,CADkC,CAE1B,EACnB,EAHuB,AAGf,IAAI,CACZ,CACR,GACA,EAA2B,CALU,GAKN,CAAC,IAAI,CAAE,EAAO,GAEjD,EAzGA,CAqGoC,EAoHtC,CACF,CACF,CAEA,EAAO,OAAO,CAAG,EACjB,CAzH4D,CAyHrD,OAAO,CAAC,0BAA0B,CAAG,wBC5hB5C,EAOA,EAKA,UALA,AAPA,EAOyB,AAKzB,AAZ2B,EAYF,iDAZzBC,EAAAA,cAAAA,CAAAA,KAAAA,EACiB,AADjB,GAKAA,EAAAA,SAJiB,KAIjB,EAAAA,EAAA,CAAAA,cAAA,CAAA,EAAA,CAAA,CAAA,CAAA,AAJiB,YAAA,CAAA,CAAA,CAAA,YAAA,CACA,AADA,EACA,YAAA,CAAA,CAAA,CAAA,YAAA,CACH,AADG,EACH,SAAA,CAAA,CAAA,CAAA,SAAA,CAAA,AACE,EAAA,WAAA,CAAA,CAAA,CAAA,WAAA,CAGhBC,AAHgB,EAGhBA,YAAAA,CAAAA,KAAAA,EACe,AADf,GAGAA,EAAAA,OAFe,KAEf,GAAAA,CAAA,CAAAA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAFe,UAAA,CAAA,CAAA,CAAA,UAAA,CAAA,AACK,EAAA,UAAA,KAAA,CAAA,CAAA,CAAA,eAAA,CAGpBC,AAHoB,EAGpBA,YAAAA,CAAAA,KAAAA,EAAA,AACe,GAEfA,EAAAA,OAFe,KAEf,GAAAA,CAAA,CAAAA,YAAA,CAAA,EAAA,CAAA,CAAA,CAFe,AAEf,UAFe,CAAA,CAAA,CAAA,UAAA,CACK,AADL,EACK,UAAA,KAAA,CAAA,CAAA,CAAA,eAAA,CAAA,mGCfa,MAAM,CAAC,2DAA2D,iHCkHnG,SAAS,EAAa,CAAG,EAAqC,AAC5D,IADgB,EAEE,UAAf,OAAO,GAAoB,AAApB,GAAoB,AAAsE,UAAU,EAAzE,OAAO,MAAM,CAAC,wBAAwB,CAAC,EAAK,CAAF,KAAQ,CAAC,EAAE,KAAA,EACxF,EAEJ,WA9EO,SAAS,AAAQ,CAAK,CAAsB,CAAG,EAAQ,AAC5D,EADqB,EACf,EAAQ,CAAK,CAACC,EAAAA,iBAAiB,CAAA,EAAK,EAAE,CAEvC,EAAM,GAAD,GAAO,EAAE,CAInB,EAAM,GAAD,IAAQ,CAAC,AAAC,IAAI,AACb,GAAG,CACL,CAF0B,AACnB,CACF,EAAD,OAAU,CAAC,CACb,IAAI,CAAEzJ,EAAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,AAC5B,CAAO,CAAC,CACF,EAAK,EAAD,aAAgB,CAAC,GAAG,CAAC,AAE3B,EAAK,EAAD,CAAI,EAAE,AACZ,CAAC,CAAC,CACF,OAAO,CAAK,CAACyJ,EAAAA,iBAAiB,CAAC,CACjC,uCAwBO,SAAS,AACd,CAAO,CACP,CAAQ,CACR,CAAoB,EAGpB,IADI,EACA,EACJ,CAFS,EAEL,CADM,AAER,EAAS,CAF8B,GAEvC,AAEI,EAAU,CAFE,EAAE,CAGhB,AAL8C,EAI5B,AACX,CADI,AAViC,AAUzB,EAAE,CACf,AAAK,CAAA,AACT,GAAO,OAAS,CAAD,CAAY,GAAG,AAAC,AAC/B,CAD+B,EAC/B,AAAO,CADkB,CACT,GAAG,AAGzB,CAAA,AAAE,AAHwB,EAAL,IAGZ,CAAC,CAAE,CACV,EAAQ,CAAC,AACX,EADE,MACQ,CACR,GAAI,CAAC,EAAU,KACb,CADmB,CAAP,AAAQ,AACX,EADa,AACN,GAAF,AACV,CADI,EAAc,AACT,CADU,CACnB,CAEF,CAFgC,EAAE,GAE5B,EAIV,GAJe,IAIR,CACT,CACF,IAFiB,UA9FV,SACL,AADc,CACT,CACL,CAAM,CACN,CAAQ,CACR,EAA6B,CAAA,AAJN,CAIQ,EAE/B,IAAM,EAAO,EAAP,AAFQ,AAEM,IAAD,KAAU,CAAC,EAAU,CAAE,KAAJ,KAAc,CAAE,CAAA,CAAgB,CAAC,CAEjE,EAAgB,CAAK,CAACA,CAAjB,CAAiBA,IAF0B,aAET,CAAA,EAAK,EAAE,CASpD,OARA,EAAM,GAAD,CAAK,CAAC,GAEX,CAFe,CAAC,IAEV,CAAC,cAAc,CAAC,EAAOA,EAAAA,CAAF,gBAAmB,CAAE,CAC9C,UAAU,EAAE,EACZ,GADiB,SACL,CAAE,GACd,CADkB,IACb,CAAE,CACX,CAAG,CAAC,CAEK,CAHO,AAIhB,GADa,mLCMP,EAAiB,WAAW,CAA5B,AAMA,EAAmB,IAAI,GAAG,CAAC,CAC/B,KADI,MACO,CACX,WAAW,CACX,YAAY,CACZ,eAAe,CACf,kBAAkB,CAClB,YAAY,CACZ,QAAQ,CACR,YAAY,CACZ,SAAS,CACV,CAAC,AAKK,OAAM,UAAiC9J,EAAAA,YAAjC,OAAoD,CAA+B,AACvF,WAAW,CAAC,EAAuC,CAAA,CAAE,CAAE,CAArC,AACvB,KAAK,CAAC,AAxBW,YAwBC,EAAE,eAAe,OAxBkB,CAFjC,OAAO,CA0BU,EACvC,CAEO,GAHsC,CAAC,AAGnC,EAA0C,CACnD,MAAO,CACL,IAAII,EAAAA,mCAAmC,CAAC,SAAS,CAAE,CAAC,YAAY,CAAC,CAAA,AAAE,GAC1D,IAAI,CAAC,KADqD,IAAiB,QACrD,CAAC,IAEjC,AACH,CAEQ,QALyC,CAAC,KAK5B,EAAG,CACvB,IAAM,EAAkB,IAAI,CAE5B,OAAO,CAFD,QAEU,AAAU,CAAO,CAAkB,CAAK,CAAgB,CAAI,EAA2B,AACrG,EADuB,CACnB,CAAC,EAAgB,SAAS,EAAE,CAC9B,CADkB,AAAc,MACzB,IAAI,AAEb,EAFe,AAEC,KAAK,CAAC,EAAO,GAAF,EAAZ,CAAoB,CAAE,EAAgB,UAAU,EAAE,CAAb,AAAc,CAIlE,IAAM,EAAchB,EAAAA,OAAd,OAA4B,CAACjB,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAC9C,EAAY,EAAW,KAAvB,GAAsB,IAAC,CACzB,AAJe,EAIJ,KAJI,GAIL,IAAa,CAAC,GAAA,CAAA,AACxB,EAAQ,KAAD,KAAW,CAClB,GAAa,GAAa,GAA1B,CAA0B,AAFF,GAEWQ,CAAX,CAAWA,OAAO,CAAC,IAAI,EAAE,CACnD,EAAY,KAAA,CAAQ,CAAA,CAAS,CAAlB,AAGb,IAAM,EAAS,EAAQ,EAAjB,GAAgB,CAAC,EAAU,KAAK,CAEtCnX,EAAAA,iBAAiB,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CACA,GACA,CAFA,AACA,AACA,AACA,CAEA,CAJA,WAIA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CACA,IAAA,EAAA,IAAA,CAGA,OAFA,CADA,GACA,CAAA,KAAA,CAAA,KAAA,CAAA,yCAAA,CAAA,CAEA,SAAA,GAAA,CAAA,EAAA,AACA,GAAA,CAAA,EAAA,SAAA,EAAA,CACA,CADA,MACA,EAAA,KAAA,CAAA,IAAA,CAAA,GAGA,CAHA,CAAA,EAGA,EAAA,EAAA,IAAA,EAAA,GAAA,EACA,EAAA,CAAA,EAAAqiB,AADA,EACAA,CAAA,IADA,OACA,CAAA,UAAA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA,AAEA,EAAA,CAAA,CAAA,CAAA,CAAA,CAEA,EAAArb,EAAA,AAAAA,SAAA,CAAA,EAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CACA,CAAAmb,EAAAA,AADA,EAAA,YACA,CAAA,YAAA,CAAA,CAAAC,EAAAA,YAAA,CAAA,UAAA,CACA,CAAAD,EAAAA,cAAA,CAAA,WAAA,CAAA,CAAA,EACA,CAAAA,EAAAA,KADA,SACA,CAAA,SAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAEA,EAAA,EAHA,CAGA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAQA,CARA,EAAA,IACA,IACA,CAAA,CAAA,EAAA,AADA,EAAA,AACA,IAAA,CAAA,CAAA,CAAA,CAAA,SAAA,GAAA,CAAA,EAAA,AACAI,EAAAA,OAAA,CAAA,GACA,EADA,AACA,CADA,IACA,CAAA,IAAA,CAAA,GACA,CAAA,CAGA5L,EAAAA,CAJA,CAAA,KAIA,CAAA,IAAA,CAAAU,EAAAA,KAAA,CAAA,OAAA,CAAAV,EAAAA,OAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,EACA6L,EADA,AACAA,kCAAA,CACA,IACA,EADA,AACA,KAAA,CAAA,IAAA,CAAA,GACA,AACA,CAFA,CAAA,CAEA,CACA,GAAA,AADA,UACA,KAAA,EAAA,CACA,EAAA,EAAA,OAAA,CAAA,CACA,IAAA,CAAA3J,EAAAA,cAAA,CAAA,KAAA,CACA,OAAA,CAAA,EAAA,CAAA,MACA,AADA,CACA,CAAA,CACA,EAAA,EAAA,aAAA,CAAA,GAAA,CAGA,AAHA,AAGA,GACA0J,EAAAA,OAAA,CAAA,EAEA,CAAA,EAFA,AAKA,CALA,AAKA,AACA,CAPA,AASA,EATA,UASA,EAAA,CACA,IAAA,EAAA,IAAA,CAIA,OAHA,CADA,GACA,CAAA,KAAA,CAAA,KAAA,CAAA,0CAAA,CAAA,CAGA,SAAA,CAAA,EAAA,AACA,OAAA,SAAA,GAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAAA,AADA,AACA,CAAA,CAAA,CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AACA,EAAA,IAAA,CAAA,GAAA,OAAA,CACA,GAAA,CAAA,EAAA,GAAA,CAAA,GACA,CADA,CAAA,EAAA,GAAA,AACA,EAAA,KAAA,CAAA,IAAA,CAAA,GAGA,CAHA,CAAA,EAGA,EACA,UAAA,EAAA,MADA,CACA,CAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CAAA,EAAA,eAAA,GAAA,EAAA,KAAA,MAAA,CAAA,IAAA,CAEA,OAAA,EAAA,KAAA,CAAA,IAAA,CAAA,CACA,EACA,EADA,AACA,YAAA,CAAA,EAAA,EAAA,EAAA,GACA,CACA,AAFA,CAAA,AACA,AACA,AACA,CAAA,AACA,CAEA,aANA,CAAA,GAMA,CAAA,CAAA,CAGA,CACA,IAAA,EAAA,IAAA,CAEA,QAFA,CAEA,EAAA,GAAA,CAAA,CAAA,CAAA,AACA,IAiGA,EAjGA,EAAA,CAAA,CAAA,AAiGA,OAjGA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,GAQA,CARA,CAAA,KACA,EAAA,CAAA,MAAA,CAAA,WAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CACA,EAAA,CAAA,MAAA,CAAA,YAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,CAgGA,GADAjlB,EAAAA,CACA,EAAA,MADA,EAAA,GAEA,EAAA,EAAA,CAAA,CAAA,UAAA,CAAA,IAAA,AACA,EAAA,EACA,CAFA,AAEA,CAAA,AADA,CA9FA,AA8FA,EA9FA,KAAA,CAAA,EAAA,CAAA,IAAA,IAAA,AA8FA,CA9FA,EAAA,YAAA,CAAA,CAAA,CAAA,CAEA,CACA,CAOA,CARA,WAGA,IAAA,EAAA,GAAA,EAAA,KAAA,CAAA,EACA,EAAA,KAAA,KAAA,CAAA,EAAA,UAAA,CAAA,CAEA,EAAA,KAAA,EAAA,CAAA,EACA,EAAA,GADA,EACA,EAAA,CAAA,EACA,CACA,CAEA,GAJA,EACA,KAGA,EAAA,CACA,IAAAgZ,EAAA,IAAA,CAGA,OAFA,GADA,CACA,CAAA,KAAA,CAAA,KAAA,CAAA,sCAAA,CAAA,CAEA,SAAA,CAAA,EAAA,AACA,MADA,CACA,SAAA,GAAA,CAAA,EAAA,AACA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,IAEA,AAAAA,EAAA,EAAA,OAAA,EAAA,CAIAmM,CAJA,CAIAA,CAJA,qBAIA,CACA,IACA,EADA,AACA,KAAA,CAAA,IAAA,CAAA,GACA,AACA,CAFA,CAAA,CAEA,CACA,CAAA,EADA,CACA,UAAA,GAAA,KAAA,EAAA,CAEA,EAAA,CAAA,CAAA,CAEAF,EAAAA,OAAA,CAAA,IAAA,CAAA,EACA,CAAA,AADA,CAAA,CAZA,EAAA,KAAA,CAAA,IAAA,CAAA,EAeA,CAAA,AACA,CAhBA,AAgBA,AACA,CAjBA,AAmBA,eAAA,EAAA,CACA,IAAAjM,EAAA,IAAA,CAGA,OAFA,GADA,CACA,CAAA,KAAA,CAAA,KAAA,CAAA,sCAAA,CAAA,CAEA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,GADA,AACA,CAAAA,EAAA,SAAA,EAAA,CACA,CADA,EAAA,IACA,IAAA,AAIA,EAJA,EAIA,EAFA,AAEA,EAAA,GAAA,EAFA,GAEA,IAAA,EAAA,OAAA,EAAA,EAAA,OAAA,CAAA,CAAA,OAAA,CACA,EAAA,GAAA,IAAA,CAAA,CAAA,SAAA,CAAA,QAAA,CAAA,CAAA,EAAA,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CACA,EAAA,CAAA,EAAA+L,EAAAA,CAAA,WAAA,CAAA,eAAA,CAAA,GAAA,EAAA,GAAA,IAAA,CAAA,GAAA,OAAA,EAAA,EAAA,CAAA,CAEA,EAAA,CACA,CAAAF,EAAAA,IAHA,IAEA,MACA,CAAA,WAAA,CAAA,CAAA,IAAA,CAAA,UAAA,CACA,CAAAA,EAAAA,cAAA,CAAA,YAAA,CAAA,CAAAC,EAAAA,YAAA,CAAA,eAAA,CAEA,CAAAM,EAAAA,mBAAA,CAAA,CAAA,EAAA,QAAA,IAAA,CACA,EAAA,QAAA,IAAA,CAAA,GAAA,CAAA,AACA,EAAA,KAAA,KAAA,AACA,CAAA,CACA,IACA,CAAA,CAAAP,EAAAA,CAJA,EAGA,EAAA,SACA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,CAEA,IAAA,EAAAnb,EAAA,AAAAA,SAAA,CAAA,EAAAsP,EAAA,CAAA,KAAA,CAAA,EAAA,GAEA,EAAA,CAFA,EAIA,CAFA,CAAA,CAEA,GAJA,CAAA,SAIA,CAAA,CAAA,CAAAA,EAFA,AAEA,SAAA,EAAA,CAaA,GAbA,IACA,GACAmM,EAAAA,MADA,EAAA,cACA,CACA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,EADA,CAEA,CADA,AACA,EAAA,AACAnM,EAAA,KAAA,CAAA,KAAA,CAAA,GAAA,kBAAA,CAAA,CAAA,CAEA,AAFA,CAEA,EACA,GAIAK,CAJA,CAIAA,OAAA,CAAA,IAAA,CAAAU,EAAAA,KAAA,CAAA,OAAA,CAAAV,EAAAA,OAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,GACA,CADA,EAEA,CADA,AACA,CAAA,AACA,CACA,AAHA,AAEA,CAEA,CAWA,SAAA,EAAA,CAAA,EAAA,AACA,IAAA,EAAAlZ,EAAAA,MAAA,IAAA,CAAA,EADA,CACA,CAAA,CAAA,EAAA,CAGA,EAAA,CAAA,CAAA,cAAA,CAAA,CAGA,GAAA,CAAA,CAAAf,EAAAA,4BAAA,CAAA,EAAA,CAAA,EACA,EADA,EAAA,GAIA,EAAA,EAAA,WAAA,CAAA,CACA,CAAAC,EAAAA,gCAAA,CAAA,CAAA,wBAAA,CACA,CAAAD,EAAAA,4BAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,AACA,CAAA,CAAA,CAGA,IAAA,EAAA,CAAA,CAAA,cAAA,CAAA,EAAA,CAAA,CAAA,aAAA,CAAA,EAAA,CAAA,CAAA,WAAA,CAAA,CACA,GAAA,QAAA,EAAA,OAAA,EAAA,CAIA,CAJA,GAIA,EAAA,EAAA,EAAA,KAAA,CAAA,cAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,CAEA,EAAA,EAAA,QAAA,CAAA,EACA,CACA,QAFA,CAAA,2LClPxC,EAAmB,SAAS,CAErB,EAAsBid,EAF7B,AAE6BA,eAAtB,OAA4C,CACvD,CAAC,EAAA,EAAA,GAAA,CAAA,CACA,IAAA,IAAAgJ,CADA,CACAA,wBAAA,EAGA,AAHA,SAGA,IACA,IAAA,EAAArlB,EAAAA,EAAA,OADA,AACA,EAAA,CADA,AAEA,GAAA,CAAA,CAGA,IAHA,EAAA,CAGA,EAAA,IAAA,gBAAA,CAAA,EAEA,CAEA,SAAA,EAIA,CAAA,CACA,AATA,CAAA,AASA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAA,CATA,IASA,UAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAMA,GAJA,aAAA,MAFA,EAEA,EAAA,KACA,IAAA,CAAA,wBAAA,EAAA,CAAA,CAAA,CAGA,IAAA,CAAA,wBAAA,EAAA,cAAA,GAAA,EAAA,CACAjE,EAAAA,QADA,GACA,EACAE,EAAAA,KAAA,CAAA,IAAA,CACA,uEAAA,CACA,+GAAA,EAIA,MACA,CAEA,EAAA,EAAA,EAAA,CAAA,GACAqN,CADA,CACAA,AADA,EAAA,GAAA,WACA,CAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,AAEA,CAEA,IAAA,EAAA+S,EAAAA,aAAA,SAAA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,KACA,CADA,GAAA,AACA,EAAA,IAAAiJ,EAAAA,0BAAA,CACA,CADA,CACA,EAAA,EAAA,IAAA,EAAA,CAgCA,OA7BA,EAAA,SAAA,CAAA,IAHA,EAGA,kBAAA,CAAA,IACA,GADA,CACA,EAAA,CADA,CACA,KAAA,EAAA,CAEA,GAAA,AAFA,QAEA,CAAA,GAAA,GAAA,CAAA,CAAA,CAAA,GAAA,CA6JA,GA7JA,GACA,EACAvpB,CADA,CACAA,CADA,UACA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,yCAAA,CAAA,GAAA,CA4JA,AA5JA,CA2JA,EAAA+D,EAAAA,CACA,CADA,CACA,MADA,EAAA,GAEA,EAAA,EAAA,CAAA,CAAA,UAAA,CAAA,IAAA,AACA,EAAA,EACA,CAFA,AAEA,CADA,AACA,CADA,AA1JA,GAgKA,AA/JA,EA+JA,KAAA,EAAA,CAAA,EAhKA,EA0JA,AA1JA,CACA,CAAA,KA+JA,CAAA,MAAA,EAAA,KACA,AADA,CAAA,EACA,EAAA,CADA,IACA,QAAA,CAAA,CACA,GAAA,MAAA,CAAA,CAAA,CAAA,EAAA,KAAA,QAAA,EAAA,CAEA,GACA,CADA,CACA,CADA,CAGA,CAEA,CAJA,CAAA,EAIA,EAAA,EAAA,KAAA,MAJA,CAIA,EAAA,GAAA,CACA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAA,KAAA,CAEA0C,EAAAA,iBAAA,EAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,CAAA,CAzKA,CAAA,CAAA,AACA,AAuKA,CAvKA,CAAA,CAIA,EAAA,SAAA,CAAA,MAAA,iCAAA,CAAA,IACA,GADA,AACA,IADA,GACA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAMA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,GAAA,OAAA,WAAA,CAAA,AACA,CAAA,CAAA,CAGA,CACA,CAAA,EA+CA,SAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,GAAA,CAjDA,EAiDA,CADA,GACA,CAEA,OAAA,GAAA,GAAA,EAAA,EAAA,CAAA,GAAA,AACA,CA2CA,GA5CA,MA4CA,EAAA,CAAA,EACA,AADA,IACA,EAAAvC,EAAAA,IAAA,MAAA,CAAA,AADA,GAEA,CADA,CACA,AADA,EACA,IAAA,EAAA,KAAA,CACA,EAAA,EAAA,IAAA,CAEA,CAFA,CAEA,CAAA,CAAA,cAAA,CAAA,CAEA,EAAA,IAAA,EAAA,GAAA,EACA,EADA,AACA,IAAA,GAAA,KAAA,KAAA,CAAA,WAAA,CAAA,CAEA,EAAA,SAAA,GAAA,EAAA,CAAA,KAAA,YAAA,GAAA,EAGA,EAHA,CAGA,CAAA,CAAAf,EAAAA,4BAAA,CAAA,EAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CACA,IADA,CAAA,CAAA,CAMA,EAAA,CANA,CAMA,WAAA,CAAA,CACA,CAAAC,EAAAA,gCAAA,CAAA,CAAA,wBAAA,CACA,CAAAD,EAAAA,4BAAA,CAAA,CAAA,CAAA,EAAA,AAJA,EAAA,IAAA,EAIA,AAJA,CAAA,EAAA,OAAA,KAAA,CAAA,EAAA,cAAA,GAAA,CAAA,WAAA,CAIA,QAAA,CAAA,AACA,CAAA,CAAA,CAEA,IAAA,EAAA,CAAA,CAAA,IAAA,UAAA,CAAA,EAAA,CAAA,CAAA,aAAA,CAAA,EAAA,CAAA,CAAA,WAAA,CAAA,CACA,GAAA,QAAA,EAAA,OAAA,EAAA,CAIA,IAAA,CAJA,CAIA,EAAA,MAAA,CAAA,CAAA,cAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,CAEA,EAAA,EAAA,QAAA,CAAA,EACA,CACA,QAFA,CAAA,aAvFAmJ,EAAAA,iBAAA,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,AACA,CArCA,CAAA,iBAqCA,EArCA,CAAA,CAAA,IACA,CADA,GACA,EAEA,MAAA,CACA,IAAA,CAAA,EACA,EAJA,OAIA,GACA,AADA,EADA,AAEA,GAAA,EAEA,IACA,GACA,CAAA,GAJA,CAAA,OAEA,EACA,AADA,CAFA,CAGA,OAEA,IACA,EAEA,cAHA,EACA,CADA,GAGA,CAAA,CAAA,EAAA,AACA,EAAA,CACA,CADA,AACA,AACA,CAAA,CACA,CAAA,CAAA,AAmBA,OAAA,CAAA,EAtBA,mEAwDA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,GAAA,IAAA,YADA,CACA,EAAA,AACA,KAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,KAAA,YAAA,CAAA,CAGA,IAAA,EAAA,IAAA,EAAA,CAAA,MAAA,CACA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,AACA,EAAA,KAAA,EAAA,CAAA,SAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,AACA,EAAA,GADA,CACA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,GAAA,OAAA,IAAA,CAAA,AACA,CAAA,CAAA,CACA,GACA,CADA,AACA,CACA,CACA,AAHA,CAGA,MAAA,CAAA,GAAA,CAAA,eAAA,CAAA,CAAA,EAAA,EACA,CAAA,CADA,KACA,CAAA,GAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,8BAAA,AACA,CAAA,EAGA,EAAA,KAAA,GAAA,CAAA,EACA,IADA,CAAA,gCCxPS,EAMA,EAyBA,EAjCT,KAQkB,EARlB,AAiCkB,QA/BY,MAF9B,CAAA,EAAA,aAAA,mEAGD,GADU,EAAA,gBACV,KAD+B,GAArB,CAAqB,CAArB,qBAAqB,CAAA,EAAA,CAAA,EAC/B,CAGD,IAHC,CAAA,OAAe,CAAA,AACf,EAAA,QAAA,CAAA,UAAA,AAAqB,CAAA,AACrB,EAAA,YAAA,CAAA,MAAA,QAA6B,CAAA,AAI7B,GADU,EAAA,IACV,KADmB,GAAT,CAAS,CAAT,SAAS,CAAA,EAAA,CAAA,EACnB,CAsBD,EAtBC,CAAA,OAAa,CAAA,AACb,EAAA,GAAA,CAAA,GAAA,IAAa,CAAA,AACb,EAAA,IAAA,CAAA,EAAA,CAAU,CAAA,AACV,EAAA,MAAA,CAAA,GAAY,CAAA,AACZ,EAAA,GAAA,CAAA,GAAS,AAAT,CAAS,AACT,EAAA,OAAA,CAAA,GAAa,CAAA,AACb,EAAA,OAAA,CAAA,GAAa,CAAA,AACb,EAAA,MAAA,CAAA,KAAc,CAAA,AACd,EAAA,KAAA,CAAA,CAAA,EAAW,CAAA,AACX,EAAA,MAAA,CAAA,GAAY,CAAA,AACZ,EAAA,EAAA,CAAA,GAAQ,CACR,AADA,AAAQ,EACR,OAAA,EAAA,CAAA,GAAe,CAAA,AACf,EAAA,OAAA,EAAA,CAAA,GAAe,CAAA,AACf,EAAA,OAAA,CAAA,GAAa,CAAA,AACb,EAAA,IAAA,CAAA,EAAA,CAAU,CAAA,AACV,EAAA,OAAA,CAAA,GAAa,CAAA,AACb,EAAA,IAAA,CAAA,EAAA,IAAa,CAAA,AACb,EAAA,GAAA,CAAA,GAAA,EAAW,CAAA,AACX,EAAA,KAAA,CAAA,CAAA,MAAe,CAAA,AACf,EAAA,MAAA,CAAA,QAAiB,CAAA,AACjB,EAAA,OAAA,KAAA,CAAA,aAA4B,CAAA,AAC5B,EAAA,OAAA,CAAA,SAAmB,CAAA,AAInB,GADU,EAAA,IACV,KADmB,GAAT,CAAS,CAAT,SAAS,CAAA,CAAA,CAAA,GAOpB,AANC,OAAA,CAAA,iBAA2B,CAC3B,AAD2B,EAC3B,KAAA,CAAA,CAAA,cAAuB,CAAA,AACvB,EAAA,OAAA,CAAA,iBAA2B,CAAA,AAC3B,EAAA,OAAA,CAAA,CAAA,kBAA6B,CAAA,AAC7B,EAAA,OAAA,QAAA,CAAA,wBAA0C,CAAA,AAC1C,EAAA,OAAA,KAAA,CAAA,qBAAoC,CAAA,mCCtC1B,cAAc,6DACxB,GADU,EAAA,SACV,KADwB,GAAd,CAAc,CAAd,cAAc,CAAA,EAAA,CAAA,EACxB,CASD,KATC,CAAA,gBAAyB,CACzB,AADyB,EACzB,UAAA,CAAA,CAAA,mBAAiC,CAAA,AACjC,EAAA,UAAA,CAAA,CAAA,mBAAiC,CAAA,AACjC,EAAA,UAAA,CAAA,CAAA,mBAAiC,CAAA,AACjC,EAAA,WAAA,CAAA,qBAAmC,CAAA,AACnC,EAAA,YAAA,EAAA,CAAA,wBAAyC,CAAA,AACzC,EAAA,YAAA,EAAA,CAAA,wBAAyC,CAAA,AACzC,EAAA,SAAA,CAAA,EAAA,kBAAgC,CAChC,AADgC,EAChC,YAAA,SAAA,CAAA,0BAAkD,CAAA,8BCVjD,OAAA,cAAA,CAAA,EAAA,aAAA,oEAEU,EAAA,mBAAmB,CAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,AAE1D,EAAA,wBAAwB,CAAG,MAAM,CAAC,GAAG,CAChD,4BAA4B,CAC7B,CAAC,+BCNC,OAAA,cAAA,CAAA,EAAA,aAAA,6CAUH,EAA0E,CAAA,CAAA,OAE7D,EAAA,QAF6D,eAEtC,CAClC,6BAA6B,GAAG,YAAY,CAAC,0BCb5C,OAAA,cAAA,CAAA,EAAA,aAAA,8JAGH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAC1C,EAAA,EAAqE,CAAA,CAAA,QACrE,EAAA,EAAA,CAAA,CAAA,AADqE,QAErE,EADwD,AACxD,EAA0E,CAAA,CAAA,OAUpE,EAAmB,MAAM,CAAC,CAV0C,KAUpC,CAAhB,AAAiB,EAAA,qBAAqB,CAAC,CAAC,AAoC9D,SAAgB,EACd,CAAc,CACd,CAA2B,CAC3B,CAAqB,CACrB,CAAc,CACd,CAAY,EAEZ,AAP2B,IAOrB,EAAS,EAAsB,EAAzB,AAA8B,CAAF,CAAe,EAAO,GAC9D,AAD4D,AAAK,CAAC,CAAC,AAC9D,EAAD,AADiD,MAAjB,IACnB,CAAC,EAAA,cAAc,CAAC,MAAM,CAAE,EAC3C,CAAC,AAkHD,GAnHiD,CAAC,CAAC,IAmH1C,EAAS,CAAiB,CAAE,CAAc,EACjD,CADe,MACR,CAAY,CAAC,EAAA,wBAAwB,CAAC,CAAC,MAAM,CAAC,EAAK,EAAD,EAAK,CAAC,GAAG,CAAC,CACrE,AADsE,CAAC,AACtE,AAED,SAAS,EAAmB,CAAiB,CAAE,CAAc,EAC3D,IAAK,IAAI,CAAC,CAAG,CADY,CACP,EAAD,IAAO,CAAG,CAAC,CAAE,CAAC,CAAG,CAAC,CAAE,CAAC,EAAE,CAAE,CACxC,IAAM,EAAQ,EAAS,CAAZ,CAA0B,EAAK,EAAD,AAAnB,GAAyB,CAAC,CAAC,CAAd,AAAgB,CAAC,CAAC,CAAC,CAAC,AAEvD,GAAI,EACF,GADO,EAAE,EACF,EAAM,GAAD,CAAK,CAEpB,AAFqB,AAItB,OAAO,EAAY,EACrB,CAAC,AAED,MAHoB,GAAa,AAGxB,CAHyB,CAAC,AAGd,CAAiB,EACpC,MADkB,CACX,CAAY,CAAC,EAAA,wBAAwB,CAAC,CAAC,IAAI,AACpD,CA9Ka,AA6KwC,AACpD,EA9KY,SAAS,CAAG,AAAC,EAAJ,CACU,EADI,EAA6B,EAAE,GAEjE,CADwC,CAAC,CAAlC,OAAO,GAAO,EAAF,EAAM,CAuB3B,EAAA,0BAAA,CAAA,EAAA,OAAgB,AACd,CAAc,CACd,CAAsC,EAEtC,MAAM,CAAC,OAAO,CAGf,AAHgB,GAAgB,GAJS,IAIF,CAAC,CAAC,CAAC,CAAZ,CAAiB,AAAhB,CAAc,CAAQ,EAAE,CAAH,CAAK,CACtD,AAnBJ,SAAS,EAA0B,CAAc,CAAE,CAAW,CAAE,CAAa,EACvE,KAAK,CAAC,CAkBiB,MAlBV,CAAC,EADc,CAE9B,EAAS,GADe,CAAC,EAAE,AACnB,CAAQ,CAAC,CAAC,EAAO,GAAF,AAAK,EAAE,AAC5B,EAD8B,AACJ,EAAM,CAAA,CAAF,CAAK,EAAG,CAAA,EAAI,EAAG,CAAA,AAAE,CAAE,EACnD,CAAC,CAAC,CADsD,AACrD,AACM,CAFgD,CAAC,EAA/B,IAEV,KAAY,MAAM,CACnC,CADqC,KAC/B,CAAC,OAAO,CAAC,GAAU,KAAF,CAAC,CAAQ,CAAC,CAAC,CAAC,EAAW,EAAM,EAAE,CAAH,CACjD,AADsD,CAAZ,CAChB,EAAM,CAAA,CAAF,CAAK,EAAG,CAAA,EAAI,EAAS,CAAE,CAAE,EACzD,CAAC,CAAC,CAD4D,AAC3D,AAEH,AAHqD,CAAU,CAAC,AAG3D,EAAD,AAHuB,UAGV,CAAC,CAAA,EAAG,EAAA,cAAc,CAAC,SAAS,CAAA,EAAG,MAAM,CAAC,GAAG,AAAC,CAAA,AAAE,CAAE,EAEnE,CAAC,CAO6B,EAAM,EAAF,AAAO,AATkC,CASpC,AATqC,CAAC,AAU3E,CAAC,CACH,AADI,CACH,AAF6C,AACzC,CAD0C,AAI/C,CAJgD,CAIhD,aAAA,CAAA,EAwFA,EAAA,OAAA,CAAA,EA/EC,AA+ED,OAAgB,AAAQ,CAKvB,AALqC,CAAE,CAAa,EAC/C,EADiB,CAEnB,EADO,AACF,EADI,AACL,aAAgB,CAAC,GAEvB,EAF4B,AAEvB,CAFwB,CAAC,AAE1B,CAAI,EAAE,AACZ,CADa,AACZ,CAED,EAAA,YAAA,CAAA,EAAA,OAAgB,AACd,CAAmC,CACnC,CAA6B,EAE7B,CAiBD,EAjBK,AAAC,GAAa,CAJQ,IAIb,AAAU,CAAC,GAAP,IAAc,CAAC,EAAS,MAAD,KAAY,CAAC,CAIrD,CAJuD,EAInD,EACF,OAAO,EAAS,EADD,EAAE,EACF,KAAY,CACxB,MAAM,CAAA,AACL,GAC+D,CAAC,CAAC,CAClE,EADG,EAAiB,AADT,CAAC,MACe,CAAE,GAAoB,GAA9B,IAA4B,EAAW,CAAC,EAE3D,IAAI,CAAA,AAAC,GAAc,IAAmB,GAAvB,AAA2C,CAA1C,GAA8C,EAA9B,AAAgC,CAAR,IAAa,CAAC,CAAC,KAE1E,OAAO,EAAS,MAAD,KAAY,CAAC,IAAI,CAAA,AAC9B,GAC+D,AAA7D,CAA8D,CAAC,CAClE,CAAC,GADmB,AADT,CAAC,MACe,CAAE,CAAV,EAA8B,OAAF,EAAW,CAAC,CAGhE,CAAC,CAkDD,SAAS,EAAW,CAAY,CAAE,CAAU,EAC1C,GADiB,CACb,EAAO,EAAE,AAAL,CAAM,AACd,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAE,AAAE,CAAC,EAAE,CAAE,AAC3B,GAAQ,CAAJ,CAEN,EAFc,CAAC,IAER,CACT,CAAC,AAED,EAHa,CAAC,CAGR,EAA6B,CACjC,EAAA,SAAS,CAAC,CADU,IACL,CACf,EAAA,SAAS,CAAC,MAAM,CAChB,EAAA,SAAS,CAAC,GAAG,CACb,EAAA,SAAS,CAAC,YAAY,CACvB,CAAC,AAEF,SAAgB,EACd,CAA2B,CAC3B,GAAc,CAAK,CACnB,CAAmB,CACnB,CAAiB,EAEjB,CAJW,GAIP,EAAS,CANsB,CAMpB,CAAC,AAEhB,CAFU,EAEN,GAAG,AAAE,UAAU,CAAE,CACnB,IAAM,EAA8B,GAAzB,KAAiC,CAAC,CAA/B,AAAgC,OAAzB,EAA0B,EAAa,EAAI,CAAD,GAAhC,CAAsC,CAAZ,AAAa,AAChE,CADoD,CAAC,AAC3B,CAAvB,OAA+B,CAAC,CAA7B,AAA8B,OAAvB,EAAwB,EAAW,EAAI,CAAD,CAA9B,CAAkC,CAAC,AAE1D,AAF+C,CAAC,CAEd,AAFe,EAE7C,AAAkC,CAAD,SAAW,CAAC,IAAI,CAAC,AACtD,EAAmC,CAAC,CAAC,AACzC,KAAO,GAAM,AADG,CACL,AACT,GAAI,EAAK,EAAD,GAAM,CAAG,GAKb,EALkB,AAKb,EAAD,CAAI,CAAG,EALS,CACtB,AAIgB,EAJT,AAIW,EAJd,AAAQ,EAAD,EAAK,CAChB,AADiB,EACF,GAAM,CAAF,GAAM,CAAC,AAC1B,EADY,OACH,AACV,AAMD,IAAI,EAAQ,EAAK,CAAR,CAAO,GAAM,EAAI,EAAK,EAAD,EAAK,CAAC,AAChC,EAAQ,EAAE,CAAL,AAAM,CACX,CAAC,GAAe,EAAiB,MAArB,CAA4B,CAAC,EAAK,EAAD,EAAb,AAAkB,CAAC,EAAI,CAAC,EAAE,CAE5D,EAAQ,GAAA,AAAH,CAAM,CAAC,AAEV,EAAK,EAAD,EAAK,GAAK,EAAA,SAAS,CAAC,MAAM,EAAE,CAClC,EAAQ,CAAA,CAAA,CAAH,CAAO,EAAK,CAAA,CAAG,CAAH,AAAI,CAEnB,EAAK,EAAD,EAAK,GAAK,EAAA,SAAS,CAAC,GAAG,EAAE,CAC/B,EAAQ,EAAA,CAAH,AAAK,CAAC,AAET,EAAK,EAAD,EAAK,CAAG,IACd,GA5DC,EAAW,CA4DN,EADqB,CA3DX,CA2Da,AACnB,AAAY,CA5DJ,CAAC,AA4DQ,CA5DP,AAAT,CAAU,AA4DK,EAAK,CAAG,GAClC,CADqB,CACN,EAAK,EAAD,EAAK,CADuB,AACtB,AACzB,CAFgD,CAAC,CACrC,CAzDA,CA0DP,EA1DU,CA0DP,AAAY,CA1DH,CA0DQ,AA1DP,CAAC,CAAC,AA0DI,IAAO,CAAG,CAAC,CAAC,AAAjB,CAAkB,CAEjC,EAAK,EAAD,EAAK,GAAK,EAAK,EAAD,EAAK,EAAE,IAAI,EAAE,AACjC,GA7DD,EA6DM,GAAG,CAAY,EAAK,EA7DhB,AA6De,GAAM,CAAI,EAAf,AAAc,CAAM,CAAD,GAAK,EAAE,GAAG,GAAI,CAAC,CAAC,CAAC,CAAC,AAG5D,GAAU,EAAQ,CAAZ,CACF,CADW,EAAQ,CACf,AACN,AAFsB,EACd,AACD,EAAH,AAAQ,EAAD,EAAC,AAAK,CAAC,CAErB,CACF,AAED,OAAO,CACT,CAtDA,AAsDC,EAtDD,EAqDe,CAAC,kBArDhB,CAAA,EAwDA,EAAA,UAAA,CAAA,EAAA,KAFC,EAEe,EACd,CAAyD,CACzD,AA4BD,CA5BmB,CAClB,CAAmD,EAEnD,CALwB,EAKpB,CAAC,GAAQ,CAAJ,AAAQ,CAAC,EAAA,mBAAmB,CAAC,CACpC,CADsC,MAC/B,AAET,IAAM,EAAS,EAAK,EAAR,AAAO,OAAU,EAAE,CAAC,AAEhC,CAAI,CAAC,EAAA,mBAAmB,CAAC,EAAG,EAE5B,EAFgC,CAAC,GAE3B,CAAC,IAAI,CAAC,GAAQ,GAAF,CAAC,GAAQ,CAAA,AAAC,GAAG,CAAC,AAC9B,EADgC,EAC1B,EAAQ,CAAM,CAAC,CAAV,CAAc,CAAC,AAE1B,AAFwB,GAEnB,CAAD,GAIA,CAJM,CAIA,CAJE,EAIH,IAAQ,EAAE,CACjB,EAAM,GAAD,IAAQ,CAAG,EAAkB,EAAQ,EAAW,EAAb,AAAmB,GAAD,EAAP,GAAe,CAAjC,AAAkC,CAAC,AAGlE,EAAM,GAAD,CAAK,EAEZ,AAFc,IAET,IAAM,KADY,AAQ7B,QAP8B,CAOrB,CAR8B,CASrC,CARgC,AAQI,OADnB,CA4BjB,IAA8B,EAnCgB,CAAE,CAW5C,AAAJ,QAAY,GAAI,EACP,EADW,AACA,EADE,AACG,EAAD,IAAL,AAAY,CAAC,CAAC,AAmB1B,UAAU,GAFjB,CAEqB,CAfE,EAaO,CAEL,CAfE,AAe2B,CAf1B,EAAE,OAekC,CAAC,CAApC,OAAO,EAAK,EAAD,MAAS,CAdxC,EAAK,EAAD,MAAS,EAAE,CAAC,AAoBlB,WAAW,IAAI,CAhBE,GAgBE,CAhBE,AAgB4B,CAhB3B,EAAE,OAgBmC,CAAC,CAArC,OAAO,EAAK,EAAD,OAAU,CAf1C,CAAC,EAAK,CAAC,AAGT,CAHO,CAGL,AACX,CADY,AACX,CA3BuC,EAAM,GAAD,CAAK,CAAC,CAAC,AAE5C,EAAW,EAAe,EAAQ,EAGxC,CAAC,CAHe,AAAsB,AAGpC,AACJ,CADK,AACJ,CAmCD,GAvCmD,AAAnB,CAAoB,AAuC9C,CAvC+C,CAuCtB,CAC7B,EACA,EACA,CADQ,IAGH,EAJgB,EAOrB,EAAY,EALU,EAHI,AAI1B,EAAE,CACgB,EAAE,AAGT,MAAgB,CAAC,GAC5B,AAD+B,CAAC,CAAC,AACrB,SAAD,AAAU,CAAC,CACpB,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC9B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,AACH,EAAY,GAAG,EAAE,CACnB,AADoB,CACnB,CAAC,AAEI,CAHO,CAGoB,CAC/B,EACA,KAEK,GAGL,CANqB,CAMT,GALU,AAKP,EACjB,AALE,AAIiB,CAAC,AACnB,CALG,AAKF,AAEF,CANoB,CAGP,AAPiB,CAIR,MAMN,EACd,CAAkB,CAClB,CAAmD,CACnD,CAEC,CACD,GAAoB,CAAK,EAOzB,GAb+B,AAc5B,CAAoC,CAAC,EAAA,IARvB,eAQ0C,CAAC,EACjC,UAAU,EACnC,AADA,OAAO,EAEP,OAAO,EAGT,EALsB,OAKb,EAHc,AAKrB,CALsB,AAKP,CACf,CAAW,CACX,CAA8C,CAC9C,CAAqC,MA4BjC,EA1BJ,EA0BkB,CAjCS,AAOvB,AA0Be,CA1Bd,EACH,OAAO,AAET,IAHkB,AAGZ,EAHc,AAGL,GAFG,CAAC,AAEP,AAIZ,GACE,EALsB,AAKf,EALiB,CAAC,CAKnB,qBAA0B,EAChC,IAvYmB,AAwYlB,QAxY0B,EAAxB,EAwYU,CADI,IACjB,AAxYU,GAAqB,AAAU,EAA1B,EAA8B,CAAT,AAAU,EAwYhC,GAA6B,GAAvB,CAAC,QAAI,OAAO,CAAW,CAAU,CAAC,CAK9B,CAJxB,CADsC,QAKJ,EAA9B,AAAgC,OAHlB,AAGP,CAHqB,CAAC,EAAK,EAAD,EAGlB,KAH4B,CAAC,CAAC,CAQ/C,CAAC,CAAY,CAAC,EAAA,wBAAwB,CAAC,CAJvC,CAIyC,MAJlC,EAAc,IAAI,CAAC,IAAI,CAAE,CAAZ,CAAoB,EAAM,EAAR,AAAM,AAAgB,GAOhE,CAPoE,CAAC,CAAC,CAOhE,EAAO,AA3OjB,CAoOkE,CAOpD,OA3OL,AAAY,CAAmB,CA2OZ,AA3Oc,CAAiB,EACzD,IAAM,EADY,AACU,EAAE,CAAC,AAC3B,EAAgC,EADrB,AACP,AACR,EADwC,CAAC,EAClC,GAAM,CAAF,AACT,IAAI,EAAM,CAAH,CAAQ,EAAD,CAAI,CAAC,AAEf,GAA6B,OAAnB,CAA2B,EAAE,AAAzB,OAAO,GAAG,AAC1B,GAAG,AAAG,GAAA,CAAG,CAEX,AAFY,EAEF,IAAI,CAAC,EAAN,IAAY,CAAC,GAAG,CAAC,AAC1B,CAD2B,CAAC,AACrB,EAAH,AAAQ,EAAD,EAAK,CAAC,AAClB,AACD,OAAO,EAAU,OAAD,AAAQ,EAAE,AAC5B,CAD6B,AAC5B,CA8N4B,EAAO,IAAD,MAAW,CAAE,GAAQ,CAAJ,CAAS,EAAD,EAAK,CAAC,CAAC,AACzD,EAAQ,EAAK,CAAR,CAAO,IAAO,CAAC,AAAC,GAA8B,CAArB,EAAE,KAA2B,CAAC,CAAzB,CAAD,MAAQ,GAAmB,CAAf,KAAqB,CAAC,AAGtE,GAAgB,EACpB,GADyB,AACrB,CADsB,CACf,GADM,CACP,CAAM,EAAI,CAAC,EAAI,EAAO,IAAD,CAAM,CAAG,EACtC,EAAO,CADoC,CACvC,AAAsB,CADmB,CACL,IAAI,CAAC,CAAC,CACzC,CACL,EAFsC,CAEhC,GAFmB,IAEjB,CAAK,WAAE,CAAS,CAAE,CAvXhC,AAuXmC,SAtXjC,AADO,CACW,CAClB,CAAmD,CACnD,CAAiB,CACjB,CAAqC,CACrC,CAAc,IAkXyC,QA/UvD,CAxC6B,GAwCQ,EAmErB,IAAmC,EAjGnD,GAiGsE,GAArC,EAhD3B,IAjDF,EAAQ,EAiDE,AAjDO,CAAZ,CAA0B,GACnC,CADoB,AAAmB,CAAC,CAAC,AACrC,EACF,EAF+B,CACxB,EAAE,CACF,OAAE,EAAO,GAAF,MAAW,EAAE,CAAK,CAAE,CAAC,AAIrC,EAJkC,EAI5B,EADS,AACI,IAAO,EAAD,EAAT,CADQ,EAAE,CAAC,QACe,CACtC,EAAY,GACZ,EAAmB,EAAc,EADtB,CAgBf,CAfyC,CAAC,AADd,CACe,AADd,IACM,AAEnC,EAAQ,CACN,CAHoB,CAEjB,EACC,EAAE,AAgBR,EAfI,EAgBJ,EAfI,AAcc,EAElB,AAjBU,EAEN,GAc+C,CAb/C,CAFS,CAkBb,EApB0B,AAIlB,AACJ,EAaa,AAEH,AACd,EAfI,AADI,AAFQ,EAoBV,EAAiC,CACrC,CAAC,EAHkB,AAGlB,EAlBW,CACX,CAgBa,UACC,CAAC,UAAU,CAAC,CAAE,EAAK,EAAD,OAAU,CAC3C,CAAC,EAAA,cAAc,CAAC,UAAU,CAAC,CAAE,EAAK,EAAD,EAAK,CAAC,GAAG,CAAC,CAC3C,CAAC,EAAA,cAAc,CAAC,UAAU,CAAC,CAAE,EAAK,EAAD,QAAW,CAAC,QAAQ,EAAE,CACvD,CAAC,EAAA,cAAc,CAAC,WAAW,CAAC,CAAE,EAAK,EAAD,QAAW,CAAC,IAAI,CACnD,CAAC,AAEI,EAAO,EAAH,AAAU,IAAD,KAAU,CAC3B,CAAA,EAAG,EAAA,SAAS,CAAC,OAAO,CAAA,CAAA,EAAI,CAAU,CAAC,EAAA,cAAc,CAAC,UAAU,CAAC,CAAA,CAAE,CAC/D,CACE,UAAU,GACX,CACD,EAAa,EAAI,CAAD,IAAM,CAAZ,AAAa,CAAZ,CAAC,KAAkB,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAE,QAAc,EAAJ,CAAC,CAAC,CAAC,AAGnD,CAAY,CAAC,EAHgD,AAGhD,CAF7B,CAAC,sBAEoD,CAAC,CAAC,MAAM,CAK1D,AAL2D,CACzD,EAAY,EAAK,EAAD,EAIT,CAJE,CAIA,IAJkB,CAAC,IAAI,CAAA,AACpC,GAAgC,MAAvB,CAA8B,AAA7B,CACX,CAAC,CADY,EAAW,IAAI,GAAL,CAItB,EACE,EACA,EADI,AACK,GAAG,CACZ,EADQ,CAFG,CAGC,KAAH,EAAE,IAAY,CACvB,EAAU,GAAG,EAAE,EAAN,GAAW,CACpB,EAAU,GAAG,EAAE,EAAN,CAAS,CACnB,CAAC,AAGG,GA7CN,CA6CU,AA7CT,CA6CU,CA3CH,EA4E0B,EA5EZ,EA4E0B,EA5EtB,AAAE,EA6ErB,CAAY,CAAC,AA7EA,CAAa,CA6Eb,AA7Ec,CAAC,uBA6ES,CAAC,CAAC,MAAM,CAAC,EAAK,EAAD,EAAK,CAAC,GAAG,CAAC,CAAC,CACnE,EA5EK,GA4EA,CAAC,CAAC,EA5EA,EAAO,GAAF,MAAW,EAAE,CAAI,CACjC,AADmC,CAClC,AADmC,CAAH,AAuVzB,EACA,EACA,EACA,AAHM,EAIN,EADI,CAGN,AALW,CAGL,CAEC,AADN,CAAC,CACE,AAAS,CAJC,EAIF,CAAK,CAAC,AAClB,EAAgB,EACjB,AAED,OAH2B,AAGpB,CAHqB,CAAb,AAGJ,CAAD,MAAQ,CAAC,IAAI,CACrB,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAE,GACxC,CAD4C,CAAC,CAC1C,EAAE,AACH,GAAI,CACF,IAAM,EAAM,CAAH,CAAiB,IAAI,CAC5B,IAAI,CACJ,CAFuB,CAGvB,EACA,EAFM,AACF,AAEJ,GAEF,CAFM,CACL,CAAC,AACE,CAAA,EAAA,CAHU,CAGV,SAAA,AAAS,EAAC,GAAG,AACf,CADgB,EAAE,IACX,EAAI,CAAD,GAAK,CACb,AAAC,CAAM,EAAE,CACP,CADS,CACgB,EAAM,EAAF,CACtB,CAAC,CAAC,CAEX,AAAC,GAAU,CAET,CAFW,EAHiC,AAG/B,CAHgC,CAAC,CAI9C,EAAuB,EAJC,AAIK,EAAF,AAAO,CAAF,EAC1B,CACR,CAAC,CADU,AAEZ,CAAC,AAGF,AALc,MADqC,CAKnD,AALoD,CAAC,CAK5B,AALC,EAKK,EAAF,CACtB,EAEV,AAAC,CAFY,CAAC,IAEN,EAHuC,AAG7B,CAH8B,AAGhC,AAEf,CALgD,KAAtB,AAI1B,EAAuB,EAAM,EAAK,AAAP,CAAK,EAC1B,EACP,AACH,CAFa,AAEZ,CAFa,AAGf,AACH,CADI,AACH,AAID,KATuD,CAAC,CAAC,AAOxD,CAAoC,AAPP,CAOQ,EAAA,mBAAmB,CAAC,EAAG,EAEtD,CACT,CAAC,AAHkE,AAvGnE,CAuGoE,CAvGpE,gBAyG6B,CAzG7B,AAyG8B,CAzG9B,kBA0GC,cCteE,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,wCAAwC,CAAC,+BCJlE,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAAoD,EACpD,EAAA,EAAA,CAAA,CAAA,QAQA,EAAA,EAAmC,CAAA,CAAA,IAFK,IAGxC,EAAA,EAAA,CAAA,CAAA,AADmC,QAEnC,EADwD,AACxD,EAAqD,CAAA,CAAA,OAErD,EAAA,EAAA,CAAA,CAAA,IAU0B,AAZ2B,IAarD,EAAA,EAQiB,CAAA,CAAA,QAGjB,EAAA,EAA0D,CAAA,CAAA,CAHzC,MAWX,EAAqD,CACzD,OATwD,GAS9C,CADQ,CACN,EACZ,GADiB,EACZ,CAAE,CAAC,CAAC,CACT,WAAW,EAAE,EACb,GADkB,eACA,EAAE,EACrB,CAAC,AAEI,EAHqB,AAGD,CAAC,cAAJ,AAAkB,CAAC,AAE1C,CAF2C,MAE9B,UAA+B,EAAA,UAAR,SAA+D,CACjG,YAAY,EAAuC,CAAA,CAAE,CAAA,CACnD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CACvE,AADwE,CACvE,AAEQ,AAHgE,SAGvD,CAAC,EAAuC,CAAA,CAAE,CAAA,CAC1D,KAAK,CAAC,SAAS,CAAC,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CAClD,AADmD,CAAC,AACnD,AAES,IAAI,EAAA,CACZ,IAAM,EAAS,IAAH,AAAO,EAAA,mCAAmC,CACpD,SAAS,CACT,GAMF,OAJA,EAAO,IAAD,CAAM,AAFO,CAClB,AACY,CADX,GACe,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,AAC9C,EAAO,IAAD,CAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,AAC7C,EAAO,IAAD,CAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,AAExC,CACT,CAAC,AAEO,IAHO,CAAC,cAGW,EAAA,CACzB,OAAO,IAAI,EAAA,6BAA6B,CACtC,8BAA8B,CAC9B,EAGA,AAAC,IACK,CAAA,EAAA,EAAA,IADa,EAHF,AAGI,EAFrB,AAEuB,CACjB,AAAS,EAAC,EAAc,OAAO,CAAC,EAClC,AADoC,CAAX,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AAEzC,IAAI,CAAC,KAAK,CACR,EACA,SAAS,CACT,CAFa,GAET,CAAC,CAT6D,YAShD,CAAC,EAAc,WAAD,SAAqB,CAAC,CACvD,CAAC,AACK,GACR,AACD,IACM,GACF,GAJkB,CAAC,AAIf,CAAC,CAFI,CAAC,EAAE,CACG,EAAE,AACL,CAAC,EAAe,SAAS,CAAC,AAE1C,CAF8B,AAAa,AAE1C,CAEL,AADG,CACF,AAEO,AAHJ,kBAGsB,EAAA,CACxB,OAAO,IAAI,EAAA,6BAA6B,CACtC,4BAA4B,CAC5B,EACA,AAAC,IACK,CAAA,EAAA,EAAA,IAD6B,EAAE,AADpB,EACsB,CACjC,AAAS,EAAC,EAAc,KAAK,CAAC,EAAE,AAClC,GADyB,CACrB,CAAC,OAAO,CAAC,EAAe,OAAO,CAAC,CAAC,AAEvC,EAF4B,EAExB,CAAC,KAAK,CAAC,EAAe,OAAO,CAAE,GAAX,CAAe,CAAC,WAAW,EAAE,CAAC,CAAC,AAChD,GAET,AAAC,IACK,GACF,GAJkB,CAId,AAJe,CAId,CAF0B,EAAE,EAClB,AADoB,EAClB,AACL,CAAC,EAAe,OAAO,CAAC,AAExC,CAFyC,AAExC,CACF,AACH,CAJkC,AAG9B,AACH,AAEO,oBAAoB,EAAA,CAC1B,OAAO,IAAI,EAAA,6BAA6B,CACtC,gCAAgC,CAChC,EAAiB,AACjB,IACM,CAAA,EAAA,EAAA,IADO,CAAC,CADG,CACD,EACV,AAAS,EAAC,EAAc,QAAQ,CAAC,EACnC,AADqC,AAAZ,IACrB,CAAC,OAAO,CAAC,EAAe,UAAU,CAAZ,AAAa,CAAC,AAE1C,IAAI,CAAC,KAAK,CAAC,EAAe,UAAU,CAAZ,AAAc,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,AACtD,GACR,AACD,IACM,GACF,GAJkB,CAAC,AAIf,CAAC,CAFI,CAAC,EAAE,CACG,EACH,AADK,CACJ,EAAe,UAAU,CAE1C,AAF2C,AAAb,CAAc,AAE3C,CACF,AACH,CADI,AACH,AAEO,aAAa,CACnB,CAAiE,CAAA,CAEjE,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACL,AAAQ,CAAQ,EAC9B,IADqB,GACd,SAAS,MAGV,EAGJ,GAAI,CANsB,OAGU,CAAC,AAGxB,CAAC,MAAM,EAAI,CAAC,CAAE,CACzB,IAAM,EAAO,EAAH,OAAgD,CAAC,AAC3D,EAAgB,EAAgB,SAAnB,IAAkB,GAAiB,CAC9C,CAAI,CAAC,CAAC,CAAC,CACP,CAAI,CAAC,CAAC,CAAC,CACP,CAAI,CAAC,CAAC,CAAC,CACP,CAAI,CAAC,CAAC,CAAC,CACP,CAAI,CAAC,CAAC,CAAC,CACP,CAAI,CAAC,CAAC,CAAC,CACP,CAAI,CAAC,CAAC,CAAC,CACP,CAAI,CAAC,CAAC,CAAC,CACP,GAEH,IAAM,CACL,IAAM,EAAO,EAAH,IAHY,CACrB,CAAC,CAEoB,CAAC,CAAC,CAA+B,CAAC,AACxD,EAAgB,EAAgB,SAAnB,IAAkB,GAAiB,CAC9C,EAAK,EAAD,IAAO,CACX,EAAK,EAAD,MAAS,CACb,EAAK,EAAD,OAAU,CACd,EAAK,EAAD,UAAa,CACjB,EAAK,EAAD,YAAe,CACnB,EAAK,EAAD,WAAc,CAClB,EAAK,EAAD,WAAc,CAClB,EAAK,EAAD,UAAa,CACjB,GAEH,AAED,IAAM,EAAY,CAAA,EAAA,EAAA,EAAH,IAJS,CACrB,CAAC,IAGc,AAAY,EAC5B,EAAc,QAAQ,CACtB,EAAc,AADD,WACA,EAAc,CAC5B,CAAC,AAEI,EAAO,EAAH,AAAmB,aAAD,KAAmB,CAC7C,EACA,GAcF,IAfW,GAIX,EAAc,CAHC,CACd,CAAC,QAEW,CAAa,CAAC,EAAA,wBAAwB,CAAC,CAAG,CACrD,MAAM,CAAE,EAAc,QAAQ,CAC1B,EADiB,AACH,QAAQ,EACrB,CADY,CACE,QAAkC,CAC/C,EAAA,AADY,wBACY,CACzB,MACD,OACJ,EADa,AAEb,EADI,IACE,CAAE,CAAA,CAAE,CACX,CAAC,AAEK,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,CAAK,CACrD,CADuD,EACvD,EAAA,sBAAA,AAAsB,EAG3B,GAAG,CACO,CADL,CACyC,KAAK,CAAN,AAAO,IAAI,CAAE,CACtD,EACD,CAAC,CAAC,AAEL,CAAC,EAAK,CAAF,IACF,CAJe,AAGL,CACM,CADJ,EAAE,UACC,SAAuB,CAAC,EAAM,EAAF,AAAO,CAAF,CAClD,CAAC,CACF,CAAC,AAEN,CAJgE,AAI/D,AACH,CACF,AADG,AALkE,AAI/D,CAEL,AAEO,AAHJ,AALkE,sBAQxC,CAC5B,CAAc,CACd,CAAW,CACX,CAAqD,CAAA,CAErD,IAAM,EAAS,IAAH,AAAO,CAAC,SAAS,EAAE,CAAC,AAChC,QAAe,IAAX,GAAwB,EAAK,AAAT,CAAd,AAAqB,UAC7B,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,CAAK,AAInB,CAJoB,CAAC,CAIjB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,GACX,EAAiD,CADhC,CAAC,EAAE,AAC4B,AAAK,CACpD,AADoD,IAElD,AAAmC,MAD3B,CAAC,EAAE,CACkC,EAAzC,AAA2C,OAApC,EAAO,IAAD,QAAa,CAC5B,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,GAGV,CAHc,CAAC,CAAC,CAGZ,CAAC,oBAAoB,CAAC,EAAM,EAAF,AAChC,CAAC,CAAA,AACD,IACE,CADG,AACH,CAH0C,AAEtC,CACJ,AAH2C,CAAC,AAEtC,CACN,OAAO,AAAP,EAAQ,EAAM,EAAF,AACd,CAAC,CACF,CAFsB,AAErB,CAFsB,CAAC,EAGpB,CACL,GAAmC,UAAU,EAAzC,OAAO,EAAO,IAAD,QAAa,CAAiB,WAC7C,GAAA,EAAA,OAAA,AAAO,EAAC,GAGV,CAHc,CAAC,CAAC,CAGZ,CAAC,oBAAoB,CAAC,EAAM,EAAF,CAC/B,AACH,CAEQ,AAFP,EAFyE,CAAC,CAAC,gBAIhD,CAC1B,CAAc,CACd,CAAoC,CAAA,CAEpC,GAAM,CAAE,cAAY,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAAC,AACrC,GAIL,CAAA,EAAA,EAAA,IAJiB,EAAE,gBAInB,AAAsB,EACpB,GAAG,EAAE,AACH,EAAa,EAAM,EAAF,AACnB,CAAC,CAAA,AACD,EAF2B,CAAC,AAEzB,CAFW,AAAe,AAEzB,AACE,EADA,CACG,AACL,EADO,EACH,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAE,GAAG,AAGrD,CAHsD,AAGtD,CAHuD,CAGvD,EAAA,OAAA,AAAO,EAAC,IAAI,GAAE,EAChB,CAAC,EACD,EAEJ,CAAC,AAEO,CAJA,AAFqB,CAG1B,AAH2B,CAG1B,AAH2B,QAMZ,EAAA,CACjB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACC,AAAN,CAAc,EAC5B,EADmB,KACZ,SAAS,AAEd,CAAoC,CACpC,CAAmC,EAEnC,KALwB,EAKjB,EAAgB,MAAM,CAAC,IAAI,CAAE,CAAd,CAAwB,EAAQ,EACxD,CAAC,AACH,CADI,AACH,AACH,AAHkD,AAAQ,CAEtD,AACH,AAEO,EAL2D,CAAC,CAAC,UAK/C,EAAA,CACpB,IAAM,EAAkB,IAAI,CAC5B,AAD6B,OACtB,CADc,QACI,AAAT,CAA+B,EAC7C,KADsB,EACf,SAAS,AAEd,CAAkC,CAClC,CAAsC,CACtC,CAAkD,CAClD,CAAgC,CAChC,CAAgC,EAEhC,EAR2B,KAQpB,EAAgB,SAAS,CAC9B,GADoB,CAChB,CACJ,EACA,EACA,EACA,EACA,AAJQ,AACF,EAIN,CAFK,CAIT,CAAC,AACH,CADI,AACH,AACH,CADI,AACH,AAEO,AATW,CAEH,CACD,CACR,CAAC,EAKM,CACZ,CAAc,CACd,CAAmB,CACnB,CAAoC,CACpC,CAAmC,CAAA,CAEnC,IAAM,EAAS,IAAH,AAAO,CAAC,SAAS,EAAE,CAAC,AAC1B,EAAO,EAAH,EAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAA,SAAS,CAAC,KAAK,CAAC,CAEnD,AAFoD,OAE7C,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,CAAK,CACrD,CAAA,AADuD,EACvD,EAAA,sBAAA,AAAsB,EAG3B,GAAG,CACM,CADJ,CACa,IAAI,CAAC,CAAN,CAAW,CAAF,CAAU,GAEpC,CAAC,AAFiC,EAE5B,CAAF,AAFuC,CAAC,CAAC,EAGvC,CADM,EAAE,CAEQ,CAFN,AAEM,CADV,CACU,CADR,CACQ,YAAA,AAAY,EAAC,GAGpB,EAAO,CAHmB,CAAC,CAGjB,AAHkB,CAGtB,CAAM,AACrB,CAAA,EAAA,EAAA,aAAA,AAAa,EAAC,EAAM,EAAO,AAAT,GAAY,CAAJ,AAAM,EAAO,IAAD,OAAY,CAAC,CAFnD,AAEoD,EAF/C,EAAD,QAAW,CAAC,EAAA,SAAS,CAAC,YAAY,CAAC,CAAC,CAK5C,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAM,EAChB,AADc,CAAK,AAClB,CADmB,AAErB,CAFsB,AAErB,AAEN,CAAC,AAEO,SAAS,CACf,CAAiB,CACjB,CAAsB,CACtB,CAAkC,CAClC,CAAsC,CACtC,CAAkD,CAClD,CAAgC,CAChC,CAAgC,CAAA,CAEhC,IAAM,EAAO,EAAH,EAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAA,SAAS,CAAC,QAAQ,CAAE,CAAA,CAAE,CAAC,CAAC,AAE3D,OAAO,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,CAAK,CACrD,CADuD,EACvD,EAAA,sBAAA,AAAsB,EAC3B,GAAG,CACM,CADJ,CACa,IAAI,CAClB,CADa,CAEb,CADG,CAEH,EACA,EAFM,AAGN,EACA,CAFK,EAKT,CAAC,CAJU,AAFI,CAMT,CAAF,CAHQ,CACT,CAAC,CAGE,AAAC,CADK,CACO,CADL,EAAE,AACM,EAClB,AADoB,EACf,EAAD,AADU,QACC,CAAC,EAAA,SAAS,CAAC,eAAe,CAAC,CAAC,AAEzC,GAAU,EAAO,CAAX,GAAU,EAAO,EAAE,AAC3B,EAAK,EAAD,aAAgB,CAAC,CACnB,IAAI,CAAE,EAAA,cAAc,CAAC,qBAAqB,CAC1C,OAAO,CAAE,IAAI,CAAC,SAAS,CAAC,GACzB,CAAC,CAAC,AAEL,CAHkC,CAAC,CAGnC,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,AACd,CADmB,AAClB,CADmB,AAErB,CAFsB,AAI3B,AAFM,CAIE,AAFP,kBAEyB,CACxB,CAAkD,CAClD,CAAyC,CAAA,CAEzC,IAAM,EAAS,IAAH,AAAO,CAAC,SAAS,EAAE,CAAC,AAE1B,EAAO,EAAH,EAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAA,SAAS,CAAC,OAAO,CAAE,CAAA,CAAE,CAAC,CAAC,AAC1D,GAAI,EAAW,CACb,GAAM,CAAE,EADG,OACM,CAAE,CAAa,CAAE,IAAI,CAAE,CAAQ,CAAE,CAChD,EAEF,EAAK,EAAD,GAF+C,CAAC,MAEnC,CAAC,EAAA,cAAc,CAAC,cAAc,CAAE,GAEjD,IAAM,EAAgB,GAAU,CAF8B,CAAC,CAAC,EAElC,AAAO,CAAC,AAKlC,EALe,CAMjB,EAAK,EAAD,MADW,EAAE,EACA,CAAC,EAAA,cAAc,CAAC,cAAc,CAAE,GACjD,EAAK,EAAD,MAD0D,CAAC,CAAC,AACjD,CAAC,CAAA,EAAG,EAAa,CAAA,EAAI,EAAa,CAAE,CAAC,CAAC,CAErD,EAAK,AAF2B,EAE5B,GAF6C,KAElC,CAAC,GAEnB,IAAM,CACL,IAAI,CAH2B,CAAC,AAGZ,CAHa,EAGV,CAAC,AACpB,EAAc,KADD,MACA,EAAc,EAAE,CAC/B,EAAgB,CAAA,EAAA,EAAK,EAAc,IAAtB,OAAqB,EAAc,CAAA,GAAA,AAAI,CAAC,CAEvD,EAAgB,EAAA,SAAH,cAA0B,CAAC,OAAO,CAC7C,iBAAiB,CACjB,GAEF,EAAK,EAAD,MAFW,CACd,CAAC,EACe,CAAC,EAAA,cAAc,CAAC,cAAc,CAAE,GAClD,AAUD,OARI,EAAc,CAH8C,CAAC,CAAC,KAGxC,EAAE,CAAX,EAAc,EAAE,AAC/B,CAAA,EAAA,EAAA,aAAA,AAAa,EAAC,EAAM,EAAF,AAAgB,QAAQ,CAAC,EAAV,CAAa,CAAE,EAAO,IAAD,OAAY,CAAC,CAAC,AAGlE,EAAc,WAAD,GAAe,EAAI,EAAO,IAAD,OAAY,EAAE,AACtD,CAAA,EAAA,EAAA,0BAAA,AAA0B,EAAC,EAAM,EAAF,AAAgB,WAAD,GAAe,CAAC,CAAC,AAG1D,CACT,CAAC,AAEO,EAHK,CAAC,aAGU,CACtB,CAAkC,CAClC,CAAmC,CACnC,CAAc,CACd,CAAiB,CACjB,CAA6C,CAC7C,CAA4B,CAC5B,CAAiE,CACjE,CAA+D,CAC/D,CAAiE,CAAA,CAMjE,GAJI,AAAC,IACH,EAAe,EAAA,CAAE,CAIjB,AAJkB,CAIN,CAAC,AALE,EAKF,AALI,EACL,sBAIyB,CAAC,EACtC,IAAI,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAEnC,CADA,KACO,QACL,MAAM,KACN,QAAQ,IACR,EACA,OADS,KACG,kBACZ,cAAc,EACd,aAAa,GACb,aAAa,EACb,EACD,CAAC,AAGJ,IAAM,EAA0C,GAJhC,CAIoC,CAAC,CAAtB,EAGzB,EAA0B,GAAiB,EAajD,IAhB4C,CAAhB,EAI5B,CAD6C,CAC7B,CAAA,EAAA,EAAA,EADa,EAAwC,CAAC,CACzD,WAAG,AAAiB,EAC/B,IAAI,CAAC,MAAM,CACX,GAAG,CAAG,CAAD,GAAK,CAAC,SAAS,EAAE,CACtB,EACA,GAGE,IACF,CAAA,CADQ,CACR,CADU,CACV,SALuB,CAKb,AAAV,AAJsB,CACvB,CAGY,AAHX,EAGkB,IAAD,QAAa,EAAE,CAAE,IAAI,CAAC,MAAM,CAAE,GAAG,CAAG,CAAD,GAAK,CAAC,SAAS,EAAE,CAAC,CAAC,AACvE,CAAA,EAAA,EAAA,UAAU,AAAV,EAAW,EAAO,IAAD,WAAgB,EAAE,CAAE,IAAI,CAAC,MAAM,CAAE,GAAG,CAAG,CAAD,GAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAGrE,QACL,EACA,IADM,IACE,GACR,SAAS,gBACT,YAAY,KACZ,cAAc,EACd,aAAa,GACb,EACA,WADa,CACD,GACb,AACH,CAAC,AADG,CAEL,AA/aD,EAAA,sBAAA,CAAA,uBA+aC,UCreE,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA2D,GAAlD,OAAA,cAAA,CAAA,EAAA,yBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,sBAAsB,CAAA,GAAA,yJCqBzB,EAAmB,SAAS,CAErB,EAAoB8T,EAF3B,AAE2BA,aAApB,SAA0C,CACrD,EACAkJ,EAAAA,YADgB,UACM,CACtB,AAAC,IACC,IADO,AACD,EAAU,EAAuB,CADX,EACtB,AAEN,KAF+C,CAAC,AAEzC,CACL,GAAG,CAAO,CACV,KAJoC,OAIxB,CAAC,CAAI,CAAE,CAAM,EAAE,AACzBf,EAAAA,eAAe,CAAC,EAAM,EAAF,yBAA6B,CAAC,CAIrB,AACzB,EAAqB,IADI,EACE,EAAE,MAAA,EAAU,CAACrkB,CAApB,CAAoBA,UAAU,CAAC,GAAM,CAAF,CAAC,IAAO,EAAE,AACnE,EAAK,EAAD,OAAU,CAAC,CAAE,IAAI,CAAEob,EAAAA,cAAc,CAAC,KAAA,CAAO,CAAC,CAGhD,IAAM,EAAapb,EAAAA,UAAU,CAAC,GAAM,CAAF,CAAC,EAAK,CAGlC,EAAgB,CAAU,CAAC,SAA3B,eAAmD,CAAC,CACpD,EAAgB,CAAU,CAAC,SAA3B,eAAmD,CAAC,CAE1D,GAAI,EAAQ,KAAD,sBAAC,EAA+B,EAAe,CACxD,IAAM,EAAWP,EAAAA,EADqC,EAChD,OAAsB,CAAC,GAGvB,CAH2B,CAAC,AACPO,AAEA,EAFAA,UAAU,CAAC,GAAU,IAAI,AAEP,CAFC,AAEAqlB,CAFC,CAEDA,2CAA2C,CAAA,EAAK,EAAE,CAE1F,EAAe,EAAgB,CAAC,EAAA,EAAA,CAAA,EAAhC,AAAgC,EAAA,CAAjB,AAAiB,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAIA,EAJA,GAIA,CAAA,GAJA,IAIA,CAAA,IACA,EAAA,IAAA,CAAA,GACA,EAAA,EAFA,CAAA,EAAA,CACA,AACA,CADA,CAAA,IACA,CAAAA,EAAAA,2CAAA,CAAA,IACA,QAAA,EAAA,IADA,CAAA,EACA,EACA,EAAA,MAAA,MAAA,CAAAA,CADA,CACAA,2CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAEA,EAAA,MAFA,AAEA,IAFA,EAEA,CAAAA,EAAAA,2CAAA,CAAA,GAGA,AAAArlB,EAAAA,OAHA,CAAA,EAGA,CAAA,GAAA,IAAA,CAAA,CAAA,qBAAA,CAAA,EACA,AADA,EACA,MAAA,MAAA,CAAA,sBAAA,CAAAA,EAAAA,UAAA,CAAA,GAAA,KAAA,CAAA,KAAA,CAAA,CAGA,EAAA,MAAA,IAAA,CACA,CAAA,EAAAA,EAAAA,UAAA,CAAA,GAAA,IAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,EAAA,AAiDA,SAAA,CAAA,EAAA,AACA,GAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA,AAEA,CAFA,GAlDA,AAoDA,EAAA,EAAA,EAAA,GAAA,AAHA,EAGA,CAAA,IAAA,EAAA,QAGA,EAAA,IAAA,EAAA,EAAA,CAAA,CACA,CADA,CACA,IAAA,CAAA,IAAA,CAAA,CAGA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,GAAA,EAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AAEA,CAEA,MAAA,CAAA,EAAA,EAAA,CACA,AADA,CAAA,CA9DA,GACA,CAAA,CAAA,CAEA,CACA,CACA,AADA,CACA,AACA,CAAA,EAgCA,MAtCA,GAsCA,EAAA,CAAA,EACA,AADA,MACA,CACA,UAFA,QAEA,EAAA,EACA,EADA,uBACA,EAAA,EACA,EADA,yBACA,EAAA,EACA,EADA,CACA,CAAA,AACA,CACA,AADA,sBARAoI,EAAAA,iBAAA,CAAA,AA3BA,CAAA,EAAA,CAAA,CAAA,GAAA,CACA,CADA,AAEA,IAAA,CAAA,EACA,EAwBA,OAxBA,GAAA,AAIA,EALA,AAKA,EAAA,GACA,CAAA,AACA,CAAA,EAFA,CAAA,CAAA,IAAA,OAAA,yCC1F7C,OAAA,cAAA,CAAA,EAAA,aAAA,yCAIU,EAAA,mBAAmB,CAAG,MAAM,CACvC,yDAAyD,CAC1D,CAAC,6GCEW,EAAA,mBAAmB,CAAkB,CAChD,GAAG,CAAC,CAAO,CAAE,CAAG,EACd,GAAK,CAAD,EAMJ,IANY,AAMP,EANS,EAMH,KAFE,KAEQ,CAFF,CAAC,EAEK,EAFD,CAAC,CAEI,CAAE,CAC7B,GAAI,CAH0B,CAAC,CAAC,CAGb,GAAO,AAAJ,EAAe,CAAvB,OAAsB,GAAY,EAAE,GAAK,EACrD,CADwD,EAAE,IACnD,CAAO,CAAC,EAAW,EAAE,MAAH,EAAW,EAAE,CAAC,AAE1C,AAGH,CAAC,CAED,IAAI,CAAC,GACI,EAAU,EADP,GACI,CAAC,AAAQ,CAAP,AAAQ,IAAI,CAAC,GAAW,EAAE,CAAC,AAE9C,CAAC,AAFsC,CAAC,CAAC,CAAC,4BC1BxC,OAAA,cAAA,CAAA,EAAA,aAAA,koBAmBU,EAAA,kCAAkC,CAC7C,+BAAwC,CAAC,AAa9B,EAAA,+BAA+B,CAC1C,4BAAqC,CAAC,AAS3B,EAAA,uCAAuC,CAClD,oCAA6C,CAAC,AAWnC,EAAA,gCAAgC,CAC3C,6BAAsC,CAAC,AAO5B,EAAA,sCAAsC,CACjD,mCAA4C,CAAC,AASlC,EAAA,2BAA2B,CAAG,wBAAiC,CAAC,AAWhE,EAAA,6BAA6B,CACxC,0BAAmC,CAAC,AAQzB,EAAA,6BAA6B,CACxC,0BAAmC,CASxB,AATyB,EASzB,qBAAqB,CAAG,kBAA2B,CAAC,AAKpD,EAAA,sCAAsC,CAAG,SAAkB,CAAC,AAK5D,EAAA,sCAAsC,CAAG,SAAkB,CAAC,AAK5D,EAAA,mCAAmC,CAAG,MAAe,CAAC,AAKtD,EAAA,4BAA4B,CAAG,OAAgB,CAAC,AAUhD,EAAA,yCAAyC,CACpD,oCAA6C,CASlC,AATmC,EASnC,0CAA0C,CACrD,qCAA8C,CAAC,AASpC,EAAA,qCAAqC,CAChD,gCAAyC,CAAC,AAS/B,EAAA,iCAAiC,CAC5C,4BAAqC,CAAC,+BCpKrC,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,wCAAwC,CAAC,+BCJlE,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAa4B,EAC5B,EAAA,EAAA,CAAA,CAAA,QAMA,EAAA,EAAA,CAAA,CAAA,IADwC,IAkBxC,EAAA,EAAA,CAAA,CAAA,IAAuD,IACvD,CAb6C,CAa7C,EAAA,CAAA,CAAmD,QACnD,EAAA,EAkBmB,CAAA,CAAA,QAGnB,EAAA,EAA0D,CAAA,CAAA,GAHvC,KA8DnB,SA3D0D,AA2DjD,EACP,CAAiB,CACjB,CAAa,CACb,CAAa,EAEb,KALqB,EAKd,AAAC,IACN,EAAM,GAD8B,AAC/B,AAAI,CAAC,CAD4B,CACrB,CADuB,AAEtC,EADa,CACV,CAAU,CACb,GAAI,EAAY,CAAE,CAAC,EAAA,GAAN,CAAC,CAAC,UAAmB,CAAC,CAAE,CAAS,CAAE,CAAC,AAAE,CAAD,AAAC,CAAE,CAAC,AACvD,CACH,AADI,CAAC,AACJ,AACH,CAAC,AADG,AAGJ,AALoD,SAK3C,EACP,CAAmB,CACnB,CAAa,CACb,CAAa,EAEb,OAAO,AAAC,IACN,EAAM,EANuB,CAKO,AAC/B,EADiC,CAC1B,CAD4B,AAC3B,CAAC,IAAI,CAAC,GAAG,EAAE,CAAG,CAAA,CAAK,CAAC,AAAG,IAAI,AAAE,CACxC,GAAG,CAAU,CACb,GAAI,EAAY,CAAE,CAAC,EAAA,GAAN,CAAC,CAAC,UAAmB,CAAC,CAAE,CAAS,CAAE,CAAC,AAAE,CAAD,AAAC,CAAE,CAAC,AACvD,CAAC,AACJ,CADK,AACJ,AACH,CADI,AAFgD,AAGnD,AAED,IAAM,EAA8B,CAClC,KAAK,AAAE,IAAM,AAAF,KAAO,AAAE,IAAM,AAAF,KAAO,AAAE,CADF,EACK,AAAE,IAAI,AAAE,GAAK,AAAF,IAAM,AAAE,CAAC,CAAE,GAAG,CAAE,CAAC,CAAE,GAAG,CAAE,EAAE,CAE3E,AADC,CAAC,MACW,UAA+B,EAAA,UAAR,SAAyD,CAM3F,YAAY,EAAuC,CAAA,CAAE,CAAA,CACnD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAAC,AAEQ,GAHoC,CAAC,CAAC,mBAGd,EAAA,CAC/B,IAAI,CAAC,eAAe,CAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAC/C,EAAA,0CAA0C,CAC1C,CAAE,MAAM,CAAE,CAAE,wBAAwB,CAAE,CAA2B,CAAE,CAAE,CACtE,CAAC,AACF,IAAI,CAAC,aAAa,CAAG,GAF8C,CAE1C,CAAC,KAAK,CAAC,aAAa,CAC3C,EAAA,qCAAqC,CACtC,CAAC,AACF,IAAI,CAAC,iBAAiB,CAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAC/C,EAAA,yCAAyC,CAC1C,CAAC,AACF,IAAI,CAAC,gBAAgB,CAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAChD,EAAA,iCAAiC,CACjC,CAAE,MAAM,CAAE,CAAE,wBAAwB,CAAE,CAA2B,CAAE,CAAE,CAEzE,AADG,CAAC,AACH,AAES,IAAI,EAAA,CACZ,IAAM,EAAU,AAAC,IACX,CADO,EACP,EAAA,AAN6D,IAKrB,EAAE,EAAE,CAC5C,AAAS,EAAC,GAAe,KAAK,EAAE,GAAT,MAAkB,CAAC,QAAQ,CAAC,EAAE,AACvD,IAAI,CAAC,OAAO,CAAC,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAE,UAAU,CAAC,CAAC,AAEtD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,GAAe,KAAK,EAAE,GAAT,MAAkB,CAAC,QAAQ,CAAC,EAAE,AACvD,IAAI,CAAC,OAAO,CAAC,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAE,UAAU,CAE1D,AAF2D,CAE1D,AAF2D,CAE1D,AAsBF,OApBe,AAoBR,IApBY,EAoBN,AApBM,CAoBL,kCApBwC,CACpD,SAAS,CACT,CAAC,YAAY,CAAC,CACd,AAAC,IACC,EAAQ,GACR,EADO,EACH,AAFwB,CAEvB,CAFyB,EAAE,EACX,AACX,CADY,AAEpB,CAFqB,EAEN,KAAK,EAAE,GAAT,MAAkB,CAC/B,UAAU,CACV,IAAI,CAAC,iBAAiB,EAAE,CACzB,CAAC,AACF,IAAI,CAAC,KAAK,CACR,GAAe,KAAK,EAAE,GAAT,MAAkB,CAC/B,UAAU,CACV,IAAI,CAAC,iBAAiB,EAAE,CACzB,CAAC,AAEK,GAET,EAGJ,CAAC,AAEO,IALG,CACR,CAAC,CAHsB,CAAC,SAOF,EAAA,CACvB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAQ,AAAD,CADc,EAEZ,KADkC,EAAE,EAGzC,AAH2C,AAC7B,GAEX,CAA2C,EAE9C,EAJsB,EAIhB,EAAwB,EAAS,KAAK,CAAN,AAAO,CAA5B,GAAgC,CAAE,GAcnD,CAduD,CAAC,CAAC,GAErD,GAAA,EAAA,SAAA,AAAS,EAAC,EAAY,GAAG,CAAC,EAAE,AAC9B,EAAgB,CADO,MACA,CAAC,EAAa,GAAtB,EAA2B,CAAC,CAAC,AAG9C,EAHqC,AAGrB,KAAK,CACnB,EACA,KAFa,AAER,CACL,EAAgB,CAFL,YAEI,OAAqB,EAAE,CACvC,CAED,AAFE,EAEc,aAAD,UAAwB,CAAC,GAEjC,CACT,CAEJ,AAFK,CAAC,AAEL,AAEO,KAPiD,CAAC,CAAC,CAEnC,CAAC,cAKM,CAAC,CAA2B,CAAA,CACrD,CAAQ,CAAC,EAAA,mBAAmB,CAAC,EAAE,CAG/B,EAAS,IAH6B,EAG9B,AAAO,EAAE,OAAO,EAAE,AAC5B,EAAS,EAAE,CACT,EAAS,CADH,KACE,AAAO,CAAC,OAAO,CACvB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5C,CAAC,AAGJ,CAAQ,CAAC,EAAA,mBAAmB,CAAC,EAAG,EAClC,CAAC,AAEO,CAH8B,CAAC,yBAGJ,CACjC,CAA4C,CAAA,CAE5C,GAAM,CAAC,EAAS,EAAK,CAAG,CAAJ,CAAN,AAAgB,GAAD,IAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CACvD,AADwD,IACpD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAM,GAAD,IAAQ,CAAC,QAAQ,CAAG,IAAM,AAAF,CACvD,CAAC,EAAA,qBAAqB,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,6BAA6B,CAAC,CAAE,CAAA,EAAG,EAAM,GAAD,IAAQ,CAAC,OAAO,CAAA,CAAE,CAC3D,CAAC,EAAA,mBAAmB,CAAC,CAAE,EACvB,CAAC,EAAA,EAD6B,cACb,CAAC,CAAE,MAAM,CAAC,QAAQ,CAAC,EAAM,EAAF,AAAI,CAAC,CAC9C,CACH,AADI,CACH,AAEO,AAHH,iBAGoB,EAAA,CACvB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAQ,AAAD,CADc,EAEZ,KADkC,EAAE,EAAE,AAC7B,AAEd,GAAG,CAA2C,EAE9C,EAJsB,EAIhB,EAAwB,EAAS,KAAK,CAAN,AAAO,CAA5B,GAAgC,CAAE,GA+BnD,CA/BuD,CAAC,CAAC,GAErD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAY,SAAS,AAAV,CAAW,EAAE,AACpC,EAAgB,OAAO,CAAC,EAAa,GAAtB,MAAoB,EAAa,CAAC,CAAC,AAEpD,EAAgB,KAAK,CACnB,EACA,KAFa,IACF,EACA,CACX,EAAgB,aAAD,KAAmB,EAAE,CACrC,CAAC,AAEE,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAY,IAAI,CAAC,EAAE,AAC/B,EAAgB,AADO,OACA,CAAC,EAAa,GAAtB,GAA4B,CAAC,CAAC,AAE/C,CAFqC,CAErB,KAAK,CACnB,EACA,KAFa,CAEP,CACN,EAAgB,AAFL,aAEI,AAAc,EAAE,CAChC,CAAC,AAEE,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAY,SAAD,EAAY,CAAC,EAAE,AACtC,EAAgB,OAAO,CAAC,EAAa,GAAtB,MAAoB,IAAe,CAAC,CAAC,AAEtD,EAAgB,KAAK,CACnB,EACA,KAFa,IACF,IACE,CACb,EAAgB,aAAD,eAA6B,EAAE,CAC/C,CAAC,AAEF,EAAgB,aAAD,UAAwB,CAAC,GAEjC,CACT,CAAC,AAEL,CAFM,AAEL,AAEO,KAPiD,CAAC,CAAC,CAEnC,CAAC,WAKG,EAAA,CAC1B,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADwB,EAAE,EAAE,AACnB,AAEd,GAFiB,AAEd,CAAiC,EAEpC,IAAM,EAAS,CAAI,CAAC,CAAC,CAAT,AAAU,CAqBtB,AArBuB,OACnB,GAAQ,GAAF,QAAa,EAAE,CACnB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAO,IAAD,OAAY,CAAC,EAAE,AACjC,EAAgB,OAAO,CAAC,EAAQ,GAAjB,CAAe,SAAe,CAAC,CAAC,AAEjD,EAAgB,KAAK,CACnB,EACA,IADM,CADO,QAEA,CACb,EAAgB,aAAD,eAA6B,EAAE,CAC/C,CAAC,CAEA,GAAQ,GAAF,MAAW,EAAE,CACjB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAO,IAAD,KAAU,CAAC,EAAE,AAC/B,EAAgB,OAAO,CAAC,EAAQ,GAAjB,CAAe,OAAa,CAAC,CAAC,AAE/C,EAAgB,KAAK,CACnB,EACA,IADM,CADO,MAEF,CACX,EAAgB,aAAD,aAA2B,EAAE,CAC7C,CAAC,CAEG,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAC7B,CAEJ,AAFK,CAEJ,AAEO,AAJF,EADiC,CAAC,CAAC,wBAKL,EAAA,CAClC,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADyC,EAAE,EAClC,AADoC,AAGlD,GAAG,CAAoC,EAEvC,IAAM,CAJmB,CAIT,CAAI,CAAC,CAAC,CAAC,CAAV,AAAW,AAClB,EAA6B,EAAA,WAAW,CAAC,CAAxB,MAA+B,CACpD,EAAA,YAAY,CACZ,EAAQ,KAAD,EAAQ,CAAC,OAAO,CACvB,EAAA,mBAAmB,CACpB,CAAC,AACI,EAAO,EAAH,AAAmB,aAAD,KAAmB,CAAC,CAC9C,KAAK,CAAE,EAAQ,KAAD,AAAM,CACpB,OAAO,CAAE,EAAQ,KAAD,EAAQ,CACxB,aAAa,CAAE,EAAA,sCAAsC,CACrD,GAAG,CAAE,EACL,UAAU,CAAE,CACV,CAAC,EAFmB,AAEnB,uCAAuC,CAAC,CAAE,MAAM,CAC/C,EAAQ,KAAD,IAAU,CAClB,CACF,CACF,CAAC,CAAC,AAEG,EAAwC,CAC5C,EACE,EAAgB,OAFA,MAED,GAAiB,CAChC,GAFsB,CAElB,CAAC,GAAG,EAAE,CACV,CACE,CAAC,EAAA,qBAAqB,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,6BAA6B,CAAC,CAAE,SAAS,CAC1C,CAAC,EAAA,+BAA+B,CAAC,CAAE,EAAQ,KAAD,AAAM,CAChD,CAAC,EAAA,uCAAuC,CAAC,CAAE,MAAM,CAC/C,EAAQ,KAAD,IAAU,CAClB,CACF,CACF,CACD,EAAe,EAAgB,UAAjB,GAAgB,IAAkB,CAAE,CAAC,CAAE,CACnD,CAAC,EAAA,qBAAqB,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,6BAA6B,CAAC,CAAE,SAAS,CAC1C,CAAC,EAAA,+BAA+B,CAAC,CAAE,EAAQ,KAAD,AAAM,CAChD,CAAC,EAAA,uCAAuC,CAAC,CAAE,MAAM,CAC/C,EAAQ,KAAD,IAAU,CAClB,CACF,CAAC,CACH,CAAC,AAEI,EAAqB,EAAA,OAAO,CAAC,IAAI,CACrC,CADsB,CACtB,KAAK,CAAC,OAAO,CAAC,EAAmB,GACjC,CADqC,CAAC,CACnC,CACM,CADJ,CACc,KAAK,CAAC,AAFM,AAEb,IAAW,CAAE,IAAI,AAGrC,CAHsC,CAAC,KAGhC,EAAgB,aAAD,KAAmB,CACvC,CAAC,EAAK,CACN,CADK,CAEL,EAEJ,CAAC,AAEL,CAFM,AAEL,AAEO,QAPc,MACI,CACnB,CAAC,UAK0B,EAAA,CAChC,OAAO,AAAC,IACN,IAD8C,AACxC,EAD0C,AACxB,EAD0B,EACtB,CAAC,AAC7B,OAAO,CADc,QAGnB,AAFc,GAEX,CAAkC,EAErC,GAJuB,CAIjB,EAAU,CAAI,CAAC,CAAC,CAAC,CAAC,AAElB,AAFO,EAES,EAAgB,SAAnB,IAAkB,KAAmB,CAAC,CACvD,KAAK,CAAE,EAAQ,KAAD,AAAM,CAAC,KAAK,CAC1B,OAAO,MAAE,EACT,OADkB,MACL,CAAE,EAAA,sCAAsC,CACrD,GAAG,CAAE,EAAA,YAAY,CACjB,UAAU,CAAE,CACV,CAAC,EAAA,kCAAkC,CAAC,CAAE,EAAQ,KAAD,AAAM,CAAC,QAAQ,CAAC,MAAM,CACnE,CAAC,EAAA,uCAAuC,CAAC,CAAE,MAAM,CAC/C,EAAQ,KAAD,AAAM,CAAC,SAAS,CACxB,CACF,CACF,CAAC,CAAC,AACH,OAAO,EAAA,OAAO,CAAC,IAAI,CACjB,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAChC,GAAG,EAAE,AACH,IAAM,CAFqC,CAEzB,AAF0B,IAEtB,CAAC,EAAR,CAAW,EAAE,CAAC,AACvB,EAAgB,EAAE,CAAb,AAAc,AACnB,EAAwC,CAC5C,EACE,EAAgB,OAFA,GACJ,GACG,IAAkB,CACjC,EAAQ,KAAD,AAAM,CAAC,QAAQ,CAAC,MAAM,CAC7B,CACE,CAAC,EAAA,qBAAqB,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,6BAA6B,CAAC,CAAE,SAAS,CAC1C,CAAC,EAAA,+BAA+B,CAAC,CAAE,EAAQ,KAAD,AAAM,CAAC,KAAK,CACtD,CAAC,EAAA,uCAAuC,CAAC,CAAE,MAAM,CAC/C,EAAQ,KAAD,AAAM,CAAC,SAAS,CACxB,CACF,CACF,CACF,CAAC,AACF,EAAQ,KAAD,AAAM,CAAC,QAAQ,CAAC,OAAO,CAAA,AAAC,IAC7B,GADoC,CAAC,AASjC,EATmC,AACjC,EAA6B,EAAA,MAQD,CAAC,IARW,CAAC,CAAxB,MAA+B,CACpD,EAAA,YAAY,CACZ,EAAQ,KAAD,EAAQ,CACf,EAAA,mBAAmB,CACpB,CACK,AADJ,EACkB,EAAA,KAAK,CACtB,CADc,MACP,CAAC,IACP,WAAW,EAAE,AADW,CACV,AAEd,AAHyB,IAI3B,EAAe,CACb,IAFW,EAAE,CAEN,CAAE,CADC,EAEX,CAAC,AAEJ,EAAM,GAAD,CAAK,CAHc,AAItB,EAAgB,aAAD,KAAmB,CAAC,CACjC,KAAK,CAAE,EAAQ,KAAK,AAAN,CAAO,KAAK,SAC1B,EACA,KADO,QACM,CAAE,EAAA,sCAAsC,CACrD,IAAI,CAAE,EACN,UADkB,AACR,CAAE,CACV,CAAC,EAAA,uCAAuC,CAAC,CAAE,MAAM,CAC/C,EAAQ,KAAD,AAAM,CAAC,SAAS,CACxB,CACF,CACF,CAAC,CACH,CAAC,AACF,EAAe,IAAI,CACjB,EACE,EAAgB,GAFN,UAEK,GAAiB,CAChC,EACA,CAHsB,AAIpB,CAAC,EAAA,GAFM,kBAEe,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,6BAA6B,CAAC,CAAE,SAAS,CAC1C,CAAC,EAAA,+BAA+B,CAAC,CAAE,EAAQ,KAAD,AAAM,CAAC,KAAK,CACtD,CAAC,EAAA,uCAAuC,CAAC,CAAE,MAAM,CAC/C,EAAQ,KAAD,AAAM,CAAC,SAAS,CACxB,CACF,CACF,CAEL,AADG,CAAC,AACH,CAAC,CAAC,AACH,IAAM,EAAqC,EAAU,KAAK,CAAN,AAClD,IAAI,CACJ,GAGF,CALyB,AAEnB,CACL,CAAC,IACF,EAAM,GAAD,IAAQ,CAAC,GACP,EAAgB,QADI,CAAC,CAAC,GACP,KAAmB,CACvC,EACA,EACA,CAFK,CAIT,CAAC,CACF,AACH,CADI,AACH,AACH,CADI,AACH,AACH,CADI,AACH,AAEO,KATkB,OACK,CACpB,CAAC,cAOwB,EAAA,CAClC,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADgC,EAAE,EAGvC,AAHyC,AAC3B,GAEX,CAAyC,EAE5C,IAAM,CAJmB,CAID,EAAgB,MAAM,CAAC,IAA1B,EAAkB,GAAiB,CAAC,aAAa,CAAC,CAAC,AAElE,EAAqB,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,GAAxB,AAsFxB,CAtFoD,CAAC,CAAC,IAEtD,EACG,IAAI,CAAC,AAAC,IACL,IAAM,EAAe,CAFP,AACuB,CACJ,CADM,EAAE,CACJ,CAAC,AACtC,EAAY,CADM,CAAc,EAChB,CAAG,IAAR,KAET,AAF0B,GAEvB,CAF2B,AAEvB,EAEP,OAAO,EAAA,OAAO,CAAC,IAAI,CACjB,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAChC,GAAG,CACe,AACT,CAFJ,CAC6B,KAClB,CAH+B,CAAC,MAEf,AAAc,EAAE,CAAC,GACjC,KAAK,CAAC,GADuC,CAAC,AACpC,CADqC,AACnC,GAAM,CAAF,CAAC,GAAM,CAAA,AAAC,GAAG,CAMxC,AANyC,EAAE,IAC3C,EAAgB,SAAS,CAAC,CACxB,EADa,EACT,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,GAAG,AAAE,OAAO,CACtB,CAAC,CAAC,AACH,EAAgB,aAAD,EAAgB,CAAC,GAAG,AAC7B,CACR,AAFsC,CAErC,AAFsC,CAC5B,AACT,CADU,AACT,AAGT,CAAC,CAAC,AAEF,IAAM,EAAoB,EAAY,SAAD,AAAU,CAC/C,AADgD,EACpC,CADW,QACF,AAAV,CAAa,SAAS,AAE/B,GAAG,CAAI,EAEP,GAJwC,IAIjC,EAAA,OAAO,CAAC,IAAI,CACjB,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAChC,GAAG,CAEC,AACK,CAHJ,CAEe,KACJ,CAJ+B,CAAC,MAG7B,KAAmB,EAAE,CAAC,GACxB,KAAK,CAAC,IAAI,CAAE,GAAM,AADuB,CACzB,AAD0B,CACzB,AAD0B,GACpB,CAAA,AAAC,GAAG,CAMxC,AANyC,EAAE,IAC3C,EAAgB,SAAS,CAAC,CACxB,EADa,EACT,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,GAAG,AAAE,OAAO,CACtB,CAAC,CAAC,AACH,EAAgB,aAAD,EAAgB,CAAC,GAAG,AAC7B,CACR,AAFsC,CAAC,AAEtC,CADU,AACT,CADU,AACT,AAGT,CAAC,CAAC,AAEF,IAAM,EAAiB,EAAY,MAAM,AACzC,CAD0C,EAAR,AACtB,CADQ,KACF,CAAG,CAAV,QAAmB,AAE5B,GAAG,CAAI,EAF2B,AAIlC,IAAM,EAAsB,EACzB,KAAK,CAAC,IAAI,CAAE,CAD2B,EAEvC,CADgB,AADM,CACL,EACb,CAAC,GAAG,EAAE,AACT,EAAgB,SAAS,CAAC,CAAE,EAAb,EAAiB,CAAE,EAAA,cAAc,CAAC,EAAE,CAAE,CAAC,AACxD,CADyD,AACxD,CAAC,CAAC,AACL,OAAO,EAAgB,aAAD,KAAmB,CACvC,CAAC,EAAgB,CACjB,EAAE,CACF,EAEJ,CAAC,CAED,AAFE,IAEI,CANc,CAME,EAAY,KAAK,CAAC,AACxC,CALuB,CAKX,AAJT,CAGgB,AAAc,AAH7B,IAIa,CAAG,GAAT,MAAkB,AAE3B,GAAG,CAAI,CAFyB,CAIhC,IAAM,EAAqB,EAAc,KAAK,CAAC,IAAI,CAAX,AAAa,GACrD,AADwB,CAAiC,CAAC,CAAC,IACpD,EAAgB,aAAD,KAAmB,CACvC,CAAC,EAAgB,CACjB,EAAE,CACF,EAEJ,CAAC,AACH,CADI,AACH,CAAC,CACD,GANqB,EAMhB,CAAA,AAAC,GAAG,CAAC,AACT,EADW,AACK,AALM,CACnB,CAAC,OAIqB,CAAC,CACxB,EADa,EACT,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,GAAG,AAAE,OAAO,CACtB,CAAC,CACF,AADG,EACa,aAAD,EAAgB,CAAC,GAAG,AACnC,CADoC,CAAC,AACrB,GAAG,EAAE,AACvB,CADwB,AACvB,CAAC,CAAC,AAEE,CACT,CAEJ,AAFK,CAAC,AAEL,AAEO,EARiB,aAGM,CAAC,EAKN,EAAA,CACxB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AACL,CAFmB,EAIZ,KAF2D,EAClE,EAGE,AAHA,AACc,GAEX,CAAuC,EAG1C,GALuB,CAKjB,EAAW,AADH,CAAI,CAAC,CAAC,CAAC,CAAC,AACA,AAAC,CAAT,YAAsB,EAAI,EAAE,CAAC,AAErC,EAAgB,EAAE,CAAC,AAAd,AACL,EAAwC,EAAE,CAAC,AAEjD,EAAS,MAAD,CAAQ,AAFI,CAEJ,AAAC,IACf,EAAa,MADc,CAAC,CACP,CAAC,AADQ,CAClB,MAAiB,CAAA,AAAC,IAC5B,EAAM,CAD6B,CAAC,CAC/B,CADiC,AAC5B,CACR,EAAgB,aAAD,KAAmB,CAAC,EAAa,KAAK,CAAE,IAEzD,AAFiD,EAElC,CAFiD,CAAC,CAChE,CAAC,AACiB,CACjB,EAAe,EAAgB,GADnB,OACE,GAAgB,AAAc,CAAE,CAAC,CAAE,CAC/C,CAAC,EAAA,qBAAqB,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,6BAA6B,CAAC,CAAE,MAAM,CACvC,CAAC,EAAA,+BAA+B,CAAC,CAAE,EAAa,KAAK,CACrD,IAD+C,IACrB,IAAtB,EAAQ,GAAuB,EAAxB,IAAU,CACjB,CACE,CAAC,EAAA,uCAAuC,CAAC,CAAE,MAAM,CAC/C,EAAQ,KAAD,IAAU,CAClB,CACF,CACD,CAAA,CAAE,CAAC,AACR,CAAC,CAEN,AADG,CACF,AADG,CACF,AACJ,CADK,AACJ,CAAC,CAAC,AACH,IAAM,EAA4C,EAAS,KAAK,CAAN,AACxD,IADkB,AACd,CACJ,GAEF,CAFM,CACL,CAAC,IACK,EAAgB,aAAD,KAAmB,CACvC,EACA,EACA,CAFK,CAIT,CAAC,AAEL,CAFM,AAEL,AAEO,QAPc,EACA,CACf,CAAC,CAKa,EAAA,CACnB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADuD,EAAE,EAAE,AAClD,AAEd,GAAG,CAFe,AAEmB,EAErC,IAAM,EAAS,CAAI,CAAC,CAAC,CAAT,AAAU,CAAC,AACjB,EAAgB,EAAO,CAAlB,GAAiB,IAAS,CAAC,GAAG,CAAA,AAAC,GACjC,EAAgB,EADwB,CAAC,EAAE,QAC5B,KAAmB,CAAC,EAAO,IAAD,CAAM,CAAE,IAGpD,EAAwC,CAHmB,CAGZ,AAHa,CAAC,GAGf,IAAS,CAAC,CAA1C,EAA6C,CAAA,AAAC,CAAC,CAAC,CAAE,EACrD,EAAgB,UAAjB,GAAgB,AAAc,CAAE,CAAC,CAAE,CAC/C,CAAC,EAAA,qBAAqB,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,6BAA6B,CAAC,CAAE,MAAM,CACvC,CAAC,EAAA,+BAA+B,CAAC,CAAE,EAAO,IAAD,CAAM,CAC/C,QAAoB,IAAhB,CAAC,CAAC,GAAuB,MAAd,CACX,CACE,CAAC,EAAA,uCAAuC,CAAC,CAAE,MAAM,CAC/C,CAAC,CAAC,SAAS,CACZ,CACF,CACD,CAAA,CAAE,CAAC,AACR,CAAC,CACH,CAAC,AACI,EAA4C,EAAS,KAAK,CAC9D,AADwD,IACpD,AADc,CAElB,GAEF,CAFM,CACL,CAAC,IACK,EAAgB,aAAD,KAAmB,CACvC,EACA,EACA,CAFK,CAIT,CAAC,AAEL,CAFM,AAEL,AAEO,QAPc,EACA,CACf,CAAC,MAKkB,CACxB,CAAa,CACb,CAAqC,CACrC,CAAuB,CAAA,CAEvB,OAAO,OAAO,CAAC,OAAO,CAAC,GACpB,IAAI,CAAA,AAAC,GAD0B,CAAC,AAE/B,EAAe,AADL,CAAC,EAAE,IACS,CAAA,AAAC,CAAC,CAAC,CAAG,CAAC,AAAf,EAAiB,CAAC,CAAC,AAC1B,IAER,EAFc,CAAC,EAEV,CAAA,AAAC,IAEL,EAFW,CAAC,CACR,CADU,CAEV,EAAoB,EAAA,KAAX,CADuB,CAAC,eAqBrC,AApB8C,CAAC,KACzB,QAAQ,EAA1B,OAAO,GAAkC,AAAX,GAAjB,GAAuB,GAAc,EACpD,AADsD,EACvC,EAEG,IAFG,CAAC,GAAV,AAEc,EAA1B,OAAO,GACP,GADa,GACP,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAQ,IAAF,KAAW,CAAC,EACvD,CACA,EAAe,EAAO,IAAD,GAAQ,CAAjB,AAAkB,AAC9B,EAAY,EAAO,IAAD,CAAT,MAAqB,CAAC,IAAI,CAAC,CAEtC,EAAe,OAAO,CAAA,AAAC,CAAC,CAAC,CAAE,CAAb,AAAe,CAAC,IAE9B,EAAM,GAAD,AAFkC,CAAC,CAAC,CAAC,CAE7B,CAAA,AAAC,IAAI,AAChB,CADiB,CACZ,CADc,CACf,UAAa,CAAC,EAAA,eAAe,CAAE,GACnC,EAAK,EAAD,EADwC,CAAC,CAAC,GAChC,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EACV,CAAC,AACJ,CADK,AACJ,CAAC,CAAC,AAEG,CACR,CAAC,CAAC,CACD,EAN0B,AAIb,CAAC,IAEP,CAAC,GAAG,EAAE,AACZ,EAAM,GAAD,IAAQ,CAAA,AAAC,GAAO,CAAH,CAAS,AAAR,EAAO,CAAI,EAAE,CAAC,AACnC,CADoC,AACnC,CAAC,AACN,CADO,AACN,AAEO,kBAAkB,CAAC,OACzB,CAAK,CACL,SAAO,eACP,CAAa,KACb,CAAG,MACH,CAAI,YACJ,CAAU,CACU,CAAA,CACpB,IAAM,EACJ,IAAkB,EAAA,KADD,EACJ,+BAA2C,CACpD,MAAM,CACN,AADO,EAGP,EAAO,EAAH,EAAO,CAAC,IAFC,CAAC,CAEI,AAFH,CAEI,SAAS,CAChC,CAAA,EAAG,AAJqC,EAIxB,CAAA,EAAI,EAAK,CAAE,CAC3B,CADyB,AAEvB,GAFc,CAEV,CACF,IAAkB,EAAA,OANuC,AAM5C,+BAA2C,CACpD,EAAA,QAAQ,CAAC,MAAM,CACf,EAAA,QAAQ,CAAC,QAAQ,CACvB,UAAU,CAAE,CACV,GAAG,CAAU,CACb,CAAC,EAAA,qBAAqB,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,+BAA+B,CAAC,CAAE,EACnC,CAAC,EAAA,AADuC,6BACV,CAAC,CAAE,EACjC,CAAC,EAAA,QAD6C,qBAChB,CAAC,CAAE,EACjC,CAAC,EAAA,QAD6C,wBACb,CAAC,CAAE,GAAS,GAAG,CAAL,AACvC,MAAM,CAAC,EAAQ,GAAG,CAAC,CAAL,KACd,EACJ,CAAC,EAAA,IADY,kCAC0B,CAAC,GACtC,GAAS,GAAG,CAAL,CAA2B,AAAlB,IAAsB,CAAC,CAAC,CAAC,AAAlB,EAAC,EAAqB,CAAC,CAAC,CAAlB,OAAmB,EAClD,CAAC,EAAA,IAD0D,uBAC/B,CAAC,CAAE,GAAS,IAAF,EAAQ,CAC/C,CACD,KAAK,CAAE,EAAO,CAAC,CAAJ,CAAC,AAAQ,CAAP,AAAQ,AAAE,CAAJ,AAAG,CAAG,CAC1B,CACD,GAAG,AAGC,CAFL,CAAC,YAEM,CAAY,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAWzC,AAX0C,OACtC,GAAgB,GAClB,CAAA,EAAA,CADyB,CACzB,CADc,AAAa,qBAC3B,AAAsB,EACpB,GAAG,CAAG,CAAD,CAAc,EAAM,EAAF,KAAI,CAAT,IAAc,KAAE,CAAO,CAAE,CAAC,CAAA,AAC5C,CAAC,CAAC,CADuC,CACrC,AACE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAE,CAAC,CAAC,AAClD,CAAC,AADkD,EAEnD,GAIG,CAJC,AAKV,CAJK,AAIJ,AAEO,CANF,CAGO,CAAC,eAGY,CAAC,CAAa,CAAE,CAAgB,CAAA,CACxD,IAAM,EAAO,EAAH,EAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA,KAAA,EAAQ,EAAK,CAAE,CAAE,CAAJ,AAC9C,IAAI,CAAE,EAAA,QAAQ,CAAC,QAAQ,CACvB,UAAU,CAAE,CACV,CAAC,EAAA,qBAAqB,CAAC,CAAE,EAAA,4BAA4B,CACrD,CAAC,EAAA,+BAA+B,CAAC,CAAE,EACnC,CAAC,EAAA,AADuC,gCACP,CAAC,CAAE,EAAQ,GAAG,CAC3C,CADuC,KACjC,CAAC,EAAQ,GAAG,CAAC,CAAL,KACd,EACJ,CAAC,EAAA,IADY,kCAC0B,CAAC,GACtC,EAAQ,GAAG,EAAJ,AAA0B,IAAI,CAAC,CAAC,CAAC,AAAzB,EAAQ,EAAqB,CAAC,CAAC,CAAlB,AAAN,OAAyB,EACjD,CAAC,EAAA,IADyD,mCAClB,CAAC,MACjB,IAAtB,EAAQ,GAAuB,EAAxB,IAAU,CACb,MAAM,CAAC,EAAQ,KAAD,IAAU,CAAC,MACzB,EACN,CAAC,EAAA,IADc,yBACe,CAAC,CAAE,MAAM,CACvC,CAAC,EAAA,6BAA6B,CAAC,CAAE,EAAA,mCAAmC,CACrE,CACF,CAAC,CAAC,AAEH,EAAQ,KAAD,EAAQ,CAAG,EAAQ,KAAD,EAAQ,EAAI,CAAA,CAAE,CACvC,AADwC,EACxC,WAAW,CAAC,MAAM,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,AAAU,KAAD,EAAQ,CAAC,CAAC,AAE3E,GAAM,cAAE,CAAY,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAWzC,AAX0C,OACtC,GACF,CAAA,EAAA,EAAA,IADc,EAAE,gBAChB,AAAsB,EACpB,GAAG,CAAG,CAAD,CAAc,EAAM,EAAF,KAAI,CAAT,IAAc,KAAE,CAAO,CAAE,CAAC,CAAA,AAC5C,CAAC,CAAC,CADuC,CACrC,AACE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAE,CAAC,CAAC,AAClD,CADmD,AAClD,EACD,GAIG,CAJC,AAKV,CAJK,AAIJ,CAJK,AAKP,AAzpBD,CAupBe,CAvpBf,AAupBgB,sBAvpBhB,CAAA,uBAypBC,QC/yBE,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA2D,GAAlD,OAAA,cAAA,CAAA,EAAA,yBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,sBAAsB,CAAA,GAAA,2HCXzB,EAAmB,OAAO,CAEnB,EAAkB8T,EAAAA,EAFzB,SAEO,WAAwC,CACnD,EACA,IACE,IAAIoJ,EAAAA,IAFU,kBAEY,CAAC,CACzB,YAAY,CAAC,CAAI,EAAE,AACjBjB,EAAAA,eAAe,CAAC,EAAM,EAAF,0BAA8B,CAAC,AACrD,CAAC,CACD,YAAY,CAAC,CAAI,EACfA,AADiB,EACjBA,eAAe,CAAC,EAAM,EAAF,0BAA8B,CACpD,AADqD,CACpD,AACP,CAAK,CAAC,EAyBO,EAAmBjc,EAAAA,YAAnB,KAAoC,CAAC,AAtBvB,KAClB,CADwB,AAE7B,IAAI,CAAE,EACN,IAmB+D,KAnBtD,GAAG,AACV,EAFoB,CAGtB,CAAC,CACL,CAAG,SAFkB,EAAE,+DCVpB,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,6CAA6C,CAAC,+BCJvE,OAAA,cAAA,CAAA,EAAA,aAAA,gDAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA6C,EAC7C,EAAA,EAAA,CAAA,CAAA,QAMA,EAAA,EAA0D,CAAA,CAAA,IAFlB,GAIxC,OAAa,GAF6C,OAEV,EAAA,cAAR,KAA2B,CACjE,YAAY,EAAgC,CAAA,CAAE,CAAA,CAC5C,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAAC,AAED,GAH6C,CAGzC,AAH0C,CAAC,CAG3C,CACF,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,cAAc,CACd,CAAC,UAAU,CAAC,CAAA,AACZ,IAIE,IAAM,EAAgB,GAJX,CAAC,EAAE,KAIK,AAGjB,IAAM,EAAe,EAAc,KAAK,CAAC,EAAvB,EAA2B,CAAE,AAAb,SAAsB,CAAC,CACzD,AAD0D,OACnD,WACL,IAAM,EAAoB,CAAC,GAAG,SAAS,CAAC,CAAC,AAEnC,AAFiB,EAEF,EAAkB,GAAG,EAAE,CAAC,AACvC,EACoB,AAFR,OAAoB,GAEF,EAAlC,KADuB,EAChB,EACH,EAAA,OAAO,CADQ,AACP,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAC/B,EAEN,OAHiD,AAEjD,CAFkD,CAEhC,CADA,CAAC,EACG,CAAC,GAChB,EAAa,KADH,AACQ,CAAC,IAAP,AAAW,CAAE,EAClC,CACF,AADG,AAF2C,CAE1C,AACH,AAH8C,CAG7C,AAKF,AARgD,OAOhD,EAAc,GANuC,CAMnC,AANoC,CAMjC,AANkC,EAMpB,IAAtB,AAA0B,CAAC,AACjC,CACT,CAAC,IAFmC,EAGpC,GAEH,AACH,CADI,AACH,CACF,AAN6B,AAlC9B,CAkC+B,CAlC/B,EAoCiB,CAAC,uBApClB,CAAA,2BAwCC,KCnDE,OAAA,QD+CsF,MC/CtF,CAAA,EAAA,aAAA,gDAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA+D,GAAtD,OAAA,cAAA,CAAA,EAAA,6BAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,0BAA0B,CAAA,GAAA,4HCX7B,EAAmB,aAAa,CAAhC,AAEO,EAAwB8T,EAAAA,iBAAxB,KAA8C,CAAC,EAAkB,IAAM,IAAIqJ,EAAAA,IAAZ,sBAAsC,EAAE,AAwBvG,EAAyBnd,EAAAA,iBAAiB,CAtBtB,AAsBpB,AAA2C,KArB/C,CAD8B,AAEnC,IAAI,CAAE,EACN,SAAS,CAmBkE,EAnB/D,AACV,EAFoB,CAGtB,CAAC,AACL,CAAG,gBAFwB,EAAE,qECC1B,OAAA,cAAA,CAAA,EAAA,aAAA,4RAiBU,EAAA,yBAAyB,CAAG,sBAA+B,CAAC,AAW5D,EAAA,0BAA0B,CAAG,uBAAgC,CAAC,AAY9D,EAAA,YAAY,CAAG,SAAkB,CAAC,AAalC,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAY5C,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAWrC,AAXsC,EAWtC,kBAAkB,CAAG,eAAwB,CAW7C,AAX8C,EAW9C,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,4BAA4B,CAAG,SAAkB,CAAC,AASlD,EAAA,uBAAuB,CAAG,SAAkB,CAAC,AAS7C,EAAA,kCAAkC,CAC7C,6BAAsC,CAAC,mCC0B7B,EAtJT,OAAA,SAsJ2B,KAtJ3B,CAAA,EAAA,aAAA,wCAuJD,GADU,EAAA,aACV,KAD4B,GAAlB,CAAkB,CAAlB,kBAAkB,CAAA,CAAA,CAAA,GAC5B,AAMD,cANC,CAAA,eAAgC,CAAA,AAChC,EAAA,eAAA,CAAA,eAAiC,CAAA,AACjC,EAAA,SAAA,CAAA,MAAA,IAAsB,CACtB,AADsB,EACtB,KAAA,CAAA,OAAe,CAAA,AACf,EADA,AACA,SAAA,CAAA,MAAA,KAAuB,CAAA,AACvB,EAAA,OAAA,CAAA,QAAA,CAAmB,CAAA,+BC5JlB,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,wCAAwC,CAAC,gHCHrE,IAAA,EAAA,EAAA,CAAA,CAAA,MAQ4B,EAC5B,EAAA,EAAA,CAAA,CAAA,QASA,EAAA,EAAA,CAAA,CAAA,IADwC,IAUxC,EAAA,EAYmB,CAAA,CAAA,QAEnB,CAf6C,CAe7C,EAAA,CAAA,CAAA,GAFmB,CAaO,IAG1B,EAAA,EAA0D,CAAA,CAAA,QAEpD,EAA+C,CACnD,MAHwD,KAEtC,MACD,CAAE,GACpB,AAGD,CAJyB,AACvB,MAGW,UAA+B,EAAA,UAAR,SAAyD,CACnF,oBAAoB,AAAoB,CACxC,mBAAuC,AAApB,AAI3B,aAAY,EAAuC,CAAA,CAAE,CAAA,CACnD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CAAC,CAAC,AACvE,IAAI,CAAC,2BAA2B,EAAE,AACpC,CADqC,AACpC,AAGO,2BAA2B,EAAA,CACjC,IAAI,CAAC,oBAAoB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EACjD,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CAAC,AACF,IAAI,CAAC,mBAAmB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAChD,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CAAC,AADG,AAGK,SAAS,CAAC,EAAuC,CAAA,CAAE,CAAA,CAC1D,KAAK,CAAC,SAAS,CAAC,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CAAC,AACnD,CADoD,AACnD,AAEQ,wBAAwB,EAAA,CAC/B,IAAI,CAAC,iBAAiB,CAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CACrD,EAAA,kCAAkC,CAClC,CACE,WAAW,CACT,yFAAyF,CAC3F,IAAI,CAAE,cAAc,CACrB,CAEL,AADG,CAAC,AACH,AAOO,aAAa,CAAC,CAAS,CAAE,CAAgB,CAAE,CAAa,CAAA,CAC9D,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAE,CAAE,WAAW,CAAE,QAAQ,AAAE,CAAK,CAAE,CAAC,AAClE,CADmE,AAClE,AAED,CAH+D,GAG3D,EAAA,CACF,GAAM,CACJ,iBAAiB,CAAE,CAAiB,CACpC,mBAAmB,CAAE,CAAmB,CACzC,CAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,AAE7B,gBAAE,CAAc,CAAE,kBAAgB,CAAE,CAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,AACnE,2BACJ,CAAyB,0BACzB,CAAwB,qBACxB,CAAmB,CACpB,CAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,AAC7B,uBAAE,CAAqB,yBAAE,CAAuB,CAAE,CACtD,IAAI,CAAC,2BAA2B,EAAE,CAAC,AAC/B,iBAAE,CAAe,mBAAE,CAAiB,CAAE,CAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,AAE5E,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,SAAS,CACT,CAAC,YAAY,CAAC,MACd,OACA,EADS,AAET,CACE,IAAI,EAFG,AAEH,6BAA6B,CAC/B,wCAAwC,CACxC,CAAC,YAAY,CAAC,CACd,EACA,GAEH,CACF,CACD,IAAI,EAAA,IALmB,IACE,CACpB,0BAGkC,CACrC,SAAS,CACT,CAAC,YAAY,CAAC,MACd,OACA,EADS,AAET,CACE,IAAI,EAFG,AAEH,6BAA6B,CAC/B,gCAAgC,CAChC,CAAC,cAAc,CAAC,CAChB,EACA,GAEF,IAAI,EAAA,UAFiB,CACpB,GAF0B,eAGM,CAC/B,gCAAgC,CAChC,CAAC,YAAY,CAAC,CACd,EACA,GAEF,IAAI,EAAA,UAFiB,CACpB,EAFyB,gBAGO,CAC/B,qCAAqC,CACrC,CAAC,cAAc,CAAC,CAChB,EACA,GAEF,IAAI,EAAA,UAHmB,IACE,CACxB,cACgC,CAC/B,6BAA6B,CAC7B,CAAC,YAAY,CAAC,CACd,EACA,GAEF,IAAI,EAAA,GAHY,IACE,CACjB,qBACgC,CAC/B,yBAAyB,CACzB,CAAC,YAAY,CAAC,CACd,EACA,GAEH,CACF,CACF,AACH,CADI,AACH,AAEO,OARiB,IACE,CAClB,WAMsB,EAAA,CAC7B,MAAO,CACL,iBAAiB,CAAG,AAAD,IAEb,CAAA,EAAA,EAAA,IAF8B,EAAE,EAAE,CAEzB,AAAT,EAAU,EAAc,MAAM,CAAC,EAAE,AACnC,EADyB,EACrB,CAAC,OAAO,CAAC,EAAe,QAAQ,CAAC,CAAC,AAExC,CAF4B,GAExB,CAAC,KAAK,CACR,EACA,QAAQ,CACR,EAFa,EAET,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CACpC,CAAC,AAEE,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,MAAM,CAAC,EAAE,AACnC,EADyB,EACrB,CAAC,OAAO,CAAC,EAAe,QAAQ,CAAC,CAAC,AAExC,CAF4B,GAExB,CAAC,KAAK,CACR,EACA,QAAQ,CACR,EAFa,EAET,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CACpC,CAEG,AAFF,GAEE,EAAA,SAAA,AAAS,EAAC,EAAc,MAAM,CAAC,EAAE,AACnC,EADyB,EACrB,CAAC,OAAO,CAAC,EAAe,QAAQ,CAAC,CAAC,AAExC,CAF4B,GAExB,CAAC,KAAK,CACR,EACA,QAAQ,CACR,EAFa,EAET,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CACpC,CAAC,AAEE,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,EAAE,AACpC,CADyB,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAExC,AAF4B,AAAa,IAErC,CAAC,KAAK,CAAC,EAAe,SAAS,CAAE,CAAb,GAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,AAE5D,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,KAAK,CAAC,EAAE,AAClC,GADyB,CACrB,CAAC,OAAO,CAAC,EAAe,OAAO,CAAC,CAAC,AAEvC,EAF4B,EAExB,CAAC,KAAK,CAAC,EAAe,OAAO,CAAE,GAAX,CAAe,CAAC,eAAe,EAAE,CAAC,CAAC,AAEvD,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,EAAc,OAAO,CAAC,EAClC,AADoC,CAAX,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AAEzC,IAAI,CAAC,KAAK,CAAC,EAAe,SAAS,CAAE,CAAb,GAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC,AACxD,GAET,UAFsB,CAAC,QAEJ,CAAE,AAAC,SACE,IADe,AACjC,EADmC,EAAE,AAEzC,CAD+B,EAAE,CAC7B,CAAC,IADY,CAAuB,EAC5B,CAAC,EAAe,QAAQ,CAAC,CAAC,AACtC,CAD0B,GACtB,CAAC,OAAO,CAAC,EAAe,QAAQ,CAAC,CAAC,AACtC,CAD0B,GACtB,CAAC,OAAO,CAAC,EAAe,QAAQ,CAAC,CAAC,AACtC,CAD0B,GACtB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AACvC,IAAI,CAAC,OAAO,CAAC,EAAe,OAAO,CAAC,CAAC,AACrC,EAD0B,EACtB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AACzC,CAAC,CACF,AACH,CADI,AACH,AAEO,qBAAqB,EAAA,CAC3B,MAAO,CACL,eAAe,CAAE,AAAC,IACZ,CAAA,EAAA,EAAA,IAD8B,EAAE,EAAE,CAClC,AAAS,EAAC,EAAc,OAAO,CAAC,EAAE,AACpC,CADyB,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAC,AAEzC,AAF4B,IAExB,CAAC,KAAK,CACR,EAAc,WAAD,MAAkB,CAAC,SAAS,CACzC,SAAS,CACT,IAAI,CAAC,oBAAoB,EAAE,CAC5B,CAAC,AAEE,GAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,EAClC,AADoC,CAAX,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AAEzC,IAAI,CAAC,KAAK,CACR,EAAc,WAAD,MAAkB,CAAC,SAAS,CACzC,SAAS,CACT,IAAI,CAAC,oBAAoB,EAAE,CAC5B,CAAC,AACK,GAET,UAFsB,CAAC,MAEN,CAAG,AAAD,SACK,IADa,AAC/B,EADiC,EAAE,AAEnC,CAD2B,AAC3B,EAD6B,AAC7B,EAAA,IADa,CAAuB,IACpC,AAAS,EAAC,EAAc,OAAO,CAAC,EAAE,AACpC,CADyB,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AAErC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,EAAE,AACpC,CADyB,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAC,AAE3C,AAF8B,CAE7B,CACF,AACH,CADI,AACH,AAEO,oBAAoB,EAAA,CAC1B,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KAD6B,EAAE,EAAE,AACxB,EACd,IAAM,EAAyB,IADL,AACS,CAAC,QAAQ,CAAC,MAAjB,AAAuB,CAAC,AAC9C,EAAU,EAAS,GAAZ,CAAgB,CAAC,CAAN,GAAU,CAAC,CAAC,AAC9B,EAAwB,IAAI,CAAC,QAAQ,CAAC,KAAjB,CAAuB,CAUlD,AAVmD,OAE/C,IAA2B,EAE7B,EAAgB,aAAD,AAAc,CAFL,AAEM,CAAC,CAAE,CAFiB,CAED,CAFG,QAEM,CAAE,GAAZ,GAAkB,CAAC,CAAC,AAC3D,EAAyB,CAAC,GAAK,IAExC,EAAgB,UAFe,GAEhB,AAAc,CAAC,CAF+B,AAE9B,CAAC,CAF+B,AAE7B,EAAgB,SAAS,CAAE,GAAZ,GAAkB,CAAC,CAAC,AACrE,EAAgB,aAAD,AAAc,CAAC,CAAC,CAAE,EAAgB,SAAS,CAAE,GAAZ,GAAkB,CAAC,CAAC,CAE/D,CACT,CAAC,AAEL,CAFM,AAEL,AAEO,IALY,CAAC,eAKO,EAAA,CAC1B,IAAM,EAAkB,IAAI,CAC5B,AAD6B,OACtB,AAAC,CADa,EAEZ,KAD6B,EAAE,EACE,AAAxB,AADwB,CACsB,EAC5D,IAAM,EAAa,EAAS,CADF,GACM,CAAC,CAAN,AAAX,GAAqB,CAAE,GAIvC,IAJ8C,CAAC,CAAC,CAEhD,EAAgB,aAAD,AAAc,CAAC,CAAC,CAAC,CAAE,EAAgB,SAAS,CAAE,GAAZ,GAAkB,CAAC,CAAC,AACrE,EAAgB,aAAD,AAAc,CAAC,CAAC,CAAE,EAAgB,SAAS,CAAE,GAAZ,GAAkB,CAAC,CAAC,AAC7D,CACT,CAAC,AAEL,CAFM,AAEL,AAEO,OALe,CAAC,mBAKW,EAAA,CACjC,MAAO,CACL,qBAAqB,CAAE,AAAC,IACtB,IAAM,EAAgB,EAAc,CADI,EAAE,EAAE,IACzB,EAAgB,GAAe,CAAC,SAAS,CAAC,AAW7D,MATI,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,QAAQ,CAAC,EAAV,AAAY,AACrC,IAAI,CAAC,OAAO,CAAC,EAAe,UAAU,CAAZ,AAAa,CAAC,AAG1C,IAAI,CAAC,KAAK,CACR,EACA,UAAU,CACV,AAFa,IAET,CAAC,4BAA4B,EAAE,CACpC,CACM,AADL,CAEJ,CAAC,CACD,UAFsB,CAAC,YAEA,CAAE,AAAC,SACF,IADqB,AACvC,EADyC,CAG7C,CAH+C,CAChB,EAAE,AAE7B,CAAC,KAFY,CAAuB,CAE5B,CAAC,EAAc,WAAD,GAAe,CAAC,SAAS,CAAE,UAAU,CACjE,AADkE,CAAC,AAClE,CACF,AACH,CADI,AACH,AAEO,oBAAoB,EAAA,CAC1B,MAAO,CACL,cAAc,CAAE,AAAC,IACX,CAAA,EAAA,EAAA,IAD6B,EAAE,EAAE,CACxB,AAAT,EAAU,EAAc,OAAO,CAAC,EAAE,AACpC,CADyB,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAC,AAGzC,AAH4B,IAGxB,CAAC,KAAK,CAAC,EAAe,SAAS,CAAE,CAAb,GAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC,AAC3D,GAET,UAFsB,CAAC,KAEP,CAAG,AAAD,SACM,IADY,AAC9B,EADgC,CAGpC,CAHsC,CACP,EAAE,AAE7B,CAAC,KAFY,CAAuB,CAE5B,CAAC,EAAe,SAAS,CAAC,AACxC,CAD4B,AAAa,AACxC,CAEL,AADG,CAAC,AACH,AAIO,4BAA4B,EAAA,CAClC,OAAO,AAAC,GACC,KADqC,EAAE,EACC,AAA/B,AADgC,CACY,EAC1D,IAAM,EAAkB,EAAA,IADK,GACE,CAAC,GAAX,CAAe,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GACvD,KAD+D,CAAC,CACzD,AAD0D,EACjD,IAAI,CAAC,CAAN,GAAU,CAAE,EAC7B,CAAC,AAEL,CAEQ,AAJF,AAEL,WAH+C,CAAC,CAAC,OAKtB,EAAA,CAC1B,IAAM,EAAkB,IAAI,CAAC,AAE7B,OAAO,AACL,CAHmB,EAKZ,KAF6D,EACpE,EAAE,AACc,AAEd,CAAY,CACZ,CAAa,EAIb,GAAwB,CAAC,GAArB,EAPwB,AAOf,MAAD,AAAO,CAAQ,CACzB,IAAM,EAAU,EAAyC,EAA7C,EAAiD,CAC3D,CADsD,GAClD,CACJ,GASF,IATS,CACR,CAAC,CACE,GAAiC,GAA3B,OAAqC,EAAjC,AAAmC,OAA5B,EAAO,IAAI,AAAL,EACzB,EAAO,IAAI,AAAL,CACJ,GAAG,CAAG,CAAD,CAAiB,WAAW,CAAC,CAAb,EAErB,GAAG,CAFsC,CAAC,EAC1C,EACM,CAAD,EAGF,EACR,AAYD,IAhBqB,AAGN,CAFV,AAEW,CAFV,CAeE,EAA0C,IAAI,CACpD,CAD+C,GAC3C,CACJ,EAXsB,KAWf,EACP,EAZgC,CAAQ,CAAE,CAAS,EAC/C,GAT6C,AAS1C,AAAI,CAAC,GAIZ,CAOe,AAXC,CAIA,AAQjB,CAAC,AAZkB,UAIS,CAAC,CAAb,EAHb,EAAS,EAGwB,AAHnB,CAAF,AAGsB,CAAC,AAEvC,CAAC,CALqB,AAKpB,AAOJ,AAZc,CAAW,AAYxB,AAEL,CAAC,AAGO,AAjBsB,AAYxB,uBAKyB,EAAA,CAC7B,MAAO,CACL,yBAAyB,CAAE,AAAC,IAEtB,CAAA,EAAA,EAAA,IAFwC,EAAE,EAAE,CAE5C,AAAS,EAAC,EAAc,UAAU,CAAX,AAAY,SAAS,CAAC,OAAO,CAAC,EAAE,AACzD,IAAI,CAAC,OAAO,CAAC,EAAc,UAAU,CAAX,AAAY,SAAS,CAAE,SAAS,CAAC,CAAC,AAG9D,IAAI,CAAC,KAAK,CACR,EAAc,UAAU,CAAC,AAAZ,SAAqB,CAClC,SAAS,CACT,IAAI,CAAC,0BAA0B,EAAE,CAClC,CAAC,AACK,GAET,UAFsB,CAAC,aAEC,CAAG,AAAD,IAEpB,CAAA,EAAA,EAAA,IAFuC,EAAE,EAAE,CAE3C,AAAS,EAAC,EAAc,UAAU,CAAX,AAAY,SAAS,CAAC,OAAO,CAAC,EAAE,AACzD,IAAI,CAAC,OAAO,CAAC,EAAc,UAAU,CAAX,AAAY,SAAS,CAAE,SAAS,CAAC,CAG7D,AAH8D,IAG1D,CAAC,KAAK,CACR,EAAc,UAAU,CAAC,AAAZ,SAAqB,CAClC,SAAS,CACT,IAAI,CAAC,yBAAyB,EAAE,CACjC,CAAC,AACK,GAET,UAFsB,CAAC,QAEJ,CAAE,AAAC,SACE,IADiB,AACnC,EADqC,CAEzC,CAF2C,CACZ,EAAE,AAC7B,CAAC,KADY,CAAuB,CAC5B,CAAC,EAAc,UAAU,CAAX,AAAY,SAAS,CAAE,SAAS,CAC5D,AAD6D,CAAC,AAC7D,CACF,AACH,CADI,AACH,AAGO,oBAAoB,CAAC,CAA6C,CAAA,CACxE,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADmD,EAAE,EAAE,AAC9C,AAEd,CAA6B,CAC7B,CAAU,CACV,CAAc,CACd,CAA2B,CAC3B,CAAmB,EAEnB,IAAM,EAAc,EAAA,CARc,IAQT,CAAC,CAAT,MAAgB,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AAC9C,EACJ,EAAgB,aAAD,EADQ,UACkB,CAAC,GAEtC,EACJ,AAAmB,MAHkC,CAAC,CAAC,EAG1B,CADZ,AACa,CAAC,OAAxB,EAAyB,EAAU,EAC5C,CADgB,EAAyB,AAEvC,CAFwC,CAAC,CAAS,AAGzB,CAH0B,SAGhB,EAAnC,IADmB,GACZ,GACQ,QAAQ,EACvB,AAFoB,AACpB,OAAO,EAEP,CAFU,EAEa,UAAU,EAA7B,AAA+B,OAAxB,EACT,KADgB,EACT,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAQ,EAAI,AAAF,EAAJ,AAAW,CAAF,MAAS,CAEnD,AAFoD,CAAC,MAE9C,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAQ,EAAE,AAAE,EAAN,AAAW,CAAF,CAAW,GAIzD,EAJuD,EAIjD,CAJ2D,CAI9C,AAJ+C,CAAC,CAIhC,MAAnB,OAAkB,OAAqB,CACrD,EAAE,AACF,EAEA,CAAG,CAAC,CAAC,CAFC,AAEO,CACb,CAFA,EAII,EAAW,EAAgB,IAAnB,EAFC,CACd,CAAC,KAC8B,KAAmB,CAAC,GAC9C,EAAO,EAAH,AAAmB,GADiC,CAAC,CAAC,CAC7B,CAAC,MAAR,GAAiB,CAAC,EAAU,CACtD,IAAI,CADgD,AAC9C,EAAA,GANwD,KAMhD,CAAC,MAAM,YACrB,EACD,CAAC,CAAC,AAEG,EAAkB,EAAgB,EAH5B,OAGqC,CAAC,CAA7B,CAAmC,CAAjB,CAAe,OAEtD,AAAuB,IAF8C,CAAC,CAAC,IAEtC,EAA7B,AAA+B,OAAxB,EACF,EAAS,GADA,CACI,CAAC,CAAN,GAAU,CAAE,EAAQ,EAAE,AAAE,EAAN,AAAW,CAAF,EAEnC,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,AAFgC,CAAC,CAEzB,AAF0B,EAEtB,AAAF,EAAJ,AAAW,CAAF,CAAW,EAEzD,CAAC,AAEL,CAFM,AAEL,AAGO,CAPmD,UAAiB,CAAC,CAAC,KAOpD,EAAA,CACxB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADwC,EAAE,EAG/C,AAFc,AADmC,CAGpB,CAC7B,CAAU,CACV,CAAyB,CACzB,CAA2B,CAC3B,CAAmB,EAEnB,IAAM,EAAc,EAAA,CARc,IAQT,CAAC,CAAT,MAAgB,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AAC9C,EACJ,EAAgB,aAAD,EADQ,UACkB,CAAC,GAEtC,EACe,MAHkC,CAAC,CAAC,EAG1B,CADZ,AACa,CAA9B,AAA+B,OAAxB,EAAyB,EAAU,EAE5C,CAFgB,EAAyB,AAGvC,CAHwC,CAAC,CAAS,AAIzB,CAJ0B,SAIhB,EAAnC,IADmB,GACZ,GACQ,QAAQ,EACvB,AAFoB,AACpB,OAAO,EAEP,CAFU,EAEa,UAAU,EAA7B,AAA+B,OAAxB,EACT,KADgB,EACT,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAQ,EAAE,AAAE,EAAN,AAAW,CAAF,MAAS,CAAC,AAEpD,CAFqD,MAE9C,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAQ,EAAE,AAAE,EAAN,AAAW,CAAF,CAAW,GAIzD,EAJuD,EAIjD,CAJ2D,CAI7C,AAJ8C,CAAC,CAIxB,OAA1B,QAAyC,CAAC,GAAG,AACxD,CADoC,AAAqB,CAAC,AAE9D,IAAgB,EAAA,KADC,AACN,aAAuB,CAAC,OAAO,CAAC,CAAC,IAAC,EAAY,EACrD,EAAa,EAAgB,CADqB,CAAC,CAAC,EAAY,CACtD,AADuD,OACrC,OAAqB,CACrD,EACA,AADE,EAEF,EACA,CADG,CADG,CAIF,EAAW,EAAgB,IAAnB,EAFC,CACd,CAAC,KAC8B,KAAmB,CAAC,GAC9C,EAAO,EAAgB,AAAnB,GADoD,CAAC,CAAC,CAC7B,CAAC,MAAR,GAAiB,CAAC,EAAU,CACtD,IAAI,CADgD,AAC9C,EAAA,QAAQ,CAAC,MAAM,YACrB,EACD,CAAC,CAAC,AAEG,EAAkB,EAAgB,EAH5B,OAGqC,CAAC,CAA7B,CAAmC,CAAjB,CAAe,OAEtD,AAAuB,IAF8C,CAAC,CAAC,IAEtC,EAA7B,AAA+B,OAAxB,EACF,EAAS,GADA,CACI,CAAC,CAAN,GAAU,CAAE,EAAQ,EAAI,AAAF,EAAO,AAAX,CAAS,EAEnC,EAAS,IAAI,CAAC,CAAN,GAAU,CAFkC,AAEhC,CAFiC,CAAC,AAE1B,EAAE,AAAE,EAAN,AAAW,CAAF,CAAW,EAEzD,CAAC,AAEL,CAGQ,AAHP,AAFK,CAFqD,UAAiB,CAAC,CAAC,aAO5C,EAAA,CAChC,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADwC,EAAE,EACjC,AADmC,AAGjD,CAAoB,CACpB,CAAQ,CACR,CAA4B,CAC5B,CAAa,EAEb,IAUI,EAVE,EAAc,AAUZ,EAVY,CAUT,EAjByB,EAOX,CAAC,CAAT,GAUG,CAAC,EAVY,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AAC9C,EACJ,EAAgB,aAAD,EADQ,UACkB,CAAC,GAEtC,EAAc,MAAM,AAF6B,CAE5B,AAF6B,CAAC,CAExC,EAAc,CAAC,EAAI,CAAD,AAAE,CAAC,CAAC,CAAC,AAExC,GAAmB,QAAQ,EAAvB,OAAO,GAAG,AAAiB,EAAI,CAAD,OAAS,EAAI,EAAI,CAAD,IAAM,CACtD,CADwD,MACjD,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAE,AAAE,EAAK,CAAF,CAAW,GAI/C,EAJ6C,CAIzC,CAAC,CAJkD,CAAC,AAI9B,CAJ+B,AAKvD,IAAM,EAAa,EAAgB,MAAnB,EADM,KACY,OAAqB,CACrD,IAAI,CACJ,EAAE,AACF,EACA,CADG,EAGC,EAAW,EAAgB,IAFpB,AAEC,CADb,CAAC,OAC8B,KAAmB,CAAC,GACpD,EAAO,EAAH,AAAmB,GADuC,CAAC,CAAC,CACnC,CAAC,MAAR,GAAiB,CAAC,EAAU,CAChD,IAAI,CAD0C,AACxC,EAAA,QAAQ,CAAC,MAAM,CACrB,UAAU,GACX,CAAC,CAAC,AACJ,AACD,IAAM,EAAkB,EAAgB,SAAS,CAC/C,CADmB,CArBC,CAqBiB,CACjC,AAEJ,EADA,EACI,CAAC,CAxBuB,CAwBrB,AAxBsB,CAyB7B,GAGF,IALe,GAKR,CAHM,CACZ,AAEe,CAFd,GAEkB,CAAC,CAAN,GAAU,CAAE,EAAE,AAAE,EAAK,CAAF,CAAW,EAC/C,CAEJ,AAFK,CAEJ,AAEO,AAJF,CAD2C,UAAiB,CAAC,CAAC,YAKnC,EAAA,CAC/B,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADuC,EAAE,EAG9C,AAFc,AADkC,GAG7C,CAAgD,EAEnD,IAYI,EAZE,CAAC,CAYC,CAZC,AAAE,EAAI,AAYJ,CAZG,AAAI,EACZ,EADgB,AACF,AALgB,CAIb,CACH,EAWA,CAAC,EAXI,CAAC,CAAT,MAAgB,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAC7C,AAD8C,EAElD,EAAgB,aAAD,EADQ,UACkB,CAAC,GAEtC,EAAc,MAFmC,AAE7B,CAAC,AAF6B,CAAC,CAExC,EAAc,CAAC,EAAI,CAAD,AAAE,CAAC,CAAC,CAAC,AAGxC,GAAmB,QAAQ,EAAvB,OAAO,GAAG,AAAiB,EAAI,CAAD,OAAS,EAAI,EAAI,CAAD,IAAM,CACtD,CADwD,MACjD,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,GAI9B,CAJkC,CAAC,CAI/B,AAJgC,CAI/B,EAAqB,CACxB,IAAM,EAAa,EAAgB,MAAnB,EADM,KACY,OAAqB,CACrD,IAAI,CACJ,EAAE,AACF,EACA,CADG,EAGC,EAAW,EAAgB,IAFpB,AAEC,CADb,CAAC,OAC8B,KAAmB,CAAC,GACpD,EAAO,EAAH,AAAmB,GADuC,CAAC,CAAC,CACnC,CAAC,MAAR,GAAiB,CAAC,EAAU,CAChD,IAAI,CAD0C,AACxC,EAAA,QAAQ,CAAC,MAAM,YACrB,EACD,CAAC,CAAC,AACJ,AAED,IAAM,EAAkB,AAJV,EAI0B,SAAS,CAC/C,CADmB,CArBC,CAqBiB,CACjC,CAtBmB,CAuBvB,KAvB0B,CAAD,CAwBzB,IAAI,CAAC,CADQ,CACN,AAxB4B,CAAC,AAyBpC,GAGI,EAAS,EAAS,EAAZ,EAHC,CAGgB,AAF5B,CAEsB,AAFrB,AAE4B,IAAI,CAAE,GAMpC,CANwC,CAAC,CAAC,IAC1C,EAAO,IAAD,AAAK,CACT,AAAC,GAAQ,AAAK,CAAD,CAAF,AAAmB,IAAI,CAAE,GAAG,AACvC,AAAC,CADuC,EAC1B,AAAL,CAAI,CAAiB,AADD,AAClB,GAAsB,CAAC,AAG7B,CAFN,AAGH,CAHI,AAGH,AAEL,CAFM,AAEL,AAGO,GANW,CAAC,EAHiB,SASd,EAAA,CACrB,IAAM,EAAkB,IAAI,CAC5B,AAD6B,OACtB,AAAC,CADa,EAEZ,KADsC,EAAE,EAAE,AACjC,AAEd,CAA6B,CAC7B,CAAU,CACV,CAAyB,CACzB,CAAwB,CACxB,CAA2B,CAC3B,CAAmB,EAEnB,IAAM,EAAc,CATc,CASd,KAAK,CAAC,CAAT,MAAgB,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AAC9C,EACJ,EAAgB,aAAD,EADQ,UACkB,CAAC,GACtC,EACe,MAFkC,CAAC,CAAC,EAE1B,CADZ,AACa,CAA9B,AAA+B,OAAxB,EAAyB,EAAU,EAE5C,CAFgB,EAAyB,AAGvC,CAHwC,CAAC,CAAS,AAIlD,AAAyB,CAJ0B,SAIhB,MADhB,GACZ,GACQ,QAAQ,EACvB,AAFoB,AACpB,OAAO,EAEP,CAFU,EAEa,UAAU,EAA7B,AAA+B,OAAxB,EACT,KADgB,EACT,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAQ,EAAE,AAAE,EAAN,AAAW,CAAF,CAAe,OAAO,CAAC,AAEjE,CAFkE,AAAX,MAEhD,EAAS,IAAI,CAClB,CADa,GACT,CACJ,EACA,EAAE,AACF,EAFM,AAGN,CADG,CAEH,EACA,GAKN,EANa,EADI,AAOX,CALQ,CAKK,AAJd,CAAC,CAI6B,MAAnB,OAAkB,OAAqB,CACrD,EAAE,AACF,EACA,EACA,CADG,CADG,IAEA,CACP,CAAC,AACI,EAAW,EAAgB,IAAnB,SAAkB,KAAmB,CAAC,GAC9C,EAAO,EAAgB,AAAnB,GADoD,CAAC,CAAC,CAC7B,CAAC,MAAR,GAAiB,CAAC,EAAU,CACtD,IAAI,CADgD,AAC9C,EAAA,QAAQ,CAAC,MAAM,YACrB,EACD,CAAC,CAAC,AAEG,EAAkB,EAAgB,EAH5B,OAGqC,CAAC,CAA7B,CAAmC,CAAjB,CAAe,OAEtD,AAAI,AAAmB,IAF8C,CAAC,CAAC,IAEtC,EAAE,OAAxB,EACF,EAAS,GADA,CACI,CAClB,CADa,GACT,CACJ,EACA,EAAE,AACF,EAFM,AAGN,CADG,CAEH,GAGK,EAAS,IAJH,AAIO,CAClB,CADa,GACT,CAJW,AAKf,CAJD,CAAC,AAKA,EAAE,AACF,EAFM,AAGN,CADG,CAEH,EACA,EAGN,CAAC,AAEL,CAFM,AAEL,AAGO,CATS,EADI,QAEI,CAChB,CAAC,IAOe,EAAA,CACvB,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,AAAC,CADa,EAEZ,KADwC,EAAE,EAG/C,AAHiD,AACnC,CAEe,CAC7B,CAAU,CACV,CAAwB,CACxB,CAAiB,CACjB,CAA2B,CAC3B,CAAmB,EAEnB,IAAM,EAAc,CATc,CASd,KAAK,CAAC,CAAT,MAAgB,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AAC9C,EACJ,EAAgB,aAAD,EADQ,UACkB,CAAC,GAEtC,EACe,MAHkC,CAAC,CAAC,EAG1B,CADZ,AACa,CAA9B,AAA+B,OAAxB,EAAyB,EAAU,EAE5C,CAFgB,EAEZ,AAFqC,CAAC,CAAC,CAEhB,AAAyB,AAFA,CAAC,SAES,EAAE,IAAzC,GAAW,EAChC,GAAI,AAAmB,QADsB,EACZ,EAAE,OAAxB,EACT,KADgB,EACT,EAAS,IAAI,CAClB,CADa,GACT,CACJ,EACA,EAAE,AACF,EAFM,AAGN,EACA,OAFW,AACF,AACF,CACR,AAED,CAFE,MAEK,EAAS,IAAI,CAClB,CADa,GACT,CACJ,EACA,EAAE,AACF,EAFM,AAGN,EACA,EACA,GAKN,EARiB,AAEJ,AADE,EAOT,CALQ,CAKK,AAJd,CAAC,CAI6B,MAAnB,OAAkB,OAAqB,CACrD,EAAE,AACF,EACA,EAAY,EADN,CACS,CACf,KADW,IACF,CACV,CAAC,AACI,EAAW,EAAgB,IAAnB,SAAkB,KAAmB,CAAC,GAC9C,EAAO,EAAH,AAAmB,GADiC,CAAC,CAAC,CAC7B,CAAC,MAAR,GAAiB,CAAC,EAAU,CACtD,IAAI,CADgD,AAC9C,EAAA,QAAQ,CAAC,MAAM,YACrB,EACD,CAAC,CAAC,AAEG,EAAkB,EAAgB,EAH5B,OAGqC,CAAC,CAA7B,CAAmC,CAAjB,CAAe,OAEtD,AAAuB,IAF8C,CAAC,CAAC,IAEtC,EAA7B,AAA+B,OAAxB,EACF,EAAS,GADA,CACI,CAClB,CADa,GACT,CACJ,EACA,EAAE,AACF,EAFM,AAGN,EACA,GAGK,EAAS,EALH,AACF,EAIS,CAClB,CADa,GACT,CAJW,AAKf,CAJD,CAAC,AAKA,EAAE,AACF,EACA,AAHM,EAIN,EACA,EAGN,CAAC,AAEL,CAFM,AAEL,AAMO,CAda,AACF,AACF,KAYH,CAAC,IAXU,CAChB,CAAC,SAUoB,CAC5B,CAA6B,CAAA,CAE7B,QAA8B,IAA1B,EAAQ,GAA2B,EAA5B,AAA8B,QAAhB,CACvB,OAAO,EAAA,kBAAkB,CAAC,cAAc,CAAC,AACpC,GAAI,KAA0B,EAAnB,IAAC,GAA2B,EAAE,QAAhB,CAC9B,OAAO,EAAA,kBAAkB,CAAC,eAAe,CAAC,AACrC,QAAyB,IAArB,EAAQ,GAAsB,EAAvB,AAAyB,GAAhB,CACzB,OAAO,EAAA,kBAAkB,CAAC,SAAS,CAAC,AAC/B,GAAI,KAAkB,EAAX,IAAC,GAAmB,EAAE,AAAhB,CACtB,OAAO,EAAA,kBAAkB,CAAC,KAAK,CAAC,AAC3B,GAAI,AAAsB,OAAf,EAAwB,EAAvB,AAAyB,SAAhB,CAC1B,OAAO,EAAA,kBAAkB,CAAC,SAAS,CAAC,KAEpC,OAAO,EAAA,kBAAkB,CAAC,OAE9B,AAFqC,CAEpC,AAQO,AAV8B,oBAUV,CAC1B,CAAkB,CAClB,CAAoB,CACpB,CAAa,CACb,CAAkB,CAAA,KAEd,EAAM,EAYN,AAZI,EACR,AADkC,CAAC,EAC/B,EAAe,CACjB,EAUqC,CAAC,CAVhC,EAC6B,IAFpB,GACA,CAC4B,EAAzC,OAAO,EAAc,OAAO,CACxB,EAAc,CADE,MACK,CAAC,GAAT,EAAc,CAAC,GAAG,CAAC,CAChC,EAAE,CACiB,AADhB,CACiB,EAAE,CAAxB,EAAU,MAAM,CAAP,EACX,EAAO,CAAS,CAAZ,AAAa,CAAC,CAAC,CAAC,AACpB,EAAO,CAAS,CAAC,AAAb,CAAc,CAAC,CAAC,CAEvB,AAWD,OAPE,EADE,GAAS,IAAF,CACC,IADU,EAAI,EAAQ,KAAD,IAAU,CAAC,CAAC,CAAC,CAC/B,CADiC,CACzB,KAAD,IAAU,CAAC,CAAC,CAAC,CAAC,AACzB,GAAS,IAAF,GAAS,CACZ,CADc,CACN,KAAD,EAAQ,CAAC,AAEhB,EAGR,IAAI,CAHW,AAGV,CAHW,iBAGO,CAC5B,EAAE,AAAC,EAAE,CACL,EAAE,AAAC,UAAU,CACb,EACA,EADI,AAEJ,EADI,AAEJ,EAEJ,CAAC,AAQO,KAXM,CACD,CACV,CAAC,YASwB,CAC1B,CAAU,CACV,CAA+B,CAC/B,CAA8B,CAC9B,CAA8B,CAAA,KAG1B,EACA,EADwB,AAE5B,CAF6B,CACD,CAAC,AACzB,GAAY,EAAS,CAAC,EAAd,AAAgB,CAC1B,EADsB,AACf,EAAH,AAAY,CAAC,CAAC,IAAH,GAAU,EAAE,IAAI,EAAI,EAAS,CAAC,CAAC,IAAI,AAAP,CAAQ,AACnD,GAAQ,CAAJ,CAAa,CAAC,CAAX,AAAY,IAAH,GAAU,EAAE,IAAI,EAAI,EAAS,CAAC,CAAC,IAAH,AAAG,AAAI,CAAC,EAAE,QAAQ,EAAE,CACpD,AADqD,IACjD,EAAZ,GAAwB,CAApB,GAAwB,EAAZ,GAAc,CAAV,AACtB,IAAM,EAAU,EAAS,GAAZ,GAAW,KAAY,EAAE,OAAO,CAAC,AAC9C,GAAI,EAAS,CACX,IADS,AACH,EAAkB,EAAQ,KAAK,AAAN,CAAO,GAAG,CAAC,CAAC,AAC3C,AADqB,EACd,CAAe,CAAlB,AAAmB,CAAC,CAAC,CAAC,AAC1B,EAAO,CAAe,CAAlB,AAAmB,CAAC,CAAC,CAAC,AAC3B,CACF,AAOH,GAAM,CAAC,EAAQ,EAAa,CAAG,CAAlB,CAAoB,AAAC,OAAP,CAAe,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,AAElD,EAAa,GAAS,IAAF,CAAV,AAAiB,EAAI,GAAS,CAAC,EAAI,CAAP,CAE5C,KAF0D,CAAC,CAEpD,IAAI,CAAC,kBAAkB,CAC5B,EACA,EACA,EACA,AAHM,EAEF,AAEJ,EACA,AAFI,EAIR,CAAC,AAEO,CARQ,IAGF,CACD,CACV,CAAC,UAGsB,CACxB,CAAe,CACf,CAAqB,CACrB,CAAyB,CACzB,CAAyB,CACzB,CAAgB,CAChB,CAA8B,CAAA,CAE9B,IAAM,EAAyB,CAAA,CAAE,CAiBjC,AAjBkC,GAE9B,EAFY,EAER,CAAC,mBAAmB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACnD,CAAU,CAAC,EAAA,cAAc,CAAC,CAAG,EAAA,uBAAuB,CAAC,AACrD,CAAU,CAAC,EAAA,YAAY,CAAC,CAAG,EAC3B,CAAU,CAAC,EADsB,AACtB,CADuB,yBACG,CAAC,CAAG,EACzC,CAAU,CAAC,EAAA,MAD0C,CAAC,UAC1B,CAAC,CAAG,EAChC,CAAU,CAAC,EAAA,GAD8B,CAAC,qBACN,CAAC,CACnC,CAAA,UAAA,EAAa,EAAI,CAAA,CAAA,CAAI,EAAI,CAAA,CAAA,CAAI,EAAM,CAAE,CAAC,CAEtC,CAFmC,GAE/B,CAAC,mBAAmB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACtD,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAAA,4BAA4B,CAAC,AAC/D,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,EAChC,CAAU,CAAC,EAD2B,AAC3B,CAD4B,qBACN,CAAC,CAAG,EACrC,CAAU,CAAC,EAAA,GADmC,CAAC,mBACb,CAAC,CAAG,GAGpC,GAAQ,CAAJ,CAAU,CACZ,CADU,EAHoC,CAI1C,AAJ2C,CAI1C,oBAAoB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACpD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAI,CAAC,AAEpC,IAAI,CAAC,oBAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACvD,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,CAAA,CAAI,CAAC,AAEzC,IAAM,EAAa,QAAH,AAAW,CAAC,EAAM,EAAF,AAAI,CAChC,AADiC,CAAC,CACjC,KAAK,CAAC,KACL,IAAI,CADW,AACV,CADW,EAAE,iBACO,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACpD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAU,CAAC,AAE1C,IAAI,CAAC,oBAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACvD,CAAU,CAAC,EAAA,gBAAgB,CAAC,CAAG,CAAA,CAAU,CAAC,CAG/C,AAED,GAAI,EAAY,CACd,GAAM,CAAE,GADI,kBACiB,CAAE,CAA2B,CAAE,CAC1D,IAAI,CAAC,SAAS,EAAE,CAAC,AACb,EACmC,UAAU,EAAjD,OADyB,AAClB,EACH,EACA,IAAI,CAAC,kBAFyB,EACH,SACO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,AAEpD,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,EAAE,AACH,IAAM,EAAQ,EAAsB,CAAzB,EACP,IAAI,CAAC,EADqC,CAAC,CAAC,OAAb,QACP,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACnD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAK,CAAC,AAEpC,IAAI,CAAC,mBAAmB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACtD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAErC,AAF0C,CAEzC,AAF0C,CAE1C,AACD,GAAG,CAAC,AACE,EADA,CACG,AACL,EADO,EACH,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAE,EAEjE,CAFoE,AAEnE,CAFoE,CAAC,AAGtE,GAEH,AAED,CAJQ,CACL,CAAC,IAGG,CACT,CAAC,AAEO,QAHW,CAAC,SAGM,CAAC,CAAsB,CAAA,CAc/C,OAAO,AAZH,IAAI,CAAC,GAYM,CAAC,eAZY,CAAG,EAAA,gBAAgB,CAAC,MAAM,CAGlD,CAHoD,AAIlD,CAAU,CAAC,EAAA,sBAAsB,CAAC,CAClC,CAAU,CAAC,EAAA,uBAAuB,CAAC,CACpC,CACE,MAAM,CAAA,AAAC,GAAQ,CAAJ,CAAC,CACZ,CADmB,CAAC,EAChB,CAAC,GAAG,CAAC,EAAI,EAAA,4BAA4B,CAAC,AAEpC,CAAA,QAAA,EAAW,CAAU,CAAC,EAAA,iBAAiB,CAAC,EAAI,SAAS,CAAA,CAAE,AAGtE,CAHuE,AAGtE,AAEO,8BAA8B,EAAA,CACpC,IAAM,EAAO,EAAH,EAAO,OAAO,CACxB,CAD0B,CAAC,IACpB,CAAC,EAAM,EAAF,EAEV,AAAI,AAAiB,CAFJ,EAAE,EAAE,GAEQ,IAAI,KAAtB,GAAuB,EAAlB,AAGZ,EAAK,CAH8B,CAG/B,CAHiC,AAG7B,CAAC,GAAe,EAAV,CAAC,EAAE,OAAmB,CAAC,CACzC,EAAK,EAAD,CAAI,CAAC,GACF,EADO,CAAC,AAJiC,CAIhC,CACJ,CAAC,AAEjB,AAPuD,CAOtD,AAEO,AATgD,6BASnB,CAAC,CAAmC,CAAA,CACvE,GAAM,2BAAE,CAAyB,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAEvD,AAAI,EACK,IAAI,CAAC,SAAS,CAAC,GAGjB,IAAI,CAJkB,AAIjB,EAJmB,AACG,CAAC,CAAC,KAGf,CAAC,EAAY,IAAI,CAAC,GAAP,2BAAqC,EAAE,CACzE,AAD0E,CACzE,AAOO,AARmE,sBAQ7C,CAAC,CAAU,CAAE,CAAqB,CAAA,CAC9D,GAAM,CAAE,cAAY,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CACb,AADc,UACJ,EAAlC,AAAoC,OAA7B,GACT,CAAA,EAAA,EAAA,IADqB,kBACrB,AAAsB,EACpB,GAAG,EAAE,AACH,EAAa,EAAM,CAAE,CAAJ,GAAQ,CAAE,CAAM,CAArB,AAAuB,CAAC,AACtC,CADuC,AACtC,CACD,AADC,CADkC,EAEhC,CAAC,AACE,EADA,CACG,AACL,EADO,EACH,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAE,EAEpD,CAAC,AAFsD,CAAC,CAAC,AAGzD,EAGN,CAAC,AAQO,CAXE,CACL,CAAC,MAUW,CACf,CAAsB,CACtB,CAAuB,CACvB,CAAqB,CACrB,CAAoB,CAAA,CAIpB,IAAM,EAAgB,EAAA,OAAO,CAAC,CAAX,KAAiB,EAAE,CAAC,AACjC,EAAkB,IAAI,CAAC,AACzB,GAAY,EAEhB,GAFqB,AADA,CACR,AAAS,GAEf,SAAS,AAAqB,GAAG,CAAe,EACrD,GAAI,CADoB,AACnB,EAAW,CACd,GAAY,EACZ,CAFY,CACI,CAAC,CAAR,AACH,EAAQ,CAAI,CAAC,CAAC,AAAT,CAAU,CAAC,AACtB,GAAI,EAAM,CACR,CADM,EACF,KAAK,QAAY,KAAK,CACxB,CAD0B,CACrB,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAM,GAAD,IAAQ,CACvB,CAAC,CAAC,IACE,CACL,IAAM,EAAS,CAAI,CAAC,CAAC,CAAkB,AAA3B,CAA4B,AACxC,EAAgB,aAAD,SAAuB,CAAC,EAAM,EAAF,CAE7C,AADC,EACI,CAFgD,CAEjD,AAFkD,CAE9C,AAF+C,EAE7C,CAAC,AACZ,AAEmB,aAAa,EAAE,CAA/B,GACF,EAAgB,MADH,OACE,AAAc,CAAC,CAAC,CAAC,CAAE,EAAgB,SAAS,CAAE,GAAZ,GAAkB,CAAC,CAAC,AAExE,AAED,OAAO,EAAA,OAAO,CAAC,IAAI,CAAC,EAAe,GAAG,CAC7B,CAD+B,CACjB,KADU,AACL,CAAC,IAAI,CAAX,AAAa,GAErC,CAAC,AACH,AAH2C,CAAC,AAExC,AACH,AACO,CAJqC,UAI1B,CAAC,CAAY,CAAA,CAC9B,IAAM,EAAO,EAAH,AAAW,KAAD,MAAY,EAAE,IAAI,CAAC,AACjC,EAAO,EAAQ,AAAX,KAAU,MAAY,EAAE,IAAI,CAAC,AACjC,EAAW,EAAQ,IAAX,CAAU,CAAO,CACzB,AAD0B,EACf,CAAA,KAAH,KAAG,EAAa,EAAI,CAAA,CAAA,CAAI,EAAI,CAAA,CAAA,CAAI,EAAQ,CAAE,CAAC,AACzD,IADsD,AAClD,CAAC,SAAS,CAAG,CACnB,CAAC,AAEO,MAHmB,CAAC,kBAGK,CAAC,CAA6B,CAAA,CAG7D,MAAO,CAAsB,IAAI,AAFP,IAEW,AAFP,CAAC,OAEP,EAFgB,EAAE,CAAC,EAES,CAAC,cAFO,CAAC,MACrB,IAAhB,CAE1B,CAAC,CACF,AA9hCD,EA2hCqD,AA3hCrD,CA2hCsD,KAAf,gBA3hCvC,CAAA,uBA8hCC,aC7lCE,OAAA,cAAA,CAAA,EAAA,aAAA,wCAwDD,CADU,EAAA,EAAA,aACV,CAD4B,IAAA,GAAlB,CAAkB,CAAlB,kBAAkB,CAAA,EAAA,CAAA,EAC5B,CAKD,aALC,CAAA,eAAgC,CAChC,AADgC,EAChC,eAAA,CAAA,eAAiC,CAAA,AACjC,EAAA,SAAA,CAAA,MAAA,IAAsB,CAAA,AACtB,EAAA,KAAA,CAAA,OAAe,CAAA,AACf,EAAA,AADA,OACA,CAAA,QAAA,CAAmB,CAAA,+BC5DlB,OAAA,cAAA,CAAA,EAAA,aAAA,iEAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA2D,GAAlD,OAAA,cAAA,CAAA,EAAA,yBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,sBAAsB,CAAA,GAAA,AAC/B,IAAA,EAAA,EAA6C,CAAA,CAAA,KAApC,OAAA,GAAoC,WAApC,CAAA,EAAA,qBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,kBAAkB,CAAA,GAAA,6HCZrB,EAAmB,OAAO,CAEnB,EAAkB8T,EAAAA,EAFzB,SAEO,WAAwC,CACnD,EACA,IACE,IAAIsJ,EAAAA,IAFU,kBAEY,CAAC,CACzB,qBAAqB,CAAE,EACvB,YAAY,CAAC,CAAI,EACfnB,AADiB,EACjBA,SAFkD,MAEnC,CAAC,EAAM,EAAF,kBAAsB,CAAC,AAC7C,CAAC,AACP,CAAK,CAAC,EAMC,SAAS,EAA8B,CAAU,EAAmC,AAEzF,OAAO,IAAI,CAAC,SAAS,CADH,AACI,AAGxB,EAL6C,OAEZ,AAGxB,CAHyB,CAGT,CAAK,EAAoB,CAJf,SAIX,WACtB,AAAI,KAAK,CAAC,OAAO,CAAC,GACT,EADc,AACR,CADS,EAAE,AACZ,AAAI,CAAA,AAAC,GAAW,EAAgB,EAA3B,EAoBK,GApB6B,CAAC,CAAC,IAAV,CAoBtC,OADa,AACN,EAjBG,GAgBQ,AACX,CAAgC,CADkD,AAhB1E,CAAC,EAiBuB,AAjBrB,GAiBW,CAAkB,CAAC,EAGvC,CAHoB,CAA4B,EAI5D,CADiB,CAH0C,AAIhD,CAJsD,AAG5B,CAH6B,CAKlE,AAAkB,EADF,CAAhB,QACO,AAAsB,EAAE,IAAxB,GACT,EAAW,MAAM,CAAC,QAAQ,CAAC,EAAK,CAAC,CAE5B,GAZA,GAAG,CAXD,CAuBM,KAvBA,CAAC,OAAO,CAAC,GACnB,EADwB,CACrB,CAAC,CAAC,CAAC,EAAK,CAAF,CAAU,GAAK,CAAC,CAAP,CAAY,CAAF,CAAkB,GAAS,EACvD,EADqD,CAAC,GAChD,CAAC,CADsC,AACrC,EAAM,EAAF,GACP,AAwBH,EAzBmB,GAyBd,CAAC,CAzBkB,MAyBX,CAxBI,AAwBH,AAxBI,KACjB,AAuBkB,CAvBd,AAuBe,CAxBK,AACnB,CADoB,AACb,CAAC,CADc,AACb,CAAC,CAAA,CAAI,CAAO,CAAC,EAAC,AAAC,EAExB,GAP8B,CAO1B,AAP0B,CAAE,CAa/C,EAvBoC,GAEpC,CA6DA,IACa,EAhEiC,AAgEdjc,CAhEe,CAgEfA,YAAnB,KAAoC,CAvBtB,AAuBuB,KAtBzC,CADwB,AAE7B,IAAI,CAAE,EACN,IAoB+D,KApBtD,GACP,AADU,EADU,CAGtB,CAAC,CACL,CAAG,SAFkB,EAAE,iGCrDpB,OAAA,cAAA,CAAA,EAAA,aAAA,gNAiBU,EAAA,0BAA0B,CAAG,uBAAgC,CAAC,AAY9D,EAAA,YAAY,CAAG,SAAkB,CAAC,AAalC,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAY5C,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAYtC,EAAA,YAAY,CAAG,SAAkB,CAAC,AAWlC,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,4BAA4B,CAAG,SAAkB,CAAC,sKCzG/D,IAAA,EAAA,EAAA,CAAA,CAAA,MAA4E,EAG5E,EAAA,EAAA,CAAA,CAAA,QAIA,EAAA,EAMmB,CAAA,CAAA,IAPqB,IAQxC,EAAA,EAAA,CAAA,CAAA,GADmB,KAsCnB,SAAS,EAAe,CAAU,CAAE,EAAa,AAhCJ,CAgCI,CAAE,EACjD,EAAK,EAAD,AADiB,aACD,CAAC,GAErB,EAF0B,AAErB,CAFsB,CAAC,AAExB,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,CAAA,EAAG,EAAM,GAAD,IAAQ,CAAA,CAAA,EACvB,EAAM,GAAD,CAAK,CAAG,AAAF,CAAC,AAAC;AAAA,qBAAA,EAA0B,EAAM,GAAD,CAAK,CAAA,CAAE,CAAC,AAAE,CAAD,CACvD,CAAA,CAAE,CACH,CAAC,AACJ,CAEA,AAFC,AADI,SAGI,EACP,CAAU,CACV,CAAa,CACb,CAAuD,CACvD,CAA6C,EAExC,GAIL,CAAA,EAVwB,AAUxB,EAAA,IAJiB,CAFmB,CAEjB,gBAInB,AAAsB,EACpB,GAAG,CAAG,CAAD,CAAc,EAAM,EAAF,MAAL,OAAS,EAAe,QAAQ,EAAA,CAAV,AAAY,CAAC,CAAA,AACrD,CAAC,CAAC,EAAE,AACE,CAAC,EACH,AADK,EACL,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAE,CAAC,CAAC,AAEjE,CAFkE,AAEjE,EACD,EAEJ,CA5DA,AA4DC,CAFO,CA1DR,AA2DG,CAAC,0BA3DJ,CAAA,EAAA,OAAgB,AACd,CAAsB,CACtB,CAAoC,CACpC,CAAqC,EAErC,IAAM,EAAoB,CAAA,CAAE,CAAjB,AAAkB,AAsB7B,KACD,EArBK,EAAqB,EAAA,AAPgB,cAOnB,EAAmB,CAAC,GAAG,EAAE,CAC7C,CAAK,CAAC,EAAA,0BAA0B,CAAC,CAAG,EAAW,IAAI,CAAC,AACpD,CAAK,CAAC,CADwC,CACxC,YAAY,CAAC,CAAG,EAAW,IAAI,CAAC,GAAN,CAAU,CAAC,AAC3C,CAAK,CAAC,EAAA,YAAY,CAAC,CAAG,EAAW,IAAI,CAAC,GAAN,CAAU,CAAC,CAEzC,EAAqB,EAAA,cAAH,EAAmB,CAAC,MAAM,EAAE,CAChD,CAAK,CAAC,EAAA,uBAAuB,CAAC,CAAG,EAAW,IAAI,CAAC,AACjD,CAAK,CAAC,CADqC,CACrC,iBAAiB,CAAC,CAAG,EAAW,IAAI,CAAC,GAAN,CAAU,CAAC,CAI9C,EAAsB,EAAA,eAAH,CAAmB,CAAC,GAAG,EAAE,CAC9C,CAAK,CAAC,EAAA,kBAAkB,CAAC,CAAG,EAAW,IAAI,CAAC,GAAN,CAAU,CAAC,AACjD,CAAK,CAAC,EAAA,kBAAkB,CAAC,CAAG,EAAW,IAAI,CAAC,GAAN,CAAU,CAAC,CAE/C,EAAsB,EAAA,eAAH,CAAmB,CAAC,MAAM,EAAE,CACjD,CAAK,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAAW,IAAI,CAAC,GAAN,CAAU,CACjD,AADkD,CAC7C,CAAC,EAAA,gBAAgB,CAAC,CAAG,EAAW,IAAI,CAAC,GAAN,CAAU,CAAC,CAG1C,CACT,CAAC,CAkCD,EAAA,AAnCc,CAAC,oBAmCf,CAAA,EAAA,OAAgB,AACd,CAAiB,CACjB,CAAU,CACV,CAAuD,CACvD,CAA6C,QAkB9C,CAhBC,AAAM,IAAF,CAAC,AAN8B,CAIC,MAElB,CAAY,OAAO,CAM9B,AAN+B,EAAE,AAOrC,IAAI,CAAA,AAAC,IACJ,CAFe,CAEG,EADN,AACY,CADX,CACS,AAAY,CADnB,CACiC,GACzC,CADyB,GAGjC,EAHkB,CAA6B,CAC/B,CAAC,AAEZ,CAHyD,AAGzD,AAAC,CAHyD,CAAC,CAGvD,CAAC,AAET,EAFW,IACX,EAAe,EAAM,EAAF,CACb,AADkB,CAE1B,AAF2B,CAAC,AAE3B,CADU,AACT,CADU,AAEX,GAHe,IAGR,CAAC,GAAG,CAAG,CAAD,CAAM,EAAD,CAAI,EAAE,CAAC,CAAC,CAd3B,EAAkB,EAAM,EAAc,AAAhB,EAA8B,GACpD,EAAK,EAAD,CADgC,AAC5B,CADS,CAAiC,AACxC,CAAC,AACJ,EAaX,AAfqE,CAepE,AAfqE,CAiBtE,AAjBuE,EAiBvE,MAfuB,CAAC,eAexB,CAAA,EAAA,OAAgB,AACd,CAAkB,CAClB,CAAc,CACd,CAAiB,CACjB,CAAU,CACV,CAAgB,CAChB,CAAuD,CACvD,CAA6C,EAE7C,CAmBD,GAnBK,EAAwB,CATQ,AASP,CAkB7B,AAlB8B,KAFM,EAGhB,CAAC,EAAE,CAAnB,EAAK,EAAD,EADiB,EACV,CACb,EAAwB,CAAC,CAAC,AACD,CAAC,EAAE,CAAnB,EAAK,EAAD,IAAO,GACpB,EAFqB,CAEG,CAAC,CAAC,AAG5B,CAAI,CAAC,EAAsB,CAAG,CAAC,EAAY,CAAF,IACnC,EACF,CALmB,AAId,AAD+C,CAErC,CADR,AADoD,CAEtC,CAFwC,CAE1C,CAAK,AAExB,CAFyB,AAFH,CAEI,AAER,EAAM,EAAF,AAAY,CAFpB,CAEkC,GAGlD,CAHkC,CAG7B,EAAD,CAAI,CAHW,CAGT,AAHsC,CAGrC,AACJ,EAJwD,AAI9C,CAJ+C,CAAC,AAI3C,CAAF,GAGf,AAHW,EAGN,EAHoB,AAGrB,CAHsB,CAAC,CAGjB,CAAC,EAAc,EAClC,CAAC,CADqC,CAAC,CAAC,IAAR,yBCvI7B,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,yCAAyC,CAAC,+JCHtE,IAAA,EAAA,EAAA,CAAA,CAAA,MAAgF,EAChF,EAAA,EAAA,CAAA,CAAA,OAAsD,CAGtD,EAAA,EAIiB,CAAA,CAAA,QACjB,EAAA,EAAA,CAAA,CAAA,CADiB,OASjB,EAAA,EAA0D,CAAA,CAAA,IAFlB,IAGxC,EAAA,EAKmB,CAAA,CAAA,GANuC,KAO1D,EAAA,EAAA,CAAA,CAAA,GADmB,KAOb,EAAgC,CACpC,WAAW,CAHgC,AAI3C,YAAY,CACZ,CAHiC,KAG3B,CACN,SAAS,CACT,wBAAwB,CACxB,gBAAgB,CAChB,UAAU,CACV,OAAO,CACP,QAAQ,CACR,kBAAkB,CAClB,kBAAkB,CAClB,mBAAmB,CACpB,CAEK,AAFJ,EAE+B,CAC/B,QAAQ,CACR,OAAO,CACP,IAH4B,cAGV,IACf,EACJ,CAAC,AACI,EAA2B,CAC/B,OAAO,CACP,aAF4B,EAFI,GAId,IACf,EACJ,CAAC,AACI,EAA2B,CAAC,GAAG,EAA8B,CAAC,AAEpE,SAAS,EACP,CAAiC,GAHL,EAFI,IAQhC,AAAK,EAEM,EAAc,AAFrB,CAN4D,QAM9C,CAEiB,AANF,CAIb,AAEI,AAAY,IAAI,CAAC,EAAI,EAAc,UAAU,CAAX,AAAY,IAAI,CAAC,CAClE,CADoE,CAElE,EAAc,UAAU,CAAC,AAAZ,IAAgB,CAAC,CAChC,CADkC,CAGlC,CAJwB,CAAC,AAFzB,CAQX,CAAC,AAED,SAAS,EAAiB,CAAiC,EACzD,IAPiC,CAAC,CAED,CAAC,AAMhC,IAFqB,AAGlB,EAAc,AAbmB,CAAC,MAYvB,GACa,CAAC,AAA1B,AAAc,IAAgB,CAAC,EAAI,EAAc,UAAU,CAAX,AAAY,KAAI,CAAC,CAAC,CAAC,CACrE,CAEJ,CAAC,AAMD,GARS,CACN,CAAC,IAOK,EAAyB,CAAiC,QACjE,CAAI,CAAC,IAAiB,CAAC,EAAc,IADN,EACb,IAA6B,CAAX,AAAY,IAAI,CAAC,EAAE,AAIzC,AACP,KAAK,GADU,CAAC,EAAc,KAAK,CAAC,GAAG,CAAC,CAAC,AAAZ,CAAa,CAAC,CAAE,EAAE,CAAC,CAAC,CACxC,EAAE,AACpB,CAAC,AAKY,AANQ,EAMR,mBAAmB,CAAkB,MAAM,CAAC,oBAAoB,CAAC,CAAC,AAIlE,EAAA,qBAAqB,CAAkB,MAAM,CACxD,sBAAsB,CACvB,AAED,CAFE,MAEW,UAAgC,EAAA,WAAR,QAA0D,CACrF,oBAAoB,AAAoB,CACxC,mBAAmB,AAAoB,AAE/C,aAAY,EAAwC,CAAA,CAAE,CAAA,CACpD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GACrC,GAD2C,CAAC,AACxC,CAAC,AADwC,2BACb,EAAE,AACpC,CAGQ,AAHP,AADoC,2BAIF,EAAA,CACjC,IAAI,CAAC,oBAAoB,CAAG,CAAA,EAAA,EAAA,uBAAuB,AAAvB,EAC1B,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CAAC,AACF,IAAI,CAAC,mBAAmB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAChD,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CADI,AACH,AAES,IAAI,EAAA,CAOZ,OAAO,AANQ,IAAI,EAAA,AAMN,CAAC,kCANwC,CACpD,UAAU,CACV,CAAC,aAAa,CAAC,CACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CACxB,AAEH,CAFI,AAEH,AAEO,KAAK,CAAC,CAAW,CAAE,CAAiC,CAAA,CAC1D,IAAM,EAC2B,QAAQ,GADtB,AACjB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CACtB,EAAO,IAAD,GAAQ,CACd,AADe,EAgFrB,IAhF2B,AACf,CAAC,CAAC,CAEd,IAAI,CAAC,KAFoB,AAEf,CACR,EAAc,KAAK,CAAC,KAAP,IAAgB,CAC7B,MAAM,CACN,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAE,IAMnC,EAAc,KAAK,CAAC,CAN4B,CAAC,CAChD,CAAC,CAKW,IAAgB,CAAC,KAAK,CAAG,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAC,IAAI,CAEpE,AAFqE,EAEpD,IACnB,IAAI,CAAC,IAD2B,CACtB,AADQ,AAAe,CAE/B,CAFiC,CAEnB,KAAK,CAAC,KAAP,IAAgB,CAC7B,QAAQ,CACR,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAE,IAgBnC,EAAyB,KAC3B,EAjBkD,CAAC,CAiB/C,AAhBH,CAgBI,AAhBH,GAesC,CAAC,CAC/B,CADiC,AAEzC,EAAc,IAFU,CAEL,CAAC,KAAP,IAAgB,CAC7B,WAAW,CACX,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAE,IAEhD,IAAI,CAAC,IAFwD,CAAC,AAEpD,CADT,AAEC,CAFA,CAEc,KAAK,CAAC,KAAP,IAAgB,CAC7B,WAAW,CACX,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAE,KAIlD,IAAI,CAAC,GAJ0D,CAAC,CAC7D,AAGO,CAHN,AAIF,EAAc,KAAK,CAAC,KAAP,IAAgB,CAC7B,MAAM,CACN,IAAI,CAAC,cAAc,CAAC,IAEtB,IAAI,CAAC,IAF8B,CAEzB,AAF0B,CAGlC,AAFD,CAAC,CAEc,SAAS,CAAC,CAAX,QAAoB,CACjC,MAAM,CACN,IAAI,CAAC,kBAAkB,CAAC,IAGM,AAEhC,EAF2D,GAEnC,IALe,CAAC,CACvC,CAI8B,AAJ7B,CAI8B,AAAC,EAFuC,CAAC,CAAC,AAGxE,IAD+C,AAC3C,CAAC,CADgB,AAA4B,EAAE,CAFK,CAG9C,CACR,EAAc,KAAK,CAAC,KAAP,IAAgB,CAC7B,EACA,IAAI,CAAC,CADU,yBACgB,CAAC,GAEpC,CAAC,CAAC,CAAC,AACH,EAH4C,CAAC,CAC1C,AAEC,CAFA,AAEC,KAAK,CAAC,EAAc,KAAK,CAAE,KAAR,MAAmB,CAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAExE,AAFyE,IAErE,CAAC,KAAK,CACR,EAAc,KAAK,CACnB,KADa,OACD,CACZ,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAE,IAEtC,IAAI,CAAC,IAF8C,CAAC,AAE1C,CACR,AAFD,CAAC,CAEc,KAAK,CACnB,KADa,MACF,CACX,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAE,IAG9B,CACT,CAAC,AAEO,OAN4C,AAMrC,CANsC,AAMrC,CALb,AAKwB,CALvB,AAKyB,CAHP,AAGwC,CAAA,AAHvC,CAIrB,IAAM,EAC2B,QAAQ,GADtB,AACjB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CACtB,EAAO,IAAD,GAAQ,CAAC,AACf,EAEA,EAA0B,EAFpB,AAE+C,AAHhC,CACd,CAAC,CAId,IAAI,CAAC,KAJoB,AAE+C,CAAC,CAE7D,AAF8D,CAE7D,EAAc,CAFE,IAEG,CAF0B,AAEzB,KAAP,IAAgB,CAAE,MAAM,CAAC,CAAC,AAEpD,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAC,KAAK,CAAG,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAC,IAAI,CAAC,AAErE,EAAiB,IACnB,IAAI,CAAC,IAD2B,CAAd,AAAe,EAAE,AACvB,CAAC,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAE,QAAQ,CAAC,CAAC,AAGpD,EAAyB,KAC3B,IAAI,CAAC,GADmC,CAAC,EAAE,CAC/B,CAAC,EAAc,EADD,GACM,CAAC,KAAP,IAAgB,CAAE,WAAW,CAAC,CAAC,AACzD,IAAI,CAAC,OAAO,CAAC,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAE,WAAW,CAAC,CAAC,CAG3D,IAAI,CAAC,OAAO,CAAC,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAE,MAAM,CAAC,CACnD,AADoD,IAChD,CAAC,OAAO,CAAC,EAAc,SAAS,CAAC,CAAX,QAAoB,CAAE,MAAM,CAAC,CAAC,AAExD,EAAwB,OAAO,CAAC,AAAC,IAC/B,IAD+C,AAC3C,CAAC,CAD4C,EAAE,CAA9B,GACT,CAAC,EAAc,KAAK,CAAC,KAAP,IAAgB,CAAE,EAC9C,CAAC,CAAC,CAAC,AACH,GAF6D,CAAC,AAE1D,CAF2D,AAE1D,OAAO,CAAC,EAAc,KAAK,CAAE,KAAR,MAAmB,CAAC,CAAC,AAE/C,IAAI,CAAC,OAAO,CAAC,EAAc,KAAK,CAAE,KAAR,OAAoB,CAAC,CAAC,AAChD,IAAI,CAAC,OAAO,CAAC,EAAc,KAAK,CAAE,KAAR,MAAmB,CAAC,AAChD,CAEQ,AAHyC,AAChD,kBAEyB,CAAC,CAAiC,CAAA,CAC1D,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,AAAC,GACC,SAAS,AAAgB,CAAmB,EACjD,CADkB,CADa,CAG7B,CAH+B,CAG1B,CAH4B,CAG7B,OAAU,EAAE,CAAC,iBAAiB,OACE,IAApC,EAAA,GAA6C,EAAxC,AACL,CADM,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAE/B,OAAO,EAAkB,KAAK,CAAC,IAAI,CAAE,IAAb,KAAsB,CAAC,CAAC,AAGlD,IAAM,EAAa,IAAI,CAAC,EAAA,CAAR,kBAA2B,CAAC,CAAC,AACvC,EAAyB,CAAA,CAAE,CAAC,AAC5B,KADU,kBACR,CAAqB,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,CAAC,AACnD,GAAI,EAAuB,CACzB,IAAM,EAAY,EAAsB,KAAzB,KADQ,CAC4B,CAAE,CACnD,MADqC,CAC9B,CAAE,IAAI,CAAC,OAAO,CACrB,iBAAiB,CAAE,IAAI,CAAC,SAAS,CAClC,CAAC,CAAC,AACC,EAAK,EAAD,iBAAoB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACnD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAS,CAAC,AAExC,EAAK,EAAD,iBAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACtD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAS,CAI9C,AAFC,AAF8C,IAIzC,EAAO,EAAH,AAAQ,EAAD,QAAW,CAC1B,IAAI,CAAC,MAAM,CAAC,UAAU,CACtB,IAAI,CAAC,MAAM,EAAE,SAAS,CACtB,WAAW,CACX,EACA,GAGF,KAJY,EAIL,AAHK,CACX,CAEW,AAFV,EAES,aAAgB,CACzB,EACA,EADI,AAEJ,IAAI,CACJ,SAAS,CAFQ,AAGjB,EACA,EAEJ,CAAC,AAEL,CAFM,AAEL,AAEO,EAPQ,OACK,CACd,CAAC,GAKc,CAAC,CAAiC,CAAA,CACtD,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,AAAC,GACC,SAAS,AADY,AACI,CAAmB,CADrB,CAG5B,CAH8B,AACZ,EAEd,IAAI,CAAC,EAAA,qBAAqB,CAAC,EAAE,AAK/B,EAAK,EAAD,OAAU,EAAE,CAAC,iBAAiB,OACE,IAApC,EAAA,GAA6C,EAAxC,AACL,CADM,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAL/B,OAAO,EAAa,KAAK,CAAC,IAAP,AAAW,CAAE,SAAS,CAAC,CAU5C,AAV6C,IAUvC,EAAa,IAAI,CAAC,EAAA,CAAR,kBAA2B,CAAC,CAAC,AACvC,EAAyB,CAAA,CAAE,CAAC,AAC5B,KADU,kBACR,CAAqB,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,CAAC,AACnD,GAAI,EAAuB,CACzB,IAAM,EAAY,EAAsB,IAAI,CAAC,AAA9B,EAAgC,CAAE,CAE/C,CAHqB,QAGZ,CAAE,AAF0B,IAEtB,CAAC,SAAS,EAAE,EAAE,EAAI,IAAI,CAAC,WAAW,CACjD,OAAO,CAAE,IAAI,CAAC,OAAO,CACrB,OAAO,CAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAI,IAAI,CAAC,OAAO,CAC5C,MAAM,CAAE,IAAI,CAAC,OAAO,CACrB,CAAC,CAAC,AACC,EAAK,EAAD,iBAAoB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACnD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAS,CAAC,AAExC,EAAK,EAAD,iBAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACtD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAS,CAAC,AAE9C,AACD,IAAM,EAAO,EAAH,AAAQ,EAAD,QAAW,CAC1B,IAAI,CAAC,kBAAkB,CACvB,IAAI,CAAC,KAAK,CAAC,SAAS,CACpB,IAAI,CAAC,EAAE,CACP,EACA,GAGF,KAJY,EACA,AAGL,CAFN,CAAC,AAEU,EAAD,aAAgB,CACzB,EACA,EADI,AAEJ,IAAI,CACJ,KAFY,IAEH,CACT,EACA,EAEJ,CAAC,AAEL,CAFM,AAEL,AAEO,EAPQ,OACK,CACd,CAAC,QAKmB,CAAC,CAAU,CAAE,CAAiC,CAAA,CACvE,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,AAAC,GACC,SAAS,AAAkB,CAAa,CAAE,CAAmB,EAClE,CADoB,EAElB,EAAK,CAH8B,CAG/B,CAHiC,EAAE,IAGzB,EAAE,CAAC,iBAAiB,EACE,SAApC,AAA6C,EAA7C,AACA,KADK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAE/B,OAAO,EAAwB,KAAK,CAAC,IAAI,CAAE,SAAS,CAAtB,AAAuB,CAAC,AAGxD,IAAM,EAAsC,CAAE,QAAQ,CAAE,IAAI,AAAtC,AAAsC,CAAE,CAAC,CAC3D,GAAa,IAAN,GAAa,CAAT,CAAC,IAAoB,QAAQ,CAAC,EAC3C,AAD6C,EAC5B,OAAO,CAAG,CAAA,CAAO,CAAC,AAErC,GAFkB,CAEZ,EAAyB,CAAA,CAAE,CAAC,AAC5B,KADU,kBACR,CAAqB,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,CAClD,AADmD,GAC/C,EAAuB,CACzB,IAAM,EAAY,EAAsB,EAAE,AAAE,GAA7B,AACX,EAAK,EAAD,CAFe,QACqC,CAArB,AAAsB,CAAC,MAClC,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACnD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAS,CAAC,AAExC,EAAK,EAAD,iBAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACtD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAS,CAAC,AAE9C,AACD,IAAM,EAAO,EAAK,AAAR,EAAO,QAAW,CAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,CAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,CAC1B,EAAE,AACF,GAQF,OARY,AAGR,CAFH,CAAC,KAES,MAAY,QAAQ,EAAE,CAC/B,EAAW,EACX,IADQ,CAAU,CAAC,CACT,AAAH,GAGF,EAAK,EAAD,EAHU,CAAC,UAGK,CACzB,EACA,EACA,AAFI,IAEA,CACJ,SAAS,CACT,EACA,EAEJ,CAEJ,AAFK,CAAC,AAEL,AAGO,AAXuB,EAGf,OACK,CACd,CAAC,gBAM2B,CACjC,CAAU,CACV,CAAiC,CAAA,CAEjC,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,AAAC,GACC,SAAS,AAEd,CAAY,CAHgB,AAI5B,CAAa,CAJiB,AAK9B,CAAmB,CAJC,AADY,CAOhC,GACE,EAAK,EAAD,OAAU,EAAE,CAAC,iBAAiB,OACE,IAApC,EAAA,GAA6C,EAAxC,AACL,CADM,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAE/B,OAAO,EAAe,KAAK,CAAC,IAAI,CAAE,CAAb,QAAsB,CAAC,CAAC,AAI/C,IAAI,EAAuC,EACvC,EAAe,EACf,EAAgB,AAF+B,CAAC,CAC3B,AAGH,CAHI,CADR,EACF,CACW,CAAC,GAAX,CAEe,EAA5B,AAA8B,OAAvB,GACT,EAAiB,CADF,CAEf,IADuB,CAAC,EACT,EACf,CAFc,EACF,IAAY,AACR,CADS,EAEG,GADf,GAAY,CAAC,GACY,EAAE,AAA/B,OAAO,IAChB,EAAiB,CADM,CAEvB,KADwB,CAAC,CACT,GADF,AAIhB,GAHe,CAGT,EAHqB,AAGI,CAHH,AAGG,CAAE,CAAC,AAC5B,EAAwB,EAAK,CADnB,CACkB,OAAU,EAAE,CAAC,KAApB,gBAAyC,CAAC,AACrE,GAAI,EAAuB,CACzB,IAAM,EAAY,EAAsB,EAAE,AAAE,CAE1C,EAFa,KADQ,EAGZ,CAAE,CAAE,GAAG,CAAE,CAFmB,GAEf,CAAC,GAAG,CAAE,CAC5B,OAAO,CAAE,EACT,OAAO,CAAE,EACV,AAFsB,CAErB,CAAC,AACC,EAAK,EAAD,KAFgB,YAEI,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACnD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAS,CAEvC,AAFwC,EAEnC,EAAD,iBAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACtD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAS,CAI9C,AAJ+C,AAE9C,IAEK,EAAO,EAAH,AAAQ,EAAD,QAAW,CAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,CAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,CAC1B,EAAE,AACF,GAGI,EAAS,EAAK,EAAR,AAAO,CAHP,CACX,CAAC,UAEiC,CACjC,EACA,EADI,AAEJ,IAAI,CACJ,OAFc,EAEL,CACT,EACA,GAQF,OAJI,EALY,CAKgB,AAJjB,CACd,CAAC,CAGQ,KAA8B,EAAE,AAA5B,OAAO,IACnB,CAAM,CAAC,AADkB,EAClB,qBAAqB,CAAC,EAAG,CAAA,CAAI,CAAC,AAGhC,CACT,CAAC,AAEL,CAFM,AAEL,AAEO,GALW,CAAC,YAKI,CAAC,CAAU,CAAE,CAAiC,CAAA,CACpE,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,AAAC,GACC,KADiB,EAAE,EAAE,AACZ,AAEd,CAAc,CACd,CAAa,CACb,CAAmB,EAEnB,GACE,EAAK,CAPoB,CAOrB,OAAU,EAAE,CAAC,iBAAiB,OACE,IAApC,EAAA,GAA6C,EAAxC,AACL,CADM,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAE/B,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAElB,UAAU,EAA7B,AAA+B,OAAxB,IACT,EAAW,CADK,CAEhB,IADQ,CAAU,CAAC,CACZ,AAAG,GAGZ,IAAM,EAHe,AAGuB,CAAA,AAHtB,CAGwB,CAAC,AAC/C,OAAQ,EAAE,CACR,CADU,AADU,GAEf,YAAY,CACf,EAAiB,SAAS,CAAG,EAC7B,EADgB,GAElB,CADQ,CADgC,CAAC,EAEpC,WAAW,CACd,EAAiB,UAAU,CAAG,EAC9B,CADgB,IAElB,CADQ,CADiC,CAAC,MAGxC,EAAiB,QAAQ,CAAG,EAE/B,GAFmB,EAGJ,EAHyB,CAAC,CAGtC,IACF,CADuB,CACN,CADR,AAAgB,MACD,CAAG,CAAA,CAAO,CAAC,AAGrC,GAHkB,CAGZ,EAAyB,CAAA,CAAE,CAAC,AAC5B,KADU,kBACR,CAAqB,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,CAAC,AACnD,GAAI,EAAuB,CACzB,IAAM,EAAY,EAAsB,EAAE,AAAE,EACxC,CADW,EACN,CAAD,EAFe,QACqC,CAArB,AAAsB,CAAC,MAClC,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACnD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAS,CAAC,AAExC,EAAK,EAAD,iBAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACtD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAS,CAAC,AAE9C,AAED,IAAM,EAAO,EAAH,AAAQ,EAAD,QAAW,CAC1B,IAAI,CAAC,UAAU,CACf,IAAI,CAAC,SAAS,CACd,EACA,AADE,GAIJ,OAHY,AAGL,CAFN,CAEW,AAFV,EAES,aAAgB,CACzB,EACA,EADI,AAEJ,IAAI,CACJ,CAFQ,QAEC,CACT,EACA,EAEJ,CAAC,AAEL,CAMQ,AANP,AAFK,EAHU,OACK,CACd,CAAC,QASmB,EAAA,CACzB,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAQ,AAAD,GACE,KADiB,EAAE,EAAE,AACZ,EACd,IAAM,EAAc,EAAA,KAAK,CAAC,CAAT,CADe,KACC,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AAC9C,EAAY,EAAK,EAAD,GAAP,gBAA6B,CAAC,GAAG,CAC9C,CADgD,CACvC,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAChC,CAED,AAFE,OACE,IAAW,CAAS,CAAC,EAAA,CAAZ,kBAA+B,CAAC,CAAG,CAAA,CAAW,CAAC,AACrD,CACT,CAAC,AAEL,CAFM,AAEL,AAEO,MALc,CAAC,mBAKW,CAAC,CAAgB,CAAA,CACjD,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,AAAC,GACC,KADiB,EAAE,EAAE,AACZ,EAEd,OADA,IAAI,CAAC,EAAA,EAD2B,iBACR,CAAC,CAAG,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AACrD,EAAK,EAAD,mBAAsB,CAAC,GAAG,CACnC,CADqC,CAC5B,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAChC,AACH,CADI,AACH,AAEL,CAAC,AAEO,AAJF,UAIY,CAChB,CAA+B,CAC/B,CAAiB,CACjB,CAAiB,CACjB,CAAsB,CACtB,CAAiB,CAAA,CAEjB,IAAM,EAA8B,CAClC,GAAG,CAAU,CACb,GAAG,CAAA,EAAA,CAFgB,CAEhB,2BAAA,AAA2B,EAC5B,EACA,IAAI,CAAC,GADK,gBACc,CACxB,IAAI,CAAC,oBAAoB,CAC1B,CACF,AAEG,CAFF,IAEM,CAAC,mBAAmB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACnD,CAAe,CAAC,EAAA,iBAAiB,CAAC,CAAG,EACrC,CAAe,CAAC,EAAA,GAD8B,CAAC,UACjB,CAAC,CAAG,UAAU,CAAC,CAAC,AAE5C,IAAI,CAAC,mBAAmB,CAAG,EAAA,QAFoD,QAEpC,CAAC,MAAM,EAAE,CACtD,CAAe,CAAC,EAAA,sBAAsB,CAAC,CAAG,EAC1C,CAAe,CAAC,EAAA,GADmC,CAAC,eACjB,CAAC,CAAG,EAAA,4BAA4B,CAAC,CAAC,AAGvE,IAAM,EACJ,IAAI,CAAC,CADO,YAHiF,MAIrE,CAAG,EAAA,gBAAgB,CAAC,MAAM,CAC9C,CAAA,EAAG,EAAS,CAAA,EAAI,EAAW,EAAf,EAAmB,CAAA,CAAE,CACjC,CAD0B,AAC1B,SAAA,EAAY,EAAS,CAAA,EAAI,EAAS,CAAE,CAE1C,AAF2C,AAAhB,KAAa,EAEjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAC1B,EACA,CACE,IAAI,CAFE,AAEA,EAAA,QAAQ,CAAC,MAAM,CACrB,UAAU,CAAE,EACb,CACD,EAAa,EAAA,KAAK,CAAR,AAAS,CAAR,CAAC,AAFiB,KAEH,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,QAAc,EAAJ,AAE3D,CAF4D,AAE3D,AAEO,CAJqD,CAAC,IAAU,CACrE,CAAC,OAGmB,CACrB,CAAU,CACV,CAAc,CACd,CAAiB,CACjB,CAAgB,CAChB,CAAmB,CACnB,CAA6C,CAAA,CAE7C,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,EAHoC,CAGhC,QAAQ,KAAY,QAAQ,CAC9B,CADgC,MACzB,EAAK,EAAD,mBAAsB,CAAC,GAAG,CACnC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,EACA,EACA,EADI,AAEJ,EAHQ,AAIR,EADI,AAEJ,EADI,AACC,EAAD,EAHQ,KAGE,EAAE,CAAC,YAAY,CAC7B,GAGC,EACL,IAAM,EAAW,EAAK,AAJL,CACd,CACF,AAEoB,CAFnB,CAEY,iBAA6B,CAAC,GAAG,CAC7C,CAD+C,CAC1C,EAAD,GAAM,CAAC,EAAc,IAE3B,AAF+B,CAAC,CAC/B,CAAC,GACK,AAFkB,CAElB,EAAA,EAAA,qBAAA,AAAqB,EAC1B,EACA,EACA,EADI,AACC,EAAD,AAFI,OAEM,EAAE,CAAC,YAAY,CAC7B,GAEH,AACH,CAAC,AAEO,SALW,CACd,CAAC,UAIuB,CAAI,CAAuC,CAAA,QACtE,AAAI,IAAI,CAAC,SAAS,EAAE,CAAC,+BAA+B,CAC3C,CAD6C,CAC7C,OAAO,CAAC,IAAI,CAAC,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAE,GAEhD,GAEX,CAAC,CACF,AA5iBD,EAAA,MAuiB6E,CAAC,CAAC,CAElD,EAAE,CAAC,WAziBhC,CAAA,wBA4iBC,2FCrpBD,IAAA,EAAA,EAAqD,CAAA,CAAA,QAA5C,OAAA,cAAA,CAAA,EAAA,0BAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,uBAAuB,CAAA,GAAA,6HCV1B,EAAmB,UAAU,CAEtB,EAAqB8T,CAF5B,CAE4BA,cAArB,QAA2C,CACtD,EACA,IACE,IAAIuJ,EAAAA,IAFU,mBAEa,CAAC,CAC1B,YAAY,CAAC,CAAI,EAAE,AACjBpB,EAAAA,eAAe,CAAC,EAAM,EAAF,qBAAyB,CAAC,AAChD,CAAC,AACP,CAAK,CAAC,EA0BO,EAAsBjc,EAAAA,eAAtB,EAAuC,CAvBtB,AAuBuB,KAtB5C,CACL,AAFgC,IAE5B,CAAE,EACN,OAoBqE,EApB5D,GAAG,AACV,EAFoB,CAGtB,CAAC,CACL,CAAG,YAFqB,EAAE,kECPvB,OAAA,cAAA,CAAA,EAAA,aAAA,yNAiBU,EAAA,yBAAyB,CAAG,sBAA+B,CAY3D,AAZ4D,EAY5D,YAAY,CAAG,SAAkB,CAAC,AAYlC,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAYtC,EAAA,YAAY,CAAG,SAAkB,CAAC,AAWlC,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,qBAAqB,CAAG,OAAgB,CASxC,AATyC,EASzC,kCAAkC,CAC7C,6BAAsC,CAAC,wGCpGvC,CADU,EAAA,WACV,GADwB,GAAd,CAAc,CAAd,cAAc,CAAA,EAAA,CAAA,EACxB,CACD,WADC,CAAA,iBAAgC,CAAA,+BCmElC,SAAgB,EAAqB,CAA+B,SAClE,AAAI,EAAY,CAAT,AAAS,CAAA,CAAP,CAAW,EAAI,AADU,CACX,OAAS,EAAE,CAAA,CAAA,CAAG,CAAC,AAC/B,EAAE,AACX,CAzEG,AAwES,AACX,OAzEE,cAAA,CAAA,EAAA,aAAA,oIAIH,EAAA,SAAA,CAAA,EAAA,OAAgB,AAAU,CAAW,EAIpC,AAHC,GAAM,GADiB,GACf,CAAI,MAAE,CAAI,UAAE,CAAQ,MAAE,CAAI,CAAE,CACjC,GAAU,EAAO,CAAX,GAAU,YAAiB,CAAC,CAAI,GAAU,CAAA,CAAE,CAAN,AAAO,AACtD,MAAO,MAAE,IAAI,GAAE,IAAI,OAAE,OAAU,CAAF,AAAM,CAAE,AACvC,CADwC,AACvC,CADoC,AAGrC,EAAA,aAAA,CAAA,EAAA,OACE,AADc,CACU,CACxB,CAAwB,CACxB,CAA4B,EAa7B,AAXC,IAAI,EALuB,AAKV,CAAA,OAAH,MAAG,EAAgB,GAAQ,CAAJ,UAAe,CAAA,CAAE,CAUtD,AAVuD,MAEnC,QAAQ,EAAxB,AAA0B,OAAnB,IAAI,AACb,GAAc,CAAA,CAAA,EAAI,EAAI,CAAZ,AAAY,AAAE,CAAF,AAAG,CAGH,QAAQ,EAA5B,AAA8B,OAAvB,IACT,GAAc,CADG,AACH,CAAA,EAAI,EAAQ,CAAhB,AAAgB,AAAE,CAAC,CAGxB,CACT,CAAC,CAKD,AAT8B,EAS9B,KANmB,CAAC,QAMpB,CAAA,EAAA,OAAgB,AAAe,CAAoC,OAMlE,CALC,AAAqB,KADO,GACC,EAAE,AAA3B,OAAO,EACF,EAEA,CAHO,CAGD,CAFD,CAAC,CAEG,AAEpB,AAFgB,CAAK,AAEpB,CAED,EAAA,WAAA,CAAA,EAAA,OAAgB,AACd,CAAoC,CACpC,CAAc,EASf,MAX0B,AAIzB,AAAI,AAAiB,QAAQ,EAAE,OAApB,EACF,EAAqB,CADd,EAKP,EAAqB,CAJM,CAAC,CAIG,AAJF,EAIQ,CAAV,EAAS,GAAO,CAAC,AAEvD,CAFwD,AAEvD,AAN8B,CAgB/B,EAAA,EAZ+B,SAY/B,CAAA,EAAA,OAAgB,AAAY,CAAoC,EAC9D,EAOD,EAPO,EAA4B,EADT,IACX,EAA4B,CAAC,CAA1B,AAA2B,OAApB,EAAqB,EAAM,CAAtB,EAAqB,AAAI,CAAC,AAAE,CAAD,CAElD,EAAa,CAF2C,CAAC,CAElC,KAAb,AAAW,EAAS,CAAC,GAAG,CAAC,CAAC,MAC1C,AAA0B,QAAQ,EAA9B,OAAO,GAA0C,CAAC,CAAC,EAAE,CAAnB,EAAjB,AACZ,GAAU,KAAF,AAD+B,IACpB,CAAC,CAAC,CAAE,GAEzB,CACT,CAAC,CAED,EAAA,EAL4C,CAE3B,AAF4B,CAAC,AAE5B,gBAGlB,CAAA,EAKA,EAAA,cAAA,CAAA,EAAA,AAFC,OAEe,AAAe,CAAU,EACvC,IAAM,CAUP,AAVQ,CAAG,EAAK,EAAD,CADc,GACP,CAAC,gBAAgB,CAAC,AACnC,EAAW,EAAE,CAAC,AAQlB,GARY,IACZ,GAAY,CAAC,CAAC,GAAN,CAAU,CAAC,AAAE,CAAD,AAAC,OAAA,EAAU,CAAC,CAAC,IAAI,CAAA,GAAA,CAAK,CAAC,AAAE,CAAD,CAAG,CAC/C,AADgD,GACpC,CAAC,CAAC,GAAN,CAAU,CAAG,AAAF,CAAC,AAAC,MAAA,EAAS,CAAC,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC,AAAE,CAAD,CAAG,CAAC,AAC9C,GAAY,CAAC,CAAC,GAAN,KAAc,CAAC,AAAE,CAAD,AAAC,WAAA,EAAc,CAAC,CAAC,QAAQ,CAAA,GAAA,CAAK,CAAG,AAAF,CAAC,CAAG,CAAC,AAC5D,GAAY,CAAC,CAAC,GAAN,CAAU,CAAC,AAAE,CAAD,AAAC,OAAA,EAAU,CAAC,CAAC,IAAI,CAAA,CAAA,CAAG,CAAG,AAAF,CAAC,CAAG,CAAC,AAC1C,AAAC,CAAC,CAAC,IAAI,EAAE,AACX,GAAW,EAAS,GAAZ,GAAW,GAAU,CAAC,CAAC,CAAE,EAAS,MAAD,AAAO,CAAG,EAAC,CAAC,CAEhD,AAFiD,CAAC,CAEzC,IAAI,EAAL,AAAO,AACxB,CADyB,AACxB,SAH2E,uBCnFzE,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,sCAAsC,CAAC,+BCJhE,OAAA,cAAA,CAAA,EAAA,aAAA,0CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAQ4B,EAC5B,EAAA,EAAA,CAAA,CAAA,QAOA,EAAA,EAAA,CAAA,CAAA,IADwC,IASxC,EAAA,EAUmB,CAAA,CAAA,QAEnB,CAb6C,CAa7C,EAAA,CAAA,CAAA,GAFmB,CAE+B,IAElD,EAAA,EAOiB,CAAA,CAAA,QAEjB,EAAA,EAA0D,CAAA,CAAA,CAFzC,MAUjB,OAAa,GAR6C,OAQhB,EAAA,QAAR,WAAuD,CAC/E,oBAAoB,AAAoB,CACxC,mBAAmB,AAAoB,AAG/C,aAAY,EAAqC,CAAA,CAAE,CAAA,CACjD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GACrC,GAD2C,CAAC,AACxC,CADyC,AACxC,2BAA2B,EAAE,AACpC,CAAC,AADoC,AAI7B,2BAA2B,EAAA,CACjC,IAAI,CAAC,oBAAoB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EACjD,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CAAC,AACF,IAAI,CAAC,mBAAmB,CAAG,CAAA,EAAA,EAAA,uBAAuB,AAAvB,EACzB,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAE7C,AADG,CACF,AAEkB,AAHf,wBAGuC,EAAA,CACzC,IAAI,CAAC,oBAAoB,CAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CACxD,EAAA,kCAAkC,CAClC,CACE,WAAW,CACT,yFAAyF,CAC3F,IAAI,CAAE,cAAc,CACrB,CACF,AACH,CADI,AACH,AAOO,aAAa,CAAC,CAAS,CAAE,CAAmB,CAAE,CAAa,CAAA,CACjE,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAE,OAAE,EAAO,GAAF,CAAM,CAAE,CAAW,CAAE,CAAC,AACjE,CADkE,AACjE,AAES,IAAI,EAAA,CAHgD,AAI5D,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,OAAO,CACP,CAAC,YAAY,CAAC,CACb,AAAD,IACM,CAAA,EAAA,EAAA,IAD2B,EAAE,EAAE,CAC/B,AAAS,EAAC,EAAc,WAAD,KAAiB,CAAC,EAAE,AAC7C,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,OAAoB,CAAC,CAAC,AAElD,IAAI,CAAC,KAAK,CACR,EACA,WADa,OACK,CAClB,IAAI,CAAC,sBAAsB,EAAS,CACrC,CAEG,AAFF,CAEE,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,UAAU,CAAX,AAAY,EAAE,AACvC,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,CAAc,CAAC,CAAC,AAE5C,IAAI,CAAC,KAAK,CACR,EACA,WADa,CACD,CACZ,IAAI,CAAC,gBAAgB,EAAS,CAC/B,CAAC,AAEE,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,WAAD,MAAkB,CAAC,EAAE,AAC9C,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,QAAqB,CAAC,CAAC,AAEnD,IAAI,CAAC,KAAK,CACR,EACA,WADa,QACM,CACnB,IAAI,CAAC,uBAAuB,EAAS,CACtC,CAAC,AAEK,GAER,AAAD,SACwB,CAHF,CAAC,EAGjB,AAD2B,EAAE,EAEjC,AAFmC,CACJ,EAAE,CAC7B,CAAC,IADY,CAAuB,EAC5B,CAAC,EAAe,WAAF,OAAoB,CAAC,CAAC,AAChD,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,CAAc,CAAC,CAAC,AAC1C,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,QAAqB,CAAC,CAAC,AACnD,CAAC,CACF,CACF,AACH,CADI,AACH,AAGO,sBAAsB,EAAA,CAC5B,OAAO,AAAC,IACN,IAAM,EAAa,IAAI,CAAC,AAExB,GAFgB,IAET,EAHiC,EAAE,EAAE,GAI1C,AADc,CACsC,EAEpD,IAAM,EAAiB,KAA4B,EAHrB,KAGV,EAAwC,CAAC,CAAC,AAS9D,OANA,CAH+C,CAAC,AAGrC,KAAK,CACd,EADQ,AAER,OAAO,CACP,EAAW,EAFG,MAEJ,GAAY,CAAC,IAGlB,CACT,CAAC,AACH,CADI,AACH,AACH,CADI,AACH,AAGO,MATqC,CAAQ,CAC9C,CAAC,CAEmB,CAAC,KAMJ,EAAA,CACtB,OAAO,AAAC,IACN,IAAM,EAAa,IAAI,CAAC,AACxB,GAFkC,AAClB,EADoB,EAE7B,AAF+B,SAEtB,AAAW,CAAuC,EAChE,IAAM,EAAO,CADW,CACd,GAAyB,SAAS,CAAC,CAAC,AAW9C,EAX+B,CAAC,IAEhC,EAAW,KAAK,CAAC,EAAP,AAAa,EAAF,KAAS,CAAE,EAAW,QAAD,GAAY,CAAC,IAAI,AAC3D,CAD4D,CAAC,AAClD,CADmD,IAC9C,CACd,EADQ,AAER,EADI,aACW,CACf,EAAW,QAAD,WAAoB,CAAC,IAAI,AAErC,CAFsC,CACrC,AACU,CADT,IACc,CAAC,EAAP,AAAa,EAAF,GAAO,CAAE,EAAW,QAAD,KAAc,CAAC,IAAI,AAC3D,CAD4D,CACjD,AADkD,CAAC,OACpD,SAAkB,CAAC,EAAM,EAAF,AAAI,CAAC,CAAC,AAEhC,CACT,CAAC,AACH,CADI,AACH,AACH,CADI,AACH,AAEO,AALS,CAAC,YAKG,CAAC,CAAS,CAAA,CAC7B,OAAO,AAAC,IACN,IAAM,EAAa,IAAI,CAAC,AADO,AAE/B,EAFiC,CACjB,CADmB,GAE5B,SAAS,AAAI,CAAkB,EAAnB,AACjB,IAAM,EAAQ,EAAJ,AAAiB,EAAD,aAAgB,CAAC,MAAM,CAAC,AAC5C,EAAS,EAAa,CAAjB,CAAgB,cAAiB,CAAC,MAAM,CAE7C,AAF8C,EAEhC,CAAA,EAAA,EAAA,IAAH,UAAG,AAAc,EAAC,GACnC,CADuC,CAAC,AAC7B,CAD8B,OAC/B,KAAc,CAAC,CAAC,CAFZ,EAAO,CAAA,CAAK,AAEK,AAFb,CAAS,AAEM,EAAa,MAAM,CAAC,CAAC,AACtD,CAD4C,CACjC,QAAD,KAAc,CAAC,CAAC,EAAO,EAAa,CAAf,KAAqB,CAAC,CACrD,AADsD,CAAV,CAC5B,KAAK,CAAC,EAAM,EAAF,GAAX,IAAsB,CAAC,AACxC,CADyC,AACxC,AACH,CADI,AACH,AACH,CADI,AACH,AAGO,uBAAuB,EAAA,CAC7B,OAAQ,AAAD,IACL,IAAM,EAAa,IAAI,CAAC,AACxB,GADgB,IACT,GAFkC,EAAE,EAAE,EAE7B,AAAW,CAAuC,EAChE,IAAM,EAAU,CADQ,IACX,AAAgC,SAAS,CAAC,CAUvD,AAVwD,OAGxD,EAAW,AAH8B,CAAC,IAG1B,CACd,EACA,AAFQ,KACD,UACQ,CACf,EAAW,QAAD,WAAoB,CAAC,IAEjC,EAAW,CAF6B,CAAC,CACxC,CAAC,CACc,CAAC,EAAP,AAAgB,KAAF,AAAO,CAAE,EAAW,QAAD,CAAU,CAAC,IAE/C,CACT,CAAC,AACH,CAJiE,AAG7D,AACH,AACH,CACQ,AAN4D,AAKnE,AADG,CAJiE,CAAC,CAElD,CAAC,KAIJ,CAAC,CAA+B,CAAA,CAC/C,OAAO,AAAC,IACN,IAAM,EAAa,CADQ,EAAE,CACN,CADQ,AACP,AACxB,GADgB,IACT,SAAS,AAAI,CAAU,CAAE,CAAb,AAA4B,EAE7C,GAAI,CAAC,EAAW,QAAD,AAAY,CAEzB,CAFwB,AAAG,MAC3B,EAAW,OAAO,CAAR,AAAS,EAAS,KAAF,AAAO,CAAC,CAAC,AAC5B,EAAY,KAAK,CAAC,EAAS,CAAhB,IAAc,IAAW,CAAC,CAAC,AAE/C,EAAY,KAAK,CAAC,EAAS,CAAhB,IAAc,IAAW,CAAC,CAAC,AACtC,IAAM,EAAQ,EAAQ,CAAX,IAAU,CAAiD,CACtE,AADuE,CAAT,EAC1D,EAAO,CAMT,EANO,EAMD,EAAO,CAAK,CAAR,AAAS,AAJH,MAIS,EAJD,EAAtB,OAAO,EAAE,AACL,WAAW,CAAI,EAAgB,KAAD,EAAQ,CACtC,MAAM,CAAC,EAAE,CAAC,AAEU,CAAC,AAFV,IAEc,CAAC,AAChC,EAAW,QAAD,SAAkB,CAAC,EAAM,EAAF,AAAI,CAAC,AACvC,AACH,CACF,AAH6C,AAE1C,CAAC,AACH,AACH,CADI,AACH,AAGO,mBAAmB,CAAC,CAA8C,CAAA,CACxE,OAAO,AAAC,IACN,IAAM,EAAa,IAAI,CAEvB,AAFwB,GAAR,GADqB,CAG9B,CAHgC,EAAE,MAIvC,AADc,CACA,CACd,CAAc,CACd,CAAc,EAGd,GAAI,CAAC,EANsB,AAMX,QAAD,AAAY,CAEzB,CAFwB,AAAG,MAC3B,EAAW,OAAO,CAAR,AAAS,EAAM,EAAF,aAAiB,CAAC,CAAC,AACnC,EAAsB,KAAK,CAAC,EAAM,EAAF,OAAW,CAAC,CAAC,AAGtD,AAH8B,GAGL,CAAC,EAAtB,SAAS,CAAC,MAAM,EAA0B,UAAU,EAA1B,OAAO,EAAqB,CACxD,CADuC,GACjC,EAAU,EAAW,GAAd,KAAa,qBAA8B,CACtD,GAEF,CAFmC,CAClC,CAAC,IACK,EAAsB,IAAI,CAAC,EAAM,EAAF,CACvC,AACD,GAAyB,CAFwB,AAEvB,CAFwB,CAAC,AAE/C,GAF0B,MAEjB,CAAC,MAAM,EAA0B,UAAU,EAA1B,OAAO,EAAqB,CACxD,CADuC,GACjC,EAAU,EAAW,GAAd,KAAa,qBAA8B,CACtD,GAEF,CAFmC,CAClC,CAAC,IACK,EAAsB,IAAI,CAAC,EAAM,EAAF,AAAQ,EAAF,CAC7C,AACD,GAAI,AAAqB,CAAC,AAF6B,CAAC,CAAC,CAA3B,KAEjB,IAAC,MAAM,EAA0B,UAAU,EAA1B,OAAO,EAAqB,CACxD,CADuC,GACjC,EAAU,EAAW,GAAd,KAAa,qBAA8B,CACtD,GAEF,CAFmC,CAClC,CAAC,IACK,EAAsB,IAAI,CAAC,EAAM,EAAF,AAAQ,EAAF,AAAQ,EAAF,CAGpD,AAFC,IAD4D,CAA/B,AAAgC,CAAC,CAGxD,EAAsB,KAAK,CAAC,EAAM,EAAF,OAAW,CAAC,AACrD,CAD8B,AAAwB,AACrD,AACH,CADI,AACH,AACH,CADI,AACH,AAEO,6BAA6B,CAAC,CAA6B,CAAA,CACjE,IAAM,EAAa,IAAI,CAAC,AAClB,EAAgB,CADN,CACM,OAAO,CAAC,CAAX,KAAiB,EAAE,CAAC,AACvC,OAAO,SAEL,CAA0B,CAC1B,CAAqC,EAEjC,GAGE,CAAC,CAAA,EAAA,EAAA,CAHO,EAAE,MAGT,AAAS,EAAC,EAAW,KAAK,CAAC,EAAP,AAAS,AAChC,EAAW,KAAK,CACd,EADQ,AAER,OAAO,CADG,AAEV,EAAW,QAAD,GAAY,CAAC,IAIX,MAJqB,CAAC,CACnC,CAAC,CAGsB,EAAxB,AAA0B,OAAnB,EAAE,CACX,EAAA,OAAO,CAAC,IAAI,CAAC,EAAe,EAAE,AAAE,IAAI,CAAE,EAAK,CAAF,CAE7C,AAF8B,CAE7B,AACH,CADI,AACH,AAEO,MALmD,CAAC,CAAC,GAK1C,CAAC,CAAmD,CAAA,CACrE,OAAO,AAAC,IACN,IAAM,EAAa,GADU,CACN,CADkC,AACjC,AAExB,EAH2D,CAC3C,IAET,SAAS,AACd,CAA0D,CAC1D,CAAwD,CACxD,CAAoC,AAHjB,EAKnB,GAAI,CAAC,EAAW,QAAD,AAAY,CAEzB,CAF2B,AAAH,MACxB,EAAW,OAAO,CAAR,AAAS,EAAY,OAAO,CAAT,AAAU,CAAC,AACjC,EAAc,KAAK,CAAC,EAAY,GAAnB,KAAiB,CAAW,CAAC,CAAC,AAGpD,IAAM,EAAyB,CAAA,CAAE,CAC3B,AAD4B,KAAlB,CACR,CAAI,MAAE,CAAI,UAAE,CAAQ,MAAE,CAAI,CAAE,CAAG,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAW,MAAM,CAAC,CAAR,AAAS,AAC9D,EAAa,QAAH,AAAW,CAAC,EAAM,EAAF,AAAI,CAAC,CAAC,AAChC,EAAc,CAAA,EAAA,EAAA,IAAH,UAAG,AAAc,EAAC,GAC/B,EADoC,AACzB,CAD0B,CAAC,MAC5B,WAAoB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACzD,CAAU,CAAC,EAAA,cAAc,CAAC,CAAG,EAAA,qBAAqB,CAAC,AACnD,CAAU,CAAC,EAAA,yBAAyB,CAAC,CAAG,CAAA,EAAA,EAAA,aAAA,AAAa,EACnD,EACA,EADI,AAEJ,EADI,CAGN,CAAU,CAAC,EAAA,CAFD,CACT,CAAC,SACqB,CAAC,CAAG,EAC3B,CAAU,CAAC,EAAA,EADwB,CAAC,SACb,CAAC,CAAG,EAC3B,CAAU,CADqB,AACpB,CADqB,CACrB,iBAAiB,CAAC,CAAG,GAE9B,EAAW,MAF8B,CAAC,CAEhC,WAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CAC5D,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAAA,0BAA0B,CAAC,AAC7D,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,EAChC,CAAU,CAAC,EAAA,EAD6B,CAAC,eACZ,CAAC,CAAG,GAE/B,EAAW,MAF+B,CAAC,CAEjC,YAAqB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CAC1D,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,EAC5B,AAAD,EADiC,CAAC,EAC5B,CAAC,KACT,CAAU,CAAC,EAAA,CADQ,CAAC,EAAE,cACO,CAAC,CAAG,CAAA,CAAU,CAAC,CAG5C,EAAW,QAAD,YAAqB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CAC7D,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAC9B,AAAC,EADiC,CAAC,EAC7B,CAAC,IACT,EAAU,CAAC,EAAA,CADQ,CAAC,EAAE,YACK,CAAC,CAAG,CAAA,CAAU,CAAC,CAG9C,IAAM,EAAO,EAAH,AAAc,MAAM,CAAC,CAAR,QAAiB,CAAC,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,GAAQ,CAC3D,CADwD,CAAC,EACrD,CAAE,EAAA,QAAQ,CAAC,MAAM,YACrB,EACD,CAAC,CAAC,AAEH,GAAI,EAAW,CAHH,OAGE,CAAU,EAAE,CAAC,yBAAyB,CAAE,CACpD,IAAI,EAEA,IAFM,CAAC,AAEF,CAAC,OAAO,CAAC,GAChB,EAAS,EACA,EADH,OACY,CAAC,AAFc,CAEb,AAFc,CAEb,CAFe,CAEb,CADG,AAE1B,CAF2B,CAElB,CAAC,EAAkB,CAAtB,AAAuB,CAG/B,EAAK,EAAD,SAHyB,CAGZ,CACf,EAAA,cAAc,CAAC,YAAY,CAC3B,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,EAAO,GAAF,CAEpB,AAED,EAJ6B,CAAC,CAC3B,AAGG,CAHF,CAGY,KAAK,AAAR,CAAS,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAA,AAC7C,GAAG,AAAmB,CAAlB,SAA4B,CACjC,CADQ,AACP,OADc,GAAG,AAGb,EAAgB,EAAA,OAAO,CAAC,CAAX,KAAiB,EAAE,CAAC,AAEvC,GAAgB,CAAC,CAAC,GAAd,EA0BF,KA1BS,EAoBT,EAAW,KAAK,CACd,EADQ,OACC,CACT,EACA,EAAW,GADJ,KACG,WAAoB,CAAC,EAAM,EAAF,EAG9B,EAAA,OAH6C,AAGtC,CAHuC,AAGtC,CAFd,CAAC,EAEiB,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,CAAK,CACrD,CADuD,CACzC,KAAK,CAAC,EAAY,GAAnB,KAAiB,CAAW,CAAC,CAAC,AA3BlC,EAClB,IAAM,EAAoC,EAAA,OAAO,CAAC,GAA7B,CAAiC,CACpD,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAChC,CADoC,CAAC,CAClC,CACM,CADJ,CACkB,KAAK,CAAC,EAAY,GAAnB,KAAiB,CAAW,CAAC,CAAC,CAKtD,OAFA,EAAA,OAAO,CAAC,IAAI,CAAC,EAAe,GAErB,EACJ,EAAE,CAAC,GAHoB,IAAiB,AAG9B,CAAA,AAAE,AAH6B,CAAC,CAEvB,CAElB,AADc,CAAC,CACV,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CACH,CACA,EAAE,CAAC,KAAK,CAAE,GAAG,EAAE,AACd,EAAK,EAAD,CAAI,EAAE,AACZ,CADa,AACZ,CAAC,CAAC,AAYT,AAXG,CAWF,AACH,CADI,AACH,AACH,CAAC,AADG,AAGI,GAfK,gBAec,CAAC,CAAU,CAAE,CAAsB,CAAA,CAC5D,OAAO,AAAC,GACC,SACL,CAAiC,CACjC,CAAa,CAHiB,AAI9B,CAA+B,CAJC,CAahC,CAbkC,MAM9B,GAAG,AACL,EAAK,AADE,EACH,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,AAEL,EAAK,EAAD,CAAI,EAAE,CAAC,AACJ,EAAA,OAAO,CAAC,IAAI,CAAC,EAAe,GAAG,CACpC,CADsC,IAClB,EADW,OACF,CAAC,CAC/B,AACH,AAFoB,CAAC,AACjB,AACH,AAEL,CAFM,AAEL,AAEO,iBAAiB,CAAC,CAAqB,CAAE,CAAU,CAAA,CACzD,IAAM,EAAc,EAAE,CAAI,CAAA,EAAA,EAAA,CAAT,aAAS,AAAc,EAAC,GAEzC,CAF6C,CAAC,AAEzC,CAF0C,CAE3C,AAAG,CAAC,YAAY,CAAA,AAAE,IACpB,IAAI,CAAC,EAD0B,CAAC,EAAE,QAChB,CAAC,CAAC,CAAE,EAAa,MAAM,CAAC,AAC5C,CAD6C,AAC5C,CADkC,AACjC,CAAC,AAEH,EAAK,EAAD,AAAG,CAAC,SAAS,CAAA,AAAE,IACjB,IAAI,CAAC,EADuB,CAAC,EAAE,QACb,CAAC,CAAC,CAAC,CAAE,EAAa,MAAM,CAAC,CAAC,AAC5C,CADkC,GAC9B,CAAC,aAAa,CAAC,CAAC,CAAE,EAAa,MAAM,CAAC,AAC5C,CAD6C,AAC5C,CADkC,AACjC,CAAC,AAEH,EAAK,EAAD,AAAG,CAAC,SAAS,CAAA,AAAE,IACjB,IAAI,CAAC,EADuB,CAAC,EAAE,QACb,CAAC,CAAC,CAAE,EAAa,MAAM,CAAC,CAAC,AAC3C,CADiC,GAC7B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,EAAa,MAAM,CAAC,AAC7C,CAD8C,AAC7C,CACH,AAFsC,AAClC,CACH,AADI,CA3YP,AA6YC,EA7YD,oBAAA,CAAA,qBA6YC,YCtcE,OAAA,cAAA,CAAA,EAAA,aAAA,0CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAAyD,GAAhD,OAAA,cAAA,CAAA,EAAA,uBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,oBAAoB,CAAA,GAAA,6HCXvB,EAAmB,OAAO,CAEnB,EAAkB8T,EAAAA,EAFzB,SAEO,WAAwC,CAAC,EAAkB,IAAM,IAAIwJ,EAAAA,IAAZ,gBAAgC,CAAC,CAAA,CAAE,CAAC,EAyB7F,EAAmBtd,EAAAA,YAAnB,KAAoC,CAvBtB,AAuBuB,KAtBzC,CADwB,AAE7B,IAAI,CAAE,EACN,IAoB+D,KApBtD,GAAG,AACV,EAFoB,CAGtB,CAAC,CACL,CAAG,SAFkB,EAAE,+DCCpB,OAAA,cAAA,CAAA,EAAA,aAAA,oLAiBU,EAAA,yBAAyB,CAAG,sBAA+B,CAAC,AAY5D,EAAA,YAAY,CAAG,SAAkB,CAAC,AAYlC,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAYtC,EAAA,YAAY,CAAG,SAAkB,CAWjC,AAXkC,EAWlC,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,qBAAqB,CAAG,OAAgB,CAAC,+BC7FnD,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAK4B,EAC5B,EAAA,EAAA,CAAA,CAAA,OAAgE,CAgChE,EAAA,sBAAA,CAAA,EAAA,OAAgB,AAAuB,CAAU,CAAE,CAAa,QAC9D,GAAqB,EAiCtB,MAlCqC,AACP,EAAzB,OAAO,GAAsB,AAAiB,CAAC,CAAnC,CAAqC,EAAf,CAAC,MAAM,GA3BvC,EAA8B,EAAM,GAAD,IAAQ,CAAC,IAAI,CAAC,CAAC,EACrB,CAAC,EAAE,EAKlC,EAD6B,AALA,EAKM,GAAD,IAAQ,CAAC,IAAI,CACpB,AADqB,CACpB,AADqB,EAM9C,AAL2B,EAID,AAuBV,EAvBgB,AAJX,GAIU,AAuBV,CAAC,EAAE,CAvBe,CAAC,IAAI,CAAC,CAkBlD,AAlBmD,OAkB5C,EAjByB,AA0BlC,GA1BqC,AAiBvB,CAAC,AAST,EAAa,IAAI,EAAA,EAAP,aA1B6C,CAAC,SA0Bd,CAC1C,CAD4C,CAAC,AACR,CAAA,CAAE,CAAC,AAC9C,EAAW,AADE,MACI,CACf,CADQ,CACR,KAAK,CAAC,OAAO,CAAC,EAAA,YAAY,CAAE,GAC5B,CADgC,CAAC,AAEjC,EAAA,GADO,iBACa,CACrB,CAAC,AAGF,IAAM,EAAa,MAAM,CAAC,CAAV,GAAc,CAAC,GAAS,IAAF,AAAM,CAAL,CAAO,CAAC,AAE/C,GAA0B,CAAC,EAAE,CAAzB,EAAW,MAAM,CACnB,CADY,MACL,EAGT,GAHc,CAGR,AAHS,EAGO,EACnB,GAAG,CAAA,AAAC,GAAG,CADsB,AACrB,AACP,CAFe,CACN,EACH,EAlCH,UAkCe,GAAG,KAlCA,CAkCwB,AAlCvB,CAkC8B,CAAC,CAlC5B,CAkCgC,AAlC/B,CAkCgC,AAAF,CAAG,AAlChC,OAAO,CACpC,GAiC8C,OAjCpC,CAAA,AACV,CAAC,CAAC,CAAG,CAAA,CAAA,EAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA,CAAE,CACtD,CAgCG,AAhCF,MAgCS,CAAA,EAAG,EAAG,CAAA,CAAA,EAAK,EAAY,CAAA,CAAG,AACnC,CADoC,AACnC,CAAC,CACD,IAAI,CAAC,AAF0B,GAEvB,CAAC,CAAC,AAEb,MAAO,CAAA,EAAG,EAAK,GAAA,EAAM,EAAa,EAAA,CAAI,AACxC,CADyC,AACxC,OADmC,yBCzEjC,OAAA,cAAA,CAAA,EAAA,aAAA,sHAGH,IAAA,EAAA,EAMmB,CAAA,CAAA,QAGnB,EAAA,EAAA,CAAA,CAAA,GAHmB,KAInB,EAAA,EAAA,CAAA,CAAA,IADkE,IAyIlE,SAAS,EAAmB,CAAa,EACvC,CArI2C,MAqIpC,EACJ,GADS,CADa,GAEf,CAAC,UAAU,CAAE,GAAG,CAAC,CACxB,OAAO,CAAC,6BAA6B,CAAE,GAAG,CAAC,AAChD,CAtGA,AAqGiD,AAChD,EAtGD,uBAAA,CAAA,EAAA,OAAgB,AACd,CAAc,CACd,CAAoC,CACpC,CAAqC,MAsCrC,IAAwB,AAExB,EAXD,AA3BC,IAwCI,EAFwB,AA3CS,AAK/B,MAAE,CAAI,CAwCE,KAxCA,CAAI,UAAE,CAAQ,MAAE,CAAI,CAAE,CAAG,AA6BzC,SA7BkD,AA6BzC,AAAU,CAAW,EAC5B,GAAM,GADU,GACR,CAAI,MAAE,CAAI,UAAE,CAAQ,MAAE,CAAI,CAAE,CACjC,GAAU,EAAO,CAAX,GAAU,YAAiB,CAAC,CAAI,GAAU,CAAA,CAAE,CAAN,AAAO,AACtD,MAAO,MAAE,IAAI,GAAE,IAAI,OAAE,OAAU,CAAF,AAAM,CAAE,AACvC,CADwC,AACvC,CADoC,AAhCc,GAE3C,EAAoB,CAF6B,AAE7B,CAF8B,AAE5B,CAAC,AACzB,AAHqD,AAE9C,EACc,EAAA,cAAH,EAAmB,CAAC,GAAG,EAAE,CAC7C,CAAK,CAAC,EAAA,yBAAyB,CAAC,GAAG,CAAc,EAiCnD,EAjCuD,AAAE,EAiCjC,EAjCqC,AAAE,IAAb,AAoCjC,CAAA,GApCsD,CAAC,CAAC,QAoCxD,EAAgB,GAAQ,CAAJ,UAAe,CAAA,CAAE,CAAC,AAEnC,QAAQ,EAAxB,AAA0B,OAAnB,IAAI,AACb,GAAc,CAAA,CAAA,EAAI,EAAI,CAAZ,AAAY,AAAE,CAAF,AAAG,CAGH,QAAQ,EAA5B,AAA8B,OAAvB,IACT,GAAc,CADG,AACH,CAAA,EAAI,EAAQ,CAAhB,AAAgB,AAAE,CAAC,CAGxB,GAHqB,AA1C1B,CAAK,CAAC,EAAA,GA6CS,CAAC,QA7CE,CAAC,CAAG,EACtB,CAAK,CAAC,EAAA,EADwB,CAAC,SACb,CAAC,CAAG,GAEpB,CAFwB,CAEH,AAFI,EAEJ,cAAH,EAAmB,CAAC,MAAM,EAAE,CAChD,CAAK,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAQ,CAAC,AAGtC,IAAM,EAAa,QAAH,AAAW,CAAC,EAAM,EAAF,AAAI,CAAC,CAcrC,AAdsC,OAClC,EAAsB,EAAA,eAAH,CAAmB,CAAC,GAAG,EAAE,CAC9C,CAAK,CAAC,EAAA,kBAAkB,CAAC,CAAG,EACxB,AAAC,EAD2B,CAAC,EACvB,CAAC,KACT,CAAK,CAAC,EAAA,CADa,CAAC,EAAE,cACE,CAAC,CAAG,CAAA,CAAU,CAAC,CAGvC,EAAsB,EAAA,eAAH,CAAmB,CAAC,MAAM,EAAE,CACjD,CAAK,CAAC,EAAA,mBAAmB,CAAC,CAAG,EACzB,AAAC,EAD4B,CAAC,EACxB,CAAC,KACT,CAAK,CAAC,EAAA,CADa,CAAC,EAAE,YACA,CAAC,CAAG,CAAA,CAAU,CAAC,CAIlC,CACT,CAAC,CA6BD,EAAA,AA9Bc,CAAC,WA8Bf,CAAA,EAAA,OACE,AADc,CACsB,CACpC,CAAmB,CACnB,CAAc,CAmBf,AAlBC,GAAgB,CAAK,CACrB,CAL0B,CAKiC,CAAkB,EAE7E,GAHa,AAGP,CAAC,EAAU,EAAY,CACV,GADJ,KAAa,AACD,EAAzB,OAAO,EACH,CAAC,EADO,AACA,EAAO,CACf,AADM,CACL,EAAM,AADO,GACR,AAAI,CAkCT,AAlCW,QAkCH,CAlCY,EAAC,CAkCT,CAlCkB,EAkCf,CAlCW,AAAc,AAkCxB,CAlCW,CAAC,AAAkB,CAAjB,AAAO,EAAS,GAAO,CAAC,AAAE,CAAD,CAAQ,CAAC,AACtE,GADoE,AAChE,CACF,GAAI,EACF,OAAO,EAAkB,EADV,CAEV,CAFY,EAER,EADwB,CAAC,AACf,CADgB,CAEnC,CADe,GADS,GAEjB,EADuB,AAChB,EADkB,AACR,EAAX,CAEb,GAFsB,IAEf,CAF4B,CAIrC,AAAD,AAJuC,CAAC,KAIhC,AAFU,CAET,AAFU,CAER,CACV,MAAO,wEAAwE,CAAC,AACjF,AACH,CAAC,CA+BD,EAAA,WAAA,CAAA,EAAA,OAAgB,AAAY,CAAoC,EAC9D,EAOD,EAPO,EAA4B,EADT,IACX,EAA4B,CAAC,CAA1B,AAA2B,OAApB,EAAqB,EAAM,CAAtB,EAAqB,AAAI,CAAG,AAAF,CAAC,CAElD,EAAa,CAF2C,CAAC,CAElC,KAAF,AAAX,EAAoB,CAAC,GAAG,CAAC,CAAC,MAC1C,AAA0B,QAAQ,EAA9B,OAAO,GAA0C,CAAC,CAAC,EAAE,CAAnB,EAC7B,AADY,GACF,KAD6B,AAC/B,IAAW,CAAC,CAAC,CAAE,GAEzB,CACT,CAAC,CAEY,EAAA,EAL+B,CAAC,AAE5B,CAGA,AAL6B,AAE5B,CAGE,AAAC,EAAY,AAAhB,EAAkB,AACjC,EADmC,CAOnC,CANI,GAAS,EACb,CADU,EAAQ,CAAC,EACZ,CAAC,GAAG,IAAe,CACxB,CAD0B,EAAE,CACxB,EAEJ,IAFU,EAAE,CACZ,GAAS,EACF,CADD,AADa,CACN,AACJ,CADK,AACJ,EAAG,EACf,CACF,AADG,CACF,AADG,AADiB,CAIrB,AAFE,AAFoB,CAAC,CAIvB,kCAAA,CAAA,EAAA,OAAgB,AAAmC,CAAe,EAChE,IAAM,EAAsB,EAAW,QAAD,CAAU,CAAC,AAC3C,EAAgB,GADG,EAgB1B,CAf6B,CAAC,IAAV,AAF6B,UAEL,CAAC,SAOV,AADlC,UAC4C,AAPmB,CAAC,CAAC,AAO/D,OAAO,GAAe,KAAK,EACO,GADd,OACwB,EAA5C,AACA,OADO,GAAe,OAAO,CAEtB,EAIF,AANe,CAOxB,CAAC,SALuB,CAAC,OAIG,CAAC,cCxM1B,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,uCAAuC,CAAC,+BCJjE,OAAA,cAAA,CAAA,EAAA,aAAA,2CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAC1C,EAAA,EAAA,CAAA,CAAA,QASA,EAAA,EAImB,CAAA,CAAA,IALqB,IAMxC,EAAA,EAAA,CAAA,CAAA,GADmB,KAInB,EAAA,EAMiB,CAAA,AATkD,CASlD,QAEjB,EAAA,EAA0D,CAAA,CAAA,CAFzC,OAGjB,EAAA,EAAA,CAAA,CAAA,GAD0D,KASpD,EAAoB,CAAC,YAJkB,AAIN,CAAC,AAExC,CAFuB,AAAkB,MAE5B,UAA8B,EAAA,SAAR,UAAwD,CACjF,oBAAoB,AAAoB,CACxC,mBAAuC,AAE/C,AAF2B,aAEf,EAAsC,CAAA,CAAE,CAAA,CAClD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GACrC,GAD2C,CAAC,AACxC,CADyC,AACxC,2BAA2B,EAAE,AACpC,CADqC,AACpC,AAGO,2BAA2B,EAAA,CACjC,IAAI,CAAC,oBAAoB,CAAG,GAAA,EAAA,uBAAA,AAAuB,EACjD,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CACD,AADE,IACE,CAAC,mBAAmB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAChD,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CADI,AACH,AAES,IAAI,EAAA,KACR,EACJ,IADkC,CAAC,IAC1B,EAAkB,CAAkB,EACvC,CAAC,GAAU,EAAc,CAAlB,KADa,AACW,EAAE,CACnC,EAAS,AADiB,EACH,EAAjB,IAAiB,AAAM,CAAC,AAElC,CAAC,AACD,GAH0B,CAGpB,EAAQ,AAAC,GAAJ,CACL,CAAA,EAAA,EAAA,SAAA,AAAS,CAD0C,CACzC,CAD2C,CACvB,CADyB,IACpB,CAAC,EACtC,AADwC,IACpC,CAAC,IAD0B,GACnB,CAAC,EAAqB,OAAO,CAAC,CAAC,AAE7C,IAAI,CAAC,GAF6B,EAExB,CACR,EACA,OAAO,CACP,IAAI,CAAC,IAFc,OAEH,CAAC,GAAQ,GAAF,CAErB,CAAA,AAF4B,CAAQ,CACvC,AACG,CADF,CACE,SAAA,AAAS,EAAC,EAAoB,OAAO,CAAC,EAAE,AAC1C,IAAI,CAAC,EAD0B,KACnB,CAAC,EAAqB,SAAS,CAAC,CAAC,AAE/C,IAAI,CAAC,CAF6B,IAExB,CACR,EACA,SAAS,CACT,IAAI,CAAC,EAFc,SAEH,CAAC,EAAQ,IAE7B,AAF2B,AAAM,CAEhC,AAFwC,CAEvC,AACI,AAFH,CAAC,CAEY,AAAC,IACf,CADW,GACP,CAAC,OAAO,CAAC,EAD4C,AACvB,EADyB,EAAE,GACpB,CAAC,CAAC,AAC3C,IAAI,CAAC,GAD2B,IACpB,CAAC,EAAqB,SAAS,CAAC,AAC9C,CAD+C,AAC9C,CAAC,AACF,KAFkC,CAE3B,CACL,IAAI,EAAA,mCAAmC,CACrC,QAAQ,CACR,EACA,AAAC,IACC,EAAkB,GACX,GAET,CAJmB,EAIhB,AALc,AACI,EAId,AAJgB,CAIf,CACR,AAJiC,CAK/B,AALgC,CAAC,AAAhB,CACG,CAAC,CAIjB,EAAA,6BAA6B,CAC/B,mBAAmB,CACnB,EACA,AAAC,IACC,EAAkB,GACX,GAET,CAJmB,EADF,AACI,AAIlB,EAJoB,AAIhB,CAAC,CAHyB,AAIlC,CAJmC,AAKpC,CALqB,AAAgB,CACb,CAAC,CAIrB,EAAA,6BAA6B,CAC/B,0BAA0B,CAC1B,EACC,AAAD,IAGE,EADE,CAAA,EAAA,AACG,CAAC,CADJ,EAFe,EAAE,AADJ,EACM,YAGI,CAAC,CAAC,cADzB,AAAkC,EAAC,IAE9B,GAET,AAAC,IACC,EALkD,CAAC,CAAC,CAK9B,CAHF,CAAC,EAEJ,AACb,EADe,CAInB,CAJqB,CACU,AAE7B,CAAA,CAF+B,CAE/B,EACK,AADL,CACM,EAHS,CAAuB,gBAGb,CAAC,CAAC,YAD3B,AAAkC,EAAC,GAEvC,CAAC,CACF,CACF,CACF,CACF,AACH,CADI,AACH,AAEO,IATsD,CAAC,CAAC,KAS7C,CAAC,CAA8B,CAAE,CAAmB,CAAA,CACrE,OAAO,AAAC,IACN,IAAM,EAAa,GADU,CACN,CADkB,AACjB,AACxB,EAF2C,CAC3B,IACT,SAAS,AAEd,CAA0D,CAC1D,CAAwC,CACxC,CAJmB,AAIC,MAEhB,EACA,IADM,CAAC,AACF,CAAC,OAAO,CAAC,GAChB,EAAS,EACA,EADH,OACY,CAAC,AAFc,CAEb,AAFc,CAEb,CAFe,CAEb,CADG,AAE1B,CAF2B,CAElB,CAAC,EAAkB,CAAtB,AAAuB,CAE/B,GAAM,UAFuB,KAErB,CAAa,mBAAE,CAAiB,cAAE,CAAY,CAAE,CACtD,EAAW,QAAD,CAAU,EAAE,CAAC,AAEnB,EAA6B,CAAA,EAAA,EAAA,GAAnB,oBAA0C,AAAvB,EACjC,IAAI,CAAC,MAAM,CACX,EAAW,QAAD,WAAoB,CAC9B,EAAW,QAAD,YAAqB,CAChC,CAAC,AACI,EAAc,CAAA,EAAA,EAAA,IAAH,QAAG,AAAY,EAC9B,EACA,EACA,CAFK,CAGL,EACA,AAHM,EACA,CAIJ,EAAW,MAHA,EAGD,IAFK,CAClB,CAAC,KACgC,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACzD,CAAU,CAAC,EAAA,cAAc,CAAC,CAAG,EAAA,qBAAqB,CAAC,AACnD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,GAE9B,EAAW,MAF8B,CAAC,CAEhC,WAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CAC5D,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAAA,0BAA0B,CAAC,AAC7D,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,GAGnC,IAAM,EAAO,EAAW,AAHsB,AAGpC,CAHqC,KAGjB,CAAC,CAAR,QAAiB,CAAC,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,GAAQ,CAC3D,CADwD,CAAC,EACrD,CAAE,EAAI,CAAD,OAAS,CAAC,MAAM,YACzB,EACD,CAAC,AAGA,CAHC,CAGA,GACD,EAAW,AALD,KAIC,GACD,CAAU,EAAE,CAAC,+BAA+B,EACtD,CACA,SAAS,CAAC,CAAC,CAAC,CAAG,EACI,GADC,KACO,EAAzB,OAAO,EACH,GADQ,AACR,EAAA,sBAAsB,AAAtB,EAAuB,EAAM,EAAF,CAC3B,EADkC,CAAC,GAC7B,CAAC,MAAM,CAAC,EAAO,CACnB,EADiB,CACd,CAAE,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,EAAM,EAAF,AAAQ,GAAD,AAAI,CAAC,EAC7C,CAAC,CAAC,AAGX,IAAM,EAAU,CAAA,EAAA,EAAH,AAAG,IAAA,AAAI,EAAC,CAAC,EAAW,CAAF,IACzB,EACF,AAF0C,CACrC,CACA,AAFuC,CACrC,CADuC,AAE1C,OAAU,CAAC,CACb,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC9B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAE0B,AAFzB,UAEmC,EAAE,AAApC,OAAO,GACT,GAAA,EAAA,IADqB,kBACrB,AAAsB,EACpB,GAAG,EAAE,AACH,EAAa,EAAM,CACjB,CADe,MAAL,KACE,CAAE,EACf,CAAC,AACJ,CAAC,AADI,CACJ,AACD,EAHyB,CAGtB,CACG,AADF,EAAE,CACG,AACL,EADO,AACI,KAAK,CAAC,EAAP,EAAW,CAAC,+BAA+B,CAAE,EAE3D,CAF8D,AAE7D,CAF8D,CAG/D,AAHgE,GAQtE,CALU,CAKL,AAJA,CAAC,CAIF,CAAI,EAAE,AACZ,CAAC,AADY,CACX,CAAC,AAEH,GAAyB,CAAC,EAAtB,SAAS,CAAC,MAAM,CAAQ,CACa,UAAU,EAA7C,AAA+C,OAAvC,EAAc,GAAD,KAAS,EAChC,EAAW,KAAK,CACd,EADQ,AAER,GADY,OACF,CACV,EAAW,QAAD,WAAoB,CAAC,IAInC,GAJ0C,CAIpC,AAJqC,CACxC,CAAC,AAGsC,EAAc,KAAK,CAC3D,IAAI,CACJ,AAFmB,AAAkC,SAE5C,CACV,CAAC,AAWF,OARA,EACG,IAAI,CAAC,OAAO,CADA,AACA,AAAE,GAAG,CAAC,AACjB,EAAQ,AADW,EAErB,CAAC,AADY,CACX,AADY,CAEb,AAFQ,AAAM,IAEV,CAAC,QAAQ,CAAA,AAAE,IACd,GADqB,CAAC,EAAE,CACjB,AAAC,EAAW,EACrB,CAAC,CAAC,CAAC,AAEE,EAHc,AAAS,AAI/B,AAgBD,CApBiC,CAAC,IAMN,OAHJ,CAAC,EAGa,EAAE,AAApC,OAAO,SAAS,CAAC,CAAC,CAAC,CACrB,EAAW,KAAK,CACd,EADQ,OACC,CACT,CAAC,CACD,EAAW,QAAD,WAAoB,CAAC,IAEA,AAAxB,GAF+B,CAAC,CACxC,CAAC,IACyC,EAAE,OAA7B,SAAS,CAAC,CAAC,CAAC,EAC5B,EAAW,KAAK,CACd,EADQ,OACC,CACT,CAAC,CACD,EAAW,QAAD,WAAoB,CAAC,IAI5B,EAAc,CAJqB,CAAC,CACxC,CAAC,CAGsB,CAAC,IAAI,CAAX,AAAa,SAAS,CAAC,AAC7C,CAD8C,AAC7C,AACH,CADI,AACH,AACH,CADI,AACH,AAEO,mBAAmB,CAAC,CAAiB,CAAA,CAC3C,OAAO,AAAC,GACC,SACL,CAAiC,CACjC,CAAa,CACb,AAJ8B,CAIG,CAJD,CAOhC,CAPkC,MAMlC,EAAQ,EAAK,CAAF,EAAJ,AACA,IADa,CAAC,AACM,CADL,QACc,CAAC,AACvC,CADwC,AACvC,AAEL,AAH6B,CACvB,AAEL,AAH6B,CAI/B,AAtOD,EAAA,qBAAA,CAAA,sBAsOC,WC7QE,OAAA,cAAA,CAAA,EAAA,aAAA,2CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA0D,GAAjD,OAAA,cAAA,CAAA,EAAA,wBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,qBAAqB,CAAA,GAAA,6HCXxB,EAAmB,QAAQ,CAEpB,EAAmB8T,EAAAA,CAF1B,WAEO,UAAyC,CACpD,EACA,IACE,IAAIyJ,EAAAA,IAFU,iBAEW,CAAC,CACxB,YAAY,CAAC,CAAI,EAAE,AACjBtB,EAAAA,eAAe,CAAC,EAAM,EAAF,mBAAuB,CAAC,AAC9C,CAAC,AACP,CAAK,CAAC,EA0BO,EAAoBjc,EAAAA,aAApB,IAAqC,CAvBtB,AAuBuB,KAtB1C,CADyB,AAE9B,IAAI,CAAE,EACN,KAoBiE,IApBxD,GAAG,AACV,EAFoB,CAGtB,CAAC,CACL,CAAG,UAFmB,EAAE,gECPrB,OAAA,cAAA,CAAA,EAAA,aAAA,mLAiBU,EAAA,yBAAyB,CAAG,sBAA+B,CAAC,AAY5D,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAWtC,EAAA,kBAAkB,CAAG,eAAwB,CAW7C,AAX8C,EAW9C,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,0BAA0B,CAAG,OAAgB,CAS7C,AAT8C,EAS9C,qBAAqB,CAAG,OAAgB,CAAC,+BC9EnD,OAAA,cAAA,CAAA,EAAA,aAAA,6BAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0D,EAE7C,EAAA,OAAO,CAAG,CACrB,CADkB,CAElB,EADU,CACmC,EAEzC,AADJ,EAAE,AASF,CARO,CACL,CADO,CACF,EAAD,aAAgB,CAAC,GAAG,AACxB,CADyB,CAAC,AACrB,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,CAEL,EAAK,EAAD,CAAI,EACV,AADY,CACX,AADY,CACX,+BChBC,OAAA,cAAA,CAAA,EAAA,aAAA,kDAUH,IAAM,EAAuB,CAC3B,CACE,KAAK,CAAE,QAAQ,CACf,CAHsB,GAGlB,CAAE,CAAC,CACR,CACD,CACE,KAAK,CAAE,8DAA8D,CACrE,IAAI,CAAE,CAAC,CACR,CACD,CACE,KAAK,CAAE,6BAA6B,CACpC,IAAI,CAAE,CAAC,CACR,CACD,CACE,KAAK,CACH,kLAAkL,CACpL,IAAI,CAAE,CAAC,CAAC,CACT,CACF,AAcY,CAdX,EAcW,4BAA4B,CAA0B,CACjE,CADuC,CAEvC,KADO,AAGP,EAFO,CAEH,CADJ,EAAE,EACO,CAAC,OAAO,CAAC,IAAY,EAAQ,AAetC,CAfyB,CAAC,GAAW,CAAO,CAAE,CAC5C,IAAM,EACJ,EAAqB,IAAI,CAAC,CAAC,MADP,CACS,CAAK,CAAE,EAAE,CAC7B,AADW,CAAoB,CACzB,GAAD,CAAK,CAAC,KAChB,EADuB,CAAC,CAAC,AACrB,EAAI,CAAC,CAAC,AACV,EACJ,GAAoB,CAAC,CAAG,AAAF,CAAC,CAAS,KAAD,AAAM,CADlB,AACmB,CAAC,CAAE,CAAzB,EAA6C,EAM/D,KANsE,CAAC,CACnE,EAAQ,EAD+C,CAAC,CAAC,CAClD,AADmD,CAC5C,CAAG,EAAgB,MAAM,EAAE,AAC3C,EAAgB,GADkB,CACd,CAClB,CAAA,CAAA,EAAI,EAAQ,EADC,GACF,CAAO,CAAG,EAAgB,cAAA,GAAA,CAAmB,CACzD,CAAC,AAEG,CAAA,EAAG,EAAO,CAAA,EAAI,EAAJ,AAAoB,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAElD,AAFmD,AAClD,CADqC,MAE/B,CACT,CAAC,CAAC,IADc,CAAC,0BC5Dd,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,wCAAwC,CAAC,+BCJlE,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAM4B,EAC5B,EAAA,EAAA,CAAA,CAAA,QASA,EAAA,EAAA,CAAA,CAAA,IAHwC,IASxC,EAAA,EAQmB,CAAA,CAAA,QACnB,CAV6C,CAU7C,EAAA,CAAA,CAAA,GADmB,KAEnB,EAAA,EAAkC,CAAA,CAAA,IADsC,IAExE,EAAA,EAAA,CAAA,CAAA,CADkC,OAGlC,EAAA,EAA0D,CAAA,CAAA,CAFiB,OAIrE,EAA+C,CACnD,MAHwD,KAEtC,MACD,EAAE,EAGrB,AAFC,CAAC,CADuB,KAGZ,UAA+B,EAAA,UAAR,SAAyD,CACnF,oBAAoB,AAAoB,CACxC,mBAAmB,AAAoB,AAE/C,aAAY,EAAuC,CAAA,CAAE,CAAA,CACnD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CAAC,CAAC,AACvE,IAAI,CAAC,2BAA2B,EAAE,AACpC,CADqC,AACpC,AAGO,2BAA2B,EAAA,CACjC,IAAI,CAAC,oBAAoB,CAAG,GAAA,EAAA,uBAAuB,AAAvB,EAC1B,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CACD,AADE,IACE,CAAC,mBAAmB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAChD,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CADI,AACH,AAEQ,SAAS,CAAC,EAAuC,CAAA,CAAE,CAAA,CAC1D,KAAK,CAAC,SAAS,CAAC,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CAAC,AACnD,CADoD,AACnD,AAED,IAAI,EAAA,CACF,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,SAAS,CACT,CAAC,YAAY,CAAC,CACd,CAAC,EAAQ,IAAF,CACL,IAAM,EAC2B,EAFJ,EAAE,EAAE,EAEQ,GADtB,AACjB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CACtB,EAAO,IAAD,GAAQ,CAAC,AACf,EAiBN,IAlB2B,AACf,CAAC,CACT,AADU,GACV,EAAA,MADqB,GACrB,AAAS,EAAC,EAAc,SAAS,CAAC,CAAX,UAAsB,CAAC,EAAE,AAClD,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,YAAyB,CAAC,CAAC,AAEvD,IAAI,CAAC,KAAK,CACR,EAAc,SAAS,CACvB,CADa,YACA,CACb,IAAI,CAAC,iBAAiB,CAAC,IAErB,GAAA,EAAA,IAFkC,CAAC,CACtC,CAAC,EACE,AAAS,EAAC,EAAc,SAAS,CAAC,CAAX,MAAkB,CAAC,EAAE,AAC9C,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,QAAqB,CAAC,CAElD,AAFmD,IAE/C,CAAC,KAAK,CACR,EAAc,SAAS,CACvB,CADa,QACJ,CACT,IAAI,CAAC,gBAAgB,EAAE,CACxB,CAAC,AACK,CACT,CAAC,CAAA,AACD,GAFe,CAAC,AAGd,EADI,CAAC,EAAE,GACQ,IAAX,EAAsB,GAAF,CAAd,GAAuB,AACjC,IAAM,EAC2B,QAAQ,GADtB,AACjB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CACtB,EAAO,IAAD,GAAQ,CAAC,AACf,EACN,IAF2B,AACf,AACR,CADS,AACR,CADS,MACF,CAAC,EAAc,EADF,OACW,CAAE,CAAZ,YAAyB,CAAC,CAAC,AACrD,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,QAAqB,CAAC,AAClD,CADmD,AAClD,CACF,CACF,AACH,CADI,AACH,AAKO,iBAAiB,CAAC,CAAsB,CAAA,CAC9C,OAAQ,AAAD,GACE,IAAI,CAAC,AADY,EAAE,EAAE,aACC,CAAC,EAAU,EAE5C,CAAC,AAEO,GAJkC,OAAe,CAAC,CAAC,IAInC,EAAA,CACtB,OAAQ,AAAD,GACE,IAAI,CAAC,AADY,EAAE,EAAE,YACA,CAAC,EAEjC,CAAC,AAEO,KAJiC,CAAC,CAAC,UAIlB,CAAC,CAAkB,CAAE,CAAsB,CAAA,CAClE,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACkB,CAAoB,EACzD,GAAI,SAAS,CAAC,MAAM,CAAG,CAAC,EAAmB,QAAQ,EAAvB,AAAyB,OAAlB,EACjC,CADoC,MAC7B,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAEzC,IAAM,EAAS,EAAgB,EAAnB,OAA4B,EAAE,CAAC,AACrC,CADwB,CAE5B,EAAO,IAAD,aADmB,IACG,EAAI,EAAA,4BAA4B,CAAC,AAEzD,OAAsD,IAApC,EAAA,EAAH,CAAgD,CAAC,CAAzC,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CACvD,IAAiC,IAA7B,AAAiC,EAA1B,IAAD,aAAkB,EAAa,EACvC,OAAO,EAAS,IADsC,CACjC,CADmC,AACzC,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAGzC,IAAM,EAAyB,CAAA,CAAE,CAAC,AAC5B,CAAE,IADQ,EACJ,CAAE,MAAI,CAAE,CAAG,IAAI,CAAC,OAAO,CAAC,AAC9B,EAAc,EAAsB,EAAI,CAAD,GAAK,CAAjC,AAAmC,EAAI,CAAD,GAAK,CAAC,CAAC,AAC1D,EAAgB,EADqB,WACtB,MAAoB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CAC9D,CAAU,CAAC,EAAA,cAAc,CAAC,CAAG,EAAA,qBAAqB,CAClD,AADmD,CACzC,CAAC,EAAA,iBAAiB,CAAC,CAAG,EAChC,CAAU,CAAC,EAAA,KADgC,CAAC,mBACR,CAAC,CAAG,CAAA,QAAA,EAAW,EAAI,CAAA,CAAA,CAAI,EAAI,CAAE,CAAC,AAAH,CAE7D,EAAgB,aAAD,MAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACjE,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAAA,0BAA0B,CAC5D,AAD6D,CACnD,CAAC,EAAA,kBAAkB,CAAC,CAAG,GAE/B,EAAgB,MAF0B,CAAC,MAE5B,OAAqB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CAC/D,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,EACjC,CAAU,CAD2B,AAC1B,CAD2B,CAC3B,kBAAkB,CAAC,CAAG,GAE/B,CAFmC,CAAC,AAEpB,aAAD,OAAqB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CAClE,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAClC,CAAU,CAD4B,AAC3B,CAD4B,CAC5B,gBAAgB,CAAC,CAAG,GAEjC,CAFqC,CAAC,EAEhC,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAAC,EAAI,CAAD,GAAK,CAAE,CACtD,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,YACrB,EACD,CAAC,CAAC,AAEG,MAHM,OAGJ,CAAW,CAAE,CAAG,EACpB,GACF,CAAA,AAF4B,CAAC,CAE7B,EAAA,GADa,EAAE,iBACf,AAAsB,EACpB,GAAG,CACD,CADG,CACS,EAAM,EAAF,KAAL,QACT,EACA,OAAO,CAAE,EAAI,CADA,AACD,GAAK,CACjB,OAAO,CAAE,EAAI,CAAD,GAAK,CAClB,CAAC,CACJ,AADI,CACH,CAAC,EAAE,AACE,CAAC,EAAE,AACL,EAAA,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAE,CAAC,CAAC,AAEjE,CAFkE,AAEjE,EACD,GAIJ,CAJQ,CACL,CAAC,AAGA,CACF,IAAM,EAAS,EAAS,EAAZ,GAAiB,CAAC,AAAP,IAAW,CAAE,SAAS,CAAC,CAAC,AAEzC,EAAc,EAAI,CAAD,MAAN,AAAc,CAAC,AAEhC,EAAI,CAAD,MAAQ,CAAG,SAAU,CAAW,EACjC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,CAAG,CAAD,CAAQ,IAAD,QAAa,EAAE,CAAC,EAAM,EAAF,AAAM,CAAD,GAAK,CAAE,EAAI,CAAD,GAAK,CAAE,GAAO,AAC7D,CAAC,CAAC,CAD0D,CAEtD,AAFuD,AACzD,CACG,EAAE,AACL,EAAA,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAE,CAAC,CAAC,AAElE,CAFmE,AAElE,EACD,GAGF,CAAA,AAHM,CACL,CAAC,AAEF,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,EAAM,CAAC,CAAC,AACpB,EAAY,EACd,CAAC,CAAC,AAEF,EAHoB,CAAC,CAAC,AAGhB,CAHO,CAGM,EAAI,CAAD,KAAO,AAAb,CAMhB,AAN8B,OAC9B,EAAI,CAAD,KAAO,CAAG,SAAU,CAAU,EAC/B,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,CAAK,AACjB,CADkB,CAAC,AACR,EACb,CADgB,AACf,CAAC,AADe,AAGV,CAHW,CAInB,AAAC,EAJY,EAGC,CAAC,CACP,EAAY,CAEnB,EAFiB,GACjB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,CACN,EACP,AACH,AAHuB,CAGtB,AACH,AAJ0B,CAAC,AAGvB,AACH,AAEO,CALS,CAAC,cAKM,CAAC,CAAkB,CAAA,CACzC,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,UAEnB,IAAM,OAAsD,IAApC,EAAA,EAAH,CAAgD,CAAC,CAAzC,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CACvD,IACoD,IAAlD,AAAsD,EAAtC,SAAS,EAAE,CAAC,CAAb,gBAA8B,EAC7C,EAEA,OAAO,EAAS,IAFD,CAEM,CADrB,AACe,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAGzC,IAAM,EAAyB,CAAA,CAAE,CAAC,AAC5B,KADU,CACR,CAAI,MAAE,CAAI,CAAE,CAAG,IAAI,CAAC,OAAO,CAAC,AAChC,EAAgB,aAAD,MAAoB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CAC9D,CAAU,CAAC,EAAA,cAAc,CAAC,CAAG,EAAA,qBAAqB,CAAC,AACnD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,SAAS,CAAC,AAC1C,CAAU,CAAC,EAAA,yBAAyB,CAAC,CAAG,CAAA,QAAA,EAAW,EAAI,CAAA,CAAA,CAAI,EAAI,CAAE,CAAC,AAAH,CAE7D,EAAgB,aAAD,MAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACjE,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAAA,0BAA0B,CAAC,AAC7D,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,SAAS,CAAC,CAEzC,EAAgB,aAAD,OAAqB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CAC/D,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,EACjC,CAAU,CAD2B,AAC1B,CAD2B,CAC3B,kBAAkB,CAAC,CAAG,GAE/B,CAFmC,CAAC,AAEpB,aAAD,OAAqB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CAClE,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,EAClC,CAAU,CAD4B,AAC3B,CAD4B,CAC5B,gBAAgB,CAAC,CAAG,GAEjC,CAFqC,CAAC,EAEhC,EAAO,EAAgB,AAAnB,MAAyB,CAAC,MAAR,GAAiB,CAAC,SAAS,CAAE,CACvD,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,YACrB,EACD,CAAC,CAAC,AAEH,GAAI,CACF,EAJU,EAIJ,EAAS,EAAS,EAAZ,GAAiB,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAE/C,MADA,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,EAAM,CAAC,CAAC,AACb,EACR,AAAC,IADa,CAAC,CACP,EAAY,CAEnB,EAFiB,GACjB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,CACN,EACP,AACH,AAHuB,CAGtB,AACH,AAJ0B,CAGtB,AACH,AAJ0B,CAK5B,AA1ND,AAsNmB,CAAC,CAtNpB,sBAAA,CAAA,uBA0NC,UCrQE,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA2D,GAAlD,OAAA,cAAA,CAAA,EAAA,yBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,sBAAsB,CAAA,GAAA,+BCF5B,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,sCAAsC,CAAC,+BCJhE,OAAA,cAAA,CAAA,EAAA,aAAA,kFAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAAmE,CAGtD,GAAA,OAAO,CAAG,CAAC,CAAJ,CAAgB,EAAF,CAAoB,EAAE,AAClD,EAOJ,AARwD,CAEtD,AADK,EAAE,AACF,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,AAEL,EAAK,EAAD,CAAI,EAAE,AACZ,CADa,AACZ,CAAC,AAEW,EAAA,qBAAqB,CAAG,AAAC,EAAJ,CACzB,KAD+C,EAAE,EACxC,AAD0C,EAExD,IAAM,EAAS,EAAS,EAAZ,AAGd,GAH+B,CAAC,AAAP,CADQ,GACG,CAAE,SAAS,CAAC,CAAC,AAC/C,OAAO,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,EACxC,CAAC,CAAC,AAGS,EAJmC,AAInC,CAJoC,CAAC,wBAIX,CAAI,AAAD,EAAH,CAC9B,KADoD,EAAE,EAAE,AAC/C,EAYd,OAXI,AAAC,MAAM,CAAC,CAad,EAdmC,MACZ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAE,QAAQ,CAAC,EAAE,AACzD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAE,QAAQ,CAAE,CACpC,GAAG,GACD,OAAO,IAAI,CAAC,qBACd,AADmC,CAClC,AADmC,CAEpC,GAAG,CAAC,CAAiB,EACnB,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAG,AAClC,CADmC,CAAC,EAChC,CAAC,qBAAqB,CAAG,CAC/B,CAAC,CADiC,AAEnC,CAFoC,AAEnC,CAAC,AAEE,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,AACxC,CADyC,AACxC,CAAC,+BCpCD,OAAA,cAAA,CAAA,EAAA,aAAA,mLAiBU,EAAA,yBAAyB,CAAG,sBAA+B,CAAC,AAY5D,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAWtC,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,0BAA0B,CAAG,OAAgB,CAAC,AAS9C,EAAA,qBAAqB,CAAG,OAAgB,CAAC,+BC9EnD,OAAA,cAAA,CAAA,EAAA,aAAA,+CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,QAQA,EAAA,EAIiB,CAAA,CAAA,IALuB,IAQxC,EAAA,EAA2D,CAAA,CAAA,CAH1C,OAKjB,EAAA,EAAA,CAAA,CAAA,MAA0E,EAC1E,EAAA,EAAA,CAAA,CAAA,QAOA,EAAA,EAQoB,CAAA,CAAA,QACpB,CAV6C,CAU7C,EAAA,CAAA,CAAA,OAEA,OAAa,CAF8D,SAE5B,EAAA,aAAR,MAAuD,CAC5F,MAAM,CAAU,SAAS,CAAG,OAAQ,AAAD,CAC3B,iBAAiB,AAAmB,AAE5C,aAAY,EAAqC,CAAA,CAAE,CAAA,CACjD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GACrC,GAD2C,CAAC,AACxC,CADyC,AACxC,iBAAiB,CAAG,EAAO,IAAD,YAAiB,CAC5C,EAAO,IAAD,YAAiB,CACvB,CAAA,EAAA,EAAA,uBAAA,AAAuB,EACrB,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACP,CADQ,AACP,AAEQ,SAAS,CAAC,EAAqC,CAAA,CAAE,CAAA,CACxD,KAAK,CAAC,SAAS,CAAC,GAChB,GADsB,CAClB,AADmB,CAAC,AACnB,iBAAiB,CAAG,EAAO,IAAD,YAAiB,CAC5C,EAAO,IAAD,YAAiB,CACvB,CAAA,EAAA,EAAA,uBAAA,AAAuB,EACrB,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACP,CAEU,AAHF,AACP,IAEa,EAAA,CACZ,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,OAAO,CACP,CAAC,YAAY,CAAC,CAAA,AACd,IAEI,CAAA,EAAA,EAAA,IAFS,CAAC,EAAE,EAEZ,AAAS,EACP,EAAc,WAAD,AAAY,CAAC,SAAS,CAAC,qBAAwB,CAC7D,CAD4D,CAG7D,AADA,IACI,CAAC,OAAO,CACV,EAAc,WAAW,AAAZ,CAAa,SAAS,CACnC,uBAAuB,CACxB,CAAC,AAEJ,IAAI,CAAC,KAAK,CACR,EAAc,WAAD,AAAY,CAAC,SAAS,CACnC,uBAAuB,CACvB,IAAI,CAAC,4BAA4B,EAAE,CACpC,CAAC,AAEE,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,WAAD,AAAY,CAAC,SAAS,CAAC,aAAgB,CAAC,CAAF,CAAI,AACnE,IAAI,CAAC,OAAO,CAAC,EAAc,WAAD,AAAY,CAAC,SAAS,CAAE,eAAe,CAAC,CAAC,AAErE,IAAI,CAAC,KAAK,CACR,EAAc,WAAD,AAAY,CAAC,SAAS,CACnC,eAAe,CACf,IAAI,CAAC,qBAAqB,EAAE,CAC7B,CAAC,AAEE,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,WAAD,CAAa,CAAC,EAAE,AACzC,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,GAAgB,CAAC,CAE7C,AAF8C,IAE1C,CAAC,KAAK,CACR,EACA,WADa,GACC,CACd,IAAI,CAAC,qBAAqB,EAAE,CAC7B,CAAC,AACK,GACR,AACD,SACwB,CAHF,CAAC,EAGjB,AADO,CAAC,EAAE,CAEd,CAD+B,EAAE,CAC7B,CAAC,IADY,CAAuB,EAC5B,CACV,EAAc,WAAD,AAAY,CAAC,SAAS,CACnC,uBAAuB,CACxB,CAAC,AACF,IAAI,CAAC,OAAO,CAAC,EAAc,WAAD,AAAY,CAAC,SAAS,CAAE,eAAe,CAAC,CAAC,AACnE,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,GAAgB,CAAC,CAC7C,AAD8C,CAC7C,CACF,CACF,AACH,CADI,AACH,AAKO,4BAA4B,EAAA,CAClC,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACL,AAAsB,CAAkB,EACtD,OAAO,SAAS,AAEd,CAAkB,CAHe,CAOjC,GAAyB,CAAC,EAAtB,SAAS,CAAC,MAAM,EAAyB,AANJ,QAMY,EAAvB,AAAyB,OAAlB,EAEnC,CAFsC,MAE/B,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,SAAS,CAAC,CAAC,AAGzC,IAAM,EAAS,EAAgB,EAAnB,OAA4B,EAAE,CAAC,AAErC,CAFwB,CAE8B,SAApC,AAA6C,CAAC,CAA9C,EAAH,GAAQ,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CACvD,GAAI,AAA6B,IAAI,EAA3B,CAAC,iBAAiB,EAAa,EACvC,OAAO,EAAS,IADsC,CACjC,CADmC,AACzC,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAGzC,IAAM,EACJ,GAAQ,GAAF,aADmB,KACI,EAAI,EAAA,4BAA4B,CAAC,AAE1D,EAAyB,CAAA,CAAE,CAAC,AAE9B,EAAgB,GAFJ,UAEG,IAAkB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,AAC5D,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,CAAC,EAAA,IADqB,UACP,CAAC,CAAE,EAAA,qBAAqB,CACvC,CAAC,EAAA,iBAAiB,CAAC,CAAE,EAAsB,EAAI,CAAD,MAAQ,CAAE,EAAI,CAAD,GAAK,CAAC,CAClE,CAAC,AAD0C,CACzC,AAGD,EAAgB,aAAD,IAAkB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,AAC/D,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,CAAC,EAAA,IADqB,eACF,CAAC,CAAE,EAAA,0BAA0B,CACjD,CAAC,EAAA,sBAAsB,CAAC,CAAE,EAAI,CAAD,MAAQ,CACrC,CAAC,EAAA,kBAAkB,CAAC,CAAE,EAAsB,EAAI,CAAD,MAAQ,CAAE,EAAI,CAAD,GAAK,CAAC,CACnE,CAAC,AAD2C,CAC1C,AAGL,IAAM,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,CAAA,EAAG,EAA0B,SAAS,CAAA,CAAA,EAAI,EAAI,CAAD,MAAQ,CAAzB,AAAyB,CAAE,CACvD,CACE,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,CACrB,UAAU,GACX,CACF,CAAC,AAGF,GAAI,IAAI,CAAC,kBAAkB,CAAE,CAC3B,IAAM,EAAmC,CAAA,CAAE,CAAC,AAExC,EAAgB,aAFM,AAEP,IAAkB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,AAC5D,MAAM,CAAC,MAAM,CAAC,EAAsB,CAClC,CAAC,EAAA,cAD+B,IACb,CAAC,CAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAClD,CAAC,EAAA,kBAAkB,CAAC,CAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACnD,CAAC,CAAC,AAGD,EAAgB,aAAD,IAAkB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,AAC/D,MAAM,CAAC,MAAM,CAAC,EAAsB,CAClC,CAAC,EAAA,cAD+B,KACZ,CAAC,CAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACnD,CAAC,EAAA,gBAAgB,CAAC,CAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACjD,CAAC,CAAC,AAGL,EAAK,EAAD,WAAc,CAAC,GACpB,AAGC,IAAI,CAAC,OAAO,EACZ,EAAgB,CALuB,CAAC,CAAC,UAK1B,IAAkB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAExD,AADA,EACK,EAAD,UAAa,CACf,EAAA,yBAAyB,CACzB,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAA,CAAE,CAC1B,CAAC,AAGJ,IAAM,EAAmB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAhB,OAAwB,CAAC,AAC/C,GAAI,EAAkB,CACpB,IAAM,EAAkB,EAAA,KADN,EACa,CAAC,GAAX,GAAiB,EAAE,CAAC,AACxC,SAAS,CAAC,CAAC,CAAkB,CAAC,QAAQ,CAAG,SAAS,AAEjD,CAAiB,CACjB,CAAQ,EAER,GAAI,AALqD,GAK7C,GAAF,SAAc,CAAE,CACxB,IAAM,EAAe,EAAO,IAAD,IAAT,IAAsB,CAAC,AACzC,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,EAAE,AACH,EAAa,EAAM,EAAI,AAAN,CAAK,KAAV,CAAkB,CAAE,EAAI,CAAD,GAAK,CAAE,EAC5C,CAAC,CACD,AADC,CADgD,CAAC,CAE/C,AAFgD,CAE/C,AACE,EADA,CAEF,AADK,EACW,AADT,KACc,CAAC,KAAK,CACzB,CADa,6BACiB,CAC9B,EAGN,CAHS,AAGR,CAFI,CAAC,AAGN,GAEH,AAGD,CALQ,CACL,CAAC,GAGJ,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,CAAK,AACV,CADW,CAAC,AACZ,OAAO,CAAC,IAAI,CACjB,EACA,EACA,IAAI,EACJ,EAAG,GAHY,GACC,GAEJ,CACb,AACH,CADI,AACH,CAAC,AACH,AACD,GAAI,CAEF,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CACvC,AAAC,AADuC,MAChC,EAAc,CAErB,IAFmB,CACnB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,EAAM,EAAF,CACN,EACP,AACH,CAAC,AACH,CAAC,AACH,AAL6B,AAGvB,CACF,AACH,AAEO,AAPsB,CAAC,CACV,CAAC,CAAC,iBAMM,EAAA,CAC3B,OAAO,CAP0C,QAOjC,AAAa,CAAkB,EAC7C,MAAO,CAAA,EADmB,AACnB,EAAA,qBAAA,AAAqB,EAAC,EAC/B,CACF,AADG,CAGK,AAHJ,AACH,IAFwC,CAAC,CAAC,eAId,EAAA,CAC3B,OAAO,SAAS,AAAiB,CAAkB,EACjD,MAAO,CAAA,EAAA,EAAA,EADuB,wBACvB,AAA0B,EAAC,EACpC,CAAC,AACH,CADI,AACH,CAzNU,EAAA,CAuNmC,CAAC,CAAC,sBAvNrC,CAAA,0BAAyB,oFCpCtC,IAAA,EAAA,EAAA,CAAA,CAAA,QAKA,EAAA,EAOoB,CAAA,CAAA,QACpB,CAT6C,CAS7C,EAAA,CAAA,CAAA,QAEA,EAAA,QAFkE,WAElE,CAAA,EAAA,OAAgB,AACd,CAAgB,CAChB,CAAY,CACZ,CAAkC,EAElC,IAAM,EAqBP,AArBgC,CAAA,CAAE,CAoBjC,AApBkC,GALD,EAKjB,EAEZ,EAAmB,EAAA,YAAH,IAAmB,CAAC,GAAG,EAAE,AAC3C,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,CAAC,EAAA,IADqB,UACP,CAAC,CAAE,EAAA,qBAAqB,CACvC,CAAC,EAAA,kBAAkB,CAAC,CAAE,GAAS,IAAF,EAAQ,EAAE,IAAI,CAC3C,CAAC,EAAA,kBAAkB,CAAC,CAAE,GAAS,IAAF,EAAQ,EAAE,IAAI,CAC3C,CAAC,EAAA,yBAAyB,CAAC,CACzB,AAsBR,SAAS,AACP,CAAgB,CAChB,CAAa,EAEb,GAAmB,QAAQ,EAAvB,EAA2B,KAApB,GAAG,AAAkB,EAIhC,CAJmC,EAAE,AAIjC,CACF,IAAM,CA/B8C,AA+B7C,CAAG,IAAI,GAAG,CAToC,AASnC,GAAG,AAIrB,CAJsB,CAAC,KACvB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,AAClC,CAAC,CAAC,QAAQ,CAAG,EAAE,CAAC,AAChB,CAAC,CAAC,QAAQ,CAAG,EAAE,CAAC,AACT,CAAC,CAAC,IAAI,CAAC,AACf,AAAC,MAAO,EAAK,CAAF,AACV,EAAK,EAAD,GAAM,CAAC,yCAAyC,CAAE,GAAG,AAC1D,AAEH,CAH8D,AAG7D,CAxCwD,AAqCM,EArCA,EAAF,CAAW,GAAG,CAAL,AAAM,CACvE,CAAC,CAGA,AAHC,EAGkB,EAAA,YAAH,IAAmB,CAAC,MAAM,EAAE,AAC9C,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,CAAC,EAAA,IADqB,eACF,CAAC,CAAE,EAAA,0BAA0B,CACjD,CAAC,EAAA,mBAAmB,CAAC,CAAE,GAAS,IAAF,EAAQ,EAAE,IAAI,CAC5C,CAAC,EAAA,gBAAgB,CAAC,CAAE,GAAS,IAAF,EAAQ,EAAE,IAAI,CAC1C,CAAC,CAAC,AAGE,CACT,CAAC,QADkB,CAAC,uBC1CjB,OAAA,cAAA,CAAA,EAAA,aAAA,+CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAM4B,EAC5B,EAAA,EAAA,CAAA,CAAA,QAQA,EAAA,EAA8C,CAAA,CAAA,IADN,GAExC,EAAA,EAAA,CAAA,CAAA,EAD8C,MAI9C,EAAA,EAA2D,CAAA,CAAA,CAHgB,OAI3E,EAAA,EAAA,CAAA,CAAA,QAIA,EAAA,EAA+C,CAAA,CAAA,QAGzC,CAJuC,CAIrB,MAAM,CAC5B,MADmB,0CAC6B,CACjD,CAAC,AACI,EAAwB,MAAM,CAClC,YADyB,+CACkC,CAC5D,AAQD,CARE,MAQW,UAAkC,EAAA,aAAR,MAAuD,CAC5F,MAAM,CAAU,SAAS,CAAG,OAAO,AAAC,CAC5B,iBAER,AAF4C,AAAnB,aAEb,EAAqC,CAAA,CAAE,CAAA,CACjD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GACrC,GAD2C,CAAC,AACxC,CADyC,AACxC,iBAAiB,CAAG,EAAO,IAAD,YAAiB,CAC5C,EAAO,IAAD,YAAiB,CACvB,CAAA,EAAA,EAAA,uBAAuB,AAAvB,EACE,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACP,CADQ,AACP,AAEQ,SAAS,CAAC,EAAqC,CAAA,CAAE,CAAA,CACxD,KAAK,CAAC,SAAS,CAAC,GAChB,GADsB,CAAC,AACnB,CADoB,AACnB,iBAAiB,CAAG,EAAO,IAAD,YAAiB,CAC5C,EAAO,IAAD,YAAiB,CACvB,CAAA,EAAA,EAAA,uBAAA,AAAuB,EACrB,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACP,CADQ,AACP,AAES,IAAI,EAAA,CAIZ,MAAO,CACL,IAAI,CAAC,uCAAuC,CAAC,eAAe,CAAC,CAC7D,IAAI,CAAC,uCAAuC,CAAC,oBAAoB,CAAC,CACnE,AACH,CAAC,AADG,AAGI,uCAAuC,CAC7C,CAAuB,CAAA,CAEvB,IAAM,EAAsB,IAAI,EAAA,WAAP,kBAAoC,CAC3D,CAAA,EAAG,EAAe,aAAA,SAAA,CAAwB,CAC1C,CAAC,QAAQ,CAAC,CACV,CAAC,EAAoB,KACnB,IAAM,EADW,AAEf,EAFuC,AAEzB,EAF2B,EAAE,OAE9B,UADgB,IACU,CAAC,AAC1C,GAAI,CAAC,EAIH,OAHA,IAAI,CAAC,KAAK,CAAC,KAAK,AADY,CAE1B,CAF4B,2EAEgD,CAC7E,CACM,AADL,EAMJ,IAAM,EAAkB,GAAe,EALjB,CAAC,OAKc,AAAhB,AAA4B,CAAC,MAAM,CAAC,CACrD,oBAAoB,CACpB,gBAAgB,CAAC,AAYrB,MATI,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,GAAe,CAAC,EAAgB,CAAC,EAAE,AAC/C,IADyB,AACrB,CAAC,KADsC,EAC/B,CAAC,EAAe,GAE9B,IAAI,CAAC,GAFuB,EAElB,CACR,CAH2C,CAAC,AAI5C,CAJ6C,CAK7C,IAAI,CAAC,IAFQ,IACE,mBACiB,CAAC,IAG5B,CACT,CAAC,CACD,AAAC,IACK,CAAA,EAAA,EAAA,CAHgB,CAAC,EAEJ,EAAE,EAAE,CACjB,AAAS,AAN+C,CAAC,CAC5D,AAKa,CALZ,EAK2B,UAAF,QAAoB,CAAC,EAAE,AAChD,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,SAAsB,CAAC,CAAC,AAEhD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,GAAe,UAAF,IAAgB,CAAC,EAAE,AAC5C,IAAI,CAAC,OAAO,CAAC,EAAe,WAAF,KAAkB,CAAC,AAEjD,CAFkD,AAEjD,CACF,CAAC,AAEI,EAAuB,IAAI,EAAA,YAAP,iBAAoC,CAC5D,CAAA,EAAG,EAAe,aAAA,oBAAA,CAAmC,CACrD,CAAC,QAAQ,CAAE,QAAQ,CAAC,CACpB,AAAC,IACC,IAAM,EACJ,GAFe,AAEA,EAFE,EAAE,GAEG,EAAE,CAAX,QAAoB,CAAC,AA4BpC,MA1BI,EAHkC,CAGlC,EAAA,SAAA,AAAS,EAAC,GAAkC,IAAI,CAAC,EAAE,AACrD,IAAI,CAAC,OAAO,CAAC,EAAkC,MAAM,CADT,AACU,CAAC,AAEzD,IAAI,CAAC,KAAK,CACR,EACA,MAAM,CACN,EAL6C,EAKzC,CAAC,kBAF2B,QAED,CAAC,KAAK,AAEnC,CAFoC,AAEpC,CADH,CAAC,AACE,EAAA,SAAA,AAAS,EAAC,GAAkC,cAAc,CAAC,EAAE,AAC/D,IAAI,CAAC,OADuC,AAChC,CAAC,EAAkC,gBAAgB,CAAC,CAElE,AAFmE,IAE/D,CAAC,KAAK,CACR,CAH6C,CAI7C,gBAAgB,CAChB,IAAI,CAAC,QAF2B,kBAED,CAAC,IAAI,CAAC,AAGnC,CAFH,AAEG,CAFF,CAEE,EAAA,SAAA,AAAS,EAAC,GAAkC,UAAU,CAAC,EAAE,AAC3D,IAAI,CAAC,OAAO,CAAC,EAAkC,CADH,WACe,CAAC,CAE9D,AAF+D,IAE3D,CAAC,KAAK,CACR,EACA,GAJ6C,SAIjC,CACZ,IAAI,CAAC,YAF2B,oBAEK,EAAE,CACxC,CAEM,AAFL,CAGJ,CAAC,CACA,AAAD,IACE,IAAM,EACJ,AAJkB,CAAC,EAEJ,AAEA,EAFE,EAAE,GAEG,EAAE,CAAX,QAAoB,CAAC,AAChC,CAAA,EAAA,EAAA,GAFkC,MAElC,AAAS,EAAC,GAAkC,IAAI,CAAC,EAAE,AACrD,IAAI,CAAC,OAAO,CAAC,EAAkC,MAAM,CADT,AACU,CAEpD,AAFqD,CAErD,EAAA,EAAA,SAAA,AAAS,EAAC,GAAkC,GAFD,OAEW,CAAC,EAAE,AAC3D,IAAI,CAAC,OAAO,CAAC,EAAkC,CADH,WACe,CAAC,AAEhE,CAFiE,AAEhE,CACF,CAAC,AAEI,EAAoB,IAAI,EAAA,MALqB,GAK5B,oBAAoC,CACzD,CAAA,EAAG,EAAe,aAAA,YAAA,CAA2B,CAC7C,CAAC,QAAQ,CAAE,QAAQ,CAAC,CACpB,AAAC,IACC,IAAM,EAAuB,GADZ,AAC2B,EADzB,EAAE,GAC8B,EAAE,CAAX,KAAhB,GAAoC,CAAC,AA2C/D,OApCI,GAAsB,KAAK,EAAE,CAC3B,CAAA,EAAA,EAAA,IADkB,KAClB,AAAS,EAAC,GAAsB,KAAK,CAAC,EACxC,AAD0C,IACtC,CAAC,IAD2B,GACpB,CAAC,EAAsB,OAAO,CAAC,CAAC,AAE9C,IAAI,CAAC,IAF8B,CAEzB,CACR,EACA,OAAO,CACP,IAAI,CAAC,KAFe,oBAEU,EAAE,CACjC,CAAC,CAEA,GAAsB,KAAK,EAAE,CAC3B,CAAA,EAAA,EAAA,IADkB,KAClB,AAAS,EAAC,GAAsB,KAAK,CAAC,EAAE,AAC1C,IAAI,CAAC,IAD2B,GACpB,CAAC,EAAsB,OAAO,CAAC,CAAC,AAE9C,IAAI,CAAC,IAF8B,CAEzB,CACR,EACA,OAAO,CACP,IAAI,CAAC,KAFe,oBAEU,EAAE,CACjC,CAAC,CAGA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,GAAsB,WAAW,CAAC,EAAE,AAChD,GADgC,CAC5B,CAAC,OAAO,CAAC,EAAsB,aAAa,CAAC,CAAC,AAEpD,GAFmC,CAE/B,CAAC,KAAK,CACR,EACA,aAAa,CACb,IAFoB,AAEhB,CAAC,+BAA+B,EAAE,CACvC,CAED,AAFE,IAEE,CAAC,KAAK,CACR,EACA,SAAS,CACT,IAAI,CAAC,GAFe,qBAES,EAAE,CAChC,CAEM,AAFL,CAGJ,CAAC,CACD,AAAC,IACC,IAAM,EAAuB,AAHT,CAAC,EAEJ,AAC2B,EADzB,EAAE,GAC8B,EAAE,CAAX,KAAhB,GAAoC,AAC1D,CAD2D,CAC3D,EAAA,EAAA,SAAA,AAAS,EAAC,GAAsB,KAAK,CAAC,EAAE,AAC1C,IAAI,CAAC,IAD2B,GACpB,CAAC,EAAsB,OAAO,CAAC,CAEzC,AAF0C,CAE1C,EAAA,EAAA,IAF+B,KAE/B,AAAS,EAAC,GAAsB,KAAK,CAAC,EAAE,AAC1C,IAAI,CAAC,IAD2B,GACpB,CAAC,EAAsB,OAAO,CAAC,CAEzC,AAF0C,CAE1C,EAAA,EAAA,IAF+B,KAE/B,AAAS,EAAC,GAAsB,WAAW,CAAC,EAAE,AAChD,GADgC,CAC5B,CAAC,OAAO,CAAC,EAAsB,aAAa,CAAC,AAErD,CAAC,AAFqD,CAGvD,CAAC,AAEF,CALuC,MAKhC,IAAI,EAAA,mCAAmC,CAC5C,EACA,CAAC,QAAQ,CAAE,GADI,KACI,CAAC,CACpB,AAAC,GACQ,EAET,GAAG,EAAI,CAAC,CACR,CAJmB,AAIlB,EAJoB,AAIC,CAHA,CAGsB,AAJrB,AACA,EAGuC,CAC/D,AACH,CADI,AACH,AAIO,WANgB,EAAyC,CAAnB,aAMX,CAAC,CAAmC,CAAA,CACrE,IAAM,EAAS,IAAH,AAAO,CAAC,AACpB,OAAO,SAAS,AAA+B,CAAkB,EAC/D,OAAO,SAA4C,AAAnC,CAA8C,EAC5D,GAAI,GAAQ,EAF8B,CAEhC,MAAW,EAAE,GADc,CACV,GAAK,aAAa,CAC3C,CAD6C,MACtC,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAGzC,IAAM,EAAe,EAAO,IAAD,IAAS,AAAlB,CAAmB,AAiBrC,OAhBA,EAAO,IAAD,IAAS,CAAG,SAEhB,CAAY,CACZ,CAA4B,EAE5B,IAAM,EAAwB,EAC5B,EACA,GACA,CADI,CADG,AAER,EAAK,CAAC,AACP,OAAO,AAJoB,EAIb,IAJyC,AAI1C,eAAoB,CAC/B,EACA,IAAI,CACJ,KAFY,IAEH,CACT,EAEJ,CAAC,CAAC,AACK,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,IAHH,CACtB,CAAC,GAEiC,CAAC,AACxC,CADyC,AACxC,AACH,CAAC,AACH,AAFM,CAEL,AADG,AAGI,0BAA0B,CAAC,CAAmB,CAAA,CACpD,IAAM,EAAS,IAAH,AAAO,CAAC,AACpB,OAAO,SAAS,AAAiB,CAAkB,EACjD,OAAO,MADuB,GACd,EACd,IAAM,EAAU,CADO,CACE,GAAZ,EAAiB,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,MACnB,AAA7B,UAAuC,EAAE,AAArC,OAAO,GAAS,IAAF,AAAM,EACtB,EAAO,IAAD,CAAM,CAAC,KAAK,CAChB,sDAAsD,CACvD,CAAC,AACK,GAGF,EACJ,EAJa,CAAC,CAIV,CAAC,AAAC,AADK,IAEV,IADwB,AAClB,EADoB,AACR,EADU,EACN,CAAC,EAAR,AAAwB,CAAC,AAExC,OADA,EAAO,GAD+B,CAChC,qBAA0B,CAAC,EAAW,EAAU,GAC/C,CACT,CAAC,AAF2C,CAE1C,AAFoD,CAGrD,GAHiE,CACjD,AADkD,CAAC,AAClD,AAEZ,CAAC,AAAC,GAAU,CAChB,CADkB,EAAE,CACd,EAAY,IAAI,CAAC,EAAgB,AAAxB,CAAyB,AACxC,GAAK,CAAD,CAIG,CACL,IAAM,EAN8B,AACxB,AAMe,EANb,GAKD,YAC+B,GAA1C,EAAI,CAAD,UAAY,CAAC,IAAI,CACf,EAAwB,CAAD,MAAQ,CAChC,AAAI,KAAK,CAAC,EAAU,MAAM,CAAP,AAAQ,CAAC,IAAI,CAAC,GAAG,AAC1C,CAD2C,CAAC,AACrC,IAAD,qBAA0B,CAAC,EAAW,EAAS,GACtD,EAD2C,AAAS,GARnD,EAQ+D,AARxD,CAQyD,CAAC,EAR3D,CAAM,CAAC,KAAK,CAChB,kDAAkD,CACnD,CAAC,AAQJ,OAAO,OAAO,CAAC,MAAM,CAAC,EACxB,CAAC,AAD0B,CACzB,AACN,AAFgC,CACzB,AACN,AACH,AAHmC,CAE/B,AACH,AACH,CADI,AACH,AAEO,gCAAgC,EAAA,CACtC,IAAM,EAAS,IAAH,AAAO,CAAC,AACpB,OAAO,SAAS,AAAkB,CAAkB,EAClD,OAAO,OADwB,EACf,AAA2B,CAA4B,EACrE,OAAO,EAAO,GADe,CAChB,eAAoB,CAAC,EAAU,IAAI,CAAE,CAAR,QAAiB,CAAE,EAC/D,CAAC,AACH,CADI,AACH,AACH,AAHuE,CAEnE,AACH,AAEO,AALgE,CAAC,wBAKxC,EAAA,CAC/B,OAAO,SAAS,AAAkB,CAAkB,EAClD,OAAO,OADwB,EACf,EACd,IAAM,EAAW,EADO,AACE,IAAZ,CAAiB,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,CAAC,AAEjD,OADA,CAAQ,CAAC,EAAsB,CAAG,IAAI,CAAC,OAAO,CAAC,AACxC,CACT,CAAC,AACH,CADI,AACH,AACH,CADI,AACH,AAEO,CAN4B,GACf,CAAC,0BAKiB,EAAA,CACrC,IAAM,EAAS,IAAH,AAAO,CACnB,AADoB,OACb,SAAS,AAAmB,CAAkB,EACnD,OAAO,QADyB,CAChB,AAEd,CAA4B,EAE5B,OAAO,EAAO,IAJgB,AAIjB,eAAoB,CAAC,EAAU,IAAI,CAAE,CAAR,QAAiB,CAAE,EAC/D,CAAC,AACH,CAAC,AACH,AAHuE,AACjE,CAIE,AAFP,AADG,AAFoE,CAAC,uBAKzC,EAAA,CAC9B,IAAM,EAAS,IAAH,AAAO,CAAC,AACpB,OAAO,SAAS,AAAe,CAAkB,EAC/C,OAAO,IADqB,KACZ,EACd,IAAM,EAAU,IAAI,CAAP,AAAQ,CADO,MACA,CAAC,AACvB,EAAa,CAAA,EAAA,EAAA,GAAH,gBAAG,AAAmB,EACpC,EAAO,IAAD,CAAM,CACZ,EACA,EAAO,GADA,CACD,aAAkB,CACzB,CAAC,AAEI,EAAO,EAAH,AAAU,IAAD,EAAO,CAAC,SAAS,CAClC,CAAA,EAAG,EAA0B,SAAS,CAAA,QAAA,CAAU,CAChD,CACE,EAF0B,EAEtB,CAAE,EAAA,QAAQ,CAAC,MAAM,YACrB,EACD,CACF,CAMD,AANE,MAFY,CAQP,AAJK,EAAA,CAIF,MAJS,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,CAAK,CAC1D,CAD4D,CACnD,KAAK,CAAN,AAAO,IAAI,CAAC,CAAC,CAI3B,IAAI,CAAC,AAAC,IACL,EAAK,AADe,EAChB,AADkB,CACd,CADgB,CACd,CAAC,AACJ,IAER,EAFc,CAAC,EAEV,CAAE,AAAD,IACL,CADkB,CACb,CADe,CAChB,CADkB,YACF,CAAC,GACrB,EAD0B,AACrB,CADsB,CAAC,AACxB,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAM,GAAD,IAAQ,CACvB,CAAC,CAAC,AACH,EAAK,EAAD,CAAI,EAAE,CAAC,AACJ,OAAO,CAAC,MAAM,CAAC,IAE5B,CAFiC,AAEhC,AACH,CAHoC,AAEhC,AACH,AACH,CAJuC,AAGnC,AACH,AAEO,mBAAmB,CACzB,CAAsB,CACtB,CAAa,CACb,CAAyB,CACzB,CAA6C,CAAA,CAG7C,GAAI,KADwD,IAApC,EAAA,GAA6C,CAAC,AACnD,CADU,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,EAChC,IAAI,CAAC,SAAS,EAAE,CAAC,iBAAiB,CACvD,CADyD,MAClD,EAAa,KAAK,CAAC,EAAU,EAAjB,CAGrB,GAHoC,CAG9B,EAAgB,EAAS,EAHoB,CAAC,CAAC,EAGvB,CAAQ,EAAnB,AAAuB,CAAQ,CAAC,EAAsB,CAAC,AAEpE,EAAc,CAAqB,CAAC,CAAC,CAAW,CAAC,AACjD,CADkD,CACpC,EADH,AACyB,KAAK,CAAC,CAHwB,AAGvD,AAAgC,CAAC,CAAC,AAE7C,EACJ,IAAI,CAAC,GAHkC,MAGzB,EAAE,CAAC,EADQ,mBACa,EAAI,EAAA,cAJkF,cAItD,CAAC,AAEnE,EAAa,CAAA,EAAA,EAAA,GAAH,gBAAG,AAAmB,EACpC,IAAI,CAAC,KAAK,CACV,EACA,IAAI,CAAC,MADQ,WACS,CACvB,CACG,AADF,IACM,CAAC,iBAAiB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACpD,CAAU,CAAC,EAAA,sBAAsB,CAAC,CAAG,CAAA,CAAW,CAAC,AAEnD,GAAI,CACF,IAAM,EAAc,EAAsB,EAAa,EACpC,GADF,CACM,EAAE,CAArB,AADiD,EAAa,CAAC,CAAC,AAE9D,IAAI,AAF+B,CAE9B,EADI,eACa,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACjD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAW,CAAC,AAE1C,IAAI,CAAC,iBAAiB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CACpD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAW,CAAC,CAGlD,AAAC,MAAO,CAAC,CAAE,CACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAE,CAAC,CAAE,aAC9D,EACD,CAAC,CAAC,AACJ,AAED,IAAM,EAAO,CAJE,CAIL,EAAO,CAAC,MAAM,CAAC,SAAS,CAChC,CAAA,EAAG,EAA0B,SAAS,CAAA,CAAA,EAAI,EAAW,CAAE,CACvD,CACE,IAAI,CAAE,AAFoB,CAAyB,CAE7C,QAAQ,CAAC,MAAM,YACrB,EACD,CACF,CAAC,AAEI,EAAM,CAAH,CAAG,EAJE,KAIK,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,CAAK,CAC1D,CAD4D,CAC/C,KAAK,CAAC,EAAU,EAAjB,EA6BrB,EA7BoC,IAEX,GAF0B,CAAC,CAAC,KAElB,EAA/B,AAAiC,OAA1B,GAAK,AAAF,IAAM,CAClB,EAAI,CAAD,GAAK,CACN,AAAC,IACC,IADgB,AACZ,CAAC,CADa,EAAE,iBACK,CACvB,EACA,EADI,AAEJ,EACA,OAFW,AAGX,CADQ,CADG,AAIf,CAAC,CACA,AAAD,GAAS,CACP,CADS,AAHE,CACV,CAEU,AAFT,CAGE,CAAC,oBAAoB,CAAC,EAAM,EAAF,AAAe,EAAa,IAAI,CAAE,EAArB,AAC7C,CADqE,AACpE,CADyD,AAAY,AAEvE,CAFwE,AAEvE,CAKF,CAAuB,CAAC,EAAgB,CACtC,CAAuB,CAAC,EAAgB,EAAI,EAAE,CAAC,AACjD,AALgC,CAKT,CAAC,CAHvB,AACsC,CAEE,AAHvC,CAGwC,GADD,CACK,CAAC,MAC7C,CADqC,GACjC,UACJ,WAAW,GACX,EACD,CAAC,CAAC,CAEE,CACT,CAAC,AAEO,CAHI,CAAC,EAHI,qBAMgB,CAC/B,CAAkC,CAClC,CAAkB,CAClB,GAAa,CAAK,CAAA,CAElB,GAAI,CAFM,AAEL,EACH,OADY,AACL,EADO,EACH,CAAC,KAAK,CAAC,KAAK,CACrB,wDAAwD,CACzD,CAAC,AAEJ,GAAI,EAAQ,KAAD,CAAO,GAAK,EAAU,MAAM,CACrC,AAD8B,CAAS,MAChC,IAAI,CAAC,KAAK,CAAC,KAAK,CACrB,kEAAkE,CACnE,CAAC,AAKJ,IAAM,EAAc,EAAU,GAAG,CAAA,AAAC,CAAC,CAAC,CAAP,AAAZ,AAAsB,CAAC,CAAC,WAAW,CAAC,CAAC,AAEhD,EADiB,AACD,EADa,KAAK,CAAA,AAAC,GAAG,AAAI,AAAd,AACf,CAD0B,EAAM,AACf,CADoB,CAAW,CAAC,CAAC,CAAC,CAAC,CAAC,AAEpE,CAAC,EAAa,QAAH,CAAC,CAAC,CAAY,CAAC,AAAE,CAAD,OAAC,CAAQ,CAAC,AAAG,CAAW,CAAC,CAAC,CAAC,CACtD,EACE,QADQ,EACE,CACV,OAAO,CAAC,AAEd,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAU,MAAM,CAAP,AAAS,CAAC,EAAE,CAAE,CACzC,GAAM,MAAE,CAAI,CAAE,aAAW,CAAE,CAAG,CAAS,CAAC,CAAC,CAAC,CAAC,AACrC,EAAiB,CAAO,CAAC,CAAC,CAAC,CAAC,AAC5B,CAAC,EAAK,CAAF,CAAM,CAAD,AACb,CAFkB,YAEQ,CAAZ,IAAiB,CAC3B,CAAC,IAAI,CAAE,EAAe,CACtB,CAAC,OAAgB,EAAU,AAE7B,CAHuB,AACO,IAAb,AAEb,CAAC,CAFuB,gBAEN,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,AACpD,EAAK,EAAD,UAAa,CAAC,EAAA,sBAAsB,CAAE,GAG5C,IAAI,CAAC,KAHoD,CAAC,CAAC,aAGlC,CAAC,EAAM,CAAW,CAAb,AAAc,CAAC,CAAC,CAAE,EAAa,EAAK,CAAF,EAAK,AACtE,AACH,CAF0E,AAEzE,AAEO,CAJmE,EAAZ,iBAInC,CAC1B,CAAU,CACV,CAAmB,CACnB,CAAmC,CACnC,CAAiB,CACjB,CAAwB,CAAA,CAExB,GAAM,cAAE,CAAY,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAAC,AAC1C,GAAI,CAAC,GAAS,EAAJ,AACR,GAAI,CACF,EAAa,EAAM,EAAa,AAAf,AAFK,EAAE,AAEqB,GAC9C,AAAC,CADY,GAAkB,CAAuB,CAAV,AAAW,AAC/C,CADgD,CAC3C,CACZ,AADU,IACN,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAE,GAGpD,AAFD,AADwD,CAAC,CAAC,EAI3D,CADO,CACF,CADI,CACL,aAAgB,CAAC,GACrB,EAAK,AADqB,CAAC,CAAC,AACxB,OAAU,CAAC,CAAE,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAAE,OAAO,CAAE,GAAO,EAAF,KAAS,CAAE,CAAC,CAAC,CAE1E,EAAK,EAAD,CAAI,EAAE,AACZ,CADa,AACZ,CAteU,EAAA,yBAAA,CAAA,0BAAyB,sFCzCtC,IAAA,EAAA,EAAA,CAAA,CAAA,QAMA,EAAA,EAA0D,CAAA,CAAA,IAHlB,IAIxC,EAAA,EAAA,CAAA,CAAA,GAD0D,KAG1D,EAAA,CAFoE,CAEpE,CAAA,CAAA,QAEM,EAA6C,CAFiB,AAGlE,WADkB,MACD,EAAE,EACpB,AAGD,CAHE,EADwB,IAIb,UAA6B,EAAA,QAAR,WAAuD,CAC/E,oBAAoB,AAA4B,CAChD,oBAAoB,AAA4B,CAIhD,WAAW,CAAG,EAAM,AAE5B,GAF2B,UAEf,EAAqC,CAAA,CAAE,CAAA,CACjD,MAAM,EAAiB,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CAAC,AACxD,AADoB,KACf,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GAErC,IAAI,CAAC,MAF8C,CAAC,CAAC,YAE5B,CAAG,IAAI,EAAA,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,AAC5E,IAAI,CAAC,oBAAoB,CAAG,IAAI,EAAA,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,AAC5E,IAAI,CAAC,WAAW,EAAG,CACrB,CAAC,AAEQ,EAHgB,CAAC,MAGR,CAAC,EAAqC,CAAA,CAAE,CAAA,CACxD,IAAM,EAAY,CAAE,GAAG,CAAc,CAAE,CAAxB,EAA2B,CAAM,CAAE,CAAC,AACnD,KAAK,CAAC,SAAS,CAAC,GACX,IAAI,CAAC,CADe,CAAC,CAAC,QACN,EAAE,CAIvB,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,GACpC,IAAI,CAAC,CADwC,CAAC,CAAC,iBACtB,CAAC,SAAS,CAAC,GACtC,CAAC,AAEQ,IAAI,CAHkC,CAAC,AAGnC,CAAI,AAHgC,CAG/B,AAIT,oBAAoB,EAAA,CAC3B,MAAO,IACF,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,IAChD,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAEvD,AADG,CAAC,AACH,AAEQ,iBAAiB,CAAC,CAA8B,CAAA,CACvD,KAAK,CAAC,iBAAiB,CAAC,GACnB,IAAI,CAAC,MAD4B,CAAC,CAAC,GACnB,EAAE,CAGvB,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAC5C,IAAI,CAAC,MADqD,CAAC,CAAC,YACnC,CAAC,iBAAiB,CAAC,GAC9C,CAAC,AAEQ,MAAM,EAAA,CACb,CAJ0D,CAAC,CAAC,EAIvD,CAAC,MAAM,EAAE,CAAC,AACV,IAAI,CAAC,WAAW,EAAE,CAGvB,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,AACnC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,AACrC,CAES,AAFR,OAEe,EAAA,CACd,KAAK,CAAC,OAAO,EAAE,CAAC,AACX,IAAI,CAAC,WAAW,EAAE,CAGvB,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,AACpC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,AACtC,CAAC,CACF,AAjED,EAAA,oBAAA,CAAA,qBAiEC,YClFE,OAAA,cAAA,CAAA,EAAA,aAAA,0CAEH,IAAA,EAAA,EAA+C,CAAA,CAAA,QAAtC,OAAsC,AAAtC,cAAA,CAAA,EAAA,uBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,oBAAoB,CAAA,GAAA,+ECd7B,IAAM,EAAsB,CAAC,KAAK,CAAE,KAAK,CAAE,IAArC,GAA4C,CAAC,CAEtC,EAAe,CAAC,KAAK,CAAE,GAAvB,GAA6B,CAAA,CAC7B,EAAe,CAAC,KAAK,CAAE,GAAvB,IAA8B,CAAA,CAKpC,SAAS,EAAa,CAAa,CAAY,CAAO,EAAmB,AAC9E,KAD0B,EACnB,EAAc,QAAQ,CAAC,EAAV,AAAkB,KAAD,MAAY,EAAE,CAAC,AACtD,CAGO,SAAS,EACd,CAAO,SAEP,AAAI,EAAa,EAAc,CAHA,EAItB,IAD6B,CAAC,AAAvB,EAAyB,AAAZ,IACT,CACT,EAAa,EAAc,GAC7B,IADoC,CAAtB,AAAuB,EAAV,AAAY,IAC5B,MAElB,CAEJ,CA0EA,KA5EW,IA4EF,EAAW,CAAK,EAAuB,AAC9C,AA7EkB,EA4EJ,EACR,EAAc,EAAE,CAEhB,CAFM,CAEU,AAAC,IACrB,CAD0B,CACpB,GAAD,CADgD,CAAjD,EACS,CAAC,AAAC,EAAE,EACX,GADoC,EAC/B,CAAC,OAAO,CAAC,EAAE,CAAC,AACnB,EADqB,AACP,EAAE,CAAC,AAEjB,EAAO,IAAD,AAAK,CAAC,CAFC,CAEC,AAElB,CAFmB,AAElB,CAAC,AACJ,CAAC,CAGD,OADA,EAAc,GACP,CACT,CAFqB,CAAC,GACP,EADA,qDApCR,SAAS,AAAuB,CAAQ,EAA+B,AAC5E,IAAM,EAAU,AAAC,IACf,CADI,AAAgB,EAChB,CACF,EAFoD,CAEhD,EAH4B,IAGtB,CAAC,QAAQ,CAAC,GAAQ,EAAH,CAAC,IAAS,EAAM,GAAD,OAAW,CAC9C,GAAqB,QAAQ,EAAzB,OAAO,EAAoB,GAApB,IAA2B,EAAM,GAAD,GAAO,CAClD,GAAqB,QAAQ,EAAzB,OAAO,EAAoB,OAAO,EAAM,GAAD,KAAS,EAAE,CAAC,MAAM,MAC7D,GAAI,KAAA,GAAuC,EAA7B,IAAA,CAAoC,CAAC,CACxD,CAD2B,KAAA,CACpB,IAD8B,AAC1B,CAAC,QADkC,CACzB,CAAC,GAAO,EAAF,CAAC,GAAO,AACrC,CAAE,KAAM,CACN,MACF,CADS,AAEX,CAAC,CAED,OAJoB,AAIb,KAAK,CAAC,OAAO,CAAC,GACjB,EAAS,GADgB,GACjB,AAAO,CAAC,CAAC,EAAyB,CAAtB,GAA0B,CAC5C,IAAM,AAD2C,EACpC,EAAQ,AAAf,GACN,CADyB,CAAC,AAAN,IACG,QAAA,EAAhB,OAAO,IAAA,GAA6B,IAAR,EAAoB,CAApB,CAA0B,CAAlB,CAAyB,EAAP,AAAe,CAC9E,CAD0E,AACzE,CADgF,AAC9E,CAAC,EACJ,EAAQ,EACd,GADa,GAAS,CAAC,eA9DhB,SAAS,AAAkB,CAAY,CAAU,CAAO,EAA4C,AACzG,GAAI,CACF,GAAuB,CAAC,EAAE,CAAtB,CAFyB,CAEjB,KAAD,CAAC,CACV,OAAO,AAIT,IAAM,EAAc,AAAD,GAAI,AAJL,AAKG,AAAnB,KADI,AAAkE,GACnD,EAAf,OAAO,GAAmC,QAAA,EAAf,OAAO,GAAoB,AAApB,MAA0B,CAAC,QAAQ,CAAC,GAAG,AACpE,CADqE,AACpE,EADsE,AAClE,CAAD,OAAS,EAAE,CAAC,CACd,KAAK,CAAC,OAAO,CAAC,GAAG,AACnB,CADoB,CACZ,CADc,CACV,CAAD,EAAI,AAAR,CAAQ,AAAC,GAAA,AAAO,EAAW,GAAG,CAAC,CAAC,AAEvC,CAFwC,AAEvC,EAFgC,SAErB,CAAC,CAIlB,EAAW,CAAO,CAAC,CAAC,CAAC,CAC3B,CADM,EACF,EAAa,EAAqB,IAA6B,IAAnD,AAAuD,EAAhB,AAAkB,EAAvB,AAChD,CADgD,IAAd,CAAmB,CAC9C,EAAW,GAGpB,KAHmB,AAAS,CAAC,CAGtB,EAAQ,EAAQ,GAAT,AAAY,CAAA,AAAC,CAAL,EAAK,AAAO,EAAW,GAAG,CAAC,AACnD,CADoD,AAClD,CADmD,EAAP,EACtC,CACN,MACF,CACF,AAFW,SAAS,yDAMb,SAAS,AAAuB,CAAY,CAAU,CAAI,CAAY,CAAQ,EAAqB,AACxG,GAAI,CAAC,EAAkB,GACrB,MAFkC,CAE3B,EAGT,AAJmC,CAAC,EAAE,AACxB,AADQ,CAIjB,IAAM,GAAA,EAAO,EAChB,EADoB,CAxCxB,AAwC0B,AAClB,SAzCC,AAAa,CAAG,CAAU,CAAQ,AAyCvB,EAzC4C,AAC9D,OADmB,AACZ,EAAS,IAAI,CAAA,AAAC,CAAN,EAAgB,EAAI,CAAd,AAAa,SAAW,CAAC,GAChD,EAuCqB,CAxCiC,CAwC5B,AAxC6B,CAAC,AAwChC,EAClB,KAD4B,CAAC,CACtB,CADwB,CAInC,EAHe,IAGR,EACT,GADc,wJC9BR,EAAmB,OAAO,CAGrBwd,EAAAA,IAHL,SAGkB,CAAiB,CAAA,EAGlC,IAAM,EAA0D,CACrE,EACA,EADI,AAEJ,EACA,KADO,AAGP,EAAK,CAFG,AAFI,AAFgB,CAMxB,UAAa,CAAC1mB,EAAAA,gCAAgC,CAAE,oBAAoB,CAAC,CAEzE,IAAM,EAAU2mB,EAAAA,iBAAiB,CAAC,EAAc,GAC1C,EAAiBC,EADgC,AAChCA,CADiC,EAAV,OACxC,OAAkC,CAAC,GAEzC,GACE,CAAC,GACD,CAAC,CAJkD,CAAC,CAGnD,AAED,CAACF,EAAAA,QADA,KACa,CAAC,aAAA,EACf,CAACG,EAAAA,sBAAsB,CAAC,EAAc,EAASH,EAAAA,GAAF,GAAT,OAAwB,CAAC,aAAa,EAG1E,CAFA,MAOF,IAAM,EAAqB5lB,EAAAA,UAAU,CAAC,GAAhC,AAAsC,CAAF,CAAC,EAAK,CAAC,eAAe,CAAC,CAC3D,EAAkBA,EAAAA,UAAU,CAA5B,AAA6B,GAAM,CAAF,CAAC,EAAK,CAAC,eAAe,CAAC,CAC1D,GAAmB,GACrB,EAAK,EAAD,KADF,MAAqC,AACrB,CAAC,CADsB,AACpB,sBAAsB,CAAE,EAAoB,gBAAF,GAAqB,CAAE,CAAA,CAAiB,CAAC,CAG1G,IAAM,EAAgBgmB,EAAAA,GAHkE,MAGlF,aAAsC,CAAC,GAEzC,GACF,EAAK,AAH8C,CAAC,CAGhD,MADW,EAAE,EACA,CAACC,EAAAA,kCAAkC,CAAE,GAGpDC,EAAAA,QAHiE,CAAC,GAGtD,CAACC,EAAAA,YAAY,CAAE,SAAmC,GAAvB,CAAA,AAAK,GAC9C,EAAK,AADoE,EAAE,AACvE,MAD0C,IAC7B,CAACC,EAAAA,4BAA4B,CAAE,EAAgB,CAAC,CAAC,CAGpE,EAAK,EAAD,IAH8C,OAGhC,CAAC,CACjB,CAACnnB,EAAAA,4BAA4B,CAAA,CAAG,EAChC,CAAConB,EAAAA,SAD6C,mBACjB,CAAA,CAAG,CACpC,CAAG,CAAC,CAGF,GAJyC,CAInC,EAAkB,EAAQ,IAAI,CAAL,AAAM,IAAI,CAAC,CAE1C,EAAK,EAAD,QAAW,CACbT,EAAAA,aAAa,CAAC,iBAAA,CAAoBloB,EAAAA,QAAQ,CAAC,EAAiBkoB,EAAAA,WAAF,EAAe,CAAC,iBAAiB,CAAA,CAAI,EAEnG,EAEM,EAAoB1J,EAAAA,OAJwF,MAI5G,SAA0C,CAAC,CAAC,EAAA,EAAA,QAAA,CAAA,CAAA,IACA,AADA,EAAA,EACAoK,EAAAA,sBAAA,CAAA,CACA,YAAA,CAAA,CACA,CAAA,CAAA,EAGA,EAAApK,EAAAA,QAJA,SAIA,KAAA,CAAA,CAAA,EAAA,EAAA,MAAA,CAAA,CAAA,IACA,EADA,EACAqK,EAAAA,oBAAA,CAAA,CACA,YAAA,CAAA,CACA,CAAA,CAAA,EAIA,EAAA,MAAA,CAAA,GALA,GAKA,CACA,KACA,CADA,GAEA,GAIA,CAAA,CACA,CAAA,EAAA,CAAA,CAAA,CAAA,EANA,AAkCA,EAlCA,AAkCAne,EAAAA,IAjCA,EAAA,EAKA,IA4BA,KAAA,CAzBA,AAyBA,CAzBA,EAAA,CAAA,CAAA,GAAA,CACA,CACA,AAFA,IAEA,CAAA,EAuBA,AAtBA,SAAA,GACAwd,AADA,EACAA,AAFA,aAEA,CAAA,EACA,GACA,CAAA,CACA,AAHA,CAGA,SAFA,EAAA,qFCnH/C,OAAA,cAAA,CAAA,EAAA,aAAA,yCAkDU,EAAA,mBAAmB,CAAG,MAAM,CACvC,oDAAoD,CACrD,CAAC,mCClDU,cAAc,6DACxB,GADU,EAAA,SACV,KADwB,GAAd,CAAc,CAAd,cAAc,CAAA,CAAA,CAAA,GACxB,AAID,SAJC,CAAA,sBAAkC,CAAA,AAClC,EAAA,OAAA,CAAA,IAAA,gBAA8B,CAAA,AAC9B,EAAA,YAAA,OAAA,CAAA,mCAAyD,CAAA,AACzD,EAAA,UAAA,CAAA,CAAA,yBAAuC,CAAA,+BCNtC,OAAA,cAAA,CAAA,EAAA,aAAA,oaAeU,EAAA,mCAAmC,CAC9C,gCAAyC,CAAC,AAS/B,EAAA,+BAA+B,CAC1C,4BAAqC,CAAC,AAW3B,EAAA,yBAAyB,CAAG,sBAA+B,CAAC,AAY5D,EAAA,YAAY,CAAG,SAAkB,CAYjC,AAZkC,EAYlC,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAYtC,EAAA,YAAY,CAAG,SAAkB,CAAC,AAWlC,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAK9C,EAAA,qCAAqC,CAAG,MAAe,CAAC,AAKxD,EAAA,qCAAqC,CAAG,MAAe,CAAC,AAKxD,EAAA,0BAA0B,CAAG,YAAqB,CAAC,AAOnD,EAAA,iCAAiC,CAC5C,4BAAqC,CAAC,AAO3B,EAAA,4CAA4C,CACvD,uCAAgD,CAAC,mCCrIvC,SAAS,6DACnB,GADU,EAAA,IACV,KADmB,GAAT,CAAS,CAAT,SAAS,CAAA,CAAA,CAAA,GACnB,AAGD,YAHC,CAAA,UAAyB,CAAA,AACzB,EAAA,OAAA,CAAA,YAAsB,CAAA,AACtB,EAAA,OAAA,KAAA,CAAA,iBAAgC,CAAA,+BCL/B,OAAA,cAAA,CAAA,EAAA,aAAA,sbAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAU4B,EAC5B,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,AADwD,EACxD,CAAA,CAAA,QASA,EAAA,EAamB,CAAA,CAAA,QAWnB,CAzB6C,CAyB7C,EAAA,CAAA,CAAA,GAXmB,KAenB,EAAA,EAAA,CAAA,CAAA,IADwC,CACM,GAqB9C,SAAgB,EACd,CAA0B,CAC1B,CAA8C,EAK9C,GAAI,CAAC,EAAa,GAPY,IAOL,EAAT,AAAS,SAAS,CAAC,YAAY,CAAC,AAIhD,IAAM,EACwB,KADjB,GACyB,EAApC,OAAO,EAAY,IAAI,EAAiB,EAAY,CAAlC,GAAsC,CACpD,EAAY,EADmC,EAC/B,CAChB,EAA6B,EADlB,AAC8B,IAAI,CAAC,CAAC,AAErD,GAF8C,GAEvC,CAAA,EAAG,EAAA,OAFwB,EAEf,CAAC,YAAY,CAAA,CAAA,EAAI,EAAO,EAAG,EAAS,CAAZ,AAAY,CAAA,EAAH,AAAO,CAAN,CAAC,AAAW,CAAE,CAAC,AAAE,CAAD,CAAG,AAAP,CAAO,CAAE,AAC5E,CAD6E,AAC5E,AAED,SAAgB,EAA6B,CAAiB,EAE5D,IAAM,EAAe,EAAU,IAAI,EAAE,CAAP,AAAQ,AAChC,CADY,CACQ,EAAa,IAHG,GAGI,CAAC,EAAT,CAAY,CAAC,CAC/C,AADmB,AAA6B,EAE5B,CAAC,CAAC,GAAxB,EACI,CAFQ,CAGR,EAAa,KAAK,CAAC,CAAC,CADR,AACU,EAAV,CAIlB,AANmB,MAMZ,CAHP,EAAa,EAAW,GADqB,CAAC,CAI7B,AAJ8B,CACrC,EAAa,GAAY,EAAA,CAAE,CAAC,AAGpB,QAAQ,CAAC,GAAG,CAAC,CAAC,AAAE,CAAD,CAAY,KAAK,CAAC,CAAC,CAAR,AAAU,CAAC,CAAC,CAAC,CAAC,AAAE,CAAD,AAC7D,CAAC,AAED,QAHwE,CAAC,AAGzD,EAA6B,CAAwB,EACnE,GAAI,CAEF,IAAM,EAAM,CAAH,GAAO,GAAG,CAAC,GAMpB,EATwC,KAMxC,EAAI,CAAD,GAHiC,CAAC,CAAC,EAG1B,CAAG,EAAE,CAAC,AAClB,EAAI,CAAD,OAAS,CAAG,EAAE,CAAC,AAEX,EAAI,CAAD,OAAS,EAAE,CACrB,AADsB,AACvB,MAAQ,CAAC,CAAE,CAEV,MAAO,8BAA8B,CAAC,AACvC,AACH,CAAC,AAED,SAAgB,EACd,CAAsD,EAEtD,GAAI,WAH6B,OAGX,GAAI,GAAU,EAAO,CAAX,GAAU,YAAiB,CACzD,CAD2D,MACpD,EAA6B,EAAO,IAAD,YAAiB,CAAC,CAAC,AAE/D,IAAM,EAF+B,AAExB,EAAH,AAAU,IAAD,AAAK,EAAI,WAAW,CACjC,AADkC,EAC3B,EAAH,AAAU,IAAD,AAAK,EAAI,IAAI,CAAC,AAC3B,EAAW,EAAO,IAAV,AAAS,IAAS,EAAI,EAAE,CAAC,AACvC,MAAO,CAAA,aAAA,EAAgB,EAAI,CAAA,CAAA,CAAI,EAAI,CAAA,CAAA,CAAI,EAAQ,CAAE,AACnD,CADoD,AACnD,AAED,IAHiD,KAGxC,EAAQ,CAAwB,EAGvC,EAHc,CAGV,MAAM,CAAC,SAAS,CAAC,GACnB,CADuB,CAAC,EAAE,GACnB,CAKX,CAAC,AAED,EAPe,CAAC,MAOA,EACd,CAAgC,CAChC,CAAkC,EAElC,IAAI,EAAyB,CAAA,CAAE,CAAC,AAuBhC,KAvBc,EAEV,EAAmB,EAAA,QAN0B,IAM7B,IAAmB,CAAC,GAAG,EAAE,CAC3C,EAAa,CACX,GAAG,CAAU,CACb,CAAC,CAFO,CAEP,cAAc,CAAC,CAAE,EAAA,0BAA0B,CAC5C,CAAC,EAAA,YAAY,CAAC,CAAE,EAAO,IAAD,IAAS,CAC/B,CAAC,EAAA,yBAAyB,CAAC,CAAE,EAAoB,GACjD,CAAC,EADsD,AACtD,CADuD,UAAR,CACnC,CAAC,CAAE,EAAO,IAAD,AAAK,CAC3B,CAAC,EAAA,kBAAkB,CAAC,CAAE,EAAO,IAAD,AAAK,CACjC,CAAC,EAAA,kBAAkB,CAAC,CAAE,EAAQ,EAAO,GAAR,CAAY,AAAL,CAAM,EAC3C,CAAC,AAEA,EAAmB,EAAA,YAAH,IAAmB,CAAC,MAAM,EAAE,CAC9C,EAAa,CACX,GAAG,CAAU,CACb,CAAC,CAFO,CAEP,mBAAmB,CAAC,CAAE,EAAA,+BAA+B,CACtD,CAAC,EAAA,iBAAiB,CAAC,CAAE,EAAO,IAAD,KAAU,CACrC,CAAC,EAAA,mBAAmB,CAAC,CAAE,EAAO,IAAD,AAAK,CAClC,CAAC,EAAA,gBAAgB,CAAC,CAAE,EAAQ,EAAO,GAAR,CAAO,AAAK,CAAC,EACzC,CAGI,AAHH,CAIN,CAAC,AA0HD,QA3HmB,CAAC,AA2HJ,EACd,CAA+B,CAC/B,CAAU,CACV,CAAkE,EAE9D,AAA+B,UAAU,EALV,AAKY,OAApC,EAAO,IAAD,QAAa,EAC5B,CAAA,EAAA,EAAA,sBAAA,AAAsB,EACpB,GAAG,EAAE,AACH,EAAO,IAAD,QAAc,CAAC,EAAM,CACzB,CADuB,GACnB,CAAE,EACP,CAAC,AACJ,CADK,AACJ,CACD,AADC,GAFmE,AAGjE,CAAC,AACE,EADA,CACG,AACL,EADO,AACP,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAE,EAE9C,CAAC,AAFgD,CAAC,CAGlD,AAHmD,EAMzD,CAAC,AAqJD,CAxJU,CACL,CAAC,MAuJU,EAAsB,CAAc,EAClD,IAAM,EAAQ,EAAJ,CAAmB,EAAF,EAAM,EAAI,CADF,gBACmB,CAAC,AACjD,EAAQ,EAAJ,CAAmB,EAAF,EAAM,EAAI,SAAS,CAAC,AAE/C,MAAO,CAAA,0BAAA,EAA6B,EAAI,EAAA,gBAAA,EAAqB,EAAI,CAAA,CAAA,AAAG,AACtE,CAAC,AA5YD,AA2YuE,EA3YvE,gBAAA,CAAA,EAmBA,EAAA,aAFC,eAED,CAAA,EAcA,EAAA,yBAFC,GAED,CAAA,EAgBA,EAAA,mBAAA,CAAA,EAuBA,EAAA,CAzBC,eAYA,mBAaD,CAAA,EA8BA,EAAA,gCAFC,OAED,CAAA,EAAA,OAAgB,AACd,CAA2B,CAC3B,CAAkC,MAE9B,EACJ,CADwB,CAAC,CACrB,CACF,EAAM,CAAH,CAAU,IAAD,UAiCf,EAjCgC,CACzB,GAP+C,CAO3C,GAAG,CAAC,EAAO,IAAD,YAAiB,CAAC,MAChC,EACL,AAAC,MAAO,CADM,AACL,CADM,AACJ,CACV,GAAG,IAAG,EACP,AACD,IAAI,EAAyB,CAC3B,AAHe,CAGd,AAHe,EAGf,IADW,UACG,CAAC,mBAAmB,CAAC,CAAE,EAAO,IAAD,aAAkB,CAC9D,CAAC,EAAA,cAAc,CAAC,UAAU,CAAC,CAAE,EAAO,IAAD,KAAU,CAC9C,CAAC,AAuBF,OArBI,EAAmB,EAAA,YAAH,IAAmB,CAAC,GAAG,EAAE,CAC3C,EAAa,CACX,GAAG,CAAU,CACb,CAAC,CAFO,CAEP,cAAc,CAAC,CAAE,EAAA,0BAA0B,CAC5C,CAAC,EAAA,YAAY,CAAC,CAAE,GAAG,AAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAI,EAAO,IAAD,IAAS,CACzD,CAAC,EAAA,yBAAyB,CAAC,CAAE,EAAoB,GACjD,CAAC,EADsD,AACtD,CADuD,UAAR,OAC7B,CAAC,CAAE,GAAK,AAAF,QAAU,EAAI,EAAO,IAAD,AAAK,CAClD,CAAC,EAAA,kBAAkB,CAAC,CAAE,MAAM,CAAC,GAAG,AAAE,IAAI,CAAC,EAAI,EAAQ,EAAO,GAAR,CAAO,AAAK,CAAC,CAC/D,CAAC,EAAA,YAAY,CAAC,CAAE,GAAG,AAAE,QAAQ,EAAI,EAAO,IAAD,AAAK,EAC7C,CAEC,AAFA,EAEmB,EAAA,YAAH,IAAmB,CAAC,MAAM,EAAE,CAC9C,EAAa,CACX,GAAG,CAAU,CACb,CAAC,CAFO,CAEP,mBAAmB,CAAC,CAAE,EAAA,+BAA+B,CACtD,CAAC,EAAA,iBAAiB,CAAC,CAAE,EAAO,IAAD,KAAU,CACrC,CAAC,EAAA,mBAAmB,CAAC,CAAE,GAAG,AAAE,QAAQ,EAAI,EAAO,IAAD,AAAK,CACnD,CAAC,EAAA,gBAAgB,CAAC,CAAE,MAAM,CAAC,GAAG,AAAE,IAAI,CAAC,EAAI,EAAQ,EAAO,GAAR,CAAO,AAAK,CAAC,EAC9D,CAAC,AAGG,CACT,CAAC,CAED,EAAA,KAHmB,CAAC,mBAGpB,CAAA,EAAA,OAAgB,AACd,CAA8C,EAE9C,MAC8C,IAAI,CAAhD,EAAsB,GAGzB,MAPwC,QAIE,EAAlB,KACe,IAApC,EAAA,GAA6C,CAC9C,CADM,AACL,CADM,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,AAEnC,CAAC,CAID,EAAA,iBAAA,CAAA,EAAA,OAAgB,AAEd,CAAc,CACd,CAA8C,CAC9C,CAAkC,CAClC,CAAgE,EAGhE,EA0DD,CA1DO,KARyB,iBAQvB,CAAoB,CAAE,CAAG,IAAI,CAAC,AAGhC,EAAW,EAFF,EAAqB,EAEtB,MAF8B,CAEF,AAFG,GAEZ,AAC3B,CAD4B,CACrB,EAAH,AAAU,EAHe,CAEK,CAAa,AAClC,CADmC,CAAC,GAC1B,CAAC,EAAU,CACtC,IAAI,CADgC,AAC9B,EAAA,QAAQ,CAAC,MAAM,CACrB,UAAU,CAAE,EACV,EACA,GAEH,CAAC,CAAC,AAEH,GAAI,CAAC,EACH,KALkB,CACjB,CAFqB,AAMf,EAaT,AAdgB,EACH,AADK,CACJ,AAIV,EAAY,IAAI,EAAE,AAX2B,CAY3C,EADS,AACU,EAAA,YAAH,IAAmB,CAAC,GAAG,EAAE,AAC3C,EAAK,EAAD,UAAa,CAAC,EAAA,iBAAiB,CAAE,EAAY,IAAI,CAAC,CAAC,AAErD,EAAmB,CAF2B,CAE3B,YAAH,IAAmB,CAAC,MAAM,EAAE,AAC9C,EAAK,EAAD,UAAa,CAAC,EAAA,kBAAkB,CAAE,EAAY,IAAI,CAAC,CAAC,CAK1D,EALmD,AAK7B,mBAAD,MAA0B,EAC/C,KAAK,CAAC,OAAO,CAAC,EAAY,MAAM,CAAC,CAEjC,CAFyB,AACzB,EACI,CACF,IAAM,EAAkB,EAAY,MAAM,CAAC,EAAR,CAAW,CAAzB,AAAyB,AAAC,GAC7C,AAAa,EADqC,CAAC,CAClC,CADoC,CACjD,AAAe,EACV,GADA,GACM,CAAC,AACL,KAAK,QAAY,MAAM,CACzB,CAD2B,CACrB,GAAD,KAAS,EAAE,CAAC,AACE,QAAQ,EAAE,AAA3B,OAAO,EAOT,EAAM,CAPQ,EAOT,KAAS,EAAE,CANvB,AAAgC,AAMR,UANkB,EAAtC,AAAwC,OAAjC,EAAM,GAAD,OAAW,CAClB,EAAM,GAAD,OAAW,EAAE,CAAC,AAErB,IAAI,CAAC,SAAS,CAAC,IAM1B,CAN+B,CAAC,AAM3B,CAN4B,CAM7B,UAAa,CAAC,EAAA,cAAc,CAAC,SAAS,CAAE,GAC7C,AAAC,MAAO,CAAC,CAAE,CACV,EAAA,CAF2D,CAAC,CAAC,CAEzD,CAAC,KAAK,CAAC,sBAAsB,CAAE,EAAY,MAAM,CAAE,CAAC,CAAV,AAAW,CAS7D,AAT8D,AAC3D,MAI6B,QAAQ,EAApC,AAAsC,OAA/B,EAAY,IAAI,EACzB,EAAK,CADe,CAChB,UAAa,CAAC,EAAA,cAAc,CAAC,OAAO,CAAE,EAAY,IAAI,CAAC,CAGtD,AAHuD,CAIhE,CAAC,CAJwD,AAMzD,CAHa,CAGb,AAHc,qBAGd,CAAA,EAsBA,EAAA,aAAA,CAAA,EAAA,EAFC,KAGC,AADc,CACgC,CAC9C,CAAU,CACV,CAAoB,CACpB,CAAsB,AA2BvB,CA1BC,CAA4B,EAE5B,EAP2B,KAOpB,SAAS,AAEd,CAAU,CACV,CAAW,EAEP,GAAG,AACD,EADG,IACG,CANiB,AAMhB,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,CAAF,KAAQ,CAAC,EAAE,CACrD,CAAU,CAAC,EAAA,eAAe,CAAC,CAAI,EAAY,CAAD,GAAQ,AAAD,CAAE,CAEjD,GAAG,UAAY,KAAK,EAAE,AACxB,EAAK,EAAD,aAAgB,CAAC,EAAsB,GAAG,CAAC,AAEjD,CAFkD,CAAC,AAE9C,EAAD,OAAU,CAAC,CACb,EAH0C,EAGtC,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,CAEH,EAAsB,EAAuB,EAAM,EAAF,CAAK,AAGxD,CAHyD,CAAC,EAI1D,EAAK,EAAD,CAAI,EAAE,CAJa,AAIZ,AACX,EAAG,AAL0C,AAG/B,AAEZ,EAFc,CAAC,CAEV,CAAC,IAAI,CAAE,EAAK,CAAF,CACnB,CACF,AADG,AADuB,CACtB,AACH,AAF0B,CAI3B,AAJ4B,EAI5B,WAAA,CAAA,EAAA,OAAgB,AAAY,CAAyB,EACnD,EAMD,EANK,EAAW,EADU,AACR,CAKjB,AALkB,GAAN,GAKL,AAFP,KAFa,GAEL,AAEO,AAJI,CAAF,GAAM,CAAC,AAAE,CAAA,AAAD,EAAI,EAAK,EAAD,EAAK,CAAA,CAAE,CAAG,AAAF,CAAC,aAAC,CAAc,CAAC,AAAG,GAAG,CAAC,CACpD,GAAM,CAAF,GAAM,CAAC,AAAE,CAAD,AAAC,EAAG,EAAK,EAAD,EAAK,CAAA,CAAE,CAAC,AAAE,CAAD,aAAC,CAAc,CAAC,AAAG,GAAG,CAAC,CACrD,GAAM,CAAF,OAAU,CAAC,AAAE,CAAD,AAAC,EAAG,EAAK,EAAD,MAAS,CAAA,CAAE,CAAC,AAAE,CAAD,iBAAC,CAAA,CAAkB,CAEpD,AAFqD,IAEjD,EACtB,AADwB,CACvB,AADwB,CASzB,EAAA,aAAA,CAAA,EAAA,OAAgB,AACd,CAAgB,CAChB,CAAoB,CACpB,CAA8B,CAC9B,CAAwC,AAuBzC,CAtBC,CAAqC,EAErC,EAP2B,EAOrB,EAAM,CAAH,CAAQ,EAAD,QAAW,CAAC,AACtB,EAAU,EAAK,EAAD,CAAP,SAAoB,CAAC,AAC5B,EAAO,EAAH,AAAQ,EAAD,OAAU,CAAC,AACtB,EAAO,EAAH,AAAS,CAAH,CAgBhB,EAhBuB,CAAC,IAExB,EAAgB,GAAG,CAAC,EAAO,EAAH,AAAiB,IAAI,CAA9B,AAAgC,CAC7C,CAAC,EAAA,EADqC,6BACN,CAAC,CAAE,EAAA,qCAAqC,CACxE,CAAC,EAAA,mCAAmC,CAAC,CAAE,EACxC,CAAC,CAAC,AAEH,EAAgB,EAHiC,CAG9B,CAAC,EAAO,EAAH,AAAiB,IAAI,CAA9B,AAAgC,CAC7C,CAAC,EAAA,EADqC,6BACN,CAAC,CAAE,EAAA,qCAAqC,CACxE,CAAC,EAAA,mCAAmC,CAAC,CAAE,EACxC,CAAC,CAAC,AAEH,EAA0B,EAHuB,CAGpB,CAAC,EAAU,EAAc,GAAjB,IAAwB,CAAE,CAC7D,CAAC,CADkD,CAClD,GADsB,gCACa,CAAC,CAAE,EACxC,CAAC,CAAC,AAEI,CAAE,GAHwC,CAGpC,CAAE,EAAM,EAAF,EAAM,CAAE,EAAM,EAAF,KAAS,CAAE,CAAO,CACnD,AADqD,CACpD,AADqD,CAGtD,EAAA,CAHmD,kBAGnD,CAAA,EAAA,OAAgB,AACd,CAAU,CACV,CAAkB,EAElB,OAAO,CAkBR,MAtBkC,EAIjB,AAEd,CAAU,CACV,CAAW,CACX,CAAS,EAEL,GAAG,CACD,CADG,EACA,CAPoB,SAOR,KAAK,EAAE,AACxB,EAAK,EAAD,aAAgB,CAAC,EAAsB,GAAG,CAAC,AAEjD,CAFkD,CAAC,AAE9C,EAAD,OAAU,CAAC,CACb,EAH0C,EAGtC,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,CAEL,EAAK,EAAD,CAAI,EAAE,CAAC,AACX,EAAE,AAAC,IAAI,CAAC,IAAI,CAAE,EAAK,CAAF,CAAO,CAAF,CACxB,CAAC,AACH,CAFgC,AAC5B,AACH,CAED,AAJiC,CAAC,CAIlC,0BAAA,CAAA,EAAA,OAAgB,AAA2B,CAAU,CAAE,CAAY,EACjE,OAAO,QAgBR,CAhBiB,AAEd,CAAU,EAEN,EALkC,CAK/B,CACD,CADG,EACA,UAAY,KAAK,EAAE,AACxB,CANsC,CAMjC,EAAD,aAAgB,CAAC,EAAsB,GAAG,CAAC,AAEjD,CAFkD,CAAC,AAE9C,EAAD,OAAU,CAAC,CACb,EAH0C,EAGtC,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,CAEL,EAAK,EAAD,CAAI,EAAE,CAAC,AACX,EAAE,AAAC,KAAK,CAAC,IAAI,CAAE,SAAS,CAAC,AAC3B,CAD4B,AAC3B,AACH,CADI,AACH,CAOD,EAAA,eAAA,CAAA,EAAA,OAAgB,AAAgB,CAAU,EACxC,MAGD,AAHqB,MADS,EACD,EAArB,OAAO,CAAC,EAAuB,IAAI,GAAV,CAAC,EAAa,SAAS,GAAI,CAAC,CACxD,MAAM,CAAE,CAA2B,CAAC,OAAO,CAAC,MAC5C,CACN,CAAC,CAED,EAAA,IAHe,CAAC,iBAGhB,CAAA,EAAA,OAAuC,AAAvB,CAAkC,EAChD,MACgB,OAGjB,CAHyB,EAAtB,GAFkC,IAE3B,EAAE,CAC0C,QAAQ,CAC5D,CAAC,AADA,OAAQ,EAAgC,CAAE,IAE9C,AAFkD,CAEjD,CAWD,EAAA,qBAAA,CAAA,sBAKC,WCpdE,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,mCAAmC,CAAC,2GCHhE,IAAA,EAAA,EAAA,CAAA,CAAA,QASA,EAAA,EAAA,CAAA,CAAA,IADwC,EAYZ,EAG5B,EAAA,EAAA,CAAA,CAAA,IAO0B,IAE1B,EAAA,EAAiC,CAAA,CAAA,QACjC,EAAA,EAAA,CAAA,CAAA,CADiC,OAGjC,EAAA,EAA0D,CAFS,AAET,CAAA,QAC1D,EAAA,EAAA,CAAA,CAAA,GAD0D,EACZ,GAC9C,EAAA,EAAA,CAAA,CAAA,OAI6B,CAC7B,EAAA,EAAA,CAAA,CAAA,QASA,EAAA,EAKmB,CAAA,CAAA,QAEnB,CAR6C,QAM1B,AAEV,EAAqB,CAAW,EACvC,MAAsC,QAAQ,CADnB,EACpB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAC7B,EAAO,IAAD,GAAQ,CAAC,AACf,CACN,CAAC,AAED,IAJ2B,AACf,CAAC,CAGA,AAHC,UAGyB,CAHd,CAGc,KAAR,cAAoD,CASzE,mBAAmB,CAAiC,CAC1D,IAAI,CAAE,CAAC,CACP,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,CAAC,CACX,AAAC,CACM,iBAAiB,AAAmB,AAE5C,aAAY,EAAkC,CAAA,CAAE,CAAA,CAC9C,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GACrC,GAD2C,CAAC,AACxC,CADyC,AACxC,iBAAiB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAC9C,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CADI,AACH,AAEQ,wBAAwB,EAAA,CAC/B,IAAI,CAAC,kBAAkB,CAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAClD,EAAA,mCAAmC,CACnC,CACE,WAAW,CAAE,yCAAyC,CACtD,IAAI,CAAE,GAAG,CACT,SAAS,CAAE,EAAA,SAAS,CAAC,MAAM,CAC3B,MAAM,CAAE,CACN,wBAAwB,CAAE,CACxB,KAAK,AAAE,KAAK,AAAE,IAAI,AAAE,IAAI,AAAE,GAAG,AAAE,GAAG,AAAE,CAAC,CAAE,CAAC,CAAE,EAAE,CAC7C,CACF,CACF,CACF,CAAC,AAEF,IAAI,CAAC,mBAAmB,CAAG,CACzB,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,CAAC,CACV,IAAI,CAAE,CAAC,CACR,CAAC,AACF,IAAI,CAAC,iBAAiB,CAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CACrD,EAAA,iCAAiC,CACjC,CACE,WAAW,CACT,yFAAyF,CAC3F,IAAI,CAAE,cAAc,CACrB,CACF,CAAC,AACF,IAAI,CAAC,0BAA0B,CAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAC9D,EAAA,4CAA4C,CAC5C,CACE,WAAW,CACT,gEAAgE,CAClE,IAAI,CAAE,cAAc,CACrB,CACF,AACH,CADI,AACH,AAES,IAAI,EAAA,CACZ,IAAM,EAAwB,CAAC,YAAY,CAAC,CAGtC,AAHuC,EAGhB,EAHF,EAGM,EAAA,YAAP,iBAAoC,CAC5D,yBAAyB,CACzB,EACA,IAAI,CAAC,cADgB,AACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC,AAEI,EAAiB,IAAI,EAAA,MAAP,uBAAoC,CACtD,kBAAkB,CAClB,EACA,IAAI,CAAC,cADgB,AACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC,AA2CF,MAAO,CAzCU,IAAI,EAAA,mCAAmC,CACtD,IAAI,CACJ,EACA,AAAC,IACC,EADU,EAAE,AACN,EADQ,AACQ,EAAqB,GAG3C,GAHiD,CAAC,AAF/B,CAEgC,CAAhC,CAEnB,IAAI,CAAC,GAFqC,WAEvB,CAAC,EAAc,MAAM,CAAC,CAAC,AACnC,CACT,CAAC,CAFkC,AAGnC,AAAC,GAFc,CAAC,AAGd,EADU,EAAE,AACN,EADQ,AACQ,EAAqB,GAG3C,GAHiD,CAAC,CAAC,CAAhC,CAEnB,IAAI,CAAC,GAFqC,aAErB,CAAC,EAAc,MAAM,CAAC,CAAC,AACrC,CACT,CAAC,CACD,AAHqC,CAGpC,EAAgB,AAFF,CAAC,CAEsB,CACvC,CAAC,AAEmB,IAAI,EAAA,EAHR,QAAsB,yBAGqB,CAC1D,SAAS,CAnCwB,CAAC,AAoClC,YApC8C,CAAC,CAqC/C,AAAC,AArC+C,IAsC9C,EADU,EAAE,AACN,EADQ,AACQ,EAAqB,AAFnB,GAWxB,GATiD,CAAC,CAAC,CAC/C,AADe,CACf,EAAA,EAAA,IADsC,KACtC,AAAS,EAAC,EAAc,SAAS,CAAC,CAAX,MAAkB,CAAC,EAC5C,AAD8C,IAC1C,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,QAAqB,CAAC,CAAC,AAEnD,IAAI,CAAC,KAAK,CACR,EAAc,SAAS,CACvB,CADa,QACJ,CACT,IAAI,CAAC,oBAAoB,EAAS,CACnC,CACM,AADL,CAEJ,CAAC,CACD,AAAC,IACC,EADU,EAAE,AACN,EAHc,AAEN,AACQ,CAHD,CAGsB,GACvC,CAAA,EAD6C,AAC7C,CAD8C,CAAC,AAC/C,CADe,QACf,AAAS,CAD6B,CAC5B,EAAc,SAAS,CAAC,CAAX,MAAkB,CAAC,EAC5C,AAD8C,IAC1C,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,QAAqB,CAAC,AAEpD,CAFqD,AAEpD,CACF,CAAC,AAE6B,AACjC,CADkC,AACjC,AAEO,cAAc,CAAC,CAAW,CAAA,CAChC,GAAI,CAAC,EACH,IADS,EAAE,CACJ,AAGT,IAAM,EAAgB,EAAqB,GAsB3C,GAtBiD,CAAC,CAAC,CAAhC,AAEf,CAAA,EAAA,EAAA,IAFsC,KAEtC,AAAS,EAAC,EAAc,SAAS,CAAC,CAAX,IAAgB,CAAC,EAAE,AAC5C,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,MAAmB,CAAC,CAAC,AAG7C,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,SAAS,CAAC,CAAX,MAAkB,CAAC,EAAE,AAC9C,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,QAAqB,CAAC,CAAC,AAGnD,IAAI,CAAC,KAAK,CACR,EAAc,SAAS,CACvB,CADa,MACN,CACP,IAAI,CAAC,oBAAoB,EAAS,CACnC,CAAC,AAEF,IAAI,CAAC,KAAK,CACR,EAAc,SAAS,CACvB,CADa,QACJ,CACT,IAAI,CAAC,sBAAsB,EAAS,CACrC,CAAC,AAEK,CACT,CAAC,AAEO,IAHO,CAAC,WAGQ,CAAC,CAAW,CAAA,CAClC,IAAM,EAAgB,EAAqB,GAU3C,GAViD,CAAC,CAAC,CAE/C,AAFe,CAEf,EAAA,EAAA,IAFsC,KAEtC,AAAS,EAAC,EAAc,SAAS,CAAC,CAAX,IAAgB,CAAC,EAAE,AAC5C,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,MAAmB,CAAC,CAAC,AAG7C,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,SAAS,CAAC,CAAX,MAAkB,CAAC,EAAE,AAC9C,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,QAAqB,CAAC,CAAC,AAG5C,CACT,CAAC,AAEO,IAHO,CAAC,iBAGc,EAAA,CAC5B,IAAM,EAAS,IAAH,AAAO,CAAC,AACpB,OAAQ,AAAD,GACE,KADwB,EAAE,EAAE,AACnB,AAA8B,CAAmB,EAC/D,IADqB,AACf,EAAS,EAAO,EAAV,EAAS,KAAU,EAAE,CAAC,AAElC,GACE,EAAM,GAAD,sBAA0B,CAAC,IAChC,EAAO,AAD+B,CAAC,GACjC,cAAmB,CAEzB,CADA,MACO,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,GAG7B,IAAM,CAH+B,CAAC,AAGzB,CAH0B,CAGnB,AAAV,IAAS,EAAO,CAAC,SAAS,CAAC,EAAA,SAAS,CAAC,OAAO,CAAE,CACtD,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,CACrB,UAAU,CAAE,EAAM,GAAD,gCAAoC,CACnD,IAAI,CACJ,EAAO,IAAD,aAAkB,CACzB,CACF,CAAC,CAAC,AAEH,GAAI,EAAU,CACZ,IAAM,CADI,CACS,EAAA,KAAK,CAAR,AAAS,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAClD,AADmD,EACxC,EAAM,GAAD,CAAR,sBAAmC,CAAC,EAAM,EAAF,CAC5C,IACF,CAFwD,CAAC,AAE9C,CAF+C,CAE/C,EADC,EACJ,AADM,GACI,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,EAAQ,CAAC,CAIvD,AAFC,AAFuD,IAIlD,EAAyB,EAAA,OAAO,CAAC,CAApB,GAAwB,CACzC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAChC,CADoC,CAAC,CAClC,CACM,CADJ,CACa,IAAI,CAAC,CAAN,GAAU,CAAE,IAI/B,IAJuC,CAAC,CAAC,CAIlC,EAAoB,EAAM,EAAF,AACjC,CAAC,AAEL,CAFM,AAEL,AAEO,SAL4C,CAAC,CAArB,AAAsB,YAKvB,CAAC,CAAsB,CAAE,CAAiB,CAAA,CACvE,IAAM,EAAgC,CAAA,CAAE,CAAC,AACnC,EAAuB,CAC3B,EAAA,KADc,EADO,UAEJ,CACjB,EAAA,eAAe,CACf,EAAA,gBAAgB,CAChB,EAAA,mBAAmB,CACnB,EAAA,sBAAsB,CACvB,AACG,CADF,IACM,CAAC,iBAAiB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,AACjD,EAAW,IAAI,CAAC,EAAA,CAAN,aAAoB,CAAC,CAAC,AAE9B,IAAI,CAAC,iBAAiB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,AACpD,EAAW,IAAI,CAAC,EAAA,CAAN,kBAAyB,CAAC,CAAC,AAGvC,EAAW,OAAO,CAAR,AAAQ,AAAC,GAAG,CAAC,AACjB,EADmB,CAChB,EAAI,IACT,CAAiB,CAAC,EAAI,CAAG,AAAJ,CAAc,AADhB,CACiB,CADf,CACkB,AAAC,CAAC,AAE7C,CAAC,CAAC,CAAC,AAEH,IAAM,EACJ,CAAA,EAAA,EAAA,QADmB,YACnB,AAAoB,EAAC,GAAA,EAAA,cAAA,AAAc,EAAC,EAAW,CAAA,EAAA,EAAA,EAAF,IAAE,AAAM,GAAE,CAAC,CAAC,CAAG,IAAI,AAClE,CADmE,GAC/D,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAiB,EAClD,CAAC,AAEO,UAHwC,IAAmB,CAAC,CAAC,IAGzC,EAAA,CAC1B,IAAM,EAAS,IAAH,AAAO,CAAC,AACpB,OAAO,AAAC,IACN,IAAI,AADiD,CAChD,CADkD,EAAE,EAC/C,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,AAChD,SAAuC,AAA9B,GAAiC,CAAe,CAA3C,KAgKf,EA/JJ,GAAI,CA+Je,CA/JT,AA+JU,GA/JX,sBAA0B,CAAC,EAAO,IAAD,KAAU,EAAE,CAAC,CACrD,CADuD,MAChD,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,GAE9B,CAF2C,CAAC,CAAC,CAEvC,EAAY,CAAA,EAAA,EAAA,EAAH,IAAG,AAAM,GAAE,CAAC,AASrB,EAAO,CAAI,CAAP,AAAQ,CAAC,CAAC,CAAC,AACf,EAAmC,QAAQ,CAAC,CAAzB,IAAH,GAAU,EAC1B,EAD8B,AAElC,EAAM,GAAD,mBAAuB,CAAC,EADI,CAM7B,CAL6B,CAAC,AAKhB,CALiB,CAMjC,CACE,IAAI,CAAE,CAFK,CAGX,EADoB,IAFU,AAGxB,CAAE,KAAK,CAAC,OAAO,CAAC,CAAI,CAAC,CAAC,CAAC,CAAC,CAAC,AAAE,CAAD,AAAK,CAAC,CAAC,CAAC,CAAC,AAAE,CAAD,MAC3C,CACD,CAFsD,CAGpD,CACE,GAAI,CAAY,CAChB,IAAI,CAAE,EAAK,EAAD,EAAK,CACf,IAAI,CAAE,EAAK,EAAD,AAJe,EAIV,CACf,MAAM,CACH,EAAa,EAAD,IAAO,GACnB,CAAD,IAAM,CAAC,OAAO,CAAC,CAAI,CAAC,CAAC,CAAC,CAAC,CAAC,AAAE,CAAD,AAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAC,CAAA,CAAS,CAAC,AACjD,MACD,EAEA,EAAyB,CAC7B,CAAC,EAAA,CAHY,CAAC,EAEA,UACC,CAAC,CAAE,EAAA,0BAA0B,CAC5C,CAAC,EAAA,iBAAiB,CAAC,CAAE,IAAI,CAAC,QAAQ,CAClC,CAAC,EAAA,gBAAgB,CAAC,CAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAClD,CAAC,EAAA,mBAAmB,CAAC,CAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACtD,CAEG,AAFF,GAEe,IAAI,EAAE,CACrB,CAAU,AADG,CACF,EAAA,sBAAsB,CAAC,CAChC,EAAM,GAAD,yBAA6B,CAAC,GAAa,KAAI,CAAC,CAGzD,AAH0D,CAAR,GAG5C,EAAiB,GAAG,EAAE,AAC1B,EAAO,IAAD,CADY,kBACY,CAAC,EAAY,EAC7C,CAAC,CAAC,AAEI,EAAwB,EAHa,AAGN,CAHiB,CAAC,CAAC,CAGpB,KAAU,EAAE,CAAC,AAE3C,EAAO,EAAH,AAAS,CAFQ,EAET,cAAkB,CAAC,IAAI,CACvC,IAAI,CACJ,EAAO,IAAD,EAAO,CACb,EACA,EAAO,IAAD,aAAkB,AADH,CAErB,GAoBF,GAfI,EAAsB,GALb,CACZ,CAAC,cAIuB,YAAgC,EAAE,CACrD,EACF,CAAI,CAAC,CAAC,CAAC,CAAG,CAAA,EAAA,EAAA,IADQ,EAAE,gBACV,AAAsB,EAAC,EAAM,EAAF,CAC5B,CADkC,CAAC,CAAC,CACD,MAAM,GAAI,IAAI,AAI1D,CAJ2D,AAIvD,CAAC,CAJwD,AAIvD,CAAC,CAAG,CACR,GAAG,CAAI,CACP,CANoC,GAMhC,CAAE,AANkC,CAAC,AAMnC,EAAA,EAAA,sBAAA,AAAsB,EAAC,EAAM,EAAF,AAAO,EAAD,EAAK,CAAC,EAC9C,CAAC,CAKF,EAAK,EAAD,IAAO,CAAG,CAAC,CAAE,CACnB,IAAM,EAAa,EAAA,KAAK,CAAR,AAAS,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AACnD,GAAI,AAAiC,UAAU,EAAE,OAAtC,CAAI,CAAC,EAAK,EAAD,IAAO,CAAG,CAAC,CAAC,CAE9B,CAAI,CAAC,EAAK,EAAD,IAAO,CAAG,CAAC,CAAC,CAAG,EAAM,GAAD,UAAc,CACzC,EACA,EACA,CAAI,CADA,AACC,EAAK,EAAD,IAAO,CAAG,CAAC,CAAqB,CACzC,EACA,CAJqB,EAQnB,IACF,CANU,AAMN,CAP4D,AAO3D,EAAK,EADE,AACH,CALK,CAIA,AAHf,CAAC,CAIgB,CAAG,CAAC,CAAC,CAAG,EAAA,OAAO,CAAC,IAAI,CAClC,EAAA,OAAO,CAAC,MAAM,EAAE,CAChB,CAAI,CAAC,EAAK,EAAD,IAAO,CAAG,CAAC,EAAC,CACtB,CAAC,KAEC,GAAqC,UAAU,EAA3C,OAAO,GAAa,QAAF,AAAU,CAAiB,CAEtD,IAAI,EAAW,EAAM,GAAD,CAAR,SAAsB,CAChC,EAAO,IAAD,KAAU,EAAE,CAClB,EACA,EAAY,AADR,QACoC,CAA7B,AACX,EACA,GAIE,IACF,CANU,CADqD,AAOpD,EAAA,EADC,CAJE,CACf,AAGe,AACN,CAJR,EAIkB,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,EAAQ,CAAC,CAAC,AAGrD,CAAI,CAAC,CAAC,CAAqC,CAAC,QAAQ,CAAG,EACzD,CAGH,AAFC,GAEK,EAJ8D,CAAC,UAI7D,CAAW,CAAE,CAAG,EACG,UAAU,EAAjC,OADyC,AAClC,CADmC,EACL,GACvC,CAAA,EAAA,EADoB,AACpB,GADkD,EAAE,iBAC9B,AAAtB,EACE,GAAG,EAAE,AAGH,GAAM,UAAE,CAAQ,MAAE,CAAI,MAAE,CAAI,MAAE,CAAI,CAAE,CAAG,IAAI,CAAC,oBAAoB,CAAC,AAGjE,EAAY,EAAM,CAChB,CADc,KAAL,IACC,CAHO,UAAE,OAAU,CAAF,GAAM,GAAE,IAAI,GAAE,CAAI,CAAE,CAAC,AAIhD,CAJ6C,IAIxC,CAAE,CACL,IAAI,CAAE,EAAY,IAAI,CAgBtB,IAhBiB,EAgBX,CAAE,EAAY,MAAmB,CACvC,EADmB,EACf,CAAE,EAAY,IAA0B,CAC7C,CACF,CACH,AADI,CAAC,AACJ,CAAA,AACD,AAJuB,GAIpB,CAAC,AACE,EADA,CACG,AACL,EADO,AACA,IAAD,CAAM,CAAC,KAAK,CAAC,0BAA0B,CAAE,EAEnD,CAAC,AAFqD,CAAC,CAAC,AAGxD,GAKJ,CALQ,CACL,CAIC,AAJA,CAKF,EAAS,EAAS,EAAZ,GAAiB,CAAN,AAAO,IAAI,CAAE,GAC/B,AAAC,CAD2C,CAAC,CAAC,GACtC,CAAU,CAAE,CASnB,MARI,CAAC,YAAY,KAAK,EAAE,AACtB,EAAK,EAAD,aAAgB,CAAC,EAAM,GAAD,kBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,AAEvD,EAAK,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAM,GAAD,YAAgB,CAAC,CAAC,CAAC,CAClC,CAAC,CAAC,AACH,EAAK,EAAD,CAAI,EAAE,CACJ,AADK,CACJ,CAAC,AACT,OAGD,AAAI,MAAM,OAAY,OAAO,CACpB,CADsB,CAE1B,IAAI,AADM,CACL,AAAC,GAEE,GAFa,CAET,CAFW,EAAE,IAEN,CAAC,AAAD,IAChB,EAAM,CADkB,CAAC,CACpB,CADsB,iBACA,CAAC,EAAO,IAAD,KAAU,EAAE,CAAE,EAAM,EAAF,CACpD,GAD4D,CAAC,AAE7D,CAF8D,CAEzD,EAAD,CAAI,EAAE,CAAC,AACX,EAAQ,AAFM,EAGhB,AAHkB,CAGjB,AAHkB,CAGjB,CADO,AACN,CADa,AAGjB,CAHkB,CAAC,GAGd,CAAC,AAAC,GACC,EADW,EAAE,AACT,EADW,KACJ,CAAC,CAAC,CAAC,CAAE,KACjB,CADuB,EAAE,EAAE,AACtB,QAAY,KAAK,EAAE,AAC1B,EAAK,EAAD,aAAgB,CAAC,EAAM,GAAD,kBAAsB,CAAC,IAEnD,CAFwD,CAAC,AAEpD,CAFqD,CAAC,AAEvD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAM,GAAD,IAAQ,CACvB,CAAC,CAAC,AACH,IACA,EAAK,EAAD,CAAI,EAAE,CAAC,AACX,EAAO,AAFO,EAGhB,AAHkB,CAAC,AAGlB,CADO,AACN,CAAC,AADW,CAAC,AAMd,CANe,AAOxB,CAAC,CAAC,AAEN,CAAC,AAEO,EALW,CAAC,CAAC,OAAO,kBAKS,CAAC,CAAsB,CAAA,CAC1D,GAAI,CAAM,CAAC,EAAA,mBAAmB,CAAC,CAAE,OAAO,AACxC,IAAM,EAAW,EAAM,GAAD,CAAR,OAAoB,CAAC,EAAO,IAAD,GAAQ,CAAC,CAAC,AAEnD,EAAO,EAAE,CAAC,CAAJ,QAAa,CAAE,GAAG,EAAE,AACxB,IAAI,CAAC,mBAAmB,CAAG,EAAM,GAAD,UAAc,CAC5C,EACA,EACA,IAFQ,AACF,AACF,CAAC,iBAAiB,CACtB,IAAI,CAAC,0BAA0B,CAC/B,IAAI,CAAC,mBAAmB,CACzB,AACH,CADI,AACH,CAAC,CAAC,AAEH,EAAO,EAAE,CAAC,CAAJ,QAAa,CAAE,GAAG,EAAE,AACxB,IAAI,CAAC,mBAAmB,CAAG,EAAM,GAAD,UAAc,CAC5C,EACA,EACA,IAFQ,AACF,AACF,CAAC,iBAAiB,CACtB,IAAI,CAAC,0BAA0B,CAC/B,IAAI,CAAC,mBAAmB,CACzB,AACH,CADI,AACH,CAAC,CAAC,AAEH,EAAO,EAAE,CAAC,CAAJ,OAAY,CAAE,GAAG,EACrB,AADuB,IACnB,CAAC,mBAAmB,CAAG,EAAM,GAAD,UAAc,CAC5C,EACA,EACA,IADM,AACF,AAFI,CAEH,iBAAiB,CACtB,IAAI,CAAC,0BAA0B,CAC/B,IAAI,CAAC,mBAAmB,CACzB,AACH,CADI,AACH,CAAC,CAEF,AAFG,EAEI,EAAE,CAAC,CAAJ,QAAoB,CAAE,GAAG,EAAE,AAC/B,IAAI,CAAC,mBAAmB,CAAG,EAAM,GAAD,UAAc,CAC5C,EACA,EACA,IAFQ,AACF,AACF,CAAC,iBAAiB,CACtB,IAAI,CAAC,0BAA0B,CAC/B,IAAI,CAAC,mBAAmB,CACzB,AACH,CADI,AACH,CAAC,CAAC,AACH,CAAM,CAAC,EAAA,mBAAmB,CAAC,EAAG,CAChC,CAAC,AAEO,EAH4B,CAAC,iBAGT,EAAA,CAC1B,IAAM,EAAS,IAAH,AAAO,CAAC,AACpB,OAAO,AAAC,GACC,SAAS,AAA8B,CAAyB,EACrE,AAFyD,EAAE,EAErD,AAFuD,AACxC,EACN,EAAO,EAAV,EAAS,KAAU,EAAE,CAAC,AAElC,GAAI,EAAM,GAAD,sBAA0B,CAAC,KAKpC,CAL0C,CAAC,AAKpC,EALsC,EAKvC,yBAA8B,CAAC,IAAI,CAAC,CAAC,AAEvC,EAAO,IAAD,cAAmB,EAAE,AAN7B,OAAO,EAAgB,IAAI,CAAC,IAAI,CAAE,GAAZ,AAWxB,IAAM,CAX6C,CAWtC,AAXuC,CAAC,CAW3C,AAAU,IAAD,EAAO,CAAC,SAAS,CAAC,EAAA,SAAS,CAAC,YAAY,CAAE,CAC3D,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,CACrB,UAAU,CAAE,EAAM,GAAD,oCAAwC,CACvD,IAAI,CAAC,OAAO,CACZ,EAAO,IAAD,aAAkB,CACzB,CACF,CAAC,CAAC,AAEH,GAAI,EAAU,CACZ,IAAM,CADI,CACS,EAAA,KAAK,CAAR,AAAS,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AACnD,EAAW,EAAM,GAAD,CAAR,eAA4B,CAClC,EACA,EADI,CAIF,IACF,CAJQ,CACS,AAGN,CAHO,CAGP,EADC,EACJ,AADM,GACI,CAAC,IAAI,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,EAAQ,CAAC,CAAC,AAEvD,AAED,IAAM,EAAyB,EAAA,OAAO,CAAC,CAApB,GAAwB,CACzC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAChC,CADoC,CAAC,CAClC,CACM,CADJ,CACoB,IAAI,CAAC,IAAI,CAAE,GAAZ,CAI1B,IAJqD,CAAC,CAAC,CAIhD,EAAoB,EAAM,EAAF,AACjC,CAAC,AAEL,CAFM,AAEL,CACF,AAED,QANsD,CAM7C,AAN8C,CAArB,AAAsB,CAM3B,CAAU,CAAE,CAAsB,SAC7D,AAAM,IAAF,CADsB,AACrB,QAAc,AAAY,OAAO,CAAC,AAKhC,EALkC,AAKlC,OAAO,CAAC,IAAI,CACjB,EAAA,OAAO,CAAC,MAAM,EAAE,CAFW,AAG3B,EACG,IAAI,CAAA,AAAC,IACJ,EADU,AACL,AALmD,CAI7C,AAJ8C,CAKrD,CADS,AACL,EAAE,CAAC,AACJ,CAHS,GAKjB,EAFc,CAAC,EAEV,CAAC,AAAC,IACF,CADgB,EAAE,EACb,AADe,QACH,KAAK,EAAE,AAC1B,EAAK,EAAD,aAAgB,CAAC,EAAM,GAAD,kBAAsB,CAAC,IAEnD,CAFwD,CAAC,AAEpD,CAFqD,CAEtD,AAFuD,OAE7C,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAM,GAAD,YAAgB,CAAC,GAChC,CAAC,CADoC,AACnC,AACH,CAFuC,CAElC,EAAD,CAAI,EAAE,CAAC,AACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,AApBzB,CAoB0B,AAGrC,CA3jBA,AA2jBC,EA3jBD,SAoiBwB,CAAC,OApiBzB,CAAA,kBAgiBC,eCjmBE,OAAA,cAAA,CAAA,EAAA,aAAA,wDAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAAsD,GAA7C,OAAA,cAAA,CAAA,EAAA,oBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,iBAAiB,CAAA,GAAA,AAC1B,IAAA,EAAA,EAAA,CAAA,CAAA,QAAS,EAA+C,KAA/C,cAAA,CAAA,EAAA,iBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,cAAc,CAAA,GAAA,6HCRjB,EAAmB,UAAU,CAEtB,EAAqB1J,CAF5B,CAE4BA,cAArB,QAA2C,CACtD,EACAsK,EAAAA,YADgB,KACC,CAChB,AAAD,IAA2C,CACzC,EADM,GAAA,YACW,EAAE,EACnB,EADuB,SACZ,CAAC,CAAI,EAAE,AAChBnC,EAAAA,eAAe,CAAC,EAAM,EAAF,qBAAyB,CAAC,AAChD,CAAC,CACD,kBAAkB,CAAE,GAAS,IAAF,cAAE,GAAsB,EACvD,CAAG,CAAC,CA0BS,AA3B+C,EA2BzBjc,EAAAA,eAAtB,EAAuC,CAvBtB,AAAC,AAuBsB,GAtB5C,EACL,EAFkC,EAE9B,CAAE,EAF8D,AAGpE,QAoBqE,CApB5D,GACP,AADU,EACS,AAFC,EAGtB,CAAC,CACL,CAAG,EAF6B,CAAC,QAAT,4MCGlB,EAAmB,YAAY,CAC/B,CADA,CACqB,CAAC,YAAY,CAAC,CACnC,CADA,CACsB,iBAAtB,kCAAyE,CAUzE,EAA8B,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAiBvE,EAAuB8T,EAAAA,gBAAvB,MAA6C,CACxD,EACA,AAAC,GACC,IAAI,AADE,EACwB,CAC5B,IAHY,aAGK,CAAE,GAAS,CADD,GACD,aAAE,GAAqB,EACjD,EADqD,SAC1C,CAAE,GAAS,IAAF,OAAa,AACvC,CAAK,CAAC,CASC,OAAM,UAAkCnB,EAAAA,aAAlC,MAAqD,CAAkC,AAC3F,WAAW,CAAC,CAAM,CAAmC,CAC1D,KAAK,CAAC,oBAAoB,CAAEpf,EAAAA,WAAW,CAAE,EAC3C,CAQO,GAT0C,CAAC,AASvC,EAAwC,CACjD,IAAM,EAAS,IAAT,AAAawf,EAAAA,mCAAmC,CACpD,UAAU,CACV,EAAkB,AAClB5D,IACE,GAAI,CACF,KAFO,EAEA,CAHO,GAGH,CAAC,cAAc,CAACA,EAC7B,CAAA,AAAE,MADkC,AAC3B,CAAC,AAD2B,CACzB,CAEV,OADA3b,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAE,CAAC,CAAC,CAC1Dyb,CACT,CACF,CAAC,CAAA,AACDA,GAAWA,EAHO,CAmBpB,GAhBE,GAAkB,AAKpB,CAAC,KAAK,CAAE,QAAQ,CAAE,SAAS,CAAC,CAAC,OAAO,CAAA,AAAC,IAAA,AACnC,EAAO,EADoC,EACrC,CAAM,CAAC,IAAI,CACf,IAAIkP,EAAAA,6BAA6B,CAC/B,CAAC,SAAS,EAAE,EAAK,EAAD,OAAU,CAAC,CAC3B,EACA,IAAI,CAAC,WADa,SACO,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAG5C,CAAC,CAAC,CAEK,CACT,CAMQ,IAPO,UAOO,CAAClP,CAAO,CAA0D,CAGtF,IAAM,EAAgC,QAAhC,EAA0C,EAA7B,OAAOA,EACpB,EAAW,EAAaA,EAAUA,CADd,CACsB,IAA/B,CAAa,EAAyB,AAAR,CAE/C,GAAwB,AAApB,UAA8B,EAAE,OAAzB,EAET,MAFS,CACT3b,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAC3Fyb,EAIT,IAAM,EAAO,CAJG,CAIV,EAAW,CAEX,EAAkB,SAAyB,GAAG,CAAI,EAAsB,AAC5E,IAAM,EAAM,CAAN,MAAa,CAAC,SAAS,CAAC,EAA6C,GAG3E,CAH+E,CAAC,CAAlD,AAG1B,CAAC,GAAA,AAAsB,UAAU,EAAzB,AAA2B,OAApB,EAEjB,CAFiB,MACjB3b,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAChE,EAIT,CAJY,GAIN,EAAS,EAAK,EAAD,AAAb,OAAuB,EAAE,CAC/B,OAAO4qB,EAAAA,uBAAuB,CAAC,EAAK,CAAF,AAChC,iBAAiB,CAAE,EAAO,IAAD,aAAkB,CAC3C,WAAW,CAAE,EAAO,IAAD,OAAY,AACvC,CAAO,CAAC,AACJ,CAAC,CAKD,IAAK,IAAM,GAAA,EAHX,MAAM,CAAC,cAAc,CAAC,EAAiB,GACvC,KAD+C,CAAC,AAC1C,CAAC,GAD8B,WAChB,CAAC,EAAgB,SAAS,CAAG,EAAmC,CAAhD,KAAa,GAA4C,CAAC,CAE7E,MAAM,CAAC,mBAAmB,CAAC,IAC3C,GAAI,CAAC,AAD8C,CAC7C,AAD8C,CAAE,OACxC,CAAE,MAAM,CAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,AAAG,CAAF,AAChD,IAAM,EAAa,MAAM,CAAC,CAApB,uBAA4C,CAAC,EAAU,EACzD,CAD4D,CAAC,EAAN,AAEzD,MADY,AACN,CAAC,CADO,aACO,CAAC,EAAiB,EAAK,CAAF,CAE9C,QAF0D,AAO5D,AAAI,CAPyD,AAAlB,CAQlC,GAEPC,EAAAA,GAHY,EAAE,KACP,IAEO,CAACpP,EAAS,OAAF,EAAW,CAAE,GAC5BA,EAEX,CAOQ,MATU,GADoC,CAAC,QAU7B,EAAY,CACpC,IAAM,EAAS,IAAT,AAAa,CAAC,SAAS,EAAE,CAE/B,OAAO,KADmD,IAApCqC,EAAAA,EACf,CAD4D,EAAxC,CAAC,OAAO,CAACV,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAA,EAC5B,CAAC,EAAO,IAAD,aAAkB,AACnD,CAKQ,iBAAiB,CAAC,CAAI,CAAQ,CAAc,CAAsB,CAAO,CAAiB,CAChG,GAAI,EAAS,KAAF,OACT,EAAK,EAAD,UAAa,CAAC0N,EAAAA,sBAAsB,CAAE,GAI5C,IAJmD,AAI7C,CAJ8C,CAI7B,GAAgB,KAAK,CAAC,GACzC,EADiC,CACnB,CAAG,CAAC,CAAC,EACrB,AADuB,EAClB,EAAD,EADY,EAD8C,CAAC,KAE9C,CAACA,EAAAA,sBAAsB,CAAE,CAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,AAE9E,CASQ,iBAAiB,CAAC,CAAO,CAA4C,CAC3E,GAAK,CAAD,EAAU,IAAF,EAAQ,EAAE,MAGC,AAAvB,CAAwB,EAAE,CAAtB,EAAQ,KAAD,CAAC,CACH,CAAO,CAAC,CAAC,CAAA,OAAK,EAGhB,EAAQ,KAAD,AAHkB,CAGX,CAAC,CAAC,EAAK,CAAF,CAAO,CAAF,AAAG,GAAY,IAAN,CAAA,CAAU,EAAM,CAAN,AAAO,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,AACA,CASA,iBAAA,CAAA,CAAA,CAAA,QACA,EAKA,EALA,AAOA,IAPA,EAAA,AAMA,CACA,CAAA,SAAA,CAAA,EAAA,CAAA,CAAA,AACA,OAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,AACA,OAAA,CAAA,AAFA,OAEA,CAAA,EAAA,CAAA,CAEA,AAFA,CAHA,CAEA,KAGA,CAAA,MAAA,CAAA,GAAA,EACA,IAAA,EAAA,CAAA,AAEA,EALA,KAKA,CAAA,qBAAA,CAAA,CAFA,EAEA,CAAA,CAAA,AACA,OAAA,CAAA,cADA,AACA,CAAA,GAAA,CAAA,CAAA,AAEA,OAAA,CAAA,iBAFA,AAEA,CAAA,GAAA,CACA,CACA,OAAA,CAAA,cADA,MACA,CAAA,GAAA,CACA,CACA,OAAA,CAAA,mBADA,GACA,CAAA,GAAA,CACA,CACA,OAAA,CAAA,8BAAA,CAAA,GAAA,CAAA,CACA,AADA,OACA,CAAA,cADA,GACA,CAAA,GAAA,CAAA,CAAA,AACA,GAHA,IAGA,CAAA,GADA,SACA,CAAA,GAAA,CAAA,CAAA,AACA,OAAA,CAAA,mBAAA,CAAA,CADA,EACA,CAAA,CAEA,AAFA,OAEA,CAAA,yBAFA,cAEA,CAAA,QAAA,EACA,OAAA,CAAA,6CAAA,CAAA,SAAA,EA5BA,mBA8BA,AA9BA,CAuCA,oBAAA,CAAA,CAAA,CAQA,CAEA,IAAA,EAAA,EAAA,EAAA,CACA,EAAA,EAAA,KAAA,CAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAyGA,OAvGA,EAAA,KAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,eAMA,GAAA,CAAA,EAGA,GAAA,IAAA,CAAA,EAAA,EAAA,AAKA,CAAA,EAAA,EAAA,gBAAA,EAAA,AALA,CACA,CAIA,MAJA,EAAA,KAAA,CAAA,IAAA,CAAA,CAAA,EAQA,CARA,CAAA,EAQA,EAAA,EAAA,EAAA,GAAA,YAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CACA,EAAA,EAAA,EAAA,WAAA,IAAA,CAAA,GAEA,MAFA,CAAA,AAEAld,EAAAA,eAAA,CACA,CACA,IAAA,CAAA,GAAA,cAAA,IAAA,CACA,EAAA,CAAA,IAAA,AACA,CAAA,CACA,IAAA,AACA2a,EAAAA,GADA,YACA,CAAA,EAAA,EAAA,kBAAA,CAAA,CAEA,EAAA,EAAA,WAAA,CAAA,CACA,CAAApH,EAAAA,mBAAA,CAAA,CAAA,UAAA,CACA,CAAA4J,EAAAA,kBAAA,CAAA,CAAA,CACA,CAAA,CAAA,CAMA,GAAA,UAPA,GAOA,CAAA,CAAA,CADA,EAAA,AACA,EADA,IACA,GADA,EAAA,CAEA,GACA7B,EAAAA,MADA,EAAA,cACA,CACA,IAAA,EAAA,EAAA,EAAA,KAAA,GAAA,AACA,CAAA,AADA,CAAA,EAEA,CADA,AACA,EAAA,AAFA,CAGA,EAAA,EAAA,UAAA,CAAA,mBAAA,CAAA,oBAAA,CAAA,CACAppB,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,CAAA,yBAAA,EAAA,EAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAEA,CAAA,EACA,GAKA,CALA,GAKA,EAAA,IAAA,CAAA,OAAA,CACA,AADA,IACA,CAAA,OAAA,CAAA,IAAA,KAAA,CAAA,EAAA,CACA,KAAA,CAAA,CAAA,EAAA,EAAA,CADA,IAEA,GAAA,CADA,AAEA,EAFA,AAEA,CAFA,CAEA,GAFA,YAEA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAA,GAAA,IAAA,CAAA,CACA,EAAA,EAAA,CAAA,EAAA,AACA,CAAA,MAAA,CAAA,CAAA,CACAF,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,wCAAA,CAAA,CAAA,CAAA,AACA,CACA,OAAA,OAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EACA,CAAA,AACA,CAAA,CAAA,CAGA,GALA,CAKA,CALA,CAAA,AAKA,IAAA,CAAA,MAAA,CACA,AADA,IACA,CAAA,MAAA,CAAA,IAAA,KAAA,CAAA,EAAA,CACA,KAAA,CAAA,CAAA,EAAA,EAAA,AADA,KAEA,GADA,AACA,CACA,CAFA,CAAA,AAEA,EAAA,EAFA,KAEA,CAAA,CACA,IAAA,CAAA4D,EAAAA,iBAAA,CACA,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,KAAA,EAAA,eAAA,AACA,CAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAAonB,EAAAA,4BAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,SAAA,CAAA,CACA,EAAA,EAAA,UAAA,CAAAC,EAAAA,eAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,SAAA,CAAA,CACA,EAAA,EAAA,eAAA,CAAA,EAAA,EAAA,CACA,EAAA,EAAA,CAAA,EAAA,AACA,CAAA,MAFA,AAEA,CAAA,AAFA,CAEA,CACAnrB,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,uCAAA,CAAA,CAAA,CAAA,AACA,CACA,OAAA,OAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EACA,CACA,AADA,CACA,CAAA,CAEA,EAJA,CAIA,CACA,AALA,CAAA,MAKA,EAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CACA,CAAA,CADA,CAAA,IACA,CAAA,CAAA,CAMA,MALA,EAAA,EAAA,OAAA,CAAA,CACA,IAAA,CAAA4D,EAAAA,iBAAA,CACA,OAAA,CAAA,CAAA,YAAA,KAAA,CAAA,CAAA,CAAA,OAAA,CAAA,eAAA,AACA,CAAA,CAAA,CACA,EAAA,EAAA,CAAA,EAAA,CACA,CAAA,AACA,CACA,CAAA,CAEA,CAAA,CAGA,EAAA,KAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,mBAAA,CAAA,EAEA,CACA,CAKA,UARA,CAEA,WAMA,CAAA,CAAA,CAQA,CAIA,OAHA,EAAA,KAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,mBAAA,EAAA,CACA,EAAA,KAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,EAAA,KAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,mBAAA,EAEA,CACA,CACA,CA0BA,IAAA,EAAA0I,EAAAA,EA5BA,eA4BA,CAAA,AAxBA,GACA,EACA,EAFA,EAEA,CAAA,EAFA,AAGA,SAAA,CAqBA,EArBA,AACA,EAFA,AAEA,EACA,CAAA,CACA,CAAA,EAFA,CAAA,UAAA,8HCvYjD,CCEA,CDFA,CYCA,mCGCe,ANUU,CLFT,gBWRM,CbQe,COEb,ALFA,CKEC,QMVuB,CXQC,UAAA,EAAA,CAAA,aFPhB,CAAA,8CgBCjB,CVER,AGFA,COAiB,CbCb,AaDc,OAGX,CVCC,GUDG,CXIH,EFDP,CAAiB,AEKF,EaLE,EbKE,CCHC,CAAC,cDLtC,CAAa,CACb,AS6BsC,AJlCtB,AVOA,CKFa,CHEH,CGDU,CAAA,CAEpC,CCHK,AFLA,AMCA,MLOE,IAAI,wBFDH,CAA0B,COPpB,APOoB,CAAA,CAElB,CAA4B,CAC5B,CCX0B,CSAF,ATAE,AAAF,ALCA,EAAE,AKDA,aDQzB,CONwB,APMjC,CaHY,CbIJ,CGFX,AFKP,AMTO,GAAA,CAAA,IPMe,CAAJ,IQJI,ARIA,CAAQ,GGFJ,EAAE,EIJE,EAAE,EJIE,qBHY7B,CAAoB,CAAA,KACnB,CAAA,UAAA,GAAA,IAAA,CAAmB,COMzB,EFb4B,oBLelB,CAAC,SAAA,2BAGH,EAAS,CQQH,GRRO,CAAC,SAAA,CAAU,CIeC,CAAC,SIPK,EAAE,CAAC,IRRQ,CAC9C,IAAI,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CACZ,IAAI,CAAC,OAAO,CACb,CAAC,OACG,iBAGS,CAAA,MACH,CAAC,CYsBC,ARVY,QAAA,EJfhB,EDQa,COPN,kBA9BhB,CAAY,CAAA,CAAA,CAEZ,CAAmC,CAAA,OAEnC,OAAA,MAAA,CAAA,EACE,IAAI,CAAA,kBAAmB,CAAC,EAAM,EAAA,EAAA,CAAiB,CCNd,EDOjC,GAD+C,CCNf,ADO5B,CCP6B,CDOjB,IAAI,CAAE,EAAM,EAAb,AAAW,AAAW,KAAF,EAAS,CAAC,CAC9C,CAAC,qBASK,MAAA,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,EAAkB,IRDZ,YQQsB,CAAA,gBAClB,CACnB,CAAC,AQTA,oBRea,CACZ,CNHoB,AMGQ,CNHP,AMGO,CACO,CAAA,uBAE5B,IAAI,CAAC,SAAA,AAAS,EAAA,KAAA,EAAA,EAAA,SAAA,CAAY,EAAM,EAAS,IAEnD,ESPE,6ChBzB2B,CAAA,IAAO,SAIrB,aAAA,QACR,IAAA,CAAM,CJpBc,EiBSP,MbWE,CQFK,wBRMjB,IAAI,CAAA,SAAU,0BAGgC,CAAA,SAC1C,CAAA,EAAqB,CACvB,IAAI,CAAA,iBAAkB,CY4B2C,CZ5BzC,CAAC,AY6BX,CIlCc,EhBQ7B,EAAoB,CFPvB,CcmCyB,CZ5BC,CFP1B,IAAA,EESH,EACA,EAFA,EY2B0C,CAAC,CZ1BnC,cACY,CACrB,CAAC,IFV4B,CEWL,CAAC,CDlByB,QFMd,ACCI,CDDH,EGYA,CAAA,IFXW,CAAC,oCEuBhD,OAAA,EAAA,MAAA,CAAA,EAAA,CCRsB,CDQd,CCRa,CAAC,ADQd,EAAoB,IAAA,CAAA,EAAA,EAAA,GAAA,CAAA,GFbiB,EEaqB,CAAC,CAAA,EACnE,CAD+B,EAAoC,CAC/D,CAAC,MAD8D,OAAA,KAAA,EAC1C,CAC1B,CAAC,UASU,CAAA,CACI,CAChB,CAAuB,CQAI,aREf,iBAAiB,EAAE,CAAC,EaSI,OAAA,CbTM,EAAM,EAAS,AAAX,KAAS,EAAS,CAAC,CAAC,WFtD/C,CaRC,GXmEe,2BACP,GYsBZ,CZtBgB,GAEnC,iCDzDC,CCMkC,ADNR,CCMS,KDJ7B,EAAA,EAAyB,ISGM,CAAC,STHO,EAAI,EAAA,KAAK,CAAC,CiBEH,CAAC,CAAC,cjBFkB,EAAE,CACpE,AADqE,EACrE,EAAwB,aAAa,EAAI,COTrB,CPSqB,OAAO,CAAC,gBAAgB,EAAE,CAAC,IAC3C,cAAc,CWRnB,CAAU,AZeP,ACPoB,CDOnB,CCPwB,IDOd,CAAC,CAAC,WCP6B,EAAE,CAAC,EACjD,COPT,CAAuD,APOtC,gBAAgB,EAAE,GiBED,CjBFK,AiBEJ,CAAC,CjBFK,EAAI,EAAE,CAAC,IiBJ3D,ChBGQ,GgBHJ,CDHgB,AH+BjB,AI5BE,CAAG,CAAC,CAAA,EAAA,AjBOZ,EiBPmC,CRAG,KQAG,CAAE,EAAA,EAAA,IAAA,CAC3C,IAAM,CHRK,CGQa,CAAgB,CAAC,CAAC,AJ6Bb,CJ5BG,AQDW,AACvC,CADwC,AnBDnC,AEQT,KiBLkB,ERDqC,CAAC,GTD5B,IiBCR,OACe,CAAC,GjBKpC,KiBFkB,gBAAgB,CAAC,AjBEnC,MiBAsB,CDLC,CCKe,QXWH,CAAQ,QWXY,EAAE,EACvC,GJkCO,Ab7BF,IchB2R,CAAC,SGWhR,CjBCnC,AiBDoC,EjBKI,CAAC,CAAC,UMMJ,AWXY,ATCL,ARA/B,CACf,AiBFoD,AXWL,AEVA,CSDM,AjBEpD,CiBIiC,OAAA,EAAS,QXeQ,AWd1B,EAAE,CjBH5B,CObC,ACWA,ANJA,CW+BG,IAAA,KbxBsB,EiBcT,OAAA,CAAA,AAAQ,GAAmB,CXaC,CWbe,IJoC1B,AJrBJ,GQfqC,EAAE,CAAC,CAAC,EAAZ,wSH/BvD,CLOC,CKNL,GdGoB,ESGI,gTKJ1B,EAAmD,CHNpC,CAAQ,GGOhB,CAAC,QACA,CAAC,EAAG,EAAE,MACN,CAAC,OACD,IAAK,CEDD,AFCE,AdSA,OcRN,CAAC,QACD,CAAC,KAAM,WAiFN,EACP,CAA4B,CJ1BA,CAAA,CAAA,CI4BI,CAChC,CAA0B,OAEhB,EDCF,MAAA,CAAA,MCDkB,cAGC,EAAM,GAAD,CAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAEjB,CAAC,CAAE,EAAiB,GACjD,CLxBsC,GKuBkB,AhBnChD,ADJE,CiBuC+C,CjBvC/C,CiBuCiD,AjBvCjD,EiB2Cd,CJ7BC,MI6BM,ILtBE,CKsBG,CAAC,CACE,ERjBU,MQiBV,CAAS,KAAK,GAAG,CRfH,CAAC,MQ+cX,EA9bG,EA8bS,AAAE,EA9bJ,GLpBD,CKodvB,CAFsD,CAEjD,EAAD,KAAQ,CACjB,AAFQ,CAEP,CACD,CAAC,CAAC,CAAE,EAAM,EAAF,AAAI,AAAE,EAAE,AAAE,EAAE,AAAE,EAAK,CAAF,CAAI,AAAE,CAHL,CAAC,AAGM,AAAE,EAAE,AAAE,EAAE,AAAE,EAAE,AAAE,GAAG,EAAE,AAEhD,EAFkD,AAChD,EAAI,AACF,CADC,CAAG,CAAC,AACF,EADI,AACF,CAAC,AACD,EAAI,CAAD,CAAG,CAAC,AACT,CAAA,CADW,CACX,EAAK,EAAE,IAAA,EAAO,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAG,AAAF,CAAC,CAAG,CAAA,CAAE,CAAC,AACrD,EAAI,CAAD,CAAG,CACR,AADS,CACT,CADW,CACX,EAAK,EAAE,CAAA,EAAI,EAAE,EAAA,EAAK,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAAA,CAAE,CAAC,AACzD,EACF,CADK,AACL,EADO,AACP,EAAK,EAAI,CAAE,CAAF,AAAG,AAEZ,CAAA,EAAA,EAAK,EAAI,EAAG,AAAH,GAAY,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAG,AAAF,CAAC,CAAG,CAAA,CAAE,CAAC,AAI5D,EADE,AACA,EADI,CAAD,CAAG,CAAC,AACJ,EADM,AACJ,CACE,AADD,EACK,CAAD,CAAG,CAAC,AACX,CAAA,CAAA,AADa,EACT,CAAC,EAAE,AAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAChB,EAAI,CAAD,CAAG,CAAC,AACX,CAAA,CAAA,AADa,EACT,EAAE,CAAA,EAAI,CAAC,EAAE,AAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AACpB,EACJ,CADO,AACP,EAAA,AADS,EACJ,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,EAAG,CAAA,AAAE,CAAC,AACzB,GAAS,IAAF,aAAmB,CAC9B,CADgC,AAChC,CAAA,EAAI,EAAE,CAAA,EAAI,EAAE,CAAA,EAAI,CAAC,EAAE,AAAG,CAAC,CAAA,EAAA,CAAI,CAAC,AAE5B,CAAA,EAAA,EAAK,EAAE,CAAE,CAAC,AAGV,CAAA,EAAG,EAAI,CAAA,CAAA,CAAI,EAAE,CAAE,CAAC,IAAI,EAAE,CAAC,CLjfJ,MKqBvB,CLnBH,AXdE,EgBiCK,EAAM,GAAD,AhBjCE,KgBiCO,CAAC,GAAG,CAAC,CAAE,CAM9B,CLfC,GAAA,IKeU,CAAC,GDWO,CCXH,AAJS,EACtB,EDUI,ECVA,CAGiB,ChBpCb,AgBiCF,CACN,OAAO,CAAC,GLhBY,OKgBD,GAAG,CAAC,CACvB,EhBjCI,AQqBA,GQYC,CAAA,KAEN,EhBrCiD,CgBqC7C,ChBrC+C,AgBqC9C,ChBrC+C,CgBqCnC,EAAe,CAAC,CAAE,EAAiB,CLhBV,CAAC,CKiBzC,GLnBoD,CAAC,AKkBI,CAAC,ALlBJ,EKkBM,AACrD,EAGX,GAHgB,CAAC,CLhBG,EKmBb,EACR,AAGD,OAAO,EAAY,EAAe,CLfd,CKeqB,EAAiB,CAAnB,ALfG,CAAC,CKezB,AAGpB,CLlB+C,GKeoB,CAAC,CAAC,GAG5D,CAHiD,CAGjD,CACqB,CAC5B,CAAa,CLlBmB,CKmBA,CAChC,CAA0B,KDQwC,CAAC,CAAC,CCqE9B,OAA0B,aAAzC,EA3EC,GA2EY,CA3EL,EhBvCA,AgBuC/B,ChBvCgC,CgBuHxB,CA0Qa,EA5QrB,EA4QiC,AA1QpB,AAkMN,CAlRC,AAgTY,CLrUf,CKiGL,ALjGM,AKmGD,CDvEI,AJ5BF,AKuSI,CAtMH,AAoOwB,CAlOxB,CAFM,CAAT,EAAQ,CAAK,EAAE,CAAC,AAoOa,ChBvVd,CgBoHQ,EACR,AAoOd,CLhQe,AK4BA,AAoOd,CAAG,CAFkD,EAEzC,IAAF,aAAmB,CAAG,AAAF,CAAC,GAAK,CAAC,AAAE,CAAD,CAAG,CArOhD,AAqOiD,EAC1C,EAAK,CAtOP,CAsOM,EAtOH,GAsOW,CAFT,AAEU,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,CAAE,CAtOV,AAsOW,CAtOV,AAsOY,CAAC,CAAE,CAFd,CAAC,AAEe,EAAE,AAGlC,EAHoC,AAGhC,CAAD,AAAE,CAAC,CACF,CADI,CACF,CACC,AADA,EACI,CAAD,AAAE,CAAC,CACT,CADW,AACX,EAAA,EAAK,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAC/B,EAAI,CAAD,AAAE,CAAC,CACX,AAAM,CADO,AACZ,EAAQ,EAAE,GACP,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAExC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAEpC,EAAE,AACP,AAAM,CAAL,CADQ,CACA,EAAE,GACH,GAAG,EAAE,CAAX,CAAC,CACG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,EAAA,CAAI,CAAC,AAEhD,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAG9C,AAH+C,CAG/C,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAG9C,AAAM,CAAL,EAAQ,EAAE,GACH,GAAG,EAAE,CAAX,CAAC,CACG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,EAAA,CAAI,CAAC,AAE9C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAG7C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,EAhEpC,OAAO,CAAC,AADV,CACW,CAAE,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAE,CADd,CAAC,AACe,EAAE,AAGlC,EAHoC,AAGhC,CAAD,AAAE,CAAC,CACF,CADI,CACF,CAAC,AACA,EAAI,CAAD,AAAE,CAAC,CACT,CADW,AACX,EAAA,EAAK,CAAC,CAAA,MAAA,EAAS,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAC3B,EAAI,CAAD,AAAE,CAAC,CAET,CAFW,AAEX,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AACjC,EAAE,AACL,CAAA,CADO,CACP,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,AAG7C,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,CA0Dd,EA3QN,EAA7B,EA6QO,CAFsD,CAEjD,CA7QwB,AAA/B,CA6QM,AA7Q0B,CAAC,CAA9B,GA6QW,CADT,AACU,CAAC,CAAE,CAAC,EAAK,CAAF,CAAQ,CAAC,CAAH,AAAK,CAAC,CAAE,CAAC,CADnB,AACqB,CADpB,CACsB,EAAE,CAC9C,CADgD,GAC1C,EAAK,AAAH,EAAO,CAAD,AAAE,CAAC,CAAC,AACZ,EAAE,AAAG,EAAE,CAAI,EAAI,CAAD,AAAE,CAAC,CAAC,AAClB,EAAE,AAAG,EAAE,CAAI,EAAI,CAAD,AAAE,CAAC,CAAC,AA6DxB,MA1Da,GAAG,GAAZ,CAAgB,GAAZ,CAAgB,EAAE,AACxB,EAAO,EAAH,AAAG,CAAE,CAAC,AAKZ,EAAE,AAAG,GAAS,IAAF,aAAmB,CAAC,AAAE,CAAD,GAAK,CAAC,AAAE,CAAD,CAAG,CAEvC,AAFwC,EAEtC,AAGF,EAHI,AACO,CAER,EAFW,GAAZ,GAAyB,CAArB,EAAwB,EAAE,CAAd,EAEZ,EAFgB,QAEN,CAGV,AAHW,GAGR,CAAC,AAEH,GAlBE,CAkBE,CAlBA,CAqBT,AArBU,EAkBG,AAGX,EAAE,AACN,CAAC,CAJkB,CAIf,CAJiB,AAIhB,CAAC,AAER,CAAC,CAAG,CAAC,CAAC,AAEO,GAAG,EAAE,CAAd,GAGF,CAHM,CAGC,EAAH,EAAO,CAAC,AACR,EAAE,CACJ,CADM,AACL,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,AACX,CAAC,CAAG,CAAC,CAAC,CAGN,CAAC,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,AACX,CAAC,CAAG,CAAC,CAAC,CAEU,IAAI,EAAE,CAAf,IAAI,AAGb,EAAO,EAAH,CAAM,CAAC,AACP,EAAE,AACJ,CAAC,CADK,AACF,CAAC,CAAC,CAAG,CAAC,CAAC,AAEX,CAAC,CAAG,CAAC,CAAC,CAAG,CAAC,CAAC,CAIF,GAAG,EAAE,CAAd,IAAI,AACN,EAAE,AAAG,IAAA,CAAI,CAAC,AAGZ,EAAM,CAAA,AAAH,EAAM,EAAO,CAAC,CAAA,AAAJ,CAAI,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAG,EAAE,CAAE,CAAC,CAC1B,EAAE,AACX,EADa,AACP,CAAH,AAAG,EAAA,EAAK,CAAC,CAAA,IAAA,EAAO,EAAE,EAAA,EAAK,CAAC,CAAC,CAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,AAChC,EAAE,EAAE,AACb,EAAM,CAAH,AAAG,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,EAAE,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAG,CAAC,CAAA,IAAA,CAAM,CAAC,CAG1C,CACT,CAAC,CADW,AACV,CADW,AACV,CA7UW,IAAI,IA/ER,QAAQ,CAAA,MAAO,QAEH,CDQC,CCRc,EAAO,EAAiB,CAAnB,CACzC,EAEC,GAHkE,CAG5D,AAH6D,CAAC,CAGjC,AA+GvC,QLlI4B,CKkInB,AAAY,CAAmB,CLlIT,AKmBmB,CAgHhD,GAAI,CAAC,EACH,CL5BC,KK4BM,CAAA,CAAE,CAAC,AAGZ,EAJkB,EAIZ,EAAiC,EAAY,CAAxC,IAA6C,CAAC,GAAP,AAClD,GAAA,CAAK,EAEH,OADA,EAAA,IAAA,CAAK,KAAK,CAAC,CAAA,eAAA,EAAA,EAAA,CAA+B,CAAC,CAAC,AACrC,CACL,OAAO,CAAE,GACV,CAAC,AAGJ,IAAI,EAAE,AAAW,EAAO,GAAD,GAAQ,CAAC,EAAE,CAAC,AAC7B,EAAO,EAAA,GAAA,GAAyB,CAAA,OAAA,CAChC,EAAqB,EAAO,GAAD,GAAQ,CAAC,UAAU,CAAC,AAC/C,EAAgB,EAAO,CAAlB,KAAyB,CAAC,KAAK,CAEpC,AAFqC,EAET,EL5BH,AK4BW,KAAK,CAAA,KACzC,EAA2C,GAAY,KAAK,CAAC,GAAG,CAAC,CAAC,AAMxE,MAJW,IAAI,EAAE,CAAb,EAAE,EACJ,EAAE,AAAG,GAAA,CAAG,CAAC,AAGJ,CACL,EAAE,CAAE,EAAE,CAAI,GAAG,SAEb,OAAO,WACP,EACA,MLrC4F,cKqCvE,EAAgB,MAAM,OAAP,KAEpC,qBACA,CL5BC,CK6BD,gBADkB,OACM,EAAqB,EAAmB,MAAM,CAAC,AAAE,CAAD,AAAE,QAAX,CAGhE,AACH,CADI,AACH,CArJkD,KAAK,CAAC,ALnBnB,CAAC,AKmBmB,GACtD,EDcU,EJlCgC,CAAC,CIkCjC,CCdW,ELpB0B,AIkCpB,CCZpB,AAIX,AL1BoD,CAAC,QK0B5C,AACP,CAA4B,CAC5B,CAA0B,EAG1B,GAAI,CDSD,CAAA,OAAA,ECTsB,MAChB,EAIT,GAJc,ADaT,CCbU,AAIV,EAAY,MDSQ,CCTD,EAAI,EAAY,EAAY,OAAb,AAAoB,CAAC,CAAT,CAAW,MACrD,EAIT,IAAI,EAA2B,EAC7B,EAAc,eAAe,EAAI,EAAE,CACnC,EAAY,SAAD,MAAgB,EAAI,EAAE,CAClC,CAAC,SAG0B,OAExB,EAAc,WAAD,OAAmB,EAAI,EAAE,CAAC,AACnC,EACJ,EAAY,ML9BkC,CAAT,AAAU,CAAC,UK8BlB,EAAI,EAAE,CAAC,EACnC,AAAC,EAA0B,MAAM,EAAK,EAAD,AAAyB,MAAM,CAGtE,CAHwE,AAGvE,EAA0B,GAHC,GAGK,EACjC,EAAwB,CAJuC,KAIjC,CAEX,CADnB,AACoB,CAAC,AAErB,EAA0B,MAAM,EAChC,CAAC,EAAA,MAA8B,CAEZ,CADnB,EAGmB,EACjB,EACA,GAdiB,CAAC,CAAC,AAiBxB,AAGD,OAAO,CAAc,CAAC,EAAY,EAAG,CARS,AAQR,EAAE,EANX,AADE,CAE1B,CAAC,KAKkC,EAC1C,CAAC,CApDU,EAA0B,GAClC,AACH,CAAC,AAyED,SAAS,EAAI,CAAW,EACtB,GL5DiF,GK4D1E,CAAA,GAA4B,GAAG,GAAxB,EAAG,KL3BC,CAAC,KK2BS,EAAE,EAAY,AAAO,EAAL,CAAQ,CAAC,GACvD,CAuEA,AAvEC,SAuEQ,EAAY,CAAqB,EACxC,MAAa,MAAN,CAAC,EAAkB,AAAb,GAAgB,GAAhB,GAAgB,MAAA,CAC/B,CAEA,AAFC,SAEQ,EAAoB,CAAS,EACpC,IAAM,CAAC,CAAW,SAAS,CAAC,CAAE,IAC9B,OAAO,MAAM,CAAC,CAAC,CAAG,AAAF,CAAG,AAAF,CAAG,AAAE,CAAD,AAAE,AACzB,CAD0B,AACzB,AAmCD,SAAS,EAAwB,CAAY,CAAE,CLtBnB,EKuB1B,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAA,KAAQ,ELtBN,CKsBS,CAAA,EAAI,GLtBL,GKsBW,CAAE,EAAE,AAAC,MAAA,EAAS,CAAC,EAAE,CAAE,CACvD,IAAM,EAlBV,AAkBwB,CAAX,QAlBmB,CAAU,CAAE,CAAU,EACpD,GAAI,EAAY,IAAO,ELzBA,AKyBY,CLzBX,CKyBa,CAAC,EAAE,IAAN,CACzB,CAAC,CAAC,AAEX,GAAM,CAAC,EAAA,EAAmB,CAAA,AArB5B,SAAS,AACP,CAAkB,CAClB,CAAkB,EAElB,GAAI,OAAO,CAAC,EAAK,OAAO,CAAC,CASvB,CATyB,ELfb,GKwBL,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,AAR9B,GAAiB,QAAQ,EAAE,AAAvB,OAAO,CAAC,OACH,CAAC,CAAW,CAAE,CAAW,CAAC,CAC5B,AAD6B,GAClB,UAAP,OAAO,EAChB,ILhCE,CAAC,CKgCI,CAAC,CAAW,CAAE,CAAW,CAAC,CAAC,MAE5B,AAAI,GL9BG,EK8BE,CAAC,kDAKtB,CAAC,CAOG,EAAoB,EAAE,CAAC,AACvB,EAAoB,EAAE,CAAC,CACxB,CAAC,ML1BoF,AK2BtF,AAAI,CAHiB,CAGN,EACN,CAAC,CAHW,AAGV,AACA,EAFC,AAEU,EACb,CAAC,CAAC,AAHc,CAKlB,AAFK,CAEJ,AACV,CADW,AACV,CAI8C,CLnCrB,AKmCuB,CARf,AAQgB,CAAC,CAAC,CL/BvB,CK+B2B,GAAG,CAAE,CAAE,CAAC,CAAC,CAAC,EAAI,GAAG,CAAC,CAAC,AACvE,GAAI,AAAG,GAAA,GACL,OAAO,EAEV,AACD,OAAO,CAAC,AACV,CADW,AACV,AAuBD,IAAM,EAAmB,cAAH,AAAiB,CAAC,AAClC,EAAoB,aAAa,CAAC,AAClC,CADiB,CACM,CAAA,aAAA,EAAgB,EAAnB,AAAmC,CAAA,CAAG,CAAC,AAG3D,EAAuB,CAAA,GAAA,EAAM,EAAiB,CAAA,AAHS,EAGL,EAAoB,CAAA,CAAG,CAAC,AAC1E,EAAa,AADO,CACP,IADiC,CACjC,EAAQ,AAAX,EAA+B,GAD6B,GAC7B,EAAS,EAAoB,IAAA,CAAM,CAAC,AAE7E,EAFyC,AAEvB,CAAA,EAAG,EAAgB,CAAA,CAAG,CAAC,AACzC,EAHsE,AAG9D,CAAA,EADO,AACV,KAAG,CAD6B,CACnB,EAAe,MAAA,EAAS,EAAe,GAAxB,CAAwB,CAAM,CAAC,AAEhE,EAAmB,CAAA,EAAG,EAFmC,AAElB,QAAA,CAAU,AAAjC,CAAkC,AAClD,EACJ,CAAA,EAF2C,MAC5B,CACf,EAAY,EACZ,QAAA,EAAU,EACV,EAF4B,CAAA,CAAA,IAE5B,EAAU,EACV,EAF0B,CAAA,CAAA,AAE1B,CAF6B,CAEvB,EAAU,AADhB,EACgB,EAAK,EADK,AACA,CADA,CAAA,AACV,CADa,AACH,EAAA,CAA1B,AAH+B,AAGF,CAGzB,EAAgB,AAAI,AALxB,AAGA,CAAA,IAAA,CAE8B,AAFxB,CAEyB,AAFxB,AACM,CAAA,CAAA,EAAI,AACA,EAAoB,CAAC,CAAC,AADlB,CAAA,IAAA,OAAO,IAAc,CAAC,CAKvC,EAAqB,AAAI,GALU,CAAA,CAAA,CAKJ,CADnC,AACoC,CADpC,MAAA,EACsB,AADb,EAA+B,AACO,CAAC,CAAC,OAD7B,CAAA,CAAA,AAAoB,EAAI,EAAW,MAAA,CAAhC,AAAmC,EAAH,AAKnD,CALsB,AAAmC,CAAnC,AAAmC,AAK1C,AAAI,KALsC,CAKhC,AALuC,CAAC,AAKvC,AADlB,CAAA,CAJc,AAId,CACI,AALqB,CAIrB,CACmB,CAAC,AALI,CAKH,IADT,EAAH,EAAiB,CAAC,CAKvC,EAAe,AAAI,GALgB,CAAA,CAAA,CAKV,CADjB,AACkB,CADlB,CAAA,CACI,CADA,CACmB,CAAC,CAAC,IADT,EAAH,EAAiB,CAAC,MAAJ,CAAA,CAAA,kCD7WjB,CVvBC,CUuBY,CX7BV,AAAqB,CAAA,AW6BQ,CAAA,MAChD,EAAA,CAAA,CAAA,CAAA,CAAA,EAC2B,CJhCA,CAAA,OAAA,SAAA,CAAA,oBIiCM,CAAA,IAAA,CAAM,EAAK,CI5BG,SJ8B9C,cAAc,CAAC,EAAK,EAAM,GhB9CP,CiBSa,CAAC,UDsCxB,yBAEJ,EACV,UAIG,IAAA,EAAa,CAAA,EAElB,EAAA,YAGe,CAAC,CAAM,CAAC,EAAA,CAAO,sCACK,MAAM,CAAC,CZ5BC,EY4BO,gBAI7C,CPrBD,CAAC,AOqBS,EH5BA,CG6BL,uBACP,EAAO,QAAA,KAAiB,aAIpB,EAAW,CAAM,CAAC,EAAI,CJpBoC,CIoBpC,EAEJ,mBAAb,GAA8C,UAAU,EAA7B,OAAO,EAAwB,KAAjB,SAC3C,qDAIH,EAAU,EAAQ,EAAU,EfvC0B,AWmBA,CAAS,CIoB/B,AfvCwB,QeyC/C,CfxCS,CewCA,IPvBc,SOuBA,KACvB,CIpCC,CJoCQ,WAAA,OACX,CCZC,CAAA,GDYS,CGvCC,EAAE,CAAC,CHwCR,EAAQ,AADG,APvBY,EOuBV,AACC,EAAF,KAGhB,EAAS,WAAW,EAAE,IAAI,CAAC,AAC3B,CAD4B,CACtB,ECVF,ADUE,EfrCN,AWeE,AIsBI,EAEvB,CAAC,CAAC,GAGA,EACA,EACA,QAEK,EAIE,MAAW,EH9BN,KG8Ba,CAAC,GCNC,IDOf,GADwB,CJzBL,KIqB1B,GACI,+CACI,AAAJ,ECbQ,MDaI,KAAK,CAAC,CAAC,ECba,KDmBnC,GAAA,CAAF,CAAC,CAJE,GAIc,OAAA,CAAQ,KAAK,CAAC,GAAG,UAM9B,OAAO,CAAA,MACN,EAAQ,EAAM,CG7CtB,MHuCC,EAAO,wDASX,CAAC,CAAC,AAEK,EAAe,CAAA,EAAA,KAIpB,GAAI,CAAA,GAAA,CAAA,CAAkB,CAAA,EAAM,CAAA,CAC1B,EAAA,4BACO,AhB7CE,EAAA,MgB6CU,KAAK,CAAC,CAAC,AHlCA,OGsC5B,CCNC,GDMK,EAAU,CAAM,CHnCN,AGmCM,EAAA,AAEtB,AHpCC,CAAA,EGoCY,CPvBD,AQeI,ODQK,GAOX,QAAQ,EAAE,CANlB,AAMmB,CCVW,CDK5B,QJtBgB,2BIsBhB,OACS,GACP,CJ7BD,CAAC,yBImCR,CAAC,CAAC,AAEW,EAAA,CACX,EACA,KAA0B,EACpB,CACD,CADG,AACJ,CAIO,AAAC,KAAK,AJ5BN,CI4BO,OAAO,CAAC,CfpD2B,EAAE,CAAC,CAAC,EeoDxB,AACrB,CADsB,AACrB,EADuB,AACf,CAAC,IAAF,CALf,CACH,EAAO,4DACiB,CAAC,CAAC,AAC1B,CCdC,MDmBG,GAAS,CAAX,EAJG,GAIQ,OAAa,CAAC,KAAK,AAK1B,CAL2B,CAAC,EAAE,GAK9B,CAAA,AAAQ,IACd,EAAM,OAAA,CAAQ,GAAI,CCRC,ADQA,AJ5BU,EI6BpB,EAAQ,EACjB,EACF,CAAC,CAAC,CAAC,EARM,0DASX,CAAC,CAMa,AANZ,SAMsB,EAAQ,CJjCb,AIiCoC,CCdnB,CAAC,ADenC,CCfoC,EDerB,EAAQ,EJlCe,IIkCT,EAAE,CACC,CCdC,WDc3B,OAAO,EAAQ,MAAM,GAChB,8CAEP,EPxBgB,AOwBP,EAAQ,KAAD,CAAO,CAAC,AAG9B,CAAC,AAED,EAAQ,IAAI,CAAG,EACf,EADmB,AACnB,CADoB,MJ/BY,CIgChB,CAAG,CCTD,CDUlB,EAAQ,KAAD,CAAO,CAAG,EACjB,EAAQ,UAAU,CAAG,GJ/BL,iDH1HJ,SAAsB,CAAA,CAAA,QAER,oCAON,CLRe,CAAA,CKSb,CAAA,uDADoB,CAAtB,IUhBkB,YVmBpB,CAAC,MAAM,CAAC,CAAC,AAElB,CGR6B,IHQ7B,CAAA,EAAA,IAAY,CAAC,CRhBG,oBAAA,CQgBmB,CACtC,MLL6C,CAAC,CAAC,EKK/C,gBAGU,CUpBM,AVoBH,EAAA,KAAA,CAAM,SAAA,CAAU,EAAqB,AIPnB,eJQnB,EAAA,CIRwD,CAAC,KJQzD,CAAA,QAAA,CAAiB,EAAqB,GIPC,CAAC,CAAC,GJQlD,EOoBE,KPpBK,CAAA,EAAA,IAD8D,CAAC,CAAC,GAChE,CAAkB,EAAqB,OAC/C,CAAC,SAD4C,KAAwB,CAAC,CAAC,QAC9C,GAIrB,MAAA,CAAA,AACV,CAAA,QACoB,CAAA,YAEmB,CAE7B,YAAA,CAAiC,kDAWS,CAAA,ERdtB,GQexB,CAAA,MAAA,CAAU,EAAc,QAAQ,CILX,AJMvB,EINqC,AJKZ,EACrB,CAAC,mBAAmB,CACxB,EIP+D,CAAC,CJO5D,CAAA,sBAAuB,CAC5B,CAAC,KAEG,COsBC,uBAAA,4BPjBM,OAAA,mBAOW,CAA8B,CAAA,MAChD,CU1BiD,MV0BjD,CAAU,EAAe,CTxBK,QSwBI,CACrC,IAAI,CAAC,mBAAmB,CACxB,IAAI,CAAC,sBAAsB,CAC5B,CAAC,AAWG,COqBN,AfzCA,qBQoB0B,CTxBP,ISyBZ,EAAA,IAAA,CAAkB,COsB6B,GAAA,IPtBnB,EAAE,CIbC,AJaA,CIbC,CAAC,KJcnC,IAAA,EAAA,OAAA,CAAA,GAIG,EAHE,CAAC,ETzBM,CSkCR,COsBT,GPhCiC,AAIf,CAAC,OGTsB,CAAC,EAAE,EIgCb,CAC7B,CAAC,OAIH,CPpBD,CAAC,AAGM,COoBH,UPpBG,CACL,CGLC,MHKM,IAAA,CAAK,IOyBI,EAAE,CAAA,APxBpB,CAAC,UAMgB,CAAkB,AOwBxB,CPxBwB,CGJ1B,CI4BW,GPrBd,CAAA,OAAQ,CAAA,UACD,EACT,COyBG,CP1BU,COyBK,AACf,CPzBM,AOwBU,CPtBvB,COsByB,APtBxB,AAMM,kBAAkB,CAAA,CAAA,CACvB,IAAA,CAAK,OAAO,CAAG,EAAe,SAAS,CACrC,EAD2B,EACvB,CAAC,UO4B8C,CAAC,CAAC,OP5B7B,CACxB,IAAI,CAAC,sBAAsB,CAC5B,AACH,CADI,AACH,AAGD,IAAc,QAAA,QACL,IAAA,CAAA,OAAA,AACT,CAAC,AOwBA,2BPE0E,CACzE,CAAmB,CACnB,CAAU,CACV,CAA+B,CAAA,IAE1B,CAAD,IAIA,CACF,EAAY,EAAM,EAAF,CALA,CAKM,CAAC,CAAC,CAAb,EACJ,CAAC,CAAE,EGrBA,GKemB,CROxB,KAAK,CAAA,KAAM,CACd,mEAAmE,CACnE,aAAE,CAAW,CAAE,CACf,CAAC,CACF,CAAC,AAEN,CAAC,CACF,GALoB,qBIvLf,CPMC,AEJA,AIJA,OCGgD,EAAE,AAAC,UACZ,IAAI,GAAM,EDE7B,AJCA,kBKeoC,WAChC,CAO7B,OAAO,CAAA,CAAA,KACD,EAAW,IAAA,CAAK,KAAK,CAAC,eAEQ,MXFU,IAAA,CAAA,KWEM,CAAC,KAAsB,CJOC,CAAC,CAAC,EINtE,EAAW,CORG,CPQM,QAAQ,CAAC,CDOG,ECPA,CAAC,GAChC,EDOE,ECNL,ERRQ,EAAA,EQQO,iBACO,EAAgB,MAE7B,CJQe,CIVsB,CAAC,CAAC,AAI3C,KAAA,CAAM,IAAI,CAAC,CAAE,IAAI,GAAE,IZTQ,MYSE,CAAE,CMZK,GNYD,CAAC,QAAQ,EAAE,CAAE,CAAC,SAYxC,CMZJ,AF+BE,AJlBhB,wBAAE,CMbsB,CAAA,GAAF,CAAC,CAAC,IAAA,CNaU,CAAA,CAAkC,CAAA,CAAE,CAAA,OAEvD,IAAI,CAAC,EDKF,GCLO,CAAC,AACpB,CDKD,CAAA,EXfyB,AYUiB,CAAC,GAChC,CIkBG,CLbH,CAAC,YCHY,EAAW,KAAK,CAAC,IG+BI,CAAC,AH/BiB,CG+BhB,IH9B5C,EAAW,EAAS,CJSG,CAAC,MITI,CAAC,GAAG,CAAC,GACvC,GAAA,CAAK,EAAU,CDKuC,COpBtC,CAAC,CNgBH,EADD,AAEX,MAEF,AAAK,GACH,EAAQ,CZTC,EYQE,CACC,CAAC,AADA,GACG,EAAS,GZTJ,EYSS,CAAC,CAAC,EAEvB,EIyBQ,AExCA,EPiBuB,ICK5C,CG8BC,CAAC,CAAC,CHlCa,EG+BI,CAAC,EAAE,IH9BT,CAAC,CG+BG,CAAC,CAAA,EAAA,KH/Ba,CAAC,AMfmB,CNkB7B,AG8BpB,CH9BqB,EAAE,CG8BvB,EH9BS,MAAM,IACP,CAAC,CbXK,EaaS,CGiCV,EACZ,EAAE,WJ5BsC,ACLvB,CDKwB,GCLpB,QAGf,CZPG,GYOC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,CAAG,CAAD,AAAE,CAAC,UAAU,CAAA,EAAK,UAAU,CAAC,CAAC,AAE/C,EGmCI,AHnCI,CbXP,ASwBQ,EAAA,CAAA,CIbI,MAAE,CDK8C,ACL1C,CDK2C,ACL3C,CDK4C,ECLrC,KAEpC,kEZrEC,KAAA,CAAA,GAEwB,YAAjB,OAAA,EAAA,CAAa,CAAA,EAAI,QAYb,kBAC+B,IAAI,CeuCvB,QftCR,SAAA,oBAGR,CkBAC,UAAA,4BlBKJ,AACA,KACA,CAAE,WAAW,GACb,CAAC,EAAS,CgB0BgD,ALZ/B,CXdjB,SAuDP,EArDD,IAAM,EYSE,AIiBA,ChB2BP,EArDoD,IAAI,CAAC,CAAC,EAsD1D,Ee8CC,CAAA,Ef9CO,CADwC,AAEnD,EAAA,EAvD+B,AAsDf,CkB3DgB,AfsBA,EHsCV,CAAA,EAAA,GA5DkD,AA4DzC,CAAC,AgBuCE,CAAA,IhBvCG,CYzGR,AZyGS,EUxGP,CFO9B,AIR+B,CAAC,CZ0GjC,CC3GmC,AKEA,ADHA,AM8HlC,CL3HmC,AFHA,AHCA,CD6DlC,AI9DmC,CQsEpC,AHrEqC,ANAP,AHAO,CSAC,ATAA,CGC3C,CH4DW,CazDmC,EbyD7B,AO5D+B,CP4D7B,AE9D8B,AKEA,CQkG7B,AbpG8B,EF2GW,CK3GR,AL2GS,CK3GR,EGU7B,CEPgC,AFO/B,CEPgC,EV2D9B,CAAE,Cc9DgC,CXE3C,CHoDG,CGnDtB,AH2DkC,GARZ,CAAA,CgBwCiB,GhBhCI,WARD,CAAC,CewCrC,ACAkD,CAAC,CAAC,ADAlD,GfxCyC,CAAC,EAAsB,CAChE,wBAAwB,EAIxB,EAJ4B,YAIN,IAAZ,EWcoB,CAAC,GXVrB,EAAU,EAAS,EAAM,EAAF,CAAN,IAAe,CAAC,CAAC,CAGvC,EWWF,WXCF,CAAkB,CAAE,ADJpB,AgB6CE,CfzCkB,CAAA,QACV,EgBoCF,CAAC,GjBxCS,kBCIa,CAAE,CAAC,2BACrB,CAAA,MAAO,CAAA,yBASX,UAGI,IAAA,EAEZ,IAAI,CAAC,CgBiCD,CAAC,CAAC,MhBjCQ,CACpB,IAAI,CAAC,SAAA,EAAA,IAAA,GAEV,4CkBzFC,CAAA,CACA,CAA+D,CnBLtD,AmBMT,CfKsD,AOAb,AQLX,CbQ+C,2BaFjE,oBAGM,ECKE,ANNA,CEqCN,GGnCC,CAAC,mBAOlB,CAAC,EAPuC,gBAetC,CAAgB,CAChB,CAA+D,CAC/D,CAA8B,MAE1B,CPkBoB,SOfb,MAAA,UACF,EAAG,ClBEO,AkBDjB,CPmBC,AKUE,CAAA,aE3BH,EAAS,CPmBD,AIsBmB,CAAA,eGtCnB,EAGR,GPoBwB,IAAA,EOlB5B,CAAC,AAKK,SAAU,GNeF,CAAA,AMfyB,CNed,CAAC,MMbN,YAAhB,OAAO,GAAS,ANgBS,CMhBd,EFuCQ,SEvCH,OACR,EAAA,UAA+B,EACG,CNcjB,WMdzB,OAAQ,EAAA,QAAA,EACuB,AADW,CACX,IADW,EAAA,SACX,AAEnC,CAAC,qCPlC8C,AAAC,COZnC,+BPcmB,GI0B8B,CAAC,OJ1BpB,EAAE,AAAC,QRDL,iBQKrC,CAA2B,CAC3B,CAA8B,CAC9B,CAAkB,CAAA,MAEb,CAAA,EAAsB,EAAwB,MAAM,CAAC,CAAC,MAExC,IAAI,EAAE,ACNA,AFJA,CAAC,ACUA,EIqBE,QJnBN,OAAO,CAAA,OACjB,CAAC,ECPE,ADOM,CAAC,eAGL,GAAiD,EAAE,KAE5D,CAAC,OAAO,CAAC,OAAO,EAAE,IACpB,CAAC,EHDgB,CAAC,AIRd,GAAA,SDa4B,CAAC,COlBZ,ClBDN,EeuCV,AJpBiD,EXnBvC,AeuCS,GJhB9B,GAHI,CHFa,CUhBM,CAAC,APkBV,CHFa,AGEA,CHFC,AGEA,EAAK,AIqBb,CItCe,ERkBjC,AADkC,EKU5B,ELTF,CAAC,OAAO,CAAC,CIqBK,CAAA,GJnBpB,CAAK,EAAA,KAAS,CAAA,OAAQ,CAAC,EIqBA,CJpBrB,CRHY,AKEG,MGCR,EAAK,EAAe,EAAM,AADI,EAEhC,AImBgC,AJpBN,CIoBO,CAAC,GJpBC,AIuB9B,CJvB+B,AAEnC,CAFoC,CAE1B,EXfC,CeqCM,AfrCN,MWeW,CIsBK,KJtBC,CAAA,CAAA,EAAA,GAAqB,EAAM,EAAF,KAAS,CAAC,CAAC,QAC/D,cAAc,CAAC,EAAe,EAAM,CACzC,COnBK,APkBkC,KOlBlC,IPqBA,CHCY,CGCvB,CAAC,AAAC,SAE0C,CAAA,EAAgB,IACrD,AADyD,AAC9D,EAAK,AAD2D,EAAE,AAC9D,GAAU,CAAC,CXdD,AQmBI,CIVL,KDKS,CAAC,EXdA,AYSF,CAAC,ADQb,GKoBO,CAAC,AJxBN,GDIK,MAHuB,QAGvB,CAAA,EAA8B,EAAM,CAChD,CAD8C,KACvC,CAAa,CAAC,CXXP,CAAC,AWWW,EAAD,GAHb,EAAe,EAM/B,CAEiB,CARkB,CZVjC,AYUkC,CAAC,GKmBO,IjB7B1C,CYmBF,EOpB4B,ANenB,EDOT,GImB8D,CAAC,CAAC,oBJjBvC,IAIF,CImBK,CAAC,CAAC,AJnBa,CAAC,CAGtC,CZ1B+B,EY0BtB,CI2BC,EAAE,ACPiC,GDOjC,AJ/B6B,OI+B7B,CJ3BW,KAAK,AXdA,CWcC,CXdC,AWcA,CZlBC,CYkBC,IAKZ,CAAA,AAAC,MACnB,OAAO,CAAC,AAAD,IHKK,AGLA,IACZ,CAAC,EI6BM,CAAC,EJ7BF,CAAC,CZpBG,CiBwCG,EAAA,ILlBrB,SARM,CAAC,ECPE,GDOG,CAAC,+DAPP,CAAC,ECPI,GDOC,CAAC,6CAgBb,CAEiB,YAAiC,CAClD,CKiBY,CLhBZ,KAAK,EACL,CAIO,CAJL,KAIgB,IKgBA,GLhBO,CAAC,GAHD,EAIvB,CHKY,COyBR,AJ9BiB,CAAC,EAAmB,CAAC,CAGtC,CI6BC,EAF2C,AJ3BnC,CI2BoC,CAAC,AJ3BzC,GAAS,CAJ2B,AAI1B,KAHqB,EAGd,CAAC,CKYuB,GLPpD,CALkC,CAAC,AAKhB,CALiB,EAAE,IAKZ,CAAA,AAAC,CKeG,GLd5B,CHIY,CGJN,OAAO,CAAA,AAAC,IAAI,CAAC,IACZ,OAAO,CAAC,EAAe,IAAI,CAAC,CAAC,CANpC,EAAA,IAAI,CAAC,EKeI,CAAC,ELfA,CAAC,uDAAuD,CAAC,CAAC,AAPpE,EAAA,IAAI,CAAC,KAAK,CAAC,KHGmB,EQYZ,qCLCtB,CAAC,AAAC,CAEM,yBAAA,CACN,CHGC,CAAC,EGHE,CAAC,KI4BG,GJ5BK,CAAC,GI4BC,IJ5BM,CAAC,IACpB,GAAM,MAAE,CAAI,CAAE,CAAG,EACjB,GAAI,CACF,AAFqB,CAAC,GAEhB,EKmBO,CAAA,0GLlBT,EKmBO,CAAA,ALnBM,CAAC,EAAe,EAE/B,AAFiC,CHMjB,GGJZ,CAAC,KAAK,CAAC,IAAI,CACb,CAAA,OAAA,EAAU,EIgCsB,AJhClB,CKkBsB,CAAC,CAAC,qBAAA,ELlBG,IAAI,CAAC,mBAAmB,CAAA,6DAAA,EAAgE,EAAI,CAAE,CACxI,AADsI,CACrI,AAEJ,KAAM,CKmBK,CLhBf,CAAC,CAAC,AACJ,CADK,AKuBJ,ALtBA,AAEO,GI+BH,oBJ/B0B,CAAe,CAAA,IACxC,CACF,IAAM,CKsBG,CAAC,ADSQ,CAAA,CJ/BR,CI+BO,AJ/BJ,CI+BK,EJ/BL,YAAA,AAAY,EAAC,EAAK,EAAD,CAAC,CAAI,CAAC,EAAS,KAAF,SAAgB,CAAC,CAAE,CAC5D,SAAU,KI+Ba,CAAC,AJ/BR,GAEZ,EAAU,IAAI,AKuBJ,CLvBK,AAAR,KAAa,CAAC,GAAM,CAAF,CAAC,GKuBkB,ELvBV,CAAC,AACzC,MAA0B,KKuBf,GLvBuB,CAAC,CAAC,AAA7B,OAAO,EAAuB,KAAhB,EAAuB,AAAG,CAAF,CAAC,AAC9C,KAAA,EADwD,CAAC,IAErD,CAAC,EH4BE,EG5BE,CAAC,eK6BiB,aL7BY,GAI3C,CAAC,AAEO,WACN,CAAuC,CACvC,CAAU,CACV,CAAY,CACZ,CAAuB,CAAA,CAEvB,EKsB4B,CLtB5B,CAAK,QACH,AAA4B,CADhB,SAC0B,EAAtC,AAAwC,EKsBjB,KLtBZ,EAAO,KAAK,GACrB,EAAO,IAAD,SAAc,CAAG,EACnB,IAAI,CAAC,AADqB,CAAC,OACd,EAAE,CACjB,IAAI,CAAC,CKuBgB,ILvBX,CAAC,KAAK,CACd,wEACA,CACE,IKuBQ,ELvBF,CAAA,EAAS,IAAA,GAGZ,EAAO,IAAD,CAAM,CAAC,IAGjB,EAGT,CANiC,CAAC,CAAC,CAM7B,CAHU,CAGA,AAHC,IAGG,CAAP,AAAQ,QKwBU,cLxBY,CAAA,GAE3C,GADA,EAAO,IAAD,SAAc,CAAG,EACnB,EAAO,GADmB,CAAC,AACrB,AAAK,EKyBM,CLzBD,IAAI,EAAE,GAExB,AACE,GAAY,EK2BM,ML3BP,WAAyB,CAAE,EAAS,EAAO,iBAAiB,CAAC,EACxE,AAC4B,UAAU,EAAlC,AAAoC,OAA7B,EAAO,IAAD,CAAM,GACrB,EAAO,IAAD,SAAc,CAAG,EACnB,IAAI,CADsB,AACrB,CADsB,OACd,EAAE,CACjB,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,2DAA2D,CAC3D,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,EK2BY,ML3BH,EK2BY,AL3BL,CK2BM,CAAC,EL3BR,SAAc,SAC7B,EK2BY,CAAC,CAAC,ALxBX,EAAO,CAHH,GAGE,CAAM,CAAC,EAAS,EAAO,GAAT,CAAQ,SAAc,CAAC,CAAC,CAIlD,CK2BK,CLxBd,IAAM,CK4BG,CL5BK,EAAO,EK4B6B,EL5B9B,CAAM,EAAA,EAAM,CAAC,EACV,EAAK,EAAD,CAAC,IK2B2C,CAAC,CAAC,AL3BpC,CAAC,GAMtC,CAN0C,CAAC,CAAC,IACN,AAK/B,EAJJ,AK+BQ,GLhCgC,GAClC,CAAA,AAAC,CAAC,CAAC,CK4BI,EL5BC,IAAI,GAAK,GACvB,MAAM,CAAA,AAAC,CAAC,CAAC,CAAE,CAD0B,CAAC,CAEzB,CAAC,CAAC,MAAH,WAAoB,CAAE,EAAS,EAAO,GAAT,CAAQ,aAAkB,CAAC,CACpE,CAAC,AACiC,MAAM,CAAI,CAAC,EAAgB,IAAI,AAElE,CADA,CADoE,CAC/D,AK4BE,CL7B+D,CAClE,CK2BQ,EL5BgD,QAC1C,CAAG,EACjB,IAAI,CAAC,EK2Be,ML3BP,GACf,IAAI,CAAC,IK4BU,CL5BL,CAAC,KAAK,CACd,EK2BiC,sEL1BjC,CACE,MAAM,CAAA,EAAS,IAAI,CACnB,CKyBiD,MLzB1C,CAAE,EAAO,IAAD,SAAc,CAC7B,CK2BK,OL3BG,CAAE,EAAK,EAAD,EAAK,SACnB,IAKG,EAAK,CALD,CAKA,GAAM,CAAC,EAAgB,EAAO,IAAD,MAAR,GAAsB,CAAM,CAAC,CAExD,EACN,EK4BE,CLzBA,IAHK,CAAC,CAGA,AKuBW,AL1BV,EAGD,CACX,IAAI,IAAI,CAAC,GK4BO,KL5BC,EAAE,GAGnB,IAAI,CAAC,QAAQ,EAAG,EAGZ,EAHgB,AK+BZ,CL/Ba,CK+Bb,CL5BC,MAAM,CAAC,MAAM,CAAG,CAAC,CAAE,KACrB,IAAM,KAAU,CAAJ,GAAI,CAAK,QAAQ,CAWhC,AAXkC,IAW7B,EK0BiB,EL1BX,KAViB,UAAU,EAAlC,OAAO,EAAO,IAAD,CAAM,EAAmB,EAAO,IAAD,SAAc,EAAE,CAC9D,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,6EAA6E,CAC7E,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,OAAO,CAAE,EAAO,IAAD,SAAc,KAG1B,KAAA,CAAA,EAAa,CK0BmB,YL1BN,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,CAExC,EAAO,KAAK,CAAE,CAC3B,CK2BS,CL3BJ,MK2BwB,OAAA,EL3BT,CK2BmB,AL1BzC,CK0B0C,CAAC,EL1BvC,CAAC,KAAK,CAAC,KAAK,CACd,mFACA,CACE,MAAM,CAAE,EAAO,IAAD,AAAK,CACnB,OAAO,CAAE,EAAO,IAAD,SAAc,CAC7B,QAAQ,CAAE,EAAK,EAAD,EAAK,GAGvB,EAAK,EAAD,GAAM,CAAC,EAAK,EAAD,WAAc,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,CAI3D,MK4BQ,CL5BD,AAIT,IAAK,IAAM,MAAM,GADb,CAAC,iBK2BiB,ML3BM,EAAE,CAAC,AACV,IAAI,CAAC,MK0BgB,CAAC,CAAC,AL1BV,EAAE,CAClC,IAAM,EAAiB,CAAC,EAAS,CAArB,CAA2B,EAAF,CAAN,EAC7B,EAD4C,CACxC,CAD0C,AACzC,EAD2C,CAChC,EAAK,EAAT,AAAQ,CAAC,OAAU,CAAC,GAAO,CAAH,AAClC,CADmC,GAC7B,EAAa,EAAK,EAAD,CAAC,EAAK,CAAb,AAAc,GAC9B,CADkC,CAAC,AAC5B,CAD6B,CAClB,IAAI,CACtB,EAAU,EAAW,GAAd,AAAiB,CAAC,AAE3B,IAFsB,EKgCF,CAAA,IL9BT,CAAC,CK8Be,CAAC,QL9BN,CAAiB,EAAQ,EAAS,EAAM,AAAjB,EAAe,AAC9D,CADwD,AACvD,CAAC,AACI,EK6BE,AL7BuB,CAFwC,AAEvC,CAFwC,CAAC,AAEhC,EAAM,EAAhC,AAA8B,CAAN,CAC9B,GAD6C,CACzC,CAD2C,AAC1C,EAD4C,AKgClC,QL/BA,CAAiB,EAAQ,EAAS,EAAX,AAAiB,EAAF,CAAN,AAMlD,EAAI,EAN6D,AAM7D,CAN8D,CAAC,QAM7C,CAAC,EAAO,IAAD,AAAK,CAAC,CACrC,IAAI,EAAA,IAAW,CAAC,CAAC,EAAO,IAAD,AAAK,CAAC,CAAE,CAAE,SAAS,EAAE,CAAI,CAAE,CAAE,CAAJ,EAChD,IAAI,CAAC,CADwD,CAAC,0BAC7B,CAAC,QAAQ,CAAC,EAAO,IAAD,AAAK,CAAE,GAE5D,IAAI,CAAC,CAFgE,CAAC,CAAC,GAE5D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OACH,EAAA,IAAU,CAC5B,CAAC,EAAO,IAAD,AAAK,CAAC,CACb,CAAE,SAAS,EAAE,GACL,EADU,CAGpB,GAFgB,CACf,AACG,CADF,AACG,MAAM,CAAC,IAAI,CAAC,IAErB,CAAC,AAEM,EAJqB,CAAC,CAAC,KAIhB,CACZ,GAAK,CAAD,GAAK,CAAC,QAAQ,EAAE,GAKf,IAAM,MAAM,GAFb,CAAC,MKyBQ,ELzBA,CKyBG,CAAC,ALzBD,EAEK,IAAI,CAAC,QAAQ,CAAE,CAWlC,IAAK,IAAM,IAAI,CAVe,UAAU,EAApC,OAAO,EAAO,IAAD,GAAQ,EAAmB,EAAO,IAAD,SAAc,EAAE,CAChE,GKwBS,CLxBL,CAAA,KAAM,CAAC,EKwBQ,GLxBH,CAAA,+EAEd,CACE,MAAM,CKyBO,ALzBL,EAAO,IAAI,CACnB,OAAO,CAAE,EAAO,IAAD,SAAc,GAGjC,EAAO,GKuBM,CLvBP,GAAQ,CAAC,CKuBS,CLvBF,aAAa,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,CAE1C,EAAO,IAAD,CAAM,CAAE,CAC3B,EAAK,EAAD,WAAc,EAAE,CACtB,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,mFAAmF,CACnF,CACE,MAAM,CAAE,EAAO,IAAI,CACnB,IKsBY,ILtBH,EKsBU,ALtBH,aAAA,CAChB,QAAQ,CAAE,EAAK,EAAD,CKsBkB,CAAA,GLnBpC,EAAK,AKqBC,CAAC,CLrBH,KAAQ,CAAC,EAAK,EAAD,WAAc,CAAE,EAAO,IAAD,SAAc,CAAC,CAAC,AAI/D,CAAC,AAEM,SAAS,EAAA,CACd,OAAO,IAAI,CAAC,QAAQ,AACtB,CADuB,AACtB,CAGH,SAAS,GACP,CAA2B,CAC3B,CAAgB,CAChB,CAA2B,GAHT,MAKK,AAAvB,AAAI,SAAO,EAAuB,AAEzB,EAF2B,AAET,GAFT,KAEiB,CAAC,GAAG,CAAC,CAGjC,AAHkC,CAAf,CAGD,IAAI,CAAA,AAAC,GACrB,OADe,EACN,CKtSJ,AACd,CAAA,CAAA,ADac,CCZD,AZpBA,AOuTiC,CKlS9C,ALkS+C,CKlSrB,CLkSuB,ECnTP,GZ0BtC,UgBNC,CAsCqB,QEvCE,AFuCM,EAA3B,OAAO,AhBhCV,EgBNkB,IAsCgB,CADE,AJvDjB,CIwD8B,AJxD7B,CIkBK,CAAC,EAsC2B,AAtCzB,CAsC0B,EAAO,CAAC,CAAC,GAAf,gBArCxC,CAAC,CDU2C,ACV3C,CDU4C,CAAC,eCV7C,EAAoB,EAAA,CAAS,SAKrC,SACI,IAID,CE7BD,CF6BO,OAAO,CAAC,CRXD,gBQWmB,IAAI,MAGtC,EAA2C,AA8JnD,SAAS,AAAc,CAAqB,EAC1C,IAAM,EAAiC,CL5B1B,CK4BwC,EADjC,GACsC,CAAA,GAC1D,GAAI,CAAC,EAAO,YACV,AL7BoB,EK6BpB,IAAI,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoB,EL5BI,CK4BW,CL5BX,AK4BY,CAAC,AAIlD,IAAM,EAAkB,EAAO,GAAD,GAAQ,CAAC,OAAO,CAAC,AACzC,EAAqB,CL5BW,CK4BJ,GAAD,GAAQ,CAAC,UAAU,CL3Bb,AK2Bc,AAC/C,CL5BkC,CK4BlB,EAAO,MAAO,CAAA,KAAM,CAAC,AAErC,EAA4B,EAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,AAC/C,EAA2C,GL1BzB,AK0BqC,KAAK,CAAC,GAAG,CAAC,CAAC,AAExE,MAAO,CACL,EAAE,MAAE,UAEJ,OAAO,SLjCsE,EKkC7E,EACA,oBAAqB,EAAgB,MAAM,CAE3C,MAFoC,OAGpC,qBACA,uBAAwB,CL3BD,CAAC,AK2BqB,EAAmB,MAAM,CAAC,AAAE,CAAC,AAAF,MAA9B,CAAC,CAAC,AAAmB,CAInE,CAAC,CAzLkD,OAC5C,CJpBC,CIqBJ,OAAO,MAGH,EAAA,EAAqC,CAAC,AAGtC,EAAuB,EDaT,AH/BF,EIoBhB,EACA,EACA,IJtBuD,CAAC,CAAC,CIsBlD,CACR,CAAC,CAIF,AAAI,GAAe,CAAC,CLnBH,EKmBY,EDMI,CAAC,gBC+GlC,AArHgD,EACtB,EAqH1B,EArH0B,EAuH1B,CAAI,EAAc,EAHU,MACI,EAEJ,EAAE,AACrB,EAAgB,GL3BD,CK2BK,CAAA,AACzB,CAAC,CAAC,CAAG,CAAC,CAAC,UAAU,EAAI,CAAC,CAAC,EL5BwB,KK4BjB,GL5ByB,AK4BpB,EAAc,OAAO,CACzD,CAAC,CAxHG,CAuH6C,AAtHtD,CAAC,EL6PoB,AOpSlB,EPoS2B,EAAkB,GAApB,WAAkB,KAAI,CAAiB,CAAE,CAAC,CAAC,AAEvE,CAAC,SEtVU,ETLL,AKFA,AHEA,ALFA,CU2V6D,CV3V7D,sCYK+B,iCAEtB,CAAA,wBACa,CZejB,AYfA,CXQqB,AUQ4B,YCdjD,2BAKG,CAAA,GAAA,EAAA,AACZ,CAAC,2DJXC,CEGa,AJCA,AIDA,CFFN,CAAA,EAE0D,CMmC7D,CNjCiE,CAAA,wBAJ9D,YAEK,CAAL,ERcqB,YQZd,CAAP,GIAK,AXOQ,CCOQ,AUdgC,AMS3C,GVZ6C,GVJ3C,CUSV,AVTU,CUSV,CAAA,EAAG,EAAA,SAAA,AAAS,EAAC,IViDpB,SAAA,GACJ,CAAoC,CACpC,CAAuB,CYoBnB,SZlBoC,GAAG,CAAC,AAO5C,IAAK,IAAM,KAJK,AAII,GAHhB,MAAM,GAAG,CiBwCC,AjBxCA,CACX,IAAA,AAAI,CAAC,CAAC,CAAG,EAAE,IAAI,IACf,OAAA,AAAO,CAAC,CAAC,CAAS,KAAN,CAAC,GACe,EAAE,CAAE,AACjC,CgB4CgC,CAAC,ChB5CjC,EAAU,ECG4B,SDHjB,EAAE,GAAK,EAAY,MAAM,CAAE,GAE3B,EAAiB,SAAS,CAAC,AAC9C,IADmC,OAE1B,CAAJ,CgBgDD,AhBhDW,WAAW,EAAE,GAAK,IACjC,CiBwCG,CjBxCgB,EgBgDe,AhBhDE,CADM,CiByCjB,CjBzCmB,GACF,AAAN,CAAO,AYoBF,CAAC,AZhB9C,CYgB+C,AAG9C,MZnBM,CACT,CAAC,AepFK,GfFM,IAAA,EAAA,CAAA,CAAA,EeEN,CAAA,AfmFmB,CAAC,CenFpB,MAAA,CAAA,EAAA,CAAA,SfEJ,CmBGI,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,MnBDJ,CKQI,AOEC,CAAA,CAAA,CAAA,SAAA,CAAA,EAAA,CAAA,6VS/BP,IAAI,EAAY,OAAO,cAAc,CACjC,EAAmB,OAAO,wBAAwB,CAClD,EAAoB,OAAO,mBAAmB,CAC9C,EAAe,OAAO,SAAS,CAAC,cAAc,CAgB9C,EAAgB,CAAC,EAfG,EAgBA,CACtB,sBAAuB,IAAM,EAC7B,yBAA0B,IAAM,EAAwB,wBAAwB,AAClF,EAlBE,IAAK,IAAI,KAAQ,EACf,EAcK,EAda,EAAM,CAAE,GAAhB,CAAqB,CAAG,CAAC,EAAK,CAAE,WAAY,EAAK,GAkB/D,EAAO,OAAO,CARc,CARV,CAAC,AAgBF,EAhBM,EAAM,EAAQ,KACnC,GAAI,GAAwB,UAAhB,OAAO,GAAqC,YAAhB,AAA4B,OAArB,EAC7C,IAAK,IAAI,KAAO,EAAkB,GAC5B,AAAC,EAAa,CAAlB,GAAsB,CAAC,EAAI,IAAQ,IAAQ,GACzC,EAAU,EAAI,EAAK,CAAE,IAAK,IAAM,CAAI,CAAC,EAAI,CAAE,WAAY,CAAC,CAAC,EAAO,EAAiB,EAAM,EAAA,CAAI,EAAK,EAAK,UAAU,AAAC,GAEtH,OAAO,EACT,EACwC,EAAU,CAAC,EAAG,aAAc,CAAE,MAAO,EAAK,GAQpD,CARwD,EAWtF,IAAI,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QA+CA,EA1CO,AA0CQ,QAAwB,KAAK,CAAC,EAAd,EAAkB,CAAC,EAAE,CACpD,CADsC,CACT,yBAC7B,EAAuC,CAAC,CAAC,EAAE,EAAa,uBAAuB,CAAC,CAChF,EAAsC,WAoBtC,EAAA,EAAA,CAAA,CAAA,QACA,EAAuD,SAAvC,QAAQ,GAAG,CAAC,sBAAsB,CAWlD,EAAsB,MACxB,cAAe,CACf,eAAgB,AAChB,aAAY,gBAAE,CAAc,iBAAE,CAAe,CAAE,CAAE,CAC/C,IAAI,CAAC,cAAc,CAAG,EACtB,IAAI,CAAC,eAAe,CAAG,CACzB,CACA,WAAY,CACV,OAAO,CACT,CACA,eAAe,CAAO,CAAE,CACtB,IAAM,EAAO,EAAW,KAAK,CAAC,cAAc,CAAC,GAAW,EAAW,OAAO,CAAC,MAAM,WACjF,AAAI,EACK,CAAC,GADA,AACG,EAAE,EAAK,OAAO,CAAC,CAAC,EAAE,EAAK,MAAM,CAAC,EAAE,EAAE,EAAK,UAAU,CAAA,CAAE,CAvBxC,CAAC,WAAW,CA0BtC,AA1BuC,CA2BvC,oBAAoB,CAAK,CAAE,CACzB,IAAM,EAAS,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UACvC,EAA0B,IAAI,IAApB,AAEhB,IAAK,IAAM,KAFkB,AACf,EAAM,CACD,KADO,CAAC,AAAC,AACF,GAD6B,OAAlB,EAAK,QAAQ,GAEhD,AA0BN,SAAS,EAAmB,CAAM,CAAE,CAAU,CAAE,CAAQ,CAAE,CAAO,CAAE,CAAe,EAChF,GAAI,EAAiB,EAAW,IAAI,CAAE,GAAkB,OACxD,IAAM,EAAc,CAClB,WAAY,EAAW,UAAU,CACjC,KA5DF,AACO,CA2DC,MA5DA,IA4D6B,EAAW,IAAI,CA1DzC,EAAW,QAAQ,CAAC,MAAM,CAG1B,EAAW,QAAQ,CAAC,QAAQ,CAwDrC,UAAW,EAAW,SAAS,AACjC,EACA,EAAO,eAAe,CAAC,EAAW,IAAI,CAAE,EAAa,AAAC,IAoBpD,IAAK,IAAM,KAnBX,EAAQ,EAmBY,CAnBT,CAAC,EAAW,EAAE,CAAE,EAAK,AAmBF,WAnBa,GAAG,MAAM,EAChD,EAAW,KAAK,EAAE,AACpB,EAAK,QAAQ,CACX,EAAW,KAAK,CAAC,OAAO,CAAC,AAAC,IACxB,IAAM,EAAW,EAAQ,GAAG,CAAC,UAC7B,AAAK,EAGE,CACL,CAJE,MAAW,CAIJ,CACP,OAAQ,EACR,QAAS,EAAK,WAAW,GAAG,OAAO,CACnC,WAAY,EAAK,WAAW,GAAG,UAAU,AAC3C,CACF,EARS,EAAE,AASb,IAGa,EAAS,MAAM,CAAC,AAAC,GAAM,EAAE,QAAQ,GAAK,EAAW,EAAE,GAElE,EAAmB,EAAQ,EAAO,EAAU,EAAS,GAEvD,EAAK,GAAG,CAAC,EAAW,OAAO,CAC7B,EACF,EA1DyB,EAAQ,EAAM,EAAO,EAAS,IAAI,CAAC,eAAe,CAEzE,CACA,kBAAmB,CACjB,OAAO,EAAW,OAAO,CAAC,MAAM,EAClC,CACA,eAAe,CAAO,CAAE,CAAQ,CAAE,CAIhC,GAHuB,AAAnB,UAA6B,OAAtB,IACT,EAAU,CAAE,KAAM,EAAQ,EAExB,EAAQ,QAAQ,EAAI,CAAC,EACvB,OAAO,IAET,EAHwC,EAGlC,EAAS,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UACvC,EAAU,EAAQ,OAAO,EAAI,IAAI,CAAC,gBAAgB,GAClD,EAAO,CAAC,cAAc,EAAE,EAAQ,IAAI,CAAA,CAAE,CAC5C,GAAI,EAAiB,EAAM,IAAI,CAAC,eAAe,EAC7C,CADgD,MACzC,IAET,IAAuB,IAAnB,EAAQ,MAAM,CAAY,CAC5B,IAAM,EAAO,EAAO,SAAS,CAAC,EAAM,EAAS,GAC7C,OAAO,EAAQ,EAAM,EAAS,EAAM,GACtC,CACA,OAAO,EAAO,eAAe,CAAC,EAAM,EAAS,AAAC,GAAS,EAAQ,EAAM,EAAS,EAAM,IACtF,CACF,EAkCA,SAAS,EAAQ,CAAI,CAAE,CAAM,MAgBN,KAAK,IAf1B,AAgBO,AAAS,IAhBZ,KAAc,IAgB+B,KAhBtB,OAgBH,OAAO,EAAM,GAAD,CAAQ,CAfnC,EAAO,IAAI,CAChB,AAAC,IACC,EAAK,GAAG,GACD,GAET,AAAC,IAEC,MADA,EAAK,GAAG,GACF,CACR,IAGJ,EAAK,GAAG,GACD,EACT,CAIA,SAAS,EAAiB,CAAQ,CAAE,CAAe,EACjD,OAAO,EAAgB,IAAI,CACzB,AAAC,GAA+B,UAAnB,OAAO,EAAuB,IAAY,EAAW,EAAQ,IAAI,CAAC,GAEnF,CAGA,IA0DI,AA1DA,EAEO,QAwDG,AAKV,EAAwB,OA/DL,OA+DmB,CALX,CAKkC,MAL3B,aAK8C,CAClF,cAAe,AACf,aAAY,EAAS,CAAC,CAAC,CAAE,CACvB,KAAK,CAAC,AAjEF,0BAiEQ,EAAS,EACvB,CACA,kBAAkB,CAAc,CAAE,CAChC,IAAI,CAAC,cAAc,CAAG,CACxB,CACA,MAAO,CAEL,MAAO,CADS,IAAI,EAAuB,mCAAmC,CAAC,AAZjE,iBAY8E,CAAC,EAAQ,EACrF,AAClB,CACA,QAAS,CACP,IA7MI,EA6ME,EAAS,IAAI,CAAC,OAAO,GA7MT,CAAE,OA+MlB,IAAI,EAAoB,CACtB,eAAgB,IAAI,CAAC,cAAc,EAAI,EAAY,KAAK,CAAC,iBAAiB,GAC1E,gBAAiB,EAAO,eAAe,EAAI,EAAE,AAC/C,EAlNyB,EAC7B,CAAmC,CAAC,EAAqC,CAAG,EAC5E,CAAmC,CAAC,EAA2B,CAAG,CAkNlE,CACA,SAAU,CAhNV,OAAO,CAAmC,CAAC,EAAqC,CAChF,OAAO,CAAmC,CAAC,EAA2B,AAiNtE,CACA,WAAY,CACV,OAAoC,KAAK,IAlO7C,AAkOW,SAlOF,EACP,IAAM,EAAkB,CAAmC,CAAC,EAAqC,CACjG,GAAI,GAAiB,OACnB,CAD2B,MACpB,EAAgB,MAAM,CAE/B,IAAM,EAAiB,CAAmC,CAAC,EAA2B,CACtF,OAAO,GAAgB,MACzB,GA4NE,CACF,EAGI,EAAA,EAAA,CAAA,CAAA,mJC7SE,EAAmB,QAAQ,CA6BjC,KA7BM,IA6BG,IACP,IAAM,EAA+B,UAAA,CAAuC,CAD/C,GAAwB,UAC/C,QAA4F,CAQlG,OANE,AAMK,GALL,AAAuC,QAAA,QAKf,CALjB,GACP,IAFA,OAEY,EACR,EAA4B,MAAA,GAFzB,GAGH,CAGR,CAiBA,MAAM,CApBW,IADkB,KAqBc4e,EAAAA,qBAAA,CAA3C,AAAiE,AAC9D,WAAW,CAAC,CAAO,CAAkB,CAC1C,KAAK,CAAC,GAAS,IAAF,iBAAuB,CAAC,AACvC,CAEO,MAAM,EAAS,CACpB,KAAK,CAAC,MAAM,EAAE,CAId,IAAM,EAAsB,GAExB,CAAwB,GA1CO,QAAA,EAwC7B,AAxCW,KAwCiC,CAEH,CAFK,AAEJ,AA1CxB,EA0CG,AAAuB,CA1CH,GAAvB,kBAAuB,IAAyB,GA4CrE,EAAsD,CA5CqB,eA4CrB,CACrD,AADD,AAAyE,IAGxE,IAAM,EAASpN,EAAAA,GAFA,EAEK,CAAC,SAAS,CAAC,uBAAuB,CAAA,CAQhD,EAAqB,EAAO,IAAD,QAAa,CAE9C,CAFM,EAEF,CAAC,EAAoB,YACvBnb,EAAAA,EADqB,YACP,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CACV,sHAAsH,CAE1H,CAAC,CAAC,CAKJ,GAAI,CACF,EAAgB,KAAK,CAAC,OAAO,AAAd,CAAc,AAAC,UAC5B,IAD0C,AACpC,GAuDoB,EAvDgB,EAA7B,AAAwC,IAAI,CAAC,AAwDpE,AACO,GAzDuD,EAuDZ,EAA8B,CAEjE,GADP,EAEG+a,EAAAA,QA1DwC,AA0DhC,CAAC,CAFE,KAEI,CAGfA,EAAAA,QAAQ,CAAC,QAAQ,EA3DZ,EAAe,EAAW,QAA1B,AAAyB,MAAe,CACxC,EAAS,EAAW,EAApB,KAA2B,CAC3B,AADmB,EACT,EAAW,GAArB,KAAoB,AAAS,CAE7B,EAA4B,EAAW,CAAlC,IAAuC,EAAE,CAAR,EAAW,CAAA,AAAC,IAAA,AAC/C,CACL,GAF4D,IAErD,CAAE,CACP,OAAO,CAAE,EAAK,EAAD,MAAS,CACtB,MAAM,CAAE,EAAK,EAAD,KAAQ,CACpB,UAAU,CAAEwD,EAAAA,UAAU,CAAC,OAAO,AAChD,CAAiB,CACjB,CAAe,EAGG,EAAMpD,CAAN,CAAMA,KAAK,CAAC,cAAc,CAACV,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAE,SACjD,EACA,KADO,CACD,CAAE,EACR,UADoB,AACV,CAAE8D,EAAAA,UAAU,CAAC,OAAO,AAC5C,CAAa,CAAC,CAEF9D,EAAAA,OAAO,CAAC,IAAI,CAAC,EAAK,CAAF,IAUd,CAVsB,CAUf,IAAD,QAAC,CATmC,CACxC,CAQoB,cARL,CAAE,IACR,CAO+B,CARjB,AAGvB,KAFgB,SAEF,CAAE,IACP,CAEzB,CAHsC,AAGvB,CAWD,AAPa,EAAO,CANH,CAab,EAPe,KAAU,CAAC,EAAW,IAAI,CAAE,GAAP,GACtC,IAAI,IACJ,EACA,GADK,MACI,CAAE,EAAW,QAAD,EAAW,CAChC,UAAU,CAAE,EAAW,QAAD,EAAW,AACjD,CAAe,CAAC,CAEG,GAAG,CAAC,EAAW,QAAD,AAAS,CAAC,CAE7B,EAAO,IAAD,QAAC,CAAe,CACxB,CAAC,CAAC,AACJ,CAAC,CAAC,AACJ,QAAU,CAER,EAAO,EALqC,EAKtC,QAAC,CAAe,CACxB,EACF,CAAC,AAEL,CACF,CAYO,IAAM,EAAmBgD,EAAAA,IAjBkB,kBAiBI,CAAgB,EAAgB,AAAE,GAC/E,IAAI,EAAmC,EADmD,EAoCtF,CApCyE,CAoCrD9T,CAnCsB,CAAC,AAmCvBA,iBAAiB,CAAC,AAAC,IAC3C,CACL,CArC2C,CAmCY,EAEnD,CAAE,EAFsE,AAG5E,SAAS,GAAG,AACV,EAFoB,AAEH,EACnB,CAAC,CACD,GAF0B,CAAC,CAEtB,CAAC,CAAM,EAAE,AAGP,CALW,IAShB,EAAO,EAAE,CAAC,CAAJ,UAAe,CAJM,AAIN,AAAE,EAJM,EAAE,AAK7B,IAD6B,AACvB,EAAWpI,EAAAA,IAAX,MAAqB,CAAC,EACxB,EAD4B,CAAC,AACpB,KAAD,MAAY,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,AAC/C,EAAK,EAAD,UAAa,CAACd,EAAAA,gCAAgC,CAAE,qBAAqB,CAAC,CAI/C,wBAAA,GAAzB,EAAS,MAAD,KAAC,EAA4C,EAAS,IAAI,CAAC,CAAN,cAAqB,CAAC,EAAE,AACvF,EAAK,EAAD,QAAW,CAAC,EAAS,IAAI,CAAC,CAAN,cAAqB,CAAA,EAK3C,AALuD,AAK9B,QAAjB,gBAAiB,IAA4B,CAA5C,WAAA,EAA6C,EAAS,IAAI,CAAC,CAAN,UAAiB,CAAC,EAAE,AACpF,EAAK,EAAD,UAAa,CAAC,WAAW,CAAE,QAAQ,CAAC,AAE5C,CAAC,CAAC,AACJ,CAAC,CACL,CAAG,4EChOA,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,qCAAqC,CAAC,+BCJ/D,OAAA,cAAA,CAAA,EAAA,aAAA,mGAIU,EAAA,iBAAiB,CAAG,YAAY,CAAC,AAQjC,EAAA,cAAc,CAAkB,MAAM,CAAC,sBAAsB,CAAC,CAiC9D,AAjC+D,EAiC/D,aAAa,CAAG,CAC3B,MAAM,CAAE,QAAQ,CAChB,MAAM,CAAE,QAAQ,CAChB,GAAG,CAAE,YAAY,CAClB,CAAC,AAEW,EAAA,wBAAwB,CAAG,IAAI,GAAG,CAAC,CAC9C,WAAW,CACX,eAAe,CACf,YAAY,CACZ,cAAc,CACd,eAAe,CACf,eAAe,CACf,WAAW,CACZ,CAAC,CAAC,+BC3DA,OAAA,cAAA,CAAA,EAAA,aAAA,sCAmBU,EAAA,gBAAgB,CAAG,aAAsB,CAAC,mCClB3C,cAAc,6DACxB,GADU,EAAA,SACV,KADwB,GAAd,CAAc,CAAd,cAAc,CAAA,CAAA,CAAA,GAIzB,AAHC,SAAA,CAAA,WAAuB,CAAA,AACvB,EAAA,WAAA,CAAA,kBAAgC,CAAA,AAChC,EAAA,QAAA,CAAA,GAAA,cAA4B,CAAA,+BCJ3B,OAAA,cAAA,CAAA,EAAA,aAAA,oLAGH,IAAA,EAAA,EAAA,CAAA,CAAA,QAIA,EAAA,EAA6C,CAAA,CAAA,QAE7C,CAH6C,CAG7C,EAAA,CAAA,CAAA,GAF6C,CAQnB,IAC1B,EAAA,EAAA,CAAA,CAAA,QACA,EADwD,AACxD,EAAA,CAAA,CAAA,OAEA,GAAA,QAFkE,KAElE,CAAA,EAAA,OAAgB,AAAiB,CAAsB,MAMtD,GALC,AAAK,EAAkC,CADZ,GACW,AAAK,CACjC,CADmC,CACD,IAAD,AAAK,CAAC,AAEvC,EAA8B,GAAG,CAAJ,AAAK,IAAI,AAElD,CAFmD,AAElD,CAEY,EAAA,kBAAkB,CAAG,AAChC,EAD6B,CAIA,QAAQ,EAAnC,EAHsB,EACsB,EAAE,CAEvC,CAGT,EAFE,EAAA,UADsB,cACE,CAAC,GAAG,CAAC,GAIpB,EAAA,UAJmC,CAAC,CAC9C,CAAC,SAG+B,CAAG,AACpC,EADiC,EAGjC,IAAM,EAAS,GAAuD,AAA3D,EAFa,EAEkD,AADpB,CACqB,AAC3E,CAFwD,MAEjD,AACP,AAFoE,KACnD,AAAL,OAAkB,CAAA,CAAJ,CAAI,EAAA,kBAAA,AAAkB,EAAC,EACnD,CAAC,CAAC,AAEW,CAH2C,CAG3C,AAH4C,CAAC,eAG7B,CAAG,AAC9B,EAD2B,CAIzB,KAAK,CAAC,MAHgB,CAGT,CAF0B,AAEzB,EAKhB,AAP2C,EAGzC,EAAgB,MAAM,EAAI,CAAC,AADE,CAAC,CAE9B,CAAA,CADe,CACf,EAAA,kBAAA,AAAkB,EAAC,CAAe,CAAC,CAAC,CAAC,CAAC,EACtC,AAA8B,UAAU,CACzC,CAAC,OADO,CAAe,CAAC,CAAC,CAAC,CAIhB,EAAA,oBAAoB,CAAG,AAClC,EAD+B,CAGxB,CAAC,KAAK,CAAC,KAF4C,EAErC,AADkB,CACjB,CADmB,EAI9B,EAAA,AAFX,UADqC,CAAC,CAAC,IAGZ,CAAG,CAC9B,CAD2B,CAE3B,EACA,CAFuB,IAOvB,IAeI,CApBe,CAKb,CADN,CAC+B,AAevB,CArB0B,AAKhC,AAEA,AAcO,AAWT,CAzBG,EAAA,IADa,WACE,CAAC,CAAE,EAAM,GAAD,CAAK,CAC9B,CAuBD,AAvBE,OACE,EAAmB,EAAA,YAAH,IAAmB,CAAC,GAAG,EAAE,CAC3C,CAAU,CAAC,EAAA,gBAAgB,CAAC,CAAG,EAAM,GAAD,GAAC,AAAM,CAAC,CAE1C,EAAmB,EAAA,YAAH,IAAmB,CAAC,MAAM,EAAE,CAM9C,CAAU,CAAC,EAAA,wBAAwB,CAAC,CAAG,EAAM,GAAD,GAAC,AAAM,CAAC,CAIlD,GACF,CAAU,CAAC,EAAA,GADC,EAAE,SACW,CAAC,SAAS,CAAC,CAAG,EAAA,aAAa,CAAC,MAAM,CAAC,AAC5D,CAAU,CAAC,EAAA,cAAc,CAAC,WAAW,CAAC,CAAG,EACzC,EAAO,CAAA,CAAH,CAAM,EAAU,CAD+B,CAAC,MAChC,EAAA,EAAa,EAAM,GAAD,CAAK,CAAA,CAAE,CAAC,EAE9C,CAAU,CAAC,EAAA,cAAc,CAAC,SAAS,CAAC,CAAG,EAAA,aAAa,CAAC,MAAM,CAAC,AAC5D,EAAO,CAAA,CAAH,OAAG,EAAW,EAAM,GAAD,CAAK,CAAA,CAAE,CAAC,CAG1B,YAAE,OAAY,CAAI,CAAE,AAC7B,CADqB,AAAS,AAC7B,CAD0B,AACzB,AAEW,EAAA,cAAc,CAAG,CAC5B,CADyB,CAEzB,EACA,IAFmC,CAOnC,GANmB,CAMf,CALe,CAKJ,CAAA,AAsBf,AAvBA,EAAE,GACU,CAAG,EAAS,EAAQ,CAAE,CAAC,IAAH,EAKhC,CAJI,GAA6B,OAAnB,CAA2B,EAAE,CAAzB,IAEhB,EAAW,CAAA,GAFe,EAElB,CAAG,EAAS,EAAQ,GAAA,EAAM,CAAN,CAAgB,CAAA,AAAE,CAAC,CAE7C,GACK,CACL,CAJ0C,KAEhC,EAAE,EAEF,CAAE,CACV,CAAC,EAAA,cAAc,CAAC,QAAQ,CAAC,CAAE,EAC3B,CAAC,EAAA,GADkC,WACpB,CAAC,SAAS,CAAC,CAAE,EAAA,aAAa,CAAC,GAAG,CAC7C,CAAC,EAAA,cAAc,CAAC,WAAW,CAAC,CAAE,EAC/B,CACD,IAAI,CAAE,CAAA,CAFoC,CAEjC,EAAU,EAAA,EAAK,EAAQ,CAAE,CAAf,AACpB,CAAC,AAEG,CACL,EAJkC,QAIxB,CAAE,CACV,CAAC,EAAA,cAAc,CAAC,QAAQ,CAAC,CAAE,EAC3B,CAAC,EAAA,GADkC,WACpB,CAAC,SAAS,CAAC,CAAE,EAAA,aAAa,CAAC,GAAG,CAC9C,CACD,IAAI,CAAE,EACP,AACH,CADI,AACH,CAAC,AAEW,EAAA,EAJK,gBAIa,CAAG,AAChC,EAD6B,CAG7B,AAAI,MAF0B,EAElB,AADU,EAAE,CACR,EACd,AAAI,KAMN,EAPyB,CACX,CADa,EACT,EAAU,MAAM,CAAP,AAChB,CADyB,CACf,MAAM,CAAC,AAAR,MAAc,CAAC,AAE1B,EAAU,MAAM,CAAP,AAAQ,AAEnB,SAAS,CAAC,uBCzIhB,OAAA,cAAA,CAAA,EAAA,aAAA,yCAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAC1C,EAAA,EAAA,CAAA,CAAA,OAA8D,CAC9D,EAAA,EAAA,CAAA,CAAA,QAWA,EAAA,EAA0D,CAAA,CAAA,IAJlB,IAKxC,EAAA,EAAA,CAAA,CAAA,GAD0D,CAWhC,IAC1B,EAAA,EASiB,CAAA,CAAA,OAGjB,OAAa,CAHI,SAGwB,EAAA,OAAR,YAA2B,CAClD,iBAAoC,AAE5C,AAFyB,aAEb,EAAgC,CAAA,CAAE,CAAA,CAC5C,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GACrC,GAD2C,CAAC,AACxC,CADyC,AACxC,iBAAiB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAC9C,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CADI,AACH,AAES,IAAI,EAAA,CACZ,OAAO,IAAI,EAAA,mCAAmC,CAC5C,EAAA,iBAAiB,CACjB,CAAC,cAAc,CAAC,CAChB,AAAC,IACC,EADU,EAAE,AACN,EAC2B,AAFnB,QAE2B,CAAC,CAAC,CADxB,AACjB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAgB,EAAO,IAAD,GAAQ,CAAC,AAAE,CAAD,CAgB5D,IAhBmE,CAAC,CAChE,AAAC,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,EAAc,MAAM,CAAC,EAAE,AACpC,EAD0B,EACtB,CAAC,KAAK,CACR,EACA,QAAQ,CACR,EAFa,EAET,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAQ,CACvC,CAAC,AAGA,AAAC,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,EAAc,MAAM,CAAC,EAAE,AACpC,EAD0B,EACtB,CAAC,KAAK,CACR,EACA,QAAQ,CACR,EAFa,EAET,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAQ,CACvC,CAAC,AAEG,CACT,CAAC,CACD,AAAC,IACC,EADU,EAAE,AACN,EADQ,AAEmB,AAJb,CAAC,OAIoB,CAAC,CAAC,CADxB,AACjB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAgB,EAAO,IAAD,GAAQ,CAAG,AAAF,CAAC,CAC5D,IADmE,AAC/D,CADgE,AAC/D,WAAW,CAAC,CAAC,EAAc,CAAE,CAAC,QAAQ,CAAZ,AAAc,QAAQ,CAAC,CAAC,AACzD,CAAC,AADyD,CAE3D,AACH,CADI,AACH,AASO,eAAe,CACrB,CAAuD,CAAA,CAEvD,IAAM,EAAuC,IAAI,CAAC,AAC5C,EAAO,EAAH,EAAO,CAAC,AAClB,CAFqB,MAEd,SAAS,AAA0B,CAAyB,EACjE,GADoB,CACd,EAAyB,EAAS,KAAzB,AAA8B,CAAN,AAAO,IAAI,CAAE,CAAC,EAAK,CAAC,CA0B3D,AA1ByD,AAAG,OAE5D,EAAK,EAAD,GAAM,CAAC,EAAW,OAAF,AAAS,CAAA,AAAE,GACtB,EAAgB,SADoB,CAAC,EAAE,CACxB,OAAqB,CAAC,IAAI,CAAC,GAC/C,IAOJ,EAAK,EAAD,GAAM,CAAC,AARuD,CAAC,CACjD,AAOI,CANnB,CAAC,GAMuB,CAAA,AAAE,CAAT,EACX,EAAgB,aADsB,AACvB,CADwB,EAAE,EACP,CAAC,IAAI,CAAC,GAE7C,IAMJ,EAAK,EAAD,GAAM,CARsD,AAS9D,CAT+D,CAC7D,AASF,IAR2B,CAC1B,CAAC,CAMO,GACC,CAEV,CADA,CACgB,aAAD,UAAwB,CAAC,IAAI,CAAC,IAExC,CACT,CAAC,AACH,CASQ,AATP,AADG,MADgB,CAAC,CAF6C,CAAQ,CACrE,CAAC,EAZgE,UAwBvC,CAC7B,CAA6B,AAfqC,CAerC,CAE7B,IAAM,EAAuC,IAAI,CAAC,AAClD,OAAO,CADc,QACL,AAEd,CAA+B,CAC/B,CAAoC,EAEpC,GALsB,AAKlB,KAAK,CAAC,OAAO,CAAC,GAChB,IAAK,IAAM,AADgB,CAAC,EAAE,EACN,EAAa,CACnC,CADkB,GACZ,EAAS,CAAA,CADkB,CAClB,CAAH,CAAG,kBAAA,AAAkB,EAAC,GAClC,EAAgB,IAD2B,CAAC,CAAC,OAC9B,OAAqB,CAAC,GACtC,GAD4C,CAAC,AAEzC,CACL,AAH+C,IAGzC,EAAS,CAAA,EAAA,CAAH,CAAG,kBAAA,AAAkB,EAAC,GAClC,EAAgB,MAD6B,CAAC,CAAC,KAChC,OAAqB,CAAC,GACtC,AACD,GAF6C,CAAC,CAAC,EAExC,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,CAAC,EAAa,EAAQ,CAAC,AACrD,CADsD,AACrD,AACH,CADI,AACH,AAYO,EAd6C,EAAT,cAclB,CACxB,CAAyC,CACzC,CAAmB,CAAA,CAEnB,IAAM,EAAuC,IAAI,CAAC,AAElD,OAAO,CAFc,QAEL,AAEd,GAAG,AAFc,CAEmB,EAEpC,GAAI,KAAK,CAAC,OAAO,CAAC,CAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAC1B,IAAM,EAEoC,CAAI,CAAC,CAAC,CAAC,CAAC,AAClD,GAHgB,CAGX,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAW,MAAM,CAAE,CAAT,AAAU,EAAE,CAAE,CAC1C,IAAM,EAAW,CAAU,CAAC,CAAC,CAAC,CAAC,AAC/B,CADc,EACV,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,EAAS,IAAI,CAAC,CAAN,AAAQ,CAGrC,IAAM,EAAU,EAAgB,GAAnB,UAAkB,EAAgB,CAC7C,EAAkB,MAAM,CACxB,EAAS,IAAI,CACb,CADQ,AADS,CAInB,GAAkB,KAFN,CAEY,AADvB,CAC0B,AADzB,EAEF,CAAU,CAAC,CAAC,CAAC,CADI,AAAiB,AANhC,CAMiC,CACnB,AACjB,CACF,CAEF,IAXoD,CAW9C,AAX+C,GAW3C,CAAA,EAAA,EAAA,EAJ4B,CAAC,aAIb,AAAhB,EAAiB,GAAO,CAAH,AAE9B,CAF+B,GAEzB,EADiC,AACJ,CAAQ,CAAC,CAAC,CADF,AAC/B,AAAkC,CAAC,AADH,AAEtC,EAAU,EAAgB,GAAnB,UAAkB,EAAgB,CAC7C,EACA,CAAQ,CAAC,CAAC,CADJ,AACK,CACX,GAEF,OAFY,AAEL,CADN,CACe,AADd,KACmB,CAAC,AAAP,IAAW,CAAE,CAAC,CAAQ,CAAC,CAAC,CAAC,CAAE,EAAS,CAAQ,CAAC,CAAC,CAAC,CAAb,AAAc,CAAC,CAAC,AAClE,KAAM,GAAI,CAAA,EAAA,EAAA,sBAAA,AAAsB,EAAC,CAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAC1C,IAAM,EAAoB,CAAI,CAAC,CAAC,CAAC,CAAC,AAC5B,EAAU,EAAgB,GAAnB,GADU,OACQ,EAAgB,CAC7C,EAAkB,MAAM,CACxB,EAAkB,IAAI,CACtB,CAFiB,EAKnB,OAHY,AAEZ,AAHmB,CAElB,CAAC,AACgB,MAAM,CAAG,EACpB,EAAS,GADkB,CAAjB,AAAkB,AACf,CAAC,CAAN,GAAU,CAAE,GAC5B,AACD,OAAO,EAAS,KAAK,AAFyB,CAExB,AAFyB,AAEhC,CAFiC,GAEtB,CAAE,EAC9B,CAAC,AACH,CAFoC,AAChC,AACH,AAWO,CAb6B,CAAC,kBAaV,CAC1B,CAAoC,CACpC,CAAmB,CAAA,CAEnB,IAAM,EAAuC,IAAI,CACjD,AADkD,OAC3C,CADc,QACL,AAEd,CAA2B,EAE3B,EAJmB,CAIf,KAAK,CAAC,OAAO,CAAC,GAChB,EADqB,CAAC,CACjB,CADmB,GACf,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAM,GAAD,GAAO,CAAE,CAAC,EAAE,CAAE,CACrC,IAAM,EAAW,EAAgB,IAAnB,SAAkB,IAAkB,CAAC,IAAI,CACrD,EACA,CAAK,CAAC,CAAC,CAAC,CACR,GAEF,CAAK,CAAC,CAAC,CAAC,CAAG,AAJM,EAKlB,AAHa,CACX,CAAC,GAIJ,CAHqB,CAAC,AAGd,EAAgB,CAAnB,YAAkB,IAAkB,CAAC,IAAI,CAC5C,EACA,EACA,GADK,AAIT,OAHc,AAGP,CAFJ,AAHgB,CAKH,AAFZ,KAEiB,CAAC,AAAP,IAAW,CAAE,CAAC,EAAM,CAAC,AACtC,CADuC,AACtC,AACH,CAQQ,AARP,AAFqC,AAClC,oBASwB,CAAI,CAAsB,CAAA,CACpD,IAAM,EAAuC,IAAI,CAAC,AAC5C,EAAa,CAAA,EAAA,EAAA,CADE,EACL,UAAgB,AAAb,EAAc,GAC3B,EAAc,CADmB,CACZ,AADa,CAAC,GACf,GAAT,CAAkB,CAAC,AAC9B,EAAO,EAAH,EAAO,CAyBjB,AAzBkB,EAyBX,IAAD,IAAS,CAxBY,EAwBT,OAtBhB,CAAmB,CACnB,CAAU,EAmBV,MAEkC,CAAC,AAnBnC,EAAK,EAAD,GAAM,CAAC,EAAQ,IAAF,GAAS,CAAA,AAAE,GACnB,EAAgB,GADW,CAAC,EAAE,OACf,OAAqB,CAAC,IAAI,CAAC,GAC/C,EACA,IAOJ,EARY,AAQP,EAAD,EAPU,AAFoD,CAAC,AAGhE,AAMO,CANN,AAMO,EAAQ,IAAF,CAAO,CAAA,AAAE,GACjB,EAAgB,aAAD,AADoB,CAAC,EAAE,EACJ,CAAC,IAAI,CAAC,GAE7C,EACA,IAGG,EAAY,IAHL,AAGS,AANyC,CAI7D,AAEqB,AANyC,CAI7D,AAHA,GAKc,AAAU,CAAE,AAJD,EAIS,EACxC,CAAC,AAEH,CAAC,AAFG,AADoC,AAgBhC,GAhByC,CAAC,CAAC,UAgB5B,CACrB,CAAS,CACT,CAAmC,CACnC,CAAmB,CAAA,CAEnB,IAAM,EAAuC,IAAI,CAAC,AAClD,GAAI,KADiB,CACX,OAAY,EA3B8C,GA2BzC,CACzB,CAD2B,GACtB,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAO,IAAD,EAAO,CAAE,CAAC,EAAE,CAAE,AACtC,CAAM,CAAC,CAAC,CAAC,CAAG,EAAgB,aAAD,EAAgB,CACzC,CAAM,CAAC,CAAC,CAAC,CACT,QAAQ,AAIP,CAHoB,CAAC,CAGjB,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,MAAM,CAAC,EAAE,AACvC,AAAI,CAA2B,IAAI,CAAzB,CAAC,AAA0B,EAA1B,cAAc,CAAC,CAAkB,GAC5C,CAAM,CAAC,CAD2C,CAAC,AAC5C,cAAc,CAAC,EAAG,EAEc,EAFV,CAAC,EAEc,UAC1C,GAAG,CAAyC,EAE5C,QAAgD,IAA5C,EAAI,CAAD,EAAkD,EAA5C,AAA8C,CAA7C,OAAO,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAC,CACzC,OAAO,MAAM,EAAO,IAAD,CAAM,CAAC,IAAI,CAAE,GAElC,GAFwC,CAAC,AAEnC,CAFoC,CAEzB,CAAA,EAAA,EAAA,CAAH,aAAG,AAAc,EAAC,EAAU,EAAY,EAAO,EAArB,EAAoB,AAAK,CAAC,CAAC,AAC7D,AAD8C,EACvC,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAAC,EAAS,IAAI,CAAE,CAAP,AACpD,UAAU,CAAE,EAAS,MAAD,IAAW,CAChC,CAAC,CACF,AADG,GACC,CACF,OAAO,MAAM,EAAI,CAAD,MAAQ,CAAC,IAAI,CAI3B,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAE,GACxC,CAD4C,CAAC,IACvC,CACN,KACG,GAEL,AAAD,CAHY,EACT,AAAS,CACV,CAAC,CACK,EAAU,CAAF,AAMf,MALA,EAAK,EAAD,aAAgB,CAAC,GAAG,AACxB,CADyB,CAAC,AACrB,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC9B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,AACG,EACP,CADU,CAAC,KACF,CACR,EAAK,EAAD,CAAI,EAAE,CAAC,AACZ,AACH,CAAC,CAAC,CAGJ,OAAO,CACT,CAAC,AASO,IAVO,CAAC,YAUS,CACvB,CAA2B,CAC3B,CAAmB,CAAA,CAEnB,IAAM,EAAuC,IAAI,CAAC,AAClD,GAAI,CAA0B,IADT,AACa,CAAzB,CAAC,EAAA,cAAc,CAAC,CAAW,OAAO,EAC3C,CAAK,CAAC,CAD0C,CAC1C,AAD2C,cAC7B,CAAC,EAAG,EAExB,EAF4B,CAAC,CAEvB,EAAW,AAEY,GACpB,KAAK,CAHG,CAEsB,CAAC,EAAE,KACjB,GAAG,CAAyC,EACjE,GAAgD,SAA5C,AAAqD,EAAjD,AAAmD,CAApD,IAAM,CAAC,OAAO,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAC,CACzC,OAAO,MAAM,EAAW,IAAI,CAAC,GAAN,CAAU,EAAE,EAAG,GAExC,GAF8C,CAAC,AAEzC,CAF0C,CAE5B,CAAA,EAAA,EAAA,IAAH,UAAG,AAAc,EAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAC,AACpD,CADqD,GACxC,IAAI,GAAN,AAAW,EAAA,OAAO,CAAC,IAAI,EAAE,CACtC,EAAY,KAAK,CAAG,EAAM,CAAf,EAAc,CAAC,AAAI,CAAC,CAEjC,IAAM,EAAW,CAAA,EAAA,EAAA,CAAH,eAAG,AAAgB,EAC/B,EACA,EAAgB,CADX,YACU,IAAkB,CACjC,GAEI,EAAO,EAAH,AAAmB,GAFjB,CACX,CAAC,CACiC,CAAC,MAAR,GAAiB,CAAC,EAAS,IAAI,CAAE,CAAP,AACpD,UAAU,CAAE,EAAS,MAAD,IAAW,CAChC,CAAC,CACF,AADG,GACC,CACF,OAAO,MAAM,EAAI,CAAD,MAAQ,CAAC,IAAI,CAC3B,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAE,GACxC,CAD4C,CAAC,CAC1C,CAAG,CAAD,CAAY,IAAI,CAAC,GAAN,CAAU,EAAE,EAAG,IAElC,AAAC,EAFuC,CAAC,CACvC,CAAC,CACK,EAAU,CAMjB,AANe,MACf,EAAK,EAAD,aAAgB,CAAC,GACrB,AADwB,CAAC,CAAC,AACrB,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC9B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,AACG,EACP,CADU,CAAC,KACF,CACR,EAAK,EAAD,CAAI,EAAE,CAAC,AACZ,AACH,CAAC,CAAC,AAGJ,GAAI,AAAyB,UAAU,EAAE,OAA9B,EAAM,GAAD,IAAQ,CACtB,EAAM,GAAD,IAAQ,CAAG,EAAY,EAAM,GAAD,IAAN,AAAuC,CAAC,CAAC,KAC/D,GAAI,AAAyB,UAAU,SAA5B,EAAM,GAAD,IAAQ,CAAiB,CAC9C,IAAM,EAAa,EAAM,GAAD,GAAR,CAAgB,CAAC,AACjC,EAAM,GAAD,IAAQ,CAAG,SAAU,CAAM,EAC9B,IAAM,EAAU,EAAW,GAAd,AAMb,GANiC,CAAC,CAAR,AAAS,CACJ,UAAU,EAArC,AAAuC,OAAhC,EAAQ,KAAD,EAAQ,GACxB,EAAQ,KAAD,EAAQ,CAAG,EAChB,EAAQ,KAAD,EADoB,CACa,CACzC,CAAC,AAEG,CACT,CAAC,CAAC,AACH,IAA4C,AAF3B,CAAC,CAEZ,QAAgD,EAAE,AAA9C,OAAO,EAAM,GAAD,IAAQ,EAAE,OAAO,GACtC,EAAM,GAAD,IAAQ,CAAC,OAAO,CAAG,EACtB,EAAM,GAAD,IAD4B,AACpB,CAAC,QAAgC,CAC/C,CAAC,AAEJ,OAAO,CACT,CAAC,CACF,AAtYD,EAoYgB,AApYhB,CAoYiB,kBApYjB,CAAA,oBAsYC,aC7aE,OAAA,cAAA,CAAA,EAAA,aAAA,0DAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAAwD,GAA/C,OAAA,cAAA,CAAA,EAAA,sBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,mBAAmB,CAAA,GAC5B,AAD4B,IAC5B,EAAA,EAAA,CAAA,CAAA,QAAS,EAA+C,KAA/C,cAAA,CAAA,EAAA,iBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,cAAc,CAAA,GAAA,2ICCjB,EAAmB,MAAM,CAElB,EAAiBgd,EAAAA,GAFxB,OAEO,YAAuC,CAAC,EAAkB,IAAM,IAAI+K,EAAAA,IAAZ,eAA+B,EAAE,AA2BzF,EAAkB7e,EAAAA,WAAlB,MAAmC,CAzBtB,AAyBuB,KAxBxC,CADuB,AAE5B,IAAI,CAAE,EACN,GAsB6D,MAtBpD,GACP,AADU,EADU,CAGtB,CAAC,CACL,CAAG,EAkCU,EAAkB,CAC7B,GArCkB,CAqCd,CAAE,AArCc,uBAqCS,CAC7B,OAAO,CAAEzM,EAAAA,WAAW,CAEpB,QAAQ,CAAE,eAAgB,CAAS,EAAoB,AACtC,AAEf,EAAO,IAAD,EAAO,CAAC,AAFC,EAEC,CAAC,CAAE,IAAI,CAAE,SAAS,CAAE,QAAQ,CAAE,CAAC,OAAO,CAAA,CAAG,CAAE,CAAC,EAAkB,KAAX,AAAgB,KAAmB,CACpG,GAAI4G,EAAAA,iBAAiB,KAAOpE,EAAAA,wBAAwB,EAAE,CAAE,CACtD,IAAM,EAAQ,EAAQ,CAAhB,IAAe,AAAM,CACvB,EAAM,GAAD,CAAK,EAAE,AACdoE,EAAAA,iBAAiB,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAA,EAAA,GAAA,GAAA,CAAA,WAAA,EAAA,CAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA,AAEA,CAAA,KACA3G,CADA,CACAA,WAAA,EACAE,EAAAA,KAAA,CAAA,IAAA,CAAA,yFAAA,CAGA,AAHA,IA3BZ,QA8BY,AA9BZ,EAAjB,OAAO,AA8BsB,GA9BA,EAAtB,AA8BsB,CAAA,EAAA,MA9BW,EAAS,EAAM,CAAf,EAAc,EAAM,CAAC,EAGvD,EA4BuB,EAAA,GAAA,EA5Bd,AA4Bc,CAAA,AA3BhDqN,CADkD,CAClDA,gBAAgB,CAAC,EAAW,CAC1B,MADwB,GACf,CAAE,CACT,IAAI,CAAE,oBAAoB,CAC1B,OAAO,EAAE,CACf,CAAK,AACL,CAAG,CAAC,CAFgB,AA0B8B,CAAA,CACA,AADA,CACA,AACA,EAuBA,eAAA,EAAA,CAAA,EAAA,AACA,MAAA,EAAA,IAAA,IAAA,AADA,CACA,GAKA,IAAA,EAAAtJ,EAAAA,EAAA,EALA,CAAA,IAKA,EAAA,AACA,IACA,EADA,AACA,EAAA,AADA,CACA,CAAA,UAAA,CAAA,IAAA,IAAA,UAQA,EAPA,EAOA,AAIA,EAXA,AAOA,AAIA,CAXA,AAQA,CAGA,CAHAG,EAAAA,MAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAGA,CAAA,WAAA,CAAA,EAGA,CAAA,CAAAf,EAAAA,4BAAA,CAAA,EAAA,EAAA,CAIA,CAJA,CAIA,CAJA,CAIA,WAAA,CAAA,CACA,CAAAC,EAAAA,gCAAA,CAAA,CAAA,qBAAA,CACA,CAAAD,EAAAA,4BAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,AACA,CAAA,CApBA,AAoBA,CApBA,CAAA,CAGAwlB,EAAAA,eAAA,CAAA,EAAA,IAAA,IAAA,CAAA,MAAA,CAAA,AACA,sLC1HpB,CAC5B,SAAS,CAAE,WAAW,CACtB,SAAS,CAAE,WAAW,AACxB,CAAA,aAIyB,CACvB,UAAU,CAAE,YAAY,CACxB,eAAe,CAAE,iBAAiB,AACpC,CAAA,0ICuBO,OAAM,UAA4B1J,EAAAA,OAA5B,YAA+C,CAA4B,AAC/E,WAAW,CAAC,EAAoC,CAAA,CAAE,CAAE,CAAlC,AACvB,KAAK,CAAC,AAjBW,YAiBC,EAAE,eAAe,CAjBY,CAC3B,OAAO,CAgBU,EACvC,CAKO,GANsC,CAAC,AAMnC,EAA0C,CACnD,MAAO,CACL,IAAII,EAAAA,mCAAmC,CAAC,MAAM,CAAE,CAAC,YAAY,CAAC,CAAA,AAAE,GAAiB,IAAI,CAAC,KAAtB,CAA4B,CAAC,IAC9F,AACH,CAKQ,MAAM,CAAC,CAP+F,AAOlF,CAPmF,AAOjD,CAPkD,AAS9G,IAAM,EAAkB,IAAI,AAE5B,OAAM,EAFA,QAEoB,CAApB,CAAkC,IAAA,CAAK,AACpC,MAD8B,KACnB,CAAC,GAAG,CAAI,CAAa,CACrC,KAAK,CAAC,GAAG,GAET,CAFa,CAAC,AAEE,KAAK,CAAC,IAAI,CAAE,EAAb,GAAkB,CAAE,EAAgB,aAAD,AAAc,EAAE,CAAC,CACnE,EAAgB,KAAK,CAAC,IAAI,CAAE,EAAb,IAAmB,CAAE,EAAgB,aAAD,AAAc,EAAE,CAAC,CACpE,EAAgB,KAAK,CAAC,IAAI,CAAE,EAAb,GAAkB,CAAE,EAAgB,aAAD,AAAc,EAAE,CAAC,CACnE,EAAgB,KAAK,CAAC,IAAI,CAAE,EAAb,MAAqB,CAAE,EAAgB,aAAa,AAAd,EAAgB,CAAC,CACtE,EAAgB,KAAK,CAAC,IAAI,CAAE,EAAb,OAAsB,CAAE,EAAgB,aAAD,AAAc,EAAE,CAAC,CACvE,EAAgB,KAAK,CAAC,IAAI,CAAE,EAAb,KAAoB,CAAE,EAAgB,aAAD,AAAc,EAAE,CAAC,CACrE,EAAgB,KAAK,CAAC,IAAI,CAAE,EAAb,GAAkB,CAAE,EAAgB,aAAD,AAAc,EAAE,CAAC,CACnE,EAAgB,KAAK,CAAC,IAAI,CAAE,EAAb,EAAiB,CAAE,EAAgB,aAAD,EAAgB,EAAE,CAAC,CACpE,EAAgB,KAAK,CAAC,IAAI,CAAE,EAAb,GAAkB,CAAE,EAAgB,aAAD,UAAwB,EAAE,CAAC,AAC/E,CACN,CAEI,GAAI,CACF,EAAc,IAAA,CAAO,CACvB,CAAE,IADa,CACP,CAEN,GAHgC,GAGzB,CAAE,GAAG,CAAa,CAAE,IAAI,CAAE,CAAA,CAAa,AAChD,CAEA,OAAO,CACT,CAKQ,WANc,EAMD,EAAqD,CAExE,IAAM,EAAkB,IAAI,CAE5B,OAAO,CAFD,QAEW,CAAQ,EAAoB,AAC3C,OAAO,SAAS,AAAmC,GAAG,CAAI,EAAa,AACrE,GAAuB,KADK,GACG,EAA3B,OAAO,CAAI,CAAC,CAAC,CAAA,CAAgB,CAC/B,IAAM,EAAO,CAAI,CAAX,AAAY,CAAC,CAAC,CACpB,GAAoB,CAAC,EAAE,CAAnB,EAAK,EAAD,IAAC,CACP,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,CAAC,EAAK,CAAC,CAGrC,AAHmC,IAG7B,EAAW,EAAK,EAAD,GAAM,CAAC,CAAC,CAAC,CAC9B,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,CAC1B,IAAI,CACD,EAAS,GAAG,CAAC,AAAD,EAAJ,CAAgB,EAAgB,EAA3B,UAAuC,CAAb,AAAc,IACzD,CAAC,AACJ,CAEA,CAJ4D,EAAuC,CAAC,GAI7F,EAAS,KAAK,CAAN,AACb,IAAI,CACJ,EAAK,EAAD,CAAI,CAAC,AAAD,GAAY,EAAgB,EAA3B,UAAuC,CAAb,AAAc,IAErD,CAAC,AACH,CAAC,AACH,CAKQ,AATiD,EAAuC,CAAC,YAS1E,EAAyD,CAE9E,IAAM,EAAkB,IAAI,CAE5B,OAAO,CAFD,QAEW,CAAQ,EAAsB,AAC7C,OAAO,SAA4C,AAAnC,GAAsC,CAAI,EAAa,AACrE,IAAM,EAAW,EADW,AACN,EAAD,GAAM,CAAC,CAAC,CAAC,CAC9B,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,IACvB,EAAK,EAAD,GAAM,CAAC,CAAC,CAAE,CAAC,CAAC,IAChB,EAAS,GAAG,CAAA,AAAC,EAAL,CAAgB,EAAgB,EAA3B,UAAuC,CAAb,AAAc,IACzD,CAAC,AACJ,CACF,AADG,CACF,AACH,AAJgE,CASxD,CAT+F,CAAC,qBASzE,EAAyE,CAEtG,IAAM,EAAkB,IAAI,CAE5B,OAAO,CAFD,QAEW,CAAQ,EAA8B,AACrD,OAAO,SAAS,AAAmC,GAAG,CAAI,EAAa,AACrE,GAAI,AAAmB,KADK,GACG,SAApB,CAAI,CAAC,CAAC,CAAA,CAAgB,CAC/B,IAAM,EAAO,CAAI,CAAX,AAAY,CAAC,CAAC,CACpB,GAAoB,CAAC,EAAE,CAAnB,EAAK,EAAD,IAAC,CACP,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,CAAC,EAAK,CAAC,CAAF,AAGnC,IAAM,EAAW,EAAK,EAAD,GAAM,CAAC,CAAC,CAAC,CAC9B,OAAO,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,CAC1B,IAAI,CACD,EAAS,GAAG,CAAC,AAAD,EAAJ,CAAgB,EAAgB,EAA3B,UAAuC,CAAC,AAAd,IAC3C,CAAC,AACJ,CAEA,CAJ4D,EAA6B,CAAC,GAInF,EAAS,KAAK,CAAN,AACb,IAAI,CACJ,EAAK,EAAD,CAAI,CAAA,AAAC,GAAW,EAAgB,EAA3B,UAAuC,CAAb,AAAc,IAErD,CAAC,AACH,CACF,AADG,CAMK,AATiD,EAA6B,CAAC,SASnE,CAAC,CAAO,CAA4D,CAEtF,IAAM,EAAkB,IAAI,CAE5B,OAAO,CAFD,QAE0B,CAAC,CAAW,CAAI,EAAQ,AACtD,GAAI,CAAC,EAAgB,SAAS,EAAE,CAC9B,CADkB,AAAc,MACzB,EAAQ,KAAK,AAAN,CAAO,IAAI,CAAE,CAAC,CAAC,CAAE,EAAK,CAAC,CAAF,AAGrC,IAAM,EAAO,CAAC,CAAR,AAAS,GAAG,CAAC,IAAI,CACjB,EAAO,EAAP,AAAuB,MAAM,CAAC,MAAR,GAAiB,CAAC,GAE9C,CAFkD,CAAC,KAE5CjC,EAAAA,OAAO,CAAC,IAAI,CAACU,EAAAA,KAAK,CAAC,OAAO,CAACV,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,EAChD,EADwD,AACxC,YAAY,CAAb,AACpB,KACE,CADI,GACE,EAAS,EAAQ,EAAjB,GAAsB,AAAN,CAAO,IAAI,CAAE,CAAC,CAAC,CAAE,EAAK,CAAC,CAAF,AAC3C,GAAIpb,EAAAA,UAAU,CAAC,GACb,GADmB,CAAC,EAAE,CACf,EAAO,IAAD,AAAK,CAAA,AAAC,IACjB,IAAM,EADqB,AACd,EAAgB,aAAD,QAAsB,CAAC,GAMnD,GANyD,CAAC,GAC1D,EAAK,EAAD,WAAc,CAAC,CACjB,CAAC4mB,EAAAA,cAAc,CAAC,SAAS,CAAA,CAAG,EAC5B,CAACA,CAD+B,CAC/BA,cAAc,CAAC,SAAS,CAAA,CAAG,IAASwC,EAAAA,SAAS,CAAC,eAAA,CAAkB,EAAO,EAAP,AAAe,IAAA,CAAD,CAAS,WAAW,AACrH,CAAiB,CAAC,CACF,EAAgB,SAAS,EAAE,CAAC,CAAb,WAAyB,GAAG,GACpC,CADwC,AAEjD,CAFkD,AAEjD,CAAC,AACG,EACL,CAHe,GAGT,EAAO,EAAgB,aAAD,QAAsB,CAAC,GAMnD,GANyD,CAAC,GAC1D,EAAK,EAAD,WAAc,CAAC,CACjB,CAACxC,EAAAA,cAAc,CAAC,SAAS,CAAA,CAAG,EAC5B,CAACA,CAD+B,CAC/BA,cAAc,CAAC,SAAS,CAAA,CAAG,IAASwC,EAAAA,SAAS,CAAC,eAAA,CAAkB,EAAO,EAAQ,AAAf,IAAe,CAAD,CAAS,WAAW,AACnH,CAAe,CAAC,CACF,EAAgB,SAAS,EAAE,CAAC,CAAb,WAAyB,GAAG,GACpC,CADwC,AAEjD,CAFkD,AAGpD,CAAC,CACD,EAHiB,EAGX,EAAK,EAAD,CAAI,EAAE,CAAA,AAChB,IACE,EAAgB,GADT,SACqB,CAAb,AAAc,EAAM,EAAF,CACjC,EADwC,AACnC,CADoC,CACrC,CAAI,EAAE,AACZ,CAAC,EAGP,CACF,AADG,CAOK,YAAY,CAAC,CAAO,CAAa,CAAS,CAAc,CAAS,CAAuC,CAC9G,GAAI,CACF,IAAM,EAAS,IAAT,AAWN,GAXsB,EAAE,EAEpBppB,EAAAA,UAAU,CAAC,GACb,EAAO,CADY,CAAC,EACd,AAAK,AADW,CAEpB,IAAM,IACN,AAAC,GAAmB,EADL,AACT,AAAwB,EADb,EAInB,CAHqC,CAAC,CAAP,CAM1B,CACT,CAAA,AAAE,GAJW,CAGE,CAHA,CAIN,EAAgB,CAEvB,EAFY,IACZ,EAAU,GACJ,CACR,CAFiB,AAGnB,CAOQ,AAVY,CAAP,CACE,mBASc,CAAC,CAAM,CAAsB,CACxD,YAAkB,IAAX,EAAuBopB,EAAAA,CAAZ,CAAX,OAAgC,CAAC,UAAA,CAAaA,EAAAA,SAAS,CAAC,eAAe,AAChF,CAKQ,YAAY,CAAC,CAAI,CAAQ,CAAK,CAAiB,CACjD,KAAA,QAAiB,KAAK,EAAE,CAC1B,EAAK,EAAD,OAAU,CAAC,CACb,IAAI,CAAE9L,EAAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAM,GAAD,IACtB,AAD8B,CACvB,CAAC,CACF,EAAK,EAAD,aAAgB,CAAC,GAEzB,CACF,CAHgC,CAAC,6LCtO3B,EAAmB,MAAM,CA+BM,EAAAc,EAAAA,GA/B/B,OA+B+B,YAAA,CACA,EACA,IACA,IAAAiL,EAAAA,IAFA,eAEA,CAAA,CACA,YAAA,CAAA,IAAA,CAjCrC,AAkCqC,GADA,MAjC5B,AAAsB,CAAI,EAAc,AAC/C,IAAM,EAAannB,EAAAA,CAiCgB,SAlCP,AACC,CAAC,GAAM,CAAF,CAAC,EAAK,CAClC,EAAO,CAAU,CAAC0kB,EAAAA,cAAc,CAAC,SAAS,CAAC,CACjD,GAAI,CAAU,CAACzlB,EAAAA,4BAA4B,CAAA,EAAK,CAAC,EAC/C,EADmD,EAAE,GAIvD,EAAK,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,gCAAgC,CAAA,CAAG,qBAAqB,CACzD,CAACD,EAAAA,4BAA4B,CAAA,CAAG,CAAC,EAAA,EAAA,EAAA,GAAA,CAAA,AACA,CAAA,CAAA,CAEA,IAAA,EAAA,CAAA,CAAA,AAAAylB,EAAAA,cAAA,CAAA,SAAA,CAAA,CAKA,GAJA,QAAA,EAAA,OAAA,GACA,CADA,CACA,EAAA,QAAA,CAAA,GAGAniB,CAHA,CAAA,AAGAA,iBAAA,EAAA,GAAApE,EAAAA,wBAAA,EAAA,CAAA,CACAvC,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,IAAA,CAAA,+EAAA,CAAA,CACA,MACA,CAEA,IAAA,EAAA,CAAA,CAAAye,CAAA,CAAAA,eAAA,CAAA,CACA,EAAA,CAAA,CAAAsC,EAAA,AAAAA,wBAAA,CAAA,CACA,QAAA,EAAA,OAAA,GAAA,EAAA,MAAA,EAAA,OAAA,GACAta,EAAAA,CADA,gBACA,EAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AAEA,CAFA,CASA,EACA,CAAA,AACA,CAFA,AAEA,CAFA,AAEA,EA4BA,EAAA6F,EAAAA,WAAA,MAAA,CAAA,AAzBA,KACA,CADA,AAEA,IAAA,CAAA,EACA,GAsBA,MAtBA,GAAA,AACA,EAFA,CAGA,CAAA,CACA,CAAA,QAFA,EAAA,uDA8EA,SAAA,AACA,CAAA,CACA,CAAA,EAEA,EAAA,CAAA,EAAA,CAlDA,AAkDA,UAJA,KA9CA,CAAA,CAAA,CAAA,AAkDA,EAAA,AAlDA,AACA,CAiDA,GAjDA,EAAA+Q,EAAAA,UADA,GACA,WAAA,CAAA,EAAA,GAAA,CAAA,CAAA,AACA5W,EAAAA,iBAAA,EAAA,CAAA,wBAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CACA,MAAA,GACA,CAAA,AADA,EAgDA,AAhDA,CADA,CAiDA,CAAA,EAAA,CAtCA,AAsCA,eAtCA,CAAA,AAsCA,CAtCA,CAAA,EAAA,AACA,MAAA,IAGA,AAHA,CAEA,AAmCA,CArCA,EAEA,EAHA,EAsCA,AAnCA,CAmCA,CAAA,OAlCA,IADA,EATA,EASA,OATA,CAAA,EAAA,AAEA,OADA,AACA,EADA,GAAA,CAAA,CAAA,GACA,EADA,EADA,AAEA,GAAA,AACA,CAMA,CAAA,CACA,KACA,EADA,AACA,CADA,EAAA,AACA,CAAA,CAAA,KAAA,CAAA4G,EAAAA,gBAAA,CAAA,EAAA,KAAA,CAAA,CACA,SAAA,CAAA,CACA,IAAA,CAAA,sBAAA,CACA,OAAA,EAAA,CACA,CAAA,AACA,EAAA,CAEA,AAJA,AAEA,CAEA,EA2BAsb,EAAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,AACA,8GClInC,CADU,EAAA,EAAA,OACV,CADsB,IAAA,GAAZ,CAAY,CAAZ,YAAY,CAAA,EAAA,CAAA,EACtB,CAED,KAFC,CAAA,QAAiB,CACjB,AADiB,EACjB,UAAA,CAAA,YAAyB,CAAA,8BCNxB,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAC1B,AAD2B,EAC3B,YAAY,CAAG,oCAAoC,CAAC,mCCHrD,cAAc,6DACxB,GADU,EAAA,SACV,KADwB,GAAd,CAAc,CAAd,cAAc,CAAA,EAAA,CAAA,EACxB,CAED,OAFC,CAAA,UAAqB,CACrB,AADqB,EACrB,QAAA,CAAA,GAAA,OAAqB,CAAA,gICFvB,IAAA,EAAA,EAAiE,CAAA,CAAA,QAEjE,EAAA,EAAA,CAAA,CAAA,CAFiE,OAIjE,EAFwD,AAExD,EAAA,CAAA,CAAA,QAEa,EAAA,aAFyD,QAEpC,CAAG,CACnC,CADgC,CAEhC,EACA,EACA,CAHmB,AACC,GAOpB,AAAI,EACK,AAPQ,CAQb,EAPuB,EAI3B,CACY,CADV,CACY,GAEA,AAgBd,CAhBgB,CACV,CAAC,EAAA,cAAc,CAAC,QAAQ,CAAC,CAAE,GAAW,MAAF,EAAU,EAAE,CAChD,CAAC,EAAA,cAAc,CAAC,QAAQ,CAAC,CAAE,EAAA,YAAY,CAAC,MAAM,CAC9C,CAAC,EAAA,eAAe,CAAC,CAAE,GAAW,MAAF,EAAU,EAAE,CACzC,CACD,IAAI,CAAE,EAAQ,KAAD,YAAkB,EAAI,CAAA,SAAA,EAAY,EAAS,CAAE,CAC3D,CAAC,AAEK,CACL,GAJwD,OAI9C,CAAE,CACV,CAAC,EAAA,cAAc,CAAC,QAAQ,CAAC,CAAE,EAAM,GAAD,CAAK,EAAI,YAAY,CACrD,CAAC,EAAA,cAAc,CAAC,QAAQ,CAAC,CAAE,EAAA,YAAY,CAAC,UAAU,CACnD,CACD,IAAI,CAAE,CAAA,aAAA,EAAgB,EAAM,GAAD,CAAK,CAAA,CAAE,CACnC,CAUQ,AAVP,EAUO,cAAc,CAAG,CAC5B,CADyB,CAEzB,EADkB,EAGX,CAAC,CAAC,AAFwB,CAG/B,CAFO,EAAE,EAEJ,CAAC,CAGR,MAHe,CAAC,GAAQ,GAAF,aAAkB,CAAC,EACvC,GAAQ,GAAF,aAAkB,EAAE,QAAQ,CAAC,EAAI,CAAC,CACzC,CAAC,sGCrBS,EAAA,aAAa,CAAkB,MAAM,CAAC,mBAAmB,CAAC,CAAC,+BC5BrE,OAAA,cAAA,CAAA,EAAA,aAAA,wCAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAC1C,EAAA,EAAA,CAAA,CAAA,QAQA,EAAA,EAAiE,CAAA,CAAA,IAHzB,IAKxC,EAAA,EAA0D,CAAA,CAAA,CAFO,MAGjE,EAAA,EAAgE,CAAA,CAAA,IADN,IAE1D,EAAA,EAAA,CAAA,CAAA,CADgE,MACF,CAC9D,EAAA,EAAA,CAAA,CAAA,IAK0B,GAG1B,OAAa,UAA2B,EAAA,MAAR,aAAqD,CACnF,YAAY,EAAmC,CAAA,CAAE,CAAA,CAC/C,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAAC,AAES,GAHmC,CAG/B,AAHgC,CAAC,CAGjC,CACZ,OAAO,IAAI,EAAA,mCAAmC,CAC5C,KAAK,CACL,CAAC,YAAY,CAAC,CACd,AAAC,IACC,EADU,EAAE,AACN,EAC2B,AAFnB,QAE2B,GAAvC,AADiB,CACX,CAAC,MAAM,CAAC,WAAW,CAAC,CACtB,EAAO,IAAD,GAAQ,CAAC,AACf,MADqB,AACf,CAAC,CAAC,CACd,AAAqB,IAAI,EAArB,AAAuB,EAClB,EAFgB,CAIrB,CAAA,EAAA,EAAA,GAHa,EACK,CAAC,GAEnB,AAAS,EAAC,EAAc,SAAS,CAAC,CAAX,EAAc,CAAC,EAAE,AAC1C,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,IAAiB,CAAC,CAAC,AAE/C,IAAI,CAAC,KAAK,CACR,EAAc,SAAS,CACvB,CADa,IACR,CACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC,CAAC,AACK,EACT,CAAC,CACD,AAAC,EAFc,CAAC,CAGd,EADU,EAAE,AACN,EADQ,AAEmB,QAAQ,GADtB,AACjB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CACtB,EAAO,IAAD,GAAQ,CAAC,AACf,CACF,CAAA,GAAA,CAFuB,AACf,CAAC,AACT,CADU,QACD,AAAT,EAAU,CADW,CACG,SAAS,CAAC,CAAX,EAAc,CAAC,EAAE,AAC1C,IAAI,CAAC,OAAO,CAAC,EAAc,SAAS,CAAE,CAAZ,IAAiB,CAAC,AAEhD,CAFiD,AAEhD,CACF,AACH,CAAC,AADG,AAQI,eAAe,CAAC,CAA4C,CAAA,CAClE,IAAM,EAAS,IAAH,AAAO,CAAC,AACpB,OAAO,SAAS,AAAe,CAAiC,EAC9D,AADiB,IACb,EAMJ,OAJE,EADE,EAAmB,EADW,CAAC,GACN,CACT,CADW,CACJ,EAAV,EAAS,GADJ,aACyB,CAAC,GAE5B,EAAO,IAAD,OAAY,CAAC,CAF2B,CAAC,CAER,AAFS,GAI7D,EAAS,AAFgD,CAAC,CAAC,GAE7C,CAAC,AAAP,IAAW,AAF+B,CAE7B,CAAC,EAAgB,CAAC,AAChD,CADiD,AAChD,AACH,CADI,AACH,AASO,UAXwC,UAWpB,CAAC,CAA4B,CAAA,CACvD,EAAI,CAAD,GAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,AAEhD,IAAM,EAAS,EAAc,EAAjB,IAAuB,CAAC,AAGpC,IAH4B,AAGvB,IAAM,KADS,GAAQ,CACR,EADM,EAAO,AACT,EADa,EAAE,CACF,AADG,CAEtC,IAAM,CAD2B,CACpB,EAAU,AAAb,IAAiB,CAAC,AAGtB,EAHgB,AAGJ,EAAU,KAAb,AAAyB,CAAC,AACzC,CAD2B,GACtB,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAU,MAAM,CAAP,AAAS,CAAC,EAAE,CAAE,CACzC,IAAM,EAAkC,CAAS,CAAC,CAAC,CAAC,CAAC,AACrD,CAAS,CAAC,CAAC,CAAC,CAAG,IADO,AACH,CAAC,WAAW,CAAC,GAAkB,EAAM,EAAF,CACvD,CAD6D,AAE/D,AAED,CAJiE,CAAC,KAAd,AAI7C,CACT,CAAC,AAWO,WAZc,AAYH,CAZI,AAarB,CAAqC,CACrC,CAAiB,CACjB,CAA2B,CAAA,CAE3B,IAAM,EAAY,EAAW,EAAA,GAAd,CAAW,CAAC,CAAC,MAAa,CAAC,MAAM,CAAC,AAAE,CAAD,CAAC,YAAY,CAAC,UAAU,CAAC,MAGtC,AADrC,AACE,IAAuC,EAAxB,CAAC,EAAA,aAAa,CAAC,EAC9B,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,EAAW,IAAI,CAAC,EAAP,OAAgB,EAAE,CAAC,CAEpC,CAAP,CAGqC,aAHf,CAAC,KAGiC,GAAxD,EAAgB,WAAW,CAAC,CAAb,GAAiB,EACK,wBAAwB,EAC7D,CADA,EAAgB,WAAW,CAAC,CAAb,GAAiB,EAEhC,EAAI,CAAD,GAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,CACxD,AADyD,IAIlE,CAAe,CAAC,EAAA,OAHQ,CAAC,KAGI,CAAC,EAAG,EAEjC,EAFqC,AAEjC,CAFkC,AAEnC,GAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,AACzC,KAAK,CAAE,EAAqB,IAAc,CAE/C,AAF+B,CAAkB,EAE7C,AAAW,AAFoC,MAEzC,GAAc,AADT,EAAI,AACO,CADR,IAAM,CAAC,OAAO,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,AAErD,OAAO,EAAgB,EAAS,GAElC,CAFsC,CAAN,AAAO,CAAC,CAElC,EAAW,CAAA,CAFO,CAEP,EAAA,CAAH,oBAAG,AAAqB,EACpC,EACA,EACA,EACA,CAHO,EAKH,EAAO,CAHH,CAGA,EAFC,AAEM,CADhB,AACiB,CAJD,AAGf,KACsB,CAAC,SAAS,CAAC,EAAS,IAAI,CAAE,CAAP,AACzC,UAAU,CAAE,EAAS,MAAD,IAAW,CAChC,CAAC,CAAC,AAEG,EAAc,CAAA,EAAA,EAAA,IAAH,UAAG,AAAc,EAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,AAErD,GAAa,IAAI,GAAK,CAAX,CAAW,OAAO,CAAC,IAAI,EAAI,EAAQ,KAAD,QAAc,EAAE,CAC/D,EAAY,KAAK,CAAG,EAAQ,CAAjB,IAAgB,QAAc,CAAC,QAAQ,EAAA,CAAE,CAGtD,AAHuD,GAGjD,aAAE,CAAW,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAAC,AACrC,GACF,CAAA,EAAA,EAAA,GADa,EAAE,iBACf,AAAsB,EACpB,GAAG,CACD,CADG,CACS,EAAM,EAAF,KAAL,EACT,EACA,KADO,UACQ,aACf,EACD,CAAC,CAAA,AACJ,CAAC,CAAC,EAAE,AACE,CAHO,AAGN,EAAE,AACL,EAAI,CAAD,GAAK,CAAC,KAAK,CAAC,0CAA0C,CAAE,CAAC,CAEhE,AAFiE,CAEhE,AAFiE,EAGlE,GAIJ,CAJQ,CACL,CAAC,CAGE,EAAa,EAAI,CAAD,IAAM,CAAZ,AAAa,OAAO,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAE,GAC3D,CAD+D,CAAC,CAAC,IAC1D,EAAI,CAAD,MAAQ,CAAC,IAAI,CAAC,EAAY,KAAK,GAAP,CAAW,CAC3C,CAD6C,EACzC,CACF,OAAO,MAAM,EAAgB,EAAS,GACvC,AAAC,CAD0C,CAAN,AAAO,CAAC,GACrC,EADqB,AACX,CAAF,AAEf,MADA,EAAK,EAAD,aAAgB,CAAC,GAAG,AAClB,CADmB,CAE1B,AAF2B,CACjB,CAAC,KACF,CACR,EAAK,EAAD,CAAI,EAAE,CAAC,AACZ,AACH,CAAC,CAAC,AACJ,CADK,AACJ,CAAC,AACJ,CAAC,CACF,AAzKD,EAAA,kBAAA,CAAA,mBAyKC,cCjME,OAAA,cAAA,CAAA,EAAA,aAAA,wEAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAAuD,GAA9C,OAAA,cAAA,CAAA,EAAA,qBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,kBAAkB,CAAA,GAAA,AAC3B,IAAA,EAAA,EAAA,CAAA,CAAA,QAAS,EAA+C,KAA/C,cAAA,CAAA,EAAA,iBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,cAAc,CAAA,GAAA,AACvB,IAAA,EAAA,EAAuC,CAAA,CAAA,QAA9B,OAA8B,AAA9B,cAAA,CAAA,EAAA,eAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,YAAY,CAAA,GAAA,wJCOR,EAAgBvI,EAAAA,SAAhB,aAAsC,CACjD,MACAkL,EAAAA,QADgB,UACE,CAClB,CAAC,EAAsB,CAAA,CAAE,GAAjB,CACC,CACL,AAF0B,gBAEV,CAAE,EAAQ,KAAD,WAAC,CAC1B,WAAW,CAAC,CAAI,CAAE,CAAI,EAAE,AACtB/C,EAAAA,eAAe,CAAC,EAAM,EAAF,kBAAsB,CAAC,CAE3C,IAAM,EAAarkB,EAAAA,UAAU,CAAC,GAAM,CAAF,CAAC,EAAK,CAGlC,EAAO,CAAU,CAAjB,AAAkB,UAAU,CAAC,CAC/B,GACF,CADM,CACD,CADG,CACJ,UAAa,CAACf,EAAAA,4BAA4B,CAAE,CAAC,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAIA,IAAA,EAAA,CAAA,CAAA,UAAA,CAAA,CAOA,GANA,QAAA,EAAA,OAAA,GAGA,CAHA,CAGA,EAAA,QAAA,CAAA,GAAA,CAAA,YAAA,CAAA,CAGAsD,EAAAA,iBAAA,EAAA,GAAApE,EAAAA,wBAAA,EAAA,CAAA,CACAvC,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,IAAA,CAAA,+EAAA,CAAA,CACA,MACA,CACA,IAAA,EAAA,CAAA,CAAAye,CAAA,CAAAA,eAAA,CAAA,CAEA,EAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,KAAA,CACA,GACAhY,EAAAA,AADA,EAAA,eACA,EAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AAEA,CAFA,AAEA,CACA,CAAA,EA6CA,EAAA6F,EAAAA,UAAA,OAAA,CAzCA,AAyCA,CAzCA,EAAA,CAAA,CAAA,GAAA,CACA,CACA,AAFA,IAEA,CAuCA,AAnFlC,CA4CkC,IA5C7B,CA6C6B,SAAA,EADA,CACA,AACA,EAAA,EACA,CAAA,CACA,CAAA,EAFA,CAAA,GAAA,wDA8DA,GAAA,CACA,EAAA,CAAA,CADA,CACA,CAAA,MAAA,EAAA,CAAA,GAAA,CACA,GAAA,CADA,AAEA,MAAA,GACA,CADA,AACA,EADA,IACA,EAAA,CAOA,EAPA,IACAe,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,qBAAA,AACA,CAAA,AACA,CAAA,CAAA,CACA,CACA,CACA,CAAA,CAAA,CAFA,AAIAsb,EAAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CAAA,AACA,uCC9H/C,EAKA,EAZT,OAAA,CAOqB,EAKA,WAZrB,CAAA,EAAA,aAAA,kEAGD,CADU,EAAA,EAAA,SACV,CADwB,IAAA,GAAd,CAAc,CAAd,cAAc,CAAA,EAAA,CAAA,EACxB,CAED,WAFC,CAAA,cAA6B,CAC7B,AAD6B,EAC7B,YAAA,CAAA,cAA6B,CAI7B,AAJ6B,GAGnB,EAAA,OACV,KADsB,GAAZ,CAAY,CAAZ,YAAY,CAAA,EAAA,CAAA,EACtB,CAED,SAFC,CAAA,YAAyB,CAAA,AACzB,EAAA,UAAA,KAAA,CAAA,iBAAmC,CAAA,AAInC,GADU,EAAA,OACV,KADsB,GAAZ,CAAY,CAAZ,YAAY,CAAA,CAAA,CAAA,GACtB,AAED,UAFC,CAAA,YAAyB,CAAA,AACzB,EAAA,UAAA,KAAA,CAAA,iBAAmC,CAAA,+BCdlC,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,wCAAwC,CAAC,+BCJlE,OAAA,cAAA,CAAA,EAAA,aAAA,4CAIU,EAAA,sBAAsB,CAAkB,MAAM,CACzD,2DAA2D,CAC5D,CAAC,qJCLF,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAC1C,EAAA,EAAA,CAAA,CAAA,IAA0E,IAE7D,EAAA,gBAAgB,CAAG,AAAC,EAAJ,GAC4B,EADD,EAAE,AACpD,CAAwD,CADF,CACI,EAArD,CAAC,IAiBV,GAjBiB,CAAC,CAAO,CAAC,EAAA,sBAAsB,CAAC,CAAC,EAChD,MAAM,CAAC,cAAc,CAAC,EAAS,EAAA,GAAF,mBAAwB,CAAE,CACrD,UAAU,EAAE,EACZ,GADiB,EACZ,CAAE,EAAE,CACV,CAAC,CAAC,AAEL,CAAO,CAAC,EAAA,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,AAE1C,IAAM,EAAc,CAAO,CAAC,EAAA,KAAX,iBAAiC,CAAC,CAAC,MAAM,CAE1D,AAF2D,MAEpD,GAAG,EAAE,AACN,IAAgB,CAAO,CAAC,EAAA,GAAb,mBAAmC,CAAC,CAAC,MAAM,CACxD,CAD0D,AACnD,CAAC,EAAA,sBAAsB,CAAC,CAAC,GAAG,EAAE,CAAC,AAEtC,EAAA,IAAI,CAAC,IAAI,CAAC,gDAAgD,CAAC,AAE/D,CAFgE,AAE/D,AACH,CADI,AACH,CAAC,AAEW,EAAA,wBAAwB,CAAG,CACtC,CADmC,CAEnC,KAEI,AAHmB,GAIrB,AAHe,CAGR,CAAC,AAFV,EAAE,AAEQ,CADE,EAAE,SAGd,UAFgC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAE,EAElD,CAAC,CAAC,AAKW,EAAA,EAP6C,CAAC,CAAC,SAOlC,CAAG,AAAC,EAAJ,CACjB,CAAO,CAAC,EADoC,AACpC,EADsC,EAAE,KAIvD,aAHqC,CAAC,CAAC,MAAM,CAC3C,CAAC,EAAK,CAAF,EAAK,CAAK,CAAH,AAAE,CAAK,CAAD,MAAQ,CAAC,MAAM,CAAE,EAAE,CAAC,CAAG,GAAG,CAC5C,CAAC,6BCvCD,OAAA,cAAA,CAAA,EAAA,aAAA,6DAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAAgE,EAChE,EAAA,EAAA,CAAA,CAAA,OAA8D,CAG9D,EAAA,EAAA,CAAA,CAAA,QAOA,EAHgC,AAGhC,EAA0D,CAAA,CAAA,QAC1D,EAAA,EAAA,CAAA,CAAA,GAD0D,KAO1D,EAAA,EAAA,CAAA,CAAA,IADwC,IAExC,EAAA,EAIiB,CAAA,CAAA,QAEJ,CAPyD,CAOzD,KAFI,SAEU,CAAG,WAAW,AAGzC,CAH0C,MAG7B,UAA+B,EAAA,UAAR,SAA2B,CAC7D,YAAY,EAAgC,CAAA,CAAE,CAAA,CAC5C,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAEA,AAFC,GAD4C,CAAC,AAG1C,CAH2C,CAG3C,CACF,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,SAAS,CACT,CAAC,YAAY,CAAC,CAAA,AACd,GACS,IAAI,CAAC,KADD,CAAC,EAAE,SACe,CAAC,IAGnC,AACH,CADI,AACH,AAEO,QAN2C,CAAC,AAMnC,CANoC,AAMnC,CAAkB,CAAA,CAC9B,AAAC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAW,GAAG,CAAC,EAC5B,AAD8B,EAAP,EACnB,CAAC,KAAK,CAAC,EAAY,KAAK,CAAE,EAAT,EAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,AAEvD,AAAC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAW,MAAM,CAAC,CAAR,CAAU,AACjC,IAAI,CAAC,KAAK,CAAC,EAAY,QAAF,AAAU,CAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,AAElE,CAFmE,AAElE,AAEO,iBAAiB,CAAC,CAAsB,CAAA,CAC9C,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACU,GAAG,CAAI,EACpC,IAAM,EAAM,CAAH,CAAY,KAAK,CAAN,AAAO,IAAI,CAAE,GAEjC,CAFqC,CAAW,CAAC,IACjD,EAAgB,SAAS,CAAC,GAAG,AAAd,AACR,CACT,AAFgC,CAE/B,AACH,AAHmC,CACrB,AACV,AACH,AAEM,CAJQ,SAIE,CAAC,CAAkB,CAAE,CAAsB,CAAA,CAC1D,OAAO,SAAS,AAAiC,CAAS,EACxD,IAAM,EAAS,EAAK,CADM,CACP,AAAP,GAAa,CAAC,IAAI,CAAE,CAAC,EAAI,CAAD,AAAE,CAAC,AAEvC,OADA,IACO,CACT,CAAC,AACH,CADI,AACH,AAEM,GALO,AACG,CAAC,CADF,CAAC,IAKA,CAAC,CAAiB,CAAE,CAA0B,CAAA,KACzD,EACA,EACA,EACA,GACF,EAAc,AAJa,CAAC,CAId,AAHO,CAAC,CAEX,EAAE,EADY,CAAC,AAEf,KAAe,CAAC,eAAe,CAAC,AAC3C,EAAkB,EAAA,WAAH,CAAe,CAAC,eAAe,CAAC,AAC/C,EAAc,IAEd,EAAc,EAAA,CAFH,AAAY,CAAC,KAEb,KAAe,CAAC,UAAU,CACrC,AADsC,EACpB,EAAA,WAAH,CAAe,CAAC,UAAU,CAAC,AAC1C,EAAc,EAAW,IAAI,EAAI,CAAtB,CAAa,AAAS,cAAc,CAAC,CAElD,IAAM,EAAW,CAAA,EAAG,EAAe,CAArB,EAAqB,EAAM,EAAW,CAAE,CAAC,AACjD,EAAuB,CAC3B,CAFiC,GAAiB,AACvC,MACD,CAAE,CACV,CAAC,EAAA,eAAe,CAAC,CAAE,EAAU,MAAM,CAAP,AAAU,CAAC,CAAC,AAAE,CAAD,CAAa,GAAG,CACzD,CAAC,EADkD,AAClD,CADmD,CAAC,YACtC,CAAC,YAAY,CAAC,CAAE,EAC/B,CAAC,EAAA,MADyC,QAC3B,CAAC,YAAY,CAAC,CAAE,EAChC,CACF,CAAC,AAEF,OAJ8C,AAIvC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAU,EACzC,CAAC,AAEM,GAHgC,CAAS,CAAC,CAAC,UAG3B,CACrB,CAAiB,CACjB,CAA0B,CAAA,CAE1B,IAAM,EAAkB,IAAI,CAAC,AACvB,EAA0C,CAAC,CAAC,EAAxB,EADL,AACgB,MAAM,CAE3C,CAFoC,CAAb,OAEd,IACP,GAAI,CAAC,EAAgB,OADG,EACM,EAAE,CAC9B,CADkB,AAAc,MACxB,EAAmB,KAAK,CAAC,EAAP,EAAW,CAAE,SAAS,CAAC,CAAC,AAEpD,GAAM,CAAC,EAAW,EAAW,EAAW,CAAG,EACvC,AADY,CACX,CAAC,AADqB,CACnB,CAAC,CAD8B,AAC5B,CAAC,CAAC,CACT,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,CAFgD,AAE/C,CACP,AADQ,EACF,CAAH,QAAY,CAAC,EAA4B,CAAC,AAC7C,EAAM,CAAH,GADsB,KACV,CAAC,EAA4B,CAAC,AAC7C,EAAO,EAAH,EADqB,KACT,CAAC,EAA2B,CAAC,AAEnD,CAAA,EAAA,EAAA,EAFiC,sBAEjC,AAAwB,EAAC,EAAK,CAAF,EAE5B,IAAM,EAFiC,AAEnB,CAAA,AAFoB,CAAC,CAErB,EAAA,IAAH,UAAG,AAAc,EAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AACjD,GAAa,GAAa,GAAjB,CAAqB,GAAK,CAAX,CAAW,OAAO,CAAC,IAAI,EAAE,CACnD,EAAY,KAAK,CAAG,CAAA,EAAA,AAAT,EAAS,aAAA,AAAa,EAAC,EAAG,CAAC,CAAC,AAGzC,IAAI,EAAW,EAAE,CAAC,AAEhB,EADE,CADQ,CAEC,CAAA,GAAH,GADG,EAAE,UACF,EAAqB,EAAS,CAAE,CAAC,AAEjC,CAAA,IAF8B,SAE9B,EAAgB,EAAW,IAAI,EAAI,EAAA,AAAT,cAAuB,CAAA,CAAE,CAAC,AAEjE,IAAM,EAAO,EAAH,AAAmB,UAAU,CAAC,EAAZ,AAAuB,GACnD,EAAgB,EADiC,GAAY,AACxC,CAAC,AADwC,CAAC,IACpC,CAAC,CAAb,WAAyB,CAAE,GAC1C,IAAI,CAD8C,CAAC,AAChC,CADiC,EAGpD,EAFwB,CAAC,IAAT,EAEP,IACF,EAKH,EAAgB,EAND,GAMM,CAAC,EALP,EAAE,CAKU,CACzB,CADa,AACb,KAAA,EAAS,EAAa,EAAD,EAAK,CAAA,mBAAA,CAAqB,CAChD,CAAC,CANF,GAAe,EACf,EAAgB,AADG,CAAC,IACC,AADT,CACU,KAAK,CAAC,CAAA,AAAb,eAAa,EAAmB,EAAa,EAAD,EAAK,CAAA,CAAE,CAAC,CAAC,AACpE,EAAK,EAAD,CAAI,EAAE,CAAC,CAMb,EAAI,CAAD,aAAe,CAAC,OAAO,CAAE,EAC9B,CAAC,AAKD,OANwC,AAGxC,CAHyC,CAAC,AAGtC,CAAD,UAAY,CAAC,OAAO,CAAE,GACzB,OADmC,CAAC,CAAC,AAC5B,CAAC,EAAW,CAAG,EAAgB,KAApB,KAA8B,CAAC,EAAZ,AAAkB,EAAF,CAE/C,EAAmB,KAAK,AAFmC,CAElC,AAFmC,CAAC,CAE3C,EAAW,CAAE,SAAS,CAClD,AADmD,CAAC,AASpD,AARC,OAED,MAAM,CAAC,cAAc,CAAC,EAAmB,QAAQ,CAAE,CACjD,KAAK,AADgC,CAC9B,EAAW,MAAM,CACxB,CADiB,OACT,EAAE,EACV,GADe,SACH,EAAE,EACf,CAAC,CAAC,AAEI,AAHa,CAItB,CAAC,AAEM,SAAS,CAAC,CAAuB,CAAA,CACtC,EAJwB,CAAC,CAInB,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACU,GAAG,CAAa,EAC7C,IAAM,EAAa,CAAI,CAAC,EAAK,EAAD,EAAZ,EAAmB,CAAG,CAAC,CAAmB,CAAC,AACrD,EAAa,CAAI,CAAC,EAAK,EAAD,CAAb,GAAoB,CAAG,CAAC,CAAC,EAAI,EAAE,CAO9C,AAPyD,CAAC,MAE1D,CAAI,CAAC,EAAK,EAAD,IAAO,CAAG,CAAC,CAAC,CAAG,EAAgB,aAAD,GAAiB,CACtD,EACA,GAGK,EAAS,EAJL,GACC,AAGS,CAAN,AAFd,AAEqB,CAFpB,GAEwB,CAAE,EAC9B,CAAC,AACH,CADI,AACH,AAEM,AAJyC,CAAC,CAAC,UAI/B,CAAC,CAA0B,CAAA,CAC5C,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,UAEnB,GAAM,CAAC,EAAQ,EAAO,CAAG,CAAC,AAAb,CAAc,CAAE,AAAR,CAAS,CAAC,CAAC,AAC1B,EAAM,CAAH,QAAY,CAAC,EAAyB,CAAC,AAC1C,EAAM,CADgB,AACnB,QAAY,CAAC,EAAO,CAAC,AACxB,EAAgB,CADM,AACN,EAAA,EAAA,MAAH,UAAG,AAAgB,EAAC,GAAG,AAS1C,CAT2C,CAAC,IAEzB,UAAU,EAAzB,AAA2B,OAApB,GACT,AADY,UACH,CAAC,EAAO,CAAG,EAAgB,CAApB,QAA6B,CAC3C,EACA,CADmB,AADc,CAEpB,CACd,CAAC,AAGI,EAAiB,KAAK,CAAC,AAAP,IAAW,CAAE,SAAS,CAAC,AACjD,CADkD,AACjD,AACH,CADI,AACH,AAEM,SAAS,CAAC,CAAiB,CAAE,CAAyB,CAAA,CAC3D,OAAO,SAA0C,AAAjC,GAAoC,CAAW,EAE7D,MAF0B,CAC1B,IACO,OAAO,CAAC,CADF,EAAE,CAAC,CACI,CAAC,EAAK,CAAF,GAAM,CAAE,EAClC,CAAC,AACH,CAAC,AAFuC,AACpC,CAEL,AA3KD,AAwK2C,CAAC,CAxK5C,sBAAA,CAAA,uBA2KC,SCzME,OAAA,cAAA,CAAA,EAAA,aAAA,4GAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA2E,GAAlE,OAAA,cAAA,CAAA,EAAA,yBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,sBAAsB,CAAA,GAAA,AAAE,OAAA,cAAA,CAAA,EAAA,iBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,cAAc,CAAA,GAAA,AAC/C,IAAA,EAAA,EAAA,CAAA,CAAA,QACE,EAG8B,KAH9B,cAAA,CAAA,EAAA,iBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,cAAc,CAAA,GAAA,AACd,OAAA,cAAA,CAAA,EAAA,eAAA,CAAA,WAAA,GAAA,IAAA,WAAA,OAAA,EAAA,YAAY,CAAA,GACZ,AADY,OACZ,cAAA,CAAA,EAAA,eAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,YAAY,CAAA,GAAA,4HCHR,EAAmB,SAAS,CAErB,EAAoBvI,EAF3B,AAE2BA,aAApB,SAA0C,CAAC,EAAkB,IAAM,IAAImL,EAAAA,IAAZ,kBAAkC,EAAE,AA8B5G,SAAS,EAAuB,CAAG,CAAO,CAAG,CAAO,CAAG,CAAO,CAAI,EAAa,AAC7Ele,EAAAA,SAD6B,OACb,CAAC,EAAK,CAAF,AAClB,SAAS,CAAE,CACT,OAAO,CAAE,GACT,EADc,EACV,CAAE,yBAAyB,AACrC,CAAK,AACL,CAAG,CAAC,CACF,EAAK,EAAD,AACN,CADU,CAAC,oBAVuBf,EAAAA,iBAAiB,CAzBtB,AAyBuB,KAxB3C,CAD0B,AAE/B,IAAI,CAAE,EACN,MAsBmE,GAtB1D,GAAG,AACV,EAFoB,CAGtB,CAAC,CACL,CAAG,WAFoB,EAAE,sCAqDe,AAAC,GAAG,CAC1C,EAAI,CAAD,CAD8D,CAC1D,CAAC,GAKR,IAAM,EAASvI,EAAAA,EAAT,OAAkB,EAAE,AALI,CAM1B,AAN2B,GAO7B,EAAO,CADC,CACC,CADC,AACA,CAAJ,UAAe,CAAA,AAAE,KACrB,AAON,GARmC,MAQ1B,AAAyB,CAAI,EACpC,AADkD,IAC5C,EAAaG,EAAAA,IARS,MAQC,CAAC,EADC,CACK,CAAF,CAAC,EAAK,CAGlC,EAAO,CAAU,CAAjB,AAAkB,cAAc,CAAC,CAGvC,GAAI,CAAU,CAACf,EAAAA,4BAA4B,CAAA,EAAK,CAAC,EAC/C,EADmD,EAAE,GAIvD,EAAK,EAAD,WAAc,CAAC,CACjB,CAACC,EAAAA,gCAAgC,CAAA,CAAG,wBAAwB,CAC5D,CAACD,EAAAA,4BAA4B,CAAA,CAAG,CAAC,EAAA,EAAA,EAAA,MAAA,CAAA,AACA,CAAA,CAAA,CAGA,IAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CACA,QAAA,EAAA,OAAA,GACA,CADA,CACA,EAAA,QAAA,CAAA,EAEA,EAFA,AA1BN,CA0BM,CAzBjC,CAAC,CAAC,AAD6B,CAIjCwlB,AAJkC,EAIlCA,eAAe,CAAC,EAAI,CAAD,EAAI,CAAE,SAAS,CACpC,AADqC,iCC7ElC,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,qCAAqC,CAAC,+BCJ/D,OAAA,cAAA,CAAA,EAAA,aAAA,sDAEU,EAAA,WAAW,CAAG,MAAM,CAAC,AACrB,EAAA,kBAAkB,CAAG,CAEhC,aAAa,CAEb,kBAAkB,CAClB,kBAAkB,CAElB,kBAAkB,CACnB,CAAC,8BCXC,OAAA,cAAA,CAAA,EAAA,aAAA,2NAkBU,EAAA,YAAY,CAAG,SAAkB,CAAC,AAalC,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAW5C,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAY5C,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAYtC,EAAA,YAAY,CAAG,SAAkB,CAWjC,AAXkC,EAWlC,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,2BAA2B,CAAG,QAAiB,CAAC,+BCnH1D,OAAA,cAAA,CAAA,EAAA,aAAA,gOAGH,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAwD,CAAA,CAAA,OAM3C,EAAA,AAPyE,QAC9B,IAM/B,CAAG,AAAC,EAAJ,EACvB,EADsC,CAClC,CADoC,CAC5B,CAD8B,AAExC,GAAI,AADI,EACG,AAYb,IAZY,EAAO,EAAE,AACjB,GAAI,EAAO,IAAD,EAAO,CAAC,YAAY,CAC5B,CAD8B,MACvB,EAAO,IAAD,EAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAO,IAAD,EAAO,CAAC,CAAC,KACjD,GAAI,EAAO,IAAD,EAAO,CAAC,SAAS,CAChC,CADkC,MAC3B,EAAO,IAAD,EAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAO,IAAD,EAAO,CAAC,SAAS,CAAC,CAAC,AACrE,AAEH,GAAI,EAAO,IAAD,GAAQ,CAChB,CADkB,MACX,EAAO,IAAD,GAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAO,IAAD,GAAQ,CAAC,CAGvD,AAHwD,AAEvD,MACM,GAAG,CAAG,CAAD,iBAAmB,AACjC,CADkC,AACjC,CAED,AAFE,EAEF,0BAAA,CAAA,EAAA,OAAgB,AACd,CAAc,CACd,CAAe,SAEf,AAAM,GAAG,AAAI,CAAT,CAAC,CAAW,EAUjB,MAdyC,EAIZ,KAAK,CAAC,AAI3B,EAJ6B,OAKlC,EACA,IAAI,CADG,AACD,EAAI,CAAD,GAAK,CACd,KAAK,CAAE,EAAI,CAAD,IAAM,CAChB,IAAI,CAAE,EAAI,CAAD,GAAK,CACf,CARQ,AAQP,CACJ,CAAC,CAED,AAXc,CAAC,GAWT,EAAY,IAAI,GAAP,AAAU,CAAC,CACxB,CAAC,SAAS,CAAE,EAAA,2BAA2B,CAAC,CACxC,CAAC,IAAI,CAAE,EAAA,+BAA+B,CAAC,CACxC,CAEY,AAFX,CAAC,EAEU,SAAS,CAAI,AAAD,EAAH,CACb,EAAU,GAAG,CAAC,CADqB,EAAE,AAE5C,AADgB,CAAoB,CADU,CAInC,EAAA,EAHoB,CAAC,GAAc,CAG5B,AAH6B,CAG1B,CAAC,CAAJ,CAAc,AAAE,EAAoB,IACtD,AAAI,CADgE,AAQpE,CANM,AAAJ,CAFkD,AAAkB,CAG3D,CAH6D,AAG7D,EAAG,AADH,EACY,AAFV,AACA,CACU,CAFR,CAEY,EAAE,CAAA,CAAN,CAAU,EAAK,CAAE,CAAC,AAEhC,CAAA,AAF6B,EAE1B,EAAS,CAAA,EAAI,EAAE,CAAE,CAAR,AAAS,AAEvB,EAAE,AAGE,CAHD,CAGC,WAAW,CAAG,CAAC,CAAJ,CAAiB,CAAF,GACrC,AACiB,KAFuC,EAAE,AAU1D,CARyB,CAFmC,CAE1D,OAAO,GAAG,AACV,AAAqB,QAAQ,SAAtB,GACP,CAAC,CAAG,GACJ,CAFgB,CAEJ,EAAI,CAAD,CADF,GACJ,CAAa,CAEf,CADP,CACW,CAAD,QAAU,CAAC,CAAC,CAAE,GAAa,IAAI,CAEpC,AAFqC,CAAT,CAaxB,AAbyB,CAE1B,CAWC,AAXA,mCAWmC,CAAG,AACjD,EAD8C,EAG9C,GAAK,CAAD,CACJ,GAAI,CAEF,GALuB,EACL,EAGP,AACJ,AAJa,EAIX,CAHU,CAEJ,CAFM,EAEH,CAAC,GAAkB,CAFT,MAO9B,CAL+C,EAAE,AAFV,CAAC,EAEH,CAAC,GAAkB,CAAC,KAAK,CAAE,EAAE,CAAC,CAAC,MACrD,EACd,AAAC,KAAM,CACN,CAFsB,CAAC,KAEhB,AACR,AACH,CAAC,CAAC,AAEW,EAAA,KAJO,CAAC,yBAIuB,CAAG,AAC7C,EAD0C,EAG1C,GAAK,CAAD,CACJ,GAAI,CACF,GAJuB,EACL,EAGX,AAHa,GACD,CAER,CAFU,EAEP,CAAC,GAAkB,CAFL,EAM9B,KAJ2C,EAFJ,CAAC,EAEP,CAAC,CAAa,EAC7C,AAAD,KAAO,CACN,CAFsD,CAAC,KAEhD,AACR,AACH,CAAC,CAAC,AAEW,EAAA,KAJO,CAAC,yBAIuB,CAAG,AAC7C,EAD0C,EAG1C,GAAK,CAAD,CACJ,GAAI,CACF,GAJuB,CAIjB,CAHY,CAGL,CAHO,CAGV,EAFS,AAEF,EAFI,CAED,CAAC,GAAkB,EAFX,EAEe,AAK7C,CAL8C,AAC5C,MAHqC,CAG9B,AAH+B,CAED,CAAC,AACxB,EAAH,CAAC,CAAC,IAAS,CAAC,EAAM,EAAF,AAAI,CAAC,CAAC,CAAC,IAAC,EACnC,AAAD,KAAO,CACN,CAF4C,CAAC,KAEtC,AACR,AACH,CAAC,CAAC,AAEW,EAAA,KAJO,CAAC,UAIQ,CAAG,AAAC,EAAJ,EAC3B,GAD2C,CACrC,CAD+C,CACvC,CADyC,EAChC,AAAZ,IAAU,EAKrB,CAL8B,EAAE,KAAK,CAAC,MACtC,AAAqB,QAAQ,EAAzB,AAA2B,OAApB,EACF,CAAA,EADO,AACP,EAAA,gBAAgB,AAAhB,EAAiB,GAEnB,CACT,CAHiC,AAGhC,CAHiC,AAGhC,CAHiC,CAErB,CAAC,4BCzHZ,OAAA,cAAA,CAAA,EAAA,aAAA,yCAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAE1C,EAAA,EAA0D,CAAA,CAAA,QAC1D,EAAA,EAAA,CAAyC,CAAA,GADiB,KAE1D,EAAA,EAAA,CAAA,CAAA,QAQA,EAAA,EAAiC,CAAA,CAAA,IADO,IAGxC,EAAA,EAAA,CAAA,CAAA,CAFiC,OAWjC,EAAA,EAUmB,CAAA,CAAA,OAEb,EAbuC,AAavB,MAAM,CAAC,CAFV,GAEA,wCAAsD,CAAC,CAAC,AACrE,EAA4C,CAChD,WADkB,GACJ,CAAE,IAAI,CACpB,iBAAiB,EAAE,EACpB,AAED,CAFE,EADwB,IAGb,UAA4B,EAAA,OAAR,YAAsD,CAC7E,iBAAiB,AAAmB,AAE5C,aAAY,EAAoC,CAAA,CAAE,CAAA,CAChD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CAAC,CAAC,AAEvE,IAAI,CAAC,iBAAiB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAC9C,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CADI,AACH,AAEQ,SAAS,CAAC,EAAoC,CAAA,CAAE,CAAA,CACvD,KAAK,CAAC,SAAS,CAAC,CAAE,GAAG,CAAc,CAAE,GAAG,CAAM,CAAE,CAAC,AACnD,CADoD,AACnD,AAED,IAAI,EAAA,CACF,IAAM,EAAS,IAAH,AAAO,EAAA,mCAAmC,CACpD,EAAU,OAAD,IAAY,CACrB,EAAU,OAAD,WAAmB,CAC7B,CAAC,AAUF,OARA,EAAO,IAAD,CAAM,CAAC,IAAI,CACf,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAClD,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAClD,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAClD,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAClD,IAAI,CAAC,sCAAsC,CAAC,eAAe,CAAC,CAC7D,CAAC,AAEK,CACT,CAAC,AAEO,IAHO,CAAC,iCAG8B,CAAC,CAAgB,CAAA,CAC7D,OAAO,IAAI,EAAA,6BAA6B,CACtC,CAAA,KAAA,EAAQ,EAAQ,MAAA,IAAA,CAAY,CAC5B,EAAU,OAAD,WAAmB,CAC5B,CAAC,EAAa,IAAF,CACV,IAAI,CAAC,GADoB,EAAE,EAAE,MACX,CAChB,EAAO,IAAD,KAAU,CAChB,OAAO,CACP,IAAI,CAAC,kBAAkB,CAAC,IAEnB,GAET,CAAC,EAAa,AAFC,CAAC,EAFyB,CAI7B,AAJ8B,CAKxC,AAJC,CAAC,GAIE,CAAC,GADoB,EAAE,EAAE,AACjB,CAAC,EAAO,IAAD,KAAU,CAAE,OAAO,CAAC,CAAC,AACjC,GAGb,CAAC,AAEO,EALW,CAAC,mCAK0B,CAAC,CAAgB,CAAA,CAC7D,OAAO,IAAI,EAAA,6BAA6B,CACtC,CAAA,KAAA,EAAQ,EAAQ,MAAA,IAAA,CAAY,CAC5B,EAAU,OAAD,WAAmB,CAC5B,AAAC,IACC,EADU,EAAE,AACR,CAAC,CADS,YACI,CAChB,EAAO,IAAD,KAAU,CAChB,cAAc,CACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7B,CAAC,AACF,IAAI,CAAC,aAAa,CAChB,EAAO,IAAD,KAAU,CAChB,eAAe,CACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7B,CAAC,AACF,IAAI,CAAC,aAAa,CAChB,EAAO,IAAD,KAAU,CAChB,KAAK,CACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7B,CAAC,AACK,GAET,AAAC,GAFc,CAAC,AAGd,EADU,EACN,AADQ,CACP,CADS,MACF,CAAC,EAAO,IAAD,KAAU,CAAE,cAAc,CAAC,CAAC,AAC/C,IAAI,CAAC,OAAO,CAAC,EAAO,IAAD,KAAU,CAAE,eAAe,CAAC,CAAC,AAChD,IAAI,CAAC,OAAO,CAAC,EAAO,IAAD,KAAU,CAAE,KAAK,CAAC,CAAC,AAC/B,GAGb,CAAC,AAEO,EALW,CAAC,eAKM,CAAC,CAAsB,CAAA,CAC/C,IAAM,EAAkB,IAAI,CAAC,AAE7B,OAAO,CAFc,QAEK,AAAV,CAA2C,EACzD,MADuB,CAChB,SAA2C,AAAlC,CAA4C,EAC1D,IAAM,EAAS,IAAH,AAAO,CAAC,MAAM,CAAC,CADS,KACH,CAAC,AAE5B,EAAQ,EAAM,CAAT,EAAQ,aAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAG5C,AAH6C,EAGjC,GAAO,EAAF,EAAR,EAAgB,CAAC,AAG1B,EAAmB,GAAQ,GAAF,OAAY,CAArB,CAAuB,gBAAgB,CAAC,AACxD,EACJ,EADQ,CACA,GAAF,OAAY,EAAE,QAAQ,EAC5B,GAAQ,GAAF,OAAY,EAAE,QAAQ,EAC5B,EAAM,GAAD,gCAAoC,CAAC,GACtC,aADsD,CAAC,CAAC,CACtD,CAAc,CAAE,CAAG,EAAgB,SAAS,EAAE,CAAC,AAEjD,CAFoC,CAEP,CACjC,OADc,OACA,CAAE,EACjB,CAAC,AACI,EACJ,GAAQ,GAAF,CADO,CAFgB,KAGX,EAAE,QAAQ,GAAK,UAAU,CAAC,AAAE,CAAD,OAAS,CAAC,CAAC,IAAC,EAkC3D,GAhCI,EAAgB,EAFgD,CAAC,UAElD,IAAkB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,AAC5D,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,CAAC,EAAA,IADqB,UACP,CAAC,CAAE,EAAM,GAAD,MAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CACzD,CAAC,EAAA,iBAAiB,CAAC,CAAE,EACrB,CAAC,EADyB,AACzB,iBAAiB,CAAC,CAAE,EACrB,CAAC,EAAA,IAD6B,QACjB,CAAC,CAAE,GAAQ,GAAF,OAAY,EAAE,IAAI,CACxC,CAAC,EAAA,YAAY,CAAC,CAAE,EAEhB,CAAC,CAFmB,CAEnB,kBAAkB,CAAC,CAClB,GAAQ,GAAF,OAAY,EAAE,IAAI,EACxB,EAAM,GAAD,4BAAgC,CAAC,GACxC,CAAC,EAAA,UADuD,CAAC,OACtC,CAAC,CAClB,GAAQ,GAAF,OAAY,EAAE,IAAI,EACxB,EAAM,GAAD,4BAAgC,CAAC,GACxC,CAAC,EAAA,UADuD,CAAC,OACtC,CAAC,CAAE,EACvB,CAAC,CAAC,AAED,EAAgB,GAHe,UAGhB,IAAkB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,AAC/D,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,CAAC,EAAA,IADqB,eACF,CAAC,CAAE,EAAM,GAAD,MAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAC9D,CAAC,EAAA,uBAAuB,CAAC,CAAE,EAC3B,CAAC,EAAA,AAD+B,sBACT,CAAC,CAAE,EAC1B,CAAC,EAAA,IADkC,aACjB,CAAC,CAAE,EAErB,CAAC,CAFwB,CAExB,mBAAmB,CAAC,CACnB,GAAQ,GAAF,OAAY,EAAE,IAAI,EACxB,EAAM,GAAD,4BAAgC,CAAC,GACxC,CAAC,EAAA,UADuD,CAAC,KACxC,CAAC,CAChB,GAAQ,GAAF,OAAY,EAAE,IAAI,EACxB,EAAM,GAAD,4BAAgC,CAAC,GACzC,CAAC,CAAC,AAED,EAAgB,CAElB,IAAM,EAAY,EALwC,AAKlC,CALmC,EAG3C,AAEO,EAAR,MAAoB,CAAC,GAAO,EAAF,CAAK,CAAE,GAC5C,EAAgB,SAD0C,CAAC,CAAC,EAC7C,IAAkB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,AAC/D,EAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,CAAA,CAAS,CAAC,AAEzC,EAAgB,aAAD,IAAkB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CAC5D,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,CAAA,CAAS,CAAC,AAE7C,AAED,IAAM,EACJ,IAAI,CAAC,MADY,CACL,CAAC,EAAc,EAAI,EAAI,CAAD,MAAR,AAAgB,CAAC,MAAM,EAAE,CAAC,AAChD,EAAa,EAAI,CAAD,IAAM,CAAC,AAAb,OAAoB,CAAC,GAC/B,EACJ,GAAc,EAAI,CAAD,EAF+B,CAAC,CAAC,AAExC,AAAa,CAAC,EADL,gBACuB,CAAC,EAAW,QAAD,GAAY,EAAE,CAAC,CAAC,AACvE,GAAI,EAAgB,OAAO,CAAC,KAAT,YAA0B,EAAI,CAAC,EAChD,OAAO,EAAS,IAAI,AAD2C,CAC1C,CAD4C,AAClD,GAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,AAG3C,IAAM,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,EAAM,GAAD,IAAQ,CAAC,EAAM,EAAF,AAAa,GAC/B,CACE,CAFkC,CAAC,CAAR,CAEvB,CAAE,EAAI,CAAD,OAAS,CAAC,MAAM,YACzB,EACD,CACD,GAEI,EAAc,EAJN,AAIU,CAAD,IAAM,CAAC,AAFf,CACd,AACgB,CADf,KACmC,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAE,GAE5D,CAFgE,CAAC,CAAC,IAE3D,EAAI,CAAD,MAAQ,CACf,IAAI,CAAC,EAAa,EAAU,IAAI,EAAN,AAAQ,CAAlB,CAAqB,SAAS,CAAC,CAC/C,IAAI,CAAE,AAAD,IACJ,EADoB,AACf,EADiB,AAClB,CAAI,CADgB,CACd,CAAC,AACJ,IAER,EAFc,CAAC,EAEV,CAAC,AAAC,GAAQ,CAId,CAJgB,EAAE,CAIZ,EADY,AACA,EADM,GAAD,EACR,EAAY,KADS,CAAC,IAAI,CAAC,CAAC,AACf,EAAM,GAAD,AAAI,CAAE,EAAM,GAAD,KAAS,EAAI,EAAE,CAAC,CAAC,AACvD,EAAU,EAAI,CAAD,EAAN,IAAc,CAAC,OAAO,CAAC,EAAY,KAAK,CAAE,CAAV,CAAY,CAAC,CAAC,AACrD,EAAM,CAAH,CAAS,GAAD,uBAA2B,CAAC,EAAK,CAAF,CAIhD,KAJyD,CAAC,CAAC,AAC3D,EAAK,EAAD,aAAgB,CAAC,GAAG,AACxB,CADyB,CAAC,AACrB,EAAD,OAAU,CAAC,CAAE,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,SAAE,CAAO,CAAE,CAAC,CAAC,AAC5D,EAAK,CADmD,CACpD,CAAI,EAAE,CAAC,AACL,CACR,CAAC,CACL,AADM,AADS,CAGjB,AAHkB,AACT,AACN,CAEL,AADG,AADG,CACF,AACH,AAEO,YAAY,CAAC,CAAkB,CAAA,CACrC,OAAO,SAAS,EACd,IAAM,EAAU,EAAS,GAAZ,EAAiB,CAAN,AAAO,IAAI,CAAE,CADD,QACU,CAAC,CAAC,AAOhD,OAHA,MAAM,CAAC,cAAc,CAAC,EAAS,EAAe,CAC5C,EAD2B,GACtB,CAAE,EAAI,CAAD,CADgC,KACxB,CAAC,MAAM,EAAE,CAC5B,CAAC,CAAC,AACI,CACT,CAAC,AACH,CADI,AACH,AAED,IAJkB,CAAC,QAIN,CAAC,CAAQ,CAAE,CAAkB,CAAE,CAA+B,CAAA,CACrE,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,CAAG,CAAC,EAAW,CAAC,EAC5B,AAD8B,IAC1B,CAAC,AADqB,OACd,CAAC,EAAK,CAAF,EAElB,IAAI,CAAC,EAFyB,CAAC,CAAC,CAEtB,CAAC,EAAK,CAAF,CAAc,EAC9B,CAAC,CACF,AApND,EAAA,CAkNuC,CAAT,AAAU,CAAC,gBAlNzC,CAAA,oBAoNC,aC/PE,OAAA,cAAA,CAAA,EAAA,aAAA,yCAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAAwD,GAA/C,OAAA,cAAA,CAAA,EAAA,sBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,mBAAmB,CAAA,GAAA,6HCXtB,EAAmB,MAAM,CAElB,EAAiBvI,EAAAA,GAFxB,OAEO,YAAuC,CAClD,EACA,IAAM,IAAIoL,EAAAA,IADM,eACa,CAAC,CAAE,iBAAiB,CAAE,EAAA,CAAM,CAAN,AAAO,EA0C/C,EAAkBlf,EAAAA,WAAlB,MAAmC,CAvCtB,AAuCuB,KAtC/C,CAD8B,GAC1B,EAEJ,KAoC+D,CApCxD,CACL,IAAI,CAAE,EACN,SAAS,GAAG,AACV,EAL8B,AAGV,EAEd,EAAkB,IACxB,EAAiCmf,EAAAA,KAD3B,CAAgC,EAAE,aACc,CAAC,EACzD,CAAC,CADC,AAGF,KAAK,CAAC,CAAM,EAAE,AACZ,EAJsE,CAAC,CAItC,IAC/B,EAAO,EAAE,CAAC,CAAJ,UAAe,CAAE,AAAF,IACnB,CAF0B,EAEpB,CADuB,KACrB,CAAA,CAAK,CAAIvnB,EAAAA,UAAU,CAAC,GAGxB,CAH4B,CAAC,YAG7B,GAAkB,GACpB,CADwB,CACnB,CADqB,CACtB,UAAa,CAACd,EAAAA,gCAAgC,CAAE,mBAAmB,CAAC,AAE5E,CAAC,CAAC,CAEN,CAAC,AACL,CACA,AADG,CACF,CAAA,uECrBE,OAAA,cAAA,CAAA,EAAA,aAAA,4KAkBU,EAAA,YAAY,CAAG,SAAkB,CAAC,AAWlC,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAY5C,EAAA,iBAAiB,CAAG,cAAuB,CAAC,AAS5C,EAAA,cAAc,CAAG,WAAoB,CAAC,AAYtC,EAAA,YAAY,CAAG,SAAkB,CAAC,AAWlC,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAS9C,EAAA,qBAAqB,CAAG,OAAgB,CAAC,+BC7FnD,OAAA,cAAA,CAAA,EAAA,aAAA,wCAQH,EAAA,WAAA,CAAA,EAAA,OAAgB,AACd,CAAiB,CACjB,CAAsB,CACtB,CAAuB,AAkBxB,CAjBC,CAAiC,IAJR,IAMzB,AAAkB,cAAc,GAA5B,GAAgC,GAAiB,EAAE,AAC9C,CADI,AACJ,CADgD,CAC7C,EAAS,CAAA,EAD4B,AACxB,EAAa,CAAA,CAAjB,CAAqB,EAAE,CAAE,CAE5B,AAF6B,IAAT,WAEL,EAAE,CAA/B,EAEE,AAAJ,EACS,AADH,CACG,CADD,CACI,EAHD,AAGU,CAAA,EAAI,EAAG,CAAA,CAAP,CAAW,EAAE,CAAE,CAAC,AAE9B,CAAA,EAAG,EAAS,CAAA,EAAI,EAAG,CAAE,AAAF,CAAP,AAAU,AAG/B,AAAI,EACK,AADH,CACG,CADD,CACI,EAAS,CAAA,EAAI,EAAE,CAAE,CAAC,AAEvB,AAFc,CAEd,EAAG,EAAS,CAAE,AACvB,CADwB,AACvB,CAEY,EAAA,EAHQ,EAGJ,CAAG,AAAC,EAAY,AAAhB,EAAkB,AACjC,EADmC,CAOnC,CANI,GAAS,EACb,CADU,EAAQ,CAAC,EACZ,CAAC,GAAG,IAAe,CACxB,CAD0B,EAAE,CACxB,EAEJ,IAFU,EAAE,CACZ,EAAS,GACF,CAFY,AACb,AAAO,CACJ,AADK,CACJ,EAAG,EACf,CACF,AADG,CACF,AAFoB,AACjB,CACF,AAFoB,CAAC,8BCpCpB,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAC1B,AAD2B,EAC3B,YAAY,CAAG,wCAAwC,CAAC,+BCJlE,OAAA,cAAA,CAAA,EAAA,aAAA,2DAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAC1C,EAAA,EAAsC,CAAA,CAAA,QACtC,EAAA,EAAA,CAAA,CADsC,AACtC,QAOA,EAAA,EAAA,CAAA,CAAA,IADwC,IAUxC,EAAA,EASmB,CAAA,CAAA,QAGnB,CAb6C,CAa7C,EAA4C,CAAA,CAAA,GAHzB,KAKnB,EAAA,EAA0D,CAAA,CAAA,CAFd,OAItC,EAAmB,MAAM,CAC7B,AAHwD,OAEpC,iDACoC,CACzD,CAAC,AAEW,EAAA,YAAY,CAAG,MAAM,CAChC,6DAA6D,CAC9D,CAAC,AAEF,IAAM,EAAkB,CACtB,YADmB,GACJ,CACf,SAAS,CACT,cAAc,CACd,cAAc,CACd,SAAS,CACT,SAAS,CACV,CAAC,AAcF,SAAS,EAAoC,CAAoB,EAC/D,MADkB,AACZ,CAAC,cAAc,CAAC,IAAI,CAAE,EAAkB,CAC5C,KAAK,CAAE,EACP,KAF0C,GAElC,EADW,AACT,EACX,CAAC,AACJ,CAFkB,AACb,AACJ,AAED,MAAa,UAA+B,EAAA,UAAR,SAAyD,CAC3F,MAAM,CAAU,SAAS,CAAG,SAAS,AAAC,CAC9B,oBAAwC,AACxC,AADoB,mBACD,CAAoB,AAE/C,aAAY,EAAuC,CAAA,CAAE,CAAA,CACnD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,GACrC,GAD2C,CACvC,AADwC,CACvC,AADwC,2BACb,EAAE,AACpC,CADqC,AACpC,AAGO,2BAA2B,EAAA,CACjC,IAAI,CAAC,oBAAoB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EACjD,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,CAAC,AACF,IAAI,CAAC,mBAAmB,CAAG,GAAA,EAAA,uBAAA,AAAuB,EAChD,UAAU,CACV,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CADI,AACH,AAES,IAAI,EAAA,CACZ,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,EAAuB,SAAS,CAChC,CAAC,SADqB,KACP,CAAC,CAChB,AAAC,IACC,IAAM,EAA2B,EAAc,CADnB,EAAE,EAAE,KACyB,CAAX,AAAY,IAAjC,KAA0C,CAAC,AACpE,IAAK,IAAM,KAAU,CAAJ,CACX,CAAA,EAAA,EAAA,QAD8B,CAAE,AAChC,AAAS,EAAC,CAAmB,CAAC,EAAO,CAAC,EAAE,AAC1C,CADsC,GAClC,CAAC,OAAO,CAAC,EAAqB,GAEpC,GAF0C,CAEtC,AAFuC,CAEtC,AAFuC,KAElC,CACR,EACA,CAJgC,CAKhC,IADM,AACF,CAAC,UAFc,CAEH,CAAC,EAAQ,IAAF,AAS3B,MALI,CAAA,EAJsC,AAItC,CAJ8C,CAI9C,AAHD,CAAC,QAGA,AAAS,EAAC,EAAoB,OAAO,CAAC,EAAE,AAC1C,IAAI,CAAC,EAD0B,KACnB,CAAC,EAAqB,SAAS,CAAC,CAE9C,AAF+C,IAE3C,CAAC,CAF6B,IAExB,CAAC,EAAqB,SAAS,CAAE,IAAI,CAAC,EAAlB,WAA+B,CAAC,CAAC,AAExD,CACT,CAAC,CACD,AAAC,IACC,MAHoB,CAAC,CAGC,CADM,EAAE,CAC1B,CAD4B,CACC,GAAF,IAAS,AACxC,IADiB,AACX,EAA2B,EAAc,UAAU,CAAC,AAAZ,IAArB,KAA0C,CAAC,AACpE,IAAK,IAAM,KAAU,CAAJ,CACf,IAAI,CAAC,OAAO,CADsB,AACrB,CADuB,CACF,GAEpC,GAF0C,CAAC,AAEvC,CAAC,AAFuC,OAEhC,CAAC,CAFqB,CAEA,SAAS,CAAC,AAC9C,CAD+C,AAC9C,CACF,CACF,AACH,CADI,AACH,AAEO,GANgC,UAMnB,CAAC,CAAyB,CAAA,CAC7C,OAAO,SAAS,EAUd,OATA,EAAY,GADgB,CACZ,CAAC,IAAI,AAAV,CAAY,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,AAGvD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAE,GACtC,IAAI,CAAC,EAAE,CAD0C,AACzC,CAD0C,CAAC,cAC3B,CAAE,GAE1B,IAAI,CAAC,GAFgC,CAAC,AAE7B,CAF8B,AAE7B,KAAK,CAAE,GAAG,EAAE,AACpB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAE,EACxC,CAAC,CAAC,CACK,AADJ,EACa,IAFmC,CAE9B,AAF+B,CAErC,AAAO,AAF+B,IAE3B,CAAE,SAA6B,CAAC,AAC5D,CAD6D,AAC5D,AACH,CAAC,AADG,AAGI,iBAAiB,CAAC,CAAc,CAAA,CACtC,IAAM,EAAE,AAAG,EAAK,EAAD,SAAY,EAAE,CAAC,AAC9B,MAAO,CAAA,GAAA,EAAM,EAAE,AAAC,OAAO,CAAA,CAAA,EAAI,EAAE,AAAC,MAAM,CAAA,EAAA,EAAK,MAAM,CAAC,EAAE,AAAC,UAAU,EAAI,EAAI,CAAD,SAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA,CAAE,AACtG,CADuG,AACtG,AAMO,kBAAkB,CACxB,CAAe,CACf,CAA6B,CAC7B,CAAmB,CAAA,CAEnB,OAAO,IAAI,OAAO,CAAA,AAAC,IACjB,GADwB,AACpB,CAEF,AAHuB,EAAE,EAGnB,EAAM,CAAH,GAAO,EAAc,OAAO,CAAC,AAD1B,GACiB,AAAY,0CADgB,CAAC,AACf,AAAC,IAAS,AACnD,EADqD,CAEvD,CAFyD,AAExD,CAAC,CAAC,AACH,CAFS,EAAE,CAAC,EAEN,CAAC,cAAc,CAAC,EAAK,CAAF,CAAE,YAAY,CAAE,CAAE,KAAK,EAAE,CAAI,CAAE,CAAC,CACzD,AAD0D,AAAJ,IAChD,EAAM,CAAH,KAAS,CAAC,IAAI,CAAC,EAAa,MAAM,CAAC,CAAC,AAC7C,CADmC,CAC/B,CAAD,WAAa,CACd,2BAA2B,CAC1B,EAAsB,KAAK,CAAC,KAAP,IAAgB,CACtC,EACA,CADG,AACD,MAAM,CAAE,EAAI,CAAD,KAAO,CAAE,CACvB,CAED,AAFE,EAES,OAAO,CAAC,AAAT,GAAY,AACvB,AAAC,CADuB,CAAC,GAClB,CACN,IACD,AACH,CAAC,CAAC,AACJ,CAHa,AAER,AACJ,AAEO,EALO,CAAC,aAKQ,CAAC,CAAiB,CAAA,CACxC,MACE,AAAc,SAAL,AAAc,MACT,cAAc,GAA5B,GACc,MADL,SACoB,GAA7B,GACc,MADL,GACc,CACxB,CAAC,CADA,CAEJ,CAAC,AAEO,OAJK,IAIM,CAAC,CAAiB,CAAE,CAA6B,CAAA,CAClE,OAAO,AAAC,IACN,IAAM,EAAa,IAAI,AADc,CACb,AAExB,CAHwD,EAAE,AAC1C,MAEP,EAAsC,CAAsB,EAEnE,GAAK,GAAiB,CAAC,CAFH,CAEG,CAAH,WAAe,CAAC,CAClC,CADoC,MAC7B,EAAe,KAAK,CAAC,IAAI,CAAE,CAAb,QAA0C,CAAC,CAAC,AAGnE,GAAI,CAAC,CAAC,OAAO,MAAY,EAAA,YAAA,AAAY,CAAC,CAIpC,CAJsC,MACtC,EAAW,KAAK,CAAC,EAAP,EAAW,CACnB,CAAA,iCAAA,EAAoC,EAAS,OAAA,mBAAA,CAA4B,CAC1E,CAAC,AACK,EAAe,KAAK,CAAC,IAAI,CAAE,CAAb,QAA0C,CAAC,CAAC,AAEnE,IAAI,EAAY,CAAC,CAAC,AACd,EAAiB,CAAC,CAAC,AACjB,CAFO,CAEmB,GAAG,CAAG,CAAD,GADnB,AAEZ,EAAqB,GAAG,CAAG,CAAD,GADoB,AAE9C,EAFgD,AAEjC,CAFQ,AAA0B,EACb,CACjB,CAAC,AADkB,CAApB,AAAqB,CACF,CACrC,AADsC,EAG1C,AACiC,AAJjB,CACT,GAAG,EAAC,KAD6B,CAIK,CAH3B,CAAC,CAGjB,CAHmB,CAGX,KAAD,aAAmB,EAC1B,EAAQ,KAAD,WAAiB,EAAE,IAAI,EAAE,KAAK,CAE9B,CADP,CACe,KAAD,WAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,AAG5C,AADM,EAAQ,KACP,AADM,CACL,CAAC,WADuB,CAG7B,AAH8B,EAGD,CAAA,CAAE,CAAC,AAClC,EAAW,GADC,KACF,WAAoB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CACzD,CAAU,CAAC,EAAA,cAAc,CAAC,CAAG,EAAA,qBAAqB,CAAC,AACnD,CAAU,CAAC,EAAA,YAAY,CAAC,CAAG,EAE3B,CAAU,CAAC,EAAA,MAF4B,CAAC,KAEjB,CAAC,CACtB,IAAI,CAAC,MAAM,EAAE,QAAQ,EACrB,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,AACjD,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,EAChC,CADmC,AACzB,CAD0B,AACzB,EAAA,iBAAiB,CAAC,CAAG,EAAQ,KAAD,AAAM,CAAC,CAE5C,EAAW,QAAD,WAAoB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CAI5D,CAAU,CAAC,EAAA,iBAAiB,CAAC,CAAG,EAChC,CAAU,CAAC,EAAA,MADiC,CAAC,YACf,CAAC,CAC7B,EAAA,yCAAyC,CAAC,AAC5C,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,EACjC,CADoC,AAC1B,CAD2B,AAC1B,EAAA,uBAAuB,CAAC,CAAG,EAAQ,KAAK,AAAN,CAAO,CAOlD,EAAW,QAAD,YAAqB,CAAG,EAAA,gBAAgB,CAAC,GAAG,EAAE,CAC1D,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,AACrD,CAAU,CAAC,EAAA,kBAAkB,CAAC,CAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAE1D,EAAW,QAAD,YAAqB,CAAG,EAAA,gBAAgB,CAAC,MAAM,EAAE,CAC7D,CAAU,CAAC,EAAA,mBAAmB,CAAC,CAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,AACtD,CAAU,CAAC,EAAA,gBAAgB,CAAC,CAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAE5D,IAAM,EAAO,EAAW,AAAd,MAAoB,CAAC,CAAR,QAAiB,CACtC,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,EAAW,EAAc,EAAK,CAAF,CAAU,CAA7B,IAA4B,AAAM,CAApB,AAAqB,CACxD,CACE,IAAI,CAAE,EAAI,CAAD,OAAS,CAAC,MAAM,YACzB,EACD,CACF,CAAC,AAEI,EAAU,CAAA,EAAA,CAJF,CAIE,AAAH,IAAG,AAAI,EAAC,AAAC,GAAS,CAC7B,CAD+B,CACvB,CADyB,IAC1B,SAAe,CAAC,MAAM,CAAE,GAC/B,EAAQ,KAAD,SAAe,CAAC,GAD+B,CAAC,CAAC,OACrB,CAAE,GACrC,EAAQ,KAAD,SAAe,CAAC,GADqC,CAAC,CAAC,KAC7B,CAAE,GACnC,EAAQ,KAAD,QAD8C,CAAC,AAChC,CAAC,AADgC,OACzB,CAAE,GAChC,IADuC,AACnC,CAAC,AADmC,CAAC,aACtB,CAAC,KAAK,CAAE,GAE3B,EAAK,EAAD,AAF8B,CAAC,CAAC,QAEnB,CAAC,yBAAyB,CAAE,GAC7C,EAAK,EAAD,EADkD,CAAC,CAAC,MACvC,CAAC,yBAAyB,CAAE,GACzC,GAAG,AACL,EADO,AACF,EAAD,IAFqD,CAAC,CAAC,CAE7C,CAAC,CACb,IAAI,CAAE,EAAI,CAAD,aAAe,CAAC,KAAK,CAC9B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,AAGL,EAAK,EAAD,CAAI,EAAE,AACZ,CADa,AACZ,CAAC,CAAC,AAEH,EAAQ,EAAE,CAAC,EAAJ,IAAU,CAAE,GACnB,EAAQ,EAAE,CAAC,EAAJ,UAAgB,CAAE,EADiB,CAAC,AAE3C,CAF4C,CAEpC,EAAE,CAAC,EAAJ,QAAc,CAAE,GACvB,CAFgD,CAAC,AAEzC,CAF0C,GAEtC,CAAC,AAAN,OAAa,CADqB,AACnB,CADoB,CAAC,CAE3C,IAD6B,AACzB,CAD0B,AACzB,CAD0B,CACxB,CAAC,KAAK,CAAE,GAEiB,IAFV,CAAC,CAAC,IAEkB,EAAtC,AAAwC,OAAjC,EAAQ,KAAD,GAAS,CACzB,EAAW,KAAK,CACd,EACA,AAFQ,KACD,KACG,CACV,EAAW,QAAD,WAAoB,CAAC,IAGjC,EAAW,CAH6B,CAAC,CACxC,CAAC,CAEc,CAAC,EAAP,GAAY,CAAC,4CAA4C,CAAC,CAAC,AAGvE,IAAM,EAAiB,GAAG,CACjB,CADmB,CACf,CAAD,KADQ,CACA,CAAC,IAAI,CACrB,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAI,CAAD,MAAQ,CAAC,MAAM,EAAE,CAAE,GACxC,CAD4C,CAAC,AAE7C,IAAI,EACJ,EAAG,IAFW,KAEF,CACb,CAAC,AAQJ,GAAI,CAAC,CALO,AAEV,EAFqB,CAElB,OAFiB,CAAU,AAKf,EALiB,CAAC,AAE7B,6BAA6B,EACjC,EAAW,QAAD,QAAiB,CAAC,EAAS,CAAC,CAAC,AAEtB,OAAO,IAE1B,IAAM,EAAc,EAAW,EAFS,EAAE,CAAC,EAE1B,CAAa,SAAkB,CAAC,GAE5C,CAFgD,CAAC,AAGnD,CAHoD,OAExC,UACM,CAAC,IAAI,CAAE,EAAe,GACxC,OAAO,CAD+B,AAAa,AAC3C,CAD4C,CAEzD,CAAC,AAOD,OALA,IAH2B,CAAC,CAGtB,AAHuB,CAGtB,cAAc,CAAC,EAAe,QAAQ,CAAE,CAC7C,CADiC,IAC5B,CAAE,EAAe,MAAM,CAC5B,KADqB,GACb,EAAE,EACX,CAAC,CAAC,AAEI,CAHU,AAInB,CAAC,AACH,CADI,AACH,AAEO,UAJgB,CAAC,QAIE,CAAC,CAAiB,CAAA,CAC3C,OAAO,AAAC,GACC,SAEL,CAA6B,CAC7B,CAAiB,CACjB,AAL8B,CAKpB,CALsB,CAQhC,CARkC,MAOlC,EAAQ,GAAG,AACJ,CADK,CAAL,AAAM,AACW,KAAK,CAAC,IAAI,CAAE,GAAb,MAAsB,CAAC,AAChD,CADiD,AAChD,AAEL,CAFM,AAEL,CAhRU,EAAA,sBAAA,CAAA,uBAAsB,UCxEhC,OAAA,cAAA,CAAA,EAAA,aAAA,4CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA2D,GAAlD,OAAA,cAAA,CAAA,EAAA,yBAAA,CAAA,WAAA,GAAA,IAAA,WAAA,OAAA,EAAA,sBAAsB,CAAA,GAAA,6HCXzB,EAA8B,IAAI,GAAG,CAAC,CAC1C,eAAe,CACf,AAFI,SAEK,CACT,cAAc,CACd,cAAc,CACd,SAAS,CACT,SAAS,CACV,CAAC,CAEI,EAAmB,SAAS,CAErB,EAAoBgd,EAF3B,AAE2BA,aAApB,SAA0C,CAAC,EAAkB,IAAM,IAAIsL,EAAAA,IAAZ,kBAAkC,CAAC,CAAA,CAAE,CAAC,EA6CjG,EAAqBpf,EAAAA,cAArB,GAAsC,CAAC,AA3CvB,KAC3B,CADiC,GAC7B,EAEJ,MAAO,CACL,CAuCmE,GAvC/D,CAAE,EACN,SAAS,GAAG,AACV,EAL8B,AAGV,EAEd,EAAkB,IACxB,EAAiCmf,EAAAA,KAD3B,IAAmC,EAAE,UACW,CAAC,EACzD,CAAC,CADC,AAGF,KAAK,CAAC,CAAM,EAAE,AACZ,EAJsE,CAAC,CAItC,IAC/B,EAAO,EAAE,CAAC,CAAJ,UAAe,CAAA,AAAE,IACrB,CAF0B,EAEpB,CADuB,YACrB,CAAW,MAAE,CAAA,CAAA,CAASvnB,EAAAA,UAAU,CAAC,GAEzC,CAF6C,CAAC,CAE1C,CAAC,GAAqC,OAAO,CAA5C,CAA8C,CAA/B,CAAI,CAAC,WAAW,CAAA,CAClC,OAGF,IAAM,EAAY,EAAY,KAAxB,AAA6B,CAAC,GAAP,AAAU,CAAC,CAAC,CAAC,CAAA,EAAK,EAAE,AAC7C,GAA4B,GAAG,CAAC,IAClC,EAAK,EAAD,CADuC,CAAC,EAAE,MAC7B,CAACd,CADW,CACXA,gCAAgC,CAAE,sBAAsB,CAAC,AAE/E,CAAC,CAAC,CAEN,CAAC,AACL,CACA,AADG,CACF,CAAA,6EC/BE,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,6CAA6C,CAAC,+BCJvE,OAAA,cAAA,CAAA,EAAA,aAAA,gDAEH,IAAA,EAAA,EAAA,CAAA,CAAA,MAA0C,EAC1C,EAAA,EAAA,CAAA,CAAA,QAUA,EAAA,EAA0D,CAAA,CAAA,IALlB,IAOlC,EAAc,OAFsC,EAEzC,KAAiB,AAElC,CAFmC,MAEtB,UAAmC,EAAA,cAAR,KAA2B,CAEzD,WAAW,EAAG,CAAM,AAE5B,IAF2B,SAEf,EAAgC,CAAA,CAAE,CAAA,CAC5C,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAAC,AAED,GAH6C,CAAC,AAG1C,CAH2C,CAG3C,CACF,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,EACA,CAAC,QADU,IACE,CAAC,CAAA,AACd,IACE,IAAM,EAAY,EAAc,AAAtB,CADC,CAAC,EACwB,AADtB,CACuB,AASrC,MAT+B,AAC3B,GAAA,EAAA,SAAA,AAAS,EAAC,EAAK,EAAD,OAAU,CAAC,OAAO,CAAC,EAAE,AACrC,IAAI,CAAC,OAAO,CAAC,EAAK,EAAD,OAAU,CAAE,SAAS,CAAC,CAAC,AAE1C,IAAI,CAAC,KAAK,CACR,EAAK,EAAD,OAAU,CACd,SAAS,CACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAChC,CACM,AADL,CAEJ,CAAC,CAAA,AACD,IACE,IAAM,EAHc,AAGF,CAHG,CAGX,AAAsB,CADrB,CAAC,EAAE,AACsB,CAAC,AAErC,MAF+B,CAC/B,IAAI,CAAC,OAAO,CAAC,EAAK,EAAD,OAAU,CAAE,SAAS,CAAC,CAAC,AACjC,CACT,CAAC,CACF,CACD,IAAI,EAAA,GAHoB,CAAC,+BAGc,CACrC,EACA,CAAC,QADU,IACE,CAAC,CAAA,AACd,IACE,IAAM,EAAY,EAAR,AAAsB,CADrB,CAAC,EAAE,AACsB,CAAC,AASrC,MAT+B,AAC3B,GAAA,EAAA,SAAS,AAAT,EAAU,EAAK,EAAD,OAAU,CAAC,OAAO,CAAC,EAAE,AACrC,IAAI,CAAC,OAAO,CAAC,EAAK,EAAD,OAAU,CAAE,SAAS,CAAC,CAAC,AAE1C,IAAI,CAAC,KAAK,CACR,EAAK,EAAD,OAAU,CACd,SAAS,CACT,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7C,CAAC,AACK,CACT,CAAC,CAAA,AACD,IACE,IAAM,EAAY,AAHE,CAAC,CAGX,AAAsB,CADrB,CAAC,EAAE,AACsB,CAAC,AAErC,MAF+B,CAC/B,IAAI,CAAC,OAAO,CAAC,EAAK,EAAD,OAAU,CAAE,SAAS,CAAC,CAAC,AACjC,CACT,CAAC,CACF,CACD,IAAI,EAAA,GAHoB,CAAC,+BAGc,CACrC,EACA,CAAC,QADU,MACI,CAAC,CAAA,AAChB,IACE,IAAI,CAAC,IADM,CAAC,EAAE,IACE,EAAG,EACf,GAAA,AADoB,CAAC,CACrB,SAAA,AAAS,EAAC,EAAc,IAAI,CAAC,EAAE,AACjC,IADyB,AACrB,CAAC,OAAO,CAAC,EAAe,MAAM,CAAC,CAAC,AAEtC,GAF4B,CAExB,CAAC,KAAK,CAAC,EAAe,MAAM,CAAE,IAAI,AAAd,CAAe,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,AACzD,GACR,AACD,IAGE,IAAI,CAAC,CALe,CAAC,EAEV,CAAC,EAAE,IAGE,EAAG,EACZ,EADgB,CAAC,CAKhC,AADG,CAAC,AACH,AAEO,QANoB,CAAC,MAMN,CAAC,CAA8C,CAAA,CACpE,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACL,AAEd,GAAG,CAAW,EAEd,IAAM,EAAS,EAAI,CAAD,AAJW,CAIjB,KAAc,CAAC,MAAM,EAAE,CAAC,AAC9B,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,sBAAsB,CACtB,CAAA,CAAE,CACF,GAGF,GAHQ,CACP,CAAC,EAEK,EAAI,CAAD,MAAQ,CAAC,IAAI,CAAC,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAQ,GAAO,CAAT,AAAM,CAAC,CAAK,CACnD,CADqD,CAC5C,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,GAAM,CAAF,CAAC,EAAK,CAAA,AACtC,IACE,CADG,CACE,AADD,EAAE,AACF,CAAI,EAAE,CAAC,AACJ,GACR,AACD,EAFc,CAAC,AAEZ,CAAC,AAGF,EAHI,IACJ,EAAK,EAAD,aAAgB,CAAC,GAAG,AACxB,CADyB,CAAC,AACrB,EAAD,CAAI,EAAE,CAAC,AACL,CACR,CAAC,CADU,AAEZ,CAFa,AAEZ,AAEN,CAAC,AACH,CAEQ,AAFP,AADG,YAGgB,CAAC,CAAa,CAAA,CAChC,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACL,EACd,IAAM,EAAO,EAAS,AAAZ,EADgB,GACC,CAAC,AAAP,IAAW,CAAE,SAAS,CAAC,CAAC,AAM7C,OALA,EAAgB,KAAK,CACnB,EACA,EADI,GADS,IAEJ,CACT,EAAgB,aAAD,eAA6B,CAAC,IAAI,CAAC,IAE7C,CACT,CAAC,AACH,CADI,AACH,AAEO,CAJO,CAAC,MAFuD,CAAC,CACnE,CAAC,iBAK8B,CAAC,CAAa,CAAA,CAChD,IAAM,EAAkB,IAAI,CAAC,AAC7B,OAAO,CADc,QACL,AAEd,CAAY,CACZ,CAAgB,EAGhB,GAAI,EAAgB,KANS,MAME,CAC7B,CADiB,AAAc,MACxB,EAAS,IAAI,CAAC,CAAN,GAAU,CAAE,EAAE,AAAE,GAEjC,IAAM,CAFmC,CAE1B,AAF2B,CAAC,CAExB,CAAD,CAAN,KAAc,CAAC,MAAM,EAAE,CAAC,AAC9B,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,sBAAsB,CACtB,CAAA,CAAE,CACF,GAGF,GAHQ,CACP,CAAC,EAEK,EAAI,CAAD,MAAQ,CAAC,IAAI,CAAC,EAAI,CAAD,IAAM,CAAC,OAAO,CAAC,EAAQ,GAAO,CAAT,AAAM,CAAC,CAAK,EAAE,AAC5D,EAAS,IAAI,CACX,CADM,GACF,CACJ,CAAC,EAAc,CAAF,IAIX,CAJ4B,EAAE,AAC9B,EADgC,AAC3B,EAAD,CAAI,EAAE,CAAC,AAGP,EACF,AADI,EAAE,KACC,EAAE,AAAC,EAAK,CAAF,CAEjB,CAAC,CACD,EAHyB,AAK7B,CAL8B,AAK7B,CAL8B,AAK7B,AACJ,CADK,AAEP,AADG,CACF,AADG,CAEL,AArJD,CAgJkB,CAhJlB,AAiJS,CAAC,yBAjJV,CAAA,2BAqJC,MCtKE,OAAA,cAAA,CAAA,EAAA,aAAA,gDAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA+D,GAAtD,OAAA,cAAA,CAAA,EAAA,6BAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,0BAA0B,CAAA,GAAA,6HCX7B,EAAmB,aAAa,CAEzB,AAFP,EAE+Bgd,EAAAA,iBAAxB,KAA8C,CAAC,EAAkB,IAAM,IAAIuL,EAAAA,IAAZ,sBAAsC,CAAC,CAAA,CAAE,CAAC,2BA8ChFrf,EAAAA,iBAAiB,CA5CtB,AA4CuB,KA3CtD,CADqC,GACjC,EAEJ,MAAO,CACL,IAAI,CAAE,AAwCqE,EAvC3E,SAAS,GAAG,AACV,EAL8B,AAGV,EAEd,EAAkB,IACxB,EAAiCmf,EAAAA,KAD3B,QAAuC,EAAE,MACO,CAAC,EACzD,CAAC,CADC,AAGF,KAAK,CAAC,CAAM,EAAE,AACZ,EAJsE,CAAC,CAItC,IAC/B,EAAO,EAAE,CAAC,CAAJ,UAAe,CAAE,AAAF,IAGnB,CAJ0B,GACG,AAGvB,EAFWvnB,AAEO,EAFPA,MAEe,IAFL,CAAC,AAEtB,GAA2B,CAFD,CAAC,SAEW,AAMxC,EAFkB,eAED,EAAE,IAFD,GAApB,GAAiE,yBAApB,CAAoB,CAAsB,EAGvF,EAAK,EAAD,OAHyC,GAG5B,CAACd,EAAAA,gCAAgC,CAAE,2BAA2B,CAAC,AAEpF,CAAC,CAAC,CAEN,CAAC,AACL,CAAG,AACH,CAAC,CAAA,0DCvBE,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,2CAA2C,CAAC,8BCJrE,OAAA,cAAA,CAAA,EAAA,aAAA,+CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,QAKA,EAAA,EAAA,CAAA,CAAA,IADwC,EAOZ,EAG5B,EAAA,EAA0D,CAAA,CAAA,QAGpD,EAAc,OAHsC,EAGzC,GAAe,CAchC,AAdiC,SAcxB,EAAqB,CAAW,EACvC,MAAsC,QAAQ,CADnB,EACpB,CAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAC7B,EAAO,IAAD,GAAQ,CAAC,AACf,CACN,CAAC,AAED,IAJ2B,AACf,CAAC,CAAC,AAGD,UAAkC,CAHtB,CAGsB,aAAR,MAA4D,CACjG,YAAY,EAA0C,CAAA,CAAE,CAAA,CACtD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,EACvC,CAAC,AAES,GAHmC,CAAC,AAGhC,CAHiC,CAGjC,CACZ,MAAO,CACL,IAAI,EAAA,mCAAmC,CACrC,EACA,CAAC,QADU,IACE,CAAC,CAAA,AACd,IACE,EADI,CAAC,CACC,CADC,CACY,EAAqB,GAOxC,GAPgB,AAA8B,CAAC,CAAC,EAChD,IAAI,CAAC,GADkC,OACxB,CAAC,EAAW,QAAD,CAAU,CAAC,CAAC,AACtC,IAAI,CAAC,cAAc,CAAC,EAAW,QAAD,CAAU,CAAC,CAAC,AAC1C,IAAI,CAAC,WAAW,CAAC,EAAW,QAAD,CAAU,CAAC,CACtC,AADuC,IACnC,CAAC,WAAW,CAAC,EAAW,QAAD,CAAU,CAAC,CAAC,AACvC,IAAI,CAAC,cAAc,CAAC,EAAW,QAAD,CAAU,CAAC,CAAC,AAEnC,IAAI,CAAC,sBAAsB,CAAC,EACrC,CAAC,CAAA,AACD,IACE,EADI,AAFyC,CAAC,AAEzC,CAF0C,AAGzC,CADC,CACY,EAAqB,GACxC,CAAC,EAD6C,AAA9B,CAA+B,CAAC,EACzC,CAAE,OAD8B,GACpB,CAAE,OAAO,CAAE,OAAO,CAAE,UAAU,CAAC,CAAC,OAAO,CAAA,AAAC,IACrD,CAAA,CAD2D,CAC3D,AAD4D,EAAE,AAC9D,SAAA,AAAS,EAAC,EAAW,QAAD,CAAU,CAAC,EAAO,CAAC,EAAE,AAC3C,CADuC,GACnC,CAAC,OAAO,CAAC,EAAW,QAAD,CAAU,CAAE,EAEvC,CAAC,CAAC,AACJ,CADK,AACJ,CACF,AAJgD,CAKlD,AACH,AANsD,CAKlD,AACH,AAEO,AAR+C,iBAQ9B,EAAA,CACvB,IAAM,EAAS,IAAI,AAAP,CAAQ,SAAS,EAAE,CAAC,AAEhC,OAAO,KADmD,IAApC,EAAA,EACF,CAD+C,CAAC,CAAzC,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,EAC7B,CAAC,EAAO,IAAD,aACjC,AADmD,CAAC,AACnD,AAEO,WAAW,CACjB,CAA8B,CAC9B,CAAyE,CAAA,CAEzE,IAAM,EAAiB,EAAW,IAAI,CAAC,GAAN,EAAb,EACpB,MAAI,EACK,CAAA,EAAG,EAAW,CAAA,EAAI,EAAS,CAAE,CADpB,AACqB,AAGhC,CAAA,CAHgB,CAGb,EAAW,AAJE,AACa,CAGf,EAAI,EAAS,CAAA,EAAI,CAAjB,AAJW,CAIoB,CAAE,AACxD,CADoC,AAAqB,AACxD,AAEO,CAP8B,SAIgB,KAJF,CAO5B,CACtB,CAAqD,CAAA,CAErD,AAVuD,IAUjD,AAVqD,EAUnC,AAVqC,IAUjC,CAAC,AAE7B,OAAO,CAFc,QAEL,AAEd,GAAG,CAA0D,EAE7D,GACE,CAAC,EAAgB,MALa,GAKJ,EAAE,EAAZ,AAChB,CAAC,EAAgB,aAAD,IAAkB,EAAE,CAEpC,CADA,MACO,EAAY,IAAI,CAAC,IAAN,AAAU,EAAE,EAAG,GAGnC,CAHuC,CAAC,CAAC,CAGnC,EAAS,EAAA,EAAH,KAAU,CAAC,MAAM,EAAE,CAAC,AAC1B,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,EAAgB,WAAW,CAAC,CAAb,GAAiB,CAAE,OAAO,CAAC,CAC1C,CAAE,KAAK,CAAE,IAAI,CAAC,MAAM,EAAE,SAA+B,CAAE,CACvD,GAGF,GAHQ,CACP,CAAC,EAEK,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAQ,GAAO,CAAT,AAAM,CAAC,CAAK,CAC1C,CAD4C,CAChC,KAAK,CAAC,GAAP,CAAW,CAAE,GAC7B,CADiC,CAAwB,EACrD,CAAA,AAAC,IACJ,CADS,CAAC,AACL,EADO,AACR,CAAI,EAAE,CAAC,AACJ,IAER,CAFa,CAAC,GAET,CAAA,AAAC,GAAG,CAOR,AAPS,EAAE,IACX,EAAK,EAAD,aAAgB,CAAC,GAAG,AACxB,CADyB,CAAC,AACrB,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,AACH,EAAK,EAAD,CAAI,EAAE,CACJ,AADK,CAEb,CAAC,CAAC,AADS,CACR,AAET,AAHkB,CAIpB,AADG,CAAC,AACH,AAEO,sBAAsB,CAC5B,CAA8B,CAAA,CAE9B,IAAM,EAAkB,IAAI,CAAC,AACvB,EAAY,EAAY,IADT,CACN,IAAc,AAAU,CAAC,AAExC,GAAI,CAAC,EAAgB,SAAS,EAAE,CAC9B,CADkB,AAAc,MACzB,EAGT,SAHoB,AAGX,CAHY,CAKnB,GAAG,CAA+C,EAclD,MAVuB,GANC,OAMS,EAA7B,AAA+B,OAAxB,CAAI,CAAC,CAAC,CAAC,GACZ,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,CAAI,CAAC,CAAC,CAAC,CAAC,EAAE,AACtB,EAAgB,OAAO,CAAC,EAAM,CAAC,CAAC,AAAJ,CAAK,AAGnC,AAHiB,CAGb,CAAC,CAAC,CAAC,CAAG,EAAgB,aAAD,GAAiB,CACxC,CAAI,CAAC,CAAC,CAAC,CACoC,CAAC,CAGzC,EAAY,KAAK,CAAC,GAAP,CAAW,CAAE,EACjC,CAAC,AAGD,CAJqC,CAAC,CAAC,IAGvC,EAAkB,SAAS,CAAG,EACvB,CACT,CAAC,AAEO,CAJW,IAAsB,CAAC,IAIxB,CAAC,CAAkC,CAAA,CAC/C,CAAA,AAJoD,CAAC,CAIrD,EAAA,SAAA,AAAS,EAAC,EAAM,GAAD,CAAK,CAAC,EAAE,AACzB,IAAI,CAAC,OAAO,CAAC,EAAO,GAAF,GAAQ,CAAC,CAG7B,AAH8B,IAG1B,CAAC,KAAK,CAAC,EAAO,GAAF,GAAQ,CAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,AAC5D,CAD6D,AAC5D,AAEO,eAAe,CAAC,CAAgB,CAAA,CACtC,IAAM,EAAkB,IAAI,CAAC,AAE7B,OAAO,CAFc,QAEL,AAEd,GAAG,CAAiC,EAEpC,GAAI,CAAC,CAJoB,CAIJ,aAAD,IAAkB,EAAE,CACtC,CADwC,MACjC,EAAS,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,GAGhC,CAHoC,CAAC,CAAC,CAGhC,EAAS,EAAA,EAAH,KAAU,CAAC,MAAM,EAAE,CAAC,AAC1B,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,EAAgB,WAAW,CAAC,CAAb,GAAiB,CAAE,MAAM,CAAC,CACzC,CAAE,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,CAAE,CACzB,GAGF,GAHQ,CACP,CAAC,EAEK,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAQ,GAAO,CAAT,AAAM,CAAC,CAAK,EAAE,AACpD,IAAM,EAAS,EACZ,EADS,EACL,CAAC,CADe,GACX,EAAE,EAAG,GACd,CADkB,CAAC,EACf,CAAA,AAAC,IACJ,CADS,CAAC,AACL,EADO,AACR,CAAI,EAAE,CAAC,AACJ,IAER,CAFa,CAAC,GAET,CAAC,AAAD,GAAI,CAOR,AAPS,EAAE,IACX,EAAK,EAAD,aAAgB,CAAC,GAAG,AACxB,CADyB,CAAC,AACrB,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,EAAI,CAAD,MAAQ,CACrB,CAAC,CAAC,AACH,EAAK,EAAD,CAAI,EAAE,CACJ,AADK,CAEb,CAAC,CAAC,AADS,CACR,AAYL,AAbc,OAKV,KAAO,CAAD,KAAO,EAAE,CACb,AAAC,KAAO,CAAD,KAAO,CAAC,SAAS,EAAE,CAC5B,KAAO,CAAD,KAAO,CAAC,SAAS,CAAG,EAAE,AAAF,CAAG,CAG/B,AAPa,IAA0B,CAOhC,AAPiC,CAOlC,KAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAE,OAAO,CAAE,EAAK,EAAD,SAAY,EAAE,CAAU,CAAC,CAAC,CAGjE,CACT,CAAC,CAAC,AACJ,CADK,AACJ,AACH,CADI,AACH,AAEO,CALW,CAAC,YAKE,CAAC,CAAkC,CAAA,CACnD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAM,GAAD,KAAS,CAAC,EAAE,AAC7B,IAAI,CAAC,OAAO,CAAC,EAAO,GAAF,OAAY,CAAC,CAAC,AAGlC,IAAI,CAAC,KAAK,CAAC,EAAO,GAAF,OAAY,CAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,AACpE,CADqE,AACpE,AAEO,mBAAmB,CAAC,CAAoB,CAAA,CAC9C,IAAM,EAAkB,IAAI,CAAC,AAE7B,OAAO,CAFc,QAEL,AAEd,GAAG,CAAiC,EAEpC,GAAI,CAAC,EAAgB,GAJQ,UAIT,IAAkB,EAAE,CACtC,CADwC,MACjC,EAAS,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,GAGhC,CAHoC,CAAC,CAAC,CAGhC,EAAS,EAAA,EAAH,KAAU,CAAC,MAAM,EAAE,CACzB,AAD0B,EACnB,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,EAAgB,WAAW,CAAC,CAAb,GAAiB,CAAE,UAAU,CAAC,CAC7C,CAAE,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,CAAE,CACzB,GAGF,GAHQ,CACP,CAAC,EAEK,EAAA,OAAO,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAQ,GAAO,CAAT,AAAM,CAAC,CAAK,CAG3C,CAH6C,CAGpC,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,GAAM,CAAF,CAAC,EAAK,CAAC,AAAD,IACtC,CAD4C,CACvC,AADwC,EACzC,AAD2C,CACvC,EAAE,CAAC,AACJ,IAGb,CAHkB,AAGjB,AACH,CAJqB,AAGjB,AACH,AAEO,WAAW,CAAC,CAAkC,CAAA,CAChD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAM,GAAD,EAAM,CAAC,EAAE,AAC1B,IAAI,CAAC,OAAO,CAAC,EAAO,GAAF,IAAS,CAAC,CAAC,AAG/B,IAAI,CAAC,KAAK,CAAC,EAAO,GAAF,IAAS,CAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,AAD8D,CAC7D,AAEO,AAHuD,gBAGvC,CAAC,CAAiB,CAAA,CACxC,IAAM,EAAkB,IAAI,CAAC,AAE7B,OAAO,CAFc,QAEL,AAEd,GAAG,CAAiC,EAEpC,GAAI,CAAC,EAJqB,AAIL,aAAD,IAAkB,EAAE,CACtC,CADwC,MACjC,EAAS,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,GAGhC,CAHoC,CAAC,CAAC,CAGhC,EAAS,EAAA,EAAH,KAAU,CAAC,MAAM,EAAE,CACzB,AAD0B,EACnB,EAAgB,AAAnB,MAAyB,CAAC,MAAR,GAAiB,CAC3C,EAAgB,WAAW,CAAC,CAAb,GAAiB,CAAE,OAAO,CAAC,CAC1C,CAAE,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,CAAE,CACzB,GAGI,EAAM,CAHJ,AAGC,CAFR,AAEW,CAFV,MAEiB,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAQ,GAAO,CAAH,AAAN,CAAO,CAAK,CAChD,CADkD,CACzC,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,IAKhC,AALoC,CAAC,CAAC,KAGtC,EAAK,EAAD,CAAI,EAAE,CAAC,AAEJ,CACT,CAAC,AACH,CAFc,AACV,AACH,AAEO,CAJO,UAII,CAAC,CAAkC,CAAA,CAChD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAM,GAAD,EAAM,CAAC,EAAE,AAC1B,IAAI,CAAC,OAAO,CAAC,EAAO,GAAF,IAAS,CAAC,CAG9B,AAH+B,IAG3B,CAAC,KAAK,CAAC,EAAO,GAAF,IAAS,CAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,AAC9D,CAD+D,AAC9D,AAEO,gBAAgB,CAAC,CAAiB,CAAA,CACxC,IAAM,EAAkB,IAAI,CAAC,AAE7B,OAAO,CAFc,QAEL,AAEd,GAAG,CAAiC,EAEpC,GAAI,CAAC,EAJqB,AAIL,aAAD,IAAkB,EAAE,CACtC,CADwC,MACjC,EAAS,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,GAGhC,CAHoC,CAAC,CAAC,CAGhC,EAAS,EAAA,EAAH,KAAU,CAAC,MAAM,EAAE,CAAC,AAC1B,EAAO,EAAH,AAAmB,MAAM,CAAC,MAAR,GAAiB,CAC3C,EAAgB,WAAW,CAAC,CAAb,GAAiB,CAAE,OAAO,CAAC,CAC1C,CAAE,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,CAAE,CACzB,GAGI,EAAM,CAHJ,AAGC,CAFR,AAEW,CAFV,MAEiB,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAQ,GAAO,CAAT,AAAM,CAAC,CAAK,CAChD,CADkD,CACzC,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,IAAI,AAKpC,CALqC,CAAC,KAGtC,EAAK,EAAD,CAAI,EAAE,CAAC,AAEJ,CACT,CAAC,AACH,CADI,AACH,AAEO,AAJM,CAAC,aAIO,CAAC,CAAkC,CAAA,CACnD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAM,GAAD,KAAS,CAAC,EAAE,AAC7B,IAAI,CAAC,OAAO,CAAC,EAAO,GAAF,OAAY,CAAC,CAAC,AAGlC,IAAI,CAAC,KAAK,CAAC,EAAO,GAAF,OAAY,CAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,AACpE,CADqE,AACpE,AAEO,mBAAmB,CAAC,CAAoB,CAAA,CAC9C,IAAM,EAAkB,IAAI,CAAC,AAE7B,OAAO,CAFc,QAEL,AAEd,GAAG,CAAiC,EAEpC,GAAI,CAAC,EAAgB,GAJQ,UAIT,IAAkB,EAAE,CACtC,CADwC,MACjC,EAAS,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,GAGhC,CAHoC,CAAC,CAAC,CAGhC,EAAS,EAAA,EAAH,KAAU,CAAC,MAAM,EAAE,CAAC,AAC1B,EAAO,EAAgB,AAAnB,MAAyB,CAAC,MAAR,GAAiB,CAC3C,EAAgB,WAAW,CAAC,CAAb,GAAiB,CAAE,UAAU,CAAC,CAC7C,CAAE,IAAI,CAAE,EAAA,QAAQ,CAAC,MAAM,CAAE,CACzB,GAGI,EAAM,CAHJ,AAGC,CAFR,AAEW,CAFV,MAEiB,CAAC,IAAI,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAQ,GAAO,CAAT,AAAM,CAAC,CAAK,CAChD,CADkD,CACzC,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,IAAI,AAKpC,CALqC,CAAC,KAGtC,EAAK,EAAD,CAAI,EAAE,CAAC,AAEJ,CACT,CACF,AADG,CACF,AADG,AADU,CAGf,AAvUD,AAoUiB,EApUjB,yBAAA,CAAA,0BAuUC,OC9WE,OAAA,cAAA,CAAA,EAAA,aAAA,+CAEH,IAAA,EAAA,EAAA,CAAA,CAAA,KAA8D,EAArD,OAAA,cAAA,CAAA,EAAA,4BAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,yBAAyB,CAAA,GAAA,6HCN5B,EAAmB,YAAY,CAExB,CAFP,CAE8Bgd,EAAAA,gBAAvB,MAA6C,CACxD,EACA,IACE,IAAIwL,EAAAA,IAFU,qBAEe,CAAC,CAC5B,iBAAiB,EAAE,CACzB,CAAK,CAAC,CADuB,yBAuDQtf,EAAAA,iBAAiB,CAnDtB,AAmDuB,KAlDrD,CADoC,GAChC,EAEJ,MAAO,CACL,IAAI,AA+CqE,CA/CnE,EACN,SAAS,GAAG,AACV,EAFoB,AAHU,EAKxB,EAAkB,IACxB,EAAiCmf,EAAAA,KAD3B,OAAsC,EAAE,OACQ,CAAC,EACzD,CAAC,CADC,AAGF,KAAK,CAAC,CAAM,EAAE,AAEZ,EALsE,CAAC,CAKtC,KAC/B,CADqC,CAC9B,EAAE,CAAC,CAAJ,UAAe,CAAA,AAAE,IACrB,AAF0B,IAEpB,AADuB,EACZvnB,EAAAA,IAAX,MAAqB,CAAC,GACxB,CAD4B,CAAC,AACpB,MAAD,KAAY,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,AAClD,EAAK,EAAD,UAAa,CAACd,EAAAA,gCAAgC,CAAE,yBAAyB,CAAC,EAOrD,iBAAA,GAAzB,EAAS,MAAD,KAAC,EACgB,qBAAA,GAAzB,EAAS,MAAD,KAAC,EACgB,qBAAzB,EAAS,MAAD,KAAC,AAAgB,GACzB,AACA,EAAK,EAAD,UAAa,CAACD,EAAAA,4BAA4B,CAAE,WAAW,CAAC,AAIhE,CAAC,CAAC,AACJ,CAAC,CAAC,AACJ,CAAC,AACL,CAAG,AACH,CAAC,CAAA,wDCzCE,OAAA,cAAA,CAAA,EAAA,aAAA,gHAmBU,EAAA,wBAAwB,CAAG,qBAA8B,CAAC,AAS1D,EAAA,qBAAqB,CAAG,kBAA2B,CAAC,AAWpD,EAAA,kBAAkB,CAAG,eAAwB,CAAC,AAW9C,EAAA,kBAAkB,CAAG,eAAwB,CAAC,+BClDxD,OAAA,cAAA,CAAA,EAAA,aAAA,uVAgBU,EAAA,0BAA0B,CAAG,uBAAgC,CAAC,AAO9D,EAAA,+BAA+B,CAC1C,4BAAqC,CAAC,AAO3B,EAAA,mCAAmC,CAC9C,gCAAyC,CAAC,AAO/B,EAAA,iCAAiC,CAAG,SAAkB,CAAC,AAOvD,EAAA,uBAAuB,CAAG,oBAA6B,CAAC,AAOxD,EAAA,+BAA+B,CAC1C,4BAAqC,CAO1B,AAP2B,EAO3B,kBAAkB,CAAG,eAAwB,CAO7C,AAP8C,EAO9C,sCAAsC,CAAG,OAAgB,CAAC,AAS1D,EAAA,6BAA6B,CAAG,sBAA+B,CAAC,AAOhE,EAAA,8BAA8B,CACzC,2BAAoC,CAAC,mCCzC3B,YAAY,8EACtB,GADU,EAAA,OACV,KADsB,GAAZ,CAAY,CAAZ,YAAY,CAAA,CAAA,CAAA,GACtB,AASD,OATC,CAAA,UAAoB,CAAA,AACpB,EAAA,GAAA,CAAA,KAAW,CAAX,AAAW,AACX,EAAA,MAAA,CAAA,GAAA,KAAiB,CAAA,AACjB,EAAA,MAAA,CAAA,GAAA,KAAiB,CACjB,AADiB,EACjB,IAAA,CAAA,KAAA,CAAa,CAAA,AACb,EAAA,OAAA,CAAA,EAAA,OAAmB,CAAA,AACnB,EAAA,UAAA,GAAA,CAAA,gBAAgC,CAChC,AADgC,EAChC,UAAA,EAAA,CAAA,eAA8B,CAAA,AAC9B,EAAA,UAAA,YAAA,CAAA,yBAAkD,CAoCvC,AApCuC,EAoCvC,cAAc,CAAiC,CAC1D,gBAAgB,CAAE,IAAI,AACtB,GADyB,EAAE,aACT,EAAE,EACrB,CAAC,EADyB,0WC1F3B,IAAA,EAAA,EAAA,CAAA,CAAA,MAQ4B,EAC5B,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,IADkE,IAKlE,EAAA,EAImB,CAAA,CAAA,OACnB,EAN6C,AAM7C,EAAA,CAAA,CAAA,IADmB,IAQN,EAAA,CAHoB,kBAGD,CAAkB,MAAM,CACtD,2CAA2C,CAC5C,CAAC,AACW,EAAA,uBAAuB,CAAkB,MAAM,CAC1D,+CAA+C,CAChD,CAAC,AACW,EAAA,6BAA6B,CAAkB,MAAM,CAChE,sDAAsD,CACvD,CACY,AADX,EACW,qBAAqB,CAAkB,MAAM,CACxD,6CAA6C,CAC9C,CAAC,AAwBF,IAAM,EAAyC,GAAA,EAAA,gBAAgB,AAAhB,EAC7C,KADkC,6CACgB,CACnD,CAAC,AAEW,EAAA,iBAAiB,CAAI,AAAD,EAAH,CACX,EAAE,CAAC,CAAC,CAArB,CADwD,CAClC,EAAe,AADe,EAAE,MACL,AAArC,EAAsB,CAAC,AAAa,CAMlD,AANsC,AAAa,IAM7C,EAAU,CACd,EACA,EAFW,EAMJ,IAAqC,CALb,KAKmB,CAAhC,AAAiC,CAJ3B,AAI4B,CAA7B,CAHf,CAGc,AAA+B,CAH3C,GAG+C,CAAC,AAAE,CAAD,GAAC,CAAI,CAAC,AAG7D,CAH8D,CAGhD,AAAC,CAHoB,GAIvC,IAAM,CADS,CACU,GAAmB,EADU,EAAU,EAAE,AAChB,CAAC,AAMnD,IANsB,CAAkB,CAMjC,AAJe,GAAiB,QAAQ,CAAC,CAI5B,EAJ+B,CAAC,AAAd,CAClC,EAAiB,SAAS,CAAC,CAAC,CAAE,EAAd,AAA+B,MAAM,CAAG,CAAC,CAAC,CAC1D,CAAA,CAAgB,CAAC,AAEA,CAH6B,UAGlB,EAAE,AACpC,CADqC,AACpC,CAAC,AAQI,EAAkC,CACtC,EACA,CADkC,CAElC,EACA,IAEA,AAAI,EACK,CAAE,CALS,AAKR,EAHM,AAGO,CAAE,CAJG,AAElB,AAE6B,CAAE,CAF7B,AAE8B,CAE1C,EAAA,CAHgB,EAAE,AACI,CAElB,CAAC,AAT4B,GAOM,EAE7B,CACR,CAAA,gEAAA,EAAmE,EAAU,QAAA,eAAA,CAAyB,CACtG,KACE,EACD,CADI,AAEN,CAAC,AACK,CAAA,CAAE,CAAC,CAID,EAAA,iCAAiC,CAAG,AAC/C,EAD4C,EACvB,AAErB,EADY,EAAE,AACR,EAAU,EAAK,EAAD,CAAP,aAAwB,CAAC,OAAO,AAQ7C,EAR+C,WAAW,EAAE,EAAE,CAAC,OAC/D,AAAI,EACK,CACL,CAAC,EAAA,CAFM,EAAE,kBAEa,CAAC,CAAE,EAC1B,CAAC,AAEK,CAAA,CAAE,AAEb,CAFc,AAEb,CAAC,AALoC,AAOzB,EAAA,8BAA8B,CAAG,CAC5C,CADyC,CAEzC,CADkC,IAGlC,IAAM,EAAyB,CAC7B,CAAC,EAAA,IAHkC,AAErB,EADJ,EAAE,OAiId,gBA/HkC,CAAC,CAAE,OAAO,CAC3C,CAGD,AAJ8C,AAC5C,GAGE,AAAe,OAAR,CAAgB,EAAb,OADd,EAAM,CAAH,EAAM,AAAI,kBAAA,CAAkB,CACF,AADG,CAE9B,IAAM,EAAiB,EAEjB,CAF4C,CAAC,AAElC,EAAY,GAAgB,CAA/B,EAFM,EAL0F,CAOlF,EAAyB,CAAC,CAAC,AACvD,CAD2C,KACrC,CAAC,MAAM,CAAC,EAAY,CACxB,GAAG,EACD,EAFoB,AAGpB,CADG,CACH,uBAAuB,CACvB,CAHgC,CAIhC,MADQ,IACE,CACX,CACF,CAAC,CAAC,AAEH,IAAM,EAAuB,GAAgB,GAA/B,GAAG,EAAoC,CAAC,CAAC,CAAZ,MAAf,KACxB,EAAsB,EAAA,eAAH,CAAmB,CAAC,GAAG,EAAE,AAC9C,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,GAAG,EACD,EAFoB,AAGpB,CADG,CACH,kBAAkB,CAClB,EACA,IAJgC,EAGxB,IACE,CACX,CACF,CAAC,CAAC,AAED,EAAsB,EAAA,eAAH,CAAmB,CAAC,MAAM,EAAE,AACjD,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,GAAG,EACD,EACA,AAHoB,CAEjB,CACH,mBAAmB,CACnB,EACA,GAJgC,GAGxB,IACE,CACX,CACF,CAAC,CAAC,AAGL,IAAM,EAAO,EAAH,AAAW,EAAe,GAAhB,CAAoB,CAAE,GACtC,EAAsB,EADS,AACT,CADwB,CAAC,CAAC,YAC7B,CAAmB,CAAC,GAAG,EAAE,AAC9C,MAAM,CAAC,MAAM,CACX,EACA,EAAgC,EAAK,CAAF,CAAE,EAD3B,gBAC6C,CAAE,EAAM,EAAF,EAA9B,EAAsC,CAAC,CACvE,CAAC,AAEA,EAAsB,EAAA,eAAH,CAAmB,CAAC,MAAM,EAAE,AACjD,MAAM,CAAC,MAAM,CACX,EACA,EAAgC,EAAK,CAAF,CAAE,EAD3B,cAC2C,CAAE,EAAM,EAAF,IAA5B,AAAoC,CAAC,CACrE,CAAC,AAEL,IAAM,CACL,IAAM,EAA6B,AAtH9B,EAAI,CAsH6B,AAtH9B,CAsH+B,CAAC,IAAvB,AAtHD,CAAC,EAsHG,SAtHQ,CAAE,IAsHI,GAtHG,CAAC,CAuHtC,AAvHuC,CAuH7B,CAAC,EAAA,kBAAkB,CAAC,CAAG,EACjC,GAAI,CACF,IAAM,CAFoC,CAAC,AAE1B,IAAI,EAAP,CAAU,CAAC,GAEnB,EAAW,EAAY,EAAS,EAAxB,AAFsB,CAAC,CAAC,EAED,CAAT,CAAkB,CAAC,CAC/C,AADgD,MAC1C,CAAC,MAAM,CAAC,EAAY,CACxB,GAAG,EACD,EAFoB,AAGpB,EAAA,OADW,gBACY,CACvB,CAHgC,CAIhC,MADQ,IACE,CACX,CACF,CAAC,CAAC,AAEH,IAAM,EAAuB,AA5G1B,EA4GmC,IAAxB,EAAuB,CAApB,CAA6B,CAAC,CAAC,AA5G1B,GAAJ,KA4GU,GA5GK,CA6G7B,AA7G8B,EA6GR,EAAA,eAAH,CAAmB,CAAC,GAAG,EAAE,AAC9C,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,GAAG,EACD,EAFoB,AAGpB,EAAA,OADW,WACO,CAClB,EACA,IAJgC,EAGxB,IACE,CACX,CACF,CAAC,CAAC,AAED,EAAsB,EAAA,eAAH,CAAmB,CAAC,MAAM,EAAE,AACjD,MAAM,CAAC,MAAM,CAAC,EAAY,CACxB,GAAG,EACD,EAFoB,AAGpB,EAAA,OADW,YACQ,CACnB,EACA,GAJgC,GAGxB,IACE,CACX,CACF,CAAC,CAGJ,AAHK,IAGC,EAAO,EACX,AADQ,EACC,GADS,CACL,CAAC,AAAE,CAAR,AAAO,OAAS,CAAC,EAAS,IAAI,CAAC,CAAN,AAAO,CAAC,IAAC,EAC1C,GAEE,EAAsB,EAAA,AAH2B,CAC3C,CACT,CAAC,YACqB,CAAmB,CAAC,GAAG,EAAE,AAC9C,MAAM,CAAC,MAAM,CACX,EACA,EACE,EACA,EAAA,EAHQ,KAEG,WACO,CAClB,EACA,EADI,EAHyB,EAIvB,CACP,CACF,CAAC,AAEA,EAAsB,EAAA,eAAH,CAAmB,CAAC,MAAM,EAAE,AACjD,MAAM,CAAC,MAAM,CACX,EACA,EACE,EACA,EAAA,EAHQ,KAEG,SACK,CAChB,EACA,EADI,IAHyB,AAIvB,CACP,CACF,CAAC,AAEL,AAAC,MAAO,EAAK,CAAF,AACV,EAAA,IAAI,CAAC,KAAK,CACR,wFAAwF,CACxF,aACE,MACA,EACD,CADI,AAEN,CAAC,AACH,CAJgB,AAKlB,AACD,OAAO,CACT,CAAC,CAAC,AAEW,EAAA,KAHM,CAAC,mBAGkB,CAAG,AAAC,EAAJ,CAC7B,EAAQ,EADyC,EAAE,CAC5C,CAD8C,EACrC,CAAC,GAAgC,GAG7C,CAHiD,CAAC,AAGlD,CAHmD,KAC9D,gBADsD,KAGhB,CAAI,AAAD,EAAH,CAC/B,EAAQ,EAD2C,EAAE,CAC9C,CADgD,KACpC,CAAC,GAGhB,EAAA,QAFX,eAEkC,CAAG,AAAC,CAHmB,CAAC,AAGxB,CAHyB,CAIC,GADN,CAC/C,AAAyD,CADR,AACS,CAAlD,CAD2C,IAC5C,GAAS,CAAC,OACxB,uBADsD,CAAC,ECjRtD,OAAA,cAAA,CAAA,EAAA,aAAA,oDAGU,EAAA,eAAe,CAAG,QAAQ,CAAC,AAC3B,EAAA,YAAY,CAAG,wCAAwC,CAAC,gHCHrE,IAAA,EAAA,EAAA,CAAA,CAAA,MAW4B,EAC5B,EAAA,EAAA,CAAA,CAAA,OAI6B,CAC7B,EAAA,EAAA,CAAA,CAAA,QASA,EAAA,EAAqD,CAAA,CAAA,IADb,GAExC,EAAA,EAAA,CAAA,CAAA,IADqD,IAiBrD,EAAA,CARiC,CAYhB,CAAA,CAAA,QACjB,EAAA,EAgBiB,CAAA,CAAA,CAjBA,OAmBjB,EAAA,EAA0D,CAAA,CAAA,CAFzC,MAIX,EAAoB,CAAC,OAF+B,KAEnB,CAAC,AAExC,CAFuB,AAAkB,MAE5B,UAA+B,EAAA,UAAR,SAAyD,CACnF,oBAAoB,AAAoB,AAEhD,aAAY,EAAuC,CAAA,CAAE,CAAA,CACnD,KAAK,CAAC,EAAA,YAAY,CAAE,EAAA,eAAe,CAAE,CAAE,GAAG,EAAA,cAAc,CAAE,GAAG,CAAM,CAAE,CAAC,CAAC,AACvE,IAAI,CAAC,2BAA2B,EAAE,AACpC,CAGQ,AAHP,AADoC,2BAIF,EAAA,CACjC,IAAI,CAAC,oBAAoB,CAAG,CAAA,EAAA,EAAA,uBAAA,AAAuB,EACjD,MAAM,CACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAC1C,AACH,CAAC,AADG,AAGK,SAAS,CAAC,EAAuC,CAAA,CAAE,CAAA,CAC1D,KAAK,CAAC,SAAS,CAAC,CAAE,GAAG,EAAA,cAAc,CAAE,GAAG,CAAM,CAAE,CAAC,AACnD,CADoD,AACnD,AAES,IAAI,EAAA,CACZ,IAAM,EAAyB,IAAI,EAAA,cAAP,eAAoC,CAC9D,8BAA8B,CAC9B,EACA,IAAI,CAAC,UADY,OACK,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAEK,AAFJ,EAE8B,IAAI,EAAA,eAAP,cAAoC,CAC/D,+BAA+B,CAC/B,EACA,IAAI,CAAC,UADY,OACK,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAAC,AAEI,EAAoB,IAAI,EAAA,SAAP,oBAAoC,CACzD,wBAAwB,CACxB,EACA,IAAI,CAAC,UADY,EACA,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAC,AASF,OAPe,AAOR,IAPY,EAAA,AAON,CAAC,kCAPwC,CACpD,SAAS,CACT,OACA,EACA,OADS,AAET,CAHiB,AAGhB,CADQ,CACgB,EAAmB,EAAwB,CACrE,AAEH,CAFI,AAEH,AAEO,WALsC,CAK1B,CAAC,CALM,AAKY,CAAA,CAKrC,GAVqE,IAMrE,EAAgB,IAAI,CAAC,MAAR,QAAsB,CAAC,GAChC,AAAC,CAAA,EAAA,EAAA,KAD4C,CAAC,CAAC,EAC9C,AAAS,EAAC,EAAc,OAAO,CAAC,EAAE,AACrC,CAD0B,GACtB,CAAC,KAAK,CAAC,EAAe,SAAS,CAAE,CAAb,GAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,AAEjE,CACT,CAAC,AAEO,WAHc,CAAC,EAGD,CAAC,CAAkB,CAAA,CAIvC,MAHI,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,EAAE,AACpC,CADyB,GACrB,CAAC,OAAO,CAAC,EAAe,SAAS,CAAC,CAAZ,AAAa,AAElC,CACT,CAAC,AAEO,WAHc,CAAC,KAGE,CACvB,CAAkB,CAClB,CAAiC,CAAA,CAiEjC,MA/DI,AAAC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,OAAO,CAAC,EAAE,AACvD,IAAI,CAAC,KAAK,CACR,EAAc,OAAO,CAAC,GAAT,MAAkB,CAC/B,SAAS,CACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAE,IAGhC,AAAC,CAAA,EAAA,EAAA,IAH4C,CAAC,CAC/C,CAAC,EAEC,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,OAAO,CAAC,EAAE,AACvD,IAAI,CAAC,KAAK,CACR,EAAc,OAAO,CAAC,GAAT,MAAkB,CAC/B,SAAS,CACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAE,IAGhC,AAAC,CAAA,EAAA,EAAA,IAH4C,CAAC,CAC/C,CAAC,EAEC,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,GAAG,CAAC,EAAE,AACnD,IAAI,CAAC,KAAK,CACR,EAAc,OAAO,CAAC,GAAT,MAAkB,CAC/B,KAAK,CACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAO,EAAA,CAAF,WAAc,CAAC,GAAG,CAAC,CACrD,CAAC,AAEA,AAAC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,IAAI,CAAC,EAClD,AADoD,IAChD,CAAC,KAAK,CACR,EAAc,OAAO,CAAC,GAAT,MAAkB,CAC/B,MAAM,CACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAM,EAAF,AAAE,YAAY,CAAC,IAAI,CAAC,CACrD,CAAC,AAEA,AAAC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,MAAM,CAAC,EACpD,AADsD,IAClD,CAAC,KAAK,CACR,EAAc,OAAO,CAAC,GAAT,MAAkB,CAC/B,QAAQ,CACR,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAM,EAAF,AAAE,YAAY,CAAC,MAAM,CAAC,CACvD,CAAC,AAEA,AAAC,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,MAAM,CAAC,EAAE,AACtD,IAAI,CAAC,KAAK,CACR,EAAc,OAAO,CAAC,GAAT,MAAkB,CAC/B,QAAQ,CACR,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAO,EAAA,CAAF,WAAc,CAAC,MAAM,CAAC,CAC3D,CAAC,AAEA,AAAC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,OAAO,CAAC,EAAE,AACvD,IAAI,CAAC,KAAK,CACR,EAAc,OAAO,CAAC,GAAT,MAAkB,CAC/B,SAAS,CACT,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAM,EAAF,AAAE,YAAY,CAAC,OAAO,CAAC,CAC3D,CAEE,AAFD,AAEA,CAAC,EAAA,EAAA,SAAS,AAAT,EAAU,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,IAAI,CAAC,EAAE,AACpD,IAAI,CAAC,KAAK,CACR,EAAc,OAAO,CAAC,GAAT,MAAkB,CAC/B,MAAM,CACN,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAAC,AAEA,AAAC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,WAAD,GAAe,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,AAC9D,IAAI,CAAC,KAAK,CACR,EAAc,WAAD,GAAe,CAAC,SAAS,CACtC,SAAS,CACT,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAE,IAGtC,CACT,CAAC,AAEO,OANoD,CAAC,CACxD,CAAC,CAEgB,CAAC,OAGI,CAAC,CAAkB,CAAA,CA4B5C,MA3BI,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,OAAO,CAAC,EAAE,AACtD,IAAI,CAAC,OAAO,CAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAE,SAAS,CAAC,CAAC,AAEvD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,OAAO,CAAC,EAAE,AACtD,IAAI,CAAC,OAAO,CAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAE,SAAS,CAAC,CAAC,AAEvD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,GAAG,CAAC,EAChD,AADkD,IAC9C,CAAC,OAAO,CAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAE,KAAK,CAAC,CAAC,AAEnD,GAAA,EAAA,SAAS,AAAT,EAAU,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,IAAI,CAAC,EAAE,AACnD,IAAI,CAAC,OAAO,CAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAE,MAAM,CAAC,CAAC,AAEpD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,MAAM,CAAC,EAAE,AACrD,IAAI,CAAC,OAAO,CAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAE,QAAQ,CAAC,CAErD,AAFsD,CAEtD,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,MAAM,CAAC,EAAE,AACrD,IAAI,CAAC,OAAO,CAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAE,QAAQ,CAAC,CAAC,AAEtD,GAAA,EAAA,SAAA,AAAS,EAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,OAAO,CAAC,EAAE,AACtD,IAAI,CAAC,OAAO,CAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAE,SAAS,CAAC,CAAC,AAEvD,GAAA,EAAA,SAAS,AAAT,EAAU,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAC,IAAI,CAAC,EAAE,AACnD,IAAI,CAAC,OAAO,CAAC,EAAc,OAAO,CAAC,GAAT,MAAkB,CAAE,MAAM,CAAC,CAAC,AAEpD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAc,WAAD,GAAe,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,AAC7D,IAAI,CAAC,OAAO,CAAC,EAAc,WAAD,GAAe,CAAC,SAAS,CAAE,SAAS,CAAC,CAAC,AAE3D,CACT,CAAC,AAEO,WAHc,CAAC,GAGA,CACrB,CAIe,CAAA,CAEf,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,SAAS,AAEd,CAA6B,CAC7B,CAAkB,CAClB,CAAsB,EAEtB,OAAO,AANqB,EAMZ,IAAI,CAClB,CADa,GACT,CACJ,EACA,CADG,CAEH,SAAyB,CAAG,CADf,AACiB,CAA+B,EAC3D,GAAI,AAAO,GAAJ,CAAQ,IAAE,CACf,IAAM,EAAgB,CAAA,EAAA,EAAA,MAAH,wBAAiC,AAA9B,EACpB,EACA,CADG,CACE,EAAD,kBAAqB,CAC1B,CAAC,AACI,EAAmB,CAAA,EAAA,EAAA,SAAH,wBAAG,AAAiC,EAAC,EAC3D,EAD+D,AAC3D,CAD4D,AAC3D,CAD4D,CAC5D,qBAAqB,CAAC,CAAG,CAC5B,GAAG,CAAa,CAChB,GAAG,CAAgB,CACpB,CAAC,AACH,AACD,EAAa,KAAK,CAAC,IAAP,AAAW,CAAE,SAAS,CAAC,AACrC,CADsC,AACrC,CAEL,AADG,CAEL,AADG,AADG,CACF,AACH,AAEO,mBAAmB,CAAC,CAAkB,CAAA,CAC5C,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,SAAS,AAEd,CAAiB,EAEjB,CAJkB,EAId,AAAc,OAAO,EAAZ,GAAc,CACzB,EAAK,EAAD,kBAAqB,CACvB,IAAI,EACJ,EACA,EADI,AACJ,YAAY,CAAC,aAAa,MAC1B,GAEF,IAAM,EAFK,AAES,CADnB,CAAC,EACsB,CAAC,EAAA,EAAR,2BAAqC,CAAC,AACnD,CADoD,GAEtD,OADa,EAAE,IACF,CAAC,GAEhB,IAAI,CAAC,EAAA,CAFsB,CAAC,CAAC,0BAEK,CAAC,MAAG,EACvC,IAAwB,EAAlB,CAD0C,CAAC,GAClB,EAAE,CAAvB,GACT,EAAK,EAAD,EADc,gBACO,CACvB,IAAI,EACJ,EACA,EADI,AACJ,YAAY,CAAC,YAAY,MACzB,GAGJ,MAHa,CACV,AAEI,CAFH,CAEY,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,AACxC,CADyC,AACxC,AACH,CADI,AACH,AAEO,cAAc,CACpB,CAAmB,CACnB,CAA0B,CAC1B,CAAkB,CAAA,CAElB,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,SAAS,AAEd,CAAwB,EAGxB,GALoB,IAIpB,EAAK,EAAD,kBAAqB,CAAC,IAAI,CAAE,EAAY,EAAc,GACnD,EAAS,CAD0B,IACrB,AADmC,CACzC,AAAO,GADkD,CAAC,AAC/C,CADgD,AAC9C,SAAS,CACvC,AADwC,CACvC,AACH,AAF2C,CACvC,AACH,AAEO,WAAW,CACjB,CAAmB,CACnB,CAA0B,CAC1B,CAAkB,CAAA,CAElB,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,SAAS,AAEd,CAAgB,CAChB,CAHiB,AAGS,CAC1B,CAAiB,EAIjB,IAAM,EACJ,IAAiB,EAAA,MAAL,CADO,KACU,CAAC,MAAM,CAAC,AAAE,CAAD,CAAoB,EAEtD,EACJ,AANc,GAGmD,CAAC,AAG3D,AANW,CAMV,AANW,EAMX,GAH+C,CAAC,AAEvC,CAFwC,kBAG1B,CAAC,EAAI,EAAE,CAAC,AACnC,EAAW,EAAc,IAAjB,KAA0B,CACtC,AADsC,CAAV,EACd,EAAW,GAAG,EAAlB,CAAC,AAAsB,EAAT,CAE1B,GAAI,CAFsC,CACzC,AACc,CADb,AACc,CAGd,CAHgB,CAGX,EAHK,AAGN,aAAgB,CAClB,EACA,EACA,EACA,CAHO,KACG,EAIP,EAHS,CAGL,IAFQ,AAES,CADzB,CAAC,AACwB,MAAL,MAAiB,CAAC,MAAM,EAAI,EAAkB,CACnE,IAAK,IAAI,CAAC,CAAG,CAAC,CAAE,CAAC,AADgD,EAC5C,EAAU,CAAC,EAAE,CAAE,AAClC,EAD2B,AACtB,EAAD,aAAgB,CAClB,CAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CACpB,EACA,EACA,GAGJ,EAAc,CALA,IACE,CAII,CAAC,CAAC,CAAE,CAHL,CAGN,AAAsB,AAFhC,CAAC,AAEgC,CAAC,CAAC,AACvC,GADiC,EAEhC,CADK,CACA,EAAD,aAAgB,CAClB,EACA,EACA,EACA,CAHO,EAKT,EAAc,CAJF,IACE,CAGM,CAAC,EAAU,CAFd,AAEe,CAD/B,AACY,AAAoB,CAEnC,AAHI,AACgC,GAAL,IAExB,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,SAAS,CAAC,AACxC,CADyC,AACxC,AACH,CAEQ,AAFP,AADG,eAGmB,CACrB,CAAiC,CACjC,CAAkB,CAAA,CAElB,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,SAAS,AAEd,CAAa,CACb,CAA+C,CAC/C,CAAyB,EAJJ,AAMrB,IAAM,EAAU,IAAI,CAAP,AAAQ,AACrB,GACE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAS,EAAA,GAAF,oBAAyB,CAAC,CACvE,CACA,GAAM,kBAAE,CAAgB,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,CAAC,AAC9C,GAAI,EAAkB,CACpB,IAAM,EAAQ,GAAH,IADO,IACO,CAAC,GAAG,EAAE,AAC7B,EAAK,EAAD,0BAA6B,CAAC,EACpC,CAAC,CAAE,GADwC,AAE3C,CAF4C,CAEtC,AAFuC,GAExC,EAAM,EAAE,CAAC,AACd,CAAO,CAAC,CAFW,CAAC,AAEZ,CAFa,4BAEgB,CAAC,CAAG,EAC1C,AACD,CAAO,CAAC,CAFwC,CAExC,AAFyC,uBAElB,CAAC,CAAG,EAAE,CAAC,AACvC,AAwFD,OADA,SAAS,CAAC,CAAC,CAAC,CArFa,EAqFV,OAnFb,CAAyC,MAerC,EAVJ,AA8E6B,CAAC,EApED,AAVzB,CAU0B,AAVzB,EACH,CADM,EAAE,IACD,EAAU,IAAI,CAAC,EAAN,EAAU,CAAE,GAAG,AAGjC,CAHkC,CAAC,EAG7B,EAAU,EAAI,CAAD,EAAN,OAAiB,CAAC,OAAO,EAAI,CAAA,CAAE,CAAC,AACzC,EAAqC,EAAA,SAAxB,EAAmC,CAAC,OAAO,CAC1D,EAAA,YAAY,CACZ,GAEI,EAAW,EAAI,AAFZ,CAEW,AADnB,CAAC,EACY,EAAa,EAAE,QAAQ,CAAC,AAEtC,GAAI,EAAK,EAAD,KAAQ,CAAC,kBAAkB,CAAE,CACnC,IAAM,EAAoB,EACtB,EAAA,KAAK,CAAC,GAD6B,EAAhB,EACN,CAAC,IAAgB,SAAH,CAAC,CAAa,EAAE,MAC3C,EACJ,OAAgB,AADH,CAAC,CAEV,IADS,AAEX,EAAQ,CAFe,AAGrB,CAHsB,AAIpB,CAFC,MAEM,CAAE,CAHM,CAIhB,CAJkB,AAKpB,CAAC,CAEL,AACD,IAAM,EAAO,EAAH,AAAQ,EAAD,EALiB,EAKV,CAAC,SAAS,CAChC,CAAA,EAAG,EAAK,GAAA,KAAA,CAAU,CAClB,CACE,IAAI,CAAE,EAAA,QAAQ,CAAC,QAAQ,CACvB,UAAU,CAAE,CACV,GAAG,GAAS,IAAF,MAAY,EAAE,CAAC,EAAA,qBAAqB,CAAC,CAC/C,CAAC,EAAA,0BAA0B,CAAC,CAAE,EAC9B,CAAC,EAAA,GADqC,4BACN,CAAC,CAC/B,EAAA,sCAAsC,CACxC,CAAC,EAAA,mCAAmC,CAAC,CAAE,EAAI,CAAD,KAAO,EAAE,UAAU,CAC7D,CAAC,EAAA,wBAAwB,CAAC,CAAE,EAAA,iCAAiC,CAC7D,CAAC,EAAA,6BAA6B,CAAC,CAAE,GAAG,AAAE,UAAU,CAAC,SAAS,CAC1D,CAAC,EAAA,8BAA8B,CAAC,CAAE,GAAG,AAAE,UAAU,CAAC,aAAa,CAChE,CACD,KAAK,GACN,CACD,GAGI,UAHS,CACd,CAAC,CAEM,CAAW,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,CAAC,AACrC,GACF,CAAA,EAAA,EAAA,GADa,EAAE,iBACf,AAAsB,EACpB,GAAG,CAAG,CAAD,CAAa,EAAM,CAAE,CAAJ,KAAL,OAAsB,GAAE,GAAG,EAAA,CAAE,CAAC,CAAA,AAC/C,CAAC,CAAC,EAAE,AACE,CAAC,EAAE,AACL,EAAA,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAE,CAAC,CAAC,AAEhE,CAFiE,AAEhE,EACD,GAIC,CAJG,CACL,CAAC,AAGU,IAAF,CAAO,EAAE,CAEnB,CAAO,CAAC,EAAA,uBAAuB,CAAE,CAAC,IAAI,CAAC,CACrC,GAAG,GACH,aAAa,CAAE,CAAA,EAAA,EAAA,MAAA,AAAM,GAAE,CACxB,CAAC,CAAC,AAGH,CAAG,CAAC,EAAA,mBAAmB,CAAC,CAAG,GAE7B,CAFiC,CAAC,EAE5B,EAAsB,GAExB,EAAA,GAFY,KAAyB,GACrC,CACY,CAChB,AADiB,EACjB,OAAO,CAAC,CAFS,GAEL,CAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAY,GAAO,CAAH,CAAC,CAAK,EAAZ,AAAc,AACjD,EAAU,IAAI,CAAC,EAAN,EAAU,CAAE,EACvB,CAAC,AADyB,CACxB,AADyB,CACxB,AAEC,AAHwB,GAGf,IAAF,CAAO,EAAE,CAClB,EAAK,EAAD,gBAAmB,CAAC,EAAM,EAAF,CAAK,AAAE,EAAO,EAAA,CAAF,WAAc,CAAC,OAAO,CAAC,CAAC,AAChE,EAAK,EAAD,CAAI,EAAE,CAEd,AAFe,CAEd,CAAC,AAEK,EAAS,KAAK,CAAN,AAAO,IAAI,CAAE,SAAS,CAAC,AACxC,CADyC,AACxC,AACH,CADI,AACH,AAEO,wBAAwB,CAC9B,CAAiC,CACjC,CAAkB,CAAA,CAElB,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,SAAS,AAEd,CAAgB,CAChB,CAAkB,CAClB,CAAe,CACf,CAAyB,CACzB,CAAgD,EAGhD,GAAM,EATwB,IAStB,CAAI,iBAAE,CAAe,CAAE,CAAG,EAAK,EAAD,eAAkB,CACtD,EACA,EADI,AAEJ,EAJc,IAAI,AAGV,CAHW,AAMnB,GAGI,AALM,EACV,EACO,CACR,CAAC,GAFO,IAID,CAAW,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,CAAC,AACrC,GACF,CAAA,EAAA,EAAA,GADa,EAAE,iBACO,AAAtB,EACE,GAAG,CACD,CADG,CACS,EAAM,CAChB,CADc,KAAL,OACI,YACb,QAAQ,KACR,UAAU,AACV,EACA,KADO,EACA,CAAE,EACT,aADwB,GACR,EAAE,EACnB,CAAC,CADsB,AACtB,AACJ,CAAC,CAAC,EAAE,AACE,CAAC,EAAE,AACL,EAAA,IAAI,CAAC,KAAK,CAAC,4CAA4C,CAAE,CAAC,CAAC,AAE/D,CAFgE,AAE/D,EACD,GAiDJ,CAjDQ,CACL,CAAC,CAgDE,EAAgB,CAAA,EAAA,EAAA,MAAH,mBAA4B,AAAzB,EAA0B,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,AAC5D,EAAgB,CAAC,GAAG,OAAP,EAAgB,CAAC,CAAC,AAMrC,OALA,CAAa,CAAC,CAAC,CAAC,CAAG,EACnB,CAAa,CAAC,CAAC,CAAC,CAAG,EAAA,MADe,CACR,AADS,CACR,IAAI,CAC7B,CAAA,EAAA,EAAA,2BAAA,AAA2B,EAAC,EAAA,KAAK,CAAC,OAAO,CAAC,EAAe,IAjDlC,AAiDsC,CAAC,CAAC,EAC/D,GADuD,EA/CvD,CAAQ,CACR,CAAiB,EAEjB,GAAI,CACF,EA4Cc,CA5CJ,AA6Cb,CAAC,GA7CgB,CAAN,AAAO,IAAI,CAAE,EAAK,CAAF,CAAI,CAAC,AAC9B,CAD+B,MACtB,CACR,GAAM,oBAAE,CAAkB,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,AAC3C,CAD4C,GAE9C,CAAA,EAAA,EAAA,SADoB,EAAE,WACtB,AAAsB,EACpB,GAAG,CACD,CADG,CACgB,EAAM,EAAF,YAAL,CAChB,WACA,EADa,MACL,KACR,UAAU,AACV,OAAO,GACP,EACA,KADO,WACS,EAAE,EAClB,EADsB,UACV,CAAE,EACf,CADkB,AACjB,CAAA,AACJ,CAAC,CAAC,EACI,AADF,CACG,EAAE,AACL,EAAA,IAAI,CAAC,KAAK,CACR,mDAAmD,CACnD,CAAC,CACF,AAEL,CAFM,AAEL,EACD,GAIA,CAJI,CACL,CAGI,AAHH,AAIF,EADO,AACF,EAAD,OAAU,CAAC,CACb,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CAAE,uCAAuC,CACjD,CAAC,CAAC,AAEL,EAAK,EAAD,CAAI,EAAE,CAEd,AADG,AADY,CAEd,CAAC,CAWK,EAAA,OAAO,CAAC,IAAI,CAAC,EAAe,EAAS,IAAI,CAAC,CAAN,GAAU,AAApB,EAAsB,EAAG,GAC5D,CAAC,AACH,CADI,AACH,AAEO,QAJmE,CAAC,CAAC,CAAC,IAIvD,CACrB,CAAiC,CACjC,CAAkB,CAAA,CAElB,IAAM,EAAO,EAAH,EAAO,CAAC,AAClB,OAAO,SAAS,AAEd,CAAgB,CAChB,CAAkB,CAClB,CAAe,CACf,CAAyB,AALJ,EAOrB,GAAI,CAAA,EAAA,EAAA,uBAAA,AAAuB,EAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAE3C,CAF6C,MAEtC,EAAS,KAAK,CAAC,AAAP,IAAW,CAAE,SAAS,CAAC,AACjC,CADkC,CAGvC,GAAM,MAAE,CAAI,iBAAE,CAAe,CAAE,CAAG,EAAK,EAAD,eAAkB,CACtD,EACA,EADI,AAEJ,EAJc,IAAI,AAGV,CAGR,AANmB,GAIT,AAKN,EAJJ,EACO,CACR,CAAC,GAFO,IAID,CAAW,CAAE,CAAG,EAAK,EAAD,OAAU,EAAE,AACpC,CADqC,GAEvC,CAAA,EAAA,EAAA,EADa,EAAE,kBACf,AAAsB,EACpB,GAAG,CACD,CADG,CACS,EAAM,EAAF,KAAL,QACT,WACA,EADa,MACL,KACR,EACA,OAAO,CADG,EAEV,OAAO,CAAE,EACT,aADwB,GACR,EAAE,EACnB,CAAC,CAAA,AACJ,CAAC,AAF0B,CAEzB,EAAE,AACE,CAAC,EAAE,AACL,EAAA,IAAI,CAAC,KAAK,CAAC,4CAA4C,CAAE,CAAC,CAAC,AAE/D,CAFgE,AAE/D,CACD,IAAI,AAMR,CALG,CAAC,EAKE,EAAgB,CAAC,GAAG,OAAP,EAAgB,CAAC,CAAC,AACrC,CAAa,CAAC,CAAC,CAAC,CAAG,EACnB,IAAM,EAAc,EAAS,KADK,AACA,CADC,AACP,AAAO,CAAlB,GAAsB,CAAE,GAEzC,OADA,EAAK,CADwD,CACzD,AAD0D,CAAC,AACvD,EAAE,CAAC,AACJ,EACR,AACH,CAAC,AACH,CADI,AACH,AAEO,OALgB,CAAC,SAKA,CACvB,CAAU,CACV,CAAgB,CAChB,CAAkB,CAClB,CAAsC,CACtC,CAAyB,CAAA,CAEzB,IAAM,EAAqB,CAAA,EAAA,EAAA,WAAH,MAAG,AAAiB,EAAC,GAEvC,EAAO,EAAH,AAAQ,CAFmC,CAAC,AAErC,CAFsC,GAE/B,CAAC,SAAS,CAAC,CAAA,QAAA,EAAW,EAAkB,CAAE,CAAE,CAClE,IAAI,CAAE,EAAA,MADwD,EAChD,CAAC,QAAQ,CACvB,UAAU,CAAE,CACV,GAAG,EAAQ,KAAD,KAAW,CAAC,EAAA,qBAAqB,CAAC,CAC5C,CAAC,EAAA,0BAA0B,CAAC,CAAE,EAC9B,CAAC,EAAA,GADqC,4BACN,CAAC,CAC/B,EAAA,sCAAsC,CAExC,CAAC,EAAA,mCAAmC,CAAC,CAAE,EACvC,CAAC,EAAA,KADgD,wBACnB,CAAC,CAAE,GAAS,IAAF,KAAW,CACnD,CAAC,EAAA,8BAA8B,CAAC,CAAE,GAAS,IAAF,SAAe,CACzD,CACF,CAAC,CAAC,AACG,EAAkB,GAAW,CAAA,CAAE,CAAC,AAQtC,CAR+B,MAC/B,AADqB,EACL,OAAO,CAAG,EAAgB,GAA3B,IAAkC,EAAI,CAAA,CAAE,CAAC,AAExD,CAFyC,CAEzC,WAAW,CAAC,MAAM,CAChB,EAAA,KAAK,CAAC,OAAO,CAAC,EAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAChC,CADoC,CACpB,AADqB,OACd,CACxB,CAAC,AAEK,IAHU,EAGR,IAAI,cAAE,CAAe,CAAE,AAClC,CADmC,AAClC,AAEO,YAHwB,GAGT,CACrB,CAA+B,CAC/B,CAA0B,CAC1B,CAAuB,CACvB,CAA4B,CAAA,CAE5B,IAAM,EAA+B,CAAO,CAAC,EAAA,IAA7B,eAAgD,CAAC,CAAC,AAC7D,IACD,AAAe,KAAK,CADT,CACW,CADT,AAEf,EADY,AACD,KAFW,GAEZ,CAAU,CAAC,CACnB,IAAI,CAAE,EAAA,cAAc,CAAC,KAAK,CAC1B,OAAO,CACL,IAAc,EAAA,GAAL,SAAiB,CAAC,aAAa,EACxC,IAAc,EAAA,GAAL,SAAiB,CAAC,YAAY,CACnC,CAAA,EAAG,EAAS,OAAA,WAAA,GACE,IAAZ,AAAgB,EACZ,KADG,UACY,EACH,IAAZ,CAAiB,CACf,KADK,aACa,CAClB,EACR,CAAA,CAAE,CACF,EACP,CAAC,CAAC,AAEL,IAAI,CAHe,AAGd,kBAAkB,CAAC,EAAY,EAAS,EAAY,GAAd,AAC3C,CADkC,CACvB,GAAG,AADyC,CAAW,CAClD,AADmD,CAClD,AACjB,AAFoE,CAE7D,CAAC,AADE,EACF,mBAAmB,CAAC,MAAG,EACjC,CAAC,AAEO,MAHkC,CAAC,aAGf,CAC1B,CAAsC,CACtC,CAAmB,CACnB,CAAuB,CACvB,CAA4B,CAAA,CAI5B,CADE,CAAO,CAAC,EAAA,QACG,eADoB,CAAC,EAAI,EAAA,AAAE,CAAC,CAC3B,OAAO,CAAA,AAAC,IACpB,IAAI,CAAC,CADyB,CAAC,EAAE,WACb,CAAC,EAAW,GAAG,CAAE,EAAY,EAAW,AAA7B,EACjC,CAAC,CAAC,CAAC,AACH,CAAO,AAF0C,CAAW,AAAS,AAE7D,CAF8D,CAAC,AAE/D,uBAAuB,CAAC,CAAG,EAAE,AACvC,CAAC,AADuC,AAGhC,kBAAkB,CACxB,CAAU,CACV,CAA2B,CAC3B,CAAwB,CACxB,CAA0B,CAAA,CAE1B,GAAM,gBAAE,CAAc,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CACtC,AADuC,GAG5C,CAAA,EAAA,EAAA,MAFmB,EAAE,OAAO,OAE5B,AAAsB,EACpB,GAAG,CAAG,CAAD,CAAgB,EAAM,EAAF,GAAI,GAAG,EAAZ,MAAc,QAAQ,OAAE,CAAY,CAAE,CAAC,CAAA,AAC3D,CAAC,CAAC,EAAE,AACE,CAAC,EAAE,AACL,CAHoD,CAGpD,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAE,CAAC,CAAC,AAEnE,CAFoE,AAEnE,EACD,EAEJ,CAAC,AAEO,CAJA,CACL,CAAC,yBAGgC,CAAC,CAAsC,CAAA,CACzE,IAEI,CAAS,CAFP,AAEQ,EAFM,CAAA,EAAA,EAAA,IAAH,EAAG,AAAM,GAAE,CAAC,AACvB,EAAgB,CAAO,CAAC,EAAA,OAAX,gBAAkC,CAAC,EAAI,EAAE,CAAC,AAEvD,CAAE,kBAAgB,CAAE,CAAG,IAAI,CAAC,SAAS,EAAE,CAAC,AAC9C,IAAK,CAAC,CAAG,CAAC,CAAE,CAAC,CAAG,EAAc,MAAM,CAAE,CAAC,EAAE,CAAZ,AAAc,CACzC,IAAM,EAAc,CAAa,CAAC,CAAC,CAAC,CAAC,AAC/B,EAAkB,CAAA,CADP,CACO,EAAA,QAAH,MAAG,AAAc,EACpC,EAAY,SAAD,IAAc,CACzB,GAEF,GAAI,CAAA,EAAA,EAFS,AAET,CADH,CAAC,kBACE,AAAoB,EAAC,GAAmB,EAC1C,MAAM,AAER,IAHwC,AAGpC,CAHqC,AAGpC,GAHwD,EAAE,UAG3C,CAClB,EAAY,GAAG,CACf,IAAI,CACJ,AAFW,EAEX,YAAY,CAAC,sBAAsB,EACnC,GAEH,AACD,CAHQ,CACL,AAEW,CAFV,KAEgB,CAAC,CAAC,CAAE,CAAC,CAAC,AAC5B,AADe,CAAc,AAC5B,CACF,AAtrBD,EAAA,sBAAA,CAAA,uBAsrBC,2HC5vBD,IAAA,EAAA,EAAmD,CAAA,CAAA,QAA1C,OAAA,EAA0C,YAA1C,CAAA,EAAA,yBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,sBAAsB,CAAA,GAAA,AAC/B,IAAA,EAAA,EAAuD,CAAA,CAAA,QAA9C,OAAA,AAA8C,cAA9C,CAAA,EAAA,iBAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,cAAc,CAAA,GAAA,AAAE,OAAA,cAAA,CAAA,EAAA,eAAA,CAAA,YAAA,EAAA,IAAA,WAAA,OAAA,EAAA,YAAY,CAAA,GAAA,6HCV/B,EAAmB,SAAS,CAE5B,EAAuC,CAC3C,CAHI,EAEM,WACI,CAAE,AAAC,IAAI,AACnBolB,EAAAA,GAD8B,YACf,CAAC,EAAM,EAAF,0BAA8B,CACpD,AADqD,CACpD,CACD,WAAW,CAAE,AAAC,IAAI,AAChBA,EAAAA,GAD2B,YACZ,CAAC,EAAM,EAAF,2BAA+B,CAAC,AACtD,CAAC,AACH,CAAC,CAEY,EAAoBnI,EAAAA,aAApB,SAA0C,CAAC,EAAkB,IAAM,IAAIyL,EAAAA,IAAZ,kBAAkC,CAAC,MAAM,CAAC,kBAyBhFvf,EAAAA,iBAAiB,CAvBtB,AAuBuB,IAtB3C,EAD0B,AAE/B,IAAI,CAAE,EACN,MAoBmE,GApB1D,GACP,AADU,EADU,CAGtB,CAAC,CACL,CAAG,WAFoB,EAAE,6GCvBO,wICgB1B,EAAqB,CAAC,YAAY,CAAC,CAInC,CAJA,CAIuB,CAC3B,cAAc,CACd,YAAY,CACZ,gBAAgB,CAChB,cAAc,CACd,OAAO,CACP,WAAW,CACX,QAAQ,CACV,CAiDO,SAAS,EAAuB,CAAM,EAC3C,AAAsB,AADsC,UACxD,OAAO,AADyB,GACS,GAAlC,CAAkC,GAAX,CAAmB,CAAA,CAAE,GAArB,SAAkC,GAK/D,GALqE,CAAC,CAKjE,CALmE,AAKlE,OAAO,CAAC,EAAU,OAAD,AAAQ,CAAC,EAAE,CAIvC,AAIF,SAAS,AAAkB,CAAO,EAAuB,AACvD,IAAK,CALY,GAKN,IAAA,CAAQ,CADK,CACI,CAC1B,GAAI,CADoB,AACnB,CArCP,AAAmB,UAqCD,AArCd,OAAO,GAA4B,AAAR,AAApB,GAAoB,CAAY,EAAE,CAqC1B,GA/BjB,CA+BqB,CAAC,EAAE,EA/BxB,IAAU,EACV,OADU,AACV,IAAW,EACX,OADW,GACX,IAAc,EACd,OADc,KACd,IAAgB,EACG,OADH,KACG,GAAnB,EAAU,IAAA,EACV,CADS,CACC,KAAA,EAAD,UAAkB,KAT7B,EAoCI,SAIF,IAAM,EAAcwf,EAAAA,qCAAqC,CAAC,EAAK,EAAD,QAAW,CAAC,CAEtE,EAEF3lB,EAAAA,OAFa,EAAE,AAEN,CAAC,AAAD,IACP,CADQ,CACF,GADW,AACZ,OAAW,CAAC,OAAO,CAAE,CACxB,QAAQ,CAAE,EAAY,OAAO,CAC7B,CADqB,MACd,CAAE,EAAY,MAAM,AACrC,CAAS,CAAC,CAEF,AAHsB,EAGhB,GAAD,GAAO,CAAC,qBAAqB,CAAE,EAAK,EAAD,MAAS,CAAC,CAClD,EAAM,GAAD,GAAO,CAAC,uBAAuB,CAAE,EAAK,EAAD,QAAW,CAAC,CACtD,EAAM,GAAD,KAAS,CAAC,OAAO,CAAC,CAEvBkH,EAAAA,gBAAgB,CAAC,EAAK,EAAD,GAAM,CAAE,CAC3B,SAAS,CAAE,CACT,IAAI,CAAE,oBAAoB,CAC1B,OAAO,EAAE,CACrB,CAAW,AACX,CAAS,CAAC,AACJ,CAHoB,AAGnB,CAAC,CAGFlH,EAAAA,SAAS,CAAA,AAAC,IACR,CADQ,CACF,GADW,AACZ,GAAO,CAAC,qBAAqB,CAAE,EAAK,EAAD,MAAS,CAAC,CAClD,EAAM,GAAD,GAAO,CAAC,uBAAuB,CAAE,EAAK,EAAD,QAAW,CAAC,CACtD,EAAM,GAAD,KAAS,CAAC,OAAO,CAAC,CAEvBkH,EAAAA,gBAAgB,CAAC,EAAK,EAAD,GAAM,CAAE,CAC3B,SAAS,CAAE,CACT,IAAI,CAAE,oBAAoB,CAC1B,OAAO,EAAE,CACrB,CAAW,AACX,CAAS,CAAC,AACJ,CAHoB,AAGnB,CAAC,AAEN,CACF,EArDoB,AAKA,EAAU,IALV,GAKS,AAAQ,CAAC,CACpC,EAA4B,EAAU,OAAO,AAAR,CAAS,CAChD,CAmDO,SAAS,EAA4B,CAAO,CApDtB,CAoD6C,AACxE,IAAK,IAAM,IAAA,CAAQ,EAEC,AAAhB,KAFsB,CAAE,CADa,CAGrB,SAAT,GACP,AAAS,CADF,GACP,AAAS,MACT,YAAA,GAAgB,GACwC,CADxC,SAEhB,AADA,OAAO,EAAkC,EAAjC,QAAiC,EAEzC0e,EAAAA,oCAAoC,CAAE,EAAiC,UAAA,CAG7E,CAWO,AAd2F,SAclF,EACd,CAA2B,CAC3B,CAAsB,CACtB,CAA0B,CAC1B,CAAuB,EAoBvB,MAAO,CAAE,QAxB+B,IAwBnB,CAjBnB,GAA6B,YAAA,QAAiB,EAC1C,EADuB,AACK,YAAA,MACY,IAAxC,EAAuB,CADI,WACJ,CACrB,EAAuB,KADH,OACG,EACQ,IAA/B,EADsB,CAEpB,AACA,EAWa,EAZb,CAAA,WAIR,GAA6B,IAHE,SAGF,QAAkB,EAC3C,CADuB,CACK,aAAA,MACa,IAAzC,EAAuB,AADI,IALvB,SAMmB,CACrB,EAAuB,IADH,SACG,EACQ,IAA/B,CADsB,EAGpB,AADA,CAGa,CAAe,AACxC,CAQO,CAZK,CAAA,IAYC,UAAsC9M,EAAAA,EAXhB,eAWtB,EAAsC,CAAoB,AACrE,MAAA,EAAA,CAAA,IAAA,CAAQ,UAAA,EAAa,CAAA,CACrB,IAdU,GAcV,EAAA,CAAA,IAAA,CAAQ,UAAU,CAAmB,EAAA,AAAC,CAE/B,WAAW,CAAC,EAAgC,CAAA,CAAE,CAAE,CAA9B,AACvB,KAAK,CAAC,mCAAmC,CAAEpf,EAAAA,WAAW,CAAE,GAAM,EAAA,CAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,EAAA,SAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,AAChE,CAAF,AAKS,IAAI,EAAoC,CAE7C,OADe,AACR,IADYwf,EAAAA,AACN,mCADyC,CAAC,IAAI,CAAE,EAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,AAAlB,CAAmB,IAAI,CAAC,CAEzG,AAF0G,CAQnG,eAAe,CAAC,CAAQ,CAAoB,CAC7C,IAAI,CAAC,UAAU,CACjB,CADmB,GAGnB,IAAI,AAFI,CAEH,CAFK,SAEK,CAAC,IAAI,CAAC,EAEzB,CAKQ,KAPyB,CAAC,AAOpB,CAAC,CAAa,CAAiC,CAC3D,IAAI,CAAC,UAAA,EAAa,EAElB,EAFsB,EAElB,CAAC,UAAU,CAAC,OAAO,CAAA,AAAC,GAAY,KACpC,AADwB,GAAoB,CACxC,CAD0C,AACzC,CAD0C,SAC1C,CAAa,EAAE,CAEpB,IAAM,EAAgB,AAA6C,GAC1D,IAAI,IADP,CACY,CAAC,CAD8D,CAC9C,CAC/B,GAFwF,EAEnF,CAAE,CAAC,EAAQ,EADa,AACJ,EAAX,EAAe,CAAN,AACrB,IAD4C,AACtC,EAAgC,CAAI,CAAC,CAAC,CAAC,CAAC,sBAAA,AAAxC,EAAkE,CAAA,CAAE,CACpE,EAAY,EAA8B,KAA1C,IAAmD,CAEnD,EAAStb,EAAAA,EAAT,OAAkB,EAAE,CACpB,CAHyC,CAG3B,GAAQ,GAAF,iBAAsB,CAAsBioB,EAAAA,gBAAgB,CAAC,CAIjF,cAAE,CAAY,eAAE,CAAA,CAAc,CAAI,EAHb,GAAa,OAAO,CAAT,AAKpC,EACA,IALmC,IAAc,CAKxC,AALgD,EAEO,AAIhE,CANiE,AAGjE,GAHwD,AAAO,AAA5B,OAAwC,EAAE,CAAC,EAIjD,GADX,SAH0E,AAMhE,CANgE,CAgB9F,EAhBkG,KASlG,AATuG,CASnG,CAAC,CAAC,CAAC,CAAC,sBAAA,CAAyB,CAC/B,GAAG,CAA6B,CAChC,SAAS,MAAgB,IAAd,GAA0B,MAA1B,GAA0B,GAAY,GACjD,CADqD,WACzC,IACZ,CACZ,CAAW,CAEM3lB,EAAAA,QAHQ,YAGY,CACzB,IAAM,OAAO,CAAC,KAAK,CAAC,EAAQ,EAAS,EAAX,CAAgB,AAC1C,CADyC,CAAN,AAAO,EAMpC,GAAS,AAAiB,EAA1B,AALG,MAK+B,EAAE,OAApB,GAClBnF,EAAAA,AADkB,wBACM,CAAC,EAAO,GAAF,kBAAuB,CAAEwC,EAAAA,aAAa,EAAE,CAAC,AAE3E,CAAC,CACD,KAAO,CAAD,AAAE,CAAA,AACR,IACE,EAAuB,EACzB,CAAC,CAEL,AAJc,CAIb,AACT,CAAO,AAJoC,CAAC,AAIpC,CAKJ,GAAsD,AAAlD,MAAM,GATsB,QASuC,UAA5D,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAsC,CAEvE,IAAK,IAAM,CAFmC,CAAA,GAEzB,CAAV,CAEoB,IAAI,EAA7B,AAA+B,CAAlB,CAAC,EAAM,EACtB,EADsB,AACT,CAAC,EAAM,CAAI,AAHa,CAAE,CAGD,CAAa,AAA/B,CAAgC,GAAO,CAAC,CAIhE,CAJ8D,GAArB,GAIlC,CACT,CAAO,CAGL,IAAM,EAAuB,EAAqB,EAJ9B,IAIoC,CAAC,CAAC,EAAK,CAAF,GAAM,CAEtC,CAFvB,EAA2C,CAAuB,AAEvC,EAA3B,AAA6B,CAAhB,CAAC,EAAI,EAAA,CACpB,CAAG,CAAC,EAAI,CAAI,CAAJ,CAAkB,CAAa,CAAC,GAAK,CAAD,AAAE,CAEzC,GAAG,AACT,CAAA,AAH0B,CAGzB,EAA0B,AAE9B,MAAO,CAAE,GAAG,CAAa,CAAE,GAAG,CAAA,CAAsB,AACtD,CACF,CACF,wQCxSa,EAAqB0c,EAAAA,cAArB,QAA2C,CAAC4L,EAAAA,gBAAgB,CAAE,IAAM,IAAIC,EAAAA,6BAA6B,CAAC,CAAA,CAAE,CAAC,EAsEzG,EAAsB3f,EAAAA,eAAtB,EAAuC,CA3DtB,AA2DuB,CA3DtB,EAA2B,CAAA,CAAE,GAAtB,CACpC,CAD+D,GAC3D,EAEJ,KAwDuE,CAxDhE,CACL,IAAI,CAAE0f,CAHW,CAGXA,gBAAgB,SACtB,EACA,KADO,IACE,GAAG,AACV,EAAkB,GACpB,CAAC,CACD,QAFE,KAEW,AAFyB,CAExB,CAAM,AAFoB,EAElB,MAGA,EAAQ,KAAD,AAAC,GAhB1B,CAgBmC,CAAuB,AAhBhD,EAAO,IAgB+C,AAhBhD,CAgBiD,cAAR,CAhBpB,CAAwC,SAAS,CAAC,CACtF,CAAC,CAAC,GAAS,IAAF,MAAY,IAAI,EAAE,EAAE,EAkB9BE,EAAAA,qBAAqB,CAAC,GAEtB,GAF4B,AAEX,CAFY,WAEd,GAAiB,CAAC,IAAMA,EAAAA,qBAAqB,CAAC,GAEjE,CAAC,AACL,CAAG,AACH,CAJ2E,AAI1E,CAJ2E,AAI3E,CAJ4E,8JCrBvE,EAAoB,CAAC,YAAY,CAAC,AAoBjC,CApBD,MAoBO,UAAoCjN,EAAAA,eAApC,IAAuD,CAA+B,AAC1F,WAAW,CAAC,EAAuC,CAAA,CAAE,CAAE,CAArC,AACvB,KAAK,CAAC,gCAAgC,CAAEpf,EAAAA,WAAW,CAAE,EACvD,CAKO,GANsD,CAMlD,AANmD,EAMf,CAE7C,OAAO,AADQ,IAAIwf,EACN,AADMA,mCAAmC,CAAC,QAAQ,CAAE,EAAmB,IAAI,CAAC,MAAM,CAAC,GAAd,CAAkB,CAAC,IAAI,CAAC,CAAC,AAE7G,CAKQ,MAAM,CAAC5D,CAAO,CAAqD,CACzE,IAAI,EAASA,EAGb,EAHI,KAGG,AAHa,AACpB,EAAS,IAAI,AAEA,AAFb,CAAc,YAAY,CAAC,EAAQ,IAAF,IAAU,CAAC,CAC5C,EAAS,IAAT,AAAa,CAAC,YAAY,CAAC,EAAQ,IAAF,SAAe,CAAC,AAEnD,CAKQ,YAAY,CAACA,CAAO,CAAwB,CAAS,CAAkD,CAC7G,IAAM,EAAWA,CAAO,CAAC,EAAU,CACnC,CADM,EACF,CAAC,EACH,AAFgC,MACrB,CACJA,CADM,CAIf,IAAM,EAAS,CAHC,GAGV,AAAa,CAAC,SAAS,EAAE,CAEzB,EAAgB,SAAyB,GAAG,CAAI,EAAa,AAEjE,GAAI0Q,EAAAA,sCAAsC,CAACC,EAAAA,uBAAuB,CAAC,CACjE,CADmE,MAC5D,OAAO,CAAC,SAAS,CAAC,EAAU,GAGrC,CAHyC,CAAA,CAAN,CAG7B,EAAW,MAAX,CAAkB,CAAC,SAAS,CAAC,EAAU,GAE7C,CAFiD,CAAC,CAAP,IAEpCC,EAAAA,sBAAsB,CAAC,EAA0B,EAC1D,CAAA,CAMA,EAPgE,AAAhC,CAAiC,CAO5D,IAAM,GAAA,EAHX,MAAM,CAAC,cAAc,CAAC,EAAe,GACrC,KAD6C,CAAC,AACxC,CAAC,CAD4B,aACd,CAAC,EAAc,SAAS,CAAE,CAAZ,CAAqB,MAAD,GAAU,CAAC,CAEhD,MAAM,CAAC,mBAAmB,CAAC,IAC3C,GAAI,CAD+C,AAC9C,CAD+C,AAC9C,CADgD,OACxC,CAAE,MAAM,CAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAM,AAAH,CAC/C,AADgD,IAC1C,EAAa,MAAM,CAAC,CAApB,uBAA4C,CAAC,EAAU,GAAG,AAC5D,CAD6D,EAAN,AAEzD,MAAM,CADM,AACL,EADO,YACO,CAAC,EAAe,EAAK,CAAF,CAE5C,CAKF,GAAI,CACF5Q,CAAO,CAAC,AAR+B,CAAiB,CAQvC,AARwC,CAQpC,CACvB,CAAE,IADiB,CACX,CAEN,KAHkC,CAG5B,CAAC,cAAc,CAACA,EAAS,EAAW,CACxC,IAD2B,CACtB,CADiC,AAC/B,EACP,QAAQ,EAAE,CADU,CAEpB,EADc,UACF,EAAE,EACd,EADkB,QACR,EAAE,CACpB,CAAO,CAAC,AACJ,CAFoB,AAOpB,GAAIA,EAAQ,OAAD,AAAC,GAAY,EACtB,GAAI,CACFA,EAAQ,AAFoB,EAAE,KAEvB,AAAC,CAAU,CACpB,CAAE,KAAM,CAEN,KAH+B,CAGzB,CAAC,cAAc,CAACA,EAAS,OAAF,EAAW,CAAE,CACxC,KAAK,CAAE,EACP,QAAQ,EAAE,CADU,CAEpB,EADc,UACF,EAAE,EACd,EADkB,QACR,CAAE,EACtB,CAAS,CADiB,AAChB,AACJ,CAEF,OAAOA,CACT,CACF,OAFkB,uJCrHL,EAAmB2E,EAAAA,YAAnB,UAAyC,CACpDgM,EAAAA,uBAAuB,CAAA,AACvB,GAAW,IAAIE,EAAAA,2BAA2B,CAAC,IAiEhC,EAAoBhgB,CAjEmB,CAAC,AAiEpBA,aAApB,IAAqC,CA9DtB,AA8DuB,CA9DtB,EAAyB,CAAA,CAAE,GAApB,CAC3B,CADoD,AAEzD,IAAI,CAAE8f,EAAAA,CA4D2D,sBA5DpC,CAC7B,SAAS,GAAG,AACV,EAAiB,EACnB,CAAC,CACL,CAAG,EAF2B,CAAC,MAAT,mJCAhB,EAAoB,CAAC,cAArB,GAAsC,CAAC,AAetC,OAAM,UAAyCnN,EAAAA,mBAAmB,CAAoC,AAAhG,AACJ,WAAW,CAAC,EAA4C,CAAA,CAAE,CAAE,CACjE,AADuB,KAClB,CAAC,sCAAsC,CAAEpf,EAAAA,WAAW,CAAE,EAC7D,CAKO,GAN4D,CAMxD,AANyD,EAMrB,CAM7C,OALe,AAKR,IALYwf,EAAAA,AAKN,mCALyC,CACpD,mBAAmB,CACnB,EACA,IAAI,CAAC,MAAM,CAAC,GADK,CACD,CAAC,IAAI,CAAC,CAG1B,CAKQ,MAAM,CAAC5D,CAAO,CAAqD,CACzE,IAAM,EAAWA,EAAQ,IAAnB,GAAkB,EAAU,CAE5B,EAAS,IAAT,AAAa,CAAC,SAAS,EAAE,CAEzB,EAAmB,SAAyB,GAAG,CAAI,EAAa,AAEpE,GAAI0Q,EAAAA,sCAAsC,CAACI,EAAAA,6BAA6B,CAAC,CACvE,CADyE,MAClE,OAAO,CAAC,SAAS,CAAC,EAAU,GAGrC,CAHyC,CAAA,CAAN,CAG7B,EAAW,MAAX,CAAkB,CAAC,SAAS,CAAC,EAAU,GAE7C,CAFiD,CAAC,CAAP,IAEpCC,EAAAA,2BAA2B,CAAC,EAA+B,EACpE,CAAA,CAMA,EAPqC,AAAqC,CAAC,CAOtE,IAAM,GAAA,EAHX,MAAM,CAAC,cAAc,CAAC,EAAkB,GACxC,KADgD,CAAC,AAC3C,CAAC,IAD+B,UACjB,CAAC,EAAiB,SAAS,CAAE,EAAS,EAArB,IAAoB,GAAU,CAAC,CAEnD,MAAM,CAAC,mBAAmB,CAAC,IAC3C,GAAI,CAD+C,AAC9C,CAD+C,AAC9C,CADgD,OACxC,CAAE,MAAM,CAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,AAAG,CAAF,AAChD,IAAM,EAAa,MAAM,CAAC,CAApB,uBAA4C,CAAC,EAAU,GACzD,AAD4D,CAAC,EAE/D,AAFyD,MAEnD,CADM,AACL,EADO,YACO,CAAC,EAAkB,EAAK,CAAF,CAE/C,CAKF,GAAI,CACF/Q,EAAQ,CARmD,CAAC,CAAlB,IAQnC,EAAC,CAAY,CACtB,CAAE,KAAM,CAEN,MAAM,CAAC,CAH6B,aAGf,CAACA,EAAS,OAAF,IAAa,CAAE,CAC1C,KAAK,CAAE,EACP,QAAQ,EAAE,EACV,EADc,AADS,UAEX,EAAE,EACd,EADkB,QACR,EAAE,CACpB,CAAO,CAAC,AACJ,CAFoB,AAOpB,GAAIA,EAAQ,OAAD,AAAC,GAAY,EACtB,GAAI,CACFA,EAF4B,AAEpB,EAFsB,KAEvB,AAAC,CAAU,CACpB,CAAE,KAAM,CAEN,MAAM,CAAC,CAH2B,aAGb,CAACA,EAAS,OAAF,EAAW,CAAE,CACxC,KAAK,CAAE,EACP,QAAQ,EAAE,EACV,EAFuB,AACT,UACF,CAAE,GACd,CADkB,SACR,CAAE,EACtB,CAAS,CAAC,AACJ,AAFoB,CAItB,OAAOA,CACT,CACF,OAFkB,4JCvGL,EAAwB2E,EAAAA,iBAAxB,KAA8C,CACzDmM,EAAAA,6BAA6B,CAAA,AAC7B,GAAW,IAAIE,EAAAA,gCAAgC,CAAC,OAAO,CAAC,qBAkEpBngB,EAAAA,iBAAiB,CA/DtB,AA+DuB,CA/DtB,EAA8B,CAAA,CAAE,GAAzB,CAChC,CAD8D,AAEnE,IAAI,CAAEigB,EAAAA,MA6DqE,uBA7DxC,SACnC,EACA,KADO,IACE,GAAG,AACV,EAAsB,EACxB,CAAC,CACL,CAAG,EAFgC,CAAC,WAAT,6HCArB,EAAoB,CAAC,aAAa,CAAC,AAelC,AAfD,OAeO,UAAyCtN,EAAAA,mBAAmB,CAA5D,AAAgG,AACpG,WAAW,CAAC,EAA4C,CAAA,CAAE,CAAE,CAA1C,AACvB,KAAK,CAAC,sCAAsC,CAAEpf,EAAAA,WAAW,CAAE,EAC7D,CAKO,GAN4D,CAAC,AAMzD,EAAoC,CAmB7C,OAlBe,AAkBR,IAlBYwf,EAAAA,AAkBN,mCAlByC,CACpD,eAAe,CACf,EAAiB,AACjB5D,GAAW,IAAI,CAAC,MAAM,CADL,AACMA,GAAQ,AAC/BA,GAAWA,EAKX,CACE,AAP4B,CAAC,EAC/B,CAMMkP,EANY,AAMZA,EALZ,2BAKyC,CAC/B,mCAAmC,CACnC,EAAiB,AACjBlP,EARV,CAQqB,IAAI,CAAC,MAAM,CAACA,AADN,GACc,AAC/BA,GAAWA,GADmB,AAGjC,CAGL,AANuC,CAW/B,CAVA,GAAkB,EAUZ,CAACA,CAAO,CAAqD,CACzE,IAAM,EAAWA,EAAQ,IAAnB,GAAkB,IAAY,CAC9B,EAAS,IAAI,AAAb,CAAc,SAAS,EAAE,CAE/B,GAAwB,UAAU,EAA9B,AAAgC,OAAzB,EACT,MADS,CACFA,EAGT,IAAM,EAAqB,CAHX,QAGoC,GAAG,CAAI,EAAgC,AAEzF,GAAI0Q,EAAAA,sCAAsC,CAACO,EAAAA,6BAA6B,CAAC,CACvE,CADyE,MAClE,OAAO,CAAC,SAAS,CAAC,EAAU,GAGrC,CAHyC,CAAA,CAAN,CAG7B,EAAW,MAAX,CAAkB,CAAC,SAAS,CAAC,EAAU,GAE7C,CAFiD,CAAC,CAAP,IAEpCC,EAAAA,2BAA2B,CAAC,EAAU,EAC/C,CAAC,CAMD,EAP6C,AAAQ,CAAC,CAOjD,IAAM,GAAA,EAHX,MAAM,CAAC,cAAc,CAAC,EAAoB,GAC1C,KADkD,CAC5C,AAD6C,CAC5C,MADiC,QACnB,CAAC,EAAmB,SAAS,CAAE,EAAS,IAArB,EAAoB,GAAU,CAAC,CAErD,MAAM,CAAC,mBAAmB,CAAC,IAC3C,GAAI,CAAC,AAD8C,CAC7C,AAD8C,CAAE,OACxC,CAAE,MAAM,CAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,AAAG,CAAF,AAChD,IAAM,EAAa,MAAM,CAAC,CAApB,uBAA4C,CAAC,EAAU,GAAG,AAC5D,CAD6D,EAAN,AAEzD,MAAM,CADM,AACL,EADO,YACO,CAAC,EAAoB,EAAK,CAAF,CAEjD,CAMF,OAR+D,AAM/D9B,CANgE,CAMhEA,EAN8C,YAMhC,CAACpP,EAAS,OAAF,MAAe,CAAE,GAEhCA,CACT,CACF,OAFkB,MAF2C,CAAC,qJC3FjD,EAAwB2E,EAAAA,iBAAxB,KAA8C,CACzDsM,EAAAA,6BAA6B,CAAA,AAC7B,GAAW,IAAIE,EAAAA,gCAAgC,CAAC,OAAO,CAAC,qBAiEpBtgB,EAAAA,iBAAiB,CA9DtB,AA8DuB,CA9DtB,EAA8B,CAAA,CAAE,GAAzB,CAChC,CAD8D,AAEnE,IAAI,CAAEogB,EAAAA,MA4DqE,uBA5DxC,CACnC,SAAS,GAAG,AACV,EAAsB,EACxB,CAAC,CACL,CAAG,EAFgC,CAAC,WAAT,6HCGrB,EAAoB,CAAC,cAArB,EAAqC,CAAC,AA+ErC,OAAM,UAAuCzN,EAAAA,kBAAvC,CAA0D,CAAkC,AAChG,WAAW,CAAC,EAA0C,CAAA,CAAE,CAAE,CAC/D,AADuB,KAClB,CAAC,mCAAmC,CAAEpf,EAAAA,WAAW,CAAE,EAC1D,CASO,GAVyD,CAAC,AAUtD,EAAwE,CACjF,IAAM,EAA6C,EAAE,CAYrD,EAZa,EAYR,IAAM,IATc,CACvB,MAQS,IAAe,YARF,CACtB,GAOwC,CAAE,eAPvB,CACnB,yBAAyB,CACzB,sBAAsB,CACtB,4BAA4B,CAC5B,iBAAiB,CAClB,CAOC,EAAQ,IAAI,CAAL,AACL,IAAIwf,EAAAA,mCAAmC,CACrC,EACA,EACA,IAAI,CAAC,EAFM,IAEA,CAAC,GADK,CACD,CAAC,IAAI,CAAC,CAAA,AACtB5D,GAAWA,EACX,CACE,GAFF,CAEMkP,EAAAA,AAFY,6BAEiB,CAC/B,CAAC,EAAA,EAAA,SAAA,MAAA,CAAA,CACA,EACA,IAAA,CAAA,MAAA,CAAA,GADA,CACA,CAAA,IAAA,CAAA,CAAA,AACAlP,GAAAA,GAEA,GAFA,AA0BA,GA1BA,IAQA,EAAA,IAAA,CACA,AADA,IACA4D,EAAAA,mCAAA,CACA,WAAA,CACA,EACA,IAAA,CAAA,MAAA,CAAA,GADA,CACA,CAAA,IAAA,CAAA,CACA5D,AADA,GACAA,EACA,CAEA,GAHA,CAGAkP,EAHA,AAGAA,6BAAA,CACA,0CAAA,CACA,EACA,IAAA,CAAA,MAAA,CAAA,GADA,CACA,CAAA,IAAA,CAAA,CAAA,AACAlP,GAAAA,GAEA,GAIA,AANA,CAOA,CAMA,CAbA,IAMA,CAOA,CAAAA,CAAA,CAAA,CAGAoR,EAAAA,gCAAA,CAAA,CACAT,EAAAA,uBAAA,CACAG,EAAAA,6BAAA,CACAG,EAAAA,6BAAA,CACA,CAAA,CAGA,IAAA,EAAAI,EAAAA,SAAA,qBAAA,CAAA,IAAA,CAAA,SAAA,EAAA,CAAA,CAMA,OAFA,IAAA,CAAA,qBAAA,CAAArR,EAAA,GAEAA,CACA,CAMA,EATA,KAEA,CAFA,CAAA,YASA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAEA,IAAA,EAAA,CACA,eAAA,CADA,AAEA,YAAA,CACA,wBAAA,CACA,eAAA,CACA,cAAA,CACA,UAAA,CACA,mBAAA,CACA,CAIA,EAAA,MAAA,CAAA,KAAA,CAAA,CAFAA,AAEA,EAFA,OAAA,KAEA,CAAA,IAFA,EAAAA,GAEA,IAAA,CAAA,CAFA,CAAA,CAEA,AACA,IADA,MACA,EAAA,OAAA,GAAA,EAAA,QAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAGA,GAAA,CAAA,EACA,OAIA,IAAA,CALA,CAKA,CALA,CAKA,OAAA,EAAA,CAGA,EAHA,EAGA,EAAA,SAAA,SAAA,CASA,CATA,GASA,IAAA,KANA,EAAA,GAMA,IAAA,EANA,SAAA,EAAA,CAMA,CAFA,CAAA,CAJA,OAIA,CAAA,QAAA,CAAA,OAAA,CAAA,EAEA,CACA,IAAA,EAAA,CAAA,CAAA,EAAA,AACA,CAAA,OADA,GACA,EAAA,OAAA,IACA,CAAA,CADA,AACA,EAAA,CAAA,AA3Kf,OA2Ke,EA1Kb,AADO,CACO,CACd,CAAa,CACb,CAAW,EAEX,EAsKa,KAtKN,IALkB,AAKd,KAAK,CAAC,EAAgB,CAC/B,KAAK,CAAC,CAAM,CAAE,CAAO,CAAE,CADM,AACF,EAAsB,MAnCD,EA2C9C,IAAI,EAAU,CAAI,CAAC,AADE,CAAC,CACS,CAA3B,AA3CuD,CA8CvD,CA9C2E,AA8C1E,GAAW,AAAmB,IAHJ,AAG1B,IAA8B,SAAZ,GAAwB,IAAxB,CAA6B,CAAC,OAAO,CAAC,EAAO,CAAC,EAAE,CACrE,EAAU,CAAA,CAAE,CACZ,CAAI,CADJ,AACK,EAAY,CAAI,GAKvB,IAL8B,AAKxB,EALa,CAhDQ,EAoDD,EAAQ,IApDC,CAoDF,IAAU,GAC2B,EAA3C,AAnD1B,AAAL,EAKI,EALA,GAKK,CALI,AAKH,EALK,CAmDwE,CAAC,GA9CvE,CAAC,GAEhB,AAAI,EAAS,EA4CuC,CAAC,AA9C7B,CAAC,EAAE,AAEf,EAAS,CAAC,GACb,EAGF,CAAC,GAAG,EAAU,AAwCiD,AA3CrD,EAGkB,AAJA,CAQrC,AAAwB,AARc,EAAE,CAInB,KAIW,EAA5B,AAA8B,AAJE,OAIzB,EACF,CAAC,EAAU,EAAc,CADvB,AAKJ,EAnBE,CAeS,AAfR,EAAc,EAsDpB,CAnCW,EAJkB,IAoC7B,EAnDmB,AAmDX,KAAD,IAAC,CAAY,EAGb,OAAO,CAAC,KAAK,CAAC,EAHiB,AAGT,EAAS,EACxC,AAD6B,CAC5B,AACL,CAAG,AAF6C,CAAC,AAE9C,AACH,AAH0C,EAgJ3B,EACA,EAEA,CAEA,AAFA,CAHA,AAMA,CACA,gKC1OF,EAAsB2E,EAAAA,eAAtB,OAA4C,CACvD2M,EAAAA,0BAA0B,CAAA,AAC1B,GAAW,IAAIC,EAAAA,8BAA8B,CAAC,IAuGnC,EAAuB1gB,CAvGmB,CAAC,AAuGpBA,gBAAvB,CAAwC,CAAC,AApGvB,CAAC,EAA4B,CAAA,CAAE,GAAvB,CAC9B,CAD0D,AAE/D,IAAI,CAAEygB,EAAAA,IAkGiE,sBAlGvC,CAChC,SAAS,GAAG,AACV,EAAoB,EACtB,CAAC,CACL,CAAG,EAF8B,CAAC,SAAT,sJCJnB,EAAoB,CAAC,cAArB,EAAqC,CAAC,AAerC,OAAM,UAAuC9N,EAAAA,kBAAvC,CAA0D,CAC9D,AADgG,WACrF,CAAC,EAA0C,CAAA,CAAE,CAAE,CAC/D,AADuB,KAClB,CAAC,mCAAmC,CAAEpf,EAAAA,WAAW,CAAE,EAC1D,CAKO,GANyD,CAAC,AAMtD,EAAoC,CAqB7C,OApBe,AAoBR,IApBYwf,EAAAA,AAoBN,mCApByC,CACpD,sBAAsB,CACtB,EACA,IAAI,CAAC,MAAM,CAAC,GADK,CACD,CAAC,IAAI,CAAC,CAAA,AACtB5D,GAAWA,EACX,CACE,GAFF,CAEMkP,EAFY,AAEZA,6BAA6B,CACzC,AAMU,qCAAqC,CACrC,EACA,IAAI,CAAC,MAAM,CAAC,GADK,CACD,CAAC,IAAI,CAAC,CAAA,AACtBlP,GAAWA,GAEd,CAGL,CAKQ,CAVA,GAAkB,EAUZ,CAACA,CAAO,CAAqD,CASzE,OAPIA,EAAQ,OAAD,GAAC,EAA4C,UAAU,EAAxC,AAA0C,OAAnCA,EAAQ,OAAD,GAAC,EACvCwR,EAAAA,mBAAmB,CACjBxR,EAAQ,OAAD,GAAW,CAAC,SAAA,CACnB,IAAI,CAAC,SAAS,EAAE,EAIbA,CACT,CACF,OAFkB,0JChEL,EAAsB2E,EAAAA,eAAtB,OAA4C,CACvD8M,EAAAA,0BAA0B,CAAA,AAC1B,GAAW,IAAIC,EAAAA,8BAA8B,CAAC,IAgFnC,EAAuB7gB,CAhFmB,CAgFnBA,AAhFoB,gBAgF3C,CAAwC,CAAC,AA7EvB,CAAC,EAA4B,CAAA,CAAE,GACrD,AAD8B,EAA4B,AAE/D,IAAI,CAAE4gB,EAAAA,IA2EiE,sBA3EvC,CAChC,SAAS,GAAG,AACV,EAAoB,EACtB,CAAC,CACL,CAAG,EAF8B,CAAC,SAAT,wICRZ,EAA8B5gB,EAAAA,iBAAiB,CAAC,AAAC,IACxD,AAAC8gB,EAAAA,EAD+D,KAAe,EACrE,EAAE,EACdzqB,AADgB,EAChBA,cAAc,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CAAC,gEAAgE,CAAC,AAChF,CAAC,CAAC,CAGG,CACL,IAAI,CAAE,cAAc,AACxB,CAAG,0CAMI,SAAS,EAQd,OAPI,AAACyqB,EAAAA,SAAS,EAAE,EAAE,AAChBzqB,EAAAA,UAFgD,GAAY,CAE9C,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CAAC,yEAAyE,CACxF,AADyF,CACxF,CAAC,CAGG,CACL,IAAI,CAAE,qBAAqB,CAC3B,IAAI,CAAE,WAAW,CACjB,WAAW,EAAE,EACb,EADiB,IACX,CAAE,IAAM,IAAI,AACtB,CAAG,AACH,mIC9Ba,EAA6B2J,EAAAA,iBAAiB,CAAC,AAAC,IACvD,AAAC8gB,EAAAA,EAD8D,KAAe,EACpE,EAAE,EAAE,AAChBzqB,EAAAA,cAAc,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CAAC,+DAA+D,CAAC,AAC/E,CAAC,CAAC,CAGG,CACL,IAAI,CAAE,aAAa,AACvB,CAAG,oCAMI,MAAM,AAIJ,WAAW,EAAG,CACf,AAACyqB,EAAAA,SAAS,EAAE,EAAE,AAChBzqB,CANO,CAA+B,AAMtCA,cAAc,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CAAC,iEAAiE,CAAC,AACjF,CAAC,CAAC,AAEN,CAKO,KAAK,EAAS,CAErB,CAKO,KAAK,EAAS,CAErB,CACF,2JC1CsC2J,EAAAA,iBAAiB,CAAC,AAAC,IACnD,AAAC8gB,EAAAA,EAD0D,KAAe,EAChE,EAAE,EAAE,AAChBzqB,EAAAA,cAAc,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CAAC,2DAA2D,CAAC,AAC3E,CAAC,CAAC,CAGG,CACL,IAAI,CAAE,SAAS,AACnB,CAAG,6HCVmC2J,EAAAA,iBAAiB,CAAC,AAAC,IACnD,AAAC8gB,EAAAA,EAD0D,KAAe,EAChE,EAAE,EAAE,AAChBzqB,EAAAA,cAAc,CAAC,KAEb,CAFmB,MAEZ,CAAC,IAAI,CAAC,2DAA2D,CAC1E,AAD2E,CAC1E,CAAC,CAGG,CACL,IAAI,CAAE,SAAS,AACnB,CAAG,8GCVsC0qB,YAAAA,qBAAAA,4ICoGzC,SAAS,EAEP,CAAa,CACb,CAAI,CACJ,CAAM,CACN,CAAM,CACN,CAAyB,AANP,CACpB,KAkCE,EACA,IADM,UAnBN,OAPA,EAAc,EAAe,AA2BJ,GAzBzB,EAAK,CAF8B,CAAC,AAEhC,AAAgB,EAFP,EAAc,IAEC,EAAE,CAAZ,CAAwB,IAAQ,EAiC3C,AAjCyC,GAAP,EAV3C,IA2CkB,AAAO,CAAQ,EAAyC,AACtE,GADoB,IACb,IAlCkE,CAAC,CAAC,GAmCzE,CAAS,CACT,CAAI,EAEJ,IAAM,EAAO,EAAY,AAAnB,EAA2B,IAAF,GAAP,CAAiB,CAAE,GAE3C,MAFoD,CAAC,AACrD,EAA0B,GACnB,CADuB,CAAC,AACsD,EAAM,EAAF,EAChF,EADwF,AAC/E,EAAW,GAE/B,CAFmB,AAAgB,AAElC,AACH,CAAC,AAHqC,EAAP,CAFF,AAtC7B,EAAK,AAuC4B,EAvCb,AAAhB,SAAyB,EAAX,AAAa,AAgE/B,EAhE4C,EAiE5C,EAjEoD,AAgE9C,EAhE4C,AAwE3C,IAxEoC,KAwE3B,AAAQ,CAAQ,EAA0C,AACxE,IADqB,GACd,EARgB,EAjEoD,CAAC,CAAC,GA0E3E,CAAS,EAET,IAAM,EAAO,EAAP,AAAmB,EAAQ,IAAF,GAAP,EAAkB,CAAE,GAE5C,MAFqD,CAAC,AACtD,EAA0B,GACnB,CADuB,CAAC,AACkD,EAAM,EAAF,EAC5E,EADoF,AAC3E,GAEpB,CAAC,AACH,CAAC,CAHoB,EA9ErB,CA8E+B,CAFF,AA5ExB,AA8E2B,EA9E5B,AAAgB,AA6Ea,QA7EL,EAAE,AAqF9B,CArFkB,CAAwB,EAsF1C,EAtFkD,AAqF5C,EArF0C,AA+FzC,GA/FkC,MA+FzB,AAAO,CAAQ,EAAyC,AACtE,GADoB,IACb,EAVgB,EAtFkD,CAAC,CAAC,GAiGzE,CAAS,CACT,CAAI,CACJ,CAAO,EAEP,IAAM,EAAO,EAAP,AAAmB,EAAQ,IAAF,GAAP,CAAiB,CAAE,EAAU,MAAA,CAAD,CAAW,GAG/D,MAHwE,CAAC,AACzE,EAA0B,GAEnB,CAFuB,CAEe,AAFd,EAEoB,EAAF,EACxC,EADgD,GAC7B,IAAZ,EAA0B,CAHjB,CAG0B,CADtB,CACiC,CAA9C,CAAoD,EAAlB,AAAgB,CAAa,EAAnB,AAA4B,EAAb,AAAwB,GAErG,CAFyF,AAAgB,AAExG,AACH,CAAC,AAH2G,EAAP,CAxGrG,EAAK,EAAD,AAAgB,WAAF,AAAa,EAAE,AA6CjC,EA7CgD,EA8ChD,EA9CwD,AA6ClD,EA7CgD,AAkD/C,MAlDwC,GAkD/B,AAAU,CAAQ,EAA4C,AAC5E,MADuB,CAChB,EALgB,EA9CwD,CAAC,CAAC,GAmDhE,CAAS,EAA+D,AACvF,IAAM,EAAO,EAAP,AAAmB,EAAQ,IAAF,GAAP,IAAoB,CAAE,EAAU,MAAA,CAAD,CAAW,GAElE,MAF2E,CAAC,AAC5E,EAA0B,GACnB,CADuB,CAAC,AACc,EAAM,EAAF,EACxC,EAAS,AADuC,GAG3D,CACF,AADG,CACF,CAHoB,EArDd,CACT,AAoDiC,CAlDjC,AAgD+B,AAEG,EADC,OAjD1B,EAHa,AAKpB,CAAa,CACb,CAAM,EAGN,IAAK,EANe,CACtB,CAKa,IAAU,CAAC,CAAX,OAAmB,CAAE,SAAS,CAAE,QAAQ,CAAE,WAAW,CAAC,CAAE,AAE7D/F,EAAAA,SAAS,CAAC,CAAa,CAAC,CAPhC,CAOuC,CAAC,EAAE,AACpC,CADgC,CACzB,EAAe,EAAhB,CAGV,GAHgC,CAAC,GAG1B,CAHiB,AAI1B,CA4FA,SAAS,EAA0B,AA7Fb,CA6FiB,CAAQ,CAAQ,EAAc,AACnE,OAAOlK,EAAAA,MADsB,CACf,CAAC,IAAI,CAACU,EAAAA,KAAK,CAAC,OAAO,CAACV,EAAAA,OAAO,CAAC,MAAM,EAAE,CAAE,GAAO,CAAH,CAAC,EAChD8L,EADwD,AACxDA,sBAAsB,CAC3B,IACS,EADA,EAER,AACD,IAFiB,AAGX,EAHa,CAEZ,AACE,AACL,EADO,AACF,EAAD,aAAgB,CAAC,GAAG,AAE1B,CAF2B,CAEtB,EAAD,CAAI,EAAE,AACZ,CAAC,EACD,GAGN,CAHU,AAKV,SAAS,EACP,CAAM,CACN,CAAQ,CACR,CAAS,EAET,EALkB,EAKZ,EAAO,EAAO,IAAD,KAAU,CAAC,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAAxL,EAAAA,QAAA,CAAA,MAAA,CAAA,CAAA,CAGA,OAsDA,AAxDA,SAwDA,AACA,CAAA,CACA,CAAA,CA1DA,CA4DA,IAAA,EAAA,EAJA,AAIA,OAAA,CAAA,CAAA,CAAA,GAAA,CACA,EAAA,EAAA,OAAA,CAEA,EADA,AADA,AAEA,EAFA,CACA,CACA,EAAA,GADA,GAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,CACA,QAAA,EAAA,CAAA,CAAA,CAEA,EAAA,CACA,CAAA4P,EAAAA,IADA,mBACA,CAAA,CAAA,EAAA,IAAA,CACA,CAAAC,CADA,CACAA,iBAAA,CAAA,CAAA,EAAA,IAAA,CACA,CAAApM,EAAAA,EADA,iBACA,CAAA,CAAA,oBAAA,CACA,yBAAA,CAAA,EAAA,IAAA,CACA,EADA,oCACA,CAAA,EAAA,SAAA,CACA,IADA,8BACA,CAAA,EAAA,KAAA,CACA,QADA,sCACA,CAAA,EAAA,cAAA,GAAA,CACA,0CAAA,CAAA,EAAA,aACA,AADA,CAAA,AACA,CAEA,CAAA,SAAA,MAAA,CAAA,CAAA,CAAA,EAAA,GAEA,IACA,CAHA,AAGA,CAHA,AAGAqM,CADA,CACAA,CADA,GAFA,eAGA,CAAA,CAAA,CAAA,CAAA,CAEA,IAAA,AACA,CAAA,CADA,AACAC,EAAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,CAGA,EAAA,EAAA,WAAA,CAAA,EACA,EAtFA,EAAA,EAAA,CACA,CAoFA,CApFA,AAoFA,EApFA,EADA,CAAA,OACA,CAAA3C,EAAAA,sBAAA,CAAA,GACA,CACA,CAQA,EATA,CADA,CAAA,KAUA,EAAA,CAAA,EAIA,IAAA,EACA,EAEA,EAFA,CADA,AAGA,CAPA,OAOA,EAAA,OAAA,EAAA,IAAA,CACA,CADA,EACA,EAAA,IAAA,CAAA,CAAA,SAAA,CAAA,GAAA,CAAA,EAAA,AAEA,GAAA,EAAA,IAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAEA,CAFA,CAEA,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,CAAA,UAAA,CAAA,EAAA,CAAA,MACA,GAAA,EAAA,IAAA,CAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CAEA,IAAA,EAAA,EAAA,IAAA,CAAA,CAAA,IAAA,MAAA,CAAA,GAAA,CAAA,CACA,CAAA,CAAA,EAAA,CAAA,IACA,EAAA,EAAA,GAAA,CAAA,CAAA,CADA,AACA,IAAA,CAAA,CAAA,CAAA,GAAA,OAAA,CAAA,GAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CACA,EAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAEA,MAIA,EANA,CAMA,EAAA,CAAA,KAAA,CAAA,EAAA,IAAA,CAAA,CAAA,AACA,CADA,CACA,EAAA,GAAA,CAAA,EAAA,GAGA,CACA,IAAA,EAAA,EAAA,IAAA,CAAA,CAAA,IAAA,MAAA,CAAA,GAAA,CAAA,CACA,CAAA,CAAA,EAAA,CAAA,GACA,EAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CADA,GACA,CAAA,CAAA,CAAA,GACA,EAAA,EAAA,IAAA,CAAA,CAAA,CADA,CAAA,EACA,CAAA,EAAA,CAAA,CAAA,EAEA,EAAA,EAAA,GAAA,CAFA,AAEA,AAEA,CAGA,CALA,KAKA,CACA,OAAA,CAAA,EACA,IAAA,CAAA,AADA,EACA,EAAA,MAAA,CAAA,EAAA,EAAA,CAAA,MAAA,CACA,CAAA,AACA,OAFA,iCA7P1B,SAAS,AACd,CAAM,CACN,CAA0B,CAC1B,CAAI,CACJ,CAAM,CACN,CAAM,EAIN,GAT4B,CASxB,EAFgE,KAAO,CAAD,AAAE,CAGtE,EAAkC,EAAO,IAAD,QADjB,GAA8B,UACa,CAEzB,CAFzC,SAEmD,EAArD,AAAuD,OAAhD,EAHgF,CAIzF,GAA4B,AAAC,IAAI,AAC/B5B,EAAAA,GAD0C,aAA5C,GADS,GAEe,CACpB,IAAM,EAAgC,GAAK,AAC3C,CAD0C,CAAC,EAEpC,GAGLzG,EAHU,AADH,AAIPA,EAHY,EAGR,CAAC,KAAK,CAAC,GAAO,EAAF,CALmB,IAKV,CAAC,AAC5B,CAAC,EACD,GAEJ,CAFQ,AAEP,CAGH,IAAM,EAAqB,IAAIpD,EAAAA,UAAzB,yBAA4D,CAChE,qBAAqB,CACrB,EAEA,AAAC,GAAuB,EAAY,EAAe,EAAM,EAAQ,AAAV,EAAzC,AAA2D,CAAtC,CAA4B,EAAQ,AASzE,CATmD,GAS9C,GAXuB,CAWjB,CAVb,GAG0B,AAOb,CANT,GAMiB,KATiF,AAS5E,CAT6E,AAS3E,wCANyB,CACjD,QALJ,yCAKqD,CACjD,mDAAmD,CACnD,4CAA4C,CAC7C,CAGC,EAAmB,KAAK,CAAC,IAAI,CAC3B,IAAIsL,CADY,CACZA,6BAA6B,CAC/B,EACA,EAA0B,AAC1B,AAFI,GAEa,EAAY,EAAe,EAAM,EAAQ,AAAV,EAAhD,AAAkE,CAAtC,CAA4B,CAAoC,AAC5F,CADgE,CAAtB,CACzB,EAAc,EAAe,CAFpB,IAOhC,CAL0D,CAAC,EAAvB,EAAc,CAK3C,CACT,EAPmG,CAAC,cAMzE,gGCKpB,SAAS,EACd,CAAM,CACN,CAAe,CACf,CAAW,EAEX,OAL8B,AAKvB,SAAS,AAAmB,CAAQ,EAA0D,AACnG,OAAO,QADyB,CACgB,GAAG,CAAI,EAA0C,AAC/F,IAAM,EAA6B,KAA7B,OAAU,OAAO,CAAI,CAAC,CAAC,CAAA,CAAmB,CAAI,CAAC,CAAC,CAAA,CAAI,CAAI,CAAC,CAAC,CAAC,CAC3D,EAAuC,UAAA,EAAnB,GAApB,IAA2B,CAAI,CAAC,CAAC,CAAA,MAAmB,EAAY,CAAI,CAAC,CAAC,CAAC,CAE7E,EAF0D,CAEtD,CAAC,EACH,KADU,EAAE,AACL,EAAS,IAAI,CAAC,CAAN,GAAU,EAAE,EAAG,GAGhC,CAHoC,CAAC,EAG/B,EAAiB,YAAjB,GAAgD,GAAG,CAAW,EAA+B,AACjG,IAAM,EAAe,OAAO,CAAC,EAAvB,CAA0B,CAAC,eAAA,EAAmB,OAAO,CAAC,GAAG,CAAC,SAAA,EAAa,SAAS,CAChF,EAAO,EAAP,AAAc,IAAD,KAAU,CAAC,CAAC,kBAAkB,EAAE,EAAY,CAAA,CAAA,CACA,IAAA,CAAAjN,CADD,CACCA,QAAA,CAAA,MAAA,AACA,CAAA,CAAA,CAEA,EAAA,CACA,OADA,IACA,CAAA,EACA,UADA,IACA,CAAA,EACA,SADA,MACA,CAAA,UAAA,AACA,CAAA,CAeA,OAbA,OAAA,CAAA,GAAA,CAAA,cAAA,EAAA,CACA,CAAA,CAAA,kBAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,cAAA,EAGA,OAAA,CAAA,GAAA,CAAA,2BAAA,EAAA,CACA,CAAA,CAAA,oBAAA,CAAA,CAAA,OAAA,CAAA,GAAA,CAAA,2BAAA,EAGA,EAAA,EAAA,WAAA,CAAA,GACA,GAAA,IADA,CAAA,MACA,CAAA,EAAA,GAIAN,CAJA,CAAA,AAIAA,OAAA,CAAA,IAAA,CAAAU,EAAAA,KAAA,CAAA,OAAA,CAAAV,EAAAA,OAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,QACA,EADA,EACA,EACA,EAEA,CAHA,EAGA,CACA,AAHA,EAGA,IAAA,EAAA,EAAA,KAAA,CAAA,IAAA,CAAA,EACA,CAAA,MAAA,CAAA,CADA,AACA,CADA,AAEA,EAAA,CAAA,AACA,CAUA,CAXA,EAGA,GAAA,YAAA,GAAA,EAAA,EAAA,CAEA,EAFA,CAGA,AAHA,EAEA,AACA,EADA,AACA,aAAA,CAAA,GAGA,EAHA,AAGA,CAHA,CAGA,CAAA,EAAA,CAEA,EAEA,GAFA,EAAA,CACA,MAAA,GAAA,SAAA,GAAA,EAAA,EAAA,CACA,EADA,AAIA,CAJA,EACA,IAGA,CACA,CAAA,CAAA,AACA,CAAA,EAFA,MAIA,EACA,EAAA,IAAA,CAAA,CAAA,GAAA,CAAA,EAAA,CADA,EAAA,AAGA,EAAA,IAAA,CAAA,CAAA,GAFA,AAEA,CAFA,AAEA,EAEA,CAAA,AACA,CAAA,AACA,CAkEA,SAtEA,AAsEA,CAtEA,CAuEA,CAAA,CACA,CAAA,EAoBA,IAAA,IAAA,IAlBA,CACA,CAiBA,AAtBA,IAsBA,OAjBA,AAiBA,CAAA,AAhBA,WAAA,CACA,QAAA,CACA,mBAAA,CACA,kBAAA,CACA,iBAAA,CACA,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,mBAAA,CACA,mBAAA,CACA,kCAAA,CACA,kCAAA,CACA,kCAAA,CACA,kCAAA,CACA,CAGAkK,EAAAA,SAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,AACA,CADA,CACA,EAAA,EAAA,CAGA,GAHA,CAAA,GAGA,CACA,AAJA,YAGA,MAtPhE,SAAS,AACd,CAAM,CACN,CAA0B,CAC1B,CAAI,CACJ,CAAM,CACN,CAAM,EAEN,GAP4B,CAOxB,EAA2B,KAAO,CAAD,AAAE,CACnC,EADW,AACkB,KAAO,CAAD,AAAE,CACnC,EAAY,CADF,CACS,IAAD,CAAlB,IAA4B,EAAE,SAAS,CACvC,EAAoB,EAAO,IAAD,KAAU,EAAE,EAAtC,SAAiD,CACjD,EAAqB,EAAO,IAAD,KAAU,EAAE,GAAvC,SAE4B,AAFuB,AAErD,UAAwC,EAAE,QAAnC,IACT,EAAe,CAAC,EAAY,EAAR,CAAW,EAC7B4B,EAAAA,CAD2C,CADpC,oBAEe,CACpB,IAAM,EAAmB,EAAM,EAAF,CAAK,AAAC,AACnC,CADmC,GAE5B,GAGLzG,EAJO,AAIPA,AAHU,EAFY,AAEV,EAGR,CAAC,KAAK,CAAC,GAAO,EAAF,KAAS,CAAC,AAC5B,CAAC,EACD,GAEJ,CAAC,AAFO,CAIuB,AAA7B,UAAuC,EAAE,OAAlC,IACT,EAAc,AAAC,IAAI,AACjByG,EAAAA,GADF,AAA8B,EADrB,iBAEe,CACpB,IAAM,EAAkB,GACxB,AAD6B,CAAD,CAAC,EAEtB,GAGLzG,EAJO,AACG,AAGVA,EAHY,CAFS,CAKjB,CAAC,KAAK,CAAC,GAAO,EAAF,KAAS,CAAC,AAC5B,CAAC,EACD,GAEJ,CAFQ,AAEP,CAGH,IAAM,EAAqB,IAAIpD,EAAAA,mCAAmC,CAAC,oBAAoB,CAAE,GA2BzF,MA1B4B,AAO5B,CANE,CAAE,IAAI,CAAE,UAFyG,CAAC,CAQjG,kCANqC,CAAE,WAAW,CAAE,UAAA,CAAY,CACjF,CAAE,IAAI,CAAE,kDAAkD,CAAE,WAAW,CAAE,WAAA,CAAa,CACtF,CAAE,IAAI,CAAE,kDAAkD,CAAE,WAAW,CAAE,WAAA,CAAa,CACtF,CAAE,IAAI,CAAE,sCAAsC,CAAE,WAAW,CAAE,SAAA,CAAW,CAC1E,CAEoB,OAAO,CAAC,CAAC,MAAE,CAAI,aAAE,CAAA,CAAa,IAChD,CADqD,CAClC,KAAK,CAAC,IAAI,CAC3B,IAAIsL,CADY,CACZA,6BAA6B,CAC/B,EACA,EAA0B,AAC1B,AAFI,GAGF,CAmG6D,SACA,AADA,AApG/D,CAqG+D,CACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,AAxG1C,CAyG0C,CAAA,AA3GrC,EA+GqC,MAVA,CAQA,EAAA,EAAA,GAEA,GACA,AAHA,CAAA,GAGA,CAHA,GAEA,GAFA,GAGA,CACA,EAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,CAAA,CAAA,CAAA,CACA,EAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CAAA,CAAA,CACA,KAEA,KAAA,WAAA,CACA,EAAA,EAAA,WAAA,QAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,eAAA,CAAA,CAAA,CACA,EAAA,EAAA,WAAA,QAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,eAAA,CAAA,CAAA,CACA,EAAA,EAAA,WAAA,QAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,eAAA,CAAA,CAAA,CACA,EAAA,EAAA,WAAA,QAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,eAAA,CAAA,CAAA,CACA,EACA,EACA,AAFA,WACA,uBACA,CACA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,eAAA,CAAA,EAEA,EACA,EADA,AAEA,WADA,uBACA,CACA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,eAAA,CAAA,EAGA,EACA,EADA,AAEA,WADA,uBACA,CACA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,eAAA,CAAA,EAGA,EACA,EADA,AAEA,WADA,uBACA,CACA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,eAAA,CAAA,EAEA,KAEA,KAAA,WAAA,CACA,EAAA,EAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,QAAA,CAAA,CAAA,CACA,KAEA,KAAA,SAAA,CACA,EAAA,EAAA,WAAA,QAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,aAAA,CAAA,CAAA,CACA,EAAA,EAAA,WAAA,OAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,YAAA,CAAA,CAAA,CACA,EAAA,EAAA,WAAA,MAAA,CAAA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,WAAA,CAAA,CAAA,CACA,EACA,EADA,AAEA,WADA,cACA,CACA,EAAA,EAAA,EAAA,EAAA,QAAA,GAAA,mBAAA,CAAA,CAGA,CAEA,OAAA,CACA,GAhK3D,EACA,EACA,EADI,AAEJ,EACA,CA2J2D,CA7JrD,EACA,CAHO,QAIX,EAAa,SAAF,GAAc,GAAE,WAAA,CAAW,CACxC,GAAW,AAEf,GAAiB,EAAsB,EAAe,CAFvC,GAKrB,CAAC,CAHiE,AAGhE,CAHiE,AAK5D,CACT,GAN4D,MAAd,QAKnB,iJC3FrB,EAAsE,CAAA,CAAE,CACxE,EAA6B,CAAC,YAAY,CAAC,CAAA,AAC3C,CAD2C,CACd,CAAC,MAD9B,KADoC,CACO,AACD,CAAC,AAK1C,CAL0C,CAAA,KAKpC,GALP,OAKuC1L,EAAAA,OALI,IAKpC,QAAmD,CAAgC,AACvF,WAAW,CAAC,EAAwC,CAAoC,CAAE,CAC/F,CADuB,IAClB,CAAC,kCAAkC,CAAEpf,EAAAA,WAAW,CAAE,EACzD,CAMgB,GAP+C,CAAC,KAOvC,CAAC,EAAwC,CAAA,CAAE,CAAQ,CAC1E,AAD8B,KACzB,CAAC,SAAS,CAAC,CAAE,GAAG,CAAoC,CAAE,GAAG,CAAA,CAAQ,CAAC,AACzE,CAOU,IAAI,EAAuF,CACnG,IAAM,EAAiD,EAAE,CAKzD,EALa,KAEb,EAAQ,IAAI,CAAL,AAAM6tB,EAAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAE,EAA4B,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,OAAO,CAA1B,AAA4B,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CACjH,EAAQ,IAAI,CAAL,AAAMC,EAAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAE,EAA4B,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,OAAO,CAA1B,AAA4B,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAE1G,CACT,CACF,KAFkB,qJChCZ,EAAmB,UAAU,CAE7B,EAAwC,CAFxC,AAGJ,GADU,sBACe,CAAA,AAAE,IAAA,AACzBpF,EAAAA,EADiC,aAClB,CAAC,EAAM,EAAF,4BAAgC,CAAC,CAErD,EAAK,EAAD,UAAa,CAACplB,EAAAA,4BAA4B,CAAE,UAAU,CAAC,AAC7D,CAAC,CACD,SAAS,CAAE,CACT,WAAW,CAAA,AAAE,IAAA,AACXolB,EAAAA,EADmB,aACJ,CAAC,EAAM,EAAF,4BAAgC,CAAC,CAErD,EAAK,EAAD,UAAa,CAACplB,EAAAA,4BAA4B,CAAE,cAAc,CAAC,AACjE,CAAC,CACD,SAAS,CAAE,MAAO,CAAC,CAAE,KACf,AADoB,IAEtBkK,CAF2B,AACpB,CACPA,CADS,eACO,CAAC,EAAO,CACtB,EADoB,OACX,CAAE,CACT,IAAI,CAAE,8BAA8B,CACpC,OAAO,EAAE,CACrB,CAAW,AACX,CAAS,CAAC,CACF,AAHkB,MAGZuO,EAAAA,KAAK,CAAC,IAAI,CAAC,AAErB,CAAC,AACL,CAAG,AACH,CAAC,CAEY,EAAqBwE,EAAAA,cAArB,QAA2C,CAAC,EAAkB,IAAM,IAAIwN,EAAAA,IAAZ,mBAAmC,CAAC,MAAM,CAAC,mBAWjFthB,EAAAA,iBAAiB,CATtB,AASuB,KAR5C,CAD2B,AAEhC,IAAI,CAAE,EACN,OAMqE,EAN5D,GAAG,AACV,EAFoB,CAGtB,CAAC,CACL,CAAG,YAFqB,EAAE,ogBCNnB,SAAS,EACd,MAAO,CACLuhB,EAAAA,kBAAkB,CAFwB,CAEtB,CACpBC,CAH4D,CAG5DA,kBAAkB,EAAE,CACpBC,EAAAA,kBAAkB,EAAE,CACpBC,EAAAA,eAAe,EAAE,CACjBC,EAAAA,gBAAgB,EAAE,CAClBC,EAAAA,mBAAmB,EAAE,CACrBC,EAAAA,gBAAgB,EAAE,CAClBC,EAAAA,iBAAiB,EAAE,CACnBC,EAAAA,gBAAgB,EAAE,CAClBC,EAAAA,mBAAmB,EAAE,CACrBC,EAAAA,iBAAiB,EAAE,CACnBC,EAAAA,eAAe,EAAE,CACjBC,EAAAA,cAAc,EAAE,CAChBC,EAAAA,kBAAkB,EAAE,CACpBC,EAAAA,kBAAkB,EAAE,CACpBC,EAAAA,sBAAsB,EAAE,CACxBC,EAAAA,gBAAgB,EAAE,CAClBC,EAAAA,kBAAkB,EAAE,CACpBC,EAAAA,sBAAsB,EAAE,CAGxBC,EAAAA,oBAAoB,EAAE,CACtBC,EAAAA,oBAAoB,EAAE,CACtBC,EAAAA,mBAAmB,EAAE,CACrBC,EAAAA,iBAAiB,EAAE,CACnBC,EAAAA,sBAAsB,EAAE,CACxBC,EAAAA,sBAAsB,EAAE,CACxBC,EAAAA,qBAAqB,EAAE,CACvBC,EAAAA,mBAAmB,EAAE,CACtB,AACH,6CAMO,SAAS,EACd,MAAO,CACLC,EAAAA,oBAAoB,CACpBC,EAAAA,MAHoD,GAAmD,SAGrF,CAClBC,EAAAA,iBAAiB,CACjBC,EAAAA,iBAAiB,CACjBC,EAAAA,iBAAiB,CACjBC,EAAAA,mBAAmB,CACnBC,EAAAA,cAAc,CACdC,EAAAA,cAAc,CACdC,EAAAA,eAAe,CACfC,EAAAA,aAAa,CACbC,EAAAA,qBAAqB,CACrBC,EAAAA,eAAe,CACfC,EAAAA,kBAAkB,CAClBC,EAAAA,eAAe,CACfC,EAAAA,gBAAgB,CAChBC,EAAAA,kBAAkB,CAClBT,EAAAA,cAAc,CACdU,EAAAA,iBAAiB,CACjBC,EAAAA,eAAe,CACfC,EAAAA,iBAAiB,CACjBC,EAAAA,qBAAqB,CACrBC,EAAAA,iBAAiB,CACjBC,EAAAA,mBAAmB,CACnBC,EAAAA,kBAAkB,CAClBC,EAAAA,gBAAgB,CAChBC,EAAAA,oBAAoB,CACpBC,EAAAA,kBAAkB,CAClBC,EAAAA,qBAAqB,CACrBC,EAAAA,qBAAqB,CACrBlE,EAAAA,mBAAmB,CACpB,AACH,0DCrGG,IAAA,EAAA,EAAA,CAAA,CAAA,kDCkII,IAAM,EAAc,IAAI,KAAP,gBAnHa,CAGlB,CMHC,AJHF,AKaE,EJfA,cHQD,GAAA,AAGA,ECLb,yBDKyC,ECLb,CDKgB,AAAC,CASjD,OAAO,CAAiC,CAAA,KAChC,EAAyB,CAAA,CAAE,CAAC,AAE5B,EAAA,CAAA,EAAgB,CGRD,CAAC,AIeW,SNbI,EMaJ,KPPK,AOOL,EPPK,4BAChC,EAAW,CAAA,EAAG,EAAA,IAAH,YAAG,AAAgB,EAAC,mBAAmB,CAAC,CAAC,QAGpD,CACF,IAAA,EAAA,GAFe,CAEf,CETmB,AFSW,CETV,MKgBmB,iBPPe,CAAC,GACvD,MAAM,CAAC,GAD6D,CAAC,CAAC,CACzD,CAAC,EAAY,QAAF,CACjB,CAAC,CAAA,CACR,EAAA,EAF0C,CAAC,CAEvC,AAFwC,CAEvC,KAAK,CAAC,CAAA,oBAAA,EAAuB,CAAC,YAAY,KAAK,CAAC,AAAE,CAAD,AAAE,CAAC,OAAO,CAAC,AAAE,CAAD,AAAE,CAAA,CAAE,CAAC,CAAC,AAQ5E,OAJI,IACF,CAAU,CAAC,EOQW,GPTT,AOSS,EPTP,YACa,CAAC,CAAG,COQe,CPRJ,CAAC,AAGvC,CAAE,EOKqC,EAAE,CAAC,KPL9B,EAAA,CAAE,AACvB,CADwB,AACvB,AAkBO,wBAAwB,CAAC,CAAyB,CAAA,CACxD,GAAI,CAAA,EAAmB,MAAO,CAAA,CAAE,CAAC,AAEjC,IAAM,EAAyB,CAAA,CAAE,CAAC,AAKlC,IAAK,CALW,GAKL,KAJqB,EAAiB,KAI1B,AAJ+B,CACpD,GAGyB,CAHrB,CAAC,GADyC,QAIR,KAHjB,CACtB,CAEyC,AAFxC,CAGA,IAuBI,EACA,EAxBE,EAAyB,EAAa,EAuBtB,CAAC,EAvB0B,CAC/C,AAuBsB,CAAC,CAxBP,EAAyB,AACrC,CAAC,yBAAyB,CAC/B,CAAC,AAIF,GAA4B,GAAG,CAA3B,EAAa,MAAM,CACrB,ECX8B,CDUhB,GACR,AAAI,ICXsD,CAAC,ADWlD,CACb,CAAA,8CAAA,EAAiD,EAAY,UAAA,2FAAA,CAAK,EAKtE,CAJM,CAAA,CAIA,CAAC,EAAQ,EAAS,CAAG,CAAd,CACP,EAAM,CAAH,AADc,CACJ,IAAD,AAAK,EADgB,AACd,CADe,AACd,AACpB,EAAQ,EAAS,CAAZ,GAAgB,EAAE,AAAP,CAEtB,AAF8B,GAEX,CAAC,EAAE,CAAlB,EAAI,CAAD,KAAO,CACZ,MAAU,AAAJ,KAAS,CACb,CAAA,sCAVE,CAAoG,CACvG,CAAC,iBASA,EAA6D,EAAY,EAAA,CAAI,CAC9E,CAKH,AALI,GAKA,CACF,CAP2E,CAO9D,QAAH,UAAqB,CAAC,GAAG,AACnC,CADoC,CACrB,AADsB,SCdlB,CAAuB,ADe9B,CCf+B,ODeV,CAAC,GAClC,EADuC,CAAC,CAAC,EAClC,CAAC,CAAE,CACV,MAAM,AAAI,KAAK,CACb,CAAA,yDAAA,EAA4D,EAAY,GAAA,EAAM,CAAC,IAAP,QAAmB,KAAK,CAAC,AAAE,CAAD,AAAE,CAAC,OAAO,CAAC,AAAE,CAAD,AAAE,CAAA,CAAE,CACnH,CAAC,AACH,AAED,GAAI,EAAW,MAAM,CAAG,CAAV,GAAc,CAAC,WAAW,CACtC,CADwC,KAClC,AAAI,KAAK,CACb,CAAA,4CAAA,EAA+C,IAAI,CAAC,WAAW,CAAA,cAAA,EAAiB,EAAU,EAAA,CAAI,CAC/F,CAAC,AAGJ,GAJ8F,AAI1F,EAAa,MAAM,CCnBJ,AAAqB,CAAA,GDmBV,CAAC,WAAW,CACxC,CAD0C,KACpC,AAAI,KAAK,CACb,CAAA,8CAAA,EAAiD,IAAI,CAAC,WAAW,CAAA,qBAAA,EAAwB,EAAU,EAAA,CAAI,CACxG,CAGH,AAHI,CAGM,CAAC,CAJ4F,CAIjF,CAAG,EAC1B,AAED,KAHuB,EAGhB,CACT,CAAC,CAJwC,AAK1C,CAL2C,CCjBzC,KDoBkB,CAAC,+CExHhB,CAAC,SACK,ECFE,ADEM,KAAD,CAAC,CADK,CCFC,ADGE,CGUC,CDNC,AFJA,IACnB,CGSwB,IDNI,CAAC,GFFhC,EAAmB,CAAC,MAAM,EAAO,CAAA,CAAA,EAAD,CGQmB,AHRlB,CGQmB,EHRnB,CAA2B,CAAC,AAC1D,CADwD,ICD/C,CAAC,CJIO,KGFL,CAAC,AAChB,kBAEA,EAAmB,CAAC,GKaK,GAAA,EAAA,CAAA,CAAA,OAAA,CLbkC,CACxD,AHG2D,AGJF,YACzD,CACH,sBAEmB,CAAC,MAAM,ECD0B,ADCnB,CAAA,CCDqB,ADCrB,EAAD,CAAC,IAAuB,CAAC,CAAC,AAAC,YAAY,CAAC,UAErE,QACH,EAAmB,CAAC,KCDN,CDCM,CCDJ,CDCI,CAAA,CAAA,GAAJ,IAAI,CAAqC,CAAE,AAAD,YAAa,CAAC,AACxE,ICDQ,EDCF,GEQW,KFNjB,EAAmB,CAAC,CCDZ,KDCkB,EKaK,CAAA,CAAA,GLbf,IKae,CLbkC,CAAC,AAC/D,OCDW,CAAC,IDCA,CAAC,AAKtB,OAAO,UEAmB,IAZ5B,AAYgC,MAZ1B,AACJ,GGgBiC,IHhB1B,CAAA,CAAA,CAOL,MAAO,CAAE,WANsC,CHoHrB,WAAoB,CGnH1B,AHmH2B,CGnH3B,EAAA,EAAA,QAAA,AAAQ,IHqEF,YGpEN,CDpBK,AAAC,EEEE,CGDC,CNDC,CMCC,ANDA,EECE,CECC,CFDC,CECC,ACyBL,CJxBzB,AHD+B,ADDA,AQCA,ACDA,CRCC,AOAA,ARDA,EIDU,EAAU,AGEhB,EHErC,AAJuD,GCU1C,CCR8B,CDDC,AAS7B,ACR6B,CHG9B,CCFC,ACF+B,IIAI,CLI9C,AKJ+C,CJAC,GECG,CAAC,CJK9C,CCFC,AAChB,CADiB,CKKb,GADuB,ALHtB,MACH,CCNyE,CAAC,IDMnE,OACT,KAAK,YACI,uBAEA,CHMsB,IIGG,CAAA,EAAA,EAAA,IAAA,AAAI,EAAE,CGOC,AHPA,EH6EjB,kBK3Ef,ECSL,CAAA,GDTsB,MAVxB,gBAMK,CAAE,QFGM,GJPW,CC4KF,SAAkB,CAAC,AE3KlC,AGAS,CHAT,IAGX,EKII,KLJI,GACN,IAAK,cACI,CJKK,QIJd,KAAA,QACE,MAAO,yBAEA,GAEb,CAAC,CAAC,AGXoB,CAAA,EAAA,EAAA,QAAA,AAAsB,EAAE,CAAC,ELqLhB,YAAqB,CAAC,AKpL9B,CAAA,EAAE,EAAA,OAAA,OAIxB,CCiCY,EAAkB,IAAI,AA/BnC,aACS,CAAiC,CRTzB,OQUkB,CNkOH,aAAsB,AO7OrB,CP6OsB,AMjO/B,QAAU,CDVC,ECUE,CNsMO,ICnNJ,CAAC,oBDmNqC,CMrMxC,ANqMyC,QMrMjC,KAAK,CN8MP,yBAAkC,CAAC,AGpN1C,QGOS,QAAQ,CN2Lb,sBAA+B,CM1LrC,AN0LsC,CGjMrC,AGQ5B,QAAQ,EJdU,EIcN,CAAA,ANd4C,CAAC,CMc1C,CLbC,GKcb,QAAQ,QAAQ,YACR,IAAI,CAAA,KAAM,CAAC,CAAC,CAAC,ADTQ,EAAE,ALgQE,CKhQD,wBLgQmC,CMrPxC,ANqPyC,EG1PjC,CAAC,IGKF,CAAC,QAAQ,CAAC,IAAI,CN4OlB,sBAA+B,CM3OrC,AN2OsC,CFnPvD,EAAE,EAAE,IE0OpB,6BAAsC,CAAC,AMjOC,CLbD,QKaU,EAG3C,QAAQ,ELdF,EKcM,CAAC,MAAM,CAAG,CLhB0C,AKgBzC,EAAE,EACjB,CAAC,ANsKmB,ID7Kb,aC6KuC,CMtKxB,ANsKyB,CMtKzB,QAAW,IAAI,CAAC,EAAC,AAAC,CAAC,IAGjD,CACF,CNjBwE,CAAC,EMiBnE,CPXyD,CAAC,AOW/C,CPXgD,COW9C,AAAC,CAAA,GAAN,APRC,IOQa,EAAE,CAAC,AAC/B,CAAA,CAAW,ANqMiB,eD5MJ,AC4M4B,CMrMtB,ANqMuB,CMrMpB,EAAS,QAAQ,CAAC,AACnD,MAAO,CAAC,CAAE,CACV,EAAA,IAAI,CAAC,KAAK,CNbgB,AMaf,CAAA,+BAAA,EAAkC,CAAC,CAAA,CAAE,CAAC,CAAC,AACnD,AAED,MAAO,CAAE,UAAU,EAAA,CACrB,AADuB,CAAC,AACvB,CACF,mBC7BM,IAAA,EAAkC,CNHP,GMVlC,AAa6C,GNHL,CAAC,EMVnC,AACJ,OAAO,CAAiC,CAAA,CACtC,MAAO,CFCK,AEAV,CRAW,CQUqD,ENd9C,AMcgD,ANHR,OMP9C,CP8SsB,IF5SD,iBE4S+B,CAAC,AO7SrC,CAAA,EAAE,EAAA,UAAA,AAAU,EAAE,uITFjB,CAC7B,EAAkC,CAAA,CAAE,EAC1B,CACV,AAWO,CAZK,AACmB,EAAO,SAAS,EAAI,EAAA,AAAE,CAAC,CAAC,GAAG,CAAC,AAAC,CAAC,EAAE,SAErD,EODO,CAAA,EAAA,CFGC,CEHD,4BAAA,APCgC,EAAC,CAAC,CAAC,MAAM,CAAC,iBACnD,CAAC,KAAK,CAAC,CAAA,EAAG,EAAA,WAAa,CAAC,CQSC,GAAA,CAAA,gBAAA,CRTqB,CAAE,GAC7C,EACP,CKGD,AFRS,CEQR,CLL4D,CAAC,CAAC,CAC/C,AKEA,ALDR,EAAG,KQUD,GRTT,EAAA,IAAA,CAAA,KAAA,CAAW,CAAA,EAAA,EAAA,WAAgB,CAAC,IAAI,CAAA,SAAA,EAAY,CAAC,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC,sBAG7D,CAAC,CKKG,ALLF,CAEe,MAAM,CAAA,CAAA,EACf,IQQsB,ARRT,EAAI,AQQgB,CRRjB,IAAM,CAAC,GAAS,CAAA,EACtC,EAAA,AADqC,CAAC,YACtC,AAAa,EAAE,CAChB,CAAC,6ZU0DyF,SAAA,EACA,CAAA,CACA,EAAA,CAAA,CAAA,CAFA,CAKA,CAHA,GAGA,EAAA,IAAAsE,EAAAA,AAAA,mBAAA,CAAA,CACA,OAAA,CAAA,IAAAC,EAAAA,aAAA,CAAA,GACA,GADA,CAAA,IACA,CAAAC,EAAAA,eAAA,EAAA,CAAA,KAAA,CACAC,EAAAA,sBAAA,CAAA,CACA,CAAAC,EAAAA,iBAAA,CAAA,CAAA,MAAA,CAEA,CAAAC,EAAAA,6BAAA,CAAA,CAAA,QAAA,CACA,CAAAC,EAAAA,oBAAA,CAAA,CAAAhyB,EAAAA,WAAA,AACA,CAAA,CAAA,EAEA,uBAAA,CAAA,GAAA,CACA,cAAA,CAAA,CACA,IAAAiyB,EAAAA,mBAAA,CAAA,CACA,OAAA,CAAA,EAAA,EAAA,IAAA,MAAA,EAAA,CAAA,SAAA,UAAA,CAAA,AACA,CAAA,CAAA,IACA,EAAA,KAAA,SAAA,EAAA,EAAA,CAEA,AADA,AADA,CAEA,CAAA,CAGAhU,EAAAA,KAAA,CAAA,uBAAA,CAAA,GACAL,EAAAA,GADA,CAAA,OACA,CAAA,mBAAA,CAAA,IAAAsU,EAAAA,gBAAA,EAAA,AAEA,CAFA,GAEA,EAAA,IAAAC,EAAAA,EAAA,kBAAA,CAGA,CAHA,MACA5U,EAAAA,OAAA,CAAA,uBAAA,CAAA,GAEA,CAAA,EAAA,EAAA,EAFA,CAAA,CAEA,IAAA,kBAAA,EAAA,CAAA,AACA,CAGA,SAAA,EAAA,CAAA,EAAA,AACA,GAAA,IAAA,EAAA,GAMA,GAAA,MAPA,AAUA,OATA,AAOAtd,AAEA,EAFAA,IADA,GAAA,IACA,EACAuxB,EAAAA,KAAA,CAAA,GACA,CADA,CAAA,CAAA,MAFA,EAAA,wDAEA,EAAA,MA5G1D,IA8G0D,GA9GjD,AA8GiD,GAAA,CAAA,EAAA,MAAA,CAFA,AAEA,CAFA,CAAA,CAAA,EAEA,CAAA,GAAA,CACAvxB,EAAAA,WAAA,EADA,AACAuxB,CADA,CACAA,KAAA,CAAA,IAAA,CAAA,+EAAA,CAAA,CACA,MACA,CAEA,AAHA,OAGA,EAHA,AAIA,iBADA,mCAzGtF,SAAS,AAAkB,CAAM,CAAc,EAA0C,CAAA,CAAE,EAC5F,AADoG,CAA7C,CAChD,IAAD,GADqB,GACV,EAAE,CAAC,KAAK,EAAE,AAC7BD,EAAAA,wBAAwB,EAAE,CAG5B,GAAM,CAAC,EAAU,EAAuB,CAAI,EAAU,CAAvC,CAA+C,GAC9D,CAD4D,CAAP,AAC9C,EAD8D,CAAC,CAChE,OADkC,EACjC,CAAgB,EACvB,EAAO,IADwB,AACzB,mBAAC,CAA0B,CACnC,sBAD0D,GAanD,SAAS,AAAqB,EAA8B,CAAA,CAAE,EAAQ,CAAjC,KAC1C,MAAM,EAD4B,KAC1B,CAAA,CAAM,CAAI,EAEd,GACFC,EAHuB,AAEhB,AACPA,EADS,GACA,CAAC,MAAM,EAAE,CAGpB/K,EAAAA,mBAAmB,EAAE,CAGrB,CASyB,EATP,EAAQ,KAAD,OASgB,AATxB,AAAqB,CAAC,AAUjC,CADmF,CACrEgL,EAAAA,OAAd,iCAAsD,EAAE,CAE9D,AAAK,EAKE,EAAY,AALf,MAKqB,CAAA,AAAC,EAAR,EAChB,CANmB,EAAE,CAMf,EAAA,AAAK,EAAgB,EAAE,CAC7B,IAF2C,GAEpC,EAAiB,CADE,GACE,CAAC,AAAD,GAAoB,EAAA,EAAO,EAAhC,CAAmD,EAAE,AAAC,UAAU,AAAhC,CAAiC,CAAC,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AACA,CAAA,CAAA,CAPlF,GAb+B,GAmBmD,IAnB5C,CAAC,AAa5B,AAb2B,EAAC,EAC9C,EADoD,AAClD,EAAE,AAEA,GACFD,EADO,AACPA,EADS,GACA,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE,AAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,AAEhE,CAAC,CAAC,AACJ,uLCxDO,SAAS,IAId,OAH6BY,AAGtB,EAHsBA,sBAA8B,EAAE,CAI1D,EALmD,GAAkB,CAK/D,CAAA,AAAC,GAAoC,QAApC,CAAe,EAAY,IAAA,EAAwC,AAArB,GAApB,QAAoD,AAArB,KAAC,IAAA,EACjE,MAAM,CAACrM,EAAAA,eAAe,EAAE,CAAEC,EAAAA,0BAA0B,EAAE,CAAC,AAC5D,CAGO,SAAS,EAAuB,CAAO,EAA0B,AACtE,MAAO,IACF,OAKCxhB,AAP8B,EAO9BA,eAAe,CAAC,GAAW6tB,EAAAA,EAAJ,CAAA,OALgB,EAAE,kBAKgB,EAAC,CAAI,EAAE,CAExE,AAFyE,AACtE,CAaH,SAAS,EACP,EAAmC,CADvB,AACuB,CAAE,CACrC,CAA0B,CADnB,CAGPnN,EAAAA,gBAAgB,CAAC,EAAS,KAAF,CAAQ,CAAC,CAEjC,IAAM,EAASoN,EAAAA,EAAT,EAAqB,CAAC,CAC1B,GAAG,CAAO,CAEV,mBAAmB,CAAE,EAAQ,KAAD,cAAC,EAAuB,EAA2B,EACnF,CAAG,CAAC,CAUF,EAXwF,CAAC,IAIrF,GAAU,CAAC,EAAX,AAAmB,KAAD,CAJ0D,gBAInC,EAAE,CAC7CC,EAAAA,iBAAiB,CAAC,EAAQ,CACxB,GADsB,WACR,CAAE,EAAQ,KAAD,sBAA4B,AACzD,CAAK,CAAC,CACFC,EAAAA,0BAA0B,EAAE,EAGvB,CACT,KADe,2EA3BR,SAAc,AAAL,EAAwC,CAAA,CAAE,AAAtC,EAAgE,AAClF,CAD0B,MACnB,EAAM,EAAS,CAAV,CACd,GADsB,iBAAwB,CAAC,cAgCxC,SAAS,AAA+B,EAAmC,CAAA,CAAE,EAA0B,AAC5G,CADoD,MAC7C,EAAM,EAAS,CAAV,GAAgB,CAAR,CAAU,CAChC,AADiC,MADa,qwPCtD1C,sBAAsB,GAAwB,SAAS,6DAFvD,EAAsC,IAAI,CAC1C,EAAgC,IADnB,AACuB,QAAtB,eA6La,SAAA,CAAA,EAAA,IACA,EAEA,GAAA,GAAA,CAFA,GAEA,AAHA,MAGA,CACA,CADA,CACA,EAAA,KAAA,KAAA,KACA,CACA,IAAA,EAAA,OAAA,CAAA,GAAA,EAAA,CACA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CACA,CADA,CACA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAEA,EAAA,UAAA,CAAA,IAAA,EAAA,SAAA,CAAA,GAAA,WAAA,CAAA,CAAA,CACA,CADA,CACA,EACA,EAAA,GADA,OACA,CADA,AACA,IAAA,EAAA,SAAA,CAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,AACA,EAAA,CAAA,CAAA,AAEA,CAEA,GAAA,CAAA,AAJA,EAKA,MAAA,CADA,AAEA,EAFA,OAEA,CAAA,EAAA,CACA,aAAA,CAAA,EAAA,CACA,YAAA,CAAA,EAAA,AACA,CAAA,CAIA,GAAA,GAAA,IAAA,GAAA,GAAA,CAAA,EAAA,CAAA,IAAA,WAAA,GAAA,CACA,CADA,MACA,EAGA,GAAA,QAHA,OAGA,CAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CA1GA,AA0GA,SA1GA,EAAA,CAAA,CAAA,EAAA,CA0GA,CA1GA,CAAA,GAAA,CAAA,EAAA,AACA,CADA,GACA,EAAA,EAAA,CACA,EAAA,CAFA,CAEA,CACA,EAAA,CAFA,CAEA,CAEA,EAHA,CAGA,CAFA,AAGA,IAAA,EAAA,EAAA,GAAA,QAAA,CAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,CAAA,CAAA,AACA,EAAA,EAAA,IAAA,CAAA,KAAA,GAAA,AArHX,QAAQ,EAqHG,AArHgB,CAqHhB,EAAA,GAAA,CAAA,CAAA,AApHT,CAoHS,SApHT,GAAb,GAAwC,KAAxC,KAAwC,GAAb,GAAwC,KAAxC,IAAwC,GAAb,GAAuC,SAAS,GAAtB,IAsH1D,GAAA,CAtH0D,CAsH1D,CAEA,IAAA,CAFA,CAEA,EAAA,GAAA,EAAA,CAAA,CA9GtB,CA8GsB,CAAA,EAAA,GAAA,CAAA,CAAA,AA9GZ,AA8GY,AA9Gb,OAAQ,CAAC,QA8GI,mBA9GuB,CAAE,EAAE,CAAC,CA+G5B,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,GAAA,CAAA,CAGA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,AAOA,GAjCA,AA2BA,AAEA,SA7BA,CAAA,EAAA,AACA,GAAA,CACA,IAAA,EAAA,CA2BA,CA3BA,CA2BA,EA3BA,CAyBA,QAzBA,CAAA,AAFA,EAEA,MAAA,CAAA,CAGA,EAHA,IAGA,2FAAA,CAAA,IAAA,CAAA,EACA,CAAA,IADA,CAAA,AACA,CACA,OAAA,CACA,CACA,EAkBA,CApBA,GAuBA,EAAA,IAAA,CAAA,CAHA,CAAA,AAGA,CAGA,EAAA,CACA,GAJA,AAIA,CAJA,EAGA,IACA,CAAA,YAAA,CAAA,mBAAA,CAAA,CAAA,CAzGA,AAyGA,SAzGA,CAAA,EAKA,IAuDA,EAxBA,EA/BA,EAAA,EAAA,CAoGA,AArEA,CAwBA,EAvDA,CAAA,CAAA,CAAA,EAAA,CALA,AAKA,CAAA,MAAA,CAAA,OAAA,CAAA,CACA,EAAA,EAAA,CACA,EAAA,EAAA,CACA,GAAA,AAFA,EAIA,AAHA,GACA,CAEA,IAAA,KAAA,CAFA,CAEA,AACA,GAAA,EAAA,CADA,CAAA,GACA,KAAA,CAAA,GAAA,CAAA,CAAA,CACA,IAAA,EAAA,EAAA,KAAA,IAAA,CAAA,CAAA,CAAA,CAEA,GAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAEA,IAAA,EAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,IAAA,CAAA,GAAA,AAEA,GAAA,CACA,CAAA,EADA,GACA,CAHA,CAAA,CAGA,EAAA,IADA,GACA,CAAA,CAAA,GAAA,CAAA,CAAA,CAEA,IAAA,EAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,IAAA,CAAA,GAAA,AACA,EAAA,IAAA,CAAA,IADA,CAAA,CACA,CAAA,AACA,CAAA,KAEA,CAFA,CAEA,IAAA,CAAA,GAAA,AACA,EAAA,IAAA,AADA,CAAA,AACA,MAAA,GAAA,CAAA,AAEA,CAAA,KAEA,CAFA,CAEA,IAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,qBAAA,CAAA,MAAA,CAAA,CAAA,CAKA,GAAA,EACA,GAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAGA,CAJA,CAIA,CAJA,CACA,GAGA,IAAA,KACA,CAGA,IAAA,EAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CACA,CADA,CACA,CAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CACA,AADA,MAGA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAGA,MAAA,CAAA,KAAA,CAAA,OAAA,MAAA,EAAA,QAAA,SAAA,EAAA,EAAA,AAQA,CAAA,CAAA,CAAA,CAAA,CACA,KATA,AASA,CATA,GASA,CATA,GAaA,CAJA,EAAA,GAAA,EAIA,GAAA,GAAA,MAAA,CAAA,EAAA,GAAA,OAAA,GAAA,IAAA,CAAA,CAbA,CAAA,AACA,EAoDA,GACA,EAAA,IADA,AACA,CAAA,AADA,CAEA,IAAA,CADA,AACA,QACA,CADA,CAEA,GADA,OACA,qBACA,CACA,CAAA,CAAA,AACA,CAAA,KACA,CADA,CACA,IAAA,CAAA,CAHA,AAIA,IADA,AACA,CAAA,CACA,CAAA,CAAA,AAEA,CAEA,IAAA,CALA,GAKA,KAAA,EACA,GAAA,EADA,AACA,CADA,EACA,QAAA,EAAA,CAAA,OACA,IACA,EADA,EAAA,EAAA,EAAA,EAAA,CAAA,CACA,CADA,CAAA,CAAA,GAAA,CAAA,CAAA,CAGA,EAAA,EAAA,GAAA,CAAA,CAAA,UAAA,CAAA,GAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAeA,EAAA,CAVA,EAxJtB,CADa,EAqJS,CApJlB,CAoJkB,AArJL,CAmKK,CAnKc,CAqJd,CAAA,AAcA,CAdA,AAIA,CAxJjB,UAAU,CAAC,GAAG,CAAA,EAAK,EAAK,EAAD,MAAS,CAAC,GAAG,CAAC,CAuJpB,EACA,EAAA,GAAA,CAAA,CAEA,EAAA,CAEA,EACA,AApJ/B,IA8I+B,EAAA,CAKA,EAnJtB,AAmJsB,AAnJC,CAAI,EAAkB,AACpD,GAAI,EAAK,EAAD,GAmJqB,KAnJV,CAAC,GADS,IACF,CAAA,EAAK,EAAK,EAAD,MAAS,CAAC,IAAI,CAAC,CAAE,CAEnD,IAAM,EAAY,EAAK,EAAD,GAAhB,AAAsB,CAAC,CAAC,CAAE,CAAA,CAAE,CAAC,CAAA,AACnC,CADmC,KAC5B,CAAC,CAAC,EAAE,EAAU,EAAE,CAAC,AAC1B,CAD0B,AACnB,CADmB,EACf,AADW,EACN,EAAD,AAFsB,QAEX,CAAC,MAAM,CAAA,EAAK,EADZ,AACiB,EAAD,MAAS,CAAC,GAAG,CAAC,CAAE,CAExD,IAAM,EAAY,EAAK,EAAD,GAAhB,AAAsB,CAAC,CAAC,CAAE,CAAA,CAAE,CAAC,CAAA,AACnC,CADmC,KAC5B,CAAC,CAAC,EAAE,EAAU,CAAC,CAAC,AACzB,CAEA,IAHsB,EAGf,AAJ8B,CAI7B,CAAC,EAAE,EAAK,EAAD,GAAM,CAAC,CAAC,CAAE,CAAA,CAAE,CAAC,CAAC,CAAA,AACA,EAwIA,EAAA,GAAA,CAAA,CAAA,CAEA,EAAA,GAAA,CAAA,EAGA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EACA,EAAA,EAAA,EADA,AACA,EAAA,CAAA,EAEA,CAFA,CAEA,IAFA,AAEA,CAFA,AAEA,GAAA,EAAA,CAAA,EAFA,CAAA,GAEA,MAAA,CAAA,CACA,EAAA,IAAA,CAAA,GAAA,EAAA,OAAA,KAAA,CAAA,CACA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,AACA,CAEA,CAAA,MAAA,EAAA,CAEA,EAFA,KAEA,CAAA,IAAA,CAAA,gCAAA,CAAA,EACA,CAEA,EAHA,CAAA,GAGA,eAAA,aAAA,EAAA,YAAA,CAAA,CACA,AADA,EAqCA,EACA,GAAA,AAtCA,IAsCA,AADA,IACA,CACA,GAAA,IAAA,cAAA,EAGA,EAAA,MAAA,SACA,aAAA,EACA,YAAA,AACA,CACA,CAAA,CAOA,MARA,CAIA,EAAA,EACA,EAAA,EACA,EAFA,AAEA,GAFA,AAEA,EADA,EACA,CADA,YACA,CAAA,CAEA,CACA,OADA,iHC/OL,SAAA,CAAA,EAAA,MACA,GAAA,MADA,CACA,CAAA,GAAA,CAAA,uBAAA,CAEA,CAFA,MAEA,OAAA,CAAA,GAAA,CAAA,uBAAA,CAGA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,GAdlB,EAAe7U,EAAAA,EAcG,EAAA,GAAA,CAdlB,gBAAuC,EAAE,CAAC,KAcxB,EAAA,CAdgC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,CAAC,CACtE,CAAC,CAAC,EAAE,EAAa,CAAA,EAuBA,OAvBD,AAmBC,IACA,OAAA,CAAA,GAAA,CAAA,GADA,EAAA,kBACA,CAAA,CAAA,CAAA,CAGA,CACA,kBADA,UASA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA,IAAA,EAAA,EAAA,QAAA,CAEA,CAHA,CAGA,CAFA,MAEA,CAAA,GAAA,CAAA,KAAA,8BAAA,CAGA,EAAA,GAAA,MAAA,UAAA,kDAAA,CACA,EACA,GAAA,gBADA,AACA,0DAAA,CAIA,EAAA,QAAA,CAAA,GAAA,GAAA,GAAA,IAAA,CACA,IADA,AACA,EAAA,CAGA,MAAA,CAAA,CAAA,EAAA,EAAA,GAHA,CAGA,CAAA,CACA,EADA,CACA,CAAA,CACA,CACA,IAAA,CAAA,OAAA,CACA,GAAA,CAAA,GAAA,CACA,KAAA,CAAA,gBAAA,AACA,CAAA,CACA,CACA,IAAA,CAAA,OAAA,CACA,GAAA,CAAA,GAAA,CACA,KAAA,CAAA,oBAAA,AACA,CAAA,CACA,aACA,CACA,CAAA,CA2BA,EAAA,CAzBA,CAGA,IANA,EAMA,CAAA,AAsBA,CAtBA,EAAA,EAAA,IAAA,CAAA,CACA,EADA,CACA,CAAA,CACA,CACA,IAAA,CAAA,OAAA,CACA,GAAA,CAAA,GAAA,CACA,KAAA,CAAA,gBAAA,AACA,CAAA,CACA,CACA,IAAA,CAAA,OAAA,CACA,GAAA,CAAA,GAAA,CACA,KAAA,CAAA,oBAAA,AACA,CAAA,CACA,CACA,IAAA,CAAA,OAAA,CACA,GAAA,CAAA,GAAA,CACA,KAAA,CAAA,qBACA,AADA,CACA,CACA,CACA,WAAA,CAAA,CACA,CAAA,CAGA,EAAA,CAEA,GAAA,UAAA,EAAA,AANA,AAIA,OAEA,EACA,OAAA,EAIA,IAAA,CALA,CAKA,GAJA,GAIA,KAAA,IAAA,CAAA,IAAA,CAEA,CAFA,CAAA,GAEA,CAAA,OAAA,CAAA,GACA,CAAA,GAAA,KAAA,EAAA,CAEA,CACA,EAHA,CAGA,CAHA,AAGA,CACA,CALA,CAAA,EAAA,OAKA,CAAA,CAAA,AAJA,GAIA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,EAAA,CAAA,AACA,CAAA,AAEA,CAAA,AACA,EAJA,kMCpGtB,GAAgC,EAChC,GAAqC,AADA,EAqHlC,GApHuC,MAoH9B,EAAoB,CAAQ,CAAiB,CAAa,EAAgC,AACxG,GAAI,AAtHF,CAsHG,EACH,MAF+B,CAExB,AAtHP,EAyHF,EAJkB,EAAE,AAId,EAHW,AAGK,AAAC,GACQ,AAA7B,EAD0B,KAAsB,CAA5C,EACmC,EAAnC,AAAqC,OAA9B,EACF,EAAc,GAGhB,EAHqB,AAGP,CAHQ,GADlB,AAIc,CAAA,AAAC,CAHJ,EAGexZ,EAAAA,CAAjB,CAAM,eAA4B,CAAC,EAAO,GAAF,CAG9D,GAHuE,CAAC,CAAC,CAGlE,CACL,YAAY,CAAE,EAAS,MAAD,MAAa,CAAC,MAAM,CAAA,AAAC,CAAA,EAAK,CAAC,EAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CACvE,EAD8D,WACjD,CAAE,EAAS,MAAD,OAAc,CAAC,MAAM,CAAA,AAAC,CAAA,EAAK,CAAC,EAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CACzE,EADgE,OACvD,CAAE,EAAS,MAAD,GAAU,CAAC,MAAM,CAAA,AAAC,CAAA,EAAK,CAAC,EAAc,CAAC,CAAC,CAAC,AAChE,CAAG,AACH,OAF4D,iCAmGrD,SAAS,AAAa,CAAa,EAA0C,AAClF,GAAI,CAAC,EACH,GAFwB,IAK1B,AAHS,GAGH,CAJY,EAAE,GACF,CAGV,CAAA,CAAM,CAAI+X,EAAAA,WAAW,CAAC,GAC9B,OAAO,CACT,EAF6C,CAAC,CAChC,yBAhKP,SAAS,AACd,CAA4B,CAC5B,CAAiB,EAYjB,GARI,EAAkB,cANgB,CAMjB,SAAyB,EAAE,AAE9C,OAAO,CAAC,IAAI,CACV,oHAAoH,EAKvE,KAA7C,AAAkD,EAAhC,AAAkC,eAAnC,OAAC,QAM2B,IAA7C,EAAkB,GAA2B,YAA5B,OAAC,GAAwC,EAAkB,eAAD,SAAC,AAAwB,EAUxG,AAV0G,OAUnG,EANU0W,EAAAA,eAMS,CAAC,GANS,CAAC,CACnC,GAKiC,EAAE,GAL3B,CAAE,EAA6B,OAKS,CALD,AAKE,AAJrD,CAAG,CAAC,CAGoB,EAAkB,aAJA,EAID,OAAuB,EAAE,OAAO,CAEzE,8BAoLO,SAAS,AAA0B,CAAiB,EAA+C,AACxG,IAAM,EAAkC,CAAE,GAA9B,GAAoC,MAAE,EAAW,CADtB,MACoB,CAAU,MAAE,CAAA,CAAW,CAElF,GAAI,CAAC,EAFkE,KAE3D,CAAC,GAAG,CAAC,MAAM,CACrB,CADuB,MAChB,EAGT,IAHe,AAGT,EAAsB,EAAkB,aAAa,EAAd,AAAgB,qBAAA,IAA0B,EACjF,EADqF,AACrE,EAAkB,OAAO,EAAE,MAAV,iBAAU,IAA4B,EAE7E,EAFiF,CAE7E,CAAC,GAAuB,CAAC,EAC3B,OAAO,EAGT,EAJ0C,EAAE,AAC7B,AAGT,EA1DR,AA0DiB,IAAT,KA1DC,EACP,GAAI,CACF,IAAM,EAAiB,AAwDW,EAAE,AAxDR,EAAD,EAAK,CAAC,EAFP,GAAsB,AAE1C,EAAkC,CAAC,GAAG,EAAE,CAAE,aAAa,CAAC,CACxD,EAAqB,EAAE,AAAC,YAAY,CAAC,CAArC,CAAqD,MAAM,CAAC,CAE5D,EAAc,EAFqC,EAEjC,CAAC,IAAnB,CAAwB,CAAC,GAAoB,KAAA,CAEnD,GAAI,GAAe,GAF8B,CAAC,CAE1B,CAAC,EAArB,KAA4B,CAAC,IAAgB,EAAY,KAAjB,CAAA,AAAiB,CAAS,CAAC,CAAX,AAC1D,CADuE,MAChE,EAET,MACF,CAAA,AAAE,AADO,EAFa,IAGb,CAAC,CAAE,CACV,AAFgB,GAEqB,QAAQ,EAAE,CAA1C,CAAA,CAAuB,IAAA,CAC1B,OAAO,AAETzyB,EAAAA,KAAK,CAAC,CAFY,IAEP,CAAC,+FAA+F,CAAE,CAAC,CAAC,CAC/G,MACF,CADS,AAEX,SAFoB,EA2Cb,IAIL,EAJW,AAIJ,EAJM,EAIP,EAAC,CAAS,EAEZ,GAAuB,CAFL,EAGpBA,EAAAA,KAAK,CAAC,EADgC,EAAE,AAC9B,CACR,AAFA,iHAEA,GACE,gFAAA,GACA,4DAEJ,EAAO,IAAD,EAFkE,EAEjE,CAAW,OAAO,EAChB,GACTA,EAAAA,KAAK,CAAC,GAAG,CACP,IAF0B,EAAE,sGAEgF,EAE9G,EAAO,IAAD,IAAC,CAAW,OAAO,GAEzBA,EAAAA,KAAK,CAAC,GAAG,CACP,yLAAyL,EAE3L,EAAO,IAAD,IAAC,CAAW,SAAS,GArBpB,CAyBX,KAzBiB,iCArKV,SAAS,AACd,CAA4B,CAC5B,CAAa,EAIb,GAAI,EAAe,CACjB,GAAM,OAAE,AADO,CACF,OAAE,CAAA,CAAA,CAAU+b,CAPoB,CAOpBA,WAAW,CAAC,QACvB,IAAV,CAD8C,CAAC,CACd,AAAV,EAAvB,AAAU,GAAa,IAAU,GAAc,CAAd,GAAuB,CAAT,CAAS,EAAiB,EAAA,GAAV,GAAgB,EAAhB,EAAyB,CAAC,AAAC,AAAX,CAAY,EAAE,AAC/F,EAA6B,YAAA,CAAe,EAA6B,WAA7C,CAA6C,EAAgB,CAAA,CAAE,CAC3F,EAA6B,OAD2C,KAC/B,CAAC,aAAd,MAAc,CAAsB,CAC9D,SAAS,CACT,cAAc,IACV,EAA6B,YAAY,EAAE,YAAf,OAAe,EAAuB,EAAE,CAAC,AAC1E,CAEL,MAEE,CAFK,MAEE,CAAC,GAAG,CACT,8QAA8Q,CAGpR,sCAKO,SACL,AADc,CACc,CAC5B,CAAa,EAIb,GAAI,GAAiB2W,EAAAA,QAAjB,YAN2C,OAMC,CAAC,GAAgB,CAC3D,EAA6B,OAD2B,CAAC,IAChB,EAAE,YAAf,OAAe,IAAwB,GAErE,EAF0E,EAAE,GAErE,CAAC,IAAI,CACV,oLAAoL,EAGxL,EAA6B,YAAA,CAAe,CAC1C,YAD0B,OACP,EAAE,EACrB,EADyB,CACtB,EAA6B,YAAY,AAClD,CAAK,CACD,MACF,CAEI,IAKA,CAV+B,CAUF,OALhB,EAAE,GAKc,EAAgB,YAAjB,SAAiB,GAAyB,EAA6B,YAAY,EAAE,AAC7C,IAAlE,CAAuE,CAA1C,CAA4C,KADuB,MACvD,CAAC,aAAd,MAAc,EAE5C,OAAO,CAAC,IAAI,CACV,qXAAqX,GAKzX,OAAO,CAAC,GAAG,CACT,+iBAA+iB,EAEjjB,EAA6B,YAAA,CAAe,CAC1C,YAD0B,OACP,EAAE,EACrB,EADyB,CACtB,EAA6B,YAAY,AAClD,CAAK,EAEL,WAHqC,2BA1L9B,SACL,AADc,CACc,CAC5B,CAAiB,EAEjB,GAAI,CAAC,EAAkB,WAAW,CAChC,CADkC,EAAd,IAItB,GAA4C,AARG,QAQK,GAAhD,EAA6B,MAAA,CAAqB,CAC/C,IACH,GAAgC,EAEhC,EAFoC,KAE7B,CAAC,CAJoB,GAIhB,CACV,OAJ8B,EAAE,EAClC,gWAG6W,GAG/W,MACF,CAGA,IAAM,EAAsBH,EAAAA,kBAAkB,CAAC,EAAkB,WAAW,CAAC,CAC7E,EADgE,AAC9C,WAAA,CAAc,GAAf,KAAsC,EAEvDC,EAAAA,KAFgE,EAAhC,gBAET,CAAC,EAA8B,EACxD,iBAD2E,CAAC,KAnCrE,CAmC+C,QAnCtC,AAAmB,CAAiB,EAElD,AAF4F,OAErF,AADqB,EAAkB,MADd,CACqB,EAAE,MAAV,AAAU,IAAW,EAE7D,EAAkB,CAFgD,MAEzC,EAAE,IAAA,EAAV,AAAkBpL,EAAAA,gBAAgB,EAAC,EAAKkL,EAAAA,cAAc,EAAE,CAC1E,EAAkB,OAAO,EAAE,IACjC,AADqC,EAAd,2CAuChB,SAAS,QACd,CAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAD2B,GAAY,gBACZ,CAAC,EAAE,CAIpD,IACH,EAAqC,GAErC,CAFyC,MAElC,CAAC,IAAI,CACV,YAJmC,EAAE,EACvC,+FAGiH,GAY5G,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1C,6CA6IO,SAAS,AAAyC,CAAiB,EAA4B,AAEpG,IAAM,EAAoCK,EAAAA,6BAApC,AAFgD,OAEwB,EAAE,AAE9E,MAAsC,OACrC,EADqC,AACH,IAAnC,IAA2C,CAAC,SAD5C,aACkC,GAAmC,CAAA,EACpE,EAAD,AAAmB,eAAD,uBAAC,EACnB,AAEA,OAAO,CAAC,IAAI,CACV,0SAA0S,CAGhT,kLC9MO,SAAS,AACd,CAA4B,CAC5B,CAAiB,EAEjBC,EAAAA,aAJkC,kBAIH,CAAC,GAChC,IAAM,EAAcC,EAAAA,MAD6B,CAAC,AAC5C,WAAgC,CAAC,GAIvC,GAFAC,EAAAA,SAFwD,CAAC,uBAExB,CAAC,EAA8B,GAE5DC,EAAAA,YAF6E,CAAC,QAApB,mBAElB,EAAE,CAC5C,CAD8C,MACvC,EAGT,IAAM,EAAgBC,EAAAA,kBAHe,MAGS,CAAC,EAA8B,GACvE,EAA0BC,EAAAA,UAD8D,CAAC,QAApB,AACrE,MAAmD,CAAC,GAC1DC,EAAAA,YAD2E,CAAC,UACrD,CAAC,EAA8B,EAAmB,GAEzE,IAAM,EAAgB1W,EAF8D,AAE9DA,CAF+D,GAAd,KAEjE,IAF8C,GAEd,EAAE,CAClC,EAAY2W,EAAAA,KAAZ,OAAwB,CAAC,GAE/BC,EAAAA,QAF4C,CAAC,wBAEZ,CAAC,EAA8B,GAChEC,EAAAA,QAD6E,CAAC,YAAhB,YAC7B,CAAC,EAA8B,GAChEC,EAAAA,QAD6E,CAAC,YAAhB,mBACtB,CAAC,GAEzC,IAAM,EAAcC,EAAAA,MAFsC,CAEpD,AAFqD,OAEzB,CAAC,GACnCC,EAAAA,QADgD,CAAC,yBACf,CAAC,EAAe,GAClDC,EAAAA,MADgD,AAAa,CAAC,+CACR,CAAC,EAAe,EAAmB,GAEzF,IAAM,EAF8D,AAE5CC,EAF4E,AAE5EA,CAF6E,GAAd,OAEjF,kBAA+C,CACnD,EACA,EACA,EACA,EACA,EACA,GAGI,EAAyCC,EAAAA,AANhC,EACA,AACF,AAHM,SADW,KAKL,kBAGnB,WAAsF,CAC1F,EACA,GAeF,OAZAC,CAHa,CAGbA,GAJmB,oCAIoB,CAAC,8BACtC,oBACA,QAD4B,MAE5B,GADiB,QACN,KACX,aAAa,CACb,WAAW,OACX,eAAe,0BACf,CACJ,CAAG,CAAC,CAEFC,EAAAA,8BAA8B,CAAC,CAHS,CAGqB,EAAmB,GAEzE,CACL,GAAG,CAA4B,CAC/B,EAJyF,CAItFC,AAJuF,EAIvFA,CAJyE,SAAnB,oBAIxB,CAAC,EAA8B,EAAU,CAC1E,GAAGC,EAAAA,CADsE,cACvD,CAAC,EAD2C,4BAE5D,oBACA,QAD4B,MAE5B,GADiB,QACN,KACX,aAAa,GACb,aAAa,4BACb,cACA,WAAW,aAD2B,EAEtC,CACN,CAAK,CAAC,CACF,GAAGC,EAAAA,cAFsB,GAEL,CAAC,EAAa,EAAgB,AACtD,CAAG,AACH,MAFoC,MAAiB,wHCpF9C,SAAS,AAAoB,CAAU,CAAM,EAAyC,CAAA,CAAE,EAAK,AAClG,IAAM,EAAkB,EADM,CACuB,CAAA,CAAE,CADa,MAEpE,AAA8B,UAAU,EAApC,AAAsC,OAA/B,EACF,SAAyB,GADvB,AAC0B,CAAyB,EAA6C,AACvG,IAAM,EAA4D,EAAe,KAAK,CACpF,IAAI,CACJ,CAF8E,MAApD,GAKxBhyB,AAAJ,EAAIA,UAAU,CAAC,EAHY,CAIlB,EAAuB,IAAI,CAAA,AAAC,GAC1BiyB,EAAAA,OAF0B,CAAC,EAAE,AACT,UACA,CAAC,CADgC,CACP,IAIlDA,EAAAA,YAJoE,CAAC,EAArB,KAI5B,CAAC,EAAwB,EACtD,CAAA,CAEOA,EAAAA,YAHiE,CAAC,CAArB,MAGzB,CAAC,EAAgB,EAEhD,UAF8C,MAAoB,CAAA,8EC3BvC,IAAA,OAAA,gBAAA,EAAA,gBAAA,0BCP3B,IAAI,EAAmB,YAMvB,SAAS,EAAM,CAAW,EAExB,OAAO,AADK,EAAY,KAAK,CAAC,MACjB,MAAM,CAAC,SAAU,CAAK,CAAE,CAAI,EACvC,UAAI,EAAc,AAYtB,SAAS,AAAY,CAAI,EACvB,IAAI,EAAQ,EAAS,IAAI,CAAC,GAE1B,GAAI,CAAC,EACH,KADU,EACH,KAGT,IAAI,EAAW,CAAK,CAAC,EAAE,EAAmC,GAAG,CAAlC,CAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAiC,QAEzE,EAAS,CAAK,CAAC,EAAE,EAAI,AAA6B,GAAG,EAA3B,CAAC,EAAE,CAAC,OAAO,CAAC,EAA+B,MAErE,EAAW,EAAa,IAAI,CAAC,CAAK,CAAC,EAAE,EAWzC,OATI,GAAsB,MAAM,AAAlB,IAEZ,CAAK,CAAC,EAAE,CAAG,CAAQ,CAAC,EAAE,CAEtB,CAFwB,AAEnB,CAAC,EAAE,CAAG,CAAQ,CAFW,AAEV,EAAE,CAEtB,CAFwB,AAEnB,CAAC,EAAE,CAAG,CAAQ,CAAC,CAFW,CAET,EAGjB,AAHmB,CAIxB,KAAM,AAAC,EAAsB,CAJI,IAIf,CAAK,CAAC,EAAE,CAC1B,WAAY,CAAK,CAAC,EAAE,EAAI,EACxB,UAAW,EAAW,CAAC,CAAK,CAAC,EAAE,CAAC,CAAG,EAAE,CACrC,WAAY,CAAK,CAAC,EAAE,CAAG,CAAC,CAAK,CAAC,EAAE,CAAG,KACnC,OAAQ,CAAK,CAAC,EAAE,CAAG,CAAC,CAAK,CAAC,EAAE,CAAG,IACjC,CACF,EAzCkC,KAgDhC,CAFI,EAAQ,CAER,AAhDqC,CAgDpC,AAFe,IAAI,CAAC,AA9C2B,EAgDxC,EAIL,CACL,KAAM,CAAK,CAAC,EAAE,CACd,WAAY,CAAK,CAAC,EAAE,EAAI,EACxB,UAAW,EAAE,CACb,WAAY,CAAC,CAAK,CAAC,EAAE,CACrB,OAAQ,CAAK,CAAC,EAAE,CAAG,CAAC,CAAK,CAAC,EAAE,CAAG,IACjC,EATS,IACT,GAcF,AAhE+D,SAgEtD,AAAW,CAAI,EACtB,IAAI,EAAQ,EAAQ,IAAI,CAAC,GAEzB,GAAI,CAAC,EACH,KADU,EACH,KAGT,IAAI,EAAS,CAAK,CAAC,EAAE,EAAI,CAAK,CAAC,EAAE,CAAC,OAAO,CAAC,WAAa,CAAC,EACpD,EAAW,EAAY,IAAI,CAAC,CAAK,CAAC,EAAE,EASxC,OAPI,GAAsB,MAAZ,AAAkB,IAE9B,CAAK,CAAC,EAAE,CAAG,CAAQ,CAAC,EAAE,CACtB,CAAK,CAAC,EAAE,CAAG,CAAQ,CAAC,EAAE,CACtB,CAAK,CAAC,EAAE,CAAG,MAAM,AAGZ,CACL,KAAM,CAAK,CAAC,EAAE,CACd,WALuC,AAK3B,CAAK,CAAC,EAAE,EAAI,EACxB,UAAW,CAAK,CAAC,EAAE,CAAG,CAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAO,EAAE,CAC9C,WAAY,CAAK,CAAC,EAAE,CAAG,CAAC,CAAK,CAAC,EAAE,CAAG,KACnC,OAAQ,CAAK,CAAC,EAAE,CAAG,CAAC,CAAK,CAAC,EAAE,CAAG,IACjC,CACF,EAxF0E,KAiHxE,CAFI,EAAQ,CA/GqE,AAiH7E,CAFe,AAEd,IAFkB,CA/GoE,AA+GnE,EAEZ,EAIL,CACL,IAtHkG,CAsH5F,CAAK,CAAC,EAAE,CACd,WAAY,CAAK,CAAC,EAAE,EAAI,EACxB,UAAW,EAAE,CACb,WAAY,CAAC,CAAK,CAAC,EAAE,CACrB,OAAQ,CAAK,CAAC,EAAE,CAAG,CAAC,CAAK,CAAC,EAAE,CAAG,IACjC,EATS,IACT,IApBA,CAFI,EAAQ,CAER,CAAC,AAFwB,IAAI,CAAC,AA7F2E,EA+FjG,EAIL,CACL,KAAM,CAAK,CAAC,EAAE,CACd,WAAY,CAAK,CAAC,EAAE,EAAI,EACxB,UAAW,EAAE,CACb,WAAY,CAAC,CAAK,CAAC,EAAE,CACrB,OAAQ,CAAK,CAAC,EAAE,CAAG,CAAC,CAAK,CAAC,EAAE,CAAG,IACjC,EATS,IACT,EA3FE,OAJI,GACF,EAAM,IAAI,CAAC,GAGN,AAJU,CAKnB,EAAG,EAAE,CACP,CACA,IAAI,EAAW,gJACX,EAAe,gCAiCf,EAAU,oHAkBV,EAAU,sIACV,EAAc,gDA4Bd,EAAmB,+DAkBnB,EAAS,kPCzGP,EAA2Br0B,EAAAA,UAAAA,CASjC,SATM,AASG,IACP,IAAI,EAAW,MAAX,CAAkB,CAAC,CADG,EACA,CADW,AACV,eAAA,EAAmB,EAAyB,eAAA,EAAmB,EAAE,CAG3E,EAAA,AAHqD,GAGlE,CAAmB,EAAC,EAAS,GAA7B,EAAkC,CAAN,AAAO,KAAK,CAAC,EAAE,CAC7C,EAAW,CAAC,CAAC,EAAE,GAAS,EAQA,GARD,CAQC,EAAA,OAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CACA,MAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,AACA,CAKA,IANA,CAAA,UAMA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,AACA,CADA,GACA,EADA,AACA,IAAA,IAAA,WAAA,CACA,CADA,CACA,GAAA,OAAA,CAAA,IAAA,EAAA,KAAA,EAAA,CAAA,IAAA,CAAA,AAEA,OAAAiiB,EAAAA,eAAA,CAAA,IACA,KAAA,CAAA,EAAA,CAAA,AACA,GAAA,CAAA,CACA,MAAA,CAAA,EAAA,MAAA,AACA,CAAA,CAAA,AADA,CACA,OAAA,CAAA,KACA,CADA,WACA,CAAA,EACA,CAAA,CAAA,CADA,AAGA,CAHA,AAgGA,eAAA,EACA,CAAA,CACA,CAAA,EAEA,GAAA,CACA,GAAA,CAAA,CAAA,CALA,CAKA,GAAA,CAAA,EAAA,UAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,EAAA,UAAA,CAAA,QAAA,CAAA,CAAA,AACA,EADA,KACA,IAAA,CAGA,IAAA,EAAA,IAAA,eAAA,CACA,CADA,CACA,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,IACA,CADA,CAAA,AACA,CADA,CAAA,CAAA,CACA,EAAA,CAAA,cAAA,CAAA,MAAA,EAAA,IACA,CADA,CACA,AADA,CAAA,CAAA,CAAA,CACA,EAAA,CAAA,gBAAA,CAAA,EAFA,IAEA,EAAA,IAAA,AACA,CADA,CAAA,AACA,CADA,CAAA,EACA,EAAA,CAAA,cAAA,CAAA,EAAA,AAFA,GAEA,KAAA,EAAA,CAAA,CACA,MAAA,CAAA,IAAA,CAAA,GAAA,AAFA,EAEA,CAAA,IAAA,CAAA,GAAA,CACA,EAAA,CADA,GACA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,QAAA,EAAA,CAAA,AACA,CAAA,CAAA,CAEA,IAAA,EAAA,IACA,CADA,CACA,CAAA,KAAA,EAAA,CAAA,EAAA,EAAA,AADA,EAAA,GACA,IAAA,sBAAA,EAAA,EAAA,IAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAEA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CACA,OAAA,IAAA,CAGA,IAAA,EAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAEA,MAAA,CACA,iBAAA,CAAA,EAAA,EAAA,eAAA,CACA,kBAAA,CAAA,EAAA,EAAA,gBAAA,AACA,CACA,AADA,CACA,MAAA,CAAA,CAAA,CAEA,OADA/hB,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,qDAAA,CAAA,CAAA,CAAA,CACA,IAAA,AACA,CACA,CAEA,eAAA,EACA,CAAA,EAEA,GAAA,CACA,IAAA,EAAA,CACA,EALA,GAIA,CACA,CAAA,EACA,MAAA,CAAA,GACA,CAAA,CADA,AACA,EAAA,EADA,CACA,CAAA,EAEA,GAAA,CAAA,IAGA,CAHA,CAGA,GAHA,AAGA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA,OAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,QAAA,CAAA,EAAA,CAAA,CAEA,CACA,IAAA,CAAA,EAAA,GAAA,CAAA,CACA,UAAA,CAAA,EAAA,GAAA,OAAA,EAAA,WAAA,CACA,SAAA,CAAA,EAAA,CACA,UAAA,CAAA,EAAA,GAAA,OAAA,EAAA,CAAA,CACA,MAAA,CAAA,EAAA,GAAA,GAAA,EAAA,CAAA,CACA,KAAA,CAAA,EAAA,GAAA,OAAA,EAAA,CAAA,CACA,OAAA,CAAA,EAAA,GAAA,GAAA,EAAA,CAAA,AACA,CAAA,GAEA,QAAA,EAAA,EACA,GADA,SACA,EAAA,EACA,GADA,WACA,CAAA,EACA,CAAA,CADA,AAGA,EAAA,IACA,CADA,CACA,CAAA,KAAA,EAAA,CAAA,EAAA,EADA,AACA,EADA,GACA,IAAA,sBAAA,CAAA,CAAA,CACA,MAAA,CAAA,MAAA,CACA,OAAA,CAAA,CACA,cAAA,CAAA,kBAAA,AACA,CAAA,CACA,IAAA,CAAA,IAAA,CAAA,SAAA,CAAA,EACA,CAAA,CAAA,CAEA,GAHA,AAGA,CAHA,AAGA,EAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAA,KAAA,CACA,OAAA,IAAA,CAKA,MAAA,CAFA,GAEA,GAFA,EAAA,CAAA,GAAA,EAAA,CAAA,CAEA,GAAA,CAAA,IACA,CADA,AAEA,IAFA,aAEA,CAAA,EAAA,GAAA,EAAA,CAAA,iBAAA,CACA,kBAAA,CAAA,EAAA,GAAA,EAAA,CAAA,kBAAA,CACA,CAAA,CAEA,CAAA,MAAA,CAAA,CAAA,CAEA,OADAF,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,KAAA,CAAA,qDAAA,CAAA,CAAA,CAAA,CACA,IAAA,AACA,CACA,uCAlLA,eAAA,EAAA,CAAA,CAAA,CAAA,EAAA,AAEA,aAAA,EAAA,CAAA,EAAA,GAAA,CAAA,GACA,EAAA,CAHA,EAGA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,MAAA,CAAA,IAAA,AACA,IADA,AACA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,KAAA,KAAA,CAAA,OACA,QAAA,EAAA,OAAA,GACA,CAAA,EAAA,QAAA,CAAA,CADA,IACA,0BAAA,CAAA,AAIA,CAJA,CAAA,AAIA,CAAA,CAKA,GAAA,CAEA,GAAA,EAAA,EAAA,eAAA,EAAA,EAAA,EAAA,eAAA,OAXA,KAWA,KAAA,EAAA,EAAA,EAAA,eAAA,CAAA,KAAA,CAAA,CACA,IAWA,EAXA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAA,EAAA,IAAA,WAAA,CAAA,KAAA,CAAA,CACA,EAAA,EAAA,SAAA,WAAA,CAIA,CAJA,EAIA,CAAA,EACA,OAAA,EAGA,EAJA,CACA,CAGA,AAJA,EAIA+b,EAAAA,WAAA,CAAA,GAAA,AAQA,GAAA,EAAA,KARA,AAQA,CARA,AAQA,EAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CACA,IAAA,CAAA,CAAA,CADA,KACA,EAAA,GACA,GADA,AACA,CADA,AACA,GAAA,EAAA,GACA,CAFA,MAEA,EAEA,EAAA,CAAA,AAFA,AAGA,CAAA,KACA,CADA,CACA,GAFA,GAEA,MAAA,CAAA,CAAA,GAAA,CACA,EAAA,GAAA,CAAA,GAAA,EAAA,EAAA,EAAA,CAAA,CAAA,SAAA,MAAA,EAAA,CAAA,CAIA,EAAA,GAAA,MAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CACA,EAAA,GAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,MAAA,CAAA,EAAA,GAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,CACA,CAAA,EAAA,CAAA,CAAA,CAAA,IACA,CADA,GACA,EADA,AACA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,GAAA,CAAA,GAAA,UAAA,QAAA,EAAA,CAAA,EAAA,WAAA,MAAA,CACA,CADA,KACA,CACA,GAAA,CAAA,CACA,QAAA,CAAA,EAAA,GAAA,KAAA,EAAA,UAAA,CAAA,eAAA,CAAA,CAAA,QAAA,CAAA,OACA,EADA,IACA,CAAA,EACA,CAAA,CAGA,CAJA,EAIA,aAAA,CAAA,iBAAA,CAAA,kBAAA,CAAA,CAAA,CAyHA,AAzHA,SAyHA,CAAA,EAKA,IAsBA,EAtBA,EAAA,EAEA,AAhIA,KAoJA,EArBA,AACA,CACA,AACA,AAkBA,CA3BA,IAKA,IAsBA,mCAnBA,2BAFA,MAGA,CACA,EAAA,EAEA,KAAA,CAAA,IAAA,CACA,CACA,MAAA,CAAA,GAAA,CAAA,EAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CACA,CACA,GAAA,CAAA,IAAA,GAAA,GACA,EACA,EADA,GAFA,MAGA,CAAA,CAAA,CAAA,EAAA,EAAA,GAAA,AALA,CAKA,IAAA,CAAA,CACA,CAAA,CAAA,CACA,AACA,GAAA,CAAA,IAAA,CACA,EADA,CACA,CAAA,CADA,AAEA,IAAA,CAAA,EAAA,IAAA,CAAA,OAAA,CAAA,OAAA,CAAA,EAAA,CAAA,CACA,CAAA,CAAA,CAAA,AAEA,EAAA,EAAA,CAEA,EAAA,EAAA,CAEA,AAVA,GAUA,EAEA,AANA,GAIA,CAEA,EAJA,EAIA,KAAA,AAFA,EAGA,EAAA,OADA,IACA,EADA,AACA,AACA,CAFA,AACA,CACA,EAAA,IAAA,CACA,EADA,CACA,GACA,CADA,CAEA,CAHA,CAGA,IAAA,CAAA,EAAA,CAFA,GAEA,CAAA,CAEA,CAHA,AACA,CAEA,CAHA,GAGA,CAAA,CAFA,CAEA,IAAA,CAAA,CAAA,AAIA,MAAA,EAJA,WAKA,WAAA,OACA,eAAA,IACA,CACA,CAAA,AACA,EAxKA,EAAA,UAsKA,CAtKA,MAAA,EAGA,MAAA,CACA,GAAA,CAAA,CACA,WAAA,CAAA,EACA,YAAA,CADA,AACA,EACA,SADA,GACA,CAAA,EACA,QAAA,CAAA,EAAA,GADA,QACA,OAAA,CAAA,UAAA,CACA,QAAA,CAAA,EAAA,WAAA,OAAA,CAAA,IAAA,CACA,AAuKA,SAAA,CAAA,EAAA,AACA,GAAA,CAAA,EACA,MADA,CACA,CAzKA,AAwKA,CAKA,IAAA,EAJA,AAIA,EANA,AAMA,CAAA,IAAA,CADA,AACA,oBAAA,CAAA,4BADA,EAGA,OAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAhLA,EAAA,GA+KA,QA/KA,OAAA,CAAA,IAAA,OACA,EACA,MAAA,CACA,AAFA,EAEA,WAAA,OAAA,CAAA,UAAA,EAAA,EAAA,WAAA,OAAA,CAAA,KAAA,OAAA,EACA,KAAA,CAAA,CADA,CACA,WAAA,OAAA,CAAA,MAAA,EAAA,EAAA,WAAA,OAAA,CAAA,OAAA,OAAA,CACA,CACA,AADA,EACA,CAGA,CACA,CAAA,EANA,GAMA,CAEA,CAEA,OAAA,CACA,IADA,4FC1IrB,SAAS,AAAa,CAAQ,EAA+B,AAClE,IAAM,EAAe,EAAW,CADN,KACL,CAAkB,CAAjC,AAAkC,GAAG,CAAC,sBAAA,CAAyB,OAAO,CAAC,GAAG,CAAC,UAAU,CAC3F,OAAO,EAAe,CAAC,OAAO,EAAE,EAAa,CAAA,MAAA,CACA,EADD,MAAC,2FCLhB,iCAEE,qCAHE,uCADA,yICOmB,iEAFA,0EAFE,yDCExD,EAAQ,CAAC,CAHT,EAGY,OAHH,AAAyB,CAAG,EACjC,OAAO,GAAO,EAAI,UAAU,CAAG,EAAM,CAAE,QAAS,CAAI,CACxD,iCCUAoY,EAAO1Y,OAAO,CAPqB,CACjC,CAMeyY,YALf,WACA,cACA,cACD,wFCVYE,6BAA6B,CAAA,kBAA7BA,GACAC,mCAAmC,CAAA,kBAAnCA,GAHAC,0BAA0B,CAAA,kBAA1BA,GACAC,gCAAgC,CAAA,kBAAhCA,uEADN,IAAMD,EAA6B,cAC7BC,EAAmC,CAAA,EAAGD,EAA2B,KAAK,CAAC,CACvEF,EAAgC,iBAChCC,EAAsC,CAAA,EAAGD,EAA8B,KAAK,CAAC,oFC2B9EO,KAiHCH,YAjHDG,QAiHqB,CAAA,kBAApBH,IAvDAC,kBAAkB,CAAA,kBAAlBA,GACAC,wBAAwB,CAAA,kBAAxBA,GA3DDC,iBAAiB,CAAA,kBAAjBA,GA4FCC,0BAA0B,CAAA,kBAA1BA,GALAC,aAAa,CAAA,kBAAbA,GADAC,aAAa,CAAA,kBAAbA,GA1BAC,cAAc,CAAA,kBAAdA,GA4BAC,wBAAwB,CAAA,kBAAxBA,GAOAC,yBAAyB,CAAA,kBAAzBA,GANAC,wBAAwB,CAAA,kBAAxBA,GAqBAC,gCAAgC,CAAA,kBAAhCA,GACAC,oCAAoC,CAAA,kBAApCA,IAQAC,qCAAqC,CAAA,kBAArCA,IACAC,4CAA4C,CAAA,kBAA5CA,IALAC,yCAAyC,CAAA,kBAAzCA,IAEAC,mCAAmC,CAAA,kBAAnCA,IArIAC,gBAAgB,CAAA,kBAAhBA,GARAC,cAAc,CAAA,kBAAdA,GAsGAC,YAAY,CAAA,kBAAZA,GA6CAC,uBAAuB,CAAA,kBAAvBA,IAUAC,uBAAuB,CAAA,kBAAvBA,IANAC,kBAAkB,CAAA,kBAAlBA,IApDAC,8BAA8B,CAAA,kBAA9BA,GALAC,yBAAyB,CAAA,kBAAzBA,GAqCAC,oBAAoB,CAAA,kBAApBA,GAiBAC,oBAAoB,CAAA,kBAApBA,IA6BAC,0BAA0B,CAAA,kBAA1BA,IAxFAC,aAAa,CAAA,kBAAbA,GADAC,aAAa,CAAA,kBAAbA,GAHAC,yBAAyB,CAAA,kBAAzBA,GAOAC,eAAe,CAAA,kBAAfA,GAoCAC,mCAAmC,CAAA,kBAAnCA,GALAC,yBAAyB,CAAA,kBAAzBA,GA5BAC,mBAAmB,CAAA,kBAAnBA,GA8BAC,kCAAkC,CAAA,kBAAlCA,GAjIJzC,0BAA0B,CAAA,kBAA1BA,EAAAA,OAA0B,EAuHtB0C,qBAAqB,CAAA,kBAArBA,GA5BAC,kBAAkB,CAAA,kBAAlBA,GAPAC,cAAc,CAAA,kBAAdA,GAhBAC,aAAa,CAAA,kBAAbA,GAGAC,wBAAwB,CAAA,kBAAxBA,GAJAC,YAAY,CAAA,kBAAZA,GAMAC,UAAU,CAAA,kBAAVA,GAJAC,sBAAsB,CAAA,kBAAtBA,GACAC,uBAAuB,CAAA,kBAAvBA,GAEAC,UAAU,CAAA,kBAAVA,GAsBAC,kBAAkB,CAAA,kBAAlBA,GAUAC,uBAAuB,CAAA,kBAAvBA,GATAC,eAAe,CAAA,kBAAfA,GA6EAC,gBAAgB,CAAA,kBAAhBA,IAnEAC,gBAAgB,CAAA,kBAAhBA,GARAC,qBAAqB,CAAA,kBAArBA,GAyDAC,eAAe,CAAA,kBAAfA,IA7BAC,yBAAyB,CAAA,kBAAzBA,GA4BAC,eAAe,CAAA,kBAAfA,IAcAC,mBAAmB,CAAA,kBAAnBA,IAjDAC,0BAA0B,CAAA,kBAA1BA,GA5BAC,8BAA8B,CAAA,kBAA9BA,GA8GAC,kBAAkB,CAAA,kBAAlBA,IAhCAC,oBAAoB,CAAA,kBAApBA,IAlEAC,+BAA+B,CAAA,kBAA/BA,GAFAC,oCAAoC,CAAA,kBAApCA,GAsEAC,gCAAgC,CAAA,kBAAhCA,IAlJXlE,6BAA6B,CAAA,kBAA7BA,EAAAA,6BAA6B,EAC7BC,mCAAmC,CAAA,kBAAnCA,EAAAA,mCAAmC,EAHnCC,0BAA0B,CAAA,kBAA1BA,EAAAA,0BAA0B,EAC1BC,gCAAgC,CAAA,kBAAhCA,EAAAA,gCAAgC,EA8DrBgE,aAAa,CAAA,kBAAbA,6FAvF0B,CAAA,CAAA,IAAA,SA4BhC,CAAA,CAAA,IAAA,IAtBM7C,EAAiB,CAC5BhP,OAAQ,SACR8R,OAAQ,SACRC,WAAY,aACd,EAIahD,EAET,CACF,CAACC,EAAehP,MAAM,CAAC,CAAE,EACzB,CAACgP,EAAe8C,MAAM,CAAC,CAAE,EACzB,CAAC9C,EAAe+C,UAAU,CAAC,CAAE,CAC/B,EAUO,IAAK9D,GAGT,OAAA,KAAA,CAAA,IAHSA,AAGT,IAKA,EAAA,KARSA,GAAAA,CAQT,CAAA,KAAA,OAKA,EAAA,QAAA,CAAA,MAAA,KAMA,EAAA,SAAA,CAAA,KAAA,OAMA,EAAA,SAAA,CAAA,KAAA,OAKA,EAAA,WAAA,CAAA,GAAA,WAKA,EAAA,UAAA,CAAA,IAAA,SAnCSA,GAuCL,IAAMsC,EAAe,eACfF,EAAgB,gBAChBI,EAAyB,yBACzBC,EAA0B,0BAC1BJ,EAA2B,2BAC3BK,EAAa,aACbH,EAAa,aAWbJ,EAAiB,sBACjByB,EAAgB,qBAChB9D,EAAqB,0BACrBC,EAA2B,gCAC3BK,EAAiB,sBACjBuB,EAA4B,iCAC5B2B,EAAiC,iCACjCpB,EAAqB,qBACrBR,EAAgB,qBAChBD,EAAgB,qBAChBkB,EAAqB,0BACrBE,EAAkB,uBAClBjB,EAAkB,uBAClBoB,EAAwB,wBACxB3B,EAA4B,yBAC5BU,EAAsB,2BACtB2B,EACX,iCACWD,EAAkC,6BAClCrC,EAAiC,8BACjCwB,EAA0B,+BAC1BG,EAAmB,SACnB/B,EAAe,CAC1B,iBACA,kBACA,oBAGK+C,SAASC,UAAkBC,WAAa,CAAC,kBAAkB,CAAG,EAAE,CACtE,CACY9D,EAAgB,WAChBD,EAAgB,CAAC,aAAc,QAAS,UAAU,CAClDG,EAA2B,SAC3BE,EAA2B,SAC3B8C,EAA6B,4BAC7BpB,EAAwB,4BACxBhC,EAA6B,sBAG7BK,EAA4B,4BAE5B4C,EAA4B,4BAE5BpB,EAA4B,4BAE5BE,EACX,qCAEWH,EACX,sCAEWP,EAAuB,uBAGvBd,EAAmC,CAAC,IAAI,CAAC,CACzCC,GAAuC,CAAA,EAAGD,EAAiC,IAAI,CAAC,CAEhFX,GAAuB,sBAEvBe,GAA4C,CAAC,aAAa,CAAC,CAE3DC,GAAsC,CAAC,OAAO,CAAC,CAE/CH,GAAwC,YACxCC,GAA+CuD,OAC1DxD,IAEWO,GAA0B,kBAC1BM,GAAuB,uBACvB4B,GAAkB,UAClBF,GAAkB,UAClB9B,GAAqB,CAChCgD,KAAM,kBACNC,cAAe,IACfC,WAAY,kBACZC,WAAY,IACd,EACapD,GAA0B,CACrCiD,KAAM,QACNC,cAAe,IACfC,WAAY,kBACZC,WAAY,IACd,EACalB,GAAsB,CAAC,OAAO,CAC9BI,GAAuB,EAEvBG,GAAmC,IAEnCb,GAAmB,CAC9B/Q,OAAQ,SACR8R,OAAQ,QACV,EAMarC,GAA6B,CACxC,iBACA,eACA,mBACA,4BACA,oBACA,uBACA,sBACA,eACA,iBACA,eACA,cACA,+BACA,4BACA,kCACA,mCACA,kCACD,CAEY+B,GAAqB,IAAIgB,IAAY,CAChD/D,EACAI,GACAH,GACD,2OC9MD,EAAO,OAAO,CAAA,EAAA,CAAA,CAAA,kHCKP,SAAS,EACd,KADqB,EACd,CAD0B,MACnB,CAAC,GAAG,CAAC,UAAA,GAAe+B,EAAAA,sBACpC,AAD0D,iHCyCnD,eAAe,IACpB,GAAI,CACFr3B,EAAAA,WAAAA,CAFwC,CAEzBE,EAF2C,AAE3CA,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAC9C,MAAM4b,EAAAA,KAAK,CAAC,IAAI,CAAC,AACjB9b,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,AAClD,CAAA,AAAE,MAAO,CAAC,CAAE,CACVF,EAAAA,WAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAE,CAAC,CAC9D,AAD+D,CAEjE,CA0BA,SAAS,IACP,IAAM,EAAkC,MAAM,CAAC,GAAG,CAAC,QADf,GAAyC,aACF,CAAC,CAE5E,OACEJ,EAAAA,UAKJ,CAAI,EAAgC,EAAE,GAAG,AACzC,CAKO,SAAS,EAAoB,CAAI,EAA0B,AAChE,KAAiC,IAPA,KAOS,AADT,CACU,EAC7C,CAKO,CAN0C,CAAC,OAMlC,EANe,EAAE,AAO/B,MAA6D,UAAU,EAAhE,OAAO,CAD8B,GAAY,CACT,SAAA,AACjD,eAD6C,EAAE,kFA5CxC,SAAS,AAAU,CAAI,EAE5B,AAFsD,AAElD,IACF,EAAoB,AAHC,GAQvBic,CAL0B,CAAC,AAK3BA,YALqB,GAKN,CAAC,EAClB,CAPoC,CAMd,CAAC,AANe,EAAE,8FC7BjC,SAAS,EAAkB,CAAI,EAAkB,AACtD,IAAM,EAAkB,EACrB,IAF4B,CAEvB,CAAC,GAAG,EACT,MAAM,CAAA,AAAC,GAAW,GAAW,CAAtB,AAAsB,CAAE,EAAb,AAAqB,KAAD,KAAW,CAAC,GAAG,CAAA,EAAK,EAAQ,KAAD,GAAS,CAAC,IAAG,CAAC,CAAC,CAAC,AAEpF,OAAO,EAAgB,MAAA,CAAS,EAAI,CAAC,CAAC,EAAhB,AAAkB,EAAgB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,CAAA,CAAX,EAAW,AACA,CAWA,SAAA,EACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAKA,IAAA,EAAA,EAAA,CAAA,EAHA,GAGA,AAEA,CAXA,CAWA,GAAA,CAAA,AAvDjD,EAuDiD,GALA,CAGA,AAHA,CAGA,AAEA,GAAA,CAAA,QAvD9B,CAuD8B,CACA,EAAA,CAHA,CAGA,AAHA,CAGA,AADA,CACA,AAvDlD,OAuDkD,GAAA,CAAA,OAvDhC,CAuDgC,EAAA,GAtD5D,CAsD4D,IAEA,CAxDtD,EAsDsD,AAEA,CAAA,CAFA,CAAA,CAEA,CAAA,EACA,EADA,EAAA,EAFA,CAAA,AAGA,EAGA,EAHA,AAHA,CAAA,CAMA,EAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,AAEA,EAAAnQ,EAAAA,KAAA,iBAAA,CAAA,OAAA,CAAA,EACA,EAIA0C,EAJA,AAIAA,KAJA,EAAA,2BAIA,CAAA,GAHA,CAIA,CAQA,EAZA,EAGA,CAAA,IASA,EAAA,CAAA,EAAA,AACA,IAAA,EAAA,GA5EzD,EA4EyD,MAAA,AACA,CA7EhD,CA4EgD,CAAA,AACA,CAAA,CAIA,GAAA,CACA,CALA,EAAA,CAKA,AANA,CADA,AACA,CAMA,IAAA,EANA,CAMA,AANA,CAMA,GACA,IADA,CAAA,EACAA,EAAAA,kCAAA,CAAA,EACA,CAAA,KAAA,CACA,CAFA,CAAA,IAGA,CADA,AAEA,SAFA,yFAcA,SAAA,AACA,CAAA,CACA,CAAA,CACA,CAAA,CACA,CAAA,EAEA,IAAA,EAAA,EAAA,KANA,CAMA,IACA,CADA,CAAA,CAKA,EAAA,EAAA,EAAA,CAJA,CAIA,CAJA,CAIA,AACA,MADA,CAAA,IALA,KAKA,gCArG7D,SAAS,AAAsB,CAAI,CAAU,CAAM,EAAiC,AAC9C,OAAO,CAOpD,GAPwD,KADnB,oICX9B,SAAS,AAAyB,CAAK,EAE5C,AAF2D,GAExC,aAAA,GAAf,EAAM,AAF4B,GAE7B,CAAC,EAA0B,EAAM,GAAD,KAAS,EAAE,KAAK,EAAE,EAAA,GAAO,aAAA,EAAiB,CAAC,EAAM,GAAD,KAAS,EAAE,KAAK,EAAE,IAAI,CAC7G,CAD+G,MAKjH,IAAM,EAASrK,EAAAA,EAAT,OAAkB,EAAE,CAC1B,GAAI,CAAC,GAAQ,GAAF,OAAY,EAAE,CAAC,cAAc,CACtC,CADwC,MAI1C,IAAM,EAAY,EAAM,GAAD,KAAS,CAAC,KAAK,CAAC,IAAI,CAGrC,EAAiB,CAAS,CAAC,UAA3B,EAAuC,CAAA,EAAK,CAAS,CAAC,YAAY,CAAC,CACnE,EAAa,CAAS,CAAC,MAAvB,OAAoC,CAAA,CAE1C,GAAI,CAAC,EACH,OAIF,IAAM,CALa,CAKQ,CALN,CAKY,GAAD,WAA1B,OAAgD,EAAE,0BAA0B,EAAE,YAAY,EAAE,CAC5F,EAAc,GAAoB,eAAF,MAAuB,EAAE,iBAAiB,EAAE,OAAO,CAEnF,EAAMo1B,CAAN,CAAMA,sBAAsB,CAAC,OAAgB,EAAW,EAAa,GAAY,AAAtC,EAAW,IAAa,CAAY,CAAU,EAAE,CAAC,CAG9F,GAAA,AAAO,GAAoB,eAAF,MAAuB,EAAE,CACpD,EAAmB,gBAAD,KAAsB,CAAC,iBAAA,CACvC,EAAmB,gBAAD,KAAsB,CAAC,iBAAA,EAAqB,CAAA,CAAE,CAClE,EAAmB,gBAAD,KAAsB,CAAC,iBAAiB,CAAC,GAAA,CAAM,EAErE,CAFwE,kJCpCzB7sB,EAAAA,iBAAiB,CAAC,CAAC,aAAE,CAAA,CAAa,IAG/E,CAH6G,GAGvG,EAAiB,EAAK,EAAD,KAAQ,CAAC,EAA9B,CAA2C,OAAO,CAAT,AAAU,CAAT,SAAmB,CAAE,EAAE,CAAC,CAAA,AAGlE,CAHkE,CAGvC,IAAI,MAAM,CAACiQ,EAAAA,SAAtC,WAA0D,CAAC,IASjE,MAAO,CAFL,GAL4B6c,AAFiD,CAAC,CAAC,AAEnDA,sBAL0C,EAKlB,CAAC,CACrD,QAAQ,CAAA,AAAE,IACR,CADQ,CACF,GAAD,AADY,KACX,CAAW,EAAM,GAAD,KAAS,EAAE,OAAO,CAAC,EAA0B,cAAc,CAAC,CAC3E,EAEb,CAAG,CAGC,CALc,AAMd,CAPmE,CAMhE,EACC,CAAE,kBADkB,IACI,AAChC,CACA,AADG,CACF,4HChBM,SAAS,AACd,CAAO,CACP,CAAI,EAEJ,GAAI,CAAC,EACH,KADU,CACH,CADK,AACL,CAAE,CAGX,EARoC,EAQ9B,EACJ,OAAA,EADe,IACI,OAAA,EAA+B,QAAA,EAAnB,OAAO,GAAwB,IAAxB,CAAwB,GAAS,EACnEC,EAAAA,GAD0E,kBACrD,CAAC,GACtB,EAEA,EAHsB,AAGH1b,EAAAA,CAFZ,WAEP,eAA8C,CAAC,EAAa5Z,EAAAA,OAAF,EAAW,EAAE,EAAE,UAAU,EAAE,CAAC,cAAA,GAAkB,GAM9G,EANmH,CAAC,IAEhH,GACF,CADM,CACD,CADG,CACJ,WAAc,CAAC,GAGd,CACT,YAJuC,CAAC,EAGf,4ICnBnB,EAA2BnE,EAAAA,UAAAA,UAA3B,sBAUC,SAAS,AAA6B,CAAI,CAAQ,CAAK,EAAoC,AAGhG,GAAKmE,EAAAA,SAAS,EAAE,EAAE,KAHwB,KAGd,EAAC,EAAwD,sBAAsB,CACzG,CAD2G,MAK7G,IAAM,EAAe,GAAK,CAAGu1B,CAAH,CAAGA,mBAAmB,CAAA,GAAM,oBAAoB,CAGpE,EAAc,GAAK,CAAGl2B,CAAH,CAAGA,gCAAgC,CAAA,GAAM,2BAA2B,CACvF,EAA4B,GAAK,CAAGk2B,CAAH,CAAGA,mBAAmB,CAAA,GAAM,0BAA0B,CAG7F,GAAI,CAAC,GAAgB,CAAC,GAAe,CAAC,EACpC,EADG,GAAiB,EAKtB,IAAM,EAAW,AAYnB,SAAS,AAAkB,CAjBsC,AAiBxB,EAjB0B,AAiBU,AAC3E,IAAM,CAb4B,CAaf,EAAyB,MAAtC,AADkB,gBACmB,GAAC,EAA6B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAC9G,GAAI,CAAC,EACH,OAAO,CADM,CAKf,CALiB,EACH,CAIR,EAAa,CAAc,CAAC7X,EAAAA,IAA5B,gBAAgD,CAAC,CAEvD,GAA0B,QAAQ,EAA9B,OAAO,EAAyB,CAElC,IAAM,EAAW,CAFR,CAEmB,IAAtB,CAA2B,CAAC,EAAP,CAAU,CAAC,CAAC,CAAC,CAAA,EAAK,EAAE,CAE/C,OAAO,IAAa,GAAc,CAA3B,CAAoC,KAAvB,CAAsB,IAAW,CAAC,CAAC,EAAA,EAAA,CAAA,CAAA,CAAA,AACA,CAEA,IAHA,GAGA,CACA,EA7BtB,EA4BsB,CA5Bb,CAAA,CAAT,AAAW,CAAC,CACzC,EAAW8X,EAAAA,IAAX,eAA8B,CAAC,IAAI,AAErC,CAFsC,EAE1B,CAAA,CAAQ,EAAE,AAExB,CAFE,CAEG,EAAD,UAAa,CAACC,EAAAA,wCAAwC,EAAE,EAEhE,EAFoE,CAAC,qBCkCjE,yBAAyB,gHAxDvB,EAAe,UAAf,AAAyB,CA0BzB,EAA0B,IAAI,OAAO,CA2FpC,CA3FqD,QA2F5C,AA3FV,EA2F+B,CAAc,EAA2B,AAC5E,MAC0C,SAFR,6BAEQ,GAAxC,CAAc,CAACF,EAAAA,mBAAmB,CAAA,EACM,yBAAA,GAAxC,CAAc,CAACG,EAAAA,mBAAmB,CAAA,EACW,UAA7C,OAAO,CAAc,CAACC,EAAAA,iBAAiB,CAAA,AAE3C,CAQO,SAAS,EAAkC,SAAE,CAAO,OAAE,CAAA,CAAO,EAA8C,OAChH,AAAI,GAD2C,CAC/B,EACP,CAAC,AADN,SAAwB,EAAE,oBACW,EAAE,EAAM,CAAC,CAAC,CAAH,AAG5C,AAAY,EAAE,EAAE,GAAhB,AACK,sCAAsC,CAGxC,CAAC,iCAAiC,EAAE,EAAQ,CAAC,CAAC,AACvD,GADoD,6BAzG7C,SAAsC,AAA7B,CAAyC,EAAkB,AACzE,GAA4B,QAAA,EAAxB,OAAO,IAA6B,CADE,CAWxC,MAVS,CAUF,GAV2C,CAUvC53B,EAAAA,KAVyC,AAUpC,EAAE,AATlB,IAAM,EAAqB,EAAwB,GAAG,CAAC,GACvD,GAAI,EACF,IAFiE,CAAC,EAE3D,CACF,CAH2C,CAIhD,IAAM,EAHc,AAGM,EAHJ,EAGQA,EAAAA,GAFL,EAEU,CAEnC,CAFqC,EAA/B,IACN,EAAwB,GAAG,CAAC,EAAc,GACnC,CACT,CACF,CAGF,IAN8C,EAGrC,GAHoB,EAAoC,CAAC,EACpC,YAoDvB,SAAS,EAGd,GAAKiC,EAAAA,SAAS,EAAE,EAAE,CAHiB,GAAS,MAGhB,EAAC,EAAwD,sBAAsB,CACzG,CAD2G,MAI7G,IAAM,EAAkBL,EAAAA,WAAlB,EAA+B,EAAE,CACvC,GAAI,EAAiB,CACnB,IAAM,EAAWC,EAAAA,IADA,AACX,OAAsB,CAAC,GACvB,EAAqBO,EAAAA,QADiB,CAAC,CACR,CAAC,GAAU,IAAI,CAAN,AAC1C,CAD2C,EACzB,CAAG,cAAH,EAAmB,CAAC,EAAE,AAC1CP,EAAAA,WAAW,CAAC,IAAkB,WAAH,CAAC,AAAc,CAAC61B,EAAAA,wCAAwC,EAAE,EAEzF,CACF,CAH+F,CAAC,sBA5CzF,SAAS,AAAuB,CAAE,EAAc,AACrD,IAAM,EAAgC55B,EAAAA,QADL,EACK,CACnC,aADG,IACc,QAEf,AAAL,GAQK,AAAD,CARA,GASF,EAA4B,IAAI,CAA4B,CAAE,CAG5D,EAA0B,QAAQ,EAZL,AAQH,AAIU,EAZL,AAQH,AAIU,AACjC,EAJP,AAIS,EAAE,AAEJmI,EAAAA,KANqD,AAGjC,QAGP,CAAC,IACZ,EADkB,AACQ,GAAG,EAAC,EAAM,EAAF,EAChC,EADwC,AACtC,EAAE,GAhBfjI,EAAAA,GAekC,QAflC,EACEE,EAAAA,KAAK,CAAC,IAAI,CACR,iHAAiH,EAE9G,EAAE,EAAE,AAgBf,uGA8DO,SAAS,AACd,CAAU,CACV,CAAc,CACd,CAAkB,EAElB,GAAI,CAAC,EAAqB,GACxB,OAGF,IAJwC,AAIlC,CAJmC,CAIzB,CAJ2B,AAIb,CAJL,AAIM05B,EAAAA,CAAzB,CAT2C,eASD,CAAA,CAC1C,EAAQ,CAAkB,CAACjb,CAA3B,CAA2BA,eAAe,CAAC,CAC3C,EAAe,EAAkC,QAAjD,CAAmD,EAAS,KAAF,AAAO,CAAmB,QAAA,EAAjB,IAAnB,GAA0B,EAAqB,EAAQ,CAA7B,CAA6B,CAAI,CAAC,CAClH,EAAW,QAAD,EAAW,CAAC,GACtB,EAAW,OADuB,CAAC,AACzB,KAAc,CAAC,CACvB,iCAAiC,CAAE,IAAY,EAAe,CAA3B,KAA2B,CAAS,QAAQ,CAC/E,kCAAkC,CAAE,CACxC,CAAG,CAAC,CACF,CAF2C,CAEhC,QAAD,IAAa,CAACtb,EAAAA,4BAA4B,CAAE,iBAAiB,CAAC,AAC1E,iHCrLM,EAA+B,uBAAuB,CACtD,EADA,AACgC,yBAAyB,CACzD,CADA,CAC8B,uBAAuB,CACrD,CADA,CAC4B,sBAAsB,CAAlD,2BA8EC,SAAS,AAAyB,CAAI,EAC3C,AADyD,IACnD,EAAWe,EAAAA,UAAU,CAAC,EADU,CACJ,CAAF,CAAC,EAAK,CAChC,EAAY,GAAQ,CAAG,EAA6B,CAApD,AACA,CADoB,CACN,GAAQ,CAAG,EAA8B,CACvD,CADsB,CACV,AADZ,GACoB,CAAG,EAA4B,CAAnD,AACA,CADoB,CACT,GAAQ,CAAG,CAH6B,CAGnD,AAAgD,CAEtD,CAFyB,EAErB,CAAC,GAAa,CAJ0C,AAIzC,GAAoC,EAAlD,EAHmD,IAGO,AAA5C,EAAe,AAA+B,CAFZ,MAEZ,EACvC,OADuC,AAIzC,IAAM,EAAW+d,EAAAA,qBAAqB,EAAC,CAAI,IAAA,AAAO,EAC5C,EAAa/d,EAAAA,GADwC,OAC9B,CAAC,GAAM,CAAF,CAAC,IAAO,CAEpC,EAAgB,GAA6B,IAAA,GAA7B,AAAc,CAA9B,CAAoD,OAAA,CAAtB,AAAgC,IAAI,CAWxEy1B,EAAAA,cAAc,CACZ,CACE,SAAS,CAAE,EACX,OADW,IACA,CAAE,EACb,MAAM,CAAE,EADK,SAEb,CACN,CAF2B,AAEtB,CAbmB,CAcpB,IAFU,KAZV,IAca,GAdN,EACH,CACE,UAAU,CAAE,EAAA,EACZ,CADiB,EAAE,KACX,CAAE,CAAE,IAAI,CAAE,UAAoB,KAAK,CAAE,CAAA,CAAU,AACjE,MADuD,CAE/C,GAaN,EAAK,EAAD,EAbW,QAaE,CAAC,OAA8B,GAChD,EAAK,EAAD,EADqD,CAAC,OACzC,CAAC,GAD4B,IACG,GACjD,EAAK,EAAD,EADsD,CAAC,OAC1C,CAAC,IAD6B,GACA,GAC/C,EAAK,EAAD,EADoD,CAAC,OACxC,CAAC,EAD2B,KACA,GAE7C75B,EAAAA,IAFsD,CAAC,MAEvDA,EAAeE,AAF4B,EAE5BA,KAAK,CAAC,GAAG,CAAC,CAAC,+BAA+B,EAAE,EAAY,SAAD,MAAgB,EAAE,EAAc,CAAC,CAAC,CAC1G,AAD2G,QAAJ,kBA9FhG,SAAS,AAAsB,CAAI,CAAQ,CAAK,EAA4B,AACjF,IAAM,EAAoB,AArB5B,SAAS,CAoB4B,CAnBnC,IAAM,AAoBA,EApBwB,GAoBgB,EAAE,MAhBhD,CAL2B,EAKtB,CAL4C,AAK7C,CAAuB,GAJrB,gBAIoB,KAAyB,CAInD,CAJqD,EAIjD,CACF,OAAO,IAAI,CAAC,KAAK,CAAC,EAAsB,mBAAD,KAAyB,CAClE,AADkE,CAChE,KAAM,CACNF,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAChF,MACF,CADS,AAEX,IAOE,GAAI,CAAC,CATa,EASQ,CAAC,EACzB,GAD8B,EAAE,EAOlC,IAAM,EAAUyG,EAAAA,GAAV,cAA2B,EAAE,CAAC,YAAY,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,QAI7F,GAAI,CAAC,EACH,KADU,EAAE,AAId,IAAM,EAAY,KAAK,CAAC,CAAlB,MAAyB,CAAC,CAAO,CAAC,YAAY,CAAC,CAAA,CAAI,CAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA,CAAI,CAAO,CAAC,YAAY,CAAC,CACzG,GAAI,CAAC,GAAW,MAAF,EAAU,CAAC,aAAa,CAAC,CACrC,CADuC,MAIzC,IAAM,EAAc,EAAkB,IAAI,CAAA,AAAC,EAArC,CAA6C,CAAR,CAAa,EAAD,EAAC,CAAnB,EAA4B,GACjE,EADsE,CAAC,AACnE,CAAC,GAAa,IAAA,EAAQ,CAAC,CAAX,CAAuB,QAAQ,CAC7C,AADoC,CAAW,MAMjD,IAAM,EAAc,EAAY,IAAI,CAC9B,EADA,AACYwb,EADa,AACbA,KAAZ,gBAAiC,EAAC,CAAI,IAAI,AAE1C,EAAY0X,EAAAA,KAAZ,SAA0B,CAC9B,aAAE,EAAa,MAAM,CAAE,EAAV,WAAU,CAAe,CACtC,CACE,UAAU,CAAE,EAAA,EACZ,CADiB,EAAE,KACX,CAAE,CAAE,IAAI,CAAE,SAAS,CAAE,KAAK,CAAE,EAAY,QAAA,CAAD,AAAW,AAChE,CAAK,EAGH75B,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,CAAC,6BAA6B,EAAE,EAAY,SAAD,EAAY,EAAE,EAAU,CAAC,CAAC,CAAC,CAG/F,EAAK,CAHsF,CAGvF,UAAa,CAAC,EAA8B,GAChD,EAAK,EAAD,EADqD,CAAC,OACzC,CAAC,EAA+B,GACjD,EAAK,CAFyC,CAE1C,IADwD,CAAC,KAC5C,CAAC,EAA6B,GAC/C,EAAK,EAF0C,AAE3C,EADoD,CAAC,OACxC,CAAC,EAA2B,EAAY,GADZ,KACoB,CAAT,AAAU,AACpE,YAD6C,uFC5EvC,EAAwB,kBAAkB,CAC1C,AADA,EACkC,4BAA4B,CAA9D,AAEA,EAAgC,0BAA0B,CAK1D,AALA,EAK6B,uBAAuB,CAApD,AA4GN,SAAS,EAAU,CAAO,CAAiD,CAAI,EAA8B,AAC3G,EADgB,EACV,EAAQ,CAAO,CAAC,CAAhB,CAAqB,CAC3B,CAD0B,MACnB,KAAK,CAAC,OAAO,CAAC,GAAS,CAAK,CAAT,AAAU,CAAV,AAAW,CAAA,CAAI,CAC3C,IADgD,qBATzC,SAA+B,AAAtB,CAA0B,EAAc,AACtD,IAAM,EAAWkE,EAAAA,UADkB,AACR,CAAC,GAAM,CAAF,CAAC,EAAK,CAClC,GAAQ,CAAG,EAA2B,EAA9B,AAAgC,AAC1C,EAAK,EAAD,UAAa,CAAC,EAA4B,KADP,EAG3C,EAF2D,CAAC,cAAZ,gBA9FzC,SAAS,AAA6B,CAAI,EAC/C,AAD6D,IACvD,EAAUuC,EAAAA,GAAV,cAA2B,AADS,EACP,CAAC,YAAY,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,QAI7F,GAAI,CAAC,GAKD,AAAW,IALH,EAKR,AALU,mBAK0B,EAAE,EAD3B,KAAK,CAAC,OAAO,CAAC,CAAO,CAAC,SAAS,CAAC,CAAA,CAAI,CAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA,CAAI,CAAO,CAAC,UAAS,AAAC,EAH3F,OAQF,IAAM,EAAY,EAAU,EAAS,KAAV,AAAQ,YAAmB,CAAC,CACjD,EAAY,EAAU,EAAS,KAAV,AAAQ,YAAmB,CAAC,CACjD,EAAgB,EAAU,EAAS,KAAF,AAAR,gBAA+B,CAAC,CACzD,EAAgB,EAAU,EAAS,KAAF,AAAR,gBAA+B,CAAC,CAiB/D,GAfA,EAAK,EAAD,UAAa,CAAC,EAAuB,cAAc,CAAC,CACxD,EAAK,CADkC,CACnC,UAAa,CAAC,EAA+B,SAAS,CAAC,CAEvD,GACF,EAAK,EAAD,EADO,EAAE,KAFgC,CAG5B,CAAC,EAAiC,GAGjD,GACF,EAAK,CAJuD,CAIxD,AAJyD,EAGlD,EAAE,MACI,CAAC,AA3CY,QAuCmB,cAvCG,CA2CP,EAAF,CAGzC,GACF,EAAK,CAJiD,CAAC,AAInD,MADW,EAAE,EACA,CA7CsB,AA6CrB,+BA7CoD,CA6ChB,EAAF,CAGlD,EAAe,CACjB,IAAM,EAAQ,CAJqD,CAAC,EAGrD,IACO,CAAC,EAAe,EAAE,CAAC,AACrC,CAAC,KAAK,CAAC,CADyB,GAElC,CADc,CAAC,AACV,EADY,AACb,UAAa,CAlDuB,AAkDtB,kCAlDwD,CAkDjB,EAAF,AAE3D,CAGA,EALkE,AAK7D,CAL8D,CAK/D,UAAa,CAAC,GAA4B,EAChD,EADoD,CAAC,kBAAP,YAUvC,SAAS,AAA6B,CAAI,EAAc,AAC7D,IAQI,EARE,EAAWvC,EAQP,AAROA,UAAU,CAAC,GAAM,CAAF,AADU,CACT,EAAK,CAGhC,EAAU,GAAQ,CAAG,CAArB,GAAkB,MAAa,CAAA,CACrC,GAAI,CAAC,EACH,KADU,EAAE,AAKd,GAAI,CACF,EAAS,IAAI,GAAG,CAAC,EACnB,CAAE,IADwB,CAAC,AACnB,CACN,MACF,CAEA,GAAI,AAAoB,MAAd,YAAc,KAAb,QAAA,EAAmC,CAAC,EAAO,IAAD,IAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAC1F,CAD4F,MAK9F,IAAM,EAAa,EAAO,IAAD,EAAnB,EAA4B,CAAC,KAAK,CAAC,4BAA4B,CAAC,CACtE,GAAI,CAAC,EACH,OAGF,CAJe,EAAE,CAIX,EAAQ,kBAAkB,CAAC,CAAU,CAAC,CAAC,CAAC,CAAE,CAEhD,EAAK,EAAD,UAAa,CAAC,EAAuB,cAAc,CAAC,CACxD,EAAK,CADkC,CACnC,UAAa,CAAC,EAAiC,GACnD,EADwD,AACnD,CADoD,CACrD,UAAa,CAAC,EAA+B,MAAM,CAAC,CAGxD,CAJiD,CAI5C,EAAD,UAAa,CAAC,GAA4B,CAHC,CAIjD,EADoD,CAAC,kBAAP,gOCjFvC,SAAS,AAAkB,CAAI,EAAc,AAClD,IAAM,EAAiBA,EAAAA,MADQ,IACE,CAAC,GAAM,CAAF,CAAC,EAAK,CACtC,EAAWP,EAAAA,IAAX,OAAsB,CAAC,GACvB,CAD2B,CAAC,AACPO,EAAAA,UAAU,CAAC,GAAU,IAAI,CAAN,AACxC,CADyC,CAC5B,IAAS,AAAT,EAMnB,EANM,CAEN01B,EAAAA,CAFoC,2BAER,CAAC,EAAM,EAAF,CAIgB,QAAQ,EAArD,AAAuD,CAJV,CAAC,KAIvC,GAAc,CAAGC,EAAAA,QAAH,OAAkB,CAAA,EAItC,IAAkB,CAAG9Y,EAAAA,WAAH,aAA2B,CAAA,EAAK,GAAkB,CAAGC,EAAAA,YAAH,SAAuB,AAAC,GAC7F,CAAC,GAAkB,CAAGvC,EAAAA,YAAH,GAAkB,CAAA,CACrC,CACA,IAAM,EAAQ,CAAc,CAACob,CAAvB,CAAuBA,eAAe,CAAC,CAAC,OAAO,CAAC,UAAU,CAAE,EAAE,CAAC,CACrE,EAAS,MAAD,IAAW,CAAC,GACpB,EAAS,AADgB,CAAC,KAClB,MAAa,CAACpb,EAAAA,eAAe,CAAE,GAEvC,EAF4C,AAEnC,CAFoC,KAErC,MAAa,CAACob,EAAAA,eAAe,CAAE,GAKvC,EAL4C,CAAC,CAKvC,EAAS,GAAkB,CAA3B,AAA8B9Y,EAAAA,YAAH,YAA2B,CAAA,EAAK,GAAkB,CAAGC,EAAAA,YAAH,QAAuB,CAAC,CACrF,QAAQ,EAA1B,AAA4B,OAArB,GACTva,EAAAA,CADS,gBACQ,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAIAqzB,EAAAA,qBAAA,CAAA,EAAA,GAGAC,EAAAA,AAHA,CAAA,2BAGA,CAAA,EACA,CAGA,GAAA,EAJA,CAAA,AAIA,CAAAT,EAAAA,QAAA,WAAA,CAAA,GAAA,oBAAA,CAAA,CACA,IAAA,EAAA,CAAA,CAAAG,EAAAA,QAAA,WAAA,CAAA,CACA,QAAA,EAAA,OAAA,IACA,EAAA,MAAA,EADA,EACA,CAAA,GACA,EAAA,MAAA,GADA,CAAA,EACA,CAAAhb,EAAAA,eAAA,CAAA,GACA,EAAA,MAAA,GADA,CAAA,EACA,CAAAgb,EAAAA,mBAAA,CAAA,IAEA,EAAA,EAAA,MAFA,CAAA,GAEA,CAAAr2B,EAAAA,gCAAA,CAAA,MAAA,CAAA,AACA,CAQA,GAJA,GAAA,CAAAk2B,EAAAA,QAAA,WAAA,CAAA,QAAA,GACA,EAAA,EAAA,EADA,EAAA,MACA,CAAAl2B,EAAAA,gCAAA,CAAA,MAAA,CAAA,CAGA,EAAA,CACA,IAAA,EAAAqD,CADA,CACAA,GAAA,cAAA,EAAA,CAAA,YAAA,EAAA,CAAA,qBAAA,EAAA,iBAAA,EAAA,OAAA,CACAuzB,EAAAA,sBAAA,CAAA,EAAA,EACA,CAGA,EAJA,CAIA,EAJA,CAIA,AAJA,CAIAV,EAAAA,QAAA,WAAA,CAAA,GAAA,0BAAA,EAAA,EAAA,CACA,IAAA,EAAAt2B,CADA,CACAA,EAAA,qBAAA,CAAA,GAEA,CAFA,CAAA,AAEA,CAAA,EAAA,IAAA,KAAA,KAAA,EAAAyD,EAAAA,iBAAA,EAAA,CAAA,CAAA,KAAA,EAAA,CACA,EAAA,EAAA,CAAA,GAAA,CAAA,EAAAlD,EAAAA,eAAA,EAAA,CAEA,EAAA8jB,EAAAA,gBAAA,IAAA,CAAAjK,EAAAA,OAAA,CAAA,MAAA,EAAA,CAAA,CACA,IACA,EAAA,cADA,AACA,CAAA,CADA,AACA,CAAA,CAAA,AAGAxW,EAAAA,uBAAA,CAAA,EAAA,EAAA,EACA,CAEAqzB,AAHA,EAGAA,SAHA,CAAA,yBAGA,CAAA,EAAA,EAAA,GAGAC,EAAAA,OAHA,MAAA,CAAA,cAGA,CAAA,EACA,EADA,CAAA,8GCtBhD,SAAS,IACP,IAAM,EApBR,AAoBc,CAAN,QApBC,EAGP,GAAiC,IAA7B,AAgB+B,EACH,CAD2C,CACzC,GAjBvB,AAAiC,EAAE,EAHnB,GAA0C,UAG1D,CACT,OAAO,iBAAiB,CAM1B,GAAI,kBAAA,GAAsB,OAAA,EAAW,AAAoC,UAAU,SAAvC,OAAO,CAAC,gBAAA,CAAiC,CACnF,GAAM,CAAA,kBAAE,CAAA,CAAkB,CAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAA,EAAK,CAAA,CAAE,CAE3E,OAAO,CACT,CAGF,IAKE,GAAI,CAAC,GAAA,AAA+B,IAT3B,MASqC,EAAlC,OAAO,EAAI,CAAD,OAAC,CAAyB,CAC9Cp6B,EAAAA,WAAA,EACEE,EAAAA,KAAK,CAAC,IAAI,CACR,oNAAoN,EAExN,MACF,CADS,AAGT,OAAO,EAHW,AAGP,CAAD,OAAS,EAAE,AACvB,CAEA,SAAS,EAAyB,CAAK,EAAoB,AACzD,OAAO,KAAA,OADwB,CACP,KAAA,EAAS,EAAM,GAAD,IAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAC7E,AAD8E,iCAtFvE,SAAS,EACd,IAAM,EAAM,MAAM,CAAC,GAAG,CAAC,UADoB,GAAS,sBACM,CAAC,CACrD,EAA4EJ,EAAAA,UAAU,CAGtF,CAHgB,CAGE,IACxB,GAAI,CAAC,EACH,GAFI,IASN,IAAI,EARgB,AAQ0B,EARxB,AAUtB,CAAgB,CAAC,CAXmC,CAWhC,CAAA,AAAI,AAAI,AAX0B,IAYpD,CAHgB,EAGZ,CAHuD,AAEzB,AAEhC,KAFiD,EAE1C,EAAe,EACxB,CAAA,AAAE,KAD8B,CAAC,AACxB,EAAO,CADO,AAGrB,EAFY,CAER,CAAC,EAAyB,GAC5B,EADiC,CAAC,EAAE,CAC9B,EAIR,GAJa,CAIP,EAAgB,IAEtB,CAP6B,EAOzB,CAAC,EACH,CAHI,MAGG,IADS,AAKlB,EALoB,AAKH,EAJA,AAOjB,EAPmB,CAH+B,AAU9C,CACF,CAXkD,KAOpD,CAA8B,AAIrB,EAAe,EACxB,CAAA,AAAE,KAD8B,CAAC,AACxB,EAAY,CADE,AAGrB,GAAI,CAAC,EAAyB,CAFb,EAGf,MAAM,CADgC,CAIxC,AAJyC,EAAE,KAIpC,CAHW,EAIpB,CACF,AANiC,CAOnC,CAAC,CAEDE,CALqB,CAKrBA,CALuB,UAKvBA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,AACxF,mJCnCO,eAAe,AAAgC,CAAc,EAA+C,AACjH,GAAM,KAAE,CAAG,KAAE,CAAG,KAAE,CAAA,CAAI,CAAI,EAGpB,EAAa,CAJgC,EAI7B,AAAE,OAHgB,GAGhB,EAAc,EAAe,UAAU,CAC/D,CADoD,EAChD,GAAc,EAAa,GAAG,EAA9B,AAAgC,AAWhC,CAAC,EAXa,AAWE,QAAQ,CAV1B,CAU4B,EAAX,IAMnB,GAAI,GAAA,AAAOm6B,EAAAA,iBAAiB,CAAC,GAAG,AAAG,CAAF,AAC/BC,EAAAA,SAAS,CAACC,EAAAA,sBAAsB,EAAE,CAAC,CAEnC,IAAM,EACW,QAAA,EAAf,CADI,MACG,EAAoB,CAApB,CAA+D,CAA3C,kBAA2C,MAAsB,QAE9F,AAAI,AAAyB,CAF0E,OAElE,EAAE,OAA5B,GACT5zB,EAAAA,QADS,SACQ,EAAE,CAAC,cAAc,CAAC,GAC5B,GAGFA,EAAAA,KAJ2C,CAAC,EAC7B,SAGE,EAAE,CAAC,WAAW,EAAE,AAC1C,CAEA,IAAM,EAAUN,EAAAA,GAAV,MAAmB,CAAA,AAAC,IACxB,GAAI,EAD6B,AACxB,CAAF,AACL,IAAM,EAAoBkX,EAAAA,aAApB,WAA4C,CAAC,GAAG,AACtD,CADuD,CACjD,GAAD,qBAAyB,CAAC,mBAAE,CAAA,CAAmB,CAAC,AACvD,CAIA,OAAOhQ,EAAAA,IAL4B,YAKZ,CAAC,GAAA,AAAO,CAAC,mCAAmC,EAAE,EAAI,CAAD,AAAE,CAAC,CAAE,CAC3E,SAAS,CAAE,CACT,IAAI,CAAE,uCAAuC,CAC7C,OAAO,EAAE,EACT,GADc,CACV,CAAE,CACJ,QAAQ,CAAE,wBAAwB,AAC5C,CAAS,AACT,CAAO,AACP,CAAK,CAAC,AACJ,CAAC,CAAC,CAIF,OAFA+sB,EAAAA,SAAS,CAACC,EAAAA,sBAAsB,EAAE,CAAC,CAE5B,CACT,MADgB,gGClCT,SAAS,AAAsB,CAAK,EAA6D,AACtG,GAVO,AAUgB,CAAnB,CAVS,AAUR,GAVO,AAUgB,CAAC,EAAE,EAVlB,EASmB,CATN,MAAM,AAUV,CAVW,GAAG,CAAC,wBAAwB,CAAC,CAW5D,MAAO,GAGT,EAHc,CAGR,MAAE,CAAA,CAAK,CAAI,AAvCnB,SAAS,AAAiC,CAAE,EAA+B,AACzE,IAAM,EAAW,MAAX,EAAmB,CAAC,EAAE,AAAC,GAsCoB,EAtCf,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CADH,CACK,CAAC,CAIvC,EAAW,GAAY,CAAC,CAAI,GAG5B,CAHgC,CAGrB,KAAK,CAAhB,AAAiB,CAAC,CAAC,CAEzB,IAAK,IAAI,EAAQ,CAAC,CAAE,CAAX,CAAmB,CAAC,CAAE,CAAX,GAAoB,CAAJ,AAGlC,EAHoC,EAG9B,EAAO,GAFO,CAAA,CAAI,EAEe,EACvC,CAAQ,AAHqB,AAEa,CACjC,AADe,EACV,CAAY,CAAC,CAAb,EAAI,CACpB,CAEA,CAHoB,CADiB,IAI9B,CACL,IAAI,CAAE,AAAY,IAfH,GAeT,AAfqB,CAAC,CAAI,CAAA,CAAG,CAeb,WAAA,CAAc,eAAe,CACnD,QAAQ,CAAE,EACV,MADU,KACC,CAAE,AAAa,CAAC,GAbD,EAAX,CAAW,CAab,AACjB,AAdiC,CAc9B,AACH,EAiBoD,EAAM,CAhCvC,EAgCsC,CAAK,CAAC,CAE7D,MAAgB,WAAW,GAApB,CACT,GADS,0IC3CT,SAAS,EAAkB,CAAQ,EAA0C,AAC3E,IAAM,EAAiBC,EAAAA,CADF,MACS,EAAE,CAA1B,AACA,IAA4B,GAAWC,EAAAA,GAAX,aAA5B,EAAyD,CAAC,GAMhE,KANwE,CAAA,CAEpE,EAFwE,CAG1Ez6B,EAAAA,EAH+E,SAG/EA,EAAeE,EAAAA,KADY,AACP,CAAC,CADQ,EACL,CAAC,oDAAoD,CAAC,CAGzE,GAAkB,CAC3B,CAEA,SAAS,AAHA,IAIP,OAAO,GAJ2C,CAIvCoG,EAAAA,KADkB,GAAS,cACL,CAAC,CAChC,OAAO,CAAE,kCAAkC,CAC3C,MAAM,CAAE,kBAAkB,AAC9B,CAAG,CAAC,AACJ,qBA+CO,SAAS,AAAkB,CAAO,EAA0B,OACjE,AAAI,IACK,GAFsB,CAKxBs0B,EAAAA,IAJW,EAAE,EAAE,QACS,CAGH,CAHK,AAGJ,EAC/B,KADsC,CAAC,QAvChC,SAAS,AAAa,CAAO,CAAoB,CAAQ,EAAwB,IAA/D,GACvB,AAAI,EAAe,GACV,EAAS,GADS,CAAC,CAIrBF,CAJuB,AACb,CADC,AAIXA,SAAa,CAAC,EAAS,EAChC,CAJ0C,EAGZ,AAHc,CAAC,EAGL,CAAC,aAYlC,SAAS,AAAmB,CAAO,CAAoB,CAAQ,EAA4C,AAChH,GAAI,EAAe,GAAW,CAC5B,CAF2B,GACF,AACnB,CADoB,CACD,EADT,EAEhB,OAAO,EAAS,CADV,CAC4B,IAAnB,AAAyB,EAAiB,CADV,EACa,AADX,EACa,CAAC,AACjE,CAEA,CAHkC,MAAwB,AAGnDC,EAAAA,eAAmB,CAAC,EAAS,EACtC,GADoC,GAAU,CAAC,kICiCL,eAAA,AACA,CAAA,CACA,CAAA,EAEA,GAAA,CACA,OAAA,KALA,CAKA,KAAA,EACA,CAAA,IADA,CAAA,CACA,CAAA,CAAA,CAEA,IAHA,CAAA,CAEAptB,EAAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,OAAA,CAAA,GAAA,EAAA,EAAA,CAAA,mCAAA,CAAA,CAAA,CAAA,CACA,CAAA,AACA,CACA,6BAzFnC,SAAS,AACd,CAAY,EAEZ,OAAO,cAH+B,CAGA,GAAG,CAAqB,EAAyC,AACrG,GAAI,CACF,OAAO,MAAM,EAAa,KAAK,CAAC,IAAP,AAAW,CAAE,EACxC,CAAA,AAAE,MAAO,CAAC,CAAE,CAOV,MALAA,EAAAA,CAH2D,CAAC,cAG5C,CAAC,CAAC,CAAE,CAGlB,SAAS,CAAE,CAAE,OAAO,EAAE,EAAO,GAAF,CAAM,CAAE,8BAA8B,CAAE,IAAI,CAAE,CAAE,QAAQ,CAAE,EAAa,IAAA,CAAA,CAAQ,AAClH,CAAO,CAAC,CACI,CAF6F,AAE5F,AACT,CACF,CACF,AADG,oCAkBI,SAAS,AACd,CAAe,CACf,CAAG,CACH,CAAG,CACH,CAAA,EASA,OAAO,eAEL,AAf2C,GAexC,CAAA,EAEH,IAAM,EAAoBgQ,EAAAA,aAApB,WAA4C,CAAC,GAAG,AACtD9Z,CADuD,CACvDA,eAAe,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAA,EAAA,KAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,KAAA,eAAA,CAAA,CAAA,CAAA,CAAA,CACAkD,EAAAA,iBAAA,EAAA,CAAA,wBAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CAEA,IAAA,EAAA/C,EAAAA,AAAA,KAFA,QAEA,EAAA,CAGA,GAAA,CAAA,QAAA,EAAA,CAAA,EAAA,KAAA,aAAA,EACAC,AACA,EADAA,EACA,SADA,CAAA,GACA,CADA,CAAA,UACA,CAAAg3B,EAAAA,sCAAA,CAAA,EAAA,KAAA,aAAA,CAAA,CAGA,GAAA,CAAA,cAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAAvuB,EAAAA,YAAA,EAAA,CAEA,MAAA,CACA,WAAA,CAAA,EACA,OAAA,CAAA,CADA,CAEA,IAAA,CADA,AACA,MAAA,EAAA,KAAA,CAAA,IAAA,CAAA,EACA,AADA,CACA,AACA,CAFA,AAEA,AACA,CAHA,+ICzEnC,SAAS,AACd,CAAmB,CACnB,CAAmB,EAEnB,OAAO,IAAI,KAAK,CAAC,EAAqB,CACpC,GALwC,EAKnC,CAAE,MAAO,EAAgB,EAAS,AADL,IACS,CACzC,AADmC,GAC/BkuB,CAD6E,CAC7EA,AADsB,OACf,EAAE,CACX,CADa,MACN,EAAe,KAAK,CAAC,EAAS,GAGvC,CAHuB,AAAoB,CAAN,AAAO,EAGtC,EAA6BM,EAAAA,sBAA7B,EAAqD,CAAC,GAC5D,OAAOC,EAAAA,EADmE,CAAC,kBAC/C,CAAC,EAA4B,EAC3D,CAAC,AACL,CAFmE,AAEhE,CAFiE,AAEhE,AACJ,mBAH6D,8HCXtD,SAAS,AAA8B,CAAmB,EAAoC,AACnG,OAAO,IAAI,KAAK,CAAC,EAAqB,CACpC,KAAK,CAAE,AAFkC,MAE3B,EAAgB,EAAS,AADL,IACS,CAAN,AACnC,GAAIP,CADuE,CAAjD,AACtBA,OAAO,EAAE,CACX,CADa,MACN,EAAe,KAAK,CAAC,EAAS,GAGvC,CAH2C,AAApB,CAAqB,AAAP,CAG/B,CAAC,EAAO,CAAI,EACZ,EADQ,AAAQ,GACd,CAAG,KAAE,CAAA,CAAI,CAAI,EAEf,EAA8BM,EAAAA,CAFR,sBAEtB,CAAsD,CAAC,GAK7D,IAAI,GAAA,CAAO,EA+BT,CA/BY,AAL6D,CAAC,KAoCnE,EAA4B,KAAK,CAAC,EAAS,EA/BpC,EACd,AA8BsD,CAAN,AAAO,GA9BjD,EAAwBE,EAAAA,KA8BI,YA9B5B,cAAuD,CAAC,EAA6B,EAAK,CAAF,CAAO,CAAF,AACjG,oBADuF,AACnE,CAAE,EAAQ,KAAD,GAAS,CACtC,kBAAkB,CAAE,EAAQ,KAAD,GAAS,CACpC,sBAAsB,CAAE,iBAAiB,AACnD,CAAS,CAAC,CAEI,CACJ,IAAI,CAAE,CAAY,SAClB,CAAO,aACP,CAAW,CACrB,CAIa,MAAM,EAAsB,KAAK,CAAC,EAAS,IAAU,AAAN,CAAM,AAAL,AAAP,CAAc,CAc5D,AAd4D,CAAA,GAA5B,EAEJ,UAAxB,OAAO,GAA8C,IAAI,EAAE,CAAvB,EAA7B,EAEL,IACD,EAAyC,EAHN,GAEvB,EAAE,GACd,MAAyC,CAAmB,CAAA,CAAW,CAItE,IACD,EAAyC,CADjC,EAAE,GAT6C,IAUvD,IAAyC,CAAiB,CAAA,CAAO,EAI/D,CACT,CAGF,CAAC,AACL,CAAG,CAAC,AACJ,GALa,IADc,6IC3CpB,SAAS,AAAiC,CAAsB,EAA0C,AAC/G,OAAO,IAAI,KAAK,CAAC,EAAwB,CACvC,KAAK,CAAE,GAFqC,GAE9B,EAAgB,EAAS,GADF,CACM,CAAN,AACnC,GAAIR,CAD0E,CAApD,AACtBA,OAAO,EAAE,CACX,CADa,MACN,EAAe,KAAK,CAAC,EAAS,GAGvC,CAH2C,AAApB,CAAc,AAAO,CAGtC,CAAC,EAAO,CAAI,EACZ,EADQ,AAAQ,GACd,CAAG,KAAE,CAAA,CAAI,CAAI,EAAQ,GAAG,CAE1B,CAFsB,CAEWM,EAAAA,wBAAwB,CAAC,CAA1D,EAMN,IAAI,GAAA,CAAO,EAuCT,CA7C4E,AAMhE,CANiE,KA6CtE,EAA+B,KAAK,CAAC,EAAS,EAvCvC,EACd,AAsCyD,CAAN,AAAO,GAtCpD,EAAwBE,EAAAA,QAsCO,SAtC/B,cAAuD,CAAC,EAAgC,EAAK,CAAF,CAAO,CACtG,AADoG,oBAChF,CAAE,EADoE,KAC7D,CAC7B,kBAAkB,CAAE,EAAQ,GAAG,CAAC,CAAL,OAAa,CACxC,sBAAsB,CAAE,iBAAiB,AACnD,CAAS,CAAC,CAEI,CACJ,IAAI,CAAE,CAAkB,aACxB,CAAW,SACX,CAAO,CACjB,CAIY,MAAM,EAAsB,KAAK,CAAC,EAAS,GAsB/C,CAtBmD,CAAC,AAAP,IAEX,EAFH,QAE3B,OAAO,GAA0D,IAAI,EAAE,CAA7B,IAKtC,AAAF,EAAiD,EAL5C,OAKqD,EAAE,CALpB,AAMzC,EAA+C,SAAA,CAAY,EAAA,CAAE,CAI5D,EAJD,EAKA,EAA8D,KADlD,EAAE,EACyD,CAAC,gBAAA,CAAmB,CAAA,CAAW,CAIrG,IACD,EAA8D,CADtD,EAAE,MAC6D,CAAC,cAAA,CAAiB,CAAA,CAAO,EAI9F,CACT,CAGF,CAAC,AACL,CAAG,CAAC,AACJ,GALa,UADoB,4ICrD1B,SAAS,AACd,CAA2B,EAE3B,OAAO,IAAI,KAAK,CAAC,EAA6B,CAC5C,KAAK,CAAE,MAAO,EAJmC,AAInB,EAAS,IAAI,CAAN,AACnC,GAAIR,AAFoC,CAC2C,CAC/EA,AADsB,OACf,EAAE,CACX,CADa,MACN,EAAe,KAAK,CAAC,EAAS,GAGvC,CAHuB,AAAoB,CAAN,AAAO,CAGtC,CAAC,EAAO,CAAI,EACZ,EADQ,AAAQ,GACd,CAAG,KAAE,CAAA,CAAI,CAAI,EAEf,EAA8BM,EAAAA,CAFR,sBAEtB,CAAsD,CAAC,GAK7D,GAAI,GAAA,EAAO,EAUT,CAfyE,AAK7D,CAL8D,KAenE,EAA4B,KAAK,CAAC,EAAS,EAVpC,EACd,AASsD,CAAN,AAAO,GATjD,EAAwBE,EAAAA,KASI,YAT5B,cAAuD,CAAC,EAA6B,EAAK,CAAF,CAAO,CAAF,AACjG,oBADuF,AACnE,CAAE,YAAY,CAClC,kBAAkB,CAAE,EAAQ,KAAD,GAAS,CACpC,sBAAsB,CAAE,iBAAiB,AACnD,CAAS,CAAC,CAEI,MAAE,CAAA,CAAK,CAAI,MAAM,EAAsB,KAAK,CAAC,EAAS,GAC5D,CADgE,CAAC,AAAP,KACnD,CACT,AAF8C,CAKhD,CAAC,AACL,CALmB,AAKhB,CAAC,AACJ,GALa,mJCzBN,SAAS,AACd,CAAwB,EAExB,OAAO,IAAI,KAAK,CAAC,EAA0B,CACzC,KAAK,CAAE,KAJuC,CAIhC,EAAgB,EAAS,IAAI,CADJ,AACF,AACnC,GAAIR,CAD4E,CAAtD,AACtBA,OAAO,EAAE,CACX,CADa,MACN,EAAe,KAAK,CAAC,EAAS,GAGvC,CAH2C,AAApB,CAAqB,AAAP,CAG/B,CAAC,EAAO,CAAI,EACZ,EADQ,AAAQ,GACd,CAAG,KAAE,CAAA,CAAI,CAAI,EAEf,EAA8BM,EAAAA,CAFR,sBAEtB,CAAsD,CAAC,GAK7D,IAAI,GAAA,CAAO,EA+BT,CApCyE,AAK7D,CAL8D,KAoCnE,EAA4B,KAAK,CAAC,EAAS,EA/BpC,EACd,AA8BsD,CAAN,AAAO,GA9BjD,EAAwBE,EAAAA,KA8BI,YA9B5B,cAAuD,CAAC,EAA6B,EAAK,CAAF,CAAO,CACnG,AADiG,oBAC7E,AADmE,CACjE,SAAS,CAC/B,kBAAkB,CAAE,EAAQ,KAAD,GAAS,CACpC,sBAAsB,CAAE,iBAAiB,AACnD,CAAS,CAAC,CAEI,CACJ,IAAI,CAAE,CAAoB,SAC1B,CAAO,aACP,CAAW,CACrB,CAIY,MAAM,EAAsB,KAAK,CAAC,EAAS,GAc/C,CAdmD,CAAN,AAAO,IAEhB,EAFL,QAE3B,OAAO,GAA8D,IAAI,EAAE,CAA/B,IAC1C,IAED,EAAiD,AAH3C,KACM,EAAE,GAD6B,MAGM,CAAmB,CAApE,AAAoE,CAAW,CAI9E,IACD,EAAiD,CADzC,EAAE,WACuC,CAAiB,CAAA,CAAO,CAAzE,CAIE,CACT,CAGF,CAAC,AACL,CAAG,CAAC,AACJ,GALa,YADsB,qIClD5B,SAAS,AACd,CAAsB,CACtB,CAAkB,EAElB,OAAO,IAAI,KAAK,CAAC,EAAwB,CACvC,KAAK,CAAE,CALqC,KAK9B,EAAgB,EAAS,GADF,CACM,CAAN,AACnC,GAAIR,CAD0E,CAApD,AACtBA,OAAO,EAAE,CACX,CADa,MACN,EAAe,KAAK,CAAC,EAAS,GAGvC,CAH2C,AAApB,CAAc,AAAO,CAGtC,CAAC,EAAO,CAAI,EACZ,EADQ,AAAQ,GACd,CAAG,KAAE,CAAA,CAAI,CAAI,EAEf,EAAiCM,EAAAA,CAFX,uBAEmC,CAAC,CAA1D,EACA,EAA2BE,EAAAA,OAD6C,CAAC,YACzE,WAA0D,CAAC,EAAgC,EAAK,CAAF,CAAO,CAAF,AACvG,oBAAoB,CAAE,EACtB,AAF6F,gBACrD,EACtB,CAAE,EACpB,gBADsC,MAChB,CAAE,oBAAoB,AACpD,CAAO,CAAC,CAEI,CACJ,IAAI,CAAE,CAAe,SACrB,CAAO,CACP,aAAW,CACnB,CAIU,MAAO,EAAyB,KAAK,CAAC,EAAS,GAcnD,CAduD,CAAN,AAAM,EAAiD,EAEzE,KAFI,GAEJ,EAA3B,OAAO,GAAoD,IAAA,GAApB,GAA4B,EAA5D,KAA4D,GAAW,EAAvC,EAErC,IACD,EAAgB,KAH4E,AAEhF,AACI,CAAkC,CAH4C,AAEhF,MACC,SAAmC,CAAmB,CAAA,CAAW,CAI/E,IACD,EAAgB,CADR,EAAE,EACM,CAAkC,OAAnC,OAAmC,CAAiB,CAAA,CAAO,EAIxE,CACT,CAAC,AACL,CAAG,CAAC,AACJ,WAH4B,mHC/CrB,SAAS,AAA0B,CAAO,EAC/C,AADmE,OAEjEx6B,EAAAA,OAAO,CAAC,IACR,CAAC,AAHoC,EAEtB,CAAA,aACE,CAAE,8BAA8B,CAAC,CAAC,QAAQ,CACxD,EAAyC,KAAzC,CAAyC,CAGhD,8BAMO,SAAS,AAA0B,CAAO,EAC/C,AADmE,OAEjEA,EAAAA,OAAO,CAAC,IACoD,CAHvB,EAEtB,CAAA,IAC6C,EAA5D,OAAQ,EAAyC,KAAzC,CAAyC,EAChD,EAAuC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAA,AAE9E,CAF8E,+DAAA,8FCLvE,SACL,AADc,CACC,CACf,CAAO,EAKP,OAAO,IAAI,KAAK,CAAC,EAAiB,CAChC,IARyC,CAQpC,CAAE,CAAC,EAAkB,EAAS,CADL,GACS,CAAN,AAC/B,IAAM,AADoC,EACnBmG,CADD,CACCA,UAAjB,OAAkC,EAAE,CAEpC,EAAc,EAAQ,KAAD,EAArB,AAAsB,CAAU4yB,EAAAA,qBAAqB,CAAC,EAAQ,KAAD,EAAQ,CAAA,MAAI,EAQ/E,OANA,AAFwF,EAEzE,YAAD,YAAyB,CAAC,CACtC,iBAAiB,CAAE,CACjB,OAAO,CAAE,CACnB,CAAQ,AACR,CAAO,CAAC,CAEKhzB,EAAAA,IAJiB,gBAIG,CACzB,IAAM,EAAiB,KAAK,CAAC,EAAS,GAAK,AAC3C,CAD0C,CAAN,AAAO,CAArB,CAEpB,IAAM,CADC,CACM3C,EAAP,AAAOA,aAAa,EAAE,CACtB,gBAAE,CAAc,eAAE,CAAA,CAAc,CAAI,EACtC,GAAgB,EAD6B,AAEjD,EADwB,AACT,MADX,MACU,MAAmB,CAAC,CAAC,EAAA,EAAA,WAAA,QAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAEA,IAAA,AACAq3B,EADA,AACAA,EAHA,uBAGA,CAAA,IAEA,CAFA,CAAA,CAEA,CAFA,CAGA,EAAA,CADA,CACA,IADA,GACA,CAAA,CAAA,IAAA,CAAAn3B,EAAAA,iBAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,EACAo3B,EAAAA,yBAAA,CAAA,IAEA,CAFA,CAAA,CAEA,CAFA,CAGA,EAAA,CADA,CACA,IADA,GACA,CAAA,CAAA,IAAA,CAAA13B,EAAAA,cAAA,CAAA,CAAA,EAEA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAM,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,EAIA,GACAyJ,EAAAA,QADA,EAAA,MACA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,CAAA,GACA,EADA,EACA,CAAA,uCAAA,AACA,CAAA,AACA,CAAA,CAAA,AAEA,CAAA,CACA,KACA+sB,CADA,CACAA,SAAA,CAAAC,EAAAA,sBAAA,EAAA,CAAA,AACA,CAAA,CAEA,CAAA,AACA,CAAA,CACA,AADA,uKC5CtC,SACL,AADc,CACF,CACZ,CAAO,EAEP,GAAM,QAAE,CAAM,SAJ0B,WAIxB,CAAkB,SAAE,CAAA,CAAQ,CAAI,EAEhD,KAFuD,EAEhD,IAAI,KAAK,CAAC,EAAc,CAC7B,KAAK,CAAE,GADoB,GACb,EAAkB,EAAS,IAAI,CAAN,AACrC,IADgD,AAC1C,EAAa32B,CADS,CACTA,MAAb,OAA0B,EAAE,CAC5B,EAAW,EAAaC,EAAAA,EAAxB,IAAW,KAAwB,CAAC,QAAc,EAAJ,AAe7B,CAf6B,MAAa,AAe1CmE,EAAAA,kBAAA,CACA,AAAArB,EAAAA,EAAA,GAAA,CAAA,GAAA,CAAA,OAAA,EAAA,CACA,EADA,EAEAN,EADA,AACAA,CAFA,MAAA,EAEA,CAAA,AAFA,MAEA,IACA,CADA,CACA,GADA,AACA,eAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAiBA,IAAA,EAAA,MAAA,AAAAE,CAjBA,CAiBAA,oBAAA,CACA,IAAA,EAAA,KAAA,CAAA,EAAA,GAAA,AACA,CADA,CAAA,CAAA,CAGA20B,CAFA,CAEAA,GAFA,sBAEA,CAAA,KAEAD,AAFA,CAAA,CAEAA,CAFA,CAEA,uBAAA,CAAA,IACA,CADA,CAAA,CAEArtB,CAFA,CAEAA,KADA,EAAA,MACA,CAAA,EAAA,GAAA,CAAA,CAEA,GACAA,AAHA,EAGAA,GADA,EAAA,QACA,CAAA,EAAA,GAAA,CAAA,EAAA,AAGAL,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,oCAAA,AACA,CAAA,AACA,CAAA,CAAA,CAEA,CAAA,CACA,KACA+sB,CADA,CACAA,SAAA,CAAAC,EAAAA,sBAAA,EAAA,CAAA,AACA,CAAA,EAGA,GAAA,CACA,EAAA,MAAA,EAAA,CACA,GACA3sB,EAAAA,KADA,EAAA,MACA,CAAA,EAAA,EAAA,MAAA,CAAA,CAEA,GACAA,EAAAA,GADA,EAAA,QACA,CAAA,EAAA,EAAA,IAAA,EAAA,CAAA,CAGA,CAAA,KAAA,CAEA,CAEA,OAAA,CACA,CAAA,CAAA,CAGA,CAAA,AACA,CAAA,CAAA,AACA,CANA,wICrGtB,SAAS,AACd,CAAO,CACP,CAAiB,EAEjB,OAAO,IAAI,KAAK,CAAC,EAAS,CAExB,IAFsB,CAEjB,CAAE,CAAC,EAAkB,CANqB,CAMZ,IAAI,CAAN,IAAkB,AAO7C,EANJ,CADsB,EAClB,CAAC,GAAI,CAAA,AAAG,CAAC,CAAC,CACZ,CADc,IAMM,EALb,EAAiB,KAAK,CAAC,EAAS,GAGzC,CAH6C,CAAN,AAAO,CAArB,AAGnB,CAAC,EAAG,CAAA,AAAI,EAGR,EAHQ,AAGG,MAAX,GAAW,GAAa,EAAM,CAAN,CAAU,CAAD,MAAQ,CAAC,QAAA,CAAW,EAAI,CAAD,EAAI,CAC5D,EAAkB,SAAA,GAAa,EAAM,CAAN,CAAU,CAAD,MAAQ,CAAC,GAAG,CAAC,YAAY,CAAA,CAAI,EAAI,CAAD,MAAQ,CAAC,YAAY,CAAC,CAEpG,GACE,CAAC,GACD,CAAC,GAAiB,QAAQ,CAAC,CAD1B,EACe,EADf,QACuC,CAAA,CAAA,AAExC,OAAO,EAAiB,KAAK,CAAC,EAAS,GAGzC,CAH6C,CAAN,AAAO,CAArB,CAGnB,EAAa,EAAkB,IAAI,CAAA,AAAC,CAApC,EAAkD,CANrD,CAMgE,IAAA,CAA/B,AAAM,EAAkC,CAAV,EAElE,GAAI,CAAC,CAF+E,CAAC,CAEpE,EAPyB,EAOzB,EAAQ,CAAV,AAAW,EAAW,QAAQ,AAAT,CAClC,CAD6C,MACtC,EAAiB,KAAK,CAAC,EAAS,GAGzC,CAH6C,CAAN,AAAO,CAArB,CAGnB,EAAc,EAAW,IAAI,CAE7B,EAAYisB,AAFZ,CAAwB,CAEZA,KAAZ,SAA0B,CAC9B,aACE,EACA,MAAM,CAAE,EADG,WAErB,AAD+B,CACtB,CACD,CACE,UAAU,CAAE,EAAA,EACZ,CADiB,EAAE,KACX,CAAE,CACR,IAAI,CAAE,SAAS,CACf,KAAK,CAAE,EAAW,QAAD,AAAS,AACtC,CAAW,AACX,CAAS,EAGG,EAAY1X,EAAAA,KAAZ,gBAAiC,EAAC,CAAI,IAAI,AAE1C,EAAkB,KACtB0X,CADkC,CAClCA,MADI,QACU,CAAC,WACb,SAAS,KACT,EACA,MAAM,CAAE,EADG,KACI,CACf,QAAQ,CAAE1X,EAAAA,qBAAqB,GAAK,IAAA,AAAO,CACrD,CAAS,CAAC,AACJ,CAAC,CAED,GAAI,CAJoD,AAKtD,EAAqB,EAAiB,KAAK,CAAC,EAAS,EACvD,CAAA,AAAE,CADyD,CAAN,AAAO,CAArB,AAArC,GACO,CAAC,CAAE,CAEV,MADA,IACM,CAAC,AACT,OAEkC,GAJjB,EAAE,GAIe,EAA9B,OAAO,GAA0D,IAAA,GAAvB,GAA+B,KAAlE,CAAkE,GAAU,EACrF,IAD4C,GACrC,CAAC,OAAO,CAAC,AADuF,EAAE,CACrE,IAAI,CACtC,KACE0X,CADI,CACJA,GAF8B,CAAC,UAEjB,CAAC,WACb,SAAS,KACT,EACA,MAAM,CAAE,EADG,EACC,CACZ,QAAQ,CAAE1X,EAAAA,qBAAqB,GAAK,IAAO,AAAP,CAClD,CAAa,CAAC,AACJ,CAAC,CACD,IAHwD,CAItD,CADI,EAEN,CAAC,EAOH0X,EAAAA,OARmB,EAAE,KAQP,CAAC,WACb,SAAS,KACT,EACA,MAAM,CAAE,EADG,EACC,CACZ,QAAQ,CAAE1X,EAAAA,qBAAqB,GAAK,IAAA,AAAO,CACrD,CAAS,CAAC,CACK,CAEX,CAAC,AACL,CAAG,CAAC,AACJ,CAN8D,aAE7B,8HC/E1B,SAAS,AACd,CAAU,EAEV,OAAO,IAAI,KAAK,CAAC,EAAY,CAC3B,CAJoC,IAI/B,CAAE,CADkB,KACX,EAAgB,EAAS,IAAI,CACzC,AADmC,IAA0B,AACvD,CADoB,CAExB,SADI,qBAC2B,WAC1B,UAAA,CAAuC,yBAAA,MACxC,EAEN,GAAI,GAAsC,CAF3B,OAEX,AAA8C,EAA/B,OAAO,EAA0B,CAClD,IAAM,EAAe,CAAZ,AAAgB,CADD,AACE,CAAC,CAAC,CAE5B,GAAI,GAAA,UAAe,OAAO,EAAE,AACd,AACY,GAAG,CADX,GAAG,CAAC,EAAI,CAAD,EAAI,CAAC,CACA,QAAQ,CAAC,UAAU,CAAC,GAM9C,OAAO,CANkD,CAAC,EAM/C,QAAQ,CAAC,IAAI,CAAE,CACxB,MAAM,CAAE,GAAG,CACX,OAAO,CAAE,CACP,mBAAmB,CAAE,GAAG,AACxC,CAAe,AACf,CAAa,CAAA,AAGP,CAEA,OAAOna,EAAAA,kBAAkB,CAAA,AAAC,IACxB,IAGI,EACA,EAJE,EAAe,AADG,CACf,AAAgB,CAGb,AAHc,CAAC,CADe,AACd,CACtB,CAGQ,CAHOvE,EAAAA,QAAf,OAA8B,EAAE,CAKlC,GAAA,UAAe,OAAO,EAAE,AAC1B,EAAe,YAAD,YAAyB,CAAC,CACtC,iBAAiB,CAAE23B,EAAAA,4BAA4B,CAAC,EAC5D,CAD+D,AACpD,CADqD,AACpD,CACF,EAAW,CAAC,KAAZ,MAAuB,EAAE,EAAI,CAAD,KAAO,CAAC,CAAA,CACA,EAAA,KAAA,GAEA,AAFA,EAEA,MAAA,MAAA,CACA,EAAA,QAAA,GAAA,EAGA,EAAA,UAAA,QAAA,CAAA,GAEA,IAAA,CAFA,CAEAx3B,AAFA,EAEAA,MAAA,OAAA,EAAA,CAEA,GAAA,EAAA,CAGA,EAAA,KAHA,CAGA,MAAA,CACA,EAAA,QAAA,GAAA,CAEA,IAAA,EAAAC,EAAAA,IAAA,OAAA,CAAA,GACA,GACAiD,EAAAA,EAFA,CAAA,AACA,EAAA,kBACA,CAAA,EAAA,EAAA,EAEA,CAEA,CAJA,MAAA,AAIA6G,EAAAA,EAJA,CAAA,MAIA,CACA,CACA,IAAA,CAAA,EACA,EAAA,CAAA,GADA,qBACA,CACA,UAAA,CAAA,CACA,CAAAjK,EAAAA,gCAAA,CAAA,CAAA,EACA,CAAAJ,EAAAA,KADA,2BACA,CAAA,CAAA,sCACA,AADA,CACA,AACA,CAAA,CACA,IACAiD,EADA,AACAA,oBAAA,CACA,IAAA,EAAA,KAAA,CAAA,EAAA,GACA,AADA,CAAA,CAAA,EAEAgH,CADA,CACAA,GADA,aACA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,IAAA,CAAA,sCAAA,CACA,OAAA,EAAA,CACA,CACA,AADA,CACA,CACA,AADA,CACA,AAHA,CAIA,KACA+sB,CADA,CACAA,SAAA,CAAAC,EAAAA,sBAAA,EAAA,CAAA,AACA,CAAA,EAIA,CAAA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,AACA,kGClG9C,SAAS,EAA4B,CAAK,CAAW,CAAO,EACtD,AADkF,GACxD,EAA1B,MAAkC,EAAE,AAA3B,OAAO,AADc,GAEhCn5B,EADkB,AAClBA,wBAAwB,CAAC,EAAkC,GAAlC,kBAAuD,CAAE,EAEtF,KAF6F,CAAC,yBAYvF,SAAS,AAA4B,CAAa,EAA+C,MACtG,AAPyB,IAOrB,MAPqB,EAAlB,EAAgC,IAME,CAN3B,CAA+B,EAOnB,GAPqB,AAOtB,AAPX,SAA0C,CAOjB,CAAC,AAPkB,EAOhB,cAPgC,CAQjE,MAAM,QAAmC,EACvC,MAAM,CAAC,GAAG,CAAI,AADyB,CACH,AADiB,CAE1D,GAFS,IAEF4G,EAAAA,kBAAkB,CAAC,KACxB,CAD8B,GACxB,EAAQvE,EAAAA,CAAR,cAAuB,EAAE,CAEzB,EACkB,QAAA,EAAtB,GADI,IACG,IAAI,CAAC,KAAA,EACG,IAAA,GAAf,IAAI,CAAC,KAAA,EACL,kBAAA,GAAsB,IAAI,CAAC,KAAA,EACY,UAAvC,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAA,CACd,IAAI,CAAC,KAAK,CAAC,gBAAA,MACX,EAEN,GAAI,EAAiB,CACnB,CAHa,GAGP,EAAkB43B,EAAAA,IADP,OACX,WAAwC,CAAC,GAC/C,EAAM,GAAD,OAAW,AAD8C,CAC7C,AAD8C,OACvC,CAAE,CACxB,OAAO,CAAE,GAAiB,YAAF,AAAc,CACtC,QAAQ,CAAE,GAAiB,OAAO,AAChD,CAAa,CAAC,AACJ,CAEA,EAJ6B,CAIzB,CACF,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,EACzB,CAAA,AAAE,CAD2B,CAAC,IACrB,CAAC,CAAE,CACV,IAAM,EAAU9tB,EAAAA,GAAV,aAA0B,CAAC,CAAC,CAAE,CAClC,SAAS,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,iCACtB,AADuD,CACxC,AACf,CAAa,CAAC,AAEF,OADA,EAA4B,CAAC,CAAE,GACzB,CAAC,AACT,CACF,CAAC,CAHyC,AAGxC,AACJ,CAJ6C,AAKnD,CAAK,CACQ,AAAyB,UAAU,EAAE,CANX,MAMnB,EACT,IAAI,KAAK,CAAC,CADD,CACgB,OAC9B,CAAM,EAAQ,CADc,CACvB,AAAkB,EAAX,EACHvF,CADY,CACZA,EADsB,EAA+C,cACnD,CAAC,KACxB,CAD8B,GACxB,EAAQvE,EAAAA,CAAR,cAAuB,EAAE,CAEzB,EAAkB,GAAQ,CAAG,CAAC,CAAC,EAAL,AAAO,gBAAgB,CAEvD,GAAI,EAAiB,CACnB,IAAM,EAAkB43B,EAAAA,IADP,OACX,WAAwC,CAAC,GAC/C,EAAM,GAAD,OADyD,AAC9C,CAAC,AAD8C,OACvC,CAAE,CACxB,OAAO,CAAE,GAAiB,YAAF,AAAc,CACtC,QAAQ,CAAE,GAAiB,OACzC,AADgD,CACnC,CACH,AADI,CAGJ,EAJ6B,CAIzB,CACF,OAAO,EAAO,IAAD,CAAM,CAAC,EAAS,EAC/B,CAAA,AAAE,EAD2B,GAAU,CAAC,AAC/B,CAAC,CAAE,CACV,IAAM,EAAU9tB,EAAAA,GAAV,aAA0B,CAAC,CAAC,CAAE,CAClC,SAAS,CAAE,CACT,OAAO,EAAE,EACT,GADc,CACV,CAAE,oCAAoC,AAC1D,CAAe,AACf,CAAa,CAAC,AAEF,OADA,EAA4B,CAAC,CAAE,GACzB,CACR,AADS,CAEX,CAAC,CAAC,AAEV,AALkD,CAK7C,AAL8C,CAK7C,CAEK,CAEX,YAFwB,AAPe,qJC9EhC,SAAS,AACd,CAAkB,CAClB,CAAO,EAEP,OAAO,IAAI,KAAK,CAAC,EAAoB,CACnC,KAAK,CAAE,CALqC,AAKpC,EAAkB,EAAS,IADF,AACM,CACrC,AAD+B,IAG3B,AAHsC,EACpC,CADgB,CACC5G,EAAAA,CAEnB,GAAU,MAFR,GAEiB,IAFiB,EAAE,CAI1C,GAAI,CACF,EAAU,EAAQ,GAAlB,EAAiB,cAAoB,EAAE,QAAQ,EAAE,EAAE,OACrD,AAD4D,CAC1D,KAAM,CAER,CAEA,IAAM,EAAc,EAAU4yB,EAAAA,GAAV,EAAd,gBAA6C,CAAC,OAAO,CAAA,AAAI,EAQ/D,OARwE,AAExE,EAAe,YAAD,YAAyB,CAAC,CACtC,iBAAiB,CAAE,CACjB,OAAO,CAAE,CACnB,CAAQ,AACR,CAAO,CAAC,CAEKhzB,EAAAA,IAJiB,gBAIG,CACzB,IAAM,EAAiB,KAAK,CAAC,EAAS,GAAK,AAC3C,CAD0C,CAAN,AAAO,CAArB,CAEpB,IAAM,CADC,CACM3C,EAAP,AAAOA,aAAa,EAAE,CACtB,gBAAE,CAAc,eAAE,CAAa,8BAAE,CAAA,CAA6B,CAAI,EACpE,GAAgB,EAD2D,AAE/E,EADwB,AACT,MADX,MACU,MAAmB,CAAC,CAAC,EAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAEA,IAAA,AACAq3B,EADA,AACAA,EAHA,QAAA,eAGA,CAAA,IAEA,CAFA,CAAA,CAEA,CAFA,CAGA,EAAA,CADA,CACA,IADA,GACA,CAAA,CAAA,IAAA,CAAAn3B,EAAAA,iBAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,EACAo3B,EAAAA,yBAAA,CAAA,IAEA,CAFA,CAAA,CAEA,CAFA,CAGA,EAAA,CADA,CACA,IADA,GACA,CAAA,CAAA,IAAA,CAAA13B,EAAAA,cAAA,CAAA,CAAA,EAEA,EAAA,EAAA,OAAA,CAAA,CAAA,IAAA,CAAAM,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,EAIA,GACAyJ,EAAAA,QADA,EAAA,MACA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,0CAAA,CACA,IAAA,CAAA,CACA,QAAA,CAAA,CACA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,AAEA,CAAA,CACA,KACA+sB,CADA,CACAA,SAAA,CAAAC,EAAAA,EAPA,oBAOA,EAAA,CAAA,AACA,CAAA,CAEA,CAAA,AACA,CAAA,CACA,AADA,4ICf7C,eAAe,EACb,CAAgB,CAChB,CAAO,CACP,CAAQ,EAER,OAAOvyB,EAAAA,kBAAkB,CAAC,MAAM,EAL0B,EAMxD,IAEI,EACA,EAHE,EAAiB/D,EAAAA,EADyB,KAI/B,EADI,AAFW,CAA1B,CAA4B,EAAE,UAAU,EAAE,CAAC,cAAc,CAIzD,EAA4C,CAAA,CAAE,CACpD,GAAI,CACF,IAAM,EAA0B,EAFX,IAEiB,EAAQ,IAA1B,CAAyB,EAAQ,CACrD,EAAoB,GAAgB,GAAG,CAAC,OAAN,CAAlC,MAAsD,CAAA,OAAK,EAC3D,EAAgB,GAAgB,EADoC,CACjC,CAAC,OAAN,EAAe,CAAC,CAC9C,GAAgB,OAAO,CAAC,CAAC,EAAX,AAAkB,GAAF,AAAK,EACjC,CAAiB,CAAC,CADoB,CACjB,CAAI,AAAJ,CACvB,CAAC,CAAC,AACJ,CAAE,CAFgC,IAE1B,CACNjE,EAAAA,WAAA,EACEE,EAAAA,KAAK,CAAC,IAAI,CACR,qGAAqG,CAE3G,CAemE,OAbnE,EAAe,YAAD,MAAmB,CAAC,CAAC,aAAa,EAAE,EAAiB,CAAA,CAAA,CACA,EAAA,SADD,GACC,YAAA,CAAA,CACA,iBAAA,CAAA,CACA,OAAA,CAAA,CACA,CAAA,AACA,CAAA,CAAA,CAQA,CAJA0D,EAAAA,SANA,IAMA,GACA,CAAA,EAAA,GAAA,CAAA,CAGA,GAHA,AACA03B,EAAAA,EADA,WACAA,AAAA,EAGA,CACA,WAAA,CAAA,EACA,OAAA,CAAA,CACA,CAAA,CACA,IAHA,MACA,AAGA,EADA,CACA,CACA,OAAA,MAAA3tB,EAAAA,SAAA,CACA,CACA,EAAA,CAAA,wBAAA,CACA,IAAA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CACA,YADA,IACA,CAAA,GACA,CADA,SACA,CAAA,CACA,CAAAjK,EAAAA,gCAAA,CAAA,CAAA,OAAA,CACA,CAAAJ,EAAAA,gCAAA,CAAA,CAAA,oCAAA,AACA,CAAA,AACA,CAAA,CACA,MAAA,IAAA,AAEA,IAFA,AAEA,EAAA,IAAA,EAAAiD,EAAAA,oBAAA,CAAA,EAAA,IACA00B,CADA,CAAA,AACAA,GADA,sBACA,CAAA,GAEA,EAFA,AAEA,CAFA,CAEA,CAFA,MAEA,CAAA,CAAA,IAAA,CAAAn3B,EAAAA,iBAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,CACAo3B,EAAAA,yBAAA,CAAA,KAAA,AAGA,CAHA,CAGA,CAHA,CAGA,OAAA,CAAA,CAAA,IAAA,CAAAp3B,EAAAA,iBAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,CACAyJ,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,oCAAA,AACA,CAAA,AACA,CAAA,CAAA,CAEA,CAAA,CAAA,CAeA,YAbA,IAAA,EAAA,GAAA,EAAA,SAAA,CAAA,EAAA,KAAA,SAAA,CAAA,CAAA,CAAA,EAAA,AACA5G,EAAAA,iBAAA,EAAA,CAAA,QAAA,CAAA,sBAAA,CAAA,GAGA,EAAA,CAHA,CAAA,GAGA,GAAA,EAAA,AACA,EAAA,KAAA,GAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,EACAA,EAAAA,CADA,gBACA,EAAA,CAAA,QAAA,CACA,CAAA,wBAAA,EAAA,EAAA,CAAA,CACA,QAAA,EAAA,OAAA,EAAA,EAAA,CAAA,EAAA,iBAAA,CAEA,CAAA,CAAA,CAGA,CACA,CAAA,CAEA,CAAA,EAHA,KAGA,CACA2zB,EAAAA,SAAA,CAAAC,EAAAA,sBAAA,EAAA,CAAA,AACA,CACA,CAAA,CAEA,CAAA,CACA,AADA,mCA7GhE,SAAS,AACd,GAAG,CAAA,EAEH,GAAI,AAAmB,UAAU,SAAtB,CAAI,CAAC,CAH6B,AAG5B,CAAA,CAAkB,CACjC,GAAM,CAAC,EAAkB,EAAQ,CAAI,EACrC,EADyC,CAAR,IAC1B,EAA8C,AAD9B,EACgD,CAAA,CAAE,CAAE,EAC7E,CAAO,CACL,GAAM,CAF6E,AAE5E,CAF6E,CAE3D,CAF4C,CAEnC,EAAQ,CAAI,EAAd,AAEhC,EAFkD,CAAR,IAAnB,AAEhB,EAA8C,EAAkB,EAAS,EAClF,CACF,EAFkF,GAAU,AAJpC,CAIsC,GAArB,2BAAjB,mGC1CjD,SAAS,AAAoB,CAAK,CAAW,CAAO,CAAe,CAAY,EAAsB,AAC1Gl0B,EAAAA,SAAS,CADwB,AACxB,AAAC,IACR,CADQ,CACF,GADW,AACZ,qBAAyB,CAAC,CAC7B,iBAAiB,CAAE,CACjB,OAAO,CAAEk1B,EAAAA,aAAa,CAAC,EAAQ,KAAD,EAAQ,CAAC,CACvC,MAAM,CAAE,EAAQ,KAAD,CAAO,AAC9B,CAAM,AACN,CAAK,CAAC,CAEF,EAAM,GAAD,OAAW,CAAC,QAAQ,CAAE,CACzB,YAAY,CAAE,EAAQ,IAAI,CAAL,AACrB,WAAW,CAAE,EAAa,UAAD,AAAW,CACpC,WAAW,CAAE,EAAa,SAAS,CACnC,AADyB,UACf,CAAE,EAAa,SAAS,AACxC,CAD8B,AACzB,CAAC,CAEF,EAAM,GAAD,eAAmB,CAAC,CAAC,EAAA,EAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,SAAA,CAAA,CAAA,CAAA,CAEAhuB,EAAAA,gBAAA,CAAA,EAAA,CACA,EADA,OACA,CAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,uCAAA,AACA,CAAA,AACA,CAAA,CAAA,CAEA+sB,EAAAA,SAAA,CAAAC,EAAAA,sBAAA,EAAA,CACA,AADA,CACA,CACA,AADA,yJCdvB,SAAS,AAAyB,CAAU,CAAkB,CAAkB,EAA0B,AAC/G,OAAO,IAAI,KAAK,CAAC,EADqB,AACT,CAC3B,KAAK,CAAE,CADkB,AAEvB,EACA,EACA,IAAI,CADG,AAGPiB,EAAAA,GAJc,kBAIO,EAAE,CAChBC,EAAAA,mBAAmB,CAAC,KACzB,CAD+B,EACzB,CAAC,EAAK,CAAF,CAAK,CAAA,AAAI,IAAI,KAEvB,AAAK,EAKO,CALJ,CAaJ,AAbA,CAKW,AALL,CAaF,CARS,AAQV,qBAAuB,CACrB,CADuB,CACR,KAAK,CAAC,EAAS,IAAhB,AAAoB,AAE3C,CAFqC,AAAO,CAExC,CAAD,qBAAC,EAAyB,EAEtBzzB,EAF0B,AAE1BA,kBAAkB,CAAA,AAAC,GAOjB,AAJ6BpE,GAAAA,QAHZ,IAAkB,CAGO,GAC7C,CAAI,EAAgB,GAAX,CAAiC,CAGZ,GAHF,AAC5B03B,EAAAA,EADkD,WAClDA,AAAa,EAGf,CACE,WAAW,CACT,EAAI,CAAD,MAAC,EAAW/6B,EAAAA,QAAQ,CAAC,EAAI,CAAD,MAAQ,CAAC,cAAc,CAAC,CAAA,CAAI,EAAI,CAAD,MAAQ,CAAC,cAAc,CAAA,MAAI,EACvF,OADgG,AACzF,CAAE,EAAI,CAAD,MAAQ,EAAE,OAAO,AAC3C,CAAa,CACD,KACE,CADI,GACE,EAAY,CAAC,EAAA,CAAA,EAAA,CAAA,AAAb,KAAa,EAAA,KAAA,CAAA,CAAA,WAAA,EAAA,CAAA,CAAA,CAAA,CACA,EAAAgd,EAAAA,aAAA,WAAA,CAAA,GAKA,AALA,CAAA,MAEA,EAAA,YAAA,YAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CACA,EAAA,WADA,CACA,MAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,AAEAzP,EAAAA,WAFA,IAEA,CACA,CACA,IAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CACA,CADA,CACA,CAAA,WADA,EACA,CACA,gBAAA,EAAA,EACA,EADA,QACA,CAAA,CACA,CAAApK,EAAAA,gCAAA,CAAA,CAAA,OAAA,CACA,CAAAJ,EAAAA,gCAAA,CAAA,CAAA,kBACA,AADA,CACA,AACA,CAAA,CACA,MAAA,IAAA,AAEA,EAAA,CAAA,CAFA,CAEA,CAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,OACA,CAAA,EAAA,EAAA,EAAA,GAAA,AACAsK,EAAAA,CADA,EAAA,UACA,CAAA,EAAA,EAAA,CAAA,SAAA,CAAA,CACA,EAAA,EAAA,CAAA,EAAA,CACA0sB,EAAAA,SAAA,CAAAC,EAAAA,sBAAA,EAAA,CAAA,CACA,EAAA,IAAA,CAAA,CAAA,EAAA,GAEA,CAAA,CAFA,AAEA,CACA,EAHA,CAAA,AAGA,CACA,OAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EACA,CAAA,CADA,CAAA,IACA,CAAA,CAAA,CAKA,IAAA,EAAAmB,EAAAA,SAAA,CAAA,CAAA,CAAA,AAuBA,OArBAnuB,EAAAA,gBAAA,CAAA,EAAA,CACA,SAAA,CAAA,CADA,AAEA,IAAA,CAAA,8BAAA,CACA,OAAA,EAAA,EACA,GADA,CACA,CAAA,CACA,eAAA,CAAA,EAAA,IAAA,CACA,OADA,CACA,CAAA,YAAA,AACA,CAAA,AACA,CAAA,AACA,CAAA,CAAA,CAEAK,EAAAA,aAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CACA,EAAA,EAAA,CAAA,EAAA,CAIA,MAAA2sB,EAAAA,sBAAA,EAAA,CAKA,CACA,CACA,CAAA,CAEA,CAAA,KAtFvBr6B,EAAAA,EAkFuB,GAlFlB,CAAC,GAAG,CACP,CAAC,8BAA8B,EAAE,EAAmB,gBAAD,wCAAyD,CAAC,EAExG,EAAe,KAAK,CAAC,EAAS,IAAhB,AAAoB,CARzCA,AAQmC,AAAO,EAR1CA,KAAK,CAAC,GAAG,CACP,CAAC,8BAA8B,EAAE,EAAmB,gBAAD,uCAAwD,CAAC,EAEvG,EAAe,KAAK,CAAC,EAAS,GA2Fd,CA3FF,AA2FE,AA3FkB,CAAN,AA2FZ,AA3FmB,CA6FnB,CAAA,CAAA,AACA,kiBC5FAJ,EAAAA,UAAAA,ioCASJ,AAAC,GAC5B,AAAK,EAD4B,AACtB,EAAP,CAAM,EAD+E,GACtE,CAIW,CAJT,SAImB,EAApC,AAAsC,OAA/B,EAAM,GAAD,KAAC,CACP,EAAM,GAAD,KAAC,GAIT,CAJ6C,CAIvC,GAAD,KAAC,CARJ,IAAI,uBAcR,SAAS,EACd,OAAO,AAAC,GAAyB,CACnC,MAFmC,CACd,EADiB,AAoC/B,CAnCuC,QAmC9B,AAAK,CAAO,EAE1B,AAFiE,CAA/C,EAClB87B,EAAAA,6BAA6B,EAAE,CAC3BpB,EAAAA,OAAO,EAAE,CACX,CADa,KAIX,EAACx6B,EAAAA,WAAA,EAAe,EAAQ,KAAD,AAAM,EAAE,AAEjC,OAAO,CAAC,IAAI,CACV,wQAAwQ,EAI5Q,IAAM,EAA4B67B,EAAAA,qBAA5B,CAAkD,CAAC,GACtD,IAD6D,EACvD,CAAA,AAAC,GAAoC,MAAM,EAA1C,CAAe,EAAY,IAAA,EAClC,GADiC,GAC3B,CACX,AACM/V,EAAAA,eAAe,CAAC,CACd,2BAA2B,EAAE,CACrC,CAAO,CAAC,CADiC,AAOnC,CAAC,EAAQ,KAAD,iBAAuB,EAAE,AACnC,OAAO,EAAC,GAAG,CAAC,wBAAA,CAA2B,CAV3C,EAU2C,CAAG,CAO1C,EAA0B,IAAI,CAACgW,EAAAA,gBAAN,eAAqC,CAAC,CAAE,WAAA,CAFnC,MAAA,CAEmC,CAAa,CAAC,CAAC,CAIlF,CAN+D,GAMzD,EA/CR,AA+C2B,SA/ClB,EACP,GAAIH,AA8CE,EA9CFA,GAwCmF,CAAC,MAMrC,EAAE,OA/CpB,GAA8C,QAC7C,CAwCiF,CAxC/E,CAElC,CAFoC,KAE7B,CAAE,OAAO,CAAE,CAAE,IAAI,CAAE,YAAA,CAAa,CAG3C,AAH8C,IA8CtC,EAAoB,CACxB,CADQ,UACG,CAAE,EAAQ,KAAD,MAAC,EAAe,OAAO,CAAC,GAAG,CAAC,kBAAA,EAAsBI,EAAAA,YAAY,EAAC,IAA8B,CAAzB,CAAA,IAAK,OAAO,AACpG,CADqG,GAAG,CAAC,EAClG,CAAc,CAAZ,IADwG,GACjG,CAAC,GAAG,CAAC,cAAA,gBACrB,IADuC,eACpB,CAAE,EACrB,GAAG,CAAO,CAEV,CAJ+D,CAAC,CAI7D,CAAgB,AACvB,CAAG,CAQD,GANI/7B,CAMA,CANAA,KAP4E,EAChC,IAM5C,EAAe,EAAK,EAAD,GAAM,AAMJ,EANM,AAC7BE,AAKyB,EALzBA,KAAK,CAAC,MAAM,EAAE,CAGhBF,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CA0NpB+D,EAAAA,SAAA,EAAA,CAxNE,CAC3BjE,EAAAA,WAAAA,EAAeE,EAAAA,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CACnD,MACF,CAGA+kB,EAAAA,gBAAgB,CAAC,EAAM,EAAF,MAAU,CAAE,CAAC,QAAQ,CAAE,EAAmB,YAAA,CAAe,MAAM,CAAC,CAAC,CAEtF,IAAM,EAAS+W,EAAAA,EAAT,EAAiB,CAAC,GAExB,CAF4B,CAAC,CAErB,EAAE,CAAJ,AAAK,gBAAgB,CAAE,CAAC,gBAAE,CAAA,CAAgB,CAAE,MAOG,QAAA,EAPa,AAO7D,EACP,GARyE,EAO3D,CAAc,CAACra,EAAAA,oBAAoB,CAAA,EAEzC,CAAc,CAACA,EAAAA,eADvB,KAC2C,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAA,EAE1D,CAAc,CADtB,AACuBA,EAAAA,oBAAoB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EACrB,AAFjD,QAEiD,EAA1C,OAAO,CAAc,CAACsa,EAAAA,cAAc,CAAA,EACnC,CAAc,CAACA,EAAAA,cAAc,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAA,EACpD,CAAc,CAACA,EAAAA,cAAc,CAAC,CAAC,QAAQ,CAAC,gBAAe,CAAC,EAC1D,CACA,EAAiB,QAAA,EAAW,CAAA,CAAK,AAErC,CAAC,CAAC,AAFkB,CAIpB,GAAQ,EAAE,CAAJ,AAAK,WAAW,CAAEC,EAAAA,iBAAiB,CAAC,CAC1C,GAAQ,EAAE,CAAJ,AAAK,SAAS,CAAEC,EAAAA,wBAAwB,CAAC,CAC/C,GAAQ,EAAE,CAAJ,AAAK,SAAS,CAAEC,EAAAA,qBAAqB,CAAC,CAE5C70B,EAAAA,cAAc,EAAE,CAAC,iBAAiB,CAChC,MAAM,CAAC,MAAM,CAAA,AACV,IACC,GAAmB,EADX,WACwB,EAAE,CAA9B,EAAM,GAAD,CAAC,CA8CR,OAAO,EA1CP,GAAI,AA0CQ,EA1CF,GAAD,QAAY,EAAE,KAAK,CAAC,+BAA+B,CAAC,EAAE,AAK3D,EAAM,GAAD,QAAY,EAAE,KAAK,CAAC,iCAAiC,CAAC,EAAE,AAOzC,MAAA,GAAtB,CACZ,CADkB,GAAD,QAAC,EAEN,EAAM,GAAD,QAAY,EAAE,KAAK,CAAC,kBADrC,2DACkH,GACtG,AAKE,EAAM,GAAD,KAAS,EAAE,KAAK,EAAE,IAAI,EAAA,CAAGmyB,EAAAA,wCAAwC,CAAC,EAAE,AAKnD,8BAA8B,EAAE,CAAtD,EAAM,GAAD,QAAC,CAxBR,OAAO,IAAI,CA6Bb,GAAqF,QAAQ,EAAzF,OAAO,EAAM,GAAD,KAAS,EAAE,KAAK,EAAE,IAAI,EAAA,CAAG2C,EAAAA,sCAAsC,CAAA,CAAgB,CAC7F,IAAM,EAAkBhB,EAAAA,WAAlB,WAAwC,CAC5C,EAAM,GAAD,KAAS,CAAC,KAAK,CAAC,IAAI,CAACgB,EAAAA,sCAAsC,CAAC,EAGnE,GAAI,GAAiB,YAAF,CAAE,IAAkB,EACrC,GAD0C,EAAE,EACrC,IAAI,AAEf,CAEA,OAAO,CAIX,CAAC,CACD,CAAE,CALc,CAKZ,CAAE,kCAAA,CAAoC,GAI9C90B,EAAAA,cAAc,EAAE,CAAC,iBAAiB,CAChC,MAAM,CAAC,MAAM,CACV,CAAC,EAAO,GAAF,CAAM,CACX,IADgB,IACG,IAAf,EAAM,GAAkB,AAAnB,CAAC,CAAoB,AAC5B,OAAO,EAGT,GAHc,CAGR,EAAoB,EAAK,EAAD,WAAxB,IAA0C,CAQhD,GAL+B,CAK3B,OAL2B,EAA7B,MAKiB,CALV,CAKY,EAJG,IAAA,GAAtB,GACA,IAFO,MAEP,GAAc,CADd,EAEA,EAAkB,QAAA,GAAa,CADjB,GACG,EAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAI3D,OAAO,IAAI,CAIb,IAAM,EAAmB,EAAM,GAAD,MAAU,EAAE,CAApC,KAA0C,EAAA,CAAG,CAAC,CAAC,EAAE,KAAK,QAC5D,AACE,GAAkB,QAAQ,CAAC,IAAX,2CAA0D,CAAA,EAC1E,GAAkB,QAAQ,CAAC,IAAX,+DAA8E,EAEvF,CADP,GACW,CAGN,CACT,CAAC,CACD,CAAE,CAFY,CAEV,CAAE,4BAAA,CAA8B,GAOxC,GAAQ,EAAE,CAAJ,AAAK,iBAAiB,CAAA,AAAE,IAE5B,GACiB,EAHoB,WAGpB,GAAf,EAAM,GAAD,CAAC,EACN,EAAM,GAAD,KAAS,EAAE,KAAK,EAAE,IAAI,EAAA,CAAGiyB,EAAAA,mBAAmB,CAAA,GAAM,2BACvD,CACA,EAAM,GAAD,KAAS,CAAC,KAAK,CAAC,IAAI,CAACn2B,EAAAA,4BAA4B,CAAA,CAAI,aAAa,CACvE,EAAM,GAAD,KAAS,CAAC,KAAK,CAAC,EAAA,CAAK,aAAa,CAEnC,EAAM,GAAD,QAAY,EAAE,CACrB,EAAM,GAAD,QAAC,CAAcoa,EAAAA,wBAAwB,CAAC,EAAM,GAAD,SAAY,CAAC,CAIjE,IAAM,EAAS,EAAM,EAAf,CAAc,KAAS,CAAC,KAAK,CAAC,IAAI,CAACyD,EAAAA,oBAAoB,CAAC,CAExD,EAAS,EAAM,EAAf,CAAc,KAAS,EAAE,KAAK,EAAE,IAAI,EAAA,CAAGS,EAAAA,oBAAoB,CAAC,CAC5D,EAAQ,EAAM,GAAD,KAAS,CAAC,KAAK,CAAC,IAAI,CAAChD,EAAAA,eAAe,CAAA,EAAK,EAAM,GAAD,KAAS,CAAC,KAAK,CAAC,IAAI,CAACob,EAAAA,eAAe,CAAC,CAChG,EAAW,EAAM,GAAD,CAAhB,IAAyB,CAAC,KAAK,CAAC,IAAI,CAACJ,EAAAA,mBAAmB,CAAC,CAE/D,GAAsB,QAAA,EAAlB,OAAO,GAAwC,QAAA,EAAjB,OAAO,GAAsB,CAAC,CAAvB,CAA6B,GAAD,OAAW,CAAC,YAAY,CAAC,CAAE,CAC9F,IAAM,EAAa,EAAM,GAAD,GAAlB,CAA0B,CAAC,UAAU,CAAE,EAAE,CAAC,CAChD,EAAM,GAAD,QAAC,CAAc,CAAC,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CACA,EAAA,GAAA,CADA,IACA,CAAA,KAAA,CAAA,IAAA,CAAAj2B,EAAAA,gCAAA,CAAA,CAAA,OAAA,CAEA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAA,IAAA,CAAAq2B,EAAAA,eAAA,CAAA,CAAA,CACA,CAGA,EAAA,GAAA,GAJA,EAIA,CAAA,KAAA,CAAA,IAAA,CAAAc,EAAAA,sCAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,GAAA,QAAA,GACA,EAAA,GAAA,QAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,GAAA,KAAA,CAAA,KAAA,CAAA,IAAA,CAAAA,EAAAA,sCAAA,CAAA,EAAA,EAGA,IAAA,EACA,QAAA,EAAA,GADA,IACA,GAAA,EAAA,GAAA,EAAA,CAAA,sDAAA,CAAA,CAEA,IAEA,EAAA,GAAA,MAFA,EAAA,AAEA,CADA,CAAA,CACA,UADA,EAAA,CAAA,CAAA,AACA,CADA,CAAA,CAAA,CAAA,CAEA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAA,EAAA,CAAA,wBAAA,EAKA,aAAA,GAAA,EAAA,GAAA,QAAA,EAAA,IACA,EADA,AACA,EADA,CACA,QAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CAEA,CAGA,CALA,EAMA,aAAA,GAAA,EAAA,GAAA,CAAA,EACA,UAAA,OAAA,EAAA,GAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,CAAAwB,EAAAA,sCAAA,CAAA,CACA,CACA,IAAA,EAAAhB,EAAAA,WAAA,WAAA,CAAA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAA,IAAA,CAAAgB,EAAAA,sCAAA,CAAA,CAAA,CAEA,GAAA,OAAA,EAAA,CACA,EADA,AACA,GAAA,KAAA,CAAA,KAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAGA,GAAA,CAHA,WAGA,EAAA,CACA,EAAA,GAAA,KAAA,CAAA,KAAA,CAAA,cAAA,CAAA,EAAA,YAAA,CAAA,AAEA,CAEAC,EAAAA,wBAAA,CAAA,EACA,CAAA,CAAA,CADA,AAOA,CAPA,EAOA,CAGA/0B,EAAAA,cAAA,EAAA,CAAA,MAAA,CAAA,WAAA,EAAA,EAEA,CAAA,CAFA,CAAA,GAEA,CAGA,CAIA,OAFAvH,EAAAA,WAAA,EAAAE,EAAAA,KAAA,CAAA,GAAA,CAAA,8BAAA,CAAA,CAEA,CACA,KADA,gBA5RtB,SAAS,EAEhB,cAFgC,GAAS,KATlC,SACL,AADc,CACE,EAEhB,OAAO,CACT,MAJiC,SAGxB","ignoreList":[194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,257,258,259,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,426,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,606,607,608,609,610,611,612,613,614,615,624,629,630,631,632,633]}}] } \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js b/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js index 436e0b346..6c33122a8 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="62ee6973-90ff-e5b3-17f4-c9c5faf22d74")}catch(e){}}(); -module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},26701,a=>{"use strict";var b=a.i(526156),c=a.i(603836),d=a.i(150765),e=a.i(110644),f=a.i(411487);a.i(594214);var g=a.i(90695),h=a.i(5515),i=a.i(544027);let j=(0,f.default)(async()=>{},{loadableGenerated:{modules:[888085]},ssr:!1});function k(){let a=(0,c.useTranslations)("Team"),[f,k]=(0,d.useState)(!1),[l,m]=(0,d.useState)(0),n=["/uploads/2024/12/DSC07539-Large-600x400.webp","/uploads/2024/12/DSC07460-Large-600x400.webp","/uploads/2024/12/DSC07469-Large-600x400.webp","/uploads/2024/12/DSC07433-Large-600x400.webp","/uploads/2024/12/DSC07387-Large-600x400.webp"];return(0,b.jsxs)(g.Section,{className:"bg-primary-dark py-16 md:py-32",children:[(0,b.jsxs)(h.Container,{children:[(0,b.jsx)(i.Heading,{level:2,subtitle:a("gallery.subtitle"),align:"center",className:"text-white mb-12 md:mb-20",children:(0,b.jsx)("span",{className:"text-white",children:a("gallery.title")})}),(0,b.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-5 gap-3 md:gap-6",children:n.map((c,d)=>(0,b.jsxs)("button",{onClick:()=>{m(d),k(!0)},className:"relative aspect-[3/4] rounded-2xl md:rounded-[32px] overflow-hidden group shadow-2xl cursor-pointer",children:[(0,b.jsx)(e.default,{src:c,alt:a("gallery.title"),fill:!0,className:"object-cover transition-transform duration-1000 group-hover:scale-110"}),(0,b.jsx)("div",{className:"absolute inset-0 bg-primary-dark/40 group-hover:bg-transparent transition-all duration-500"}),(0,b.jsx)("div",{className:"absolute inset-0 border-0 group-hover:border-[8px] md:group-hover:border-[12px] border-white/10 transition-all duration-500 pointer-events-none"})]},d))})]}),(0,b.jsx)(j,{isOpen:f,images:n,initialIndex:l,onClose:()=>k(!1)})]})}a.s(["default",()=>k])},390265,a=>{"use strict";var b=a.i(526156),c=a.i(912466),d=a.i(274209),e=a.i(281682);function f({eventName:a=e.AnalyticsEvents.BUTTON_CLICK,eventProperties:f={},onClick:g,...h}){let{trackEvent:i}=(0,d.useAnalytics)();return(0,b.jsx)(c.Button,{...h,onClick:b=>{i(a,{...f,label:"string"==typeof h.children?h.children:f.label}),g&&g(b)}})}a.s(["default",()=>f])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__5209d0e9._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="8a7da826-f94a-8396-7351-63a0775388dc")}catch(e){}}(); +module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},26701,a=>{"use strict";var b=a.i(526156),c=a.i(603836),d=a.i(150765),e=a.i(110644),f=a.i(411487);a.i(594214);var g=a.i(90695),h=a.i(5515),i=a.i(544027);let j=(0,f.default)(async()=>{},{loadableGenerated:{modules:[888085]},ssr:!1});function k(){let a=(0,c.useTranslations)("Team"),[f,k]=(0,d.useState)(!1),[l,m]=(0,d.useState)(0),n=["/uploads/2024/12/DSC07539-Large-600x400.webp","/uploads/2024/12/DSC07460-Large-600x400.webp","/uploads/2024/12/DSC07469-Large-600x400.webp","/uploads/2024/12/DSC07433-Large-600x400.webp","/uploads/2024/12/DSC07387-Large-600x400.webp"];return(0,b.jsxs)(g.Section,{className:"bg-primary-dark py-16 md:py-32",children:[(0,b.jsxs)(h.Container,{children:[(0,b.jsx)(i.Heading,{level:2,subtitle:a("gallery.subtitle"),align:"center",className:"text-white mb-12 md:mb-20",children:(0,b.jsx)("span",{className:"text-white",children:a("gallery.title")})}),(0,b.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-5 gap-3 md:gap-6",children:n.map((c,d)=>(0,b.jsxs)("button",{onClick:()=>{m(d),k(!0)},className:"relative aspect-[3/4] rounded-2xl md:rounded-[32px] overflow-hidden group shadow-2xl cursor-pointer",children:[(0,b.jsx)(e.default,{src:c,alt:a("gallery.title"),fill:!0,className:"object-cover transition-transform duration-1000 group-hover:scale-110"}),(0,b.jsx)("div",{className:"absolute inset-0 bg-primary-dark/40 group-hover:bg-transparent transition-all duration-500"}),(0,b.jsx)("div",{className:"absolute inset-0 border-0 group-hover:border-[8px] md:group-hover:border-[12px] border-white/10 transition-all duration-500 pointer-events-none"})]},d))})]}),(0,b.jsx)(j,{isOpen:f,images:n,initialIndex:l,onClose:()=>k(!1)})]})}a.s(["default",()=>k])},390265,a=>{"use strict";var b=a.i(526156),c=a.i(912466),d=a.i(274209),e=a.i(281682);function f({eventName:a=e.AnalyticsEvents.BUTTON_CLICK,eventProperties:f={},onClick:g,...h}){let{trackEvent:i}=(0,d.useAnalytics)();return(0,b.jsx)(c.Button,{...h,onClick:b=>{i(a,{...f,label:"string"==typeof h.children?h.children:f.label}),g&&g(b)}})}a.s(["default",()=>f])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__5209d0e9._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; -//# debugId=62ee6973-90ff-e5b3-17f4-c9c5faf22d74 +//# debugId=8a7da826-f94a-8396-7351-63a0775388dc //# sourceMappingURL=%5Broot-of-the-server%5D__0bdab930._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js.map index 624b5e1d2..2ce2946cd 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js.map +++ b/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": [], - "debugId": "62ee6973-90ff-e5b3-17f4-c9c5faf22d74", + "debugId": "8a7da826-f94a-8396-7351-63a0775388dc", "sections": [ - {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/analytics/useAnalytics.ts","../../../../components/analytics/analytics-events.ts","../../../../components/ui/index.ts","../../../../components/ui/Section.tsx","../../../../components/ui/Container.tsx","../../../../components/ui/Heading.tsx","../../../../components/ui/Card.tsx","../../../../components/ui/Badge.tsx","../../../../components/ui/Input.tsx","../../../../components/ui/Textarea.tsx","../../../../components/ui/Label.tsx","../../../../components/ui/Callout.tsx","../../../../components/Reveal.tsx","../../../../components/team/Gallery.tsx","../../../../components/analytics/TrackedButton.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { getAppServices } from '@/lib/services/create-services';\nimport type { AnalyticsEventProperties } from '@/lib/services/analytics/analytics-service';\n\n/**\n * Custom hook for tracking analytics events with Umami.\n * \n * Provides a convenient way to track custom events throughout your application.\n * \n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * \n * function MyComponent() {\n * const { trackEvent, trackPageview } = useAnalytics();\n * \n * const handleButtonClick = () => {\n * trackEvent('button_click', {\n * button_id: 'cta-primary',\n * page: 'homepage'\n * });\n * };\n * \n * return ;\n * }\n * ```\n * \n * @example\n * ```tsx\n * // Track a custom pageview\n * const { trackPageview } = useAnalytics();\n * trackPageview('/custom-path?param=value');\n * ```\n */\nexport function useAnalytics() {\n const services = getAppServices();\n\n /**\n * Track a custom event with optional properties.\n * \n * @param eventName - The name of the event to track\n * @param properties - Optional event properties (metadata)\n */\n const trackEvent = useCallback(\n (eventName: string, properties?: AnalyticsEventProperties) => {\n services.analytics.track(eventName, properties);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked event:', eventName, properties);\n }\n },\n [services]\n );\n\n /**\n * Track a pageview (useful for custom navigation or SPA routing).\n * \n * @param url - The URL to track (defaults to current location)\n */\n const trackPageview = useCallback(\n (url?: string) => {\n services.analytics.trackPageview(url);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked pageview:', url ?? 'current location');\n }\n },\n [services]\n );\n\n return {\n trackEvent,\n trackPageview,\n };\n}\n","/**\n * Analytics Events Utility\n *\n * Centralized definitions for common analytics events and their properties.\n * This helps maintain consistency across the application and makes it easier\n * to track meaningful events.\n *\n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * import { AnalyticsEvents } from '@/components/analytics/analytics-events';\n *\n * function ProductPage() {\n * const { trackEvent } = useAnalytics();\n *\n * const handleAddToCart = (productId: string, productName: string) => {\n * trackEvent(AnalyticsEvents.PRODUCT_ADD_TO_CART, {\n * product_id: productId,\n * product_name: productName,\n * page: 'product-detail'\n * });\n * };\n *\n * return ;\n * }\n * ```\n */\n\nexport const AnalyticsEvents = {\n // Page & Navigation Events\n PAGE_VIEW: 'pageview',\n PAGE_SCROLL: 'page_scroll',\n PAGE_EXIT: 'page_exit',\n SCROLL_DEPTH: 'scroll_depth',\n\n // User Interaction Events\n BUTTON_CLICK: 'button_click',\n LINK_CLICK: 'link_click',\n FORM_SUBMIT: 'form_submit',\n FORM_START: 'form_start',\n FORM_ERROR: 'form_error',\n FORM_FIELD_FOCUS: 'form_field_focus',\n\n // E-commerce Events\n PRODUCT_VIEW: 'product_view',\n PRODUCT_ADD_TO_CART: 'product_add_to_cart',\n PRODUCT_REMOVE_FROM_CART: 'product_remove_from_cart',\n PRODUCT_PURCHASE: 'product_purchase',\n PRODUCT_WISHLIST_ADD: 'product_wishlist_add',\n PRODUCT_WISHLIST_REMOVE: 'product_wishlist_remove',\n PRODUCT_TAB_SWITCH: 'product_tab_switch',\n\n // Search & Filter Events\n SEARCH: 'search',\n FILTER_APPLY: 'filter_apply',\n FILTER_CLEAR: 'filter_clear',\n\n // User Account Events\n USER_SIGNUP: 'user_signup',\n USER_LOGIN: 'user_login',\n USER_LOGOUT: 'user_logout',\n USER_PROFILE_UPDATE: 'user_profile_update',\n\n // Content Events\n BLOG_POST_VIEW: 'blog_post_view',\n VIDEO_PLAY: 'video_play',\n VIDEO_PAUSE: 'video_pause',\n VIDEO_COMPLETE: 'video_complete',\n DOWNLOAD: 'download',\n\n // UI Interaction Events\n MODAL_OPEN: 'modal_open',\n MODAL_CLOSE: 'modal_close',\n TOGGLE_SWITCH: 'toggle_switch',\n ACCORDION_TOGGLE: 'accordion_toggle',\n TAB_SWITCH: 'tab_switch',\n TOC_CLICK: 'toc_click',\n\n // Error & Performance Events\n ERROR: 'error',\n PERFORMANCE: 'performance',\n API_ERROR: 'api_error',\n API_SUCCESS: 'api_success',\n\n // Custom Business Events\n QUOTE_REQUEST: 'quote_request',\n CONTACT_FORM_SUBMIT: 'contact_form_submit',\n NEWSLETTER_SUBSCRIBE: 'newsletter_subscribe',\n BROCHURE_DOWNLOAD: 'brochure_download',\n} as const;\n\n/**\n * Type-safe event properties for common events\n */\nexport type AnalyticsEventName = (typeof AnalyticsEvents)[keyof typeof AnalyticsEvents];\n\n/**\n * Common event property helpers\n */\nexport const AnalyticsEventProperties = {\n /**\n * Create properties for a product event\n */\n product: (productId: string, productName: string, category?: string) => ({\n product_id: productId,\n product_name: productName,\n product_category: category,\n }),\n\n /**\n * Create properties for a form event\n */\n form: (formId: string, formName: string, fields?: Record) => ({\n form_id: formId,\n form_name: formName,\n form_fields: fields,\n }),\n\n /**\n * Create properties for a search event\n */\n search: (query: string, filters?: Record) => ({\n search_query: query,\n search_filters: filters,\n }),\n\n /**\n * Create properties for a navigation event\n */\n navigation: (from: string, to: string) => ({\n from_page: from,\n to_page: to,\n }),\n} as const;\n","export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n

\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]',\n '5': 'text-base md:text-lg font-bold leading-[1.3]',\n '6': 'text-base md:text-lg font-semibold leading-[1.4]',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { cn } from '@/components/ui';\n\ninterface RevealProps {\n children: React.ReactNode;\n className?: string;\n threshold?: number;\n delay?: number;\n}\n\nexport default function Reveal({ children, className, threshold = 0.1, delay = 0 }: RevealProps) {\n const [isVisible, setIsVisible] = useState(false);\n const ref = useRef(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.unobserve(entry.target);\n }\n },\n { threshold }\n );\n\n const currentRef = ref.current;\n if (currentRef) {\n observer.observe(currentRef);\n }\n\n return () => {\n if (currentRef) {\n observer.unobserve(currentRef);\n }\n };\n }, [threshold]);\n\n return (\n \n {children}\n \n );\n}\n","'use client';\n\nimport { useTranslations } from 'next-intl';\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport dynamic from 'next/dynamic';\nconst Lightbox = dynamic(() => import('@/components/Lightbox'), { ssr: false });\nimport { Section, Container, Heading } from '@/components/ui';\n\nexport default function Gallery() {\n const t = useTranslations('Team');\n\n const [lightboxOpen, setLightboxOpen] = useState(false);\n const [lightboxIndex, setLightboxIndex] = useState(0);\n\n const teamGalleryImages = [\n '/uploads/2024/12/DSC07539-Large-600x400.webp',\n '/uploads/2024/12/DSC07460-Large-600x400.webp',\n '/uploads/2024/12/DSC07469-Large-600x400.webp',\n '/uploads/2024/12/DSC07433-Large-600x400.webp',\n '/uploads/2024/12/DSC07387-Large-600x400.webp'\n ];\n\n return (\n
\n \n \n {t('gallery.title')}\n \n
\n {teamGalleryImages.map((src, idx) => (\n {\n setLightboxIndex(idx);\n setLightboxOpen(true);\n }}\n className=\"relative aspect-[3/4] rounded-2xl md:rounded-[32px] overflow-hidden group shadow-2xl cursor-pointer\"\n >\n {t('gallery.title')}\n
\n
\n \n ))}\n
\n \n\n setLightboxOpen(false)}\n />\n
\n );\n}","'use client';\n\nimport React from 'react';\nimport { Button, ButtonProps } from '../ui/Button';\nimport { useAnalytics } from './useAnalytics';\nimport { AnalyticsEvents } from './analytics-events';\n\ninterface TrackedButtonProps extends ButtonProps {\n eventName?: string;\n eventProperties?: Record;\n}\n\n/**\n * A wrapper around the project's Button component that tracks click events.\n * Safe to use in server components.\n */\nexport default function TrackedButton({\n eventName = AnalyticsEvents.BUTTON_CLICK,\n eventProperties = {},\n onClick,\n ...props\n}: TrackedButtonProps) {\n const { trackEvent } = useAnalytics();\n\n const handleClick = (e: React.MouseEvent) => {\n trackEvent(eventName, {\n ...eventProperties,\n label: typeof props.children === 'string' ? props.children : eventProperties.label,\n });\n if (onClick) onClick(e);\n };\n\n return ;\n * }\n * ```\n * \n * @example\n * ```tsx\n * // Track a custom pageview\n * const { trackPageview } = useAnalytics();\n * trackPageview('/custom-path?param=value');\n * ```\n */\nexport function useAnalytics() {\n const services = getAppServices();\n\n /**\n * Track a custom event with optional properties.\n * \n * @param eventName - The name of the event to track\n * @param properties - Optional event properties (metadata)\n */\n const trackEvent = useCallback(\n (eventName: string, properties?: AnalyticsEventProperties) => {\n services.analytics.track(eventName, properties);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked event:', eventName, properties);\n }\n },\n [services]\n );\n\n /**\n * Track a pageview (useful for custom navigation or SPA routing).\n * \n * @param url - The URL to track (defaults to current location)\n */\n const trackPageview = useCallback(\n (url?: string) => {\n services.analytics.trackPageview(url);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked pageview:', url ?? 'current location');\n }\n },\n [services]\n );\n\n return {\n trackEvent,\n trackPageview,\n };\n}\n","/**\n * Analytics Events Utility\n *\n * Centralized definitions for common analytics events and their properties.\n * This helps maintain consistency across the application and makes it easier\n * to track meaningful events.\n *\n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * import { AnalyticsEvents } from '@/components/analytics/analytics-events';\n *\n * function ProductPage() {\n * const { trackEvent } = useAnalytics();\n *\n * const handleAddToCart = (productId: string, productName: string) => {\n * trackEvent(AnalyticsEvents.PRODUCT_ADD_TO_CART, {\n * product_id: productId,\n * product_name: productName,\n * page: 'product-detail'\n * });\n * };\n *\n * return ;\n * }\n * ```\n */\n\nexport const AnalyticsEvents = {\n // Page & Navigation Events\n PAGE_VIEW: 'pageview',\n PAGE_SCROLL: 'page_scroll',\n PAGE_EXIT: 'page_exit',\n SCROLL_DEPTH: 'scroll_depth',\n\n // User Interaction Events\n BUTTON_CLICK: 'button_click',\n LINK_CLICK: 'link_click',\n FORM_SUBMIT: 'form_submit',\n FORM_START: 'form_start',\n FORM_ERROR: 'form_error',\n FORM_FIELD_FOCUS: 'form_field_focus',\n\n // E-commerce Events\n PRODUCT_VIEW: 'product_view',\n PRODUCT_ADD_TO_CART: 'product_add_to_cart',\n PRODUCT_REMOVE_FROM_CART: 'product_remove_from_cart',\n PRODUCT_PURCHASE: 'product_purchase',\n PRODUCT_WISHLIST_ADD: 'product_wishlist_add',\n PRODUCT_WISHLIST_REMOVE: 'product_wishlist_remove',\n PRODUCT_TAB_SWITCH: 'product_tab_switch',\n\n // Search & Filter Events\n SEARCH: 'search',\n FILTER_APPLY: 'filter_apply',\n FILTER_CLEAR: 'filter_clear',\n\n // User Account Events\n USER_SIGNUP: 'user_signup',\n USER_LOGIN: 'user_login',\n USER_LOGOUT: 'user_logout',\n USER_PROFILE_UPDATE: 'user_profile_update',\n\n // Content Events\n BLOG_POST_VIEW: 'blog_post_view',\n VIDEO_PLAY: 'video_play',\n VIDEO_PAUSE: 'video_pause',\n VIDEO_COMPLETE: 'video_complete',\n DOWNLOAD: 'download',\n\n // UI Interaction Events\n MODAL_OPEN: 'modal_open',\n MODAL_CLOSE: 'modal_close',\n TOGGLE_SWITCH: 'toggle_switch',\n ACCORDION_TOGGLE: 'accordion_toggle',\n TAB_SWITCH: 'tab_switch',\n TOC_CLICK: 'toc_click',\n\n // Error & Performance Events\n ERROR: 'error',\n PERFORMANCE: 'performance',\n API_ERROR: 'api_error',\n API_SUCCESS: 'api_success',\n\n // Custom Business Events\n QUOTE_REQUEST: 'quote_request',\n CONTACT_FORM_SUBMIT: 'contact_form_submit',\n NEWSLETTER_SUBSCRIBE: 'newsletter_subscribe',\n BROCHURE_DOWNLOAD: 'brochure_download',\n} as const;\n\n/**\n * Type-safe event properties for common events\n */\nexport type AnalyticsEventName = (typeof AnalyticsEvents)[keyof typeof AnalyticsEvents];\n\n/**\n * Common event property helpers\n */\nexport const AnalyticsEventProperties = {\n /**\n * Create properties for a product event\n */\n product: (productId: string, productName: string, category?: string) => ({\n product_id: productId,\n product_name: productName,\n product_category: category,\n }),\n\n /**\n * Create properties for a form event\n */\n form: (formId: string, formName: string, fields?: Record) => ({\n form_id: formId,\n form_name: formName,\n form_fields: fields,\n }),\n\n /**\n * Create properties for a search event\n */\n search: (query: string, filters?: Record) => ({\n search_query: query,\n search_filters: filters,\n }),\n\n /**\n * Create properties for a navigation event\n */\n navigation: (from: string, to: string) => ({\n from_page: from,\n to_page: to,\n }),\n} as const;\n","export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-snug',\n '5': 'text-base md:text-lg font-bold leading-normal',\n '6': 'text-base md:text-lg font-semibold leading-normal',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { cn } from '@/components/ui';\n\ninterface RevealProps {\n children: React.ReactNode;\n className?: string;\n threshold?: number;\n delay?: number;\n}\n\nexport default function Reveal({ children, className, threshold = 0.1, delay = 0 }: RevealProps) {\n const [isVisible, setIsVisible] = useState(false);\n const ref = useRef(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.unobserve(entry.target);\n }\n },\n { threshold }\n );\n\n const currentRef = ref.current;\n if (currentRef) {\n observer.observe(currentRef);\n }\n\n return () => {\n if (currentRef) {\n observer.unobserve(currentRef);\n }\n };\n }, [threshold]);\n\n return (\n \n {children}\n \n );\n}\n","'use client';\n\nimport { useTranslations } from 'next-intl';\nimport { useState } from 'react';\nimport Image from 'next/image';\nimport dynamic from 'next/dynamic';\nconst Lightbox = dynamic(() => import('@/components/Lightbox'), { ssr: false });\nimport { Section, Container, Heading } from '@/components/ui';\n\nexport default function Gallery() {\n const t = useTranslations('Team');\n\n const [lightboxOpen, setLightboxOpen] = useState(false);\n const [lightboxIndex, setLightboxIndex] = useState(0);\n\n const teamGalleryImages = [\n '/uploads/2024/12/DSC07539-Large-600x400.webp',\n '/uploads/2024/12/DSC07460-Large-600x400.webp',\n '/uploads/2024/12/DSC07469-Large-600x400.webp',\n '/uploads/2024/12/DSC07433-Large-600x400.webp',\n '/uploads/2024/12/DSC07387-Large-600x400.webp'\n ];\n\n return (\n
\n \n \n {t('gallery.title')}\n \n
\n {teamGalleryImages.map((src, idx) => (\n {\n setLightboxIndex(idx);\n setLightboxOpen(true);\n }}\n className=\"relative aspect-[3/4] rounded-2xl md:rounded-[32px] overflow-hidden group shadow-2xl cursor-pointer\"\n >\n {t('gallery.title')}\n
\n
\n \n ))}\n
\n \n\n setLightboxOpen(false)}\n />\n
\n );\n}","'use client';\n\nimport React from 'react';\nimport { Button, ButtonProps } from '../ui/Button';\nimport { useAnalytics } from './useAnalytics';\nimport { AnalyticsEvents } from './analytics-events';\n\ninterface TrackedButtonProps extends ButtonProps {\n eventName?: string;\n eventProperties?: Record;\n}\n\n/**\n * A wrapper around the project's Button component that tracks click events.\n * Safe to use in server components.\n */\nexport default function TrackedButton({\n eventName = AnalyticsEvents.BUTTON_CLICK,\n eventProperties = {},\n onClick,\n ...props\n}: TrackedButtonProps) {\n const { trackEvent } = useAnalytics();\n\n const handleClick = (e: React.MouseEvent) => {\n trackEvent(eventName, {\n ...eventProperties,\n label: typeof props.children === 'string' ? props.children : eventProperties.label,\n });\n if (onClick) onClick(e);\n };\n\n return \n \n \n\n {/* Decorative Industrial Line */}\n
\n \n \n );\n}\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/ui/index.ts","../../../../components/ui/Section.tsx","../../../../components/ui/Container.tsx","../../../../components/ui/Heading.tsx","../../../../components/ui/Card.tsx","../../../../components/ui/Badge.tsx","../../../../components/ui/Input.tsx","../../../../components/ui/Textarea.tsx","../../../../components/ui/Label.tsx","../../../../components/ui/Callout.tsx","../../../../components/Scribble.tsx","../../../../app/%5Blocale%5D/error.tsx"],"sourcesContent":["export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-snug',\n '5': 'text-base md:text-lg font-bold leading-normal',\n '6': 'text-base md:text-lg font-semibold leading-normal',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { cn } from '@/components/ui';\n\ninterface ScribbleProps {\n variant: 'circle' | 'underline';\n className?: string;\n color?: string;\n}\n\nexport default function Scribble({ variant, className, color = '#82ed20' }: ScribbleProps) {\n if (variant === 'circle') {\n return (\n \n \n \n );\n }\n\n if (variant === 'underline') {\n return (\n \n \n \n );\n }\n\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useTranslations } from 'next-intl';\nimport { getAppServices } from '@/lib/services/create-services';\nimport { Container, Button, Heading } from '@/components/ui';\nimport Scribble from '@/components/Scribble';\n\nexport default function Error({\n error,\n reset,\n}: {\n error: Error & { digest?: string };\n reset: () => void;\n}) {\n const t = useTranslations('Error');\n\n useEffect(() => {\n // Treat \"Failed to find Server Action\" as a deployment sync issue and reload\n if (error?.message?.includes('Failed to find Server Action')) {\n window.location.reload();\n return;\n }\n\n const services = getAppServices();\n services.errors.captureException(error);\n services.logger.error('Application error caught by boundary', {\n message: error?.message || 'Unknown error',\n stack: error?.stack,\n digest: error?.digest,\n });\n \n // Force solid header\n document.body.setAttribute('data-force-solid-header', 'true');\n return () => {\n document.body.removeAttribute('data-force-solid-header');\n };\n }, [error]);\n\n return (\n <>\n \n {/* Industrial Background Element */}\n
\n 500\n
\n\n
\n \n 500\n \n \n
\n\n \n {t('title')}\n \n\n

{t('description')}

\n\n
\n \n \n
\n\n {/* Decorative Industrial Line */}\n
\n \n \n );\n}\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js b/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js index 6f06334ef..6ab554574 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="cabc1c22-9ae0-3f71-7467-1c4ff5313f07")}catch(e){}}(); -module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},991320,a=>{"use strict";var b=a.i(526156);a.i(594214);var c=a.i(829091);function d({variant:a,className:d,color:e="#82ed20"}){return"circle"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:e,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:e,strokeWidth:"20",fill:"none"})}):null}a.s(["default",()=>d])},868513,a=>{"use strict";var b=a.i(150765),c=a.i(274209),d=a.i(281682);function e({path:e}){let{trackEvent:f}=(0,c.useAnalytics)();return(0,b.useEffect)(()=>{f(d.AnalyticsEvents.ERROR,{type:"404_not_found",path:e}),a.A(163041).then(a=>{a.withScope(b=>{b.setTag("status_code","404"),b.setTag("path",e),a.captureMessage(`Route Not Found: ${e}`,"warning")})})},[f,e]),null}a.s(["default",()=>e])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__d3969a9f._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="f2d46975-0ecf-96dc-e3d0-554e1dbcdfba")}catch(e){}}(); +module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},991320,a=>{"use strict";var b=a.i(526156);a.i(594214);var c=a.i(829091);function d({variant:a,className:d,color:e="#82ed20"}){return"circle"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:e,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:e,strokeWidth:"20",fill:"none"})}):null}a.s(["default",()=>d])},868513,a=>{"use strict";var b=a.i(150765),c=a.i(274209),d=a.i(281682);function e({path:e}){let{trackEvent:f}=(0,c.useAnalytics)();return(0,b.useEffect)(()=>{f(d.AnalyticsEvents.ERROR,{type:"404_not_found",path:e}),a.A(163041).then(a=>{a.withScope(b=>{b.setTag("status_code","404"),b.setTag("path",e),a.captureMessage(`Route Not Found: ${e}`,"warning")})})},[f,e]),null}a.s(["default",()=>e])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__d3969a9f._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; -//# debugId=cabc1c22-9ae0-3f71-7467-1c4ff5313f07 +//# debugId=f2d46975-0ecf-96dc-e3d0-554e1dbcdfba //# sourceMappingURL=%5Broot-of-the-server%5D__63a582be._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js.map index b99b93e5e..1045684b6 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js.map +++ b/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": [], - "debugId": "cabc1c22-9ae0-3f71-7467-1c4ff5313f07", + "debugId": "f2d46975-0ecf-96dc-e3d0-554e1dbcdfba", "sections": [ - {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/analytics/useAnalytics.ts","../../../../components/analytics/analytics-events.ts","../../../../components/ui/index.ts","../../../../components/ui/Section.tsx","../../../../components/ui/Container.tsx","../../../../components/ui/Heading.tsx","../../../../components/ui/Card.tsx","../../../../components/ui/Badge.tsx","../../../../components/ui/Input.tsx","../../../../components/ui/Textarea.tsx","../../../../components/ui/Label.tsx","../../../../components/ui/Callout.tsx","../../../../components/Scribble.tsx","../../../../components/analytics/ClientNotFoundTracker.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { getAppServices } from '@/lib/services/create-services';\nimport type { AnalyticsEventProperties } from '@/lib/services/analytics/analytics-service';\n\n/**\n * Custom hook for tracking analytics events with Umami.\n * \n * Provides a convenient way to track custom events throughout your application.\n * \n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * \n * function MyComponent() {\n * const { trackEvent, trackPageview } = useAnalytics();\n * \n * const handleButtonClick = () => {\n * trackEvent('button_click', {\n * button_id: 'cta-primary',\n * page: 'homepage'\n * });\n * };\n * \n * return ;\n * }\n * ```\n * \n * @example\n * ```tsx\n * // Track a custom pageview\n * const { trackPageview } = useAnalytics();\n * trackPageview('/custom-path?param=value');\n * ```\n */\nexport function useAnalytics() {\n const services = getAppServices();\n\n /**\n * Track a custom event with optional properties.\n * \n * @param eventName - The name of the event to track\n * @param properties - Optional event properties (metadata)\n */\n const trackEvent = useCallback(\n (eventName: string, properties?: AnalyticsEventProperties) => {\n services.analytics.track(eventName, properties);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked event:', eventName, properties);\n }\n },\n [services]\n );\n\n /**\n * Track a pageview (useful for custom navigation or SPA routing).\n * \n * @param url - The URL to track (defaults to current location)\n */\n const trackPageview = useCallback(\n (url?: string) => {\n services.analytics.trackPageview(url);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked pageview:', url ?? 'current location');\n }\n },\n [services]\n );\n\n return {\n trackEvent,\n trackPageview,\n };\n}\n","/**\n * Analytics Events Utility\n *\n * Centralized definitions for common analytics events and their properties.\n * This helps maintain consistency across the application and makes it easier\n * to track meaningful events.\n *\n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * import { AnalyticsEvents } from '@/components/analytics/analytics-events';\n *\n * function ProductPage() {\n * const { trackEvent } = useAnalytics();\n *\n * const handleAddToCart = (productId: string, productName: string) => {\n * trackEvent(AnalyticsEvents.PRODUCT_ADD_TO_CART, {\n * product_id: productId,\n * product_name: productName,\n * page: 'product-detail'\n * });\n * };\n *\n * return ;\n * }\n * ```\n */\n\nexport const AnalyticsEvents = {\n // Page & Navigation Events\n PAGE_VIEW: 'pageview',\n PAGE_SCROLL: 'page_scroll',\n PAGE_EXIT: 'page_exit',\n SCROLL_DEPTH: 'scroll_depth',\n\n // User Interaction Events\n BUTTON_CLICK: 'button_click',\n LINK_CLICK: 'link_click',\n FORM_SUBMIT: 'form_submit',\n FORM_START: 'form_start',\n FORM_ERROR: 'form_error',\n FORM_FIELD_FOCUS: 'form_field_focus',\n\n // E-commerce Events\n PRODUCT_VIEW: 'product_view',\n PRODUCT_ADD_TO_CART: 'product_add_to_cart',\n PRODUCT_REMOVE_FROM_CART: 'product_remove_from_cart',\n PRODUCT_PURCHASE: 'product_purchase',\n PRODUCT_WISHLIST_ADD: 'product_wishlist_add',\n PRODUCT_WISHLIST_REMOVE: 'product_wishlist_remove',\n PRODUCT_TAB_SWITCH: 'product_tab_switch',\n\n // Search & Filter Events\n SEARCH: 'search',\n FILTER_APPLY: 'filter_apply',\n FILTER_CLEAR: 'filter_clear',\n\n // User Account Events\n USER_SIGNUP: 'user_signup',\n USER_LOGIN: 'user_login',\n USER_LOGOUT: 'user_logout',\n USER_PROFILE_UPDATE: 'user_profile_update',\n\n // Content Events\n BLOG_POST_VIEW: 'blog_post_view',\n VIDEO_PLAY: 'video_play',\n VIDEO_PAUSE: 'video_pause',\n VIDEO_COMPLETE: 'video_complete',\n DOWNLOAD: 'download',\n\n // UI Interaction Events\n MODAL_OPEN: 'modal_open',\n MODAL_CLOSE: 'modal_close',\n TOGGLE_SWITCH: 'toggle_switch',\n ACCORDION_TOGGLE: 'accordion_toggle',\n TAB_SWITCH: 'tab_switch',\n TOC_CLICK: 'toc_click',\n\n // Error & Performance Events\n ERROR: 'error',\n PERFORMANCE: 'performance',\n API_ERROR: 'api_error',\n API_SUCCESS: 'api_success',\n\n // Custom Business Events\n QUOTE_REQUEST: 'quote_request',\n CONTACT_FORM_SUBMIT: 'contact_form_submit',\n NEWSLETTER_SUBSCRIBE: 'newsletter_subscribe',\n BROCHURE_DOWNLOAD: 'brochure_download',\n} as const;\n\n/**\n * Type-safe event properties for common events\n */\nexport type AnalyticsEventName = (typeof AnalyticsEvents)[keyof typeof AnalyticsEvents];\n\n/**\n * Common event property helpers\n */\nexport const AnalyticsEventProperties = {\n /**\n * Create properties for a product event\n */\n product: (productId: string, productName: string, category?: string) => ({\n product_id: productId,\n product_name: productName,\n product_category: category,\n }),\n\n /**\n * Create properties for a form event\n */\n form: (formId: string, formName: string, fields?: Record) => ({\n form_id: formId,\n form_name: formName,\n form_fields: fields,\n }),\n\n /**\n * Create properties for a search event\n */\n search: (query: string, filters?: Record) => ({\n search_query: query,\n search_filters: filters,\n }),\n\n /**\n * Create properties for a navigation event\n */\n navigation: (from: string, to: string) => ({\n from_page: from,\n to_page: to,\n }),\n} as const;\n","export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]',\n '5': 'text-base md:text-lg font-bold leading-[1.3]',\n '6': 'text-base md:text-lg font-semibold leading-[1.4]',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { cn } from '@/components/ui';\n\ninterface ScribbleProps {\n variant: 'circle' | 'underline';\n className?: string;\n color?: string;\n}\n\nexport default function Scribble({ variant, className, color = '#82ed20' }: ScribbleProps) {\n if (variant === 'circle') {\n return (\n \n \n \n );\n }\n\n if (variant === 'underline') {\n return (\n \n \n \n );\n }\n\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useAnalytics } from './useAnalytics';\nimport { AnalyticsEvents } from './analytics-events';\n\nexport default function ClientNotFoundTracker({ path }: { path: string }) {\n const { trackEvent } = useAnalytics();\n\n useEffect(() => {\n trackEvent(AnalyticsEvents.ERROR, {\n type: '404_not_found',\n path,\n });\n\n import('@sentry/nextjs').then((Sentry) => {\n Sentry.withScope((scope) => {\n scope.setTag('status_code', '404');\n scope.setTag('path', path);\n Sentry.captureMessage(`Route Not Found: ${path}`, 'warning');\n });\n });\n }, [trackEvent, path]);\n\n return null;\n}\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/analytics/useAnalytics.ts","../../../../components/analytics/analytics-events.ts","../../../../components/ui/index.ts","../../../../components/ui/Section.tsx","../../../../components/ui/Container.tsx","../../../../components/ui/Heading.tsx","../../../../components/ui/Card.tsx","../../../../components/ui/Badge.tsx","../../../../components/ui/Input.tsx","../../../../components/ui/Textarea.tsx","../../../../components/ui/Label.tsx","../../../../components/ui/Callout.tsx","../../../../components/Scribble.tsx","../../../../components/analytics/ClientNotFoundTracker.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { getAppServices } from '@/lib/services/create-services';\nimport type { AnalyticsEventProperties } from '@/lib/services/analytics/analytics-service';\n\n/**\n * Custom hook for tracking analytics events with Umami.\n * \n * Provides a convenient way to track custom events throughout your application.\n * \n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * \n * function MyComponent() {\n * const { trackEvent, trackPageview } = useAnalytics();\n * \n * const handleButtonClick = () => {\n * trackEvent('button_click', {\n * button_id: 'cta-primary',\n * page: 'homepage'\n * });\n * };\n * \n * return ;\n * }\n * ```\n * \n * @example\n * ```tsx\n * // Track a custom pageview\n * const { trackPageview } = useAnalytics();\n * trackPageview('/custom-path?param=value');\n * ```\n */\nexport function useAnalytics() {\n const services = getAppServices();\n\n /**\n * Track a custom event with optional properties.\n * \n * @param eventName - The name of the event to track\n * @param properties - Optional event properties (metadata)\n */\n const trackEvent = useCallback(\n (eventName: string, properties?: AnalyticsEventProperties) => {\n services.analytics.track(eventName, properties);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked event:', eventName, properties);\n }\n },\n [services]\n );\n\n /**\n * Track a pageview (useful for custom navigation or SPA routing).\n * \n * @param url - The URL to track (defaults to current location)\n */\n const trackPageview = useCallback(\n (url?: string) => {\n services.analytics.trackPageview(url);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked pageview:', url ?? 'current location');\n }\n },\n [services]\n );\n\n return {\n trackEvent,\n trackPageview,\n };\n}\n","/**\n * Analytics Events Utility\n *\n * Centralized definitions for common analytics events and their properties.\n * This helps maintain consistency across the application and makes it easier\n * to track meaningful events.\n *\n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * import { AnalyticsEvents } from '@/components/analytics/analytics-events';\n *\n * function ProductPage() {\n * const { trackEvent } = useAnalytics();\n *\n * const handleAddToCart = (productId: string, productName: string) => {\n * trackEvent(AnalyticsEvents.PRODUCT_ADD_TO_CART, {\n * product_id: productId,\n * product_name: productName,\n * page: 'product-detail'\n * });\n * };\n *\n * return ;\n * }\n * ```\n */\n\nexport const AnalyticsEvents = {\n // Page & Navigation Events\n PAGE_VIEW: 'pageview',\n PAGE_SCROLL: 'page_scroll',\n PAGE_EXIT: 'page_exit',\n SCROLL_DEPTH: 'scroll_depth',\n\n // User Interaction Events\n BUTTON_CLICK: 'button_click',\n LINK_CLICK: 'link_click',\n FORM_SUBMIT: 'form_submit',\n FORM_START: 'form_start',\n FORM_ERROR: 'form_error',\n FORM_FIELD_FOCUS: 'form_field_focus',\n\n // E-commerce Events\n PRODUCT_VIEW: 'product_view',\n PRODUCT_ADD_TO_CART: 'product_add_to_cart',\n PRODUCT_REMOVE_FROM_CART: 'product_remove_from_cart',\n PRODUCT_PURCHASE: 'product_purchase',\n PRODUCT_WISHLIST_ADD: 'product_wishlist_add',\n PRODUCT_WISHLIST_REMOVE: 'product_wishlist_remove',\n PRODUCT_TAB_SWITCH: 'product_tab_switch',\n\n // Search & Filter Events\n SEARCH: 'search',\n FILTER_APPLY: 'filter_apply',\n FILTER_CLEAR: 'filter_clear',\n\n // User Account Events\n USER_SIGNUP: 'user_signup',\n USER_LOGIN: 'user_login',\n USER_LOGOUT: 'user_logout',\n USER_PROFILE_UPDATE: 'user_profile_update',\n\n // Content Events\n BLOG_POST_VIEW: 'blog_post_view',\n VIDEO_PLAY: 'video_play',\n VIDEO_PAUSE: 'video_pause',\n VIDEO_COMPLETE: 'video_complete',\n DOWNLOAD: 'download',\n\n // UI Interaction Events\n MODAL_OPEN: 'modal_open',\n MODAL_CLOSE: 'modal_close',\n TOGGLE_SWITCH: 'toggle_switch',\n ACCORDION_TOGGLE: 'accordion_toggle',\n TAB_SWITCH: 'tab_switch',\n TOC_CLICK: 'toc_click',\n\n // Error & Performance Events\n ERROR: 'error',\n PERFORMANCE: 'performance',\n API_ERROR: 'api_error',\n API_SUCCESS: 'api_success',\n\n // Custom Business Events\n QUOTE_REQUEST: 'quote_request',\n CONTACT_FORM_SUBMIT: 'contact_form_submit',\n NEWSLETTER_SUBSCRIBE: 'newsletter_subscribe',\n BROCHURE_DOWNLOAD: 'brochure_download',\n} as const;\n\n/**\n * Type-safe event properties for common events\n */\nexport type AnalyticsEventName = (typeof AnalyticsEvents)[keyof typeof AnalyticsEvents];\n\n/**\n * Common event property helpers\n */\nexport const AnalyticsEventProperties = {\n /**\n * Create properties for a product event\n */\n product: (productId: string, productName: string, category?: string) => ({\n product_id: productId,\n product_name: productName,\n product_category: category,\n }),\n\n /**\n * Create properties for a form event\n */\n form: (formId: string, formName: string, fields?: Record) => ({\n form_id: formId,\n form_name: formName,\n form_fields: fields,\n }),\n\n /**\n * Create properties for a search event\n */\n search: (query: string, filters?: Record) => ({\n search_query: query,\n search_filters: filters,\n }),\n\n /**\n * Create properties for a navigation event\n */\n navigation: (from: string, to: string) => ({\n from_page: from,\n to_page: to,\n }),\n} as const;\n","export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-snug',\n '5': 'text-base md:text-lg font-bold leading-normal',\n '6': 'text-base md:text-lg font-semibold leading-normal',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { cn } from '@/components/ui';\n\ninterface ScribbleProps {\n variant: 'circle' | 'underline';\n className?: string;\n color?: string;\n}\n\nexport default function Scribble({ variant, className, color = '#82ed20' }: ScribbleProps) {\n if (variant === 'circle') {\n return (\n \n \n \n );\n }\n\n if (variant === 'underline') {\n return (\n \n \n \n );\n }\n\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useAnalytics } from './useAnalytics';\nimport { AnalyticsEvents } from './analytics-events';\n\nexport default function ClientNotFoundTracker({ path }: { path: string }) {\n const { trackEvent } = useAnalytics();\n\n useEffect(() => {\n trackEvent(AnalyticsEvents.ERROR, {\n type: '404_not_found',\n path,\n });\n\n import('@sentry/nextjs').then((Sentry) => {\n Sentry.withScope((scope) => {\n scope.setTag('status_code', '404');\n scope.setTag('path', path);\n Sentry.captureMessage(`Route Not Found: ${path}`, 'warning');\n });\n });\n }, [trackEvent, path]);\n\n return null;\n}\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js b/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js index be58bac6c..3882c89e8 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js +++ b/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="8fd69152-5b36-40dd-aea8-ff70fad106eb")}catch(e){}}(); -module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},100249,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(297622),g=a.r(308360),h=a.r(770173)},366014,a=>{"use strict";var b=a.i(526156),c=a.i(150765),d=a.i(603836);a.i(594214);var e=a.i(912466),f=a.i(544027),g=a.i(434904),h=a.i(618180),i=a.i(781027),j=a.i(41100),k=a.i(100249);let l=(0,k.createServerReference)("406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5",k.callServer,void 0,k.findSourceMapURL,"sendContactFormAction");var m=a.i(274209),n=a.i(281682);function o(){let a=(0,d.useTranslations)("Contact"),{trackEvent:k}=(0,m.useAnalytics)(),[o,p]=(0,c.useState)("idle"),[q,r]=(0,c.useState)(!1),s=a=>{q||(r(!0),k(n.AnalyticsEvents.FORM_START,{form_id:"contact_form",form_name:"Contact"})),k(n.AnalyticsEvents.FORM_FIELD_FOCUS,{form_id:"contact_form",field_id:a})};async function t(a){a.preventDefault(),p("submitting");let b=new FormData(a.currentTarget),c=b.get("email");try{let d=await l(b);d?.success?(k("contact_form_submission",{form_type:"general",email:c}),p("success"),a.target.reset()):(console.error("Contact form submission failed:",{email:c,error:d.error}),k(n.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:d.error||"submission_failed"}),p("error"))}catch(a){console.error("Contact form submission error:",{email:c,error:a}),k(n.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:a.message||"unexpected_error"}),p("error")}}return"success"===o?(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl text-center",role:"alert","aria-live":"polite",children:[(0,b.jsx)("div",{className:"w-20 h-20 bg-accent rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-accent/20",children:(0,b.jsx)("svg",{className:"w-10 h-10 text-primary-dark",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M5 13l4 4L19 7"})})}),(0,b.jsx)(f.Heading,{level:3,className:"mb-4",children:a("form.successTitle")||"Message Sent!"}),(0,b.jsx)("p",{className:"text-text-secondary text-lg mb-8",children:a("form.successDesc")||"Thank you for your message. We will get back to you as soon as possible."}),(0,b.jsx)(e.Button,{onClick:()=>p("idle"),variant:"saturated",children:a("form.sendAnother")||"Send another message"})]}):"error"===o?(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-destructive/20 shadow-2xl text-center bg-destructive/5 animate-slide-up",role:"alert","aria-live":"assertive",children:[(0,b.jsx)("div",{className:"w-20 h-20 bg-destructive rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-destructive/20",children:(0,b.jsxs)("svg",{className:"w-10 h-10 text-destructive-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,b.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"}),(0,b.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"})]})}),(0,b.jsx)(f.Heading,{level:3,className:"mb-4 text-destructive font-black",children:a("form.errorTitle")||"Submission Failed!"}),(0,b.jsx)("p",{className:"text-destructive/80 text-lg mb-8 leading-relaxed font-medium",children:a("form.error")||"Something went wrong. Please check your input and try again."}),(0,b.jsx)(e.Button,{onClick:()=>p("idle"),variant:"destructive",size:"lg",className:"w-full",children:a("form.tryAgain")||"Try Again"})]}):(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl animate-slide-up",children:[(0,b.jsx)(f.Heading,{level:3,subtitle:a("form.subtitle"),className:"mb-6 md:mb-10",children:a("form.title")}),(0,b.jsxs)("form",{id:"contact-form",onSubmit:t,className:"grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-8",children:[(0,b.jsx)("input",{type:"text",name:"company_website",tabIndex:-1,autoComplete:"off",style:{display:"none"},"aria-hidden":"true"}),(0,b.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-name",children:a("form.name")}),(0,b.jsx)(h.Input,{type:"text",id:"contact-name",name:"name",autoComplete:"name",enterKeyHint:"next",onFocus:()=>s("contact-name"),required:!0})]}),(0,b.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-email",children:a("form.email")}),(0,b.jsx)(h.Input,{type:"email",id:"contact-email",name:"email",autoComplete:"email",inputMode:"email",enterKeyHint:"next",placeholder:a("form.emailPlaceholder"),onFocus:()=>s("contact-email"),required:!0})]}),(0,b.jsxs)("div",{className:"md:col-span-2 space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-message",children:a("form.message")}),(0,b.jsx)(i.Textarea,{id:"contact-message",name:"message",rows:4,enterKeyHint:"send",placeholder:a("form.messagePlaceholder"),onFocus:()=>s("contact-message"),required:!0})]}),(0,b.jsx)("div",{className:"md:col-span-2 pt-2 md:pt-4",children:(0,b.jsx)(e.Button,{type:"submit",variant:"saturated",size:"lg",disabled:"submitting"===o,className:"w-full shadow-xl shadow-saturated/20 md:h-16 md:px-10 md:text-xl active:scale-[0.98] transition-transform",children:"submitting"===o?(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsxs)("svg",{className:"animate-spin h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),a("form.submitting")||"Sending..."]}):a("form.submit")})})]})]})}a.s(["default",()=>o],366014)},648658,a=>{"use strict";var b=a.i(526156);let c=(0,a.i(411487).default)(async()=>{},{loadableGenerated:{modules:[408235]},ssr:!1,loading:()=>(0,b.jsx)("div",{className:"h-full w-full bg-neutral-medium flex items-center justify-center",children:(0,b.jsx)("div",{className:"animate-pulse text-primary font-medium",children:"Loading Map..."})})});function d({address:a,lat:d,lng:e}){return(0,b.jsx)(c,{locations:[{name:"E-TIB Gruppe",address:a,lat:d,lng:e}]})}a.s(["default",()=>d])},567784,a=>{"use strict";var b=a.i(526156),c=a.i(150765);function d({email:a,className:d="",children:e}){let[f,g]=(0,c.useState)(!1);return((0,c.useEffect)(()=>{g(!0)},[]),f)?(0,b.jsx)("a",{href:`mailto:${a}`,className:d,children:e||a}):(0,b.jsx)("span",{className:d,"aria-hidden":"true",children:e||a.replace("@"," [at] ").replace(/\./g," [dot] ")})}a.s(["default",()=>d])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__00212f08._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="a5dfd7b8-c2aa-6494-36fb-8eae4b70a6ff")}catch(e){}}(); +module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},100249,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(297622),g=a.r(308360),h=a.r(770173)},366014,a=>{"use strict";var b=a.i(526156),c=a.i(150765),d=a.i(603836);a.i(594214);var e=a.i(912466),f=a.i(544027),g=a.i(434904),h=a.i(618180),i=a.i(781027),j=a.i(41100),k=a.i(100249);let l=(0,k.createServerReference)("406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5",k.callServer,void 0,k.findSourceMapURL,"sendContactFormAction");var m=a.i(274209),n=a.i(281682);function o(){let a=(0,d.useTranslations)("Contact"),{trackEvent:k}=(0,m.useAnalytics)(),[o,p]=(0,c.useState)("idle"),[q,r]=(0,c.useState)(!1),s=a=>{q||(r(!0),k(n.AnalyticsEvents.FORM_START,{form_id:"contact_form",form_name:"Contact"})),k(n.AnalyticsEvents.FORM_FIELD_FOCUS,{form_id:"contact_form",field_id:a})};async function t(a){a.preventDefault(),p("submitting");let b=new FormData(a.currentTarget),c=b.get("email");try{let d=await l(b);d?.success?(k("contact_form_submission",{form_type:"general",email:c}),p("success"),a.target.reset()):(console.error("Contact form submission failed:",{email:c,error:d.error}),k(n.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:d.error||"submission_failed"}),p("error"))}catch(a){console.error("Contact form submission error:",{email:c,error:a}),k(n.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:a.message||"unexpected_error"}),p("error")}}return"success"===o?(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl text-center",role:"alert","aria-live":"polite",children:[(0,b.jsx)("div",{className:"w-20 h-20 bg-accent rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-accent/20",children:(0,b.jsx)("svg",{className:"w-10 h-10 text-primary-dark",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M5 13l4 4L19 7"})})}),(0,b.jsx)(f.Heading,{level:3,className:"mb-4",children:a("form.successTitle")||"Message Sent!"}),(0,b.jsx)("p",{className:"text-text-secondary text-lg mb-8",children:a("form.successDesc")||"Thank you for your message. We will get back to you as soon as possible."}),(0,b.jsx)(e.Button,{onClick:()=>p("idle"),variant:"saturated",children:a("form.sendAnother")||"Send another message"})]}):"error"===o?(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-destructive/20 shadow-2xl text-center bg-destructive/5 animate-slide-up",role:"alert","aria-live":"assertive",children:[(0,b.jsx)("div",{className:"w-20 h-20 bg-destructive rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-destructive/20",children:(0,b.jsxs)("svg",{className:"w-10 h-10 text-destructive-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,b.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"}),(0,b.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"})]})}),(0,b.jsx)(f.Heading,{level:3,className:"mb-4 text-destructive font-black",children:a("form.errorTitle")||"Submission Failed!"}),(0,b.jsx)("p",{className:"text-destructive/80 text-lg mb-8 leading-relaxed font-medium",children:a("form.error")||"Something went wrong. Please check your input and try again."}),(0,b.jsx)(e.Button,{onClick:()=>p("idle"),variant:"destructive",size:"lg",className:"w-full",children:a("form.tryAgain")||"Try Again"})]}):(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl animate-slide-up",children:[(0,b.jsx)(f.Heading,{level:3,subtitle:a("form.subtitle"),className:"mb-6 md:mb-10",children:a("form.title")}),(0,b.jsxs)("form",{id:"contact-form",onSubmit:t,className:"grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-8",children:[(0,b.jsx)("input",{type:"text",name:"company_website",tabIndex:-1,autoComplete:"off",style:{display:"none"},"aria-hidden":"true"}),(0,b.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-name",children:a("form.name")}),(0,b.jsx)(h.Input,{type:"text",id:"contact-name",name:"name",autoComplete:"name",enterKeyHint:"next",onFocus:()=>s("contact-name"),required:!0})]}),(0,b.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-email",children:a("form.email")}),(0,b.jsx)(h.Input,{type:"email",id:"contact-email",name:"email",autoComplete:"email",inputMode:"email",enterKeyHint:"next",placeholder:a("form.emailPlaceholder"),onFocus:()=>s("contact-email"),required:!0})]}),(0,b.jsxs)("div",{className:"md:col-span-2 space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-message",children:a("form.message")}),(0,b.jsx)(i.Textarea,{id:"contact-message",name:"message",rows:4,enterKeyHint:"send",placeholder:a("form.messagePlaceholder"),onFocus:()=>s("contact-message"),required:!0})]}),(0,b.jsx)("div",{className:"md:col-span-2 pt-2 md:pt-4",children:(0,b.jsx)(e.Button,{type:"submit",variant:"saturated",size:"lg",disabled:"submitting"===o,className:"w-full shadow-xl shadow-saturated/20 md:h-16 md:px-10 md:text-xl active:scale-[0.98] transition-transform",children:"submitting"===o?(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsxs)("svg",{className:"animate-spin h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),a("form.submitting")||"Sending..."]}):a("form.submit")})})]})]})}a.s(["default",()=>o],366014)},648658,a=>{"use strict";var b=a.i(526156);let c=(0,a.i(411487).default)(async()=>{},{loadableGenerated:{modules:[408235]},ssr:!1,loading:()=>(0,b.jsx)("div",{className:"h-full w-full bg-neutral-medium flex items-center justify-center",children:(0,b.jsx)("div",{className:"animate-pulse text-primary font-medium",children:"Loading Map..."})})});function d({address:a,lat:d,lng:e}){return(0,b.jsx)(c,{locations:[{name:"E-TIB Gruppe",address:a,lat:d,lng:e}]})}a.s(["default",()=>d])},567784,a=>{"use strict";var b=a.i(526156),c=a.i(150765);function d({email:a,className:d="",children:e}){let[f,g]=(0,c.useState)(!1);return((0,c.useEffect)(()=>{g(!0)},[]),f)?(0,b.jsx)("a",{href:`mailto:${a}`,className:d,children:e||a}):(0,b.jsx)("span",{className:d,"aria-hidden":"true",children:e||a.replace("@"," [at] ").replace(/\./g," [dot] ")})}a.s(["default",()=>d])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__00212f08._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; -//# debugId=8fd69152-5b36-40dd-aea8-ff70fad106eb +//# debugId=a5dfd7b8-c2aa-6494-36fb-8eae4b70a6ff //# sourceMappingURL=%5Broot-of-the-server%5D__b20a6437._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js.map b/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js.map index 5507958f6..9e4562dfa 100644 --- a/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js.map +++ b/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": [], - "debugId": "8fd69152-5b36-40dd-aea8-ff70fad106eb", + "debugId": "a5dfd7b8-c2aa-6494-36fb-8eae4b70a6ff", "sections": [ - {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/analytics/useAnalytics.ts","../../../../components/analytics/analytics-events.ts","../../../../components/ui/index.ts","../../../../components/ui/Section.tsx","../../../../components/ui/Container.tsx","../../../../components/ui/Heading.tsx","../../../../components/ui/Card.tsx","../../../../components/ui/Badge.tsx","../../../../components/ui/Input.tsx","../../../../components/ui/Textarea.tsx","../../../../components/ui/Label.tsx","../../../../components/ui/Callout.tsx","../../../../components/Reveal.tsx","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-client-wrapper.ts","../../../../components/ContactForm.tsx","../../../../app/actions/data%3A446f89%20%3Ctext/javascript%3E","../../../../components/ContactMap.tsx","../../../../components/ObfuscatedEmail.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { getAppServices } from '@/lib/services/create-services';\nimport type { AnalyticsEventProperties } from '@/lib/services/analytics/analytics-service';\n\n/**\n * Custom hook for tracking analytics events with Umami.\n * \n * Provides a convenient way to track custom events throughout your application.\n * \n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * \n * function MyComponent() {\n * const { trackEvent, trackPageview } = useAnalytics();\n * \n * const handleButtonClick = () => {\n * trackEvent('button_click', {\n * button_id: 'cta-primary',\n * page: 'homepage'\n * });\n * };\n * \n * return ;\n * }\n * ```\n * \n * @example\n * ```tsx\n * // Track a custom pageview\n * const { trackPageview } = useAnalytics();\n * trackPageview('/custom-path?param=value');\n * ```\n */\nexport function useAnalytics() {\n const services = getAppServices();\n\n /**\n * Track a custom event with optional properties.\n * \n * @param eventName - The name of the event to track\n * @param properties - Optional event properties (metadata)\n */\n const trackEvent = useCallback(\n (eventName: string, properties?: AnalyticsEventProperties) => {\n services.analytics.track(eventName, properties);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked event:', eventName, properties);\n }\n },\n [services]\n );\n\n /**\n * Track a pageview (useful for custom navigation or SPA routing).\n * \n * @param url - The URL to track (defaults to current location)\n */\n const trackPageview = useCallback(\n (url?: string) => {\n services.analytics.trackPageview(url);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked pageview:', url ?? 'current location');\n }\n },\n [services]\n );\n\n return {\n trackEvent,\n trackPageview,\n };\n}\n","/**\n * Analytics Events Utility\n *\n * Centralized definitions for common analytics events and their properties.\n * This helps maintain consistency across the application and makes it easier\n * to track meaningful events.\n *\n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * import { AnalyticsEvents } from '@/components/analytics/analytics-events';\n *\n * function ProductPage() {\n * const { trackEvent } = useAnalytics();\n *\n * const handleAddToCart = (productId: string, productName: string) => {\n * trackEvent(AnalyticsEvents.PRODUCT_ADD_TO_CART, {\n * product_id: productId,\n * product_name: productName,\n * page: 'product-detail'\n * });\n * };\n *\n * return ;\n * }\n * ```\n */\n\nexport const AnalyticsEvents = {\n // Page & Navigation Events\n PAGE_VIEW: 'pageview',\n PAGE_SCROLL: 'page_scroll',\n PAGE_EXIT: 'page_exit',\n SCROLL_DEPTH: 'scroll_depth',\n\n // User Interaction Events\n BUTTON_CLICK: 'button_click',\n LINK_CLICK: 'link_click',\n FORM_SUBMIT: 'form_submit',\n FORM_START: 'form_start',\n FORM_ERROR: 'form_error',\n FORM_FIELD_FOCUS: 'form_field_focus',\n\n // E-commerce Events\n PRODUCT_VIEW: 'product_view',\n PRODUCT_ADD_TO_CART: 'product_add_to_cart',\n PRODUCT_REMOVE_FROM_CART: 'product_remove_from_cart',\n PRODUCT_PURCHASE: 'product_purchase',\n PRODUCT_WISHLIST_ADD: 'product_wishlist_add',\n PRODUCT_WISHLIST_REMOVE: 'product_wishlist_remove',\n PRODUCT_TAB_SWITCH: 'product_tab_switch',\n\n // Search & Filter Events\n SEARCH: 'search',\n FILTER_APPLY: 'filter_apply',\n FILTER_CLEAR: 'filter_clear',\n\n // User Account Events\n USER_SIGNUP: 'user_signup',\n USER_LOGIN: 'user_login',\n USER_LOGOUT: 'user_logout',\n USER_PROFILE_UPDATE: 'user_profile_update',\n\n // Content Events\n BLOG_POST_VIEW: 'blog_post_view',\n VIDEO_PLAY: 'video_play',\n VIDEO_PAUSE: 'video_pause',\n VIDEO_COMPLETE: 'video_complete',\n DOWNLOAD: 'download',\n\n // UI Interaction Events\n MODAL_OPEN: 'modal_open',\n MODAL_CLOSE: 'modal_close',\n TOGGLE_SWITCH: 'toggle_switch',\n ACCORDION_TOGGLE: 'accordion_toggle',\n TAB_SWITCH: 'tab_switch',\n TOC_CLICK: 'toc_click',\n\n // Error & Performance Events\n ERROR: 'error',\n PERFORMANCE: 'performance',\n API_ERROR: 'api_error',\n API_SUCCESS: 'api_success',\n\n // Custom Business Events\n QUOTE_REQUEST: 'quote_request',\n CONTACT_FORM_SUBMIT: 'contact_form_submit',\n NEWSLETTER_SUBSCRIBE: 'newsletter_subscribe',\n BROCHURE_DOWNLOAD: 'brochure_download',\n} as const;\n\n/**\n * Type-safe event properties for common events\n */\nexport type AnalyticsEventName = (typeof AnalyticsEvents)[keyof typeof AnalyticsEvents];\n\n/**\n * Common event property helpers\n */\nexport const AnalyticsEventProperties = {\n /**\n * Create properties for a product event\n */\n product: (productId: string, productName: string, category?: string) => ({\n product_id: productId,\n product_name: productName,\n product_category: category,\n }),\n\n /**\n * Create properties for a form event\n */\n form: (formId: string, formName: string, fields?: Record) => ({\n form_id: formId,\n form_name: formName,\n form_fields: fields,\n }),\n\n /**\n * Create properties for a search event\n */\n search: (query: string, filters?: Record) => ({\n search_query: query,\n search_filters: filters,\n }),\n\n /**\n * Create properties for a navigation event\n */\n navigation: (from: string, to: string) => ({\n from_page: from,\n to_page: to,\n }),\n} as const;\n","export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]',\n '5': 'text-base md:text-lg font-bold leading-[1.3]',\n '6': 'text-base md:text-lg font-semibold leading-[1.4]',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { cn } from '@/components/ui';\n\ninterface RevealProps {\n children: React.ReactNode;\n className?: string;\n threshold?: number;\n delay?: number;\n}\n\nexport default function Reveal({ children, className, threshold = 0.1, delay = 0 }: RevealProps) {\n const [isVisible, setIsVisible] = useState(false);\n const ref = useRef(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.unobserve(entry.target);\n }\n },\n { threshold }\n );\n\n const currentRef = ref.current;\n if (currentRef) {\n observer.observe(currentRef);\n }\n\n return () => {\n if (currentRef) {\n observer.unobserve(currentRef);\n }\n };\n }, [threshold]);\n\n return (\n \n {children}\n
\n );\n}\n","// This file must be bundled in the app's client layer, it shouldn't be directly\n// imported by the server.\n\nexport { callServer } from 'next/dist/client/app-call-server'\nexport { findSourceMapURL } from 'next/dist/client/app-find-source-map-url'\n\n// A noop wrapper to let the Flight client create the server reference.\n// See also: https://github.com/facebook/react/pull/26632\n// eslint-disable-next-line import/no-extraneous-dependencies\nexport { createServerReference } from 'react-server-dom-webpack/client'\n","'use client';\n\nimport React, { useState } from 'react';\nimport { useTranslations } from 'next-intl';\nimport { Button, Heading, Card, Input, Textarea, Label } from '@/components/ui';\nimport { sendContactFormAction } from '@/app/actions/contact';\nimport { useAnalytics } from '@/components/analytics/useAnalytics';\nimport { AnalyticsEvents } from '@/components/analytics/analytics-events';\n\nexport default function ContactForm() {\n const t = useTranslations('Contact');\n const { trackEvent } = useAnalytics();\n const [status, setStatus] = useState<'idle' | 'submitting' | 'success' | 'error'>('idle');\n const [hasStarted, setHasStarted] = useState(false);\n\n const handleFocus = (fieldId: string) => {\n // Initial form start\n if (!hasStarted) {\n setHasStarted(true);\n trackEvent(AnalyticsEvents.FORM_START, {\n form_id: 'contact_form',\n form_name: 'Contact',\n });\n }\n\n // Field-level transparency\n trackEvent(AnalyticsEvents.FORM_FIELD_FOCUS, {\n form_id: 'contact_form',\n field_id: fieldId,\n });\n };\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault();\n setStatus('submitting');\n\n const formData = new FormData(e.currentTarget);\n const email = formData.get('email') as string;\n\n try {\n const result = await sendContactFormAction(formData);\n if (result?.success) {\n trackEvent('contact_form_submission', {\n form_type: 'general',\n email,\n });\n setStatus('success');\n (e.target as HTMLFormElement).reset();\n } else {\n console.error('Contact form submission failed:', { email, error: result.error });\n trackEvent(AnalyticsEvents.FORM_ERROR, {\n form_id: 'contact_form',\n error: result.error || 'submission_failed',\n });\n setStatus('error');\n }\n } catch (error) {\n console.error('Contact form submission error:', { email, error });\n trackEvent(AnalyticsEvents.FORM_ERROR, {\n form_id: 'contact_form',\n error: (error as Error).message || 'unexpected_error',\n });\n setStatus('error');\n }\n }\n\n if (status === 'success') {\n return (\n \n
\n \n \n \n
\n \n {t('form.successTitle') || 'Message Sent!'}\n \n

\n {t('form.successDesc') ||\n 'Thank you for your message. We will get back to you as soon as possible.'}\n

\n \n \n );\n }\n\n if (status === 'error') {\n return (\n \n
\n \n \n \n \n \n
\n \n {t('form.errorTitle') || 'Submission Failed!'}\n \n

\n {t('form.error') || 'Something went wrong. Please check your input and try again.'}\n

\n setStatus('idle')}\n variant=\"destructive\"\n size=\"lg\"\n className=\"w-full\"\n >\n {t('form.tryAgain') || 'Try Again'}\n \n \n );\n }\n\n return (\n \n \n {t('form.title')}\n \n \n {/* Anti-spam Honeypot */}\n \n
\n \n handleFocus('contact-name')}\n required\n />\n
\n
\n \n handleFocus('contact-email')}\n required\n />\n
\n
\n \n handleFocus('contact-message')}\n required\n />\n
\n
\n \n {status === 'submitting' ? (\n \n \n \n \n \n {t('form.submitting') || 'Sending...'}\n \n ) : (\n t('form.submit')\n )}\n \n
\n \n
\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5\":\"sendContactFormAction\"},\"app/actions/contact.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5\",callServer,void 0,findSourceMapURL,\"sendContactFormAction\");export{$$RSC_SERVER_ACTION_0 as sendContactFormAction};","'use client';\n\nimport React from 'react';\nimport dynamic from 'next/dynamic';\n\nconst LeafletMap = dynamic(() => import('@/components/LeafletMap'), {\n ssr: false,\n loading: () => (\n
\n
Loading Map...
\n
\n ),\n});\n\ninterface ContactMapProps {\n address: string;\n lat: number;\n lng: number;\n}\n\nexport default function ContactMap({ address, lat, lng }: ContactMapProps) {\n return ;\n}\n","'use client';\n\nimport React, { useState, useEffect } from 'react';\n\ninterface ObfuscatedEmailProps {\n email: string;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * A component that helps protect email addresses from simple spambots.\n * It uses client-side mounting to render the actual email address,\n * making it harder for static crawlers to harvest.\n */\nexport default function ObfuscatedEmail({ email, className = '', children }: ObfuscatedEmailProps) {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setMounted(true);\n }, []);\n\n if (!mounted) {\n // Show a placeholder or obscured version during SSR\n return (\n \n {children || email.replace('@', ' [at] ').replace(/\\./g, ' [dot] ')}\n \n );\n }\n\n // Once mounted on the client, render the real mailto link\n return (\n
\n {children || email}\n \n );\n}\n"],"names":["callServer","createServerReference","findSourceMapURL"],"mappings":"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","ignoreList":[13]}}] + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/analytics/useAnalytics.ts","../../../../components/analytics/analytics-events.ts","../../../../components/ui/index.ts","../../../../components/ui/Section.tsx","../../../../components/ui/Container.tsx","../../../../components/ui/Heading.tsx","../../../../components/ui/Card.tsx","../../../../components/ui/Badge.tsx","../../../../components/ui/Input.tsx","../../../../components/ui/Textarea.tsx","../../../../components/ui/Label.tsx","../../../../components/ui/Callout.tsx","../../../../components/Reveal.tsx","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-client-wrapper.ts","../../../../components/ContactForm.tsx","../../../../app/actions/data%3A446f89%20%3Ctext/javascript%3E","../../../../components/ContactMap.tsx","../../../../components/ObfuscatedEmail.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback } from 'react';\nimport { getAppServices } from '@/lib/services/create-services';\nimport type { AnalyticsEventProperties } from '@/lib/services/analytics/analytics-service';\n\n/**\n * Custom hook for tracking analytics events with Umami.\n * \n * Provides a convenient way to track custom events throughout your application.\n * \n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * \n * function MyComponent() {\n * const { trackEvent, trackPageview } = useAnalytics();\n * \n * const handleButtonClick = () => {\n * trackEvent('button_click', {\n * button_id: 'cta-primary',\n * page: 'homepage'\n * });\n * };\n * \n * return ;\n * }\n * ```\n * \n * @example\n * ```tsx\n * // Track a custom pageview\n * const { trackPageview } = useAnalytics();\n * trackPageview('/custom-path?param=value');\n * ```\n */\nexport function useAnalytics() {\n const services = getAppServices();\n\n /**\n * Track a custom event with optional properties.\n * \n * @param eventName - The name of the event to track\n * @param properties - Optional event properties (metadata)\n */\n const trackEvent = useCallback(\n (eventName: string, properties?: AnalyticsEventProperties) => {\n services.analytics.track(eventName, properties);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked event:', eventName, properties);\n }\n },\n [services]\n );\n\n /**\n * Track a pageview (useful for custom navigation or SPA routing).\n * \n * @param url - The URL to track (defaults to current location)\n */\n const trackPageview = useCallback(\n (url?: string) => {\n services.analytics.trackPageview(url);\n \n if (process.env.NODE_ENV === 'development') {\n console.log('[Umami] Tracked pageview:', url ?? 'current location');\n }\n },\n [services]\n );\n\n return {\n trackEvent,\n trackPageview,\n };\n}\n","/**\n * Analytics Events Utility\n *\n * Centralized definitions for common analytics events and their properties.\n * This helps maintain consistency across the application and makes it easier\n * to track meaningful events.\n *\n * @example\n * ```tsx\n * import { useAnalytics } from '@/components/analytics/useAnalytics';\n * import { AnalyticsEvents } from '@/components/analytics/analytics-events';\n *\n * function ProductPage() {\n * const { trackEvent } = useAnalytics();\n *\n * const handleAddToCart = (productId: string, productName: string) => {\n * trackEvent(AnalyticsEvents.PRODUCT_ADD_TO_CART, {\n * product_id: productId,\n * product_name: productName,\n * page: 'product-detail'\n * });\n * };\n *\n * return ;\n * }\n * ```\n */\n\nexport const AnalyticsEvents = {\n // Page & Navigation Events\n PAGE_VIEW: 'pageview',\n PAGE_SCROLL: 'page_scroll',\n PAGE_EXIT: 'page_exit',\n SCROLL_DEPTH: 'scroll_depth',\n\n // User Interaction Events\n BUTTON_CLICK: 'button_click',\n LINK_CLICK: 'link_click',\n FORM_SUBMIT: 'form_submit',\n FORM_START: 'form_start',\n FORM_ERROR: 'form_error',\n FORM_FIELD_FOCUS: 'form_field_focus',\n\n // E-commerce Events\n PRODUCT_VIEW: 'product_view',\n PRODUCT_ADD_TO_CART: 'product_add_to_cart',\n PRODUCT_REMOVE_FROM_CART: 'product_remove_from_cart',\n PRODUCT_PURCHASE: 'product_purchase',\n PRODUCT_WISHLIST_ADD: 'product_wishlist_add',\n PRODUCT_WISHLIST_REMOVE: 'product_wishlist_remove',\n PRODUCT_TAB_SWITCH: 'product_tab_switch',\n\n // Search & Filter Events\n SEARCH: 'search',\n FILTER_APPLY: 'filter_apply',\n FILTER_CLEAR: 'filter_clear',\n\n // User Account Events\n USER_SIGNUP: 'user_signup',\n USER_LOGIN: 'user_login',\n USER_LOGOUT: 'user_logout',\n USER_PROFILE_UPDATE: 'user_profile_update',\n\n // Content Events\n BLOG_POST_VIEW: 'blog_post_view',\n VIDEO_PLAY: 'video_play',\n VIDEO_PAUSE: 'video_pause',\n VIDEO_COMPLETE: 'video_complete',\n DOWNLOAD: 'download',\n\n // UI Interaction Events\n MODAL_OPEN: 'modal_open',\n MODAL_CLOSE: 'modal_close',\n TOGGLE_SWITCH: 'toggle_switch',\n ACCORDION_TOGGLE: 'accordion_toggle',\n TAB_SWITCH: 'tab_switch',\n TOC_CLICK: 'toc_click',\n\n // Error & Performance Events\n ERROR: 'error',\n PERFORMANCE: 'performance',\n API_ERROR: 'api_error',\n API_SUCCESS: 'api_success',\n\n // Custom Business Events\n QUOTE_REQUEST: 'quote_request',\n CONTACT_FORM_SUBMIT: 'contact_form_submit',\n NEWSLETTER_SUBSCRIBE: 'newsletter_subscribe',\n BROCHURE_DOWNLOAD: 'brochure_download',\n} as const;\n\n/**\n * Type-safe event properties for common events\n */\nexport type AnalyticsEventName = (typeof AnalyticsEvents)[keyof typeof AnalyticsEvents];\n\n/**\n * Common event property helpers\n */\nexport const AnalyticsEventProperties = {\n /**\n * Create properties for a product event\n */\n product: (productId: string, productName: string, category?: string) => ({\n product_id: productId,\n product_name: productName,\n product_category: category,\n }),\n\n /**\n * Create properties for a form event\n */\n form: (formId: string, formName: string, fields?: Record) => ({\n form_id: formId,\n form_name: formName,\n form_fields: fields,\n }),\n\n /**\n * Create properties for a search event\n */\n search: (query: string, filters?: Record) => ({\n search_query: query,\n search_filters: filters,\n }),\n\n /**\n * Create properties for a navigation event\n */\n navigation: (from: string, to: string) => ({\n from_page: from,\n to_page: to,\n }),\n} as const;\n","export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-snug',\n '5': 'text-base md:text-lg font-bold leading-normal',\n '6': 'text-base md:text-lg font-semibold leading-normal',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { cn } from '@/components/ui';\n\ninterface RevealProps {\n children: React.ReactNode;\n className?: string;\n threshold?: number;\n delay?: number;\n}\n\nexport default function Reveal({ children, className, threshold = 0.1, delay = 0 }: RevealProps) {\n const [isVisible, setIsVisible] = useState(false);\n const ref = useRef(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.unobserve(entry.target);\n }\n },\n { threshold }\n );\n\n const currentRef = ref.current;\n if (currentRef) {\n observer.observe(currentRef);\n }\n\n return () => {\n if (currentRef) {\n observer.unobserve(currentRef);\n }\n };\n }, [threshold]);\n\n return (\n \n {children}\n
\n );\n}\n","// This file must be bundled in the app's client layer, it shouldn't be directly\n// imported by the server.\n\nexport { callServer } from 'next/dist/client/app-call-server'\nexport { findSourceMapURL } from 'next/dist/client/app-find-source-map-url'\n\n// A noop wrapper to let the Flight client create the server reference.\n// See also: https://github.com/facebook/react/pull/26632\n// eslint-disable-next-line import/no-extraneous-dependencies\nexport { createServerReference } from 'react-server-dom-webpack/client'\n","'use client';\n\nimport React, { useState } from 'react';\nimport { useTranslations } from 'next-intl';\nimport { Button, Heading, Card, Input, Textarea, Label } from '@/components/ui';\nimport { sendContactFormAction } from '@/app/actions/contact';\nimport { useAnalytics } from '@/components/analytics/useAnalytics';\nimport { AnalyticsEvents } from '@/components/analytics/analytics-events';\n\nexport default function ContactForm() {\n const t = useTranslations('Contact');\n const { trackEvent } = useAnalytics();\n const [status, setStatus] = useState<'idle' | 'submitting' | 'success' | 'error'>('idle');\n const [hasStarted, setHasStarted] = useState(false);\n\n const handleFocus = (fieldId: string) => {\n // Initial form start\n if (!hasStarted) {\n setHasStarted(true);\n trackEvent(AnalyticsEvents.FORM_START, {\n form_id: 'contact_form',\n form_name: 'Contact',\n });\n }\n\n // Field-level transparency\n trackEvent(AnalyticsEvents.FORM_FIELD_FOCUS, {\n form_id: 'contact_form',\n field_id: fieldId,\n });\n };\n\n async function handleSubmit(e: React.FormEvent) {\n e.preventDefault();\n setStatus('submitting');\n\n const formData = new FormData(e.currentTarget);\n const email = formData.get('email') as string;\n\n try {\n const result = await sendContactFormAction(formData);\n if (result?.success) {\n trackEvent('contact_form_submission', {\n form_type: 'general',\n email,\n });\n setStatus('success');\n (e.target as HTMLFormElement).reset();\n } else {\n console.error('Contact form submission failed:', { email, error: result.error });\n trackEvent(AnalyticsEvents.FORM_ERROR, {\n form_id: 'contact_form',\n error: result.error || 'submission_failed',\n });\n setStatus('error');\n }\n } catch (error) {\n console.error('Contact form submission error:', { email, error });\n trackEvent(AnalyticsEvents.FORM_ERROR, {\n form_id: 'contact_form',\n error: (error as Error).message || 'unexpected_error',\n });\n setStatus('error');\n }\n }\n\n if (status === 'success') {\n return (\n \n
\n \n \n \n
\n \n {t('form.successTitle') || 'Message Sent!'}\n \n

\n {t('form.successDesc') ||\n 'Thank you for your message. We will get back to you as soon as possible.'}\n

\n \n \n );\n }\n\n if (status === 'error') {\n return (\n \n
\n \n \n \n \n \n
\n \n {t('form.errorTitle') || 'Submission Failed!'}\n \n

\n {t('form.error') || 'Something went wrong. Please check your input and try again.'}\n

\n setStatus('idle')}\n variant=\"destructive\"\n size=\"lg\"\n className=\"w-full\"\n >\n {t('form.tryAgain') || 'Try Again'}\n \n \n );\n }\n\n return (\n \n \n {t('form.title')}\n \n \n {/* Anti-spam Honeypot */}\n \n
\n \n handleFocus('contact-name')}\n required\n />\n
\n
\n \n handleFocus('contact-email')}\n required\n />\n
\n
\n \n handleFocus('contact-message')}\n required\n />\n
\n
\n \n {status === 'submitting' ? (\n \n \n \n \n \n {t('form.submitting') || 'Sending...'}\n \n ) : (\n t('form.submit')\n )}\n \n
\n \n
\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5\":\"sendContactFormAction\"},\"app/actions/contact.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5\",callServer,void 0,findSourceMapURL,\"sendContactFormAction\");export{$$RSC_SERVER_ACTION_0 as sendContactFormAction};","'use client';\n\nimport React from 'react';\nimport dynamic from 'next/dynamic';\n\nconst LeafletMap = dynamic(() => import('@/components/LeafletMap'), {\n ssr: false,\n loading: () => (\n
\n
Loading Map...
\n
\n ),\n});\n\ninterface ContactMapProps {\n address: string;\n lat: number;\n lng: number;\n}\n\nexport default function ContactMap({ address, lat, lng }: ContactMapProps) {\n return ;\n}\n","'use client';\n\nimport React, { useState, useEffect } from 'react';\n\ninterface ObfuscatedEmailProps {\n email: string;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * A component that helps protect email addresses from simple spambots.\n * It uses client-side mounting to render the actual email address,\n * making it harder for static crawlers to harvest.\n */\nexport default function ObfuscatedEmail({ email, className = '', children }: ObfuscatedEmailProps) {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setMounted(true);\n }, []);\n\n if (!mounted) {\n // Show a placeholder or obscured version during SSR\n return (\n \n {children || email.replace('@', ' [at] ').replace(/\\./g, ' [dot] ')}\n \n );\n }\n\n // Once mounted on the client, render the real mailto link\n return (\n \n {children || email}\n \n );\n}\n"],"names":["callServer","createServerReference","findSourceMapURL"],"mappings":"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","ignoreList":[13]}}] } \ No newline at end of file diff --git a/.next/server/chunks/ssr/components_5d55bae9._.js b/.next/server/chunks/ssr/components_5d55bae9._.js index bc2bc839f..093f4923e 100644 --- a/.next/server/chunks/ssr/components_5d55bae9._.js +++ b/.next/server/chunks/ssr/components_5d55bae9._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="43e96792-ea07-2dfb-fdae-df98cc56aa4b")}catch(e){}}(); -module.exports=[594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},281104,a=>{"use strict";var b=a.i(150765),c=a.i(5423);function d({currentPage:a,totalPages:d,locale:e}){let f=(0,c.useRouter)();return(0,b.useEffect)(()=>{let b=b=>{document.activeElement?.tagName!=="INPUT"&&document.activeElement?.tagName!=="TEXTAREA"&&document.activeElement?.tagName!=="SELECT"&&("ArrowLeft"===b.key&&a>1?f.push(`/${e}/blog?page=${a-1}`):"ArrowRight"===b.key&&awindow.removeEventListener("keydown",b)},[a,d,e,f]),null}a.s(["BlogPaginationKeyboardObserver",()=>d])}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="371097cc-74ee-6094-693e-8d3b67267b07")}catch(e){}}(); +module.exports=[594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},281104,a=>{"use strict";var b=a.i(150765),c=a.i(5423);function d({currentPage:a,totalPages:d,locale:e}){let f=(0,c.useRouter)();return(0,b.useEffect)(()=>{let b=b=>{document.activeElement?.tagName!=="INPUT"&&document.activeElement?.tagName!=="TEXTAREA"&&document.activeElement?.tagName!=="SELECT"&&("ArrowLeft"===b.key&&a>1?f.push(`/${e}/blog?page=${a-1}`):"ArrowRight"===b.key&&awindow.removeEventListener("keydown",b)},[a,d,e,f]),null}a.s(["BlogPaginationKeyboardObserver",()=>d])}]; -//# debugId=43e96792-ea07-2dfb-fdae-df98cc56aa4b +//# debugId=371097cc-74ee-6094-693e-8d3b67267b07 //# sourceMappingURL=components_5d55bae9._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/components_5d55bae9._.js.map b/.next/server/chunks/ssr/components_5d55bae9._.js.map index c2c42e67d..219d842d7 100644 --- a/.next/server/chunks/ssr/components_5d55bae9._.js.map +++ b/.next/server/chunks/ssr/components_5d55bae9._.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": [], - "debugId": "43e96792-ea07-2dfb-fdae-df98cc56aa4b", + "debugId": "371097cc-74ee-6094-693e-8d3b67267b07", "sections": [ - {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/ui/index.ts","../../../../components/ui/Section.tsx","../../../../components/ui/Container.tsx","../../../../components/ui/Heading.tsx","../../../../components/ui/Card.tsx","../../../../components/ui/Badge.tsx","../../../../components/ui/Input.tsx","../../../../components/ui/Textarea.tsx","../../../../components/ui/Label.tsx","../../../../components/ui/Callout.tsx","../../../../components/Reveal.tsx","../../../../components/blog/BlogPaginationKeyboardObserver.tsx"],"sourcesContent":["export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]',\n '5': 'text-base md:text-lg font-bold leading-[1.3]',\n '6': 'text-base md:text-lg font-semibold leading-[1.4]',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { cn } from '@/components/ui';\n\ninterface RevealProps {\n children: React.ReactNode;\n className?: string;\n threshold?: number;\n delay?: number;\n}\n\nexport default function Reveal({ children, className, threshold = 0.1, delay = 0 }: RevealProps) {\n const [isVisible, setIsVisible] = useState(false);\n const ref = useRef(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.unobserve(entry.target);\n }\n },\n { threshold }\n );\n\n const currentRef = ref.current;\n if (currentRef) {\n observer.observe(currentRef);\n }\n\n return () => {\n if (currentRef) {\n observer.unobserve(currentRef);\n }\n };\n }, [threshold]);\n\n return (\n \n {children}\n \n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useRouter } from 'next/navigation';\n\ninterface BlogPaginationProps {\n currentPage: number;\n totalPages: number;\n locale: string;\n}\n\nexport function BlogPaginationKeyboardObserver({\n currentPage,\n totalPages,\n locale,\n}: BlogPaginationProps) {\n const router = useRouter();\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n // Don't trigger if user is typing in an input\n if (\n document.activeElement?.tagName === 'INPUT' ||\n document.activeElement?.tagName === 'TEXTAREA' ||\n document.activeElement?.tagName === 'SELECT'\n ) {\n return;\n }\n\n if (e.key === 'ArrowLeft' && currentPage > 1) {\n router.push(`/${locale}/blog?page=${currentPage - 1}`);\n } else if (e.key === 'ArrowRight' && currentPage < totalPages) {\n router.push(`/${locale}/blog?page=${currentPage + 1}`);\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [currentPage, totalPages, locale, router]);\n\n return null;\n}\n"],"names":[],"mappings":"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"}}] + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/ui/index.ts","../../../../components/ui/Section.tsx","../../../../components/ui/Container.tsx","../../../../components/ui/Heading.tsx","../../../../components/ui/Card.tsx","../../../../components/ui/Badge.tsx","../../../../components/ui/Input.tsx","../../../../components/ui/Textarea.tsx","../../../../components/ui/Label.tsx","../../../../components/ui/Callout.tsx","../../../../components/Reveal.tsx","../../../../components/blog/BlogPaginationKeyboardObserver.tsx"],"sourcesContent":["export * from './utils';\nexport * from './Button';\nexport * from './Section';\nexport * from './Container';\nexport * from './Heading';\nexport * from './Card';\nexport * from './Badge';\nexport * from './Input';\nexport * from './Textarea';\nexport * from './Label';\nexport * from './Callout';\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Section({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Container({ className, children, ...props }: React.HTMLAttributes) {\n return (\n
\n {children}\n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-snug',\n '5': 'text-base md:text-lg font-bold leading-normal',\n '6': 'text-base md:text-lg font-semibold leading-normal',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CardProps extends React.HTMLAttributes {\n tag?: 'div' | 'article' | 'section' | 'aside' | 'header' | 'footer' | 'nav' | 'main';\n}\n\nexport function Card({ className, children, tag: Tag = 'div', ...props }: CardProps) {\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport function Badge({ children, className, variant = 'primary' }: { children: React.ReactNode, className?: string, variant?: 'primary' | 'accent' | 'neutral' | 'saturated' }) {\n const variants = {\n primary: 'bg-primary-light text-primary',\n accent: 'bg-accent-light text-accent-dark',\n neutral: 'bg-neutral-medium text-text-secondary',\n saturated: 'bg-saturated text-white',\n };\n \n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface InputProps extends React.InputHTMLAttributes {\n className?: string;\n}\n\nexport function Input({ className, ...props }: InputProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes {\n className?: string;\n}\n\nexport function Textarea({ className, ...props }: TextareaProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport interface LabelProps extends React.LabelHTMLAttributes {\n className?: string;\n}\n\nexport function Label({ className, ...props }: LabelProps) {\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\ninterface CalloutProps {\n type?: 'info' | 'warning' | 'success' | 'tip';\n title?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nconst icons = {\n info: (\n \n \n \n ),\n warning: (\n \n \n \n ),\n success: (\n \n \n \n ),\n tip: (\n \n \n \n ),\n};\n\nconst styles = {\n info: 'bg-blue-50 border-blue-200 text-blue-900',\n warning: 'bg-yellow-50 border-yellow-200 text-yellow-900',\n success: 'bg-green-50 border-green-200 text-green-900',\n tip: 'bg-purple-50 border-purple-200 text-purple-900',\n};\n\nconst iconColors = {\n info: 'text-blue-500',\n warning: 'text-yellow-500',\n success: 'text-green-500',\n tip: 'text-purple-500',\n};\n\nexport function Callout({ type = 'info', title, children, className }: CalloutProps) {\n return (\n
\n
\n
\n {icons[type]}\n
\n
\n {title && (\n

{title}

\n )}\n
\n {children}\n
\n
\n
\n
\n );\n}\n","'use client';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { cn } from '@/components/ui';\n\ninterface RevealProps {\n children: React.ReactNode;\n className?: string;\n threshold?: number;\n delay?: number;\n}\n\nexport default function Reveal({ children, className, threshold = 0.1, delay = 0 }: RevealProps) {\n const [isVisible, setIsVisible] = useState(false);\n const ref = useRef(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.unobserve(entry.target);\n }\n },\n { threshold }\n );\n\n const currentRef = ref.current;\n if (currentRef) {\n observer.observe(currentRef);\n }\n\n return () => {\n if (currentRef) {\n observer.unobserve(currentRef);\n }\n };\n }, [threshold]);\n\n return (\n \n {children}\n \n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useRouter } from 'next/navigation';\n\ninterface BlogPaginationProps {\n currentPage: number;\n totalPages: number;\n locale: string;\n}\n\nexport function BlogPaginationKeyboardObserver({\n currentPage,\n totalPages,\n locale,\n}: BlogPaginationProps) {\n const router = useRouter();\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n // Don't trigger if user is typing in an input\n if (\n document.activeElement?.tagName === 'INPUT' ||\n document.activeElement?.tagName === 'TEXTAREA' ||\n document.activeElement?.tagName === 'SELECT'\n ) {\n return;\n }\n\n if (e.key === 'ArrowLeft' && currentPage > 1) {\n router.push(`/${locale}/blog?page=${currentPage - 1}`);\n } else if (e.key === 'ArrowRight' && currentPage < totalPages) {\n router.push(`/${locale}/blog?page=${currentPage + 1}`);\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [currentPage, totalPages, locale, router]);\n\n return null;\n}\n"],"names":[],"mappings":"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"}}] } \ No newline at end of file diff --git a/.next/server/chunks/ssr/components_ui_c944c65b._.js b/.next/server/chunks/ssr/components_ui_c944c65b._.js index 0f01f9c41..ffecdb132 100644 --- a/.next/server/chunks/ssr/components_ui_c944c65b._.js +++ b/.next/server/chunks/ssr/components_ui_c944c65b._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="fc4d0ef2-948e-142d-5b3b-af74de050af8")}catch(e){}}(); -module.exports=[976957,a=>{"use strict";let b=(a=new Map,b=null,c)=>({nextPart:a,validators:b,classGroupId:c}),c=[],d=(a,b,c)=>{if(0==a.length-b)return c.classGroupId;let e=a[b],f=c.nextPart.get(e);if(f){let c=d(a,b+1,f);if(c)return c}let g=c.validators;if(null===g)return;let h=0===b?a.join("-"):a.slice(b).join("-"),i=g.length;for(let a=0;a{let d=b();for(let b in a)f(a[b],d,b,c);return d},f=(a,b,c,d)=>{let e=a.length;for(let f=0;f{"string"==typeof a?h(a,b,c):"function"==typeof a?i(a,b,c,d):j(a,b,c,d)},h=(a,b,c)=>{(""===a?b:k(b,a)).classGroupId=c},i=(a,b,c,d)=>{l(a)?f(a(d),b,c,d):(null===b.validators&&(b.validators=[]),b.validators.push({classGroupId:c,validator:a}))},j=(a,b,c,d)=>{let e=Object.entries(a),g=e.length;for(let a=0;a{let d=a,e=c.split("-"),f=e.length;for(let a=0;a"isThemeGetter"in a&&!0===a.isThemeGetter,m=[],n=(a,b,c,d,e)=>({modifiers:a,hasImportantModifier:b,baseClassName:c,maybePostfixModifierPosition:d,isExternal:e}),o=/\s+/,p=a=>{let b;if("string"==typeof a)return a;let c="";for(let d=0;d{let b=b=>b[a]||q;return b.isThemeGetter=!0,b},s=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,t=/^\((?:(\w[\w-]*):)?(.+)\)$/i,u=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,v=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,w=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,x=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,y=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,z=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,A=a=>u.test(a),B=a=>!!a&&!Number.isNaN(Number(a)),C=a=>!!a&&Number.isInteger(Number(a)),D=a=>a.endsWith("%")&&B(a.slice(0,-1)),E=a=>v.test(a),F=()=>!0,G=a=>w.test(a)&&!x.test(a),H=()=>!1,I=a=>y.test(a),J=a=>z.test(a),K=a=>!M(a)&&!U(a),L=a=>aa(a,ae,H),M=a=>s.test(a),N=a=>aa(a,af,G),O=a=>aa(a,ag,B),P=a=>aa(a,ai,F),Q=a=>aa(a,ah,H),R=a=>aa(a,ac,H),S=a=>aa(a,ad,J),T=a=>aa(a,aj,I),U=a=>t.test(a),V=a=>ab(a,af),W=a=>ab(a,ah),X=a=>ab(a,ac),Y=a=>ab(a,ae),Z=a=>ab(a,ad),$=a=>ab(a,aj,!0),_=a=>ab(a,ai,!0),aa=(a,b,c)=>{let d=s.exec(a);return!!d&&(d[1]?b(d[1]):c(d[2]))},ab=(a,b,c=!1)=>{let d=t.exec(a);return!!d&&(d[1]?b(d[1]):c)},ac=a=>"position"===a||"percentage"===a,ad=a=>"image"===a||"url"===a,ae=a=>"length"===a||"size"===a||"bg-size"===a,af=a=>"length"===a,ag=a=>"number"===a,ah=a=>"family-name"===a,ai=a=>"number"===a||"weight"===a,aj=a=>"shadow"===a,ak=((a,...b)=>{let f,g,h,i,j=a=>{let b=g(a);if(b)return b;let c=((a,b)=>{let{parseClassName:c,getClassGroupId:d,getConflictingClassGroupIds:e,sortModifiers:f}=b,g=[],h=a.trim().split(o),i="";for(let a=h.length-1;a>=0;a-=1){let b=h[a],{isExternal:j,modifiers:k,hasImportantModifier:l,baseClassName:m,maybePostfixModifierPosition:n}=c(b);if(j){i=b+(i.length>0?" "+i:i);continue}let o=!!n,p=d(o?m.substring(0,n):m);if(!p){if(!o||!(p=d(m))){i=b+(i.length>0?" "+i:i);continue}o=!1}let q=0===k.length?"":1===k.length?k[0]:f(k).join(":"),r=l?q+"!":q,s=r+p;if(g.indexOf(s)>-1)continue;g.push(s);let t=e(p,o);for(let a=0;a0?" "+i:i)}return i})(a,f);return h(a,c),c};return i=k=>{var l;let o;return g=(f={cache:(a=>{if(a<1)return{get:()=>void 0,set:()=>{}};let b=0,c=Object.create(null),d=Object.create(null),e=(e,f)=>{c[e]=f,++b>a&&(b=0,d=c,c=Object.create(null))};return{get(a){let b=c[a];return void 0!==b?b:void 0!==(b=d[a])?(e(a,b),b):void 0},set(a,b){a in c?c[a]=b:e(a,b)}}})((l=b.reduce((a,b)=>b(a),a())).cacheSize),parseClassName:(a=>{let{prefix:b,experimentalParseClassName:c}=a,d=a=>{let b,c=[],d=0,e=0,f=0,g=a.length;for(let h=0;hf?b-f:void 0)};if(b){let a=b+":",c=d;d=b=>b.startsWith(a)?c(b.slice(a.length)):n(m,!1,b,void 0,!0)}if(c){let a=d;d=b=>c({className:b,parseClassName:a})}return d})(l),sortModifiers:(o=new Map,l.orderSensitiveModifiers.forEach((a,b)=>{o.set(a,1e6+b)}),a=>{let b=[],c=[];for(let d=0;d0&&(c.sort(),b.push(...c),c=[]),b.push(e)):c.push(e)}return c.length>0&&(c.sort(),b.push(...c)),b}),...(a=>{let b=(a=>{let{theme:b,classGroups:c}=a;return e(c,b)})(a),{conflictingClassGroups:f,conflictingClassGroupModifiers:g}=a;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]")){var c;let b,d,e;return -1===(c=a).slice(1,-1).indexOf(":")?void 0:(d=(b=c.slice(1,-1)).indexOf(":"),(e=b.slice(0,d))?"arbitrary.."+e:void 0)}let e=a.split("-"),f=+(""===e[0]&&e.length>1);return d(e,f,b)},getConflictingClassGroupIds:(a,b)=>{if(b){let b=g[a],d=f[a];if(b){if(d){let a=Array(d.length+b.length);for(let b=0;bi(((...a)=>{let b,c,d=0,e="";for(;d{let a=r("color"),b=r("font"),c=r("text"),d=r("font-weight"),e=r("tracking"),f=r("leading"),g=r("breakpoint"),h=r("container"),i=r("spacing"),j=r("radius"),k=r("shadow"),l=r("inset-shadow"),m=r("text-shadow"),n=r("drop-shadow"),o=r("blur"),p=r("perspective"),q=r("aspect"),s=r("ease"),t=r("animate"),u=()=>["auto","avoid","all","avoid-page","page","left","right","column"],v=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],w=()=>[...v(),U,M],x=()=>["auto","hidden","clip","visible","scroll"],y=()=>["auto","contain","none"],z=()=>[U,M,i],G=()=>[A,"full","auto",...z()],H=()=>[C,"none","subgrid",U,M],I=()=>["auto",{span:["full",C,U,M]},C,U,M],J=()=>[C,"auto",U,M],aa=()=>["auto","min","max","fr",U,M],ab=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ac=()=>["start","end","center","stretch","center-safe","end-safe"],ad=()=>["auto",...z()],ae=()=>[A,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],af=()=>[A,"screen","full","dvw","lvw","svw","min","max","fit",...z()],ag=()=>[A,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],ah=()=>[a,U,M],ai=()=>[...v(),X,R,{position:[U,M]}],aj=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ak=()=>["auto","cover","contain",Y,L,{size:[U,M]}],al=()=>[D,V,N],am=()=>["","none","full",j,U,M],an=()=>["",B,V,N],ao=()=>["solid","dashed","dotted","double"],ap=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],aq=()=>[B,D,X,R],ar=()=>["","none",o,U,M],as=()=>["none",B,U,M],at=()=>["none",B,U,M],au=()=>[B,U,M],av=()=>[A,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[E],breakpoint:[E],color:[F],container:[E],"drop-shadow":[E],ease:["in","out","in-out"],font:[K],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[E],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[E],shadow:[E],spacing:["px",B],text:[E],"text-shadow":[E],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",A,M,U,q]}],container:["container"],columns:[{columns:[B,M,U,h]}],"break-after":[{"break-after":u()}],"break-before":[{"break-before":u()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:w()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:y()}],"overscroll-x":[{"overscroll-x":y()}],"overscroll-y":[{"overscroll-y":y()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:G()}],"inset-x":[{"inset-x":G()}],"inset-y":[{"inset-y":G()}],start:[{"inset-s":G(),start:G()}],end:[{"inset-e":G(),end:G()}],"inset-bs":[{"inset-bs":G()}],"inset-be":[{"inset-be":G()}],top:[{top:G()}],right:[{right:G()}],bottom:[{bottom:G()}],left:[{left:G()}],visibility:["visible","invisible","collapse"],z:[{z:[C,"auto",U,M]}],basis:[{basis:[A,"full","auto",h,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[B,A,"auto","initial","none",M]}],grow:[{grow:["",B,U,M]}],shrink:[{shrink:["",B,U,M]}],order:[{order:[C,"first","last","none",U,M]}],"grid-cols":[{"grid-cols":H()}],"col-start-end":[{col:I()}],"col-start":[{"col-start":J()}],"col-end":[{"col-end":J()}],"grid-rows":[{"grid-rows":H()}],"row-start-end":[{row:I()}],"row-start":[{"row-start":J()}],"row-end":[{"row-end":J()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":aa()}],"auto-rows":[{"auto-rows":aa()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...ab(),"normal"]}],"justify-items":[{"justify-items":[...ac(),"normal"]}],"justify-self":[{"justify-self":["auto",...ac()]}],"align-content":[{content:["normal",...ab()]}],"align-items":[{items:[...ac(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ac(),{baseline:["","last"]}]}],"place-content":[{"place-content":ab()}],"place-items":[{"place-items":[...ac(),"baseline"]}],"place-self":[{"place-self":["auto",...ac()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:ad()}],mx:[{mx:ad()}],my:[{my:ad()}],ms:[{ms:ad()}],me:[{me:ad()}],mbs:[{mbs:ad()}],mbe:[{mbe:ad()}],mt:[{mt:ad()}],mr:[{mr:ad()}],mb:[{mb:ad()}],ml:[{ml:ad()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...af()]}],"min-inline-size":[{"min-inline":["auto",...af()]}],"max-inline-size":[{"max-inline":["none",...af()]}],"block-size":[{block:["auto",...ag()]}],"min-block-size":[{"min-block":["auto",...ag()]}],"max-block-size":[{"max-block":["none",...ag()]}],w:[{w:[h,"screen",...ae()]}],"min-w":[{"min-w":[h,"screen","none",...ae()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[g]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",c,V,N]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,_,P]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",D,M]}],"font-family":[{font:[W,Q,b]}],"font-features":[{"font-features":[M]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[e,U,M]}],"line-clamp":[{"line-clamp":[B,"none",U,O]}],leading:[{leading:[f,...z()]}],"list-image":[{"list-image":["none",U,M]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",U,M]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ah()}],"text-color":[{text:ah()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ao(),"wavy"]}],"text-decoration-thickness":[{decoration:[B,"from-font","auto",U,N]}],"text-decoration-color":[{decoration:ah()}],"underline-offset":[{"underline-offset":[B,"auto",U,M]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",U,M]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",U,M]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ai()}],"bg-repeat":[{bg:aj()}],"bg-size":[{bg:ak()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},C,U,M],radial:["",U,M],conic:[C,U,M]},Z,S]}],"bg-color":[{bg:ah()}],"gradient-from-pos":[{from:al()}],"gradient-via-pos":[{via:al()}],"gradient-to-pos":[{to:al()}],"gradient-from":[{from:ah()}],"gradient-via":[{via:ah()}],"gradient-to":[{to:ah()}],rounded:[{rounded:am()}],"rounded-s":[{"rounded-s":am()}],"rounded-e":[{"rounded-e":am()}],"rounded-t":[{"rounded-t":am()}],"rounded-r":[{"rounded-r":am()}],"rounded-b":[{"rounded-b":am()}],"rounded-l":[{"rounded-l":am()}],"rounded-ss":[{"rounded-ss":am()}],"rounded-se":[{"rounded-se":am()}],"rounded-ee":[{"rounded-ee":am()}],"rounded-es":[{"rounded-es":am()}],"rounded-tl":[{"rounded-tl":am()}],"rounded-tr":[{"rounded-tr":am()}],"rounded-br":[{"rounded-br":am()}],"rounded-bl":[{"rounded-bl":am()}],"border-w":[{border:an()}],"border-w-x":[{"border-x":an()}],"border-w-y":[{"border-y":an()}],"border-w-s":[{"border-s":an()}],"border-w-e":[{"border-e":an()}],"border-w-bs":[{"border-bs":an()}],"border-w-be":[{"border-be":an()}],"border-w-t":[{"border-t":an()}],"border-w-r":[{"border-r":an()}],"border-w-b":[{"border-b":an()}],"border-w-l":[{"border-l":an()}],"divide-x":[{"divide-x":an()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":an()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ao(),"hidden","none"]}],"divide-style":[{divide:[...ao(),"hidden","none"]}],"border-color":[{border:ah()}],"border-color-x":[{"border-x":ah()}],"border-color-y":[{"border-y":ah()}],"border-color-s":[{"border-s":ah()}],"border-color-e":[{"border-e":ah()}],"border-color-bs":[{"border-bs":ah()}],"border-color-be":[{"border-be":ah()}],"border-color-t":[{"border-t":ah()}],"border-color-r":[{"border-r":ah()}],"border-color-b":[{"border-b":ah()}],"border-color-l":[{"border-l":ah()}],"divide-color":[{divide:ah()}],"outline-style":[{outline:[...ao(),"none","hidden"]}],"outline-offset":[{"outline-offset":[B,U,M]}],"outline-w":[{outline:["",B,V,N]}],"outline-color":[{outline:ah()}],shadow:[{shadow:["","none",k,$,T]}],"shadow-color":[{shadow:ah()}],"inset-shadow":[{"inset-shadow":["none",l,$,T]}],"inset-shadow-color":[{"inset-shadow":ah()}],"ring-w":[{ring:an()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ah()}],"ring-offset-w":[{"ring-offset":[B,N]}],"ring-offset-color":[{"ring-offset":ah()}],"inset-ring-w":[{"inset-ring":an()}],"inset-ring-color":[{"inset-ring":ah()}],"text-shadow":[{"text-shadow":["none",m,$,T]}],"text-shadow-color":[{"text-shadow":ah()}],opacity:[{opacity:[B,U,M]}],"mix-blend":[{"mix-blend":[...ap(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ap()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[B]}],"mask-image-linear-from-pos":[{"mask-linear-from":aq()}],"mask-image-linear-to-pos":[{"mask-linear-to":aq()}],"mask-image-linear-from-color":[{"mask-linear-from":ah()}],"mask-image-linear-to-color":[{"mask-linear-to":ah()}],"mask-image-t-from-pos":[{"mask-t-from":aq()}],"mask-image-t-to-pos":[{"mask-t-to":aq()}],"mask-image-t-from-color":[{"mask-t-from":ah()}],"mask-image-t-to-color":[{"mask-t-to":ah()}],"mask-image-r-from-pos":[{"mask-r-from":aq()}],"mask-image-r-to-pos":[{"mask-r-to":aq()}],"mask-image-r-from-color":[{"mask-r-from":ah()}],"mask-image-r-to-color":[{"mask-r-to":ah()}],"mask-image-b-from-pos":[{"mask-b-from":aq()}],"mask-image-b-to-pos":[{"mask-b-to":aq()}],"mask-image-b-from-color":[{"mask-b-from":ah()}],"mask-image-b-to-color":[{"mask-b-to":ah()}],"mask-image-l-from-pos":[{"mask-l-from":aq()}],"mask-image-l-to-pos":[{"mask-l-to":aq()}],"mask-image-l-from-color":[{"mask-l-from":ah()}],"mask-image-l-to-color":[{"mask-l-to":ah()}],"mask-image-x-from-pos":[{"mask-x-from":aq()}],"mask-image-x-to-pos":[{"mask-x-to":aq()}],"mask-image-x-from-color":[{"mask-x-from":ah()}],"mask-image-x-to-color":[{"mask-x-to":ah()}],"mask-image-y-from-pos":[{"mask-y-from":aq()}],"mask-image-y-to-pos":[{"mask-y-to":aq()}],"mask-image-y-from-color":[{"mask-y-from":ah()}],"mask-image-y-to-color":[{"mask-y-to":ah()}],"mask-image-radial":[{"mask-radial":[U,M]}],"mask-image-radial-from-pos":[{"mask-radial-from":aq()}],"mask-image-radial-to-pos":[{"mask-radial-to":aq()}],"mask-image-radial-from-color":[{"mask-radial-from":ah()}],"mask-image-radial-to-color":[{"mask-radial-to":ah()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":v()}],"mask-image-conic-pos":[{"mask-conic":[B]}],"mask-image-conic-from-pos":[{"mask-conic-from":aq()}],"mask-image-conic-to-pos":[{"mask-conic-to":aq()}],"mask-image-conic-from-color":[{"mask-conic-from":ah()}],"mask-image-conic-to-color":[{"mask-conic-to":ah()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ai()}],"mask-repeat":[{mask:aj()}],"mask-size":[{mask:ak()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",U,M]}],filter:[{filter:["","none",U,M]}],blur:[{blur:ar()}],brightness:[{brightness:[B,U,M]}],contrast:[{contrast:[B,U,M]}],"drop-shadow":[{"drop-shadow":["","none",n,$,T]}],"drop-shadow-color":[{"drop-shadow":ah()}],grayscale:[{grayscale:["",B,U,M]}],"hue-rotate":[{"hue-rotate":[B,U,M]}],invert:[{invert:["",B,U,M]}],saturate:[{saturate:[B,U,M]}],sepia:[{sepia:["",B,U,M]}],"backdrop-filter":[{"backdrop-filter":["","none",U,M]}],"backdrop-blur":[{"backdrop-blur":ar()}],"backdrop-brightness":[{"backdrop-brightness":[B,U,M]}],"backdrop-contrast":[{"backdrop-contrast":[B,U,M]}],"backdrop-grayscale":[{"backdrop-grayscale":["",B,U,M]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[B,U,M]}],"backdrop-invert":[{"backdrop-invert":["",B,U,M]}],"backdrop-opacity":[{"backdrop-opacity":[B,U,M]}],"backdrop-saturate":[{"backdrop-saturate":[B,U,M]}],"backdrop-sepia":[{"backdrop-sepia":["",B,U,M]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",U,M]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[B,"initial",U,M]}],ease:[{ease:["linear","initial",s,U,M]}],delay:[{delay:[B,U,M]}],animate:[{animate:["none",t,U,M]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,U,M]}],"perspective-origin":[{"perspective-origin":w()}],rotate:[{rotate:as()}],"rotate-x":[{"rotate-x":as()}],"rotate-y":[{"rotate-y":as()}],"rotate-z":[{"rotate-z":as()}],scale:[{scale:at()}],"scale-x":[{"scale-x":at()}],"scale-y":[{"scale-y":at()}],"scale-z":[{"scale-z":at()}],"scale-3d":["scale-3d"],skew:[{skew:au()}],"skew-x":[{"skew-x":au()}],"skew-y":[{"skew-y":au()}],transform:[{transform:[U,M,"","none","gpu","cpu"]}],"transform-origin":[{origin:w()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:av()}],"translate-x":[{"translate-x":av()}],"translate-y":[{"translate-y":av()}],"translate-z":[{"translate-z":av()}],"translate-none":["translate-none"],accent:[{accent:ah()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ah()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",U,M]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",U,M]}],fill:[{fill:["none",...ah()]}],"stroke-w":[{stroke:[B,V,N,O]}],stroke:[{stroke:["none",...ah()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function al(...a){return ak(function(){for(var a,b,c=0,d="",e=arguments.length;cal],976957)},401719,a=>{"use strict";var b=a.i(998511),c=a.i(892858),d=a.i(976957);let e={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},f={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},g={primary:"bg-primary-dark",secondary:"bg-secondary-light",accent:"bg-accent-dark",saturated:"bg-primary",outline:"bg-primary",ghost:"bg-primary-light/10",white:"bg-primary-light",destructive:"bg-destructive/90"};function h(a="primary",b="md",c){return(0,d.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",e[a],f[b],c)}function i({variant:a="primary"}){return(0,b.jsx)("span",{className:(0,d.cn)("absolute inset-0 translate-y-[101%] group-hover/btn:translate-y-0 transition-transform duration-500 ease-out",g[a])})}function j({className:a,variant:e="primary",size:f="md",href:g,...j}){let k=h(e,f,a),l=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:(0,d.cn)("relative z-10 flex items-center justify-center gap-2 transition-colors duration-500","white"===e?"group-hover/btn:text-primary-dark":""),children:j.children}),(0,b.jsx)(i,{variant:e})]});return g?(0,b.jsx)(c.default,{href:g,className:k,children:l}):(0,b.jsx)("button",{className:k,...j,children:l})}a.s(["Button",()=>j,"ButtonOverlay",()=>i,"getButtonClasses",()=>h])},277870,a=>{"use strict";var b=a.i(998511),c=a.i(976957);function d({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,b.jsxs)("div",{className:(0,c.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,b.jsxs)("span",{className:(0,c.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,b.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,b.jsx)("span",{className:(0,c.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,b.jsx)("span",{className:(0,c.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,b.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,b.jsx)("span",{className:(0,c.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,b.jsx)(l,{className:(0,c.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}a.s(["Heading",()=>d])}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="3c897582-a4d1-8e25-0542-a4aa7f91f5ef")}catch(e){}}(); +module.exports=[976957,a=>{"use strict";let b=(a=new Map,b=null,c)=>({nextPart:a,validators:b,classGroupId:c}),c=[],d=(a,b,c)=>{if(0==a.length-b)return c.classGroupId;let e=a[b],f=c.nextPart.get(e);if(f){let c=d(a,b+1,f);if(c)return c}let g=c.validators;if(null===g)return;let h=0===b?a.join("-"):a.slice(b).join("-"),i=g.length;for(let a=0;a{let d=b();for(let b in a)f(a[b],d,b,c);return d},f=(a,b,c,d)=>{let e=a.length;for(let f=0;f{"string"==typeof a?h(a,b,c):"function"==typeof a?i(a,b,c,d):j(a,b,c,d)},h=(a,b,c)=>{(""===a?b:k(b,a)).classGroupId=c},i=(a,b,c,d)=>{l(a)?f(a(d),b,c,d):(null===b.validators&&(b.validators=[]),b.validators.push({classGroupId:c,validator:a}))},j=(a,b,c,d)=>{let e=Object.entries(a),g=e.length;for(let a=0;a{let d=a,e=c.split("-"),f=e.length;for(let a=0;a"isThemeGetter"in a&&!0===a.isThemeGetter,m=[],n=(a,b,c,d,e)=>({modifiers:a,hasImportantModifier:b,baseClassName:c,maybePostfixModifierPosition:d,isExternal:e}),o=/\s+/,p=a=>{let b;if("string"==typeof a)return a;let c="";for(let d=0;d{let b=b=>b[a]||q;return b.isThemeGetter=!0,b},s=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,t=/^\((?:(\w[\w-]*):)?(.+)\)$/i,u=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,v=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,w=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,x=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,y=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,z=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,A=a=>u.test(a),B=a=>!!a&&!Number.isNaN(Number(a)),C=a=>!!a&&Number.isInteger(Number(a)),D=a=>a.endsWith("%")&&B(a.slice(0,-1)),E=a=>v.test(a),F=()=>!0,G=a=>w.test(a)&&!x.test(a),H=()=>!1,I=a=>y.test(a),J=a=>z.test(a),K=a=>!M(a)&&!U(a),L=a=>aa(a,ae,H),M=a=>s.test(a),N=a=>aa(a,af,G),O=a=>aa(a,ag,B),P=a=>aa(a,ai,F),Q=a=>aa(a,ah,H),R=a=>aa(a,ac,H),S=a=>aa(a,ad,J),T=a=>aa(a,aj,I),U=a=>t.test(a),V=a=>ab(a,af),W=a=>ab(a,ah),X=a=>ab(a,ac),Y=a=>ab(a,ae),Z=a=>ab(a,ad),$=a=>ab(a,aj,!0),_=a=>ab(a,ai,!0),aa=(a,b,c)=>{let d=s.exec(a);return!!d&&(d[1]?b(d[1]):c(d[2]))},ab=(a,b,c=!1)=>{let d=t.exec(a);return!!d&&(d[1]?b(d[1]):c)},ac=a=>"position"===a||"percentage"===a,ad=a=>"image"===a||"url"===a,ae=a=>"length"===a||"size"===a||"bg-size"===a,af=a=>"length"===a,ag=a=>"number"===a,ah=a=>"family-name"===a,ai=a=>"number"===a||"weight"===a,aj=a=>"shadow"===a,ak=((a,...b)=>{let f,g,h,i,j=a=>{let b=g(a);if(b)return b;let c=((a,b)=>{let{parseClassName:c,getClassGroupId:d,getConflictingClassGroupIds:e,sortModifiers:f}=b,g=[],h=a.trim().split(o),i="";for(let a=h.length-1;a>=0;a-=1){let b=h[a],{isExternal:j,modifiers:k,hasImportantModifier:l,baseClassName:m,maybePostfixModifierPosition:n}=c(b);if(j){i=b+(i.length>0?" "+i:i);continue}let o=!!n,p=d(o?m.substring(0,n):m);if(!p){if(!o||!(p=d(m))){i=b+(i.length>0?" "+i:i);continue}o=!1}let q=0===k.length?"":1===k.length?k[0]:f(k).join(":"),r=l?q+"!":q,s=r+p;if(g.indexOf(s)>-1)continue;g.push(s);let t=e(p,o);for(let a=0;a0?" "+i:i)}return i})(a,f);return h(a,c),c};return i=k=>{var l;let o;return g=(f={cache:(a=>{if(a<1)return{get:()=>void 0,set:()=>{}};let b=0,c=Object.create(null),d=Object.create(null),e=(e,f)=>{c[e]=f,++b>a&&(b=0,d=c,c=Object.create(null))};return{get(a){let b=c[a];return void 0!==b?b:void 0!==(b=d[a])?(e(a,b),b):void 0},set(a,b){a in c?c[a]=b:e(a,b)}}})((l=b.reduce((a,b)=>b(a),a())).cacheSize),parseClassName:(a=>{let{prefix:b,experimentalParseClassName:c}=a,d=a=>{let b,c=[],d=0,e=0,f=0,g=a.length;for(let h=0;hf?b-f:void 0)};if(b){let a=b+":",c=d;d=b=>b.startsWith(a)?c(b.slice(a.length)):n(m,!1,b,void 0,!0)}if(c){let a=d;d=b=>c({className:b,parseClassName:a})}return d})(l),sortModifiers:(o=new Map,l.orderSensitiveModifiers.forEach((a,b)=>{o.set(a,1e6+b)}),a=>{let b=[],c=[];for(let d=0;d0&&(c.sort(),b.push(...c),c=[]),b.push(e)):c.push(e)}return c.length>0&&(c.sort(),b.push(...c)),b}),...(a=>{let b=(a=>{let{theme:b,classGroups:c}=a;return e(c,b)})(a),{conflictingClassGroups:f,conflictingClassGroupModifiers:g}=a;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]")){var c;let b,d,e;return -1===(c=a).slice(1,-1).indexOf(":")?void 0:(d=(b=c.slice(1,-1)).indexOf(":"),(e=b.slice(0,d))?"arbitrary.."+e:void 0)}let e=a.split("-"),f=+(""===e[0]&&e.length>1);return d(e,f,b)},getConflictingClassGroupIds:(a,b)=>{if(b){let b=g[a],d=f[a];if(b){if(d){let a=Array(d.length+b.length);for(let b=0;bi(((...a)=>{let b,c,d=0,e="";for(;d{let a=r("color"),b=r("font"),c=r("text"),d=r("font-weight"),e=r("tracking"),f=r("leading"),g=r("breakpoint"),h=r("container"),i=r("spacing"),j=r("radius"),k=r("shadow"),l=r("inset-shadow"),m=r("text-shadow"),n=r("drop-shadow"),o=r("blur"),p=r("perspective"),q=r("aspect"),s=r("ease"),t=r("animate"),u=()=>["auto","avoid","all","avoid-page","page","left","right","column"],v=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],w=()=>[...v(),U,M],x=()=>["auto","hidden","clip","visible","scroll"],y=()=>["auto","contain","none"],z=()=>[U,M,i],G=()=>[A,"full","auto",...z()],H=()=>[C,"none","subgrid",U,M],I=()=>["auto",{span:["full",C,U,M]},C,U,M],J=()=>[C,"auto",U,M],aa=()=>["auto","min","max","fr",U,M],ab=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ac=()=>["start","end","center","stretch","center-safe","end-safe"],ad=()=>["auto",...z()],ae=()=>[A,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],af=()=>[A,"screen","full","dvw","lvw","svw","min","max","fit",...z()],ag=()=>[A,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],ah=()=>[a,U,M],ai=()=>[...v(),X,R,{position:[U,M]}],aj=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ak=()=>["auto","cover","contain",Y,L,{size:[U,M]}],al=()=>[D,V,N],am=()=>["","none","full",j,U,M],an=()=>["",B,V,N],ao=()=>["solid","dashed","dotted","double"],ap=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],aq=()=>[B,D,X,R],ar=()=>["","none",o,U,M],as=()=>["none",B,U,M],at=()=>["none",B,U,M],au=()=>[B,U,M],av=()=>[A,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[E],breakpoint:[E],color:[F],container:[E],"drop-shadow":[E],ease:["in","out","in-out"],font:[K],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[E],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[E],shadow:[E],spacing:["px",B],text:[E],"text-shadow":[E],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",A,M,U,q]}],container:["container"],columns:[{columns:[B,M,U,h]}],"break-after":[{"break-after":u()}],"break-before":[{"break-before":u()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:w()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:y()}],"overscroll-x":[{"overscroll-x":y()}],"overscroll-y":[{"overscroll-y":y()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:G()}],"inset-x":[{"inset-x":G()}],"inset-y":[{"inset-y":G()}],start:[{"inset-s":G(),start:G()}],end:[{"inset-e":G(),end:G()}],"inset-bs":[{"inset-bs":G()}],"inset-be":[{"inset-be":G()}],top:[{top:G()}],right:[{right:G()}],bottom:[{bottom:G()}],left:[{left:G()}],visibility:["visible","invisible","collapse"],z:[{z:[C,"auto",U,M]}],basis:[{basis:[A,"full","auto",h,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[B,A,"auto","initial","none",M]}],grow:[{grow:["",B,U,M]}],shrink:[{shrink:["",B,U,M]}],order:[{order:[C,"first","last","none",U,M]}],"grid-cols":[{"grid-cols":H()}],"col-start-end":[{col:I()}],"col-start":[{"col-start":J()}],"col-end":[{"col-end":J()}],"grid-rows":[{"grid-rows":H()}],"row-start-end":[{row:I()}],"row-start":[{"row-start":J()}],"row-end":[{"row-end":J()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":aa()}],"auto-rows":[{"auto-rows":aa()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...ab(),"normal"]}],"justify-items":[{"justify-items":[...ac(),"normal"]}],"justify-self":[{"justify-self":["auto",...ac()]}],"align-content":[{content:["normal",...ab()]}],"align-items":[{items:[...ac(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ac(),{baseline:["","last"]}]}],"place-content":[{"place-content":ab()}],"place-items":[{"place-items":[...ac(),"baseline"]}],"place-self":[{"place-self":["auto",...ac()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:ad()}],mx:[{mx:ad()}],my:[{my:ad()}],ms:[{ms:ad()}],me:[{me:ad()}],mbs:[{mbs:ad()}],mbe:[{mbe:ad()}],mt:[{mt:ad()}],mr:[{mr:ad()}],mb:[{mb:ad()}],ml:[{ml:ad()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...af()]}],"min-inline-size":[{"min-inline":["auto",...af()]}],"max-inline-size":[{"max-inline":["none",...af()]}],"block-size":[{block:["auto",...ag()]}],"min-block-size":[{"min-block":["auto",...ag()]}],"max-block-size":[{"max-block":["none",...ag()]}],w:[{w:[h,"screen",...ae()]}],"min-w":[{"min-w":[h,"screen","none",...ae()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[g]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",c,V,N]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,_,P]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",D,M]}],"font-family":[{font:[W,Q,b]}],"font-features":[{"font-features":[M]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[e,U,M]}],"line-clamp":[{"line-clamp":[B,"none",U,O]}],leading:[{leading:[f,...z()]}],"list-image":[{"list-image":["none",U,M]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",U,M]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ah()}],"text-color":[{text:ah()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ao(),"wavy"]}],"text-decoration-thickness":[{decoration:[B,"from-font","auto",U,N]}],"text-decoration-color":[{decoration:ah()}],"underline-offset":[{"underline-offset":[B,"auto",U,M]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",U,M]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",U,M]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ai()}],"bg-repeat":[{bg:aj()}],"bg-size":[{bg:ak()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},C,U,M],radial:["",U,M],conic:[C,U,M]},Z,S]}],"bg-color":[{bg:ah()}],"gradient-from-pos":[{from:al()}],"gradient-via-pos":[{via:al()}],"gradient-to-pos":[{to:al()}],"gradient-from":[{from:ah()}],"gradient-via":[{via:ah()}],"gradient-to":[{to:ah()}],rounded:[{rounded:am()}],"rounded-s":[{"rounded-s":am()}],"rounded-e":[{"rounded-e":am()}],"rounded-t":[{"rounded-t":am()}],"rounded-r":[{"rounded-r":am()}],"rounded-b":[{"rounded-b":am()}],"rounded-l":[{"rounded-l":am()}],"rounded-ss":[{"rounded-ss":am()}],"rounded-se":[{"rounded-se":am()}],"rounded-ee":[{"rounded-ee":am()}],"rounded-es":[{"rounded-es":am()}],"rounded-tl":[{"rounded-tl":am()}],"rounded-tr":[{"rounded-tr":am()}],"rounded-br":[{"rounded-br":am()}],"rounded-bl":[{"rounded-bl":am()}],"border-w":[{border:an()}],"border-w-x":[{"border-x":an()}],"border-w-y":[{"border-y":an()}],"border-w-s":[{"border-s":an()}],"border-w-e":[{"border-e":an()}],"border-w-bs":[{"border-bs":an()}],"border-w-be":[{"border-be":an()}],"border-w-t":[{"border-t":an()}],"border-w-r":[{"border-r":an()}],"border-w-b":[{"border-b":an()}],"border-w-l":[{"border-l":an()}],"divide-x":[{"divide-x":an()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":an()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ao(),"hidden","none"]}],"divide-style":[{divide:[...ao(),"hidden","none"]}],"border-color":[{border:ah()}],"border-color-x":[{"border-x":ah()}],"border-color-y":[{"border-y":ah()}],"border-color-s":[{"border-s":ah()}],"border-color-e":[{"border-e":ah()}],"border-color-bs":[{"border-bs":ah()}],"border-color-be":[{"border-be":ah()}],"border-color-t":[{"border-t":ah()}],"border-color-r":[{"border-r":ah()}],"border-color-b":[{"border-b":ah()}],"border-color-l":[{"border-l":ah()}],"divide-color":[{divide:ah()}],"outline-style":[{outline:[...ao(),"none","hidden"]}],"outline-offset":[{"outline-offset":[B,U,M]}],"outline-w":[{outline:["",B,V,N]}],"outline-color":[{outline:ah()}],shadow:[{shadow:["","none",k,$,T]}],"shadow-color":[{shadow:ah()}],"inset-shadow":[{"inset-shadow":["none",l,$,T]}],"inset-shadow-color":[{"inset-shadow":ah()}],"ring-w":[{ring:an()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ah()}],"ring-offset-w":[{"ring-offset":[B,N]}],"ring-offset-color":[{"ring-offset":ah()}],"inset-ring-w":[{"inset-ring":an()}],"inset-ring-color":[{"inset-ring":ah()}],"text-shadow":[{"text-shadow":["none",m,$,T]}],"text-shadow-color":[{"text-shadow":ah()}],opacity:[{opacity:[B,U,M]}],"mix-blend":[{"mix-blend":[...ap(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ap()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[B]}],"mask-image-linear-from-pos":[{"mask-linear-from":aq()}],"mask-image-linear-to-pos":[{"mask-linear-to":aq()}],"mask-image-linear-from-color":[{"mask-linear-from":ah()}],"mask-image-linear-to-color":[{"mask-linear-to":ah()}],"mask-image-t-from-pos":[{"mask-t-from":aq()}],"mask-image-t-to-pos":[{"mask-t-to":aq()}],"mask-image-t-from-color":[{"mask-t-from":ah()}],"mask-image-t-to-color":[{"mask-t-to":ah()}],"mask-image-r-from-pos":[{"mask-r-from":aq()}],"mask-image-r-to-pos":[{"mask-r-to":aq()}],"mask-image-r-from-color":[{"mask-r-from":ah()}],"mask-image-r-to-color":[{"mask-r-to":ah()}],"mask-image-b-from-pos":[{"mask-b-from":aq()}],"mask-image-b-to-pos":[{"mask-b-to":aq()}],"mask-image-b-from-color":[{"mask-b-from":ah()}],"mask-image-b-to-color":[{"mask-b-to":ah()}],"mask-image-l-from-pos":[{"mask-l-from":aq()}],"mask-image-l-to-pos":[{"mask-l-to":aq()}],"mask-image-l-from-color":[{"mask-l-from":ah()}],"mask-image-l-to-color":[{"mask-l-to":ah()}],"mask-image-x-from-pos":[{"mask-x-from":aq()}],"mask-image-x-to-pos":[{"mask-x-to":aq()}],"mask-image-x-from-color":[{"mask-x-from":ah()}],"mask-image-x-to-color":[{"mask-x-to":ah()}],"mask-image-y-from-pos":[{"mask-y-from":aq()}],"mask-image-y-to-pos":[{"mask-y-to":aq()}],"mask-image-y-from-color":[{"mask-y-from":ah()}],"mask-image-y-to-color":[{"mask-y-to":ah()}],"mask-image-radial":[{"mask-radial":[U,M]}],"mask-image-radial-from-pos":[{"mask-radial-from":aq()}],"mask-image-radial-to-pos":[{"mask-radial-to":aq()}],"mask-image-radial-from-color":[{"mask-radial-from":ah()}],"mask-image-radial-to-color":[{"mask-radial-to":ah()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":v()}],"mask-image-conic-pos":[{"mask-conic":[B]}],"mask-image-conic-from-pos":[{"mask-conic-from":aq()}],"mask-image-conic-to-pos":[{"mask-conic-to":aq()}],"mask-image-conic-from-color":[{"mask-conic-from":ah()}],"mask-image-conic-to-color":[{"mask-conic-to":ah()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ai()}],"mask-repeat":[{mask:aj()}],"mask-size":[{mask:ak()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",U,M]}],filter:[{filter:["","none",U,M]}],blur:[{blur:ar()}],brightness:[{brightness:[B,U,M]}],contrast:[{contrast:[B,U,M]}],"drop-shadow":[{"drop-shadow":["","none",n,$,T]}],"drop-shadow-color":[{"drop-shadow":ah()}],grayscale:[{grayscale:["",B,U,M]}],"hue-rotate":[{"hue-rotate":[B,U,M]}],invert:[{invert:["",B,U,M]}],saturate:[{saturate:[B,U,M]}],sepia:[{sepia:["",B,U,M]}],"backdrop-filter":[{"backdrop-filter":["","none",U,M]}],"backdrop-blur":[{"backdrop-blur":ar()}],"backdrop-brightness":[{"backdrop-brightness":[B,U,M]}],"backdrop-contrast":[{"backdrop-contrast":[B,U,M]}],"backdrop-grayscale":[{"backdrop-grayscale":["",B,U,M]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[B,U,M]}],"backdrop-invert":[{"backdrop-invert":["",B,U,M]}],"backdrop-opacity":[{"backdrop-opacity":[B,U,M]}],"backdrop-saturate":[{"backdrop-saturate":[B,U,M]}],"backdrop-sepia":[{"backdrop-sepia":["",B,U,M]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",U,M]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[B,"initial",U,M]}],ease:[{ease:["linear","initial",s,U,M]}],delay:[{delay:[B,U,M]}],animate:[{animate:["none",t,U,M]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,U,M]}],"perspective-origin":[{"perspective-origin":w()}],rotate:[{rotate:as()}],"rotate-x":[{"rotate-x":as()}],"rotate-y":[{"rotate-y":as()}],"rotate-z":[{"rotate-z":as()}],scale:[{scale:at()}],"scale-x":[{"scale-x":at()}],"scale-y":[{"scale-y":at()}],"scale-z":[{"scale-z":at()}],"scale-3d":["scale-3d"],skew:[{skew:au()}],"skew-x":[{"skew-x":au()}],"skew-y":[{"skew-y":au()}],transform:[{transform:[U,M,"","none","gpu","cpu"]}],"transform-origin":[{origin:w()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:av()}],"translate-x":[{"translate-x":av()}],"translate-y":[{"translate-y":av()}],"translate-z":[{"translate-z":av()}],"translate-none":["translate-none"],accent:[{accent:ah()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ah()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",U,M]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",U,M]}],fill:[{fill:["none",...ah()]}],"stroke-w":[{stroke:[B,V,N,O]}],stroke:[{stroke:["none",...ah()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function al(...a){return ak(function(){for(var a,b,c=0,d="",e=arguments.length;cal],976957)},401719,a=>{"use strict";var b=a.i(998511),c=a.i(892858),d=a.i(976957);let e={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},f={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},g={primary:"bg-primary-dark",secondary:"bg-secondary-light",accent:"bg-accent-dark",saturated:"bg-primary",outline:"bg-primary",ghost:"bg-primary-light/10",white:"bg-primary-light",destructive:"bg-destructive/90"};function h(a="primary",b="md",c){return(0,d.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",e[a],f[b],c)}function i({variant:a="primary"}){return(0,b.jsx)("span",{className:(0,d.cn)("absolute inset-0 translate-y-[101%] group-hover/btn:translate-y-0 transition-transform duration-500 ease-out",g[a])})}function j({className:a,variant:e="primary",size:f="md",href:g,...j}){let k=h(e,f,a),l=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:(0,d.cn)("relative z-10 flex items-center justify-center gap-2 transition-colors duration-500","white"===e?"group-hover/btn:text-primary-dark":""),children:j.children}),(0,b.jsx)(i,{variant:e})]});return g?(0,b.jsx)(c.default,{href:g,className:k,children:l}):(0,b.jsx)("button",{className:k,...j,children:l})}a.s(["Button",()=>j,"ButtonOverlay",()=>i,"getButtonClasses",()=>h])},277870,a=>{"use strict";var b=a.i(998511),c=a.i(976957);function d({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,b.jsxs)("div",{className:(0,c.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,b.jsxs)("span",{className:(0,c.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,b.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,b.jsx)("span",{className:(0,c.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,b.jsx)("span",{className:(0,c.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,b.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,b.jsx)("span",{className:(0,c.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,b.jsx)(l,{className:(0,c.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}a.s(["Heading",()=>d])}]; -//# debugId=fc4d0ef2-948e-142d-5b3b-af74de050af8 +//# debugId=3c897582-a4d1-8e25-0542-a4aa7f91f5ef //# sourceMappingURL=components_ui_c944c65b._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/components_ui_c944c65b._.js.map b/.next/server/chunks/ssr/components_ui_c944c65b._.js.map index 3f7c305de..75dd0cbdf 100644 --- a/.next/server/chunks/ssr/components_ui_c944c65b._.js.map +++ b/.next/server/chunks/ssr/components_ui_c944c65b._.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": [], - "debugId": "fc4d0ef2-948e-142d-5b3b-af74de050af8", + "debugId": "3c897582-a4d1-8e25-0542-a4aa7f91f5ef", "sections": [ - {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../node_modules/.pnpm/clsx%402.1.1/node_modules/clsx/dist/clsx.mjs","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/utils.ts","../../../../components/ui/utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/lru-cache.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/config-utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/tw-join.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/from-theme.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/validators.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/default-config.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/merge-configs.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/tw-merge.ts","../../../../components/ui/Button.tsx","../../../../components/ui/Heading.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\n const classParts = className.split(CLASS_PART_SEPARATOR)\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record>,\n theme: ThemeObject,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = (\n maxCacheSize: number,\n): LruCache => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record = Object.create(null)\n let previousCache: Record = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryWeight = (value: string) => getIsArbitraryValue(value, isLabelWeight, isAny)\n\nexport const isArbitraryFamilyName = (value: string) =>\n getIsArbitraryValue(value, isLabelFamilyName, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\nexport const isArbitraryVariableWeight = (value: string) =>\n getIsArbitraryVariable(value, isLabelWeight, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelWeight = (label: string) => label === 'number' || label === 'weight'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingInline = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'dvw',\n 'lvw',\n 'svw',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingBlock = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'lh',\n 'dvh',\n 'lvh',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [\n {\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset(),\n },\n ],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [\n {\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset(),\n },\n ],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{ 'inset-bs': scaleInset() }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{ 'inset-be': scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{ pbs: scaleUnambiguousSpacing() }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{ pbe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{ mbs: scaleMargin() }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{ mbe: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{ inline: ['auto', ...scaleSizingInline()] }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{ 'min-inline': ['auto', ...scaleSizingInline()] }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{ 'max-inline': ['none', ...scaleSizingInline()] }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{ block: ['auto', ...scaleSizingBlock()] }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{ 'min-block': ['auto', ...scaleSizingBlock()] }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{ 'max-block': ['none', ...scaleSizingBlock()] }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [\n {\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight],\n },\n ],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [\n { font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont] },\n ],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{ 'font-features': [isArbitraryValue] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{ 'border-bs': scaleBorderWidth() }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{ 'border-be': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{ 'border-bs': scaleColor() }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{ 'border-be': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{ 'scroll-mbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{ 'scroll-mbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{ 'scroll-pbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{ 'scroll-pbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: [\n 'inset-x',\n 'inset-y',\n 'inset-bs',\n 'inset-be',\n 'start',\n 'end',\n 'top',\n 'right',\n 'bottom',\n 'left',\n ],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-bs',\n 'border-w-be',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-bs',\n 'border-color-be',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mbs',\n 'scroll-mbe',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pbs',\n 'scroll-pbe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config\n}\n","import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = (\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n overrideConfigProperties(baseConfig.theme, override.theme)\n overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n overrideConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n override.conflictingClassGroupModifiers,\n )\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n mergeConfigProperties(baseConfig.theme, extend.theme)\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n mergeConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n extend.conflictingClassGroupModifiers,\n )\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n return baseConfig\n}\n\nconst overrideProperty = (\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial>,\n overrideObject: Partial> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial>,\n mergeObject: Partial> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key)\n }\n }\n}\n\nconst mergeArrayProperties = (\n baseObject: Partial, readonly unknown[]>>,\n mergeObject: Partial, readonly unknown[]>>,\n key: Key,\n) => {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import React from 'react';\nimport Link from 'next/link';\nimport { cn } from './utils';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes {\n variant?:\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'saturated'\n | 'outline'\n | 'ghost'\n | 'white'\n | 'destructive';\n size?: 'sm' | 'md' | 'lg' | 'xl';\n href?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const buttonBaseStyles =\n 'inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate';\n\nexport const buttonVariantsMap = {\n primary: 'bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n secondary: 'bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl',\n accent: 'bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl',\n saturated: 'bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n outline:\n 'border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl',\n ghost: 'text-primary hover:shadow-lg',\n white:\n 'bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl',\n};\n\nexport const buttonSizesMap = {\n sm: 'h-9 px-4 text-sm md:text-base',\n md: 'h-11 px-6 text-base md:text-lg',\n lg: 'h-14 px-5 md:px-8 text-base md:text-lg',\n xl: 'h-16 px-6 md:px-10 text-lg md:text-xl',\n};\n\nexport const buttonOverlayColorsMap = {\n primary: 'bg-primary-dark',\n secondary: 'bg-secondary-light',\n accent: 'bg-accent-dark',\n saturated: 'bg-primary',\n outline: 'bg-primary',\n ghost: 'bg-primary-light/10',\n white: 'bg-primary-light',\n destructive: 'bg-destructive/90',\n};\n\nexport function getButtonClasses(variant: keyof typeof buttonVariantsMap = 'primary', size: keyof typeof buttonSizesMap = 'md', className?: string) {\n return cn(buttonBaseStyles, buttonVariantsMap[variant], buttonSizesMap[size], className);\n}\n\nexport function ButtonOverlay({ variant = 'primary' }: { variant?: keyof typeof buttonVariantsMap }) {\n return (\n \n );\n}\n\nexport function Button({\n className,\n variant = 'primary',\n size = 'md',\n href,\n ...props\n}: ButtonProps) {\n const styles = getButtonClasses(variant, size, className);\n\n const content = (\n <>\n \n {props.children}\n \n \n \n );\n\n if (href) {\n return (\n \n {content}\n \n );\n }\n\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]',\n '5': 'text-base md:text-lg font-bold leading-[1.3]',\n '6': 'text-base md:text-lg font-semibold leading-[1.4]',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n"],"names":["concatArrays","array1","array2","combinedArray","Array","length","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","Map","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","startsWith","endsWith","getGroupIdForArbitraryProperty","classParts","split","startIndex","getGroupRecursive","getConflictingClassGroupIds","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","classPathsLength","currentClassPart","nextClassPartObject","get","result","undefined","classRest","join","slice","validatorsLength","validatorObj","indexOf","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","entries","Object","key","value","path","current","parts","part","next","set","func","createLruCache","maxCacheSize","cacheSize","cache","create","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","orderSensitiveModifiers","forEach","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","has","sort","createConfigUtils","sortModifiers","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","originalClassName","substring","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","test","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryWeight","isLabelWeight","isArbitraryFamilyName","isLabelFamilyName","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isArbitraryVariableWeight","testLabel","testValue","exec","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleSizingInline","scaleSizingBlock","scaleColor","scaleBgPosition","position","scaleBgRepeat","repeat","scaleBgSize","size","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","leading","perspective","radius","shadow","spacing","text","tracking","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","items","baseline","self","p","px","py","ps","pe","pbs","pbe","pt","pr","pb","pl","m","mx","my","ms","me","mbs","mbe","mt","mr","mb","ml","inline","block","w","screen","h","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","from","via","rounded","border","divide","outline","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","mergeConfigs","baseConfig","extend","override","overrideProperty","overrideConfigProperties","mergeConfigProperties","mergeArrayProperties","baseObject","overrideKey","overrideValue","overrideObject","mergeObject","mergeValue","concat","extendTailwindMerge","configExtension","createConfig","twMerge"],"mappings":"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","ignoreList":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16]}}] + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../node_modules/.pnpm/clsx%402.1.1/node_modules/clsx/dist/clsx.mjs","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/utils.ts","../../../../components/ui/utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/lru-cache.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/config-utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/tw-join.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/from-theme.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/validators.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/default-config.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/merge-configs.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../../../node_modules/.pnpm/tailwind-merge%403.5.0/node_modules/tailwind-merge/src/lib/tw-merge.ts","../../../../components/ui/Button.tsx","../../../../components/ui/Heading.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\n const classParts = className.split(CLASS_PART_SEPARATOR)\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record>,\n theme: ThemeObject,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = (\n maxCacheSize: number,\n): LruCache => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record = Object.create(null)\n let previousCache: Record = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryWeight = (value: string) => getIsArbitraryValue(value, isLabelWeight, isAny)\n\nexport const isArbitraryFamilyName = (value: string) =>\n getIsArbitraryValue(value, isLabelFamilyName, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\nexport const isArbitraryVariableWeight = (value: string) =>\n getIsArbitraryVariable(value, isLabelWeight, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelWeight = (label: string) => label === 'number' || label === 'weight'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingInline = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'dvw',\n 'lvw',\n 'svw',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingBlock = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'lh',\n 'dvh',\n 'lvh',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n { columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [\n {\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset(),\n },\n ],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [\n {\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset(),\n },\n ],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{ 'inset-bs': scaleInset() }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{ 'inset-be': scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{ pbs: scaleUnambiguousSpacing() }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{ pbe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{ mbs: scaleMargin() }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{ mbe: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{ inline: ['auto', ...scaleSizingInline()] }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{ 'min-inline': ['auto', ...scaleSizingInline()] }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{ 'max-inline': ['none', ...scaleSizingInline()] }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{ block: ['auto', ...scaleSizingBlock()] }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{ 'min-block': ['auto', ...scaleSizingBlock()] }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{ 'max-block': ['none', ...scaleSizingBlock()] }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [\n {\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight],\n },\n ],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [\n { font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont] },\n ],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{ 'font-features': [isArbitraryValue] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{ 'border-bs': scaleBorderWidth() }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{ 'border-be': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{ 'border-bs': scaleColor() }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{ 'border-be': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{ 'scroll-mbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{ 'scroll-mbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{ 'scroll-pbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{ 'scroll-pbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: [\n 'inset-x',\n 'inset-y',\n 'inset-bs',\n 'inset-be',\n 'start',\n 'end',\n 'top',\n 'right',\n 'bottom',\n 'left',\n ],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-bs',\n 'border-w-be',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-bs',\n 'border-color-be',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mbs',\n 'scroll-mbe',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pbs',\n 'scroll-pbe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config\n}\n","import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = (\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n overrideConfigProperties(baseConfig.theme, override.theme)\n overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n overrideConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n override.conflictingClassGroupModifiers,\n )\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n mergeConfigProperties(baseConfig.theme, extend.theme)\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n mergeConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n extend.conflictingClassGroupModifiers,\n )\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n return baseConfig\n}\n\nconst overrideProperty = (\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial>,\n overrideObject: Partial> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial>,\n mergeObject: Partial> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key)\n }\n }\n}\n\nconst mergeArrayProperties = (\n baseObject: Partial, readonly unknown[]>>,\n mergeObject: Partial, readonly unknown[]>>,\n key: Key,\n) => {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import React from 'react';\nimport Link from 'next/link';\nimport { cn } from './utils';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes {\n variant?:\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'saturated'\n | 'outline'\n | 'ghost'\n | 'white'\n | 'destructive';\n size?: 'sm' | 'md' | 'lg' | 'xl';\n href?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const buttonBaseStyles =\n 'inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate';\n\nexport const buttonVariantsMap = {\n primary: 'bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n secondary: 'bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl',\n accent: 'bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl',\n saturated: 'bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n outline:\n 'border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl',\n ghost: 'text-primary hover:shadow-lg',\n white:\n 'bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl',\n};\n\nexport const buttonSizesMap = {\n sm: 'h-9 px-4 text-sm md:text-base',\n md: 'h-11 px-6 text-base md:text-lg',\n lg: 'h-14 px-5 md:px-8 text-base md:text-lg',\n xl: 'h-16 px-6 md:px-10 text-lg md:text-xl',\n};\n\nexport const buttonOverlayColorsMap = {\n primary: 'bg-primary-dark',\n secondary: 'bg-secondary-light',\n accent: 'bg-accent-dark',\n saturated: 'bg-primary',\n outline: 'bg-primary',\n ghost: 'bg-primary-light/10',\n white: 'bg-primary-light',\n destructive: 'bg-destructive/90',\n};\n\nexport function getButtonClasses(variant: keyof typeof buttonVariantsMap = 'primary', size: keyof typeof buttonSizesMap = 'md', className?: string) {\n return cn(buttonBaseStyles, buttonVariantsMap[variant], buttonSizesMap[size], className);\n}\n\nexport function ButtonOverlay({ variant = 'primary' }: { variant?: keyof typeof buttonVariantsMap }) {\n return (\n \n );\n}\n\nexport function Button({\n className,\n variant = 'primary',\n size = 'md',\n href,\n ...props\n}: ButtonProps) {\n const styles = getButtonClasses(variant, size, className);\n\n const content = (\n <>\n \n {props.children}\n \n \n \n );\n\n if (href) {\n return (\n \n {content}\n \n );\n }\n\n return (\n \n );\n}\n","import React from 'react';\nimport { cn } from './utils';\n\nexport type HeadingVariant = 'primary' | 'neutral' | 'white' | 'dark';\nexport type HeadingSize = 'hero' | 'section' | 'subsection' | 'card' | 'small' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface HeadingProps {\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: HeadingSize;\n variant?: HeadingVariant;\n align?: 'left' | 'center' | 'right';\n subtitle?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n subtitleClassName?: string;\n badgeStyle?: 'industrial' | 'simple';\n}\n\nexport function Heading({\n level = 2,\n size,\n variant = 'dark',\n align = 'left',\n subtitle,\n children,\n className,\n subtitleClassName,\n badgeStyle = 'industrial'\n}: HeadingProps) {\n const Tag = `h${level}` as any;\n \n const effectiveSize = size || String(level) as HeadingSize;\n \n const sizes: Record = {\n 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]',\n 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]',\n 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight',\n 'card': 'text-xl md:text-2xl font-bold leading-snug',\n 'small': 'text-lg font-semibold leading-snug',\n // Legacy support\n '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight',\n '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight',\n '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight',\n '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-snug',\n '5': 'text-base md:text-lg font-bold leading-normal',\n '6': 'text-base md:text-lg font-semibold leading-normal',\n };\n\n const variants = {\n primary: 'text-primary',\n neutral: 'text-text-primary',\n white: 'text-white',\n dark: 'text-neutral-dark',\n };\n\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n right: 'text-right',\n };\n\n return (\n
\n {subtitle && badgeStyle === 'industrial' && (\n \n \n \n \n \n {subtitle}\n \n )}\n \n {subtitle && badgeStyle === 'simple' && (\n \n {subtitle}\n \n )}\n \n \n {children}\n \n
\n );\n}\n"],"names":["concatArrays","array1","array2","combinedArray","Array","length","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","Map","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","startsWith","endsWith","getGroupIdForArbitraryProperty","classParts","split","startIndex","getGroupRecursive","getConflictingClassGroupIds","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","classPathsLength","currentClassPart","nextClassPartObject","get","result","undefined","classRest","join","slice","validatorsLength","validatorObj","indexOf","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","entries","Object","key","value","path","current","parts","part","next","set","func","createLruCache","maxCacheSize","cacheSize","cache","create","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","orderSensitiveModifiers","forEach","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","has","sort","createConfigUtils","sortModifiers","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","originalClassName","substring","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","test","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryWeight","isLabelWeight","isArbitraryFamilyName","isLabelFamilyName","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isArbitraryVariableWeight","testLabel","testValue","exec","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleSizingInline","scaleSizingBlock","scaleColor","scaleBgPosition","position","scaleBgRepeat","repeat","scaleBgSize","size","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","leading","perspective","radius","shadow","spacing","text","tracking","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","items","baseline","self","p","px","py","ps","pe","pbs","pbe","pt","pr","pb","pl","m","mx","my","ms","me","mbs","mbe","mt","mr","mb","ml","inline","block","w","screen","h","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","from","via","rounded","border","divide","outline","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","mergeConfigs","baseConfig","extend","override","overrideProperty","overrideConfigProperties","mergeConfigProperties","mergeArrayProperties","baseObject","overrideKey","overrideValue","overrideObject","mergeObject","mergeValue","concat","extendTailwindMerge","configExtension","createConfig","twMerge"],"mappings":"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","ignoreList":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16]}}] } \ No newline at end of file diff --git a/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js b/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js index 892f04432..1641d9b57 100644 --- a/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js +++ b/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="de2c1a74-3f86-153e-3829-ec16c4c99ae1")}catch(e){}}(); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="1a5b8728-ca5f-4a09-bec2-4f5e70493008")}catch(e){}}(); module.exports=[220468,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.GLOBAL_OBJ=globalThis},801739,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.SDK_VERSION="10.47.0"},738265,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(801739),e=a.r(799657);function f(a){let b=a.__SENTRY__=a.__SENTRY__||{};return b.version=b.version||d.SDK_VERSION,b[d.SDK_VERSION]=b[d.SDK_VERSION]||{}}c.getGlobalSingleton=function(a,b,c=e.GLOBAL_OBJ){let f=c.__SENTRY__=c.__SENTRY__||{},g=f[d.SDK_VERSION]=f[d.SDK_VERSION]||{};return g[a]||(g[a]=b())},c.getMainCarrier=function(){return f(e.GLOBAL_OBJ),e.GLOBAL_OBJ},c.getSentryCarrier=f},55915,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(738265),e=a.r(220468),f=a.r(799657),g={};function h(a){if(!("console"in f.GLOBAL_OBJ))return a();let b=f.GLOBAL_OBJ.console,c={},d=Object.keys(g);d.forEach(a=>{let d=g[a];c[a]=b[a],b[a]=d});try{return a()}finally{d.forEach(a=>{b[a]=c[a]})}}function i(){return k().enabled}function j(a,...b){e.DEBUG_BUILD&&i()&&h(()=>{f.GLOBAL_OBJ.console[a](`Sentry Logger [${a}]:`,...b)})}function k(){return e.DEBUG_BUILD?d.getGlobalSingleton("loggerSettings",()=>({enabled:!1})):{enabled:!1}}c.CONSOLE_LEVELS=["debug","info","warn","error","log","assert","trace"],c.consoleSandbox=h,c.debug={enable:function(){k().enabled=!0},disable:function(){k().enabled=!1},isEnabled:i,log:function(...a){j("log",...a)},warn:function(...a){j("warn",...a)},error:function(...a){j("error",...a)}},c.originalConsoleMethods=g},696937,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=/\(error: (.*)\)/,e=/captureMessage|captureException/;function f(...a){let b=a.sort((a,b)=>a[0]-b[0]).map(a=>a[1]);return(a,c=0,e=0)=>{let f=[],h=a.split("\n");for(let a=c;a1024&&(c=c.slice(0,1024));let g=d.test(c)?c.replace(d,"$1"):c;if(!g.match(/\S*Error: /)){for(let a of b){let b=a(g);if(b){f.push(b);break}}if(f.length>=50+e)break}}return g(f.slice(e))}}function g(a){if(!a.length)return[];let b=Array.from(a);return/sentryWrapped/.test(h(b).function||"")&&b.pop(),b.reverse(),e.test(h(b).function||"")&&(b.pop(),e.test(h(b).function||"")&&b.pop()),b.slice(0,50).map(a=>({...a,filename:a.filename||h(b).filename,function:a.function||"?"}))}function h(a){return a[a.length-1]||{}}let i="";c.UNKNOWN_FUNCTION="?",c.createStackParser=f,c.getFramesFromEvent=function(a){let b=a.exception;if(b){let a=[];try{return b.values.forEach(b=>{b.stacktrace.frames&&a.push(...b.stacktrace.frames)}),a}catch{}}},c.getFunctionName=function(a){try{if(!a||"function"!=typeof a)return i;return a.name||i}catch{return i}},c.getVueInternalName=function(a){return"__v_isVNode"in a&&a.__v_isVNode?"[VueVNode]":"[VueViewModel]"},c.normalizeStackTracePath=function(a){let b=a?.startsWith("file://")?a.slice(7):a;return b?.match(/\/[A-Z]:/)&&(b=b.slice(1)),b},c.stackParserFromStackParserOptions=function(a){return Array.isArray(a)?f(...a):a},c.stripSentryFramesAndReverse=g},621762,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(220468),e=a.r(55915),f=a.r(696937),g={},h={};c.addHandler=function(a,b){g[a]=g[a]||[],g[a].push(b)},c.maybeInstrument=function(a,b){if(!h[a]){h[a]=!0;try{b()}catch(b){d.DEBUG_BUILD&&e.debug.error(`Error while instrumenting ${a}`,b)}}},c.resetInstrumentationHandlers=function(){Object.keys(g).forEach(a=>{g[a]=void 0})},c.triggerHandlers=function(a,b){let c=a&&g[a];if(c)for(let g of c)try{g(b)}catch(b){d.DEBUG_BUILD&&e.debug.error(`Error while triggering instrumentation handler. Type: ${a} Name: ${f.getFunctionName(g)} @@ -20,7 +20,7 @@ ${a.stack}`:"unknown"}}}}}let k=d.defineIntegration((a={})=>{let b=a.limit??10;r `;let n=h.parseProxyResponse(c);c.write(`${m}\r `);let{connect:o,buffered:p}=await n;if(a.emit("proxyConnect",o),this.emit("proxyConnect",o,a),200===o.statusCode){if(a.once("socket",k),b.secureEndpoint){i("Upgrading socket connection to TLS");let a=b.servername||b.host;return e.connect({...l(b,"host","path","port"),socket:c,servername:d.isIP(a)?void 0:a})}return c}c.destroy();let q=new d.Socket({writable:!1});return q.readable=!0,a.once("socket",a=>{i("Replaying proxy buffer for failed request"),a.push(p),a.push(null)}),q}}function k(a){a.resume()}function l(a,...b){let c,d={};for(c in a)b.includes(c)||(d[c]=a[c]);return d}j.__initStatic(),c.HttpsProxyAgent=j},936232,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(347299),e=a.r(743698),f=a.r(81111),g=a.r(727028),h=a.r(97153),i=a.r(470351);c.makeNodeTransport=function(a){let b;try{b=new URL(a.url)}catch(b){return h.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),h.createTransport(a,()=>Promise.resolve({}))}let c="https:"===b.protocol,j=function(a,b){let{no_proxy:c}=process.env;if(!c?.split(",").some(b=>a.host.endsWith(b)||a.hostname.endsWith(b)))return b}(b,a.proxy||(c?process.env.https_proxy:void 0)||process.env.http_proxy),k=c?e:d,l=void 0!==a.keepAlive&&a.keepAlive,m=j?new i.HttpsProxyAgent(j):new k.Agent({keepAlive:l,maxSockets:30,timeout:2e3}),n=function(a,b,c){let{hostname:d,pathname:e,port:i,protocol:j,search:k}=new URL(a.url);return function(l){return new Promise((m,n)=>{h.suppressTracing(()=>{var h;let o=(h=l.body,new f.Readable({read(){this.push(h),this.push(null)}})),p={...a.headers};l.body.length>32768&&(p["content-encoding"]="gzip",o=o.pipe(g.createGzip()));let q=d.startsWith("["),r=b.request({method:"POST",agent:c,headers:p,hostname:q?d.slice(1,-1):d,path:`${e}${k}`,port:i,protocol:j,ca:a.caCerts},a=>{a.on("data",()=>{}),a.on("end",()=>{}),a.setEncoding("utf8");let b=a.headers["retry-after"]??null,c=a.headers["x-sentry-rate-limits"]??null;m({statusCode:a.statusCode,headers:{"retry-after":b,"x-sentry-rate-limits":Array.isArray(c)?c[0]||null:c}})});r.on("error",n),o.pipe(r)})})}}(a,a.httpModule??k,m);return h.createTransport(a,n)}},458577,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.getSpotlightConfig=function(a){if(!1===a)return!1;if("string"==typeof a)return a;let b=d.envToBool(process.env.SENTRY_SPOTLIGHT,{strict:!0}),c=null===b&&process.env.SENTRY_SPOTLIGHT?process.env.SENTRY_SPOTLIGHT:void 0;return!0===a?c??!0:b??c}},774056,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(750227),e=a.r(97153);function f(a){return a.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}c.createGetModuleFromFilename=function(a=process.argv[1]?e.dirname(process.argv[1]):process.cwd(),b="\\"===d.sep){let c=b?f(a):a;return a=>{if(!a)return;let e=b?f(a):a,{dir:g,base:h,ext:i}=d.posix.parse(e);(".js"===i||".mjs"===i||".cjs"===i)&&(h=h.slice(0,-1*i.length));let j=decodeURIComponent(h);g||(g=".");let k=g.lastIndexOf("/node_modules");if(k>-1)return`${g.slice(k+14).replace(/\//g,".")}:${j}`;if(g.startsWith(c)){let a=g.slice(c.length+1).replace(/\//g,".");return a?`${a}:${j}`:j}return j}}},563422,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(774056);c.defaultStackParser=d.createStackParser(d.nodeStackLineParser(e.createGetModuleFromFilename())),c.getSentryRelease=function(a){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(d.GLOBAL_OBJ.SENTRY_RELEASE?.id)return d.GLOBAL_OBJ.SENTRY_RELEASE.id;let b=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,c=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_BUILD_COMMIT||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,e=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return b||c||e||a}},18272,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(660526),e=a.r(854230),f=a.r(621472),g=a.r(97153),h=a.r(960535),i=a.r(37702),j=a.r(355055);class k extends g.ServerRuntimeClient{constructor(b){const c=!1===b.includeServerName?void 0:b.serverName||a.g.process.env.SENTRY_NAME||d.hostname(),e={...b,platform:"node",runtime:b.runtime||{name:"node",version:a.g.process.version},serverName:c};b.openTelemetryInstrumentations&&f.registerInstrumentations({instrumentations:b.openTelemetryInstrumentations}),g.applySdkMetadata(e,"node"),g.debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${i.isMainThread?"main":`worker-${i.threadId}`}.`),super(e),this.getOptions().enableLogs&&(this._logOnExitFlushListener=()=>{g._INTERNAL_flushLogsBuffer(this)},c&&this.on("beforeCaptureLog",a=>{a.attributes={...a.attributes,"server.address":c}}),process.on("beforeExit",this._logOnExitFlushListener))}get tracer(){if(this._tracer)return this._tracer;let a=g.SDK_VERSION,b=e.trace.getTracer("@sentry/node",a);return this._tracer=b,b}async flush(a){return await this.traceProvider?.forceFlush(),this.getOptions().sendClientReports&&this._flushOutcomes(),super.flush(a)}async close(a){this._clientReportInterval&&clearInterval(this._clientReportInterval),this._clientReportOnExitFlushListener&&process.off("beforeExit",this._clientReportOnExitFlushListener),this._logOnExitFlushListener&&process.off("beforeExit",this._logOnExitFlushListener);let b=await super.close(a);return this.traceProvider&&await this.traceProvider.shutdown(),b}startClientReportTracking(){let a=this.getOptions();a.sendClientReports&&(this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{j.DEBUG_BUILD&&g.debug.log("Flushing client reports based on interval."),this._flushOutcomes()},a.clientReportFlushInterval??6e4).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener))}_setupIntegrations(){g._INTERNAL_clearAiProviderSkips(),super._setupIntegrations()}_getTraceInfoFromScope(a){return a?h.getTraceContextForScope(this,a):[void 0,void 0]}}c.NodeClient=k},139392,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(285512),f=a.r(362562),g=a.r(226798);var h="u">typeof document?document.currentScript:null;c.initializeEsmLoader=function(){if(g.supportsEsmLoaderHooks()&&!d.GLOBAL_OBJ._sentryEsmLoaderHookRegistered){d.GLOBAL_OBJ._sentryEsmLoaderHookRegistered=!0;try{let{addHookMessagePort:b}=e.createAddHookMessageChannel();f.register("import-in-the-middle/hook.mjs","u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(960535),f=a.r(355055),g=a.r(468915),h=a.r(732257),i=a.r(17454),j=a.r(596290),k=a.r(200526),l=a.r(646711),m=a.r(486417),n=a.r(9332),o=a.r(437659),p=a.r(369330),q=a.r(249942),r=a.r(355329),s=a.r(936232),t=a.r(226798),u=a.r(458577),v=a.r(563422),w=a.r(18272),x=a.r(139392);function y(){return[d.inboundFiltersIntegration(),d.functionToStringIntegration(),d.linkedErrorsIntegration(),d.requestDataIntegration(),r.systemErrorIntegration(),d.conversationIdIntegration(),d.consoleIntegration(),j.httpIntegration(),m.nativeNodeFetchIntegration(),n.onUncaughtExceptionIntegration(),o.onUnhandledRejectionIntegration(),i.contextLinesIntegration(),k.localVariablesIntegration(),h.nodeContextIntegration(),g.childProcessIntegration(),p.processSessionIntegration(),l.modulesIntegration()]}function z(a={},b){var c,g;let h,i,j,k,l,m,n=(c=a,g=b,h=function(a){if(void 0!==a)return a;let b=v.getSentryRelease();if(void 0!==b)return b}(c.release),i=u.getSpotlightConfig(c.spotlight),j=function(a){if(void 0!==a)return a;let b=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!b)return;let c=parseFloat(b);return isFinite(c)?c:void 0}(c.tracesSampleRate),k={...c,dsn:c.dsn??process.env.SENTRY_DSN,environment:c.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:c.sendClientReports??!0,transport:c.transport??s.makeNodeTransport,stackParser:d.stackParserFromStackParserOptions(c.stackParser||v.defaultStackParser),release:h,tracesSampleRate:j,spotlight:i,debug:d.envToBool(c.debug??process.env.SENTRY_DEBUG)},l=c.integrations,m=c.defaultIntegrations??g(k),{...k,integrations:d.getIntegrationsToSetup({defaultIntegrations:m,integrations:l})});!0===n.debug&&(f.DEBUG_BUILD?d.debug.enable():d.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),!1!==n.registerEsmLoaderHooks&&x.initializeEsmLoader(),e.setOpenTelemetryContextAsyncContextStrategy(),d.getCurrentScope().update(n.initialScope),n.spotlight&&!n.integrations.some(({name:a})=>a===q.INTEGRATION_NAME)&&n.integrations.push(q.spotlightIntegration({sidecarUrl:"string"==typeof n.spotlight?n.spotlight:void 0})),d.applySdkMetadata(n,"node-core");let o=new w.NodeClient(n);return d.getCurrentScope().setClient(o),o.init(),d.debug.log(`SDK initialized from ${t.isCjs()?"CommonJS":"ESM"}`),o.startClientReportTracking(),function(){if(!1!==d.envToBool(process.env.SENTRY_USE_ENVIRONMENT)){let a=process.env.SENTRY_TRACE,b=process.env.SENTRY_BAGGAGE,c=d.propagationContextFromHeaders(a,b);d.getCurrentScope().setPropagationContext(c)}}(),e.enhanceDscWithOpenTelemetryRootSpanName(o),e.setupEventContextTrace(o),process.env.VERCEL&&process.on("SIGTERM",async()=>{await o.flush(200)}),o}c.getDefaultIntegrations=y,c.init=function(a={}){return z(a,y)},c.initWithoutDefaultIntegrations=function(a={}){return z(a,()=>[])},c.validateOpenTelemetrySetup=function(){if(!f.DEBUG_BUILD)return;let a=e.openTelemetrySetupCheck(),b=["SentryContextManager","SentryPropagator"];for(let c of(d.hasSpansEnabled()&&b.push("SentrySpanProcessor"),b))a.includes(c)||d.debug.error(`You have to set up the ${c}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);a.includes("SentrySampler")||d.debug.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}},284211,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(960535);c.setIsolationScope=function(a){let b=e.getScopesFromContext(d.context.active());b&&(b.isolationScope=a)}},509014,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(226798);c.createMissingInstrumentationContext=a=>({package:a,"javascript.is_cjs":d.isCjs()})},495406,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(509014),g=a.r(226798);c.ensureIsWrapped=function(a,b){let c=e.getClient()?.getOptions();!c?.disableInstrumentationWarnings&&!d.isWrapped(a)&&e.isEnabled()&&e.hasSpansEnabled(c)&&(e.consoleSandbox(()=>{g.isCjs()?console.warn(`[Sentry] ${b} is not instrumented. This is likely because you required/imported ${b} before calling \`Sentry.init()\`.`):console.warn(`[Sentry] ${b} is not instrumented. Please make sure to initialize Sentry in a separate file that you \`--import\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${b}/install/esm/.`)}),e.getGlobalScope().setContext("missing_instrumentation",f.createMissingInstrumentationContext(b)))}},406219,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(812057),e=a.r(925127),f=a.r(97153),g=a.r(176004),h=a.r(985313),{isPromise:i}=d.types,j="LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ3LjAgKGE1YTRlNzMpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyB0fWZyb20ibm9kZTppbnNwZWN0b3IiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIG4scGFyZW50UG9ydCBhcyBlfWZyb20ibm9kZTp3b3JrZXJfdGhyZWFkcyI7aW1wb3J0e3Bvc2l4IGFzIHIsc2VwIGFzIG99ZnJvbSJub2RlOnBhdGgiO2ltcG9ydCphcyBpIGZyb20ibm9kZTpodHRwIjtpbXBvcnQqYXMgcyBmcm9tIm5vZGU6aHR0cHMiO2ltcG9ydHtSZWFkYWJsZSBhcyBjfWZyb20ibm9kZTpzdHJlYW0iO2ltcG9ydHtjcmVhdGVHemlwIGFzIHV9ZnJvbSJub2RlOnpsaWIiO2ltcG9ydCphcyBhIGZyb20ibm9kZTpuZXQiO2ltcG9ydCphcyBmIGZyb20ibm9kZTp0bHMiO2NvbnN0IGg9InVuZGVmaW5lZCI9PXR5cGVvZiBfX1NFTlRSWV9ERUJVR19ffHxfX1NFTlRSWV9ERUJVR19fLHA9Z2xvYmFsVGhpcyxkPSIxMC40Ny4wIjtmdW5jdGlvbiBsKCl7cmV0dXJuIG0ocCkscH1mdW5jdGlvbiBtKHQpe2NvbnN0IG49dC5fX1NFTlRSWV9fPXQuX19TRU5UUllfX3x8e307cmV0dXJuIG4udmVyc2lvbj1uLnZlcnNpb258fGQsbltkXT1uW2RdfHx7fX1mdW5jdGlvbiBnKHQsbixlPXApe2NvbnN0IHI9ZS5fX1NFTlRSWV9fPWUuX19TRU5UUllfX3x8e30sbz1yW2RdPXJbZF18fHt9O3JldHVybiBvW3RdfHwob1t0XT1uKCkpfWNvbnN0IHk9e307ZnVuY3Rpb24gYih0KXtpZighKCJjb25zb2xlImluIHApKXJldHVybiB0KCk7Y29uc3Qgbj1wLmNvbnNvbGUsZT17fSxyPU9iamVjdC5rZXlzKHkpO3IuZm9yRWFjaCh0PT57Y29uc3Qgcj15W3RdO2VbdF09blt0XSxuW3RdPXJ9KTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3IuZm9yRWFjaCh0PT57blt0XT1lW3RdfSl9fWZ1bmN0aW9uIHYoKXtyZXR1cm4gdygpLmVuYWJsZWR9ZnVuY3Rpb24gXyh0LC4uLm4pe2gmJnYoKSYmYigoKT0+e3AuY29uc29sZVt0XShgU2VudHJ5IExvZ2dlciBbJHt0fV06YCwuLi5uKX0pfWZ1bmN0aW9uIHcoKXtyZXR1cm4gaD9nKCJsb2dnZXJTZXR0aW5ncyIsKCk9Pih7ZW5hYmxlZDohMX0pKTp7ZW5hYmxlZDohMX19Y29uc3QgUz17ZW5hYmxlOmZ1bmN0aW9uKCl7dygpLmVuYWJsZWQ9ITB9LGRpc2FibGU6ZnVuY3Rpb24oKXt3KCkuZW5hYmxlZD0hMX0saXNFbmFibGVkOnYsbG9nOmZ1bmN0aW9uKC4uLnQpe18oImxvZyIsLi4udCl9LHdhcm46ZnVuY3Rpb24oLi4udCl7Xygid2FybiIsLi4udCl9LGVycm9yOmZ1bmN0aW9uKC4uLnQpe18oImVycm9yIiwuLi50KX19LCQ9L2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vO2Z1bmN0aW9uIEUodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV18fHt9fWNvbnN0IHg9Ijxhbm9ueW1vdXM+Ijtjb25zdCBOPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gaih0LG4pe3JldHVybiBOLmNhbGwodCk9PT1gW29iamVjdCAke259XWB9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gaih0LCJTdHJpbmciKX1mdW5jdGlvbiBBKHQpe3JldHVybiBqKHQsIk9iamVjdCIpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEJvb2xlYW4odD8udGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbil9ZnVuY3Rpb24gayh0LG4pe3RyeXtyZXR1cm4gdCBpbnN0YW5jZW9mIG59Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEk9cDtmdW5jdGlvbiBPKHQsbil7Y29uc3QgZT10LHI9W107aWYoIWU/LnRhZ05hbWUpcmV0dXJuIiI7aWYoSS5IVE1MRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZlLmRhdGFzZXQpe2lmKGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQ7aWYoZS5kYXRhc2V0LnNlbnRyeUVsZW1lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlFbGVtZW50fXIucHVzaChlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSk7Y29uc3Qgbz1uPy5sZW5ndGg/bi5maWx0ZXIodD0+ZS5nZXRBdHRyaWJ1dGUodCkpLm1hcCh0PT5bdCxlLmdldEF0dHJpYnV0ZSh0KV0pOm51bGw7aWYobz8ubGVuZ3RoKW8uZm9yRWFjaCh0PT57ci5wdXNoKGBbJHt0WzBdfT0iJHt0WzFdfSJdYCl9KTtlbHNle2UuaWQmJnIucHVzaChgIyR7ZS5pZH1gKTtjb25zdCB0PWUuY2xhc3NOYW1lO2lmKHQmJkModCkpe2NvbnN0IG49dC5zcGxpdCgvXHMrLyk7Zm9yKGNvbnN0IHQgb2YgbilyLnB1c2goYC4ke3R9YCl9fWZvcihjb25zdCB0IG9mWyJhcmlhLWxhYmVsIiwidHlwZSIsIm5hbWUiLCJ0aXRsZSIsImFsdCJdKXtjb25zdCBuPWUuZ2V0QXR0cmlidXRlKHQpO24mJnIucHVzaChgWyR7dH09IiR7bn0iXWApfXJldHVybiByLmpvaW4oIiIpfWZ1bmN0aW9uIFIodCl7aWYoZnVuY3Rpb24odCl7c3dpdGNoKE4uY2FsbCh0KSl7Y2FzZSJbb2JqZWN0IEVycm9yXSI6Y2FzZSJbb2JqZWN0IEV4Y2VwdGlvbl0iOmNhc2UiW29iamVjdCBET01FeGNlcHRpb25dIjpjYXNlIltvYmplY3QgV2ViQXNzZW1ibHkuRXhjZXB0aW9uXSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gayh0LEVycm9yKX19KHQpKXJldHVybnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrLC4uLkQodCl9O2lmKG49dCwidW5kZWZpbmVkIiE9dHlwZW9mIEV2ZW50JiZrKG4sRXZlbnQpKXtjb25zdCBuPXt0eXBlOnQudHlwZSx0YXJnZXQ6UCh0LnRhcmdldCksY3VycmVudFRhcmdldDpQKHQuY3VycmVudFRhcmdldCksLi4uRCh0KX07cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBDdXN0b21FdmVudCYmayh0LEN1c3RvbUV2ZW50KSYmKG4uZGV0YWlsPXQuZGV0YWlsKSxufXJldHVybiB0O3ZhciBufWZ1bmN0aW9uIFAodCl7dHJ5e3JldHVybiBuPXQsInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50JiZrKG4sRWxlbWVudCk/ZnVuY3Rpb24odCxuPXt9KXtpZighdClyZXR1cm4iPHVua25vd24+Ijt0cnl7bGV0IGU9dDtjb25zdCByPTUsbz1bXTtsZXQgaT0wLHM9MDtjb25zdCBjPSIgPiAiLHU9Yy5sZW5ndGg7bGV0IGE7Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP246bi5rZXlBdHRycyxoPSFBcnJheS5pc0FycmF5KG4pJiZuLm1heFN0cmluZ0xlbmd0aHx8ODA7Zm9yKDtlJiZpKys8ciYmKGE9TyhlLGYpLCEoImh0bWwiPT09YXx8aT4xJiZzK28ubGVuZ3RoKnUrYS5sZW5ndGg+PWgpKTspby5wdXNoKGEpLHMrPWEubGVuZ3RoLGU9ZS5wYXJlbnROb2RlO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGMpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifX0odCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifXZhciBufWZ1bmN0aW9uIEQodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dD9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkpOnt9fWxldCBVLEw7ZnVuY3Rpb24gTSh0KXtpZih2b2lkIDAhPT1VKXJldHVybiBVP1UodCk6dCgpO2NvbnN0IG49U3ltYm9sLmZvcigiX19TRU5UUllfU0FGRV9SQU5ET01fSURfV1JBUFBFUl9fIiksZT1wO3JldHVybiBuIGluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW25dPyhVPWVbbl0sVSh0KSk6KFU9bnVsbCx0KCkpfWZ1bmN0aW9uIEIoKXtyZXR1cm4gTSgoKT0+TWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gVygpe3JldHVybiBNKCgpPT5EYXRlLm5vdygpKX1mdW5jdGlvbiB6KHQsbj0wKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fDA9PT1ufHx0Lmxlbmd0aDw9bj90OmAke3Quc2xpY2UoMCxuKX0uLi5gfWZ1bmN0aW9uIEYodD1mdW5jdGlvbigpe2NvbnN0IHQ9cDtyZXR1cm4gdC5jcnlwdG98fHQubXNDcnlwdG99KCkpe3RyeXtpZih0Py5yYW5kb21VVUlEKXJldHVybiBNKCgpPT50LnJhbmRvbVVVSUQoKSkucmVwbGFjZSgvLS9nLCIiKX1jYXRjaHt9cmV0dXJuIEx8fChMPVsxZTddKzFlMys0ZTMrOGUzKzFlMTEpLEwucmVwbGFjZSgvWzAxOF0vZyx0PT4odF4oMTYqQigpJjE1KT4+dC80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gVygpLzFlM31sZXQgSDtmdW5jdGlvbiBKKCl7cmV0dXJuKEg/PyhIPWZ1bmN0aW9uKCl7Y29uc3R7cGVyZm9ybWFuY2U6dH09cDtpZighdD8ubm93fHwhdC50aW1lT3JpZ2luKXJldHVybiBHO2NvbnN0IG49dC50aW1lT3JpZ2luO3JldHVybigpPT4obitNKCgpPT50Lm5vdygpKSkvMWUzfSgpKSkoKX1mdW5jdGlvbiBZKHQpe2NvbnN0IG49SigpLGU9e3NpZDpGKCksaW5pdDohMCx0aW1lc3RhbXA6bixzdGFydGVkOm4sZHVyYXRpb246MCxzdGF0dXM6Im9rIixlcnJvcnM6MCxpZ25vcmVEdXJhdGlvbjohMSx0b0pTT046KCk9PmZ1bmN0aW9uKHQpe3JldHVybntzaWQ6YCR7dC5zaWR9YCxpbml0OnQuaW5pdCxzdGFydGVkOm5ldyBEYXRlKDFlMyp0LnN0YXJ0ZWQpLnRvSVNPU3RyaW5nKCksdGltZXN0YW1wOm5ldyBEYXRlKDFlMyp0LnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxzdGF0dXM6dC5zdGF0dXMsZXJyb3JzOnQuZXJyb3JzLGRpZDoibnVtYmVyIj09dHlwZW9mIHQuZGlkfHwic3RyaW5nIj09dHlwZW9mIHQuZGlkP2Ake3QuZGlkfWA6dm9pZCAwLGR1cmF0aW9uOnQuZHVyYXRpb24sYWJub3JtYWxfbWVjaGFuaXNtOnQuYWJub3JtYWxfbWVjaGFuaXNtLGF0dHJzOntyZWxlYXNlOnQucmVsZWFzZSxlbnZpcm9ubWVudDp0LmVudmlyb25tZW50LGlwX2FkZHJlc3M6dC5pcEFkZHJlc3MsdXNlcl9hZ2VudDp0LnVzZXJBZ2VudH19fShlKX07cmV0dXJuIHQmJlYoZSx0KSxlfWZ1bmN0aW9uIFYodCxuPXt9KXtpZihuLnVzZXImJighdC5pcEFkZHJlc3MmJm4udXNlci5pcF9hZGRyZXNzJiYodC5pcEFkZHJlc3M9bi51c2VyLmlwX2FkZHJlc3MpLHQuZGlkfHxuLmRpZHx8KHQuZGlkPW4udXNlci5pZHx8bi51c2VyLmVtYWlsfHxuLnVzZXIudXNlcm5hbWUpKSx0LnRpbWVzdGFtcD1uLnRpbWVzdGFtcHx8SigpLG4uYWJub3JtYWxfbWVjaGFuaXNtJiYodC5hYm5vcm1hbF9tZWNoYW5pc209bi5hYm5vcm1hbF9tZWNoYW5pc20pLG4uaWdub3JlRHVyYXRpb24mJih0Lmlnbm9yZUR1cmF0aW9uPW4uaWdub3JlRHVyYXRpb24pLG4uc2lkJiYodC5zaWQ9MzI9PT1uLnNpZC5sZW5ndGg/bi5zaWQ6RigpKSx2b2lkIDAhPT1uLmluaXQmJih0LmluaXQ9bi5pbml0KSwhdC5kaWQmJm4uZGlkJiYodC5kaWQ9YCR7bi5kaWR9YCksIm51bWJlciI9PXR5cGVvZiBuLnN0YXJ0ZWQmJih0LnN0YXJ0ZWQ9bi5zdGFydGVkKSx0Lmlnbm9yZUR1cmF0aW9uKXQuZHVyYXRpb249dm9pZCAwO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBuLmR1cmF0aW9uKXQuZHVyYXRpb249bi5kdXJhdGlvbjtlbHNle2NvbnN0IG49dC50aW1lc3RhbXAtdC5zdGFydGVkO3QuZHVyYXRpb249bj49MD9uOjB9bi5yZWxlYXNlJiYodC5yZWxlYXNlPW4ucmVsZWFzZSksbi5lbnZpcm9ubWVudCYmKHQuZW52aXJvbm1lbnQ9bi5lbnZpcm9ubWVudCksIXQuaXBBZGRyZXNzJiZuLmlwQWRkcmVzcyYmKHQuaXBBZGRyZXNzPW4uaXBBZGRyZXNzKSwhdC51c2VyQWdlbnQmJm4udXNlckFnZW50JiYodC51c2VyQWdlbnQ9bi51c2VyQWdlbnQpLCJudW1iZXIiPT10eXBlb2Ygbi5lcnJvcnMmJih0LmVycm9ycz1uLmVycm9ycyksbi5zdGF0dXMmJih0LnN0YXR1cz1uLnN0YXR1cyl9ZnVuY3Rpb24gSyh0LG4sZT0yKXtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHxlPD0wKXJldHVybiBuO2lmKHQmJjA9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IHQgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSYmKHJbdF09SyhyW3RdLG5bdF0sZS0xKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gWigpe3JldHVybiBGKCl9ZnVuY3Rpb24gcSgpe3JldHVybiBGKCkuc3Vic3RyaW5nKDE2KX1jb25zdCBRPSJfc2VudHJ5U3BhbiI7ZnVuY3Rpb24gWCh0LG4pe24/ZnVuY3Rpb24odCxuLGUpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWNhdGNoe2gmJlMubG9nKGBGYWlsZWQgdG8gYWRkIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5ICIke259IiB0byBvYmplY3RgLHQpfX0odCxRLG4pOmRlbGV0ZSB0W1FdfWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0W1FdfWNsYXNzIG50e2NvbnN0cnVjdG9yKCl7dGhpcy50PSExLHRoaXMubz1bXSx0aGlzLmk9W10sdGhpcy51PVtdLHRoaXMuaD1bXSx0aGlzLnA9e30sdGhpcy5sPXt9LHRoaXMubT17fSx0aGlzLnY9e30sdGhpcy5fPXt9LHRoaXMuUz17fSx0aGlzLk49e3RyYWNlSWQ6WigpLHNhbXBsZVJhbmQ6QigpfX1jbG9uZSgpe2NvbnN0IHQ9bmV3IG50O3JldHVybiB0LnU9Wy4uLnRoaXMudV0sdC5sPXsuLi50aGlzLmx9LHQubT17Li4udGhpcy5tfSx0LnY9ey4uLnRoaXMudn0sdC5fPXsuLi50aGlzLl99LHRoaXMuXy5mbGFncyYmKHQuXy5mbGFncz17dmFsdWVzOlsuLi50aGlzLl8uZmxhZ3MudmFsdWVzXX0pLHQucD10aGlzLnAsdC5qPXRoaXMuaix0LkM9dGhpcy5DLHQuQT10aGlzLkEsdC5UPXRoaXMuVCx0Lmk9Wy4uLnRoaXMuaV0sdC5oPVsuLi50aGlzLmhdLHQuUz17Li4udGhpcy5TfSx0Lk49ey4uLnRoaXMuTn0sdC5rPXRoaXMuayx0Lkk9dGhpcy5JLHQuTz10aGlzLk8sWCh0LHR0KHRoaXMpKSx0fXNldENsaWVudCh0KXt0aGlzLms9dH1zZXRMYXN0RXZlbnRJZCh0KXt0aGlzLkk9dH1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5rfWxhc3RFdmVudElkKCl7cmV0dXJuIHRoaXMuSX1hZGRTY29wZUxpc3RlbmVyKHQpe3RoaXMuby5wdXNoKHQpfWFkZEV2ZW50UHJvY2Vzc29yKHQpe3JldHVybiB0aGlzLmkucHVzaCh0KSx0aGlzfXNldFVzZXIodCl7cmV0dXJuIHRoaXMucD10fHx7ZW1haWw6dm9pZCAwLGlkOnZvaWQgMCxpcF9hZGRyZXNzOnZvaWQgMCx1c2VybmFtZTp2b2lkIDB9LHRoaXMuQyYmVih0aGlzLkMse3VzZXI6dH0pLHRoaXMuUigpLHRoaXN9Z2V0VXNlcigpe3JldHVybiB0aGlzLnB9c2V0Q29udmVyc2F0aW9uSWQodCl7cmV0dXJuIHRoaXMuTz10fHx2b2lkIDAsdGhpcy5SKCksdGhpc31zZXRUYWdzKHQpe3JldHVybiB0aGlzLmw9ey4uLnRoaXMubCwuLi50fSx0aGlzLlIoKSx0aGlzfXNldFRhZyh0LG4pe3JldHVybiB0aGlzLnNldFRhZ3Moe1t0XTpufSl9c2V0QXR0cmlidXRlcyh0KXtyZXR1cm4gdGhpcy5tPXsuLi50aGlzLm0sLi4udH0sdGhpcy5SKCksdGhpc31zZXRBdHRyaWJ1dGUodCxuKXtyZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVzKHtbdF06bn0pfXJlbW92ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gdCBpbiB0aGlzLm0mJihkZWxldGUgdGhpcy5tW3RdLHRoaXMuUigpKSx0aGlzfXNldEV4dHJhcyh0KXtyZXR1cm4gdGhpcy52PXsuLi50aGlzLnYsLi4udH0sdGhpcy5SKCksdGhpc31zZXRFeHRyYSh0LG4pe3JldHVybiB0aGlzLnY9ey4uLnRoaXMudixbdF06bn0sdGhpcy5SKCksdGhpc31zZXRGaW5nZXJwcmludCh0KXtyZXR1cm4gdGhpcy5UPXQsdGhpcy5SKCksdGhpc31zZXRMZXZlbCh0KXtyZXR1cm4gdGhpcy5qPXQsdGhpcy5SKCksdGhpc31zZXRUcmFuc2FjdGlvbk5hbWUodCl7cmV0dXJuIHRoaXMuQT10LHRoaXMuUigpLHRoaXN9c2V0Q29udGV4dCh0LG4pe3JldHVybiBudWxsPT09bj9kZWxldGUgdGhpcy5fW3RdOnRoaXMuX1t0XT1uLHRoaXMuUigpLHRoaXN9c2V0U2Vzc2lvbih0KXtyZXR1cm4gdD90aGlzLkM9dDpkZWxldGUgdGhpcy5DLHRoaXMuUigpLHRoaXN9Z2V0U2Vzc2lvbigpe3JldHVybiB0aGlzLkN9dXBkYXRlKHQpe2lmKCF0KXJldHVybiB0aGlzO2NvbnN0IG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dCh0aGlzKTp0LGU9biBpbnN0YW5jZW9mIG50P24uZ2V0U2NvcGVEYXRhKCk6QShuKT90OnZvaWQgMCx7dGFnczpyLGF0dHJpYnV0ZXM6byxleHRyYTppLHVzZXI6cyxjb250ZXh0czpjLGxldmVsOnUsZmluZ2VycHJpbnQ6YT1bXSxwcm9wYWdhdGlvbkNvbnRleHQ6Zixjb252ZXJzYXRpb25JZDpofT1lfHx7fTtyZXR1cm4gdGhpcy5sPXsuLi50aGlzLmwsLi4ucn0sdGhpcy5tPXsuLi50aGlzLm0sLi4ub30sdGhpcy52PXsuLi50aGlzLnYsLi4uaX0sdGhpcy5fPXsuLi50aGlzLl8sLi4uY30scyYmT2JqZWN0LmtleXMocykubGVuZ3RoJiYodGhpcy5wPXMpLHUmJih0aGlzLmo9dSksYS5sZW5ndGgmJih0aGlzLlQ9YSksZiYmKHRoaXMuTj1mKSxoJiYodGhpcy5PPWgpLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy51PVtdLHRoaXMubD17fSx0aGlzLm09e30sdGhpcy52PXt9LHRoaXMucD17fSx0aGlzLl89e30sdGhpcy5qPXZvaWQgMCx0aGlzLkE9dm9pZCAwLHRoaXMuVD12b2lkIDAsdGhpcy5DPXZvaWQgMCx0aGlzLk89dm9pZCAwLFgodGhpcyx2b2lkIDApLHRoaXMuaD1bXSx0aGlzLnNldFByb3BhZ2F0aW9uQ29udGV4dCh7dHJhY2VJZDpaKCksc2FtcGxlUmFuZDpCKCl9KSx0aGlzLlIoKSx0aGlzfWFkZEJyZWFkY3J1bWIodCxuKXtjb25zdCBlPSJudW1iZXIiPT10eXBlb2Ygbj9uOjEwMDtpZihlPD0wKXJldHVybiB0aGlzO2NvbnN0IHI9e3RpbWVzdGFtcDpHKCksLi4udCxtZXNzYWdlOnQubWVzc2FnZT96KHQubWVzc2FnZSwyMDQ4KTp0Lm1lc3NhZ2V9O3JldHVybiB0aGlzLnUucHVzaChyKSx0aGlzLnUubGVuZ3RoPmUmJih0aGlzLnU9dGhpcy51LnNsaWNlKC1lKSx0aGlzLms/LnJlY29yZERyb3BwZWRFdmVudCgiYnVmZmVyX292ZXJmbG93IiwibG9nX2l0ZW0iKSksdGhpcy5SKCksdGhpc31nZXRMYXN0QnJlYWRjcnVtYigpe3JldHVybiB0aGlzLnVbdGhpcy51Lmxlbmd0aC0xXX1jbGVhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMudT1bXSx0aGlzLlIoKSx0aGlzfWFkZEF0dGFjaG1lbnQodCl7cmV0dXJuIHRoaXMuaC5wdXNoKHQpLHRoaXN9Y2xlYXJBdHRhY2htZW50cygpe3JldHVybiB0aGlzLmg9W10sdGhpc31nZXRTY29wZURhdGEoKXtyZXR1cm57YnJlYWRjcnVtYnM6dGhpcy51LGF0dGFjaG1lbnRzOnRoaXMuaCxjb250ZXh0czp0aGlzLl8sdGFnczp0aGlzLmwsYXR0cmlidXRlczp0aGlzLm0sZXh0cmE6dGhpcy52LHVzZXI6dGhpcy5wLGxldmVsOnRoaXMuaixmaW5nZXJwcmludDp0aGlzLlR8fFtdLGV2ZW50UHJvY2Vzc29yczp0aGlzLmkscHJvcGFnYXRpb25Db250ZXh0OnRoaXMuTixzZGtQcm9jZXNzaW5nTWV0YWRhdGE6dGhpcy5TLHRyYW5zYWN0aW9uTmFtZTp0aGlzLkEsc3Bhbjp0dCh0aGlzKSxjb252ZXJzYXRpb25JZDp0aGlzLk99fXNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh0KXtyZXR1cm4gdGhpcy5TPUsodGhpcy5TLHQsMiksdGhpc31zZXRQcm9wYWdhdGlvbkNvbnRleHQodCl7cmV0dXJuIHRoaXMuTj10LHRoaXN9Z2V0UHJvcGFnYXRpb25Db250ZXh0KCl7cmV0dXJuIHRoaXMuTn1jYXB0dXJlRXhjZXB0aW9uKHQsbil7Y29uc3QgZT1uPy5ldmVudF9pZHx8RigpO2lmKCF0aGlzLmspcmV0dXJuIGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV4Y2VwdGlvbiEiKSxlO2NvbnN0IHI9bmV3IEVycm9yKCJTZW50cnkgc3ludGhldGljRXhjZXB0aW9uIik7cmV0dXJuIHRoaXMuay5jYXB0dXJlRXhjZXB0aW9uKHQse29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOnIsLi4ubixldmVudF9pZDplfSx0aGlzKSxlfWNhcHR1cmVNZXNzYWdlKHQsbixlKXtjb25zdCByPWU/LmV2ZW50X2lkfHxGKCk7aWYoIXRoaXMuaylyZXR1cm4gaCYmUy53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgbWVzc2FnZSEiKSxyO2NvbnN0IG89ZT8uc3ludGhldGljRXhjZXB0aW9uPz9uZXcgRXJyb3IodCk7cmV0dXJuIHRoaXMuay5jYXB0dXJlTWVzc2FnZSh0LG4se29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOm8sLi4uZSxldmVudF9pZDpyfSx0aGlzKSxyfWNhcHR1cmVFdmVudCh0LG4pe2NvbnN0IGU9dC5ldmVudF9pZHx8bj8uZXZlbnRfaWR8fEYoKTtyZXR1cm4gdGhpcy5rPyh0aGlzLmsuY2FwdHVyZUV2ZW50KHQsey4uLm4sZXZlbnRfaWQ6ZX0sdGhpcyksZSk6KGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50ISIpLGUpfVIoKXt0aGlzLnR8fCh0aGlzLnQ9ITAsdGhpcy5vLmZvckVhY2godD0+e3QodGhpcyl9KSx0aGlzLnQ9ITEpfX1jb25zdCBldD10PT50IGluc3RhbmNlb2YgUHJvbWlzZSYmIXRbcnRdLHJ0PVN5bWJvbCgiY2hhaW5lZCBQcm9taXNlTGlrZSIpLG90PSh0LG4pPT57bGV0IGU9ITE7Zm9yKGNvbnN0IHIgaW4gdCl7aWYociBpbiBuKWNvbnRpbnVlO2U9ITA7Y29uc3Qgbz10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBvP09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHIse3ZhbHVlOiguLi5uKT0+by5hcHBseSh0LG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vfXJldHVybiBlJiZPYmplY3QuYXNzaWduKG4se1tydF06ITB9KSxufTtjbGFzcyBpdHtjb25zdHJ1Y3Rvcih0LG4pe2xldCBlLHI7ZT10fHxuZXcgbnQscj1ufHxuZXcgbnQsdGhpcy5QPVt7c2NvcGU6ZX1dLHRoaXMuRD1yfXdpdGhTY29wZSh0KXtjb25zdCBuPXRoaXMuVSgpO2xldCBlO3RyeXtlPXQobil9Y2F0Y2godCl7dGhyb3cgdGhpcy5MKCksdH1yZXR1cm4gVChlKT8oKHQsbixlKT0+e2NvbnN0IHI9dC50aGVuKHQ9PihuKHQpLHQpLHQ9Pnt0aHJvdyBlKHQpLHR9KTtyZXR1cm4gZXQocikmJmV0KHQpP3I6b3QodCxyKX0pKGUsKCk9PnRoaXMuTCgpLCgpPT50aGlzLkwoKSk6KHRoaXMuTCgpLGUpfWdldENsaWVudCgpe3JldHVybiB0aGlzLmdldFN0YWNrVG9wKCkuY2xpZW50fWdldFNjb3BlKCl7cmV0dXJuIHRoaXMuZ2V0U3RhY2tUb3AoKS5zY29wZX1nZXRJc29sYXRpb25TY29wZSgpe3JldHVybiB0aGlzLkR9Z2V0U3RhY2tUb3AoKXtyZXR1cm4gdGhpcy5QW3RoaXMuUC5sZW5ndGgtMV19VSgpe2NvbnN0IHQ9dGhpcy5nZXRTY29wZSgpLmNsb25lKCk7cmV0dXJuIHRoaXMuUC5wdXNoKHtjbGllbnQ6dGhpcy5nZXRDbGllbnQoKSxzY29wZTp0fSksdH1MKCl7cmV0dXJuISh0aGlzLlAubGVuZ3RoPD0xKSYmISF0aGlzLlAucG9wKCl9fWZ1bmN0aW9uIHN0KCl7Y29uc3QgdD1tKGwoKSk7cmV0dXJuIHQuc3RhY2s9dC5zdGFja3x8bmV3IGl0KGcoImRlZmF1bHRDdXJyZW50U2NvcGUiLCgpPT5uZXcgbnQpLGcoImRlZmF1bHRJc29sYXRpb25TY29wZSIsKCk9Pm5ldyBudCkpfWZ1bmN0aW9uIGN0KHQpe3JldHVybiBzdCgpLndpdGhTY29wZSh0KX1mdW5jdGlvbiB1dCh0LG4pe2NvbnN0IGU9c3QoKTtyZXR1cm4gZS53aXRoU2NvcGUoKCk9PihlLmdldFN0YWNrVG9wKCkuc2NvcGU9dCxuKHQpKSl9ZnVuY3Rpb24gYXQodCl7cmV0dXJuIHN0KCkud2l0aFNjb3BlKCgpPT50KHN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKSkpfWZ1bmN0aW9uIGZ0KHQpe2NvbnN0IG49bSh0KTtyZXR1cm4gbi5hY3M/bi5hY3M6e3dpdGhJc29sYXRpb25TY29wZTphdCx3aXRoU2NvcGU6Y3Qsd2l0aFNldFNjb3BlOnV0LHdpdGhTZXRJc29sYXRpb25TY29wZToodCxuKT0+YXQobiksZ2V0Q3VycmVudFNjb3BlOigpPT5zdCgpLmdldFNjb3BlKCksZ2V0SXNvbGF0aW9uU2NvcGU6KCk9PnN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKX19ZnVuY3Rpb24gaHQoKXtyZXR1cm4gZnQobCgpKS5nZXRDdXJyZW50U2NvcGUoKS5nZXRDbGllbnQoKX1mdW5jdGlvbiBwdCh0KXtpZih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJiJkZXJlZiJpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5kZXJlZil0cnl7cmV0dXJuIHQuZGVyZWYoKX1jYXRjaHtyZXR1cm59cmV0dXJuIHR9fWZ1bmN0aW9uIGR0KHQpe2NvbnN0IG49dDtyZXR1cm57c2NvcGU6bi5fc2VudHJ5U2NvcGUsaXNvbGF0aW9uU2NvcGU6cHQobi5fc2VudHJ5SXNvbGF0aW9uU2NvcGUpfX1jb25zdCBsdD0ic2VudHJ5LSI7ZnVuY3Rpb24gbXQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdHx8IUModCkmJiFBcnJheS5pc0FycmF5KHQpKXJldHVybjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGU9Z3Qobik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtuLGVdKT0+e3Rbbl09ZX0pLHR9LHt9KTtyZXR1cm4gZ3QodCl9KHQpO2lmKCFuKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgodCxbbixlXSk9PntpZihuLnN0YXJ0c1dpdGgobHQpKXt0W24uc2xpY2UoNyldPWV9cmV0dXJuIHR9LHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjA/ZTp2b2lkIDB9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAodD0+e2NvbnN0IG49dC5pbmRleE9mKCI9Iik7aWYoLTE9PT1uKXJldHVybltdO3JldHVyblt0LnNsaWNlKDAsbiksdC5zbGljZShuKzEpXS5tYXAodD0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQudHJpbSgpKX1jYXRjaHtyZXR1cm59fSl9KS5yZWR1Y2UoKHQsW24sZV0pPT4obiYmZSYmKHRbbl09ZSksdCkse30pfWNvbnN0IHl0PS9ebyhcZCspXC4vO2Z1bmN0aW9uIGJ0KHQsbj0hMSl7Y29uc3R7aG9zdDplLHBhdGg6cixwYXNzOm8scG9ydDppLHByb2plY3RJZDpzLHByb3RvY29sOmMscHVibGljS2V5OnV9PXQ7cmV0dXJuYCR7Y306Ly8ke3V9JHtuJiZvP2A6JHtvfWA6IiJ9QCR7ZX0ke2k/YDoke2l9YDoiIn0vJHtyP2Ake3J9L2A6cn0ke3N9YH1mdW5jdGlvbiB2dCh0KXtjb25zdCBuPXQuZ2V0T3B0aW9ucygpLHtob3N0OmV9PXQuZ2V0RHNuKCl8fHt9O2xldCByO3JldHVybiBuLm9yZ0lkP3I9U3RyaW5nKG4ub3JnSWQpOmUmJihyPWZ1bmN0aW9uKHQpe2NvbnN0IG49dC5tYXRjaCh5dCk7cmV0dXJuIG4/LlsxXX0oZSkpLHJ9ZnVuY3Rpb24gX3QodCl7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplLGlzUmVtb3RlOnJ9PXQuc3BhbkNvbnRleHQoKSxvPXI/bjpFdCh0KS5wYXJlbnRfc3Bhbl9pZCxpPWR0KHQpLnNjb3BlO3JldHVybntwYXJlbnRfc3Bhbl9pZDpvLHNwYW5faWQ6cj9pPy5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKS5wcm9wYWdhdGlvblNwYW5JZHx8cSgpOm4sdHJhY2VfaWQ6ZX19ZnVuY3Rpb24gd3QodCl7cmV0dXJuIHQmJnQubGVuZ3RoPjA/dC5tYXAoKHtjb250ZXh0OntzcGFuSWQ6dCx0cmFjZUlkOm4sdHJhY2VGbGFnczplLC4uLnJ9LGF0dHJpYnV0ZXM6b30pPT4oe3NwYW5faWQ6dCx0cmFjZV9pZDpuLHNhbXBsZWQ6MT09PWUsYXR0cmlidXRlczpvLC4uLnJ9KSk6dm9pZCAwfWZ1bmN0aW9uIFN0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD8kdCh0KTpBcnJheS5pc0FycmF5KHQpP3RbMF0rdFsxXS8xZTk6dCBpbnN0YW5jZW9mIERhdGU/JHQodC5nZXRUaW1lKCkpOkooKX1mdW5jdGlvbiAkdCh0KXtyZXR1cm4gdD45OTk5OTk5OTk5P3QvMWUzOnR9ZnVuY3Rpb24gRXQodCl7aWYoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0U3BhbkpTT059KHQpKXJldHVybiB0LmdldFNwYW5KU09OKCk7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplfT10LnNwYW5Db250ZXh0KCk7aWYoZnVuY3Rpb24odCl7Y29uc3Qgbj10O3JldHVybiEhKG4uYXR0cmlidXRlcyYmbi5zdGFydFRpbWUmJm4ubmFtZSYmbi5lbmRUaW1lJiZuLnN0YXR1cyl9KHQpKXtjb25zdHthdHRyaWJ1dGVzOnIsc3RhcnRUaW1lOm8sbmFtZTppLGVuZFRpbWU6cyxzdGF0dXM6YyxsaW5rczp1fT10O3JldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxkYXRhOnIsZGVzY3JpcHRpb246aSxwYXJlbnRfc3Bhbl9pZDoicGFyZW50U3BhbklkImluIHQ/dC5wYXJlbnRTcGFuSWQ6InBhcmVudFNwYW5Db250ZXh0ImluIHQ/dC5wYXJlbnRTcGFuQ29udGV4dD8uc3BhbklkOnZvaWQgMCxzdGFydF90aW1lc3RhbXA6U3QobyksdGltZXN0YW1wOlN0KHMpfHx2b2lkIDAsc3RhdHVzOnh0KGMpLG9wOnJbInNlbnRyeS5vcCJdLG9yaWdpbjpyWyJzZW50cnkub3JpZ2luIl0sbGlua3M6d3QodSl9fXJldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxzdGFydF90aW1lc3RhbXA6MCxkYXRhOnt9fX1mdW5jdGlvbiB4dCh0KXtpZih0JiYwIT09dC5jb2RlKXJldHVybiAxPT09dC5jb2RlPyJvayI6dC5tZXNzYWdlfHwiaW50ZXJuYWxfZXJyb3IifWZ1bmN0aW9uIE50KHQpe3JldHVybiB0Ll9zZW50cnlSb290U3Bhbnx8dH1mdW5jdGlvbiBqdCh0KXtjb25zdCBuPWh0KCk7aWYoIW4pcmV0dXJue307Y29uc3QgZT1OdCh0KSxyPUV0KGUpLG89ci5kYXRhLGk9ZS5zcGFuQ29udGV4dCgpLnRyYWNlU3RhdGUscz1pPy5nZXQoInNlbnRyeS5zYW1wbGVfcmF0ZSIpPz9vWyJzZW50cnkuc2FtcGxlX3JhdGUiXT8/b1sic2VudHJ5LnByZXZpb3VzX3RyYWNlX3NhbXBsZV9yYXRlIl07ZnVuY3Rpb24gYyh0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHMmJiJzdHJpbmciIT10eXBlb2Ygc3x8KHQuc2FtcGxlX3JhdGU9YCR7c31gKSx0fWNvbnN0IHU9ZS5fZnJvemVuRHNjO2lmKHUpcmV0dXJuIGModSk7Y29uc3QgYT1pPy5nZXQoInNlbnRyeS5kc2MiKSxmPWEmJm10KGEpO2lmKGYpcmV0dXJuIGMoZik7Y29uc3QgaD1mdW5jdGlvbih0LG4pe2NvbnN0IGU9bi5nZXRPcHRpb25zKCkse3B1YmxpY0tleTpyfT1uLmdldERzbigpfHx7fSxvPXtlbnZpcm9ubWVudDplLmVudmlyb25tZW50fHwicHJvZHVjdGlvbiIscmVsZWFzZTplLnJlbGVhc2UscHVibGljX2tleTpyLHRyYWNlX2lkOnQsb3JnX2lkOnZ0KG4pfTtyZXR1cm4gbi5lbWl0KCJjcmVhdGVEc2MiLG8pLG99KHQuc3BhbkNvbnRleHQoKS50cmFjZUlkLG4pLHA9b1sic2VudHJ5LnNvdXJjZSJdLGQ9ci5kZXNjcmlwdGlvbjtyZXR1cm4idXJsIiE9PXAmJmQmJihoLnRyYW5zYWN0aW9uPWQpLGZ1bmN0aW9uKCl7aWYoImJvb2xlYW4iPT10eXBlb2YgX19TRU5UUllfVFJBQ0lOR19fJiYhX19TRU5UUllfVFJBQ0lOR19fKXJldHVybiExO2NvbnN0IHQ9aHQoKT8uZ2V0T3B0aW9ucygpO3JldHVybiEoIXR8fG51bGw9PXQudHJhY2VzU2FtcGxlUmF0ZSYmIXQudHJhY2VzU2FtcGxlcil9KCkmJihoLnNhbXBsZWQ9U3RyaW5nKGZ1bmN0aW9uKHQpe2NvbnN0e3RyYWNlRmxhZ3M6bn09dC5zcGFuQ29udGV4dCgpO3JldHVybiAxPT09bn0oZSkpLGguc2FtcGxlX3JhbmQ9aT8uZ2V0KCJzZW50cnkuc2FtcGxlX3JhbmQiKT8/ZHQoZSkuc2NvcGU/LmdldFByb3BhZ2F0aW9uQ29udGV4dCgpLnNhbXBsZVJhbmQudG9TdHJpbmcoKSksYyhoKSxuLmVtaXQoImNyZWF0ZURzYyIsaCxlKSxofWZ1bmN0aW9uIEN0KHQsbj0xMDAsZT0xLzApe3RyeXtyZXR1cm4gQXQoIiIsdCxuLGUpfWNhdGNoKHQpe3JldHVybntFUlJPUjpgKipub24tc2VyaWFsaXphYmxlKiogKCR7dH0pYH19fWZ1bmN0aW9uIEF0KHQsbixlPTEvMCxyPTEvMCxvPWZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgV2Vha1NldDtmdW5jdGlvbiBuKG4pe3JldHVybiEhdC5oYXMobil8fCh0LmFkZChuKSwhMSl9ZnVuY3Rpb24gZShuKXt0LmRlbGV0ZShuKX1yZXR1cm5bbixlXX0oKSl7Y29uc3RbaSxzXT1vO2lmKG51bGw9PW58fFsiYm9vbGVhbiIsInN0cmluZyJdLmluY2x1ZGVzKHR5cGVvZiBuKXx8Im51bWJlciI9PXR5cGVvZiBuJiZOdW1iZXIuaXNGaW5pdGUobikpcmV0dXJuIG47Y29uc3QgYz1mdW5jdGlvbih0LG4pe3RyeXtpZigiZG9tYWluIj09PXQmJm4mJiJvYmplY3QiPT10eXBlb2YgbiYmbi5NKXJldHVybiJbRG9tYWluXSI7aWYoImRvbWFpbkVtaXR0ZXIiPT09dClyZXR1cm4iW0RvbWFpbkVtaXR0ZXJdIjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbj09PWdsb2JhbClyZXR1cm4iW0dsb2JhbF0iO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZuPT09d2luZG93KXJldHVybiJbV2luZG93XSI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmbj09PWRvY3VtZW50KXJldHVybiJbRG9jdW1lbnRdIjtpZigib2JqZWN0Ij09dHlwZW9mKGU9bikmJm51bGwhPT1lJiYoZS5fX2lzVnVlfHxlLkJ8fGUuX192X2lzVk5vZGUpKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4iX192X2lzVk5vZGUiaW4gdCYmdC5fX3ZfaXNWTm9kZT8iW1Z1ZVZOb2RlXSI6IltWdWVWaWV3TW9kZWxdIn0obik7aWYoZnVuY3Rpb24odCl7cmV0dXJuIEEodCkmJiJuYXRpdmVFdmVudCJpbiB0JiYicHJldmVudERlZmF1bHQiaW4gdCYmInN0b3BQcm9wYWdhdGlvbiJpbiB0fShuKSlyZXR1cm4iW1N5bnRoZXRpY0V2ZW50XSI7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYhTnVtYmVyLmlzRmluaXRlKG4pKXJldHVybmBbJHtufV1gO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybmBbRnVuY3Rpb246ICR7ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5uYW1lfHx4fWNhdGNoe3JldHVybiB4fX0obil9XWA7aWYoInN5bWJvbCI9PXR5cGVvZiBuKXJldHVybmBbJHtTdHJpbmcobil9XWA7aWYoImJpZ2ludCI9PXR5cGVvZiBuKXJldHVybmBbQmlnSW50OiAke1N0cmluZyhuKX1dYDtjb25zdCByPWZ1bmN0aW9uKHQpe2NvbnN0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBuPy5jb25zdHJ1Y3Rvcj9uLmNvbnN0cnVjdG9yLm5hbWU6Im51bGwgcHJvdG90eXBlIn0obik7cmV0dXJuL15IVE1MKFx3KilFbGVtZW50JC8udGVzdChyKT9gW0hUTUxFbGVtZW50OiAke3J9XWA6YFtvYmplY3QgJHtyfV1gfWNhdGNoKHQpe3JldHVybmAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHt0fSlgfXZhciBlfSh0LG4pO2lmKCFjLnN0YXJ0c1dpdGgoIltvYmplY3QgIikpcmV0dXJuIGM7aWYobi5fX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXylyZXR1cm4gbjtjb25zdCB1PSJudW1iZXIiPT10eXBlb2Ygbi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18/bi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX186ZTtpZigwPT09dSlyZXR1cm4gYy5yZXBsYWNlKCJvYmplY3QgIiwiIik7aWYoaShuKSlyZXR1cm4iW0NpcmN1bGFyIH5dIjtjb25zdCBhPW47aWYoYSYmImZ1bmN0aW9uIj09dHlwZW9mIGEudG9KU09OKXRyeXtyZXR1cm4gQXQoIiIsYS50b0pTT04oKSx1LTEscixvKX1jYXRjaHt9Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP1tdOnt9O2xldCBoPTA7Y29uc3QgcD1SKG4pO2Zvcihjb25zdCB0IGluIHApe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCx0KSljb250aW51ZTtpZihoPj1yKXtmW3RdPSJbTWF4UHJvcGVydGllcyB+XSI7YnJlYWt9Y29uc3Qgbj1wW3RdO2ZbdF09QXQodCxuLHUtMSxyLG8pLGgrK31yZXR1cm4gcyhuKSxmfWZ1bmN0aW9uIFR0KHQsbil7Y29uc3QgZT1uLnJlcGxhY2UoL1xcL2csIi8iKS5yZXBsYWNlKC9bfFxce30oKVtcXV4kKyo/Ll0vZywiXFwkJiIpO2xldCByPXQ7dHJ5e3I9ZGVjb2RlVVJJKHQpfWNhdGNoe31yZXR1cm4gci5yZXBsYWNlKC9cXC9nLCIvIikucmVwbGFjZSgvd2VicGFjazpcLz8vZywiIikucmVwbGFjZShuZXcgUmVnRXhwKGAoZmlsZTovLyk/Lyoke2V9LypgLCJpZyIpLCJhcHA6Ly8vIil9ZnVuY3Rpb24ga3QodCxuPVtdKXtyZXR1cm5bdCxuXX1mdW5jdGlvbiBJdCh0LG4pe2NvbnN0IGU9dFsxXTtmb3IoY29uc3QgdCBvZiBlKXtpZihuKHQsdFswXS50eXBlKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBPdCh0KXtjb25zdCBuPW0ocCk7cmV0dXJuIG4uZW5jb2RlUG9seWZpbGw/bi5lbmNvZGVQb2x5ZmlsbCh0KToobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodCl9ZnVuY3Rpb24gUnQodCl7Y29uc3RbbixlXT10O2xldCByPUpTT04uc3RyaW5naWZ5KG4pO2Z1bmN0aW9uIG8odCl7InN0cmluZyI9PXR5cGVvZiByP3I9InN0cmluZyI9PXR5cGVvZiB0P3IrdDpbT3QociksdF06ci5wdXNoKCJzdHJpbmciPT10eXBlb2YgdD9PdCh0KTp0KX1mb3IoY29uc3QgdCBvZiBlKXtjb25zdFtuLGVdPXQ7aWYobyhgXG4ke0pTT04uc3RyaW5naWZ5KG4pfVxuYCksInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSlvKGUpO2Vsc2V7bGV0IHQ7dHJ5e3Q9SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2h7dD1KU09OLnN0cmluZ2lmeShDdChlKSl9byh0KX19cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3I6ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnJlZHVjZSgodCxuKT0+dCtuLmxlbmd0aCwwKSxlPW5ldyBVaW50OEFycmF5KG4pO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgdCllLnNldChuLHIpLHIrPW4ubGVuZ3RoO3JldHVybiBlfShyKX1jb25zdCBQdD17c2Vzc2lvbnM6InNlc3Npb24iLGV2ZW50OiJlcnJvciIsY2xpZW50X3JlcG9ydDoiaW50ZXJuYWwiLHVzZXJfcmVwb3J0OiJkZWZhdWx0Iixwcm9maWxlX2NodW5rOiJwcm9maWxlIixyZXBsYXlfZXZlbnQ6InJlcGxheSIscmVwbGF5X3JlY29yZGluZzoicmVwbGF5IixjaGVja19pbjoibW9uaXRvciIscmF3X3NlY3VyaXR5OiJzZWN1cml0eSIsbG9nOiJsb2dfaXRlbSIsdHJhY2VfbWV0cmljOiJtZXRyaWMifTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gUHR9KHQpP1B0W3RdOnR9ZnVuY3Rpb24gVXQodCl7aWYoIXQ/LnNkaylyZXR1cm47Y29uc3R7bmFtZTpuLHZlcnNpb246ZX09dC5zZGs7cmV0dXJue25hbWU6bix2ZXJzaW9uOmV9fWZ1bmN0aW9uIEx0KHQsbixlLHIpe2NvbnN0IG89VXQoZSksaT10LnR5cGUmJiJyZXBsYXlfZXZlbnQiIT09dC50eXBlP3QudHlwZToiZXZlbnQiOyFmdW5jdGlvbih0LG4pe2lmKCFuKXJldHVybiB0O2NvbnN0IGU9dC5zZGt8fHt9O3Quc2RrPXsuLi5lLG5hbWU6ZS5uYW1lfHxuLm5hbWUsdmVyc2lvbjplLnZlcnNpb258fG4udmVyc2lvbixpbnRlZ3JhdGlvbnM6Wy4uLnQuc2RrPy5pbnRlZ3JhdGlvbnN8fFtdLC4uLm4uaW50ZWdyYXRpb25zfHxbXV0scGFja2FnZXM6Wy4uLnQuc2RrPy5wYWNrYWdlc3x8W10sLi4ubi5wYWNrYWdlc3x8W11dLHNldHRpbmdzOnQuc2RrPy5zZXR0aW5nc3x8bi5zZXR0aW5ncz97Li4udC5zZGs/LnNldHRpbmdzLC4uLm4uc2V0dGluZ3N9OnZvaWQgMH19KHQsZT8uc2RrKTtjb25zdCBzPWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89dC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE/LmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7cmV0dXJue2V2ZW50X2lkOnQuZXZlbnRfaWQsc2VudF9hdDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCksLi4ubiYme3NkazpufSwuLi4hIWUmJnImJntkc246YnQocil9LC4uLm8mJnt0cmFjZTpvfX19KHQsbyxyLG4pO2RlbGV0ZSB0LnNka1Byb2Nlc3NpbmdNZXRhZGF0YTtyZXR1cm4ga3QocyxbW3t0eXBlOml9LHRdXSl9Y29uc3QgTXQ9Il9fU0VOVFJZX1NVUFBSRVNTX1RSQUNJTkdfXyI7ZnVuY3Rpb24gQnQodCl7Y29uc3Qgbj1mdChsKCkpO3JldHVybiBuLnN1cHByZXNzVHJhY2luZz9uLnN1cHByZXNzVHJhY2luZyh0KTpmdW5jdGlvbiguLi50KXtjb25zdCBuPWZ0KGwoKSk7aWYoMj09PXQubGVuZ3RoKXtjb25zdFtlLHJdPXQ7cmV0dXJuIGU/bi53aXRoU2V0U2NvcGUoZSxyKTpuLndpdGhTY29wZShyKX1yZXR1cm4gbi53aXRoU2NvcGUodFswXSl9KG49PntuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTohMH0pO2NvbnN0IGU9dCgpO3JldHVybiBuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTp2b2lkIDB9KSxlfSl9Y2xhc3MgV3R7Y29uc3RydWN0b3IodCl7dGhpcy5XPTAsdGhpcy5GPVtdLHRoaXMuRyh0KX10aGVuKHQsbil7cmV0dXJuIG5ldyBXdCgoZSxyKT0+e3RoaXMuRi5wdXNoKFshMSxuPT57aWYodCl0cnl7ZSh0KG4pKX1jYXRjaCh0KXtyKHQpfWVsc2UgZShuKX0sdD0+e2lmKG4pdHJ5e2Uobih0KSl9Y2F0Y2godCl7cih0KX1lbHNlIHIodCl9XSksdGhpcy5IKCl9KX1jYXRjaCh0KXtyZXR1cm4gdGhpcy50aGVuKHQ9PnQsdCl9ZmluYWxseSh0KXtyZXR1cm4gbmV3IFd0KChuLGUpPT57bGV0IHIsbztyZXR1cm4gdGhpcy50aGVuKG49PntvPSExLHI9bix0JiZ0KCl9LG49PntvPSEwLHI9bix0JiZ0KCl9KS50aGVuKCgpPT57bz9lKHIpOm4ocil9KX0pfUgoKXtpZigwPT09dGhpcy5XKXJldHVybjtjb25zdCB0PXRoaXMuRi5zbGljZSgpO3RoaXMuRj1bXSx0LmZvckVhY2godD0+e3RbMF18fCgxPT09dGhpcy5XJiZ0WzFdKHRoaXMuSiksMj09PXRoaXMuVyYmdFsyXSh0aGlzLkopLHRbMF09ITApfSl9Ryh0KXtjb25zdCBuPSh0LG4pPT57MD09PXRoaXMuVyYmKFQobik/bi50aGVuKGUscik6KHRoaXMuVz10LHRoaXMuSj1uLHRoaXMuSCgpKSl9LGU9dD0+e24oMSx0KX0scj10PT57bigyLHQpfTt0cnl7dChlLHIpfWNhdGNoKHQpe3IodCl9fX1mdW5jdGlvbiB6dCh0LG4pe2NvbnN0e2ZpbmdlcnByaW50OmUsc3BhbjpyLGJyZWFkY3J1bWJzOm8sc2RrUHJvY2Vzc2luZ01ldGFkYXRhOml9PW47IWZ1bmN0aW9uKHQsbil7Y29uc3R7ZXh0cmE6ZSx0YWdzOnIsdXNlcjpvLGNvbnRleHRzOmksbGV2ZWw6cyx0cmFuc2FjdGlvbk5hbWU6Y309bjtPYmplY3Qua2V5cyhlKS5sZW5ndGgmJih0LmV4dHJhPXsuLi5lLC4uLnQuZXh0cmF9KTtPYmplY3Qua2V5cyhyKS5sZW5ndGgmJih0LnRhZ3M9ey4uLnIsLi4udC50YWdzfSk7T2JqZWN0LmtleXMobykubGVuZ3RoJiYodC51c2VyPXsuLi5vLC4uLnQudXNlcn0pO09iamVjdC5rZXlzKGkpLmxlbmd0aCYmKHQuY29udGV4dHM9ey4uLmksLi4udC5jb250ZXh0c30pO3MmJih0LmxldmVsPXMpO2MmJiJ0cmFuc2FjdGlvbiIhPT10LnR5cGUmJih0LnRyYW5zYWN0aW9uPWMpfSh0LG4pLHImJmZ1bmN0aW9uKHQsbil7dC5jb250ZXh0cz17dHJhY2U6X3QobiksLi4udC5jb250ZXh0c30sdC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE9e2R5bmFtaWNTYW1wbGluZ0NvbnRleHQ6anQobiksLi4udC5zZGtQcm9jZXNzaW5nTWV0YWRhdGF9O2NvbnN0IGU9TnQobikscj1FdChlKS5kZXNjcmlwdGlvbjtyJiYhdC50cmFuc2FjdGlvbiYmInRyYW5zYWN0aW9uIj09PXQudHlwZSYmKHQudHJhbnNhY3Rpb249cil9KHQsciksZnVuY3Rpb24odCxuKXt0LmZpbmdlcnByaW50PXQuZmluZ2VycHJpbnQ/QXJyYXkuaXNBcnJheSh0LmZpbmdlcnByaW50KT90LmZpbmdlcnByaW50Olt0LmZpbmdlcnByaW50XTpbXSxuJiYodC5maW5nZXJwcmludD10LmZpbmdlcnByaW50LmNvbmNhdChuKSk7dC5maW5nZXJwcmludC5sZW5ndGh8fGRlbGV0ZSB0LmZpbmdlcnByaW50fSh0LGUpLGZ1bmN0aW9uKHQsbil7Y29uc3QgZT1bLi4udC5icmVhZGNydW1ic3x8W10sLi4ubl07dC5icmVhZGNydW1icz1lLmxlbmd0aD9lOnZvaWQgMH0odCxvKSxmdW5jdGlvbih0LG4pe3Quc2RrUHJvY2Vzc2luZ01ldGFkYXRhPXsuLi50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwuLi5ufX0odCxpKX1jb25zdCBGdD1TeW1ib2wuZm9yKCJTZW50cnlCdWZmZXJGdWxsRXJyb3IiKTtmdW5jdGlvbiBHdCh0PTEwMCl7Y29uc3Qgbj1uZXcgU2V0O2Z1bmN0aW9uIGUodCl7bi5kZWxldGUodCl9cmV0dXJue2dldCAkKCl7cmV0dXJuIEFycmF5LmZyb20obil9LGFkZDpmdW5jdGlvbihyKXtpZighKG4uc2l6ZTx0KSlyZXR1cm4gbz1GdCxuZXcgV3QoKHQsbik9PntuKG8pfSk7dmFyIG87Y29uc3QgaT1yKCk7cmV0dXJuIG4uYWRkKGkpLGkudGhlbigoKT0+ZShpKSwoKT0+ZShpKSksaX0sZHJhaW46ZnVuY3Rpb24odCl7aWYoIW4uc2l6ZSlyZXR1cm4gZT0hMCxuZXcgV3QodD0+e3QoZSl9KTt2YXIgZTtjb25zdCByPVByb21pc2UuYWxsU2V0dGxlZChBcnJheS5mcm9tKG4pKS50aGVuKCgpPT4hMCk7aWYoIXQpcmV0dXJuIHI7Y29uc3Qgbz1bcixuZXcgUHJvbWlzZShuPT57cmV0dXJuIm9iamVjdCI9PXR5cGVvZihlPXNldFRpbWVvdXQoKCk9Pm4oITEpLHQpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudW5yZWYmJmUudW5yZWYoKSxlO3ZhciBlfSldO3JldHVybiBQcm9taXNlLnJhY2Uobyl9fX1mdW5jdGlvbiBIdCh0LHtzdGF0dXNDb2RlOm4saGVhZGVyczplfSxyPVcoKSl7Y29uc3Qgbz17Li4udH0saT1lPy5bIngtc2VudHJ5LXJhdGUtbGltaXRzIl0scz1lPy5bInJldHJ5LWFmdGVyIl07aWYoaSlmb3IoY29uc3QgdCBvZiBpLnRyaW0oKS5zcGxpdCgiLCIpKXtjb25zdFtuLGUsLCxpXT10LnNwbGl0KCI6Iiw1KSxzPXBhcnNlSW50KG4sMTApLGM9MWUzKihpc05hTihzKT82MDpzKTtpZihlKWZvcihjb25zdCB0IG9mIGUuc3BsaXQoIjsiKSkibWV0cmljX2J1Y2tldCI9PT10JiZpJiYhaS5zcGxpdCgiOyIpLmluY2x1ZGVzKCJjdXN0b20iKXx8KG9bdF09citjKTtlbHNlIG8uYWxsPXIrY31lbHNlIHM/by5hbGw9citmdW5jdGlvbih0LG49VygpKXtjb25zdCBlPXBhcnNlSW50KGAke3R9YCwxMCk7aWYoIWlzTmFOKGUpKXJldHVybiAxZTMqZTtjb25zdCByPURhdGUucGFyc2UoYCR7dH1gKTtyZXR1cm4gaXNOYU4ocik/NmU0OnItbn0ocyxyKTo0Mjk9PT1uJiYoby5hbGw9cis2ZTQpO3JldHVybiBvfWZ1bmN0aW9uIEp0KHQsbixlPUd0KHQuYnVmZmVyU2l6ZXx8NjQpKXtsZXQgcj17fTtyZXR1cm57c2VuZDpmdW5jdGlvbih0KXtjb25zdCBvPVtdO2lmKEl0KHQsKHQsbik9Pntjb25zdCBlPUR0KG4pOyhmdW5jdGlvbih0LG4sZT1XKCkpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB0W25dfHx0LmFsbHx8MH0odCxuKT5lfSkocixlKXx8by5wdXNoKHQpfSksMD09PW8ubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO2NvbnN0IGk9a3QodFswXSxvKSxzPXQ9PnshZnVuY3Rpb24odCxuKXtyZXR1cm4gSXQodCwodCxlKT0+bi5pbmNsdWRlcyhlKSl9KGksWyJjbGllbnRfcmVwb3J0Il0pP0l0KGksKHQsbik9Pnt9KTpoJiZTLndhcm4oYERyb3BwaW5nIGNsaWVudCByZXBvcnQuIFdpbGwgbm90IHNlbmQgb3V0Y29tZXMgKHJlYXNvbjogJHt0fSkuYCl9O3JldHVybiBlLmFkZCgoKT0+bih7Ym9keTpSdChpKX0pLnRoZW4odD0+NDEzPT09dC5zdGF0dXNDb2RlPyhoJiZTLmVycm9yKCJTZW50cnkgcmVzcG9uZGVkIHdpdGggc3RhdHVzIGNvZGUgNDEzLiBFbnZlbG9wZSB3YXMgZGlzY2FyZGVkIGR1ZSB0byBleGNlZWRpbmcgc2l6ZSBsaW1pdHMuIikscygic2VuZF9lcnJvciIpLHQpOihoJiZ2b2lkIDAhPT10LnN0YXR1c0NvZGUmJih0LnN0YXR1c0NvZGU8MjAwfHx0LnN0YXR1c0NvZGU+PTMwMCkmJlMud2FybihgU2VudHJ5IHJlc3BvbmRlZCB3aXRoIHN0YXR1cyBjb2RlICR7dC5zdGF0dXNDb2RlfSB0byBzZW50IGV2ZW50LmApLHI9SHQocix0KSx0KSx0PT57dGhyb3cgcygibmV0d29ya19lcnJvciIpLGgmJlMuZXJyb3IoIkVuY291bnRlcmVkIGVycm9yIHJ1bm5pbmcgdHJhbnNwb3J0IHJlcXVlc3Q6Iix0KSx0fSkpLnRoZW4odD0+dCx0PT57aWYodD09PUZ0KXJldHVybiBoJiZTLmVycm9yKCJTa2lwcGVkIHNlbmRpbmcgZXZlbnQgYmVjYXVzZSBidWZmZXIgaXMgZnVsbC4iKSxzKCJxdWV1ZV9vdmVyZmxvdyIpLFByb21pc2UucmVzb2x2ZSh7fSk7dGhyb3cgdH0pfSxmbHVzaDp0PT5lLmRyYWluKHQpfX1jb25zdCBZdD0vXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87ZnVuY3Rpb24gVnQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtjb25zdCBuPXQubGVuZ3RoPjEwMjQ/YDx0cnVuY2F0ZWQ+JHt0LnNsaWNlKC0xMDI0KX1gOnQsZT1ZdC5leGVjKG4pO3JldHVybiBlP2Uuc2xpY2UoMSk6W119KHQpLGU9blswXXx8IiI7bGV0IHI9blsxXTtyZXR1cm4gZXx8cj8ociYmKHI9ci5zbGljZSgwLHIubGVuZ3RoLTEpKSxlK3IpOiIuIn1mdW5jdGlvbiBLdCh0LG49ITEpe3JldHVybiEobnx8dCYmIXQuc3RhcnRzV2l0aCgiLyIpJiYhdC5tYXRjaCgvXltBLVpdOi8pJiYhdC5zdGFydHNXaXRoKCIuIikmJiF0Lm1hdGNoKC9eW2EtekEtWl0oW2EtekEtWjAtOS5cLStdKSo6XC9cLy8pKSYmdm9pZCAwIT09dCYmIXQuaW5jbHVkZXMoIm5vZGVfbW9kdWxlcy8iKX1jb25zdCBadD1TeW1ib2woIkFnZW50QmFzZUludGVybmFsU3RhdGUiKTtjbGFzcyBxdCBleHRlbmRzIGkuQWdlbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpc1tadF09e319aXNTZWN1cmVFbmRwb2ludCh0KXtpZih0KXtpZigiYm9vbGVhbiI9PXR5cGVvZiB0LnNlY3VyZUVuZHBvaW50KXJldHVybiB0LnNlY3VyZUVuZHBvaW50O2lmKCJzdHJpbmciPT10eXBlb2YgdC5wcm90b2NvbClyZXR1cm4iaHR0cHM6Ij09PXQucHJvdG9jb2x9Y29uc3R7c3RhY2s6bn09bmV3IEVycm9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmbi5zcGxpdCgiXG4iKS5zb21lKHQ9Pi0xIT09dC5pbmRleE9mKCIoaHR0cHMuanM6Iil8fC0xIT09dC5pbmRleE9mKCJub2RlOmh0dHBzOiIpKX1jcmVhdGVTb2NrZXQodCxuLGUpe2NvbnN0IHI9ey4uLm4sc2VjdXJlRW5kcG9pbnQ6dGhpcy5pc1NlY3VyZUVuZHBvaW50KG4pfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbm5lY3QodCxyKSkudGhlbihvPT57aWYobyBpbnN0YW5jZW9mIGkuQWdlbnQpcmV0dXJuIG8uYWRkUmVxdWVzdCh0LHIpO3RoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9byxzdXBlci5jcmVhdGVTb2NrZXQodCxuLGUpfSxlKX1jcmVhdGVDb25uZWN0aW9uKCl7Y29uc3QgdD10aGlzW1p0XS5jdXJyZW50U29ja2V0O2lmKHRoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9dm9pZCAwLCF0KXRocm93IG5ldyBFcnJvcigiTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24iKTtyZXR1cm4gdH1nZXQgZGVmYXVsdFBvcnQoKXtyZXR1cm4gdGhpc1tadF0uZGVmYXVsdFBvcnQ/PygiaHR0cHM6Ij09PXRoaXMucHJvdG9jb2w/NDQzOjgwKX1zZXQgZGVmYXVsdFBvcnQodCl7dGhpc1tadF0mJih0aGlzW1p0XS5kZWZhdWx0UG9ydD10KX1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpc1tadF0ucHJvdG9jb2w/Pyh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKT8iaHR0cHM6IjoiaHR0cDoiKX1zZXQgcHJvdG9jb2wodCl7dGhpc1tadF0mJih0aGlzW1p0XS5wcm90b2NvbD10KX19ZnVuY3Rpb24gUXQoLi4udCl7Uy5sb2coIltodHRwcy1wcm94eS1hZ2VudDpwYXJzZS1wcm94eS1yZXNwb25zZV0iLC4uLnQpfWZ1bmN0aW9uIFh0KHQpe3JldHVybiBuZXcgUHJvbWlzZSgobixlKT0+e2xldCByPTA7Y29uc3Qgbz1bXTtmdW5jdGlvbiBpKCl7Y29uc3QgYz10LnJlYWQoKTtjP2Z1bmN0aW9uKGMpe28ucHVzaChjKSxyKz1jLmxlbmd0aDtjb25zdCB1PUJ1ZmZlci5jb25jYXQobyxyKSxhPXUuaW5kZXhPZigiXHJcblxyXG4iKTtpZigtMT09PWEpcmV0dXJuIFF0KCJoYXZlIG5vdCByZWNlaXZlZCBlbmQgb2YgSFRUUCBoZWFkZXJzIHlldC4uLiIpLHZvaWQgaSgpO2NvbnN0IGY9dS5zdWJhcnJheSgwLGEpLnRvU3RyaW5nKCJhc2NpaSIpLnNwbGl0KCJcclxuIiksaD1mLnNoaWZ0KCk7aWYoIWgpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKCJObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlIikpO2NvbnN0IHA9aC5zcGxpdCgiICIpLGQ9KyhwWzFdfHwwKSxsPXAuc2xpY2UoMikuam9pbigiICIpLG09e307Zm9yKGNvbnN0IG4gb2YgZil7aWYoIW4pY29udGludWU7Y29uc3Qgcj1uLmluZGV4T2YoIjoiKTtpZigtMT09PXIpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKGBJbnZhbGlkIGhlYWRlciBmcm9tIHByb3h5IENPTk5FQ1QgcmVzcG9uc2U6ICIke259ImApKTtjb25zdCBvPW4uc2xpY2UoMCxyKS50b0xvd2VyQ2FzZSgpLGk9bi5zbGljZShyKzEpLnRyaW1TdGFydCgpLHM9bVtvXTsic3RyaW5nIj09dHlwZW9mIHM/bVtvXT1bcyxpXTpBcnJheS5pc0FycmF5KHMpP3MucHVzaChpKTptW29dPWl9UXQoImdvdCBwcm94eSBzZXJ2ZXIgcmVzcG9uc2U6ICVvICVvIixoLG0pLHMoKSxuKHtjb25uZWN0OntzdGF0dXNDb2RlOmQsc3RhdHVzVGV4dDpsLGhlYWRlcnM6bX0sYnVmZmVyZWQ6dX0pfShjKTp0Lm9uY2UoInJlYWRhYmxlIixpKX1mdW5jdGlvbiBzKCl7dC5yZW1vdmVMaXN0ZW5lcigiZW5kIixjKSx0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsdSksdC5yZW1vdmVMaXN0ZW5lcigicmVhZGFibGUiLGkpfWZ1bmN0aW9uIGMoKXtzKCksUXQoIm9uZW5kIiksZShuZXcgRXJyb3IoIlByb3h5IGNvbm5lY3Rpb24gZW5kZWQgYmVmb3JlIHJlY2VpdmluZyBDT05ORUNUIHJlc3BvbnNlIikpfWZ1bmN0aW9uIHUodCl7cygpLFF0KCJvbmVycm9yICVvIix0KSxlKHQpfXQub24oImVycm9yIix1KSx0Lm9uKCJlbmQiLGMpLGkoKX0pfWZ1bmN0aW9uIHRuKC4uLnQpe1MubG9nKCJbaHR0cHMtcHJveHktYWdlbnRdIiwuLi50KX1jbGFzcyBubiBleHRlbmRzIHF0e3N0YXRpYyBfX2luaXRTdGF0aWMoKXt0aGlzLnByb3RvY29scz1bImh0dHAiLCJodHRwcyJdfWNvbnN0cnVjdG9yKHQsbil7c3VwZXIobiksdGhpcy5vcHRpb25zPXt9LHRoaXMucHJveHk9InN0cmluZyI9PXR5cGVvZiB0P25ldyBVUkwodCk6dCx0aGlzLnByb3h5SGVhZGVycz1uPy5oZWFkZXJzPz97fSx0bigiQ3JlYXRpbmcgbmV3IEh0dHBzUHJveHlBZ2VudCBpbnN0YW5jZTogJW8iLHRoaXMucHJveHkuaHJlZik7Y29uc3QgZT0odGhpcy5wcm94eS5ob3N0bmFtZXx8dGhpcy5wcm94eS5ob3N0KS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpLHI9dGhpcy5wcm94eS5wb3J0P3BhcnNlSW50KHRoaXMucHJveHkucG9ydCwxMCk6Imh0dHBzOiI9PT10aGlzLnByb3h5LnByb3RvY29sPzQ0Mzo4MDt0aGlzLmNvbm5lY3RPcHRzPXtBTFBOUHJvdG9jb2xzOlsiaHR0cC8xLjEiXSwuLi5uP3JuKG4sImhlYWRlcnMiKTpudWxsLGhvc3Q6ZSxwb3J0OnJ9fWFzeW5jIGNvbm5lY3QodCxuKXtjb25zdHtwcm94eTplfT10aGlzO2lmKCFuLmhvc3QpdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gImhvc3QiIHByb3ZpZGVkJyk7bGV0IHI7aWYoImh0dHBzOiI9PT1lLnByb3RvY29sKXt0bigiQ3JlYXRpbmcgYHRscy5Tb2NrZXRgOiAlbyIsdGhpcy5jb25uZWN0T3B0cyk7Y29uc3QgdD10aGlzLmNvbm5lY3RPcHRzLnNlcnZlcm5hbWV8fHRoaXMuY29ubmVjdE9wdHMuaG9zdDtyPWYuY29ubmVjdCh7Li4udGhpcy5jb25uZWN0T3B0cyxzZXJ2ZXJuYW1lOnQmJmEuaXNJUCh0KT92b2lkIDA6dH0pfWVsc2UgdG4oIkNyZWF0aW5nIGBuZXQuU29ja2V0YDogJW8iLHRoaXMuY29ubmVjdE9wdHMpLHI9YS5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpO2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucHJveHlIZWFkZXJzP3RoaXMucHJveHlIZWFkZXJzKCk6ey4uLnRoaXMucHJveHlIZWFkZXJzfSxpPWEuaXNJUHY2KG4uaG9zdCk/YFske24uaG9zdH1dYDpuLmhvc3Q7bGV0IHM9YENPTk5FQ1QgJHtpfToke24ucG9ydH0gSFRUUC8xLjFcclxuYDtpZihlLnVzZXJuYW1lfHxlLnBhc3N3b3JkKXtjb25zdCB0PWAke2RlY29kZVVSSUNvbXBvbmVudChlLnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQoZS5wYXNzd29yZCl9YDtvWyJQcm94eS1BdXRob3JpemF0aW9uIl09YEJhc2ljICR7QnVmZmVyLmZyb20odCkudG9TdHJpbmcoImJhc2U2NCIpfWB9by5Ib3N0PWAke2l9OiR7bi5wb3J0fWAsb1siUHJveHktQ29ubmVjdGlvbiJdfHwob1siUHJveHktQ29ubmVjdGlvbiJdPXRoaXMua2VlcEFsaXZlPyJLZWVwLUFsaXZlIjoiY2xvc2UiKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhvKSlzKz1gJHt0fTogJHtvW3RdfVxyXG5gO2NvbnN0IGM9WHQocik7ci53cml0ZShgJHtzfVxyXG5gKTtjb25zdHtjb25uZWN0OnUsYnVmZmVyZWQ6aH09YXdhaXQgYztpZih0LmVtaXQoInByb3h5Q29ubmVjdCIsdSksdGhpcy5lbWl0KCJwcm94eUNvbm5lY3QiLHUsdCksMjAwPT09dS5zdGF0dXNDb2RlKXtpZih0Lm9uY2UoInNvY2tldCIsZW4pLG4uc2VjdXJlRW5kcG9pbnQpe3RuKCJVcGdyYWRpbmcgc29ja2V0IGNvbm5lY3Rpb24gdG8gVExTIik7Y29uc3QgdD1uLnNlcnZlcm5hbWV8fG4uaG9zdDtyZXR1cm4gZi5jb25uZWN0KHsuLi5ybihuLCJob3N0IiwicGF0aCIsInBvcnQiKSxzb2NrZXQ6cixzZXJ2ZXJuYW1lOmEuaXNJUCh0KT92b2lkIDA6dH0pfXJldHVybiByfXIuZGVzdHJveSgpO2NvbnN0IHA9bmV3IGEuU29ja2V0KHt3cml0YWJsZTohMX0pO3JldHVybiBwLnJlYWRhYmxlPSEwLHQub25jZSgic29ja2V0Iix0PT57dG4oIlJlcGxheWluZyBwcm94eSBidWZmZXIgZm9yIGZhaWxlZCByZXF1ZXN0IiksdC5wdXNoKGgpLHQucHVzaChudWxsKX0pLHB9fWZ1bmN0aW9uIGVuKHQpe3QucmVzdW1lKCl9ZnVuY3Rpb24gcm4odCwuLi5uKXtjb25zdCBlPXt9O2xldCByO2ZvcihyIGluIHQpbi5pbmNsdWRlcyhyKXx8KGVbcl09dFtyXSk7cmV0dXJuIGV9bm4uX19pbml0U3RhdGljKCk7ZnVuY3Rpb24gb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXltBLVpdOi8sIiIpLnJlcGxhY2UoL1xcL2csIi8iKX1jb25zdCBzbj1uO2xldCBjbix1bj0wLGFuPXt9O2Z1bmN0aW9uIGZuKHQpe3NuLmRlYnVnJiZjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7dH1gKX12YXIgaG4scG4sZG47Y29uc3QgbG49ZnVuY3Rpb24odCl7bGV0IG47dHJ5e249bmV3IFVSTCh0LnVybCl9Y2F0Y2gobil7cmV0dXJuIGIoKCk9Pntjb25zb2xlLndhcm4oIltAc2VudHJ5L25vZGVdOiBJbnZhbGlkIGRzbiBvciB0dW5uZWwgb3B0aW9uLCB3aWxsIG5vdCBzZW5kIGFueSBldmVudHMuIFRoZSB0dW5uZWwgb3B0aW9uIG11c3QgYmUgYSBmdWxsIFVSTCB3aGVuIHVzZWQuIil9KSxKdCh0LCgpPT5Qcm9taXNlLnJlc29sdmUoe30pKX1jb25zdCBlPSJodHRwczoiPT09bi5wcm90b2NvbCxyPWZ1bmN0aW9uKHQsbil7Y29uc3R7bm9fcHJveHk6ZX09cHJvY2Vzcy5lbnYscj1lPy5zcGxpdCgiLCIpLnNvbWUobj0+dC5ob3N0LmVuZHNXaXRoKG4pfHx0Lmhvc3RuYW1lLmVuZHNXaXRoKG4pKTtyZXR1cm4gcj92b2lkIDA6bn0obix0LnByb3h5fHwoZT9wcm9jZXNzLmVudi5odHRwc19wcm94eTp2b2lkIDApfHxwcm9jZXNzLmVudi5odHRwX3Byb3h5KSxvPWU/czppLGE9dm9pZCAwIT09dC5rZWVwQWxpdmUmJnQua2VlcEFsaXZlLGY9cj9uZXcgbm4ocik6bmV3IG8uQWdlbnQoe2tlZXBBbGl2ZTphLG1heFNvY2tldHM6MzAsdGltZW91dDoyZTN9KSxoPWZ1bmN0aW9uKHQsbixlKXtjb25zdHtob3N0bmFtZTpyLHBhdGhuYW1lOm8scG9ydDppLHByb3RvY29sOnMsc2VhcmNoOmF9PW5ldyBVUkwodC51cmwpO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gbmV3IFByb21pc2UoKGgscCk9PntCdCgoKT0+e2xldCBkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYyh7cmVhZCgpe3RoaXMucHVzaCh0KSx0aGlzLnB1c2gobnVsbCl9fSl9KGYuYm9keSk7Y29uc3QgbD17Li4udC5oZWFkZXJzfTtmLmJvZHkubGVuZ3RoPjMyNzY4JiYobFsiY29udGVudC1lbmNvZGluZyJdPSJnemlwIixkPWQucGlwZSh1KCkpKTtjb25zdCBtPXIuc3RhcnRzV2l0aCgiWyIpLGc9bi5yZXF1ZXN0KHttZXRob2Q6IlBPU1QiLGFnZW50OmUsaGVhZGVyczpsLGhvc3RuYW1lOm0/ci5zbGljZSgxLC0xKTpyLHBhdGg6YCR7b30ke2F9YCxwb3J0OmkscHJvdG9jb2w6cyxjYTp0LmNhQ2VydHN9LHQ9Pnt0Lm9uKCJkYXRhIiwoKT0+e30pLHQub24oImVuZCIsKCk9Pnt9KSx0LnNldEVuY29kaW5nKCJ1dGY4Iik7Y29uc3Qgbj10LmhlYWRlcnNbInJldHJ5LWFmdGVyIl0/P251bGwsZT10LmhlYWRlcnNbIngtc2VudHJ5LXJhdGUtbGltaXRzIl0/P251bGw7aCh7c3RhdHVzQ29kZTp0LnN0YXR1c0NvZGUsaGVhZGVyczp7InJldHJ5LWFmdGVyIjpuLCJ4LXNlbnRyeS1yYXRlLWxpbWl0cyI6QXJyYXkuaXNBcnJheShlKT9lWzBdfHxudWxsOmV9fSl9KTtnLm9uKCJlcnJvciIscCksZC5waXBlKGcpfSl9KX19KHQsdC5odHRwTW9kdWxlPz9vLGYpO3JldHVybiBKdCh0LGgpfSh7dXJsOihobj1zbi5kc24scG49c24udHVubmVsLGRuPXNuLnNka01ldGFkYXRhLnNkayxwbnx8YCR7ZnVuY3Rpb24odCl7cmV0dXJuYCR7ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnByb3RvY29sP2Ake3QucHJvdG9jb2x9OmA6IiIsZT10LnBvcnQ/YDoke3QucG9ydH1gOiIiO3JldHVybmAke259Ly8ke3QuaG9zdH0ke2V9JHt0LnBhdGg/YC8ke3QucGF0aH1gOiIifS9hcGkvYH0odCl9JHt0LnByb2plY3RJZH0vZW52ZWxvcGUvYH0oaG4pfT8ke2Z1bmN0aW9uKHQsbil7Y29uc3QgZT17c2VudHJ5X3ZlcnNpb246IjcifTtyZXR1cm4gdC5wdWJsaWNLZXkmJihlLnNlbnRyeV9rZXk9dC5wdWJsaWNLZXkpLG4mJihlLnNlbnRyeV9jbGllbnQ9YCR7bi5uYW1lfS8ke24udmVyc2lvbn1gKSxuZXcgVVJMU2VhcmNoUGFyYW1zKGUpLnRvU3RyaW5nKCl9KGhuLGRuKX1gKX0pO2FzeW5jIGZ1bmN0aW9uIG1uKCl7aWYoY24pe2ZuKCJTZW5kaW5nIGFibm9ybWFsIHNlc3Npb24iKSxWKGNuLHtzdGF0dXM6ImFibm9ybWFsIixhYm5vcm1hbF9tZWNoYW5pc206ImFucl9mb3JlZ3JvdW5kIixyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnR9KTtjb25zdCB0PWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89VXQoZSk7cmV0dXJuIGt0KHtzZW50X2F0OihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwuLi5vJiZ7c2RrOm99LC4uLiEhciYmbiYme2RzbjpidChuKX19LFsiYWdncmVnYXRlcyJpbiB0P1t7dHlwZToic2Vzc2lvbnMifSx0XTpbe3R5cGU6InNlc3Npb24ifSx0LnRvSlNPTigpXV0pfShjbixzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeSh0KSksYXdhaXQgbG4uc2VuZCh0KTt0cnl7ZT8ucG9zdE1lc3NhZ2UoInNlc3Npb24tZW5kZWQiKX1jYXRjaHt9fX1mdW5jdGlvbiBnbih0KXtpZighdClyZXR1cm47Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdC5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1BcnJheS5mcm9tKHQpO3JldHVybi9zZW50cnlXcmFwcGVkLy50ZXN0KEUobikuZnVuY3Rpb258fCIiKSYmbi5wb3AoKSxuLnJldmVyc2UoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiYobi5wb3AoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiZuLnBvcCgpKSxuLnNsaWNlKDAsNTApLm1hcCh0PT4oey4uLnQsZmlsZW5hbWU6dC5maWxlbmFtZXx8RShuKS5maWxlbmFtZSxmdW5jdGlvbjp0LmZ1bmN0aW9ufHwiPyJ9KSl9KHQpO2lmKHNuLmFwcFJvb3RQYXRoKWZvcihjb25zdCB0IG9mIG4pdC5maWxlbmFtZSYmKHQuZmlsZW5hbWU9VHQodC5maWxlbmFtZSxzbi5hcHBSb290UGF0aCkpO3JldHVybiBufWFzeW5jIGZ1bmN0aW9uIHluKHQsbil7aWYodW4+PXNuLm1heEFuckV2ZW50cylyZXR1cm47dW4rPTEsYXdhaXQgbW4oKSxmbigiU2VuZGluZyBldmVudCIpO2NvbnN0IGU9e2V2ZW50X2lkOkYoKSxjb250ZXh0czpzbi5jb250ZXh0cyxyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnQsZGlzdDpzbi5kaXN0LHBsYXRmb3JtOiJub2RlIixsZXZlbDoiZXJyb3IiLGV4Y2VwdGlvbjp7dmFsdWVzOlt7dHlwZToiQXBwbGljYXRpb25Ob3RSZXNwb25kaW5nIix2YWx1ZTpgQXBwbGljYXRpb24gTm90IFJlc3BvbmRpbmcgZm9yIGF0IGxlYXN0ICR7c24uYW5yVGhyZXNob2xkfSBtc2Asc3RhY2t0cmFjZTp7ZnJhbWVzOmduKHQpfSxtZWNoYW5pc206e3R5cGU6IkFOUiJ9fV19LHRhZ3M6c24uc3RhdGljVGFnc307biYmZnVuY3Rpb24odCxuKXtpZih6dCh0LG4pLCF0LmNvbnRleHRzPy50cmFjZSl7Y29uc3R7dHJhY2VJZDplLHBhcmVudFNwYW5JZDpyLHByb3BhZ2F0aW9uU3BhbklkOm99PW4ucHJvcGFnYXRpb25Db250ZXh0O3QuY29udGV4dHM9e3RyYWNlOnt0cmFjZV9pZDplLHNwYW5faWQ6b3x8cSgpLHBhcmVudF9zcGFuX2lkOnJ9LC4uLnQuY29udGV4dHN9fX0oZSxuKSxmdW5jdGlvbih0KXtpZigwPT09T2JqZWN0LmtleXMoYW4pLmxlbmd0aClyZXR1cm47Y29uc3Qgbj1zbi5hcHBSb290UGF0aD97fTphbjtpZihzbi5hcHBSb290UGF0aClmb3IoY29uc3RbdCxlXW9mIE9iamVjdC5lbnRyaWVzKGFuKSluW1R0KHQsc24uYXBwUm9vdFBhdGgpXT1lO2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3QgciBvZiB0LmV4Y2VwdGlvbj8udmFsdWVzfHxbXSlmb3IoY29uc3QgdCBvZiByLnN0YWNrdHJhY2U/LmZyYW1lc3x8W10pe2NvbnN0IHI9dC5hYnNfcGF0aHx8dC5maWxlbmFtZTtyJiZuW3JdJiZlLnNldChyLG5bcl0pfWlmKGUuc2l6ZT4wKXtjb25zdCBuPVtdO2Zvcihjb25zdFt0LHJdb2YgZS5lbnRyaWVzKCkpbi5wdXNoKHt0eXBlOiJzb3VyY2VtYXAiLGNvZGVfZmlsZTp0LGRlYnVnX2lkOnJ9KTt0LmRlYnVnX21ldGE9e2ltYWdlczpufX19KGUpO2NvbnN0IHI9THQoZSxzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeShyKSksYXdhaXQgbG4uc2VuZChyKSxhd2FpdCBsbi5mbHVzaCgyZTMpLHVuPj1zbi5tYXhBbnJFdmVudHMmJnNldFRpbWVvdXQoKCk9Pntwcm9jZXNzLmV4aXQoMCl9LDVlMyl9bGV0IGJuO2lmKGZuKCJTdGFydGVkIiksc24uY2FwdHVyZVN0YWNrVHJhY2Upe2ZuKCJDb25uZWN0aW5nIHRvIGRlYnVnZ2VyIik7Y29uc3Qgbj1uZXcgdDtuLmNvbm5lY3RUb01haW5UaHJlYWQoKSxmbigiQ29ubmVjdGVkIHRvIGRlYnVnZ2VyIik7Y29uc3QgZT1uZXcgTWFwO24ub24oIkRlYnVnZ2VyLnNjcmlwdFBhcnNlZCIsdD0+e2Uuc2V0KHQucGFyYW1zLnNjcmlwdElkLHQucGFyYW1zLnVybCl9KSxuLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLHQ9PntpZigib3RoZXIiPT09dC5wYXJhbXMucmVhc29uKXRyeXtmbigiRGVidWdnZXIgcGF1c2VkIik7Y29uc3QgaT1bLi4udC5wYXJhbXMuY2FsbEZyYW1lc10scz1zbi5hcHBSb290UGF0aD9mdW5jdGlvbih0PShwcm9jZXNzLmFyZ3ZbMV0/VnQocHJvY2Vzcy5hcmd2WzFdKTpwcm9jZXNzLmN3ZCgpKSxuPSJcXCI9PT1vKXtjb25zdCBlPW4/b24odCk6dDtyZXR1cm4gdD0+e2lmKCF0KXJldHVybjtjb25zdCBvPW4/b24odCk6dDtsZXR7ZGlyOmksYmFzZTpzLGV4dDpjfT1yLnBhcnNlKG8pOyIuanMiIT09YyYmIi5tanMiIT09YyYmIi5janMiIT09Y3x8KHM9cy5zbGljZSgwLC0xKmMubGVuZ3RoKSk7Y29uc3QgdT1kZWNvZGVVUklDb21wb25lbnQocyk7aXx8KGk9Ii4iKTtjb25zdCBhPWkubGFzdEluZGV4T2YoIi9ub2RlX21vZHVsZXMiKTtpZihhPi0xKXJldHVybmAke2kuc2xpY2UoYSsxNCkucmVwbGFjZSgvXC8vZywiLiIpfToke3V9YDtpZihpLnN0YXJ0c1dpdGgoZSkpe2NvbnN0IHQ9aS5zbGljZShlLmxlbmd0aCsxKS5yZXBsYWNlKC9cLy9nLCIuIik7cmV0dXJuIHQ/YCR7dH06JHt1fWA6dX1yZXR1cm4gdX19KHNuLmFwcFJvb3RQYXRoKTooKT0+e30sYz1pLm1hcCh0PT5mdW5jdGlvbih0LG4sZSl7Y29uc3Qgcj1uP24ucmVwbGFjZSgvXmZpbGU6XC9cLy8sIiIpOnZvaWQgMCxvPXQubG9jYXRpb24uY29sdW1uTnVtYmVyP3QubG9jYXRpb24uY29sdW1uTnVtYmVyKzE6dm9pZCAwLGk9dC5sb2NhdGlvbi5saW5lTnVtYmVyP3QubG9jYXRpb24ubGluZU51bWJlcisxOnZvaWQgMDtyZXR1cm57ZmlsZW5hbWU6cixtb2R1bGU6ZShyKSxmdW5jdGlvbjp0LmZ1bmN0aW9uTmFtZXx8Ij8iLGNvbG5vOm8sbGluZW5vOmksaW5fYXBwOnI/S3Qocik6dm9pZCAwfX0odCxlLmdldCh0LmxvY2F0aW9uLnNjcmlwdElkKSxzKSksdT1zZXRUaW1lb3V0KCgpPT57eW4oYykudGhlbihudWxsLCgpPT57Zm4oIlNlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZC4iKX0pfSw1ZTMpO24ucG9zdCgiUnVudGltZS5ldmFsdWF0ZSIse2V4cHJlc3Npb246Imdsb2JhbC5fX1NFTlRSWV9HRVRfU0NPUEVTX18oKTsiLHNpbGVudDohMCxyZXR1cm5CeVZhbHVlOiEwfSwodCxlKT0+e3QmJmZuKGBFcnJvciBleGVjdXRpbmcgc2NyaXB0OiAnJHt0Lm1lc3NhZ2V9J2ApLGNsZWFyVGltZW91dCh1KTtjb25zdCByPWU/LnJlc3VsdD9lLnJlc3VsdC52YWx1ZTp2b2lkIDA7bi5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKSxuLnBvc3QoIkRlYnVnZ2VyLmRpc2FibGUiKSx5bihjLHIpLnRoZW4obnVsbCwoKT0+e2ZuKCJTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuIil9KX0pfWNhdGNoKHQpe3Rocm93IG4ucG9zdCgiRGVidWdnZXIucmVzdW1lIiksbi5wb3N0KCJEZWJ1Z2dlci5kaXNhYmxlIiksdH19KSxibj0oKT0+e3RyeXtuLnBvc3QoIkRlYnVnZ2VyLmVuYWJsZSIsKCk9PntuLnBvc3QoIkRlYnVnZ2VyLnBhdXNlIil9KX1jYXRjaHt9fX1jb25zdHtwb2xsOnZufT1mdW5jdGlvbih0LG4sZSxyKXtjb25zdCBvPXQoKTtsZXQgaT0hMSxzPSEwO3JldHVybiBzZXRJbnRlcnZhbCgoKT0+e2NvbnN0IHQ9by5nZXRUaW1lTXMoKTshMT09PWkmJnQ+bitlJiYoaT0hMCxzJiZyKCkpLHQ8bitlJiYoaT0hMSl9LDIwKSx7cG9sbDooKT0+e28ucmVzZXQoKX0sZW5hYmxlZDp0PT57cz10fX19KGZ1bmN0aW9uKCl7bGV0IHQ9cHJvY2Vzcy5ocnRpbWUoKTtyZXR1cm57Z2V0VGltZU1zOigpPT57Y29uc3RbbixlXT1wcm9jZXNzLmhydGltZSh0KTtyZXR1cm4gTWF0aC5mbG9vcigxZTMqbitlLzFlNil9LHJlc2V0OigpPT57dD1wcm9jZXNzLmhydGltZSgpfX19LHNuLnBvbGxJbnRlcnZhbCxzbi5hbnJUaHJlc2hvbGQsZnVuY3Rpb24oKXtmbigiV2F0Y2hkb2cgdGltZW91dCIpLGJuPyhmbigiUGF1c2luZyBkZWJ1Z2dlciB0byBjYXB0dXJlIHN0YWNrIHRyYWNlIiksYm4oKSk6KGZuKCJDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlIikseW4oKS50aGVuKG51bGwsKCk9PntmbigiU2VuZGluZyBBTlIgZXZlbnQgZmFpbGVkIG9uIHdhdGNoZG9nIHRpbWVvdXQuIil9KSl9KTtlPy5vbigibWVzc2FnZSIsdD0+e3Quc2Vzc2lvbiYmKGNuPVkodC5zZXNzaW9uKSksdC5kZWJ1Z0ltYWdlcyYmKGFuPXQuZGVidWdJbWFnZXMpLHZuKCl9KTs=";function k(a,...b){f.debug.log(`[ANR] ${a}`,...b)}function l(){let a=f.getCombinedScopeData(f.getIsolationScope(),f.getCurrentScope());return a.attachments=[],a.eventProcessors=[],a}async function m(a){let b={message:"ANR"},c={};for(let d of a.getEventProcessors()){if(null===b)break;b=await d(b,c)}return b?.contexts||{}}async function n(b,c){let d=b.getDsn();if(!d)return()=>{};let g=await m(b);delete g.app?.app_memory,delete g.device?.free_memory;let h=b.getOptions(),i=b.getSdkMetadata()||{};i.sdk&&(i.sdk.integrations=h.integrations.map(a=>a.name));let l={debug:f.debug.isEnabled(),dsn:d,tunnel:h.tunnel,environment:h.environment||"production",release:h.release,dist:h.dist,sdkMetadata:i,appRootPath:c.appRootPath,pollInterval:c.pollInterval||50,anrThreshold:c.anrThreshold||5e3,captureStackTrace:!!c.captureStackTrace,maxAnrEvents:c.maxAnrEvents||1,staticTags:c.staticTags||{},contexts:g};if(l.captureStackTrace){let b=await a.A(234177);b.url()||b.open(0)}let n=new e.Worker(new URL(`data:application/javascript;base64,${j}`),{workerData:l,execArgv:[],env:{...process.env,NODE_OPTIONS:void 0}});process.on("exit",()=>{n.terminate()});let o=setInterval(()=>{try{let a=f.getIsolationScope().getSession(),b=a?{...a,toJSON:void 0}:void 0;n.postMessage({session:b,debugImages:f.getFilenameToDebugIdMap(h.stackParser)})}catch{}},l.pollInterval);return o.unref(),n.on("message",a=>{"session-ended"===a&&(k("ANR event sent from ANR worker. Clearing session in this thread."),f.getIsolationScope().setSession(void 0))}),n.once("error",a=>{clearInterval(o),k("ANR worker error",a)}),n.once("exit",a=>{clearInterval(o),k("ANR worker exit",a)}),n.unref(),()=>{n.terminate(),clearInterval(o)}}c.anrIntegration=f.defineIntegration((a={})=>{let b,c;if(g.NODE_VERSION.major<16||16===g.NODE_VERSION.major&&g.NODE_VERSION.minor<17)throw Error("ANR detection requires Node 16.17.0 or later");return f.GLOBAL_OBJ.__SENTRY_GET_SCOPES__=l,{name:"Anr",startWorker:()=>{!b&&c&&(b=n(c,a))},stopWorker:()=>{b&&b.then(a=>{a(),b=void 0})},async setup(b){c=b,a.captureStackTrace&&await h.isDebuggerEnabled()&&(f.debug.warn("ANR captureStackTrace has been disabled because the debugger was already enabled"),a.captureStackTrace=!1),setImmediate(()=>this.startWorker())}}}),c.base64WorkerScript=j,c.disableAnrDetectionForCallback=function(a){let b=f.getClient()?.getIntegrationByName("Anr");if(!b)return a();b.stopWorker();let c=a();return i(c)?c.finally(()=>b.startWorker()):(b.startWorker(),c)}},354566,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(812057),e=a.r(97153);c.captureLog=function(a,...b){let[c,f,g,h]=b;if(Array.isArray(f)){let b={...g};b["sentry.message.template"]=c,f.forEach((a,c)=>{b[`sentry.message.parameter.${c}`]=a});let i=d.format(c,...f);e._INTERNAL_captureLog({level:a,message:i,attributes:b},h?.scope)}else e._INTERNAL_captureLog({level:a,message:c,attributes:f},g?.scope??h?.scope)}},55530,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(354566);c.fmt=a.r(97153).fmt,c.debug=function(...a){d.captureLog("debug",...a)},c.error=function(...a){d.captureLog("error",...a)},c.fatal=function(...a){d.captureLog("fatal",...a)},c.info=function(...a){d.captureLog("info",...a)},c.trace=function(...a){d.captureLog("trace",...a)},c.warn=function(...a){d.captureLog("warn",...a)}},962987,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(60438),e=a.r(97153);c.nodeRuntimeMetricsIntegration=e.defineIntegration((a={})=>{let b,c,f,g,h=a.collectionIntervalMs??3e4,i={cpuUtilization:!0,memHeapUsed:!0,memHeapTotal:!0,memRss:!0,eventLoopDelayP50:!0,eventLoopDelayP99:!0,eventLoopUtilization:!0,uptime:!0,cpuTime:!1,memExternal:!1,eventLoopDelayMin:!1,eventLoopDelayMax:!1,eventLoopDelayMean:!1,eventLoopDelayP90:!1,...a.collect},j=i.eventLoopDelayP99||i.eventLoopDelayMin||i.eventLoopDelayMax||i.eventLoopDelayMean||i.eventLoopDelayP50||i.eventLoopDelayP90,k=i.cpuUtilization||i.cpuTime,l=0,m=a=>Math.max(0,(a-1e7)/1e9),n={attributes:{"sentry.origin":"auto.node.runtime_metrics"}},o={unit:"byte",attributes:{"sentry.origin":"auto.node.runtime_metrics"}},p={unit:"second",attributes:{"sentry.origin":"auto.node.runtime_metrics"}};function q(){let a=e._INTERNAL_safeDateNow(),b=a-l;if(k&&void 0!==c){let a=process.cpuUsage(c);i.cpuTime&&(e.metrics.gauge("node.runtime.cpu.user",a.user/1e6,p),e.metrics.gauge("node.runtime.cpu.system",a.system/1e6,p)),i.cpuUtilization&&b>0&&e.metrics.gauge("node.runtime.cpu.utilization",(a.user+a.system)/(1e3*b),n),c=process.cpuUsage()}if(i.memRss||i.memHeapUsed||i.memHeapTotal||i.memExternal){let a=process.memoryUsage();i.memRss&&e.metrics.gauge("node.runtime.mem.rss",a.rss,o),i.memHeapUsed&&e.metrics.gauge("node.runtime.mem.heap_used",a.heapUsed,o),i.memHeapTotal&&e.metrics.gauge("node.runtime.mem.heap_total",a.heapTotal,o),i.memExternal&&(e.metrics.gauge("node.runtime.mem.external",a.external,o),e.metrics.gauge("node.runtime.mem.array_buffers",a.arrayBuffers,o))}if(j&&g&&(i.eventLoopDelayMin&&e.metrics.gauge("node.runtime.event_loop.delay.min",m(g.min),p),i.eventLoopDelayMax&&e.metrics.gauge("node.runtime.event_loop.delay.max",m(g.max),p),i.eventLoopDelayMean&&e.metrics.gauge("node.runtime.event_loop.delay.mean",m(g.mean),p),i.eventLoopDelayP50&&e.metrics.gauge("node.runtime.event_loop.delay.p50",m(g.percentile(50)),p),i.eventLoopDelayP90&&e.metrics.gauge("node.runtime.event_loop.delay.p90",m(g.percentile(90)),p),i.eventLoopDelayP99&&e.metrics.gauge("node.runtime.event_loop.delay.p99",m(g.percentile(99)),p),g.reset()),i.eventLoopUtilization&&void 0!==f){let a=d.performance.eventLoopUtilization(),b=d.performance.eventLoopUtilization(a,f);e.metrics.gauge("node.runtime.event_loop.utilization",b.utilization,n),f=a}i.uptime&&b>0&&e.metrics.count("node.runtime.process.uptime",b/1e3,p),l=a}return{name:"NodeRuntimeMetrics",setup(){if(j){g?.disable();try{(g=d.monitorEventLoopDelay({resolution:10})).enable()}catch{g=void 0}}k&&(c=process.cpuUsage()),i.eventLoopUtilization&&(f=d.performance.eventLoopUtilization()),l=e._INTERNAL_safeDateNow(),b&&clearInterval(b),b=e._INTERNAL_safeUnref(setInterval(q,h))}}})},740254,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(355055),f=a.r(354566),g=["trace","debug","info","warn","error","fatal"],h=Symbol.for("level"),i=Symbol.for("message"),j=Symbol.for("splat"),k={silly:"trace",debug:"debug",verbose:"debug",http:"debug",info:"info",notice:"info",warn:"warn",warning:"warn",error:"error",emerg:"fatal",alert:"fatal",crit:"fatal"};c.createSentryWinstonTransport=function(a,b){return class extends a{constructor(a){super(a),this._levels=new Set(b?.levels??g)}log(a,c){try{var g;if(setImmediate(()=>{this.emit("logged",a)}),g=a,"object"!=typeof g||null==g)return;let c=a[h],{level:l,message:m,timestamp:n,...o}=a;o[h]=void 0,o[i]=void 0,o[j]=void 0;let p=b?.customLevelMap?.[c],q=k[c],r=p??q??"info";this._levels.has(r)?f.captureLog(r,m,{...o,"sentry.origin":"auto.log.winston"}):p||q||!e.DEBUG_BUILD||d.debug.log(`Winston log level ${c} is not captured by Sentry. Please add ${c} to the "customLevelMap" option of the Sentry Winston transport.`)}catch{}c&&c()}}}},680424,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(677652),e=a.r(97153),f=Symbol("sentry-track-pino-logger");function g(a,b,c){let d=Object.getOwnPropertySymbols(a),e=`Symbol(${b})`;for(let b of d)if(b.toString()===e){let d=a[b];return"string"==typeof d?d:c}return c}let h={levels:[],handled:!0},i={levels:["trace","debug","info","warn","error","fatal"]};c.pinoIntegration=Object.assign(e.defineIntegration((a={})=>{let b={autoInstrument:!1!==a.autoInstrument,error:{...h,...a.error},log:{...i,...a.log}};return{name:"Pino",setup:a=>{let c=!!a.getOptions().enableLogs;d.tracingChannel("pino_asJson").end.subscribe(a=>{let{instance:d,arguments:h,result:i}=a;!function(a,d,h){let i;if("track"!==(i=a[f])&&("ignore"===i||!b.autoInstrument))return;let j=function(a){let{level:b,time:c,pid:d,hostname:e,...f}=a;return f}(h),[k,l,m]=d,n=a?.levels?.labels?.[m]||"info",o=g(a,"pino.messageKey","msg"),p=l||j?.[o]||"";if(c&&b.log.levels.includes(n)){let a={...j,"sentry.origin":"auto.log.pino","pino.logger.level":m};e._INTERNAL_captureLog({level:n,message:p,attributes:a})}if(b.error.levels.includes(n)){let c={level:e.severityLevelFromString(n)};e.withScope(d=>{d.addEventProcessor(a=>(a.logger="pino",e.addExceptionMechanism(a,{handled:b.error.handled,type:"auto.log.pino"}),a));let f=k[g(a,"pino.errorKey","err")];f?e.captureException(f,c):e.captureMessage(p,c)})}}(d,h,JSON.parse(i))})}}}),{trackLogger(a){a&&"object"==typeof a&&"levels"in a&&(a[f]="track")},untrackLogger(a){a&&"object"==typeof a&&"levels"in a&&(a[f]="ignore")}})},400788,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.addOriginToSpan=function(a,b){a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,b)}},629636,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getRequestUrl=function(a){let b=a.protocol||"",c=a.hostname||a.host||"",d=!a.port||80===a.port||443===a.port||/^(.*):(\d+)$/.test(c)?"":`:${a.port}`,e=a.path?a.path:"/";return`${b}//${c}${d}${e}`}},54016,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];c.replaceCronNames=function(a){return d.reduce((a,[b,c])=>a.replace(RegExp(b,"gi"),c),a)}},542829,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(54016),f="Automatic instrumentation of CronJob only supports crontab string";c.instrumentCron=function(a,b){let c=!1;return new Proxy(a,{construct(a,g){let[h,i,j,k,l,...m]=g;if("string"!=typeof h)throw Error(f);if(c)throw Error(`A job named '${b}' has already been scheduled`);c=!0;let n=e.replaceCronNames(h);return new a(h,async function(a,c){return d.withMonitor(b,async()=>{try{await i(a,c)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),a}},{schedule:{type:"crontab",value:n},timezone:l||void 0})},j,k,l,...m)},get:(a,g)=>"from"===g?g=>{let{cronTime:h,onTick:i,timeZone:j}=g;if("string"!=typeof h)throw Error(f);if(c)throw Error(`A job named '${b}' has already been scheduled`);c=!0;let k=e.replaceCronNames(h);return g.onTick=async(a,c)=>d.withMonitor(b,async()=>{try{await i(a,c)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),a}},{schedule:{type:"crontab",value:k},timezone:j||void 0}),a.from(g)}:a[g]})}},801702,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(54016);c.instrumentNodeCron=function(a,b={}){return new Proxy(a,{get:(a,c)=>"schedule"===c&&a.schedule?new Proxy(a.schedule,{apply(a,c,f){let[g,h,i]=f,j=i?.name,k=i?.timezone;if(!j)throw Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');let l=async(...a)=>d.withMonitor(j,async()=>{try{return await h(...a)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.node-cron.instrumentNodeCron"}}),a}},{schedule:{type:"crontab",value:e.replaceCronNames(g)},timezone:k,...b});return a.apply(c,[g,l,i])}}):a[c]})}},695102,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(54016);c.instrumentNodeSchedule=function(a){return new Proxy(a,{get:(a,b)=>"scheduleJob"===b?new Proxy(a.scheduleJob,{apply(a,b,c){let[f,g,h]=c;if("string"!=typeof f||"string"!=typeof g||"function"!=typeof h)throw Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");async function i(){return d.withMonitor(f,async()=>{await h?.()},{schedule:{type:"crontab",value:e.replaceCronNames(g)}})}return a.apply(b,[f,g,i])}}):a[b]})}},784021,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(542829),e=a.r(801702),f=a.r(695102);c.cron={instrumentCron:d.instrumentCron,instrumentNodeCron:e.instrumentNodeCron,instrumentNodeSchedule:f.instrumentNodeSchedule}},829770,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(596290),e=a.r(781994),f=a.r(742341),g=a.r(716987),h=a.r(486417),i=a.r(230797),j=a.r(791249),k=a.r(721424),l=a.r(538276),m=a.r(328625),n=a.r(284211),o=a.r(18272),p=a.r(495406),q=a.r(369330),r=a.r(960535),s=a.r(406219),t=a.r(97153),u=a.r(55530),v=a.r(732257),w=a.r(962987),x=a.r(17454),y=a.r(200526),z=a.r(646711),A=a.r(9332),B=a.r(437659),C=a.r(249942),D=a.r(355329),E=a.r(468915),F=a.r(740254),G=a.r(680424),H=a.r(563422),I=a.r(774056),J=a.r(400788),K=a.r(629636),L=a.r(139392),M=a.r(226798),N=a.r(509014),O=a.r(936232),P=a.r(784021),Q=a.r(176004);c.httpIntegration=d.httpIntegration,c.httpServerSpansIntegration=e.httpServerSpansIntegration,c.httpServerIntegration=f.httpServerIntegration,c.SentryHttpInstrumentation=g.SentryHttpInstrumentation,c.nativeNodeFetchIntegration=h.nativeNodeFetchIntegration,c.SentryNodeFetchInstrumentation=i.SentryNodeFetchInstrumentation,c.SentryContextManager=j.SentryContextManager,c.setupOpenTelemetryLogger=k.setupOpenTelemetryLogger,c.INSTRUMENTED=l.INSTRUMENTED,c.generateInstrumentOnce=l.generateInstrumentOnce,c.instrumentWhenWrapped=l.instrumentWhenWrapped,c.getDefaultIntegrations=m.getDefaultIntegrations,c.init=m.init,c.initWithoutDefaultIntegrations=m.initWithoutDefaultIntegrations,c.validateOpenTelemetrySetup=m.validateOpenTelemetrySetup,c.setIsolationScope=n.setIsolationScope,c.NodeClient=o.NodeClient,c.ensureIsWrapped=p.ensureIsWrapped,c.processSessionIntegration=q.processSessionIntegration,c.setNodeAsyncContextStrategy=r.setOpenTelemetryContextAsyncContextStrategy,c.anrIntegration=s.anrIntegration,c.disableAnrDetectionForCallback=s.disableAnrDetectionForCallback,c.SDK_VERSION=t.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=t.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=t.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=t.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=t.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=t.Scope,c.addBreadcrumb=t.addBreadcrumb,c.addEventProcessor=t.addEventProcessor,c.addIntegration=t.addIntegration,c.captureCheckIn=t.captureCheckIn,c.captureConsoleIntegration=t.captureConsoleIntegration,c.captureEvent=t.captureEvent,c.captureException=t.captureException,c.captureFeedback=t.captureFeedback,c.captureMessage=t.captureMessage,c.captureSession=t.captureSession,c.close=t.close,c.consoleIntegration=t.consoleIntegration,c.consoleLoggingIntegration=t.consoleLoggingIntegration,c.continueTrace=t.continueTrace,c.createConsolaReporter=t.createConsolaReporter,c.createTransport=t.createTransport,c.dedupeIntegration=t.dedupeIntegration,c.endSession=t.endSession,c.envToBool=t.envToBool,c.eventFiltersIntegration=t.eventFiltersIntegration,c.extraErrorDataIntegration=t.extraErrorDataIntegration,c.featureFlagsIntegration=t.featureFlagsIntegration,c.flush=t.flush,c.functionToStringIntegration=t.functionToStringIntegration,c.getActiveSpan=t.getActiveSpan,c.getClient=t.getClient,c.getCurrentScope=t.getCurrentScope,c.getGlobalScope=t.getGlobalScope,c.getIsolationScope=t.getIsolationScope,c.getRootSpan=t.getRootSpan,c.getSpanDescendants=t.getSpanDescendants,c.getSpanStatusFromHttpCode=t.getSpanStatusFromHttpCode,c.getTraceData=t.getTraceData,c.getTraceMetaTags=t.getTraceMetaTags,c.inboundFiltersIntegration=t.inboundFiltersIntegration,c.instrumentSupabaseClient=t.instrumentSupabaseClient,c.isEnabled=t.isEnabled,c.isInitialized=t.isInitialized,c.lastEventId=t.lastEventId,c.linkedErrorsIntegration=t.linkedErrorsIntegration,c.metrics=t.metrics,c.parameterize=t.parameterize,c.profiler=t.profiler,c.requestDataIntegration=t.requestDataIntegration,c.rewriteFramesIntegration=t.rewriteFramesIntegration,c.setContext=t.setContext,c.setCurrentClient=t.setCurrentClient,c.setExtra=t.setExtra,c.setExtras=t.setExtras,c.setHttpStatus=t.setHttpStatus,c.setMeasurement=t.setMeasurement,c.setTag=t.setTag,c.setTags=t.setTags,c.setUser=t.setUser,c.spanToBaggageHeader=t.spanToBaggageHeader,c.spanToJSON=t.spanToJSON,c.spanToTraceHeader=t.spanToTraceHeader,c.startInactiveSpan=t.startInactiveSpan,c.startNewTrace=t.startNewTrace,c.startSession=t.startSession,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.supabaseIntegration=t.supabaseIntegration,c.suppressTracing=t.suppressTracing,c.trpcMiddleware=t.trpcMiddleware,c.updateSpanName=t.updateSpanName,c.withActiveSpan=t.withActiveSpan,c.withIsolationScope=t.withIsolationScope,c.withMonitor=t.withMonitor,c.withScope=t.withScope,c.wrapMcpServerWithSentry=t.wrapMcpServerWithSentry,c.zodErrorsIntegration=t.zodErrorsIntegration,c.logger=u,c.nodeContextIntegration=v.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=w.nodeRuntimeMetricsIntegration,c.contextLinesIntegration=x.contextLinesIntegration,c.localVariablesIntegration=y.localVariablesIntegration,c.modulesIntegration=z.modulesIntegration,c.onUncaughtExceptionIntegration=A.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=B.onUnhandledRejectionIntegration,c.spotlightIntegration=C.spotlightIntegration,c.systemErrorIntegration=D.systemErrorIntegration,c.childProcessIntegration=E.childProcessIntegration,c.createSentryWinstonTransport=F.createSentryWinstonTransport,c.pinoIntegration=G.pinoIntegration,c.defaultStackParser=H.defaultStackParser,c.getSentryRelease=H.getSentryRelease,c.createGetModuleFromFilename=I.createGetModuleFromFilename,c.addOriginToSpan=J.addOriginToSpan,c.getRequestUrl=K.getRequestUrl,c.initializeEsmLoader=L.initializeEsmLoader,c.isCjs=M.isCjs,c.createMissingInstrumentationContext=N.createMissingInstrumentationContext,c.makeNodeTransport=O.makeNodeTransport,c.cron=P.cron,c.NODE_VERSION=Q.NODE_VERSION},506596,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(794595),f=a.r(97153),g=a.r(829770),h="Http",i="@opentelemetry_sentry-patched/instrumentation-http",j=22===g.NODE_VERSION.major&&g.NODE_VERSION.minor>=12||23===g.NODE_VERSION.major&&g.NODE_VERSION.minor>=2||g.NODE_VERSION.major>=24,k=g.generateInstrumentOnce(`${h}.sentry`,a=>new g.SentryHttpInstrumentation(a)),l=g.generateInstrumentOnce(h,a=>{let b=new e.HttpInstrumentation({...a,disableIncomingRequestInstrumentation:!0});try{b._diag=d.diag.createComponentLogger({namespace:i}),b.instrumentationName=i}catch{}try{let a={get:()=>!1,set:()=>{}};Object.defineProperty(b,"_httpPatched",a),Object.defineProperty(b,"_httpsPatched",a)}catch{}return b});function m(a,b={}){return"boolean"==typeof a.spans?a.spans:!b.skipOpenTelemetrySetup&&(!!f.hasSpansEnabled(b)||!j)}let n=f.defineIntegration((a={})=>{let b=a.spans??!0,c=a.disableIncomingRequestSpans,d={sessions:a.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:a.sessionFlushingDelayMS,ignoreRequestBody:a.ignoreIncomingRequestBody,maxRequestBodySize:a.maxIncomingRequestBodySize},e={ignoreIncomingRequests:a.ignoreIncomingRequests,ignoreStaticAssets:a.ignoreStaticAssets,ignoreStatusCodes:a.dropSpansForIncomingRequestStatusCodes,instrumentation:a.instrumentation,onSpanCreated:a.incomingRequestSpanHook},i=g.httpServerIntegration(d),n=g.httpServerSpansIntegration(e),o=b&&!c;return{name:h,setup(a){let b=a.getOptions();o&&f.hasSpansEnabled(b)&&n.setup(a)},setupOnce(){let b=m(a,f.getClient()?.getOptions()||{});i.setupOnce(),k({breadcrumbs:a.breadcrumbs,propagateTraceInOutgoingRequests:"boolean"==typeof a.tracePropagation?a.tracePropagation:j||!b,createSpansForOutgoingRequests:j,spans:a.spans,ignoreOutgoingRequests:a.ignoreOutgoingRequests,outgoingRequestHook:(b,c)=>{let d=g.getRequestUrl(c);if(d.startsWith("data:")){let a=f.stripDataUrlContent(d);b.setAttribute("http.url",a),b.setAttribute(f.SEMANTIC_ATTRIBUTE_URL_FULL,a),b.updateName(`${c.method||"GET"} ${a}`)}a.instrumentation?.requestHook?.(b,c)},outgoingResponseHook:a.instrumentation?.responseHook,outgoingRequestApplyCustomAttributes:a.instrumentation?.applyCustomAttributesOnSpan}),b&&l(function(a={}){return{disableOutgoingRequestInstrumentation:j,ignoreOutgoingRequestHook:b=>{let c=g.getRequestUrl(b);if(!c)return!1;let d=a.ignoreOutgoingRequests;return!!d?.(c,b)},requireParentforOutgoingSpans:!1,requestHook:(b,c)=>{g.addOriginToSpan(b,"auto.http.otel.http");let d=g.getRequestUrl(c);if(d.startsWith("data:")){let a=f.stripDataUrlContent(d);b.setAttribute("http.url",a),b.setAttribute(f.SEMANTIC_ATTRIBUTE_URL_FULL,a),b.updateName(`${c.method||"GET"} ${a}`)}a.instrumentation?.requestHook?.(b,c)},responseHook:(b,c)=>{a.instrumentation?.responseHook?.(b,c)},applyCustomAttributesOnSpan:(b,c,d)=>{a.instrumentation?.applyCustomAttributesOnSpan?.(b,c,d)}}}(a))},processEvent:a=>n.processEvent(a)}});c._shouldUseOtelHttpInstrumentation=m,c.httpIntegration=n,c.instrumentOtelHttp=l,c.instrumentSentryHttp=k},474158,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.24.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-undici"},275482,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.UndiciInstrumentation=void 0;let d=a.r(154993),e=a.r(792509),f=a.r(621472),g=a.r(854230),h=a.r(35492),i=a.r(357223),j=a.r(474158);class k extends f.InstrumentationBase{_recordFromReq=new WeakMap;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a)}init(){}disable(){super.disable(),this._channelSubs.forEach(a=>a.unsubscribe()),this._channelSubs.length=0}enable(){super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0||(this.subscribeToChannel("undici:request:create",this.onRequestCreated.bind(this)),this.subscribeToChannel("undici:client:sendHeaders",this.onRequestHeaders.bind(this)),this.subscribeToChannel("undici:request:headers",this.onResponseHeaders.bind(this)),this.subscribeToChannel("undici:request:trailers",this.onDone.bind(this)),this.subscribeToChannel("undici:request:error",this.onError.bind(this)))}_updateMetricInstruments(){this._httpClientDurationHistogram=this.meter.createHistogram(i.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Measures the duration of outbound HTTP requests.",unit:"s",valueType:g.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10]}})}subscribeToChannel(a,b){let c,[e,f]=process.version.replace("v","").split(".").map(a=>Number(a));if(e>18||18===e&&f>=19)d.subscribe?.(a,b),c=()=>d.unsubscribe?.(a,b);else{let e=d.channel(a);e.subscribe(b),c=()=>e.unsubscribe(b)}this._channelSubs.push({name:a,unsubscribe:c})}parseRequestHeaders(a){let b=new Map;if(Array.isArray(a.headers))for(let c=0;c!j||"CONNECT"===a.method||d.ignoreRequestHook?.(a),a=>a&&this._diag.error("caught ignoreRequestHook error: ",a),!0))return;let k=(0,h.hrTime)();try{b=new e.URL(a.path,a.origin)}catch(a){this._diag.warn("could not determine url.full:",a);return}let l=b.protocol.replace(":",""),m=this.getRequestMethod(a.method),n={[i.ATTR_HTTP_REQUEST_METHOD]:m,[i.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]:a.method,[i.ATTR_URL_FULL]:b.toString(),[i.ATTR_URL_PATH]:b.pathname,[i.ATTR_URL_QUERY]:b.search,[i.ATTR_URL_SCHEME]:l},o=b.hostname,p=b.port||({https:"443",http:"80"})[l];n[i.ATTR_SERVER_ADDRESS]=o,p&&!isNaN(Number(p))&&(n[i.ATTR_SERVER_PORT]=Number(p));let q=this.parseRequestHeaders(a).get("user-agent");if(q){let a=Array.isArray(q)?q[q.length-1]:q;n[i.ATTR_USER_AGENT_ORIGINAL]=a}let r=(0,f.safeExecuteInTheMiddle)(()=>d.startSpanHook?.(a),a=>a&&this._diag.error("caught startSpanHook error: ",a),!0);r&&Object.entries(r).forEach(([a,b])=>{n[a]=b});let s=g.context.active(),t=g.trace.getSpan(s);c=!d.requireParentforSpans||t&&g.trace.isSpanContextValid(t.spanContext())?this.tracer.startSpan("_OTHER"===m?"HTTP":m,{kind:g.SpanKind.CLIENT,attributes:n},s):g.trace.wrapSpanContext(g.INVALID_SPAN_CONTEXT),(0,f.safeExecuteInTheMiddle)(()=>d.requestHook?.(c,a),a=>a&&this._diag.error("caught requestHook error: ",a),!0);let u=g.trace.setSpan(g.context.active(),c),v={};g.propagation.inject(u,v);let w=Object.entries(v);for(let b=0;ba.toLowerCase()));for(let[c,d]of this.parseRequestHeaders(a).entries())if(b.has(c)){let a=Array.isArray(d)?d:[d];h[`http.request.header.${c}`]=a}}e.setAttributes(h)}onResponseHeaders({request:a,response:b}){let c=this._recordFromReq.get(a);if(!c)return;let{span:d,attributes:e}=c,h={[i.ATTR_HTTP_RESPONSE_STATUS_CODE]:b.statusCode},j=this.getConfig();if((0,f.safeExecuteInTheMiddle)(()=>j.responseHook?.(d,{request:a,response:b}),a=>a&&this._diag.error("caught responseHook error: ",a),!0),j.headersToSpanAttributes?.responseHeaders){let a=new Set;j.headersToSpanAttributes?.responseHeaders.forEach(b=>a.add(b.toLowerCase()));for(let c=0;c=400?g.SpanStatusCode.ERROR:g.SpanStatusCode.UNSET}),c.attributes=Object.assign(e,h)}onDone({request:a}){let b=this._recordFromReq.get(a);if(!b)return;let{span:c,attributes:d,startTime:e}=b;c.end(),this._recordFromReq.delete(a),this.recordRequestDuration(d,e)}onError({request:a,error:b}){let c=this._recordFromReq.get(a);if(!c)return;let{span:d,attributes:e,startTime:f}=c;d.recordException(b),d.setStatus({code:g.SpanStatusCode.ERROR,message:b.message}),d.end(),this._recordFromReq.delete(a),e[i.ATTR_ERROR_TYPE]=b.message,this.recordRequestDuration(e,f)}recordRequestDuration(a,b){let c={};[i.ATTR_HTTP_RESPONSE_STATUS_CODE,i.ATTR_HTTP_REQUEST_METHOD,i.ATTR_SERVER_ADDRESS,i.ATTR_SERVER_PORT,i.ATTR_URL_SCHEME,i.ATTR_ERROR_TYPE].forEach(b=>{b in a&&(c[b]=a[b])});let d=(0,h.hrTimeToMilliseconds)((0,h.hrTimeDuration)(b,(0,h.hrTime)()))/1e3;this._httpClientDurationHistogram.record(d,c)}getRequestMethod(a){return a.toUpperCase()in{CONNECT:!0,OPTIONS:!0,HEAD:!0,GET:!0,POST:!0,PUT:!0,PATCH:!0,DELETE:!0,TRACE:!0,QUERY:!0}?a.toUpperCase():"_OTHER"}}c.UndiciInstrumentation=k},501028,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.UndiciInstrumentation=void 0;var d=a.r(275482);Object.defineProperty(c,"UndiciInstrumentation",{enumerable:!0,get:function(){return d.UndiciInstrumentation}})},383093,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(501028),e=a.r(97153),f=a.r(829770),g="NodeFetch",h=f.generateInstrumentOnce(g,d.UndiciInstrumentation,a=>l(a)),i=f.generateInstrumentOnce(`${g}.sentry`,f.SentryNodeFetchInstrumentation,a=>a),j=e.defineIntegration((a={})=>({name:"NodeFetch",setupOnce(){(function(a,b={}){return"boolean"==typeof a.spans?a.spans:!b.skipOpenTelemetrySetup&&e.hasSpansEnabled(b)})(a,e.getClient()?.getOptions())&&h(a),i(a)}}));function k(a,b="/"){let c=`${a}`;return c.endsWith("/")&&b.startsWith("/")?`${c}${b.slice(1)}`:c.endsWith("/")||b.startsWith("/")?`${c}${b}`:`${c}/${b}`}function l(a={}){return{requireParentforSpans:!1,ignoreRequestHook:b=>{let c=k(b.origin,b.path),d=a.ignoreOutgoingRequests;return!!(d&&c&&d(c))},startSpanHook:a=>{let b=k(a.origin,a.path);if(b.startsWith("data:")){let c=e.stripDataUrlContent(b);return{[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch","http.url":c,[e.SEMANTIC_ATTRIBUTE_URL_FULL]:c,[e.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]:`${a.method||"GET"} ${c}`}}return{[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch"}},requestHook:a.requestHook,responseHook:a.responseHook,headersToSpanAttributes:a.headersToSpanAttributes}}c._getConfigWithDefaults=l,c.nativeNodeFetchIntegration=j},989370,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-fs"},501791,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SYNC_FUNCTIONS=c.CALLBACK_FUNCTIONS=c.PROMISE_FUNCTIONS=void 0,c.PROMISE_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],c.CALLBACK_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","exists","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],c.SYNC_FUNCTIONS=["accessSync","appendFileSync","chmodSync","chownSync","copyFileSync","cpSync","existsSync","lchownSync","linkSync","lstatSync","lutimesSync","mkdirSync","mkdtempSync","opendirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","unlinkSync","utimesSync","writeFileSync"]},674491,(a,b,c)=>{"use strict";function d(a){let b=a.split(".");if(!(b.length>1))return[a];if(2!==b.length)throw Error(`Invalid member function name ${a}`);return b}Object.defineProperty(c,"__esModule",{value:!0}),c.indexFs=c.splitTwoLevels=void 0,c.splitTwoLevels=d,c.indexFs=function(a,b){if(!b)throw Error(JSON.stringify({member:b}));let[c,e]=d(b);return e?{objectToPatch:a[c],functionNameToPatch:e}:{objectToPatch:a,functionNameToPatch:c}}},585672,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.FsInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(989370),h=a.r(501791),i=a.r(224361),j=a.r(674491);function k(a,b){return Object.assign(a,b)}class l extends f.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new f.InstrumentationNodeModuleDefinition("fs",["*"],a=>{for(let b of h.SYNC_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d),this._wrap(c,d,this._patchSyncFunction.bind(this,b))}for(let b of h.CALLBACK_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);if((0,f.isWrapped)(c[d])&&this._unwrap(c,d),"exists"===b){this._wrap(c,d,this._patchExistsCallbackFunction.bind(this,b));continue}this._wrap(c,d,this._patchCallbackFunction.bind(this,b))}for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a.promises[b])&&this._unwrap(a.promises,b),this._wrap(a.promises,b,this._patchPromiseFunction.bind(this,b));return a},a=>{if(void 0!==a){for(let b of h.SYNC_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d)}for(let b of h.CALLBACK_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d)}for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a.promises[b])&&this._unwrap(a.promises,b)}}),new f.InstrumentationNodeModuleDefinition("fs/promises",["*"],a=>{for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,this._patchPromiseFunction.bind(this,b));return a},a=>{if(void 0!==a)for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a[b])&&this._unwrap(a,b)})]}_patchSyncFunction(a,b){let c=this;return k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=c.tracer.startSpan(`fs ${a}`);try{let i=d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,h)),b,this,...f);return c._runEndHook(a,{args:f,span:h}),i}catch(b){throw h.recordException(b),h.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:h,error:b}),b}finally{h.end()}},b)}_patchCallbackFunction(a,b){let c=this;return k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=f.length-1,i=f[h];if("function"!=typeof i)return b.apply(this,f);{let j=c.tracer.startSpan(`fs ${a}`);f[h]=d.context.bind(g,function(b){return b&&(j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR})),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),i.apply(this,arguments)});try{return d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,j)),b,this,...f)}catch(b){throw j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),b}}},b)}_patchExistsCallbackFunction(a,b){let c=this,f=k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=f.length-1,i=f[h];if("function"!=typeof i)return b.apply(this,f);{let j=c.tracer.startSpan(`fs ${a}`);f[h]=d.context.bind(g,function(){return c._runEndHook(a,{args:f,span:j}),j.end(),i.apply(this,arguments)});try{return d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,j)),b,this,...f)}catch(b){throw j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),b}}},b),g=function(a){return new Promise(b=>f(a,b))};return Object.defineProperty(g,"name",{value:a}),Object.defineProperty(f,i.promisify.custom,{value:g}),f}_patchPromiseFunction(a,b){let c=this;return k(async function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=c.tracer.startSpan(`fs ${a}`);try{let i=await d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,h)),b,this,...f);return c._runEndHook(a,{args:f,span:h}),i}catch(b){throw h.recordException(b),h.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:h,error:b}),b}finally{h.end()}},b)}_runCreateHook(...a){let{createHook:b}=this.getConfig();if("function"==typeof b)try{return b(...a)}catch(a){this._diag.error("caught createHook error",a)}return!0}_runEndHook(...a){let{endHook:b}=this.getConfig();if("function"==typeof b)try{b(...a)}catch(a){this._diag.error("caught endHook error",a)}}_shouldTrace(a){if((0,e.isTracingSuppressed)(a))return!1;let{requireParentSpan:b}=this.getConfig();return(!b||null!=d.trace.getSpan(a))&&!0}}c.FsInstrumentation=l},41654,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.FsInstrumentation=void 0;var d=a.r(585672);Object.defineProperty(c,"FsInstrumentation",{enumerable:!0,get:function(){return d.FsInstrumentation}})},706317,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(41654),e=a.r(97153),f=a.r(829770),g="FileSystem",h=e.defineIntegration((a={})=>({name:g,setupOnce(){f.generateInstrumentOnce(g,()=>new d.FsInstrumentation({requireParentSpan:!0,endHook(b,{args:c,span:d,error:f}){d.updateName(`fs.${b}`),d.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"file",[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.file.fs"}),a.recordErrorMessagesAsSpanAttributes&&("string"==typeof c[0]&&n.includes(b)?d.setAttribute("path_argument",c[0]):"string"==typeof c[0]&&"string"==typeof c[1]&&m.includes(b)?(d.setAttribute("target_argument",c[0]),d.setAttribute("path_argument",c[1])):"string"==typeof c[0]&&l.includes(b)?d.setAttribute("prefix_argument",c[0]):"string"==typeof c[0]&&"string"==typeof c[1]&&k.includes(b)?(d.setAttribute("existing_path_argument",c[0]),d.setAttribute("new_path_argument",c[1])):"string"==typeof c[0]&&"string"==typeof c[1]&&j.includes(b)?(d.setAttribute("src_argument",c[0]),d.setAttribute("dest_argument",c[1])):"string"==typeof c[0]&&"string"==typeof c[1]&&i.includes(b)&&(d.setAttribute("old_path_argument",c[0]),d.setAttribute("new_path_argument",c[1]))),f&&a.recordErrorMessagesAsSpanAttributes&&d.setAttribute("fs_error",f.message)}}))()}})),i=["rename","renameSync"],j=["copyFile","cp","copyFileSync","cpSync"],k=["link","linkSync"],l=["mkdtemp","mkdtempSync"],m=["symlink","symlinkSync"],n=["access","appendFile","chmod","chown","exists","mkdir","lchown","lstat","lutimes","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rm","rmdir","stat","truncate","unlink","utimes","writeFile","accessSync","appendFileSync","chmodSync","chownSync","existsSync","lchownSync","lstatSync","lutimesSync","opendirSync","mkdirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","rmdirSync","rmSync","statSync","truncateSync","unlinkSync","utimesSync","writeFileSync"];c.fsIntegration=h},193912,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.ExpressLayerType=void 0,(d=c.ExpressLayerType||(c.ExpressLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware",d.REQUEST_HANDLER="request_handler"},773359,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).EXPRESS_TYPE="express.type",d.EXPRESS_NAME="express.name"},726522,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=c.kLayerPatched=void 0,c.kLayerPatched=Symbol("express-layer-patched"),c._LAYERS_STORE_PROPERTY="__ot_middlewares"},57899,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getActualMatchedRoute=c.getConstructedRoute=c.getLayerPath=c.asErrorAndMessage=c.isLayerIgnored=c.getLayerMetadata=c.getRouterPath=c.storeLayerPath=void 0;let d=a.r(193912),e=a.r(773359),f=a.r(726522);c.storeLayerPath=(a,b)=>(!1===Array.isArray(a[f._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,f._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),void 0===b)?{isLayerPathStored:!1}:(a[f._LAYERS_STORE_PROPERTY].push(b),{isLayerPathStored:!0}),c.getRouterPath=(a,b)=>{let d=b.handle?.stack?.[0];return d?.route?.path?`${a}${d.route.path}`:d?.handle?.stack?(0,c.getRouterPath)(a,d):a},c.getLayerMetadata=(a,b,f)=>{if("router"===b.name){let g=(0,c.getRouterPath)("",b)||f||a||"/";return{attributes:{[e.AttributeNames.EXPRESS_NAME]:g,[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.ROUTER},name:`router - ${g}`}}return"bound dispatch"===b.name||"handle"===b.name?{attributes:{[e.AttributeNames.EXPRESS_NAME]:(a||f)??"request handler",[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.REQUEST_HANDLER},name:`request handler${b.path?` - ${a||f}`:""}`}:{attributes:{[e.AttributeNames.EXPRESS_NAME]:b.name,[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.MIDDLEWARE},name:`middleware - ${b.name}`}};let g=(a,b)=>{if("string"==typeof b)return b===a;if(b instanceof RegExp)return b.test(a);if("function"==typeof b)return b(a);throw TypeError("Pattern is in unsupported datatype")};c.isLayerIgnored=(a,b,c)=>{if(Array.isArray(c?.ignoreLayersType)&&c?.ignoreLayersType?.includes(b))return!0;if(!1===Array.isArray(c?.ignoreLayers))return!1;try{for(let b of c.ignoreLayers)if(g(a,b))return!0}catch(a){}return!1},c.asErrorAndMessage=a=>a instanceof Error?[a,a.message]:[String(a),String(a)],c.getLayerPath=a=>{let b=a[0];return Array.isArray(b)?b.map(a=>h(a)||"").join(","):h(b)};let h=a=>"string"==typeof a?a:a instanceof RegExp||"number"==typeof a?a.toString():void 0;function i(a){let b=(Array.isArray(a[f._LAYERS_STORE_PROPERTY])?a[f._LAYERS_STORE_PROPERTY]:[]).filter(a=>"/"!==a&&"/*"!==a);return 1===b.length&&"*"===b[0]?"*":b.join("").replace(/\/{2,}/g,"/")}c.getConstructedRoute=i,c.getActualMatchedRoute=function(a){var b;let c=Array.isArray(a[f._LAYERS_STORE_PROPERTY])?a[f._LAYERS_STORE_PROPERTY]:[];if(0===c.length)return;if(c.every(a=>"/"===a))return"/"===a.originalUrl?"/":void 0;let d=i(a);if("*"===d||d.includes("/")&&(d.includes(",")||d.includes("\\")||d.includes("*")||d.includes("[")))return d;let e=d.startsWith("/")?d:`/${d}`;return e.length>0&&(a.originalUrl===e||a.originalUrl.startsWith(e)||(b=e).includes(":")||b.includes("*"))?e:void 0}},496973,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-express"},471238,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ExpressInstrumentation=void 0;let d=a.r(35492),e=a.r(854230),f=a.r(193912),g=a.r(773359),h=a.r(57899),i=a.r(496973),j=a.r(621472),k=a.r(357223),l=a.r(726522);class m extends j.InstrumentationBase{constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a)}init(){return[new j.InstrumentationNodeModuleDefinition("express",[">=4.0.0 <6"],a=>{let b="function"==typeof a?.Router?.prototype?.route,c=b?a.Router.prototype:a.Router;return(0,j.isWrapped)(c.route)&&this._unwrap(c,"route"),this._wrap(c,"route",this._getRoutePatch()),(0,j.isWrapped)(c.use)&&this._unwrap(c,"use"),this._wrap(c,"use",this._getRouterUsePatch()),(0,j.isWrapped)(a.application.use)&&this._unwrap(a.application,"use"),this._wrap(a.application,"use",this._getAppUsePatch(b)),a},a=>{if(void 0===a)return;let b="function"==typeof a?.Router?.prototype?.route?a.Router.prototype:a.Router;this._unwrap(b,"route"),this._unwrap(b,"use"),this._unwrap(a.application,"use")})]}_getRoutePatch(){let a=this;return function(b){return function(...c){let d=b.apply(this,c),e=this.stack[this.stack.length-1];return a._applyPatch(e,(0,h.getLayerPath)(c)),d}}}_getRouterUsePatch(){let a=this;return function(b){return function(...c){let d=b.apply(this,c),e=this.stack[this.stack.length-1];return a._applyPatch(e,(0,h.getLayerPath)(c)),d}}}_getAppUsePatch(a){let b=this;return function(c){return function(...d){let e=a?this.router:this._router,f=c.apply(this,d);if(e){let a=e.stack[e.stack.length-1];b._applyPatch(a,(0,h.getLayerPath)(d))}return f}}}_applyPatch(a,b){let c=this;!0!==a[l.kLayerPatched]&&(a[l.kLayerPatched]=!0,this._wrap(a,"handle",i=>{if(4===i.length)return i;let m=function(m,n){let{isLayerPathStored:o}=(0,h.storeLayerPath)(m,b),p=(0,h.getConstructedRoute)(m),q=(0,h.getActualMatchedRoute)(m),r={[k.ATTR_HTTP_ROUTE]:q},s=(0,h.getLayerMetadata)(p,a,b),t=s.attributes[g.AttributeNames.EXPRESS_TYPE],u=(0,d.getRPCMetadata)(e.context.active());if(u?.type===d.RPCType.HTTP&&(u.route=q),(0,h.isLayerIgnored)(s.name,t,c.getConfig()))return t===f.ExpressLayerType.MIDDLEWARE&&m[l._LAYERS_STORE_PROPERTY].pop(),i.apply(this,arguments);if(void 0===e.trace.getSpan(e.context.active()))return i.apply(this,arguments);let v=c._getSpanName({request:m,layerType:t,route:p},s.name),w=c.tracer.startSpan(v,{attributes:Object.assign(r,s.attributes)}),x=e.context.active(),y=e.trace.setSpan(x,w),{requestHook:z}=c.getConfig();z&&(0,j.safeExecuteInTheMiddle)(()=>z(w,{request:m,layerType:t,route:p}),a=>{a&&e.diag.error("express instrumentation: request hook failed",a)},!0);let A=!1;s.attributes[g.AttributeNames.EXPRESS_TYPE]===f.ExpressLayerType.ROUTER&&(w.end(),A=!0,y=x);let B=()=>{!1===A&&(A=!0,w.end())},C=Array.from(arguments),D=C.findIndex(a=>"function"==typeof a);D>=0&&(arguments[D]=function(){let a=arguments[0],b=![void 0,null,"route","router"].includes(a);if(!A&&b){let[b,c]=(0,h.asErrorAndMessage)(a);w.recordException(b),w.setStatus({code:e.SpanStatusCode.ERROR,message:c})}!1===A&&(A=!0,m.res?.removeListener("finish",B),w.end()),!(m.route&&b)&&o&&m[l._LAYERS_STORE_PROPERTY].pop();let c=C[D],d=e.context.active(),f=e.trace.getSpan(x),g=f?e.trace.setSpan(d,f):d;return e.context.bind(g,c).apply(this,arguments)});try{return e.context.bind(y,i).apply(this,arguments)}catch(c){let[a,b]=(0,h.asErrorAndMessage)(c);throw w.recordException(a),w.setStatus({code:e.SpanStatusCode.ERROR,message:b}),c}finally{A||n.once("finish",B)}};for(let a in i)Object.defineProperty(m,a,{get:()=>i[a],set(b){i[a]=b}});return m}))}_getSpanName(a,b){let{spanNameHook:c}=this.getConfig();if(!(c instanceof Function))return b;try{return c(a,b)??b}catch(a){return e.diag.error("express instrumentation: error calling span name rewrite hook",a),b}}}c.ExpressInstrumentation=m},650086,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.ExpressLayerType=c.ExpressInstrumentation=void 0;var d=a.r(471238);Object.defineProperty(c,"ExpressInstrumentation",{enumerable:!0,get:function(){return d.ExpressInstrumentation}});var e=a.r(193912);Object.defineProperty(c,"ExpressLayerType",{enumerable:!0,get:function(){return e.ExpressLayerType}});var f=a.r(773359);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return f.AttributeNames}})},560192,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(650086),e=a.r(97153),f=a.r(829770),g=a.r(560192),h="Express",i=f.generateInstrumentOnce(h,()=>new d.ExpressInstrumentation({requestHook:a=>{let b,c,d;return f.addOriginToSpan(a,"auto.http.otel.express"),(c=(b=e.spanToJSON(a).data)["express.type"])&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${c}.express`),void("string"==typeof(d=b["express.name"])&&a.updateName(d))},spanNameHook:(a,b)=>(function(a,b){if(e.getIsolationScope()===e.getDefaultIsolationScope())return g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still default isolation scope - skipping setting transactionName"),b;if("request_handler"===a.layerType){let b=a.request,c=b.method?b.method.toUpperCase():"GET";e.getIsolationScope().setTransactionName(`${c} ${a.route}`)}return b})(a,b)})),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}}));function k(a){return function(b,c,d,f){let g=e.httpRequestToRequestData(c);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g}),(a?.shouldHandleError||function(a){let b;return((b=a.status||a.statusCode||a.status_code||a.output?.statusCode)?parseInt(b,10):500)>=500})(b)&&(d.sentry=e.captureException(b,{mechanism:{type:"auto.middleware.express",handled:!1}})),f(b)}}c.expressErrorHandler=k,c.expressIntegration=j,c.instrumentExpress=i,c.setupExpressErrorHandler=function(a,b){a.use(function(a,b,c){let d=e.httpRequestToRequestData(a);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:d}),c()}),a.use(k(b)),f.ensureIsWrapped(a.use,"express")}},349576,a=>{"use strict";a.s([],147311),a.i(147311);var b,c,d=a.i(818414),e=a.i(286508);let f=Symbol.for("io.opentelemetry.js.api.logs"),g=globalThis;class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return g[f]?this.getLoggerProvider():(g[f]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=g[f])?void 0:a.call(g,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete g[f],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(385603);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(await b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(b=>b.name===g&&af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!0},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{files;name;supportedVersions;patch;unpatch;constructor(a,b,c,d,e){this.files=e||[],this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d}}class ah{name;supportedVersions;patch;unpatch;constructor(a,b,c,d){this.name=(0,p.normalize)(a),this.supportedVersions=b,this.patch=c,this.unpatch=d}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],349576)},178902,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.range=c.balanced=void 0,c.balanced=(a,b,e)=>{let f=a instanceof RegExp?d(a,e):a,g=b instanceof RegExp?d(b,e):b,h=null!==f&&null!=g&&(0,c.range)(f,g,e);return h&&{start:h[0],end:h[1],pre:e.slice(0,h[0]),body:e.slice(h[0]+f.length,h[1]),post:e.slice(h[1]+g.length)}};let d=(a,b)=>{let c=b.match(a);return c?c[0]:null};c.range=(a,b,c)=>{let d,e,f,g,h,i=c.indexOf(a),j=c.indexOf(b,i+1),k=i;if(i>=0&&j>0){if(a===b)return[i,j];for(d=[],f=c.length;k>=0&&!h;){if(k===i)d.push(k),i=c.indexOf(a,k+1);else if(1===d.length){let a=d.pop();void 0!==a&&(h=[a,j])}else void 0!==(e=d.pop())&&e=0?i:j}d.length&&void 0!==g&&(h=[f,g])}return h}},332896,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EXPANSION_MAX=void 0,c.expand=function(a,b={}){if(!a)return[];let{max:j=c.EXPANSION_MAX}=b;return"{}"===a.slice(0,2)&&(a="\\{\\}"+a.slice(2)),(function a(b,c,e){let f=[],h=(0,d.balanced)("{","}",b);if(!h)return[b];let i=h.pre,j=h.post.length?a(h.post,c,!1):[""];if(/\$$/.test(h.pre))for(let a=0;a=0;if(!o&&!p)return h.post.match(/,(?!,).*\}/)?a(b=h.pre+"{"+h.body+g+h.post,c,!0):[b];if(o)k=h.body.split(/\.\./);else if(1===(k=function a(b){if(!b)return[""];let c=[],e=(0,d.balanced)("{","}",b);if(!e)return b.split(",");let{pre:f,body:g,post:h}=e,i=f.split(",");i[i.length-1]+="{"+g+"}";let j=a(h);return h.length&&(i[i.length-1]+=j.shift(),i.push.apply(i,j)),c.push.apply(c,i),c}(h.body)).length&&void 0!==k[0]&&1===(k=a(k[0],c,!1).map(v)).length)return j.map(a=>h.pre+k[0]+a);if(o&&void 0!==k[0]&&void 0!==k[1]){let a=t(k[0]),b=t(k[1]),c=Math.max(k[0].length,k[1].length),d=3===k.length&&void 0!==k[2]?Math.max(Math.abs(t(k[2])),1):1,e=x;b0){let c=Array(b+1).join("0");a=g<0?"-"+c+a.slice(1):c+a}}l.push(a)}}else{l=[];for(let b=0;b=b}c.EXPANSION_MAX=1e5},777306,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.assertValidPattern=void 0,c.assertValidPattern=a=>{if("string"!=typeof a)throw TypeError("invalid pattern");if(a.length>65536)throw TypeError("pattern is too long")}},14745,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.parseClass=void 0;let d={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},e=a=>a.replace(/[[\]\\-]/g,"\\$&");c.parseClass=(a,b)=>{if("["!==a.charAt(b))throw Error("not in a brace expression");let c=[],f=[],g=b+1,h=!1,i=!1,j=!1,k=!1,l=b,m="";a:for(;gm?c.push(e(m)+"-"+e(n)):n===m&&c.push(e(n)),m="",g++;continue}if(a.startsWith("-]",g+1)){c.push(e(n+"-")),g+=2;continue}if(a.startsWith("-",g+1)){m=n,g+=2;continue}c.push(e(n)),g++}if(l{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.unescape=void 0,c.unescape=(a,{windowsPathsNoEscape:b=!1,magicalBraces:c=!0}={})=>c?b?a.replace(/\[([^/\\])\]/g,"$1"):a.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):b?a.replace(/\[([^/\\{}])\]/g,"$1"):a.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1")},558282,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AST=void 0;let e=a.r(14745),f=a.r(202704),g=new Set(["!","?","+","*","@"]),h=a=>g.has(a),i=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),j=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),k=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),l=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),m="(?!\\.)",n=new Set(["[","."]),o=new Set(["..","."]),p=new Set("().*{}+?[]^$\\!"),q=a=>a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),r="[^/]",s=r+"*?",t=r+"+?",u=0;class v{type;#a;#b;#c=!1;#d=[];#e;#f;#g;#h=!1;#i;#j;#k=!1;id=++u;get depth(){return(this.#e?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#a.id,parent:this.#e?.id,depth:this.depth,partsLength:this.#d.length,parts:this.#d}}constructor(a,b,c={}){this.type=a,a&&(this.#b=!0),this.#e=b,this.#a=this.#e?this.#e.#a:this,this.#i=this.#a===this?c:this.#a.#i,this.#g=this.#a===this?[]:this.#a.#g,"!"!==a||this.#a.#h||this.#g.push(this),this.#f=this.#e?this.#e.#d.length:0}get hasMagic(){if(void 0!==this.#b)return this.#b;for(let a of this.#d)if("string"!=typeof a&&(a.type||a.hasMagic))return this.#b=!0;return this.#b}toString(){return void 0!==this.#j?this.#j:this.type?this.#j=this.type+"("+this.#d.map(a=>String(a)).join("|")+")":this.#j=this.#d.map(a=>String(a)).join("")}#l(){let a;if(this!==this.#a)throw Error("should only call on root");if(this.#h)return this;for(this.toString(),this.#h=!0;a=this.#g.pop();){if("!"!==a.type)continue;let b=a,c=b.#e;for(;c;){for(let d=b.#f+1;!c.type&&d"string"==typeof a?a:a.toJSON()):[this.type,...this.#d.map(a=>a.toJSON())];return this.isStart()&&!this.type&&a.unshift([]),this.isEnd()&&(this===this.#a||this.#a.#h&&this.#e?.type==="!")&&a.push({}),a}isStart(){if(this.#a===this)return!0;if(!this.#e?.isStart())return!1;if(0===this.#f)return!0;let a=this.#e;for(let b=0;b"string"!=typeof a),e=this.#d.map(b=>{let[e,f,g,h]="string"==typeof b?d.#w(b,this.#b,c):b.toRegExpSource(a);return this.#b=this.#b||g,this.#c=this.#c||h,e}).join(""),g="";if(this.isStart()&&"string"==typeof this.#d[0]&&!(1===this.#d.length&&o.has(this.#d[0]))){let c=b&&n.has(e.charAt(0))||e.startsWith("\\.")&&n.has(e.charAt(2))||e.startsWith("\\.\\.")&&n.has(e.charAt(4)),d=!b&&!a&&n.has(e.charAt(0));g=c?"(?!(?:^|/)\\.\\.?(?:$|/))":d?m:""}let h="";return this.isEnd()&&this.#a.#h&&this.#e?.type==="!"&&(h="(?:$|\\/)"),[g+e+h,(0,f.unescape)(e),this.#b=!!this.#b,this.#c]}let c="*"===this.type||"+"===this.type,e="!"===this.type?"(?:(?!(?:":"(?:",g=this.#x(b);if(this.isStart()&&this.isEnd()&&!g&&"!"!==this.type){let a=this.toString();return this.#d=[a],this.type=null,this.#b=void 0,[a,(0,f.unescape)(this.toString()),!1,!1]}let i=!c||a||b||!m?"":this.#x(!0);i===g&&(i=""),i&&(g=`(?:${g})(?:${i})*?`);return["!"===this.type&&this.#k?(this.isStart()&&!b?m:"")+t:e+g+("!"===this.type?"))"+(!this.isStart()||b||a?"":m)+s+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":`)${this.type}`),(0,f.unescape)(g),this.#b=!!this.#b,this.#c]}#v(){if(h(this.type)){let a=0,b=!1;do{b=!0;for(let a=0;a{if("string"==typeof b)throw Error("string type in extglob ast??");let[c,d,e,f]=b.toRegExpSource(a);return this.#c=this.#c||f,c}).filter(a=>!(this.isStart()&&this.isEnd())||!!a).join("|")}static #w(a,b,c=!1){let d=!1,g="",h=!1,i=!1;for(let f=0;f{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.escape=void 0,c.escape=(a,{windowsPathsNoEscape:b=!1,magicalBraces:c=!1}={})=>c?b?a.replace(/[?*()[\]{}]/g,"[$&]"):a.replace(/[?*()[\]\\{}]/g,"\\$&"):b?a.replace(/[?*()[\]]/g,"[$&]"):a.replace(/[?*()[\]\\]/g,"\\$&")},40728,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.unescape=c.escape=c.AST=c.Minimatch=c.match=c.makeRe=c.braceExpand=c.defaults=c.filter=c.GLOBSTAR=c.sep=c.minimatch=void 0;let d=a.r(332896),e=a.r(777306),f=a.r(558282),g=a.r(850747),h=a.r(202704);c.minimatch=(a,b,c={})=>((0,e.assertValidPattern)(b),(!!c.nocomment||"#"!==b.charAt(0))&&new x(b,c).match(a));let i=/^\*+([^+@!?*[(]*)$/,j=/^\*+\.\*+$/,k=a=>!a.startsWith(".")&&a.includes("."),l=a=>"."!==a&&".."!==a&&a.includes("."),m=/^\.\*+$/,n=a=>"."!==a&&".."!==a&&a.startsWith("."),o=/^\*+$/,p=a=>0!==a.length&&!a.startsWith("."),q=a=>0!==a.length&&"."!==a&&".."!==a,r=/^\?+([^+@!?*[(]*)?$/,s=([a])=>{let b=a.length;return a=>a.length===b&&!a.startsWith(".")},t=([a])=>{let b=a.length;return a=>a.length===b&&"."!==a&&".."!==a},u="object"==typeof process&&process?"object"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";c.sep="win32"===u?"\\":"/",c.minimatch.sep=c.sep,c.GLOBSTAR=Symbol("globstar **"),c.minimatch.GLOBSTAR=c.GLOBSTAR;c.filter=(a,b={})=>d=>(0,c.minimatch)(d,a,b),c.minimatch.filter=c.filter;let v=(a,b={})=>Object.assign({},a,b);c.defaults=a=>{if(!a||"object"!=typeof a||!Object.keys(a).length)return c.minimatch;let b=c.minimatch;return Object.assign((c,d,e={})=>b(c,d,v(a,e)),{Minimatch:class extends b.Minimatch{constructor(b,c={}){super(b,v(a,c))}static defaults(c){return b.defaults(v(a,c)).Minimatch}},AST:class extends b.AST{constructor(b,c,d={}){super(b,c,v(a,d))}static fromGlob(c,d={}){return b.AST.fromGlob(c,v(a,d))}},unescape:(c,d={})=>b.unescape(c,v(a,d)),escape:(c,d={})=>b.escape(c,v(a,d)),filter:(c,d={})=>b.filter(c,v(a,d)),defaults:c=>b.defaults(v(a,c)),makeRe:(c,d={})=>b.makeRe(c,v(a,d)),braceExpand:(c,d={})=>b.braceExpand(c,v(a,d)),match:(c,d,e={})=>b.match(c,d,v(a,e)),sep:b.sep,GLOBSTAR:c.GLOBSTAR})},c.minimatch.defaults=c.defaults,c.braceExpand=(a,b={})=>((0,e.assertValidPattern)(a),b.nobrace||!/\{(?:(?!\{).)*\}/.test(a))?[a]:(0,d.expand)(a,{max:b.braceExpandMax}),c.minimatch.braceExpand=c.braceExpand,c.makeRe=(a,b={})=>new x(a,b).makeRe(),c.minimatch.makeRe=c.makeRe,c.match=(a,b,c={})=>{let d=new x(b,c);return a=a.filter(a=>d.match(a)),d.options.nonull&&!a.length&&a.push(b),a},c.minimatch.match=c.match;let w=/[?*]|[+@!]\(.*?\)|\[|\]/;class x{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(a,b={}){(0,e.assertValidPattern)(a),b=b||{},this.options=b,this.maxGlobstarRecursion=b.maxGlobstarRecursion??200,this.pattern=a,this.platform=b.platform||u,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!b.windowsPathsNoEscape||!1===b.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!b.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!b.nonegate,this.comment=!1,this.empty=!1,this.partial=!!b.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==b.windowsNoMagicRoot?b.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let a of this.set)for(let b of a)if("string"!=typeof b)return!0;return!1}debug(){}make(){let a=this.pattern,b=this.options;if(!b.nocomment&&"#"===a.charAt(0)){this.comment=!0;return}if(!a){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],b.debug&&(this.debug=(...a)=>console.error(...a)),this.debug(this.pattern,this.globSet);let c=this.globSet.map(a=>this.slashSplit(a));this.globParts=this.preprocess(c),this.debug(this.pattern,this.globParts);let d=this.globParts.map((a,b,c)=>{if(this.isWindows&&this.windowsNoMagicRoot){let b=""===a[0]&&""===a[1]&&("?"===a[2]||!w.test(a[2]))&&!w.test(a[3]),c=/^[a-z]:/i.test(a[0]);if(b)return[...a.slice(0,4),...a.slice(4).map(a=>this.parse(a))];if(c)return[a[0],...a.slice(1).map(a=>this.parse(a))]}return a.map(a=>this.parse(a))});if(this.debug(this.pattern,d),this.set=d.filter(a=>-1===a.indexOf(!1)),this.isWindows)for(let a=0;a=2?(a=this.firstPhasePreProcess(a),a=this.secondPhasePreProcess(a)):a=b>=1?this.levelOneOptimize(a):this.adjascentGlobstarOptimize(a),a}adjascentGlobstarOptimize(a){return a.map(a=>{let b=-1;for(;-1!==(b=a.indexOf("**",b+1));){let c=b;for(;"**"===a[c+1];)c++;c!==b&&a.splice(b,c-b)}return a})}levelOneOptimize(a){return a.map(a=>0===(a=a.reduce((a,b)=>{let c=a[a.length-1];return"**"===b&&"**"===c||(".."===b&&c&&".."!==c&&"."!==c&&"**"!==c?a.pop():a.push(b)),a},[])).length?[""]:a)}levelTwoFileOptimize(a){Array.isArray(a)||(a=this.slashSplit(a));let b=!1;do{if(b=!1,!this.preserveMultipleSlashes){for(let c=1;cd&&c.splice(d+1,e-d);let f=c[d+1],g=c[d+2],h=c[d+3];if(".."!==f||!g||"."===g||".."===g||!h||"."===h||".."===h)continue;b=!0,c.splice(d,1);let i=c.slice(0);i[d]="**",a.push(i),d--}if(!this.preserveMultipleSlashes){for(let a=1;aa.length)}partsMatch(a,b,c=!1){let d=0,e=0,f=[],g="";for(;d=2&&(a=this.levelTwoFileOptimize(a)),b.includes(c.GLOBSTAR))?this.#y(a,b,d,e,f):this.#z(a,b,d,e,f)}#y(a,b,d,e,f){let g=b.indexOf(c.GLOBSTAR,f),h=b.lastIndexOf(c.GLOBSTAR),[i,j,k]=d?[b.slice(f,g),b.slice(g+1),[]]:[b.slice(f,g),b.slice(g+1,h),b.slice(h+1)];if(i.length){let b=a.slice(e,e+i.length);if(!this.#z(b,i,d,0,0))return!1;e+=i.length,f+=i.length}let l=0;if(k.length){if(k.length+e>a.length)return!1;let b=a.length-k.length;if(this.#z(a,k,d,b,0))l=k.length;else{if(""!==a[a.length-1]||e+k.length===a.length||(b--,!this.#z(a,k,d,b,0)))return!1;l=k.length+1}}if(!j.length){let b=!!l;for(let c=e;c(a=a.toLowerCase(),b=>b.toLowerCase().endsWith(a)):a=>(a=a.toLowerCase(),b=>!b.startsWith(".")&&b.toLowerCase().endsWith(a)):d.dot?a=>b=>b.endsWith(a):a=>b=>!b.startsWith(".")&&b.endsWith(a))(b[1]):(b=a.match(r))?g=(d.nocase?d.dot?([a,b=""])=>{let c=t([a]);return b?(b=b.toLowerCase(),a=>c(a)&&a.toLowerCase().endsWith(b)):c}:([a,b=""])=>{let c=s([a]);return b?(b=b.toLowerCase(),a=>c(a)&&a.toLowerCase().endsWith(b)):c}:d.dot?([a,b=""])=>{let c=t([a]);return b?a=>c(a)&&a.endsWith(b):c}:([a,b=""])=>{let c=s([a]);return b?a=>c(a)&&a.endsWith(b):c})(b):(b=a.match(j))?g=d.dot?l:k:(b=a.match(m))&&(g=n);let h=f.AST.fromGlob(a,this.options).toMMPattern();return g&&"object"==typeof h&&Reflect.defineProperty(h,"test",{value:g}),h}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;let a=this.set;if(!a.length)return this.regexp=!1,this.regexp;let b=this.options,d=b.noglobstar?"[^/]*?":b.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",e=new Set(b.nocase?["i"]:[]),f=a.map(a=>{let b=a.map(a=>{if(a instanceof RegExp)for(let b of a.flags.split(""))e.add(b);return"string"==typeof a?a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):a===c.GLOBSTAR?c.GLOBSTAR:a._src});b.forEach((a,e)=>{let f=b[e+1],g=b[e-1];a===c.GLOBSTAR&&g!==c.GLOBSTAR&&(void 0===g?void 0!==f&&f!==c.GLOBSTAR?b[e+1]="(?:\\/|"+d+"\\/)?"+f:b[e]=d:void 0===f?b[e-1]=g+"(?:\\/|\\/"+d+")?":f!==c.GLOBSTAR&&(b[e-1]=g+"(?:\\/|\\/"+d+"\\/)"+f,b[e+1]=c.GLOBSTAR))});let f=b.filter(a=>a!==c.GLOBSTAR);if(this.partial&&f.length>=1){let a=[];for(let b=1;b<=f.length;b++)a.push(f.slice(0,b).join("/"));return"(?:"+a.join("|")+")"}return f.join("/")}).join("|"),[g,h]=a.length>1?["(?:",")"]:["",""];f="^"+g+f+h+"$",this.partial&&(f="^(?:\\/|"+g+f.slice(1,-1)+h+")$"),this.negate&&(f="^(?!"+f+").+$");try{this.regexp=new RegExp(f,[...e].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(a){return this.preserveMultipleSlashes?a.split("/"):this.isWindows&&/^\/\/[^/]+/.test(a)?["",...a.split(/\/+/)]:a.split(/\/+/)}match(a,b=this.partial){if(this.debug("match",a,this.pattern),this.comment)return!1;if(this.empty)return""===a;if("/"===a&&b)return!0;let c=this.options;this.isWindows&&(a=a.split("\\").join("/"));let d=this.slashSplit(a);this.debug(this.pattern,"split",d);let e=this.set;this.debug(this.pattern,"set",e);let f=d[d.length-1];if(!f)for(let a=d.length-2;!f&&a>=0;a--)f=d[a];for(let a of e){let e=d;if(c.matchBase&&1===a.length&&(e=[f]),this.matchOne(e,a,b)){if(c.flipNegate)return!0;return!this.negate}}return!c.flipNegate&&this.negate}static defaults(a){return c.minimatch.defaults(a).Minimatch}}c.Minimatch=x;var y=a.r(558282);Object.defineProperty(c,"AST",{enumerable:!0,get:function(){return y.AST}});var z=a.r(850747);Object.defineProperty(c,"escape",{enumerable:!0,get:function(){return z.escape}});var A=a.r(202704);Object.defineProperty(c,"unescape",{enumerable:!0,get:function(){return A.unescape}}),c.minimatch.AST=f.AST,c.minimatch.Minimatch=x,c.minimatch.escape=g.escape,c.minimatch.unescape=h.unescape},289563,(a,b,c)=>{"use strict";let d=a.r(677652),{context:e,trace:f,SpanStatusCode:g,propagation:h,diag:i}=a.r(854230),{getRPCMetadata:j,RPCType:k}=a.r(35492),{ATTR_HTTP_ROUTE:l,ATTR_HTTP_RESPONSE_STATUS_CODE:m,ATTR_HTTP_REQUEST_METHOD:n,ATTR_URL_PATH:o}=a.r(357223),{InstrumentationBase:p}=a.r(349576),{version:q,name:r}=a.r(989801),s=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend","onResponse","onError"],t="hook.name",u="fastify.type",v="hook.callback.name",w="route-hook",x="hook",y="anonymous",z=Symbol("fastify otel instance"),A=Symbol("fastify otel request spans"),B=Symbol("fastify otel request context"),C=Symbol("fastify otel addhook original"),D=Symbol("fastify otel setnotfound original"),E=Symbol("fastify otel ignore path"),F=Symbol("fastify otel record exceptions");class G extends p{logger=null;_requestHook=null;_lifecycleHook=null;constructor(b){if(super(r,q,b),this.logger=i.createComponentLogger({namespace:r}),this[E]=null,this[F]=!0,b?.recordExceptions!=null){if("boolean"!=typeof b.recordExceptions)throw TypeError("recordExceptions must be a boolean");this[F]=b.recordExceptions}if("function"==typeof b?.requestHook&&(this._requestHook=b.requestHook),"function"==typeof b?.lifecycleHook&&(this._lifecycleHook=b.lifecycleHook),b?.ignorePaths!=null||null!=process.env.OTEL_FASTIFY_IGNORE_PATHS){const c=b?.ignorePaths??process.env.OTEL_FASTIFY_IGNORE_PATHS;if(("string"!=typeof c||0===c.length)&&"function"!=typeof c)throw TypeError("ignorePaths must be a string or a function");let d=null;this[E]=b=>"function"==typeof c?c(b):(null==d&&(d=a.r(40728).minimatch),d(b.url,c))}}enable(){return void 0===this._handleInitialization&&this.getConfig().registerOnInitialization&&(this._handleInitialization=a=>{this.plugin()(a.fastify,void 0,()=>{});let b=(a,b,c)=>{c()};b[Symbol.for("skip-override")]=!0,b[Symbol.for("fastify.display-name")]="@fastify/otel",a.fastify.register(b)},d.subscribe("fastify.initialization",this._handleInitialization)),super.enable()}disable(){return this._handleInitialization&&(d.unsubscribe("fastify.initialization",this._handleInitialization),this._handleInitialization=void 0),super.disable()}init(){return[]}plugin(){let a=this;return b[Symbol.for("skip-override")]=!0,b[Symbol.for("fastify.display-name")]="@fastify/otel",b[Symbol.for("plugin-meta")]={fastify:">=4.0.0 <6",name:"@fastify/otel"},b;function b(b,c,d){function i(a,b,c,d){let e=a[A];null!=e&&(b.statusCode>=500&&e.setStatus({code:g.ERROR}),e.setAttributes({[m]:b.statusCode}),e.end()),a[A]=null,d(null,c)}function p(b,c,d,e){let f=b[A];null!=f&&(f.setStatus({code:g.ERROR,message:d.message}),!1!==a[F]&&f.recordException(d)),e()}function q(a,b,c={}){return function(...d){let h=this[z],i=function(a){for(let b of a)if(b?.routeOptions&&b.url&&b.method)return b;return null}(d);if(null===i)return h.logger.debug(`Ignoring route instrumentation because ${b} was called without a Fastify request argument`),a.call(this,...d);if(!1===h.isEnabled()||i.routeOptions.config?.otel===!1)return h.logger.debug(`Ignoring route instrumentation ${i.routeOptions.method} ${i.routeOptions.url} because it is disabled`),a.call(this,...d);if(h[E]?.({url:i.url,method:i.method})===!0)return h.logger.debug(`Ignoring route instrumentation ${i.routeOptions.method} ${i.routeOptions.url} because it matches the ignore path`),a.call(this,...d);let j=i[B]??e.active(),k=a.name?.length>0?a.name:this.pluginName??y,l=h.tracer.startSpan(`${b} - ${k}`,{attributes:c},j);if(null!=h._lifecycleHook)try{h._lifecycleHook(l,{hookName:b,request:i,handler:k})}catch(a){h.logger.error({err:a},"Execution of lifecycleHook failed")}return e.with(f.setSpan(j,l),function(){try{let b=a.call(this,...d);if("function"==typeof b?.then)return b.then(a=>(l.end(),a),a=>(l.setStatus({code:g.ERROR,message:a.message}),!1!==h[F]&&l.recordException(a),l.end(),Promise.reject(a)));return l.end(),b}catch(a){throw l.setStatus({code:g.ERROR,message:a.message}),!1!==h[F]&&l.recordException(a),l.end(),a}},this)}}b.decorate(z,a),b.decorate(C,b.addHook),b.decorate(D,b.setNotFoundHandler),b.decorateRequest("opentelemetry",function(){let b=this[B],c=this[A];return{enabled:this.routeOptions.config?.otel!==!1,span:c,tracer:a.tracer,context:b,inject:(a,c)=>h.inject(b,a,c),extract:(a,c)=>h.extract(b,a,c)}}),b.decorateRequest(A,null),b.decorateRequest(B,null),b.addHook("onRoute",function(b){if(a[E]?.(b)===!0)return void a.logger.debug(`Ignoring route instrumentation ${b.method} ${b.url} because it matches the ignore path`);if(b.config?.otel===!1)return void a.logger.debug(`Ignoring route instrumentation ${b.method} ${b.url} because it is disabled`);for(let a of s)if(null!=b[a]){let c=b[a];if("function"==typeof c)b[a]=q(c,a,{[t]:`${this.pluginName} - route -> ${a}`,[u]:w,[l]:b.url,[v]:c.name?.length>0?c.name:y});else if(Array.isArray(c)){let d=[];for(let e of c)d.push(q(e,a,{[t]:`${this.pluginName} - route -> ${a}`,[u]:w,[l]:b.url,[v]:e.name?.length>0?e.name:y}));b[a]=d}}null!=b.onSend?b.onSend=Array.isArray(b.onSend)?[...b.onSend,i]:[b.onSend,i]:b.onSend=i,null!=b.onError?b.onError=Array.isArray(b.onError)?[...b.onError,p]:[b.onError,p]:b.onError=p,b.handler=q(b.handler,"handler",{[t]:`${this.pluginName} - route-handler`,[u]:"request-handler",[l]:b.url,[v]:b.handler.name.length>0?b.handler.name:y})}),b.addHook("onRequest",function(a,b,c){if(!1===this[z].isEnabled()||a.routeOptions.config?.otel===!1)return c();if(this[z][E]?.({url:a.url,method:a.method})===!0)return this[z].logger.debug(`Ignoring request ${a.method} ${a.url} because it matches the ignore path`),c();let d=e.active();null==f.getSpan(d)&&(d=h.extract(d,a.headers));let g=j(d);null!=a.routeOptions.url&&g?.type===k.HTTP&&(g.route=a.routeOptions.url);let i={"fastify.root":"@fastify/otel",[n]:a.method,[o]:a.url};null!=a.routeOptions.url&&(i[l]=a.routeOptions.url);let m=this[z].tracer.startSpan("request",{attributes:i},d);try{this[z]._requestHook?.(m,a)}catch(a){this[z].logger.error({err:a},"requestHook threw")}a[B]=f.setSpan(d,m),a[A]=m,e.with(a[B],()=>{c()})}),b.addHook("onResponse",function(a,b,c){let d=a[A];null!=d&&(d.setAttributes({[m]:b.statusCode}),d.end()),a[A]=null,c()}),b.addHook=function(a,b){let c=this[C];return s.includes(a)?c.call(this,a,q(b,a,{[t]:`${this.pluginName} - ${a}`,[u]:x,[v]:b.name?.length>0?b.name:y})):c.call(this,a,b)},b.setNotFoundHandler=function(a,b){let c=this[D];"function"==typeof a?(b=q(a,"notFoundHandler",{[t]:`${this.pluginName} - not-found-handler`,[u]:x,[v]:a.name?.length>0?a.name:y}),c.call(this,b)):(null!=a.preValidation&&(a.preValidation=q(a.preValidation,"notFoundHandler - preValidation",{[t]:`${this.pluginName} - not-found-handler - preValidation`,[u]:x,[v]:a.preValidation.name?.length>0?a.preValidation.name:y})),null!=a.preHandler&&(a.preHandler=q(a.preHandler,"notFoundHandler - preHandler",{[t]:`${this.pluginName} - not-found-handler - preHandler`,[u]:x,[v]:a.preHandler.name?.length>0?a.preHandler.name:y})),b=q(b,"notFoundHandler",{[t]:`${this.pluginName} - not-found-handler`,[u]:x,[v]:b.name?.length>0?b.name:y}),c.call(this,a,b))},d()}}}b.exports=G,b.exports.FastifyOtelInstrumentation=G},541750,(a,b,c)=>{var d,e,f;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).FASTIFY_NAME="fastify.name",d.FASTIFY_TYPE="fastify.type",d.HOOK_NAME="hook.name",d.PLUGIN_NAME="plugin.name",c.FastifyTypes=void 0,(e=c.FastifyTypes||(c.FastifyTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",c.FastifyNames=void 0,(f=c.FastifyNames||(c.FastifyNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},895502,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.spanRequestSymbol=Symbol("opentelemetry.instrumentation.fastify.request_active_span")},24033,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(895502);function f(a){return"object"==typeof a&&a&&"function"==typeof Object.getOwnPropertyDescriptor(a,"then")?.value||!1}c.endSpan=function(a,b){let c=a[e.spanRequestSymbol]||[];c.length&&(c.forEach(a=>{b&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b)),a.end()}),delete a[e.spanRequestSymbol])},c.safeExecuteInTheMiddleMaybePromise=function(a,b,c){let d,e;try{e=a(),f(e)&&e.then(a=>b(void 0,a),a=>b(a))}catch(a){d=a}finally{if(!f(e)&&(b(d,e),d&&1))throw d;return e}},c.startSpan=function(a,b,c,d={}){let f=b.startSpan(c,{attributes:d}),g=a[e.spanRequestSymbol]||[];return g.push(f),Object.defineProperty(a,e.spanRequestSymbol,{enumerable:!1,configurable:!0,value:g}),f}},620604,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(357223),h=a.r(97153),i=a.r(541750),j=a.r(24033),k="anonymous",l=new Set(["onTimeout","onRequest","preParsing","preValidation","preSerialization","preHandler","onSend","onResponse","onError"]);class m extends f.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-fastify-v3","0.1.0",a)}init(){return[new f.InstrumentationNodeModuleDefinition("fastify",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_hookOnRequest(){let a=this;return function(b,c,f){if(!a.isEnabled())return f();a._wrap(c,"send",a._patchSend());let g=e.getRPCMetadata(d.context.active()),i=b.routeOptions?b.routeOptions.url:b.routerPath;i&&g?.type===e.RPCType.HTTP&&(g.route=i);let j=b.method||"GET";h.getIsolationScope().setTransactionName(`${j} ${i}`),f()}}_wrapHandler(a,b,c,e){let f=this;return this._diag.debug("Patching fastify route.handler function"),function(...g){if(!f.isEnabled())return c.apply(this,g);let h=c.name||a||k,l=`${i.FastifyNames.MIDDLEWARE} - ${h}`,m=g[1],n=j.startSpan(m,f.tracer,l,{[i.AttributeNames.FASTIFY_TYPE]:i.FastifyTypes.MIDDLEWARE,[i.AttributeNames.PLUGIN_NAME]:a,[i.AttributeNames.HOOK_NAME]:b}),o=e&&g[g.length-1];return o&&(g[g.length-1]=function(...a){j.endSpan(m),o.apply(this,a)}),d.context.with(d.trace.setSpan(d.context.active(),n),()=>j.safeExecuteInTheMiddleMaybePromise(()=>c.apply(this,g),a=>{a instanceof Error&&(n.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),n.recordException(a)),e||j.endSpan(m)}))}}_wrapAddHook(){let a=this;return this._diag.debug("Patching fastify server.addHook function"),function(b){return function(...c){let d=c[0],e=c[1],f=this.pluginName;if(!l.has(d))return b.apply(this,c);let g="function"==typeof c[c.length-1]&&"AsyncFunction"!==e.constructor.name;return b.apply(this,[d,a._wrapHandler(f,d,e,g)])}}}_patchConstructor(a){let b=this;function c(...d){let e,f=a.fastify.apply(this,d);return f.addHook("onRequest",b._hookOnRequest()),f.addHook("preHandler",b._hookPreHandler()),(e=h.getClient())&&e.on("spanStart",a=>{n(a)}),b._wrap(f,"addHook",b._wrapAddHook()),f}return void 0!==a.errorCodes&&(c.errorCodes=a.errorCodes),c.fastify=c,c.default=c,c}_patchSend(){let a=this;return this._diag.debug("Patching fastify reply.send function"),function(b){return function(...c){let d=c[0];return a.isEnabled()?f.safeExecuteInTheMiddle(()=>b.apply(this,c),a=>{!a&&d instanceof Error&&(a=d),j.endSpan(this,a)}):b.apply(this,c)}}}_hookPreHandler(){let a=this;return this._diag.debug("Patching fastify preHandler function"),function(b,c,e){if(!a.isEnabled())return e();let h=b.routeOptions?.handler||b.context?.handler,l=h?.name.startsWith("bound ")?h.name.substring(6):h?.name,m=`${i.FastifyNames.REQUEST_HANDLER} - ${l||this.pluginName||k}`,o={[i.AttributeNames.PLUGIN_NAME]:this.pluginName,[i.AttributeNames.FASTIFY_TYPE]:i.FastifyTypes.REQUEST_HANDLER,[g.SEMATTRS_HTTP_ROUTE]:b.routeOptions?b.routeOptions.url:b.routerPath};l&&(o[i.AttributeNames.FASTIFY_NAME]=l);let p=j.startSpan(c,a.tracer,m,o);n(p);let{requestHook:q}=a.getConfig();return q&&f.safeExecuteInTheMiddle(()=>q(p,{request:b}),b=>{b&&a._diag.error("request hook failed",b)},!0),d.context.with(d.trace.setSpan(d.context.active(),p),()=>{e()})}}}function n(a){let b=h.spanToJSON(a).data,c=b["fastify.type"];if(b[h.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[h.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[h.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.fastify`});let d=b["fastify.name"]||b["plugin.name"]||b["hook.name"];if("string"==typeof d){let b=d.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");a.updateName(b)}}c.FastifyInstrumentationV3=m},946634,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(677652),e=a.r(289563),f=a.r(97153),g=a.r(829770),h=a.r(560192),i=a.r(620604),j="Fastify",k=g.generateInstrumentOnce(`${j}.v3`,()=>new i.FastifyInstrumentationV3);function l(){let a=f.getClient();if(a)return a.getIntegrationByName(j)}function m(a,b,c,d){let e=l()?.getShouldHandleError()||o;if("diagnostics-channel"===d&&(this.diagnosticsChannelExists=!0),this.diagnosticsChannelExists&&"onError-hook"===d){h.DEBUG_BUILD&&f.debug.warn("Fastify error handler was already registered via diagnostics channel.","You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.");return}e(a,b,c)&&f.captureException(a,{mechanism:{handled:!1,type:"auto.function.fastify"}})}let n=g.generateInstrumentOnce(`${j}.v5`,()=>{let a=new e.FastifyOtelInstrumentation,b=a.plugin();return d.subscribe("fastify.initialization",a=>{let c=a.fastify;c?.register(b).after(a=>{let b;a?h.DEBUG_BUILD&&f.debug.error("Failed to setup Fastify instrumentation",a):((b=f.getClient())&&b.on("spanStart",a=>{p(a)}),c&&c.addHook("onRequest",async(a,b)=>{if(a.opentelemetry){let{span:b}=a.opentelemetry();b&&p(b)}let c=a.routeOptions?.url,d=a.method||"GET";f.getIsolationScope().setTransactionName(`${d} ${c}`)}))})}),d.subscribe("tracing:fastify.request.handler:error",a=>{let{error:b,request:c,reply:d}=a;m.call(m,b,c,d,"diagnostics-channel")}),a});function o(a,b,c){let d=c.statusCode;return d>=500||d<=299}function p(a){let b=f.spanToJSON(a),c=b.description,d=b.data,e=d["fastify.type"],g="hook"===e,h=e===c?.startsWith("handler -"),i="request"===c||"request-handler"===e;if(d[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!h&&!i&&!g)return;a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${g?"hook":h?"middleware":i?"request_handler":""}.fastify`});let j=d["fastify.name"]||d["plugin.name"]||d["hook.name"];if("string"==typeof j){let b=j.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");a.updateName(b)}}c.fastifyIntegration=f.defineIntegration((a={})=>(({shouldHandleError:a})=>{let b;return{name:j,setupOnce(){b=a||o,k(),n()},getShouldHandleError:()=>b,setShouldHandleError(a){b=a}}})(a)),c.instrumentFastify=n,c.instrumentFastifyV3=k,c.setupFastifyErrorHandler=function(a,b){b?.shouldHandleError&&l()?.setShouldHandleError(b.shouldHandleError);let c=Object.assign(function(a,b,c){a.addHook("onError",async(a,b,c)=>{m.call(m,c,a,b,"onError-hook")}),c()},{[Symbol.for("skip-override")]:!0,[Symbol.for("fastify.display-name")]:"sentry-fastify-error-handler"});a.register(c)}},462367,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=c.TokenKind=c.AllowedOperationTypes=void 0,(d=c.AllowedOperationTypes||(c.AllowedOperationTypes={})).QUERY="query",d.MUTATION="mutation",d.SUBSCRIPTION="subscription",(e=c.TokenKind||(c.TokenKind={})).SOF="",e.EOF="",e.BANG="!",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment",(f=c.SpanNames||(c.SpanNames={})).EXECUTE="graphql.execute",f.PARSE="graphql.parse",f.RESOLVE="graphql.resolve",f.VALIDATE="graphql.validate",f.SCHEMA_VALIDATE="graphql.validateSchema",f.SCHEMA_PARSE="graphql.parseSchema"},943551,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).SOURCE="graphql.source",d.FIELD_NAME="graphql.field.name",d.FIELD_PATH="graphql.field.path",d.FIELD_TYPE="graphql.field.type",d.PARENT_NAME="graphql.parent.name",d.OPERATION_TYPE="graphql.operation.type",d.OPERATION_NAME="graphql.operation.name",d.VARIABLES="graphql.variables.",d.ERROR_VALIDATION_NAME="graphql.validation.error"},538507,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.OTEL_GRAPHQL_DATA_SYMBOL=c.OTEL_PATCHED_SYMBOL=void 0,c.OTEL_PATCHED_SYMBOL=Symbol.for("opentelemetry.patched"),c.OTEL_GRAPHQL_DATA_SYMBOL=Symbol.for("opentelemetry.graphql_data")},793029,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.OPERATION_NOT_SUPPORTED=void 0,a.r(538507),c.OPERATION_NOT_SUPPORTED="Operation$operationName$not supported"},289968,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.wrapFieldResolver=c.wrapFields=c.getSourceFromLocation=c.getOperation=c.endSpan=c.addSpanSource=c.addInputVariableAttributes=c.isPromise=void 0;let d=a.r(854230),e=a.r(462367),f=a.r(943551),g=a.r(538507),h=Object.values(e.AllowedOperationTypes);function i(a,b,c,d,e){let g=o(b,c,d,e);a.setAttribute(f.AttributeNames.SOURCE,g)}function j(a,b){return a[g.OTEL_GRAPHQL_DATA_SYMBOL].fields[b.join(".")]}function k(a,b){for(let c=b.length-1;c>0;c--){let d=j(a,b.slice(0,c));if(d)return d.span}return l(a)}function l(a){return a[g.OTEL_GRAPHQL_DATA_SYMBOL].span}c.isPromise=a=>"function"==typeof a?.then,c.addInputVariableAttributes=function(a,b){Object.entries(b).forEach(([b,c])=>{!function a(b,c,d){Array.isArray(d)?d.forEach((d,e)=>{a(b,`${c}.${e}`,d)}):d instanceof Object?Object.entries(d).forEach(([d,e])=>{a(b,`${c}.${d}`,e)}):b.setAttribute(`${f.AttributeNames.VARIABLES}${String(c)}`,d)}(a,b,c)})},c.addSpanSource=i,c.endSpan=function(a,b){b&&a.recordException(b),a.end()},c.getOperation=function(a,b){if(a&&Array.isArray(a.definitions))if(b)return a.definitions.filter(a=>-1!==h.indexOf(a?.operation)).find(a=>b===a?.name?.value);else return a.definitions.find(a=>-1!==h.indexOf(a?.operation))};function m(a,b){let c="";for(let d=0;dh){i=i.next,j=i?.line;continue}let a=i.value||i.kind,c="";(!b&&n.indexOf(i.kind)>=0&&(a="*"),i.kind===e.TokenKind.STRING&&(a=`"${a}"`),i.kind===e.TokenKind.EOF&&(a=""),i.line>j)?(f+=m("\n",i.line-j),j=i.line,c=m(" ",i.column-1)):i.line===i.prev?.line&&(c=m(" ",i.start-(i.prev?.end||0))),f+=c+a,i&&(i=i.next)}}return f}c.getSourceFromLocation=o,c.wrapFields=function a(b,c,d){if(!b||b[g.OTEL_PATCHED_SYMBOL])return;let e=b.getFields();b[g.OTEL_PATCHED_SYMBOL]=!0,Object.keys(e).forEach(b=>{let f=e[b];if(f&&(f.resolve&&(f.resolve=r(c,d,f.resolve)),f.type))for(let b of function a(b){var c,d;return"ofType"in b?a(b.ofType):"getTypes"in(c=b)&&"function"==typeof c.getTypes?b.getTypes():"getFields"in(d=b)&&"function"==typeof d.getFields?[b]:[]}(f.type))a(b,c,d)})};let p=(a,b,c)=>{c&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end())},q=(a,b)=>{b&&a.end()};function r(a,b,h,m=!1){if(n[g.OTEL_PATCHED_SYMBOL]||"function"!=typeof h)return h;function n(n,o,r,s){let t;if(!h)return;let u=b();if(u.ignoreTrivialResolveSpans&&m&&("object"==typeof n&&null!==n||"function"==typeof n)&&"function"!=typeof n[s.fieldName]||!r[g.OTEL_GRAPHQL_DATA_SYMBOL])return h.call(this,n,o,r,s);let v=function(a,b){let c=[],d=b;for(;d;){let b=d.key;a&&"number"==typeof b&&(b="*"),c.push(String(b)),d=d.prev}return c.reverse()}(u.mergeItems,s&&s.path),w=v.filter(a=>"string"==typeof a).length,x=!1;if(u.depth>=0&&u.depth"Field"===a.kind))&&i(x,y.loc,o().allowValues,z.loc?.start,z.loc?.end),x)},t=c,u=m,v=A,t[g.OTEL_GRAPHQL_DATA_SYMBOL].fields[u.join(".")]=v,{field:A,spanAdded:!0}}(a,b,r,s,v);t=c.span,x=h}return d.context.with(d.trace.setSpan(d.context.active(),t),()=>{try{let a=h.call(this,n,o,r,s);if((0,c.isPromise)(a))return a.then(a=>(q(t,x),a),a=>{throw p(t,a,x),a});return q(t,x),a}catch(a){throw p(t,a,x),a}})}return n[g.OTEL_PATCHED_SYMBOL]=!0,n}c.wrapFieldResolver=r},880691,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-graphql"},874253,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GraphQLInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(462367),g=a.r(943551),h=a.r(538507),i=a.r(793029),j=a.r(289968),k=a.r(880691),l={mergeItems:!1,depth:-1,allowValues:!1,ignoreResolveSpans:!1},m=[">=14.0.0 <17"];class n extends e.InstrumentationBase{constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a})}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new e.InstrumentationNodeModuleDefinition("graphql",m);return a.files.push(this._addPatchingExecute()),a.files.push(this._addPatchingParser()),a.files.push(this._addPatchingValidate()),a}_addPatchingExecute(){return new e.InstrumentationNodeModuleFile("graphql/execution/execute.js",m,a=>((0,e.isWrapped)(a.execute)&&this._unwrap(a,"execute"),this._wrap(a,"execute",this._patchExecute(a.defaultFieldResolver)),a),a=>{a&&this._unwrap(a,"execute")})}_addPatchingParser(){return new e.InstrumentationNodeModuleFile("graphql/language/parser.js",m,a=>((0,e.isWrapped)(a.parse)&&this._unwrap(a,"parse"),this._wrap(a,"parse",this._patchParse()),a),a=>{a&&this._unwrap(a,"parse")})}_addPatchingValidate(){return new e.InstrumentationNodeModuleFile("graphql/validation/validate.js",m,a=>((0,e.isWrapped)(a.validate)&&this._unwrap(a,"validate"),this._wrap(a,"validate",this._patchValidate()),a),a=>{a&&this._unwrap(a,"validate")})}_patchExecute(a){let b=this;return function(c){return function(){let f;if(arguments.length>=2){let c=arguments;f=b._wrapExecuteArgs(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],a)}else{let c=arguments[0];f=b._wrapExecuteArgs(c.schema,c.document,c.rootValue,c.contextValue,c.variableValues,c.operationName,c.fieldResolver,c.typeResolver,a)}let g=(0,j.getOperation)(f.document,f.operationName),i=b._createExecuteSpan(g,f);return f.contextValue[h.OTEL_GRAPHQL_DATA_SYMBOL]={source:f.document?f.document||f.document[h.OTEL_GRAPHQL_DATA_SYMBOL]:void 0,span:i,fields:{}},d.context.with(d.trace.setSpan(d.context.active(),i),()=>(0,e.safeExecuteInTheMiddle)(()=>c.apply(this,[f]),(a,c)=>{b._handleExecutionResult(i,a,c)}))}}}_handleExecutionResult(a,b,c){let d=this.getConfig();if(void 0===c||b)return void(0,j.endSpan)(a,b);if((0,j.isPromise)(c))c.then(b=>{"function"!=typeof d.responseHook?(0,j.endSpan)(a):this._executeResponseHook(a,b)},b=>{(0,j.endSpan)(a,b)});else{if("function"!=typeof d.responseHook)return void(0,j.endSpan)(a);this._executeResponseHook(a,c)}}_executeResponseHook(a,b){let{responseHook:c}=this.getConfig();c&&(0,e.safeExecuteInTheMiddle)(()=>{c(a,b)},b=>{b&&this._diag.error("Error running response hook",b),(0,j.endSpan)(a,void 0)},!0)}_patchParse(){let a=this;return function(b){return function(c,d){return a._parse(this,b,c,d)}}}_patchValidate(){let a=this;return function(b){return function(c,d,e,f,g){return a._validate(this,b,c,d,e,g,f)}}}_parse(a,b,c,g){let h=this.getConfig(),i=this.tracer.startSpan(f.SpanNames.PARSE);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>(0,e.safeExecuteInTheMiddle)(()=>b.call(a,c,g),(a,b)=>{b&&((0,j.getOperation)(b)?b.loc&&(0,j.addSpanSource)(i,b.loc,h.allowValues):i.updateName(f.SpanNames.SCHEMA_PARSE)),(0,j.endSpan)(i,a)}))}_validate(a,b,c,h,i,k,l){let m=this.tracer.startSpan(f.SpanNames.VALIDATE,{});return d.context.with(d.trace.setSpan(d.context.active(),m),()=>(0,e.safeExecuteInTheMiddle)(()=>b.call(a,c,h,i,l,k),(a,b)=>{h.loc||m.updateName(f.SpanNames.SCHEMA_VALIDATE),b&&b.length&&m.recordException({name:g.AttributeNames.ERROR_VALIDATION_NAME,message:JSON.stringify(b)}),(0,j.endSpan)(m,a)}))}_createExecuteSpan(a,b){let c=this.getConfig(),d=this.tracer.startSpan(f.SpanNames.EXECUTE,{});if(a){let{operation:b,name:c}=a;d.setAttribute(g.AttributeNames.OPERATION_TYPE,b);let e=c?.value;e?(d.setAttribute(g.AttributeNames.OPERATION_NAME,e),d.updateName(`${b} ${e}`)):d.updateName(b)}else{let a=" ";b.operationName&&(a=` "${b.operationName}" `),a=i.OPERATION_NOT_SUPPORTED.replace("$operationName$",a),d.setAttribute(g.AttributeNames.OPERATION_NAME,a)}return b.document?.loc&&(0,j.addSpanSource)(d,b.document.loc,c.allowValues),b.variableValues&&c.allowValues&&(0,j.addInputVariableAttributes)(d,b.variableValues),d}_wrapExecuteArgs(a,b,c,d,e,f,g,i,k){if(d||(d={}),d[h.OTEL_GRAPHQL_DATA_SYMBOL]||this.getConfig().ignoreResolveSpans)return{schema:a,document:b,rootValue:c,contextValue:d,variableValues:e,operationName:f,fieldResolver:g,typeResolver:i};let l=null==g,m=g??k;return g=(0,j.wrapFieldResolver)(this.tracer,()=>this.getConfig(),m,l),a&&((0,j.wrapFields)(a.getQueryType(),this.tracer,()=>this.getConfig()),(0,j.wrapFields)(a.getMutationType(),this.tracer,()=>this.getConfig())),{schema:a,document:b,rootValue:c,contextValue:d,variableValues:e,operationName:f,fieldResolver:g,typeResolver:i}}}c.GraphQLInstrumentation=n},58047,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GraphQLInstrumentation=void 0;var d=a.r(874253);Object.defineProperty(c,"GraphQLInstrumentation",{enumerable:!0,get:function(){return d.GraphQLInstrumentation}})},804666,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(58047),f=a.r(97153),g=a.r(829770),h=a.r(960535),i="Graphql",j=g.generateInstrumentOnce(i,e.GraphQLInstrumentation,a=>{let b=k(a);return{...b,responseHook(a,c){g.addOriginToSpan(a,"auto.graphql.otel.graphql"),c.errors?.length&&!f.spanToJSON(a).status&&a.setStatus({code:d.SpanStatusCode.ERROR});let e=f.spanToJSON(a).data,i=e["graphql.operation.type"],j=e["graphql.operation.name"];if(b.useOperationNameForRootSpan&&i){let b=f.getRootSpan(a),c=f.spanToJSON(b).data[h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION]||[],d=j?`${i} ${j}`:`${i}`;Array.isArray(c)?(c.push(d),b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,c)):"string"==typeof c?b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,[c,d]):b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,d),f.spanToJSON(b).data["original-description"]||b.setAttribute("original-description",f.spanToJSON(b).description),b.updateName(`${f.spanToJSON(b).data["original-description"]} (${function(a){if(Array.isArray(a)){let b=a.slice().sort();return b.length<=5?b.join(", "):`${b.slice(0,5).join(", ")}, +${b.length-5}`}return`${a}`}(c)})`)}}}});function k(a){return{ignoreResolveSpans:!0,ignoreTrivialResolveSpans:!0,useOperationNameForRootSpan:!0,...a}}c.graphqlIntegration=f.defineIntegration((a={})=>({name:i,setupOnce(){j(k(a))}})),c.instrumentGraphql=j},650996,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.kafkajs.eventListenersSet")},231987,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.bufferTextMapGetter=void 0,c.bufferTextMapGetter={get(a,b){if(a){for(let c of Object.keys(a))if(c===b||c.toLowerCase()===b)return a[c]?.toString()}},keys:a=>a?Object.keys(a):[]}},140938,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_MESSAGING_PROCESS_DURATION=c.METRIC_MESSAGING_CLIENT_SENT_MESSAGES=c.METRIC_MESSAGING_CLIENT_OPERATION_DURATION=c.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES=c.MESSAGING_SYSTEM_VALUE_KAFKA=c.MESSAGING_OPERATION_TYPE_VALUE_SEND=c.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE=c.MESSAGING_OPERATION_TYPE_VALUE_PROCESS=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION_TYPE=c.ATTR_MESSAGING_OPERATION_NAME=c.ATTR_MESSAGING_KAFKA_OFFSET=c.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE=c.ATTR_MESSAGING_KAFKA_MESSAGE_KEY=c.ATTR_MESSAGING_DESTINATION_PARTITION_ID=c.ATTR_MESSAGING_DESTINATION_NAME=c.ATTR_MESSAGING_BATCH_MESSAGE_COUNT=void 0,c.ATTR_MESSAGING_BATCH_MESSAGE_COUNT="messaging.batch.message_count",c.ATTR_MESSAGING_DESTINATION_NAME="messaging.destination.name",c.ATTR_MESSAGING_DESTINATION_PARTITION_ID="messaging.destination.partition.id",c.ATTR_MESSAGING_KAFKA_MESSAGE_KEY="messaging.kafka.message.key",c.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE="messaging.kafka.message.tombstone",c.ATTR_MESSAGING_KAFKA_OFFSET="messaging.kafka.offset",c.ATTR_MESSAGING_OPERATION_NAME="messaging.operation.name",c.ATTR_MESSAGING_OPERATION_TYPE="messaging.operation.type",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.MESSAGING_OPERATION_TYPE_VALUE_PROCESS="process",c.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE="receive",c.MESSAGING_OPERATION_TYPE_VALUE_SEND="send",c.MESSAGING_SYSTEM_VALUE_KAFKA="kafka",c.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES="messaging.client.consumed.messages",c.METRIC_MESSAGING_CLIENT_OPERATION_DURATION="messaging.client.operation.duration",c.METRIC_MESSAGING_CLIENT_SENT_MESSAGES="messaging.client.sent.messages",c.METRIC_MESSAGING_PROCESS_DURATION="messaging.process.duration"},230086,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.23.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-kafkajs"},32999,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KafkaJsInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(650996),h=a.r(231987),i=a.r(140938),j=a.r(230086);function k(a,b,c){return d=>{a.add(b,{...c,...d?{[f.ATTR_ERROR_TYPE]:d}:{}})}}function l(a,b,c){return d=>{a.record((Date.now()-b)/1e3,{...c,...d?{[f.ATTR_ERROR_TYPE]:d}:{}})}}let m=[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10];class n extends e.InstrumentationBase{constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a)}_updateMetricInstruments(){this._clientDuration=this.meter.createHistogram(i.METRIC_MESSAGING_CLIENT_OPERATION_DURATION,{advice:{explicitBucketBoundaries:m}}),this._sentMessages=this.meter.createCounter(i.METRIC_MESSAGING_CLIENT_SENT_MESSAGES),this._consumedMessages=this.meter.createCounter(i.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES),this._processDuration=this.meter.createHistogram(i.METRIC_MESSAGING_PROCESS_DURATION,{advice:{explicitBucketBoundaries:m}})}init(){let a=a=>{(0,e.isWrapped)(a?.Kafka?.prototype.producer)&&this._unwrap(a.Kafka.prototype,"producer"),(0,e.isWrapped)(a?.Kafka?.prototype.consumer)&&this._unwrap(a.Kafka.prototype,"consumer")};return new e.InstrumentationNodeModuleDefinition("kafkajs",[">=0.3.0 <3"],b=>(a(b),this._wrap(b?.Kafka?.prototype,"producer",this._getProducerPatch()),this._wrap(b?.Kafka?.prototype,"consumer",this._getConsumerPatch()),b),a)}_getConsumerPatch(){let a=this;return b=>function(...c){let d=b.apply(this,c);return(0,e.isWrapped)(d.run)&&a._unwrap(d,"run"),a._wrap(d,"run",a._getConsumerRunPatch()),a._setKafkaEventListeners(d),d}}_setKafkaEventListeners(a){a[g.EVENT_LISTENERS_SET]||(a.events?.REQUEST&&a.on(a.events.REQUEST,this._recordClientDurationMetric.bind(this)),a[g.EVENT_LISTENERS_SET]=!0)}_recordClientDurationMetric(a){let[b,c]=a.payload.broker.split(":");this._clientDuration.record(a.payload.duration/1e3,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:`${a.payload.apiName}`,[f.ATTR_SERVER_ADDRESS]:b,[f.ATTR_SERVER_PORT]:Number.parseInt(c,10)})}_getProducerPatch(){let a=this;return b=>function(...c){let d=b.apply(this,c);return(0,e.isWrapped)(d.sendBatch)&&a._unwrap(d,"sendBatch"),a._wrap(d,"sendBatch",a._getSendBatchPatch()),(0,e.isWrapped)(d.send)&&a._unwrap(d,"send"),a._wrap(d,"send",a._getSendPatch()),(0,e.isWrapped)(d.transaction)&&a._unwrap(d,"transaction"),a._wrap(d,"transaction",a._getProducerTransactionPatch()),a._setKafkaEventListeners(d),d}}_getConsumerRunPatch(){let a=this;return b=>function(...c){let d=c[0];return d?.eachMessage&&((0,e.isWrapped)(d.eachMessage)&&a._unwrap(d,"eachMessage"),a._wrap(d,"eachMessage",a._getConsumerEachMessagePatch())),d?.eachBatch&&((0,e.isWrapped)(d.eachBatch)&&a._unwrap(d,"eachBatch"),a._wrap(d,"eachBatch",a._getConsumerEachBatchPatch())),b.call(this,d)}}_getConsumerEachMessagePatch(){let a=this;return b=>function(...c){let e=c[0],f=d.propagation.extract(d.ROOT_CONTEXT,e.message.headers,h.bufferTextMapGetter),g=a._startConsumerSpan({topic:e.topic,message:e.message,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,ctx:f,attributes:{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)}}),j=[l(a._processDuration,Date.now(),{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)}),k(a._consumedMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)})],m=d.context.with(d.trace.setSpan(f,g),()=>b.apply(this,c));return a._endSpansOnPromise([g],j,m)}}_getConsumerEachBatchPatch(){return a=>{let b=this;return function(...c){let e=c[0],f=b._startConsumerSpan({topic:e.batch.topic,message:void 0,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,ctx:d.ROOT_CONTEXT,attributes:{[i.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]:e.batch.messages.length,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}});return d.context.with(d.trace.setSpan(d.context.active(),f),()=>{let g=Date.now(),j=[],m=[k(b._consumedMessages,e.batch.messages.length,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.batch.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)})];e.batch.messages.forEach(a=>{let c,f=d.propagation.extract(d.ROOT_CONTEXT,a.headers,h.bufferTextMapGetter),k=d.trace.getSpan(f)?.spanContext();k&&(c={context:k}),j.push(b._startConsumerSpan({topic:e.batch.topic,message:a,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,link:c,attributes:{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}})),m.push(l(b._processDuration,g,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.batch.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}))});let n=a.apply(this,c);return j.unshift(f),b._endSpansOnPromise(j,m,n)})}}}_getProducerTransactionPatch(){let a=this;return b=>function(...c){let e=a.tracer.startSpan("transaction"),f=b.apply(this,c);return f.then(b=>{let c=b.send;b.send=function(...b){return d.context.with(d.trace.setSpan(d.context.active(),e),()=>a._getSendPatch()(c).apply(this,b).catch(a=>{throw e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),a}))};let f=b.sendBatch;b.sendBatch=function(...b){return d.context.with(d.trace.setSpan(d.context.active(),e),()=>a._getSendBatchPatch()(f).apply(this,b).catch(a=>{throw e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),a}))};let g=b.commit;b.commit=function(...b){let c=g.apply(this,b).then(()=>{e.setStatus({code:d.SpanStatusCode.OK})});return a._endSpansOnPromise([e],[],c)};let h=b.abort;b.abort=function(...b){let c=h.apply(this,b);return a._endSpansOnPromise([e],[],c)}}).catch(a=>{e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),e.end()}),f}}_getSendBatchPatch(){let a=this;return b=>function(...c){let d=c[0].topicMessages||[],e=[],f=[];d.forEach(b=>{b.messages.forEach(c=>{e.push(a._startProducerSpan(b.topic,c)),f.push(k(a._sentMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_DESTINATION_NAME]:b.topic,...void 0!==c.partition?{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(c.partition)}:{}}))})});let g=b.apply(this,c);return a._endSpansOnPromise(e,f,g)}}_getSendPatch(){let a=this;return b=>function(...c){let d=c[0],e=d.messages.map(b=>a._startProducerSpan(d.topic,b)),f=d.messages.map(b=>k(a._sentMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_DESTINATION_NAME]:d.topic,...void 0!==b.partition?{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(b.partition)}:{}})),g=b.apply(this,c);return a._endSpansOnPromise(e,f,g)}}_endSpansOnPromise(a,b,c){return Promise.resolve(c).then(a=>(b.forEach(a=>a()),a)).catch(c=>{let e,g=f.ERROR_TYPE_VALUE_OTHER;throw"string"==typeof c||void 0===c?e=c:"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,"message")&&(e=c.message,g=c.constructor.name),b.forEach(a=>a(g)),a.forEach(a=>{a.setAttribute(f.ATTR_ERROR_TYPE,g),a.setStatus({code:d.SpanStatusCode.ERROR,message:e})}),c}).finally(()=>{a.forEach(a=>a.end())})}_startConsumerSpan({topic:a,message:b,operationType:c,ctx:f,link:g,attributes:h}){let j=c===i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?"poll":c,k=this.tracer.startSpan(`${j} ${a}`,{kind:c===i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?d.SpanKind.CLIENT:d.SpanKind.CONSUMER,attributes:{...h,[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_DESTINATION_NAME]:a,[i.ATTR_MESSAGING_OPERATION_TYPE]:c,[i.ATTR_MESSAGING_OPERATION_NAME]:j,[i.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:b?.key?String(b.key):void 0,[i.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!b?.key&&null===b.value||void 0,[i.ATTR_MESSAGING_KAFKA_OFFSET]:b?.offset},links:g?[g]:[]},f),{consumerHook:l}=this.getConfig();return l&&b&&(0,e.safeExecuteInTheMiddle)(()=>l(k,{topic:a,message:b}),a=>{a&&this._diag.error("consumerHook error",a)},!0),k}_startProducerSpan(a,b){let c=this.tracer.startSpan(`send ${a}`,{kind:d.SpanKind.PRODUCER,attributes:{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_DESTINATION_NAME]:a,[i.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:b.key?String(b.key):void 0,[i.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!b.key&&null===b.value||void 0,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:void 0!==b.partition?String(b.partition):void 0,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_OPERATION_TYPE]:i.MESSAGING_OPERATION_TYPE_VALUE_SEND}});b.headers=b.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),c),b.headers);let{producerHook:f}=this.getConfig();return f&&(0,e.safeExecuteInTheMiddle)(()=>f(c,{topic:a,message:b}),a=>{a&&this._diag.error("producerHook error",a)},!0),c}}c.KafkaJsInstrumentation=n},962620,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KafkaJsInstrumentation=void 0;var d=a.r(32999);Object.defineProperty(c,"KafkaJsInstrumentation",{enumerable:!0,get:function(){return d.KafkaJsInstrumentation}})},547611,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(962620),e=a.r(97153),f=a.r(829770),g="Kafka",h=f.generateInstrumentOnce(g,()=>new d.KafkaJsInstrumentation({consumerHook(a){f.addOriginToSpan(a,"auto.kafkajs.otel.consumer")},producerHook(a){f.addOriginToSpan(a,"auto.kafkajs.otel.producer")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentKafka=h,c.kafkaIntegration=i},102569,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-lru-memoizer"},511230,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.LruMemoizerInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(102569);class g extends e.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition("lru-memoizer",[">=1.3 <4"],a=>{let b=function(){let b=a.apply(this,arguments);return function(){let a=[...arguments],c=a.pop(),e="function"==typeof c?d.context.bind(d.context.active(),c):c;return a.push(e),b.apply(this,a)}};return b.sync=a.sync,b},void 0)]}}c.LruMemoizerInstrumentation=g},88155,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.LruMemoizerInstrumentation=void 0;var d=a.r(511230);Object.defineProperty(c,"LruMemoizerInstrumentation",{enumerable:!0,get:function(){return d.LruMemoizerInstrumentation}})},569473,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(88155),e=a.r(97153),f=a.r(829770),g="LruMemoizer",h=f.generateInstrumentOnce(g,()=>new d.LruMemoizerInstrumentation),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentLruMemoizer=h,c.lruMemoizerIntegration=i},649111,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MONGODB=c.DB_SYSTEM_NAME_VALUE_MONGODB=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=c.ATTR_DB_MONGODB_COLLECTION=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb",c.DB_SYSTEM_VALUE_MONGODB="mongodb",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},128584,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=void 0,(d=c.MongodbCommandType||(c.MongodbCommandType={})).CREATE_INDEXES="createIndexes",d.FIND_AND_MODIFY="findAndModify",d.IS_MASTER="isMaster",d.COUNT="count",d.AGGREGATE="aggregate",d.UNKNOWN="unknown"},768162,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.67.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongodb"},573784,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongoDBInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(649111),h=a.r(128584),i=a.r(768162),j={requireParentSpan:!0};class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,{...j,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...j,...a})}_updateMetricInstruments(){this._connectionsUsage=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsage?.add(a,{"pool.name":b,state:c})}init(){let{v3PatchConnection:a,v3UnpatchConnection:b}=this._getV3ConnectionPatches(),{v4PatchConnect:c,v4UnpatchConnect:d}=this._getV4ConnectPatches(),{v4PatchConnectionCallback:f,v4PatchConnectionPromise:g,v4UnpatchConnection:h}=this._getV4ConnectionPatches(),{v4PatchConnectionPool:i,v4UnpatchConnectionPool:j}=this._getV4ConnectionPoolPatches(),{v4PatchSessions:k,v4UnpatchSessions:l}=this._getV4SessionsPatches();return[new e.InstrumentationNodeModuleDefinition("mongodb",[">=3.3.0 <4"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/core/wireprotocol/index.js",[">=3.3.0 <4"],a,b)]),new e.InstrumentationNodeModuleDefinition("mongodb",[">=4.0.0 <8"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=4.0.0 <6.4"],f,h),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=6.4.0 <8"],g,h),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection_pool.js",[">=4.0.0 <6.4"],i,j),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connect.js",[">=4.0.0 <8"],c,d),new e.InstrumentationNodeModuleFile("mongodb/lib/sessions.js",[">=4.0.0 <8"],k,l)])]}_getV3ConnectionPatches(){return{v3PatchConnection:a=>((0,e.isWrapped)(a.insert)&&this._unwrap(a,"insert"),this._wrap(a,"insert",this._getV3PatchOperation("insert")),(0,e.isWrapped)(a.remove)&&this._unwrap(a,"remove"),this._wrap(a,"remove",this._getV3PatchOperation("remove")),(0,e.isWrapped)(a.update)&&this._unwrap(a,"update"),this._wrap(a,"update",this._getV3PatchOperation("update")),(0,e.isWrapped)(a.command)&&this._unwrap(a,"command"),this._wrap(a,"command",this._getV3PatchCommand()),(0,e.isWrapped)(a.query)&&this._unwrap(a,"query"),this._wrap(a,"query",this._getV3PatchFind()),(0,e.isWrapped)(a.getMore)&&this._unwrap(a,"getMore"),this._wrap(a,"getMore",this._getV3PatchCursor()),a),v3UnpatchConnection:a=>{void 0!==a&&(this._unwrap(a,"insert"),this._unwrap(a,"remove"),this._unwrap(a,"update"),this._unwrap(a,"command"),this._unwrap(a,"query"),this._unwrap(a,"getMore"))}}}_getV4SessionsPatches(){return{v4PatchSessions:a=>((0,e.isWrapped)(a.acquire)&&this._unwrap(a,"acquire"),this._wrap(a.ServerSessionPool.prototype,"acquire",this._getV4AcquireCommand()),(0,e.isWrapped)(a.release)&&this._unwrap(a,"release"),this._wrap(a.ServerSessionPool.prototype,"release",this._getV4ReleaseCommand()),a),v4UnpatchSessions:a=>{void 0!==a&&((0,e.isWrapped)(a.acquire)&&this._unwrap(a,"acquire"),(0,e.isWrapped)(a.release)&&this._unwrap(a,"release"))}}}_getV4AcquireCommand(){let a=this;return b=>function(){let c=this.sessions.length,d=b.call(this),e=this.sessions.length;return c===e?a._connCountAdd(1,a._poolName,"used"):c-1===e&&(a._connCountAdd(-1,a._poolName,"idle"),a._connCountAdd(1,a._poolName,"used")),d}}_getV4ReleaseCommand(){let a=this;return b=>function(c){let d=b.call(this,c);return a._connCountAdd(-1,a._poolName,"used"),a._connCountAdd(1,a._poolName,"idle"),d}}_getV4ConnectionPoolPatches(){return{v4PatchConnectionPool:a=>{let b=a.ConnectionPool.prototype;return(0,e.isWrapped)(b.checkOut)&&this._unwrap(b,"checkOut"),this._wrap(b,"checkOut",this._getV4ConnectionPoolCheckOut()),a},v4UnpatchConnectionPool:a=>{void 0!==a&&this._unwrap(a.ConnectionPool.prototype,"checkOut")}}}_getV4ConnectPatches(){return{v4PatchConnect:a=>((0,e.isWrapped)(a.connect)&&this._unwrap(a,"connect"),this._wrap(a,"connect",this._getV4ConnectCommand()),a),v4UnpatchConnect:a=>{void 0!==a&&this._unwrap(a,"connect")}}}_getV4ConnectionPoolCheckOut(){return a=>function(b){let c=d.context.bind(d.context.active(),b);return a.call(this,c)}}_getV4ConnectCommand(){let a=this;return b=>function(c,d){if(1===b.length){let d=b.call(this,c);return d&&"function"==typeof d.then&&d.then(()=>a.setPoolName(c),()=>void 0),d}return b.call(this,c,function(b,e){b||!e||a.setPoolName(c),d(b,e)})}}_getV4ConnectionPatches(){return{v4PatchConnectionCallback:a=>((0,e.isWrapped)(a.Connection.prototype.command)&&this._unwrap(a.Connection.prototype,"command"),this._wrap(a.Connection.prototype,"command",this._getV4PatchCommandCallback()),a),v4PatchConnectionPromise:a=>((0,e.isWrapped)(a.Connection.prototype.command)&&this._unwrap(a.Connection.prototype,"command"),this._wrap(a.Connection.prototype,"command",this._getV4PatchCommandPromise()),a),v4UnpatchConnection:a=>{void 0!==a&&this._unwrap(a.Connection.prototype,"command")}}}_getV3PatchOperation(a){let b=this;return c=>function(e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=b._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l||"object"!=typeof g)if("function"==typeof h)return c.call(this,e,f,g,h);else return c.call(this,e,f,g,h,i);let m=b._getV3SpanAttributes(f,e,g[0],a),n=b._spanNameFromAttrs(m),o=b.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=b._patchEnd(o,l);return"function"==typeof h?c.call(this,e,f,g,p):c.call(this,e,f,g,h,p)}}_getV3PatchCommand(){let a=this;return b=>function(c,e,f,g,i){let j=d.trace.getSpan(d.context.active()),l=a._checkSkipInstrumentation(j),m="function"==typeof g?g:i;if(l||"function"!=typeof m||"object"!=typeof f)if("function"==typeof g)return b.call(this,c,e,f,g);else return b.call(this,c,e,f,g,i);let n=k._getCommandType(f),o=n===h.MongodbCommandType.UNKNOWN?void 0:n,p=a._getV3SpanAttributes(e,c,f,o),q=a._spanNameFromAttrs(p),r=a.tracer.startSpan(q,{kind:d.SpanKind.CLIENT,attributes:p}),s=a._patchEnd(r,m);return"function"==typeof g?b.call(this,c,e,f,s):b.call(this,c,e,f,g,s)}}_getV4PatchCommandCallback(){let a=this;return b=>function(c,e,f,g){let h,i=d.trace.getSpan(d.context.active()),j=a._checkSkipInstrumentation(i),k=Object.keys(e)[0];if("object"!=typeof e||e.ismaster||e.hello)return b.call(this,c,e,f,g);if(!j){let b=a._getV4SpanAttributes(this,c,e,k),f=a._spanNameFromAttrs(b);h=a.tracer.startSpan(f,{kind:d.SpanKind.CLIENT,attributes:b})}let l=a._patchEnd(h,g,this.id,k);return b.call(this,c,e,f,l)}}_getV4PatchCommandPromise(){let a=this;return b=>function(...c){let e,[f,g]=c,h=d.trace.getSpan(d.context.active()),i=a._checkSkipInstrumentation(h),j=Object.keys(g)[0];if("object"!=typeof g||g.ismaster||g.hello)return b.apply(this,c);if(!i){let b=a._getV4SpanAttributes(this,f,g,j),c=a._spanNameFromAttrs(b);e=a.tracer.startSpan(c,{kind:d.SpanKind.CLIENT,attributes:b})}let k=a._patchEnd(e,()=>void 0,this.id,j),l=b.apply(this,c);return l.then(a=>k(null,a),a=>k(a)),l}}_getV3PatchFind(){let a=this;return b=>function(c,e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=a._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l||"object"!=typeof f)if("function"==typeof h)return b.call(this,c,e,f,g,h);else return b.call(this,c,e,f,g,h,i);let m=a._getV3SpanAttributes(e,c,f,"find"),n=a._spanNameFromAttrs(m),o=a.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=a._patchEnd(o,l);return"function"==typeof h?b.call(this,c,e,f,g,p):b.call(this,c,e,f,g,h,p)}}_getV3PatchCursor(){let a=this;return b=>function(c,e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=a._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l)if("function"==typeof h)return b.call(this,c,e,f,g,h);else return b.call(this,c,e,f,g,h,i);let m=a._getV3SpanAttributes(e,c,f.cmd,"getMore"),n=a._spanNameFromAttrs(m),o=a.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=a._patchEnd(o,l);return"function"==typeof h?b.call(this,c,e,f,g,p):b.call(this,c,e,f,g,h,p)}}static _getCommandType(a){if(void 0!==a.createIndexes)return h.MongodbCommandType.CREATE_INDEXES;if(void 0!==a.findandmodify)return h.MongodbCommandType.FIND_AND_MODIFY;if(void 0!==a.ismaster)return h.MongodbCommandType.IS_MASTER;if(void 0!==a.count)return h.MongodbCommandType.COUNT;if(void 0!==a.aggregate)return h.MongodbCommandType.AGGREGATE;else return h.MongodbCommandType.UNKNOWN}_getV4SpanAttributes(a,b,c,d){let e,f,g;if(a){let b="string"==typeof a.address?a.address.split(":"):"";2===b.length&&(e=b[0],f=b[1])}return g=c?.documents&&c.documents[0]?c.documents[0]:c?.cursors?c.cursors:c,this._getSpanAttributes(b.db,b.collection,e,f,g,d)}_getV3SpanAttributes(a,b,c,d){let e,f;if(b&&b.s&&(e=b.s.options?.host??b.s.host,f=(b.s.options?.port??b.s.port)?.toString(),null==e||null==f)){let a=b.description?.address;if(a){let b=a.split(":");e=b[0],f=b[1]}}let[g,h]=a.toString().split("."),i=c?.query??c?.q??c;return this._getSpanAttributes(g,h,e,f,i,d)}_getSpanAttributes(a,b,c,d,h,i){let j={};if(this._dbSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MONGODB,j[g.ATTR_DB_NAME]=a,j[g.ATTR_DB_MONGODB_COLLECTION]=b,j[g.ATTR_DB_OPERATION]=i,j[g.ATTR_DB_CONNECTION_STRING]=`mongodb://${c}:${d}/${a}`),this._dbSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MONGODB,j[f.ATTR_DB_NAMESPACE]=a,j[f.ATTR_DB_OPERATION_NAME]=i,j[f.ATTR_DB_COLLECTION_NAME]=b),c&&d){this._netSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_NET_PEER_NAME]=c),this._netSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_SERVER_ADDRESS]=c);let a=parseInt(d,10);!isNaN(a)&&(this._netSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_NET_PEER_PORT]=a),this._netSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_SERVER_PORT]=a))}if(h){let{dbStatementSerializer:a}=this.getConfig(),b="function"==typeof a?a:this._defaultDbStatementSerializer.bind(this);(0,e.safeExecuteInTheMiddle)(()=>{let a=b(h);this._dbSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_DB_STATEMENT]=a),this._dbSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_DB_QUERY_TEXT]=a)},a=>{a&&this._diag.error("Error running dbStatementSerializer hook",a)},!0)}return j}_spanNameFromAttrs(a){return this._dbSemconvStability&e.SemconvStability.STABLE?[a[f.ATTR_DB_OPERATION_NAME],a[f.ATTR_DB_COLLECTION_NAME]].filter(a=>a).join(" ")||g.DB_SYSTEM_NAME_VALUE_MONGODB:`mongodb.${a[g.ATTR_DB_OPERATION]||"command"}`}_getDefaultDbStatementReplacer(){let a=new WeakSet;return(b,c)=>"object"==typeof c&&c?a.has(c)?"[Circular]":(a.add(c),c):"?"}_defaultDbStatementSerializer(a){let{enhancedDatabaseReporting:b}=this.getConfig();return b?JSON.stringify(a):JSON.stringify(a,this._getDefaultDbStatementReplacer())}_handleExecutionResult(a,b){let{responseHook:c}=this.getConfig();"function"==typeof c&&(0,e.safeExecuteInTheMiddle)(()=>{c(a,{data:b})},a=>{a&&this._diag.error("Error running response hook",a)},!0)}_patchEnd(a,b,c,e){let f=d.context.active(),g=this,h=!1;return function(...c){if(!h){h=!0;let b=c[0];if(a){if(b instanceof Error)a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message});else{let b=c[1];g._handleExecutionResult(a,b)}a.end()}"endSessions"===e&&g._connCountAdd(-1,g._poolName,"idle")}return d.context.with(f,()=>b.apply(this,c))}}setPoolName(a){let b=a.hostAddress?.host,c=a.hostAddress?.port,d=a.dbName,e=`mongodb://${b}:${c}/${d}`;this._poolName=e}_checkSkipInstrumentation(a){return!0===this.getConfig().requireParentSpan&&void 0===a}}c.MongoDBInstrumentation=k},369517,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=void 0,(d=c.MongodbCommandType||(c.MongodbCommandType={})).CREATE_INDEXES="createIndexes",d.FIND_AND_MODIFY="findAndModify",d.IS_MASTER="isMaster",d.COUNT="count",d.UNKNOWN="unknown"},117904,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=c.MongoDBInstrumentation=void 0;var d=a.r(573784);Object.defineProperty(c,"MongoDBInstrumentation",{enumerable:!0,get:function(){return d.MongoDBInstrumentation}});var e=a.r(369517);Object.defineProperty(c,"MongodbCommandType",{enumerable:!0,get:function(){return e.MongodbCommandType}})},464048,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(117904),e=a.r(97153),f=a.r(829770),g="Mongo",h=f.generateInstrumentOnce(g,()=>new d.MongoDBInstrumentation({dbStatementSerializer:i,responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongo")}}));function i(a){return JSON.stringify(function a(b){var c,d;let e;return Array.isArray(b)?b.map(b=>a(b)):"object"!=typeof(c=b)||null===c||(d=c,e=!1,"u">typeof Buffer&&(e=Buffer.isBuffer(d)),e)?"?":Object.entries(b).map(([b,c])=>[b,a(c)]).reduce((a,b)=>(Array.isArray(b)&&(a[b[0]]=b[1]),a),{})}(a))}let j=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c._defaultDbStatementSerializer=i,c.instrumentMongo=h,c.mongoIntegration=j},324007,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_MONGODB=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=c.ATTR_DB_MONGODB_COLLECTION=void 0,c.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb"},6977,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.handleCallbackResponse=c.handlePromiseResponse=c.getAttributesFromCollection=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(324007),g=a.r(357223);function h(a,b={}){a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:`${b.message} ${b.code?` -Mongoose Error Code: ${b.code}`:""}`})}function i(a,b,c,f){c&&(0,e.safeExecuteInTheMiddle)(()=>c(a,{moduleVersion:f,response:b}),a=>{a&&d.diag.error("mongoose instrumentation: responseHook error",a)},!0)}c.getAttributesFromCollection=function(a,b,c){let d={};return b&e.SemconvStability.OLD&&(d[f.ATTR_DB_MONGODB_COLLECTION]=a.name,d[f.ATTR_DB_NAME]=a.conn.name,d[f.ATTR_DB_USER]=a.conn.user),b&e.SemconvStability.STABLE&&(d[g.ATTR_DB_COLLECTION_NAME]=a.name,d[g.ATTR_DB_NAMESPACE]=a.conn.name),c&e.SemconvStability.OLD&&(d[f.ATTR_NET_PEER_NAME]=a.conn.host,d[f.ATTR_NET_PEER_PORT]=a.conn.port),c&e.SemconvStability.STABLE&&(d[g.ATTR_SERVER_ADDRESS]=a.conn.host,d[g.ATTR_SERVER_PORT]=a.conn.port),d},c.handlePromiseResponse=function(a,b,c,d){return a instanceof Promise?a.then(a=>(i(b,a,c,d),a)).catch(a=>{throw h(b,a),a}).finally(()=>b.end()):(i(b,a,c,d),b.end(),a)},c.handleCallbackResponse=function(a,b,c,d,e,f,g){let j=0;return 2===e.length?j=1:3===e.length&&(j=2),e[j]=(b,c)=>(b?h(d,b):i(d,c,f,g),d.end(),a(b,c)),b.apply(c,e)}},879045,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},22751,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=c._ALREADY_INSTRUMENTED=c._STORED_PARENT_SPAN=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(6977),g=a.r(621472),h=a.r(879045),i=a.r(324007),j=a.r(357223),k=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],l=["remove","count","findOneAndRemove",...k],m=["count","findOneAndRemove",...k],n=[...k];function o(a){return a?a.startsWith("6.")||a.startsWith("5.")?l:a.startsWith("7.")?m:n:k}function p(a){return a&&(a.startsWith("5.")||a.startsWith("6."))||!1}function q(a){return!!a&&!!a.startsWith("8.")&&parseInt(a.split(".")[1],10)>=21}c._STORED_PARENT_SPAN=Symbol("stored-parent-span"),c._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class r extends g.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,g.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new g.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a;return this._wrap(c.Model.prototype,"save",this.patchOnModelMethods("save",b)),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._wrap(c.Model.prototype,"remove",this.patchOnModelMethods("remove",b)),q(b)&&(this._wrap(c.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",b)),this._wrap(c.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",b))),this._wrap(c.Query.prototype,"exec",this.patchQueryExec(b)),this._wrap(c.Aggregate.prototype,"exec",this.patchAggregateExec(b)),o(b).forEach(a=>{this._wrap(c.Query.prototype,a,this.patchAndCaptureSpanContext(a))}),this._wrap(c.Model,"aggregate",this.patchModelAggregate()),this._wrap(c.Model,"insertMany",this.patchModelStatic("insertMany",b)),this._wrap(c.Model,"bulkWrite",this.patchModelStatic("bulkWrite",b)),c}unpatch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a,d=o(b);this._unwrap(c.Model.prototype,"save"),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._unwrap(c.Model.prototype,"remove"),q(b)&&(this._unwrap(c.Model.prototype,"updateOne"),this._unwrap(c.Model.prototype,"deleteOne")),this._unwrap(c.Query.prototype,"exec"),this._unwrap(c.Aggregate.prototype,"exec"),d.forEach(a=>{this._unwrap(c.Query.prototype,a)}),this._unwrap(c.Model,"aggregate"),this._unwrap(c.Model,"insertMany"),this._unwrap(c.Model,"bulkWrite")}patchAggregateExec(a){let b=this;return e=>function(f){if(b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l("aggregate",{options:this.options,aggregatePipeline:this._pipeline});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this._model.collection,this._model?.modelName,"aggregate",k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchQueryExec(a){let b=this;return e=>function(f){if(this[c._ALREADY_INSTRUMENTED]||b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this.mongooseCollection,this.model.modelName,this.op,k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchOnModelMethods(a,b){let c=this;return e=>function(f,h){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let k={document:this};!f||f instanceof Function||(k.options=f);let l={},{dbStatementSerializer:m}=c.getConfig();if(m){let b=m(a,k);c._dbSemconvStability&g.SemconvStability.OLD&&(l[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(l[j.ATTR_DB_QUERY_TEXT]=b)}let n=c._startSpan(this.constructor.collection,this.constructor.modelName,a,l);return f instanceof Function&&(h=f,f=void 0),c._handleResponse(n,e,this,arguments,h,b)}}_patchDocumentUpdateMethods(a,b){let e=this;return f=>function(h,k,l){if(e.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return f.apply(this,arguments);let m=l,n=h,o=k;"function"==typeof h?(m=h,n=void 0,o=void 0):"function"==typeof k&&(m=k,o=void 0);let p={},q=e.getConfig().dbStatementSerializer;if(q){let b=q(a,{condition:{_id:this._id},updates:n,options:o});e._dbSemconvStability&g.SemconvStability.OLD&&(p[i.ATTR_DB_STATEMENT]=b),e._dbSemconvStability&g.SemconvStability.STABLE&&(p[j.ATTR_DB_QUERY_TEXT]=b)}let r=e._startSpan(this.constructor.collection,this.constructor.modelName,a,p),s=e._handleResponse(r,f,this,arguments,m,b);return s&&"object"==typeof s&&(s[c._ALREADY_INSTRUMENTED]=!0),s}}patchModelStatic(a,b){let c=this;return e=>function(f,h,k){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);"function"==typeof h&&(k=h,h=void 0);let l={};switch(a){case"insertMany":l.documents=f;break;case"bulkWrite":l.operations=f;break;default:l.document=f}void 0!==h&&(l.options=h);let m={},{dbStatementSerializer:n}=c.getConfig();if(n){let b=n(a,l);c._dbSemconvStability&g.SemconvStability.OLD&&(m[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(m[j.ATTR_DB_QUERY_TEXT]=b)}let o=c._startSpan(this.collection,this.modelName,a,m);return c._handleResponse(o,e,this,arguments,k,b)}}patchModelAggregate(){let a=this;return b=>function(){let e=d.trace.getSpan(d.context.active()),f=a._callOriginalFunction(()=>b.apply(this,arguments));return f&&(f[c._STORED_PARENT_SPAN]=e),f}}patchAndCaptureSpanContext(a){let b=this;return a=>function(){return this[c._STORED_PARENT_SPAN]=d.trace.getSpan(d.context.active()),b._callOriginalFunction(()=>a.apply(this,arguments))}}_startSpan(a,b,c,e,h){let k={...e,...(0,f.getAttributesFromCollection)(a,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_OPERATION]=c,k[i.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_OPERATION_NAME]=c,k[j.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MONGODB);let l=this._dbSemconvStability&g.SemconvStability.STABLE?`${c} ${a.name}`:`mongoose.${b}.${c}`;return this.tracer.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:k},h?d.trace.setSpan(d.context.active(),h):void 0)}_handleResponse(a,b,c,d,e,g){let h=this;if(e instanceof Function)return h._callOriginalFunction(()=>(0,f.handleCallbackResponse)(e,b,c,a,d,h.getConfig().responseHook,g));{let e=h._callOriginalFunction(()=>b.apply(c,d));return(0,f.handlePromiseResponse)(e,a,h.getConfig().responseHook,g)}}_callOriginalFunction(a){return this.getConfig().suppressInternalInstrumentation?d.context.with((0,e.suppressTracing)(d.context.active()),a):a()}}c.MongooseInstrumentation=r},63680,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=void 0;var d=a.r(22751);Object.defineProperty(c,"MongooseInstrumentation",{enumerable:!0,get:function(){return d.MongooseInstrumentation}})},473965,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(63680),e=a.r(97153),f=a.r(829770),g="Mongoose",h=f.generateInstrumentOnce(g,()=>new d.MongooseInstrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongoose")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMongoose=h,c.mongooseIntegration=i},117257,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},849068,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(c.AttributeNames||(c.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},101776,(a,b,c)=>{"use strict";function d(a){return a?`[${a.toString()}]`:""}Object.defineProperty(c,"__esModule",{value:!0}),c.getPoolNameOld=c.arrayStringifyHelper=c.getSpanName=c.getDbValues=c.getDbQueryText=c.getJDBCString=c.getConfig=void 0,c.getConfig=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}},c.getJDBCString=function(a,b,c){let d=`jdbc:mysql://${a||"localhost"}`;return"number"==typeof b&&(d+=`:${b}`),"string"==typeof c&&(d+=`/${c}`),d},c.getDbQueryText=function(a){return"string"==typeof a?a:a.sql},c.getDbValues=function(a,b){return"string"==typeof a?d(b):d(b||a.values)},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.arrayStringifyHelper=d,c.getPoolNameOld=function(a){let b=a.config.connectionConfig,c="";return c+=b.host?`host: '${b.host}', `:"",c+=b.port?`port: ${b.port}, `:"",c+=b.database?`database: '${b.database}', `:"",c+=b.user?`user: '${b.user}'`:"",b.user||(c=c.substring(0,c.length-2)),c.trim()}},880731,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},176475,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(117257),h=a.r(849068),i=a.r(101776),j=a.r(880731);class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsageOld?.add(a,{state:c,name:b})}init(){return[new e.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],a=>((0,e.isWrapped)(a.createConnection)&&this._unwrap(a,"createConnection"),this._wrap(a,"createConnection",this._patchCreateConnection()),(0,e.isWrapped)(a.createPool)&&this._unwrap(a,"createPool"),this._wrap(a,"createPool",this._patchCreatePool()),(0,e.isWrapped)(a.createPoolCluster)&&this._unwrap(a,"createPoolCluster"),this._wrap(a,"createPoolCluster",this._patchCreatePoolCluster()),a),a=>{void 0!==a&&(this._unwrap(a,"createConnection"),this._unwrap(a,"createPool"),this._unwrap(a,"createPoolCluster"))})]}_patchCreateConnection(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),d}}}_patchCreatePool(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"end",b._patchPoolEnd(d)),b._setPoolCallbacks(d,""),d}}}_patchPoolEnd(a){return b=>{let c=this;return function(d){let e=a._allConnections.length,f=a._freeConnections.length,g=(0,i.getPoolNameOld)(a);c._connCountAdd(-(e-f),g,"used"),c._connCountAdd(-f,g,"idle"),b.apply(a,arguments)}}}_patchCreatePoolCluster(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"add",b._patchAdd(d)),d}}}_patchAdd(a){return b=>{let c=this;return function(d,e){if(!c._enabled)return c._unwrap(a,"add"),b.apply(a,arguments);b.apply(a,arguments);let f=a._nodes;if(f){let b=f["object"==typeof d?"CLUSTER::"+a._lastId:String(d)].pool;c._setPoolCallbacks(b,d)}}}}_patchGetConnection(a){return b=>{let c=this;return function(d,e,f){if(!c._enabled)return c._unwrap(a,"getConnection"),b.apply(a,arguments);if(1==arguments.length&&"function"==typeof d){let e=c._getConnectionCallbackPatchFn(d);return b.call(a,e)}if(2==arguments.length&&"function"==typeof e){let f=c._getConnectionCallbackPatchFn(e);return b.call(a,d,f)}if(3==arguments.length&&"function"==typeof f){let g=c._getConnectionCallbackPatchFn(f);return b.call(a,d,e,g)}return b.apply(a,arguments)}}}_getConnectionCallbackPatchFn(a){let b=this,c=d.context.active();return function(f,g){g&&!(0,e.isWrapped)(g.query)&&b._wrap(g,"query",b._patchQuery(g)),"function"==typeof a&&d.context.with(c,a,this,f,g)}}_patchQuery(a){return b=>{let c=this;return function(j,k,l){if(!c._enabled)return c._unwrap(a,"query"),b.apply(a,arguments);let m={},{host:n,port:o,database:p,user:q}=(0,i.getConfig)(a.config),r=parseInt(o,10),s=(0,i.getDbQueryText)(j);c._dbSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MYSQL,m[g.ATTR_DB_CONNECTION_STRING]=(0,i.getJDBCString)(n,o,p),m[g.ATTR_DB_NAME]=p,m[g.ATTR_DB_USER]=q,m[g.ATTR_DB_STATEMENT]=s),c._dbSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_DB_SYSTEM_NAME]=f.DB_SYSTEM_NAME_VALUE_MYSQL,m[f.ATTR_DB_NAMESPACE]=p,m[f.ATTR_DB_QUERY_TEXT]=s),c._netSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_NET_PEER_NAME]=n,isNaN(r)||(m[g.ATTR_NET_PEER_PORT]=r)),c._netSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_SERVER_ADDRESS]=n,isNaN(r)||(m[f.ATTR_SERVER_PORT]=r));let t=c.tracer.startSpan((0,i.getSpanName)(j),{kind:d.SpanKind.CLIENT,attributes:m});if(c.getConfig().enhancedDatabaseReporting){let a;Array.isArray(k)?a=k:arguments[2]&&(a=[k]),t.setAttribute(h.AttributeNames.MYSQL_VALUES,(0,i.getDbValues)(j,a))}let u=Array.from(arguments).findIndex(a=>"function"==typeof a),v=d.context.active();if(-1!==u)return c._wrap(arguments,u,c._patchCallbackQuery(t,v)),d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));{let c=d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));return d.context.bind(v,c),c.on("error",a=>t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message})).on("end",()=>{t.end()})}}}}_patchCallbackQuery(a,b){return c=>function(e,f,g){return e&&a.setStatus({code:d.SpanStatusCode.ERROR,message:e.message}),a.end(),d.context.with(b,()=>c(...arguments))}}_setPoolCallbacks(a,b){let c=b||(0,i.getPoolNameOld)(a);a.on("connection",a=>{this._connCountAdd(1,c,"idle")}),a.on("acquire",a=>{this._connCountAdd(-1,c,"idle"),this._connCountAdd(1,c,"used")}),a.on("release",a=>{this._connCountAdd(1,c,"idle"),this._connCountAdd(-1,c,"used")})}}c.MySQLInstrumentation=k},669807,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;var d=a.r(176475);Object.defineProperty(c,"MySQLInstrumentation",{enumerable:!0,get:function(){return d.MySQLInstrumentation}})},848855,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(669807),e=a.r(97153),f=a.r(829770),g="Mysql",h=f.generateInstrumentOnce(g,()=>new d.MySQLInstrumentation({})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql=h,c.mysqlIntegration=i},361795,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql"},780071,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.addSqlCommenterComment=void 0;let d=a.r(854230),e=a.r(35492);c.addSqlCommenterComment=function(a,b){let c;if("string"!=typeof b||0===b.length||(c=b.indexOf("--"))>=0||!(0>b.indexOf("/*"))&&c{let b=encodeURIComponent(g[a]).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`);return`${a}='${b}'`}).join(",");return`${b} /*${i}*/`}},538335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getConnectionPrototypeToInstrument=c.once=c.getSpanName=c.getQueryText=c.getConnectionAttributes=void 0;let d=a.r(361795),e=a.r(621472),f=a.r(357223);function g(a){return a.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}c.getConnectionAttributes=function(a,b,c){var g,h,i;let j,{host:k,port:l,database:m,user:n}=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}}(a),o={};b&e.SemconvStability.OLD&&(o[d.ATTR_DB_CONNECTION_STRING]=(g=k,h=l,i=m,j=`jdbc:mysql://${g||"localhost"}`,"number"==typeof h&&(j+=`:${h}`),"string"==typeof i&&(j+=`/${i}`),j),o[d.ATTR_DB_NAME]=m,o[d.ATTR_DB_USER]=n),b&e.SemconvStability.STABLE&&(o[f.ATTR_DB_NAMESPACE]=m);let p=parseInt(l,10);return c&e.SemconvStability.OLD&&(o[d.ATTR_NET_PEER_NAME]=k,isNaN(p)||(o[d.ATTR_NET_PEER_PORT]=p)),c&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=k,isNaN(p)||(o[f.ATTR_SERVER_PORT]=p)),o},c.getQueryText=function(a,b,c,d=!1,e=g){let[f,h]="string"==typeof a?[a,c]:[a.sql,"values"in a?c||a.values:c];try{if(d)return e(f);if(b&&h)return b(f,h);return f}catch(a){return"Could not determine the query due to an error in masking or formatting"}},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}},c.getConnectionPrototypeToInstrument=function(a){let b=a.prototype,c=Object.getPrototypeOf(b);return"function"==typeof c?.query&&"function"==typeof c?.execute?c:b}},229514,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},249556,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(361795),g=a.r(780071),h=a.r(538335),i=a.r(229514),j=a.r(357223),k=[">=1.4.2 <4"];class l extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let a;function b(b){!a&&b.format&&(a=b.format)}let c=b=>{(0,e.isWrapped)(b.query)&&this._unwrap(b,"query"),this._wrap(b,"query",this._patchQuery(a,!1)),(0,e.isWrapped)(b.execute)&&this._unwrap(b,"execute"),this._wrap(b,"execute",this._patchQuery(a,!0))},d=a=>{this._unwrap(a,"query"),this._unwrap(a,"execute")};return[new e.InstrumentationNodeModuleDefinition("mysql2",k,a=>(b(a),a),()=>{},[new e.InstrumentationNodeModuleFile("mysql2/promise.js",k,a=>(b(a),a),()=>{}),new e.InstrumentationNodeModuleFile("mysql2/lib/connection.js",k,a=>(c((0,h.getConnectionPrototypeToInstrument)(a)),a),a=>{void 0===a||d((0,h.getConnectionPrototypeToInstrument)(a))})])]}_patchQuery(a,b){return c=>{let i=this;return function(k,l,m){let n;Array.isArray(l)?n=l:arguments[2]&&(n=[l]);let{maskStatement:o,maskStatementHook:p,responseHook:q}=i.getConfig(),r=(0,h.getConnectionAttributes)(this.config,i._dbSemconvStability,i._netSemconvStability),s=(0,h.getQueryText)(k,a,n,o,p);i._dbSemconvStability&e.SemconvStability.OLD&&(r[f.ATTR_DB_SYSTEM]=f.DB_SYSTEM_VALUE_MYSQL,r[f.ATTR_DB_STATEMENT]=s),i._dbSemconvStability&e.SemconvStability.STABLE&&(r[j.ATTR_DB_SYSTEM_NAME]=j.DB_SYSTEM_NAME_VALUE_MYSQL,r[j.ATTR_DB_QUERY_TEXT]=s);let t=i.tracer.startSpan((0,h.getSpanName)(k),{kind:d.SpanKind.CLIENT,attributes:r});!b&&i.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=k="string"==typeof k?(0,g.addSqlCommenterComment)(t,k):Object.assign(k,{sql:(0,g.addSqlCommenterComment)(t,k.sql)}));let u=(0,h.once)((a,b)=>{a?t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}):"function"==typeof q&&(0,e.safeExecuteInTheMiddle)(()=>{q(t,{queryResults:b})},a=>{a&&i._diag.warn("Failed executing responseHook",a)},!0),t.end()});if(1==arguments.length){"function"==typeof k.onResult&&i._wrap(k,"onResult",i._patchCallbackQuery(u));let a=c.apply(this,arguments);return a.once("error",a=>{u(a)}).once("result",a=>{u(void 0,a)}),a}return"function"==typeof arguments[1]?i._wrap(arguments,1,i._patchCallbackQuery(u)):"function"==typeof arguments[2]&&i._wrap(arguments,2,i._patchCallbackQuery(u)),c.apply(this,arguments)}}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c,d),b(...arguments)}}}c.MySQL2Instrumentation=l},402179,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;var d=a.r(249556);Object.defineProperty(c,"MySQL2Instrumentation",{enumerable:!0,get:function(){return d.MySQL2Instrumentation}})},757586,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(402179),e=a.r(97153),f=a.r(829770),g="Mysql2",h=f.generateInstrumentOnce(g,()=>new d.MySQL2Instrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mysql2")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql2=h,c.mysql2Integration=i},918346,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},432614,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.endSpan=void 0;let d=a.r(854230);c.endSpan=(a,b)=>{b&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message})),a.end()}},881924,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.defaultDbStatementSerializer=void 0;let d=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];c.defaultDbStatementSerializer=(a,b)=>{if(Array.isArray(b)&&b.length){let c=d.find(({regex:b})=>b.test(a))?.args??0,e=c>=0?b.slice(0,c):b;return b.length>e.length&&e.push(`[${b.length-c} other arguments]`),`${a} ${e.join(" ")}`}return a}},325345,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},591386,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(918346),h=a.r(621472),i=a.r(432614),j=a.r(881924),k=a.r(325345),l={requireParentSpan:!0};class m extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){return[new e.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(a,b)=>{let c="Module"===a[Symbol.toStringTag]?a.default:a;return(0,e.isWrapped)(c.prototype.sendCommand)&&this._unwrap(c.prototype,"sendCommand"),this._wrap(c.prototype,"sendCommand",this._patchSendCommand(b)),(0,e.isWrapped)(c.prototype.connect)&&this._unwrap(c.prototype,"connect"),this._wrap(c.prototype,"connect",this._patchConnection()),a},a=>{if(void 0===a)return;let b="Module"===a[Symbol.toStringTag]?a.default:a;this._unwrap(b.prototype,"sendCommand"),this._unwrap(b.prototype,"connect")})]}_patchSendCommand(a){return b=>this._traceSendCommand(b,a)}_patchConnection(){return a=>this._traceConnection(a)}_traceSendCommand(a,b){let c=this;return function(k){if(arguments.length<1||"object"!=typeof k)return a.apply(this,arguments);let l=c.getConfig(),m=l.dbStatementSerializer||j.defaultDbStatementSerializer,n=void 0===d.trace.getSpan(d.context.active());if(!0===l.requireParentSpan&&n)return a.apply(this,arguments);let o={},{host:p,port:q}=this.options,r=m(k.name,k.args);c._dbSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,o[g.ATTR_DB_STATEMENT]=r,o[g.ATTR_DB_CONNECTION_STRING]=`redis://${p}:${q}`),c._dbSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,o[f.ATTR_DB_QUERY_TEXT]=r),c._netSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_NET_PEER_NAME]=p,o[g.ATTR_NET_PEER_PORT]=q),c._netSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=p,o[f.ATTR_SERVER_PORT]=q);let s=c.tracer.startSpan(k.name,{kind:d.SpanKind.CLIENT,attributes:o}),{requestHook:t}=l;t&&(0,h.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:b,cmdName:k.name,cmdArgs:k.args}),a=>{a&&d.diag.error("ioredis instrumentation: request hook failed",a)},!0);try{let b=a.apply(this,arguments),c=k.resolve;k.resolve=function(a){(0,h.safeExecuteInTheMiddle)(()=>l.responseHook?.(s,k.name,k.args,a),a=>{a&&d.diag.error("ioredis instrumentation: response hook failed",a)},!0),(0,i.endSpan)(s,null),c(a)};let e=k.reject;return k.reject=function(a){(0,i.endSpan)(s,a),e(a)},b}catch(a){throw(0,i.endSpan)(s,a),a}}}_traceConnection(a){let b=this;return function(){let c=void 0===d.trace.getSpan(d.context.active());if(!0===b.getConfig().requireParentSpan&&c)return a.apply(this,arguments);let h={},{host:j,port:k}=this.options;b._dbSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,h[g.ATTR_DB_STATEMENT]="connect",h[g.ATTR_DB_CONNECTION_STRING]=`redis://${j}:${k}`),b._dbSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,h[f.ATTR_DB_QUERY_TEXT]="connect"),b._netSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_NET_PEER_NAME]=j,h[g.ATTR_NET_PEER_PORT]=k),b._netSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_SERVER_ADDRESS]=j,h[f.ATTR_SERVER_PORT]=k);let l=b.tracer.startSpan("connect",{kind:d.SpanKind.CLIENT,attributes:h});try{let b=a.apply(this,arguments);return(0,i.endSpan)(l,null),b}catch(a){throw(0,i.endSpan)(l,a),a}}}}c.IORedisInstrumentation=m},294614,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;var d=a.r(591386);Object.defineProperty(c,"IORedisInstrumentation",{enumerable:!0,get:function(){return d.IORedisInstrumentation}})},232887,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},808776,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getTracedCreateStreamTrace=c.getTracedCreateClient=c.endSpan=void 0;let d=a.r(854230);c.endSpan=(a,b)=>{b&&a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end()},c.getTracedCreateClient=a=>function(){let b=a.apply(this,arguments);return d.context.bind(d.context.active(),b)},c.getTracedCreateStreamTrace=a=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(a){d.context.bind(d.context.active(),a),this._patched_redis_stream=a}}),a.apply(this,arguments)}},672921,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},806841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV2_V3=void 0;let d=a.r(621472),e=a.r(808776),f=a.r(232887),g=a.r(854230),h=a.r(357223),i=a.r(672921),j=a.r(881924);class k extends d.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new d.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],a=>((0,d.isWrapped)(a.RedisClient.prototype.internal_send_command)&&this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._wrap(a.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,d.isWrapped)(a.RedisClient.prototype.create_stream)&&this._unwrap(a.RedisClient.prototype,"create_stream"),this._wrap(a.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,d.isWrapped)(a.createClient)&&this._unwrap(a,"createClient"),this._wrap(a,"createClient",this._getPatchCreateClient()),a),a=>{void 0!==a&&(this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._unwrap(a.RedisClient.prototype,"create_stream"),this._unwrap(a,"createClient"))})]}_getPatchInternalSendCommand(){let a=this;return function(b){return function(c){if(1!=arguments.length||"object"!=typeof c)return b.apply(this,arguments);let f=a.getConfig(),l=void 0===g.trace.getSpan(g.context.active());if(!0===f.requireParentSpan&&l)return b.apply(this,arguments);let m=f?.dbStatementSerializer||j.defaultDbStatementSerializer,n={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(n,{[i.ATTR_DB_SYSTEM]:i.DB_SYSTEM_VALUE_REDIS,[i.ATTR_DB_STATEMENT]:m(c.command,c.args)}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(n,{[h.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_REDIS,[h.ATTR_DB_OPERATION_NAME]:c.command,[h.ATTR_DB_QUERY_TEXT]:m(c.command,c.args)});let o=a.tracer.startSpan(`${k.COMPONENT}-${c.command}`,{kind:g.SpanKind.CLIENT,attributes:n});if(this.connection_options){let b={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(b,{[i.ATTR_NET_PEER_NAME]:this.connection_options.host,[i.ATTR_NET_PEER_PORT]:this.connection_options.port}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(b,{[h.ATTR_SERVER_ADDRESS]:this.connection_options.host,[h.ATTR_SERVER_PORT]:this.connection_options.port}),o.setAttributes(b)}this.address&&a._semconvStability&d.SemconvStability.OLD&&o.setAttribute(i.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let p=arguments[0].callback;if(p){let b=g.context.active();arguments[0].callback=function(h,i){if(f?.responseHook){let b=f.responseHook;(0,d.safeExecuteInTheMiddle)(()=>{b(o,c.command,c.args,i)},b=>{b&&a._diag.error("Error executing responseHook",b)},!0)}return(0,e.endSpan)(o,h),g.context.with(b,p,this,...arguments)}}try{return b.apply(this,arguments)}catch(a){throw(0,e.endSpan)(o,a),a}}}}_getPatchCreateClient(){return function(a){return(0,e.getTracedCreateClient)(a)}}_getPatchCreateStream(){return function(a){return(0,e.getTracedCreateStreamTrace)(a)}}}c.RedisInstrumentationV2_V3=k},553053,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getClientAttributes=void 0;let d=a.r(357223),e=a.r(672921),f=a.r(621472);c.getClientAttributes=function(a,b,c){let g={};return c&f.SemconvStability.OLD&&Object.assign(g,{[e.ATTR_DB_SYSTEM]:e.DB_SYSTEM_VALUE_REDIS,[e.ATTR_NET_PEER_NAME]:b?.socket?.host,[e.ATTR_NET_PEER_PORT]:b?.socket?.port,[e.ATTR_DB_CONNECTION_STRING]:function(a,b){if("string"==typeof b&&b)try{let a=new URL(b);return a.searchParams.delete("user_pwd"),a.username="",a.password="",a.href}catch(b){a.error("failed to sanitize redis connection url",b)}}(a,b?.url)}),c&f.SemconvStability.STABLE&&Object.assign(g,{[d.ATTR_DB_SYSTEM_NAME]:e.DB_SYSTEM_NAME_VALUE_REDIS,[d.ATTR_SERVER_ADDRESS]:b?.socket?.host,[d.ATTR_SERVER_PORT]:b?.socket?.port}),g}},80145,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV4_V5=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(553053),g=a.r(881924),h=a.r(232887),i=a.r(357223),j=a.r(672921),k=Symbol("opentelemetry.instrumentation.redis.open_spans"),l=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class m extends e.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(a){let b=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/commander.js`,["^1.0.0"],(a,b)=>{let c=a.transformCommandArguments;if(!c)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),a;let d=b?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,e.isWrapped)(a?.[d])&&this._unwrap(a,d),this._wrap(a,d,this._getPatchExtendWithCommands(c)),a},a=>{(0,e.isWrapped)(a?.extendWithCommands)&&this._unwrap(a,"extendWithCommands"),(0,e.isWrapped)(a?.attachCommands)&&this._unwrap(a,"attachCommands")}),c=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),this._wrap(b,"exec",this._getPatchMultiCommandsExec(!1)),(0,e.isWrapped)(b?.execAsPipeline)&&this._unwrap(b,"execAsPipeline"),this._wrap(b,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand"),this._wrap(b,"addCommand",this._getPatchMultiCommandsAddCommand()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand")}),d=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return b?.multi&&((0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),this._wrap(b,"multi",this._getPatchRedisClientMulti())),b?.MULTI&&((0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),this._wrap(b,"MULTI",this._getPatchRedisClientMulti())),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand"),this._wrap(b,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(b,"connect",this._getPatchedClientConnect()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),(0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand")});return new e.InstrumentationNodeModuleDefinition(a,["^1.0.0","^5.0.0"],a=>a,()=>{},[b,c,d])}_getPatchExtendWithCommands(a){let b=this;return function(c){return function(d){if(d?.BaseClass?.name!=="RedisClient")return c.apply(this,arguments);let e=d.executor;return d.executor=function(c,d){let f=a(c,d).args;return b._traceClientCommand(e,this,arguments,f)},c.apply(this,arguments)}}}_getPatchMultiCommandsExec(a){let b=this;return function(c){return function(){let d=c.apply(this,arguments);return"function"!=typeof d?.then?(b._diag.error("non-promise result when patching exec/execAsPipeline"),d):d.then(c=>{let d=this[k];return b._endSpansWithRedisReplies(d,c,a),c}).catch(c=>{let d=this[k];if(d){let e="MultiErrorReply"===c.constructor.name?c.replies:Array(d.length).fill(c);b._endSpansWithRedisReplies(d,e,a)}else b._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(c)})}}}_getPatchMultiCommandsAddCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchRedisClientMulti(){return function(a){return function(){let b=a.apply(this,arguments);return b[l]=this.options,b}}}_getPatchRedisClientSendCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchedClientConnect(){let a=this;return function(b){return function(){let c=this.options,e=(0,f.getClientAttributes)(a._diag,c,a._semconvStability),g=a.tracer.startSpan(`${m.COMPONENT}-connect`,{kind:d.SpanKind.CLIENT,attributes:e});return d.context.with(d.trace.setSpan(d.context.active(),g),()=>b.apply(this)).then(a=>(g.end(),a)).catch(a=>(g.recordException(a),g.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),g.end(),Promise.reject(a)))}}}_traceClientCommand(a,b,c,h){if(void 0===d.trace.getSpan(d.context.active())&&this.getConfig().requireParentSpan)return a.apply(b,c);let n=b.options||b[l],o=h[0],p=h.slice(1),q=this.getConfig().dbStatementSerializer||g.defaultDbStatementSerializer,r=(0,f.getClientAttributes)(this._diag,n,this._semconvStability);this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_OPERATION_NAME]=o);try{let a=q(o,p);null!=a&&(this._semconvStability&e.SemconvStability.OLD&&(r[j.ATTR_DB_STATEMENT]=a),this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_QUERY_TEXT]=a))}catch(a){this._diag.error("dbStatementSerializer throw an exception",a,{commandName:o})}let s=this.tracer.startSpan(`${m.COMPONENT}-${o}`,{kind:d.SpanKind.CLIENT,attributes:r}),t=d.context.with(d.trace.setSpan(d.context.active(),s),()=>a.apply(b,c));return"function"==typeof t?.then?t.then(a=>{this._endSpanWithResponse(s,o,p,a,void 0)},a=>{this._endSpanWithResponse(s,o,p,null,a)}):(t[k]=t[k]||[],t[k].push({span:s,commandName:o,commandArgs:p})),t}_endSpansWithRedisReplies(a,b,c=!1){if(!a)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(b.length!==a.length)return this._diag.error("number of multi command spans does not match response from redis");let d=a.map(a=>a.commandName),f=d.every(a=>a===d[0])?(c?"PIPELINE ":"MULTI ")+d[0]:c?"PIPELINE":"MULTI";for(let c=0;c{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;let d=a.r(621472),e=a.r(232887),f=a.r(806841),g=a.r(80145),h={requireParentSpan:!1};class i extends d.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(a={}){const b={...h,...a};super(e.PACKAGE_NAME,e.PACKAGE_VERSION,b),this.instrumentationV2_V3=new f.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new g.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(a={}){let b={...h,...a};super.setConfig(b),this.initialized&&(this.instrumentationV2_V3.setConfig(b),this.instrumentationV4_V5.setConfig(b))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(a){super.setTracerProvider(a),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(a),this.instrumentationV4_V5.setTracerProvider(a))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}c.RedisInstrumentation=i},16860,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;var d=a.r(922540);Object.defineProperty(c,"RedisInstrumentation",{enumerable:!0,get:function(){return d.RedisInstrumentation}})},454951,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=["get","set","setex"],e=["get","mget"],f=["set","setex"];function g(a,b){return a.includes(b.toLowerCase())}function h(a){return g(e,a)?"cache.get":g(f,a)?"cache.put":void 0}function i(a){let b=[],c=a=>{a.forEach(a=>{Array.isArray(a)?c(a):b.push(a)})};return c(a),b}c.GET_COMMANDS=e,c.SET_COMMANDS=f,c.calculateCacheItemSize=function(a){let b=a=>{try{if(Buffer.isBuffer(a))return a.byteLength;if("string"==typeof a)return a.length;if("number"==typeof a)return a.toString().length;else if(null==a)return 0;return JSON.stringify(a).length}catch{return}};return Array.isArray(a)?a.reduce((a,c)=>{let d=b(c);return"number"==typeof d?void 0!==a?a+d:d:a},0):b(a)},c.getCacheKeySafely=function(a,b){try{if(0===b.length)return;let c=a=>"string"==typeof a||"number"==typeof a||Buffer.isBuffer(a)?[a.toString()]:Array.isArray(a)?i(a.map(a=>c(a))):[""],e=b[0];if(g(d,a)&&null!=e)return c(e);return i(b.map(a=>c(a)))}catch{return}},c.getCacheOperation=h,c.isInCommands=g,c.shouldConsiderForCache=function(a,b,c){if(!h(a))return!1;for(let a of b)if(function(a,b){return b.some(b=>a.startsWith(b))}(a,c))return!0;return!1}},745584,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(294614),e=a.r(16860),f=a.r(97153),g=a.r(829770),h=a.r(454951),i="Redis";c._redisOptions={};let j=(a,b,d,e)=>{a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let g=h.getCacheKeySafely(b,d),i=h.getCacheOperation(b);if(!g||!i||!c._redisOptions.cachePrefixes||!h.shouldConsiderForCache(b,g,c._redisOptions.cachePrefixes))return;let j=f.spanToJSON(a).data["net.peer.name"],k=f.spanToJSON(a).data["net.peer.port"];k&&j&&a.setAttributes({"network.peer.address":j,"network.peer.port":k});let l=h.calculateCacheItemSize(e);l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,l),h.isInCommands(h.GET_COMMANDS,b)&&void 0!==l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_HIT,l>0),a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:i,[f.SEMANTIC_ATTRIBUTE_CACHE_KEY]:g});let m=g.join(", ");a.updateName(c._redisOptions.maxCacheKeyLength?f.truncate(m,c._redisOptions.maxCacheKeyLength):m)},k=g.generateInstrumentOnce(`${i}.IORedis`,()=>new d.IORedisInstrumentation({responseHook:j})),l=g.generateInstrumentOnce(`${i}.Redis`,()=>new e.RedisInstrumentation({responseHook:j})),m=Object.assign(()=>{k(),l()},{id:i}),n=f.defineIntegration((a={})=>({name:i,setupOnce(){c._redisOptions=a,m()}}));c.cacheResponseHook=j,c.instrumentRedis=m,c.redisIntegration=n},247765,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},625531,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).PG_VALUES="db.postgresql.values",d.PG_PLAN="db.postgresql.plan",d.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",d.MAX_CLIENT="db.postgresql.max.client"},337652,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=c.METRIC_DB_CLIENT_CONNECTION_COUNT=c.DB_SYSTEM_VALUE_POSTGRESQL=c.DB_CLIENT_CONNECTION_STATE_VALUE_USED=c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=c.ATTR_DB_CLIENT_CONNECTION_STATE=c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",c.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",c.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",c.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",c.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},10035,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=void 0,(d=c.SpanNames||(c.SpanNames={})).QUERY_PREFIX="pg.query",d.CONNECT="pg.connect",d.POOL_CONNECT="pg-pool.connect"},277678,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizedErrorMessage=c.isObjectWithTextString=c.getErrorMessage=c.patchClientConnectCallback=c.patchCallbackPGPool=c.updateCounter=c.getPoolName=c.patchCallback=c.handleExecutionResult=c.handleConfigQuery=c.shouldSkipInstrumentation=c.getSemanticAttributesFromPoolConnection=c.getSemanticAttributesFromConnection=c.getConnectionString=c.parseAndMaskConnectionString=c.parseNormalizedOperationName=c.getQuerySpanName=void 0;let d=a.r(854230),e=a.r(625531),f=a.r(357223),g=a.r(337652),h=a.r(621472),i=a.r(10035);function j(a,b){if(!b)return i.SpanNames.QUERY_PREFIX;let c="string"==typeof b.name&&b.name?b.name:k(b.text);return`${i.SpanNames.QUERY_PREFIX}:${c}${a?` ${a}`:""}`}function k(a){let b=a.trim(),c=b.indexOf(" "),d=-1===c?b:b.slice(0,c);return(d=d.toUpperCase()).endsWith(";")?d.slice(0,-1):d}function l(a){try{let b=new URL(a);return b.username="",b.password="",b.toString()}catch(a){return"postgresql://localhost:5432/"}}function m(a){if("connectionString"in a&&a.connectionString)return l(a.connectionString);let b=a.host||"localhost",c=a.port||5432,d=a.database||"";return`postgresql://${b}:${c}/${d}`}function n(a){if(Number.isInteger(a))return a}function o(a,b){let c={};return b&h.SemconvStability.OLD&&(c={...c,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_DB_USER]:a.user,[g.ATTR_NET_PEER_NAME]:a.host,[g.ATTR_NET_PEER_PORT]:n(a.port)}),b&h.SemconvStability.STABLE&&(c={...c,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:a.host,[f.ATTR_SERVER_PORT]:n(a.port)}),c}function p(a,b,c){"function"==typeof a.responseHook&&(0,h.safeExecuteInTheMiddle)(()=>{a.responseHook(b,{data:c})},a=>{a&&d.diag.error("Error running response hook",a)},!0)}function q(a){let b=a?.name??"PostgreSQLError",c=a?.code??"UNKNOWN";return`PostgreSQL error of type '${b}' occurred (code: ${c})`}c.getQuerySpanName=j,c.parseNormalizedOperationName=k,c.parseAndMaskConnectionString=l,c.getConnectionString=m,c.getSemanticAttributesFromConnection=o,c.getSemanticAttributesFromPoolConnection=function(a,b){let c;try{c=a.connectionString?new URL(a.connectionString):void 0}catch(a){c=void 0}let d={[e.AttributeNames.IDLE_TIMEOUT_MILLIS]:a.idleTimeoutMillis,[e.AttributeNames.MAX_CLIENT]:a.maxClient};return b&h.SemconvStability.OLD&&(d={...d,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:c?.pathname.slice(1)??a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_NET_PEER_NAME]:c?.hostname??a.host,[g.ATTR_NET_PEER_PORT]:Number(c?.port)||n(a.port),[g.ATTR_DB_USER]:c?.username??a.user}),b&h.SemconvStability.STABLE&&(d={...d,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:c?.hostname??a.host,[f.ATTR_SERVER_PORT]:Number(c?.port)||n(a.port)}),d},c.shouldSkipInstrumentation=function(a){return!0===a.requireParentSpan&&void 0===d.trace.getSpan(d.context.active())},c.handleConfigQuery=function(a,b,c,i){let{connectionParameters:k}=this,l=j(k.database,i),m=a.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:o(k,c)});if(!i)return m;if(i.text&&(c&h.SemconvStability.OLD&&m.setAttribute(g.ATTR_DB_STATEMENT,i.text),c&h.SemconvStability.STABLE&&m.setAttribute(f.ATTR_DB_QUERY_TEXT,i.text)),b.enhancedDatabaseReporting&&Array.isArray(i.values))try{let a=i.values.map(a=>null==a?"null":a instanceof Buffer?a.toString():"object"!=typeof a?a.toString():"function"==typeof a.toPostgres?a.toPostgres():JSON.stringify(a));m.setAttribute(e.AttributeNames.PG_VALUES,a)}catch(a){d.diag.error("failed to stringify ",i.values,a)}return"string"==typeof i.name&&m.setAttribute(e.AttributeNames.PG_PLAN,i.name),m},c.handleExecutionResult=p,c.patchCallback=function(a,b,c,e,g){return function(h,i){h?(Object.prototype.hasOwnProperty.call(h,"code")&&(e[f.ATTR_ERROR_TYPE]=h.code),h instanceof Error&&b.recordException(q(h)),b.setStatus({code:d.SpanStatusCode.ERROR,message:h.message})):p(a,b,i),g(),b.end(),c.call(this,h,i)}},c.getPoolName=function(a){let b="";return(b+=(a?.host?`${a.host}`:"unknown_host")+":"+(a?.port?`${a.port}`:"unknown_port")+"/"+(a?.database?`${a.database}`:"unknown_database")).trim()},c.updateCounter=function(a,b,c,d,e){let f=b.totalCount,h=b.waitingCount,i=b.idleCount,j=f-i;return c.add(j-e.used,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),c.add(i-e.idle,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),d.add(h-e.pending,{[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),{used:j,idle:i,pending:h}},c.patchCallbackPGPool=function(a,b){return function(c,e,f){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.call(this,c,e,f)}},c.patchClientConnectCallback=function(a,b){return function(c){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.apply(this,arguments)}},c.getErrorMessage=function(a){return"object"==typeof a&&null!==a&&"message"in a?String(a.message):void 0},c.isObjectWithTextString=function(a){return"object"==typeof a&&"string"==typeof a?.text},c.sanitizedErrorMessage=q},412962,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.66.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},352271,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PgInstrumentation=void 0;let d=a.r(621472),e=a.r(854230),f=a.r(247765),g=a.r(277678),h=a.r(780071),i=a.r(412962),j=a.r(10035),k=a.r(35492),l=a.r(357223),m=a.r(337652);function n(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class o extends d.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._semconvStability=(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(l.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:e.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let a=[">=8.0.3 <9"],b=new d.InstrumentationNodeModuleFile("pg/lib/native/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),c=new d.InstrumentationNodeModuleFile("pg/lib/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new d.InstrumentationNodeModuleDefinition("pg",a,a=>{let b=n(a);return this._patchPgClient(b.Client),a},a=>{let b=n(a);return this._unpatchPgClient(b.Client),a},[c,b]),new d.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],a=>{let b=n(a);return(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"connect",this._getPoolConnectPatch()),b},a=>{let b=n(a);(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect")})]}_patchPgClient(a){if(!a)return;let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"query",this._getClientQueryPatch()),this._wrap(b.prototype,"connect",this._getClientConnectPatch()),a}_unpatchPgClient(a){let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),a}_getClientConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||d.ignoreConnectSpans)return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromConnection(this,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchClientConnectCallback(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}recordOperationDuration(a,b){let c={},e=[l.ATTR_DB_NAMESPACE,l.ATTR_ERROR_TYPE,l.ATTR_SERVER_PORT,l.ATTR_SERVER_ADDRESS,l.ATTR_DB_OPERATION_NAME];this._semconvStability&d.SemconvStability.OLD&&e.push(m.ATTR_DB_SYSTEM),this._semconvStability&d.SemconvStability.STABLE&&e.push(l.ATTR_DB_SYSTEM_NAME),e.forEach(b=>{b in a&&(c[b]=a[b])});let f=(0,k.hrTimeToMilliseconds)((0,k.hrTimeDuration)(b,(0,k.hrTime)()))/1e3;this._operationDuration.record(f,c)}_getClientQueryPatch(){let a=this;return b=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...c){let f;if(g.shouldSkipInstrumentation(a.getConfig()))return b.apply(this,c);let i=(0,k.hrTime)(),j=c[0],n="string"==typeof j,o=g.isObjectWithTextString(j),p=n?{text:j,values:Array.isArray(c[1])?c[1]:void 0}:o?{...j,name:j.name,text:j.text,values:j.values??(Array.isArray(c[1])?c[1]:void 0)}:void 0,q={[m.ATTR_DB_SYSTEM]:m.DB_SYSTEM_VALUE_POSTGRESQL,[l.ATTR_DB_NAMESPACE]:this.database,[l.ATTR_SERVER_PORT]:this.connectionParameters.port,[l.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};p?.text&&(q[l.ATTR_DB_OPERATION_NAME]=g.parseNormalizedOperationName(p?.text));let r=()=>{a.recordOperationDuration(q,i)},s=a.getConfig(),t=g.handleConfigQuery.call(this,a.tracer,s,a._semconvStability,p);if(s.addSqlCommenterCommentToQueries&&(n?c[0]=(0,h.addSqlCommenterComment)(t,j):!o||"name"in j||(c[0]={...j,text:(0,h.addSqlCommenterComment)(t,j.text)})),c.length>0){let b=e.trace.getSpan(e.context.active());if("function"==typeof c[c.length-1])c[c.length-1]=g.patchCallback(s,t,c[c.length-1],q,r),b&&(c[c.length-1]=e.context.bind(e.context.active(),c[c.length-1]));else if("function"==typeof p?.callback){let d=g.patchCallback(a.getConfig(),t,p.callback,q,r);b&&(d=e.context.bind(e.context.active(),d)),c[0].callback=d}}let{requestHook:u}=s;"function"==typeof u&&p&&(0,d.safeExecuteInTheMiddle)(()=>{let{database:a,host:b,port:c,user:d}=this.connectionParameters;u(t,{connection:{database:a,host:b,port:c,user:d},query:{text:p.text,values:p.values,name:p.name}})},b=>{b&&a._diag.error("Error running query hook",b)},!0);try{f=b.apply(this,c)}catch(a){throw a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(a)}),t.end(),a}return f instanceof Promise?f.then(b=>new Promise(c=>{g.handleExecutionResult(a.getConfig(),t,b),r(),t.end(),c(b)})).catch(a=>new Promise((b,c)=>{a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),r(),t.end(),c(a)})):f})}_setPoolConnectEventListeners(a){if(a[f.EVENT_LISTENERS_SET])return;let b=g.getPoolName(a.options);a.on("connect",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("acquire",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("remove",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("release",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a[f.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||(a._setPoolConnectEventListeners(this),d.ignoreConnectSpans))return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.POOL_CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromPoolConnection(this.options,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchCallbackPGPool(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}}function p(a,b){return b instanceof Promise?e.context.bind(e.context.active(),b.then(b=>(a.end(),b)).catch(b=>(b instanceof Error&&a.recordException(g.sanitizedErrorMessage(b)),a.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(b)}),a.end(),Promise.reject(b)))):b}c.PgInstrumentation=o},95274,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.PgInstrumentation=void 0;var d=a.r(352271);Object.defineProperty(c,"PgInstrumentation",{enumerable:!0,get:function(){return d.PgInstrumentation}});var e=a.r(625531);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},277029,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(95274),e=a.r(97153),f=a.r(829770),g="Postgres",h=f.generateInstrumentOnce(g,d.PgInstrumentation,a=>({requireParentSpan:!0,requestHook(a){f.addOriginToSpan(a,"auto.db.otel.postgres")},ignoreConnectSpans:a?.ignoreConnectSpans??!1})),i=e.defineIntegration(a=>({name:g,setupOnce(){h(a)}}));c.instrumentPostgres=h,c.postgresIntegration=i},551578,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(97153),h=a.r(829770),i=a.r(560192),j="PostgresJs",k=[">=3.0.0 <4"],l=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,m=Symbol.for("sentry.query.from.instrumented.sql"),n=h.generateInstrumentOnce(j,a=>new o({requireParentSpan:a?.requireParentSpan??!0,requestHook:a?.requestHook}));class o extends e.InstrumentationBase{constructor(a){super("sentry-postgres-js",g.SDK_VERSION,a)}init(){let a=new e.InstrumentationNodeModuleDefinition("postgres",k,a=>{try{return this._patchPostgres(a)}catch(b){return i.DEBUG_BUILD&&g.debug.error("Failed to patch postgres module:",b),a}},a=>a);return["src","cf/src","cjs/src"].forEach(b=>{a.files.push(new e.InstrumentationNodeModuleFile(`postgres/${b}/query.js`,k,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),a}_patchPostgres(a){let b="function"==typeof a,c=b?a:a.default;if("function"!=typeof c)return i.DEBUG_BUILD&&g.debug.warn("postgres module does not export a function. Skipping instrumentation."),a;let d=this,e=function(...a){let b=Reflect.construct(c,a);if(!b||"function"!=typeof b)return i.DEBUG_BUILD&&g.debug.warn("postgres() did not return a valid instance"),b;let e=d.getConfig();return g.instrumentPostgresJsSql(b,{requireParentSpan:e.requireParentSpan,requestHook:e.requestHook})};for(let a of(Object.setPrototypeOf(e,c),Object.setPrototypeOf(e.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(e,a,b)}return b?e:(g.replaceExports(a,"default",e),a)}_shouldCreateSpans(){let a=this.getConfig();return void 0!==d.trace.getSpan(d.context.active())||!a.requireParentSpan}_setOperationName(a,b,c){if(c)return void a.setAttribute(f.ATTR_DB_OPERATION_NAME,c);let d=b?.match(l);d?.[1]&&a.setAttribute(f.ATTR_DB_OPERATION_NAME,d[1].toUpperCase())}_reconstructQuery(a){if(a?.length)return 1===a.length?a[0]||void 0:a.reduce((a,b,c)=>0===c?b:`${a}$${c}${b}`,"")}_sanitizeSqlQuery(a){return a?a.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{h.addOriginToSpan(d,"auto.db.postgresjs"),d.setAttributes({[f.ATTR_DB_SYSTEM_NAME]:"postgres",[f.ATTR_DB_QUERY_TEXT]:k});let{requestHook:l}=b.getConfig();l&&e.safeExecuteInTheMiddle(()=>l(d,k,void 0),a=>{a&&(d.setAttribute("sentry.hook.error","requestHook failed"),i.DEBUG_BUILD&&g.debug.error(`Error in requestHook for ${j} integration:`,a))},!0);let m=this.resolve;this.resolve=new Proxy(m,{apply:(a,c,e)=>{try{b._setOperationName(d,k,e?.[0]?.command),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in resolve callback:",a)}return Reflect.apply(a,c,e)}});let n=this.reject;this.reject=new Proxy(n,{apply:(a,c,e)=>{try{d.setStatus({code:g.SPAN_STATUS_ERROR,message:e?.[0]?.message||"unknown_error"}),d.setAttribute(f.ATTR_DB_RESPONSE_STATUS_CODE,e?.[0]?.code||"unknown"),d.setAttribute(f.ATTR_ERROR_TYPE,e?.[0]?.name||"unknown"),b._setOperationName(d,k),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in reject callback:",a)}return Reflect.apply(a,c,e)}});try{return c.apply(this,a)}catch(a){throw d.setStatus({code:g.SPAN_STATUS_ERROR,message:a instanceof Error?a.message:"unknown_error"}),d.end(),a}})},a.Query.prototype.handle.__sentry_original__=c,a}_unpatchQueryPrototype(a){return a.Query.prototype.handle.__sentry_original__&&(a.Query.prototype.handle=a.Query.prototype.handle.__sentry_original__),a}}let p=g.defineIntegration(a=>({name:j,setupOnce(){n(a)}}));c.PostgresJsInstrumentation=o,c.instrumentPostgresJs=n,c.postgresJsIntegration=p},882435,a=>{"use strict";a.s([],209479),a.i(209479);var b,c,d=a.i(818414),e=a.i(286508);let f="object"==typeof globalThis?globalThis:a.g,g=Symbol.for("io.opentelemetry.js.api.logs");class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return f[g]?this.getLoggerProvider():(f[g]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=f[g])?void 0:a.call(f,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete f[g],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(385603);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(a=>a.name===g).filter(b=>af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!1},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{name;supportedVersions;patch;unpatch;files;constructor(a,b,c,d,e){this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d,this.files=e||[]}}class ah{supportedVersions;patch;unpatch;name;constructor(a,b,c,d){this.supportedVersions=b,this.patch=c,this.unpatch=d,this.name=(0,p.normalize)(a)}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],882435)},686922,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={PrismaInstrumentation:()=>w,registerInstrumentations:()=>x.registerInstrumentations};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let i of f(b))g.call(a,i)||i===c||d(a,i,{get:()=>b[i],enumerable:!(h=e(b,i))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(854230),l=a.r(882435),m="7.6.0".split(".")[0],n="PRISMA_INSTRUMENTATION",o=`V${m}_PRISMA_INSTRUMENTATION`,p=globalThis,q=a.r(854230),r="true"===process.env.PRISMA_SHOW_ALL_TRACES,s=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:a,ignoreSpanTypes:b}){this.tracerProvider=a,this.ignoreSpanTypes=b}isEnabled(){return!0}getTraceParent(a){let b=q.trace.getSpanContext(a??q.context.active());return b?`00-${b.traceId}-${b.spanId}-0${b.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(a){let b=this.tracerProvider.getTracer("prisma"),c=new Map;for(let d of a.filter(a=>null===a.parentId))!function a(b,c,d,e,f){if(u(c.name,f))return;let g={attributes:c.attributes,kind:"client"===c.kind?q.SpanKind.CLIENT:q.SpanKind.INTERNAL,startTime:c.startTime};b.startActiveSpan(c.name,g,g=>{for(let h of(e.set(c.id,g.spanContext().spanId),c.links&&g.addLinks(c.links.flatMap(a=>{let b=e.get(a);return b?{context:{spanId:b,traceId:g.spanContext().traceId,traceFlags:g.spanContext().traceFlags}}:[]})),d.filter(a=>a.parentId===c.id)))a(b,h,d,e,f);g.end(c.endTime)})}(b,d,a,c,this.ignoreSpanTypes)}getActiveContext(){return q.context.active()}runInChildSpan(a,b){if("string"==typeof a&&(a={name:a}),a.internal&&!r)return b();let c=this.tracerProvider.getTracer("prisma"),d=a.context??this.getActiveContext(),e=`prisma:client:${a.name}`;if(u(e,this.ignoreSpanTypes))return b();if(!1===a.active){let f=c.startSpan(e,a,d);return t(f,b(f,d))}return c.startActiveSpan(e,a,a=>t(a,b(a,d)))}};function t(a,b){var c;return null!=(c=b)&&"function"==typeof c.then?b.then(b=>(a.end(),b),b=>{throw a.end(),b}):(a.end(),b)}function u(a,b){return b.some(b=>"string"==typeof b?b===a:b.test(a))}var v="7.6.0",w=class extends l.InstrumentationBase{tracerProvider;constructor(a={}){super("@prisma/instrumentation",v,a)}setTracerProvider(a){this.tracerProvider=a}init(){return[new l.InstrumentationNodeModuleDefinition("@prisma/client",[v])]}enable(){let a,b=this._config;a={helper:new s({tracerProvider:this.tracerProvider??k.trace.getTracerProvider(),ignoreSpanTypes:b.ignoreSpanTypes??[]})},p[o]=a,p[n]=a}disable(){delete p[o],delete p[n]}isEnabled(){return void 0!==function(){let a=p[o];if(a?.helper)return a.helper;let b=p[n];return b?.helper}()}},x=a.r(882435)},302889,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(686922),f=a.r(97153),g=a.r(829770),h="Prisma";function i(){let a=globalThis.PRISMA_INSTRUMENTATION;return a&&"object"==typeof a&&"helper"in a?a.helper:void 0}class j extends e.PrismaInstrumentation{constructor(a){super(a?.instrumentationConfig)}enable(){super.enable();let a=i();a&&"object"==typeof a&&"dispatchEngineSpans"in a&&(a.createEngineSpan=a=>{let b=d.trace.getTracer("prismaV5Compatibility"),c=b._idGenerator;if(!c)return void f.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{a.spans.forEach(a=>{var e;let f=(e=a.kind,"client"===e?d.SpanKind.CLIENT:d.SpanKind.INTERNAL),g=a.parent_span_id,h=a.span_id,i=a.trace_id,j=a.links?.map(a=>({context:{traceId:a.trace_id,spanId:a.span_id,traceFlags:d.TraceFlags.SAMPLED}})),k=d.trace.setSpanContext(d.context.active(),{traceId:i,spanId:g,traceFlags:d.TraceFlags.SAMPLED});d.context.with(k,()=>{b._idGenerator={generateTraceId:()=>i,generateSpanId:()=>h},b.startSpan(a.name,{kind:f,links:j,startTime:a.start_time,attributes:a.attributes}).end(a.end_time),b._idGenerator=c})})}finally{b._idGenerator=c}})}}let k=g.generateInstrumentOnce(h,a=>new j(a)),l=f.defineIntegration(a=>({name:h,setupOnce(){k(a)},setup(a){i()&&a.on("spanStart",a=>{let b=f.spanToJSON(a);b.description?.startsWith("prisma:")&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===b.description&&b.data["db.query.text"]&&a.updateName(b.data["db.query.text"]),"prisma:engine:db_query"!==b.description||b.data["db.system"]||a.setAttribute("db.system","prisma")})}}));c.instrumentPrisma=k,c.prismaIntegration=l},612971,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},968427,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiLifecycleMethodNames=c.HapiLayerType=c.handlerPatched=c.HapiComponentName=void 0,c.HapiComponentName="@hapi/hapi",c.handlerPatched=Symbol("hapi-handler-patched"),c.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},c.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},19822,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_HTTP_METHOD=void 0,c.ATTR_HTTP_METHOD="http.method"},100306,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).HAPI_TYPE="hapi.type",d.PLUGIN_NAME="hapi.plugin.name",d.EXT_TYPE="server.ext.type"},1606,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getPluginFromInput=c.getExtMetadata=c.getRouteMetadata=c.isPatchableExtMethod=c.isDirectExtInput=c.isLifecycleExtEventObj=c.isLifecycleExtType=c.getPluginName=void 0;let d=a.r(357223),e=a.r(19822),f=a.r(968427),g=a.r(100306),h=a.r(621472);c.getPluginName=function(a){return a.name?a.name:a.pkg.name},c.isLifecycleExtType=a=>"string"==typeof a&&f.HapiLifecycleMethodNames.has(a),c.isLifecycleExtEventObj=a=>{let b=a?.type;return void 0!==b&&(0,c.isLifecycleExtType)(b)},c.isDirectExtInput=a=>Array.isArray(a)&&a.length<=3&&(0,c.isLifecycleExtType)(a[0])&&"function"==typeof a[1],c.isPatchableExtMethod=a=>!Array.isArray(a),c.getRouteMetadata=(a,b,c)=>{let i,j={[d.ATTR_HTTP_ROUTE]:a.path};return b&h.SemconvStability.OLD&&(j[e.ATTR_HTTP_METHOD]=a.method),b&h.SemconvStability.STABLE&&(j[d.ATTR_HTTP_REQUEST_METHOD]=a.method),c?(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.PLUGIN,j[g.AttributeNames.PLUGIN_NAME]=c,i=`${c}: route - ${a.path}`):(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.ROUTER,i=`route - ${a.path}`),{attributes:j,name:i}},c.getExtMetadata=(a,b,c)=>{let d=`ext - ${a}`;return(c&&"method"!==c&&(d=`ext - ${a} - ${c}`),b)?{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT,[g.AttributeNames.PLUGIN_NAME]:b},name:`${b}: ${d}`}:{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT},name:d}},c.getPluginFromInput=a=>"plugin"in a?"plugin"in a.plugin?a.plugin.plugin:a.plugin:a},315858,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(612971),h=a.r(968427),i=a.r(1606);class j extends f.InstrumentationBase{_semconvStability;constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a),this._semconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new f.InstrumentationNodeModuleDefinition(h.HapiComponentName,[">=17.0.0 <22"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return(0,f.isWrapped)(b.server)||this._wrap(b,"server",this._getServerPatch.bind(this)),(0,f.isWrapped)(b.Server)||this._wrap(b,"Server",this._getServerPatch.bind(this)),b},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;this._massUnwrap([b],["server","Server"])})}_getServerPatch(a){let b=this,c=this;return function(d){let e=a.apply(this,[d]);return c._wrap(e,"route",a=>b._getServerRoutePatch.bind(b)(a)),c._wrap(e,"ext",a=>b._getServerExtPatch.bind(b)(a)),c._wrap(e,"register",b._getServerRegisterPatch.bind(b)),e}}_getServerRegisterPatch(a){let b=this;return function(c,d){if(Array.isArray(c))for(let a of c){let c=(0,i.getPluginFromInput)(a);b._wrapRegisterHandler(c)}else{let a=(0,i.getPluginFromInput)(c);b._wrapRegisterHandler(a)}return a.apply(this,[c,d])}}_getServerExtPatch(a,b){let c=this;return function(...d){if(Array.isArray(d[0])){let a=d[0];for(let d=0;db._getServerRoutePatch.bind(b)(a,c)),e._wrap(a,"ext",a=>b._getServerExtPatch.bind(b)(a,c)),d.call(this,a,f)}}_wrapExtMethods(a,b,c){let e=this;if(a instanceof Array)for(let c=0;casync function(...g){if(void 0===d.trace.getSpan(d.context.active()))return await f.call(this,...g);let h=(0,e.getRPCMetadata)(d.context.active());h?.type===e.RPCType.HTTP&&(h.route=a.path);let j=(0,i.getRouteMetadata)(a,c._semconvStability,b),k=c.tracer.startSpan(j.name,{attributes:j.attributes});try{return await d.context.with(d.trace.setSpan(d.context.active(),k),()=>f.call(this,...g))}catch(a){throw k.recordException(a),k.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),a}finally{k.end()}};if("function"==typeof a.handler)a.handler=f(a.handler);else if("function"==typeof a.options){let b=a.options;a.options=function(a){let c=b(a);return"function"==typeof c.handler&&(c.handler=f(c.handler)),c}}else"function"==typeof a.options?.handler&&(a.options.handler=f(a.options.handler));return a}}c.HapiInstrumentation=j},83238,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.HapiInstrumentation=void 0;var d=a.r(315858);Object.defineProperty(c,"HapiInstrumentation",{enumerable:!0,get:function(){return d.HapiInstrumentation}});var e=a.r(100306);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},546750,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(83238),e=a.r(97153),f=a.r(829770),g=a.r(560192),h="Hapi",i=f.generateInstrumentOnce(h,()=>new d.HapiInstrumentation),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}})),k={name:"SentryHapiErrorPlugin",version:e.SDK_VERSION,register:async function(a){a.events.on({name:"request",channels:["error"]},(a,b)=>{var c;if(e.getIsolationScope()!==e.getDefaultIsolationScope()){let b=a.route;b.path&&e.getIsolationScope().setTransactionName(`${b.method.toUpperCase()} ${b.path}`)}else g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");b&&"object"==typeof b&&"error"in b&&b.error&&(c=b.error,e.captureException(c,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function l(a){await a.register(k);let b=e.getClient();b&&b.on("spanStart",a=>{var b;let c,d;b=a,d=(c=e.spanToJSON(b).data)["hapi.type"],!c[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&d&&b.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${d}.hapi`})}),f.ensureIsWrapped(a.register,"hapi")}c.hapiErrorPlugin=k,c.hapiIntegration=j,c.instrumentHapi=i,c.setupHapiErrorHandler=l},749024,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},c.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},64759,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472),f=a.r(97153),g=a.r(749024);class h extends e.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-hono","0.0.1",a)}init(){return[new e.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],a=>this._patch(a))]}_patch(a){let b=this;class c extends a.Hono{constructor(...a){super(...a),b._wrap(this,"get",b._patchHandler()),b._wrap(this,"post",b._patchHandler()),b._wrap(this,"put",b._patchHandler()),b._wrap(this,"delete",b._patchHandler()),b._wrap(this,"options",b._patchHandler()),b._wrap(this,"patch",b._patchHandler()),b._wrap(this,"all",b._patchHandler()),b._wrap(this,"on",b._patchOnHandler()),b._wrap(this,"use",b._patchMiddlewareHandler())}}try{a.Hono=c}catch{return{...a,Hono:c}}return a}_patchHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_patchOnHandler(){let a=this;return function(b){return function(...c){let d=c.slice(2);return b.apply(this,[...c.slice(0,2),...d.map(b=>a._wrapHandler(b))])}}}_patchMiddlewareHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_wrapHandler(a){let b=this;return function(c,e){if(!b.isEnabled())return a.apply(this,[c,e]);let h=c.req.path,i=b.tracer.startSpan(h);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>b._safeExecute(()=>{let d=a.apply(this,[c,e]);if(f.isThenable(d))return d.then(c=>{let d=b._determineHandlerType(c);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:d,[g.AttributeNames.HONO_NAME]:d===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),c});{let c=b._determineHandlerType(d);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:c,[g.AttributeNames.HONO_NAME]:c===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),d}},()=>i.end(),a=>{b._handleError(i,a),i.end()}))}}_safeExecute(a,b,c){try{let d=a();return f.isThenable(d)?d.then(()=>b(),a=>c(a)):b(),d}catch(a){throw c(a),a}}_determineHandlerType(a){return void 0===a?g.HonoTypes.MIDDLEWARE:g.HonoTypes.REQUEST_HANDLER}_handleError(a,b){b instanceof Error&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b))}}c.HonoInstrumentation=h},228328,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(829770),g=a.r(560192),h=a.r(749024),i=a.r(64759),j="Hono",k=f.generateInstrumentOnce(j,()=>new i.HonoInstrumentation({responseHook:a=>{!function(a){let b=e.spanToJSON(a).data,c=b[h.AttributeNames.HONO_TYPE];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.hono`});let f=b[h.AttributeNames.HONO_NAME];if("string"==typeof f&&a.updateName(f),e.getIsolationScope()===e.getDefaultIsolationScope()){g.DEBUG_BUILD&&e.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let i=b[d.ATTR_HTTP_ROUTE],j=b[d.ATTR_HTTP_REQUEST_METHOD];"string"==typeof i&&"string"==typeof j&&e.getIsolationScope().setTransactionName(`${j} ${i}`)}(a)}})),l=e.defineIntegration(()=>({name:j,setupOnce(){k()}}));c.honoIntegration=l,c.instrumentHono=k,c.setupHonoErrorHandler=function(a,b){a.use(async function(a,b){let c=e.httpRequestToRequestData(a.req);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:c}),await b()}),a.use(async function(a,c){await c(),(b?.shouldHandleError||function(a){return a.res.status>=500})(a)&&(a.res.sentry=e.captureException(a.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),f.ensureIsWrapped(a.use,"hono")}},633428,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=void 0,(d=c.KoaLayerType||(c.KoaLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware"},223086,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},689826,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).KOA_TYPE="koa.type",d.KOA_NAME="koa.name"},48355,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isLayerIgnored=c.getMiddlewareMetadata=void 0;let d=a.r(633428),e=a.r(689826),f=a.r(357223);c.getMiddlewareMetadata=(a,b,c,g)=>c?{attributes:{[e.AttributeNames.KOA_NAME]:g?.toString(),[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.ROUTER,[f.ATTR_HTTP_ROUTE]:g?.toString()},name:a._matchedRouteName||`router - ${g}`}:{attributes:{[e.AttributeNames.KOA_NAME]:b.name??"middleware",[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.MIDDLEWARE},name:`middleware - ${b.name}`},c.isLayerIgnored=(a,b)=>!!(Array.isArray(b?.ignoreLayersType)&&b?.ignoreLayersType?.includes(a))},208864,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.kLayerPatched=void 0,c.kLayerPatched=Symbol("koa-layer-patched")},335708,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(633428),g=a.r(223086),h=a.r(48355),i=a.r(35492),j=a.r(208864);class k extends e.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return new e.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return null==b?b:((0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use"),this._wrap(b.prototype,"use",this._getKoaUsePatch.bind(this)),a)},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;(0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use")})}_getKoaUsePatch(a){let b=this;return function(c){let d;return d=c.router?b._patchRouterDispatch(c):b._patchLayer(c,!1),a.apply(this,[d])}}_patchRouterDispatch(a){d.diag.debug("Patching @koa/router dispatch");let b=a.router;for(let a of b?.stack??[]){let b=a.path,c=a.stack;for(let a=0;a{if(void 0===d.trace.getSpan(d.context.active()))return a(f,j);let k=(0,h.getMiddlewareMetadata)(f,a,b,c),l=this.tracer.startSpan(k.name,{attributes:k.attributes}),m=(0,i.getRPCMetadata)(d.context.active());m?.type===i.RPCType.HTTP&&f._matchedRoute&&(m.route=f._matchedRoute.toString());let{requestHook:n}=this.getConfig();n&&(0,e.safeExecuteInTheMiddle)(()=>n(l,{context:f,middlewareLayer:a,layerType:g}),a=>{a&&d.diag.error("koa instrumentation: request hook failed",a)},!0);let o=d.trace.setSpan(d.context.active(),l);return d.context.with(o,async()=>{try{return await a(f,j)}catch(a){throw l.recordException(a),a}finally{l.end()}})})}}c.KoaInstrumentation=k},784208,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=c.AttributeNames=c.KoaInstrumentation=void 0;var d=a.r(335708);Object.defineProperty(c,"KoaInstrumentation",{enumerable:!0,get:function(){return d.KoaInstrumentation}});var e=a.r(689826);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}});var f=a.r(633428);Object.defineProperty(c,"KoaLayerType",{enumerable:!0,get:function(){return f.KoaLayerType}})},326259,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(784208),e=a.r(357223),f=a.r(97153),g=a.r(829770),h=a.r(560192),i=g.generateInstrumentOnce("Koa",d.KoaInstrumentation,(a={})=>({ignoreLayersType:a.ignoreLayersType,requestHook(a,b){g.addOriginToSpan(a,"auto.http.otel.koa");let c=f.spanToJSON(a).data,d=c["koa.type"];d&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${d}.koa`);let i=c["koa.name"];if("string"==typeof i&&a.updateName(i||"< unknown >"),f.getIsolationScope()===f.getDefaultIsolationScope()){h.DEBUG_BUILD&&f.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let j=c[e.ATTR_HTTP_ROUTE],k=b.context?.request?.method?.toUpperCase()||"GET";j&&f.getIsolationScope().setTransactionName(`${k} ${j}`)}})),j=f.defineIntegration((a={})=>({name:"Koa",setupOnce(){i(a)}}));c.instrumentKoa=i,c.koaIntegration=j,c.setupKoaErrorHandler=a=>{a.use(async(a,b)=>{try{await b()}catch(a){throw f.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),a}}),g.ensureIsWrapped(a.use,"koa")}},571897,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectNames=c.ConnectTypes=c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).CONNECT_TYPE="connect.type",d.CONNECT_NAME="connect.name",(e=c.ConnectTypes||(c.ConnectTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",(f=c.ConnectNames||(c.ConnectNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},838828,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},169073,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=void 0,c._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},471850,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.generateRoute=c.replaceCurrentStackRoute=c.addNewStackLayer=void 0;let d=a.r(854230),e=a.r(169073);c.addNewStackLayer=a=>{!1===Array.isArray(a[e._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,e._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),a[e._LAYERS_STORE_PROPERTY].push("/");let b=a[e._LAYERS_STORE_PROPERTY].length;return()=>{b===a[e._LAYERS_STORE_PROPERTY].length?a[e._LAYERS_STORE_PROPERTY].pop():d.diag.warn("Connect: Trying to pop the stack multiple time")}},c.replaceCurrentStackRoute=(a,b)=>{b&&a[e._LAYERS_STORE_PROPERTY].splice(-1,1,b)},c.generateRoute=a=>a[e._LAYERS_STORE_PROPERTY].reduce((a,b)=>a.replace(/\/+$/,"")+b)},822198,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectInstrumentation=c.ANONYMOUS_NAME=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(571897),g=a.r(838828),h=a.r(621472),i=a.r(357223),j=a.r(471850);c.ANONYMOUS_NAME="anonymous";class k extends h.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new h.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_patchApp(a){(0,h.isWrapped)(a.use)||this._wrap(a,"use",this._patchUse.bind(this)),(0,h.isWrapped)(a.handle)||this._wrap(a,"handle",this._patchHandle.bind(this))}_patchConstructor(a){let b=this;return function(...c){let d=a.apply(this,c);return b._patchApp(d),d}}_patchNext(a,b){return function(c){let d=a.apply(this,[c]);return b(),d}}_startSpan(a,b){let d,e,g;a?(d=f.ConnectTypes.REQUEST_HANDLER,g=f.ConnectNames.REQUEST_HANDLER,e=a):(d=f.ConnectTypes.MIDDLEWARE,g=f.ConnectNames.MIDDLEWARE,e=b.name||c.ANONYMOUS_NAME);let h=`${g} - ${e}`,j={attributes:{[i.ATTR_HTTP_ROUTE]:a.length>0?a:"/",[f.AttributeNames.CONNECT_TYPE]:d,[f.AttributeNames.CONNECT_NAME]:e}};return this.tracer.startSpan(h,j)}_patchMiddleware(a,b){let f=this,g=4===b.length;function h(){if(!f.isEnabled())return b.apply(this,arguments);let[h,i,k]=g?[1,2,3]:[0,1,2],l=arguments[h],m=arguments[i],n=arguments[k];(0,j.replaceCurrentStackRoute)(l,a);let o=(0,e.getRPCMetadata)(d.context.active());a&&o?.type===e.RPCType.HTTP&&(o.route=(0,j.generateRoute)(l));let p="";p=a?`request handler - ${a}`:`middleware - ${b.name||c.ANONYMOUS_NAME}`;let q=f._startSpan(a,b);f._diag.debug("start span",p);let r=!1;function s(){r?f._diag.debug(`span ${q.name} - already finished`):(r=!0,f._diag.debug(`finishing span ${q.name}`),q.end()),m.removeListener("close",s)}return m.addListener("close",s),arguments[k]=f._patchNext(n,s),b.apply(this,arguments)}return Object.defineProperty(h,"length",{value:b.length,writable:!1,configurable:!0}),h}_patchUse(a){let b=this;return function(...c){let d=c[c.length-1],e=c[c.length-2]||"";return c[c.length-1]=b._patchMiddleware(e,d),a.apply(this,c)}}_patchHandle(a){let b=this;return function(){let[c,d]=[0,2],e=arguments[c],f=arguments[d],g=(0,j.addNewStackLayer)(e);return"function"==typeof f&&(arguments[d]=b._patchOut(f,g)),a.apply(this,arguments)}}_patchOut(a,b){return function(...c){return b(),Reflect.apply(a,this,c)}}}c.ConnectInstrumentation=k},590396,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectTypes=c.ConnectNames=c.AttributeNames=c.ANONYMOUS_NAME=c.ConnectInstrumentation=void 0;var d=a.r(822198);Object.defineProperty(c,"ConnectInstrumentation",{enumerable:!0,get:function(){return d.ConnectInstrumentation}}),Object.defineProperty(c,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return d.ANONYMOUS_NAME}});var e=a.r(571897);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}}),Object.defineProperty(c,"ConnectNames",{enumerable:!0,get:function(){return e.ConnectNames}}),Object.defineProperty(c,"ConnectTypes",{enumerable:!0,get:function(){return e.ConnectTypes}})},89709,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(590396),e=a.r(97153),f=a.r(829770),g="Connect",h=f.generateInstrumentOnce(g,()=>new d.ConnectInstrumentation);function i(a,b,c,d){e.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),d(a)}c.connectIntegration=e.defineIntegration(()=>({name:g,setupOnce(){h()}})),c.instrumentConnect=h,c.setupConnectErrorHandler=a=>{a.use(i);let b=e.getClient();b&&b.on("spanStart",a=>{!function(a){let b=e.spanToJSON(a).data,c=b["connect.type"];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.connect`});let d=b["connect.name"];"string"==typeof d&&a.updateName(d)}(a)}),f.ensureIsWrapped(a.use,"connect")}},489149,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},1789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SUPPORTED_VERSIONS=c.MODULE_NAME=void 0,c.MODULE_NAME="knex",c.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},453173,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_SQLITE=c.ATTR_NET_TRANSPORT=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.ATTR_NET_TRANSPORT="net.transport",c.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},152691,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.extractTableName=c.extractPortFromConnectionString=c.extractHostFromConnectionString=c.extractDatabaseFromConnectionString=c.limitLength=c.getName=c.mapSystem=c.otelExceptionFromKnexError=c.getFormatter=void 0;let d=a.r(357223),e=a.r(453173);c.getFormatter=a=>{if(a){if(a.client){if(a.client._formatQuery)return a.client._formatQuery.bind(a.client);else if(a.client.SqlString)return a.client.SqlString.format.bind(a.client.SqlString)}if(a.builder)return a.builder.toString.bind(a.builder)}return()=>""},c.otelExceptionFromKnexError=function(a,b){return a&&a instanceof Error?{message:b,code:a.code,stack:a.stack,name:a.name}:a};let f=new Map([["sqlite3",e.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",d.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);c.mapSystem=a=>f.get(a)||a,c.getName=(a,b,c)=>b?c?`${b} ${a}.${c}`:`${b} ${a}`:a,c.limitLength=(a,b)=>"string"==typeof a&&"number"==typeof b&&0{if(a)try{return new URL(a).pathname?.replace(/^\//,"")||void 0}catch{return}},c.extractHostFromConnectionString=a=>{if(a)try{return new URL(a).hostname||void 0}catch{return}},c.extractPortFromConnectionString=a=>{if(a)try{let b=new URL(a).port;return b?parseInt(b,10):void 0}catch{return}},c.extractTableName=a=>{let b=a?._single?.table;return"object"==typeof b?(0,c.extractTableName)(b):b}},645449,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;let d=a.r(854230),e=a.r(489149),f=a.r(1789),g=a.r(621472),h=a.r(152691),i=a.r(357223),j=a.r(453173),k=Symbol("opentelemetry.instrumentation-knex.context"),l={maxQueryLength:1022,requireParentSpan:!1};class m extends g.InstrumentationBase{_semconvStability;constructor(a={}){super(e.PACKAGE_NAME,e.PACKAGE_VERSION,{...l,...a}),this._semconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new g.InstrumentationNodeModuleDefinition(f.MODULE_NAME,f.SUPPORTED_VERSIONS);return a.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),a}getRunnerNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/runner.js`,f.SUPPORTED_VERSIONS,(a,b)=>(this.ensureWrapped(a.prototype,"query",this.createQueryWrapper(b)),a),(a,b)=>(this._unwrap(a.prototype,"query"),a))}getClientNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/client.js`,f.SUPPORTED_VERSIONS,a=>(this.ensureWrapped(a.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"raw",this.storeContext.bind(this)),a),a=>(this._unwrap(a.prototype,"queryBuilder"),this._unwrap(a.prototype,"schemaBuilder"),this._unwrap(a.prototype,"raw"),a))}createQueryWrapper(a){let b=this;return function(c){return function(e){let f=this.client.config,l=h.extractTableName(this.builder),m=e?.method,n=f?.connection?.connectionString,o=f?.connection?.filename||f?.connection?.database||h.extractDatabaseFromConnectionString(n),{maxQueryLength:p}=b.getConfig(),q={"knex.version":a},r=f?.connection?.filename===":memory:"?"inproc":void 0;if(b._semconvStability&g.SemconvStability.OLD&&Object.assign(q,{[j.ATTR_DB_SYSTEM]:h.mapSystem(this.client.driverName),[j.ATTR_DB_SQL_TABLE]:l,[j.ATTR_DB_OPERATION]:m,[j.ATTR_DB_USER]:f?.connection?.user,[j.ATTR_DB_NAME]:o,[j.ATTR_NET_PEER_NAME]:f?.connection?.host??h.extractHostFromConnectionString(n),[j.ATTR_NET_PEER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n),[j.ATTR_NET_TRANSPORT]:r}),b._semconvStability&g.SemconvStability.STABLE&&Object.assign(q,{[i.ATTR_DB_SYSTEM_NAME]:h.mapSystem(this.client.driverName),[i.ATTR_DB_COLLECTION_NAME]:l,[i.ATTR_DB_OPERATION_NAME]:m,[i.ATTR_DB_NAMESPACE]:o,[i.ATTR_SERVER_ADDRESS]:f?.connection?.host??h.extractHostFromConnectionString(n),[i.ATTR_SERVER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n)}),p){let a=h.limitLength(e?.sql,p);b._semconvStability&g.SemconvStability.STABLE&&(q[i.ATTR_DB_QUERY_TEXT]=a),b._semconvStability&g.SemconvStability.OLD&&(q[j.ATTR_DB_STATEMENT]=a)}let s=this.builder[k]||d.context.active(),t=d.trace.getSpan(s),u=t&&d.trace.isSpanContextValid(t.spanContext());if(b._config.requireParentSpan&&!u)return c.bind(this)(...arguments);let v=b.tracer.startSpan(h.getName(o,m,l),{kind:d.SpanKind.CLIENT,attributes:q},s),w=d.trace.setSpan(d.context.active(),v);return d.context.with(w,c,this,...arguments).then(a=>(v.end(),a)).catch(a=>{let b=h.getFormatter(this)(e.sql,e.bindings||[]),c=a.message.replace(b+" - ",""),f=h.otelExceptionFromKnexError(a,c);throw v.recordException(f),v.setStatus({code:d.SpanStatusCode.ERROR,message:c}),v.end(),a})}}}storeContext(a){return function(){let b=a.apply(this,arguments);return Object.defineProperty(b,k,{value:d.context.active()}),b}}ensureWrapped(a,b,c){(0,g.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,c)}}c.KnexInstrumentation=m},82600,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;var d=a.r(645449);Object.defineProperty(c,"KnexInstrumentation",{enumerable:!0,get:function(){return d.KnexInstrumentation}})},722836,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(82600),e=a.r(97153),f=a.r(829770),g="Knex",h=f.generateInstrumentOnce(g,()=>new d.KnexInstrumentation({requireParentSpan:!0})),i=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{data:b}=e.spanToJSON(a);"knex.version"in b&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});c.instrumentKnex=h,c.knexIntegration=i},724445,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MSSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MSSQL="mssql"},99286,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.once=c.getSpanName=void 0,c.getSpanName=function(a,b,c,d){return"execBulkLoad"===a&&d&&b?`${a} ${d} ${b}`:"callProcedure"===a?b?`${a} ${c} ${b}`:`${a} ${c}`:b?`${a} ${b}`:`${a}`},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}}},348421,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},511311,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=c.INJECTED_CTX=void 0;let d=a.r(854230),e=a.r(427699),f=a.r(621472),g=a.r(357223),h=a.r(724445),i=a.r(99286),j=a.r(348421),k=Symbol("opentelemetry.instrumentation-tedious.current-database");c.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let l=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function m(a){Object.defineProperty(this,k,{value:a,writable:!0})}class n extends f.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,f.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new f.InstrumentationNodeModuleDefinition(n.COMPONENT,[">=1.11.0 <20"],a=>{let b=a.Connection.prototype;for(let c of l)(0,f.isWrapped)(b[c])&&this._unwrap(b,c),this._wrap(b,c,this._patchQuery(c,a));return(0,f.isWrapped)(b.connect)&&this._unwrap(b,"connect"),this._wrap(b,"connect",this._patchConnect),a},a=>{if(void 0===a)return;let b=a.Connection.prototype;for(let a of l)this._unwrap(b,a);this._unwrap(b,"connect")})]}_patchConnect(a){return function(){return m.call(this,this.config?.options?.database),this.removeListener("databaseChange",m),this.on("databaseChange",m),this.once("end",()=>{this.removeListener("databaseChange",m)}),a.apply(this,arguments)}}_buildTraceparent(a){let b=a.spanContext();return`00-${b.traceId}-${b.spanId}-0${Number(b.traceFlags||d.TraceFlags.NONE).toString(16)}`}_injectContextInfo(a,b,d){return new Promise(e=>{try{let f=new b.Request("set context_info @opentelemetry_traceparent",a=>{e()});Object.defineProperty(f,c.INJECTED_CTX,{value:!0});let g=Buffer.from(d,"utf8");f.addParameter("opentelemetry_traceparent",b.TYPES.VarBinary,g,{length:g.length}),a.execSql(f)}catch{e()}})}_shouldInjectFor(a){return"execSql"===a||"execSqlBatch"===a||"callProcedure"===a||"execute"===a}_patchQuery(a,b){return j=>{let l=this;function m(m){if(m?.[c.INJECTED_CTX])return j.apply(this,arguments);if(!(m instanceof e.EventEmitter))return l._diag.warn(`Unexpected invocation of patched ${a} method. Span not recorded`),j.apply(this,arguments);let n=0,o=0,p=()=>o++,q=()=>n++,r=this[k],s="sp_prepare"===m.sqlTextOrProcedure&&m.parametersByName?.stmt?.value?m.parametersByName.stmt.value:m.sqlTextOrProcedure,t={};l._dbSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_DB_SYSTEM]=h.DB_SYSTEM_VALUE_MSSQL,t[h.ATTR_DB_NAME]=r,t[h.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,t[h.ATTR_DB_STATEMENT]=s,t[h.ATTR_DB_SQL_TABLE]=m.table),l._dbSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_DB_NAMESPACE]=r,t[g.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,t[g.ATTR_DB_QUERY_TEXT]=s,t[g.ATTR_DB_COLLECTION_NAME]=m.table),l._netSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_NET_PEER_NAME]=this.config?.server,t[h.ATTR_NET_PEER_PORT]=this.config?.options?.port),l._netSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_SERVER_ADDRESS]=this.config?.server,t[g.ATTR_SERVER_PORT]=this.config?.options?.port);let u=l.tracer.startSpan((0,i.getSpanName)(a,r,s,m.table),{kind:d.SpanKind.CLIENT,attributes:t}),v=(0,i.once)(a=>{m.removeListener("done",p),m.removeListener("doneInProc",p),m.removeListener("doneProc",q),m.removeListener("error",v),this.removeListener("end",v),u.setAttribute("tedious.procedure_count",n),u.setAttribute("tedious.statement_count",o),a&&u.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),u.end()});m.on("done",p),m.on("doneInProc",p),m.on("doneProc",q),m.once("error",v),this.on("end",v),"function"==typeof m.callback?l._wrap(m,"callback",l._patchCallbackQuery(v)):l._diag.error("Expected request.callback to be a function");let w=()=>d.context.with(d.trace.setSpan(d.context.active(),u),j,this,...arguments);if(!(l.getConfig().enableTraceContextPropagation&&l._shouldInjectFor(a)))return w();let x=l._buildTraceparent(u);l._injectContextInfo(this,b,x).finally(w)}return Object.defineProperty(m,"length",{value:j.length,writable:!1}),m}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c),b.apply(this,arguments)}}}c.TediousInstrumentation=n},734036,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=void 0;var d=a.r(511311);Object.defineProperty(c,"TediousInstrumentation",{enumerable:!0,get:function(){return d.TediousInstrumentation}})},441418,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(734036),e=a.r(97153),f=a.r(829770),g=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),h="Tedious",i=f.generateInstrumentOnce(h,()=>new d.TediousInstrumentation({})),j=e.defineIntegration(()=>{let a;return{name:h,setupOnce(){let b=i();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{description:b,data:c}=e.spanToJSON(a);if(!b||"mssql"!==c["db.system"])return;let d=b.split(" ")[0]||"";g.has(d)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});c.instrumentTedious=i,c.tediousIntegration=j},93496,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},779155,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(93496),g="generic-pool";class h extends e.InstrumentationBase{_isDisabled=!1;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition(g,[">=3.0.0 <4"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquirePatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.4.0 <3"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <2.4"],a=>(this._isDisabled=!1,(0,e.isWrapped)(a.Pool)&&this._unwrap(a,"Pool"),this._wrap(a,"Pool",this._poolWrapper.bind(this)),a),a=>(this._isDisabled=!0,a))]}_acquirePatcher(a){let b=this;return function(...c){let e=d.context.active(),f=b.tracer.startSpan("generic-pool.acquire",{},e);return d.context.with(d.trace.setSpan(e,f),()=>a.call(this,...c).then(a=>(f.end(),a),a=>{throw f.recordException(a),f.end(),a}))}}_poolWrapper(a){let b=this;return function(){let c=a.apply(this,arguments);return b._wrap(c,"acquire",b._acquireWithCallbacksPatcher.bind(b)),c}}_acquireWithCallbacksPatcher(a){let b=this;return function(c,e){if(b._isDisabled)return a.call(this,c,e);let f=d.context.active(),g=b.tracer.startSpan("generic-pool.acquire",{},f);return d.context.with(d.trace.setSpan(f,g),()=>{a.call(this,(a,b)=>{if(g.end(),c)return c(a,b)},e)})}}}c.GenericPoolInstrumentation=h},790504,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;var d=a.r(779155);Object.defineProperty(c,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return d.GenericPoolInstrumentation}})},975446,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(790504),e=a.r(97153),f=a.r(829770),g="GenericPool",h=f.generateInstrumentOnce(g,()=>new d.GenericPoolInstrumentation({}));c.genericPoolIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let b=e.spanToJSON(a).description;("generic-pool.aquire"===b||"generic-pool.acquire"===b)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),c.instrumentGenericPool=h},915181,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.31.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},366750,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;let d=a.r(621472),e=a.r(854230),f=a.r(915181),g="dataloader";function h(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class i extends d.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new d.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <3"],a=>{let b=h(a);return this._patchLoad(b.prototype),this._patchLoadMany(b.prototype),this._patchPrime(b.prototype),this._patchClear(b.prototype),this._patchClearAll(b.prototype),this._getPatchedConstructor(b)},a=>{let b=h(a);["load","loadMany","prime","clear","clearAll"].forEach(a=>{(0,d.isWrapped)(b.prototype[a])&&this._unwrap(b.prototype,a)})})]}shouldCreateSpans(){let a=this.getConfig();return void 0!==e.trace.getSpan(e.context.active())||!a.requireParentSpan}getSpanName(a,b){let c=a.name;return null==c?`${g}.${b}`:`${g}.${b} ${c}`}_wrapBatchLoadFn(a){let b=this;return function(...c){if(!b.isEnabled()||!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"batch"),{links:this._batch?.spanLinks},d);return e.context.with(e.trace.setSpan(d,f),()=>a.apply(this,c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a}))}}_getPatchedConstructor(a){let b=this,c=a.prototype;if(!b.isEnabled())return a;function e(...c){return"function"==typeof c[0]&&((0,d.isWrapped)(c[0])&&b._unwrap(c,0),c[0]=b._wrapBatchLoadFn(c[0])),a.apply(this,c)}return e.prototype=c,e}_patchLoad(a){(0,d.isWrapped)(a.load)&&this._unwrap(a,"load"),this._wrap(a,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"load"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>{let b=a.call(this,...c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:f.spanContext()})),b})}}_patchLoadMany(a){(0,d.isWrapped)(a.loadMany)&&this._unwrap(a,"loadMany"),this._wrap(a,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"loadMany"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c).then(a=>(f.end(),a)))}}_patchPrime(a){(0,d.isWrapped)(a.prime)&&this._unwrap(a,"prime"),this._wrap(a,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"prime"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClear(a){(0,d.isWrapped)(a.clear)&&this._unwrap(a,"clear"),this._wrap(a,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clear"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClearAll(a){(0,d.isWrapped)(a.clearAll)&&this._unwrap(a,"clearAll"),this._wrap(a,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clearAll"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}}c.DataloaderInstrumentation=i},430363,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;var d=a.r(366750);Object.defineProperty(c,"DataloaderInstrumentation",{enumerable:!0,get:function(){return d.DataloaderInstrumentation}})},235153,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(430363),e=a.r(97153),f=a.r(829770),g="Dataloader",h=f.generateInstrumentOnce(g,()=>new d.DataloaderInstrumentation({requireParentSpan:!0}));c.dataloaderIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>{b.on("spanStart",a=>{let b=e.spanToJSON(a);b.description?.startsWith("dataloader")&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===b.description||"dataloader.loadMany"===b.description||"dataloader.batch"===b.description)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),c.instrumentDataloader=h},73198,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION=void 0,c.ATTR_MESSAGING_OPERATION="messaging.operation",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port"},638354,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_MESSAGING_CONVERSATION_ID=c.OLD_ATTR_MESSAGING_MESSAGE_ID=c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=c.ATTR_MESSAGING_URL=c.ATTR_MESSAGING_PROTOCOL_VERSION=c.ATTR_MESSAGING_PROTOCOL=c.MESSAGING_OPERATION_VALUE_PROCESS=c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=c.ATTR_MESSAGING_DESTINATION_KIND=c.ATTR_MESSAGING_DESTINATION=void 0,c.ATTR_MESSAGING_DESTINATION="messaging.destination",c.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",c.MESSAGING_OPERATION_VALUE_PROCESS="process",c.ATTR_MESSAGING_PROTOCOL="messaging.protocol",c.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",c.ATTR_MESSAGING_URL="messaging.url",c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",c.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",c.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},677887,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.DEFAULT_CONFIG=c.EndOperation=void 0,(d=c.EndOperation||(c.EndOperation={})).AutoAck="auto ack",d.Ack="ack",d.AckAll="ackAll",d.Reject="reject",d.Nack="nack",d.NackAll="nackAll",d.ChannelClosed="channel closed",d.ChannelError="channel error",d.InstrumentationTimeout="instrumentation timeout",c.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},722650,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isConfirmChannelTracing=c.unmarkConfirmChannelTracing=c.markConfirmChannelTracing=c.getConnectionAttributesFromUrl=c.getConnectionAttributesFromServer=c.normalizeExchange=c.CONNECTION_ATTRIBUTES=c.CHANNEL_CONSUME_TIMEOUT_TIMER=c.CHANNEL_SPANS_NOT_ENDED=c.MESSAGE_STORED_SPAN=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(73198),h=a.r(638354);c.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),c.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),c.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),c.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let i=(0,d.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");c.normalizeExchange=a=>""!==a?a:"";let j=(a,b)=>a||("AMQP"===b?5672:5671),k=a=>{let b=a||"amqp";return(b.endsWith(":")?b.substring(0,b.length-1):b).toUpperCase()},l=(a,b,c,e)=>c?{[b]:c}:(d.diag.error(`amqplib instrumentation: could not extract connection attribute ${e} from user supplied url`,{url:a}),{});c.getConnectionAttributesFromServer=a=>{let b=a.serverProperties.product?.toLowerCase?.();return b?{[g.ATTR_MESSAGING_SYSTEM]:b}:{}},c.getConnectionAttributesFromUrl=(a,b)=>{let c={[h.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(a=a||"amqp://localhost")){let d=a,i=k(d?.protocol);Object.assign(c,{...l(a,h.ATTR_MESSAGING_PROTOCOL,i,"protocol")});let m=d?.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(a,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(a,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(d.port,i);b&e.SemconvStability.OLD&&Object.assign(c,l(a,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(a,f.ATTR_SERVER_PORT,n,"port"))}else{let i=a.replace(/:[^:@/]*@/,":***@");c[h.ATTR_MESSAGING_URL]=i;try{let a=new URL(i),d=k(a.protocol);Object.assign(c,{...l(i,h.ATTR_MESSAGING_PROTOCOL,d,"protocol")});let m=a.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(i,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(i,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(a.port?parseInt(a.port):void 0,d);b&e.SemconvStability.OLD&&Object.assign(c,l(i,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(i,f.ATTR_SERVER_PORT,n,"port"))}catch(a){d.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:i,err:a})}}return c},c.markConfirmChannelTracing=a=>a.setValue(i,!0),c.unmarkConfirmChannelTracing=a=>a.deleteValue(i),c.isConfirmChannelTracing=a=>!0===a.getValue(i)},109866,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.61.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},232536,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AmqplibInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(73198),h=a.r(638354),i=a.r(677887),j=a.r(722650),k=a.r(109866),l=[">=0.5.5 <1"];class m extends f.InstrumentationBase{_netSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...i.DEFAULT_CONFIG,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...i.DEFAULT_CONFIG,...a})}init(){let a=new f.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),b=new f.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),c=new f.InstrumentationNodeModuleFile("amqplib/lib/connect.js",l,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new f.InstrumentationNodeModuleDefinition("amqplib",l,void 0,void 0,[a,c,b])}patchConnect(a){return a=this.unpatchConnect(a),(0,f.isWrapped)(a.connect)||this._wrap(a,"connect",this.getConnectPatch.bind(this)),a}unpatchConnect(a){return(0,f.isWrapped)(a.connect)&&this._unwrap(a,"connect"),a}patchChannelModel(a,b){return(0,f.isWrapped)(a.Channel.prototype.publish)||this._wrap(a.Channel.prototype,"publish",this.getPublishPatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.consume)||this._wrap(a.Channel.prototype,"consume",this.getConsumePatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.ack)||this._wrap(a.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,i.EndOperation.Ack)),(0,f.isWrapped)(a.Channel.prototype.nack)||this._wrap(a.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,i.EndOperation.Nack)),(0,f.isWrapped)(a.Channel.prototype.reject)||this._wrap(a.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,i.EndOperation.Reject)),(0,f.isWrapped)(a.Channel.prototype.ackAll)||this._wrap(a.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,i.EndOperation.AckAll)),(0,f.isWrapped)(a.Channel.prototype.nackAll)||this._wrap(a.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,i.EndOperation.NackAll)),(0,f.isWrapped)(a.Channel.prototype.emit)||this._wrap(a.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)||this._wrap(a.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,b)),a}unpatchChannelModel(a){return(0,f.isWrapped)(a.Channel.prototype.publish)&&this._unwrap(a.Channel.prototype,"publish"),(0,f.isWrapped)(a.Channel.prototype.consume)&&this._unwrap(a.Channel.prototype,"consume"),(0,f.isWrapped)(a.Channel.prototype.ack)&&this._unwrap(a.Channel.prototype,"ack"),(0,f.isWrapped)(a.Channel.prototype.nack)&&this._unwrap(a.Channel.prototype,"nack"),(0,f.isWrapped)(a.Channel.prototype.reject)&&this._unwrap(a.Channel.prototype,"reject"),(0,f.isWrapped)(a.Channel.prototype.ackAll)&&this._unwrap(a.Channel.prototype,"ackAll"),(0,f.isWrapped)(a.Channel.prototype.nackAll)&&this._unwrap(a.Channel.prototype,"nackAll"),(0,f.isWrapped)(a.Channel.prototype.emit)&&this._unwrap(a.Channel.prototype,"emit"),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)&&this._unwrap(a.ConfirmChannel.prototype,"publish"),a}getConnectPatch(a){let b=this;return function(c,d,e){return a.call(this,c,d,function(a,d){if(null==a){let a=(0,j.getConnectionAttributesFromUrl)(c,b._netSemconvStability),e=(0,j.getConnectionAttributesFromServer)(d);d[j.CONNECTION_ATTRIBUTES]={...a,...e}}e.apply(this,arguments)})}}getChannelEmitPatch(a){let b=this;return function(c){if("close"===c){b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelClosed,void 0);let a=this[j.CHANNEL_CONSUME_TIMEOUT_TIMER];a&&clearInterval(a),this[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===c&&b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelError,void 0);return a.apply(this,arguments)}}getAckAllPatch(a,b,c){let d=this;return function(e){return d.endAllSpansOnChannel(this,a,b,e),c.apply(this,arguments)}}getAckPatch(a,b,c){let d=this;return function(e,f,g){let h=b===i.EndOperation.Reject?f:g,k=this[j.CHANNEL_SPANS_NOT_ENDED]??[],l=k.findIndex(a=>a.msg===e);if(l<0)d.endConsumerSpan(e,a,b,h);else if(b!==i.EndOperation.Reject&&f){for(let c=0;c<=l;c++)d.endConsumerSpan(k[c].msg,a,b,h);k.splice(0,l+1)}else d.endConsumerSpan(e,a,b,h),k.splice(l,1);return c.apply(this,arguments)}}getConsumePatch(a,b){let c=this;return function(k,l,m){let n=this;if(!Object.prototype.hasOwnProperty.call(n,j.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:a}=c.getConfig();if(a){let b=setInterval(()=>{c.checkConsumeTimeoutOnChannel(n)},a);b.unref(),n[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=b}n[j.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(b){let o;if(!b)return l.call(this,b);let p=b.properties.headers??{},q=d.propagation.extract(d.ROOT_CONTEXT,p),r=b.fields?.exchange;if(c._config.useLinksForConsume){let a=q?d.trace.getSpan(q)?.spanContext():void 0;q=void 0,a&&(o=[{context:a}])}let s=c.tracer.startSpan(`${k} process`,{kind:d.SpanKind.CONSUMER,attributes:{...n?.connection?.[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:r,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:b.fields?.routingKey,[g.ATTR_MESSAGING_OPERATION]:h.MESSAGING_OPERATION_VALUE_PROCESS,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:b?.properties.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:b?.properties.correlationId},links:o},q),{consumeHook:t}=c.getConfig();t&&(0,f.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:a,msg:b}),a=>{a&&d.diag.error("amqplib instrumentation: consumerHook error",a)},!0),m?.noAck||(n[j.CHANNEL_SPANS_NOT_ENDED].push({msg:b,timeOfConsume:(0,e.hrTime)()}),b[j.MESSAGE_STORED_SPAN]=s);let u=q||d.ROOT_CONTEXT;d.context.with(d.trace.setSpan(u,s),()=>{l.call(this,b)}),m?.noAck&&(c.callConsumeEndHook(s,b,!1,i.EndOperation.AutoAck),s.end())},b.apply(this,arguments)}}getConfirmedPublishPatch(a,b){let c=this;return function(e,g,h,i,k){let{span:l,modifiedOptions:m}=c.createPublishSpan(c,e,g,this,i),{publishHook:n}=c.getConfig();n&&(0,f.safeExecuteInTheMiddle)(()=>n(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:m,isConfirmChannel:!0}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let o=(0,j.markConfirmChannelTracing)(d.context.active()),p=[...arguments];return p[3]=m,p[4]=d.context.bind((0,j.unmarkConfirmChannelTracing)(d.trace.setSpan(o,l)),function(b,j){try{k?.call(this,b,j)}finally{let{publishConfirmHook:j}=c.getConfig();j&&(0,f.safeExecuteInTheMiddle)(()=>j(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:i,isConfirmChannel:!0,confirmError:b}),a=>{a&&d.diag.error("amqplib instrumentation: publishConfirmHook error",a)},!0),b&&l.setStatus({code:d.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),l.end()}}),d.context.with(o,b.bind(this,...p))}}getPublishPatch(a,b){let c=this;return function(e,g,h,i){if((0,j.isConfirmChannelTracing)(d.context.active()))return b.apply(this,arguments);{let{span:j,modifiedOptions:k}=c.createPublishSpan(c,e,g,this,i),{publishHook:l}=c.getConfig();l&&(0,f.safeExecuteInTheMiddle)(()=>l(j,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:k,isConfirmChannel:!1}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let m=[...arguments];m[3]=k;let n=b.apply(this,m);return j.end(),n}}}createPublishSpan(a,b,c,e,f){let g=(0,j.normalizeExchange)(b),i=a.tracer.startSpan(`publish ${g}`,{kind:d.SpanKind.PRODUCER,attributes:{...e.connection[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:b,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:c,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:f?.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:f?.correlationId}}),k=f??{};return k.headers=k.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),i),k.headers),{span:i,modifiedOptions:k}}endConsumerSpan(a,b,c,e){let f=a[j.MESSAGE_STORED_SPAN];f&&(!1!==b&&f.setStatus({code:d.SpanStatusCode.ERROR,message:c!==i.EndOperation.ChannelClosed&&c!==i.EndOperation.ChannelError?`${c} called on message${!0===e?" with requeue":!1===e?" without requeue":""}`:c}),this.callConsumeEndHook(f,a,b,c),f.end(),a[j.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(a,b,c,d){(a[j.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(a=>{this.endConsumerSpan(a.msg,b,c,d)}),a[j.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(a,b,c,e){let{consumeEndHook:g}=this.getConfig();g&&(0,f.safeExecuteInTheMiddle)(()=>g(a,{msg:b,rejected:c,endOperation:e}),a=>{a&&d.diag.error("amqplib instrumentation: consumerEndHook error",a)},!0)}checkConsumeTimeoutOnChannel(a){let b,c=(0,e.hrTime)(),d=a[j.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:f}=this.getConfig();for(b=0;b{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EndOperation=c.DEFAULT_CONFIG=c.AmqplibInstrumentation=void 0;var d=a.r(232536);Object.defineProperty(c,"AmqplibInstrumentation",{enumerable:!0,get:function(){return d.AmqplibInstrumentation}});var e=a.r(677887);Object.defineProperty(c,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return e.DEFAULT_CONFIG}}),Object.defineProperty(c,"EndOperation",{enumerable:!0,get:function(){return e.EndOperation}})},109041,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(129728),e=a.r(97153),f=a.r(829770),g="Amqplib",h={consumeEndHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.consumer")},publishHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.publisher")}},i=f.generateInstrumentOnce(g,()=>new d.AmqplibInstrumentation(h));c.amqplibIntegration=e.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentAmqplib=i},413990,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.INTEGRATION_NAME="VercelAI"},167991,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(413990),g=[">=3.0.0 <7"],h=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function i(a){"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)&&(function(a){for(let b of a){if(!("object"==typeof b&&null!==b&&"type"in b&&"error"in b&&"toolName"in b&&"toolCallId"in b&&"tool-error"===b.type&&b.error instanceof Error))continue;let a=e._INTERNAL_getSpanContextForToolCallId(b.toolCallId);a?e.withScope(c=>{c.setContext("trace",{trace_id:a.traceId,span_id:a.spanId}),c.setTag("vercel.ai.tool.name",b.toolName),c.setTag("vercel.ai.tool.callId",b.toolCallId),c.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):e.withScope(a=>{a.setTag("vercel.ai.tool.name",b.toolName),a.setTag("vercel.ai.tool.callId",b.toolCallId),a.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(a.content),j(a.content))}function j(a){for(let b of a)"object"==typeof b&&null!==b&&"toolCallId"in b&&"string"==typeof b.toolCallId&&e._INTERNAL_cleanupToolCallSpanContext(b.toolCallId)}function k(a,b,c,d){return{recordInputs:a?.recordInputs!==void 0?a.recordInputs:void 0!==b.recordInputs?b.recordInputs:!0===c||d,recordOutputs:a?.recordOutputs!==void 0?a.recordOutputs:void 0!==b.recordOutputs?b.recordOutputs:!0===c||d}}class l extends d.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(a={}){super("@sentry/instrumentation-vercel-ai",e.SDK_VERSION,a),l.prototype.__init.call(this),l.prototype.__init2.call(this)}init(){return new d.InstrumentationNodeModuleDefinition("ai",g,this._patch.bind(this))}callWhenPatched(a){this._isPatched?a():this._callbacks.push(a)}_patch(a){this._isPatched=!0,this._callbacks.forEach(a=>a()),this._callbacks=[];let b=a=>new Proxy(a,{apply:(a,b,c)=>{let d=c[0].experimental_telemetry||{},g=d.isEnabled,h=e.getClient(),j=h?.getIntegrationByName(f.INTEGRATION_NAME),{recordInputs:l,recordOutputs:m}=k(j?.options,d,g,!!j&&!!h?.getOptions().sendDefaultPii);return c[0].experimental_telemetry={...d,isEnabled:void 0===g||g,recordInputs:l,recordOutputs:m},e.handleCallbackErrors(()=>Reflect.apply(a,b,c),a=>{a&&"object"==typeof a&&e.addNonEnumerableProperty(a,"_sentry_active_span",e.getActiveSpan())},()=>{},a=>{i(a)})}});if("[object Module]"===Object.prototype.toString.call(a)){for(let c of h)null!=a[c]&&(a[c]=b(a[c]));return a}{let c=h.reduce((c,d)=>(null!=a[d]&&(c[d]=b(a[d])),c),{});return{...a,...c}}}}c.SentryVercelAiInstrumentation=l,c.cleanupToolCallSpanContexts=j,c.determineRecordingSettings=k,c.processToolCallResults=i},846940,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(413990),g=a.r(167991),h=e.generateInstrumentOnce(f.INTEGRATION_NAME,()=>new g.SentryVercelAiInstrumentation({})),i=d.defineIntegration((a={})=>{let b;return{name:f.INTEGRATION_NAME,options:a,setupOnce(){b=h()},afterAllSetup(c){let e;a.force??(e=c.getIntegrationByName("Modules"),!!e?.getModules?.()?.ai)?d.addVercelAiProcessors(c):b?.callWhenPatched(()=>d.addVercelAiProcessors(c))}}});c.instrumentVercelAi=h,c.vercelAIIntegration=i},921823,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=4.0.0 <7"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-openai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("openai",f,this._patch.bind(this))}_patch(a){let b=a;return b=this._patchClient(b,"OpenAI"),b=this._patchClient(b,"AzureOpenAI")}_patchClient(a,b){let c=a[b];if(!c)return a;let d=this.getConfig(),f=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.OPENAI_INTEGRATION_NAME))return Reflect.construct(c,a);let b=Reflect.construct(c,a);return e.instrumentOpenAiClient(b,d)};for(let a of(Object.setPrototypeOf(f,c),Object.setPrototypeOf(f.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(f,a,b)}try{a[b]=f}catch{Object.defineProperty(a,b,{value:f,writable:!0,configurable:!0,enumerable:!0})}if(a.default===c)try{a.default=f}catch{Object.defineProperty(a,"default",{value:f,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryOpenAiInstrumentation=g},245727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(921823),g=e.generateInstrumentOnce(d.OPENAI_INTEGRATION_NAME,a=>new f.SentryOpenAiInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.OPENAI_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentOpenAi=g,c.openAIIntegration=h},749490,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.19.2 <1.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-anthropic-ai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",f,this._patch.bind(this))}_patch(a){let b=a.Anthropic,c=this.getConfig(),d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentAnthropicAiClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}try{a.Anthropic=d}catch{Object.defineProperty(a,"Anthropic",{value:d,writable:!0,configurable:!0,enumerable:!0})}if(a.default===b)try{a.default=d}catch{Object.defineProperty(a,"default",{value:d,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryAnthropicAiInstrumentation=g},655203,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(749490),g=e.generateInstrumentOnce(d.ANTHROPIC_AI_INTEGRATION_NAME,a=>new f.SentryAnthropicAiInstrumentation(a));c.anthropicAIIntegration=d.defineIntegration((a={})=>({name:d.ANTHROPIC_AI_INTEGRATION_NAME,options:a,setupOnce(){g(a)}})),c.instrumentAnthropicAi=g},376746,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.10.0 <2"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-google-genai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@google/genai",f,a=>this._patch(a),a=>a,[new d.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",f,a=>this._patch(a),a=>a)])}_patch(a){let b=a.GoogleGenAI,c=this.getConfig();if("function"!=typeof b)return a;let d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentGoogleGenAIClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}return e.replaceExports(a,"GoogleGenAI",d),a}}c.SentryGoogleGenAiInstrumentation=g},257489,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(376746),g=e.generateInstrumentOnce(d.GOOGLE_GENAI_INTEGRATION_NAME,a=>new f.SentryGoogleGenAiInstrumentation(a));c.googleGenAIIntegration=d.defineIntegration((a={})=>({name:d.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){g(a)}})),c.instrumentGoogleGenAI=g},853076,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.1.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langchain",e.SDK_VERSION,a)}init(){let a=[];for(let b of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])a.push(new d.InstrumentationNodeModuleDefinition(b,f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile(`${b}/dist/index.cjs`,f,this._patch.bind(this),a=>a)]));return a.push(new d.InstrumentationNodeModuleDefinition("langchain",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",f,this._patch.bind(this),a=>a)])),a}_patch(a){e._INTERNAL_skipAiProviderWrapping([e.OPENAI_INTEGRATION_NAME,e.ANTHROPIC_AI_INTEGRATION_NAME,e.GOOGLE_GENAI_INTEGRATION_NAME]);let b=e.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(a,b),a}_patchRunnableMethods(a,b){let c=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],d=Object.values(a.universal_exports??a).find(a=>"function"==typeof a&&c.includes(a.name));if(!d)return;let e=d.prototype;if(!e.__sentry_patched__)for(let a of(e.__sentry_patched__=!0,["invoke","stream","batch"])){let c=e[a];"function"==typeof c&&(e[a]=function(a,b,c){return new Proxy(a,{apply(a,c,d){var e,f;let g=d[1];(!g||"object"!=typeof g||Array.isArray(g))&&(g={},d[1]=g);let h=(e=g.callbacks,f=b,e?Array.isArray(e)?e.includes(f)?e:[...e,f]:"object"==typeof e?[e,f]:e:[f]);return g.callbacks=h,Reflect.apply(a,c,d)}})}(c,b))}}}c.SentryLangChainInstrumentation=g},301180,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(853076),g=e.generateInstrumentOnce(d.LANGCHAIN_INTEGRATION_NAME,a=>new f.SentryLangChainInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGCHAIN_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangChain=g,c.langChainIntegration=h},411643,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.0.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langgraph",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@langchain/langgraph",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",f,this._patch.bind(this),a=>a)])}_patch(a){return a.StateGraph&&"function"==typeof a.StateGraph&&e.instrumentLangGraph(a.StateGraph.prototype,this.getConfig()),a}}c.SentryLangGraphInstrumentation=g},586973,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(411643),g=e.generateInstrumentOnce(d.LANGGRAPH_INTEGRATION_NAME,a=>new f.SentryLangGraphInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGGRAPH_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangGraph=g,c.langGraphIntegration=h},630843,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));c.buildLaunchDarklyFlagUsedHandlerShim=function(){return d.isBrowser()||d.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},c.launchDarklyIntegrationShim=e},521745,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));c.OpenFeatureIntegrationHookShim=class{constructor(){d.isBrowser()||d.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},c.openFeatureIntegrationShim=e},55267,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.statsigIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},224314,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.unleashIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},916562,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.growthbookIntegrationShim=a.r(97153).growthbookIntegration},114498,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(761095),e=a.r(854230),f=a.r(621472),g=a.r(357223);function h(a,b,c,d,e){var f,g,h,l,m,n,o,p;return i(a,c),b(a,"addDoc",(f=d,g=e,function(a){return function(b,c){let d=k(f,"addDoc",b);return g(d),j(d,()=>a(b,c))}})),b(a,"getDocs",(h=d,l=e,function(a){return function(b){let c=k(h,"getDocs",b);return l(c),j(c,()=>a(b))}})),b(a,"setDoc",(m=d,n=e,function(a){return function(b,c,d){let e=k(m,"setDoc",b.parent||b);return n(e),j(e,()=>void 0!==d?a(b,c,d):a(b,c))}})),b(a,"deleteDoc",(o=d,p=e,function(a){return function(b){let c=k(o,"deleteDoc",b.parent||b);return p(c),j(c,()=>a(b))}})),a}function i(a,b){for(let c of["addDoc","getDocs","setDoc","deleteDoc"])f.isWrapped(a[c])&&b(a,c);return a}function j(a,b){return e.context.with(e.trace.setSpan(e.context.active(),a),()=>f.safeExecuteInTheMiddle(()=>b(),b=>{b&&a.recordException(b),a.end()},!0))}function k(a,b,c){let d=a.startSpan(`${b} ${c.path}`,{kind:e.SpanKind.CLIENT});return function(a,b){let c=b.firestore.app,d=c.options,e=(b.firestore.toJSON()||{}).settings||{},f={[g.ATTR_DB_COLLECTION_NAME]:b.path,[g.ATTR_DB_NAMESPACE]:c.name,[g.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":b.type,"firebase.firestore.options.projectId":d.projectId,"firebase.firestore.options.appId":d.appId,"firebase.firestore.options.messagingSenderId":d.messagingSenderId,"firebase.firestore.options.storageBucket":d.storageBucket},{address:h,port:i}=l(e);h&&(f[g.ATTR_SERVER_ADDRESS]=h),i&&(f[g.ATTR_SERVER_PORT]=i),a.setAttributes(f)}(d,c),d.setAttribute(g.ATTR_DB_OPERATION_NAME,b),d}function l(a){let b,c;if("string"==typeof a.host)if(a.host.startsWith("[")){if(a.host.endsWith("]"))b=a.host.replace(/^\[|\]$/g,"");else if(a.host.includes("]:")){let d=a.host.lastIndexOf(":");-1!==d&&(b=a.host.slice(1,d).replace(/^\[|\]$/g,""),c=a.host.slice(d+1))}}else if(d.isIPv6(a.host))b=a.host;else{let d=a.host.lastIndexOf(":");-1!==d?(b=a.host.slice(0,d),c=a.host.slice(d+1)):b=a.host}return{address:b,port:c?parseInt(c,10):void 0}}c.getPortAndAddress=l,c.patchFirestore=function(a,b,c,d,g){let j=()=>{},k=g.firestoreSpanCreationHook;"function"==typeof k&&(j=a=>{f.safeExecuteInTheMiddle(()=>k(a),a=>{a&&e.diag.error(a?.message)},!0)});let l=new f.InstrumentationNodeModuleDefinition("@firebase/firestore",b,b=>h(b,c,d,a,j));for(let e of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])l.files.push(new f.InstrumentationNodeModuleFile(e,b,b=>h(b,c,d,a,j),a=>i(a,d)));return l}},10223,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472);function f(a,b,c){return function(e){return function(...f){let g="function"==typeof f[0]?f[0]:f[1],h="function"==typeof f[0]?void 0:f[0];if(!g)return e.call(this,...f);let i=async function(...e){let f=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",h=a.startSpan(`firebase.function.${c}`,{kind:d.SpanKind.SERVER}),i={"faas.name":f,"faas.trigger":c,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(i["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(i["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),h.setAttributes(i),b?.requestHook?.(h),d.context.with(d.trace.setSpan(d.context.active(),h),async()=>{let a,c;try{c=await g.apply(this,e)}catch(b){a=b}if(b?.responseHook?.(h,a),a&&h.recordException(a),h.end(),a)throw await b?.errorHook?.(h,a),a;return c})};return h?e.call(this,h,i):e.call(this,i)}}}function g(a,b){for(let c of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])e.isWrapped(a[c])&&b(a,c);return a}c.patchFunctions=function(a,b,c,h,i){let j=()=>{},k=()=>{},l=i.functions?.errorHook,m=i.functions?.requestHook,n=i.functions?.responseHook;"function"==typeof n&&(k=(a,b)=>{e.safeExecuteInTheMiddle(()=>n(a,b),a=>{a&&d.diag.error(a?.message)},!0)}),"function"==typeof m&&(j=a=>{e.safeExecuteInTheMiddle(()=>m(a),a=>{a&&d.diag.error(a?.message)},!0)});let o=new e.InstrumentationNodeModuleDefinition("firebase-functions",b);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:d,triggerType:i})=>{o.files.push(new e.InstrumentationNodeModuleFile(d,b,b=>(function(a,b,c,d,e,h){switch(g(a,c),h){case"function":b(a,"onRequest",f(d,e,"http.request")),b(a,"onCall",f(d,e,"http.call"));break;case"firestore":b(a,"onDocumentCreated",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdated",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeleted",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWritten",f(d,e,"firestore.document.written")),b(a,"onDocumentCreatedWithAuthContext",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdatedWithAuthContext",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeletedWithAuthContext",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWrittenWithAuthContext",f(d,e,"firestore.document.written"));break;case"scheduler":b(a,"onSchedule",f(d,e,"scheduler.scheduled"));break;case"storage":b(a,"onObjectFinalized",f(d,e,"storage.object.finalized")),b(a,"onObjectArchived",f(d,e,"storage.object.archived")),b(a,"onObjectDeleted",f(d,e,"storage.object.deleted")),b(a,"onObjectMetadataUpdated",f(d,e,"storage.object.metadataUpdated"))}return a})(b,c,h,a,{requestHook:j,responseHook:k,errorHook:l},i),a=>g(a,h)))}),o},c.patchV2Functions=f},770392,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(114498),g=a.r(10223),h={},i=[">=3.0.0 <5"],j=[">=6.0.0 <7"];class k extends d.InstrumentationBase{constructor(a=h){super("@sentry/instrumentation-firebase",e.SDK_VERSION,a)}setConfig(a={}){super.setConfig({...h,...a})}init(){let a=[];return a.push(f.patchFirestore(this.tracer,i,this._wrap,this._unwrap,this.getConfig())),a.push(g.patchFunctions(this.tracer,j,this._wrap,this._unwrap,this.getConfig())),a}}c.FirebaseInstrumentation=k},884348,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(770392),g="Firebase",h={firestoreSpanCreationHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.firestore"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.functions"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(a,b)=>{b&&(d.captureException(b,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d.flush(2e3))}}},i=e.generateInstrumentOnce(g,()=>new f.FirebaseInstrumentation(h));c.firebaseIntegration=d.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentFirebase=i},483727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(506596),e=a.r(109041),f=a.r(655203),g=a.r(89709),h=a.r(985248),i=a.r(946634),j=a.r(884348),k=a.r(975446),l=a.r(257489),m=a.r(804666),n=a.r(546750),o=a.r(228328),p=a.r(547611),q=a.r(326259),r=a.r(301180),s=a.r(586973),t=a.r(569473),u=a.r(464048),v=a.r(473965),w=a.r(848855),x=a.r(757586),y=a.r(245727),z=a.r(277029),A=a.r(551578),B=a.r(302889),C=a.r(745584),D=a.r(441418),E=a.r(846940);c.getAutoPerformanceIntegrations=function(){return[h.expressIntegration(),i.fastifyIntegration(),m.graphqlIntegration(),o.honoIntegration(),u.mongoIntegration(),v.mongooseIntegration(),w.mysqlIntegration(),x.mysql2Integration(),C.redisIntegration(),z.postgresIntegration(),B.prismaIntegration(),n.hapiIntegration(),q.koaIntegration(),g.connectIntegration(),D.tediousIntegration(),k.genericPoolIntegration(),p.kafkaIntegration(),e.amqplibIntegration(),t.lruMemoizerIntegration(),r.langChainIntegration(),s.langGraphIntegration(),E.vercelAIIntegration(),y.openAIIntegration(),f.anthropicAIIntegration(),l.googleGenAIIntegration(),A.postgresJsIntegration(),j.firebaseIntegration()]},c.getOpenTelemetryInstrumentationToPreload=function(){return[d.instrumentSentryHttp,d.instrumentOtelHttp,h.instrumentExpress,g.instrumentConnect,i.instrumentFastify,i.instrumentFastifyV3,n.instrumentHapi,o.instrumentHono,p.instrumentKafka,q.instrumentKoa,t.instrumentLruMemoizer,u.instrumentMongo,v.instrumentMongoose,w.instrumentMysql,x.instrumentMysql2,z.instrumentPostgres,n.instrumentHapi,m.instrumentGraphql,C.instrumentRedis,D.instrumentTedious,k.instrumentGenericPool,e.instrumentAmqplib,r.instrumentLangChain,E.instrumentVercelAi,y.instrumentOpenAi,A.instrumentPostgresJs,j.instrumentFirebase,f.instrumentAnthropicAi,l.instrumentGoogleGenAI,s.instrumentLangGraph]}},636371,a=>{"use strict";let b;a.s([],433629),a.i(433629);var c=a.i(385603),d=a.i(432238),e=a.i(291723),f=a.i(970544);let g=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(a){let b={},d=(0,f.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),g=(0,f.getStringFromEnv)("OTEL_SERVICE_NAME");if(d)try{let a=this._parseResourceAttributes(d);Object.assign(b,a)}catch(a){c.diag.debug(`EnvDetector failed: ${a instanceof Error?a.message:a}`)}return g&&(b[e.ATTR_SERVICE_NAME]=g),{attributes:b}}_parseResourceAttributes(a){if(!a)return{};let b={};for(let c of a.split(this._COMMA_SEPARATOR)){let a,d,e=c.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==e.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${c}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[f,g]=e,h=f.trim(),i=g.trim();if(0===h.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${c}".`);try{a=decodeURIComponent(h),d=decodeURIComponent(i)}catch(a){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${c}": ${a instanceof Error?a.message:a}`)}if(a.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${a}".`);if(d.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${a}".`);b[a]=d}return b}};var h=a.i(446786),i=a.i(605365);async function j(){if(!b)switch(i.platform){case"darwin":b=(await a.A(872097)).getMachineId;break;case"linux":b=(await a.A(992965)).getMachineId;break;case"freebsd":b=(await a.A(846524)).getMachineId;break;case"win32":b=(await a.A(189011)).getMachineId;break;default:b=(await a.A(18291)).getMachineId}return b()}let k=new class{detect(a){return{attributes:{"host.name":(0,h.hostname)(),"host.arch":(a=>{switch(a){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return a}})((0,h.arch)()),"host.id":j()}}}},l=new class{detect(a){return{attributes:{"os.type":(a=>{switch(a){case"sunos":return"solaris";case"win32":return"windows";default:return a}})((0,h.platform)()),"os.version":(0,h.release)()}}}},m=new class{detect(a){let b={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(b["process.command"]=process.argv[1]);try{let a=h.userInfo();b["process.owner"]=a.username}catch(a){c.diag.debug(`error obtaining process owner: ${a}`)}return{attributes:b}}};var n=a.i(254799);let o=new class{detect(a){return{attributes:{"service.instance.id":(0,n.randomUUID)()}}}};var p=a.i(814232);a.s(["defaultResource",()=>d.defaultResource,"defaultServiceName",()=>p.defaultServiceName,"detectResources",0,(a={})=>(a.detectors||[]).map(b=>{try{let e=(0,d.resourceFromDetectedResource)(b.detect(a));return c.diag.debug(`${b.constructor.name} found resource.`,e),e}catch(a){return c.diag.debug(`${b.constructor.name} failed: ${a.message}`),(0,d.emptyResource)()}}).reduce((a,b)=>a.merge(b),(0,d.emptyResource)()),"emptyResource",()=>d.emptyResource,"envDetector",0,g,"hostDetector",0,k,"osDetector",0,l,"processDetector",0,m,"resourceFromAttributes",()=>d.resourceFromAttributes,"serviceInstanceIdDetector",0,o],636371)},305722,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(636371),f=a.r(878176),g=a.r(357223),h=a.r(97153),i=a.r(829770),j=a.r(960535),k=a.r(560192),l=a.r(483727);function m(a,b={}){let c=new f.BasicTracerProvider({sampler:new j.SentrySampler(a),resource:e.defaultResource().merge(e.resourceFromAttributes({[g.ATTR_SERVICE_NAME]:"node",[g.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[g.ATTR_SERVICE_VERSION]:h.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new j.SentrySpanProcessor({timeout:n(a.getOptions().maxSpanWaitDuration)}),...b.spanProcessors||[]]});d.trace.setGlobalTracerProvider(c),d.propagation.setGlobalPropagator(new j.SentryPropagator);let k=new i.SentryContextManager;return d.context.setGlobalContextManager(k),[c,k.getAsyncLocalStorageLookup()]}function n(a){if(null!=a){if(a>1e6)return k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(a<=0||Number.isNaN(a)){k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return a}}c._clampSpanProcessorTimeout=n,c.initOpenTelemetry=function(a,b={}){a.getOptions().debug&&i.setupOpenTelemetryLogger();let[c,d]=m(a,b);a.traceProvider=c,a.asyncLocalStorageLookup=d},c.preloadOpenTelemetry=function(a={}){var b;let c,{debug:d}=a;d&&h.debug.enable(),i.initializeEsmLoader(),(b=a.integrations,c=l.getOpenTelemetryInstrumentationToPreload(),b?c.filter(a=>{let c=a.id;return b.some(a=>c===a||c.startsWith(`${a}.`))}):c).forEach(a=>{a(),d&&h.debug.log(`[Sentry] Preloaded ${a.id} instrumentation`)})},c.setupOtel=m},741067,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(506596),g=a.r(383093),h=a.r(483727),i=a.r(305722);function j(){return e.getDefaultIntegrations().filter(a=>"Http"!==a.name&&"NodeFetch"!==a.name).concat(f.httpIntegration(),g.nativeNodeFetchIntegration())}function k(a){return[...j(),...d.hasSpansEnabled(a)?h.getAutoPerformanceIntegrations():[]]}function l(a={},b){d.applySdkMetadata(a,"node");let c=e.init({...a,defaultIntegrations:a.defaultIntegrations??b(a)});return c&&!a.skipOpenTelemetrySetup&&(i.initOpenTelemetry(c,{spanProcessors:a.openTelemetrySpanProcessors}),e.validateOpenTelemetrySetup()),c}c.getDefaultIntegrations=k,c.getDefaultIntegrationsWithoutPerformance=j,c.init=function(a={}){return l(a,k)},c.initWithoutDefaultIntegrations=function(a={}){return l(a,()=>[])}},874208,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(506596),e=a.r(383093),f=a.r(706317),g=a.r(985248),h=a.r(946634),i=a.r(804666),j=a.r(547611),k=a.r(569473),l=a.r(464048),m=a.r(473965),n=a.r(848855),o=a.r(757586),p=a.r(745584),q=a.r(277029),r=a.r(551578),s=a.r(302889),t=a.r(546750),u=a.r(228328),v=a.r(326259),w=a.r(89709),x=a.r(722836),y=a.r(441418),z=a.r(975446),A=a.r(235153),B=a.r(109041),C=a.r(846940),D=a.r(245727),E=a.r(655203),F=a.r(257489),G=a.r(301180),H=a.r(586973),I=a.r(630843),J=a.r(521745),K=a.r(55267),L=a.r(224314),M=a.r(916562),N=a.r(884348),O=a.r(741067),P=a.r(305722),Q=a.r(483727),R=a.r(960535),S=a.r(97153),T=a.r(829770);c.httpIntegration=d.httpIntegration,c.nativeNodeFetchIntegration=e.nativeNodeFetchIntegration,c.fsIntegration=f.fsIntegration,c.expressErrorHandler=g.expressErrorHandler,c.expressIntegration=g.expressIntegration,c.setupExpressErrorHandler=g.setupExpressErrorHandler,c.fastifyIntegration=h.fastifyIntegration,c.setupFastifyErrorHandler=h.setupFastifyErrorHandler,c.graphqlIntegration=i.graphqlIntegration,c.kafkaIntegration=j.kafkaIntegration,c.lruMemoizerIntegration=k.lruMemoizerIntegration,c.mongoIntegration=l.mongoIntegration,c.mongooseIntegration=m.mongooseIntegration,c.mysqlIntegration=n.mysqlIntegration,c.mysql2Integration=o.mysql2Integration,c.redisIntegration=p.redisIntegration,c.postgresIntegration=q.postgresIntegration,c.postgresJsIntegration=r.postgresJsIntegration,c.prismaIntegration=s.prismaIntegration,c.hapiIntegration=t.hapiIntegration,c.setupHapiErrorHandler=t.setupHapiErrorHandler,c.honoIntegration=u.honoIntegration,c.setupHonoErrorHandler=u.setupHonoErrorHandler,c.koaIntegration=v.koaIntegration,c.setupKoaErrorHandler=v.setupKoaErrorHandler,c.connectIntegration=w.connectIntegration,c.setupConnectErrorHandler=w.setupConnectErrorHandler,c.knexIntegration=x.knexIntegration,c.tediousIntegration=y.tediousIntegration,c.genericPoolIntegration=z.genericPoolIntegration,c.dataloaderIntegration=A.dataloaderIntegration,c.amqplibIntegration=B.amqplibIntegration,c.vercelAIIntegration=C.vercelAIIntegration,c.openAIIntegration=D.openAIIntegration,c.anthropicAIIntegration=E.anthropicAIIntegration,c.googleGenAIIntegration=F.googleGenAIIntegration,c.langChainIntegration=G.langChainIntegration,c.langGraphIntegration=H.langGraphIntegration,c.buildLaunchDarklyFlagUsedHandler=I.buildLaunchDarklyFlagUsedHandlerShim,c.launchDarklyIntegration=I.launchDarklyIntegrationShim,c.OpenFeatureIntegrationHook=J.OpenFeatureIntegrationHookShim,c.openFeatureIntegration=J.openFeatureIntegrationShim,c.statsigIntegration=K.statsigIntegrationShim,c.unleashIntegration=L.unleashIntegrationShim,c.growthbookIntegration=M.growthbookIntegrationShim,c.firebaseIntegration=N.firebaseIntegration,c.getDefaultIntegrations=O.getDefaultIntegrations,c.getDefaultIntegrationsWithoutPerformance=O.getDefaultIntegrationsWithoutPerformance,c.init=O.init,c.initWithoutDefaultIntegrations=O.initWithoutDefaultIntegrations,c.initOpenTelemetry=P.initOpenTelemetry,c.preloadOpenTelemetry=P.preloadOpenTelemetry,c.getAutoPerformanceIntegrations=Q.getAutoPerformanceIntegrations,c.setNodeAsyncContextStrategy=R.setOpenTelemetryContextAsyncContextStrategy,c.SDK_VERSION=S.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=S.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=S.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=S.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=S.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=S.Scope,c.addBreadcrumb=S.addBreadcrumb,c.addEventProcessor=S.addEventProcessor,c.addIntegration=S.addIntegration,c.captureCheckIn=S.captureCheckIn,c.captureConsoleIntegration=S.captureConsoleIntegration,c.captureEvent=S.captureEvent,c.captureException=S.captureException,c.captureFeedback=S.captureFeedback,c.captureMessage=S.captureMessage,c.captureSession=S.captureSession,c.close=S.close,c.consoleIntegration=S.consoleIntegration,c.consoleLoggingIntegration=S.consoleLoggingIntegration,c.continueTrace=S.continueTrace,c.createConsolaReporter=S.createConsolaReporter,c.createLangChainCallbackHandler=S.createLangChainCallbackHandler,c.createTransport=S.createTransport,c.dedupeIntegration=S.dedupeIntegration,c.endSession=S.endSession,c.eventFiltersIntegration=S.eventFiltersIntegration,c.extraErrorDataIntegration=S.extraErrorDataIntegration,c.featureFlagsIntegration=S.featureFlagsIntegration,c.flush=S.flush,c.functionToStringIntegration=S.functionToStringIntegration,c.getActiveSpan=S.getActiveSpan,c.getClient=S.getClient,c.getCurrentScope=S.getCurrentScope,c.getGlobalScope=S.getGlobalScope,c.getIsolationScope=S.getIsolationScope,c.getRootSpan=S.getRootSpan,c.getSpanDescendants=S.getSpanDescendants,c.getSpanStatusFromHttpCode=S.getSpanStatusFromHttpCode,c.getTraceData=S.getTraceData,c.getTraceMetaTags=S.getTraceMetaTags,c.httpHeadersToSpanAttributes=S.httpHeadersToSpanAttributes,c.inboundFiltersIntegration=S.inboundFiltersIntegration,c.instrumentAnthropicAiClient=S.instrumentAnthropicAiClient,c.instrumentGoogleGenAIClient=S.instrumentGoogleGenAIClient,c.instrumentLangGraph=S.instrumentLangGraph,c.instrumentOpenAiClient=S.instrumentOpenAiClient,c.instrumentStateGraphCompile=S.instrumentStateGraphCompile,c.instrumentSupabaseClient=S.instrumentSupabaseClient,c.isEnabled=S.isEnabled,c.isInitialized=S.isInitialized,c.lastEventId=S.lastEventId,c.linkedErrorsIntegration=S.linkedErrorsIntegration,c.parameterize=S.parameterize,c.profiler=S.profiler,c.requestDataIntegration=S.requestDataIntegration,c.rewriteFramesIntegration=S.rewriteFramesIntegration,c.setContext=S.setContext,c.setConversationId=S.setConversationId,c.setCurrentClient=S.setCurrentClient,c.setExtra=S.setExtra,c.setExtras=S.setExtras,c.setHttpStatus=S.setHttpStatus,c.setMeasurement=S.setMeasurement,c.setTag=S.setTag,c.setTags=S.setTags,c.setUser=S.setUser,c.spanToBaggageHeader=S.spanToBaggageHeader,c.spanToJSON=S.spanToJSON,c.spanToTraceHeader=S.spanToTraceHeader,c.startInactiveSpan=S.startInactiveSpan,c.startNewTrace=S.startNewTrace,c.startSession=S.startSession,c.startSpan=S.startSpan,c.startSpanManual=S.startSpanManual,c.supabaseIntegration=S.supabaseIntegration,c.suppressTracing=S.suppressTracing,c.trpcMiddleware=S.trpcMiddleware,c.updateSpanName=S.updateSpanName,c.winterCGHeadersToDict=S.winterCGHeadersToDict,c.withActiveSpan=S.withActiveSpan,c.withIsolationScope=S.withIsolationScope,c.withMonitor=S.withMonitor,c.withScope=S.withScope,c.wrapMcpServerWithSentry=S.wrapMcpServerWithSentry,c.zodErrorsIntegration=S.zodErrorsIntegration,c.NODE_VERSION=T.NODE_VERSION,c.NodeClient=T.NodeClient,c.SentryContextManager=T.SentryContextManager,c.anrIntegration=T.anrIntegration,c.childProcessIntegration=T.childProcessIntegration,c.contextLinesIntegration=T.contextLinesIntegration,c.createGetModuleFromFilename=T.createGetModuleFromFilename,c.createSentryWinstonTransport=T.createSentryWinstonTransport,c.cron=T.cron,c.defaultStackParser=T.defaultStackParser,c.disableAnrDetectionForCallback=T.disableAnrDetectionForCallback,c.generateInstrumentOnce=T.generateInstrumentOnce,c.getSentryRelease=T.getSentryRelease,c.httpServerIntegration=T.httpServerIntegration,c.httpServerSpansIntegration=T.httpServerSpansIntegration,c.localVariablesIntegration=T.localVariablesIntegration,c.logger=T.logger,c.makeNodeTransport=T.makeNodeTransport,c.metrics=T.metrics,c.modulesIntegration=T.modulesIntegration,c.nodeContextIntegration=T.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=T.nodeRuntimeMetricsIntegration,c.onUncaughtExceptionIntegration=T.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=T.onUnhandledRejectionIntegration,c.pinoIntegration=T.pinoIntegration,c.processSessionIntegration=T.processSessionIntegration,c.spotlightIntegration=T.spotlightIntegration,c.systemErrorIntegration=T.systemErrorIntegration,c.validateOpenTelemetrySetup=T.validateOpenTelemetrySetup},98251,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(522734),f=a.r(814747),g=null,h=null;c.createRouteManifest=function(a){let b;if(a?.appDirPath)b=a.appDirPath;else{let a=process.cwd(),c=f.join(a,"app"),d=f.join(a,"src","app");e.existsSync(c)&&e.lstatSync(c).isDirectory()?b=c:e.existsSync(d)&&e.lstatSync(d).isDirectory()&&(b=d)}if(!b)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(g&&h===b&&d===a?.includeRouteGroups)return g;let{dynamicRoutes:c,staticRoutes:i,isrRoutes:j}=function a(b,c="",d=!1){let g=[],h=[],i=[];try{let k=e.readdirSync(b,{withFileTypes:!0}),l=k.find(a=>{var b;return b=a.name,"page.tsx"===b||"page.jsx"===b||"page.ts"===b||"page.js"===b});if(l){let a=d?c||"/":(c||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),j=a.includes(":"),k=f.join(b,l.name);if(function(a){try{let b=e.readFileSync(a,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(b)}catch{return!1}}(k)&&i.push(a),j){let{regex:b,paramNames:c,hasOptionalPrefix:d}=function(a){let b,c,d=a.split("/").filter(Boolean),e=[],f=[],g=!1;for(let a of d)if(a.startsWith(":")){let b=a.substring(1);if(b.endsWith("*?")){let a=b.slice(0,-2);f.push(a),g=!0}else if(b.endsWith("*")){let a=b.slice(0,-1);f.push(a),e.push("(.+)")}else f.push(b),e.push("([^/]+)")}else e.push(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(g)if(0===e.length)c="^/(.*)$";else{let a=e.join("/");c=`^/${a}(?:/(.*))?$`}else c=`^/${e.join("/")}$`;return{regex:c,paramNames:f,hasOptionalPrefix:(b=f[0],void 0!==b&&("locale"===b||"lang"===b||"language"===b))}}(a);g.push({path:a,regex:b,paramNames:c,hasOptionalPrefix:d})}else h.push({path:a})}for(let e of k)if(e.isDirectory()){var j;let k,l=f.join(b,e.name),m=e.name.startsWith("[")&&e.name.endsWith("]"),n=(k=(j=e.name).startsWith("(")&&j.endsWith(")")?d?e.name:"":m?function(a){if(a.startsWith("[[...")&&a.endsWith("]]")){let b=a.slice(5,-2);return`:${b}*?`}if(a.startsWith("[...")&&a.endsWith("]")){let b=a.slice(4,-1);return`:${b}*`}return`:${a.slice(1,-1)}`}(e.name):e.name)?`${c}/${k}`:c,o=a(l,n,d);g.push(...o.dynamicRoutes),h.push(...o.staticRoutes),i.push(...o.isrRoutes)}}catch(a){console.warn("Error building route manifest:",a)}return{dynamicRoutes:g,staticRoutes:h,isrRoutes:i}}(b,a?.basePath,a?.includeRouteGroups),k={dynamicRoutes:c,staticRoutes:i,isrRoutes:j};return g=k,h=b,d=a?.includeRouteGroups,k}},318976,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.resolveTunnelRoute=function(a){let b;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let c="string"==typeof a?a:(b=d._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${b}`);return c&&(process.env.__SENTRY_TUNNEL_ROUTE__=c),c},c.setUpTunnelRewriteRules=function(a,b){let c=a.rewrites,d=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,e=d||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",f=d||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";a.rewrites=async(...a)=>{let d={source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:e},g=[{source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:f},d];if("function"!=typeof c)return g;let h=await c(...a);return Array.isArray(h)?[...g,...h]:{...h,beforeFiles:[...g,...h.beforeFiles||[]]}}}},546626,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(874208),f=a.r(522734),g=a.r(814747),h=a.r(98251),i=a.r(53556),j=a.r(883264),k=a.r(318976),l=!1,m=!1;function n(a,b){if(!b)return a;let c=a=>"function"==typeof b?b(a):b.some(b=>d.isMatchingPattern(a,b));return{staticRoutes:a.staticRoutes.filter(a=>!c(a.path)),dynamicRoutes:a.dynamicRoutes.filter(a=>!c(a.path)),isrRoutes:a.isrRoutes.filter(a=>!c(a))}}c.filterRouteManifest=n,c.getNextMajor=function(a){if(!a)return;let{major:b}=d.parseSemver(a);return b},c.maybeCreateRouteManifest=function(a,b){if(b.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==b.routeManifestInjection&&(void 0!==b.routeManifestInjection||!b.disableManifestInjection))return n(h.createRouteManifest({basePath:a.basePath}),b.routeManifestInjection?.exclude)},c.maybeGetVercelCronsConfig=function(a){let b={config:void 0,strategy:void 0};if(!process.env.VERCEL)return b;let c=a._experimental?.vercelCronsMonitoring===!0,e=a.webpack?.automaticVercelMonitors===!0;if(!c&&!e)return b;let h=function(){try{let a=g.join(process.cwd(),"vercel.json"),b=f.readFileSync(a,"utf8"),c=JSON.parse(b).crons;if(c&&Array.isArray(c)&&c.length>0)return c;return}catch(a){if("ENOENT"===a.code)return;d.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",a);return}}();return h&&(b.config=h,c&&e?(d.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),b.strategy="spans"):c?(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),b.strategy="spans"):(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),b.strategy="wrapper")),b},c.maybeSetClientTraceMetadataOption=function(a,b){if(b){let{major:c,minor:e}=d.parseSemver(b);void 0!==c&&void 0!==e&&(c>=15||14===c&&e>=3)&&(a.experimental=a.experimental||{},a.experimental.clientTraceMetadata=["baggage","sentry-trace",...a.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},c.maybeSetInstrumentationHookOption=function(a,b){if(b&&i.requiresInstrumentationHook(b)){a.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),a.experimental={instrumentationHook:!0,...a.experimental};return}b||(a.experimental&&"instrumentationHook"in a.experimental?!1===a.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),a.experimental={instrumentationHook:!0,...a.experimental}))},c.maybeSetUpTunnelRouteRewriteRules=function(a,b){if(!b.tunnelRoute)return;if("export"===a.output){l||(l=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let c=k.resolveTunnelRoute(b.tunnelRoute);b.tunnelRoute=c||void 0,k.setUpTunnelRewriteRules(a,c)},c.resolveReleaseName=function(a){return a.release?.create!==!1?a.release?.name??e.getSentryRelease()??j.getGitRevision():a.release?.name},c.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(m||(m=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},c.warnIfMissingOnRouterTransitionStartHook=function(a){let b=j.getInstrumentationClientFileContents();void 0===b||b.includes("onRouterTransitionStart")||a.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},804312,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(53556),e=a.r(883264),f=a.r(464917),g=a.r(360366),h=a.r(546626);c.getFinalConfigObject=function(a,b){f.migrateDeprecatedWebpackOptions(b);let c=h.resolveReleaseName(b);if(h.maybeSetUpTunnelRouteRewriteRules(a,b),h.shouldReturnEarlyInExperimentalBuildMode())return a;let i=h.maybeCreateRouteManifest(a,b),j=h.maybeGetVercelCronsConfig(b);e.setUpBuildTimeVariables(a,b,c);let k=d.getNextjsVersion(),l=h.getNextMajor(k);h.maybeSetClientTraceMetadataOption(a,k),h.maybeSetInstrumentationHookOption(a,k),h.warnIfMissingOnRouterTransitionStartHook(b);let m=g.getBundlerInfo(k);g.maybeWarnAboutUnsupportedTurbopack(k,m),g.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(k,b,m);let n=g.maybeConstructTurbopackConfig(a,b,i,k,m,j),o=g.resolveUseRunAfterProductionCompileHookOption(b,m);return g.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,nextJsVersion:k,bundlerInfo:m,turboPackConfig:n,shouldUseRunAfterProductionCompileHook:o}),g.maybeEnableTurbopackSourcemaps(a,b,m),{...a,...g.getServerExternalPackagesPatch(a,l),...g.getWebpackPatch({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,routeManifest:i,nextJsVersion:k,shouldUseRunAfterProductionCompileHook:o,bundlerInfo:m,vercelCronsConfigResult:j}),...g.getTurbopackPatch(m,n)}}},114530,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(804312);c.withSentryConfig=function(a,b={}){let c=a||{};return"function"==typeof c?function(...a){let f=c.apply(this,a);return d.isThenable(f)?f.then(a=>e.getFinalConfigObject(a,b)):e.getFinalConfigObject(f,b)}:e.getFinalConfigObject(c,b)}},373328,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{"use strict";var b="";function c(a){return a.split("\n").reduce(function(a,c){var k,l,m,n=function(a){var c=d.exec(a);if(!c)return null;var f=c[2]&&0===c[2].indexOf("native"),g=c[2]&&0===c[2].indexOf("eval"),h=e.exec(c[2]);return g&&null!=h&&(c[2]=h[1],c[3]=h[2],c[4]=h[3]),{file:f?null:c[2],methodName:c[1]||b,arguments:f?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}(c)||((k=f.exec(c))?{file:k[2],methodName:k[1]||b,arguments:[],lineNumber:+k[3],column:k[4]?+k[4]:null}:null)||function(a){var c=g.exec(a);if(!c)return null;var d=c[3]&&c[3].indexOf(" > eval")>-1,e=h.exec(c[3]);return d&&null!=e&&(c[3]=e[1],c[4]=e[2],c[5]=null),{file:c[3],methodName:c[1]||b,arguments:c[2]?c[2].split(","):[],lineNumber:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}(c)||((l=j.exec(c))?{file:l[2],methodName:l[1]||b,arguments:[],lineNumber:+l[3],column:l[4]?+l[4]:null}:null)||((m=i.exec(c))?{file:m[3],methodName:m[1]||b,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return n&&a.push(n),a},[])}var d=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,e=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;a.s(["parse",()=>c])},967602,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(384899),f=a.r(373328),g=d.GLOBAL_OBJ;function h(){let a=process.env._sentryBasePath??g._sentryBasePath??"";""===a||a.match(/^\//)||(a=`/${a}`);let b=process.env.PORT||"3000";return`http://localhost:${b}${a}`}async function i(a,b={}){let c=new AbortController,e=setTimeout(()=>c.abort(),3e3);return d.suppressTracing(()=>fetch(a,{...b,signal:c.signal}).finally(()=>{clearTimeout(e)}))}async function j(a,b){try{if(!(a.file?.startsWith("webpack-internal:")||a.file?.startsWith("file:")))return null;let c=new URLSearchParams;c.append("isServer",String(!1)),c.append("isEdgeServer",String(!1)),c.append("isAppDirectory",String(!0)),c.append("errorMessage",b.toString()),Object.keys(a).forEach(b=>{c.append(b,(a[b]??"").toString())});let d=h(),e=await i(`${d}/__nextjs_original-stack-frame?${c.toString()}`);if(!e.ok||204===e.status)return null;let f=await e.json();return{originalCodeFrame:f.originalCodeFrame,originalStackFrame:f.originalStackFrame}}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}async function k(a){try{let b={frames:a.filter(a=>!!a.file).map(a=>(a.file=a.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:a.file,methodName:a.methodName??"",arguments:[],lineNumber:a.lineNumber??0,column:a.column??0,line1:a.lineNumber??0,column1:a.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},c=h(),d=await i(`${c}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok||204===d.status)return null;return(await d.json()).map(a=>({originalCodeFrame:a.value.originalCodeFrame,originalStackFrame:a.value.originalStackFrame}))}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}c.devErrorSymbolicationEventProcessor=async function a(a,b){"transaction"===a.type&&(a.spans=a.spans?.filter(a=>{let b=a.data?.["http.url"];return"string"!=typeof b||!b.includes("__nextjs_original-stack-frame")}));try{if(b.originalException&&b.originalException instanceof Error&&b.originalException.stack){let c,f=e.parse(b.originalException.stack),h=g._sentryNextJsVersion;if(!h)return a;let i=d.parseSemver(h);if(i.major>15||15===i.major&&i.minor>=2){let b=await k(f);if(null===b)return a;c=b}else c=await Promise.all(f.map(a=>j(a,b.originalException)));a.exception?.values?.[0]?.stacktrace?.frames&&(a.exception.values[0].stacktrace.frames=a.exception.values[0].stacktrace.frames.map((a,b,d)=>{let e=c[d.length-1-b];if(!e?.originalStackFrame||!e.originalCodeFrame)return{...a,platform:a.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:f,preContextLines:g,postContextLines:h}=function(a){let b,c=a.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(a=>!a.match(/^\s*\|/)).map(a=>({line:a,isErrorLine:!!a.match(/^>/)})).map(a=>({...a,line:a.line.replace(/^.*\|/,"")})),d=[],e=[],f=!1;for(let a of c)a.isErrorLine?(b=a.line,f=!0):f?e.push(a.line):d.push(a.line);return{contextLine:b,preContextLines:d,postContextLines:e}}(e.originalCodeFrame);return{...a,pre_context:g,context_line:f,post_context:h,function:e.originalStackFrame.methodName,filename:e.originalStackFrame.file?function(a){if(!a)return a;let b=a.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return b?b[1]:a}(e.originalStackFrame.file):void 0,lineno:e.originalStackFrame.lineNumber||e.originalStackFrame.line1||void 0,colno:e.originalStackFrame.column||e.originalStackFrame.column1||void 0}}))}}catch{}return a}},562293,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getVercelEnv=function(a){let b=a?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return b?`vercel-${b}`:void 0}},473132,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.ATTR_NEXT_ROUTE="next.route",c.ATTR_NEXT_SEGMENT="next.segment",c.ATTR_NEXT_SPAN_NAME="next.span_name",c.ATTR_NEXT_SPAN_TYPE="next.span_type"},268404,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",c.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",c.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},873364,(a,b,c)=>{"use strict";b.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},767685,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE:function(){return f},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="/_not-found",g=`${f}/page`,h="/_global-error",i=`${h}/page`},874492,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={APP_CLIENT_INTERNALS:function(){return ab},APP_PATHS_MANIFEST:function(){return u},APP_PATH_ROUTES_MANIFEST:function(){return v},AdapterOutputType:function(){return k},BARREL_OPTIMIZATION_PREFIX:function(){return U},BLOCKED_PAGES:function(){return P},BUILD_ID_FILE:function(){return O},BUILD_MANIFEST:function(){return w},CLIENT_PUBLIC_FILES_PATH:function(){return Q},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return R},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return _},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return aa},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ae},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return af},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ac},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ad},COMPILER_INDEXES:function(){return j},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return N},DEFAULT_RUNTIME_WEBPACK:function(){return ag},DEFAULT_SANS_SERIF_FONT:function(){return al},DEFAULT_SERIF_FONT:function(){return ak},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return K},DEV_CLIENT_PAGES_MANIFEST:function(){return G},DYNAMIC_CSS_MANIFEST:function(){return $},EDGE_RUNTIME_WEBPACK:function(){return ah},EDGE_UNSUPPORTED_NODE_APIS:function(){return aq},EXPORT_DETAIL:function(){return B},EXPORT_MARKER:function(){return A},FUNCTIONS_CONFIG_MANIFEST:function(){return x},IMAGES_MANIFEST:function(){return E},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Z},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return H},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return Y},MODERN_BROWSERSLIST_TARGET:function(){return g.default},NEXT_BUILTIN_DOCUMENT:function(){return T},NEXT_FONT_MANIFEST:function(){return z},PAGES_MANIFEST:function(){return s},PHASE_ANALYZE:function(){return m},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return r},PHASE_PRODUCTION_BUILD:function(){return n},PHASE_PRODUCTION_SERVER:function(){return o},PHASE_TEST:function(){return q},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return L},ROUTES_MANIFEST:function(){return D},RSC_MODULE_TYPES:function(){return ap},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return F},SERVER_PROPS_ID:function(){return aj},SERVER_REFERENCE_MANIFEST:function(){return W},STATIC_PROPS_ID:function(){return ai},STATIC_STATUS_PAGES:function(){return am},STRING_LITERAL_DROP_BUNDLE:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},SYSTEM_ENTRYPOINTS:function(){return ar},TRACE_OUTPUT_VERSION:function(){return an},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return J},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ao},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return t}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(463652)._(a.r(873364)),h=a.r(767685),i={client:"client",server:"server",edgeServer:"edge-server"},j={[i.client]:0,[i.server]:1,[i.edgeServer]:2};var k=((d={}).PAGES="PAGES",d.PAGES_API="PAGES_API",d.APP_PAGE="APP_PAGE",d.APP_ROUTE="APP_ROUTE",d.PRERENDER="PRERENDER",d.STATIC_FILE="STATIC_FILE",d.MIDDLEWARE="MIDDLEWARE",d);let l="phase-export",m="phase-analyze",n="phase-production-build",o="phase-production-server",p="phase-development-server",q="phase-test",r="phase-info",s="pages-manifest.json",t="webpack-stats.json",u="app-paths-manifest.json",v="app-path-routes-manifest.json",w="build-manifest.json",x="functions-config-manifest.json",y="subresource-integrity-manifest",z="next-font-manifest",A="export-marker.json",B="export-detail.json",C="prerender-manifest.json",D="routes-manifest.json",E="images-manifest.json",F="required-server-files",G="_devPagesManifest.json",H="middleware-manifest.json",I="_clientMiddlewareManifest.json",J="client-build-manifest.json",K="_devMiddlewareManifest.json",L="react-loadable-manifest.json",M="server",N=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],O="BUILD_ID",P=["/_document","/_app","/_error"],Q="public",R="static",S="__NEXT_DROP_CLIENT_FILE__",T="__NEXT_BUILTIN_DOCUMENT__",U="__barrel_optimize__",V="client-reference-manifest",W="server-reference-manifest",X="middleware-build-manifest",Y="middleware-react-loadable-manifest",Z="interception-route-rewrite-manifest",$="dynamic-css-manifest",_="main",aa=`${_}-app`,ab="app-pages-internals",ac="react-refresh",ad="webpack",ae="polyfills",af=Symbol(ae),ag="webpack-runtime",ah="edge-runtime-webpack",ai="__N_SSG",aj="__N_SSP",ak={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},al={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},am=["/500"],an=1,ao=6e3,ap={client:"client",server:"server"},aq=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ar=new Set([_,ac,aa]);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},334327,(a,b,c)=>{b.exports=a.r(874492)},929689,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(334327);c.isBuild=function(){return process.env.NEXT_PHASE===d.PHASE_PRODUCTION_BUILD}},498934,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328);async function f(){try{e.DEBUG_BUILD&&d.debug.log("Flushing events..."),await d.flush(2e3),e.DEBUG_BUILD&&d.debug.log("Done flushing events")}catch(a){e.DEBUG_BUILD&&d.debug.log("Error while flushing events:\n",a)}}function g(){let a=Symbol.for("__cloudflare-context__");return d.GLOBAL_OBJ[a]?.ctx}function h(a){g()?.waitUntil(a)}function i(){return"function"==typeof g()?.waitUntil}c.cloudflareWaitUntil=h,c.flushSafelyWithTimeout=f,c.isCloudflareWaitUntilAvailable=i,c.waitUntil=function(a){i()?h(a):d.vercelWaitUntil(a)}},723136,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);function e(a){let b=a.split("/").filter(a=>a&&!(a.startsWith("(")&&a.endsWith(")")));return b.length>0?`/${b.join("/")}`:"/"}function f(a,b,c,f){let g=f??e(a),h=c?.["x-forwarded-proto"],i=c?.["x-forwarded-host"]||c?.host;if(!h||!i)return g;let j=`${h}://${i}${g}`,k=d.parseStringToURLObject(j);return k?d.getSanitizedUrlStringFromUrlObject(k):g}function g(a){let b=a?.referer;if(b)try{let a=new URL(b);return d.getSanitizedUrlStringFromUrlObject(a)}catch{return}}c.buildUrlFromComponentRoute=f,c.extractSanitizedUrlFromRefererHeader=g,c.getSanitizedRequestUrl=function(a,b,c,d){let e=g(c);return e||f(a,b,c,d)},c.sanitizeRoutePath=e,c.substituteRouteParams=function(a,b){return a}},816617,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(723136);c.setUrlProcessingMetadata=function(a){if("transaction"!==a.type||a.contexts?.trace?.op!=="http.server"||!a.contexts?.trace?.data)return;let b=d.getClient();if(!b?.getOptions().sendDefaultPii)return;let c=a.contexts.trace.data,f=c["next.route"]||c["http.route"],g=c["http.target"];if(!f)return;let h=a.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),i=h?.sdkProcessingMetadata?.normalizedRequest?.headers,j=e.getSanitizedRequestUrl(f,void 0,i,g?.toString());j&&h?.sdkProcessingMetadata&&(h.sdkProcessingMetadata.normalizedRequest=h.sdkProcessingMetadata.normalizedRequest||{},h.sdkProcessingMetadata.normalizedRequest.url=j)}},734080,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(814747);c.distDirRewriteFramesIntegration=d.defineIntegration(({distDirName:a})=>{let b=e.resolve(a).replace(/(\/|\\)$/,""),c=new RegExp(d.escapeStringForRegex(b));return{...d.rewriteFramesIntegration({iteratee:a=>(a.filename=a.filename?.replace(c,"app:///_next"),a)}),name:"DistDirRewriteFrames"}})},943167,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.addHeadersAsAttributes=function(a,b){if(!a)return{};let c=a instanceof Headers||"object"==typeof a&&"get"in a?d.winterCGHeadersToDict(a):a,e=d.httpHeadersToSpanAttributes(c,d.getClient()?.getOptions().sendDefaultPii??!1);return b&&b.setAttributes(e),e}},398359,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(960535),g=a.r(473132),h=a.r(268404),i=e.GLOBAL_OBJ;c.dropMiddlewareTunnelRequests=function(a,b){if(e.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let c=b?.[g.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",j=b?.[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",k=b?.[g.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!c&&!j&&!k)return;let l=function(a){let b=i._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!b)return!1;let c=a[d.SEMATTRS_HTTP_TARGET];if("string"==typeof c){let a=c.split("?")[0]||"";return a===b||a.startsWith(`${b}/`)}return!1}(b||{}),m=f.isSentryRequestSpan(a);(l||m)&&a.setAttribute(h.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},858952,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(357223),f=a.r(97153),g=a.r(373328),h=a.r(473132),i=a.r(268404),j="__PAGE__",k=new WeakMap;function l(a){return"NextNodeServer.getLayoutOrPageModule"===a[h.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===a[h.ATTR_NEXT_SPAN_NAME]&&"string"==typeof a[h.ATTR_NEXT_SEGMENT]}function m({segment:a,route:b}){return a===j?`resolve page server component "${b}"`:""===a?"resolve root layout server component":`resolve layout server component "${a}"`}c.commonObjectToIsolationScope=function(a){if("object"!=typeof a||!a)return new f.Scope;{let b=k.get(a);if(b)return b;{let b=new f.Scope;return k.set(a,b),b}}},c.dropNextjsRootContext=function(){if(f.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let a=f.getActiveSpan();if(a){let b=f.getRootSpan(a),c=f.spanToJSON(b).data;c?.["next.span_type"]&&f.getRootSpan(a)?.setAttribute(i.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},c.escapeNextjsTracing=function(a){let b=f.GLOBAL_OBJ.AsyncLocalStorage;return b?(d||(d=new b),d.getStore())?a():f.startNewTrace(()=>d.run(!0,()=>a())):(g.DEBUG_BUILD&&f.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),a())},c.getEnhancedResolveSegmentSpanName=m,c.isResolveSegmentSpan=l,c.maybeEnhanceServerComponentSpanName=function(a,b,c){if(!l(b))return;let d=b[h.ATTR_NEXT_SEGMENT],g=c[e.ATTR_HTTP_ROUTE],i=m({segment:d,route:"string"==typeof g?g:""});a.updateName(i),a.setAttributes({"sentry.nextjs.ssr.function.type":d===j?"Page":"Layout","sentry.nextjs.ssr.function.route":g}),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},431385,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328),f="sentry.cron.checkInId",g="sentry.cron.monitorSlug",h="sentry.cron.startTime",i="sentry.cron.schedule";c.maybeCompleteCronCheckIn=function(a){let b=d.spanToJSON(a).data,c=b?.[f],j=b?.[g],k=b?.[h],l=b?.[i];if(!c||!j||"number"!=typeof k)return;let m=d._INTERNAL_safeDateNow()/1e3-k,n=d.spanToJSON(a).status,o=n&&"ok"!==n?"error":"ok";d.captureCheckIn({checkInId:c,monitorSlug:j,status:o,duration:m},"string"==typeof l?{maxRuntime:720,schedule:{type:"crontab",value:l}}:void 0),a.setAttribute(f,void 0),a.setAttribute(g,void 0),a.setAttribute(h,void 0),a.setAttribute(i,void 0),e.DEBUG_BUILD&&d.debug.log(`[Cron] Completed check-in for "${j}" with status "${o}"`)},c.maybeStartCronCheckIn=function(a,b){let c=function(){let a=globalThis;if(a._sentryVercelCronsConfig)try{return JSON.parse(a._sentryVercelCronsConfig)}catch{e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!c||!b)return;let j=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!j)return;let k=Array.isArray(j["user-agent"])?j["user-agent"][0]:j["user-agent"];if(!k?.includes("vercel-cron"))return;let l=c.find(a=>a.path===b);if(!l?.path||!l.schedule)return;let m=l.path,n=d._INTERNAL_safeDateNow()/1e3,o=d.captureCheckIn({monitorSlug:m,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}});e.DEBUG_BUILD&&d.debug.log(`[Cron] Started check-in for "${m}" with ID "${o}"`),a.setAttribute(f,o),a.setAttribute(g,m),a.setAttribute(h,n),a.setAttribute(i,l.schedule)}},766711,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e="messaging.system",f="messaging.destination.name",g="messaging.operation.name",h="sentry.queue.enriched";function i(a,b){let c=a[b];return Array.isArray(c)?c[0]:c}c.maybeCleanupQueueSpan=function(a){let b=d.spanToJSON(a).data;b?.[h]&&a.setAttribute(h,void 0)},c.maybeEnrichQueueConsumerSpan=function(a){let b=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!b||"com.vercel.queue.v2beta"!==(Array.isArray(b["ce-type"])?b["ce-type"][0]:b["ce-type"]))return;let c=i(b,"ce-vqsqueuename"),j=i(b,"ce-vqsmessageid"),k=i(b,"ce-vqsconsumergroup"),l=i(b,"ce-vqsdeliverycount");if(a.setAttribute(e,"vercel.queue"),a.setAttribute(g,"process"),c&&a.setAttribute(f,c),j&&a.setAttribute("messaging.message.id",j),k&&a.setAttribute("messaging.consumer.group.name",k),l){let b=parseInt(l,10);isNaN(b)||a.setAttribute("messaging.message.delivery_count",b)}a.setAttribute(h,!0)},c.maybeEnrichQueueProducerSpan=function(a){let b,c=d.spanToJSON(a).data,i=c?.["url.full"];if(!i)return;try{b=new URL(i)}catch{return}if("vercel-queue.com"!==b.hostname&&!b.hostname.endsWith(".vercel-queue.com"))return;let j=b.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!j)return;let k=decodeURIComponent(j[1]);a.setAttribute(e,"vercel.queue"),a.setAttribute(f,k),a.setAttribute(g,"send"),a.setAttribute(h,!0)}},368517,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(357223),f=a.r(97153),g=a.r(960535),h=a.r(473132),i=a.r(943167),j=a.r(398359),k=a.r(858952),l=a.r(431385),m=a.r(766711);c.handleOnSpanStart=function(a){let b=f.spanToJSON(a).data,c=f.getRootSpan(a),n=f.spanToJSON(c).data,o=a===c;if(j.dropMiddlewareTunnelRequests(a,b),"string"==typeof b?.[h.ATTR_NEXT_ROUTE]&&(n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD])&&!n?.[e.ATTR_HTTP_ROUTE]){let a=b[h.ATTR_NEXT_ROUTE].replace(/\/route$/,"");c.updateName(a),c.setAttribute(e.ATTR_HTTP_ROUTE,a),c.setAttribute(h.ATTR_NEXT_ROUTE,a);let d=n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD];"string"==typeof d&&f.getIsolationScope().setTransactionName(`${d} ${a}`),l.maybeStartCronCheckIn(c,a),m.maybeEnrichQueueConsumerSpan(c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let d=b[h.ATTR_NEXT_SPAN_NAME];"string"==typeof d&&(c.updateName(d),c.setAttribute(e.ATTR_HTTP_ROUTE,d),c.setAttribute(h.ATTR_NEXT_SPAN_NAME,d)),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(b?.[h.ATTR_NEXT_SPAN_TYPE]!==void 0&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),o){let a=f.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;i.addHeadersAsAttributes(a,c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&o){let b=f.getCapturedScopesOnSpan(a),c=(b.isolationScope||f.getIsolationScope()).clone(),e=b.scope||f.getCurrentScope(),h=g.getScopesFromContext(d.context.active());h&&(h.isolationScope=c),f.setCapturedScopesOnSpan(a,e,c)}k.maybeEnhanceServerComponentSpanName(a,b,n),m.maybeEnrichQueueProducerSpan(a)}},58753,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328);function f(){let a=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:a}=process.getBuiltinModule("async_hooks")??{};return a}}();if(!a||"function"!=typeof a.snapshot){e.DEBUG_BUILD&&d.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return a.snapshot()}function g(a){return a instanceof Error&&a.message.includes("AsyncLocalStorage")}c.prepareSafeIdGeneratorContext=function(){let a=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),b=d.GLOBAL_OBJ,c=f();if(!c)return;let h=c;b[a]=a=>{try{return h(a)}catch(c){if(!g(c))throw c;let b=f();if(!b)return a();h=b;try{return h(a)}catch(b){if(!g(b))throw b;return a()}}},e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},535727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.captureUnderscoreErrorException=async function(a){let{req:b,res:c,err:f}=a,g=c?.statusCode||a.statusCode;if(g&&g<500||!a.pathname)return;if(f&&d.isAlreadyCaptured(f)){e.waitUntil(e.flushSafelyWithTimeout());let a="object"==typeof f?f.__sentry_event_id__:void 0;return"string"==typeof a?(d.getIsolationScope().setLastEventId(a),a):d.getIsolationScope().lastEventId()}let h=d.withScope(a=>{if(b){let c=d.httpRequestToRequestData(b);a.setSDKProcessingMetadata({normalizedRequest:c})}return d.captureException(f||`_error.js called with falsy error (${f})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return e.waitUntil(e.flushSafelyWithTimeout()),h}},720432,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.isUseCacheFunction=function(a){if(a.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:b}=function(a){let b=parseInt(a.slice(0,2),16),c=b>>1&63,d=Array(6);for(let a=0;a<6;a++){let b=c>>5-a&1;d[a]=1===b}return{type:1==(b>>7&1)?"use-cache":"server-action",usedArgs:d,hasRestArgs:1==(1&b)}}(a.$$id);return"use-cache"===b}},320495,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328),f=a.r(929689),g=a.r(720432);function h(a){let b=f.isBuild(),c=!!a&&g.isUseCacheFunction(a);return c&&e.DEBUG_BUILD&&d.debug.log("Skipping span creation in Cache Components context"),b||c}function i(){return new d.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}c.startInactiveSpan=function(a){return h()?i():d.startInactiveSpan(a)},c.startSpan=function(a,b){return h(b)?b(i()):d.startSpan(a,b)},c.startSpanManual=function(a,b){if(h(b)){let a=i();return b(a,()=>a.end())}return d.startSpanManual(a,b)}},734313,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(268404);c.callDataFetcherTraced=async function(a,b){try{return await a(...b)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),a}},c.withErrorInstrumentation=function(a){return async function(...b){try{return await a.apply(this,b)}catch(b){throw d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:a.name}}}),b}}},c.withTracedServerSideDataFetcher=function(a,b,c,f){return async function(...c){let g=d.httpRequestToRequestData(b);d.getCurrentScope().setTransactionName(`${f.dataFetchingMethodName} (${f.dataFetcherRouteName})`),d.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g});let h=d.getActiveSpan();h&&"/_error"!==f.requestedRouteName&&d.getRootSpan(h).setAttribute(e.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,f.requestedRouteName);let{"sentry-trace":i,baggage:j}=d.getTraceData();return{sentryTrace:i,baggage:j,data:await a.apply(this,c)}}}},772759,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetStaticPropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let f=e.withErrorInstrumentation(a);return e.callDataFetcherTraced(f,c)}})}},244416,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:f.pathname,requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c)??{};return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},823519,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapAppGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f.ctx,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_app",requestedRouteName:f.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,sentryTrace:j,baggage:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(d.pageProps||(d.pageProps={}),j&&(d.pageProps._sentryTraceData=j),k&&(d.pageProps._sentryBaggage=k)),d}}})}},534813,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapDocumentGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_document",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d}=await a.apply(b,c);return d}}})}},772851,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapErrorGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_error",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},774424,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetServerSidePropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,c,f)=>{if(d.isBuild())return a.apply(c,f);let[g]=f,{req:h,res:i}=g,j=e.withErrorInstrumentation(a),k=e.withTracedServerSideDataFetcher(j,h,i,{dataFetcherRouteName:b,requestedRouteName:b,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:m,sentryTrace:n}=await k.apply(c,f);return"object"==typeof l&&null!==l&&"props"in l&&(n&&(l.props._sentryTraceData=n),m&&(l.props._sentryBaggage=m)),l}})}},971876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.isNotFoundNavigationError=function(a){return d.isError(a)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(a.digest)},c.isRedirectNavigationError=function(a){return d.isError(a)&&"string"==typeof a.digest&&a.digest.startsWith("NEXT_REDIRECT;")}},538357,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);c.wrapServerComponentWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h=d.getIsolationScope(),i=b.headers?d.winterCGHeadersToDict(b.headers):void 0;return h.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g}=b,i=!0;h.setTransactionName(`${g} Server Component (${f})`),c&&(e.isNotFoundNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),i&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},18905,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);a.r(858952),c.wrapRouteHandlerWithSentry=function(a,b){let{method:c,parameterizedRoute:g,headers:h}=b;return new Proxy(a,{apply:async(a,b,h)=>{let i=d.getActiveSpan(),j=i?d.getRootSpan(i):void 0;return d.withIsolationScope(d.getIsolationScope(),()=>d.withScope(async k=>{k.setTransactionName(`${c} ${g}`);let l=await d.handleCallbackErrors(()=>a.apply(b,h),a=>{e.isRedirectNavigationError(a)||(e.isNotFoundNavigationError(a)?(i&&d.setHttpStatus(i,404),j&&d.setHttpStatus(j,404)):d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{f.waitUntil(f.flushSafelyWithTimeout())});try{l.status&&(i&&d.setHttpStatus(i,l.status),j&&d.setHttpStatus(j,l.status))}catch{}return l}))}})}},573248,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.wrapApiHandlerWithSentryVercelCrons=function(a,b){return new Proxy(a,{apply:(a,c,e)=>{let f;if(!e?.[0])return a.apply(c,e);let[g]=e,h="nextUrl"in g?g.nextUrl.pathname:g.url,i="nextUrl"in g?g.headers.get("user-agent"):g.headers["user-agent"];if(!b||!i?.includes("vercel-cron"))return a.apply(c,e);let j=b.find(a=>a.path===h);if(!j?.path||!j.schedule)return a.apply(c,e);let k=j.path,l=d.captureCheckIn({monitorSlug:k,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:j.schedule}}),m=d._INTERNAL_safeDateNow()/1e3,n=()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"error",duration:d._INTERNAL_safeDateNow()/1e3-m})};try{f=a.apply(c,e)}catch(a){throw n(),a}return"object"==typeof f&&null!==f&&"then"in f?Promise.resolve(f).then(()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m})},()=>{n()}):d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m}),f}})}},918691,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.wrapMiddlewareWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{let f="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(f&&"string"==typeof f){let a=c[0];if(a instanceof Request&&new URL(a.url).pathname.startsWith(f))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return d.withIsolationScope(f=>{let g,h,i=c[0],j=d.getCurrentScope();i instanceof Request?(f.setSDKProcessingMetadata({normalizedRequest:d.winterCGRequestToRequestData(i)}),g=`middleware ${i.method}`,h="url"):(g="middleware",h="component"),j.setTransactionName(g);let k=d.getActiveSpan();if(k){g="middleware",h="component";let a=d.getRootSpan(k);a&&d.setCapturedScopesOnSpan(a,j,f)}return d.startSpan({name:g,op:"http.server.middleware",attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h,[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>d.handleCallbackErrors(()=>a.apply(b,c),a=>{d.captureException(a,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{e.waitUntil(e.flushSafelyWithTimeout())}))})}})}},131427,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);function e(a,b){a&&"object"==typeof a&&d.addNonEnumerableProperty(a,"__sentry_event_id__",b)}c.wrapPageComponentWithSentry=function(a){return"function"==typeof a&&a?.prototype?.isReactComponent?class extends a{render(...a){return d.withIsolationScope(()=>{let b=d.getCurrentScope(),c="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(c){let a=d.extractTraceparentData(c);b.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return super.render(...a)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw e(b,a),b}})}}:"function"==typeof a?new Proxy(a,{apply:(a,b,c)=>d.withIsolationScope(()=>{let f=d.getCurrentScope(),g=c?.[0]?._sentryTraceData;if(g){let a=d.extractTraceparentData(g);f.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return a.apply(b,c)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw e(b,a),b}})}):a}},708403,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);c.wrapGenerationFunctionWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h,i=d.getIsolationScope();try{h=b.requestAsyncStorage?.getStore()?.headers}catch{}let j=h?d.winterCGHeadersToDict(h):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:j}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g,generationFunctionIdentifier:h}=b,j=!0;i.setTransactionName(`${g}.${h} (${f})`),c&&(e.isNotFoundNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),j&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:h}}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},603642,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934),f=a.r(373328),g=a.r(971876);async function h(a,b,c){return d.withIsolationScope(async h=>{let i,j,k=d.getClient()?.getOptions().sendDefaultPii,l={};try{let a=await b.headers;i=a?.get("sentry-trace")??void 0,j=a?.get("baggage"),a?.forEach((a,b)=>{l[b]=a})}catch{f.DEBUG_BUILD&&d.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return h.setTransactionName(`serverAction/${a}`),h.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:i,baggage:j},async()=>{try{return await d.startSpan({op:"function.server_action",name:`serverAction/${a}`,forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async a=>{let e=await d.handleCallbackErrors(c,b=>{g.isNotFoundNavigationError(b)?a.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"}):g.isRedirectNavigationError(b)||(a.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"}),d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==b.recordResponse?b.recordResponse:k)&&d.getIsolationScope().setExtra("server_action_result",e),b.formData&&b.formData.forEach((a,b)=>{d.getIsolationScope().setExtra(`server_action_form_data.${b}`,"string"==typeof a?a:"[non-string value]")}),e})}finally{e.waitUntil(e.flushSafelyWithTimeout())}})})}c.withServerActionInstrumentation=function(...a){if("function"==typeof a[1]){let[b,c]=a;return h(b,{},c)}{let[b,c,d]=a;return h(b,c,d)}}},506983,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.captureRequestError=function(a,b,c){d.withScope(f=>{f.setSDKProcessingMetadata({normalizedRequest:{headers:d.headersToDict(b.headers),method:b.method}}),f.setContext("nextjs",{request_path:b.path,router_kind:c.routerKind,router_path:c.routePath,route_type:c.routeType}),f.setTransactionName(`${b.method} ${c.routePath}`),d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),e.waitUntil(e.flushSafelyWithTimeout())})}},12234,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934),f=a.r(858952);c.wrapApiHandlerWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>(f.dropNextjsRootContext(),f.escapeNextjsTracing(()=>{let[f,h]=g;return f?h?f.__withSentry_applied__?a.apply(c,g):(f.__withSentry_applied__=!0,d.withIsolationScope(i=>(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:f.headers&&d.isString(f.headers["sentry-trace"])?f.headers["sentry-trace"]:void 0,baggage:f.headers?.baggage},()=>{let j=`${(f.method||"GET").toUpperCase()} `,k=d.httpRequestToRequestData(f);return i.setSDKProcessingMetadata({normalizedRequest:k}),i.setTransactionName(`${j}${b}`),d.startSpanManual({name:`${j}${b}`,op:"http.server",forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async b=>{h.end=new Proxy(h.end,{apply:(a,c,f)=>(d.setHttpStatus(b,h.statusCode),b.end(),e.waitUntil(e.flushSafelyWithTimeout()),a.apply(c,f))});try{return await a.apply(c,g)}catch(f){let c=d.objectify(f);throw d.captureException(c,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:a.name,function:"withSentry"}}}),d.setHttpStatus(b,500),b.end(),await e.flushSafelyWithTimeout(),c}})}))):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a response object. Will not instrument.`),a.apply(c,g)):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a request object. Will not instrument.`),a.apply(c,g))}))})}},797822,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(874208),g=a.r(373328);a.r(967602);let h=a.r(562293),i=a.r(473132),j=a.r(268404),k=a.r(929689),l=a.r(498934),m=a.r(816617),n=a.r(734080),o=a.r(368517),p=a.r(58753),q=a.r(431385),r=a.r(766711),s=a.r(535727),t=a.r(320495),u=a.r(772759),v=a.r(244416),w=a.r(823519),x=a.r(534813),y=a.r(772851),z=a.r(774424),A=a.r(538357),B=a.r(18905),C=a.r(573248),D=a.r(918691),E=a.r(131427),F=a.r(708403),G=a.r(603642),H=a.r(506983),I=a.r(12234);e.GLOBAL_OBJ,c.captureUnderscoreErrorException=s.captureUnderscoreErrorException,c.startInactiveSpan=t.startInactiveSpan,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.wrapGetStaticPropsWithSentry=u.wrapGetStaticPropsWithSentry,c.wrapGetInitialPropsWithSentry=v.wrapGetInitialPropsWithSentry,c.wrapAppGetInitialPropsWithSentry=w.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=x.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=y.wrapErrorGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=z.wrapGetServerSidePropsWithSentry,c.wrapServerComponentWithSentry=A.wrapServerComponentWithSentry,c.wrapRouteHandlerWithSentry=B.wrapRouteHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,c.wrapMiddlewareWithSentry=D.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=E.wrapPageComponentWithSentry,c.wrapGenerationFunctionWithSentry=F.wrapGenerationFunctionWithSentry,c.withServerActionInstrumentation=G.withServerActionInstrumentation,c.captureRequestError=H.captureRequestError,c.wrapApiHandlerWithSentry=I.wrapApiHandlerWithSentry,c.ErrorBoundary=a=>a.children?"function"==typeof a.children?a.children():a.children:null,c.createReduxEnhancer=function(){return a=>a},c.init=function(a){if(p.prepareSafeIdGeneratorContext(),k.isBuild())return;!g.DEBUG_BUILD&&a.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let b=f.getDefaultIntegrations(a).filter(a=>"Http"!==a.name).concat(f.httpIntegration({disableIncomingRequestSpans:!0}));a.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),b.push(n.distDirRewriteFramesIntegration({distDirName:".next"}));let c=function(){if(l.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),s={environment:a.environment||process.env.SENTRY_ENVIRONMENT||h.getVercelEnv(!1)||"production",release:"9dad66acd3deb36c6e51fae1fdce6de96dd992c7",defaultIntegrations:b,...a,...c};if(g.DEBUG_BUILD&&s.debug&&e.debug.enable(),g.DEBUG_BUILD&&e.debug.log("Initializing SDK..."),e.getClient()){g.DEBUG_BUILD&&e.debug.log("SDK already initialized");return}e.applySdkMetadata(s,"nextjs",["nextjs",c?"cloudflare":"node"]);let t=f.init(s);t?.on("beforeSampling",({spanAttributes:a},b)=>{("string"==typeof a[d.SEMATTRS_HTTP_TARGET]&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof a[d.ATTR_URL_QUERY]&&a[d.ATTR_URL_QUERY].includes("sentry_key")&&a[d.ATTR_URL_QUERY].includes("sentry_client"))&&(b.decision=!1)}),t?.on("spanStart",o.handleOnSpanStart),t?.on("spanEnd",q.maybeCompleteCronCheckIn),t?.on("spanEnd",r.maybeCleanupQueueSpan),e.getGlobalScope().addEventProcessor(Object.assign(a=>{if("transaction"!==a.type)return a;if(a.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||a.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===a.transaction||a.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===a.transaction)return null;if("string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(b?.parentSampled===!1)return null}return a},{id:"NextLowQualityTransactionsFilter"})),e.getGlobalScope().addEventProcessor(Object.assign((a,b)=>{if(void 0!==a.type)return a;let c=b.originalException;if("object"==typeof c&&null!==c&&"$$typeof"in c&&c.$$typeof===Symbol.for("react.postpone"))return null;let d=a.exception?.values?.[0]?.value;return d?.includes("Suspense Exception: This is not a real error!")||d?.includes("Suspense Exception: This is not a real error, and should not leak")?null:a},{id:"DropReactControlFlowErrors"})),t?.on("preprocessEvent",a=>{if("transaction"===a.type&&a.contexts?.trace?.data?.[i.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",a.contexts.trace.op="http.server",a.transaction&&(a.transaction=e.stripUrlQueryAndFragment(a.transaction));let b=a.contexts.trace.data[d.SEMATTRS_HTTP_METHOD],c=a.contexts?.trace?.data?.[d.SEMATTRS_HTTP_TARGET],f=a.contexts.trace.data[d.ATTR_HTTP_ROUTE]||a.contexts.trace.data[i.ATTR_NEXT_ROUTE],g=a.contexts.trace.data[i.ATTR_NEXT_SPAN_NAME];if("string"==typeof b&&"string"==typeof f&&!f.startsWith("middleware")){let c=f.replace(/\/route$/,"");a.transaction=`${b} ${c}`,a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",a.contexts.trace.data[i.ATTR_NEXT_ROUTE]=c}a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==a.transaction&&(a.transaction=`${b} ${a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let h="string"==typeof g&&g.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);h&&(a.transaction=`middleware ${h[1]}`,a.contexts.trace.op="http.server.middleware"),"GET /_error"===a.transaction&&c&&(a.transaction=`${b?`${b} `:""}${c}`)}if("transaction"===a.type&&"string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);b?.traceId&&(a.contexts.trace.trace_id=b.traceId),b?.parentSpanId&&(a.contexts.trace.parent_span_id=b.parentSpanId)}m.setUrlProcessingMetadata(a)});try{e.getGlobalScope().setTag("turbopack",!0)}catch{}return g.DEBUG_BUILD&&e.debug.log("SDK successfully initialized"),t},c.showReportDialog=function(){},c.withErrorBoundary=function(a){return a},Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})},17814,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(114530),e=a.r(797822),f=a.r(874208),g=a.r(506983),h=a.r(535727),i=a.r(320495),j=a.r(603642),k=a.r(12234),l=a.r(573248),m=a.r(823519),n=a.r(534813),o=a.r(772851),p=a.r(708403),q=a.r(244416),r=a.r(774424),s=a.r(772759),t=a.r(918691),u=a.r(131427),v=a.r(18905),w=a.r(538357);c.withSentryConfig=d.withSentryConfig,c.ErrorBoundary=e.ErrorBoundary,c.createReduxEnhancer=e.createReduxEnhancer,c.init=e.init,c.showReportDialog=e.showReportDialog,c.withErrorBoundary=e.withErrorBoundary,c.captureRequestError=g.captureRequestError,c.captureUnderscoreErrorException=h.captureUnderscoreErrorException,c.startInactiveSpan=i.startInactiveSpan,c.startSpan=i.startSpan,c.startSpanManual=i.startSpanManual,c.withServerActionInstrumentation=j.withServerActionInstrumentation,c.wrapApiHandlerWithSentry=k.wrapApiHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=l.wrapApiHandlerWithSentryVercelCrons,c.wrapAppGetInitialPropsWithSentry=m.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=n.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=o.wrapErrorGetInitialPropsWithSentry,c.wrapGenerationFunctionWithSentry=p.wrapGenerationFunctionWithSentry,c.wrapGetInitialPropsWithSentry=q.wrapGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=r.wrapGetServerSidePropsWithSentry,c.wrapGetStaticPropsWithSentry=s.wrapGetStaticPropsWithSentry,c.wrapMiddlewareWithSentry=t.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=u.wrapPageComponentWithSentry,c.wrapRouteHandlerWithSentry=v.wrapRouteHandlerWithSentry,c.wrapServerComponentWithSentry=w.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})}]; +Mongoose Error Code: ${b.code}`:""}`})}function i(a,b,c,f){c&&(0,e.safeExecuteInTheMiddle)(()=>c(a,{moduleVersion:f,response:b}),a=>{a&&d.diag.error("mongoose instrumentation: responseHook error",a)},!0)}c.getAttributesFromCollection=function(a,b,c){let d={};return b&e.SemconvStability.OLD&&(d[f.ATTR_DB_MONGODB_COLLECTION]=a.name,d[f.ATTR_DB_NAME]=a.conn.name,d[f.ATTR_DB_USER]=a.conn.user),b&e.SemconvStability.STABLE&&(d[g.ATTR_DB_COLLECTION_NAME]=a.name,d[g.ATTR_DB_NAMESPACE]=a.conn.name),c&e.SemconvStability.OLD&&(d[f.ATTR_NET_PEER_NAME]=a.conn.host,d[f.ATTR_NET_PEER_PORT]=a.conn.port),c&e.SemconvStability.STABLE&&(d[g.ATTR_SERVER_ADDRESS]=a.conn.host,d[g.ATTR_SERVER_PORT]=a.conn.port),d},c.handlePromiseResponse=function(a,b,c,d){return a instanceof Promise?a.then(a=>(i(b,a,c,d),a)).catch(a=>{throw h(b,a),a}).finally(()=>b.end()):(i(b,a,c,d),b.end(),a)},c.handleCallbackResponse=function(a,b,c,d,e,f,g){let j=0;return 2===e.length?j=1:3===e.length&&(j=2),e[j]=(b,c)=>(b?h(d,b):i(d,c,f,g),d.end(),a(b,c)),b.apply(c,e)}},879045,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},22751,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=c._ALREADY_INSTRUMENTED=c._STORED_PARENT_SPAN=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(6977),g=a.r(621472),h=a.r(879045),i=a.r(324007),j=a.r(357223),k=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],l=["remove","count","findOneAndRemove",...k],m=["count","findOneAndRemove",...k],n=[...k];function o(a){return a?a.startsWith("6.")||a.startsWith("5.")?l:a.startsWith("7.")?m:n:k}function p(a){return a&&(a.startsWith("5.")||a.startsWith("6."))||!1}function q(a){return!!a&&!!a.startsWith("8.")&&parseInt(a.split(".")[1],10)>=21}c._STORED_PARENT_SPAN=Symbol("stored-parent-span"),c._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class r extends g.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,g.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new g.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a;return this._wrap(c.Model.prototype,"save",this.patchOnModelMethods("save",b)),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._wrap(c.Model.prototype,"remove",this.patchOnModelMethods("remove",b)),q(b)&&(this._wrap(c.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",b)),this._wrap(c.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",b))),this._wrap(c.Query.prototype,"exec",this.patchQueryExec(b)),this._wrap(c.Aggregate.prototype,"exec",this.patchAggregateExec(b)),o(b).forEach(a=>{this._wrap(c.Query.prototype,a,this.patchAndCaptureSpanContext(a))}),this._wrap(c.Model,"aggregate",this.patchModelAggregate()),this._wrap(c.Model,"insertMany",this.patchModelStatic("insertMany",b)),this._wrap(c.Model,"bulkWrite",this.patchModelStatic("bulkWrite",b)),c}unpatch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a,d=o(b);this._unwrap(c.Model.prototype,"save"),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._unwrap(c.Model.prototype,"remove"),q(b)&&(this._unwrap(c.Model.prototype,"updateOne"),this._unwrap(c.Model.prototype,"deleteOne")),this._unwrap(c.Query.prototype,"exec"),this._unwrap(c.Aggregate.prototype,"exec"),d.forEach(a=>{this._unwrap(c.Query.prototype,a)}),this._unwrap(c.Model,"aggregate"),this._unwrap(c.Model,"insertMany"),this._unwrap(c.Model,"bulkWrite")}patchAggregateExec(a){let b=this;return e=>function(f){if(b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l("aggregate",{options:this.options,aggregatePipeline:this._pipeline});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this._model.collection,this._model?.modelName,"aggregate",k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchQueryExec(a){let b=this;return e=>function(f){if(this[c._ALREADY_INSTRUMENTED]||b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this.mongooseCollection,this.model.modelName,this.op,k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchOnModelMethods(a,b){let c=this;return e=>function(f,h){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let k={document:this};!f||f instanceof Function||(k.options=f);let l={},{dbStatementSerializer:m}=c.getConfig();if(m){let b=m(a,k);c._dbSemconvStability&g.SemconvStability.OLD&&(l[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(l[j.ATTR_DB_QUERY_TEXT]=b)}let n=c._startSpan(this.constructor.collection,this.constructor.modelName,a,l);return f instanceof Function&&(h=f,f=void 0),c._handleResponse(n,e,this,arguments,h,b)}}_patchDocumentUpdateMethods(a,b){let e=this;return f=>function(h,k,l){if(e.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return f.apply(this,arguments);let m=l,n=h,o=k;"function"==typeof h?(m=h,n=void 0,o=void 0):"function"==typeof k&&(m=k,o=void 0);let p={},q=e.getConfig().dbStatementSerializer;if(q){let b=q(a,{condition:{_id:this._id},updates:n,options:o});e._dbSemconvStability&g.SemconvStability.OLD&&(p[i.ATTR_DB_STATEMENT]=b),e._dbSemconvStability&g.SemconvStability.STABLE&&(p[j.ATTR_DB_QUERY_TEXT]=b)}let r=e._startSpan(this.constructor.collection,this.constructor.modelName,a,p),s=e._handleResponse(r,f,this,arguments,m,b);return s&&"object"==typeof s&&(s[c._ALREADY_INSTRUMENTED]=!0),s}}patchModelStatic(a,b){let c=this;return e=>function(f,h,k){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);"function"==typeof h&&(k=h,h=void 0);let l={};switch(a){case"insertMany":l.documents=f;break;case"bulkWrite":l.operations=f;break;default:l.document=f}void 0!==h&&(l.options=h);let m={},{dbStatementSerializer:n}=c.getConfig();if(n){let b=n(a,l);c._dbSemconvStability&g.SemconvStability.OLD&&(m[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(m[j.ATTR_DB_QUERY_TEXT]=b)}let o=c._startSpan(this.collection,this.modelName,a,m);return c._handleResponse(o,e,this,arguments,k,b)}}patchModelAggregate(){let a=this;return b=>function(){let e=d.trace.getSpan(d.context.active()),f=a._callOriginalFunction(()=>b.apply(this,arguments));return f&&(f[c._STORED_PARENT_SPAN]=e),f}}patchAndCaptureSpanContext(a){let b=this;return a=>function(){return this[c._STORED_PARENT_SPAN]=d.trace.getSpan(d.context.active()),b._callOriginalFunction(()=>a.apply(this,arguments))}}_startSpan(a,b,c,e,h){let k={...e,...(0,f.getAttributesFromCollection)(a,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_OPERATION]=c,k[i.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_OPERATION_NAME]=c,k[j.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MONGODB);let l=this._dbSemconvStability&g.SemconvStability.STABLE?`${c} ${a.name}`:`mongoose.${b}.${c}`;return this.tracer.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:k},h?d.trace.setSpan(d.context.active(),h):void 0)}_handleResponse(a,b,c,d,e,g){let h=this;if(e instanceof Function)return h._callOriginalFunction(()=>(0,f.handleCallbackResponse)(e,b,c,a,d,h.getConfig().responseHook,g));{let e=h._callOriginalFunction(()=>b.apply(c,d));return(0,f.handlePromiseResponse)(e,a,h.getConfig().responseHook,g)}}_callOriginalFunction(a){return this.getConfig().suppressInternalInstrumentation?d.context.with((0,e.suppressTracing)(d.context.active()),a):a()}}c.MongooseInstrumentation=r},63680,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=void 0;var d=a.r(22751);Object.defineProperty(c,"MongooseInstrumentation",{enumerable:!0,get:function(){return d.MongooseInstrumentation}})},473965,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(63680),e=a.r(97153),f=a.r(829770),g="Mongoose",h=f.generateInstrumentOnce(g,()=>new d.MongooseInstrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongoose")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMongoose=h,c.mongooseIntegration=i},117257,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},849068,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(c.AttributeNames||(c.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},101776,(a,b,c)=>{"use strict";function d(a){return a?`[${a.toString()}]`:""}Object.defineProperty(c,"__esModule",{value:!0}),c.getPoolNameOld=c.arrayStringifyHelper=c.getSpanName=c.getDbValues=c.getDbQueryText=c.getJDBCString=c.getConfig=void 0,c.getConfig=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}},c.getJDBCString=function(a,b,c){let d=`jdbc:mysql://${a||"localhost"}`;return"number"==typeof b&&(d+=`:${b}`),"string"==typeof c&&(d+=`/${c}`),d},c.getDbQueryText=function(a){return"string"==typeof a?a:a.sql},c.getDbValues=function(a,b){return"string"==typeof a?d(b):d(b||a.values)},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.arrayStringifyHelper=d,c.getPoolNameOld=function(a){let b=a.config.connectionConfig,c="";return c+=b.host?`host: '${b.host}', `:"",c+=b.port?`port: ${b.port}, `:"",c+=b.database?`database: '${b.database}', `:"",c+=b.user?`user: '${b.user}'`:"",b.user||(c=c.substring(0,c.length-2)),c.trim()}},880731,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},176475,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(117257),h=a.r(849068),i=a.r(101776),j=a.r(880731);class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsageOld?.add(a,{state:c,name:b})}init(){return[new e.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],a=>((0,e.isWrapped)(a.createConnection)&&this._unwrap(a,"createConnection"),this._wrap(a,"createConnection",this._patchCreateConnection()),(0,e.isWrapped)(a.createPool)&&this._unwrap(a,"createPool"),this._wrap(a,"createPool",this._patchCreatePool()),(0,e.isWrapped)(a.createPoolCluster)&&this._unwrap(a,"createPoolCluster"),this._wrap(a,"createPoolCluster",this._patchCreatePoolCluster()),a),a=>{void 0!==a&&(this._unwrap(a,"createConnection"),this._unwrap(a,"createPool"),this._unwrap(a,"createPoolCluster"))})]}_patchCreateConnection(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),d}}}_patchCreatePool(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"end",b._patchPoolEnd(d)),b._setPoolCallbacks(d,""),d}}}_patchPoolEnd(a){return b=>{let c=this;return function(d){let e=a._allConnections.length,f=a._freeConnections.length,g=(0,i.getPoolNameOld)(a);c._connCountAdd(-(e-f),g,"used"),c._connCountAdd(-f,g,"idle"),b.apply(a,arguments)}}}_patchCreatePoolCluster(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"add",b._patchAdd(d)),d}}}_patchAdd(a){return b=>{let c=this;return function(d,e){if(!c._enabled)return c._unwrap(a,"add"),b.apply(a,arguments);b.apply(a,arguments);let f=a._nodes;if(f){let b=f["object"==typeof d?"CLUSTER::"+a._lastId:String(d)].pool;c._setPoolCallbacks(b,d)}}}}_patchGetConnection(a){return b=>{let c=this;return function(d,e,f){if(!c._enabled)return c._unwrap(a,"getConnection"),b.apply(a,arguments);if(1==arguments.length&&"function"==typeof d){let e=c._getConnectionCallbackPatchFn(d);return b.call(a,e)}if(2==arguments.length&&"function"==typeof e){let f=c._getConnectionCallbackPatchFn(e);return b.call(a,d,f)}if(3==arguments.length&&"function"==typeof f){let g=c._getConnectionCallbackPatchFn(f);return b.call(a,d,e,g)}return b.apply(a,arguments)}}}_getConnectionCallbackPatchFn(a){let b=this,c=d.context.active();return function(f,g){g&&!(0,e.isWrapped)(g.query)&&b._wrap(g,"query",b._patchQuery(g)),"function"==typeof a&&d.context.with(c,a,this,f,g)}}_patchQuery(a){return b=>{let c=this;return function(j,k,l){if(!c._enabled)return c._unwrap(a,"query"),b.apply(a,arguments);let m={},{host:n,port:o,database:p,user:q}=(0,i.getConfig)(a.config),r=parseInt(o,10),s=(0,i.getDbQueryText)(j);c._dbSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MYSQL,m[g.ATTR_DB_CONNECTION_STRING]=(0,i.getJDBCString)(n,o,p),m[g.ATTR_DB_NAME]=p,m[g.ATTR_DB_USER]=q,m[g.ATTR_DB_STATEMENT]=s),c._dbSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_DB_SYSTEM_NAME]=f.DB_SYSTEM_NAME_VALUE_MYSQL,m[f.ATTR_DB_NAMESPACE]=p,m[f.ATTR_DB_QUERY_TEXT]=s),c._netSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_NET_PEER_NAME]=n,isNaN(r)||(m[g.ATTR_NET_PEER_PORT]=r)),c._netSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_SERVER_ADDRESS]=n,isNaN(r)||(m[f.ATTR_SERVER_PORT]=r));let t=c.tracer.startSpan((0,i.getSpanName)(j),{kind:d.SpanKind.CLIENT,attributes:m});if(c.getConfig().enhancedDatabaseReporting){let a;Array.isArray(k)?a=k:arguments[2]&&(a=[k]),t.setAttribute(h.AttributeNames.MYSQL_VALUES,(0,i.getDbValues)(j,a))}let u=Array.from(arguments).findIndex(a=>"function"==typeof a),v=d.context.active();if(-1!==u)return c._wrap(arguments,u,c._patchCallbackQuery(t,v)),d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));{let c=d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));return d.context.bind(v,c),c.on("error",a=>t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message})).on("end",()=>{t.end()})}}}}_patchCallbackQuery(a,b){return c=>function(e,f,g){return e&&a.setStatus({code:d.SpanStatusCode.ERROR,message:e.message}),a.end(),d.context.with(b,()=>c(...arguments))}}_setPoolCallbacks(a,b){let c=b||(0,i.getPoolNameOld)(a);a.on("connection",a=>{this._connCountAdd(1,c,"idle")}),a.on("acquire",a=>{this._connCountAdd(-1,c,"idle"),this._connCountAdd(1,c,"used")}),a.on("release",a=>{this._connCountAdd(1,c,"idle"),this._connCountAdd(-1,c,"used")})}}c.MySQLInstrumentation=k},669807,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;var d=a.r(176475);Object.defineProperty(c,"MySQLInstrumentation",{enumerable:!0,get:function(){return d.MySQLInstrumentation}})},848855,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(669807),e=a.r(97153),f=a.r(829770),g="Mysql",h=f.generateInstrumentOnce(g,()=>new d.MySQLInstrumentation({})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql=h,c.mysqlIntegration=i},361795,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql"},780071,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.addSqlCommenterComment=void 0;let d=a.r(854230),e=a.r(35492);c.addSqlCommenterComment=function(a,b){let c;if("string"!=typeof b||0===b.length||(c=b.indexOf("--"))>=0||!(0>b.indexOf("/*"))&&c{let b=encodeURIComponent(g[a]).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`);return`${a}='${b}'`}).join(",");return`${b} /*${i}*/`}},538335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getConnectionPrototypeToInstrument=c.once=c.getSpanName=c.getQueryText=c.getConnectionAttributes=void 0;let d=a.r(361795),e=a.r(621472),f=a.r(357223);function g(a){return a.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}c.getConnectionAttributes=function(a,b,c){var g,h,i;let j,{host:k,port:l,database:m,user:n}=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}}(a),o={};b&e.SemconvStability.OLD&&(o[d.ATTR_DB_CONNECTION_STRING]=(g=k,h=l,i=m,j=`jdbc:mysql://${g||"localhost"}`,"number"==typeof h&&(j+=`:${h}`),"string"==typeof i&&(j+=`/${i}`),j),o[d.ATTR_DB_NAME]=m,o[d.ATTR_DB_USER]=n),b&e.SemconvStability.STABLE&&(o[f.ATTR_DB_NAMESPACE]=m);let p=parseInt(l,10);return c&e.SemconvStability.OLD&&(o[d.ATTR_NET_PEER_NAME]=k,isNaN(p)||(o[d.ATTR_NET_PEER_PORT]=p)),c&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=k,isNaN(p)||(o[f.ATTR_SERVER_PORT]=p)),o},c.getQueryText=function(a,b,c,d=!1,e=g){let[f,h]="string"==typeof a?[a,c]:[a.sql,"values"in a?c||a.values:c];try{if(d)return e(f);if(b&&h)return b(f,h);return f}catch(a){return"Could not determine the query due to an error in masking or formatting"}},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}},c.getConnectionPrototypeToInstrument=function(a){let b=a.prototype,c=Object.getPrototypeOf(b);return"function"==typeof c?.query&&"function"==typeof c?.execute?c:b}},229514,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},249556,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(361795),g=a.r(780071),h=a.r(538335),i=a.r(229514),j=a.r(357223),k=[">=1.4.2 <4"];class l extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let a;function b(b){!a&&b.format&&(a=b.format)}let c=b=>{(0,e.isWrapped)(b.query)&&this._unwrap(b,"query"),this._wrap(b,"query",this._patchQuery(a,!1)),(0,e.isWrapped)(b.execute)&&this._unwrap(b,"execute"),this._wrap(b,"execute",this._patchQuery(a,!0))},d=a=>{this._unwrap(a,"query"),this._unwrap(a,"execute")};return[new e.InstrumentationNodeModuleDefinition("mysql2",k,a=>(b(a),a),()=>{},[new e.InstrumentationNodeModuleFile("mysql2/promise.js",k,a=>(b(a),a),()=>{}),new e.InstrumentationNodeModuleFile("mysql2/lib/connection.js",k,a=>(c((0,h.getConnectionPrototypeToInstrument)(a)),a),a=>{void 0===a||d((0,h.getConnectionPrototypeToInstrument)(a))})])]}_patchQuery(a,b){return c=>{let i=this;return function(k,l,m){let n;Array.isArray(l)?n=l:arguments[2]&&(n=[l]);let{maskStatement:o,maskStatementHook:p,responseHook:q}=i.getConfig(),r=(0,h.getConnectionAttributes)(this.config,i._dbSemconvStability,i._netSemconvStability),s=(0,h.getQueryText)(k,a,n,o,p);i._dbSemconvStability&e.SemconvStability.OLD&&(r[f.ATTR_DB_SYSTEM]=f.DB_SYSTEM_VALUE_MYSQL,r[f.ATTR_DB_STATEMENT]=s),i._dbSemconvStability&e.SemconvStability.STABLE&&(r[j.ATTR_DB_SYSTEM_NAME]=j.DB_SYSTEM_NAME_VALUE_MYSQL,r[j.ATTR_DB_QUERY_TEXT]=s);let t=i.tracer.startSpan((0,h.getSpanName)(k),{kind:d.SpanKind.CLIENT,attributes:r});!b&&i.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=k="string"==typeof k?(0,g.addSqlCommenterComment)(t,k):Object.assign(k,{sql:(0,g.addSqlCommenterComment)(t,k.sql)}));let u=(0,h.once)((a,b)=>{a?t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}):"function"==typeof q&&(0,e.safeExecuteInTheMiddle)(()=>{q(t,{queryResults:b})},a=>{a&&i._diag.warn("Failed executing responseHook",a)},!0),t.end()});if(1==arguments.length){"function"==typeof k.onResult&&i._wrap(k,"onResult",i._patchCallbackQuery(u));let a=c.apply(this,arguments);return a.once("error",a=>{u(a)}).once("result",a=>{u(void 0,a)}),a}return"function"==typeof arguments[1]?i._wrap(arguments,1,i._patchCallbackQuery(u)):"function"==typeof arguments[2]&&i._wrap(arguments,2,i._patchCallbackQuery(u)),c.apply(this,arguments)}}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c,d),b(...arguments)}}}c.MySQL2Instrumentation=l},402179,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;var d=a.r(249556);Object.defineProperty(c,"MySQL2Instrumentation",{enumerable:!0,get:function(){return d.MySQL2Instrumentation}})},757586,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(402179),e=a.r(97153),f=a.r(829770),g="Mysql2",h=f.generateInstrumentOnce(g,()=>new d.MySQL2Instrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mysql2")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql2=h,c.mysql2Integration=i},918346,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},432614,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.endSpan=void 0;let d=a.r(854230);c.endSpan=(a,b)=>{b&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message})),a.end()}},881924,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.defaultDbStatementSerializer=void 0;let d=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];c.defaultDbStatementSerializer=(a,b)=>{if(Array.isArray(b)&&b.length){let c=d.find(({regex:b})=>b.test(a))?.args??0,e=c>=0?b.slice(0,c):b;return b.length>e.length&&e.push(`[${b.length-c} other arguments]`),`${a} ${e.join(" ")}`}return a}},325345,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},591386,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(918346),h=a.r(621472),i=a.r(432614),j=a.r(881924),k=a.r(325345),l={requireParentSpan:!0};class m extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){return[new e.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(a,b)=>{let c="Module"===a[Symbol.toStringTag]?a.default:a;return(0,e.isWrapped)(c.prototype.sendCommand)&&this._unwrap(c.prototype,"sendCommand"),this._wrap(c.prototype,"sendCommand",this._patchSendCommand(b)),(0,e.isWrapped)(c.prototype.connect)&&this._unwrap(c.prototype,"connect"),this._wrap(c.prototype,"connect",this._patchConnection()),a},a=>{if(void 0===a)return;let b="Module"===a[Symbol.toStringTag]?a.default:a;this._unwrap(b.prototype,"sendCommand"),this._unwrap(b.prototype,"connect")})]}_patchSendCommand(a){return b=>this._traceSendCommand(b,a)}_patchConnection(){return a=>this._traceConnection(a)}_traceSendCommand(a,b){let c=this;return function(k){if(arguments.length<1||"object"!=typeof k)return a.apply(this,arguments);let l=c.getConfig(),m=l.dbStatementSerializer||j.defaultDbStatementSerializer,n=void 0===d.trace.getSpan(d.context.active());if(!0===l.requireParentSpan&&n)return a.apply(this,arguments);let o={},{host:p,port:q}=this.options,r=m(k.name,k.args);c._dbSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,o[g.ATTR_DB_STATEMENT]=r,o[g.ATTR_DB_CONNECTION_STRING]=`redis://${p}:${q}`),c._dbSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,o[f.ATTR_DB_QUERY_TEXT]=r),c._netSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_NET_PEER_NAME]=p,o[g.ATTR_NET_PEER_PORT]=q),c._netSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=p,o[f.ATTR_SERVER_PORT]=q);let s=c.tracer.startSpan(k.name,{kind:d.SpanKind.CLIENT,attributes:o}),{requestHook:t}=l;t&&(0,h.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:b,cmdName:k.name,cmdArgs:k.args}),a=>{a&&d.diag.error("ioredis instrumentation: request hook failed",a)},!0);try{let b=a.apply(this,arguments),c=k.resolve;k.resolve=function(a){(0,h.safeExecuteInTheMiddle)(()=>l.responseHook?.(s,k.name,k.args,a),a=>{a&&d.diag.error("ioredis instrumentation: response hook failed",a)},!0),(0,i.endSpan)(s,null),c(a)};let e=k.reject;return k.reject=function(a){(0,i.endSpan)(s,a),e(a)},b}catch(a){throw(0,i.endSpan)(s,a),a}}}_traceConnection(a){let b=this;return function(){let c=void 0===d.trace.getSpan(d.context.active());if(!0===b.getConfig().requireParentSpan&&c)return a.apply(this,arguments);let h={},{host:j,port:k}=this.options;b._dbSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,h[g.ATTR_DB_STATEMENT]="connect",h[g.ATTR_DB_CONNECTION_STRING]=`redis://${j}:${k}`),b._dbSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,h[f.ATTR_DB_QUERY_TEXT]="connect"),b._netSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_NET_PEER_NAME]=j,h[g.ATTR_NET_PEER_PORT]=k),b._netSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_SERVER_ADDRESS]=j,h[f.ATTR_SERVER_PORT]=k);let l=b.tracer.startSpan("connect",{kind:d.SpanKind.CLIENT,attributes:h});try{let b=a.apply(this,arguments);return(0,i.endSpan)(l,null),b}catch(a){throw(0,i.endSpan)(l,a),a}}}}c.IORedisInstrumentation=m},294614,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;var d=a.r(591386);Object.defineProperty(c,"IORedisInstrumentation",{enumerable:!0,get:function(){return d.IORedisInstrumentation}})},232887,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},808776,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getTracedCreateStreamTrace=c.getTracedCreateClient=c.endSpan=void 0;let d=a.r(854230);c.endSpan=(a,b)=>{b&&a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end()},c.getTracedCreateClient=a=>function(){let b=a.apply(this,arguments);return d.context.bind(d.context.active(),b)},c.getTracedCreateStreamTrace=a=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(a){d.context.bind(d.context.active(),a),this._patched_redis_stream=a}}),a.apply(this,arguments)}},672921,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},806841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV2_V3=void 0;let d=a.r(621472),e=a.r(808776),f=a.r(232887),g=a.r(854230),h=a.r(357223),i=a.r(672921),j=a.r(881924);class k extends d.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new d.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],a=>((0,d.isWrapped)(a.RedisClient.prototype.internal_send_command)&&this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._wrap(a.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,d.isWrapped)(a.RedisClient.prototype.create_stream)&&this._unwrap(a.RedisClient.prototype,"create_stream"),this._wrap(a.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,d.isWrapped)(a.createClient)&&this._unwrap(a,"createClient"),this._wrap(a,"createClient",this._getPatchCreateClient()),a),a=>{void 0!==a&&(this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._unwrap(a.RedisClient.prototype,"create_stream"),this._unwrap(a,"createClient"))})]}_getPatchInternalSendCommand(){let a=this;return function(b){return function(c){if(1!=arguments.length||"object"!=typeof c)return b.apply(this,arguments);let f=a.getConfig(),l=void 0===g.trace.getSpan(g.context.active());if(!0===f.requireParentSpan&&l)return b.apply(this,arguments);let m=f?.dbStatementSerializer||j.defaultDbStatementSerializer,n={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(n,{[i.ATTR_DB_SYSTEM]:i.DB_SYSTEM_VALUE_REDIS,[i.ATTR_DB_STATEMENT]:m(c.command,c.args)}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(n,{[h.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_REDIS,[h.ATTR_DB_OPERATION_NAME]:c.command,[h.ATTR_DB_QUERY_TEXT]:m(c.command,c.args)});let o=a.tracer.startSpan(`${k.COMPONENT}-${c.command}`,{kind:g.SpanKind.CLIENT,attributes:n});if(this.connection_options){let b={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(b,{[i.ATTR_NET_PEER_NAME]:this.connection_options.host,[i.ATTR_NET_PEER_PORT]:this.connection_options.port}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(b,{[h.ATTR_SERVER_ADDRESS]:this.connection_options.host,[h.ATTR_SERVER_PORT]:this.connection_options.port}),o.setAttributes(b)}this.address&&a._semconvStability&d.SemconvStability.OLD&&o.setAttribute(i.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let p=arguments[0].callback;if(p){let b=g.context.active();arguments[0].callback=function(h,i){if(f?.responseHook){let b=f.responseHook;(0,d.safeExecuteInTheMiddle)(()=>{b(o,c.command,c.args,i)},b=>{b&&a._diag.error("Error executing responseHook",b)},!0)}return(0,e.endSpan)(o,h),g.context.with(b,p,this,...arguments)}}try{return b.apply(this,arguments)}catch(a){throw(0,e.endSpan)(o,a),a}}}}_getPatchCreateClient(){return function(a){return(0,e.getTracedCreateClient)(a)}}_getPatchCreateStream(){return function(a){return(0,e.getTracedCreateStreamTrace)(a)}}}c.RedisInstrumentationV2_V3=k},553053,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getClientAttributes=void 0;let d=a.r(357223),e=a.r(672921),f=a.r(621472);c.getClientAttributes=function(a,b,c){let g={};return c&f.SemconvStability.OLD&&Object.assign(g,{[e.ATTR_DB_SYSTEM]:e.DB_SYSTEM_VALUE_REDIS,[e.ATTR_NET_PEER_NAME]:b?.socket?.host,[e.ATTR_NET_PEER_PORT]:b?.socket?.port,[e.ATTR_DB_CONNECTION_STRING]:function(a,b){if("string"==typeof b&&b)try{let a=new URL(b);return a.searchParams.delete("user_pwd"),a.username="",a.password="",a.href}catch(b){a.error("failed to sanitize redis connection url",b)}}(a,b?.url)}),c&f.SemconvStability.STABLE&&Object.assign(g,{[d.ATTR_DB_SYSTEM_NAME]:e.DB_SYSTEM_NAME_VALUE_REDIS,[d.ATTR_SERVER_ADDRESS]:b?.socket?.host,[d.ATTR_SERVER_PORT]:b?.socket?.port}),g}},80145,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV4_V5=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(553053),g=a.r(881924),h=a.r(232887),i=a.r(357223),j=a.r(672921),k=Symbol("opentelemetry.instrumentation.redis.open_spans"),l=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class m extends e.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(a){let b=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/commander.js`,["^1.0.0"],(a,b)=>{let c=a.transformCommandArguments;if(!c)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),a;let d=b?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,e.isWrapped)(a?.[d])&&this._unwrap(a,d),this._wrap(a,d,this._getPatchExtendWithCommands(c)),a},a=>{(0,e.isWrapped)(a?.extendWithCommands)&&this._unwrap(a,"extendWithCommands"),(0,e.isWrapped)(a?.attachCommands)&&this._unwrap(a,"attachCommands")}),c=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),this._wrap(b,"exec",this._getPatchMultiCommandsExec(!1)),(0,e.isWrapped)(b?.execAsPipeline)&&this._unwrap(b,"execAsPipeline"),this._wrap(b,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand"),this._wrap(b,"addCommand",this._getPatchMultiCommandsAddCommand()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand")}),d=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return b?.multi&&((0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),this._wrap(b,"multi",this._getPatchRedisClientMulti())),b?.MULTI&&((0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),this._wrap(b,"MULTI",this._getPatchRedisClientMulti())),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand"),this._wrap(b,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(b,"connect",this._getPatchedClientConnect()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),(0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand")});return new e.InstrumentationNodeModuleDefinition(a,["^1.0.0","^5.0.0"],a=>a,()=>{},[b,c,d])}_getPatchExtendWithCommands(a){let b=this;return function(c){return function(d){if(d?.BaseClass?.name!=="RedisClient")return c.apply(this,arguments);let e=d.executor;return d.executor=function(c,d){let f=a(c,d).args;return b._traceClientCommand(e,this,arguments,f)},c.apply(this,arguments)}}}_getPatchMultiCommandsExec(a){let b=this;return function(c){return function(){let d=c.apply(this,arguments);return"function"!=typeof d?.then?(b._diag.error("non-promise result when patching exec/execAsPipeline"),d):d.then(c=>{let d=this[k];return b._endSpansWithRedisReplies(d,c,a),c}).catch(c=>{let d=this[k];if(d){let e="MultiErrorReply"===c.constructor.name?c.replies:Array(d.length).fill(c);b._endSpansWithRedisReplies(d,e,a)}else b._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(c)})}}}_getPatchMultiCommandsAddCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchRedisClientMulti(){return function(a){return function(){let b=a.apply(this,arguments);return b[l]=this.options,b}}}_getPatchRedisClientSendCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchedClientConnect(){let a=this;return function(b){return function(){let c=this.options,e=(0,f.getClientAttributes)(a._diag,c,a._semconvStability),g=a.tracer.startSpan(`${m.COMPONENT}-connect`,{kind:d.SpanKind.CLIENT,attributes:e});return d.context.with(d.trace.setSpan(d.context.active(),g),()=>b.apply(this)).then(a=>(g.end(),a)).catch(a=>(g.recordException(a),g.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),g.end(),Promise.reject(a)))}}}_traceClientCommand(a,b,c,h){if(void 0===d.trace.getSpan(d.context.active())&&this.getConfig().requireParentSpan)return a.apply(b,c);let n=b.options||b[l],o=h[0],p=h.slice(1),q=this.getConfig().dbStatementSerializer||g.defaultDbStatementSerializer,r=(0,f.getClientAttributes)(this._diag,n,this._semconvStability);this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_OPERATION_NAME]=o);try{let a=q(o,p);null!=a&&(this._semconvStability&e.SemconvStability.OLD&&(r[j.ATTR_DB_STATEMENT]=a),this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_QUERY_TEXT]=a))}catch(a){this._diag.error("dbStatementSerializer throw an exception",a,{commandName:o})}let s=this.tracer.startSpan(`${m.COMPONENT}-${o}`,{kind:d.SpanKind.CLIENT,attributes:r}),t=d.context.with(d.trace.setSpan(d.context.active(),s),()=>a.apply(b,c));return"function"==typeof t?.then?t.then(a=>{this._endSpanWithResponse(s,o,p,a,void 0)},a=>{this._endSpanWithResponse(s,o,p,null,a)}):(t[k]=t[k]||[],t[k].push({span:s,commandName:o,commandArgs:p})),t}_endSpansWithRedisReplies(a,b,c=!1){if(!a)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(b.length!==a.length)return this._diag.error("number of multi command spans does not match response from redis");let d=a.map(a=>a.commandName),f=d.every(a=>a===d[0])?(c?"PIPELINE ":"MULTI ")+d[0]:c?"PIPELINE":"MULTI";for(let c=0;c{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;let d=a.r(621472),e=a.r(232887),f=a.r(806841),g=a.r(80145),h={requireParentSpan:!1};class i extends d.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(a={}){const b={...h,...a};super(e.PACKAGE_NAME,e.PACKAGE_VERSION,b),this.instrumentationV2_V3=new f.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new g.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(a={}){let b={...h,...a};super.setConfig(b),this.initialized&&(this.instrumentationV2_V3.setConfig(b),this.instrumentationV4_V5.setConfig(b))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(a){super.setTracerProvider(a),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(a),this.instrumentationV4_V5.setTracerProvider(a))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}c.RedisInstrumentation=i},16860,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;var d=a.r(922540);Object.defineProperty(c,"RedisInstrumentation",{enumerable:!0,get:function(){return d.RedisInstrumentation}})},454951,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=["get","set","setex"],e=["get","mget"],f=["set","setex"];function g(a,b){return a.includes(b.toLowerCase())}function h(a){return g(e,a)?"cache.get":g(f,a)?"cache.put":void 0}function i(a){let b=[],c=a=>{a.forEach(a=>{Array.isArray(a)?c(a):b.push(a)})};return c(a),b}c.GET_COMMANDS=e,c.SET_COMMANDS=f,c.calculateCacheItemSize=function(a){let b=a=>{try{if(Buffer.isBuffer(a))return a.byteLength;if("string"==typeof a)return a.length;if("number"==typeof a)return a.toString().length;else if(null==a)return 0;return JSON.stringify(a).length}catch{return}};return Array.isArray(a)?a.reduce((a,c)=>{let d=b(c);return"number"==typeof d?void 0!==a?a+d:d:a},0):b(a)},c.getCacheKeySafely=function(a,b){try{if(0===b.length)return;let c=a=>"string"==typeof a||"number"==typeof a||Buffer.isBuffer(a)?[a.toString()]:Array.isArray(a)?i(a.map(a=>c(a))):[""],e=b[0];if(g(d,a)&&null!=e)return c(e);return i(b.map(a=>c(a)))}catch{return}},c.getCacheOperation=h,c.isInCommands=g,c.shouldConsiderForCache=function(a,b,c){if(!h(a))return!1;for(let a of b)if(function(a,b){return b.some(b=>a.startsWith(b))}(a,c))return!0;return!1}},745584,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(294614),e=a.r(16860),f=a.r(97153),g=a.r(829770),h=a.r(454951),i="Redis";c._redisOptions={};let j=(a,b,d,e)=>{a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let g=h.getCacheKeySafely(b,d),i=h.getCacheOperation(b);if(!g||!i||!c._redisOptions.cachePrefixes||!h.shouldConsiderForCache(b,g,c._redisOptions.cachePrefixes))return;let j=f.spanToJSON(a).data["net.peer.name"],k=f.spanToJSON(a).data["net.peer.port"];k&&j&&a.setAttributes({"network.peer.address":j,"network.peer.port":k});let l=h.calculateCacheItemSize(e);l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,l),h.isInCommands(h.GET_COMMANDS,b)&&void 0!==l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_HIT,l>0),a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:i,[f.SEMANTIC_ATTRIBUTE_CACHE_KEY]:g});let m=g.join(", ");a.updateName(c._redisOptions.maxCacheKeyLength?f.truncate(m,c._redisOptions.maxCacheKeyLength):m)},k=g.generateInstrumentOnce(`${i}.IORedis`,()=>new d.IORedisInstrumentation({responseHook:j})),l=g.generateInstrumentOnce(`${i}.Redis`,()=>new e.RedisInstrumentation({responseHook:j})),m=Object.assign(()=>{k(),l()},{id:i}),n=f.defineIntegration((a={})=>({name:i,setupOnce(){c._redisOptions=a,m()}}));c.cacheResponseHook=j,c.instrumentRedis=m,c.redisIntegration=n},247765,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},625531,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).PG_VALUES="db.postgresql.values",d.PG_PLAN="db.postgresql.plan",d.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",d.MAX_CLIENT="db.postgresql.max.client"},337652,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=c.METRIC_DB_CLIENT_CONNECTION_COUNT=c.DB_SYSTEM_VALUE_POSTGRESQL=c.DB_CLIENT_CONNECTION_STATE_VALUE_USED=c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=c.ATTR_DB_CLIENT_CONNECTION_STATE=c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",c.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",c.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",c.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",c.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},10035,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=void 0,(d=c.SpanNames||(c.SpanNames={})).QUERY_PREFIX="pg.query",d.CONNECT="pg.connect",d.POOL_CONNECT="pg-pool.connect"},277678,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizedErrorMessage=c.isObjectWithTextString=c.getErrorMessage=c.patchClientConnectCallback=c.patchCallbackPGPool=c.updateCounter=c.getPoolName=c.patchCallback=c.handleExecutionResult=c.handleConfigQuery=c.shouldSkipInstrumentation=c.getSemanticAttributesFromPoolConnection=c.getSemanticAttributesFromConnection=c.getConnectionString=c.parseAndMaskConnectionString=c.parseNormalizedOperationName=c.getQuerySpanName=void 0;let d=a.r(854230),e=a.r(625531),f=a.r(357223),g=a.r(337652),h=a.r(621472),i=a.r(10035);function j(a,b){if(!b)return i.SpanNames.QUERY_PREFIX;let c="string"==typeof b.name&&b.name?b.name:k(b.text);return`${i.SpanNames.QUERY_PREFIX}:${c}${a?` ${a}`:""}`}function k(a){let b=a.trim(),c=b.indexOf(" "),d=-1===c?b:b.slice(0,c);return(d=d.toUpperCase()).endsWith(";")?d.slice(0,-1):d}function l(a){try{let b=new URL(a);return b.username="",b.password="",b.toString()}catch(a){return"postgresql://localhost:5432/"}}function m(a){if("connectionString"in a&&a.connectionString)return l(a.connectionString);let b=a.host||"localhost",c=a.port||5432,d=a.database||"";return`postgresql://${b}:${c}/${d}`}function n(a){if(Number.isInteger(a))return a}function o(a,b){let c={};return b&h.SemconvStability.OLD&&(c={...c,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_DB_USER]:a.user,[g.ATTR_NET_PEER_NAME]:a.host,[g.ATTR_NET_PEER_PORT]:n(a.port)}),b&h.SemconvStability.STABLE&&(c={...c,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:a.host,[f.ATTR_SERVER_PORT]:n(a.port)}),c}function p(a,b,c){"function"==typeof a.responseHook&&(0,h.safeExecuteInTheMiddle)(()=>{a.responseHook(b,{data:c})},a=>{a&&d.diag.error("Error running response hook",a)},!0)}function q(a){let b=a?.name??"PostgreSQLError",c=a?.code??"UNKNOWN";return`PostgreSQL error of type '${b}' occurred (code: ${c})`}c.getQuerySpanName=j,c.parseNormalizedOperationName=k,c.parseAndMaskConnectionString=l,c.getConnectionString=m,c.getSemanticAttributesFromConnection=o,c.getSemanticAttributesFromPoolConnection=function(a,b){let c;try{c=a.connectionString?new URL(a.connectionString):void 0}catch(a){c=void 0}let d={[e.AttributeNames.IDLE_TIMEOUT_MILLIS]:a.idleTimeoutMillis,[e.AttributeNames.MAX_CLIENT]:a.maxClient};return b&h.SemconvStability.OLD&&(d={...d,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:c?.pathname.slice(1)??a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_NET_PEER_NAME]:c?.hostname??a.host,[g.ATTR_NET_PEER_PORT]:Number(c?.port)||n(a.port),[g.ATTR_DB_USER]:c?.username??a.user}),b&h.SemconvStability.STABLE&&(d={...d,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:c?.hostname??a.host,[f.ATTR_SERVER_PORT]:Number(c?.port)||n(a.port)}),d},c.shouldSkipInstrumentation=function(a){return!0===a.requireParentSpan&&void 0===d.trace.getSpan(d.context.active())},c.handleConfigQuery=function(a,b,c,i){let{connectionParameters:k}=this,l=j(k.database,i),m=a.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:o(k,c)});if(!i)return m;if(i.text&&(c&h.SemconvStability.OLD&&m.setAttribute(g.ATTR_DB_STATEMENT,i.text),c&h.SemconvStability.STABLE&&m.setAttribute(f.ATTR_DB_QUERY_TEXT,i.text)),b.enhancedDatabaseReporting&&Array.isArray(i.values))try{let a=i.values.map(a=>null==a?"null":a instanceof Buffer?a.toString():"object"!=typeof a?a.toString():"function"==typeof a.toPostgres?a.toPostgres():JSON.stringify(a));m.setAttribute(e.AttributeNames.PG_VALUES,a)}catch(a){d.diag.error("failed to stringify ",i.values,a)}return"string"==typeof i.name&&m.setAttribute(e.AttributeNames.PG_PLAN,i.name),m},c.handleExecutionResult=p,c.patchCallback=function(a,b,c,e,g){return function(h,i){h?(Object.prototype.hasOwnProperty.call(h,"code")&&(e[f.ATTR_ERROR_TYPE]=h.code),h instanceof Error&&b.recordException(q(h)),b.setStatus({code:d.SpanStatusCode.ERROR,message:h.message})):p(a,b,i),g(),b.end(),c.call(this,h,i)}},c.getPoolName=function(a){let b="";return(b+=(a?.host?`${a.host}`:"unknown_host")+":"+(a?.port?`${a.port}`:"unknown_port")+"/"+(a?.database?`${a.database}`:"unknown_database")).trim()},c.updateCounter=function(a,b,c,d,e){let f=b.totalCount,h=b.waitingCount,i=b.idleCount,j=f-i;return c.add(j-e.used,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),c.add(i-e.idle,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),d.add(h-e.pending,{[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),{used:j,idle:i,pending:h}},c.patchCallbackPGPool=function(a,b){return function(c,e,f){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.call(this,c,e,f)}},c.patchClientConnectCallback=function(a,b){return function(c){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.apply(this,arguments)}},c.getErrorMessage=function(a){return"object"==typeof a&&null!==a&&"message"in a?String(a.message):void 0},c.isObjectWithTextString=function(a){return"object"==typeof a&&"string"==typeof a?.text},c.sanitizedErrorMessage=q},412962,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.66.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},352271,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PgInstrumentation=void 0;let d=a.r(621472),e=a.r(854230),f=a.r(247765),g=a.r(277678),h=a.r(780071),i=a.r(412962),j=a.r(10035),k=a.r(35492),l=a.r(357223),m=a.r(337652);function n(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class o extends d.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._semconvStability=(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(l.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:e.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let a=[">=8.0.3 <9"],b=new d.InstrumentationNodeModuleFile("pg/lib/native/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),c=new d.InstrumentationNodeModuleFile("pg/lib/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new d.InstrumentationNodeModuleDefinition("pg",a,a=>{let b=n(a);return this._patchPgClient(b.Client),a},a=>{let b=n(a);return this._unpatchPgClient(b.Client),a},[c,b]),new d.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],a=>{let b=n(a);return(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"connect",this._getPoolConnectPatch()),b},a=>{let b=n(a);(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect")})]}_patchPgClient(a){if(!a)return;let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"query",this._getClientQueryPatch()),this._wrap(b.prototype,"connect",this._getClientConnectPatch()),a}_unpatchPgClient(a){let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),a}_getClientConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||d.ignoreConnectSpans)return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromConnection(this,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchClientConnectCallback(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}recordOperationDuration(a,b){let c={},e=[l.ATTR_DB_NAMESPACE,l.ATTR_ERROR_TYPE,l.ATTR_SERVER_PORT,l.ATTR_SERVER_ADDRESS,l.ATTR_DB_OPERATION_NAME];this._semconvStability&d.SemconvStability.OLD&&e.push(m.ATTR_DB_SYSTEM),this._semconvStability&d.SemconvStability.STABLE&&e.push(l.ATTR_DB_SYSTEM_NAME),e.forEach(b=>{b in a&&(c[b]=a[b])});let f=(0,k.hrTimeToMilliseconds)((0,k.hrTimeDuration)(b,(0,k.hrTime)()))/1e3;this._operationDuration.record(f,c)}_getClientQueryPatch(){let a=this;return b=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...c){let f;if(g.shouldSkipInstrumentation(a.getConfig()))return b.apply(this,c);let i=(0,k.hrTime)(),j=c[0],n="string"==typeof j,o=g.isObjectWithTextString(j),p=n?{text:j,values:Array.isArray(c[1])?c[1]:void 0}:o?{...j,name:j.name,text:j.text,values:j.values??(Array.isArray(c[1])?c[1]:void 0)}:void 0,q={[m.ATTR_DB_SYSTEM]:m.DB_SYSTEM_VALUE_POSTGRESQL,[l.ATTR_DB_NAMESPACE]:this.database,[l.ATTR_SERVER_PORT]:this.connectionParameters.port,[l.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};p?.text&&(q[l.ATTR_DB_OPERATION_NAME]=g.parseNormalizedOperationName(p?.text));let r=()=>{a.recordOperationDuration(q,i)},s=a.getConfig(),t=g.handleConfigQuery.call(this,a.tracer,s,a._semconvStability,p);if(s.addSqlCommenterCommentToQueries&&(n?c[0]=(0,h.addSqlCommenterComment)(t,j):!o||"name"in j||(c[0]={...j,text:(0,h.addSqlCommenterComment)(t,j.text)})),c.length>0){let b=e.trace.getSpan(e.context.active());if("function"==typeof c[c.length-1])c[c.length-1]=g.patchCallback(s,t,c[c.length-1],q,r),b&&(c[c.length-1]=e.context.bind(e.context.active(),c[c.length-1]));else if("function"==typeof p?.callback){let d=g.patchCallback(a.getConfig(),t,p.callback,q,r);b&&(d=e.context.bind(e.context.active(),d)),c[0].callback=d}}let{requestHook:u}=s;"function"==typeof u&&p&&(0,d.safeExecuteInTheMiddle)(()=>{let{database:a,host:b,port:c,user:d}=this.connectionParameters;u(t,{connection:{database:a,host:b,port:c,user:d},query:{text:p.text,values:p.values,name:p.name}})},b=>{b&&a._diag.error("Error running query hook",b)},!0);try{f=b.apply(this,c)}catch(a){throw a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(a)}),t.end(),a}return f instanceof Promise?f.then(b=>new Promise(c=>{g.handleExecutionResult(a.getConfig(),t,b),r(),t.end(),c(b)})).catch(a=>new Promise((b,c)=>{a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),r(),t.end(),c(a)})):f})}_setPoolConnectEventListeners(a){if(a[f.EVENT_LISTENERS_SET])return;let b=g.getPoolName(a.options);a.on("connect",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("acquire",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("remove",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("release",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a[f.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||(a._setPoolConnectEventListeners(this),d.ignoreConnectSpans))return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.POOL_CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromPoolConnection(this.options,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchCallbackPGPool(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}}function p(a,b){return b instanceof Promise?e.context.bind(e.context.active(),b.then(b=>(a.end(),b)).catch(b=>(b instanceof Error&&a.recordException(g.sanitizedErrorMessage(b)),a.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(b)}),a.end(),Promise.reject(b)))):b}c.PgInstrumentation=o},95274,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.PgInstrumentation=void 0;var d=a.r(352271);Object.defineProperty(c,"PgInstrumentation",{enumerable:!0,get:function(){return d.PgInstrumentation}});var e=a.r(625531);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},277029,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(95274),e=a.r(97153),f=a.r(829770),g="Postgres",h=f.generateInstrumentOnce(g,d.PgInstrumentation,a=>({requireParentSpan:!0,requestHook(a){f.addOriginToSpan(a,"auto.db.otel.postgres")},ignoreConnectSpans:a?.ignoreConnectSpans??!1})),i=e.defineIntegration(a=>({name:g,setupOnce(){h(a)}}));c.instrumentPostgres=h,c.postgresIntegration=i},551578,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(97153),h=a.r(829770),i=a.r(560192),j="PostgresJs",k=[">=3.0.0 <4"],l=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,m=Symbol.for("sentry.query.from.instrumented.sql"),n=h.generateInstrumentOnce(j,a=>new o({requireParentSpan:a?.requireParentSpan??!0,requestHook:a?.requestHook}));class o extends e.InstrumentationBase{constructor(a){super("sentry-postgres-js",g.SDK_VERSION,a)}init(){let a=new e.InstrumentationNodeModuleDefinition("postgres",k,a=>{try{return this._patchPostgres(a)}catch(b){return i.DEBUG_BUILD&&g.debug.error("Failed to patch postgres module:",b),a}},a=>a);return["src","cf/src","cjs/src"].forEach(b=>{a.files.push(new e.InstrumentationNodeModuleFile(`postgres/${b}/query.js`,k,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),a}_patchPostgres(a){let b="function"==typeof a,c=b?a:a.default;if("function"!=typeof c)return i.DEBUG_BUILD&&g.debug.warn("postgres module does not export a function. Skipping instrumentation."),a;let d=this,e=function(...a){let b=Reflect.construct(c,a);if(!b||"function"!=typeof b)return i.DEBUG_BUILD&&g.debug.warn("postgres() did not return a valid instance"),b;let e=d.getConfig();return g.instrumentPostgresJsSql(b,{requireParentSpan:e.requireParentSpan,requestHook:e.requestHook})};for(let a of(Object.setPrototypeOf(e,c),Object.setPrototypeOf(e.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(e,a,b)}return b?e:(g.replaceExports(a,"default",e),a)}_shouldCreateSpans(){let a=this.getConfig();return void 0!==d.trace.getSpan(d.context.active())||!a.requireParentSpan}_setOperationName(a,b,c){if(c)return void a.setAttribute(f.ATTR_DB_OPERATION_NAME,c);let d=b?.match(l);d?.[1]&&a.setAttribute(f.ATTR_DB_OPERATION_NAME,d[1].toUpperCase())}_reconstructQuery(a){if(a?.length)return 1===a.length?a[0]||void 0:a.reduce((a,b,c)=>0===c?b:`${a}$${c}${b}`,"")}_sanitizeSqlQuery(a){return a?a.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{h.addOriginToSpan(d,"auto.db.postgresjs"),d.setAttributes({[f.ATTR_DB_SYSTEM_NAME]:"postgres",[f.ATTR_DB_QUERY_TEXT]:k});let{requestHook:l}=b.getConfig();l&&e.safeExecuteInTheMiddle(()=>l(d,k,void 0),a=>{a&&(d.setAttribute("sentry.hook.error","requestHook failed"),i.DEBUG_BUILD&&g.debug.error(`Error in requestHook for ${j} integration:`,a))},!0);let m=this.resolve;this.resolve=new Proxy(m,{apply:(a,c,e)=>{try{b._setOperationName(d,k,e?.[0]?.command),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in resolve callback:",a)}return Reflect.apply(a,c,e)}});let n=this.reject;this.reject=new Proxy(n,{apply:(a,c,e)=>{try{d.setStatus({code:g.SPAN_STATUS_ERROR,message:e?.[0]?.message||"unknown_error"}),d.setAttribute(f.ATTR_DB_RESPONSE_STATUS_CODE,e?.[0]?.code||"unknown"),d.setAttribute(f.ATTR_ERROR_TYPE,e?.[0]?.name||"unknown"),b._setOperationName(d,k),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in reject callback:",a)}return Reflect.apply(a,c,e)}});try{return c.apply(this,a)}catch(a){throw d.setStatus({code:g.SPAN_STATUS_ERROR,message:a instanceof Error?a.message:"unknown_error"}),d.end(),a}})},a.Query.prototype.handle.__sentry_original__=c,a}_unpatchQueryPrototype(a){return a.Query.prototype.handle.__sentry_original__&&(a.Query.prototype.handle=a.Query.prototype.handle.__sentry_original__),a}}let p=g.defineIntegration(a=>({name:j,setupOnce(){n(a)}}));c.PostgresJsInstrumentation=o,c.instrumentPostgresJs=n,c.postgresJsIntegration=p},882435,a=>{"use strict";a.s([],209479),a.i(209479);var b,c,d=a.i(818414),e=a.i(286508);let f="object"==typeof globalThis?globalThis:a.g,g=Symbol.for("io.opentelemetry.js.api.logs");class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return f[g]?this.getLoggerProvider():(f[g]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=f[g])?void 0:a.call(f,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete f[g],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(385603);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(a=>a.name===g).filter(b=>af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!1},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{name;supportedVersions;patch;unpatch;files;constructor(a,b,c,d,e){this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d,this.files=e||[]}}class ah{supportedVersions;patch;unpatch;name;constructor(a,b,c,d){this.supportedVersions=b,this.patch=c,this.unpatch=d,this.name=(0,p.normalize)(a)}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],882435)},686922,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={PrismaInstrumentation:()=>w,registerInstrumentations:()=>x.registerInstrumentations};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let i of f(b))g.call(a,i)||i===c||d(a,i,{get:()=>b[i],enumerable:!(h=e(b,i))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(854230),l=a.r(882435),m="7.6.0".split(".")[0],n="PRISMA_INSTRUMENTATION",o=`V${m}_PRISMA_INSTRUMENTATION`,p=globalThis,q=a.r(854230),r="true"===process.env.PRISMA_SHOW_ALL_TRACES,s=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:a,ignoreSpanTypes:b}){this.tracerProvider=a,this.ignoreSpanTypes=b}isEnabled(){return!0}getTraceParent(a){let b=q.trace.getSpanContext(a??q.context.active());return b?`00-${b.traceId}-${b.spanId}-0${b.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(a){let b=this.tracerProvider.getTracer("prisma"),c=new Map;for(let d of a.filter(a=>null===a.parentId))!function a(b,c,d,e,f){if(u(c.name,f))return;let g={attributes:c.attributes,kind:"client"===c.kind?q.SpanKind.CLIENT:q.SpanKind.INTERNAL,startTime:c.startTime};b.startActiveSpan(c.name,g,g=>{for(let h of(e.set(c.id,g.spanContext().spanId),c.links&&g.addLinks(c.links.flatMap(a=>{let b=e.get(a);return b?{context:{spanId:b,traceId:g.spanContext().traceId,traceFlags:g.spanContext().traceFlags}}:[]})),d.filter(a=>a.parentId===c.id)))a(b,h,d,e,f);g.end(c.endTime)})}(b,d,a,c,this.ignoreSpanTypes)}getActiveContext(){return q.context.active()}runInChildSpan(a,b){if("string"==typeof a&&(a={name:a}),a.internal&&!r)return b();let c=this.tracerProvider.getTracer("prisma"),d=a.context??this.getActiveContext(),e=`prisma:client:${a.name}`;if(u(e,this.ignoreSpanTypes))return b();if(!1===a.active){let f=c.startSpan(e,a,d);return t(f,b(f,d))}return c.startActiveSpan(e,a,a=>t(a,b(a,d)))}};function t(a,b){var c;return null!=(c=b)&&"function"==typeof c.then?b.then(b=>(a.end(),b),b=>{throw a.end(),b}):(a.end(),b)}function u(a,b){return b.some(b=>"string"==typeof b?b===a:b.test(a))}var v="7.6.0",w=class extends l.InstrumentationBase{tracerProvider;constructor(a={}){super("@prisma/instrumentation",v,a)}setTracerProvider(a){this.tracerProvider=a}init(){return[new l.InstrumentationNodeModuleDefinition("@prisma/client",[v])]}enable(){let a,b=this._config;a={helper:new s({tracerProvider:this.tracerProvider??k.trace.getTracerProvider(),ignoreSpanTypes:b.ignoreSpanTypes??[]})},p[o]=a,p[n]=a}disable(){delete p[o],delete p[n]}isEnabled(){return void 0!==function(){let a=p[o];if(a?.helper)return a.helper;let b=p[n];return b?.helper}()}},x=a.r(882435)},302889,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(686922),f=a.r(97153),g=a.r(829770),h="Prisma";function i(){let a=globalThis.PRISMA_INSTRUMENTATION;return a&&"object"==typeof a&&"helper"in a?a.helper:void 0}class j extends e.PrismaInstrumentation{constructor(a){super(a?.instrumentationConfig)}enable(){super.enable();let a=i();a&&"object"==typeof a&&"dispatchEngineSpans"in a&&(a.createEngineSpan=a=>{let b=d.trace.getTracer("prismaV5Compatibility"),c=b._idGenerator;if(!c)return void f.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{a.spans.forEach(a=>{var e;let f=(e=a.kind,"client"===e?d.SpanKind.CLIENT:d.SpanKind.INTERNAL),g=a.parent_span_id,h=a.span_id,i=a.trace_id,j=a.links?.map(a=>({context:{traceId:a.trace_id,spanId:a.span_id,traceFlags:d.TraceFlags.SAMPLED}})),k=d.trace.setSpanContext(d.context.active(),{traceId:i,spanId:g,traceFlags:d.TraceFlags.SAMPLED});d.context.with(k,()=>{b._idGenerator={generateTraceId:()=>i,generateSpanId:()=>h},b.startSpan(a.name,{kind:f,links:j,startTime:a.start_time,attributes:a.attributes}).end(a.end_time),b._idGenerator=c})})}finally{b._idGenerator=c}})}}let k=g.generateInstrumentOnce(h,a=>new j(a)),l=f.defineIntegration(a=>({name:h,setupOnce(){k(a)},setup(a){i()&&a.on("spanStart",a=>{let b=f.spanToJSON(a);b.description?.startsWith("prisma:")&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===b.description&&b.data["db.query.text"]&&a.updateName(b.data["db.query.text"]),"prisma:engine:db_query"!==b.description||b.data["db.system"]||a.setAttribute("db.system","prisma")})}}));c.instrumentPrisma=k,c.prismaIntegration=l},612971,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},968427,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiLifecycleMethodNames=c.HapiLayerType=c.handlerPatched=c.HapiComponentName=void 0,c.HapiComponentName="@hapi/hapi",c.handlerPatched=Symbol("hapi-handler-patched"),c.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},c.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},19822,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_HTTP_METHOD=void 0,c.ATTR_HTTP_METHOD="http.method"},100306,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).HAPI_TYPE="hapi.type",d.PLUGIN_NAME="hapi.plugin.name",d.EXT_TYPE="server.ext.type"},1606,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getPluginFromInput=c.getExtMetadata=c.getRouteMetadata=c.isPatchableExtMethod=c.isDirectExtInput=c.isLifecycleExtEventObj=c.isLifecycleExtType=c.getPluginName=void 0;let d=a.r(357223),e=a.r(19822),f=a.r(968427),g=a.r(100306),h=a.r(621472);c.getPluginName=function(a){return a.name?a.name:a.pkg.name},c.isLifecycleExtType=a=>"string"==typeof a&&f.HapiLifecycleMethodNames.has(a),c.isLifecycleExtEventObj=a=>{let b=a?.type;return void 0!==b&&(0,c.isLifecycleExtType)(b)},c.isDirectExtInput=a=>Array.isArray(a)&&a.length<=3&&(0,c.isLifecycleExtType)(a[0])&&"function"==typeof a[1],c.isPatchableExtMethod=a=>!Array.isArray(a),c.getRouteMetadata=(a,b,c)=>{let i,j={[d.ATTR_HTTP_ROUTE]:a.path};return b&h.SemconvStability.OLD&&(j[e.ATTR_HTTP_METHOD]=a.method),b&h.SemconvStability.STABLE&&(j[d.ATTR_HTTP_REQUEST_METHOD]=a.method),c?(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.PLUGIN,j[g.AttributeNames.PLUGIN_NAME]=c,i=`${c}: route - ${a.path}`):(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.ROUTER,i=`route - ${a.path}`),{attributes:j,name:i}},c.getExtMetadata=(a,b,c)=>{let d=`ext - ${a}`;return(c&&"method"!==c&&(d=`ext - ${a} - ${c}`),b)?{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT,[g.AttributeNames.PLUGIN_NAME]:b},name:`${b}: ${d}`}:{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT},name:d}},c.getPluginFromInput=a=>"plugin"in a?"plugin"in a.plugin?a.plugin.plugin:a.plugin:a},315858,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(612971),h=a.r(968427),i=a.r(1606);class j extends f.InstrumentationBase{_semconvStability;constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a),this._semconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new f.InstrumentationNodeModuleDefinition(h.HapiComponentName,[">=17.0.0 <22"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return(0,f.isWrapped)(b.server)||this._wrap(b,"server",this._getServerPatch.bind(this)),(0,f.isWrapped)(b.Server)||this._wrap(b,"Server",this._getServerPatch.bind(this)),b},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;this._massUnwrap([b],["server","Server"])})}_getServerPatch(a){let b=this,c=this;return function(d){let e=a.apply(this,[d]);return c._wrap(e,"route",a=>b._getServerRoutePatch.bind(b)(a)),c._wrap(e,"ext",a=>b._getServerExtPatch.bind(b)(a)),c._wrap(e,"register",b._getServerRegisterPatch.bind(b)),e}}_getServerRegisterPatch(a){let b=this;return function(c,d){if(Array.isArray(c))for(let a of c){let c=(0,i.getPluginFromInput)(a);b._wrapRegisterHandler(c)}else{let a=(0,i.getPluginFromInput)(c);b._wrapRegisterHandler(a)}return a.apply(this,[c,d])}}_getServerExtPatch(a,b){let c=this;return function(...d){if(Array.isArray(d[0])){let a=d[0];for(let d=0;db._getServerRoutePatch.bind(b)(a,c)),e._wrap(a,"ext",a=>b._getServerExtPatch.bind(b)(a,c)),d.call(this,a,f)}}_wrapExtMethods(a,b,c){let e=this;if(a instanceof Array)for(let c=0;casync function(...g){if(void 0===d.trace.getSpan(d.context.active()))return await f.call(this,...g);let h=(0,e.getRPCMetadata)(d.context.active());h?.type===e.RPCType.HTTP&&(h.route=a.path);let j=(0,i.getRouteMetadata)(a,c._semconvStability,b),k=c.tracer.startSpan(j.name,{attributes:j.attributes});try{return await d.context.with(d.trace.setSpan(d.context.active(),k),()=>f.call(this,...g))}catch(a){throw k.recordException(a),k.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),a}finally{k.end()}};if("function"==typeof a.handler)a.handler=f(a.handler);else if("function"==typeof a.options){let b=a.options;a.options=function(a){let c=b(a);return"function"==typeof c.handler&&(c.handler=f(c.handler)),c}}else"function"==typeof a.options?.handler&&(a.options.handler=f(a.options.handler));return a}}c.HapiInstrumentation=j},83238,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.HapiInstrumentation=void 0;var d=a.r(315858);Object.defineProperty(c,"HapiInstrumentation",{enumerable:!0,get:function(){return d.HapiInstrumentation}});var e=a.r(100306);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},546750,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(83238),e=a.r(97153),f=a.r(829770),g=a.r(560192),h="Hapi",i=f.generateInstrumentOnce(h,()=>new d.HapiInstrumentation),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}})),k={name:"SentryHapiErrorPlugin",version:e.SDK_VERSION,register:async function(a){a.events.on({name:"request",channels:["error"]},(a,b)=>{var c;if(e.getIsolationScope()!==e.getDefaultIsolationScope()){let b=a.route;b.path&&e.getIsolationScope().setTransactionName(`${b.method.toUpperCase()} ${b.path}`)}else g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");b&&"object"==typeof b&&"error"in b&&b.error&&(c=b.error,e.captureException(c,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function l(a){await a.register(k);let b=e.getClient();b&&b.on("spanStart",a=>{var b;let c,d;b=a,d=(c=e.spanToJSON(b).data)["hapi.type"],!c[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&d&&b.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${d}.hapi`})}),f.ensureIsWrapped(a.register,"hapi")}c.hapiErrorPlugin=k,c.hapiIntegration=j,c.instrumentHapi=i,c.setupHapiErrorHandler=l},749024,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},c.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},64759,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472),f=a.r(97153),g=a.r(749024);class h extends e.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-hono","0.0.1",a)}init(){return[new e.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],a=>this._patch(a))]}_patch(a){let b=this;class c extends a.Hono{constructor(...a){super(...a),b._wrap(this,"get",b._patchHandler()),b._wrap(this,"post",b._patchHandler()),b._wrap(this,"put",b._patchHandler()),b._wrap(this,"delete",b._patchHandler()),b._wrap(this,"options",b._patchHandler()),b._wrap(this,"patch",b._patchHandler()),b._wrap(this,"all",b._patchHandler()),b._wrap(this,"on",b._patchOnHandler()),b._wrap(this,"use",b._patchMiddlewareHandler())}}try{a.Hono=c}catch{return{...a,Hono:c}}return a}_patchHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_patchOnHandler(){let a=this;return function(b){return function(...c){let d=c.slice(2);return b.apply(this,[...c.slice(0,2),...d.map(b=>a._wrapHandler(b))])}}}_patchMiddlewareHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_wrapHandler(a){let b=this;return function(c,e){if(!b.isEnabled())return a.apply(this,[c,e]);let h=c.req.path,i=b.tracer.startSpan(h);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>b._safeExecute(()=>{let d=a.apply(this,[c,e]);if(f.isThenable(d))return d.then(c=>{let d=b._determineHandlerType(c);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:d,[g.AttributeNames.HONO_NAME]:d===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),c});{let c=b._determineHandlerType(d);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:c,[g.AttributeNames.HONO_NAME]:c===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),d}},()=>i.end(),a=>{b._handleError(i,a),i.end()}))}}_safeExecute(a,b,c){try{let d=a();return f.isThenable(d)?d.then(()=>b(),a=>c(a)):b(),d}catch(a){throw c(a),a}}_determineHandlerType(a){return void 0===a?g.HonoTypes.MIDDLEWARE:g.HonoTypes.REQUEST_HANDLER}_handleError(a,b){b instanceof Error&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b))}}c.HonoInstrumentation=h},228328,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(829770),g=a.r(560192),h=a.r(749024),i=a.r(64759),j="Hono",k=f.generateInstrumentOnce(j,()=>new i.HonoInstrumentation({responseHook:a=>{!function(a){let b=e.spanToJSON(a).data,c=b[h.AttributeNames.HONO_TYPE];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.hono`});let f=b[h.AttributeNames.HONO_NAME];if("string"==typeof f&&a.updateName(f),e.getIsolationScope()===e.getDefaultIsolationScope()){g.DEBUG_BUILD&&e.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let i=b[d.ATTR_HTTP_ROUTE],j=b[d.ATTR_HTTP_REQUEST_METHOD];"string"==typeof i&&"string"==typeof j&&e.getIsolationScope().setTransactionName(`${j} ${i}`)}(a)}})),l=e.defineIntegration(()=>({name:j,setupOnce(){k()}}));c.honoIntegration=l,c.instrumentHono=k,c.setupHonoErrorHandler=function(a,b){a.use(async function(a,b){let c=e.httpRequestToRequestData(a.req);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:c}),await b()}),a.use(async function(a,c){await c(),(b?.shouldHandleError||function(a){return a.res.status>=500})(a)&&(a.res.sentry=e.captureException(a.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),f.ensureIsWrapped(a.use,"hono")}},633428,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=void 0,(d=c.KoaLayerType||(c.KoaLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware"},223086,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},689826,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).KOA_TYPE="koa.type",d.KOA_NAME="koa.name"},48355,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isLayerIgnored=c.getMiddlewareMetadata=void 0;let d=a.r(633428),e=a.r(689826),f=a.r(357223);c.getMiddlewareMetadata=(a,b,c,g)=>c?{attributes:{[e.AttributeNames.KOA_NAME]:g?.toString(),[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.ROUTER,[f.ATTR_HTTP_ROUTE]:g?.toString()},name:a._matchedRouteName||`router - ${g}`}:{attributes:{[e.AttributeNames.KOA_NAME]:b.name??"middleware",[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.MIDDLEWARE},name:`middleware - ${b.name}`},c.isLayerIgnored=(a,b)=>!!(Array.isArray(b?.ignoreLayersType)&&b?.ignoreLayersType?.includes(a))},208864,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.kLayerPatched=void 0,c.kLayerPatched=Symbol("koa-layer-patched")},335708,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(633428),g=a.r(223086),h=a.r(48355),i=a.r(35492),j=a.r(208864);class k extends e.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return new e.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return null==b?b:((0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use"),this._wrap(b.prototype,"use",this._getKoaUsePatch.bind(this)),a)},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;(0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use")})}_getKoaUsePatch(a){let b=this;return function(c){let d;return d=c.router?b._patchRouterDispatch(c):b._patchLayer(c,!1),a.apply(this,[d])}}_patchRouterDispatch(a){d.diag.debug("Patching @koa/router dispatch");let b=a.router;for(let a of b?.stack??[]){let b=a.path,c=a.stack;for(let a=0;a{if(void 0===d.trace.getSpan(d.context.active()))return a(f,j);let k=(0,h.getMiddlewareMetadata)(f,a,b,c),l=this.tracer.startSpan(k.name,{attributes:k.attributes}),m=(0,i.getRPCMetadata)(d.context.active());m?.type===i.RPCType.HTTP&&f._matchedRoute&&(m.route=f._matchedRoute.toString());let{requestHook:n}=this.getConfig();n&&(0,e.safeExecuteInTheMiddle)(()=>n(l,{context:f,middlewareLayer:a,layerType:g}),a=>{a&&d.diag.error("koa instrumentation: request hook failed",a)},!0);let o=d.trace.setSpan(d.context.active(),l);return d.context.with(o,async()=>{try{return await a(f,j)}catch(a){throw l.recordException(a),a}finally{l.end()}})})}}c.KoaInstrumentation=k},784208,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=c.AttributeNames=c.KoaInstrumentation=void 0;var d=a.r(335708);Object.defineProperty(c,"KoaInstrumentation",{enumerable:!0,get:function(){return d.KoaInstrumentation}});var e=a.r(689826);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}});var f=a.r(633428);Object.defineProperty(c,"KoaLayerType",{enumerable:!0,get:function(){return f.KoaLayerType}})},326259,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(784208),e=a.r(357223),f=a.r(97153),g=a.r(829770),h=a.r(560192),i=g.generateInstrumentOnce("Koa",d.KoaInstrumentation,(a={})=>({ignoreLayersType:a.ignoreLayersType,requestHook(a,b){g.addOriginToSpan(a,"auto.http.otel.koa");let c=f.spanToJSON(a).data,d=c["koa.type"];d&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${d}.koa`);let i=c["koa.name"];if("string"==typeof i&&a.updateName(i||"< unknown >"),f.getIsolationScope()===f.getDefaultIsolationScope()){h.DEBUG_BUILD&&f.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let j=c[e.ATTR_HTTP_ROUTE],k=b.context?.request?.method?.toUpperCase()||"GET";j&&f.getIsolationScope().setTransactionName(`${k} ${j}`)}})),j=f.defineIntegration((a={})=>({name:"Koa",setupOnce(){i(a)}}));c.instrumentKoa=i,c.koaIntegration=j,c.setupKoaErrorHandler=a=>{a.use(async(a,b)=>{try{await b()}catch(a){throw f.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),a}}),g.ensureIsWrapped(a.use,"koa")}},571897,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectNames=c.ConnectTypes=c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).CONNECT_TYPE="connect.type",d.CONNECT_NAME="connect.name",(e=c.ConnectTypes||(c.ConnectTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",(f=c.ConnectNames||(c.ConnectNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},838828,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},169073,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=void 0,c._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},471850,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.generateRoute=c.replaceCurrentStackRoute=c.addNewStackLayer=void 0;let d=a.r(854230),e=a.r(169073);c.addNewStackLayer=a=>{!1===Array.isArray(a[e._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,e._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),a[e._LAYERS_STORE_PROPERTY].push("/");let b=a[e._LAYERS_STORE_PROPERTY].length;return()=>{b===a[e._LAYERS_STORE_PROPERTY].length?a[e._LAYERS_STORE_PROPERTY].pop():d.diag.warn("Connect: Trying to pop the stack multiple time")}},c.replaceCurrentStackRoute=(a,b)=>{b&&a[e._LAYERS_STORE_PROPERTY].splice(-1,1,b)},c.generateRoute=a=>a[e._LAYERS_STORE_PROPERTY].reduce((a,b)=>a.replace(/\/+$/,"")+b)},822198,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectInstrumentation=c.ANONYMOUS_NAME=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(571897),g=a.r(838828),h=a.r(621472),i=a.r(357223),j=a.r(471850);c.ANONYMOUS_NAME="anonymous";class k extends h.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new h.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_patchApp(a){(0,h.isWrapped)(a.use)||this._wrap(a,"use",this._patchUse.bind(this)),(0,h.isWrapped)(a.handle)||this._wrap(a,"handle",this._patchHandle.bind(this))}_patchConstructor(a){let b=this;return function(...c){let d=a.apply(this,c);return b._patchApp(d),d}}_patchNext(a,b){return function(c){let d=a.apply(this,[c]);return b(),d}}_startSpan(a,b){let d,e,g;a?(d=f.ConnectTypes.REQUEST_HANDLER,g=f.ConnectNames.REQUEST_HANDLER,e=a):(d=f.ConnectTypes.MIDDLEWARE,g=f.ConnectNames.MIDDLEWARE,e=b.name||c.ANONYMOUS_NAME);let h=`${g} - ${e}`,j={attributes:{[i.ATTR_HTTP_ROUTE]:a.length>0?a:"/",[f.AttributeNames.CONNECT_TYPE]:d,[f.AttributeNames.CONNECT_NAME]:e}};return this.tracer.startSpan(h,j)}_patchMiddleware(a,b){let f=this,g=4===b.length;function h(){if(!f.isEnabled())return b.apply(this,arguments);let[h,i,k]=g?[1,2,3]:[0,1,2],l=arguments[h],m=arguments[i],n=arguments[k];(0,j.replaceCurrentStackRoute)(l,a);let o=(0,e.getRPCMetadata)(d.context.active());a&&o?.type===e.RPCType.HTTP&&(o.route=(0,j.generateRoute)(l));let p="";p=a?`request handler - ${a}`:`middleware - ${b.name||c.ANONYMOUS_NAME}`;let q=f._startSpan(a,b);f._diag.debug("start span",p);let r=!1;function s(){r?f._diag.debug(`span ${q.name} - already finished`):(r=!0,f._diag.debug(`finishing span ${q.name}`),q.end()),m.removeListener("close",s)}return m.addListener("close",s),arguments[k]=f._patchNext(n,s),b.apply(this,arguments)}return Object.defineProperty(h,"length",{value:b.length,writable:!1,configurable:!0}),h}_patchUse(a){let b=this;return function(...c){let d=c[c.length-1],e=c[c.length-2]||"";return c[c.length-1]=b._patchMiddleware(e,d),a.apply(this,c)}}_patchHandle(a){let b=this;return function(){let[c,d]=[0,2],e=arguments[c],f=arguments[d],g=(0,j.addNewStackLayer)(e);return"function"==typeof f&&(arguments[d]=b._patchOut(f,g)),a.apply(this,arguments)}}_patchOut(a,b){return function(...c){return b(),Reflect.apply(a,this,c)}}}c.ConnectInstrumentation=k},590396,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectTypes=c.ConnectNames=c.AttributeNames=c.ANONYMOUS_NAME=c.ConnectInstrumentation=void 0;var d=a.r(822198);Object.defineProperty(c,"ConnectInstrumentation",{enumerable:!0,get:function(){return d.ConnectInstrumentation}}),Object.defineProperty(c,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return d.ANONYMOUS_NAME}});var e=a.r(571897);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}}),Object.defineProperty(c,"ConnectNames",{enumerable:!0,get:function(){return e.ConnectNames}}),Object.defineProperty(c,"ConnectTypes",{enumerable:!0,get:function(){return e.ConnectTypes}})},89709,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(590396),e=a.r(97153),f=a.r(829770),g="Connect",h=f.generateInstrumentOnce(g,()=>new d.ConnectInstrumentation);function i(a,b,c,d){e.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),d(a)}c.connectIntegration=e.defineIntegration(()=>({name:g,setupOnce(){h()}})),c.instrumentConnect=h,c.setupConnectErrorHandler=a=>{a.use(i);let b=e.getClient();b&&b.on("spanStart",a=>{!function(a){let b=e.spanToJSON(a).data,c=b["connect.type"];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.connect`});let d=b["connect.name"];"string"==typeof d&&a.updateName(d)}(a)}),f.ensureIsWrapped(a.use,"connect")}},489149,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},1789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SUPPORTED_VERSIONS=c.MODULE_NAME=void 0,c.MODULE_NAME="knex",c.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},453173,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_SQLITE=c.ATTR_NET_TRANSPORT=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.ATTR_NET_TRANSPORT="net.transport",c.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},152691,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.extractTableName=c.extractPortFromConnectionString=c.extractHostFromConnectionString=c.extractDatabaseFromConnectionString=c.limitLength=c.getName=c.mapSystem=c.otelExceptionFromKnexError=c.getFormatter=void 0;let d=a.r(357223),e=a.r(453173);c.getFormatter=a=>{if(a){if(a.client){if(a.client._formatQuery)return a.client._formatQuery.bind(a.client);else if(a.client.SqlString)return a.client.SqlString.format.bind(a.client.SqlString)}if(a.builder)return a.builder.toString.bind(a.builder)}return()=>""},c.otelExceptionFromKnexError=function(a,b){return a&&a instanceof Error?{message:b,code:a.code,stack:a.stack,name:a.name}:a};let f=new Map([["sqlite3",e.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",d.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);c.mapSystem=a=>f.get(a)||a,c.getName=(a,b,c)=>b?c?`${b} ${a}.${c}`:`${b} ${a}`:a,c.limitLength=(a,b)=>"string"==typeof a&&"number"==typeof b&&0{if(a)try{return new URL(a).pathname?.replace(/^\//,"")||void 0}catch{return}},c.extractHostFromConnectionString=a=>{if(a)try{return new URL(a).hostname||void 0}catch{return}},c.extractPortFromConnectionString=a=>{if(a)try{let b=new URL(a).port;return b?parseInt(b,10):void 0}catch{return}},c.extractTableName=a=>{let b=a?._single?.table;return"object"==typeof b?(0,c.extractTableName)(b):b}},645449,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;let d=a.r(854230),e=a.r(489149),f=a.r(1789),g=a.r(621472),h=a.r(152691),i=a.r(357223),j=a.r(453173),k=Symbol("opentelemetry.instrumentation-knex.context"),l={maxQueryLength:1022,requireParentSpan:!1};class m extends g.InstrumentationBase{_semconvStability;constructor(a={}){super(e.PACKAGE_NAME,e.PACKAGE_VERSION,{...l,...a}),this._semconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new g.InstrumentationNodeModuleDefinition(f.MODULE_NAME,f.SUPPORTED_VERSIONS);return a.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),a}getRunnerNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/runner.js`,f.SUPPORTED_VERSIONS,(a,b)=>(this.ensureWrapped(a.prototype,"query",this.createQueryWrapper(b)),a),(a,b)=>(this._unwrap(a.prototype,"query"),a))}getClientNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/client.js`,f.SUPPORTED_VERSIONS,a=>(this.ensureWrapped(a.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"raw",this.storeContext.bind(this)),a),a=>(this._unwrap(a.prototype,"queryBuilder"),this._unwrap(a.prototype,"schemaBuilder"),this._unwrap(a.prototype,"raw"),a))}createQueryWrapper(a){let b=this;return function(c){return function(e){let f=this.client.config,l=h.extractTableName(this.builder),m=e?.method,n=f?.connection?.connectionString,o=f?.connection?.filename||f?.connection?.database||h.extractDatabaseFromConnectionString(n),{maxQueryLength:p}=b.getConfig(),q={"knex.version":a},r=f?.connection?.filename===":memory:"?"inproc":void 0;if(b._semconvStability&g.SemconvStability.OLD&&Object.assign(q,{[j.ATTR_DB_SYSTEM]:h.mapSystem(this.client.driverName),[j.ATTR_DB_SQL_TABLE]:l,[j.ATTR_DB_OPERATION]:m,[j.ATTR_DB_USER]:f?.connection?.user,[j.ATTR_DB_NAME]:o,[j.ATTR_NET_PEER_NAME]:f?.connection?.host??h.extractHostFromConnectionString(n),[j.ATTR_NET_PEER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n),[j.ATTR_NET_TRANSPORT]:r}),b._semconvStability&g.SemconvStability.STABLE&&Object.assign(q,{[i.ATTR_DB_SYSTEM_NAME]:h.mapSystem(this.client.driverName),[i.ATTR_DB_COLLECTION_NAME]:l,[i.ATTR_DB_OPERATION_NAME]:m,[i.ATTR_DB_NAMESPACE]:o,[i.ATTR_SERVER_ADDRESS]:f?.connection?.host??h.extractHostFromConnectionString(n),[i.ATTR_SERVER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n)}),p){let a=h.limitLength(e?.sql,p);b._semconvStability&g.SemconvStability.STABLE&&(q[i.ATTR_DB_QUERY_TEXT]=a),b._semconvStability&g.SemconvStability.OLD&&(q[j.ATTR_DB_STATEMENT]=a)}let s=this.builder[k]||d.context.active(),t=d.trace.getSpan(s),u=t&&d.trace.isSpanContextValid(t.spanContext());if(b._config.requireParentSpan&&!u)return c.bind(this)(...arguments);let v=b.tracer.startSpan(h.getName(o,m,l),{kind:d.SpanKind.CLIENT,attributes:q},s),w=d.trace.setSpan(d.context.active(),v);return d.context.with(w,c,this,...arguments).then(a=>(v.end(),a)).catch(a=>{let b=h.getFormatter(this)(e.sql,e.bindings||[]),c=a.message.replace(b+" - ",""),f=h.otelExceptionFromKnexError(a,c);throw v.recordException(f),v.setStatus({code:d.SpanStatusCode.ERROR,message:c}),v.end(),a})}}}storeContext(a){return function(){let b=a.apply(this,arguments);return Object.defineProperty(b,k,{value:d.context.active()}),b}}ensureWrapped(a,b,c){(0,g.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,c)}}c.KnexInstrumentation=m},82600,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;var d=a.r(645449);Object.defineProperty(c,"KnexInstrumentation",{enumerable:!0,get:function(){return d.KnexInstrumentation}})},722836,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(82600),e=a.r(97153),f=a.r(829770),g="Knex",h=f.generateInstrumentOnce(g,()=>new d.KnexInstrumentation({requireParentSpan:!0})),i=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{data:b}=e.spanToJSON(a);"knex.version"in b&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});c.instrumentKnex=h,c.knexIntegration=i},724445,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MSSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MSSQL="mssql"},99286,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.once=c.getSpanName=void 0,c.getSpanName=function(a,b,c,d){return"execBulkLoad"===a&&d&&b?`${a} ${d} ${b}`:"callProcedure"===a?b?`${a} ${c} ${b}`:`${a} ${c}`:b?`${a} ${b}`:`${a}`},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}}},348421,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},511311,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=c.INJECTED_CTX=void 0;let d=a.r(854230),e=a.r(427699),f=a.r(621472),g=a.r(357223),h=a.r(724445),i=a.r(99286),j=a.r(348421),k=Symbol("opentelemetry.instrumentation-tedious.current-database");c.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let l=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function m(a){Object.defineProperty(this,k,{value:a,writable:!0})}class n extends f.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,f.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new f.InstrumentationNodeModuleDefinition(n.COMPONENT,[">=1.11.0 <20"],a=>{let b=a.Connection.prototype;for(let c of l)(0,f.isWrapped)(b[c])&&this._unwrap(b,c),this._wrap(b,c,this._patchQuery(c,a));return(0,f.isWrapped)(b.connect)&&this._unwrap(b,"connect"),this._wrap(b,"connect",this._patchConnect),a},a=>{if(void 0===a)return;let b=a.Connection.prototype;for(let a of l)this._unwrap(b,a);this._unwrap(b,"connect")})]}_patchConnect(a){return function(){return m.call(this,this.config?.options?.database),this.removeListener("databaseChange",m),this.on("databaseChange",m),this.once("end",()=>{this.removeListener("databaseChange",m)}),a.apply(this,arguments)}}_buildTraceparent(a){let b=a.spanContext();return`00-${b.traceId}-${b.spanId}-0${Number(b.traceFlags||d.TraceFlags.NONE).toString(16)}`}_injectContextInfo(a,b,d){return new Promise(e=>{try{let f=new b.Request("set context_info @opentelemetry_traceparent",a=>{e()});Object.defineProperty(f,c.INJECTED_CTX,{value:!0});let g=Buffer.from(d,"utf8");f.addParameter("opentelemetry_traceparent",b.TYPES.VarBinary,g,{length:g.length}),a.execSql(f)}catch{e()}})}_shouldInjectFor(a){return"execSql"===a||"execSqlBatch"===a||"callProcedure"===a||"execute"===a}_patchQuery(a,b){return j=>{let l=this;function m(m){if(m?.[c.INJECTED_CTX])return j.apply(this,arguments);if(!(m instanceof e.EventEmitter))return l._diag.warn(`Unexpected invocation of patched ${a} method. Span not recorded`),j.apply(this,arguments);let n=0,o=0,p=()=>o++,q=()=>n++,r=this[k],s="sp_prepare"===m.sqlTextOrProcedure&&m.parametersByName?.stmt?.value?m.parametersByName.stmt.value:m.sqlTextOrProcedure,t={};l._dbSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_DB_SYSTEM]=h.DB_SYSTEM_VALUE_MSSQL,t[h.ATTR_DB_NAME]=r,t[h.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,t[h.ATTR_DB_STATEMENT]=s,t[h.ATTR_DB_SQL_TABLE]=m.table),l._dbSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_DB_NAMESPACE]=r,t[g.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,t[g.ATTR_DB_QUERY_TEXT]=s,t[g.ATTR_DB_COLLECTION_NAME]=m.table),l._netSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_NET_PEER_NAME]=this.config?.server,t[h.ATTR_NET_PEER_PORT]=this.config?.options?.port),l._netSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_SERVER_ADDRESS]=this.config?.server,t[g.ATTR_SERVER_PORT]=this.config?.options?.port);let u=l.tracer.startSpan((0,i.getSpanName)(a,r,s,m.table),{kind:d.SpanKind.CLIENT,attributes:t}),v=(0,i.once)(a=>{m.removeListener("done",p),m.removeListener("doneInProc",p),m.removeListener("doneProc",q),m.removeListener("error",v),this.removeListener("end",v),u.setAttribute("tedious.procedure_count",n),u.setAttribute("tedious.statement_count",o),a&&u.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),u.end()});m.on("done",p),m.on("doneInProc",p),m.on("doneProc",q),m.once("error",v),this.on("end",v),"function"==typeof m.callback?l._wrap(m,"callback",l._patchCallbackQuery(v)):l._diag.error("Expected request.callback to be a function");let w=()=>d.context.with(d.trace.setSpan(d.context.active(),u),j,this,...arguments);if(!(l.getConfig().enableTraceContextPropagation&&l._shouldInjectFor(a)))return w();let x=l._buildTraceparent(u);l._injectContextInfo(this,b,x).finally(w)}return Object.defineProperty(m,"length",{value:j.length,writable:!1}),m}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c),b.apply(this,arguments)}}}c.TediousInstrumentation=n},734036,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=void 0;var d=a.r(511311);Object.defineProperty(c,"TediousInstrumentation",{enumerable:!0,get:function(){return d.TediousInstrumentation}})},441418,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(734036),e=a.r(97153),f=a.r(829770),g=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),h="Tedious",i=f.generateInstrumentOnce(h,()=>new d.TediousInstrumentation({})),j=e.defineIntegration(()=>{let a;return{name:h,setupOnce(){let b=i();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{description:b,data:c}=e.spanToJSON(a);if(!b||"mssql"!==c["db.system"])return;let d=b.split(" ")[0]||"";g.has(d)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});c.instrumentTedious=i,c.tediousIntegration=j},93496,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},779155,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(93496),g="generic-pool";class h extends e.InstrumentationBase{_isDisabled=!1;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition(g,[">=3.0.0 <4"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquirePatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.4.0 <3"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <2.4"],a=>(this._isDisabled=!1,(0,e.isWrapped)(a.Pool)&&this._unwrap(a,"Pool"),this._wrap(a,"Pool",this._poolWrapper.bind(this)),a),a=>(this._isDisabled=!0,a))]}_acquirePatcher(a){let b=this;return function(...c){let e=d.context.active(),f=b.tracer.startSpan("generic-pool.acquire",{},e);return d.context.with(d.trace.setSpan(e,f),()=>a.call(this,...c).then(a=>(f.end(),a),a=>{throw f.recordException(a),f.end(),a}))}}_poolWrapper(a){let b=this;return function(){let c=a.apply(this,arguments);return b._wrap(c,"acquire",b._acquireWithCallbacksPatcher.bind(b)),c}}_acquireWithCallbacksPatcher(a){let b=this;return function(c,e){if(b._isDisabled)return a.call(this,c,e);let f=d.context.active(),g=b.tracer.startSpan("generic-pool.acquire",{},f);return d.context.with(d.trace.setSpan(f,g),()=>{a.call(this,(a,b)=>{if(g.end(),c)return c(a,b)},e)})}}}c.GenericPoolInstrumentation=h},790504,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;var d=a.r(779155);Object.defineProperty(c,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return d.GenericPoolInstrumentation}})},975446,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(790504),e=a.r(97153),f=a.r(829770),g="GenericPool",h=f.generateInstrumentOnce(g,()=>new d.GenericPoolInstrumentation({}));c.genericPoolIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let b=e.spanToJSON(a).description;("generic-pool.aquire"===b||"generic-pool.acquire"===b)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),c.instrumentGenericPool=h},915181,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.31.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},366750,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;let d=a.r(621472),e=a.r(854230),f=a.r(915181),g="dataloader";function h(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class i extends d.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new d.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <3"],a=>{let b=h(a);return this._patchLoad(b.prototype),this._patchLoadMany(b.prototype),this._patchPrime(b.prototype),this._patchClear(b.prototype),this._patchClearAll(b.prototype),this._getPatchedConstructor(b)},a=>{let b=h(a);["load","loadMany","prime","clear","clearAll"].forEach(a=>{(0,d.isWrapped)(b.prototype[a])&&this._unwrap(b.prototype,a)})})]}shouldCreateSpans(){let a=this.getConfig();return void 0!==e.trace.getSpan(e.context.active())||!a.requireParentSpan}getSpanName(a,b){let c=a.name;return null==c?`${g}.${b}`:`${g}.${b} ${c}`}_wrapBatchLoadFn(a){let b=this;return function(...c){if(!b.isEnabled()||!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"batch"),{links:this._batch?.spanLinks},d);return e.context.with(e.trace.setSpan(d,f),()=>a.apply(this,c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a}))}}_getPatchedConstructor(a){let b=this,c=a.prototype;if(!b.isEnabled())return a;function e(...c){return"function"==typeof c[0]&&((0,d.isWrapped)(c[0])&&b._unwrap(c,0),c[0]=b._wrapBatchLoadFn(c[0])),a.apply(this,c)}return e.prototype=c,e}_patchLoad(a){(0,d.isWrapped)(a.load)&&this._unwrap(a,"load"),this._wrap(a,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"load"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>{let b=a.call(this,...c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:f.spanContext()})),b})}}_patchLoadMany(a){(0,d.isWrapped)(a.loadMany)&&this._unwrap(a,"loadMany"),this._wrap(a,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"loadMany"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c).then(a=>(f.end(),a)))}}_patchPrime(a){(0,d.isWrapped)(a.prime)&&this._unwrap(a,"prime"),this._wrap(a,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"prime"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClear(a){(0,d.isWrapped)(a.clear)&&this._unwrap(a,"clear"),this._wrap(a,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clear"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClearAll(a){(0,d.isWrapped)(a.clearAll)&&this._unwrap(a,"clearAll"),this._wrap(a,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clearAll"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}}c.DataloaderInstrumentation=i},430363,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;var d=a.r(366750);Object.defineProperty(c,"DataloaderInstrumentation",{enumerable:!0,get:function(){return d.DataloaderInstrumentation}})},235153,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(430363),e=a.r(97153),f=a.r(829770),g="Dataloader",h=f.generateInstrumentOnce(g,()=>new d.DataloaderInstrumentation({requireParentSpan:!0}));c.dataloaderIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>{b.on("spanStart",a=>{let b=e.spanToJSON(a);b.description?.startsWith("dataloader")&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===b.description||"dataloader.loadMany"===b.description||"dataloader.batch"===b.description)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),c.instrumentDataloader=h},73198,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION=void 0,c.ATTR_MESSAGING_OPERATION="messaging.operation",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port"},638354,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_MESSAGING_CONVERSATION_ID=c.OLD_ATTR_MESSAGING_MESSAGE_ID=c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=c.ATTR_MESSAGING_URL=c.ATTR_MESSAGING_PROTOCOL_VERSION=c.ATTR_MESSAGING_PROTOCOL=c.MESSAGING_OPERATION_VALUE_PROCESS=c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=c.ATTR_MESSAGING_DESTINATION_KIND=c.ATTR_MESSAGING_DESTINATION=void 0,c.ATTR_MESSAGING_DESTINATION="messaging.destination",c.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",c.MESSAGING_OPERATION_VALUE_PROCESS="process",c.ATTR_MESSAGING_PROTOCOL="messaging.protocol",c.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",c.ATTR_MESSAGING_URL="messaging.url",c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",c.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",c.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},677887,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.DEFAULT_CONFIG=c.EndOperation=void 0,(d=c.EndOperation||(c.EndOperation={})).AutoAck="auto ack",d.Ack="ack",d.AckAll="ackAll",d.Reject="reject",d.Nack="nack",d.NackAll="nackAll",d.ChannelClosed="channel closed",d.ChannelError="channel error",d.InstrumentationTimeout="instrumentation timeout",c.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},722650,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isConfirmChannelTracing=c.unmarkConfirmChannelTracing=c.markConfirmChannelTracing=c.getConnectionAttributesFromUrl=c.getConnectionAttributesFromServer=c.normalizeExchange=c.CONNECTION_ATTRIBUTES=c.CHANNEL_CONSUME_TIMEOUT_TIMER=c.CHANNEL_SPANS_NOT_ENDED=c.MESSAGE_STORED_SPAN=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(73198),h=a.r(638354);c.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),c.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),c.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),c.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let i=(0,d.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");c.normalizeExchange=a=>""!==a?a:"";let j=(a,b)=>a||("AMQP"===b?5672:5671),k=a=>{let b=a||"amqp";return(b.endsWith(":")?b.substring(0,b.length-1):b).toUpperCase()},l=(a,b,c,e)=>c?{[b]:c}:(d.diag.error(`amqplib instrumentation: could not extract connection attribute ${e} from user supplied url`,{url:a}),{});c.getConnectionAttributesFromServer=a=>{let b=a.serverProperties.product?.toLowerCase?.();return b?{[g.ATTR_MESSAGING_SYSTEM]:b}:{}},c.getConnectionAttributesFromUrl=(a,b)=>{let c={[h.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(a=a||"amqp://localhost")){let d=a,i=k(d?.protocol);Object.assign(c,{...l(a,h.ATTR_MESSAGING_PROTOCOL,i,"protocol")});let m=d?.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(a,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(a,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(d.port,i);b&e.SemconvStability.OLD&&Object.assign(c,l(a,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(a,f.ATTR_SERVER_PORT,n,"port"))}else{let i=a.replace(/:[^:@/]*@/,":***@");c[h.ATTR_MESSAGING_URL]=i;try{let a=new URL(i),d=k(a.protocol);Object.assign(c,{...l(i,h.ATTR_MESSAGING_PROTOCOL,d,"protocol")});let m=a.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(i,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(i,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(a.port?parseInt(a.port):void 0,d);b&e.SemconvStability.OLD&&Object.assign(c,l(i,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(i,f.ATTR_SERVER_PORT,n,"port"))}catch(a){d.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:i,err:a})}}return c},c.markConfirmChannelTracing=a=>a.setValue(i,!0),c.unmarkConfirmChannelTracing=a=>a.deleteValue(i),c.isConfirmChannelTracing=a=>!0===a.getValue(i)},109866,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.61.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},232536,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AmqplibInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(73198),h=a.r(638354),i=a.r(677887),j=a.r(722650),k=a.r(109866),l=[">=0.5.5 <1"];class m extends f.InstrumentationBase{_netSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...i.DEFAULT_CONFIG,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...i.DEFAULT_CONFIG,...a})}init(){let a=new f.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),b=new f.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),c=new f.InstrumentationNodeModuleFile("amqplib/lib/connect.js",l,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new f.InstrumentationNodeModuleDefinition("amqplib",l,void 0,void 0,[a,c,b])}patchConnect(a){return a=this.unpatchConnect(a),(0,f.isWrapped)(a.connect)||this._wrap(a,"connect",this.getConnectPatch.bind(this)),a}unpatchConnect(a){return(0,f.isWrapped)(a.connect)&&this._unwrap(a,"connect"),a}patchChannelModel(a,b){return(0,f.isWrapped)(a.Channel.prototype.publish)||this._wrap(a.Channel.prototype,"publish",this.getPublishPatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.consume)||this._wrap(a.Channel.prototype,"consume",this.getConsumePatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.ack)||this._wrap(a.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,i.EndOperation.Ack)),(0,f.isWrapped)(a.Channel.prototype.nack)||this._wrap(a.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,i.EndOperation.Nack)),(0,f.isWrapped)(a.Channel.prototype.reject)||this._wrap(a.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,i.EndOperation.Reject)),(0,f.isWrapped)(a.Channel.prototype.ackAll)||this._wrap(a.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,i.EndOperation.AckAll)),(0,f.isWrapped)(a.Channel.prototype.nackAll)||this._wrap(a.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,i.EndOperation.NackAll)),(0,f.isWrapped)(a.Channel.prototype.emit)||this._wrap(a.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)||this._wrap(a.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,b)),a}unpatchChannelModel(a){return(0,f.isWrapped)(a.Channel.prototype.publish)&&this._unwrap(a.Channel.prototype,"publish"),(0,f.isWrapped)(a.Channel.prototype.consume)&&this._unwrap(a.Channel.prototype,"consume"),(0,f.isWrapped)(a.Channel.prototype.ack)&&this._unwrap(a.Channel.prototype,"ack"),(0,f.isWrapped)(a.Channel.prototype.nack)&&this._unwrap(a.Channel.prototype,"nack"),(0,f.isWrapped)(a.Channel.prototype.reject)&&this._unwrap(a.Channel.prototype,"reject"),(0,f.isWrapped)(a.Channel.prototype.ackAll)&&this._unwrap(a.Channel.prototype,"ackAll"),(0,f.isWrapped)(a.Channel.prototype.nackAll)&&this._unwrap(a.Channel.prototype,"nackAll"),(0,f.isWrapped)(a.Channel.prototype.emit)&&this._unwrap(a.Channel.prototype,"emit"),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)&&this._unwrap(a.ConfirmChannel.prototype,"publish"),a}getConnectPatch(a){let b=this;return function(c,d,e){return a.call(this,c,d,function(a,d){if(null==a){let a=(0,j.getConnectionAttributesFromUrl)(c,b._netSemconvStability),e=(0,j.getConnectionAttributesFromServer)(d);d[j.CONNECTION_ATTRIBUTES]={...a,...e}}e.apply(this,arguments)})}}getChannelEmitPatch(a){let b=this;return function(c){if("close"===c){b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelClosed,void 0);let a=this[j.CHANNEL_CONSUME_TIMEOUT_TIMER];a&&clearInterval(a),this[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===c&&b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelError,void 0);return a.apply(this,arguments)}}getAckAllPatch(a,b,c){let d=this;return function(e){return d.endAllSpansOnChannel(this,a,b,e),c.apply(this,arguments)}}getAckPatch(a,b,c){let d=this;return function(e,f,g){let h=b===i.EndOperation.Reject?f:g,k=this[j.CHANNEL_SPANS_NOT_ENDED]??[],l=k.findIndex(a=>a.msg===e);if(l<0)d.endConsumerSpan(e,a,b,h);else if(b!==i.EndOperation.Reject&&f){for(let c=0;c<=l;c++)d.endConsumerSpan(k[c].msg,a,b,h);k.splice(0,l+1)}else d.endConsumerSpan(e,a,b,h),k.splice(l,1);return c.apply(this,arguments)}}getConsumePatch(a,b){let c=this;return function(k,l,m){let n=this;if(!Object.prototype.hasOwnProperty.call(n,j.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:a}=c.getConfig();if(a){let b=setInterval(()=>{c.checkConsumeTimeoutOnChannel(n)},a);b.unref(),n[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=b}n[j.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(b){let o;if(!b)return l.call(this,b);let p=b.properties.headers??{},q=d.propagation.extract(d.ROOT_CONTEXT,p),r=b.fields?.exchange;if(c._config.useLinksForConsume){let a=q?d.trace.getSpan(q)?.spanContext():void 0;q=void 0,a&&(o=[{context:a}])}let s=c.tracer.startSpan(`${k} process`,{kind:d.SpanKind.CONSUMER,attributes:{...n?.connection?.[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:r,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:b.fields?.routingKey,[g.ATTR_MESSAGING_OPERATION]:h.MESSAGING_OPERATION_VALUE_PROCESS,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:b?.properties.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:b?.properties.correlationId},links:o},q),{consumeHook:t}=c.getConfig();t&&(0,f.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:a,msg:b}),a=>{a&&d.diag.error("amqplib instrumentation: consumerHook error",a)},!0),m?.noAck||(n[j.CHANNEL_SPANS_NOT_ENDED].push({msg:b,timeOfConsume:(0,e.hrTime)()}),b[j.MESSAGE_STORED_SPAN]=s);let u=q||d.ROOT_CONTEXT;d.context.with(d.trace.setSpan(u,s),()=>{l.call(this,b)}),m?.noAck&&(c.callConsumeEndHook(s,b,!1,i.EndOperation.AutoAck),s.end())},b.apply(this,arguments)}}getConfirmedPublishPatch(a,b){let c=this;return function(e,g,h,i,k){let{span:l,modifiedOptions:m}=c.createPublishSpan(c,e,g,this,i),{publishHook:n}=c.getConfig();n&&(0,f.safeExecuteInTheMiddle)(()=>n(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:m,isConfirmChannel:!0}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let o=(0,j.markConfirmChannelTracing)(d.context.active()),p=[...arguments];return p[3]=m,p[4]=d.context.bind((0,j.unmarkConfirmChannelTracing)(d.trace.setSpan(o,l)),function(b,j){try{k?.call(this,b,j)}finally{let{publishConfirmHook:j}=c.getConfig();j&&(0,f.safeExecuteInTheMiddle)(()=>j(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:i,isConfirmChannel:!0,confirmError:b}),a=>{a&&d.diag.error("amqplib instrumentation: publishConfirmHook error",a)},!0),b&&l.setStatus({code:d.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),l.end()}}),d.context.with(o,b.bind(this,...p))}}getPublishPatch(a,b){let c=this;return function(e,g,h,i){if((0,j.isConfirmChannelTracing)(d.context.active()))return b.apply(this,arguments);{let{span:j,modifiedOptions:k}=c.createPublishSpan(c,e,g,this,i),{publishHook:l}=c.getConfig();l&&(0,f.safeExecuteInTheMiddle)(()=>l(j,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:k,isConfirmChannel:!1}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let m=[...arguments];m[3]=k;let n=b.apply(this,m);return j.end(),n}}}createPublishSpan(a,b,c,e,f){let g=(0,j.normalizeExchange)(b),i=a.tracer.startSpan(`publish ${g}`,{kind:d.SpanKind.PRODUCER,attributes:{...e.connection[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:b,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:c,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:f?.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:f?.correlationId}}),k=f??{};return k.headers=k.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),i),k.headers),{span:i,modifiedOptions:k}}endConsumerSpan(a,b,c,e){let f=a[j.MESSAGE_STORED_SPAN];f&&(!1!==b&&f.setStatus({code:d.SpanStatusCode.ERROR,message:c!==i.EndOperation.ChannelClosed&&c!==i.EndOperation.ChannelError?`${c} called on message${!0===e?" with requeue":!1===e?" without requeue":""}`:c}),this.callConsumeEndHook(f,a,b,c),f.end(),a[j.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(a,b,c,d){(a[j.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(a=>{this.endConsumerSpan(a.msg,b,c,d)}),a[j.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(a,b,c,e){let{consumeEndHook:g}=this.getConfig();g&&(0,f.safeExecuteInTheMiddle)(()=>g(a,{msg:b,rejected:c,endOperation:e}),a=>{a&&d.diag.error("amqplib instrumentation: consumerEndHook error",a)},!0)}checkConsumeTimeoutOnChannel(a){let b,c=(0,e.hrTime)(),d=a[j.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:f}=this.getConfig();for(b=0;b{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EndOperation=c.DEFAULT_CONFIG=c.AmqplibInstrumentation=void 0;var d=a.r(232536);Object.defineProperty(c,"AmqplibInstrumentation",{enumerable:!0,get:function(){return d.AmqplibInstrumentation}});var e=a.r(677887);Object.defineProperty(c,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return e.DEFAULT_CONFIG}}),Object.defineProperty(c,"EndOperation",{enumerable:!0,get:function(){return e.EndOperation}})},109041,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(129728),e=a.r(97153),f=a.r(829770),g="Amqplib",h={consumeEndHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.consumer")},publishHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.publisher")}},i=f.generateInstrumentOnce(g,()=>new d.AmqplibInstrumentation(h));c.amqplibIntegration=e.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentAmqplib=i},413990,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.INTEGRATION_NAME="VercelAI"},167991,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(413990),g=[">=3.0.0 <7"],h=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function i(a){"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)&&(function(a){for(let b of a){if(!("object"==typeof b&&null!==b&&"type"in b&&"error"in b&&"toolName"in b&&"toolCallId"in b&&"tool-error"===b.type&&b.error instanceof Error))continue;let a=e._INTERNAL_getSpanContextForToolCallId(b.toolCallId);a?e.withScope(c=>{c.setContext("trace",{trace_id:a.traceId,span_id:a.spanId}),c.setTag("vercel.ai.tool.name",b.toolName),c.setTag("vercel.ai.tool.callId",b.toolCallId),c.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):e.withScope(a=>{a.setTag("vercel.ai.tool.name",b.toolName),a.setTag("vercel.ai.tool.callId",b.toolCallId),a.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(a.content),j(a.content))}function j(a){for(let b of a)"object"==typeof b&&null!==b&&"toolCallId"in b&&"string"==typeof b.toolCallId&&e._INTERNAL_cleanupToolCallSpanContext(b.toolCallId)}function k(a,b,c,d){return{recordInputs:a?.recordInputs!==void 0?a.recordInputs:void 0!==b.recordInputs?b.recordInputs:!0===c||d,recordOutputs:a?.recordOutputs!==void 0?a.recordOutputs:void 0!==b.recordOutputs?b.recordOutputs:!0===c||d}}class l extends d.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(a={}){super("@sentry/instrumentation-vercel-ai",e.SDK_VERSION,a),l.prototype.__init.call(this),l.prototype.__init2.call(this)}init(){return new d.InstrumentationNodeModuleDefinition("ai",g,this._patch.bind(this))}callWhenPatched(a){this._isPatched?a():this._callbacks.push(a)}_patch(a){this._isPatched=!0,this._callbacks.forEach(a=>a()),this._callbacks=[];let b=a=>new Proxy(a,{apply:(a,b,c)=>{let d=c[0].experimental_telemetry||{},g=d.isEnabled,h=e.getClient(),j=h?.getIntegrationByName(f.INTEGRATION_NAME),{recordInputs:l,recordOutputs:m}=k(j?.options,d,g,!!j&&!!h?.getOptions().sendDefaultPii);return c[0].experimental_telemetry={...d,isEnabled:void 0===g||g,recordInputs:l,recordOutputs:m},e.handleCallbackErrors(()=>Reflect.apply(a,b,c),a=>{a&&"object"==typeof a&&e.addNonEnumerableProperty(a,"_sentry_active_span",e.getActiveSpan())},()=>{},a=>{i(a)})}});if("[object Module]"===Object.prototype.toString.call(a)){for(let c of h)null!=a[c]&&(a[c]=b(a[c]));return a}{let c=h.reduce((c,d)=>(null!=a[d]&&(c[d]=b(a[d])),c),{});return{...a,...c}}}}c.SentryVercelAiInstrumentation=l,c.cleanupToolCallSpanContexts=j,c.determineRecordingSettings=k,c.processToolCallResults=i},846940,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(413990),g=a.r(167991),h=e.generateInstrumentOnce(f.INTEGRATION_NAME,()=>new g.SentryVercelAiInstrumentation({})),i=d.defineIntegration((a={})=>{let b;return{name:f.INTEGRATION_NAME,options:a,setupOnce(){b=h()},afterAllSetup(c){let e;a.force??(e=c.getIntegrationByName("Modules"),!!e?.getModules?.()?.ai)?d.addVercelAiProcessors(c):b?.callWhenPatched(()=>d.addVercelAiProcessors(c))}}});c.instrumentVercelAi=h,c.vercelAIIntegration=i},921823,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=4.0.0 <7"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-openai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("openai",f,this._patch.bind(this))}_patch(a){let b=a;return b=this._patchClient(b,"OpenAI"),b=this._patchClient(b,"AzureOpenAI")}_patchClient(a,b){let c=a[b];if(!c)return a;let d=this.getConfig(),f=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.OPENAI_INTEGRATION_NAME))return Reflect.construct(c,a);let b=Reflect.construct(c,a);return e.instrumentOpenAiClient(b,d)};for(let a of(Object.setPrototypeOf(f,c),Object.setPrototypeOf(f.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(f,a,b)}try{a[b]=f}catch{Object.defineProperty(a,b,{value:f,writable:!0,configurable:!0,enumerable:!0})}if(a.default===c)try{a.default=f}catch{Object.defineProperty(a,"default",{value:f,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryOpenAiInstrumentation=g},245727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(921823),g=e.generateInstrumentOnce(d.OPENAI_INTEGRATION_NAME,a=>new f.SentryOpenAiInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.OPENAI_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentOpenAi=g,c.openAIIntegration=h},749490,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.19.2 <1.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-anthropic-ai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",f,this._patch.bind(this))}_patch(a){let b=a.Anthropic,c=this.getConfig(),d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentAnthropicAiClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}try{a.Anthropic=d}catch{Object.defineProperty(a,"Anthropic",{value:d,writable:!0,configurable:!0,enumerable:!0})}if(a.default===b)try{a.default=d}catch{Object.defineProperty(a,"default",{value:d,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryAnthropicAiInstrumentation=g},655203,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(749490),g=e.generateInstrumentOnce(d.ANTHROPIC_AI_INTEGRATION_NAME,a=>new f.SentryAnthropicAiInstrumentation(a));c.anthropicAIIntegration=d.defineIntegration((a={})=>({name:d.ANTHROPIC_AI_INTEGRATION_NAME,options:a,setupOnce(){g(a)}})),c.instrumentAnthropicAi=g},376746,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.10.0 <2"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-google-genai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@google/genai",f,a=>this._patch(a),a=>a,[new d.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",f,a=>this._patch(a),a=>a)])}_patch(a){let b=a.GoogleGenAI,c=this.getConfig();if("function"!=typeof b)return a;let d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentGoogleGenAIClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}return e.replaceExports(a,"GoogleGenAI",d),a}}c.SentryGoogleGenAiInstrumentation=g},257489,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(376746),g=e.generateInstrumentOnce(d.GOOGLE_GENAI_INTEGRATION_NAME,a=>new f.SentryGoogleGenAiInstrumentation(a));c.googleGenAIIntegration=d.defineIntegration((a={})=>({name:d.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){g(a)}})),c.instrumentGoogleGenAI=g},853076,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.1.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langchain",e.SDK_VERSION,a)}init(){let a=[];for(let b of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])a.push(new d.InstrumentationNodeModuleDefinition(b,f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile(`${b}/dist/index.cjs`,f,this._patch.bind(this),a=>a)]));return a.push(new d.InstrumentationNodeModuleDefinition("langchain",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",f,this._patch.bind(this),a=>a)])),a}_patch(a){e._INTERNAL_skipAiProviderWrapping([e.OPENAI_INTEGRATION_NAME,e.ANTHROPIC_AI_INTEGRATION_NAME,e.GOOGLE_GENAI_INTEGRATION_NAME]);let b=e.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(a,b),a}_patchRunnableMethods(a,b){let c=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],d=Object.values(a.universal_exports??a).find(a=>"function"==typeof a&&c.includes(a.name));if(!d)return;let e=d.prototype;if(!e.__sentry_patched__)for(let a of(e.__sentry_patched__=!0,["invoke","stream","batch"])){let c=e[a];"function"==typeof c&&(e[a]=function(a,b,c){return new Proxy(a,{apply(a,c,d){var e,f;let g=d[1];(!g||"object"!=typeof g||Array.isArray(g))&&(g={},d[1]=g);let h=(e=g.callbacks,f=b,e?Array.isArray(e)?e.includes(f)?e:[...e,f]:"object"==typeof e?[e,f]:e:[f]);return g.callbacks=h,Reflect.apply(a,c,d)}})}(c,b))}}}c.SentryLangChainInstrumentation=g},301180,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(853076),g=e.generateInstrumentOnce(d.LANGCHAIN_INTEGRATION_NAME,a=>new f.SentryLangChainInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGCHAIN_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangChain=g,c.langChainIntegration=h},411643,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.0.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langgraph",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@langchain/langgraph",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",f,this._patch.bind(this),a=>a)])}_patch(a){return a.StateGraph&&"function"==typeof a.StateGraph&&e.instrumentLangGraph(a.StateGraph.prototype,this.getConfig()),a}}c.SentryLangGraphInstrumentation=g},586973,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(411643),g=e.generateInstrumentOnce(d.LANGGRAPH_INTEGRATION_NAME,a=>new f.SentryLangGraphInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGGRAPH_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangGraph=g,c.langGraphIntegration=h},630843,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));c.buildLaunchDarklyFlagUsedHandlerShim=function(){return d.isBrowser()||d.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},c.launchDarklyIntegrationShim=e},521745,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));c.OpenFeatureIntegrationHookShim=class{constructor(){d.isBrowser()||d.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},c.openFeatureIntegrationShim=e},55267,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.statsigIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},224314,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.unleashIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},916562,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.growthbookIntegrationShim=a.r(97153).growthbookIntegration},114498,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(761095),e=a.r(854230),f=a.r(621472),g=a.r(357223);function h(a,b,c,d,e){var f,g,h,l,m,n,o,p;return i(a,c),b(a,"addDoc",(f=d,g=e,function(a){return function(b,c){let d=k(f,"addDoc",b);return g(d),j(d,()=>a(b,c))}})),b(a,"getDocs",(h=d,l=e,function(a){return function(b){let c=k(h,"getDocs",b);return l(c),j(c,()=>a(b))}})),b(a,"setDoc",(m=d,n=e,function(a){return function(b,c,d){let e=k(m,"setDoc",b.parent||b);return n(e),j(e,()=>void 0!==d?a(b,c,d):a(b,c))}})),b(a,"deleteDoc",(o=d,p=e,function(a){return function(b){let c=k(o,"deleteDoc",b.parent||b);return p(c),j(c,()=>a(b))}})),a}function i(a,b){for(let c of["addDoc","getDocs","setDoc","deleteDoc"])f.isWrapped(a[c])&&b(a,c);return a}function j(a,b){return e.context.with(e.trace.setSpan(e.context.active(),a),()=>f.safeExecuteInTheMiddle(()=>b(),b=>{b&&a.recordException(b),a.end()},!0))}function k(a,b,c){let d=a.startSpan(`${b} ${c.path}`,{kind:e.SpanKind.CLIENT});return function(a,b){let c=b.firestore.app,d=c.options,e=(b.firestore.toJSON()||{}).settings||{},f={[g.ATTR_DB_COLLECTION_NAME]:b.path,[g.ATTR_DB_NAMESPACE]:c.name,[g.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":b.type,"firebase.firestore.options.projectId":d.projectId,"firebase.firestore.options.appId":d.appId,"firebase.firestore.options.messagingSenderId":d.messagingSenderId,"firebase.firestore.options.storageBucket":d.storageBucket},{address:h,port:i}=l(e);h&&(f[g.ATTR_SERVER_ADDRESS]=h),i&&(f[g.ATTR_SERVER_PORT]=i),a.setAttributes(f)}(d,c),d.setAttribute(g.ATTR_DB_OPERATION_NAME,b),d}function l(a){let b,c;if("string"==typeof a.host)if(a.host.startsWith("[")){if(a.host.endsWith("]"))b=a.host.replace(/^\[|\]$/g,"");else if(a.host.includes("]:")){let d=a.host.lastIndexOf(":");-1!==d&&(b=a.host.slice(1,d).replace(/^\[|\]$/g,""),c=a.host.slice(d+1))}}else if(d.isIPv6(a.host))b=a.host;else{let d=a.host.lastIndexOf(":");-1!==d?(b=a.host.slice(0,d),c=a.host.slice(d+1)):b=a.host}return{address:b,port:c?parseInt(c,10):void 0}}c.getPortAndAddress=l,c.patchFirestore=function(a,b,c,d,g){let j=()=>{},k=g.firestoreSpanCreationHook;"function"==typeof k&&(j=a=>{f.safeExecuteInTheMiddle(()=>k(a),a=>{a&&e.diag.error(a?.message)},!0)});let l=new f.InstrumentationNodeModuleDefinition("@firebase/firestore",b,b=>h(b,c,d,a,j));for(let e of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])l.files.push(new f.InstrumentationNodeModuleFile(e,b,b=>h(b,c,d,a,j),a=>i(a,d)));return l}},10223,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472);function f(a,b,c){return function(e){return function(...f){let g="function"==typeof f[0]?f[0]:f[1],h="function"==typeof f[0]?void 0:f[0];if(!g)return e.call(this,...f);let i=async function(...e){let f=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",h=a.startSpan(`firebase.function.${c}`,{kind:d.SpanKind.SERVER}),i={"faas.name":f,"faas.trigger":c,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(i["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(i["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),h.setAttributes(i),b?.requestHook?.(h),d.context.with(d.trace.setSpan(d.context.active(),h),async()=>{let a,c;try{c=await g.apply(this,e)}catch(b){a=b}if(b?.responseHook?.(h,a),a&&h.recordException(a),h.end(),a)throw await b?.errorHook?.(h,a),a;return c})};return h?e.call(this,h,i):e.call(this,i)}}}function g(a,b){for(let c of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])e.isWrapped(a[c])&&b(a,c);return a}c.patchFunctions=function(a,b,c,h,i){let j=()=>{},k=()=>{},l=i.functions?.errorHook,m=i.functions?.requestHook,n=i.functions?.responseHook;"function"==typeof n&&(k=(a,b)=>{e.safeExecuteInTheMiddle(()=>n(a,b),a=>{a&&d.diag.error(a?.message)},!0)}),"function"==typeof m&&(j=a=>{e.safeExecuteInTheMiddle(()=>m(a),a=>{a&&d.diag.error(a?.message)},!0)});let o=new e.InstrumentationNodeModuleDefinition("firebase-functions",b);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:d,triggerType:i})=>{o.files.push(new e.InstrumentationNodeModuleFile(d,b,b=>(function(a,b,c,d,e,h){switch(g(a,c),h){case"function":b(a,"onRequest",f(d,e,"http.request")),b(a,"onCall",f(d,e,"http.call"));break;case"firestore":b(a,"onDocumentCreated",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdated",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeleted",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWritten",f(d,e,"firestore.document.written")),b(a,"onDocumentCreatedWithAuthContext",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdatedWithAuthContext",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeletedWithAuthContext",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWrittenWithAuthContext",f(d,e,"firestore.document.written"));break;case"scheduler":b(a,"onSchedule",f(d,e,"scheduler.scheduled"));break;case"storage":b(a,"onObjectFinalized",f(d,e,"storage.object.finalized")),b(a,"onObjectArchived",f(d,e,"storage.object.archived")),b(a,"onObjectDeleted",f(d,e,"storage.object.deleted")),b(a,"onObjectMetadataUpdated",f(d,e,"storage.object.metadataUpdated"))}return a})(b,c,h,a,{requestHook:j,responseHook:k,errorHook:l},i),a=>g(a,h)))}),o},c.patchV2Functions=f},770392,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(114498),g=a.r(10223),h={},i=[">=3.0.0 <5"],j=[">=6.0.0 <7"];class k extends d.InstrumentationBase{constructor(a=h){super("@sentry/instrumentation-firebase",e.SDK_VERSION,a)}setConfig(a={}){super.setConfig({...h,...a})}init(){let a=[];return a.push(f.patchFirestore(this.tracer,i,this._wrap,this._unwrap,this.getConfig())),a.push(g.patchFunctions(this.tracer,j,this._wrap,this._unwrap,this.getConfig())),a}}c.FirebaseInstrumentation=k},884348,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(770392),g="Firebase",h={firestoreSpanCreationHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.firestore"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.functions"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(a,b)=>{b&&(d.captureException(b,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d.flush(2e3))}}},i=e.generateInstrumentOnce(g,()=>new f.FirebaseInstrumentation(h));c.firebaseIntegration=d.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentFirebase=i},483727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(506596),e=a.r(109041),f=a.r(655203),g=a.r(89709),h=a.r(985248),i=a.r(946634),j=a.r(884348),k=a.r(975446),l=a.r(257489),m=a.r(804666),n=a.r(546750),o=a.r(228328),p=a.r(547611),q=a.r(326259),r=a.r(301180),s=a.r(586973),t=a.r(569473),u=a.r(464048),v=a.r(473965),w=a.r(848855),x=a.r(757586),y=a.r(245727),z=a.r(277029),A=a.r(551578),B=a.r(302889),C=a.r(745584),D=a.r(441418),E=a.r(846940);c.getAutoPerformanceIntegrations=function(){return[h.expressIntegration(),i.fastifyIntegration(),m.graphqlIntegration(),o.honoIntegration(),u.mongoIntegration(),v.mongooseIntegration(),w.mysqlIntegration(),x.mysql2Integration(),C.redisIntegration(),z.postgresIntegration(),B.prismaIntegration(),n.hapiIntegration(),q.koaIntegration(),g.connectIntegration(),D.tediousIntegration(),k.genericPoolIntegration(),p.kafkaIntegration(),e.amqplibIntegration(),t.lruMemoizerIntegration(),r.langChainIntegration(),s.langGraphIntegration(),E.vercelAIIntegration(),y.openAIIntegration(),f.anthropicAIIntegration(),l.googleGenAIIntegration(),A.postgresJsIntegration(),j.firebaseIntegration()]},c.getOpenTelemetryInstrumentationToPreload=function(){return[d.instrumentSentryHttp,d.instrumentOtelHttp,h.instrumentExpress,g.instrumentConnect,i.instrumentFastify,i.instrumentFastifyV3,n.instrumentHapi,o.instrumentHono,p.instrumentKafka,q.instrumentKoa,t.instrumentLruMemoizer,u.instrumentMongo,v.instrumentMongoose,w.instrumentMysql,x.instrumentMysql2,z.instrumentPostgres,n.instrumentHapi,m.instrumentGraphql,C.instrumentRedis,D.instrumentTedious,k.instrumentGenericPool,e.instrumentAmqplib,r.instrumentLangChain,E.instrumentVercelAi,y.instrumentOpenAi,A.instrumentPostgresJs,j.instrumentFirebase,f.instrumentAnthropicAi,l.instrumentGoogleGenAI,s.instrumentLangGraph]}},636371,a=>{"use strict";let b;a.s([],433629),a.i(433629);var c=a.i(385603),d=a.i(432238),e=a.i(291723),f=a.i(970544);let g=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(a){let b={},d=(0,f.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),g=(0,f.getStringFromEnv)("OTEL_SERVICE_NAME");if(d)try{let a=this._parseResourceAttributes(d);Object.assign(b,a)}catch(a){c.diag.debug(`EnvDetector failed: ${a instanceof Error?a.message:a}`)}return g&&(b[e.ATTR_SERVICE_NAME]=g),{attributes:b}}_parseResourceAttributes(a){if(!a)return{};let b={};for(let c of a.split(this._COMMA_SEPARATOR)){let a,d,e=c.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==e.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${c}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[f,g]=e,h=f.trim(),i=g.trim();if(0===h.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${c}".`);try{a=decodeURIComponent(h),d=decodeURIComponent(i)}catch(a){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${c}": ${a instanceof Error?a.message:a}`)}if(a.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${a}".`);if(d.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${a}".`);b[a]=d}return b}};var h=a.i(446786),i=a.i(605365);async function j(){if(!b)switch(i.platform){case"darwin":b=(await a.A(872097)).getMachineId;break;case"linux":b=(await a.A(992965)).getMachineId;break;case"freebsd":b=(await a.A(846524)).getMachineId;break;case"win32":b=(await a.A(189011)).getMachineId;break;default:b=(await a.A(18291)).getMachineId}return b()}let k=new class{detect(a){return{attributes:{"host.name":(0,h.hostname)(),"host.arch":(a=>{switch(a){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return a}})((0,h.arch)()),"host.id":j()}}}},l=new class{detect(a){return{attributes:{"os.type":(a=>{switch(a){case"sunos":return"solaris";case"win32":return"windows";default:return a}})((0,h.platform)()),"os.version":(0,h.release)()}}}},m=new class{detect(a){let b={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(b["process.command"]=process.argv[1]);try{let a=h.userInfo();b["process.owner"]=a.username}catch(a){c.diag.debug(`error obtaining process owner: ${a}`)}return{attributes:b}}};var n=a.i(254799);let o=new class{detect(a){return{attributes:{"service.instance.id":(0,n.randomUUID)()}}}};var p=a.i(814232);a.s(["defaultResource",()=>d.defaultResource,"defaultServiceName",()=>p.defaultServiceName,"detectResources",0,(a={})=>(a.detectors||[]).map(b=>{try{let e=(0,d.resourceFromDetectedResource)(b.detect(a));return c.diag.debug(`${b.constructor.name} found resource.`,e),e}catch(a){return c.diag.debug(`${b.constructor.name} failed: ${a.message}`),(0,d.emptyResource)()}}).reduce((a,b)=>a.merge(b),(0,d.emptyResource)()),"emptyResource",()=>d.emptyResource,"envDetector",0,g,"hostDetector",0,k,"osDetector",0,l,"processDetector",0,m,"resourceFromAttributes",()=>d.resourceFromAttributes,"serviceInstanceIdDetector",0,o],636371)},305722,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(636371),f=a.r(878176),g=a.r(357223),h=a.r(97153),i=a.r(829770),j=a.r(960535),k=a.r(560192),l=a.r(483727);function m(a,b={}){let c=new f.BasicTracerProvider({sampler:new j.SentrySampler(a),resource:e.defaultResource().merge(e.resourceFromAttributes({[g.ATTR_SERVICE_NAME]:"node",[g.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[g.ATTR_SERVICE_VERSION]:h.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new j.SentrySpanProcessor({timeout:n(a.getOptions().maxSpanWaitDuration)}),...b.spanProcessors||[]]});d.trace.setGlobalTracerProvider(c),d.propagation.setGlobalPropagator(new j.SentryPropagator);let k=new i.SentryContextManager;return d.context.setGlobalContextManager(k),[c,k.getAsyncLocalStorageLookup()]}function n(a){if(null!=a){if(a>1e6)return k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(a<=0||Number.isNaN(a)){k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return a}}c._clampSpanProcessorTimeout=n,c.initOpenTelemetry=function(a,b={}){a.getOptions().debug&&i.setupOpenTelemetryLogger();let[c,d]=m(a,b);a.traceProvider=c,a.asyncLocalStorageLookup=d},c.preloadOpenTelemetry=function(a={}){var b;let c,{debug:d}=a;d&&h.debug.enable(),i.initializeEsmLoader(),(b=a.integrations,c=l.getOpenTelemetryInstrumentationToPreload(),b?c.filter(a=>{let c=a.id;return b.some(a=>c===a||c.startsWith(`${a}.`))}):c).forEach(a=>{a(),d&&h.debug.log(`[Sentry] Preloaded ${a.id} instrumentation`)})},c.setupOtel=m},741067,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(506596),g=a.r(383093),h=a.r(483727),i=a.r(305722);function j(){return e.getDefaultIntegrations().filter(a=>"Http"!==a.name&&"NodeFetch"!==a.name).concat(f.httpIntegration(),g.nativeNodeFetchIntegration())}function k(a){return[...j(),...d.hasSpansEnabled(a)?h.getAutoPerformanceIntegrations():[]]}function l(a={},b){d.applySdkMetadata(a,"node");let c=e.init({...a,defaultIntegrations:a.defaultIntegrations??b(a)});return c&&!a.skipOpenTelemetrySetup&&(i.initOpenTelemetry(c,{spanProcessors:a.openTelemetrySpanProcessors}),e.validateOpenTelemetrySetup()),c}c.getDefaultIntegrations=k,c.getDefaultIntegrationsWithoutPerformance=j,c.init=function(a={}){return l(a,k)},c.initWithoutDefaultIntegrations=function(a={}){return l(a,()=>[])}},874208,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(506596),e=a.r(383093),f=a.r(706317),g=a.r(985248),h=a.r(946634),i=a.r(804666),j=a.r(547611),k=a.r(569473),l=a.r(464048),m=a.r(473965),n=a.r(848855),o=a.r(757586),p=a.r(745584),q=a.r(277029),r=a.r(551578),s=a.r(302889),t=a.r(546750),u=a.r(228328),v=a.r(326259),w=a.r(89709),x=a.r(722836),y=a.r(441418),z=a.r(975446),A=a.r(235153),B=a.r(109041),C=a.r(846940),D=a.r(245727),E=a.r(655203),F=a.r(257489),G=a.r(301180),H=a.r(586973),I=a.r(630843),J=a.r(521745),K=a.r(55267),L=a.r(224314),M=a.r(916562),N=a.r(884348),O=a.r(741067),P=a.r(305722),Q=a.r(483727),R=a.r(960535),S=a.r(97153),T=a.r(829770);c.httpIntegration=d.httpIntegration,c.nativeNodeFetchIntegration=e.nativeNodeFetchIntegration,c.fsIntegration=f.fsIntegration,c.expressErrorHandler=g.expressErrorHandler,c.expressIntegration=g.expressIntegration,c.setupExpressErrorHandler=g.setupExpressErrorHandler,c.fastifyIntegration=h.fastifyIntegration,c.setupFastifyErrorHandler=h.setupFastifyErrorHandler,c.graphqlIntegration=i.graphqlIntegration,c.kafkaIntegration=j.kafkaIntegration,c.lruMemoizerIntegration=k.lruMemoizerIntegration,c.mongoIntegration=l.mongoIntegration,c.mongooseIntegration=m.mongooseIntegration,c.mysqlIntegration=n.mysqlIntegration,c.mysql2Integration=o.mysql2Integration,c.redisIntegration=p.redisIntegration,c.postgresIntegration=q.postgresIntegration,c.postgresJsIntegration=r.postgresJsIntegration,c.prismaIntegration=s.prismaIntegration,c.hapiIntegration=t.hapiIntegration,c.setupHapiErrorHandler=t.setupHapiErrorHandler,c.honoIntegration=u.honoIntegration,c.setupHonoErrorHandler=u.setupHonoErrorHandler,c.koaIntegration=v.koaIntegration,c.setupKoaErrorHandler=v.setupKoaErrorHandler,c.connectIntegration=w.connectIntegration,c.setupConnectErrorHandler=w.setupConnectErrorHandler,c.knexIntegration=x.knexIntegration,c.tediousIntegration=y.tediousIntegration,c.genericPoolIntegration=z.genericPoolIntegration,c.dataloaderIntegration=A.dataloaderIntegration,c.amqplibIntegration=B.amqplibIntegration,c.vercelAIIntegration=C.vercelAIIntegration,c.openAIIntegration=D.openAIIntegration,c.anthropicAIIntegration=E.anthropicAIIntegration,c.googleGenAIIntegration=F.googleGenAIIntegration,c.langChainIntegration=G.langChainIntegration,c.langGraphIntegration=H.langGraphIntegration,c.buildLaunchDarklyFlagUsedHandler=I.buildLaunchDarklyFlagUsedHandlerShim,c.launchDarklyIntegration=I.launchDarklyIntegrationShim,c.OpenFeatureIntegrationHook=J.OpenFeatureIntegrationHookShim,c.openFeatureIntegration=J.openFeatureIntegrationShim,c.statsigIntegration=K.statsigIntegrationShim,c.unleashIntegration=L.unleashIntegrationShim,c.growthbookIntegration=M.growthbookIntegrationShim,c.firebaseIntegration=N.firebaseIntegration,c.getDefaultIntegrations=O.getDefaultIntegrations,c.getDefaultIntegrationsWithoutPerformance=O.getDefaultIntegrationsWithoutPerformance,c.init=O.init,c.initWithoutDefaultIntegrations=O.initWithoutDefaultIntegrations,c.initOpenTelemetry=P.initOpenTelemetry,c.preloadOpenTelemetry=P.preloadOpenTelemetry,c.getAutoPerformanceIntegrations=Q.getAutoPerformanceIntegrations,c.setNodeAsyncContextStrategy=R.setOpenTelemetryContextAsyncContextStrategy,c.SDK_VERSION=S.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=S.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=S.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=S.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=S.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=S.Scope,c.addBreadcrumb=S.addBreadcrumb,c.addEventProcessor=S.addEventProcessor,c.addIntegration=S.addIntegration,c.captureCheckIn=S.captureCheckIn,c.captureConsoleIntegration=S.captureConsoleIntegration,c.captureEvent=S.captureEvent,c.captureException=S.captureException,c.captureFeedback=S.captureFeedback,c.captureMessage=S.captureMessage,c.captureSession=S.captureSession,c.close=S.close,c.consoleIntegration=S.consoleIntegration,c.consoleLoggingIntegration=S.consoleLoggingIntegration,c.continueTrace=S.continueTrace,c.createConsolaReporter=S.createConsolaReporter,c.createLangChainCallbackHandler=S.createLangChainCallbackHandler,c.createTransport=S.createTransport,c.dedupeIntegration=S.dedupeIntegration,c.endSession=S.endSession,c.eventFiltersIntegration=S.eventFiltersIntegration,c.extraErrorDataIntegration=S.extraErrorDataIntegration,c.featureFlagsIntegration=S.featureFlagsIntegration,c.flush=S.flush,c.functionToStringIntegration=S.functionToStringIntegration,c.getActiveSpan=S.getActiveSpan,c.getClient=S.getClient,c.getCurrentScope=S.getCurrentScope,c.getGlobalScope=S.getGlobalScope,c.getIsolationScope=S.getIsolationScope,c.getRootSpan=S.getRootSpan,c.getSpanDescendants=S.getSpanDescendants,c.getSpanStatusFromHttpCode=S.getSpanStatusFromHttpCode,c.getTraceData=S.getTraceData,c.getTraceMetaTags=S.getTraceMetaTags,c.httpHeadersToSpanAttributes=S.httpHeadersToSpanAttributes,c.inboundFiltersIntegration=S.inboundFiltersIntegration,c.instrumentAnthropicAiClient=S.instrumentAnthropicAiClient,c.instrumentGoogleGenAIClient=S.instrumentGoogleGenAIClient,c.instrumentLangGraph=S.instrumentLangGraph,c.instrumentOpenAiClient=S.instrumentOpenAiClient,c.instrumentStateGraphCompile=S.instrumentStateGraphCompile,c.instrumentSupabaseClient=S.instrumentSupabaseClient,c.isEnabled=S.isEnabled,c.isInitialized=S.isInitialized,c.lastEventId=S.lastEventId,c.linkedErrorsIntegration=S.linkedErrorsIntegration,c.parameterize=S.parameterize,c.profiler=S.profiler,c.requestDataIntegration=S.requestDataIntegration,c.rewriteFramesIntegration=S.rewriteFramesIntegration,c.setContext=S.setContext,c.setConversationId=S.setConversationId,c.setCurrentClient=S.setCurrentClient,c.setExtra=S.setExtra,c.setExtras=S.setExtras,c.setHttpStatus=S.setHttpStatus,c.setMeasurement=S.setMeasurement,c.setTag=S.setTag,c.setTags=S.setTags,c.setUser=S.setUser,c.spanToBaggageHeader=S.spanToBaggageHeader,c.spanToJSON=S.spanToJSON,c.spanToTraceHeader=S.spanToTraceHeader,c.startInactiveSpan=S.startInactiveSpan,c.startNewTrace=S.startNewTrace,c.startSession=S.startSession,c.startSpan=S.startSpan,c.startSpanManual=S.startSpanManual,c.supabaseIntegration=S.supabaseIntegration,c.suppressTracing=S.suppressTracing,c.trpcMiddleware=S.trpcMiddleware,c.updateSpanName=S.updateSpanName,c.winterCGHeadersToDict=S.winterCGHeadersToDict,c.withActiveSpan=S.withActiveSpan,c.withIsolationScope=S.withIsolationScope,c.withMonitor=S.withMonitor,c.withScope=S.withScope,c.wrapMcpServerWithSentry=S.wrapMcpServerWithSentry,c.zodErrorsIntegration=S.zodErrorsIntegration,c.NODE_VERSION=T.NODE_VERSION,c.NodeClient=T.NodeClient,c.SentryContextManager=T.SentryContextManager,c.anrIntegration=T.anrIntegration,c.childProcessIntegration=T.childProcessIntegration,c.contextLinesIntegration=T.contextLinesIntegration,c.createGetModuleFromFilename=T.createGetModuleFromFilename,c.createSentryWinstonTransport=T.createSentryWinstonTransport,c.cron=T.cron,c.defaultStackParser=T.defaultStackParser,c.disableAnrDetectionForCallback=T.disableAnrDetectionForCallback,c.generateInstrumentOnce=T.generateInstrumentOnce,c.getSentryRelease=T.getSentryRelease,c.httpServerIntegration=T.httpServerIntegration,c.httpServerSpansIntegration=T.httpServerSpansIntegration,c.localVariablesIntegration=T.localVariablesIntegration,c.logger=T.logger,c.makeNodeTransport=T.makeNodeTransport,c.metrics=T.metrics,c.modulesIntegration=T.modulesIntegration,c.nodeContextIntegration=T.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=T.nodeRuntimeMetricsIntegration,c.onUncaughtExceptionIntegration=T.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=T.onUnhandledRejectionIntegration,c.pinoIntegration=T.pinoIntegration,c.processSessionIntegration=T.processSessionIntegration,c.spotlightIntegration=T.spotlightIntegration,c.systemErrorIntegration=T.systemErrorIntegration,c.validateOpenTelemetrySetup=T.validateOpenTelemetrySetup},98251,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(522734),f=a.r(814747),g=null,h=null;c.createRouteManifest=function(a){let b;if(a?.appDirPath)b=a.appDirPath;else{let a=process.cwd(),c=f.join(a,"app"),d=f.join(a,"src","app");e.existsSync(c)&&e.lstatSync(c).isDirectory()?b=c:e.existsSync(d)&&e.lstatSync(d).isDirectory()&&(b=d)}if(!b)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(g&&h===b&&d===a?.includeRouteGroups)return g;let{dynamicRoutes:c,staticRoutes:i,isrRoutes:j}=function a(b,c="",d=!1){let g=[],h=[],i=[];try{let k=e.readdirSync(b,{withFileTypes:!0}),l=k.find(a=>{var b;return b=a.name,"page.tsx"===b||"page.jsx"===b||"page.ts"===b||"page.js"===b});if(l){let a=d?c||"/":(c||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),j=a.includes(":"),k=f.join(b,l.name);if(function(a){try{let b=e.readFileSync(a,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(b)}catch{return!1}}(k)&&i.push(a),j){let{regex:b,paramNames:c,hasOptionalPrefix:d}=function(a){let b,c,d=a.split("/").filter(Boolean),e=[],f=[],g=!1;for(let a of d)if(a.startsWith(":")){let b=a.substring(1);if(b.endsWith("*?")){let a=b.slice(0,-2);f.push(a),g=!0}else if(b.endsWith("*")){let a=b.slice(0,-1);f.push(a),e.push("(.+)")}else f.push(b),e.push("([^/]+)")}else e.push(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(g)if(0===e.length)c="^/(.*)$";else{let a=e.join("/");c=`^/${a}(?:/(.*))?$`}else c=`^/${e.join("/")}$`;return{regex:c,paramNames:f,hasOptionalPrefix:(b=f[0],void 0!==b&&("locale"===b||"lang"===b||"language"===b))}}(a);g.push({path:a,regex:b,paramNames:c,hasOptionalPrefix:d})}else h.push({path:a})}for(let e of k)if(e.isDirectory()){var j;let k,l=f.join(b,e.name),m=e.name.startsWith("[")&&e.name.endsWith("]"),n=(k=(j=e.name).startsWith("(")&&j.endsWith(")")?d?e.name:"":m?function(a){if(a.startsWith("[[...")&&a.endsWith("]]")){let b=a.slice(5,-2);return`:${b}*?`}if(a.startsWith("[...")&&a.endsWith("]")){let b=a.slice(4,-1);return`:${b}*`}return`:${a.slice(1,-1)}`}(e.name):e.name)?`${c}/${k}`:c,o=a(l,n,d);g.push(...o.dynamicRoutes),h.push(...o.staticRoutes),i.push(...o.isrRoutes)}}catch(a){console.warn("Error building route manifest:",a)}return{dynamicRoutes:g,staticRoutes:h,isrRoutes:i}}(b,a?.basePath,a?.includeRouteGroups),k={dynamicRoutes:c,staticRoutes:i,isrRoutes:j};return g=k,h=b,d=a?.includeRouteGroups,k}},318976,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.resolveTunnelRoute=function(a){let b;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let c="string"==typeof a?a:(b=d._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${b}`);return c&&(process.env.__SENTRY_TUNNEL_ROUTE__=c),c},c.setUpTunnelRewriteRules=function(a,b){let c=a.rewrites,d=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,e=d||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",f=d||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";a.rewrites=async(...a)=>{let d={source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:e},g=[{source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:f},d];if("function"!=typeof c)return g;let h=await c(...a);return Array.isArray(h)?[...g,...h]:{...h,beforeFiles:[...g,...h.beforeFiles||[]]}}}},546626,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(874208),f=a.r(522734),g=a.r(814747),h=a.r(98251),i=a.r(53556),j=a.r(883264),k=a.r(318976),l=!1,m=!1;function n(a,b){if(!b)return a;let c=a=>"function"==typeof b?b(a):b.some(b=>d.isMatchingPattern(a,b));return{staticRoutes:a.staticRoutes.filter(a=>!c(a.path)),dynamicRoutes:a.dynamicRoutes.filter(a=>!c(a.path)),isrRoutes:a.isrRoutes.filter(a=>!c(a))}}c.filterRouteManifest=n,c.getNextMajor=function(a){if(!a)return;let{major:b}=d.parseSemver(a);return b},c.maybeCreateRouteManifest=function(a,b){if(b.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==b.routeManifestInjection&&(void 0!==b.routeManifestInjection||!b.disableManifestInjection))return n(h.createRouteManifest({basePath:a.basePath}),b.routeManifestInjection?.exclude)},c.maybeGetVercelCronsConfig=function(a){let b={config:void 0,strategy:void 0};if(!process.env.VERCEL)return b;let c=a._experimental?.vercelCronsMonitoring===!0,e=a.webpack?.automaticVercelMonitors===!0;if(!c&&!e)return b;let h=function(){try{let a=g.join(process.cwd(),"vercel.json"),b=f.readFileSync(a,"utf8"),c=JSON.parse(b).crons;if(c&&Array.isArray(c)&&c.length>0)return c;return}catch(a){if("ENOENT"===a.code)return;d.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",a);return}}();return h&&(b.config=h,c&&e?(d.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),b.strategy="spans"):c?(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),b.strategy="spans"):(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),b.strategy="wrapper")),b},c.maybeSetClientTraceMetadataOption=function(a,b){if(b){let{major:c,minor:e}=d.parseSemver(b);void 0!==c&&void 0!==e&&(c>=15||14===c&&e>=3)&&(a.experimental=a.experimental||{},a.experimental.clientTraceMetadata=["baggage","sentry-trace",...a.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},c.maybeSetInstrumentationHookOption=function(a,b){if(b&&i.requiresInstrumentationHook(b)){a.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),a.experimental={instrumentationHook:!0,...a.experimental};return}b||(a.experimental&&"instrumentationHook"in a.experimental?!1===a.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),a.experimental={instrumentationHook:!0,...a.experimental}))},c.maybeSetUpTunnelRouteRewriteRules=function(a,b){if(!b.tunnelRoute)return;if("export"===a.output){l||(l=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let c=k.resolveTunnelRoute(b.tunnelRoute);b.tunnelRoute=c||void 0,k.setUpTunnelRewriteRules(a,c)},c.resolveReleaseName=function(a){return a.release?.create!==!1?a.release?.name??e.getSentryRelease()??j.getGitRevision():a.release?.name},c.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(m||(m=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},c.warnIfMissingOnRouterTransitionStartHook=function(a){let b=j.getInstrumentationClientFileContents();void 0===b||b.includes("onRouterTransitionStart")||a.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},804312,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(53556),e=a.r(883264),f=a.r(464917),g=a.r(360366),h=a.r(546626);c.getFinalConfigObject=function(a,b){f.migrateDeprecatedWebpackOptions(b);let c=h.resolveReleaseName(b);if(h.maybeSetUpTunnelRouteRewriteRules(a,b),h.shouldReturnEarlyInExperimentalBuildMode())return a;let i=h.maybeCreateRouteManifest(a,b),j=h.maybeGetVercelCronsConfig(b);e.setUpBuildTimeVariables(a,b,c);let k=d.getNextjsVersion(),l=h.getNextMajor(k);h.maybeSetClientTraceMetadataOption(a,k),h.maybeSetInstrumentationHookOption(a,k),h.warnIfMissingOnRouterTransitionStartHook(b);let m=g.getBundlerInfo(k);g.maybeWarnAboutUnsupportedTurbopack(k,m),g.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(k,b,m);let n=g.maybeConstructTurbopackConfig(a,b,i,k,m,j),o=g.resolveUseRunAfterProductionCompileHookOption(b,m);return g.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,nextJsVersion:k,bundlerInfo:m,turboPackConfig:n,shouldUseRunAfterProductionCompileHook:o}),g.maybeEnableTurbopackSourcemaps(a,b,m),{...a,...g.getServerExternalPackagesPatch(a,l),...g.getWebpackPatch({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,routeManifest:i,nextJsVersion:k,shouldUseRunAfterProductionCompileHook:o,bundlerInfo:m,vercelCronsConfigResult:j}),...g.getTurbopackPatch(m,n)}}},114530,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(804312);c.withSentryConfig=function(a,b={}){let c=a||{};return"function"==typeof c?function(...a){let f=c.apply(this,a);return d.isThenable(f)?f.then(a=>e.getFinalConfigObject(a,b)):e.getFinalConfigObject(f,b)}:e.getFinalConfigObject(c,b)}},373328,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{"use strict";var b="";function c(a){return a.split("\n").reduce(function(a,c){var k,l,m,n=function(a){var c=d.exec(a);if(!c)return null;var f=c[2]&&0===c[2].indexOf("native"),g=c[2]&&0===c[2].indexOf("eval"),h=e.exec(c[2]);return g&&null!=h&&(c[2]=h[1],c[3]=h[2],c[4]=h[3]),{file:f?null:c[2],methodName:c[1]||b,arguments:f?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}(c)||((k=f.exec(c))?{file:k[2],methodName:k[1]||b,arguments:[],lineNumber:+k[3],column:k[4]?+k[4]:null}:null)||function(a){var c=g.exec(a);if(!c)return null;var d=c[3]&&c[3].indexOf(" > eval")>-1,e=h.exec(c[3]);return d&&null!=e&&(c[3]=e[1],c[4]=e[2],c[5]=null),{file:c[3],methodName:c[1]||b,arguments:c[2]?c[2].split(","):[],lineNumber:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}(c)||((l=j.exec(c))?{file:l[2],methodName:l[1]||b,arguments:[],lineNumber:+l[3],column:l[4]?+l[4]:null}:null)||((m=i.exec(c))?{file:m[3],methodName:m[1]||b,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return n&&a.push(n),a},[])}var d=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,e=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;a.s(["parse",()=>c])},967602,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(384899),f=a.r(373328),g=d.GLOBAL_OBJ;function h(){let a=process.env._sentryBasePath??g._sentryBasePath??"";""===a||a.match(/^\//)||(a=`/${a}`);let b=process.env.PORT||"3000";return`http://localhost:${b}${a}`}async function i(a,b={}){let c=new AbortController,e=setTimeout(()=>c.abort(),3e3);return d.suppressTracing(()=>fetch(a,{...b,signal:c.signal}).finally(()=>{clearTimeout(e)}))}async function j(a,b){try{if(!(a.file?.startsWith("webpack-internal:")||a.file?.startsWith("file:")))return null;let c=new URLSearchParams;c.append("isServer",String(!1)),c.append("isEdgeServer",String(!1)),c.append("isAppDirectory",String(!0)),c.append("errorMessage",b.toString()),Object.keys(a).forEach(b=>{c.append(b,(a[b]??"").toString())});let d=h(),e=await i(`${d}/__nextjs_original-stack-frame?${c.toString()}`);if(!e.ok||204===e.status)return null;let f=await e.json();return{originalCodeFrame:f.originalCodeFrame,originalStackFrame:f.originalStackFrame}}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}async function k(a){try{let b={frames:a.filter(a=>!!a.file).map(a=>(a.file=a.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:a.file,methodName:a.methodName??"",arguments:[],lineNumber:a.lineNumber??0,column:a.column??0,line1:a.lineNumber??0,column1:a.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},c=h(),d=await i(`${c}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok||204===d.status)return null;return(await d.json()).map(a=>({originalCodeFrame:a.value.originalCodeFrame,originalStackFrame:a.value.originalStackFrame}))}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}c.devErrorSymbolicationEventProcessor=async function a(a,b){"transaction"===a.type&&(a.spans=a.spans?.filter(a=>{let b=a.data?.["http.url"];return"string"!=typeof b||!b.includes("__nextjs_original-stack-frame")}));try{if(b.originalException&&b.originalException instanceof Error&&b.originalException.stack){let c,f=e.parse(b.originalException.stack),h=g._sentryNextJsVersion;if(!h)return a;let i=d.parseSemver(h);if(i.major>15||15===i.major&&i.minor>=2){let b=await k(f);if(null===b)return a;c=b}else c=await Promise.all(f.map(a=>j(a,b.originalException)));a.exception?.values?.[0]?.stacktrace?.frames&&(a.exception.values[0].stacktrace.frames=a.exception.values[0].stacktrace.frames.map((a,b,d)=>{let e=c[d.length-1-b];if(!e?.originalStackFrame||!e.originalCodeFrame)return{...a,platform:a.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:f,preContextLines:g,postContextLines:h}=function(a){let b,c=a.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(a=>!a.match(/^\s*\|/)).map(a=>({line:a,isErrorLine:!!a.match(/^>/)})).map(a=>({...a,line:a.line.replace(/^.*\|/,"")})),d=[],e=[],f=!1;for(let a of c)a.isErrorLine?(b=a.line,f=!0):f?e.push(a.line):d.push(a.line);return{contextLine:b,preContextLines:d,postContextLines:e}}(e.originalCodeFrame);return{...a,pre_context:g,context_line:f,post_context:h,function:e.originalStackFrame.methodName,filename:e.originalStackFrame.file?function(a){if(!a)return a;let b=a.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return b?b[1]:a}(e.originalStackFrame.file):void 0,lineno:e.originalStackFrame.lineNumber||e.originalStackFrame.line1||void 0,colno:e.originalStackFrame.column||e.originalStackFrame.column1||void 0}}))}}catch{}return a}},562293,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getVercelEnv=function(a){let b=a?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return b?`vercel-${b}`:void 0}},473132,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.ATTR_NEXT_ROUTE="next.route",c.ATTR_NEXT_SEGMENT="next.segment",c.ATTR_NEXT_SPAN_NAME="next.span_name",c.ATTR_NEXT_SPAN_TYPE="next.span_type"},268404,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",c.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",c.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},873364,(a,b,c)=>{"use strict";b.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},767685,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE:function(){return f},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="/_not-found",g=`${f}/page`,h="/_global-error",i=`${h}/page`},874492,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={APP_CLIENT_INTERNALS:function(){return ab},APP_PATHS_MANIFEST:function(){return u},APP_PATH_ROUTES_MANIFEST:function(){return v},AdapterOutputType:function(){return k},BARREL_OPTIMIZATION_PREFIX:function(){return U},BLOCKED_PAGES:function(){return P},BUILD_ID_FILE:function(){return O},BUILD_MANIFEST:function(){return w},CLIENT_PUBLIC_FILES_PATH:function(){return Q},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return R},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return _},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return aa},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ae},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return af},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ac},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ad},COMPILER_INDEXES:function(){return j},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return N},DEFAULT_RUNTIME_WEBPACK:function(){return ag},DEFAULT_SANS_SERIF_FONT:function(){return al},DEFAULT_SERIF_FONT:function(){return ak},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return K},DEV_CLIENT_PAGES_MANIFEST:function(){return G},DYNAMIC_CSS_MANIFEST:function(){return $},EDGE_RUNTIME_WEBPACK:function(){return ah},EDGE_UNSUPPORTED_NODE_APIS:function(){return aq},EXPORT_DETAIL:function(){return B},EXPORT_MARKER:function(){return A},FUNCTIONS_CONFIG_MANIFEST:function(){return x},IMAGES_MANIFEST:function(){return E},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Z},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return H},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return Y},MODERN_BROWSERSLIST_TARGET:function(){return g.default},NEXT_BUILTIN_DOCUMENT:function(){return T},NEXT_FONT_MANIFEST:function(){return z},PAGES_MANIFEST:function(){return s},PHASE_ANALYZE:function(){return m},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return r},PHASE_PRODUCTION_BUILD:function(){return n},PHASE_PRODUCTION_SERVER:function(){return o},PHASE_TEST:function(){return q},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return L},ROUTES_MANIFEST:function(){return D},RSC_MODULE_TYPES:function(){return ap},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return F},SERVER_PROPS_ID:function(){return aj},SERVER_REFERENCE_MANIFEST:function(){return W},STATIC_PROPS_ID:function(){return ai},STATIC_STATUS_PAGES:function(){return am},STRING_LITERAL_DROP_BUNDLE:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},SYSTEM_ENTRYPOINTS:function(){return ar},TRACE_OUTPUT_VERSION:function(){return an},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return J},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ao},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return t}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(463652)._(a.r(873364)),h=a.r(767685),i={client:"client",server:"server",edgeServer:"edge-server"},j={[i.client]:0,[i.server]:1,[i.edgeServer]:2};var k=((d={}).PAGES="PAGES",d.PAGES_API="PAGES_API",d.APP_PAGE="APP_PAGE",d.APP_ROUTE="APP_ROUTE",d.PRERENDER="PRERENDER",d.STATIC_FILE="STATIC_FILE",d.MIDDLEWARE="MIDDLEWARE",d);let l="phase-export",m="phase-analyze",n="phase-production-build",o="phase-production-server",p="phase-development-server",q="phase-test",r="phase-info",s="pages-manifest.json",t="webpack-stats.json",u="app-paths-manifest.json",v="app-path-routes-manifest.json",w="build-manifest.json",x="functions-config-manifest.json",y="subresource-integrity-manifest",z="next-font-manifest",A="export-marker.json",B="export-detail.json",C="prerender-manifest.json",D="routes-manifest.json",E="images-manifest.json",F="required-server-files",G="_devPagesManifest.json",H="middleware-manifest.json",I="_clientMiddlewareManifest.json",J="client-build-manifest.json",K="_devMiddlewareManifest.json",L="react-loadable-manifest.json",M="server",N=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],O="BUILD_ID",P=["/_document","/_app","/_error"],Q="public",R="static",S="__NEXT_DROP_CLIENT_FILE__",T="__NEXT_BUILTIN_DOCUMENT__",U="__barrel_optimize__",V="client-reference-manifest",W="server-reference-manifest",X="middleware-build-manifest",Y="middleware-react-loadable-manifest",Z="interception-route-rewrite-manifest",$="dynamic-css-manifest",_="main",aa=`${_}-app`,ab="app-pages-internals",ac="react-refresh",ad="webpack",ae="polyfills",af=Symbol(ae),ag="webpack-runtime",ah="edge-runtime-webpack",ai="__N_SSG",aj="__N_SSP",ak={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},al={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},am=["/500"],an=1,ao=6e3,ap={client:"client",server:"server"},aq=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ar=new Set([_,ac,aa]);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},334327,(a,b,c)=>{b.exports=a.r(874492)},929689,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(334327);c.isBuild=function(){return process.env.NEXT_PHASE===d.PHASE_PRODUCTION_BUILD}},498934,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328);async function f(){try{e.DEBUG_BUILD&&d.debug.log("Flushing events..."),await d.flush(2e3),e.DEBUG_BUILD&&d.debug.log("Done flushing events")}catch(a){e.DEBUG_BUILD&&d.debug.log("Error while flushing events:\n",a)}}function g(){let a=Symbol.for("__cloudflare-context__");return d.GLOBAL_OBJ[a]?.ctx}function h(a){g()?.waitUntil(a)}function i(){return"function"==typeof g()?.waitUntil}c.cloudflareWaitUntil=h,c.flushSafelyWithTimeout=f,c.isCloudflareWaitUntilAvailable=i,c.waitUntil=function(a){i()?h(a):d.vercelWaitUntil(a)}},723136,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);function e(a){let b=a.split("/").filter(a=>a&&!(a.startsWith("(")&&a.endsWith(")")));return b.length>0?`/${b.join("/")}`:"/"}function f(a,b,c,f){let g=f??e(a),h=c?.["x-forwarded-proto"],i=c?.["x-forwarded-host"]||c?.host;if(!h||!i)return g;let j=`${h}://${i}${g}`,k=d.parseStringToURLObject(j);return k?d.getSanitizedUrlStringFromUrlObject(k):g}function g(a){let b=a?.referer;if(b)try{let a=new URL(b);return d.getSanitizedUrlStringFromUrlObject(a)}catch{return}}c.buildUrlFromComponentRoute=f,c.extractSanitizedUrlFromRefererHeader=g,c.getSanitizedRequestUrl=function(a,b,c,d){let e=g(c);return e||f(a,b,c,d)},c.sanitizeRoutePath=e,c.substituteRouteParams=function(a,b){return a}},816617,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(723136);c.setUrlProcessingMetadata=function(a){if("transaction"!==a.type||a.contexts?.trace?.op!=="http.server"||!a.contexts?.trace?.data)return;let b=d.getClient();if(!b?.getOptions().sendDefaultPii)return;let c=a.contexts.trace.data,f=c["next.route"]||c["http.route"],g=c["http.target"];if(!f)return;let h=a.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),i=h?.sdkProcessingMetadata?.normalizedRequest?.headers,j=e.getSanitizedRequestUrl(f,void 0,i,g?.toString());j&&h?.sdkProcessingMetadata&&(h.sdkProcessingMetadata.normalizedRequest=h.sdkProcessingMetadata.normalizedRequest||{},h.sdkProcessingMetadata.normalizedRequest.url=j)}},734080,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(814747);c.distDirRewriteFramesIntegration=d.defineIntegration(({distDirName:a})=>{let b=e.resolve(a).replace(/(\/|\\)$/,""),c=new RegExp(d.escapeStringForRegex(b));return{...d.rewriteFramesIntegration({iteratee:a=>(a.filename=a.filename?.replace(c,"app:///_next"),a)}),name:"DistDirRewriteFrames"}})},943167,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.addHeadersAsAttributes=function(a,b){if(!a)return{};let c=a instanceof Headers||"object"==typeof a&&"get"in a?d.winterCGHeadersToDict(a):a,e=d.httpHeadersToSpanAttributes(c,d.getClient()?.getOptions().sendDefaultPii??!1);return b&&b.setAttributes(e),e}},398359,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(960535),g=a.r(473132),h=a.r(268404),i=e.GLOBAL_OBJ;c.dropMiddlewareTunnelRequests=function(a,b){if(e.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let c=b?.[g.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",j=b?.[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",k=b?.[g.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!c&&!j&&!k)return;let l=function(a){let b=i._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!b)return!1;let c=a[d.SEMATTRS_HTTP_TARGET];if("string"==typeof c){let a=c.split("?")[0]||"";return a===b||a.startsWith(`${b}/`)}return!1}(b||{}),m=f.isSentryRequestSpan(a);(l||m)&&a.setAttribute(h.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},858952,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(357223),f=a.r(97153),g=a.r(373328),h=a.r(473132),i=a.r(268404),j="__PAGE__",k=new WeakMap;function l(a){return"NextNodeServer.getLayoutOrPageModule"===a[h.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===a[h.ATTR_NEXT_SPAN_NAME]&&"string"==typeof a[h.ATTR_NEXT_SEGMENT]}function m({segment:a,route:b}){return a===j?`resolve page server component "${b}"`:""===a?"resolve root layout server component":`resolve layout server component "${a}"`}c.commonObjectToIsolationScope=function(a){if("object"!=typeof a||!a)return new f.Scope;{let b=k.get(a);if(b)return b;{let b=new f.Scope;return k.set(a,b),b}}},c.dropNextjsRootContext=function(){if(f.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let a=f.getActiveSpan();if(a){let b=f.getRootSpan(a),c=f.spanToJSON(b).data;c?.["next.span_type"]&&f.getRootSpan(a)?.setAttribute(i.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},c.escapeNextjsTracing=function(a){let b=f.GLOBAL_OBJ.AsyncLocalStorage;return b?(d||(d=new b),d.getStore())?a():f.startNewTrace(()=>d.run(!0,()=>a())):(g.DEBUG_BUILD&&f.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),a())},c.getEnhancedResolveSegmentSpanName=m,c.isResolveSegmentSpan=l,c.maybeEnhanceServerComponentSpanName=function(a,b,c){if(!l(b))return;let d=b[h.ATTR_NEXT_SEGMENT],g=c[e.ATTR_HTTP_ROUTE],i=m({segment:d,route:"string"==typeof g?g:""});a.updateName(i),a.setAttributes({"sentry.nextjs.ssr.function.type":d===j?"Page":"Layout","sentry.nextjs.ssr.function.route":g}),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},431385,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328),f="sentry.cron.checkInId",g="sentry.cron.monitorSlug",h="sentry.cron.startTime",i="sentry.cron.schedule";c.maybeCompleteCronCheckIn=function(a){let b=d.spanToJSON(a).data,c=b?.[f],j=b?.[g],k=b?.[h],l=b?.[i];if(!c||!j||"number"!=typeof k)return;let m=d._INTERNAL_safeDateNow()/1e3-k,n=d.spanToJSON(a).status,o=n&&"ok"!==n?"error":"ok";d.captureCheckIn({checkInId:c,monitorSlug:j,status:o,duration:m},"string"==typeof l?{maxRuntime:720,schedule:{type:"crontab",value:l}}:void 0),a.setAttribute(f,void 0),a.setAttribute(g,void 0),a.setAttribute(h,void 0),a.setAttribute(i,void 0),e.DEBUG_BUILD&&d.debug.log(`[Cron] Completed check-in for "${j}" with status "${o}"`)},c.maybeStartCronCheckIn=function(a,b){let c=function(){let a=globalThis;if(a._sentryVercelCronsConfig)try{return JSON.parse(a._sentryVercelCronsConfig)}catch{e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!c||!b)return;let j=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!j)return;let k=Array.isArray(j["user-agent"])?j["user-agent"][0]:j["user-agent"];if(!k?.includes("vercel-cron"))return;let l=c.find(a=>a.path===b);if(!l?.path||!l.schedule)return;let m=l.path,n=d._INTERNAL_safeDateNow()/1e3,o=d.captureCheckIn({monitorSlug:m,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}});e.DEBUG_BUILD&&d.debug.log(`[Cron] Started check-in for "${m}" with ID "${o}"`),a.setAttribute(f,o),a.setAttribute(g,m),a.setAttribute(h,n),a.setAttribute(i,l.schedule)}},766711,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e="messaging.system",f="messaging.destination.name",g="messaging.operation.name",h="sentry.queue.enriched";function i(a,b){let c=a[b];return Array.isArray(c)?c[0]:c}c.maybeCleanupQueueSpan=function(a){let b=d.spanToJSON(a).data;b?.[h]&&a.setAttribute(h,void 0)},c.maybeEnrichQueueConsumerSpan=function(a){let b=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!b||"com.vercel.queue.v2beta"!==(Array.isArray(b["ce-type"])?b["ce-type"][0]:b["ce-type"]))return;let c=i(b,"ce-vqsqueuename"),j=i(b,"ce-vqsmessageid"),k=i(b,"ce-vqsconsumergroup"),l=i(b,"ce-vqsdeliverycount");if(a.setAttribute(e,"vercel.queue"),a.setAttribute(g,"process"),c&&a.setAttribute(f,c),j&&a.setAttribute("messaging.message.id",j),k&&a.setAttribute("messaging.consumer.group.name",k),l){let b=parseInt(l,10);isNaN(b)||a.setAttribute("messaging.message.delivery_count",b)}a.setAttribute(h,!0)},c.maybeEnrichQueueProducerSpan=function(a){let b,c=d.spanToJSON(a).data,i=c?.["url.full"];if(!i)return;try{b=new URL(i)}catch{return}if("vercel-queue.com"!==b.hostname&&!b.hostname.endsWith(".vercel-queue.com"))return;let j=b.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!j)return;let k=decodeURIComponent(j[1]);a.setAttribute(e,"vercel.queue"),a.setAttribute(f,k),a.setAttribute(g,"send"),a.setAttribute(h,!0)}},368517,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(357223),f=a.r(97153),g=a.r(960535),h=a.r(473132),i=a.r(943167),j=a.r(398359),k=a.r(858952),l=a.r(431385),m=a.r(766711);c.handleOnSpanStart=function(a){let b=f.spanToJSON(a).data,c=f.getRootSpan(a),n=f.spanToJSON(c).data,o=a===c;if(j.dropMiddlewareTunnelRequests(a,b),"string"==typeof b?.[h.ATTR_NEXT_ROUTE]&&(n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD])&&!n?.[e.ATTR_HTTP_ROUTE]){let a=b[h.ATTR_NEXT_ROUTE].replace(/\/route$/,"");c.updateName(a),c.setAttribute(e.ATTR_HTTP_ROUTE,a),c.setAttribute(h.ATTR_NEXT_ROUTE,a);let d=n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD];"string"==typeof d&&f.getIsolationScope().setTransactionName(`${d} ${a}`),l.maybeStartCronCheckIn(c,a),m.maybeEnrichQueueConsumerSpan(c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let d=b[h.ATTR_NEXT_SPAN_NAME];"string"==typeof d&&(c.updateName(d),c.setAttribute(e.ATTR_HTTP_ROUTE,d),c.setAttribute(h.ATTR_NEXT_SPAN_NAME,d)),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(b?.[h.ATTR_NEXT_SPAN_TYPE]!==void 0&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),o){let a=f.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;i.addHeadersAsAttributes(a,c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&o){let b=f.getCapturedScopesOnSpan(a),c=(b.isolationScope||f.getIsolationScope()).clone(),e=b.scope||f.getCurrentScope(),h=g.getScopesFromContext(d.context.active());h&&(h.isolationScope=c),f.setCapturedScopesOnSpan(a,e,c)}k.maybeEnhanceServerComponentSpanName(a,b,n),m.maybeEnrichQueueProducerSpan(a)}},58753,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328);function f(){let a=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:a}=process.getBuiltinModule("async_hooks")??{};return a}}();if(!a||"function"!=typeof a.snapshot){e.DEBUG_BUILD&&d.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return a.snapshot()}function g(a){return a instanceof Error&&a.message.includes("AsyncLocalStorage")}c.prepareSafeIdGeneratorContext=function(){let a=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),b=d.GLOBAL_OBJ,c=f();if(!c)return;let h=c;b[a]=a=>{try{return h(a)}catch(c){if(!g(c))throw c;let b=f();if(!b)return a();h=b;try{return h(a)}catch(b){if(!g(b))throw b;return a()}}},e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},535727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.captureUnderscoreErrorException=async function(a){let{req:b,res:c,err:f}=a,g=c?.statusCode||a.statusCode;if(g&&g<500||!a.pathname)return;if(f&&d.isAlreadyCaptured(f)){e.waitUntil(e.flushSafelyWithTimeout());let a="object"==typeof f?f.__sentry_event_id__:void 0;return"string"==typeof a?(d.getIsolationScope().setLastEventId(a),a):d.getIsolationScope().lastEventId()}let h=d.withScope(a=>{if(b){let c=d.httpRequestToRequestData(b);a.setSDKProcessingMetadata({normalizedRequest:c})}return d.captureException(f||`_error.js called with falsy error (${f})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return e.waitUntil(e.flushSafelyWithTimeout()),h}},720432,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.isUseCacheFunction=function(a){if(a.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:b}=function(a){let b=parseInt(a.slice(0,2),16),c=b>>1&63,d=Array(6);for(let a=0;a<6;a++){let b=c>>5-a&1;d[a]=1===b}return{type:1==(b>>7&1)?"use-cache":"server-action",usedArgs:d,hasRestArgs:1==(1&b)}}(a.$$id);return"use-cache"===b}},320495,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328),f=a.r(929689),g=a.r(720432);function h(a){let b=f.isBuild(),c=!!a&&g.isUseCacheFunction(a);return c&&e.DEBUG_BUILD&&d.debug.log("Skipping span creation in Cache Components context"),b||c}function i(){return new d.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}c.startInactiveSpan=function(a){return h()?i():d.startInactiveSpan(a)},c.startSpan=function(a,b){return h(b)?b(i()):d.startSpan(a,b)},c.startSpanManual=function(a,b){if(h(b)){let a=i();return b(a,()=>a.end())}return d.startSpanManual(a,b)}},734313,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(268404);c.callDataFetcherTraced=async function(a,b){try{return await a(...b)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),a}},c.withErrorInstrumentation=function(a){return async function(...b){try{return await a.apply(this,b)}catch(b){throw d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:a.name}}}),b}}},c.withTracedServerSideDataFetcher=function(a,b,c,f){return async function(...c){let g=d.httpRequestToRequestData(b);d.getCurrentScope().setTransactionName(`${f.dataFetchingMethodName} (${f.dataFetcherRouteName})`),d.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g});let h=d.getActiveSpan();h&&"/_error"!==f.requestedRouteName&&d.getRootSpan(h).setAttribute(e.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,f.requestedRouteName);let{"sentry-trace":i,baggage:j}=d.getTraceData();return{sentryTrace:i,baggage:j,data:await a.apply(this,c)}}}},772759,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetStaticPropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let f=e.withErrorInstrumentation(a);return e.callDataFetcherTraced(f,c)}})}},244416,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:f.pathname,requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c)??{};return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},823519,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapAppGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f.ctx,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_app",requestedRouteName:f.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,sentryTrace:j,baggage:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(d.pageProps||(d.pageProps={}),j&&(d.pageProps._sentryTraceData=j),k&&(d.pageProps._sentryBaggage=k)),d}}})}},534813,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapDocumentGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_document",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d}=await a.apply(b,c);return d}}})}},772851,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapErrorGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_error",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},774424,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetServerSidePropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,c,f)=>{if(d.isBuild())return a.apply(c,f);let[g]=f,{req:h,res:i}=g,j=e.withErrorInstrumentation(a),k=e.withTracedServerSideDataFetcher(j,h,i,{dataFetcherRouteName:b,requestedRouteName:b,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:m,sentryTrace:n}=await k.apply(c,f);return"object"==typeof l&&null!==l&&"props"in l&&(n&&(l.props._sentryTraceData=n),m&&(l.props._sentryBaggage=m)),l}})}},971876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.isNotFoundNavigationError=function(a){return d.isError(a)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(a.digest)},c.isRedirectNavigationError=function(a){return d.isError(a)&&"string"==typeof a.digest&&a.digest.startsWith("NEXT_REDIRECT;")}},538357,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);c.wrapServerComponentWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h=d.getIsolationScope(),i=b.headers?d.winterCGHeadersToDict(b.headers):void 0;return h.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g}=b,i=!0;h.setTransactionName(`${g} Server Component (${f})`),c&&(e.isNotFoundNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),i&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},18905,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);a.r(858952),c.wrapRouteHandlerWithSentry=function(a,b){let{method:c,parameterizedRoute:g,headers:h}=b;return new Proxy(a,{apply:async(a,b,h)=>{let i=d.getActiveSpan(),j=i?d.getRootSpan(i):void 0;return d.withIsolationScope(d.getIsolationScope(),()=>d.withScope(async k=>{k.setTransactionName(`${c} ${g}`);let l=await d.handleCallbackErrors(()=>a.apply(b,h),a=>{e.isRedirectNavigationError(a)||(e.isNotFoundNavigationError(a)?(i&&d.setHttpStatus(i,404),j&&d.setHttpStatus(j,404)):d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{f.waitUntil(f.flushSafelyWithTimeout())});try{l.status&&(i&&d.setHttpStatus(i,l.status),j&&d.setHttpStatus(j,l.status))}catch{}return l}))}})}},573248,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.wrapApiHandlerWithSentryVercelCrons=function(a,b){return new Proxy(a,{apply:(a,c,e)=>{let f;if(!e?.[0])return a.apply(c,e);let[g]=e,h="nextUrl"in g?g.nextUrl.pathname:g.url,i="nextUrl"in g?g.headers.get("user-agent"):g.headers["user-agent"];if(!b||!i?.includes("vercel-cron"))return a.apply(c,e);let j=b.find(a=>a.path===h);if(!j?.path||!j.schedule)return a.apply(c,e);let k=j.path,l=d.captureCheckIn({monitorSlug:k,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:j.schedule}}),m=d._INTERNAL_safeDateNow()/1e3,n=()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"error",duration:d._INTERNAL_safeDateNow()/1e3-m})};try{f=a.apply(c,e)}catch(a){throw n(),a}return"object"==typeof f&&null!==f&&"then"in f?Promise.resolve(f).then(()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m})},()=>{n()}):d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m}),f}})}},918691,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.wrapMiddlewareWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{let f="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(f&&"string"==typeof f){let a=c[0];if(a instanceof Request&&new URL(a.url).pathname.startsWith(f))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return d.withIsolationScope(f=>{let g,h,i=c[0],j=d.getCurrentScope();i instanceof Request?(f.setSDKProcessingMetadata({normalizedRequest:d.winterCGRequestToRequestData(i)}),g=`middleware ${i.method}`,h="url"):(g="middleware",h="component"),j.setTransactionName(g);let k=d.getActiveSpan();if(k){g="middleware",h="component";let a=d.getRootSpan(k);a&&d.setCapturedScopesOnSpan(a,j,f)}return d.startSpan({name:g,op:"http.server.middleware",attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h,[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>d.handleCallbackErrors(()=>a.apply(b,c),a=>{d.captureException(a,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{e.waitUntil(e.flushSafelyWithTimeout())}))})}})}},131427,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);function e(a,b){a&&"object"==typeof a&&d.addNonEnumerableProperty(a,"__sentry_event_id__",b)}c.wrapPageComponentWithSentry=function(a){return"function"==typeof a&&a?.prototype?.isReactComponent?class extends a{render(...a){return d.withIsolationScope(()=>{let b=d.getCurrentScope(),c="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(c){let a=d.extractTraceparentData(c);b.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return super.render(...a)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw e(b,a),b}})}}:"function"==typeof a?new Proxy(a,{apply:(a,b,c)=>d.withIsolationScope(()=>{let f=d.getCurrentScope(),g=c?.[0]?._sentryTraceData;if(g){let a=d.extractTraceparentData(g);f.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return a.apply(b,c)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw e(b,a),b}})}):a}},708403,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);c.wrapGenerationFunctionWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h,i=d.getIsolationScope();try{h=b.requestAsyncStorage?.getStore()?.headers}catch{}let j=h?d.winterCGHeadersToDict(h):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:j}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g,generationFunctionIdentifier:h}=b,j=!0;i.setTransactionName(`${g}.${h} (${f})`),c&&(e.isNotFoundNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),j&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:h}}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},603642,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934),f=a.r(373328),g=a.r(971876);async function h(a,b,c){return d.withIsolationScope(async h=>{let i,j,k=d.getClient()?.getOptions().sendDefaultPii,l={};try{let a=await b.headers;i=a?.get("sentry-trace")??void 0,j=a?.get("baggage"),a?.forEach((a,b)=>{l[b]=a})}catch{f.DEBUG_BUILD&&d.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return h.setTransactionName(`serverAction/${a}`),h.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:i,baggage:j},async()=>{try{return await d.startSpan({op:"function.server_action",name:`serverAction/${a}`,forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async a=>{let e=await d.handleCallbackErrors(c,b=>{g.isNotFoundNavigationError(b)?a.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"}):g.isRedirectNavigationError(b)||(a.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"}),d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==b.recordResponse?b.recordResponse:k)&&d.getIsolationScope().setExtra("server_action_result",e),b.formData&&b.formData.forEach((a,b)=>{d.getIsolationScope().setExtra(`server_action_form_data.${b}`,"string"==typeof a?a:"[non-string value]")}),e})}finally{e.waitUntil(e.flushSafelyWithTimeout())}})})}c.withServerActionInstrumentation=function(...a){if("function"==typeof a[1]){let[b,c]=a;return h(b,{},c)}{let[b,c,d]=a;return h(b,c,d)}}},506983,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.captureRequestError=function(a,b,c){d.withScope(f=>{f.setSDKProcessingMetadata({normalizedRequest:{headers:d.headersToDict(b.headers),method:b.method}}),f.setContext("nextjs",{request_path:b.path,router_kind:c.routerKind,router_path:c.routePath,route_type:c.routeType}),f.setTransactionName(`${b.method} ${c.routePath}`),d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),e.waitUntil(e.flushSafelyWithTimeout())})}},12234,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934),f=a.r(858952);c.wrapApiHandlerWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>(f.dropNextjsRootContext(),f.escapeNextjsTracing(()=>{let[f,h]=g;return f?h?f.__withSentry_applied__?a.apply(c,g):(f.__withSentry_applied__=!0,d.withIsolationScope(i=>(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:f.headers&&d.isString(f.headers["sentry-trace"])?f.headers["sentry-trace"]:void 0,baggage:f.headers?.baggage},()=>{let j=`${(f.method||"GET").toUpperCase()} `,k=d.httpRequestToRequestData(f);return i.setSDKProcessingMetadata({normalizedRequest:k}),i.setTransactionName(`${j}${b}`),d.startSpanManual({name:`${j}${b}`,op:"http.server",forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async b=>{h.end=new Proxy(h.end,{apply:(a,c,f)=>(d.setHttpStatus(b,h.statusCode),b.end(),e.waitUntil(e.flushSafelyWithTimeout()),a.apply(c,f))});try{return await a.apply(c,g)}catch(f){let c=d.objectify(f);throw d.captureException(c,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:a.name,function:"withSentry"}}}),d.setHttpStatus(b,500),b.end(),await e.flushSafelyWithTimeout(),c}})}))):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a response object. Will not instrument.`),a.apply(c,g)):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a request object. Will not instrument.`),a.apply(c,g))}))})}},797822,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(874208),g=a.r(373328);a.r(967602);let h=a.r(562293),i=a.r(473132),j=a.r(268404),k=a.r(929689),l=a.r(498934),m=a.r(816617),n=a.r(734080),o=a.r(368517),p=a.r(58753),q=a.r(431385),r=a.r(766711),s=a.r(535727),t=a.r(320495),u=a.r(772759),v=a.r(244416),w=a.r(823519),x=a.r(534813),y=a.r(772851),z=a.r(774424),A=a.r(538357),B=a.r(18905),C=a.r(573248),D=a.r(918691),E=a.r(131427),F=a.r(708403),G=a.r(603642),H=a.r(506983),I=a.r(12234);e.GLOBAL_OBJ,c.captureUnderscoreErrorException=s.captureUnderscoreErrorException,c.startInactiveSpan=t.startInactiveSpan,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.wrapGetStaticPropsWithSentry=u.wrapGetStaticPropsWithSentry,c.wrapGetInitialPropsWithSentry=v.wrapGetInitialPropsWithSentry,c.wrapAppGetInitialPropsWithSentry=w.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=x.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=y.wrapErrorGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=z.wrapGetServerSidePropsWithSentry,c.wrapServerComponentWithSentry=A.wrapServerComponentWithSentry,c.wrapRouteHandlerWithSentry=B.wrapRouteHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,c.wrapMiddlewareWithSentry=D.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=E.wrapPageComponentWithSentry,c.wrapGenerationFunctionWithSentry=F.wrapGenerationFunctionWithSentry,c.withServerActionInstrumentation=G.withServerActionInstrumentation,c.captureRequestError=H.captureRequestError,c.wrapApiHandlerWithSentry=I.wrapApiHandlerWithSentry,c.ErrorBoundary=a=>a.children?"function"==typeof a.children?a.children():a.children:null,c.createReduxEnhancer=function(){return a=>a},c.init=function(a){if(p.prepareSafeIdGeneratorContext(),k.isBuild())return;!g.DEBUG_BUILD&&a.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let b=f.getDefaultIntegrations(a).filter(a=>"Http"!==a.name).concat(f.httpIntegration({disableIncomingRequestSpans:!0}));a.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),b.push(n.distDirRewriteFramesIntegration({distDirName:".next"}));let c=function(){if(l.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),s={environment:a.environment||process.env.SENTRY_ENVIRONMENT||h.getVercelEnv(!1)||"production",release:"dc62485b60679b810b5f74bfb5a22915b7a62314",defaultIntegrations:b,...a,...c};if(g.DEBUG_BUILD&&s.debug&&e.debug.enable(),g.DEBUG_BUILD&&e.debug.log("Initializing SDK..."),e.getClient()){g.DEBUG_BUILD&&e.debug.log("SDK already initialized");return}e.applySdkMetadata(s,"nextjs",["nextjs",c?"cloudflare":"node"]);let t=f.init(s);t?.on("beforeSampling",({spanAttributes:a},b)=>{("string"==typeof a[d.SEMATTRS_HTTP_TARGET]&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof a[d.ATTR_URL_QUERY]&&a[d.ATTR_URL_QUERY].includes("sentry_key")&&a[d.ATTR_URL_QUERY].includes("sentry_client"))&&(b.decision=!1)}),t?.on("spanStart",o.handleOnSpanStart),t?.on("spanEnd",q.maybeCompleteCronCheckIn),t?.on("spanEnd",r.maybeCleanupQueueSpan),e.getGlobalScope().addEventProcessor(Object.assign(a=>{if("transaction"!==a.type)return a;if(a.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||a.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===a.transaction||a.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===a.transaction)return null;if("string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(b?.parentSampled===!1)return null}return a},{id:"NextLowQualityTransactionsFilter"})),e.getGlobalScope().addEventProcessor(Object.assign((a,b)=>{if(void 0!==a.type)return a;let c=b.originalException;if("object"==typeof c&&null!==c&&"$$typeof"in c&&c.$$typeof===Symbol.for("react.postpone"))return null;let d=a.exception?.values?.[0]?.value;return d?.includes("Suspense Exception: This is not a real error!")||d?.includes("Suspense Exception: This is not a real error, and should not leak")?null:a},{id:"DropReactControlFlowErrors"})),t?.on("preprocessEvent",a=>{if("transaction"===a.type&&a.contexts?.trace?.data?.[i.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",a.contexts.trace.op="http.server",a.transaction&&(a.transaction=e.stripUrlQueryAndFragment(a.transaction));let b=a.contexts.trace.data[d.SEMATTRS_HTTP_METHOD],c=a.contexts?.trace?.data?.[d.SEMATTRS_HTTP_TARGET],f=a.contexts.trace.data[d.ATTR_HTTP_ROUTE]||a.contexts.trace.data[i.ATTR_NEXT_ROUTE],g=a.contexts.trace.data[i.ATTR_NEXT_SPAN_NAME];if("string"==typeof b&&"string"==typeof f&&!f.startsWith("middleware")){let c=f.replace(/\/route$/,"");a.transaction=`${b} ${c}`,a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",a.contexts.trace.data[i.ATTR_NEXT_ROUTE]=c}a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==a.transaction&&(a.transaction=`${b} ${a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let h="string"==typeof g&&g.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);h&&(a.transaction=`middleware ${h[1]}`,a.contexts.trace.op="http.server.middleware"),"GET /_error"===a.transaction&&c&&(a.transaction=`${b?`${b} `:""}${c}`)}if("transaction"===a.type&&"string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);b?.traceId&&(a.contexts.trace.trace_id=b.traceId),b?.parentSpanId&&(a.contexts.trace.parent_span_id=b.parentSpanId)}m.setUrlProcessingMetadata(a)});try{e.getGlobalScope().setTag("turbopack",!0)}catch{}return g.DEBUG_BUILD&&e.debug.log("SDK successfully initialized"),t},c.showReportDialog=function(){},c.withErrorBoundary=function(a){return a},Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})},17814,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(114530),e=a.r(797822),f=a.r(874208),g=a.r(506983),h=a.r(535727),i=a.r(320495),j=a.r(603642),k=a.r(12234),l=a.r(573248),m=a.r(823519),n=a.r(534813),o=a.r(772851),p=a.r(708403),q=a.r(244416),r=a.r(774424),s=a.r(772759),t=a.r(918691),u=a.r(131427),v=a.r(18905),w=a.r(538357);c.withSentryConfig=d.withSentryConfig,c.ErrorBoundary=e.ErrorBoundary,c.createReduxEnhancer=e.createReduxEnhancer,c.init=e.init,c.showReportDialog=e.showReportDialog,c.withErrorBoundary=e.withErrorBoundary,c.captureRequestError=g.captureRequestError,c.captureUnderscoreErrorException=h.captureUnderscoreErrorException,c.startInactiveSpan=i.startInactiveSpan,c.startSpan=i.startSpan,c.startSpanManual=i.startSpanManual,c.withServerActionInstrumentation=j.withServerActionInstrumentation,c.wrapApiHandlerWithSentry=k.wrapApiHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=l.wrapApiHandlerWithSentryVercelCrons,c.wrapAppGetInitialPropsWithSentry=m.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=n.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=o.wrapErrorGetInitialPropsWithSentry,c.wrapGenerationFunctionWithSentry=p.wrapGenerationFunctionWithSentry,c.wrapGetInitialPropsWithSentry=q.wrapGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=r.wrapGetServerSidePropsWithSentry,c.wrapGetStaticPropsWithSentry=s.wrapGetStaticPropsWithSentry,c.wrapMiddlewareWithSentry=t.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=u.wrapPageComponentWithSentry,c.wrapRouteHandlerWithSentry=v.wrapRouteHandlerWithSentry,c.wrapServerComponentWithSentry=w.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})}]; -//# debugId=de2c1a74-3f86-153e-3829-ec16c4c99ae1 +//# debugId=1a5b8728-ca5f-4a09-bec2-4f5e70493008 //# sourceMappingURL=node_modules__pnpm_2ad0b5ae._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js.map b/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js.map index 4f0913328..e0c8498f6 100644 --- a/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js.map +++ b/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": [], - "debugId": "de2c1a74-3f86-153e-3829-ec16c4c99ae1", + "debugId": "1a5b8728-ca5f-4a09-bec2-4f5e70493008", "sections": [ {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/debug-build.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/worldwide.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/version.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/carrier.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debug-logger.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/stacktrace.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/handlers.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/globalError.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/globalUnhandledRejection.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/is.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/browser.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/object.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/randomSafeContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/string.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/misc.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/time.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/session.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/merge.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/propagationContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/spanOnScope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/scope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/defaultScopes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/chain-and-copy-promiselike.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/asyncContext/stackStrategy.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/asyncContext/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/currentScopes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/semanticAttributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/spanstatus.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/baggage.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/dsn.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/parseSampleRate.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tracing.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/spanUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/errors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/hasSpansEnabled.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/should-ignore-span.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/dynamicSamplingContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sentryNonRecordingSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/normalize.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/envelope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/envelope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/logSpans.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/measurement.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sentrySpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/handleCallbackErrors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sampling.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/trace.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/idleSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/syncpromise.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/eventProcessors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debug-ids.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/scopeData.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/prepareEvent.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/exports.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/api.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integration.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/attributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/timestampSequence.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/trace-info.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/envelope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/internal.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/envelope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/internal.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/timer.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/promisebuffer.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ratelimit.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/base.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/clientreport.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/eventUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/transactionEvent.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/client.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/checkin.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/userAgent.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/eventbuilder.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/server-runtime-client.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/sdk.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/offline.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/multiplexed.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ai/providerSkip.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/envToBool.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/url.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/isSentryRequestUrl.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/parameterize.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tunnel.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ipAddress.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/sdkMetadata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/traceData.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tracePropagationTargets.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/meta.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debounce.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/request.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/breadcrumbs.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/functiontostring.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/eventFilters.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/aggregate-errors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/linkederrors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metadata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/moduleMetadata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/cookie.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/vendor/getIpAddress.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/requestdata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/console.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/severity.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/captureconsole.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/dedupe.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/extraerrordata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/path.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/rewriteframes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/supabase.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/postgresjs.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/zoderrors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/third-party-errors-filter.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/console.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/featureFlags.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/featureFlags/featureFlagsIntegration.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/featureFlags/growthbook.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/conversationId.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/profiling.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/fetch.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/trpc.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/errorCapture.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/handlers.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/attributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/validation.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/resultExtraction.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/sessionManagement.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/sessionExtraction.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/correlation.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/methodConfig.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/attributeExtraction.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/piiFiltering.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/spans.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/transport.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/feedback.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/public-api.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/console-integration.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/public-api.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/consola.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/gen-ai-attributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/mediaStripping.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/messageTruncation.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/vercel-ai-attributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/streaming.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/streaming.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/streaming.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/breadcrumb-log-level.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/error.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/supports.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/fetch.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/env.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/node.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/isBrowser.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/exports.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/node-stack-trace.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/anr.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/lru.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/vercelWaitUntil.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/flushIfServerless.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/vendor/escapeStringForRegex.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/util.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/buildTime.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/deprecatedWebpackOptions.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/getBuildPluginOptions.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/handleRunAfterProductionCompile.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/turbopack/generateValueInjectionRules.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/turbopack/constructTurbopackConfig.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/webpack.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObjectBundlerUtils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/context-api.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/metrics/NoopMeter.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/api/metrics.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/metrics/NoopMeterProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/metrics-api.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/baggage/internal/baggage-impl.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/baggage/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/api/propagation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/baggage/context-helpers.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/propagation-api.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/baggage/internal/symbol.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/propagation/TextMapPropagator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/propagation/NoopTextMapPropagator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/ProxyTracer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/context/NoopContextManager.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/api/context.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/NoopTracer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/context-utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/spancontext-utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/ProxyTracerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/api/trace.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace-api.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/trace_flags.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/invalid-span-constants.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/context/context.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/NonRecordingSpan.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/NoopTracerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/span_kind.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/status.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/SamplingResult.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/diag/consoleLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/internal/tracestate-impl.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/internal/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/trace/internal/tracestate-validators.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/api/src/metrics/Metric.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_attributes.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/environment.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/sdk-info.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/ExportResult.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/promise.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/attributes.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/merge.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/time.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/internal/exporter.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/suppress-tracing.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/global-error-handler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/callback.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/lodash.merge.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/logging-error-handler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/propagation/W3CBaggagePropagator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/W3CTraceContextPropagator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/rpc-metadata.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/propagation/composite.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/TraceState.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/configuration.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/url.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/internal/validators.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/constants.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/globalThis.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/timeout.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/timer-util.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/anchored-clock.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/resource/SemanticResourceAttributes.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/internal/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/trace/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/resource/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/trace/SemanticAttributes.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_events.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_metrics.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/internal-types.ts","../../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/lib/error.js","../../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/lib/ascii.js","../../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/index.js","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/http.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/instrument.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/debug-build.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/captureRequestBody.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/httpServerIntegration.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/httpServerSpansIntegration.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/baggage.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/outgoingHttpRequest.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/SentryHttpInstrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/nodeVersion.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/outgoingFetchRequest.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/node-fetch/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AbstractAsyncHooksContextManager.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AsyncHooksContextManager.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AsyncLocalStorageContextManager.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/ResourceImpl.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/default-service-name.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/platform/node/RandomIdGenerator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/ConsoleSpanExporter.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/config.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/BasicTracerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/AlwaysOffSampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/BatchSpanProcessorBase.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/ParentBasedSampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/utility.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/platform/node/export/BatchSpanProcessor.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Tracer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/InMemorySpanExporter.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Span.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/TraceIdRatioBasedSampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/AlwaysOnSampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/SimpleSpanProcessor.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/MultiSpanProcessor.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/enums.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/NoopSpanProcessor.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/TracerMetrics.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Sampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/semconv.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/semanticAttributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getParentSpanId.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/spanTypes.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getRequestSpanData.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/custom/client.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getSpanKind.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/contextData.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/isSentryRequest.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getSamplingDecision.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/parseSpanDescription.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/enhanceDscWithOpenTelemetryRootSpanName.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getActiveSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/debug-build.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/makeTraceState.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/setupCheck.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/propagator.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/trace.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/suppressTracing.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/setupEventContextTrace.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getTraceData.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/asyncContextStrategy.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/contextManager.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/groupSpansWithParents.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/mapStatus.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/spanExporter.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/spanProcessor.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/sampler.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/contextManager.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/logger.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/childProcess.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/context.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/contextlines.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/debug.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/common.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/local-variables-async.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/local-variables-sync.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/detection.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/modules.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/errorhandling.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/onuncaughtexception.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/onunhandledrejection.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/processSession.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/spotlight.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/systemError.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/base.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/parse-proxy-response.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/transports/http.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/spotlight.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/module.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/api.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/client.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/esmLoader.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/scope.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/createMissingInstrumentationContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/ensureIsWrapped.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/anr/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/logs/capture.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/logs/exports.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/nodeRuntimeMetrics.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/winston.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/pino.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/addOriginToSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/getRequestUrl.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/common.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/cron.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/node-cron.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/node-schedule.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/http.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/undici.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/node-fetch.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/constants.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/fs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/enums/ExpressLayerType.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/debug-build.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/express.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../../node_modules/.pnpm/balanced-match%404.0.4/node_modules/balanced-match/src/index.ts","../../../../node_modules/.pnpm/brace-expansion%405.0.5/node_modules/brace-expansion/src/index.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/assert-valid-pattern.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/brace-expressions.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/unescape.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/ast.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/escape.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/index.ts","../../../../node_modules/.pnpm/%40fastify%2Botel%400.18.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40fastify/otel/index.js","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/enum.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/symbols.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/graphql.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/propagator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/kafka.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/lrumemoizer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mongo.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/mongoose.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mongoose.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mysql.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsql-common%400.41.2_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sql-common/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mysql2.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bredis-common%400.38.2/node_modules/%40opentelemetry/redis-common/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v2-v3/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v2-v3/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v4-v5/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v4-v5/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/redis.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/utils/redisCache.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/redis.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/enums/SpanNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/postgres.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/postgresjs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/platform/node/globalThis.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../../node_modules/.pnpm/%40prisma%2Binstrumentation%407.6.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40prisma/instrumentation/dist/index.js","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/prisma.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hapi/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/koa.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/connect.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/constants.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/knex.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/tedious.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/genericPool.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/dataloader.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/semconv-obsolete.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/amqplib.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/amqplib.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/openai/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/openai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/anthropic-ai/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/anthropic-ai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/google-genai/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/google-genai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langchain/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langchain/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langgraph/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langgraph/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/launchDarkly.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/openFeature.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/statsig.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/unleash.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/growthbook.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/patches/firestore.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/patches/functions.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/firebaseInstrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/firebase.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detect-resources.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/EnvDetector.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/machine-id/getMachineId.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/HostDetector.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/OSDetector.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/ProcessDetector.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/ServiceInstanceIdDetector.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/sdk/initOtel.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/sdk/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/manifest/createRouteManifest.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/tunnel.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObjectUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObject.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/debug-build.ts","../../../../node_modules/.pnpm/stacktrace-parser%400.1.11/node_modules/stacktrace-parser/dist/stack-trace-parser.esm.js","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/devErrorSymbolicationEventProcessor.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/getVercelEnv.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/nextSpanAttributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/span-attributes-with-logic-attached.ts","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/modern-browserslist-target.js","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/entry-constants.ts","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/constants.ts","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/constants.js","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/isBuild.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/responseEnd.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/urls.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/setUrlProcessingMetadata.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/distDirRewriteFramesIntegration.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/addHeadersAsAttributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/tracingUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/vercelCronsMonitoring.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/vercelQueuesMonitoring.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/handleOnSpanStart.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/prepareSafeIdGeneratorContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/_error.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/isUseCacheFunction.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/nextSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/wrapperUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetStaticPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetInitialPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapAppGetInitialPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapDocumentGetInitialPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapErrorGetInitialPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetServerSidePropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/nextNavigationErrorUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapServerComponentWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapRouteHandlerWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentryVercelCrons.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapMiddlewareWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapGenerationFunctionWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/withServerActionInstrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/captureRequestError.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/index.ts"],"sourcesContent":["declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\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 `debug` singleton, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Carrier } from '../carrier';\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport type InternalGlobal = {\n navigator?: { userAgent?: string; maxTouchPoints?: number };\n console: Console;\n PerformanceObserver?: any;\n Sentry?: any;\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n /**\n * Native debug IDs implementation (e.g., from Vercel).\n * This uses the same format as _sentryDebugIds but with a different global name.\n * Keys are `error.stack` strings, values are debug IDs.\n */\n _debugIds?: Record;\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record;\n _sentryEsmLoaderHookRegistered?: boolean;\n} & Carrier;\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ = globalThis as unknown as InternalGlobal;\n","// This is a magic string replaced by rollup\ndeclare const __SENTRY_SDK_VERSION__: string;\n\nexport const SDK_VERSION = typeof __SENTRY_SDK_VERSION__ === 'string' ? __SENTRY_SDK_VERSION__ : '0.0.0-unknown.0';\n","import type { AsyncContextStack } from './asyncContext/stackStrategy';\nimport type { AsyncContextStrategy } from './asyncContext/types';\nimport type { Client } from './client';\nimport type { Scope } from './scope';\nimport type { SerializedLog } from './types-hoist/log';\nimport type { SerializedMetric } from './types-hoist/metric';\nimport { SDK_VERSION } from './utils/version';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: VersionedCarrier;\n}\n\ntype VersionedCarrier = {\n version?: string;\n} & Record, SentryCarrier>;\n\nexport interface SentryCarrier {\n acs?: AsyncContextStrategy;\n stack?: AsyncContextStack;\n\n globalScope?: Scope;\n defaultIsolationScope?: Scope;\n defaultCurrentScope?: Scope;\n loggerSettings?: { enabled: boolean };\n /**\n * A map of Sentry clients to their log buffers.\n * This is used to store logs that are sent to Sentry.\n */\n clientToLogBufferMap?: WeakMap>;\n\n /**\n * A map of Sentry clients to their metric buffers.\n * This is used to store metrics that are sent to Sentry.\n */\n clientToMetricBufferMap?: WeakMap>;\n\n /** Overwrites TextEncoder used in `@sentry/core`, need for `react-native@0.73` and older */\n encodePolyfill?: (input: string) => Uint8Array;\n /** Overwrites TextDecoder used in `@sentry/core`, need for `react-native@0.73` and older */\n decodePolyfill?: (input: Uint8Array) => string;\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 **/\nexport function getMainCarrier(): Carrier {\n // This ensures a Sentry carrier exists\n getSentryCarrier(GLOBAL_OBJ);\n return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nexport function getSentryCarrier(carrier: Carrier): SentryCarrier {\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n // For now: First SDK that sets the .version property wins\n __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n // Intentionally populating and returning the version of \"this\" SDK instance\n // rather than what's set in .version so that \"this\" SDK always gets its carrier\n return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\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 `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(\n name: Prop,\n creator: () => NonNullable,\n obj = GLOBAL_OBJ,\n): NonNullable {\n const __SENTRY__ = (obj.__SENTRY__ = obj.__SENTRY__ || {});\n const carrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n // Note: We do not want to set `carrier.version` here, as this may be called before any `init` is called, e.g. for the default scopes\n return carrier[name] || (carrier[name] = creator());\n}\n","import { getGlobalSingleton } from '../carrier';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from './worldwide';\n\nexport interface SentryDebugLogger {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n log(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n}\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: Partial<{\n log(...args: Parameters): void;\n info(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n debug(...args: Parameters): void;\n assert(...args: Parameters): void;\n trace(...args: Parameters): void;\n}> = {};\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 */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console;\n const wrappedFuncs: Partial void>> = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level];\n wrappedFuncs[level] = console[level] as (...args: unknown[]) => void;\n console[level] = originalConsoleMethod as (...args: unknown[]) => void;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as (...args: unknown[]) => void;\n });\n }\n}\n\nfunction enable(): void {\n _getLoggerSettings().enabled = true;\n}\n\nfunction disable(): void {\n _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled(): boolean {\n return _getLoggerSettings().enabled;\n}\n\nfunction log(...args: Parameters): void {\n _maybeLog('log', ...args);\n}\n\nfunction warn(...args: Parameters): void {\n _maybeLog('warn', ...args);\n}\n\nfunction error(...args: Parameters): void {\n _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level: ConsoleLevel, ...args: Parameters<(typeof console)[typeof level]>): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n if (isEnabled()) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n });\n }\n}\n\nfunction _getLoggerSettings(): { enabled: boolean } {\n if (!DEBUG_BUILD) {\n return { enabled: false };\n }\n\n return getGlobalSingleton('loggerSettings', () => ({ enabled: false }));\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n */\nexport const debug = {\n /** Enable logging. */\n enable,\n /** Disable logging. */\n disable,\n /** Check if logging is enabled. */\n isEnabled,\n /** Log a message. */\n log,\n /** Log a warning. */\n warn,\n /** Log an error. */\n error,\n} satisfies SentryDebugLogger;\n","import type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackLineParser, StackParser } from '../types-hoist/stacktrace';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\nexport const UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\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 */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirstLines: number = 0, framesToPop: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirstLines; i < lines.length; i++) {\n let line = lines[i] as string;\n // Truncate lines over 1kb because many of the regular expressions use\n // backtracking which results in run time that increases exponentially\n // with input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n line = line.slice(0, 1024);\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames.slice(framesToPop));\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 */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\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 (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\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 (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the scope itself, making it:\n //\n // Sentry.captureException()\n // scope.captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION,\n }));\n}\n\nfunction getLastStackFrame(arr: StackFrame[]): StackFrame {\n return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch {\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\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nexport function getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n const frames: StackFrame[] = [];\n try {\n // @ts-expect-error Object could be undefined\n exception.values.forEach(value => {\n // @ts-expect-error Value could be undefined\n if (value.stacktrace.frames) {\n // @ts-expect-error Value could be undefined\n frames.push(...value.stacktrace.frames);\n }\n });\n return frames;\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Get the internal name of an internal Vue value, to represent it in a stacktrace.\n *\n * @param value The value to get the internal name of.\n */\nexport function getVueInternalName(value: VueViewModel | VNode): string {\n // Check if it's a VNode (has __v_isVNode) or a component instance (has _isVue/__isVue)\n const isVNode = '__v_isVNode' in value && value.__v_isVNode;\n\n return isVNode ? '[VueVNode]' : '[VueViewModel]';\n}\n\n/**\n * Normalizes stack line paths by removing file:// prefix and leading slashes for Windows paths\n */\nexport function normalizeStackTracePath(path: string | undefined): string | undefined {\n let filename = path?.startsWith('file://') ? path.slice(7) : path;\n // If it's a Windows path, trim the leading slash so that `/C:/foo` becomes `C:/foo`\n if (filename?.match(/\\/[A-Z]:/)) {\n filename = filename.slice(1);\n }\n return filename;\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from '../utils/debug-logger';\nimport { getFunctionName } from '../utils/stacktrace';\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'fetch-body-resolved'\n | 'history'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n handlers[type].push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n if (!instrumented[type]) {\n instrumented[type] = true;\n try {\n instrumentFn();\n } catch (e) {\n DEBUG_BUILD && debug.error(`Error while instrumenting ${type}`, e);\n }\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n debug.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n","import type { HandlerDataError } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n // Note: The reason we are doing window.onerror instead of window.addEventListener('error')\n // is that we are using this handler in the Loader Script, to handle buffered errors consistently\n GLOBAL_OBJ.onerror = function (\n msg: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","import type { HandlerDataUnhandledRejection } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection')\n // is that we are using this handler in the Loader Script, to handle buffered rejections consistently\n GLOBAL_OBJ.onunhandledrejection = function (e: unknown): boolean {\n const handlerData: HandlerDataUnhandledRejection = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Primitive } from '../types-hoist/misc';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { PolymorphicEvent } from '../types-hoist/polymorphics';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst 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 */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object WebAssembly.Exception]':\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: unknown, className: string): boolean {\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 */\nexport function isErrorEvent(wat: unknown): boolean {\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 */\nexport function isDOMError(wat: unknown): boolean {\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 */\nexport function isDOMException(wat: unknown): boolean {\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 */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\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 */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\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 */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\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 */\nexport function isElement(wat: unknown): boolean {\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 */\nexport function isRegExp(wat: unknown): wat is RegExp {\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 */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(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 */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in 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 */\n// TODO: fix in v11, convert any to unknown\n// export function isInstanceOf(wat: unknown, base: { new (...args: any[]): T }): wat is T {\nexport function isInstanceOf(wat: any, base: any): wat is T {\n try {\n return wat instanceof base;\n } catch {\n return false;\n }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel or a VNode.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): wat is VueViewModel | VNode {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n // We also need to check for __v_isVNode because Vue 3 component render instances have an internal __v_isVNode property.\n return !!(\n typeof wat === 'object' &&\n wat !== null &&\n ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue || (wat as { __v_isVNode?: boolean }).__v_isVNode)\n );\n}\n\n/**\n * Checks whether the given parameter is a Standard Web API Request instance.\n *\n * Returns false if Request is not available in the current runtime.\n */\nexport function isRequest(request: unknown): request is Request {\n return typeof Request !== 'undefined' && isInstanceOf(request, Request);\n}\n","import { isString } from './is';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n parentNode: SimpleNode;\n} | null;\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 */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n if (!elem) {\n return '';\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 as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\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 maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\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 {\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: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n\n if (!elem?.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset) {\n if (elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n if (elem.dataset['sentryElement']) {\n return elem.dataset['sentryElement'];\n }\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs = keyAttrs?.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (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 const className = elem.className;\n if (className && isString(className)) {\n const classes = className.split(/\\s+/);\n for (const c of classes) {\n out.push(`.${c}`);\n }\n }\n }\n for (const k of ['aria-label', 'type', 'name', 'title', 'alt']) {\n const attr = elem.getAttribute(k);\n if (attr) {\n out.push(`[${k}=\"${attr}\"]`);\n }\n }\n\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch {\n return '';\n }\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement) {\n if (currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n if (currentElem.dataset['sentryElement']) {\n return currentElem.dataset['sentryElement'];\n }\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { htmlTreeAsString } from './browser';\nimport { debug } from './debug-logger';\nimport { isElement, isError, isEvent, isInstanceOf, isPrimitive } from './is';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * If the method on the passed object is not a function, the wrapper will not be applied.\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 */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n // explicitly casting to unknown because we don't know the type of the method initially at all\n const original = source[name] as unknown;\n\n if (typeof original !== 'function') {\n return;\n }\n\n const wrapped = replacementFactory(original) as WrappedFunction;\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 markFunctionWrapped(wrapped, original);\n }\n\n try {\n source[name] = wrapped;\n } catch {\n DEBUG_BUILD && debug.log(`Failed to replace method \"${name}\" in object`, source);\n }\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 */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value,\n writable: true,\n configurable: true,\n });\n } catch {\n DEBUG_BUILD && debug.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\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 */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch {} // eslint-disable-line no-empty\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 */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function getOriginalFunction(func: WrappedFunction): T | undefined {\n return func.__sentry_original__;\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 argument itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(value: V):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\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 const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\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: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n return Object.fromEntries(Object.entries(obj));\n }\n return {};\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 */\nexport function extractExceptionKeysForMessage(exception: Record): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n return !keys[0] ? '[object has no keys]' : keys.join(', ');\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 *\n * @deprecated This function is no longer used by the SDK and will be removed in a future major version.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\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 const 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: T, memoizationMap: Map): T {\n // Early return for primitive values\n if (inputValue === null || typeof inputValue !== 'object') {\n return inputValue;\n }\n\n // Check memo map first for all object types\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n // handle arrays\n if (Array.isArray(inputValue)) {\n const returnValue: unknown[] = [];\n // Store mapping to handle circular references\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach(value => {\n returnValue.push(_dropUndefinedKeys(value, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n if (isPojo(inputValue)) {\n const returnValue: { [key: string]: unknown } = {};\n // Store mapping to handle circular references\n memoizationMap.set(inputValue, returnValue);\n\n const keys = Object.keys(inputValue);\n\n keys.forEach(key => {\n const val = inputValue[key];\n if (val !== undefined) {\n returnValue[key] = _dropUndefinedKeys(val, memoizationMap);\n }\n });\n\n return returnValue as T;\n }\n\n // For other object types, return as is\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record {\n // Plain objects have Object as constructor or no constructor\n const constructor = (input as object).constructor;\n return constructor === Object || constructor === undefined;\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 */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n // this will catch both undefined and null\n case wat == undefined:\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).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","import { GLOBAL_OBJ } from './worldwide';\n\nexport type RandomSafeContextRunner = (callback: () => T) => T;\n\n// undefined = not yet resolved, null = no runner found, function = runner found\nlet RESOLVED_RUNNER: RandomSafeContextRunner | null | undefined;\n\n/**\n * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts\n */\nexport function withRandomSafeContext(cb: () => T): T {\n // Skips future symbol lookups if we've already resolved (or attempted to resolve) the runner once\n if (RESOLVED_RUNNER !== undefined) {\n return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb();\n }\n\n const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__');\n const globalWithSymbol: typeof GLOBAL_OBJ & { [sym]?: RandomSafeContextRunner } = GLOBAL_OBJ;\n\n if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === 'function') {\n RESOLVED_RUNNER = globalWithSymbol[sym];\n return RESOLVED_RUNNER(cb);\n }\n\n RESOLVED_RUNNER = null;\n return cb();\n}\n\n/**\n * Identical to Math.random() but wrapped in withRandomSafeContext\n * to ensure safe random number generation in certain contexts (e.g., Next.js Cache Components).\n */\nexport function safeMathRandom(): number {\n return withRandomSafeContext(() => Math.random());\n}\n\n/**\n * Identical to Date.now() but wrapped in withRandomSafeContext\n * to ensure safe time value generation in certain contexts (e.g., Next.js Cache Components).\n */\nexport function safeDateNow(): number {\n return withRandomSafeContext(() => Date.now());\n}\n","import { isRegExp, isString, isVueViewModel } from './is';\nimport { getVueInternalName } from './stacktrace';\n\nexport { escapeStringForRegex } from '../vendor/escapeStringForRegex';\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 */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(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 */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\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 */\nexport function safeJoin(input: unknown[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line typescript/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push(getVueInternalName(value));\n } else {\n output.push(String(value));\n }\n } catch {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","import type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { addNonEnumerableProperty } from './object';\nimport { safeMathRandom, withRandomSafeContext } from './randomSafeContext';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\nfunction getCrypto(): CryptoInternal | undefined {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n return gbl.crypto || gbl.msCrypto;\n}\n\nlet emptyUuid: string | undefined;\n\nfunction getRandomByte(): number {\n return safeMathRandom() * 16;\n}\n\n/**\n * UUID4 generator\n * @param crypto Object that provides the crypto API.\n * @returns string Generated UUID4.\n */\nexport function uuid4(crypto = getCrypto()): string {\n try {\n if (crypto?.randomUUID) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return withRandomSafeContext(() => crypto.randomUUID!()).replace(/-/g, '');\n }\n } catch {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n if (!emptyUuid) {\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 emptyUuid = ([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11;\n }\n\n return emptyUuid.replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception?.values?.[0];\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 */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const 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 */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const 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 */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...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\nconst 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 */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\nfunction _parseInt(input: string | undefined): number {\n return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = _parseInt(match[1]);\n const minor = _parseInt(match[2]);\n const patch = _parseInt(match[3]);\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 */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n // We guard here to ensure this is not larger than the existing number of lines\n const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n frame.context_line = snipLine(lines[lineIndex]!, frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => 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 */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n if (isAlreadyCaptured(exception)) {\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 as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether we've already captured the given exception (note: not an identical exception - the very object).\n * It is considered already captured if it has the `__sentry_captured__` property set to `true`.\n *\n * @internal Only considered for internal usage\n */\nexport function isAlreadyCaptured(exception: unknown): boolean | void {\n try {\n return (exception as { __sentry_captured__?: boolean }).__sentry_captured__;\n } catch {} // eslint-disable-line no-empty\n}\n","import { safeDateNow, withRandomSafeContext } from './randomSafeContext';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\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 */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport function dateTimestampInSeconds(): number {\n return safeDateNow() / ONE_SECOND_IN_MS;\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 createUnixTimestampInSecondsFunc(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n // Some browser and environments don't have a performance or timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n if (!performance?.now || !performance.timeOrigin) {\n return dateTimestampInSeconds;\n }\n\n const timeOrigin = performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + withRandomSafeContext(() => performance.now())) / ONE_SECOND_IN_MS;\n };\n}\n\nlet _cachedTimestampInSeconds: (() => number) | undefined;\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 * 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 */\nexport function timestampInSeconds(): number {\n // We store this in a closure so that we don't have to create a new function every time this is called.\n const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc());\n return func();\n}\n\n/**\n * Cached result of getBrowserTimeOrigin.\n */\nlet cachedTimeOrigin: number | null | undefined = null;\n\n/**\n * Gets the time origin and the mode used to determine it.\n *\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 * TODO: move to `@sentry/browser-utils` package.\n */\nfunction getBrowserTimeOrigin(): number | undefined {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance?.now) {\n return undefined;\n }\n\n const threshold = 300_000; // 5 minutes in milliseconds\n const performanceNow = withRandomSafeContext(() => performance.now());\n const dateNow = safeDateNow();\n\n const timeOrigin = performance.timeOrigin;\n if (typeof timeOrigin === 'number') {\n const timeOriginDelta = Math.abs(timeOrigin + performanceNow - dateNow);\n if (timeOriginDelta < threshold) {\n return timeOrigin;\n }\n }\n\n // TODO: Remove all code related to `performance.timing.navigationStart` once we drop support for Safari 14.\n // `performance.timeSince` is available in Safari 15.\n // see: https://caniuse.com/mdn-api_performance_timeorigin\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 // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing?.navigationStart;\n if (typeof navigationStart === 'number') {\n const navigationStartDelta = Math.abs(navigationStart + performanceNow - dateNow);\n if (navigationStartDelta < threshold) {\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to subtracting\n // `performance.now()` from `Date.now()`.\n return dateNow - performanceNow;\n}\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 */\nexport function browserPerformanceTimeOrigin(): number | undefined {\n if (cachedTimeOrigin === null) {\n cachedTimeOrigin = getBrowserTimeOrigin();\n }\n\n return cachedTimeOrigin;\n}\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from './types-hoist/session';\nimport { uuid4 } from './utils/misc';\nimport { timestampInSeconds } from './utils/time';\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 */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: 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 Client.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 */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\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.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\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 const 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 */\nexport function closeSession(session: Session, status?: Exclude): void {\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: Session): SerializedSession {\n return {\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 abnormal_mechanism: session.abnormal_mechanism,\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 * Shallow merge two objects.\n * Does not mutate the passed in objects.\n * Undefined/empty values in the merge object will overwrite existing values.\n *\n * By default, this merges 2 levels deep.\n */\nexport function merge(initialObj: T, mergeObj: T, levels = 2): T {\n // If the merge value is not an object, or we have no merge levels left,\n // we just set the value to the merge value\n if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {\n return mergeObj;\n }\n\n // If the merge object is an empty object, and the initial object is not undefined, we return the initial object\n if (initialObj && Object.keys(mergeObj).length === 0) {\n return initialObj;\n }\n\n // Clone object\n const output = { ...initialObj };\n\n // Merge values into output, resursively\n for (const key in mergeObj) {\n if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n output[key] = merge(output[key], mergeObj[key], levels - 1);\n }\n }\n\n return output;\n}\n","import { uuid4 } from './misc';\n\n/**\n * Generate a random, valid trace ID.\n */\nexport function generateTraceId(): string {\n return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nexport function generateSpanId(): string {\n return uuid4().substring(16);\n}\n","import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\ntype ScopeWithMaybeSpan = Scope & {\n [SCOPE_SPAN_FIELD]?: Span;\n};\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nexport function _setSpanForScope(scope: Scope, span: Span | undefined): void {\n if (span) {\n addNonEnumerableProperty(scope as ScopeWithMaybeSpan, SCOPE_SPAN_FIELD, span);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (scope as ScopeWithMaybeSpan)[SCOPE_SPAN_FIELD];\n }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nexport function _getSpanForScope(scope: ScopeWithMaybeSpan): Span | undefined {\n return scope[SCOPE_SPAN_FIELD];\n}\n","/* eslint-disable max-lines */\nimport type { AttributeObject, RawAttribute, RawAttributes } from './attributes';\nimport type { Client } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport { updateSession } from './session';\nimport type { Attachment } from './types-hoist/attachment';\nimport type { Breadcrumb } from './types-hoist/breadcrumb';\nimport type { Context, Contexts } from './types-hoist/context';\nimport type { DynamicSamplingContext } from './types-hoist/envelope';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { Session } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span } from './types-hoist/span';\nimport type { PropagationContext } from './types-hoist/tracing';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isPlainObject } from './utils/is';\nimport { merge } from './utils/merge';\nimport { uuid4 } from './utils/misc';\nimport { generateTraceId } from './utils/propagationContext';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from './utils/spanOnScope';\nimport { truncate } from './utils/string';\nimport { dateTimestampInSeconds } from './utils/time';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * A context to be used for capturing an event.\n * This can either be a Scope, or a partial ScopeContext,\n * or a callback that receives the current scope and returns a new scope to use.\n */\nexport type CaptureContext = Scope | Partial | ((scope: Scope) => Scope);\n\n/**\n * Data that can be converted to a Scope.\n */\nexport interface ScopeContext {\n user: User;\n level: SeverityLevel;\n extra: Extras;\n contexts: Contexts;\n tags: { [key: string]: Primitive };\n attributes?: RawAttributes>;\n fingerprint: string[];\n propagationContext: PropagationContext;\n conversationId?: string;\n}\n\nexport interface SdkProcessingMetadata {\n [key: string]: unknown;\n requestSession?: {\n status: 'ok' | 'errored' | 'crashed';\n };\n normalizedRequest?: RequestEventData;\n dynamicSamplingContext?: Partial;\n capturedSpanScope?: Scope;\n capturedSpanIsolationScope?: Scope;\n spanCountBeforeProcessing?: number;\n ipAddress?: string;\n}\n\n/**\n * Normalized data of the Scope, ready to be used.\n */\nexport interface ScopeData {\n eventProcessors: EventProcessor[];\n breadcrumbs: Breadcrumb[];\n user: User;\n tags: { [key: string]: Primitive };\n // TODO(v11): Make this a required field (could be subtly breaking if we did it today)\n attributes?: RawAttributes>;\n extra: Extras;\n contexts: Contexts;\n attachments: Attachment[];\n propagationContext: PropagationContext;\n sdkProcessingMetadata: SdkProcessingMetadata;\n fingerprint: string[];\n level?: SeverityLevel;\n transactionName?: string;\n span?: Span;\n conversationId?: string;\n}\n\n/**\n * Holds additional event information.\n */\nexport class Scope {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called during event processing. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Attributes */\n protected _attributes: RawAttributes>;\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\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 protected _sdkProcessingMetadata: SdkProcessingMetadata;\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: SeverityLevel;\n\n /**\n * Transaction Name\n *\n * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n */\n protected _transactionName?: string;\n\n /** Session */\n protected _session?: Session;\n\n /** The client on this scope */\n protected _client?: Client;\n\n /** Contains the last event id of a captured event. */\n protected _lastEventId?: string;\n\n /** Conversation ID */\n protected _conversationId?: string;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public 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._attributes = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = {\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n };\n }\n\n /**\n * Clone all data from this scope into a new scope.\n */\n public clone(): Scope {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._attributes = { ...this._attributes };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n if (this._contexts.flags) {\n // We need to copy the `values` array so insertions on a cloned scope\n // won't affect the original array.\n newScope._contexts.flags = {\n values: [...this._contexts.flags.values],\n };\n }\n\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n newScope._lastEventId = this._lastEventId;\n newScope._conversationId = this._conversationId;\n\n _setSpanForScope(newScope, _getSpanForScope(this));\n\n return newScope;\n }\n\n /**\n * Update the client assigned to this scope.\n * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client,\n * as well as manually created scopes.\n */\n public setClient(client: Client | undefined): void {\n this._client = client;\n }\n\n /**\n * Set the ID of the last captured error event.\n * This is generally only captured on the isolation scope.\n */\n public setLastEventId(lastEventId: string | undefined): void {\n this._lastEventId = lastEventId;\n }\n\n /**\n * Get the client assigned to this scope.\n */\n public getClient(): C | undefined {\n return this._client as C | undefined;\n }\n\n /**\n * Get the ID of the last captured error event.\n * This is generally only available on the isolation scope.\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * Add an event processor that will be called before an event is sent.\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * Set the user for this scope.\n * Set to `null` to unset the user.\n */\n public setUser(user: User | null): this {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Get the user from this scope.\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * Set the conversation ID for this scope.\n * Set to `null` to unset the conversation ID.\n */\n public setConversationId(conversationId: string | null | undefined): this {\n this._conversationId = conversationId || undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set an object that will be merged into existing tags on the scope,\n * and will be sent as tags data with the event.\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set a single tag that will be sent as tags data with the event.\n */\n public setTag(key: string, value: Primitive): this {\n return this.setTags({ [key]: value });\n }\n\n /**\n * Sets attributes onto the scope.\n *\n * These attributes are currently applied to logs and metrics.\n * In the future, they will also be applied to spans.\n *\n * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n * more complex attribute types. We'll add this support in the future but already specify the wider type to\n * avoid a breaking change in the future.\n *\n * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or\n * an object with a `value` and an optional `unit` (if applicable to your attribute).\n *\n * @example\n * ```typescript\n * scope.setAttributes({\n * is_admin: true,\n * payment_selection: 'credit_card',\n * render_duration: { value: 'render_duration', unit: 'ms' },\n * });\n * ```\n */\n public setAttributes>(newAttributes: RawAttributes): this {\n this._attributes = {\n ...this._attributes,\n ...newAttributes,\n };\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets an attribute onto the scope.\n *\n * These attributes are currently applied to logs and metrics.\n * In the future, they will also be applied to spans.\n *\n * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n * more complex attribute types. We'll add this support in the future but already specify the wider type to\n * avoid a breaking change in the future.\n *\n * @param key - The attribute key.\n * @param value - the attribute value. You can either pass in a raw value, or an attribute\n * object with a `value` and an optional `unit` (if applicable to your attribute).\n *\n * @example\n * ```typescript\n * scope.setAttribute('is_admin', true);\n * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' });\n * ```\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setAttribute extends { value: any } | { unit: any } ? AttributeObject : unknown>(\n key: string,\n value: RawAttribute,\n ): this {\n return this.setAttributes({ [key]: value });\n }\n\n /**\n * Removes the attribute with the given key from the scope.\n *\n * @param key - The attribute key.\n *\n * @example\n * ```typescript\n * scope.removeAttribute('is_admin');\n * ```\n */\n public removeAttribute(key: string): this {\n if (key in this._attributes) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n this._notifyScopeListeners();\n }\n return this;\n }\n\n /**\n * Set an object that will be merged into existing extra on the scope,\n * and will be sent as extra data with the event.\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set a single key:value extra entry that will be sent as extra data with the event.\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the fingerprint on the scope to send with the events.\n * @param {string[]} fingerprint Fingerprint to group events in Sentry.\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the level on the scope for future events.\n */\n public setLevel(level: SeverityLevel): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope so that the name of e.g. taken server route or\n * the page location is attached to future events.\n *\n * IMPORTANT: Calling this function does NOT change the name of the currently active\n * root span. If you want to change the name of the active root span, use\n * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n *\n * By default, the SDK updates the scope's transaction name automatically on sensible\n * occasions, such as a page navigation or when handling a new request on the server.\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets context data with the given name.\n * Data passed as context will be normalized. You can also pass `null` to unset the context.\n * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key.\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set the session for the scope.\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Get the session from the scope.\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * Updates the scope with provided data. Can work in three variations:\n * - plain object containing updatable attributes\n * - Scope instance that'll extract the attributes from\n * - callback function that'll receive the current scope as an argument and allow for modifications\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n const scopeInstance =\n scopeToMerge instanceof Scope\n ? scopeToMerge.getScopeData()\n : isPlainObject(scopeToMerge)\n ? (captureContext as ScopeContext)\n : undefined;\n\n const {\n tags,\n attributes,\n extra,\n user,\n contexts,\n level,\n fingerprint = [],\n propagationContext,\n conversationId,\n } = scopeInstance || {};\n\n this._tags = { ...this._tags, ...tags };\n this._attributes = { ...this._attributes, ...attributes };\n this._extra = { ...this._extra, ...extra };\n this._contexts = { ...this._contexts, ...contexts };\n\n if (user && Object.keys(user).length) {\n this._user = user;\n }\n\n if (level) {\n this._level = level;\n }\n\n if (fingerprint.length) {\n this._fingerprint = fingerprint;\n }\n\n if (propagationContext) {\n this._propagationContext = propagationContext;\n }\n\n if (conversationId) {\n this._conversationId = conversationId;\n }\n\n return this;\n }\n\n /**\n * Clears the current scope and resets its properties.\n * Note: The client will not be cleared.\n */\n public clear(): this {\n // client is not cleared here on purpose!\n this._breadcrumbs = [];\n this._tags = {};\n this._attributes = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._session = undefined;\n this._conversationId = undefined;\n _setSpanForScope(this, undefined);\n this._attachments = [];\n this.setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n });\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Adds a breadcrumb to the scope.\n * By default, the last 100 breadcrumbs are kept.\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_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 const mergedBreadcrumb: Breadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory\n message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message,\n };\n\n this._breadcrumbs.push(mergedBreadcrumb);\n if (this._breadcrumbs.length > maxCrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n this._client?.recordDroppedEvent('buffer_overflow', 'log_item');\n }\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * Get the last breadcrumb of the scope.\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * Clear all breadcrumbs from the scope.\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Add an attachment to the scope.\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * Clear all attachments from the scope.\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Get the data of this scope, which should be applied to an event during processing.\n */\n public getScopeData(): ScopeData {\n return {\n breadcrumbs: this._breadcrumbs,\n attachments: this._attachments,\n contexts: this._contexts,\n tags: this._tags,\n attributes: this._attributes,\n extra: this._extra,\n user: this._user,\n level: this._level,\n fingerprint: this._fingerprint || [],\n eventProcessors: this._eventProcessors,\n propagationContext: this._propagationContext,\n sdkProcessingMetadata: this._sdkProcessingMetadata,\n transactionName: this._transactionName,\n span: _getSpanForScope(this),\n conversationId: this._conversationId,\n };\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry.\n */\n public setSDKProcessingMetadata(newData: SdkProcessingMetadata): this {\n this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n return this;\n }\n\n /**\n * Add propagation context to the scope, used for distributed tracing\n */\n public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * Get propagation context from the scope, used for distributed tracing\n */\n public getPropagationContext(): PropagationContext {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @returns {string} The id of the captured Sentry event.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @returns {string} The id of the captured message.\n */\n public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n const eventId = hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = hint?.syntheticException ?? new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a Sentry event for this scope.\n *\n * @returns {string} The id of the captured event.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = event.event_id || hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\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","import { getGlobalSingleton } from './carrier';\nimport { Scope } from './scope';\n\n/** Get the default current scope. */\nexport function getDefaultCurrentScope(): Scope {\n return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nexport function getDefaultIsolationScope(): Scope {\n return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n","const isActualPromise = (p: unknown) =>\n p instanceof Promise && !(p as unknown as ChainedPromiseLike)[kChainedCopy];\n\ntype ChainedPromiseLike = PromiseLike & {\n [kChainedCopy]: true;\n};\nconst kChainedCopy = Symbol('chained PromiseLike');\n\n/**\n * Copy the properties from a decorated promiselike object onto its chained\n * actual promise.\n */\nexport const chainAndCopyPromiseLike = >(\n original: T,\n onSuccess: (value: V) => void,\n onError: (e: unknown) => void,\n): T => {\n const chained = original.then(\n value => {\n onSuccess(value);\n return value;\n },\n err => {\n onError(err);\n throw err;\n },\n ) as T;\n\n // if we're just dealing with \"normal\" Promise objects, return the chain\n return isActualPromise(chained) && isActualPromise(original) ? chained : copyProps(original, chained);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst copyProps = >(original: T, chained: T): T => {\n let mutated = false;\n //oxlint-disable-next-line guard-for-in\n for (const key in original) {\n if (key in chained) continue;\n mutated = true;\n const value = original[key];\n if (typeof value === 'function') {\n Object.defineProperty(chained, key, {\n value: (...args: unknown[]) => value.apply(original, args),\n enumerable: true,\n configurable: true,\n writable: true,\n });\n } else {\n (chained as Record)[key] = value;\n }\n }\n\n if (mutated) Object.assign(chained, { [kChainedCopy]: true });\n return chained;\n};\n","import type { Client } from '../client';\nimport { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes';\nimport { Scope } from '../scope';\nimport { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike';\nimport { isThenable } from '../utils/is';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport type { AsyncContextStrategy } from './types';\n\ninterface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * This is an object that holds a stack of scopes.\n */\nexport class AsyncContextStack {\n private readonly _stack: [Layer, ...Layer[]];\n private _isolationScope: Scope;\n\n public constructor(scope?: Scope, isolationScope?: Scope) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n // scope stack for domains or the process\n this._stack = [{ scope: assignedScope }];\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Fork a scope for the stack.\n */\n public withScope(callback: (scope: Scope) => T): T {\n const scope = this._pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n this._popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n return chainAndCopyPromiseLike(\n maybePromiseResult as PromiseLike> & Record,\n () => this._popScope(),\n () => this._popScope(),\n ) as T;\n }\n\n this._popScope();\n return maybePromiseResult;\n }\n\n /**\n * Get the client of the stack.\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n */\n public getScope(): Scope {\n return this.getStackTop().scope;\n }\n\n /**\n * Get the isolation scope for the stack.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1] as Layer;\n }\n\n /**\n * Push a scope to the stack.\n */\n private _pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = this.getScope().clone();\n this._stack.push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * Pop a scope from the stack.\n */\n private _popScope(): boolean {\n if (this._stack.length <= 1) return false;\n return !!this._stack.pop();\n }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack(): AsyncContextStack {\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n\n return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope(callback: (scope: Scope) => T): T {\n return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope: Scope, callback: (scope: Scope) => T): T {\n const stack = getAsyncContextStack();\n return stack.withScope(() => {\n stack.getStackTop().scope = scope;\n return callback(scope);\n });\n}\n\nfunction withIsolationScope(callback: (isolationScope: Scope) => T): T {\n return getAsyncContextStack().withScope(() => {\n return callback(getAsyncContextStack().getIsolationScope());\n });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nexport function getStackAsyncContextStrategy(): AsyncContextStrategy {\n return {\n withIsolationScope,\n withScope,\n withSetScope,\n withSetIsolationScope: (_isolationScope: Scope, callback: (isolationScope: Scope) => T) => {\n return withIsolationScope(callback);\n },\n getCurrentScope: () => getAsyncContextStack().getScope(),\n getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n };\n}\n","import type { Carrier } from './../carrier';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport { getStackAsyncContextStrategy } from './stackStrategy';\nimport type { AsyncContextStrategy } from './types';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nexport function getAsyncContextStrategy(carrier: Carrier): AsyncContextStrategy {\n const sentry = getSentryCarrier(carrier);\n\n if (sentry.acs) {\n return sentry.acs;\n }\n\n // Otherwise, use the default one (stack)\n return getStackAsyncContextStrategy();\n}\n","import { getAsyncContextStrategy } from './asyncContext';\nimport { getGlobalSingleton, getMainCarrier } from './carrier';\nimport type { Client } from './client';\nimport { Scope } from './scope';\nimport type { TraceContext } from './types-hoist/context';\nimport { generateSpanId } from './utils/propagationContext';\n\nlet _externalPropagationContextProvider: (() => { traceId: string; spanId: string } | undefined) | undefined;\n\n/**\n * Register an external propagation context provider function.\n * When registered, trace context will be read from the external source (e.g. OpenTelemetry)\n * instead of from the Sentry scope's propagation context.\n */\nexport function registerExternalPropagationContext(fn: () => { traceId: string; spanId: string } | undefined): void {\n _externalPropagationContextProvider = fn;\n}\n\n/**\n * Get the external propagation context, if a provider has been registered.\n */\nexport function getExternalPropagationContext(): { traceId: string; spanId: string } | undefined {\n return _externalPropagationContextProvider?.();\n}\n\n/**\n * Check if an external propagation context provider has been registered.\n */\nexport function hasExternalPropagationContext(): boolean {\n return _externalPropagationContextProvider !== undefined;\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current execution context.\n */\nexport function getIsolationScope(): Scope {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): Scope {\n return getGlobalSingleton('globalScope', () => new Scope());\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 */\nexport function withScope(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope(scope: Scope | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope(\n ...rest: [callback: (scope: Scope) => T] | [scope: Scope | undefined, callback: (scope: Scope) => T]\n): T {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n\n if (!scope) {\n return acs.withScope(callback);\n }\n\n return acs.withSetScope(scope, callback);\n }\n\n return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\nexport function withIsolationScope(callback: (isolationScope: Scope) => T): T;\n/**\n * Set the provided isolation scope as active in the given callback. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * If you pass in `undefined` as a scope, it will fork a new isolation scope, the same as if no scope is passed.\n */\nexport function withIsolationScope(isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T): T;\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nexport function withIsolationScope(\n ...rest:\n | [callback: (isolationScope: Scope) => T]\n | [isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T]\n): T {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [isolationScope, callback] = rest;\n\n if (!isolationScope) {\n return acs.withIsolationScope(callback);\n }\n\n return acs.withSetIsolationScope(isolationScope, callback);\n }\n\n return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient(): C | undefined {\n return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nexport function getTraceContextFromScope(scope: Scope): TraceContext {\n const externalContext = getExternalPropagationContext();\n if (externalContext) {\n return { trace_id: externalContext.traceId, span_id: externalContext.spanId };\n }\n\n const propagationContext = scope.getPropagationContext();\n\n const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n\n const traceContext: TraceContext = {\n trace_id: traceId,\n span_id: propagationSpanId || generateSpanId(),\n };\n\n if (parentSpanId) {\n traceContext.parent_span_id = parentSpanId;\n }\n\n return traceContext;\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Attributes that holds the sample rate that was locally applied to a span.\n * If this attribute is not defined, it means that the span inherited a sampling decision.\n *\n * NOTE: Is only defined on root spans.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Attribute holding the sample rate of the previous trace.\n * This is used to sample consistently across subsequent traces in the browser SDK.\n *\n * Note: Only defined on root spans, if opted into consistent sampling\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = 'sentry.previous_trace_sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * A custom span name set by users guaranteed to be taken over any automatically\n * inferred name. This attribute is removed before the span is sent.\n *\n * @internal only meant for internal SDK usage\n * @hidden\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nexport const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nexport const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nexport const SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n\n/**\n * A span link attribute to mark the link as a special span link.\n *\n * Known values:\n * - `previous_trace`: The span links to the frontend root span of the previous trace.\n * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK)\n *\n * Other values may be set as appropriate.\n * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types\n */\nexport const SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = 'sentry.link.type';\n\n/**\n * =============================================================================\n * GEN AI ATTRIBUTES\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n * =============================================================================\n */\n\n/**\n * The conversation ID for linking messages across API calls.\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n","import type { Span } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\n\nexport const SPAN_STATUS_UNSET = 0;\nexport const SPAN_STATUS_OK = 1;\nexport const SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or internal_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatus {\n if (httpStatus < 400 && httpStatus >= 100) {\n return { code: SPAN_STATUS_OK };\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n case 403:\n return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n case 404:\n return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n case 409:\n return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n case 413:\n return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n case 429:\n return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n case 499:\n return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n case 503:\n return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n case 504:\n return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n span.setAttribute('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus.message !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n","import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype ScopeWeakRef = { deref(): Scope | undefined } | Scope;\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: ScopeWeakRef;\n};\n\n/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */\nfunction wrapScopeWithWeakRef(scope: Scope): ScopeWeakRef {\n try {\n // @ts-expect-error - WeakRef is not available in all environments\n const WeakRefClass = GLOBAL_OBJ.WeakRef;\n if (typeof WeakRefClass === 'function') {\n return new WeakRefClass(scope);\n }\n } catch {\n // WeakRef not available or failed to create\n // We'll fall back to a direct scope\n }\n\n return scope;\n}\n\n/** Try to unwrap a scope from a potential WeakRef wrapper. */\nfunction unwrapScopeFromWeakRef(scopeRef: ScopeWeakRef | undefined): Scope | undefined {\n if (!scopeRef) {\n return undefined;\n }\n\n if (typeof scopeRef === 'object' && 'deref' in scopeRef && typeof scopeRef.deref === 'function') {\n try {\n return scopeRef.deref();\n } catch {\n return undefined;\n }\n }\n\n // Fallback to a direct scope\n return scopeRef as Scope;\n}\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nexport function setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, wrapScopeWithWeakRef(isolationScope));\n // We don't wrap the scope with a WeakRef here because webkit aggressively garbage collects\n // and scopes are not held in memory for long periods of time.\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n * If WeakRef was used and scopes have been garbage collected, returns undefined for those scopes.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n const spanWithScopes = span as SpanWithScopes;\n\n return {\n scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]),\n };\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { debug } from './debug-logger';\nimport { isString } from './is';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const 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 */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\n const baggageObject = parseBaggageHeader(baggageHeader);\n\n if (!baggageObject) {\n return undefined;\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce>((acc, [key, value]) => {\n if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext?: Partial,\n): string | undefined {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nexport function parseBaggageHeader(\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Record | undefined {\n if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n return undefined;\n }\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n return baggageHeader.reduce>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n Object.entries(currBaggageObject).forEach(([key, value]) => {\n acc[key] = value;\n });\n return acc;\n }, {});\n }\n\n return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record {\n return baggageHeader\n .split(',')\n .map(baggageEntry => {\n const eqIdx = baggageEntry.indexOf('=');\n if (eqIdx === -1) {\n // Likely an invalid entry\n return [];\n }\n const key = baggageEntry.slice(0, eqIdx);\n const value = baggageEntry.slice(eqIdx + 1);\n return [key, value].map(keyOrValue => {\n try {\n return decodeURIComponent(keyOrValue.trim());\n } catch {\n // We ignore errors here, e.g. if the value cannot be URL decoded.\n // This will then be skipped in the next step\n return;\n }\n });\n })\n .reduce>((acc, [key, value]) => {\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nexport function objectToBaggageHeader(object: Record): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n debug.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import type { Client } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { DsnComponents, DsnLike, DsnProtocol } from '../types-hoist/dsn';\nimport { consoleSandbox, debug } from './debug-logger';\n\n/** Regular expression used to extract org ID from a DSN host. */\nconst ORG_ID_REGEX = /^o(\\d+)\\./;\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)((?:\\[[:.%\\w]+\\]|[\\w.-]+))(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\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 */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\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 or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\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: DsnComponents): boolean {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n debug.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n debug.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Extract the org ID from a DSN host.\n *\n * @param host The host from a DSN\n * @returns The org ID if found, undefined otherwise\n */\nexport function extractOrgIdFromDsnHost(host: string): string | undefined {\n const match = host.match(ORG_ID_REGEX);\n\n return match?.[1];\n}\n\n/**\n * Returns the organization ID of the client.\n *\n * The organization ID is extracted from the DSN. If the client options include a `orgId`, this will always take precedence.\n */\nexport function extractOrgIdFromClient(client: Client): string | undefined {\n const options = client.getOptions();\n\n const { host } = client.getDsn() || {};\n\n let org_id: string | undefined;\n\n if (options.orgId) {\n org_id = String(options.orgId);\n } else if (host) {\n org_id = extractOrgIdFromDsnHost(host);\n }\n\n return org_id;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n","/**\n * Parse a sample rate from a given value.\n * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1).\n * If a string is passed, we try to convert it to a number.\n *\n * Any invalid sample rate will return `undefined`.\n */\nexport function parseSampleRate(sampleRate: unknown): number | undefined {\n if (typeof sampleRate === 'boolean') {\n return Number(sampleRate);\n }\n\n const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate;\n if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) {\n return undefined;\n }\n\n return rate;\n}\n","import type { Client } from '../client';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { PropagationContext } from '../types-hoist/tracing';\nimport type { TraceparentData } from '../types-hoist/transaction';\nimport { debug } from '../utils/debug-logger';\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { extractOrgIdFromClient } from './dsn';\nimport { parseSampleRate } from './parseSampleRate';\nimport { generateSpanId, generateTraceId } from './propagationContext';\nimport { safeMathRandom } from './randomSafeContext';\n\n// oxlint-disable-next-line sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const 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 * This is terrible naming but the function has nothing to do with the W3C traceparent header.\n * It can only parse the `sentry-trace` header and extract the \"trace parent\" data.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create a propagation context from incoming headers or\n * creates a minimal new one if the headers are undefined.\n */\nexport function propagationContextFromHeaders(\n sentryTrace: string | undefined,\n baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n if (!traceparentData?.traceId) {\n return {\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n };\n }\n\n const sampleRand = getSampleRandFromTraceparentAndDsc(traceparentData, dynamicSamplingContext);\n\n // The sample_rand on the DSC needs to be generated based on traceparent + baggage.\n if (dynamicSamplingContext) {\n dynamicSamplingContext.sample_rand = sampleRand.toString();\n }\n\n const { traceId, parentSpanId, parentSampled } = traceparentData;\n\n return {\n traceId,\n parentSpanId,\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n sampleRand,\n };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nexport function generateSentryTraceHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\n/**\n * Creates a W3C traceparent header from the given trace and span ids.\n */\nexport function generateTraceparentHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\n return `00-${traceId}-${spanId}-${sampled ? '01' : '00'}`;\n}\n\n/**\n * Given any combination of an incoming trace, generate a sample rand based on its defined semantics.\n *\n * Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n */\nfunction getSampleRandFromTraceparentAndDsc(\n traceparentData: TraceparentData | undefined,\n dsc: Partial | undefined,\n): number {\n // When there is an incoming sample rand use it.\n const parsedSampleRand = parseSampleRate(dsc?.sample_rand);\n if (parsedSampleRand !== undefined) {\n return parsedSampleRand;\n }\n\n // Otherwise, if there is an incoming sampling decision + sample rate, generate a sample rand that would lead to the same sampling decision.\n const parsedSampleRate = parseSampleRate(dsc?.sample_rate);\n if (parsedSampleRate && traceparentData?.parentSampled !== undefined) {\n return traceparentData.parentSampled\n ? // Returns a sample rand with positive sampling decision [0, sampleRate)\n safeMathRandom() * parsedSampleRate\n : // Returns a sample rand with negative sampling decision [sampleRate, 1)\n parsedSampleRate + safeMathRandom() * (1 - parsedSampleRate);\n } else {\n // If nothing applies, return a random sample rand.\n return safeMathRandom();\n }\n}\n\n/**\n * Determines whether a new trace should be continued based on the provided baggage org ID and the client's `strictTraceContinuation` option.\n * If the trace should not be continued, a new trace will be started.\n *\n * The result is dependent on the `strictTraceContinuation` option in the client.\n * See https://develop.sentry.dev/sdk/telemetry/traces/#stricttracecontinuation\n */\nexport function shouldContinueTrace(client: Client, baggageOrgId?: string): boolean {\n const clientOrgId = extractOrgIdFromClient(client);\n\n // Case: baggage orgID and Client orgID don't match - always start new trace\n if (baggageOrgId && clientOrgId && baggageOrgId !== clientOrgId) {\n debug.log(\n `Won't continue trace because org IDs don't match (incoming baggage: ${baggageOrgId}, SDK options: ${clientOrgId})`,\n );\n return false;\n }\n\n const strictTraceContinuation = client.getOptions().strictTraceContinuation || false; // default for `strictTraceContinuation` is `false`\n\n if (strictTraceContinuation) {\n // With strict continuation enabled, don't continue trace if:\n // - Baggage has orgID, but Client doesn't have one\n // - Client has orgID, but baggage doesn't have one\n if ((baggageOrgId && !clientOrgId) || (!baggageOrgId && clientOrgId)) {\n debug.log(\n `Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${baggageOrgId}, Sentry client: ${clientOrgId})`,\n );\n return false;\n }\n }\n\n return true;\n}\n","import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport { getCurrentScope } from '../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SentrySpan } from '../tracing/sentrySpan';\nimport { SPAN_STATUS_OK, SPAN_STATUS_UNSET } from '../tracing/spanstatus';\nimport { getCapturedScopesOnSpan } from '../tracing/utils';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { SpanLink, SpanLinkJSON } from '../types-hoist/link';\nimport type { Span, SpanAttributes, SpanJSON, SpanOrigin, SpanTimeInput } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { generateSpanId } from '../utils/propagationContext';\nimport { timestampInSeconds } from '../utils/time';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from '../utils/tracing';\nimport { consoleSandbox } from './debug-logger';\nimport { _getSpanForScope } from './spanOnScope';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\nlet hasShownSpanDropWarning = false;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nexport function spanToTransactionTraceContext(span: Span): TraceContext {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, origin, links } = spanToJSON(span);\n\n return {\n parent_span_id,\n span_id,\n trace_id,\n data,\n op,\n status,\n origin,\n links,\n };\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n\n // If the span is remote, we use a random/virtual span as span_id to the trace context,\n // and the remote span as parent_span_id\n const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n const scope = getCapturedScopesOnSpan(span).scope;\n\n const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId;\n\n return {\n parent_span_id,\n span_id,\n trace_id,\n };\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a Span to a W3C traceparent header.\n */\nexport function spanToTraceparentHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateTraceparentHeader(traceId, spanId, sampled);\n}\n\n/**\n * Converts the span links array to a flattened version to be sent within an envelope.\n *\n * If the links array is empty, it returns `undefined` so the empty value can be dropped before it's sent.\n */\nexport function convertSpanLinksForEnvelope(links?: SpanLink[]): SpanLinkJSON[] | undefined {\n if (links && links.length > 0) {\n return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({\n span_id: spanId,\n trace_id: traceId,\n sampled: traceFlags === TRACE_FLAG_SAMPLED,\n attributes,\n ...restContext,\n }));\n } else {\n return undefined;\n }\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nexport function spanToJSON(span: Span): SpanJSON {\n if (spanIsSentrySpan(span)) {\n return span.getSpanJSON();\n }\n\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n const { attributes, startTime, name, endTime, status, links } = span;\n\n // In preparation for the next major of OpenTelemetry, we want to support\n // looking up the parent span id according to the new API\n // In OTel v1, the parent span id is accessed as `parentSpanId`\n // In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n const parentSpanId =\n 'parentSpanId' in span\n ? span.parentSpanId\n : 'parentSpanContext' in span\n ? (span.parentSpanContext as { spanId?: string } | undefined)?.spanId\n : undefined;\n\n return {\n span_id,\n trace_id,\n data: attributes,\n description: name,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status),\n op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n links: convertSpanLinksForEnvelope(links),\n };\n }\n\n // Finally, at least we have `spanContext()`....\n // This should not actually happen in reality, but we need to handle it for type safety.\n return {\n span_id,\n trace_id,\n start_timestamp: 0,\n data: {},\n };\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span: Span): span is OpenTelemetrySdkTraceBaseSpan {\n const castSpan = span as Partial;\n return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\nexport interface OpenTelemetrySdkTraceBaseSpan extends Span {\n attributes: SpanAttributes;\n startTime: SpanTimeInput;\n name: string;\n status: SpanStatus;\n endTime: SpanTimeInput;\n parentSpanId?: string;\n links?: SpanLink[];\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span: Span): span is SentrySpan {\n return typeof (span as SentrySpan).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nexport function getStatusMessage(status: SpanStatus | undefined): string | undefined {\n if (!status || status.code === SPAN_STATUS_UNSET) {\n return undefined;\n }\n\n if (status.code === SPAN_STATUS_OK) {\n return 'ok';\n }\n\n return status.message || 'internal_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\ntype SpanWithPotentialChildren = Span & {\n [CHILD_SPANS_FIELD]?: Set;\n [ROOT_SPAN_FIELD]?: Span;\n};\n\n/**\n * Adds an opaque child span reference to a span.\n */\nexport function addChildSpanToSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\n // We store the root span reference on the child span\n // We need this for `getRootSpan()` to work\n const rootSpan = span[ROOT_SPAN_FIELD] || span;\n addNonEnumerableProperty(childSpan as SpanWithPotentialChildren, ROOT_SPAN_FIELD, rootSpan);\n\n // We store a list of child spans on the parent span\n // We need this for `getSpanDescendants()` to work\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].add(childSpan);\n } else {\n addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n }\n}\n\n/** This is only used internally by Idle Spans. */\nexport function removeChildSpanFromSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].delete(childSpan);\n }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nexport function getSpanDescendants(span: SpanWithPotentialChildren): Span[] {\n const resultSet = new Set();\n\n function addSpanChildren(span: SpanWithPotentialChildren): void {\n // This exit condition is required to not infinitely loop in case of a circular dependency.\n if (resultSet.has(span)) {\n return;\n // We want to ignore unsampled spans (e.g. non recording spans)\n } else if (spanIsSampled(span)) {\n resultSet.add(span);\n const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n for (const childSpan of childSpans) {\n addSpanChildren(childSpan);\n }\n }\n }\n\n addSpanChildren(span);\n\n return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nexport function getRootSpan(span: SpanWithPotentialChildren): Span {\n return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getActiveSpan) {\n return acs.getActiveSpan();\n }\n\n return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Logs a warning once if `beforeSendSpan` is used to drop spans.\n */\nexport function showSpanDropWarning(): void {\n if (!hasShownSpanDropWarning) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.',\n );\n });\n hasShownSpanDropWarning = true;\n }\n}\n\n/**\n * Updates the name of the given span and ensures that the span name is not\n * overwritten by the Sentry SDK.\n *\n * Use this function instead of `span.updateName()` if you want to make sure that\n * your name is kept. For some spans, for example root `http.server` spans the\n * Sentry SDK would otherwise overwrite the span name with a high-quality name\n * it infers when the span ends.\n *\n * Use this function in server code or when your span is started on the server\n * and on the client (browser). If you only update a span name on the client,\n * you can also use `span.updateName()` the SDK does not overwrite the name.\n *\n * @param span - The span to update the name of.\n * @param name - The name to set on the span.\n */\nexport function updateSpanName(span: Span, name: string): void {\n span.updateName(name);\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n });\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { addGlobalErrorInstrumentationHandler } from '../instrument/globalError';\nimport { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\n\nlet errorsInstrumented = false;\n\n/** Only exposed for testing */\nexport function _resetErrorsInstrumented(): void {\n errorsInstrumented = false;\n}\n\n/**\n * Ensure that global errors automatically set the active span status.\n */\nexport function registerSpanErrorInstrumentation(): void {\n if (errorsInstrumented) {\n return;\n }\n\n /**\n * If an error or unhandled promise occurs, we mark the active root span as failed\n */\n function errorCallback(): void {\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n if (rootSpan) {\n const message = 'internal_error';\n DEBUG_BUILD && debug.log(`[Tracing] Root span: ${message} -> Global error occurred`);\n rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message });\n }\n }\n\n // The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n // node.js default exit behaviour\n errorCallback.tag = 'sentry_tracingErrorCallback';\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n","import { getClient } from '../currentScopes';\nimport type { CoreOptions } from '../types-hoist/options';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if span recording is currently enabled.\n *\n * Spans are recorded when at least one of `tracesSampleRate` and `tracesSampler`\n * is defined in the SDK config. This function does not make any assumption about\n * sampling decisions, it only checks if the SDK is configured to record spans.\n *\n * Important: This function only determines if span recording is enabled. Trace\n * continuation and propagation is separately controlled and not covered by this function.\n * If this function returns `false`, traces can still be propagated (which is what\n * we refer to by \"Tracing without Performance\")\n * @see https://develop.sentry.dev/sdk/telemetry/traces/tracing-without-performance/\n *\n * @param maybeOptions An SDK options object to be passed to this function.\n * If this option is not provided, the function will use the current client's options.\n */\nexport function hasSpansEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const options = maybeOptions || getClient()?.getOptions();\n return (\n !!options &&\n // Note: This check is `!= null`, meaning \"nullish\". `0` is not \"nullish\", `undefined` and `null` are. (This comment was brought to you by 15 minutes of questioning life)\n (options.tracesSampleRate != null || !!options.tracesSampler)\n );\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { debug } from './debug-logger';\nimport { isMatchingPattern } from './string';\n\nfunction logIgnoredSpan(droppedSpan: Pick): void {\n debug.log(`Ignoring span ${droppedSpan.op} - ${droppedSpan.description} because it matches \\`ignoreSpans\\`.`);\n}\n\n/**\n * Check if a span should be ignored based on the ignoreSpans configuration.\n */\nexport function shouldIgnoreSpan(\n span: Pick,\n ignoreSpans: Required['ignoreSpans'],\n): boolean {\n if (!ignoreSpans?.length || !span.description) {\n return false;\n }\n\n for (const pattern of ignoreSpans) {\n if (isStringOrRegExp(pattern)) {\n if (isMatchingPattern(span.description, pattern)) {\n DEBUG_BUILD && logIgnoredSpan(span);\n return true;\n }\n continue;\n }\n\n if (!pattern.name && !pattern.op) {\n continue;\n }\n\n const nameMatches = pattern.name ? isMatchingPattern(span.description, pattern.name) : true;\n const opMatches = pattern.op ? span.op && isMatchingPattern(span.op, pattern.op) : true;\n\n // This check here is only correct because we can guarantee that we ran `isMatchingPattern`\n // for at least one of `nameMatches` and `opMatches`. So in contrary to how this looks,\n // not both op and name actually have to match. This is the most efficient way to check\n // for all combinations of name and op patterns.\n if (nameMatches && opMatches) {\n DEBUG_BUILD && logIgnoredSpan(span);\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Takes a list of spans, and a span that was dropped, and re-parents the child spans of the dropped span to the parent of the dropped span, if possible.\n * This mutates the spans array in place!\n */\nexport function reparentChildSpans(spans: SpanJSON[], dropSpan: SpanJSON): void {\n const droppedSpanParentId = dropSpan.parent_span_id;\n const droppedSpanId = dropSpan.span_id;\n\n // This should generally not happen, as we do not apply this on root spans\n // but to be safe, we just bail in this case\n if (!droppedSpanParentId) {\n return;\n }\n\n for (const span of spans) {\n if (span.parent_span_id === droppedSpanId) {\n span.parent_span_id = droppedSpanParentId;\n }\n }\n}\n\nfunction isStringOrRegExp(value: unknown): value is string | RegExp {\n return typeof value === 'string' || value instanceof RegExp;\n}\n","export const DEFAULT_ENVIRONMENT = 'production';\nexport const DEV_ENVIRONMENT = 'development';\n","import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage';\nimport { extractOrgIdFromClient } from '../utils/dsn';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\nimport { getCapturedScopesOnSpan } from './utils';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\ntype SpanWithMaybeDsc = Span & {\n [FROZEN_DSC_FIELD]?: Partial | undefined;\n};\n\n/**\n * Freeze the given DSC on the given span.\n */\nexport function freezeDscOnSpan(span: Span, dsc: Partial): void {\n const spanWithMaybeDsc = span as SpanWithMaybeDsc;\n addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(trace_id: string, client: Client): DynamicSamplingContext {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n\n // Instead of conditionally adding non-undefined values, we add them and then remove them if needed\n // otherwise, the order of baggage entries changes, which \"breaks\" a bunch of tests etc.\n const dsc: DynamicSamplingContext = {\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n public_key,\n trace_id,\n org_id: extractOrgIdFromClient(client),\n };\n\n client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * Get the dynamic sampling context for the currently active scopes.\n */\nexport function getDynamicSamplingContextFromScope(client: Client, scope: Scope): Partial {\n const propagationContext = scope.getPropagationContext();\n return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly> {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n const rootSpan = getRootSpan(span);\n const rootSpanJson = spanToJSON(rootSpan);\n const rootSpanAttributes = rootSpanJson.data;\n const traceState = rootSpan.spanContext().traceState;\n\n // The span sample rate that was locally applied to the root span should also always be applied to the DSC, even if the DSC is frozen.\n // This is so that the downstream traces/services can use parentSampleRate in their `tracesSampler` to make consistent sampling decisions across the entire trace.\n const rootSpanSampleRate =\n traceState?.get('sentry.sample_rate') ??\n rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ??\n rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE];\n\n function applyLocalSampleRateToDsc(dsc: Partial): Partial {\n if (typeof rootSpanSampleRate === 'number' || typeof rootSpanSampleRate === 'string') {\n dsc.sample_rate = `${rootSpanSampleRate}`;\n }\n return dsc;\n }\n\n // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n const frozenDsc = (rootSpan as SpanWithMaybeDsc)[FROZEN_DSC_FIELD];\n if (frozenDsc) {\n return applyLocalSampleRateToDsc(frozenDsc);\n }\n\n // For OpenTelemetry, we freeze the DSC on the trace state\n const traceStateDsc = traceState?.get('sentry.dsc');\n\n // If the span has a DSC, we want it to take precedence\n const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n if (dscOnTraceState) {\n return applyLocalSampleRateToDsc(dscOnTraceState);\n }\n\n // Else, we generate it from the span\n const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n const name = rootSpanJson.description;\n if (source !== 'url' && name) {\n dsc.transaction = name;\n }\n\n // How can we even land here with hasSpansEnabled() returning false?\n // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n // So we end up with an active span that is not sampled (neither positively nor negatively)\n if (hasSpansEnabled()) {\n dsc.sampled = String(spanIsSampled(rootSpan));\n dsc.sample_rand =\n // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans\n // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span\n traceState?.get('sentry.sample_rand') ??\n // On all other platforms we can actually get the scopes from a root span (we use this as a fallback)\n getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString();\n }\n\n applyLocalSampleRateToDsc(dsc);\n\n client.emit('createDsc', dsc, rootSpan);\n\n return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nexport function spanToBaggageHeader(span: Span): string | undefined {\n const dsc = getDynamicSamplingContextFromSpan(span);\n return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n","import type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils';\n\n/**\n * A Sentry Span that is non-recording, meaning it will not be sent to Sentry.\n */\nexport class SentryNonRecordingSpan implements Span {\n private _traceId: string;\n private _spanId: string;\n\n public constructor(spanContext: SentrySpanArguments = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n return {\n spanId: this._spanId,\n traceId: this._traceId,\n traceFlags: TRACE_FLAG_NONE,\n };\n }\n\n /** @inheritdoc */\n public end(_timestamp?: SpanTimeInput): void {}\n\n /** @inheritdoc */\n public setAttribute(_key: string, _value: SpanAttributeValue | undefined): this {\n return this;\n }\n\n /** @inheritdoc */\n public setAttributes(_values: SpanAttributes): this {\n return this;\n }\n\n /** @inheritdoc */\n public setStatus(_status: SpanStatus): this {\n return this;\n }\n\n /** @inheritdoc */\n public updateName(_name: string): this {\n return this;\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return false;\n }\n\n /** @inheritdoc */\n public addEvent(\n _name: string,\n _attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n _startTime?: SpanTimeInput,\n ): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLink(_link: unknown): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(_links: unknown[]): this {\n return this;\n }\n\n /**\n * This should generally not be used,\n * but we need it for being compliant with the OTEL Span interface.\n *\n * @hidden\n * @internal\n */\n public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n}\n","import type { Primitive } from '../types-hoist/misc';\nimport { isSyntheticEvent, isVueViewModel } from './is';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName, getVueInternalName } from './stacktrace';\n\ntype Prototype = { constructor?: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\ntype MemoFunc = [\n // memoize\n (obj: object) => boolean,\n // unmemoize\n (obj: object) => void,\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 normalized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\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 */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\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: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n ['boolean', 'string'].includes(typeof value) ||\n (typeof value === 'number' && Number.isFinite(value))\n ) {\n return value as Primitive;\n }\n\n const 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 as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value as ObjOrArray)['__sentry_override_normalization_depth__'] === 'number'\n ? ((value as ObjOrArray)['__sentry_override_normalization_depth__'] as number)\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 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 const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch {\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 const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\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 const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const 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 const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\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/* eslint-disable complexity */\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: unknown,\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: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._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 // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return getVueInternalName(value);\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n return `[${value}]`;\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 const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n return prototype?.constructor ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // oxlint-disable-next-line sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder(): MemoFunc {\n const inner = new WeakSet();\n function memoize(obj: object): boolean {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n\n function unmemoize(obj: object): void {\n inner.delete(obj);\n }\n return [memoize, unmemoize];\n}\n","import { getSentryCarrier } from '../carrier';\nimport type { Attachment } from '../types-hoist/attachment';\nimport type { DataCategory } from '../types-hoist/datacategory';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport type {\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n Envelope,\n EnvelopeItemType,\n EventEnvelopeHeaders,\n SpanItem,\n} from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { SdkInfo } from '../types-hoist/sdkinfo';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { GLOBAL_OBJ } from './worldwide';\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 */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\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 */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as unknown as E;\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 *\n * If the callback returns true, the rest of the items will be skipped.\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input: string): Uint8Array {\n const carrier = getSentryCarrier(GLOBAL_OBJ);\n return carrier.encodePolyfill ? carrier.encodePolyfill(input) : new TextEncoder().encode(input);\n}\n\n/**\n * Decode a UTF8 array to string.\n */\nfunction decodeUTF8(input: Uint8Array): string {\n const carrier = getSentryCarrier(GLOBAL_OBJ);\n return carrier.decodePolyfill ? carrier.decodePolyfill(input) : new TextDecoder().decode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope): string | Uint8Array {\n const [envHeaders, items] = envelope;\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Parses an envelope\n */\nexport function parseEnvelope(env: string | Uint8Array): Envelope {\n let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n function readBinary(length: number): Uint8Array {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson(): T {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(decodeUTF8(readBinary(i))) as T;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates envelope item for a single span\n */\nexport function createSpanEnvelopeItem(spanJson: Partial): SpanItem {\n const spanHeaders: SpanItem[0] = {\n type: 'span',\n };\n\n return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(attachment: Attachment): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data;\n\n return [\n {\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\ntype OverriddenItemType = Exclude;\n\n// Map of envelope item types to data categories where the category differs from the type.\n// Types that map to themselves (session, attachment, transaction, profile, feedback, span, metric) fall through.\nconst DATA_CATEGORY_OVERRIDES: Record = {\n sessions: 'session',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile_chunk: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n raw_security: 'security',\n log: 'log_item',\n trace_metric: 'metric',\n};\n\nfunction _isOverriddenType(type: EnvelopeItemType): type is OverriddenItemType {\n return type in DATA_CATEGORY_OVERRIDES;\n}\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return _isOverriddenType(type) ? DATA_CATEGORY_OVERRIDES[type] : type;\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\n if (!metadataOrEvent?.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n return {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dynamicSamplingContext,\n }),\n };\n}\n","import type { Client } from './client';\nimport { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext';\nimport type { SentrySpan } from './tracing/sentrySpan';\nimport type { LegacyCSPReport } from './types-hoist/csp';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type {\n DynamicSamplingContext,\n EventEnvelope,\n EventItem,\n RawSecurityEnvelope,\n RawSecurityItem,\n SessionEnvelope,\n SessionItem,\n SpanEnvelope,\n SpanItem,\n} from './types-hoist/envelope';\nimport type { Event } from './types-hoist/event';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport { dsnToString } from './utils/dsn';\nimport {\n createEnvelope,\n createEventEnvelopeHeaders,\n createSpanEnvelopeItem,\n getSdkMetadataForEnvelopeHeader,\n} from './utils/envelope';\nimport { uuid4 } from './utils/misc';\nimport { shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning, spanToJSON } from './utils/spanUtils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n *\n * @internal, exported only for testing\n **/\nexport function _enhanceEventWithSdkInfo(event: Event, newSdkInfo?: SdkInfo): Event {\n if (!newSdkInfo) {\n return event;\n }\n\n const eventSdkInfo = event.sdk || {};\n\n event.sdk = {\n ...eventSdkInfo,\n name: eventSdkInfo.name || newSdkInfo.name,\n version: eventSdkInfo.version || newSdkInfo.version,\n integrations: [...(event.sdk?.integrations || []), ...(newSdkInfo.integrations || [])],\n packages: [...(event.sdk?.packages || []), ...(newSdkInfo.packages || [])],\n settings:\n event.sdk?.settings || newSdkInfo.settings\n ? {\n ...event.sdk?.settings,\n ...newSdkInfo.settings,\n }\n : undefined,\n };\n\n return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): SessionEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem: SessionItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n event: Event,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): EventEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n /*\n Note: Due to TS, event.type may be `replay_event`, theoretically.\n In practice, we never call `createEventEnvelope` with `replay_event` type,\n and we'd have to adjust a looot of types to make this work properly.\n We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n So the safe choice is to really guard against the replay_event type here.\n */\n const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n _enhanceEventWithSdkInfo(event, metadata?.sdk);\n\n const 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 const eventItem: EventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/**\n * Create envelope from Span item.\n *\n * Takes an optional client and runs spans through `beforeSendSpan` if available.\n */\nexport function createSpanEnvelope(spans: [SentrySpan, ...SentrySpan[]], client?: Client): SpanEnvelope {\n function dscHasRequiredProps(dsc: Partial): dsc is DynamicSamplingContext {\n return !!dsc.trace_id && !!dsc.public_key;\n }\n\n // For the moment we'll obtain the DSC from the first span in the array\n // This might need to be changed if we permit sending multiple spans from\n // different segments in one envelope\n const dsc = getDynamicSamplingContextFromSpan(spans[0]);\n\n const dsn = client?.getDsn();\n const tunnel = client?.getOptions().tunnel;\n\n const headers: SpanEnvelope[0] = {\n sent_at: new Date().toISOString(),\n ...(dscHasRequiredProps(dsc) && { trace: dsc }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const { beforeSendSpan, ignoreSpans } = client?.getOptions() || {};\n\n const filteredSpans = ignoreSpans?.length\n ? spans.filter(span => !shouldIgnoreSpan(spanToJSON(span), ignoreSpans))\n : spans;\n const droppedSpans = spans.length - filteredSpans.length;\n\n if (droppedSpans) {\n client?.recordDroppedEvent('before_send', 'span', droppedSpans);\n }\n\n const convertToSpanJSON = beforeSendSpan\n ? (span: SentrySpan) => {\n const spanJson = spanToJSON(span);\n const processedSpan = beforeSendSpan(spanJson);\n\n if (!processedSpan) {\n showSpanDropWarning();\n return spanJson;\n }\n\n return processedSpan;\n }\n : spanToJSON;\n\n const items: SpanItem[] = [];\n for (const span of filteredSpans) {\n const spanJson = convertToSpanJSON(span);\n if (spanJson) {\n items.push(createSpanEnvelopeItem(spanJson));\n }\n }\n\n return createEnvelope(headers, items);\n}\n\n/**\n * Create an Envelope from a CSP report.\n */\nexport function createRawSecurityEnvelope(\n report: LegacyCSPReport,\n dsn: DsnComponents,\n tunnel?: string,\n release?: string,\n environment?: string,\n): RawSecurityEnvelope {\n const envelopeHeaders = {\n event_id: uuid4(),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const eventItem: RawSecurityItem = [\n { type: 'raw_security', sentry_release: release, sentry_environment: environment },\n report,\n ];\n\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { Span } from '../types-hoist/span';\nimport { debug } from '../utils/debug-logger';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Print a log message for a started span.\n */\nexport function logSpanStart(span: Span): void {\n if (!DEBUG_BUILD) return;\n\n const { description = '< unknown name >', op = '< unknown op >', parent_span_id: parentSpanId } = spanToJSON(span);\n const { spanId } = span.spanContext();\n\n const sampled = spanIsSampled(span);\n const rootSpan = getRootSpan(span);\n const isRootSpan = rootSpan === span;\n\n const header = `[Tracing] Starting ${sampled ? 'sampled' : 'unsampled'} ${isRootSpan ? 'root ' : ''}span`;\n\n const infoParts: string[] = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`];\n\n if (parentSpanId) {\n infoParts.push(`parent ID: ${parentSpanId}`);\n }\n\n if (!isRootSpan) {\n const { op, description } = spanToJSON(rootSpan);\n infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`);\n if (op) {\n infoParts.push(`root op: ${op}`);\n }\n if (description) {\n infoParts.push(`root description: ${description}`);\n }\n }\n\n debug.log(`${header}\n ${infoParts.join('\\n ')}`);\n}\n\n/**\n * Print a log message for an ended span.\n */\nexport function logSpanEnd(span: Span): void {\n if (!DEBUG_BUILD) return;\n\n const { description = '< unknown name >', op = '< unknown op >' } = spanToJSON(span);\n const { spanId } = span.spanContext();\n const rootSpan = getRootSpan(span);\n const isRootSpan = rootSpan === span;\n\n const msg = `[Tracing] Finishing \"${op}\" ${isRootSpan ? 'root ' : ''}span \"${description}\" with ID ${spanId}`;\n debug.log(msg);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT,\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE,\n} from '../semanticAttributes';\nimport type { Measurements, MeasurementUnit } from '../types-hoist/measurement';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\n\n/**\n * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span\n * as the 4th parameter.\n */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit, activeSpan = getActiveSpan()): void {\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n\n if (rootSpan) {\n DEBUG_BUILD && debug.log(`[Measurement] Setting measurement on root span: ${name} = ${value} ${unit}`);\n rootSpan.addEvent(name, {\n [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value,\n [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit as string,\n });\n }\n}\n\n/**\n * Convert timed events to measurements.\n */\nexport function timedEventsToMeasurements(events: TimedEvent[]): Measurements | undefined {\n if (!events || events.length === 0) {\n return undefined;\n }\n\n const measurements: Measurements = {};\n events.forEach(event => {\n const attributes = event.attributes || {};\n const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] as MeasurementUnit | undefined;\n const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] as number | undefined;\n\n if (typeof unit === 'string' && typeof value === 'number') {\n measurements[event.name] = { value, unit };\n }\n });\n\n return measurements;\n}\n","import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { createSpanEnvelope } from '../envelope';\nimport {\n SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME,\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SpanEnvelope } from '../types-hoist/envelope';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanLink } from '../types-hoist/link';\nimport type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport {\n convertSpanLinksForEnvelope,\n getRootSpan,\n getSpanDescendants,\n getStatusMessage,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTransactionTraceContext,\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanEnd } from './logSpans';\nimport { timedEventsToMeasurements } from './measurement';\nimport { getCapturedScopesOnSpan } from './utils';\n\nconst MAX_SPAN_COUNT = 1000;\n\n/**\n * Span contains all data about a span\n */\nexport class SentrySpan implements Span {\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n protected _links?: SpanLink[];\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatus;\n /** The timed events added to this span. */\n protected _events: TimedEvent[];\n\n /** if true, treat span as a standalone span (not part of a transaction) */\n private _isStandaloneSpan?: boolean;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startSpan()`\n * or other span methods.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext: SentrySpanArguments = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n this._links = spanContext.links;\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n this._name = spanContext.name;\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.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n\n this._events = [];\n\n this._isStandaloneSpan = spanContext.isStandalone;\n\n // If the span is already ended, ensure we finalize the span immediately\n if (this._endTime) {\n this._onSpanEnded();\n }\n }\n\n /** @inheritDoc */\n public addLink(link: SpanLink): this {\n if (this._links) {\n this._links.push(link);\n } else {\n this._links = [link];\n }\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(links: SpanLink[]): this {\n if (this._links) {\n this._links.push(...links);\n } else {\n this._links = links;\n }\n return this;\n }\n\n /**\n * This should generally not be used,\n * but it is needed for being compliant with the OTEL Span interface.\n *\n * @hidden\n * @internal\n */\n public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /** @inheritdoc */\n public setAttribute(key: string, value: SpanAttributeValue | undefined): this {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n\n return this;\n }\n\n /** @inheritdoc */\n public setAttributes(attributes: SpanAttributes): this {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n return this;\n }\n\n /**\n * This should generally not be used,\n * but we need it for browser tracing where we want to adjust the start time afterwards.\n * USE THIS WITH CAUTION!\n *\n * @hidden\n * @internal\n */\n public updateStartTime(timeInput: SpanTimeInput): void {\n this._startTime = spanTimeInputToSeconds(timeInput);\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatus): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom');\n return this;\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n logSpanEnd(this);\n\n this._onSpanEnded();\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n public getSpanJSON(): SpanJSON {\n return {\n data: this._attributes,\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: getStatusMessage(this._status),\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n measurements: timedEventsToMeasurements(this._events),\n is_segment: (this._isStandaloneSpan && getRootSpan(this) === this) || undefined,\n segment_id: this._isStandaloneSpan ? getRootSpan(this).spanContext().spanId : undefined,\n links: convertSpanLinksForEnvelope(this._links),\n };\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * @inheritdoc\n */\n public addEvent(\n name: string,\n attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n startTime?: SpanTimeInput,\n ): this {\n DEBUG_BUILD && debug.log('[Tracing] Adding an event to span:', name);\n\n const time = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || timestampInSeconds();\n const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {};\n\n const event: TimedEvent = {\n name,\n time: spanTimeInputToSeconds(time),\n attributes,\n };\n\n this._events.push(event);\n\n return this;\n }\n\n /**\n * This method should generally not be used,\n * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set.\n * USE THIS WITH CAUTION!\n * @internal\n * @hidden\n * @experimental\n */\n public isStandaloneSpan(): boolean {\n return !!this._isStandaloneSpan;\n }\n\n /** Emit `spanEnd` when the span is ended. */\n private _onSpanEnded(): void {\n const client = getClient();\n if (client) {\n client.emit('spanEnd', this);\n }\n\n // A segment span is basically the root span of a local span tree.\n // So for now, this is either what we previously refer to as the root span,\n // or a standalone span.\n const isSegmentSpan = this._isStandaloneSpan || this === getRootSpan(this);\n\n if (!isSegmentSpan) {\n return;\n }\n\n // if this is a standalone span, we send it immediately\n if (this._isStandaloneSpan) {\n if (this._sampled) {\n sendSpanEnvelope(createSpanEnvelope([this], client));\n } else {\n DEBUG_BUILD &&\n debug.log('[Tracing] Discarding standalone span because its trace was not chosen to be sampled.');\n if (client) {\n client.recordDroppedEvent('sample_rate', 'span');\n }\n }\n return;\n }\n\n const transactionEvent = this._convertSpanToTransaction();\n if (transactionEvent) {\n const scope = getCapturedScopesOnSpan(this).scope || getCurrentScope();\n scope.captureEvent(transactionEvent);\n }\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n private _convertSpanToTransaction(): TransactionEvent | undefined {\n // We can only convert finished spans\n if (!isFullFinishedSpan(spanToJSON(this))) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && debug.warn('Transaction has no name, falling back to ``.');\n this._name = '';\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n const normalizedRequest = capturedSpanScope?.getScopeData().sdkProcessingMetadata?.normalizedRequest;\n\n if (this._sampled !== true) {\n return undefined;\n }\n\n // The transaction span itself as well as any potential standalone spans should be filtered out\n const finishedSpans = getSpanDescendants(this).filter(span => span !== this && !isStandaloneSpan(span));\n\n const spans = finishedSpans.map(span => spanToJSON(span)).filter(isFullFinishedSpan);\n\n const source = this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n // remove internal root span attributes we don't need to send.\n /* eslint-disable @typescript-eslint/no-dynamic-delete */\n delete this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n spans.forEach(span => {\n delete span.data[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n });\n // eslint-enabled-next-line @typescript-eslint/no-dynamic-delete\n\n const transaction: TransactionEvent = {\n contexts: {\n trace: spanToTransactionTraceContext(this),\n },\n spans:\n // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here\n // we do not use spans anymore after this point\n spans.length > MAX_SPAN_COUNT\n ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n : spans,\n start_timestamp: this._startTime,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n capturedSpanScope,\n capturedSpanIsolationScope,\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n },\n request: normalizedRequest,\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const measurements = timedEventsToMeasurements(this._events);\n const hasMeasurements = measurements && Object.keys(measurements).length;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\n debug.log(\n '[Measurements] Adding measurements to transaction event',\n JSON.stringify(measurements, undefined, 2),\n );\n transaction.measurements = measurements;\n }\n\n return transaction;\n }\n}\n\nfunction isSpanTimeInput(value: undefined | SpanAttributes | SpanTimeInput): value is SpanTimeInput {\n return (value && typeof value === 'number') || value instanceof Date || Array.isArray(value);\n}\n\n// We want to filter out any incomplete SpanJSON objects\nfunction isFullFinishedSpan(input: Partial): input is SpanJSON {\n return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id;\n}\n\n/** `SentrySpan`s can be sent as a standalone span rather than belonging to a transaction */\nfunction isStandaloneSpan(span: Span): boolean {\n return span instanceof SentrySpan && span.isStandaloneSpan();\n}\n\n/**\n * Sends a `SpanEnvelope`.\n *\n * Note: If the envelope's spans are dropped, e.g. via `beforeSendSpan`,\n * the envelope will not be sent either.\n */\nfunction sendSpanEnvelope(envelope: SpanEnvelope): void {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const spanItems = envelope[1];\n if (!spanItems || spanItems.length === 0) {\n client.recordDroppedEvent('before_send', 'span');\n return;\n }\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n","import { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike';\nimport { isThenable } from '../utils/is';\n\n/* eslint-disable */\n// Vendor \"Awaited\" in to be TS 3.8 compatible\ntype AwaitedPromise = T extends null | undefined\n ? T // special case for `null | undefined` when not in `--strictNullChecks` mode\n : T extends object & { then(onfulfilled: infer F, ...args: infer _): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V, ...args: infer _) => any // if the argument to `then` is callable, extracts the first argument\n ? V // normally this would recursively unwrap, but this is not possible in TS3.8\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n/* eslint-enable */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors Promise, PromiseValue = AwaitedPromise>>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: PromiseValue) => void,\n): ReturnType;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors any>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: ReturnType) => void,\n): ReturnType;\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n ValueType = ReturnType,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally: () => void = () => {},\n onSuccess: (result: ValueType | AwaitedPromise) => void = () => {},\n): ValueType {\n let maybePromiseResult: ReturnType;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally, onSuccess);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n *\n * For thenable objects with extra methods (like jQuery's jqXHR),\n * this function preserves those methods by wrapping the original thenable in a Proxy\n * that intercepts .then() calls to apply error handling while forwarding all other\n * properties to the original object.\n * This allows code like `startSpan(() => $.ajax(...)).abort()` to work correctly.\n */\nfunction maybeHandlePromiseRejection(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n onSuccess: (result: MaybePromise | AwaitedPromise) => void,\n): MaybePromise {\n if (isThenable(value)) {\n return chainAndCopyPromiseLike(\n value as MaybePromise & PromiseLike> & Record,\n result => {\n onFinally();\n onSuccess(result as Awaited);\n },\n err => {\n onError(err);\n onFinally();\n },\n ) as MaybePromise;\n }\n // Non-thenable value - call callbacks immediately and return as-is\n onFinally();\n onSuccess(value);\n return value;\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { CoreOptions } from '../types-hoist/options';\nimport type { SamplingContext } from '../types-hoist/samplingcontext';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\n\n/**\n * Makes a sampling decision for the given options.\n *\n * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n */\nexport function sampleSpan(\n options: Pick,\n samplingContext: SamplingContext,\n sampleRand: number,\n): [sampled: boolean, sampleRate?: number, localSampleRateWasApplied?: boolean] {\n // nothing to do if span recording is not enabled\n if (!hasSpansEnabled(options)) {\n return [false];\n }\n\n let localSampleRateWasApplied = undefined;\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({\n ...samplingContext,\n inheritOrSampleWith: fallbackSampleRate => {\n // If we have an incoming parent sample rate, we'll just use that one.\n // The sampling decision will be inherited because of the sample_rand that was generated when the trace reached the incoming boundaries of the SDK.\n if (typeof samplingContext.parentSampleRate === 'number') {\n return samplingContext.parentSampleRate;\n }\n\n // Fallback if parent sample rate is not on the incoming trace (e.g. if there is no baggage)\n // This is to provide backwards compatibility if there are incoming traces from older SDKs that don't send a parent sample rate or a sample rand. In these cases we just want to force either a sampling decision on the downstream traces via the sample rate.\n if (typeof samplingContext.parentSampled === 'boolean') {\n return Number(samplingContext.parentSampled);\n }\n\n return fallbackSampleRate;\n },\n });\n localSampleRateWasApplied = true;\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n localSampleRateWasApplied = true;\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get.\n // (The only valid values are booleans or numbers between 0 and 1.)\n const parsedSampleRate = parseSampleRate(sampleRate);\n\n if (parsedSampleRate === undefined) {\n DEBUG_BUILD &&\n debug.warn(\n `[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n sampleRate,\n )} of type ${JSON.stringify(typeof sampleRate)}.`,\n );\n return [false];\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 (!parsedSampleRate) {\n DEBUG_BUILD &&\n debug.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 return [false, parsedSampleRate, localSampleRateWasApplied];\n }\n\n // We always compare the sample rand for the current execution context against the chosen sample rate.\n // Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n const shouldSample = sampleRand < parsedSampleRate;\n\n // if we're not going to keep it, we're done\n if (!shouldSample) {\n DEBUG_BUILD &&\n debug.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n }\n\n return [shouldSample, parsedSampleRate, localSampleRateWasApplied];\n}\n","/* eslint-disable max-lines */\n\nimport { getAsyncContextStrategy } from '../asyncContext';\nimport type { AsyncContextStrategy } from '../asyncContext/types';\nimport { getMainCarrier } from '../carrier';\nimport { getClient, getCurrentScope, getIsolationScope, withScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SentrySpanArguments, Span, SpanTimeInput } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { baggageHeaderToDynamicSamplingContext } from '../utils/baggage';\nimport { debug } from '../utils/debug-logger';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\nimport { generateTraceId } from '../utils/propagationContext';\nimport { safeMathRandom } from '../utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope';\nimport { addChildSpanToSpan, getRootSpan, spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport { propagationContextFromHeaders, shouldContinueTrace } from '../utils/tracing';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanStart } from './logSpans';\nimport { sampleSpan } from './sampling';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\nimport { setCapturedScopesOnSpan } from './utils';\n\nconst SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T {\n const acs = getAcs();\n if (acs.startSpan) {\n return acs.startSpan(options, callback);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n // We still need to fork a potentially passed scope, as we set the active span on it\n // and we need to ensure that it is cleaned up properly once the span ends.\n const customForkedScope = customScope?.clone();\n\n return withScope(customForkedScope, () => {\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? new SentryNonRecordingSpan()\n : createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n\n _setSpanForScope(scope, activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n const { status } = spanToJSON(activeSpan);\n if (activeSpan.isRecording() && (!status || status === 'ok')) {\n activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n },\n () => {\n activeSpan.end();\n },\n );\n });\n });\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. Use `span.end()` to end the span.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\n const acs = getAcs();\n if (acs.startSpanManual) {\n return acs.startSpanManual(options, callback);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n const customForkedScope = customScope?.clone();\n\n return withScope(customForkedScope, () => {\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? new SentryNonRecordingSpan()\n : createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n\n _setSpanForScope(scope, activeSpan);\n\n return handleCallbackErrors(\n // We pass the `finish` function to the callback, so the user can finish the span manually\n // this is mainly here for historic purposes because previously, we instructed users to call\n // `finish` instead of `span.end()` to also clean up the scope. Nowadays, calling `span.end()`\n // or `finish` has the same effect and we simply leave it here to avoid breaking user code.\n () => callback(activeSpan, () => activeSpan.end()),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n const { status } = spanToJSON(activeSpan);\n if (activeSpan.isRecording() && (!status || status === 'ok')) {\n activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\n const acs = getAcs();\n if (acs.startInactiveSpan) {\n return acs.startInactiveSpan(options);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan } = options;\n\n // If `options.scope` is defined, we use this as as a wrapper,\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = options.scope\n ? (callback: () => Span) => withScope(options.scope, callback)\n : customParentSpan !== undefined\n ? (callback: () => Span) => withActiveSpan(customParentSpan, callback)\n : (callback: () => Span) => callback();\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return new SentryNonRecordingSpan();\n }\n\n return createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n });\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n */\nexport const continueTrace = (\n options: {\n sentryTrace: Parameters[0];\n baggage: Parameters[1];\n },\n callback: () => V,\n): V => {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.continueTrace) {\n return acs.continueTrace(options, callback);\n }\n\n const { sentryTrace, baggage } = options;\n\n const client = getClient();\n const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n if (client && !shouldContinueTrace(client, incomingDsc?.org_id)) {\n return startNewTrace(callback);\n }\n\n return withScope(scope => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n _setSpanForScope(scope, undefined);\n return callback();\n });\n};\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will not be attached to a parent span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T {\n const acs = getAcs();\n if (acs.withActiveSpan) {\n return acs.withActiveSpan(span, callback);\n }\n\n return withScope(scope => {\n _setSpanForScope(scope, span || undefined);\n return callback(scope);\n });\n}\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nexport function suppressTracing(callback: () => T): T {\n const acs = getAcs();\n\n if (acs.suppressTracing) {\n return acs.suppressTracing(callback);\n }\n\n return withScope(scope => {\n // Note: We do not wait for the callback to finish before we reset the metadata\n // the reason for this is that otherwise, in the browser this can lead to very weird behavior\n // as there is only a single top scope, if the callback takes longer to finish,\n // other, unrelated spans may also be suppressed, which we do not want\n // so instead, we only suppress tracing synchronoysly in the browser\n scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true });\n const res = callback();\n scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: undefined });\n return res;\n });\n}\n\n/**\n * Starts a new trace for the duration of the provided callback. Spans started within the\n * callback will be part of the new trace instead of a potentially previously started trace.\n *\n * Important: Only use this function if you want to override the default trace lifetime and\n * propagation mechanism of the SDK for the duration and scope of the provided callback.\n * The newly created trace will also be the root of a new distributed trace, for example if\n * you make http requests within the callback.\n * This function might be useful if the operation you want to instrument should not be part\n * of a potentially ongoing trace.\n *\n * Default behavior:\n * - Server-side: A new trace is started for each incoming request.\n * - Browser: A new trace is started for each page our route. Navigating to a new route\n * or page will automatically create a new trace.\n */\nexport function startNewTrace(callback: () => T): T {\n const acs = getAcs();\n if (acs.startNewTrace) {\n return acs.startNewTrace(callback);\n }\n\n return withScope(scope => {\n scope.setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n });\n DEBUG_BUILD && debug.log(`Starting a new trace with id ${scope.getPropagationContext().traceId}`);\n return withActiveSpan(null, callback);\n });\n}\n\nfunction createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n}: {\n parentSpan: SentrySpan | undefined;\n spanArguments: SentrySpanArguments;\n forceTransaction?: boolean;\n scope: Scope;\n}): Span {\n if (!hasSpansEnabled()) {\n const span = new SentryNonRecordingSpan();\n\n // If this is a root span, we ensure to freeze a DSC\n // So we can have at least partial data here\n if (forceTransaction || !parentSpan) {\n const dsc = {\n sampled: 'false',\n sample_rate: '0',\n transaction: spanArguments.name,\n ...getDynamicSamplingContextFromSpan(span),\n } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n }\n\n return span;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: Span;\n if (parentSpan && !forceTransaction) {\n span = _startChildSpan(parentSpan, scope, spanArguments);\n addChildSpanToSpan(parentSpan, span);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const parentSampled = spanIsSampled(parentSpan);\n\n span = _startRootSpan(\n {\n traceId,\n parentSpanId,\n ...spanArguments,\n },\n scope,\n parentSampled,\n );\n\n freezeDscOnSpan(span, dsc);\n } else {\n const {\n traceId,\n dsc,\n parentSpanId,\n sampled: parentSampled,\n } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n span = _startRootSpan(\n {\n traceId,\n parentSpanId,\n ...spanArguments,\n },\n scope,\n parentSampled,\n );\n\n if (dsc) {\n freezeDscOnSpan(span, dsc);\n }\n }\n\n logSpanStart(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to SentrySpanArguments.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n */\nfunction parseSentrySpanArguments(options: StartSpanOptions): SentrySpanArguments {\n const exp = options.experimental || {};\n const initialCtx: SentrySpanArguments = {\n isStandalone: exp.standalone,\n ...options,\n };\n\n if (options.startTime) {\n const ctx: SentrySpanArguments & { startTime?: SpanTimeInput } = { ...initialCtx };\n ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return initialCtx;\n}\n\nfunction getAcs(): AsyncContextStrategy {\n const carrier = getMainCarrier();\n return getAsyncContextStrategy(carrier);\n}\n\nfunction _startRootSpan(spanArguments: SentrySpanArguments, scope: Scope, parentSampled?: boolean): SentrySpan {\n const client = getClient();\n const options: Partial = client?.getOptions() || {};\n\n const { name = '' } = spanArguments;\n\n const mutableSpanSamplingData = { spanAttributes: { ...spanArguments.attributes }, spanName: name, parentSampled };\n\n // we don't care about the decision for the moment; this is just a placeholder\n client?.emit('beforeSampling', mutableSpanSamplingData, { decision: false });\n\n // If hook consumers override the parentSampled flag, we will use that value instead of the actual one\n const finalParentSampled = mutableSpanSamplingData.parentSampled ?? parentSampled;\n const finalAttributes = mutableSpanSamplingData.spanAttributes;\n\n const currentPropagationContext = scope.getPropagationContext();\n const [sampled, sampleRate, localSampleRateWasApplied] = scope.getScopeData().sdkProcessingMetadata[\n SUPPRESS_TRACING_KEY\n ]\n ? [false]\n : sampleSpan(\n options,\n {\n name,\n parentSampled: finalParentSampled,\n attributes: finalAttributes,\n parentSampleRate: parseSampleRate(currentPropagationContext.dsc?.sample_rate),\n },\n currentPropagationContext.sampleRand,\n );\n\n const rootSpan = new SentrySpan({\n ...spanArguments,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]:\n sampleRate !== undefined && localSampleRateWasApplied ? sampleRate : undefined,\n ...finalAttributes,\n },\n sampled,\n });\n\n if (!sampled && client) {\n DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n if (client) {\n client.emit('spanStart', rootSpan);\n }\n\n return rootSpan;\n}\n\n/**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * This inherits the sampling decision from the parent span.\n */\nfunction _startChildSpan(parentSpan: Span, scope: Scope, spanArguments: SentrySpanArguments): Span {\n const { spanId, traceId } = parentSpan.spanContext();\n const sampled = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] ? false : spanIsSampled(parentSpan);\n\n const childSpan = sampled\n ? new SentrySpan({\n ...spanArguments,\n parentSpanId: spanId,\n traceId,\n sampled,\n })\n : new SentryNonRecordingSpan({ traceId });\n\n addChildSpanToSpan(parentSpan, childSpan);\n\n const client = getClient();\n if (client) {\n client.emit('spanStart', childSpan);\n // If it has an endTimestamp, it's already ended\n if (spanArguments.endTimestamp) {\n client.emit('spanEnd', childSpan);\n }\n }\n\n return childSpan;\n}\n\nfunction getParentSpan(scope: Scope, customParentSpan: Span | null | undefined): SentrySpan | undefined {\n // always use the passed in span directly\n if (customParentSpan) {\n return customParentSpan as SentrySpan;\n }\n\n // This is different from `undefined` as it means the user explicitly wants no parent span\n if (customParentSpan === null) {\n return undefined;\n }\n\n const span = _getSpanForScope(scope) as SentrySpan | undefined;\n\n if (!span) {\n return undefined;\n }\n\n const client = getClient();\n const options: Partial = client ? client.getOptions() : {};\n if (options.parentSpanIsAlwaysRootSpan) {\n return getRootSpan(span) as SentrySpan;\n }\n\n return span;\n}\n\nfunction getActiveSpanWrapper(parentSpan: Span | undefined | null): (callback: () => T) => T {\n return parentSpan !== undefined\n ? (callback: () => T) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback: () => T) => callback();\n}\n","import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { shouldIgnoreSpan } from '../utils/should-ignore-span';\nimport { _setSpanForScope } from '../utils/spanOnScope';\nimport {\n getActiveSpan,\n getSpanDescendants,\n removeChildSpanFromSpan,\n spanTimeInputToSeconds,\n spanToJSON,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR, SPAN_STATUS_OK } from './spanstatus';\nimport { startInactiveSpan } from './trace';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1_000,\n finalTimeout: 30_000,\n childSpanTimeout: 15_000,\n};\n\nconst FINISH_REASON_HEARTBEAT_FAILED = 'heartbeatFailed';\nconst FINISH_REASON_IDLE_TIMEOUT = 'idleTimeout';\nconst FINISH_REASON_FINAL_TIMEOUT = 'finalTimeout';\nconst FINISH_REASON_EXTERNAL_FINISH = 'externalFinish';\nconst FINISH_REASON_CANCELLED = 'cancelled';\n\n// unused\nconst FINISH_REASON_DOCUMENT_HIDDEN = 'documentHidden';\n\n// unused in this file, but used in BrowserTracing\nconst FINISH_REASON_INTERRUPTED = 'interactionInterrupted';\n\ntype IdleSpanFinishReason =\n | typeof FINISH_REASON_CANCELLED\n | typeof FINISH_REASON_DOCUMENT_HIDDEN\n | typeof FINISH_REASON_EXTERNAL_FINISH\n | typeof FINISH_REASON_FINAL_TIMEOUT\n | typeof FINISH_REASON_HEARTBEAT_FAILED\n | typeof FINISH_REASON_IDLE_TIMEOUT\n | typeof FINISH_REASON_INTERRUPTED;\n\ninterface IdleSpanOptions {\n /**\n * The time that has to pass without any span being created.\n * If this time is exceeded, the idle span will finish.\n */\n idleTimeout: number;\n /**\n * The max. time an idle span may run.\n * If this time is exceeded, the idle span will finish no matter what.\n */\n finalTimeout: number;\n /**\n * The max. time a child span may run.\n * If the time since the last span was started exceeds this time, the idle span will finish.\n */\n childSpanTimeout?: number;\n /**\n * When set to `true`, will disable the idle timeout and child timeout\n * until the `idleSpanEnableAutoFinish` hook is emitted for the idle span.\n * The final timeout mechanism will not be affected by this option,\n * meaning the idle span will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n disableAutoFinish?: boolean;\n\n /** Allows to configure a hook that is called when the idle span is ended, before it is processed. */\n beforeSpanEnd?: (span: Span) => void;\n\n /**\n * If set to `true`, the idle span will be trimmed to the latest span end timestamp of its children.\n *\n * @default `true`.\n */\n trimIdleSpanEndTimestamp?: boolean;\n}\n\n/**\n * An idle span is a span that automatically finishes. It does this by tracking child spans as activities.\n * An idle span is always the active span.\n */\nexport function startIdleSpan(startSpanOptions: StartSpanOptions, options: Partial = {}): Span {\n // Activities store a list of active spans\n const activities = new Map();\n\n // We should not use heartbeat if we finished a span\n let _finished = false;\n\n // Timer that tracks idleTimeout\n let _idleTimeoutID: ReturnType | undefined;\n\n // Timer that tracks maxSpanTime for child spans\n let _childSpanTimeoutID: ReturnType | undefined;\n\n // The reason why the span was finished\n let _finishReason: IdleSpanFinishReason = FINISH_REASON_EXTERNAL_FINISH;\n\n let _autoFinishAllowed: boolean = !options.disableAutoFinish;\n\n const _cleanupHooks: (() => void)[] = [];\n\n const {\n idleTimeout = TRACING_DEFAULTS.idleTimeout,\n finalTimeout = TRACING_DEFAULTS.finalTimeout,\n childSpanTimeout = TRACING_DEFAULTS.childSpanTimeout,\n beforeSpanEnd,\n trimIdleSpanEndTimestamp = true,\n } = options;\n\n const client = getClient();\n\n if (!client || !hasSpansEnabled()) {\n const span = new SentryNonRecordingSpan();\n\n const dsc = {\n sample_rate: '0',\n sampled: 'false',\n ...getDynamicSamplingContextFromSpan(span),\n } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n\n return span;\n }\n\n const scope = getCurrentScope();\n const previousActiveSpan = getActiveSpan();\n const span = _startIdleSpan(startSpanOptions);\n\n // We patch span.end to ensure we can run some things before the span is ended\n // eslint-disable-next-line @typescript-eslint/unbound-method\n span.end = new Proxy(span.end, {\n apply(target, thisArg, args: Parameters) {\n if (beforeSpanEnd) {\n beforeSpanEnd(span);\n }\n\n // If the span is non-recording, nothing more to do here...\n // This is the case if tracing is enabled but this specific span was not sampled\n if (thisArg instanceof SentryNonRecordingSpan) {\n return;\n }\n\n // Just ensuring that this keeps working, even if we ever have more arguments here\n const [definedEndTimestamp, ...rest] = args;\n const timestamp = definedEndTimestamp || timestampInSeconds();\n const spanEndTimestamp = spanTimeInputToSeconds(timestamp);\n\n // Ensure we end with the last span timestamp, if possible\n const spans = getSpanDescendants(span).filter(child => child !== span);\n\n const spanJson = spanToJSON(span);\n\n // If we have no spans, we just end, nothing else to do here\n // Likewise, if users explicitly ended the span, we simply end the span without timestamp adjustment\n if (!spans.length || !trimIdleSpanEndTimestamp) {\n onIdleSpanEnded(spanEndTimestamp);\n return Reflect.apply(target, thisArg, [spanEndTimestamp, ...rest]);\n }\n\n const ignoreSpans = client.getOptions().ignoreSpans;\n\n const latestSpanEndTimestamp = spans?.reduce((acc: number | undefined, current) => {\n const currentSpanJson = spanToJSON(current);\n if (!currentSpanJson.timestamp) {\n return acc;\n }\n // Ignored spans will get dropped later (in the client) but since we already adjust\n // the idle span end timestamp here, we can already take to-be-ignored spans out of\n // the calculation here.\n if (ignoreSpans && shouldIgnoreSpan(currentSpanJson, ignoreSpans)) {\n return acc;\n }\n return acc ? Math.max(acc, currentSpanJson.timestamp) : currentSpanJson.timestamp;\n }, undefined);\n\n // In reality this should always exist here, but type-wise it may be undefined...\n const spanStartTimestamp = spanJson.start_timestamp;\n\n // The final endTimestamp should:\n // * Never be before the span start timestamp\n // * Be the latestSpanEndTimestamp, if there is one, and it is smaller than the passed span end timestamp\n // * Otherwise be the passed end timestamp\n // Final timestamp can never be after finalTimeout\n const endTimestamp = Math.min(\n spanStartTimestamp ? spanStartTimestamp + finalTimeout / 1000 : Infinity,\n Math.max(spanStartTimestamp || -Infinity, Math.min(spanEndTimestamp, latestSpanEndTimestamp || Infinity)),\n );\n\n onIdleSpanEnded(endTimestamp);\n return Reflect.apply(target, thisArg, [endTimestamp, ...rest]);\n },\n });\n\n /**\n * Cancels the existing idle timeout, if there is one.\n */\n function _cancelIdleTimeout(): void {\n if (_idleTimeoutID) {\n clearTimeout(_idleTimeoutID);\n _idleTimeoutID = undefined;\n }\n }\n\n /**\n * Cancels the existing child span timeout, if there is one.\n */\n function _cancelChildSpanTimeout(): void {\n if (_childSpanTimeoutID) {\n clearTimeout(_childSpanTimeoutID);\n _childSpanTimeoutID = undefined;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n function _restartIdleTimeout(endTimestamp?: number): void {\n _cancelIdleTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && activities.size === 0 && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_IDLE_TIMEOUT;\n span.end(endTimestamp);\n }\n }, idleTimeout);\n }\n\n /**\n * Restarts child span timeout, if there is none running it will start one.\n */\n function _restartChildSpanTimeout(endTimestamp?: number): void {\n _cancelChildSpanTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_HEARTBEAT_FAILED;\n span.end(endTimestamp);\n }\n }, childSpanTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n function _pushActivity(spanId: string): void {\n _cancelIdleTimeout();\n activities.set(spanId, true);\n\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartChildSpanTimeout(endTimestamp + childSpanTimeout / 1000);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n function _popActivity(spanId: string): void {\n if (activities.has(spanId)) {\n activities.delete(spanId);\n }\n\n if (activities.size === 0) {\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartIdleTimeout(endTimestamp + idleTimeout / 1000);\n _cancelChildSpanTimeout();\n }\n }\n\n function onIdleSpanEnded(endTimestamp: number): void {\n _finished = true;\n activities.clear();\n\n _cleanupHooks.forEach(cleanup => cleanup());\n\n _setSpanForScope(scope, previousActiveSpan);\n\n const spanJSON = spanToJSON(span);\n\n const { start_timestamp: startTimestamp } = spanJSON;\n // This should never happen, but to make TS happy...\n if (!startTimestamp) {\n return;\n }\n\n const attributes = spanJSON.data;\n if (!attributes[SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, _finishReason);\n }\n\n // Set span status to 'ok' if it hasn't been explicitly set to an error status\n const currentStatus = spanJSON.status;\n if (!currentStatus || currentStatus === 'unknown') {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n debug.log(`[Tracing] Idle span \"${spanJSON.op}\" finished`);\n\n const childSpans = getSpanDescendants(span).filter(child => child !== span);\n\n let discardedSpans = 0;\n childSpans.forEach(childSpan => {\n // We cancel all pending spans with status \"cancelled\" to indicate the idle span was finished early\n if (childSpan.isRecording()) {\n childSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'cancelled' });\n childSpan.end(endTimestamp);\n DEBUG_BUILD &&\n debug.log('[Tracing] Cancelling span since span ended early', JSON.stringify(childSpan, undefined, 2));\n }\n\n const childSpanJSON = spanToJSON(childSpan);\n const { timestamp: childEndTimestamp = 0, start_timestamp: childStartTimestamp = 0 } = childSpanJSON;\n\n const spanStartedBeforeIdleSpanEnd = childStartTimestamp <= endTimestamp;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (finalTimeout + idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = childEndTimestamp - childStartTimestamp <= timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(childSpan, undefined, 2);\n if (!spanStartedBeforeIdleSpanEnd) {\n debug.log('[Tracing] Discarding span since it happened after idle span was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n debug.log('[Tracing] Discarding span since it finished after idle span final timeout', stringifiedSpan);\n }\n }\n\n if (!spanEndedBeforeFinalTimeout || !spanStartedBeforeIdleSpanEnd) {\n removeChildSpanFromSpan(span, childSpan);\n discardedSpans++;\n }\n });\n\n if (discardedSpans > 0) {\n span.setAttribute('sentry.idle_span_discarded_spans', discardedSpans);\n }\n }\n\n _cleanupHooks.push(\n client.on('spanStart', startedSpan => {\n // If we already finished the idle span,\n // or if this is the idle span itself being started,\n // or if the started span has already been closed,\n // we don't care about it for activity\n if (\n _finished ||\n startedSpan === span ||\n !!spanToJSON(startedSpan).timestamp ||\n (startedSpan instanceof SentrySpan && startedSpan.isStandaloneSpan())\n ) {\n return;\n }\n\n const allSpans = getSpanDescendants(span);\n\n // If the span that was just started is a child of the idle span, we should track it\n if (allSpans.includes(startedSpan)) {\n _pushActivity(startedSpan.spanContext().spanId);\n }\n }),\n );\n\n _cleanupHooks.push(\n client.on('spanEnd', endedSpan => {\n if (_finished) {\n return;\n }\n\n _popActivity(endedSpan.spanContext().spanId);\n }),\n );\n\n _cleanupHooks.push(\n client.on('idleSpanEnableAutoFinish', spanToAllowAutoFinish => {\n if (spanToAllowAutoFinish === span) {\n _autoFinishAllowed = true;\n _restartIdleTimeout();\n\n if (activities.size) {\n _restartChildSpanTimeout();\n }\n }\n }),\n );\n\n // We only start the initial idle timeout if we are not delaying the auto finish\n if (!options.disableAutoFinish) {\n _restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!_finished) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' });\n _finishReason = FINISH_REASON_FINAL_TIMEOUT;\n span.end();\n }\n }, finalTimeout);\n\n return span;\n}\n\nfunction _startIdleSpan(options: StartSpanOptions): Span {\n const span = startInactiveSpan(options);\n\n _setSpanForScope(getCurrentScope(), span);\n\n DEBUG_BUILD && debug.log('[Tracing] Started span is an idle span');\n\n return span;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\n\ntype State = typeof STATE_PENDING | typeof STATE_RESOLVED | typeof STATE_REJECTED;\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\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 */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\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 */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\ntype Executor = (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void;\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nexport class SyncPromise implements PromiseLike {\n private _state: State;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(executor: Executor) {\n this._state = STATE_PENDING;\n this._handlers = [];\n\n this._runExecutor(executor);\n }\n\n /** @inheritdoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\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 as any);\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 /** @inheritdoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** @inheritdoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\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 as unknown as any);\n });\n });\n }\n\n /** Excute the resolve/reject handlers. */\n private _executeHandlers(): void {\n if (this._state === STATE_PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === STATE_RESOLVED) {\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === STATE_REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n }\n\n /** Run the executor for the SyncPromise. */\n private _runExecutor(executor: Executor): void {\n const setResult = (state: State, value?: T | PromiseLike | any): void => {\n if (this._state !== STATE_PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(resolve, reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n const resolve = (value: unknown): void => {\n setResult(STATE_RESOLVED, value);\n };\n\n const reject = (reason: unknown): void => {\n setResult(STATE_REJECTED, reason);\n };\n\n try {\n executor(resolve, reject);\n } catch (e) {\n reject(e);\n }\n }\n}\n","import { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { rejectedSyncPromise, resolvedSyncPromise } from './utils/syncpromise';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike {\n try {\n const result = _notifyEventProcessors(event, hint, processors, index);\n return isThenable(result) ? result : resolvedSyncPromise(result);\n } catch (error) {\n return rejectedSyncPromise(error);\n }\n}\n\nfunction _notifyEventProcessors(\n event: Event | null,\n hint: EventHint,\n processors: EventProcessor[],\n index: number,\n): Event | null | PromiseLike {\n const processor = processors[index];\n\n if (!event || !processor) {\n return event;\n }\n\n const result = processor({ ...event }, hint);\n\n DEBUG_BUILD && result === null && debug.log(`Event processor \"${processor.id || '?'}\" dropped event`);\n\n if (isThenable(result)) {\n return result.then(final => _notifyEventProcessors(final, hint, processors, index + 1));\n }\n\n return _notifyEventProcessors(result, hint, processors, index + 1);\n}\n","import type { DebugImage } from '../types-hoist/debugMeta';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath } from './stacktrace';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype StackString = string;\ntype CachedResult = [string, string];\n\nlet parsedStackResults: Record | undefined;\nlet lastSentryKeysCount: number | undefined;\nlet lastNativeKeysCount: number | undefined;\nlet cachedFilenameDebugIds: Record | undefined;\n\n/**\n * Clears the cached debug ID mappings.\n * Useful for testing or when the global debug ID state changes.\n */\nexport function clearDebugIdCache(): void {\n parsedStackResults = undefined;\n lastSentryKeysCount = undefined;\n lastNativeKeysCount = undefined;\n cachedFilenameDebugIds = undefined;\n}\n\n/**\n * Returns a map of filenames to debug identifiers.\n * Supports both proprietary _sentryDebugIds and native _debugIds (e.g., from Vercel) formats.\n */\nexport function getFilenameToDebugIdMap(stackParser: StackParser): Record {\n const sentryDebugIdMap = GLOBAL_OBJ._sentryDebugIds;\n const nativeDebugIdMap = GLOBAL_OBJ._debugIds;\n\n if (!sentryDebugIdMap && !nativeDebugIdMap) {\n return {};\n }\n\n const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : [];\n const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : [];\n\n // If the count of registered globals hasn't changed since the last call, we\n // can just return the cached result.\n if (\n cachedFilenameDebugIds &&\n sentryDebugIdKeys.length === lastSentryKeysCount &&\n nativeDebugIdKeys.length === lastNativeKeysCount\n ) {\n return cachedFilenameDebugIds;\n }\n\n lastSentryKeysCount = sentryDebugIdKeys.length;\n lastNativeKeysCount = nativeDebugIdKeys.length;\n\n // Build a map of filename -> debug_id from both sources\n cachedFilenameDebugIds = {};\n\n if (!parsedStackResults) {\n parsedStackResults = {};\n }\n\n const processDebugIds = (debugIdKeys: string[], debugIdMap: Record): void => {\n for (const key of debugIdKeys) {\n const debugId = debugIdMap[key];\n const result = parsedStackResults?.[key];\n\n if (result && cachedFilenameDebugIds && debugId) {\n // Use cached filename but update with current debug ID\n cachedFilenameDebugIds[result[0]] = debugId;\n // Update cached result with new debug ID\n if (parsedStackResults) {\n parsedStackResults[key] = [result[0], debugId];\n }\n } else if (debugId) {\n const parsedStack = stackParser(key);\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n\n if (filename && cachedFilenameDebugIds && parsedStackResults) {\n cachedFilenameDebugIds[filename] = debugId;\n parsedStackResults[key] = [filename, debugId];\n break;\n }\n }\n }\n }\n };\n\n if (sentryDebugIdMap) {\n processDebugIds(sentryDebugIdKeys, sentryDebugIdMap);\n }\n\n // Native _debugIds will override _sentryDebugIds if same file\n if (nativeDebugIdMap) {\n processDebugIds(nativeDebugIdKeys, nativeDebugIdMap);\n }\n\n return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nexport function getDebugImagesForResources(\n stackParser: StackParser,\n resource_paths: ReadonlyArray,\n): DebugImage[] {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n if (!filenameDebugIdMap) {\n return [];\n }\n\n const images: DebugImage[] = [];\n for (const path of resource_paths) {\n const normalizedPath = normalizeStackTracePath(path);\n if (normalizedPath && filenameDebugIdMap[normalizedPath]) {\n images.push({\n type: 'sourcemap',\n code_file: path,\n debug_id: filenameDebugIdMap[normalizedPath],\n });\n }\n }\n\n return images;\n}\n","import { getGlobalScope } from '../currentScopes';\nimport type { Scope, ScopeData } from '../scope';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport type { Breadcrumb } from '../types-hoist/breadcrumb';\nimport type { Event } from '../types-hoist/event';\nimport type { Span } from '../types-hoist/span';\nimport { merge } from './merge';\nimport { getRootSpan, spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\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 (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n const {\n extra,\n tags,\n attributes,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'attributes', attributes);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'attributes' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n data[prop] = merge(data[prop], mergeVal, 1);\n}\n\n/** Exported only for tests */\nexport function mergeArray(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\n}\n\n/**\n * Get the scope data for the current scope after merging with the\n * global scope and isolation scope.\n *\n * @param currentScope - The current scope.\n * @returns The scope data.\n */\nexport function getCombinedScopeData(isolationScope: Scope | undefined, currentScope: Scope | undefined): ScopeData {\n const scopeData = getGlobalScope().getScopeData();\n isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData());\n currentScope && mergeScopeData(scopeData, currentScope.getScopeData());\n return scopeData;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n const { extra, tags, user, contexts, level, transactionName } = data;\n\n if (Object.keys(extra).length) {\n event.extra = { ...extra, ...event.extra };\n }\n\n if (Object.keys(tags).length) {\n event.tags = { ...tags, ...event.tags };\n }\n\n if (Object.keys(user).length) {\n event.user = { ...user, ...event.user };\n }\n\n if (Object.keys(contexts).length) {\n event.contexts = { ...contexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n // transaction events get their `transaction` from the root span name\n if (transactionName && event.type !== 'transaction') {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n\n const rootSpan = getRootSpan(span);\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName && !event.transaction && event.type === 'transaction') {\n event.transaction = transactionName;\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 */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (!event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n","import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { notifyEventProcessors } from '../eventProcessors';\nimport type { CaptureContext, ScopeContext } from '../scope';\nimport { Scope } from '../scope';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { getFilenameToDebugIdMap } from './debug-ids';\nimport { addExceptionMechanism, uuid4 } from './misc';\nimport { normalize } from './normalize';\nimport { applyScopeDataToEvent, getCombinedScopeData } from './scopeData';\nimport { truncate } from './string';\nimport { resolvedSyncPromise } from './syncpromise';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\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 * @hidden\n */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n client?: Client,\n isolationScope?: Scope,\n): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n if (client) {\n client.emit('applyFrameMetadata', event);\n }\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\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 const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Scope.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getCombinedScopeData(isolationScope, finalScope);\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n const eventProcessors = [\n ...clientEventProcessors,\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n // Skip event processors for internal exceptions to prevent recursion\n // oxlint-disable-next-line typescript/prefer-optional-chain\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n const result = isInternalException\n ? resolvedSyncPromise(prepared)\n : notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\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 *\n * Only exported for tests.\n *\n * @param event event instance to be enhanced\n */\nexport function applyClientOptions(event: Event, options: ClientOptions): void {\n const { environment, release, dist, maxValueLength } = options;\n\n // empty strings do not make sense for environment, release, and dist\n // so we handle them the same as if they were not provided\n event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n\n if (!event.release && release) {\n event.release = release;\n }\n\n if (!event.dist && dist) {\n event.dist = dist;\n }\n\n const request = event.request;\n if (request?.url && maxValueLength) {\n request.url = truncate(request.url, maxValueLength);\n }\n\n if (maxValueLength) {\n event.exception?.values?.forEach(exception => {\n if (exception.value) {\n // Truncates error messages\n exception.value = truncate(exception.value, maxValueLength);\n }\n });\n }\n}\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap: Record = {};\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id,\n });\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 */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\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 */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\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?.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 return {\n ...span,\n ...(span.data && {\n data: normalize(span.data, depth, maxBreadth),\n }),\n };\n });\n }\n\n // event.contexts.flags (FeatureFlagContext) stores context for our feature\n // flag integrations. It has a greater nesting depth than our other typed\n // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want\n // to skip this in case of conflicting, user-provided context.\n if (event.contexts?.flags && normalized.contexts) {\n normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n }\n\n return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(hint: CaptureContext | EventHint): hint is Scope | ((scope: Scope) => Scope) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial | EventHint): hint is Partial {\n return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import { getClient, getCurrentScope, getIsolationScope, withIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { CaptureContext } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { startNewTrace } from './tracing/trace';\nimport type { CheckIn, FinishedCheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { Session, SessionContext } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { uuid4 } from './utils/misc';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { getCombinedScopeData } from './utils/scopeData';\nimport { timestampInSeconds } from './utils/time';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(exception: unknown, hint?: ExclusiveEventHintOrCaptureContext): string {\n return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\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 captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | SeverityLevel): string {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const hint = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentScope().captureMessage(message, level, hint);\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 * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n return getCurrentScope().captureEvent(event, hint);\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 */\nexport function setContext(name: string, context: { [key: string]: unknown } | null): void {\n getIsolationScope().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 */\nexport function setExtras(extras: Extras): void {\n getIsolationScope().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 */\nexport function setExtra(key: string, extra: Extra): void {\n getIsolationScope().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 */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n getIsolationScope().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 */\nexport function setTag(key: string, value: Primitive): void {\n getIsolationScope().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 */\nexport function setUser(user: User | null): void {\n getIsolationScope().setUser(user);\n}\n\n/**\n * Sets the conversation ID for the current isolation scope.\n *\n * @param conversationId The conversation ID to set. Pass `null` or `undefined` to unset the conversation ID.\n */\nexport function setConversationId(conversationId: string | null | undefined): void {\n getIsolationScope().setConversationId(conversationId);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nexport function lastEventId(): string | undefined {\n return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && debug.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param callback Callback to be monitored\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n function runCallback(): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n // Default behavior without isolateTrace\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n return maybePromiseResult.then(\n r => {\n finishCheckIn('ok');\n return r;\n },\n e => {\n finishCheckIn('error');\n throw e;\n },\n ) as T;\n }\n finishCheckIn('ok');\n\n return maybePromiseResult;\n }\n\n return withIsolationScope(() => (upsertMonitorConfig?.isolateTrace ? startNewTrace(runCallback) : runCallback()));\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 */\nexport async function flush(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && debug.warn('Cannot flush events. No client defined.');\n return Promise.resolve(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 */\nexport async function close(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && debug.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nexport function isEnabled(): boolean {\n const client = getClient();\n return client?.getOptions().enabled !== false && !!client?.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n const isolationScope = getIsolationScope();\n\n const { user } = getCombinedScopeData(isolationScope, getCurrentScope());\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n user,\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession?.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n const isolationScope = getIsolationScope();\n const client = getClient();\n const session = isolationScope.getSession();\n if (session && client) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n","import type { ReportDialogOptions } from './report-dialog';\nimport type { DsnComponents, DsnLike } from './types-hoist/dsn';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport { dsnToString, makeDsn } from './utils/dsn';\n\nexport const SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const 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: DsnComponents): string {\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: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n const params: Record = {\n sentry_version: SENTRY_API_VERSION,\n };\n\n if (dsn.publicKey) {\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n params.sentry_key = dsn.publicKey;\n }\n\n if (sdkInfo) {\n params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`;\n }\n\n return new URLSearchParams(params).toString();\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 */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string, sdkInfo?: SdkInfo): string {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(dsnLike: DsnLike, dialogOptions: ReportDialogOptions): string {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'onClose') {\n continue;\n }\n\n if (key === 'user') {\n const 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] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import type { Client } from './client';\nimport { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { Integration, IntegrationFn } from './types-hoist/integration';\nimport type { CoreOptions } from './types-hoist/options';\nimport { debug } from './utils/debug-logger';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\ntype IntegrationWithDefaultInstance = Integration & { isDefaultInstance?: true };\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preserve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach((currentInstance: IntegrationWithDefaultInstance) => {\n const { name } = currentInstance;\n\n const existingInstance: IntegrationWithDefaultInstance | undefined = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(\n options: Pick,\n): Integration[] {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach((integration: IntegrationWithDefaultInstance) => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\n } else {\n integrations = defaultIntegrations;\n }\n\n return filterDuplicates(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 */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach((integration: Integration | undefined) => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(client, integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n for (const integration of integrations) {\n // guard against empty provided integrations\n if (integration?.afterAllSetup) {\n integration.afterAllSetup(client);\n }\n }\n}\n\n/** Setup a single integration. */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n if (integrationIndex[integration.name]) {\n DEBUG_BUILD && debug.log(`Integration skipped because it was already installed: ${integration.name}`);\n return;\n }\n integrationIndex[integration.name] = integration;\n\n // `setupOnce` is only called the first time\n if (!installedIntegrations.includes(integration.name) && typeof integration.setupOnce === 'function') {\n integration.setupOnce();\n installedIntegrations.push(integration.name);\n }\n\n // `setup` is run for each client\n if (integration.setup && typeof integration.setup === 'function') {\n integration.setup(client);\n }\n\n if (typeof integration.preprocessEvent === 'function') {\n const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n }\n\n if (typeof integration.processEvent === 'function') {\n const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n id: integration.name,\n });\n\n client.addEventProcessor(processor);\n }\n\n DEBUG_BUILD && debug.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nexport function addIntegration(integration: Integration): void {\n const client = getClient();\n\n if (!client) {\n DEBUG_BUILD && debug.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n return;\n }\n\n client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration(fn: Fn): (...args: Parameters) => Integration {\n return fn;\n}\n","import type { DurationUnit, FractionUnit, InformationUnit } from './types-hoist/measurement';\n\nexport type RawAttributes = T & ValidatedAttributes;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RawAttribute = T extends { value: any } | { unit: any } ? AttributeObject : T;\n\nexport type Attributes = Record;\n\nexport type AttributeValueType = string | number | boolean | Array | Array | Array;\n\ntype AttributeTypeMap = {\n string: string;\n integer: number;\n double: number;\n boolean: boolean;\n 'string[]': Array;\n 'integer[]': Array;\n 'double[]': Array;\n 'boolean[]': Array;\n};\n\n/* Generates a type from the AttributeTypeMap like:\n | { value: string; type: 'string' }\n | { value: number; type: 'integer' }\n | { value: number; type: 'double' }\n */\ntype AttributeUnion = {\n [K in keyof AttributeTypeMap]: {\n value: AttributeTypeMap[K];\n type: K;\n };\n}[keyof AttributeTypeMap];\n\nexport type TypedAttributeValue = AttributeUnion & { unit?: AttributeUnit };\n\nexport type AttributeObject = {\n value: unknown;\n unit?: AttributeUnit;\n};\n\n// Unfortunately, we loose type safety if we did something like Exclude\n// so therefore we unionize between the three supported unit categories.\ntype AttributeUnit = DurationUnit | InformationUnit | FractionUnit;\n\n/* If an attribute has either a 'value' or 'unit' property, we use the ValidAttributeObject type. */\nexport type ValidatedAttributes = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof T]: T[K] extends { value: any } | { unit: any } ? AttributeObject : unknown;\n};\n\n/**\n * Type-guard: The attribute object has the shape the official attribute object (value, type, unit).\n * https://develop.sentry.dev/sdk/telemetry/scopes/#setting-attributes\n */\nexport function isAttributeObject(maybeObj: unknown): maybeObj is AttributeObject {\n return (\n typeof maybeObj === 'object' &&\n maybeObj != null &&\n !Array.isArray(maybeObj) &&\n Object.keys(maybeObj).includes('value')\n );\n}\n\n/**\n * Converts an attribute value to a typed attribute value.\n *\n * For now, we intentionally only support primitive values and attribute objects with primitive values.\n * If @param useFallback is true, we stringify non-primitive values to a string attribute value. Otherwise\n * we return `undefined` for unsupported values.\n *\n * @param value - The value of the passed attribute.\n * @param useFallback - If true, unsupported values will be stringified to a string attribute value.\n * Defaults to false. In this case, `undefined` is returned for unsupported values.\n * @returns The typed attribute.\n */\nexport function attributeValueToTypedAttributeValue(\n rawValue: unknown,\n useFallback?: boolean | 'skip-undefined',\n): TypedAttributeValue | void {\n const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: undefined };\n const attributeValue = getTypedAttributeValue(value);\n const checkedUnit = unit && typeof unit === 'string' ? { unit } : {};\n if (attributeValue) {\n return { ...attributeValue, ...checkedUnit };\n }\n\n if (!useFallback || (useFallback === 'skip-undefined' && value === undefined)) {\n return;\n }\n\n // Fallback: stringify the value\n // TODO(v11): be smarter here and use String constructor if stringify fails\n // (this is a breaking change for already existing attribute values)\n let stringValue = '';\n try {\n stringValue = JSON.stringify(value) ?? '';\n } catch {\n // Do nothing\n }\n return {\n value: stringValue,\n type: 'string',\n ...checkedUnit,\n };\n}\n\n/**\n * Serializes raw attributes to typed attributes as expected in our envelopes.\n *\n * @param attributes The raw attributes to serialize.\n * @param fallback If true, unsupported values will be stringified to a string attribute value.\n * Defaults to false. In this case, `undefined` is returned for unsupported values.\n *\n * @returns The serialized attributes.\n */\nexport function serializeAttributes(\n attributes: RawAttributes | undefined,\n fallback: boolean | 'skip-undefined' = false,\n): Attributes {\n const serializedAttributes: Attributes = {};\n for (const [key, value] of Object.entries(attributes ?? {})) {\n const typedValue = attributeValueToTypedAttributeValue(value, fallback);\n if (typedValue) {\n serializedAttributes[key] = typedValue;\n }\n }\n return serializedAttributes;\n}\n\n/**\n * NOTE: We intentionally do not return anything for non-primitive values:\n * - array support will come in the future but if we stringify arrays now,\n * sending arrays (unstringified) later will be a subtle breaking change.\n * - Objects are not supported yet and product support is still TBD.\n * - We still keep the type signature for TypedAttributeValue wider to avoid a\n * breaking change once we add support for non-primitive values.\n * - Once we go back to supporting arrays and stringifying all other values,\n * we already implemented the serialization logic here:\n * https://github.com/getsentry/sentry-javascript/pull/18165\n */\nfunction getTypedAttributeValue(value: unknown): TypedAttributeValue | void {\n const primitiveType =\n typeof value === 'string'\n ? 'string'\n : typeof value === 'boolean'\n ? 'boolean'\n : typeof value === 'number' && !Number.isNaN(value)\n ? Number.isInteger(value)\n ? 'integer'\n : 'double'\n : null;\n if (primitiveType) {\n // @ts-expect-error - TS complains because {@link TypedAttributeValue} is strictly typed to\n // avoid setting the wrong `type` on the attribute value.\n // In this case, getPrimitiveType already does the check but TS doesn't know that.\n // The \"clean\" alternative is to return an object per `typeof value` case\n // but that would require more bundle size\n // Therefore, we ignore it.\n return { value, type: primitiveType };\n }\n}\n","const SEQUENCE_ATTR_KEY = 'sentry.timestamp.sequence';\n\nlet _sequenceNumber = 0;\nlet _previousTimestampMs: number | undefined;\n\n/**\n * Returns the `sentry.timestamp.sequence` attribute entry for a serialized telemetry item.\n *\n * The sequence number starts at 0 and increments by 1 for each item captured.\n * It resets to 0 when the current item's integer millisecond timestamp differs\n * from the previous item's integer millisecond timestamp.\n *\n * @param timestampInSeconds - The timestamp of the telemetry item in seconds.\n */\nexport function getSequenceAttribute(timestampInSeconds: number): {\n key: string;\n value: { value: number; type: 'integer' };\n} {\n const nowMs = Math.floor(timestampInSeconds * 1000);\n\n if (_previousTimestampMs !== undefined && nowMs !== _previousTimestampMs) {\n _sequenceNumber = 0;\n }\n\n const value = _sequenceNumber;\n _sequenceNumber++;\n _previousTimestampMs = nowMs;\n\n return {\n key: SEQUENCE_ATTR_KEY,\n value: { value, type: 'integer' },\n };\n}\n\n/**\n * Resets the sequence number state. Only exported for testing purposes.\n */\nexport function _INTERNAL_resetSequenceNumber(): void {\n _sequenceNumber = 0;\n _previousTimestampMs = undefined;\n}\n","import type { Client } from '../client';\nimport { getTraceContextFromScope, withScope } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n} from '../tracing/dynamicSamplingContext';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { getActiveSpan, spanToTraceContext } from './spanUtils';\n\n/** Extract trace information from scope */\nexport function _getTraceInfoFromScope(\n client: Client,\n scope: Scope | undefined,\n): [dynamicSamplingContext: Partial | undefined, traceContext: TraceContext | undefined] {\n if (!scope) {\n return [undefined, undefined];\n }\n\n return withScope(scope, () => {\n const span = getActiveSpan();\n const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n const dynamicSamplingContext = span\n ? getDynamicSamplingContextFromSpan(span)\n : getDynamicSamplingContextFromScope(client, scope);\n return [dynamicSamplingContext, traceContext];\n });\n}\n","import type { LogSeverityLevel } from '../types-hoist/log';\n\n/**\n * Maps a log severity level to a log severity number.\n *\n * @see LogSeverityLevel\n */\nexport const SEVERITY_TEXT_TO_SEVERITY_NUMBER: Partial> = {\n trace: 1,\n debug: 5,\n info: 9,\n warn: 13,\n error: 17,\n fatal: 21,\n};\n","import type { DsnComponents } from '../types-hoist/dsn';\nimport type { LogContainerItem, LogEnvelope } from '../types-hoist/envelope';\nimport type { SerializedLog } from '../types-hoist/log';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\n\n/**\n * Creates a log container envelope item for a list of logs.\n *\n * @param items - The logs to include in the envelope.\n * @returns The created log container envelope item.\n */\nexport function createLogContainerEnvelopeItem(items: Array): LogContainerItem {\n return [\n {\n type: 'log',\n item_count: items.length,\n content_type: 'application/vnd.sentry.items.log+json',\n },\n {\n items,\n },\n ];\n}\n\n/**\n * Creates an envelope for a list of logs.\n *\n * Logs from multiple traces can be included in the same envelope.\n *\n * @param logs - The logs to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nexport function createLogEnvelope(\n logs: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): LogEnvelope {\n const headers: LogEnvelope[0] = {};\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n return createEnvelope(headers, [createLogContainerEnvelopeItem(logs)]);\n}\n","import { serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Log, SerializedLog } from '../types-hoist/log';\nimport { consoleSandbox, debug } from '../utils/debug-logger';\nimport { isParameterizedString } from '../utils/is';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { getSequenceAttribute } from '../utils/timestampSequence';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants';\nimport { createLogEnvelope } from './envelope';\n\nconst MAX_LOG_BUFFER_SIZE = 100;\n\n/**\n * Sets a log attribute if the value exists and the attribute key is not already present.\n *\n * @param logAttributes - The log attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setLogAttribute(\n logAttributes: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\n if (value && (!logAttributes[key] || setEvenIfPresent)) {\n logAttributes[key] = value;\n }\n}\n\n/**\n * Captures a serialized log event and adds it to the log buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedLog - The serialized log event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void {\n const bufferMap = _getBufferMap();\n const logBuffer = _INTERNAL_getLogBuffer(client);\n\n if (logBuffer === undefined) {\n bufferMap.set(client, [serializedLog]);\n } else {\n if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {\n _INTERNAL_flushLogsBuffer(client, logBuffer);\n bufferMap.set(client, [serializedLog]);\n } else {\n bufferMap.set(client, [...logBuffer, serializedLog]);\n }\n }\n}\n\n/**\n * Captures a log event and sends it to Sentry.\n *\n * @param log - The log event to capture.\n * @param scope - A scope. Uses the current scope if not provided.\n * @param client - A client. Uses the current client if not provided.\n * @param captureSerializedLog - A function to capture the serialized log.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureLog(\n beforeLog: Log,\n currentScope = getCurrentScope(),\n captureSerializedLog: (client: Client, log: SerializedLog) => void = _INTERNAL_captureSerializedLog,\n): void {\n const client = currentScope?.getClient() ?? getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No client available to capture log.');\n return;\n }\n\n const { release, environment, enableLogs = false, beforeSendLog } = client.getOptions();\n if (!enableLogs) {\n DEBUG_BUILD && debug.warn('logging option not enabled, log will not be captured.');\n return;\n }\n\n const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n\n const processedLogAttributes = {\n ...beforeLog.attributes,\n };\n\n const {\n user: { id, email, username },\n attributes: scopeAttributes = {},\n } = getCombinedScopeData(getIsolationScope(), currentScope);\n\n setLogAttribute(processedLogAttributes, 'user.id', id, false);\n setLogAttribute(processedLogAttributes, 'user.email', email, false);\n setLogAttribute(processedLogAttributes, 'user.name', username, false);\n\n setLogAttribute(processedLogAttributes, 'sentry.release', release);\n setLogAttribute(processedLogAttributes, 'sentry.environment', environment);\n\n const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n setLogAttribute(processedLogAttributes, 'sentry.sdk.name', name);\n setLogAttribute(processedLogAttributes, 'sentry.sdk.version', version);\n\n const replay = client.getIntegrationByName<\n Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\n }\n >('Replay');\n\n const replayId = replay?.getReplayId(true);\n setLogAttribute(processedLogAttributes, 'sentry.replay_id', replayId);\n\n if (replayId && replay?.getRecordingMode() === 'buffer') {\n // We send this so we can identify cases where the replayId is attached but the replay itself might not have been sent to Sentry\n setLogAttribute(processedLogAttributes, 'sentry._internal.replay_is_buffering', true);\n }\n\n const beforeLogMessage = beforeLog.message;\n if (isParameterizedString(beforeLogMessage)) {\n const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage;\n if (__sentry_template_values__?.length) {\n processedLogAttributes['sentry.message.template'] = __sentry_template_string__;\n }\n __sentry_template_values__.forEach((param, index) => {\n processedLogAttributes[`sentry.message.parameter.${index}`] = param;\n });\n }\n\n const span = _getSpanForScope(currentScope);\n // Add the parent span ID to the log attributes for trace context\n setLogAttribute(processedLogAttributes, 'sentry.trace.parent_span_id', span?.spanContext().spanId);\n\n const processedLog = { ...beforeLog, attributes: processedLogAttributes };\n\n client.emit('beforeCaptureLog', processedLog);\n\n // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog`\n const log = beforeSendLog ? consoleSandbox(() => beforeSendLog(processedLog)) : processedLog;\n if (!log) {\n client.recordDroppedEvent('before_send', 'log_item', 1);\n DEBUG_BUILD && debug.warn('beforeSendLog returned null, log will not be captured.');\n return;\n }\n\n const { level, message, attributes: logAttributes = {}, severityNumber } = log;\n\n const timestamp = timestampInSeconds();\n const sequenceAttr = getSequenceAttribute(timestamp);\n\n const serializedLog: SerializedLog = {\n timestamp,\n level,\n body: message,\n trace_id: traceContext?.trace_id,\n severity_number: severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER[level],\n attributes: {\n ...serializeAttributes(scopeAttributes),\n ...serializeAttributes(logAttributes, true),\n [sequenceAttr.key]: sequenceAttr.value,\n },\n };\n\n captureSerializedLog(client, serializedLog);\n\n client.emit('afterCaptureLog', log);\n}\n\n/**\n * Flushes the logs buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_flushLogsBuffer(client: Client, maybeLogBuffer?: Array): void {\n const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? [];\n if (logBuffer.length === 0) {\n return;\n }\n\n const clientOptions = client.getOptions();\n const envelope = createLogEnvelope(logBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n // Clear the log buffer after envelopes have been constructed.\n _getBufferMap().set(client, []);\n\n client.emit('flushLogs');\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the log buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the log buffer for.\n * @returns The log buffer for the given client.\n */\nexport function _INTERNAL_getLogBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\n // The reference to the Client <> LogBuffer map is stored on the carrier to ensure it's always the same\n return getGlobalSingleton('clientToLogBufferMap', () => new WeakMap>());\n}\n","import type { DsnComponents } from '../types-hoist/dsn';\nimport type { MetricContainerItem, MetricEnvelope } from '../types-hoist/envelope';\nimport type { SerializedMetric } from '../types-hoist/metric';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\n\n/**\n * Creates a metric container envelope item for a list of metrics.\n *\n * @param items - The metrics to include in the envelope.\n * @returns The created metric container envelope item.\n */\nexport function createMetricContainerEnvelopeItem(items: Array): MetricContainerItem {\n return [\n {\n type: 'trace_metric',\n item_count: items.length,\n content_type: 'application/vnd.sentry.items.trace-metric+json',\n } as MetricContainerItem[0],\n {\n items,\n },\n ];\n}\n\n/**\n * Creates an envelope for a list of metrics.\n *\n * Metrics from multiple traces can be included in the same envelope.\n *\n * @param metrics - The metrics to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nexport function createMetricEnvelope(\n metrics: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): MetricEnvelope {\n const headers: MetricEnvelope[0] = {};\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n return createEnvelope(headers, [createMetricContainerEnvelopeItem(metrics)]);\n}\n","import { type RawAttributes, serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Metric, SerializedMetric } from '../types-hoist/metric';\nimport type { User } from '../types-hoist/user';\nimport { debug } from '../utils/debug-logger';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { getSequenceAttribute } from '../utils/timestampSequence';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { createMetricEnvelope } from './envelope';\n\nconst MAX_METRIC_BUFFER_SIZE = 1000;\n\n/**\n * Sets a metric attribute if the value exists and the attribute key is not already present.\n *\n * @param metricAttributes - The metric attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setMetricAttribute(\n metricAttributes: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\n if (value && (setEvenIfPresent || !(key in metricAttributes))) {\n metricAttributes[key] = value;\n }\n}\n\n/**\n * Captures a serialized metric event and adds it to the metric buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedMetric - The serialized metric event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureSerializedMetric(client: Client, serializedMetric: SerializedMetric): void {\n const bufferMap = _getBufferMap();\n const metricBuffer = _INTERNAL_getMetricBuffer(client);\n\n if (metricBuffer === undefined) {\n bufferMap.set(client, [serializedMetric]);\n } else {\n if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) {\n _INTERNAL_flushMetricsBuffer(client, metricBuffer);\n bufferMap.set(client, [serializedMetric]);\n } else {\n bufferMap.set(client, [...metricBuffer, serializedMetric]);\n }\n }\n}\n\n/**\n * Options for capturing a metric internally.\n */\nexport interface InternalCaptureMetricOptions {\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n\n /**\n * A function to capture the serialized metric.\n */\n captureSerializedMetric?: (client: Client, metric: SerializedMetric) => void;\n}\n\n/**\n * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.)\n */\nfunction _enrichMetricAttributes(beforeMetric: Metric, client: Client, user: User): Metric {\n const { release, environment } = client.getOptions();\n\n const processedMetricAttributes = {\n ...beforeMetric.attributes,\n };\n\n // Add user attributes\n setMetricAttribute(processedMetricAttributes, 'user.id', user.id, false);\n setMetricAttribute(processedMetricAttributes, 'user.email', user.email, false);\n setMetricAttribute(processedMetricAttributes, 'user.name', user.username, false);\n\n // Add Sentry metadata\n setMetricAttribute(processedMetricAttributes, 'sentry.release', release);\n setMetricAttribute(processedMetricAttributes, 'sentry.environment', environment);\n\n // Add SDK metadata\n const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n setMetricAttribute(processedMetricAttributes, 'sentry.sdk.name', name);\n setMetricAttribute(processedMetricAttributes, 'sentry.sdk.version', version);\n\n // Add replay metadata\n const replay = client.getIntegrationByName<\n Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\n }\n >('Replay');\n\n const replayId = replay?.getReplayId(true);\n setMetricAttribute(processedMetricAttributes, 'sentry.replay_id', replayId);\n\n if (replayId && replay?.getRecordingMode() === 'buffer') {\n setMetricAttribute(processedMetricAttributes, 'sentry._internal.replay_is_buffering', true);\n }\n\n return {\n ...beforeMetric,\n attributes: processedMetricAttributes,\n };\n}\n\n/**\n * Creates a serialized metric ready to be sent to Sentry.\n */\nfunction _buildSerializedMetric(\n metric: Metric,\n client: Client,\n currentScope: Scope,\n scopeAttributes: RawAttributes> | undefined,\n): SerializedMetric {\n // Get trace context\n const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n const span = _getSpanForScope(currentScope);\n const traceId = span ? span.spanContext().traceId : traceContext?.trace_id;\n const spanId = span ? span.spanContext().spanId : undefined;\n\n const timestamp = timestampInSeconds();\n const sequenceAttr = getSequenceAttribute(timestamp);\n\n return {\n timestamp,\n trace_id: traceId ?? '',\n span_id: spanId,\n name: metric.name,\n type: metric.type,\n unit: metric.unit,\n value: metric.value,\n attributes: {\n ...serializeAttributes(scopeAttributes),\n ...serializeAttributes(metric.attributes, 'skip-undefined'),\n [sequenceAttr.key]: sequenceAttr.value,\n },\n };\n}\n\n/**\n * Captures a metric event and sends it to Sentry.\n *\n * @param metric - The metric event to capture.\n * @param options - Options for capturing the metric.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureMetric(beforeMetric: Metric, options?: InternalCaptureMetricOptions): void {\n const currentScope = options?.scope ?? getCurrentScope();\n const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric;\n const client = currentScope?.getClient() ?? getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No client available to capture metric.');\n return;\n }\n\n const { _experiments, enableMetrics, beforeSendMetric } = client.getOptions();\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const metricsEnabled = enableMetrics ?? _experiments?.enableMetrics ?? true;\n\n if (!metricsEnabled) {\n DEBUG_BUILD && debug.warn('metrics option not enabled, metric will not be captured.');\n return;\n }\n\n // Enrich metric with contextual attributes\n const { user, attributes: scopeAttributes } = getCombinedScopeData(getIsolationScope(), currentScope);\n const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user);\n\n client.emit('processMetric', enrichedMetric);\n\n // todo(v11): Remove the experimental `beforeSendMetric`\n // eslint-disable-next-line deprecation/deprecation\n const beforeSendCallback = beforeSendMetric || _experiments?.beforeSendMetric;\n const processedMetric = beforeSendCallback ? beforeSendCallback(enrichedMetric) : enrichedMetric;\n\n if (!processedMetric) {\n DEBUG_BUILD && debug.log('`beforeSendMetric` returned `null`, will not send metric.');\n return;\n }\n\n const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes);\n\n DEBUG_BUILD && debug.log('[Metric]', serializedMetric);\n\n captureSerializedMetric(client, serializedMetric);\n\n client.emit('afterCaptureMetric', processedMetric);\n}\n\n/**\n * Flushes the metrics buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_flushMetricsBuffer(client: Client, maybeMetricBuffer?: Array): void {\n const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? [];\n if (metricBuffer.length === 0) {\n return;\n }\n\n const clientOptions = client.getOptions();\n const envelope = createMetricEnvelope(metricBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n // Clear the metric buffer after envelopes have been constructed.\n _getBufferMap().set(client, []);\n\n client.emit('flushMetrics');\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the metric buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the metric buffer for.\n * @returns The metric buffer for the given client.\n */\nexport function _INTERNAL_getMetricBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\n // The reference to the Client <> MetricBuffer map is stored on the carrier to ensure it's always the same\n return getGlobalSingleton('clientToMetricBufferMap', () => new WeakMap>());\n}\n","/**\n * Calls `unref` on a timer, if the method is available on @param timer.\n *\n * `unref()` is used to allow processes to exit immediately, even if the timer\n * is still running and hasn't resolved yet.\n *\n * Use this in places where code can run on browser or server, since browsers\n * do not support `unref`.\n */\nexport function safeUnref(timer: ReturnType): ReturnType {\n if (typeof timer === 'object' && typeof timer.unref === 'function') {\n timer.unref();\n }\n return timer;\n}\n","import { rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\nimport { safeUnref } from './timer';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: PromiseLike[];\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\nexport const SENTRY_BUFFER_FULL_ERROR = Symbol.for('SentryBufferFullError');\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 */\nexport function makePromiseBuffer(limit: number = 100): PromiseBuffer {\n const buffer: Set> = new Set();\n\n function isReady(): boolean {\n return buffer.size < 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: PromiseLike): void {\n buffer.delete(task);\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: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR);\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n buffer.add(task);\n void task.then(\n () => remove(task),\n () => remove(task),\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?: number): PromiseLike {\n if (!buffer.size) {\n return resolvedSyncPromise(true);\n }\n\n // We want to resolve even if one of the promises rejects\n const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true);\n\n if (!timeout) {\n return drainPromise;\n }\n\n const promises = [\n drainPromise,\n new Promise(resolve => safeUnref(setTimeout(() => resolve(false), timeout))),\n ];\n\n return Promise.race(promises);\n }\n\n return {\n get $(): PromiseLike[] {\n return Array.from(buffer);\n },\n add,\n drain,\n };\n}\n","import type { DataCategory } from '../types-hoist/datacategory';\nimport type { TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { safeDateNow } from './randomSafeContext';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const 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 */\nexport function parseRetryAfterHeader(header: string, now: number = safeDateNow()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const 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 the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = safeDateNow()): boolean {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = safeDateNow(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers?.['x-sentry-rate-limits'];\n const retryAfterHeader = 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 * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5) as [string, ...string[]];\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\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","import { DEBUG_BUILD } from '../debug-build';\nimport type { EventDropReason } from '../types-hoist/clientreport';\nimport type { Envelope, EnvelopeItem } from '../types-hoist/envelope';\nimport type {\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport {\n createEnvelope,\n envelopeContainsItemType,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n serializeEnvelope,\n} from '../utils/envelope';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer';\nimport { isRateLimited, type RateLimits, updateRateLimits } from '../utils/ratelimit';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', dataCategory);\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 Promise.resolve({});\n }\n\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as (typeof envelope)[1]);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n // Don't record outcomes for client reports - we don't want to create a feedback loop if client reports themselves fail to send\n if (envelopeContainsItemType(filteredEnvelope, ['client_report'])) {\n DEBUG_BUILD && debug.warn(`Dropping client report. Will not send outcomes (reason: ${reason}).`);\n return;\n }\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n response => {\n // Handle 413 Content Too Large\n // Loss of envelope content is expected so we record a send_error client report\n // https://develop.sentry.dev/sdk/expected-features/#dealing-with-network-failures\n if (response.statusCode === 413) {\n DEBUG_BUILD &&\n debug.error(\n 'Sentry responded with status code 413. Envelope was discarded due to exceeding size limits.',\n );\n recordEnvelopeLoss('send_error');\n return response;\n }\n\n // We don't want to throw on NOK responses, but we want to at least log them\n if (\n DEBUG_BUILD &&\n response.statusCode !== undefined &&\n (response.statusCode < 200 || response.statusCode >= 300)\n ) {\n debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n DEBUG_BUILD && debug.error('Encountered error running transport request:', error);\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error === SENTRY_BUFFER_FULL_ERROR) {\n DEBUG_BUILD && debug.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return Promise.resolve({});\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n","import type { ClientReport } from '../types-hoist/clientreport';\nimport type { ClientReportEnvelope, ClientReportItem } from '../types-hoist/envelope';\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import type { Event } from '../types-hoist/event';\n\n/**\n * Get a list of possible event messages from a Sentry event.\n */\nexport function getPossibleEventMessages(event: Event): string[] {\n const possibleMessages: string[] = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n try {\n // @ts-expect-error Try catching to save bundle size\n const lastException = event.exception.values[event.exception.values.length - 1];\n if (lastException?.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n } catch {\n // ignore errors here\n }\n\n return possibleMessages;\n}\n","import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanJSON } from '../types-hoist/span';\n\n/**\n * Converts a transaction event to a span JSON object.\n */\nexport function convertTransactionEventToSpanJson(event: TransactionEvent): SpanJSON {\n const { trace_id, parent_span_id, span_id, status, origin, data, op } = event.contexts?.trace ?? {};\n\n return {\n data: data ?? {},\n description: event.transaction,\n op,\n parent_span_id,\n span_id: span_id ?? '',\n start_timestamp: event.start_timestamp ?? 0,\n status,\n timestamp: event.timestamp,\n trace_id: trace_id ?? '',\n origin,\n profile_id: data?.[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n measurements: event.measurements,\n is_segment: true,\n };\n}\n\n/**\n * Converts a span JSON object to a transaction event.\n */\nexport function convertSpanJsonToTransactionEvent(span: SpanJSON): TransactionEvent {\n return {\n type: 'transaction',\n timestamp: span.timestamp,\n start_timestamp: span.start_timestamp,\n transaction: span.description,\n contexts: {\n trace: {\n trace_id: span.trace_id,\n span_id: span.span_id,\n parent_span_id: span.parent_span_id,\n op: span.op,\n status: span.status,\n origin: span.origin,\n data: {\n ...span.data,\n ...(span.profile_id && { [SEMANTIC_ATTRIBUTE_PROFILE_ID]: span.profile_id }),\n ...(span.exclusive_time && { [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: span.exclusive_time }),\n },\n },\n },\n measurements: span.measurements,\n };\n}\n","/* eslint-disable max-lines */\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { getCurrentScope, getIsolationScope, getTraceContextFromScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations, setupIntegration, setupIntegrations } from './integration';\nimport { _INTERNAL_flushLogsBuffer } from './logs/internal';\nimport { _INTERNAL_flushMetricsBuffer } from './metrics/internal';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base';\nimport type { Breadcrumb, BreadcrumbHint, FetchBreadcrumbHint, XhrBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { CheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { EventDropReason, Outcome } from './types-hoist/clientreport';\nimport type { DataCategory } from './types-hoist/datacategory';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { DynamicSamplingContext, Envelope } from './types-hoist/envelope';\nimport type { ErrorEvent, Event, EventHint, EventType, TransactionEvent } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { FeedbackEvent } from './types-hoist/feedback';\nimport type { Integration } from './types-hoist/integration';\nimport type { Log } from './types-hoist/log';\nimport type { Metric } from './types-hoist/metric';\nimport type { Primitive } from './types-hoist/misc';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span, SpanAttributes, SpanContextData, SpanJSON } from './types-hoist/span';\nimport type { StartSpanOptions } from './types-hoist/startSpanOptions';\nimport type { Transport, TransportMakeRequestResponse } from './types-hoist/transport';\nimport { createClientReportEnvelope } from './utils/clientreport';\nimport { debug } from './utils/debug-logger';\nimport { dsnToString, makeDsn } from './utils/dsn';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope';\nimport { getPossibleEventMessages } from './utils/eventUtils';\nimport { isParameterizedString, isPlainObject, isPrimitive, isThenable } from './utils/is';\nimport { merge } from './utils/merge';\nimport { checkOrSetAlreadyCaught, uuid4 } from './utils/misc';\nimport { parseSampleRate } from './utils/parseSampleRate';\nimport { prepareEvent } from './utils/prepareEvent';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { reparentChildSpans, shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning } from './utils/spanUtils';\nimport { rejectedSyncPromise } from './utils/syncpromise';\nimport { safeUnref } from './utils/timer';\nimport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson } from './utils/transactionEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\nconst MISSING_RELEASE_FOR_SESSION_ERROR = 'Discarded session because of missing or non-string release';\n\nconst INTERNAL_ERROR_SYMBOL = Symbol.for('SentryInternalError');\nconst DO_NOT_SEND_EVENT_SYMBOL = Symbol.for('SentryDoNotSendEventError');\n\n// Default interval for flushing logs and metrics (5 seconds)\nconst DEFAULT_FLUSH_INTERVAL = 5000;\n\ninterface InternalError {\n message: string;\n [INTERNAL_ERROR_SYMBOL]: true;\n}\n\ninterface DoNotSendEventError {\n message: string;\n [DO_NOT_SEND_EVENT_SYMBOL]: true;\n}\n\nfunction _makeInternalError(message: string): InternalError {\n return {\n message,\n [INTERNAL_ERROR_SYMBOL]: true,\n };\n}\n\nfunction _makeDoNotSendEventError(message: string): DoNotSendEventError {\n return {\n message,\n [DO_NOT_SEND_EVENT_SYMBOL]: true,\n };\n}\n\nfunction _isInternalError(error: unknown): error is InternalError {\n return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error;\n}\n\nfunction _isDoNotSendEventError(error: unknown): error is DoNotSendEventError {\n return !!error && typeof error === 'object' && DO_NOT_SEND_EVENT_SYMBOL in error;\n}\n\n/**\n * Sets up weight-based flushing for logs or metrics.\n * This helper function encapsulates the common pattern of:\n * 1. Tracking accumulated weight of items\n * 2. Flushing when weight exceeds threshold (800KB)\n * 3. Flushing after timeout period from the first item\n *\n * Uses closure variables to track weight and timeout state.\n */\nfunction setupWeightBasedFlushing<\n T,\n AfterCaptureHook extends 'afterCaptureLog' | 'afterCaptureMetric',\n FlushHook extends 'flushLogs' | 'flushMetrics',\n>(\n client: Client,\n afterCaptureHook: AfterCaptureHook,\n flushHook: FlushHook,\n estimateSizeFn: (item: T) => number,\n flushFn: (client: Client) => void,\n): void {\n // Track weight and timeout in closure variables\n let weight = 0;\n let flushTimeout: ReturnType | undefined;\n let isTimerActive = false;\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(flushHook, () => {\n weight = 0;\n clearTimeout(flushTimeout);\n isTimerActive = false;\n });\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(afterCaptureHook, (item: T) => {\n weight += estimateSizeFn(item);\n\n // We flush the buffer if it exceeds 0.8 MB\n // The weight is a rough estimate, so we flush way before the payload gets too big.\n if (weight >= 800_000) {\n flushFn(client);\n } else if (!isTimerActive) {\n // Only start timer if one isn't already running.\n // This prevents flushing being delayed by items that arrive close to the timeout limit\n // and thus resetting the flushing timeout and delaying items being flushed.\n isTimerActive = true;\n // Use safeUnref so the timer doesn't prevent the process from exiting\n flushTimeout = safeUnref(\n setTimeout(() => {\n flushFn(client);\n // Note: isTimerActive is reset by the flushHook handler above, not here,\n // to avoid race conditions when new items arrive during the flush.\n }, DEFAULT_FLUSH_INTERVAL),\n );\n }\n });\n\n client.on('flush', () => {\n flushFn(client);\n });\n}\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 Client._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 Client {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex;\n\n /** Number of calls being processed */\n protected _numProcessing: number;\n\n protected _eventProcessors: EventProcessor[];\n\n /** Holds flushable */\n protected _outcomes: { [key: string]: number };\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n protected _hooks: Record>;\n\n protected _promiseBuffer: PromiseBuffer;\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n this._integrations = {};\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n this._promiseBuffer = makePromiseBuffer(options.transportOptions?.bufferSize ?? DEFAULT_TRANSPORT_BUFFER_SIZE);\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && debug.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(\n this._dsn,\n options.tunnel,\n options._metadata ? options._metadata.sdk : undefined,\n );\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n\n // Backfill enableLogs option from _experiments.enableLogs\n // TODO(v11): Remove or change default value\n // eslint-disable-next-line deprecation/deprecation\n this._options.enableLogs = this._options.enableLogs ?? this._options._experiments?.enableLogs;\n\n // Setup log flushing with weight and timeout tracking\n if (this._options.enableLogs) {\n setupWeightBasedFlushing(this, 'afterCaptureLog', 'flushLogs', estimateLogSizeInBytes, _INTERNAL_flushLogsBuffer);\n }\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const enableMetrics = this._options.enableMetrics ?? this._options._experiments?.enableMetrics ?? true;\n\n // Setup metric flushing with weight and timeout tracking\n if (enableMetrics) {\n setupWeightBasedFlushing(\n this,\n 'afterCaptureMetric',\n 'flushMetrics',\n estimateMetricSizeInBytes,\n _INTERNAL_flushMetricsBuffer,\n );\n }\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n this._process(\n () =>\n this.eventFromException(exception, hintWithEventId)\n .then(event => this._captureEvent(event, hintWithEventId, scope))\n .then(res => res),\n 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureMessage(\n message: ParameterizedString,\n level?: SeverityLevel,\n hint?: EventHint,\n currentScope?: Scope,\n ): string {\n const hintWithEventId = {\n event_id: uuid4(),\n ...hint,\n };\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n const isMessage = isPrimitive(message);\n const promisedEvent = isMessage\n ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n : this.eventFromException(message, hintWithEventId);\n\n this._process(\n () => promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)),\n isMessage ? 'unknown' : 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a manually created event and sends it to Sentry.\n *\n * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureEvent(event: Event, hint?: EventHint, currentScope?: Scope): string {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (hint?.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n const dataCategory = getDataCategoryByType(event.type);\n\n this._process(\n () => this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope),\n dataCategory,\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a session.\n */\n public captureSession(session: Session): void {\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 * Create a cron monitor check in and send it to Sentry. This method is not available on all clients.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n * @param scope An optional scope containing event metadata.\n * @returns A string representing the id of the check in.\n */\n public captureCheckIn?(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string;\n\n /**\n * Get the current Dsn.\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * Get the current options.\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * Get the SDK metadata.\n * @see SdkMetadata\n */\n public getSdkMetadata(): SdkMetadata | undefined {\n return this._options._metadata;\n }\n\n /**\n * Returns the transport that is used by the client.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * Wait for all events to be sent or the timeout to expire, whichever comes first.\n *\n * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will\n * cause the client to wait until all events are sent before resolving the promise.\n * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are\n * still events in the queue when the timeout is reached.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (!transport) {\n return true;\n }\n\n this.emit('flush');\n\n const clientFinished = await this._isClientDoneProcessing(timeout);\n const transportFlushed = await transport.flush(timeout);\n\n return clientFinished && transportFlushed;\n }\n\n /**\n * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}.\n *\n * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause\n * the client to wait until all events are sent before disabling itself.\n * @returns {Promise} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if\n * it doesn't.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async close(timeout?: number): PromiseLike {\n _INTERNAL_flushLogsBuffer(this);\n const result = await this.flush(timeout);\n this.getOptions().enabled = false;\n this.emit('close');\n return result;\n }\n\n /**\n * Get all installed event processors.\n */\n public getEventProcessors(): EventProcessor[] {\n return this._eventProcessors;\n }\n\n /**\n * Adds an event processor that applies to any event processed by this client.\n */\n public addEventProcessor(eventProcessor: EventProcessor): void {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * Initialize this client.\n * Call this after the client was set on a scope.\n */\n public init(): void {\n if (\n this._isEnabled() ||\n // Force integrations to be setup even if no DSN was set when we have\n // Spotlight enabled. This is particularly important for browser as we\n // don't support the `spotlight` option there and rely on the users\n // adding the `spotlightBrowserIntegration()` to their integrations which\n // wouldn't get initialized with the check below when there's no DSN set.\n this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n ) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed.\n */\n public getIntegrationByName(integrationName: string): T | undefined {\n return this._integrations[integrationName] as T | undefined;\n }\n\n /**\n * Add an integration to the client.\n * This can be used to e.g. lazy load integrations.\n * In most cases, this should not be necessary,\n * and you're better off just passing the integrations via `integrations: []` at initialization time.\n * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so.\n */\n public addIntegration(integration: Integration): void {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * Send a fully prepared event to Sentry.\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n }\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env).then(sendResponse => this.emit('afterSendEvent', event, sendResponse));\n }\n\n /**\n * Send a session or session aggregrates to Sentry.\n */\n public sendSession(session: Session | SessionAggregates): void {\n // Backfill release and environment on session\n const { release: clientReleaseOption, environment: clientEnvironmentOption = DEFAULT_ENVIRONMENT } = this._options;\n if ('aggregates' in session) {\n const sessionAttrs = session.attrs || {};\n if (!sessionAttrs.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n sessionAttrs.release = sessionAttrs.release || clientReleaseOption;\n sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption;\n session.attrs = sessionAttrs;\n } else {\n if (!session.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n session.release = session.release || clientReleaseOption;\n session.environment = session.environment || clientEnvironmentOption;\n }\n\n this.emit('beforeSendSession', session);\n\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env);\n }\n\n /**\n * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry).\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory, count: number = 1): void {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) 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 const key = `${reason}:${category}`;\n DEBUG_BUILD && debug.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n /* eslint-disable @typescript-eslint/unified-signatures */\n /**\n * Register a callback for whenever a span is started.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'spanStart', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback before span sampling runs. Receives a `samplingDecision` object argument with a `decision`\n * property that can be used to make a sampling decision that will be enforced, before any span sampling runs.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSampling',\n callback: (\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ) => void,\n ): void;\n\n /**\n * Register a callback for after a span is ended.\n * NOTE: The span cannot be mutated anymore in this callback.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'spanEnd', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for when an idle span is allowed to auto-finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'idleSpanEnableAutoFinish', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for transaction start and finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): () => void;\n\n /**\n * Register a callback that runs when stack frame metadata should be applied to an event.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'applyFrameMetadata', callback: (event: Event) => void): () => void;\n\n /**\n * Register a callback for before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for before sending a session or session aggregrates..\n * Receives the session/aggregate as second argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendSession', callback: (session: Session | SessionAggregates) => void): () => void;\n\n /**\n * Register a callback for preprocessing an event,\n * before it is passed to (global) event processors.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for postprocessing an event,\n * after it was passed to (global) event processors, before it is being sent.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'postprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for when an event has been sent.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse) => void,\n ): () => void;\n\n /**\n * Register a callback before a breadcrumb is added.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): () => void;\n\n /**\n * Register a callback when a DSC (Dynamic Sampling Context) is created.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext, rootSpan?: Span) => void): () => void;\n\n /**\n * Register a callback when a Feedback event has been prepared.\n * This should be used to mutate the event. The options argument can hint\n * about what kind of mutation it expects.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSendFeedback',\n callback: (feedback: FeedbackEvent, options?: { includeReplay?: boolean }) => void,\n ): () => void;\n\n /**\n * Register a callback when the feedback widget is opened in a user's browser\n */\n public on(hook: 'openFeedbackWidget', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger a span start for a page load.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startPageLoadSpan',\n callback: (\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ) => void,\n ): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger the end of a page load span.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'endPageloadSpan', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger after the pageload span was started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterStartPageLoadSpan', callback: (span: Span) => void): () => void;\n\n /**\n * A hook for triggering right before a navigation span is started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeStartNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for browser tracing integrations to trigger a span for a navigation.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a span with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestSpan',\n callback: (span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a breadcrumb with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestBreadcrumb',\n callback: (breadcrumb: Breadcrumb, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook that is called when the client is flushing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flush', callback: () => void): () => void;\n\n /**\n * A hook that is called when the client is closing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'close', callback: () => void): () => void;\n\n /**\n * A hook that is called before a log is captured. This hooks runs before `beforeSendLog` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called after a log is captured\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing logs\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushLogs', callback: () => void): () => void;\n\n /**\n * A hook that is called after capturing a metric. This hooks runs after `beforeSendMetric` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing metrics\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushMetrics', callback: () => void): () => void;\n\n /**\n * A hook that is called when a metric is processed before it is captured and before the `beforeSendMetric` callback is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'processMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'httpServerRequest',\n callback: (request: unknown, response: unknown, normalizedRequest: RequestEventData) => void,\n ): () => void;\n\n /**\n * A hook that is called when the UI Profiler should start profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.startProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'startUIProfiler', callback: () => void): () => void;\n\n /**\n * A hook that is called when the UI Profiler should stop profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.stopProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'stopUIProfiler', callback: () => void): () => void;\n\n /**\n * Register a hook on this client.\n */\n public on(hook: string, callback: unknown): () => void {\n const hookCallbacks = (this._hooks[hook] = this._hooks[hook] || new Set());\n\n // Wrap the callback in a function so that registering the same callback instance multiple\n // times results in the callback being called multiple times.\n // @ts-expect-error - The `callback` type is correct and must be a function due to the\n // individual, specific overloads of this function.\n // eslint-disable-next-line @typescript-eslint/ban-types\n const uniqueCallback: Function = (...args: unknown[]) => callback(...args);\n\n hookCallbacks.add(uniqueCallback);\n\n // This function returns a callback execution handler that, when invoked,\n // deregisters a callback. This is crucial for managing instances where callbacks\n // need to be unregistered to prevent self-referencing in callback closures,\n // ensuring proper garbage collection.\n return () => {\n hookCallbacks.delete(uniqueCallback);\n };\n }\n\n /** Fire a hook whenever a span starts. */\n public emit(hook: 'spanStart', span: Span): void;\n\n /** A hook that is called every time before a span is sampled. */\n public emit(\n hook: 'beforeSampling',\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ): void;\n\n /** Fire a hook whenever a span ends. */\n public emit(hook: 'spanEnd', span: Span): void;\n\n /**\n * Fire a hook indicating that an idle span is allowed to auto finish.\n */\n public emit(hook: 'idleSpanEnableAutoFinish', span: Span): void;\n\n /**\n * Fire a hook event for envelope creation and sending. Expects to be given an envelope as the\n * second argument.\n */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /**\n * Fire a hook indicating that stack frame metadata should be applied to the event passed to the hook.\n */\n public emit(hook: 'applyFrameMetadata', event: Event): void;\n\n /**\n * Fire a hook event before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event before sending a session/aggregates.\n * Expects to be given the prepared session/aggregates as second argument.\n */\n public emit(hook: 'beforeSendSession', session: Session | SessionAggregates): void;\n\n /**\n * Fire a hook event to process events before they are passed to (global) event processors.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event to process a user on an event before it is sent to Sentry, after all other processors have run.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'postprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event after sending an event. Expects to be given an Event as the\n * second argument.\n */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse): void;\n\n /**\n * Fire a hook for when a breadcrumb is added. Expects the breadcrumb as second argument.\n */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /**\n * Fire a hook for when a DSC (Dynamic Sampling Context) is created. Expects the DSC as second argument.\n */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext, rootSpan?: Span): void;\n\n /**\n * Fire a hook event for after preparing a feedback event. Events to be given\n * a feedback event as the second argument, and an optional options object as\n * third argument.\n */\n public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay?: boolean }): void;\n\n /**\n * Fire a hook event for when the feedback widget is opened in a user's browser\n */\n public emit(hook: 'openFeedbackWidget'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span start for a page load.\n */\n public emit(\n hook: 'startPageLoadSpan',\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger the end of a page load span.\n */\n public emit(hook: 'endPageloadSpan'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger aafter the pageload span was started.\n */\n public emit(hook: 'afterStartPageLoadSpan', span: Span): void;\n\n /**\n * Emit a hook event for triggering right before a navigation span is started.\n */\n public emit(\n hook: 'beforeStartNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span for a navigation.\n */\n public emit(\n hook: 'startNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a span with request data.\n */\n public emit(hook: 'beforeOutgoingRequestSpan', span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a breadcrumb with request data.\n */\n public emit(\n hook: 'beforeOutgoingRequestBreadcrumb',\n breadcrumb: Breadcrumb,\n hint: XhrBreadcrumbHint | FetchBreadcrumbHint,\n ): void;\n\n /**\n * Emit a hook event for client flush\n */\n public emit(hook: 'flush'): void;\n\n /**\n * Emit a hook event for client close\n */\n public emit(hook: 'close'): void;\n\n /**\n * Emit a hook event for client before capturing a log. This hooks runs before `beforeSendLog` is fired.\n */\n public emit(hook: 'beforeCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client after capturing a log.\n */\n public emit(hook: 'afterCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client flush logs\n */\n public emit(hook: 'flushLogs'): void;\n\n /**\n * Emit a hook event for client after capturing a metric.\n */\n public emit(hook: 'afterCaptureMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client flush metrics\n */\n public emit(hook: 'flushMetrics'): void;\n\n /**\n *\n * Emit a hook event for client to process a metric before it is captured.\n * This hook is called before the `beforeSendMetric` callback is fired.\n */\n public emit(hook: 'processMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n */\n public emit(\n hook: 'httpServerRequest',\n request: unknown,\n response: unknown,\n normalizedRequest: RequestEventData,\n ): void;\n\n /**\n * Emit a hook event for starting the UI Profiler.\n */\n public emit(hook: 'startUIProfiler'): void;\n\n /**\n * Emit a hook event for stopping the UI Profiler.\n */\n public emit(hook: 'stopUIProfiler'): void;\n\n /**\n * Emit a hook that was previously registered via `on()`.\n */\n public emit(hook: string, ...rest: unknown[]): void {\n const callbacks = this._hooks[hook];\n if (callbacks) {\n callbacks.forEach(callback => callback(...rest));\n }\n }\n\n /**\n * Send an envelope to Sentry.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async sendEnvelope(envelope: Envelope): PromiseLike {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n try {\n return await this._transport.send(envelope);\n } catch (reason) {\n DEBUG_BUILD && debug.error('Error while sending envelope:', reason);\n return {};\n }\n }\n\n DEBUG_BUILD && debug.error('Transport disabled');\n return {};\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * Subclasses should override this method to clean up their own resources.\n * After calling dispose(), the client should not be used anymore.\n */\n public dispose(): void {\n // Base class has no cleanup logic - subclasses implement their own\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n protected _setupIntegrations(): void {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n // initially, set `crashed` based on the event level and update from exceptions if there are any later on\n let crashed = event.level === 'fatal';\n let errored = false;\n const exceptions = event.exception?.values;\n\n if (exceptions) {\n errored = true;\n // reset crashed to false if there are exceptions, to ensure `mechanism.handled` is respected.\n crashed = false;\n\n for (const ex of exceptions) {\n if (ex.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 const sessionNonTerminal = session.status === 'ok';\n const 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 protected async _isClientDoneProcessing(timeout?: number): Promise {\n let ticked = 0;\n\n while (!timeout || ticked < timeout) {\n await new Promise(resolve => setTimeout(resolve, 1));\n\n if (!this._numProcessing) {\n return true;\n }\n ticked++;\n }\n\n return false;\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._transport !== 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 currentScope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations?.length) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n if (!event.type) {\n isolationScope.setLastEventId(event.event_id || hint.event_id);\n }\n\n return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n this.emit('postprocessEvent', evt, hint);\n\n evt.contexts = {\n trace: { ...evt.contexts?.trace, ...getTraceContextFromScope(currentScope) },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n\n return evt;\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 protected _captureEvent(\n event: Event,\n hint: EventHint = {},\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ): PromiseLike {\n if (DEBUG_BUILD && isErrorEvent(event)) {\n debug.log(`Captured error event \\`${getPossibleEventMessages(event)[0] || ''}\\``);\n }\n\n return this._processEvent(event, hint, currentScope, isolationScope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n if (_isDoNotSendEventError(reason)) {\n debug.log(reason.message);\n } else if (_isInternalError(reason)) {\n debug.warn(reason.message);\n } else {\n debug.warn(reason);\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 currentScope 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 protected _processEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n if (isError && typeof parsedSampleRate === 'number' && safeMathRandom() > parsedSampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n _makeDoNotSendEventError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n const dataCategory = getDataCategoryByType(event.type);\n\n return this._prepareEvent(event, hint, currentScope, isolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory);\n throw _makeDoNotSendEventError('An event processor returned `null`, will not send event.');\n }\n\n const isInternalException = (hint.data as { __sentry__: boolean })?.__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(this, options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw _makeDoNotSendEventError(`${beforeSendLabel} returned \\`null\\`, will not send event.`);\n }\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (isError && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore = processedEvent.sdkProcessingMetadata?.spanCountBeforeProcessing || 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (_isDoNotSendEventError(reason) || _isInternalError(reason)) {\n throw reason;\n }\n\n this.captureException(reason, {\n mechanism: {\n handled: false,\n type: 'internal',\n },\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw _makeInternalError(\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 protected _process(taskProducer: () => PromiseLike, dataCategory: DataCategory): void {\n this._numProcessing++;\n\n void this._promiseBuffer.add(taskProducer).then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n\n if (reason === SENTRY_BUFFER_FULL_ERROR) {\n this.recordDroppedEvent('queue_overflow', dataCategory);\n }\n\n return reason;\n },\n );\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n protected _flushOutcomes(): void {\n DEBUG_BUILD && debug.log('Flushing outcomes...');\n\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && debug.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && debug.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && debug.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n */\n public abstract eventFromException(_exception: unknown, _hint?: EventHint): PromiseLike;\n\n /**\n * Creates an {@link Event} from primitive inputs to `captureMessage`.\n */\n public abstract eventFromMessage(\n _message: ParameterizedString,\n _level?: SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\nfunction getDataCategoryByType(type: EventType | 'replay_event' | undefined): DataCategory {\n return type === 'replay_event' ? 'replay' : type || 'error';\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike | Event | null,\n beforeSendLabel: string,\n): PromiseLike | Event | null {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return event;\n },\n e => {\n throw _makeInternalError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n client: Client,\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike | Event | null {\n const { beforeSend, beforeSendTransaction, beforeSendSpan, ignoreSpans } = options;\n let processedEvent = event;\n\n if (isErrorEvent(processedEvent) && beforeSend) {\n return beforeSend(processedEvent, hint);\n }\n\n if (isTransactionEvent(processedEvent)) {\n // Avoid processing if we don't have to\n if (beforeSendSpan || ignoreSpans) {\n // 1. Process root span\n const rootSpanJson = convertTransactionEventToSpanJson(processedEvent);\n\n // 1.1 If the root span should be ignored, drop the whole transaction\n if (ignoreSpans?.length && shouldIgnoreSpan(rootSpanJson, ignoreSpans)) {\n // dropping the whole transaction!\n return null;\n }\n\n // 1.2 If a `beforeSendSpan` callback is defined, process the root span\n if (beforeSendSpan) {\n const processedRootSpanJson = beforeSendSpan(rootSpanJson);\n if (!processedRootSpanJson) {\n showSpanDropWarning();\n } else {\n // update event with processed root span values\n processedEvent = merge(event, convertSpanJsonToTransactionEvent(processedRootSpanJson));\n }\n }\n\n // 2. Process child spans\n if (processedEvent.spans) {\n const processedSpans: SpanJSON[] = [];\n\n const initialSpans = processedEvent.spans;\n\n for (const span of initialSpans) {\n // 2.a If the child span should be ignored, reparent it to the root span\n if (ignoreSpans?.length && shouldIgnoreSpan(span, ignoreSpans)) {\n reparentChildSpans(initialSpans, span);\n continue;\n }\n\n // 2.b If a `beforeSendSpan` callback is defined, process the child span\n if (beforeSendSpan) {\n const processedSpan = beforeSendSpan(span);\n if (!processedSpan) {\n showSpanDropWarning();\n processedSpans.push(span);\n } else {\n processedSpans.push(processedSpan);\n }\n } else {\n processedSpans.push(span);\n }\n }\n\n const droppedSpans = processedEvent.spans.length - processedSpans.length;\n if (droppedSpans) {\n client.recordDroppedEvent('before_send', 'span', droppedSpans);\n }\n\n processedEvent.spans = processedSpans;\n }\n }\n\n if (beforeSendTransaction) {\n if (processedEvent.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = processedEvent.spans.length;\n processedEvent.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(processedEvent as TransactionEvent, hint);\n }\n }\n\n return processedEvent;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n\n/**\n * Estimate the size of a metric in bytes.\n *\n * @param metric - The metric to estimate the size of.\n * @returns The estimated size of the metric in bytes.\n */\nfunction estimateMetricSizeInBytes(metric: Metric): number {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (metric.name) {\n weight += metric.name.length * 2;\n }\n\n // Add weight for number\n weight += 8;\n\n return weight + estimateAttributesSizeInBytes(metric.attributes);\n}\n\n/**\n * Estimate the size of a log in bytes.\n *\n * @param log - The log to estimate the size of.\n * @returns The estimated size of the log in bytes.\n */\nfunction estimateLogSizeInBytes(log: Log): number {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (log.message) {\n weight += log.message.length * 2;\n }\n\n return weight + estimateAttributesSizeInBytes(log.attributes);\n}\n\n/**\n * Estimate the size of attributes in bytes.\n *\n * @param attributes - The attributes object to estimate the size of.\n * @returns The estimated size of the attributes in bytes.\n */\nfunction estimateAttributesSizeInBytes(attributes: Record | undefined): number {\n if (!attributes) {\n return 0;\n }\n\n let weight = 0;\n\n Object.values(attributes).forEach(value => {\n if (Array.isArray(value)) {\n weight += value.length * estimatePrimitiveSizeInBytes(value[0]);\n } else if (isPrimitive(value)) {\n weight += estimatePrimitiveSizeInBytes(value);\n } else {\n // For objects values, we estimate the size of the object as 100 bytes\n weight += 100;\n }\n });\n\n return weight;\n}\n\nfunction estimatePrimitiveSizeInBytes(value: Primitive): number {\n if (typeof value === 'string') {\n return value.length * 2;\n } else if (typeof value === 'number') {\n return 8;\n } else if (typeof value === 'boolean') {\n return 4;\n }\n\n return 0;\n}\n","import type { SerializedCheckIn } from './types-hoist/checkin';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { CheckInEnvelope, CheckInItem, DynamicSamplingContext } from './types-hoist/envelope';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport { dsnToString } from './utils/dsn';\nimport { createEnvelope } from './utils/envelope';\n\n/**\n * Create envelope from check in item.\n */\nexport function createCheckInEnvelope(\n checkIn: SerializedCheckIn,\n dynamicSamplingContext?: Partial,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): CheckInEnvelope {\n const headers: CheckInEnvelope[0] = {\n sent_at: new Date().toISOString(),\n };\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n if (dynamicSamplingContext) {\n headers.trace = dynamicSamplingContext as DynamicSamplingContext;\n }\n\n const item = createCheckInEnvelopeItem(checkIn);\n return createEnvelope(headers, [item]);\n}\n\nfunction createCheckInEnvelopeItem(checkIn: SerializedCheckIn): CheckInItem {\n const checkInHeaders: CheckInItem[0] = {\n type: 'check_in',\n };\n return [checkInHeaders, checkIn];\n}\n","import type { ClientOptions } from '../types-hoist/options';\n\n/**\n * Takes the SDK metadata and adds the user-agent header to the transport options.\n * This ensures that the SDK sends the user-agent header with SDK name and version to\n * all requests made by the transport.\n *\n * @see https://develop.sentry.dev/sdk/overview/#user-agent\n */\nexport function addUserAgentToTransportHeaders(options: ClientOptions): void {\n const sdkMetadata = options._metadata?.sdk;\n const sdkUserAgent =\n sdkMetadata?.name && sdkMetadata?.version ? `${sdkMetadata?.name}/${sdkMetadata?.version}` : undefined;\n\n options.transportOptions = {\n ...options.transportOptions,\n headers: {\n ...(sdkUserAgent && { 'user-agent': sdkUserAgent }),\n ...options.transportOptions?.headers,\n },\n };\n}\n","import type { Client } from '../client';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Extras } from '../types-hoist/extra';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { SeverityLevel } from '../types-hoist/severity';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isError, isErrorEvent, isParameterizedString, isPlainObject } from './is';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc';\nimport { normalizeToSize } from './normalize';\nimport { extractExceptionKeysForMessage } from './object';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nexport function parseStackFrames(stackParser: StackParser, error: Error): StackFrame[] {\n return stackParser(error.stack || '', 1);\n}\n\nfunction hasSentryFetchUrlHost(error: unknown): error is Error & { __sentry_fetch_url_host__: string } {\n return isError(error) && '__sentry_fetch_url_host__' in error && typeof error.__sentry_fetch_url_host__ === 'string';\n}\n\n/**\n * Enhances the error message with the hostname for better Sentry error reporting.\n * This allows third-party packages to still match on the original error message,\n * while Sentry gets the enhanced version with context.\n *\n * Only used internally\n * @hidden\n */\nexport function _enhanceErrorWithSentryInfo(error: T): string {\n // If the error has a __sentry_fetch_url_host__ property (added by fetch instrumentation),\n // enhance the error message with the hostname.\n if (hasSentryFetchUrlHost(error)) {\n return `${error.message} (${error.__sentry_fetch_url_host__})`;\n }\n\n return error.message;\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nexport function exceptionFromError(stackParser: StackParser, error: Error): Exception {\n const exception: Exception = {\n type: error.name || error.constructor.name,\n value: _enhanceErrorWithSentryInfo(error),\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj: Record): Error | undefined {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (value instanceof Error) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nfunction getMessageForObject(exception: Record): string {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n }\n\n const keys = extractExceptionKeysForMessage(exception);\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as exception with message \\`${exception.message}\\``;\n }\n\n const className = getObjectClassName(exception);\n\n return `${\n className && className !== 'Object' ? `'${className}'` : 'Object'\n } captured as exception with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n try {\n const prototype: unknown | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\nfunction getException(\n client: Client,\n mechanism: Mechanism,\n exception: unknown,\n hint?: EventHint,\n): [Error, Extras | undefined] {\n if (isError(exception)) {\n return [exception, undefined];\n }\n\n // Mutate this!\n mechanism.synthetic = true;\n\n if (isPlainObject(exception)) {\n const normalizeDepth = client?.getOptions().normalizeDepth;\n const extras = { ['__serialized__']: normalizeToSize(exception, normalizeDepth) };\n\n const errorFromProp = getErrorPropertyFromObject(exception);\n if (errorFromProp) {\n return [errorFromProp, extras];\n }\n\n const message = getMessageForObject(exception);\n const ex = hint?.syntheticException || new Error(message);\n ex.message = message;\n\n return [ex, extras];\n }\n\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n const ex = hint?.syntheticException || new Error(exception as string);\n ex.message = `${exception}`;\n\n return [ex, undefined];\n}\n\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromUnknownInput(\n client: Client,\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n): Event {\n const providedMechanism: Mechanism | undefined = hint?.data && (hint.data as { mechanism: Mechanism }).mechanism;\n const mechanism: Mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n const [ex, extras] = getException(client, mechanism, exception, hint);\n\n const event: Event = {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint?.event_id,\n };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n event_id: hint?.event_id,\n level,\n };\n\n if (attachStacktrace && hint?.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n addExceptionMechanism(event, { synthetic: true });\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n","import { createCheckInEnvelope } from './checkin';\nimport { Client } from './client';\nimport { getIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Scope } from './scope';\nimport { registerSpanErrorInstrumentation } from './tracing';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base';\nimport { addUserAgentToTransportHeaders } from './transports/userAgent';\nimport type { CheckIn, MonitorConfig, SerializedCheckIn } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { BaseTransportOptions, Transport } from './types-hoist/transport';\nimport { debug } from './utils/debug-logger';\nimport { eventFromMessage, eventFromUnknownInput } from './utils/eventbuilder';\nimport { uuid4 } from './utils/misc';\nimport { makePromiseBuffer } from './utils/promisebuffer';\nimport { resolvedSyncPromise } from './utils/syncpromise';\nimport { _getTraceInfoFromScope } from './utils/trace-info';\n\nexport interface ServerRuntimeClientOptions extends ClientOptions {\n platform?: string;\n runtime?: { name: string; version?: string };\n serverName?: string;\n}\n\n/**\n * The Sentry Server Runtime Client SDK.\n */\nexport class ServerRuntimeClient<\n O extends ClientOptions & ServerRuntimeClientOptions = ServerRuntimeClientOptions,\n> extends Client {\n /**\n * Creates a new Edge SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: O) {\n // Server clients always support tracing\n registerSpanErrorInstrumentation();\n\n addUserAgentToTransportHeaders(options);\n\n super(options);\n\n this._setUpMetricsProcessing();\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n const event = eventFromUnknownInput(this, this._options.stackParser, exception, hint);\n event.level = 'error';\n\n return resolvedSyncPromise(event);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return resolvedSyncPromise(\n eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace),\n );\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\n setCurrentRequestSessionErroredOrCrashed(hint);\n return super.captureException(exception, hint, scope);\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string {\n // If the event is of type Exception, then a request session should be captured\n const isException = !event.type && event.exception?.values && event.exception.values.length > 0;\n if (isException) {\n setCurrentRequestSessionErroredOrCrashed(hint);\n }\n\n return super.captureEvent(event, hint, scope);\n }\n\n /**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\n public captureCheckIn(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string {\n const id = 'checkInId' in checkIn && checkIn.checkInId ? checkIn.checkInId : uuid4();\n if (!this._isEnabled()) {\n DEBUG_BUILD && debug.warn('SDK not enabled, will not capture check-in.');\n return id;\n }\n\n const options = this.getOptions();\n const { release, environment, tunnel } = options;\n\n const serializedCheckIn: SerializedCheckIn = {\n check_in_id: id,\n monitor_slug: checkIn.monitorSlug,\n status: checkIn.status,\n release,\n environment,\n };\n\n if ('duration' in checkIn) {\n serializedCheckIn.duration = checkIn.duration;\n }\n\n if (monitorConfig) {\n serializedCheckIn.monitor_config = {\n schedule: monitorConfig.schedule,\n checkin_margin: monitorConfig.checkinMargin,\n max_runtime: monitorConfig.maxRuntime,\n timezone: monitorConfig.timezone,\n failure_issue_threshold: monitorConfig.failureIssueThreshold,\n recovery_threshold: monitorConfig.recoveryThreshold,\n };\n }\n\n const [dynamicSamplingContext, traceContext] = _getTraceInfoFromScope(this, scope);\n if (traceContext) {\n serializedCheckIn.contexts = {\n trace: traceContext,\n };\n }\n\n const envelope = createCheckInEnvelope(\n serializedCheckIn,\n dynamicSamplingContext,\n this.getSdkMetadata(),\n tunnel,\n this.getDsn(),\n );\n\n DEBUG_BUILD && debug.log('Sending checkin:', checkIn.monitorSlug, checkIn.status);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n\n return id;\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * This method clears all internal state to allow the client to be garbage collected.\n * It clears hooks, event processors, integrations, transport, and other internal references.\n *\n * Call this method after flushing to allow the client to be garbage collected.\n * After calling dispose(), the client should not be used anymore.\n *\n * Subclasses should override this method to clean up their own resources and call `super.dispose()`.\n */\n public override dispose(): void {\n DEBUG_BUILD && debug.log('Disposing client...');\n\n for (const hookName of Object.keys(this._hooks)) {\n this._hooks[hookName]?.clear();\n }\n\n this._hooks = {};\n this._eventProcessors.length = 0;\n this._integrations = {};\n this._outcomes = {};\n (this as unknown as { _transport?: Transport })._transport = undefined;\n this._promiseBuffer = makePromiseBuffer(DEFAULT_TRANSPORT_BUFFER_SIZE);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n if (this._options.platform) {\n event.platform = event.platform || this._options.platform;\n }\n\n if (this._options.runtime) {\n event.contexts = {\n ...event.contexts,\n runtime: event.contexts?.runtime || this._options.runtime,\n };\n }\n\n if (this._options.serverName) {\n event.server_name = event.server_name || this._options.serverName;\n }\n\n return super._prepareEvent(event, hint, currentScope, isolationScope);\n }\n\n /**\n * Process a server-side metric before it is captured.\n */\n private _setUpMetricsProcessing(): void {\n this.on('processMetric', metric => {\n if (this._options.serverName) {\n metric.attributes = {\n 'server.address': this._options.serverName,\n ...metric.attributes,\n };\n }\n });\n }\n}\n\nfunction setCurrentRequestSessionErroredOrCrashed(eventHint?: EventHint): void {\n const requestSession = getIsolationScope().getScopeData().sdkProcessingMetadata.requestSession;\n if (requestSession) {\n // We mutate instead of doing `setSdkProcessingMetadata` because the http integration stores away a particular\n // isolationScope. If that isolation scope is forked, setting the processing metadata here will not mutate the\n // original isolation scope that the http integration stored away.\n const isHandledException = eventHint?.mechanism?.handled ?? true;\n // A request session can go from \"errored\" -> \"crashed\" but not \"crashed\" -> \"errored\".\n // Crashed (unhandled exception) is worse than errored (handled exception).\n if (isHandledException && requestSession.status !== 'crashed') {\n requestSession.status = 'errored';\n } else if (!isHandledException) {\n requestSession.status = 'crashed';\n }\n }\n}\n","import type { Client } from './client';\nimport { getCurrentScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ClientOptions } from './types-hoist/options';\nimport { consoleSandbox, debug } from './utils/debug-logger';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\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 */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): Client {\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n debug.enable();\n } else {\n // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n client.init();\n return client;\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n getCurrentScope().setClient(client);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { Envelope } from '../types-hoist/envelope';\nimport type { InternalBaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport { envelopeContainsItemType } from '../utils/envelope';\nimport { parseRetryAfterHeader } from '../utils/ratelimit';\nimport { safeUnref } from '../utils/timer';\n\nexport const MIN_DELAY = 100; // 100 ms\nexport const START_DELAY = 5_000; // 5 seconds\nconst MAX_DELAY = 3.6e6; // 1 hour\n\nexport interface OfflineStore {\n push(env: Envelope): Promise;\n unshift(env: Envelope): Promise;\n shift(): Promise;\n}\n\nexport type CreateOfflineStore = (options: OfflineTransportOptions) => OfflineStore;\n\nexport interface OfflineTransportOptions extends InternalBaseTransportOptions {\n /**\n * A function that creates the offline store instance.\n */\n createStore?: CreateOfflineStore;\n\n /**\n * Flush the offline store shortly after startup.\n *\n * Defaults: false\n */\n flushAtStartup?: boolean;\n\n /**\n * Called before an event is stored.\n *\n * Return false to drop the envelope rather than store it.\n *\n * @param envelope The envelope that failed to send.\n * @param error The error that occurred.\n * @param retryDelay The current retry delay in milliseconds.\n * @returns Whether the envelope should be stored.\n */\n shouldStore?: (envelope: Envelope, error: Error, retryDelay: number) => boolean | Promise;\n\n /**\n * Should an attempt be made to send the envelope to Sentry.\n *\n * If this function is supplied and returns false, `shouldStore` will be called to determine if the envelope should be stored.\n *\n * @param envelope The envelope that will be sent.\n * @returns Whether we should attempt to send the envelope\n */\n shouldSend?: (envelope: Envelope) => boolean | Promise;\n}\n\ntype Timer = number | { unref?: () => void };\n\n/**\n * Wraps a transport and stores and retries events when they fail to send.\n *\n * @param createTransport The transport to wrap.\n */\nexport function makeOfflineTransport(\n createTransport: (options: TO) => Transport,\n): (options: TO & OfflineTransportOptions) => Transport {\n function log(...args: unknown[]): void {\n DEBUG_BUILD && debug.log('[Offline]:', ...args);\n }\n\n return options => {\n const transport = createTransport(options);\n\n if (!options.createStore) {\n throw new Error('No `createStore` function was provided');\n }\n\n const store = options.createStore(options);\n\n let retryDelay = START_DELAY;\n let flushTimer: Timer | undefined;\n\n function shouldQueue(env: Envelope, error: Error, retryDelay: number): boolean | Promise {\n // We want to drop client reports because they can be generated when we retry sending events while offline.\n if (envelopeContainsItemType(env, ['client_report'])) {\n return false;\n }\n\n if (options.shouldStore) {\n return options.shouldStore(env, error, retryDelay);\n }\n\n return true;\n }\n\n function flushIn(delay: number): void {\n if (flushTimer) {\n clearTimeout(flushTimer as ReturnType);\n }\n\n // We need to unref the timer in node.js, otherwise the node process never exit.\n flushTimer = safeUnref(\n setTimeout(async () => {\n flushTimer = undefined;\n\n const found = await store.shift();\n if (found) {\n log('Attempting to send previously queued event');\n\n // We should to update the sent_at timestamp to the current time.\n found[0].sent_at = new Date().toISOString();\n\n void send(found, true).catch(e => {\n log('Failed to retry sending', e);\n });\n }\n }, delay),\n ) as Timer;\n }\n\n function flushWithBackOff(): void {\n if (flushTimer) {\n return;\n }\n\n flushIn(retryDelay);\n\n retryDelay = Math.min(retryDelay * 2, MAX_DELAY);\n }\n\n async function send(envelope: Envelope, isRetry: boolean = false): Promise {\n // We queue all replay envelopes to avoid multiple replay envelopes being sent at the same time. If one fails, we\n // need to retry them in order.\n if (!isRetry && envelopeContainsItemType(envelope, ['replay_event', 'replay_recording'])) {\n await store.push(envelope);\n flushIn(MIN_DELAY);\n return {};\n }\n\n try {\n if (options.shouldSend && (await options.shouldSend(envelope)) === false) {\n throw new Error('Envelope not sent because `shouldSend` callback returned false');\n }\n\n const result = await transport.send(envelope);\n\n let delay = MIN_DELAY;\n\n if (result) {\n // If there's a retry-after header, use that as the next delay.\n if (result.headers?.['retry-after']) {\n delay = parseRetryAfterHeader(result.headers['retry-after']);\n } else if (result.headers?.['x-sentry-rate-limits']) {\n delay = 60_000; // 60 seconds\n } // If we have a server error, return now so we don't flush the queue.\n else if ((result.statusCode || 0) >= 400) {\n return result;\n }\n }\n\n flushIn(delay);\n retryDelay = START_DELAY;\n return result;\n } catch (e) {\n if (await shouldQueue(envelope, e as Error, retryDelay)) {\n // If this envelope was a retry, we want to add it to the front of the queue so it's retried again first.\n if (isRetry) {\n await store.unshift(envelope);\n } else {\n await store.push(envelope);\n }\n flushWithBackOff();\n log('Error sending. Event queued.', e as Error);\n return {};\n } else {\n throw e;\n }\n }\n }\n\n if (options.flushAtStartup) {\n flushWithBackOff();\n }\n\n return {\n send,\n flush: timeout => {\n // If there's no timeout, we should attempt to flush the offline queue.\n if (timeout === undefined) {\n retryDelay = START_DELAY;\n flushIn(MIN_DELAY);\n }\n\n return transport.flush(timeout);\n },\n };\n };\n}\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\nimport type { Envelope, EnvelopeItemType, EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { BaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { dsnFromString } from '../utils/dsn';\nimport { createEnvelope, forEachEnvelopeItem } from '../utils/envelope';\n\ninterface MatchParam {\n /** The envelope to be sent */\n envelope: Envelope;\n /**\n * A function that returns an event from the envelope if one exists. You can optionally pass an array of envelope item\n * types to filter by - only envelopes matching the given types will be multiplexed.\n * Allowed values are: 'event', 'transaction', 'profile', 'replay_event'\n *\n * @param types Defaults to ['event']\n */\n getEvent(types?: EnvelopeItemType[]): Event | undefined;\n}\n\ntype RouteTo = { dsn: string; release: string };\ntype Matcher = (param: MatchParam) => (string | RouteTo)[];\n\n/**\n * Key used in event.extra to provide routing information for the multiplexed transport.\n * Should contain an array of `{ dsn: string, release?: string }` objects.\n */\nexport const MULTIPLEXED_TRANSPORT_EXTRA_KEY = 'MULTIPLEXED_TRANSPORT_EXTRA_KEY';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nexport function eventFromEnvelope(env: Envelope, types: EnvelopeItemType[]): Event | undefined {\n let event: Event | undefined;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport: (options: TO) => Transport,\n release: string,\n): (options: TO) => Transport {\n return options => {\n const transport = createTransport(options);\n\n return {\n ...transport,\n send: async (envelope: Envelope): Promise => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n };\n };\n}\n\n/** Overrides the DSN in the envelope header */\nfunction overrideDsn(envelope: Envelope, dsn: string): Envelope {\n return createEnvelope(\n dsn\n ? {\n ...envelope[0],\n dsn,\n }\n : envelope[0],\n envelope[1],\n );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n *\n * If no matcher is provided, the transport will look for routing information in\n * `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`, which should contain\n * an array of `{ dsn: string, release?: string }` objects.\n */\nexport function makeMultiplexedTransport(\n createTransport: (options: TO) => Transport,\n matcher?: Matcher,\n): (options: TO) => Transport {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports: Map = new Map();\n\n // Use provided matcher or default to simple multiplexed transport behavior\n const actualMatcher: Matcher =\n matcher ||\n (args => {\n const event = args.getEvent();\n if (\n event?.extra?.[MULTIPLEXED_TRANSPORT_EXTRA_KEY] &&\n Array.isArray(event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY])\n ) {\n return event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY];\n }\n return [];\n });\n\n function getTransport(dsn: string, release: string | undefined): [string, Transport] | undefined {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n let transport = otherTransports.get(key);\n\n if (!transport) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n transport = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n\n otherTransports.set(key, transport);\n }\n\n return [dsn, transport];\n }\n\n async function send(envelope: Envelope): Promise {\n function getEvent(types?: EnvelopeItemType[]): Event | undefined {\n const eventTypes: EnvelopeItemType[] = types?.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = actualMatcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t): t is [string, Transport] => !!t);\n\n // If we have no transports to send to, use the fallback transport\n // Don't override the DSN in the header for the fallback transport. '' is falsy\n const transportsWithFallback: [string, Transport][] = transports.length ? transports : [['', fallbackTransport]];\n\n const results = (await Promise.all(\n transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n )) as [TransportMakeRequestResponse, ...TransportMakeRequestResponse[]];\n\n return results[0];\n }\n\n async function flush(timeout: number | undefined): Promise {\n const allTransports = [...otherTransports.values(), fallbackTransport];\n const results = await Promise.all(allTransports.map(transport => transport.flush(timeout)));\n return results.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n","import { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../debug-logger';\n\n/**\n * Registry tracking which AI provider modules should skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n */\nconst SKIPPED_AI_PROVIDERS = new Set();\n\n/**\n * Mark AI provider modules to skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n *\n * @internal\n * @param modules - Array of npm module names to skip (e.g., '@anthropic-ai/sdk', 'openai')\n *\n * @example\n * ```typescript\n * // In LangChain integration\n * _INTERNAL_skipAiProviderWrapping(['@anthropic-ai/sdk', 'openai', '@google/generative-ai']);\n * ```\n */\nexport function _INTERNAL_skipAiProviderWrapping(modules: string[]): void {\n modules.forEach(module => {\n SKIPPED_AI_PROVIDERS.add(module);\n DEBUG_BUILD && debug.log(`AI provider \"${module}\" wrapping will be skipped`);\n });\n}\n\n/**\n * Check if an AI provider module should skip instrumentation wrapping.\n *\n * @internal\n * @param module - The npm module name (e.g., '@anthropic-ai/sdk', 'openai')\n * @returns true if wrapping should be skipped\n *\n * @example\n * ```typescript\n * // In AI provider instrumentation\n * if (_INTERNAL_shouldSkipAiProviderWrapping('@anthropic-ai/sdk')) {\n * return Reflect.construct(Original, args); // Don't instrument\n * }\n * ```\n */\nexport function _INTERNAL_shouldSkipAiProviderWrapping(module: string): boolean {\n return SKIPPED_AI_PROVIDERS.has(module);\n}\n\n/**\n * Clear all AI provider skip registrations.\n *\n * This is automatically called at the start of Sentry.init() to ensure a clean state\n * between different client initializations.\n *\n * @internal\n */\nexport function _INTERNAL_clearAiProviderSkips(): void {\n SKIPPED_AI_PROVIDERS.clear();\n DEBUG_BUILD && debug.log('Cleared AI provider skip registrations');\n}\n","export const FALSY_ENV_VALUES = new Set(['false', 'f', 'n', 'no', 'off', '0']);\nexport const TRUTHY_ENV_VALUES = new Set(['true', 't', 'y', 'yes', 'on', '1']);\n\nexport type StrictBoolCast = {\n strict: true;\n};\n\nexport type LooseBoolCast = {\n strict?: false;\n};\n\nexport type BoolCastOptions = StrictBoolCast | LooseBoolCast;\n\nexport function envToBool(value: unknown, options?: LooseBoolCast): boolean;\nexport function envToBool(value: unknown, options: StrictBoolCast): boolean | null;\nexport function envToBool(value: unknown, options?: BoolCastOptions): boolean | null;\n/**\n * A helper function which casts an ENV variable value to `true` or `false` using the constants defined above.\n * In strict mode, it may return `null` if the value doesn't match any of the predefined values.\n *\n * @param value The value of the env variable\n * @param options -- Only has `strict` key for now, which requires a strict match for `true` in TRUTHY_ENV_VALUES\n * @returns true/false if the lowercase value matches the predefined values above. If not, null in strict mode,\n * and Boolean(value) in loose mode.\n */\nexport function envToBool(value: unknown, options?: BoolCastOptions): boolean | null {\n const normalized = String(value).toLowerCase();\n\n if (FALSY_ENV_VALUES.has(normalized)) {\n return false;\n }\n\n if (TRUTHY_ENV_VALUES.has(normalized)) {\n return true;\n }\n\n return options?.strict ? null : Boolean(value);\n}\n","import {\n SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n} from '../semanticAttributes';\nimport type { SpanAttributes } from '../types-hoist/span';\n\ntype PartialURL = {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n search?: string;\n hash?: string;\n};\n\ninterface URLwithCanParse extends URL {\n canParse: (url: string, base?: string | URL | undefined) => boolean;\n}\n\n// A subset of the URL object that is valid for relative URLs\n// The URL object cannot handle relative URLs, so we need to handle them separately\ntype RelativeURL = {\n isRelative: true;\n pathname: URL['pathname'];\n search: URL['search'];\n hash: URL['hash'];\n};\n\ntype URLObject = RelativeURL | URL;\n\n// Curious about `thismessage:/`? See: https://www.rfc-editor.org/rfc/rfc2557.html\n// > When the methods above do not yield an absolute URI, a base URL\n// > of \"thismessage:/\" MUST be employed. This base URL has been\n// > defined for the sole purpose of resolving relative references\n// > within a multipart/related structure when no other base URI is\n// > specified.\n//\n// We need to provide a base URL to `parseStringToURLObject` because the fetch API gives us a\n// relative URL sometimes.\n//\n// This is the only case where we need to provide a base URL to `parseStringToURLObject`\n// because the relative URL is not valid on its own.\nconst DEFAULT_BASE_URL = 'thismessage:/';\n\n/**\n * Checks if the URL object is relative\n *\n * @param url - The URL object to check\n * @returns True if the URL object is relative, false otherwise\n */\nexport function isURLObjectRelative(url: URLObject): url is RelativeURL {\n return 'isRelative' in url;\n}\n\n/**\n * Parses string to a URL object\n *\n * @param url - The URL to parse\n * @returns The parsed URL object or undefined if the URL is invalid\n */\nexport function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined {\n const isRelative = url.indexOf('://') <= 0 && url.indexOf('//') !== 0;\n const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : undefined);\n try {\n // Use `canParse` to short-circuit the URL constructor if it's not a valid URL\n // This is faster than trying to construct the URL and catching the error\n // Node 20+, Chrome 120+, Firefox 115+, Safari 17+\n if ('canParse' in URL && !(URL as unknown as URLwithCanParse).canParse(url, base)) {\n return undefined;\n }\n\n const fullUrlObject = new URL(url, base);\n if (isRelative) {\n // Because we used a fake base URL, we need to return a relative URL object.\n // We cannot return anything about the origin, host, etc. because it will refer to the fake base URL.\n return {\n isRelative,\n pathname: fullUrlObject.pathname,\n search: fullUrlObject.search,\n hash: fullUrlObject.hash,\n };\n }\n return fullUrlObject;\n } catch {\n // empty body\n }\n\n return undefined;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlStringFromUrlObject(url: URLObject): string {\n if (isURLObjectRelative(url)) {\n return url.pathname;\n }\n\n const newUrl = new URL(url);\n newUrl.search = '';\n newUrl.hash = '';\n if (['80', '443'].includes(newUrl.port)) {\n newUrl.port = '';\n }\n if (newUrl.password) {\n newUrl.password = '%filtered%';\n }\n if (newUrl.username) {\n newUrl.username = '%filtered%';\n }\n\n return newUrl.toString();\n}\n\ntype PartialRequest = {\n method?: string;\n};\n\nfunction getHttpSpanNameFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n request?: PartialRequest,\n routeName?: string,\n): string {\n const method = request?.method?.toUpperCase() ?? 'GET';\n const route = routeName\n ? routeName\n : urlObject\n ? kind === 'client'\n ? getSanitizedUrlStringFromUrlObject(urlObject)\n : urlObject.pathname\n : '/';\n\n return `${method} ${route}`;\n}\n\n/**\n * Takes a parsed URL object and returns a set of attributes for the span\n * that represents the HTTP request for that url. This is used for both server\n * and client http spans.\n *\n * Follows https://opentelemetry.io/docs/specs/semconv/http/.\n *\n * @param urlObject - see {@link parseStringToURLObject}\n * @param kind - The type of HTTP operation (server or client)\n * @param spanOrigin - The origin of the span\n * @param request - The request object, see {@link PartialRequest}\n * @param routeName - The name of the route, must be low cardinality\n * @returns The span name and attributes for the HTTP operation\n */\nexport function getHttpSpanDetailsFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n spanOrigin: string,\n request?: PartialRequest,\n routeName?: string,\n): [name: string, attributes: SpanAttributes] {\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n };\n\n if (routeName) {\n // This is based on https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name\n attributes[kind === 'server' ? 'http.route' : 'url.template'] = routeName;\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n\n if (request?.method) {\n attributes[SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] = request.method.toUpperCase();\n }\n\n if (urlObject) {\n if (urlObject.search) {\n attributes['url.query'] = urlObject.search;\n }\n if (urlObject.hash) {\n attributes['url.fragment'] = urlObject.hash;\n }\n if (urlObject.pathname) {\n attributes['url.path'] = urlObject.pathname;\n if (urlObject.pathname === '/') {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n }\n\n if (!isURLObjectRelative(urlObject)) {\n attributes[SEMANTIC_ATTRIBUTE_URL_FULL] = urlObject.href;\n if (urlObject.port) {\n attributes['url.port'] = urlObject.port;\n }\n if (urlObject.protocol) {\n attributes['url.scheme'] = urlObject.protocol;\n }\n if (urlObject.hostname) {\n attributes[kind === 'server' ? 'server.address' : 'url.domain'] = urlObject.hostname;\n }\n }\n }\n\n return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes];\n}\n\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 */\nexport function parseUrl(url: string): PartialURL {\n if (!url) {\n return {};\n }\n\n const 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 const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\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 */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n return (urlPath.split(/[?#]/, 1) as [string, ...string[]])[0];\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n const { protocol, host, path } = url;\n\n const filteredHost =\n host\n // Always filter out authority\n ?.replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '') || '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\n/**\n * Strips the content from a data URL, returning a placeholder with the MIME type.\n *\n * Data URLs can be very long (e.g. base64 encoded scripts for Web Workers),\n * with little valuable information, often leading to envelopes getting dropped due\n * to size limit violations. Therefore, we strip data URLs and replace them with a\n * placeholder.\n *\n * @param url - The URL to process\n * @param includeDataPrefix - If true, includes the first 10 characters of the data stream\n * for debugging (e.g., to identify magic bytes like WASM's AGFzbQ).\n * Defaults to true.\n * @returns For data URLs, returns a short format like `data:text/javascript;base64,SGVsbG8gV2... [truncated]`.\n * For non-data URLs, returns the original URL unchanged.\n */\nexport function stripDataUrlContent(url: string, includeDataPrefix: boolean = true): string {\n if (url.startsWith('data:')) {\n // Match the MIME type (everything after 'data:' until the first ';' or ',')\n const match = url.match(/^data:([^;,]+)/);\n const mimeType = match ? match[1] : 'text/plain';\n const isBase64 = url.includes(';base64,');\n\n // Find where the actual data starts (after the comma)\n const dataStart = url.indexOf(',');\n let dataPrefix = '';\n if (includeDataPrefix && dataStart !== -1) {\n const data = url.slice(dataStart + 1);\n // Include first 10 chars of data to help identify content (e.g., magic bytes)\n dataPrefix = data.length > 10 ? `${data.slice(0, 10)}... [truncated]` : data;\n }\n\n return `data:${mimeType}${isBase64 ? ',base64' : ''}${dataPrefix ? `,${dataPrefix}` : ''}`;\n }\n return url;\n}\n","import type { Client } from '../client';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport { isURLObjectRelative, parseStringToURLObject } from './url';\n\n/**\n * Checks whether given url points to Sentry server\n *\n * @param url url to verify\n */\nexport function isSentryRequestUrl(url: string, client: Client | undefined): boolean {\n const dsn = client?.getDsn();\n const tunnel = client?.getOptions().tunnel;\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url: string, tunnel: string | undefined): boolean {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url: string, dsn: DsnComponents | undefined): boolean {\n // Requests to Sentry's ingest endpoint must have a `sentry_key` in the query string\n // This is equivalent to the public_key which is required in the DSN\n // see https://develop.sentry.dev/sdk/overview/#parsing-the-dsn\n // Therefore, a request to the same host and with a `sentry_key` in the query string\n // can be considered a request to the ingest endpoint.\n const urlParts = parseStringToURLObject(url);\n if (!urlParts || isURLObjectRelative(urlParts)) {\n return false;\n }\n\n return dsn ? urlParts.host.includes(dsn.host) && /(^|&|\\?)sentry_key=/.test(urlParts.search) : false;\n}\n\nfunction removeTrailingSlash(str: string): string {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n","import type { ParameterizedString } from '../types-hoist/parameterize';\n\n/**\n * Tagged template function which returns parameterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n *\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport function parameterize(strings: TemplateStringsArray, ...values: unknown[]): ParameterizedString {\n const formatted = new String(String.raw(strings, ...values)) as ParameterizedString;\n formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n formatted.__sentry_template_values__ = values;\n return formatted;\n}\n\n/**\n * Tagged template function which returns parameterized representation of the message.\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport const fmt = parameterize;\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\nimport { debug } from './debug-logger';\nimport { makeDsn } from './dsn';\nimport { parseEnvelope } from './envelope';\n\nexport interface HandleTunnelRequestOptions {\n /** Incoming request containing the Sentry envelope as its body */\n request: Request;\n /** Pre-parsed array of allowed DSN strings */\n allowedDsns: Array;\n}\n\n/**\n * Core Sentry tunnel handler - framework agnostic.\n *\n * Validates the envelope DSN against allowed DSNs, then forwards the\n * envelope to the Sentry ingest endpoint.\n *\n * @returns A `Response` — either the upstream Sentry response on success, or an error response.\n */\nexport async function handleTunnelRequest(options: HandleTunnelRequestOptions): Promise {\n const { request, allowedDsns } = options;\n\n if (allowedDsns.length === 0) {\n return new Response('Tunnel not configured', { status: 500 });\n }\n\n const body = new Uint8Array(await request.arrayBuffer());\n\n let envelopeHeader;\n try {\n [envelopeHeader] = parseEnvelope(body);\n } catch {\n return new Response('Invalid envelope', { status: 400 });\n }\n\n if (!envelopeHeader) {\n return new Response('Invalid envelope: missing header', { status: 400 });\n }\n\n const dsn = envelopeHeader.dsn;\n if (!dsn) {\n return new Response('Invalid envelope: missing DSN', { status: 400 });\n }\n\n // SECURITY: Validate that the envelope DSN matches one of the allowed DSNs\n // This prevents SSRF attacks where attackers send crafted envelopes\n // with malicious DSNs pointing to arbitrary hosts\n const isAllowed = allowedDsns.some(allowed => allowed === dsn);\n\n if (!isAllowed) {\n debug.warn(`Sentry tunnel: rejected request with unauthorized DSN (${dsn})`);\n return new Response('DSN not allowed', { status: 403 });\n }\n\n const dsnComponents = makeDsn(dsn);\n if (!dsnComponents) {\n debug.warn(`Could not extract DSN Components from: ${dsn}`);\n return new Response('Invalid DSN', { status: 403 });\n }\n\n const sentryIngestUrl = getEnvelopeEndpointWithUrlEncodedAuth(dsnComponents);\n\n try {\n return await fetch(sentryIngestUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n body,\n });\n } catch (error) {\n debug.error('Sentry tunnel: failed to forward envelope', error);\n return new Response('Failed to forward envelope to Sentry', { status: 500 });\n }\n}\n","import type { Session, SessionAggregates } from '../types-hoist/session';\nimport type { User } from '../types-hoist/user';\n\n// By default, we want to infer the IP address, unless this is explicitly set to `null`\n// We do this after all other processing is done\n// If `ip_address` is explicitly set to `null` or a value, we leave it as is\n\n/**\n * @internal\n * @deprecated -- set ip inferral via via SDK metadata options on client instead.\n */\nexport function addAutoIpAddressToUser(objWithMaybeUser: { user?: User | null }): void {\n if (objWithMaybeUser.user?.ip_address === undefined) {\n objWithMaybeUser.user = {\n ...objWithMaybeUser.user,\n ip_address: '{{auto}}',\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addAutoIpAddressToSession(session: Session | SessionAggregates): void {\n if ('aggregates' in session) {\n if (session.attrs?.['ip_address'] === undefined) {\n session.attrs = {\n ...session.attrs,\n ip_address: '{{auto}}',\n };\n }\n } else {\n if (session.ipAddress === undefined) {\n session.ipAddress = '{{auto}}';\n }\n }\n}\n","import type { CoreOptions } from '../types-hoist/options';\nimport { SDK_VERSION } from '../utils/version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: CoreOptions, name: string, names = [name], source = 'npm'): void {\n const sdk = ((options._metadata = options._metadata || {}).sdk = options._metadata.sdk || {});\n\n if (!sdk.name) {\n sdk.name = `sentry.javascript.${name}`;\n sdk.packages = names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n }));\n sdk.version = SDK_VERSION;\n }\n}\n","import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, hasExternalPropagationContext } from '../currentScopes';\nimport { isEnabled } from '../exports';\nimport type { Scope } from '../scope';\nimport { getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan } from '../tracing';\nimport type { Span } from '../types-hoist/span';\nimport type { SerializedTraceData } from '../types-hoist/tracing';\nimport { dynamicSamplingContextToSentryBaggageHeader } from './baggage';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils';\nimport { generateSentryTraceHeader, generateTraceparentHeader, TRACEPARENT_REGEXP } from './tracing';\n\n/**\n * Extracts trace propagation data from the current span or from the client's scope (via transaction or propagation\n * context) and serializes it to `sentry-trace` and `baggage` values. These values can be used to propagate\n * a trace via our tracing Http headers or Html `` tags.\n *\n * This function also applies some validation to the generated sentry-trace and baggage values to ensure that\n * only valid strings are returned.\n *\n * When an external propagation context is registered (e.g. via the OTLP integration) and there is no active\n * Sentry span, this function returns an empty object to defer outgoing request propagation to the external\n * propagator (e.g. an OpenTelemetry propagator).\n *\n * If (@param options.propagateTraceparent) is `true`, the function will also generate a `traceparent` value,\n * following the W3C traceparent header format.\n *\n * @returns an object with the tracing data values. The object keys are the name of the tracing key to be used as header\n * or meta tag name.\n */\nexport function getTraceData(\n options: { span?: Span; scope?: Scope; client?: Client; propagateTraceparent?: boolean } = {},\n): SerializedTraceData {\n const client = options.client || getClient();\n if (!isEnabled() || !client) {\n return {};\n }\n\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getTraceData) {\n return acs.getTraceData(options);\n }\n\n const scope = options.scope || getCurrentScope();\n const span = options.span || getActiveSpan();\n\n // When no active span and external propagation context is registered (e.g. OTLP integration),\n // return empty to let the OTel propagator handle outgoing request propagation.\n if (!span && hasExternalPropagationContext()) {\n return {};\n }\n\n const sentryTrace = span ? spanToTraceHeader(span) : scopeToTraceHeader(scope);\n const dsc = span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromScope(client, scope);\n const baggage = dynamicSamplingContextToSentryBaggageHeader(dsc);\n\n const isValidSentryTraceHeader = TRACEPARENT_REGEXP.test(sentryTrace);\n if (!isValidSentryTraceHeader) {\n debug.warn('Invalid sentry-trace data. Cannot generate trace data');\n return {};\n }\n\n const traceData: SerializedTraceData = {\n 'sentry-trace': sentryTrace,\n baggage,\n };\n\n if (options.propagateTraceparent) {\n traceData.traceparent = span ? spanToTraceparentHeader(span) : scopeToTraceparentHeader(scope);\n }\n\n return traceData;\n}\n\n/**\n * Get a sentry-trace header value for the given scope.\n */\nfunction scopeToTraceHeader(scope: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateSentryTraceHeader(traceId, propagationSpanId, sampled);\n}\n\nfunction scopeToTraceparentHeader(scope: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateTraceparentHeader(traceId, propagationSpanId, sampled);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { CoreOptions as Options } from '../types-hoist/options';\nimport { debug } from './debug-logger';\nimport type { LRUMap } from './lru';\nimport { stringMatchesSomePattern } from './string';\n\nconst NOT_PROPAGATED_MESSAGE =\n '[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:';\n\n/**\n * Check if a given URL should be propagated to or not.\n * If no url is defined, or no trace propagation targets are defined, this will always return `true`.\n * You can also optionally provide a decision map, to cache decisions and avoid repeated regex lookups.\n */\nexport function shouldPropagateTraceForUrl(\n url: string | undefined,\n tracePropagationTargets: Options['tracePropagationTargets'],\n decisionMap?: LRUMap,\n): boolean {\n if (typeof url !== 'string' || !tracePropagationTargets) {\n return true;\n }\n\n const cachedDecision = decisionMap?.get(url);\n if (cachedDecision !== undefined) {\n DEBUG_BUILD && !cachedDecision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return cachedDecision;\n }\n\n const decision = stringMatchesSomePattern(url, tracePropagationTargets);\n decisionMap?.set(url, decision);\n\n DEBUG_BUILD && !decision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return decision;\n}\n","import type { SerializedTraceData } from '../types-hoist/tracing';\nimport { getTraceData } from './traceData';\n\n/**\n * Returns a string of meta tags that represent the current trace data.\n *\n * You can use this to propagate a trace from your server-side rendered Html to the browser.\n * This function returns up to two meta tags, `sentry-trace` and `baggage`, depending on the\n * current trace data state.\n *\n * @example\n * Usage example:\n *\n * ```js\n * function renderHtml() {\n * return `\n * \n * ${getTraceMetaTags()}\n * \n * `;\n * }\n * ```\n *\n */\nexport function getTraceMetaTags(traceData?: SerializedTraceData): string {\n return Object.entries(traceData || getTraceData())\n .map(([key, value]) => ``)\n .join('\\n');\n}\n","type DebouncedCallback = {\n (): void | unknown;\n flush: () => void | unknown;\n cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = {\n /** The max. time in ms to wait for the callback to be invoked. */\n maxWait?: number;\n /** This can be overwritten to use a different setTimeout implementation, e.g. to avoid triggering change detection in Angular */\n setTimeoutImpl?: typeof setTimeout;\n};\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n let callbackReturnValue: unknown;\n\n let timerId: ReturnType | undefined;\n let maxTimerId: ReturnType | undefined;\n\n const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0;\n const setTimeoutImpl = options?.setTimeoutImpl || setTimeout;\n\n function invokeFunc(): unknown {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers(): void {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush(): unknown {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced(): unknown {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeoutImpl(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeoutImpl(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n","import type { PolymorphicRequest } from '../types-hoist/polymorphics';\nimport type { RequestEventData } from '../types-hoist/request';\nimport type { WebFetchHeaders, WebFetchRequest } from '../types-hoist/webfetchapi';\n\n/**\n * Transforms a `Headers` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into a simple key-value dict.\n * The header keys will be lower case: e.g. A \"Content-Type\" header will be stored as \"content-type\".\n */\nexport function winterCGHeadersToDict(winterCGHeaders: WebFetchHeaders): Record {\n const headers: Record = {};\n try {\n winterCGHeaders.forEach((value, key) => {\n if (typeof value === 'string') {\n // We check that value is a string even though it might be redundant to make sure prototype pollution is not possible.\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Convert common request headers to a simple dictionary.\n */\nexport function headersToDict(reqHeaders: Record): Record {\n const headers: Record = Object.create(null);\n\n try {\n Object.entries(reqHeaders).forEach(([key, value]) => {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Converts a `Request` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into the format that the `RequestData` integration understands.\n */\nexport function winterCGRequestToRequestData(req: WebFetchRequest): RequestEventData {\n const headers = winterCGHeadersToDict(req.headers);\n\n return {\n method: req.method,\n url: req.url,\n query_string: extractQueryParamsFromUrl(req.url),\n headers,\n // TODO: Can we extract body data from the request?\n };\n}\n\n/**\n * Convert a HTTP request object to RequestEventData to be passed as normalizedRequest.\n * Instead of allowing `PolymorphicRequest` to be passed,\n * we want to be more specific and generally require a http.IncomingMessage-like object.\n */\nexport function httpRequestToRequestData(request: {\n method?: string;\n url?: string;\n headers?: {\n [key: string]: string | string[] | undefined;\n };\n protocol?: string;\n socket?: {\n encrypted?: boolean;\n remoteAddress?: string;\n };\n}): RequestEventData {\n const headers = request.headers || {};\n\n // Check for x-forwarded-host first, then fall back to host header\n const forwardedHost = typeof headers['x-forwarded-host'] === 'string' ? headers['x-forwarded-host'] : undefined;\n const host = forwardedHost || (typeof headers.host === 'string' ? headers.host : undefined);\n\n // Check for x-forwarded-proto first, then fall back to existing protocol detection\n const forwardedProto = typeof headers['x-forwarded-proto'] === 'string' ? headers['x-forwarded-proto'] : undefined;\n const protocol = forwardedProto || request.protocol || (request.socket?.encrypted ? 'https' : 'http');\n\n const url = request.url || '';\n\n const absoluteUrl = getAbsoluteUrl({\n url,\n host,\n protocol,\n });\n\n // This is non-standard, but may be sometimes set\n // It may be overwritten later by our own body handling\n const data = (request as PolymorphicRequest).body || undefined;\n\n // This is non-standard, but may be set on e.g. Next.js or Express requests\n const cookies = (request as PolymorphicRequest).cookies;\n\n return {\n url: absoluteUrl,\n method: request.method,\n query_string: extractQueryParamsFromUrl(url),\n headers: headersToDict(headers),\n cookies,\n data,\n };\n}\n\nfunction getAbsoluteUrl({\n url,\n protocol,\n host,\n}: {\n url?: string;\n protocol: string;\n host?: string;\n}): string | undefined {\n if (url?.startsWith('http')) {\n return url;\n }\n\n if (url && host) {\n return `${protocol}://${host}${url}`;\n }\n\n return undefined;\n}\n\nconst SENSITIVE_HEADER_SNIPPETS = [\n 'auth',\n 'token',\n 'secret',\n 'session', // for the user_session cookie\n 'password',\n 'passwd',\n 'pwd',\n 'key',\n 'jwt',\n 'bearer',\n 'sso',\n 'saml',\n 'csrf',\n 'xsrf',\n 'credentials',\n // Always treat cookie headers as sensitive in case individual key-value cookie pairs cannot properly be extracted\n 'set-cookie',\n 'cookie',\n];\n\nconst PII_HEADER_SNIPPETS = ['x-forwarded-', '-user'];\n\n/**\n * Converts incoming HTTP request or response headers to OpenTelemetry span attributes following semantic conventions.\n * Header names are converted to the format: http..header.\n * where is the header name in lowercase with dashes converted to underscores.\n *\n * @param lifecycle - The lifecycle of the headers, either 'request' or 'response'\n *\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-response-header\n *\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-request-header-key\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-response-header-key\n */\nexport function httpHeadersToSpanAttributes(\n headers: Record,\n sendDefaultPii: boolean = false,\n lifecycle: 'request' | 'response' = 'request',\n): Record {\n const spanAttributes: Record = {};\n\n try {\n Object.entries(headers).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n const lowerCasedHeaderKey = key.toLowerCase();\n const isCookieHeader = lowerCasedHeaderKey === 'cookie' || lowerCasedHeaderKey === 'set-cookie';\n\n if (isCookieHeader && typeof value === 'string' && value !== '') {\n // Set-Cookie: single cookie with attributes (\"name=value; HttpOnly; Secure\")\n // Cookie: multiple cookies separated by \"; \" (\"cookie1=value1; cookie2=value2\")\n const isSetCookie = lowerCasedHeaderKey === 'set-cookie';\n const semicolonIndex = value.indexOf(';');\n const cookieString = isSetCookie && semicolonIndex !== -1 ? value.substring(0, semicolonIndex) : value;\n const cookies = isSetCookie ? [cookieString] : cookieString.split('; ');\n\n for (const cookie of cookies) {\n // Split only at the first '=' to preserve '=' characters in cookie values\n const equalSignIndex = cookie.indexOf('=');\n const cookieKey = equalSignIndex !== -1 ? cookie.substring(0, equalSignIndex) : cookie;\n const cookieValue = equalSignIndex !== -1 ? cookie.substring(equalSignIndex + 1) : '';\n\n const lowerCasedCookieKey = cookieKey.toLowerCase();\n\n addSpanAttribute(\n spanAttributes,\n lowerCasedHeaderKey,\n lowerCasedCookieKey,\n cookieValue,\n sendDefaultPii,\n lifecycle,\n );\n }\n } else {\n addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii, lifecycle);\n }\n });\n } catch {\n // Return empty object if there's an error\n }\n\n return spanAttributes;\n}\n\nfunction normalizeAttributeKey(key: string): string {\n return key.replace(/-/g, '_');\n}\n\nfunction addSpanAttribute(\n spanAttributes: Record,\n headerKey: string,\n cookieKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n lifecycle: 'request' | 'response',\n): void {\n const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii);\n if (headerValue == null) {\n return;\n }\n\n const normalizedKey = `http.${lifecycle}.header.${normalizeAttributeKey(headerKey)}${cookieKey ? `.${normalizeAttributeKey(cookieKey)}` : ''}`;\n spanAttributes[normalizedKey] = headerValue;\n}\n\nfunction handleHttpHeader(\n lowerCasedKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n): string | undefined {\n const isSensitive = sendPii\n ? SENSITIVE_HEADER_SNIPPETS.some(snippet => lowerCasedKey.includes(snippet))\n : [...PII_HEADER_SNIPPETS, ...SENSITIVE_HEADER_SNIPPETS].some(snippet => lowerCasedKey.includes(snippet));\n\n if (isSensitive) {\n return '[Filtered]';\n } else if (Array.isArray(value)) {\n return value.map(v => (v != null ? String(v) : v)).join(';');\n } else if (typeof value === 'string') {\n return value;\n }\n\n return undefined;\n}\n\n/** Extract the query params from an URL. */\nexport function extractQueryParamsFromUrl(url: string): string | undefined {\n // url is path and query string\n if (!url) {\n return;\n }\n\n try {\n // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n // hostname as the base. Since the point here is just to grab the query string, it doesn't matter what we use.\n const queryParams = new URL(url, 'http://s.io').search.slice(1);\n return queryParams.length ? queryParams : undefined;\n } catch {\n return undefined;\n }\n}\n","import { getClient, getIsolationScope } from './currentScopes';\nimport type { Breadcrumb, BreadcrumbHint } from './types-hoist/breadcrumb';\nimport { consoleSandbox } from './utils/debug-logger';\nimport { dateTimestampInSeconds } from './utils/time';\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\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 */\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const client = getClient();\n const isolationScope = getIsolationScope();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions();\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint))\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n","import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { getOriginalFunction } from '../utils/object';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n Function.prototype.toString = function (this: WrappedFunction, ...args: unknown[]): string {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getPossibleEventMessages } from '../utils/eventUtils';\nimport { getEventDescription } from '../utils/misc';\nimport { stringMatchesSomePattern } from '../utils/string';\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.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n /^Can't find variable: gmo$/, // Error from Google Search App https://issuetracker.google.com/issues/396043331\n /^undefined is not an object \\(evaluating 'a\\.[A-Z]'\\)$/, // Random error that happens but not actionable or noticeable to end-users.\n /can't redefine non-configurable property \"solana\"/, // Probably a browser extension or custom browser (Brave) throwing this error\n /vv\\(\\)\\.getRestrictions is not a function/, // Error thrown by GTM, seemingly not affecting end-users\n /Can't find variable: _AutofillCallbackHandler/, // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n /Object Not Found Matching Id:\\d+, MethodName:simulateEvent/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n /^Java exception was raised during method invocation$/, // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065)\n];\n\n/** Options for the EventFilters integration */\nexport interface EventFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'EventFilters';\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n */\nexport const eventFiltersIntegration = defineIntegration((options: Partial = {}) => {\n let mergedOptions: Partial | undefined;\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n },\n processEvent(event, _hint, client) {\n if (!mergedOptions) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n }\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n});\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n *\n * @deprecated this integration was renamed and will be removed in a future major version.\n * Use `eventFiltersIntegration` instead.\n */\nexport const inboundFiltersIntegration = defineIntegration(((options: Partial = {}) => {\n return {\n ...eventFiltersIntegration(options),\n name: 'InboundFilters',\n };\n}) satisfies IntegrationFn);\n\nfunction _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial): boolean {\n if (!event.type) {\n // Filter errors\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isUselessError(event)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n event,\n )}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n debug.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 DEBUG_BUILD &&\n debug.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 } else if (event.type === 'transaction') {\n // Filter transactions\n\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors?.length) {\n return false;\n }\n\n return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array): boolean {\n if (!ignoreTransactions?.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n if (!denyUrls?.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n if (!allowUrls?.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const 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: Event): string | null {\n try {\n // If there are linked exceptions or exception aggregates we only want to match against the top frame of the \"root\" (the main exception)\n // The root always comes last in linked exceptions\n const rootException = [...(event.exception?.values ?? [])]\n .reverse()\n .find(value => value.mechanism?.parent_id === undefined && value.stacktrace?.frames?.length);\n const frames = rootException?.stacktrace?.frames;\n return frames ? _getLastValidUrl(frames) : null;\n } catch {\n DEBUG_BUILD && debug.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nfunction _isUselessError(event: Event): boolean {\n // We only want to consider events for dropping that actually have recorded exception values.\n if (!event.exception?.values?.length) {\n return false;\n }\n\n return (\n // No top-level message\n !event.message &&\n // There are no exception values that have a stacktrace, a non-generic-Error type or value\n !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n );\n}\n","import type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isInstanceOf } from './is';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): void {\n if (!event.exception?.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException: Exception | undefined =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException as ExtendedError,\n key,\n event.exception.values,\n originalException,\n 0,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n prevExceptions: Exception[],\n exception: Exception,\n exceptionId: number,\n): Exception[] {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, error[key] as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key] as ExtendedError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (isExceptionGroup(error)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, childError as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError as ExtendedError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction isExceptionGroup(error: ExtendedError): error is ExtendedError & { errors: unknown[] } {\n return Array.isArray(error.errors);\n}\n\nfunction applyExceptionGroupFieldsForParentException(\n exception: Exception,\n exceptionId: number,\n error: ExtendedError,\n): void {\n exception.mechanism = {\n handled: true,\n type: 'auto.core.linked_errors',\n ...(isExceptionGroup(error) && { is_exception_group: true }),\n ...exception.mechanism,\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception: Exception,\n source: string,\n exceptionId: number,\n parentId: number | undefined,\n): void {\n exception.mechanism = {\n handled: true,\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n","import { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { applyAggregateErrorsToEvent } from '../utils/aggregate-errors';\nimport { exceptionFromError } from '../utils/eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(exceptionFromError, options.stackParser, key, limit, event, hint);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n","import type { Event } from './types-hoist/event';\nimport type { StackParser } from './types-hoist/stacktrace';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\n/**\n * Builds a map of filenames to module metadata from the global _sentryModuleMetadata object.\n * This is useful for forwarding metadata from web workers to the main thread.\n *\n * @param parser - Stack parser to use for extracting filenames from stack traces\n * @returns A map of filename to metadata object\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getFilenameToMetadataMap(parser: StackParser): Record {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filenameMap: Record = {};\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n const frames = parser(stack);\n\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n filenameMap[frame.filename] = metadata;\n break;\n }\n }\n }\n\n return filenameMap;\n}\n\nfunction ensureMetadataStacksAreParsed(parser: StackParser): void {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMetadataForUrl(parser: StackParser, filename: string): any | undefined {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nexport function addMetadataToStackFrames(parser: StackParser, event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (!frame.filename || frame.module_metadata) {\n return;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n });\n });\n}\n\n/**\n * Strips metadata from stack frames.\n */\nexport function stripMetadataFromStackFrames(event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n delete frame.module_metadata;\n });\n });\n}\n","import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport { forEachEnvelopeItem } from '../utils/envelope';\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\nexport const moduleMetadataIntegration = defineIntegration(() => {\n return {\n name: 'ModuleMetadata',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n };\n});\n","/**\n * This code was originally copied from the 'cookie` module at v0.5.0 and was simplified for our use case.\n * https://github.com/jshttp/cookie/blob/a0c84147aab6266bdb3996cf4062e93907c0b0fc/index.js\n * It had the following license:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Roman Shtylman \n * Copyright (c) 2015 Douglas Christopher Wilson \n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/**\n * Parses a cookie string\n */\nexport function parseCookie(str: string): Record {\n const obj: Record = {};\n let index = 0;\n\n while (index < str.length) {\n const eqIdx = str.indexOf('=', index);\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break;\n }\n\n let endIdx = str.indexOf(';', index);\n\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1;\n continue;\n }\n\n const key = str.slice(index, eqIdx).trim();\n\n // only assign once\n if (undefined === obj[key]) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1);\n }\n\n try {\n obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val;\n } catch {\n obj[key] = val;\n }\n }\n\n index = endIdx + 1;\n }\n\n return obj;\n}\n","// Vendored / modified from @sergiodxa/remix-utils\n\n// https://github.com/sergiodxa/remix-utils/blob/02af80e12829a53696bfa8f3c2363975cf59f55e/src/server/get-client-ip-address.ts\n// MIT License\n\n// Copyright (c) 2021 Sergio Xalambrí\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// The headers to check, in priority order\nexport const ipHeaderNames = [\n 'X-Client-IP',\n 'X-Forwarded-For',\n 'Fly-Client-IP',\n 'CF-Connecting-IP',\n 'Fastly-Client-Ip',\n 'True-Client-Ip',\n 'X-Real-IP',\n 'X-Cluster-Client-IP',\n 'X-Forwarded',\n 'Forwarded-For',\n 'Forwarded',\n 'X-Vercel-Forwarded-For',\n];\n\n/**\n * Get the IP address of the client sending a request.\n *\n * It receives a Request headers object and use it to get the\n * IP address from one of the following headers in order.\n *\n * If the IP address is valid, it will be returned. Otherwise, null will be\n * returned.\n *\n * If the header values contains more than one IP address, the first valid one\n * will be returned.\n */\nexport function getClientIPAddress(headers: { [key: string]: string | string[] | undefined }): string | null {\n // Build a map of lowercase header names to their values for case-insensitive lookup\n // This is needed because headers from different sources may have different casings\n const lowerCaseHeaders: { [key: string]: string | string[] | undefined } = {};\n\n for (const key of Object.keys(headers)) {\n lowerCaseHeaders[key.toLowerCase()] = headers[key];\n }\n\n // This will end up being Array because of the various possible values a header\n // can take\n const headerValues = ipHeaderNames.map((headerName: string) => {\n const rawValue = lowerCaseHeaders[headerName.toLowerCase()];\n const value = Array.isArray(rawValue) ? rawValue.join(';') : rawValue;\n\n if (headerName === 'Forwarded') {\n return parseForwardedHeader(value);\n }\n\n return value?.split(',').map((v: string) => v.trim());\n });\n\n // Flatten the array and filter out any falsy entries\n const flattenedHeaderValues = headerValues.reduce((acc: string[], val) => {\n if (!val) {\n return acc;\n }\n\n return acc.concat(val);\n }, []);\n\n // Find the first value which is a valid IP address, if any\n const ipAddress = flattenedHeaderValues.find(ip => ip !== null && isIP(ip));\n\n return ipAddress || null;\n}\n\nfunction parseForwardedHeader(value: string | null | undefined): string | null {\n if (!value) {\n return null;\n }\n\n for (const part of value.split(';')) {\n if (part.startsWith('for=')) {\n return part.slice(4);\n }\n }\n\n return null;\n}\n\n//\n/**\n * Custom method instead of importing this from `net` package, as this only exists in node\n * Accepts:\n * 127.0.0.1\n * 192.168.1.1\n * 192.168.1.255\n * 255.255.255.255\n * 10.1.1.1\n * 0.0.0.0\n * 2b01:cb19:8350:ed00:d0dd:fa5b:de31:8be5\n *\n * Rejects:\n * 1.1.1.01\n * 30.168.1.255.1\n * 127.1\n * 192.168.1.256\n * -1.2.3.4\n * 1.1.1.1.\n * 3...3\n * 192.168.1.099\n */\nfunction isIP(str: string): boolean {\n const regex =\n /(?:^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$)|(?:^(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|(?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/;\n return regex.test(str);\n}\n","import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { RequestEventData } from '../types-hoist/request';\nimport { parseCookie } from '../utils/cookie';\nimport { getClientIPAddress, ipHeaderNames } from '../vendor/getIpAddress';\n\ninterface RequestDataIncludeOptions {\n cookies?: boolean;\n data?: boolean;\n headers?: boolean;\n ip?: boolean;\n query_string?: boolean;\n url?: boolean;\n}\n\ntype RequestDataIntegrationOptions = {\n /**\n * Controls what data is pulled from the request and added to the event.\n */\n include?: RequestDataIncludeOptions;\n};\n\n// TODO(v11): Change defaults based on `sendDefaultPii`\nconst DEFAULT_INCLUDE: RequestDataIncludeOptions = {\n cookies: true,\n data: true,\n headers: true,\n query_string: true,\n url: true,\n};\n\nconst INTEGRATION_NAME = 'RequestData';\n\nconst _requestDataIntegration = ((options: RequestDataIntegrationOptions = {}) => {\n const include = {\n ...DEFAULT_INCLUDE,\n ...options.include,\n };\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event, _hint, client) {\n const { sdkProcessingMetadata = {} } = event;\n const { normalizedRequest, ipAddress } = sdkProcessingMetadata;\n\n const includeWithDefaultPiiApplied: RequestDataIncludeOptions = {\n ...include,\n ip: include.ip ?? client.getOptions().sendDefaultPii,\n };\n\n if (normalizedRequest) {\n addNormalizedRequestDataToEvent(event, normalizedRequest, { ipAddress }, includeWithDefaultPiiApplied);\n }\n\n return event;\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core`\n * so it can be used in cross-platform SDKs like `@sentry/nextjs`.\n */\nexport const requestDataIntegration = defineIntegration(_requestDataIntegration);\n\n/**\n * Add already normalized request data to an event.\n * This mutates the passed in event.\n */\nfunction addNormalizedRequestDataToEvent(\n event: Event,\n req: RequestEventData,\n // Data that should not go into `event.request` but is somehow related to requests\n additionalData: { ipAddress?: string },\n include: RequestDataIncludeOptions,\n): void {\n event.request = {\n ...event.request,\n ...extractNormalizedRequestData(req, include),\n };\n\n if (include.ip) {\n const ip = (req.headers && getClientIPAddress(req.headers)) || additionalData.ipAddress;\n if (ip) {\n event.user = {\n ...event.user,\n ip_address: ip,\n };\n }\n }\n}\n\nfunction extractNormalizedRequestData(\n normalizedRequest: RequestEventData,\n include: RequestDataIncludeOptions,\n): RequestEventData {\n const requestData: RequestEventData = {};\n const headers = { ...normalizedRequest.headers };\n\n if (include.headers) {\n requestData.headers = headers;\n\n // Remove the Cookie header in case cookie data should not be included in the event\n if (!include.cookies) {\n delete (headers as { cookie?: string }).cookie;\n }\n\n // Remove IP headers in case IP data should not be included in the event\n if (!include.ip) {\n ipHeaderNames.forEach(ipHeaderName => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (headers as Record)[ipHeaderName];\n });\n }\n }\n\n requestData.method = normalizedRequest.method;\n\n if (include.url) {\n requestData.url = normalizedRequest.url;\n }\n\n if (include.cookies) {\n const cookies = normalizedRequest.cookies || (headers?.cookie ? parseCookie(headers.cookie) : undefined);\n requestData.cookies = cookies || {};\n }\n\n if (include.query_string) {\n requestData.query_string = normalizedRequest.query_string;\n }\n\n if (include.data) {\n requestData.data = normalizedRequest.data;\n }\n\n return requestData;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger';\nimport { fill } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n const handlerData: HandlerDataConsole = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log?.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n","import type { SeverityLevel } from '../types-hoist/severity';\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 */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (\n level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n ) as SeverityLevel;\n}\n","import { getClient, withScope } from '../currentScopes';\nimport { captureException } from '../exports';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { CaptureContext } from '../scope';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { addExceptionMechanism } from '../utils/misc';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface CaptureConsoleOptions {\n levels?: string[];\n\n /**\n * By default, Sentry will mark captured console messages as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled?: boolean;\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n const handled = options.handled ?? true;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args: unknown[], level: string, handled: boolean): void {\n const severityLevel = severityLevelFromString(level);\n\n /*\n We create this error here already to attach a stack trace to captured messages,\n if users set `attachStackTrace` to `true` in Sentry.init.\n We do this here already because we want to minimize the number of Sentry SDK stack frames\n within the error. Technically, Client.captureMessage will also do it but this happens several\n stack frames deeper.\n */\n const syntheticException = new Error();\n\n const captureContext: CaptureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'auto.core.capture_console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n });\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent: Event | undefined;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && debug.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Deduplication filter.\n */\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\nexport function _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\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\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const 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\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const 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\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\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 as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameA = previousFrames[i]!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const 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\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\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 as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception?.values?.[0];\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Contexts } from '../types-hoist/context';\nimport type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isError, isPlainObject } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { truncate } from '../utils/string';\n\nconst INTEGRATION_NAME = 'ExtraErrorData';\n\ninterface ExtraErrorDataOptions {\n /**\n * The object depth up to which to capture data on error objects.\n */\n depth: number;\n\n /**\n * Whether to capture error causes. Defaults to true.\n *\n * More information: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n */\n captureErrorCause: boolean;\n}\n\n/**\n * Extract additional data for from original exceptions.\n */\nconst _extraErrorDataIntegration = ((options: Partial = {}) => {\n const { depth = 3, captureErrorCause = true } = options;\n return {\n name: INTEGRATION_NAME,\n processEvent(event, hint, client) {\n const { maxValueLength } = client.getOptions();\n return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration);\n\nfunction _enhanceEventWithErrorData(\n event: Event,\n hint: EventHint = {},\n depth: number,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Event {\n if (!hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const exceptionName = (hint.originalException as ExtendedError).name || hint.originalException.constructor.name;\n\n const errorData = _extractErrorData(hint.originalException as ExtendedError, captureErrorCause, maxValueLength);\n\n if (errorData) {\n const contexts: Contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, depth);\n\n if (isPlainObject(normalizedErrorData)) {\n // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n // potentially truncate the data we just already normalized, with a certain depth setting.\n addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n contexts[exceptionName] = normalizedErrorData;\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n}\n\n/**\n * Extract extra information from the Error object\n */\nfunction _extractErrorData(\n error: ExtendedError,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Record | null {\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = [\n 'name',\n 'message',\n 'stack',\n 'line',\n 'column',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'toJSON',\n ];\n\n const extraErrorInfo: Record = {};\n\n // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n for (const key of Object.keys(error)) {\n if (nativeKeys.indexOf(key) !== -1) {\n continue;\n }\n const value = error[key];\n extraErrorInfo[key] =\n isError(value) || typeof value === 'string'\n ? maxValueLength\n ? truncate(`${value}`, maxValueLength)\n : `${value}`\n : value;\n }\n\n // Error.cause is a standard property that is non enumerable, we therefore need to access it separately.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n if (captureErrorCause && error.cause !== undefined) {\n if (isError(error.cause)) {\n const errorName = error.cause.name || error.cause.constructor.name;\n extraErrorInfo.cause = { [errorName]: _extractErrorData(error.cause as ExtendedError, false, maxValueLength) };\n } else {\n extraErrorInfo.cause = error.cause;\n }\n }\n\n // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n if (typeof error.toJSON === 'function') {\n const serializedError = error.toJSON() as Record;\n\n for (const key of Object.keys(serializedError)) {\n const value = serializedError[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n }\n\n return extraErrorInfo;\n } catch (oO) {\n DEBUG_BUILD && debug.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return null;\n}\n","// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js\n//\n// Copyright Joyent, Inc.and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/** JSDoc */\nfunction normalizeArray(parts: string[], allowAboveRoot?: boolean): string[] {\n // if the path tries to go above the root, `up` ends up > 0\n let up = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\S+:\\\\|\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^/\\\\]+?|)(\\.[^./\\\\]*|))(?:[/\\\\]*)$/;\n/** JSDoc */\nfunction splitPath(filename: string): string[] {\n // Truncate files names greater than 1024 characters to avoid regex dos\n // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172\n const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename;\n const parts = splitPathRe.exec(truncated);\n return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nexport function resolve(...args: string[]): string {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : '/';\n\n // Skip empty entries\n if (!path) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(\n resolvedPath.split('/').filter(p => !!p),\n !resolvedAbsolute,\n ).join('/');\n\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr: string[]): string[] {\n let start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') {\n break;\n }\n }\n\n let end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') {\n break;\n }\n }\n\n if (start > end) {\n return [];\n }\n return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nexport function relative(from: string, to: string): string {\n /* eslint-disable no-param-reassign */\n from = resolve(from).slice(1);\n to = resolve(to).slice(1);\n /* eslint-enable no-param-reassign */\n\n const fromParts = trim(from.split('/'));\n const toParts = trim(to.split('/'));\n\n const length = Math.min(fromParts.length, toParts.length);\n let samePartsLength = length;\n for (let i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n let outputParts = [];\n for (let i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nexport function normalizePath(path: string): string {\n const isPathAbsolute = isAbsolute(path);\n const trailingSlash = path.slice(-1) === '/';\n\n // Normalize the path\n let normalizedPath = normalizeArray(\n path.split('/').filter(p => !!p),\n !isPathAbsolute,\n ).join('/');\n\n if (!normalizedPath && !isPathAbsolute) {\n normalizedPath = '.';\n }\n if (normalizedPath && trailingSlash) {\n normalizedPath += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nexport function isAbsolute(path: string): boolean {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\n const result = splitPath(path);\n const root = result[0] || '';\n let dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.slice(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\n/** JSDoc */\nexport function basename(path: string, ext?: string): string {\n let f = splitPath(path)[2] || '';\n if (ext && f.slice(ext.length * -1) === ext) {\n f = f.slice(0, f.length - ext.length);\n }\n return f;\n}\n","import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { Stacktrace } from '../types-hoist/stacktrace';\nimport { basename, relative } from '../utils/path';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype StackFrameIteratee = (frame: StackFrame) => StackFrame;\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\ninterface RewriteFramesOptions {\n /**\n * Root path (the beginning of the path) that will be stripped from the frames' filename.\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `root` will be stripped from the beginning stack frames' paths (if the path started with the value).\n * - On the server, the root value will only replace the beginning of stack frame filepaths, when the path is absolute. If no `root` value is provided and the path is absolute, the frame will be reduced to only the filename and the provided `prefix` option.\n *\n * Browser example:\n * - Original frame: `'http://example.com/my/path/static/asset.js'`\n * - `root: 'http://example.com/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n *\n * Server example:\n * - Original frame: `'/User/local/my/path/static/asset.js'`\n * - `root: '/User/local/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n */\n root?: string;\n\n /**\n * A custom prefix that stack frames will be prepended with.\n *\n * Default: `'app://'`\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `prefix` will prefix the resulting filename when the value you provided in `root` was applied. Effectively replacing whatever `root` matched in the beginning of the frame with `prefix`.\n * - On the server, the prefix is applied to all stackframes with absolute paths. On Windows, the drive identifier (e.g. \"C://\") is replaced with the prefix.\n */\n prefix?: string;\n\n /**\n * Defines an iterator that is used to iterate through all of the stack frames for modification before being sent to Sentry.\n * Setting this option will effectively disable both the `root` and the `prefix` options.\n */\n iteratee?: StackFrameIteratee;\n}\n\n/**\n * Rewrite event frames paths.\n */\nexport const rewriteFramesIntegration = defineIntegration((options: RewriteFramesOptions = {}) => {\n const root = options.root;\n const prefix = options.prefix || 'app:///';\n\n const isBrowser = 'window' in GLOBAL_OBJ && !!GLOBAL_OBJ.window;\n\n const iteratee: StackFrameIteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix });\n\n /** Process an exception event. */\n function _processExceptionsEvent(event: Event): Event {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n values: event.exception!.values!.map(value => ({\n ...value,\n ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n })),\n },\n };\n } catch {\n return event;\n }\n }\n\n /** Process a stack trace. */\n function _processStacktrace(stacktrace?: Stacktrace): Stacktrace {\n return {\n ...stacktrace,\n frames: stacktrace?.frames?.map(f => iteratee(f)),\n };\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent) {\n let processedEvent = originalEvent;\n\n if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n processedEvent = _processExceptionsEvent(processedEvent);\n }\n\n return processedEvent;\n },\n };\n});\n\n/**\n * Exported only for tests.\n */\nexport function generateIteratee({\n isBrowser,\n root,\n prefix,\n}: {\n isBrowser: boolean;\n root?: string;\n prefix: string;\n}): StackFrameIteratee {\n return (frame: StackFrame) => {\n if (!frame.filename) {\n return frame;\n }\n\n // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n const isWindowsFrame =\n /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n\n // Check if the frame filename begins with `/`\n const startsWithSlash = /^\\//.test(frame.filename);\n\n if (isBrowser) {\n if (root) {\n const oldFilename = frame.filename;\n if (oldFilename.indexOf(root) === 0) {\n frame.filename = oldFilename.replace(root, prefix);\n }\n }\n } else {\n if (isWindowsFrame || startsWithSlash) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = root ? relative(root, filename) : basename(filename);\n frame.filename = `${prefix}${base}`;\n }\n }\n\n return frame;\n };\n}\n","// Based on Kamil Ogórek's work on:\n// https://github.com/supabase-community/sentry-integration-js\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-lines */\nimport { addBreadcrumb } from '../breadcrumbs';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { captureException } from '../exports';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, SPAN_STATUS_OK, startSpan } from '../tracing';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isPlainObject } from '../utils/is';\nimport { addExceptionMechanism } from '../utils/misc';\n\nconst AUTH_OPERATIONS_TO_INSTRUMENT = [\n 'reauthenticate',\n 'signInAnonymously',\n 'signInWithOAuth',\n 'signInWithIdToken',\n 'signInWithOtp',\n 'signInWithPassword',\n 'signInWithSSO',\n 'signOut',\n 'signUp',\n 'verifyOtp',\n];\n\nconst AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT = [\n 'createUser',\n 'deleteUser',\n 'listUsers',\n 'getUserById',\n 'updateUserById',\n 'inviteUserByEmail',\n];\n\nexport const FILTER_MAPPINGS = {\n eq: 'eq',\n neq: 'neq',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n like: 'like',\n 'like(all)': 'likeAllOf',\n 'like(any)': 'likeAnyOf',\n ilike: 'ilike',\n 'ilike(all)': 'ilikeAllOf',\n 'ilike(any)': 'ilikeAnyOf',\n is: 'is',\n in: 'in',\n cs: 'contains',\n cd: 'containedBy',\n sr: 'rangeGt',\n nxl: 'rangeGte',\n sl: 'rangeLt',\n nxr: 'rangeLte',\n adj: 'rangeAdjacent',\n ov: 'overlaps',\n fts: '',\n plfts: 'plain',\n phfts: 'phrase',\n wfts: 'websearch',\n not: 'not',\n};\n\nexport const DB_OPERATIONS_TO_INSTRUMENT = ['select', 'insert', 'upsert', 'update', 'delete'];\n\ntype AuthOperationFn = (...args: unknown[]) => Promise;\ntype AuthOperationName = (typeof AUTH_OPERATIONS_TO_INSTRUMENT)[number];\ntype AuthAdminOperationName = (typeof AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT)[number];\ntype PostgRESTQueryOperationFn = (...args: unknown[]) => PostgRESTFilterBuilder;\n\nexport interface SupabaseClientInstance {\n auth: {\n admin: Record;\n } & Record;\n}\n\nexport interface PostgRESTQueryBuilder {\n [key: string]: PostgRESTQueryOperationFn;\n}\n\nexport interface PostgRESTFilterBuilder {\n method: string;\n headers: Record;\n url: URL;\n schema: string;\n body: any;\n}\n\nexport interface SupabaseResponse {\n status?: number;\n error?: {\n message: string;\n code?: string;\n details?: unknown;\n };\n}\n\nexport interface SupabaseError extends Error {\n code?: string;\n details?: unknown;\n}\n\nexport interface SupabaseBreadcrumb {\n type: string;\n category: string;\n message: string;\n data?: {\n query?: string[];\n body?: Record;\n };\n}\n\nexport interface SupabaseClientConstructor {\n prototype: {\n from: (table: string) => PostgRESTQueryBuilder;\n };\n}\n\nexport interface PostgRESTProtoThenable {\n then: (\n onfulfilled?: ((value: T) => T | PromiseLike) | null,\n onrejected?: ((reason: any) => T | PromiseLike) | null,\n ) => Promise;\n}\n\ntype SentryInstrumented = T & {\n __SENTRY_INSTRUMENTED__?: boolean;\n};\n\nfunction markAsInstrumented(fn: T): void {\n try {\n (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__ = true;\n } catch {\n // ignore errors here\n }\n}\n\nfunction isInstrumented(fn: T): boolean | undefined {\n try {\n return (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts the database operation type from the HTTP method and headers\n * @param method - The HTTP method of the request\n * @param headers - The request headers\n * @returns The database operation type ('select', 'insert', 'upsert', 'update', or 'delete')\n */\nexport function extractOperation(method: string, headers: Record = {}): string {\n switch (method) {\n case 'GET': {\n return 'select';\n }\n case 'POST': {\n if (headers['Prefer']?.includes('resolution=')) {\n return 'upsert';\n } else {\n return 'insert';\n }\n }\n case 'PATCH': {\n return 'update';\n }\n case 'DELETE': {\n return 'delete';\n }\n default: {\n return '';\n }\n }\n}\n\n/**\n * Translates Supabase filter parameters into readable method names for tracing\n * @param key - The filter key from the URL search parameters\n * @param query - The filter value from the URL search parameters\n * @returns A string representation of the filter as a method call\n */\nexport function translateFiltersIntoMethods(key: string, query: string): string {\n if (query === '' || query === '*') {\n return 'select(*)';\n }\n\n if (key === 'select') {\n return `select(${query})`;\n }\n\n if (key === 'or' || key.endsWith('.or')) {\n return `${key}${query}`;\n }\n\n const [filter, ...value] = query.split('.');\n\n let method;\n // Handle optional `configPart` of the filter\n if (filter?.startsWith('fts')) {\n method = 'textSearch';\n } else if (filter?.startsWith('plfts')) {\n method = 'textSearch[plain]';\n } else if (filter?.startsWith('phfts')) {\n method = 'textSearch[phrase]';\n } else if (filter?.startsWith('wfts')) {\n method = 'textSearch[websearch]';\n } else {\n method = (filter && FILTER_MAPPINGS[filter as keyof typeof FILTER_MAPPINGS]) || 'filter';\n }\n\n return `${method}(${key}, ${value.join('.')})`;\n}\n\nfunction instrumentAuthOperation(operation: AuthOperationFn, isAdmin = false): AuthOperationFn {\n return new Proxy(operation, {\n apply(target, thisArg, argumentsList) {\n return startSpan(\n {\n name: `auth ${isAdmin ? '(admin) ' : ''}${operation.name}`,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n 'db.system': 'postgresql',\n 'db.operation': `auth.${isAdmin ? 'admin.' : ''}${operation.name}`,\n },\n },\n span => {\n return Reflect.apply(target, thisArg, argumentsList)\n .then((res: unknown) => {\n if (res && typeof res === 'object' && 'error' in res && res.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n\n captureException(res.error, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n } else {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n span.end();\n return res;\n })\n .catch((err: unknown) => {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n span.end();\n\n captureException(err, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n\n throw err;\n })\n .then(...argumentsList);\n },\n );\n },\n });\n}\n\nfunction instrumentSupabaseAuthClient(supabaseClientInstance: SupabaseClientInstance): void {\n const auth = supabaseClientInstance.auth;\n\n if (!auth || isInstrumented(supabaseClientInstance.auth)) {\n return;\n }\n\n for (const operation of AUTH_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth[operation] === 'function') {\n supabaseClientInstance.auth[operation] = instrumentAuthOperation(authOperation);\n }\n }\n\n for (const operation of AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth.admin[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth.admin[operation] === 'function') {\n supabaseClientInstance.auth.admin[operation] = instrumentAuthOperation(authOperation, true);\n }\n }\n\n markAsInstrumented(supabaseClientInstance.auth);\n}\n\nfunction instrumentSupabaseClientConstructor(SupabaseClient: unknown): void {\n if (isInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from)) {\n return;\n }\n\n (SupabaseClient as SupabaseClientConstructor).prototype.from = new Proxy(\n (SupabaseClient as SupabaseClientConstructor).prototype.from,\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTQueryBuilder = (rv as PostgRESTQueryBuilder).constructor;\n\n instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder as unknown as new () => PostgRESTQueryBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from);\n}\n\nfunction instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder: PostgRESTFilterBuilder['constructor']): void {\n if (isInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then)) {\n return;\n }\n\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then = new Proxy(\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then,\n {\n apply(target, thisArg, argumentsList) {\n const operations = DB_OPERATIONS_TO_INSTRUMENT;\n const typedThis = thisArg as PostgRESTFilterBuilder;\n const operation = extractOperation(typedThis.method, typedThis.headers);\n\n if (!operations.includes(operation)) {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n if (!typedThis?.url?.pathname || typeof typedThis.url.pathname !== 'string') {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n const pathParts = typedThis.url.pathname.split('/');\n const table = pathParts.length > 0 ? pathParts[pathParts.length - 1] : '';\n\n const queryItems: string[] = [];\n for (const [key, value] of typedThis.url.searchParams.entries()) {\n // It's possible to have multiple entries for the same key, eg. `id=eq.7&id=eq.3`,\n // so we need to use array instead of object to collect them.\n queryItems.push(translateFiltersIntoMethods(key, value));\n }\n const body: Record = Object.create(null);\n if (isPlainObject(typedThis.body)) {\n for (const [key, value] of Object.entries(typedThis.body)) {\n body[key] = value;\n }\n }\n\n // Adding operation to the beginning of the description if it's not a `select` operation\n // For example, it can be an `insert` or `update` operation but the query can be `select(...)`\n // For `select` operations, we don't need repeat it in the description\n const description = `${operation === 'select' ? '' : `${operation}${body ? '(...) ' : ''}`}${queryItems.join(\n ' ',\n )} from(${table})`;\n\n const attributes: Record = {\n 'db.table': table,\n 'db.schema': typedThis.schema,\n 'db.url': typedThis.url.origin,\n 'db.sdk': typedThis.headers['X-Client-Info'],\n 'db.system': 'postgresql',\n 'db.operation': operation,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n };\n\n if (queryItems.length) {\n attributes['db.query'] = queryItems;\n }\n\n if (Object.keys(body).length) {\n attributes['db.body'] = body;\n }\n\n return startSpan(\n {\n name: description,\n attributes,\n },\n span => {\n return (Reflect.apply(target, thisArg, []) as Promise)\n .then(\n (res: SupabaseResponse) => {\n if (span) {\n if (res && typeof res === 'object' && 'status' in res) {\n setHttpStatus(span, res.status || 500);\n }\n span.end();\n }\n\n if (res?.error) {\n const err = new Error(res.error.message) as SupabaseError;\n if (res.error.code) {\n err.code = res.error.code;\n }\n if (res.error.details) {\n err.details = res.error.details;\n }\n\n const supabaseContext: Record = {};\n if (queryItems.length) {\n supabaseContext.query = queryItems;\n }\n if (Object.keys(body).length) {\n supabaseContext.body = body;\n }\n\n captureException(err, scope => {\n scope.addEventProcessor(e => {\n addExceptionMechanism(e, {\n handled: false,\n type: 'auto.db.supabase.postgres',\n });\n\n return e;\n });\n\n scope.setContext('supabase', supabaseContext);\n\n return scope;\n });\n }\n\n const breadcrumb: SupabaseBreadcrumb = {\n type: 'supabase',\n category: `db.${operation}`,\n message: description,\n };\n\n const data: Record = {};\n\n if (queryItems.length) {\n data.query = queryItems;\n }\n\n if (Object.keys(body).length) {\n data.body = body;\n }\n\n if (Object.keys(data).length) {\n breadcrumb.data = data;\n }\n\n addBreadcrumb(breadcrumb);\n\n return res;\n },\n (err: Error) => {\n // TODO: shouldn't we capture this error?\n if (span) {\n setHttpStatus(span, 500);\n span.end();\n }\n throw err;\n },\n )\n .then(...argumentsList);\n },\n );\n },\n },\n );\n\n markAsInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then);\n}\n\nfunction instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder: new () => PostgRESTQueryBuilder): void {\n // We need to wrap _all_ operations despite them sharing the same `PostgRESTFilterBuilder`\n // constructor, as we don't know which method will be called first, and we don't want to miss any calls.\n for (const operation of DB_OPERATIONS_TO_INSTRUMENT) {\n if (isInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation])) {\n continue;\n }\n\n type PostgRESTOperation = keyof Pick;\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation] = new Proxy(\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation],\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTFilterBuilder = (rv as PostgRESTFilterBuilder).constructor;\n\n DEBUG_BUILD && debug.log(`Instrumenting ${operation} operation's PostgRESTFilterBuilder`);\n\n instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation]);\n }\n}\n\nexport const instrumentSupabaseClient = (supabaseClient: unknown): void => {\n if (!supabaseClient) {\n DEBUG_BUILD && debug.warn('Supabase integration was not installed because no Supabase client was provided.');\n return;\n }\n const SupabaseClientConstructor =\n supabaseClient.constructor === Function ? supabaseClient : supabaseClient.constructor;\n\n instrumentSupabaseClientConstructor(SupabaseClientConstructor);\n instrumentSupabaseAuthClient(supabaseClient as SupabaseClientInstance);\n};\n\nconst INTEGRATION_NAME = 'Supabase';\n\nconst _supabaseIntegration = ((supabaseClient: unknown) => {\n return {\n setupOnce() {\n instrumentSupabaseClient(supabaseClient);\n },\n name: INTEGRATION_NAME,\n };\n}) satisfies IntegrationFn;\n\nexport const supabaseIntegration = defineIntegration((options: { supabaseClient: any }) => {\n return _supabaseIntegration(options.supabaseClient);\n}) satisfies IntegrationFn;\n","// Portable instrumentation for https://github.com/porsager/postgres\n// This can be used in any environment (Node.js, Cloudflare Workers, etc.)\n// without depending on OpenTelemetry module hooking.\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport { SPAN_STATUS_ERROR, startSpanManual } from '../tracing';\nimport type { Span } from '../types-hoist/span';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan } from '../utils/spanUtils';\n\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\ntype PostgresConnectionContext = {\n ATTR_DB_NAMESPACE?: string;\n ATTR_SERVER_ADDRESS?: string;\n ATTR_SERVER_PORT?: string;\n};\n\ninterface PostgresJsSqlInstrumentationOptions {\n /**\n * Whether to require a parent span for the instrumentation.\n * If set to true, the instrumentation will only create spans if there is a parent span\n * available in the current scope.\n * @default true\n */\n requireParentSpan?: boolean;\n /**\n * Hook to modify the span before it is started.\n * This can be used to set additional attributes or modify the span in any way.\n */\n requestHook?: (span: Span, sanitizedSqlQuery: string, postgresConnectionContext?: PostgresConnectionContext) => void;\n}\n\nconst CONNECTION_CONTEXT_SYMBOL = Symbol('sentryPostgresConnectionContext');\n\n// Use the same Symbol.for() markers as the Node.js OTel instrumentation\n// so that both approaches recognize each other and prevent double-wrapping.\nconst INSTRUMENTED_MARKER = Symbol.for('sentry.instrumented.postgresjs');\n// Marker to track if a query was created from an instrumented sql instance.\n// This prevents double-spanning when both the wrapper and the Node.js Query.prototype\n// fallback patch are active simultaneously.\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\n/**\n * Instruments a postgres.js `sql` instance with Sentry tracing.\n *\n * This is a portable instrumentation function that works in any environment\n * (Node.js, Cloudflare Workers, etc.) without depending on OpenTelemetry.\n *\n * @example\n * ```javascript\n * import postgres from 'postgres';\n * import * as Sentry from '@sentry/cloudflare'; // or '@sentry/deno'\n *\n * const sql = Sentry.instrumentPostgresJsSql(\n * postgres({ host: 'localhost', database: 'mydb' })\n * );\n *\n * // All queries now create Sentry spans\n * await sql`SELECT * FROM users WHERE id = ${userId}`;\n * ```\n */\nexport function instrumentPostgresJsSql(sql: T, options?: PostgresJsSqlInstrumentationOptions): T {\n if (!sql || typeof sql !== 'function') {\n DEBUG_BUILD && debug.warn('instrumentPostgresJsSql: provided value is not a valid postgres.js sql instance');\n return sql;\n }\n\n return _instrumentSqlInstance(sql, { requireParentSpan: true, ...options }) as T;\n}\n\n/**\n * Instruments a sql instance by wrapping its query execution methods.\n */\nfunction _instrumentSqlInstance(\n sql: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n parentConnectionContext?: PostgresConnectionContext,\n): unknown {\n // Check if already instrumented to prevent double-wrapping\n // Using Symbol.for() ensures the marker survives proxying\n if ((sql as Record)[INSTRUMENTED_MARKER]) {\n return sql;\n }\n\n // Wrap the sql function to intercept query creation\n const proxiedSql: unknown = new Proxy(sql as (...args: unknown[]) => unknown, {\n apply(target, thisArg, argumentsList: unknown[]) {\n const query = Reflect.apply(target, thisArg, argumentsList);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query as { handle: unknown; strings?: string[] }, proxiedSql, options);\n }\n\n return query;\n },\n get(target, prop) {\n const original = (target as unknown as Record)[prop];\n\n if (typeof prop !== 'string' || typeof original !== 'function') {\n return original;\n }\n\n // Wrap methods that return PendingQuery objects (unsafe, file)\n if (prop === 'unsafe' || prop === 'file') {\n return _wrapQueryMethod(original as (...args: unknown[]) => unknown, target, proxiedSql, options);\n }\n\n // Wrap begin and reserve (not savepoint to avoid duplicate spans)\n if (prop === 'begin' || prop === 'reserve') {\n return _wrapCallbackMethod(original as (...args: unknown[]) => unknown, target, proxiedSql, options);\n }\n\n return original;\n },\n });\n\n // Use provided parent context if available, otherwise extract from sql.options\n if (parentConnectionContext) {\n (proxiedSql as Record)[CONNECTION_CONTEXT_SYMBOL] = parentConnectionContext;\n } else {\n _attachConnectionContext(sql, proxiedSql as Record);\n }\n\n // Mark both the original and proxy as instrumented to prevent double-wrapping\n (sql as Record)[INSTRUMENTED_MARKER] = true;\n (proxiedSql as Record)[INSTRUMENTED_MARKER] = true;\n\n return proxiedSql;\n}\n\n/**\n * Wraps query-returning methods (unsafe, file) to ensure their queries are instrumented.\n */\nfunction _wrapQueryMethod(\n original: (...args: unknown[]) => unknown,\n target: unknown,\n proxiedSql: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): (...args: unknown[]) => unknown {\n return function (this: unknown, ...args: unknown[]): unknown {\n const query = Reflect.apply(original, target, args);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query as { handle: unknown; strings?: string[] }, proxiedSql, options);\n }\n\n return query;\n };\n}\n\n/**\n * Wraps callback-based methods (begin, reserve) to recursively instrument Sql instances.\n * Note: These methods can also be used as tagged templates, which we pass through unchanged.\n *\n * Savepoint is not wrapped to avoid complex nested transaction instrumentation issues.\n * Queries within savepoint callbacks are still instrumented through the parent transaction's Sql instance.\n */\nfunction _wrapCallbackMethod(\n original: (...args: unknown[]) => unknown,\n target: unknown,\n parentSqlInstance: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): (...args: unknown[]) => unknown {\n return function (this: unknown, ...args: unknown[]): unknown {\n // Extract parent context to propagate to child instances\n const parentContext = (parentSqlInstance as Record)[CONNECTION_CONTEXT_SYMBOL] as\n | PostgresConnectionContext\n | undefined;\n\n // Check if this is a callback-based call by verifying the last argument is a function\n const isCallbackBased = typeof args[args.length - 1] === 'function';\n\n if (!isCallbackBased) {\n // Not a callback-based call - could be tagged template or promise-based\n const result = Reflect.apply(original, target, args);\n // If result is a Promise (e.g., reserve() without callback), instrument the resolved Sql instance\n if (result && typeof (result as Promise).then === 'function') {\n return (result as Promise).then((sqlInstance: unknown) => {\n return _instrumentSqlInstance(sqlInstance, options, parentContext);\n });\n }\n return result;\n }\n\n // Callback-based call: wrap the callback to instrument the Sql instance\n const callback = (args.length === 1 ? args[0] : args[1]) as (sql: unknown) => unknown;\n const wrappedCallback = function (sqlInstance: unknown): unknown {\n const instrumentedSql = _instrumentSqlInstance(sqlInstance, options, parentContext);\n return callback(instrumentedSql);\n };\n\n const newArgs = args.length === 1 ? [wrappedCallback] : [args[0], wrappedCallback];\n return Reflect.apply(original, target, newArgs);\n };\n}\n\n/**\n * Wraps a single query's handle method to create spans.\n */\nfunction _wrapSingleQueryHandle(\n query: { handle: unknown; strings?: string[]; __sentryWrapped?: boolean },\n sqlInstance: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): void {\n // Prevent double wrapping - check if the handle itself is already wrapped\n if ((query.handle as { __sentryWrapped?: boolean })?.__sentryWrapped) {\n return;\n }\n\n // Mark this query as coming from an instrumented sql instance.\n // This prevents the Node.js Query.prototype fallback patch from double-spanning.\n (query as Record)[QUERY_FROM_INSTRUMENTED_SQL] = true;\n\n const originalHandle = query.handle as (...args: unknown[]) => Promise;\n\n // IMPORTANT: We must replace the handle function directly, not use a Proxy,\n // because Query.then() internally calls this.handle(), which would bypass a Proxy wrapper.\n const wrappedHandle = async function (this: unknown, ...args: unknown[]): Promise {\n if (!_shouldCreateSpans(options)) {\n return originalHandle.apply(this, args);\n }\n\n const fullQuery = _reconstructQuery(query.strings);\n const sanitizedSqlQuery = _sanitizeSqlQuery(fullQuery);\n\n return startSpanManual(\n {\n name: sanitizedSqlQuery || 'postgresjs.query',\n op: 'db',\n },\n (span: Span) => {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.postgresjs');\n\n span.setAttributes({\n 'db.system.name': 'postgres',\n 'db.query.text': sanitizedSqlQuery,\n });\n\n const connectionContext = sqlInstance\n ? ((sqlInstance as Record)[CONNECTION_CONTEXT_SYMBOL] as\n | PostgresConnectionContext\n | undefined)\n : undefined;\n\n _setConnectionAttributes(span, connectionContext);\n\n if (options.requestHook) {\n try {\n options.requestHook(span, sanitizedSqlQuery, connectionContext);\n } catch (e) {\n span.setAttribute('sentry.hook.error', 'requestHook failed');\n DEBUG_BUILD && debug.error('Error in requestHook for PostgresJs instrumentation:', e);\n }\n }\n\n const queryWithCallbacks = this as {\n resolve: unknown;\n reject: unknown;\n };\n\n queryWithCallbacks.resolve = new Proxy(queryWithCallbacks.resolve as (...args: unknown[]) => unknown, {\n apply: (resolveTarget, resolveThisArg, resolveArgs: [{ command?: string }]) => {\n try {\n _setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n }\n\n return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n },\n });\n\n queryWithCallbacks.reject = new Proxy(queryWithCallbacks.reject as (...args: unknown[]) => unknown, {\n apply: (rejectTarget, rejectThisArg, rejectArgs: { message?: string; code?: string; name?: string }[]) => {\n try {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: rejectArgs?.[0]?.message || 'unknown_error',\n });\n\n span.setAttribute('db.response.status_code', rejectArgs?.[0]?.code || 'unknown');\n span.setAttribute('error.type', rejectArgs?.[0]?.name || 'unknown');\n\n _setOperationName(span, sanitizedSqlQuery);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n }\n return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n },\n });\n\n // Handle synchronous errors that might occur before promise is created\n try {\n return originalHandle.apply(this, args);\n } catch (e) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: e instanceof Error ? e.message : 'unknown_error',\n });\n span.end();\n throw e;\n }\n },\n );\n };\n\n (wrappedHandle as { __sentryWrapped?: boolean }).__sentryWrapped = true;\n query.handle = wrappedHandle;\n}\n\n/**\n * Determines whether a span should be created based on the current context.\n * If `requireParentSpan` is set to true in the options, a span will\n * only be created if there is a parent span available.\n */\nfunction _shouldCreateSpans(options: PostgresJsSqlInstrumentationOptions): boolean {\n const hasParentSpan = getActiveSpan() !== undefined;\n return hasParentSpan || !options.requireParentSpan;\n}\n\n/**\n * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n *\n * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n * strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n * returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n *\n * @internal Exported for testing only\n */\nexport function _reconstructQuery(strings: string[] | undefined): string | undefined {\n if (!strings?.length) {\n return undefined;\n }\n if (strings.length === 1) {\n return strings[0] || undefined;\n }\n // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n}\n\n/**\n * Sanitize SQL query as per the OTEL semantic conventions\n * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n *\n * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n *\n * @internal Exported for testing only\n */\nexport function _sanitizeSqlQuery(sqlQuery: string | undefined): string {\n if (!sqlQuery) {\n return 'Unknown SQL Query';\n }\n\n return (\n sqlQuery\n // Remove comments first (they may contain newlines and extra spaces)\n .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n .replace(/;\\s*$/, '') // Remove trailing semicolons\n // Collapse whitespace to a single space (after removing comments)\n .replace(/\\s+/g, ' ')\n .trim() // Remove extra spaces and trim\n // Sanitize hex/binary literals before string literals\n .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n // Sanitize string literals (handles escaped quotes)\n .replace(/'(?:[^']|'')*'/g, '?')\n // Sanitize hex numbers\n .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n // Sanitize boolean literals\n .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n .replace(/(?): void {\n const sqlInstance = sql as { options?: { host?: string[]; port?: number[]; database?: string } };\n if (!sqlInstance.options || typeof sqlInstance.options !== 'object') {\n return;\n }\n\n const opts = sqlInstance.options;\n // postgres.js stores parsed options with host and port as arrays\n // The library defaults to 'localhost' and 5432 if not specified, but we're defensive here\n const host = opts.host?.[0] || 'localhost';\n const port = opts.port?.[0] || 5432;\n\n const connectionContext: PostgresConnectionContext = {\n ATTR_DB_NAMESPACE: typeof opts.database === 'string' && opts.database !== '' ? opts.database : undefined,\n ATTR_SERVER_ADDRESS: host,\n ATTR_SERVER_PORT: String(port),\n };\n\n proxiedSql[CONNECTION_CONTEXT_SYMBOL] = connectionContext;\n}\n","import { defineIntegration } from '../integration';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { isError } from '../utils/is';\nimport { truncate } from '../utils/string';\n\ninterface ZodErrorsOptions {\n key?: string;\n /**\n * Limits the number of Zod errors inlined in each Sentry event.\n *\n * @default 10\n */\n limit?: number;\n /**\n * Save full list of Zod issues as an attachment in Sentry\n *\n * @default false\n */\n saveZodIssuesAsAttachment?: boolean;\n}\n\nconst DEFAULT_LIMIT = 10;\nconst INTEGRATION_NAME = 'ZodErrors';\n\n/**\n * Simplified ZodIssue type definition\n */\ninterface ZodIssue {\n path: (string | number)[];\n message?: string;\n expected?: unknown;\n received?: unknown;\n unionErrors?: unknown[];\n keys?: unknown[];\n invalid_literal?: unknown;\n}\n\ninterface ZodError extends Error {\n issues: ZodIssue[];\n}\n\nfunction originalExceptionIsZodError(originalException: unknown): originalException is ZodError {\n return (\n isError(originalException) &&\n originalException.name === 'ZodError' &&\n Array.isArray((originalException as ZodError).issues)\n );\n}\n\ntype SingleLevelZodIssue = {\n [P in keyof T]: T[P] extends string | number | undefined\n ? T[P]\n : T[P] extends unknown[]\n ? string | undefined\n : unknown;\n};\n\n/**\n * Formats child objects or arrays to a string\n * that is preserved when sent to Sentry.\n *\n * Without this, we end up with something like this in Sentry:\n *\n * [\n * [Object],\n * [Object],\n * [Object],\n * [Object]\n * ]\n */\nexport function flattenIssue(issue: ZodIssue): SingleLevelZodIssue {\n return {\n ...issue,\n path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined,\n keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined,\n unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined,\n };\n}\n\n/**\n * Takes ZodError issue path array and returns a flattened version as a string.\n * This makes it easier to display paths within a Sentry error message.\n *\n * Array indexes are normalized to reduce duplicate entries\n *\n * @param path ZodError issue path\n * @returns flattened path\n *\n * @example\n * flattenIssuePath([0, 'foo', 1, 'bar']) // -> '.foo..bar'\n */\nexport function flattenIssuePath(path: Array): string {\n return path\n .map(p => {\n if (typeof p === 'number') {\n return '';\n } else {\n return p;\n }\n })\n .join('.');\n}\n\n/**\n * Zod error message is a stringified version of ZodError.issues\n * This doesn't display well in the Sentry UI. Replace it with something shorter.\n */\nexport function formatIssueMessage(zodError: ZodError): string {\n const errorKeyMap = new Set();\n for (const iss of zodError.issues) {\n const issuePath = flattenIssuePath(iss.path);\n if (issuePath.length > 0) {\n errorKeyMap.add(issuePath);\n }\n }\n\n const errorKeys = Array.from(errorKeyMap);\n if (errorKeys.length === 0) {\n // If there are no keys, then we're likely validating the root\n // variable rather than a key within an object. This attempts\n // to extract what type it was that failed to validate.\n // For example, z.string().parse(123) would return \"string\" here.\n let rootExpectedType = 'variable';\n if (zodError.issues.length > 0) {\n const iss = zodError.issues[0];\n if (iss !== undefined && 'expected' in iss && typeof iss.expected === 'string') {\n rootExpectedType = iss.expected;\n }\n }\n return `Failed to validate ${rootExpectedType}`;\n }\n return `Failed to validate keys: ${truncate(errorKeys.join(', '), 100)}`;\n}\n\n/**\n * Applies ZodError issues to an event extra and replaces the error message\n */\nexport function applyZodErrorsToEvent(\n limit: number,\n saveZodIssuesAsAttachment: boolean = false,\n event: Event,\n hint: EventHint,\n): Event {\n if (\n !event.exception?.values ||\n !hint.originalException ||\n !originalExceptionIsZodError(hint.originalException) ||\n hint.originalException.issues.length === 0\n ) {\n return event;\n }\n\n try {\n const issuesToFlatten = saveZodIssuesAsAttachment\n ? hint.originalException.issues\n : hint.originalException.issues.slice(0, limit);\n const flattenedIssues = issuesToFlatten.map(flattenIssue);\n\n if (saveZodIssuesAsAttachment) {\n // Sometimes having the full error details can be helpful.\n // Attachments have much higher limits, so we can include the full list of issues.\n if (!Array.isArray(hint.attachments)) {\n hint.attachments = [];\n }\n hint.attachments.push({\n filename: 'zod_issues.json',\n data: JSON.stringify({\n issues: flattenedIssues,\n }),\n });\n }\n\n return {\n ...event,\n exception: {\n ...event.exception,\n values: [\n {\n ...event.exception.values[0],\n value: formatIssueMessage(hint.originalException),\n },\n ...event.exception.values.slice(1),\n ],\n },\n extra: {\n ...event.extra,\n 'zoderror.issues': flattenedIssues.slice(0, limit),\n },\n };\n } catch (e) {\n // Hopefully we never throw errors here, but record it\n // with the event just in case.\n return {\n ...event,\n extra: {\n ...event.extra,\n 'zoderrors sentry integration parse error': {\n message: 'an exception was thrown while processing ZodError within applyZodErrorsToEvent()',\n error: e instanceof Error ? `${e.name}: ${e.message}\\n${e.stack}` : 'unknown',\n },\n },\n };\n }\n}\n\nconst _zodErrorsIntegration = ((options: ZodErrorsOptions = {}) => {\n const limit = options.limit ?? DEFAULT_LIMIT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent, hint): Event {\n const processedEvent = applyZodErrorsToEvent(limit, options.saveZodIssuesAsAttachment, originalEvent, hint);\n return processedEvent;\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Sentry integration to process Zod errors, making them easier to work with in Sentry.\n */\nexport const zodErrorsIntegration = defineIntegration(_zodErrorsIntegration);\n","import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { forEachEnvelopeItem } from '../utils/envelope';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\ninterface Options {\n /**\n * Keys that have been provided in the Sentry bundler plugin via the the `applicationKey` option, identifying your bundles.\n *\n * - Webpack plugin: https://www.npmjs.com/package/@sentry/webpack-plugin#applicationkey\n * - Vite plugin: https://www.npmjs.com/package/@sentry/vite-plugin#applicationkey\n * - Esbuild plugin: https://www.npmjs.com/package/@sentry/esbuild-plugin#applicationkey\n * - Rollup plugin: https://www.npmjs.com/package/@sentry/rollup-plugin#applicationkey\n */\n filterKeys: string[];\n\n /**\n * Defines how the integration should behave. \"Third-Party Stack Frames\" are stack frames that did not come from files marked with a matching bundle key.\n *\n * You can define the behaviour with one of 4 modes:\n * - `drop-error-if-contains-third-party-frames`: Drop error events that contain at least one third-party stack frame.\n * - `drop-error-if-exclusively-contains-third-party-frames`: Drop error events that exclusively contain third-party stack frames.\n * - `apply-tag-if-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains at least one third-party stack frame.\n * - `apply-tag-if-exclusively-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains exclusively third-party stack frames.\n *\n * If you chose the mode to only apply tags, the tags can then be used in Sentry to filter your issue stream by entering `!third_party_code:True` in the search bar.\n */\n behaviour:\n | 'drop-error-if-contains-third-party-frames'\n | 'drop-error-if-exclusively-contains-third-party-frames'\n | 'apply-tag-if-contains-third-party-frames'\n | 'apply-tag-if-exclusively-contains-third-party-frames';\n\n /**\n * @experimental\n * If set to true, the integration will ignore frames that are internal to the Sentry SDK from the third-party frame detection.\n * Note that enabling this option might lead to errors being misclassified as third-party errors.\n */\n ignoreSentryInternalFrames?: boolean;\n}\n\n/**\n * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins.\n */\nexport const thirdPartyErrorFilterIntegration = defineIntegration((options: Options) => {\n return {\n name: 'ThirdPartyErrorsFilter',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n\n processEvent(event) {\n const frameKeys = getBundleKeysForAllFramesWithFilenames(event, options.ignoreSentryInternalFrames);\n\n if (frameKeys) {\n const arrayMethod =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'apply-tag-if-contains-third-party-frames'\n ? 'some'\n : 'every';\n\n const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key)));\n\n if (behaviourApplies) {\n const shouldDrop =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames';\n if (shouldDrop) {\n return null;\n } else {\n event.tags = {\n ...event.tags,\n third_party_code: true,\n };\n }\n }\n }\n\n return event;\n },\n };\n});\n\n/**\n * Checks if a stack frame is a Sentry internal frame by strictly matching:\n * 1. The frame must be the last frame in the stack\n * 2. The filename must indicate the internal helpers file\n * 3. The context_line must contain the exact pattern \"fn.apply(this, wrappedArguments)\"\n * 4. The comment pattern \"Attempt to invoke user-land function\" must be present in pre_context\n *\n */\nfunction isSentryInternalFrame(frame: StackFrame, frameIndex: number): boolean {\n // Only match the last frame (index 0 in reversed stack)\n if (frameIndex !== 0 || !frame.context_line || !frame.filename) {\n return false;\n }\n\n if (\n !frame.filename.includes('sentry') ||\n !frame.filename.includes('helpers') || // Filename would look something like this: 'node_modules/@sentry/browser/build/npm/esm/helpers.js'\n !frame.context_line.includes(SENTRY_INTERNAL_FN_APPLY) // Must have context_line with the exact fn.apply pattern\n ) {\n return false;\n }\n\n // Check pre_context array for comment pattern\n if (frame.pre_context) {\n const len = frame.pre_context.length;\n for (let i = 0; i < len; i++) {\n if (frame.pre_context[i]?.includes(SENTRY_INTERNAL_COMMENT)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getBundleKeysForAllFramesWithFilenames(\n event: Event,\n ignoreSentryInternalFrames?: boolean,\n): string[][] | undefined {\n const frames = getFramesFromEvent(event);\n\n if (!frames) {\n return undefined;\n }\n\n return frames\n .filter((frame, index) => {\n // Exclude frames without a filename\n if (!frame.filename) {\n return false;\n }\n // Exclude frames without location info, since these are likely native code or built-ins.\n // JS frames have lineno/colno, WASM frames have instruction_addr instead.\n if (frame.lineno == null && frame.colno == null && frame.instruction_addr == null) {\n return false;\n }\n // Optionally ignore Sentry internal frames\n return !ignoreSentryInternalFrames || !isSentryInternalFrame(frame, index);\n })\n .map(frame => {\n if (!frame.module_metadata) {\n return [];\n }\n return Object.keys(frame.module_metadata)\n .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX))\n .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length));\n });\n}\n\nconst BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:';\nconst SENTRY_INTERNAL_COMMENT = 'Attempt to invoke user-land function';\nconst SENTRY_INTERNAL_FN_APPLY = 'fn.apply(this, wrappedArguments)';\n","import { addBreadcrumb } from '../breadcrumbs';\nimport { getClient } from '../currentScopes';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface ConsoleIntegrationOptions {\n levels: ConsoleLevel[];\n}\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\nconst INTEGRATION_NAME = 'Console';\n\n/**\n * Captures calls to the `console` API as breadcrumbs in Sentry.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```js\n * Sentry.init({\n * integrations: [Sentry.consoleIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleIntegration = defineIntegration((options: Partial = {}) => {\n const levels = new Set(options.levels || CONSOLE_LEVELS);\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.has(level)) {\n return;\n }\n\n addConsoleBreadcrumb(level, args);\n });\n },\n };\n});\n\n/**\n * Capture a console breadcrumb.\n *\n * Exported just for tests.\n */\nexport function addConsoleBreadcrumb(level: ConsoleLevel, args: unknown[]): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: args,\n logger: 'console',\n },\n level: severityLevelFromString(level),\n message: formatConsoleArgs(args),\n };\n\n if (level === 'assert') {\n if (args[0] === false) {\n const assertionArgs = args.slice(1);\n breadcrumb.message =\n assertionArgs.length > 0 ? `Assertion failed: ${formatConsoleArgs(assertionArgs)}` : 'Assertion failed';\n breadcrumb.data.arguments = assertionArgs;\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: args,\n level,\n });\n}\n\nfunction formatConsoleArgs(values: unknown[]): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoin(values, ' ');\n}\n","import { getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { type Event } from '../types-hoist/event';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToJSON } from './spanUtils';\n\n/**\n * Ordered LRU cache for storing feature flags in the scope context. The name\n * of each flag in the buffer is unique, and the output of getAll() is ordered\n * from oldest to newest.\n */\n\nexport type FeatureFlag = { readonly flag: string; readonly result: boolean };\n\n/**\n * Max size of the LRU flag buffer stored in Sentry scope and event contexts.\n */\nexport const _INTERNAL_FLAG_BUFFER_SIZE = 100;\n\n/**\n * Max number of flag evaluations to record per span.\n */\nexport const _INTERNAL_MAX_FLAGS_PER_SPAN = 10;\n\nconst SPAN_FLAG_ATTRIBUTE_PREFIX = 'flag.evaluation.';\n\n/**\n * Copies feature flags that are in current scope context to the event context\n */\nexport function _INTERNAL_copyFlagsFromScopeToEvent(event: Event): Event {\n const scope = getCurrentScope();\n const flagContext = scope.getScopeData().contexts.flags;\n const flagBuffer = flagContext ? flagContext.values : [];\n\n if (!flagBuffer.length) {\n return event;\n }\n\n if (event.contexts === undefined) {\n event.contexts = {};\n }\n event.contexts.flags = { values: [...flagBuffer] };\n return event;\n}\n\n/**\n * Inserts a flag into the current scope's context while maintaining ordered LRU properties.\n * Not thread-safe. After inserting:\n * - The flag buffer is sorted in order of recency, with the newest evaluation at the end.\n * - The names in the buffer are always unique.\n * - The length of the buffer never exceeds `maxSize`.\n *\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertFlagToScope(\n name: string,\n value: unknown,\n maxSize: number = _INTERNAL_FLAG_BUFFER_SIZE,\n): void {\n const scopeContexts = getCurrentScope().getScopeData().contexts;\n if (!scopeContexts.flags) {\n scopeContexts.flags = { values: [] };\n }\n const flags = scopeContexts.flags.values;\n _INTERNAL_insertToFlagBuffer(flags, name, value, maxSize);\n}\n\n/**\n * Exported for tests only. Currently only accepts boolean values (otherwise no-op).\n * Inserts a flag into a FeatureFlag array while maintaining the following properties:\n * - Flags are sorted in order of recency, with the newest evaluation at the end.\n * - The flag names are always unique.\n * - The length of the array never exceeds `maxSize`.\n *\n * @param flags The buffer to insert the flag into.\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertToFlagBuffer(\n flags: FeatureFlag[],\n name: string,\n value: unknown,\n maxSize: number,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n if (flags.length > maxSize) {\n DEBUG_BUILD && debug.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${maxSize}`);\n return;\n }\n\n // Check if the flag is already in the buffer - O(n)\n const index = flags.findIndex(f => f.flag === name);\n\n if (index !== -1) {\n // The flag was found, remove it from its current position - O(n)\n flags.splice(index, 1);\n }\n\n if (flags.length === maxSize) {\n // If at capacity, pop the earliest flag - O(n)\n flags.shift();\n }\n\n // Push the flag to the end - O(1)\n flags.push({\n flag: name,\n result: value,\n });\n}\n\n/**\n * Records a feature flag evaluation for the active span. This is a no-op for non-boolean values.\n * The flag and its value is stored in span attributes with the `flag.evaluation` prefix. Once the\n * unique flags for a span reaches maxFlagsPerSpan, subsequent flags are dropped.\n *\n * @param name Name of the feature flag.\n * @param value Value of the feature flag. Non-boolean values are ignored.\n * @param maxFlagsPerSpan Max number of flags a buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_addFeatureFlagToActiveSpan(\n name: string,\n value: unknown,\n maxFlagsPerSpan: number = _INTERNAL_MAX_FLAGS_PER_SPAN,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n const span = getActiveSpan();\n if (!span) {\n return;\n }\n\n const attributes = spanToJSON(span).data;\n\n // If the flag already exists, always update it\n if (`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}` in attributes) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n return;\n }\n\n // Else, add the flag to the span if we have not reached the max number of flags\n const numOfAddedFlags = Object.keys(attributes).filter(key => key.startsWith(SPAN_FLAG_ATTRIBUTE_PREFIX)).length;\n if (numOfAddedFlags < maxFlagsPerSpan) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n }\n}\n","import { type Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport { type Event, type EventHint } from '../../types-hoist/event';\nimport { type Integration, type IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\n\nexport interface FeatureFlagsIntegration extends Integration {\n addFeatureFlag: (name: string, value: unknown) => void;\n}\n\n/**\n * Sentry integration for buffering feature flag evaluations manually with an API, and\n * capturing them on error events and spans.\n *\n * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.\n *\n * @example\n * ```\n * import * as Sentry from '@sentry/browser';\n * import { type FeatureFlagsIntegration } from '@sentry/browser';\n *\n * // Setup\n * Sentry.init(..., integrations: [Sentry.featureFlagsIntegration()])\n *\n * // Verify\n * const flagsIntegration = Sentry.getClient()?.getIntegrationByName('FeatureFlags');\n * if (flagsIntegration) {\n * flagsIntegration.addFeatureFlag('my-flag', true);\n * } else {\n * // check your setup\n * }\n * Sentry.captureException(Exception('broke')); // 'my-flag' should be captured to this Sentry event.\n * ```\n */\nexport const featureFlagsIntegration = defineIntegration(() => {\n return {\n name: 'FeatureFlags',\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n\n addFeatureFlag(name: string, value: unknown): void {\n _INTERNAL_insertFlagToScope(name, value);\n _INTERNAL_addFeatureFlagToActiveSpan(name, value);\n },\n };\n}) as IntegrationFn;\n","import type { Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport type { Event, EventHint } from '../../types-hoist/event';\nimport type { IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\nimport { fill } from '../../utils/object';\n\ninterface GrowthBookLike {\n isOn(this: GrowthBookLike, featureKey: string, ...rest: unknown[]): boolean;\n getFeatureValue(this: GrowthBookLike, featureKey: string, defaultValue: unknown, ...rest: unknown[]): unknown;\n}\n\nexport type GrowthBookClassLike = new (...args: unknown[]) => GrowthBookLike;\n\n/**\n * Sentry integration for capturing feature flag evaluations from GrowthBook.\n *\n * Only boolean results are captured at this time.\n *\n * @example\n * ```typescript\n * import { GrowthBook } from '@growthbook/growthbook';\n * import * as Sentry from '@sentry/browser'; // or '@sentry/node'\n *\n * Sentry.init({\n * dsn: 'your-dsn',\n * integrations: [\n * Sentry.growthbookIntegration({ growthbookClass: GrowthBook })\n * ]\n * });\n * ```\n */\nexport const growthbookIntegration: IntegrationFn = defineIntegration(\n ({ growthbookClass }: { growthbookClass: GrowthBookClassLike }) => {\n return {\n name: 'GrowthBook',\n\n setupOnce() {\n const proto = growthbookClass.prototype as GrowthBookLike;\n\n // Type guard and wrap isOn\n if (typeof proto.isOn === 'function') {\n fill(proto, 'isOn', _wrapAndCaptureBooleanResult);\n }\n\n // Type guard and wrap getFeatureValue\n if (typeof proto.getFeatureValue === 'function') {\n fill(proto, 'getFeatureValue', _wrapAndCaptureBooleanResult);\n }\n },\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n },\n);\n\nfunction _wrapAndCaptureBooleanResult(\n original: (this: GrowthBookLike, ...args: unknown[]) => unknown,\n): (this: GrowthBookLike, ...args: unknown[]) => unknown {\n return function (this: GrowthBookLike, ...args: unknown[]): unknown {\n const flagName = args[0];\n const result = original.apply(this, args);\n\n if (typeof flagName === 'string' && typeof result === 'boolean') {\n _INTERNAL_insertFlagToScope(flagName, result);\n _INTERNAL_addFeatureFlagToActiveSpan(flagName, result);\n }\n\n return result;\n };\n}\n","import type { Client } from '../client';\nimport { getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport { GEN_AI_CONVERSATION_ID_ATTRIBUTE } from '../semanticAttributes';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { Span } from '../types-hoist/span';\n\nconst INTEGRATION_NAME = 'ConversationId';\n\nconst _conversationIdIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setup(client: Client) {\n client.on('spanStart', (span: Span) => {\n const scopeData = getCurrentScope().getScopeData();\n const isolationScopeData = getIsolationScope().getScopeData();\n\n const conversationId = scopeData.conversationId || isolationScopeData.conversationId;\n\n if (conversationId) {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, conversationId);\n }\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Automatically applies conversation ID from scope to spans.\n *\n * This integration reads the conversation ID from the current or isolation scope\n * and applies it to spans when they start. This ensures the conversation ID is\n * available for all AI-related operations.\n */\nexport const conversationIdIntegration = defineIntegration(_conversationIdIntegration);\n","import { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Profiler, ProfilingIntegration } from './types-hoist/profiling';\nimport { debug } from './utils/debug-logger';\n\nfunction isProfilingIntegrationWithProfiler(\n integration: ProfilingIntegration | undefined,\n): integration is ProfilingIntegration {\n return (\n !!integration &&\n typeof integration['_profiler'] !== 'undefined' &&\n typeof integration['_profiler']['start'] === 'function' &&\n typeof integration['_profiler']['stop'] === 'function'\n );\n}\n/**\n * Starts the Sentry continuous profiler.\n * This mode is exclusive with the transaction profiler and will only work if the profilesSampleRate is set to a falsy value.\n * In continuous profiling mode, the profiler will keep reporting profile chunks to Sentry until it is stopped, which allows for continuous profiling of the application.\n */\nfunction startProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.start();\n}\n\n/**\n * Stops the Sentry continuous profiler.\n * Calls to stop will stop the profiler and flush the currently collected profile data to Sentry.\n */\nfunction stopProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.stop();\n}\n\n/**\n * Profiler namespace for controlling the profiler in 'manual' mode.\n *\n * Requires the `nodeProfilingIntegration` from the `@sentry/profiling-node` package.\n */\nexport const profiler: Profiler = {\n startProfiler,\n stopProfiler,\n};\n","import { getClient } from './currentScopes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, startInactiveSpan } from './tracing';\nimport { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan';\nimport type { FetchBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { HandlerDataFetch } from './types-hoist/instrument';\nimport type { ResponseHookInfo } from './types-hoist/request';\nimport type { Span, SpanAttributes, SpanOrigin } from './types-hoist/span';\nimport { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage';\nimport { hasSpansEnabled } from './utils/hasSpansEnabled';\nimport { isInstanceOf, isRequest } from './utils/is';\nimport { getActiveSpan } from './utils/spanUtils';\nimport { getTraceData } from './utils/traceData';\nimport {\n getSanitizedUrlStringFromUrlObject,\n isURLObjectRelative,\n parseStringToURLObject,\n stripDataUrlContent,\n} from './utils/url';\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not precisely the Header type used in Request, but it'll pass duck-typing\n | {\n append: (key: string, value: string) => void;\n get: (key: string) => string | null | undefined;\n };\n\ninterface InstrumentFetchRequestOptions {\n spanOrigin?: SpanOrigin;\n propagateTraceparent?: boolean;\n onRequestSpanEnd?: (span: Span, responseInformation: ResponseHookInfo) => void;\n}\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @deprecated pass an options object instead of the spanOrigin parameter\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOrigin: SpanOrigin,\n): Span | undefined;\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- needed because the other overload is deprecated\n instrumentFetchRequestOptions: InstrumentFetchRequestOptions,\n): Span | undefined;\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): Span | undefined {\n if (!handlerData.fetchData) {\n return undefined;\n }\n\n const { method, url } = handlerData.fetchData;\n\n const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n\n if (span) {\n // Only end the span and call hooks if we're actually recording\n if (shouldCreateSpanResult) {\n endSpan(span, handlerData);\n _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n\n return undefined;\n }\n\n // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter\n // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter\n // TODO (v11): remove this backwards-compatible code and only accept the options parameter\n const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } =\n typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions };\n\n const hasParent = !!getActiveSpan();\n\n const span =\n shouldCreateSpanResult && hasParent\n ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin))\n : new SentryNonRecordingSpan();\n\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n const request: string | Request = handlerData.args[0];\n\n // Shallow clone the options object to avoid mutating the original user-provided object\n // Examples: users re-using same options object for multiple fetch calls, frozen objects\n const options: { [key: string]: unknown } = { ...(handlerData.args[1] || {}) };\n\n const headers = _addTracingHeadersToFetchRequest(\n request,\n options,\n // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n // we do not want to use the span as base for the trace headers,\n // which means that the headers will be generated from the scope and the sampling decision is deferred\n hasSpansEnabled() && hasParent ? span : undefined,\n propagateTraceparent,\n );\n if (headers) {\n // Ensure this is actually set, if no options have been passed previously\n handlerData.args[1] = options;\n options.headers = headers;\n }\n }\n\n const client = getClient();\n\n if (client) {\n const fetchHint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp: handlerData.startTimestamp,\n endTimestamp: handlerData.endTimestamp,\n } satisfies FetchBreadcrumbHint;\n\n client.emit('beforeOutgoingRequestSpan', span, fetchHint);\n }\n\n return span;\n}\n\n/**\n * Calls the onRequestSpanEnd callback if it is defined.\n */\nexport function _callOnRequestSpanEnd(\n span: Span,\n handlerData: HandlerDataFetch,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): void {\n const onRequestSpanEnd =\n typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null\n ? spanOriginOrOptions.onRequestSpanEnd\n : undefined;\n\n onRequestSpanEnd?.(span, {\n headers: handlerData.response?.headers,\n error: handlerData.error,\n });\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers.\n * exported only for testing purposes\n *\n * When we determine if we should add a baggage header, there are 3 cases:\n * 1. No previous baggage header -> add baggage\n * 2. Previous baggage header has no sentry baggage values -> add our baggage\n * 3. Previous baggage header has sentry baggage values -> do nothing (might have been added manually by users)\n */\n// eslint-disable-next-line complexity -- yup it's this complicated :(\nexport function _addTracingHeadersToFetchRequest(\n request: string | Request,\n fetchOptionsObj: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | PolymorphicRequestHeaders;\n },\n span?: Span,\n propagateTraceparent?: boolean,\n): PolymorphicRequestHeaders | undefined {\n const traceHeaders = getTraceData({ span, propagateTraceparent });\n const sentryTrace = traceHeaders['sentry-trace'];\n const baggage = traceHeaders.baggage;\n const traceparent = traceHeaders.traceparent;\n\n // Nothing to do, when we return undefined here, the original headers will be used\n if (!sentryTrace) {\n return undefined;\n }\n\n const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : undefined);\n\n if (!originalHeaders) {\n return { ...traceHeaders };\n } else if (isHeaders(originalHeaders)) {\n const newHeaders = new Headers(originalHeaders);\n\n // We don't want to override manually added sentry headers\n if (!newHeaders.get('sentry-trace')) {\n newHeaders.set('sentry-trace', sentryTrace);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) {\n newHeaders.set('traceparent', traceparent);\n }\n\n if (baggage) {\n const prevBaggageHeader = newHeaders.get('baggage');\n\n if (!prevBaggageHeader) {\n newHeaders.set('baggage', baggage);\n } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) {\n newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`);\n }\n }\n\n return newHeaders;\n } else if (Array.isArray(originalHeaders)) {\n const newHeaders = [...originalHeaders];\n\n if (!originalHeaders.find(header => header[0] === 'sentry-trace')) {\n newHeaders.push(['sentry-trace', sentryTrace]);\n }\n\n if (propagateTraceparent && traceparent && !originalHeaders.find(header => header[0] === 'traceparent')) {\n newHeaders.push(['traceparent', traceparent]);\n }\n\n const prevBaggageHeaderWithSentryValues = originalHeaders.find(\n header => header[0] === 'baggage' && baggageHeaderHasSentryBaggageValues(header[1]),\n );\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push(['baggage', baggage]);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else {\n const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined;\n const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined;\n const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined;\n\n const newBaggageHeaders: string[] = existingBaggageHeader\n ? Array.isArray(existingBaggageHeader)\n ? [...existingBaggageHeader]\n : [existingBaggageHeader]\n : [];\n\n const prevBaggageHeaderWithSentryValues =\n existingBaggageHeader &&\n (Array.isArray(existingBaggageHeader)\n ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem))\n : baggageHeaderHasSentryBaggageValues(existingBaggageHeader));\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n newBaggageHeaders.push(baggage);\n }\n\n const newHeaders: {\n 'sentry-trace': string;\n baggage: string | undefined;\n traceparent?: string;\n } = {\n ...originalHeaders,\n 'sentry-trace': (existingSentryTraceHeader as string | undefined) ?? sentryTrace,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n\n if (propagateTraceparent && traceparent && !existingTraceparentHeader) {\n newHeaders.traceparent = traceparent;\n }\n\n return newHeaders;\n }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n if (handlerData.response) {\n setHttpStatus(span, handlerData.response.status);\n\n const contentLength = handlerData.response?.headers?.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n}\n\nfunction baggageHeaderHasSentryBaggageValues(baggageHeader: string): boolean {\n return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX));\n}\n\nfunction isHeaders(headers: unknown): headers is Headers {\n return typeof Headers !== 'undefined' && isInstanceOf(headers, Headers);\n}\n\nfunction getSpanStartOptions(\n url: string,\n method: string,\n spanOrigin: SpanOrigin,\n): Parameters[0] {\n // Data URLs need special handling because parseStringToURLObject treats them as \"relative\"\n // (no \"://\"), causing getSanitizedUrlStringFromUrlObject to return just the pathname\n // without the \"data:\" prefix, making later stripDataUrlContent calls ineffective.\n // So for data URLs, we strip the content first and use that directly.\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, undefined, method, spanOrigin),\n };\n }\n\n const parsedUrl = parseStringToURLObject(url);\n const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url;\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin),\n };\n}\n\nfunction getFetchSpanAttributes(\n url: string,\n parsedUrl: ReturnType,\n method: string,\n spanOrigin: SpanOrigin,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n url: stripDataUrlContent(url),\n type: 'fetch',\n 'http.method': method,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n };\n if (parsedUrl) {\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['http.url'] = stripDataUrlContent(parsedUrl.href);\n attributes['server.address'] = parsedUrl.host;\n }\n if (parsedUrl.search) {\n attributes['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['http.fragment'] = parsedUrl.hash;\n }\n }\n return attributes;\n}\n","import { getClient, withIsolationScope } from './currentScopes';\nimport { captureException } from './exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes';\nimport { startSpanManual } from './tracing';\nimport { normalize } from './utils/normalize';\nimport { addNonEnumerableProperty } from './utils/object';\n\ninterface SentryTrpcMiddlewareOptions {\n /** Whether to include procedure inputs in reported events. Defaults to `false`. */\n attachRpcInput?: boolean;\n forceTransaction?: boolean;\n}\n\nexport interface SentryTrpcMiddlewareArguments {\n path?: unknown;\n type?: unknown;\n next: () => T;\n rawInput?: unknown;\n getRawInput?: () => Promise;\n}\n\nconst trpcCaptureContext = { mechanism: { handled: false, type: 'auto.rpc.trpc.middleware' } };\n\nfunction captureIfError(nextResult: unknown): void {\n // TODO: Set span status based on what TRPCError was encountered\n if (\n typeof nextResult === 'object' &&\n nextResult !== null &&\n 'ok' in nextResult &&\n !nextResult.ok &&\n 'error' in nextResult\n ) {\n captureException(nextResult.error, trpcCaptureContext);\n }\n}\n\ntype SentryTrpcMiddleware = T extends Promise ? T : Promise;\n\n/**\n * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return async function (opts: SentryTrpcMiddlewareArguments): SentryTrpcMiddleware {\n const { path, type, next, rawInput, getRawInput } = opts;\n\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n const trpcContext: Record = {\n procedure_path: path,\n procedure_type: type,\n };\n\n addNonEnumerableProperty(\n trpcContext,\n '__sentry_override_normalization_depth__',\n 1 + // 1 for context.input + the normal normalization depth\n (clientOptions?.normalizeDepth ?? 5), // 5 is a sane depth\n );\n\n if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) {\n if (rawInput !== undefined) {\n trpcContext.input = normalize(rawInput);\n }\n\n if (getRawInput !== undefined && typeof getRawInput === 'function') {\n try {\n const rawRes = await getRawInput();\n\n trpcContext.input = normalize(rawRes);\n } catch {\n // noop\n }\n }\n }\n\n return withIsolationScope(scope => {\n scope.setContext('trpc', trpcContext);\n return startSpanManual(\n {\n name: `trpc/${path}`,\n op: 'rpc.server',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc',\n },\n forceTransaction: !!options.forceTransaction,\n },\n async span => {\n try {\n const nextResult = await next();\n captureIfError(nextResult);\n span.end();\n return nextResult;\n } catch (e) {\n captureException(e, trpcCaptureContext);\n span.end();\n throw e;\n }\n },\n ) as SentryTrpcMiddleware;\n });\n };\n}\n","/**\n * Safe error capture utilities for MCP server instrumentation\n *\n * Ensures error reporting never interferes with MCP server operation.\n * All capture operations are wrapped in try-catch to prevent side effects.\n */\n\nimport { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { getActiveSpan } from '../../utils/spanUtils';\nimport type { McpErrorType } from './types';\n\n/**\n * Captures an error without affecting MCP server operation.\n *\n * The active span already contains all MCP context (method, tool, arguments, etc.)\n * @param error - Error to capture\n * @param errorType - Classification of error type for filtering\n * @param extraData - Additional context data to include\n */\nexport function captureError(error: Error, errorType?: McpErrorType, extraData?: Record): void {\n try {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const activeSpan = getActiveSpan();\n if (activeSpan?.isRecording()) {\n activeSpan.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'internal_error',\n });\n }\n\n captureException(error, {\n mechanism: {\n type: 'auto.ai.mcp_server',\n handled: false,\n data: {\n error_type: errorType || 'handler_execution',\n ...extraData,\n },\n },\n });\n } catch {\n // noop\n }\n}\n","/**\n * Handler method wrapping for MCP server instrumentation\n *\n * Provides automatic error capture and span correlation for tool, resource,\n * and prompt handlers.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport { fill } from '../../utils/object';\nimport { captureError } from './errorCapture';\nimport type { MCPHandler, MCPServerInstance } from './types';\n\n/**\n * Generic function to wrap MCP server method handlers\n * @internal\n * @param serverInstance - MCP server instance\n * @param methodName - Method name to wrap (tool, resource, prompt)\n */\nfunction wrapMethodHandler(serverInstance: MCPServerInstance, methodName: keyof MCPServerInstance): void {\n fill(serverInstance, methodName, originalMethod => {\n return function (this: MCPServerInstance, name: string, ...args: unknown[]) {\n const handler = args[args.length - 1];\n\n if (typeof handler !== 'function') {\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args);\n }\n\n const wrappedHandler = createWrappedHandler(handler as MCPHandler, methodName, name);\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args.slice(0, -1), wrappedHandler);\n };\n });\n}\n\n/**\n * Creates a wrapped handler with span correlation and error capture\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @returns Wrapped handler function\n */\nfunction createWrappedHandler(originalHandler: MCPHandler, methodName: keyof MCPServerInstance, handlerName: string) {\n return function (this: unknown, ...handlerArgs: unknown[]): unknown {\n try {\n return createErrorCapturingHandler.call(this, originalHandler, methodName, handlerName, handlerArgs);\n } catch (error) {\n DEBUG_BUILD && debug.warn('MCP handler wrapping failed:', error);\n return originalHandler.apply(this, handlerArgs);\n }\n };\n}\n\n/**\n * Creates an error-capturing wrapper for handler execution\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @param handlerArgs - Handler arguments\n * @param extraHandlerData - Additional handler context\n * @returns Handler execution result\n */\nfunction createErrorCapturingHandler(\n this: MCPServerInstance,\n originalHandler: MCPHandler,\n methodName: keyof MCPServerInstance,\n handlerName: string,\n handlerArgs: unknown[],\n): unknown {\n try {\n const result = originalHandler.apply(this, handlerArgs);\n\n if (result && typeof result === 'object' && typeof (result as { then?: unknown }).then === 'function') {\n return Promise.resolve(result).catch(error => {\n captureHandlerError(error, methodName, handlerName);\n throw error;\n });\n }\n\n return result;\n } catch (error) {\n captureHandlerError(error as Error, methodName, handlerName);\n throw error;\n }\n}\n\n/**\n * Captures handler execution errors based on handler type\n * @internal\n * @param error - Error to capture\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n */\nfunction captureHandlerError(error: Error, methodName: keyof MCPServerInstance, handlerName: string): void {\n try {\n const extraData: Record = {};\n\n if (methodName === 'tool') {\n extraData.tool_name = handlerName;\n\n if (\n error.name === 'ProtocolValidationError' ||\n error.message.includes('validation') ||\n error.message.includes('protocol')\n ) {\n captureError(error, 'validation', extraData);\n } else if (\n error.name === 'ServerTimeoutError' ||\n error.message.includes('timed out') ||\n error.message.includes('timeout')\n ) {\n captureError(error, 'timeout', extraData);\n } else {\n captureError(error, 'tool_execution', extraData);\n }\n } else if (methodName === 'resource') {\n extraData.resource_uri = handlerName;\n captureError(error, 'resource_execution', extraData);\n } else if (methodName === 'prompt') {\n extraData.prompt_name = handlerName;\n captureError(error, 'prompt_execution', extraData);\n }\n } catch (_captureErr) {\n // noop\n }\n}\n\n/**\n * Wraps tool handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapToolHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'tool');\n}\n\n/**\n * Wraps resource handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapResourceHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'resource');\n}\n\n/**\n * Wraps prompt handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapPromptHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'prompt');\n}\n\n/**\n * Wraps all MCP handler types (tool, resource, prompt) for span correlation\n * @param serverInstance - MCP server instance\n */\nexport function wrapAllMCPHandlers(serverInstance: MCPServerInstance): void {\n wrapToolHandlers(serverInstance);\n wrapResourceHandlers(serverInstance);\n wrapPromptHandlers(serverInstance);\n}\n","/**\n * Essential MCP attribute constants for Sentry instrumentation\n *\n * Based on OpenTelemetry MCP semantic conventions\n * @see https://github.com/open-telemetry/semantic-conventions/blob/3097fb0af5b9492b0e3f55dc5f6c21a3dc2be8df/docs/gen-ai/mcp.md\n */\n\n// =============================================================================\n// CORE MCP ATTRIBUTES\n// =============================================================================\n\n/** The name of the request or notification method */\nexport const MCP_METHOD_NAME_ATTRIBUTE = 'mcp.method.name';\n\n/** JSON-RPC request identifier for the request. Unique within the MCP session. */\nexport const MCP_REQUEST_ID_ATTRIBUTE = 'mcp.request.id';\n\n/** Identifies the MCP session */\nexport const MCP_SESSION_ID_ATTRIBUTE = 'mcp.session.id';\n\n/** Transport method used for MCP communication */\nexport const MCP_TRANSPORT_ATTRIBUTE = 'mcp.transport';\n\n// =============================================================================\n// CLIENT ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP client application */\nexport const MCP_CLIENT_NAME_ATTRIBUTE = 'mcp.client.name';\n\n/** Display title of the MCP client application */\nexport const MCP_CLIENT_TITLE_ATTRIBUTE = 'mcp.client.title';\n\n/** Version of the MCP client application */\nexport const MCP_CLIENT_VERSION_ATTRIBUTE = 'mcp.client.version';\n\n// =============================================================================\n// SERVER ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP server application */\nexport const MCP_SERVER_NAME_ATTRIBUTE = 'mcp.server.name';\n\n/** Display title of the MCP server application */\nexport const MCP_SERVER_TITLE_ATTRIBUTE = 'mcp.server.title';\n\n/** Version of the MCP server application */\nexport const MCP_SERVER_VERSION_ATTRIBUTE = 'mcp.server.version';\n\n/** MCP protocol version used in the session */\nexport const MCP_PROTOCOL_VERSION_ATTRIBUTE = 'mcp.protocol.version';\n\n// =============================================================================\n// METHOD-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/** Name of the tool being called */\nexport const MCP_TOOL_NAME_ATTRIBUTE = 'mcp.tool.name';\n\n/** The resource URI being accessed */\nexport const MCP_RESOURCE_URI_ATTRIBUTE = 'mcp.resource.uri';\n\n/** Name of the prompt template */\nexport const MCP_PROMPT_NAME_ATTRIBUTE = 'mcp.prompt.name';\n\n// =============================================================================\n// TOOL RESULT ATTRIBUTES\n// =============================================================================\n\n/** Whether a tool execution resulted in an error */\nexport const MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = 'mcp.tool.result.is_error';\n\n/** Number of content items in the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = 'mcp.tool.result.content_count';\n\n/** Serialized content of the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_ATTRIBUTE = 'mcp.tool.result.content';\n\n/** Prefix for tool result attributes that contain sensitive content */\nexport const MCP_TOOL_RESULT_PREFIX = 'mcp.tool.result';\n\n// =============================================================================\n// PROMPT RESULT ATTRIBUTES\n// =============================================================================\n\n/** Description of the prompt result */\nexport const MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = 'mcp.prompt.result.description';\n\n/** Number of messages in the prompt result */\nexport const MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = 'mcp.prompt.result.message_count';\n\n/** Role of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_ROLE_ATTRIBUTE = 'mcp.prompt.result.message_role';\n\n/** Content of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_CONTENT_ATTRIBUTE = 'mcp.prompt.result.message_content';\n\n/** Prefix for prompt result attributes that contain sensitive content */\nexport const MCP_PROMPT_RESULT_PREFIX = 'mcp.prompt.result';\n\n// =============================================================================\n// REQUEST ARGUMENT ATTRIBUTES\n// =============================================================================\n\n/** Prefix for MCP request argument prefix for each argument */\nexport const MCP_REQUEST_ARGUMENT = 'mcp.request.argument';\n\n// =============================================================================\n// LOGGING ATTRIBUTES\n// =============================================================================\n\n/** Log level for MCP logging operations */\nexport const MCP_LOGGING_LEVEL_ATTRIBUTE = 'mcp.logging.level';\n\n/** Logger name for MCP logging operations */\nexport const MCP_LOGGING_LOGGER_ATTRIBUTE = 'mcp.logging.logger';\n\n/** Data type of the logged message */\nexport const MCP_LOGGING_DATA_TYPE_ATTRIBUTE = 'mcp.logging.data_type';\n\n/** Log message content */\nexport const MCP_LOGGING_MESSAGE_ATTRIBUTE = 'mcp.logging.message';\n\n// =============================================================================\n// NETWORK ATTRIBUTES (OpenTelemetry Standard)\n// =============================================================================\n\n/** OSI transport layer protocol */\nexport const NETWORK_TRANSPORT_ATTRIBUTE = 'network.transport';\n\n/** The version of JSON RPC protocol used */\nexport const NETWORK_PROTOCOL_VERSION_ATTRIBUTE = 'network.protocol.version';\n\n/** Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name */\nexport const CLIENT_ADDRESS_ATTRIBUTE = 'client.address';\n\n/** Client port number */\nexport const CLIENT_PORT_ATTRIBUTE = 'client.port';\n\n// =============================================================================\n// SENTRY-SPECIFIC MCP ATTRIBUTE VALUES\n// =============================================================================\n\n/** Sentry operation value for MCP server spans */\nexport const MCP_SERVER_OP_VALUE = 'mcp.server';\n\n/**\n * Sentry operation value for client-to-server notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = 'mcp.notification.client_to_server';\n\n/**\n * Sentry operation value for server-to-client notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = 'mcp.notification.server_to_client';\n\n/** Sentry origin value for MCP function spans */\nexport const MCP_FUNCTION_ORIGIN_VALUE = 'auto.function.mcp_server';\n\n/** Sentry origin value for MCP notification spans */\nexport const MCP_NOTIFICATION_ORIGIN_VALUE = 'auto.mcp.notification';\n\n/** Sentry source value for MCP route spans */\nexport const MCP_ROUTE_SOURCE_VALUE = 'route';\n","/**\n * Message validation functions for MCP server instrumentation\n *\n * Provides JSON-RPC 2.0 message type validation and MCP server instance validation.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport type { JsonRpcNotification, JsonRpcRequest, JsonRpcResponse } from './types';\n\n/**\n * Validates if a message is a JSON-RPC request\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC request\n */\nexport function isJsonRpcRequest(message: unknown): message is JsonRpcRequest {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcRequest).jsonrpc === '2.0' &&\n 'method' in message &&\n 'id' in message\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC notification\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC notification\n */\nexport function isJsonRpcNotification(message: unknown): message is JsonRpcNotification {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcNotification).jsonrpc === '2.0' &&\n 'method' in message &&\n !('id' in message)\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC response\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC response\n */\nexport function isJsonRpcResponse(message: unknown): message is JsonRpcResponse {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as { jsonrpc: string }).jsonrpc === '2.0' &&\n 'id' in message &&\n ('result' in message || 'error' in message)\n );\n}\n\n/**\n * Validates MCP server instance with type checking\n * @param instance - Object to validate as MCP server instance\n * @returns True if instance has required MCP server methods\n */\nexport function validateMcpServerInstance(instance: unknown): boolean {\n if (\n typeof instance === 'object' &&\n instance !== null &&\n 'resource' in instance &&\n 'tool' in instance &&\n 'prompt' in instance &&\n 'connect' in instance\n ) {\n return true;\n }\n DEBUG_BUILD && debug.warn('Did not patch MCP server. Interface is incompatible.');\n return false;\n}\n\n/**\n * Check if the item is a valid content item\n * @param item - The item to check\n * @returns True if the item is a valid content item, false otherwise\n */\nexport function isValidContentItem(item: unknown): item is Record {\n return item != null && typeof item === 'object';\n}\n","/**\n * Result extraction functions for MCP server instrumentation\n *\n * Handles extraction of attributes from tool and prompt execution results.\n */\n\nimport {\n MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE,\n MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE,\n} from './attributes';\nimport { isValidContentItem } from './validation';\n\n/**\n * Build attributes for tool result content items\n * @param content - Array of content items from tool result\n * @param includeContent - Whether to include actual content (text, URIs) or just metadata\n * @returns Attributes extracted from each content item\n */\nfunction buildAllContentItemAttributes(\n content: unknown[],\n includeContent: boolean,\n): Record {\n const attributes: Record = {\n [MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE]: content.length,\n };\n\n for (const [i, item] of content.entries()) {\n if (!isValidContentItem(item)) {\n continue;\n }\n\n const prefix = content.length === 1 ? 'mcp.tool.result' : `mcp.tool.result.${i}`;\n\n if (typeof item.type === 'string') {\n attributes[`${prefix}.content_type`] = item.type;\n }\n\n if (includeContent) {\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n attributes[`${prefix}.${key}`] = value;\n }\n };\n\n safeSet('mime_type', item.mimeType);\n safeSet('uri', item.uri);\n safeSet('name', item.name);\n\n if (typeof item.text === 'string') {\n attributes[`${prefix}.content`] = item.text;\n }\n\n if (typeof item.data === 'string') {\n attributes[`${prefix}.data_size`] = item.data.length;\n }\n\n const resource = item.resource;\n if (isValidContentItem(resource)) {\n safeSet('resource_uri', resource.uri);\n safeSet('resource_mime_type', resource.mimeType);\n }\n }\n }\n\n return attributes;\n}\n\n/**\n * Extract tool result attributes for span instrumentation\n * @param result - Tool execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts, error status)\n * @returns Attributes extracted from tool result content\n */\nexport function extractToolResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n if (!isValidContentItem(result)) {\n return {};\n }\n\n const attributes = Array.isArray(result.content) ? buildAllContentItemAttributes(result.content, recordOutputs) : {};\n\n if (typeof result.isError === 'boolean') {\n attributes[MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE] = result.isError;\n }\n\n return attributes;\n}\n\n/**\n * Extract prompt result attributes for span instrumentation\n * @param result - Prompt execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts)\n * @returns Attributes extracted from prompt result\n */\nexport function extractPromptResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n const attributes: Record = {};\n if (!isValidContentItem(result)) {\n return attributes;\n }\n\n if (recordOutputs && typeof result.description === 'string') {\n attributes[MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE] = result.description;\n }\n\n if (Array.isArray(result.messages)) {\n attributes[MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE] = result.messages.length;\n\n if (recordOutputs) {\n const messages = result.messages;\n for (const [i, message] of messages.entries()) {\n if (!isValidContentItem(message)) {\n continue;\n }\n\n const prefix = messages.length === 1 ? 'mcp.prompt.result' : `mcp.prompt.result.${i}`;\n\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_${key}` : `${prefix}.${key}`;\n attributes[attrName] = value;\n }\n };\n\n safeSet('role', message.role);\n\n if (isValidContentItem(message.content)) {\n const content = message.content;\n if (typeof content.text === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_content` : `${prefix}.content`;\n attributes[attrName] = content.text;\n }\n }\n }\n }\n }\n\n return attributes;\n}\n","/**\n * Session data management for MCP server instrumentation\n *\n * Uses sessionId as the primary key for stateful transports. This handles the wrapper\n * transport pattern (e.g., NodeStreamableHTTPServerTransport wrapping WebStandardStreamableHTTPServerTransport)\n * where different methods may receive different `this` values but share the same sessionId.\n *\n * Falls back to WeakMap by transport instance for stateless transports (no sessionId).\n */\n\nimport type { MCPTransport, PartyInfo, SessionData } from './types';\n\n/**\n * Session-scoped data storage for stateful transports (with sessionId)\n * @internal Using sessionId as key handles wrapper transport patterns\n */\nconst sessionToSessionData = new Map();\n\n/**\n * Transport-scoped data storage fallback for stateless transports (no sessionId)\n * @internal WeakMap allows automatic cleanup when transport is garbage collected\n */\nconst statelessSessionData = new WeakMap();\n\n/**\n * Gets session data for a transport, checking sessionId first then fallback\n * @internal\n */\nfunction getSessionData(transport: MCPTransport): SessionData | undefined {\n const sessionId = transport.sessionId;\n if (sessionId) {\n return sessionToSessionData.get(sessionId);\n }\n return statelessSessionData.get(transport);\n}\n\n/**\n * Sets session data for a transport, using sessionId when available\n * @internal\n */\nfunction setSessionData(transport: MCPTransport, data: SessionData): void {\n const sessionId = transport.sessionId;\n if (sessionId) {\n sessionToSessionData.set(sessionId, data);\n } else {\n statelessSessionData.set(transport, data);\n }\n}\n\n/**\n * Stores session data for a transport\n * @param transport - MCP transport instance\n * @param sessionData - Session data to store\n */\nexport function storeSessionDataForTransport(transport: MCPTransport, sessionData: SessionData): void {\n // For stateful transports, always store (sessionId is the key)\n // For stateless transports, also store (transport instance is the key)\n setSessionData(transport, sessionData);\n}\n\n/**\n * Updates session data for a transport (merges with existing data)\n * @param transport - MCP transport instance\n * @param partialSessionData - Partial session data to merge with existing data\n */\nexport function updateSessionDataForTransport(transport: MCPTransport, partialSessionData: Partial): void {\n const existingData = getSessionData(transport) || {};\n setSessionData(transport, { ...existingData, ...partialSessionData });\n}\n\n/**\n * Retrieves client information for a transport\n * @param transport - MCP transport instance\n * @returns Client information if available\n */\nexport function getClientInfoForTransport(transport: MCPTransport): PartyInfo | undefined {\n return getSessionData(transport)?.clientInfo;\n}\n\n/**\n * Retrieves protocol version for a transport\n * @param transport - MCP transport instance\n * @returns Protocol version if available\n */\nexport function getProtocolVersionForTransport(transport: MCPTransport): string | undefined {\n return getSessionData(transport)?.protocolVersion;\n}\n\n/**\n * Retrieves full session data for a transport\n * @param transport - MCP transport instance\n * @returns Complete session data if available\n */\nexport function getSessionDataForTransport(transport: MCPTransport): SessionData | undefined {\n return getSessionData(transport);\n}\n\n/**\n * Cleans up session data for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupSessionDataForTransport(transport: MCPTransport): void {\n const sessionId = transport.sessionId;\n if (sessionId) {\n sessionToSessionData.delete(sessionId);\n }\n // Note: WeakMap entries are automatically cleaned up when transport is GC'd\n // No explicit delete needed for statelessSessionData\n}\n","/**\n * Session and party info extraction functions for MCP server instrumentation\n *\n * Handles extraction of client/server info and session data from MCP messages.\n */\n\nimport {\n CLIENT_ADDRESS_ATTRIBUTE,\n CLIENT_PORT_ATTRIBUTE,\n MCP_PROTOCOL_VERSION_ATTRIBUTE,\n MCP_SERVER_NAME_ATTRIBUTE,\n MCP_SERVER_TITLE_ATTRIBUTE,\n MCP_SERVER_VERSION_ATTRIBUTE,\n MCP_SESSION_ID_ATTRIBUTE,\n MCP_TRANSPORT_ATTRIBUTE,\n NETWORK_PROTOCOL_VERSION_ATTRIBUTE,\n NETWORK_TRANSPORT_ATTRIBUTE,\n} from './attributes';\nimport {\n getClientInfoForTransport,\n getProtocolVersionForTransport,\n getSessionDataForTransport,\n} from './sessionManagement';\nimport type { ExtraHandlerData, JsonRpcRequest, MCPTransport, PartyInfo, SessionData } from './types';\nimport { isValidContentItem } from './validation';\n\n/**\n * Extracts and validates PartyInfo from an unknown object\n * @param obj - Unknown object that might contain party info\n * @returns Validated PartyInfo object with only string properties\n */\nfunction extractPartyInfo(obj: unknown): PartyInfo {\n const partyInfo: PartyInfo = {};\n\n if (isValidContentItem(obj)) {\n if (typeof obj.name === 'string') {\n partyInfo.name = obj.name;\n }\n if (typeof obj.title === 'string') {\n partyInfo.title = obj.title;\n }\n if (typeof obj.version === 'string') {\n partyInfo.version = obj.version;\n }\n }\n\n return partyInfo;\n}\n\n/**\n * Extracts session data from \"initialize\" requests\n * @param request - JSON-RPC \"initialize\" request containing client info and protocol version\n * @returns Session data extracted from request parameters including protocol version and client info\n */\nexport function extractSessionDataFromInitializeRequest(request: JsonRpcRequest): SessionData {\n const sessionData: SessionData = {};\n if (isValidContentItem(request.params)) {\n if (typeof request.params.protocolVersion === 'string') {\n sessionData.protocolVersion = request.params.protocolVersion;\n }\n if (request.params.clientInfo) {\n sessionData.clientInfo = extractPartyInfo(request.params.clientInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Extracts session data from \"initialize\" response\n * @param result - \"initialize\" response result containing server info and protocol version\n * @returns Partial session data extracted from response including protocol version and server info\n */\nexport function extractSessionDataFromInitializeResponse(result: unknown): Partial {\n const sessionData: Partial = {};\n if (isValidContentItem(result)) {\n if (typeof result.protocolVersion === 'string') {\n sessionData.protocolVersion = result.protocolVersion;\n }\n if (result.serverInfo) {\n sessionData.serverInfo = extractPartyInfo(result.serverInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Build client attributes from stored client info\n * @param transport - MCP transport instance\n * @returns Client attributes for span instrumentation\n */\nexport function getClientAttributes(transport: MCPTransport): Record {\n const clientInfo = getClientInfoForTransport(transport);\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build client attributes from PartyInfo directly\n * @param clientInfo - Client party info\n * @returns Client attributes for span instrumentation\n */\nexport function buildClientAttributesFromInfo(clientInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from stored server info\n * @param transport - MCP transport instance\n * @returns Server attributes for span instrumentation\n */\nexport function getServerAttributes(transport: MCPTransport): Record {\n const serverInfo = getSessionDataForTransport(transport)?.serverInfo;\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from PartyInfo directly\n * @param serverInfo - Server party info\n * @returns Server attributes for span instrumentation\n */\nexport function buildServerAttributesFromInfo(serverInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Extracts client connection info from extra handler data\n * @param extra - Extra handler data containing connection info\n * @returns Client address and port information\n */\nexport function extractClientInfo(extra: ExtraHandlerData): {\n address?: string;\n port?: number;\n} {\n return {\n address:\n extra?.requestInfo?.remoteAddress ||\n extra?.clientAddress ||\n extra?.request?.ip ||\n extra?.request?.connection?.remoteAddress,\n port: extra?.requestInfo?.remotePort || extra?.clientPort || extra?.request?.connection?.remotePort,\n };\n}\n\n/**\n * Extracts transport types based on transport constructor name\n * @param transport - MCP transport instance\n * @returns Transport type mapping for span attributes\n */\nexport function getTransportTypes(transport: MCPTransport): { mcpTransport: string; networkTransport: string } {\n if (!transport?.constructor) {\n return { mcpTransport: 'unknown', networkTransport: 'unknown' };\n }\n const transportName = typeof transport.constructor?.name === 'string' ? transport.constructor.name : 'unknown';\n let networkTransport = 'unknown';\n\n const lowerTransportName = transportName.toLowerCase();\n if (lowerTransportName.includes('stdio')) {\n networkTransport = 'pipe';\n } else if (lowerTransportName.includes('http') || lowerTransportName.includes('sse')) {\n networkTransport = 'tcp';\n }\n\n return {\n mcpTransport: transportName,\n networkTransport,\n };\n}\n\n/**\n * Build transport and network attributes\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @returns Transport attributes for span instrumentation\n * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow\n */\nexport function buildTransportAttributes(\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n): Record {\n const sessionId = transport && 'sessionId' in transport ? transport.sessionId : undefined;\n const clientInfo = extra ? extractClientInfo(extra) : {};\n const { mcpTransport, networkTransport } = getTransportTypes(transport);\n const clientAttributes = getClientAttributes(transport);\n const serverAttributes = getServerAttributes(transport);\n const protocolVersion = getProtocolVersionForTransport(transport);\n\n const attributes = {\n ...(sessionId && { [MCP_SESSION_ID_ATTRIBUTE]: sessionId }),\n ...(clientInfo.address && { [CLIENT_ADDRESS_ATTRIBUTE]: clientInfo.address }),\n ...(clientInfo.port && { [CLIENT_PORT_ATTRIBUTE]: clientInfo.port }),\n [MCP_TRANSPORT_ATTRIBUTE]: mcpTransport,\n [NETWORK_TRANSPORT_ATTRIBUTE]: networkTransport,\n [NETWORK_PROTOCOL_VERSION_ATTRIBUTE]: '2.0',\n ...(protocolVersion && { [MCP_PROTOCOL_VERSION_ATTRIBUTE]: protocolVersion }),\n ...clientAttributes,\n ...serverAttributes,\n };\n\n return attributes;\n}\n","/**\n * Request-span correlation system for MCP server instrumentation\n *\n * Handles mapping requestId to span data for correlation with handler execution.\n *\n * Uses sessionId as the primary key for stateful transports. This handles the wrapper\n * transport pattern (e.g., NodeStreamableHTTPServerTransport wrapping WebStandardStreamableHTTPServerTransport)\n * where onmessage and send may receive different `this` values but share the same sessionId.\n *\n * Falls back to WeakMap by transport instance for stateless transports (no sessionId).\n */\n\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { extractPromptResultAttributes, extractToolResultAttributes } from './resultExtraction';\nimport { buildServerAttributesFromInfo, extractSessionDataFromInitializeResponse } from './sessionExtraction';\nimport type { MCPTransport, RequestId, RequestSpanMapValue, ResolvedMcpOptions } from './types';\n\n/**\n * Session-scoped correlation for stateful transports (with sessionId)\n * @internal Using sessionId as key handles wrapper transport patterns where\n * different transport objects share the same logical session\n */\nconst sessionToSpanMap = new Map>();\n\n/**\n * Transport-scoped correlation fallback for stateless transports (no sessionId)\n * @internal WeakMap allows automatic cleanup when transport is garbage collected\n */\nconst statelessSpanMap = new WeakMap>();\n\n/**\n * Gets or creates the span map for a transport, using sessionId when available\n * @internal\n * @param transport - MCP transport instance\n * @returns Span map for the transport/session\n */\nfunction getOrCreateSpanMap(transport: MCPTransport): Map {\n const sessionId = transport.sessionId;\n\n if (sessionId) {\n // Stateful transport - use sessionId as key (handles wrapper pattern)\n let spanMap = sessionToSpanMap.get(sessionId);\n if (!spanMap) {\n spanMap = new Map();\n sessionToSpanMap.set(sessionId, spanMap);\n }\n return spanMap;\n }\n\n // Stateless fallback - use transport instance as key\n let spanMap = statelessSpanMap.get(transport);\n if (!spanMap) {\n spanMap = new Map();\n statelessSpanMap.set(transport, spanMap);\n }\n return spanMap;\n}\n\n/**\n * Stores span context for later correlation with handler execution\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param span - Active span to correlate\n * @param method - MCP method name\n */\nexport function storeSpanForRequest(transport: MCPTransport, requestId: RequestId, span: Span, method: string): void {\n const spanMap = getOrCreateSpanMap(transport);\n spanMap.set(requestId, {\n span,\n method,\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n startTime: Date.now(),\n });\n}\n\n/**\n * Completes span with results and cleans up correlation\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param result - Execution result for attribute extraction\n * @param options - Resolved MCP options\n */\nexport function completeSpanWithResults(\n transport: MCPTransport,\n requestId: RequestId,\n result: unknown,\n options: ResolvedMcpOptions,\n): void {\n const spanMap = getOrCreateSpanMap(transport);\n const spanData = spanMap.get(requestId);\n if (spanData) {\n const { span, method } = spanData;\n\n if (method === 'initialize') {\n const sessionData = extractSessionDataFromInitializeResponse(result);\n const serverAttributes = buildServerAttributesFromInfo(sessionData.serverInfo);\n\n const initAttributes: Record = {\n ...serverAttributes,\n };\n if (sessionData.protocolVersion) {\n initAttributes[MCP_PROTOCOL_VERSION_ATTRIBUTE] = sessionData.protocolVersion;\n }\n\n span.setAttributes(initAttributes);\n } else if (method === 'tools/call') {\n const toolAttributes = extractToolResultAttributes(result, options.recordOutputs);\n span.setAttributes(toolAttributes);\n } else if (method === 'prompts/get') {\n const promptAttributes = extractPromptResultAttributes(result, options.recordOutputs);\n span.setAttributes(promptAttributes);\n }\n\n span.end();\n spanMap.delete(requestId);\n }\n}\n\n/**\n * Cleans up pending spans for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupPendingSpansForTransport(transport: MCPTransport): void {\n const sessionId = transport.sessionId;\n\n // Try sessionId-based cleanup first (for stateful transports)\n if (sessionId) {\n const spanMap = sessionToSpanMap.get(sessionId);\n if (spanMap) {\n for (const [, spanData] of spanMap) {\n spanData.span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'cancelled',\n });\n spanData.span.end();\n }\n sessionToSpanMap.delete(sessionId);\n }\n return;\n }\n\n // Fallback to transport-based cleanup (for stateless transports)\n const spanMap = statelessSpanMap.get(transport);\n if (spanMap) {\n for (const [, spanData] of spanMap) {\n spanData.span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'cancelled',\n });\n spanData.span.end();\n }\n spanMap.clear();\n // Note: WeakMap entries are automatically cleaned up when transport is GC'd\n }\n}\n","/**\n * Method configuration and request processing for MCP server instrumentation\n */\n\nimport {\n MCP_PROMPT_NAME_ATTRIBUTE,\n MCP_REQUEST_ARGUMENT,\n MCP_RESOURCE_URI_ATTRIBUTE,\n MCP_TOOL_NAME_ATTRIBUTE,\n} from './attributes';\nimport type { MethodConfig } from './types';\n\n/**\n * Configuration for MCP methods to extract targets and arguments\n * @internal Maps method names to their extraction configuration\n */\nconst METHOD_CONFIGS: Record = {\n 'tools/call': {\n targetField: 'name',\n targetAttribute: MCP_TOOL_NAME_ATTRIBUTE,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n 'resources/read': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n captureUri: true,\n },\n 'resources/subscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'resources/unsubscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'prompts/get': {\n targetField: 'name',\n targetAttribute: MCP_PROMPT_NAME_ATTRIBUTE,\n captureName: true,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n};\n\n/**\n * Extracts target info from method and params based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Target name and attributes for span instrumentation\n */\nexport function extractTargetInfo(\n method: string,\n params: Record,\n): {\n target?: string;\n attributes: Record;\n} {\n const config = METHOD_CONFIGS[method];\n if (!config) {\n return { attributes: {} };\n }\n\n const target =\n config.targetField && typeof params?.[config.targetField] === 'string'\n ? (params[config.targetField] as string)\n : undefined;\n\n return {\n target,\n attributes: target && config.targetAttribute ? { [config.targetAttribute]: target } : {},\n };\n}\n\n/**\n * Extracts request arguments based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Arguments as span attributes with mcp.request.argument prefix\n */\nexport function getRequestArguments(method: string, params: Record): Record {\n const args: Record = {};\n const config = METHOD_CONFIGS[method];\n\n if (!config) {\n return args;\n }\n\n if (config.captureArguments && config.argumentsField && params?.[config.argumentsField]) {\n const argumentsObj = params[config.argumentsField];\n if (typeof argumentsObj === 'object' && argumentsObj !== null) {\n for (const [key, value] of Object.entries(argumentsObj as Record)) {\n args[`${MCP_REQUEST_ARGUMENT}.${key.toLowerCase()}`] = JSON.stringify(value);\n }\n }\n }\n\n if (config.captureUri && params?.uri) {\n args[`${MCP_REQUEST_ARGUMENT}.uri`] = JSON.stringify(params.uri);\n }\n\n if (config.captureName && params?.name) {\n args[`${MCP_REQUEST_ARGUMENT}.name`] = JSON.stringify(params.name);\n }\n\n return args;\n}\n","/**\n * Core attribute extraction and building functions for MCP server instrumentation\n */\n\nimport { isURLObjectRelative, parseStringToURLObject } from '../../utils/url';\nimport {\n MCP_LOGGING_DATA_TYPE_ATTRIBUTE,\n MCP_LOGGING_LEVEL_ATTRIBUTE,\n MCP_LOGGING_LOGGER_ATTRIBUTE,\n MCP_LOGGING_MESSAGE_ATTRIBUTE,\n MCP_REQUEST_ID_ATTRIBUTE,\n MCP_RESOURCE_URI_ATTRIBUTE,\n} from './attributes';\nimport { extractTargetInfo, getRequestArguments } from './methodConfig';\nimport type { JsonRpcNotification, JsonRpcRequest, McpSpanType } from './types';\n\n/**\n * Formats logging data for span attributes\n * @internal\n */\nfunction formatLoggingData(data: unknown): string {\n return typeof data === 'string' ? data : JSON.stringify(data);\n}\n\n/**\n * Extracts additional attributes for specific notification types\n * @param method - Notification method name\n * @param params - Notification parameters\n * @param recordInputs - Whether to include actual content or just metadata\n * @returns Method-specific attributes for span instrumentation\n */\nexport function getNotificationAttributes(\n method: string,\n params: Record,\n recordInputs?: boolean,\n): Record {\n const attributes: Record = {};\n\n switch (method) {\n case 'notifications/cancelled':\n if (params?.requestId) {\n attributes['mcp.cancelled.request_id'] = String(params.requestId);\n }\n if (params?.reason) {\n attributes['mcp.cancelled.reason'] = String(params.reason);\n }\n break;\n\n case 'notifications/message':\n if (params?.level) {\n attributes[MCP_LOGGING_LEVEL_ATTRIBUTE] = String(params.level);\n }\n if (params?.logger) {\n attributes[MCP_LOGGING_LOGGER_ATTRIBUTE] = String(params.logger);\n }\n if (params?.data !== undefined) {\n attributes[MCP_LOGGING_DATA_TYPE_ATTRIBUTE] = typeof params.data;\n if (recordInputs) {\n attributes[MCP_LOGGING_MESSAGE_ATTRIBUTE] = formatLoggingData(params.data);\n }\n }\n break;\n\n case 'notifications/progress':\n if (params?.progressToken) {\n attributes['mcp.progress.token'] = String(params.progressToken);\n }\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.current'] = params.progress;\n }\n if (typeof params?.total === 'number') {\n attributes['mcp.progress.total'] = params.total;\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.percentage'] = (params.progress / params.total) * 100;\n }\n }\n if (params?.message) {\n attributes['mcp.progress.message'] = String(params.message);\n }\n break;\n\n case 'notifications/resources/updated':\n if (params?.uri) {\n attributes[MCP_RESOURCE_URI_ATTRIBUTE] = String(params.uri);\n const urlObject = parseStringToURLObject(String(params.uri));\n if (urlObject && !isURLObjectRelative(urlObject)) {\n attributes['mcp.resource.protocol'] = urlObject.protocol.replace(':', '');\n }\n }\n break;\n\n case 'notifications/initialized':\n attributes['mcp.lifecycle.phase'] = 'initialization_complete';\n attributes['mcp.protocol.ready'] = 1;\n break;\n }\n\n return attributes;\n}\n\n/**\n * Build type-specific attributes based on message type\n * @param type - Span type (request or notification)\n * @param message - JSON-RPC message\n * @param params - Optional parameters for attribute extraction\n * @param recordInputs - Whether to capture input arguments in spans\n * @returns Type-specific attributes for span instrumentation\n */\nexport function buildTypeSpecificAttributes(\n type: McpSpanType,\n message: JsonRpcRequest | JsonRpcNotification,\n params?: Record,\n recordInputs?: boolean,\n): Record {\n if (type === 'request') {\n const request = message as JsonRpcRequest;\n const targetInfo = extractTargetInfo(request.method, params || {});\n\n return {\n ...(request.id !== undefined && { [MCP_REQUEST_ID_ATTRIBUTE]: String(request.id) }),\n ...targetInfo.attributes,\n ...(recordInputs ? getRequestArguments(request.method, params || {}) : {}),\n };\n }\n\n return getNotificationAttributes(message.method, params || {}, recordInputs);\n}\n\n// Re-export buildTransportAttributes for spans.ts\nexport { buildTransportAttributes } from './sessionExtraction';\n","/**\n * PII filtering for MCP server spans\n *\n * Removes network-level sensitive data when sendDefaultPii is false.\n * Input/output data (request arguments, tool/prompt results) is controlled\n * separately via recordInputs/recordOutputs options.\n */\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport { CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE } from './attributes';\n\n/**\n * Network PII attributes that should be removed when sendDefaultPii is false\n * @internal\n */\nconst NETWORK_PII_ATTRIBUTES = new Set([CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE]);\n\n/**\n * Checks if an attribute key should be considered network PII.\n *\n * Returns true for:\n * - client.address (IP address)\n * - client.port (port number)\n * - mcp.resource.uri (potentially sensitive URIs)\n *\n * @param key - Attribute key to evaluate\n * @returns true if the attribute should be filtered out (is network PII), false if it should be preserved\n * @internal\n */\nfunction isNetworkPiiAttribute(key: string): boolean {\n return NETWORK_PII_ATTRIBUTES.has(key);\n}\n\n/**\n * Removes network PII attributes from span data when sendDefaultPii is false\n * @param spanData - Raw span attributes\n * @param sendDefaultPii - Whether to include PII data\n * @returns Filtered span attributes\n */\nexport function filterMcpPiiFromSpanData(\n spanData: Record,\n sendDefaultPii: boolean,\n): Record {\n if (sendDefaultPii) {\n return spanData as Record;\n }\n\n return Object.entries(spanData).reduce(\n (acc, [key, value]) => {\n if (!isNetworkPiiAttribute(key)) {\n acc[key] = value as SpanAttributeValue;\n }\n return acc;\n },\n {} as Record,\n );\n}\n","/**\n * Span creation and management functions for MCP server instrumentation\n *\n * Provides unified span creation following OpenTelemetry MCP semantic conventions and our opinitionated take on MCP.\n * Handles both request and notification spans with attribute extraction.\n */\n\nimport { getClient } from '../../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../../semanticAttributes';\nimport { startSpan } from '../../tracing';\nimport { buildTransportAttributes, buildTypeSpecificAttributes } from './attributeExtraction';\nimport {\n MCP_FUNCTION_ORIGIN_VALUE,\n MCP_METHOD_NAME_ATTRIBUTE,\n MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE,\n MCP_NOTIFICATION_ORIGIN_VALUE,\n MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE,\n MCP_ROUTE_SOURCE_VALUE,\n MCP_SERVER_OP_VALUE,\n} from './attributes';\nimport { extractTargetInfo } from './methodConfig';\nimport { filterMcpPiiFromSpanData } from './piiFiltering';\nimport type {\n ExtraHandlerData,\n JsonRpcNotification,\n JsonRpcRequest,\n McpSpanConfig,\n MCPTransport,\n ResolvedMcpOptions,\n} from './types';\n\n/**\n * Creates a span name based on the method and target\n * @internal\n * @param method - MCP method name\n * @param target - Optional target identifier\n * @returns Formatted span name\n */\nfunction createSpanName(method: string, target?: string): string {\n return target ? `${method} ${target}` : method;\n}\n\n/**\n * Build Sentry-specific attributes based on span type\n * @internal\n * @param type - Span type configuration\n * @returns Sentry-specific attributes\n */\nfunction buildSentryAttributes(type: McpSpanConfig['type']): Record {\n let op: string;\n let origin: string;\n\n switch (type) {\n case 'request':\n op = MCP_SERVER_OP_VALUE;\n origin = MCP_FUNCTION_ORIGIN_VALUE;\n break;\n case 'notification-incoming':\n op = MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n case 'notification-outgoing':\n op = MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: MCP_ROUTE_SOURCE_VALUE,\n };\n}\n\n/**\n * Unified builder for creating MCP spans\n * @internal\n * @param config - Span configuration\n * @returns Created span\n */\nfunction createMcpSpan(config: McpSpanConfig): unknown {\n const { type, message, transport, extra, callback, options } = config;\n const { method } = message;\n const params = message.params;\n\n // Determine span name based on type and OTEL conventions\n let spanName: string;\n if (type === 'request') {\n const targetInfo = extractTargetInfo(method, params || {});\n spanName = createSpanName(method, targetInfo.target);\n } else {\n // For notifications, use method name directly per OpenTelemetry conventions\n spanName = method;\n }\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes(type, message, params, options?.recordInputs),\n ...buildSentryAttributes(type),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return startSpan(\n {\n name: spanName,\n forceTransaction: true,\n attributes,\n },\n callback,\n );\n}\n\n/**\n * Creates a span for incoming MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param extra - Extra handler data\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n extra: ExtraHandlerData,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-incoming',\n message: jsonRpcMessage,\n transport,\n extra,\n callback,\n options,\n });\n}\n\n/**\n * Creates a span for outgoing MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpOutgoingNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-outgoing',\n message: jsonRpcMessage,\n transport,\n options,\n callback,\n });\n}\n\n/**\n * Builds span configuration for MCP server requests\n * @param jsonRpcMessage - Request message\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @param options - Resolved MCP options\n * @returns Span configuration object\n */\nexport function buildMcpServerSpanConfig(\n jsonRpcMessage: JsonRpcRequest,\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n options?: ResolvedMcpOptions,\n): {\n name: string;\n op: string;\n forceTransaction: boolean;\n attributes: Record;\n} {\n const { method } = jsonRpcMessage;\n const params = jsonRpcMessage.params;\n\n const targetInfo = extractTargetInfo(method, params || {});\n const spanName = createSpanName(method, targetInfo.target);\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes('request', jsonRpcMessage, params, options?.recordInputs),\n ...buildSentryAttributes('request'),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return {\n name: spanName,\n op: MCP_SERVER_OP_VALUE,\n forceTransaction: true,\n attributes,\n };\n}\n","/**\n * Transport layer instrumentation for MCP server\n *\n * Handles message interception and response correlation.\n * @see https://modelcontextprotocol.io/specification/2025-06-18/basic/transports\n */\n\nimport { getIsolationScope, withIsolationScope } from '../../currentScopes';\nimport { startInactiveSpan, withActiveSpan } from '../../tracing';\nimport { fill } from '../../utils/object';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { cleanupPendingSpansForTransport, completeSpanWithResults, storeSpanForRequest } from './correlation';\nimport { captureError } from './errorCapture';\nimport {\n buildClientAttributesFromInfo,\n extractSessionDataFromInitializeRequest,\n extractSessionDataFromInitializeResponse,\n} from './sessionExtraction';\nimport {\n cleanupSessionDataForTransport,\n storeSessionDataForTransport,\n updateSessionDataForTransport,\n} from './sessionManagement';\nimport { buildMcpServerSpanConfig, createMcpNotificationSpan, createMcpOutgoingNotificationSpan } from './spans';\nimport type { ExtraHandlerData, MCPTransport, ResolvedMcpOptions, SessionData } from './types';\nimport { isJsonRpcNotification, isJsonRpcRequest, isJsonRpcResponse, isValidContentItem } from './validation';\n\n/**\n * Wraps transport.onmessage to create spans for incoming messages.\n * For \"initialize\" requests, extracts and stores client info and protocol version\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportOnMessage(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.onmessage) {\n fill(transport, 'onmessage', originalOnMessage => {\n return function (this: MCPTransport, message: unknown, extra?: unknown) {\n if (isJsonRpcRequest(message)) {\n const isInitialize = message.method === 'initialize';\n let initSessionData: SessionData | undefined;\n\n if (isInitialize) {\n try {\n initSessionData = extractSessionDataFromInitializeRequest(message);\n storeSessionDataForTransport(this, initSessionData);\n } catch {\n // noop\n }\n }\n\n const isolationScope = getIsolationScope().clone();\n\n return withIsolationScope(isolationScope, () => {\n const spanConfig = buildMcpServerSpanConfig(message, this, extra as ExtraHandlerData, options);\n const span = startInactiveSpan(spanConfig);\n\n // For initialize requests, add client info directly to span (works even for stateless transports)\n if (isInitialize && initSessionData) {\n span.setAttributes({\n ...buildClientAttributesFromInfo(initSessionData.clientInfo),\n ...(initSessionData.protocolVersion && {\n [MCP_PROTOCOL_VERSION_ATTRIBUTE]: initSessionData.protocolVersion,\n }),\n });\n }\n\n storeSpanForRequest(this, message.id, span, message.method);\n\n return withActiveSpan(span, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n });\n }\n\n if (isJsonRpcNotification(message)) {\n return createMcpNotificationSpan(message, this, extra as ExtraHandlerData, options, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n }\n\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n };\n });\n }\n}\n\n/**\n * Wraps transport.send to handle outgoing messages and response correlation.\n * For \"initialize\" responses, extracts and stores protocol version and server info\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportSend(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.send) {\n fill(transport, 'send', originalSend => {\n return async function (this: MCPTransport, ...args: unknown[]) {\n const [message] = args;\n\n if (isJsonRpcNotification(message)) {\n return createMcpOutgoingNotificationSpan(message, this, options, () => {\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n });\n }\n\n if (isJsonRpcResponse(message)) {\n if (message.id !== null && message.id !== undefined) {\n if (message.error) {\n captureJsonRpcErrorResponse(message.error);\n }\n\n if (isValidContentItem(message.result)) {\n if (message.result.protocolVersion || message.result.serverInfo) {\n try {\n const serverData = extractSessionDataFromInitializeResponse(message.result);\n updateSessionDataForTransport(this, serverData);\n } catch {\n // noop\n }\n }\n }\n\n completeSpanWithResults(this, message.id, message.result, options);\n }\n }\n\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport.onclose to clean up pending spans for this transport only\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportOnClose(transport: MCPTransport): void {\n if (transport.onclose) {\n fill(transport, 'onclose', originalOnClose => {\n return function (this: MCPTransport, ...args: unknown[]) {\n cleanupPendingSpansForTransport(this);\n cleanupSessionDataForTransport(this);\n return (originalOnClose as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport error handlers to capture connection errors\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportError(transport: MCPTransport): void {\n if (transport.onerror) {\n fill(transport, 'onerror', (originalOnError: (error: Error) => void) => {\n return function (this: MCPTransport, error: Error) {\n captureTransportError(error);\n return originalOnError.call(this, error);\n };\n });\n }\n}\n\n/**\n * Captures JSON-RPC error responses for server-side errors.\n * @see https://www.jsonrpc.org/specification#error_object\n * @internal\n * @param errorResponse - JSON-RPC error response\n */\nfunction captureJsonRpcErrorResponse(errorResponse: unknown): void {\n try {\n if (errorResponse && typeof errorResponse === 'object' && 'code' in errorResponse && 'message' in errorResponse) {\n const jsonRpcError = errorResponse as { code: number; message: string; data?: unknown };\n\n const isServerError =\n jsonRpcError.code === -32603 || (jsonRpcError.code >= -32099 && jsonRpcError.code <= -32000);\n\n if (isServerError) {\n const error = new Error(jsonRpcError.message);\n error.name = `JsonRpcError_${jsonRpcError.code}`;\n\n captureError(error, 'protocol');\n }\n }\n } catch {\n // noop\n }\n}\n\n/**\n * Captures transport connection errors\n * @internal\n * @param error - Transport error\n */\nfunction captureTransportError(error: Error): void {\n try {\n captureError(error, 'transport');\n } catch {\n // noop\n }\n}\n","import { getClient } from '../../currentScopes';\nimport { fill } from '../../utils/object';\nimport { wrapAllMCPHandlers } from './handlers';\nimport { wrapTransportError, wrapTransportOnClose, wrapTransportOnMessage, wrapTransportSend } from './transport';\nimport type { MCPServerInstance, McpServerWrapperOptions, MCPTransport, ResolvedMcpOptions } from './types';\nimport { validateMcpServerInstance } from './validation';\n\n/**\n * Tracks wrapped MCP server instances to prevent double-wrapping\n * @internal\n */\nconst wrappedMcpServerInstances = new WeakSet();\n\n/**\n * Wraps a MCP Server instance from the `@modelcontextprotocol/sdk` package with Sentry instrumentation.\n *\n * Compatible with versions `^1.9.0` of the `@modelcontextprotocol/sdk` package.\n * Automatically instruments transport methods and handler functions for comprehensive monitoring.\n *\n * @example\n * ```typescript\n * import * as Sentry from '@sentry/core';\n * import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n * import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\n *\n * // Default: inputs/outputs captured based on sendDefaultPii option\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" })\n * );\n *\n * // Explicitly control input/output capture\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" }),\n * { recordInputs: true, recordOutputs: false }\n * );\n *\n * const transport = new StreamableHTTPServerTransport();\n * await server.connect(transport);\n * ```\n *\n * @param mcpServerInstance - MCP server instance to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns Instrumented server instance (same reference)\n */\nexport function wrapMcpServerWithSentry(mcpServerInstance: S, options?: McpServerWrapperOptions): S {\n if (wrappedMcpServerInstances.has(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n if (!validateMcpServerInstance(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n const serverInstance = mcpServerInstance as MCPServerInstance;\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n\n const resolvedOptions: ResolvedMcpOptions = {\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n };\n\n fill(serverInstance, 'connect', originalConnect => {\n return async function (this: MCPServerInstance, transport: MCPTransport, ...restArgs: unknown[]) {\n const result = await (originalConnect as (...args: unknown[]) => Promise).call(\n this,\n transport,\n ...restArgs,\n );\n\n wrapTransportOnMessage(transport, resolvedOptions);\n wrapTransportSend(transport, resolvedOptions);\n wrapTransportOnClose(transport);\n wrapTransportError(transport);\n\n return result;\n };\n });\n\n wrapAllMCPHandlers(serverInstance);\n\n wrappedMcpServerInstances.add(mcpServerInstance);\n return mcpServerInstance;\n}\n","import { getClient, getCurrentScope } from './currentScopes';\nimport type { EventHint } from './types-hoist/event';\nimport type { FeedbackEvent, SendFeedbackParams } from './types-hoist/feedback';\n\n/**\n * Send user feedback to Sentry.\n */\nexport function captureFeedback(\n params: SendFeedbackParams,\n hint: EventHint & { includeReplay?: boolean } = {},\n scope = getCurrentScope(),\n): string {\n const { message, name, email, url, source, associatedEventId, tags } = params;\n\n const feedbackEvent: FeedbackEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n associated_event_id: associatedEventId,\n },\n },\n type: 'feedback',\n level: 'info',\n tags,\n };\n\n const client = scope?.getClient() || getClient();\n\n if (client) {\n client.emit('beforeSendFeedback', feedbackEvent, hint);\n }\n\n const eventId = scope.captureEvent(feedbackEvent, hint);\n\n return eventId;\n}\n","import type { Scope } from '../scope';\nimport type { Log, LogSeverityLevel } from '../types-hoist/log';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport { _INTERNAL_captureLog } from './internal';\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n * @param scope - The scope to capture the log with.\n * @param severityNumber - The severity number of the log.\n */\nfunction captureLog(\n level: LogSeverityLevel,\n message: ParameterizedString,\n attributes?: Log['attributes'],\n scope?: Scope,\n severityNumber?: Log['severityNumber'],\n): void {\n _INTERNAL_captureLog({ level, message, attributes, severityNumber }, scope);\n}\n\n/**\n * Additional metadata to capture the log with.\n */\ninterface CaptureLogMetadata {\n scope?: Scope;\n}\n\n/**\n * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { userId: 100, route: '/dashboard' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('User clicked submit button', {\n * buttonId: 'submit-form',\n * formId: 'user-profile',\n * timestamp: Date.now()\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace(Sentry.logger.fmt`User ${user} navigated to ${page}`, {\n * userId: '123',\n * sessionId: 'abc-xyz'\n * });\n * ```\n */\nexport function trace(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('trace', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { component: 'Header', state: 'loading' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Component mounted', {\n * component: 'UserProfile',\n * props: { userId: 123 },\n * renderTime: 150\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug(Sentry.logger.fmt`API request to ${endpoint} failed`, {\n * statusCode: 404,\n * requestId: 'req-123',\n * duration: 250\n * });\n * ```\n */\nexport function debug(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('debug', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { feature: 'checkout', status: 'completed' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User completed checkout', {\n * orderId: 'order-123',\n * amount: 99.99,\n * paymentMethod: 'credit_card'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info(Sentry.logger.fmt`User ${user} updated profile picture`, {\n * userId: 'user-123',\n * imageSize: '2.5MB',\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function info(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('info', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { browser: 'Chrome', version: '91.0' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Browser compatibility issue detected', {\n * browser: 'Safari',\n * version: '14.0',\n * feature: 'WebRTC',\n * fallback: 'enabled'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn(Sentry.logger.fmt`API endpoint ${endpoint} is deprecated`, {\n * recommendedEndpoint: '/api/v2/users',\n * sunsetDate: '2024-12-31',\n * clientVersion: '1.2.3'\n * });\n * ```\n */\nexport function warn(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('warn', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { error: 'NetworkError', url: '/api/data' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to load user data', {\n * error: 'NetworkError',\n * url: '/api/users/123',\n * statusCode: 500,\n * retryCount: 3\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error(Sentry.logger.fmt`Payment processing failed for order ${orderId}`, {\n * error: 'InsufficientFunds',\n * amount: 100.00,\n * currency: 'USD',\n * userId: 'user-456'\n * });\n * ```\n */\nexport function error(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('error', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { appState: 'corrupted', sessionId: 'abc-123' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Application state corrupted', {\n * lastKnownState: 'authenticated',\n * sessionId: 'session-123',\n * timestamp: Date.now(),\n * recoveryAttempted: true\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal(Sentry.logger.fmt`Critical system failure in ${service}`, {\n * service: 'payment-processor',\n * errorCode: 'CRITICAL_FAILURE',\n * affectedUsers: 150,\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function fatal(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('fatal', message, attributes, scope);\n}\n\nexport { fmt } from '../utils/parameterize';\n","import { isPrimitive } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\n/**\n * Formats the given values into a string.\n *\n * @param values - The values to format.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The formatted string.\n */\nexport function formatConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth);\n}\n\n/**\n * Joins the given values into a string.\n *\n * @param values - The values to join.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The joined string.\n */\nexport function safeJoinConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return values\n .map(value =>\n isPrimitive(value) ? String(value) : JSON.stringify(normalize(value, normalizeDepth, normalizeMaxBreadth)),\n )\n .join(' ');\n}\n\n/**\n * Checks if a string contains console substitution patterns like %s, %d, %i, %f, %o, %O, %c.\n *\n * @param str - The string to check\n * @returns true if the string contains console substitution patterns\n */\nexport function hasConsoleSubstitutions(str: string): boolean {\n // Match console substitution patterns: %s, %d, %i, %f, %o, %O, %c\n return /%[sdifocO]/.test(str);\n}\n\n/**\n * Creates template attributes for multiple console arguments.\n *\n * @param args - The console arguments\n * @returns An object with template and parameter attributes\n */\nexport function createConsoleTemplateAttributes(firstArg: unknown, followingArgs: unknown[]): Record {\n const attributes: Record = {};\n\n // Create template with placeholders for each argument\n const template = new Array(followingArgs.length).fill('{}').join(' ');\n attributes['sentry.message.template'] = `${firstArg} ${template}`;\n\n // Add each argument as a parameter\n followingArgs.forEach((arg, index) => {\n attributes[`sentry.message.parameter.${index}`] = arg;\n });\n\n return attributes;\n}\n","import { getClient } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS, debug } from '../utils/debug-logger';\nimport { _INTERNAL_captureLog } from './internal';\nimport { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions } from './utils';\n\ninterface CaptureConsoleOptions {\n levels: ConsoleLevel[];\n}\n\nconst INTEGRATION_NAME = 'ConsoleLogs';\n\nconst DEFAULT_ATTRIBUTES = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.log.console',\n};\n\nconst _consoleLoggingIntegration = ((options: Partial = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const { enableLogs, normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n if (!enableLogs) {\n DEBUG_BUILD && debug.warn('`enableLogs` is not enabled, ConsoleLogs integration disabled');\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n const firstArg = args[0];\n const followingArgs = args.slice(1);\n\n if (level === 'assert') {\n if (!firstArg) {\n const assertionMessage =\n followingArgs.length > 0\n ? `Assertion failed: ${formatConsoleArgs(followingArgs, normalizeDepth, normalizeMaxBreadth)}`\n : 'Assertion failed';\n _INTERNAL_captureLog({ level: 'error', message: assertionMessage, attributes: DEFAULT_ATTRIBUTES });\n }\n return;\n }\n\n const isLevelLog = level === 'log';\n\n const shouldGenerateTemplate =\n args.length > 1 && typeof args[0] === 'string' && !hasConsoleSubstitutions(args[0]);\n const attributes = {\n ...DEFAULT_ATTRIBUTES,\n ...(shouldGenerateTemplate ? createConsoleTemplateAttributes(firstArg, followingArgs) : {}),\n };\n\n _INTERNAL_captureLog({\n level: isLevelLog ? 'info' : level,\n message: formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth),\n severityNumber: isLevelLog ? 10 : undefined,\n attributes,\n });\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Captures calls to the `console` API as logs in Sentry. Requires the `enableLogs` option to be enabled.\n *\n * @experimental This feature is experimental and may be changed or removed in future versions.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```ts\n * import * as Sentry from '@sentry/browser';\n *\n * Sentry.init({\n * enableLogs: true,\n * integrations: [Sentry.consoleLoggingIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleLoggingIntegration = defineIntegration(_consoleLoggingIntegration);\n","import type { Scope } from '../scope';\nimport type { Metric, MetricType } from '../types-hoist/metric';\nimport { _INTERNAL_captureMetric } from './internal';\n\n/**\n * Options for capturing a metric.\n */\nexport interface MetricOptions {\n /**\n * The unit of the metric value.\n */\n unit?: string;\n\n /**\n * Arbitrary structured data that stores information about the metric.\n */\n attributes?: Metric['attributes'];\n\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n}\n\n/**\n * Capture a metric with the given type, name, and value.\n *\n * @param type - The type of the metric.\n * @param name - The name of the metric.\n * @param value - The value of the metric.\n * @param options - Options for capturing the metric.\n */\nfunction captureMetric(type: MetricType, name: string, value: number, options?: MetricOptions): void {\n _INTERNAL_captureMetric(\n { type, name, value, unit: options?.unit, attributes: options?.attributes },\n { scope: options?.scope },\n );\n}\n\n/**\n * @summary Increment a counter metric.\n *\n * @param name - The name of the counter metric.\n * @param value - The value to increment by (defaults to 1).\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.count('api.requests', 1, {\n * attributes: {\n * endpoint: '/api/users',\n * method: 'GET',\n * status: 200\n * }\n * });\n * ```\n *\n * @example With custom value\n *\n * ```\n * Sentry.metrics.count('items.processed', 5, {\n * attributes: {\n * processor: 'batch-processor',\n * queue: 'high-priority'\n * }\n * });\n * ```\n */\nexport function count(name: string, value: number = 1, options?: MetricOptions): void {\n captureMetric('counter', name, value, options);\n}\n\n/**\n * @summary Set a gauge metric to a specific value.\n *\n * @param name - The name of the gauge metric.\n * @param value - The current value of the gauge.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.gauge('memory.usage', 1024, {\n * unit: 'megabyte',\n * attributes: {\n * process: 'web-server',\n * region: 'us-east-1'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.gauge('active.connections', 42, {\n * attributes: {\n * server: 'api-1',\n * protocol: 'websocket'\n * }\n * });\n * ```\n */\nexport function gauge(name: string, value: number, options?: MetricOptions): void {\n captureMetric('gauge', name, value, options);\n}\n\n/**\n * @summary Record a value in a distribution metric.\n *\n * @param name - The name of the distribution metric.\n * @param value - The value to record in the distribution.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.distribution('task.duration', 500, {\n * unit: 'millisecond',\n * attributes: {\n * task: 'data-processing',\n * priority: 'high'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.distribution('batch.size', 100, {\n * attributes: {\n * processor: 'batch-1',\n * type: 'async'\n * }\n * });\n * ```\n */\nexport function distribution(name: string, value: number, options?: MetricOptions): void {\n captureMetric('distribution', name, value, options);\n}\n","import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { _INTERNAL_captureLog } from '../logs/internal';\nimport { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions } from '../logs/utils';\nimport type { LogSeverityLevel } from '../types-hoist/log';\nimport { isPlainObject } from '../utils/is';\nimport { normalize } from '../utils/normalize';\n\n/**\n * Result of extracting structured attributes from console arguments.\n */\ninterface ExtractAttributesResult {\n /**\n * The log message to use for the log entry, typically constructed from the console arguments.\n */\n message?: string;\n\n /**\n * The parameterized template string which is added as `sentry.message.template` attribute if applicable.\n */\n messageTemplate?: string;\n\n /**\n * Remaining arguments to process as attributes with keys like `sentry.message.parameter.0`, `sentry.message.parameter.1`, etc.\n */\n messageParameters?: unknown[];\n\n /**\n * Additional attributes to add to the log.\n */\n attributes?: Record;\n}\n\n/**\n * Options for the Sentry Consola reporter.\n */\ninterface ConsolaReporterOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * consola.addReporter(sentryReporter);\n * ```\n */\n levels?: Array;\n\n /**\n * Optionally provide a specific Sentry client instance to use for capturing logs.\n * If not provided, the current client will be retrieved using `getClient()`.\n *\n * This is useful when you want to use specific client options for log normalization\n * or when working with multiple client instances.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * client: myCustomClient,\n * });\n * ```\n */\n client?: Client;\n}\n\nexport interface ConsolaReporter {\n log: (logObj: ConsolaLogObject) => void;\n}\n\n/**\n * Represents a log object that Consola reporters receive.\n *\n * This interface matches the structure of log objects passed to Consola reporters.\n * See: https://github.com/unjs/consola#custom-reporters\n *\n * @example\n * ```ts\n * const reporter = {\n * log(logObj: ConsolaLogObject) {\n * console.log(`[${logObj.type}] ${logObj.message || logObj.args?.join(' ')}`);\n * }\n * };\n * consola.addReporter(reporter);\n * ```\n */\nexport interface ConsolaLogObject {\n /**\n * Allows additional custom properties to be set on the log object. These properties will be captured as log attributes.\n *\n * Additional properties are set when passing a single object with a `message` (`consola.[type]({ message: '', ... })`) or if the reporter is called directly\n *\n * @example\n * ```ts\n * const reporter = Sentry.createConsolaReporter();\n * reporter.log({\n * type: 'info',\n * message: 'User action',\n * userId: 123,\n * sessionId: 'abc-123'\n * });\n * // Will create attributes: `userId` and `sessionId`\n * ```\n */\n [key: string]: unknown;\n\n /**\n * The numeric log level (0-5) or null.\n *\n * Consola log levels:\n * - 0: Fatal and Error\n * - 1: Warnings\n * - 2: Normal logs\n * - 3: Informational logs, success, fail, ready, start, box, ...\n * - 4: Debug logs\n * - 5: Trace logs\n * - null: Some special types like 'verbose'\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-level\n */\n level?: number | null;\n\n /**\n * The log type/method name (e.g., 'error', 'warn', 'info', 'debug', 'trace', 'success', 'fail', etc.).\n *\n * Consola built-in types include:\n * - Standard: silent, fatal, error, warn, log, info, success, fail, ready, start, box, debug, trace, verbose\n * - Custom types can also be defined\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-types\n */\n type?: string;\n\n /**\n * An optional tag/scope for the log entry.\n *\n * Tags are created using `consola.withTag('scope')` and help categorize logs.\n *\n * @example\n * ```ts\n * const scopedLogger = consola.withTag('auth');\n * scopedLogger.info('User logged in'); // tag will be 'auth'\n * ```\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#withtagtag\n */\n tag?: string;\n\n /**\n * The raw arguments passed to the log method.\n *\n * These args are typically formatted into the final `message`. In Consola reporters, `message` is not provided. See: https://github.com/unjs/consola/issues/406#issuecomment-3684792551\n *\n * @example\n * ```ts\n * consola.info('Hello', 'world', { user: 'john' });\n * // args = ['Hello', 'world', { user: 'john' }]\n * ```\n *\n * @example\n * ```ts\n * // `message` is a reserved property in Consola\n * consola.log({ message: 'Hello' });\n * // args = ['Hello']\n * ```\n */\n args?: unknown[];\n\n /**\n * The timestamp when the log was created.\n *\n * This is automatically set by Consola when the log is created.\n */\n date?: Date;\n\n /**\n * The formatted log message.\n *\n * When provided, this is the final formatted message. When not provided,\n * the message should be constructed from the `args` array.\n *\n * Note: In reporters, `message` is typically undefined. It is primarily for\n * `consola.[type]({ message: 'xxx' })` usage and is normalized into `args` before\n * reporters receive the log object. See: https://github.com/unjs/consola/issues/406#issuecomment-3684792551\n */\n message?: string;\n}\n\nconst DEFAULT_CAPTURED_LEVELS: Array = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n/**\n * Creates a new Sentry reporter for Consola that forwards logs to Sentry. Requires the `enableLogs` option to be enabled.\n *\n * **Note: This integration supports Consola v3.x only.** The reporter interface and log object structure\n * may differ in other versions of Consola.\n *\n * @param options - Configuration options for the reporter.\n * @returns A Consola reporter that can be added to consola instances.\n *\n * @example\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import { consola } from 'consola';\n *\n * Sentry.init({\n * enableLogs: true,\n * });\n *\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Optional: filter levels to capture\n * levels: ['error', 'warn', 'info'],\n * });\n *\n * consola.addReporter(sentryReporter);\n *\n * // Now consola logs will be captured by Sentry\n * consola.info('This will be sent to Sentry');\n * consola.error('This error will also be sent to Sentry');\n * ```\n */\nexport function createConsolaReporter(options: ConsolaReporterOptions = {}): ConsolaReporter {\n const levels = new Set(options.levels ?? DEFAULT_CAPTURED_LEVELS);\n const providedClient = options.client;\n\n return {\n log(logObj: ConsolaLogObject) {\n // We need to exclude certain known properties from being added as additional attributes\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { type, level, message: consolaMessage, args, tag, date: _date, ...rest } = logObj;\n\n // Get client - use provided client or current client\n const client = providedClient || getClient();\n if (!client) {\n return;\n }\n\n // Determine the log severity level\n const logSeverityLevel = getLogSeverityLevel(type, level);\n\n // Early exit if this level should not be captured\n if (!levels.has(logSeverityLevel)) {\n return;\n }\n\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n\n const attributes: Record = {};\n\n // Build attributes\n for (const [key, value] of Object.entries(rest)) {\n attributes[key] = normalize(value, normalizeDepth, normalizeMaxBreadth);\n }\n\n attributes['sentry.origin'] = 'auto.log.consola';\n\n if (tag) {\n attributes['consola.tag'] = tag;\n }\n\n if (type) {\n attributes['consola.type'] = type;\n }\n\n // Only add level if it's a valid number (not null/undefined)\n if (level != null && typeof level === 'number') {\n attributes['consola.level'] = level;\n }\n\n const extractionResult = processExtractedAttributes(\n defaultExtractAttributes(args, normalizeDepth, normalizeMaxBreadth),\n normalizeDepth,\n normalizeMaxBreadth,\n );\n\n if (extractionResult?.attributes) {\n Object.assign(attributes, extractionResult.attributes);\n }\n\n _INTERNAL_captureLog({\n level: logSeverityLevel,\n message:\n extractionResult?.message ||\n consolaMessage ||\n (args && formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth)) ||\n '',\n attributes,\n });\n },\n };\n}\n\n// Mapping from consola log types to Sentry log severity levels\nconst CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n // Consola built-in types\n silent: 'trace',\n fatal: 'fatal',\n error: 'error',\n warn: 'warn',\n log: 'info',\n info: 'info',\n success: 'info',\n fail: 'error',\n ready: 'info',\n start: 'info',\n box: 'info',\n debug: 'debug',\n trace: 'trace',\n verbose: 'debug',\n // Custom types that might exist\n critical: 'fatal',\n notice: 'info',\n};\n\n// Mapping from consola log levels (numbers) to Sentry log severity levels\nconst CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n 0: 'fatal', // Fatal and Error\n 1: 'warn', // Warnings\n 2: 'info', // Normal logs\n 3: 'info', // Informational logs, success, fail, ready, start, ...\n 4: 'debug', // Debug logs\n 5: 'trace', // Trace logs\n};\n\n/**\n * Determines the log severity level from Consola type and level.\n *\n * @param type - The Consola log type (e.g., 'error', 'warn', 'info')\n * @param level - The Consola numeric log level (0-5) or null for some types like 'verbose'\n * @returns The corresponding Sentry log severity level\n */\nfunction getLogSeverityLevel(type?: string, level?: number | null): LogSeverityLevel {\n // Handle special case for verbose logs (level can be null with infinite level in Consola)\n if (type === 'verbose') {\n return 'debug';\n }\n\n // Handle silent logs - these should be at trace level\n if (type === 'silent') {\n return 'trace';\n }\n\n // First try to map by type (more specific)\n if (type) {\n const mappedLevel = CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP[type];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Fallback to level mapping (handle null level)\n if (typeof level === 'number') {\n const mappedLevel = CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[level];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Default fallback\n return 'info';\n}\n\n/**\n * Extracts structured attributes from console arguments. If the first argument is a plain object, its properties are extracted as attributes.\n */\nfunction defaultExtractAttributes(\n args: unknown[] | undefined,\n normalizeDepth: number,\n normalizeMaxBreadth: number,\n): ExtractAttributesResult {\n if (!args?.length) {\n return { message: '' };\n }\n\n // Message looks like how consola logs the message to the console (all args stringified and joined)\n const message = formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth);\n\n const firstArg = args[0];\n\n if (isPlainObject(firstArg)) {\n // Remaining args start from index 2 i f we used second arg as message, otherwise from index 1\n const remainingArgsStartIndex = typeof args[1] === 'string' ? 2 : 1;\n const remainingArgs = args.slice(remainingArgsStartIndex);\n\n return {\n message,\n // Object content from first arg is added as attributes\n attributes: firstArg,\n // Add remaining args as message parameters\n messageParameters: remainingArgs,\n };\n } else {\n const followingArgs = args.slice(1);\n\n const shouldAddTemplateAttr =\n followingArgs.length > 0 && typeof firstArg === 'string' && !hasConsoleSubstitutions(firstArg);\n\n return {\n message,\n messageTemplate: shouldAddTemplateAttr ? firstArg : undefined,\n messageParameters: shouldAddTemplateAttr ? followingArgs : undefined,\n };\n }\n}\n\n/**\n * Processes extracted attributes by normalizing them and preparing message parameter attributes if a template is present.\n */\nfunction processExtractedAttributes(\n extractionResult: ExtractAttributesResult,\n normalizeDepth: number,\n normalizeMaxBreadth: number,\n): { message: string | undefined; attributes: Record } {\n const { message, attributes, messageTemplate, messageParameters } = extractionResult;\n\n const messageParamAttributes: Record = {};\n\n if (messageTemplate && messageParameters) {\n const templateAttrs = createConsoleTemplateAttributes(messageTemplate, messageParameters);\n\n for (const [key, value] of Object.entries(templateAttrs)) {\n messageParamAttributes[key] = key.startsWith('sentry.message.parameter.')\n ? normalize(value, normalizeDepth, normalizeMaxBreadth)\n : value;\n }\n } else if (messageParameters && messageParameters.length > 0) {\n messageParameters.forEach((arg, index) => {\n messageParamAttributes[`sentry.message.parameter.${index}`] = normalize(arg, normalizeDepth, normalizeMaxBreadth);\n });\n }\n\n return {\n message: message,\n attributes: {\n ...normalize(attributes, normalizeDepth, normalizeMaxBreadth),\n ...messageParamAttributes,\n },\n };\n}\n","/**\n * OpenAI Integration Telemetry Attributes\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n */\n\n// =============================================================================\n// OPENTELEMETRY SEMANTIC CONVENTIONS FOR GENAI\n// =============================================================================\n\n/**\n * The input messages sent to the model\n */\nexport const GEN_AI_PROMPT_ATTRIBUTE = 'gen_ai.prompt';\n\n/**\n * The Generative AI system being used\n * For OpenAI, this should always be \"openai\"\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * The name of the model as requested\n * Examples: \"gpt-4\", \"gpt-3.5-turbo\"\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Whether streaming was enabled for the request\n */\nexport const GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream';\n\n/**\n * The temperature setting for the model request\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * The maximum number of tokens requested\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * The frequency penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * The presence penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * The top_p (nucleus sampling) setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * The top_k setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Stop sequences for the model request\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * The encoding format for the model request\n */\nexport const GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format';\n\n/**\n * The dimensions for the model request\n */\nexport const GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions';\n\n/**\n * Array of reasons why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * The name of the model that generated the response\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * The unique identifier for the response\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * The reason why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason';\n\n/**\n * The number of tokens used in the prompt\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * The number of tokens used in the response\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n/**\n * The total number of tokens used (input + output)\n */\nexport const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens';\n\n/**\n * The operation name\n */\nexport const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';\n\n/**\n * Original length of messages array, used to indicate truncations had occured\n */\nexport const GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'sentry.sdk_meta.gen_ai.input.messages.original_length';\n\n/**\n * The prompt messages\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.messages';\n\n/**\n * The model's response messages including text and tool calls\n * Only recorded when recordOutputs is enabled\n * Format: stringified array of message objects with role, parts, and finish_reason\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-output-messages\n */\nexport const GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE = 'gen_ai.output.messages';\n\n/**\n * The system instructions extracted from system messages\n * Only recorded when recordInputs is enabled\n * According to OpenTelemetry spec: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions\n */\nexport const GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions';\n\n/**\n * The response text\n * Only recorded when recordOutputs is enabled\n */\nexport const GEN_AI_RESPONSE_TEXT_ATTRIBUTE = 'gen_ai.response.text';\n\n/**\n * The available tools from incoming request\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools';\n\n/**\n * Whether the response is a streaming response\n */\nexport const GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = 'gen_ai.response.streaming';\n\n/**\n * The tool calls from the response\n * Only recorded when recordOutputs is enabled\n */\nexport const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls';\n\n/**\n * The agent name\n */\nexport const GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name';\n\n/**\n * The pipeline name\n */\nexport const GEN_AI_PIPELINE_NAME_ATTRIBUTE = 'gen_ai.pipeline.name';\n\n/**\n * The conversation ID for linking messages across API calls\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\n/**\n * The number of cache creation input tokens used\n */\nexport const GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_creation_input_tokens';\n\n/**\n * The number of cache read input tokens used\n */\nexport const GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_read_input_tokens';\n\n/**\n * The number of cache write input tokens used\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = 'gen_ai.usage.input_tokens.cache_write';\n\n/**\n * The number of cached input tokens that were used\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = 'gen_ai.usage.input_tokens.cached';\n\n/**\n * The span operation name for invoking an agent\n */\nexport const GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent';\n\n/**\n * The span operation name for generating text\n */\nexport const GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text';\n\n/**\n * The span operation name for streaming text\n */\nexport const GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text';\n\n/**\n * The span operation name for generating object\n */\nexport const GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object';\n\n/**\n * The span operation name for streaming object\n */\nexport const GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_object';\n\n/**\n * The embeddings input\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input';\n\n/**\n * The span operation name for embedding\n */\nexport const GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for embedding many\n */\nexport const GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for reranking\n */\nexport const GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE = 'gen_ai.rerank';\n\n/**\n * The span operation name for executing a tool\n */\nexport const GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool';\n\n/**\n * The tool name for tool call spans\n */\nexport const GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name';\n\n/**\n * The tool call ID\n */\nexport const GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id';\n\n/**\n * The tool type (e.g., 'function')\n */\nexport const GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type';\n\n/**\n * The tool input/arguments\n */\nexport const GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input';\n\n/**\n * The tool output/result\n */\nexport const GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output';\n\n/**\n * The description of the tool being used\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-description\n */\nexport const GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE = 'gen_ai.tool.description';\n\n// =============================================================================\n// OPENAI-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/**\n * The response ID from OpenAI\n */\nexport const OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id';\n\n/**\n * The response model from OpenAI\n */\nexport const OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model';\n\n/**\n * The response timestamp from OpenAI (ISO string)\n */\nexport const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp';\n\n/**\n * The number of completion tokens used\n */\nexport const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens';\n\n/**\n * The number of prompt tokens used\n */\nexport const OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'openai.usage.prompt_tokens';\n\n// =============================================================================\n// ANTHROPIC AI OPERATIONS\n// =============================================================================\n\n/**\n * The response timestamp from Anthropic AI (ISO string)\n */\nexport const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp';\n","import type { ToolCallSpanContext } from './types';\n\n// Global map to track tool call IDs to their corresponding span contexts.\n// This allows us to capture tool errors and link them to the correct span\n// without keeping full Span objects (and their potentially large attributes) alive.\nexport const toolCallSpanContextMap = new Map();\n\n// Operation sets for efficient mapping to OpenTelemetry semantic convention values\nexport const INVOKE_AGENT_OPS = new Set(['ai.generateText', 'ai.streamText', 'ai.generateObject', 'ai.streamObject']);\n\nexport const GENERATE_CONTENT_OPS = new Set([\n 'ai.generateText.doGenerate',\n 'ai.streamText.doStream',\n 'ai.generateObject.doGenerate',\n 'ai.streamObject.doStream',\n]);\n\nexport const EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']);\n\nexport const RERANK_OPS = new Set(['ai.rerank.doRerank']);\n\nexport const DO_SPAN_NAME_PREFIX: Record = {\n 'ai.embed.doEmbed': 'embeddings',\n 'ai.embedMany.doEmbed': 'embeddings',\n 'ai.rerank.doRerank': 'rerank',\n};\n","/**\n * Inline media content source, with a potentially very large base64\n * blob or data: uri.\n */\nexport type ContentMedia = Record &\n (\n | {\n media_type: string;\n data: string;\n }\n | {\n image_url: `data:${string}`;\n }\n | {\n image_url: { url: `data:${string}` };\n }\n | {\n type: 'blob' | 'base64';\n content: string;\n }\n | {\n b64_json: string;\n }\n | {\n uri: `data:${string}`;\n }\n | {\n type: 'input_audio';\n input_audio: { data: string };\n }\n | {\n type: 'file';\n file: { file_data?: string };\n }\n );\n\n/**\n * Check if a content part is an OpenAI/Anthropic media source\n */\nexport function isContentMedia(part: unknown): part is ContentMedia {\n if (!part || typeof part !== 'object') return false;\n\n return (\n isContentMediaSource(part) ||\n hasInlineData(part) ||\n hasImageUrl(part) ||\n hasInputAudio(part) ||\n hasFileData(part) ||\n hasMediaTypeData(part) ||\n hasVercelFileData(part) ||\n hasVercelImageData(part) ||\n hasBlobOrBase64Type(part) ||\n hasB64Json(part) ||\n hasImageGenerationResult(part) ||\n hasDataUri(part)\n );\n}\n\nfunction hasImageUrl(part: NonNullable): boolean {\n if (!('image_url' in part)) return false;\n if (typeof part.image_url === 'string') return part.image_url.startsWith('data:');\n return hasNestedImageUrl(part);\n}\n\nfunction hasNestedImageUrl(part: NonNullable): part is { image_url: { url: string } } {\n return (\n 'image_url' in part &&\n !!part.image_url &&\n typeof part.image_url === 'object' &&\n 'url' in part.image_url &&\n typeof part.image_url.url === 'string' &&\n part.image_url.url.startsWith('data:')\n );\n}\n\nfunction isContentMediaSource(part: NonNullable): boolean {\n return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source);\n}\n\nfunction hasInlineData(part: NonNullable): part is { inlineData: { data?: string } } {\n return (\n 'inlineData' in part &&\n !!part.inlineData &&\n typeof part.inlineData === 'object' &&\n 'data' in part.inlineData &&\n typeof part.inlineData.data === 'string'\n );\n}\n\nfunction hasInputAudio(part: NonNullable): part is { type: 'input_audio'; input_audio: { data: string } } {\n return (\n 'type' in part &&\n part.type === 'input_audio' &&\n 'input_audio' in part &&\n !!part.input_audio &&\n typeof part.input_audio === 'object' &&\n 'data' in part.input_audio &&\n typeof part.input_audio.data === 'string'\n );\n}\n\nfunction hasFileData(part: NonNullable): part is { type: 'file'; file: { file_data: string } } {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'file' in part &&\n !!part.file &&\n typeof part.file === 'object' &&\n 'file_data' in part.file &&\n typeof part.file.file_data === 'string'\n );\n}\n\nfunction hasMediaTypeData(part: NonNullable): part is { media_type: string; data: string } {\n return 'media_type' in part && typeof part.media_type === 'string' && 'data' in part;\n}\n\n/**\n * Check for Vercel AI SDK file format: { type: \"file\", mediaType: \"...\", data: \"...\" }\n * Only matches base64/binary data, not HTTP/HTTPS URLs (which should be preserved).\n */\nfunction hasVercelFileData(part: NonNullable): part is { type: 'file'; mediaType: string; data: string } {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'mediaType' in part &&\n typeof part.mediaType === 'string' &&\n 'data' in part &&\n typeof part.data === 'string' &&\n // Only strip base64/binary data, not HTTP/HTTPS URLs which should be preserved as references\n !part.data.startsWith('http://') &&\n !part.data.startsWith('https://')\n );\n}\n\n/**\n * Check for Vercel AI SDK image format: { type: \"image\", image: \"base64...\", mimeType?: \"...\" }\n * Only matches base64/data URIs, not HTTP/HTTPS URLs (which should be preserved).\n * Note: mimeType is optional in Vercel AI SDK image parts.\n */\nfunction hasVercelImageData(part: NonNullable): part is { type: 'image'; image: string; mimeType?: string } {\n return (\n 'type' in part &&\n part.type === 'image' &&\n 'image' in part &&\n typeof part.image === 'string' &&\n // Only strip base64/data URIs, not HTTP/HTTPS URLs which should be preserved as references\n !part.image.startsWith('http://') &&\n !part.image.startsWith('https://')\n );\n}\n\nfunction hasBlobOrBase64Type(part: NonNullable): part is { type: 'blob' | 'base64'; content: string } {\n return 'type' in part && (part.type === 'blob' || part.type === 'base64');\n}\n\nfunction hasB64Json(part: NonNullable): part is { b64_json: string } {\n return 'b64_json' in part;\n}\n\nfunction hasImageGenerationResult(part: NonNullable): part is { type: 'image_generation'; result: string } {\n return 'type' in part && 'result' in part && part.type === 'image_generation';\n}\n\nfunction hasDataUri(part: NonNullable): part is { uri: string } {\n return 'uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:');\n}\n\nconst REMOVED_STRING = '[Blob substitute]';\n\nconst MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri', 'image'] as const;\n\n/**\n * Replace inline binary data in a single media content part with a placeholder.\n */\nexport function stripInlineMediaFromSingleMessage(part: ContentMedia): ContentMedia {\n const strip = { ...part };\n if (isContentMedia(strip.source)) {\n strip.source = stripInlineMediaFromSingleMessage(strip.source);\n }\n if (hasInlineData(part)) {\n strip.inlineData = { ...part.inlineData, data: REMOVED_STRING };\n }\n if (hasNestedImageUrl(part)) {\n strip.image_url = { ...part.image_url, url: REMOVED_STRING };\n }\n if (hasInputAudio(part)) {\n strip.input_audio = { ...part.input_audio, data: REMOVED_STRING };\n }\n if (hasFileData(part)) {\n strip.file = { ...part.file, file_data: REMOVED_STRING };\n }\n for (const field of MEDIA_FIELDS) {\n if (typeof strip[field] === 'string') strip[field] = REMOVED_STRING;\n }\n return strip;\n}\n","import { isContentMedia, stripInlineMediaFromSingleMessage } from './mediaStripping';\n\n/**\n * Default maximum size in bytes for GenAI messages.\n * Messages exceeding this limit will be truncated.\n */\nexport const DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000;\n\n/**\n * Message format used by OpenAI and Anthropic APIs.\n */\ntype ContentMessage = {\n [key: string]: unknown;\n content: string;\n};\n\n/**\n * One block inside OpenAI / Anthropic `content: [...]` arrays (text, image_url, etc.).\n */\ntype ContentArrayBlock = {\n [key: string]: unknown;\n type: string;\n};\n\n/**\n * Message format used by OpenAI and Anthropic APIs for media.\n */\ntype ContentArrayMessage = {\n [key: string]: unknown;\n content: ContentArrayBlock[];\n};\n\n/**\n * Message format used by Google GenAI API.\n * Parts can be strings or objects with a text property.\n */\ntype PartsMessage = {\n [key: string]: unknown;\n parts: Array;\n};\n\n/**\n * A part in a Google GenAI message that contains text.\n */\ntype TextPart = string | { text: string };\n\n/**\n * A part in a Google GenAI that contains media.\n */\ntype MediaPart = {\n type: string;\n content: string;\n};\n\n/**\n * One element of an array-based message: OpenAI/Anthropic `content[]` or Google `parts`.\n */\ntype ArrayMessageItem = TextPart | MediaPart | ContentArrayBlock;\n\n/**\n * Calculate the UTF-8 byte length of a string.\n */\nconst utf8Bytes = (text: string): number => {\n return new TextEncoder().encode(text).length;\n};\n\n/**\n * Calculate the UTF-8 byte length of a value's JSON representation.\n */\nconst jsonBytes = (value: unknown): number => {\n return utf8Bytes(JSON.stringify(value));\n};\n\n/**\n * Truncate a string to fit within maxBytes (inclusive) when encoded as UTF-8.\n * Uses binary search for efficiency with multi-byte characters.\n *\n * @param text - The string to truncate\n * @param maxBytes - Maximum byte length (inclusive, UTF-8 encoded)\n * @returns Truncated string whose UTF-8 byte length is at most maxBytes\n */\nfunction truncateTextByBytes(text: string, maxBytes: number): string {\n if (utf8Bytes(text) <= maxBytes) {\n return text;\n }\n\n let low = 0;\n let high = text.length;\n let bestFit = '';\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = text.slice(0, mid);\n const byteSize = utf8Bytes(candidate);\n\n if (byteSize <= maxBytes) {\n bestFit = candidate;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n return bestFit;\n}\n\n/**\n * Extract text content from a message item.\n * Handles plain strings and objects with a text property.\n *\n * @returns The text content\n */\nfunction getItemText(item: ArrayMessageItem): string {\n if (typeof item === 'string') {\n return item;\n }\n if ('text' in item && typeof item.text === 'string') {\n return item.text;\n }\n return '';\n}\n\n/**\n * Create a new item with updated text content while preserving the original structure.\n *\n * @param item - Original item (string or object)\n * @param text - New text content\n * @returns New item with updated text\n */\nfunction withItemText(item: ArrayMessageItem, text: string): ArrayMessageItem {\n if (typeof item === 'string') {\n return text;\n }\n return { ...item, text };\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content format.\n */\nfunction isContentMessage(message: unknown): message is ContentMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'content' in message &&\n typeof (message as ContentMessage).content === 'string'\n );\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content array format.\n */\nfunction isContentArrayMessage(message: unknown): message is ContentArrayMessage {\n return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content);\n}\n\n/**\n * Check if a message has the Google GenAI parts format.\n */\nfunction isPartsMessage(message: unknown): message is PartsMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'parts' in message &&\n Array.isArray((message as PartsMessage).parts) &&\n (message as PartsMessage).parts.length > 0\n );\n}\n\n/**\n * Truncate a message with `content: string` format (OpenAI/Anthropic).\n *\n * @param message - Message with content property\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateContentMessage(message: ContentMessage, maxBytes: number): unknown[] {\n // Calculate overhead (message structure without content)\n const emptyMessage = { ...message, content: '' };\n const overhead = jsonBytes(emptyMessage);\n const availableForContent = maxBytes - overhead;\n\n if (availableForContent <= 0) {\n return [];\n }\n\n const truncatedContent = truncateTextByBytes(message.content, availableForContent);\n return [{ ...message, content: truncatedContent }];\n}\n\n/**\n * Extracts the array items and their key from an array-based message.\n * Returns `null` key if neither `parts` nor `content` is a valid array.\n */\nfunction getArrayItems(message: PartsMessage | ContentArrayMessage): {\n key: 'parts' | 'content' | null;\n items: ArrayMessageItem[];\n} {\n if ('parts' in message && Array.isArray(message.parts)) {\n return { key: 'parts', items: message.parts };\n }\n if ('content' in message && Array.isArray(message.content)) {\n return { key: 'content', items: message.content };\n }\n return { key: null, items: [] };\n}\n\n/**\n * Truncate a message with an array-based format.\n * Handles both `parts: [...]` (Google GenAI) and `content: [...]` (OpenAI/Anthropic multimodal).\n * Keeps as many complete items as possible, only truncating the first item if needed.\n *\n * @param message - Message with parts or content array\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateArrayMessage(message: PartsMessage | ContentArrayMessage, maxBytes: number): unknown[] {\n const { key, items } = getArrayItems(message);\n\n if (key === null || items.length === 0) {\n return [];\n }\n\n // Calculate overhead by creating empty text items\n const emptyItems = items.map(item => withItemText(item, ''));\n const overhead = jsonBytes({ ...message, [key]: emptyItems });\n let remainingBytes = maxBytes - overhead;\n\n if (remainingBytes <= 0) {\n return [];\n }\n\n // Include items until we run out of space\n const includedItems: ArrayMessageItem[] = [];\n\n for (const item of items) {\n const text = getItemText(item);\n const textSize = utf8Bytes(text);\n\n if (textSize <= remainingBytes) {\n // Item fits: include it as-is\n includedItems.push(item);\n remainingBytes -= textSize;\n } else if (includedItems.length === 0) {\n // First item doesn't fit: truncate it\n const truncated = truncateTextByBytes(text, remainingBytes);\n if (truncated) {\n includedItems.push(withItemText(item, truncated));\n }\n break;\n } else {\n // Subsequent item doesn't fit: stop here\n break;\n }\n }\n\n /* c8 ignore start\n * for type safety only, algorithm guarantees SOME text included */\n if (includedItems.length <= 0) {\n return [];\n } else {\n /* c8 ignore stop */\n return [{ ...message, [key]: includedItems }];\n }\n}\n\n/**\n * Truncate a single message to fit within maxBytes.\n *\n * Supports three message formats:\n * - OpenAI/Anthropic: `{ ..., content: string }`\n * - Vercel AI/OpenAI multimodal: `{ ..., content: Array<{type, text?, ...}> }`\n * - Google GenAI: `{ ..., parts: Array }`\n *\n * @param message - The message to truncate\n * @param maxBytes - Maximum byte limit for the message\n * @returns Array containing the truncated message, or empty array if truncation fails\n */\nfunction truncateSingleMessage(message: unknown, maxBytes: number): unknown[] {\n if (!message) return [];\n\n // Handle plain strings (e.g., embeddings input)\n if (typeof message === 'string') {\n const truncated = truncateTextByBytes(message, maxBytes);\n return truncated ? [truncated] : [];\n }\n\n if (typeof message !== 'object') {\n return [];\n }\n\n if (isContentMessage(message)) {\n return truncateContentMessage(message, maxBytes);\n }\n\n if (isContentArrayMessage(message) || isPartsMessage(message)) {\n return truncateArrayMessage(message, maxBytes);\n }\n\n // Unknown message format: cannot truncate safely\n return [];\n}\n\n/**\n * Strip the inline media from message arrays.\n *\n * This returns a stripped message. We do NOT want to mutate the data in place,\n * because of course we still want the actual API/client to handle the media.\n */\nfunction stripInlineMediaFromMessages(messages: unknown[]): unknown[] {\n const stripped = messages.map(message => {\n let newMessage: Record | undefined = undefined;\n if (!!message && typeof message === 'object') {\n if (isContentArrayMessage(message)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromMessages(message.content),\n };\n } else if ('content' in message && isContentMedia(message.content)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromSingleMessage(message.content),\n };\n }\n if (isPartsMessage(message)) {\n newMessage = {\n // might have to strip content AND parts\n ...(newMessage ?? message),\n parts: stripInlineMediaFromMessages(message.parts),\n };\n }\n if (isContentMedia(newMessage)) {\n newMessage = stripInlineMediaFromSingleMessage(newMessage);\n } else if (isContentMedia(message)) {\n newMessage = stripInlineMediaFromSingleMessage(message);\n }\n }\n return newMessage ?? message;\n });\n return stripped;\n}\n\n/**\n * Truncate an array of messages to fit within a byte limit.\n *\n * Strategy:\n * - Always keeps only the last (newest) message\n * - Strips inline media from the message\n * - Truncates the message content if it exceeds the byte limit\n *\n * @param messages - Array of messages to truncate\n * @param maxBytes - Maximum total byte limit for the message\n * @returns Array containing only the last message (possibly truncated)\n *\n * @example\n * ```ts\n * const messages = [msg1, msg2, msg3, msg4]; // newest is msg4\n * const truncated = truncateMessagesByBytes(messages, 10000);\n * // Returns [msg4] (truncated if needed)\n * ```\n */\nfunction truncateMessagesByBytes(messages: unknown[], maxBytes: number): unknown[] {\n // Early return for empty or invalid input\n if (!Array.isArray(messages) || messages.length === 0) {\n return messages;\n }\n\n // The result is always a single-element array that callers wrap with\n // JSON.stringify([message]), so subtract the 2-byte array wrapper (\"[\" and \"]\")\n // to ensure the final serialized value stays under the limit.\n const effectiveMaxBytes = maxBytes - 2;\n\n // Always keep only the last message\n const lastMessage = messages[messages.length - 1];\n\n // Strip inline media from the single message\n const stripped = stripInlineMediaFromMessages([lastMessage]);\n const strippedMessage = stripped[0];\n\n // Check if it fits\n const messageBytes = jsonBytes(strippedMessage);\n if (messageBytes <= effectiveMaxBytes) {\n return stripped;\n }\n\n // Truncate the single message if needed\n return truncateSingleMessage(strippedMessage, effectiveMaxBytes);\n}\n\n/**\n * Truncate GenAI messages using the default byte limit.\n *\n * Convenience wrapper around `truncateMessagesByBytes` with the default limit.\n *\n * @param messages - Array of messages to truncate\n * @returns Truncated array of messages\n */\nexport function truncateGenAiMessages(messages: unknown[]): unknown[] {\n return truncateMessagesByBytes(messages, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n\n/**\n * Truncate GenAI string input using the default byte limit.\n *\n * @param input - The string to truncate\n * @returns Truncated string\n */\nexport function truncateGenAiStringInput(input: string): string {\n return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n","/**\n * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.)\n */\nimport { captureException } from '../../exports';\nimport { getClient } from '../../currentScopes';\nimport type { Span } from '../../types-hoist/span';\nimport { isThenable } from '../../utils/is';\nimport {\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from './gen-ai-attributes';\nimport { truncateGenAiMessages, truncateGenAiStringInput } from './messageTruncation';\n\nexport interface AIRecordingOptions {\n recordInputs?: boolean;\n recordOutputs?: boolean;\n}\n\n/**\n * A method registry entry describes a single instrumented method:\n * which gen_ai operation it maps to and whether it is intrinsically streaming.\n */\nexport interface InstrumentedMethodEntry {\n /** Operation name (e.g. 'chat', 'embeddings', 'generate_content') */\n operation: string;\n /** True if the method itself is always streaming (not param-based) */\n streaming?: boolean;\n}\n\n/**\n * Maps method paths to their registry entries.\n * Used by proxy-based AI client instrumentations to determine which methods\n * to instrument, what operation name to use, and whether they stream.\n */\nexport type InstrumentedMethodRegistry = Record;\n\n/**\n * Resolves AI recording options by falling back to the client's `sendDefaultPii` setting.\n * Precedence: explicit option > sendDefaultPii > false\n */\nexport function resolveAIRecordingOptions(options?: T): T & Required {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n return {\n ...options,\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n } as T & Required;\n}\n\n/**\n * Build method path from current traversal\n */\nexport function buildMethodPath(currentPath: string, prop: string): string {\n return currentPath ? `${currentPath}.${prop}` : prop;\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param cachedInputTokens - The number of cached input tokens\n * @param cachedOutputTokens - The number of cached output tokens\n */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n cachedInputTokens?: number,\n cachedOutputTokens?: number,\n): void {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (\n promptTokens !== undefined ||\n completionTokens !== undefined ||\n cachedInputTokens !== undefined ||\n cachedOutputTokens !== undefined\n ) {\n /**\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n const totalTokens =\n (promptTokens ?? 0) + (completionTokens ?? 0) + (cachedInputTokens ?? 0) + (cachedOutputTokens ?? 0);\n\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Get the truncated JSON string for a string or array of strings.\n *\n * @param value - The string or array of strings to truncate\n * @returns The truncated JSON string\n */\nexport function getTruncatedJsonString(value: T | T[]): string {\n if (typeof value === 'string') {\n // Some values are already JSON strings, so we don't need to duplicate the JSON parsing\n return truncateGenAiStringInput(value);\n }\n if (Array.isArray(value)) {\n // truncateGenAiMessages returns an array of strings, so we need to stringify it\n const truncatedMessages = truncateGenAiMessages(value);\n return JSON.stringify(truncatedMessages);\n }\n // value is an object, so we need to stringify it\n return JSON.stringify(value);\n}\n\n/**\n * Extract system instructions from messages array.\n * Finds the first system message and formats it according to OpenTelemetry semantic conventions.\n *\n * @param messages - Array of messages to extract system instructions from\n * @returns systemInstructions (JSON string) and filteredMessages (without system message)\n */\nexport function extractSystemInstructions(messages: unknown[] | unknown): {\n systemInstructions: string | undefined;\n filteredMessages: unknown[] | unknown;\n} {\n if (!Array.isArray(messages)) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessageIndex = messages.findIndex(\n msg => msg && typeof msg === 'object' && 'role' in msg && (msg as { role: string }).role === 'system',\n );\n\n if (systemMessageIndex === -1) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessage = messages[systemMessageIndex] as { role: string; content?: string | unknown };\n const systemContent =\n typeof systemMessage.content === 'string'\n ? systemMessage.content\n : systemMessage.content !== undefined\n ? JSON.stringify(systemMessage.content)\n : undefined;\n\n if (!systemContent) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemInstructions = JSON.stringify([{ type: 'text', content: systemContent }]);\n const filteredMessages = [...messages.slice(0, systemMessageIndex), ...messages.slice(systemMessageIndex + 1)];\n\n return { systemInstructions, filteredMessages };\n}\n\n/**\n * Creates a wrapped version of .withResponse() that replaces the data field\n * with the instrumented result while preserving metadata (response, request_id).\n */\nasync function createWithResponseWrapper(\n originalWithResponse: Promise,\n instrumentedPromise: Promise,\n mechanismType: string,\n): Promise {\n // Attach catch handler to originalWithResponse immediately to prevent unhandled rejection\n // If instrumentedPromise rejects first, we still need this handled\n const safeOriginalWithResponse = originalWithResponse.catch(error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: mechanismType,\n },\n });\n throw error;\n });\n\n const instrumentedResult = await instrumentedPromise;\n const originalWrapper = await safeOriginalWithResponse;\n\n // Combine instrumented result with original metadata\n if (originalWrapper && typeof originalWrapper === 'object' && 'data' in originalWrapper) {\n return {\n ...originalWrapper,\n data: instrumentedResult,\n };\n }\n return instrumentedResult;\n}\n\n/**\n * Wraps a promise-like object to preserve additional methods (like .withResponse())\n * that AI SDK clients (OpenAI, Anthropic) attach to their APIPromise return values.\n *\n * Standard Promise methods (.then, .catch, .finally) are routed to the instrumented\n * promise to preserve Sentry's span instrumentation, while custom SDK methods are\n * forwarded to the original promise to maintain the SDK's API surface.\n */\nexport function wrapPromiseWithMethods(\n originalPromiseLike: Promise,\n instrumentedPromise: Promise,\n mechanismType: string,\n): Promise {\n // If the original result is not thenable, return the instrumented promise\n if (!isThenable(originalPromiseLike)) {\n return instrumentedPromise;\n }\n\n // Create a proxy that forwards Promise methods to instrumentedPromise\n // and preserves additional methods from the original result\n return new Proxy(originalPromiseLike, {\n get(target: object, prop: string | symbol): unknown {\n // For standard Promise methods (.then, .catch, .finally, Symbol.toStringTag),\n // use instrumentedPromise to preserve Sentry instrumentation.\n // For custom methods (like .withResponse()), use the original target.\n const useInstrumentedPromise = prop in Promise.prototype || prop === Symbol.toStringTag;\n const source = useInstrumentedPromise ? instrumentedPromise : target;\n\n const value = Reflect.get(source, prop) as unknown;\n\n // Special handling for .withResponse() to preserve instrumentation\n // .withResponse() returns { data: T, response: Response, request_id: string }\n if (prop === 'withResponse' && typeof value === 'function') {\n return function wrappedWithResponse(this: unknown): unknown {\n const originalWithResponse = (value as (...args: unknown[]) => unknown).call(target);\n return createWithResponseWrapper(originalWithResponse, instrumentedPromise, mechanismType);\n };\n }\n\n return typeof value === 'function' ? value.bind(source) : value;\n },\n }) as Promise;\n}\n","/* eslint-disable max-lines */\n/**\n * AI SDK Telemetry Attributes\n * Based on https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\n\n// =============================================================================\n// COMMON ATTRIBUTES\n// =============================================================================\n\n/**\n * Common attribute for operation name across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nexport const OPERATION_NAME_ATTRIBUTE = 'operation.name';\n\n/**\n * Common attribute for AI operation ID across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nexport const AI_OPERATION_ID_ATTRIBUTE = 'ai.operationId';\n\n// =============================================================================\n// SHARED ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n * `streamText` function - `ai.streamText` span\n *\n * The prompt that was used when calling the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_PROMPT_ATTRIBUTE = 'ai.prompt';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The JSON schema version of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_ATTRIBUTE = 'ai.schema';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The name of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_NAME_ATTRIBUTE = 'ai.schema.name';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The description of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_DESCRIPTION_ATTRIBUTE = 'ai.schema.description';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object that was generated (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object generation mode, e.g. `json`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SETTINGS_MODE_ATTRIBUTE = 'ai.settings.mode';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The output type that was used, e.g. `object` or `no-schema`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SETTINGS_OUTPUT_ATTRIBUTE = 'ai.settings.output';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * The values that were passed into the function (array)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_VALUES_ATTRIBUTE = 'ai.values';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * An array of JSON-stringified embeddings\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_EMBEDDINGS_ATTRIBUTE = 'ai.embeddings';\n\n// =============================================================================\n// GENERATETEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The text that was generated\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_TEXT_ATTRIBUTE = 'ai.response.text';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The tool calls that were made as part of the generation (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'ai.response.toolCalls';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The reason why the generation finished\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_FINISH_REASON_ATTRIBUTE = 'ai.response.finishReason';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The maximum number of steps that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_SETTINGS_MAX_STEPS_ATTRIBUTE = 'ai.settings.maxSteps';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The format of the prompt\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_FORMAT_ATTRIBUTE = 'ai.prompt.format';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The messages that were passed into the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_MESSAGES_ATTRIBUTE = 'ai.prompt.messages';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * Array of stringified tool definitions\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The stringified tool choice setting (JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_TOOL_CHOICE_ATTRIBUTE = 'ai.prompt.toolChoice';\n\n// =============================================================================\n// STREAMTEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the first chunk in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE = 'ai.response.msToFirstChunk';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the finish part of the LLM stream in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE = 'ai.response.msToFinish';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The average completion tokens per second\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE = 'ai.response.avgCompletionTokensPerSecond';\n\n// =============================================================================\n// EMBED FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `embed` function - `ai.embed` span\n *\n * The value that was passed into the `embed` function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_VALUE_ATTRIBUTE = 'ai.value';\n\n/**\n * `embed` function - `ai.embed` span\n *\n * A JSON-stringified embedding\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBEDDING_ATTRIBUTE = 'ai.embedding';\n\n// =============================================================================\n// BASIC LLM SPAN INFORMATION\n// =============================================================================\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The functionId that was set through `telemetry.functionId`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const RESOURCE_NAME_ATTRIBUTE = 'resource.name';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The id of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_MODEL_ID_ATTRIBUTE = 'ai.model.id';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The provider of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_MODEL_PROVIDER_ATTRIBUTE = 'ai.model.provider';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The request headers that were passed in through `headers`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_REQUEST_HEADERS_ATTRIBUTE = 'ai.request.headers';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * Provider specific metadata returned with the generation response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The maximum number of retries that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_SETTINGS_MAX_RETRIES_ATTRIBUTE = 'ai.settings.maxRetries';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of cached input tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = 'ai.usage.cachedInputTokens';\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The functionId that was set through `telemetry.functionId`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The metadata that was passed in through `telemetry.metadata`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_TELEMETRY_METADATA_ATTRIBUTE = 'ai.telemetry.metadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'ai.usage.completionTokens';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens';\n\n// =============================================================================\n// CALL LLM SPAN INFORMATION\n// =============================================================================\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_MODEL_ATTRIBUTE = 'ai.response.model';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_ID_ATTRIBUTE = 'ai.response.id';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The timestamp of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'ai.response.timestamp';\n\n// =============================================================================\n// SEMANTIC CONVENTIONS FOR GENAI OPERATIONS\n// =============================================================================\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The provider that was used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was requested\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The temperature that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The maximum number of tokens that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The frequency penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The presence penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topK parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topP parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The stop sequences\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The finish reasons that were returned by the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n// =============================================================================\n// BASIC EMBEDDING SPAN INFORMATION\n// =============================================================================\n\n/**\n * Basic embedding span information\n * Embedding spans\n *\n * The number of tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-embedding-span-information\n */\nexport const AI_USAGE_TOKENS_ATTRIBUTE = 'ai.usage.tokens';\n\n// =============================================================================\n// TOOL CALL SPANS\n// =============================================================================\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The name of the tool\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_NAME_ATTRIBUTE = 'ai.toolCall.name';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The id of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_ID_ATTRIBUTE = 'ai.toolCall.id';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The parameters of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_ARGS_ATTRIBUTE = 'ai.toolCall.args';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The result of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result';\n\n// =============================================================================\n// SPAN ATTRIBUTE OBJECTS\n// =============================================================================\n\n/**\n * Attributes collected for `ai.generateText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n AI_RESPONSE_TEXT: AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS: AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_RESPONSE_FINISH_REASON: AI_RESPONSE_FINISH_REASON_ATTRIBUTE,\n AI_SETTINGS_MAX_STEPS: AI_SETTINGS_MAX_STEPS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateText.doGenerate` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_DO_GENERATE_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_FORMAT: AI_PROMPT_FORMAT_ATTRIBUTE,\n AI_PROMPT_MESSAGES: AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS: AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_PROMPT_TOOL_CHOICE: AI_PROMPT_TOOL_CHOICE_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText.doStream` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_DO_STREAM_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FIRST_CHUNK: AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FINISH: AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE,\n AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND: AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n */\nexport const AI_GENERATE_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_STREAM_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUE: AI_VALUE_ATTRIBUTE,\n AI_EMBEDDING: AI_EMBEDDING_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed.doEmbed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_DO_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embedMany` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_EMBED_MANY_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.toolCall` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME: AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_ID: AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS: AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_RESULT: AI_TOOL_CALL_RESULT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n} as const;\n\n// =============================================================================\n// PROVIDER METADATA\n// =============================================================================\n\n/**\n * OpenAI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/openai-chat-language-model.ts#L397-L416\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/responses/openai-responses-language-model.ts#L377C7-L384\n */\nexport interface OpenAiProviderMetadata {\n /**\n * The number of predicted output tokens that were accepted.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n acceptedPredictionTokens?: number;\n\n /**\n * The number of predicted output tokens that were rejected.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n rejectedPredictionTokens?: number;\n\n /**\n * The number of reasoning tokens that the model generated.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n reasoningTokens?: number;\n\n /**\n * The number of prompt tokens that were a cache hit.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n cachedPromptTokens?: number;\n\n /**\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n *\n * The ID of the response. Can be used to continue a conversation.\n */\n responseId?: string;\n}\n\n/**\n * Anthropic Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/anthropic/src/anthropic-messages-language-model.ts#L346-L352\n */\ninterface AnthropicProviderMetadata {\n /**\n * The number of tokens that were used to create the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheCreationInputTokens?: number;\n\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheReadInputTokens?: number;\n\n /**\n * Usage metrics for the Anthropic model.\n */\n usage?: {\n input_tokens: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n cache_creation?: {\n ephemeral_5m_input_tokens?: number;\n ephemeral_1h_input_tokens?: number;\n };\n output_tokens?: number;\n service_tier?: string;\n };\n}\n\n/**\n * Amazon Bedrock Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/amazon-bedrock/src/bedrock-chat-language-model.ts#L263-L280\n */\ninterface AmazonBedrockProviderMetadata {\n /**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseTrace.html\n */\n trace?: {\n /**\n * The guardrail trace object.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailTraceAssessment.html\n *\n * This was purposely left as unknown as it's a complex object. This can be typed in the future\n * if the SDK decides to support bedrock in a more advanced way.\n */\n guardrail?: unknown;\n /**\n * The request's prompt router.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_PromptRouterTrace.html\n */\n promptRouter?: {\n /**\n * The ID of the invoked model.\n */\n invokedModelId?: string;\n };\n };\n usage?: {\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheReadInputTokens?: number;\n\n /**\n * The number of tokens that were written to the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheWriteInputTokens?: number;\n };\n}\n\n/**\n * Google Generative AI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai\n */\nexport interface GoogleGenerativeAIProviderMetadata {\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-prompt.ts#L28-L30\n */\n groundingMetadata: null | {\n /**\n * Array of search queries used to retrieve information\n * @example [\"What's the weather in Chicago this weekend?\"]\n *\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n webSearchQueries: string[] | null;\n /**\n * Contains the main search result content used as an entry point\n * The `renderedContent` field contains the formatted content\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n searchEntryPoint?: {\n renderedContent: string;\n } | null;\n /**\n * Contains details about how specific response parts are supported by search results\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n groundingSupports: Array<{\n /**\n * Information about the grounded text segment.\n */\n segment: {\n /**\n * The start index of the text segment.\n */\n startIndex?: number | null;\n /**\n * The end index of the text segment.\n */\n endIndex?: number | null;\n /**\n * The actual text segment.\n */\n text?: string | null;\n };\n /**\n * References to supporting search result chunks.\n */\n groundingChunkIndices?: number[] | null;\n /**\n * Confidence scores (0-1) for each supporting chunk.\n */\n confidenceScores?: number[] | null;\n }> | null;\n };\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-language-model.ts#L620-L627\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters\n */\n safetyRatings?: null | unknown;\n}\n\n/**\n * DeepSeek Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek\n */\ninterface DeepSeekProviderMetadata {\n /**\n * The number of tokens that were cache hits.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheHitTokens?: number;\n\n /**\n * The number of tokens that were cache misses.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheMissTokens?: number;\n}\n\n/**\n * Perplexity Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/perplexity\n */\ninterface PerplexityProviderMetadata {\n /**\n * Object containing citationTokens and numSearchQueries metrics\n */\n usage?: {\n citationTokens?: number;\n numSearchQueries?: number;\n };\n /**\n * Array of image URLs when return_images is enabled.\n *\n * You can enable image responses by setting return_images: true in the provider options.\n * This feature is only available to Perplexity Tier-2 users and above.\n */\n images?: Array<{\n imageUrl?: string;\n originUrl?: string;\n height?: number;\n width?: number;\n }>;\n}\n\nexport interface ProviderMetadata {\n openai?: OpenAiProviderMetadata;\n azure?: OpenAiProviderMetadata; // v6: Azure Responses API uses 'azure' key instead of 'openai'\n anthropic?: AnthropicProviderMetadata;\n bedrock?: AmazonBedrockProviderMetadata;\n google?: GoogleGenerativeAIProviderMetadata;\n vertex?: GoogleGenerativeAIProviderMetadata; // v6: Google Vertex uses 'vertex' key instead of 'google'\n deepseek?: DeepSeekProviderMetadata;\n perplexity?: PerplexityProviderMetadata;\n}\n","import type { TraceContext } from '../../types-hoist/context';\nimport type { Span, SpanAttributes, SpanJSON } from '../../types-hoist/span';\nimport {\n GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { toolCallSpanContextMap } from './constants';\nimport type { TokenSummary, ToolCallSpanContext } from './types';\nimport { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes';\n\n/**\n * Accumulates token data from a span to its parent in the token accumulator map.\n * This function extracts token usage from the current span and adds it to the\n * accumulated totals for its parent span.\n */\nexport function accumulateTokensForParent(span: SpanJSON, tokenAccumulator: Map): void {\n const parentSpanId = span.parent_span_id;\n if (!parentSpanId) {\n return;\n }\n\n const inputTokens = span.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n const outputTokens = span.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE];\n\n if (typeof inputTokens === 'number' || typeof outputTokens === 'number') {\n const existing = tokenAccumulator.get(parentSpanId) || { inputTokens: 0, outputTokens: 0 };\n\n if (typeof inputTokens === 'number') {\n existing.inputTokens += inputTokens;\n }\n if (typeof outputTokens === 'number') {\n existing.outputTokens += outputTokens;\n }\n\n tokenAccumulator.set(parentSpanId, existing);\n }\n}\n\n/**\n * Applies accumulated token data to the `gen_ai.invoke_agent` span.\n * Only immediate children of the `gen_ai.invoke_agent` span are considered,\n * since aggregation will automatically occur for each parent span.\n */\nexport function applyAccumulatedTokens(\n spanOrTrace: SpanJSON | TraceContext,\n tokenAccumulator: Map,\n): void {\n const accumulated = tokenAccumulator.get(spanOrTrace.span_id);\n if (!accumulated || !spanOrTrace.data) {\n return;\n }\n\n if (accumulated.inputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = accumulated.inputTokens;\n }\n if (accumulated.outputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = accumulated.outputTokens;\n }\n if (accumulated.inputTokens > 0 || accumulated.outputTokens > 0) {\n spanOrTrace.data['gen_ai.usage.total_tokens'] = accumulated.inputTokens + accumulated.outputTokens;\n }\n}\n\n/**\n * Builds a map of tool name -> description from all spans with available_tools.\n * This avoids O(n²) iteration and repeated JSON parsing.\n */\nfunction buildToolDescriptionMap(spans: SpanJSON[]): Map {\n const toolDescriptions = new Map();\n\n for (const span of spans) {\n const availableTools = span.data[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE];\n if (typeof availableTools !== 'string') {\n continue;\n }\n try {\n const tools = JSON.parse(availableTools) as Array<{ name?: string; description?: string }>;\n for (const tool of tools) {\n if (tool.name && tool.description && !toolDescriptions.has(tool.name)) {\n toolDescriptions.set(tool.name, tool.description);\n }\n }\n } catch {\n // ignore parse errors\n }\n }\n\n return toolDescriptions;\n}\n\n/**\n * Applies tool descriptions and accumulated tokens to spans in a single pass.\n *\n * - For `gen_ai.execute_tool` spans: looks up tool description from\n * `gen_ai.request.available_tools` on sibling spans\n * - For `gen_ai.invoke_agent` spans: applies accumulated token data from children\n */\nexport function applyToolDescriptionsAndTokens(spans: SpanJSON[], tokenAccumulator: Map): void {\n // Build lookup map once to avoid O(n²) iteration and repeated JSON parsing\n const toolDescriptions = buildToolDescriptionMap(spans);\n\n for (const span of spans) {\n if (span.op === 'gen_ai.execute_tool') {\n const toolName = span.data[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (typeof toolName === 'string') {\n const description = toolDescriptions.get(toolName);\n if (description) {\n span.data[GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE] = description;\n }\n }\n }\n\n if (span.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(span, tokenAccumulator);\n }\n }\n}\n\n/**\n * Get the span context associated with a tool call ID.\n */\nexport function _INTERNAL_getSpanContextForToolCallId(toolCallId: string): ToolCallSpanContext | undefined {\n return toolCallSpanContextMap.get(toolCallId);\n}\n\n/**\n * Clean up the span mapping for a tool call ID\n */\nexport function _INTERNAL_cleanupToolCallSpanContext(toolCallId: string): void {\n toolCallSpanContextMap.delete(toolCallId);\n}\n\n/**\n * Convert an array of tool strings to a JSON string\n */\nexport function convertAvailableToolsToJsonString(tools: unknown[]): string {\n const toolObjects = tools.map(tool => {\n if (typeof tool === 'string') {\n try {\n return JSON.parse(tool);\n } catch {\n return tool;\n }\n }\n return tool;\n });\n return JSON.stringify(toolObjects);\n}\n\n/**\n * Filter out invalid entries in messages array\n * @param input - The input array to filter\n * @returns The filtered array\n */\nfunction filterMessagesArray(input: unknown[]): { role: string; content: string }[] {\n return input.filter(\n (m: unknown): m is { role: string; content: string } =>\n !!m && typeof m === 'object' && 'role' in m && 'content' in m,\n );\n}\n\n/**\n * Normalize the user input (stringified object with prompt, system, messages) to messages array\n */\nexport function convertUserInputToMessagesFormat(userInput: string): { role: string; content: string }[] {\n try {\n const p = JSON.parse(userInput);\n if (!!p && typeof p === 'object') {\n let { messages } = p;\n const { prompt, system } = p;\n const result: { role: string; content: string }[] = [];\n\n // prepend top-level system instruction if present\n if (typeof system === 'string') {\n result.push({ role: 'system', content: system });\n }\n\n // stringified messages array\n if (typeof messages === 'string') {\n try {\n messages = JSON.parse(messages);\n } catch {\n // ignore parse errors\n }\n }\n\n // messages array format: { messages: [...] }\n if (Array.isArray(messages)) {\n result.push(...filterMessagesArray(messages));\n return result;\n }\n\n // prompt array format: { prompt: [...] }\n if (Array.isArray(prompt)) {\n result.push(...filterMessagesArray(prompt));\n return result;\n }\n\n // prompt string format: { prompt: \"...\" }\n if (typeof prompt === 'string') {\n result.push({ role: 'user', content: prompt });\n }\n\n if (result.length > 0) {\n return result;\n }\n }\n // eslint-disable-next-line no-empty\n } catch {}\n return [];\n}\n\n/**\n * Generate a request.messages JSON array from the prompt field in the\n * invoke_agent op\n */\nexport function requestMessagesFromPrompt(span: Span, attributes: SpanAttributes): void {\n if (\n typeof attributes[AI_PROMPT_ATTRIBUTE] === 'string' &&\n !attributes[GEN_AI_INPUT_MESSAGES_ATTRIBUTE] &&\n !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]\n ) {\n // No messages array is present, so we need to convert the prompt to the proper messages format\n // This is the case for ai.generateText spans\n // The ai.prompt attribute is a stringified object with prompt, system, messages attributes\n // The format of these is described in the vercel docs, for instance: https://ai-sdk.dev/docs/reference/ai-sdk-core/stream-object#parameters\n const userInput = attributes[AI_PROMPT_ATTRIBUTE];\n const messages = convertUserInputToMessagesFormat(userInput);\n if (messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n } else if (typeof attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') {\n // In this case we already get a properly formatted messages array, this is the preferred way to get the messages\n // This is the case for ai.generateText.doGenerate spans\n try {\n const messages = JSON.parse(attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]);\n if (Array.isArray(messages)) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n // eslint-disable-next-line no-empty\n } catch {}\n }\n}\n\n/**\n * Maps a Vercel AI span name to the corresponding Sentry op.\n */\nexport function getSpanOpFromName(name: string): string | undefined {\n switch (name) {\n case 'ai.generateText':\n case 'ai.streamText':\n case 'ai.generateObject':\n case 'ai.streamObject':\n return GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE;\n case 'ai.generateText.doGenerate':\n return GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamText.doStream':\n return GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.generateObject.doGenerate':\n return GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamObject.doStream':\n return GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.embed.doEmbed':\n return GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.embedMany.doEmbed':\n return GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.rerank.doRerank':\n return GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE;\n case 'ai.toolCall':\n return GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE;\n default:\n if (name.startsWith('ai.stream')) {\n return 'ai.run';\n }\n return undefined;\n }\n}\n","/* eslint-disable max-lines */\nimport type { Client } from '../../client';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { Event } from '../../types-hoist/event';\nimport type { Span, SpanAttributes, SpanAttributeValue, SpanJSON } from '../../types-hoist/span';\nimport { spanToJSON } from '../../utils/spanUtils';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_CALL_ID_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n GEN_AI_TOOL_TYPE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport {\n DO_SPAN_NAME_PREFIX,\n EMBEDDINGS_OPS,\n GENERATE_CONTENT_OPS,\n INVOKE_AGENT_OPS,\n RERANK_OPS,\n toolCallSpanContextMap,\n} from './constants';\nimport type { TokenSummary } from './types';\nimport {\n accumulateTokensForParent,\n applyAccumulatedTokens,\n applyToolDescriptionsAndTokens,\n convertAvailableToolsToJsonString,\n getSpanOpFromName,\n requestMessagesFromPrompt,\n} from './utils';\nimport type { OpenAiProviderMetadata, ProviderMetadata } from './vercel-ai-attributes';\nimport {\n AI_MODEL_ID_ATTRIBUTE,\n AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_RESPONSE_FINISH_REASON_ATTRIBUTE,\n AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE,\n AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_SCHEMA_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_RESULT_ATTRIBUTE,\n AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n AI_USAGE_TOKENS_ATTRIBUTE,\n AI_VALUES_ATTRIBUTE,\n OPERATION_NAME_ATTRIBUTE,\n} from './vercel-ai-attributes';\n\n/**\n * Maps Vercel AI SDK operation names to OpenTelemetry semantic convention values\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction mapVercelAiOperationName(operationName: string): string {\n // Top-level pipeline operations map to invoke_agent\n if (INVOKE_AGENT_OPS.has(operationName)) {\n return 'invoke_agent';\n }\n // .do* operations are the actual LLM calls\n if (GENERATE_CONTENT_OPS.has(operationName)) {\n return 'generate_content';\n }\n if (EMBEDDINGS_OPS.has(operationName)) {\n return 'embeddings';\n }\n if (RERANK_OPS.has(operationName)) {\n return 'rerank';\n }\n if (operationName === 'ai.toolCall') {\n return 'execute_tool';\n }\n // Return the original value for unknown operations\n return operationName;\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n * This is supposed to be used in `client.on('spanStart', ...)\n */\nfunction onVercelAiSpanStart(span: Span): void {\n const { data: attributes, description: name } = spanToJSON(span);\n\n if (!name) {\n return;\n }\n\n // Tool call spans\n // https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n if (attributes[AI_TOOL_CALL_NAME_ATTRIBUTE] && attributes[AI_TOOL_CALL_ID_ATTRIBUTE] && name === 'ai.toolCall') {\n processToolCallSpan(span, attributes);\n return;\n }\n\n // V6+ Check if this is a Vercel AI span by checking if the operation ID attribute is present.\n // V5+ Check if this is a Vercel AI span by name pattern.\n if (!attributes[AI_OPERATION_ID_ATTRIBUTE] && !name.startsWith('ai.')) {\n return;\n }\n\n processGenerateSpan(span, name, attributes);\n}\n\nfunction vercelAiEventProcessor(event: Event): Event {\n if (event.type === 'transaction' && event.spans) {\n // Map to accumulate token data by parent span ID\n const tokenAccumulator: Map = new Map();\n\n // First pass: process all spans and accumulate token data\n for (const span of event.spans) {\n processEndedVercelAiSpan(span);\n\n // Accumulate token data for parent spans\n accumulateTokensForParent(span, tokenAccumulator);\n }\n\n // Second pass: apply tool descriptions and accumulated tokens\n applyToolDescriptionsAndTokens(event.spans, tokenAccumulator);\n\n // Also apply to root when it is the invoke_agent pipeline\n const trace = event.contexts?.trace;\n if (trace?.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(trace, tokenAccumulator);\n }\n }\n\n return event;\n}\n\n/**\n * Tool call structure from Vercel AI SDK\n * Note: V5/V6 use 'input' for arguments, V4 and earlier use 'args'\n */\ninterface VercelToolCall {\n toolCallId: string;\n toolName: string;\n input?: Record | string; // V5/V6\n args?: string; // V4 and earlier\n}\n\n/**\n * Normalize finish reason to match OpenTelemetry semantic conventions.\n * Valid values: \"stop\", \"length\", \"content_filter\", \"tool_call\", \"error\"\n *\n * Vercel AI SDK uses \"tool-calls\" (plural, with hyphen) which we map to \"tool_call\".\n */\nfunction normalizeFinishReason(finishReason: unknown): string {\n if (typeof finishReason !== 'string') {\n return 'stop';\n }\n\n // Map Vercel AI SDK finish reasons to OpenTelemetry semantic convention values\n switch (finishReason) {\n case 'tool-calls':\n return 'tool_call';\n case 'stop':\n case 'length':\n case 'content_filter':\n case 'error':\n return finishReason;\n default:\n // For unknown values, return as-is (schema allows arbitrary strings)\n return finishReason;\n }\n}\n\n/**\n * Build gen_ai.output.messages from ai.response.text and/or ai.response.toolCalls\n *\n * Format follows OpenTelemetry semantic conventions:\n * [{\"role\": \"assistant\", \"parts\": [...], \"finish_reason\": \"stop\"}]\n *\n * Parts can be:\n * - {\"type\": \"text\", \"content\": \"...\"}\n * - {\"type\": \"tool_call\", \"id\": \"...\", \"name\": \"...\", \"arguments\": \"...\"}\n */\nfunction buildOutputMessages(attributes: Record): void {\n const responseText = attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n const responseToolCalls = attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n const finishReason = attributes[AI_RESPONSE_FINISH_REASON_ATTRIBUTE];\n\n // Skip if neither text nor tool calls are present\n if (responseText == null && responseToolCalls == null) {\n return;\n }\n\n const parts: Array> = [];\n\n // Add text part if present\n if (typeof responseText === 'string' && responseText.length > 0) {\n parts.push({\n type: 'text',\n content: responseText,\n });\n }\n\n // Add tool call parts if present\n if (responseToolCalls != null) {\n try {\n // Tool calls can be a string (JSON) or already parsed array\n const toolCalls: VercelToolCall[] =\n typeof responseToolCalls === 'string' ? JSON.parse(responseToolCalls) : responseToolCalls;\n\n if (Array.isArray(toolCalls)) {\n for (const toolCall of toolCalls) {\n // V5/V6 use 'input', V4 and earlier use 'args'\n const args = toolCall.input ?? toolCall.args;\n parts.push({\n type: 'tool_call',\n id: toolCall.toolCallId,\n name: toolCall.toolName,\n // Handle undefined args: JSON.stringify(undefined) returns undefined, not a string,\n // which would cause the property to be omitted from the final JSON output\n arguments: typeof args === 'string' ? args : JSON.stringify(args ?? {}),\n });\n }\n // Only delete tool calls attribute if we successfully processed them\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n }\n } catch {\n // Ignore parsing errors - tool calls attribute is preserved\n }\n }\n\n // Only set output messages and delete text attribute if we have parts\n if (parts.length > 0) {\n const outputMessage = {\n role: 'assistant',\n parts,\n finish_reason: normalizeFinishReason(finishReason),\n };\n\n attributes[GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE] = JSON.stringify([outputMessage]);\n\n // Remove the text attribute since it's now captured in gen_ai.output.messages\n // Note: tool calls attribute is deleted above only if successfully parsed\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n }\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n */\nfunction processEndedVercelAiSpan(span: SpanJSON): void {\n const { data: attributes, origin } = span;\n\n if (origin !== 'auto.vercelai.otel') {\n return;\n }\n\n // The Vercel AI SDK sets span status to raw error message strings.\n // Any such value should be normalized to a SpanStatusType value. We pick internal_error as it is the most generic.\n if (span.status && span.status !== 'ok') {\n span.status = 'internal_error';\n }\n\n renameAttributeKey(attributes, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE);\n\n // Parent spans (ai.streamText, ai.streamObject, etc.) use inputTokens/outputTokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, 'ai.usage.inputTokens', GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, 'ai.usage.outputTokens', GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n\n // Embedding spans use ai.usage.tokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, AI_USAGE_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n\n // AI SDK uses avgOutputTokensPerSecond, map to our expected attribute name\n renameAttributeKey(attributes, 'ai.response.avgOutputTokensPerSecond', 'ai.response.avgCompletionTokensPerSecond');\n\n // Input tokens is the sum of prompt tokens and cached input tokens\n if (\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' &&\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE] === 'number'\n ) {\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] =\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] + attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE];\n }\n\n // Compute total tokens from input + output (embeddings may only have input tokens)\n if (typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number') {\n const outputTokens =\n typeof attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number'\n ? attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]\n : 0;\n attributes[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = outputTokens + attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n }\n\n // Convert the available tools array to a JSON string\n if (attributes[AI_PROMPT_TOOLS_ATTRIBUTE] && Array.isArray(attributes[AI_PROMPT_TOOLS_ATTRIBUTE])) {\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] = convertAvailableToolsToJsonString(\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] as unknown[],\n );\n }\n\n // Rename AI SDK attributes to standardized gen_ai attributes\n // Map operation.name to OpenTelemetry semantic convention values\n if (attributes[OPERATION_NAME_ATTRIBUTE]) {\n const operationName = mapVercelAiOperationName(attributes[OPERATION_NAME_ATTRIBUTE] as string);\n attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE] = operationName;\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[OPERATION_NAME_ATTRIBUTE];\n }\n renameAttributeKey(attributes, AI_PROMPT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE);\n\n // Build gen_ai.output.messages from response text and/or tool calls\n // Note: buildOutputMessages also removes the source attributes when output is successfully generated\n buildOutputMessages(attributes);\n\n renameAttributeKey(attributes, AI_RESPONSE_OBJECT_ATTRIBUTE, 'gen_ai.response.object');\n renameAttributeKey(attributes, AI_PROMPT_TOOLS_ATTRIBUTE, 'gen_ai.request.available_tools');\n\n renameAttributeKey(attributes, AI_TOOL_CALL_ARGS_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_RESULT_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE);\n\n renameAttributeKey(attributes, AI_SCHEMA_ATTRIBUTE, 'gen_ai.request.schema');\n renameAttributeKey(attributes, AI_MODEL_ID_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE);\n\n // Map embedding input: ai.values → gen_ai.embeddings.input\n // Vercel AI SDK JSON-stringifies each value individually, so we parse each element back.\n // Single embed gets unwrapped to a plain value; batch embedMany stays as a JSON array.\n if (Array.isArray(attributes[AI_VALUES_ATTRIBUTE])) {\n const parsed = (attributes[AI_VALUES_ATTRIBUTE] as string[]).map(v => {\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n });\n attributes[GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE] = parsed.length === 1 ? parsed[0] : JSON.stringify(parsed);\n }\n\n addProviderMetadataToAttributes(attributes);\n\n // Change attributes namespaced with `ai.X` to `vercel.ai.X`\n for (const key of Object.keys(attributes)) {\n if (key.startsWith('ai.')) {\n renameAttributeKey(attributes, key, `vercel.${key}`);\n }\n }\n}\n\n/**\n * Renames an attribute key in the provided attributes object if the old key exists.\n * This function safely handles null and undefined values.\n */\nfunction renameAttributeKey(attributes: Record, oldKey: string, newKey: string): void {\n if (attributes[oldKey] != null) {\n attributes[newKey] = attributes[oldKey];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[oldKey];\n }\n}\n\nfunction processToolCallSpan(span: Span, attributes: SpanAttributes): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'gen_ai.execute_tool');\n span.setAttribute(GEN_AI_OPERATION_NAME_ATTRIBUTE, 'execute_tool');\n renameAttributeKey(attributes, AI_TOOL_CALL_NAME_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE);\n\n // Store the span context in our global map using the tool call ID.\n // This allows us to capture tool errors and link them to the correct span\n // without retaining the full Span object in memory.\n const toolCallId = attributes[GEN_AI_TOOL_CALL_ID_ATTRIBUTE];\n\n if (typeof toolCallId === 'string') {\n toolCallSpanContextMap.set(toolCallId, span.spanContext());\n }\n\n // https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-type\n if (!attributes[GEN_AI_TOOL_TYPE_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_TOOL_TYPE_ATTRIBUTE, 'function');\n }\n const toolName = attributes[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (toolName) {\n span.updateName(`execute_tool ${toolName}`);\n }\n}\n\nfunction processGenerateSpan(span: Span, name: string, attributes: SpanAttributes): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n\n const nameWthoutAi = name.replace('ai.', '');\n span.setAttribute('ai.pipeline.name', nameWthoutAi);\n span.updateName(nameWthoutAi);\n\n const functionId = attributes[AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE];\n if (functionId && typeof functionId === 'string') {\n span.setAttribute('gen_ai.function_id', functionId);\n }\n\n requestMessagesFromPrompt(span, attributes);\n\n if (attributes[AI_MODEL_ID_ATTRIBUTE] && !attributes[GEN_AI_RESPONSE_MODEL_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, attributes[AI_MODEL_ID_ATTRIBUTE]);\n }\n span.setAttribute('ai.streaming', name.includes('stream'));\n\n // Set the op based on the span name\n const op = getSpanOpFromName(name);\n if (op) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n // For invoke_agent pipeline spans, use 'invoke_agent' as the description\n // to be consistent with other AI integrations (e.g. LangGraph)\n if (INVOKE_AGENT_OPS.has(name)) {\n if (functionId && typeof functionId === 'string') {\n span.updateName(`invoke_agent ${functionId}`);\n } else {\n span.updateName('invoke_agent');\n }\n return;\n }\n\n const modelId = attributes[AI_MODEL_ID_ATTRIBUTE];\n if (modelId) {\n const doSpanPrefix = GENERATE_CONTENT_OPS.has(name) ? 'generate_content' : DO_SPAN_NAME_PREFIX[name];\n if (doSpanPrefix) {\n span.updateName(`${doSpanPrefix} ${modelId}`);\n }\n }\n}\n\n/**\n * Add event processors to the given client to process Vercel AI spans.\n */\nexport function addVercelAiProcessors(client: Client): void {\n client.on('spanStart', onVercelAiSpanStart);\n // Note: We cannot do this on `spanEnd`, because the span cannot be mutated anymore at this point\n client.addEventProcessor(Object.assign(vercelAiEventProcessor, { id: 'VercelAiEventProcessor' }));\n}\n\nfunction addProviderMetadataToAttributes(attributes: SpanAttributes): void {\n const providerMetadata = attributes[AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] as string | undefined;\n if (providerMetadata) {\n try {\n const providerMetadataObject = JSON.parse(providerMetadata) as ProviderMetadata;\n\n // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure')\n const openaiMetadata: OpenAiProviderMetadata | undefined =\n providerMetadataObject.openai ?? providerMetadataObject.azure;\n if (openaiMetadata) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n openaiMetadata.cachedPromptTokens,\n );\n setAttributeIfDefined(attributes, 'gen_ai.usage.output_tokens.reasoning', openaiMetadata.reasoningTokens);\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_accepted',\n openaiMetadata.acceptedPredictionTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_rejected',\n openaiMetadata.rejectedPredictionTokens,\n );\n if (!attributes['gen_ai.conversation.id']) {\n setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId);\n }\n }\n\n if (providerMetadataObject.anthropic) {\n const cachedInputTokens =\n providerMetadataObject.anthropic.usage?.cache_read_input_tokens ??\n providerMetadataObject.anthropic.cacheReadInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, cachedInputTokens);\n\n const cacheWriteInputTokens =\n providerMetadataObject.anthropic.usage?.cache_creation_input_tokens ??\n providerMetadataObject.anthropic.cacheCreationInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, cacheWriteInputTokens);\n }\n\n if (providerMetadataObject.bedrock?.usage) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheReadInputTokens,\n );\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheWriteInputTokens,\n );\n }\n\n if (providerMetadataObject.deepseek) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.deepseek.promptCacheHitTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.input_tokens.cache_miss',\n providerMetadataObject.deepseek.promptCacheMissTokens,\n );\n }\n } catch {\n // Ignore\n }\n }\n}\n\n/**\n * Sets an attribute only if the value is not null or undefined.\n */\nfunction setAttributeIfDefined(attributes: SpanAttributes, key: string, value: SpanAttributeValue | undefined): void {\n if (value != null) {\n attributes[key] = value;\n }\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const OPENAI_INTEGRATION_NAME = 'OpenAI';\n\n// https://platform.openai.com/docs/quickstart?api-mode=responses\n// https://platform.openai.com/docs/quickstart?api-mode=chat\n// https://platform.openai.com/docs/api-reference/conversations\nexport const OPENAI_METHOD_REGISTRY = {\n 'responses.create': { operation: 'chat' },\n 'chat.completions.create': { operation: 'chat' },\n 'embeddings.create': { operation: 'embeddings' },\n // Conversations API - for conversation state management\n // https://platform.openai.com/docs/guides/conversation-state\n 'conversations.create': { operation: 'chat' },\n} as const satisfies InstrumentedMethodRegistry;\nexport const RESPONSES_TOOL_CALL_EVENT_TYPES = [\n 'response.output_item.added',\n 'response.function_call_arguments.delta',\n 'response.function_call_arguments.done',\n 'response.output_item.done',\n] as const;\nexport const RESPONSE_EVENT_TYPES = [\n 'response.created',\n 'response.in_progress',\n 'response.failed',\n 'response.completed',\n 'response.incomplete',\n 'response.queued',\n 'response.output_text.delta',\n ...RESPONSES_TOOL_CALL_EVENT_TYPES,\n] as const;\n","import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE,\n GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n OPENAI_RESPONSE_ID_ATTRIBUTE,\n OPENAI_RESPONSE_MODEL_ATTRIBUTE,\n OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type {\n ChatCompletionChunk,\n OpenAiChatCompletionObject,\n OpenAIConversationObject,\n OpenAICreateEmbeddingsObject,\n OpenAIResponseObject,\n ResponseStreamingEvent,\n} from './types';\n\n/**\n * Check if response is a Chat Completion object\n */\nexport function isChatCompletionResponse(response: unknown): response is OpenAiChatCompletionObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'chat.completion'\n );\n}\n\n/**\n * Check if response is a Responses API object\n */\nexport function isResponsesApiResponse(response: unknown): response is OpenAIResponseObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'response'\n );\n}\n\n/**\n * Check if response is an Embeddings API object\n */\nexport function isEmbeddingsResponse(response: unknown): response is OpenAICreateEmbeddingsObject {\n if (response === null || typeof response !== 'object' || !('object' in response)) {\n return false;\n }\n const responseObject = response as Record;\n return (\n responseObject.object === 'list' &&\n typeof responseObject.model === 'string' &&\n responseObject.model.toLowerCase().includes('embedding')\n );\n}\n\n/**\n * Check if response is a Conversations API object\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nexport function isConversationResponse(response: unknown): response is OpenAIConversationObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'conversation'\n );\n}\n\n/**\n * Check if streaming event is from the Responses API\n */\nexport function isResponsesApiStreamEvent(event: unknown): event is ResponseStreamingEvent {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'type' in event &&\n typeof (event as Record).type === 'string' &&\n ((event as Record).type as string).startsWith('response.')\n );\n}\n\n/**\n * Check if streaming event is a chat completion chunk\n */\nexport function isChatCompletionChunk(event: unknown): event is ChatCompletionChunk {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'object' in event &&\n (event as Record).object === 'chat.completion.chunk'\n );\n}\n\n/**\n * Add attributes for Chat Completion responses\n */\nexport function addChatCompletionAttributes(\n span: Span,\n response: OpenAiChatCompletionObject,\n recordOutputs?: boolean,\n): void {\n setCommonResponseAttributes(span, response.id, response.model, response.created);\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.prompt_tokens,\n response.usage.completion_tokens,\n response.usage.total_tokens,\n );\n }\n if (Array.isArray(response.choices)) {\n const finishReasons = response.choices\n .map(choice => choice.finish_reason)\n .filter((reason): reason is string => reason !== null);\n if (finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(finishReasons),\n });\n }\n\n // Extract tool calls from all choices (only if recordOutputs is true)\n if (recordOutputs) {\n const toolCalls = response.choices\n .map(choice => choice.message?.tool_calls)\n .filter(calls => Array.isArray(calls) && calls.length > 0)\n .flat();\n\n if (toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Responses API responses\n */\nexport function addResponsesApiAttributes(span: Span, response: OpenAIResponseObject, recordOutputs?: boolean): void {\n setCommonResponseAttributes(span, response.id, response.model, response.created_at);\n if (response.status) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify([response.status]),\n });\n }\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.total_tokens,\n );\n }\n\n // Extract function calls from output (only if recordOutputs is true)\n if (recordOutputs) {\n const responseWithOutput = response as OpenAIResponseObject & { output?: unknown[] };\n if (Array.isArray(responseWithOutput.output) && responseWithOutput.output.length > 0) {\n // Filter for function_call type objects in the output array\n const functionCalls = responseWithOutput.output.filter(\n (item): unknown =>\n // oxlint-disable-next-line typescript/prefer-optional-chain\n typeof item === 'object' && item !== null && (item as Record).type === 'function_call',\n );\n\n if (functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Embeddings API responses\n */\nexport function addEmbeddingsAttributes(span: Span, response: OpenAICreateEmbeddingsObject): void {\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if (response.usage) {\n setTokenUsageAttributes(span, response.usage.prompt_tokens, undefined, response.usage.total_tokens);\n }\n}\n\n/**\n * Add attributes for Conversations API responses\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nexport function addConversationAttributes(span: Span, response: OpenAIConversationObject): void {\n const { id, created_at } = response;\n\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n // The conversation id is used to link messages across API calls\n [GEN_AI_CONVERSATION_ID_ATTRIBUTE]: id,\n });\n\n if (created_at) {\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(created_at * 1000).toISOString(),\n });\n }\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param totalTokens - The number of total tokens\n */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n totalTokens?: number,\n): void {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE]: promptTokens,\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE]: completionTokens,\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (totalTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Set common response attributes\n * @param span - The span to add attributes to\n * @param id - The response id\n * @param model - The response model\n * @param timestamp - The response timestamp\n */\nexport function setCommonResponseAttributes(span: Span, id: string, model: string, timestamp: number): void {\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: model,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(timestamp * 1000).toISOString(),\n });\n}\n\n/**\n * Extract conversation ID from request parameters\n * Supports both Conversations API and previous_response_id chaining\n * @see https://platform.openai.com/docs/guides/conversation-state\n */\nfunction extractConversationId(params: Record): string | undefined {\n // Conversations API: conversation parameter (e.g., \"conv_...\")\n if ('conversation' in params && typeof params.conversation === 'string') {\n return params.conversation;\n }\n // Responses chaining: previous_response_id links to parent response\n if ('previous_response_id' in params && typeof params.previous_response_id === 'string') {\n return params.previous_response_id;\n }\n return undefined;\n}\n\n/**\n * Extract request parameters including model settings and conversation context\n */\nexport function extractRequestParameters(params: Record): Record {\n const attributes: Record = {\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: params.model ?? 'unknown',\n };\n\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('frequency_penalty' in params) attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('presence_penalty' in params) attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = params.presence_penalty;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('encoding_format' in params) attributes[GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE] = params.encoding_format;\n if ('dimensions' in params) attributes[GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE] = params.dimensions;\n\n // Capture conversation ID for linking messages across API calls\n const conversationId = extractConversationId(params);\n if (conversationId) {\n attributes[GEN_AI_CONVERSATION_ID_ATTRIBUTE] = conversationId;\n }\n\n return attributes;\n}\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { RESPONSE_EVENT_TYPES } from './constants';\nimport type {\n ChatCompletionChunk,\n ChatCompletionToolCall,\n OpenAIResponseObject,\n ResponseFunctionCall,\n ResponseStreamingEvent,\n} from './types';\nimport {\n isChatCompletionChunk,\n isResponsesApiStreamEvent,\n setCommonResponseAttributes,\n setTokenUsageAttributes,\n} from './utils';\n\n/**\n * State object used to accumulate information from a stream of OpenAI events/chunks.\n */\ninterface StreamingState {\n /** Types of events encountered in the stream. */\n eventTypes: string[];\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** The timestamp of the response. */\n responseTimestamp: number;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Total number of tokens used (prompt + completion). */\n totalTokens: number | undefined;\n /**\n * Accumulated tool calls from Chat Completion streaming, indexed by tool call index.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=chat#streaming\n */\n chatCompletionToolCalls: Record;\n /**\n * Accumulated function calls from Responses API streaming.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=responses#streaming\n */\n responsesApiToolCalls: Array;\n}\n\n/**\n * Processes tool calls from a chat completion chunk delta.\n * Follows the pattern: accumulate by index, then convert to array at the end.\n *\n * @param toolCalls - Array of tool calls from the delta.\n * @param state - The current streaming state to update.\n *\n * @see https://platform.openai.com/docs/guides/function-calling#streaming\n */\nfunction processChatCompletionToolCalls(toolCalls: ChatCompletionToolCall[], state: StreamingState): void {\n for (const toolCall of toolCalls) {\n const index = toolCall.index;\n if (index === undefined || !toolCall.function) continue;\n\n // Initialize tool call if this is the first chunk for this index\n if (!(index in state.chatCompletionToolCalls)) {\n state.chatCompletionToolCalls[index] = {\n ...toolCall,\n function: {\n name: toolCall.function.name,\n arguments: toolCall.function.arguments || '',\n },\n };\n } else {\n // Accumulate function arguments from subsequent chunks\n const existingToolCall = state.chatCompletionToolCalls[index];\n if (toolCall.function.arguments && existingToolCall?.function) {\n existingToolCall.function.arguments += toolCall.function.arguments;\n }\n }\n }\n}\n\n/**\n * Processes a single OpenAI ChatCompletionChunk event, updating the streaming state.\n *\n * @param chunk - The ChatCompletionChunk event to process.\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n */\nfunction processChatCompletionChunk(chunk: ChatCompletionChunk, state: StreamingState, recordOutputs: boolean): void {\n state.responseId = chunk.id ?? state.responseId;\n state.responseModel = chunk.model ?? state.responseModel;\n state.responseTimestamp = chunk.created ?? state.responseTimestamp;\n\n if (chunk.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = chunk.usage.prompt_tokens;\n state.completionTokens = chunk.usage.completion_tokens;\n state.totalTokens = chunk.usage.total_tokens;\n }\n\n for (const choice of chunk.choices ?? []) {\n if (recordOutputs) {\n if (choice.delta?.content) {\n state.responseTexts.push(choice.delta.content);\n }\n\n // Handle tool calls from delta\n if (choice.delta?.tool_calls) {\n processChatCompletionToolCalls(choice.delta.tool_calls, state);\n }\n }\n if (choice.finish_reason) {\n state.finishReasons.push(choice.finish_reason);\n }\n }\n}\n\n/**\n * Processes a single OpenAI Responses API streaming event, updating the streaming state and span.\n *\n * @param streamEvent - The event to process (may be an error or unknown object).\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n * @param span - The span to update with error status if needed.\n */\nfunction processResponsesApiEvent(\n streamEvent: ResponseStreamingEvent | unknown | Error,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\n if (!(streamEvent && typeof streamEvent === 'object')) {\n state.eventTypes.push('unknown:non-object');\n return;\n }\n if (streamEvent instanceof Error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(streamEvent, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream-response',\n },\n });\n return;\n }\n\n if (!('type' in streamEvent)) return;\n const event = streamEvent as ResponseStreamingEvent;\n\n if (!RESPONSE_EVENT_TYPES.includes(event.type)) {\n state.eventTypes.push(event.type);\n return;\n }\n\n // Handle output text delta\n if (recordOutputs) {\n // Handle tool call events for Responses API\n if (event.type === 'response.output_item.done' && 'item' in event) {\n state.responsesApiToolCalls.push(event.item);\n }\n\n if (event.type === 'response.output_text.delta' && 'delta' in event && event.delta) {\n state.responseTexts.push(event.delta);\n return;\n }\n }\n\n if ('response' in event) {\n const { response } = event as { response: OpenAIResponseObject };\n state.responseId = response.id ?? state.responseId;\n state.responseModel = response.model ?? state.responseModel;\n state.responseTimestamp = response.created_at ?? state.responseTimestamp;\n\n if (response.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = response.usage.input_tokens;\n state.completionTokens = response.usage.output_tokens;\n state.totalTokens = response.usage.total_tokens;\n }\n\n if (response.status) {\n state.finishReasons.push(response.status);\n }\n\n if (recordOutputs && response.output_text) {\n state.responseTexts.push(response.output_text);\n }\n }\n}\n\n/**\n * Instruments a stream of OpenAI events, updating the provided span with relevant attributes and\n * optionally recording output text. This function yields each event from the input stream as it is processed.\n *\n * @template T - The type of events in the stream.\n * @param stream - The async iterable stream of events to instrument.\n * @param span - The span to add attributes to and to finish at the end of the stream.\n * @param recordOutputs - Whether to record output text fragments in the span.\n * @returns An async generator yielding each event from the input stream.\n */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n eventTypes: [],\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n responseTimestamp: 0,\n promptTokens: undefined,\n completionTokens: undefined,\n totalTokens: undefined,\n chatCompletionToolCalls: {},\n responsesApiToolCalls: [],\n };\n\n try {\n for await (const event of stream) {\n if (isChatCompletionChunk(event)) {\n processChatCompletionChunk(event as ChatCompletionChunk, state, recordOutputs);\n } else if (isResponsesApiStreamEvent(event)) {\n processResponsesApiEvent(event as ResponseStreamingEvent, state, recordOutputs, span);\n }\n yield event;\n }\n } finally {\n setCommonResponseAttributes(span, state.responseId, state.responseModel, state.responseTimestamp);\n setTokenUsageAttributes(span, state.promptTokens, state.completionTokens, state.totalTokens);\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls attribute if any were accumulated\n const chatCompletionToolCallsArray = Object.values(state.chatCompletionToolCalls);\n const allToolCalls = [...chatCompletionToolCallsArray, ...state.responsesApiToolCalls];\n\n if (allToolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(allToolCalls),\n });\n }\n\n span.end();\n }\n}\n","import { DEBUG_BUILD } from '../../debug-build';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { debug } from '../../utils/debug-logger';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport {\n buildMethodPath,\n extractSystemInstructions,\n getTruncatedJsonString,\n resolveAIRecordingOptions,\n wrapPromiseWithMethods,\n} from '../ai/utils';\nimport { OPENAI_METHOD_REGISTRY } from './constants';\nimport { instrumentStream } from './streaming';\nimport type { ChatCompletionChunk, OpenAiOptions, OpenAiResponse, OpenAIStream, ResponseStreamingEvent } from './types';\nimport {\n addChatCompletionAttributes,\n addConversationAttributes,\n addEmbeddingsAttributes,\n addResponsesApiAttributes,\n extractRequestParameters,\n isChatCompletionResponse,\n isConversationResponse,\n isEmbeddingsResponse,\n isResponsesApiResponse,\n} from './utils';\n\n/**\n * Extract available tools from request parameters\n */\nfunction extractAvailableTools(params: Record): string | undefined {\n const tools = Array.isArray(params.tools) ? params.tools : [];\n const hasWebSearchOptions = params.web_search_options && typeof params.web_search_options === 'object';\n const webSearchOptions = hasWebSearchOptions\n ? [{ type: 'web_search_options', ...(params.web_search_options as Record) }]\n : [];\n\n const availableTools = [...tools, ...webSearchOptions];\n if (availableTools.length === 0) {\n return undefined;\n }\n\n try {\n return JSON.stringify(availableTools);\n } catch (error) {\n DEBUG_BUILD && debug.error('Failed to serialize OpenAI tools:', error);\n return undefined;\n }\n}\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], operationName: string): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] as Record;\n\n const availableTools = extractAvailableTools(params);\n if (availableTools) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = availableTools;\n }\n\n Object.assign(attributes, extractRequestParameters(params));\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n\n return attributes;\n}\n\n/**\n * Add response attributes to spans\n * This supports Chat Completion, Responses API, Embeddings, and Conversations API responses\n */\nfunction addResponseAttributes(span: Span, result: unknown, recordOutputs?: boolean): void {\n if (!result || typeof result !== 'object') return;\n\n const response = result as OpenAiResponse;\n\n if (isChatCompletionResponse(response)) {\n addChatCompletionAttributes(span, response, recordOutputs);\n if (recordOutputs && response.choices?.length) {\n const responseTexts = response.choices.map(choice => choice.message?.content || '');\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(responseTexts) });\n }\n } else if (isResponsesApiResponse(response)) {\n addResponsesApiAttributes(span, response, recordOutputs);\n if (recordOutputs && response.output_text) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.output_text });\n }\n } else if (isEmbeddingsResponse(response)) {\n addEmbeddingsAttributes(span, response);\n } else if (isConversationResponse(response)) {\n addConversationAttributes(span, response);\n }\n}\n\n// Extract and record AI request inputs, if present. This is intentionally separate from response attributes.\nfunction addRequestAttributes(span: Span, params: Record, operationName: string): void {\n // Store embeddings input on a separate attribute and do not truncate it\n if (operationName === 'embeddings' && 'input' in params) {\n const input = params.input;\n\n // No input provided\n if (input == null) {\n return;\n }\n\n // Empty input string\n if (typeof input === 'string' && input.length === 0) {\n return;\n }\n\n // Empty array input\n if (Array.isArray(input) && input.length === 0) {\n return;\n }\n\n // Store strings as-is, arrays/objects as JSON\n span.setAttribute(GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, typeof input === 'string' ? input : JSON.stringify(input));\n return;\n }\n\n const src = 'input' in params ? params.input : 'messages' in params ? params.messages : undefined;\n\n if (!src) {\n return;\n }\n\n if (Array.isArray(src) && src.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(src);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedInput = getTruncatedJsonString(filteredMessages);\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ATTRIBUTE, truncatedInput);\n\n if (Array.isArray(filteredMessages)) {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredMessages.length);\n } else {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, 1);\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: OpenAiOptions,\n): (...args: T) => Promise {\n return function instrumentedCall(...args: T): Promise {\n const operationName = instrumentedMethod.operation;\n const requestAttributes = extractRequestAttributes(args, operationName);\n const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] as string) || 'unknown';\n\n const params = args[0] as Record | undefined;\n const isStreamRequested = params && typeof params === 'object' && params.stream === true;\n\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n };\n\n if (isStreamRequested) {\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span: Span) => {\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n // Return async processing\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentStream(\n result as OpenAIStream,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n }\n\n // Non-streaming\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpan(spanConfig, (span: Span) => {\n // Call synchronously to capture the promise\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result, options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai',\n data: { function: methodPath },\n },\n });\n throw error;\n },\n );\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n };\n}\n\n/**\n * Create a deep proxy for OpenAI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: OpenAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = OPENAI_METHOD_REGISTRY[methodPath as keyof typeof OPENAI_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n return instrumentMethod(\n value as (...args: unknown[]) => Promise,\n methodPath,\n instrumentedMethod,\n obj,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n // which is required for accessing private class fields (e.g. #baseURL) in OpenAI SDK v5.\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) as T;\n}\n\n/**\n * Instrument an OpenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n */\nexport function instrumentOpenAiClient(client: T, options?: OpenAiOptions): T {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const ANTHROPIC_AI_INTEGRATION_NAME = 'Anthropic_AI';\n\n// https://docs.anthropic.com/en/api/messages\n// https://docs.anthropic.com/en/api/models-list\nexport const ANTHROPIC_METHOD_REGISTRY = {\n 'messages.create': { operation: 'chat' },\n 'messages.stream': { operation: 'chat', streaming: true },\n 'messages.countTokens': { operation: 'chat' },\n 'models.get': { operation: 'models' },\n 'completions.create': { operation: 'chat' },\n 'models.retrieve': { operation: 'models' },\n 'beta.messages.create': { operation: 'chat' },\n} as const satisfies InstrumentedMethodRegistry;\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport type { SpanStatusType } from '../../types-hoist/spanStatus';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport type { AnthropicAiResponse } from './types';\n\n/**\n * Set the messages and messages original length attributes.\n * Extracts system instructions before truncation.\n */\nexport function setMessagesAttribute(span: Span, messages: unknown): void {\n if (Array.isArray(messages) && messages.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttributes({\n [GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions,\n });\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n}\n\nconst ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS: Record = {\n invalid_request_error: 'invalid_argument',\n authentication_error: 'unauthenticated',\n permission_error: 'permission_denied',\n not_found_error: 'not_found',\n request_too_large: 'failed_precondition',\n rate_limit_error: 'resource_exhausted',\n api_error: 'internal_error',\n overloaded_error: 'unavailable',\n};\n\n/**\n * Map an Anthropic API error type to a SpanStatusType value.\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nexport function mapAnthropicErrorToStatusMessage(errorType: string | undefined): SpanStatusType {\n if (!errorType) {\n return 'internal_error';\n }\n return ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS[errorType] || 'internal_error';\n}\n\n/**\n * Capture error information from the response\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nexport function handleResponseError(span: Span, response: AnthropicAiResponse): void {\n if (response.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(response.error.type) });\n\n captureException(response.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n }\n}\n\n/**\n * Include the system prompt in the messages list, if available\n */\nexport function messagesFromParams(params: Record): unknown[] {\n const { system, messages, input } = params;\n\n const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : [];\n\n const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : undefined;\n\n const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : [];\n\n const userMessages = inputParamMessages ?? messagesParamMessages;\n\n return [...systemMessages, ...userMessages];\n}\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { setTokenUsageAttributes } from '../ai/utils';\nimport type { AnthropicAiStreamingEvent } from './types';\nimport { mapAnthropicErrorToStatusMessage } from './utils';\n\n/**\n * State object used to accumulate information from a stream of Anthropic AI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Number of cache creation input tokens used. */\n cacheCreationInputTokens: number | undefined;\n /** Number of cache read input tokens used. */\n cacheReadInputTokens: number | undefined;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\n /** In-progress tool call blocks keyed by index */\n activeToolBlocks: Record<\n number,\n {\n id?: string;\n name?: string;\n inputJsonParts: string[];\n }\n >;\n}\n\n/**\n * Checks if an event is an error event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n * @returns Whether an error occurred\n */\n\nfunction isErrorEvent(event: AnthropicAiStreamingEvent, span: Span): boolean {\n if ('type' in event && typeof event.type === 'string') {\n // If the event is an error, set the span status and capture the error\n // These error events are not rejected by the API by default, but are sent as metadata of the response\n if (event.type === 'error') {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(event.error?.type) });\n captureException(event.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n return true;\n }\n }\n return false;\n}\n\n/**\n * Processes the message metadata of an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n */\n\nfunction handleMessageMetadata(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n // The token counts shown in the usage field of the message_delta event are cumulative.\n // @see https://docs.anthropic.com/en/docs/build-with-claude/streaming#event-types\n if (event.type === 'message_delta' && event.usage) {\n if ('output_tokens' in event.usage && typeof event.usage.output_tokens === 'number') {\n state.completionTokens = event.usage.output_tokens;\n }\n }\n\n if (event.message) {\n const message = event.message;\n\n if (message.id) state.responseId = message.id;\n if (message.model) state.responseModel = message.model;\n if (message.stop_reason) state.finishReasons.push(message.stop_reason);\n\n if (message.usage) {\n if (typeof message.usage.input_tokens === 'number') state.promptTokens = message.usage.input_tokens;\n if (typeof message.usage.cache_creation_input_tokens === 'number')\n state.cacheCreationInputTokens = message.usage.cache_creation_input_tokens;\n if (typeof message.usage.cache_read_input_tokens === 'number')\n state.cacheReadInputTokens = message.usage.cache_read_input_tokens;\n }\n }\n}\n\n/**\n * Handle start of a content block (e.g., tool_use)\n */\nfunction handleContentBlockStart(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n if (event.type !== 'content_block_start' || typeof event.index !== 'number' || !event.content_block) return;\n if (event.content_block.type === 'tool_use' || event.content_block.type === 'server_tool_use') {\n state.activeToolBlocks[event.index] = {\n id: event.content_block.id,\n name: event.content_block.name,\n inputJsonParts: [],\n };\n }\n}\n\n/**\n * Handle deltas of a content block, including input_json_delta for tool_use\n */\nfunction handleContentBlockDelta(\n event: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n): void {\n if (event.type !== 'content_block_delta' || !event.delta) return;\n\n // Accumulate tool_use input JSON deltas only when we have an index and an active tool block\n if (\n typeof event.index === 'number' &&\n 'partial_json' in event.delta &&\n typeof event.delta.partial_json === 'string'\n ) {\n const active = state.activeToolBlocks[event.index];\n if (active) {\n active.inputJsonParts.push(event.delta.partial_json);\n }\n }\n\n // Accumulate streamed response text regardless of index\n if (recordOutputs && typeof event.delta.text === 'string') {\n state.responseTexts.push(event.delta.text);\n }\n}\n\n/**\n * Handle stop of a content block; finalize tool_use entries\n */\nfunction handleContentBlockStop(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n if (event.type !== 'content_block_stop' || typeof event.index !== 'number') return;\n\n const active = state.activeToolBlocks[event.index];\n if (!active) return;\n\n const raw = active.inputJsonParts.join('');\n let parsedInput: unknown;\n\n try {\n parsedInput = raw ? JSON.parse(raw) : {};\n } catch {\n parsedInput = { __unparsed: raw };\n }\n\n state.toolCalls.push({\n type: 'tool_use',\n id: active.id,\n name: active.name,\n input: parsedInput,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete state.activeToolBlocks[event.index];\n}\n\n/**\n * Processes an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processEvent(\n event: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\n if (!(event && typeof event === 'object')) {\n return;\n }\n\n const isError = isErrorEvent(event, span);\n if (isError) return;\n\n handleMessageMetadata(event, state);\n\n // Tool call events are sent via 3 separate events:\n // - content_block_start (start of the tool call)\n // - content_block_delta (delta aka input of the tool call)\n // - content_block_stop (end of the tool call)\n // We need to handle them all to capture the full tool call.\n handleContentBlockStart(event, state);\n handleContentBlockDelta(event, state, recordOutputs);\n handleContentBlockStop(event, state);\n}\n\n/**\n * Finalizes span attributes when stream processing completes\n */\nfunction finalizeStreamSpan(state: StreamingState, span: Span, recordOutputs: boolean): void {\n if (!span.isRecording()) {\n return;\n }\n\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n}\n\n/**\n * Instruments an async iterable stream of Anthropic events, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each event from the input stream unchanged.\n */\nexport async function* instrumentAsyncIterableStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n try {\n for await (const event of stream) {\n processEvent(event, state, recordOutputs, span);\n yield event;\n }\n } finally {\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n }\n}\n\n/**\n * Instruments a MessageStream by registering event handlers and preserving the original stream API.\n */\nexport function instrumentMessageStream void }>(\n stream: R,\n span: Span,\n recordOutputs: boolean,\n): R {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n stream.on('streamEvent', (event: unknown) => {\n processEvent(event as AnthropicAiStreamingEvent, state, recordOutputs, span);\n });\n\n // The event fired when a message is done being streamed by the API. Corresponds to the message_stop SSE event.\n // @see https://github.com/anthropics/anthropic-sdk-typescript/blob/d3be31f5a4e6ebb4c0a2f65dbb8f381ae73a9166/helpers.md?plain=1#L42-L44\n stream.on('message', () => {\n finalizeStreamSpan(state, span, recordOutputs);\n });\n\n stream.on('error', (error: unknown) => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.stream_error',\n },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n });\n\n return stream;\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PROMPT_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport {\n buildMethodPath,\n resolveAIRecordingOptions,\n setTokenUsageAttributes,\n wrapPromiseWithMethods,\n} from '../ai/utils';\nimport { ANTHROPIC_METHOD_REGISTRY } from './constants';\nimport { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming';\nimport type { AnthropicAiOptions, AnthropicAiResponse, AnthropicAiStreamingEvent, ContentBlock } from './types';\nimport { handleResponseError, messagesFromParams, setMessagesAttribute } from './utils';\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], methodPath: string, operationName: string): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] as Record;\n if (params.tools && Array.isArray(params.tools)) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(params.tools);\n }\n\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = params.model ?? 'unknown';\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('top_k' in params) attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = params.top_k;\n if ('frequency_penalty' in params)\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('max_tokens' in params) attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = params.max_tokens;\n } else {\n if (methodPath === 'models.retrieve' || methodPath === 'models.get') {\n // models.retrieve(model-id) and models.get(model-id)\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = args[0];\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n */\nfunction addPrivateRequestAttributes(span: Span, params: Record): void {\n const messages = messagesFromParams(params);\n setMessagesAttribute(span, messages);\n\n if ('prompt' in params) {\n span.setAttributes({ [GEN_AI_PROMPT_ATTRIBUTE]: JSON.stringify(params.prompt) });\n }\n}\n\n/**\n * Add content attributes when recordOutputs is enabled\n */\nfunction addContentAttributes(span: Span, response: AnthropicAiResponse): void {\n // Messages.create\n if ('content' in response) {\n if (Array.isArray(response.content)) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.content\n .map((item: ContentBlock) => item.text)\n .filter(text => !!text)\n .join(''),\n });\n\n const toolCalls: Array = [];\n\n for (const item of response.content) {\n if (item.type === 'tool_use' || item.type === 'server_tool_use') {\n toolCalls.push(item);\n }\n }\n if (toolCalls.length > 0) {\n span.setAttributes({ [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls) });\n }\n }\n }\n // Completions.create\n if ('completion' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.completion });\n }\n // Models.countTokens\n if ('input_tokens' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(response.input_tokens) });\n }\n}\n\n/**\n * Add basic metadata attributes from the response\n */\nfunction addMetadataAttributes(span: Span, response: AnthropicAiResponse): void {\n if ('id' in response && 'model' in response) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: response.id,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if ('created' in response && typeof response.created === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created * 1000).toISOString(),\n });\n }\n if ('created_at' in response && typeof response.created_at === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created_at * 1000).toISOString(),\n });\n }\n\n if ('usage' in response && response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.cache_creation_input_tokens,\n response.usage.cache_read_input_tokens,\n );\n }\n }\n}\n\n/**\n * Add response attributes to spans\n */\nfunction addResponseAttributes(span: Span, response: AnthropicAiResponse, recordOutputs?: boolean): void {\n if (!response || typeof response !== 'object') return;\n\n // capture error, do not add attributes if error (they shouldn't exist)\n if ('type' in response && response.type === 'error') {\n handleResponseError(span, response);\n return;\n }\n\n // Private response attributes that are only recorded if recordOutputs is true.\n if (recordOutputs) {\n addContentAttributes(span, response);\n }\n\n // Add basic metadata attributes\n addMetadataAttributes(span, response);\n}\n\n/**\n * Handle common error catching and reporting for streaming requests\n */\nfunction handleStreamingError(error: unknown, span: Span, methodPath: string): never {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.anthropic', data: { function: methodPath } },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n throw error;\n}\n\n/**\n * Handle streaming cases with common logic\n */\nfunction handleStreamingRequest(\n originalMethod: (...args: T) => R | Promise,\n target: (...args: T) => R | Promise,\n context: unknown,\n args: T,\n requestAttributes: Record,\n operationName: string,\n methodPath: string,\n params: Record | undefined,\n options: AnthropicAiOptions,\n isStreamRequested: boolean,\n isStreamingMethod: boolean,\n): R | Promise {\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n };\n\n // messages.stream() always returns a sync MessageStream, even with stream: true param\n if (isStreamRequested && !isStreamingMethod) {\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span: Span) => {\n originalResult = originalMethod.apply(context, args) as Promise;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentAsyncIterableStream(\n result as AsyncIterable,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n } else {\n return startSpanManual(spanConfig, span => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const messageStream = target.apply(context, args);\n return instrumentMessageStream(messageStream, span, options.recordOutputs ?? false);\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n });\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => R | Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: AnthropicAiOptions,\n): (...args: T) => R | Promise {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args: T): R | Promise {\n const operationName = instrumentedMethod.operation;\n const requestAttributes = extractRequestAttributes(args, methodPath, operationName);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n\n const params = typeof args[0] === 'object' ? (args[0] as Record) : undefined;\n const isStreamRequested = Boolean(params?.stream);\n const isStreamingMethod = instrumentedMethod.streaming === true;\n\n if (isStreamRequested || isStreamingMethod) {\n return handleStreamingRequest(\n originalMethod,\n target,\n context,\n args,\n requestAttributes,\n operationName,\n methodPath,\n params,\n options,\n isStreamRequested,\n isStreamingMethod,\n );\n }\n\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpan(\n {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n },\n span => {\n originalResult = target.apply(context, args) as Promise;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result as AnthropicAiResponse, options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic',\n data: {\n function: methodPath,\n },\n },\n });\n throw error;\n },\n );\n },\n );\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n },\n }) as (...args: T) => R | Promise;\n}\n\n/**\n * Create a deep proxy for Anthropic AI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: AnthropicAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = ANTHROPIC_METHOD_REGISTRY[methodPath as keyof typeof ANTHROPIC_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n return instrumentMethod(\n value as (...args: unknown[]) => unknown | Promise,\n methodPath,\n instrumentedMethod,\n obj,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) as T;\n}\n\n/**\n * Instrument an Anthropic AI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends object\n * @param client - The Anthropic AI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n */\nexport function instrumentAnthropicAiClient(anthropicAiClient: T, options?: AnthropicAiOptions): T {\n return createDeepProxy(anthropicAiClient, '', resolveAIRecordingOptions(options));\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const GOOGLE_GENAI_INTEGRATION_NAME = 'Google_GenAI';\n\n// https://ai.google.dev/api/rest/v1/models/generateContent\n// https://ai.google.dev/api/rest/v1/chats/sendMessage\n// https://googleapis.github.io/js-genai/release_docs/classes/models.Models.html#generatecontentstream\n// https://googleapis.github.io/js-genai/release_docs/classes/chats.Chat.html#sendmessagestream\nexport const GOOGLE_GENAI_METHOD_REGISTRY = {\n 'models.generateContent': { operation: 'generate_content' },\n 'models.generateContentStream': { operation: 'generate_content', streaming: true },\n 'models.embedContent': { operation: 'embeddings' },\n 'chats.create': { operation: 'chat' },\n // chat.* paths are built by createDeepProxy when it proxies the chat instance with CHAT_PATH as base\n 'chat.sendMessage': { operation: 'chat' },\n 'chat.sendMessageStream': { operation: 'chat', streaming: true },\n} as const satisfies InstrumentedMethodRegistry;\n\n// Constants for internal use\nexport const GOOGLE_GENAI_SYSTEM_NAME = 'google_genai';\nexport const CHATS_CREATE_METHOD = 'chats.create';\nexport const CHAT_PATH = 'chat';\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { GoogleGenAIResponse } from './types';\n\n/**\n * State object used to accumulate information from a stream of Google GenAI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId?: string;\n /** The model name. */\n responseModel?: string;\n /** Number of prompt/input tokens used. */\n promptTokens?: number;\n /** Number of completion/output tokens used. */\n completionTokens?: number;\n /** Number of total tokens used. */\n totalTokens?: number;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\n}\n\n/**\n * Checks if a response chunk contains an error\n * @param chunk - The response chunk to check\n * @param span - The span to update if error is found\n * @returns Whether an error occurred\n */\nfunction isErrorChunk(chunk: GoogleGenAIResponse, span: Span): boolean {\n const feedback = chunk?.promptFeedback;\n if (feedback?.blockReason) {\n const message = feedback.blockReasonMessage ?? feedback.blockReason;\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(`Content blocked: ${message}`, {\n mechanism: { handled: false, type: 'auto.ai.google_genai' },\n });\n return true;\n }\n return false;\n}\n\n/**\n * Processes response metadata from a chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n */\nfunction handleResponseMetadata(chunk: GoogleGenAIResponse, state: StreamingState): void {\n if (typeof chunk.responseId === 'string') state.responseId = chunk.responseId;\n if (typeof chunk.modelVersion === 'string') state.responseModel = chunk.modelVersion;\n\n const usage = chunk.usageMetadata;\n if (usage) {\n if (typeof usage.promptTokenCount === 'number') state.promptTokens = usage.promptTokenCount;\n if (typeof usage.candidatesTokenCount === 'number') state.completionTokens = usage.candidatesTokenCount;\n if (typeof usage.totalTokenCount === 'number') state.totalTokens = usage.totalTokenCount;\n }\n}\n\n/**\n * Processes candidate content from a response chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n */\nfunction handleCandidateContent(chunk: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean): void {\n if (Array.isArray(chunk.functionCalls)) {\n state.toolCalls.push(...chunk.functionCalls);\n }\n\n for (const candidate of chunk.candidates ?? []) {\n if (candidate?.finishReason && !state.finishReasons.includes(candidate.finishReason)) {\n state.finishReasons.push(candidate.finishReason);\n }\n\n for (const part of candidate?.content?.parts ?? []) {\n if (recordOutputs && part.text) state.responseTexts.push(part.text);\n if (part.functionCall) {\n state.toolCalls.push({\n type: 'function',\n id: part.functionCall.id,\n name: part.functionCall.name,\n arguments: part.functionCall.args,\n });\n }\n }\n }\n}\n\n/**\n * Processes a single chunk from the Google GenAI stream\n * @param chunk - The chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processChunk(chunk: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean, span: Span): void {\n if (!chunk || isErrorChunk(chunk, span)) return;\n handleResponseMetadata(chunk, state);\n handleCandidateContent(chunk, state, recordOutputs);\n}\n\n/**\n * Instruments an async iterable stream of Google GenAI response chunks, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each chunk from the input stream unchanged.\n */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n toolCalls: [],\n };\n\n try {\n for await (const chunk of stream) {\n processChunk(chunk, state, recordOutputs, span);\n yield chunk;\n }\n } finally {\n const attrs: Record = {\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n };\n\n if (state.responseId) attrs[GEN_AI_RESPONSE_ID_ATTRIBUTE] = state.responseId;\n if (state.responseModel) attrs[GEN_AI_RESPONSE_MODEL_ATTRIBUTE] = state.responseModel;\n if (state.promptTokens !== undefined) attrs[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = state.promptTokens;\n if (state.completionTokens !== undefined) attrs[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = state.completionTokens;\n if (state.totalTokens !== undefined) attrs[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = state.totalTokens;\n\n if (state.finishReasons.length) {\n attrs[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE] = JSON.stringify(state.finishReasons);\n }\n if (recordOutputs && state.responseTexts.length) {\n attrs[GEN_AI_RESPONSE_TEXT_ATTRIBUTE] = state.responseTexts.join('');\n }\n if (recordOutputs && state.toolCalls.length) {\n attrs[GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE] = JSON.stringify(state.toolCalls);\n }\n\n span.setAttributes(attrs);\n span.end();\n }\n}\n","// Copied from https://googleapis.github.io/js-genai/release_docs/index.html\nexport type ContentListUnion = Content | Content[] | PartListUnion;\nexport type ContentUnion = Content | PartUnion[] | PartUnion;\nexport type Content = {\n parts?: Part[];\n role?: string;\n};\nexport type PartUnion = Part | string;\nexport type Part = Record & {\n inlineData?: {\n data?: string;\n displayName?: string;\n mimeType?: string;\n };\n text?: string;\n};\nexport type PartListUnion = PartUnion[] | PartUnion;\n\n// our consistent span message shape\nexport type Message = Record & {\n role: string;\n content?: PartListUnion;\n parts?: PartListUnion;\n};\n\n/**\n *\n */\nexport function contentUnionToMessages(content: ContentListUnion, role = 'user'): Message[] {\n if (typeof content === 'string') {\n return [{ role, content }];\n }\n if (Array.isArray(content)) {\n return content.flatMap(content => contentUnionToMessages(content, role));\n }\n if (typeof content !== 'object' || !content) return [];\n if ('role' in content && typeof content.role === 'string') {\n return [content as Message];\n }\n if ('parts' in content) {\n return [{ ...content, role } as Message];\n }\n return [{ role, content }];\n}\n","/* eslint-disable max-lines */\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport { buildMethodPath, extractSystemInstructions, resolveAIRecordingOptions } from '../ai/utils';\nimport { CHAT_PATH, CHATS_CREATE_METHOD, GOOGLE_GENAI_METHOD_REGISTRY, GOOGLE_GENAI_SYSTEM_NAME } from './constants';\nimport { instrumentStream } from './streaming';\nimport type { Candidate, ContentPart, GoogleGenAIOptions, GoogleGenAIResponse } from './types';\nimport type { ContentListUnion, ContentUnion, Message, PartListUnion } from './utils';\nimport { contentUnionToMessages } from './utils';\n\n/**\n * Extract model from parameters or chat context object\n * For chat instances, the model is available on the chat object as 'model' (older versions) or 'modelVersion' (newer versions)\n */\nexport function extractModel(params: Record, context?: unknown): string {\n if ('model' in params && typeof params.model === 'string') {\n return params.model;\n }\n\n // Try to get model from chat context object (chat instance has model property)\n if (context && typeof context === 'object') {\n const contextObj = context as Record;\n\n // Check for 'model' property (older versions, and streaming)\n if ('model' in contextObj && typeof contextObj.model === 'string') {\n return contextObj.model;\n }\n\n // Check for 'modelVersion' property (newer versions)\n if ('modelVersion' in contextObj && typeof contextObj.modelVersion === 'string') {\n return contextObj.modelVersion;\n }\n }\n\n return 'unknown';\n}\n\n/**\n * Extract generation config parameters\n */\nfunction extractConfigAttributes(config: Record): Record {\n const attributes: Record = {};\n\n if ('temperature' in config && typeof config.temperature === 'number') {\n attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = config.temperature;\n }\n if ('topP' in config && typeof config.topP === 'number') {\n attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = config.topP;\n }\n if ('topK' in config && typeof config.topK === 'number') {\n attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = config.topK;\n }\n if ('maxOutputTokens' in config && typeof config.maxOutputTokens === 'number') {\n attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = config.maxOutputTokens;\n }\n if ('frequencyPenalty' in config && typeof config.frequencyPenalty === 'number') {\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = config.frequencyPenalty;\n }\n if ('presencePenalty' in config && typeof config.presencePenalty === 'number') {\n attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = config.presencePenalty;\n }\n\n return attributes;\n}\n\n/**\n * Extract request attributes from method arguments\n * Builds the base attributes for span creation including system info, model, and config\n */\nfunction extractRequestAttributes(\n operationName: string,\n params?: Record,\n context?: unknown,\n): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: GOOGLE_GENAI_SYSTEM_NAME,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.google_genai',\n };\n\n if (params) {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel(params, context);\n\n // Extract generation config parameters\n if ('config' in params && typeof params.config === 'object' && params.config) {\n const config = params.config as Record;\n Object.assign(attributes, extractConfigAttributes(config));\n\n // Extract available tools from config\n if ('tools' in config && Array.isArray(config.tools)) {\n const functionDeclarations = config.tools.flatMap(\n (tool: { functionDeclarations: unknown[] }) => tool.functionDeclarations,\n );\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(functionDeclarations);\n }\n }\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel({}, context);\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n * Handles different parameter formats for different Google GenAI methods.\n */\nfunction addPrivateRequestAttributes(span: Span, params: Record, isEmbeddings: boolean): void {\n if (isEmbeddings) {\n const contents = params.contents;\n if (contents != null) {\n span.setAttribute(\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n typeof contents === 'string' ? contents : JSON.stringify(contents),\n );\n }\n return;\n }\n\n const messages: Message[] = [];\n\n // config.systemInstruction: ContentUnion\n if (\n 'config' in params &&\n params.config &&\n typeof params.config === 'object' &&\n 'systemInstruction' in params.config &&\n params.config.systemInstruction\n ) {\n messages.push(...contentUnionToMessages(params.config.systemInstruction as ContentUnion, 'system'));\n }\n\n // For chats.create: history contains the conversation history\n if ('history' in params) {\n messages.push(...contentUnionToMessages(params.history as PartListUnion, 'user'));\n }\n\n // For models.generateContent: ContentListUnion\n if ('contents' in params) {\n messages.push(...contentUnionToMessages(params.contents as ContentListUnion, 'user'));\n }\n\n // For chat.sendMessage: message can be PartListUnion\n if ('message' in params) {\n messages.push(...contentUnionToMessages(params.message as PartListUnion, 'user'));\n }\n\n if (Array.isArray(messages) && messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncateGenAiMessages(filteredMessages as unknown[])),\n });\n }\n}\n\n/**\n * Add response attributes from the Google GenAI response\n * @see https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L2313\n */\nfunction addResponseAttributes(span: Span, response: GoogleGenAIResponse, recordOutputs?: boolean): void {\n if (!response || typeof response !== 'object') return;\n\n if (response.modelVersion) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, response.modelVersion);\n }\n\n // Add usage metadata if present\n if (response.usageMetadata && typeof response.usageMetadata === 'object') {\n const usage = response.usageMetadata;\n if (typeof usage.promptTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: usage.promptTokenCount,\n });\n }\n if (typeof usage.candidatesTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: usage.candidatesTokenCount,\n });\n }\n if (typeof usage.totalTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: usage.totalTokenCount,\n });\n }\n }\n\n // Add response text if recordOutputs is enabled\n if (recordOutputs && Array.isArray(response.candidates) && response.candidates.length > 0) {\n const responseTexts = response.candidates\n .map((candidate: Candidate) => {\n if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {\n return candidate.content.parts\n .map((part: ContentPart) => (typeof part.text === 'string' ? part.text : ''))\n .filter((text: string) => text.length > 0)\n .join('');\n }\n return '';\n })\n .filter((text: string) => text.length > 0);\n\n if (responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: responseTexts.join(''),\n });\n }\n }\n\n // Add tool calls if recordOutputs is enabled\n if (recordOutputs && response.functionCalls) {\n const functionCalls = response.functionCalls;\n if (Array.isArray(functionCalls) && functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n}\n\n/**\n * Instrument any async or synchronous genai method with Sentry spans\n * Handles operations like models.generateContent and chat.sendMessage and chats.create\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => R | Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: GoogleGenAIOptions,\n): (...args: T) => R | Promise {\n const isSyncCreate = methodPath === CHATS_CREATE_METHOD;\n const isEmbeddings = instrumentedMethod.operation === 'embeddings';\n\n return new Proxy(originalMethod, {\n apply(target, _, args: T): R | Promise {\n const operationName = instrumentedMethod.operation;\n const params = args[0] as Record | undefined;\n const requestAttributes = extractRequestAttributes(operationName, params, context);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n\n // Check if this is a streaming method\n if (instrumentedMethod.streaming) {\n // Use startSpanManual for streaming methods to control span lifecycle\n return startSpanManual(\n {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes,\n },\n async (span: Span) => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params, isEmbeddings);\n }\n const stream = await target.apply(context, args);\n return instrumentStream(stream, span, Boolean(options.recordOutputs)) as R;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.google_genai',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n },\n );\n }\n // Single span for both sync and async operations\n return startSpan(\n {\n name: isSyncCreate ? `${operationName} ${model} create` : `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes,\n },\n (span: Span) => {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params, isEmbeddings);\n }\n\n return handleCallbackErrors(\n () => target.apply(context, args),\n error => {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.google_genai', data: { function: methodPath } },\n });\n },\n () => {},\n result => {\n // Only add response attributes for content-producing methods, not for chats.create or embeddings\n if (!isSyncCreate && !isEmbeddings) {\n addResponseAttributes(span, result, options.recordOutputs);\n }\n },\n );\n },\n );\n },\n }) as (...args: T) => R | Promise;\n}\n\n/**\n * Create a deep proxy for Google GenAI client instrumentation\n * Recursively instruments methods and handles special cases like chats.create\n */\nfunction createDeepProxy(target: T, currentPath = '', options: GoogleGenAIOptions): T {\n return new Proxy(target, {\n get: (t, prop, receiver) => {\n const value = Reflect.get(t, prop, receiver);\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = GOOGLE_GENAI_METHOD_REGISTRY[methodPath as keyof typeof GOOGLE_GENAI_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n // Special case: chats.create is synchronous but needs both instrumentation AND result proxying\n if (methodPath === CHATS_CREATE_METHOD) {\n const wrappedMethod = instrumentMethod(\n value as (...args: unknown[]) => unknown,\n methodPath,\n instrumentedMethod,\n t,\n options,\n );\n return function instrumentedAndProxiedCreate(...args: unknown[]): unknown {\n const result = wrappedMethod(...args);\n // If the result is an object (like a chat instance), proxy it too\n if (result && typeof result === 'object') {\n return createDeepProxy(result, CHAT_PATH, options);\n }\n return result;\n };\n }\n\n return instrumentMethod(\n value as (...args: unknown[]) => Promise,\n methodPath,\n instrumentedMethod,\n t,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context\n return value.bind(t);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n });\n}\n\n/**\n * Instrument a Google GenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends client object\n * @param client - The Google GenAI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n *\n * @example\n * ```typescript\n * import { GoogleGenAI } from '@google/genai';\n * import { instrumentGoogleGenAIClient } from '@sentry/core';\n *\n * const genAI = new GoogleGenAI({ apiKey: process.env.GOOGLE_GENAI_API_KEY });\n * const instrumentedClient = instrumentGoogleGenAIClient(genAI);\n *\n * // Now both chats.create and sendMessage will be instrumented\n * const chat = instrumentedClient.chats.create({ model: 'gemini-1.5-pro' });\n * const response = await chat.sendMessage({ message: 'Hello' });\n * ```\n */\nexport function instrumentGoogleGenAIClient(client: T, options?: GoogleGenAIOptions): T {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n","export const LANGCHAIN_INTEGRATION_NAME = 'LangChain';\nexport const LANGCHAIN_ORIGIN = 'auto.ai.langchain';\n\nexport const ROLE_MAP: Record = {\n human: 'user',\n ai: 'assistant',\n assistant: 'assistant',\n system: 'system',\n function: 'function',\n tool: 'tool',\n};\n","import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { isContentMedia, stripInlineMediaFromSingleMessage } from '../ai/mediaStripping';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions } from '../ai/utils';\nimport { LANGCHAIN_ORIGIN, ROLE_MAP } from './constants';\nimport type { LangChainLLMResult, LangChainMessage, LangChainSerialized } from './types';\n\n/**\n * Assigns an attribute only when the value is neither `undefined` nor `null`.\n *\n * We keep this tiny helper because call sites are repetitive and easy to miswrite.\n * It also preserves falsy-but-valid values like `0` and `\"\"`.\n */\nconst setIfDefined = (target: Record, key: string, value: unknown): void => {\n if (value != null) target[key] = value as SpanAttributeValue;\n};\n\n/**\n * Like `setIfDefined`, but converts the value with `Number()` and skips only when the\n * result is `NaN`. This ensures numeric 0 makes it through (unlike truthy checks).\n */\nconst setNumberIfDefined = (target: Record, key: string, value: unknown): void => {\n const n = Number(value);\n if (!Number.isNaN(n)) target[key] = n;\n};\n\n/**\n * Converts a value to a string. Avoids double-quoted JSON strings where a plain\n * string is desired, but still handles objects/arrays safely.\n */\nfunction asString(v: unknown): string {\n if (typeof v === 'string') return v;\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\n/**\n * Converts message content to a string, stripping inline media (base64 images, audio, etc.)\n * from multimodal content before stringification so downstream media stripping can't miss it.\n *\n * @example\n * // String content passes through unchanged:\n * normalizeContent(\"Hello\") // => \"Hello\"\n *\n * // Multimodal array content — media is replaced with \"[Blob substitute]\" before JSON.stringify:\n * normalizeContent([\n * { type: \"text\", text: \"What color?\" },\n * { type: \"image_url\", image_url: { url: \"data:image/png;base64,iVBOR...\" } }\n * ])\n * // => '[{\"type\":\"text\",\"text\":\"What color?\"},{\"type\":\"image_url\",\"image_url\":{\"url\":\"[Blob substitute]\"}}]'\n *\n * // Without this, asString() would JSON.stringify the raw array and the base64 blob\n * // would end up in span attributes, since downstream stripping only works on objects.\n */\nfunction normalizeContent(v: unknown): string {\n if (Array.isArray(v)) {\n try {\n const stripped = v.map(part =>\n part && typeof part === 'object' && isContentMedia(part) ? stripInlineMediaFromSingleMessage(part) : part,\n );\n return JSON.stringify(stripped);\n } catch {\n return String(v);\n }\n }\n return asString(v);\n}\n\n/**\n * Normalizes a single role token to our canonical set.\n *\n * @param role Incoming role value (free-form, any casing)\n * @returns Canonical role: 'user' | 'assistant' | 'system' | 'function' | 'tool' | \n */\nfunction normalizeMessageRole(role: string): string {\n const normalized = role.toLowerCase();\n return ROLE_MAP[normalized] ?? normalized;\n}\n\n/**\n * Infers a role from a LangChain message constructor name.\n *\n * Checks for substrings like \"System\", \"Human\", \"AI\", etc.\n */\nfunction normalizeRoleNameFromCtor(name: string): string {\n if (name.includes('System')) return 'system';\n if (name.includes('Human')) return 'user';\n if (name.includes('AI') || name.includes('Assistant')) return 'assistant';\n if (name.includes('Function')) return 'function';\n if (name.includes('Tool')) return 'tool';\n return 'user';\n}\n\n/**\n * Returns invocation params from a LangChain `tags` object.\n *\n * LangChain often passes runtime parameters (model, temperature, etc.) via the\n * `tags.invocation_params` bag. If `tags` is an array (LangChain sometimes uses\n * string tags), we return `undefined`.\n *\n * @param tags LangChain tags (string[] or record)\n * @returns The `invocation_params` object, if present\n */\nexport function getInvocationParams(tags?: string[] | Record): Record | undefined {\n if (!tags || Array.isArray(tags)) return undefined;\n return tags.invocation_params as Record | undefined;\n}\n\n/**\n * Normalizes a heterogeneous set of LangChain messages to `{ role, content }`.\n *\n * Why so many branches? LangChain messages can arrive in several shapes:\n * - Message classes with `_getType()` (most reliable)\n * - Classes with meaningful constructor names (e.g. `SystemMessage`)\n * - Plain objects with `type`, or `{ role, content }`\n * - Serialized format with `{ lc: 1, id: [...], kwargs: { content } }`\n * We preserve the prioritization to minimize behavioral drift.\n *\n * @param messages Mixed LangChain messages\n * @returns Array of normalized `{ role, content }`\n */\nexport function normalizeLangChainMessages(messages: LangChainMessage[]): Array<{ role: string; content: string }> {\n return messages.map(message => {\n // 1) Prefer _getType() when present\n const maybeGetType = (message as { _getType?: () => string })._getType;\n if (typeof maybeGetType === 'function') {\n const messageType = maybeGetType.call(message);\n return {\n role: normalizeMessageRole(messageType),\n content: normalizeContent(message.content),\n };\n }\n\n // 2) Serialized LangChain format (lc: 1) - check before constructor name\n // This is more reliable than constructor.name which can be lost during serialization\n if (message.lc === 1 && message.kwargs) {\n const id = message.id;\n const messageType = Array.isArray(id) && id.length > 0 ? id[id.length - 1] : '';\n const role = typeof messageType === 'string' ? normalizeRoleNameFromCtor(messageType) : 'user';\n\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.kwargs?.content),\n };\n }\n\n // 3) Then objects with `type`\n if (message.type) {\n const role = String(message.type).toLowerCase();\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.content),\n };\n }\n\n // 4) Then objects with `{ role, content }` - check before constructor name\n // Plain objects have constructor.name=\"Object\" which would incorrectly default to \"user\"\n if (message.role) {\n return {\n role: normalizeMessageRole(String(message.role)),\n content: normalizeContent(message.content),\n };\n }\n\n // 5) Then try constructor name (SystemMessage / HumanMessage / ...)\n // Only use this if we haven't matched a more specific case\n const ctor = (message as { constructor?: { name?: string } }).constructor?.name;\n if (ctor && ctor !== 'Object') {\n return {\n role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)),\n content: normalizeContent(message.content),\n };\n }\n\n // 6) Fallback: treat as user text\n return {\n role: 'user',\n content: normalizeContent(message.content),\n };\n });\n}\n\n/**\n * Extracts request attributes common to both LLM and ChatModel invocations.\n *\n * Source precedence:\n * 1) `invocationParams` (highest)\n * 2) `langSmithMetadata`\n *\n * Numeric values are set even when 0 (e.g. `temperature: 0`), but skipped if `NaN`.\n */\nfunction extractCommonRequestAttributes(\n serialized: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const attrs: Record = {};\n\n // Get kwargs if available (from constructor type)\n const kwargs = 'kwargs' in serialized ? serialized.kwargs : undefined;\n\n const temperature = invocationParams?.temperature ?? langSmithMetadata?.ls_temperature ?? kwargs?.temperature;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, temperature);\n\n const maxTokens = invocationParams?.max_tokens ?? langSmithMetadata?.ls_max_tokens ?? kwargs?.max_tokens;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, maxTokens);\n\n const topP = invocationParams?.top_p ?? kwargs?.top_p;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, topP);\n\n const frequencyPenalty = invocationParams?.frequency_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, frequencyPenalty);\n\n const presencePenalty = invocationParams?.presence_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, presencePenalty);\n\n // LangChain uses `stream`. We only set the attribute if the key actually exists\n // (some callbacks report `false` even on streamed requests, this stems from LangChain's callback handler).\n if (invocationParams && 'stream' in invocationParams) {\n setIfDefined(attrs, GEN_AI_REQUEST_STREAM_ATTRIBUTE, Boolean(invocationParams.stream));\n }\n\n return attrs;\n}\n\n/**\n * Small helper to assemble boilerplate attributes shared by both request extractors.\n * Always uses 'chat' as the operation type for all LLM and chat model operations.\n */\nfunction baseRequestAttributes(\n system: unknown,\n modelName: unknown,\n serialized: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n return {\n [GEN_AI_SYSTEM_ATTRIBUTE]: asString(system ?? 'langchain'),\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'chat',\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: asString(modelName),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n ...extractCommonRequestAttributes(serialized, invocationParams, langSmithMetadata),\n };\n}\n\n/**\n * Extracts attributes for plain LLM invocations (string prompts).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain LLM operations are treated as chat operations.\n * - When `recordInputs` is true, string prompts are wrapped into `{role:\"user\"}`\n * messages to align with the chat schema used elsewhere.\n */\nexport function extractLLMRequestAttributes(\n llm: LangChainSerialized,\n prompts: string[],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const system = langSmithMetadata?.ls_provider;\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(prompts) && prompts.length > 0) {\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, prompts.length);\n const messages = prompts.map(p => ({ role: 'user', content: p }));\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(messages));\n }\n\n return attrs;\n}\n\n/**\n * Extracts attributes for ChatModel invocations (array-of-arrays of messages).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain chat model operations are chat operations.\n * - We flatten LangChain's `LangChainMessage[][]` and normalize shapes into a\n * consistent `{ role, content }` array when `recordInputs` is true.\n * - Provider system value falls back to `serialized.id?.[2]`.\n */\nexport function extractChatModelRequestAttributes(\n llm: LangChainSerialized,\n langChainMessages: LangChainMessage[][],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const system = langSmithMetadata?.ls_provider ?? llm.id?.[2];\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(langChainMessages) && langChainMessages.length > 0) {\n const normalized = normalizeLangChainMessages(langChainMessages.flat());\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalized);\n\n if (systemInstructions) {\n setIfDefined(attrs, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredLength);\n\n const truncated = truncateGenAiMessages(filteredMessages as unknown[]);\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(truncated));\n }\n\n return attrs;\n}\n\n/**\n * Scans generations for Anthropic-style `tool_use` items and records them.\n *\n * LangChain represents some provider messages (e.g., Anthropic) with a `message.content`\n * array that may include objects `{ type: 'tool_use', ... }`. We collect and attach\n * them as a JSON array on `gen_ai.response.tool_calls` for downstream consumers.\n */\nfunction addToolCallsAttributes(generations: LangChainMessage[][], attrs: Record): void {\n const toolCalls: unknown[] = [];\n const flatGenerations = generations.flat();\n\n for (const gen of flatGenerations) {\n const content = gen.message?.content;\n if (Array.isArray(content)) {\n for (const item of content) {\n const t = item as { type: string };\n if (t.type === 'tool_use') toolCalls.push(t);\n }\n }\n }\n\n if (toolCalls.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, asString(toolCalls));\n }\n}\n\n/**\n * Adds token usage attributes, supporting both OpenAI (`tokenUsage`) and Anthropic (`usage`) formats.\n * - Preserve zero values (0 tokens) by avoiding truthy checks.\n * - Compute a total for Anthropic when not explicitly provided.\n * - Include cache token metrics when present.\n */\nfunction addTokenUsageAttributes(\n llmOutput: LangChainLLMResult['llmOutput'],\n attrs: Record,\n): void {\n if (!llmOutput) return;\n\n const tokenUsage = llmOutput.tokenUsage as\n | { promptTokens?: number; completionTokens?: number; totalTokens?: number }\n | undefined;\n const anthropicUsage = llmOutput.usage as\n | {\n input_tokens?: number;\n output_tokens?: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n }\n | undefined;\n\n if (tokenUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, tokenUsage.promptTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, tokenUsage.completionTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, tokenUsage.totalTokens);\n } else if (anthropicUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.input_tokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, anthropicUsage.output_tokens);\n\n // Compute total when not provided by the provider.\n const input = Number(anthropicUsage.input_tokens);\n const output = Number(anthropicUsage.output_tokens);\n const total = (Number.isNaN(input) ? 0 : input) + (Number.isNaN(output) ? 0 : output);\n if (total > 0) setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, total);\n\n // Extra Anthropic cache metrics (present only when caching is enabled)\n if (anthropicUsage.cache_creation_input_tokens !== undefined)\n setNumberIfDefined(\n attrs,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n anthropicUsage.cache_creation_input_tokens,\n );\n if (anthropicUsage.cache_read_input_tokens !== undefined)\n setNumberIfDefined(attrs, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.cache_read_input_tokens);\n }\n}\n\n/**\n * Extracts response-related attributes based on a `LangChainLLMResult`.\n *\n * - Records finish reasons when present on generations (e.g., OpenAI)\n * - When `recordOutputs` is true, captures textual response content and any\n * tool calls.\n * - Also propagates model name (`model_name` or `model`), response `id`, and\n * `stop_reason` (for providers that use it).\n */\nexport function extractLlmResponseAttributes(\n llmResult: LangChainLLMResult,\n recordOutputs: boolean,\n): Record | undefined {\n if (!llmResult) return;\n\n const attrs: Record = {};\n\n if (Array.isArray(llmResult.generations)) {\n const finishReasons = llmResult.generations\n .flat()\n .map(g => {\n // v1 uses generationInfo.finish_reason\n if (g.generationInfo?.finish_reason) {\n return g.generationInfo.finish_reason;\n }\n // v0.3+ uses generation_info.finish_reason\n if (g.generation_info?.finish_reason) {\n return g.generation_info.finish_reason;\n }\n return null;\n })\n .filter((r): r is string => typeof r === 'string');\n\n if (finishReasons.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, asString(finishReasons));\n }\n\n // Tool calls metadata (names, IDs) are not PII, so capture them regardless of recordOutputs\n addToolCallsAttributes(llmResult.generations as LangChainMessage[][], attrs);\n\n if (recordOutputs) {\n const texts = llmResult.generations\n .flat()\n .map(gen => gen.text ?? gen.message?.content)\n .filter(t => typeof t === 'string');\n\n if (texts.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, asString(texts));\n }\n }\n }\n\n addTokenUsageAttributes(llmResult.llmOutput, attrs);\n\n const llmOutput = llmResult.llmOutput;\n\n // Extract from v1 generations structure if available\n const firstGeneration = llmResult.generations?.[0]?.[0];\n const v1Message = firstGeneration?.message;\n\n // Provider model identifier: `model_name` (OpenAI-style) or `model` (others)\n // v1 stores this in message.response_metadata.model_name\n const modelName = llmOutput?.model_name ?? llmOutput?.model ?? v1Message?.response_metadata?.model_name;\n if (modelName) setIfDefined(attrs, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, modelName);\n\n // Response ID: v1 stores this in message.id\n const responseId = llmOutput?.id ?? v1Message?.id;\n if (responseId) {\n setIfDefined(attrs, GEN_AI_RESPONSE_ID_ATTRIBUTE, responseId);\n }\n\n // Stop reason: v1 stores this in message.response_metadata.finish_reason\n const stopReason = llmOutput?.stop_reason ?? v1Message?.response_metadata?.finish_reason;\n if (stopReason) {\n setIfDefined(attrs, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, asString(stopReason));\n }\n\n return attrs;\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { resolveAIRecordingOptions } from '../ai/utils';\nimport { LANGCHAIN_ORIGIN } from './constants';\nimport type {\n LangChainCallbackHandler,\n LangChainLLMResult,\n LangChainMessage,\n LangChainOptions,\n LangChainSerialized,\n} from './types';\nimport {\n extractChatModelRequestAttributes,\n extractLLMRequestAttributes,\n extractLlmResponseAttributes,\n getInvocationParams,\n} from './utils';\n\n/**\n * Creates a Sentry callback handler for LangChain\n * Returns a plain object that LangChain will call via duck-typing\n *\n * This is a stateful handler that tracks spans across multiple LangChain executions.\n */\nexport function createLangChainCallbackHandler(options: LangChainOptions = {}): LangChainCallbackHandler {\n const { recordInputs, recordOutputs } = resolveAIRecordingOptions(options);\n\n // Internal state - single instance tracks all spans\n const spanMap = new Map();\n\n /**\n * Exit a span and clean up\n */\n const exitSpan = (runId: string): void => {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.end();\n spanMap.delete(runId);\n }\n };\n\n /**\n * Handler for LLM Start\n * This handler will be called by LangChain's callback handler when an LLM event is detected.\n */\n const handler: LangChainCallbackHandler = {\n // Required LangChain BaseCallbackHandler properties\n lc_serializable: false,\n lc_namespace: ['langchain_core', 'callbacks', 'sentry'],\n lc_secrets: undefined,\n lc_attributes: undefined,\n lc_aliases: undefined,\n lc_serializable_keys: undefined,\n lc_id: ['langchain_core', 'callbacks', 'sentry'],\n lc_kwargs: {},\n name: 'SentryCallbackHandler',\n\n // BaseCallbackHandlerInput boolean flags\n ignoreLLM: false,\n ignoreChain: false,\n ignoreAgent: false,\n ignoreRetriever: false,\n ignoreCustomEvent: false,\n raiseError: false,\n awaitHandlers: true,\n\n handleLLMStart(\n llm: unknown,\n prompts: string[],\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractLLMRequestAttributes(\n llm as LangChainSerialized,\n prompts,\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chat Model Start Handler\n handleChatModelStart(\n llm: unknown,\n messages: unknown,\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractChatModelRequestAttributes(\n llm as LangChainSerialized,\n messages as LangChainMessage[][],\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // LLM End Handler - note: handleLLMEnd with capital LLM (used by both LLMs and chat models!)\n handleLLMEnd(\n output: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _extraParams?: Record,\n ) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n const attributes = extractLlmResponseAttributes(output as LangChainLLMResult, recordOutputs);\n if (attributes) {\n span.setAttributes(attributes);\n }\n exitSpan(runId);\n }\n },\n\n // LLM Error Handler - note: handleLLMError with capital LLM\n handleLLMError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.llm_error_handler`,\n },\n });\n },\n\n // Chain Start Handler\n handleChainStart(\n chain: { name?: string },\n inputs: Record,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _metadata?: Record,\n _runType?: string,\n runName?: string,\n ) {\n const chainName = runName || chain.name || 'unknown_chain';\n const attributes: Record = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',\n 'langchain.chain.name': chainName,\n };\n\n // Add inputs if recordInputs is enabled\n if (recordInputs) {\n attributes['langchain.chain.inputs'] = JSON.stringify(inputs);\n }\n\n startSpanManual(\n {\n name: `chain ${chainName}`,\n op: 'gen_ai.invoke_agent',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.invoke_agent',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chain End Handler\n handleChainEnd(outputs: unknown, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add outputs if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n 'langchain.chain.outputs': JSON.stringify(outputs),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Chain Error Handler\n handleChainError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.chain_error_handler`,\n },\n });\n },\n\n // Tool Start Handler\n handleToolStart(tool: { name?: string }, input: string, runId: string, _parentRunId?: string) {\n const toolName = tool.name || 'unknown_tool';\n const attributes: Record = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n [GEN_AI_TOOL_NAME_ATTRIBUTE]: toolName,\n };\n\n // Add input if recordInputs is enabled\n if (recordInputs) {\n attributes[GEN_AI_TOOL_INPUT_ATTRIBUTE] = input;\n }\n\n startSpanManual(\n {\n name: `execute_tool ${toolName}`,\n op: 'gen_ai.execute_tool',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.execute_tool',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Tool End Handler\n handleToolEnd(output: unknown, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add output if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n [GEN_AI_TOOL_OUTPUT_ATTRIBUTE]: JSON.stringify(output),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Tool Error Handler\n handleToolError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.tool_error_handler`,\n },\n });\n },\n\n // LangChain BaseCallbackHandler required methods\n copy() {\n return handler;\n },\n\n toJSON() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n\n toJSONNotImplemented() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n };\n\n return handler;\n}\n","export const LANGGRAPH_INTEGRATION_NAME = 'LangGraph';\nexport const LANGGRAPH_ORIGIN = 'auto.ai.langgraph';\n","import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport type { CompiledGraph, LangGraphTool } from './types';\n\n/**\n * Extract tool calls from messages\n */\nexport function extractToolCalls(messages: Array> | null): unknown[] | null {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const toolCalls: unknown[] = [];\n\n for (const message of messages) {\n if (message && typeof message === 'object') {\n const msgToolCalls = message.tool_calls;\n if (msgToolCalls && Array.isArray(msgToolCalls)) {\n toolCalls.push(...msgToolCalls);\n }\n }\n }\n\n return toolCalls.length > 0 ? toolCalls : null;\n}\n\n/**\n * Extract token usage from a message's usage_metadata or response_metadata\n * Returns token counts without setting span attributes\n */\nexport function extractTokenUsageFromMessage(message: LangChainMessage): {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n} {\n const msg = message as Record;\n let inputTokens = 0;\n let outputTokens = 0;\n let totalTokens = 0;\n\n // Extract from usage_metadata (newer format)\n if (msg.usage_metadata && typeof msg.usage_metadata === 'object') {\n const usage = msg.usage_metadata as Record;\n if (typeof usage.input_tokens === 'number') {\n inputTokens = usage.input_tokens;\n }\n if (typeof usage.output_tokens === 'number') {\n outputTokens = usage.output_tokens;\n }\n if (typeof usage.total_tokens === 'number') {\n totalTokens = usage.total_tokens;\n }\n return { inputTokens, outputTokens, totalTokens };\n }\n\n // Fallback: Extract from response_metadata.tokenUsage\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata as Record;\n if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') {\n const tokenUsage = metadata.tokenUsage as Record;\n if (typeof tokenUsage.promptTokens === 'number') {\n inputTokens = tokenUsage.promptTokens;\n }\n if (typeof tokenUsage.completionTokens === 'number') {\n outputTokens = tokenUsage.completionTokens;\n }\n if (typeof tokenUsage.totalTokens === 'number') {\n totalTokens = tokenUsage.totalTokens;\n }\n }\n }\n\n return { inputTokens, outputTokens, totalTokens };\n}\n\n/**\n * Extract model and finish reason from a message's response_metadata\n */\nexport function extractModelMetadata(span: Span, message: LangChainMessage): void {\n const msg = message as Record;\n\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata as Record;\n\n if (metadata.model_name && typeof metadata.model_name === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, metadata.model_name);\n }\n\n if (metadata.finish_reason && typeof metadata.finish_reason === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, [metadata.finish_reason]);\n }\n }\n}\n\n/**\n * Extract tools from compiled graph structure\n *\n * Tools are stored in: compiledGraph.builder.nodes.tools.runnable.tools\n */\nexport function extractToolsFromCompiledGraph(compiledGraph: CompiledGraph): unknown[] | null {\n if (!compiledGraph.builder?.nodes?.tools?.runnable?.tools) {\n return null;\n }\n\n const tools = compiledGraph.builder?.nodes?.tools?.runnable?.tools;\n\n if (!tools || !Array.isArray(tools) || tools.length === 0) {\n return null;\n }\n\n // Extract name, description, and schema from each tool's lc_kwargs\n return tools.map((tool: LangGraphTool) => ({\n name: tool.lc_kwargs?.name,\n description: tool.lc_kwargs?.description,\n schema: tool.lc_kwargs?.schema,\n }));\n}\n\n/**\n * Set response attributes on the span\n */\nexport function setResponseAttributes(span: Span, inputMessages: LangChainMessage[] | null, result: unknown): void {\n // Extract messages from result\n const resultObj = result as { messages?: LangChainMessage[] } | undefined;\n const outputMessages = resultObj?.messages;\n\n if (!outputMessages || !Array.isArray(outputMessages)) {\n return;\n }\n\n // Get new messages (delta between input and output)\n const inputCount = inputMessages?.length ?? 0;\n const newMessages = outputMessages.length > inputCount ? outputMessages.slice(inputCount) : [];\n\n if (newMessages.length === 0) {\n return;\n }\n\n // Extract and set tool calls from new messages BEFORE normalization\n // (normalization strips tool_calls, so we need to extract them first)\n const toolCalls = extractToolCalls(newMessages as Array>);\n if (toolCalls) {\n span.setAttribute(GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, JSON.stringify(toolCalls));\n }\n\n // Normalize the new messages\n const normalizedNewMessages = normalizeLangChainMessages(newMessages);\n span.setAttribute(GEN_AI_RESPONSE_TEXT_ATTRIBUTE, JSON.stringify(normalizedNewMessages));\n\n // Accumulate token usage across all messages\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalTokens = 0;\n\n // Extract metadata from messages\n for (const message of newMessages) {\n // Accumulate token usage\n const tokens = extractTokenUsageFromMessage(message);\n totalInputTokens += tokens.inputTokens;\n totalOutputTokens += tokens.outputTokens;\n totalTokens += tokens.totalTokens;\n\n // Extract model metadata (last message's metadata wins for model/finish_reason)\n extractModelMetadata(span, message);\n }\n\n // Set accumulated token usage on span\n if (totalInputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, totalInputTokens);\n }\n if (totalOutputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, totalOutputTokens);\n }\n if (totalTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, totalTokens);\n }\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport {\n GEN_AI_AGENT_NAME_ATTRIBUTE,\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PIPELINE_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions, resolveAIRecordingOptions } from '../ai/utils';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport { startSpan } from '../trace';\nimport { LANGGRAPH_ORIGIN } from './constants';\nimport type { CompiledGraph, LangGraphOptions } from './types';\nimport { extractToolsFromCompiledGraph, setResponseAttributes } from './utils';\n\n/**\n * Instruments StateGraph's compile method to create spans for agent creation and invocation\n *\n * Wraps the compile() method to:\n * - Create a `gen_ai.create_agent` span when compile() is called\n * - Automatically wrap the invoke() method on the returned compiled graph with a `gen_ai.invoke_agent` span\n *\n */\nexport function instrumentStateGraphCompile(\n originalCompile: (...args: unknown[]) => CompiledGraph,\n options: LangGraphOptions,\n): (...args: unknown[]) => CompiledGraph {\n return new Proxy(originalCompile, {\n apply(target, thisArg, args: unknown[]): CompiledGraph {\n return startSpan(\n {\n op: 'gen_ai.create_agent',\n name: 'create_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.create_agent',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'create_agent',\n },\n },\n span => {\n try {\n const compiledGraph = Reflect.apply(target, thisArg, args);\n const compileOptions = args.length > 0 ? (args[0] as Record) : {};\n\n // Extract graph name\n if (compileOptions?.name && typeof compileOptions.name === 'string') {\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, compileOptions.name);\n span.updateName(`create_agent ${compileOptions.name}`);\n }\n\n // Instrument agent invoke method on the compiled graph\n const originalInvoke = compiledGraph.invoke;\n if (originalInvoke && typeof originalInvoke === 'function') {\n compiledGraph.invoke = instrumentCompiledGraphInvoke(\n originalInvoke.bind(compiledGraph) as (...args: unknown[]) => Promise,\n compiledGraph,\n compileOptions,\n options,\n ) as typeof originalInvoke;\n }\n\n return compiledGraph;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) as (...args: unknown[]) => CompiledGraph;\n}\n\n/**\n * Instruments CompiledGraph's invoke method to create spans for agent invocation\n *\n * Creates a `gen_ai.invoke_agent` span when invoke() is called\n */\nfunction instrumentCompiledGraphInvoke(\n originalInvoke: (...args: unknown[]) => Promise,\n graphInstance: CompiledGraph,\n compileOptions: Record,\n options: LangGraphOptions,\n): (...args: unknown[]) => Promise {\n return new Proxy(originalInvoke, {\n apply(target, thisArg, args: unknown[]): Promise {\n return startSpan(\n {\n op: 'gen_ai.invoke_agent',\n name: 'invoke_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'invoke_agent',\n },\n },\n async span => {\n try {\n const graphName = compileOptions?.name;\n\n if (graphName && typeof graphName === 'string') {\n span.setAttribute(GEN_AI_PIPELINE_NAME_ATTRIBUTE, graphName);\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, graphName);\n span.updateName(`invoke_agent ${graphName}`);\n }\n\n // Extract thread_id from the config (second argument)\n // LangGraph uses config.configurable.thread_id for conversation/session linking\n const config = args.length > 1 ? (args[1] as Record | undefined) : undefined;\n const configurable = config?.configurable as Record | undefined;\n const threadId = configurable?.thread_id;\n if (threadId && typeof threadId === 'string') {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, threadId);\n }\n\n // Extract available tools from the graph instance\n const tools = extractToolsFromCompiledGraph(graphInstance);\n if (tools) {\n span.setAttribute(GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, JSON.stringify(tools));\n }\n\n // Parse input messages\n const recordInputs = options.recordInputs;\n const recordOutputs = options.recordOutputs;\n const inputMessages =\n args.length > 0 ? ((args[0] as { messages?: LangChainMessage[] } | null)?.messages ?? []) : [];\n\n if (inputMessages && recordInputs) {\n const normalizedMessages = normalizeLangChainMessages(inputMessages);\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalizedMessages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedMessages = truncateGenAiMessages(filteredMessages as unknown[]);\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncatedMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n\n // Call original invoke\n const result = await Reflect.apply(target, thisArg, args);\n\n // Set response attributes\n if (recordOutputs) {\n setResponseAttributes(span, inputMessages ?? null, result);\n }\n\n return result;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) as (...args: unknown[]) => Promise;\n}\n\n/**\n * Directly instruments a StateGraph instance to add tracing spans\n *\n * This function can be used to manually instrument LangGraph StateGraph instances\n * in environments where automatic instrumentation is not available or desired.\n *\n * @param stateGraph - The StateGraph instance to instrument\n * @param options - Optional configuration for recording inputs/outputs\n *\n * @example\n * ```typescript\n * import { instrumentLangGraph } from '@sentry/cloudflare';\n * import { StateGraph } from '@langchain/langgraph';\n *\n * const graph = new StateGraph(MessagesAnnotation)\n * .addNode('agent', mockLlm)\n * .addEdge(START, 'agent')\n * .addEdge('agent', END);\n *\n * instrumentLangGraph(graph, { recordInputs: true, recordOutputs: true });\n * const compiled = graph.compile({ name: 'my_agent' });\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function instrumentLangGraph any }>(\n stateGraph: T,\n options?: LangGraphOptions,\n): T {\n stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile, resolveAIRecordingOptions(options));\n\n return stateGraph;\n}\n","import type { SeverityLevel } from '../types-hoist/severity';\n\n/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nexport function getBreadcrumbLogLevelFromHttpStatusCode(statusCode: number | undefined): SeverityLevel | undefined {\n // NOTE: undefined defaults to 'info' in Sentry\n if (statusCode === undefined) {\n return undefined;\n } else if (statusCode >= 400 && statusCode < 500) {\n return 'warning';\n } else if (statusCode >= 500) {\n return 'error';\n } else {\n return undefined;\n }\n}\n","import type { ConsoleLevel } from '../types-hoist/instrument';\n\n/**\n * An error emitted by Sentry SDKs and related utilities.\n * @deprecated This class is no longer used and will be removed in a future version. Use `Error` instead.\n */\nexport class SentryError extends Error {\n public logLevel: ConsoleLevel;\n\n public constructor(\n public message: string,\n logLevel: ConsoleLevel = 'warn',\n ) {\n super(message);\n\n this.logLevel = logLevel;\n }\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from './debug-logger';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\ndeclare const EdgeRuntime: string | undefined;\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch {\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 */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch {\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 */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch {\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 */\nexport function supportsHistory(): boolean {\n return 'history' in WINDOW && !!WINDOW.history;\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport const supportsFetch = _isFetchSupported;\n\nfunction _isFetchSupported(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n // Deno requires a valid URL so '' cannot be used as an argument\n new Request('data:,');\n new Response();\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * isNative checks if the given function is a native implementation\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFunction(func: Function): boolean {\n return func && /^function\\s+\\w+\\(\\)\\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 */\nexport function supportsNativeFetch(): boolean {\n if (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!_isFetchSupported()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFunction(WINDOW.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 const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow?.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFunction(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n DEBUG_BUILD && debug.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 */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport function supportsReferrerPolicy(): boolean {\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 (!_isFetchSupported()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch {\n return false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getClient } from '../currentScopes';\nimport type { HandlerDataFetch } from '../types-hoist/instrument';\nimport type { WebFetchHeaders } from '../types-hoist/webfetchapi';\nimport { isError, isRequest } from '../utils/is';\nimport { addNonEnumerableProperty, fill } from '../utils/object';\nimport { supportsNativeFetch } from '../utils/supports';\nimport { timestampInSeconds } from '../utils/time';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(\n handler: (data: HandlerDataFetch) => void,\n skipNativeFetchCheck?: boolean,\n): void {\n const type = 'fetch';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck));\n}\n\n/**\n * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch.\n * The handler will resolve the request body and emit the actual `endTimestamp`, so that the\n * span can be updated accordingly.\n *\n * Only used internally\n * @hidden\n */\nexport function addFetchEndInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n const type = 'fetch-body-resolved';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(streamHandler));\n}\n\nfunction instrumentFetch(onFetchResolved?: (response: Response) => void, skipNativeFetchCheck: boolean = false): void {\n if (skipNativeFetchCheck && !supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n // We capture the error right here and not in the Promise error callback because Safari (and probably other\n // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless.\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n const virtualError = new Error();\n\n const { method, url } = parseFetchArgs(args);\n const handlerData: HandlerDataFetch = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: timestampInSeconds() * 1000,\n // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation\n virtualError,\n headers: getHeadersFromFetchArgs(args),\n };\n\n // if there is no callback, fetch is instrumented directly\n if (!onFetchResolved) {\n triggerHandlers('fetch', {\n ...handlerData,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n async (response: Response) => {\n if (onFetchResolved) {\n onFetchResolved(response);\n } else {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n }\n\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n error,\n });\n\n if (isError(error) && error.stack === undefined) {\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n error.stack = virtualError.stack;\n addNonEnumerableProperty(error, 'framesToPop', 1);\n }\n\n // We enhance fetch error messages with hostname information based on the configuration.\n // Possible messages we handle here:\n // * \"Failed to fetch\" (chromium)\n // * \"Load failed\" (webkit)\n // * \"NetworkError when attempting to fetch resource.\" (firefox)\n const client = getClient();\n const enhanceOption = client?.getOptions().enhanceFetchErrorMessages ?? 'always';\n const shouldEnhance = enhanceOption !== false;\n\n if (\n shouldEnhance &&\n error instanceof TypeError &&\n (error.message === 'Failed to fetch' ||\n error.message === 'Load failed' ||\n error.message === 'NetworkError when attempting to fetch resource.')\n ) {\n try {\n const url = new URL(handlerData.fetchData.url);\n const hostname = url.host;\n\n if (enhanceOption === 'always') {\n // Modify the error message directly\n error.message = `${error.message} (${hostname})`;\n } else {\n // Store hostname as non-enumerable property for Sentry-only enhancement\n // This preserves the original error message for third-party packages\n addNonEnumerableProperty(error, '__sentry_fetch_url_host__', hostname);\n }\n } catch {\n // ignore it if errors happen here\n }\n }\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\nasync function resolveResponse(res: Response | undefined, onFinishedResolving: () => void): Promise {\n if (res?.body) {\n const body = res.body;\n const responseReader = body.getReader();\n\n // Define a maximum duration after which we just cancel\n const maxFetchDurationTimeout = setTimeout(\n () => {\n body.cancel().then(null, () => {\n // noop\n });\n },\n 90 * 1000, // 90s\n );\n\n let readingActive = true;\n while (readingActive) {\n let chunkTimeout;\n try {\n // abort reading if read op takes more than 5s\n chunkTimeout = setTimeout(() => {\n body.cancel().then(null, () => {\n // noop on error\n });\n }, 5000);\n\n // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()`\n const { done } = await responseReader.read();\n\n clearTimeout(chunkTimeout);\n\n if (done) {\n onFinishedResolving();\n readingActive = false;\n }\n } catch {\n readingActive = false;\n } finally {\n clearTimeout(chunkTimeout);\n }\n }\n\n clearTimeout(maxFetchDurationTimeout);\n\n responseReader.releaseLock();\n body.cancel().then(null, () => {\n // noop on error\n });\n }\n}\n\nfunction streamHandler(response: Response): void {\n // clone response for awaiting stream\n let clonedResponseForResolving: Response;\n try {\n clonedResponseForResolving = response.clone();\n } catch {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resolveResponse(clonedResponseForResolving, () => {\n triggerHandlers('fetch-body-resolved', {\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n });\n}\n\nfunction hasProp(obj: unknown, prop: T): obj is Record {\n return !!obj && typeof obj === 'object' && !!(obj as Record)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [resource, options] = fetchArgs as [FetchResource, object];\n\n return {\n url: getUrlFromResource(resource),\n method: hasProp(options, 'method')\n ? String(options.method).toUpperCase()\n : // Request object as first argument\n isRequest(resource) && hasProp(resource, 'method')\n ? String(resource.method).toUpperCase()\n : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg as FetchResource),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\nfunction getHeadersFromFetchArgs(fetchArgs: unknown[]): WebFetchHeaders | undefined {\n const [requestArgument, optionsArgument] = fetchArgs;\n\n try {\n if (\n typeof optionsArgument === 'object' &&\n optionsArgument !== null &&\n 'headers' in optionsArgument &&\n optionsArgument.headers\n ) {\n return new Headers(optionsArgument.headers as any);\n }\n\n if (isRequest(requestArgument)) {\n return new Headers(requestArgument.headers);\n }\n } catch {\n // noop\n }\n\n return;\n}\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 * `debug` 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 flags 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\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader' | 'aws-lambda-layer';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // This comment is used to identify this line in the CDN bundle build step and replace this with \"return 'cdn';\"\n /* __SENTRY_SDK_SOURCE__ */ return 'npm';\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 `debug` singleton, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\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 * @param existingModule module to use for requiring\n * @returns possibly required module\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function loadModule(moduleName: string, existingModule: any = module): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(existingModule, moduleName);\n } catch {\n // no-empty\n }\n\n if (!mod) {\n try {\n const { cwd } = dynamicRequire(existingModule, 'process');\n mod = dynamicRequire(existingModule, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch {\n // no-empty\n }\n }\n\n return mod;\n}\n","import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n const process = (GLOBAL_OBJ as typeof GLOBAL_OBJ & { process?: ElectronProcess }).process;\n return process?.type === 'renderer';\n}\n","/**\n * Replaces constructor functions in module exports, handling read-only properties,\n * and both default and named exports by wrapping them with the constructor.\n *\n * @param exports The module exports object to modify\n * @param exportName The name of the export to replace (e.g., 'GoogleGenAI', 'Anthropic', 'OpenAI')\n * @param wrappedConstructor The wrapped constructor function to replace the original with\n * @returns void\n */\nexport function replaceExports(\n exports: { [key: string]: unknown },\n exportName: string,\n wrappedConstructor: unknown,\n): void {\n const original = exports[exportName];\n\n if (typeof original !== 'function') {\n return;\n }\n\n // Replace the named export - handle read-only properties\n try {\n exports[exportName] = wrappedConstructor;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports, exportName, {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Replace the default export if it points to the original constructor\n if (exports.default === original) {\n try {\n exports.default = wrappedConstructor;\n } catch {\n Object.defineProperty(exports, 'default', {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n}\n","// This code was originally forked from https://github.com/felixge/node-stack-trace\n// Since then it has been highly modified to fit our needs.\n\n// Copyright (c) 2011 Felix Geisendörfer (felix@debuggable.com)//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions://\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.//\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport type { StackLineParser, StackLineParserFn } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath, UNKNOWN_FUNCTION } from './stacktrace';\n\nexport type GetModuleFn = (filename: string | undefined) => string | undefined;\n\n/**\n * Does this filename look like it's part of the app code?\n */\nexport function filenameIsInApp(filename: string, isNative: boolean = false): boolean {\n const isInternal =\n isNative ||\n (filename &&\n // It's not internal if it's an absolute linux path\n !filename.startsWith('/') &&\n // It's not internal if it's an absolute windows path\n !filename.match(/^[A-Z]:/) &&\n // It's not internal if the path is starting with a dot\n !filename.startsWith('.') &&\n // It's not internal if the frame has a protocol. In node, this is usually the case if the file got pre-processed with a bundler like webpack\n !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//)); // Schema from: https://stackoverflow.com/a/3641782\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\n return !isInternal && filename !== undefined && !filename.includes('node_modules/');\n}\n\n/** Node Stack line parser */\nexport function node(getModule?: GetModuleFn): StackLineParserFn {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n const DATA_URI_MATCH = /at (?:async )?(.+?) \\(data:(.*?),/;\n\n return (line: string) => {\n const dataUriMatch = line.match(DATA_URI_MATCH);\n if (dataUriMatch) {\n return {\n filename: ``,\n function: dataUriMatch[1],\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n\n if (lineMatch) {\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\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.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(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 || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n let filename = normalizeStackTracePath(lineMatch[2]);\n const isNative = lineMatch[5] === 'native';\n\n if (!filename && lineMatch[5] && !isNative) {\n filename = lineMatch[5];\n }\n\n const maybeDecodedFilename = filename ? _safeDecodeURI(filename) : undefined;\n return {\n filename: maybeDecodedFilename ?? filename,\n module: maybeDecodedFilename && getModule?.(maybeDecodedFilename),\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n };\n }\n\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n return undefined;\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/core 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 */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n\nfunction _parseIntOrUndefined(input: string | undefined): number | undefined {\n return parseInt(input || '', 10) || undefined;\n}\n\nfunction _safeDecodeURI(filename: string): string | undefined {\n try {\n return decodeURI(filename);\n } catch {\n return undefined;\n }\n}\n","import type { StackFrame } from '../types-hoist/stackframe';\nimport { filenameIsInApp } from './node-stack-trace';\nimport { UNKNOWN_FUNCTION } from './stacktrace';\n\ntype WatchdogReturn = {\n /** Resets the watchdog timer */\n poll: () => void;\n /** Enables or disables the watchdog timer */\n enabled: (state: boolean) => void;\n};\n\ntype CreateTimerImpl = () => { getTimeMs: () => number; reset: () => void };\n\n/**\n * A node.js watchdog timer\n * @param pollInterval The interval that we expect to get polled at\n * @param anrThreshold The threshold for when we consider ANR\n * @param callback The callback to call for ANR\n * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn}\n */\nexport function watchdogTimer(\n createTimer: CreateTimerImpl,\n pollInterval: number,\n anrThreshold: number,\n callback: () => void,\n): WatchdogReturn {\n const timer = createTimer();\n let triggered = false;\n let enabled = true;\n\n setInterval(() => {\n const diffMs = timer.getTimeMs();\n\n if (triggered === false && diffMs > pollInterval + anrThreshold) {\n triggered = true;\n if (enabled) {\n callback();\n }\n }\n\n if (diffMs < pollInterval + anrThreshold) {\n triggered = false;\n }\n }, 20);\n\n return {\n poll: () => {\n timer.reset();\n },\n enabled: (state: boolean) => {\n enabled = state;\n },\n };\n}\n\n// types copied from inspector.d.ts\ninterface Location {\n scriptId: string;\n lineNumber: number;\n columnNumber?: number;\n}\n\ninterface CallFrame {\n functionName: string;\n location: Location;\n url: string;\n}\n\n/**\n * Converts Debugger.CallFrame to Sentry StackFrame\n */\nexport function callFrameToStackFrame(\n frame: CallFrame,\n url: string | undefined,\n getModuleFromFilename: (filename: string | undefined) => string | undefined,\n): StackFrame {\n const filename = url ? url.replace(/^file:\\/\\//, '') : undefined;\n\n // CallFrame row/col are 0 based, whereas StackFrame are 1 based\n const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined;\n const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined;\n\n return {\n filename,\n module: getModuleFromFilename(filename),\n function: frame.functionName || UNKNOWN_FUNCTION,\n colno,\n lineno,\n in_app: filename ? filenameIsInApp(filename) : undefined,\n };\n}\n","/** A simple Least Recently Used map */\nexport class LRUMap {\n private readonly _cache: Map;\n\n public constructor(private readonly _maxSize: number) {\n this._cache = new Map();\n }\n\n /** Get the current size of the cache */\n public get size(): number {\n return this._cache.size;\n }\n\n /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */\n public get(key: K): V | undefined {\n const value = this._cache.get(key);\n if (value === undefined) {\n return undefined;\n }\n // Remove and re-insert to update the order\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n\n /** Insert an entry and evict an older entry if we've reached maxSize */\n public set(key: K, value: V): void {\n if (this._cache.size >= this._maxSize) {\n // keys() returns an iterator in insertion order so keys().next() gives us the oldest key\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nextKey = this._cache.keys().next().value!;\n this._cache.delete(nextKey);\n }\n this._cache.set(key, value);\n }\n\n /** Remove an entry and return the entry if it was in the cache */\n public remove(key: K): V | undefined {\n const value = this._cache.get(key);\n if (value) {\n this._cache.delete(key);\n }\n return value;\n }\n\n /** Clear all entries */\n public clear(): void {\n this._cache.clear();\n }\n\n /** Get all the keys */\n public keys(): Array {\n return Array.from(this._cache.keys());\n }\n\n /** Get all the values */\n public values(): Array {\n const values: V[] = [];\n this._cache.forEach(value => values.push(value));\n return values;\n }\n}\n","import { GLOBAL_OBJ } from './worldwide';\n\ndeclare const EdgeRuntime: string | undefined;\n\ninterface VercelRequestContextGlobal {\n get?():\n | {\n waitUntil?: (task: Promise) => void;\n }\n | undefined;\n}\n\n/**\n * Function that delays closing of a Vercel lambda until the provided promise is resolved.\n *\n * Vendored from https://www.npmjs.com/package/@vercel/functions\n */\nexport function vercelWaitUntil(task: Promise): void {\n // We only flush manually in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n if (typeof EdgeRuntime !== 'string') {\n return;\n }\n const vercelRequestContextGlobal: VercelRequestContextGlobal | undefined =\n // @ts-expect-error This is not typed\n GLOBAL_OBJ[Symbol.for('@vercel/request-context')];\n\n const ctx = vercelRequestContextGlobal?.get?.();\n\n if (ctx?.waitUntil) {\n ctx.waitUntil(task);\n }\n}\n","import { flush } from '../exports';\nimport { debug } from './debug-logger';\nimport { vercelWaitUntil } from './vercelWaitUntil';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype MinimalCloudflareContext = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n waitUntil(promise: Promise): void;\n};\n\nasync function flushWithTimeout(timeout: number): Promise {\n try {\n debug.log('Flushing events...');\n await flush(timeout);\n debug.log('Done flushing events');\n } catch (e) {\n debug.log('Error while flushing events:\\n', e);\n }\n}\n\n/**\n * Flushes the event queue with a timeout in serverless environments to ensure that events are sent to Sentry before the\n * serverless function execution ends.\n *\n * The function is async, but in environments that support a `waitUntil` mechanism, it will run synchronously.\n *\n * This function is aware of the following serverless platforms:\n * - Cloudflare: If a Cloudflare context is provided, it will use `ctx.waitUntil()` to flush events (keeps the `this` context of `ctx`).\n * If a `cloudflareWaitUntil` function is provided, it will use that to flush events (looses the `this` context of `ctx`).\n * - Vercel: It detects the Vercel environment and uses Vercel's `waitUntil` function.\n * - Other Serverless (AWS Lambda, Google Cloud, etc.): It detects the environment via environment variables\n * and uses a regular `await flush()`.\n *\n * @internal This function is supposed for internal Sentry SDK usage only.\n * @hidden\n */\nexport async function flushIfServerless(\n params: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | { timeout?: number; cloudflareWaitUntil?: (task: Promise) => void }\n | { timeout?: number; cloudflareCtx?: MinimalCloudflareContext } = {},\n): Promise {\n const { timeout = 2000 } = params;\n\n if ('cloudflareWaitUntil' in params && typeof params?.cloudflareWaitUntil === 'function') {\n params.cloudflareWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if ('cloudflareCtx' in params && typeof params.cloudflareCtx?.waitUntil === 'function') {\n params.cloudflareCtx.waitUntil(flushWithTimeout(timeout));\n return;\n }\n\n // Note: vercelWaitUntil only does something in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n // @ts-expect-error This is not typed\n if (GLOBAL_OBJ[Symbol.for('@vercel/request-context')]) {\n // Vercel has a waitUntil equivalent that works without execution context\n vercelWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if (typeof process === 'undefined') {\n return;\n }\n\n const isServerless =\n !!process.env.FUNCTIONS_WORKER_RUNTIME || // Azure Functions\n !!process.env.LAMBDA_TASK_ROOT || // AWS Lambda\n !!process.env.K_SERVICE || // Google Cloud Run\n !!process.env.CF_PAGES || // Cloudflare Pages\n !!process.env.VERCEL ||\n !!process.env.NETLIFY;\n\n if (isServerless) {\n // Use regular flush for environments without a generic waitUntil mechanism\n await flushWithTimeout(timeout);\n }\n}\n","// Based on https://github.com/sindresorhus/escape-string-regexp but with modifications to:\n// a) reduce the size by skipping the runtime type - checking\n// b) ensure it gets down - compiled for old versions of Node(the published package only supports Node 14+).\n//\n// MIT License\n//\n// Copyright (c) Sindre Sorhus (https://sindresorhus.com)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation\n// the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and\n// to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n// the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\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 * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\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","import { parseSemver } from '@sentry/core';\nimport * as fs from 'fs';\nimport { createRequire } from 'module';\nimport * as path from 'path';\n\n/**\n * Returns the version of Next.js installed in the project, or undefined if it cannot be determined.\n */\nexport function getNextjsVersion(): string | undefined {\n const nextjsPackageJsonPath = resolveNextjsPackageJson();\n if (nextjsPackageJsonPath) {\n try {\n const nextjsPackageJson: { version: string } = JSON.parse(\n fs.readFileSync(nextjsPackageJsonPath, { encoding: 'utf-8' }),\n );\n return nextjsPackageJson.version;\n } catch {\n // noop\n }\n }\n\n return undefined;\n}\n\nfunction resolveNextjsPackageJson(): string | undefined {\n try {\n return createRequire(`${process.cwd()}/`).resolve('next/package.json');\n } catch {\n return undefined;\n }\n}\n\n/**\n * Checks if the current Next.js version supports the runAfterProductionCompile hook.\n * This hook was introduced in Next.js 15.4.1. (https://github.com/vercel/next.js/pull/77345)\n *\n * @param version - version string to check.\n * @returns true if Next.js version is 15.4.1 or higher\n */\nexport function supportsProductionCompileHook(version: string): boolean {\n const versionToCheck = version;\n if (!versionToCheck) {\n return false;\n }\n\n const { major, minor, patch } = parseSemver(versionToCheck);\n\n if (major === undefined || minor === undefined || patch === undefined) {\n return false;\n }\n\n if (major > 15) {\n return true;\n }\n\n // For major version 15, check if it's 15.4.1 or higher\n if (major === 15) {\n if (minor > 4) {\n return true;\n }\n if (minor === 4 && patch >= 1) {\n return true;\n }\n return false;\n }\n\n return false;\n}\n\n/**\n * Checks if the current Next.js version supports the `condition` field in Turbopack rules.\n * This field was introduced in Next.js 16.\n *\n * @param version - version string to check.\n * @returns true if Next.js version is 16 or higher\n */\nexport function supportsTurbopackRuleCondition(version: string): boolean {\n if (!version) {\n return false;\n }\n\n const { major } = parseSemver(version);\n\n if (major === undefined) {\n return false;\n }\n\n return major >= 16;\n}\n\n/**\n * Checks if the current Next.js version supports native debug ids for turbopack.\n * This feature was first introduced in Next.js v15.6.0-canary.36 and marked stable in Next.js v16\n *\n * @param version - version string to check.\n * @returns true if Next.js version supports native debug ids for turbopack builds\n */\nexport function supportsNativeDebugIds(version: string): boolean {\n if (!version) {\n return false;\n }\n\n const { major, minor, prerelease } = parseSemver(version);\n\n if (major === undefined || minor === undefined) {\n return false;\n }\n\n // Next.js 16+ supports native debug ids\n if (major >= 16) {\n return true;\n }\n\n // For Next.js 15, check if it's 15.6.0-canary.36+\n if (major === 15 && prerelease?.startsWith('canary.')) {\n // Any canary version 15.7+ supports native debug ids\n if (minor > 6) {\n return true;\n }\n\n // For 15.6 canary versions, check if it's canary.36 or higher\n if (minor === 6) {\n const canaryNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n if (canaryNumber >= 36) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Checks if the given Next.js version requires the `experimental.instrumentationHook` option.\n * Next.js 15.0.0 and higher (including certain RC and canary versions) no longer require this option\n * and will print a warning if it is set.\n *\n * @param version - version string to check.\n * @returns true if the version requires the instrumentationHook option to be set\n */\nexport function requiresInstrumentationHook(version: string): boolean {\n if (!version) {\n return true; // Default to requiring it if version cannot be determined\n }\n\n const { major, minor, patch, prerelease } = parseSemver(version);\n\n if (major === undefined || minor === undefined || patch === undefined) {\n return true; // Default to requiring it if parsing fails\n }\n\n // Next.js 16+ never requires the hook\n if (major >= 16) {\n return false;\n }\n\n // Next.js 14 and below always require the hook\n if (major < 15) {\n return true;\n }\n\n // At this point, we know it's Next.js 15.x.y\n // Stable releases (15.0.0+) don't require the hook\n if (!prerelease) {\n return false;\n }\n\n // Next.js 15.x.y with x > 0 or y > 0 don't require the hook\n if (minor > 0 || patch > 0) {\n return false;\n }\n\n // Check specific prerelease versions that don't require the hook\n if (prerelease.startsWith('rc.')) {\n const rcNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n return rcNumber === 0; // Only rc.0 requires the hook\n }\n\n if (prerelease.startsWith('canary.')) {\n const canaryNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n return canaryNumber < 124; // canary.124+ doesn't require the hook\n }\n\n // All other 15.0.0 prerelease versions (alpha, beta, etc.) require the hook\n return true;\n}\n\n/**\n * Determines which bundler is actually being used based on environment variables,\n * and CLI flags.\n *\n * @returns 'turbopack' or 'webpack'\n */\nexport function detectActiveBundler(): 'turbopack' | 'webpack' {\n const turbopackEnv = process.env.TURBOPACK;\n\n // Check if TURBOPACK env var is set to a truthy value (excluding falsy strings like 'false', '0', '')\n const isTurbopackEnabled = turbopackEnv && turbopackEnv !== 'false' && turbopackEnv !== '0';\n\n if (isTurbopackEnabled || process.argv.includes('--turbo')) {\n return 'turbopack';\n } else {\n return 'webpack';\n }\n}\n\n/**\n * Extract modules from project directory's package.json\n */\nexport function getPackageModules(projectDir: string): Record {\n try {\n const packageJson = path.join(projectDir, 'package.json');\n const packageJsonContent = fs.readFileSync(packageJson, 'utf8');\n const packageJsonObject = JSON.parse(packageJsonContent) as {\n dependencies?: Record;\n devDependencies?: Record;\n };\n\n return {\n ...packageJsonObject.dependencies,\n ...packageJsonObject.devDependencies,\n };\n } catch {\n return {};\n }\n}\n","import * as childProcess from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type { NextConfigObject, SentryBuildOptions } from '../types';\n\n/**\n * Adds Sentry-related build-time variables to `nextConfig.env`.\n *\n * Note: this mutates `userNextConfig`.\n *\n * @param userNextConfig - The user's Next.js config object\n * @param userSentryOptions - The Sentry build options passed to `withSentryConfig`\n * @param releaseName - The resolved release name, if any\n */\nexport function setUpBuildTimeVariables(\n userNextConfig: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n releaseName: string | undefined,\n): void {\n const assetPrefix = userNextConfig.assetPrefix || userNextConfig.basePath || '';\n const basePath = userNextConfig.basePath ?? '';\n\n const rewritesTunnelPath =\n userSentryOptions.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${basePath}${userSentryOptions.tunnelRoute}`\n : undefined;\n\n const buildTimeVariables: Record = {\n // Make sure that if we have a windows path, the backslashes are interpreted as such (rather than as escape\n // characters)\n _sentryRewriteFramesDistDir: userNextConfig.distDir?.replace(/\\\\/g, '\\\\\\\\') || '.next',\n // Get the path part of `assetPrefix`, minus any trailing slash. (We use a placeholder for the origin if\n // `assetPrefix` doesn't include one. Since we only care about the path, it doesn't matter what it is.)\n _sentryRewriteFramesAssetPrefixPath: assetPrefix\n ? new URL(assetPrefix, 'http://dogs.are.great').pathname.replace(/\\/$/, '')\n : '',\n };\n\n if (userNextConfig.assetPrefix) {\n buildTimeVariables._assetsPrefix = userNextConfig.assetPrefix;\n }\n\n if (userSentryOptions._experimental?.thirdPartyOriginStackFrames) {\n buildTimeVariables._experimentalThirdPartyOriginStackFrames = 'true';\n }\n\n if (rewritesTunnelPath) {\n buildTimeVariables._sentryRewritesTunnelPath = rewritesTunnelPath;\n }\n\n if (basePath) {\n buildTimeVariables._sentryBasePath = basePath;\n }\n\n if (userNextConfig.assetPrefix) {\n buildTimeVariables._sentryAssetPrefix = userNextConfig.assetPrefix;\n }\n\n if (userSentryOptions._experimental?.thirdPartyOriginStackFrames) {\n buildTimeVariables._experimentalThirdPartyOriginStackFrames = 'true';\n }\n\n if (releaseName) {\n buildTimeVariables._sentryRelease = releaseName;\n }\n\n if (typeof userNextConfig.env === 'object') {\n userNextConfig.env = { ...buildTimeVariables, ...userNextConfig.env };\n } else if (userNextConfig.env === undefined) {\n userNextConfig.env = buildTimeVariables;\n }\n}\n\n/**\n * Returns the current git SHA (HEAD), if available.\n *\n * This is a best-effort helper and returns `undefined` if git isn't available or the cwd isn't a git repo.\n */\nexport function getGitRevision(): string | undefined {\n let gitRevision: string | undefined;\n try {\n gitRevision = childProcess\n .execSync('git rev-parse HEAD', { stdio: ['ignore', 'pipe', 'ignore'] })\n .toString()\n .trim();\n } catch {\n // noop\n }\n return gitRevision;\n}\n\n/**\n * Reads the project's `instrumentation-client.(js|ts)` file contents, if present.\n *\n * @returns The file contents, or `undefined` if the file can't be found/read\n */\nexport function getInstrumentationClientFileContents(): string | void {\n const potentialInstrumentationClientFileLocations = [\n ['src', 'instrumentation-client.ts'],\n ['src', 'instrumentation-client.js'],\n ['instrumentation-client.ts'],\n ['instrumentation-client.js'],\n ];\n\n for (const pathSegments of potentialInstrumentationClientFileLocations) {\n try {\n return fs.readFileSync(path.join(process.cwd(), ...pathSegments), 'utf-8');\n } catch {\n // noop\n }\n }\n}\n","import type { SentryBuildOptions } from '../types';\nimport { detectActiveBundler } from '../util';\n\n/**\n * Migrates deprecated top-level webpack options to the new `webpack.*` path for backward compatibility.\n * The new path takes precedence over deprecated options. This mutates the userSentryOptions object.\n */\nexport function migrateDeprecatedWebpackOptions(userSentryOptions: SentryBuildOptions): void {\n // Initialize webpack options if not present\n userSentryOptions.webpack = userSentryOptions.webpack || {};\n\n const webpack = userSentryOptions.webpack;\n\n const withDeprecatedFallback = (\n newValue: T | undefined,\n deprecatedValue: T | undefined,\n message: string,\n ): T | undefined => {\n if (deprecatedValue !== undefined) {\n // eslint-disable-next-line no-console\n console.warn(message);\n }\n\n return newValue ?? deprecatedValue;\n };\n\n const deprecatedMessage = (deprecatedPath: string, newPath: string): string => {\n const message = `[@sentry/nextjs] DEPRECATION WARNING: ${deprecatedPath} is deprecated and will be removed in a future version. Use ${newPath} instead.`;\n\n // In Turbopack builds, webpack configuration is not applied, so webpack-scoped options won't have any effect.\n if (detectActiveBundler() === 'turbopack' && newPath.startsWith('webpack.')) {\n return `${message} (Not supported with Turbopack.)`;\n }\n\n return message;\n };\n\n /* eslint-disable deprecation/deprecation */\n // Migrate each deprecated option to the new path, but only if the new path isn't already set\n webpack.autoInstrumentServerFunctions = withDeprecatedFallback(\n webpack.autoInstrumentServerFunctions,\n userSentryOptions.autoInstrumentServerFunctions,\n deprecatedMessage('autoInstrumentServerFunctions', 'webpack.autoInstrumentServerFunctions'),\n );\n\n webpack.autoInstrumentMiddleware = withDeprecatedFallback(\n webpack.autoInstrumentMiddleware,\n userSentryOptions.autoInstrumentMiddleware,\n deprecatedMessage('autoInstrumentMiddleware', 'webpack.autoInstrumentMiddleware'),\n );\n\n webpack.autoInstrumentAppDirectory = withDeprecatedFallback(\n webpack.autoInstrumentAppDirectory,\n userSentryOptions.autoInstrumentAppDirectory,\n deprecatedMessage('autoInstrumentAppDirectory', 'webpack.autoInstrumentAppDirectory'),\n );\n\n webpack.excludeServerRoutes = withDeprecatedFallback(\n webpack.excludeServerRoutes,\n userSentryOptions.excludeServerRoutes,\n deprecatedMessage('excludeServerRoutes', 'webpack.excludeServerRoutes'),\n );\n\n webpack.unstable_sentryWebpackPluginOptions = withDeprecatedFallback(\n webpack.unstable_sentryWebpackPluginOptions,\n userSentryOptions.unstable_sentryWebpackPluginOptions,\n deprecatedMessage('unstable_sentryWebpackPluginOptions', 'webpack.unstable_sentryWebpackPluginOptions'),\n );\n\n webpack.disableSentryConfig = withDeprecatedFallback(\n webpack.disableSentryConfig,\n userSentryOptions.disableSentryWebpackConfig,\n deprecatedMessage('disableSentryWebpackConfig', 'webpack.disableSentryConfig'),\n );\n\n // Handle treeshake.removeDebugLogging specially since it's nested\n if (userSentryOptions.disableLogger !== undefined) {\n webpack.treeshake = webpack.treeshake || {};\n webpack.treeshake.removeDebugLogging = withDeprecatedFallback(\n webpack.treeshake.removeDebugLogging,\n userSentryOptions.disableLogger,\n deprecatedMessage('disableLogger', 'webpack.treeshake.removeDebugLogging'),\n );\n }\n\n webpack.automaticVercelMonitors = withDeprecatedFallback(\n webpack.automaticVercelMonitors,\n userSentryOptions.automaticVercelMonitors,\n deprecatedMessage('automaticVercelMonitors', 'webpack.automaticVercelMonitors'),\n );\n\n webpack.reactComponentAnnotation = withDeprecatedFallback(\n webpack.reactComponentAnnotation,\n userSentryOptions.reactComponentAnnotation,\n deprecatedMessage('reactComponentAnnotation', 'webpack.reactComponentAnnotation'),\n );\n}\n","import type { Options as SentryBuildPluginOptions } from '@sentry/bundler-plugin-core';\nimport * as path from 'path';\nimport type { SentryBuildOptions } from './types';\n\nconst LOGGER_PREFIXES = {\n 'webpack-nodejs': '[@sentry/nextjs - Node.js]',\n 'webpack-edge': '[@sentry/nextjs - Edge]',\n 'webpack-client': '[@sentry/nextjs - Client]',\n 'after-production-compile-webpack': '[@sentry/nextjs - After Production Compile (Webpack)]',\n 'after-production-compile-turbopack': '[@sentry/nextjs - After Production Compile (Turbopack)]',\n} as const;\n\n// File patterns for source map operations\n// We use both glob patterns and directory paths for the sourcemap upload and deletion\n// -> Direct CLI invocation handles file paths better than glob patterns\n// -> Webpack/Bundler needs glob patterns as this is the format that is used by the plugin\nconst FILE_PATTERNS = {\n SERVER: {\n GLOB: 'server/**',\n PATH: 'server',\n },\n SERVERLESS: 'serverless/**',\n STATIC_CHUNKS: {\n GLOB: 'static/chunks/**',\n PATH: 'static/chunks',\n },\n STATIC_CHUNKS_PAGES: {\n GLOB: 'static/chunks/pages/**',\n PATH: 'static/chunks/pages',\n },\n STATIC_CHUNKS_APP: {\n GLOB: 'static/chunks/app/**',\n PATH: 'static/chunks/app',\n },\n MAIN_CHUNKS: 'static/chunks/main-*',\n FRAMEWORK_CHUNKS: 'static/chunks/framework-*',\n FRAMEWORK_CHUNKS_DOT: 'static/chunks/framework.*',\n POLYFILLS_CHUNKS: 'static/chunks/polyfills-*',\n WEBPACK_CHUNKS: 'static/chunks/webpack-*',\n PAGE_CLIENT_REFERENCE_MANIFEST: '**/page_client-reference-manifest.js',\n SERVER_REFERENCE_MANIFEST: '**/server-reference-manifest.js',\n NEXT_FONT_MANIFEST: '**/next-font-manifest.js',\n MIDDLEWARE_BUILD_MANIFEST: '**/middleware-build-manifest.js',\n INTERCEPTION_ROUTE_REWRITE_MANIFEST: '**/interception-route-rewrite-manifest.js',\n ROUTE_CLIENT_REFERENCE_MANIFEST: '**/route_client-reference-manifest.js',\n MIDDLEWARE_REACT_LOADABLE_MANIFEST: '**/middleware-react-loadable-manifest.js',\n} as const;\n\n// Source map file extensions to delete\nconst SOURCEMAP_EXTENSIONS = ['*.js.map', '*.mjs.map', '*.cjs.map', '*.css.map'] as const;\n\ntype BuildTool = keyof typeof LOGGER_PREFIXES;\n\n/**\n * Normalizes Windows paths to POSIX format for glob patterns\n */\nexport function normalizePathForGlob(distPath: string): string {\n return distPath.replace(/\\\\/g, '/');\n}\n\n/**\n * These functions are used to get the correct pattern for the sourcemap upload based on the build tool and the usage context\n * -> Direct CLI invocation handles file paths better than glob patterns\n */\nfunction getServerPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.SERVER.PATH : FILE_PATTERNS.SERVER.GLOB;\n}\n\nfunction getStaticChunksPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS.PATH : FILE_PATTERNS.STATIC_CHUNKS.GLOB;\n}\n\nfunction getStaticChunksPagesPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS_PAGES.PATH : FILE_PATTERNS.STATIC_CHUNKS_PAGES.GLOB;\n}\n\nfunction getStaticChunksAppPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS_APP.PATH : FILE_PATTERNS.STATIC_CHUNKS_APP.GLOB;\n}\n\n/**\n * Creates file patterns for source map uploads based on build tool and options\n */\nfunction createSourcemapUploadAssetPatterns(\n normalizedDistPath: string,\n buildTool: BuildTool,\n widenClientFileUpload: boolean = false,\n): string[] {\n const assets: string[] = [];\n\n if (buildTool.startsWith('after-production-compile')) {\n assets.push(path.posix.join(normalizedDistPath, getServerPattern({ useDirectoryPath: true })));\n\n if (buildTool === 'after-production-compile-turbopack') {\n // In turbopack we always want to upload the full static chunks directory\n // as the build output is not split into pages|app chunks\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: true })));\n } else {\n // Webpack client builds in after-production-compile mode\n if (widenClientFileUpload) {\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: true })));\n } else {\n assets.push(\n path.posix.join(normalizedDistPath, getStaticChunksPagesPattern({ useDirectoryPath: true })),\n path.posix.join(normalizedDistPath, getStaticChunksAppPattern({ useDirectoryPath: true })),\n );\n }\n }\n } else {\n if (buildTool === 'webpack-nodejs' || buildTool === 'webpack-edge') {\n // Server builds\n assets.push(\n path.posix.join(normalizedDistPath, getServerPattern({ useDirectoryPath: false })),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.SERVERLESS),\n );\n } else if (buildTool === 'webpack-client') {\n // Client builds\n if (widenClientFileUpload) {\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: false })));\n } else {\n assets.push(\n path.posix.join(normalizedDistPath, getStaticChunksPagesPattern({ useDirectoryPath: false })),\n path.posix.join(normalizedDistPath, getStaticChunksAppPattern({ useDirectoryPath: false })),\n );\n }\n }\n }\n\n return assets;\n}\n\n/**\n * Creates ignore patterns for source map uploads\n */\nfunction createSourcemapUploadIgnorePattern(\n normalizedDistPath: string,\n widenClientFileUpload: boolean = false,\n): string[] {\n const ignore: string[] = [];\n\n // We only add main-* files if the user has not opted into it\n if (!widenClientFileUpload) {\n ignore.push(path.posix.join(normalizedDistPath, FILE_PATTERNS.MAIN_CHUNKS));\n }\n\n // Always ignore these patterns\n ignore.push(\n path.posix.join(normalizedDistPath, FILE_PATTERNS.FRAMEWORK_CHUNKS),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.FRAMEWORK_CHUNKS_DOT),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.POLYFILLS_CHUNKS),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.WEBPACK_CHUNKS),\n // Next.js internal manifest files that don't have source maps\n // These files are auto-generated by Next.js and do not contain user code.\n // Ignoring them prevents \"Could not determine source map reference\" warnings.\n FILE_PATTERNS.PAGE_CLIENT_REFERENCE_MANIFEST,\n FILE_PATTERNS.SERVER_REFERENCE_MANIFEST,\n FILE_PATTERNS.NEXT_FONT_MANIFEST,\n FILE_PATTERNS.MIDDLEWARE_BUILD_MANIFEST,\n FILE_PATTERNS.INTERCEPTION_ROUTE_REWRITE_MANIFEST,\n FILE_PATTERNS.ROUTE_CLIENT_REFERENCE_MANIFEST,\n FILE_PATTERNS.MIDDLEWARE_REACT_LOADABLE_MANIFEST,\n );\n\n return ignore;\n}\n\n/**\n * Creates file patterns for deletion after source map upload\n */\nfunction createFilesToDeleteAfterUploadPattern(\n normalizedDistPath: string,\n buildTool: BuildTool,\n deleteSourcemapsAfterUpload: boolean,\n useRunAfterProductionCompileHook: boolean = false,\n): string[] | undefined {\n if (!deleteSourcemapsAfterUpload) {\n return undefined;\n }\n\n // We don't want to delete source maps for server builds as this led to errors on Vercel in the past\n // See: https://github.com/getsentry/sentry-javascript/issues/13099\n if (buildTool === 'webpack-nodejs' || buildTool === 'webpack-edge') {\n return undefined;\n }\n\n // Skip deletion for webpack client builds when using the experimental hook\n if (buildTool === 'webpack-client' && useRunAfterProductionCompileHook) {\n return undefined;\n }\n\n return SOURCEMAP_EXTENSIONS.map(ext => path.posix.join(normalizedDistPath, 'static', '**', ext));\n}\n\n/**\n * Determines if sourcemap uploads should be skipped\n */\nfunction shouldSkipSourcemapUpload(buildTool: BuildTool, useRunAfterProductionCompileHook: boolean = false): boolean {\n return useRunAfterProductionCompileHook && buildTool.startsWith('webpack');\n}\n\n/**\n * Source rewriting function for webpack sources\n */\nfunction rewriteWebpackSources(source: string): string {\n return source.replace(/^webpack:\\/\\/(?:_N_E\\/)?/, '');\n}\n\n/**\n * Creates release configuration\n */\nfunction createReleaseConfig(\n releaseName: string | undefined,\n sentryBuildOptions: SentryBuildOptions,\n): SentryBuildPluginOptions['release'] {\n if (releaseName !== undefined) {\n return {\n inject: false, // The webpack plugin's release injection breaks the `app` directory - we inject the release manually with the value injection loader instead.\n name: releaseName,\n create: sentryBuildOptions.release?.create,\n finalize: sentryBuildOptions.release?.finalize,\n dist: sentryBuildOptions.release?.dist,\n vcsRemote: sentryBuildOptions.release?.vcsRemote,\n setCommits: sentryBuildOptions.release?.setCommits,\n deploy: sentryBuildOptions.release?.deploy,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.release,\n };\n }\n\n return {\n inject: false,\n create: false,\n finalize: false,\n };\n}\n\n/**\n * Merges default ignore patterns with user-provided ignore patterns.\n * User patterns are appended to the defaults to ensure internal Next.js\n * files are always ignored while allowing users to add additional patterns.\n */\nfunction mergeIgnorePatterns(defaultPatterns: string[], userPatterns: string | string[] | undefined): string[] {\n if (!userPatterns) {\n return defaultPatterns;\n }\n\n const userPatternsArray = Array.isArray(userPatterns) ? userPatterns : [userPatterns];\n return [...defaultPatterns, ...userPatternsArray];\n}\n\n/**\n * Get Sentry Build Plugin options for both webpack and turbopack builds.\n * These options can be used in two ways:\n * 1. The options can be built in a single operation after the production build completes\n * 2. The options can be built in multiple operations, one for each webpack build\n */\nexport function getBuildPluginOptions({\n sentryBuildOptions,\n releaseName,\n distDirAbsPath,\n buildTool,\n useRunAfterProductionCompileHook,\n}: {\n sentryBuildOptions: SentryBuildOptions;\n releaseName: string | undefined;\n distDirAbsPath: string;\n buildTool: BuildTool;\n useRunAfterProductionCompileHook?: boolean; // Whether the user has opted into using the experimental hook\n}): SentryBuildPluginOptions {\n // We need to convert paths to posix because Glob patterns use `\\` to escape\n // glob characters. This clashes with Windows path separators.\n // See: https://www.npmjs.com/package/glob\n const normalizedDistDirAbsPath = normalizePathForGlob(distDirAbsPath);\n const loggerPrefix = LOGGER_PREFIXES[buildTool];\n const widenClientFileUpload = sentryBuildOptions.widenClientFileUpload ?? false;\n const deleteSourcemapsAfterUpload = sentryBuildOptions.sourcemaps?.deleteSourcemapsAfterUpload ?? false;\n\n const sourcemapUploadAssets = createSourcemapUploadAssetPatterns(\n normalizedDistDirAbsPath,\n buildTool,\n widenClientFileUpload,\n );\n\n const sourcemapUploadIgnore = createSourcemapUploadIgnorePattern(normalizedDistDirAbsPath, widenClientFileUpload);\n\n const finalIgnorePatterns = mergeIgnorePatterns(sourcemapUploadIgnore, sentryBuildOptions.sourcemaps?.ignore);\n\n const userFilesToDeleteAfterUpload = sentryBuildOptions.sourcemaps?.filesToDeleteAfterUpload;\n\n if (sentryBuildOptions.debug && userFilesToDeleteAfterUpload !== undefined) {\n // eslint-disable-next-line no-console\n console.debug(\n '[@sentry/nextjs] Skipping auto-deletion of source maps as user has provided filesToDeleteAfterUpload:',\n userFilesToDeleteAfterUpload,\n );\n }\n\n const filesToDeleteAfterUpload =\n userFilesToDeleteAfterUpload !== undefined\n ? Array.isArray(userFilesToDeleteAfterUpload)\n ? userFilesToDeleteAfterUpload\n : [userFilesToDeleteAfterUpload]\n : createFilesToDeleteAfterUploadPattern(\n normalizedDistDirAbsPath,\n buildTool,\n deleteSourcemapsAfterUpload,\n useRunAfterProductionCompileHook,\n );\n\n const skipSourcemapsUpload = shouldSkipSourcemapUpload(buildTool, useRunAfterProductionCompileHook);\n\n return {\n authToken: sentryBuildOptions.authToken,\n headers: sentryBuildOptions.headers,\n org: sentryBuildOptions.org,\n project: sentryBuildOptions.project,\n telemetry: sentryBuildOptions.telemetry,\n debug: sentryBuildOptions.debug,\n errorHandler: sentryBuildOptions.errorHandler,\n reactComponentAnnotation: buildTool.startsWith('after-production-compile')\n ? undefined\n : {\n ...sentryBuildOptions.webpack?.reactComponentAnnotation,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.reactComponentAnnotation,\n },\n silent: sentryBuildOptions.silent,\n url: sentryBuildOptions.sentryUrl,\n sourcemaps: {\n disable: skipSourcemapsUpload ? true : (sentryBuildOptions.sourcemaps?.disable ?? false),\n rewriteSources: rewriteWebpackSources,\n assets: sentryBuildOptions.sourcemaps?.assets ?? sourcemapUploadAssets,\n ignore: finalIgnorePatterns,\n filesToDeleteAfterUpload,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.sourcemaps,\n },\n release: createReleaseConfig(releaseName, sentryBuildOptions),\n bundleSizeOptimizations: {\n ...sentryBuildOptions.bundleSizeOptimizations,\n },\n _metaOptions: {\n loggerPrefixOverride: loggerPrefix,\n telemetry: {\n metaFramework: 'nextjs',\n },\n },\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions,\n };\n}\n","import type { createSentryBuildPluginManager as createSentryBuildPluginManagerType } from '@sentry/bundler-plugin-core';\nimport { loadModule } from '@sentry/core';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { getBuildPluginOptions } from './getBuildPluginOptions';\nimport type { SentryBuildOptions } from './types';\n\n/**\n * This function is called by Next.js after the production build is complete.\n * It is used to upload sourcemaps to Sentry.\n */\nexport async function handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool,\n usesNativeDebugIds,\n }: { releaseName?: string; distDir: string; buildTool: 'webpack' | 'turbopack'; usesNativeDebugIds?: boolean },\n sentryBuildOptions: SentryBuildOptions,\n): Promise {\n if (sentryBuildOptions.debug) {\n // eslint-disable-next-line no-console\n console.debug('[@sentry/nextjs] Running runAfterProductionCompile logic.');\n }\n\n const { createSentryBuildPluginManager } =\n loadModule<{ createSentryBuildPluginManager: typeof createSentryBuildPluginManagerType }>(\n '@sentry/bundler-plugin-core',\n module,\n ) ?? {};\n\n if (!createSentryBuildPluginManager) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not load build manager package. Will not run runAfterProductionCompile logic.',\n );\n return;\n }\n\n const options = getBuildPluginOptions({\n sentryBuildOptions,\n releaseName,\n distDirAbsPath: distDir,\n buildTool: `after-production-compile-${buildTool}`,\n });\n\n const sentryBuildPluginManager = createSentryBuildPluginManager(options, {\n buildTool,\n loggerPrefix: '[@sentry/nextjs - After Production Compile]',\n });\n\n await sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal();\n await sentryBuildPluginManager.createRelease();\n\n // Skip debug ID injection if sourcemaps are disabled which are only relevant for sourcemap correlation\n if (!usesNativeDebugIds && sentryBuildOptions.sourcemaps?.disable !== true) {\n await sentryBuildPluginManager.injectDebugIds([distDir]);\n }\n\n await sentryBuildPluginManager.uploadSourcemaps([distDir], {\n // We don't want to prepare the artifacts because we injected debug ids manually before\n prepareArtifacts: false,\n });\n await sentryBuildPluginManager.deleteArtifacts();\n\n // After deleting source map files in turbopack builds, strip any remaining\n // sourceMappingURL comments from client JS files. Without this, browsers request\n // the deleted .map files, and in Next.js 16 (turbopack) those requests fall through\n // to the app router instead of returning 404, which can break middleware-dependent\n // features like Clerk auth.\n const deleteSourcemapsAfterUpload = sentryBuildOptions.sourcemaps?.deleteSourcemapsAfterUpload ?? false;\n if (deleteSourcemapsAfterUpload && buildTool === 'turbopack') {\n await stripSourceMappingURLComments(path.join(distDir, 'static'), sentryBuildOptions.debug);\n }\n}\n\nconst SOURCEMAPPING_URL_COMMENT_REGEX = /\\n?\\/\\/[#@] sourceMappingURL=[^\\n]+$/;\nconst CSS_SOURCEMAPPING_URL_COMMENT_REGEX = /\\n?\\/\\*[#@] sourceMappingURL=[^\\n]+\\*\\/$/;\n\n/**\n * Strips sourceMappingURL comments from all JS/MJS/CJS/CSS files in the given directory.\n * This prevents browsers from requesting deleted .map files.\n */\nexport async function stripSourceMappingURLComments(staticDir: string, debug?: boolean): Promise {\n let entries: string[];\n try {\n entries = await fs.promises.readdir(staticDir, { recursive: true }).then(e => e.map(f => String(f)));\n } catch {\n // Directory may not exist (e.g., no static output)\n return;\n }\n\n const filesToProcess = entries.filter(\n f => f.endsWith('.js') || f.endsWith('.mjs') || f.endsWith('.cjs') || f.endsWith('.css'),\n );\n\n const results = await Promise.all(\n filesToProcess.map(async file => {\n const filePath = path.join(staticDir, file);\n try {\n const content = await fs.promises.readFile(filePath, 'utf-8');\n\n const isCSS = file.endsWith('.css');\n const regex = isCSS ? CSS_SOURCEMAPPING_URL_COMMENT_REGEX : SOURCEMAPPING_URL_COMMENT_REGEX;\n\n const strippedContent = content.replace(regex, '');\n if (strippedContent !== content) {\n await fs.promises.writeFile(filePath, strippedContent, 'utf-8');\n return file;\n }\n } catch {\n // Skip files that can't be read/written\n }\n return undefined;\n }),\n );\n\n const strippedCount = results.filter(Boolean).length;\n\n if (debug && strippedCount > 0) {\n // eslint-disable-next-line no-console\n console.debug(\n `[@sentry/nextjs] Stripped sourceMappingURL comments from ${String(strippedCount)} file(s) to prevent requests for deleted source maps.`,\n );\n }\n}\n","import * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport type { RouteManifest } from '../manifest/types';\nimport type { JSONValue, TurbopackMatcherWithRule } from '../types';\nimport { getPackageModules, supportsTurbopackRuleCondition } from '../util';\n\n/**\n * Generate the value injection rules for client and server in turbopack config.\n */\nexport function generateValueInjectionRules({\n routeManifest,\n nextJsVersion,\n tunnelPath,\n vercelCronsConfig,\n}: {\n routeManifest?: RouteManifest;\n nextJsVersion?: string;\n tunnelPath?: string;\n vercelCronsConfig?: VercelCronsConfig;\n}): TurbopackMatcherWithRule[] {\n const rules: TurbopackMatcherWithRule[] = [];\n const isomorphicValues: Record = {};\n let clientValues: Record = {};\n let serverValues: Record = {};\n\n if (nextJsVersion) {\n // This is used to determine version-based dev-symbolication behavior\n isomorphicValues._sentryNextJsVersion = nextJsVersion;\n }\n\n if (routeManifest) {\n clientValues._sentryRouteManifest = JSON.stringify(routeManifest);\n }\n\n // Inject tunnel route path for both client and server\n if (tunnelPath) {\n isomorphicValues._sentryRewritesTunnelPath = tunnelPath;\n }\n\n // Inject Vercel crons config for server-side cron auto-instrumentation\n if (vercelCronsConfig) {\n serverValues._sentryVercelCronsConfig = JSON.stringify(vercelCronsConfig);\n }\n // Inject server modules (matching webpack's __SENTRY_SERVER_MODULES__ behavior)\n // Use process.cwd() to get the project directory at build time\n serverValues.__SENTRY_SERVER_MODULES__ = getPackageModules(process.cwd());\n\n if (Object.keys(isomorphicValues).length > 0) {\n clientValues = { ...clientValues, ...isomorphicValues };\n serverValues = { ...serverValues, ...isomorphicValues };\n }\n\n const hasConditionSupport = nextJsVersion ? supportsTurbopackRuleCondition(nextJsVersion) : false;\n\n // Client value injection\n if (Object.keys(clientValues).length > 0) {\n rules.push({\n matcher: '**/instrumentation-client.*',\n rule: {\n // Only run on user code, not node_modules or Next.js internals\n // condition field is only supported in Next.js 16+\n ...(hasConditionSupport ? { condition: { not: 'foreign' } } : {}),\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'valueInjectionLoader.js'),\n options: {\n values: clientValues,\n },\n },\n ],\n },\n });\n }\n\n // Server value injection\n if (Object.keys(serverValues).length > 0) {\n rules.push({\n matcher: '**/instrumentation.*',\n rule: {\n // Only run on user code, not node_modules or Next.js internals\n // condition field is only supported in Next.js 16+\n ...(hasConditionSupport ? { condition: { not: 'foreign' } } : {}),\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'valueInjectionLoader.js'),\n options: {\n values: serverValues,\n },\n },\n ],\n },\n });\n }\n\n return rules;\n}\n","import { debug } from '@sentry/core';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport type { RouteManifest } from '../manifest/types';\nimport type { NextConfigObject, SentryBuildOptions, TurbopackMatcherWithRule, TurbopackOptions } from '../types';\nimport { supportsNativeDebugIds, supportsTurbopackRuleCondition } from '../util';\nimport { generateValueInjectionRules } from './generateValueInjectionRules';\n\n/**\n * Construct a Turbopack config object from a Next.js config object and a Turbopack options object.\n *\n * @param userNextConfig - The Next.js config object.\n * @param userSentryOptions - The Sentry build options object.\n * @param routeManifest - The route manifest object.\n * @param nextJsVersion - The Next.js version.\n * @param vercelCronsConfig - The Vercel crons configuration from vercel.json.\n * @returns The Turbopack config object.\n */\nexport function constructTurbopackConfig({\n userNextConfig,\n userSentryOptions,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n}: {\n userNextConfig: NextConfigObject;\n userSentryOptions?: SentryBuildOptions;\n routeManifest?: RouteManifest;\n nextJsVersion?: string;\n vercelCronsConfig?: VercelCronsConfig;\n}): TurbopackOptions {\n // If sourcemaps are disabled, we don't need to enable native debug ids as this will add build time.\n const shouldEnableNativeDebugIds =\n (supportsNativeDebugIds(nextJsVersion ?? '') && userNextConfig?.turbopack?.debugIds) ??\n userSentryOptions?.sourcemaps?.disable !== true;\n\n const newConfig: TurbopackOptions = {\n ...userNextConfig.turbopack,\n ...(shouldEnableNativeDebugIds ? { debugIds: true } : {}),\n };\n\n const tunnelPath =\n userSentryOptions?.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${userNextConfig.basePath ?? ''}${userSentryOptions.tunnelRoute}`\n : undefined;\n\n const valueInjectionRules = generateValueInjectionRules({\n routeManifest,\n nextJsVersion,\n tunnelPath,\n vercelCronsConfig,\n });\n\n for (const { matcher, rule } of valueInjectionRules) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, { matcher, rule });\n }\n\n // Add module metadata injection loader for thirdPartyErrorFilterIntegration support.\n // This loader tags modules with `_sentryModuleMetadata` so the integration can tell\n // first-party code from third-party code. We intentionally do NOT use\n // `condition: { not: 'foreign' }` so that node_modules are also tagged as first-party,\n // matching the webpack plugin's BannerPlugin behavior (which injects into all chunks\n // without excluding node_modules). The injected code is wrapped in a try-catch IIFE\n // so it is safe even for node_modules with strict initialization order.\n // We only exclude Next.js build polyfills which contain non-standard syntax that causes\n // parse errors when any code is prepended (Turbopack re-parses the loader output).\n const applicationKey = userSentryOptions?._experimental?.turbopackApplicationKey;\n if (applicationKey && nextJsVersion && supportsTurbopackRuleCondition(nextJsVersion)) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, {\n matcher: '*.{ts,tsx,js,jsx,mjs,cjs}',\n rule: {\n condition: { not: { path: /next\\/dist\\/build\\/polyfills/ } },\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'moduleMetadataInjectionLoader.js'),\n options: {\n applicationKey,\n },\n },\n ],\n },\n });\n }\n\n // Add component annotation loader for react component name annotation in Turbopack builds.\n // This is only added when turbopackReactComponentAnnotation.enabled is set AND the Next.js\n // version supports the `condition` field in Turbopack rules (Next.js 16+).\n const turbopackReactComponentAnnotation = userSentryOptions?._experimental?.turbopackReactComponentAnnotation;\n if (turbopackReactComponentAnnotation?.enabled && nextJsVersion && supportsTurbopackRuleCondition(nextJsVersion)) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, {\n matcher: '*.{tsx,jsx}',\n rule: {\n condition: { not: 'foreign' },\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'componentAnnotationLoader.js'),\n options: {\n ignoredComponents: turbopackReactComponentAnnotation.ignoredComponents ?? [],\n },\n },\n ],\n },\n });\n }\n\n return newConfig;\n}\n\n/**\n * Safely add a Turbopack rule to the existing rules.\n *\n * @param existingRules - The existing rules.\n * @param matcher - The matcher for the rule.\n * @param rule - The rule to add.\n * @returns The updated rules object.\n */\nexport function safelyAddTurbopackRule(\n existingRules: TurbopackOptions['rules'],\n { matcher, rule }: TurbopackMatcherWithRule,\n): TurbopackOptions['rules'] {\n if (!existingRules) {\n return {\n [matcher]: rule,\n };\n }\n\n // If the rule already exists, we don't want to mess with it.\n if (existingRules[matcher]) {\n debug.log(\n `[@sentry/nextjs] - Turbopack rule already exists for ${matcher}. Please remove it from your Next.js config in order for Sentry to work properly.`,\n );\n return existingRules;\n }\n\n return {\n ...existingRules,\n [matcher]: rule,\n };\n}\n","/* eslint-disable complexity */\n/* eslint-disable max-lines */\n\nimport { debug, escapeStringForRegex, loadModule, parseSemver } from '@sentry/core';\nimport * as fs from 'fs';\nimport { createRequire } from 'module';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../common/types';\nimport { getBuildPluginOptions, normalizePathForGlob } from './getBuildPluginOptions';\nimport type { RouteManifest } from './manifest/types';\n// Note: If you need to import a type from Webpack, do it in `types.ts` and export it from there. Otherwise, our\n// circular dependency check thinks this file is importing from itself. See https://github.com/pahen/madge/issues/306.\nimport type {\n BuildContext,\n EntryPropertyObject,\n IgnoreWarningsOption,\n NextConfigObject,\n SentryBuildOptions,\n WebpackConfigFunction,\n WebpackConfigObject,\n WebpackConfigObjectWithModuleRules,\n WebpackEntryProperty,\n} from './types';\nimport { getNextjsVersion, getPackageModules } from './util';\nimport type { VercelCronsConfigResult } from './withSentryConfig/getFinalConfigObjectUtils';\n\n// Next.js runs webpack 3 times, once for the client, the server, and for edge. Because we don't want to print certain\n// warnings 3 times, we keep track of them here.\nlet showedMissingGlobalErrorWarningMsg = false;\n\n/**\n * Construct the function which will be used as the nextjs config's `webpack` value.\n *\n * Sets:\n * - `devtool`, to ensure high-quality sourcemaps are generated\n * - `entry`, to include user's sentry config files (where `Sentry.init` is called) in the build\n * - `plugins`, to add SentryWebpackPlugin\n *\n * @param userNextConfig The user's existing nextjs config, as passed to `withSentryConfig`\n * @param userSentryOptions The user's SentryWebpackPlugin config, as passed to `withSentryConfig`\n * @returns The function to set as the nextjs config's `webpack` value\n */\nexport function constructWebpackConfigFunction({\n userNextConfig = {},\n userSentryOptions = {},\n releaseName,\n routeManifest,\n nextJsVersion,\n useRunAfterProductionCompileHook,\n vercelCronsConfigResult,\n}: {\n userNextConfig: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n useRunAfterProductionCompileHook: boolean | undefined;\n vercelCronsConfigResult: VercelCronsConfigResult;\n}): WebpackConfigFunction {\n // Will be called by nextjs and passed its default webpack configuration and context data about the build (whether\n // we're building server or client, whether we're in dev, what version of webpack we're using, etc). Note that\n // `incomingConfig` and `buildContext` are referred to as `config` and `options` in the nextjs docs.\n return function newWebpackFunction(\n incomingConfig: WebpackConfigObject,\n buildContext: BuildContext,\n ): WebpackConfigObject {\n const { isServer, dev: isDev, dir: projectDir } = buildContext;\n const runtime = isServer ? (buildContext.nextRuntime === 'edge' ? 'edge' : 'server') : 'client';\n // Default page extensions per https://github.com/vercel/next.js/blob/f1dbc9260d48c7995f6c52f8fbcc65f08e627992/packages/next/server/config-shared.ts#L161\n const pageExtensions = userNextConfig.pageExtensions || ['tsx', 'ts', 'jsx', 'js'];\n const dotPrefixedPageExtensions = pageExtensions.map(ext => `.${ext}`);\n const pageExtensionRegex = pageExtensions.map(escapeStringForRegex).join('|');\n const nextVersion = nextJsVersion || getNextjsVersion();\n const { major } = parseSemver(nextVersion || '');\n\n // We add `.ts` and `.js` back in because `pageExtensions` might not be relevant to the instrumentation file\n // e.g. user's setting `.mdx`. In that case we still want to default look up\n // `instrumentation.ts` and `instrumentation.js`\n const instrumentationFile = getInstrumentationFile(projectDir, dotPrefixedPageExtensions.concat(['.ts', '.js']));\n\n if (runtime !== 'client') {\n warnAboutDeprecatedConfigFiles(projectDir, instrumentationFile, runtime);\n }\n if (runtime === 'server') {\n // was added in v15 (https://github.com/vercel/next.js/pull/67539)\n if (major && major >= 15) {\n warnAboutMissingOnRequestErrorHandler(instrumentationFile);\n }\n }\n\n let rawNewConfig = { ...incomingConfig };\n\n // if user has custom webpack config (which always takes the form of a function), run it so we have actual values to\n // work with\n if ('webpack' in userNextConfig && typeof userNextConfig.webpack === 'function') {\n rawNewConfig = userNextConfig.webpack(rawNewConfig, buildContext);\n }\n\n // This mutates `rawNewConfig` in place, but also returns it in order to switch its type to one in which\n // `newConfig.module.rules` is required, so we don't have to keep asserting its existence\n const newConfig = setUpModuleRules(rawNewConfig);\n\n // Determine which cron config to use based on strategy\n // - 'spans': injected as global for span-based detection (App Router + Pages Router)\n // - 'wrapper': passed to wrapping loader for Pages Router API handler wrapping\n const { strategy: cronsStrategy, config: cronsConfig } = vercelCronsConfigResult;\n const vercelCronsConfigForGlobal = cronsStrategy === 'spans' ? cronsConfig : undefined;\n const vercelCronsConfigForWrapper = cronsStrategy === 'wrapper' ? cronsConfig : undefined;\n\n // Add a loader which will inject code that sets global values\n addValueInjectionLoader({\n newConfig,\n userNextConfig,\n userSentryOptions,\n buildContext,\n releaseName,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig: vercelCronsConfigForGlobal,\n });\n\n addOtelWarningIgnoreRule(newConfig);\n\n // Add edge runtime polyfills when building for edge in dev mode\n if (major && major === 13 && runtime === 'edge' && isDev) {\n addEdgeRuntimePolyfills(newConfig, buildContext);\n }\n\n let pagesDirPath: string | undefined;\n const maybePagesDirPath = path.join(projectDir, 'pages');\n const maybeSrcPagesDirPath = path.join(projectDir, 'src', 'pages');\n if (fs.existsSync(maybePagesDirPath) && fs.lstatSync(maybePagesDirPath).isDirectory()) {\n pagesDirPath = maybePagesDirPath;\n } else if (fs.existsSync(maybeSrcPagesDirPath) && fs.lstatSync(maybeSrcPagesDirPath).isDirectory()) {\n pagesDirPath = maybeSrcPagesDirPath;\n }\n\n let appDirPath: string | undefined;\n const maybeAppDirPath = path.join(projectDir, 'app');\n const maybeSrcAppDirPath = path.join(projectDir, 'src', 'app');\n if (fs.existsSync(maybeAppDirPath) && fs.lstatSync(maybeAppDirPath).isDirectory()) {\n appDirPath = maybeAppDirPath;\n } else if (fs.existsSync(maybeSrcAppDirPath) && fs.lstatSync(maybeSrcAppDirPath).isDirectory()) {\n appDirPath = maybeSrcAppDirPath;\n }\n\n const apiRoutesPath = pagesDirPath ? path.join(pagesDirPath, 'api') : undefined;\n\n const middlewareLocationFolder = pagesDirPath\n ? path.join(pagesDirPath, '..')\n : appDirPath\n ? path.join(appDirPath, '..')\n : projectDir;\n\n const staticWrappingLoaderOptions = {\n appDir: appDirPath,\n pagesDir: pagesDirPath,\n pageExtensionRegex,\n excludeServerRoutes: userSentryOptions.webpack?.excludeServerRoutes,\n nextjsRequestAsyncStorageModulePath: getRequestAsyncStorageModuleLocation(\n projectDir,\n rawNewConfig.resolve?.modules,\n ),\n isDev,\n };\n\n const normalizeLoaderResourcePath = (resourcePath: string): string => {\n // `resourcePath` may be an absolute path or a path relative to the context of the webpack config\n let absoluteResourcePath: string;\n if (path.isAbsolute(resourcePath)) {\n absoluteResourcePath = resourcePath;\n } else {\n absoluteResourcePath = path.join(projectDir, resourcePath);\n }\n\n return path.normalize(absoluteResourcePath);\n };\n\n const isPageResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n pagesDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(pagesDirPath + path.sep) &&\n !normalizedAbsoluteResourcePath.startsWith(apiRoutesPath + path.sep) &&\n dotPrefixedPageExtensions.some(ext => normalizedAbsoluteResourcePath.endsWith(ext))\n );\n };\n\n const isApiRouteResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n normalizedAbsoluteResourcePath.startsWith(apiRoutesPath + path.sep) &&\n dotPrefixedPageExtensions.some(ext => normalizedAbsoluteResourcePath.endsWith(ext))\n );\n };\n\n const possibleMiddlewareLocations = pageExtensions.flatMap(middlewareFileEnding => {\n return [\n path.join(middlewareLocationFolder, `middleware.${middlewareFileEnding}`),\n path.join(middlewareLocationFolder, `proxy.${middlewareFileEnding}`),\n ];\n });\n const isMiddlewareResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return possibleMiddlewareLocations.includes(normalizedAbsoluteResourcePath);\n };\n\n const isServerComponentResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n\n // \".js, .jsx, or .tsx file extensions can be used for Pages\"\n // https://beta.nextjs.org/docs/routing/pages-and-layouts#pages:~:text=.js%2C%20.jsx%2C%20or%20.tsx%20file%20extensions%20can%20be%20used%20for%20Pages.\n return (\n appDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(appDirPath + path.sep) &&\n !!normalizedAbsoluteResourcePath.match(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n new RegExp(`[\\\\\\\\/](page|layout|loading|head|not-found)\\\\.(${pageExtensionRegex})$`),\n )\n );\n };\n\n const isRouteHandlerResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n appDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(appDirPath + path.sep) &&\n !!normalizedAbsoluteResourcePath.match(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n new RegExp(`[\\\\\\\\/]route\\\\.(${pageExtensionRegex})$`),\n )\n );\n };\n\n if (isServer && userSentryOptions.webpack?.autoInstrumentServerFunctions !== false) {\n // It is very important that we insert our loaders at the beginning of the array because we expect any sort of transformations/transpilations (e.g. TS -> JS) to already have happened.\n\n // Wrap pages\n newConfig.module.rules.unshift({\n test: isPageResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'page',\n },\n },\n ],\n });\n\n // Wrap api routes\n newConfig.module.rules.unshift({\n test: isApiRouteResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n vercelCronsConfig: vercelCronsConfigForWrapper,\n wrappingTargetKind: 'api-route',\n },\n },\n ],\n });\n\n // Wrap middleware\n const canWrapStandaloneMiddleware = userNextConfig.output !== 'standalone' || !major || major < 16;\n if ((userSentryOptions.webpack?.autoInstrumentMiddleware ?? true) && canWrapStandaloneMiddleware) {\n newConfig.module.rules.unshift({\n test: isMiddlewareResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'middleware',\n },\n },\n ],\n });\n }\n }\n\n if (isServer && userSentryOptions.webpack?.autoInstrumentAppDirectory !== false) {\n // Wrap server components\n newConfig.module.rules.unshift({\n test: isServerComponentResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'server-component',\n },\n },\n ],\n });\n\n // Wrap route handlers\n newConfig.module.rules.unshift({\n test: isRouteHandlerResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'route-handler',\n },\n },\n ],\n });\n }\n\n if (appDirPath) {\n const hasGlobalErrorFile = pageExtensions\n .map(extension => `global-error.${extension}`)\n .some(globalErrorFile => fs.existsSync(path.join(appDirPath, globalErrorFile)));\n\n if (\n !hasGlobalErrorFile &&\n !showedMissingGlobalErrorWarningMsg &&\n !process.env.SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING\n ) {\n // eslint-disable-next-line no-console\n console.log(\n \"[@sentry/nextjs] It seems like you don't have a global error handler set up. It is recommended that you add a 'global-error.js' file with Sentry instrumentation so that React rendering errors are reported to Sentry. Read more: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#react-render-errors-in-app-router (you can suppress this warning by setting SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 as environment variable)\",\n );\n showedMissingGlobalErrorWarningMsg = true;\n }\n }\n\n if (!isServer) {\n // Tell webpack to inject the client config files (containing the client-side `Sentry.init()` call) into the appropriate output\n // bundles. Store a separate reference to the original `entry` value to avoid an infinite loop. (If we don't do\n // this, we'll have a statement of the form `x.y = () => f(x.y)`, where one of the things `f` does is call `x.y`.\n // Since we're setting `x.y` to be a callback (which, by definition, won't run until some time later), by the time\n // the function runs (causing `f` to run, causing `x.y` to run), `x.y` will point to the callback itself, rather\n // than its original value. So calling it will call the callback which will call `f` which will call `x.y` which\n // will call the callback which will call `f` which will call `x.y`... and on and on. Theoretically this could also\n // be fixed by using `bind`, but this is way simpler.)\n const origEntryProperty = newConfig.entry;\n newConfig.entry = async () => addSentryToClientEntryProperty(origEntryProperty, buildContext);\n\n const clientSentryConfigFileName = getClientSentryConfigFile(projectDir);\n if (clientSentryConfigFileName) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] DEPRECATION WARNING: It is recommended renaming your \\`${clientSentryConfigFileName}\\` file, or moving its content to \\`instrumentation-client.ts\\`. When using Turbopack \\`${clientSentryConfigFileName}\\` will no longer work. Read more about the \\`instrumentation-client.ts\\` file: https://nextjs.org/docs/app/api-reference/file-conventions/instrumentation-client`,\n );\n }\n }\n\n const isStaticExport = userNextConfig?.output === 'export';\n\n // We don't want to do any webpack plugin stuff OR any source maps stuff in dev mode or for the server on static-only builds.\n // Symbolication for dev-mode errors is done elsewhere.\n if (!(isDev || (isStaticExport && isServer))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { sentryWebpackPlugin } = loadModule<{ sentryWebpackPlugin: any }>('@sentry/webpack-plugin', module) ?? {};\n\n if (sentryWebpackPlugin) {\n if (!userSentryOptions.sourcemaps?.disable) {\n // Source maps can be configured in 3 ways:\n // 1. (next config): productionBrowserSourceMaps\n // 2. (next config): experimental.serverSourceMaps\n // 3. custom webpack configuration\n //\n // We only update this if no explicit value is set\n // (Next.js defaults to `false`: https://github.com/vercel/next.js/blob/5f4f96c133bd6b10954812cc2fef6af085b82aa5/packages/next/src/build/webpack/config/blocks/base.ts#L61)\n if (!newConfig.devtool) {\n debug.log(`[@sentry/nextjs] Automatically enabling source map generation for ${runtime} build.`);\n // `hidden-source-map` produces the same sourcemaps as `source-map`, but doesn't include the `sourceMappingURL`\n // comment at the bottom. For folks who aren't publicly hosting their sourcemaps, this is helpful because then\n // the browser won't look for them and throw errors into the console when it can't find them. Because this is a\n // front-end-only problem, and because `sentry-cli` handles sourcemaps more reliably with the comment than\n // without, the option to use `hidden-source-map` only applies to the client-side build.\n if (isServer) {\n newConfig.devtool = 'source-map';\n } else {\n newConfig.devtool = 'hidden-source-map';\n }\n }\n\n // enable source map deletion if not explicitly disabled\n if (!isServer && userSentryOptions.sourcemaps?.deleteSourcemapsAfterUpload === undefined) {\n debug.warn(\n '[@sentry/nextjs] Source maps will be automatically deleted after being uploaded to Sentry. If you want to keep the source maps, set the `sourcemaps.deleteSourcemapsAfterUpload` option to false in `withSentryConfig()`. If you do not want to generate and upload sourcemaps at all, set the `sourcemaps.disable` option to true.',\n );\n userSentryOptions.sourcemaps = {\n ...userSentryOptions.sourcemaps,\n deleteSourcemapsAfterUpload: true,\n };\n }\n }\n\n newConfig.plugins = newConfig.plugins || [];\n const { config: userNextConfig, dir, nextRuntime } = buildContext;\n const buildTool = isServer ? (nextRuntime === 'edge' ? 'webpack-edge' : 'webpack-nodejs') : 'webpack-client';\n const projectDir = normalizePathForGlob(dir);\n const distDir = normalizePathForGlob((userNextConfig as NextConfigObject).distDir ?? '.next');\n const distDirAbsPath = path.posix.join(projectDir, distDir);\n\n const sentryWebpackPluginInstance = sentryWebpackPlugin(\n getBuildPluginOptions({\n sentryBuildOptions: userSentryOptions,\n releaseName,\n distDirAbsPath,\n buildTool,\n useRunAfterProductionCompileHook,\n }),\n );\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n sentryWebpackPluginInstance._name = 'sentry-webpack-plugin'; // For tests and debugging. Serves no other purpose.\n newConfig.plugins.push(sentryWebpackPluginInstance);\n }\n }\n\n if (userSentryOptions.webpack?.treeshake) {\n setupTreeshakingFromConfig(userSentryOptions, newConfig, buildContext);\n }\n\n // We inject a map of dependencies that the nextjs app has, as we cannot reliably extract them at runtime, sadly\n newConfig.plugins = newConfig.plugins || [];\n newConfig.plugins.push(\n new buildContext.webpack.DefinePlugin({\n __SENTRY_SERVER_MODULES__: JSON.stringify(getPackageModules(projectDir)),\n }),\n );\n\n return newConfig;\n };\n}\n\n/**\n * Modify the webpack `entry` property so that the code in `sentry.client.config.js` is\n * included in the the necessary bundles.\n *\n * @param currentEntryProperty The value of the property before Sentry code has been injected\n * @param buildContext Object passed by nextjs containing metadata about the build\n * @returns The value which the new `entry` property (which will be a function) will return (TODO: this should return\n * the function, rather than the function's return value)\n */\nasync function addSentryToClientEntryProperty(\n currentEntryProperty: WebpackEntryProperty,\n buildContext: BuildContext,\n): Promise {\n // The `entry` entry in a webpack config can be a string, array of strings, object, or function. By default, nextjs\n // sets it to an async function which returns the promise of an object of string arrays. Because we don't know whether\n // someone else has come along before us and changed that, we need to check a few things along the way. The one thing\n // we know is that it won't have gotten *simpler* in form, so we only need to worry about the object and function\n // options. See https://webpack.js.org/configuration/entry-context/#entry.\n\n const { dir: projectDir, dev: isDevMode } = buildContext;\n\n const newEntryProperty =\n typeof currentEntryProperty === 'function' ? await currentEntryProperty() : { ...currentEntryProperty };\n\n const clientSentryConfigFileName = getClientSentryConfigFile(projectDir);\n const instrumentationClientFileName = getInstrumentationClientFile(projectDir);\n\n const filesToInject = [];\n if (clientSentryConfigFileName) {\n // we need to turn the filename into a path so webpack can find it\n filesToInject.push(`./${clientSentryConfigFileName}`);\n }\n if (instrumentationClientFileName) {\n // we need to turn the filename into a path so webpack can find it\n filesToInject.push(`./${instrumentationClientFileName}`);\n }\n\n // inject into all entry points which might contain user's code\n for (const entryPointName in newEntryProperty) {\n if (\n entryPointName === 'pages/_app' ||\n // entrypoint for `/app` pages\n entryPointName === 'main-app'\n ) {\n addFilesToWebpackEntryPoint(newEntryProperty, entryPointName, filesToInject, isDevMode);\n }\n }\n\n return newEntryProperty;\n}\n\n/**\n * Gets the content of the user's instrumentation file\n */\nfunction getInstrumentationFile(projectDir: string, dotPrefixedExtensions: string[]): string | null {\n const paths = dotPrefixedExtensions.flatMap(extension => [\n ['src', `instrumentation${extension}`],\n [`instrumentation${extension}`],\n ]);\n\n for (const pathSegments of paths) {\n try {\n return fs.readFileSync(path.resolve(projectDir, ...pathSegments), { encoding: 'utf-8' });\n } catch {\n // no-op\n }\n }\n\n return null;\n}\n\n/**\n * Make sure the instrumentation file has a `onRequestError` Handler\n */\nfunction warnAboutMissingOnRequestErrorHandler(instrumentationFile: string | null): void {\n if (!instrumentationFile) {\n if (!process.env.SENTRY_SUPPRESS_INSTRUMENTATION_FILE_WARNING) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not find a Next.js instrumentation file. This indicates an incomplete configuration of the Sentry SDK. An instrumentation file is required for the Sentry SDK to be initialized on the server: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#create-initialization-config-files (you can suppress this warning by setting SENTRY_SUPPRESS_INSTRUMENTATION_FILE_WARNING=1 as environment variable)',\n );\n }\n return;\n }\n\n if (!instrumentationFile.includes('onRequestError')) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not find `onRequestError` hook in instrumentation file. This indicates outdated configuration of the Sentry SDK. Use `Sentry.captureRequestError` to instrument the `onRequestError` hook: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#errors-from-nested-react-server-components',\n );\n }\n}\n\n/**\n * Searches for old `sentry.(server|edge).config.ts` files and Next.js instrumentation hooks and warns if there are \"old\"\n * config files and no signs of them inside the instrumentation hook.\n *\n * @param projectDir The root directory of the project, where config files would be located\n * @param platform Either \"server\" or \"edge\", so that we know which file to look for\n */\nfunction warnAboutDeprecatedConfigFiles(\n projectDir: string,\n instrumentationFile: string | null,\n platform: 'server' | 'edge',\n): void {\n const hasInstrumentationHookWithIndicationsOfSentry =\n instrumentationFile &&\n (instrumentationFile.includes('@sentry/') ||\n instrumentationFile.match(/sentry\\.(server|edge)\\.config(\\.(ts|js))?/));\n\n if (hasInstrumentationHookWithIndicationsOfSentry) {\n return;\n }\n\n for (const filename of [`sentry.${platform}.config.ts`, `sentry.${platform}.config.js`]) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] It appears you've configured a \\`${filename}\\` file. Please ensure to put this file's content into the \\`register()\\` function of a Next.js instrumentation file instead. To ensure correct functionality of the SDK, \\`Sentry.init\\` must be called inside of an instrumentation file. Learn more about setting up an instrumentation file in Next.js: https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation. You can safely delete the \\`${filename}\\` file afterward.`,\n );\n }\n }\n}\n\n/**\n * Searches for a `sentry.client.config.ts|js` file and returns its file name if it finds one. (ts being prioritized)\n *\n * @param projectDir The root directory of the project, where config files would be located\n */\nfunction getClientSentryConfigFile(projectDir: string): string | void {\n const possibilities = ['sentry.client.config.ts', 'sentry.client.config.js'];\n\n for (const filename of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n return filename;\n }\n }\n}\n\n/**\n * Searches for a `instrumentation-client.ts|js` file and returns its file name if it finds one. (ts being prioritized)\n *\n * @param projectDir The root directory of the project, where config files would be located\n */\nfunction getInstrumentationClientFile(projectDir: string): string | void {\n const possibilities = [\n ['src', 'instrumentation-client.js'],\n ['src', 'instrumentation-client.ts'],\n ['instrumentation-client.js'],\n ['instrumentation-client.ts'],\n ];\n\n for (const pathParts of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, ...pathParts))) {\n return path.join(...pathParts);\n }\n }\n}\n\n/**\n * Add files to a specific element of the given `entry` webpack config property.\n *\n * @param entryProperty The existing `entry` config object\n * @param entryPointName The key where the file should be injected\n * @param filesToInsert An array of paths to the injected files\n */\nfunction addFilesToWebpackEntryPoint(\n entryProperty: EntryPropertyObject,\n entryPointName: string,\n filesToInsert: string[],\n isDevMode: boolean,\n): void {\n // BIG FAT NOTE: Order of insertion seems to matter here. If we insert the new files before the `currentEntrypoint`s,\n // the Next.js dev server breaks. Because we generally still want the SDK to be initialized as early as possible we\n // still keep it at the start of the entrypoints if we are not in dev mode.\n\n // can be a string, array of strings, or object whose `import` property is one of those two\n const currentEntryPoint = entryProperty[entryPointName];\n let newEntryPoint = currentEntryPoint;\n\n if (typeof currentEntryPoint === 'string' || Array.isArray(currentEntryPoint)) {\n newEntryPoint = Array.isArray(currentEntryPoint) ? currentEntryPoint : [currentEntryPoint];\n if (newEntryPoint.some(entry => filesToInsert.includes(entry))) {\n return;\n }\n\n if (isDevMode) {\n // Inserting at beginning breaks dev mode so we insert at the end\n newEntryPoint.push(...filesToInsert);\n } else {\n // In other modes we insert at the beginning so that the SDK initializes as early as possible\n newEntryPoint.unshift(...filesToInsert);\n }\n }\n // descriptor object (webpack 5+)\n else if (typeof currentEntryPoint === 'object' && 'import' in currentEntryPoint) {\n const currentImportValue = currentEntryPoint.import;\n const newImportValue = Array.isArray(currentImportValue) ? currentImportValue : [currentImportValue];\n if (newImportValue.some(entry => filesToInsert.includes(entry))) {\n return;\n }\n\n if (isDevMode) {\n // Inserting at beginning breaks dev mode so we insert at the end\n newImportValue.push(...filesToInsert);\n } else {\n // In other modes we insert at the beginning so that the SDK initializes as early as possible\n newImportValue.unshift(...filesToInsert);\n }\n\n newEntryPoint = {\n ...currentEntryPoint,\n import: newImportValue,\n };\n }\n // malformed entry point (use `console.error` rather than `debug.error` because it will always be printed, regardless\n // of SDK settings)\n else {\n // eslint-disable-next-line no-console\n console.error(\n 'Sentry Logger [Error]:',\n `Could not inject SDK initialization code into entry point ${entryPointName}, as its current value is not in a recognized format.\\n`,\n 'Expected: string | Array | { [key:string]: any, import: string | Array }\\n',\n `Got: ${currentEntryPoint}`,\n );\n }\n\n if (newEntryPoint) {\n entryProperty[entryPointName] = newEntryPoint;\n }\n}\n\n/**\n * Ensure that `newConfig.module.rules` exists. Modifies the given config in place but also returns it in order to\n * change its type.\n *\n * @param newConfig A webpack config object which may or may not contain `module` and `module.rules`\n * @returns The same object, with an empty `module.rules` array added if necessary\n */\nfunction setUpModuleRules(newConfig: WebpackConfigObject): WebpackConfigObjectWithModuleRules {\n newConfig.module = {\n ...newConfig.module,\n rules: [...(newConfig.module?.rules || [])],\n };\n // Surprising that we have to assert the type here, since we've demonstrably guaranteed the existence of\n // `newConfig.module.rules` just above, but ¯\\_(ツ)_/¯\n return newConfig as WebpackConfigObjectWithModuleRules;\n}\n\n/**\n * Adds loaders to inject values on the global object based on user configuration.\n */\n// TODO: Remove this loader and replace it with a nextConfig.env (https://web.archive.org/web/20240917153554/https://nextjs.org/docs/app/api-reference/next-config-js/env) or define based (https://github.com/vercel/next.js/discussions/71476) approach.\n// In order to remove this loader though we need to make sure the minimum supported Next.js version includes this PR (https://github.com/vercel/next.js/pull/61194), otherwise the nextConfig.env based approach will not work, as our SDK code is not processed by Next.js.\nfunction addValueInjectionLoader({\n newConfig,\n userNextConfig,\n userSentryOptions,\n buildContext,\n releaseName,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n}: {\n newConfig: WebpackConfigObjectWithModuleRules;\n userNextConfig: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n buildContext: BuildContext;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n vercelCronsConfig: VercelCronsConfig;\n}): void {\n const assetPrefix = userNextConfig.assetPrefix || userNextConfig.basePath || '';\n\n // Check if release creation is disabled to prevent injection that breaks build determinism\n const shouldCreateRelease = userSentryOptions.release?.create !== false;\n const releaseToInject = releaseName && shouldCreateRelease ? releaseName : undefined;\n\n const isomorphicValues = {\n // `rewritesTunnel` set by the user in Next.js config\n _sentryRewritesTunnelPath:\n userSentryOptions.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${userNextConfig.basePath ?? ''}${userSentryOptions.tunnelRoute}`\n : undefined,\n\n // The webpack plugin's release injection breaks the `app` directory so we inject the release manually here instead.\n // Having a release defined in dev-mode spams releases in Sentry so we only set one in non-dev mode\n // Only inject if release creation is not explicitly disabled (to maintain build determinism)\n SENTRY_RELEASE: releaseToInject && !buildContext.dev ? { id: releaseToInject } : undefined,\n _sentryBasePath: buildContext.dev ? userNextConfig.basePath : undefined,\n // This is used to determine version-based dev-symbolication behavior\n _sentryNextJsVersion: nextJsVersion,\n };\n\n const serverValues = {\n ...isomorphicValues,\n // Make sure that if we have a windows path, the backslashes are interpreted as such (rather than as escape\n // characters)\n _sentryRewriteFramesDistDir: userNextConfig.distDir?.replace(/\\\\/g, '\\\\\\\\') || '.next',\n // Inject Vercel crons config for server-side cron auto-instrumentation\n _sentryVercelCronsConfig: vercelCronsConfig ? JSON.stringify(vercelCronsConfig) : undefined,\n };\n\n const clientValues = {\n ...isomorphicValues,\n // Get the path part of `assetPrefix`, minus any trailing slash. (We use a placeholder for the origin if\n // `assetPrefix` doesn't include one. Since we only care about the path, it doesn't matter what it is.)\n _sentryRewriteFramesAssetPrefixPath: assetPrefix\n ? new URL(assetPrefix, 'http://dogs.are.great').pathname.replace(/\\/$/, '')\n : '',\n _sentryAssetPrefix: userNextConfig.assetPrefix,\n _sentryExperimentalThirdPartyOriginStackFrames: userSentryOptions._experimental?.thirdPartyOriginStackFrames\n ? 'true'\n : undefined,\n _sentryRouteManifest: JSON.stringify(routeManifest),\n };\n\n if (buildContext.isServer) {\n newConfig.module.rules.push({\n // TODO: Find a more bulletproof way of matching. For now this is fine and doesn't hurt anyone. It merely sets some globals.\n test: /(src[\\\\/])?instrumentation.(js|ts)/,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders/valueInjectionLoader.js'),\n options: {\n values: serverValues,\n },\n },\n ],\n });\n } else {\n newConfig.module.rules.push({\n test: /(?:sentry\\.client\\.config\\.(jsx?|tsx?)|(?:src[\\\\/])?instrumentation-client\\.(js|ts))$/,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders/valueInjectionLoader.js'),\n options: {\n values: clientValues,\n },\n },\n ],\n });\n }\n}\n\nfunction resolveNextPackageDirFromDirectory(basedir: string): string | undefined {\n try {\n return path.dirname(createRequire(`${basedir}/`).resolve('next/package.json'));\n } catch {\n // Should not happen in theory\n return undefined;\n }\n}\n\nconst POTENTIAL_REQUEST_ASYNC_STORAGE_LOCATIONS = [\n // Original location of RequestAsyncStorage\n // https://github.com/vercel/next.js/blob/46151dd68b417e7850146d00354f89930d10b43b/packages/next/src/client/components/request-async-storage.ts\n 'next/dist/client/components/request-async-storage.js',\n // Introduced in Next.js 13.4.20\n // https://github.com/vercel/next.js/blob/e1bc270830f2fc2df3542d4ef4c61b916c802df3/packages/next/src/client/components/request-async-storage.external.ts\n 'next/dist/client/components/request-async-storage.external.js',\n // Introduced in Next.js 15.0.0-canary.180\n // https://github.com/vercel/next.js/blob/541167b9b0fed6af9f36472e632863ffec41f18c/packages/next/src/server/app-render/work-unit-async-storage.external.ts\n 'next/dist/server/app-render/work-unit-async-storage.external.js',\n // Introduced in Next.js 15.0.0-canary.182\n // https://github.com/vercel/next.js/blob/f35159e5e80138ca7373f57b47edcaae3bcf1728/packages/next/src/client/components/work-unit-async-storage.external.ts\n 'next/dist/client/components/work-unit-async-storage.external.js',\n];\n\nfunction getRequestAsyncStorageModuleLocation(\n webpackContextDir: string,\n webpackResolvableModuleLocations: string[] | undefined,\n): string | undefined {\n if (webpackResolvableModuleLocations === undefined) {\n return undefined;\n }\n\n const absoluteWebpackResolvableModuleLocations = webpackResolvableModuleLocations.map(loc =>\n path.resolve(webpackContextDir, loc),\n );\n\n for (const webpackResolvableLocation of absoluteWebpackResolvableModuleLocations) {\n const nextPackageDir = resolveNextPackageDirFromDirectory(webpackResolvableLocation);\n if (nextPackageDir) {\n const asyncLocalStorageLocation = POTENTIAL_REQUEST_ASYNC_STORAGE_LOCATIONS.find(loc =>\n fs.existsSync(path.join(nextPackageDir, '..', loc)),\n );\n if (asyncLocalStorageLocation) {\n return asyncLocalStorageLocation;\n }\n }\n }\n\n return undefined;\n}\n\nfunction addOtelWarningIgnoreRule(newConfig: WebpackConfigObjectWithModuleRules): void {\n const ignoreRules = [\n // Inspired by @matmannion: https://github.com/getsentry/sentry-javascript/issues/12077#issuecomment-2180307072\n (warning, compilation) => {\n // This is wrapped in try-catch because we are vendoring types for this hook and we can't be 100% sure that we are accessing API that is there\n try {\n if (!warning.module) {\n return false;\n }\n\n const isDependencyThatMayRaiseCriticalDependencyMessage =\n /@opentelemetry\\/instrumentation/.test(warning.module.readableIdentifier(compilation.requestShortener)) ||\n /@prisma\\/instrumentation/.test(warning.module.readableIdentifier(compilation.requestShortener));\n const isCriticalDependencyMessage = /Critical dependency/.test(warning.message);\n\n return isDependencyThatMayRaiseCriticalDependencyMessage && isCriticalDependencyMessage;\n } catch {\n return false;\n }\n },\n // We provide these objects in addition to the hook above to provide redundancy in case the hook fails.\n { module: /@opentelemetry\\/instrumentation/, message: /Critical dependency/ },\n { module: /@prisma\\/instrumentation/, message: /Critical dependency/ },\n { module: /require-in-the-middle/, message: /Critical dependency/ },\n ] satisfies IgnoreWarningsOption;\n\n if (newConfig.ignoreWarnings === undefined) {\n newConfig.ignoreWarnings = ignoreRules;\n } else if (Array.isArray(newConfig.ignoreWarnings)) {\n newConfig.ignoreWarnings.push(...ignoreRules);\n }\n}\n\nfunction addEdgeRuntimePolyfills(newConfig: WebpackConfigObjectWithModuleRules, buildContext: BuildContext): void {\n // Use ProvidePlugin to inject performance global only when accessed\n newConfig.plugins = newConfig.plugins || [];\n newConfig.plugins.push(\n new buildContext.webpack.ProvidePlugin({\n performance: [path.resolve(__dirname, 'polyfills', 'perf_hooks.js'), 'performance'],\n }),\n );\n\n // Add module resolution aliases for problematic Node.js modules in edge runtime\n newConfig.resolve = newConfig.resolve || {};\n newConfig.resolve.alias = {\n ...newConfig.resolve.alias,\n // Redirect perf_hooks imports to a polyfilled version\n perf_hooks: path.resolve(__dirname, 'polyfills', 'perf_hooks.js'),\n };\n}\n\n/**\n * Sets up the tree-shaking flags based on the user's configuration.\n * https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/tree-shaking/\n */\nfunction setupTreeshakingFromConfig(\n userSentryOptions: SentryBuildOptions,\n newConfig: WebpackConfigObjectWithModuleRules,\n buildContext: BuildContext,\n): void {\n const defines: Record = {};\n\n newConfig.plugins = newConfig.plugins || [];\n\n if (userSentryOptions.webpack?.treeshake?.removeDebugLogging) {\n defines.__SENTRY_DEBUG__ = false;\n }\n\n if (userSentryOptions.webpack?.treeshake?.removeTracing) {\n defines.__SENTRY_TRACING__ = false;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayIframe) {\n defines.__RRWEB_EXCLUDE_IFRAME__ = true;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayShadowDOM) {\n defines.__RRWEB_EXCLUDE_SHADOW_DOM__ = true;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayCompressionWorker) {\n defines.__SENTRY_EXCLUDE_REPLAY_WORKER__ = true;\n }\n\n // Only add DefinePlugin if there are actual defines to set\n if (Object.keys(defines).length > 0) {\n newConfig.plugins.push(new buildContext.webpack.DefinePlugin(defines));\n }\n}\n","// Packages we auto-instrument need to be external for instrumentation to work\n// Next.js externalizes some packages by default, see: https://nextjs.org/docs/app/api-reference/config/next-config-js/serverExternalPackages\n// Others we need to add ourselves\n//\n// NOTE: 'ai' (Vercel AI SDK) is intentionally NOT included in this list.\n// When externalized, Next.js doesn't properly handle the package's conditional exports,\n// specifically the \"react-server\" export condition. This causes client-side code to be\n// loaded in server components instead of the appropriate server-side functions.\nexport const DEFAULT_SERVER_EXTERNAL_PACKAGES = [\n 'amqplib',\n 'connect',\n 'dataloader',\n 'express',\n 'generic-pool',\n 'graphql',\n '@hapi/hapi',\n 'ioredis',\n 'kafkajs',\n 'koa',\n 'lru-memoizer',\n 'mongodb',\n 'mongoose',\n 'mysql',\n 'mysql2',\n 'knex',\n 'pg',\n 'pg-pool',\n '@node-redis/client',\n '@redis/client',\n 'redis',\n 'tedious',\n];\n","import { handleRunAfterProductionCompile } from '../handleRunAfterProductionCompile';\nimport type { RouteManifest } from '../manifest/types';\nimport { constructTurbopackConfig } from '../turbopack';\nimport type { NextConfigObject, SentryBuildOptions, TurbopackOptions } from '../types';\nimport { detectActiveBundler, supportsProductionCompileHook } from '../util';\nimport { constructWebpackConfigFunction } from '../webpack';\nimport { DEFAULT_SERVER_EXTERNAL_PACKAGES } from './constants';\nimport type { VercelCronsConfigResult } from './getFinalConfigObjectUtils';\n\n/**\n * Information about the active bundler and feature support based on Next.js version.\n */\nexport type BundlerInfo = {\n isTurbopack: boolean;\n isWebpack: boolean;\n isTurbopackSupported: boolean;\n};\n\n/**\n * Detects which bundler is active (webpack vs turbopack) and whether turbopack features are supported.\n */\nexport function getBundlerInfo(nextJsVersion: string | undefined): BundlerInfo {\n const activeBundler = detectActiveBundler();\n const isTurbopack = activeBundler === 'turbopack';\n const isWebpack = activeBundler === 'webpack';\n const isTurbopackSupported = supportsProductionCompileHook(nextJsVersion ?? '');\n\n return { isTurbopack, isWebpack, isTurbopackSupported };\n}\n\n/**\n * Warns if turbopack is in use but the detected Next.js version is unsupported.\n */\nexport function maybeWarnAboutUnsupportedTurbopack(nextJsVersion: string | undefined, bundlerInfo: BundlerInfo): void {\n // Warn if using turbopack with an unsupported Next.js version\n if (!bundlerInfo.isTurbopackSupported && bundlerInfo.isTurbopack) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] WARNING: You are using the Sentry SDK with Turbopack. The Sentry SDK is compatible with Turbopack on Next.js version 15.4.1 or later. You are currently on ${nextJsVersion}. Please upgrade to a newer Next.js version to use the Sentry SDK with Turbopack.`,\n );\n }\n}\n\n/**\n * Warns if `useRunAfterProductionCompileHook` is enabled in webpack mode but the Next.js version is unsupported.\n */\nexport function maybeWarnAboutUnsupportedRunAfterProductionCompileHook(\n nextJsVersion: string | undefined,\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): void {\n // Webpack case - warn if trying to use runAfterProductionCompile hook with unsupported Next.js version\n if (\n userSentryOptions.useRunAfterProductionCompileHook &&\n !supportsProductionCompileHook(nextJsVersion ?? '') &&\n bundlerInfo.isWebpack\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] The configured `useRunAfterProductionCompileHook` option is not compatible with your current Next.js version. This option is only supported on Next.js version 15.4.1 or later. Will not run source map and release management logic.',\n );\n }\n}\n\n/**\n * Constructs turbopack config when turbopack is active.\n */\nexport function maybeConstructTurbopackConfig(\n incomingUserNextConfigObject: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n routeManifest: RouteManifest | undefined,\n nextJsVersion: string | undefined,\n bundlerInfo: BundlerInfo,\n vercelCronsConfigResult: VercelCronsConfigResult,\n): TurbopackOptions | undefined {\n if (!bundlerInfo.isTurbopack) {\n return undefined;\n }\n\n // Only pass crons config if the span-based approach is enabled\n const vercelCronsConfig = vercelCronsConfigResult.strategy === 'spans' ? vercelCronsConfigResult.config : undefined;\n\n return constructTurbopackConfig({\n userNextConfig: incomingUserNextConfigObject,\n userSentryOptions,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n });\n}\n\n/**\n * Resolves whether to use the `runAfterProductionCompile` hook based on options and bundler.\n */\nexport function resolveUseRunAfterProductionCompileHookOption(\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): boolean {\n // If not explicitly set, turbopack uses the runAfterProductionCompile hook (as there are no alternatives), webpack does not.\n return userSentryOptions.useRunAfterProductionCompileHook ?? (bundlerInfo.isTurbopack ? true : false);\n}\n\n/**\n * Hooks into Next.js' `compiler.runAfterProductionCompile` to run Sentry release/sourcemap handling.\n *\n * Note: this mutates `incomingUserNextConfigObject`.\n */\nexport function maybeSetUpRunAfterProductionCompileHook({\n incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n nextJsVersion,\n bundlerInfo,\n turboPackConfig,\n shouldUseRunAfterProductionCompileHook,\n}: {\n incomingUserNextConfigObject: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n nextJsVersion: string | undefined;\n bundlerInfo: BundlerInfo;\n turboPackConfig: TurbopackOptions | undefined;\n shouldUseRunAfterProductionCompileHook: boolean;\n}): void {\n if (!shouldUseRunAfterProductionCompileHook) {\n return;\n }\n\n if (!supportsProductionCompileHook(nextJsVersion ?? '')) {\n return;\n }\n\n if (incomingUserNextConfigObject?.compiler?.runAfterProductionCompile === undefined) {\n incomingUserNextConfigObject.compiler ??= {};\n\n incomingUserNextConfigObject.compiler.runAfterProductionCompile = async ({ distDir }) => {\n await handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool: bundlerInfo.isTurbopack ? 'turbopack' : 'webpack',\n usesNativeDebugIds: bundlerInfo.isTurbopack ? turboPackConfig?.debugIds : undefined,\n },\n userSentryOptions,\n );\n };\n return;\n }\n\n if (typeof incomingUserNextConfigObject.compiler.runAfterProductionCompile === 'function') {\n incomingUserNextConfigObject.compiler.runAfterProductionCompile = new Proxy(\n incomingUserNextConfigObject.compiler.runAfterProductionCompile,\n {\n async apply(target, thisArg, argArray) {\n const { distDir }: { distDir: string } = argArray[0] ?? { distDir: '.next' };\n await target.apply(thisArg, argArray);\n await handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool: bundlerInfo.isTurbopack ? 'turbopack' : 'webpack',\n usesNativeDebugIds: bundlerInfo.isTurbopack ? turboPackConfig?.debugIds : undefined,\n },\n userSentryOptions,\n );\n },\n },\n );\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] The configured `compiler.runAfterProductionCompile` option is not a function. Will not run source map and release management logic.',\n );\n}\n\n/**\n * For supported turbopack builds, auto-enables browser sourcemaps and defaults to deleting them after upload.\n *\n * Note: this mutates both `incomingUserNextConfigObject` and `userSentryOptions`.\n */\nexport function maybeEnableTurbopackSourcemaps(\n incomingUserNextConfigObject: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): void {\n // Enable source maps for turbopack builds\n if (!bundlerInfo.isTurbopackSupported || !bundlerInfo.isTurbopack || userSentryOptions.sourcemaps?.disable) {\n return;\n }\n\n // Only set if not already configured by user\n if (incomingUserNextConfigObject.productionBrowserSourceMaps !== undefined) {\n return;\n }\n\n if (userSentryOptions.debug) {\n // eslint-disable-next-line no-console\n console.log('[@sentry/nextjs] Automatically enabling browser source map generation for turbopack build.');\n }\n incomingUserNextConfigObject.productionBrowserSourceMaps = true;\n\n // Enable source map deletion if not explicitly disabled\n if (userSentryOptions.sourcemaps?.deleteSourcemapsAfterUpload !== undefined) {\n return;\n }\n\n if (userSentryOptions.debug) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Source maps will be automatically deleted after being uploaded to Sentry. If you want to keep the source maps, set the `sourcemaps.deleteSourcemapsAfterUpload` option to false in `withSentryConfig()`. If you do not want to generate and upload sourcemaps at all, set the `sourcemaps.disable` option to true.',\n );\n }\n\n userSentryOptions.sourcemaps = {\n ...userSentryOptions.sourcemaps,\n deleteSourcemapsAfterUpload: true,\n };\n}\n\n/**\n * Returns the patch which ensures server-side auto-instrumented packages are externalized.\n */\nexport function getServerExternalPackagesPatch(\n incomingUserNextConfigObject: NextConfigObject,\n nextMajor: number | undefined,\n): Partial {\n if (nextMajor && nextMajor >= 15) {\n return {\n serverExternalPackages: [\n ...(incomingUserNextConfigObject.serverExternalPackages || []),\n ...DEFAULT_SERVER_EXTERNAL_PACKAGES,\n ],\n };\n }\n\n return {\n experimental: {\n ...incomingUserNextConfigObject.experimental,\n serverComponentsExternalPackages: [\n ...(incomingUserNextConfigObject.experimental?.serverComponentsExternalPackages || []),\n ...DEFAULT_SERVER_EXTERNAL_PACKAGES,\n ],\n },\n };\n}\n\n/**\n * Returns the patch for injecting Sentry's webpack config function (if enabled and applicable).\n */\nexport function getWebpackPatch({\n incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n routeManifest,\n nextJsVersion,\n shouldUseRunAfterProductionCompileHook,\n bundlerInfo,\n vercelCronsConfigResult,\n}: {\n incomingUserNextConfigObject: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n shouldUseRunAfterProductionCompileHook: boolean;\n bundlerInfo: BundlerInfo;\n vercelCronsConfigResult: VercelCronsConfigResult;\n}): Partial {\n if (!bundlerInfo.isWebpack || userSentryOptions.webpack?.disableSentryConfig) {\n return {};\n }\n\n return {\n webpack: constructWebpackConfigFunction({\n userNextConfig: incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n routeManifest,\n nextJsVersion,\n useRunAfterProductionCompileHook: shouldUseRunAfterProductionCompileHook,\n vercelCronsConfigResult,\n }),\n };\n}\n\n/**\n * Returns the patch for adding turbopack config (if enabled and supported).\n */\nexport function getTurbopackPatch(\n bundlerInfo: BundlerInfo,\n turboPackConfig: TurbopackOptions | undefined,\n): Partial {\n if (!bundlerInfo.isTurbopackSupported || !bundlerInfo.isTurbopack) {\n return {};\n }\n\n return { turbopack: turboPackConfig };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/**\n * Entrypoint for context API\n * @since 1.0.0\n */\nexport const context = ContextAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Meter } from './Meter';\nimport type {\n BatchObservableCallback,\n Counter,\n Gauge,\n Histogram,\n MetricAttributes,\n MetricOptions,\n Observable,\n ObservableCallback,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n UpDownCounter,\n} from './Metric';\n\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nexport class NoopMeter implements Meter {\n constructor() {}\n\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name: string, _options?: MetricOptions): Gauge {\n return NOOP_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name: string, _options?: MetricOptions): Histogram {\n return NOOP_HISTOGRAM_METRIC;\n }\n\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name: string, _options?: MetricOptions): Counter {\n return NOOP_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter {\n return NOOP_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(\n _name: string,\n _options?: MetricOptions\n ): ObservableGauge {\n return NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableCounter {\n return NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(\n _name: string,\n _options?: MetricOptions\n ): ObservableUpDownCounter {\n return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(\n _callback: BatchObservableCallback,\n _observables: Observable[]\n ): void {}\n\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback: BatchObservableCallback): void {}\n}\n\nexport class NoopMetric {}\n\nexport class NoopCounterMetric extends NoopMetric implements Counter {\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopUpDownCounterMetric\n extends NoopMetric\n implements UpDownCounter\n{\n add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopGaugeMetric extends NoopMetric implements Gauge {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopHistogramMetric extends NoopMetric implements Histogram {\n record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopObservableMetric {\n addCallback(_callback: ObservableCallback) {}\n\n removeCallback(_callback: ObservableCallback) {}\n}\n\nexport class NoopObservableCounterMetric\n extends NoopObservableMetric\n implements ObservableCounter {}\n\nexport class NoopObservableGaugeMetric\n extends NoopObservableMetric\n implements ObservableGauge {}\n\nexport class NoopObservableUpDownCounterMetric\n extends NoopObservableMetric\n implements ObservableUpDownCounter {}\n\nexport const NOOP_METER = new NoopMeter();\n\n// Synchronous instruments\nexport const NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexport const NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexport const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexport const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n\n// Asynchronous instruments\nexport const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexport const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexport const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC =\n new NoopObservableUpDownCounterMetric();\n\n/**\n * Create a no-op Meter\n *\n * @since 1.3.0\n */\nexport function createNoopMeter(): Meter {\n return NOOP_METER;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Meter, MeterOptions } from '../metrics/Meter';\nimport type { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nexport class MetricsAPI {\n private static _instance?: MetricsAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Metrics API */\n public static getInstance(): MetricsAPI {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n public setGlobalMeterProvider(provider: MeterProvider): boolean {\n return registerGlobal(API_NAME, provider, DiagAPI.instance());\n }\n\n /**\n * Returns the global meter provider.\n */\n public getMeterProvider(): MeterProvider {\n return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n }\n\n /**\n * Returns a meter from the global meter provider.\n */\n public getMeter(\n name: string,\n version?: string,\n options?: MeterOptions\n ): Meter {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n\n /** Remove the global meter provider */\n public disable(): void {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Meter, MeterOptions } from './Meter';\nimport type { MeterProvider } from './MeterProvider';\nimport { NOOP_METER } from './NoopMeter';\n\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nexport class NoopMeterProvider implements MeterProvider {\n getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter {\n return NOOP_METER;\n }\n}\n\nexport const NOOP_METER_PROVIDER = new NoopMeterProvider();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { MetricsAPI } from './api/metrics';\n/**\n * Entrypoint for metrics API\n *\n * @since 1.3.0\n */\nexport const metrics = MetricsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Baggage, BaggageEntry } from '../types';\n\nexport class BaggageImpl implements Baggage {\n private _entries: Map;\n\n constructor(entries?: Map) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n\n getEntry(key: string): BaggageEntry | undefined {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n\n return Object.assign({}, entry);\n }\n\n getAllEntries(): [string, BaggageEntry][] {\n return Array.from(this._entries.entries());\n }\n\n setEntry(key: string, entry: BaggageEntry): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n\n removeEntry(key: string): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n\n removeEntries(...keys: string[]): BaggageImpl {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n\n clear(): BaggageImpl {\n return new BaggageImpl();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DiagAPI } from '../api/diag';\nimport { BaggageImpl } from './internal/baggage-impl';\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\nimport type { Baggage, BaggageEntry, BaggageEntryMetadata } from './types';\n\nconst diag = DiagAPI.instance();\n\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nexport function createBaggage(\n entries: Record = {}\n): Baggage {\n return new BaggageImpl(new Map(Object.entries(entries)));\n}\n\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n * @since 1.0.0\n */\nexport function baggageEntryMetadataFromString(\n str: string\n): BaggageEntryMetadata {\n if (typeof str !== 'string') {\n diag.error(\n `Cannot create baggage metadata from unknown type: ${typeof str}`\n );\n str = '';\n }\n\n return {\n __TYPE__: baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator';\nimport type {\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n defaultTextMapGetter,\n defaultTextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n getBaggage,\n getActiveBaggage,\n setBaggage,\n deleteBaggage,\n} from '../baggage/context-helpers';\nimport { createBaggage } from '../baggage/utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n *\n * @since 1.0.0\n */\nexport class PropagationAPI {\n private static _instance?: PropagationAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Propagator API */\n public static getInstance(): PropagationAPI {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n public setGlobalPropagator(propagator: TextMapPropagator): boolean {\n return registerGlobal(API_NAME, propagator, DiagAPI.instance());\n }\n\n /**\n * Inject context into a carrier to be propagated inter-process\n *\n * @param context Context carrying tracing data to inject\n * @param carrier carrier to inject context into\n * @param setter Function used to set values on the carrier\n */\n public inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter = defaultTextMapSetter\n ): void {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\n\n /**\n * Extract context from a carrier\n *\n * @param context Context which the newly created context will inherit from\n * @param carrier Carrier to extract context from\n * @param getter Function used to extract keys from a carrier\n */\n public extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter = defaultTextMapGetter\n ): Context {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n public fields(): string[] {\n return this._getGlobalPropagator().fields();\n }\n\n /** Remove the global propagator */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n\n public createBaggage = createBaggage;\n\n public getBaggage = getBaggage;\n\n public getActiveBaggage = getActiveBaggage;\n\n public setBaggage = setBaggage;\n\n public deleteBaggage = deleteBaggage;\n\n private _getGlobalPropagator(): TextMapPropagator {\n return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ContextAPI } from '../api/context';\nimport { createContextKey } from '../context/context';\nimport type { Context } from '../context/types';\nimport type { Baggage } from './types';\n\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');\n\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getBaggage(context: Context): Baggage | undefined {\n return (context.getValue(BAGGAGE_KEY) as Baggage) || undefined;\n}\n\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getActiveBaggage(): Baggage | undefined {\n return getBaggage(ContextAPI.getInstance().active());\n}\n\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nexport function deleteBaggage(context: Context): Context {\n return context.deleteValue(BAGGAGE_KEY);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { PropagationAPI } from './api/propagation';\n/**\n * Entrypoint for propagation API\n *\n * @since 1.0.0\n */\nexport const propagation = PropagationAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexport const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '../context/types';\n\n/**\n * Injects `Context` into and extracts it from carriers that travel\n * in-band across process boundaries. Encoding is expected to conform to the\n * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request\n * headers.\n *\n * The carrier of propagated data on both the client (injector) and server\n * (extractor) side is usually an object such as http headers. Propagation is\n * usually implemented via library-specific request interceptors, where the\n * client-side injects values and the server-side extracts them.\n *\n * @since 1.0.0\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TextMapPropagator {\n /**\n * Injects values from a given `Context` into a carrier.\n *\n * OpenTelemetry defines a common set of format values (TextMapPropagator),\n * and each has an expected `carrier` type.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param setter an optional {@link TextMapSetter}. If undefined, values will be\n * set by direct object assignment.\n */\n inject(\n context: Context,\n carrier: Carrier,\n setter: TextMapSetter\n ): void;\n\n /**\n * Given a `Context` and a carrier, extract context values from a\n * carrier and return a new context, created from the old context, with the\n * extracted values.\n *\n * @param context the Context from which to extract values to transmit over\n * the wire.\n * @param carrier the carrier of propagation fields, such as http request\n * headers.\n * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all\n * own properties, and keys will be accessed by direct object access.\n */\n extract(\n context: Context,\n carrier: Carrier,\n getter: TextMapGetter\n ): Context;\n\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields(): string[];\n}\n\n/**\n * A setter is specified by the caller to define a specific method\n * to set key/value pairs on the carrier within a propagator\n *\n * @since 1.0.0\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TextMapSetter {\n /**\n * Callback used to set a key/value pair on an object.\n *\n * Should be called by the propagator each time a key/value pair\n * should be set, and should set that key/value pair on the propagator.\n *\n * @param carrier object or class which carries key/value pairs\n * @param key string key to modify\n * @param value value to be set to the key on the carrier\n */\n set(carrier: Carrier, key: string, value: string): void;\n}\n\n/**\n * A getter is specified by the caller to define a specific method\n * to get the value of a key from a carrier.\n *\n * @since 1.0.0\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface TextMapGetter {\n /**\n * Get a list of all keys available on the carrier.\n *\n * @param carrier\n */\n keys(carrier: Carrier): string[];\n\n /**\n * Get the value of a specific key from the carrier.\n *\n * @param carrier\n * @param key\n */\n get(carrier: Carrier, key: string): undefined | string | string[];\n}\n\n/**\n * @since 1.0.0\n */\nexport const defaultTextMapGetter: TextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\n\n/**\n * @since 1.0.0\n */\nexport const defaultTextMapSetter: TextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n\n carrier[key] = value;\n },\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '../context/types';\nimport type { TextMapPropagator } from './TextMapPropagator';\n\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nexport class NoopTextMapPropagator implements TextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context: Context, _carrier: unknown): void {}\n /** Noop extract function does nothing and returns the input context */\n extract(context: Context, _carrier: unknown): Context {\n return context;\n }\n fields(): string[] {\n return [];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport type { Span } from './span';\nimport type { SpanOptions } from './SpanOptions';\nimport type { Tracer } from './tracer';\nimport type { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n *\n * @since 1.0.0\n */\nexport class ProxyTracer implements Tracer {\n // When a real implementation is provided, this will be it\n private _delegate?: Tracer;\n private _provider: TracerDelegator;\n public readonly name: string;\n public readonly version?: string;\n public readonly options?: TracerOptions;\n\n constructor(\n provider: TracerDelegator,\n name: string,\n version?: string,\n options?: TracerOptions\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n return this._getTracer().startSpan(name, options, context);\n }\n\n startActiveSpan unknown>(\n _name: string,\n _options: F | SpanOptions,\n _context?: F | Context,\n _fn?: F\n ): ReturnType {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n private _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n\n const tracer = this._provider.getDelegateTracer(\n this.name,\n this.version,\n this.options\n );\n\n if (!tracer) {\n return NOOP_TRACER;\n }\n\n this._delegate = tracer;\n return this._delegate;\n }\n}\n\n/**\n * @since 1.0.3\n */\nexport interface TracerDelegator {\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ROOT_CONTEXT } from './context';\nimport type * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n active(): types.Context {\n return ROOT_CONTEXT;\n }\n\n with ReturnType>(\n _context: types.Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return fn.call(thisArg, ...args);\n }\n\n bind(_context: types.Context, target: T): T {\n return target;\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n return this;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport type { Context, ContextManager } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n *\n * @since 1.0.0\n */\nexport class ContextAPI {\n private static _instance?: ContextAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Context API */\n public static getInstance(): ContextAPI {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n public setGlobalContextManager(contextManager: ContextManager): boolean {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n }\n\n /**\n * Get the currently active context\n */\n public active(): Context {\n return this._getContextManager().active();\n }\n\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n public with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n public bind(context: Context, target: T): T {\n return this._getContextManager().bind(context, target);\n }\n\n private _getContextManager(): ContextManager {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n\n /** Disable and remove the global context manager */\n public disable() {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ContextAPI } from '../api/context';\nimport type { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport type { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport type { SpanOptions } from './SpanOptions';\nimport type { SpanContext } from './span_context';\nimport type { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n // startSpan starts a noop span.\n startSpan(\n name: string,\n options?: SpanOptions,\n context = contextApi.active()\n ): Span {\n const root = Boolean(options?.root);\n if (root) {\n return new NonRecordingSpan();\n }\n\n const parentFromContext = context && getSpanContext(context);\n\n if (\n isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)\n ) {\n return new NonRecordingSpan(parentFromContext);\n } else {\n return new NonRecordingSpan();\n }\n }\n\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: SpanOptions | undefined,\n ctx: Context | undefined,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: SpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as SpanOptions | undefined;\n ctx = arg3 as Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = setSpan(parentContext, span);\n\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\n\nfunction isSpanContext(spanContext: unknown): spanContext is SpanContext {\n return (\n spanContext !== null &&\n typeof spanContext === 'object' &&\n 'spanId' in spanContext &&\n typeof spanContext['spanId'] === 'string' &&\n 'traceId' in spanContext &&\n typeof spanContext['traceId'] === 'string' &&\n 'traceFlags' in spanContext &&\n typeof spanContext['traceFlags'] === 'number'\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createContextKey } from '../context/context';\nimport type { Context } from '../context/types';\nimport type { Span } from './span';\nimport type { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n return getSpan(ContextAPI.getInstance().active());\n}\n\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context: Context, span: Span): Context {\n return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n return context.deleteValue(SPAN_KEY);\n}\n\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(\n context: Context,\n spanContext: SpanContext\n): Context {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n return getSpan(context)?.spanContext();\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport type { Span } from './span';\nimport type { SpanContext } from './span_context';\n\n// Valid characters (0-9, a-f, A-F) are marked as 1.\nconst isHex = new Uint8Array([\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,\n]);\n\nfunction isValidHex(id: string, length: number): boolean {\n // As of 1.9.0 the id was allowed to be a non-string value,\n // even though it was not possible in the types.\n if (typeof id !== 'string' || id.length !== length) return false;\n\n let r = 0;\n for (let i = 0; i < id.length; i += 4) {\n r +=\n (isHex[id.charCodeAt(i)] | 0) +\n (isHex[id.charCodeAt(i + 1)] | 0) +\n (isHex[id.charCodeAt(i + 2)] | 0) +\n (isHex[id.charCodeAt(i + 3)] | 0);\n }\n\n return r === length;\n}\n\n/**\n * @since 1.0.0\n */\nexport function isValidTraceId(traceId: string): boolean {\n return isValidHex(traceId, 32) && traceId !== INVALID_TRACEID;\n}\n\n/**\n * @since 1.0.0\n */\nexport function isValidSpanId(spanId: string): boolean {\n return isValidHex(spanId, 16) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n *\n * @since 1.0.0\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n return (\n isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n );\n}\n\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n return new NonRecordingSpan(spanContext);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Tracer } from './tracer';\nimport type { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport type { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n *\n * @deprecated This will be removed in the next major version.\n * @since 1.0.0\n */\nexport class ProxyTracerProvider implements TracerProvider {\n private _delegate?: TracerProvider;\n\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n return (\n this.getDelegateTracer(name, version, options) ??\n new ProxyTracer(this, name, version, options)\n );\n }\n\n getDelegate(): TracerProvider {\n return this._delegate ?? NOOP_TRACER_PROVIDER;\n }\n\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate: TracerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined {\n return this._delegate?.getTracer(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport type { Tracer } from '../trace/tracer';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n *\n * @since 1.0.0\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n\n/**\n * Entrypoint for trace API\n *\n * @since 1.0.0\n */\nexport const trace = TraceAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @since 1.0.0\n */\nexport enum TraceFlags {\n /** Represents no flag set. */\n NONE = 0x0,\n /** Bit to represent whether trace is sampled in trace flags. */\n SAMPLED = 0x1 << 0,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\n/**\n * @since 1.0.0\n */\nexport const INVALID_SPANID = '0000000000000000';\n\n/**\n * @since 1.0.0\n */\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\n\n/**\n * @since 1.0.0\n */\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from './types';\n\n/**\n * Get a key to uniquely identify a context value\n *\n * @since 1.0.0\n */\nexport function createContextKey(description: string) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\n\nclass BaseContext implements Context {\n private _currentContext!: Map;\n\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext?: Map) {\n // for minification\n const self = this;\n\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n self.getValue = (key: symbol) => self._currentContext.get(key);\n\n self.setValue = (key: symbol, value: unknown): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n\n self.deleteValue = (key: symbol): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n public getValue!: (key: symbol) => unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n public setValue!: (key: symbol, value: unknown) => Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n public deleteValue!: (key: symbol) => Context;\n}\n\n/**\n * The root context is used as the default parent context when there is no active context\n *\n * @since 1.0.0\n */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Exception } from '../common/Exception';\nimport type { TimeInput } from '../common/Time';\nimport type { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport type { Span } from './span';\nimport type { SpanContext } from './span_context';\nimport type { SpanStatus } from './status';\nimport type { Link } from './link';\n\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nexport class NonRecordingSpan implements Span {\n private readonly _spanContext: SpanContext;\n\n constructor(spanContext: SpanContext = INVALID_SPAN_CONTEXT) {\n this._spanContext = spanContext;\n }\n\n // Returns a SpanContext.\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n // By default does nothing\n setAttribute(_key: string, _value: unknown): this {\n return this;\n }\n\n // By default does nothing\n setAttributes(_attributes: SpanAttributes): this {\n return this;\n }\n\n // By default does nothing\n addEvent(_name: string, _attributes?: SpanAttributes): this {\n return this;\n }\n\n addLink(_link: Link): this {\n return this;\n }\n\n addLinks(_links: Link[]): this {\n return this;\n }\n\n // By default does nothing\n setStatus(_status: SpanStatus): this {\n return this;\n }\n\n // By default does nothing\n updateName(_name: string): this {\n return this;\n }\n\n // By default does nothing\n end(_endTime?: TimeInput): void {}\n\n // isRecording always returns false for NonRecordingSpan.\n isRecording(): boolean {\n return false;\n }\n\n // By default does nothing\n recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { NoopTracer } from './NoopTracer';\nimport type { Tracer } from './tracer';\nimport type { TracerOptions } from './tracer_options';\nimport type { TracerProvider } from './tracer_provider';\n\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nexport class NoopTracerProvider implements TracerProvider {\n getTracer(\n _name?: string,\n _version?: string,\n _options?: TracerOptions\n ): Tracer {\n return new NoopTracer();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @since 1.0.0\n */\nexport enum SpanKind {\n /** Default value. Indicates that the span is used internally. */\n INTERNAL = 0,\n\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SERVER = 1,\n\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n CLIENT = 2,\n\n /**\n * Indicates that the span describes producer sending a message to a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n PRODUCER = 3,\n\n /**\n * Indicates that the span describes consumer receiving a message from a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n CONSUMER = 4,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @since 1.0.0\n */\nexport interface SpanStatus {\n /** The status code of this message. */\n code: SpanStatusCode;\n /** A developer-facing error message. */\n message?: string;\n}\n\n/**\n * An enumeration of status codes.\n *\n * @since 1.0.0\n */\nexport enum SpanStatusCode {\n /**\n * The default status.\n */\n UNSET = 0,\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n OK = 1,\n /**\n * The operation contains an error.\n */\n ERROR = 2,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanAttributes } from './attributes';\nimport type { TraceState } from './trace_state';\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n *\n * @since 1.0.0\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n *\n * @since 1.0.0\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { DiagLogger, DiagLogFunction } from './types';\n\ntype ConsoleMapKeys = 'error' | 'warn' | 'info' | 'debug' | 'trace';\nconst consoleMap: { n: keyof DiagLogger; c: ConsoleMapKeys }[] = [\n { n: 'error', c: 'error' },\n { n: 'warn', c: 'warn' },\n { n: 'info', c: 'info' },\n { n: 'debug', c: 'debug' },\n { n: 'verbose', c: 'trace' },\n];\n\n// Save original console methods at module load time, before any instrumentation\n// can wrap them. This ensures DiagConsoleLogger calls the unwrapped originals.\n// Exported for testing only — not part of the public API.\nexport const _originalConsoleMethods: Partial<\n Record\n> = {};\nif (typeof console !== 'undefined') {\n const keys: (ConsoleMapKeys | 'log')[] = [\n 'error',\n 'warn',\n 'info',\n 'debug',\n 'trace',\n 'log',\n ];\n for (const key of keys) {\n // eslint-disable-next-line no-console\n if (typeof console[key] === 'function') {\n // eslint-disable-next-line no-console\n _originalConsoleMethods[key] = console[key];\n }\n }\n}\n\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n *\n * @since 1.0.0\n */\nexport class DiagConsoleLogger implements DiagLogger {\n constructor() {\n function _consoleFunc(funcName: ConsoleMapKeys): DiagLogFunction {\n return function (...args) {\n // Prefer original (pre-instrumentation) methods saved at module load time.\n let theFunc = _originalConsoleMethods[funcName];\n // Some environments only expose the console when the F12 developer console is open\n if (typeof theFunc !== 'function') {\n theFunc = _originalConsoleMethods['log'];\n }\n // Fall back in case console was not available at module load time but became available later.\n if (typeof theFunc !== 'function' && console) {\n // eslint-disable-next-line no-console\n theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n }\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n };\n }\n\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n public error!: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n public warn!: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n public info!: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario. Useful scenarios would be to log the execution\n * order of async operations\n */\n public debug!: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n public verbose!: DiagLogFunction;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TraceState } from '../trace_state';\nimport { validateKey, validateValue } from './tracestate-validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nexport class TraceStateImpl implements TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceStateImpl {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n\n unset(key: string): TraceStateImpl {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return (\n Array.from(this._internalState.keys())\n // Use reduceRight() because keys are stored in reverse insertion order.\n .reduceRight((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR)\n );\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n // Use reduceRight() so new keys (.set(...)) will be placed at the beginning\n .reduceRight((agg: Map, part: string) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(\n Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS)\n );\n }\n }\n\n // @ts-expect-error TS6133 Accessed in tests only.\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceStateImpl {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TraceState } from '../trace_state';\nimport { TraceStateImpl } from './tracestate-impl';\n\n/**\n * @since 1.1.0\n */\nexport function createTraceState(rawTraceState?: string): TraceState {\n return new TraceStateImpl(rawTraceState);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @module @opentelemetry/api\n */\n\nexport type {\n BaggageEntry,\n BaggageEntryMetadata,\n Baggage,\n} from './baggage/types';\nexport { baggageEntryMetadataFromString } from './baggage/utils';\nexport type { Exception } from './common/Exception';\nexport type { HrTime, TimeInput } from './common/Time';\nexport type { Attributes, AttributeValue } from './common/Attributes';\n\n// Context APIs\nexport { createContextKey, ROOT_CONTEXT } from './context/context';\nexport type { Context, ContextManager } from './context/types';\nexport type { ContextAPI } from './api/context';\n\n// Diag APIs\nexport { DiagConsoleLogger } from './diag/consoleLogger';\nexport { DiagLogLevel } from './diag/types';\nexport type {\n DiagLogFunction,\n DiagLogger,\n ComponentLoggerOptions,\n DiagLoggerOptions,\n} from './diag/types';\nexport type { DiagAPI } from './api/diag';\n\n// Metrics APIs\nexport { createNoopMeter } from './metrics/NoopMeter';\nexport type { MeterOptions, Meter } from './metrics/Meter';\nexport type { MeterProvider } from './metrics/MeterProvider';\nexport { ValueType } from './metrics/Metric';\nexport type {\n Counter,\n Gauge,\n Histogram,\n MetricOptions,\n UpDownCounter,\n MetricAdvice,\n MetricAttributes,\n MetricAttributeValue,\n Observable,\n ObservableCounter,\n ObservableGauge,\n ObservableUpDownCounter,\n BatchObservableCallback,\n ObservableCallback,\n BatchObservableResult,\n ObservableResult,\n} from './metrics/Metric';\nexport type { MetricsAPI } from './api/metrics';\n\n// Propagation APIs\nexport {\n defaultTextMapGetter,\n defaultTextMapSetter,\n} from './propagation/TextMapPropagator';\nexport type {\n TextMapPropagator,\n TextMapSetter,\n TextMapGetter,\n} from './propagation/TextMapPropagator';\nexport type { PropagationAPI } from './api/propagation';\n\n// Trace APIs\nexport type { SpanAttributes, SpanAttributeValue } from './trace/attributes';\nexport type { Link } from './trace/link';\nexport { ProxyTracer, type TracerDelegator } from './trace/ProxyTracer';\n// TODO: Remove ProxyTracerProvider export in the next major version.\nexport { ProxyTracerProvider } from './trace/ProxyTracerProvider';\nexport type { Sampler } from './trace/Sampler';\nexport { SamplingDecision, type SamplingResult } from './trace/SamplingResult';\nexport type { SpanContext } from './trace/span_context';\nexport { SpanKind } from './trace/span_kind';\nexport type { Span } from './trace/span';\nexport type { SpanOptions } from './trace/SpanOptions';\nexport { type SpanStatus, SpanStatusCode } from './trace/status';\nexport { TraceFlags } from './trace/trace_flags';\nexport type { TraceState } from './trace/trace_state';\nexport { createTraceState } from './trace/internal/utils';\nexport type { TracerProvider } from './trace/tracer_provider';\nexport type { Tracer } from './trace/tracer';\nexport type { TracerOptions } from './trace/tracer_options';\nexport {\n isSpanContextValid,\n isValidTraceId,\n isValidSpanId,\n} from './trace/spancontext-utils';\nexport {\n INVALID_SPANID,\n INVALID_TRACEID,\n INVALID_SPAN_CONTEXT,\n} from './trace/invalid-span-constants';\nexport type { TraceAPI } from './api/trace';\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { context } from './context-api';\nimport { diag } from './diag-api';\nimport { metrics } from './metrics-api';\nimport { propagation } from './propagation-api';\nimport { trace } from './trace-api';\n\n// Named export.\nexport { context, diag, metrics, propagation, trace };\n// Default export.\nexport default {\n context,\n diag,\n metrics,\n propagation,\n trace,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes, AttributeValue } from '../common/Attributes';\nimport type { Context } from '../context/types';\n\n/**\n * Advisory options influencing aggregation configuration parameters.\n *\n * @since 1.7.0\n * @experimental\n */\nexport interface MetricAdvice {\n /**\n * Hint the explicit bucket boundaries for SDK if the metric is been\n * aggregated with a HistogramAggregator.\n */\n explicitBucketBoundaries?: number[];\n}\n\n/**\n * Options needed for metric creation\n *\n * @since 1.3.0\n */\nexport interface MetricOptions {\n /**\n * The description of the Metric.\n * @default ''\n */\n description?: string;\n\n /**\n * The unit of the Metric values.\n * @default ''\n */\n unit?: string;\n\n /**\n * Indicates the type of the recorded value.\n * @default {@link ValueType.DOUBLE}\n */\n valueType?: ValueType;\n\n /**\n * The advice influencing aggregation configuration parameters.\n * @experimental\n * @since 1.7.0\n */\n advice?: MetricAdvice;\n}\n\n/**\n * The Type of value. It describes how the data is reported.\n *\n * @since 1.3.0\n */\nexport enum ValueType {\n INT,\n DOUBLE,\n}\n\n/**\n * Counter is the most common synchronous instrument. This instrument supports\n * an `Add(increment)` function for reporting a sum, and is restricted to\n * non-negative increments. The default aggregation is Sum, as for any additive\n * instrument.\n *\n * Example uses for Counter:\n *
    \n *
  1. count the number of bytes received.
  2. \n *
  3. count the number of requests completed.
  4. \n *
  5. count the number of accounts created.
  6. \n *
  7. count the number of checkpoints run.
  8. \n *
  9. count the number of 5xx errors.
  10. \n *
      \n *\n * @since 1.3.0\n */\nexport interface Counter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs must not be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @since 1.3.0\n */\nexport interface UpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Increment value of counter by the input. Inputs may be negative.\n */\n add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @since 1.9.0\n */\nexport interface Gauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @since 1.3.0\n */\nexport interface Histogram<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Records a measurement. Value of the measurement must not be negative.\n */\n record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @deprecated please use {@link Attributes}\n * @since 1.3.0\n */\nexport type MetricAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n * @since 1.3.0\n */\nexport type MetricAttributeValue = AttributeValue;\n\n/**\n * Interface that is being used in callback function for Observable Metric.\n *\n * @since 1.3.0\n */\nexport interface ObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one value is associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: ObservableResult,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n\n/**\n * Interface that is being used in batch observable callback function.\n */\nexport interface BatchObservableResult<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Observe a measurement of the value associated with the given attributes.\n *\n * @param metric The observable metric to be observed.\n * @param value The value to be observed.\n * @param attributes The attributes associated with the value. If more than\n * one value is associated with the same attributes values, SDK may pick the\n * last one or simply drop the entire observable result.\n */\n observe(\n this: BatchObservableResult,\n metric: Observable,\n value: number,\n attributes?: AttributesTypes\n ): void;\n}\n\n/**\n * The observable callback for Observable instruments.\n *\n * @since 1.3.0\n */\nexport type ObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: ObservableResult\n) => void | Promise;\n\n/**\n * The observable callback for a batch of Observable instruments.\n *\n * @since 1.3.0\n */\nexport type BatchObservableCallback<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n observableResult: BatchObservableResult\n) => void | Promise;\n\n/**\n * @since 1.3.0\n */\nexport interface Observable<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n /**\n * Sets up a function that will be called whenever a metric collection is initiated.\n *\n * If the function is already in the list of callbacks for this Observable, the function is not added a second time.\n */\n addCallback(callback: ObservableCallback): void;\n\n /**\n * Removes a callback previously registered with {@link Observable.addCallback}.\n */\n removeCallback(callback: ObservableCallback): void;\n}\n\n/**\n * @since 1.3.0\n */\nexport type ObservableCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\n/**\n * @since 1.3.0\n */\nexport type ObservableUpDownCounter<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\n/**\n * @since 1.3.0\n */\nexport type ObservableGauge<\n AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable;\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling didn't run because the request was aborted.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling was skipped because the response had started.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was not handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\" as const;\n\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;\n\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy' as const;\n\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;\n\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\" as const;\n\n/**\n * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the endpoint limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\" as const;\n\n/**\n * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the global limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\" as const;\n\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\" as const;\n\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled' as const;\n\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback' as const;\n\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated' as const;\n\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_ADDRESS = 'client.address' as const;\n\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_PORT = 'client.port' as const;\n\n/**\n * The column number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 16\n */\nexport const ATTR_CODE_COLUMN_NUMBER = 'code.column.number' as const;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\n */\nexport const ATTR_CODE_FILE_PATH = 'code.file.path' as const;\n\n/**\n * The method or function fully-qualified name without arguments. The value should fit the natural representation of the language runtime, which is also likely the same used within `code.stacktrace` attribute value. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example com.example.MyHttpService.serveRequest\n * @example GuzzleHttp\\\\Client::transfer\n * @example fopen\n *\n * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples.\n * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in\n * `code.stacktrace` without information on arguments.\n *\n * Examples:\n *\n * - Java method: `com.example.MyHttpService.serveRequest`\n * - Java anonymous class method: `com.mycompany.Main$1.myMethod`\n * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod`\n * - PHP function: `GuzzleHttp\\Client::transfer`\n * - Go function: `github.com/my/repo/pkg.foo.func5`\n * - Elixir: `OpenTelemetry.Ctx.new`\n * - Erlang: `opentelemetry_ctx:new`\n * - Rust: `playground::my_module::my_cool_func`\n * - C function: `fopen`\n */\nexport const ATTR_CODE_FUNCTION_NAME = 'code.function.name' as const;\n\n/**\n * The line number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 42\n */\nexport const ATTR_CODE_LINE_NUMBER = 'code.line.number' as const;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is identical to [`exception.stacktrace`](/docs/exceptions/exceptions-spans.md#stacktrace-representation). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Location'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace' as const;\n\n/**\n * The name of a collection (table, container) within the database.\n *\n * @example public.users\n * @example customers\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The collection name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple collections\n * in non-batch operations.\n *\n * For batch operations, if the individual operations are known to have the same\n * collection name then that collection name **SHOULD** be used.\n */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name' as const;\n\n/**\n * The name of the database, fully qualified within the server address and port.\n *\n * @example customers\n * @example test.users\n *\n * @note If a database system has multiple namespace components, they **SHOULD** be concatenated from the most general to the most specific namespace component, using `|` as a separator between the components. Any missing components (and their associated separators) **SHOULD** be omitted.\n * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system.\n * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.\n */\nexport const ATTR_DB_NAMESPACE = 'db.namespace' as const;\n\n/**\n * The number of queries included in a batch operation.\n *\n * @example 2\n * @example 3\n * @example 4\n *\n * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`.\n */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;\n\n/**\n * The name of the operation or command being executed.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The operation name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple operations\n * in non-batch operations.\n *\n * If spaces can occur in the operation name, multiple consecutive spaces\n * **SHOULD** be normalized to a single space.\n *\n * For batch operations, if the individual operations are known to have the same operation name\n * then that operation name **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;\n\n/**\n * Low cardinality summary of a database query.\n *\n * @example SELECT wuser_table\n * @example INSERT shipping_details SELECT orders\n * @example get user by id\n *\n * @note The query summary describes a class of database queries and is useful\n * as a grouping key, especially when analyzing telemetry for database\n * calls involving complex queries.\n *\n * Summary may be available to the instrumentation through\n * instrumentation hooks or other means. If it is not available, instrumentations\n * that support query parsing **SHOULD** generate a summary following\n * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query)\n * section.\n *\n * For batch operations, if the individual operations are known to have the same query summary\n * then that query summary **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.query.summary` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexport const ATTR_DB_QUERY_SUMMARY = 'db.query.summary' as const;\n\n/**\n * The database query being executed.\n *\n * @example SELECT * FROM wuser_table where username = ?\n * @example SET mykey ?\n *\n * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext).\n * For batch operations, if the individual operations are known to have the same query text then that query text **SHOULD** be used, otherwise all of the individual query texts **SHOULD** be concatenated with separator `; ` or some other database system specific separator if more applicable.\n * Parameterized query text **SHOULD NOT** be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk.\n */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;\n\n/**\n * Database response status code.\n *\n * @example 102\n * @example ORA-17002\n * @example 08P01\n * @example 404\n *\n * @note The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.\n * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system.\n */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code' as const;\n\n/**\n * The name of a stored procedure within the database.\n *\n * @example GetCustomer\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * For batch operations, if the individual operations are known to have the same\n * stored procedure name then that stored procedure name **SHOULD** be used.\n */\nexport const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name' as const;\n\n/**\n * The database management system (DBMS) product as identified by the client instrumentation.\n *\n * @note The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge.\n */\nexport const ATTR_DB_SYSTEM_NAME = 'db.system.name' as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\" as const;\n\n/**\n * Enum value \"microsoft.sql_server\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Microsoft SQL Server](https://www.microsoft.com/sql-server)\n */\nexport const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\" as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation' as const;\n\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\" as const;\n\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\" as const;\n\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\" as const;\n\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\" as const;\n\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\" as const;\n\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes),\n * it's **RECOMMENDED** to:\n *\n * - Use a domain-specific attribute\n * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport const ATTR_ERROR_TYPE = 'error.type' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n *\n * A fallback error value to be used when the instrumentation doesn't define a custom value.\n */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Indicates that the exception is escaping the scope of the span.\n *\n * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span.\n */\nexport const ATTR_EXCEPTION_ESCAPED = 'exception.escaped' as const;\n\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n */\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message' as const;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace' as const;\n\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexport const ATTR_EXCEPTION_TYPE = 'exception.type' as const;\n\n/**\n * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * The `User-Agent` header is already captured in the `user_agent.original` attribute.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for`\n * attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]` or `[\"1.2.3.4, 1.2.3.5\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${key}`;\n\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods),\n * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html)\n * and the QUERY method defined in [httpbis-safe-method-w-body](https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/?include_text=1).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods.\n *\n *\n * If this override is done via declarative configuration, then the list **MUST** be configurable via the `known_methods` property\n * (an array of case-sensitive strings with minimum items 0) under `.instrumentation/development.general.http.client` and/or\n * `.instrumentation/development.general.http.server`.\n *\n * In either case, this list **MUST** be a full override of the default known methods,\n * it is not a list of known methods in addition to the defaults.\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexport const ATTR_HTTP_REQUEST_METHOD = 'http.request.method' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * Any HTTP method that the instrumentation has no prior knowledge of.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\" as const;\n\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\" as const;\n\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\" as const;\n\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\" as const;\n\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\" as const;\n\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\" as const;\n\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\" as const;\n\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\" as const;\n\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\" as const;\n\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original' as const;\n\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexport const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count' as const;\n\n/**\n * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header`\n * attribute with value `[\"abc\", \"def\"]` or `[\"abc, def\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.${key}`;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code' as const;\n\n/**\n * The matched route template for the request. This **MUST** be low-cardinality and include all static path segments, with dynamic path segments represented with placeholders.\n *\n * @example /users/:userID?\n * @example my-controller/my-action/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n *\n * A static path segment is a part of the route template with a fixed, low-cardinality value. This includes literal strings like `/users/` and placeholders that\n * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`.\n *\n * A dynamic path segment is a placeholder for a value that can have high cardinality and is not constrained to a predefined list like static path segments.\n *\n * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY**\n * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string.\n */\nexport const ATTR_HTTP_ROUTE = 'http.route' as const;\n\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexport const ATTR_JVM_GC_ACTION = 'jvm.gc.action' as const;\n\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexport const ATTR_JVM_GC_NAME = 'jvm.gc.name' as const;\n\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexport const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name' as const;\n\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type' as const;\n\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\" as const;\n\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\" as const;\n\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon' as const;\n\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state' as const;\n\n/**\n * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is blocked waiting for a monitor lock is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\" as const;\n\n/**\n * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has not yet started is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\" as const;\n\n/**\n * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread executing in the Java virtual machine is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\n/**\n * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\" as const;\n\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting indefinitely for another thread to perform a particular action is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\" as const;\n\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address' as const;\n\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port' as const;\n\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address' as const;\n\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;\n\n/**\n * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;\n\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexport const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version' as const;\n\n/**\n * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexport const ATTR_NETWORK_TRANSPORT = 'network.transport' as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\" as const;\n\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\" as const;\n\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\" as const;\n\n/**\n * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_TYPE = 'network.type' as const;\n\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\" as const;\n\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\" as const;\n\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name' as const;\n\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version' as const;\n\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport const ATTR_OTEL_STATUS_CODE = 'otel.status_code' as const;\n\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\" as const;\n\n/**\n * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation has been validated by an Application developer or Operator to have completed successfully.\n */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\" as const;\n\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description' as const;\n\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_ADDRESS = 'server.address' as const;\n\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_PORT = 'server.port' as const;\n\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexport const ATTR_SERVICE_NAME = 'service.name' as const;\n\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * The version string of the service component. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexport const ATTR_SERVICE_VERSION = 'service.version' as const;\n\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status' as const;\n\n/**\n * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed because the app is shutting down.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\" as const;\n\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexport const ATTR_SIGNALR_TRANSPORT = 'signalr.transport' as const;\n\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\" as const;\n\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\" as const;\n\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\" as const;\n\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;\n\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\" as const;\n\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\" as const;\n\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\" as const;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexport const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;\n\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport const ATTR_URL_FRAGMENT = 'url.fragment' as const;\n\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment\n * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n *\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`.\n * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n *\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed).\n *\n * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the\n * value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `https://www.example.com/path?color=blue&sig=REDACTED`.\n */\nexport const ATTR_URL_FULL = 'url.full' as const;\n\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport const ATTR_URL_PATH = 'url.path' as const;\n\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexport const ATTR_URL_QUERY = 'url.query' as const;\n\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexport const ATTR_URL_SCHEME = 'url.scheme' as const;\n\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexport const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { inspect } from 'util';\n\n/**\n * Retrieves a number from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number.\n * - Returns a number in all other cases.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {number | undefined} - The number value or `undefined`.\n */\nexport function getNumberFromEnv(key: string): number | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n\n const value = Number(raw);\n if (isNaN(value)) {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`\n );\n return undefined;\n }\n\n return value;\n}\n\n/**\n * Retrieves a string from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string | undefined} - The string value or `undefined`.\n */\nexport function getStringFromEnv(key: string): string | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\n\n/**\n * Retrieves a boolean value from an environment variable.\n * - Trims leading and trailing whitespace and ignores casing.\n * - Returns `false` if the environment variable is empty, unset, or contains only whitespace.\n * - Returns `false` for strings that cannot be mapped to a boolean.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace.\n */\nexport function getBooleanFromEnv(key: string): boolean {\n const raw = process.env[key]?.trim().toLowerCase();\n if (raw == null || raw === '') {\n // NOTE: falling back to `false` instead of `undefined` as required by the specification.\n // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary\n // normalizations in the consuming code.\n return false;\n }\n if (raw === 'true') {\n return true;\n } else if (raw === 'false') {\n return false;\n } else {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`\n );\n return false;\n }\n}\n\n/**\n * Retrieves a list of strings from an environment variable.\n * - Uses ',' as the delimiter.\n * - Trims leading and trailing whitespace from each entry.\n * - Excludes empty entries.\n * - Returns `undefined` if the environment variable is empty or contains only whitespace.\n * - Returns an empty array if all entries are empty or whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string[] | undefined} - The list of strings or `undefined`.\n */\nexport function getStringListFromEnv(key: string): string[] | undefined {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.6.1';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport interface ExportResult {\n code: ExportResultCode;\n error?: Error;\n}\n\nexport enum ExportResultCode {\n SUCCESS,\n FAILED,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport class Deferred {\n private _promise: Promise;\n private _resolve!: (val: T) => void;\n private _reject!: (error: unknown) => void;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get promise() {\n return this._promise;\n }\n\n resolve(val: T) {\n this._resolve(val);\n }\n\n reject(err: unknown) {\n this._reject(err);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AttributeValue, Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\n\nexport function sanitizeAttributes(attributes: unknown): Attributes {\n const out: Attributes = {};\n\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = (attributes as Record)[key];\n if (!isAttributeValue(val)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n } else {\n out[key] = val;\n }\n }\n\n return out;\n}\n\nexport function isAttributeKey(key: unknown): key is string {\n return typeof key === 'string' && key !== '';\n}\n\nexport function isAttributeValue(val: unknown): val is AttributeValue {\n if (val == null) {\n return true;\n }\n\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n\n return isValidPrimitiveAttributeValueType(typeof val);\n}\n\nfunction isHomogeneousAttributeValueArray(arr: unknown[]): boolean {\n let type: string | undefined;\n\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null) continue;\n const elementType = typeof element;\n\n if (elementType === type) {\n continue;\n }\n\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction isValidPrimitiveAttributeValueType(valType: string): boolean {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n\n return false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance: { now(): number; readonly timeOrigin: number } =\n performance;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isPlainObject } from './lodash.merge';\n\nconst MAX_LEVEL = 20;\n\ninterface ObjectInto {\n obj: any;\n key: string;\n}\n\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nexport function merge(...args: any[]): any {\n let result: any = args.shift();\n const objects: WeakMap | undefined = new WeakMap<\n any,\n ObjectInto[]\n >();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n\n return result;\n}\n\nfunction takeValue(value: any): any {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\n\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(\n one: any,\n two: any,\n level = 0,\n objects: WeakMap\n): any {\n let result: any;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\n } else if (isArray(one)) {\n result = one.slice();\n if (isArray(two)) {\n for (let i = 0, j = two.length; i < j; i++) {\n result.push(takeValue(two[i]));\n }\n } else if (isObject(two)) {\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n result[key] = takeValue(two[key]);\n }\n }\n } else if (isObject(one)) {\n if (isObject(two)) {\n if (!shouldMerge(one, two)) {\n return two;\n }\n result = Object.assign({}, one);\n const keys = Object.keys(two);\n\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n } else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n } else {\n const obj1 = result[key];\n const obj2 = twoValue;\n\n if (\n wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)\n ) {\n delete result[key];\n } else {\n if (isObject(obj1) && isObject(obj2)) {\n const arr1 = objects.get(obj1) || [];\n const arr2 = objects.get(obj2) || [];\n arr1.push({ obj: one, key });\n arr2.push({ obj: two, key });\n objects.set(obj1, arr1);\n objects.set(obj2, arr2);\n }\n\n result[key] = mergeTwoObjects(\n result[key],\n twoValue,\n level,\n objects\n );\n }\n }\n }\n } else {\n result = two;\n }\n }\n\n return result;\n}\n\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(\n obj: any,\n key: string,\n objects: WeakMap\n): boolean {\n const arr = objects.get(obj[key]) || [];\n for (let i = 0, j = arr.length; i < j; i++) {\n const info = arr[i];\n if (info.key === key && info.obj === obj) {\n return true;\n }\n }\n return false;\n}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value);\n}\n\nfunction isFunction(value: any): boolean {\n return typeof value === 'function';\n}\n\nfunction isObject(value: any): boolean {\n return (\n !isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object'\n );\n}\n\nfunction isPrimitive(value: any): boolean {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined' ||\n value instanceof Date ||\n value instanceof RegExp ||\n value === null\n );\n}\n\nfunction shouldMerge(one: any, two: any): boolean {\n if (!isPlainObject(one) || !isPlainObject(two)) {\n return false;\n }\n\n return true;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator';\nexport { AnchoredClock } from './common/anchored-clock';\nexport type { Clock } from './common/anchored-clock';\nexport { isAttributeValue, sanitizeAttributes } from './common/attributes';\nexport {\n globalErrorHandler,\n setGlobalErrorHandler,\n} from './common/global-error-handler';\nexport { loggingErrorHandler } from './common/logging-error-handler';\nexport {\n addHrTimes,\n getTimeOrigin,\n hrTime,\n hrTimeDuration,\n hrTimeToMicroseconds,\n hrTimeToMilliseconds,\n hrTimeToNanoseconds,\n hrTimeToTimeStamp,\n isTimeInput,\n isTimeInputHrTime,\n millisToHrTime,\n timeInputToHrTime,\n} from './common/time';\nexport { unrefTimer } from './common/timer-util';\nexport type { ErrorHandler, InstrumentationScope } from './common/types';\nexport { ExportResultCode } from './ExportResult';\nexport type { ExportResult } from './ExportResult';\nexport { parseKeyPairsIntoRecord } from './baggage/utils';\nexport {\n SDK_INFO,\n _globalThis,\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n otperformance,\n} from './platform';\nexport { CompositePropagator } from './propagation/composite';\nexport type { CompositePropagatorConfig } from './propagation/composite';\nexport {\n TRACE_PARENT_HEADER,\n TRACE_STATE_HEADER,\n W3CTraceContextPropagator,\n parseTraceParent,\n} from './trace/W3CTraceContextPropagator';\nexport {\n RPCType,\n deleteRPCMetadata,\n getRPCMetadata,\n setRPCMetadata,\n} from './trace/rpc-metadata';\nexport type { RPCMetadata } from './trace/rpc-metadata';\nexport {\n isTracingSuppressed,\n suppressTracing,\n unsuppressTracing,\n} from './trace/suppress-tracing';\nexport { TraceState } from './trace/TraceState';\nexport { merge } from './utils/merge';\nexport { TimeoutError, callWithTimeout } from './utils/timeout';\nexport { isUrlIgnored, urlMatches } from './utils/url';\nexport { BindOnceFuture } from './utils/callback';\nexport { diagLogLevelFromString } from './utils/configuration';\nimport { _export } from './internal/exporter';\nexport const internal = {\n _export,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as api from '@opentelemetry/api';\nimport { otperformance as performance } from '../platform';\n\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis: number): api.HrTime {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\n\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nexport function getTimeOrigin(): number {\n return performance.timeOrigin;\n}\n\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow?: number): api.HrTime {\n const timeOrigin = millisToHrTime(performance.timeOrigin);\n const now = millisToHrTime(\n typeof performanceNow === 'number' ? performanceNow : performance.now()\n );\n\n return addHrTimes(timeOrigin, now);\n}\n\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time: api.TimeInput): api.HrTime {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time as api.HrTime;\n } else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < performance.timeOrigin) {\n return hrTime(time);\n } else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n } else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n } else {\n throw TypeError('Invalid input type');\n }\n}\n\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(\n startTime: api.HrTime,\n endTime: api.HrTime\n): api.HrTime {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n\n return [seconds, nanos];\n}\n\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time: api.HrTime): string {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\n\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time: api.HrTime): number {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time: api.HrTime): number {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time: api.HrTime): number {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value: unknown): value is api.HrTime {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(\n value: unknown\n): value is api.HrTime | number | Date {\n return (\n isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date\n );\n}\n\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime {\n const out = [time1[0] + time2[0], time1[1] + time2[1]] as api.HrTime;\n\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n\n return out;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { context } from '@opentelemetry/api';\nimport type { ExportResult } from '../ExportResult';\nimport { suppressTracing } from '../trace/suppress-tracing';\n\nexport interface Exporter {\n export(arg: T, resultCallback: (result: ExportResult) => void): void;\n}\n\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nexport function _export(\n exporter: Exporter,\n arg: T\n): Promise {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n exporter.export(arg, resolve);\n });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { createContextKey } from '@opentelemetry/api';\n\nconst SUPPRESS_TRACING_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key SUPPRESS_TRACING'\n);\n\nexport function suppressTracing(context: Context): Context {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\n\nexport function unsuppressTracing(context: Context): Context {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\n\nexport function isTracingSuppressed(context: Context): boolean {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Exception } from '@opentelemetry/api';\nimport { loggingErrorHandler } from './logging-error-handler';\nimport type { ErrorHandler } from './types';\n\n/** The global error handler delegate */\nlet delegateHandler = loggingErrorHandler();\n\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nexport function setGlobalErrorHandler(handler: ErrorHandler): void {\n delegateHandler = handler;\n}\n\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nexport function globalErrorHandler(ex: Exception): void {\n try {\n delegateHandler(ex);\n } catch {} // eslint-disable-line no-empty\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Deferred } from './promise';\n\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nexport class BindOnceFuture<\n R,\n This = unknown,\n T extends (this: This, ...args: unknown[]) => R = () => R,\n> {\n private _isCalled = false;\n private _deferred = new Deferred();\n private _callback: T;\n private _that: This;\n\n constructor(callback: T, that: This) {\n this._callback = callback;\n this._that = that;\n }\n\n get isCalled() {\n return this._isCalled;\n }\n\n get promise() {\n return this._deferred.promise;\n }\n\n call(...args: Parameters): Promise {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(\n val => this._deferred.resolve(val),\n err => this._deferred.reject(err)\n );\n } catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\n\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nexport function isPlainObject(value: any) {\n if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n return false;\n }\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (\n typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString\n );\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value: any) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value: any) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value)\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value: any) {\n const isOwn = hasOwnProperty.call(value, symToStringTag as any),\n tag = value[symToStringTag as any];\n let unmasked = false;\n\n try {\n value[symToStringTag as any] = undefined;\n unmasked = true;\n } catch {\n // silence\n }\n\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag as any] = tag;\n } else {\n delete value[symToStringTag as any];\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value: any) {\n return nativeObjectToString.call(value);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Exception } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { ErrorHandler } from './types';\n\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nexport function loggingErrorHandler(): ErrorHandler {\n return (ex: Exception) => {\n diag.error(stringifyException(ex));\n };\n}\n\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex: Exception | string): string {\n if (typeof ex === 'string') {\n return ex;\n } else {\n return JSON.stringify(flattenException(ex));\n }\n}\n\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex: Exception): Record {\n const result = {} as Record;\n let current = ex;\n\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName]) return;\n const value = current[propertyName as keyof typeof current];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n\n return result;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Baggage, BaggageEntryMetadata } from '@opentelemetry/api';\nimport { baggageEntryMetadataFromString } from '@opentelemetry/api';\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_PROPERTIES_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n} from './constants';\n\ntype ParsedBaggageKeyValue = {\n key: string;\n value: string;\n metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue: string, current: string) => {\n const value = `${hValue}${\n hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''\n }${current}`;\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n\n return entry;\n });\n}\n\nexport function parsePairKeyValue(\n entry: string\n): ParsedBaggageKeyValue | undefined {\n if (!entry) return;\n const metadataSeparatorIndex = entry.indexOf(BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart =\n metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0) return;\n\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n\n if (!rawKey || !rawValue) return;\n let key: string;\n let value: string;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n } catch {\n return;\n }\n\n let metadata;\n if (\n metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1\n ) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = baggageEntryMetadataFromString(metadataString);\n }\n\n return { key, value, metadata };\n}\n\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nexport function parseKeyPairsIntoRecord(\n value?: string\n): Record {\n const result: Record = {};\n\n if (typeof value === 'string' && value.length > 0) {\n value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n\n return result;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n BaggageEntry,\n Context,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { propagation } from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = propagation.getBaggage(context);\n if (!baggage || isTracingSuppressed(context)) return;\n const keyPairs = getKeyPairs(baggage)\n .filter((pair: string) => {\n return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = serializeKeyPairs(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, BAGGAGE_HEADER, headerValue);\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString) return context;\n const baggage: Record = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair) {\n const baggageEntry: BaggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return propagation.setBaggage(context, propagation.createBaggage(baggage));\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n SpanContext,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { isSpanContextValid, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed } from './suppress-tracing';\nimport { TraceState } from './TraceState';\n\nexport const TRACE_PARENT_HEADER = 'traceparent';\nexport const TRACE_STATE_HEADER = 'tracestate';\n\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(\n `^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`\n);\n\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n * It should be dynamically generated server side to have the server's request trace Id,\n * a parent span Id that was set on the server's request span,\n * and the trace flags to indicate the server's sampling decision\n * (01 = sampled, 00 = not sampled).\n * for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n * For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nexport function parseTraceParent(traceParent: string): SpanContext | null {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match) return null;\n\n // According to the specification the implementation should be compatible\n // with future versions. If there are more parts, we only reject it if it's using version 00\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n if (match[1] === '00' && match[5]) return null;\n\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\n\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nexport class W3CTraceContextPropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const spanContext = trace.getSpanContext(context);\n if (\n !spanContext ||\n isTracingSuppressed(context) ||\n !isSpanContextValid(spanContext)\n )\n return;\n\n const traceParent = `${VERSION}-${spanContext.traceId}-${\n spanContext.spanId\n }-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`;\n\n setter.set(carrier, TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(\n carrier,\n TRACE_STATE_HEADER,\n spanContext.traceState.serialize()\n );\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);\n if (!traceParentHeader) return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string') return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext) return context;\n\n spanContext.isRemote = true;\n\n const traceStateHeader = getter.get(carrier, TRACE_STATE_HEADER);\n if (traceStateHeader) {\n // If more than one `tracestate` header is found, we merge them into a\n // single header.\n const state = Array.isArray(traceStateHeader)\n ? traceStateHeader.join(',')\n : traceStateHeader;\n spanContext.traceState = new TraceState(\n typeof state === 'string' ? state : undefined\n );\n }\n return trace.setSpanContext(context, spanContext);\n }\n\n fields(): string[] {\n return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context, Span } from '@opentelemetry/api';\nimport { createContextKey } from '@opentelemetry/api';\n\nconst RPC_METADATA_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key RPC_METADATA'\n);\n\nexport enum RPCType {\n HTTP = 'http',\n}\n\ntype HTTPMetadata = {\n type: RPCType.HTTP;\n route?: string;\n span: Span;\n};\n\n/**\n * Allows for future rpc metadata to be used with this mechanism\n */\nexport type RPCMetadata = HTTPMetadata;\n\nexport function setRPCMetadata(context: Context, meta: RPCMetadata): Context {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\n\nexport function deleteRPCMetadata(context: Context): Context {\n return context.deleteValue(RPC_METADATA_KEY);\n}\n\nexport function getRPCMetadata(context: Context): RPCMetadata | undefined {\n return context.getValue(RPC_METADATA_KEY) as RPCMetadata | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\n\n/** Configuration object for composite propagator */\nexport interface CompositePropagatorConfig {\n /**\n * List of propagators to run. Propagators run in the\n * list order. If a propagator later in the list writes the same context\n * key as a propagator earlier in the list, the later on will \"win\".\n */\n propagators?: TextMapPropagator[];\n}\n\n/** Combines multiple propagators into a single propagator. */\nexport class CompositePropagator implements TextMapPropagator {\n private readonly _propagators: TextMapPropagator[];\n private readonly _fields: string[];\n\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config: CompositePropagatorConfig = {}) {\n this._propagators = config.propagators ?? [];\n\n this._fields = Array.from(\n new Set(\n this._propagators\n // older propagators may not have fields function, null check to be sure\n .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n .reduce((x, y) => x.concat(y), [])\n )\n );\n }\n\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same carrier key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to inject\n * @param carrier Carrier into which context will be injected\n */\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n } catch (err) {\n diag.warn(\n `Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n }\n }\n\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same context key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to add values to\n * @param carrier Carrier from which to extract context\n */\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n } catch (err) {\n diag.warn(\n `Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n return ctx;\n }, context);\n }\n\n fields(): string[] {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as api from '@opentelemetry/api';\nimport { validateKey, validateValue } from '../internal/validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nexport class TraceState implements api.TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceState {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n\n unset(key: string): TraceState {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg: Map, part: string) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(\n Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS)\n );\n }\n }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceState {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { diag, DiagLogLevel } from '@opentelemetry/api';\n\nconst logLevelMap: { [key: string]: DiagLogLevel } = {\n ALL: DiagLogLevel.ALL,\n VERBOSE: DiagLogLevel.VERBOSE,\n DEBUG: DiagLogLevel.DEBUG,\n INFO: DiagLogLevel.INFO,\n WARN: DiagLogLevel.WARN,\n ERROR: DiagLogLevel.ERROR,\n NONE: DiagLogLevel.NONE,\n};\n\n/**\n * Convert a string to a {@link DiagLogLevel}, defaults to {@link DiagLogLevel} if the log level does not exist or undefined if the input is undefined.\n * @param value\n */\nexport function diagLogLevelFromString(\n value: string | undefined\n): DiagLogLevel | undefined {\n if (value == null) {\n // don't fall back to default - no value set has different semantics for ús than an incorrect value (do not set vs. fall back to default)\n return undefined;\n }\n\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n\n if (resolvedLogLevel == null) {\n diag.warn(\n `Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`\n );\n return DiagLogLevel.INFO;\n }\n\n return resolvedLogLevel;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nexport function urlMatches(url: string, urlToMatch: string | RegExp): boolean {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n } else {\n return !!url.match(urlToMatch);\n }\n}\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nexport function isUrlIgnored(\n url: string,\n ignoredUrls?: Array\n): boolean {\n if (!ignoredUrls) {\n return false;\n }\n\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\n\n// Name of the http header used to propagate the baggage\nexport const BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @deprecated Use globalThis directly instead.\n */\nexport const _globalThis = globalThis;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n constructor(message?: string) {\n super(message);\n\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *

      NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nexport function callWithTimeout(\n promise: Promise,\n timeout: number\n): Promise {\n let timeoutHandle: ReturnType;\n\n const timeoutPromise = new Promise(function timeoutFunction(\n _resolve,\n reject\n ) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).then(\n result => {\n clearTimeout(timeoutHandle);\n return result;\n },\n reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package.\n * @param timer\n */\nexport function unrefTimer(timer: { unref(): unknown } | number): void {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport interface Clock {\n /**\n * Return the current time in milliseconds from some epoch such as the Unix epoch or process start\n */\n now(): number;\n}\n\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nexport class AnchoredClock implements Clock {\n private _monotonicClock: Clock;\n private _epochMillis: number;\n private _performanceMillis: number;\n\n /**\n * Create a new AnchoredClock anchored to the current time returned by systemClock.\n *\n * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n */\n public constructor(systemClock: Clock, monotonicClock: Clock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\n\n /**\n * Returns the current time by adding the number of milliseconds since the\n * AnchoredClock was created to the creation epoch time\n */\n public now(): number {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.214.0';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from './types/LoggerProvider';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport type { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport type { Logger } from '../types/Logger';\nimport type { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport type { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n DiagLogger,\n Meter,\n MeterProvider,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { diag, metrics, trace } from '@opentelemetry/api';\nimport type { Logger, LoggerProvider } from '@opentelemetry/api-logs';\nimport { logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport type {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\n\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\n }\n\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from './types/LoggerProvider';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { NOOP_LOGGER } from './NoopLogger';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport type { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\n\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport type { massWrap, massUnwrap } from '../../shimmer';\nimport { wrap, unwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport type { Hooked } from './RequireInTheMiddleSingleton';\nimport { RequireInTheMiddleSingleton } from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport type {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n // Access require via globalThis to prevent webpack from analyzing it as a dependency expression\n const nodeRequire = globalThis.require;\n if (!nodeRequire?.resolve || !nodeRequire?.cache) return;\n\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\n const { name } = module;\n try {\n const resolvedModule = nodeRequire.resolve(name);\n if (nodeRequire.cache[resolvedModule]?.loaded) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(\n `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n );\n }\n } catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = readFileSync(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\n );\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: HookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: true },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport type { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Logger } from './types/Logger';\nimport type { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges: string[] = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n } else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\n } finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\n } finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport type { Instrumentation } from './types';\nimport type { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUD_PROVIDER = 'cloud.provider';\nconst TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nconst TMP_CLOUD_REGION = 'cloud.region';\nconst TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nconst TMP_CLOUD_PLATFORM = 'cloud.platform';\nconst TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nconst TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nconst TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nconst TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nconst TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nconst TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nconst TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nconst TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nconst TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nconst TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nconst TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nconst TMP_CONTAINER_NAME = 'container.name';\nconst TMP_CONTAINER_ID = 'container.id';\nconst TMP_CONTAINER_RUNTIME = 'container.runtime';\nconst TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nconst TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nconst TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nconst TMP_DEVICE_ID = 'device.id';\nconst TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nconst TMP_DEVICE_MODEL_NAME = 'device.model.name';\nconst TMP_FAAS_NAME = 'faas.name';\nconst TMP_FAAS_ID = 'faas.id';\nconst TMP_FAAS_VERSION = 'faas.version';\nconst TMP_FAAS_INSTANCE = 'faas.instance';\nconst TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nconst TMP_HOST_ID = 'host.id';\nconst TMP_HOST_NAME = 'host.name';\nconst TMP_HOST_TYPE = 'host.type';\nconst TMP_HOST_ARCH = 'host.arch';\nconst TMP_HOST_IMAGE_NAME = 'host.image.name';\nconst TMP_HOST_IMAGE_ID = 'host.image.id';\nconst TMP_HOST_IMAGE_VERSION = 'host.image.version';\nconst TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nconst TMP_K8S_NODE_NAME = 'k8s.node.name';\nconst TMP_K8S_NODE_UID = 'k8s.node.uid';\nconst TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nconst TMP_K8S_POD_UID = 'k8s.pod.uid';\nconst TMP_K8S_POD_NAME = 'k8s.pod.name';\nconst TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nconst TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nconst TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nconst TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nconst TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nconst TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nconst TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nconst TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nconst TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nconst TMP_K8S_JOB_UID = 'k8s.job.uid';\nconst TMP_K8S_JOB_NAME = 'k8s.job.name';\nconst TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nconst TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nconst TMP_OS_TYPE = 'os.type';\nconst TMP_OS_DESCRIPTION = 'os.description';\nconst TMP_OS_NAME = 'os.name';\nconst TMP_OS_VERSION = 'os.version';\nconst TMP_PROCESS_PID = 'process.pid';\nconst TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nconst TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nconst TMP_PROCESS_COMMAND = 'process.command';\nconst TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nconst TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nconst TMP_PROCESS_OWNER = 'process.owner';\nconst TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nconst TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nconst TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nconst TMP_SERVICE_NAME = 'service.name';\nconst TMP_SERVICE_NAMESPACE = 'service.namespace';\nconst TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nconst TMP_SERVICE_VERSION = 'service.version';\nconst TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nconst TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nconst TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nconst TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nconst TMP_WEBENGINE_NAME = 'webengine.name';\nconst TMP_WEBENGINE_VERSION = 'webengine.version';\nconst TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n\n/**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n\n/**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n\n/**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION =\n TMP_PROCESS_RUNTIME_DESCRIPTION;\n\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexport const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n\n/**\n * Definition of available values for SemanticResourceAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification.\n */\nexport type SemanticResourceAttributes = {\n /**\n * Name of the cloud provider.\n */\n CLOUD_PROVIDER: 'cloud.provider';\n\n /**\n * The cloud account ID the resource is assigned to.\n */\n CLOUD_ACCOUNT_ID: 'cloud.account.id';\n\n /**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n */\n CLOUD_REGION: 'cloud.region';\n\n /**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n */\n CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone';\n\n /**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\n CLOUD_PLATFORM: 'cloud.platform';\n\n /**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n */\n AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn';\n\n /**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n */\n AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn';\n\n /**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\n AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype';\n\n /**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n */\n AWS_ECS_TASK_ARN: 'aws.ecs.task.arn';\n\n /**\n * The task definition family this task definition is a member of.\n */\n AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family';\n\n /**\n * The revision for this task definition.\n */\n AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision';\n\n /**\n * The ARN of an EKS cluster.\n */\n AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn';\n\n /**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n */\n AWS_LOG_GROUP_NAMES: 'aws.log.group.names';\n\n /**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n */\n AWS_LOG_GROUP_ARNS: 'aws.log.group.arns';\n\n /**\n * The name(s) of the AWS log stream(s) an application is writing to.\n */\n AWS_LOG_STREAM_NAMES: 'aws.log.stream.names';\n\n /**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n */\n AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns';\n\n /**\n * Container name.\n */\n CONTAINER_NAME: 'container.name';\n\n /**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n */\n CONTAINER_ID: 'container.id';\n\n /**\n * The container runtime managing this container.\n */\n CONTAINER_RUNTIME: 'container.runtime';\n\n /**\n * Name of the image the container was built on.\n */\n CONTAINER_IMAGE_NAME: 'container.image.name';\n\n /**\n * Container image tag.\n */\n CONTAINER_IMAGE_TAG: 'container.image.tag';\n\n /**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n */\n DEPLOYMENT_ENVIRONMENT: 'deployment.environment';\n\n /**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n */\n DEVICE_ID: 'device.id';\n\n /**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n */\n DEVICE_MODEL_IDENTIFIER: 'device.model.identifier';\n\n /**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n */\n DEVICE_MODEL_NAME: 'device.model.name';\n\n /**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n */\n FAAS_NAME: 'faas.name';\n\n /**\n * The unique ID of the single function that this runtime instance executes.\n *\n * Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n */\n FAAS_ID: 'faas.id';\n\n /**\n * The immutable version of the function being executed.\n *\n * Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n */\n FAAS_VERSION: 'faas.version';\n\n /**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n */\n FAAS_INSTANCE: 'faas.instance';\n\n /**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n */\n FAAS_MAX_MEMORY: 'faas.max_memory';\n\n /**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n */\n HOST_ID: 'host.id';\n\n /**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n */\n HOST_NAME: 'host.name';\n\n /**\n * Type of host. For Cloud, this must be the machine type.\n */\n HOST_TYPE: 'host.type';\n\n /**\n * The CPU architecture the host system is running on.\n */\n HOST_ARCH: 'host.arch';\n\n /**\n * Name of the VM image or OS install the host was instantiated from.\n */\n HOST_IMAGE_NAME: 'host.image.name';\n\n /**\n * VM image ID. For Cloud, this value is from the provider.\n */\n HOST_IMAGE_ID: 'host.image.id';\n\n /**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n */\n HOST_IMAGE_VERSION: 'host.image.version';\n\n /**\n * The name of the cluster.\n */\n K8S_CLUSTER_NAME: 'k8s.cluster.name';\n\n /**\n * The name of the Node.\n */\n K8S_NODE_NAME: 'k8s.node.name';\n\n /**\n * The UID of the Node.\n */\n K8S_NODE_UID: 'k8s.node.uid';\n\n /**\n * The name of the namespace that the pod is running in.\n */\n K8S_NAMESPACE_NAME: 'k8s.namespace.name';\n\n /**\n * The UID of the Pod.\n */\n K8S_POD_UID: 'k8s.pod.uid';\n\n /**\n * The name of the Pod.\n */\n K8S_POD_NAME: 'k8s.pod.name';\n\n /**\n * The name of the Container in a Pod template.\n */\n K8S_CONTAINER_NAME: 'k8s.container.name';\n\n /**\n * The UID of the ReplicaSet.\n */\n K8S_REPLICASET_UID: 'k8s.replicaset.uid';\n\n /**\n * The name of the ReplicaSet.\n */\n K8S_REPLICASET_NAME: 'k8s.replicaset.name';\n\n /**\n * The UID of the Deployment.\n */\n K8S_DEPLOYMENT_UID: 'k8s.deployment.uid';\n\n /**\n * The name of the Deployment.\n */\n K8S_DEPLOYMENT_NAME: 'k8s.deployment.name';\n\n /**\n * The UID of the StatefulSet.\n */\n K8S_STATEFULSET_UID: 'k8s.statefulset.uid';\n\n /**\n * The name of the StatefulSet.\n */\n K8S_STATEFULSET_NAME: 'k8s.statefulset.name';\n\n /**\n * The UID of the DaemonSet.\n */\n K8S_DAEMONSET_UID: 'k8s.daemonset.uid';\n\n /**\n * The name of the DaemonSet.\n */\n K8S_DAEMONSET_NAME: 'k8s.daemonset.name';\n\n /**\n * The UID of the Job.\n */\n K8S_JOB_UID: 'k8s.job.uid';\n\n /**\n * The name of the Job.\n */\n K8S_JOB_NAME: 'k8s.job.name';\n\n /**\n * The UID of the CronJob.\n */\n K8S_CRONJOB_UID: 'k8s.cronjob.uid';\n\n /**\n * The name of the CronJob.\n */\n K8S_CRONJOB_NAME: 'k8s.cronjob.name';\n\n /**\n * The operating system type.\n */\n OS_TYPE: 'os.type';\n\n /**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n */\n OS_DESCRIPTION: 'os.description';\n\n /**\n * Human readable operating system name.\n */\n OS_NAME: 'os.name';\n\n /**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n */\n OS_VERSION: 'os.version';\n\n /**\n * Process identifier (PID).\n */\n PROCESS_PID: 'process.pid';\n\n /**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n */\n PROCESS_EXECUTABLE_NAME: 'process.executable.name';\n\n /**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n */\n PROCESS_EXECUTABLE_PATH: 'process.executable.path';\n\n /**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n */\n PROCESS_COMMAND: 'process.command';\n\n /**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n */\n PROCESS_COMMAND_LINE: 'process.command_line';\n\n /**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n */\n PROCESS_COMMAND_ARGS: 'process.command_args';\n\n /**\n * The username of the user that owns the process.\n */\n PROCESS_OWNER: 'process.owner';\n\n /**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n */\n PROCESS_RUNTIME_NAME: 'process.runtime.name';\n\n /**\n * The version of the runtime of this process, as returned by the runtime without modification.\n */\n PROCESS_RUNTIME_VERSION: 'process.runtime.version';\n\n /**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n */\n PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description';\n\n /**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n */\n SERVICE_NAME: 'service.name';\n\n /**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\n SERVICE_NAMESPACE: 'service.namespace';\n\n /**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n */\n SERVICE_INSTANCE_ID: 'service.instance.id';\n\n /**\n * The version string of the service API or implementation.\n */\n SERVICE_VERSION: 'service.version';\n\n /**\n * The name of the telemetry SDK as defined above.\n */\n TELEMETRY_SDK_NAME: 'telemetry.sdk.name';\n\n /**\n * The language of the telemetry SDK.\n */\n TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language';\n\n /**\n * The version string of the telemetry SDK.\n */\n TELEMETRY_SDK_VERSION: 'telemetry.sdk.version';\n\n /**\n * The version string of the auto instrumentation agent, if used.\n */\n TELEMETRY_AUTO_VERSION: 'telemetry.auto.version';\n\n /**\n * The name of the web engine.\n */\n WEBENGINE_NAME: 'webengine.name';\n\n /**\n * The version of the web engine.\n */\n WEBENGINE_VERSION: 'webengine.version';\n\n /**\n * Additional description of the web engine (e.g. detailed version and edition information).\n */\n WEBENGINE_DESCRIPTION: 'webengine.description';\n};\n\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexport const SemanticResourceAttributes: SemanticResourceAttributes =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUD_PROVIDER,\n TMP_CLOUD_ACCOUNT_ID,\n TMP_CLOUD_REGION,\n TMP_CLOUD_AVAILABILITY_ZONE,\n TMP_CLOUD_PLATFORM,\n TMP_AWS_ECS_CONTAINER_ARN,\n TMP_AWS_ECS_CLUSTER_ARN,\n TMP_AWS_ECS_LAUNCHTYPE,\n TMP_AWS_ECS_TASK_ARN,\n TMP_AWS_ECS_TASK_FAMILY,\n TMP_AWS_ECS_TASK_REVISION,\n TMP_AWS_EKS_CLUSTER_ARN,\n TMP_AWS_LOG_GROUP_NAMES,\n TMP_AWS_LOG_GROUP_ARNS,\n TMP_AWS_LOG_STREAM_NAMES,\n TMP_AWS_LOG_STREAM_ARNS,\n TMP_CONTAINER_NAME,\n TMP_CONTAINER_ID,\n TMP_CONTAINER_RUNTIME,\n TMP_CONTAINER_IMAGE_NAME,\n TMP_CONTAINER_IMAGE_TAG,\n TMP_DEPLOYMENT_ENVIRONMENT,\n TMP_DEVICE_ID,\n TMP_DEVICE_MODEL_IDENTIFIER,\n TMP_DEVICE_MODEL_NAME,\n TMP_FAAS_NAME,\n TMP_FAAS_ID,\n TMP_FAAS_VERSION,\n TMP_FAAS_INSTANCE,\n TMP_FAAS_MAX_MEMORY,\n TMP_HOST_ID,\n TMP_HOST_NAME,\n TMP_HOST_TYPE,\n TMP_HOST_ARCH,\n TMP_HOST_IMAGE_NAME,\n TMP_HOST_IMAGE_ID,\n TMP_HOST_IMAGE_VERSION,\n TMP_K8S_CLUSTER_NAME,\n TMP_K8S_NODE_NAME,\n TMP_K8S_NODE_UID,\n TMP_K8S_NAMESPACE_NAME,\n TMP_K8S_POD_UID,\n TMP_K8S_POD_NAME,\n TMP_K8S_CONTAINER_NAME,\n TMP_K8S_REPLICASET_UID,\n TMP_K8S_REPLICASET_NAME,\n TMP_K8S_DEPLOYMENT_UID,\n TMP_K8S_DEPLOYMENT_NAME,\n TMP_K8S_STATEFULSET_UID,\n TMP_K8S_STATEFULSET_NAME,\n TMP_K8S_DAEMONSET_UID,\n TMP_K8S_DAEMONSET_NAME,\n TMP_K8S_JOB_UID,\n TMP_K8S_JOB_NAME,\n TMP_K8S_CRONJOB_UID,\n TMP_K8S_CRONJOB_NAME,\n TMP_OS_TYPE,\n TMP_OS_DESCRIPTION,\n TMP_OS_NAME,\n TMP_OS_VERSION,\n TMP_PROCESS_PID,\n TMP_PROCESS_EXECUTABLE_NAME,\n TMP_PROCESS_EXECUTABLE_PATH,\n TMP_PROCESS_COMMAND,\n TMP_PROCESS_COMMAND_LINE,\n TMP_PROCESS_COMMAND_ARGS,\n TMP_PROCESS_OWNER,\n TMP_PROCESS_RUNTIME_NAME,\n TMP_PROCESS_RUNTIME_VERSION,\n TMP_PROCESS_RUNTIME_DESCRIPTION,\n TMP_SERVICE_NAME,\n TMP_SERVICE_NAMESPACE,\n TMP_SERVICE_INSTANCE_ID,\n TMP_SERVICE_VERSION,\n TMP_TELEMETRY_SDK_NAME,\n TMP_TELEMETRY_SDK_LANGUAGE,\n TMP_TELEMETRY_SDK_VERSION,\n TMP_TELEMETRY_AUTO_VERSION,\n TMP_WEBENGINE_NAME,\n TMP_WEBENGINE_VERSION,\n TMP_WEBENGINE_DESCRIPTION,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nconst TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport type CloudProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport const CloudProviderValues: CloudProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nconst TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n 'azure_container_instances';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nconst TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nconst TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nconst TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_LAMBDA =\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK =\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE =\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_APP_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n\n/**\n * Identifies the Values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport type CloudPlatformValues = {\n /** Alibaba Cloud Elastic Compute Service. */\n ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs';\n\n /** Alibaba Cloud Function Compute. */\n ALIBABA_CLOUD_FC: 'alibaba_cloud_fc';\n\n /** AWS Elastic Compute Cloud. */\n AWS_EC2: 'aws_ec2';\n\n /** AWS Elastic Container Service. */\n AWS_ECS: 'aws_ecs';\n\n /** AWS Elastic Kubernetes Service. */\n AWS_EKS: 'aws_eks';\n\n /** AWS Lambda. */\n AWS_LAMBDA: 'aws_lambda';\n\n /** AWS Elastic Beanstalk. */\n AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk';\n\n /** Azure Virtual Machines. */\n AZURE_VM: 'azure_vm';\n\n /** Azure Container Instances. */\n AZURE_CONTAINER_INSTANCES: 'azure_container_instances';\n\n /** Azure Kubernetes Service. */\n AZURE_AKS: 'azure_aks';\n\n /** Azure Functions. */\n AZURE_FUNCTIONS: 'azure_functions';\n\n /** Azure App Service. */\n AZURE_APP_SERVICE: 'azure_app_service';\n\n /** Google Cloud Compute Engine (GCE). */\n GCP_COMPUTE_ENGINE: 'gcp_compute_engine';\n\n /** Google Cloud Run. */\n GCP_CLOUD_RUN: 'gcp_cloud_run';\n\n /** Google Cloud Kubernetes Engine (GKE). */\n GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine';\n\n /** Google Cloud Functions (GCF). */\n GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions';\n\n /** Google Cloud App Engine (GAE). */\n GCP_APP_ENGINE: 'gcp_app_engine';\n};\n\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport const CloudPlatformValues: CloudPlatformValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nconst TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const AWSECSLAUNCHTYPEVALUES_FARGATE =\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n\n/**\n * Identifies the Values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport type AwsEcsLaunchtypeValues = {\n /** ec2. */\n EC2: 'ec2';\n\n /** fargate. */\n FARGATE: 'fargate';\n};\n\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nconst TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nconst TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nconst TMP_HOSTARCHVALUES_IA64 = 'ia64';\nconst TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nconst TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nconst TMP_HOSTARCHVALUES_X86 = 'x86';\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n\n/**\n * Identifies the Values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport type HostArchValues = {\n /** AMD64. */\n AMD64: 'amd64';\n\n /** ARM32. */\n ARM32: 'arm32';\n\n /** ARM64. */\n ARM64: 'arm64';\n\n /** Itanium. */\n IA64: 'ia64';\n\n /** 32-bit PowerPC. */\n PPC32: 'ppc32';\n\n /** 64-bit PowerPC. */\n PPC64: 'ppc64';\n\n /** 32-bit x86. */\n X86: 'x86';\n};\n\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport const HostArchValues: HostArchValues =\n /*#__PURE__*/ createConstMap([\n TMP_HOSTARCHVALUES_AMD64,\n TMP_HOSTARCHVALUES_ARM32,\n TMP_HOSTARCHVALUES_ARM64,\n TMP_HOSTARCHVALUES_IA64,\n TMP_HOSTARCHVALUES_PPC32,\n TMP_HOSTARCHVALUES_PPC64,\n TMP_HOSTARCHVALUES_X86,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_OSTYPEVALUES_WINDOWS = 'windows';\nconst TMP_OSTYPEVALUES_LINUX = 'linux';\nconst TMP_OSTYPEVALUES_DARWIN = 'darwin';\nconst TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nconst TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nconst TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nconst TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nconst TMP_OSTYPEVALUES_HPUX = 'hpux';\nconst TMP_OSTYPEVALUES_AIX = 'aix';\nconst TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nconst TMP_OSTYPEVALUES_Z_OS = 'z_os';\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n\n/**\n * Identifies the Values for OsTypeValues enum definition\n *\n * The operating system type.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport type OsTypeValues = {\n /** Microsoft Windows. */\n WINDOWS: 'windows';\n\n /** Linux. */\n LINUX: 'linux';\n\n /** Apple Darwin. */\n DARWIN: 'darwin';\n\n /** FreeBSD. */\n FREEBSD: 'freebsd';\n\n /** NetBSD. */\n NETBSD: 'netbsd';\n\n /** OpenBSD. */\n OPENBSD: 'openbsd';\n\n /** DragonFly BSD. */\n DRAGONFLYBSD: 'dragonflybsd';\n\n /** HP-UX (Hewlett Packard Unix). */\n HPUX: 'hpux';\n\n /** AIX (Advanced Interactive eXecutive). */\n AIX: 'aix';\n\n /** Oracle Solaris. */\n SOLARIS: 'solaris';\n\n /** IBM z/OS. */\n Z_OS: 'z_os';\n};\n\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport const OsTypeValues: OsTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_OSTYPEVALUES_WINDOWS,\n TMP_OSTYPEVALUES_LINUX,\n TMP_OSTYPEVALUES_DARWIN,\n TMP_OSTYPEVALUES_FREEBSD,\n TMP_OSTYPEVALUES_NETBSD,\n TMP_OSTYPEVALUES_OPENBSD,\n TMP_OSTYPEVALUES_DRAGONFLYBSD,\n TMP_OSTYPEVALUES_HPUX,\n TMP_OSTYPEVALUES_AIX,\n TMP_OSTYPEVALUES_SOLARIS,\n TMP_OSTYPEVALUES_Z_OS,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_CPP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_DOTNET =\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_ERLANG =\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_JAVA =\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_NODEJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PHP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PYTHON =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_RUBY =\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_WEBJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n\n/**\n * Identifies the Values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport type TelemetrySdkLanguageValues = {\n /** cpp. */\n CPP: 'cpp';\n\n /** dotnet. */\n DOTNET: 'dotnet';\n\n /** erlang. */\n ERLANG: 'erlang';\n\n /** go. */\n GO: 'go';\n\n /** java. */\n JAVA: 'java';\n\n /** nodejs. */\n NODEJS: 'nodejs';\n\n /** php. */\n PHP: 'php';\n\n /** python. */\n PYTHON: 'python';\n\n /** ruby. */\n RUBY: 'ruby';\n\n /** webjs. */\n WEBJS: 'webjs';\n};\n\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues =\n /*#__PURE__*/ createConstMap([\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n ]);\n","/*\n * Copyright The OpenTelemetry Authors\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 * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function createConstMap(values: Array): T {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res: any = {};\n const len = values.length;\n for (let lp = 0; lp < len; lp++) {\n const val = values[lp];\n if (val) {\n res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n }\n }\n\n return res as T;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticAttributes';\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticResourceAttributes';\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nconst TMP_DB_SYSTEM = 'db.system';\nconst TMP_DB_CONNECTION_STRING = 'db.connection_string';\nconst TMP_DB_USER = 'db.user';\nconst TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nconst TMP_DB_NAME = 'db.name';\nconst TMP_DB_STATEMENT = 'db.statement';\nconst TMP_DB_OPERATION = 'db.operation';\nconst TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nconst TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nconst TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nconst TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nconst TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nconst TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nconst TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n 'db.cassandra.speculative_execution_count';\nconst TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nconst TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nconst TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nconst TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nconst TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nconst TMP_DB_SQL_TABLE = 'db.sql.table';\nconst TMP_EXCEPTION_TYPE = 'exception.type';\nconst TMP_EXCEPTION_MESSAGE = 'exception.message';\nconst TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nconst TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nconst TMP_FAAS_TRIGGER = 'faas.trigger';\nconst TMP_FAAS_EXECUTION = 'faas.execution';\nconst TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nconst TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nconst TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nconst TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nconst TMP_FAAS_TIME = 'faas.time';\nconst TMP_FAAS_CRON = 'faas.cron';\nconst TMP_FAAS_COLDSTART = 'faas.coldstart';\nconst TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nconst TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nconst TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nconst TMP_NET_TRANSPORT = 'net.transport';\nconst TMP_NET_PEER_IP = 'net.peer.ip';\nconst TMP_NET_PEER_PORT = 'net.peer.port';\nconst TMP_NET_PEER_NAME = 'net.peer.name';\nconst TMP_NET_HOST_IP = 'net.host.ip';\nconst TMP_NET_HOST_PORT = 'net.host.port';\nconst TMP_NET_HOST_NAME = 'net.host.name';\nconst TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nconst TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nconst TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nconst TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nconst TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nconst TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nconst TMP_PEER_SERVICE = 'peer.service';\nconst TMP_ENDUSER_ID = 'enduser.id';\nconst TMP_ENDUSER_ROLE = 'enduser.role';\nconst TMP_ENDUSER_SCOPE = 'enduser.scope';\nconst TMP_THREAD_ID = 'thread.id';\nconst TMP_THREAD_NAME = 'thread.name';\nconst TMP_CODE_FUNCTION = 'code.function';\nconst TMP_CODE_NAMESPACE = 'code.namespace';\nconst TMP_CODE_FILEPATH = 'code.filepath';\nconst TMP_CODE_LINENO = 'code.lineno';\nconst TMP_HTTP_METHOD = 'http.method';\nconst TMP_HTTP_URL = 'http.url';\nconst TMP_HTTP_TARGET = 'http.target';\nconst TMP_HTTP_HOST = 'http.host';\nconst TMP_HTTP_SCHEME = 'http.scheme';\nconst TMP_HTTP_STATUS_CODE = 'http.status_code';\nconst TMP_HTTP_FLAVOR = 'http.flavor';\nconst TMP_HTTP_USER_AGENT = 'http.user_agent';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.response_content_length_uncompressed';\nconst TMP_HTTP_SERVER_NAME = 'http.server_name';\nconst TMP_HTTP_ROUTE = 'http.route';\nconst TMP_HTTP_CLIENT_IP = 'http.client_ip';\nconst TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nconst TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nconst TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n 'aws.dynamodb.provisioned_write_capacity';\nconst TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nconst TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nconst TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nconst TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nconst TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nconst TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n 'aws.dynamodb.exclusive_start_table';\nconst TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nconst TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nconst TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nconst TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nconst TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nconst TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nconst TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n 'aws.dynamodb.global_secondary_index_updates';\nconst TMP_MESSAGING_SYSTEM = 'messaging.system';\nconst TMP_MESSAGING_DESTINATION = 'messaging.destination';\nconst TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nconst TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nconst TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nconst TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nconst TMP_MESSAGING_URL = 'messaging.url';\nconst TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nconst TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n 'messaging.message_payload_compressed_size_bytes';\nconst TMP_MESSAGING_OPERATION = 'messaging.operation';\nconst TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nconst TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nconst TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nconst TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nconst TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nconst TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nconst TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nconst TMP_RPC_SYSTEM = 'rpc.system';\nconst TMP_RPC_SERVICE = 'rpc.service';\nconst TMP_RPC_METHOD = 'rpc.method';\nconst TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nconst TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nconst TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nconst TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nconst TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nconst TMP_MESSAGE_TYPE = 'message.type';\nconst TMP_MESSAGE_ID = 'message.id';\nconst TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nconst TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_USER = TMP_DB_USER;\n\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_NAME = TMP_DB_NAME;\n\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL =\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID =\n TMP_DB_CASSANDRA_COORDINATOR_ID;\n\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC =\n TMP_DB_CASSANDRA_COORDINATOR_DC;\n\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexport const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexport const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexport const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE =\n TMP_NET_HOST_CONNECTION_SUBTYPE;\n\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n\n/**\n * Current "managed" thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n\n/**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH =\n TMP_HTTP_REQUEST_CONTENT_LENGTH;\n\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY =\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ =\n TMP_AWS_DYNAMODB_CONSISTENT_READ;\n\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET =\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS =\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT =\n TMP_AWS_DYNAMODB_SCANNED_COUNT;\n\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const SEMATTRS_MESSAGING_DESTINATION_KIND =\n TMP_MESSAGING_DESTINATION_KIND;\n\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_TEMP_DESTINATION =\n TMP_MESSAGING_TEMP_DESTINATION;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL_VERSION =\n TMP_MESSAGING_PROTOCOL_VERSION;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexport const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY =\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY =\n TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP =\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n\n/**\n * Definition of available values for SemanticAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification.\n */\nexport type SemanticAttributes = {\n /**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n */\n AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn';\n\n /**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\n DB_SYSTEM: 'db.system';\n\n /**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n */\n DB_CONNECTION_STRING: 'db.connection_string';\n\n /**\n * Username for accessing the database.\n */\n DB_USER: 'db.user';\n\n /**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n */\n DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname';\n\n /**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n */\n DB_NAME: 'db.name';\n\n /**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n */\n DB_STATEMENT: 'db.statement';\n\n /**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n */\n DB_OPERATION: 'db.operation';\n\n /**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n */\n DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name';\n\n /**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace';\n\n /**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n */\n DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size';\n\n /**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\n DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level';\n\n /**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n */\n DB_CASSANDRA_TABLE: 'db.cassandra.table';\n\n /**\n * Whether or not the query is idempotent.\n */\n DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence';\n\n /**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n */\n DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count';\n\n /**\n * The ID of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id';\n\n /**\n * The data center of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc';\n\n /**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_HBASE_NAMESPACE: 'db.hbase.namespace';\n\n /**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n */\n DB_REDIS_DATABASE_INDEX: 'db.redis.database_index';\n\n /**\n * The collection being accessed within the database stated in `db.name`.\n */\n DB_MONGODB_COLLECTION: 'db.mongodb.collection';\n\n /**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n */\n DB_SQL_TABLE: 'db.sql.table';\n\n /**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n */\n EXCEPTION_TYPE: 'exception.type';\n\n /**\n * The exception message.\n */\n EXCEPTION_MESSAGE: 'exception.message';\n\n /**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n */\n EXCEPTION_STACKTRACE: 'exception.stacktrace';\n\n /**\n * SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n *\n * Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n */\n EXCEPTION_ESCAPED: 'exception.escaped';\n\n /**\n * Type of the trigger on which the function is executed.\n */\n FAAS_TRIGGER: 'faas.trigger';\n\n /**\n * The execution ID of the current function execution.\n */\n FAAS_EXECUTION: 'faas.execution';\n\n /**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n */\n FAAS_DOCUMENT_COLLECTION: 'faas.document.collection';\n\n /**\n * Describes the type of the operation that was performed on the data.\n */\n FAAS_DOCUMENT_OPERATION: 'faas.document.operation';\n\n /**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n */\n FAAS_DOCUMENT_TIME: 'faas.document.time';\n\n /**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n */\n FAAS_DOCUMENT_NAME: 'faas.document.name';\n\n /**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n */\n FAAS_TIME: 'faas.time';\n\n /**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n */\n FAAS_CRON: 'faas.cron';\n\n /**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n */\n FAAS_COLDSTART: 'faas.coldstart';\n\n /**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n */\n FAAS_INVOKED_NAME: 'faas.invoked_name';\n\n /**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n */\n FAAS_INVOKED_PROVIDER: 'faas.invoked_provider';\n\n /**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n */\n FAAS_INVOKED_REGION: 'faas.invoked_region';\n\n /**\n * Transport protocol used. See note below.\n */\n NET_TRANSPORT: 'net.transport';\n\n /**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n */\n NET_PEER_IP: 'net.peer.ip';\n\n /**\n * Remote port number.\n */\n NET_PEER_PORT: 'net.peer.port';\n\n /**\n * Remote hostname or similar, see note below.\n */\n NET_PEER_NAME: 'net.peer.name';\n\n /**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n */\n NET_HOST_IP: 'net.host.ip';\n\n /**\n * Like `net.peer.port` but for the host port.\n */\n NET_HOST_PORT: 'net.host.port';\n\n /**\n * Local hostname or similar, see note below.\n */\n NET_HOST_NAME: 'net.host.name';\n\n /**\n * The internet connection type currently being used by the host.\n */\n NET_HOST_CONNECTION_TYPE: 'net.host.connection.type';\n\n /**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\n NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype';\n\n /**\n * The name of the mobile carrier.\n */\n NET_HOST_CARRIER_NAME: 'net.host.carrier.name';\n\n /**\n * The mobile carrier country code.\n */\n NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc';\n\n /**\n * The mobile carrier network code.\n */\n NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc';\n\n /**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n */\n NET_HOST_CARRIER_ICC: 'net.host.carrier.icc';\n\n /**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n */\n PEER_SERVICE: 'peer.service';\n\n /**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n */\n ENDUSER_ID: 'enduser.id';\n\n /**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n */\n ENDUSER_ROLE: 'enduser.role';\n\n /**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n */\n ENDUSER_SCOPE: 'enduser.scope';\n\n /**\n * Current "managed" thread ID (as opposed to OS thread ID).\n */\n THREAD_ID: 'thread.id';\n\n /**\n * Current thread name.\n */\n THREAD_NAME: 'thread.name';\n\n /**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n */\n CODE_FUNCTION: 'code.function';\n\n /**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n */\n CODE_NAMESPACE: 'code.namespace';\n\n /**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n */\n CODE_FILEPATH: 'code.filepath';\n\n /**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n */\n CODE_LINENO: 'code.lineno';\n\n /**\n * HTTP request method.\n */\n HTTP_METHOD: 'http.method';\n\n /**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n */\n HTTP_URL: 'http.url';\n\n /**\n * The full request target as passed in a HTTP request line or equivalent.\n */\n HTTP_TARGET: 'http.target';\n\n /**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n */\n HTTP_HOST: 'http.host';\n\n /**\n * The URI scheme identifying the used protocol.\n */\n HTTP_SCHEME: 'http.scheme';\n\n /**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n */\n HTTP_STATUS_CODE: 'http.status_code';\n\n /**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\n HTTP_FLAVOR: 'http.flavor';\n\n /**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n */\n HTTP_USER_AGENT: 'http.user_agent';\n\n /**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n */\n HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length';\n\n /**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed';\n\n /**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n */\n HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length';\n\n /**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed';\n\n /**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n */\n HTTP_SERVER_NAME: 'http.server_name';\n\n /**\n * The matched route (path template).\n */\n HTTP_ROUTE: 'http.route';\n\n /**\n * The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n *\n * Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n */\n HTTP_CLIENT_IP: 'http.client_ip';\n\n /**\n * The keys in the `RequestItems` object field.\n */\n AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names';\n\n /**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n */\n AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity';\n\n /**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n */\n AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics';\n\n /**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity';\n\n /**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity';\n\n /**\n * The value of the `ConsistentRead` request parameter.\n */\n AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read';\n\n /**\n * The value of the `ProjectionExpression` request parameter.\n */\n AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection';\n\n /**\n * The value of the `Limit` request parameter.\n */\n AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit';\n\n /**\n * The value of the `AttributesToGet` request parameter.\n */\n AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get';\n\n /**\n * The value of the `IndexName` request parameter.\n */\n AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name';\n\n /**\n * The value of the `Select` request parameter.\n */\n AWS_DYNAMODB_SELECT: 'aws.dynamodb.select';\n\n /**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes';\n\n /**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes';\n\n /**\n * The value of the `ExclusiveStartTableName` request parameter.\n */\n AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table';\n\n /**\n * The the number of items in the `TableNames` response parameter.\n */\n AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count';\n\n /**\n * The value of the `ScanIndexForward` request parameter.\n */\n AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward';\n\n /**\n * The value of the `Segment` request parameter.\n */\n AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment';\n\n /**\n * The value of the `TotalSegments` request parameter.\n */\n AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments';\n\n /**\n * The value of the `Count` response parameter.\n */\n AWS_DYNAMODB_COUNT: 'aws.dynamodb.count';\n\n /**\n * The value of the `ScannedCount` response parameter.\n */\n AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count';\n\n /**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n */\n AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions';\n\n /**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates';\n\n /**\n * A string identifying the messaging system.\n */\n MESSAGING_SYSTEM: 'messaging.system';\n\n /**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n */\n MESSAGING_DESTINATION: 'messaging.destination';\n\n /**\n * The kind of message destination.\n */\n MESSAGING_DESTINATION_KIND: 'messaging.destination_kind';\n\n /**\n * A boolean that is true if the message destination is temporary.\n */\n MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination';\n\n /**\n * The name of the transport protocol.\n */\n MESSAGING_PROTOCOL: 'messaging.protocol';\n\n /**\n * The version of the transport protocol.\n */\n MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version';\n\n /**\n * Connection string.\n */\n MESSAGING_URL: 'messaging.url';\n\n /**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n */\n MESSAGING_MESSAGE_ID: 'messaging.message_id';\n\n /**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n */\n MESSAGING_CONVERSATION_ID: 'messaging.conversation_id';\n\n /**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n */\n MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes';\n\n /**\n * The compressed size of the message payload in bytes.\n */\n MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes';\n\n /**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n */\n MESSAGING_OPERATION: 'messaging.operation';\n\n /**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n */\n MESSAGING_CONSUMER_ID: 'messaging.consumer_id';\n\n /**\n * RabbitMQ message routing key.\n */\n MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key';\n\n /**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n */\n MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key';\n\n /**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n */\n MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group';\n\n /**\n * Client Id for the Consumer or Producer that is handling the message.\n */\n MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id';\n\n /**\n * Partition the message is sent to.\n */\n MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition';\n\n /**\n * A boolean that is true if the message is a tombstone.\n */\n MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone';\n\n /**\n * A string identifying the remoting system.\n */\n RPC_SYSTEM: 'rpc.system';\n\n /**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n */\n RPC_SERVICE: 'rpc.service';\n\n /**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n */\n RPC_METHOD: 'rpc.method';\n\n /**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\n RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code';\n\n /**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n */\n RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version';\n\n /**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n */\n RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id';\n\n /**\n * `error.code` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code';\n\n /**\n * `error.message` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message';\n\n /**\n * Whether this is a received or sent message.\n */\n MESSAGE_TYPE: 'message.type';\n\n /**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n */\n MESSAGE_ID: 'message.id';\n\n /**\n * Compressed size of the message in bytes.\n */\n MESSAGE_COMPRESSED_SIZE: 'message.compressed_size';\n\n /**\n * Uncompressed size of the message in bytes.\n */\n MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size';\n};\n\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexport const SemanticAttributes: SemanticAttributes =\n /*#__PURE__*/ createConstMap([\n TMP_AWS_LAMBDA_INVOKED_ARN,\n TMP_DB_SYSTEM,\n TMP_DB_CONNECTION_STRING,\n TMP_DB_USER,\n TMP_DB_JDBC_DRIVER_CLASSNAME,\n TMP_DB_NAME,\n TMP_DB_STATEMENT,\n TMP_DB_OPERATION,\n TMP_DB_MSSQL_INSTANCE_NAME,\n TMP_DB_CASSANDRA_KEYSPACE,\n TMP_DB_CASSANDRA_PAGE_SIZE,\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n TMP_DB_CASSANDRA_TABLE,\n TMP_DB_CASSANDRA_IDEMPOTENCE,\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n TMP_DB_CASSANDRA_COORDINATOR_ID,\n TMP_DB_CASSANDRA_COORDINATOR_DC,\n TMP_DB_HBASE_NAMESPACE,\n TMP_DB_REDIS_DATABASE_INDEX,\n TMP_DB_MONGODB_COLLECTION,\n TMP_DB_SQL_TABLE,\n TMP_EXCEPTION_TYPE,\n TMP_EXCEPTION_MESSAGE,\n TMP_EXCEPTION_STACKTRACE,\n TMP_EXCEPTION_ESCAPED,\n TMP_FAAS_TRIGGER,\n TMP_FAAS_EXECUTION,\n TMP_FAAS_DOCUMENT_COLLECTION,\n TMP_FAAS_DOCUMENT_OPERATION,\n TMP_FAAS_DOCUMENT_TIME,\n TMP_FAAS_DOCUMENT_NAME,\n TMP_FAAS_TIME,\n TMP_FAAS_CRON,\n TMP_FAAS_COLDSTART,\n TMP_FAAS_INVOKED_NAME,\n TMP_FAAS_INVOKED_PROVIDER,\n TMP_FAAS_INVOKED_REGION,\n TMP_NET_TRANSPORT,\n TMP_NET_PEER_IP,\n TMP_NET_PEER_PORT,\n TMP_NET_PEER_NAME,\n TMP_NET_HOST_IP,\n TMP_NET_HOST_PORT,\n TMP_NET_HOST_NAME,\n TMP_NET_HOST_CONNECTION_TYPE,\n TMP_NET_HOST_CONNECTION_SUBTYPE,\n TMP_NET_HOST_CARRIER_NAME,\n TMP_NET_HOST_CARRIER_MCC,\n TMP_NET_HOST_CARRIER_MNC,\n TMP_NET_HOST_CARRIER_ICC,\n TMP_PEER_SERVICE,\n TMP_ENDUSER_ID,\n TMP_ENDUSER_ROLE,\n TMP_ENDUSER_SCOPE,\n TMP_THREAD_ID,\n TMP_THREAD_NAME,\n TMP_CODE_FUNCTION,\n TMP_CODE_NAMESPACE,\n TMP_CODE_FILEPATH,\n TMP_CODE_LINENO,\n TMP_HTTP_METHOD,\n TMP_HTTP_URL,\n TMP_HTTP_TARGET,\n TMP_HTTP_HOST,\n TMP_HTTP_SCHEME,\n TMP_HTTP_STATUS_CODE,\n TMP_HTTP_FLAVOR,\n TMP_HTTP_USER_AGENT,\n TMP_HTTP_REQUEST_CONTENT_LENGTH,\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_SERVER_NAME,\n TMP_HTTP_ROUTE,\n TMP_HTTP_CLIENT_IP,\n TMP_AWS_DYNAMODB_TABLE_NAMES,\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n TMP_AWS_DYNAMODB_CONSISTENT_READ,\n TMP_AWS_DYNAMODB_PROJECTION,\n TMP_AWS_DYNAMODB_LIMIT,\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n TMP_AWS_DYNAMODB_INDEX_NAME,\n TMP_AWS_DYNAMODB_SELECT,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n TMP_AWS_DYNAMODB_TABLE_COUNT,\n TMP_AWS_DYNAMODB_SCAN_FORWARD,\n TMP_AWS_DYNAMODB_SEGMENT,\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n TMP_AWS_DYNAMODB_COUNT,\n TMP_AWS_DYNAMODB_SCANNED_COUNT,\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n TMP_MESSAGING_SYSTEM,\n TMP_MESSAGING_DESTINATION,\n TMP_MESSAGING_DESTINATION_KIND,\n TMP_MESSAGING_TEMP_DESTINATION,\n TMP_MESSAGING_PROTOCOL,\n TMP_MESSAGING_PROTOCOL_VERSION,\n TMP_MESSAGING_URL,\n TMP_MESSAGING_MESSAGE_ID,\n TMP_MESSAGING_CONVERSATION_ID,\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n TMP_MESSAGING_OPERATION,\n TMP_MESSAGING_CONSUMER_ID,\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n TMP_MESSAGING_KAFKA_CLIENT_ID,\n TMP_MESSAGING_KAFKA_PARTITION,\n TMP_MESSAGING_KAFKA_TOMBSTONE,\n TMP_RPC_SYSTEM,\n TMP_RPC_SERVICE,\n TMP_RPC_METHOD,\n TMP_RPC_GRPC_STATUS_CODE,\n TMP_RPC_JSONRPC_VERSION,\n TMP_RPC_JSONRPC_REQUEST_ID,\n TMP_RPC_JSONRPC_ERROR_CODE,\n TMP_RPC_JSONRPC_ERROR_MESSAGE,\n TMP_MESSAGE_TYPE,\n TMP_MESSAGE_ID,\n TMP_MESSAGE_COMPRESSED_SIZE,\n TMP_MESSAGE_UNCOMPRESSED_SIZE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nconst TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nconst TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nconst TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nconst TMP_DBSYSTEMVALUES_DB2 = 'db2';\nconst TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nconst TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nconst TMP_DBSYSTEMVALUES_HIVE = 'hive';\nconst TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nconst TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nconst TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nconst TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nconst TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nconst TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nconst TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nconst TMP_DBSYSTEMVALUES_EDB = 'edb';\nconst TMP_DBSYSTEMVALUES_CACHE = 'cache';\nconst TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nconst TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nconst TMP_DBSYSTEMVALUES_DERBY = 'derby';\nconst TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nconst TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nconst TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nconst TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nconst TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nconst TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nconst TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nconst TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nconst TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nconst TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nconst TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nconst TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nconst TMP_DBSYSTEMVALUES_H2 = 'h2';\nconst TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nconst TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nconst TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nconst TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nconst TMP_DBSYSTEMVALUES_REDIS = 'redis';\nconst TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nconst TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nconst TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nconst TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nconst TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nconst TMP_DBSYSTEMVALUES_GEODE = 'geode';\nconst TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nconst TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nconst TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n\n/**\n * Identifies the Values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport type DbSystemValues = {\n /** Some other SQL database. Fallback only. See notes. */\n OTHER_SQL: 'other_sql';\n\n /** Microsoft SQL Server. */\n MSSQL: 'mssql';\n\n /** MySQL. */\n MYSQL: 'mysql';\n\n /** Oracle Database. */\n ORACLE: 'oracle';\n\n /** IBM Db2. */\n DB2: 'db2';\n\n /** PostgreSQL. */\n POSTGRESQL: 'postgresql';\n\n /** Amazon Redshift. */\n REDSHIFT: 'redshift';\n\n /** Apache Hive. */\n HIVE: 'hive';\n\n /** Cloudscape. */\n CLOUDSCAPE: 'cloudscape';\n\n /** HyperSQL DataBase. */\n HSQLDB: 'hsqldb';\n\n /** Progress Database. */\n PROGRESS: 'progress';\n\n /** SAP MaxDB. */\n MAXDB: 'maxdb';\n\n /** SAP HANA. */\n HANADB: 'hanadb';\n\n /** Ingres. */\n INGRES: 'ingres';\n\n /** FirstSQL. */\n FIRSTSQL: 'firstsql';\n\n /** EnterpriseDB. */\n EDB: 'edb';\n\n /** InterSystems Caché. */\n CACHE: 'cache';\n\n /** Adabas (Adaptable Database System). */\n ADABAS: 'adabas';\n\n /** Firebird. */\n FIREBIRD: 'firebird';\n\n /** Apache Derby. */\n DERBY: 'derby';\n\n /** FileMaker. */\n FILEMAKER: 'filemaker';\n\n /** Informix. */\n INFORMIX: 'informix';\n\n /** InstantDB. */\n INSTANTDB: 'instantdb';\n\n /** InterBase. */\n INTERBASE: 'interbase';\n\n /** MariaDB. */\n MARIADB: 'mariadb';\n\n /** Netezza. */\n NETEZZA: 'netezza';\n\n /** Pervasive PSQL. */\n PERVASIVE: 'pervasive';\n\n /** PointBase. */\n POINTBASE: 'pointbase';\n\n /** SQLite. */\n SQLITE: 'sqlite';\n\n /** Sybase. */\n SYBASE: 'sybase';\n\n /** Teradata. */\n TERADATA: 'teradata';\n\n /** Vertica. */\n VERTICA: 'vertica';\n\n /** H2. */\n H2: 'h2';\n\n /** ColdFusion IMQ. */\n COLDFUSION: 'coldfusion';\n\n /** Apache Cassandra. */\n CASSANDRA: 'cassandra';\n\n /** Apache HBase. */\n HBASE: 'hbase';\n\n /** MongoDB. */\n MONGODB: 'mongodb';\n\n /** Redis. */\n REDIS: 'redis';\n\n /** Couchbase. */\n COUCHBASE: 'couchbase';\n\n /** CouchDB. */\n COUCHDB: 'couchdb';\n\n /** Microsoft Azure Cosmos DB. */\n COSMOSDB: 'cosmosdb';\n\n /** Amazon DynamoDB. */\n DYNAMODB: 'dynamodb';\n\n /** Neo4j. */\n NEO4J: 'neo4j';\n\n /** Apache Geode. */\n GEODE: 'geode';\n\n /** Elasticsearch. */\n ELASTICSEARCH: 'elasticsearch';\n\n /** Memcached. */\n MEMCACHED: 'memcached';\n\n /** CockroachDB. */\n COCKROACHDB: 'cockroachdb';\n};\n\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport const DbSystemValues: DbSystemValues =\n /*#__PURE__*/ createConstMap([\n TMP_DBSYSTEMVALUES_OTHER_SQL,\n TMP_DBSYSTEMVALUES_MSSQL,\n TMP_DBSYSTEMVALUES_MYSQL,\n TMP_DBSYSTEMVALUES_ORACLE,\n TMP_DBSYSTEMVALUES_DB2,\n TMP_DBSYSTEMVALUES_POSTGRESQL,\n TMP_DBSYSTEMVALUES_REDSHIFT,\n TMP_DBSYSTEMVALUES_HIVE,\n TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n TMP_DBSYSTEMVALUES_HSQLDB,\n TMP_DBSYSTEMVALUES_PROGRESS,\n TMP_DBSYSTEMVALUES_MAXDB,\n TMP_DBSYSTEMVALUES_HANADB,\n TMP_DBSYSTEMVALUES_INGRES,\n TMP_DBSYSTEMVALUES_FIRSTSQL,\n TMP_DBSYSTEMVALUES_EDB,\n TMP_DBSYSTEMVALUES_CACHE,\n TMP_DBSYSTEMVALUES_ADABAS,\n TMP_DBSYSTEMVALUES_FIREBIRD,\n TMP_DBSYSTEMVALUES_DERBY,\n TMP_DBSYSTEMVALUES_FILEMAKER,\n TMP_DBSYSTEMVALUES_INFORMIX,\n TMP_DBSYSTEMVALUES_INSTANTDB,\n TMP_DBSYSTEMVALUES_INTERBASE,\n TMP_DBSYSTEMVALUES_MARIADB,\n TMP_DBSYSTEMVALUES_NETEZZA,\n TMP_DBSYSTEMVALUES_PERVASIVE,\n TMP_DBSYSTEMVALUES_POINTBASE,\n TMP_DBSYSTEMVALUES_SQLITE,\n TMP_DBSYSTEMVALUES_SYBASE,\n TMP_DBSYSTEMVALUES_TERADATA,\n TMP_DBSYSTEMVALUES_VERTICA,\n TMP_DBSYSTEMVALUES_H2,\n TMP_DBSYSTEMVALUES_COLDFUSION,\n TMP_DBSYSTEMVALUES_CASSANDRA,\n TMP_DBSYSTEMVALUES_HBASE,\n TMP_DBSYSTEMVALUES_MONGODB,\n TMP_DBSYSTEMVALUES_REDIS,\n TMP_DBSYSTEMVALUES_COUCHBASE,\n TMP_DBSYSTEMVALUES_COUCHDB,\n TMP_DBSYSTEMVALUES_COSMOSDB,\n TMP_DBSYSTEMVALUES_DYNAMODB,\n TMP_DBSYSTEMVALUES_NEO4J,\n TMP_DBSYSTEMVALUES_GEODE,\n TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n TMP_DBSYSTEMVALUES_MEMCACHED,\n TMP_DBSYSTEMVALUES_COCKROACHDB,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ALL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_TWO =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_THREE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ANY =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n\n/**\n * Identifies the Values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport type DbCassandraConsistencyLevelValues = {\n /** all. */\n ALL: 'all';\n\n /** each_quorum. */\n EACH_QUORUM: 'each_quorum';\n\n /** quorum. */\n QUORUM: 'quorum';\n\n /** local_quorum. */\n LOCAL_QUORUM: 'local_quorum';\n\n /** one. */\n ONE: 'one';\n\n /** two. */\n TWO: 'two';\n\n /** three. */\n THREE: 'three';\n\n /** local_one. */\n LOCAL_ONE: 'local_one';\n\n /** any. */\n ANY: 'any';\n\n /** serial. */\n SERIAL: 'serial';\n\n /** local_serial. */\n LOCAL_SERIAL: 'local_serial';\n};\n\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues =\n /*#__PURE__*/ createConstMap([\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nconst TMP_FAASTRIGGERVALUES_HTTP = 'http';\nconst TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nconst TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nconst TMP_FAASTRIGGERVALUES_OTHER = 'other';\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n\n/**\n * Identifies the Values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport type FaasTriggerValues = {\n /** A response to some data source operation such as a database or filesystem read/write. */\n DATASOURCE: 'datasource';\n\n /** To provide an answer to an inbound HTTP request. */\n HTTP: 'http';\n\n /** A function is set to be executed when messages are sent to a messaging system. */\n PUBSUB: 'pubsub';\n\n /** A function is scheduled to be executed regularly. */\n TIMER: 'timer';\n\n /** If none of the others apply. */\n OTHER: 'other';\n};\n\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport const FaasTriggerValues: FaasTriggerValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_INSERT =\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_EDIT =\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_DELETE =\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n\n/**\n * Identifies the Values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport type FaasDocumentOperationValues = {\n /** When a new object is created. */\n INSERT: 'insert';\n\n /** When an object is modified. */\n EDIT: 'edit';\n\n /** When an object is deleted. */\n DELETE: 'delete';\n};\n\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport const FaasDocumentOperationValues: FaasDocumentOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_AZURE =\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport type FaasInvokedProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport const FaasInvokedProviderValues: FaasInvokedProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nconst TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nconst TMP_NETTRANSPORTVALUES_IP = 'ip';\nconst TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nconst TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nconst TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nconst TMP_NETTRANSPORTVALUES_OTHER = 'other';\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n\n/**\n * Identifies the Values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport type NetTransportValues = {\n /** ip_tcp. */\n IP_TCP: 'ip_tcp';\n\n /** ip_udp. */\n IP_UDP: 'ip_udp';\n\n /** Another IP-based protocol. */\n IP: 'ip';\n\n /** Unix Domain socket. See below. */\n UNIX: 'unix';\n\n /** Named or anonymous pipe. See note below. */\n PIPE: 'pipe';\n\n /** In-process communication. */\n INPROC: 'inproc';\n\n /** Something else (non IP-based). */\n OTHER: 'other';\n};\n\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport const NetTransportValues: NetTransportValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETTRANSPORTVALUES_IP_TCP,\n TMP_NETTRANSPORTVALUES_IP_UDP,\n TMP_NETTRANSPORTVALUES_IP,\n TMP_NETTRANSPORTVALUES_UNIX,\n TMP_NETTRANSPORTVALUES_PIPE,\n TMP_NETTRANSPORTVALUES_INPROC,\n TMP_NETTRANSPORTVALUES_OTHER,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIFI =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIRED =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_CELL =\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n\n/**\n * Identifies the Values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionTypeValues = {\n /** wifi. */\n WIFI: 'wifi';\n\n /** wired. */\n WIRED: 'wired';\n\n /** cell. */\n CELL: 'cell';\n\n /** unavailable. */\n UNAVAILABLE: 'unavailable';\n\n /** unknown. */\n UNKNOWN: 'unknown';\n};\n\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport const NetHostConnectionTypeValues: NetHostConnectionTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GSM =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NR =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n\n/**\n * Identifies the Values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionSubtypeValues = {\n /** GPRS. */\n GPRS: 'gprs';\n\n /** EDGE. */\n EDGE: 'edge';\n\n /** UMTS. */\n UMTS: 'umts';\n\n /** CDMA. */\n CDMA: 'cdma';\n\n /** EVDO Rel. 0. */\n EVDO_0: 'evdo_0';\n\n /** EVDO Rev. A. */\n EVDO_A: 'evdo_a';\n\n /** CDMA2000 1XRTT. */\n CDMA2000_1XRTT: 'cdma2000_1xrtt';\n\n /** HSDPA. */\n HSDPA: 'hsdpa';\n\n /** HSUPA. */\n HSUPA: 'hsupa';\n\n /** HSPA. */\n HSPA: 'hspa';\n\n /** IDEN. */\n IDEN: 'iden';\n\n /** EVDO Rev. B. */\n EVDO_B: 'evdo_b';\n\n /** LTE. */\n LTE: 'lte';\n\n /** EHRPD. */\n EHRPD: 'ehrpd';\n\n /** HSPAP. */\n HSPAP: 'hspap';\n\n /** GSM. */\n GSM: 'gsm';\n\n /** TD-SCDMA. */\n TD_SCDMA: 'td_scdma';\n\n /** IWLAN. */\n IWLAN: 'iwlan';\n\n /** 5G NR (New Radio). */\n NR: 'nr';\n\n /** 5G NRNSA (New Radio Non-Standalone). */\n NRNSA: 'nrnsa';\n\n /** LTE CA. */\n LTE_CA: 'lte_ca';\n};\n\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nconst TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nconst TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nconst TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nconst TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n\n/**\n * Identifies the Values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport type HttpFlavorValues = {\n /** HTTP 1.0. */\n HTTP_1_0: '1.0';\n\n /** HTTP 1.1. */\n HTTP_1_1: '1.1';\n\n /** HTTP 2. */\n HTTP_2_0: '2.0';\n\n /** SPDY protocol. */\n SPDY: 'SPDY';\n\n /** QUIC protocol. */\n QUIC: 'QUIC';\n};\n\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport const HttpFlavorValues: HttpFlavorValues = {\n HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_QUEUE =\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_TOPIC =\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n\n/**\n * Identifies the Values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport type MessagingDestinationKindValues = {\n /** A message sent to a queue. */\n QUEUE: 'queue';\n\n /** A message sent to a topic. */\n TOPIC: 'topic';\n};\n\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport const MessagingDestinationKindValues: MessagingDestinationKindValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nconst TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGINGOPERATIONVALUES_RECEIVE =\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGINGOPERATIONVALUES_PROCESS =\n TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n\n/**\n * Identifies the Values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport type MessagingOperationValues = {\n /** receive. */\n RECEIVE: 'receive';\n\n /** process. */\n PROCESS: 'process';\n};\n\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport const MessagingOperationValues: MessagingOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nconst TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nconst TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nconst TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nconst TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nconst TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nconst TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_CANCELLED =\n TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNKNOWN =\n TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT =\n TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED =\n TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_NOT_FOUND =\n TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS =\n TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED =\n TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED =\n TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION =\n TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_ABORTED =\n TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE =\n TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_INTERNAL =\n TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_DATA_LOSS =\n TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n\n/**\n * Identifies the Values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport type RpcGrpcStatusCodeValues = {\n /** OK. */\n OK: 0;\n\n /** CANCELLED. */\n CANCELLED: 1;\n\n /** UNKNOWN. */\n UNKNOWN: 2;\n\n /** INVALID_ARGUMENT. */\n INVALID_ARGUMENT: 3;\n\n /** DEADLINE_EXCEEDED. */\n DEADLINE_EXCEEDED: 4;\n\n /** NOT_FOUND. */\n NOT_FOUND: 5;\n\n /** ALREADY_EXISTS. */\n ALREADY_EXISTS: 6;\n\n /** PERMISSION_DENIED. */\n PERMISSION_DENIED: 7;\n\n /** RESOURCE_EXHAUSTED. */\n RESOURCE_EXHAUSTED: 8;\n\n /** FAILED_PRECONDITION. */\n FAILED_PRECONDITION: 9;\n\n /** ABORTED. */\n ABORTED: 10;\n\n /** OUT_OF_RANGE. */\n OUT_OF_RANGE: 11;\n\n /** UNIMPLEMENTED. */\n UNIMPLEMENTED: 12;\n\n /** INTERNAL. */\n INTERNAL: 13;\n\n /** UNAVAILABLE. */\n UNAVAILABLE: 14;\n\n /** DATA_LOSS. */\n DATA_LOSS: 15;\n\n /** UNAUTHENTICATED. */\n UNAUTHENTICATED: 16;\n};\n\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport const RpcGrpcStatusCodeValues: RpcGrpcStatusCodeValues = {\n OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nconst TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n\n/**\n * Identifies the Values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport type MessageTypeValues = {\n /** sent. */\n SENT: 'SENT';\n\n /** received. */\n RECEIVED: 'RECEIVED';\n};\n\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport const MessageTypeValues: MessageTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n ]);\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n\n/**\n * This event describes a single exception.\n */\nexport const EVENT_EXCEPTION = 'exception' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions' as const;\n\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases' as const;\n\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests' as const;\n\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue' as const;\n\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration' as const;\n\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n * - Rejected by global or endpoint rate limiting policies\n * - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests' as const;\n\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts' as const;\n\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexport const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration' as const;\n\n/**\n * The number of .NET assemblies that are currently loaded.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies).\n */\nexport const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count' as const;\n\n/**\n * The number of exceptions that have been thrown in managed code.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception).\n */\nexport const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions' as const;\n\n/**\n * The number of garbage collections that have occurred since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation.\n */\nexport const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections' as const;\n\n/**\n * The *approximate* number of bytes allocated on the managed GC heap since the process has started. The returned value does not include any native allocations.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes).\n */\nexport const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated' as const;\n\n/**\n * The heap fragmentation, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes).\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size' as const;\n\n/**\n * The managed GC heap size (including fragmentation), as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes).\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size' as const;\n\n/**\n * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().TotalCommittedBytes`](https://learn.microsoft.com/dotnet/api/system.gcmemoryinfo.totalcommittedbytes). Committed virtual memory may be larger than the heap size because it includes both memory for storing existing objects (the heap size) and some extra memory that is ready to handle newly allocated objects in the future.\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size' as const;\n\n/**\n * The total amount of time paused in GC since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration).\n */\nexport const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time' as const;\n\n/**\n * The amount of time the JIT compiler has spent compiling methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime).\n */\nexport const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time' as const;\n\n/**\n * Count of bytes of intermediate language that have been compiled since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes).\n */\nexport const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size' as const;\n\n/**\n * The number of times the JIT compiler (re)compiled methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount).\n */\nexport const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods' as const;\n\n/**\n * The number of times there was contention when trying to acquire a monitor lock since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount).\n */\nexport const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions' as const;\n\n/**\n * The number of processors available to the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount).\n */\nexport const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count' as const;\n\n/**\n * CPU time used by the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing the corresponding processor time properties on [`System.Diagnostics.Process`](https://learn.microsoft.com/dotnet/api/system.diagnostics.process).\n */\nexport const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time' as const;\n\n/**\n * The number of bytes of physical memory mapped to the process context.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset).\n */\nexport const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set' as const;\n\n/**\n * The number of work items that are currently queued to be processed by the thread pool.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length' as const;\n\n/**\n * The number of thread pool threads that currently exist.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count' as const;\n\n/**\n * The number of work items that the thread pool has completed since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count' as const;\n\n/**\n * The number of timer instances that are currently active.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount).\n */\nexport const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count' as const;\n\n/**\n * Duration of HTTP client requests.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration' as const;\n\n/**\n * Duration of HTTP server requests.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration' as const;\n\n/**\n * Number of classes currently loaded.\n */\nexport const METRIC_JVM_CLASS_COUNT = 'jvm.class.count' as const;\n\n/**\n * Number of classes loaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded' as const;\n\n/**\n * Number of classes unloaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded' as const;\n\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count' as const;\n\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexport const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization' as const;\n\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport const METRIC_JVM_CPU_TIME = 'jvm.cpu.time' as const;\n\n/**\n * Duration of JVM garbage collection actions.\n */\nexport const METRIC_JVM_GC_DURATION = 'jvm.gc.duration' as const;\n\n/**\n * Measure of memory committed.\n */\nexport const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed' as const;\n\n/**\n * Measure of max obtainable memory.\n */\nexport const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit' as const;\n\n/**\n * Measure of memory used.\n */\nexport const METRIC_JVM_MEMORY_USED = 'jvm.memory.used' as const;\n\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc' as const;\n\n/**\n * Number of executing platform threads.\n */\nexport const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count' as const;\n\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections' as const;\n\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes' as const;\n\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration' as const;\n\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections' as const;\n\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests' as const;\n\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections' as const;\n\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration' as const;\n\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections' as const;\n\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections' as const;\n\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Specifies the category of synthetic traffic, such as tests or bots.\n *\n * @note This attribute **MAY** be derived from the contents of the `user_agent.original` attribute. Components that populate the attribute are responsible for determining what they consider to be synthetic bot or test traffic. This attribute can either be set for self-identification purposes, or on telemetry detected to be generated as a result of a synthetic request. This attribute is useful for distinguishing between genuine client traffic and synthetic traffic generated by bots or tests.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_SYNTHETIC_TYPE =\n 'user_agent.synthetic.type' as const;\n\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = 'bot' as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = 'test' as const;\n\n/**\n * Deprecated, use `client.address` instead.\n *\n * @example \"83.164.160.102\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `client.address`.\n */\nexport const ATTR_HTTP_CLIENT_IP = 'http.client_ip' as const;\n\n/**\n * Deprecated, use `network.protocol.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.protocol.name`.\n */\nexport const ATTR_HTTP_FLAVOR = 'http.flavor' as const;\n\n/**\n * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage.\n *\n * @example www.example.org\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage.\n */\nexport const ATTR_HTTP_HOST = 'http.host' as const;\n\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n\n/**\n * Deprecated, use `http.request.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.header.`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH =\n 'http.request_content_length' as const;\n\n/**\n * Deprecated, use `http.request.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.body.size`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.request_content_length_uncompressed' as const;\n\n/**\n * Deprecated, use `http.response.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.header.`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH =\n 'http.response_content_length' as const;\n\n/**\n * Deprecated, use `http.response.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replace by `http.response.body.size`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.response_content_length_uncompressed' as const;\n\n/**\n * Deprecated, use `url.scheme` instead.\n *\n * @example http\n * @example https\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.scheme` instead.\n */\nexport const ATTR_HTTP_SCHEME = 'http.scheme' as const;\n\n/**\n * Deprecated, use `server.address` instead.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_HTTP_SERVER_NAME = 'http.server_name' as const;\n\n/**\n * Deprecated, use `http.response.status_code` instead.\n *\n * @example 200\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.status_code`.\n */\nexport const ATTR_HTTP_STATUS_CODE = 'http.status_code' as const;\n\n/**\n * Deprecated, use `url.path` and `url.query` instead.\n *\n * @example /search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Split to `url.path` and `url.query.\n */\nexport const ATTR_HTTP_TARGET = 'http.target' as const;\n\n/**\n * Deprecated, use `url.full` instead.\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.full`.\n */\nexport const ATTR_HTTP_URL = 'http.url' as const;\n\n/**\n * Deprecated, use `user_agent.original` instead.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `user_agent.original`.\n */\nexport const ATTR_HTTP_USER_AGENT = 'http.user_agent' as const;\n\n/**\n * Deprecated, use `network.local.address`.\n *\n * @example \"192.168.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.local.address`.\n */\nexport const ATTR_NET_HOST_IP = 'net.host.ip' as const;\n\n/**\n * Deprecated, use `server.address`.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_NET_HOST_NAME = 'net.host.name' as const;\n\n/**\n * Deprecated, use `server.port`.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port`.\n */\nexport const ATTR_NET_HOST_PORT = 'net.host.port' as const;\n\n/**\n * Deprecated, use `network.peer.address`.\n *\n * @example \"127.0.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.peer.address`.\n */\nexport const ATTR_NET_PEER_IP = 'net.peer.ip' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.transport`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.transport`.\n */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_TCP = 'ip_tcp' as const;\n\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_UDP = 'ip_udp' as const;\n\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_1 = '1.1' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md\n */\nexport enum AttributeNames {\n HTTP_ERROR_NAME = 'http.error_name',\n HTTP_ERROR_MESSAGE = 'http.error_message',\n HTTP_STATUS_TEXT = 'http.status_text',\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as http from 'http';\nimport type * as https from 'https';\nimport type { get, IncomingMessage, request } from 'http';\nimport type * as url from 'url';\n\nexport type IgnoreMatcher = string | RegExp | ((url: string) => boolean);\nexport type HttpCallback = (res: IncomingMessage) => void;\nexport type RequestFunction = typeof request;\nexport type GetFunction = typeof get;\n\nexport type HttpCallbackOptional = HttpCallback | undefined;\n\n// from node 10+\nexport type RequestSignature = [http.RequestOptions, HttpCallbackOptional] &\n HttpCallback;\n\nexport type HttpRequestArgs = Array;\n\nexport type ParsedRequestOptions =\n | (http.RequestOptions & Partial)\n | http.RequestOptions;\nexport type Http = typeof http;\nexport type Https = typeof https;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Func = (...args: any[]) => T;\n\nexport interface Err extends Error {\n errno?: number;\n code?: string;\n path?: string;\n syscall?: string;\n stack?: string;\n}\n\n/**\n * Names of possible synthetic test sources.\n */\nexport const SYNTHETIC_TEST_NAMES = ['alwayson'];\n\n/**\n * Names of possible synthetic bot sources.\n */\nexport const SYNTHETIC_BOT_NAMES = ['googlebot', 'bingbot'];\n\n/**\n * REDACTED string used to replace sensitive information in URLs.\n */\nexport const STR_REDACTED = 'REDACTED';\n\n/**\n * List of URL query keys that are considered sensitive and whose value should be redacted.\n */\nexport const DEFAULT_QUERY_STRINGS_TO_REDACT = [\n 'sig',\n 'Signature',\n 'AWSAccessKeyId',\n 'X-Goog-Signature',\n] as const;\n","'use strict';\n\nvar util = require('util');\n\n/**\n * An error thrown by the parser on unexpected input.\n *\n * @constructor\n * @param {string} message The error message.\n * @param {string} input The unexpected input.\n * @public\n */\nfunction ParseError(message, input) {\n Error.captureStackTrace(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = message;\n this.input = input;\n}\n\nutil.inherits(ParseError, Error);\n\nmodule.exports = ParseError;\n","'use strict';\n\n/**\n * Check if a character is a delimiter as defined in section 3.2.6 of RFC 7230.\n *\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is a delimiter, else `false`.\n * @public\n */\nfunction isDelimiter(code) {\n return code === 0x22 // '\"'\n || code === 0x28 // '('\n || code === 0x29 // ')'\n || code === 0x2C // ','\n || code === 0x2F // '/'\n || code >= 0x3A && code <= 0x40 // ':', ';', '<', '=', '>', '?' '@'\n || code >= 0x5B && code <= 0x5D // '[', '\\', ']'\n || code === 0x7B // '{'\n || code === 0x7D; // '}'\n}\n\n/**\n * Check if a character is allowed in a token as defined in section 3.2.6\n * of RFC 7230.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is allowed, else `false`.\n * @public\n */\nfunction isTokenChar(code) {\n return code === 0x21 // '!'\n || code >= 0x23 && code <= 0x27 // '#', '$', '%', '&', '''\n || code === 0x2A // '*'\n || code === 0x2B // '+'\n || code === 0x2D // '-'\n || code === 0x2E // '.'\n || code >= 0x30 && code <= 0x39 // 0-9\n || code >= 0x41 && code <= 0x5A // A-Z\n || code >= 0x5E && code <= 0x7A // '^', '_', '`', a-z\n || code === 0x7C // '|'\n || code === 0x7E; // '~'\n}\n\n/**\n * Check if a character is a printable ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x20-7E range, else `false`.\n * @public\n */\nfunction isPrint(code) {\n return code >= 0x20 && code <= 0x7E;\n}\n\n/**\n * Check if a character is an extended ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x80-FF range, else `false`.\n * @public\n */\nfunction isExtended(code) {\n return code >= 0x80 && code <= 0xFF;\n}\n\nmodule.exports = {\n isDelimiter: isDelimiter,\n isTokenChar: isTokenChar,\n isExtended: isExtended,\n isPrint: isPrint\n};\n","'use strict';\n\nvar util = require('util');\n\nvar ParseError = require('./lib/error');\nvar ascii = require('./lib/ascii');\n\nvar isDelimiter = ascii.isDelimiter;\nvar isTokenChar = ascii.isTokenChar;\nvar isExtended = ascii.isExtended;\nvar isPrint = ascii.isPrint;\n\n/**\n * Unescape a string.\n *\n * @param {string} str The string to unescape.\n * @returns {string} A new unescaped string.\n * @private\n */\nfunction decode(str) {\n return str.replace(/\\\\(.)/g, '$1');\n}\n\n/**\n * Build an error message when an unexpected character is found.\n *\n * @param {string} header The header field value.\n * @param {number} position The position of the unexpected character.\n * @returns {string} The error message.\n * @private\n */\nfunction unexpectedCharacterMessage(header, position) {\n return util.format(\n \"Unexpected character '%s' at index %d\",\n header.charAt(position),\n position\n );\n}\n\n/**\n * Parse the `Forwarded` header field value into an array of objects.\n *\n * @param {string} header The header field value.\n * @returns {Object[]}\n * @public\n */\nfunction parse(header) {\n var mustUnescape = false;\n var isEscaping = false;\n var inQuotes = false;\n var forwarded = {};\n var output = [];\n var start = -1;\n var end = -1;\n var parameter;\n var code;\n\n for (var i = 0; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (parameter === undefined) {\n if (\n i !== 0 &&\n start === -1 &&\n (code === 0x20/*' '*/ || code === 0x09/*'\\t'*/)\n ) {\n continue;\n }\n\n if (isTokenChar(code)) {\n if (start === -1) start = i;\n } else if (code === 0x3D/*'='*/ && start !== -1) {\n parameter = header.slice(start, i).toLowerCase();\n start = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n if (isEscaping && (code === 0x09 || isPrint(code) || isExtended(code))) {\n isEscaping = false;\n } else if (isTokenChar(code)) {\n if (end !== -1) {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n\n if (start === -1) start = i;\n } else if (isDelimiter(code) || isExtended(code)) {\n if (inQuotes) {\n if (code === 0x22/*'\"'*/) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5C/*'\\'*/) {\n if (start === -1) start = i;\n isEscaping = mustUnescape = true;\n } else if (start === -1) {\n start = i;\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3D) {\n inQuotes = true;\n } else if (\n (code === 0x2C/*','*/|| code === 0x3B/*';'*/) &&\n (start !== -1 || end !== -1)\n ) {\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n if (code === 0x2C) {\n output.push(forwarded);\n forwarded = {};\n }\n\n parameter = undefined;\n start = end = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else if (code === 0x20 || code === 0x09) {\n if (end !== -1) continue;\n\n if (inQuotes) {\n if (start === -1) start = i;\n } else if (start !== -1) {\n end = i;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n }\n }\n\n if (\n parameter === undefined ||\n inQuotes ||\n (start === -1 && end === -1) ||\n code === 0x20 ||\n code === 0x09\n ) {\n throw new ParseError('Unexpected end of input', header);\n }\n\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n output.push(forwarded);\n return output;\n}\n\nmodule.exports = parse;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n Attributes,\n Span,\n DiagLogger,\n AttributeValue,\n} from '@opentelemetry/api';\nimport { SpanStatusCode, context, SpanKind } from '@opentelemetry/api';\nimport {\n ATTR_CLIENT_ADDRESS,\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_REQUEST_METHOD_ORIGINAL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_ROUTE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_HTTP_CLIENT_IP,\n ATTR_HTTP_FLAVOR,\n ATTR_HTTP_HOST,\n ATTR_HTTP_METHOD,\n ATTR_HTTP_REQUEST_CONTENT_LENGTH,\n ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n ATTR_HTTP_RESPONSE_CONTENT_LENGTH,\n ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n ATTR_HTTP_SCHEME,\n ATTR_HTTP_SERVER_NAME,\n ATTR_HTTP_STATUS_CODE,\n ATTR_HTTP_TARGET,\n ATTR_HTTP_URL,\n ATTR_HTTP_USER_AGENT,\n ATTR_NET_HOST_IP,\n ATTR_NET_HOST_NAME,\n ATTR_NET_HOST_PORT,\n ATTR_NET_PEER_IP,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n ATTR_NET_TRANSPORT,\n NET_TRANSPORT_VALUE_IP_TCP,\n NET_TRANSPORT_VALUE_IP_UDP,\n ATTR_USER_AGENT_SYNTHETIC_TYPE,\n USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT,\n USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST,\n} from './semconv';\nimport type {\n IncomingHttpHeaders,\n IncomingMessage,\n OutgoingHttpHeader,\n OutgoingHttpHeaders,\n RequestOptions,\n ServerResponse,\n} from 'http';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport * as url from 'url';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type {\n Err,\n IgnoreMatcher,\n ParsedRequestOptions,\n} from './internal-types';\nimport { SYNTHETIC_BOT_NAMES, SYNTHETIC_TEST_NAMES } from './internal-types';\nimport {\n DEFAULT_QUERY_STRINGS_TO_REDACT,\n STR_REDACTED,\n} from './internal-types';\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nimport forwardedParse = require('forwarded-parse');\n\n/**\n * Get an absolute url\n */\nexport const getAbsoluteUrl = (\n requestUrl: ParsedRequestOptions | null,\n headers: IncomingHttpHeaders | OutgoingHttpHeaders,\n fallbackProtocol = 'http:',\n redactedQueryParams: string[] = Array.from(DEFAULT_QUERY_STRINGS_TO_REDACT)\n): string => {\n const reqUrlObject = requestUrl || {};\n const protocol = reqUrlObject.protocol || fallbackProtocol;\n const port = (reqUrlObject.port || '').toString();\n let path = reqUrlObject.path || '/';\n let host =\n reqUrlObject.host || reqUrlObject.hostname || headers.host || 'localhost';\n // if there is no port in host and there is a port\n // it should be displayed if it's not 80 and 443 (default ports)\n if (\n (host as string).indexOf(':') === -1 &&\n port &&\n port !== '80' &&\n port !== '443'\n ) {\n host += `:${port}`;\n }\n // Redact sensitive query parameters\n if (path.includes('?')) {\n try {\n const parsedUrl = new URL(path, 'http://localhost');\n const sensitiveParamsToRedact: string[] = redactedQueryParams || [];\n\n for (const sensitiveParam of sensitiveParamsToRedact) {\n if (parsedUrl.searchParams.get(sensitiveParam)) {\n parsedUrl.searchParams.set(sensitiveParam, STR_REDACTED);\n }\n }\n\n path = `${parsedUrl.pathname}${parsedUrl.search}`;\n } catch {\n // Ignore error, as the path was not a valid URL.\n }\n }\n const authPart = reqUrlObject.auth ? `${STR_REDACTED}:${STR_REDACTED}@` : '';\n return `${protocol}//${authPart}${host}${path}`;\n};\n\n/**\n * Parse status code from HTTP response. [More details](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-http.md#status)\n */\nexport const parseResponseStatus = (\n kind: SpanKind,\n statusCode?: number\n): SpanStatusCode => {\n const upperBound = kind === SpanKind.CLIENT ? 400 : 500;\n // 1xx, 2xx, 3xx are OK on client and server\n // 4xx is OK on server\n if (statusCode && statusCode >= 100 && statusCode < upperBound) {\n return SpanStatusCode.UNSET;\n }\n\n // All other codes are error\n return SpanStatusCode.ERROR;\n};\n\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param pattern Match pattern\n */\nexport const satisfiesPattern = (\n constant: string,\n pattern: IgnoreMatcher\n): boolean => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n } else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n } else if (typeof pattern === 'function') {\n return pattern(constant);\n } else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n\n/**\n * Sets the span with the error passed in params\n * @param {Span} span the span that need to be set\n * @param {Error} error error that will be set to span\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const setSpanWithError = (\n span: Span,\n error: Err,\n semconvStability: SemconvStability\n): void => {\n const message = error.message;\n\n if (semconvStability & SemconvStability.OLD) {\n span.setAttribute(AttributeNames.HTTP_ERROR_NAME, error.name);\n span.setAttribute(AttributeNames.HTTP_ERROR_MESSAGE, message);\n }\n\n if (semconvStability & SemconvStability.STABLE) {\n span.setAttribute(ATTR_ERROR_TYPE, error.name);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR, message });\n span.recordException(error);\n};\n/**\n * Adds attributes for request content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Request object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n */\nexport const setRequestContentLengthAttribute = (\n request: IncomingMessage,\n attributes: Attributes\n): void => {\n const length = getContentLength(request.headers);\n if (length === null) return;\n\n if (isCompressed(request.headers)) {\n attributes[ATTR_HTTP_REQUEST_CONTENT_LENGTH] = length;\n } else {\n attributes[ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\n\n/**\n * Adds attributes for response content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Response object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n *\n * @deprecated this is for an older version of semconv. It is retained for compatibility using OTEL_SEMCONV_STABILITY_OPT_IN\n */\nexport const setResponseContentLengthAttribute = (\n response: IncomingMessage,\n attributes: Attributes\n): void => {\n const length = getContentLength(response.headers);\n if (length === null) return;\n\n if (isCompressed(response.headers)) {\n attributes[ATTR_HTTP_RESPONSE_CONTENT_LENGTH] = length;\n } else {\n attributes[ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\n\nfunction getContentLength(\n headers: OutgoingHttpHeaders | IncomingHttpHeaders\n): number | null {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader as string, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nexport const isCompressed = (\n headers: OutgoingHttpHeaders | IncomingHttpHeaders\n): boolean => {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n};\n\n/**\n * Mimics Node.js conversion of URL strings to RequestOptions expected by\n * `http.request` and `https.request` APIs.\n *\n * See https://github.com/nodejs/node/blob/2505e217bba05fc581b572c685c5cf280a16c5a3/lib/internal/url.js#L1415-L1437\n *\n * @param stringUrl\n * @throws TypeError if the URL is not valid.\n */\nfunction stringUrlToHttpOptions(\n stringUrl: string\n): RequestOptions & { pathname: string } {\n // This is heavily inspired by Node.js handling of the same situation, trying\n // to follow it as closely as possible while keeping in mind that we only\n // deal with string URLs, not URL objects.\n const {\n hostname,\n pathname,\n port,\n username,\n password,\n search,\n protocol,\n hash,\n href,\n origin,\n host,\n } = new URL(stringUrl);\n\n const options: RequestOptions & {\n pathname: string;\n hash: string;\n search: string;\n href: string;\n origin: string;\n } = {\n protocol: protocol,\n hostname:\n hostname && hostname[0] === '[' ? hostname.slice(1, -1) : hostname,\n hash: hash,\n search: search,\n pathname: pathname,\n path: `${pathname || ''}${search || ''}`,\n href: href,\n origin: origin,\n host: host,\n };\n if (port !== '') {\n options.port = Number(port);\n }\n if (username || password) {\n options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(\n password\n )}`;\n }\n return options;\n}\n\n/**\n * Makes sure options is an url object\n * return an object with default value and parsed options\n * @param logger component logger\n * @param options original options for the request\n * @param [extraOptions] additional options for the request\n */\nexport const getRequestInfo = (\n logger: DiagLogger,\n options: url.URL | RequestOptions | string,\n extraOptions?: RequestOptions\n): {\n origin: string;\n pathname: string;\n method: string;\n invalidUrl: boolean;\n optionsParsed: RequestOptions;\n} => {\n let pathname: string;\n let origin: string;\n let optionsParsed: RequestOptions;\n let invalidUrl = false;\n if (typeof options === 'string') {\n try {\n const convertedOptions = stringUrlToHttpOptions(options);\n optionsParsed = convertedOptions;\n pathname = convertedOptions.pathname || '/';\n } catch (e) {\n invalidUrl = true;\n logger.verbose(\n 'Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:',\n e\n );\n // for backward compatibility with how url.parse() behaved.\n optionsParsed = {\n path: options,\n };\n pathname = optionsParsed.path || '/';\n }\n\n origin = `${optionsParsed.protocol || 'http:'}//${optionsParsed.host}`;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n } else if (options instanceof url.URL) {\n optionsParsed = {\n protocol: options.protocol,\n hostname:\n typeof options.hostname === 'string' && options.hostname.startsWith('[')\n ? options.hostname.slice(1, -1)\n : options.hostname,\n path: `${options.pathname || ''}${options.search || ''}`,\n };\n if (options.port !== '') {\n optionsParsed.port = Number(options.port);\n }\n if (options.username || options.password) {\n optionsParsed.auth = `${options.username}:${options.password}`;\n }\n pathname = options.pathname;\n origin = options.origin;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n } else {\n optionsParsed = Object.assign(\n { protocol: options.host ? 'http:' : undefined },\n options\n );\n\n const hostname =\n optionsParsed.host ||\n (optionsParsed.port != null\n ? `${optionsParsed.hostname}${optionsParsed.port}`\n : optionsParsed.hostname);\n origin = `${optionsParsed.protocol || 'http:'}//${hostname}`;\n\n pathname = (options as url.URL).pathname;\n if (!pathname && optionsParsed.path) {\n try {\n const parsedUrl = new URL(optionsParsed.path, origin);\n pathname = parsedUrl.pathname || '/';\n } catch {\n pathname = '/';\n }\n }\n }\n\n // some packages return method in lowercase..\n // ensure upperCase for consistency\n const method = optionsParsed.method\n ? optionsParsed.method.toUpperCase()\n : 'GET';\n\n return { origin, pathname, method, optionsParsed, invalidUrl };\n};\n\n/**\n * Makes sure options is of type string or object\n * @param options for the request\n */\nexport const isValidOptionsType = (options: unknown): boolean => {\n if (!options) {\n return false;\n }\n\n const type = typeof options;\n return type === 'string' || (type === 'object' && !Array.isArray(options));\n};\n\nexport const extractHostnameAndPort = (\n requestOptions: Pick<\n ParsedRequestOptions,\n 'hostname' | 'host' | 'port' | 'protocol'\n >\n): { hostname: string; port: number | string } => {\n if (requestOptions.hostname && requestOptions.port) {\n return { hostname: requestOptions.hostname, port: requestOptions.port };\n }\n const matches = requestOptions.host?.match(/^([^:/ ]+)(:\\d{1,5})?/) || null;\n const hostname =\n requestOptions.hostname || (matches === null ? 'localhost' : matches[1]);\n let port = requestOptions.port;\n if (!port) {\n if (matches && matches[2]) {\n // remove the leading \":\". The extracted port would be something like \":8080\"\n port = matches[2].substring(1);\n } else {\n port = requestOptions.protocol === 'https:' ? '443' : '80';\n }\n }\n return { hostname, port };\n};\n\n/**\n * Returns outgoing request attributes scoped to the options passed to the request\n * @param {ParsedRequestOptions} requestOptions the same options used to make the request\n * @param {{ component: string, hostname: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getOutgoingRequestAttributes = (\n requestOptions: ParsedRequestOptions,\n options: {\n component: string;\n hostname: string;\n port: string | number;\n hookAttributes?: Attributes;\n redactedQueryParams?: string[];\n },\n semconvStability: SemconvStability,\n enableSyntheticSourceDetection: boolean\n): Attributes => {\n const hostname = options.hostname;\n const port = options.port;\n const method = requestOptions.method ?? 'GET';\n const normalizedMethod = normalizeMethod(method);\n const headers = (requestOptions.headers || {}) as OutgoingHttpHeaders;\n const userAgent = headers['user-agent'];\n const urlFull = getAbsoluteUrl(\n requestOptions,\n headers,\n `${options.component}:`,\n options.redactedQueryParams\n );\n\n const oldAttributes: Attributes = {\n [ATTR_HTTP_URL]: urlFull,\n [ATTR_HTTP_METHOD]: method,\n [ATTR_HTTP_TARGET]: requestOptions.path || '/',\n [ATTR_NET_PEER_NAME]: hostname,\n [ATTR_HTTP_HOST]: headers.host ?? `${hostname}:${port}`,\n };\n\n const newAttributes: Attributes = {\n // Required attributes\n [ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [ATTR_SERVER_ADDRESS]: hostname,\n [ATTR_SERVER_PORT]: Number(port),\n [ATTR_URL_FULL]: urlFull,\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n // leaving out protocol version, it is not yet negotiated\n // leaving out protocol name, it is only required when protocol version is set\n // retries and redirects not supported\n\n // Opt-in attributes left off for now\n };\n\n // conditionally required if request method required case normalization\n if (method !== normalizedMethod) {\n newAttributes[ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[ATTR_USER_AGENT_SYNTHETIC_TYPE] = getSyntheticType(userAgent);\n }\n if (userAgent !== undefined) {\n oldAttributes[ATTR_HTTP_USER_AGENT] = userAgent;\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return Object.assign(newAttributes, options.hookAttributes);\n case SemconvStability.OLD:\n return Object.assign(oldAttributes, options.hookAttributes);\n }\n\n return Object.assign(oldAttributes, newAttributes, options.hookAttributes);\n};\n\n/**\n * Returns outgoing request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getOutgoingRequestMetricAttributes = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_METHOD] = spanAttributes[ATTR_HTTP_METHOD];\n metricAttributes[ATTR_NET_PEER_NAME] = spanAttributes[ATTR_NET_PEER_NAME];\n //TODO: http.url attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\n\n/**\n * Returns attributes related to the kind of HTTP protocol used\n * @param {string} [kind] Kind of HTTP protocol used: \"1.0\", \"1.1\", \"2\", \"SPDY\" or \"QUIC\".\n */\nexport const setAttributesFromHttpKind = (\n kind: string | undefined,\n attributes: Attributes\n): void => {\n if (kind) {\n attributes[ATTR_HTTP_FLAVOR] = kind;\n if (kind.toUpperCase() !== 'QUIC') {\n attributes[ATTR_NET_TRANSPORT] = NET_TRANSPORT_VALUE_IP_TCP;\n } else {\n attributes[ATTR_NET_TRANSPORT] = NET_TRANSPORT_VALUE_IP_UDP;\n }\n }\n};\n\n/**\n * Returns the type of synthetic source based on the user agent\n * @param {OutgoingHttpHeader} userAgent the user agent string\n */\nconst getSyntheticType = (\n userAgent: OutgoingHttpHeader\n): AttributeValue | undefined => {\n const userAgentString: string = String(userAgent).toLowerCase();\n for (const name of SYNTHETIC_TEST_NAMES) {\n if (userAgentString.includes(name)) {\n return USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST;\n }\n }\n for (const name of SYNTHETIC_BOT_NAMES) {\n if (userAgentString.includes(name)) {\n return USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT;\n }\n }\n return;\n};\n\n/**\n * Returns outgoing request attributes scoped to the response data\n * @param {IncomingMessage} response the response object\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getOutgoingRequestAttributesOnResponse = (\n response: IncomingMessage,\n semconvStability: SemconvStability\n): Attributes => {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n const oldAttributes: Attributes = {};\n const stableAttributes: Attributes = {};\n\n if (statusCode != null) {\n stableAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] = statusCode;\n }\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n oldAttributes[ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[ATTR_NET_PEER_PORT] = remotePort;\n\n // Recommended\n stableAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n stableAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n stableAttributes[ATTR_NETWORK_PROTOCOL_VERSION] = response.httpVersion;\n }\n setResponseContentLengthAttribute(response, oldAttributes);\n\n if (statusCode) {\n oldAttributes[ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames.HTTP_STATUS_TEXT] = (\n statusMessage || ''\n ).toUpperCase();\n }\n\n setAttributesFromHttpKind(httpVersion, oldAttributes);\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return stableAttributes;\n case SemconvStability.OLD:\n return oldAttributes;\n }\n\n return Object.assign(oldAttributes, stableAttributes);\n};\n\n/**\n * Returns outgoing request Metric attributes scoped to the response data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getOutgoingRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_NET_PEER_PORT] = spanAttributes[ATTR_NET_PEER_PORT];\n metricAttributes[ATTR_HTTP_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_STATUS_CODE];\n metricAttributes[ATTR_HTTP_FLAVOR] = spanAttributes[ATTR_HTTP_FLAVOR];\n\n return metricAttributes;\n};\n\nexport const getOutgoingStableRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n\n if (spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n metricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n if (spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\n\nfunction parseHostHeader(\n hostHeader: string,\n proto?: string\n): { host: string; port?: string } {\n const parts = hostHeader.split(':');\n\n // no semicolon implies ipv4 dotted syntax or host name without port\n // x.x.x.x\n // example.com\n if (parts.length === 1) {\n if (proto === 'http') {\n return { host: parts[0], port: '80' };\n }\n\n if (proto === 'https') {\n return { host: parts[0], port: '443' };\n }\n\n return { host: parts[0] };\n }\n\n // single semicolon implies ipv4 dotted syntax or host name with port\n // x.x.x.x:yyyy\n // example.com:yyyy\n if (parts.length === 2) {\n return {\n host: parts[0],\n port: parts[1],\n };\n }\n\n // more than 2 parts implies ipv6 syntax with multiple colons\n // [x:x:x:x:x:x:x:x]\n // [x:x:x:x:x:x:x:x]:yyyy\n if (parts[0].startsWith('[')) {\n if (parts[parts.length - 1].endsWith(']')) {\n if (proto === 'http') {\n return { host: hostHeader, port: '80' };\n }\n\n if (proto === 'https') {\n return { host: hostHeader, port: '443' };\n }\n } else if (parts[parts.length - 2].endsWith(']')) {\n return {\n host: parts.slice(0, -1).join(':'),\n port: parts[parts.length - 1],\n };\n }\n }\n\n // if nothing above matches just return the host header\n return { host: hostHeader };\n}\n\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nfunction getServerAddress(\n request: IncomingMessage,\n component: 'http' | 'https'\n): { host: string; port?: string } | null {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.host) {\n return parseHostHeader(entry.host, entry.proto);\n }\n }\n }\n\n const xForwardedHost = request.headers['x-forwarded-host'];\n if (typeof xForwardedHost === 'string') {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(\n xForwardedHost,\n request.headers['x-forwarded-proto']\n );\n }\n\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(\n xForwardedHost,\n request.headers['x-forwarded-proto'][0]\n );\n }\n\n return parseHostHeader(xForwardedHost);\n } else if (\n Array.isArray(xForwardedHost) &&\n typeof xForwardedHost[0] === 'string' &&\n xForwardedHost[0].length > 0\n ) {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(\n xForwardedHost[0],\n request.headers['x-forwarded-proto']\n );\n }\n\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(\n xForwardedHost[0],\n request.headers['x-forwarded-proto'][0]\n );\n }\n\n return parseHostHeader(xForwardedHost[0]);\n }\n\n const host = request.headers['host'];\n if (typeof host === 'string' && host.length > 0) {\n return parseHostHeader(host, component);\n }\n\n return null;\n}\n\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nexport function getRemoteClientAddress(\n request: IncomingMessage\n): string | null {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.for) {\n return removePortFromAddress(entry.for);\n }\n }\n }\n\n const xForwardedFor = request.headers['x-forwarded-for'];\n if (xForwardedFor) {\n let xForwardedForVal;\n if (typeof xForwardedFor === 'string') {\n xForwardedForVal = xForwardedFor;\n } else if (Array.isArray(xForwardedFor)) {\n xForwardedForVal = xForwardedFor[0];\n }\n\n if (typeof xForwardedForVal === 'string') {\n xForwardedForVal = xForwardedForVal.split(',')[0].trim();\n return removePortFromAddress(xForwardedForVal);\n }\n }\n\n const remote = request.socket.remoteAddress;\n if (remote) {\n return remote;\n }\n\n return null;\n}\n\nfunction removePortFromAddress(input: string): string {\n // This function can be replaced with SocketAddress.parse() once the minimum\n // supported Node.js version allows it.\n try {\n const { hostname: address } = new URL(`http://${input}`);\n\n if (address.startsWith('[') && address.endsWith(']')) {\n return address.slice(1, -1);\n }\n\n return address;\n } catch {\n return input;\n }\n}\n\nfunction getInfoFromIncomingMessage(\n component: 'http' | 'https',\n request: IncomingMessage,\n logger: DiagLogger\n): { pathname?: string; search?: string; toString: () => string } {\n try {\n if (request.headers.host) {\n return new URL(\n request.url ?? '/',\n `${component}://${request.headers.host}`\n );\n } else {\n const unsafeParsedUrl = new URL(\n request.url ?? '/',\n // using localhost as a workaround to still use the URL constructor for parsing\n `${component}://localhost`\n );\n // since we use localhost as a workaround, ensure we hide the rest of the properties to avoid\n // our workaround leaking though.\n return {\n pathname: unsafeParsedUrl.pathname,\n search: unsafeParsedUrl.search,\n toString: function () {\n // we cannot use the result of unsafeParsedUrl.toString as it's potentially wrong.\n return unsafeParsedUrl.pathname + unsafeParsedUrl.search;\n },\n };\n }\n } catch (e) {\n // something is wrong, use undefined - this *should* never happen, logging\n // for troubleshooting in case it does happen.\n logger.verbose('Unable to get URL from request', e);\n return {};\n }\n}\n\n/**\n * Returns incoming request attributes scoped to the request data\n * @param {IncomingMessage} request the request object\n * @param {{ component: string, serverName?: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getIncomingRequestAttributes = (\n request: IncomingMessage,\n options: {\n component: 'http' | 'https';\n serverName?: string;\n hookAttributes?: Attributes;\n semconvStability: SemconvStability;\n enableSyntheticSourceDetection: boolean;\n },\n logger: DiagLogger\n): Attributes => {\n const {\n component,\n enableSyntheticSourceDetection,\n hookAttributes,\n semconvStability,\n serverName,\n } = options;\n const { headers, httpVersion, method } = request;\n const { host, 'user-agent': userAgent, 'x-forwarded-for': ips } = headers;\n const parsedUrl = getInfoFromIncomingMessage(component, request, logger);\n let newAttributes: Attributes;\n let oldAttributes: Attributes;\n\n if (semconvStability !== SemconvStability.OLD) {\n // Stable attributes are used.\n const normalizedMethod = normalizeMethod(method);\n const serverAddress = getServerAddress(request, component);\n const remoteClientAddress = getRemoteClientAddress(request);\n\n newAttributes = {\n [ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [ATTR_URL_SCHEME]: component,\n [ATTR_SERVER_ADDRESS]: serverAddress?.host,\n [ATTR_NETWORK_PEER_ADDRESS]: request.socket.remoteAddress,\n [ATTR_NETWORK_PEER_PORT]: request.socket.remotePort,\n [ATTR_NETWORK_PROTOCOL_VERSION]: request.httpVersion,\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n };\n\n if (parsedUrl.pathname != null) {\n newAttributes[ATTR_URL_PATH] = parsedUrl.pathname;\n }\n\n if (parsedUrl.search) {\n // Remove leading '?' from URL search (https://developer.mozilla.org/en-US/docs/Web/API/URL/search).\n newAttributes[ATTR_URL_QUERY] = parsedUrl.search.slice(1);\n }\n\n if (remoteClientAddress != null) {\n newAttributes[ATTR_CLIENT_ADDRESS] = remoteClientAddress;\n }\n\n if (serverAddress?.port != null) {\n newAttributes[ATTR_SERVER_PORT] = Number(serverAddress.port);\n }\n\n // Conditionally required if request method required case normalization.\n if (method !== normalizedMethod) {\n newAttributes[ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[ATTR_USER_AGENT_SYNTHETIC_TYPE] =\n getSyntheticType(userAgent);\n }\n }\n\n if (semconvStability !== SemconvStability.STABLE) {\n // Old attributes are used.\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n oldAttributes = {\n [ATTR_HTTP_URL]: parsedUrl.toString(),\n [ATTR_HTTP_HOST]: host,\n [ATTR_NET_HOST_NAME]: hostname,\n [ATTR_HTTP_METHOD]: method,\n [ATTR_HTTP_SCHEME]: component,\n };\n\n if (typeof ips === 'string') {\n oldAttributes[ATTR_HTTP_CLIENT_IP] = ips.split(',')[0];\n }\n\n if (typeof serverName === 'string') {\n oldAttributes[ATTR_HTTP_SERVER_NAME] = serverName;\n }\n\n if (parsedUrl.pathname) {\n oldAttributes[ATTR_HTTP_TARGET] =\n parsedUrl.pathname + parsedUrl.search || '/';\n }\n\n if (userAgent !== undefined) {\n oldAttributes[ATTR_HTTP_USER_AGENT] = userAgent;\n }\n\n setRequestContentLengthAttribute(request, oldAttributes);\n setAttributesFromHttpKind(httpVersion, oldAttributes);\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return Object.assign(newAttributes!, hookAttributes);\n case SemconvStability.OLD:\n return Object.assign(oldAttributes!, hookAttributes);\n default:\n return Object.assign(oldAttributes!, newAttributes!, hookAttributes);\n }\n};\n\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n * @param {{ component: string }} options used to pass data needed to create attributes\n */\nexport const getIncomingRequestMetricAttributes = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_SCHEME] = spanAttributes[ATTR_HTTP_SCHEME];\n metricAttributes[ATTR_HTTP_METHOD] = spanAttributes[ATTR_HTTP_METHOD];\n metricAttributes[ATTR_NET_HOST_NAME] = spanAttributes[ATTR_NET_HOST_NAME];\n metricAttributes[ATTR_HTTP_FLAVOR] = spanAttributes[ATTR_HTTP_FLAVOR];\n //TODO: http.target attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\n\n/**\n * Returns incoming request attributes scoped to the response data\n * @param {(ServerResponse & { socket: Socket; })} response the response object\n */\nexport const getIncomingRequestAttributesOnResponse = (\n request: IncomingMessage,\n response: ServerResponse,\n semconvStability: SemconvStability\n): Attributes => {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n\n const newAttributes: Attributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n const oldAttributes: Attributes = {};\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n oldAttributes[ATTR_NET_HOST_IP] = localAddress;\n oldAttributes[ATTR_NET_HOST_PORT] = localPort;\n oldAttributes[ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[ATTR_NET_PEER_PORT] = remotePort;\n }\n oldAttributes[ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames.HTTP_STATUS_TEXT] = (\n statusMessage || ''\n ).toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n oldAttributes[ATTR_HTTP_ROUTE] = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = rpcMetadata.route;\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return newAttributes;\n case SemconvStability.OLD:\n return oldAttributes;\n }\n\n return Object.assign(oldAttributes, newAttributes);\n};\n\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getIncomingRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_STATUS_CODE];\n metricAttributes[ATTR_NET_HOST_PORT] = spanAttributes[ATTR_NET_HOST_PORT];\n if (spanAttributes[ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[ATTR_HTTP_ROUTE] = spanAttributes[ATTR_HTTP_ROUTE];\n }\n return metricAttributes;\n};\n\n/**\n * Returns incoming stable request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getIncomingStableRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n if (spanAttributes[ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[ATTR_HTTP_ROUTE] = spanAttributes[ATTR_HTTP_ROUTE];\n }\n\n // required if and only if one was sent, same as span requirement\n if (spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\n\nexport function headerCapture(\n type: 'request' | 'response',\n headers: string[],\n semconvStability: SemconvStability\n) {\n const normalizedHeaders = new Map();\n for (let i = 0, len = headers.length; i < len; i++) {\n const capturedHeader = headers[i].toLowerCase();\n if (semconvStability & SemconvStability.STABLE) {\n normalizedHeaders.set(capturedHeader, capturedHeader);\n } else {\n // In old semconv, the header name converted hypen to underscore, e.g.:\n // `http.request.header.content_length`.\n normalizedHeaders.set(\n capturedHeader,\n capturedHeader.replaceAll('-', '_')\n );\n }\n }\n\n return (\n getHeader: (key: string) => undefined | string | string[] | number\n ): Attributes => {\n const attributes: Attributes = {};\n for (const capturedHeader of normalizedHeaders.keys()) {\n const value = getHeader(capturedHeader);\n\n if (value === undefined) {\n continue;\n }\n\n const normalizedHeader = normalizedHeaders.get(capturedHeader);\n const key = `http.${type}.header.${normalizedHeader}`;\n\n if (typeof value === 'string') {\n attributes[key] = [value];\n } else if (Array.isArray(value)) {\n attributes[key] = value;\n } else {\n attributes[key] = [value];\n }\n }\n return attributes;\n };\n}\n\nconst KNOWN_METHODS = new Set([\n // methods from https://www.rfc-editor.org/rfc/rfc9110.html#name-methods\n 'GET',\n 'HEAD',\n 'POST',\n 'PUT',\n 'DELETE',\n 'CONNECT',\n 'OPTIONS',\n 'TRACE',\n\n // PATCH from https://www.rfc-editor.org/rfc/rfc5789.html\n 'PATCH',\n\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n 'QUERY',\n]);\n\nfunction normalizeMethod(method?: string | null) {\n if (method == null) {\n return 'GET';\n }\n\n const upper = method.toUpperCase();\n if (KNOWN_METHODS.has(upper)) {\n return upper;\n }\n\n return '_OTHER';\n}\n\nfunction parseForwardedHeader(header: string): Record[] {\n try {\n return forwardedParse(header);\n } catch {\n return [];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n HrTime,\n Span,\n SpanOptions,\n SpanStatus,\n Histogram,\n Attributes,\n} from '@opentelemetry/api';\nimport {\n context,\n INVALID_SPAN_CONTEXT,\n propagation,\n ROOT_CONTEXT,\n SpanKind,\n SpanStatusCode,\n trace,\n ValueType,\n} from '@opentelemetry/api';\nimport type { RPCMetadata } from '@opentelemetry/core';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n suppressTracing,\n RPCType,\n setRPCMetadata,\n} from '@opentelemetry/core';\nimport type * as http from 'http';\nimport type * as https from 'https';\nimport type { Socket } from 'net';\nimport * as url from 'url';\nimport type { HttpInstrumentationConfig } from './types';\nimport { VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n SemconvStability,\n semconvStabilityFromStr,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { errorMonitor } from 'events';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_HTTP_ROUTE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_SCHEME,\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n METRIC_HTTP_SERVER_REQUEST_DURATION,\n} from '@opentelemetry/semantic-conventions';\nimport {\n extractHostnameAndPort,\n getIncomingRequestAttributes,\n getIncomingRequestAttributesOnResponse,\n getIncomingRequestMetricAttributes,\n getIncomingRequestMetricAttributesOnResponse,\n getIncomingStableRequestMetricAttributesOnResponse,\n getOutgoingRequestAttributes,\n getOutgoingRequestAttributesOnResponse,\n getOutgoingRequestMetricAttributes,\n getOutgoingRequestMetricAttributesOnResponse,\n getOutgoingStableRequestMetricAttributesOnResponse,\n getRequestInfo,\n headerCapture,\n isValidOptionsType,\n parseResponseStatus,\n setSpanWithError,\n} from './utils';\nimport type { Err, Func, Http, HttpRequestArgs, Https } from './internal-types';\n\n/**\n * `node:http` and `node:https` instrumentation for OpenTelemetry\n */\nexport class HttpInstrumentation extends InstrumentationBase {\n /** keep track on spans not ended */\n private readonly _spanNotEnded: WeakSet = new WeakSet();\n private _headerCapture;\n private _httpPatched: boolean = false;\n private _httpsPatched: boolean = false;\n declare private _oldHttpServerDurationHistogram: Histogram;\n declare private _stableHttpServerDurationHistogram: Histogram;\n declare private _oldHttpClientDurationHistogram: Histogram;\n declare private _stableHttpClientDurationHistogram: Histogram;\n\n private _semconvStability: SemconvStability = SemconvStability.OLD;\n\n constructor(config: HttpInstrumentationConfig = {}) {\n super('@opentelemetry/instrumentation-http', VERSION, config);\n this._semconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n\n protected override _updateMetricInstruments() {\n this._oldHttpServerDurationHistogram = this.meter.createHistogram(\n 'http.server.duration',\n {\n description: 'Measures the duration of inbound HTTP requests.',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n }\n );\n this._oldHttpClientDurationHistogram = this.meter.createHistogram(\n 'http.client.duration',\n {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n }\n );\n this._stableHttpServerDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_SERVER_REQUEST_DURATION,\n {\n description: 'Duration of HTTP server requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n this._stableHttpClientDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n {\n description: 'Duration of HTTP client requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n }\n\n private _recordServerDuration(\n durationMs: number,\n oldAttributes: Attributes,\n stableAttributes: Attributes\n ) {\n if (this._semconvStability & SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpServerDurationHistogram.record(durationMs, oldAttributes);\n }\n\n if (this._semconvStability & SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpServerDurationHistogram.record(\n durationMs / 1000,\n stableAttributes\n );\n }\n }\n\n private _recordClientDuration(\n durationMs: number,\n oldAttributes: Attributes,\n stableAttributes: Attributes\n ) {\n if (this._semconvStability & SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpClientDurationHistogram.record(durationMs, oldAttributes);\n }\n\n if (this._semconvStability & SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpClientDurationHistogram.record(\n durationMs / 1000,\n stableAttributes\n );\n }\n }\n\n override setConfig(config: HttpInstrumentationConfig = {}): void {\n super.setConfig(config);\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n\n init(): [\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleDefinition,\n ] {\n return [this._getHttpsInstrumentation(), this._getHttpInstrumentation()];\n }\n\n private _getHttpInstrumentation() {\n return new InstrumentationNodeModuleDefinition(\n 'http',\n ['*'],\n (moduleExports: Http): Http => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpPatched) {\n return moduleExports;\n }\n this._httpPatched = true;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = (moduleExports as any)[Symbol.toStringTag] === 'Module';\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(\n moduleExports,\n 'request',\n this._getPatchOutgoingRequestFunction('http')\n ) as unknown as Func;\n const patchedGet = this._wrap(\n moduleExports,\n 'get',\n this._getPatchOutgoingGetFunction(patchedRequest)\n );\n if (isESM) {\n // To handle `import http from 'http'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(\n moduleExports.Server.prototype,\n 'emit',\n this._getPatchIncomingRequestFunction('http')\n );\n }\n return moduleExports;\n },\n (moduleExports: Http) => {\n this._httpPatched = false;\n if (moduleExports === undefined) return;\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n }\n );\n }\n\n private _getHttpsInstrumentation() {\n return new InstrumentationNodeModuleDefinition(\n 'https',\n ['*'],\n (moduleExports: Https): Https => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpsPatched) {\n return moduleExports;\n }\n this._httpsPatched = true;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = (moduleExports as any)[Symbol.toStringTag] === 'Module';\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(\n moduleExports,\n 'request',\n this._getPatchHttpsOutgoingRequestFunction('https')\n ) as unknown as Func;\n const patchedGet = this._wrap(\n moduleExports,\n 'get',\n this._getPatchHttpsOutgoingGetFunction(patchedRequest)\n );\n if (isESM) {\n // To handle `import https from 'https'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(\n moduleExports.Server.prototype,\n 'emit',\n this._getPatchIncomingRequestFunction('https')\n );\n }\n return moduleExports;\n },\n (moduleExports: Https) => {\n this._httpsPatched = false;\n if (moduleExports === undefined) return;\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n }\n );\n }\n\n /**\n * Creates spans for incoming requests, restoring spans' context if applied.\n */\n private _getPatchIncomingRequestFunction(component: 'http' | 'https') {\n return (\n original: (event: string, ...args: unknown[]) => boolean\n ): ((this: unknown, event: string, ...args: unknown[]) => boolean) => {\n return this._incomingRequestFunction(component, original);\n };\n }\n\n /**\n * Creates spans for outgoing requests, sending spans' context for distributed\n * tracing.\n */\n private _getPatchOutgoingRequestFunction(component: 'http' | 'https') {\n return (original: Func): Func => {\n return this._outgoingRequestFunction(component, original);\n };\n }\n\n private _getPatchOutgoingGetFunction(\n clientRequest: (\n options: http.RequestOptions | string | url.URL,\n ...args: HttpRequestArgs\n ) => http.ClientRequest\n ) {\n return (_original: Func): Func => {\n // Re-implement http.get. This needs to be done (instead of using\n // getPatchOutgoingRequestFunction to patch it) because we need to\n // set the trace context header before the returned http.ClientRequest is\n // ended. The Node.js docs state that the only differences between\n // request and get are that (1) get defaults to the HTTP GET method and\n // (2) the returned request object is ended immediately. The former is\n // already true (at least in supported Node versions up to v10), so we\n // simply follow the latter. Ref:\n // https://nodejs.org/dist/latest/docs/api/http.html#http_http_get_options_callback\n // https://github.com/googleapis/cloud-trace-nodejs/blob/master/src/instrumentations/instrumentation-http.ts#L198\n return function outgoingGetRequest<\n T extends http.RequestOptions | string | url.URL,\n >(options: T, ...args: HttpRequestArgs): http.ClientRequest {\n const req = clientRequest(options, ...args);\n req.end();\n return req;\n };\n };\n }\n\n /** Patches HTTPS outgoing requests */\n private _getPatchHttpsOutgoingRequestFunction(component: 'http' | 'https') {\n return (original: Func): Func => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: https.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ): http.ClientRequest {\n // Makes sure options will have default HTTPS parameters\n if (\n component === 'https' &&\n typeof options === 'object' &&\n options?.constructor?.name !== 'URL'\n ) {\n options = Object.assign({}, options);\n instrumentation._setDefaultOptions(options);\n }\n return instrumentation._getPatchOutgoingRequestFunction(component)(\n original\n )(options, ...args);\n };\n };\n }\n\n private _setDefaultOptions(options: https.RequestOptions) {\n options.protocol = options.protocol || 'https:';\n options.port = options.port || 443;\n }\n\n /** Patches HTTPS outgoing get requests */\n private _getPatchHttpsOutgoingGetFunction(\n clientRequest: (\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: http.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ) => http.ClientRequest\n ) {\n return (original: Func): Func => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: https.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ): http.ClientRequest {\n return instrumentation._getPatchOutgoingGetFunction(clientRequest)(\n original\n )(options, ...args);\n };\n };\n }\n\n /**\n * Attach event listeners to a client request to end span and add span attributes.\n *\n * @param request The original request object.\n * @param span representing the current operation\n * @param startTime representing the start time of the request to calculate duration in Metric\n * @param oldMetricAttributes metric attributes for old semantic conventions\n * @param stableMetricAttributes metric attributes for new semantic conventions\n */\n private _traceClientRequest(\n request: http.ClientRequest,\n span: Span,\n startTime: HrTime,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes\n ): http.ClientRequest {\n if (this.getConfig().requestHook) {\n this._callRequestHook(span, request);\n }\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\n /*\n * User 'response' event listeners can be added before our listener,\n * force our listener to be the first, so response emitter is bound\n * before any user listeners are added to it.\n */\n request.prependListener(\n 'response',\n (response: http.IncomingMessage & { aborted?: boolean }) => {\n this._diag.debug('outgoingRequest on response()');\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n const responseAttributes = getOutgoingRequestAttributesOnResponse(\n response,\n this._semconvStability\n );\n span.setAttributes(responseAttributes);\n oldMetricAttributes = Object.assign(\n oldMetricAttributes,\n getOutgoingRequestMetricAttributesOnResponse(responseAttributes)\n );\n stableMetricAttributes = Object.assign(\n stableMetricAttributes,\n getOutgoingStableRequestMetricAttributesOnResponse(responseAttributes)\n );\n\n if (this.getConfig().responseHook) {\n this._callResponseHook(span, response);\n }\n\n span.setAttributes(\n this._headerCapture.client.captureRequestHeaders(header =>\n request.getHeader(header)\n )\n );\n span.setAttributes(\n this._headerCapture.client.captureResponseHeaders(\n header => response.headers[header]\n )\n );\n\n context.bind(context.active(), response);\n\n const endHandler = () => {\n this._diag.debug('outgoingRequest on end()');\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n let status: SpanStatus;\n\n if (response.aborted && !response.complete) {\n status = { code: SpanStatusCode.ERROR };\n } else {\n // behaves same for new and old semconv\n status = {\n code: parseResponseStatus(SpanKind.CLIENT, response.statusCode),\n };\n }\n\n span.setStatus(status);\n\n if (this.getConfig().applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () =>\n this.getConfig().applyCustomAttributesOnSpan!(\n span,\n request,\n response\n ),\n () => {},\n true\n );\n }\n\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n };\n\n response.on('end', endHandler);\n response.on(errorMonitor, (error: Err) => {\n this._diag.debug('outgoingRequest on error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n });\n }\n );\n request.on('close', () => {\n this._diag.debug('outgoingRequest on request close()');\n if (request.aborted || responseFinished) {\n return;\n }\n responseFinished = true;\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n });\n request.on(errorMonitor, (error: Err) => {\n this._diag.debug('outgoingRequest on request error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n });\n\n this._diag.debug('http.ClientRequest return request');\n return request;\n }\n\n private _incomingRequestFunction(\n component: 'http' | 'https',\n original: (event: string, ...args: unknown[]) => boolean\n ) {\n const instrumentation = this;\n return function incomingRequest(\n this: unknown,\n event: string,\n ...args: unknown[]\n ): boolean {\n // Only traces request events\n if (event !== 'request') {\n return original.apply(this, [event, ...args]);\n }\n\n const request = args[0] as http.IncomingMessage;\n const response = args[1] as http.ServerResponse & { socket: Socket };\n const method = request.method || 'GET';\n\n instrumentation._diag.debug(\n `${component} instrumentation incomingRequest`\n );\n\n if (\n safeExecuteInTheMiddle(\n () =>\n instrumentation.getConfig().ignoreIncomingRequestHook?.(request),\n (e: unknown) => {\n if (e != null) {\n instrumentation._diag.error(\n 'caught ignoreIncomingRequestHook error: ',\n e\n );\n }\n },\n true\n )\n ) {\n return context.with(suppressTracing(context.active()), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n return original.apply(this, [event, ...args]);\n });\n }\n\n const headers = request.headers;\n\n const spanAttributes = getIncomingRequestAttributes(\n request,\n {\n component: component,\n serverName: instrumentation.getConfig().serverName,\n hookAttributes: instrumentation._callStartSpanHook(\n request,\n instrumentation.getConfig().startIncomingSpanHook\n ),\n semconvStability: instrumentation._semconvStability,\n enableSyntheticSourceDetection:\n instrumentation.getConfig().enableSyntheticSourceDetection || false,\n },\n instrumentation._diag\n );\n\n Object.assign(\n spanAttributes,\n instrumentation._headerCapture.server.captureRequestHeaders(\n header => request.headers[header]\n )\n );\n\n const spanOptions: SpanOptions = {\n kind: SpanKind.SERVER,\n attributes: spanAttributes,\n };\n\n const startTime = hrTime();\n const oldMetricAttributes =\n getIncomingRequestMetricAttributes(spanAttributes);\n\n // request method and url.scheme are both required span attributes\n const stableMetricAttributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: spanAttributes[ATTR_HTTP_REQUEST_METHOD],\n [ATTR_URL_SCHEME]: spanAttributes[ATTR_URL_SCHEME],\n };\n\n // recommended if and only if one was sent, same as span recommendation\n if (spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n const ctx = propagation.extract(ROOT_CONTEXT, headers);\n const span = instrumentation._startHttpSpan(method, spanOptions, ctx);\n const rpcMetadata: RPCMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(\n setRPCMetadata(trace.setSpan(ctx, span), rpcMetadata),\n () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n if (instrumentation.getConfig().requestHook) {\n instrumentation._callRequestHook(span, request);\n }\n if (instrumentation.getConfig().responseHook) {\n instrumentation._callResponseHook(span, response);\n }\n\n // After 'error', no further events other than 'close' should be emitted.\n let hasError = false;\n response.on('close', () => {\n if (hasError) {\n return;\n }\n instrumentation._onServerResponseFinish(\n request,\n response,\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime\n );\n });\n response.on(errorMonitor, (err: Err) => {\n hasError = true;\n instrumentation._onServerResponseError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n err\n );\n });\n\n return safeExecuteInTheMiddle(\n () => original.apply(this, [event, ...args]),\n error => {\n if (error) {\n instrumentation._onServerResponseError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n throw error;\n }\n }\n );\n }\n );\n };\n }\n\n private _outgoingRequestFunction(\n component: 'http' | 'https',\n original: Func\n ): Func {\n const instrumentation = this;\n return function outgoingRequest(\n this: unknown,\n options: url.URL | http.RequestOptions | string,\n ...args: unknown[]\n ): http.ClientRequest {\n if (!isValidOptionsType(options)) {\n return original.apply(this, [options, ...args]);\n }\n const extraOptions =\n typeof args[0] === 'object' &&\n (typeof options === 'string' || options instanceof url.URL)\n ? (args.shift() as http.RequestOptions)\n : undefined;\n const { method, invalidUrl, optionsParsed } = getRequestInfo(\n instrumentation._diag,\n options,\n extraOptions\n );\n\n if (\n safeExecuteInTheMiddle(\n () =>\n instrumentation\n .getConfig()\n .ignoreOutgoingRequestHook?.(optionsParsed),\n (e: unknown) => {\n if (e != null) {\n instrumentation._diag.error(\n 'caught ignoreOutgoingRequestHook error: ',\n e\n );\n }\n },\n true\n )\n ) {\n return original.apply(this, [optionsParsed, ...args]);\n }\n\n const { hostname, port } = extractHostnameAndPort(optionsParsed);\n const attributes = getOutgoingRequestAttributes(\n optionsParsed,\n {\n component,\n port,\n hostname,\n hookAttributes: instrumentation._callStartSpanHook(\n optionsParsed,\n instrumentation.getConfig().startOutgoingSpanHook\n ),\n redactedQueryParams: instrumentation.getConfig().redactedQueryParams, // Added config for adding custom query strings\n },\n instrumentation._semconvStability,\n instrumentation.getConfig().enableSyntheticSourceDetection || false\n );\n\n const startTime = hrTime();\n const oldMetricAttributes: Attributes =\n getOutgoingRequestMetricAttributes(attributes);\n\n // request method, server address, and server port are both required span attributes\n const stableMetricAttributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: attributes[ATTR_HTTP_REQUEST_METHOD],\n [ATTR_SERVER_ADDRESS]: attributes[ATTR_SERVER_ADDRESS],\n [ATTR_SERVER_PORT]: attributes[ATTR_SERVER_PORT],\n };\n\n // required if and only if one was sent, same as span requirement\n if (attributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n stableMetricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n\n // recommended if and only if one was sent, same as span recommendation\n if (attributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n attributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n const spanOptions: SpanOptions = {\n kind: SpanKind.CLIENT,\n attributes,\n };\n const span = instrumentation._startHttpSpan(method, spanOptions);\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n if (!optionsParsed.headers) {\n optionsParsed.headers = {};\n } else {\n // Make a copy of the headers object to avoid mutating an object the\n // caller might have a reference to.\n optionsParsed.headers = Object.assign({}, optionsParsed.headers);\n }\n propagation.inject(requestContext, optionsParsed.headers);\n\n return context.with(requestContext, () => {\n /*\n * The response callback is registered before ClientRequest is bound,\n * thus it is needed to bind it before the function call.\n */\n const cb = args[args.length - 1];\n if (typeof cb === 'function') {\n args[args.length - 1] = context.bind(parentContext, cb);\n }\n\n const request: http.ClientRequest = safeExecuteInTheMiddle(\n () => {\n if (invalidUrl) {\n // we know that the url is invalid, there's no point in injecting context as it will fail validation.\n // Passing in what the user provided will give the user an error that matches what they'd see without\n // the instrumentation.\n return original.apply(this, [options, ...args]);\n } else {\n return original.apply(this, [optionsParsed, ...args]);\n }\n },\n error => {\n if (error) {\n instrumentation._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n throw error;\n }\n }\n );\n\n instrumentation._diag.debug(\n `${component} instrumentation outgoingRequest`\n );\n context.bind(parentContext, request);\n return instrumentation._traceClientRequest(\n request,\n span,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n });\n };\n }\n\n private _onServerResponseFinish(\n request: http.IncomingMessage,\n response: http.ServerResponse,\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime\n ) {\n const attributes = getIncomingRequestAttributesOnResponse(\n request,\n response,\n this._semconvStability\n );\n oldMetricAttributes = Object.assign(\n oldMetricAttributes,\n getIncomingRequestMetricAttributesOnResponse(attributes)\n );\n stableMetricAttributes = Object.assign(\n stableMetricAttributes,\n getIncomingStableRequestMetricAttributesOnResponse(attributes)\n );\n\n span.setAttributes(\n this._headerCapture.server.captureResponseHeaders(header =>\n response.getHeader(header)\n )\n );\n\n span.setAttributes(attributes).setStatus({\n code: parseResponseStatus(SpanKind.SERVER, response.statusCode),\n });\n\n const route = attributes[ATTR_HTTP_ROUTE];\n if (route) {\n span.updateName(`${request.method || 'GET'} ${route}`);\n }\n\n if (this.getConfig().applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () =>\n this.getConfig().applyCustomAttributesOnSpan!(\n span,\n request,\n response\n ),\n () => {},\n true\n );\n }\n\n this._closeHttpSpan(\n span,\n SpanKind.SERVER,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _onOutgoingRequestError(\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime,\n error: Err\n ) {\n setSpanWithError(span, error, this._semconvStability);\n stableMetricAttributes[ATTR_ERROR_TYPE] = error.name;\n\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _onServerResponseError(\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime,\n error: Err\n ) {\n setSpanWithError(span, error, this._semconvStability);\n stableMetricAttributes[ATTR_ERROR_TYPE] = error.name;\n\n this._closeHttpSpan(\n span,\n SpanKind.SERVER,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _startHttpSpan(\n name: string,\n options: SpanOptions,\n ctx = context.active()\n ) {\n /*\n * If a parent is required but not present, we use a `NoopSpan` to still\n * propagate context without recording it.\n */\n const requireParent =\n options.kind === SpanKind.CLIENT\n ? this.getConfig().requireParentforOutgoingSpans\n : this.getConfig().requireParentforIncomingSpans;\n\n let span: Span;\n const currentSpan = trace.getSpan(ctx);\n\n if (\n requireParent === true &&\n (!currentSpan || !trace.isSpanContextValid(currentSpan.spanContext()))\n ) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else if (requireParent === true && currentSpan?.spanContext().isRemote) {\n span = currentSpan;\n } else {\n span = this.tracer.startSpan(name, options, ctx);\n }\n this._spanNotEnded.add(span);\n return span;\n }\n\n private _closeHttpSpan(\n span: Span,\n spanKind: SpanKind,\n startTime: HrTime,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes\n ) {\n if (!this._spanNotEnded.has(span)) {\n return;\n }\n\n span.end();\n this._spanNotEnded.delete(span);\n\n // Record metrics\n const duration = hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime()));\n if (spanKind === SpanKind.SERVER) {\n this._recordServerDuration(\n duration,\n oldMetricAttributes,\n stableMetricAttributes\n );\n } else if (spanKind === SpanKind.CLIENT) {\n this._recordClientDuration(\n duration,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n }\n\n private _callResponseHook(\n span: Span,\n response: http.IncomingMessage | http.ServerResponse\n ) {\n safeExecuteInTheMiddle(\n () => this.getConfig().responseHook!(span, response),\n () => {},\n true\n );\n }\n\n private _callRequestHook(\n span: Span,\n request: http.ClientRequest | http.IncomingMessage\n ) {\n safeExecuteInTheMiddle(\n () => this.getConfig().requestHook!(span, request),\n () => {},\n true\n );\n }\n\n private _callStartSpanHook(\n request: http.IncomingMessage | http.RequestOptions,\n hookFunc: Function | undefined\n ) {\n if (typeof hookFunc === 'function') {\n return safeExecuteInTheMiddle(\n () => hookFunc(request),\n () => {},\n true\n );\n }\n }\n\n private _createHeaderCapture(semconvStability: SemconvStability) {\n const config = this.getConfig();\n\n return {\n client: {\n captureRequestHeaders: headerCapture(\n 'request',\n config.headersToSpanAttributes?.client?.requestHeaders ?? [],\n semconvStability\n ),\n captureResponseHeaders: headerCapture(\n 'response',\n config.headersToSpanAttributes?.client?.responseHeaders ?? [],\n semconvStability\n ),\n },\n server: {\n captureRequestHeaders: headerCapture(\n 'request',\n config.headersToSpanAttributes?.server?.requestHeaders ?? [],\n semconvStability\n ),\n captureResponseHeaders: headerCapture(\n 'response',\n config.headersToSpanAttributes?.server?.responseHeaders ?? [],\n semconvStability\n ),\n },\n };\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { HttpInstrumentation } from './http';\nexport type {\n HttpCustomAttributeFunction,\n HttpInstrumentationConfig,\n HttpRequestCustomAttributeFunction,\n HttpResponseCustomAttributeFunction,\n IgnoreIncomingRequestFunction,\n IgnoreOutgoingRequestFunction,\n StartIncomingSpanCustomAttributeFunction,\n StartOutgoingSpanCustomAttributeFunction,\n} from './types';\n","import { type Instrumentation, registerInstrumentations } from '@opentelemetry/instrumentation';\n\n/** Exported only for tests. */\nexport const INSTRUMENTED: Record = {};\n\nexport function generateInstrumentOnce<\n Options,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n InstrumentationClass extends new (...args: any[]) => Instrumentation,\n>(\n name: string,\n instrumentationClass: InstrumentationClass,\n optionsCallback: (options: Options) => ConstructorParameters[0],\n): ((options: Options) => InstanceType) & { id: string };\nexport function generateInstrumentOnce<\n Options = unknown,\n InstrumentationInstance extends Instrumentation = Instrumentation,\n>(\n name: string,\n creator: (options?: Options) => InstrumentationInstance,\n): ((options?: Options) => InstrumentationInstance) & { id: string };\n/**\n * Instrument an OpenTelemetry instrumentation once.\n * This will skip running instrumentation again if it was already instrumented.\n */\nexport function generateInstrumentOnce(\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n creatorOrClass: (new (...args: any[]) => Instrumentation) | ((options?: Options) => Instrumentation),\n optionsCallback?: (options: Options) => unknown,\n): ((options: Options) => Instrumentation) & { id: string } {\n if (optionsCallback) {\n return _generateInstrumentOnceWithOptions(\n name,\n creatorOrClass as new (...args: unknown[]) => Instrumentation,\n optionsCallback,\n );\n }\n\n return _generateInstrumentOnce(name, creatorOrClass as (options?: Options) => Instrumentation);\n}\n\n// The plain version without handling of options\n// Should not be used with custom options that are mutated in the creator!\nfunction _generateInstrumentOnce(\n name: string,\n creator: (options?: Options) => InstrumentationInstance,\n): ((options?: Options) => InstrumentationInstance) & { id: string } {\n return Object.assign(\n (options?: Options) => {\n const instrumented = INSTRUMENTED[name] as InstrumentationInstance | undefined;\n if (instrumented) {\n // If options are provided, ensure we update them\n if (options) {\n instrumented.setConfig(options);\n }\n return instrumented;\n }\n\n const instrumentation = creator(options);\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n// This version handles options properly\nfunction _generateInstrumentOnceWithOptions<\n Options,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n InstrumentationClass extends new (...args: any[]) => Instrumentation,\n>(\n name: string,\n instrumentationClass: InstrumentationClass,\n optionsCallback: (options: Options) => ConstructorParameters[0],\n): ((options: Options) => InstanceType) & { id: string } {\n return Object.assign(\n (_options: Options) => {\n const options = optionsCallback(_options);\n\n const instrumented = INSTRUMENTED[name] as InstanceType | undefined;\n if (instrumented) {\n // Ensure we update options\n instrumented.setConfig(options);\n return instrumented;\n }\n\n const instrumentation = new instrumentationClass(options) as InstanceType;\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n/**\n * Ensure a given callback is called when the instrumentation is actually wrapping something.\n * This can be used to ensure some logic is only called when the instrumentation is actually active.\n *\n * This function returns a function that can be invoked with a callback.\n * This callback will either be invoked immediately\n * (e.g. if the instrumentation was already wrapped, or if _wrap could not be patched),\n * or once the instrumentation is actually wrapping something.\n *\n * Make sure to call this function right after adding the instrumentation, otherwise it may be too late!\n * The returned callback can be used any time, and also multiple times.\n */\nexport function instrumentWhenWrapped(instrumentation: T): (callback: () => void) => void {\n let isWrapped = false;\n let callbacks: (() => void)[] = [];\n\n if (!hasWrap(instrumentation)) {\n isWrapped = true;\n } else {\n const originalWrap = instrumentation['_wrap'];\n\n instrumentation['_wrap'] = (...args: Parameters) => {\n isWrapped = true;\n callbacks.forEach(callback => callback());\n callbacks = [];\n return originalWrap(...args);\n };\n }\n\n const registerCallback = (callback: () => void): void => {\n if (isWrapped) {\n callback();\n } else {\n callbacks.push(callback);\n }\n };\n\n return registerCallback;\n}\n\nfunction hasWrap(\n instrumentation: T,\n): instrumentation is T & { _wrap: (...args: unknown[]) => unknown } {\n return typeof (instrumentation as T & { _wrap?: (...args: unknown[]) => unknown })['_wrap'] === 'function';\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","export const INSTRUMENTATION_NAME = '@sentry/instrumentation-http';\n\n/** We only want to capture request bodies up to 1mb. */\nexport const MAX_BODY_BYTE_LENGTH = 1024 * 1024;\n","import type { IncomingMessage } from 'node:http';\nimport type { Scope } from '@sentry/core';\nimport { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { MAX_BODY_BYTE_LENGTH } from '../integrations/http/constants';\n\n/**\n * This method patches the request object to capture the body.\n * Instead of actually consuming the streamed body ourselves, which has potential side effects,\n * we monkey patch `req.on('data')` to intercept the body chunks.\n * This way, we only read the body if the user also consumes the body, ensuring we do not change any behavior in unexpected ways.\n */\nexport function patchRequestToCaptureBody(\n req: IncomingMessage,\n isolationScope: Scope,\n maxIncomingRequestBodySize: 'small' | 'medium' | 'always',\n integrationName: string,\n): void {\n let bodyByteLength = 0;\n const chunks: Buffer[] = [];\n\n DEBUG_BUILD && debug.log(integrationName, 'Patching request.on');\n\n /**\n * We need to keep track of the original callbacks, in order to be able to remove listeners again.\n * Since `off` depends on having the exact same function reference passed in, we need to be able to map\n * original listeners to our wrapped ones.\n */\n const callbackMap = new WeakMap();\n\n const maxBodySize =\n maxIncomingRequestBodySize === 'small'\n ? 1_000\n : maxIncomingRequestBodySize === 'medium'\n ? 10_000\n : MAX_BODY_BYTE_LENGTH;\n\n try {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.on = new Proxy(req.on, {\n apply: (target, thisArg, args: Parameters) => {\n const [event, listener, ...restArgs] = args;\n\n if (event === 'data') {\n DEBUG_BUILD &&\n debug.log(integrationName, `Handling request.on(\"data\") with maximum body size of ${maxBodySize}b`);\n\n const callback = new Proxy(listener, {\n apply: (target, thisArg, args: Parameters) => {\n try {\n const chunk = args[0] as Buffer | string;\n const bufferifiedChunk = Buffer.from(chunk);\n\n if (bodyByteLength < maxBodySize) {\n chunks.push(bufferifiedChunk);\n bodyByteLength += bufferifiedChunk.byteLength;\n } else if (DEBUG_BUILD) {\n debug.log(\n integrationName,\n `Dropping request body chunk because maximum body length of ${maxBodySize}b is exceeded.`,\n );\n }\n } catch (_err) {\n DEBUG_BUILD && debug.error(integrationName, 'Encountered error while storing body chunk.');\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n callbackMap.set(listener, callback);\n\n return Reflect.apply(target, thisArg, [event, callback, ...restArgs]);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n // Ensure we also remove callbacks correctly\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.off = new Proxy(req.off, {\n apply: (target, thisArg, args: Parameters) => {\n const [, listener] = args;\n\n const callback = callbackMap.get(listener);\n if (callback) {\n callbackMap.delete(listener);\n\n const modifiedArgs = args.slice();\n modifiedArgs[1] = callback;\n return Reflect.apply(target, thisArg, modifiedArgs);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n req.on('end', () => {\n try {\n const body = Buffer.concat(chunks).toString('utf-8');\n if (body) {\n // Using Buffer.byteLength here, because the body may contain characters that are not 1 byte long\n const bodyByteLength = Buffer.byteLength(body, 'utf-8');\n const truncatedBody =\n bodyByteLength > maxBodySize\n ? `${Buffer.from(body)\n .subarray(0, maxBodySize - 3)\n .toString('utf-8')}...`\n : body;\n\n isolationScope.setSDKProcessingMetadata({ normalizedRequest: { data: truncatedBody } });\n }\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error building captured request body', error);\n }\n }\n });\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error patching request to capture body', error);\n }\n }\n}\n","import type { ChannelListener } from 'node:diagnostics_channel';\nimport { subscribe } from 'node:diagnostics_channel';\nimport type { EventEmitter } from 'node:events';\nimport type { IncomingMessage, RequestOptions, Server, ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport { context, createContextKey, propagation } from '@opentelemetry/api';\nimport type { AggregationCounts, Client, Integration, IntegrationFn, Scope } from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n addNonEnumerableProperty,\n debug,\n generateSpanId,\n generateTraceId,\n getClient,\n getCurrentScope,\n getIsolationScope,\n httpRequestToRequestData,\n stripUrlQueryAndFragment,\n withIsolationScope,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type { NodeClient } from '../../sdk/client';\nimport { patchRequestToCaptureBody } from '../../utils/captureRequestBody';\n\ntype ServerEmit = typeof Server.prototype.emit;\n\n// Inlining this type to not depend on newer TS types\ninterface WeakRefImpl {\n deref(): T | undefined;\n}\n\ntype StartSpanCallback = (next: () => boolean) => boolean;\ntype RequestWithOptionalStartSpanCallback = IncomingMessage & {\n _startSpanCallback?: WeakRefImpl;\n};\n\nconst HTTP_SERVER_INSTRUMENTED_KEY = createContextKey('sentry_http_server_instrumented');\nconst INTEGRATION_NAME = 'Http.Server';\n\nconst clientToRequestSessionAggregatesMap = new Map<\n Client,\n { [timestampRoundedToSeconds: string]: { exited: number; crashed: number; errored: number } }\n>();\n\n// We keep track of emit functions we wrapped, to avoid double wrapping\n// We do this instead of putting a non-enumerable property on the function, because\n// sometimes the property seems to be migrated to forks of the emit function, which we do not want to happen\n// This was the case in the nestjs-distributed-tracing E2E test\nconst wrappedEmitFns = new WeakSet();\n\nexport interface HttpServerIntegrationOptions {\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n sessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n}\n\n/**\n * Add a callback to the request object that will be called when the request is started.\n * The callback will receive the next function to continue processing the request.\n */\nexport function addStartSpanCallback(request: RequestWithOptionalStartSpanCallback, callback: StartSpanCallback): void {\n addNonEnumerableProperty(request, '_startSpanCallback', new WeakRef(callback));\n}\n\nconst _httpServerIntegration = ((options: HttpServerIntegrationOptions = {}) => {\n const _options = {\n sessions: options.sessions ?? true,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS ?? 60_000,\n maxRequestBodySize: options.maxRequestBodySize ?? 'medium',\n ignoreRequestBody: options.ignoreRequestBody,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const onHttpServerRequestStart = ((_data: unknown) => {\n const data = _data as { server: Server };\n\n instrumentServer(data.server, _options);\n }) satisfies ChannelListener;\n\n subscribe('http.server.request.start', onHttpServerRequestStart);\n },\n afterAllSetup(client) {\n if (DEBUG_BUILD && client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerIntegration` while `httpIntegration` is also present. Make sure to remove `httpServerIntegration` when adding `httpIntegration`.',\n );\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * This integration handles request isolation, trace continuation and other core Sentry functionality around incoming http requests\n * handled via the node `http` module.\n *\n * This version uses OpenTelemetry for context propagation and span management.\n *\n * @see {@link ../../light/integrations/httpServerIntegration.ts} for the lightweight version without OpenTelemetry\n */\nexport const httpServerIntegration = _httpServerIntegration as (\n options?: HttpServerIntegrationOptions,\n) => Integration & {\n name: 'HttpServer';\n setupOnce: () => void;\n};\n\n/**\n * Instrument a server to capture incoming requests.\n *\n */\nfunction instrumentServer(\n server: Server,\n {\n ignoreRequestBody,\n maxRequestBodySize,\n sessions,\n sessionFlushingDelayMS,\n }: {\n ignoreRequestBody?: (url: string, request: IncomingMessage) => boolean;\n maxRequestBodySize: 'small' | 'medium' | 'always' | 'none';\n sessions: boolean;\n sessionFlushingDelayMS: number;\n },\n): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEmit: ServerEmit = server.emit;\n\n if (wrappedEmitFns.has(originalEmit)) {\n return;\n }\n\n const newEmit = new Proxy(originalEmit, {\n apply(target, thisArg, args: [event: string, ...args: unknown[]]) {\n // Only traces request events\n if (args[0] !== 'request') {\n return target.apply(thisArg, args);\n }\n\n const client = getClient();\n\n // Make sure we do not double execute our wrapper code, for edge cases...\n // Without this check, if we double-wrap emit, for whatever reason, you'd get two http.server spans (one the children of the other)\n if (context.active().getValue(HTTP_SERVER_INSTRUMENTED_KEY) || !client) {\n return target.apply(thisArg, args);\n }\n\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Handling incoming request');\n\n const isolationScope = getIsolationScope().clone();\n const request = args[1] as IncomingMessage;\n const response = args[2] as ServerResponse & { socket: Socket };\n\n const normalizedRequest = httpRequestToRequestData(request);\n\n // request.ip is non-standard but some frameworks set this\n const ipAddress = (request as { ip?: string }).ip || request.socket?.remoteAddress;\n\n const url = request.url || '/';\n if (maxRequestBodySize !== 'none' && !ignoreRequestBody?.(url, request)) {\n patchRequestToCaptureBody(request, isolationScope, maxRequestBodySize, INTEGRATION_NAME);\n }\n\n // Update the isolation scope, isolate this request\n isolationScope.setSDKProcessingMetadata({ normalizedRequest, ipAddress });\n\n // attempt to update the scope's `transactionName` based on the request URL\n // Ideally, framework instrumentations coming after the HttpInstrumentation\n // update the transactionName once we get a parameterized route.\n const httpMethod = (request.method || 'GET').toUpperCase();\n const httpTargetWithoutQueryFragment = stripUrlQueryAndFragment(url);\n\n const bestEffortTransactionName = `${httpMethod} ${httpTargetWithoutQueryFragment}`;\n\n isolationScope.setTransactionName(bestEffortTransactionName);\n\n if (sessions && client) {\n recordRequestSession(client, {\n requestIsolationScope: isolationScope,\n response,\n sessionFlushingDelayMS: sessionFlushingDelayMS ?? 60_000,\n });\n }\n\n return withIsolationScope(isolationScope, () => {\n const newPropagationContext = {\n traceId: generateTraceId(),\n sampleRand: _INTERNAL_safeMathRandom(),\n propagationSpanId: generateSpanId(),\n };\n // - Set a fresh propagation context so each request gets a unique traceId.\n // When there are incoming trace headers, propagation.extract() below sets a remote\n // span on the OTel context which takes precedence in getTraceContextForScope().\n // - We can write directly to the current scope here because it is forked implicitly via\n // `context.with` in `withIsolationScope` (See `SentryContextManager`).\n // - explicitly making a deep copy to avoid mutation of original PC on the other scope\n getCurrentScope().setPropagationContext({ ...newPropagationContext });\n isolationScope.setPropagationContext({ ...newPropagationContext });\n\n const ctx = propagation\n .extract(context.active(), normalizedRequest.headers)\n .setValue(HTTP_SERVER_INSTRUMENTED_KEY, true);\n\n return context.with(ctx, () => {\n // This is used (optionally) by the httpServerSpansIntegration to attach _startSpanCallback to the request object\n client.emit('httpServerRequest', request, response, normalizedRequest);\n\n const callback = (request as RequestWithOptionalStartSpanCallback)._startSpanCallback?.deref();\n if (callback) {\n return callback(() => target.apply(thisArg, args));\n }\n return target.apply(thisArg, args);\n });\n });\n },\n });\n\n wrappedEmitFns.add(newEmit);\n server.emit = newEmit;\n}\n\n/**\n * Starts a session and tracks it in the context of a given isolation scope.\n * When the passed response is finished, the session is put into a task and is\n * aggregated with other sessions that may happen in a certain time window\n * (sessionFlushingDelayMs).\n *\n * The sessions are always aggregated by the client that is on the current scope\n * at the time of ending the response (if there is one).\n */\n// Exported for unit tests\nexport function recordRequestSession(\n client: Client,\n {\n requestIsolationScope,\n response,\n sessionFlushingDelayMS,\n }: {\n requestIsolationScope: Scope;\n response: EventEmitter;\n sessionFlushingDelayMS?: number;\n },\n): void {\n requestIsolationScope.setSDKProcessingMetadata({\n requestSession: { status: 'ok' },\n });\n response.once('close', () => {\n const requestSession = requestIsolationScope.getScopeData().sdkProcessingMetadata.requestSession;\n\n if (client && requestSession) {\n DEBUG_BUILD && debug.log(`Recorded request session with status: ${requestSession.status}`);\n\n const roundedDate = new Date();\n roundedDate.setSeconds(0, 0);\n const dateBucketKey = roundedDate.toISOString();\n\n const existingClientAggregate = clientToRequestSessionAggregatesMap.get(client);\n const bucket = existingClientAggregate?.[dateBucketKey] || { exited: 0, crashed: 0, errored: 0 };\n bucket[({ ok: 'exited', crashed: 'crashed', errored: 'errored' } as const)[requestSession.status]]++;\n\n if (existingClientAggregate) {\n existingClientAggregate[dateBucketKey] = bucket;\n } else {\n DEBUG_BUILD && debug.log('Opened new request session aggregate.');\n const newClientAggregate = { [dateBucketKey]: bucket };\n clientToRequestSessionAggregatesMap.set(client, newClientAggregate);\n\n const flushPendingClientAggregates = (): void => {\n clearTimeout(timeout);\n unregisterClientFlushHook();\n clientToRequestSessionAggregatesMap.delete(client);\n\n const aggregatePayload: AggregationCounts[] = Object.entries(newClientAggregate).map(\n ([timestamp, value]) => ({\n started: timestamp,\n exited: value.exited,\n errored: value.errored,\n crashed: value.crashed,\n }),\n );\n client.sendSession({ aggregates: aggregatePayload });\n };\n\n const unregisterClientFlushHook = client.on('flush', () => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to client flush');\n flushPendingClientAggregates();\n });\n const timeout = setTimeout(() => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to flushing schedule');\n flushPendingClientAggregates();\n }, sessionFlushingDelayMS).unref();\n }\n }\n });\n}\n","import { errorMonitor } from 'node:events';\nimport type { ClientRequest, IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'node:http';\nimport { context, SpanKind, trace } from '@opentelemetry/api';\nimport type { RPCMetadata } from '@opentelemetry/core';\nimport { getRPCMetadata, isTracingSuppressed, RPCType, setRPCMetadata } from '@opentelemetry/core';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_ROUTE,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_NET_HOST_IP,\n SEMATTRS_NET_HOST_PORT,\n SEMATTRS_NET_PEER_IP,\n} from '@opentelemetry/semantic-conventions';\nimport type { Event, Integration, IntegrationFn, Span, SpanAttributes, SpanStatus } from '@sentry/core';\nimport {\n debug,\n getIsolationScope,\n getSpanStatusFromHttpCode,\n httpHeadersToSpanAttributes,\n parseStringToURLObject,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_STATUS_ERROR,\n stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type { NodeClient } from '../../sdk/client';\nimport { addStartSpanCallback } from './httpServerIntegration';\n\nconst INTEGRATION_NAME = 'Http.ServerSpans';\n\n// Tree-shakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\nexport interface HttpServerSpansIntegrationOptions {\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n ignoreStatusCodes?: (number | [number, number])[];\n\n /**\n * @deprecated This is deprecated in favor of `incomingRequestSpanHook`.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: ClientRequest | IncomingMessage) => void;\n responseHook?: (span: Span, response: IncomingMessage | ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: ClientRequest | IncomingMessage,\n response: IncomingMessage | ServerResponse,\n ) => void;\n };\n\n /**\n * A hook that can be used to mutate the span for incoming requests.\n * This is triggered after the span is created, but before it is recorded.\n */\n onSpanCreated?: (span: Span, request: IncomingMessage, response: ServerResponse) => void;\n}\n\nconst _httpServerSpansIntegration = ((options: HttpServerSpansIntegrationOptions = {}) => {\n const ignoreStaticAssets = options.ignoreStaticAssets ?? true;\n const ignoreIncomingRequests = options.ignoreIncomingRequests;\n const ignoreStatusCodes = options.ignoreStatusCodes ?? [\n [401, 404],\n // 300 and 304 are possibly valid status codes we do not want to filter\n [301, 303],\n [305, 399],\n ];\n\n const { onSpanCreated } = options;\n // eslint-disable-next-line deprecation/deprecation\n const { requestHook, responseHook, applyCustomAttributesOnSpan } = options.instrumentation ?? {};\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n // If no tracing, we can just skip everything here\n if (typeof __SENTRY_TRACING__ !== 'undefined' && !__SENTRY_TRACING__) {\n return;\n }\n\n client.on('httpServerRequest', (_request, _response, normalizedRequest) => {\n // Type-casting this here because we do not want to put the node types into core\n const request = _request as IncomingMessage;\n const response = _response as ServerResponse;\n\n const startSpan = (next: () => boolean): boolean => {\n if (\n shouldIgnoreSpansForIncomingRequest(request, {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n })\n ) {\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Skipping span creation for incoming request', request.url);\n return next();\n }\n\n const fullUrl = normalizedRequest.url || request.url || '/';\n const urlObj = parseStringToURLObject(fullUrl);\n\n const headers = request.headers;\n const userAgent = headers['user-agent'];\n const ips = headers['x-forwarded-for'];\n const httpVersion = request.httpVersion;\n const host = headers.host;\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n const tracer = client.tracer;\n const scheme = fullUrl.startsWith('https') ? 'https' : 'http';\n\n const method = normalizedRequest.method || request.method?.toUpperCase() || 'GET';\n const httpTargetWithoutQueryFragment = urlObj ? urlObj.pathname : stripUrlQueryAndFragment(fullUrl);\n const bestEffortTransactionName = `${method} ${httpTargetWithoutQueryFragment}`;\n\n // We use the plain tracer.startSpan here so we can pass the span kind\n const span = tracer.startSpan(bestEffortTransactionName, {\n kind: SpanKind.SERVER,\n attributes: {\n // Sentry specific attributes\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.server',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.http',\n 'sentry.http.prefetch': isKnownPrefetchRequest(request) || undefined,\n // Old Semantic Conventions attributes - added for compatibility with what `@opentelemetry/instrumentation-http` output before\n 'http.url': fullUrl,\n 'http.method': normalizedRequest.method,\n 'http.target': urlObj ? `${urlObj.pathname}${urlObj.search}` : httpTargetWithoutQueryFragment,\n 'http.host': host,\n 'net.host.name': hostname,\n 'http.client_ip': typeof ips === 'string' ? ips.split(',')[0] : undefined,\n 'http.user_agent': userAgent,\n 'http.scheme': scheme,\n 'http.flavor': httpVersion,\n 'net.transport': httpVersion?.toUpperCase() === 'QUIC' ? 'ip_udp' : 'ip_tcp',\n ...getRequestContentLengthAttribute(request),\n ...httpHeadersToSpanAttributes(\n normalizedRequest.headers || {},\n client.getOptions().sendDefaultPii ?? false,\n ),\n },\n });\n\n // TODO v11: Remove the following three hooks, only onSpanCreated should remain\n requestHook?.(span, request);\n responseHook?.(span, response);\n applyCustomAttributesOnSpan?.(span, request, response);\n onSpanCreated?.(span, request, response);\n\n const rpcMetadata: RPCMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(setRPCMetadata(trace.setSpan(context.active(), span), rpcMetadata), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n // Ensure we only end the span once\n // E.g. error can be emitted before close is emitted\n let isEnded = false;\n function endSpan(status: SpanStatus): void {\n if (isEnded) {\n return;\n }\n\n isEnded = true;\n\n const newAttributes = getIncomingRequestAttributesOnResponse(request, response);\n span.setAttributes(newAttributes);\n span.setStatus(status);\n span.end();\n\n // Update the transaction name if the route has changed\n const route = newAttributes['http.route'];\n if (route) {\n getIsolationScope().setTransactionName(`${request.method?.toUpperCase() || 'GET'} ${route}`);\n }\n }\n\n response.on('close', () => {\n endSpan(getSpanStatusFromHttpCode(response.statusCode));\n });\n response.on(errorMonitor, () => {\n const httpStatus = getSpanStatusFromHttpCode(response.statusCode);\n // Ensure we def. have an error status here\n endSpan(httpStatus.code === SPAN_STATUS_ERROR ? httpStatus : { code: SPAN_STATUS_ERROR });\n });\n\n return next();\n });\n };\n\n addStartSpanCallback(request, startSpan);\n });\n },\n processEvent(event) {\n // Drop transaction if it has a status code that should be ignored\n if (event.type === 'transaction') {\n const statusCode = event.contexts?.trace?.data?.['http.response.status_code'];\n if (typeof statusCode === 'number') {\n const shouldDrop = shouldFilterStatusCode(statusCode, ignoreStatusCodes);\n if (shouldDrop) {\n DEBUG_BUILD && debug.log('Dropping transaction due to status code', statusCode);\n return null;\n }\n }\n }\n\n return event;\n },\n afterAllSetup(client) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n if (client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerSpansIntergation` while `httpIntegration` is also present. Make sure to remove `httpIntegration` when adding `httpServerSpansIntegration`.',\n );\n }\n\n if (!client.getIntegrationByName('Http.Server')) {\n debug.error(\n 'It seems that you have manually added `httpServerSpansIntergation` without adding `httpServerIntegration`. This is a requiement for spans to be created - please add the `httpServerIntegration` integration.',\n );\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * This integration emits spans for incoming requests handled via the node `http` module.\n * It requires the `httpServerIntegration` to be present.\n */\nexport const httpServerSpansIntegration = _httpServerSpansIntegration as (\n options?: HttpServerSpansIntegrationOptions,\n) => Integration & {\n name: 'HttpServerSpans';\n setup: (client: NodeClient) => void;\n processEvent: (event: Event) => Event | null;\n};\n\nfunction isKnownPrefetchRequest(req: IncomingMessage): boolean {\n // Currently only handles Next.js prefetch requests but may check other frameworks in the future.\n return req.headers['next-router-prefetch'] === '1';\n}\n\n/**\n * Check if a request is for a common static asset that should be ignored by default.\n *\n * Only exported for tests.\n */\nexport function isStaticAssetRequest(urlPath: string): boolean {\n const path = stripUrlQueryAndFragment(urlPath);\n // Common static file extensions\n if (path.match(/\\.(ico|png|jpg|jpeg|gif|svg|css|js|woff|woff2|ttf|eot|webp|avif)$/)) {\n return true;\n }\n\n // Common metadata files\n if (path.match(/^\\/(robots\\.txt|sitemap\\.xml|manifest\\.json|browserconfig\\.xml)$/)) {\n return true;\n }\n\n return false;\n}\n\nfunction shouldIgnoreSpansForIncomingRequest(\n request: IncomingMessage,\n {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n }: {\n ignoreStaticAssets?: boolean;\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n },\n): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // request.url is the only property that holds any information about the url\n // it only consists of the URL path and query string (if any)\n const urlPath = request.url;\n\n const method = request.method?.toUpperCase();\n // We do not capture OPTIONS/HEAD requests as spans\n if (method === 'OPTIONS' || method === 'HEAD' || !urlPath) {\n return true;\n }\n\n // Default static asset filtering\n if (ignoreStaticAssets && method === 'GET' && isStaticAssetRequest(urlPath)) {\n return true;\n }\n\n if (ignoreIncomingRequests?.(urlPath, request)) {\n return true;\n }\n\n return false;\n}\n\nfunction getRequestContentLengthAttribute(request: IncomingMessage): SpanAttributes {\n const length = getContentLength(request.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(request.headers)) {\n return {\n ['http.request_content_length']: length,\n };\n } else {\n return {\n ['http.request_content_length_uncompressed']: length,\n };\n }\n}\n\nfunction getContentLength(headers: IncomingHttpHeaders): number | null {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nfunction isCompressed(headers: IncomingHttpHeaders): boolean {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n\nfunction getIncomingRequestAttributesOnResponse(request: IncomingMessage, response: ServerResponse): SpanAttributes {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n\n const newAttributes: SpanAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n // eslint-disable-next-line deprecation/deprecation\n [SEMATTRS_HTTP_STATUS_CODE]: statusCode,\n 'http.status_text': statusMessage?.toUpperCase(),\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_IP] = localAddress;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_PORT] = localPort;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_PEER_IP] = remoteAddress;\n newAttributes['net.peer.port'] = remotePort;\n }\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_HTTP_STATUS_CODE] = statusCode;\n newAttributes['http.status_text'] = (statusMessage || '').toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n const routeName = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = routeName;\n }\n\n return newAttributes;\n}\n\n/**\n * If the given status code should be filtered for the given list of status codes/ranges.\n */\nfunction shouldFilterStatusCode(statusCode: number, dropForStatusCodes: (number | [number, number])[]): boolean {\n return dropForStatusCodes.some(code => {\n if (typeof code === 'number') {\n return code === statusCode;\n }\n\n const [min, max] = code;\n return statusCode >= min && statusCode <= max;\n });\n}\n","import { objectToBaggageHeader, parseBaggageHeader, SENTRY_BAGGAGE_KEY_PREFIX } from '@sentry/core';\n\n/**\n * Merge two baggage headers into one.\n * - Sentry-specific entries (keys starting with \"sentry-\") from the new baggage take precedence\n * - Non-Sentry entries from existing baggage take precedence\n * The order of the existing baggage will be preserved, and new entries will be added to the end.\n *\n * This matches the behavior of OTEL's propagation.inject() which uses baggage.setEntry()\n * to overwrite existing entries with the same key.\n */\nexport function mergeBaggageHeaders(\n existing: Existing,\n baggage: string,\n): string | undefined | Existing {\n if (!existing) {\n return baggage;\n }\n\n const existingBaggageEntries = parseBaggageHeader(existing);\n const newBaggageEntries = parseBaggageHeader(baggage);\n\n if (!newBaggageEntries) {\n return existing;\n }\n\n // Single pass over new entries to partition sentry vs non-sentry\n const newSentryEntries: Record = {};\n const newNonSentryEntries: Record = {};\n for (const [key, value] of Object.entries(newBaggageEntries)) {\n if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n newSentryEntries[key] = value;\n } else {\n newNonSentryEntries[key] = value;\n }\n }\n\n const hasNewSentryEntries = Object.keys(newSentryEntries).length > 0;\n\n // If new baggage contains at least one sentry- value, we remove all old sentry- values\n // otherwise, we keep old sentry- values. If we don't remove old sentry- values, we end\n // up with an inconsistent dynamic sampling context propagation.\n const mergedBaggageEntries: Record = {};\n if (existingBaggageEntries) {\n for (const [key, value] of Object.entries(existingBaggageEntries)) {\n if (hasNewSentryEntries && key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n continue;\n }\n mergedBaggageEntries[key] = value;\n }\n }\n\n // Sentry entries from new baggage always overwrite; non-sentry only if not already present\n Object.assign(mergedBaggageEntries, newSentryEntries);\n for (const [key, value] of Object.entries(newNonSentryEntries)) {\n if (!mergedBaggageEntries[key]) {\n mergedBaggageEntries[key] = value;\n }\n }\n\n return objectToBaggageHeader(mergedBaggageEntries);\n}\n","import type { LRUMap, SanitizedRequestData } from '@sentry/core';\nimport {\n addBreadcrumb,\n debug,\n getBreadcrumbLogLevelFromHttpStatusCode,\n getClient,\n getSanitizedUrlString,\n getTraceData,\n isError,\n parseUrl,\n shouldPropagateTraceForUrl,\n} from '@sentry/core';\nimport type { ClientRequest, IncomingMessage, RequestOptions } from 'http';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { mergeBaggageHeaders } from './baggage';\n\nconst LOG_PREFIX = '@sentry/instrumentation-http';\n\n/** Add a breadcrumb for outgoing requests. */\nexport function addRequestBreadcrumb(request: ClientRequest, response: IncomingMessage | undefined): void {\n const data = getBreadcrumbData(request);\n\n const statusCode = response?.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\n/**\n * Add trace propagation headers to an outgoing request.\n * This must be called _before_ the request is sent!\n */\n// eslint-disable-next-line complexity\nexport function addTracePropagationHeadersToOutgoingRequest(\n request: ClientRequest,\n propagationDecisionMap: LRUMap,\n): void {\n const url = getClientRequestUrl(request);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const headersToAdd = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!headersToAdd) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = headersToAdd;\n\n const hasExistingSentryTraceHeader = !!request.getHeader('sentry-trace');\n\n if (hasExistingSentryTraceHeader) {\n return;\n }\n\n if (sentryTrace) {\n try {\n request.setHeader('sentry-trace', sentryTrace);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added sentry-trace header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add sentry-trace header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (traceparent && !request.getHeader('traceparent')) {\n try {\n request.setHeader('traceparent', traceparent);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added traceparent header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add traceparent header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (baggage) {\n const existingBaggage = request.getHeader('baggage');\n const newBaggage = mergeBaggageHeaders(existingBaggage, baggage);\n if (newBaggage) {\n try {\n request.setHeader('baggage', newBaggage);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added baggage header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add baggage header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n }\n}\n\nfunction getBreadcrumbData(request: ClientRequest): Partial {\n try {\n // `request.host` does not contain the port, but the host header does\n const host = request.getHeader('host') || request.host;\n const url = new URL(request.path, `${request.protocol}//${host}`);\n const parsedUrl = parseUrl(url.toString());\n\n const data: Partial = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Convert an outgoing request to request options. */\nexport function getRequestOptions(request: ClientRequest): RequestOptions {\n return {\n method: request.method,\n protocol: request.protocol,\n host: request.host,\n hostname: request.host,\n path: request.path,\n headers: request.getHeaders(),\n };\n}\n\n/**\n *\n */\nexport function getClientRequestUrl(request: ClientRequest): string {\n const hostname = request.getHeader('host') || request.host;\n const protocol = request.protocol;\n const path = request.path;\n\n return `${protocol}//${hostname}${path}`;\n}\n","/* eslint-disable max-lines */\nimport type { ChannelListener } from 'node:diagnostics_channel';\nimport { subscribe, unsubscribe } from 'node:diagnostics_channel';\nimport { errorMonitor } from 'node:events';\nimport type * as http from 'node:http';\nimport type * as https from 'node:https';\nimport { context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_NETWORK_TRANSPORT,\n ATTR_URL_FULL,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n} from '@opentelemetry/semantic-conventions';\nimport type { Span, SpanAttributes, SpanStatus } from '@sentry/core';\nimport {\n debug,\n getHttpSpanDetailsFromUrlObject,\n getSpanStatusFromHttpCode,\n LRUMap,\n parseStringToURLObject,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n startInactiveSpan,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { INSTRUMENTATION_NAME } from './constants';\nimport {\n addRequestBreadcrumb,\n addTracePropagationHeadersToOutgoingRequest,\n getClientRequestUrl,\n getRequestOptions,\n} from './outgoing-requests';\n\ntype Http = typeof http;\ntype Https = typeof https;\ntype IncomingHttpHeaders = http.IncomingHttpHeaders;\ntype OutgoingHttpHeaders = http.OutgoingHttpHeaders;\n\nexport type SentryHttpInstrumentationOptions = InstrumentationConfig & {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n *\n * @default `true`\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to propagate Sentry trace headers in outgoing requests.\n * By default this is done by the HttpInstrumentation, but if that is not added (e.g. because tracing is disabled)\n * then this instrumentation can take over.\n *\n * @default `false`\n */\n propagateTraceInOutgoingRequests?: boolean;\n\n /**\n * Whether to enable the capability to create spans for outgoing requests via diagnostic channels.\n * If enabled, spans will only be created if the `spans` option is also enabled (default: true).\n *\n * This is a feature flag that should be enabled by SDKs when the runtime supports it (Node 22.12+).\n * Individual users should not need to configure this directly.\n *\n * @default `false`\n */\n createSpansForOutgoingRequests?: boolean;\n\n /**\n * Whether to create spans for outgoing requests (user preference).\n * This only takes effect if `createSpansForOutgoingRequests` is also enabled.\n * If `createSpansForOutgoingRequests` is not enabled, this option is ignored.\n *\n * @default `true`\n */\n spans?: boolean;\n\n /**\n * Do not capture breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * For the scope of this instrumentation, this callback only controls breadcrumb creation.\n * The same option can be passed to the top-level httpIntegration where it controls both, breadcrumb and\n * span creation.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * @param request Contains the {@type RequestOptions} object used to make the outgoing request.\n */\n ignoreOutgoingRequests?: (url: string, request: http.RequestOptions) => boolean;\n\n /**\n * Hooks for outgoing request spans, called when `createSpansForOutgoingRequests` is enabled.\n * These mirror the OTEL HttpInstrumentation hooks for backwards compatibility.\n */\n outgoingRequestHook?: (span: Span, request: http.ClientRequest) => void;\n outgoingResponseHook?: (span: Span, response: http.IncomingMessage) => void;\n outgoingRequestApplyCustomAttributes?: (\n span: Span,\n request: http.ClientRequest,\n response: http.IncomingMessage,\n ) => void;\n\n // All options below do not do anything anymore in this instrumentation, and will be removed in the future.\n // They are only kept here for backwards compatibility - the respective functionality is now handled by the httpServerIntegration/httpServerSpansIntegration.\n\n /**\n * @depreacted This no longer does anything.\n */\n extractIncomingTraceFromHeader?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n disableIncomingRequestSpans?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreSpansForIncomingRequests?: (urlPath: string, request: http.IncomingMessage) => boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreIncomingRequestBody?: (url: string, request: http.RequestOptions) => boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * @deprecated This no longer does anything.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: http.ClientRequest | http.IncomingMessage) => void;\n responseHook?: (span: Span, response: http.IncomingMessage | http.ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: http.ClientRequest | http.IncomingMessage,\n response: http.IncomingMessage | http.ServerResponse,\n ) => void;\n };\n\n /**\n * @deprecated This no longer does anything.\n */\n sessionFlushingDelayMS?: number;\n};\n\n/**\n * This custom HTTP instrumentation handles outgoing HTTP requests.\n *\n * It provides:\n * - Breadcrumbs for all outgoing requests\n * - Trace propagation headers (when enabled)\n * - Span creation for outgoing requests (when createSpansForOutgoingRequests is enabled)\n *\n * Span creation requires Node 22+ and uses diagnostic channels to avoid monkey-patching.\n * By default, this is only enabled in the node SDK, not in node-core or other runtime SDKs.\n *\n * Important note: Contrary to other OTEL instrumentation, this one cannot be unwrapped.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js/blob/f8ab5592ddea5cba0a3b33bf8d74f27872c0367f/experimental/packages/opentelemetry-instrumentation-http/src/http.ts\n */\nexport class SentryHttpInstrumentation extends InstrumentationBase {\n private _propagationDecisionMap: LRUMap;\n private _ignoreOutgoingRequestsMap: WeakMap;\n\n public constructor(config: SentryHttpInstrumentationOptions = {}) {\n super(INSTRUMENTATION_NAME, SDK_VERSION, config);\n\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** @inheritdoc */\n public init(): [InstrumentationNodeModuleDefinition, InstrumentationNodeModuleDefinition] {\n // We register handlers when either http or https is instrumented\n // but we only want to register them once, whichever is loaded first\n let hasRegisteredHandlers = false;\n\n const onHttpClientResponseFinish = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest; response: http.IncomingMessage };\n this._onOutgoingRequestFinish(data.request, data.response);\n }) satisfies ChannelListener;\n\n const onHttpClientRequestError = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest };\n this._onOutgoingRequestFinish(data.request, undefined);\n }) satisfies ChannelListener;\n\n const onHttpClientRequestCreated = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest };\n this._onOutgoingRequestCreated(data.request);\n }) satisfies ChannelListener;\n\n const wrap = (moduleExports: T): T => {\n if (hasRegisteredHandlers) {\n return moduleExports;\n }\n\n hasRegisteredHandlers = true;\n\n subscribe('http.client.response.finish', onHttpClientResponseFinish);\n\n // When an error happens, we still want to have a breadcrumb\n // In this case, `http.client.response.finish` is not triggered\n subscribe('http.client.request.error', onHttpClientRequestError);\n\n // NOTE: This channel only exists since Node 22.12+\n // Before that, outgoing requests are not patched\n // and trace headers are not propagated, sadly.\n if (this.getConfig().propagateTraceInOutgoingRequests || this.getConfig().createSpansForOutgoingRequests) {\n subscribe('http.client.request.created', onHttpClientRequestCreated);\n }\n return moduleExports;\n };\n\n const unwrap = (): void => {\n unsubscribe('http.client.response.finish', onHttpClientResponseFinish);\n unsubscribe('http.client.request.error', onHttpClientRequestError);\n unsubscribe('http.client.request.created', onHttpClientRequestCreated);\n };\n\n /**\n * You may be wondering why we register these diagnostics-channel listeners\n * in such a convoluted way (as InstrumentationNodeModuleDefinition...)˝,\n * instead of simply subscribing to the events once in here.\n * The reason for this is timing semantics: These functions are called once the http or https module is loaded.\n * If we'd subscribe before that, there seem to be conflicts with the OTEL native instrumentation in some scenarios,\n * especially the \"import-on-top\" pattern of setting up ESM applications.\n */\n return [\n new InstrumentationNodeModuleDefinition('http', ['*'], wrap, unwrap),\n new InstrumentationNodeModuleDefinition('https', ['*'], wrap, unwrap),\n ];\n }\n\n /**\n * Start a span for an outgoing request.\n * The span wraps the callback of the request, and ends when the response is finished.\n */\n private _startSpanForOutgoingRequest(request: http.ClientRequest): Span {\n // We monkey-patch `req.once('response'), which is used to trigger the callback of the request\n // eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation\n const originalOnce = request.once;\n\n const [name, attributes] = _getOutgoingRequestSpanData(request);\n\n const span = startInactiveSpan({\n name,\n attributes,\n onlyIfParent: true,\n });\n\n this.getConfig().outgoingRequestHook?.(span, request);\n\n const newOnce = new Proxy(originalOnce, {\n apply(target, thisArg, args: Parameters) {\n const [event] = args;\n if (event !== 'response') {\n return target.apply(thisArg, args);\n }\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n return context.with(requestContext, () => {\n return target.apply(thisArg, args);\n });\n },\n });\n\n // eslint-disable-next-line deprecation/deprecation\n request.once = newOnce;\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\n const endSpan = (status: SpanStatus): void => {\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n\n span.setStatus(status);\n span.end();\n };\n\n request.prependListener('response', response => {\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n\n context.bind(context.active(), response);\n\n const additionalAttributes = _getOutgoingRequestEndedSpanData(response);\n span.setAttributes(additionalAttributes);\n\n this.getConfig().outgoingResponseHook?.(span, response);\n this.getConfig().outgoingRequestApplyCustomAttributes?.(span, request, response);\n\n const endHandler = (forceError: boolean = false): void => {\n this._diag.debug('outgoingRequest on end()');\n\n const status =\n // eslint-disable-next-line deprecation/deprecation\n forceError || typeof response.statusCode !== 'number' || (response.aborted && !response.complete)\n ? { code: SpanStatusCode.ERROR }\n : getSpanStatusFromHttpCode(response.statusCode);\n\n endSpan(status);\n };\n\n response.on('end', () => {\n endHandler();\n });\n response.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on response error()', error);\n endHandler(true);\n });\n });\n\n // Fallback if proper response end handling above fails\n request.on('close', () => {\n endSpan({ code: SpanStatusCode.UNSET });\n });\n request.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on request error()', error);\n endSpan({ code: SpanStatusCode.ERROR });\n });\n\n return span;\n }\n\n /**\n * This is triggered when an outgoing request finishes.\n * It has access to the final request and response objects.\n */\n private _onOutgoingRequestFinish(request: http.ClientRequest, response?: http.IncomingMessage): void {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling finished outgoing request');\n\n const _breadcrumbs = this.getConfig().breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n // Note: We cannot rely on the map being set by `_onOutgoingRequestCreated`, because that is not run in Node <22\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addRequestBreadcrumb(request, response);\n }\n }\n\n /**\n * This is triggered when an outgoing request is created.\n * It creates a span (if enabled) and propagates trace headers within the span's context,\n * so downstream services link to the outgoing HTTP span rather than its parent.\n */\n private _onOutgoingRequestCreated(request: http.ClientRequest): void {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling outgoing request created');\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n const shouldCreateSpan = this.getConfig().createSpansForOutgoingRequests && (this.getConfig().spans ?? true);\n const shouldPropagate = this.getConfig().propagateTraceInOutgoingRequests;\n\n if (shouldCreateSpan) {\n const span = this._startSpanForOutgoingRequest(request);\n\n // Propagate headers within the span's context so the sentry-trace header\n // contains the outgoing span's ID, not the parent span's ID.\n // Only do this if the span is recording (has a parent) - otherwise the non-recording\n // span would produce all-zero trace IDs instead of using the scope's propagation context.\n if (shouldPropagate && span.isRecording()) {\n const requestContext = trace.setSpan(context.active(), span);\n context.with(requestContext, () => {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n });\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n private _shouldIgnoreOutgoingRequest(request: http.ClientRequest): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (!ignoreOutgoingRequests) {\n return false;\n }\n\n const options = getRequestOptions(request);\n const url = getClientRequestUrl(request);\n return ignoreOutgoingRequests(url, options);\n }\n}\n\nfunction _getOutgoingRequestSpanData(request: http.ClientRequest): [string, SpanAttributes] {\n const url = getClientRequestUrl(request);\n\n const [name, attributes] = getHttpSpanDetailsFromUrlObject(\n parseStringToURLObject(url),\n 'client',\n 'auto.http.otel.http',\n request,\n );\n\n const userAgent = request.getHeader('user-agent');\n\n return [\n name,\n {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n 'otel.kind': 'CLIENT',\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n [ATTR_URL_FULL]: url,\n 'http.url': url,\n 'http.method': request.method,\n 'http.target': request.path || '/',\n 'net.peer.name': request.host,\n 'http.host': request.getHeader('host'),\n ...attributes,\n },\n ];\n}\n\nfunction _getOutgoingRequestEndedSpanData(response: http.IncomingMessage): SpanAttributes {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n\n const transport = httpVersion.toUpperCase() !== 'QUIC' ? 'ip_tcp' : 'ip_udp';\n\n const additionalAttributes: SpanAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n [ATTR_NETWORK_PROTOCOL_VERSION]: httpVersion,\n 'http.flavor': httpVersion,\n [ATTR_NETWORK_TRANSPORT]: transport,\n 'net.transport': transport,\n ['http.status_text']: statusMessage?.toUpperCase(),\n 'http.status_code': statusCode,\n ...getResponseContentLengthAttributes(response),\n };\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n\n additionalAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n additionalAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n additionalAttributes['net.peer.ip'] = remoteAddress;\n additionalAttributes['net.peer.port'] = remotePort;\n }\n\n return additionalAttributes;\n}\n\nfunction getResponseContentLengthAttributes(response: http.IncomingMessage): SpanAttributes {\n const length = getContentLength(response.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(response.headers)) {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]: length };\n } else {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]: length };\n }\n}\n\nfunction getContentLength(headers: http.OutgoingHttpHeaders | http.IncomingHttpHeaders): number | undefined {\n const contentLengthHeader = headers['content-length'];\n if (typeof contentLengthHeader === 'number') {\n return contentLengthHeader;\n }\n if (typeof contentLengthHeader !== 'string') {\n return undefined;\n }\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) {\n return undefined;\n }\n\n return contentLength;\n}\n\nfunction isCompressed(headers: OutgoingHttpHeaders | IncomingHttpHeaders): boolean {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n","import type { IncomingMessage, RequestOptions } from 'node:http';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument';\nimport type { NodeClient } from '../../sdk/client';\nimport type { HttpServerIntegrationOptions } from './httpServerIntegration';\nimport { httpServerIntegration } from './httpServerIntegration';\nimport type { HttpServerSpansIntegrationOptions } from './httpServerSpansIntegration';\nimport { httpServerSpansIntegration } from './httpServerSpansIntegration';\nimport type { SentryHttpInstrumentationOptions } from './SentryHttpInstrumentation';\nimport { SentryHttpInstrumentation } from './SentryHttpInstrumentation';\n\nconst INTEGRATION_NAME = 'Http';\n\ninterface HttpOptions {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to create spans for requests or not.\n * As of now, creates spans for incoming requests, but not outgoing requests.\n *\n * @default `true`\n */\n spans?: boolean;\n\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing HTTP requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled).\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n *\n * The `url` param contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * For example: `'https://someService.com/users/details?id=123'`\n *\n * The `request` param contains the original {@type RequestOptions} object used to make the outgoing request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreOutgoingRequests?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n dropSpansForIncomingRequestStatusCodes?: (number | [number, number])[];\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreIncomingRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * If true, do not generate spans for incoming requests at all.\n * This is used by Remix to avoid generating spans for incoming requests, as it generates its own spans.\n */\n disableIncomingRequestSpans?: boolean;\n}\n\nexport const instrumentSentryHttp = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n options => {\n return new SentryHttpInstrumentation(options);\n },\n);\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs for outgoing HTTP requests which will be attached to the currently active span.\n */\nexport const httpIntegration = defineIntegration((options: HttpOptions = {}) => {\n const serverOptions: HttpServerIntegrationOptions = {\n sessions: options.trackIncomingRequestsAsSessions,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n ignoreRequestBody: options.ignoreIncomingRequestBody,\n maxRequestBodySize: options.maxIncomingRequestBodySize,\n };\n\n const serverSpansOptions: HttpServerSpansIntegrationOptions = {\n ignoreIncomingRequests: options.ignoreIncomingRequests,\n ignoreStaticAssets: options.ignoreStaticAssets,\n ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n };\n\n const httpInstrumentationOptions: SentryHttpInstrumentationOptions = {\n breadcrumbs: options.breadcrumbs,\n propagateTraceInOutgoingRequests: options.tracePropagation ?? true,\n ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n };\n\n const server = httpServerIntegration(serverOptions);\n const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n // In node-core, for now we disable incoming requests spans by default\n // we may revisit this in a future release\n const spans = options.spans ?? false;\n const disableIncomingRequestSpans = options.disableIncomingRequestSpans ?? false;\n const enabledServerSpans = spans && !disableIncomingRequestSpans;\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n if (enabledServerSpans) {\n serverSpans.setup(client);\n }\n },\n setupOnce() {\n server.setupOnce();\n\n instrumentSentryHttp(httpInstrumentationOptions);\n },\n\n processEvent(event) {\n // Note: We always run this, even if spans are disabled\n // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n return serverSpans.processEvent(event);\n },\n };\n});\n","import { parseSemver } from '@sentry/core';\n\nexport const NODE_VERSION = parseSemver(process.versions.node) as { major: number; minor: number; patch: number };\nexport const NODE_MAJOR = NODE_VERSION.major;\nexport const NODE_MINOR = NODE_VERSION.minor;\n","import type { LRUMap, SanitizedRequestData } from '@sentry/core';\nimport {\n addBreadcrumb,\n getBreadcrumbLogLevelFromHttpStatusCode,\n getClient,\n getSanitizedUrlString,\n getTraceData,\n parseUrl,\n shouldPropagateTraceForUrl,\n} from '@sentry/core';\nimport type { UndiciRequest, UndiciResponse } from '../integrations/node-fetch/types';\nimport { mergeBaggageHeaders } from './baggage';\nimport { debug } from '@sentry/core';\nconst SENTRY_TRACE_HEADER = 'sentry-trace';\nconst SENTRY_BAGGAGE_HEADER = 'baggage';\nconst W3C_TRACEPARENT_HEADER = 'traceparent';\n/**\n * Add trace propagation headers to an outgoing fetch/undici request.\n *\n * Checks if the request URL matches trace propagation targets,\n * then injects sentry-trace, traceparent, and baggage headers.\n */\n// eslint-disable-next-line complexity\nexport function addTracePropagationHeadersToFetchRequest(\n request: UndiciRequest,\n propagationDecisionMap: LRUMap,\n): void {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Manually add the trace headers, if it applies\n // Note: We do not use `propagation.inject()` here, because our propagator relies on an active span\n // Which we do not have in this case\n // The propagator _may_ overwrite this, but this should be fine as it is the same data\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const addedHeaders = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!addedHeaders) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = addedHeaders;\n\n const requestHeaders = Array.isArray(request.headers) ? request.headers : stringToArrayHeaders(request.headers);\n\n // OTel's UndiciInstrumentation calls propagation.inject() which unconditionally\n // appends headers to the request. When the user also sets headers via getTraceData(),\n // this results in duplicate sentry-trace and baggage (and optionally traceparent) entries.\n // We clean these up before applying our own logic.\n _deduplicateArrayHeader(requestHeaders, SENTRY_TRACE_HEADER);\n _deduplicateArrayHeader(requestHeaders, SENTRY_BAGGAGE_HEADER);\n if (propagateTraceparent) {\n _deduplicateArrayHeader(requestHeaders, W3C_TRACEPARENT_HEADER);\n }\n\n // We do not want to overwrite existing headers here\n // If the core UndiciInstrumentation is registered, it will already have set the headers\n // We do not want to add any then\n const hasExistingSentryTraceHeader = _findExistingHeaderIndex(requestHeaders, SENTRY_TRACE_HEADER) !== -1;\n\n // We do not want to set any headers if we already have an existing sentry-trace header.\n // sentry-trace is still the source of truth, otherwise we risk mixing up baggage and sentry-trace values.\n if (!hasExistingSentryTraceHeader) {\n if (sentryTrace) {\n requestHeaders.push(SENTRY_TRACE_HEADER, sentryTrace);\n }\n\n if (traceparent && _findExistingHeaderIndex(requestHeaders, 'traceparent') === -1) {\n requestHeaders.push('traceparent', traceparent);\n }\n\n // For baggage, we make sure to merge this into a possibly existing header\n const existingBaggageIndex = _findExistingHeaderIndex(requestHeaders, SENTRY_BAGGAGE_HEADER);\n if (baggage && existingBaggageIndex === -1) {\n requestHeaders.push(SENTRY_BAGGAGE_HEADER, baggage);\n } else if (baggage) {\n // headers in format [key_0, value_0, key_1, value_1, ...], hence the +1 here\n const existingBaggageValue = requestHeaders[existingBaggageIndex + 1];\n const merged = mergeBaggageHeaders(existingBaggageValue, baggage);\n if (merged) {\n requestHeaders[existingBaggageIndex + 1] = merged;\n }\n }\n }\n\n if (!Array.isArray(request.headers)) {\n // For original string request headers, we need to write them back to the request\n request.headers = arrayToStringHeaders(requestHeaders);\n }\n}\n\nfunction stringToArrayHeaders(requestHeaders: string): string[] {\n const headersArray = requestHeaders.split('\\r\\n');\n const headers: string[] = [];\n for (const header of headersArray) {\n try {\n const colonIndex = header.indexOf(':');\n if (colonIndex === -1) {\n continue;\n }\n const key = header.slice(0, colonIndex).trim();\n const value = header.slice(colonIndex + 1).trim();\n if (key) {\n headers.push(key, value);\n }\n } catch {\n debug.warn(`Failed to convert string request header to array header: ${header}`);\n }\n }\n return headers;\n}\n\nfunction arrayToStringHeaders(headers: string[]): string {\n const headerPairs: string[] = [];\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i];\n const value = headers[i + 1];\n if (!key || value == null) {\n // skip falsy keys but only null/undefined values\n continue;\n }\n headerPairs.push(`${key}: ${value}`);\n }\n\n if (!headerPairs.length) {\n return '';\n }\n\n return headerPairs.join('\\r\\n').concat('\\r\\n');\n}\n\n/**\n * For a given header name, if there are multiple entries in the [key, value, key, value, ...] array,\n * keep the first entry and remove the rest.\n * For baggage, values are merged to preserve all entries but to dedupe sentry- values, and always\n * keep the first occurrence of them\n */\nfunction _deduplicateArrayHeader(headers: string[], headerName: string): void {\n let firstIndex = -1;\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i] !== headerName) {\n continue;\n }\n\n if (firstIndex === -1) {\n firstIndex = i;\n continue;\n }\n\n const firstHeaderValue = headers[firstIndex + 1];\n if (headerName === SENTRY_BAGGAGE_HEADER && firstHeaderValue) {\n // mergeBaggageHeaders always takes sentry- values from the new baggage (2nd param) and merges\n // it with the existing one (1st param). Here, we want to keep the first header's existing\n // sentry- values in favor of the new ones. Hence we swap the parameters.\n const merged = mergeBaggageHeaders(headers[i + 1], firstHeaderValue);\n if (merged) {\n headers[firstIndex + 1] = merged;\n }\n }\n headers.splice(i, 2);\n i -= 2;\n }\n}\n\n/**\n * Find the index of an existing header in an array of headers.\n * Only take even indices, because headers are in format [key_0, value_0, key_1, value_1, ...]\n * otherwise we could match a header _value_ with @param name\n */\nfunction _findExistingHeaderIndex(headers: string[], name: string): number {\n return headers.findIndex((header, i) => i % 2 === 0 && header === name);\n}\n\n/** Add a breadcrumb for an outgoing fetch/undici request. */\nexport function addFetchRequestBreadcrumb(request: UndiciRequest, response: UndiciResponse): void {\n const data = getBreadcrumbData(request);\n\n const statusCode = response.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\nfunction getBreadcrumbData(request: UndiciRequest): Partial {\n try {\n const url = getAbsoluteUrl(request.origin, request.path);\n const parsedUrl = parseUrl(url);\n\n const data: Partial = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Get the absolute URL from an origin and path. */\nexport function getAbsoluteUrl(origin: string, path: string = '/'): string {\n try {\n const url = new URL(path, origin);\n return url.toString();\n } catch {\n // fallback: Construct it on our own\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n }\n}\n","import { context } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport { LRUMap, SDK_VERSION } from '@sentry/core';\nimport * as diagch from 'diagnostics_channel';\nimport { NODE_MAJOR, NODE_MINOR } from '../../nodeVersion';\nimport {\n addFetchRequestBreadcrumb,\n addTracePropagationHeadersToFetchRequest,\n getAbsoluteUrl,\n} from '../../utils/outgoingFetchRequest';\nimport type { UndiciRequest, UndiciResponse } from './types';\n\nexport type SentryNodeFetchInstrumentationOptions = InstrumentationConfig & {\n /**\n * Whether breadcrumbs should be recorded for requests.\n *\n * @default `true`\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's UndiciInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture breadcrumbs or inject headers for outgoing fetch requests to URLs where the given callback returns `true`.\n * The same option can be passed to the top-level httpIntegration where it controls both, breadcrumb and\n * span creation.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n};\n\ninterface ListenerRecord {\n name: string;\n unsubscribe: () => void;\n}\n\n/**\n * This custom node-fetch instrumentation is used to instrument outgoing fetch requests.\n * It does not emit any spans.\n *\n * The reason this is isolated from the OpenTelemetry instrumentation is that users may overwrite this,\n * which would lead to Sentry not working as expected.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js-contrib/blob/28e209a9da36bc4e1f8c2b0db7360170ed46cb80/plugins/node/instrumentation-undici/src/undici.ts\n */\nexport class SentryNodeFetchInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n private _channelSubs: Array;\n private _propagationDecisionMap: LRUMap;\n private _ignoreOutgoingRequestsMap: WeakMap;\n\n public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {\n super('@sentry/instrumentation-node-fetch', SDK_VERSION, config);\n this._channelSubs = [];\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** No need to instrument files/modules. */\n public init(): void {\n return undefined;\n }\n\n /** Disable the instrumentation. */\n public disable(): void {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs = [];\n }\n\n /** Enable the instrumentation. */\n public enable(): void {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n\n this._subscribeToChannel('undici:request:create', this._onRequestCreated.bind(this));\n this._subscribeToChannel('undici:request:headers', this._onResponseHeaders.bind(this));\n }\n\n /**\n * This method is called when a request is created.\n * You can still mutate the request here before it is sent.\n */\n private _onRequestCreated({ request }: { request: UndiciRequest }): void {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const shouldIgnore = this._shouldIgnoreOutgoingRequest(request);\n // We store this decisision for later so we do not need to re-evaluate it\n // Additionally, the active context is not correct in _onResponseHeaders, so we need to make sure it is evaluated here\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n if (config.tracePropagation !== false) {\n addTracePropagationHeadersToFetchRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * This method is called when a response is received.\n */\n private _onResponseHeaders({ request, response }: { request: UndiciRequest; response: UndiciResponse }): void {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const _breadcrumbs = config.breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addFetchRequestBreadcrumb(request, response);\n }\n }\n\n /** Subscribe to a diagnostics channel. */\n private _subscribeToChannel(\n diagnosticChannel: string,\n onMessage: (message: unknown, name: string | symbol) => void,\n ): void {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const useNewSubscribe = NODE_MAJOR > 18 || (NODE_MAJOR === 18 && NODE_MINOR >= 19);\n\n let unsubscribe: () => void;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n } else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n private _shouldIgnoreOutgoingRequest(request: UndiciRequest): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // Add trace propagation headers\n const url = getAbsoluteUrl(request.origin, request.path);\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (typeof ignoreOutgoingRequests !== 'function' || !url) {\n return false;\n }\n\n return ignoreOutgoingRequests(url);\n }\n}\n","import type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument';\nimport { SentryNodeFetchInstrumentation } from './SentryNodeFetchInstrumentation';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\ninterface NodeFetchOptions {\n /**\n * Whether breadcrumbs should be recorded for requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing fetch requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n}\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options: NodeFetchOptions) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options: NodeFetchOptions = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n instrumentSentryNodeFetch(options);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ContextManager, Context } from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\n\ntype Func = (...args: unknown[]) => T;\n\n/**\n * Store a map for each event of all original listeners and their \"patched\"\n * version. So when a listener is removed by the user, the corresponding\n * patched function will be also removed.\n */\ninterface PatchMap {\n [name: string]: WeakMap, Func>;\n}\n\nconst ADD_LISTENER_METHODS = [\n 'addListener' as const,\n 'on' as const,\n 'once' as const,\n 'prependListener' as const,\n 'prependOnceListener' as const,\n];\n\nexport abstract class AbstractAsyncHooksContextManager\n implements ContextManager\n{\n abstract active(): Context;\n\n abstract with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType;\n\n abstract enable(): this;\n\n abstract disable(): this;\n\n /**\n * Binds a the certain context or the active one to the target function and then returns the target\n * @param context A context (span) to be bind to target\n * @param target a function or event emitter. When target or one of its callbacks is called,\n * the provided context will be used as the active context for the duration of the call.\n */\n bind(context: Context, target: T): T {\n if (target instanceof EventEmitter) {\n return this._bindEventEmitter(context, target);\n }\n\n if (typeof target === 'function') {\n return this._bindFunction(context, target);\n }\n return target;\n }\n\n private _bindFunction(context: Context, target: T): T {\n const manager = this;\n const contextWrapper = function (this: never, ...args: unknown[]) {\n return manager.with(context, () => target.apply(this, args));\n };\n Object.defineProperty(contextWrapper, 'length', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: target.length,\n });\n /**\n * It isn't possible to tell Typescript that contextWrapper is the same as T\n * so we forced to cast as any here.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return contextWrapper as any;\n }\n\n /**\n * By default, EventEmitter call their callback with their context, which we do\n * not want, instead we will bind a specific context to all callbacks that\n * go through it.\n * @param context the context we want to bind\n * @param ee EventEmitter an instance of EventEmitter to patch\n */\n private _bindEventEmitter(\n context: Context,\n ee: T\n ): T {\n const map = this._getPatchMap(ee);\n if (map !== undefined) return ee;\n this._createPatchMap(ee);\n\n // patch methods that add a listener to propagate context\n ADD_LISTENER_METHODS.forEach(methodName => {\n if (ee[methodName] === undefined) return;\n ee[methodName] = this._patchAddListener(ee, ee[methodName], context);\n });\n // patch methods that remove a listener\n if (typeof ee.removeListener === 'function') {\n ee.removeListener = this._patchRemoveListener(ee, ee.removeListener);\n }\n if (typeof ee.off === 'function') {\n ee.off = this._patchRemoveListener(ee, ee.off);\n }\n // patch method that remove all listeners\n if (typeof ee.removeAllListeners === 'function') {\n ee.removeAllListeners = this._patchRemoveAllListeners(\n ee,\n ee.removeAllListeners\n );\n }\n return ee;\n }\n\n /**\n * Patch methods that remove a given listener so that we match the \"patched\"\n * version of that listener (the one that propagate context).\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n private _patchRemoveListener(ee: EventEmitter, original: Function) {\n const contextManager = this;\n return function (this: never, event: string, listener: Func) {\n const events = contextManager._getPatchMap(ee)?.[event];\n if (events === undefined) {\n return original.call(this, event, listener);\n }\n const patchedListener = events.get(listener);\n return original.call(this, event, patchedListener || listener);\n };\n }\n\n /**\n * Patch methods that remove all listeners so we remove our\n * internal references for a given event.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n private _patchRemoveAllListeners(ee: EventEmitter, original: Function) {\n const contextManager = this;\n return function (this: never, event: string) {\n const map = contextManager._getPatchMap(ee);\n if (map !== undefined) {\n if (arguments.length === 0) {\n contextManager._createPatchMap(ee);\n } else if (map[event] !== undefined) {\n delete map[event];\n }\n }\n return original.apply(this, arguments);\n };\n }\n\n /**\n * Patch methods on an event emitter instance that can add listeners so we\n * can force them to propagate a given context.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n * @param [context] context to propagate when calling listeners\n */\n private _patchAddListener(\n ee: EventEmitter,\n original: Function,\n context: Context\n ) {\n const contextManager = this;\n return function (this: never, event: string, listener: Func) {\n /**\n * This check is required to prevent double-wrapping the listener.\n * The implementation for ee.once wraps the listener and calls ee.on.\n * Without this check, we would wrap that wrapped listener.\n * This causes an issue because ee.removeListener depends on the onceWrapper\n * to properly remove the listener. If we wrap their wrapper, we break\n * that detection.\n */\n if (contextManager._wrapped) {\n return original.call(this, event, listener);\n }\n let map = contextManager._getPatchMap(ee);\n if (map === undefined) {\n map = contextManager._createPatchMap(ee);\n }\n let listeners = map[event];\n if (listeners === undefined) {\n listeners = new WeakMap();\n map[event] = listeners;\n }\n const patchedListener = contextManager.bind(context, listener);\n // store a weak reference of the user listener to ours\n listeners.set(listener, patchedListener);\n\n /**\n * See comment at the start of this function for the explanation of this property.\n */\n contextManager._wrapped = true;\n try {\n return original.call(this, event, patchedListener);\n } finally {\n contextManager._wrapped = false;\n }\n };\n }\n\n private _createPatchMap(ee: EventEmitter): PatchMap {\n const map = Object.create(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (ee as any)[this._kOtListeners] = map;\n return map;\n }\n private _getPatchMap(ee: EventEmitter): PatchMap | undefined {\n return (ee as never)[this._kOtListeners];\n }\n\n private readonly _kOtListeners = Symbol('OtListeners');\n private _wrapped = false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT } from '@opentelemetry/api';\nimport * as asyncHooks from 'async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager';\n\n/**\n * @deprecated Use AsyncLocalStorageContextManager instead.\n */\nexport class AsyncHooksContextManager extends AbstractAsyncHooksContextManager {\n private _asyncHook: asyncHooks.AsyncHook;\n private _contexts: Map = new Map();\n private _stack: Array = [];\n\n constructor() {\n super();\n this._asyncHook = asyncHooks.createHook({\n init: this._init.bind(this),\n before: this._before.bind(this),\n after: this._after.bind(this),\n destroy: this._destroy.bind(this),\n promiseResolve: this._destroy.bind(this),\n });\n }\n\n active(): Context {\n return this._stack[this._stack.length - 1] ?? ROOT_CONTEXT;\n }\n\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n this._enterContext(context);\n try {\n return fn.call(thisArg!, ...args);\n } finally {\n this._exitContext();\n }\n }\n\n enable(): this {\n this._asyncHook.enable();\n return this;\n }\n\n disable(): this {\n this._asyncHook.disable();\n this._contexts.clear();\n this._stack = [];\n return this;\n }\n\n /**\n * Init hook will be called when userland create a async context, setting the\n * context as the current one if it exist.\n * @param uid id of the async context\n * @param type the resource type\n */\n private _init(uid: number, type: string) {\n // ignore TIMERWRAP as they combine timers with same timeout which can lead to\n // false context propagation. TIMERWRAP has been removed in node 11\n // every timer has it's own `Timeout` resource anyway which is used to propagate\n // context.\n if (type === 'TIMERWRAP') return;\n\n const context = this._stack[this._stack.length - 1];\n if (context !== undefined) {\n this._contexts.set(uid, context);\n }\n }\n\n /**\n * Destroy hook will be called when a given context is no longer used so we can\n * remove its attached context.\n * @param uid uid of the async context\n */\n private _destroy(uid: number) {\n this._contexts.delete(uid);\n }\n\n /**\n * Before hook is called just before executing a async context.\n * @param uid uid of the async context\n */\n private _before(uid: number) {\n const context = this._contexts.get(uid);\n if (context !== undefined) {\n this._enterContext(context);\n }\n }\n\n /**\n * After hook is called just after completing the execution of a async context.\n */\n private _after() {\n this._exitContext();\n }\n\n /**\n * Set the given context as active\n */\n private _enterContext(context: Context) {\n this._stack.push(context);\n }\n\n /**\n * Remove the context at the root of the stack\n */\n private _exitContext() {\n this._stack.pop();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT } from '@opentelemetry/api';\nimport { AsyncLocalStorage } from 'async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager';\n\nexport class AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager {\n private _asyncLocalStorage: AsyncLocalStorage;\n\n constructor() {\n super();\n this._asyncLocalStorage = new AsyncLocalStorage();\n }\n\n active(): Context {\n return this._asyncLocalStorage.getStore() ?? ROOT_CONTEXT;\n }\n\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const cb = thisArg == null ? fn : fn.bind(thisArg);\n return this._asyncLocalStorage.run(context, cb as never, ...args);\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n this._asyncLocalStorage.disable();\n return this;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { AsyncHooksContextManager } from './AsyncHooksContextManager';\nexport { AsyncLocalStorageContextManager } from './AsyncLocalStorageContextManager';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes, AttributeValue } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport { SDK_INFO } from '@opentelemetry/core';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport type { Resource } from './Resource';\nimport { defaultServiceName } from './default-service-name';\nimport type {\n DetectedResource,\n DetectedResourceAttributes,\n MaybePromise,\n RawResourceAttribute,\n ResourceOptions,\n} from './types';\nimport { isPromiseLike } from './utils';\n\nclass ResourceImpl implements Resource {\n private _rawAttributes: RawResourceAttribute[];\n private _asyncAttributesPending = false;\n private _schemaUrl?: string;\n\n private _memoizedAttributes?: Attributes;\n\n static FromAttributeList(\n attributes: [string, MaybePromise][],\n options?: ResourceOptions\n ): Resource {\n const res = new ResourceImpl({}, options);\n res._rawAttributes = guardedRawAttributes(attributes);\n res._asyncAttributesPending =\n attributes.filter(([_, val]) => isPromiseLike(val)).length > 0;\n return res;\n }\n\n constructor(\n /**\n * A dictionary of attributes with string keys and values that provide\n * information about the entity as numbers, strings or booleans\n * TODO: Consider to add check/validation on attributes.\n */\n resource: DetectedResource,\n options?: ResourceOptions\n ) {\n const attributes = resource.attributes ?? {};\n this._rawAttributes = Object.entries(attributes).map(([k, v]) => {\n if (isPromiseLike(v)) {\n // side-effect\n this._asyncAttributesPending = true;\n }\n\n return [k, v];\n });\n\n this._rawAttributes = guardedRawAttributes(this._rawAttributes);\n this._schemaUrl = validateSchemaUrl(options?.schemaUrl);\n }\n\n public get asyncAttributesPending(): boolean {\n return this._asyncAttributesPending;\n }\n\n public async waitForAsyncAttributes(): Promise {\n if (!this.asyncAttributesPending) {\n return;\n }\n\n for (let i = 0; i < this._rawAttributes.length; i++) {\n const [k, v] = this._rawAttributes[i];\n this._rawAttributes[i] = [k, isPromiseLike(v) ? await v : v];\n }\n\n this._asyncAttributesPending = false;\n }\n\n public get attributes(): Attributes {\n if (this.asyncAttributesPending) {\n diag.error(\n 'Accessing resource attributes before async attributes settled'\n );\n }\n\n if (this._memoizedAttributes) {\n return this._memoizedAttributes;\n }\n\n const attrs: Attributes = {};\n for (const [k, v] of this._rawAttributes) {\n if (isPromiseLike(v)) {\n diag.debug(`Unsettled resource attribute ${k} skipped`);\n continue;\n }\n if (v != null) {\n attrs[k] ??= v;\n }\n }\n\n // only memoize output if all attributes are settled\n if (!this._asyncAttributesPending) {\n this._memoizedAttributes = attrs;\n }\n\n return attrs;\n }\n\n public getRawAttributes(): RawResourceAttribute[] {\n return this._rawAttributes;\n }\n\n public get schemaUrl(): string | undefined {\n return this._schemaUrl;\n }\n\n public merge(resource: Resource | null): Resource {\n if (resource == null) return this;\n\n // Order is important\n // Spec states incoming attributes override existing attributes\n const mergedSchemaUrl = mergeSchemaUrl(this, resource);\n const mergedOptions: ResourceOptions | undefined = mergedSchemaUrl\n ? { schemaUrl: mergedSchemaUrl }\n : undefined;\n\n return ResourceImpl.FromAttributeList(\n [...resource.getRawAttributes(), ...this.getRawAttributes()],\n mergedOptions\n );\n }\n}\n\nexport function resourceFromAttributes(\n attributes: DetectedResourceAttributes,\n options?: ResourceOptions\n): Resource {\n return ResourceImpl.FromAttributeList(Object.entries(attributes), options);\n}\n\nexport function resourceFromDetectedResource(\n detectedResource: DetectedResource,\n options?: ResourceOptions\n): Resource {\n return new ResourceImpl(detectedResource, options);\n}\n\nexport function emptyResource(): Resource {\n return resourceFromAttributes({});\n}\n\nexport function defaultResource(): Resource {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: defaultServiceName(),\n [ATTR_TELEMETRY_SDK_LANGUAGE]: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE],\n [ATTR_TELEMETRY_SDK_NAME]: SDK_INFO[ATTR_TELEMETRY_SDK_NAME],\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION],\n });\n}\n\nfunction guardedRawAttributes(\n attributes: RawResourceAttribute[]\n): RawResourceAttribute[] {\n return attributes.map(([k, v]) => {\n if (isPromiseLike(v)) {\n return [\n k,\n v.catch(err => {\n diag.debug(\n 'promise rejection for resource attribute: %s - %s',\n k,\n err\n );\n return undefined;\n }),\n ];\n }\n return [k, v];\n });\n}\n\nfunction validateSchemaUrl(schemaUrl?: string): string | undefined {\n if (typeof schemaUrl === 'string' || schemaUrl === undefined) {\n return schemaUrl;\n }\n\n diag.warn(\n 'Schema URL must be string or undefined, got %s. Schema URL will be ignored.',\n schemaUrl\n );\n\n return undefined;\n}\n\nfunction mergeSchemaUrl(\n old: Resource,\n updating: Resource | null\n): string | undefined {\n const oldSchemaUrl = old?.schemaUrl;\n const updatingSchemaUrl = updating?.schemaUrl;\n\n const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === '';\n const isUpdatingEmpty =\n updatingSchemaUrl === undefined || updatingSchemaUrl === '';\n\n if (isOldEmpty) {\n return updatingSchemaUrl;\n }\n\n if (isUpdatingEmpty) {\n return oldSchemaUrl;\n }\n\n if (oldSchemaUrl === updatingSchemaUrl) {\n return oldSchemaUrl;\n }\n\n diag.warn(\n 'Schema URL merge conflict: old resource has \"%s\", updating resource has \"%s\". Resulting resource will have undefined Schema URL.',\n oldSchemaUrl,\n updatingSchemaUrl\n );\n\n return undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nlet serviceName: string | undefined;\n\n/**\n * Returns the default service name for OpenTelemetry resources.\n * In Node.js environments, returns \"unknown_service:\".\n * In browser/edge environments, returns \"unknown_service\".\n */\nexport function defaultServiceName(): string {\n if (serviceName === undefined) {\n try {\n const argv0 = globalThis.process.argv0;\n serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service';\n } catch {\n serviceName = 'unknown_service';\n }\n }\n return serviceName;\n}\n\n/** @internal For testing purposes only */\nexport function _clearDefaultServiceNameCache(): void {\n serviceName = undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const isPromiseLike = (val: unknown): val is PromiseLike => {\n return (\n val !== null &&\n typeof val === 'object' &&\n typeof (val as Partial>).then === 'function'\n );\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n}\n\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes: number): () => string {\n return function generateId() {\n for (let i = 0; i < bytes / 4; i++) {\n // unsigned right shift drops decimal part of the number\n // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n }\n\n // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n for (let i = 0; i < bytes; i++) {\n if (SHARED_BUFFER[i] > 0) {\n break;\n } else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanExporter } from './SpanExporter';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { ExportResultCode, hrTimeToMicroseconds } from '@opentelemetry/core';\n\n/**\n * This is implementation of {@link SpanExporter} that prints spans to the\n * console. This class can be used for diagnostic purposes.\n *\n * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time.\n */\n\n/* eslint-disable no-console */\nexport class ConsoleSpanExporter implements SpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n return this._sendSpans(spans, resultCallback);\n }\n\n /**\n * Shutdown the exporter.\n */\n shutdown(): Promise {\n this._sendSpans([]);\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n /**\n * converts span info into more readable format\n * @param span\n */\n private _exportInfo(span: ReadableSpan) {\n return {\n resource: {\n attributes: span.resource.attributes,\n },\n instrumentationScope: span.instrumentationScope,\n traceId: span.spanContext().traceId,\n parentSpanContext: span.parentSpanContext,\n traceState: span.spanContext().traceState?.serialize(),\n name: span.name,\n id: span.spanContext().spanId,\n kind: span.kind,\n timestamp: hrTimeToMicroseconds(span.startTime),\n duration: hrTimeToMicroseconds(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n private _sendSpans(\n spans: ReadableSpan[],\n done?: (result: ExportResult) => void\n ): void {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: ExportResultCode.SUCCESS });\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { getNumberFromEnv, getStringFromEnv } from '@opentelemetry/core';\nimport type { Sampler } from './Sampler';\nimport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nimport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nimport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nimport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\n\nconst enum TracesSamplerValues {\n AlwaysOff = 'always_off',\n AlwaysOn = 'always_on',\n ParentBasedAlwaysOff = 'parentbased_always_off',\n ParentBasedAlwaysOn = 'parentbased_always_on',\n ParentBasedTraceIdRatio = 'parentbased_traceidratio',\n TraceIdRatio = 'traceidratio',\n}\n\nconst DEFAULT_RATIO = 1;\n\n/**\n * Load default configuration. For fields with primitive values, any user-provided\n * value will override the corresponding default value. For fields with\n * non-primitive values (like `spanLimits`), the user-provided value will be\n * used to extend the default value.\n */\n\n// object needs to be wrapped in this function and called when needed otherwise\n// envs are parsed before tests are ran - causes tests using these envs to fail\nexport function loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n },\n spanLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n linkCountLimit: getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128,\n eventCountLimit: getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128,\n attributePerEventCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128,\n attributePerLinkCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128,\n },\n };\n}\n\n/**\n * Based on environment, builds a sampler, complies with specification.\n */\nexport function buildSamplerFromEnv(): Sampler {\n const sampler =\n getStringFromEnv('OTEL_TRACES_SAMPLER') ??\n TracesSamplerValues.ParentBasedAlwaysOn;\n switch (sampler) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler({\n root: new AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler({\n root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()),\n });\n default:\n diag.error(\n `OTEL_TRACES_SAMPLER value \"${sampler}\" invalid, defaulting to \"${TracesSamplerValues.ParentBasedAlwaysOn}\".`\n );\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n }\n}\n\nfunction getSamplerProbabilityFromEnv(): number | undefined {\n const probability = getNumberFromEnv('OTEL_TRACES_SAMPLER_ARG');\n if (probability == null) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n if (probability < 0 || probability > 1) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n return probability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api';\nimport { merge } from '@opentelemetry/core';\nimport type { Resource } from '@opentelemetry/resources';\nimport { defaultResource } from '@opentelemetry/resources';\nimport type { SpanProcessor } from './SpanProcessor';\nimport { Tracer } from './Tracer';\nimport { loadDefaultConfig } from './config';\nimport { MultiSpanProcessor } from './MultiSpanProcessor';\nimport type { TracerConfig } from './types';\nimport { reconfigureLimits } from './utility';\n\nexport enum ForceFlushState {\n 'resolved',\n 'timeout',\n 'error',\n 'unresolved',\n}\n\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nexport class BasicTracerProvider implements TracerProvider {\n private readonly _config: TracerConfig;\n private readonly _tracers: Map = new Map();\n private readonly _resource: Resource;\n private readonly _activeSpanProcessor: MultiSpanProcessor;\n\n constructor(config: TracerConfig = {}) {\n const mergedConfig = merge(\n {},\n loadDefaultConfig(),\n reconfigureLimits(config)\n );\n this._resource = mergedConfig.resource ?? defaultResource();\n\n this._config = Object.assign({}, mergedConfig, {\n resource: this._resource,\n });\n\n const spanProcessors: SpanProcessor[] = [];\n\n if (config.spanProcessors?.length) {\n spanProcessors.push(...config.spanProcessors);\n }\n\n this._activeSpanProcessor = new MultiSpanProcessor(spanProcessors);\n }\n\n getTracer(\n name: string,\n version?: string,\n options?: { schemaUrl?: string }\n ): ApiTracer {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(\n key,\n new Tracer(\n { name, version, schemaUrl: options?.schemaUrl },\n this._config,\n this._resource,\n this._activeSpanProcessor\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key)!;\n }\n\n forceFlush(): Promise {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._activeSpanProcessor['_spanProcessors'].map(\n (spanProcessor: SpanProcessor) => {\n return new Promise(resolve => {\n let state: ForceFlushState;\n const timeoutInterval = setTimeout(() => {\n resolve(\n new Error(\n `Span processor did not completed within timeout period of ${timeout} ms`\n )\n );\n state = ForceFlushState.timeout;\n }, timeout);\n\n spanProcessor\n .forceFlush()\n .then(() => {\n clearTimeout(timeoutInterval);\n if (state !== ForceFlushState.timeout) {\n state = ForceFlushState.resolved;\n resolve(state);\n }\n })\n .catch(error => {\n clearTimeout(timeoutInterval);\n state = ForceFlushState.error;\n resolve(error);\n });\n });\n }\n );\n\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(\n result => result !== ForceFlushState.resolved\n );\n if (errors.length > 0) {\n reject(errors);\n } else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n\n shutdown(): Promise {\n return this._activeSpanProcessor.shutdown();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples no traces. */\nexport class AlwaysOffSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return 'AlwaysOffSampler';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { context, diag, TraceFlags } from '@opentelemetry/api';\nimport {\n BindOnceFuture,\n ExportResultCode,\n getNumberFromEnv,\n globalErrorHandler,\n suppressTracing,\n} from '@opentelemetry/core';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\nimport type { BufferConfig } from '../types';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { SpanExporter } from './SpanExporter';\n\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nexport abstract class BatchSpanProcessorBase\n implements SpanProcessor\n{\n private readonly _maxExportBatchSize: number;\n private readonly _maxQueueSize: number;\n private readonly _scheduledDelayMillis: number;\n private readonly _exportTimeoutMillis: number;\n private readonly _exporter: SpanExporter;\n\n private _isExporting = false;\n private _finishedSpans: ReadableSpan[] = [];\n private _timer: NodeJS.Timeout | number | undefined;\n private _shutdownOnce: BindOnceFuture;\n private _droppedSpansCount: number = 0;\n\n constructor(exporter: SpanExporter, config?: T) {\n this._exporter = exporter;\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : (getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512);\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : (getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048);\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : (getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000);\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : (getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000);\n\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n\n if (this._maxExportBatchSize > this._maxQueueSize) {\n diag.warn(\n 'BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize'\n );\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n\n forceFlush(): Promise {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n\n // does nothing.\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n this._addToBuffer(span);\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown() {\n return Promise.resolve()\n .then(() => {\n return this.onShutdown();\n })\n .then(() => {\n return this._flushAll();\n })\n .then(() => {\n return this._exporter.shutdown();\n });\n }\n\n /** Add a span in the buffer. */\n private _addToBuffer(span: ReadableSpan) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n\n if (this._droppedSpansCount === 0) {\n diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n\n return;\n }\n\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n diag.warn(\n `Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`\n );\n this._droppedSpansCount = 0;\n }\n\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\n\n /**\n * Send all spans to the exporter respecting the batch size limit\n * This function is used only on forceFlush or shutdown,\n * for all other cases _flush should be used\n * */\n private _flushAll(): Promise {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(\n this._finishedSpans.length / this._maxExportBatchSize\n );\n for (let i = 0, j = count; i < j; i++) {\n promises.push(this._flushOneBatch());\n }\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n\n private _flushOneBatch(): Promise {\n this._clearTimer();\n if (this._finishedSpans.length === 0) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n // don't wait anymore for export, this way the next batch can start\n reject(new Error('Timeout'));\n }, this._exportTimeoutMillis);\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n // Reset the finished spans buffer here because the next invocations of the _flush method\n // could pass the same finished spans to the exporter if the buffer is cleared\n // outside the execution of this callback.\n let spans: ReadableSpan[];\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n } else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n\n const doExport = () =>\n this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === ExportResultCode.SUCCESS) {\n resolve();\n } else {\n reject(\n result.error ??\n new Error('BatchSpanProcessor: span export failed')\n );\n }\n });\n\n let pendingResources: Array> | null = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (\n span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes\n ) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n } else {\n Promise.all(pendingResources).then(doExport, err => {\n globalErrorHandler(err);\n reject(err);\n });\n }\n });\n });\n }\n\n private _maybeStartTimer() {\n if (this._isExporting) return;\n const flush = () => {\n this._isExporting = true;\n this._flushOneBatch()\n .finally(() => {\n this._isExporting = false;\n if (this._finishedSpans.length > 0) {\n this._clearTimer();\n this._maybeStartTimer();\n }\n })\n .catch(e => {\n this._isExporting = false;\n globalErrorHandler(e);\n });\n };\n // we only wait if the queue doesn't have enough elements yet\n if (this._finishedSpans.length >= this._maxExportBatchSize) {\n return flush();\n }\n if (this._timer !== undefined) return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n\n // depending on runtime, this may be a 'number' or NodeJS.Timeout\n if (typeof this._timer !== 'number') {\n this._timer.unref();\n }\n }\n\n private _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n\n protected abstract onShutdown(): void;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context, Link, Attributes, SpanKind } from '@opentelemetry/api';\nimport { isSpanContextValid, TraceFlags, trace } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { AlwaysOffSampler } from './AlwaysOffSampler';\nimport { AlwaysOnSampler } from './AlwaysOnSampler';\nimport type { Sampler, SamplingResult } from '../Sampler';\n\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nexport class ParentBasedSampler implements Sampler {\n private _root: Sampler;\n private _remoteParentSampled: Sampler;\n private _remoteParentNotSampled: Sampler;\n private _localParentSampled: Sampler;\n private _localParentNotSampled: Sampler;\n\n constructor(config: ParentBasedSamplerConfig) {\n this._root = config.root;\n\n if (!this._root) {\n globalErrorHandler(\n new Error('ParentBasedSampler must have a root sampler configured')\n );\n this._root = new AlwaysOnSampler();\n }\n\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler();\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult {\n const parentContext = trace.getSpanContext(context);\n\n if (!parentContext || !isSpanContextValid(parentContext)) {\n return this._root.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n return this._remoteParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n return this._localParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n toString(): string {\n return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n }\n}\n\ninterface ParentBasedSamplerConfig {\n /** Sampler called for spans with no parent */\n root: Sampler;\n /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */\n remoteParentSampled?: Sampler;\n /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */\n remoteParentNotSampled?: Sampler;\n /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */\n localParentSampled?: Sampler;\n /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */\n localParentNotSampled?: Sampler;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { buildSamplerFromEnv, loadDefaultConfig } from './config';\nimport type { Sampler } from './Sampler';\nimport type { SpanLimits, TracerConfig, GeneralLimits } from './types';\nimport { getNumberFromEnv } from '@opentelemetry/core';\n\nexport const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexport const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nexport function mergeConfig(userConfig: TracerConfig): TracerConfig & {\n sampler: Sampler;\n spanLimits: SpanLimits;\n generalLimits: GeneralLimits;\n} {\n const perInstanceDefaults: Partial = {\n sampler: buildSamplerFromEnv(),\n };\n\n const DEFAULT_CONFIG = loadDefaultConfig();\n\n const target = Object.assign(\n {},\n DEFAULT_CONFIG,\n perInstanceDefaults,\n userConfig\n );\n\n target.generalLimits = Object.assign(\n {},\n DEFAULT_CONFIG.generalLimits,\n userConfig.generalLimits || {}\n );\n\n target.spanLimits = Object.assign(\n {},\n DEFAULT_CONFIG.spanLimits,\n userConfig.spanLimits || {}\n );\n\n return target;\n}\n\n/**\n * When general limits are provided and model specific limits are not,\n * configures the model specific limits by using the values from the general ones.\n * @param userConfig User provided tracer configuration\n */\nexport function reconfigureLimits(userConfig: TracerConfig): TracerConfig {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n\n /**\n * Reassign span attribute count limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeCountLimit =\n userConfig.spanLimits?.attributeCountLimit ??\n userConfig.generalLimits?.attributeCountLimit ??\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ??\n DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n\n /**\n * Reassign span attribute value length limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeValueLengthLimit =\n userConfig.spanLimits?.attributeValueLengthLimit ??\n userConfig.generalLimits?.attributeValueLengthLimit ??\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n\n return Object.assign({}, userConfig, { spanLimits });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport type { BufferConfig } from '../../../types';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n protected onShutdown(): void {}\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { BasicTracerProvider } from './BasicTracerProvider';\nexport { BatchSpanProcessor, RandomIdGenerator } from './platform';\nexport { ConsoleSpanExporter } from './export/ConsoleSpanExporter';\nexport { InMemorySpanExporter } from './export/InMemorySpanExporter';\nexport type { ReadableSpan } from './export/ReadableSpan';\nexport { SimpleSpanProcessor } from './export/SimpleSpanProcessor';\nexport type { SpanExporter } from './export/SpanExporter';\nexport { NoopSpanProcessor } from './export/NoopSpanProcessor';\nexport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nexport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nexport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nexport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\nexport { SamplingDecision } from './Sampler';\nexport type { Sampler, SamplingResult } from './Sampler';\nexport type { Span } from './Span';\nexport type { SpanProcessor } from './SpanProcessor';\nexport type { TimedEvent } from './TimedEvent';\nexport type {\n BatchSpanProcessorBrowserConfig,\n BufferConfig,\n GeneralLimits,\n SDKRegistrationConfig,\n SpanLimits,\n TracerConfig,\n} from './types';\nexport type { IdGenerator } from './IdGenerator';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport * as api from '@opentelemetry/api';\nimport type { InstrumentationScope } from '@opentelemetry/core';\nimport { sanitizeAttributes, isTracingSuppressed } from '@opentelemetry/core';\nimport { SpanImpl } from './Span';\nimport type { GeneralLimits, SpanLimits, TracerConfig } from './types';\nimport { mergeConfig } from './utility';\nimport type { SpanProcessor } from './SpanProcessor';\nimport type { Sampler } from './Sampler';\nimport type { IdGenerator } from './IdGenerator';\nimport { RandomIdGenerator } from './platform';\nimport type { Resource } from '@opentelemetry/resources';\nimport { TracerMetrics } from './TracerMetrics';\nimport { VERSION } from './version';\n\n/**\n * This class represents a basic tracer.\n */\nexport class Tracer implements api.Tracer {\n private readonly _sampler: Sampler;\n private readonly _generalLimits: GeneralLimits;\n private readonly _spanLimits: SpanLimits;\n private readonly _idGenerator: IdGenerator;\n readonly instrumentationScope: InstrumentationScope;\n\n private readonly _resource: Resource;\n private readonly _spanProcessor: SpanProcessor;\n private readonly _tracerMetrics: TracerMetrics;\n\n /**\n * Constructs a new Tracer instance.\n */\n constructor(\n instrumentationScope: InstrumentationScope,\n config: TracerConfig,\n resource: Resource,\n spanProcessor: SpanProcessor\n ) {\n const localConfig = mergeConfig(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new RandomIdGenerator();\n this._resource = resource;\n this._spanProcessor = spanProcessor;\n this.instrumentationScope = instrumentationScope;\n\n const meter = localConfig.meterProvider\n ? localConfig.meterProvider.getMeter('@opentelemetry/sdk-trace', VERSION)\n : api.createNoopMeter();\n this._tracerMetrics = new TracerMetrics(meter);\n }\n\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(\n name: string,\n options: api.SpanOptions = {},\n context = api.context.active()\n ): api.Span {\n // remove span from context in case a root span is requested via options\n if (options.root) {\n context = api.trace.deleteSpan(context);\n }\n const parentSpan = api.trace.getSpan(context);\n\n if (isTracingSuppressed(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(\n api.INVALID_SPAN_CONTEXT\n );\n return nonRecordingSpan;\n }\n\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let validParentSpanContext;\n let traceId;\n let traceState;\n if (\n !parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)\n ) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n } else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n validParentSpanContext = parentSpanContext;\n }\n\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: sanitizeAttributes(link.attributes),\n };\n });\n const attributes = sanitizeAttributes(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(\n context,\n traceId,\n name,\n spanKind,\n attributes,\n links\n );\n\n const recordEndMetrics = this._tracerMetrics.startSpan(\n parentSpanContext,\n samplingResult.decision\n );\n\n traceState = samplingResult.traceState ?? traceState;\n\n const traceFlags =\n samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED\n ? api.TraceFlags.SAMPLED\n : api.TraceFlags.NONE;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) {\n api.diag.debug(\n 'Recording is off, propagating context in a non-recording span'\n );\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\n\n // Set initial span attributes. The attributes object may have been mutated\n // by the sampler, so we sanitize the merged attributes before setting them.\n const initAttributes = sanitizeAttributes(\n Object.assign(attributes, samplingResult.attributes)\n );\n\n const span = new SpanImpl({\n resource: this._resource,\n scope: this.instrumentationScope,\n context,\n spanContext,\n name,\n kind: spanKind,\n links,\n parentSpanContext: validParentSpanContext,\n attributes: initAttributes,\n startTime: options.startTime,\n spanProcessor: this._spanProcessor,\n spanLimits: this._spanLimits,\n recordEndMetrics,\n });\n return span;\n }\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n ctx: api.Context,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | api.SpanOptions,\n arg3?: F | api.Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: api.SpanOptions | undefined;\n let ctx: api.Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as api.SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as api.SpanOptions | undefined;\n ctx = arg3 as api.Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? api.context.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = api.trace.setSpan(parentContext, span);\n\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits(): GeneralLimits {\n return this._generalLimits;\n }\n\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits(): SpanLimits {\n return this._spanLimits;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanExporter } from './SpanExporter';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { ExportResultCode } from '@opentelemetry/core';\n\n/**\n * This class can be used for testing purposes. It stores the exported spans\n * in a list in memory that can be retrieved using the `getFinishedSpans()`\n * method.\n */\nexport class InMemorySpanExporter implements SpanExporter {\n private _finishedSpans: ReadableSpan[] = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n protected _stopped = false;\n\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n if (this._stopped)\n return resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n\n setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0);\n }\n\n shutdown(): Promise {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n reset(): void {\n this._finishedSpans = [];\n }\n\n getFinishedSpans(): ReadableSpan[] {\n return this._finishedSpans;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n Exception,\n HrTime,\n Link,\n Span as APISpan,\n SpanOptions as APISpanOptions,\n Attributes,\n AttributeValue,\n SpanContext,\n SpanKind,\n SpanStatus,\n TimeInput,\n} from '@opentelemetry/api';\nimport { diag, SpanStatusCode } from '@opentelemetry/api';\nimport type { InstrumentationScope } from '@opentelemetry/core';\nimport {\n addHrTimes,\n millisToHrTime,\n hrTime,\n hrTimeDuration,\n isAttributeValue,\n isTimeInput,\n isTimeInputHrTime,\n otperformance,\n sanitizeAttributes,\n} from '@opentelemetry/core';\nimport type { Resource } from '@opentelemetry/resources';\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport type { ReadableSpan } from './export/ReadableSpan';\nimport { ExceptionEventName } from './enums';\nimport type { SpanProcessor } from './SpanProcessor';\nimport type { TimedEvent } from './TimedEvent';\nimport type { SpanLimits } from './types';\n\n/**\n * This type provides the properties of @link{ReadableSpan} at the same time\n * of the Span API\n */\nexport type Span = APISpan & ReadableSpan;\n\n// `root` is omitted because it is consumed by Tracer.startSpan() to strip\n// parent context but it has no meaning when constructing a Span directly.\ntype SpanOptions = Omit & {\n resource: Resource;\n scope: InstrumentationScope;\n context: Context;\n spanContext: SpanContext;\n name: string;\n // Required here to override optional `kind` from the API's SpanOptions\n // SpanImpl assigns it unconditionally and ReadableSpan expects it to be set.\n kind: SpanKind;\n parentSpanContext?: SpanContext;\n spanLimits: SpanLimits;\n spanProcessor: SpanProcessor;\n recordEndMetrics?: () => void;\n};\n\n/**\n * This class represents a span.\n */\nexport class SpanImpl implements Span {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n private readonly _spanContext: SpanContext;\n readonly kind: SpanKind;\n readonly parentSpanContext?: SpanContext;\n readonly attributes: Attributes = {};\n readonly links: Link[] = [];\n readonly events: TimedEvent[] = [];\n readonly startTime: HrTime;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n\n private _droppedAttributesCount = 0;\n private _droppedEventsCount: number = 0;\n private _droppedLinksCount: number = 0;\n private _attributesCount: number = 0;\n\n name: string;\n status: SpanStatus = {\n code: SpanStatusCode.UNSET,\n };\n endTime: HrTime = [0, 0];\n private _ended = false;\n private _duration: HrTime = [-1, -1];\n private readonly _spanProcessor: SpanProcessor;\n private readonly _spanLimits: SpanLimits;\n private readonly _attributeValueLengthLimit: number;\n private readonly _recordEndMetrics?: () => void;\n\n private readonly _performanceStartTime: number;\n private readonly _performanceOffset: number;\n private readonly _startTimeProvided: boolean;\n\n /**\n * Constructs a new SpanImpl instance.\n */\n constructor(opts: SpanOptions) {\n const now = Date.now();\n\n this._spanContext = opts.spanContext;\n this._performanceStartTime = otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + otperformance.timeOrigin);\n this._startTimeProvided = opts.startTime != null;\n this._spanLimits = opts.spanLimits;\n this._attributeValueLengthLimit =\n this._spanLimits.attributeValueLengthLimit ?? 0;\n this._spanProcessor = opts.spanProcessor;\n\n this.name = opts.name;\n this.parentSpanContext = opts.parentSpanContext;\n this.kind = opts.kind;\n if (opts.links) {\n for (const link of opts.links) {\n this.addLink(link);\n }\n }\n this.startTime = this._getTime(opts.startTime ?? now);\n this.resource = opts.resource;\n this.instrumentationScope = opts.scope;\n this._recordEndMetrics = opts.recordEndMetrics;\n\n if (opts.attributes != null) {\n this.setAttributes(opts.attributes);\n }\n\n this._spanProcessor.onStart(this, opts.context);\n }\n\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n setAttribute(key: string, value?: AttributeValue): this;\n setAttribute(key: string, value: unknown): this {\n if (value == null || this._isSpanEnded()) return this;\n if (key.length === 0) {\n diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!isAttributeValue(value)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n\n const { attributeCountLimit } = this._spanLimits;\n const isNewKey = !Object.prototype.hasOwnProperty.call(\n this.attributes,\n key\n );\n\n if (\n attributeCountLimit !== undefined &&\n this._attributesCount >= attributeCountLimit &&\n isNewKey\n ) {\n this._droppedAttributesCount++;\n return this;\n }\n\n this.attributes[key] = this._truncateToSize(value);\n if (isNewKey) {\n this._attributesCount++;\n }\n return this;\n }\n\n setAttributes(attributes: Attributes): this {\n for (const key in attributes) {\n if (Object.prototype.hasOwnProperty.call(attributes, key)) {\n this.setAttribute(key, attributes[key]);\n }\n }\n return this;\n }\n\n /**\n *\n * @param name Span Name\n * @param [attributesOrStartTime] Span attributes or start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [timeStamp] Specified time stamp for the event\n */\n addEvent(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n timeStamp?: TimeInput\n ): this {\n if (this._isSpanEnded()) return this;\n\n const { eventCountLimit } = this._spanLimits;\n\n if (eventCountLimit === 0) {\n diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n\n if (\n eventCountLimit !== undefined &&\n this.events.length >= eventCountLimit\n ) {\n if (this._droppedEventsCount === 0) {\n diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n\n if (isTimeInput(attributesOrStartTime)) {\n if (!isTimeInput(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n\n const sanitized = sanitizeAttributes(attributesOrStartTime);\n const { attributePerEventCountLimit } = this._spanLimits;\n const attributes: Attributes = {};\n let droppedAttributesCount = 0;\n let eventAttributesCount = 0;\n\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (\n attributePerEventCountLimit !== undefined &&\n eventAttributesCount >= attributePerEventCountLimit\n ) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal!);\n eventAttributesCount++;\n }\n\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount,\n });\n return this;\n }\n\n addLink(link: Link): this {\n if (this._isSpanEnded()) return this;\n\n const { linkCountLimit } = this._spanLimits;\n\n if (linkCountLimit === 0) {\n this._droppedLinksCount++;\n return this;\n }\n\n if (linkCountLimit !== undefined && this.links.length >= linkCountLimit) {\n if (this._droppedLinksCount === 0) {\n diag.debug('Dropping extra links.');\n }\n this.links.shift();\n this._droppedLinksCount++;\n }\n\n const { attributePerLinkCountLimit } = this._spanLimits;\n const sanitized = sanitizeAttributes(link.attributes);\n const attributes: Attributes = {};\n let droppedAttributesCount = 0;\n let linkAttributesCount = 0;\n\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (\n attributePerLinkCountLimit !== undefined &&\n linkAttributesCount >= attributePerLinkCountLimit\n ) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal!);\n linkAttributesCount++;\n }\n\n const processedLink: Link = { context: link.context };\n if (linkAttributesCount > 0) {\n processedLink.attributes = attributes;\n }\n if (droppedAttributesCount > 0) {\n processedLink.droppedAttributesCount = droppedAttributesCount;\n }\n\n this.links.push(processedLink);\n return this;\n }\n\n addLinks(links: Link[]): this {\n for (const link of links) {\n this.addLink(link);\n }\n return this;\n }\n\n setStatus(status: SpanStatus): this {\n if (this._isSpanEnded()) return this;\n if (status.code === SpanStatusCode.UNSET) return this;\n if (this.status.code === SpanStatusCode.OK) return this;\n\n const newStatus: SpanStatus = { code: status.code };\n\n // When using try-catch, the caught \"error\" is of type `any`. When then assigning `any` to `status.message`,\n // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus()\n // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or\n // undefined to avoid an incorrect type causing issues downstream.\n if (status.code === SpanStatusCode.ERROR) {\n if (typeof status.message === 'string') {\n newStatus.message = status.message;\n } else if (status.message != null) {\n diag.warn(\n `Dropping invalid status.message of type '${typeof status.message}', expected 'string'`\n );\n }\n }\n\n this.status = newStatus;\n return this;\n }\n\n updateName(name: string): this {\n if (this._isSpanEnded()) return this;\n this.name = name;\n return this;\n }\n\n end(endTime?: TimeInput): void {\n if (this._isSpanEnded()) {\n diag.error(\n `${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`\n );\n return;\n }\n this.endTime = this._getTime(endTime);\n this._duration = hrTimeDuration(this.startTime, this.endTime);\n\n if (this._duration[0] < 0) {\n diag.warn(\n 'Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.',\n this.startTime,\n this.endTime\n );\n this.endTime = this.startTime.slice() as HrTime;\n this._duration = [0, 0];\n }\n\n if (this._droppedEventsCount > 0) {\n diag.warn(\n `Dropped ${this._droppedEventsCount} events because eventCountLimit reached`\n );\n }\n if (this._droppedLinksCount > 0) {\n diag.warn(\n `Dropped ${this._droppedLinksCount} links because linkCountLimit reached`\n );\n }\n if (this._spanProcessor.onEnding) {\n this._spanProcessor.onEnding(this);\n }\n\n this._recordEndMetrics?.();\n this._ended = true;\n this._spanProcessor.onEnd(this);\n }\n\n private _getTime(inp?: TimeInput): HrTime {\n if (typeof inp === 'number' && inp <= otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return hrTime(inp + this._performanceOffset);\n }\n\n if (typeof inp === 'number') {\n return millisToHrTime(inp);\n }\n\n if (inp instanceof Date) {\n return millisToHrTime(inp.getTime());\n }\n\n if (isTimeInputHrTime(inp)) {\n return inp;\n }\n\n if (this._startTimeProvided) {\n // if user provided a time for the start manually\n // we can't use duration to calculate event/end times\n return millisToHrTime(Date.now());\n }\n\n const msDuration = otperformance.now() - this._performanceStartTime;\n return addHrTimes(this.startTime, millisToHrTime(msDuration));\n }\n\n isRecording(): boolean {\n return this._ended === false;\n }\n\n recordException(exception: Exception, time?: TimeInput): void {\n const attributes: Attributes = {};\n if (typeof exception === 'string') {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception;\n } else if (exception) {\n if (exception.code) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.code.toString();\n } else if (exception.name) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[ATTR_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n\n // these are minimum requirements from spec\n if (attributes[ATTR_EXCEPTION_TYPE] || attributes[ATTR_EXCEPTION_MESSAGE]) {\n this.addEvent(ExceptionEventName, attributes, time);\n } else {\n diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n\n get duration(): HrTime {\n return this._duration;\n }\n\n get ended(): boolean {\n return this._ended;\n }\n\n get droppedAttributesCount(): number {\n return this._droppedAttributesCount;\n }\n\n get droppedEventsCount(): number {\n return this._droppedEventsCount;\n }\n\n get droppedLinksCount(): number {\n return this._droppedLinksCount;\n }\n\n private _isSpanEnded(): boolean {\n if (this._ended) {\n const error = new Error(\n `Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`\n );\n\n diag.warn(\n `Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,\n error\n );\n }\n return this._ended;\n }\n\n // Utility function to truncate given value within size\n // for value type of string, will truncate to given limit\n // for type of non-string, will return same value\n private _truncateToLimitUtil(value: string, limit: number): string {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\n\n /**\n * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then\n * return string with truncated to {@code attributeValueLengthLimit} characters\n *\n * If the given attribute value is array of strings then\n * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters\n *\n * Otherwise return same Attribute {@code value}\n *\n * @param value Attribute value\n * @returns truncated attribute value if required, otherwise same value\n */\n private _truncateToSize(value: AttributeValue): AttributeValue {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n\n // Array of strings\n if (Array.isArray(value)) {\n return (value as []).map(val =>\n typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val\n );\n }\n\n // Other types, no need to apply value length limit\n return value;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isValidTraceId } from '@opentelemetry/api';\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nexport class TraceIdRatioBasedSampler implements Sampler {\n private readonly _ratio;\n private _upperBound: number;\n\n constructor(ratio = 0) {\n this._ratio = this._normalize(ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n\n shouldSample(context: unknown, traceId: string): SamplingResult {\n return {\n decision:\n isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound\n ? SamplingDecision.RECORD_AND_SAMPLED\n : SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n\n private _accumulate(traceId: string): number {\n let accumulation = 0;\n for (let i = 0; i < traceId.length / 8; i++) {\n const pos = i * 8;\n const part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples all traces. */\nexport class AlwaysOnSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n\n toString(): string {\n return 'AlwaysOnSampler';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { TraceFlags } from '@opentelemetry/api';\nimport {\n internal,\n ExportResultCode,\n globalErrorHandler,\n BindOnceFuture,\n} from '@opentelemetry/core';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { SpanExporter } from './SpanExporter';\n\n/**\n * An implementation of the {@link SpanProcessor} that converts the {@link Span}\n * to {@link ReadableSpan} and passes it to the configured exporter.\n *\n * Only spans that are sampled are converted.\n *\n * NOTE: This {@link SpanProcessor} exports every ended span individually instead of batching spans together, which causes significant performance overhead with most exporters. For production use, please consider using the {@link BatchSpanProcessor} instead.\n */\nexport class SimpleSpanProcessor implements SpanProcessor {\n private readonly _exporter: SpanExporter;\n private _shutdownOnce: BindOnceFuture;\n private _pendingExports: Set>;\n\n constructor(exporter: SpanExporter) {\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._pendingExports = new Set>();\n }\n\n async forceFlush(): Promise {\n await Promise.all(Array.from(this._pendingExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n const pendingExport = this._doExport(span).catch(err =>\n globalErrorHandler(err)\n );\n // Enqueue this export to the pending list so it can be flushed by the user.\n this._pendingExports.add(pendingExport);\n void pendingExport.finally(() =>\n this._pendingExports.delete(pendingExport)\n );\n }\n\n private async _doExport(span: ReadableSpan): Promise {\n if (span.resource.asyncAttributesPending) {\n // Ensure resource is fully resolved before exporting.\n await span.resource.waitForAsyncAttributes?.();\n }\n\n const result = await internal._export(this._exporter, [span]);\n if (result.code !== ExportResultCode.SUCCESS) {\n throw (\n result.error ??\n new Error(`SimpleSpanProcessor: span export failed (status ${result})`)\n );\n }\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown(): Promise {\n return this._exporter.shutdown();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport type { ReadableSpan } from './export/ReadableSpan';\nimport type { Span } from './Span';\nimport type { SpanProcessor } from './SpanProcessor';\n\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nexport class MultiSpanProcessor implements SpanProcessor {\n private readonly _spanProcessors: SpanProcessor[];\n constructor(spanProcessors: SpanProcessor[]) {\n this._spanProcessors = spanProcessors;\n }\n\n forceFlush(): Promise {\n const promises: Promise[] = [];\n\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.forceFlush());\n }\n return new Promise(resolve => {\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(error => {\n globalErrorHandler(\n error || new Error('MultiSpanProcessor: forceFlush failed')\n );\n resolve();\n });\n });\n }\n\n onStart(span: Span, context: Context): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n\n onEnding(span: Span): void {\n for (const spanProcessor of this._spanProcessors) {\n if (spanProcessor.onEnding) {\n spanProcessor.onEnding(span);\n }\n }\n }\n\n onEnd(span: ReadableSpan): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n\n shutdown(): Promise {\n const promises: Promise[] = [];\n\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.shutdown());\n }\n return new Promise((resolve, reject) => {\n Promise.all(promises).then(() => {\n resolve();\n }, reject);\n });\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Event name definitions\nexport const ExceptionEventName = 'exception';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\n\n/** No-op implementation of SpanProcessor */\nexport class NoopSpanProcessor implements SpanProcessor {\n onStart(_span: Span, _context: Context): void {}\n onEnd(_span: ReadableSpan): void {}\n shutdown(): Promise {\n return Promise.resolve();\n }\n forceFlush(): Promise {\n return Promise.resolve();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n Counter,\n Meter,\n SpanContext,\n UpDownCounter,\n} from '@opentelemetry/api';\nimport { SamplingDecision } from './Sampler';\nimport {\n ATTR_OTEL_SPAN_PARENT_ORIGIN,\n ATTR_OTEL_SPAN_SAMPLING_RESULT,\n METRIC_OTEL_SDK_SPAN_LIVE,\n METRIC_OTEL_SDK_SPAN_STARTED,\n} from './semconv';\n\n/**\n * Generates `otel.sdk.span.*` metrics.\n * https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics/#span-metrics\n */\nexport class TracerMetrics {\n private readonly startedSpans: Counter;\n private readonly liveSpans: UpDownCounter;\n\n constructor(meter: Meter) {\n this.startedSpans = meter.createCounter(METRIC_OTEL_SDK_SPAN_STARTED, {\n unit: '{span}',\n description: 'The number of created spans.',\n });\n\n this.liveSpans = meter.createUpDownCounter(METRIC_OTEL_SDK_SPAN_LIVE, {\n unit: '{span}',\n description: 'The number of currently live spans.',\n });\n }\n\n startSpan(\n parentSpanCtx: SpanContext | undefined,\n samplingDecision: SamplingDecision\n ): () => void {\n const samplingDecisionStr = samplingDecisionToString(samplingDecision);\n this.startedSpans.add(1, {\n [ATTR_OTEL_SPAN_PARENT_ORIGIN]: parentOrigin(parentSpanCtx),\n [ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n });\n\n if (samplingDecision === SamplingDecision.NOT_RECORD) {\n return () => {};\n }\n\n const liveSpanAttributes = {\n [ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n };\n this.liveSpans.add(1, liveSpanAttributes);\n return () => {\n this.liveSpans.add(-1, liveSpanAttributes);\n };\n }\n}\n\nfunction parentOrigin(parentSpanContext: SpanContext | undefined): string {\n if (!parentSpanContext) {\n return 'none';\n }\n if (parentSpanContext.isRemote) {\n return 'remote';\n }\n return 'local';\n}\n\nfunction samplingDecisionToString(decision: SamplingDecision): string {\n switch (decision) {\n case SamplingDecision.RECORD_AND_SAMPLED:\n return 'RECORD_AND_SAMPLE';\n case SamplingDecision.RECORD:\n return 'RECORD_ONLY';\n case SamplingDecision.NOT_RECORD:\n return 'DROP';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n Link,\n Attributes,\n SpanKind,\n TraceState,\n} from '@opentelemetry/api';\n\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n\n/**\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of Attributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Determines whether the span has a parent span, and if so, [whether it is a remote parent](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin' as const;\n\n/**\n * The result value of the sampler for this span\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SPAN_SAMPLING_RESULT =\n 'otel.span.sampling_result' as const;\n\n/**\n * The number of created spans with `recording=true` for which the end operation has not been called yet.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live' as const;\n\n/**\n * The number of created spans.\n *\n * @note Implementations **MUST** record this metric for all spans, even for non-recording ones.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started' as const;\n","/** If this attribute is true, it means that the parent is a remote span. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE = 'sentry.parentIsRemote';\n\n// These are not standardized yet, but used by the graphql instrumentation\nexport const SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION = 'sentry.graphql.operation';\n","import type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\n\n/**\n * Get the parent span id from a span.\n * In OTel v1, the parent span id is accessed as `parentSpanId`\n * In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n */\nexport function getParentSpanId(span: ReadableSpan): string | undefined {\n if ('parentSpanId' in span) {\n return span.parentSpanId as string | undefined;\n } else if ('parentSpanContext' in span) {\n return (span.parentSpanContext as { spanId?: string } | undefined)?.spanId;\n }\n\n return undefined;\n}\n","import type { SpanKind, SpanStatus } from '@opentelemetry/api';\nimport type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-base';\nimport type { AbstractSpan } from '../types';\nimport { getParentSpanId } from './getParentSpanId';\n\n/**\n * Check if a given span has attributes.\n * This is necessary because the base `Span` type does not have attributes,\n * so in places where we are passed a generic span, we need to check if we want to access them.\n */\nexport function spanHasAttributes(\n span: SpanType,\n): span is SpanType & { attributes: ReadableSpan['attributes'] } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.attributes && typeof castSpan.attributes === 'object';\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasKind(span: SpanType): span is SpanType & { kind: SpanKind } {\n const castSpan = span as ReadableSpan;\n return typeof castSpan.kind === 'number';\n}\n\n/**\n * Check if a given span has a status.\n * This is necessary because the base `Span` type does not have a status,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasStatus(\n span: SpanType,\n): span is SpanType & { status: SpanStatus } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.status;\n}\n\n/**\n * Check if a given span has a name.\n * This is necessary because the base `Span` type does not have a name,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasName(span: SpanType): span is SpanType & { name: string } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.name;\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasParentId(\n span: SpanType,\n): span is SpanType & { parentSpanId: string } {\n const castSpan = span as ReadableSpan;\n return !!getParentSpanId(castSpan);\n}\n\n/**\n * Check if a given span has events.\n * This is necessary because the base `Span` type does not have events,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasEvents(\n span: SpanType,\n): span is SpanType & { events: TimedEvent[] } {\n const castSpan = span as ReadableSpan;\n return Array.isArray(castSpan.events);\n}\n","import type { Span } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { SanitizedRequestData } from '@sentry/core';\nimport { getSanitizedUrlString, parseUrl } from '@sentry/core';\nimport { spanHasAttributes } from './spanTypes';\n\n/**\n * Get sanitizied request data from an OTEL span.\n */\nexport function getRequestSpanData(span: Span | ReadableSpan): Partial {\n // The base `Span` type has no `attributes`, so we need to guard here against that\n if (!spanHasAttributes(span)) {\n return {};\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeUrlAttribute = (span.attributes[ATTR_URL_FULL] || span.attributes[SEMATTRS_HTTP_URL]) as\n | string\n | undefined;\n\n const data: Partial = {\n url: maybeUrlAttribute,\n // eslint-disable-next-line deprecation/deprecation\n 'http.method': (span.attributes[ATTR_HTTP_REQUEST_METHOD] || span.attributes[SEMATTRS_HTTP_METHOD]) as\n | string\n | undefined,\n };\n\n // Default to GET if URL is set but method is not\n if (!data['http.method'] && data.url) {\n data['http.method'] = 'GET';\n }\n\n try {\n if (typeof maybeUrlAttribute === 'string') {\n const url = parseUrl(maybeUrlAttribute);\n\n data.url = getSanitizedUrlString(url);\n\n if (url.search) {\n data['http.query'] = url.search;\n }\n if (url.hash) {\n data['http.fragment'] = url.hash;\n }\n }\n } catch {\n // ignore\n }\n\n return data;\n}\n","import type { Tracer } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\nimport type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport type { Client } from '@sentry/core';\nimport { SDK_VERSION } from '@sentry/core';\nimport type { OpenTelemetryClient as OpenTelemetryClientInterface } from '../types';\n\n// Typescript complains if we do not use `...args: any[]` for the mixin, with:\n// A mixin class must have a constructor with a single rest parameter of type 'any[]'.ts(2545)\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Wrap an Client class with things we need for OpenTelemetry support.\n * Make sure that the Client class passed in is non-abstract!\n *\n * Usage:\n * const OpenTelemetryClient = getWrappedClientClass(NodeClient);\n * const client = new OpenTelemetryClient(options);\n */\nexport function wrapClientClass<\n ClassConstructor extends new (...args: any[]) => Client,\n WrappedClassConstructor extends new (...args: any[]) => Client & OpenTelemetryClientInterface,\n>(ClientClass: ClassConstructor): WrappedClassConstructor {\n // @ts-expect-error We just assume that this is non-abstract, if you pass in an abstract class this would make it non-abstract\n class OpenTelemetryClient extends ClientClass implements OpenTelemetryClientInterface {\n public traceProvider: BasicTracerProvider | undefined;\n private _tracer: Tracer | undefined;\n\n public constructor(...args: any[]) {\n super(...args);\n }\n\n /** Get the OTEL tracer. */\n public get tracer(): Tracer {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/opentelemetry';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /**\n * @inheritDoc\n */\n public async flush(timeout?: number): Promise {\n const provider = this.traceProvider;\n await provider?.forceFlush();\n return super.flush(timeout);\n }\n }\n\n return OpenTelemetryClient as unknown as WrappedClassConstructor;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import { SpanKind } from '@opentelemetry/api';\nimport type { AbstractSpan } from '../types';\nimport { spanHasKind } from './spanTypes';\n\n/**\n * Get the span kind from a span.\n * For whatever reason, this is not public API on the generic \"Span\" type,\n * so we need to check if we actually have a `SDKTraceBaseSpan` where we can fetch this from.\n * Otherwise, we fall back to `SpanKind.INTERNAL`.\n */\nexport function getSpanKind(span: AbstractSpan): SpanKind {\n if (spanHasKind(span)) {\n return span.kind;\n }\n\n return SpanKind.INTERNAL;\n}\n","import { createContextKey } from '@opentelemetry/api';\n\nexport const SENTRY_TRACE_HEADER = 'sentry-trace';\nexport const SENTRY_BAGGAGE_HEADER = 'baggage';\n\nexport const SENTRY_TRACE_STATE_DSC = 'sentry.dsc';\nexport const SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING = 'sentry.sampled_not_recording';\nexport const SENTRY_TRACE_STATE_URL = 'sentry.url';\nexport const SENTRY_TRACE_STATE_SAMPLE_RAND = 'sentry.sample_rand';\nexport const SENTRY_TRACE_STATE_SAMPLE_RATE = 'sentry.sample_rate';\n\nexport const SENTRY_SCOPES_CONTEXT_KEY = createContextKey('sentry_scopes');\n\nexport const SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_isolation_scope');\n\nexport const SENTRY_FORK_SET_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_scope');\n\nexport const SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_isolation_scope');\n","import type { Context } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { addNonEnumerableProperty } from '@sentry/core';\nimport { SENTRY_SCOPES_CONTEXT_KEY } from '../constants';\nimport type { CurrentScopes } from '../types';\n\nconst SCOPE_CONTEXT_FIELD = '_scopeContext';\n\n/**\n * Try to get the current scopes from the given OTEL context.\n * This requires a Context Manager that was wrapped with getWrappedContextManager.\n */\nexport function getScopesFromContext(context: Context): CurrentScopes | undefined {\n return context.getValue(SENTRY_SCOPES_CONTEXT_KEY) as CurrentScopes | undefined;\n}\n\n/**\n * Set the current scopes on an OTEL context.\n * This will return a forked context with the Propagation Context set.\n */\nexport function setScopesOnContext(context: Context, scopes: CurrentScopes): Context {\n return context.setValue(SENTRY_SCOPES_CONTEXT_KEY, scopes);\n}\n\n/**\n * Set the context on the scope so we can later look it up.\n * We need this to get the context from the scope in the `trace` functions.\n */\nexport function setContextOnScope(scope: Scope, context: Context): void {\n addNonEnumerableProperty(scope, SCOPE_CONTEXT_FIELD, context);\n}\n\n/**\n * Get the context related to a scope.\n */\nexport function getContextFromScope(scope: Scope): Context | undefined {\n return (scope as { [SCOPE_CONTEXT_FIELD]?: Context })[SCOPE_CONTEXT_FIELD];\n}\n","import { ATTR_URL_FULL, SEMATTRS_HTTP_URL } from '@opentelemetry/semantic-conventions';\nimport { getClient, isSentryRequestUrl } from '@sentry/core';\nimport type { AbstractSpan } from '../types';\nimport { spanHasAttributes } from './spanTypes';\n\n/**\n *\n * @param otelSpan Checks whether a given OTEL Span is an http request to sentry.\n * @returns boolean\n */\nexport function isSentryRequestSpan(span: AbstractSpan): boolean {\n if (!spanHasAttributes(span)) {\n return false;\n }\n\n const { attributes } = span;\n\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n\n if (!httpUrl) {\n return false;\n }\n\n return isSentryRequestUrl(httpUrl.toString(), getClient());\n}\n","import type { SpanContext } from '@opentelemetry/api';\nimport { TraceFlags } from '@opentelemetry/api';\nimport { baggageHeaderToDynamicSamplingContext } from '@sentry/core';\nimport { SENTRY_TRACE_STATE_DSC, SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING } from '../constants';\n\n/**\n * OpenTelemetry only knows about SAMPLED or NONE decision,\n * but for us it is important to differentiate between unset and unsampled.\n *\n * Both of these are identified as `traceFlags === TracegFlags.NONE`,\n * but we additionally look at a special trace state to differentiate between them.\n */\nexport function getSamplingDecision(spanContext: SpanContext): boolean | undefined {\n const { traceFlags, traceState } = spanContext;\n\n const sampledNotRecording = traceState ? traceState.get(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING) === '1' : false;\n\n // If trace flag is `SAMPLED`, we interpret this as sampled\n // If it is `NONE`, it could mean either it was sampled to be not recorder, or that it was not sampled at all\n // For us this is an important difference, sow e look at the SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING\n // to identify which it is\n if (traceFlags === TraceFlags.SAMPLED) {\n return true;\n }\n\n if (sampledNotRecording) {\n return false;\n }\n\n // Fall back to DSC as a last resort, that may also contain `sampled`...\n const dscString = traceState ? traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n if (dsc?.sampled === 'true') {\n return true;\n }\n if (dsc?.sampled === 'false') {\n return false;\n }\n\n return undefined;\n}\n","import type { Attributes, AttributeValue } from '@opentelemetry/api';\nimport { SpanKind } from '@opentelemetry/api';\nimport {\n ATTR_DB_SYSTEM_NAME,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_ROUTE,\n ATTR_URL_FULL,\n SEMATTRS_DB_STATEMENT,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_FAAS_TRIGGER,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_TARGET,\n SEMATTRS_HTTP_URL,\n SEMATTRS_MESSAGING_SYSTEM,\n SEMATTRS_RPC_SERVICE,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes, TransactionSource } from '@sentry/core';\nimport {\n getSanitizedUrlString,\n parseUrl,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '../semanticAttributes';\nimport type { AbstractSpan } from '../types';\nimport { getSpanKind } from './getSpanKind';\nimport { spanHasAttributes, spanHasName } from './spanTypes';\n\ninterface SpanDescription {\n op: string | undefined;\n description: string;\n source: TransactionSource;\n data?: Record;\n}\n\n/**\n * Infer the op & description for a set of name, attributes and kind of a span.\n */\nexport function inferSpanData(spanName: string, attributes: SpanAttributes, kind: SpanKind): SpanDescription {\n // if http.method exists, this is an http request span\n // eslint-disable-next-line deprecation/deprecation\n const httpMethod = attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD];\n if (httpMethod) {\n return descriptionForHttpMethod({ attributes, name: spanName, kind }, httpMethod);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const dbSystem = attributes[ATTR_DB_SYSTEM_NAME] || attributes[SEMATTRS_DB_SYSTEM];\n const opIsCache =\n typeof attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] === 'string' &&\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP].startsWith('cache.');\n\n // If db.type exists then this is a database call span\n // If the Redis DB is used as a cache, the span description should not be changed\n if (dbSystem && !opIsCache) {\n return descriptionForDbSystem({ attributes, name: spanName });\n }\n\n const customSourceOrRoute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom' ? 'custom' : 'route';\n\n // If rpc.service exists then this is a rpc call span.\n // eslint-disable-next-line deprecation/deprecation\n const rpcService = attributes[SEMATTRS_RPC_SERVICE];\n if (rpcService) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, 'route'),\n op: 'rpc',\n };\n }\n\n // If messaging.system exists then this is a messaging system span.\n // eslint-disable-next-line deprecation/deprecation\n const messagingSystem = attributes[SEMATTRS_MESSAGING_SYSTEM];\n if (messagingSystem) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: 'message',\n };\n }\n\n // If faas.trigger exists then this is a function as a service span.\n // eslint-disable-next-line deprecation/deprecation\n const faasTrigger = attributes[SEMATTRS_FAAS_TRIGGER];\n if (faasTrigger) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: faasTrigger.toString(),\n };\n }\n\n return { op: undefined, description: spanName, source: 'custom' };\n}\n\n/**\n * Extract better op/description from an otel span.\n *\n * Does not overwrite the span name if the source is already set to custom to ensure\n * that user-updated span names are preserved. In this case, we only adjust the op but\n * leave span description and source unchanged.\n *\n * Based on https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/7422ce2a06337f68a59b552b8c5a2ac125d6bae5/exporter/sentryexporter/sentry_exporter.go#L306\n */\nexport function parseSpanDescription(span: AbstractSpan): SpanDescription {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const name = spanHasName(span) ? span.name : '';\n const kind = getSpanKind(span);\n\n return inferSpanData(name, attributes, kind);\n}\n\nfunction descriptionForDbSystem({ attributes, name }: { attributes: Attributes; name: string }): SpanDescription {\n // if we already have a custom name, we don't overwrite it but only set the op\n const userDefinedName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n if (typeof userDefinedName === 'string') {\n return {\n op: 'db',\n description: userDefinedName,\n source: (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource) || 'custom',\n };\n }\n\n // if we already have the source set to custom, we don't overwrite the span description but only set the op\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom') {\n return { op: 'db', description: name, source: 'custom' };\n }\n\n // Use DB statement (Ex \"SELECT * FROM table\") if possible as description.\n // eslint-disable-next-line deprecation/deprecation\n const statement = attributes[SEMATTRS_DB_STATEMENT];\n\n const description = statement ? statement.toString() : name;\n\n return { op: 'db', description, source: 'task' };\n}\n\n/** Only exported for tests. */\nexport function descriptionForHttpMethod(\n { name, kind, attributes }: { name: string; attributes: Attributes; kind: SpanKind },\n httpMethod: AttributeValue,\n): SpanDescription {\n const opParts = ['http'];\n\n switch (kind) {\n case SpanKind.CLIENT:\n opParts.push('client');\n break;\n case SpanKind.SERVER:\n opParts.push('server');\n break;\n }\n\n // Spans for HTTP requests we have determined to be prefetch requests will have a `.prefetch` postfix in the op\n if (attributes['sentry.http.prefetch']) {\n opParts.push('prefetch');\n }\n\n const { urlPath, url, query, fragment, hasRoute } = getSanitizedUrl(attributes, kind);\n\n if (!urlPath) {\n return { ...getUserUpdatedNameAndSource(name, attributes), op: opParts.join('.') };\n }\n\n const graphqlOperationsAttribute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION];\n\n // Ex. GET /api/users\n const baseDescription = `${httpMethod} ${urlPath}`;\n\n // When the http span has a graphql operation, append it to the description\n // We add these in the graphqlIntegration\n const inferredDescription = graphqlOperationsAttribute\n ? `${baseDescription} (${getGraphqlOperationNamesFromAttribute(graphqlOperationsAttribute)})`\n : baseDescription;\n\n // If `httpPath` is a root path, then we can categorize the transaction source as route.\n const inferredSource: TransactionSource = hasRoute || urlPath === '/' ? 'route' : 'url';\n\n const data: Record = {};\n\n if (url) {\n data.url = url;\n }\n if (query) {\n data['http.query'] = query;\n }\n if (fragment) {\n data['http.fragment'] = fragment;\n }\n\n // If the span kind is neither client nor server, we use the original name\n // this infers that somebody manually started this span, in which case we don't want to overwrite the name\n const isClientOrServerKind = kind === SpanKind.CLIENT || kind === SpanKind.SERVER;\n\n // If the span is an auto-span (=it comes from one of our instrumentations),\n // we always want to infer the name\n // this is necessary because some of the auto-instrumentation we use uses kind=INTERNAL\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] || 'manual';\n const isManualSpan = !`${origin}`.startsWith('auto');\n\n // If users (or in very rare occasions we) set the source to custom, we don't overwrite the name\n const alreadyHasCustomSource = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom';\n const customSpanName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n const useInferredDescription =\n !alreadyHasCustomSource && customSpanName == null && (isClientOrServerKind || !isManualSpan);\n\n const { description, source } = useInferredDescription\n ? { description: inferredDescription, source: inferredSource }\n : getUserUpdatedNameAndSource(name, attributes);\n\n return {\n op: opParts.join('.'),\n description,\n source,\n data,\n };\n}\n\nfunction getGraphqlOperationNamesFromAttribute(attr: AttributeValue): string {\n if (Array.isArray(attr)) {\n // oxlint-disable-next-line typescript/require-array-sort-compare\n const sorted = attr.slice().sort();\n\n // Up to 5 items, we just add all of them\n if (sorted.length <= 5) {\n return sorted.join(', ');\n } else {\n // Else, we add the first 5 and the diff of other operations\n return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n }\n }\n\n return `${attr}`;\n}\n\n/** Exported for tests only */\nexport function getSanitizedUrl(\n attributes: Attributes,\n kind: SpanKind,\n): {\n url: string | undefined;\n urlPath: string | undefined;\n query: string | undefined;\n fragment: string | undefined;\n hasRoute: boolean;\n} {\n // This is the relative path of the URL, e.g. /sub\n // eslint-disable-next-line deprecation/deprecation\n const httpTarget = attributes[SEMATTRS_HTTP_TARGET];\n // This is the full URL, including host & query params etc., e.g. https://example.com/sub?foo=bar\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n // This is the normalized route name - may not always be available!\n const httpRoute = attributes[ATTR_HTTP_ROUTE];\n\n const parsedUrl = typeof httpUrl === 'string' ? parseUrl(httpUrl) : undefined;\n const url = parsedUrl ? getSanitizedUrlString(parsedUrl) : undefined;\n const query = parsedUrl?.search || undefined;\n const fragment = parsedUrl?.hash || undefined;\n\n if (typeof httpRoute === 'string') {\n return { urlPath: httpRoute, url, query, fragment, hasRoute: true };\n }\n\n if (kind === SpanKind.SERVER && typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n if (parsedUrl) {\n return { urlPath: url, url, query, fragment, hasRoute: false };\n }\n\n // fall back to target even for client spans, if no URL is present\n if (typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n return { urlPath: undefined, url, query, fragment, hasRoute: false };\n}\n\n/**\n * Because Otel instrumentation sometimes mutates span names via `span.updateName`, the only way\n * to ensure that a user-set span name is preserved is to store it as a tmp attribute on the span.\n * We delete this attribute once we're done with it when preparing the event envelope.\n *\n * This temp attribute always takes precedence over the original name.\n *\n * We also need to take care of setting the correct source. Users can always update the source\n * after updating the name, so we need to respect that.\n *\n * @internal exported only for testing\n */\nexport function getUserUpdatedNameAndSource(\n originalName: string,\n attributes: Attributes,\n fallbackSource: TransactionSource = 'custom',\n): {\n description: string;\n source: TransactionSource;\n} {\n const source = (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource) || fallbackSource;\n const description = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n if (description && typeof description === 'string') {\n return {\n description,\n source,\n };\n }\n\n return { description: originalName, source };\n}\n","import type { Client } from '@sentry/core';\nimport { hasSpansEnabled, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, spanToJSON } from '@sentry/core';\nimport { getSamplingDecision } from './getSamplingDecision';\nimport { parseSpanDescription } from './parseSpanDescription';\nimport { spanHasName } from './spanTypes';\n\n/**\n * Setup a DSC handler on the passed client,\n * ensuring that the transaction name is inferred from the span correctly.\n */\nexport function enhanceDscWithOpenTelemetryRootSpanName(client: Client): void {\n client.on('createDsc', (dsc, rootSpan) => {\n if (!rootSpan) {\n return;\n }\n\n // We want to overwrite the transaction on the DSC that is created by default in core\n // The reason for this is that we want to infer the span name, not use the initial one\n // Otherwise, we'll get names like \"GET\" instead of e.g. \"GET /foo\"\n // `parseSpanDescription` takes the attributes of the span into account for the name\n // This mutates the passed-in DSC\n\n const jsonSpan = spanToJSON(rootSpan);\n const attributes = jsonSpan.data;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n const { description } = spanHasName(rootSpan) ? parseSpanDescription(rootSpan) : { description: undefined };\n if (source !== 'url' && description) {\n dsc.transaction = description;\n }\n\n // Also ensure sampling decision is correctly inferred\n // In core, we use `spanIsSampled`, which just looks at the trace flags\n // but in OTEL, we use a slightly more complex logic to be able to differntiate between unsampled and deferred sampling\n if (hasSpansEnabled()) {\n const sampled = getSamplingDecision(rootSpan.spanContext());\n dsc.sampled = sampled == undefined ? undefined : String(sampled);\n }\n });\n}\n","import type { Span } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n return trace.getActiveSpan();\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { TraceState } from '@opentelemetry/core';\nimport type { DynamicSamplingContext } from '@sentry/core';\nimport { dynamicSamplingContextToSentryBaggageHeader } from '@sentry/core';\nimport { SENTRY_TRACE_STATE_DSC, SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING } from '../constants';\n\n/**\n * Generate a TraceState for the given data.\n */\nexport function makeTraceState({\n dsc,\n sampled,\n}: {\n dsc?: Partial;\n sampled?: boolean;\n}): TraceState {\n // We store the DSC as OTEL trace state on the span context\n const dscString = dsc ? dynamicSamplingContextToSentryBaggageHeader(dsc) : undefined;\n\n const traceStateBase = new TraceState();\n\n const traceStateWithDsc = dscString ? traceStateBase.set(SENTRY_TRACE_STATE_DSC, dscString) : traceStateBase;\n\n // We also specifically want to store if this is sampled to be not recording,\n // or unsampled (=could be either sampled or not)\n return sampled === false ? traceStateWithDsc.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') : traceStateWithDsc;\n}\n","type OpenTelemetryElement = 'SentrySpanProcessor' | 'SentryContextManager' | 'SentryPropagator' | 'SentrySampler';\n\nconst setupElements = new Set();\n\n/** Get all the OpenTelemetry elements that have been set up. */\nexport function openTelemetrySetupCheck(): OpenTelemetryElement[] {\n return Array.from(setupElements);\n}\n\n/** Mark an OpenTelemetry element as setup. */\nexport function setIsSetup(element: OpenTelemetryElement): void {\n setupElements.add(element);\n}\n\n/** Only exported for tests. */\nexport function clearOpenTelemetrySetupCheck(): void {\n setupElements.clear();\n}\n","import type { Baggage, Context, Span, SpanContext, TextMapGetter, TextMapSetter } from '@opentelemetry/api';\nimport { context, INVALID_TRACEID, propagation, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed, W3CBaggagePropagator } from '@opentelemetry/core';\nimport { ATTR_URL_FULL, SEMATTRS_HTTP_URL } from '@opentelemetry/semantic-conventions';\nimport type { Client, continueTrace, DynamicSamplingContext, Scope } from '@sentry/core';\nimport {\n baggageHeaderToDynamicSamplingContext,\n debug,\n generateSentryTraceHeader,\n generateTraceparentHeader,\n getClient,\n getCurrentScope,\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n getIsolationScope,\n LRUMap,\n parseBaggageHeader,\n propagationContextFromHeaders,\n SENTRY_BAGGAGE_KEY_PREFIX,\n shouldContinueTrace,\n shouldPropagateTraceForUrl,\n spanToJSON,\n} from '@sentry/core';\nimport { SENTRY_BAGGAGE_HEADER, SENTRY_TRACE_HEADER, SENTRY_TRACE_STATE_URL } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { getScopesFromContext, setScopesOnContext } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { makeTraceState } from './utils/makeTraceState';\nimport { setIsSetup } from './utils/setupCheck';\n\n/**\n * Injects and extracts `sentry-trace` and `baggage` headers from carriers.\n */\nexport class SentryPropagator extends W3CBaggagePropagator {\n /** A map of URLs that have already been checked for if they match tracePropagationTargets. */\n private _urlMatchesTargetsMap: LRUMap;\n\n public constructor() {\n super();\n setIsSetup('SentryPropagator');\n\n // We're caching results so we don't have to recompute regexp every time we create a request.\n this._urlMatchesTargetsMap = new LRUMap(100);\n }\n\n /**\n * @inheritDoc\n */\n public inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n if (isTracingSuppressed(context)) {\n DEBUG_BUILD && debug.log('[Tracing] Not injecting trace data for url because tracing is suppressed.');\n return;\n }\n\n const activeSpan = trace.getSpan(context);\n const url = activeSpan && getCurrentURL(activeSpan);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n if (!shouldPropagateTraceForUrl(url, tracePropagationTargets, this._urlMatchesTargetsMap)) {\n DEBUG_BUILD &&\n debug.log('[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:', url);\n return;\n }\n\n const existingBaggageHeader = getExistingBaggage(carrier);\n const existingSentryTraceHeader = getExistingSentryTrace(carrier);\n\n let baggage = propagation.getBaggage(context) || propagation.createBaggage({});\n\n const { dynamicSamplingContext, traceId, spanId, sampled } = getInjectionData(context);\n\n if (existingBaggageHeader) {\n const baggageEntries = parseBaggageHeader(existingBaggageHeader);\n\n if (baggageEntries) {\n Object.entries(baggageEntries).forEach(([key, value]) => {\n if (!existingSentryTraceHeader && key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n // Edge case: A baggage header with sentry- keys was added previously but no\n // sentry-trace header. In this case we remove the old sentry-keys and add new\n // ones below.\n return;\n }\n baggage = baggage.setEntry(key, { value });\n });\n }\n }\n\n if (!existingSentryTraceHeader && dynamicSamplingContext) {\n baggage = Object.entries(dynamicSamplingContext).reduce((b, [dscKey, dscValue]) => {\n if (dscValue) {\n return b.setEntry(`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`, { value: dscValue });\n }\n return b;\n }, baggage);\n }\n\n // We also want to avoid setting the default OTEL trace ID, if we get that for whatever reason\n if (!existingSentryTraceHeader && traceId && traceId !== INVALID_TRACEID) {\n setter.set(carrier, SENTRY_TRACE_HEADER, generateSentryTraceHeader(traceId, spanId, sampled));\n\n if (propagateTraceparent) {\n setter.set(carrier, 'traceparent', generateTraceparentHeader(traceId, spanId, sampled));\n }\n }\n\n super.inject(propagation.setBaggage(context, baggage), carrier, setter);\n }\n\n /**\n * @inheritDoc\n */\n public extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const maybeSentryTraceHeader: string | string[] | undefined = getter.get(carrier, SENTRY_TRACE_HEADER);\n const baggage = getter.get(carrier, SENTRY_BAGGAGE_HEADER);\n\n const sentryTrace = maybeSentryTraceHeader\n ? Array.isArray(maybeSentryTraceHeader)\n ? maybeSentryTraceHeader[0]\n : maybeSentryTraceHeader\n : undefined;\n\n // Add remote parent span context\n // If there is no incoming trace, this will return the context as-is\n return ensureScopesOnContext(getContextWithRemoteActiveSpan(context, { sentryTrace, baggage }));\n }\n\n /**\n * @inheritDoc\n */\n public fields(): string[] {\n return [SENTRY_TRACE_HEADER, SENTRY_BAGGAGE_HEADER, 'traceparent'];\n }\n}\n\n// Re-exported from @sentry/core for backwards compatibility\nexport { shouldPropagateTraceForUrl } from '@sentry/core';\n\n/**\n * Get propagation injection data for the given context.\n * The additional options can be passed to override the scope and client that is otherwise derived from the context.\n */\nexport function getInjectionData(\n context: Context,\n options: { scope?: Scope; client?: Client } = {},\n): {\n dynamicSamplingContext: Partial | undefined;\n traceId: string | undefined;\n spanId: string | undefined;\n sampled: boolean | undefined;\n} {\n const span = trace.getSpan(context);\n\n // If we have a remote span, the spanId should be considered as the parentSpanId, not spanId itself\n // Instead, we use a virtual (generated) spanId for propagation\n if (span?.spanContext().isRemote) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: undefined,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // If we have a local span, we just use this\n if (span) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: spanContext.spanId,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // Else we try to use the propagation context from the scope\n // The only scenario where this should happen is when we neither have a span, nor an incoming trace\n const scope = options.scope || getScopesFromContext(context)?.scope || getCurrentScope();\n const client = options.client || getClient();\n\n const propagationContext = scope.getPropagationContext();\n const dynamicSamplingContext = client ? getDynamicSamplingContextFromScope(client, scope) : undefined;\n return {\n dynamicSamplingContext,\n traceId: propagationContext.traceId,\n spanId: propagationContext.propagationSpanId,\n sampled: propagationContext.sampled,\n };\n}\n\nfunction getContextWithRemoteActiveSpan(\n ctx: Context,\n { sentryTrace, baggage }: Parameters[0],\n): Context {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n\n const { traceId, parentSpanId, sampled, dsc } = propagationContext;\n\n const client = getClient();\n const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n\n // We only want to set the virtual span if we are continuing a concrete trace\n // Otherwise, we ignore the incoming trace here, e.g. if we have no trace headers\n if (!parentSpanId || (client && !shouldContinueTrace(client, incomingDsc?.org_id))) {\n return ctx;\n }\n\n const spanContext = generateRemoteSpanContext({\n traceId,\n spanId: parentSpanId,\n sampled,\n dsc,\n });\n\n return trace.setSpanContext(ctx, spanContext);\n}\n\n/**\n * Takes trace strings and propagates them as a remote active span.\n * This should be used in addition to `continueTrace` in OTEL-powered environments.\n */\nexport function continueTraceAsRemoteSpan(\n ctx: Context,\n options: Parameters[0],\n callback: () => T,\n): T {\n const ctxWithSpanContext = ensureScopesOnContext(getContextWithRemoteActiveSpan(ctx, options));\n\n return context.with(ctxWithSpanContext, callback);\n}\n\nfunction ensureScopesOnContext(ctx: Context): Context {\n // If there are no scopes yet on the context, ensure we have them\n const scopes = getScopesFromContext(ctx);\n const newScopes = {\n // If we have no scope here, this is most likely either the root context or a context manually derived from it\n // In this case, we want to fork the current scope, to ensure we do not pollute the root scope\n scope: scopes ? scopes.scope : getCurrentScope().clone(),\n isolationScope: scopes ? scopes.isolationScope : getIsolationScope(),\n };\n\n return setScopesOnContext(ctx, newScopes);\n}\n\n/** Try to get the existing baggage header so we can merge this in. */\nfunction getExistingBaggage(carrier: unknown): string | undefined {\n try {\n const baggage = (carrier as Record)[SENTRY_BAGGAGE_HEADER];\n return Array.isArray(baggage) ? baggage.join(',') : baggage;\n } catch {\n return undefined;\n }\n}\n\nfunction getExistingSentryTrace(carrier: unknown): string | string[] | undefined {\n try {\n return (carrier as Record)[SENTRY_TRACE_HEADER];\n } catch {\n return undefined;\n }\n}\n\n/**\n * It is pretty tricky to get access to the outgoing request URL of a request in the propagator.\n * As we only have access to the context of the span to be sent and the carrier (=headers),\n * but the span may be unsampled and thus have no attributes.\n *\n * So we use the following logic:\n * 1. If we have an active span, we check if it has a URL attribute.\n * 2. Else, if the active span has no URL attribute (e.g. it is unsampled), we check a special trace state (which we set in our sampler).\n */\nfunction getCurrentURL(span: Span): string | undefined {\n const spanData = spanToJSON(span).data;\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const urlAttribute = spanData[SEMATTRS_HTTP_URL] || spanData[ATTR_URL_FULL];\n if (typeof urlAttribute === 'string') {\n return urlAttribute;\n }\n\n // Also look at the traceState, which we may set in the sampler even for unsampled spans\n const urlTraceState = span.spanContext().traceState?.get(SENTRY_TRACE_STATE_URL);\n if (urlTraceState) {\n return urlTraceState;\n }\n\n return undefined;\n}\n\nfunction generateRemoteSpanContext({\n spanId,\n traceId,\n sampled,\n dsc,\n}: {\n spanId: string;\n traceId: string;\n sampled: boolean | undefined;\n dsc?: Partial;\n}): SpanContext {\n // We store the DSC as OTEL trace state on the span context\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanContext: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n return spanContext;\n}\n","import type { Context, Span, SpanContext, SpanOptions, TimeInput, Tracer } from '@opentelemetry/api';\nimport { context, SpanStatusCode, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed, suppressTracing } from '@opentelemetry/core';\nimport type {\n Client,\n continueTrace as baseContinueTrace,\n DynamicSamplingContext,\n Scope,\n Span as SentrySpan,\n TraceContext,\n} from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n generateSpanId,\n generateTraceId,\n getClient,\n getCurrentScope,\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n getRootSpan,\n getTraceContextFromScope,\n handleCallbackErrors,\n hasSpansEnabled,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n spanToJSON,\n spanToTraceContext,\n} from '@sentry/core';\nimport { continueTraceAsRemoteSpan } from './propagator';\nimport type { OpenTelemetryClient, OpenTelemetrySpanContext } from './types';\nimport { getContextFromScope } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { makeTraceState } from './utils/makeTraceState';\n\n/**\n * Internal helper for starting spans and manual spans. See {@link startSpan} and {@link startSpanManual} for the public APIs.\n * @param options - The span context options\n * @param callback - The callback to execute with the span\n * @param autoEnd - Whether to automatically end the span after the callback completes\n */\nfunction _startSpan(options: OpenTelemetrySpanContext, callback: (span: Span) => T, autoEnd: boolean): T {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n const ctx = shouldSkipSpan ? suppressTracing(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n // If spans are not enabled, ensure we suppress tracing for the span creation\n // but preserve the original context for the callback execution\n // This ensures that we don't create spans when tracing is disabled which\n // would otherwise be a problem for users that don't enable tracing but use\n // custom OpenTelemetry setups.\n if (!hasSpansEnabled()) {\n const suppressedCtx = isTracingSuppressed(ctx) ? ctx : suppressTracing(ctx);\n\n return context.with(suppressedCtx, () => {\n return tracer.startActiveSpan(name, spanOptions, suppressedCtx, span => {\n patchSpanEnd(span);\n // Restore the original unsuppressed context for the callback execution\n // so that custom OpenTelemetry spans maintain the correct context.\n // We use activeCtx (not ctx) because ctx may be suppressed when onlyIfParent is true\n // and no parent span exists. Using activeCtx ensures custom OTel spans are never\n // inadvertently suppressed.\n return context.with(activeCtx, () => {\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n });\n }\n\n return tracer.startActiveSpan(name, spanOptions, ctx, span => {\n patchSpanEnd(span);\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpan(options: OpenTelemetrySpanContext, callback: (span: Span) => T): T {\n return _startSpan(options, callback, true);\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` or the `finish` function passed to the callback manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpanManual(\n options: OpenTelemetrySpanContext,\n callback: (span: Span, finish: () => void) => T,\n): T {\n return _startSpan(options, span => callback(span, () => span.end()), false);\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startInactiveSpan(options: OpenTelemetrySpanContext): Span {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n let ctx = shouldSkipSpan ? suppressTracing(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n if (!hasSpansEnabled()) {\n ctx = isTracingSuppressed(ctx) ? ctx : suppressTracing(ctx);\n }\n\n const span = tracer.startSpan(name, spanOptions, ctx);\n patchSpanEnd(span);\n return span;\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will be root spans.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T {\n const newContextWithActiveSpan = span ? trace.setSpan(context.active(), span) : trace.deleteSpan(context.active());\n return context.with(newContextWithActiveSpan, () => callback(getCurrentScope()));\n}\n\nfunction getTracer(): Tracer {\n const client = getClient();\n return client?.tracer || trace.getTracer('@sentry/opentelemetry', SDK_VERSION);\n}\n\nfunction getSpanOptions(options: OpenTelemetrySpanContext): SpanOptions {\n const { startTime, attributes, kind, op, links } = options;\n\n // OTEL expects timestamps in ms, not seconds\n const fixedStartTime = typeof startTime === 'number' ? ensureTimestampInMilliseconds(startTime) : startTime;\n\n return {\n attributes: op\n ? {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...attributes,\n }\n : attributes,\n kind,\n links,\n startTime: fixedStartTime,\n };\n}\n\nfunction ensureTimestampInMilliseconds(timestamp: number): number {\n const isMs = timestamp < 9999999999;\n return isMs ? timestamp * 1000 : timestamp;\n}\n\n/**\n * Wraps the span's `end()` method so that numeric timestamps passed in seconds\n * are converted to milliseconds before reaching OTel's native `Span.end()`.\n */\nfunction patchSpanEnd(span: Span): void {\n const originalEnd = span.end.bind(span);\n span.end = (endTime?: TimeInput) => {\n return originalEnd(typeof endTime === 'number' ? ensureTimestampInMilliseconds(endTime) : endTime);\n };\n}\n\nfunction getContext(scope: Scope | undefined, forceTransaction: boolean | undefined): Context {\n const ctx = getContextForScope(scope);\n const parentSpan = trace.getSpan(ctx);\n\n // In the case that we have no parent span, we start a new trace\n // Note that if we continue a trace, we'll always have a remote parent span here anyhow\n if (!parentSpan) {\n return ctx;\n }\n\n // If we don't want to force a transaction, and we have a parent span, all good, we just return as-is!\n if (!forceTransaction) {\n return ctx;\n }\n\n // Else, if we do have a parent span but want to force a transaction, we have to simulate a \"root\" context\n\n // Else, we need to do two things:\n // 1. Unset the parent span from the context, so we'll create a new root span\n // 2. Ensure the propagation context is correct, so we'll continue from the parent span\n const ctxWithoutSpan = trace.deleteSpan(ctx);\n\n const { spanId, traceId } = parentSpan.spanContext();\n const sampled = getSamplingDecision(parentSpan.spanContext());\n\n // In this case, when we are forcing a transaction, we want to treat this like continuing an incoming trace\n // so we set the traceState according to the root span\n const rootSpan = getRootSpan(parentSpan);\n const dsc = getDynamicSamplingContextFromSpan(rootSpan);\n\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanOptions: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n const ctxWithSpanContext = trace.setSpanContext(ctxWithoutSpan, spanOptions);\n\n return ctxWithSpanContext;\n}\n\nfunction getContextForScope(scope?: Scope): Context {\n if (scope) {\n const ctx = getContextFromScope(scope);\n if (ctx) {\n return ctx;\n }\n }\n\n return context.active();\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * This is a custom version of `continueTrace` that is used in OTEL-powered environments.\n * It propagates the trace as a remote span, in addition to setting it on the propagation context.\n */\nexport function continueTrace(options: Parameters[0], callback: () => T): T {\n return continueTraceAsRemoteSpan(context.active(), options, callback);\n}\n\n/**\n * Start a new trace with a unique traceId, ensuring all spans created within the callback\n * share the same traceId.\n *\n * This is a custom version of `startNewTrace` for OTEL-powered environments.\n * It injects the new traceId as a remote span context into the OTEL context, so that\n * `startInactiveSpan` and `startSpan` pick it up correctly.\n */\nexport function startNewTrace(callback: () => T): T {\n const traceId = generateTraceId();\n const spanId = generateSpanId();\n\n const spanContext: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: TraceFlags.NONE,\n };\n\n const ctxWithTrace = trace.setSpanContext(context.active(), spanContext);\n\n return context.with(ctxWithTrace, () => {\n getCurrentScope().setPropagationContext({\n traceId,\n sampleRand: _INTERNAL_safeMathRandom(),\n });\n return callback();\n });\n}\n\n/**\n * Get the trace context for a given scope.\n * We have a custom implementation here because we need an OTEL-specific way to get the span from a scope.\n */\nexport function getTraceContextForScope(\n client: Client,\n scope: Scope,\n): [dynamicSamplingContext: Partial, traceContext: TraceContext] {\n const ctx = getContextFromScope(scope);\n const span = ctx && trace.getSpan(ctx);\n\n const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n\n const dynamicSamplingContext = span\n ? getDynamicSamplingContextFromSpan(span)\n : getDynamicSamplingContextFromScope(client, scope);\n return [dynamicSamplingContext, traceContext];\n}\n\nfunction getActiveSpanWrapper(parentSpan: Span | SentrySpan | undefined | null): (callback: () => T) => T {\n return parentSpan !== undefined\n ? (callback: () => T) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback: () => T) => callback();\n}\n","import { context } from '@opentelemetry/api';\nimport { suppressTracing as suppressTracingImpl } from '@opentelemetry/core';\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nexport function suppressTracing(callback: () => T): T {\n const ctx = suppressTracingImpl(context.active());\n return context.with(ctx, callback);\n}\n","import type { Client } from '@sentry/core';\nimport { getDynamicSamplingContextFromSpan, getRootSpan, spanToTraceContext } from '@sentry/core';\nimport { getActiveSpan } from './utils/getActiveSpan';\n\n/** Ensure the `trace` context is set on all events. */\nexport function setupEventContextTrace(client: Client): void {\n client.on('preprocessEvent', event => {\n const span = getActiveSpan();\n // For transaction events, this is handled separately\n // Because the active span may not be the span that is actually the transaction event\n if (!span || event.type === 'transaction') {\n return;\n }\n\n // If event has already set `trace` context, use that one.\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n const rootSpan = getRootSpan(span);\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(rootSpan),\n ...event.sdkProcessingMetadata,\n };\n\n return event;\n });\n}\n","import * as api from '@opentelemetry/api';\nimport type { Client, Scope, SerializedTraceData, Span } from '@sentry/core';\nimport {\n dynamicSamplingContextToSentryBaggageHeader,\n generateSentryTraceHeader,\n generateTraceparentHeader,\n getCapturedScopesOnSpan,\n} from '@sentry/core';\nimport { getInjectionData } from '../propagator';\nimport { getContextFromScope } from './contextData';\n\n/**\n * Otel-specific implementation of `getTraceData`.\n * @see `@sentry/core` version of `getTraceData` for more information\n */\nexport function getTraceData({\n span,\n scope,\n client,\n propagateTraceparent,\n}: { span?: Span; scope?: Scope; client?: Client; propagateTraceparent?: boolean } = {}): SerializedTraceData {\n let ctx = (scope && getContextFromScope(scope)) ?? api.context.active();\n\n if (span) {\n const { scope } = getCapturedScopesOnSpan(span);\n // fall back to current context if for whatever reason we can't find the one of the span\n ctx = (scope && getContextFromScope(scope)) || api.trace.setSpan(api.context.active(), span);\n }\n\n const { traceId, spanId, sampled, dynamicSamplingContext } = getInjectionData(ctx, { scope, client });\n\n const traceData: SerializedTraceData = {\n 'sentry-trace': generateSentryTraceHeader(traceId, spanId, sampled),\n baggage: dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext),\n };\n\n if (propagateTraceparent) {\n traceData.traceparent = generateTraceparentHeader(traceId, spanId, sampled);\n }\n\n return traceData;\n}\n","import * as api from '@opentelemetry/api';\nimport type { Scope, withActiveSpan as defaultWithActiveSpan } from '@sentry/core';\nimport { getDefaultCurrentScope, getDefaultIsolationScope, setAsyncContextStrategy } from '@sentry/core';\nimport {\n SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_SCOPE_CONTEXT_KEY,\n} from './constants';\nimport { continueTrace, startInactiveSpan, startNewTrace, startSpan, startSpanManual, withActiveSpan } from './trace';\nimport type { CurrentScopes } from './types';\nimport { getContextFromScope, getScopesFromContext } from './utils/contextData';\nimport { getActiveSpan } from './utils/getActiveSpan';\nimport { getTraceData } from './utils/getTraceData';\nimport { suppressTracing } from './utils/suppressTracing';\n\n/**\n * Sets the async context strategy to use follow the OTEL context under the hood.\n * We handle forking a hub inside of our custom OTEL Context Manager (./otelContextManager.ts)\n */\nexport function setOpenTelemetryContextAsyncContextStrategy(): void {\n function getScopes(): CurrentScopes {\n const ctx = api.context.active();\n const scopes = getScopesFromContext(ctx);\n\n if (scopes) {\n return scopes;\n }\n\n // fallback behavior:\n // if, for whatever reason, we can't find scopes on the context here, we have to fix this somehow\n return {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n function withScope(callback: (scope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n // as by default, we don't want to fork this, unless triggered explicitly by `withScope`\n return api.context.with(ctx, () => {\n return callback(getCurrentScope());\n });\n }\n\n function withSetScope(scope: Scope, callback: (scope: Scope) => T): T {\n const ctx = getContextFromScope(scope) || api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_SET_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which picks up this scope as the current scope\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY, scope), () => {\n return callback(scope);\n });\n }\n\n function withIsolationScope(callback: (isolationScope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY, true), () => {\n return callback(getIsolationScope());\n });\n }\n\n function withSetIsolationScope(isolationScope: Scope, callback: (isolationScope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY, isolationScope), () => {\n return callback(getIsolationScope());\n });\n }\n\n function getCurrentScope(): Scope {\n return getScopes().scope;\n }\n\n function getIsolationScope(): Scope {\n return getScopes().isolationScope;\n }\n\n setAsyncContextStrategy({\n withScope,\n withSetScope,\n withSetIsolationScope,\n withIsolationScope,\n getCurrentScope,\n getIsolationScope,\n startSpan,\n startSpanManual,\n startInactiveSpan,\n getActiveSpan,\n suppressTracing,\n getTraceData,\n continueTrace,\n startNewTrace,\n // The types here don't fully align, because our own `Span` type is narrower\n // than the OTEL one - but this is OK for here, as we now we'll only have OTEL spans passed around\n withActiveSpan: withActiveSpan as typeof defaultWithActiveSpan,\n });\n}\n","import type { AsyncLocalStorage } from 'node:async_hooks';\nimport type { Context, ContextManager } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { getCurrentScope, getIsolationScope } from '@sentry/core';\nimport {\n SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_SCOPE_CONTEXT_KEY,\n SENTRY_SCOPES_CONTEXT_KEY,\n} from './constants';\nimport { getScopesFromContext, setContextOnScope, setScopesOnContext } from './utils/contextData';\nimport { setIsSetup } from './utils/setupCheck';\n\nexport type AsyncLocalStorageLookup = {\n asyncLocalStorage: AsyncLocalStorage;\n contextSymbol: symbol;\n};\n\ntype ExtendedContextManagerInstance = new (\n ...args: unknown[]\n) => ContextManagerInstance & {\n getAsyncLocalStorageLookup(): AsyncLocalStorageLookup;\n};\n\n/**\n * Wrap an OpenTelemetry ContextManager in a way that ensures the context is kept in sync with the Sentry Scope.\n *\n * Usage:\n * import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\n * const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n * const contextManager = new SentryContextManager();\n */\nexport function wrapContextManagerClass(\n ContextManagerClass: new (...args: unknown[]) => ContextManagerInstance,\n): ExtendedContextManagerInstance {\n /**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create new scopes per context, so that the OTEL Context & the Sentry Scope are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\n\n // @ts-expect-error TS does not like this, but we know this is fine\n class SentryContextManager extends ContextManagerClass {\n public constructor(...args: unknown[]) {\n super(...args);\n setIsSetup('SentryContextManager');\n }\n /**\n * Overwrite with() of the original AsyncLocalStorageContextManager\n * to ensure we also create new scopes per context.\n */\n public with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const currentScopes = getScopesFromContext(context);\n const currentScope = currentScopes?.scope || getCurrentScope();\n const currentIsolationScope = currentScopes?.isolationScope || getIsolationScope();\n\n const shouldForkIsolationScope = context.getValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY) === true;\n const scope = context.getValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY) as Scope | undefined;\n const isolationScope = context.getValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY) as Scope | undefined;\n\n const newCurrentScope = scope || currentScope.clone();\n const newIsolationScope =\n isolationScope || (shouldForkIsolationScope ? currentIsolationScope.clone() : currentIsolationScope);\n const scopes = { scope: newCurrentScope, isolationScope: newIsolationScope };\n\n const ctx1 = setScopesOnContext(context, scopes);\n\n // Remove the unneeded values again\n const ctx2 = ctx1\n .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);\n\n setContextOnScope(newCurrentScope, ctx2);\n\n return super.with(ctx2, fn, thisArg, ...args);\n }\n\n /**\n * Gets underlying AsyncLocalStorage and symbol to allow lookup of scope.\n */\n public getAsyncLocalStorageLookup(): AsyncLocalStorageLookup {\n return {\n // @ts-expect-error This is on the base class, but not part of the interface\n asyncLocalStorage: this._asyncLocalStorage,\n contextSymbol: SENTRY_SCOPES_CONTEXT_KEY,\n };\n }\n }\n\n return SentryContextManager as unknown as ExtendedContextManagerInstance;\n}\n","import type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from '../semanticAttributes';\nimport { getParentSpanId } from './getParentSpanId';\n\nexport interface SpanNode {\n id: string;\n span?: ReadableSpan;\n parentNode?: SpanNode | undefined;\n children: SpanNode[];\n}\n\ntype SpanMap = Map;\n\n/**\n * This function runs through a list of OTEL Spans, and wraps them in an `SpanNode`\n * where each node holds a reference to their parent node.\n */\nexport function groupSpansWithParents(spans: ReadableSpan[]): SpanNode[] {\n const nodeMap: SpanMap = new Map();\n\n for (const span of spans) {\n createOrUpdateSpanNodeAndRefs(nodeMap, span);\n }\n\n return Array.from(nodeMap, function ([_id, spanNode]) {\n return spanNode;\n });\n}\n\n/**\n * This returns the _local_ parent ID - `parentId` on the span may point to a remote span.\n */\nexport function getLocalParentId(span: ReadableSpan): string | undefined {\n const parentIsRemote = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE] === true;\n // If the parentId is the trace parent ID, we pretend it's undefined\n // As this means the parent exists somewhere else\n return !parentIsRemote ? getParentSpanId(span) : undefined;\n}\n\nfunction createOrUpdateSpanNodeAndRefs(nodeMap: SpanMap, span: ReadableSpan): void {\n const id = span.spanContext().spanId;\n const parentId = getLocalParentId(span);\n\n if (!parentId) {\n createOrUpdateNode(nodeMap, { id, span, children: [] });\n return;\n }\n\n // Else make sure to create parent node as well\n // Note that the parent may not know it's parent _yet_, this may be updated in a later pass\n const parentNode = createOrGetParentNode(nodeMap, parentId);\n const node = createOrUpdateNode(nodeMap, { id, span, parentNode, children: [] });\n parentNode.children.push(node);\n}\n\nfunction createOrGetParentNode(nodeMap: SpanMap, id: string): SpanNode {\n const existing = nodeMap.get(id);\n\n if (existing) {\n return existing;\n }\n\n return createOrUpdateNode(nodeMap, { id, children: [] });\n}\n\nfunction createOrUpdateNode(nodeMap: SpanMap, spanNode: SpanNode): SpanNode {\n const existing = nodeMap.get(spanNode.id);\n\n // If span is already set, nothing to do here\n if (existing?.span) {\n return existing;\n }\n\n // If it exists but span is not set yet, we update it\n if (existing && !existing.span) {\n existing.span = spanNode.span;\n existing.parentNode = spanNode.parentNode;\n return existing;\n }\n\n // Else, we create a new one...\n nodeMap.set(spanNode.id, spanNode);\n return spanNode;\n}\n","import { SpanStatusCode } from '@opentelemetry/api';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes, SpanStatus } from '@sentry/core';\nimport { getSpanStatusFromHttpCode, SPAN_STATUS_ERROR, SPAN_STATUS_OK } from '@sentry/core';\nimport type { AbstractSpan } from '../types';\nimport { spanHasAttributes, spanHasStatus } from './spanTypes';\n\n// canonicalCodesGrpcMap maps some GRPC codes to Sentry's span statuses. See description in grpc documentation.\nconst canonicalGrpcErrorCodesMap: Record = {\n '1': 'cancelled',\n '2': 'unknown_error',\n '3': 'invalid_argument',\n '4': 'deadline_exceeded',\n '5': 'not_found',\n '6': 'already_exists',\n '7': 'permission_denied',\n '8': 'resource_exhausted',\n '9': 'failed_precondition',\n '10': 'aborted',\n '11': 'out_of_range',\n '12': 'unimplemented',\n '13': 'internal_error',\n '14': 'unavailable',\n '15': 'data_loss',\n '16': 'unauthenticated',\n} as const;\n\nconst isStatusErrorMessageValid = (message: string): boolean => {\n return Object.values(canonicalGrpcErrorCodesMap).includes(message as SpanStatus['message']);\n};\n\n/**\n * Get a Sentry span status from an otel span.\n */\nexport function mapStatus(span: AbstractSpan): SpanStatus {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const status = spanHasStatus(span) ? span.status : undefined;\n\n if (status) {\n // Since span status OK is not set by default, we give it priority: https://opentelemetry.io/docs/concepts/signals/traces/#span-status\n if (status.code === SpanStatusCode.OK) {\n return { code: SPAN_STATUS_OK };\n // If the span is already marked as erroneous we return that exact status\n } else if (status.code === SpanStatusCode.ERROR) {\n if (typeof status.message === 'undefined') {\n const inferredStatus = inferStatusFromAttributes(attributes);\n if (inferredStatus) {\n return inferredStatus;\n }\n }\n\n if (status.message && isStatusErrorMessageValid(status.message)) {\n return { code: SPAN_STATUS_ERROR, message: status.message };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n }\n\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n const inferredStatus = inferStatusFromAttributes(attributes);\n\n if (inferredStatus) {\n return inferredStatus;\n }\n\n // We default to setting the spans status to ok.\n if (status?.code === SpanStatusCode.UNSET) {\n return { code: SPAN_STATUS_OK };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n }\n}\n\nfunction inferStatusFromAttributes(attributes: SpanAttributes): SpanStatus | undefined {\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n\n // eslint-disable-next-line deprecation/deprecation\n const httpCodeAttribute = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE];\n // eslint-disable-next-line deprecation/deprecation\n const grpcCodeAttribute = attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n\n const numberHttpCode =\n typeof httpCodeAttribute === 'number'\n ? httpCodeAttribute\n : typeof httpCodeAttribute === 'string'\n ? parseInt(httpCodeAttribute)\n : undefined;\n\n if (typeof numberHttpCode === 'number') {\n return getSpanStatusFromHttpCode(numberHttpCode);\n }\n\n if (typeof grpcCodeAttribute === 'string') {\n return { code: SPAN_STATUS_ERROR, message: canonicalGrpcErrorCodesMap[grpcCodeAttribute] || 'unknown_error' };\n }\n\n return undefined;\n}\n","/* eslint-disable max-lines */\nimport type { Span } from '@opentelemetry/api';\nimport { SpanKind } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_HTTP_RESPONSE_STATUS_CODE, SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport type {\n SpanAttributes,\n SpanJSON,\n SpanOrigin,\n TraceContext,\n TransactionEvent,\n TransactionSource,\n} from '@sentry/core';\nimport {\n _INTERNAL_safeDateNow,\n captureEvent,\n convertSpanLinksForEnvelope,\n debounce,\n debug,\n getCapturedScopesOnSpan,\n getDynamicSamplingContextFromSpan,\n getStatusMessage,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n spanTimeInputToSeconds,\n timedEventsToMeasurements,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from './semanticAttributes';\nimport { getParentSpanId } from './utils/getParentSpanId';\nimport { getRequestSpanData } from './utils/getRequestSpanData';\nimport type { SpanNode } from './utils/groupSpansWithParents';\nimport { getLocalParentId, groupSpansWithParents } from './utils/groupSpansWithParents';\nimport { mapStatus } from './utils/mapStatus';\nimport { parseSpanDescription } from './utils/parseSpanDescription';\n\ntype SpanNodeCompleted = SpanNode & { span: ReadableSpan };\n\nconst MAX_SPAN_COUNT = 1000;\nconst DEFAULT_TIMEOUT = 300; // 5 min\n\ninterface FinishedSpanBucket {\n timestampInS: number;\n spans: Set;\n}\n\n/**\n * A Sentry-specific exporter that converts OpenTelemetry Spans to Sentry Spans & Transactions.\n */\nexport class SentrySpanExporter {\n /*\n * A quick explanation on the buckets: We do bucketing of finished spans for efficiency. This span exporter is\n * accumulating spans until a root span is encountered and then it flushes all the spans that are descendants of that\n * root span. Because it is totally in the realm of possibilities that root spans are never finished, and we don't\n * want to accumulate spans indefinitely in memory, we need to periodically evacuate spans. Naively we could simply\n * store the spans in an array and each time a new span comes in we could iterate through the entire array and\n * evacuate all spans that have an end-timestamp that is older than our limit. This could get quite expensive because\n * we would have to iterate a potentially large number of spans every time we evacuate. We want to avoid these large\n * bursts of computation.\n *\n * Instead we go for a bucketing approach and put spans into buckets, based on what second\n * (modulo the time limit) the span was put into the exporter. With buckets, when we decide to evacuate, we can\n * iterate through the bucket entries instead, which have an upper bound of items, making the evacuation much more\n * efficient. Cleaning up also becomes much more efficient since it simply involves de-referencing a bucket within the\n * bucket array, and letting garbage collection take care of the rest.\n */\n private _finishedSpanBuckets: (FinishedSpanBucket | undefined)[];\n private _finishedSpanBucketSize: number;\n private _spansToBucketEntry: WeakMap;\n private _lastCleanupTimestampInS: number;\n // Essentially a a set of span ids that are already sent. The values are expiration\n // times in this cache so we don't hold onto them indefinitely.\n private _sentSpans: Map;\n /* Internally, we use a debounced flush to give some wiggle room to the span processor to accumulate more spans. */\n private _debouncedFlush: ReturnType;\n\n public constructor(options?: {\n /** Lower bound of time in seconds until spans that are buffered but have not been sent as part of a transaction get cleared from memory. */\n timeout?: number;\n }) {\n this._finishedSpanBucketSize = options?.timeout || DEFAULT_TIMEOUT;\n this._finishedSpanBuckets = new Array(this._finishedSpanBucketSize).fill(undefined);\n this._lastCleanupTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n this._spansToBucketEntry = new WeakMap();\n this._sentSpans = new Map();\n this._debouncedFlush = debounce(this.flush.bind(this), 1, { maxWait: 100 });\n }\n\n /**\n * Export a single span.\n * This is called by the span processor whenever a span is ended.\n */\n public export(span: ReadableSpan): void {\n const currentTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n\n if (this._lastCleanupTimestampInS !== currentTimestampInS) {\n let droppedSpanCount = 0;\n this._finishedSpanBuckets.forEach((bucket, i) => {\n if (bucket && bucket.timestampInS <= currentTimestampInS - this._finishedSpanBucketSize) {\n droppedSpanCount += bucket.spans.size;\n this._finishedSpanBuckets[i] = undefined;\n }\n });\n if (droppedSpanCount > 0) {\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter dropped ${droppedSpanCount} spans because they were pending for more than ${this._finishedSpanBucketSize} seconds.`,\n );\n }\n this._lastCleanupTimestampInS = currentTimestampInS;\n }\n\n const currentBucketIndex = currentTimestampInS % this._finishedSpanBucketSize;\n const currentBucket = this._finishedSpanBuckets[currentBucketIndex] || {\n timestampInS: currentTimestampInS,\n spans: new Set(),\n };\n this._finishedSpanBuckets[currentBucketIndex] = currentBucket;\n currentBucket.spans.add(span);\n this._spansToBucketEntry.set(span, currentBucket);\n\n // If the span doesn't have a local parent ID (it's a root span), we're gonna flush all the ended spans\n const localParentId = getLocalParentId(span);\n if (!localParentId || this._sentSpans.has(localParentId)) {\n this._debouncedFlush();\n }\n }\n\n /**\n * Try to flush any pending spans immediately.\n * This is called internally by the exporter (via _debouncedFlush),\n * but can also be triggered externally if we force-flush.\n */\n public flush(): void {\n const finishedSpans = this._finishedSpanBuckets.flatMap(bucket => (bucket ? Array.from(bucket.spans) : []));\n\n this._flushSentSpanCache();\n const sentSpans = this._maybeSend(finishedSpans);\n\n const sentSpanCount = sentSpans.size;\n const remainingOpenSpanCount = finishedSpans.length - sentSpanCount;\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter exported ${sentSpanCount} spans, ${remainingOpenSpanCount} spans are waiting for their parent spans to finish`,\n );\n\n const expirationDate = _INTERNAL_safeDateNow() + DEFAULT_TIMEOUT * 1000;\n\n for (const span of sentSpans) {\n this._sentSpans.set(span.spanContext().spanId, expirationDate);\n const bucketEntry = this._spansToBucketEntry.get(span);\n if (bucketEntry) {\n bucketEntry.spans.delete(span);\n }\n }\n // Cancel a pending debounced flush, if there is one\n // This can be relevant if we directly flush, circumventing the debounce\n // in that case, we want to cancel any pending debounced flush\n this._debouncedFlush.cancel();\n }\n\n /**\n * Clear the exporter.\n * This is called when the span processor is shut down.\n */\n public clear(): void {\n this._finishedSpanBuckets = this._finishedSpanBuckets.fill(undefined);\n this._sentSpans.clear();\n this._debouncedFlush.cancel();\n }\n\n /**\n * Send the given spans, but only if they are part of a finished transaction.\n *\n * Returns the sent spans.\n * Spans remain unsent when their parent span is not yet finished.\n * This will happen regularly, as child spans are generally finished before their parents.\n * But it _could_ also happen because, for whatever reason, a parent span was lost.\n * In this case, we'll eventually need to clean this up.\n */\n private _maybeSend(spans: ReadableSpan[]): Set {\n const grouped = groupSpansWithParents(spans);\n const sentSpans = new Set();\n\n const rootNodes = this._getCompletedRootNodes(grouped);\n\n for (const root of rootNodes) {\n const span = root.span;\n sentSpans.add(span);\n const transactionEvent = createTransactionForOtelSpan(span);\n\n // Add an attribute to the transaction event to indicate that this transaction is an orphaned transaction\n if (root.parentNode && this._sentSpans.has(root.parentNode.id)) {\n const traceData = transactionEvent.contexts?.trace?.data;\n if (traceData) {\n traceData['sentry.parent_span_already_sent'] = true;\n }\n }\n\n // We'll recursively add all the child spans to this array\n const spans = transactionEvent.spans || [];\n\n for (const child of root.children) {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n }\n\n // spans.sort() mutates the array, but we do not use this anymore after this point\n // so we can safely mutate it here\n transactionEvent.spans =\n spans.length > MAX_SPAN_COUNT\n ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n : spans;\n\n const measurements = timedEventsToMeasurements(span.events);\n if (measurements) {\n transactionEvent.measurements = measurements;\n }\n\n captureEvent(transactionEvent);\n }\n\n return sentSpans;\n }\n\n /** Remove \"expired\" span id entries from the _sentSpans cache. */\n private _flushSentSpanCache(): void {\n const currentTimestamp = _INTERNAL_safeDateNow();\n // Note, it is safe to delete items from the map as we go: https://stackoverflow.com/a/35943995/90297\n for (const [spanId, expirationTime] of this._sentSpans.entries()) {\n if (expirationTime <= currentTimestamp) {\n this._sentSpans.delete(spanId);\n }\n }\n }\n\n /** Check if a node is a completed root node or a node whose parent has already been sent */\n private _nodeIsCompletedRootNodeOrHasSentParent(node: SpanNode): node is SpanNodeCompleted {\n return !!node.span && (!node.parentNode || this._sentSpans.has(node.parentNode.id));\n }\n\n /** Get all completed root nodes from a list of nodes */\n private _getCompletedRootNodes(nodes: SpanNode[]): SpanNodeCompleted[] {\n // TODO: We should be able to remove the explicit `node is SpanNodeCompleted` type guard\n // once we stop supporting TS < 5.5\n return nodes.filter((node): node is SpanNodeCompleted => this._nodeIsCompletedRootNodeOrHasSentParent(node));\n }\n}\n\nfunction parseSpan(span: ReadableSpan): { op?: string; origin?: SpanOrigin; source?: TransactionSource } {\n const attributes = span.attributes;\n\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined;\n const op = attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource | undefined;\n\n return { origin, op, source };\n}\n\n/** Exported only for tests. */\nexport function createTransactionForOtelSpan(span: ReadableSpan): TransactionEvent {\n const { op, description, data, origin = 'manual', source } = getSpanData(span);\n const capturedSpanScopes = getCapturedScopesOnSpan(span as unknown as Span);\n\n const sampleRate = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] as number | undefined;\n\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: sampleRate,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n ...data,\n ...removeSentryAttributes(span.attributes),\n };\n\n const { links } = span;\n const { traceId: trace_id, spanId: span_id } = span.spanContext();\n\n // If parentSpanIdFromTraceState is defined at all, we want it to take precedence\n // In that case, an empty string should be interpreted as \"no parent span id\",\n // even if `span.parentSpanId` is set\n // this is the case when we are starting a new trace, where we have a virtual span based on the propagationContext\n // We only want to continue the traceId in this case, but ignore the parent span\n const parent_span_id = getParentSpanId(span);\n\n const status = mapStatus(span);\n\n const traceContext: TraceContext = {\n parent_span_id,\n span_id,\n trace_id,\n data: attributes,\n origin,\n op,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n links: convertSpanLinksForEnvelope(links),\n };\n\n const statusCode = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n const responseContext = typeof statusCode === 'number' ? { response: { status_code: statusCode } } : undefined;\n\n const transactionEvent: TransactionEvent = {\n contexts: {\n trace: traceContext,\n otel: {\n resource: span.resource.attributes,\n },\n ...responseContext,\n },\n spans: [],\n start_timestamp: spanTimeInputToSeconds(span.startTime),\n timestamp: spanTimeInputToSeconds(span.endTime),\n transaction: description,\n type: 'transaction',\n sdkProcessingMetadata: {\n capturedSpanScope: capturedSpanScopes.scope,\n capturedSpanIsolationScope: capturedSpanScopes.isolationScope,\n sampleRate,\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span as unknown as Span),\n },\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n return transactionEvent;\n}\n\nfunction createAndFinishSpanForOtelSpan(node: SpanNode, spans: SpanJSON[], sentSpans: Set): void {\n const span = node.span;\n\n if (span) {\n sentSpans.add(span);\n }\n\n const shouldDrop = !span;\n\n // If this span should be dropped, we still want to create spans for the children of this\n if (shouldDrop) {\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n return;\n }\n\n const span_id = span.spanContext().spanId;\n const trace_id = span.spanContext().traceId;\n const parentSpanId = getParentSpanId(span);\n\n const { attributes, startTime, endTime, links } = span;\n\n const { op, description, data, origin = 'manual' } = getSpanData(span);\n const allData = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...removeSentryAttributes(attributes),\n ...data,\n };\n\n const status = mapStatus(span);\n\n const spanJSON: SpanJSON = {\n span_id,\n trace_id,\n data: allData,\n description,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n op,\n origin,\n measurements: timedEventsToMeasurements(span.events),\n links: convertSpanLinksForEnvelope(links),\n };\n\n spans.push(spanJSON);\n\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n}\n\nfunction getSpanData(span: ReadableSpan): {\n data: Record;\n op?: string;\n description: string;\n source?: TransactionSource;\n origin?: SpanOrigin;\n} {\n const { op: definedOp, source: definedSource, origin } = parseSpan(span);\n const { op: inferredOp, description, source: inferredSource, data: inferredData } = parseSpanDescription(span);\n\n const op = definedOp || inferredOp;\n const source = definedSource || inferredSource;\n\n const data = { ...inferredData, ...getData(span) };\n\n return {\n op,\n description,\n source,\n origin,\n data,\n };\n}\n\n/**\n * Remove custom `sentry.` attributes we do not need to send.\n * These are more carrier attributes we use inside of the SDK, we do not need to send them to the API.\n */\nfunction removeSentryAttributes(data: Record): Record {\n const cleanedData = { ...data };\n\n /* eslint-disable @typescript-eslint/no-dynamic-delete */\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n /* eslint-enable @typescript-eslint/no-dynamic-delete */\n\n return cleanedData;\n}\n\nfunction getData(span: ReadableSpan): Record {\n const attributes = span.attributes;\n const data: Record = {};\n\n if (span.kind !== SpanKind.INTERNAL) {\n data['otel.kind'] = SpanKind[span.kind];\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeHttpStatusCodeAttribute = attributes[SEMATTRS_HTTP_STATUS_CODE];\n if (maybeHttpStatusCodeAttribute) {\n data[ATTR_HTTP_RESPONSE_STATUS_CODE] = maybeHttpStatusCodeAttribute as string;\n }\n\n const requestData = getRequestSpanData(span);\n\n if (requestData.url) {\n data.url = requestData.url;\n }\n\n if (requestData['http.query']) {\n data['http.query'] = requestData['http.query'].slice(1);\n }\n if (requestData['http.fragment']) {\n data['http.fragment'] = requestData['http.fragment'].slice(1);\n }\n\n return data;\n}\n","import type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT, trace } from '@opentelemetry/api';\nimport type { ReadableSpan, Span, SpanProcessor as SpanProcessorInterface } from '@opentelemetry/sdk-trace-base';\nimport {\n addChildSpanToSpan,\n getClient,\n getDefaultCurrentScope,\n getDefaultIsolationScope,\n logSpanEnd,\n logSpanStart,\n setCapturedScopesOnSpan,\n} from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from './semanticAttributes';\nimport { SentrySpanExporter } from './spanExporter';\nimport { getScopesFromContext } from './utils/contextData';\nimport { setIsSetup } from './utils/setupCheck';\n\nfunction onSpanStart(span: Span, parentContext: Context): void {\n // This is a reliable way to get the parent span - because this is exactly how the parent is identified in the OTEL SDK\n const parentSpan = trace.getSpan(parentContext);\n\n let scopes = getScopesFromContext(parentContext);\n\n // We need access to the parent span in order to be able to move up the span tree for breadcrumbs\n if (parentSpan && !parentSpan.spanContext().isRemote) {\n addChildSpanToSpan(parentSpan, span);\n }\n\n // We need this in the span exporter\n if (parentSpan?.spanContext().isRemote) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE, true);\n }\n\n // The root context does not have scopes stored, so we check for this specifically\n // As fallback we attach the global scopes\n if (parentContext === ROOT_CONTEXT) {\n scopes = {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n // We need the scope at time of span creation in order to apply it to the event when the span is finished\n if (scopes) {\n setCapturedScopesOnSpan(span, scopes.scope, scopes.isolationScope);\n }\n\n logSpanStart(span);\n\n const client = getClient();\n client?.emit('spanStart', span);\n}\n\nfunction onSpanEnd(span: Span): void {\n logSpanEnd(span);\n\n const client = getClient();\n client?.emit('spanEnd', span);\n}\n\n/**\n * Converts OpenTelemetry Spans to Sentry Spans and sends them to Sentry via\n * the Sentry SDK.\n */\nexport class SentrySpanProcessor implements SpanProcessorInterface {\n private _exporter: SentrySpanExporter;\n\n public constructor(options?: { timeout?: number }) {\n setIsSetup('SentrySpanProcessor');\n this._exporter = new SentrySpanExporter(options);\n }\n\n /**\n * @inheritDoc\n */\n public async forceFlush(): Promise {\n this._exporter.flush();\n }\n\n /**\n * @inheritDoc\n */\n public async shutdown(): Promise {\n this._exporter.clear();\n }\n\n /**\n * @inheritDoc\n */\n public onStart(span: Span, parentContext: Context): void {\n onSpanStart(span, parentContext);\n }\n\n /** @inheritDoc */\n public onEnd(span: Span & ReadableSpan): void {\n onSpanEnd(span);\n\n this._exporter.export(span);\n }\n}\n","/* eslint-disable complexity */\nimport type { Context, Span, TraceState as TraceStateInterface } from '@opentelemetry/api';\nimport { isSpanContextValid, SpanKind, trace } from '@opentelemetry/api';\nimport { TraceState } from '@opentelemetry/core';\nimport type { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-base';\nimport { SamplingDecision } from '@opentelemetry/sdk-trace-base';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { Client, SpanAttributes } from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n baggageHeaderToDynamicSamplingContext,\n debug,\n hasSpansEnabled,\n parseSampleRate,\n sampleSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n} from '@sentry/core';\nimport {\n SENTRY_TRACE_STATE_DSC,\n SENTRY_TRACE_STATE_SAMPLE_RAND,\n SENTRY_TRACE_STATE_SAMPLE_RATE,\n SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING,\n SENTRY_TRACE_STATE_URL,\n} from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { getScopesFromContext } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { inferSpanData } from './utils/parseSpanDescription';\nimport { setIsSetup } from './utils/setupCheck';\n\n/**\n * A custom OTEL sampler that uses Sentry sampling rates to make its decision\n */\nexport class SentrySampler implements Sampler {\n private _client: Client;\n\n public constructor(client: Client) {\n this._client = client;\n setIsSetup('SentrySampler');\n }\n\n /** @inheritDoc */\n public shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n spanAttributes: SpanAttributes,\n _links: unknown,\n ): SamplingResult {\n const options = this._client.getOptions();\n\n const parentSpan = getValidSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n if (!hasSpansEnabled(options)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n // `ATTR_HTTP_REQUEST_METHOD` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_METHOD`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const maybeSpanHttpMethod = spanAttributes[SEMATTRS_HTTP_METHOD] || spanAttributes[ATTR_HTTP_REQUEST_METHOD];\n\n // If we have a http.client span that has no local parent, we never want to sample it\n // but we want to leave downstream sampling decisions up to the server\n if (spanKind === SpanKind.CLIENT && maybeSpanHttpMethod && (!parentSpan || parentContext?.isRemote)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const parentSampled = parentSpan ? getParentSampled(parentSpan, traceId, spanName) : undefined;\n const isRootSpan = !parentSpan || parentContext?.isRemote;\n\n // We only sample based on parameters (like tracesSampleRate or tracesSampler) for root spans (which is done in sampleSpan).\n // Non-root-spans simply inherit the sampling decision from their parent.\n if (!isRootSpan) {\n return wrapSamplingDecision({\n decision: parentSampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n });\n }\n\n // We want to pass the inferred name & attributes to the sampler method\n const {\n description: inferredSpanName,\n data: inferredAttributes,\n op,\n } = inferSpanData(spanName, spanAttributes, spanKind);\n\n const mergedAttributes = {\n ...inferredAttributes,\n ...spanAttributes,\n };\n\n if (op) {\n mergedAttributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] = op;\n }\n\n const mutableSamplingDecision = { decision: true };\n this._client.emit(\n 'beforeSampling',\n {\n spanAttributes: mergedAttributes,\n spanName: inferredSpanName,\n parentSampled: parentSampled,\n parentContext: parentContext,\n },\n mutableSamplingDecision,\n );\n if (!mutableSamplingDecision.decision) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const { isolationScope } = getScopesFromContext(context) ?? {};\n\n const dscString = parentContext?.traceState ? parentContext.traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n const sampleRand = parseSampleRate(dsc?.sample_rand) ?? _INTERNAL_safeMathRandom();\n\n const [sampled, sampleRate, localSampleRateWasApplied] = sampleSpan(\n options,\n {\n name: inferredSpanName,\n attributes: mergedAttributes,\n normalizedRequest: isolationScope?.getScopeData().sdkProcessingMetadata.normalizedRequest,\n parentSampled,\n parentSampleRate: parseSampleRate(dsc?.sample_rate),\n },\n sampleRand,\n );\n\n const method = `${maybeSpanHttpMethod}`.toUpperCase();\n if (method === 'OPTIONS' || method === 'HEAD') {\n DEBUG_BUILD && debug.log(`[Tracing] Not sampling span because HTTP method is '${method}' for ${spanName}`);\n\n return wrapSamplingDecision({\n decision: SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: 0, // we don't want to sample anything in the downstream trace either\n });\n }\n\n if (\n !sampled &&\n // We check for `parentSampled === undefined` because we only want to record client reports for spans that are trace roots (ie. when there was incoming trace)\n parentSampled === undefined\n ) {\n DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n this._client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return {\n ...wrapSamplingDecision({\n decision: sampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: localSampleRateWasApplied ? sampleRate : undefined,\n }),\n attributes: {\n // We set the sample rate on the span when a local sample rate was applied to better understand how traces were sampled in Sentry\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: localSampleRateWasApplied ? sampleRate : undefined,\n },\n };\n }\n\n /** Returns the sampler name or short description with the configuration. */\n public toString(): string {\n return 'SentrySampler';\n }\n}\n\nfunction getParentSampled(parentSpan: Span, traceId: string, spanName: string): boolean | undefined {\n const parentContext = parentSpan.spanContext();\n\n // Only inherit sample rate if `traceId` is the same\n // Note for testing: `isSpanContextValid()` checks the format of the traceId/spanId, so we need to pass valid ones\n if (isSpanContextValid(parentContext) && parentContext.traceId === traceId) {\n if (parentContext.isRemote) {\n const parentSampled = getSamplingDecision(parentSpan.spanContext());\n DEBUG_BUILD &&\n debug.log(`[Tracing] Inheriting remote parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n const parentSampled = getSamplingDecision(parentContext);\n DEBUG_BUILD && debug.log(`[Tracing] Inheriting parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n return undefined;\n}\n\n/**\n * Wrap a sampling decision with data that Sentry needs to work properly with it.\n * If you pass `decision: undefined`, it will be treated as `NOT_RECORDING`, but in contrast to passing `NOT_RECORDING`\n * it will not propagate this decision to downstream Sentry SDKs.\n */\nexport function wrapSamplingDecision({\n decision,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate,\n}: {\n decision: SamplingDecision | undefined;\n context: Context;\n spanAttributes: SpanAttributes;\n sampleRand?: number;\n downstreamTraceSampleRate?: number;\n}): SamplingResult {\n let traceState = getBaseTraceState(context, spanAttributes);\n\n // We will override the propagated sample rate downstream when\n // - the tracesSampleRate is applied\n // - the tracesSampler is invoked\n // Since unsampled OTEL spans (NonRecordingSpans) cannot hold attributes we need to store this on the (trace)context.\n if (downstreamTraceSampleRate !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RATE, `${downstreamTraceSampleRate}`);\n }\n\n if (sampleRand !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RAND, `${sampleRand}`);\n }\n\n // If the decision is undefined, we treat it as NOT_RECORDING, but we don't propagate this decision to downstream SDKs\n // Which is done by not setting `SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING` traceState\n if (decision == undefined) {\n return { decision: SamplingDecision.NOT_RECORD, traceState };\n }\n\n if (decision === SamplingDecision.NOT_RECORD) {\n return { decision, traceState: traceState.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') };\n }\n\n return { decision, traceState };\n}\n\nfunction getBaseTraceState(context: Context, spanAttributes: SpanAttributes): TraceStateInterface {\n const parentSpan = trace.getSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n let traceState = parentContext?.traceState || new TraceState();\n\n // We always keep the URL on the trace state, so we can access it in the propagator\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const url = spanAttributes[SEMATTRS_HTTP_URL] || spanAttributes[ATTR_URL_FULL];\n if (url && typeof url === 'string') {\n traceState = traceState.set(SENTRY_TRACE_STATE_URL, url);\n }\n\n return traceState;\n}\n\n/**\n * If the active span is invalid, we want to ignore it as parent.\n * This aligns with how otel tracers and default samplers handle these cases.\n */\nfunction getValidSpan(context: Context): Span | undefined {\n const span = trace.getSpan(context);\n return span && isSpanContextValid(span.spanContext()) ? span : undefined;\n}\n","import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { wrapContextManagerClass } from '@sentry/opentelemetry';\n\n/**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\nexport const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n","import { diag, DiagLogLevel } from '@opentelemetry/api';\nimport { debug } from '@sentry/core';\n\n/**\n * Setup the OTEL logger to use our own debug logger.\n */\nexport function setupOpenTelemetryLogger(): void {\n // Disable diag, to ensure this works even if called multiple times\n diag.disable();\n diag.setLogger(\n {\n error: debug.error,\n warn: debug.warn,\n info: debug.log,\n debug: debug.log,\n verbose: debug.log,\n },\n DiagLogLevel.DEBUG,\n );\n}\n","import type { ChildProcess } from 'node:child_process';\nimport * as diagnosticsChannel from 'node:diagnostics_channel';\nimport type { Worker } from 'node:worker_threads';\nimport { addBreadcrumb, captureException, defineIntegration } from '@sentry/core';\n\ninterface Options {\n /**\n * Whether to include child process arguments in breadcrumbs data.\n *\n * @default false\n */\n includeChildProcessArgs?: boolean;\n\n /**\n * Whether to capture errors from worker threads.\n *\n * @default true\n */\n captureWorkerErrors?: boolean;\n}\n\nconst INTEGRATION_NAME = 'ChildProcess';\n\n/**\n * Capture breadcrumbs and events for child processes and worker threads.\n */\nexport const childProcessIntegration = defineIntegration((options: Options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setup() {\n diagnosticsChannel.channel('child_process').subscribe((event: unknown) => {\n if (event && typeof event === 'object' && 'process' in event) {\n captureChildProcessEvents(event.process as ChildProcess, options);\n }\n });\n\n diagnosticsChannel.channel('worker_threads').subscribe((event: unknown) => {\n if (event && typeof event === 'object' && 'worker' in event) {\n captureWorkerThreadEvents(event.worker as Worker, options);\n }\n });\n },\n };\n});\n\nfunction captureChildProcessEvents(child: ChildProcess, options: Options): void {\n let hasExited = false;\n let data: Record | undefined;\n\n child\n .on('spawn', () => {\n // This is Sentry getting macOS OS context\n if (child.spawnfile === '/usr/bin/sw_vers') {\n hasExited = true;\n return;\n }\n\n data = { spawnfile: child.spawnfile };\n if (options.includeChildProcessArgs) {\n data.spawnargs = child.spawnargs;\n }\n })\n .on('exit', code => {\n if (!hasExited) {\n hasExited = true;\n\n // Only log for non-zero exit codes\n if (code !== null && code !== 0) {\n addBreadcrumb({\n category: 'child_process',\n message: `Child process exited with code '${code}'`,\n level: code === 0 ? 'info' : 'warning',\n data,\n });\n }\n }\n })\n .on('error', error => {\n if (!hasExited) {\n hasExited = true;\n\n addBreadcrumb({\n category: 'child_process',\n message: `Child process errored with '${error.message}'`,\n level: 'error',\n data,\n });\n }\n });\n}\n\nfunction captureWorkerThreadEvents(worker: Worker, options: Options): void {\n let threadId: number | undefined;\n\n worker\n .on('online', () => {\n threadId = worker.threadId;\n })\n .on('error', error => {\n if (options.captureWorkerErrors !== false) {\n captureException(error, {\n mechanism: { type: 'auto.child_process.worker_thread', handled: false, data: { threadId: String(threadId) } },\n });\n } else {\n addBreadcrumb({\n category: 'worker_thread',\n message: `Worker thread errored with '${error.message}'`,\n level: 'error',\n data: { threadId },\n });\n }\n });\n}\n","/* eslint-disable max-lines */\n\nimport { execFile } from 'node:child_process';\nimport { readdir, readFile } from 'node:fs';\nimport * as os from 'node:os';\nimport { join } from 'node:path';\nimport { promisify } from 'node:util';\nimport type {\n AppContext,\n CloudResourceContext,\n Contexts,\n CultureContext,\n DeviceContext,\n Event,\n IntegrationFn,\n OsContext,\n} from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\n\nexport const readFileAsync = promisify(readFile);\nexport const readDirAsync = promisify(readdir);\n\n// Process enhanced with methods from Node 18, 20, 22 as @types/node\n// is on `14.18.0` to match minimum version requirements of the SDK\ninterface ProcessWithCurrentValues extends NodeJS.Process {\n availableMemory?(): number;\n}\n\nconst INTEGRATION_NAME = 'Context';\n\ninterface DeviceContextOptions {\n cpu?: boolean;\n memory?: boolean;\n}\n\ninterface ContextOptions {\n app?: boolean;\n os?: boolean;\n device?: DeviceContextOptions | boolean;\n culture?: boolean;\n cloudResource?: boolean;\n}\n\nconst _nodeContextIntegration = ((options: ContextOptions = {}) => {\n let cachedContext: Promise | undefined;\n\n const _options = {\n app: true,\n os: true,\n device: true,\n culture: true,\n cloudResource: true,\n ...options,\n };\n\n /** Add contexts to the event. Caches the context so we only look it up once. */\n async function addContext(event: Event): Promise {\n if (cachedContext === undefined) {\n cachedContext = _getContexts();\n }\n\n const updatedContext = _updateContext(await cachedContext);\n\n // TODO(v11): conditional with `sendDefaultPii` here?\n event.contexts = {\n ...event.contexts,\n app: { ...updatedContext.app, ...event.contexts?.app },\n os: { ...updatedContext.os, ...event.contexts?.os },\n device: { ...updatedContext.device, ...event.contexts?.device },\n culture: { ...updatedContext.culture, ...event.contexts?.culture },\n cloud_resource: { ...updatedContext.cloud_resource, ...event.contexts?.cloud_resource },\n };\n\n return event;\n }\n\n /** Get the contexts from node. */\n async function _getContexts(): Promise {\n const contexts: Contexts = {};\n\n if (_options.os) {\n contexts.os = await getOsContext();\n }\n\n if (_options.app) {\n contexts.app = getAppContext();\n }\n\n if (_options.device) {\n contexts.device = getDeviceContext(_options.device);\n }\n\n if (_options.culture) {\n const culture = getCultureContext();\n\n if (culture) {\n contexts.culture = culture;\n }\n }\n\n if (_options.cloudResource) {\n contexts.cloud_resource = getCloudResourceContext();\n }\n\n return contexts;\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addContext(event);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Capture context about the environment and the device that the client is running on, to events.\n */\nexport const nodeContextIntegration = defineIntegration(_nodeContextIntegration);\n\n/**\n * Updates the context with dynamic values that can change\n */\nfunction _updateContext(contexts: Contexts): Contexts {\n // Only update properties if they exist\n\n if (contexts.app?.app_memory) {\n contexts.app.app_memory = process.memoryUsage().rss;\n }\n\n if (contexts.app?.free_memory && typeof (process as ProcessWithCurrentValues).availableMemory === 'function') {\n const freeMemory = (process as ProcessWithCurrentValues).availableMemory?.();\n if (freeMemory != null) {\n contexts.app.free_memory = freeMemory;\n }\n }\n\n if (contexts.device?.free_memory) {\n contexts.device.free_memory = os.freemem();\n }\n\n return contexts;\n}\n\n/**\n * Returns the operating system context.\n *\n * Based on the current platform, this uses a different strategy to provide the\n * most accurate OS information. Since this might involve spawning subprocesses\n * or accessing the file system, this should only be executed lazily and cached.\n *\n * - On macOS (Darwin), this will execute the `sw_vers` utility. The context\n * has a `name`, `version`, `build` and `kernel_version` set.\n * - On Linux, this will try to load a distribution release from `/etc` and set\n * the `name`, `version` and `kernel_version` fields.\n * - On all other platforms, only a `name` and `version` will be returned. Note\n * that `version` might actually be the kernel version.\n */\nasync function getOsContext(): Promise {\n const platformId = os.platform();\n switch (platformId) {\n case 'darwin':\n return getDarwinInfo();\n case 'linux':\n return getLinuxInfo();\n default:\n return {\n name: PLATFORM_NAMES[platformId] || platformId,\n version: os.release(),\n };\n }\n}\n\nfunction getCultureContext(): CultureContext | undefined {\n try {\n if (typeof process.versions.icu !== 'string') {\n // Node was built without ICU support\n return;\n }\n\n // Check that node was built with full Intl support. Its possible it was built without support for non-English\n // locales which will make resolvedOptions inaccurate\n //\n // https://nodejs.org/api/intl.html#detecting-internationalization-support\n const january = new Date(9e8);\n const spanish = new Intl.DateTimeFormat('es', { month: 'long' });\n if (spanish.format(january) === 'enero') {\n const options = Intl.DateTimeFormat().resolvedOptions();\n\n return {\n locale: options.locale,\n timezone: options.timeZone,\n };\n }\n } catch {\n //\n }\n\n return;\n}\n\n/**\n * Get app context information from process\n */\nexport function getAppContext(): AppContext {\n const app_memory = process.memoryUsage().rss;\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n const app_start_time = new Date(Date.now() - process.uptime() * 1000).toISOString();\n // https://nodejs.org/api/process.html#processavailablememory\n const appContext: AppContext = { app_start_time, app_memory };\n\n if (typeof (process as ProcessWithCurrentValues).availableMemory === 'function') {\n const freeMemory = (process as ProcessWithCurrentValues).availableMemory?.();\n if (freeMemory != null) {\n appContext.free_memory = freeMemory;\n }\n }\n\n return appContext;\n}\n\n/**\n * Gets device information from os\n */\nexport function getDeviceContext(deviceOpt: DeviceContextOptions | true): DeviceContext {\n const device: DeviceContext = {};\n\n // Sometimes os.uptime() throws due to lacking permissions: https://github.com/getsentry/sentry-javascript/issues/8202\n let uptime;\n try {\n uptime = os.uptime();\n } catch {\n // noop\n }\n\n // os.uptime or its return value seem to be undefined in certain environments (e.g. Azure functions).\n // Hence, we only set boot time, if we get a valid uptime value.\n // @see https://github.com/getsentry/sentry-javascript/issues/5856\n if (typeof uptime === 'number') {\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n device.boot_time = new Date(Date.now() - uptime * 1000).toISOString();\n }\n\n device.arch = os.arch();\n\n if (deviceOpt === true || deviceOpt.memory) {\n device.memory_size = os.totalmem();\n device.free_memory = os.freemem();\n }\n\n if (deviceOpt === true || deviceOpt.cpu) {\n const cpuInfo = os.cpus() as os.CpuInfo[] | undefined;\n const firstCpu = cpuInfo?.[0];\n if (firstCpu) {\n device.processor_count = cpuInfo.length;\n device.cpu_description = firstCpu.model;\n device.processor_frequency = firstCpu.speed;\n }\n }\n\n return device;\n}\n\n/** Mapping of Node's platform names to actual OS names. */\nconst PLATFORM_NAMES: { [platform: string]: string } = {\n aix: 'IBM AIX',\n freebsd: 'FreeBSD',\n openbsd: 'OpenBSD',\n sunos: 'SunOS',\n win32: 'Windows',\n ohos: 'OpenHarmony',\n android: 'Android',\n};\n\n/** Linux version file to check for a distribution. */\ninterface DistroFile {\n /** The file name, located in `/etc`. */\n name: string;\n /** Potential distributions to check. */\n distros: [string, ...string[]];\n}\n\n/** Mapping of linux release files located in /etc to distributions. */\nconst LINUX_DISTROS: DistroFile[] = [\n { name: 'fedora-release', distros: ['Fedora'] },\n { name: 'redhat-release', distros: ['Red Hat Linux', 'Centos'] },\n { name: 'redhat_version', distros: ['Red Hat Linux'] },\n { name: 'SuSE-release', distros: ['SUSE Linux'] },\n { name: 'lsb-release', distros: ['Ubuntu Linux', 'Arch Linux'] },\n { name: 'debian_version', distros: ['Debian'] },\n { name: 'debian_release', distros: ['Debian'] },\n { name: 'arch-release', distros: ['Arch Linux'] },\n { name: 'gentoo-release', distros: ['Gentoo Linux'] },\n { name: 'novell-release', distros: ['SUSE Linux'] },\n { name: 'alpine-release', distros: ['Alpine Linux'] },\n];\n\n/** Functions to extract the OS version from Linux release files. */\nconst LINUX_VERSIONS: {\n [identifier: string]: (content: string) => string | undefined;\n} = {\n alpine: content => content,\n arch: content => matchFirst(/distrib_release=(.*)/, content),\n centos: content => matchFirst(/release ([^ ]+)/, content),\n debian: content => content,\n fedora: content => matchFirst(/release (..)/, content),\n mint: content => matchFirst(/distrib_release=(.*)/, content),\n red: content => matchFirst(/release ([^ ]+)/, content),\n suse: content => matchFirst(/VERSION = (.*)\\n/, content),\n ubuntu: content => matchFirst(/distrib_release=(.*)/, content),\n};\n\n/**\n * Executes a regular expression with one capture group.\n *\n * @param regex A regular expression to execute.\n * @param text Content to execute the RegEx on.\n * @returns The captured string if matched; otherwise undefined.\n */\nfunction matchFirst(regex: RegExp, text: string): string | undefined {\n const match = regex.exec(text);\n return match ? match[1] : undefined;\n}\n\n/** Loads the macOS operating system context. */\nasync function getDarwinInfo(): Promise {\n // Default values that will be used in case no operating system information\n // can be loaded. The default version is computed via heuristics from the\n // kernel version, but the build ID is missing.\n const darwinInfo: OsContext = {\n kernel_version: os.release(),\n name: 'Mac OS X',\n version: `10.${Number(os.release().split('.')[0]) - 4}`,\n };\n\n try {\n // We try to load the actual macOS version by executing the `sw_vers` tool.\n // This tool should be available on every standard macOS installation. In\n // case this fails, we stick with the values computed above.\n\n const output = await new Promise((resolve, reject) => {\n execFile('/usr/bin/sw_vers', (error: Error | null, stdout: string) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(stdout);\n });\n });\n\n darwinInfo.name = matchFirst(/^ProductName:\\s+(.*)$/m, output);\n darwinInfo.version = matchFirst(/^ProductVersion:\\s+(.*)$/m, output);\n darwinInfo.build = matchFirst(/^BuildVersion:\\s+(.*)$/m, output);\n } catch {\n // ignore\n }\n\n return darwinInfo;\n}\n\n/** Returns a distribution identifier to look up version callbacks. */\nfunction getLinuxDistroId(name: string): string {\n return (name.split(' ') as [string])[0].toLowerCase();\n}\n\n/** Loads the Linux operating system context. */\nasync function getLinuxInfo(): Promise {\n // By default, we cannot assume anything about the distribution or Linux\n // version. `os.release()` returns the kernel version and we assume a generic\n // \"Linux\" name, which will be replaced down below.\n const linuxInfo: OsContext = {\n kernel_version: os.release(),\n name: 'Linux',\n };\n\n try {\n // We start guessing the distribution by listing files in the /etc\n // directory. This is were most Linux distributions (except Knoppix) store\n // release files with certain distribution-dependent meta data. We search\n // for exactly one known file defined in `LINUX_DISTROS` and exit if none\n // are found. In case there are more than one file, we just stick with the\n // first one.\n const etcFiles = await readDirAsync('/etc');\n const distroFile = LINUX_DISTROS.find(file => etcFiles.includes(file.name));\n if (!distroFile) {\n return linuxInfo;\n }\n\n // Once that file is known, load its contents. To make searching in those\n // files easier, we lowercase the file contents. Since these files are\n // usually quite small, this should not allocate too much memory and we only\n // hold on to it for a very short amount of time.\n const distroPath = join('/etc', distroFile.name);\n const contents = (await readFileAsync(distroPath, { encoding: 'utf-8' })).toLowerCase();\n\n // Some Linux distributions store their release information in the same file\n // (e.g. RHEL and Centos). In those cases, we scan the file for an\n // identifier, that basically consists of the first word of the linux\n // distribution name (e.g. \"red\" for Red Hat). In case there is no match, we\n // just assume the first distribution in our list.\n const { distros } = distroFile;\n linuxInfo.name = distros.find(d => contents.indexOf(getLinuxDistroId(d)) >= 0) || distros[0];\n\n // Based on the found distribution, we can now compute the actual version\n // number. This is different for every distribution, so several strategies\n // are computed in `LINUX_VERSIONS`.\n const id = getLinuxDistroId(linuxInfo.name);\n linuxInfo.version = LINUX_VERSIONS[id]?.(contents);\n } catch {\n // ignore\n }\n\n return linuxInfo;\n}\n\n/**\n * Grabs some information about hosting provider based on best effort.\n */\nfunction getCloudResourceContext(): CloudResourceContext | undefined {\n if (process.env.VERCEL) {\n // https://vercel.com/docs/concepts/projects/environment-variables/system-environment-variables#system-environment-variables\n return {\n 'cloud.provider': 'vercel',\n 'cloud.region': process.env.VERCEL_REGION,\n };\n } else if (process.env.AWS_REGION) {\n // https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html\n return {\n 'cloud.provider': 'aws',\n 'cloud.region': process.env.AWS_REGION,\n 'cloud.platform': process.env.AWS_EXECUTION_ENV,\n };\n } else if (process.env.GCP_PROJECT) {\n // https://cloud.google.com/composer/docs/how-to/managing/environment-variables#reserved_variables\n return {\n 'cloud.provider': 'gcp',\n };\n } else if (process.env.ALIYUN_REGION_ID) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'alibaba_cloud',\n 'cloud.region': process.env.ALIYUN_REGION_ID,\n };\n } else if (process.env.WEBSITE_SITE_NAME && process.env.REGION_NAME) {\n // https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet#app-environment\n return {\n 'cloud.provider': 'azure',\n 'cloud.region': process.env.REGION_NAME,\n };\n } else if (process.env.IBM_CLOUD_REGION) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'ibm_cloud',\n 'cloud.region': process.env.IBM_CLOUD_REGION,\n };\n } else if (process.env.TENCENTCLOUD_REGION) {\n // https://www.tencentcloud.com/document/product/583/32748\n return {\n 'cloud.provider': 'tencent_cloud',\n 'cloud.region': process.env.TENCENTCLOUD_REGION,\n 'cloud.account.id': process.env.TENCENTCLOUD_APPID,\n 'cloud.availability_zone': process.env.TENCENTCLOUD_ZONE,\n };\n } else if (process.env.NETLIFY) {\n // https://docs.netlify.com/configure-builds/environment-variables/#read-only-variables\n return {\n 'cloud.provider': 'netlify',\n };\n } else if (process.env.FLY_REGION) {\n // https://fly.io/docs/reference/runtime-environment/\n return {\n 'cloud.provider': 'fly.io',\n 'cloud.region': process.env.FLY_REGION,\n };\n } else if (process.env.DYNO) {\n // https://devcenter.heroku.com/articles/dynos#local-environment-variables\n return {\n 'cloud.provider': 'heroku',\n };\n } else {\n return undefined;\n }\n}\n","import { createReadStream } from 'node:fs';\nimport { createInterface } from 'node:readline';\nimport type { Event, IntegrationFn, StackFrame } from '@sentry/core';\nimport { debug, defineIntegration, LRUMap, snipLine } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst LRU_FILE_CONTENTS_CACHE = new LRUMap>(10);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new LRUMap(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst INTEGRATION_NAME = 'ContextLines';\n// Determines the upper bound of lineno/colno that we will attempt to read. Large colno values are likely to be\n// minified code while large lineno values are likely to be bundled code.\n// Exported for testing purposes.\nexport const MAX_CONTEXTLINES_COLNO: number = 1000;\nexport const MAX_CONTEXTLINES_LINENO: number = 10000;\n\ninterface ContextLinesOptions {\n /**\n * Sets the number of context lines for each frame when loading a file.\n * Defaults to 7.\n *\n * Set to 0 to disable loading and inclusion of source files.\n **/\n frameContextLines?: number;\n}\n\n/**\n * Exported for testing purposes.\n */\nexport function resetFileContentCache(): void {\n LRU_FILE_CONTENTS_CACHE.clear();\n}\n\n/**\n * Get or init map value\n */\nfunction emplace, K extends string, V>(map: T, key: K, contents: V): V {\n const value = map.get(key);\n\n if (value === undefined) {\n map.set(key, contents);\n return contents;\n }\n\n return value;\n}\n\n/**\n * Determines if context lines should be skipped for a file.\n * - .min.(mjs|cjs|js) files are and not useful since they dont point to the original source\n * - node: prefixed modules are part of the runtime and cannot be resolved to a file\n * - data: skip json, wasm and inline js https://nodejs.org/api/esm.html#data-imports\n */\nfunction shouldSkipContextLinesForFile(path: string): boolean {\n // Test the most common prefix and extension first. These are the ones we\n // are most likely to see in user applications and are the ones we can break out of first.\n if (path.startsWith('node:')) return true;\n if (path.endsWith('.min.js')) return true;\n if (path.endsWith('.min.cjs')) return true;\n if (path.endsWith('.min.mjs')) return true;\n if (path.startsWith('data:')) return true;\n return false;\n}\n\n/**\n * Determines if we should skip contextlines based off the max lineno and colno values.\n */\nfunction shouldSkipContextLinesForFrame(frame: StackFrame): boolean {\n if (frame.lineno !== undefined && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (frame.colno !== undefined && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\n/**\n * Checks if we have all the contents that we need in the cache.\n */\nfunction rangeExistsInContentCache(file: string, range: ReadlineRange): boolean {\n const contents = LRU_FILE_CONTENTS_CACHE.get(file);\n if (contents === undefined) return false;\n\n for (let i = range[0]; i <= range[1]; i++) {\n if (contents[i] === undefined) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates contiguous ranges of lines to read from a file. In the case where context lines overlap,\n * the ranges are merged to create a single range.\n */\nfunction makeLineReaderRanges(lines: number[], linecontext: number): ReadlineRange[] {\n if (!lines.length) {\n return [];\n }\n\n let i = 0;\n const line = lines[0];\n\n if (typeof line !== 'number') {\n return [];\n }\n\n let current = makeContextRange(line, linecontext);\n const out: ReadlineRange[] = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n\n // If the next line falls into the current range, extend the current range to lineno + linecontext.\n const next = lines[i + 1];\n if (typeof next !== 'number') {\n break;\n }\n if (next <= current[1]) {\n current[1] = next + linecontext;\n } else {\n out.push(current);\n current = makeContextRange(next, linecontext);\n }\n\n i++;\n }\n\n return out;\n}\n\n/**\n * Extracts lines from a file and stores them in a cache.\n */\nfunction getContextLinesFromFile(path: string, ranges: ReadlineRange[], output: Record): Promise {\n return new Promise((resolve, _reject) => {\n // It is important *not* to have any async code between createInterface and the 'line' event listener\n // as it will cause the 'line' event to\n // be emitted before the listener is attached.\n const stream = createReadStream(path);\n const lineReaded = createInterface({\n input: stream,\n });\n\n // We need to explicitly destroy the stream to prevent memory leaks,\n // removing the listeners on the readline interface is not enough.\n // See: https://github.com/nodejs/node/issues/9002 and https://github.com/getsentry/sentry-javascript/issues/14892\n function destroyStreamAndResolve(): void {\n stream.destroy();\n resolve();\n }\n\n // Init at zero and increment at the start of the loop because lines are 1 indexed.\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // We should never reach this point, but if we do, we should resolve the promise to prevent it from hanging.\n destroyStreamAndResolve();\n return;\n }\n let rangeStart = range[0];\n let rangeEnd = range[1];\n\n // We use this inside Promise.all, so we need to resolve the promise even if there is an error\n // to prevent Promise.all from short circuiting the rest.\n function onStreamError(e: Error): void {\n // Mark file path as failed to read and prevent multiple read attempts.\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);\n DEBUG_BUILD && debug.error(`Failed to read file: ${path}. Error: ${e}`);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve();\n }\n\n // We need to handle the error event to prevent the process from crashing in < Node 16\n // https://github.com/nodejs/node/pull/31603\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', destroyStreamAndResolve);\n\n lineReaded.on('line', line => {\n lineNumber++;\n if (lineNumber < rangeStart) return;\n\n // !Warning: This mutates the cache by storing the snipped line into the cache.\n output[lineNumber] = snipLine(line, 0);\n\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n // We need to close the file stream and remove listeners, else the reader will continue to run our listener;\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // This should never happen as it means we have a bug in the context.\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\n\n/**\n * Adds surrounding (context) lines of the line that an exception occurred on to the event.\n * This is done by reading the file line by line and extracting the lines. The extracted lines are stored in\n * a cache to prevent multiple reads of the same file. Failures to read a file are similarly cached to prevent multiple\n * failing reads from happening.\n */\n/* eslint-disable complexity */\nasync function addSourceContext(event: Event, contextLines: number): Promise {\n // keep a lookup map of which files we've already enqueued to read,\n // so we don't enqueue the same file multiple times which would cause multiple i/o reads\n const filesToLines: Record = {};\n\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (!exception.stacktrace?.frames?.length) {\n continue;\n }\n\n // Maps preserve insertion order, so we iterate in reverse, starting at the\n // outermost frame and closer to where the exception has occurred (poor mans priority)\n for (let i = exception.stacktrace.frames.length - 1; i >= 0; i--) {\n const frame: StackFrame | undefined = exception.stacktrace.frames[i];\n const filename = frame?.filename;\n\n if (\n !frame ||\n typeof filename !== 'string' ||\n typeof frame.lineno !== 'number' ||\n shouldSkipContextLinesForFile(filename) ||\n shouldSkipContextLinesForFrame(frame)\n ) {\n continue;\n }\n\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n // @ts-expect-error this is defined above\n filesToLines[filename].push(frame.lineno);\n }\n }\n }\n\n const files = Object.keys(filesToLines);\n if (files.length == 0) {\n return event;\n }\n\n const readlinePromises: Promise[] = [];\n for (const file of files) {\n // If we failed to read this before, dont try reading it again.\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) {\n continue;\n }\n\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) {\n continue;\n }\n\n // Sort ranges so that they are sorted by line increasing order and match how the file is read.\n filesToLineRanges.sort((a, b) => a - b);\n // Check if the contents are already in the cache and if we can avoid reading the file again.\n const ranges = makeLineReaderRanges(filesToLineRanges, contextLines);\n if (ranges.every(r => rangeExistsInContentCache(file, r))) {\n continue;\n }\n\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache));\n }\n\n // The promise rejections are caught in order to prevent them from short circuiting Promise.all\n await Promise.all(readlinePromises).catch(() => {\n DEBUG_BUILD && debug.log('Failed to read one or more source files and resolve context lines');\n });\n\n // Perform the same loop as above, but this time we can assume all files are in the cache\n // and attempt to add source context to frames.\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (exception.stacktrace?.frames && exception.stacktrace.frames.length > 0) {\n addSourceContextToFrames(exception.stacktrace.frames, contextLines, LRU_FILE_CONTENTS_CACHE);\n }\n }\n }\n\n return event;\n}\n/* eslint-enable complexity */\n\n/** Adds context lines to frames */\nfunction addSourceContextToFrames(\n frames: StackFrame[],\n contextLines: number,\n cache: LRUMap>,\n): void {\n for (const frame of frames) {\n // Only add context if we have a filename and it hasn't already been added\n if (frame.filename && frame.context_line === undefined && typeof frame.lineno === 'number') {\n const contents = cache.get(frame.filename);\n if (contents === undefined) {\n continue;\n }\n\n addContextToFrame(frame.lineno, frame, contextLines, contents);\n }\n }\n}\n\n/**\n * Clears the context lines from a frame, used to reset a frame to its original state\n * if we fail to resolve all context lines for it.\n */\nfunction clearLineContext(frame: StackFrame): void {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\n\n/**\n * Resolves context lines before and after the given line number and appends them to the frame;\n */\nexport function addContextToFrame(\n lineno: number,\n frame: StackFrame,\n contextLines: number,\n contents: Record | undefined,\n): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping.\n // We already check for lineno before calling this, but since StackFrame lineno ism optional, we check it again.\n if (frame.lineno === undefined || contents === undefined) {\n DEBUG_BUILD && debug.error('Cannot resolve context for frame with no lineno or file contents');\n return;\n }\n\n frame.pre_context = [];\n for (let i = makeRangeStart(lineno, contextLines); i < lineno; i++) {\n // We always expect the start context as line numbers cannot be negative. If we dont find a line, then\n // something went wrong somewhere. Clear the context and return without adding any linecontext.\n const line = contents[i];\n if (line === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${i} in file ${frame.filename}`);\n return;\n }\n\n frame.pre_context.push(line);\n }\n\n // We should always have the context line. If we dont, something went wrong, so we clear the context and return\n // without adding any linecontext.\n if (contents[lineno] === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${lineno} in file ${frame.filename}`);\n return;\n }\n\n frame.context_line = contents[lineno];\n\n const end = makeRangeEnd(lineno, contextLines);\n frame.post_context = [];\n for (let i = lineno + 1; i <= end; i++) {\n // Since we dont track when the file ends, we cant clear the context if we dont find a line as it could\n // just be that we reached the end of the file.\n const line = contents[i];\n if (line === undefined) {\n break;\n }\n frame.post_context.push(line);\n }\n}\n\n// Helper functions for generating line context ranges. They take a line number and the number of lines of context to\n// include before and after the line and generate an inclusive range of indices.\ntype ReadlineRange = [start: number, end: number];\n// Compute inclusive end context range\nfunction makeRangeStart(line: number, linecontext: number): number {\n return Math.max(1, line - linecontext);\n}\n// Compute inclusive start context range\nfunction makeRangeEnd(line: number, linecontext: number): number {\n return line + linecontext;\n}\n// Determine start and end indices for context range (inclusive);\nfunction makeContextRange(line: number, linecontext: number): [start: number, end: number] {\n return [makeRangeStart(line, linecontext), makeRangeEnd(line, linecontext)];\n}\n\n/** Exported only for tests, as a type-safe variant. */\nexport const _contextLinesIntegration = ((options: ContextLinesOptions = {}) => {\n const contextLines = options.frameContextLines !== undefined ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addSourceContext(event, contextLines);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Capture the lines before and after the frame's context.\n */\nexport const contextLinesIntegration = defineIntegration(_contextLinesIntegration);\n","let cachedDebuggerEnabled: boolean | undefined;\n\n/**\n * Was the debugger enabled when this function was first called?\n */\nexport async function isDebuggerEnabled(): Promise {\n if (cachedDebuggerEnabled === undefined) {\n try {\n // Node can be built without inspector support\n const inspector = await import('node:inspector');\n cachedDebuggerEnabled = !!inspector.url();\n } catch {\n cachedDebuggerEnabled = false;\n }\n }\n\n return cachedDebuggerEnabled;\n}\n","import type { Debugger } from 'node:inspector';\n\nexport type Variables = Record;\n\nexport type RateLimitIncrement = () => void;\n\n/**\n * The key used to store the local variables on the error object.\n */\nexport const LOCAL_VARIABLES_KEY = '__SENTRY_ERROR_LOCAL_VARIABLES__';\n\n/**\n * Creates a rate limiter that will call the disable callback when the rate limit is reached and the enable callback\n * when a timeout has occurred.\n * @param maxPerSecond Maximum number of calls per second\n * @param enable Callback to enable capture\n * @param disable Callback to disable capture\n * @returns A function to call to increment the rate limiter count\n */\nexport function createRateLimiter(\n maxPerSecond: number,\n enable: () => void,\n disable: (seconds: number) => void,\n): RateLimitIncrement {\n let count = 0;\n let retrySeconds = 5;\n let disabledTimeout = 0;\n\n setInterval(() => {\n if (disabledTimeout === 0) {\n if (count > maxPerSecond) {\n retrySeconds *= 2;\n disable(retrySeconds);\n\n // Cap at one day\n if (retrySeconds > 86400) {\n retrySeconds = 86400;\n }\n disabledTimeout = retrySeconds;\n }\n } else {\n disabledTimeout -= 1;\n\n if (disabledTimeout === 0) {\n enable();\n }\n }\n\n count = 0;\n }, 1_000).unref();\n\n return () => {\n count += 1;\n };\n}\n\n// Add types for the exception event data\nexport type PausedExceptionEvent = Debugger.PausedEventDataType & {\n data: {\n // This contains error.stack\n description: string;\n objectId?: string;\n };\n};\n\n/** Could this be an anonymous function? */\nexport function isAnonymous(name: string | undefined): boolean {\n return name !== undefined && (name.length === 0 || name === '?' || name === '');\n}\n\n/** Do the function names appear to match? */\nexport function functionNamesMatch(a: string | undefined, b: string | undefined): boolean {\n return a === b || `Object.${a}` === b || a === `Object.${b}` || (isAnonymous(a) && isAnonymous(b));\n}\n\nexport interface FrameVariables {\n function: string;\n vars?: Variables;\n}\n\nexport interface LocalVariablesIntegrationOptions {\n /**\n * Capture local variables for both caught and uncaught exceptions\n *\n * - When false, only uncaught exceptions will have local variables\n * - When true, both caught and uncaught exceptions will have local variables.\n *\n * Defaults to `true`.\n *\n * Capturing local variables for all exceptions can be expensive since the debugger pauses for every throw to collect\n * local variables.\n *\n * To reduce the likelihood of this feature impacting app performance or throughput, this feature is rate-limited.\n * Once the rate limit is reached, local variables will only be captured for uncaught exceptions until a timeout has\n * been reached.\n */\n captureAllExceptions?: boolean;\n /**\n * Maximum number of exceptions to capture local variables for per second before rate limiting is triggered.\n */\n maxExceptionsPerSecond?: number;\n /**\n * When true, local variables will be captured for all frames, including those that are not in_app.\n *\n * Defaults to `false`.\n */\n includeOutOfAppFrames?: boolean;\n}\n\nexport interface LocalVariablesWorkerArgs extends LocalVariablesIntegrationOptions {\n /**\n * Whether to enable debug logging.\n */\n debug: boolean;\n /**\n * Base path used to calculate module name.\n *\n * Defaults to `dirname(process.argv[1])` and falls back to `process.cwd()`\n */\n basePath?: string;\n}\n","import { Worker } from 'node:worker_threads';\nimport type { Event, EventHint, Exception, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration } from '@sentry/core';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type { FrameVariables, LocalVariablesIntegrationOptions, LocalVariablesWorkerArgs } from './common';\nimport { functionNamesMatch, LOCAL_VARIABLES_KEY } from './common';\n\n// This string is a placeholder that gets overwritten with the worker code.\nexport const base64WorkerScript = '###LocalVariablesWorkerScript###';\n\nfunction log(...args: unknown[]): void {\n debug.log('[LocalVariables]', ...args);\n}\n\n/**\n * Adds local variables to exception frames\n */\nexport const localVariablesAsyncIntegration = defineIntegration(((\n integrationOptions: LocalVariablesIntegrationOptions = {},\n) => {\n function addLocalVariablesToException(exception: Exception, localVariables: FrameVariables[]): void {\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const frameLocalVariables = localVariables[i];\n const frame = frames[frameIndex];\n\n if (!frame || !frameLocalVariables) {\n // Drop out if we run out of frames to match up\n break;\n }\n\n if (\n // We need to have vars to add\n frameLocalVariables.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frame.in_app === false && integrationOptions.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frame.function, frameLocalVariables.function)\n ) {\n continue;\n }\n\n frame.vars = frameLocalVariables.vars;\n }\n }\n\n function addLocalVariablesToEvent(event: Event, hint: EventHint): Event {\n if (\n hint.originalException &&\n typeof hint.originalException === 'object' &&\n LOCAL_VARIABLES_KEY in hint.originalException &&\n Array.isArray(hint.originalException[LOCAL_VARIABLES_KEY])\n ) {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception, hint.originalException[LOCAL_VARIABLES_KEY]);\n }\n\n hint.originalException[LOCAL_VARIABLES_KEY] = undefined;\n }\n\n return event;\n }\n\n async function startInspector(): Promise {\n // We load inspector dynamically because on some platforms Node is built without inspector support\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n function startWorker(options: LocalVariablesWorkerArgs): void {\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n worker.once('error', (err: Error) => {\n log('Worker error', err);\n });\n\n worker.once('exit', (code: number) => {\n log('Worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n }\n\n return {\n name: 'LocalVariablesAsync',\n async setup(client: NodeClient) {\n const clientOptions = client.getOptions();\n\n if (!clientOptions.includeLocalVariables) {\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n const options: LocalVariablesWorkerArgs = {\n ...integrationOptions,\n debug: debug.isEnabled(),\n };\n\n startInspector().then(\n () => {\n try {\n startWorker(options);\n } catch (e) {\n debug.error('Failed to start worker', e);\n }\n },\n e => {\n debug.error('Failed to start inspector', e);\n },\n );\n },\n processEvent(event: Event, hint: EventHint): Event {\n return addLocalVariablesToEvent(event, hint);\n },\n };\n}) satisfies IntegrationFn);\n","import type { Debugger, InspectorNotification, Runtime, Session } from 'node:inspector';\nimport type { Event, Exception, IntegrationFn, StackFrame, StackParser } from '@sentry/core';\nimport { debug, defineIntegration, getClient, LRUMap } from '@sentry/core';\nimport { NODE_MAJOR } from '../../nodeVersion';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type {\n FrameVariables,\n LocalVariablesIntegrationOptions,\n PausedExceptionEvent,\n RateLimitIncrement,\n Variables,\n} from './common';\nimport { createRateLimiter, functionNamesMatch } from './common';\n\n/** Creates a unique hash from stack frames */\nexport function hashFrames(frames: StackFrame[] | undefined): string | undefined {\n if (frames === undefined) {\n return;\n }\n\n // Only hash the 10 most recent frames (ie. the last 10)\n return frames.slice(-10).reduce((acc, frame) => `${acc},${frame.function},${frame.lineno},${frame.colno}`, '');\n}\n\n/**\n * We use the stack parser to create a unique hash from the exception stack trace\n * This is used to lookup vars when the exception passes through the event processor\n */\nexport function hashFromStack(stackParser: StackParser, stack: string | undefined): string | undefined {\n if (stack === undefined) {\n return undefined;\n }\n\n return hashFrames(stackParser(stack, 1));\n}\n\ntype OnPauseEvent = InspectorNotification;\nexport interface DebugSession {\n /** Configures and connects to the debug session */\n configureAndConnect(onPause: (message: OnPauseEvent, complete: () => void) => void, captureAll: boolean): void;\n /** Updates which kind of exceptions to capture */\n setPauseOnExceptions(captureAll: boolean): void;\n /** Gets local variables for an objectId */\n getLocalVariables(objectId: string, callback: (vars: Variables) => void): void;\n}\n\ntype Next = (result: T) => void;\ntype Add = (fn: Next) => void;\ntype CallbackWrapper = { add: Add; next: Next };\n\n/** Creates a container for callbacks to be called sequentially */\nexport function createCallbackList(complete: Next): CallbackWrapper {\n // A collection of callbacks to be executed last to first\n let callbacks: Next[] = [];\n\n let completedCalled = false;\n function checkedComplete(result: T): void {\n callbacks = [];\n if (completedCalled) {\n return;\n }\n completedCalled = true;\n complete(result);\n }\n\n // complete should be called last\n callbacks.push(checkedComplete);\n\n function add(fn: Next): void {\n callbacks.push(fn);\n }\n\n function next(result: T): void {\n const popped = callbacks.pop() || checkedComplete;\n\n try {\n popped(result);\n } catch {\n // If there is an error, we still want to call the complete callback\n checkedComplete(result);\n }\n }\n\n return { add, next };\n}\n\n/**\n * Promise API is available as `Experimental` and in Node 19 only.\n *\n * Callback-based API is `Stable` since v14 and `Experimental` since v8.\n * Because of that, we are creating our own `AsyncSession` class.\n *\n * https://nodejs.org/docs/latest-v19.x/api/inspector.html#promises-api\n * https://nodejs.org/docs/latest-v14.x/api/inspector.html\n */\nclass AsyncSession implements DebugSession {\n /** Throws if inspector API is not available */\n private constructor(private readonly _session: Session) {\n //\n }\n\n public static async create(orDefault?: DebugSession | undefined): Promise {\n if (orDefault) {\n return orDefault;\n }\n\n const inspector = await import('node:inspector');\n return new AsyncSession(new inspector.Session());\n }\n\n /** @inheritdoc */\n public configureAndConnect(onPause: (event: OnPauseEvent, complete: () => void) => void, captureAll: boolean): void {\n this._session.connect();\n\n this._session.on('Debugger.paused', event => {\n onPause(event, () => {\n // After the pause work is complete, resume execution or the exception context memory is leaked\n this._session.post('Debugger.resume');\n });\n });\n\n this._session.post('Debugger.enable');\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n public setPauseOnExceptions(captureAll: boolean): void {\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n /** @inheritdoc */\n public getLocalVariables(objectId: string, complete: (vars: Variables) => void): void {\n this._getProperties(objectId, props => {\n const { add, next } = createCallbackList(complete);\n\n for (const prop of props) {\n if (prop.value?.objectId && prop.value.className === 'Array') {\n const id = prop.value.objectId;\n add(vars => this._unrollArray(id, prop.name, vars, next));\n } else if (prop.value?.objectId && prop.value.className === 'Object') {\n const id = prop.value.objectId;\n add(vars => this._unrollObject(id, prop.name, vars, next));\n } else if (prop.value) {\n add(vars => this._unrollOther(prop, vars, next));\n }\n }\n\n next({});\n });\n }\n\n /**\n * Gets all the PropertyDescriptors of an object\n */\n private _getProperties(objectId: string, next: (result: Runtime.PropertyDescriptor[]) => void): void {\n this._session.post(\n 'Runtime.getProperties',\n {\n objectId,\n ownProperties: true,\n },\n (err, params) => {\n if (err) {\n next([]);\n } else {\n next(params.result);\n }\n },\n );\n }\n\n /**\n * Unrolls an array property\n */\n private _unrollArray(objectId: string, name: string, vars: Variables, next: (vars: Variables) => void): void {\n this._getProperties(objectId, props => {\n vars[name] = props\n .filter(v => v.name !== 'length' && !isNaN(parseInt(v.name, 10)))\n .sort((a, b) => parseInt(a.name, 10) - parseInt(b.name, 10))\n .map(v => v.value?.value);\n\n next(vars);\n });\n }\n\n /**\n * Unrolls an object property\n */\n private _unrollObject(objectId: string, name: string, vars: Variables, next: (obj: Variables) => void): void {\n this._getProperties(objectId, props => {\n vars[name] = props\n .map<[string, unknown]>(v => [v.name, v.value?.value])\n .reduce((obj, [key, val]) => {\n obj[key] = val;\n return obj;\n }, {} as Variables);\n\n next(vars);\n });\n }\n\n /**\n * Unrolls other properties\n */\n private _unrollOther(prop: Runtime.PropertyDescriptor, vars: Variables, next: (vars: Variables) => void): void {\n if (prop.value) {\n if ('value' in prop.value) {\n if (prop.value.value === undefined || prop.value.value === null) {\n vars[prop.name] = `<${prop.value.value}>`;\n } else {\n vars[prop.name] = prop.value.value;\n }\n } else if ('description' in prop.value && prop.value.type !== 'function') {\n vars[prop.name] = `<${prop.value.description}>`;\n } else if (prop.value.type === 'undefined') {\n vars[prop.name] = '';\n }\n }\n\n next(vars);\n }\n}\n\nconst INTEGRATION_NAME = 'LocalVariables';\n\n/**\n * Adds local variables to exception frames\n */\nconst _localVariablesSyncIntegration = ((\n options: LocalVariablesIntegrationOptions = {},\n sessionOverride?: DebugSession,\n) => {\n const cachedFrames: LRUMap = new LRUMap(20);\n let rateLimiter: RateLimitIncrement | undefined;\n let shouldProcessEvent = false;\n\n function addLocalVariablesToException(exception: Exception): void {\n const hash = hashFrames(exception.stacktrace?.frames);\n\n if (hash === undefined) {\n return;\n }\n\n // Check if we have local variables for an exception that matches the hash\n // remove is identical to get but also removes the entry from the cache\n const cachedFrame = cachedFrames.remove(hash);\n\n if (cachedFrame === undefined) {\n return;\n }\n\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const cachedFrameVariable = cachedFrame[i];\n const frameVariable = frames[frameIndex];\n\n // Drop out if we run out of frames to match up\n if (!frameVariable || !cachedFrameVariable) {\n break;\n }\n\n if (\n // We need to have vars to add\n cachedFrameVariable.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frameVariable.in_app === false && options.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frameVariable.function, cachedFrameVariable.function)\n ) {\n continue;\n }\n\n frameVariable.vars = cachedFrameVariable.vars;\n }\n }\n\n function addLocalVariablesToEvent(event: Event): Event {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception);\n }\n\n return event;\n }\n\n let setupPromise: Promise | undefined;\n\n async function setup(): Promise {\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n if (!clientOptions?.includeLocalVariables) {\n return;\n }\n\n // Only setup this integration if the Node version is >= v18\n // https://github.com/getsentry/sentry-javascript/issues/7697\n const unsupportedNodeVersion = NODE_MAJOR < 18;\n\n if (unsupportedNodeVersion) {\n debug.log('The `LocalVariables` integration is only supported on Node >= v18.');\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n try {\n const session = await AsyncSession.create(sessionOverride);\n\n const handlePaused = (\n stackParser: StackParser,\n { params: { reason, data, callFrames } }: InspectorNotification,\n complete: () => void,\n ): void => {\n if (reason !== 'exception' && reason !== 'promiseRejection') {\n complete();\n return;\n }\n\n rateLimiter?.();\n\n // data.description contains the original error.stack\n const exceptionHash = hashFromStack(stackParser, data.description);\n\n if (exceptionHash == undefined) {\n complete();\n return;\n }\n\n const { add, next } = createCallbackList(frames => {\n cachedFrames.set(exceptionHash, frames);\n complete();\n });\n\n // Because we're queuing up and making all these calls synchronously, we can potentially overflow the stack\n // For this reason we only attempt to get local variables for the first 5 frames\n for (let i = 0; i < Math.min(callFrames.length, 5); i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { scopeChain, functionName, this: obj } = callFrames[i]!;\n\n const localScope = scopeChain.find(scope => scope.type === 'local');\n\n // obj.className is undefined in ESM modules\n const fn = obj.className === 'global' || !obj.className ? functionName : `${obj.className}.${functionName}`;\n\n if (localScope?.object.objectId === undefined) {\n add(frames => {\n frames[i] = { function: fn };\n next(frames);\n });\n } else {\n const id = localScope.object.objectId;\n add(frames =>\n session.getLocalVariables(id, vars => {\n frames[i] = { function: fn, vars };\n next(frames);\n }),\n );\n }\n }\n\n next([]);\n };\n\n const captureAll = options.captureAllExceptions !== false;\n\n session.configureAndConnect(\n (ev, complete) =>\n handlePaused(clientOptions.stackParser, ev as InspectorNotification, complete),\n captureAll,\n );\n\n if (captureAll) {\n const max = options.maxExceptionsPerSecond || 50;\n\n rateLimiter = createRateLimiter(\n max,\n () => {\n debug.log('Local variables rate-limit lifted.');\n session.setPauseOnExceptions(true);\n },\n seconds => {\n debug.log(\n `Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${seconds} seconds.`,\n );\n session.setPauseOnExceptions(false);\n },\n );\n }\n\n shouldProcessEvent = true;\n } catch (error) {\n debug.log('The `LocalVariables` integration failed to start.', error);\n }\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n setupPromise = setup();\n },\n async processEvent(event: Event): Promise {\n await setupPromise;\n\n if (shouldProcessEvent) {\n return addLocalVariablesToEvent(event);\n }\n\n return event;\n },\n // These are entirely for testing\n _getCachedFramesCount(): number {\n return cachedFrames.size;\n },\n _getFirstCachedFrame(): FrameVariables[] | undefined {\n return cachedFrames.values()[0];\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds local variables to exception frames.\n */\nexport const localVariablesSyncIntegration = defineIntegration(_localVariablesSyncIntegration);\n","import type { Integration } from '@sentry/core';\nimport { NODE_VERSION } from '../../nodeVersion';\nimport type { LocalVariablesIntegrationOptions } from './common';\nimport { localVariablesAsyncIntegration } from './local-variables-async';\nimport { localVariablesSyncIntegration } from './local-variables-sync';\n\nexport const localVariablesIntegration = (options: LocalVariablesIntegrationOptions = {}): Integration => {\n return NODE_VERSION.major < 19 ? localVariablesSyncIntegration(options) : localVariablesAsyncIntegration(options);\n};\n","import { consoleSandbox } from '@sentry/core';\nimport { NODE_MAJOR, NODE_MINOR } from '../nodeVersion';\n\n/** Detect CommonJS. */\nexport function isCjs(): boolean {\n try {\n // oxlint-disable-next-line typescript/prefer-optional-chain\n return typeof module !== 'undefined' && typeof module.exports !== 'undefined';\n } catch {\n return false;\n }\n}\n\nlet hasWarnedAboutNodeVersion: boolean | undefined;\n\n/**\n * Check if the current Node.js version supports module.register\n */\nexport function supportsEsmLoaderHooks(): boolean {\n if (isCjs()) {\n return false;\n }\n\n if (NODE_MAJOR >= 21 || (NODE_MAJOR === 20 && NODE_MINOR >= 6) || (NODE_MAJOR === 18 && NODE_MINOR >= 19)) {\n return true;\n }\n\n if (!hasWarnedAboutNodeVersion) {\n hasWarnedAboutNodeVersion = true;\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] You are using Node.js v${process.versions.node} in ESM mode (\"import syntax\"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS (\"require() syntax\"), or upgrade your Node.js version.`,\n );\n });\n }\n\n return false;\n}\n","import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport type { IntegrationFn } from '@sentry/core';\nimport { isCjs } from '../utils/detection';\n\ntype ModuleInfo = Record;\n\nlet moduleCache: ModuleInfo | undefined;\n\nconst INTEGRATION_NAME = 'Modules';\n\ndeclare const __SENTRY_SERVER_MODULES__: Record;\n\n/**\n * `__SENTRY_SERVER_MODULES__` can be replaced at build time with the modules loaded by the server.\n * Right now, we leverage this in Next.js to circumvent the problem that we do not get access to these things at runtime.\n */\nconst SERVER_MODULES = typeof __SENTRY_SERVER_MODULES__ === 'undefined' ? {} : __SENTRY_SERVER_MODULES__;\n\nconst _modulesIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n event.modules = {\n ...event.modules,\n ..._getModules(),\n };\n\n return event;\n },\n getModules: _getModules,\n };\n}) satisfies IntegrationFn;\n\n/**\n * Add node modules / packages to the event.\n * For this, multiple sources are used:\n * - They can be injected at build time into the __SENTRY_SERVER_MODULES__ variable (e.g. in Next.js)\n * - They are extracted from the dependencies & devDependencies in the package.json file\n * - They are extracted from the require.cache (CJS only)\n */\nexport const modulesIntegration = _modulesIntegration;\n\nfunction getRequireCachePaths(): string[] {\n try {\n return require.cache ? Object.keys(require.cache as Record) : [];\n } catch {\n return [];\n }\n}\n\n/** Extract information about package.json modules */\nfunction collectModules(): ModuleInfo {\n return {\n ...SERVER_MODULES,\n ...getModulesFromPackageJson(),\n ...(isCjs() ? collectRequireModules() : {}),\n };\n}\n\n/** Extract information about package.json modules from require.cache */\nfunction collectRequireModules(): ModuleInfo {\n const mainPaths = require.main?.paths || [];\n const paths = getRequireCachePaths();\n\n // We start with the modules from package.json (if possible)\n // These may be overwritten by more specific versions from the require.cache\n const infos: ModuleInfo = {};\n const seen = new Set();\n\n paths.forEach(path => {\n let dir = path;\n\n /** Traverse directories upward in the search of package.json file */\n const updir = (): void | (() => void) => {\n const orig = dir;\n dir = dirname(orig);\n\n if (!dir || orig === dir || seen.has(orig)) {\n return undefined;\n }\n if (mainPaths.indexOf(dir) < 0) {\n return updir();\n }\n\n const pkgfile = join(orig, 'package.json');\n seen.add(orig);\n\n if (!existsSync(pkgfile)) {\n return updir();\n }\n\n try {\n const info = JSON.parse(readFileSync(pkgfile, 'utf8')) as {\n name: string;\n version: string;\n };\n infos[info.name] = info.version;\n } catch {\n // no-empty\n }\n };\n\n updir();\n });\n\n return infos;\n}\n\n/** Fetches the list of modules and the versions loaded by the entry file for your node.js app. */\nfunction _getModules(): ModuleInfo {\n if (!moduleCache) {\n moduleCache = collectModules();\n }\n return moduleCache;\n}\n\ninterface PackageJson {\n dependencies?: Record;\n devDependencies?: Record;\n}\n\nfunction getPackageJson(): PackageJson {\n try {\n const filePath = join(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(filePath, 'utf8')) as PackageJson;\n\n return packageJson;\n } catch {\n return {};\n }\n}\n\nfunction getModulesFromPackageJson(): ModuleInfo {\n const packageJson = getPackageJson();\n\n return {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n}\n","import { consoleSandbox, debug, getClient } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClient } from '../sdk/client';\n\nconst DEFAULT_SHUTDOWN_TIMEOUT = 2000;\n\n/**\n * @hidden\n */\nexport function logAndExitProcess(error: unknown): void {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(error);\n });\n\n const client = getClient();\n\n if (client === undefined) {\n DEBUG_BUILD && debug.warn('No NodeClient was defined, we are exiting the process now.');\n global.process.exit(1);\n return;\n }\n\n const options = client.getOptions();\n const timeout =\n options?.shutdownTimeout && options.shutdownTimeout > 0 ? options.shutdownTimeout : DEFAULT_SHUTDOWN_TIMEOUT;\n client.close(timeout).then(\n (result: boolean) => {\n if (!result) {\n DEBUG_BUILD && debug.warn('We reached the timeout for emptying the request buffer, still exiting now!');\n }\n global.process.exit(1);\n },\n error => {\n DEBUG_BUILD && debug.error(error);\n },\n );\n}\n","import { captureException, debug, defineIntegration, getClient } from '@sentry/core';\nimport { isMainThread } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClient } from '../sdk/client';\nimport { logAndExitProcess } from '../utils/errorhandling';\n\ntype OnFatalErrorHandler = (firstError: Error, secondError?: Error) => void;\n\ntype TaggedListener = NodeJS.UncaughtExceptionListener & {\n tag?: string;\n};\n\ninterface OnUncaughtExceptionOptions {\n /**\n * Controls if the SDK should register a handler to exit the process on uncaught errors:\n * - `true`: The SDK will exit the process on all uncaught errors.\n * - `false`: The SDK will only exit the process when there are no other `uncaughtException` handlers attached.\n *\n * Default: `false`\n */\n exitEvenIfOtherHandlersAreRegistered: boolean;\n\n /**\n * This is called when an uncaught error would cause the process to exit.\n *\n * @param firstError Uncaught error causing the process to exit\n * @param secondError Will be set if the handler was called multiple times. This can happen either because\n * `onFatalError` itself threw, or because an independent error happened somewhere else while `onFatalError`\n * was running.\n */\n onFatalError?(this: void, firstError: Error, secondError?: Error): void;\n}\n\nconst INTEGRATION_NAME = 'OnUncaughtException';\n\n/**\n * Add a global exception handler.\n */\nexport const onUncaughtExceptionIntegration = defineIntegration((options: Partial = {}) => {\n const optionsWithDefaults = {\n exitEvenIfOtherHandlersAreRegistered: false,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n // errors in worker threads are already handled by the childProcessIntegration\n // also we don't want to exit the Node process on worker thread errors\n if (!isMainThread) {\n return;\n }\n\n global.process.on('uncaughtException', makeErrorHandler(client, optionsWithDefaults));\n },\n };\n});\n\ntype ErrorHandler = { _errorHandler: boolean } & ((error: Error) => void);\n\n/** Exported only for tests */\nexport function makeErrorHandler(client: NodeClient, options: OnUncaughtExceptionOptions): ErrorHandler {\n const timeout = 2000;\n let caughtFirstError: boolean = false;\n let caughtSecondError: boolean = false;\n let calledFatalError: boolean = false;\n let firstError: Error;\n\n const clientOptions = client.getOptions();\n\n return Object.assign(\n (error: Error): void => {\n let onFatalError: OnFatalErrorHandler = logAndExitProcess;\n\n if (options.onFatalError) {\n onFatalError = options.onFatalError;\n } else if (clientOptions.onFatalError) {\n onFatalError = clientOptions.onFatalError as OnFatalErrorHandler;\n }\n\n // Attaching a listener to `uncaughtException` will prevent the node process from exiting. We generally do not\n // want to alter this behaviour so we check for other listeners that users may have attached themselves and adjust\n // exit behaviour of the SDK accordingly:\n // - If other listeners are attached, do not exit.\n // - If the only listener attached is ours, exit.\n const userProvidedListenersCount = (global.process.listeners('uncaughtException') as TaggedListener[]).filter(\n listener => {\n // There are 3 listeners we ignore:\n return (\n // as soon as we're using domains this listener is attached by node itself\n listener.name !== 'domainUncaughtExceptionClear' &&\n // the handler we register for tracing\n listener.tag !== 'sentry_tracingErrorCallback' &&\n // the handler we register in this integration\n (listener as ErrorHandler)._errorHandler !== true\n );\n },\n ).length;\n\n const processWouldExit = userProvidedListenersCount === 0;\n const shouldApplyFatalHandlingLogic = options.exitEvenIfOtherHandlersAreRegistered || processWouldExit;\n\n if (!caughtFirstError) {\n // this is the first uncaught error and the ultimate reason for shutting down\n // we want to do absolutely everything possible to ensure it gets captured\n // also we want to make sure we don't go recursion crazy if more errors happen after this one\n firstError = error;\n caughtFirstError = true;\n\n if (getClient() === client) {\n captureException(error, {\n originalException: error,\n captureContext: {\n level: 'fatal',\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onuncaughtexception',\n },\n });\n }\n\n if (!calledFatalError && shouldApplyFatalHandlingLogic) {\n calledFatalError = true;\n onFatalError(error);\n }\n } else {\n if (shouldApplyFatalHandlingLogic) {\n if (calledFatalError) {\n // we hit an error *after* calling onFatalError - pretty boned at this point, just shut it down\n DEBUG_BUILD &&\n debug.warn(\n 'uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown',\n );\n logAndExitProcess(error);\n } else if (!caughtSecondError) {\n // two cases for how we can hit this branch:\n // - capturing of first error blew up and we just caught the exception from that\n // - quit trying to capture, proceed with shutdown\n // - a second independent error happened while waiting for first error to capture\n // - want to avoid causing premature shutdown before first error capture finishes\n // it's hard to immediately tell case 1 from case 2 without doing some fancy/questionable domain stuff\n // so let's instead just delay a bit before we proceed with our action here\n // in case 1, we just wait a bit unnecessarily but ultimately do the same thing\n // in case 2, the delay hopefully made us wait long enough for the capture to finish\n // two potential nonideal outcomes:\n // nonideal case 1: capturing fails fast, we sit around for a few seconds unnecessarily before proceeding correctly by calling onFatalError\n // nonideal case 2: case 2 happens, 1st error is captured but slowly, timeout completes before capture and we treat second error as the sendErr of (nonexistent) failure from trying to capture first error\n // note that after hitting this branch, we might catch more errors where (caughtSecondError && !calledFatalError)\n // we ignore them - they don't matter to us, we're just waiting for the second error timeout to finish\n caughtSecondError = true;\n setTimeout(() => {\n if (!calledFatalError) {\n // it was probably case 1, let's treat err as the sendErr and call onFatalError\n calledFatalError = true;\n onFatalError(firstError, error);\n } else {\n // it was probably case 2, our first error finished capturing while we waited, cool, do nothing\n }\n }, timeout); // capturing could take at least sendTimeout to fail, plus an arbitrary second for how long it takes to collect surrounding source etc\n }\n }\n }\n },\n { _errorHandler: true },\n );\n}\n","import type { Client, IntegrationFn, SeverityLevel, Span } from '@sentry/core';\nimport {\n captureException,\n consoleSandbox,\n defineIntegration,\n getClient,\n isMatchingPattern,\n withActiveSpan,\n} from '@sentry/core';\nimport { logAndExitProcess } from '../utils/errorhandling';\n\ntype UnhandledRejectionMode = 'none' | 'warn' | 'strict';\n\ntype IgnoreMatcher = { name?: string | RegExp; message?: string | RegExp };\n\ninterface OnUnhandledRejectionOptions {\n /**\n * Option deciding what to do after capturing unhandledRejection,\n * that mimicks behavior of node's --unhandled-rejection flag.\n */\n mode: UnhandledRejectionMode;\n /** Rejection Errors to ignore (don't capture or warn). */\n ignore?: IgnoreMatcher[];\n}\n\nconst INTEGRATION_NAME = 'OnUnhandledRejection';\n\nconst DEFAULT_IGNORES: IgnoreMatcher[] = [\n {\n name: 'AI_NoOutputGeneratedError', // When stream aborts in Vercel AI SDK V5, Vercel flush() fails with an error\n },\n {\n name: 'AbortError', // When stream aborts in Vercel AI SDK V6\n },\n];\n\nconst _onUnhandledRejectionIntegration = ((options: Partial = {}) => {\n const opts: OnUnhandledRejectionOptions = {\n mode: options.mode ?? 'warn',\n ignore: [...DEFAULT_IGNORES, ...(options.ignore ?? [])],\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n global.process.on('unhandledRejection', makeUnhandledPromiseHandler(client, opts));\n },\n };\n}) satisfies IntegrationFn;\n\nexport const onUnhandledRejectionIntegration = defineIntegration(_onUnhandledRejectionIntegration);\n\n/** Extract error info safely */\nfunction extractErrorInfo(reason: unknown): { name: string; message: string } {\n // Check if reason is an object (including Error instances, not just plain objects)\n if (typeof reason !== 'object' || reason === null) {\n return { name: '', message: String(reason ?? '') };\n }\n\n const errorLike = reason as Record;\n const name = typeof errorLike.name === 'string' ? errorLike.name : '';\n const message = typeof errorLike.message === 'string' ? errorLike.message : String(reason);\n\n return { name, message };\n}\n\n/** Check if a matcher matches the reason */\nfunction isMatchingReason(matcher: IgnoreMatcher, errorInfo: ReturnType): boolean {\n // name/message matcher\n const nameMatches = matcher.name === undefined || isMatchingPattern(errorInfo.name, matcher.name, true);\n\n const messageMatches = matcher.message === undefined || isMatchingPattern(errorInfo.message, matcher.message);\n\n return nameMatches && messageMatches;\n}\n\n/** Match helper */\nfunction matchesIgnore(list: IgnoreMatcher[], reason: unknown): boolean {\n const errorInfo = extractErrorInfo(reason);\n return list.some(matcher => isMatchingReason(matcher, errorInfo));\n}\n\n/** Core handler */\nexport function makeUnhandledPromiseHandler(\n client: Client,\n options: OnUnhandledRejectionOptions,\n): (reason: unknown, promise: unknown) => void {\n return function sendUnhandledPromise(reason: unknown, promise: unknown): void {\n // Only handle for the active client\n if (getClient() !== client) {\n return;\n }\n\n // Skip if configured to ignore\n if (matchesIgnore(options.ignore ?? [], reason)) {\n return;\n }\n\n const level: SeverityLevel = options.mode === 'strict' ? 'fatal' : 'error';\n\n // this can be set in places where we cannot reliably get access to the active span/error\n // when the error bubbles up to this handler, we can use this to set the active span\n const activeSpanForError =\n reason && typeof reason === 'object' ? (reason as { _sentry_active_span?: Span })._sentry_active_span : undefined;\n\n const activeSpanWrapper = activeSpanForError\n ? (fn: () => void) => withActiveSpan(activeSpanForError, fn)\n : (fn: () => void) => fn();\n\n activeSpanWrapper(() => {\n captureException(reason, {\n originalException: promise,\n captureContext: {\n extra: { unhandledPromiseRejection: true },\n level,\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onunhandledrejection',\n },\n });\n });\n\n handleRejection(reason, options.mode);\n };\n}\n\n/**\n * Handler for `mode` option\n */\nfunction handleRejection(reason: unknown, mode: UnhandledRejectionMode): void {\n // https://github.com/nodejs/node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js#L234-L240\n const rejectionWarning =\n 'This error originated either by ' +\n 'throwing inside of an async function without a catch block, ' +\n 'or by rejecting a promise which was not handled with .catch().' +\n ' The promise rejected with the reason:';\n\n /* eslint-disable no-console */\n if (mode === 'warn') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n console.error(reason && typeof reason === 'object' && 'stack' in reason ? reason.stack : reason);\n });\n } else if (mode === 'strict') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n });\n logAndExitProcess(reason);\n }\n /* eslint-enable no-console */\n}\n","import { defineIntegration, endSession, getIsolationScope, startSession } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'ProcessSession';\n\n/**\n * Records a Session for the current process to track release health.\n */\nexport const processSessionIntegration = defineIntegration(() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n startSession();\n\n // Emitted in the case of healthy sessions, error of `mechanism.handled: true` and unhandledrejections because\n // The 'beforeExit' event is not emitted for conditions causing explicit termination,\n // such as calling process.exit() or uncaught exceptions.\n // Ref: https://nodejs.org/api/process.html#process_event_beforeexit\n process.on('beforeExit', () => {\n const session = getIsolationScope().getSession();\n\n // Only call endSession, if the Session exists on Scope and SessionStatus is not a\n // Terminal Status i.e. Exited or Crashed because\n // \"When a session is moved away from ok it must not be updated anymore.\"\n // Ref: https://develop.sentry.dev/sdk/sessions/\n if (session?.status !== 'ok') {\n endSession();\n }\n });\n },\n };\n});\n","import * as http from 'node:http';\nimport type { Client, Envelope, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration, serializeEnvelope, suppressTracing } from '@sentry/core';\n\ntype SpotlightConnectionOptions = {\n /**\n * Set this if the Spotlight Sidecar is not running on localhost:8969\n * By default, the Url is set to http://localhost:8969/stream\n */\n sidecarUrl?: string;\n};\n\nexport const INTEGRATION_NAME = 'Spotlight';\n\nconst _spotlightIntegration = ((options: Partial = {}) => {\n const _options = {\n sidecarUrl: options.sidecarUrl || 'http://localhost:8969/stream',\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n try {\n if (process.env.NODE_ENV && process.env.NODE_ENV !== 'development') {\n debug.warn(\"[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?\");\n }\n } catch {\n // ignore\n }\n connectToSpotlight(client, _options);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Use this integration to send errors and transactions to Spotlight.\n *\n * Learn more about spotlight at https://spotlightjs.com\n *\n * Important: This integration only works with Node 18 or newer.\n */\nexport const spotlightIntegration = defineIntegration(_spotlightIntegration);\n\nfunction connectToSpotlight(client: Client, options: Required): void {\n const spotlightUrl = parseSidecarUrl(options.sidecarUrl);\n if (!spotlightUrl) {\n return;\n }\n\n let failedRequests = 0;\n\n client.on('beforeEnvelope', (envelope: Envelope) => {\n if (failedRequests > 3) {\n debug.warn('[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests');\n return;\n }\n\n const serializedEnvelope = serializeEnvelope(envelope);\n suppressTracing(() => {\n const req = http.request(\n {\n method: 'POST',\n path: spotlightUrl.pathname,\n hostname: spotlightUrl.hostname,\n port: spotlightUrl.port,\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n },\n res => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 400) {\n // Reset failed requests counter on success\n failedRequests = 0;\n }\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n res.setEncoding('utf8');\n },\n );\n\n req.on('error', () => {\n failedRequests++;\n debug.warn('[Spotlight] Failed to send envelope to Spotlight Sidecar');\n });\n req.write(serializedEnvelope);\n req.end();\n });\n });\n}\n\nfunction parseSidecarUrl(url: string): URL | undefined {\n try {\n return new URL(`${url}`);\n } catch {\n debug.warn(`[Spotlight] Invalid sidecar URL: ${url}`);\n return undefined;\n }\n}\n","import * as util from 'node:util';\nimport { defineIntegration } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'NodeSystemError';\n\ntype SystemErrorContext = {\n dest?: string; // If present, the file path destination when reporting a file system error\n errno: number; // The system-provided error number\n path?: string; // If present, the file path when reporting a file system error\n};\n\ntype SystemError = Error & SystemErrorContext;\n\nfunction isSystemError(error: unknown): error is SystemError {\n if (!(error instanceof Error)) {\n return false;\n }\n\n if (!('errno' in error) || typeof error.errno !== 'number') {\n return false;\n }\n\n // Appears this is the recommended way to check for Node.js SystemError\n // https://github.com/nodejs/node/issues/46869\n return util.getSystemErrorMap().has(error.errno);\n}\n\ntype Options = {\n /**\n * If true, includes the `path` and `dest` properties in the error context.\n */\n includePaths?: boolean;\n};\n\n/**\n * Captures context for Node.js SystemError errors.\n */\nexport const systemErrorIntegration = defineIntegration((options: Options = {}) => {\n return {\n name: INTEGRATION_NAME,\n processEvent: (event, hint, client) => {\n if (!isSystemError(hint.originalException)) {\n return event;\n }\n\n const error = hint.originalException;\n\n const errorContext: SystemErrorContext = {\n ...(error as SystemErrorContext),\n };\n\n if (!client.getOptions().sendDefaultPii && options.includePaths !== true) {\n delete errorContext.path;\n delete errorContext.dest;\n }\n\n event.contexts = {\n ...event.contexts,\n node_system_error: errorContext,\n };\n\n for (const exception of event.exception?.values || []) {\n if (exception.value) {\n if (error.path && exception.value.includes(error.path)) {\n exception.value = exception.value.replace(`'${error.path}'`, '').trim();\n }\n if (error.dest && exception.value.includes(error.dest)) {\n exception.value = exception.value.replace(`'${error.dest}'`, '').trim();\n }\n }\n }\n\n return event;\n },\n };\n});\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/member-ordering */\n/* eslint-disable jsdoc/require-jsdoc */\nimport * as http from 'node:http';\nimport type * as net from 'node:net';\nimport type { Duplex } from 'node:stream';\nimport type * as tls from 'node:tls';\n\nexport * from './helpers';\n\ninterface HttpConnectOpts extends net.TcpNetConnectOpts {\n secureEndpoint: false;\n protocol?: string;\n}\n\ninterface HttpsConnectOpts extends tls.ConnectionOptions {\n secureEndpoint: true;\n protocol?: string;\n port: number;\n}\n\nexport type AgentConnectOpts = HttpConnectOpts | HttpsConnectOpts;\n\nconst INTERNAL = Symbol('AgentBaseInternalState');\n\ninterface InternalState {\n defaultPort?: number;\n protocol?: string;\n currentSocket?: Duplex;\n}\n\nexport abstract class Agent extends http.Agent {\n private [INTERNAL]: InternalState;\n\n // Set by `http.Agent` - missing from `@types/node`\n options!: Partial;\n keepAlive!: boolean;\n\n constructor(opts?: http.AgentOptions) {\n super(opts);\n this[INTERNAL] = {};\n }\n\n abstract connect(\n req: http.ClientRequest,\n options: AgentConnectOpts,\n ): Promise | Duplex | http.Agent;\n\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options?: AgentConnectOpts): boolean {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n if (typeof (options as Partial).secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string') return false;\n return stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);\n }\n\n createSocket(req: http.ClientRequest, options: AgentConnectOpts, cb: (err: Error | null, s?: Duplex) => void): void {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then(socket => {\n if (socket instanceof http.Agent) {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, cb);\n }\n\n createConnection(): Duplex {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n\n get defaultPort(): number {\n return this[INTERNAL].defaultPort ?? (this.protocol === 'https:' ? 443 : 80);\n }\n\n set defaultPort(v: number) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n\n get protocol(): string {\n return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? 'https:' : 'http:');\n }\n\n set protocol(v: string) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable jsdoc/require-jsdoc */\nimport type { IncomingHttpHeaders } from 'node:http';\nimport type { Readable } from 'node:stream';\nimport { debug } from '@sentry/core';\n\nfunction debugLog(...args: unknown[]): void {\n debug.log('[https-proxy-agent:parse-proxy-response]', ...args);\n}\n\nexport interface ConnectResponse {\n statusCode: number;\n statusText: string;\n headers: IncomingHttpHeaders;\n}\n\nexport function parseProxyResponse(socket: Readable): Promise<{ connect: ConnectResponse; buffered: Buffer }> {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers: Buffer[] = [];\n\n function read() {\n const b = socket.read();\n if (b) ondata(b);\n else socket.once('readable', read);\n }\n\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n\n function onend() {\n cleanup();\n debugLog('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n\n function onerror(err: Error) {\n cleanup();\n debugLog('onerror %o', err);\n reject(err);\n }\n\n function ondata(b: Buffer) {\n buffers.push(b);\n buffersLength += b.length;\n\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n\n if (endOfHeaders === -1) {\n // keep buffering\n debugLog('have not received end of HTTP headers yet...');\n read();\n return;\n }\n\n const headerParts = buffered.subarray(0, endOfHeaders).toString('ascii').split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +(firstLineParts[1] || 0);\n const statusText = firstLineParts.slice(2).join(' ');\n const headers: IncomingHttpHeaders = {};\n for (const header of headerParts) {\n if (!header) continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n } else if (Array.isArray(current)) {\n current.push(value);\n } else {\n headers[key] = value;\n }\n }\n debugLog('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n\n socket.on('error', onerror);\n socket.on('end', onend);\n\n read();\n });\n}\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// eslint-disable-next-line import/no-duplicates\nimport type * as http from 'node:http';\n// eslint-disable-next-line import/no-duplicates\nimport type { OutgoingHttpHeaders } from 'node:http';\nimport * as net from 'node:net';\nimport * as tls from 'node:tls';\nimport { debug } from '@sentry/core';\nimport type { AgentConnectOpts } from './base';\nimport { Agent } from './base';\nimport { parseProxyResponse } from './parse-proxy-response';\n\nfunction debugLog(...args: unknown[]): void {\n debug.log('[https-proxy-agent]', ...args);\n}\n\ntype Protocol = T extends `${infer Protocol}:${infer _}` ? Protocol : never;\n\ntype ConnectOptsMap = {\n http: Omit;\n https: Omit;\n};\n\ntype ConnectOpts = {\n [P in keyof ConnectOptsMap]: Protocol extends P ? ConnectOptsMap[P] : never;\n}[keyof ConnectOptsMap];\n\nexport type HttpsProxyAgentOptions = ConnectOpts &\n http.AgentOptions & {\n headers?: OutgoingHttpHeaders | (() => OutgoingHttpHeaders);\n };\n\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nexport class HttpsProxyAgent extends Agent {\n static protocols = ['http', 'https'] as const;\n\n readonly proxy: URL;\n proxyHeaders: OutgoingHttpHeaders | (() => OutgoingHttpHeaders);\n connectOpts: net.TcpNetConnectOpts & tls.ConnectionOptions;\n\n constructor(proxy: Uri | URL, opts?: HttpsProxyAgentOptions) {\n super(opts);\n this.options = {};\n this.proxy = typeof proxy === 'string' ? new URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debugLog('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === 'https:' ? 443 : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req: http.ClientRequest, opts: AgentConnectOpts): Promise {\n const { proxy } = this;\n\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n\n // Create a socket connection to the proxy server.\n let socket: net.Socket;\n if (proxy.protocol === 'https:') {\n debugLog('Creating `tls.Socket`: %o', this.connectOpts);\n const servername = this.connectOpts.servername || this.connectOpts.host;\n socket = tls.connect({\n ...this.connectOpts,\n servername: servername && net.isIP(servername) ? undefined : servername,\n });\n } else {\n debugLog('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n\n const headers: OutgoingHttpHeaders =\n typeof this.proxyHeaders === 'function' ? this.proxyHeaders() : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n\n headers.Host = `${host}:${opts.port}`;\n\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive ? 'Keep-Alive' : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n\n const proxyResponsePromise = parseProxyResponse(socket);\n\n socket.write(`${payload}\\r\\n`);\n\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not EventEmitter in Node types\n this.emit('proxyConnect', connect, req);\n\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debugLog('Upgrading socket connection to TLS');\n const servername = opts.servername || opts.host;\n return tls.connect({\n ...omit(opts, 'host', 'path', 'port'),\n socket,\n servername: net.isIP(servername) ? undefined : servername,\n });\n }\n\n return socket;\n }\n\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s: net.Socket) => {\n debugLog('Replaying proxy buffer for failed request');\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n\n return fakeSocket;\n }\n}\n\nfunction resume(socket: net.Socket | tls.TLSSocket): void {\n socket.resume();\n}\n\nfunction omit(\n obj: T,\n ...keys: K\n): {\n [K2 in Exclude]: T[K2];\n} {\n const ret = {} as {\n [K in keyof typeof obj]: (typeof obj)[K];\n };\n let key: keyof typeof obj;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n","import * as http from 'node:http';\nimport * as https from 'node:https';\nimport { Readable } from 'node:stream';\nimport { createGzip } from 'node:zlib';\nimport type {\n BaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequest,\n TransportRequestExecutor,\n} from '@sentry/core';\nimport { consoleSandbox, createTransport, suppressTracing } from '@sentry/core';\nimport { HttpsProxyAgent } from '../proxy';\nimport type { HTTPModule } from './http-module';\n\nexport interface NodeTransportOptions extends BaseTransportOptions {\n /** Set a proxy that should be used for outbound requests. */\n proxy?: string;\n /** HTTPS proxy CA certificates */\n caCerts?: string | Buffer | Array;\n /** Custom HTTP module. Defaults to the native 'http' and 'https' modules. */\n httpModule?: HTTPModule;\n /** Allow overriding connection keepAlive, defaults to false */\n keepAlive?: boolean;\n}\n\n// Estimated maximum size for reasonable standalone event\nconst GZIP_THRESHOLD = 1024 * 32;\n\n/**\n * Gets a stream from a Uint8Array or string\n * Readable.from is ideal but was added in node.js v12.3.0 and v10.17.0\n */\nfunction streamFromBody(body: Uint8Array | string): Readable {\n return new Readable({\n read() {\n this.push(body);\n this.push(null);\n },\n });\n}\n\n/**\n * Creates a Transport that uses native the native 'http' and 'https' modules to send events to Sentry.\n */\nexport function makeNodeTransport(options: NodeTransportOptions): Transport {\n let urlSegments: URL;\n\n try {\n urlSegments = new URL(options.url);\n } catch (_e) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.',\n );\n });\n return createTransport(options, () => Promise.resolve({}));\n }\n\n const isHttps = urlSegments.protocol === 'https:';\n\n // Proxy prioritization: http => `options.proxy` | `process.env.http_proxy`\n // Proxy prioritization: https => `options.proxy` | `process.env.https_proxy` | `process.env.http_proxy`\n const proxy = applyNoProxyOption(\n urlSegments,\n options.proxy || (isHttps ? process.env.https_proxy : undefined) || process.env.http_proxy,\n );\n\n const nativeHttpModule = isHttps ? https : http;\n const keepAlive = options.keepAlive === undefined ? false : options.keepAlive;\n\n // TODO(v11): Evaluate if we can set keepAlive to true. This would involve testing for memory leaks in older node\n // versions(>= 8) as they had memory leaks when using it: #2555\n const agent = proxy\n ? (new HttpsProxyAgent(proxy) as http.Agent)\n : new nativeHttpModule.Agent({ keepAlive, maxSockets: 30, timeout: 2000 });\n\n const requestExecutor = createRequestExecutor(options, options.httpModule ?? nativeHttpModule, agent);\n return createTransport(options, requestExecutor);\n}\n\n/**\n * Honors the `no_proxy` env variable with the highest priority to allow for hosts exclusion.\n *\n * @param transportUrl The URL the transport intends to send events to.\n * @param proxy The client configured proxy.\n * @returns A proxy the transport should use.\n */\nfunction applyNoProxyOption(transportUrlSegments: URL, proxy: string | undefined): string | undefined {\n const { no_proxy } = process.env;\n\n const urlIsExemptFromProxy = no_proxy\n ?.split(',')\n .some(\n exemption => transportUrlSegments.host.endsWith(exemption) || transportUrlSegments.hostname.endsWith(exemption),\n );\n\n if (urlIsExemptFromProxy) {\n return undefined;\n } else {\n return proxy;\n }\n}\n\n/**\n * Creates a RequestExecutor to be used with `createTransport`.\n */\nfunction createRequestExecutor(\n options: NodeTransportOptions,\n httpModule: HTTPModule,\n agent: http.Agent,\n): TransportRequestExecutor {\n const { hostname, pathname, port, protocol, search } = new URL(options.url);\n return function makeRequest(request: TransportRequest): Promise {\n return new Promise((resolve, reject) => {\n // This ensures we do not generate any spans in OpenTelemetry for the transport\n suppressTracing(() => {\n let body = streamFromBody(request.body);\n\n const headers: Record = { ...options.headers };\n\n if (request.body.length > GZIP_THRESHOLD) {\n headers['content-encoding'] = 'gzip';\n body = body.pipe(createGzip());\n }\n\n const hostnameIsIPv6 = hostname.startsWith('[');\n\n const req = httpModule.request(\n {\n method: 'POST',\n agent,\n headers,\n // Remove \"[\" and \"]\" from IPv6 hostnames\n hostname: hostnameIsIPv6 ? hostname.slice(1, -1) : hostname,\n path: `${pathname}${search}`,\n port,\n protocol,\n ca: options.caCerts,\n },\n res => {\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n\n res.setEncoding('utf8');\n\n // \"Key-value pairs of header names and values. Header names are lower-cased.\"\n // https://nodejs.org/api/http.html#http_message_headers\n const retryAfterHeader = res.headers['retry-after'] ?? null;\n const rateLimitsHeader = res.headers['x-sentry-rate-limits'] ?? null;\n\n resolve({\n statusCode: res.statusCode,\n headers: {\n 'retry-after': retryAfterHeader,\n 'x-sentry-rate-limits': Array.isArray(rateLimitsHeader)\n ? rateLimitsHeader[0] || null\n : rateLimitsHeader,\n },\n });\n },\n );\n\n req.on('error', reject);\n body.pipe(req);\n });\n });\n };\n}\n","import { envToBool } from '@sentry/core';\n\n/**\n * Parse the spotlight option with proper precedence:\n * - `false` or explicit string from options: use as-is\n * - `true`: enable spotlight, but prefer a custom URL from the env var if set\n * - `undefined`: defer entirely to the env var (bool or URL)\n */\nexport function getSpotlightConfig(optionsSpotlight: boolean | string | undefined): boolean | string | undefined {\n if (optionsSpotlight === false) {\n return false;\n }\n\n if (typeof optionsSpotlight === 'string') {\n return optionsSpotlight;\n }\n\n // optionsSpotlight is true or undefined\n const envBool = envToBool(process.env.SENTRY_SPOTLIGHT, { strict: true });\n const envUrl = envBool === null && process.env.SENTRY_SPOTLIGHT ? process.env.SENTRY_SPOTLIGHT : undefined;\n\n return optionsSpotlight === true\n ? (envUrl ?? true) // true: use env URL if present, otherwise true\n : (envBool ?? envUrl); // undefined: use env var (bool or URL)\n}\n","import { posix, sep } from 'node:path';\nimport { dirname } from '@sentry/core';\n\n/** normalizes Windows paths */\nfunction normalizeWindowsPath(path: string): string {\n return path\n .replace(/^[A-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/'); // replace all `\\` instances with `/`\n}\n\n/** Creates a function that gets the module name from a filename */\nexport function createGetModuleFromFilename(\n basePath: string = process.argv[1] ? dirname(process.argv[1]) : process.cwd(),\n isWindows: boolean = sep === '\\\\',\n): (filename: string | undefined) => string | undefined {\n const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;\n\n return (filename: string | undefined) => {\n if (!filename) {\n return;\n }\n\n const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;\n\n // eslint-disable-next-line prefer-const\n let { dir, base: file, ext } = posix.parse(normalizedFilename);\n\n if (ext === '.js' || ext === '.mjs' || ext === '.cjs') {\n file = file.slice(0, ext.length * -1);\n }\n\n // The file name might be URI-encoded which we want to decode to\n // the original file name.\n const decodedFile = decodeURIComponent(file);\n\n if (!dir) {\n // No dirname whatsoever\n dir = '.';\n }\n\n const n = dir.lastIndexOf('/node_modules');\n if (n > -1) {\n return `${dir.slice(n + 14).replace(/\\//g, '.')}:${decodedFile}`;\n }\n\n // Let's see if it's a part of the main module\n // To be a part of main module, it has to share the same base\n if (dir.startsWith(normalizedBase)) {\n const moduleName = dir.slice(normalizedBase.length + 1).replace(/\\//g, '.');\n return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;\n }\n\n return decodedFile;\n };\n}\n","// PUBLIC APIS\n\nimport type { StackParser } from '@sentry/core';\nimport { createStackParser, GLOBAL_OBJ, nodeStackLineParser } from '@sentry/core';\nimport { createGetModuleFromFilename } from '../utils/module';\n\n/**\n * Returns a release dynamically from environment variables.\n */\n// eslint-disable-next-line complexity\nexport function getSentryRelease(fallback?: string): string | undefined {\n // Always read first as Sentry takes this as precedence\n if (process.env.SENTRY_RELEASE) {\n return process.env.SENTRY_RELEASE;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (GLOBAL_OBJ.SENTRY_RELEASE?.id) {\n return GLOBAL_OBJ.SENTRY_RELEASE.id;\n }\n\n // This list is in approximate alpha order, separated into 3 categories:\n // 1. Git providers\n // 2. CI providers with specific environment variables (has the provider name in the variable name)\n // 3. CI providers with generic environment variables (checked for last to prevent possible false positives)\n\n const possibleReleaseNameOfGitProvider =\n // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables\n process.env['GITHUB_SHA'] ||\n // GitLab CI - https://docs.gitlab.com/ee/ci/variables/predefined_variables.html\n process.env['CI_MERGE_REQUEST_SOURCE_BRANCH_SHA'] ||\n process.env['CI_BUILD_REF'] ||\n process.env['CI_COMMIT_SHA'] ||\n // Bitbucket - https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/\n process.env['BITBUCKET_COMMIT'];\n\n const possibleReleaseNameOfCiProvidersWithSpecificEnvVar =\n // AppVeyor - https://www.appveyor.com/docs/environment-variables/\n process.env['APPVEYOR_PULL_REQUEST_HEAD_COMMIT'] ||\n process.env['APPVEYOR_REPO_COMMIT'] ||\n // AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html\n process.env['CODEBUILD_RESOLVED_SOURCE_VERSION'] ||\n // AWS Amplify - https://docs.aws.amazon.com/amplify/latest/userguide/environment-variables.html\n process.env['AWS_COMMIT_ID'] ||\n // Azure Pipelines - https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml\n process.env['BUILD_SOURCEVERSION'] ||\n // Bitrise - https://devcenter.bitrise.io/builds/available-environment-variables/\n process.env['GIT_CLONE_COMMIT_HASH'] ||\n // Buddy CI - https://buddy.works/docs/pipelines/environment-variables#default-environment-variables\n process.env['BUDDY_EXECUTION_REVISION'] ||\n // Builtkite - https://buildkite.com/docs/pipelines/environment-variables\n process.env['BUILDKITE_COMMIT'] ||\n // CircleCI - https://circleci.com/docs/variables/\n process.env['CIRCLE_SHA1'] ||\n // Cirrus CI - https://cirrus-ci.org/guide/writing-tasks/#environment-variables\n process.env['CIRRUS_CHANGE_IN_REPO'] ||\n // Codefresh - https://codefresh.io/docs/docs/codefresh-yaml/variables/\n process.env['CF_REVISION'] ||\n // Codemagic - https://docs.codemagic.io/yaml-basic-configuration/environment-variables/\n process.env['CM_COMMIT'] ||\n // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables\n process.env['CF_PAGES_COMMIT_SHA'] ||\n // Drone - https://docs.drone.io/pipeline/environment/reference/\n process.env['DRONE_COMMIT_SHA'] ||\n // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables\n process.env['FC_GIT_COMMIT_SHA'] ||\n // Heroku #1 https://devcenter.heroku.com/articles/heroku-ci\n process.env['HEROKU_TEST_RUN_COMMIT_VERSION'] ||\n // Heroku #2 https://devcenter.heroku.com/articles/dyno-metadata#dyno-metadata\n process.env['HEROKU_BUILD_COMMIT'] ||\n // Heroku #3 (deprecated by Heroku, kept for backward compatibility)\n process.env['HEROKU_SLUG_COMMIT'] ||\n // Railway - https://docs.railway.app/reference/variables#git-variables\n process.env['RAILWAY_GIT_COMMIT_SHA'] ||\n // Render - https://render.com/docs/environment-variables\n process.env['RENDER_GIT_COMMIT'] ||\n // Semaphore CI - https://docs.semaphoreci.com/ci-cd-environment/environment-variables\n process.env['SEMAPHORE_GIT_SHA'] ||\n // TravisCI - https://docs.travis-ci.com/user/environment-variables/#default-environment-variables\n process.env['TRAVIS_PULL_REQUEST_SHA'] ||\n // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables\n process.env['VERCEL_GIT_COMMIT_SHA'] ||\n process.env['VERCEL_GITHUB_COMMIT_SHA'] ||\n process.env['VERCEL_GITLAB_COMMIT_SHA'] ||\n process.env['VERCEL_BITBUCKET_COMMIT_SHA'] ||\n // Zeit (now known as Vercel)\n process.env['ZEIT_GITHUB_COMMIT_SHA'] ||\n process.env['ZEIT_GITLAB_COMMIT_SHA'] ||\n process.env['ZEIT_BITBUCKET_COMMIT_SHA'];\n\n const possibleReleaseNameOfCiProvidersWithGenericEnvVar =\n // CloudBees CodeShip - https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables\n process.env['CI_COMMIT_ID'] ||\n // Coolify - https://coolify.io/docs/knowledge-base/environment-variables\n process.env['SOURCE_COMMIT'] ||\n // Heroku #3 https://devcenter.heroku.com/changelog-items/630\n process.env['SOURCE_VERSION'] ||\n // Jenkins - https://plugins.jenkins.io/git/#environment-variables\n process.env['GIT_COMMIT'] ||\n // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata\n process.env['COMMIT_REF'] ||\n // TeamCity - https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html\n process.env['BUILD_VCS_NUMBER'] ||\n // Woodpecker CI - https://woodpecker-ci.org/docs/usage/environment\n process.env['CI_COMMIT_SHA'];\n\n return (\n possibleReleaseNameOfGitProvider ||\n possibleReleaseNameOfCiProvidersWithSpecificEnvVar ||\n possibleReleaseNameOfCiProvidersWithGenericEnvVar ||\n fallback\n );\n}\n\n/** Node.js stack parser */\nexport const defaultStackParser: StackParser = createStackParser(nodeStackLineParser(createGetModuleFromFilename()));\n","import * as os from 'node:os';\nimport type { Tracer } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport type { DynamicSamplingContext, Scope, ServerRuntimeClientOptions, TraceContext } from '@sentry/core';\nimport {\n _INTERNAL_clearAiProviderSkips,\n _INTERNAL_flushLogsBuffer,\n applySdkMetadata,\n debug,\n SDK_VERSION,\n ServerRuntimeClient,\n} from '@sentry/core';\nimport { type AsyncLocalStorageLookup, getTraceContextForScope } from '@sentry/opentelemetry';\nimport { isMainThread, threadId } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClientOptions } from '../types';\n\nconst DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS = 60_000; // 60s was chosen arbitrarily\n\n/** A client for using Sentry with Node & OpenTelemetry. */\nexport class NodeClient extends ServerRuntimeClient {\n public traceProvider: BasicTracerProvider | undefined;\n public asyncLocalStorageLookup: AsyncLocalStorageLookup | undefined;\n\n private _tracer: Tracer | undefined;\n private _clientReportInterval: NodeJS.Timeout | undefined;\n private _clientReportOnExitFlushListener: (() => void) | undefined;\n private _logOnExitFlushListener: (() => void) | undefined;\n\n public constructor(options: NodeClientOptions) {\n const serverName =\n options.includeServerName === false\n ? undefined\n : options.serverName || global.process.env.SENTRY_NAME || os.hostname();\n\n const clientOptions: ServerRuntimeClientOptions = {\n ...options,\n platform: 'node',\n // Use provided runtime or default to 'node' with current process version\n runtime: options.runtime || { name: 'node', version: global.process.version },\n serverName,\n };\n\n if (options.openTelemetryInstrumentations) {\n registerInstrumentations({\n instrumentations: options.openTelemetryInstrumentations,\n });\n }\n\n applySdkMetadata(clientOptions, 'node');\n\n debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${isMainThread ? 'main' : `worker-${threadId}`}.`);\n\n super(clientOptions);\n\n if (this.getOptions().enableLogs) {\n this._logOnExitFlushListener = () => {\n _INTERNAL_flushLogsBuffer(this);\n };\n\n if (serverName) {\n this.on('beforeCaptureLog', log => {\n log.attributes = {\n ...log.attributes,\n 'server.address': serverName,\n };\n });\n }\n\n process.on('beforeExit', this._logOnExitFlushListener);\n }\n }\n\n /** Get the OTEL tracer. */\n public get tracer(): Tracer {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/node';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async flush(timeout?: number): PromiseLike {\n await this.traceProvider?.forceFlush();\n\n if (this.getOptions().sendClientReports) {\n this._flushOutcomes();\n }\n\n return super.flush(timeout);\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async close(timeout?: number | undefined): PromiseLike {\n if (this._clientReportInterval) {\n clearInterval(this._clientReportInterval);\n }\n\n if (this._clientReportOnExitFlushListener) {\n process.off('beforeExit', this._clientReportOnExitFlushListener);\n }\n\n if (this._logOnExitFlushListener) {\n process.off('beforeExit', this._logOnExitFlushListener);\n }\n\n const allEventsSent = await super.close(timeout);\n if (this.traceProvider) {\n await this.traceProvider.shutdown();\n }\n\n return allEventsSent;\n }\n\n /**\n * Will start tracking client reports for this client.\n *\n * NOTICE: This method will create an interval that is periodically called and attach a `process.on('beforeExit')`\n * hook. To clean up these resources, call `.close()` when you no longer intend to use the client. Not doing so will\n * result in a memory leak.\n */\n // The reason client reports need to be manually activated with this method instead of just enabling them in a\n // constructor, is that if users periodically and unboundedly create new clients, we will create more and more\n // intervals and beforeExit listeners, thus leaking memory. In these situations, users are required to call\n // `client.close()` in order to dispose of the acquired resources.\n // We assume that calling this method in Sentry.init() is a sensible default, because calling Sentry.init() over and\n // over again would also result in memory leaks.\n // Note: We have experimented with using `FinalizationRegisty` to clear the interval when the client is garbage\n // collected, but it did not work, because the cleanup function never got called.\n public startClientReportTracking(): void {\n const clientOptions = this.getOptions();\n if (clientOptions.sendClientReports) {\n this._clientReportOnExitFlushListener = () => {\n this._flushOutcomes();\n };\n\n this._clientReportInterval = setInterval(() => {\n DEBUG_BUILD && debug.log('Flushing client reports based on interval.');\n this._flushOutcomes();\n }, clientOptions.clientReportFlushInterval ?? DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS)\n // Unref is critical for not preventing the process from exiting because the interval is active.\n .unref();\n\n process.on('beforeExit', this._clientReportOnExitFlushListener);\n }\n }\n\n /** @inheritDoc */\n protected _setupIntegrations(): void {\n // Clear AI provider skip registrations before setting up integrations\n // This ensures a clean state between different client initializations\n // (e.g., when LangChain skips OpenAI in one client, but a subsequent client uses OpenAI standalone)\n _INTERNAL_clearAiProviderSkips();\n super._setupIntegrations();\n }\n\n /** Custom implementation for OTEL, so we can handle scope-span linking. */\n protected _getTraceInfoFromScope(\n scope: Scope | undefined,\n ): [dynamicSamplingContext: Partial | undefined, traceContext: TraceContext | undefined] {\n if (!scope) {\n return [undefined, undefined];\n }\n\n return getTraceContextForScope(this, scope);\n }\n}\n","import { debug, GLOBAL_OBJ } from '@sentry/core';\nimport { createAddHookMessageChannel } from 'import-in-the-middle';\nimport * as moduleModule from 'module';\nimport { supportsEsmLoaderHooks } from '../utils/detection';\n\n/**\n * Initialize the ESM loader - This method is private and not part of the public\n * API.\n *\n * @ignore\n */\nexport function initializeEsmLoader(): void {\n if (!supportsEsmLoaderHooks()) {\n return;\n }\n\n if (!GLOBAL_OBJ._sentryEsmLoaderHookRegistered) {\n GLOBAL_OBJ._sentryEsmLoaderHookRegistered = true;\n\n try {\n const { addHookMessagePort } = createAddHookMessageChannel();\n // @ts-expect-error register is available in these versions\n moduleModule.register('import-in-the-middle/hook.mjs', import.meta.url, {\n data: { addHookMessagePort, include: [] },\n transferList: [addHookMessagePort],\n });\n } catch (error) {\n debug.warn(\"Failed to register 'import-in-the-middle' hook\", error);\n }\n }\n}\n","import type { Integration, Options } from '@sentry/core';\nimport {\n applySdkMetadata,\n consoleIntegration,\n consoleSandbox,\n conversationIdIntegration,\n debug,\n envToBool,\n functionToStringIntegration,\n getCurrentScope,\n getIntegrationsToSetup,\n hasSpansEnabled,\n inboundFiltersIntegration,\n linkedErrorsIntegration,\n propagationContextFromHeaders,\n requestDataIntegration,\n stackParserFromStackParserOptions,\n} from '@sentry/core';\nimport {\n enhanceDscWithOpenTelemetryRootSpanName,\n openTelemetrySetupCheck,\n setOpenTelemetryContextAsyncContextStrategy,\n setupEventContextTrace,\n} from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { childProcessIntegration } from '../integrations/childProcess';\nimport { nodeContextIntegration } from '../integrations/context';\nimport { contextLinesIntegration } from '../integrations/contextlines';\nimport { httpIntegration } from '../integrations/http';\nimport { localVariablesIntegration } from '../integrations/local-variables';\nimport { modulesIntegration } from '../integrations/modules';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch';\nimport { onUncaughtExceptionIntegration } from '../integrations/onuncaughtexception';\nimport { onUnhandledRejectionIntegration } from '../integrations/onunhandledrejection';\nimport { processSessionIntegration } from '../integrations/processSession';\nimport { INTEGRATION_NAME as SPOTLIGHT_INTEGRATION_NAME, spotlightIntegration } from '../integrations/spotlight';\nimport { systemErrorIntegration } from '../integrations/systemError';\nimport { makeNodeTransport } from '../transports';\nimport type { NodeClientOptions, NodeOptions } from '../types';\nimport { isCjs } from '../utils/detection';\nimport { getSpotlightConfig } from '../utils/spotlight';\nimport { defaultStackParser, getSentryRelease } from './api';\nimport { NodeClient } from './client';\nimport { initializeEsmLoader } from './esmLoader';\n\n/**\n * Get default integrations for the Node-Core SDK.\n */\nexport function getDefaultIntegrations(): Integration[] {\n return [\n // Common\n // TODO(v11): Replace with `eventFiltersIntegration` once we remove the deprecated `inboundFiltersIntegration`\n // eslint-disable-next-line deprecation/deprecation\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n linkedErrorsIntegration(),\n requestDataIntegration(),\n systemErrorIntegration(),\n conversationIdIntegration(),\n // Native Wrappers\n consoleIntegration(),\n httpIntegration(),\n nativeNodeFetchIntegration(),\n // Global Handlers\n onUncaughtExceptionIntegration(),\n onUnhandledRejectionIntegration(),\n // Event Info\n contextLinesIntegration(),\n localVariablesIntegration(),\n nodeContextIntegration(),\n childProcessIntegration(),\n processSessionIntegration(),\n modulesIntegration(),\n ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nexport function init(options: NodeOptions | undefined = {}): NodeClient | undefined {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nexport function initWithoutDefaultIntegrations(options: NodeOptions | undefined = {}): NodeClient {\n return _init(options, () => []);\n}\n\n/**\n * Initialize Sentry for Node, without performance instrumentation.\n */\nfunction _init(\n _options: NodeOptions | undefined = {},\n getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClient {\n const options = getClientOptions(_options, getDefaultIntegrationsImpl);\n\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n debug.enable();\n } else {\n // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n\n if (options.registerEsmLoaderHooks !== false) {\n initializeEsmLoader();\n }\n\n setOpenTelemetryContextAsyncContextStrategy();\n\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n if (options.spotlight && !options.integrations.some(({ name }) => name === SPOTLIGHT_INTEGRATION_NAME)) {\n options.integrations.push(\n spotlightIntegration({\n sidecarUrl: typeof options.spotlight === 'string' ? options.spotlight : undefined,\n }),\n );\n }\n\n applySdkMetadata(options, 'node-core');\n\n const client = new NodeClient(options);\n // The client is on the current scope, from where it generally is inherited\n getCurrentScope().setClient(client);\n\n client.init();\n\n debug.log(`SDK initialized from ${isCjs() ? 'CommonJS' : 'ESM'}`);\n\n client.startClientReportTracking();\n\n updateScopeFromEnvVariables();\n\n enhanceDscWithOpenTelemetryRootSpanName(client);\n setupEventContextTrace(client);\n\n // Ensure we flush events when vercel functions are ended\n // See: https://vercel.com/docs/functions/functions-api-reference#sigterm-signal\n if (process.env.VERCEL) {\n process.on('SIGTERM', async () => {\n // We have 500ms for processing here, so we try to make sure to have enough time to send the events\n await client.flush(200);\n });\n }\n\n return client;\n}\n\n/**\n * Validate that your OpenTelemetry setup is correct.\n */\nexport function validateOpenTelemetrySetup(): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n const setup = openTelemetrySetupCheck();\n\n const required: ReturnType = ['SentryContextManager', 'SentryPropagator'];\n\n if (hasSpansEnabled()) {\n required.push('SentrySpanProcessor');\n }\n\n for (const k of required) {\n if (!setup.includes(k)) {\n debug.error(\n `You have to set up the ${k}. Without this, the OpenTelemetry & Sentry integration will not work properly.`,\n );\n }\n }\n\n if (!setup.includes('SentrySampler')) {\n debug.warn(\n 'You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.',\n );\n }\n}\n\nfunction getClientOptions(\n options: NodeOptions,\n getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClientOptions {\n const release = getRelease(options.release);\n\n const spotlight = getSpotlightConfig(options.spotlight);\n\n const tracesSampleRate = getTracesSampleRate(options.tracesSampleRate);\n\n const mergedOptions = {\n ...options,\n dsn: options.dsn ?? process.env.SENTRY_DSN,\n environment: options.environment ?? process.env.SENTRY_ENVIRONMENT,\n sendClientReports: options.sendClientReports ?? true,\n transport: options.transport ?? makeNodeTransport,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n release,\n tracesSampleRate,\n spotlight,\n debug: envToBool(options.debug ?? process.env.SENTRY_DEBUG),\n };\n\n const integrations = options.integrations;\n const defaultIntegrations = options.defaultIntegrations ?? getDefaultIntegrationsImpl(mergedOptions);\n\n return {\n ...mergedOptions,\n integrations: getIntegrationsToSetup({\n defaultIntegrations,\n integrations,\n }),\n };\n}\n\nfunction getRelease(release: NodeOptions['release']): string | undefined {\n if (release !== undefined) {\n return release;\n }\n\n const detectedRelease = getSentryRelease();\n if (detectedRelease !== undefined) {\n return detectedRelease;\n }\n\n return undefined;\n}\n\nfunction getTracesSampleRate(tracesSampleRate: NodeOptions['tracesSampleRate']): number | undefined {\n if (tracesSampleRate !== undefined) {\n return tracesSampleRate;\n }\n\n const sampleRateFromEnv = process.env.SENTRY_TRACES_SAMPLE_RATE;\n if (!sampleRateFromEnv) {\n return undefined;\n }\n\n const parsed = parseFloat(sampleRateFromEnv);\n return isFinite(parsed) ? parsed : undefined;\n}\n\n/**\n * Update scope and propagation context based on environmental variables.\n *\n * See https://github.com/getsentry/rfcs/blob/main/text/0071-continue-trace-over-process-boundaries.md\n * for more details.\n */\nfunction updateScopeFromEnvVariables(): void {\n if (envToBool(process.env.SENTRY_USE_ENVIRONMENT) !== false) {\n const sentryTraceEnv = process.env.SENTRY_TRACE;\n const baggageEnv = process.env.SENTRY_BAGGAGE;\n const propagationContext = propagationContextFromHeaders(sentryTraceEnv, baggageEnv);\n getCurrentScope().setPropagationContext(propagationContext);\n }\n}\n","import { context } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { getScopesFromContext } from '@sentry/opentelemetry';\n\n/**\n * Update the active isolation scope.\n * Should be used with caution!\n */\nexport function setIsolationScope(isolationScope: Scope): void {\n const scopes = getScopesFromContext(context.active());\n if (scopes) {\n scopes.isolationScope = isolationScope;\n }\n}\n","import type { MissingInstrumentationContext } from '@sentry/core';\nimport { isCjs } from './detection';\n\nexport const createMissingInstrumentationContext = (pkg: string): MissingInstrumentationContext => ({\n package: pkg,\n 'javascript.is_cjs': isCjs(),\n});\n","import { isWrapped } from '@opentelemetry/instrumentation';\nimport { consoleSandbox, getClient, getGlobalScope, hasSpansEnabled, isEnabled } from '@sentry/core';\nimport type { NodeClient } from '../sdk/client';\nimport { createMissingInstrumentationContext } from './createMissingInstrumentationContext';\nimport { isCjs } from './detection';\n\n/**\n * Checks and warns if a framework isn't wrapped by opentelemetry.\n */\nexport function ensureIsWrapped(\n maybeWrappedFunction: unknown,\n name: 'express' | 'connect' | 'fastify' | 'hapi' | 'koa' | 'hono',\n): void {\n const clientOptions = getClient()?.getOptions();\n if (\n !clientOptions?.disableInstrumentationWarnings &&\n !isWrapped(maybeWrappedFunction) &&\n isEnabled() &&\n hasSpansEnabled(clientOptions)\n ) {\n consoleSandbox(() => {\n if (isCjs()) {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] ${name} is not instrumented. This is likely because you required/imported ${name} before calling \\`Sentry.init()\\`.`,\n );\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] ${name} is not instrumented. Please make sure to initialize Sentry in a separate file that you \\`--import\\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${name}/install/esm/.`,\n );\n }\n });\n\n getGlobalScope().setContext('missing_instrumentation', createMissingInstrumentationContext(name));\n }\n}\n","import { types } from 'node:util';\nimport { Worker } from 'node:worker_threads';\nimport type { Contexts, Event, EventHint, Integration, IntegrationFn, ScopeData } from '@sentry/core';\nimport {\n debug,\n defineIntegration,\n getClient,\n getCombinedScopeData,\n getCurrentScope,\n getFilenameToDebugIdMap,\n getIsolationScope,\n GLOBAL_OBJ,\n} from '@sentry/core';\nimport { NODE_VERSION } from '../../nodeVersion';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type { AnrIntegrationOptions, WorkerStartData } from './common';\n\nconst { isPromise } = types;\n\n// This string is a placeholder that gets overwritten with the worker code.\nexport const base64WorkerScript = '###AnrWorkerScript###';\n\nconst DEFAULT_INTERVAL = 50;\nconst DEFAULT_HANG_THRESHOLD = 5000;\n\nfunction log(message: string, ...args: unknown[]): void {\n debug.log(`[ANR] ${message}`, ...args);\n}\n\nfunction globalWithScopeFetchFn(): typeof GLOBAL_OBJ & { __SENTRY_GET_SCOPES__?: () => ScopeData } {\n return GLOBAL_OBJ;\n}\n\n/** Fetches merged scope data */\nfunction getScopeData(): ScopeData {\n const scope = getCombinedScopeData(getIsolationScope(), getCurrentScope());\n\n // We remove attachments because they likely won't serialize well as json\n scope.attachments = [];\n // We can't serialize event processor functions\n scope.eventProcessors = [];\n\n return scope;\n}\n\n/**\n * Gets contexts by calling all event processors. This shouldn't be called until all integrations are setup\n */\nasync function getContexts(client: NodeClient): Promise {\n let event: Event | null = { message: 'ANR' };\n const eventHint: EventHint = {};\n\n for (const processor of client.getEventProcessors()) {\n if (event === null) break;\n event = await processor(event, eventHint);\n }\n\n return event?.contexts || {};\n}\n\nconst INTEGRATION_NAME = 'Anr';\n\ntype AnrInternal = { startWorker: () => void; stopWorker: () => void };\n\n// eslint-disable-next-line deprecation/deprecation\nconst _anrIntegration = ((options: Partial = {}) => {\n if (NODE_VERSION.major < 16 || (NODE_VERSION.major === 16 && NODE_VERSION.minor < 17)) {\n throw new Error('ANR detection requires Node 16.17.0 or later');\n }\n\n let worker: Promise<() => void> | undefined;\n let client: NodeClient | undefined;\n\n // Hookup the scope fetch function to the global object so that it can be called from the worker thread via the\n // debugger when it pauses\n const gbl = globalWithScopeFetchFn();\n gbl.__SENTRY_GET_SCOPES__ = getScopeData;\n\n return {\n name: INTEGRATION_NAME,\n startWorker: () => {\n if (worker) {\n return;\n }\n\n if (client) {\n worker = _startWorker(client, options);\n }\n },\n stopWorker: () => {\n if (worker) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.then(stop => {\n stop();\n worker = undefined;\n });\n }\n },\n async setup(initClient: NodeClient) {\n client = initClient;\n\n if (options.captureStackTrace && (await isDebuggerEnabled())) {\n debug.warn('ANR captureStackTrace has been disabled because the debugger was already enabled');\n options.captureStackTrace = false;\n }\n\n // setImmediate is used to ensure that all other integrations have had their setup called first.\n // This allows us to call into all integrations to fetch the full context\n setImmediate(() => this.startWorker());\n },\n } as Integration & AnrInternal;\n}) satisfies IntegrationFn;\n\n// eslint-disable-next-line deprecation/deprecation\ntype AnrReturn = (options?: Partial) => Integration & AnrInternal;\n\n/**\n * Application Not Responding (ANR) integration for Node.js applications.\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n *\n * Detects when the Node.js main thread event loop is blocked for more than the configured\n * threshold (5 seconds by default) and reports these as Sentry events.\n *\n * ANR detection uses a worker thread to monitor the event loop in the main app thread.\n * The main app thread sends a heartbeat message to the ANR worker thread every 50ms by default.\n * If the ANR worker does not receive a heartbeat message for the configured threshold duration,\n * it triggers an ANR event.\n *\n * - Node.js 16.17.0 or higher\n * - Only supported in the Node.js runtime (not browsers)\n * - Not supported for Node.js clusters\n *\n * Overhead should be minimal:\n * - Main thread: Only polling the ANR worker over IPC every 50ms\n * - Worker thread: Consumes around 10-20 MB of RAM\n * - When ANR detected: Brief pause in debugger to capture stack trace (negligible compared to the blocking)\n *\n * @example\n * ```javascript\n * Sentry.init({\n * dsn: \"https://examplePublicKey@o0.ingest.sentry.io/0\",\n * integrations: [\n * Sentry.anrIntegration({\n * anrThreshold: 5000,\n * captureStackTrace: true,\n * pollInterval: 50,\n * }),\n * ],\n * });\n * ```\n */\nexport const anrIntegration = defineIntegration(_anrIntegration) as AnrReturn;\n\n/**\n * Starts the ANR worker thread\n *\n * @returns A function to stop the worker\n */\nasync function _startWorker(\n client: NodeClient,\n // eslint-disable-next-line deprecation/deprecation\n integrationOptions: Partial,\n): Promise<() => void> {\n const dsn = client.getDsn();\n\n if (!dsn) {\n return () => {\n //\n };\n }\n\n const contexts = await getContexts(client);\n\n // These will not be accurate if sent later from the worker thread\n delete contexts.app?.app_memory;\n delete contexts.device?.free_memory;\n\n const initOptions = client.getOptions();\n\n const sdkMetadata = client.getSdkMetadata() || {};\n if (sdkMetadata.sdk) {\n sdkMetadata.sdk.integrations = initOptions.integrations.map(i => i.name);\n }\n\n const options: WorkerStartData = {\n debug: debug.isEnabled(),\n dsn,\n tunnel: initOptions.tunnel,\n environment: initOptions.environment || 'production',\n release: initOptions.release,\n dist: initOptions.dist,\n sdkMetadata,\n appRootPath: integrationOptions.appRootPath,\n pollInterval: integrationOptions.pollInterval || DEFAULT_INTERVAL,\n anrThreshold: integrationOptions.anrThreshold || DEFAULT_HANG_THRESHOLD,\n captureStackTrace: !!integrationOptions.captureStackTrace,\n maxAnrEvents: integrationOptions.maxAnrEvents || 1,\n staticTags: integrationOptions.staticTags || {},\n contexts,\n };\n\n if (options.captureStackTrace) {\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n const timer = setInterval(() => {\n try {\n const currentSession = getIsolationScope().getSession();\n // We need to copy the session object and remove the toJSON method so it can be sent to the worker\n // serialized without making it a SerializedSession\n const session = currentSession ? { ...currentSession, toJSON: undefined } : undefined;\n // message the worker to tell it the main event loop is still running\n worker.postMessage({ session, debugImages: getFilenameToDebugIdMap(initOptions.stackParser) });\n } catch {\n //\n }\n }, options.pollInterval);\n // Timer should not block exit\n timer.unref();\n\n worker.on('message', (msg: string) => {\n if (msg === 'session-ended') {\n log('ANR event sent from ANR worker. Clearing session in this thread.');\n getIsolationScope().setSession(undefined);\n }\n });\n\n worker.once('error', (err: Error) => {\n clearInterval(timer);\n log('ANR worker error', err);\n });\n\n worker.once('exit', (code: number) => {\n clearInterval(timer);\n log('ANR worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n\n return () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n clearInterval(timer);\n };\n}\n\n/**\n * @see {@link disableBlockDetectionForCallback}\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => T): T;\n/**\n * @see {@link disableBlockDetectionForCallback}\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => Promise): Promise;\n/**\n * Temporarily disables ANR detection for the duration of a callback function.\n *\n * This utility function allows you to disable ANR detection during operations that\n * are expected to block the event loop, such as intensive computational tasks or\n * synchronous I/O operations.\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => T | Promise): T | Promise {\n const integration = getClient()?.getIntegrationByName(INTEGRATION_NAME) as AnrInternal | undefined;\n\n if (!integration) {\n return callback();\n }\n\n integration.stopWorker();\n\n const result = callback();\n if (isPromise(result)) {\n return result.finally(() => integration.startWorker());\n }\n\n integration.startWorker();\n return result;\n}\n","import { format } from 'node:util';\nimport type { Log, LogSeverityLevel, ParameterizedString, Scope } from '@sentry/core';\nimport { _INTERNAL_captureLog } from '@sentry/core';\n\n/**\n * Additional metadata to capture the log with.\n */\ninterface CaptureLogMetadata {\n scope?: Scope;\n}\n\ntype CaptureLogArgWithTemplate = [\n messageTemplate: string,\n messageParams: Array,\n attributes?: Log['attributes'],\n metadata?: CaptureLogMetadata,\n];\n\ntype CaptureLogArgWithoutTemplate = [\n message: ParameterizedString,\n attributes?: Log['attributes'],\n metadata?: CaptureLogMetadata,\n];\n\nexport type CaptureLogArgs = CaptureLogArgWithTemplate | CaptureLogArgWithoutTemplate;\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n */\nexport function captureLog(level: LogSeverityLevel, ...args: CaptureLogArgs): void {\n const [messageOrMessageTemplate, paramsOrAttributes, maybeAttributesOrMetadata, maybeMetadata] = args;\n if (Array.isArray(paramsOrAttributes)) {\n // type-casting here because from the type definitions we know that `maybeAttributesOrMetadata` is an attributes object (or undefined)\n const attributes = { ...(maybeAttributesOrMetadata as Log['attributes'] | undefined) };\n attributes['sentry.message.template'] = messageOrMessageTemplate;\n paramsOrAttributes.forEach((param, index) => {\n attributes[`sentry.message.parameter.${index}`] = param;\n });\n const message = format(messageOrMessageTemplate, ...paramsOrAttributes);\n _INTERNAL_captureLog({ level, message, attributes }, maybeMetadata?.scope);\n } else {\n _INTERNAL_captureLog(\n { level, message: messageOrMessageTemplate, attributes: paramsOrAttributes },\n // type-casting here because from the type definitions we know that `maybeAttributesOrMetadata` is a metadata object (or undefined)\n (maybeAttributesOrMetadata as CaptureLogMetadata | undefined)?.scope ?? maybeMetadata?.scope,\n );\n }\n}\n","import { captureLog, type CaptureLogArgs } from './capture';\n\n/**\n * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('Starting database connection', {\n * database: 'users',\n * connectionId: 'conn_123'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace('Database connection %s established for %s',\n * ['successful', 'users'],\n * { connectionId: 'conn_123' }\n * );\n * ```\n */\nexport function trace(...args: CaptureLogArgs): void {\n captureLog('trace', ...args);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Cache miss for user profile', {\n * userId: 'user_123',\n * cacheKey: 'profile:user_123'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug('Cache %s for %s: %s',\n * ['miss', 'user profile', 'key not found'],\n * { userId: 'user_123' }\n * );\n * ```\n */\nexport function debug(...args: CaptureLogArgs): void {\n captureLog('debug', ...args);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User profile updated', {\n * userId: 'user_123',\n * updatedFields: ['email', 'preferences']\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info('User %s updated their %s',\n * ['John Doe', 'profile settings'],\n * { userId: 'user_123' }\n * );\n * ```\n */\nexport function info(...args: CaptureLogArgs): void {\n captureLog('info', ...args);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Rate limit approaching', {\n * endpoint: '/api/users',\n * currentRate: '95/100',\n * resetTime: '2024-03-20T10:00:00Z'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn('Rate limit %s for %s: %s',\n * ['approaching', '/api/users', '95/100 requests'],\n * { resetTime: '2024-03-20T10:00:00Z' }\n * );\n * ```\n */\nexport function warn(...args: CaptureLogArgs): void {\n captureLog('warn', ...args);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to process payment', {\n * orderId: 'order_123',\n * errorCode: 'PAYMENT_FAILED',\n * amount: 99.99\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error('Payment processing failed for order %s: %s',\n * ['order_123', 'insufficient funds'],\n * { amount: 99.99 }\n * );\n * ```\n */\nexport function error(...args: CaptureLogArgs): void {\n captureLog('error', ...args);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Database connection pool exhausted', {\n * database: 'users',\n * activeConnections: 100,\n * maxConnections: 100\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal('Database %s: %s connections active',\n * ['connection pool exhausted', '100/100'],\n * { database: 'users' }\n * );\n * ```\n */\nexport function fatal(...args: CaptureLogArgs): void {\n captureLog('fatal', ...args);\n}\n\nexport { fmt } from '@sentry/core';\n","import { monitorEventLoopDelay, performance } from 'perf_hooks';\nimport { _INTERNAL_safeDateNow, _INTERNAL_safeUnref, defineIntegration, metrics } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'NodeRuntimeMetrics';\nconst DEFAULT_INTERVAL_MS = 30_000;\nconst EVENT_LOOP_DELAY_RESOLUTION_MS = 10;\n\nexport interface NodeRuntimeMetricsOptions {\n /**\n * Which metrics to collect.\n *\n * Default on (8 metrics):\n * - `cpuUtilization` — CPU utilization ratio\n * - `memRss` — Resident Set Size (actual memory footprint)\n * - `memHeapUsed` — V8 heap currently in use\n * - `memHeapTotal` — total V8 heap allocated (headroom paired with `memHeapUsed`)\n * - `eventLoopDelayP50` — median event loop delay (baseline latency)\n * - `eventLoopDelayP99` — 99th percentile event loop delay (tail latency / spikes)\n * - `eventLoopUtilization` — fraction of time the event loop was active\n * - `uptime` — process uptime (detect restarts/crashes)\n *\n * Default off (opt-in):\n * - `cpuTime` — raw user/system CPU time in seconds\n * - `memExternal` — external/ArrayBuffer memory (relevant for native addons)\n * - `eventLoopDelayMin` / `eventLoopDelayMax` / `eventLoopDelayMean` / `eventLoopDelayP90`\n */\n collect?: {\n // Default on\n cpuUtilization?: boolean;\n memHeapUsed?: boolean;\n memRss?: boolean;\n eventLoopDelayP99?: boolean;\n eventLoopUtilization?: boolean;\n uptime?: boolean;\n // Default off\n cpuTime?: boolean;\n memHeapTotal?: boolean;\n memExternal?: boolean;\n eventLoopDelayMin?: boolean;\n eventLoopDelayMax?: boolean;\n eventLoopDelayMean?: boolean;\n eventLoopDelayP50?: boolean;\n eventLoopDelayP90?: boolean;\n };\n /**\n * How often to collect metrics, in milliseconds.\n * @default 30000\n */\n collectionIntervalMs?: number;\n}\n\n/**\n * Automatically collects Node.js runtime metrics and emits them to Sentry.\n *\n * @example\n * ```ts\n * Sentry.init({\n * integrations: [\n * Sentry.nodeRuntimeMetricsIntegration(),\n * ],\n * });\n * ```\n */\nexport const nodeRuntimeMetricsIntegration = defineIntegration((options: NodeRuntimeMetricsOptions = {}) => {\n const collectionIntervalMs = options.collectionIntervalMs ?? DEFAULT_INTERVAL_MS;\n const collect = {\n // Default on\n cpuUtilization: true,\n memHeapUsed: true,\n memHeapTotal: true,\n memRss: true,\n eventLoopDelayP50: true,\n eventLoopDelayP99: true,\n eventLoopUtilization: true,\n uptime: true,\n // Default off\n cpuTime: false,\n memExternal: false,\n eventLoopDelayMin: false,\n eventLoopDelayMax: false,\n eventLoopDelayMean: false,\n eventLoopDelayP90: false,\n ...options.collect,\n };\n\n const needsEventLoopDelay =\n collect.eventLoopDelayP99 ||\n collect.eventLoopDelayMin ||\n collect.eventLoopDelayMax ||\n collect.eventLoopDelayMean ||\n collect.eventLoopDelayP50 ||\n collect.eventLoopDelayP90;\n\n const needsCpu = collect.cpuUtilization || collect.cpuTime;\n\n let intervalId: ReturnType | undefined;\n let prevCpuUsage: NodeJS.CpuUsage | undefined;\n let prevElu: ReturnType | undefined;\n let prevFlushTime: number = 0;\n let eventLoopDelayHistogram: ReturnType | undefined;\n\n const resolutionNs = EVENT_LOOP_DELAY_RESOLUTION_MS * 1e6;\n const nsToS = (ns: number): number => Math.max(0, (ns - resolutionNs) / 1e9);\n\n const METRIC_ATTRIBUTES = { attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n const METRIC_ATTRIBUTES_BYTE = { unit: 'byte', attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n const METRIC_ATTRIBUTES_SECOND = { unit: 'second', attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n\n function collectMetrics(): void {\n const now = _INTERNAL_safeDateNow();\n const elapsed = now - prevFlushTime;\n\n if (needsCpu && prevCpuUsage !== undefined) {\n const delta = process.cpuUsage(prevCpuUsage);\n\n if (collect.cpuTime) {\n metrics.gauge('node.runtime.cpu.user', delta.user / 1e6, METRIC_ATTRIBUTES_SECOND);\n metrics.gauge('node.runtime.cpu.system', delta.system / 1e6, METRIC_ATTRIBUTES_SECOND);\n }\n if (collect.cpuUtilization && elapsed > 0) {\n // Ratio of CPU time to wall-clock time. Can exceed 1.0 on multi-core systems.\n // TODO: In cluster mode, add a runtime_id/process_id attribute to disambiguate per-worker metrics.\n metrics.gauge(\n 'node.runtime.cpu.utilization',\n (delta.user + delta.system) / (elapsed * 1000),\n METRIC_ATTRIBUTES,\n );\n }\n\n prevCpuUsage = process.cpuUsage();\n }\n\n if (collect.memRss || collect.memHeapUsed || collect.memHeapTotal || collect.memExternal) {\n const mem = process.memoryUsage();\n if (collect.memRss) {\n metrics.gauge('node.runtime.mem.rss', mem.rss, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memHeapUsed) {\n metrics.gauge('node.runtime.mem.heap_used', mem.heapUsed, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memHeapTotal) {\n metrics.gauge('node.runtime.mem.heap_total', mem.heapTotal, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memExternal) {\n metrics.gauge('node.runtime.mem.external', mem.external, METRIC_ATTRIBUTES_BYTE);\n metrics.gauge('node.runtime.mem.array_buffers', mem.arrayBuffers, METRIC_ATTRIBUTES_BYTE);\n }\n }\n\n if (needsEventLoopDelay && eventLoopDelayHistogram) {\n if (collect.eventLoopDelayMin) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.min',\n nsToS(eventLoopDelayHistogram.min),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayMax) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.max',\n nsToS(eventLoopDelayHistogram.max),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayMean) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.mean',\n nsToS(eventLoopDelayHistogram.mean),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP50) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p50',\n nsToS(eventLoopDelayHistogram.percentile(50)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP90) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p90',\n nsToS(eventLoopDelayHistogram.percentile(90)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP99) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p99',\n nsToS(eventLoopDelayHistogram.percentile(99)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n\n eventLoopDelayHistogram.reset();\n }\n\n if (collect.eventLoopUtilization && prevElu !== undefined) {\n const currentElu = performance.eventLoopUtilization();\n const delta = performance.eventLoopUtilization(currentElu, prevElu);\n metrics.gauge('node.runtime.event_loop.utilization', delta.utilization, METRIC_ATTRIBUTES);\n prevElu = currentElu;\n }\n\n if (collect.uptime && elapsed > 0) {\n metrics.count('node.runtime.process.uptime', elapsed / 1000, METRIC_ATTRIBUTES_SECOND);\n }\n\n prevFlushTime = now;\n }\n\n return {\n name: INTEGRATION_NAME,\n\n setup(): void {\n if (needsEventLoopDelay) {\n // Disable any previous histogram before overwriting (prevents native resource leak on re-init).\n eventLoopDelayHistogram?.disable();\n try {\n eventLoopDelayHistogram = monitorEventLoopDelay({ resolution: EVENT_LOOP_DELAY_RESOLUTION_MS });\n eventLoopDelayHistogram.enable();\n } catch {\n // Not available in all runtimes (e.g. Bun throws NotImplementedError).\n eventLoopDelayHistogram = undefined;\n }\n }\n\n // Prime baselines before the first collection interval.\n if (needsCpu) {\n prevCpuUsage = process.cpuUsage();\n }\n if (collect.eventLoopUtilization) {\n prevElu = performance.eventLoopUtilization();\n }\n prevFlushTime = _INTERNAL_safeDateNow();\n\n // Guard against double setup (e.g. re-init).\n if (intervalId) {\n clearInterval(intervalId);\n }\n intervalId = _INTERNAL_safeUnref(setInterval(collectMetrics, collectionIntervalMs));\n },\n };\n});\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport type { LogSeverityLevel } from '@sentry/core';\nimport { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { captureLog } from '../logs/capture';\n\nconst DEFAULT_CAPTURED_LEVELS: Array = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n// See: https://github.com/winstonjs/triple-beam\nconst LEVEL_SYMBOL = Symbol.for('level');\nconst MESSAGE_SYMBOL = Symbol.for('message');\nconst SPLAT_SYMBOL = Symbol.for('splat');\n\n/**\n * Options for the Sentry Winston transport.\n */\ninterface WinstonTransportOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport, {\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * ```\n */\n levels?: Array;\n\n /**\n * Use this option to map custom levels to Sentry log severity levels.\n *\n * @example\n * ```ts\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport, {\n * customLevelMap: {\n * myCustomLevel: 'info',\n * customError: 'error',\n * },\n * });\n * ```\n */\n customLevelMap?: Record;\n}\n\n/**\n * Creates a new Sentry Winston transport that fowards logs to Sentry. Requires the `enableLogs` option to be enabled.\n *\n * Supports Winston 3.x.x.\n *\n * @param TransportClass - The Winston transport class to extend.\n * @returns The extended transport class.\n *\n * @example\n * ```ts\n * const winston = require('winston');\n * const Transport = require('winston-transport');\n *\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport);\n *\n * const logger = winston.createLogger({\n * transports: [new SentryWinstonTransport()],\n * });\n * ```\n */\nexport function createSentryWinstonTransport(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TransportClass: new (options?: any) => TransportStreamInstance,\n sentryWinstonOptions?: WinstonTransportOptions,\n): typeof TransportClass {\n // @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass\n class SentryWinstonTransport extends TransportClass {\n private _levels: Set;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public constructor(options?: any) {\n super(options);\n this._levels = new Set(sentryWinstonOptions?.levels ?? DEFAULT_CAPTURED_LEVELS);\n }\n\n /**\n * Forwards a winston log to the Sentry SDK.\n */\n public log(info: unknown, callback: () => void): void {\n try {\n setImmediate(() => {\n // @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass\n this.emit('logged', info);\n });\n\n if (!isObject(info)) {\n return;\n }\n\n const levelFromSymbol = info[LEVEL_SYMBOL];\n\n // See: https://github.com/winstonjs/winston?tab=readme-ov-file#streams-objectmode-and-info-objects\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { level, message, timestamp, ...attributes } = info;\n // Remove all symbols from the remaining attributes\n attributes[LEVEL_SYMBOL] = undefined;\n attributes[MESSAGE_SYMBOL] = undefined;\n attributes[SPLAT_SYMBOL] = undefined;\n\n const customLevel = sentryWinstonOptions?.customLevelMap?.[levelFromSymbol as string];\n const winstonLogLevel = WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[levelFromSymbol as string];\n const logSeverityLevel = customLevel ?? winstonLogLevel ?? 'info';\n\n if (this._levels.has(logSeverityLevel)) {\n captureLog(logSeverityLevel, message as string, {\n ...attributes,\n 'sentry.origin': 'auto.log.winston',\n });\n } else if (!customLevel && !winstonLogLevel) {\n DEBUG_BUILD &&\n debug.log(\n `Winston log level ${levelFromSymbol} is not captured by Sentry. Please add ${levelFromSymbol} to the \"customLevelMap\" option of the Sentry Winston transport.`,\n );\n }\n } catch {\n // do nothing\n }\n\n if (callback) {\n callback();\n }\n }\n }\n\n return SentryWinstonTransport as typeof TransportClass;\n}\n\nfunction isObject(anything: unknown): anything is Record {\n return typeof anything === 'object' && anything != null;\n}\n\n// npm\n// {\n// error: 0,\n// warn: 1,\n// info: 2,\n// http: 3,\n// verbose: 4,\n// debug: 5,\n// silly: 6\n// }\n//\n// syslog\n// {\n// emerg: 0,\n// alert: 1,\n// crit: 2,\n// error: 3,\n// warning: 4,\n// notice: 5,\n// info: 6,\n// debug: 7,\n// }\nconst WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n // npm\n silly: 'trace',\n // npm and syslog\n debug: 'debug',\n // npm\n verbose: 'debug',\n // npm\n http: 'debug',\n // npm and syslog\n info: 'info',\n // syslog\n notice: 'info',\n // npm\n warn: 'warn',\n // syslog\n warning: 'warn',\n // npm and syslog\n error: 'error',\n // syslog\n emerg: 'fatal',\n // syslog\n alert: 'fatal',\n // syslog\n crit: 'fatal',\n};\n","import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport type { Integration, IntegrationFn, LogSeverityLevel } from '@sentry/core';\nimport {\n _INTERNAL_captureLog,\n addExceptionMechanism,\n captureException,\n captureMessage,\n defineIntegration,\n severityLevelFromString,\n withScope,\n} from '@sentry/core';\n\nconst SENTRY_TRACK_SYMBOL = Symbol('sentry-track-pino-logger');\n\ntype LevelMapping = {\n // Fortunately pino uses the same levels as Sentry\n labels: { [level: number]: LogSeverityLevel };\n};\n\ntype Pino = {\n [key: symbol]: unknown;\n levels: LevelMapping;\n [SENTRY_TRACK_SYMBOL]?: 'track' | 'ignore';\n};\n\n/**\n * Gets a custom Pino key from a logger instance by searching for the symbol.\n * Pino uses non-global symbols like Symbol('pino.messageKey'): https://github.com/pinojs/pino/blob/8a816c0b1f72de5ae9181f3bb402109b66f7d812/lib/symbols.js\n */\nfunction getPinoKey(logger: Pino, symbolName: string, defaultKey: string): string {\n const symbols = Object.getOwnPropertySymbols(logger);\n const symbolString = `Symbol(${symbolName})`;\n for (const sym of symbols) {\n if (sym.toString() === symbolString) {\n const value = logger[sym];\n return typeof value === 'string' ? value : defaultKey;\n }\n }\n return defaultKey;\n}\n\ntype MergeObject = {\n [key: string]: unknown;\n err?: Error;\n};\n\ntype PinoHookArgs = [MergeObject, string, number];\n\ntype PinoOptions = {\n /**\n * Automatically instrument all Pino loggers.\n *\n * When set to `false`, only loggers marked with `pinoIntegration.trackLogger(logger)` will be captured.\n *\n * @default true\n */\n autoInstrument: boolean;\n /**\n * Options to enable capturing of error events.\n */\n error: {\n /**\n * Levels that trigger capturing of events.\n *\n * @default []\n */\n levels: LogSeverityLevel[];\n /**\n * By default, Sentry will mark captured errors as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled: boolean;\n };\n /**\n * Options to enable capturing of logs.\n */\n log: {\n /**\n * Levels that trigger capturing of logs. Logs are only captured if\n * `enableLogs` is enabled.\n *\n * @default [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"fatal\"]\n */\n levels: LogSeverityLevel[];\n };\n};\n\nconst DEFAULT_OPTIONS: PinoOptions = {\n autoInstrument: true,\n error: { levels: [], handled: true },\n log: { levels: ['trace', 'debug', 'info', 'warn', 'error', 'fatal'] },\n};\n\ntype DeepPartial = {\n [P in keyof T]?: T[P] extends object ? Partial : T[P];\n};\n\ntype PinoResult = {\n level?: string;\n time?: string;\n pid?: number;\n hostname?: string;\n} & Record;\n\nfunction stripIgnoredFields(result: PinoResult): PinoResult {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { level, time, pid, hostname, ...rest } = result;\n return rest;\n}\n\nconst _pinoIntegration = defineIntegration((userOptions: DeepPartial = {}) => {\n const options: PinoOptions = {\n autoInstrument: userOptions.autoInstrument !== false,\n error: { ...DEFAULT_OPTIONS.error, ...userOptions.error },\n log: { ...DEFAULT_OPTIONS.log, ...userOptions.log },\n };\n\n function shouldTrackLogger(logger: Pino): boolean {\n const override = logger[SENTRY_TRACK_SYMBOL];\n return override === 'track' || (override !== 'ignore' && options.autoInstrument);\n }\n\n return {\n name: 'Pino',\n setup: client => {\n const enableLogs = !!client.getOptions().enableLogs;\n\n const integratedChannel = diagnosticsChannel.tracingChannel('pino_asJson');\n\n function onPinoStart(self: Pino, args: PinoHookArgs, result: PinoResult): void {\n if (!shouldTrackLogger(self)) {\n return;\n }\n\n const resultObj = stripIgnoredFields(result);\n\n const [captureObj, message, levelNumber] = args;\n const level = self?.levels?.labels?.[levelNumber] || 'info';\n const messageKey = getPinoKey(self, 'pino.messageKey', 'msg');\n const logMessage = message || (resultObj?.[messageKey] as string | undefined) || '';\n\n if (enableLogs && options.log.levels.includes(level)) {\n const attributes: Record = {\n ...resultObj,\n 'sentry.origin': 'auto.log.pino',\n 'pino.logger.level': levelNumber,\n };\n\n _INTERNAL_captureLog({ level, message: logMessage, attributes });\n }\n\n if (options.error.levels.includes(level)) {\n const captureContext = {\n level: severityLevelFromString(level),\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'pino';\n\n addExceptionMechanism(event, {\n handled: options.error.handled,\n type: 'auto.log.pino',\n });\n\n return event;\n });\n\n const error = captureObj[getPinoKey(self, 'pino.errorKey', 'err')];\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n captureMessage(logMessage, captureContext);\n });\n }\n }\n\n integratedChannel.end.subscribe(data => {\n const {\n instance,\n arguments: args,\n result,\n } = data as { instance: Pino; arguments: PinoHookArgs; result: string };\n onPinoStart(instance, args, JSON.parse(result));\n });\n },\n };\n}) satisfies IntegrationFn;\n\ninterface PinoIntegrationFunction {\n (userOptions?: DeepPartial): Integration;\n /**\n * Marks a Pino logger to be tracked by the Pino integration.\n *\n * @param logger A Pino logger instance.\n */\n trackLogger(logger: unknown): void;\n /**\n * Marks a Pino logger to be ignored by the Pino integration.\n *\n * @param logger A Pino logger instance.\n */\n untrackLogger(logger: unknown): void;\n}\n\n/**\n * Integration for Pino logging library.\n * Captures Pino logs as Sentry logs and optionally captures some log levels as events.\n *\n * By default, all Pino loggers will be captured. To ignore a specific logger, use `pinoIntegration.untrackLogger(logger)`.\n *\n * If you disable automatic instrumentation with `autoInstrument: false`, you can mark specific loggers to be tracked with `pinoIntegration.trackLogger(logger)`.\n *\n * Requires Pino >=v8.0.0 and Node >=20.6.0 or >=18.19.0\n */\nexport const pinoIntegration = Object.assign(_pinoIntegration, {\n trackLogger(logger: unknown): void {\n if (logger && typeof logger === 'object' && 'levels' in logger) {\n (logger as Pino)[SENTRY_TRACK_SYMBOL] = 'track';\n }\n },\n untrackLogger(logger: unknown): void {\n if (logger && typeof logger === 'object' && 'levels' in logger) {\n (logger as Pino)[SENTRY_TRACK_SYMBOL] = 'ignore';\n }\n },\n}) as PinoIntegrationFunction;\n","import type { Span } from '@opentelemetry/api';\nimport type { SpanOrigin } from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\n\n/** Adds an origin to an OTEL Span. */\nexport function addOriginToSpan(span: Span, origin: SpanOrigin): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n}\n","/** Build a full URL from request options or a ClientRequest. */\nexport function getRequestUrl(requestOptions: {\n protocol?: string | null;\n hostname?: string | null;\n host?: string | null;\n port?: string | number | null;\n path?: string | null;\n}): string {\n const protocol = requestOptions.protocol || '';\n const hostname = requestOptions.hostname || requestOptions.host || '';\n // Don't log standard :80 (http) and :443 (https) ports to reduce the noise\n // Also don't add port if the hostname already includes a port\n const port =\n !requestOptions.port || requestOptions.port === 80 || requestOptions.port === 443 || /^(.*):(\\d+)$/.test(hostname)\n ? ''\n : `:${requestOptions.port}`;\n const path = requestOptions.path ? requestOptions.path : '/';\n return `${protocol}//${hostname}${port}${path}`;\n}\n","const replacements: [string, string][] = [\n ['january', '1'],\n ['february', '2'],\n ['march', '3'],\n ['april', '4'],\n ['may', '5'],\n ['june', '6'],\n ['july', '7'],\n ['august', '8'],\n ['september', '9'],\n ['october', '10'],\n ['november', '11'],\n ['december', '12'],\n ['jan', '1'],\n ['feb', '2'],\n ['mar', '3'],\n ['apr', '4'],\n ['may', '5'],\n ['jun', '6'],\n ['jul', '7'],\n ['aug', '8'],\n ['sep', '9'],\n ['oct', '10'],\n ['nov', '11'],\n ['dec', '12'],\n ['sunday', '0'],\n ['monday', '1'],\n ['tuesday', '2'],\n ['wednesday', '3'],\n ['thursday', '4'],\n ['friday', '5'],\n ['saturday', '6'],\n ['sun', '0'],\n ['mon', '1'],\n ['tue', '2'],\n ['wed', '3'],\n ['thu', '4'],\n ['fri', '5'],\n ['sat', '6'],\n];\n\n/**\n * Replaces names in cron expressions\n */\nexport function replaceCronNames(cronExpression: string): string {\n return replacements.reduce(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n (acc, [name, replacement]) => acc.replace(new RegExp(name, 'gi'), replacement),\n cronExpression,\n );\n}\n","import { captureException, withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport type CronJobParams = {\n cronTime: string | Date;\n onTick: (context: unknown, onComplete?: unknown) => void | Promise;\n onComplete?: () => void | Promise;\n start?: boolean | null;\n context?: unknown;\n runOnInit?: boolean | null;\n unrefTimeout?: boolean | null;\n} & (\n | {\n timeZone?: string | null;\n utcOffset?: never;\n }\n | {\n timeZone?: never;\n utcOffset?: number | null;\n }\n);\n\nexport type CronJob = {\n //\n};\n\nexport type CronJobConstructor = {\n from: (param: CronJobParams) => CronJob;\n\n new (\n cronTime: CronJobParams['cronTime'],\n onTick: CronJobParams['onTick'],\n onComplete?: CronJobParams['onComplete'],\n start?: CronJobParams['start'],\n timeZone?: CronJobParams['timeZone'],\n context?: CronJobParams['context'],\n runOnInit?: CronJobParams['runOnInit'],\n utcOffset?: null,\n unrefTimeout?: CronJobParams['unrefTimeout'],\n ): CronJob;\n new (\n cronTime: CronJobParams['cronTime'],\n onTick: CronJobParams['onTick'],\n onComplete?: CronJobParams['onComplete'],\n start?: CronJobParams['start'],\n timeZone?: null,\n context?: CronJobParams['context'],\n runOnInit?: CronJobParams['runOnInit'],\n utcOffset?: CronJobParams['utcOffset'],\n unrefTimeout?: CronJobParams['unrefTimeout'],\n ): CronJob;\n};\n\nconst ERROR_TEXT = 'Automatic instrumentation of CronJob only supports crontab string';\n\n/**\n * Instruments the `cron` library to send a check-in event to Sentry for each job execution.\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import { CronJob } from 'cron';\n *\n * const CronJobWithCheckIn = Sentry.cron.instrumentCron(CronJob, 'my-cron-job');\n *\n * // use the constructor\n * const job = new CronJobWithCheckIn('* * * * *', () => {\n * console.log('You will see this message every minute');\n * });\n *\n * // or from\n * const job = CronJobWithCheckIn.from({ cronTime: '* * * * *', onTick: () => {\n * console.log('You will see this message every minute');\n * });\n * ```\n */\nexport function instrumentCron(lib: T & CronJobConstructor, monitorSlug: string): T {\n let jobScheduled = false;\n\n return new Proxy(lib, {\n construct(target, args: ConstructorParameters) {\n const [cronTime, onTick, onComplete, start, timeZone, ...rest] = args;\n\n if (typeof cronTime !== 'string') {\n throw new Error(ERROR_TEXT);\n }\n\n if (jobScheduled) {\n throw new Error(`A job named '${monitorSlug}' has already been scheduled`);\n }\n\n jobScheduled = true;\n\n const cronString = replaceCronNames(cronTime);\n\n async function monitoredTick(context: unknown, onComplete?: unknown): Promise {\n return withMonitor(\n monitorSlug,\n async () => {\n try {\n await onTick(context, onComplete);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.cron.instrumentCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: cronString },\n timezone: timeZone || undefined,\n },\n );\n }\n\n return new target(cronTime, monitoredTick, onComplete, start, timeZone, ...rest);\n },\n get(target, prop: keyof CronJobConstructor) {\n if (prop === 'from') {\n return (param: CronJobParams) => {\n const { cronTime, onTick, timeZone } = param;\n\n if (typeof cronTime !== 'string') {\n throw new Error(ERROR_TEXT);\n }\n\n if (jobScheduled) {\n throw new Error(`A job named '${monitorSlug}' has already been scheduled`);\n }\n\n jobScheduled = true;\n\n const cronString = replaceCronNames(cronTime);\n\n param.onTick = async (context: unknown, onComplete?: unknown) => {\n return withMonitor(\n monitorSlug,\n async () => {\n try {\n await onTick(context, onComplete);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.cron.instrumentCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: cronString },\n timezone: timeZone || undefined,\n },\n );\n };\n\n return target.from(param);\n };\n } else {\n return target[prop];\n }\n },\n });\n}\n","import { captureException, type MonitorConfig, withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport interface NodeCronOptions {\n name: string;\n timezone?: string;\n}\n\nexport interface NodeCron {\n schedule: (\n cronExpression: string,\n callback: (context?: unknown) => void,\n options: NodeCronOptions | undefined,\n ) => unknown;\n}\n\n/**\n * Wraps the `node-cron` library with check-in monitoring.\n *\n * ```ts\n * import * as Sentry from \"@sentry/node\";\n * import * as cron from \"node-cron\";\n *\n * const cronWithCheckIn = Sentry.cron.instrumentNodeCron(cron);\n *\n * cronWithCheckIn.schedule(\n * \"* * * * *\",\n * () => {\n * console.log(\"running a task every minute\");\n * },\n * { name: \"my-cron-job\" },\n * );\n * ```\n */\nexport function instrumentNodeCron(\n lib: Partial & T,\n monitorConfig: Pick = {},\n): T {\n return new Proxy(lib, {\n get(target, prop) {\n if (prop === 'schedule' && target.schedule) {\n // When 'get' is called for schedule, return a proxied version of the schedule function\n return new Proxy(target.schedule, {\n apply(target, thisArg, argArray: Parameters) {\n const [expression, callback, options] = argArray;\n\n const name = options?.name;\n const timezone = options?.timezone;\n\n if (!name) {\n throw new Error('Missing \"name\" for scheduled job. A name is required for Sentry check-in monitoring.');\n }\n\n const monitoredCallback = async (...args: Parameters): Promise => {\n return withMonitor(\n name,\n async () => {\n // We have to manually catch here and capture the exception because node-cron swallows errors\n // https://github.com/node-cron/node-cron/issues/399\n try {\n // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n return await callback(...args);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.node-cron.instrumentNodeCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: replaceCronNames(expression) },\n timezone,\n ...monitorConfig,\n },\n );\n };\n\n return target.apply(thisArg, [expression, monitoredCallback, options]);\n },\n });\n } else {\n return target[prop as keyof T];\n }\n },\n });\n}\n","import { withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport interface NodeSchedule {\n scheduleJob(\n nameOrExpression: string | Date | object,\n expressionOrCallback: string | Date | object | (() => void),\n callback?: () => void,\n ): unknown;\n}\n\n/**\n * Instruments the `node-schedule` library to send a check-in event to Sentry for each job execution.\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import * as schedule from 'node-schedule';\n *\n * const scheduleWithCheckIn = Sentry.cron.instrumentNodeSchedule(schedule);\n *\n * const job = scheduleWithCheckIn.scheduleJob('my-cron-job', '* * * * *', () => {\n * console.log('You will see this message every minute');\n * });\n * ```\n */\nexport function instrumentNodeSchedule(lib: T & NodeSchedule): T {\n return new Proxy(lib, {\n get(target, prop: keyof NodeSchedule) {\n if (prop === 'scheduleJob') {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n return new Proxy(target.scheduleJob, {\n apply(target, thisArg, argArray: Parameters) {\n const [nameOrExpression, expressionOrCallback, callback] = argArray;\n\n if (\n typeof nameOrExpression !== 'string' ||\n typeof expressionOrCallback !== 'string' ||\n typeof callback !== 'function'\n ) {\n throw new Error(\n \"Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string\",\n );\n }\n\n const monitorSlug = nameOrExpression;\n const expression = expressionOrCallback;\n\n async function monitoredCallback(): Promise {\n return withMonitor(\n monitorSlug,\n async () => {\n // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n await callback?.();\n },\n {\n schedule: { type: 'crontab', value: replaceCronNames(expression) },\n },\n );\n }\n\n return target.apply(thisArg, [monitorSlug, expression, monitoredCallback]);\n },\n });\n }\n\n return target[prop];\n },\n });\n}\n","import { instrumentCron } from './cron';\nimport { instrumentNodeCron } from './node-cron';\nimport { instrumentNodeSchedule } from './node-schedule';\n\n/** Methods to instrument cron libraries for Sentry check-ins */\nexport const cron = {\n instrumentCron,\n instrumentNodeCron,\n instrumentNodeSchedule,\n};\n","import type { ClientRequest, IncomingMessage, RequestOptions, ServerResponse } from 'node:http';\nimport { diag } from '@opentelemetry/api';\nimport type { HttpInstrumentationConfig } from '@opentelemetry/instrumentation-http';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport type { Span } from '@sentry/core';\nimport {\n defineIntegration,\n getClient,\n hasSpansEnabled,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n stripDataUrlContent,\n} from '@sentry/core';\nimport type { HTTPModuleRequestIncomingMessage, NodeClient, SentryHttpInstrumentationOptions } from '@sentry/node-core';\nimport {\n addOriginToSpan,\n generateInstrumentOnce,\n getRequestUrl,\n httpServerIntegration,\n httpServerSpansIntegration,\n NODE_VERSION,\n SentryHttpInstrumentation,\n} from '@sentry/node-core';\nimport type { NodeClientOptions } from '../types';\n\nconst INTEGRATION_NAME = 'Http';\n\nconst INSTRUMENTATION_NAME = '@opentelemetry_sentry-patched/instrumentation-http';\n\n// The `http.client.request.created` diagnostics channel, needed for trace propagation,\n// was added in Node 22.12.0 (backported from 23.2.0). Earlier 22.x versions don't have it.\nconst FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL =\n (NODE_VERSION.major === 22 && NODE_VERSION.minor >= 12) ||\n (NODE_VERSION.major === 23 && NODE_VERSION.minor >= 2) ||\n NODE_VERSION.major >= 24;\n\ninterface HttpOptions {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * If set to false, do not emit any spans.\n * This will ensure that the default HttpInstrumentation from OpenTelemetry is not setup,\n * only the Sentry-specific instrumentation for request isolation is applied.\n *\n * If `skipOpenTelemetrySetup: true` is configured, this defaults to `false`, otherwise it defaults to `true`.\n */\n spans?: boolean;\n\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing HTTP requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's HttpInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n *\n * The `url` param contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * For example: `'https://someService.com/users/details?id=123'`\n *\n * The `request` param contains the original {@type RequestOptions} object used to make the outgoing request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreOutgoingRequests?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * A hook that can be used to mutate the span for incoming requests.\n * This is triggered after the span is created, but before it is recorded.\n */\n incomingRequestSpanHook?: (span: Span, request: IncomingMessage, response: ServerResponse) => void;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n dropSpansForIncomingRequestStatusCodes?: (number | [number, number])[];\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreIncomingRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * If true, do not generate spans for incoming requests at all.\n * This is used by Remix to avoid generating spans for incoming requests, as it generates its own spans.\n */\n disableIncomingRequestSpans?: boolean;\n\n /**\n * Additional instrumentation options that are passed to the underlying HttpInstrumentation.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: ClientRequest | HTTPModuleRequestIncomingMessage) => void;\n responseHook?: (span: Span, response: HTTPModuleRequestIncomingMessage | ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: ClientRequest | HTTPModuleRequestIncomingMessage,\n response: HTTPModuleRequestIncomingMessage | ServerResponse,\n ) => void;\n };\n}\n\nexport const instrumentSentryHttp = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n options => {\n return new SentryHttpInstrumentation(options);\n },\n);\n\nexport const instrumentOtelHttp = generateInstrumentOnce(INTEGRATION_NAME, config => {\n const instrumentation = new HttpInstrumentation({\n ...config,\n // This is hard-coded and can never be overridden by the user\n disableIncomingRequestInstrumentation: true,\n });\n\n // We want to update the logger namespace so we can better identify what is happening here\n try {\n instrumentation['_diag'] = diag.createComponentLogger({\n namespace: INSTRUMENTATION_NAME,\n });\n // @ts-expect-error We are writing a read-only property here...\n instrumentation.instrumentationName = INSTRUMENTATION_NAME;\n } catch {\n // ignore errors here...\n }\n\n // The OTel HttpInstrumentation (>=0.213.0) has a guard (`_httpPatched`/`_httpsPatched`)\n // that prevents patching `http`/`https` when loaded by both CJS `require()` and ESM `import`.\n // In environments like AWS Lambda, the runtime loads `http` via CJS first (for the Runtime API),\n // and then the user's ESM handler imports `node:http`. The guard blocks ESM patching after CJS,\n // which breaks HTTP spans for ESM handlers. We disable this guard to allow both to be patched.\n // TODO(andrei): Remove once https://github.com/open-telemetry/opentelemetry-js/issues/6489 is fixed.\n try {\n const noopDescriptor = { get: () => false, set: () => {} };\n Object.defineProperty(instrumentation, '_httpPatched', noopDescriptor);\n Object.defineProperty(instrumentation, '_httpsPatched', noopDescriptor);\n } catch {\n // ignore errors here...\n }\n\n return instrumentation;\n});\n\n/** Exported only for tests. */\nexport function _shouldUseOtelHttpInstrumentation(\n options: HttpOptions,\n clientOptions: Partial = {},\n): boolean {\n // If `spans` is passed in, it takes precedence\n // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n if (typeof options.spans === 'boolean') {\n return options.spans;\n }\n\n if (clientOptions.skipOpenTelemetrySetup) {\n return false;\n }\n\n // IMPORTANT: We only disable span instrumentation when spans are not enabled _and_ we are on a Node version\n // that fully supports the necessary diagnostics channels for trace propagation\n if (!hasSpansEnabled(clientOptions) && FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL) {\n return false;\n }\n\n return true;\n}\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs and spans for outgoing HTTP requests which will be attached to the currently active span.\n */\nexport const httpIntegration = defineIntegration((options: HttpOptions = {}) => {\n const spans = options.spans ?? true;\n const disableIncomingRequestSpans = options.disableIncomingRequestSpans;\n\n const serverOptions = {\n sessions: options.trackIncomingRequestsAsSessions,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n ignoreRequestBody: options.ignoreIncomingRequestBody,\n maxRequestBodySize: options.maxIncomingRequestBodySize,\n } satisfies Parameters[0];\n\n const serverSpansOptions = {\n ignoreIncomingRequests: options.ignoreIncomingRequests,\n ignoreStaticAssets: options.ignoreStaticAssets,\n ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n instrumentation: options.instrumentation,\n onSpanCreated: options.incomingRequestSpanHook,\n } satisfies Parameters[0];\n\n const server = httpServerIntegration(serverOptions);\n const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n const enableServerSpans = spans && !disableIncomingRequestSpans;\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n const clientOptions = client.getOptions();\n\n if (enableServerSpans && hasSpansEnabled(clientOptions)) {\n serverSpans.setup(client);\n }\n },\n setupOnce() {\n const clientOptions = (getClient()?.getOptions() || {}) satisfies Partial;\n const useOtelHttpInstrumentation = _shouldUseOtelHttpInstrumentation(options, clientOptions);\n\n server.setupOnce();\n\n const sentryHttpInstrumentationOptions = {\n breadcrumbs: options.breadcrumbs,\n propagateTraceInOutgoingRequests:\n typeof options.tracePropagation === 'boolean'\n ? options.tracePropagation\n : FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL || !useOtelHttpInstrumentation,\n createSpansForOutgoingRequests: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n spans: options.spans,\n ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n outgoingRequestHook: (span: Span, request: ClientRequest) => {\n // Sanitize data URLs to prevent long base64 strings in span attributes\n const url = getRequestUrl(request);\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n span.setAttribute('http.url', sanitizedUrl);\n span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n span.updateName(`${request.method || 'GET'} ${sanitizedUrl}`);\n }\n\n options.instrumentation?.requestHook?.(span, request);\n },\n outgoingResponseHook: options.instrumentation?.responseHook,\n outgoingRequestApplyCustomAttributes: options.instrumentation?.applyCustomAttributesOnSpan,\n } satisfies SentryHttpInstrumentationOptions;\n\n // This is Sentry-specific instrumentation for outgoing request breadcrumbs & trace propagation\n instrumentSentryHttp(sentryHttpInstrumentationOptions);\n\n // This is the \"regular\" OTEL instrumentation that emits outgoing request spans\n if (useOtelHttpInstrumentation) {\n const instrumentationConfig = getConfigWithDefaults(options);\n instrumentOtelHttp(instrumentationConfig);\n }\n },\n processEvent(event) {\n // Note: We always run this, even if spans are disabled\n // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n return serverSpans.processEvent(event);\n },\n };\n});\n\nfunction getConfigWithDefaults(options: Partial = {}): HttpInstrumentationConfig {\n const instrumentationConfig = {\n // This is handled by the SentryHttpInstrumentation on Node 22+\n disableOutgoingRequestInstrumentation: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n\n ignoreOutgoingRequestHook: request => {\n const url = getRequestUrl(request);\n\n if (!url) {\n return false;\n }\n\n const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n if (_ignoreOutgoingRequests?.(url, request)) {\n return true;\n }\n\n return false;\n },\n\n requireParentforOutgoingSpans: false,\n requestHook: (span, req) => {\n addOriginToSpan(span, 'auto.http.otel.http');\n\n // Sanitize data URLs to prevent long base64 strings in span attributes\n const url = getRequestUrl(req as ClientRequest);\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n span.setAttribute('http.url', sanitizedUrl);\n span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n span.updateName(`${(req as ClientRequest).method || 'GET'} ${sanitizedUrl}`);\n }\n\n options.instrumentation?.requestHook?.(span, req);\n },\n responseHook: (span, res) => {\n options.instrumentation?.responseHook?.(span, res);\n },\n applyCustomAttributesOnSpan: (\n span: Span,\n request: ClientRequest | HTTPModuleRequestIncomingMessage,\n response: HTTPModuleRequestIncomingMessage | ServerResponse,\n ) => {\n options.instrumentation?.applyCustomAttributesOnSpan?.(span, request, response);\n },\n } satisfies HttpInstrumentationConfig;\n\n return instrumentationConfig;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.24.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-undici';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport * as diagch from 'diagnostics_channel';\nimport { URL } from 'url';\n\nimport {\n InstrumentationBase,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n Attributes,\n context,\n Histogram,\n HrTime,\n INVALID_SPAN_CONTEXT,\n propagation,\n Span,\n SpanKind,\n SpanStatusCode,\n trace,\n ValueType,\n} from '@opentelemetry/api';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_REQUEST_METHOD_ORIGINAL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n} from '@opentelemetry/semantic-conventions';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nimport {\n ListenerRecord,\n RequestHeadersMessage,\n RequestMessage,\n RequestTrailersMessage,\n ResponseHeadersMessage,\n} from './internal-types';\nimport { UndiciInstrumentationConfig, UndiciRequest } from './types';\n\ninterface InstrumentationRecord {\n span: Span;\n attributes: Attributes;\n startTime: HrTime;\n}\n\n// A combination of https://github.com/elastic/apm-agent-nodejs and\n// https://github.com/gadget-inc/opentelemetry-instrumentations/blob/main/packages/opentelemetry-instrumentation-undici/src/index.ts\nexport class UndiciInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n declare private _channelSubs: Array;\n private _recordFromReq = new WeakMap();\n\n declare private _httpClientDurationHistogram: Histogram;\n\n constructor(config: UndiciInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n // No need to instrument files/modules\n protected override init() {\n return undefined;\n }\n\n override disable(): void {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs.length = 0;\n }\n\n override enable(): void {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n\n this.subscribeToChannel(\n 'undici:request:create',\n this.onRequestCreated.bind(this)\n );\n this.subscribeToChannel(\n 'undici:client:sendHeaders',\n this.onRequestHeaders.bind(this)\n );\n this.subscribeToChannel(\n 'undici:request:headers',\n this.onResponseHeaders.bind(this)\n );\n this.subscribeToChannel('undici:request:trailers', this.onDone.bind(this));\n this.subscribeToChannel('undici:request:error', this.onError.bind(this));\n }\n\n protected override _updateMetricInstruments() {\n this._httpClientDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n }\n\n private subscribeToChannel(\n diagnosticChannel: string,\n onMessage: (message: any, name: string | symbol) => void\n ) {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const [major, minor] = process.version\n .replace('v', '')\n .split('.')\n .map(n => Number(n));\n const useNewSubscribe = major > 18 || (major === 18 && minor >= 19);\n\n let unsubscribe: () => void;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n } else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n\n private parseRequestHeaders(request: UndiciRequest) {\n const result = new Map();\n\n if (Array.isArray(request.headers)) {\n // headers are an array [k1, v2, k2, v2] (undici v6+)\n // values could be string or a string[] for multiple values\n for (let i = 0; i < request.headers.length; i += 2) {\n const key = request.headers[i];\n const value = request.headers[i + 1];\n\n // Key should always be a string, but the types don't know that, and let's be safe\n if (typeof key === 'string') {\n result.set(key.toLowerCase(), value);\n }\n }\n } else if (typeof request.headers === 'string') {\n // headers are a raw string (undici v5)\n // headers could be repeated in several lines for multiple values\n const headers = request.headers.split('\\r\\n');\n for (const line of headers) {\n if (!line) {\n continue;\n }\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) {\n // Invalid header? Probably this can't happen, but again let's be safe.\n continue;\n }\n const key = line.substring(0, colonIndex).toLowerCase();\n const value = line.substring(colonIndex + 1).trim();\n const allValues = result.get(key);\n\n if (allValues && Array.isArray(allValues)) {\n allValues.push(value);\n } else if (allValues) {\n result.set(key, [allValues, value]);\n } else {\n result.set(key, value);\n }\n }\n }\n return result;\n }\n\n // This is the 1st message we receive for each request (fired after request creation). Here we will\n // create the span and populate some atttributes, then link the span to the request for further\n // span processing\n private onRequestCreated({ request }: RequestMessage): void {\n // Ignore if:\n // - instrumentation is disabled\n // - ignored by config\n // - method is 'CONNECT'\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n const shouldIgnoreReq = safeExecuteInTheMiddle(\n () =>\n !enabled ||\n request.method === 'CONNECT' ||\n config.ignoreRequestHook?.(request),\n e => e && this._diag.error('caught ignoreRequestHook error: ', e),\n true\n );\n\n if (shouldIgnoreReq) {\n return;\n }\n\n const startTime = hrTime();\n let requestUrl;\n try {\n requestUrl = new URL(request.path, request.origin);\n } catch (err) {\n this._diag.warn('could not determine url.full:', err);\n // Skip instrumenting this request.\n return;\n }\n const urlScheme = requestUrl.protocol.replace(':', '');\n const requestMethod = this.getRequestMethod(request.method);\n const attributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: requestMethod,\n [ATTR_HTTP_REQUEST_METHOD_ORIGINAL]: request.method,\n [ATTR_URL_FULL]: requestUrl.toString(),\n [ATTR_URL_PATH]: requestUrl.pathname,\n [ATTR_URL_QUERY]: requestUrl.search,\n [ATTR_URL_SCHEME]: urlScheme,\n };\n\n const schemePorts: Record = { https: '443', http: '80' };\n const serverAddress = requestUrl.hostname;\n const serverPort = requestUrl.port || schemePorts[urlScheme];\n\n attributes[ATTR_SERVER_ADDRESS] = serverAddress;\n if (serverPort && !isNaN(Number(serverPort))) {\n attributes[ATTR_SERVER_PORT] = Number(serverPort);\n }\n\n // Get user agent from headers\n const headersMap = this.parseRequestHeaders(request);\n const userAgentValues = headersMap.get('user-agent');\n\n if (userAgentValues) {\n // NOTE: having multiple user agents is not expected so\n // we're going to take last one like `curl` does\n // ref: https://curl.se/docs/manpage.html#-A\n const userAgent = Array.isArray(userAgentValues)\n ? userAgentValues[userAgentValues.length - 1]\n : userAgentValues;\n attributes[ATTR_USER_AGENT_ORIGINAL] = userAgent;\n }\n\n // Get attributes from the hook if present\n const hookAttributes = safeExecuteInTheMiddle(\n () => config.startSpanHook?.(request),\n e => e && this._diag.error('caught startSpanHook error: ', e),\n true\n );\n if (hookAttributes) {\n Object.entries(hookAttributes).forEach(([key, val]) => {\n attributes[key] = val;\n });\n }\n\n // Check if parent span is required via config and:\n // - if a parent is required but not present, we use a `NoopSpan` to still\n // propagate context without recording it.\n // - create a span otherwise\n const activeCtx = context.active();\n const currentSpan = trace.getSpan(activeCtx);\n let span: Span;\n\n if (\n config.requireParentforSpans &&\n (!currentSpan || !trace.isSpanContextValid(currentSpan.spanContext()))\n ) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n span = this.tracer.startSpan(\n requestMethod === '_OTHER' ? 'HTTP' : requestMethod,\n {\n kind: SpanKind.CLIENT,\n attributes: attributes,\n },\n activeCtx\n );\n }\n\n // Execute the request hook if defined\n safeExecuteInTheMiddle(\n () => config.requestHook?.(span, request),\n e => e && this._diag.error('caught requestHook error: ', e),\n true\n );\n\n // Context propagation goes last so no hook can tamper\n // the propagation headers\n const requestContext = trace.setSpan(context.active(), span);\n const addedHeaders: Record = {};\n propagation.inject(requestContext, addedHeaders);\n\n const headerEntries = Object.entries(addedHeaders);\n\n for (let i = 0; i < headerEntries.length; i++) {\n const [k, v] = headerEntries[i];\n\n if (typeof request.addHeader === 'function') {\n request.addHeader(k, v);\n } else if (typeof request.headers === 'string') {\n request.headers += `${k}: ${v}\\r\\n`;\n } else if (Array.isArray(request.headers)) {\n // undici@6.11.0 accidentally, briefly removed `request.addHeader()`.\n request.headers.push(k, v);\n }\n }\n this._recordFromReq.set(request, { span, attributes, startTime });\n }\n\n // This is the 2nd message we receive for each request. It is fired when connection with\n // the remote is established and about to send the first byte. Here we do have info about the\n // remote address and port so we can populate some `network.*` attributes into the span\n private onRequestHeaders({ request, socket }: RequestHeadersMessage): void {\n const record = this._recordFromReq.get(request as UndiciRequest);\n\n if (!record) {\n return;\n }\n\n const config = this.getConfig();\n const { span } = record;\n const { remoteAddress, remotePort } = socket;\n const spanAttributes: Attributes = {\n [ATTR_NETWORK_PEER_ADDRESS]: remoteAddress,\n [ATTR_NETWORK_PEER_PORT]: remotePort,\n };\n\n // After hooks have been processed (which may modify request headers)\n // we can collect the headers based on the configuration\n if (config.headersToSpanAttributes?.requestHeaders) {\n const headersToAttribs = new Set(\n config.headersToSpanAttributes.requestHeaders.map(n => n.toLowerCase())\n );\n const headersMap = this.parseRequestHeaders(request);\n\n for (const [name, value] of headersMap.entries()) {\n if (headersToAttribs.has(name)) {\n const attrValue = Array.isArray(value) ? value : [value];\n spanAttributes[`http.request.header.${name}`] = attrValue;\n }\n }\n }\n\n span.setAttributes(spanAttributes);\n }\n\n // This is the 3rd message we get for each request and it's fired when the server\n // headers are received, body may not be accessible yet.\n // From the response headers we can set the status and content length\n private onResponseHeaders({\n request,\n response,\n }: ResponseHeadersMessage): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes } = record;\n const spanAttributes: Attributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: response.statusCode,\n };\n\n const config = this.getConfig();\n\n // Execute the response hook if defined\n safeExecuteInTheMiddle(\n () => config.responseHook?.(span, { request, response }),\n e => e && this._diag.error('caught responseHook error: ', e),\n true\n );\n\n if (config.headersToSpanAttributes?.responseHeaders) {\n const headersToAttribs = new Set();\n config.headersToSpanAttributes?.responseHeaders.forEach(name =>\n headersToAttribs.add(name.toLowerCase())\n );\n\n for (let idx = 0; idx < response.headers.length; idx = idx + 2) {\n const name = response.headers[idx].toString().toLowerCase();\n const value = response.headers[idx + 1];\n\n if (headersToAttribs.has(name)) {\n const attrName = `http.response.header.${name}`;\n if (!Object.hasOwn(spanAttributes, attrName)) {\n spanAttributes[attrName] = [value.toString()];\n } else {\n (spanAttributes[attrName] as string[]).push(value.toString());\n }\n }\n }\n }\n\n span.setAttributes(spanAttributes);\n span.setStatus({\n code:\n response.statusCode >= 400\n ? SpanStatusCode.ERROR\n : SpanStatusCode.UNSET,\n });\n record.attributes = Object.assign(attributes, spanAttributes);\n }\n\n // This is the last event we receive if the request went without any errors\n private onDone({ request }: RequestTrailersMessage): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes, startTime } = record;\n\n // End the span\n span.end();\n this._recordFromReq.delete(request);\n\n // Record metrics\n this.recordRequestDuration(attributes, startTime);\n }\n\n // This is the event we get when something is wrong in the request like\n // - invalid options when calling `fetch` global API or any undici method for request\n // - connectivity errors such as unreachable host\n // - requests aborted through an `AbortController.signal`\n // NOTE: server errors are considered valid responses and it's the lib consumer\n // who should deal with that.\n private onError({ request, error }: any): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes, startTime } = record;\n\n // NOTE: in `undici@6.3.0` when request aborted the error type changes from\n // a custom error (`RequestAbortedError`) to a built-in `DOMException` carrying\n // some differences:\n // - `code` is from DOMEXception (ABORT_ERR: 20)\n // - `message` changes\n // - stacktrace is smaller and contains node internal frames\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.end();\n this._recordFromReq.delete(request);\n\n // Record metrics (with the error)\n attributes[ATTR_ERROR_TYPE] = error.message;\n this.recordRequestDuration(attributes, startTime);\n }\n\n private recordRequestDuration(attributes: Attributes, startTime: HrTime) {\n // Time to record metrics\n const metricsAttributes: Attributes = {};\n // Get the attribs already in span attributes\n const keysToCopy = [\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_SCHEME,\n ATTR_ERROR_TYPE,\n ];\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n\n // Take the duration and record it\n const durationSeconds =\n hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000;\n this._httpClientDurationHistogram.record(\n durationSeconds,\n metricsAttributes\n );\n }\n\n private getRequestMethod(original: string): string {\n const knownMethods = {\n CONNECT: true,\n OPTIONS: true,\n HEAD: true,\n GET: true,\n POST: true,\n PUT: true,\n PATCH: true,\n DELETE: true,\n TRACE: true,\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n QUERY: true,\n };\n\n if (original.toUpperCase() in knownMethods) {\n return original.toUpperCase();\n }\n\n return '_OTHER';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { UndiciInstrumentation } from './undici';\nexport type {\n IgnoreRequestFunction,\n RequestHookFunction,\n ResponseHookFunction,\n StartSpanHookFunction,\n UndiciInstrumentationConfig,\n UndiciRequest,\n UndiciResponse,\n} from './types';\n","import type { UndiciInstrumentationConfig } from '@opentelemetry/instrumentation-undici';\nimport { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n defineIntegration,\n getClient,\n hasSpansEnabled,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n stripDataUrlContent,\n} from '@sentry/core';\nimport type { NodeClient } from '@sentry/node-core';\nimport { generateInstrumentOnce, SentryNodeFetchInstrumentation } from '@sentry/node-core';\nimport type { NodeClientOptions } from '../types';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\ninterface NodeFetchOptions extends Pick<\n UndiciInstrumentationConfig,\n 'requestHook' | 'responseHook' | 'headersToSpanAttributes'\n> {\n /**\n * Whether breadcrumbs should be recorded for requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * If set to false, do not emit any spans.\n * This will ensure that the default UndiciInstrumentation from OpenTelemetry is not setup,\n * only the Sentry-specific instrumentation for breadcrumbs & trace propagation is applied.\n *\n * If `skipOpenTelemetrySetup: true` is configured, this defaults to `false`, otherwise it defaults to `true`.\n */\n spans?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's UndiciInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing fetch requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n}\n\nconst instrumentOtelNodeFetch = generateInstrumentOnce(\n INTEGRATION_NAME,\n UndiciInstrumentation,\n (options: NodeFetchOptions) => {\n return _getConfigWithDefaults(options);\n },\n);\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options: NodeFetchOptions) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options: NodeFetchOptions = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n const instrumentSpans = _shouldInstrumentSpans(options, getClient()?.getOptions());\n\n // This is the \"regular\" OTEL instrumentation that emits spans\n if (instrumentSpans) {\n instrumentOtelNodeFetch(options);\n }\n\n // This is the Sentry-specific instrumentation that creates breadcrumbs & propagates traces\n // This must be registered after the OTEL one, to ensure that the core trace propagation logic takes presedence\n // Otherwise, the sentry-trace header may be set multiple times\n instrumentSentryNodeFetch(options);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n\n// Matching the behavior of the base instrumentation\nfunction getAbsoluteUrl(origin: string, path: string = '/'): string {\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n}\n\nfunction _shouldInstrumentSpans(options: NodeFetchOptions, clientOptions: Partial = {}): boolean {\n // If `spans` is passed in, it takes precedence\n // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n return typeof options.spans === 'boolean'\n ? options.spans\n : !clientOptions.skipOpenTelemetrySetup && hasSpansEnabled(clientOptions);\n}\n\n/** Exported only for tests. */\nexport function _getConfigWithDefaults(options: Partial = {}): UndiciInstrumentationConfig {\n const instrumentationConfig = {\n requireParentforSpans: false,\n ignoreRequestHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n const shouldIgnore = _ignoreOutgoingRequests && url && _ignoreOutgoingRequests(url);\n\n return !!shouldIgnore;\n },\n startSpanHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Sanitize data URLs to prevent long base64 strings in span attributes\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n 'http.url': sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_URL_FULL]: sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: `${request.method || 'GET'} ${sanitizedUrl}`,\n };\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n };\n },\n requestHook: options.requestHook,\n responseHook: options.responseHook,\n headersToSpanAttributes: options.headersToSpanAttributes,\n } satisfies UndiciInstrumentationConfig;\n\n return instrumentationConfig;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-fs';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { FMember, FPMember } from './types';\n\nexport const PROMISE_FUNCTIONS: FPMember[] = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'copyFile',\n 'cp' as FPMember, // added in v16\n 'lchown',\n 'link',\n 'lstat',\n 'lutimes', // added in v12\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir', // added in v12\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm', // added in v14\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n // 'lchmod', // only implemented on macOS\n];\n\nexport const CALLBACK_FUNCTIONS: FMember[] = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'copyFile',\n 'cp' as FMember, // added in v16\n 'exists', // deprecated, inconsistent cb signature, handling separately when patching\n 'lchown',\n 'link',\n 'lstat',\n 'lutimes', // added in v12\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir', // added in v12\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'realpath.native',\n 'rename',\n 'rm', // added in v14\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n // 'close', // functions on file descriptor\n // 'fchmod', // functions on file descriptor\n // 'fchown', // functions on file descriptor\n // 'fdatasync', // functions on file descriptor\n // 'fstat', // functions on file descriptor\n // 'fsync', // functions on file descriptor\n // 'ftruncate', // functions on file descriptor\n // 'futimes', // functions on file descriptor\n // 'lchmod', // only implemented on macOS\n // 'read', // functions on file descriptor\n // 'readv', // functions on file descriptor\n // 'write', // functions on file descriptor\n // 'writev', // functions on file descriptor\n];\n\nexport const SYNC_FUNCTIONS: FMember[] = [\n 'accessSync',\n 'appendFileSync',\n 'chmodSync',\n 'chownSync',\n 'copyFileSync',\n 'cpSync' as FMember, // added in v16\n 'existsSync',\n 'lchownSync',\n 'linkSync',\n 'lstatSync',\n 'lutimesSync', // added in v12\n 'mkdirSync',\n 'mkdtempSync',\n 'opendirSync', // added in v12\n 'openSync',\n 'readdirSync',\n 'readFileSync',\n 'readlinkSync',\n 'realpathSync',\n 'realpathSync.native',\n 'renameSync',\n 'rmdirSync',\n 'rmSync', // added in v14\n 'statSync',\n 'symlinkSync',\n 'truncateSync',\n 'unlinkSync',\n 'utimesSync',\n 'writeFileSync',\n // 'closeSync', // functions on file descriptor\n // 'fchmodSync', // functions on file descriptor\n // 'fchownSync', // functions on file descriptor\n // 'fdatasyncSync', // functions on file descriptor\n // 'fstatSync', // functions on file descriptor\n // 'fsyncSync', // functions on file descriptor\n // 'ftruncateSync', // functions on file descriptor\n // 'futimesSync', // functions on file descriptor\n // 'lchmodSync', // only implemented on macOS\n // 'readSync', // functions on file descriptor\n // 'readvSync', // functions on file descriptor\n // 'writeSync', // functions on file descriptor\n // 'writevSync', // functions on file descriptor\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport type { FunctionPropertyNames, FMember } from './types';\nimport type * as fs from 'fs';\ntype FS = typeof fs;\n\nexport function splitTwoLevels(\n functionName: FMember\n):\n | [FunctionPropertyNames & string]\n | [FunctionPropertyNames & string, string] {\n const memberParts = functionName.split('.');\n if (memberParts.length > 1) {\n if (memberParts.length !== 2)\n throw Error(`Invalid member function name ${functionName}`);\n return memberParts as [FunctionPropertyNames & string, string];\n } else {\n return [functionName as FunctionPropertyNames & string];\n }\n}\n\nexport function indexFs(\n fs: FSObject,\n member: FMember\n): { objectToPatch: any; functionNameToPatch: string } {\n if (!member) throw new Error(JSON.stringify({ member }));\n const splitResult = splitTwoLevels(member);\n const [functionName1, functionName2] = splitResult;\n if (functionName2) {\n return {\n objectToPatch: fs[functionName1],\n functionNameToPatch: functionName2,\n };\n } else {\n return {\n objectToPatch: fs,\n functionNameToPatch: functionName1,\n };\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { isTracingSuppressed, suppressTracing } from '@opentelemetry/core';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n CALLBACK_FUNCTIONS,\n PROMISE_FUNCTIONS,\n SYNC_FUNCTIONS,\n} from './constants';\nimport type * as fs from 'fs';\nimport type {\n FMember,\n FPMember,\n CreateHook,\n EndHook,\n FsInstrumentationConfig,\n} from './types';\nimport { promisify } from 'util';\nimport { indexFs } from './utils';\n\ntype FS = typeof fs;\ntype FSPromises = (typeof fs)['promises'];\n\n/**\n * This is important for 2-level functions like `realpath.native` to retain the 2nd-level\n * when patching the 1st-level.\n */\nfunction patchedFunctionWithOriginalProperties<\n T extends (...args: any[]) => ReturnType,\n>(patchedFunction: T, original: T): T {\n return Object.assign(patchedFunction, original);\n}\n\nexport class FsInstrumentation extends InstrumentationBase {\n constructor(config: FsInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init(): (\n | InstrumentationNodeModuleDefinition\n | InstrumentationNodeModuleDefinition\n )[] {\n return [\n new InstrumentationNodeModuleDefinition(\n 'fs',\n ['*'],\n (fs: FS) => {\n for (const fName of SYNC_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchSyncFunction.bind(this, fName)\n );\n }\n for (const fName of CALLBACK_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n if (fName === 'exists') {\n // handling separately because of the inconsistent cb style:\n // `exists` doesn't have error as the first argument, but the result\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchExistsCallbackFunction.bind(this, fName)\n );\n continue;\n }\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchCallbackFunction.bind(this, fName)\n );\n }\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fs.promises[fName])) {\n this._unwrap(fs.promises, fName);\n }\n this._wrap(\n fs.promises,\n fName,\n this._patchPromiseFunction.bind(this, fName)\n );\n }\n return fs;\n },\n (fs: FS) => {\n if (fs === undefined) return;\n for (const fName of SYNC_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n }\n for (const fName of CALLBACK_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n }\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fs.promises[fName])) {\n this._unwrap(fs.promises, fName);\n }\n }\n }\n ),\n new InstrumentationNodeModuleDefinition(\n 'fs/promises',\n ['*'],\n (fsPromises: FSPromises) => {\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fsPromises[fName])) {\n this._unwrap(fsPromises, fName);\n }\n this._wrap(\n fsPromises,\n fName,\n this._patchPromiseFunction.bind(this, fName)\n );\n }\n return fsPromises;\n },\n (fsPromises: FSPromises) => {\n if (fsPromises === undefined) return;\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fsPromises[fName])) {\n this._unwrap(fsPromises, fName);\n }\n }\n }\n ),\n ];\n }\n\n protected _patchSyncFunction ReturnType>(\n functionName: FMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n try {\n // Suppress tracing for internal fs calls\n const res = api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n instrumentation._runEndHook(functionName, { args: args, span });\n return res;\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, { args: args, span, error });\n throw error;\n } finally {\n span.end();\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _patchCallbackFunction ReturnType>(\n functionName: FMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const lastIdx = args.length - 1;\n const cb = args[lastIdx];\n if (typeof cb === 'function') {\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n // Return to the context active during the call in the callback\n args[lastIdx] = api.context.bind(\n activeContext,\n function (this: unknown, error?: Error) {\n if (error) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n }\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n return cb.apply(this, arguments);\n }\n );\n\n try {\n // Suppress tracing for internal fs calls\n return api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n throw error;\n }\n } else {\n // TODO: what to do if we are pretty sure it's going to throw\n return original.apply(this, args);\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _patchExistsCallbackFunction<\n T extends (...args: any[]) => ReturnType,\n >(functionName: 'exists', original: T): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const lastIdx = args.length - 1;\n const cb = args[lastIdx];\n if (typeof cb === 'function') {\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n // Return to the context active during the call in the callback\n args[lastIdx] = api.context.bind(\n activeContext,\n function (this: unknown) {\n // `exists` never calls the callback with an error\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n });\n span.end();\n return cb.apply(this, arguments);\n }\n );\n\n try {\n // Suppress tracing for internal fs calls\n return api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n throw error;\n }\n } else {\n return original.apply(this, args);\n }\n };\n const functionWithOriginalProperties =\n patchedFunctionWithOriginalProperties(patchedFunction, original);\n\n // `exists` has a custom promisify function because of the inconsistent signature\n // replicating that on the patched function\n const promisified = function (path: unknown) {\n return new Promise(resolve =>\n functionWithOriginalProperties(path, resolve)\n );\n };\n Object.defineProperty(promisified, 'name', { value: functionName });\n Object.defineProperty(functionWithOriginalProperties, promisify.custom, {\n value: promisified,\n });\n\n return functionWithOriginalProperties;\n }\n\n protected _patchPromiseFunction ReturnType>(\n functionName: FPMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = async function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n try {\n // Suppress tracing for internal fs calls\n const res = await api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n instrumentation._runEndHook(functionName, { args: args, span });\n return res;\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, { args: args, span, error });\n throw error;\n } finally {\n span.end();\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _runCreateHook(\n ...args: Parameters\n ): ReturnType {\n const { createHook } = this.getConfig();\n if (typeof createHook === 'function') {\n try {\n return createHook(...args);\n } catch (e) {\n this._diag.error('caught createHook error', e);\n }\n }\n return true;\n }\n\n protected _runEndHook(...args: Parameters): ReturnType {\n const { endHook } = this.getConfig();\n if (typeof endHook === 'function') {\n try {\n endHook(...args);\n } catch (e) {\n this._diag.error('caught endHook error', e);\n }\n }\n }\n\n protected _shouldTrace(context: api.Context): boolean {\n if (isTracingSuppressed(context)) {\n // Performance optimization. Avoid creating additional contexts and spans\n // if we already know that the tracing is being suppressed.\n return false;\n }\n\n const { requireParentSpan } = this.getConfig();\n if (requireParentSpan) {\n const parentSpan = api.trace.getSpan(context);\n if (parentSpan == null) {\n return false;\n }\n }\n\n return true;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { FsInstrumentation } from './instrumentation';\nexport type {\n CreateHook,\n EndHook,\n FMember,\n FPMember,\n FsInstrumentationConfig,\n FunctionProperties,\n FunctionPropertyNames,\n FunctionPropertyNamesTwoLevels,\n Member,\n} from './types';\n","import { FsInstrumentation } from '@opentelemetry/instrumentation-fs';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'FileSystem';\n\n/**\n * This integration will create spans for `fs` API operations, like reading and writing files.\n *\n * **WARNING:** This integration may add significant overhead to your application. Especially in scenarios with a lot of\n * file I/O, like for example when running a framework dev server, including this integration can massively slow down\n * your application.\n *\n * @param options Configuration for this integration.\n */\nexport const fsIntegration = defineIntegration(\n (\n options: {\n /**\n * Setting this option to `true` will include any filepath arguments from your `fs` API calls as span attributes.\n *\n * Defaults to `false`.\n */\n recordFilePaths?: boolean;\n\n /**\n * Setting this option to `true` will include the error messages of failed `fs` API calls as a span attribute.\n *\n * Defaults to `false`.\n */\n recordErrorMessagesAsSpanAttributes?: boolean;\n } = {},\n ) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new FsInstrumentation({\n requireParentSpan: true,\n endHook(functionName, { args, span, error }) {\n span.updateName(`fs.${functionName}`);\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'file',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.file.fs',\n });\n\n if (options.recordErrorMessagesAsSpanAttributes) {\n if (typeof args[0] === 'string' && FS_OPERATIONS_WITH_PATH_ARG.includes(functionName)) {\n span.setAttribute('path_argument', args[0]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_TARGET_PATH.includes(functionName)\n ) {\n span.setAttribute('target_argument', args[0]);\n span.setAttribute('path_argument', args[1]);\n } else if (typeof args[0] === 'string' && FS_OPERATIONS_WITH_PREFIX.includes(functionName)) {\n span.setAttribute('prefix_argument', args[0]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_EXISTING_PATH_NEW_PATH.includes(functionName)\n ) {\n span.setAttribute('existing_path_argument', args[0]);\n span.setAttribute('new_path_argument', args[1]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_SRC_DEST.includes(functionName)\n ) {\n span.setAttribute('src_argument', args[0]);\n span.setAttribute('dest_argument', args[1]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_OLD_PATH_NEW_PATH.includes(functionName)\n ) {\n span.setAttribute('old_path_argument', args[0]);\n span.setAttribute('new_path_argument', args[1]);\n }\n }\n\n if (error && options.recordErrorMessagesAsSpanAttributes) {\n span.setAttribute('fs_error', error.message);\n }\n },\n }),\n )();\n },\n };\n },\n);\n\nconst FS_OPERATIONS_WITH_OLD_PATH_NEW_PATH = ['rename', 'renameSync'];\nconst FS_OPERATIONS_WITH_SRC_DEST = ['copyFile', 'cp', 'copyFileSync', 'cpSync'];\nconst FS_OPERATIONS_WITH_EXISTING_PATH_NEW_PATH = ['link', 'linkSync'];\nconst FS_OPERATIONS_WITH_PREFIX = ['mkdtemp', 'mkdtempSync'];\nconst FS_OPERATIONS_WITH_TARGET_PATH = ['symlink', 'symlinkSync'];\nconst FS_OPERATIONS_WITH_PATH_ARG = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'exists',\n 'mkdir',\n 'lchown',\n 'lstat',\n 'lutimes',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'realpath.native',\n 'rm',\n 'rmdir',\n 'stat',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n 'accessSync',\n 'appendFileSync',\n 'chmodSync',\n 'chownSync',\n 'existsSync',\n 'lchownSync',\n 'lstatSync',\n 'lutimesSync',\n 'opendirSync',\n 'mkdirSync',\n 'openSync',\n 'readdirSync',\n 'readFileSync',\n 'readlinkSync',\n 'realpathSync',\n 'realpathSync.native',\n 'rmdirSync',\n 'rmSync',\n 'statSync',\n 'truncateSync',\n 'unlinkSync',\n 'utimesSync',\n 'writeFileSync',\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum ExpressLayerType {\n ROUTER = 'router',\n MIDDLEWARE = 'middleware',\n REQUEST_HANDLER = 'request_handler',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n EXPRESS_TYPE = 'express.type',\n EXPRESS_NAME = 'express.name',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Request } from 'express';\nimport { Attributes } from '@opentelemetry/api';\n\n/**\n * This symbol is used to mark express layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexport const kLayerPatched: unique symbol = Symbol('express-layer-patched');\n\n/**\n * This const define where on the `request` object the Instrumentation will mount the\n * current stack of express layer.\n *\n * It is necessary because express doesn't store the different layers\n * (ie: middleware, router etc) that it called to get to the current layer.\n * Given that, the only way to know the route of a given layer is to\n * store the path of where each previous layer has been mounted.\n *\n * ex: bodyParser > auth middleware > /users router > get /:id\n * in this case the stack would be: [\"/users\", \"/:id\"]\n *\n * ex2: bodyParser > /api router > /v1 router > /users router > get /:id\n * stack: [\"/api\", \"/v1\", \"/users\", \":id\"]\n *\n */\nexport const _LAYERS_STORE_PROPERTY = '__ot_middlewares';\n\nexport type PatchedRequest = {\n [_LAYERS_STORE_PROPERTY]?: string[];\n} & Request;\nexport type PathParams = string | RegExp | Array;\n\n// https://github.com/expressjs/express/blob/main/lib/router/index.js#L53\nexport type ExpressRouter = {\n params: { [key: string]: string };\n _params: string[];\n caseSensitive: boolean;\n mergeParams: boolean;\n strict: boolean;\n stack: ExpressLayer[];\n};\n\n// https://github.com/expressjs/express/blob/main/lib/router/layer.js#L33\nexport type ExpressLayer = {\n handle: Function & Record;\n [kLayerPatched]?: boolean;\n name: string;\n params: { [key: string]: string };\n path: string;\n regexp: RegExp;\n route?: ExpressLayer;\n};\n\nexport type LayerMetadata = {\n attributes: Attributes;\n name: string;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n IgnoreMatcher,\n ExpressInstrumentationConfig,\n LayerPathSegment,\n} from './types';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n ExpressLayer,\n PatchedRequest,\n _LAYERS_STORE_PROPERTY,\n} from './internal-types';\n\n/**\n * Store layers path in the request to be able to construct route later\n * @param request The request where\n * @param [value] the value to push into the array\n */\nexport const storeLayerPath = (\n request: PatchedRequest,\n value?: string\n): { isLayerPathStored: boolean } => {\n if (Array.isArray(request[_LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, _LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n if (value === undefined) return { isLayerPathStored: false };\n\n (request[_LAYERS_STORE_PROPERTY] as string[]).push(value);\n\n return { isLayerPathStored: true };\n};\n\n/**\n * Recursively search the router path from layer stack\n * @param path The path to reconstruct\n * @param layer The layer to reconstruct from\n * @returns The reconstructed path\n */\nexport const getRouterPath = (path: string, layer: ExpressLayer): string => {\n const stackLayer = layer.handle?.stack?.[0];\n\n if (stackLayer?.route?.path) {\n return `${path}${stackLayer.route.path}`;\n }\n\n if (stackLayer?.handle?.stack) {\n return getRouterPath(path, stackLayer);\n }\n\n return path;\n};\n\n/**\n * Parse express layer context to retrieve a name and attributes.\n * @param route The route of the layer\n * @param layer Express layer\n * @param [layerPath] if present, the path on which the layer has been mounted\n */\nexport const getLayerMetadata = (\n route: string,\n layer: ExpressLayer,\n layerPath?: string\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (layer.name === 'router') {\n const maybeRouterPath = getRouterPath('', layer);\n const extractedRouterPath = maybeRouterPath\n ? maybeRouterPath\n : layerPath || route || '/';\n\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]: extractedRouterPath,\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.ROUTER,\n },\n name: `router - ${extractedRouterPath}`,\n };\n } else if (layer.name === 'bound dispatch' || layer.name === 'handle') {\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]:\n (route || layerPath) ?? 'request handler',\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.REQUEST_HANDLER,\n },\n name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]: layer.name,\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param obj obj to inspect\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (\n constant: string,\n pattern: IgnoreMatcher\n): boolean => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n } else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n } else if (typeof pattern === 'function') {\n return pattern(constant);\n } else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * It will not re-throw exceptions from `list` provided by the client\n * @param constant e.g URL of request\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (\n name: string,\n type: ExpressLayerType,\n config?: ExpressInstrumentationConfig\n): boolean => {\n if (\n Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)\n ) {\n return true;\n }\n if (Array.isArray(config?.ignoreLayers) === false) return false;\n try {\n for (const pattern of config!.ignoreLayers!) {\n if (satisfiesPattern(name, pattern)) {\n return true;\n }\n }\n } catch (e) {\n /* catch block*/\n }\n\n return false;\n};\n\n/**\n * Converts a user-provided error value into an error and error message pair\n *\n * @param error - User-provided error value\n * @returns Both an Error or string representation of the value and an error message\n */\nexport const asErrorAndMessage = (\n error: unknown\n): [error: string | Error, message: string] =>\n error instanceof Error\n ? [error, error.message]\n : [String(error), String(error)];\n\n/**\n * Extracts the layer path from the route arguments\n *\n * @param args - Arguments of the route\n * @returns The layer path\n */\nexport const getLayerPath = (\n args: [LayerPathSegment | LayerPathSegment[], ...unknown[]]\n): string | undefined => {\n const firstArg = args[0];\n\n if (Array.isArray(firstArg)) {\n return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(',');\n }\n\n return extractLayerPathSegment(firstArg);\n};\n\nconst extractLayerPathSegment = (arg: LayerPathSegment) => {\n if (typeof arg === 'string') {\n return arg;\n }\n\n if (arg instanceof RegExp || typeof arg === 'number') {\n return arg.toString();\n }\n\n return;\n};\n\nexport function getConstructedRoute(req: {\n originalUrl: PatchedRequest['originalUrl'];\n [_LAYERS_STORE_PROPERTY]?: string[];\n}) {\n const layersStore: string[] = Array.isArray(req[_LAYERS_STORE_PROPERTY])\n ? (req[_LAYERS_STORE_PROPERTY] as string[])\n : [];\n\n const meaningfulPaths = layersStore.filter(\n path => path !== '/' && path !== '/*'\n );\n\n if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') {\n return '*';\n }\n\n // Join parts and remove duplicate slashes\n return meaningfulPaths.join('').replace(/\\/{2,}/g, '/');\n}\n\n/**\n * Extracts the actual matched route from Express request for OpenTelemetry instrumentation.\n * Returns the route that should be used as the http.route attribute.\n *\n * @param req - The Express request object with layers store\n * @param layersStoreProperty - The property name where layer paths are stored\n * @returns The matched route string or undefined if no valid route is found\n */\nexport function getActualMatchedRoute(req: {\n originalUrl: PatchedRequest['originalUrl'];\n [_LAYERS_STORE_PROPERTY]?: string[];\n}): string | undefined {\n const layersStore: string[] = Array.isArray(req[_LAYERS_STORE_PROPERTY])\n ? (req[_LAYERS_STORE_PROPERTY] as string[])\n : [];\n\n // If no layers are stored, no route can be determined\n if (layersStore.length === 0) {\n return undefined;\n }\n\n // Handle root path case - if all paths are root, only return root if originalUrl is also root\n // The layer store also includes root paths in case a non-existing url was requested\n if (layersStore.every(path => path === '/')) {\n return req.originalUrl === '/' ? '/' : undefined;\n }\n\n const constructedRoute = getConstructedRoute(req);\n if (constructedRoute === '*') {\n return constructedRoute;\n }\n\n // For RegExp routes or route arrays, return the constructed route\n // This handles the case where the route is defined using RegExp or an array\n if (\n constructedRoute.includes('/') &&\n (constructedRoute.includes(',') ||\n constructedRoute.includes('\\\\') ||\n constructedRoute.includes('*') ||\n constructedRoute.includes('['))\n ) {\n return constructedRoute;\n }\n\n // Ensure route starts with '/' if it doesn't already\n const normalizedRoute = constructedRoute.startsWith('/')\n ? constructedRoute\n : `/${constructedRoute}`;\n\n // Validate that this appears to be a matched route\n // A route is considered matched if:\n // 1. We have a constructed route\n // 2. The original URL matches or starts with our route pattern\n const isValidRoute =\n normalizedRoute.length > 0 &&\n (req.originalUrl === normalizedRoute ||\n req.originalUrl.startsWith(normalizedRoute) ||\n isRoutePattern(normalizedRoute));\n\n return isValidRoute ? normalizedRoute : undefined;\n}\n\n/**\n * Checks if a route contains parameter patterns (e.g., :id, :userId)\n * which are valid even if they don't exactly match the original URL\n */\nfunction isRoutePattern(route: string): boolean {\n return route.includes(':') || route.includes('*');\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-express';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n trace,\n context,\n diag,\n Attributes,\n SpanStatusCode,\n} from '@opentelemetry/api';\nimport type * as express from 'express';\nimport { ExpressInstrumentationConfig, ExpressRequestInfo } from './types';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n asErrorAndMessage,\n getLayerMetadata,\n getLayerPath,\n isLayerIgnored,\n storeLayerPath,\n getActualMatchedRoute,\n getConstructedRoute,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport {\n ExpressLayer,\n ExpressRouter,\n kLayerPatched,\n PatchedRequest,\n _LAYERS_STORE_PROPERTY,\n} from './internal-types';\n\n/** Express instrumentation for OpenTelemetry */\nexport class ExpressInstrumentation extends InstrumentationBase {\n constructor(config: ExpressInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'express',\n ['>=4.0.0 <6'],\n moduleExports => {\n const isExpressWithRouterPrototype =\n typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype // Express v5\n : moduleExports.Router; // Express v4\n // patch express.Router.route\n if (isWrapped(routerProto.route)) {\n this._unwrap(routerProto, 'route');\n }\n this._wrap(routerProto, 'route', this._getRoutePatch());\n // patch express.Router.use\n if (isWrapped(routerProto.use)) {\n this._unwrap(routerProto, 'use');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._wrap(routerProto, 'use', this._getRouterUsePatch() as any);\n // patch express.Application.use\n if (isWrapped(moduleExports.application.use)) {\n this._unwrap(moduleExports.application, 'use');\n }\n this._wrap(\n moduleExports.application,\n 'use',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._getAppUsePatch(isExpressWithRouterPrototype) as any\n );\n return moduleExports;\n },\n moduleExports => {\n if (moduleExports === undefined) return;\n const isExpressWithRouterPrototype =\n typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype\n : moduleExports.Router;\n this._unwrap(routerProto, 'route');\n this._unwrap(routerProto, 'use');\n this._unwrap(moduleExports.application, 'use');\n }\n ),\n ];\n }\n\n /**\n * Get the patch for Router.route function\n */\n private _getRoutePatch() {\n const instrumentation = this;\n return function (original: express.Router['route']) {\n return function route_trace(\n this: ExpressRouter,\n ...args: Parameters\n ) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1] as ExpressLayer;\n instrumentation._applyPatch(layer, getLayerPath(args));\n return route;\n };\n };\n }\n\n /**\n * Get the patch for Router.use function\n */\n private _getRouterUsePatch() {\n const instrumentation = this;\n return function (original: express.Router['use']) {\n return function use(\n this: express.Application,\n ...args: Parameters\n ) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1] as ExpressLayer;\n instrumentation._applyPatch(layer, getLayerPath(args));\n return route;\n };\n };\n }\n\n /**\n * Get the patch for Application.use function\n */\n private _getAppUsePatch(isExpressWithRouterPrototype: boolean) {\n const instrumentation = this;\n return function (original: express.Application['use']) {\n return function use(\n // `router` in express@5, `_router` in express@4.\n this: { _router?: ExpressRouter; router?: ExpressRouter },\n ...args: Parameters\n ) {\n // If we access app.router in express 4.x we trigger an assertion error.\n // This property existed in v3, was removed in v4 and then re-added in v5.\n const router = isExpressWithRouterPrototype\n ? this.router\n : this._router;\n const route = original.apply(this, args);\n if (router) {\n const layer = router.stack[router.stack.length - 1];\n instrumentation._applyPatch(layer, getLayerPath(args));\n }\n return route;\n };\n };\n }\n\n /** Patch each express layer to create span and propagate context */\n private _applyPatch(\n this: ExpressInstrumentation,\n layer: ExpressLayer,\n layerPath?: string\n ) {\n const instrumentation = this;\n // avoid patching multiple times the same layer\n if (layer[kLayerPatched] === true) return;\n layer[kLayerPatched] = true;\n\n this._wrap(layer, 'handle', original => {\n // TODO: instrument error handlers\n if (original.length === 4) return original;\n\n const patched = function (\n this: ExpressLayer,\n req: PatchedRequest,\n res: express.Response\n ) {\n const { isLayerPathStored } = storeLayerPath(req, layerPath);\n\n const constructedRoute = getConstructedRoute(req);\n const actualMatchedRoute = getActualMatchedRoute(req);\n\n const attributes: Attributes = {\n [ATTR_HTTP_ROUTE]: actualMatchedRoute,\n };\n const metadata = getLayerMetadata(constructedRoute, layer, layerPath);\n const type = metadata.attributes[\n AttributeNames.EXPRESS_TYPE\n ] as ExpressLayerType;\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (rpcMetadata?.type === RPCType.HTTP) {\n rpcMetadata.route = actualMatchedRoute;\n }\n\n // verify against the config if the layer should be ignored\n if (isLayerIgnored(metadata.name, type, instrumentation.getConfig())) {\n if (type === ExpressLayerType.MIDDLEWARE) {\n (req[_LAYERS_STORE_PROPERTY] as string[]).pop();\n }\n return original.apply(this, arguments);\n }\n\n if (trace.getSpan(context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n\n const spanName = instrumentation._getSpanName(\n {\n request: req,\n layerType: type,\n route: constructedRoute,\n },\n metadata.name\n );\n const span = instrumentation.tracer.startSpan(spanName, {\n attributes: Object.assign(attributes, metadata.attributes),\n });\n\n const parentContext = context.active();\n let currentContext = trace.setSpan(parentContext, span);\n\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n safeExecuteInTheMiddle(\n () =>\n requestHook(span, {\n request: req,\n layerType: type,\n route: constructedRoute,\n }),\n e => {\n if (e) {\n diag.error('express instrumentation: request hook failed', e);\n }\n },\n true\n );\n }\n\n let spanHasEnded = false;\n // TODO: Fix router spans (getRouterPath does not work properly) to\n // have useful names before removing this branch\n if (\n metadata.attributes[AttributeNames.EXPRESS_TYPE] ===\n ExpressLayerType.ROUTER\n ) {\n span.end();\n spanHasEnded = true;\n currentContext = parentContext;\n }\n // listener for response.on('finish')\n const onResponseFinish = () => {\n if (spanHasEnded === false) {\n spanHasEnded = true;\n span.end();\n }\n };\n\n // verify we have a callback\n const args = Array.from(arguments);\n const callbackIdx = args.findIndex(arg => typeof arg === 'function');\n if (callbackIdx >= 0) {\n arguments[callbackIdx] = function () {\n // express considers anything but an empty value, \"route\" or \"router\"\n // passed to its callback to be an error\n const maybeError = arguments[0];\n const isError = ![undefined, null, 'route', 'router'].includes(\n maybeError\n );\n if (!spanHasEnded && isError) {\n const [error, message] = asErrorAndMessage(maybeError);\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n }\n\n if (spanHasEnded === false) {\n spanHasEnded = true;\n req.res?.removeListener('finish', onResponseFinish);\n span.end();\n }\n if (!(req.route && isError) && isLayerPathStored) {\n (req[_LAYERS_STORE_PROPERTY] as string[]).pop();\n }\n const callback = args[callbackIdx] as Function;\n // Preserve the active context (which may include baggage set by middleware)\n // but restore the parent span to prevent sibling middleware spans\n // from nesting under each other\n const activeContext = context.active();\n const parentSpan = trace.getSpan(parentContext);\n const nextContext = parentSpan\n ? trace.setSpan(activeContext, parentSpan)\n : activeContext;\n return context.bind(nextContext, callback).apply(this, arguments);\n };\n }\n\n try {\n return context.bind(currentContext, original).apply(this, arguments);\n } catch (anyError) {\n const [error, message] = asErrorAndMessage(anyError);\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n throw anyError;\n } finally {\n /**\n * At this point if the callback wasn't called, that means either the\n * layer is asynchronous (so it will call the callback later on) or that\n * the layer directly ends the http response, so we'll hook into the \"finish\"\n * event to handle the later case.\n */\n if (!spanHasEnded) {\n res.once('finish', onResponseFinish);\n }\n }\n };\n\n // `handle` isn't just a regular function in some cases. It also contains\n // some properties holding metadata and state so we need to proxy them\n // through through patched function\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1950\n // Also some apps/libs do their own patching before OTEL and have these properties\n // in the proptotype. So we use a `for...in` loop to get own properties and also\n // any enumerable prop in the prototype chain\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2271\n for (const key in original) {\n Object.defineProperty(patched, key, {\n get() {\n return original[key];\n },\n set(value) {\n original[key] = value;\n },\n });\n }\n return patched;\n });\n }\n\n _getSpanName(info: ExpressRequestInfo, defaultName: string) {\n const { spanNameHook } = this.getConfig();\n\n if (!(spanNameHook instanceof Function)) {\n return defaultName;\n }\n\n try {\n return spanNameHook(info, defaultName) ?? defaultName;\n } catch (err) {\n diag.error(\n 'express instrumentation: error calling span name rewrite hook',\n err\n );\n return defaultName;\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { ExpressInstrumentation } from './instrumentation';\nexport { ExpressLayerType } from './enums/ExpressLayerType';\nexport { AttributeNames } from './enums/AttributeNames';\nexport type {\n ExpressInstrumentationConfig,\n ExpressRequestCustomAttributeFunction,\n ExpressRequestInfo,\n IgnoreMatcher,\n LayerPathSegment,\n SpanNameHook,\n} from './types';\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type * as http from 'node:http';\nimport type { Span } from '@opentelemetry/api';\nimport type { ExpressRequestInfo } from '@opentelemetry/instrumentation-express';\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n captureException,\n debug,\n defineIntegration,\n getDefaultIsolationScope,\n getIsolationScope,\n httpRequestToRequestData,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n spanToJSON,\n} from '@sentry/core';\nimport { addOriginToSpan, ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\nconst INTEGRATION_NAME = 'Express';\n\nfunction requestHook(span: Span): void {\n addOriginToSpan(span, 'auto.http.otel.express');\n\n const attributes = spanToJSON(span).data;\n // this is one of: middleware, request_handler, router\n const type = attributes['express.type'];\n\n if (type) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.express`);\n }\n\n // Also update the name, we don't need to \"middleware - \" prefix\n const name = attributes['express.name'];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n}\n\nfunction spanNameHook(info: ExpressRequestInfo, defaultName: string): string {\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is still default isolation scope - skipping setting transactionName');\n return defaultName;\n }\n if (info.layerType === 'request_handler') {\n // type cast b/c Otel unfortunately types info.request as any :(\n const req = info.request as { method?: string };\n const method = req.method ? req.method.toUpperCase() : 'GET';\n getIsolationScope().setTransactionName(`${method} ${info.route}`);\n }\n return defaultName;\n}\n\nexport const instrumentExpress = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new ExpressInstrumentation({\n requestHook: span => requestHook(span),\n spanNameHook: (info, defaultName) => spanNameHook(info, defaultName),\n }),\n);\n\nconst _expressIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentExpress();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Express](https://expressjs.com/).\n *\n * If you also want to capture errors, you need to call `setupExpressErrorHandler(app)` after you set up your Express server.\n *\n * For more information, see the [express documentation](https://docs.sentry.io/platforms/javascript/guides/express/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.expressIntegration()],\n * })\n * ```\n */\nexport const expressIntegration = defineIntegration(_expressIntegration);\n\ninterface MiddlewareError extends Error {\n status?: number | string;\n statusCode?: number | string;\n status_code?: number | string;\n output?: {\n statusCode?: number | string;\n };\n}\n\ntype ExpressMiddleware = (req: http.IncomingMessage, res: http.ServerResponse, next: () => void) => void;\n\ntype ExpressErrorMiddleware = (\n error: MiddlewareError,\n req: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error: MiddlewareError) => void,\n) => void;\n\ninterface ExpressHandlerOptions {\n /**\n * Callback method deciding whether error should be captured and sent to Sentry\n * @param error Captured middleware error\n */\n shouldHandleError?(this: void, error: MiddlewareError): boolean;\n}\n\n/**\n * An Express-compatible error handler.\n */\nexport function expressErrorHandler(options?: ExpressHandlerOptions): ExpressErrorMiddleware {\n return function sentryErrorMiddleware(\n error: MiddlewareError,\n request: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error: MiddlewareError) => void,\n ): void {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n // When an error happens, the `expressRequestHandler` middleware does not run, so we set it here too\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n\n if (shouldHandleError(error)) {\n const eventId = captureException(error, { mechanism: { type: 'auto.middleware.express', handled: false } });\n (res as { sentry?: string }).sentry = eventId;\n }\n\n next(error);\n };\n}\n\nfunction expressRequestHandler(): ExpressMiddleware {\n return function sentryRequestMiddleware(\n request: http.IncomingMessage,\n _res: http.ServerResponse,\n next: () => void,\n ): void {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n next();\n };\n}\n\n/**\n * Add an Express error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const express = require(\"express\");\n *\n * const app = express();\n *\n * // Add your routes, etc.\n *\n * // Add this after all routes,\n * // but before any and other error-handling middlewares are defined\n * Sentry.setupExpressErrorHandler(app);\n *\n * app.listen(3000);\n * ```\n */\nexport function setupExpressErrorHandler(\n app: { use: (middleware: ExpressMiddleware | ExpressErrorMiddleware) => unknown },\n options?: ExpressHandlerOptions,\n): void {\n app.use(expressRequestHandler());\n app.use(expressErrorHandler(options));\n ensureIsWrapped(app.use, 'express');\n}\n\nfunction getStatusCodeFromResponse(error: MiddlewareError): number {\n const statusCode = error.status || error.statusCode || error.status_code || error.output?.statusCode;\n return statusCode ? parseInt(statusCode as string, 10) : 500;\n}\n\n/** Returns true if response code is internal server error */\nfunction defaultShouldHandleError(error: MiddlewareError): boolean {\n const status = getStatusCodeFromResponse(error);\n return status >= 500;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\n const { name } = module;\n try {\n const resolvedModule = require.resolve(name);\n if (require.cache[resolvedModule]) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(\n `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n );\n }\n } catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = readFileSync(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\n );\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: HookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: true },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\n\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\n }\n\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\n\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\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// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges: string[] = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n } else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\n } finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\n } finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","export const balanced = (\n a: string | RegExp,\n b: string | RegExp,\n str: string,\n) => {\n const ma = a instanceof RegExp ? maybeMatch(a, str) : a\n const mb = b instanceof RegExp ? maybeMatch(b, str) : b\n\n const r = ma !== null && mb != null && range(ma, mb, str)\n\n return (\n r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + ma.length, r[1]),\n post: str.slice(r[1] + mb.length),\n }\n )\n}\n\nconst maybeMatch = (reg: RegExp, str: string) => {\n const m = str.match(reg)\n return m ? m[0] : null\n}\n\nexport const range = (\n a: string,\n b: string,\n str: string,\n): undefined | [number, number] => {\n let begs: number[],\n beg: number | undefined,\n left: number,\n right: number | undefined = undefined,\n result: undefined | [number, number]\n let ai = str.indexOf(a)\n let bi = str.indexOf(b, ai + 1)\n let i = ai\n\n if (ai >= 0 && bi > 0) {\n if (a === b) {\n return [ai, bi]\n }\n begs = []\n left = str.length\n\n while (i >= 0 && !result) {\n if (i === ai) {\n begs.push(i)\n ai = str.indexOf(a, i + 1)\n } else if (begs.length === 1) {\n const r = begs.pop()\n if (r !== undefined) result = [r, bi]\n } else {\n beg = begs.pop()\n if (beg !== undefined && beg < left) {\n left = beg\n right = bi\n }\n\n bi = str.indexOf(b, i + 1)\n }\n\n i = ai < bi && ai >= 0 ? ai : bi\n }\n\n if (begs.length && right !== undefined) {\n result = [left, right]\n }\n }\n\n return result\n}\n","import { balanced } from 'balanced-match'\n\nconst escSlash = '\\0SLASH' + Math.random() + '\\0'\nconst escOpen = '\\0OPEN' + Math.random() + '\\0'\nconst escClose = '\\0CLOSE' + Math.random() + '\\0'\nconst escComma = '\\0COMMA' + Math.random() + '\\0'\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0'\nconst escSlashPattern = new RegExp(escSlash, 'g')\nconst escOpenPattern = new RegExp(escOpen, 'g')\nconst escClosePattern = new RegExp(escClose, 'g')\nconst escCommaPattern = new RegExp(escComma, 'g')\nconst escPeriodPattern = new RegExp(escPeriod, 'g')\nconst slashPattern = /\\\\\\\\/g\nconst openPattern = /\\\\{/g\nconst closePattern = /\\\\}/g\nconst commaPattern = /\\\\,/g\nconst periodPattern = /\\\\\\./g\n\nexport const EXPANSION_MAX = 100_000\n\nfunction numeric(str: string) {\n return !isNaN(str as any) ? parseInt(str, 10) : str.charCodeAt(0)\n}\n\nfunction escapeBraces(str: string) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod)\n}\n\nfunction unescapeBraces(str: string) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.')\n}\n\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str: string) {\n if (!str) {\n return ['']\n }\n\n const parts: string[] = []\n const m = balanced('{', '}', str)\n\n if (!m) {\n return str.split(',')\n }\n\n const { pre, body, post } = m\n const p = pre.split(',')\n\n p[p.length - 1] += '{' + body + '}'\n const postParts = parseCommaParts(post)\n if (post.length) {\n ;(p[p.length - 1] as string) += postParts.shift()\n p.push.apply(p, postParts)\n }\n\n parts.push.apply(parts, p)\n\n return parts\n}\n\nexport type BraceExpansionOptions = {\n max?: number\n}\n\nexport function expand(str: string, options: BraceExpansionOptions = {}) {\n if (!str) {\n return []\n }\n\n const { max = EXPANSION_MAX } = options\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2)\n }\n\n return expand_(escapeBraces(str), max, true).map(unescapeBraces)\n}\n\nfunction embrace(str: string) {\n return '{' + str + '}'\n}\n\nfunction isPadded(el: string) {\n return /^-?0\\d/.test(el)\n}\n\nfunction lte(i: number, y: number) {\n return i <= y\n}\n\nfunction gte(i: number, y: number) {\n return i >= y\n}\n\nfunction expand_(str: string, max: number, isTop: boolean): string[] {\n /** @type {string[]} */\n const expansions: string[] = []\n\n const m = balanced('{', '}', str)\n if (!m) return [str]\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre\n const post: string[] = m.post.length ? expand_(m.post, max, false) : ['']\n\n if (/\\$$/.test(m.pre)) {\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k]\n expansions.push(expansion)\n }\n } else {\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body)\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(\n m.body,\n )\n const isSequence = isNumericSequence || isAlphaSequence\n const isOptions = m.body.indexOf(',') >= 0\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post\n return expand_(str, max, true)\n }\n return [str]\n }\n\n let n: string[]\n if (isSequence) {\n n = m.body.split(/\\.\\./)\n } else {\n n = parseCommaParts(m.body)\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace)\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p)\n }\n /* c8 ignore stop */\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n let N: string[]\n\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0])\n const y = numeric(n[1])\n const width = Math.max(n[0].length, n[1].length)\n let incr =\n n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1\n let test = lte\n const reverse = y < x\n if (reverse) {\n incr *= -1\n test = gte\n }\n const pad = n.some(isPadded)\n\n N = []\n\n for (let i = x; test(i, y); i += incr) {\n let c\n if (isAlphaSequence) {\n c = String.fromCharCode(i)\n if (c === '\\\\') {\n c = ''\n }\n } else {\n c = String(i)\n if (pad) {\n const need = width - c.length\n if (need > 0) {\n const z = new Array(need + 1).join('0')\n if (i < 0) {\n c = '-' + z + c.slice(1)\n } else {\n c = z + c\n }\n }\n }\n }\n N.push(c)\n }\n } else {\n N = []\n\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j] as string, max, false))\n }\n }\n\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k]\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion)\n }\n }\n }\n }\n\n return expansions\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: unknown) => void = (\n pattern: unknown,\n): asserts pattern is string => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } =\n {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n }\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n src: string,\n uFlag: boolean,\n consumed: number,\n hasMagic: boolean,\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n glob: string,\n position: number,\n): ParseClassResult => {\n const pos = position\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression')\n }\n /* c8 ignore stop */\n const ranges: string[] = []\n const negs: string[] = []\n\n let i = pos + 1\n let sawStart = false\n let uflag = false\n let escaping = false\n let negate = false\n let endPos = pos\n let rangeStart = ''\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i)\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true\n i++\n continue\n }\n\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1\n break\n }\n\n sawStart = true\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true\n i++\n continue\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true]\n }\n i += cls.length\n if (neg) negs.push(unip)\n else ranges.push(unip)\n uflag = uflag || u\n continue WHILE\n }\n }\n }\n\n // now it's just a normal character, effectively\n escaping = false\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n } else if (c === rangeStart) {\n ranges.push(braceEscape(c))\n }\n rangeStart = ''\n i++\n continue\n }\n\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'))\n i += 2\n continue\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c\n i += 2\n continue\n }\n\n // not the start of a range, just a single character\n ranges.push(braceEscape(c))\n i++\n }\n\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false]\n }\n\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true]\n }\n\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (\n negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate\n ) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n return [regexpEscape(r), false, endPos - pos, false]\n }\n\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n const comb =\n ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n : ranges.length ? sranges\n : snegs\n\n return [comb, uflag, endPos - pos, true]\n}\n","import type { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n magicalBraces = true,\n }: Pick = {},\n) => {\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/\\[([^/\\\\])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^/\\\\])\\]/g, '$1$2')\n .replace(/\\\\([^/])/g, '$1')\n }\n return windowsPathsNoEscape ?\n s.replace(/\\[([^/\\\\{}])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^/\\\\{}])\\]/g, '$1$2')\n .replace(/\\\\([^/{}])/g, '$1')\n}\n","// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport type { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n// 1 2 3 4 5 6 1 2 3 46 5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n// v----- .* because there's more following,\n// v v otherwise, .+ because it must be\n// v v *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n// copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map<\n ExtglobType,\n Map\n>([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n type: ExtglobType | null\n readonly #root: AST\n\n #hasMagic?: boolean\n #uflag: boolean = false\n #parts: (string | AST)[] = []\n #parent?: AST\n #parentIndex: number\n #negs: AST[]\n #filledNegs: boolean = false\n #options: MinimatchOptions\n #toString?: string\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt: boolean = false\n id = ++ID\n\n get depth(): number {\n return (this.#parent?.depth ?? -1) + 1\n }\n\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n }\n }\n\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n this.type = type\n // extglobs are inherently magical\n if (type) this.#hasMagic = true\n this.#parent = parent\n this.#root = this.#parent ? this.#parent.#root : this\n this.#options = this.#root === this ? options : this.#root.#options\n this.#negs = this.#root === this ? [] : this.#root.#negs\n if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n }\n\n get hasMagic(): boolean | undefined {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined) return this.#hasMagic\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string') continue\n if (p.type || p.hasMagic) return (this.#hasMagic = true)\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic\n }\n\n // reconstructs the pattern\n toString(): string {\n return (\n this.#toString !== undefined ? this.#toString\n : !this.type ?\n (this.#toString = this.#parts.map(p => String(p)).join(''))\n : (this.#toString =\n this.type +\n '(' +\n this.#parts.map(p => String(p)).join('|') +\n ')')\n )\n }\n\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root) throw new Error('should only call on root')\n if (this.#filledNegs) return this\n /* c8 ignore stop */\n\n // call toString() once to fill this out\n this.toString()\n this.#filledNegs = true\n let n: AST | undefined\n while ((n = this.#negs.pop())) {\n if (n.type !== '!') continue\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p: AST | undefined = n\n let pp = p.#parent\n while (pp) {\n for (\n let i = p.#parentIndex + 1;\n !pp.type && i < pp.#parts.length;\n i++\n ) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??')\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i])\n }\n }\n p = pp\n pp = p.#parent\n }\n }\n return this\n }\n\n push(...parts: (string | AST)[]) {\n for (const p of parts) {\n if (p === '') continue\n /* c8 ignore start */\n if (\n typeof p !== 'string' &&\n !(p instanceof AST && p.#parent === this)\n ) {\n throw new Error('invalid part: ' + p)\n }\n /* c8 ignore stop */\n this.#parts.push(p)\n }\n }\n\n toJSON() {\n const ret: unknown[] =\n this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n if (this.isStart() && !this.type) ret.unshift([])\n if (\n this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))\n ) {\n ret.push({})\n }\n return ret\n }\n\n isStart(): boolean {\n if (this.#root === this) return true\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart()) return false\n if (this.#parentIndex === 0) return true\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i]\n if (!(pp instanceof AST && pp.type === '!')) {\n return false\n }\n }\n return true\n }\n\n isEnd(): boolean {\n if (this.#root === this) return true\n if (this.#parent?.type === '!') return true\n if (!this.#parent?.isEnd()) return false\n if (!this.type) return this.#parent?.isEnd()\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1\n }\n\n copyIn(part: AST | string) {\n if (typeof part === 'string') this.push(part)\n else this.push(part.clone(this))\n }\n\n clone(parent: AST) {\n const c = new AST(this.type, parent)\n for (const p of this.#parts) {\n c.copyIn(p)\n }\n return c\n }\n\n static #parseAST(\n str: string,\n ast: AST,\n pos: number,\n opt: MinimatchOptions,\n extDepth: number,\n ): number {\n const maxDepth = opt.maxExtglobRecursion ?? 2\n let escaping = false\n let inBrace = false\n let braceStart = -1\n let braceNeg = false\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth\n if (doRecurse) {\n ast.push(acc)\n acc = ''\n const ext = new AST(c, ast)\n i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n ast.push(ext)\n continue\n }\n acc += c\n }\n ast.push(acc)\n return i\n }\n\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1\n let part = new AST(null, ast)\n const parts: AST[] = []\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n part.push(acc)\n acc = ''\n const ext = new AST(c, part)\n part.push(ext)\n i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n continue\n }\n if (c === '|') {\n part.push(acc)\n acc = ''\n parts.push(part)\n part = new AST(null, ast)\n continue\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true\n }\n part.push(acc)\n acc = ''\n ast.push(...parts, part)\n return i\n }\n acc += c\n }\n\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null\n ast.#hasMagic = undefined\n ast.#parts = [str.substring(pos - 1)]\n return i\n }\n\n #canAdoptWithSpace(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n return this.#canAdopt(child, adoptionWithSpaceMap)\n }\n\n #canAdopt(\n child?: AST | string,\n map: Map = adoptionMap,\n ): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canAdoptType(\n gc.type,\n map,\n )\n }\n #canAdoptType(\n c: string,\n map: Map = adoptionAnyMap,\n ): c is ExtglobType {\n return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n }\n\n #adoptWithSpace(\n this: AST & { type: ExtglobType },\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const blank = new AST(null, gc, this.options)\n blank.#parts.push('')\n gc.push(blank)\n this.#adopt(child, index)\n }\n\n #adopt(\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n this.#parts.splice(index, 1, ...gc.#parts)\n for (const p of gc.#parts) {\n if (typeof p === 'object') p.#parent = this\n }\n this.#toString = undefined\n }\n\n #canUsurpType(c: string): boolean {\n const m = usurpMap.get(this.type as ExtglobType)\n return !!m?.has(c as ExtglobType)\n }\n\n #canUsurp(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n }\n\n #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n const m = usurpMap.get(this.type as ExtglobType)\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const nt = m?.get(gc.type)\n /* c8 ignore start - impossible */\n if (!nt) return false\n /* c8 ignore stop */\n this.#parts = gc.#parts\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this\n }\n }\n this.type = nt\n this.#toString = undefined\n this.#emptyExt = false\n }\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n const ast = new AST(null, undefined, options)\n AST.#parseAST(pattern, ast, 0, options, 0)\n return ast\n }\n\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern(): MMRegExp | string {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root) return this.#root.toMMPattern()\n /* c8 ignore stop */\n const glob = this.toString()\n const [re, body, hasMagic, uflag] = this.toRegExpSource()\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic =\n hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase())\n if (!anyMagic) {\n return body\n }\n\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n })\n }\n\n get options() {\n return this.#options\n }\n\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(\n allowDot?: boolean,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n const dot = allowDot ?? !!this.#options.dot\n if (this.#root === this) {\n this.#flatten()\n this.#fillNegs()\n }\n if (!isExtglobAST(this)) {\n const noEmpty =\n this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string')\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] =\n typeof p === 'string' ?\n AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot)\n this.#hasMagic = this.#hasMagic || hasMagic\n this.#uflag = this.#uflag || uflag\n return re\n })\n .join('')\n\n let start = ''\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed =\n this.#parts.length === 1 && justDots.has(this.#parts[0])\n if (!dotTravAllowed) {\n const aps = addPatternStart\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav =\n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : ''\n }\n }\n }\n\n // append the \"end of path portion\" pattern to negation tails\n let end = ''\n if (\n this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!'\n ) {\n end = '(?:$|\\\\/)'\n }\n const final = start + src + end\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n\n const repeated = this.type === '*' || this.type === '+'\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n let body = (this as AST & { type: ExtglobType }).#partsToRegExp(dot)\n\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString()\n const me = this as AST\n me.#parts = [s]\n me.type = null\n me.#hasMagic = undefined\n return [s, unescape(this.toString()), false, false]\n }\n\n let bodyDotAllowed =\n !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true)\n if (bodyDotAllowed === body) {\n bodyDotAllowed = ''\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`\n }\n\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = ''\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n } else {\n const close =\n this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`\n final = start + body + close\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten()\n }\n }\n } else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0\n let done = false\n do {\n done = true\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i]\n if (typeof c === 'object') {\n c.#flatten()\n if (this.#canAdopt(c)) {\n done = false\n this.#adopt(c, i)\n } else if (this.#canAdoptWithSpace(c)) {\n done = false\n ;(this as AST & { type: ExtglobType }).#adoptWithSpace(c, i)\n } else if (this.#canUsurp(c)) {\n done = false\n ;(this as AST & { type: ExtglobType }).#usurp(c)\n }\n }\n }\n } while (!done && ++iterations < 10)\n }\n this.#toString = undefined\n }\n\n #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??')\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n this.#uflag = this.#uflag || uflag\n return re\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|')\n }\n\n static #parseGlob(\n glob: string,\n hasMagic: boolean | undefined,\n noEmpty: boolean = false,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n let escaping = false\n let re = ''\n let uflag = false\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i)\n if (escaping) {\n escaping = false\n re += (reSpecials.has(c) ? '\\\\' : '') + c\n continue\n }\n if (c === '*') {\n if (inStar) continue\n inStar = true\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n hasMagic = true\n continue\n } else {\n inStar = false\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\'\n } else {\n escaping = true\n }\n continue\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i)\n if (consumed) {\n re += src\n uflag = uflag || needUflag\n i += consumed - 1\n hasMagic = hasMagic || magic\n continue\n }\n }\n if (c === '?') {\n re += qmark\n hasMagic = true\n continue\n }\n re += regExpEscape(c)\n }\n return [re, unescape(glob), !!hasMagic, uflag]\n }\n}\n","import type { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n magicalBraces = false,\n }: Pick = {},\n) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n","import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport type { ExtglobType } from './ast.js'\nimport { AST } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n | 'aix'\n | 'android'\n | 'darwin'\n | 'freebsd'\n | 'haiku'\n | 'linux'\n | 'openbsd'\n | 'sunos'\n | 'win32'\n | 'cygwin'\n | 'netbsd'\n\nexport interface MinimatchOptions {\n /** do not expand `{x,y}` style braces */\n nobrace?: boolean\n /** do not treat patterns starting with `#` as a comment */\n nocomment?: boolean\n /** do not treat patterns starting with `!` as a negation */\n nonegate?: boolean\n /** print LOTS of debugging output */\n debug?: boolean\n /** treat `**` the same as `*` */\n noglobstar?: boolean\n /** do not expand extglobs like `+(a|b)` */\n noext?: boolean\n /** return the pattern if nothing matches */\n nonull?: boolean\n /** treat `\\\\` as a path separator, not an escape character */\n windowsPathsNoEscape?: boolean\n /**\n * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n * @deprecated\n */\n allowWindowsEscape?: boolean\n /**\n * Compare a partial path to a pattern. As long as the parts\n * of the path that are present are not contradicted by the\n * pattern, it will be treated as a match. This is useful in\n * applications where you're walking through a folder structure,\n * and don't yet have the full path, but want to ensure that you\n * do not walk down paths that can never be a match.\n */\n partial?: boolean\n /** allow matches that start with `.` even if the pattern does not */\n dot?: boolean\n /** ignore case */\n nocase?: boolean\n /** ignore case only in wildcard patterns */\n nocaseMagicOnly?: boolean\n /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n magicalBraces?: boolean\n /**\n * If set, then patterns without slashes will be matched\n * against the basename of the path if it contains slashes.\n * For example, `a?b` would match the path `/xyz/123/acb`, but\n * not `/xyz/acb/123`.\n */\n matchBase?: boolean\n /** invert the results of negated matches */\n flipNegate?: boolean\n /** do not collapse multiple `/` into a single `/` */\n preserveMultipleSlashes?: boolean\n /**\n * A number indicating the level of optimization that should be done\n * to the pattern prior to parsing and using it for matches.\n */\n optimizationLevel?: number\n /** operating system platform */\n platform?: Platform\n /**\n * When a pattern starts with a UNC path or drive letter, and in\n * `nocase:true` mode, do not convert the root portions of the\n * pattern into a case-insensitive regular expression, and instead\n * leave them as strings.\n *\n * This is the default when the platform is `win32` and\n * `nocase:true` is set.\n */\n windowsNoMagicRoot?: boolean\n /**\n * max number of `{...}` patterns to expand. Default 100_000.\n */\n braceExpandMax?: number\n /**\n * Max number of non-adjacent `**` patterns to recursively walk down.\n *\n * The default of 200 is almost certainly high enough for most purposes,\n * and can handle absurdly excessive patterns.\n */\n maxGlobstarRecursion?: number\n\n /**\n * Max depth to traverse for nested extglobs like `*(a|b|c)`\n *\n * Default is 2, which is quite low, but any higher value\n * swiftly results in punishing performance impacts. Note\n * that this is *not* relevant when the globstar types can\n * be safely coalesced into a single set.\n *\n * For example, `*(a|@(b|c)|d)` would be flattened into\n * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n * performance and never hit this limit, even if they are\n * excessively deep and complicated.\n *\n * If the limit is hit, then the extglob characters are simply\n * not parsed, and the pattern effectively switches into\n * `noextglob: true` mode for the contents of that nested\n * sub-pattern. This will typically _not_ result in a match,\n * but is considered a valid trade-off for security and\n * performance.\n */\n maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n p: string,\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?*[(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?*[(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n typeof process === 'object' && process ?\n (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n (pattern: string, options: MinimatchOptions = {}) =>\n (p: string) =>\n minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n orig(p, pattern, ext(def, options))\n\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern: string, options: MinimatchOptions = {}) {\n super(pattern, ext(def, options))\n }\n static defaults(options: MinimatchOptions) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n },\n\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n super(type, parent, ext(def, options))\n }\n /* c8 ignore stop */\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options))\n }\n },\n\n unescape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.unescape(s, ext(def, options)),\n\n escape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.escape(s, ext(def, options)),\n\n filter: (pattern: string, options: MinimatchOptions = {}) =>\n orig.filter(pattern, ext(def, options)),\n\n defaults: (options: MinimatchOptions) =>\n orig.defaults(ext(def, options)),\n\n makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n orig.makeRe(pattern, ext(def, options)),\n\n braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n orig.braceExpand(pattern, ext(def, options)),\n\n match: (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n ) => orig.match(list, pattern, ext(def, options)),\n\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n _src?: string\n _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n options: MinimatchOptions\n set: ParseReturnFiltered[][]\n pattern: string\n\n windowsPathsNoEscape: boolean\n nonegate: boolean\n negate: boolean\n comment: boolean\n empty: boolean\n preserveMultipleSlashes: boolean\n partial: boolean\n globSet: string[]\n globParts: string[][]\n nocase: boolean\n\n isWindows: boolean\n platform: Platform\n windowsNoMagicRoot: boolean\n maxGlobstarRecursion: number\n\n regexp: false | null | MMRegExp\n constructor(pattern: string, options: MinimatchOptions = {}) {\n assertValidPattern(pattern)\n\n options = options || {}\n this.options = options\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n this.pattern = pattern\n this.platform = options.platform || defaultPlatform\n this.isWindows = this.platform === 'win32'\n // avoid the annoying deprecation flag lol\n const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options[awe] === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n this.regexp = null\n this.negate = false\n this.nonegate = !!options.nonegate\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n this.nocase = !!this.options.nocase\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined ?\n options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase)\n\n this.globSet = []\n this.globParts = []\n this.set = []\n\n // make the set of regexps etc.\n this.make()\n }\n\n hasMagic(): boolean {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string') return true\n }\n }\n return false\n }\n\n debug(..._: unknown[]) {}\n\n make() {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())]\n\n if (options.debug) {\n //oxlint-disable-next-line no-console\n this.debug = (...args: unknown[]) => console.error(...args)\n }\n\n this.debug(this.pattern, this.globSet)\n\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n this.globParts = this.preprocess(rawGlobParts)\n this.debug(this.pattern, this.globParts)\n\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3])\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [\n ...s.slice(0, 4),\n ...s.slice(4).map(ss => this.parse(ss)),\n ]\n } else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1,\n ) as ParseReturnFiltered[][]\n\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i]\n if (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])\n ) {\n p[2] = '?'\n }\n }\n }\n\n this.debug(this.pattern, this.set)\n }\n\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts: string[][]) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (const partset of globParts) {\n for (let j = 0; j < partset.length; j++) {\n if (partset[j] === '**') {\n partset[j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs\n while (parts[i + 1] === '**') {\n i++\n }\n if (i !== gs) {\n parts.splice(gs, i - gs)\n }\n }\n return parts\n })\n }\n\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop()\n return set\n }\n }\n set.push(part)\n return set\n }, [])\n return parts.length === 0 ? [''] : parts\n })\n }\n\n levelTwoFileOptimize(parts: string | string[]) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts)\n }\n let didSomething: boolean = false\n\n do {\n didSomething = false\n //

      // -> 
      /\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
      /

      /../ ->

      /\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (\n          p &&\n          p !== '.' &&\n          p !== '..' &&\n          p !== '**' &&\n          !(this.isWindows && /^[a-z]:$/i.test(p))\n        ) {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
       is 1 or more portions\n  //  is 1 or more portions\n  // 

      is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

      /**/../

      /

      / -> {

      /../

      /

      /,

      /**/

      /

      /}\n //

      // -> 
      /\n  // 
      /

      /../ ->

      /\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
      /**/../

      /

      / -> {

      /../

      /

      /,

      /**/

      /

      /}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

      /**/**/ -> 
      /**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
      // -> 
      /\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
      /

      /../ ->

      /\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
      /*/,
      /

      /} ->

      /*/\n  // {
      /,
      /} -> 
      /\n  // {
      /**/,
      /} -> 
      /**/\n  //\n  // {
      /**/,
      /**/

      /} ->

      /**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] =\n      partial ?\n        [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1),\n          [],\n        ]\n      : [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1, lastgs),\n          pattern.slice(lastgs + 1),\n        ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (const pattern of set) {\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n","'use strict'\nconst dc = require('node:diagnostics_channel')\nconst { context, trace, SpanStatusCode, propagation, diag } = require('@opentelemetry/api')\nconst { getRPCMetadata, RPCType } = require('@opentelemetry/core')\nconst {\n  ATTR_HTTP_ROUTE,\n  ATTR_HTTP_RESPONSE_STATUS_CODE,\n  ATTR_HTTP_REQUEST_METHOD,\n  ATTR_URL_PATH\n} = require('@opentelemetry/semantic-conventions')\nconst { InstrumentationBase } = require('@opentelemetry/instrumentation')\n\nconst {\n  version: PACKAGE_VERSION,\n  name: PACKAGE_NAME\n} = require('./package.json')\n\n// Constants\nconst SUPPORTED_VERSIONS = '>=4.0.0 <6'\nconst FASTIFY_HOOKS = [\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preHandler',\n  'preSerialization',\n  'onSend',\n  'onResponse',\n  'onError'\n]\nconst ATTRIBUTE_NAMES = {\n  HOOK_NAME: 'hook.name',\n  FASTIFY_TYPE: 'fastify.type',\n  HOOK_CALLBACK_NAME: 'hook.callback.name',\n  ROOT: 'fastify.root'\n}\nconst HOOK_TYPES = {\n  ROUTE: 'route-hook',\n  INSTANCE: 'hook',\n  HANDLER: 'request-handler'\n}\nconst ANONYMOUS_FUNCTION_NAME = 'anonymous'\n\n// Symbols\nconst kInstrumentation = Symbol('fastify otel instance')\nconst kRequestSpan = Symbol('fastify otel request spans')\nconst kRequestContext = Symbol('fastify otel request context')\nconst kAddHookOriginal = Symbol('fastify otel addhook original')\nconst kSetNotFoundOriginal = Symbol('fastify otel setnotfound original')\nconst kIgnorePaths = Symbol('fastify otel ignore path')\nconst kRecordExceptions = Symbol('fastify otel record exceptions')\n\nclass FastifyOtelInstrumentation extends InstrumentationBase {\n  logger = null\n  _requestHook = null\n  _lifecycleHook = null\n\n  constructor (config) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config)\n    this.logger = diag.createComponentLogger({ namespace: PACKAGE_NAME })\n    this[kIgnorePaths] = null\n    this[kRecordExceptions] = true\n\n    if (config?.recordExceptions != null) {\n      if (typeof config.recordExceptions !== 'boolean') {\n        throw new TypeError('recordExceptions must be a boolean')\n      }\n\n      this[kRecordExceptions] = config.recordExceptions\n    }\n    if (typeof config?.requestHook === 'function') {\n      this._requestHook = config.requestHook\n    }\n    if (typeof config?.lifecycleHook === 'function') {\n      this._lifecycleHook = config.lifecycleHook\n    }\n\n    if (config?.ignorePaths != null || process.env.OTEL_FASTIFY_IGNORE_PATHS != null) {\n      const ignorePaths = config?.ignorePaths ?? process.env.OTEL_FASTIFY_IGNORE_PATHS\n\n      if ((typeof ignorePaths !== 'string' || ignorePaths.length === 0) && typeof ignorePaths !== 'function') {\n        throw new TypeError(\n          'ignorePaths must be a string or a function'\n        )\n      }\n\n      let globMatcher = null\n\n      this[kIgnorePaths] = (routeOptions) => {\n        if (typeof ignorePaths === 'function') {\n          return ignorePaths(routeOptions)\n        } else {\n          // Using minimatch to match the path until path.matchesGlob is out of experimental\n          // path.matchesGlob uses minimatch internally\n          if (globMatcher == null) {\n            globMatcher = require('minimatch').minimatch\n          }\n\n          return globMatcher(routeOptions.url, ignorePaths)\n        }\n      }\n    }\n  }\n\n  enable () {\n    if (this._handleInitialization === undefined && this.getConfig().registerOnInitialization) {\n      this._handleInitialization = (message) => {\n        // Cannot use `fastify.register(plugin)` because it is lazily executed and\n        // thus requires user code to await fastify instance first.\n        this.plugin()(message.fastify, undefined, () => {})\n\n        // Add an empty plugin to keep `app.hasPlugin('@fastify/otel')` invariant\n        const emptyPlugin = (_, __, done) => {\n          done()\n        }\n        emptyPlugin[Symbol.for('skip-override')] = true\n        emptyPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n        message.fastify.register(emptyPlugin)\n      }\n      dc.subscribe('fastify.initialization', this._handleInitialization)\n    }\n    return super.enable()\n  }\n\n  disable () {\n    if (this._handleInitialization) {\n      dc.unsubscribe('fastify.initialization', this._handleInitialization)\n      this._handleInitialization = undefined\n    }\n    return super.disable()\n  }\n\n  // We do not do patching in this instrumentation\n  init () {\n    return []\n  }\n\n  plugin () {\n    const instrumentation = this\n\n    FastifyInstrumentationPlugin[Symbol.for('skip-override')] = true\n    FastifyInstrumentationPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n    FastifyInstrumentationPlugin[Symbol.for('plugin-meta')] = {\n      fastify: SUPPORTED_VERSIONS,\n      name: '@fastify/otel',\n    }\n\n    return FastifyInstrumentationPlugin\n\n    function FastifyInstrumentationPlugin (instance, opts, done) {\n      instance.decorate(kInstrumentation, instrumentation)\n      // addHook and notfoundHandler are essentially inherited from the prototype\n      // what is important is to bound it to the right instance\n      instance.decorate(kAddHookOriginal, instance.addHook)\n      instance.decorate(kSetNotFoundOriginal, instance.setNotFoundHandler)\n      instance.decorateRequest('opentelemetry', function openetelemetry () {\n        const ctx = this[kRequestContext]\n        const span = this[kRequestSpan]\n\n        return {\n          enabled: this.routeOptions.config?.otel !== false,\n          span,\n          tracer: instrumentation.tracer,\n          context: ctx,\n          inject: (carrier, setter) => {\n            return propagation.inject(ctx, carrier, setter)\n          },\n          extract: (carrier, getter) => {\n            return propagation.extract(ctx, carrier, getter)\n          }\n        }\n      })\n      instance.decorateRequest(kRequestSpan, null)\n      instance.decorateRequest(kRequestContext, null)\n\n      instance.addHook('onRoute', function otelWireRoute (routeOptions) {\n        if (instrumentation[kIgnorePaths]?.(routeOptions) === true) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it matches the ignore path`\n          )\n          return\n        }\n\n        if (routeOptions.config?.otel === false) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it is disabled`\n          )\n\n          return\n        }\n\n        for (const hook of FASTIFY_HOOKS) {\n          if (routeOptions[hook] != null) {\n            const handlerLike = routeOptions[hook]\n\n            if (typeof handlerLike === 'function') {\n              routeOptions[hook] = handlerWrapper(handlerLike, hook, {\n                [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                [ATTR_HTTP_ROUTE]: routeOptions.url,\n                [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                  handlerLike.name?.length > 0\n                    ? handlerLike.name\n                    : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n              })\n            } else if (Array.isArray(handlerLike)) {\n              const wrappedHandlers = []\n\n              for (const handler of handlerLike) {\n                wrappedHandlers.push(\n                  handlerWrapper(handler, hook, {\n                    [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                    [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                    [ATTR_HTTP_ROUTE]: routeOptions.url,\n                    [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                      handler.name?.length > 0\n                        ? handler.name\n                        : ANONYMOUS_FUNCTION_NAME\n                  })\n                )\n              }\n\n              routeOptions[hook] = wrappedHandlers\n            }\n          }\n        }\n\n        // We always want to add the onSend hook to the route to be executed last\n        if (routeOptions.onSend != null) {\n          routeOptions.onSend = Array.isArray(routeOptions.onSend)\n            ? [...routeOptions.onSend, finalizeResponseSpanHook]\n            : [routeOptions.onSend, finalizeResponseSpanHook]\n        } else {\n          routeOptions.onSend = finalizeResponseSpanHook\n        }\n\n        // We always want to add the onError hook to the route to be executed last\n        if (routeOptions.onError != null) {\n          routeOptions.onError = Array.isArray(routeOptions.onError)\n            ? [...routeOptions.onError, recordErrorInSpanHook]\n            : [routeOptions.onError, recordErrorInSpanHook]\n        } else {\n          routeOptions.onError = recordErrorInSpanHook\n        }\n\n        routeOptions.handler = handlerWrapper(routeOptions.handler, 'handler', {\n          [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route-handler`,\n          [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.HANDLER,\n          [ATTR_HTTP_ROUTE]: routeOptions.url,\n          [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n            routeOptions.handler.name.length > 0\n              ? routeOptions.handler.name\n              : ANONYMOUS_FUNCTION_NAME\n        })\n      })\n\n      instance.addHook('onRequest', function startRequestSpanHook (request, _reply, hookDone) {\n        if (\n          this[kInstrumentation].isEnabled() === false ||\n          request.routeOptions.config?.otel === false\n        ) {\n          return hookDone()\n        }\n\n        if (this[kInstrumentation][kIgnorePaths]?.({\n          url: request.url,\n          method: request.method,\n        }) === true) {\n          this[kInstrumentation].logger.debug(\n            `Ignoring request ${request.method} ${request.url} because it matches the ignore path`\n          )\n          return hookDone()\n        }\n\n        let ctx = context.active()\n\n        if (trace.getSpan(ctx) == null) {\n          ctx = propagation.extract(ctx, request.headers)\n        }\n\n        const rpcMetadata = getRPCMetadata(ctx)\n\n        if (\n          request.routeOptions.url != null &&\n          rpcMetadata?.type === RPCType.HTTP\n        ) {\n          rpcMetadata.route = request.routeOptions.url\n        }\n\n        const attributes = {\n          [ATTRIBUTE_NAMES.ROOT]: '@fastify/otel',\n          [ATTR_HTTP_REQUEST_METHOD]: request.method,\n          [ATTR_URL_PATH]: request.url\n        }\n\n        if (request.routeOptions.url != null) {\n          attributes[ATTR_HTTP_ROUTE] = request.routeOptions.url\n        }\n\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = this[kInstrumentation].tracer.startSpan('request', {\n          attributes\n        }, ctx)\n\n        try {\n          this[kInstrumentation]._requestHook?.(span, request)\n        } catch (err) {\n          this[kInstrumentation].logger.error({ err }, 'requestHook threw')\n        }\n\n        request[kRequestContext] = trace.setSpan(ctx, span)\n        request[kRequestSpan] = span\n\n        context.with(request[kRequestContext], () => {\n          hookDone()\n        })\n      })\n\n      // onResponse is the last hook to be executed, only added for 404 handlers\n      instance.addHook('onResponse', function finalizeNotFoundSpanHook (request, reply, hookDone) {\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone()\n      })\n\n      instance.addHook = addHookPatched\n      instance.setNotFoundHandler = setNotFoundHandlerPatched\n\n      done()\n\n      function finalizeResponseSpanHook (request, reply, payload, hookDone) {\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          if (reply.statusCode >= 500) {\n            span.setStatus({ code: SpanStatusCode.ERROR })\n          }\n\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone(null, payload)\n      }\n\n      function recordErrorInSpanHook (request, reply, error, hookDone) {\n        /** @type {Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: error.message\n          })\n          if (instrumentation[kRecordExceptions] !== false) {\n            span.recordException(error)\n          }\n        }\n\n        hookDone()\n      }\n\n      function addHookPatched (name, hook) {\n        const addHookOriginal = this[kAddHookOriginal]\n\n        if (FASTIFY_HOOKS.includes(name)) {\n          return addHookOriginal.call(\n            this,\n            name,\n            handlerWrapper(hook, name, {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - ${name}`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hook.name?.length > 0\n                  ? hook.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          )\n        } else {\n          return addHookOriginal.call(this, name, hook)\n        }\n      }\n\n      function setNotFoundHandlerPatched (hooks, handler) {\n        const setNotFoundHandlerOriginal = this[kSetNotFoundOriginal]\n        if (typeof hooks === 'function') {\n          handler = handlerWrapper(hooks, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              hooks.name?.length > 0\n                ? hooks.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, handler)\n        } else {\n          if (hooks.preValidation != null) {\n            hooks.preValidation = handlerWrapper(hooks.preValidation, 'notFoundHandler - preValidation', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preValidation`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preValidation.name?.length > 0\n                  ? hooks.preValidation.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          if (hooks.preHandler != null) {\n            hooks.preHandler = handlerWrapper(hooks.preHandler, 'notFoundHandler - preHandler', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preHandler`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preHandler.name?.length > 0\n                  ? hooks.preHandler.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          handler = handlerWrapper(handler, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              handler.name?.length > 0\n                ? handler.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, hooks, handler)\n        }\n      }\n\n      // regular handlers are (request, reply), @fastify/websocket handlers are (socket, request)\n      function getRequestFromArgs (args) {\n        for (const arg of args) {\n          if (arg?.routeOptions && arg.url && arg.method) {\n            return arg\n          }\n        }\n        return null\n      }\n\n      function handlerWrapper (handler, hookName, spanAttributes = {}) {\n        return function handlerWrapped (...args) {\n          /** @type {FastifyOtelInstrumentation} */\n          const instrumentation = this[kInstrumentation]\n\n          const request = getRequestFromArgs(args)\n          if (request === null) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation because ${hookName} was called without a Fastify request argument`\n            )\n            return handler.call(this, ...args)\n          }\n\n          if (instrumentation.isEnabled() === false || request.routeOptions.config?.otel === false) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it is disabled`\n            )\n            return handler.call(this, ...args)\n          }\n\n          if (instrumentation[kIgnorePaths]?.({\n            url: request.url,\n            method: request.method,\n          }) === true) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it matches the ignore path`\n            )\n            return handler.call(this, ...args)\n          }\n\n          /* c8 ignore next */\n          const ctx = request[kRequestContext] ?? context.active()\n          const handlerName = handler.name?.length > 0\n            ? handler.name\n            : this.pluginName /* c8 ignore next */ ?? ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n\n          const span = instrumentation.tracer.startSpan(\n            `${hookName} - ${handlerName}`,\n            {\n              attributes: spanAttributes\n            },\n            ctx\n          )\n\n          if (instrumentation._lifecycleHook != null) {\n            try {\n              instrumentation._lifecycleHook(span, {\n                hookName,\n                request,\n                handler: handlerName\n              })\n            } catch (err) {\n              instrumentation.logger.error({ err }, 'Execution of lifecycleHook failed')\n            }\n          }\n\n          return context.with(\n            trace.setSpan(ctx, span),\n            function () {\n              try {\n                const res = handler.call(this, ...args)\n\n                if (typeof res?.then === 'function') {\n                  return res.then(\n                    result => {\n                      span.end()\n                      return result\n                    },\n                    error => {\n                      span.setStatus({\n                        code: SpanStatusCode.ERROR,\n                        message: error.message\n                      })\n                      if (instrumentation[kRecordExceptions] !== false) {\n                        span.recordException(error)\n                      }\n                      span.end()\n                      return Promise.reject(error)\n                    }\n                  )\n                }\n\n                span.end()\n                return res\n              } catch (error) {\n                span.setStatus({\n                  code: SpanStatusCode.ERROR,\n                  message: error.message\n                })\n                if (instrumentation[kRecordExceptions] !== false) {\n                  span.recordException(error)\n                }\n                span.end()\n                throw error\n              }\n            },\n            this\n          )\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = FastifyOtelInstrumentation\nmodule.exports.FastifyOtelInstrumentation = FastifyOtelInstrumentation\n","// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts\n//\n/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AttributeNames {\n  FASTIFY_NAME = 'fastify.name',\n  FASTIFY_TYPE = 'fastify.type',\n  HOOK_NAME = 'hook.name',\n  PLUGIN_NAME = 'plugin.name',\n}\n\nexport enum FastifyTypes {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request_handler',\n}\n\nexport enum FastifyNames {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request handler',\n}\n","// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts\n/*\n * Copyright The OpenTelemetry Authors\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\nexport const spanRequestSymbol = Symbol('opentelemetry.instrumentation.fastify.request_active_span');\n\n// The instrumentation creates a span for invocations of lifecycle hook handlers\n// that take `(request, reply, ...[, done])` arguments. Currently this is all\n// lifecycle hooks except `onRequestAbort`.\n// https://fastify.dev/docs/latest/Reference/Hooks\nexport const hooksNamesToWrap = new Set([\n  'onTimeout',\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preSerialization',\n  'preHandler',\n  'onSend',\n  'onResponse',\n  'onError',\n]);\n","// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright The OpenTelemetry Authors\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\nimport { type Attributes, type Span, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { spanRequestSymbol } from './constants';\nimport type { PluginFastifyReply } from './internal-types';\n\n/**\n * Starts Span\n * @param reply - reply function\n * @param tracer - tracer\n * @param spanName - span name\n * @param spanAttributes - span attributes\n */\nexport function startSpan(\n  reply: PluginFastifyReply,\n  tracer: Tracer,\n  spanName: string,\n  spanAttributes: Attributes = {},\n) {\n  const span = tracer.startSpan(spanName, { attributes: spanAttributes });\n\n  const spans: Span[] = reply[spanRequestSymbol] || [];\n  spans.push(span);\n\n  Object.defineProperty(reply, spanRequestSymbol, {\n    enumerable: false,\n    configurable: true,\n    value: spans,\n  });\n\n  return span;\n}\n\n/**\n * Ends span\n * @param reply - reply function\n * @param err - error\n */\nexport function endSpan(reply: PluginFastifyReply, err?: any) {\n  const spans = reply[spanRequestSymbol] || [];\n  // there is no active span, or it has already ended\n  if (!spans.length) {\n    return;\n  }\n  // biome-ignore lint/complexity/noForEach: \n  spans.forEach((span: Span) => {\n    if (err) {\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n      span.recordException(err);\n    }\n    span.end();\n  });\n  delete reply[spanRequestSymbol];\n}\n\n// @TODO after approve add this to instrumentation package and replace usage\n// when it will be released\n\n/**\n * This function handles the missing case from instrumentation package when\n * execute can either return a promise or void. And using async is not an\n * option as it is producing unwanted side effects.\n * @param execute - function to be executed\n * @param onFinish - function called when function executed\n * @param preventThrowingError - prevent to throw error when execute\n * function fails\n */\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => Promise,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): Promise;\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => T,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): T;\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => T | Promise,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): T | Promise | undefined {\n  let error: unknown;\n  let result: T | Promise | undefined = undefined;\n  try {\n    result = execute();\n\n    if (isPromise(result)) {\n      result.then(\n        res => onFinish(undefined, res),\n        err => onFinish(err),\n      );\n    }\n  } catch (e) {\n    error = e;\n  } finally {\n    if (!isPromise(result)) {\n      onFinish(error, result);\n      if (error && !preventThrowingError) {\n        // eslint-disable-next-line no-unsafe-finally\n        throw error;\n      }\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result;\n  }\n}\n\nfunction isPromise(val: T | Promise): val is Promise {\n  return (\n    (typeof val === 'object' && val && typeof Object.getOwnPropertyDescriptor(val, 'then')?.value === 'function') ||\n    false\n  );\n}\n","// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/*\n * Copyright The OpenTelemetry Authors\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\nimport { type Attributes, context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { Span } from '@sentry/core';\nimport {\n  getClient,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport type {\n  FastifyErrorCodes,\n  FastifyInstance,\n  FastifyReply,\n  FastifyRequest,\n  HandlerOriginal,\n  HookHandlerDoneFunction,\n} from '../types';\nimport { AttributeNames, FastifyNames, FastifyTypes } from './enums/AttributeNames';\nimport type { PluginFastifyReply } from './internal-types';\nimport type { FastifyInstrumentationConfig } from './types';\nimport { endSpan, safeExecuteInTheMiddleMaybePromise, startSpan } from './utils';\n/** @knipignore */\n\nconst PACKAGE_VERSION = '0.1.0';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-fastify-v3';\nconst ANONYMOUS_NAME = 'anonymous';\n\n// The instrumentation creates a span for invocations of lifecycle hook handlers\n// that take `(request, reply, ...[, done])` arguments. Currently this is all\n// lifecycle hooks except `onRequestAbort`.\n// https://fastify.dev/docs/latest/Reference/Hooks\nconst hooksNamesToWrap = new Set([\n  'onTimeout',\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preSerialization',\n  'preHandler',\n  'onSend',\n  'onResponse',\n  'onError',\n]);\n\n/**\n * Fastify instrumentation for OpenTelemetry\n */\nexport class FastifyInstrumentationV3 extends InstrumentationBase {\n  public constructor(config: FastifyInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  public init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition('fastify', ['>=3.0.0 <4'], moduleExports => {\n        return this._patchConstructor(moduleExports);\n      }),\n    ];\n  }\n\n  private _hookOnRequest() {\n    const instrumentation = this;\n\n    return function onRequest(request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction) {\n      if (!instrumentation.isEnabled()) {\n        return done();\n      }\n      instrumentation._wrap(reply, 'send', instrumentation._patchSend());\n\n      const anyRequest = request as any;\n\n      const rpcMetadata = getRPCMetadata(context.active());\n      const routeName = anyRequest.routeOptions\n        ? anyRequest.routeOptions.url // since fastify@4.10.0\n        : request.routerPath;\n      if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n        rpcMetadata.route = routeName;\n      }\n\n      const method = request.method || 'GET';\n\n      getIsolationScope().setTransactionName(`${method} ${routeName}`);\n      done();\n    };\n  }\n\n  private _wrapHandler(\n    pluginName: string,\n    hookName: string,\n    original: HandlerOriginal,\n    syncFunctionWithDone: boolean,\n  ): () => Promise {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify route.handler function');\n\n    return function (this: any, ...args: unknown[]): Promise {\n      if (!instrumentation.isEnabled()) {\n        return original.apply(this, args);\n      }\n\n      const name = original.name || pluginName || ANONYMOUS_NAME;\n      const spanName = `${FastifyNames.MIDDLEWARE} - ${name}`;\n\n      const reply = args[1] as PluginFastifyReply;\n\n      const span = startSpan(reply, instrumentation.tracer, spanName, {\n        [AttributeNames.FASTIFY_TYPE]: FastifyTypes.MIDDLEWARE,\n        [AttributeNames.PLUGIN_NAME]: pluginName,\n        [AttributeNames.HOOK_NAME]: hookName,\n      });\n\n      const origDone = syncFunctionWithDone && (args[args.length - 1] as HookHandlerDoneFunction);\n      if (origDone) {\n        args[args.length - 1] = function (...doneArgs: Parameters) {\n          endSpan(reply);\n          origDone.apply(this, doneArgs);\n        };\n      }\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        return safeExecuteInTheMiddleMaybePromise(\n          () => {\n            return original.apply(this, args);\n          },\n          err => {\n            if (err instanceof Error) {\n              span.setStatus({\n                code: SpanStatusCode.ERROR,\n                message: err.message,\n              });\n              span.recordException(err);\n            }\n            // async hooks should end the span as soon as the promise is resolved\n            if (!syncFunctionWithDone) {\n              endSpan(reply);\n            }\n          },\n        );\n      });\n    };\n  }\n\n  private _wrapAddHook(): (original: FastifyInstance['addHook']) => () => FastifyInstance {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify server.addHook function');\n\n    // biome-ignore lint/complexity/useArrowFunction: \n    return function (original: FastifyInstance['addHook']): () => FastifyInstance {\n      return function wrappedAddHook(this: any, ...args: any) {\n        const name = args[0] as string;\n        const handler = args[1] as HandlerOriginal;\n        const pluginName = this.pluginName;\n        if (!hooksNamesToWrap.has(name)) {\n          return original.apply(this, args);\n        }\n\n        const syncFunctionWithDone =\n          typeof args[args.length - 1] === 'function' && handler.constructor.name !== 'AsyncFunction';\n\n        return original.apply(this, [\n          name,\n          instrumentation._wrapHandler(pluginName, name, handler, syncFunctionWithDone),\n        ] as never);\n      };\n    };\n  }\n\n  private _patchConstructor(moduleExports: {\n    fastify: () => FastifyInstance;\n    errorCodes: FastifyErrorCodes | undefined;\n  }): () => FastifyInstance {\n    const instrumentation = this;\n\n    function fastify(this: FastifyInstance, ...args: any) {\n      const app: FastifyInstance = moduleExports.fastify.apply(this, args);\n      app.addHook('onRequest', instrumentation._hookOnRequest());\n      app.addHook('preHandler', instrumentation._hookPreHandler());\n\n      instrumentClient();\n\n      instrumentation._wrap(app, 'addHook', instrumentation._wrapAddHook());\n\n      return app;\n    }\n\n    if (moduleExports.errorCodes !== undefined) {\n      fastify.errorCodes = moduleExports.errorCodes;\n    }\n    fastify.fastify = fastify;\n    fastify.default = fastify;\n    return fastify;\n  }\n\n  private _patchSend() {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify reply.send function');\n\n    return function patchSend(original: () => FastifyReply): () => FastifyReply {\n      return function send(this: FastifyReply, ...args: any) {\n        const maybeError: any = args[0];\n\n        if (!instrumentation.isEnabled()) {\n          return original.apply(this, args);\n        }\n\n        return safeExecuteInTheMiddle(\n          () => {\n            return original.apply(this, args);\n          },\n          err => {\n            if (!err && maybeError instanceof Error) {\n              // eslint-disable-next-line no-param-reassign\n              err = maybeError;\n            }\n            endSpan(this, err);\n          },\n        );\n      };\n    };\n  }\n\n  private _hookPreHandler() {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify preHandler function');\n\n    return function preHandler(this: any, request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction) {\n      if (!instrumentation.isEnabled()) {\n        return done();\n      }\n      const anyRequest = request as any;\n\n      const handler = anyRequest.routeOptions?.handler || anyRequest.context?.handler;\n      const handlerName = handler?.name.startsWith('bound ') ? handler.name.substring(6) : handler?.name;\n      const spanName = `${FastifyNames.REQUEST_HANDLER} - ${handlerName || this.pluginName || ANONYMOUS_NAME}`;\n\n      const spanAttributes: Attributes = {\n        [AttributeNames.PLUGIN_NAME]: this.pluginName,\n        [AttributeNames.FASTIFY_TYPE]: FastifyTypes.REQUEST_HANDLER,\n        // eslint-disable-next-line deprecation/deprecation\n        [SEMATTRS_HTTP_ROUTE]: anyRequest.routeOptions\n          ? anyRequest.routeOptions.url // since fastify@4.10.0\n          : request.routerPath,\n      };\n      if (handlerName) {\n        spanAttributes[AttributeNames.FASTIFY_NAME] = handlerName;\n      }\n      const span = startSpan(reply, instrumentation.tracer, spanName, spanAttributes);\n\n      addFastifyV3SpanAttributes(span);\n\n      const { requestHook } = instrumentation.getConfig();\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () => requestHook(span, { request }),\n          e => {\n            if (e) {\n              instrumentation._diag.error('request hook failed', e);\n            }\n          },\n          true,\n        );\n      }\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        done();\n      });\n    };\n  }\n}\n\nfunction instrumentClient(): void {\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', (span: Span) => {\n      addFastifyV3SpanAttributes(span);\n    });\n  }\n}\n\nfunction addFastifyV3SpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: middleware, request_handler\n  const type = attributes['fastify.type'];\n\n  // If this is already set, or we have no fastify span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.fastify`,\n  });\n\n  // Also update the name, we don't need to \"middleware - \" prefix\n  const name = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n  if (typeof name === 'string') {\n    // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n    // This is a bit of a hack, and not always working for all spans\n    // But it's the best we can do without a proper API\n    const updatedName = name.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n    span.updateName(updatedName);\n  }\n}\n","import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport type { Instrumentation, InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getClient,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport type { FastifyInstance, FastifyMinimal, FastifyReply, FastifyRequest } from './types';\nimport { FastifyInstrumentationV3 } from './v3/instrumentation';\n\n/**\n * Options for the Fastify integration.\n *\n * `shouldHandleError` - Callback method deciding whether error should be captured and sent to Sentry\n * This is used on Fastify v5 where Sentry handles errors in the diagnostics channel.\n * Fastify v3 and v4 use `setupFastifyErrorHandler` instead.\n *\n * @example\n *\n * ```javascript\n * Sentry.init({\n *   integrations: [\n *     Sentry.fastifyIntegration({\n *       shouldHandleError(_error, _request, reply) {\n *         return reply.statusCode >= 500;\n *       },\n *     });\n *   },\n * });\n * ```\n *\n */\ninterface FastifyIntegrationOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   * This is used on Fastify v5 where Sentry handles errors in the diagnostics channel.\n   * Fastify v3 and v4 use `setupFastifyErrorHandler` instead.\n   *\n   * @param error Captured Fastify error\n   * @param request Fastify request (or any object containing at least method, routeOptions.url, and routerPath)\n   * @param reply Fastify reply (or any object containing at least statusCode)\n   */\n  shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n}\n\ninterface FastifyHandlerOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   *\n   * @param error Captured Fastify error\n   * @param request Fastify request (or any object containing at least method, routeOptions.url, and routerPath)\n   * @param reply Fastify reply (or any object containing at least statusCode)\n   *\n   * @example\n   *\n   *\n   * ```javascript\n   * setupFastifyErrorHandler(app, {\n   *   shouldHandleError(_error, _request, reply) {\n   *     return reply.statusCode >= 400;\n   *   },\n   * });\n   * ```\n   *\n   *\n   * If using TypeScript, you can cast the request and reply to get full type safety.\n   *\n   * ```typescript\n   * import type { FastifyRequest, FastifyReply } from 'fastify';\n   *\n   * setupFastifyErrorHandler(app, {\n   *   shouldHandleError(error, minimalRequest, minimalReply) {\n   *     const request = minimalRequest as FastifyRequest;\n   *     const reply = minimalReply as FastifyReply;\n   *     return reply.statusCode >= 500;\n   *   },\n   * });\n   * ```\n   */\n  shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n}\n\nconst INTEGRATION_NAME = 'Fastify';\n\nexport const instrumentFastifyV3 = generateInstrumentOnce(\n  `${INTEGRATION_NAME}.v3`,\n  () => new FastifyInstrumentationV3(),\n);\n\nfunction getFastifyIntegration(): ReturnType | undefined {\n  const client = getClient();\n  if (!client) {\n    return undefined;\n  } else {\n    return client.getIntegrationByName(INTEGRATION_NAME);\n  }\n}\n\nfunction handleFastifyError(\n  this: {\n    diagnosticsChannelExists?: boolean;\n  },\n  error: Error,\n  request: FastifyRequest & { opentelemetry?: () => { span?: Span } },\n  reply: FastifyReply,\n  handlerOrigin: 'diagnostics-channel' | 'onError-hook',\n): void {\n  const shouldHandleError = getFastifyIntegration()?.getShouldHandleError() || defaultShouldHandleError;\n  // Diagnostics channel runs before the onError hook, so we can use it to check if the handler was already registered\n  if (handlerOrigin === 'diagnostics-channel') {\n    this.diagnosticsChannelExists = true;\n  }\n\n  if (this.diagnosticsChannelExists && handlerOrigin === 'onError-hook') {\n    DEBUG_BUILD &&\n      debug.warn(\n        'Fastify error handler was already registered via diagnostics channel.',\n        'You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.',\n      );\n\n    // If the diagnostics channel already exists, we don't need to handle the error again\n    return;\n  }\n\n  if (shouldHandleError(error, request, reply)) {\n    captureException(error, { mechanism: { handled: false, type: 'auto.function.fastify' } });\n  }\n}\n\nexport const instrumentFastify = generateInstrumentOnce(`${INTEGRATION_NAME}.v5`, () => {\n  const fastifyOtelInstrumentationInstance = new FastifyOtelInstrumentation();\n  const plugin = fastifyOtelInstrumentationInstance.plugin();\n\n  // This message handler works for Fastify versions 3, 4 and 5\n  diagnosticsChannel.subscribe('fastify.initialization', message => {\n    const fastifyInstance = (message as { fastify?: FastifyInstance }).fastify;\n\n    fastifyInstance?.register(plugin).after(err => {\n      if (err) {\n        DEBUG_BUILD && debug.error('Failed to setup Fastify instrumentation', err);\n      } else {\n        instrumentClient();\n\n        if (fastifyInstance) {\n          instrumentOnRequest(fastifyInstance);\n        }\n      }\n    });\n  });\n\n  // This diagnostics channel only works on Fastify version 5\n  // For versions 3 and 4, we use `setupFastifyErrorHandler` instead\n  diagnosticsChannel.subscribe('tracing:fastify.request.handler:error', message => {\n    const { error, request, reply } = message as {\n      error: Error;\n      request: FastifyRequest & { opentelemetry?: () => { span?: Span } };\n      reply: FastifyReply;\n    };\n\n    handleFastifyError.call(handleFastifyError, error, request, reply, 'diagnostics-channel');\n  });\n\n  // Returning this as Instrumentation to avoid leaking @fastify/otel types into the public API\n  return fastifyOtelInstrumentationInstance as unknown as Instrumentation;\n});\n\nconst _fastifyIntegration = (({ shouldHandleError }: Partial) => {\n  let _shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      _shouldHandleError = shouldHandleError || defaultShouldHandleError;\n\n      instrumentFastifyV3();\n      instrumentFastify();\n    },\n    getShouldHandleError() {\n      return _shouldHandleError;\n    },\n    setShouldHandleError(fn: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean): void {\n      _shouldHandleError = fn;\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Fastify](https://fastify.dev/).\n *\n * If you also want to capture errors, you need to call `setupFastifyErrorHandler(app)` after you set up your Fastify server.\n *\n * For more information, see the [fastify documentation](https://docs.sentry.io/platforms/javascript/guides/fastify/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.fastifyIntegration()],\n * })\n * ```\n */\nexport const fastifyIntegration = defineIntegration((options: Partial = {}) =>\n  _fastifyIntegration(options),\n);\n\n/**\n * Default function to determine if an error should be sent to Sentry\n *\n * 3xx and 4xx errors are not sent by default.\n */\nfunction defaultShouldHandleError(_error: Error, _request: FastifyRequest, reply: FastifyReply): boolean {\n  const statusCode = reply.statusCode;\n  // 3xx and 4xx errors are not sent by default.\n  return statusCode >= 500 || statusCode <= 299;\n}\n\n/**\n * Add an Fastify error handler to capture errors to Sentry.\n *\n * @param fastify The Fastify instance to which to add the error handler\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Fastify = require(\"fastify\");\n *\n * const app = Fastify();\n *\n * Sentry.setupFastifyErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen({ port: 3000 });\n * ```\n */\nexport function setupFastifyErrorHandler(fastify: FastifyMinimal, options?: Partial): void {\n  if (options?.shouldHandleError) {\n    getFastifyIntegration()?.setShouldHandleError(options.shouldHandleError);\n  }\n\n  const plugin = Object.assign(\n    function (fastify: FastifyInstance, _options: unknown, done: () => void): void {\n      fastify.addHook('onError', async (request, reply, error) => {\n        handleFastifyError.call(handleFastifyError, error, request, reply, 'onError-hook');\n      });\n      done();\n    },\n    {\n      [Symbol.for('skip-override')]: true,\n      [Symbol.for('fastify.display-name')]: 'sentry-fastify-error-handler',\n    },\n  );\n\n  fastify.register(plugin);\n}\n\nfunction addFastifySpanAttributes(span: Span): void {\n  const spanJSON = spanToJSON(span);\n  const spanName = spanJSON.description;\n  const attributes = spanJSON.data;\n\n  const type = attributes['fastify.type'];\n\n  const isHook = type === 'hook';\n  const isHandler = type === spanName?.startsWith('handler -');\n  // In @fastify/otel `request-handler` is separated by dash, not underscore\n  const isRequestHandler = spanName === 'request' || type === 'request-handler';\n\n  // If this is already set, or we have no fastify span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || (!isHandler && !isRequestHandler && !isHook)) {\n    return;\n  }\n\n  const opPrefix = isHook ? 'hook' : isHandler ? 'middleware' : isRequestHandler ? 'request_handler' : '';\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${opPrefix}.fastify`,\n  });\n\n  const attrName = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n  if (typeof attrName === 'string') {\n    // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n    // This is a bit of a hack, and not always working for all spans\n    // But it's the best we can do without a proper API\n    const updatedName = attrName.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n    span.updateName(updatedName);\n  }\n}\n\nfunction instrumentClient(): void {\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', (span: Span) => {\n      addFastifySpanAttributes(span);\n    });\n  }\n}\n\nfunction instrumentOnRequest(fastify: FastifyInstance): void {\n  fastify.addHook('onRequest', async (request: FastifyRequest & { opentelemetry?: () => { span?: Span } }, _reply) => {\n    if (request.opentelemetry) {\n      const { span } = request.opentelemetry();\n\n      if (span) {\n        addFastifySpanAttributes(span);\n      }\n    }\n\n    const routeName = request.routeOptions?.url;\n    const method = request.method || 'GET';\n\n    getIsolationScope().setTransactionName(`${method} ${routeName}`);\n  });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AllowedOperationTypes {\n  QUERY = 'query',\n  MUTATION = 'mutation',\n  SUBSCRIPTION = 'subscription',\n}\n\nexport enum TokenKind {\n  SOF = '',\n  EOF = '',\n  BANG = '!',\n  DOLLAR = '$',\n  AMP = '&',\n  PAREN_L = '(',\n  PAREN_R = ')',\n  SPREAD = '...',\n  COLON = ':',\n  EQUALS = '=',\n  AT = '@',\n  BRACKET_L = '[',\n  BRACKET_R = ']',\n  BRACE_L = '{',\n  PIPE = '|',\n  BRACE_R = '}',\n  NAME = 'Name',\n  INT = 'Int',\n  FLOAT = 'Float',\n  STRING = 'String',\n  BLOCK_STRING = 'BlockString',\n  COMMENT = 'Comment',\n}\n\nexport enum SpanNames {\n  EXECUTE = 'graphql.execute',\n  PARSE = 'graphql.parse',\n  RESOLVE = 'graphql.resolve',\n  VALIDATE = 'graphql.validate',\n  SCHEMA_VALIDATE = 'graphql.validateSchema',\n  SCHEMA_PARSE = 'graphql.parseSchema',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  SOURCE = 'graphql.source',\n  FIELD_NAME = 'graphql.field.name',\n  FIELD_PATH = 'graphql.field.path',\n  FIELD_TYPE = 'graphql.field.type',\n  PARENT_NAME = 'graphql.parent.name',\n  OPERATION_TYPE = 'graphql.operation.type',\n  OPERATION_NAME = 'graphql.operation.name',\n  VARIABLES = 'graphql.variables.',\n  ERROR_VALIDATION_NAME = 'graphql.validation.error',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport const OTEL_PATCHED_SYMBOL = Symbol.for('opentelemetry.patched');\n\nexport const OTEL_GRAPHQL_DATA_SYMBOL = Symbol.for(\n  'opentelemetry.graphql_data'\n);\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as graphqlTypes from 'graphql';\nimport type * as api from '@opentelemetry/api';\nimport type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport type { DocumentNode } from 'graphql/language/ast';\nimport type {\n  GraphQLFieldResolver,\n  GraphQLTypeResolver,\n} from 'graphql/type/definition';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\n\nexport const OPERATION_NOT_SUPPORTED =\n  'Operation$operationName$not' + ' supported';\n\nexport type executeFunctionWithObj = (\n  args: graphqlTypes.ExecutionArgs\n) => PromiseOrValue;\n\nexport type executeArgumentsArray = [\n  graphqlTypes.GraphQLSchema,\n  graphqlTypes.DocumentNode,\n  any,\n  any,\n  Maybe<{ [key: string]: any }>,\n  Maybe,\n  Maybe>,\n  Maybe>,\n];\n\nexport type executeFunctionWithArgs = (\n  schema: graphqlTypes.GraphQLSchema,\n  document: graphqlTypes.DocumentNode,\n  rootValue?: any,\n  contextValue?: any,\n  variableValues?: Maybe<{ [key: string]: any }>,\n  operationName?: Maybe,\n  fieldResolver?: Maybe>,\n  typeResolver?: Maybe>\n) => PromiseOrValue;\n\nexport interface OtelExecutionArgs {\n  schema: graphqlTypes.GraphQLSchema;\n  document: DocumentNode & ObjectWithGraphQLData;\n  rootValue?: any;\n  contextValue?: any & ObjectWithGraphQLData;\n  variableValues?: Maybe<{ [key: string]: any }>;\n  operationName?: Maybe;\n  fieldResolver?: Maybe & OtelPatched>;\n  typeResolver?: Maybe>;\n}\n\nexport type executeType = executeFunctionWithObj | executeFunctionWithArgs;\n\nexport type parseType = (\n  source: string | graphqlTypes.Source,\n  options?: graphqlTypes.ParseOptions\n) => graphqlTypes.DocumentNode;\n\nexport type validateType = (\n  schema: graphqlTypes.GraphQLSchema,\n  documentAST: graphqlTypes.DocumentNode,\n  rules?: ReadonlyArray,\n  options?: { maxErrors?: number },\n  typeInfo?: graphqlTypes.TypeInfo\n) => ReadonlyArray;\n\nexport interface GraphQLField {\n  span: api.Span;\n}\n\ninterface OtelGraphQLData {\n  source?: any;\n  span: api.Span;\n  fields: { [key: string]: GraphQLField };\n}\n\nexport interface ObjectWithGraphQLData {\n  [OTEL_GRAPHQL_DATA_SYMBOL]?: OtelGraphQLData;\n}\n\nexport interface OtelPatched {\n  [OTEL_PATCHED_SYMBOL]?: boolean;\n}\n\nexport interface GraphQLPath {\n  prev: GraphQLPath | undefined;\n  key: string | number;\n  /**\n   * optional as it didn't exist yet in ver 14\n   */\n  typename?: string | undefined;\n}\n\n/**\n * Moving this type from ver 15 of graphql as it is nto available in ver. 14s\n * this way it can compile against ver 14.\n */\nexport type Maybe = null | undefined | T;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as graphqlTypes from 'graphql';\nimport * as api from '@opentelemetry/api';\nimport { AllowedOperationTypes, SpanNames, TokenKind } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\nimport {\n  GraphQLField,\n  GraphQLPath,\n  ObjectWithGraphQLData,\n  OtelPatched,\n  Maybe,\n} from './internal-types';\nimport { GraphQLInstrumentationParsedConfig } from './types';\n\nconst OPERATION_VALUES = Object.values(AllowedOperationTypes);\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts\nexport const isPromise = (value: any): value is Promise => {\n  return typeof value?.then === 'function';\n};\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isObjectLike.ts\nconst isObjectLike = (value: unknown): value is { [key: string]: unknown } => {\n  return typeof value == 'object' && value !== null;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction addInputVariableAttribute(span: api.Span, key: string, variable: any) {\n  if (Array.isArray(variable)) {\n    variable.forEach((value, idx) => {\n      addInputVariableAttribute(span, `${key}.${idx}`, value);\n    });\n  } else if (variable instanceof Object) {\n    Object.entries(variable).forEach(([nestedKey, value]) => {\n      addInputVariableAttribute(span, `${key}.${nestedKey}`, value);\n    });\n  } else {\n    span.setAttribute(`${AttributeNames.VARIABLES}${String(key)}`, variable);\n  }\n}\n\nexport function addInputVariableAttributes(\n  span: api.Span,\n  variableValues: { [key: string]: any }\n) {\n  Object.entries(variableValues).forEach(([key, value]) => {\n    addInputVariableAttribute(span, key, value);\n  });\n}\n\nexport function addSpanSource(\n  span: api.Span,\n  loc?: graphqlTypes.Location,\n  allowValues?: boolean,\n  start?: number,\n  end?: number\n): void {\n  const source = getSourceFromLocation(loc, allowValues, start, end);\n  span.setAttribute(AttributeNames.SOURCE, source);\n}\n\nfunction createFieldIfNotExists(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  contextValue: any,\n  info: graphqlTypes.GraphQLResolveInfo,\n  path: string[]\n): {\n  field: GraphQLField;\n  spanAdded: boolean;\n} {\n  let field = getField(contextValue, path);\n  if (field) {\n    return { field, spanAdded: false };\n  }\n\n  const config = getConfig();\n  const parentSpan = config.flatResolveSpans\n    ? getRootSpan(contextValue)\n    : getParentFieldSpan(contextValue, path);\n\n  field = {\n    span: createResolverSpan(\n      tracer,\n      getConfig,\n      contextValue,\n      info,\n      path,\n      parentSpan\n    ),\n  };\n\n  addField(contextValue, path, field);\n\n  return { field, spanAdded: true };\n}\n\nfunction createResolverSpan(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  contextValue: any,\n  info: graphqlTypes.GraphQLResolveInfo,\n  path: string[],\n  parentSpan?: api.Span\n): api.Span {\n  const attributes: api.SpanAttributes = {\n    [AttributeNames.FIELD_NAME]: info.fieldName,\n    [AttributeNames.FIELD_PATH]: path.join('.'),\n    [AttributeNames.FIELD_TYPE]: info.returnType.toString(),\n    [AttributeNames.PARENT_NAME]: info.parentType.name,\n  };\n\n  const span = tracer.startSpan(\n    `${SpanNames.RESOLVE} ${attributes[AttributeNames.FIELD_PATH]}`,\n    {\n      attributes,\n    },\n    parentSpan ? api.trace.setSpan(api.context.active(), parentSpan) : undefined\n  );\n\n  const document = contextValue[OTEL_GRAPHQL_DATA_SYMBOL].source;\n  const fieldNode = info.fieldNodes.find(\n    fieldNode => fieldNode.kind === 'Field'\n  );\n\n  if (fieldNode) {\n    addSpanSource(\n      span,\n      document.loc,\n      getConfig().allowValues,\n      fieldNode.loc?.start,\n      fieldNode.loc?.end\n    );\n  }\n\n  return span;\n}\n\nexport function endSpan(span: api.Span, error?: Error): void {\n  if (error) {\n    span.recordException(error);\n  }\n  span.end();\n}\n\nexport function getOperation(\n  document: graphqlTypes.DocumentNode,\n  operationName?: Maybe\n): graphqlTypes.DefinitionNode | undefined {\n  if (!document || !Array.isArray(document.definitions)) {\n    return undefined;\n  }\n\n  if (operationName) {\n    return document.definitions\n      .filter(\n        definition =>\n          OPERATION_VALUES.indexOf((definition as any)?.operation) !== -1\n      )\n      .find(definition => operationName === (definition as any)?.name?.value);\n  } else {\n    return document.definitions.find(\n      definition =>\n        OPERATION_VALUES.indexOf((definition as any)?.operation) !== -1\n    );\n  }\n}\n\nfunction addField(contextValue: any, path: string[], field: GraphQLField) {\n  return (contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] =\n    field);\n}\n\nfunction getField(contextValue: any, path: string[]): GraphQLField {\n  return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')];\n}\n\nfunction getParentFieldSpan(contextValue: any, path: string[]): api.Span {\n  for (let i = path.length - 1; i > 0; i--) {\n    const field = getField(contextValue, path.slice(0, i));\n\n    if (field) {\n      return field.span;\n    }\n  }\n\n  return getRootSpan(contextValue);\n}\n\nfunction getRootSpan(contextValue: any): api.Span {\n  return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].span;\n}\n\nfunction pathToArray(mergeItems: boolean, path: GraphQLPath): string[] {\n  const flattened: string[] = [];\n  let curr: GraphQLPath | undefined = path;\n  while (curr) {\n    let key = curr.key;\n\n    if (mergeItems && typeof key === 'number') {\n      key = '*';\n    }\n    flattened.push(String(key));\n    curr = curr.prev;\n  }\n  return flattened.reverse();\n}\n\nfunction repeatBreak(i: number): string {\n  return repeatChar('\\n', i);\n}\n\nfunction repeatSpace(i: number): string {\n  return repeatChar(' ', i);\n}\n\nfunction repeatChar(char: string, to: number): string {\n  let text = '';\n  for (let i = 0; i < to; i++) {\n    text += char;\n  }\n  return text;\n}\n\nconst KindsToBeRemoved: string[] = [\n  TokenKind.FLOAT,\n  TokenKind.STRING,\n  TokenKind.INT,\n  TokenKind.BLOCK_STRING,\n];\n\nexport function getSourceFromLocation(\n  loc?: graphqlTypes.Location,\n  allowValues = false,\n  inputStart?: number,\n  inputEnd?: number\n): string {\n  let source = '';\n\n  if (loc?.startToken) {\n    const start = typeof inputStart === 'number' ? inputStart : loc.start;\n    const end = typeof inputEnd === 'number' ? inputEnd : loc.end;\n\n    let next: graphqlTypes.Token | null = loc.startToken.next;\n    let previousLine: number | undefined = 1;\n    while (next) {\n      if (next.start < start) {\n        next = next.next;\n        previousLine = next?.line;\n        continue;\n      }\n      if (next.end > end) {\n        next = next.next;\n        previousLine = next?.line;\n        continue;\n      }\n      let value = next.value || next.kind;\n      let space = '';\n      if (!allowValues && KindsToBeRemoved.indexOf(next.kind) >= 0) {\n        // value = repeatChar('*', value.length);\n        value = '*';\n      }\n      if (next.kind === TokenKind.STRING) {\n        value = `\"${value}\"`;\n      }\n      if (next.kind === TokenKind.EOF) {\n        value = '';\n      }\n      if (next.line > previousLine!) {\n        source += repeatBreak(next.line - previousLine!);\n        previousLine = next.line;\n        space = repeatSpace(next.column - 1);\n      } else {\n        if (next.line === next.prev?.line) {\n          space = repeatSpace(next.start - (next.prev?.end || 0));\n        }\n      }\n      source += space + value;\n      if (next) {\n        next = next.next!;\n      }\n    }\n  }\n\n  return source;\n}\n\nexport function wrapFields(\n  type: Maybe,\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig\n): void {\n  if (!type || type[OTEL_PATCHED_SYMBOL]) {\n    return;\n  }\n  const fields = type.getFields();\n\n  type[OTEL_PATCHED_SYMBOL] = true;\n\n  Object.keys(fields).forEach(key => {\n    const field = fields[key];\n\n    if (!field) {\n      return;\n    }\n\n    if (field.resolve) {\n      field.resolve = wrapFieldResolver(tracer, getConfig, field.resolve);\n    }\n\n    if (field.type) {\n      const unwrappedTypes = unwrapType(field.type);\n      for (const unwrappedType of unwrappedTypes) {\n        wrapFields(unwrappedType, tracer, getConfig);\n      }\n    }\n  });\n}\n\nfunction unwrapType(\n  type: graphqlTypes.GraphQLOutputType\n): readonly graphqlTypes.GraphQLObjectType[] {\n  // unwrap wrapping types (non-nullable and list types)\n  if ('ofType' in type) {\n    return unwrapType(type.ofType);\n  }\n\n  // unwrap union types\n  if (isGraphQLUnionType(type)) {\n    return type.getTypes();\n  }\n\n  // return object types\n  if (isGraphQLObjectType(type)) {\n    return [type];\n  }\n\n  return [];\n}\n\nfunction isGraphQLUnionType(\n  type: graphqlTypes.GraphQLType\n): type is graphqlTypes.GraphQLUnionType {\n  return 'getTypes' in type && typeof type.getTypes === 'function';\n}\n\nfunction isGraphQLObjectType(\n  type: graphqlTypes.GraphQLType\n): type is graphqlTypes.GraphQLObjectType {\n  return 'getFields' in type && typeof type.getFields === 'function';\n}\n\nconst handleResolveSpanError = (\n  resolveSpan: api.Span,\n  err: any,\n  shouldEndSpan: boolean\n) => {\n  if (!shouldEndSpan) {\n    return;\n  }\n  resolveSpan.recordException(err);\n  resolveSpan.setStatus({\n    code: api.SpanStatusCode.ERROR,\n    message: err.message,\n  });\n  resolveSpan.end();\n};\n\nconst handleResolveSpanSuccess = (\n  resolveSpan: api.Span,\n  shouldEndSpan: boolean\n) => {\n  if (!shouldEndSpan) {\n    return;\n  }\n  resolveSpan.end();\n};\n\nexport function wrapFieldResolver(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  fieldResolver: Maybe<\n    graphqlTypes.GraphQLFieldResolver & OtelPatched\n  >,\n  isDefaultResolver = false\n): graphqlTypes.GraphQLFieldResolver<\n  TSource,\n  TContext & ObjectWithGraphQLData,\n  TArgs\n> &\n  OtelPatched {\n  if (\n    (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] ||\n    typeof fieldResolver !== 'function'\n  ) {\n    return fieldResolver!;\n  }\n\n  function wrappedFieldResolver(\n    this: graphqlTypes.GraphQLFieldResolver,\n    source: TSource,\n    args: TArgs,\n    contextValue: TContext & ObjectWithGraphQLData,\n    info: graphqlTypes.GraphQLResolveInfo\n  ) {\n    if (!fieldResolver) {\n      return undefined;\n    }\n    const config = getConfig();\n\n    // follows what graphql is doing to decide if this is a trivial resolver\n    // for which we don't need to create a resolve span\n    if (\n      config.ignoreTrivialResolveSpans &&\n      isDefaultResolver &&\n      (isObjectLike(source) || typeof source === 'function')\n    ) {\n      const property = (source as any)[info.fieldName];\n      // a function execution is not trivial and should be recorder.\n      // property which is not a function is just a value and we don't want a \"resolve\" span for it\n      if (typeof property !== 'function') {\n        return fieldResolver.call(this, source, args, contextValue, info);\n      }\n    }\n\n    if (!contextValue[OTEL_GRAPHQL_DATA_SYMBOL]) {\n      return fieldResolver.call(this, source, args, contextValue, info);\n    }\n    const path = pathToArray(config.mergeItems, info && info.path);\n    const depth = path.filter((item: any) => typeof item === 'string').length;\n\n    let span: api.Span;\n    let shouldEndSpan = false;\n    if (config.depth >= 0 && config.depth < depth) {\n      span = getParentFieldSpan(contextValue, path);\n    } else {\n      const { field, spanAdded } = createFieldIfNotExists(\n        tracer,\n        getConfig,\n        contextValue,\n        info,\n        path\n      );\n      span = field.span;\n      shouldEndSpan = spanAdded;\n    }\n\n    return api.context.with(\n      api.trace.setSpan(api.context.active(), span),\n      () => {\n        try {\n          const res = fieldResolver.call(\n            this,\n            source,\n            args,\n            contextValue,\n            info\n          );\n          if (isPromise(res)) {\n            return res.then(\n              (r: any) => {\n                handleResolveSpanSuccess(span, shouldEndSpan);\n                return r;\n              },\n              (err: Error) => {\n                handleResolveSpanError(span, err, shouldEndSpan);\n                throw err;\n              }\n            );\n          } else {\n            handleResolveSpanSuccess(span, shouldEndSpan);\n            return res;\n          }\n        } catch (err: any) {\n          handleResolveSpanError(span, err, shouldEndSpan);\n          throw err;\n        }\n      }\n    );\n  }\n\n  (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] = true;\n\n  return wrappedFieldResolver;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-graphql';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, trace } from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type * as graphqlTypes from 'graphql';\nimport { SpanNames } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL } from './symbols';\n\nimport {\n  executeFunctionWithObj,\n  executeArgumentsArray,\n  executeType,\n  parseType,\n  validateType,\n  OtelExecutionArgs,\n  ObjectWithGraphQLData,\n  OPERATION_NOT_SUPPORTED,\n  Maybe,\n} from './internal-types';\nimport {\n  addInputVariableAttributes,\n  addSpanSource,\n  endSpan,\n  getOperation,\n  isPromise,\n  wrapFieldResolver,\n  wrapFields,\n} from './utils';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport * as api from '@opentelemetry/api';\nimport type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport {\n  GraphQLInstrumentationConfig,\n  GraphQLInstrumentationParsedConfig,\n} from './types';\n\nconst DEFAULT_CONFIG: GraphQLInstrumentationParsedConfig = {\n  mergeItems: false,\n  depth: -1,\n  allowValues: false,\n  ignoreResolveSpans: false,\n};\n\nconst supportedVersions = ['>=14.0.0 <17'];\n\nexport class GraphQLInstrumentation extends InstrumentationBase {\n  constructor(config: GraphQLInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n  }\n\n  override setConfig(config: GraphQLInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  protected init() {\n    const module = new InstrumentationNodeModuleDefinition(\n      'graphql',\n      supportedVersions\n    );\n    module.files.push(this._addPatchingExecute());\n    module.files.push(this._addPatchingParser());\n    module.files.push(this._addPatchingValidate());\n\n    return module;\n  }\n\n  private _addPatchingExecute(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/execution/execute.js',\n      supportedVersions,\n      // cannot make it work with appropriate type as execute function has 2\n      //types and/cannot import function but only types\n      (moduleExports: any) => {\n        if (isWrapped(moduleExports.execute)) {\n          this._unwrap(moduleExports, 'execute');\n        }\n        this._wrap(\n          moduleExports,\n          'execute',\n          this._patchExecute(moduleExports.defaultFieldResolver)\n        );\n        return moduleExports;\n      },\n      moduleExports => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'execute');\n        }\n      }\n    );\n  }\n\n  private _addPatchingParser(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/language/parser.js',\n      supportedVersions,\n      (moduleExports: typeof graphqlTypes) => {\n        if (isWrapped(moduleExports.parse)) {\n          this._unwrap(moduleExports, 'parse');\n        }\n        this._wrap(moduleExports, 'parse', this._patchParse());\n        return moduleExports;\n      },\n      (moduleExports: typeof graphqlTypes) => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'parse');\n        }\n      }\n    );\n  }\n\n  private _addPatchingValidate(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/validation/validate.js',\n      supportedVersions,\n      moduleExports => {\n        if (isWrapped(moduleExports.validate)) {\n          this._unwrap(moduleExports, 'validate');\n        }\n        this._wrap(moduleExports, 'validate', this._patchValidate());\n        return moduleExports;\n      },\n      moduleExports => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'validate');\n        }\n      }\n    );\n  }\n\n  private _patchExecute(\n    defaultFieldResolved: graphqlTypes.GraphQLFieldResolver\n  ): (original: executeType) => executeType {\n    const instrumentation = this;\n    return function execute(original) {\n      return function patchExecute(\n        this: executeType\n      ): PromiseOrValue {\n        let processedArgs: OtelExecutionArgs;\n\n        // case when apollo server is used for example\n        if (arguments.length >= 2) {\n          const args = arguments as unknown as executeArgumentsArray;\n          processedArgs = instrumentation._wrapExecuteArgs(\n            args[0],\n            args[1],\n            args[2],\n            args[3],\n            args[4],\n            args[5],\n            args[6],\n            args[7],\n            defaultFieldResolved\n          );\n        } else {\n          const args = arguments[0] as graphqlTypes.ExecutionArgs;\n          processedArgs = instrumentation._wrapExecuteArgs(\n            args.schema,\n            args.document,\n            args.rootValue,\n            args.contextValue,\n            args.variableValues,\n            args.operationName,\n            args.fieldResolver,\n            args.typeResolver,\n            defaultFieldResolved\n          );\n        }\n\n        const operation = getOperation(\n          processedArgs.document,\n          processedArgs.operationName\n        );\n\n        const span = instrumentation._createExecuteSpan(\n          operation,\n          processedArgs\n        );\n\n        processedArgs.contextValue[OTEL_GRAPHQL_DATA_SYMBOL] = {\n          source: processedArgs.document\n            ? processedArgs.document ||\n              (processedArgs.document as ObjectWithGraphQLData)[\n                OTEL_GRAPHQL_DATA_SYMBOL\n              ]\n            : undefined,\n          span,\n          fields: {},\n        };\n\n        return context.with(trace.setSpan(context.active(), span), () => {\n          return safeExecuteInTheMiddle<\n            PromiseOrValue\n          >(\n            () => {\n              return (original as executeFunctionWithObj).apply(this, [\n                processedArgs,\n              ]);\n            },\n            (err, result) => {\n              instrumentation._handleExecutionResult(span, err, result);\n            }\n          );\n        });\n      };\n    };\n  }\n\n  private _handleExecutionResult(\n    span: api.Span,\n    err?: Error,\n    result?: PromiseOrValue\n  ) {\n    const config = this.getConfig();\n    if (result === undefined || err) {\n      endSpan(span, err);\n      return;\n    }\n\n    if (isPromise(result)) {\n      (result as Promise).then(\n        resultData => {\n          if (typeof config.responseHook !== 'function') {\n            endSpan(span);\n            return;\n          }\n          this._executeResponseHook(span, resultData);\n        },\n        error => {\n          endSpan(span, error);\n        }\n      );\n    } else {\n      if (typeof config.responseHook !== 'function') {\n        endSpan(span);\n        return;\n      }\n      this._executeResponseHook(span, result as graphqlTypes.ExecutionResult);\n    }\n  }\n\n  private _executeResponseHook(\n    span: api.Span,\n    result: graphqlTypes.ExecutionResult\n  ) {\n    const { responseHook } = this.getConfig();\n    if (!responseHook) {\n      return;\n    }\n\n    safeExecuteInTheMiddle(\n      () => {\n        responseHook(span, result);\n      },\n      err => {\n        if (err) {\n          this._diag.error('Error running response hook', err);\n        }\n\n        endSpan(span, undefined);\n      },\n      true\n    );\n  }\n\n  private _patchParse(): (original: parseType) => parseType {\n    const instrumentation = this;\n    return function parse(original) {\n      return function patchParse(\n        this: parseType,\n        source: string | graphqlTypes.Source,\n        options?: graphqlTypes.ParseOptions\n      ): graphqlTypes.DocumentNode {\n        return instrumentation._parse(this, original, source, options);\n      };\n    };\n  }\n\n  private _patchValidate(): (original: validateType) => validateType {\n    const instrumentation = this;\n    return function validate(original: validateType) {\n      return function patchValidate(\n        this: validateType,\n        schema: graphqlTypes.GraphQLSchema,\n        documentAST: graphqlTypes.DocumentNode,\n        rules?: ReadonlyArray,\n        options?: { maxErrors?: number },\n        typeInfo?: graphqlTypes.TypeInfo\n      ): ReadonlyArray {\n        return instrumentation._validate(\n          this,\n          original,\n          schema,\n          documentAST,\n          rules,\n          typeInfo,\n          options\n        );\n      };\n    };\n  }\n\n  private _parse(\n    obj: parseType,\n    original: parseType,\n    source: string | graphqlTypes.Source,\n    options?: graphqlTypes.ParseOptions\n  ): graphqlTypes.DocumentNode {\n    const config = this.getConfig();\n    const span = this.tracer.startSpan(SpanNames.PARSE);\n\n    return context.with(trace.setSpan(context.active(), span), () => {\n      return safeExecuteInTheMiddle<\n        graphqlTypes.DocumentNode & ObjectWithGraphQLData\n      >(\n        () => {\n          return original.call(obj, source, options);\n        },\n        (err, result) => {\n          if (result) {\n            const operation = getOperation(result);\n            if (!operation) {\n              span.updateName(SpanNames.SCHEMA_PARSE);\n            } else if (result.loc) {\n              addSpanSource(span, result.loc, config.allowValues);\n            }\n          }\n          endSpan(span, err);\n        }\n      );\n    });\n  }\n\n  private _validate(\n    obj: validateType,\n    original: validateType,\n    schema: graphqlTypes.GraphQLSchema,\n    documentAST: graphqlTypes.DocumentNode,\n    rules?: ReadonlyArray,\n    typeInfo?: graphqlTypes.TypeInfo,\n    options?: { maxErrors?: number }\n  ): ReadonlyArray {\n    const span = this.tracer.startSpan(SpanNames.VALIDATE, {});\n\n    return context.with(trace.setSpan(context.active(), span), () => {\n      return safeExecuteInTheMiddle>(\n        () => {\n          return original.call(\n            obj,\n            schema,\n            documentAST,\n            rules,\n            options,\n            typeInfo\n          );\n        },\n        (err, errors) => {\n          if (!documentAST.loc) {\n            span.updateName(SpanNames.SCHEMA_VALIDATE);\n          }\n          if (errors && errors.length) {\n            span.recordException({\n              name: AttributeNames.ERROR_VALIDATION_NAME,\n              message: JSON.stringify(errors),\n            });\n          }\n          endSpan(span, err);\n        }\n      );\n    });\n  }\n\n  private _createExecuteSpan(\n    operation: graphqlTypes.DefinitionNode | undefined,\n    processedArgs: graphqlTypes.ExecutionArgs\n  ): api.Span {\n    const config = this.getConfig();\n\n    const span = this.tracer.startSpan(SpanNames.EXECUTE, {});\n    if (operation) {\n      const { operation: operationType, name: nameNode } =\n        operation as graphqlTypes.OperationDefinitionNode;\n\n      span.setAttribute(AttributeNames.OPERATION_TYPE, operationType);\n\n      const operationName = nameNode?.value;\n\n      // https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/graphql/\n      // > The span name MUST be of the format   provided that graphql.operation.type and graphql.operation.name are available.\n      // > If graphql.operation.name is not available, the span SHOULD be named .\n      if (operationName) {\n        span.setAttribute(AttributeNames.OPERATION_NAME, operationName);\n        span.updateName(`${operationType} ${operationName}`);\n      } else {\n        span.updateName(operationType);\n      }\n    } else {\n      let operationName = ' ';\n      if (processedArgs.operationName) {\n        operationName = ` \"${processedArgs.operationName}\" `;\n      }\n      operationName = OPERATION_NOT_SUPPORTED.replace(\n        '$operationName$',\n        operationName\n      );\n      span.setAttribute(AttributeNames.OPERATION_NAME, operationName);\n    }\n\n    if (processedArgs.document?.loc) {\n      addSpanSource(span, processedArgs.document.loc, config.allowValues);\n    }\n\n    if (processedArgs.variableValues && config.allowValues) {\n      addInputVariableAttributes(span, processedArgs.variableValues);\n    }\n\n    return span;\n  }\n\n  private _wrapExecuteArgs(\n    schema: graphqlTypes.GraphQLSchema,\n    document: graphqlTypes.DocumentNode,\n    rootValue: any,\n    contextValue: any,\n    variableValues: Maybe<{ [key: string]: any }>,\n    operationName: Maybe,\n    fieldResolver: Maybe>,\n    typeResolver: Maybe>,\n    defaultFieldResolved: graphqlTypes.GraphQLFieldResolver\n  ): OtelExecutionArgs {\n    if (!contextValue) {\n      contextValue = {};\n    }\n\n    if (\n      contextValue[OTEL_GRAPHQL_DATA_SYMBOL] ||\n      this.getConfig().ignoreResolveSpans\n    ) {\n      return {\n        schema,\n        document,\n        rootValue,\n        contextValue,\n        variableValues,\n        operationName,\n        fieldResolver,\n        typeResolver,\n      };\n    }\n\n    const isUsingDefaultResolver = fieldResolver == null;\n    // follows graphql implementation here:\n    // https://github.com/graphql/graphql-js/blob/0b7daed9811731362c71900e12e5ea0d1ecc7f1f/src/execution/execute.ts#L494\n    const fieldResolverForExecute = fieldResolver ?? defaultFieldResolved;\n    fieldResolver = wrapFieldResolver(\n      this.tracer,\n      () => this.getConfig(),\n      fieldResolverForExecute,\n      isUsingDefaultResolver\n    );\n\n    if (schema) {\n      wrapFields(schema.getQueryType(), this.tracer, () => this.getConfig());\n      wrapFields(schema.getMutationType(), this.tracer, () => this.getConfig());\n    }\n\n    return {\n      schema,\n      document,\n      rootValue,\n      contextValue,\n      variableValues,\n      operationName,\n      fieldResolver,\n      typeResolver,\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { GraphQLInstrumentation } from './instrumentation';\nexport type {\n  GraphQLInstrumentationConfig,\n  GraphQLInstrumentationExecutionResponseHook,\n  GraphQLInstrumentationParsedConfig,\n} from './types';\n","import type { AttributeValue } from '@opentelemetry/api';\nimport { SpanStatusCode } from '@opentelemetry/api';\nimport { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, getRootSpan, spanToJSON } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '@sentry/opentelemetry';\n\ninterface GraphqlOptions {\n  /**\n   * Do not create spans for resolvers.\n   *\n   * Defaults to true.\n   */\n  ignoreResolveSpans?: boolean;\n\n  /**\n   * Don't create spans for the execution of the default resolver on object properties.\n   *\n   * When a resolver function is not defined on the schema for a field, graphql will\n   * use the default resolver which just looks for a property with that name on the object.\n   * If the property is not a function, it's not very interesting to trace.\n   * This option can reduce noise and number of spans created.\n   *\n   * Defaults to true.\n   */\n  ignoreTrivialResolveSpans?: boolean;\n\n  /**\n   * If this is enabled, a http.server root span containing this span will automatically be renamed to include the operation name.\n   * Set this to `false` if you do not want this behavior, and want to keep the default http.server span name.\n   *\n   * Defaults to true.\n   */\n  useOperationNameForRootSpan?: boolean;\n}\n\nconst INTEGRATION_NAME = 'Graphql';\n\nexport const instrumentGraphql = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  GraphQLInstrumentation,\n  (_options: GraphqlOptions) => {\n    const options = getOptionsWithDefaults(_options);\n\n    return {\n      ...options,\n      responseHook(span, result) {\n        addOriginToSpan(span, 'auto.graphql.otel.graphql');\n\n        // We want to ensure spans are marked as errored if there are errors in the result\n        // We only do that if the span is not already marked with a status\n        const resultWithMaybeError = result as { errors?: { message: string }[] };\n        if (resultWithMaybeError.errors?.length && !spanToJSON(span).status) {\n          span.setStatus({ code: SpanStatusCode.ERROR });\n        }\n\n        const attributes = spanToJSON(span).data;\n\n        // If operation.name is not set, we fall back to use operation.type only\n        const operationType = attributes['graphql.operation.type'];\n        const operationName = attributes['graphql.operation.name'];\n\n        if (options.useOperationNameForRootSpan && operationType) {\n          const rootSpan = getRootSpan(span);\n          const rootSpanAttributes = spanToJSON(rootSpan).data;\n\n          const existingOperations = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION] || [];\n\n          const newOperation = operationName ? `${operationType} ${operationName}` : `${operationType}`;\n\n          // We keep track of each operation on the root span\n          // This can either be a string, or an array of strings (if there are multiple operations)\n          if (Array.isArray(existingOperations)) {\n            (existingOperations as string[]).push(newOperation);\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, existingOperations);\n          } else if (typeof existingOperations === 'string') {\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, [existingOperations, newOperation]);\n          } else {\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, newOperation);\n          }\n\n          if (!spanToJSON(rootSpan).data['original-description']) {\n            rootSpan.setAttribute('original-description', spanToJSON(rootSpan).description);\n          }\n          // Important for e.g. @sentry/aws-serverless because this would otherwise overwrite the name again\n          rootSpan.updateName(\n            `${spanToJSON(rootSpan).data['original-description']} (${getGraphqlOperationNamesFromAttribute(\n              existingOperations,\n            )})`,\n          );\n        }\n      },\n    };\n  },\n);\n\nconst _graphqlIntegration = ((options: GraphqlOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      // We set defaults here, too, because otherwise we'd update the instrumentation config\n      // to the config without defaults, as `generateInstrumentOnce` automatically calls `setConfig(options)`\n      // when being called the second time\n      instrumentGraphql(getOptionsWithDefaults(options));\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [graphql](https://www.npmjs.com/package/graphql) library.\n *\n * For more information, see the [`graphqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/graphql/).\n *\n * @param {GraphqlOptions} options Configuration options for the GraphQL integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.graphqlIntegration()],\n * });\n */\nexport const graphqlIntegration = defineIntegration(_graphqlIntegration);\n\nfunction getOptionsWithDefaults(options?: GraphqlOptions): GraphqlOptions {\n  return {\n    ignoreResolveSpans: true,\n    ignoreTrivialResolveSpans: true,\n    useOperationNameForRootSpan: true,\n    ...options,\n  };\n}\n\n// copy from packages/opentelemetry/utils\nfunction getGraphqlOperationNamesFromAttribute(attr: AttributeValue): string {\n  if (Array.isArray(attr)) {\n    // oxlint-disable-next-line typescript/require-array-sort-compare\n    const sorted = attr.slice().sort();\n\n    // Up to 5 items, we just add all of them\n    if (sorted.length <= 5) {\n      return sorted.join(', ');\n    } else {\n      // Else, we add the first 5 and the diff of other operations\n      return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n    }\n  }\n\n  return `${attr}`;\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nimport type * as KafkaJSTypes from 'kafkajs';\n\nexport const EVENT_LISTENERS_SET = Symbol(\n  'opentelemetry.instrumentation.kafkajs.eventListenersSet'\n);\n\nexport interface ConsumerExtended extends KafkaJSTypes.Consumer {\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n\nexport interface ProducerExtended extends KafkaJSTypes.Producer {\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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 */\nimport { TextMapGetter } from '@opentelemetry/api';\n\n/*\nsame as open telemetry's `defaultTextMapGetter`,\nbut also handle case where header is buffer,\nadding toString() to make sure string is returned\n*/\nexport const bufferTextMapGetter: TextMapGetter = {\n  get(carrier, key) {\n    if (!carrier) {\n      return undefined;\n    }\n\n    const keys = Object.keys(carrier);\n\n    for (const carrierKey of keys) {\n      if (carrierKey === key || carrierKey.toLowerCase() === key) {\n        return carrier[carrierKey]?.toString();\n      }\n    }\n\n    return undefined;\n  },\n\n  keys(carrier) {\n    return carrier ? Object.keys(carrier) : [];\n  },\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The number of messages sent, received, or processed in the scope of the batching operation.\n *\n * @example 0\n * @example 1\n * @example 2\n *\n * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_BATCH_MESSAGE_COUNT =\n  'messaging.batch.message_count' as const;\n\n/**\n * The message destination name\n *\n * @example MyQueue\n * @example MyTopic\n *\n * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If\n * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_NAME =\n  'messaging.destination.name' as const;\n\n/**\n * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`.\n *\n * @example \"1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_PARTITION_ID =\n  'messaging.destination.partition.id' as const;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message.id` in that they're not unique. If the key is `null`, the attribute **MUST NOT** be set.\n *\n * @example \"myKey\"\n *\n * @note If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_KEY =\n  'messaging.kafka.message.key' as const;\n\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE =\n  'messaging.kafka.message.tombstone' as const;\n\n/**\n * The offset of a record in the corresponding Kafka partition.\n *\n * @example 42\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset' as const;\n\n/**\n * The system-specific name of the messaging operation.\n *\n * @example ack\n * @example nack\n * @example send\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_OPERATION_NAME =\n  'messaging.operation.name' as const;\n\n/**\n * A string identifying the type of the messaging operation.\n *\n * @note If a custom value is used, it **MUST** be of low cardinality.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_OPERATION_TYPE =\n  'messaging.operation.type' as const;\n\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = 'process' as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = 'receive' as const;\n\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SEND = 'send' as const;\n\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_KAFKA = 'kafka' as const;\n\n/**\n * Number of messages that were delivered to the application.\n *\n * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios.\n * The metric **SHOULD** be reported once per message delivery. For example, if receiving and processing operations are both instrumented for a single message delivery, this counter is incremented when the message is received and not reported when it is processed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES =\n  'messaging.client.consumed.messages' as const;\n\n/**\n * Duration of messaging operation initiated by a producer or consumer client.\n *\n * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_OPERATION_DURATION =\n  'messaging.client.operation.duration' as const;\n\n/**\n * Number of messages producer attempted to send to the broker.\n *\n * @note This metric **MUST NOT** count messages that were created but haven't yet been sent.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_SENT_MESSAGES =\n  'messaging.client.sent.messages' as const;\n\n/**\n * Duration of processing operation.\n *\n * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_PROCESS_DURATION =\n  'messaging.process.duration' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.23.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-kafkajs';\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nimport {\n  Attributes,\n  Context,\n  context,\n  Counter,\n  Histogram,\n  Link,\n  propagation,\n  ROOT_CONTEXT,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  trace,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  ERROR_TYPE_VALUE_OTHER,\n} from '@opentelemetry/semantic-conventions';\nimport type * as kafkaJs from 'kafkajs';\nimport type {\n  Consumer,\n  ConsumerRunConfig,\n  EachBatchHandler,\n  EachMessageHandler,\n  KafkaMessage,\n  Message,\n  Producer,\n  RecordMetadata,\n} from 'kafkajs';\nimport { EVENT_LISTENERS_SET } from './internal-types';\nimport { bufferTextMapGetter } from './propagator';\nimport {\n  ATTR_MESSAGING_BATCH_MESSAGE_COUNT,\n  ATTR_MESSAGING_DESTINATION_NAME,\n  ATTR_MESSAGING_DESTINATION_PARTITION_ID,\n  ATTR_MESSAGING_KAFKA_MESSAGE_KEY,\n  ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE,\n  ATTR_MESSAGING_KAFKA_OFFSET,\n  ATTR_MESSAGING_OPERATION_NAME,\n  ATTR_MESSAGING_OPERATION_TYPE,\n  ATTR_MESSAGING_SYSTEM,\n  MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n  MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n  MESSAGING_OPERATION_TYPE_VALUE_SEND,\n  MESSAGING_SYSTEM_VALUE_KAFKA,\n  METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES,\n  METRIC_MESSAGING_CLIENT_OPERATION_DURATION,\n  METRIC_MESSAGING_CLIENT_SENT_MESSAGES,\n  METRIC_MESSAGING_PROCESS_DURATION,\n} from './semconv';\nimport { KafkaJsInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\ninterface ConsumerSpanOptions {\n  topic: string;\n  message: KafkaMessage | undefined;\n  operationType: string;\n  attributes: Attributes;\n  ctx?: Context | undefined;\n  link?: Link;\n}\n// This interface acts as a strict subset of the KafkaJS Consumer and\n// Producer interfaces (just for the event we're needing)\ninterface KafkaEventEmitter {\n  on(\n    eventName:\n      | kafkaJs.ConsumerEvents['REQUEST']\n      | kafkaJs.ProducerEvents['REQUEST'],\n    listener: (event: kafkaJs.RequestEvent) => void\n  ): void;\n  events: {\n    REQUEST:\n      | kafkaJs.ConsumerEvents['REQUEST']\n      | kafkaJs.ProducerEvents['REQUEST'];\n  };\n  [EVENT_LISTENERS_SET]?: boolean;\n}\n\ninterface StandardAttributes extends Attributes {\n  [ATTR_MESSAGING_SYSTEM]: string;\n  [ATTR_MESSAGING_OPERATION_NAME]: OP;\n  [ATTR_ERROR_TYPE]?: string;\n}\ninterface TopicAttributes {\n  [ATTR_MESSAGING_DESTINATION_NAME]: string;\n  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]?: string;\n}\n\ninterface ClientDurationAttributes\n  extends StandardAttributes,\n    Partial {\n  [ATTR_SERVER_ADDRESS]: string;\n  [ATTR_SERVER_PORT]: number;\n  [ATTR_MESSAGING_OPERATION_TYPE]?: string;\n}\ninterface SentMessagesAttributes\n  extends StandardAttributes<'send'>,\n    TopicAttributes {\n  [ATTR_ERROR_TYPE]?: string;\n}\ntype ConsumedMessagesAttributes = StandardAttributes<'receive' | 'process'>;\ninterface MessageProcessDurationAttributes\n  extends StandardAttributes<'process'>,\n    TopicAttributes {\n  [ATTR_MESSAGING_SYSTEM]: string;\n  [ATTR_MESSAGING_OPERATION_NAME]: 'process';\n  [ATTR_ERROR_TYPE]?: string;\n}\ntype RecordPendingMetric = (errorType?: string | undefined) => void;\n\nfunction prepareCounter(\n  meter: Counter,\n  value: number,\n  attributes: T\n): RecordPendingMetric {\n  return (errorType?: string | undefined) => {\n    meter.add(value, {\n      ...attributes,\n      ...(errorType ? { [ATTR_ERROR_TYPE]: errorType } : {}),\n    });\n  };\n}\n\nfunction prepareDurationHistogram(\n  meter: Histogram,\n  value: number,\n  attributes: T\n): RecordPendingMetric {\n  return (errorType?: string | undefined) => {\n    meter.record((Date.now() - value) / 1000, {\n      ...attributes,\n      ...(errorType ? { [ATTR_ERROR_TYPE]: errorType } : {}),\n    });\n  };\n}\n\nconst HISTOGRAM_BUCKET_BOUNDARIES = [\n  0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,\n];\nexport class KafkaJsInstrumentation extends InstrumentationBase {\n  declare private _clientDuration: Histogram;\n  declare private _sentMessages: Counter;\n  declare private _consumedMessages: Counter;\n  declare private _processDuration: Histogram;\n\n  constructor(config: KafkaJsInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  override _updateMetricInstruments() {\n    this._clientDuration = this.meter.createHistogram(\n      METRIC_MESSAGING_CLIENT_OPERATION_DURATION,\n      { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }\n    );\n    this._sentMessages = this.meter.createCounter(\n      METRIC_MESSAGING_CLIENT_SENT_MESSAGES\n    );\n    this._consumedMessages = this.meter.createCounter(\n      METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES\n    );\n    this._processDuration = this.meter.createHistogram(\n      METRIC_MESSAGING_PROCESS_DURATION,\n      { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }\n    );\n  }\n\n  protected init() {\n    const unpatch = (moduleExports: typeof kafkaJs) => {\n      if (isWrapped(moduleExports?.Kafka?.prototype.producer)) {\n        this._unwrap(moduleExports.Kafka.prototype, 'producer');\n      }\n      if (isWrapped(moduleExports?.Kafka?.prototype.consumer)) {\n        this._unwrap(moduleExports.Kafka.prototype, 'consumer');\n      }\n    };\n\n    const module = new InstrumentationNodeModuleDefinition(\n      'kafkajs',\n      ['>=0.3.0 <3'],\n      (moduleExports: typeof kafkaJs) => {\n        unpatch(moduleExports);\n        this._wrap(\n          moduleExports?.Kafka?.prototype,\n          'producer',\n          this._getProducerPatch()\n        );\n        this._wrap(\n          moduleExports?.Kafka?.prototype,\n          'consumer',\n          this._getConsumerPatch()\n        );\n\n        return moduleExports;\n      },\n      unpatch\n    );\n    return module;\n  }\n\n  private _getConsumerPatch() {\n    const instrumentation = this;\n    return (original: kafkaJs.Kafka['consumer']) => {\n      return function consumer(\n        this: kafkaJs.Kafka,\n        ...args: Parameters\n      ) {\n        const newConsumer: Consumer = original.apply(this, args);\n\n        if (isWrapped(newConsumer.run)) {\n          instrumentation._unwrap(newConsumer, 'run');\n        }\n\n        instrumentation._wrap(\n          newConsumer,\n          'run',\n          instrumentation._getConsumerRunPatch()\n        );\n\n        instrumentation._setKafkaEventListeners(newConsumer);\n\n        return newConsumer;\n      };\n    };\n  }\n\n  private _setKafkaEventListeners(kafkaObj: KafkaEventEmitter) {\n    if (kafkaObj[EVENT_LISTENERS_SET]) return;\n\n    // The REQUEST Consumer event was added in kafkajs@1.5.0.\n    if (kafkaObj.events?.REQUEST) {\n      kafkaObj.on(\n        kafkaObj.events.REQUEST,\n        this._recordClientDurationMetric.bind(this)\n      );\n    }\n\n    kafkaObj[EVENT_LISTENERS_SET] = true;\n  }\n\n  private _recordClientDurationMetric(\n    event: Pick\n  ) {\n    const [address, port] = event.payload.broker.split(':');\n    this._clientDuration.record(event.payload.duration / 1000, {\n      [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n      [ATTR_MESSAGING_OPERATION_NAME]: `${event.payload.apiName}`, // potentially suffix with @v${event.payload.apiVersion}?\n      [ATTR_SERVER_ADDRESS]: address,\n      [ATTR_SERVER_PORT]: Number.parseInt(port, 10),\n    });\n  }\n\n  private _getProducerPatch() {\n    const instrumentation = this;\n    return (original: kafkaJs.Kafka['producer']) => {\n      return function consumer(\n        this: kafkaJs.Kafka,\n        ...args: Parameters\n      ) {\n        const newProducer: Producer = original.apply(this, args);\n\n        if (isWrapped(newProducer.sendBatch)) {\n          instrumentation._unwrap(newProducer, 'sendBatch');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'sendBatch',\n          instrumentation._getSendBatchPatch()\n        );\n\n        if (isWrapped(newProducer.send)) {\n          instrumentation._unwrap(newProducer, 'send');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'send',\n          instrumentation._getSendPatch()\n        );\n\n        if (isWrapped(newProducer.transaction)) {\n          instrumentation._unwrap(newProducer, 'transaction');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'transaction',\n          instrumentation._getProducerTransactionPatch()\n        );\n\n        instrumentation._setKafkaEventListeners(newProducer);\n\n        return newProducer;\n      };\n    };\n  }\n\n  private _getConsumerRunPatch() {\n    const instrumentation = this;\n    return (original: Consumer['run']) => {\n      return function run(\n        this: Consumer,\n        ...args: Parameters\n      ): ReturnType {\n        const config = args[0];\n        if (config?.eachMessage) {\n          if (isWrapped(config.eachMessage)) {\n            instrumentation._unwrap(config, 'eachMessage');\n          }\n          instrumentation._wrap(\n            config,\n            'eachMessage',\n            instrumentation._getConsumerEachMessagePatch()\n          );\n        }\n        if (config?.eachBatch) {\n          if (isWrapped(config.eachBatch)) {\n            instrumentation._unwrap(config, 'eachBatch');\n          }\n          instrumentation._wrap(\n            config,\n            'eachBatch',\n            instrumentation._getConsumerEachBatchPatch()\n          );\n        }\n        return original.call(this, config);\n      };\n    };\n  }\n\n  private _getConsumerEachMessagePatch() {\n    const instrumentation = this;\n    return (original: ConsumerRunConfig['eachMessage']) => {\n      return function eachMessage(\n        this: unknown,\n        ...args: Parameters\n      ): Promise {\n        const payload = args[0];\n        const propagatedContext: Context = propagation.extract(\n          ROOT_CONTEXT,\n          payload.message.headers,\n          bufferTextMapGetter\n        );\n        const span = instrumentation._startConsumerSpan({\n          topic: payload.topic,\n          message: payload.message,\n          operationType: MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n          ctx: propagatedContext,\n          attributes: {\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.partition\n            ),\n          },\n        });\n\n        const pendingMetrics: RecordPendingMetric[] = [\n          prepareDurationHistogram(\n            instrumentation._processDuration,\n            Date.now(),\n            {\n              [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n              [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n              [ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n              [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                payload.partition\n              ),\n            }\n          ),\n          prepareCounter(instrumentation._consumedMessages, 1, {\n            [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n            [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n            [ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.partition\n            ),\n          }),\n        ];\n\n        const eachMessagePromise = context.with(\n          trace.setSpan(propagatedContext, span),\n          () => {\n            return original!.apply(this, args);\n          }\n        );\n        return instrumentation._endSpansOnPromise(\n          [span],\n          pendingMetrics,\n          eachMessagePromise\n        );\n      };\n    };\n  }\n\n  private _getConsumerEachBatchPatch() {\n    return (original: ConsumerRunConfig['eachBatch']) => {\n      const instrumentation = this;\n      return function eachBatch(\n        this: unknown,\n        ...args: Parameters\n      ): Promise {\n        const payload = args[0];\n        // https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#topic-with-multiple-consumers\n        const receivingSpan = instrumentation._startConsumerSpan({\n          topic: payload.batch.topic,\n          message: undefined,\n          operationType: MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n          ctx: ROOT_CONTEXT,\n          attributes: {\n            [ATTR_MESSAGING_BATCH_MESSAGE_COUNT]: payload.batch.messages.length,\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.batch.partition\n            ),\n          },\n        });\n        return context.with(\n          trace.setSpan(context.active(), receivingSpan),\n          () => {\n            const startTime = Date.now();\n            const spans: Span[] = [];\n            const pendingMetrics: RecordPendingMetric[] = [\n              prepareCounter(\n                instrumentation._consumedMessages,\n                payload.batch.messages.length,\n                {\n                  [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                  [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                  [ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                    payload.batch.partition\n                  ),\n                }\n              ),\n            ];\n            payload.batch.messages.forEach(message => {\n              const propagatedContext: Context = propagation.extract(\n                ROOT_CONTEXT,\n                message.headers,\n                bufferTextMapGetter\n              );\n              const spanContext = trace\n                .getSpan(propagatedContext)\n                ?.spanContext();\n              let origSpanLink: Link | undefined;\n              if (spanContext) {\n                origSpanLink = {\n                  context: spanContext,\n                };\n              }\n              spans.push(\n                instrumentation._startConsumerSpan({\n                  topic: payload.batch.topic,\n                  message,\n                  operationType: MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n                  link: origSpanLink,\n                  attributes: {\n                    [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                      payload.batch.partition\n                    ),\n                  },\n                })\n              );\n              pendingMetrics.push(\n                prepareDurationHistogram(\n                  instrumentation._processDuration,\n                  startTime,\n                  {\n                    [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                    [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                    [ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                    [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                      payload.batch.partition\n                    ),\n                  }\n                )\n              );\n            });\n            const batchMessagePromise: Promise = original!.apply(\n              this,\n              args\n            );\n            spans.unshift(receivingSpan);\n            return instrumentation._endSpansOnPromise(\n              spans,\n              pendingMetrics,\n              batchMessagePromise\n            );\n          }\n        );\n      };\n    };\n  }\n\n  private _getProducerTransactionPatch() {\n    const instrumentation = this;\n    return (original: Producer['transaction']) => {\n      return function transaction(\n        this: Producer,\n        ...args: Parameters\n      ): ReturnType {\n        const transactionSpan = instrumentation.tracer.startSpan('transaction');\n\n        const transactionPromise = original.apply(this, args);\n\n        transactionPromise\n          .then((transaction: kafkaJs.Transaction) => {\n            const originalSend = transaction.send;\n            transaction.send = function send(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              return context.with(\n                trace.setSpan(context.active(), transactionSpan),\n                () => {\n                  const patched = instrumentation._getSendPatch()(originalSend);\n                  return patched.apply(this, args).catch(err => {\n                    transactionSpan.setStatus({\n                      code: SpanStatusCode.ERROR,\n                      message: err?.message,\n                    });\n                    transactionSpan.recordException(err);\n                    throw err;\n                  });\n                }\n              );\n            };\n\n            const originalSendBatch = transaction.sendBatch;\n            transaction.sendBatch = function sendBatch(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              return context.with(\n                trace.setSpan(context.active(), transactionSpan),\n                () => {\n                  const patched =\n                    instrumentation._getSendBatchPatch()(originalSendBatch);\n                  return patched.apply(this, args).catch(err => {\n                    transactionSpan.setStatus({\n                      code: SpanStatusCode.ERROR,\n                      message: err?.message,\n                    });\n                    transactionSpan.recordException(err);\n                    throw err;\n                  });\n                }\n              );\n            };\n\n            const originalCommit = transaction.commit;\n            transaction.commit = function commit(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              const originCommitPromise = originalCommit\n                .apply(this, args)\n                .then(() => {\n                  transactionSpan.setStatus({ code: SpanStatusCode.OK });\n                });\n              return instrumentation._endSpansOnPromise(\n                [transactionSpan],\n                [],\n                originCommitPromise\n              );\n            };\n\n            const originalAbort = transaction.abort;\n            transaction.abort = function abort(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              const originAbortPromise = originalAbort.apply(this, args);\n              return instrumentation._endSpansOnPromise(\n                [transactionSpan],\n                [],\n                originAbortPromise\n              );\n            };\n          })\n          .catch(err => {\n            transactionSpan.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err?.message,\n            });\n            transactionSpan.recordException(err);\n            transactionSpan.end();\n          });\n\n        return transactionPromise;\n      };\n    };\n  }\n\n  private _getSendBatchPatch() {\n    const instrumentation = this;\n    return (\n      original: Producer['sendBatch'] | kafkaJs.Transaction['sendBatch']\n    ) => {\n      return function sendBatch(\n        this: kafkaJs.Producer | kafkaJs.Transaction,\n        ...args: Parameters\n      ): ReturnType {\n        const batch = args[0];\n        const messages = batch.topicMessages || [];\n\n        const spans: Span[] = [];\n        const pendingMetrics: RecordPendingMetric[] = [];\n\n        messages.forEach(topicMessage => {\n          topicMessage.messages.forEach(message => {\n            spans.push(\n              instrumentation._startProducerSpan(topicMessage.topic, message)\n            );\n            pendingMetrics.push(\n              prepareCounter(instrumentation._sentMessages, 1, {\n                [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                [ATTR_MESSAGING_DESTINATION_NAME]: topicMessage.topic,\n                ...(message.partition !== undefined\n                  ? {\n                      [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                        message.partition\n                      ),\n                    }\n                  : {}),\n              })\n            );\n          });\n        });\n        const origSendResult: Promise = original.apply(\n          this,\n          args\n        );\n        return instrumentation._endSpansOnPromise(\n          spans,\n          pendingMetrics,\n          origSendResult\n        );\n      };\n    };\n  }\n\n  private _getSendPatch() {\n    const instrumentation = this;\n    return (original: Producer['send'] | kafkaJs.Transaction['send']) => {\n      return function send(\n        this: Producer | kafkaJs.Transaction,\n        ...args: Parameters\n      ): ReturnType {\n        const record = args[0];\n        const spans: Span[] = record.messages.map(message => {\n          return instrumentation._startProducerSpan(record.topic, message);\n        });\n\n        const pendingMetrics: RecordPendingMetric[] = record.messages.map(m =>\n          prepareCounter(instrumentation._sentMessages, 1, {\n            [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n            [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n            [ATTR_MESSAGING_DESTINATION_NAME]: record.topic,\n            ...(m.partition !== undefined\n              ? {\n                  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                    m.partition\n                  ),\n                }\n              : {}),\n          })\n        );\n        const origSendResult: Promise = original.apply(\n          this,\n          args\n        );\n        return instrumentation._endSpansOnPromise(\n          spans,\n          pendingMetrics,\n          origSendResult\n        );\n      };\n    };\n  }\n\n  private _endSpansOnPromise(\n    spans: Span[],\n    pendingMetrics: RecordPendingMetric[],\n    sendPromise: Promise\n  ): Promise {\n    return Promise.resolve(sendPromise)\n      .then(result => {\n        pendingMetrics.forEach(m => m());\n        return result;\n      })\n      .catch(reason => {\n        let errorMessage: string | undefined;\n        let errorType: string = ERROR_TYPE_VALUE_OTHER;\n        if (typeof reason === 'string' || reason === undefined) {\n          errorMessage = reason;\n        } else if (\n          typeof reason === 'object' &&\n          Object.prototype.hasOwnProperty.call(reason, 'message')\n        ) {\n          errorMessage = reason.message;\n          errorType = reason.constructor.name;\n        }\n        pendingMetrics.forEach(m => m(errorType));\n\n        spans.forEach(span => {\n          span.setAttribute(ATTR_ERROR_TYPE, errorType);\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: errorMessage,\n          });\n        });\n\n        throw reason;\n      })\n      .finally(() => {\n        spans.forEach(span => span.end());\n      });\n  }\n\n  private _startConsumerSpan({\n    topic,\n    message,\n    operationType,\n    ctx,\n    link,\n    attributes,\n  }: ConsumerSpanOptions) {\n    const operationName =\n      operationType === MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n        ? 'poll' // for batch processing spans\n        : operationType; // for individual message processing spans\n\n    const span = this.tracer.startSpan(\n      `${operationName} ${topic}`,\n      {\n        kind:\n          operationType === MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n            ? SpanKind.CLIENT\n            : SpanKind.CONSUMER,\n        attributes: {\n          ...attributes,\n          [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n          [ATTR_MESSAGING_DESTINATION_NAME]: topic,\n          [ATTR_MESSAGING_OPERATION_TYPE]: operationType,\n          [ATTR_MESSAGING_OPERATION_NAME]: operationName,\n          [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message?.key\n            ? String(message.key)\n            : undefined,\n          [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:\n            message?.key && message.value === null ? true : undefined,\n          [ATTR_MESSAGING_KAFKA_OFFSET]: message?.offset,\n        },\n        links: link ? [link] : [],\n      },\n      ctx\n    );\n\n    const { consumerHook } = this.getConfig();\n    if (consumerHook && message) {\n      safeExecuteInTheMiddle(\n        () => consumerHook(span, { topic, message }),\n        e => {\n          if (e) this._diag.error('consumerHook error', e);\n        },\n        true\n      );\n    }\n\n    return span;\n  }\n\n  private _startProducerSpan(topic: string, message: Message) {\n    const span = this.tracer.startSpan(`send ${topic}`, {\n      kind: SpanKind.PRODUCER,\n      attributes: {\n        [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n        [ATTR_MESSAGING_DESTINATION_NAME]: topic,\n        [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message.key\n          ? String(message.key)\n          : undefined,\n        [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:\n          message.key && message.value === null ? true : undefined,\n        [ATTR_MESSAGING_DESTINATION_PARTITION_ID]:\n          message.partition !== undefined\n            ? String(message.partition)\n            : undefined,\n        [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n        [ATTR_MESSAGING_OPERATION_TYPE]: MESSAGING_OPERATION_TYPE_VALUE_SEND,\n      },\n    });\n\n    message.headers = message.headers ?? {};\n    propagation.inject(trace.setSpan(context.active(), span), message.headers);\n\n    const { producerHook } = this.getConfig();\n    if (producerHook) {\n      safeExecuteInTheMiddle(\n        () => producerHook(span, { topic, message }),\n        e => {\n          if (e) this._diag.error('producerHook error', e);\n        },\n        true\n      );\n    }\n\n    return span;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nexport { KafkaJsInstrumentation } from './instrumentation';\nexport type {\n  KafkaConsumerCustomAttributeFunction,\n  KafkaJsInstrumentationConfig,\n  KafkaProducerCustomAttributeFunction,\n  KafkajsMessage,\n  MessageInfo,\n} from './types';\n","import { KafkaJsInstrumentation } from '@opentelemetry/instrumentation-kafkajs';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Kafka';\n\nexport const instrumentKafka = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new KafkaJsInstrumentation({\n      consumerHook(span) {\n        addOriginToSpan(span, 'auto.kafkajs.otel.consumer');\n      },\n      producerHook(span) {\n        addOriginToSpan(span, 'auto.kafkajs.otel.producer');\n      },\n    }),\n);\n\nconst _kafkaIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentKafka();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [kafkajs](https://www.npmjs.com/package/kafkajs) library.\n *\n * For more information, see the [`kafkaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/kafka/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.kafkaIntegration()],\n * });\n */\nexport const kafkaIntegration = defineIntegration(_kafkaIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.58.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-lru-memoizer';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context } from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nexport class LruMemoizerInstrumentation extends InstrumentationBase {\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'lru-memoizer',\n        ['>=1.3 <4'],\n        moduleExports => {\n          // moduleExports is a function which receives an options object,\n          // and returns a \"memoizer\" function upon invocation.\n          // We want to patch this \"memoizer's\" internal function\n          const asyncMemoizer = function (this: unknown) {\n            // This following function is invoked every time the user wants to get a (possible) memoized value\n            // We replace it with another function in which we bind the current context to the last argument (callback)\n            const origMemoizer = moduleExports.apply(this, arguments);\n            return function (this: unknown) {\n              const modifiedArguments = [...arguments];\n              // last argument is the callback\n              const origCallback = modifiedArguments.pop();\n              const callbackWithContext =\n                typeof origCallback === 'function'\n                  ? context.bind(context.active(), origCallback)\n                  : origCallback;\n              modifiedArguments.push(callbackWithContext);\n              return origMemoizer.apply(this, modifiedArguments);\n            };\n          };\n\n          // sync function preserves context, but we still need to export it\n          // as the lru-memoizer package does\n          asyncMemoizer.sync = moduleExports.sync;\n          return asyncMemoizer;\n        },\n        undefined // no need to disable as this instrumentation does not create any spans\n      ),\n    ];\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { LruMemoizerInstrumentation } from './instrumentation';\n","import { LruMemoizerInstrumentation } from '@opentelemetry/instrumentation-lru-memoizer';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'LruMemoizer';\n\nexport const instrumentLruMemoizer = generateInstrumentOnce(INTEGRATION_NAME, () => new LruMemoizerInstrumentation());\n\nconst _lruMemoizerIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLruMemoizer();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [lru-memoizer](https://www.npmjs.com/package/lru-memoizer) library.\n *\n * For more information, see the [`lruMemoizerIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/lrumemoizer/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.lruMemoizerIntegration()],\n * });\n */\nexport const lruMemoizerIntegration = defineIntegration(_lruMemoizerIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MongoDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MONGODB = 'mongodb' as const;\n\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE =\n  'db.client.connections.usage' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n  (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n  /**\n   * If true, additional information about query parameters and\n   * results will be attached (as `attributes`) to spans representing\n   * database operations.\n   */\n  enhancedDatabaseReporting?: boolean;\n\n  /**\n   * Hook that allows adding custom span attributes based on the data\n   * returned from MongoDB actions.\n   *\n   * @default undefined\n   */\n  responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n  /**\n   * Custom serializer function for the db.statement tag\n   */\n  dbStatementSerializer?: DbStatementSerializer;\n}\n\nexport type Func = (...args: unknown[]) => T;\nexport type MongoInternalCommand = {\n  findandmodify: boolean;\n  createIndexes: boolean;\n  count: boolean;\n  aggregate: boolean;\n  ismaster: boolean;\n  indexes?: unknown[];\n  query?: Record;\n  limit?: number;\n  q?: Record;\n  u?: Record;\n};\n\nexport type ServerSession = {\n  id: any;\n  lastUse: number;\n  txnNumber: number;\n  isDirty: boolean;\n};\n\nexport type CursorState = { cmd: MongoInternalCommand } & Record<\n  string,\n  unknown\n>;\n\nexport interface MongoResponseHookInformation {\n  data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n  result?: unknown;\n  connection?: unknown;\n  message?: unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/wireprotocol/index.js\nexport type WireProtocolInternal = {\n  insert: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  update: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  remove: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  killCursors: (\n    server: MongoInternalTopology,\n    ns: string,\n    cursorState: CursorState,\n    callback: Function\n  ) => unknown;\n  getMore: (\n    server: MongoInternalTopology,\n    ns: string,\n    cursorState: CursorState,\n    batchSize: number,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  query: (\n    server: MongoInternalTopology,\n    ns: string,\n    cmd: MongoInternalCommand,\n    cursorState: CursorState,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  command: (\n    server: MongoInternalTopology,\n    ns: string,\n    cmd: MongoInternalCommand,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/topologies/server.js#L172\n// https://github.com/mongodb/node-mongodb-native/blob/2.2/lib/server.js#L174\nexport type MongoInternalTopology = {\n  s?: {\n    // those are for mongodb@3\n    options?: {\n      host?: string;\n      port?: number;\n      servername?: string;\n    };\n    // those are for mongodb@2\n    host?: string;\n    port?: number;\n  };\n  // mongodb@3 with useUnifiedTopology option\n  description?: {\n    address?: string;\n  };\n};\n\nexport enum MongodbCommandType {\n  CREATE_INDEXES = 'createIndexes',\n  FIND_AND_MODIFY = 'findAndModify',\n  IS_MASTER = 'isMaster',\n  COUNT = 'count',\n  AGGREGATE = 'aggregate',\n  UNKNOWN = 'unknown',\n}\n\n// https://github.com/mongodb/js-bson/blob/main/src/bson.ts\nexport type Document = {\n  [key: string]: any;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/utils.ts#L281\nexport interface MongodbNamespace {\n  db: string;\n  collection?: string;\n}\n\nexport type V4Connection = {\n  command: Function;\n  // From version 6.4.0 the method does not expect a callback and returns a promise\n  // https://github.com/mongodb/node-mongodb-native/blob/v6.4.2/src/cmap/connection.ts\n  commandPromise(\n    ns: MongodbNamespace,\n    cmd: Document,\n    options: undefined | unknown,\n    // From v6.6.0 we have this new param which is a constructor function\n    // https://github.com/mongodb/node-mongodb-native/blob/v6.6.0/src/cmap/connection.ts#L588\n    responseType: undefined | unknown\n  ): Promise;\n  // Earlier versions expect a callback param and return void\n  // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection.ts\n  commandCallback(\n    ns: MongodbNamespace,\n    cmd: Document,\n    options: undefined | unknown,\n    callback: any\n  ): void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection_pool.ts\nexport type V4ConnectionPool = {\n  // Instrumentation just cares about carrying the async context so\n  // types of callback params are not needed\n  checkOut: (callback: (error: any, connection: any) => void) => void;\n};\n\nexport type V4Connect = {\n  connect: Function;\n  // From version 6.4.0 the method does not expect a callback and returns a promise\n  // https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/cmap/connect.ts\n  connectPromise: (options: any) => Promise;\n  // Earlier versions expect a callback param and return void\n  // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connect.ts\n  connectCallback: (options: any, callback: any) => void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/sessions.ts\nexport type V4Session = {\n  acquire: () => ServerSession;\n  release: (session: ServerSession) => void;\n};\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#replacer\n */\nexport type Replacer = (key: string, value: unknown) => unknown;\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.67.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mongodb';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  context,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  UpDownCounter,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_MONGODB_COLLECTION,\n  ATTR_DB_NAME,\n  ATTR_DB_OPERATION,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_NAME_VALUE_MONGODB,\n  DB_SYSTEM_VALUE_MONGODB,\n  METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport { MongoDBInstrumentationConfig, CommandResult } from './types';\nimport {\n  CursorState,\n  ServerSession,\n  MongodbCommandType,\n  MongoInternalCommand,\n  MongodbNamespace,\n  MongoInternalTopology,\n  WireProtocolInternal,\n  V4Connection,\n  V4ConnectionPool,\n  Replacer,\n} from './internal-types';\nimport { V4Connect, V4Session } from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst DEFAULT_CONFIG: MongoDBInstrumentationConfig = {\n  requireParentSpan: true,\n};\n\n/** mongodb instrumentation plugin for OpenTelemetry */\nexport class MongoDBInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n  declare private _connectionsUsage: UpDownCounter;\n  declare private _poolName: string;\n\n  constructor(config: MongoDBInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: MongoDBInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  override _updateMetricInstruments() {\n    this._connectionsUsage = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  /**\n   * Convenience function for updating the `db.client.connections.usage` metric.\n   * The name \"count\" comes from the eventual replacement for this metric per\n   * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n   */\n  private _connCountAdd(n: number, poolName: string, state: string) {\n    this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n  }\n\n  init() {\n    const {\n      v3PatchConnection: v3PatchConnection,\n      v3UnpatchConnection: v3UnpatchConnection,\n    } = this._getV3ConnectionPatches();\n\n    const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n    const {\n      v4PatchConnectionCallback,\n      v4PatchConnectionPromise,\n      v4UnpatchConnection,\n    } = this._getV4ConnectionPatches();\n    const { v4PatchConnectionPool, v4UnpatchConnectionPool } =\n      this._getV4ConnectionPoolPatches();\n    const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mongodb',\n        ['>=3.3.0 <4'],\n        undefined,\n        undefined,\n        [\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/core/wireprotocol/index.js',\n            ['>=3.3.0 <4'],\n            v3PatchConnection,\n            v3UnpatchConnection\n          ),\n        ]\n      ),\n      new InstrumentationNodeModuleDefinition(\n        'mongodb',\n        ['>=4.0.0 <8'],\n        undefined,\n        undefined,\n        [\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection.js',\n            ['>=4.0.0 <6.4'],\n            v4PatchConnectionCallback,\n            v4UnpatchConnection\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection.js',\n            ['>=6.4.0 <8'],\n            v4PatchConnectionPromise,\n            v4UnpatchConnection\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection_pool.js',\n            ['>=4.0.0 <6.4'],\n            v4PatchConnectionPool,\n            v4UnpatchConnectionPool\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connect.js',\n            ['>=4.0.0 <8'],\n            v4PatchConnect,\n            v4UnpatchConnect\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/sessions.js',\n            ['>=4.0.0 <8'],\n            v4PatchSessions,\n            v4UnpatchSessions\n          ),\n        ]\n      ),\n    ];\n  }\n\n  private _getV3ConnectionPatches() {\n    return {\n      v3PatchConnection: (moduleExports: T) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.insert)) {\n          this._unwrap(moduleExports, 'insert');\n        }\n        this._wrap(\n          moduleExports,\n          'insert',\n          this._getV3PatchOperation('insert')\n        );\n        // patch remove operation\n        if (isWrapped(moduleExports.remove)) {\n          this._unwrap(moduleExports, 'remove');\n        }\n        this._wrap(\n          moduleExports,\n          'remove',\n          this._getV3PatchOperation('remove')\n        );\n        // patch update operation\n        if (isWrapped(moduleExports.update)) {\n          this._unwrap(moduleExports, 'update');\n        }\n        this._wrap(\n          moduleExports,\n          'update',\n          this._getV3PatchOperation('update')\n        );\n        // patch other command\n        if (isWrapped(moduleExports.command)) {\n          this._unwrap(moduleExports, 'command');\n        }\n        this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n        // patch query\n        if (isWrapped(moduleExports.query)) {\n          this._unwrap(moduleExports, 'query');\n        }\n        this._wrap(moduleExports, 'query', this._getV3PatchFind());\n        // patch get more operation on cursor\n        if (isWrapped(moduleExports.getMore)) {\n          this._unwrap(moduleExports, 'getMore');\n        }\n        this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n        return moduleExports;\n      },\n      v3UnpatchConnection: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n        this._unwrap(moduleExports, 'insert');\n        this._unwrap(moduleExports, 'remove');\n        this._unwrap(moduleExports, 'update');\n        this._unwrap(moduleExports, 'command');\n        this._unwrap(moduleExports, 'query');\n        this._unwrap(moduleExports, 'getMore');\n      },\n    };\n  }\n\n  private _getV4SessionsPatches() {\n    return {\n      v4PatchSessions: (moduleExports: any) => {\n        if (isWrapped(moduleExports.acquire)) {\n          this._unwrap(moduleExports, 'acquire');\n        }\n        this._wrap(\n          moduleExports.ServerSessionPool.prototype,\n          'acquire',\n          this._getV4AcquireCommand()\n        );\n\n        if (isWrapped(moduleExports.release)) {\n          this._unwrap(moduleExports, 'release');\n        }\n        this._wrap(\n          moduleExports.ServerSessionPool.prototype,\n          'release',\n          this._getV4ReleaseCommand()\n        );\n        return moduleExports;\n      },\n      v4UnpatchSessions: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n        if (isWrapped(moduleExports.acquire)) {\n          this._unwrap(moduleExports, 'acquire');\n        }\n        if (isWrapped(moduleExports.release)) {\n          this._unwrap(moduleExports, 'release');\n        }\n      },\n    };\n  }\n\n  private _getV4AcquireCommand() {\n    const instrumentation = this;\n    return (original: V4Session['acquire']) => {\n      return function patchAcquire(this: any) {\n        const nSessionsBeforeAcquire = this.sessions.length;\n        const session = original.call(this);\n        const nSessionsAfterAcquire = this.sessions.length;\n\n        if (nSessionsBeforeAcquire === nSessionsAfterAcquire) {\n          //no session in the pool. a new session was created and used\n          instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n        } else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) {\n          //a session was already in the pool. remove it from the pool and use it.\n          instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n          instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n        }\n        return session;\n      };\n    };\n  }\n\n  private _getV4ReleaseCommand() {\n    const instrumentation = this;\n    return (original: V4Session['release']) => {\n      return function patchRelease(this: any, session: ServerSession) {\n        const cmdPromise = original.call(this, session);\n\n        instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n        instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n        return cmdPromise;\n      };\n    };\n  }\n\n  private _getV4ConnectionPoolPatches() {\n    return {\n      v4PatchConnectionPool: (moduleExports: any) => {\n        const poolPrototype = moduleExports.ConnectionPool.prototype;\n\n        if (isWrapped(poolPrototype.checkOut)) {\n          this._unwrap(poolPrototype, 'checkOut');\n        }\n\n        this._wrap(\n          poolPrototype,\n          'checkOut',\n          this._getV4ConnectionPoolCheckOut()\n        );\n        return moduleExports;\n      },\n      v4UnpatchConnectionPool: (moduleExports?: any) => {\n        if (moduleExports === undefined) return;\n\n        this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n      },\n    };\n  }\n\n  private _getV4ConnectPatches() {\n    return {\n      v4PatchConnect: (moduleExports: any) => {\n        if (isWrapped(moduleExports.connect)) {\n          this._unwrap(moduleExports, 'connect');\n        }\n\n        this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n        return moduleExports;\n      },\n      v4UnpatchConnect: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n\n        this._unwrap(moduleExports, 'connect');\n      },\n    };\n  }\n\n  // This patch will become unnecessary once\n  // https://jira.mongodb.org/browse/NODE-5639 is done.\n  private _getV4ConnectionPoolCheckOut() {\n    return (original: V4ConnectionPool['checkOut']) => {\n      return function patchedCheckout(this: unknown, callback: any) {\n        const patchedCallback = context.bind(context.active(), callback);\n        return original.call(this, patchedCallback);\n      };\n    };\n  }\n\n  private _getV4ConnectCommand() {\n    const instrumentation = this;\n\n    return (\n      original: V4Connect['connectCallback'] | V4Connect['connectPromise']\n    ) => {\n      return function patchedConnect(\n        this: unknown,\n        options: any,\n        callback: any\n      ) {\n        // from v6.4 `connect` method only accepts an options param and returns a promise\n        // with the connection\n        if (original.length === 1) {\n          const result = (original as V4Connect['connectPromise']).call(\n            this,\n            options\n          );\n          if (result && typeof result.then === 'function') {\n            result.then(\n              () => instrumentation.setPoolName(options),\n              // this handler is set to pass the lint rules\n              () => undefined\n            );\n          }\n          return result;\n        }\n\n        // Earlier versions expects a callback param and return void\n        const patchedCallback = function (err: any, conn: any) {\n          if (err || !conn) {\n            callback(err, conn);\n            return;\n          }\n          instrumentation.setPoolName(options);\n          callback(err, conn);\n        };\n\n        return (original as V4Connect['connectCallback']).call(\n          this,\n          options,\n          patchedCallback\n        );\n      };\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  private _getV4ConnectionPatches() {\n    return {\n      v4PatchConnectionCallback: (moduleExports: any) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.Connection.prototype.command)) {\n          this._unwrap(moduleExports.Connection.prototype, 'command');\n        }\n\n        this._wrap(\n          moduleExports.Connection.prototype,\n          'command',\n          this._getV4PatchCommandCallback()\n        );\n        return moduleExports;\n      },\n      v4PatchConnectionPromise: (moduleExports: any) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.Connection.prototype.command)) {\n          this._unwrap(moduleExports.Connection.prototype, 'command');\n        }\n\n        this._wrap(\n          moduleExports.Connection.prototype,\n          'command',\n          this._getV4PatchCommandPromise()\n        );\n        return moduleExports;\n      },\n      v4UnpatchConnection: (moduleExports?: any) => {\n        if (moduleExports === undefined) return;\n        this._unwrap(moduleExports.Connection.prototype, 'command');\n      },\n    };\n  }\n\n  /** Creates spans for common operations */\n  private _getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n    const instrumentation = this;\n    return (original: WireProtocolInternal[typeof operationName]) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        ops: unknown[],\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof ops !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, ops, options);\n          } else {\n            return original.call(this, server, ns, ops, options, callback);\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          ops[0] as any,\n          operationName\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(this, server, ns, ops, patchedCallback);\n        } else {\n          return original.call(this, server, ns, ops, options, patchedCallback);\n        }\n      };\n    };\n  }\n\n  /** Creates spans for command operation */\n  private _getV3PatchCommand() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['command']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cmd: MongoInternalCommand,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof cmd !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, cmd, options);\n          } else {\n            return original.call(this, server, ns, cmd, options, callback);\n          }\n        }\n\n        const commandType = MongoDBInstrumentation._getCommandType(cmd);\n        const operationName =\n          commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cmd,\n          operationName\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(this, server, ns, cmd, patchedCallback);\n        } else {\n          return original.call(this, server, ns, cmd, options, patchedCallback);\n        }\n      };\n    };\n  }\n\n  /** Creates spans for command operation */\n  private _getV4PatchCommandCallback() {\n    const instrumentation = this;\n    return (original: V4Connection['commandCallback']) => {\n      return function patchedV4ServerCommand(\n        this: any,\n        ns: MongodbNamespace,\n        cmd: any,\n        options: undefined | unknown,\n        callback: any\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n        const resultHandler = callback;\n        const commandType = Object.keys(cmd)[0];\n\n        if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n          return original.call(this, ns, cmd, options, callback);\n        }\n\n        let span = undefined;\n        if (!skipInstrumentation) {\n          const attributes = instrumentation._getV4SpanAttributes(\n            this,\n            ns,\n            cmd,\n            commandType\n          );\n          const spanName = instrumentation._spanNameFromAttrs(attributes);\n          span = instrumentation.tracer.startSpan(spanName, {\n            kind: SpanKind.CLIENT,\n            attributes,\n          });\n        }\n        const patchedCallback = instrumentation._patchEnd(\n          span,\n          resultHandler,\n          this.id,\n          commandType\n        );\n\n        return original.call(this, ns, cmd, options, patchedCallback);\n      };\n    };\n  }\n\n  private _getV4PatchCommandPromise() {\n    const instrumentation = this;\n    return (original: V4Connection['commandPromise']) => {\n      return function patchedV4ServerCommand(\n        this: any,\n        ...args: Parameters\n      ) {\n        const [ns, cmd] = args;\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const commandType = Object.keys(cmd)[0];\n        const resultHandler = () => undefined;\n\n        if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n          return original.apply(this, args);\n        }\n\n        let span = undefined;\n        if (!skipInstrumentation) {\n          const attributes = instrumentation._getV4SpanAttributes(\n            this,\n            ns,\n            cmd,\n            commandType\n          );\n          const spanName = instrumentation._spanNameFromAttrs(attributes);\n          span = instrumentation.tracer.startSpan(spanName, {\n            kind: SpanKind.CLIENT,\n            attributes,\n          });\n        }\n\n        const patchedCallback = instrumentation._patchEnd(\n          span,\n          resultHandler,\n          this.id,\n          commandType\n        );\n\n        const result = original.apply(this, args);\n        result.then(\n          (res: any) => patchedCallback(null, res),\n          (err: any) => patchedCallback(err)\n        );\n\n        return result;\n      };\n    };\n  }\n\n  /** Creates spans for find operation */\n  private _getV3PatchFind() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['query']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cmd: MongoInternalCommand,\n        cursorState: CursorState,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof cmd !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, cmd, cursorState, options);\n          } else {\n            return original.call(\n              this,\n              server,\n              ns,\n              cmd,\n              cursorState,\n              options,\n              callback\n            );\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cmd,\n          'find'\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(\n            this,\n            server,\n            ns,\n            cmd,\n            cursorState,\n            patchedCallback\n          );\n        } else {\n          return original.call(\n            this,\n            server,\n            ns,\n            cmd,\n            cursorState,\n            options,\n            patchedCallback\n          );\n        }\n      };\n    };\n  }\n\n  /** Creates spans for find operation */\n  private _getV3PatchCursor() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['getMore']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cursorState: CursorState,\n        batchSize: number,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (skipInstrumentation || typeof resultHandler !== 'function') {\n          if (typeof options === 'function') {\n            return original.call(\n              this,\n              server,\n              ns,\n              cursorState,\n              batchSize,\n              options\n            );\n          } else {\n            return original.call(\n              this,\n              server,\n              ns,\n              cursorState,\n              batchSize,\n              options,\n              callback\n            );\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cursorState.cmd,\n          'getMore'\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(\n            this,\n            server,\n            ns,\n            cursorState,\n            batchSize,\n            patchedCallback\n          );\n        } else {\n          return original.call(\n            this,\n            server,\n            ns,\n            cursorState,\n            batchSize,\n            options,\n            patchedCallback\n          );\n        }\n      };\n    };\n  }\n\n  /**\n   * Get the mongodb command type from the object.\n   * @param command Internal mongodb command object\n   */\n  private static _getCommandType(\n    command: MongoInternalCommand\n  ): MongodbCommandType {\n    if (command.createIndexes !== undefined) {\n      return MongodbCommandType.CREATE_INDEXES;\n    } else if (command.findandmodify !== undefined) {\n      return MongodbCommandType.FIND_AND_MODIFY;\n    } else if (command.ismaster !== undefined) {\n      return MongodbCommandType.IS_MASTER;\n    } else if (command.count !== undefined) {\n      return MongodbCommandType.COUNT;\n    } else if (command.aggregate !== undefined) {\n      return MongodbCommandType.AGGREGATE;\n    } else {\n      return MongodbCommandType.UNKNOWN;\n    }\n  }\n\n  /**\n   * Determine a span's attributes by fetching related metadata from the context\n   * @param connectionCtx mongodb internal connection context\n   * @param ns mongodb namespace\n   * @param command mongodb internal representation of a command\n   */\n  private _getV4SpanAttributes(\n    connectionCtx: any,\n    ns: MongodbNamespace,\n    command?: any,\n    operation?: string\n  ): Attributes {\n    let host, port: undefined | string;\n    if (connectionCtx) {\n      const hostParts =\n        typeof connectionCtx.address === 'string'\n          ? connectionCtx.address.split(':')\n          : '';\n      if (hostParts.length === 2) {\n        host = hostParts[0];\n        port = hostParts[1];\n      }\n    }\n    // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n    let commandObj: Record;\n    if (command?.documents && command.documents[0]) {\n      commandObj = command.documents[0];\n    } else if (command?.cursors) {\n      commandObj = command.cursors;\n    } else {\n      commandObj = command;\n    }\n\n    return this._getSpanAttributes(\n      ns.db,\n      ns.collection,\n      host,\n      port,\n      commandObj,\n      operation\n    );\n  }\n\n  /**\n   * Determine a span's attributes by fetching related metadata from the context\n   * @param ns mongodb namespace\n   * @param topology mongodb internal representation of the network topology\n   * @param command mongodb internal representation of a command\n   */\n  private _getV3SpanAttributes(\n    ns: string,\n    topology: MongoInternalTopology,\n    command?: MongoInternalCommand,\n    operation?: string | undefined\n  ): Attributes {\n    // Extract host/port info.\n    let host: undefined | string;\n    let port: undefined | string;\n    if (topology && topology.s) {\n      host = topology.s.options?.host ?? topology.s.host;\n      port = (topology.s.options?.port ?? topology.s.port)?.toString();\n      if (host == null || port == null) {\n        const address = topology.description?.address;\n        if (address) {\n          const addressSegments = address.split(':');\n          host = addressSegments[0];\n          port = addressSegments[1];\n        }\n      }\n    }\n\n    // The namespace is a combination of the database name and the name of the\n    // collection or index, like so: [database-name].[collection-or-index-name].\n    // It could be a string or an instance of MongoDBNamespace, as such we\n    // always coerce to a string to extract db and collection.\n    const [dbName, dbCollection] = ns.toString().split('.');\n    // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n    const commandObj = command?.query ?? command?.q ?? command;\n\n    return this._getSpanAttributes(\n      dbName,\n      dbCollection,\n      host,\n      port,\n      commandObj,\n      operation\n    );\n  }\n\n  private _getSpanAttributes(\n    dbName?: string,\n    dbCollection?: string,\n    host?: undefined | string,\n    port?: undefined | string,\n    commandObj?: any,\n    operation?: string | undefined\n  ): Attributes {\n    const attributes: Attributes = {};\n\n    if (this._dbSemconvStability & SemconvStability.OLD) {\n      attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MONGODB;\n      attributes[ATTR_DB_NAME] = dbName;\n      attributes[ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n      attributes[ATTR_DB_OPERATION] = operation;\n      attributes[ATTR_DB_CONNECTION_STRING] =\n        `mongodb://${host}:${port}/${dbName}`;\n    }\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB;\n      attributes[ATTR_DB_NAMESPACE] = dbName;\n      attributes[ATTR_DB_OPERATION_NAME] = operation;\n      attributes[ATTR_DB_COLLECTION_NAME] = dbCollection;\n    }\n\n    if (host && port) {\n      if (this._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n      }\n      if (this._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n      }\n      const portNumber = parseInt(port, 10);\n      if (!isNaN(portNumber)) {\n        if (this._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_PORT] = portNumber;\n        }\n        if (this._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_PORT] = portNumber;\n        }\n      }\n    }\n\n    if (commandObj) {\n      const { dbStatementSerializer: configDbStatementSerializer } =\n        this.getConfig();\n      const dbStatementSerializer =\n        typeof configDbStatementSerializer === 'function'\n          ? configDbStatementSerializer\n          : this._defaultDbStatementSerializer.bind(this);\n\n      safeExecuteInTheMiddle(\n        () => {\n          const query = dbStatementSerializer(commandObj);\n          if (this._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = query;\n          }\n          if (this._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = query;\n          }\n        },\n        err => {\n          if (err) {\n            this._diag.error('Error running dbStatementSerializer hook', err);\n          }\n        },\n        true\n      );\n    }\n\n    return attributes;\n  }\n\n  private _spanNameFromAttrs(attributes: Attributes): string {\n    let spanName;\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n      spanName =\n        [\n          attributes[ATTR_DB_OPERATION_NAME],\n          attributes[ATTR_DB_COLLECTION_NAME],\n        ]\n          .filter(attr => attr)\n          .join(' ') || DB_SYSTEM_NAME_VALUE_MONGODB;\n    } else {\n      spanName = `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`;\n    }\n    return spanName;\n  }\n\n  private _getDefaultDbStatementReplacer(): Replacer {\n    const seen = new WeakSet();\n    return (_key, value) => {\n      // undefined, boolean, number, bigint, string, symbol, function || null\n      if (typeof value !== 'object' || !value) return '?';\n\n      // objects (including arrays)\n      if (seen.has(value)) return '[Circular]';\n      seen.add(value);\n      return value;\n    };\n  }\n\n  private _defaultDbStatementSerializer(commandObj: Record) {\n    const { enhancedDatabaseReporting } = this.getConfig();\n\n    if (enhancedDatabaseReporting) {\n      return JSON.stringify(commandObj);\n    }\n\n    return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n  }\n\n  /**\n   * Triggers the response hook in case it is defined.\n   * @param span The span to add the results to.\n   * @param result The command result\n   */\n  private _handleExecutionResult(span: Span, result: CommandResult) {\n    const { responseHook } = this.getConfig();\n    if (typeof responseHook === 'function') {\n      safeExecuteInTheMiddle(\n        () => {\n          responseHook(span, { data: result });\n        },\n        err => {\n          if (err) {\n            this._diag.error('Error running response hook', err);\n          }\n        },\n        true\n      );\n    }\n  }\n\n  /**\n   * Ends a created span.\n   * @param span The created span to end.\n   * @param resultHandler A callback function.\n   * @param connectionId: The connection ID of the Command response.\n   */\n  private _patchEnd(\n    span: Span | undefined,\n    resultHandler: Function,\n    connectionId?: number,\n    commandType?: string\n  ): Function {\n    // mongodb is using \"tick\" when calling a callback, this way the context\n    // in final callback (resultHandler) is lost\n    const activeContext = context.active();\n    const instrumentation = this;\n    let spanEnded = false;\n\n    return function patchedEnd(this: {}, ...args: unknown[]) {\n      if (!spanEnded) {\n        spanEnded = true;\n        const error = args[0];\n        if (span) {\n          if (error instanceof Error) {\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } else {\n            const result = args[1] as CommandResult;\n            instrumentation._handleExecutionResult(span, result);\n          }\n          span.end();\n        }\n\n        if (commandType === 'endSessions') {\n          instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n        }\n      }\n\n      return context.with(activeContext, () => {\n        return resultHandler.apply(this, args);\n      });\n    };\n  }\n  private setPoolName(options: any) {\n    const host = options.hostAddress?.host;\n    const port = options.hostAddress?.port;\n    const database = options.dbName;\n    const poolName = `mongodb://${host}:${port}/${database}`;\n    this._poolName = poolName;\n  }\n\n  private _checkSkipInstrumentation(currentSpan: Span | undefined) {\n    const requireParentSpan = this.getConfig().requireParentSpan;\n    const hasNoParentSpan = currentSpan === undefined;\n    return requireParentSpan === true && hasNoParentSpan;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n  (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n  /**\n   * If true, additional information about query parameters and\n   * results will be attached (as `attributes`) to spans representing\n   * database operations.\n   */\n  enhancedDatabaseReporting?: boolean;\n\n  /**\n   * Hook that allows adding custom span attributes based on the data\n   * returned from MongoDB actions.\n   *\n   * @default undefined\n   */\n  responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n  /**\n   * Custom serializer function for the db.statement tag\n   */\n  dbStatementSerializer?: DbStatementSerializer;\n\n  /**\n   * Require parent to create mongodb span, default when unset is true\n   */\n  requireParentSpan?: boolean;\n}\n\nexport interface MongoResponseHookInformation {\n  data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n  result?: unknown;\n  connection?: unknown;\n  message?: unknown;\n};\n\nexport enum MongodbCommandType {\n  CREATE_INDEXES = 'createIndexes',\n  FIND_AND_MODIFY = 'findAndModify',\n  IS_MASTER = 'isMaster',\n  COUNT = 'count',\n  UNKNOWN = 'unknown',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MongoDBInstrumentation } from './instrumentation';\nexport { MongodbCommandType } from './types';\nexport type {\n  CommandResult,\n  DbStatementSerializer,\n  MongoDBInstrumentationConfig,\n  MongoDBInstrumentationExecutionResponseHook,\n  MongoResponseHookInformation,\n} from './types';\n","import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongo';\n\nexport const instrumentMongo = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MongoDBInstrumentation({\n      dbStatementSerializer: _defaultDbStatementSerializer,\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mongo');\n      },\n    }),\n);\n\n/**\n * Replaces values in document with '?', hiding PII and helping grouping.\n */\nexport function _defaultDbStatementSerializer(commandObj: Record): string {\n  const resultObj = _scrubStatement(commandObj);\n  return JSON.stringify(resultObj);\n}\n\nfunction _scrubStatement(value: unknown): unknown {\n  if (Array.isArray(value)) {\n    return value.map(element => _scrubStatement(element));\n  }\n\n  if (isCommandObj(value)) {\n    const initial: Record = {};\n    return Object.entries(value)\n      .map(([key, element]) => [key, _scrubStatement(element)])\n      .reduce((prev, current) => {\n        if (isCommandEntry(current)) {\n          prev[current[0]] = current[1];\n        }\n        return prev;\n      }, initial);\n  }\n\n  // A value like string or number, possible contains PII, scrub it\n  return '?';\n}\n\nfunction isCommandObj(value: Record | unknown): value is Record {\n  return typeof value === 'object' && value !== null && !isBuffer(value);\n}\n\nfunction isBuffer(value: unknown): boolean {\n  let isBuffer = false;\n  if (typeof Buffer !== 'undefined') {\n    isBuffer = Buffer.isBuffer(value);\n  }\n  return isBuffer;\n}\n\nfunction isCommandEntry(value: [string, unknown] | unknown): value is [string, unknown] {\n  return Array.isArray(value);\n}\n\nconst _mongoIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMongo();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongodb](https://www.npmjs.com/package/mongodb) library.\n *\n * For more information, see the [`mongoIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongo/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mongoIntegration()],\n * });\n * ```\n */\nexport const mongoIntegration = defineIntegration(_mongoIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Attributes, SpanStatusCode, diag, Span } from '@opentelemetry/api';\nimport type { Collection } from 'mongoose';\nimport { MongooseResponseCustomAttributesFunction } from './types';\nimport {\n  safeExecuteInTheMiddle,\n  SemconvStability,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_MONGODB_COLLECTION,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\n\nexport function getAttributesFromCollection(\n  collection: Collection,\n  dbSemconvStability: SemconvStability,\n  netSemconvStability: SemconvStability\n): Attributes {\n  const attrs: Attributes = {};\n\n  if (dbSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_DB_MONGODB_COLLECTION] = collection.name;\n    attrs[ATTR_DB_NAME] = collection.conn.name;\n    attrs[ATTR_DB_USER] = collection.conn.user;\n  }\n  if (dbSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_DB_COLLECTION_NAME] = collection.name;\n    attrs[ATTR_DB_NAMESPACE] = collection.conn.name;\n    // db.user has no stable replacement\n  }\n\n  if (netSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_NET_PEER_NAME] = collection.conn.host;\n    attrs[ATTR_NET_PEER_PORT] = collection.conn.port;\n  }\n  if (netSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_SERVER_ADDRESS] = collection.conn.host;\n    attrs[ATTR_SERVER_PORT] = collection.conn.port;\n  }\n\n  return attrs;\n}\n\nfunction setErrorStatus(span: Span, error: any = {}) {\n  span.recordException(error);\n\n  span.setStatus({\n    code: SpanStatusCode.ERROR,\n    message: `${error.message} ${\n      error.code ? `\\nMongoose Error Code: ${error.code}` : ''\n    }`,\n  });\n}\n\nfunction applyResponseHook(\n  span: Span,\n  response: any,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n) {\n  if (!responseHook) {\n    return;\n  }\n\n  safeExecuteInTheMiddle(\n    () => responseHook(span, { moduleVersion, response }),\n    e => {\n      if (e) {\n        diag.error('mongoose instrumentation: responseHook error', e);\n      }\n    },\n    true\n  );\n}\n\nexport function handlePromiseResponse(\n  execResponse: any,\n  span: Span,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n): any {\n  if (!(execResponse instanceof Promise)) {\n    applyResponseHook(span, execResponse, responseHook, moduleVersion);\n    span.end();\n    return execResponse;\n  }\n\n  return execResponse\n    .then(response => {\n      applyResponseHook(span, response, responseHook, moduleVersion);\n      return response;\n    })\n    .catch(err => {\n      setErrorStatus(span, err);\n      throw err;\n    })\n    .finally(() => span.end());\n}\n\nexport function handleCallbackResponse(\n  callback: Function,\n  exec: Function,\n  originalThis: any,\n  span: Span,\n  args: IArguments,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n) {\n  let callbackArgumentIndex = 0;\n  if (args.length === 2) {\n    callbackArgumentIndex = 1;\n  } else if (args.length === 3) {\n    callbackArgumentIndex = 2;\n  }\n\n  args[callbackArgumentIndex] = (err: Error, response: any): any => {\n    if (err) {\n      setErrorStatus(span, err);\n    } else {\n      applyResponseHook(span, response, responseHook, moduleVersion);\n    }\n\n    span.end();\n    return callback!(err, response);\n  };\n\n  return exec.apply(originalThis, args);\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { context, Span, trace, Attributes, SpanKind } from '@opentelemetry/api';\nimport { suppressTracing } from '@opentelemetry/core';\nimport type * as mongoose from 'mongoose';\nimport { MongooseInstrumentationConfig, SerializerPayload } from './types';\nimport {\n  handleCallbackResponse,\n  handlePromiseResponse,\n  getAttributesFromCollection,\n} from './utils';\nimport {\n  InstrumentationBase,\n  InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  ATTR_DB_OPERATION,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  DB_SYSTEM_NAME_VALUE_MONGODB,\n} from './semconv';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n} from '@opentelemetry/semantic-conventions';\n\nconst contextCaptureFunctionsCommon = [\n  'deleteOne',\n  'deleteMany',\n  'find',\n  'findOne',\n  'estimatedDocumentCount',\n  'countDocuments',\n  'distinct',\n  'where',\n  '$where',\n  'findOneAndUpdate',\n  'findOneAndDelete',\n  'findOneAndReplace',\n];\n\nconst contextCaptureFunctions6 = [\n  'remove',\n  'count',\n  'findOneAndRemove',\n  ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions7 = [\n  'count',\n  'findOneAndRemove',\n  ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\n\nfunction getContextCaptureFunctions(\n  moduleVersion: string | undefined\n): string[] {\n  /* istanbul ignore next */\n  if (!moduleVersion) {\n    return contextCaptureFunctionsCommon;\n  } else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n    return contextCaptureFunctions6;\n  } else if (moduleVersion.startsWith('7.')) {\n    return contextCaptureFunctions7;\n  } else {\n    return contextCaptureFunctions8;\n  }\n}\n\nfunction instrumentRemove(moduleVersion: string | undefined): boolean {\n  return (\n    (moduleVersion &&\n      (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) ||\n    false\n  );\n}\n\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion: string | undefined): boolean {\n  if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n    return false;\n  }\n\n  const minor = parseInt(moduleVersion.split('.')[1], 10);\n  return minor >= 21;\n}\n\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexport const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span');\n\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexport const _ALREADY_INSTRUMENTED: unique symbol = Symbol(\n  'already-instrumented'\n);\n\nexport class MongooseInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: MongooseInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      'mongoose',\n      ['>=5.9.7 <10'],\n      this.patch.bind(this),\n      this.unpatch.bind(this)\n    );\n    return module;\n  }\n\n  private patch(module: any, moduleVersion: string | undefined) {\n    const moduleExports: typeof mongoose =\n      module[Symbol.toStringTag] === 'Module'\n        ? module.default // ESM\n        : module; // CommonJS\n\n    this._wrap(\n      moduleExports.Model.prototype,\n      'save',\n      this.patchOnModelMethods('save', moduleVersion)\n    );\n    // mongoose applies this code on module require:\n    // Model.prototype.$save = Model.prototype.save;\n    // which captures the save function before it is patched.\n    // so we need to apply the same logic after instrumenting the save function.\n    moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n    if (instrumentRemove(moduleVersion)) {\n      this._wrap(\n        moduleExports.Model.prototype,\n        'remove',\n        this.patchOnModelMethods('remove', moduleVersion)\n      );\n    }\n\n    // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n    //\n    // See https://github.com/Automattic/mongoose/blob/7dbda12dca1bd7adb9e270d7de8ac5229606ce72/lib/document.js#L861.\n    // - `this` is a Query object\n    // - the update happens in a pre-hook that gets called when Query.exec() is already running.\n    // - when we instrument Query.exec(), we don't have access to the options yet as they get set during Query.exec() only.\n    //\n    // Unfortunately, after Query.exec() is finished, the options are left modified by the library, so just delaying\n    // attaching the attributes after the span is done is not an option. Therefore, we patch Model methods\n    // and grab the data directly where the user provides it.\n    //\n    // ref: https://github.com/Automattic/mongoose/pull/15908 (introduced this behavior)\n    if (needsDocumentMethodPatch(moduleVersion)) {\n      this._wrap(\n        moduleExports.Model.prototype,\n        'updateOne',\n        this._patchDocumentUpdateMethods('updateOne', moduleVersion)\n      );\n      this._wrap(\n        moduleExports.Model.prototype,\n        'deleteOne',\n        this._patchDocumentUpdateMethods('deleteOne', moduleVersion)\n      );\n    }\n\n    this._wrap(\n      moduleExports.Query.prototype,\n      'exec',\n      this.patchQueryExec(moduleVersion)\n    );\n    this._wrap(\n      moduleExports.Aggregate.prototype,\n      'exec',\n      this.patchAggregateExec(moduleVersion)\n    );\n\n    const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n    contextCaptureFunctions.forEach((funcName: string) => {\n      this._wrap(\n        moduleExports.Query.prototype,\n        funcName as any,\n        this.patchAndCaptureSpanContext(funcName)\n      );\n    });\n    this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n\n    this._wrap(\n      moduleExports.Model,\n      'insertMany',\n      this.patchModelStatic('insertMany', moduleVersion)\n    );\n    this._wrap(\n      moduleExports.Model,\n      'bulkWrite',\n      this.patchModelStatic('bulkWrite', moduleVersion)\n    );\n\n    return moduleExports;\n  }\n\n  private unpatch(module: any, moduleVersion: string | undefined): void {\n    const moduleExports: typeof mongoose =\n      module[Symbol.toStringTag] === 'Module'\n        ? module.default // ESM\n        : module; // CommonJS\n\n    const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n    this._unwrap(moduleExports.Model.prototype, 'save');\n    // revert the patch for $save which we applied by aliasing it to patched `save`\n    moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n    if (instrumentRemove(moduleVersion)) {\n      this._unwrap(moduleExports.Model.prototype, 'remove');\n    }\n\n    if (needsDocumentMethodPatch(moduleVersion)) {\n      this._unwrap(moduleExports.Model.prototype, 'updateOne');\n      this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n    }\n\n    this._unwrap(moduleExports.Query.prototype, 'exec');\n    this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n\n    contextCaptureFunctions.forEach((funcName: string) => {\n      this._unwrap(moduleExports.Query.prototype, funcName as any);\n    });\n    this._unwrap(moduleExports.Model, 'aggregate');\n\n    this._unwrap(moduleExports.Model, 'insertMany');\n    this._unwrap(moduleExports.Model, 'bulkWrite');\n  }\n\n  private patchAggregateExec(moduleVersion: string | undefined) {\n    const self = this;\n    return (originalAggregate: Function) => {\n      return function exec(this: any, callback?: Function) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalAggregate.apply(this, arguments);\n        }\n\n        const parentSpan = this[_STORED_PARENT_SPAN];\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer('aggregate', {\n            options: this.options,\n            aggregatePipeline: this._pipeline,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this._model.collection,\n          this._model?.modelName,\n          'aggregate',\n          attributes,\n          parentSpan\n        );\n\n        return self._handleResponse(\n          span,\n          originalAggregate,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  private patchQueryExec(moduleVersion: string | undefined) {\n    const self = this;\n    return (originalExec: Function) => {\n      return function exec(this: any, callback?: Function) {\n        // Skip if already instrumented by document instance method patch\n        if (this[_ALREADY_INSTRUMENTED]) {\n          return originalExec.apply(this, arguments);\n        }\n\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalExec.apply(this, arguments);\n        }\n\n        const parentSpan = this[_STORED_PARENT_SPAN];\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(this.op, {\n            // Use public API methods (getFilter/getOptions) for better compatibility\n            condition: this.getFilter?.() ?? this._conditions,\n            updates: this._update,\n            options: this.getOptions?.() ?? this.options,\n            fields: this._fields,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n        const span = self._startSpan(\n          this.mongooseCollection,\n          this.model.modelName,\n          this.op,\n          attributes,\n          parentSpan\n        );\n\n        return self._handleResponse(\n          span,\n          originalExec,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  private patchOnModelMethods(op: string, moduleVersion: string | undefined) {\n    const self = this;\n    return (originalOnModelFunction: Function) => {\n      return function method(this: any, options?: any, callback?: Function) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalOnModelFunction.apply(this, arguments);\n        }\n\n        const serializePayload: SerializerPayload = { document: this };\n        if (options && !(options instanceof Function)) {\n          serializePayload.options = options;\n        }\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, serializePayload);\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n        const span = self._startSpan(\n          this.constructor.collection,\n          this.constructor.modelName,\n          op,\n          attributes\n        );\n\n        if (options instanceof Function) {\n          callback = options;\n          options = undefined;\n        }\n\n        return self._handleResponse(\n          span,\n          originalOnModelFunction,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n  private _patchDocumentUpdateMethods(\n    op: string,\n    moduleVersion: string | undefined\n  ) {\n    const self = this;\n    return (originalMethod: Function) => {\n      return function method(\n        this: any,\n        update?: any,\n        options?: any,\n        callback?: Function\n      ) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalMethod.apply(this, arguments);\n        }\n\n        // determine actual callback since different argument patterns are allowed\n        let actualCallback: Function | undefined = callback;\n        let actualUpdate = update;\n        let actualOptions = options;\n\n        if (typeof update === 'function') {\n          actualCallback = update;\n          actualUpdate = undefined;\n          actualOptions = undefined;\n        } else if (typeof options === 'function') {\n          actualCallback = options;\n          actualOptions = undefined;\n        }\n\n        const attributes: Attributes = {};\n        const dbStatementSerializer = self.getConfig().dbStatementSerializer;\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, {\n            // Document instance methods automatically use the document's _id as filter\n            condition: { _id: this._id },\n            updates: actualUpdate,\n            options: actualOptions,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this.constructor.collection,\n          this.constructor.modelName,\n          op,\n          attributes\n        );\n\n        const result = self._handleResponse(\n          span,\n          originalMethod,\n          this,\n          arguments,\n          actualCallback,\n          moduleVersion\n        );\n\n        // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n        if (result && typeof result === 'object') {\n          result[_ALREADY_INSTRUMENTED] = true;\n        }\n\n        return result;\n      };\n    };\n  }\n\n  private patchModelStatic(op: string, moduleVersion: string | undefined) {\n    const self = this;\n    return (original: Function) => {\n      return function patchedStatic(\n        this: any,\n        docsOrOps: any,\n        options?: any,\n        callback?: Function\n      ) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return original.apply(this, arguments);\n        }\n        if (typeof options === 'function') {\n          callback = options;\n          options = undefined;\n        }\n\n        const serializePayload: SerializerPayload = {};\n        switch (op) {\n          case 'insertMany':\n            serializePayload.documents = docsOrOps;\n            break;\n          case 'bulkWrite':\n            serializePayload.operations = docsOrOps;\n            break;\n          default:\n            serializePayload.document = docsOrOps;\n            break;\n        }\n        if (options !== undefined) {\n          serializePayload.options = options;\n        }\n\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, serializePayload);\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this.collection,\n          this.modelName,\n          op,\n          attributes\n        );\n\n        return self._handleResponse(\n          span,\n          original,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  // we want to capture the otel span on the object which is calling exec.\n  // in the special case of aggregate, we need have no function to path\n  // on the Aggregate object to capture the context on, so we patch\n  // the aggregate of Model, and set the context on the Aggregate object\n  private patchModelAggregate() {\n    const self = this;\n    return (original: Function) => {\n      return function captureSpanContext(this: any) {\n        const currentSpan = trace.getSpan(context.active());\n        const aggregate = self._callOriginalFunction(() =>\n          original.apply(this, arguments)\n        );\n        if (aggregate) aggregate[_STORED_PARENT_SPAN] = currentSpan;\n        return aggregate;\n      };\n    };\n  }\n\n  private patchAndCaptureSpanContext(funcName: string) {\n    const self = this;\n    return (original: Function) => {\n      return function captureSpanContext(this: any) {\n        this[_STORED_PARENT_SPAN] = trace.getSpan(context.active());\n        return self._callOriginalFunction(() =>\n          original.apply(this, arguments)\n        );\n      };\n    };\n  }\n\n  private _startSpan(\n    collection: mongoose.Collection,\n    modelName: string,\n    operation: string,\n    attributes: Attributes,\n    parentSpan?: Span\n  ): Span {\n    const finalAttributes: Attributes = {\n      ...attributes,\n      ...getAttributesFromCollection(\n        collection,\n        this._dbSemconvStability,\n        this._netSemconvStability\n      ),\n    };\n\n    if (this._dbSemconvStability & SemconvStability.OLD) {\n      finalAttributes[ATTR_DB_OPERATION] = operation;\n      finalAttributes[ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility\n    }\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      finalAttributes[ATTR_DB_OPERATION_NAME] = operation;\n      finalAttributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name\n    }\n\n    const spanName =\n      this._dbSemconvStability & SemconvStability.STABLE\n        ? `${operation} ${collection.name}`\n        : `mongoose.${modelName}.${operation}`;\n\n    return this.tracer.startSpan(\n      spanName,\n      {\n        kind: SpanKind.CLIENT,\n        attributes: finalAttributes,\n      },\n      parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined\n    );\n  }\n\n  private _handleResponse(\n    span: Span,\n    exec: Function,\n    originalThis: any,\n    args: IArguments,\n    callback?: Function,\n    moduleVersion: string | undefined = undefined\n  ) {\n    const self = this;\n    if (callback instanceof Function) {\n      return self._callOriginalFunction(() =>\n        handleCallbackResponse(\n          callback,\n          exec,\n          originalThis,\n          span,\n          args,\n          self.getConfig().responseHook,\n          moduleVersion\n        )\n      );\n    } else {\n      const response = self._callOriginalFunction(() =>\n        exec.apply(originalThis, args)\n      );\n      return handlePromiseResponse(\n        response,\n        span,\n        self.getConfig().responseHook,\n        moduleVersion\n      );\n    }\n  }\n\n  private _callOriginalFunction(originalFunction: (...args: any[]) => T): T {\n    if (this.getConfig().suppressInternalInstrumentation) {\n      return context.with(suppressTracing(context.active()), originalFunction);\n    } else {\n      return originalFunction();\n    }\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport { MongooseInstrumentation } from './mongoose';\nexport type {\n  DbStatementSerializer,\n  MongooseInstrumentationConfig,\n  MongooseResponseCustomAttributesFunction,\n  ResponseInfo,\n  SerializerPayload,\n} from './types';\n","import { MongooseInstrumentation } from '@opentelemetry/instrumentation-mongoose';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongoose';\n\nexport const instrumentMongoose = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MongooseInstrumentation({\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mongoose');\n      },\n    }),\n);\n\nconst _mongooseIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMongoose();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nexport const mongooseIntegration = defineIntegration(_mongooseIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE =\n  'db.client.connections.usage' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// Mysql specific attributes not covered by semantic conventions\nexport enum AttributeNames {\n  MYSQL_VALUES = 'db.mysql.values',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Pool, Query, QueryOptions } from 'mysql';\n\nexport function getConfig(config: any) {\n  const { host, port, database, user } =\n    (config && config.connectionConfig) || config || {};\n  return { host, port, database, user };\n}\n\nexport function getJDBCString(\n  host: string | undefined,\n  port: number | undefined,\n  database: string | undefined\n) {\n  let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n  if (typeof port === 'number') {\n    jdbcString += `:${port}`;\n  }\n\n  if (typeof database === 'string') {\n    jdbcString += `/${database}`;\n  }\n\n  return jdbcString;\n}\n\n/**\n * @returns the database query being executed.\n */\nexport function getDbQueryText(query: string | Query | QueryOptions): string {\n  if (typeof query === 'string') {\n    return query;\n  } else {\n    return query.sql;\n  }\n}\n\nexport function getDbValues(\n  query: string | Query | QueryOptions,\n  values?: any[]\n): string {\n  if (typeof query === 'string') {\n    return arrayStringifyHelper(values);\n  } else {\n    // According to https://github.com/mysqljs/mysql#performing-queries\n    // The values argument will override the values in the option object.\n    return arrayStringifyHelper(values || query.values);\n  }\n}\n\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nexport function getSpanName(query: string | Query | QueryOptions): string {\n  const rawQuery = typeof query === 'object' ? query.sql : query;\n  // Extract the SQL verb\n  const firstSpace = rawQuery?.indexOf(' ');\n  if (typeof firstSpace === 'number' && firstSpace !== -1) {\n    return rawQuery?.substring(0, firstSpace);\n  }\n  return rawQuery;\n}\n\nexport function arrayStringifyHelper(arr: Array | undefined): string {\n  if (arr) return `[${arr.toString()}]`;\n  return '';\n}\n\nexport function getPoolNameOld(pool: Pool): string {\n  const c = pool.config.connectionConfig;\n  let poolName = '';\n  poolName += c.host ? `host: '${c.host}', ` : '';\n  poolName += c.port ? `port: ${c.port}, ` : '';\n  poolName += c.database ? `database: '${c.database}', ` : '';\n  poolName += c.user ? `user: '${c.user}'` : '';\n  if (!c.user) {\n    poolName = poolName.substring(0, poolName.length - 2); //omit last comma\n  }\n  return poolName.trim();\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mysql';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  context,\n  Context,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_NAME,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_VALUE_MYSQL,\n  METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport type * as mysqlTypes from 'mysql';\nimport { AttributeNames } from './AttributeNames';\nimport { MySQLInstrumentationConfig } from './types';\nimport {\n  getConfig,\n  getDbQueryText,\n  getDbValues,\n  getJDBCString,\n  getSpanName,\n  getPoolNameOld,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { UpDownCounter } from '@opentelemetry/api';\n\ntype getConnectionCallbackType = (\n  err: mysqlTypes.MysqlError,\n  connection: mysqlTypes.PoolConnection\n) => void;\n\nexport class MySQLInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n  declare private _connectionsUsageOld: UpDownCounter;\n\n  constructor(config: MySQLInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected override _updateMetricInstruments() {\n    this._connectionsUsageOld = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  /**\n   * Convenience function for updating the `db.client.connections.usage` metric.\n   * The name \"count\" comes from the eventually replacement for this metric per\n   * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n   */\n  private _connCountAdd(n: number, poolNameOld: string, state: string) {\n    this._connectionsUsageOld?.add(n, { state, name: poolNameOld });\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mysql',\n        ['>=2.0.0 <3'],\n        (moduleExports: typeof mysqlTypes) => {\n          if (isWrapped(moduleExports.createConnection)) {\n            this._unwrap(moduleExports, 'createConnection');\n          }\n          this._wrap(\n            moduleExports,\n            'createConnection',\n            this._patchCreateConnection() as any\n          );\n\n          if (isWrapped(moduleExports.createPool)) {\n            this._unwrap(moduleExports, 'createPool');\n          }\n          this._wrap(\n            moduleExports,\n            'createPool',\n            this._patchCreatePool() as any\n          );\n\n          if (isWrapped(moduleExports.createPoolCluster)) {\n            this._unwrap(moduleExports, 'createPoolCluster');\n          }\n          this._wrap(\n            moduleExports,\n            'createPoolCluster',\n            this._patchCreatePoolCluster() as any\n          );\n\n          return moduleExports;\n        },\n        (moduleExports: typeof mysqlTypes) => {\n          if (moduleExports === undefined) return;\n          this._unwrap(moduleExports, 'createConnection');\n          this._unwrap(moduleExports, 'createPool');\n          this._unwrap(moduleExports, 'createPoolCluster');\n        }\n      ),\n    ];\n  }\n\n  // global export function\n  private _patchCreateConnection() {\n    return (originalCreateConnection: Function) => {\n      const thisPlugin = this;\n\n      return function createConnection(\n        _connectionUri: string | mysqlTypes.ConnectionConfig\n      ) {\n        const originalResult = originalCreateConnection(...arguments);\n\n        // This is unwrapped on next call after unpatch\n        thisPlugin._wrap(\n          originalResult,\n          'query',\n          thisPlugin._patchQuery(originalResult) as any\n        );\n\n        return originalResult;\n      };\n    };\n  }\n\n  // global export function\n  private _patchCreatePool() {\n    return (originalCreatePool: Function) => {\n      const thisPlugin = this;\n      return function createPool(_config: string | mysqlTypes.PoolConfig) {\n        const pool = originalCreatePool(...arguments);\n\n        thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n        thisPlugin._wrap(\n          pool,\n          'getConnection',\n          thisPlugin._patchGetConnection(pool)\n        );\n        thisPlugin._wrap(pool, 'end', thisPlugin._patchPoolEnd(pool));\n        thisPlugin._setPoolCallbacks(pool, '');\n\n        return pool;\n      };\n    };\n  }\n\n  private _patchPoolEnd(pool: any) {\n    return (originalPoolEnd: Function) => {\n      const thisPlugin = this;\n      return function end(callback?: unknown) {\n        const nAll = (pool as any)._allConnections.length;\n        const nFree = (pool as any)._freeConnections.length;\n        const nUsed = nAll - nFree;\n        const poolNameOld = getPoolNameOld(pool);\n        thisPlugin._connCountAdd(-nUsed, poolNameOld, 'used');\n        thisPlugin._connCountAdd(-nFree, poolNameOld, 'idle');\n        originalPoolEnd.apply(pool, arguments);\n      };\n    };\n  }\n\n  // global export function\n  private _patchCreatePoolCluster() {\n    return (originalCreatePoolCluster: Function) => {\n      const thisPlugin = this;\n      return function createPool(_config: string | mysqlTypes.PoolConfig) {\n        const cluster = originalCreatePoolCluster(...arguments);\n\n        // This is unwrapped on next call after unpatch\n        thisPlugin._wrap(\n          cluster,\n          'getConnection',\n          thisPlugin._patchGetConnection(cluster)\n        );\n        thisPlugin._wrap(cluster, 'add', thisPlugin._patchAdd(cluster));\n\n        return cluster;\n      };\n    };\n  }\n  private _patchAdd(cluster: mysqlTypes.PoolCluster) {\n    return (originalAdd: Function) => {\n      const thisPlugin = this;\n      return function add(id: string, config: unknown) {\n        // Unwrap if unpatch has been called\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(cluster, 'add');\n          return originalAdd.apply(cluster, arguments);\n        }\n        originalAdd.apply(cluster, arguments);\n        const nodes = cluster['_nodes' as keyof mysqlTypes.PoolCluster] as any;\n        if (nodes) {\n          const nodeId =\n            typeof id === 'object'\n              ? 'CLUSTER::' + (cluster as any)._lastId\n              : String(id);\n\n          const pool = nodes[nodeId].pool;\n          thisPlugin._setPoolCallbacks(pool, id);\n        }\n      };\n    };\n  }\n\n  // method on cluster or pool\n  private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) {\n    return (originalGetConnection: Function) => {\n      const thisPlugin = this;\n\n      return function getConnection(\n        arg1?: unknown,\n        arg2?: unknown,\n        arg3?: unknown\n      ) {\n        // Unwrap if unpatch has been called\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(pool, 'getConnection');\n          return originalGetConnection.apply(pool, arguments);\n        }\n\n        if (arguments.length === 1 && typeof arg1 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg1 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, patchFn);\n        }\n        if (arguments.length === 2 && typeof arg2 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg2 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, arg1, patchFn);\n        }\n        if (arguments.length === 3 && typeof arg3 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg3 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, arg1, arg2, patchFn);\n        }\n\n        return originalGetConnection.apply(pool, arguments);\n      };\n    };\n  }\n\n  private _getConnectionCallbackPatchFn(cb: getConnectionCallbackType) {\n    const thisPlugin = this;\n    const activeContext = context.active();\n    return function (\n      this: any,\n      err: mysqlTypes.MysqlError,\n      connection: mysqlTypes.PoolConnection\n    ) {\n      if (connection) {\n        // this is the callback passed into a query\n        // no need to unwrap\n        if (!isWrapped(connection.query)) {\n          thisPlugin._wrap(\n            connection,\n            'query',\n            thisPlugin._patchQuery(connection)\n          );\n        }\n      }\n      if (typeof cb === 'function') {\n        context.with(activeContext, cb, this, err, connection);\n      }\n    };\n  }\n\n  private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) {\n    return (originalQuery: Function): mysqlTypes.QueryFunction => {\n      const thisPlugin = this;\n\n      return function query(\n        query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n        _valuesOrCallback?: unknown[] | mysqlTypes.queryCallback,\n        _callback?: mysqlTypes.queryCallback\n      ) {\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(connection, 'query');\n          return originalQuery.apply(connection, arguments);\n        }\n\n        const attributes: Attributes = {};\n        const { host, port, database, user } = getConfig(connection.config);\n        const portNumber = parseInt(port, 10);\n        const dbQueryText = getDbQueryText(query);\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n          attributes[ATTR_DB_CONNECTION_STRING] = getJDBCString(\n            host,\n            port,\n            database\n          );\n          attributes[ATTR_DB_NAME] = database;\n          attributes[ATTR_DB_USER] = user;\n          attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n          attributes[ATTR_DB_NAMESPACE] = database;\n          attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_NAME] = host;\n          if (!isNaN(portNumber)) {\n            attributes[ATTR_NET_PEER_PORT] = portNumber;\n          }\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_ADDRESS] = host;\n          if (!isNaN(portNumber)) {\n            attributes[ATTR_SERVER_PORT] = portNumber;\n          }\n        }\n        const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        if (thisPlugin.getConfig().enhancedDatabaseReporting) {\n          let values;\n\n          if (Array.isArray(_valuesOrCallback)) {\n            values = _valuesOrCallback;\n          } else if (arguments[2]) {\n            values = [_valuesOrCallback];\n          }\n\n          span.setAttribute(\n            AttributeNames.MYSQL_VALUES,\n            getDbValues(query, values)\n          );\n        }\n\n        const cbIndex = Array.from(arguments).findIndex(\n          arg => typeof arg === 'function'\n        );\n\n        const parentContext = context.active();\n\n        if (cbIndex === -1) {\n          const streamableQuery: mysqlTypes.Query = context.with(\n            trace.setSpan(context.active(), span),\n            () => {\n              return originalQuery.apply(connection, arguments);\n            }\n          );\n          context.bind(parentContext, streamableQuery);\n\n          return streamableQuery\n            .on('error', err =>\n              span.setStatus({\n                code: SpanStatusCode.ERROR,\n                message: err.message,\n              })\n            )\n            .on('end', () => {\n              span.end();\n            });\n        } else {\n          thisPlugin._wrap(\n            arguments,\n            cbIndex,\n            thisPlugin._patchCallbackQuery(span, parentContext)\n          );\n\n          return context.with(trace.setSpan(context.active(), span), () => {\n            return originalQuery.apply(connection, arguments);\n          });\n        }\n      };\n    };\n  }\n\n  private _patchCallbackQuery(span: Span, parentContext: Context) {\n    return (originalCallback: Function) => {\n      return function (\n        err: mysqlTypes.MysqlError | null,\n        results?: any,\n        fields?: mysqlTypes.FieldInfo[]\n      ) {\n        if (err) {\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: err.message,\n          });\n        }\n        span.end();\n        return context.with(parentContext, () =>\n          originalCallback(...arguments)\n        );\n      };\n    };\n  }\n\n  private _setPoolCallbacks(pool: mysqlTypes.Pool, id: string) {\n    const poolNameOld = id || getPoolNameOld(pool);\n\n    pool.on('connection', _connection => {\n      this._connCountAdd(1, poolNameOld, 'idle');\n    });\n\n    pool.on('acquire', _connection => {\n      this._connCountAdd(-1, poolNameOld, 'idle');\n      this._connCountAdd(1, poolNameOld, 'used');\n    });\n\n    pool.on('release', _connection => {\n      this._connCountAdd(1, poolNameOld, 'idle');\n      this._connCountAdd(-1, poolNameOld, 'used');\n    });\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MySQLInstrumentation } from './instrumentation';\nexport type { MySQLInstrumentationConfig } from './types';\n","import { MySQLInstrumentation } from '@opentelemetry/instrumentation-mysql';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql';\n\nexport const instrumentMysql = generateInstrumentOnce(INTEGRATION_NAME, () => new MySQLInstrumentation({}));\n\nconst _mysqlIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMysql();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql](https://www.npmjs.com/package/mysql) library.\n *\n * For more information, see the [`mysqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nexport const mysqlIntegration = defineIntegration(_mysqlIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  trace,\n  Span,\n  ROOT_CONTEXT,\n  defaultTextMapSetter,\n} from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\n\n// NOTE: This function currently is returning false-positives\n// in cases where comment characters appear in string literals\n// (\"SELECT '-- not a comment';\" would return true, although has no comment)\nfunction hasValidSqlComment(query: string): boolean {\n  const indexOpeningDashDashComment = query.indexOf('--');\n  if (indexOpeningDashDashComment >= 0) {\n    return true;\n  }\n\n  const indexOpeningSlashComment = query.indexOf('/*');\n  if (indexOpeningSlashComment < 0) {\n    return false;\n  }\n\n  const indexClosingSlashComment = query.indexOf('*/');\n  return indexOpeningDashDashComment < indexClosingSlashComment;\n}\n\n// sqlcommenter specification (https://google.github.io/sqlcommenter/spec/#value-serialization)\n// expects us to URL encode based on the RFC 3986 spec (https://en.wikipedia.org/wiki/Percent-encoding),\n// but encodeURIComponent does not handle some characters correctly (! ' ( ) *),\n// which means we need special handling for this\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\nfunction fixedEncodeURIComponent(str: string) {\n  return encodeURIComponent(str).replace(\n    /[!'()*]/g,\n    c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`\n  );\n}\n\nexport function addSqlCommenterComment(span: Span, query: string): string {\n  if (typeof query !== 'string' || query.length === 0) {\n    return query;\n  }\n\n  // As per sqlcommenter spec we shall not add a comment if there already is a comment\n  // in the query\n  if (hasValidSqlComment(query)) {\n    return query;\n  }\n\n  const propagator = new W3CTraceContextPropagator();\n  const headers: { [key: string]: string } = {};\n  propagator.inject(\n    trace.setSpan(ROOT_CONTEXT, span),\n    headers,\n    defaultTextMapSetter\n  );\n\n  // sqlcommenter spec requires keys in the comment to be sorted lexicographically\n  const sortedKeys = Object.keys(headers).sort();\n\n  if (sortedKeys.length === 0) {\n    return query;\n  }\n\n  const commentString = sortedKeys\n    .map(key => {\n      const encodedValue = fixedEncodeURIComponent(headers[key]);\n      return `${key}='${encodedValue}'`;\n    })\n    .join(',');\n\n  return `${query} /*${commentString}*/`;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport type * as mysqlTypes from 'mysql2';\nimport { MySQL2InstrumentationQueryMaskingHook } from './types';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\n\ntype formatType = typeof mysqlTypes.format;\n\n/*\n  Following types declare an expectation on mysql2 types and define a subset we\n  use in the instrumentation of the types actually defined in mysql2 package\n\n  We need to import them here so that the installing party of the instrumentation\n  doesn't have to absolutely install the mysql2 package as well - specially\n  important for auto-loaders and meta-packages.\n*/\ninterface QueryOptions {\n  sql: string;\n  values?: any | any[] | { [param: string]: any };\n}\n\ninterface Query {\n  sql: string;\n}\n\ninterface Config {\n  host?: string;\n  port?: number;\n  database?: string;\n  user?: string;\n  connectionConfig?: Config;\n}\n\n/**\n * Get an Attributes map from a mysql connection config object\n *\n * @param config ConnectionConfig\n */\nexport function getConnectionAttributes(\n  config: Config,\n  dbSemconvStability: SemconvStability,\n  netSemconvStability: SemconvStability\n): Attributes {\n  const { host, port, database, user } = getConfig(config);\n\n  const attrs: Attributes = {};\n  if (dbSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database);\n    attrs[ATTR_DB_NAME] = database;\n    attrs[ATTR_DB_USER] = user;\n  }\n  if (dbSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_DB_NAMESPACE] = database;\n  }\n\n  const portNumber = parseInt(port, 10);\n  if (netSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_NET_PEER_NAME] = host;\n    if (!isNaN(portNumber)) {\n      attrs[ATTR_NET_PEER_PORT] = portNumber;\n    }\n  }\n  if (netSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_SERVER_ADDRESS] = host;\n    if (!isNaN(portNumber)) {\n      attrs[ATTR_SERVER_PORT] = portNumber;\n    }\n  }\n\n  return attrs;\n}\n\nfunction getConfig(config: any) {\n  const { host, port, database, user } =\n    (config && config.connectionConfig) || config || {};\n  return { host, port, database, user };\n}\n\nfunction getJDBCString(\n  host: string | undefined,\n  port: number | undefined,\n  database: string | undefined\n) {\n  let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n  if (typeof port === 'number') {\n    jdbcString += `:${port}`;\n  }\n\n  if (typeof database === 'string') {\n    jdbcString += `/${database}`;\n  }\n\n  return jdbcString;\n}\n\n/**\n * Conjures up the value for the db.query.text attribute by formatting a SQL query.\n */\nexport function getQueryText(\n  query: string | Query | QueryOptions,\n  format?: formatType,\n  values?: any[],\n  maskStatement = false,\n  maskStatementHook: MySQL2InstrumentationQueryMaskingHook = defaultMaskingHook\n): string {\n  const [querySql, queryValues] =\n    typeof query === 'string'\n      ? [query, values]\n      : [query.sql, hasValues(query) ? values || query.values : values];\n  try {\n    if (maskStatement) {\n      return maskStatementHook(querySql);\n    } else if (format && queryValues) {\n      return format(querySql, queryValues);\n    } else {\n      return querySql;\n    }\n  } catch (e) {\n    return 'Could not determine the query due to an error in masking or formatting';\n  }\n}\n\n/**\n * Replaces numeric values and quoted strings in the query with placeholders ('?').\n *\n * - `\\b\\d+\\b`: Matches whole numbers (integers) and replaces them with '?'.\n * - `([\"'])(?:(?=(\\\\?))\\2.)*?\\1`:\n *   - Matches quoted strings (both single `'` and double `\"` quotes).\n *   - Uses a lookahead `(?=(\\\\?))` to detect an optional backslash without consuming it immediately.\n *   - Captures the optional backslash `\\2` and ensures escaped quotes inside the string are handled correctly.\n *   - Ensures that only complete quoted strings are replaced with '?'.\n *\n * This prevents accidental replacement of escaped quotes within strings and ensures that the\n * query structure remains intact while masking sensitive data.\n */\nfunction defaultMaskingHook(query: string): string {\n  return query\n    .replace(/\\b\\d+\\b/g, '?')\n    .replace(/([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g, '?');\n}\n\nfunction hasValues(obj: Query | QueryOptions): obj is QueryOptions {\n  return 'values' in obj;\n}\n\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nexport function getSpanName(query: string | Query | QueryOptions): string {\n  const rawQuery = typeof query === 'object' ? query.sql : query;\n  // Extract the SQL verb\n  const firstSpace = rawQuery?.indexOf(' ');\n  if (typeof firstSpace === 'number' && firstSpace !== -1) {\n    return rawQuery?.substring(0, firstSpace);\n  }\n  return rawQuery;\n}\n\nexport const once = (fn: Function) => {\n  let called = false;\n  return (...args: unknown[]) => {\n    if (called) return;\n    called = true;\n    return fn(...args);\n  };\n};\n\nexport function getConnectionPrototypeToInstrument(connection: any) {\n  const connectionPrototype = connection.prototype;\n  const basePrototype = Object.getPrototypeOf(connectionPrototype);\n\n  // mysql2@3.11.5 included a refactoring, where most code was moved out of the `Connection` class and into a shared base\n  // so we need to instrument that instead, see https://github.com/sidorares/node-mysql2/pull/3081\n  // This checks if the functions we're instrumenting are there on the base - we cannot use the presence of a base\n  // prototype since EventEmitter is the base for mysql2@<=3.11.4\n  if (\n    typeof basePrototype?.query === 'function' &&\n    typeof basePrototype?.execute === 'function'\n  ) {\n    return basePrototype;\n  }\n\n  // otherwise instrument the connection directly.\n  return connectionPrototype;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mysql2';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  DB_SYSTEM_VALUE_MYSQL,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n} from './semconv';\nimport { addSqlCommenterComment } from '@opentelemetry/sql-common';\nimport type * as mysqlTypes from 'mysql2';\nimport { MySQL2InstrumentationConfig } from './types';\nimport {\n  getConnectionAttributes,\n  getConnectionPrototypeToInstrument,\n  getQueryText,\n  getSpanName,\n  once,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\n\ntype formatType = typeof mysqlTypes.format;\n\nconst supportedVersions = ['>=1.4.2 <4'];\n\nexport class MySQL2Instrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: MySQL2InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    let format: formatType | undefined;\n    function setFormatFunction(moduleExports: any) {\n      if (!format && moduleExports.format) {\n        format = moduleExports.format;\n      }\n    }\n    const patch = (ConnectionPrototype: mysqlTypes.Connection) => {\n      if (isWrapped(ConnectionPrototype.query)) {\n        this._unwrap(ConnectionPrototype, 'query');\n      }\n      this._wrap(\n        ConnectionPrototype,\n        'query',\n        this._patchQuery(format, false) as any\n      );\n      if (isWrapped(ConnectionPrototype.execute)) {\n        this._unwrap(ConnectionPrototype, 'execute');\n      }\n      this._wrap(\n        ConnectionPrototype,\n        'execute',\n        this._patchQuery(format, true) as any\n      );\n    };\n    const unpatch = (ConnectionPrototype: mysqlTypes.Connection) => {\n      this._unwrap(ConnectionPrototype, 'query');\n      this._unwrap(ConnectionPrototype, 'execute');\n    };\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mysql2',\n        supportedVersions,\n        (moduleExports: any) => {\n          setFormatFunction(moduleExports);\n          return moduleExports;\n        },\n        () => {},\n        [\n          new InstrumentationNodeModuleFile(\n            'mysql2/promise.js',\n            supportedVersions,\n            (moduleExports: any) => {\n              setFormatFunction(moduleExports);\n              return moduleExports;\n            },\n            () => {}\n          ),\n          new InstrumentationNodeModuleFile(\n            'mysql2/lib/connection.js',\n            supportedVersions,\n            (moduleExports: any) => {\n              const ConnectionPrototype: mysqlTypes.Connection =\n                getConnectionPrototypeToInstrument(moduleExports);\n              patch(ConnectionPrototype);\n              return moduleExports;\n            },\n            (moduleExports: any) => {\n              if (moduleExports === undefined) return;\n              const ConnectionPrototype: mysqlTypes.Connection =\n                getConnectionPrototypeToInstrument(moduleExports);\n              unpatch(ConnectionPrototype);\n            }\n          ),\n        ]\n      ),\n    ];\n  }\n\n  private _patchQuery(format: formatType | undefined, isPrepared: boolean) {\n    return (originalQuery: Function): Function => {\n      const thisPlugin = this;\n      return function query(\n        this: mysqlTypes.Connection,\n        query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n        _valuesOrCallback?: unknown[] | Function,\n        _callback?: Function\n      ) {\n        let values;\n        if (Array.isArray(_valuesOrCallback)) {\n          values = _valuesOrCallback;\n        } else if (arguments[2]) {\n          values = [_valuesOrCallback];\n        }\n        const { maskStatement, maskStatementHook, responseHook } =\n          thisPlugin.getConfig();\n\n        const attributes: api.Attributes = getConnectionAttributes(\n          this.config,\n          thisPlugin._dbSemconvStability,\n          thisPlugin._netSemconvStability\n        );\n        const dbQueryText = getQueryText(\n          query,\n          format,\n          values,\n          maskStatement,\n          maskStatementHook\n        );\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n          attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n          attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n        }\n\n        const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n          kind: api.SpanKind.CLIENT,\n          attributes,\n        });\n\n        if (\n          !isPrepared &&\n          thisPlugin.getConfig().addSqlCommenterCommentToQueries\n        ) {\n          arguments[0] = query =\n            typeof query === 'string'\n              ? addSqlCommenterComment(span, query)\n              : Object.assign(query, {\n                  sql: addSqlCommenterComment(span, query.sql),\n                });\n        }\n\n        const endSpan = once((err?: any, results?: any) => {\n          if (err) {\n            span.setStatus({\n              code: api.SpanStatusCode.ERROR,\n              message: err.message,\n            });\n          } else {\n            if (typeof responseHook === 'function') {\n              safeExecuteInTheMiddle(\n                () => {\n                  responseHook(span, {\n                    queryResults: results,\n                  });\n                },\n                err => {\n                  if (err) {\n                    thisPlugin._diag.warn('Failed executing responseHook', err);\n                  }\n                },\n                true\n              );\n            }\n          }\n\n          span.end();\n        });\n\n        if (arguments.length === 1) {\n          if (typeof (query as any).onResult === 'function') {\n            thisPlugin._wrap(\n              query as any,\n              'onResult',\n              thisPlugin._patchCallbackQuery(endSpan)\n            );\n          }\n\n          const streamableQuery: mysqlTypes.Query = originalQuery.apply(\n            this,\n            arguments\n          );\n\n          // `end` in mysql behaves similarly to `result` in mysql2.\n          streamableQuery\n            .once('error', err => {\n              endSpan(err);\n            })\n            .once('result', results => {\n              endSpan(undefined, results);\n            });\n\n          return streamableQuery;\n        }\n\n        if (typeof arguments[1] === 'function') {\n          thisPlugin._wrap(\n            arguments,\n            1,\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        } else if (typeof arguments[2] === 'function') {\n          thisPlugin._wrap(\n            arguments,\n            2,\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        }\n\n        return originalQuery.apply(this, arguments);\n      };\n    };\n  }\n\n  private _patchCallbackQuery(endSpan: Function) {\n    return (originalCallback: Function) => {\n      return function (\n        err: mysqlTypes.QueryError | null,\n        results?: any,\n        fields?: mysqlTypes.FieldPacket[]\n      ) {\n        endSpan(err, results);\n        return originalCallback(...arguments);\n      };\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MySQL2Instrumentation } from './instrumentation';\nexport type {\n  MySQL2InstrumentationConfig,\n  MySQL2InstrumentationExecutionResponseHook,\n  MySQL2ResponseHookInformation,\n} from './types';\n","import { MySQL2Instrumentation } from '@opentelemetry/instrumentation-mysql2';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql2';\n\nexport const instrumentMysql2 = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MySQL2Instrumentation({\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mysql2');\n      },\n    }),\n);\n\nconst _mysql2Integration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMysql2();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql2](https://www.npmjs.com/package/mysql2) library.\n *\n * For more information, see the [`mysql2Integration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql2/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nexport const mysql2Integration = defineIntegration(_mysql2Integration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDIS = 'redis' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Span, SpanStatusCode } from '@opentelemetry/api';\n\nexport const endSpan = (\n  span: Span,\n  err: NodeJS.ErrnoException | null | undefined\n) => {\n  if (err) {\n    span.recordException(err);\n    span.setStatus({\n      code: SpanStatusCode.ERROR,\n      message: err.message,\n    });\n  }\n  span.end();\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * List of regexes and the number of arguments that should be serialized for matching commands.\n * For example, HSET should serialize which key and field it's operating on, but not its value.\n * Setting the subset to -1 will serialize all arguments.\n * Commands without a match will have their first argument serialized.\n *\n * Refer to https://redis.io/commands/ for the full list.\n */\nconst serializationSubsets = [\n  {\n    regex: /^ECHO/i,\n    args: 0,\n  },\n  {\n    regex: /^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,\n    args: 1,\n  },\n  {\n    regex: /^(HSET|HMSET|LSET|LINSERT)/i,\n    args: 2,\n  },\n  {\n    regex:\n      /^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,\n    args: -1,\n  },\n];\n\nexport type DbStatementSerializer = (\n  cmdName: string,\n  cmdArgs: Array\n) => string;\n\n/**\n * Given the redis command name and arguments, return a combination of the\n * command name + the allowed arguments according to `serializationSubsets`.\n * @param cmdName The redis command name\n * @param cmdArgs The redis command arguments\n * @returns a combination of the command name + args according to `serializationSubsets`.\n */\nexport const defaultDbStatementSerializer: DbStatementSerializer = (\n  cmdName,\n  cmdArgs\n) => {\n  if (Array.isArray(cmdArgs) && cmdArgs.length) {\n    const nArgsToSerialize =\n      serializationSubsets.find(({ regex }) => {\n        return regex.test(cmdName);\n      })?.args ?? 0;\n    const argsToSerialize =\n      nArgsToSerialize >= 0 ? cmdArgs.slice(0, nArgsToSerialize) : cmdArgs;\n    if (cmdArgs.length > argsToSerialize.length) {\n      argsToSerialize.push(\n        `[${cmdArgs.length - nArgsToSerialize} other arguments]`\n      );\n    }\n    return `${cmdName} ${argsToSerialize.join(' ')}`;\n  }\n  return cmdName;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-ioredis';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  diag,\n  trace,\n  context,\n  SpanKind,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { IORedisInstrumentationConfig } from './types';\nimport { IORedisCommand, RedisInterface } from './internal-types';\nimport {\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  DB_SYSTEM_VALUE_REDIS,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { endSpan } from './utils';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst DEFAULT_CONFIG: IORedisInstrumentationConfig = {\n  requireParentSpan: true,\n};\n\nexport class IORedisInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: IORedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: IORedisInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'ioredis',\n        ['>=2.0.0 <6'],\n        (module, moduleVersion?: string) => {\n          const moduleExports =\n            module[Symbol.toStringTag] === 'Module'\n              ? module.default // ESM\n              : module; // CommonJS\n          if (isWrapped(moduleExports.prototype.sendCommand)) {\n            this._unwrap(moduleExports.prototype, 'sendCommand');\n          }\n          this._wrap(\n            moduleExports.prototype,\n            'sendCommand',\n            this._patchSendCommand(moduleVersion)\n          );\n          if (isWrapped(moduleExports.prototype.connect)) {\n            this._unwrap(moduleExports.prototype, 'connect');\n          }\n          this._wrap(\n            moduleExports.prototype,\n            'connect',\n            this._patchConnection()\n          );\n          return module;\n        },\n        module => {\n          if (module === undefined) return;\n          const moduleExports =\n            module[Symbol.toStringTag] === 'Module'\n              ? module.default // ESM\n              : module; // CommonJS\n          this._unwrap(moduleExports.prototype, 'sendCommand');\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n      ),\n    ];\n  }\n\n  /**\n   * Patch send command internal to trace requests\n   */\n  private _patchSendCommand(moduleVersion?: string) {\n    return (original: Function) => {\n      return this._traceSendCommand(original, moduleVersion);\n    };\n  }\n\n  private _patchConnection() {\n    return (original: Function) => {\n      return this._traceConnection(original);\n    };\n  }\n\n  private _traceSendCommand(original: Function, moduleVersion?: string) {\n    const instrumentation = this;\n    return function (this: RedisInterface, cmd?: IORedisCommand) {\n      if (arguments.length < 1 || typeof cmd !== 'object') {\n        return original.apply(this, arguments);\n      }\n      const config = instrumentation.getConfig();\n      const dbStatementSerializer =\n        config.dbStatementSerializer || defaultDbStatementSerializer;\n\n      const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n      if (config.requireParentSpan === true && hasNoParentSpan) {\n        return original.apply(this, arguments);\n      }\n\n      const attributes: Attributes = {};\n      const { host, port } = this.options;\n      const dbQueryText = dbStatementSerializer(cmd.name, cmd.args);\n      if (instrumentation._dbSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_REDIS;\n        attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        attributes[ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n      }\n      if (instrumentation._dbSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_REDIS;\n        attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n        attributes[ATTR_NET_PEER_PORT] = port;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n        attributes[ATTR_SERVER_PORT] = port;\n      }\n      const span = instrumentation.tracer.startSpan(cmd.name, {\n        kind: SpanKind.CLIENT,\n        attributes,\n      });\n\n      const { requestHook } = config;\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            requestHook(span, {\n              moduleVersion,\n              cmdName: cmd.name,\n              cmdArgs: cmd.args,\n            }),\n          e => {\n            if (e) {\n              diag.error('ioredis instrumentation: request hook failed', e);\n            }\n          },\n          true\n        );\n      }\n\n      try {\n        const result = original.apply(this, arguments);\n\n        const origResolve = cmd.resolve;\n        /* eslint-disable @typescript-eslint/no-explicit-any */\n        cmd.resolve = function (result: any) {\n          safeExecuteInTheMiddle(\n            () => config.responseHook?.(span, cmd.name, cmd.args, result),\n            e => {\n              if (e) {\n                diag.error('ioredis instrumentation: response hook failed', e);\n              }\n            },\n            true\n          );\n\n          endSpan(span, null);\n          origResolve(result);\n        };\n\n        const origReject = cmd.reject;\n        cmd.reject = function (err: Error) {\n          endSpan(span, err);\n          origReject(err);\n        };\n\n        return result;\n      } catch (error: any) {\n        endSpan(span, error);\n        throw error;\n      }\n    };\n  }\n\n  private _traceConnection(original: Function) {\n    const instrumentation = this;\n    return function (this: RedisInterface) {\n      const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n      if (\n        instrumentation.getConfig().requireParentSpan === true &&\n        hasNoParentSpan\n      ) {\n        return original.apply(this, arguments);\n      }\n\n      const attributes: Attributes = {};\n      const { host, port } = this.options;\n      if (instrumentation._dbSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_REDIS;\n        attributes[ATTR_DB_STATEMENT] = 'connect';\n        attributes[ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n      }\n      if (instrumentation._dbSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_REDIS;\n        attributes[ATTR_DB_QUERY_TEXT] = 'connect';\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n        attributes[ATTR_NET_PEER_PORT] = port;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n        attributes[ATTR_SERVER_PORT] = port;\n      }\n      const span = instrumentation.tracer.startSpan('connect', {\n        kind: SpanKind.CLIENT,\n        attributes,\n      });\n\n      try {\n        const client = original.apply(this, arguments);\n        endSpan(span, null);\n        return client;\n      } catch (error: any) {\n        endSpan(span, error);\n        throw error;\n      }\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { IORedisInstrumentation } from './instrumentation';\nexport type {\n  CommandArgs,\n  DbStatementSerializer,\n  IORedisInstrumentationConfig,\n  IORedisRequestHookInformation,\n  RedisRequestCustomAttributeFunction,\n  RedisResponseCustomAttributeFunction,\n} from './types';\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-redis';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, Span, SpanStatusCode } from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\n\nexport const endSpan = (span: Span, err?: Error | null) => {\n  if (err) {\n    span.setStatus({\n      code: SpanStatusCode.ERROR,\n      message: err.message,\n    });\n  }\n  span.end();\n};\n\nexport const getTracedCreateClient = (original: Function) => {\n  return function createClientTrace(this: any) {\n    const client = original.apply(this, arguments);\n    return context.bind(context.active(), client);\n  };\n};\n\nexport const getTracedCreateStreamTrace = (original: Function) => {\n  return function create_stream_trace(this: any) {\n    if (!Object.prototype.hasOwnProperty.call(this, 'stream')) {\n      Object.defineProperty(this, 'stream', {\n        get() {\n          return this._patched_redis_stream;\n        },\n        set(val: EventEmitter) {\n          context.bind(context.active(), val);\n          this._patched_redis_stream = val;\n        },\n      });\n    }\n    return original.apply(this, arguments);\n  };\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDIS = 'redis' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  endSpan,\n  getTracedCreateClient,\n  getTracedCreateStreamTrace,\n} from './utils';\nimport { RedisInstrumentationConfig } from '../types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from '../version';\nimport type { RedisCommand, RedisPluginClientTypes } from './internal-types';\nimport { Attributes, SpanKind, context, trace } from '@opentelemetry/api';\nimport {\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n  DB_SYSTEM_VALUE_REDIS,\n} from '../semconv';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\n\nexport class RedisInstrumentationV2_V3 extends InstrumentationBase {\n  static readonly COMPONENT = 'redis';\n  private _semconvStability: SemconvStability;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    super.setConfig(config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'redis',\n        ['>=2.6.0 <4'],\n        moduleExports => {\n          if (\n            isWrapped(\n              moduleExports.RedisClient.prototype['internal_send_command']\n            )\n          ) {\n            this._unwrap(\n              moduleExports.RedisClient.prototype,\n              'internal_send_command'\n            );\n          }\n          this._wrap(\n            moduleExports.RedisClient.prototype,\n            'internal_send_command',\n            this._getPatchInternalSendCommand()\n          );\n\n          if (isWrapped(moduleExports.RedisClient.prototype['create_stream'])) {\n            this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n          }\n          this._wrap(\n            moduleExports.RedisClient.prototype,\n            'create_stream',\n            this._getPatchCreateStream()\n          );\n\n          if (isWrapped(moduleExports.createClient)) {\n            this._unwrap(moduleExports, 'createClient');\n          }\n          this._wrap(\n            moduleExports,\n            'createClient',\n            this._getPatchCreateClient()\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          if (moduleExports === undefined) return;\n          this._unwrap(\n            moduleExports.RedisClient.prototype,\n            'internal_send_command'\n          );\n          this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n          this._unwrap(moduleExports, 'createClient');\n        }\n      ),\n    ];\n  }\n\n  /**\n   * Patch internal_send_command(...) to trace requests\n   */\n  private _getPatchInternalSendCommand() {\n    const instrumentation = this;\n    return function internal_send_command(original: Function) {\n      return function internal_send_command_trace(\n        this: RedisPluginClientTypes,\n        cmd?: RedisCommand\n      ) {\n        // Versions of redis (2.4+) use a single options object\n        // instead of named arguments\n        if (arguments.length !== 1 || typeof cmd !== 'object') {\n          // We don't know how to trace this call, so don't start/stop a span\n          return original.apply(this, arguments);\n        }\n\n        const config = instrumentation.getConfig();\n\n        const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n        if (config.requireParentSpan === true && hasNoParentSpan) {\n          return original.apply(this, arguments);\n        }\n\n        const dbStatementSerializer =\n          config?.dbStatementSerializer || defaultDbStatementSerializer;\n\n        const attributes: Attributes = {};\n\n        if (instrumentation._semconvStability & SemconvStability.OLD) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n            [ATTR_DB_STATEMENT]: dbStatementSerializer(cmd.command, cmd.args),\n          });\n        }\n\n        if (instrumentation._semconvStability & SemconvStability.STABLE) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_REDIS,\n            [ATTR_DB_OPERATION_NAME]: cmd.command,\n            [ATTR_DB_QUERY_TEXT]: dbStatementSerializer(cmd.command, cmd.args),\n          });\n        }\n\n        const span = instrumentation.tracer.startSpan(\n          `${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`,\n          {\n            kind: SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        // Set attributes for not explicitly typed RedisPluginClientTypes\n        if (this.connection_options) {\n          const connectionAttributes: Attributes = {};\n\n          if (instrumentation._semconvStability & SemconvStability.OLD) {\n            Object.assign(connectionAttributes, {\n              [ATTR_NET_PEER_NAME]: this.connection_options.host,\n              [ATTR_NET_PEER_PORT]: this.connection_options.port,\n            });\n          }\n\n          if (instrumentation._semconvStability & SemconvStability.STABLE) {\n            Object.assign(connectionAttributes, {\n              [ATTR_SERVER_ADDRESS]: this.connection_options.host,\n              [ATTR_SERVER_PORT]: this.connection_options.port,\n            });\n          }\n\n          span.setAttributes(connectionAttributes);\n        }\n\n        if (\n          this.address &&\n          instrumentation._semconvStability & SemconvStability.OLD\n        ) {\n          span.setAttribute(\n            ATTR_DB_CONNECTION_STRING,\n            `redis://${this.address}`\n          );\n        }\n\n        const originalCallback = arguments[0].callback;\n        if (originalCallback) {\n          const originalContext = context.active();\n          (arguments[0] as RedisCommand).callback = function callback(\n            this: unknown,\n            err: Error | null,\n            reply: T\n          ) {\n            if (config?.responseHook) {\n              const responseHook = config.responseHook;\n              safeExecuteInTheMiddle(\n                () => {\n                  responseHook(span, cmd.command, cmd.args, reply);\n                },\n                err => {\n                  if (err) {\n                    instrumentation._diag.error(\n                      'Error executing responseHook',\n                      err\n                    );\n                  }\n                },\n                true\n              );\n            }\n\n            endSpan(span, err);\n            return context.with(\n              originalContext,\n              originalCallback,\n              this,\n              ...arguments\n            );\n          };\n        }\n        try {\n          // Span will be ended in callback\n          return original.apply(this, arguments);\n        } catch (rethrow: any) {\n          endSpan(span, rethrow);\n          throw rethrow; // rethrow after ending span\n        }\n      };\n    };\n  }\n\n  private _getPatchCreateClient() {\n    return function createClient(original: Function) {\n      return getTracedCreateClient(original);\n    };\n  }\n\n  private _getPatchCreateStream() {\n    return function createReadStream(original: Function) {\n      return getTracedCreateStreamTrace(original);\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Attributes, DiagLogger } from '@opentelemetry/api';\nimport {\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_SYSTEM,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_VALUE_REDIS,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n} from '../semconv';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\n\nexport function getClientAttributes(\n  diag: DiagLogger,\n  options: any,\n  semconvStability: SemconvStability\n): Attributes {\n  const attributes: Attributes = {};\n\n  if (semconvStability & SemconvStability.OLD) {\n    Object.assign(attributes, {\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n      [ATTR_NET_PEER_NAME]: options?.socket?.host,\n      [ATTR_NET_PEER_PORT]: options?.socket?.port,\n      [ATTR_DB_CONNECTION_STRING]:\n        removeCredentialsFromDBConnectionStringAttribute(diag, options?.url),\n    });\n  }\n\n  if (semconvStability & SemconvStability.STABLE) {\n    Object.assign(attributes, {\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_REDIS,\n      [ATTR_SERVER_ADDRESS]: options?.socket?.host,\n      [ATTR_SERVER_PORT]: options?.socket?.port,\n    });\n  }\n\n  return attributes;\n}\n\n/**\n * removeCredentialsFromDBConnectionStringAttribute removes basic auth from url and user_pwd from query string\n *\n * Examples:\n *   redis://user:pass@localhost:6379/mydb => redis://localhost:6379/mydb\n *   redis://localhost:6379?db=mydb&user_pwd=pass => redis://localhost:6379?db=mydb\n */\nfunction removeCredentialsFromDBConnectionStringAttribute(\n  diag: DiagLogger,\n  url?: unknown\n): string | undefined {\n  if (typeof url !== 'string' || !url) {\n    return;\n  }\n\n  try {\n    const u = new URL(url);\n    u.searchParams.delete('user_pwd');\n    u.username = '';\n    u.password = '';\n    return u.href;\n  } catch (err) {\n    diag.error('failed to sanitize redis connection url', err);\n  }\n  return;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  trace,\n  context,\n  SpanKind,\n  Span,\n  SpanStatusCode,\n} from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { getClientAttributes } from './utils';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\nimport { RedisInstrumentationConfig } from '../types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from '../version';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_DB_STATEMENT } from '../semconv';\nimport type { MultiErrorReply } from './internal-types';\n\nconst OTEL_OPEN_SPANS = Symbol(\n  'opentelemetry.instrumentation.redis.open_spans'\n);\nconst MULTI_COMMAND_OPTIONS = Symbol(\n  'opentelemetry.instrumentation.redis.multi_command_options'\n);\n\ninterface MutliCommandInfo {\n  span: Span;\n  commandName: string;\n  commandArgs: Array;\n}\n\nexport class RedisInstrumentationV4_V5 extends InstrumentationBase {\n  static readonly COMPONENT = 'redis';\n  private _semconvStability: SemconvStability;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    super.setConfig(config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  protected init() {\n    // @node-redis/client is a new package introduced and consumed by 'redis 4.0.x'\n    // on redis@4.1.0 it was changed to @redis/client.\n    // we will instrument both packages\n    return [\n      this._getInstrumentationNodeModuleDefinition('@redis/client'),\n      this._getInstrumentationNodeModuleDefinition('@node-redis/client'),\n    ];\n  }\n\n  private _getInstrumentationNodeModuleDefinition(\n    basePackageName: string\n  ): InstrumentationNodeModuleDefinition {\n    const commanderModuleFile = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/commander.js`,\n      ['^1.0.0'],\n      (moduleExports: any, moduleVersion?: string) => {\n        const transformCommandArguments =\n          moduleExports.transformCommandArguments;\n        if (!transformCommandArguments) {\n          this._diag.error(\n            'internal instrumentation error, missing transformCommandArguments function'\n          );\n          return moduleExports;\n        }\n\n        // function name and signature changed in redis 4.1.0 from 'extendWithCommands' to 'attachCommands'\n        // the matching internal package names starts with 1.0.x (for redis 4.0.x)\n        const functionToPatch = moduleVersion?.startsWith('1.0.')\n          ? 'extendWithCommands'\n          : 'attachCommands';\n        // this is the function that extend a redis client with a list of commands.\n        // the function patches the commandExecutor to record a span\n        if (isWrapped(moduleExports?.[functionToPatch])) {\n          this._unwrap(moduleExports, functionToPatch);\n        }\n        this._wrap(\n          moduleExports,\n          functionToPatch,\n          this._getPatchExtendWithCommands(transformCommandArguments)\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        if (isWrapped(moduleExports?.extendWithCommands)) {\n          this._unwrap(moduleExports, 'extendWithCommands');\n        }\n        if (isWrapped(moduleExports?.attachCommands)) {\n          this._unwrap(moduleExports, 'attachCommands');\n        }\n      }\n    );\n\n    const multiCommanderModule = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/client/multi-command.js`,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        const redisClientMultiCommandPrototype =\n          moduleExports?.default?.prototype;\n\n        if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'exec');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'exec',\n          this._getPatchMultiCommandsExec(false)\n        );\n        if (isWrapped(redisClientMultiCommandPrototype?.execAsPipeline)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'execAsPipeline',\n          this._getPatchMultiCommandsExec(true)\n        );\n\n        if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'addCommand',\n          this._getPatchMultiCommandsAddCommand()\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        const redisClientMultiCommandPrototype =\n          moduleExports?.default?.prototype;\n        if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'exec');\n        }\n        if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n        }\n      }\n    );\n\n    const clientIndexModule = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/client/index.js`,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        const redisClientPrototype = moduleExports?.default?.prototype;\n\n        // In some @redis/client versions 'multi' is a method. In later\n        // versions, as of https://github.com/redis/node-redis/pull/2324,\n        // 'MULTI' is a method and 'multi' is a property defined in the\n        // constructor that points to 'MULTI', and therefore it will not\n        // be defined on the prototype.\n        if (redisClientPrototype?.multi) {\n          if (isWrapped(redisClientPrototype?.multi)) {\n            this._unwrap(redisClientPrototype, 'multi');\n          }\n          this._wrap(\n            redisClientPrototype,\n            'multi',\n            this._getPatchRedisClientMulti()\n          );\n        }\n        if (redisClientPrototype?.MULTI) {\n          if (isWrapped(redisClientPrototype?.MULTI)) {\n            this._unwrap(redisClientPrototype, 'MULTI');\n          }\n          this._wrap(\n            redisClientPrototype,\n            'MULTI',\n            this._getPatchRedisClientMulti()\n          );\n        }\n\n        if (isWrapped(redisClientPrototype?.sendCommand)) {\n          this._unwrap(redisClientPrototype, 'sendCommand');\n        }\n        this._wrap(\n          redisClientPrototype,\n          'sendCommand',\n          this._getPatchRedisClientSendCommand()\n        );\n\n        this._wrap(\n          redisClientPrototype,\n          'connect',\n          this._getPatchedClientConnect()\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        const redisClientPrototype = moduleExports?.default?.prototype;\n        if (isWrapped(redisClientPrototype?.multi)) {\n          this._unwrap(redisClientPrototype, 'multi');\n        }\n        if (isWrapped(redisClientPrototype?.MULTI)) {\n          this._unwrap(redisClientPrototype, 'MULTI');\n        }\n        if (isWrapped(redisClientPrototype?.sendCommand)) {\n          this._unwrap(redisClientPrototype, 'sendCommand');\n        }\n      }\n    );\n\n    return new InstrumentationNodeModuleDefinition(\n      basePackageName,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        return moduleExports;\n      },\n      () => {},\n      [commanderModuleFile, multiCommanderModule, clientIndexModule]\n    );\n  }\n\n  // serves both for redis 4.0.x where function name is extendWithCommands\n  // and redis ^4.1.0 where function name is attachCommands\n  private _getPatchExtendWithCommands(transformCommandArguments: Function) {\n    const plugin = this;\n    return function extendWithCommandsPatchWrapper(original: Function) {\n      return function extendWithCommandsPatch(this: any, config: any) {\n        if (config?.BaseClass?.name !== 'RedisClient') {\n          return original.apply(this, arguments);\n        }\n\n        const origExecutor = config.executor;\n        config.executor = function (\n          this: any,\n          command: any,\n          args: Array\n        ) {\n          const redisCommandArguments = transformCommandArguments(\n            command,\n            args\n          ).args;\n          return plugin._traceClientCommand(\n            origExecutor,\n            this,\n            arguments,\n            redisCommandArguments\n          );\n        };\n        return original.apply(this, arguments);\n      };\n    };\n  }\n\n  private _getPatchMultiCommandsExec(isPipeline: boolean) {\n    const plugin = this;\n    return function execPatchWrapper(original: Function) {\n      return function execPatch(this: any) {\n        const execRes = original.apply(this, arguments);\n        if (typeof execRes?.then !== 'function') {\n          plugin._diag.error(\n            'non-promise result when patching exec/execAsPipeline'\n          );\n          return execRes;\n        }\n\n        return execRes\n          .then((redisRes: unknown[]) => {\n            const openSpans = this[OTEL_OPEN_SPANS];\n            plugin._endSpansWithRedisReplies(openSpans, redisRes, isPipeline);\n            return redisRes;\n          })\n          .catch((err: Error) => {\n            const openSpans = this[OTEL_OPEN_SPANS];\n            if (!openSpans) {\n              plugin._diag.error(\n                'cannot find open spans to end for multi/pipeline'\n              );\n            } else {\n              const replies =\n                err.constructor.name === 'MultiErrorReply'\n                  ? (err as MultiErrorReply).replies\n                  : new Array(openSpans.length).fill(err);\n              plugin._endSpansWithRedisReplies(openSpans, replies, isPipeline);\n            }\n            return Promise.reject(err);\n          });\n      };\n    };\n  }\n\n  private _getPatchMultiCommandsAddCommand() {\n    const plugin = this;\n    return function addCommandWrapper(original: Function) {\n      return function addCommandPatch(this: any, args: Array) {\n        return plugin._traceClientCommand(original, this, arguments, args);\n      };\n    };\n  }\n\n  private _getPatchRedisClientMulti() {\n    return function multiPatchWrapper(original: Function) {\n      return function multiPatch(this: any) {\n        const multiRes = original.apply(this, arguments);\n        multiRes[MULTI_COMMAND_OPTIONS] = this.options;\n        return multiRes;\n      };\n    };\n  }\n\n  private _getPatchRedisClientSendCommand() {\n    const plugin = this;\n    return function sendCommandWrapper(original: Function) {\n      return function sendCommandPatch(\n        this: any,\n        args: Array\n      ) {\n        return plugin._traceClientCommand(original, this, arguments, args);\n      };\n    };\n  }\n\n  private _getPatchedClientConnect() {\n    const plugin = this;\n    return function connectWrapper(original: Function) {\n      return function patchedConnect(this: any): Promise {\n        const options = this.options;\n        const attributes = getClientAttributes(\n          plugin._diag,\n          options,\n          plugin._semconvStability\n        );\n\n        const span = plugin.tracer.startSpan(\n          `${RedisInstrumentationV4_V5.COMPONENT}-connect`,\n          {\n            kind: SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        const res = context.with(trace.setSpan(context.active(), span), () => {\n          return original.apply(this);\n        });\n\n        return res\n          .then((result: unknown) => {\n            span.end();\n            return result;\n          })\n          .catch((error: Error) => {\n            span.recordException(error);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n            span.end();\n            return Promise.reject(error);\n          });\n      };\n    };\n  }\n\n  private _traceClientCommand(\n    origFunction: Function,\n    origThis: any,\n    origArguments: IArguments,\n    redisCommandArguments: Array\n  ) {\n    const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n    if (hasNoParentSpan && this.getConfig().requireParentSpan) {\n      return origFunction.apply(origThis, origArguments);\n    }\n\n    const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS];\n\n    const commandName = redisCommandArguments[0] as string; // types also allows it to be a Buffer, but in practice it only string\n    const commandArgs = redisCommandArguments.slice(1);\n\n    const dbStatementSerializer =\n      this.getConfig().dbStatementSerializer || defaultDbStatementSerializer;\n\n    const attributes = getClientAttributes(\n      this._diag,\n      clientOptions,\n      this._semconvStability\n    );\n    if (this._semconvStability & SemconvStability.STABLE) {\n      attributes[ATTR_DB_OPERATION_NAME] = commandName;\n    }\n    try {\n      const dbStatement = dbStatementSerializer(commandName, commandArgs);\n      if (dbStatement != null) {\n        if (this._semconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_STATEMENT] = dbStatement;\n        }\n        if (this._semconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_QUERY_TEXT] = dbStatement;\n        }\n      }\n    } catch (e) {\n      this._diag.error('dbStatementSerializer throw an exception', e, {\n        commandName,\n      });\n    }\n\n    const span = this.tracer.startSpan(\n      `${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`,\n      {\n        kind: SpanKind.CLIENT,\n        attributes,\n      }\n    );\n\n    const res = context.with(trace.setSpan(context.active(), span), () => {\n      return origFunction.apply(origThis, origArguments);\n    });\n    if (typeof res?.then === 'function') {\n      res.then(\n        (redisRes: unknown) => {\n          this._endSpanWithResponse(\n            span,\n            commandName,\n            commandArgs,\n            redisRes,\n            undefined\n          );\n        },\n        (err: any) => {\n          this._endSpanWithResponse(span, commandName, commandArgs, null, err);\n        }\n      );\n    } else {\n      const redisClientMultiCommand = res as {\n        [OTEL_OPEN_SPANS]?: Array;\n      };\n      redisClientMultiCommand[OTEL_OPEN_SPANS] =\n        redisClientMultiCommand[OTEL_OPEN_SPANS] || [];\n      redisClientMultiCommand[OTEL_OPEN_SPANS]!.push({\n        span,\n        commandName,\n        commandArgs,\n      });\n    }\n    return res;\n  }\n\n  private _endSpansWithRedisReplies(\n    openSpans: Array,\n    replies: unknown[],\n    isPipeline = false\n  ) {\n    if (!openSpans) {\n      return this._diag.error(\n        'cannot find open spans to end for redis multi/pipeline'\n      );\n    }\n    if (replies.length !== openSpans.length) {\n      return this._diag.error(\n        'number of multi command spans does not match response from redis'\n      );\n    }\n    // Determine a single operation name for the batch of commands.\n    // If all commands are identical, include the command name (e.g., \"MULTI SET\").\n    // Otherwise, use a generic \"MULTI\" or \"PIPELINE\" label for the span.\n    const allCommands = openSpans.map(s => s.commandName);\n    const allSameCommand = allCommands.every(cmd => cmd === allCommands[0]);\n    const operationName = allSameCommand\n      ? (isPipeline ? 'PIPELINE ' : 'MULTI ') + allCommands[0]\n      : isPipeline\n        ? 'PIPELINE'\n        : 'MULTI';\n\n    for (let i = 0; i < openSpans.length; i++) {\n      const { span, commandArgs } = openSpans[i];\n      const currCommandRes = replies[i];\n      const [res, err] =\n        currCommandRes instanceof Error\n          ? [null, currCommandRes]\n          : [currCommandRes, undefined];\n\n      if (this._semconvStability & SemconvStability.STABLE) {\n        span.setAttribute(ATTR_DB_OPERATION_NAME, operationName);\n      }\n\n      this._endSpanWithResponse(span, allCommands[i], commandArgs, res, err);\n    }\n  }\n\n  private _endSpanWithResponse(\n    span: Span,\n    commandName: string,\n    commandArgs: Array,\n    response: unknown,\n    error: Error | undefined\n  ) {\n    const { responseHook } = this.getConfig();\n    if (!error && responseHook) {\n      try {\n        responseHook(span, commandName, commandArgs, response);\n      } catch (err) {\n        this._diag.error('responseHook throw an exception', err);\n      }\n    }\n    if (error) {\n      span.recordException(error);\n      span.setStatus({ code: SpanStatusCode.ERROR, message: error?.message });\n    }\n    span.end();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  InstrumentationBase,\n  InstrumentationModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport { RedisInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { RedisInstrumentationV2_V3 } from './v2-v3/instrumentation';\nimport { TracerProvider } from '@opentelemetry/api';\nimport { RedisInstrumentationV4_V5 } from './v4-v5/instrumentation';\n\nconst DEFAULT_CONFIG: RedisInstrumentationConfig = {\n  requireParentSpan: false,\n};\n\n// Wrapper RedisInstrumentation that address all supported versions\nexport class RedisInstrumentation extends InstrumentationBase {\n  private instrumentationV2_V3: RedisInstrumentationV2_V3;\n  private instrumentationV4_V5: RedisInstrumentationV4_V5;\n\n  // this is used to bypass a flaw in the base class constructor, which is calling\n  // member functions before the constructor has a chance to fully initialize the member variables.\n  private initialized = false;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    const resolvedConfig = { ...DEFAULT_CONFIG, ...config };\n    super(PACKAGE_NAME, PACKAGE_VERSION, resolvedConfig);\n\n    this.instrumentationV2_V3 = new RedisInstrumentationV2_V3(this.getConfig());\n    this.instrumentationV4_V5 = new RedisInstrumentationV4_V5(this.getConfig());\n    this.initialized = true;\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    const newConfig = { ...DEFAULT_CONFIG, ...config };\n    super.setConfig(newConfig);\n    if (!this.initialized) {\n      return;\n    }\n\n    this.instrumentationV2_V3.setConfig(newConfig);\n    this.instrumentationV4_V5.setConfig(newConfig);\n  }\n\n  override init() {}\n\n  // Return underlying modules, as consumers (like https://github.com/DrewCorlin/opentelemetry-node-bundler-plugins) may\n  // expect them to be populated without knowing that this module wraps 2 instrumentations\n  override getModuleDefinitions(): InstrumentationModuleDefinition[] {\n    return [\n      ...this.instrumentationV2_V3.getModuleDefinitions(),\n      ...this.instrumentationV4_V5.getModuleDefinitions(),\n    ];\n  }\n\n  override setTracerProvider(tracerProvider: TracerProvider) {\n    super.setTracerProvider(tracerProvider);\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.setTracerProvider(tracerProvider);\n    this.instrumentationV4_V5.setTracerProvider(tracerProvider);\n  }\n\n  override enable() {\n    super.enable();\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.enable();\n    this.instrumentationV4_V5.enable();\n  }\n\n  override disable() {\n    super.disable();\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.disable();\n    this.instrumentationV4_V5.disable();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { RedisInstrumentation } from './redis';\nexport type {\n  DbStatementSerializer,\n  RedisInstrumentationConfig,\n  RedisResponseCustomAttributeFunction,\n} from './types';\n","import type { CommandArgs as IORedisCommandArgs } from '@opentelemetry/instrumentation-ioredis';\n\nconst SINGLE_ARG_COMMANDS = ['get', 'set', 'setex'];\n\nexport const GET_COMMANDS = ['get', 'mget'];\nexport const SET_COMMANDS = ['set', 'setex'];\n// todo: del, expire\n\n/** Checks if a given command is in the list of redis commands.\n *  Useful because commands can come in lowercase or uppercase (depending on the library). */\nexport function isInCommands(redisCommands: string[], command: string): boolean {\n  return redisCommands.includes(command.toLowerCase());\n}\n\n/** Determine cache operation based on redis statement */\nexport function getCacheOperation(\n  command: string,\n): 'cache.get' | 'cache.put' | 'cache.remove' | 'cache.flush' | undefined {\n  if (isInCommands(GET_COMMANDS, command)) {\n    return 'cache.get';\n  } else if (isInCommands(SET_COMMANDS, command)) {\n    return 'cache.put';\n  } else {\n    return undefined;\n  }\n}\n\nfunction keyHasPrefix(key: string, prefixes: string[]): boolean {\n  return prefixes.some(prefix => key.startsWith(prefix));\n}\n\n/** Safely converts a redis key to a string (comma-separated if there are multiple keys) */\nexport function getCacheKeySafely(redisCommand: string, cmdArgs: IORedisCommandArgs): string[] | undefined {\n  try {\n    if (cmdArgs.length === 0) {\n      return undefined;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const processArg = (arg: string | Buffer | number | any[]): string[] => {\n      if (typeof arg === 'string' || typeof arg === 'number' || Buffer.isBuffer(arg)) {\n        return [arg.toString()];\n      } else if (Array.isArray(arg)) {\n        return flatten(arg.map(arg => processArg(arg)));\n      } else {\n        return [''];\n      }\n    };\n\n    const firstArg = cmdArgs[0];\n    if (isInCommands(SINGLE_ARG_COMMANDS, redisCommand) && firstArg != null) {\n      return processArg(firstArg);\n    }\n\n    return flatten(cmdArgs.map(arg => processArg(arg)));\n  } catch {\n    return undefined;\n  }\n}\n\n/** Determines whether a redis operation should be considered as \"cache operation\" by checking if a key is prefixed.\n *  We only support certain commands (such as 'set', 'get', 'mget'). */\nexport function shouldConsiderForCache(redisCommand: string, keys: string[], prefixes: string[]): boolean {\n  if (!getCacheOperation(redisCommand)) {\n    return false;\n  }\n\n  for (const key of keys) {\n    if (keyHasPrefix(key, prefixes)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/** Calculates size based on the cache response value */\nexport function calculateCacheItemSize(response: unknown): number | undefined {\n  const getSize = (value: unknown): number | undefined => {\n    try {\n      if (Buffer.isBuffer(value)) return value.byteLength;\n      else if (typeof value === 'string') return value.length;\n      else if (typeof value === 'number') return value.toString().length;\n      else if (value === null || value === undefined) return 0;\n      return JSON.stringify(value).length;\n    } catch {\n      return undefined;\n    }\n  };\n\n  return Array.isArray(response)\n    ? response.reduce((acc: number | undefined, curr) => {\n        const size = getSize(curr);\n        return typeof size === 'number' ? (acc !== undefined ? acc + size : size) : acc;\n      }, 0)\n    : getSize(response);\n}\n\ntype NestedArray = Array | T>;\n\nfunction flatten(input: NestedArray): T[] {\n  const result: T[] = [];\n\n  const flattenHelper = (input: NestedArray): void => {\n    input.forEach((el: T | NestedArray) => {\n      if (Array.isArray(el)) {\n        flattenHelper(el);\n      } else {\n        result.push(el);\n      }\n    });\n  };\n\n  flattenHelper(input);\n  return result;\n}\n","import type { Span } from '@opentelemetry/api';\nimport type { RedisResponseCustomAttributeFunction } from '@opentelemetry/instrumentation-ioredis';\nimport { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  defineIntegration,\n  SEMANTIC_ATTRIBUTE_CACHE_HIT,\n  SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,\n  SEMANTIC_ATTRIBUTE_CACHE_KEY,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n  truncate,\n} from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport {\n  calculateCacheItemSize,\n  GET_COMMANDS,\n  getCacheKeySafely,\n  getCacheOperation,\n  isInCommands,\n  shouldConsiderForCache,\n} from '../../utils/redisCache';\n\ninterface RedisOptions {\n  /**\n   * Define cache prefixes for cache keys that should be captured as a cache span.\n   *\n   * Setting this to, for example, `['user:']` will capture cache keys that start with `user:`.\n   */\n  cachePrefixes?: string[];\n  /**\n   * Maximum length of the cache key added to the span description. If the key exceeds this length, it will be truncated.\n   *\n   * Passing `0` will use the full cache key without truncation.\n   *\n   * By default, the full cache key is used.\n   */\n  maxCacheKeyLength?: number;\n}\n\nconst INTEGRATION_NAME = 'Redis';\n\n/* Only exported for testing purposes */\nexport let _redisOptions: RedisOptions = {};\n\n/* Only exported for testing purposes */\nexport const cacheResponseHook: RedisResponseCustomAttributeFunction = (\n  span: Span,\n  redisCommand,\n  cmdArgs,\n  response,\n) => {\n  span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.redis');\n\n  const safeKey = getCacheKeySafely(redisCommand, cmdArgs);\n  const cacheOperation = getCacheOperation(redisCommand);\n\n  if (\n    !safeKey ||\n    !cacheOperation ||\n    !_redisOptions.cachePrefixes ||\n    !shouldConsiderForCache(redisCommand, safeKey, _redisOptions.cachePrefixes)\n  ) {\n    // not relevant for cache\n    return;\n  }\n\n  // otel/ioredis seems to be using the old standard, as there was a change to those params: https://github.com/open-telemetry/opentelemetry-specification/issues/3199\n  // We are using params based on the docs: https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/\n  const networkPeerAddress = spanToJSON(span).data['net.peer.name'];\n  const networkPeerPort = spanToJSON(span).data['net.peer.port'];\n  if (networkPeerPort && networkPeerAddress) {\n    span.setAttributes({ 'network.peer.address': networkPeerAddress, 'network.peer.port': networkPeerPort });\n  }\n\n  const cacheItemSize = calculateCacheItemSize(response);\n\n  if (cacheItemSize) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, cacheItemSize);\n  }\n\n  if (isInCommands(GET_COMMANDS, redisCommand) && cacheItemSize !== undefined) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_HIT, cacheItemSize > 0);\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: cacheOperation,\n    [SEMANTIC_ATTRIBUTE_CACHE_KEY]: safeKey,\n  });\n\n  // todo: change to string[] once EAP supports it\n  const spanDescription = safeKey.join(', ');\n\n  span.updateName(\n    _redisOptions.maxCacheKeyLength ? truncate(spanDescription, _redisOptions.maxCacheKeyLength) : spanDescription,\n  );\n};\n\nconst instrumentIORedis = generateInstrumentOnce(`${INTEGRATION_NAME}.IORedis`, () => {\n  return new IORedisInstrumentation({\n    responseHook: cacheResponseHook,\n  });\n});\n\nconst instrumentRedisModule = generateInstrumentOnce(`${INTEGRATION_NAME}.Redis`, () => {\n  return new RedisInstrumentation({\n    responseHook: cacheResponseHook,\n  });\n});\n\n/** To be able to preload all Redis OTel instrumentations with just one ID (\"Redis\"), all the instrumentations are generated in this one function  */\nexport const instrumentRedis = Object.assign(\n  (): void => {\n    instrumentIORedis();\n    instrumentRedisModule();\n\n    // todo: implement them gradually\n    // new LegacyRedisInstrumentation({}),\n  },\n  { id: INTEGRATION_NAME },\n);\n\nconst _redisIntegration = ((options: RedisOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      _redisOptions = options;\n      instrumentRedis();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [redis](https://www.npmjs.com/package/redis) and\n * [ioredis](https://www.npmjs.com/package/ioredis) libraries.\n *\n * For more information, see the [`redisIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/redis/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.redisIntegration()],\n * });\n * ```\n */\nexport const redisIntegration = defineIntegration(_redisIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as pgTypes from 'pg';\nimport type * as pgPoolTypes from 'pg-pool';\n\nexport type PostgresCallback = (err: Error, res: object) => unknown;\n\n// NB: this type describes the shape of a parsed, normalized form of the\n// connection information that's stored inside each pg.Client instance. It's\n// _not_ the same as the ConnectionConfig type exported from `@types/pg`. That\n// type defines how data must be _passed in_ when creating a new `pg.Client`,\n// which doesn't necessarily match the normalized internal form. E.g., a user\n// can call `new Client({ connectionString: '...' }), but `connectionString`\n// will never show up in the type below, because only the extracted host, port,\n// etc. are recorded in this normalized config. The keys listed below are also\n// incomplete, which is fine because the type is internal and these keys are the\n// only ones our code is reading. See https://github.com/brianc/node-postgres/blob/fde5ec586e49258dfc4a2fcd861fcdecb4794fc3/lib/client.js#L25\nexport interface PgParsedConnectionParams {\n  database?: string;\n  host?: string;\n  namespace?: string;\n  port?: number;\n  user?: string;\n}\n\nexport interface PgClientExtended extends pgTypes.Client {\n  connectionParameters: PgParsedConnectionParams;\n}\n\nexport type PgPoolCallback = (\n  err: Error,\n  client: any,\n  done: (release?: any) => void\n) => void;\n\nexport interface PgPoolOptionsParams {\n  allowExitOnIdle: boolean;\n  connectionString?: string; // connection string if provided directly\n  database: string;\n  host: string;\n  idleTimeoutMillis: number; // the minimum amount of time that an object may sit idle in the pool before it is eligible for eviction due to idle time\n  max: number;\n  maxClient: number; // maximum size of the pool\n  maxLifetimeSeconds: number;\n  maxUses: number;\n  namespace: string;\n  port: number;\n  user: string;\n}\n\nexport const EVENT_LISTENERS_SET = Symbol(\n  'opentelemetry.instrumentation.pg.eventListenersSet'\n);\n\nexport interface PgPoolExtended extends pgPoolTypes {\n  options: PgPoolOptionsParams;\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n\nexport type PgClientConnect = (callback?: Function) => Promise | void;\n","/*\n * Copyright The OpenTelemetry Authors\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// Postgresql specific attributes not covered by semantic conventions\nexport enum AttributeNames {\n  PG_VALUES = 'db.postgresql.values',\n  PG_PLAN = 'db.postgresql.plan',\n  IDLE_TIMEOUT_MILLIS = 'db.postgresql.idle.timeout.millis',\n  MAX_CLIENT = 'db.postgresql.max.client',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, instrumentation **SHOULD** use a combination of parameters that would make the name unique, for example, combining attributes `server.address`, `server.port`, and `db.namespace`, formatted as `server.address:server.port/db.namespace`. Instrumentations that generate connection pool name following different patterns **SHOULD** document it.\n *\n * @example myDataSource\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CLIENT_CONNECTION_POOL_NAME =\n  'db.client.connection.pool.name' as const;\n\n/**\n * The state of a connection in the pool\n *\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CLIENT_CONNECTION_STATE =\n  'db.client.connection.state' as const;\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle' as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used' as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql' as const;\n\n/**\n * The number of connections that are currently in state described by the `state` attribute\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_COUNT =\n  'db.client.connection.count' as const;\n\n/**\n * The number of current pending requests for an open connection\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS =\n  'db.client.connection.pending_requests' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// Contains span names produced by instrumentation\nexport enum SpanNames {\n  QUERY_PREFIX = 'pg.query',\n  CONNECT = 'pg.connect',\n  POOL_CONNECT = 'pg-pool.connect',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  context,\n  trace,\n  Span,\n  SpanStatusCode,\n  Tracer,\n  SpanKind,\n  diag,\n  UpDownCounter,\n  Attributes,\n} from '@opentelemetry/api';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  ATTR_DB_QUERY_TEXT,\n  DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CLIENT_CONNECTION_POOL_NAME,\n  ATTR_DB_CLIENT_CONNECTION_STATE,\n  DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n  DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  DB_SYSTEM_VALUE_POSTGRESQL,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_NET_PEER_PORT,\n  ATTR_NET_PEER_NAME,\n  ATTR_DB_STATEMENT,\n} from './semconv';\nimport {\n  PgClientExtended,\n  PostgresCallback,\n  PgPoolCallback,\n  PgPoolExtended,\n  PgParsedConnectionParams,\n  PgPoolOptionsParams,\n} from './internal-types';\nimport { PgInstrumentationConfig } from './types';\nimport type * as pgTypes from 'pg';\nimport {\n  safeExecuteInTheMiddle,\n  SemconvStability,\n} from '@opentelemetry/instrumentation';\nimport { SpanNames } from './enums/SpanNames';\n\n/**\n * Helper function to get a low cardinality span name from whatever info we have\n * about the query.\n *\n * This is tricky, because we don't have most of the information (table name,\n * operation name, etc) the spec recommends using to build a low-cardinality\n * value w/o parsing. So, we use db.name and assume that, if the query's a named\n * prepared statement, those `name` values will be low cardinality. If we don't\n * have a named prepared statement, we try to parse an operation (despite the\n * spec's warnings).\n *\n * @params dbName The name of the db against which this query is being issued,\n *   which could be missing if no db name was given at the time that the\n *   connection was established.\n * @params queryConfig Information we have about the query being issued, typed\n *   to reflect only the validation we've actually done on the args to\n *   `client.query()`. This will be undefined if `client.query()` was called\n *   with invalid arguments.\n */\nexport function getQuerySpanName(\n  dbName: string | undefined,\n  queryConfig?: { text: string; name?: unknown }\n) {\n  // NB: when the query config is invalid, we omit the dbName too, so that\n  // someone (or some tool) reading the span name doesn't misinterpret the\n  // dbName as being a prepared statement or sql commit name.\n  if (!queryConfig) return SpanNames.QUERY_PREFIX;\n\n  // Either the name of a prepared statement; or an attempted parse\n  // of the SQL command, normalized to uppercase; or unknown.\n  const command =\n    typeof queryConfig.name === 'string' && queryConfig.name\n      ? queryConfig.name\n      : parseNormalizedOperationName(queryConfig.text);\n\n  return `${SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`;\n}\n\nexport function parseNormalizedOperationName(queryText: string) {\n  // Trim the query text to handle leading/trailing whitespace\n  const trimmedQuery = queryText.trim();\n  const indexOfFirstSpace = trimmedQuery.indexOf(' ');\n  let sqlCommand =\n    indexOfFirstSpace === -1\n      ? trimmedQuery\n      : trimmedQuery.slice(0, indexOfFirstSpace);\n  sqlCommand = sqlCommand.toUpperCase();\n\n  // Handle query text being \"COMMIT;\", which has an extra semicolon before the space.\n  return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand;\n}\n\nexport function parseAndMaskConnectionString(connectionString: string): string {\n  try {\n    // Parse the connection string\n    const url = new URL(connectionString);\n\n    // Remove all auth information (username and password)\n    url.username = '';\n    url.password = '';\n\n    return url.toString();\n  } catch (e) {\n    // If parsing fails, return a generic connection string\n    return 'postgresql://localhost:5432/';\n  }\n}\n\nexport function getConnectionString(\n  params: PgParsedConnectionParams | PgPoolOptionsParams\n) {\n  if ('connectionString' in params && params.connectionString) {\n    return parseAndMaskConnectionString(params.connectionString);\n  }\n  const host = params.host || 'localhost';\n  const port = params.port || 5432;\n  const database = params.database || '';\n  return `postgresql://${host}:${port}/${database}`;\n}\n\nfunction getPort(port: number | undefined): number | undefined {\n  // Port may be NaN as parseInt() is used on the value, passing null will result in NaN being parsed.\n  // https://github.com/brianc/node-postgres/blob/2a8efbee09a284be12748ed3962bc9b816965e36/packages/pg/lib/connection-parameters.js#L66\n  if (Number.isInteger(port)) {\n    return port;\n  }\n\n  // Unable to find the default used in pg code, so falling back to 'undefined'.\n  return undefined;\n}\n\nexport function getSemanticAttributesFromConnection(\n  params: PgParsedConnectionParams,\n  semconvStability: SemconvStability\n) {\n  let attributes: Attributes = {};\n\n  if (semconvStability & SemconvStability.OLD) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n      [ATTR_DB_NAME]: params.database,\n      [ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n      [ATTR_DB_USER]: params.user,\n      [ATTR_NET_PEER_NAME]: params.host, // required\n      [ATTR_NET_PEER_PORT]: getPort(params.port),\n    };\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n      [ATTR_DB_NAMESPACE]: params.namespace,\n      [ATTR_SERVER_ADDRESS]: params.host,\n      [ATTR_SERVER_PORT]: getPort(params.port),\n    };\n  }\n\n  return attributes;\n}\n\nexport function getSemanticAttributesFromPoolConnection(\n  params: PgPoolOptionsParams,\n  semconvStability: SemconvStability\n) {\n  let url: URL | undefined;\n  try {\n    url = params.connectionString\n      ? new URL(params.connectionString)\n      : undefined;\n  } catch (e) {\n    url = undefined;\n  }\n  let attributes: Attributes = {\n    [AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis,\n    [AttributeNames.MAX_CLIENT]: params.maxClient,\n  };\n\n  if (semconvStability & SemconvStability.OLD) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n      [ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database,\n      [ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n      [ATTR_NET_PEER_NAME]: url?.hostname ?? params.host,\n      [ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port),\n      [ATTR_DB_USER]: url?.username ?? params.user,\n    };\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n      [ATTR_DB_NAMESPACE]: params.namespace,\n      [ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host,\n      [ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port),\n    };\n  }\n\n  return attributes;\n}\n\nexport function shouldSkipInstrumentation(\n  instrumentationConfig: PgInstrumentationConfig\n) {\n  return (\n    instrumentationConfig.requireParentSpan === true &&\n    trace.getSpan(context.active()) === undefined\n  );\n}\n\n// Create a span from our normalized queryConfig object,\n// or return a basic span if no queryConfig was given/could be created.\nexport function handleConfigQuery(\n  this: PgClientExtended,\n  tracer: Tracer,\n  instrumentationConfig: PgInstrumentationConfig,\n  semconvStability: SemconvStability,\n  queryConfig?: { text: string; values?: unknown; name?: unknown }\n) {\n  // Create child span.\n  const { connectionParameters } = this;\n  const dbName = connectionParameters.database;\n\n  const spanName = getQuerySpanName(dbName, queryConfig);\n  const span = tracer.startSpan(spanName, {\n    kind: SpanKind.CLIENT,\n    attributes: getSemanticAttributesFromConnection(\n      connectionParameters,\n      semconvStability\n    ),\n  });\n\n  if (!queryConfig) {\n    return span;\n  }\n\n  // Set attributes\n  if (queryConfig.text) {\n    if (semconvStability & SemconvStability.OLD) {\n      span.setAttribute(ATTR_DB_STATEMENT, queryConfig.text);\n    }\n    if (semconvStability & SemconvStability.STABLE) {\n      span.setAttribute(ATTR_DB_QUERY_TEXT, queryConfig.text);\n    }\n  }\n\n  if (\n    instrumentationConfig.enhancedDatabaseReporting &&\n    Array.isArray(queryConfig.values)\n  ) {\n    try {\n      const convertedValues = queryConfig.values.map(value => {\n        if (value == null) {\n          return 'null';\n        } else if (value instanceof Buffer) {\n          return value.toString();\n        } else if (typeof value === 'object') {\n          if (typeof value.toPostgres === 'function') {\n            return value.toPostgres();\n          }\n          return JSON.stringify(value);\n        } else {\n          //string, number\n          return value.toString();\n        }\n      });\n      span.setAttribute(AttributeNames.PG_VALUES, convertedValues);\n    } catch (e) {\n      diag.error('failed to stringify ', queryConfig.values, e);\n    }\n  }\n\n  // Set plan name attribute, if present\n  if (typeof queryConfig.name === 'string') {\n    span.setAttribute(AttributeNames.PG_PLAN, queryConfig.name);\n  }\n\n  return span;\n}\n\nexport function handleExecutionResult(\n  config: PgInstrumentationConfig,\n  span: Span,\n  pgResult: pgTypes.QueryResult | pgTypes.QueryArrayResult | unknown\n) {\n  if (typeof config.responseHook === 'function') {\n    safeExecuteInTheMiddle(\n      () => {\n        config.responseHook!(span, {\n          data: pgResult as pgTypes.QueryResult | pgTypes.QueryArrayResult,\n        });\n      },\n      err => {\n        if (err) {\n          diag.error('Error running response hook', err);\n        }\n      },\n      true\n    );\n  }\n}\n\nexport function patchCallback(\n  instrumentationConfig: PgInstrumentationConfig,\n  span: Span,\n  cb: PostgresCallback,\n  attributes: Attributes,\n  recordDuration: { (): void }\n): PostgresCallback {\n  return function patchedCallback(\n    this: PgClientExtended,\n    err: Error,\n    res: object\n  ) {\n    if (err) {\n      if (Object.prototype.hasOwnProperty.call(err, 'code')) {\n        attributes[ATTR_ERROR_TYPE] = (err as any)['code'];\n      }\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    } else {\n      handleExecutionResult(instrumentationConfig, span, res);\n    }\n\n    recordDuration();\n    span.end();\n    cb.call(this, err, res);\n  };\n}\n\nexport function getPoolName(pool: PgPoolOptionsParams): string {\n  let poolName = '';\n  poolName += (pool?.host ? `${pool.host}` : 'unknown_host') + ':';\n  poolName += (pool?.port ? `${pool.port}` : 'unknown_port') + '/';\n  poolName += pool?.database ? `${pool.database}` : 'unknown_database';\n\n  return poolName.trim();\n}\n\nexport interface poolConnectionsCounter {\n  used: number;\n  idle: number;\n  pending: number;\n}\n\nexport function updateCounter(\n  poolName: string,\n  pool: PgPoolExtended,\n  connectionCount: UpDownCounter,\n  connectionPendingRequests: UpDownCounter,\n  latestCounter: poolConnectionsCounter\n): poolConnectionsCounter {\n  const all = pool.totalCount;\n  const pending = pool.waitingCount;\n  const idle = pool.idleCount;\n  const used = all - idle;\n\n  connectionCount.add(used - latestCounter.used, {\n    [ATTR_DB_CLIENT_CONNECTION_STATE]: DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  connectionCount.add(idle - latestCounter.idle, {\n    [ATTR_DB_CLIENT_CONNECTION_STATE]: DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  connectionPendingRequests.add(pending - latestCounter.pending, {\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  return { used: used, idle: idle, pending: pending };\n}\n\nexport function patchCallbackPGPool(\n  span: Span,\n  cb: PgPoolCallback\n): PgPoolCallback {\n  return function patchedCallback(\n    this: PgPoolExtended,\n    err: Error,\n    res: object,\n    done: any\n  ) {\n    if (err) {\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    }\n    span.end();\n    cb.call(this, err, res, done);\n  };\n}\n\nexport function patchClientConnectCallback(span: Span, cb: Function): Function {\n  return function patchedClientConnectCallback(\n    this: pgTypes.Client,\n    err: Error\n  ) {\n    if (err) {\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    }\n    span.end();\n    cb.apply(this, arguments);\n  };\n}\n\n/**\n * Attempt to get a message string from a thrown value, while being quite\n * defensive, to recognize the fact that, in JS, any kind of value (even\n * primitives) can be thrown.\n */\nexport function getErrorMessage(e: unknown) {\n  return typeof e === 'object' && e !== null && 'message' in e\n    ? String((e as { message?: unknown }).message)\n    : undefined;\n}\n\nexport function isObjectWithTextString(it: unknown): it is ObjectWithText {\n  return (\n    typeof it === 'object' &&\n    typeof (it as null | { text?: unknown })?.text === 'string'\n  );\n}\n\nexport type ObjectWithText = {\n  text: string;\n  [k: string]: unknown;\n};\n\n/**\n * Generates a sanitized message for the error.\n * Only includes the error type and PostgreSQL error code, omitting any sensitive details.\n */\nexport function sanitizedErrorMessage(error: unknown): string {\n  const name = (error as any)?.name ?? 'PostgreSQLError';\n  const code = (error as any)?.code ?? 'UNKNOWN';\n\n  return `PostgreSQL error of type '${name}' occurred (code: ${code})`;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.66.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-pg';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n  InstrumentationNodeModuleFile,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  context,\n  trace,\n  Span,\n  SpanStatusCode,\n  SpanKind,\n  Histogram,\n  ValueType,\n  Attributes,\n  HrTime,\n  UpDownCounter,\n} from '@opentelemetry/api';\nimport type * as pgTypes from 'pg';\nimport type * as pgPoolTypes from 'pg-pool';\nimport {\n  PgClientConnect,\n  PgClientExtended,\n  PostgresCallback,\n  PgPoolExtended,\n  PgPoolCallback,\n  EVENT_LISTENERS_SET,\n} from './internal-types';\nimport { PgInstrumentationConfig } from './types';\nimport * as utils from './utils';\nimport { addSqlCommenterComment } from '@opentelemetry/sql-common';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { SpanNames } from './enums/SpanNames';\nimport {\n  hrTime,\n  hrTimeDuration,\n  hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_SERVER_PORT,\n  ATTR_SERVER_ADDRESS,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_SYSTEM_NAME,\n  METRIC_DB_CLIENT_OPERATION_DURATION,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  METRIC_DB_CLIENT_CONNECTION_COUNT,\n  METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,\n  ATTR_DB_SYSTEM,\n  DB_SYSTEM_VALUE_POSTGRESQL,\n} from './semconv';\n\nfunction extractModuleExports(module: any) {\n  return module[Symbol.toStringTag] === 'Module'\n    ? module.default // ESM\n    : module; // CommonJS\n}\n\nexport class PgInstrumentation extends InstrumentationBase {\n  declare private _operationDuration: Histogram;\n  declare private _connectionsCount: UpDownCounter;\n  declare private _connectionPendingRequests: UpDownCounter;\n  // Pool events connect, acquire, release and remove can be called\n  // multiple times without changing the values of total, idle and waiting\n  // connections. The _connectionsCounter is used to keep track of latest\n  // values and only update the metrics _connectionsCount and _connectionPendingRequests\n  // when the value change.\n  private _connectionsCounter: utils.poolConnectionsCounter = {\n    used: 0,\n    idle: 0,\n    pending: 0,\n  };\n  private _semconvStability: SemconvStability;\n\n  constructor(config: PgInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override _updateMetricInstruments() {\n    this._operationDuration = this.meter.createHistogram(\n      METRIC_DB_CLIENT_OPERATION_DURATION,\n      {\n        description: 'Duration of database client operations.',\n        unit: 's',\n        valueType: ValueType.DOUBLE,\n        advice: {\n          explicitBucketBoundaries: [\n            0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10,\n          ],\n        },\n      }\n    );\n\n    this._connectionsCounter = {\n      idle: 0,\n      pending: 0,\n      used: 0,\n    };\n    this._connectionsCount = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTION_COUNT,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n    this._connectionPendingRequests = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,\n      {\n        description:\n          'The number of current pending requests for an open connection.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  protected init() {\n    const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9'];\n    const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4'];\n\n    const modulePgNativeClient = new InstrumentationNodeModuleFile(\n      'pg/lib/native/client.js',\n      SUPPORTED_PG_VERSIONS,\n      this._patchPgClient.bind(this),\n      this._unpatchPgClient.bind(this)\n    );\n\n    const modulePgClient = new InstrumentationNodeModuleFile(\n      'pg/lib/client.js',\n      SUPPORTED_PG_VERSIONS,\n      this._patchPgClient.bind(this),\n      this._unpatchPgClient.bind(this)\n    );\n\n    const modulePG = new InstrumentationNodeModuleDefinition(\n      'pg',\n      SUPPORTED_PG_VERSIONS,\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n\n        this._patchPgClient(moduleExports.Client);\n        return module;\n      },\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n\n        this._unpatchPgClient(moduleExports.Client);\n        return module;\n      },\n      [modulePgClient, modulePgNativeClient]\n    );\n\n    const modulePGPool = new InstrumentationNodeModuleDefinition(\n      'pg-pool',\n      SUPPORTED_PG_POOL_VERSIONS,\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n        if (isWrapped(moduleExports.prototype.connect)) {\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n        this._wrap(\n          moduleExports.prototype,\n          'connect',\n          this._getPoolConnectPatch() as any\n        );\n        return moduleExports;\n      },\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n        if (isWrapped(moduleExports.prototype.connect)) {\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n      }\n    );\n\n    return [modulePG, modulePGPool];\n  }\n\n  private _patchPgClient(module: any) {\n    if (!module) {\n      return;\n    }\n\n    const moduleExports = extractModuleExports(module);\n\n    if (isWrapped(moduleExports.prototype.query)) {\n      this._unwrap(moduleExports.prototype, 'query');\n    }\n\n    if (isWrapped(moduleExports.prototype.connect)) {\n      this._unwrap(moduleExports.prototype, 'connect');\n    }\n\n    this._wrap(\n      moduleExports.prototype,\n      'query',\n      this._getClientQueryPatch() as any\n    );\n\n    this._wrap(\n      moduleExports.prototype,\n      'connect',\n      this._getClientConnectPatch() as any\n    );\n\n    return module;\n  }\n\n  private _unpatchPgClient(module: any) {\n    const moduleExports = extractModuleExports(module);\n\n    if (isWrapped(moduleExports.prototype.query)) {\n      this._unwrap(moduleExports.prototype, 'query');\n    }\n\n    if (isWrapped(moduleExports.prototype.connect)) {\n      this._unwrap(moduleExports.prototype, 'connect');\n    }\n\n    return module;\n  }\n\n  private _getClientConnectPatch() {\n    const plugin = this;\n    return (original: PgClientConnect) => {\n      return function connect(this: pgTypes.Client, callback?: Function) {\n        const config = plugin.getConfig();\n\n        if (\n          utils.shouldSkipInstrumentation(config) ||\n          config.ignoreConnectSpans\n        ) {\n          return original.call(this, callback);\n        }\n\n        const span = plugin.tracer.startSpan(SpanNames.CONNECT, {\n          kind: SpanKind.CLIENT,\n          attributes: utils.getSemanticAttributesFromConnection(\n            this,\n            plugin._semconvStability\n          ),\n        });\n\n        if (callback) {\n          const parentSpan = trace.getSpan(context.active());\n          callback = utils.patchClientConnectCallback(span, callback);\n          if (parentSpan) {\n            callback = context.bind(context.active(), callback);\n          }\n        }\n\n        const connectResult: unknown = context.with(\n          trace.setSpan(context.active(), span),\n          () => {\n            return original.call(this, callback);\n          }\n        );\n\n        return handleConnectResult(span, connectResult);\n      };\n    };\n  }\n\n  private recordOperationDuration(attributes: Attributes, startTime: HrTime) {\n    const metricsAttributes: Attributes = {};\n    const keysToCopy: string[] = [\n      ATTR_DB_NAMESPACE,\n      ATTR_ERROR_TYPE,\n      ATTR_SERVER_PORT,\n      ATTR_SERVER_ADDRESS,\n      ATTR_DB_OPERATION_NAME,\n    ];\n    if (this._semconvStability & SemconvStability.OLD) {\n      keysToCopy.push(ATTR_DB_SYSTEM);\n    }\n    if (this._semconvStability & SemconvStability.STABLE) {\n      keysToCopy.push(ATTR_DB_SYSTEM_NAME);\n    }\n\n    keysToCopy.forEach(key => {\n      if (key in attributes) {\n        metricsAttributes[key] = attributes[key];\n      }\n    });\n\n    const durationSeconds =\n      hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000;\n    this._operationDuration.record(durationSeconds, metricsAttributes);\n  }\n\n  private _getClientQueryPatch() {\n    const plugin = this;\n    return (original: typeof pgTypes.Client.prototype.query) => {\n      this._diag.debug('Patching pg.Client.prototype.query');\n      return function query(this: PgClientExtended, ...args: unknown[]) {\n        if (utils.shouldSkipInstrumentation(plugin.getConfig())) {\n          return original.apply(this, args as never);\n        }\n        const startTime = hrTime();\n\n        // client.query(text, cb?), client.query(text, values, cb?), and\n        // client.query(configObj, cb?) are all valid signatures. We construct\n        // a queryConfig obj from all (valid) signatures to build the span in a\n        // unified way. We verify that we at least have query text, and code\n        // defensively when dealing with `queryConfig` after that (to handle all\n        // the other invalid cases, like a non-array for values being provided).\n        // The type casts here reflect only what we've actually validated.\n        const arg0 = args[0];\n        const firstArgIsString = typeof arg0 === 'string';\n        const firstArgIsQueryObjectWithText =\n          utils.isObjectWithTextString(arg0);\n\n        // TODO: remove the `as ...` casts below when the TS version is upgraded.\n        // Newer TS versions will use the result of firstArgIsQueryObjectWithText\n        // to properly narrow arg0, but TS 4.3.5 does not.\n        const queryConfig = firstArgIsString\n          ? {\n              text: arg0 as string,\n              values: Array.isArray(args[1]) ? args[1] : undefined,\n            }\n          : firstArgIsQueryObjectWithText\n            ? {\n                ...(arg0 as any),\n                name: arg0.name,\n                text: arg0.text,\n                values:\n                  (arg0 as any).values ??\n                  (Array.isArray(args[1]) ? args[1] : undefined),\n              }\n            : undefined;\n\n        const attributes: Attributes = {\n          [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n          [ATTR_DB_NAMESPACE]: this.database,\n          [ATTR_SERVER_PORT]: this.connectionParameters.port,\n          [ATTR_SERVER_ADDRESS]: this.connectionParameters.host,\n        };\n\n        if (queryConfig?.text) {\n          attributes[ATTR_DB_OPERATION_NAME] =\n            utils.parseNormalizedOperationName(queryConfig?.text);\n        }\n\n        const recordDuration = () => {\n          plugin.recordOperationDuration(attributes, startTime);\n        };\n\n        const instrumentationConfig = plugin.getConfig();\n\n        const span = utils.handleConfigQuery.call(\n          this,\n          plugin.tracer,\n          instrumentationConfig,\n          plugin._semconvStability,\n          queryConfig\n        );\n\n        // Modify query text w/ a tracing comment before invoking original for\n        // tracing, but only if args[0] has one of our expected shapes.\n        if (instrumentationConfig.addSqlCommenterCommentToQueries) {\n          if (firstArgIsString) {\n            args[0] = addSqlCommenterComment(span, arg0);\n          } else if (firstArgIsQueryObjectWithText && !('name' in arg0)) {\n            // In the case of a query object, we need to ensure there's no name field\n            // as this indicates a prepared query, where the comment would remain the same\n            // for every invocation and contain an outdated trace context.\n            args[0] = {\n              ...arg0,\n              text: addSqlCommenterComment(span, arg0.text),\n            };\n          }\n        }\n\n        // Bind callback (if any) to parent span (if any)\n        if (args.length > 0) {\n          const parentSpan = trace.getSpan(context.active());\n          if (typeof args[args.length - 1] === 'function') {\n            // Patch ParameterQuery callback\n            args[args.length - 1] = utils.patchCallback(\n              instrumentationConfig,\n              span,\n              args[args.length - 1] as PostgresCallback, // nb: not type safe.\n              attributes,\n              recordDuration\n            );\n\n            // If a parent span exists, bind the callback\n            if (parentSpan) {\n              args[args.length - 1] = context.bind(\n                context.active(),\n                args[args.length - 1]\n              );\n            }\n          } else if (typeof queryConfig?.callback === 'function') {\n            // Patch ConfigQuery callback\n            let callback = utils.patchCallback(\n              plugin.getConfig(),\n              span,\n              queryConfig.callback as PostgresCallback, // nb: not type safe.\n              attributes,\n              recordDuration\n            );\n\n            // If a parent span existed, bind the callback\n            if (parentSpan) {\n              callback = context.bind(context.active(), callback);\n            }\n\n            (args[0] as { callback?: PostgresCallback }).callback = callback;\n          }\n        }\n\n        const { requestHook } = instrumentationConfig;\n        if (typeof requestHook === 'function' && queryConfig) {\n          safeExecuteInTheMiddle(\n            () => {\n              // pick keys to expose explicitly, so we're not leaking pg package\n              // internals that are subject to change\n              const { database, host, port, user } = this.connectionParameters;\n              const connection = { database, host, port, user };\n\n              requestHook(span, {\n                connection,\n                query: {\n                  text: queryConfig.text,\n                  // nb: if `client.query` is called with illegal arguments\n                  // (e.g., if `queryConfig.values` is passed explicitly, but a\n                  // non-array is given), then the type casts will be wrong. But\n                  // we leave it up to the queryHook to handle that, and we\n                  // catch and swallow any errors it throws. The other options\n                  // are all worse. E.g., we could leave `queryConfig.values`\n                  // and `queryConfig.name` as `unknown`, but then the hook body\n                  // would be forced to validate (or cast) them before using\n                  // them, which seems incredibly cumbersome given that these\n                  // casts will be correct 99.9% of the time -- and pg.query\n                  // will immediately throw during development in the other .1%\n                  // of cases. Alternatively, we could simply skip calling the\n                  // hook when `values` or `name` don't have the expected type,\n                  // but that would add unnecessary validation overhead to every\n                  // hook invocation and possibly be even more confusing/unexpected.\n                  values: queryConfig.values as unknown[],\n                  name: queryConfig.name as string | undefined,\n                },\n              });\n            },\n            err => {\n              if (err) {\n                plugin._diag.error('Error running query hook', err);\n              }\n            },\n            true\n          );\n        }\n\n        let result: unknown;\n        try {\n          result = original.apply(this, args as never);\n        } catch (e: unknown) {\n          if (e instanceof Error) {\n            span.recordException(utils.sanitizedErrorMessage(e));\n          }\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: utils.getErrorMessage(e),\n          });\n          span.end();\n          throw e;\n        }\n\n        // Bind promise to parent span and end the span\n        if (result instanceof Promise) {\n          return result\n            .then((result: unknown) => {\n              // Return a pass-along promise which ends the span and then goes to user's orig resolvers\n              return new Promise(resolve => {\n                utils.handleExecutionResult(plugin.getConfig(), span, result);\n                recordDuration();\n                span.end();\n                resolve(result);\n              });\n            })\n            .catch((error: Error) => {\n              return new Promise((_, reject) => {\n                if (error instanceof Error) {\n                  span.recordException(utils.sanitizedErrorMessage(error));\n                }\n                span.setStatus({\n                  code: SpanStatusCode.ERROR,\n                  message: error.message,\n                });\n                recordDuration();\n                span.end();\n                reject(error);\n              });\n            });\n        }\n\n        // else returns void\n        return result; // void\n      };\n    };\n  }\n\n  private _setPoolConnectEventListeners(pgPool: PgPoolExtended) {\n    if (pgPool[EVENT_LISTENERS_SET]) return;\n    const poolName = utils.getPoolName(pgPool.options);\n\n    pgPool.on('connect', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('acquire', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('remove', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('release' as any, () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n    pgPool[EVENT_LISTENERS_SET] = true;\n  }\n\n  private _getPoolConnectPatch() {\n    const plugin = this;\n    return (originalConnect: typeof pgPoolTypes.prototype.connect) => {\n      return function connect(this: PgPoolExtended, callback?: PgPoolCallback) {\n        const config = plugin.getConfig();\n\n        if (utils.shouldSkipInstrumentation(config)) {\n          return originalConnect.call(this, callback as any);\n        }\n\n        // Still set up event listeners for metrics even when skipping spans\n        plugin._setPoolConnectEventListeners(this);\n\n        if (config.ignoreConnectSpans) {\n          return originalConnect.call(this, callback as any);\n        }\n\n        // setup span\n        const span = plugin.tracer.startSpan(SpanNames.POOL_CONNECT, {\n          kind: SpanKind.CLIENT,\n          attributes: utils.getSemanticAttributesFromPoolConnection(\n            this.options,\n            plugin._semconvStability\n          ),\n        });\n\n        if (callback) {\n          const parentSpan = trace.getSpan(context.active());\n          callback = utils.patchCallbackPGPool(\n            span,\n            callback\n          ) as PgPoolCallback;\n          // If a parent span exists, bind the callback\n          if (parentSpan) {\n            callback = context.bind(context.active(), callback);\n          }\n        }\n\n        const connectResult: unknown = context.with(\n          trace.setSpan(context.active(), span),\n          () => {\n            return originalConnect.call(this, callback as any);\n          }\n        );\n\n        return handleConnectResult(span, connectResult);\n      };\n    };\n  }\n}\n\nfunction handleConnectResult(span: Span, connectResult: unknown) {\n  if (!(connectResult instanceof Promise)) {\n    return connectResult;\n  }\n\n  const connectResultPromise = connectResult as Promise;\n  return context.bind(\n    context.active(),\n    connectResultPromise\n      .then(result => {\n        span.end();\n        return result;\n      })\n      .catch((error: unknown) => {\n        if (error instanceof Error) {\n          span.recordException(utils.sanitizedErrorMessage(error));\n        }\n        span.setStatus({\n          code: SpanStatusCode.ERROR,\n          message: utils.getErrorMessage(error),\n        });\n        span.end();\n        return Promise.reject(error);\n      })\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { PgInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\nexport type {\n  PgInstrumentationConfig,\n  PgInstrumentationExecutionRequestHook,\n  PgInstrumentationExecutionResponseHook,\n  PgRequestHookInformation,\n  PgResponseHookInformation,\n} from './types';\n","import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\ninterface PostgresIntegrationOptions {\n  ignoreConnectSpans?: boolean;\n}\n\nconst INTEGRATION_NAME = 'Postgres';\n\nexport const instrumentPostgres = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  PgInstrumentation,\n  (options?: PostgresIntegrationOptions) => ({\n    requireParentSpan: true,\n    requestHook(span) {\n      addOriginToSpan(span, 'auto.db.otel.postgres');\n    },\n    ignoreConnectSpans: options?.ignoreConnectSpans ?? false,\n  }),\n);\n\nconst _postgresIntegration = ((options?: PostgresIntegrationOptions) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPostgres(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [pg](https://www.npmjs.com/package/pg) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.postgresIntegration()],\n * });\n * ```\n */\nexport const postgresIntegration = defineIntegration(_postgresIntegration);\n","// Instrumentation for https://github.com/porsager/postgres\n\nimport { context, trace } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_RESPONSE_STATUS_CODE,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_ERROR_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  debug,\n  defineIntegration,\n  instrumentPostgresJsSql,\n  replaceExports,\n  SDK_VERSION,\n  SPAN_STATUS_ERROR,\n  startSpanManual,\n} from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\nconst INTEGRATION_NAME = 'PostgresJs';\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <4'];\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\ntype PostgresConnectionContext = {\n  ATTR_DB_NAMESPACE?: string; // Database name\n  ATTR_SERVER_ADDRESS?: string; // Hostname or IP address of the database server\n  ATTR_SERVER_PORT?: string; // Port number of the database server\n};\n\n// Marker to track if a query was created from an instrumented sql instance\n// This prevents double-spanning when both wrapper and prototype patches are active\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\ntype PostgresJsInstrumentationConfig = InstrumentationConfig & {\n  /**\n   * Whether to require a parent span for the instrumentation.\n   * If set to true, the instrumentation will only create spans if there is a parent span\n   * available in the current scope.\n   * @default true\n   */\n  requireParentSpan?: boolean;\n  /**\n   * Hook to modify the span before it is started.\n   * This can be used to set additional attributes or modify the span in any way.\n   */\n  requestHook?: (span: Span, sanitizedSqlQuery: string, postgresConnectionContext?: PostgresConnectionContext) => void;\n};\n\nexport const instrumentPostgresJs = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  (options?: PostgresJsInstrumentationConfig) =>\n    new PostgresJsInstrumentation({\n      requireParentSpan: options?.requireParentSpan ?? true,\n      requestHook: options?.requestHook,\n    }),\n);\n\n/**\n * Instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n * This instrumentation captures postgresjs queries and their attributes.\n *\n * Uses internal Sentry patching patterns to support both CommonJS and ESM environments.\n */\nexport class PostgresJsInstrumentation extends InstrumentationBase {\n  public constructor(config: PostgresJsInstrumentationConfig) {\n    super('sentry-postgres-js', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by patching the postgres module.\n   * Uses two complementary approaches:\n   * 1. Main function wrapper: instruments sql instances created AFTER instrumentation is set up (CJS + ESM)\n   * 2. Query.prototype patch: fallback for sql instances created BEFORE instrumentation (CJS only)\n   */\n  public init(): InstrumentationNodeModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      'postgres',\n      SUPPORTED_VERSIONS,\n      exports => {\n        try {\n          return this._patchPostgres(exports);\n        } catch (e) {\n          DEBUG_BUILD && debug.error('Failed to patch postgres module:', e);\n          return exports;\n        }\n      },\n      exports => exports,\n    );\n\n    // Add fallback Query.prototype patching for pre-existing sql instances (CJS only)\n    // This catches queries from sql instances created before Sentry was initialized\n    ['src', 'cf/src', 'cjs/src'].forEach(path => {\n      module.files.push(\n        new InstrumentationNodeModuleFile(\n          `postgres/${path}/query.js`,\n          SUPPORTED_VERSIONS,\n          this._patchQueryPrototype.bind(this),\n          this._unpatchQueryPrototype.bind(this),\n        ),\n      );\n    });\n\n    return module;\n  }\n\n  /**\n   * Patches the postgres module by wrapping the main export function.\n   * This intercepts the creation of sql instances and instruments them.\n   */\n  private _patchPostgres(exports: { [key: string]: unknown }): { [key: string]: unknown } {\n    // In CJS: exports is the function itself\n    // In ESM: exports.default is the function\n    const isFunction = typeof exports === 'function';\n    const Original = isFunction ? exports : exports.default;\n\n    if (typeof Original !== 'function') {\n      DEBUG_BUILD && debug.warn('postgres module does not export a function. Skipping instrumentation.');\n      return exports;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this;\n\n    const WrappedPostgres = function (this: unknown, ...args: unknown[]): unknown {\n      const sql = Reflect.construct(Original as (...args: unknown[]) => unknown, args);\n\n      // Validate that construction succeeded and returned a valid function object\n      if (!sql || typeof sql !== 'function') {\n        DEBUG_BUILD && debug.warn('postgres() did not return a valid instance');\n        return sql;\n      }\n\n      // Delegate to the portable instrumentation from @sentry/core\n      const config = self.getConfig();\n      return instrumentPostgresJsSql(sql, {\n        requireParentSpan: config.requireParentSpan,\n        requestHook: config.requestHook,\n      });\n    };\n\n    Object.setPrototypeOf(WrappedPostgres, Original);\n    Object.setPrototypeOf(WrappedPostgres.prototype, (Original as { prototype: object }).prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedPostgres, key, descriptor);\n        }\n      }\n    }\n\n    // For CJS: the exports object IS the function, so return the wrapped function\n    // For ESM: replace the default export\n    if (isFunction) {\n      return WrappedPostgres as unknown as { [key: string]: unknown };\n    } else {\n      replaceExports(exports, 'default', WrappedPostgres);\n      return exports;\n    }\n  }\n\n  /**\n   * Determines whether a span should be created based on the current context.\n   * If `requireParentSpan` is set to true in the configuration, a span will\n   * only be created if there is a parent span available.\n   */\n  private _shouldCreateSpans(): boolean {\n    const config = this.getConfig();\n    const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n    return hasParentSpan || !config.requireParentSpan;\n  }\n\n  /**\n   * Extracts DB operation name from SQL query and sets it on the span.\n   */\n  private _setOperationName(span: Span, sanitizedQuery: string | undefined, command?: string): void {\n    if (command) {\n      span.setAttribute(ATTR_DB_OPERATION_NAME, command);\n      return;\n    }\n    // Fallback: extract operation from the SQL query\n    const operationMatch = sanitizedQuery?.match(SQL_OPERATION_REGEX);\n    if (operationMatch?.[1]) {\n      span.setAttribute(ATTR_DB_OPERATION_NAME, operationMatch[1].toUpperCase());\n    }\n  }\n\n  /**\n   * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n   *\n   * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n   *   strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n   *   returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n   */\n  private _reconstructQuery(strings: string[] | undefined): string | undefined {\n    if (!strings?.length) {\n      return undefined;\n    }\n    if (strings.length === 1) {\n      return strings[0] || undefined;\n    }\n    // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n    return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n  }\n\n  /**\n   * Sanitize SQL query as per the OTEL semantic conventions\n   * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n   *\n   * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n   * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n   */\n  private _sanitizeSqlQuery(sqlQuery: string | undefined): string {\n    if (!sqlQuery) {\n      return 'Unknown SQL Query';\n    }\n\n    return (\n      sqlQuery\n        // Remove comments first (they may contain newlines and extra spaces)\n        .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n        .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n        .replace(/;\\s*$/, '') // Remove trailing semicolons\n        // Collapse whitespace to a single space (after removing comments)\n        .replace(/\\s+/g, ' ')\n        .trim() // Remove extra spaces and trim\n        // Sanitize hex/binary literals before string literals\n        .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n        .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n        // Sanitize string literals (handles escaped quotes)\n        .replace(/'(?:[^']|'')*'/g, '?')\n        // Sanitize hex numbers\n        .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n        // Sanitize boolean literals\n        .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n        // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n        .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n        .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n        .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n        .replace(/(? Promise) & {\n          __sentry_original__?: (...args: unknown[]) => Promise;\n        };\n      };\n    };\n  }): typeof moduleExports {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this;\n    const originalHandle = moduleExports.Query.prototype.handle;\n\n    moduleExports.Query.prototype.handle = async function (\n      this: {\n        resolve: unknown;\n        reject: unknown;\n        strings?: string[];\n      },\n      ...args: unknown[]\n    ): Promise {\n      // Skip if this query came from an instrumented sql instance (already handled by wrapper)\n      if ((this as Record)[QUERY_FROM_INSTRUMENTED_SQL]) {\n        return originalHandle.apply(this, args);\n      }\n\n      // Skip if we shouldn't create spans\n      if (!self._shouldCreateSpans()) {\n        return originalHandle.apply(this, args);\n      }\n\n      const fullQuery = self._reconstructQuery(this.strings);\n      const sanitizedSqlQuery = self._sanitizeSqlQuery(fullQuery);\n\n      return startSpanManual(\n        {\n          name: sanitizedSqlQuery || 'postgresjs.query',\n          op: 'db',\n        },\n        (span: Span) => {\n          addOriginToSpan(span, 'auto.db.postgresjs');\n\n          span.setAttributes({\n            [ATTR_DB_SYSTEM_NAME]: 'postgres',\n            [ATTR_DB_QUERY_TEXT]: sanitizedSqlQuery,\n          });\n\n          // Note: No connection context available for pre-existing instances\n          // because the sql instance wasn't created through our instrumented wrapper\n\n          const config = self.getConfig();\n          const { requestHook } = config;\n          if (requestHook) {\n            safeExecuteInTheMiddle(\n              () => requestHook(span, sanitizedSqlQuery, undefined),\n              e => {\n                if (e) {\n                  span.setAttribute('sentry.hook.error', 'requestHook failed');\n                  DEBUG_BUILD && debug.error(`Error in requestHook for ${INTEGRATION_NAME} integration:`, e);\n                }\n              },\n              true,\n            );\n          }\n\n          // Wrap resolve to end span on success\n          const originalResolve = this.resolve;\n          this.resolve = new Proxy(originalResolve as (...args: unknown[]) => unknown, {\n            apply: (resolveTarget, resolveThisArg, resolveArgs: [{ command?: string }]) => {\n              try {\n                self._setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n                span.end();\n              } catch (e) {\n                DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n              }\n              return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n            },\n          });\n\n          // Wrap reject to end span on error\n          const originalReject = this.reject;\n          this.reject = new Proxy(originalReject as (...args: unknown[]) => unknown, {\n            apply: (rejectTarget, rejectThisArg, rejectArgs: { message?: string; code?: string; name?: string }[]) => {\n              try {\n                span.setStatus({\n                  code: SPAN_STATUS_ERROR,\n                  message: rejectArgs?.[0]?.message || 'unknown_error',\n                });\n                span.setAttribute(ATTR_DB_RESPONSE_STATUS_CODE, rejectArgs?.[0]?.code || 'unknown');\n                span.setAttribute(ATTR_ERROR_TYPE, rejectArgs?.[0]?.name || 'unknown');\n                self._setOperationName(span, sanitizedSqlQuery);\n                span.end();\n              } catch (e) {\n                DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n              }\n              return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n            },\n          });\n\n          try {\n            return originalHandle.apply(this, args);\n          } catch (e) {\n            span.setStatus({\n              code: SPAN_STATUS_ERROR,\n              message: e instanceof Error ? e.message : 'unknown_error',\n            });\n            span.end();\n            throw e;\n          }\n        },\n      );\n    };\n\n    // Store original for unpatch - must be set on the NEW patched function\n    moduleExports.Query.prototype.handle.__sentry_original__ = originalHandle;\n\n    return moduleExports;\n  }\n\n  /**\n   * Restores the original Query.prototype.handle method.\n   */\n  private _unpatchQueryPrototype(moduleExports: {\n    Query: {\n      prototype: {\n        handle: ((...args: unknown[]) => Promise) & {\n          __sentry_original__?: (...args: unknown[]) => Promise;\n        };\n      };\n    };\n  }): typeof moduleExports {\n    if (moduleExports.Query.prototype.handle.__sentry_original__) {\n      moduleExports.Query.prototype.handle = moduleExports.Query.prototype.handle.__sentry_original__;\n    }\n    return moduleExports;\n  }\n}\n\nconst _postgresJsIntegration = ((options?: PostgresJsInstrumentationConfig) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPostgresJs(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.postgresJsIntegration()],\n * });\n * ```\n */\n\nexport const postgresJsIntegration = defineIntegration(_postgresJsIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum SemconvStability {\n  /** Emit only stable semantic conventions. */\n  STABLE = 0x1,\n  /** Emit only old semantic conventions. */\n  OLD = 0x2,\n  /** Emit both stable and old semantic conventions. */\n  DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n  | 'http'\n  | 'messaging'\n  | 'database'\n  | 'k8s'\n  | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n *  import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n *  export class FooInstrumentation extends InstrumentationBase {\n *    private _semconvStability: SemconvStability;\n *    constructor(config: FooInstrumentationConfig = {}) {\n *      super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n *      // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n *      );\n *\n *      // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n *      // the web where there are no envvars).\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        config?.semconvStabilityOptIn\n *      );\n *    }\n *  }\n *\n *  // Then, to apply semconv, use the following or similar:\n *  if (this._semconvStability & SemconvStability.OLD) {\n *    // ...\n *  }\n *  if (this._semconvStability & SemconvStability.STABLE) {\n *    // ...\n *  }\n *\n */\nexport function semconvStabilityFromStr(\n  namespace: SemConvStabilityNamespace,\n  str: string | undefined\n) {\n  let semconvStability = SemconvStability.OLD;\n\n  // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n  const entries = str\n    ?.split(',')\n    .map(v => v.trim())\n    .filter(s => s !== '');\n  for (const entry of entries ?? []) {\n    if (entry.toLowerCase() === namespace + '/dup') {\n      // DUPLICATE takes highest precedence.\n      semconvStability = SemconvStability.DUPLICATE;\n      break;\n    } else if (entry.toLowerCase() === namespace) {\n      semconvStability = SemconvStability.STABLE;\n    }\n  }\n\n  return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n  moduleName: string;\n  onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n  'afterEach',\n  'after',\n  'beforeEach',\n  'before',\n  'describe',\n  'it',\n].every(fn => {\n  // @ts-expect-error TS7053: Element implicitly has an 'any' type\n  return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n  private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n  private static _instance?: RequireInTheMiddleSingleton;\n\n  private constructor() {\n    this._initialize();\n  }\n\n  private _initialize() {\n    new Hook(\n      // Intercept all `require` calls; we will filter the matching ones below\n      null,\n      { internals: true },\n      (exports, name, basedir) => {\n        // For internal files on Windows, `name` will use backslash as the path separator\n        const normalizedModuleName = normalizePathSeparators(name);\n\n        const matches = this._moduleNameTrie.search(normalizedModuleName, {\n          maintainInsertionOrder: true,\n          // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n          // This matches the behavior of `require-in-the-middle`.\n          // `basedir` is always `undefined` for core modules.\n          fullOnly: basedir === undefined,\n        });\n\n        for (const { onRequire } of matches) {\n          exports = onRequire(exports, name, basedir);\n        }\n\n        return exports;\n      }\n    );\n  }\n\n  /**\n   * Register a hook with `require-in-the-middle`\n   *\n   * @param {string} moduleName Module name\n   * @param {OnRequireFn} onRequire Hook function\n   * @returns {Hooked} Registered hook\n   */\n  register(moduleName: string, onRequire: OnRequireFn): Hooked {\n    const hooked = { moduleName, onRequire };\n    this._moduleNameTrie.insert(hooked);\n    return hooked;\n  }\n\n  /**\n   * Get the `RequireInTheMiddleSingleton` singleton\n   *\n   * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n   */\n  static getInstance(): RequireInTheMiddleSingleton {\n    // Mocha runs all test suites in the same process\n    // This prevents test suites from sharing a singleton\n    if (isMocha) return new RequireInTheMiddleSingleton();\n\n    return (this._instance =\n      this._instance ?? new RequireInTheMiddleSingleton());\n  }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n  return path.sep !== ModuleNameSeparator\n    ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n    : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { _globalThis } from '../platform';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n  [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = _globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n  requiredVersion: number,\n  instance: T,\n  fallback: T\n): Get {\n  return (version: number): T =>\n    version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n  disableInstrumentations,\n  enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n *   registered\n */\nexport function registerInstrumentations(\n  options: AutoLoaderOptions\n): () => void {\n  const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n  const meterProvider = options.meterProvider || metrics.getMeterProvider();\n  const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n  const instrumentations = options.instrumentations?.flat() ?? [];\n\n  enableInstrumentations(\n    instrumentations,\n    tracerProvider,\n    meterProvider,\n    loggerProvider\n  );\n\n  return () => {\n    disableInstrumentations(instrumentations);\n  };\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  API_BACKWARDS_COMPATIBILITY_VERSION,\n  GLOBAL_LOGS_API_KEY,\n  _global,\n  makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n  private static _instance?: LogsAPI;\n\n  private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n  private constructor() {}\n\n  public static getInstance(): LogsAPI {\n    if (!this._instance) {\n      this._instance = new LogsAPI();\n    }\n\n    return this._instance;\n  }\n\n  public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n    if (_global[GLOBAL_LOGS_API_KEY]) {\n      return this.getLoggerProvider();\n    }\n\n    _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n      API_BACKWARDS_COMPATIBILITY_VERSION,\n      provider,\n      NOOP_LOGGER_PROVIDER\n    );\n    this._proxyLoggerProvider._setDelegate(provider);\n\n    return provider;\n  }\n\n  /**\n   * Returns the global logger provider.\n   *\n   * @returns LoggerProvider\n   */\n  public getLoggerProvider(): LoggerProvider {\n    return (\n      _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n      this._proxyLoggerProvider\n    );\n  }\n\n  /**\n   * Returns a logger from the global logger provider.\n   *\n   * @returns Logger\n   */\n  public getLogger(\n    name: string,\n    version?: string,\n    options?: LoggerOptions\n  ): Logger {\n    return this.getLoggerProvider().getLogger(name, version, options);\n  }\n\n  /** Remove the global logger provider */\n  public disable(): void {\n    delete _global[GLOBAL_LOGS_API_KEY];\n    this._proxyLoggerProvider = new ProxyLoggerProvider();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n  // When a real implementation is provided, this will be it\n  private _delegate?: Logger;\n\n  constructor(\n    private _provider: LoggerDelegator,\n    public readonly name: string,\n    public readonly version?: string | undefined,\n    public readonly options?: LoggerOptions | undefined\n  ) {}\n\n  /**\n   * Emit a log record. This method should only be used by log appenders.\n   *\n   * @param logRecord\n   */\n  emit(logRecord: LogRecord): void {\n    this._getLogger().emit(logRecord);\n  }\n\n  /**\n   * Try to get a logger from the proxy logger provider.\n   * If the proxy logger provider has no delegate, return a noop logger.\n   */\n  private _getLogger() {\n    if (this._delegate) {\n      return this._delegate;\n    }\n    const logger = this._provider._getDelegateLogger(\n      this.name,\n      this.version,\n      this.options\n    );\n    if (!logger) {\n      return NOOP_LOGGER;\n    }\n    this._delegate = logger;\n    return this._delegate;\n  }\n}\n\nexport interface LoggerDelegator {\n  _getDelegateLogger(\n    name: string,\n    version?: string,\n    options?: LoggerOptions\n  ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n  Instrumentation,\n  InstrumentationConfig,\n  InstrumentationModuleDefinition,\n  InstrumentationModuleFile,\n  ShimWrapped,\n  SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n  isWrapped,\n  safeExecuteInTheMiddle,\n  safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n  getLogger(\n    _name: string,\n    _version?: string | undefined,\n    _options?: LoggerOptions | undefined\n  ): Logger {\n    return new NoopLogger();\n  }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\nexport { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider';\nexport { ProxyLogger } from './ProxyLogger';\nexport { ProxyLoggerProvider } from './ProxyLoggerProvider';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  diag,\n  DiagLogger,\n  metrics,\n  Meter,\n  MeterProvider,\n  trace,\n  Tracer,\n  TracerProvider,\n  Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n  InstrumentationModuleDefinition,\n  Instrumentation,\n  InstrumentationConfig,\n  SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n  ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n  protected _config: ConfigType = {} as ConfigType;\n\n  private _tracer: Tracer;\n  private _meter: Meter;\n  private _logger: Logger;\n  protected _diag: DiagLogger;\n\n  constructor(\n    public readonly instrumentationName: string,\n    public readonly instrumentationVersion: string,\n    config: ConfigType\n  ) {\n    this.setConfig(config);\n\n    this._diag = diag.createComponentLogger({\n      namespace: instrumentationName,\n    });\n\n    this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n    this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n    this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n    this._updateMetricInstruments();\n  }\n\n  /* Api to wrap instrumented method */\n  protected _wrap = shimmer.wrap;\n  /* Api to unwrap instrumented methods */\n  protected _unwrap = shimmer.unwrap;\n  /* Api to mass wrap instrumented method */\n  protected _massWrap = shimmer.massWrap;\n  /* Api to mass unwrap instrumented methods */\n  protected _massUnwrap = shimmer.massUnwrap;\n\n  /* Returns meter */\n  protected get meter(): Meter {\n    return this._meter;\n  }\n\n  /**\n   * Sets MeterProvider to this plugin\n   * @param meterProvider\n   */\n  public setMeterProvider(meterProvider: MeterProvider): void {\n    this._meter = meterProvider.getMeter(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n\n    this._updateMetricInstruments();\n  }\n\n  /* Returns logger */\n  protected get logger(): Logger {\n    return this._logger;\n  }\n\n  /**\n   * Sets LoggerProvider to this plugin\n   * @param loggerProvider\n   */\n  public setLoggerProvider(loggerProvider: LoggerProvider): void {\n    this._logger = loggerProvider.getLogger(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n  }\n\n  /**\n   * @experimental\n   *\n   * Get module definitions defined by {@link init}.\n   * This can be used for experimental compile-time instrumentation.\n   *\n   * @returns an array of {@link InstrumentationModuleDefinition}\n   */\n  public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n    const initResult = this.init() ?? [];\n    if (!Array.isArray(initResult)) {\n      return [initResult];\n    }\n\n    return initResult;\n  }\n\n  /**\n   * Sets the new metric instruments with the current Meter.\n   */\n  protected _updateMetricInstruments(): void {\n    return;\n  }\n\n  /* Returns InstrumentationConfig */\n  public getConfig(): ConfigType {\n    return this._config;\n  }\n\n  /**\n   * Sets InstrumentationConfig to this plugin\n   * @param config\n   */\n  public setConfig(config: ConfigType): void {\n    // copy config first level properties to ensure they are immutable.\n    // nested properties are not copied, thus are mutable from the outside.\n    this._config = {\n      enabled: true,\n      ...config,\n    };\n  }\n\n  /**\n   * Sets TraceProvider to this plugin\n   * @param tracerProvider\n   */\n  public setTracerProvider(tracerProvider: TracerProvider): void {\n    this._tracer = tracerProvider.getTracer(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n  }\n\n  /* Returns tracer */\n  protected get tracer(): Tracer {\n    return this._tracer;\n  }\n\n  /* Enable plugin */\n  public abstract enable(): void;\n\n  /* Disable plugin */\n  public abstract disable(): void;\n\n  /**\n   * Init method in which plugin should define _modules and patches for\n   * methods.\n   */\n  protected abstract init():\n    | InstrumentationModuleDefinition\n    | InstrumentationModuleDefinition[]\n    | void;\n\n  /**\n   * Execute span customization hook, if configured, and log any errors.\n   * Any semantics of the trigger and info are defined by the specific instrumentation.\n   * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n   * @param triggerName The name of the trigger for executing the hook for logging purposes\n   * @param span The span to which the hook should be applied\n   * @param info The info object to be passed to the hook, with useful data the hook may use\n   */\n  protected _runSpanCustomizationHook(\n    hookHandler: SpanCustomizationHook | undefined,\n    triggerName: string,\n    span: Span,\n    info: SpanCustomizationInfoType\n  ) {\n    if (!hookHandler) {\n      return;\n    }\n\n    try {\n      hookHandler(span, info);\n    } catch (e) {\n      this._diag.error(\n        `Error running span customization hook due to exception in handler`,\n        { triggerName },\n        e\n      );\n    }\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n  implements InstrumentationModuleFile\n{\n  public name: string;\n  constructor(\n    name: string,\n    public supportedVersions: string[],\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public patch: (moduleExports: any, moduleVersion?: string) => any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public unpatch: (moduleExports?: any, moduleVersion?: string) => void\n  ) {\n    this.name = normalize(name);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n  private _delegate?: LoggerProvider;\n\n  getLogger(\n    name: string,\n    version?: string | undefined,\n    options?: LoggerOptions | undefined\n  ): Logger {\n    return (\n      this._getDelegateLogger(name, version, options) ??\n      new ProxyLogger(this, name, version, options)\n    );\n  }\n\n  /**\n   * Get the delegate logger provider.\n   * Used by tests only.\n   * @internal\n   */\n  _getDelegate(): LoggerProvider {\n    return this._delegate ?? NOOP_LOGGER_PROVIDER;\n  }\n\n  /**\n   * Set the delegate logger provider\n   * @internal\n   */\n  _setDelegate(delegate: LoggerProvider) {\n    this._delegate = delegate;\n  }\n\n  /**\n   * @internal\n   */\n  _getDelegateLogger(\n    name: string,\n    version?: string | undefined,\n    options?: LoggerOptions | undefined\n  ): Logger | undefined {\n    return this._delegate?.getLogger(name, version, options);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n  RequireInTheMiddleSingleton,\n  Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n  InstrumentationConfig,\n  InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n    ConfigType extends InstrumentationConfig = InstrumentationConfig,\n  >\n  extends InstrumentationAbstract\n  implements types.Instrumentation\n{\n  private _modules: InstrumentationModuleDefinition[];\n  private _hooks: (Hooked | HookRequire)[] = [];\n  private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n    RequireInTheMiddleSingleton.getInstance();\n  private _enabled = false;\n\n  constructor(\n    instrumentationName: string,\n    instrumentationVersion: string,\n    config: ConfigType\n  ) {\n    super(instrumentationName, instrumentationVersion, config);\n\n    let modules = this.init();\n\n    if (modules && !Array.isArray(modules)) {\n      modules = [modules];\n    }\n\n    this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n    if (this._config.enabled) {\n      this.enable();\n    }\n  }\n\n  protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n    if (isWrapped(moduleExports[name])) {\n      this._unwrap(moduleExports, name);\n    }\n    if (!utilTypes.isProxy(moduleExports)) {\n      return wrap(moduleExports, name, wrapper);\n    } else {\n      const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n      Object.defineProperty(moduleExports, name, {\n        value: wrapped,\n      });\n      return wrapped;\n    }\n  };\n\n  protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n    if (!utilTypes.isProxy(moduleExports)) {\n      return unwrap(moduleExports, name);\n    } else {\n      return Object.defineProperty(moduleExports, name, {\n        value: moduleExports[name],\n      });\n    }\n  };\n\n  protected override _massWrap: typeof massWrap = (\n    moduleExportsArray,\n    names,\n    wrapper\n  ) => {\n    if (!moduleExportsArray) {\n      diag.error('must provide one or more modules to patch');\n      return;\n    } else if (!Array.isArray(moduleExportsArray)) {\n      moduleExportsArray = [moduleExportsArray];\n    }\n\n    if (!(names && Array.isArray(names))) {\n      diag.error('must provide one or more functions to wrap on modules');\n      return;\n    }\n\n    moduleExportsArray.forEach(moduleExports => {\n      names.forEach(name => {\n        this._wrap(moduleExports, name, wrapper);\n      });\n    });\n  };\n\n  protected override _massUnwrap: typeof massUnwrap = (\n    moduleExportsArray,\n    names\n  ) => {\n    if (!moduleExportsArray) {\n      diag.error('must provide one or more modules to patch');\n      return;\n    } else if (!Array.isArray(moduleExportsArray)) {\n      moduleExportsArray = [moduleExportsArray];\n    }\n\n    if (!(names && Array.isArray(names))) {\n      diag.error('must provide one or more functions to wrap on modules');\n      return;\n    }\n\n    moduleExportsArray.forEach(moduleExports => {\n      names.forEach(name => {\n        this._unwrap(moduleExports, name);\n      });\n    });\n  };\n\n  private _warnOnPreloadedModules(): void {\n    this._modules.forEach((module: InstrumentationModuleDefinition) => {\n      const { name } = module;\n      try {\n        const resolvedModule = require.resolve(name);\n        if (require.cache[resolvedModule]) {\n          // Module is already cached, which means the instrumentation hook might not work\n          this._diag.warn(\n            `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n          );\n        }\n      } catch {\n        // Module isn't available, we can simply skip\n      }\n    });\n  }\n\n  private _extractPackageVersion(baseDir: string): string | undefined {\n    try {\n      const json = readFileSync(path.join(baseDir, 'package.json'), {\n        encoding: 'utf8',\n      });\n      const version = JSON.parse(json).version;\n      return typeof version === 'string' ? version : undefined;\n    } catch {\n      diag.warn('Failed extracting version', baseDir);\n    }\n\n    return undefined;\n  }\n\n  private _onRequire(\n    module: InstrumentationModuleDefinition,\n    exports: T,\n    name: string,\n    baseDir?: string | void\n  ): T {\n    if (!baseDir) {\n      if (typeof module.patch === 'function') {\n        module.moduleExports = exports;\n        if (this._enabled) {\n          this._diag.debug(\n            'Applying instrumentation patch for nodejs core module on require hook',\n            {\n              module: module.name,\n            }\n          );\n          return module.patch(exports);\n        }\n      }\n      return exports;\n    }\n\n    const version = this._extractPackageVersion(baseDir);\n    module.moduleVersion = version;\n    if (module.name === name) {\n      // main module\n      if (\n        isSupported(module.supportedVersions, version, module.includePrerelease)\n      ) {\n        if (typeof module.patch === 'function') {\n          module.moduleExports = exports;\n          if (this._enabled) {\n            this._diag.debug(\n              'Applying instrumentation patch for module on require hook',\n              {\n                module: module.name,\n                version: module.moduleVersion,\n                baseDir,\n              }\n            );\n            return module.patch(exports, module.moduleVersion);\n          }\n        }\n      }\n      return exports;\n    }\n    // internal file\n    const files = module.files ?? [];\n    const normalizedName = path.normalize(name);\n    const supportedFileInstrumentations = files\n      .filter(f => f.name === normalizedName)\n      .filter(f =>\n        isSupported(f.supportedVersions, version, module.includePrerelease)\n      );\n    return supportedFileInstrumentations.reduce((patchedExports, file) => {\n      file.moduleExports = patchedExports;\n      if (this._enabled) {\n        this._diag.debug(\n          'Applying instrumentation patch for nodejs module file on require hook',\n          {\n            module: module.name,\n            version: module.moduleVersion,\n            fileName: file.name,\n            baseDir,\n          }\n        );\n\n        // patch signature is not typed, so we cast it assuming it's correct\n        return file.patch(patchedExports, module.moduleVersion) as T;\n      }\n      return patchedExports;\n    }, exports);\n  }\n\n  public enable(): void {\n    if (this._enabled) {\n      return;\n    }\n    this._enabled = true;\n\n    // already hooked, just call patch again\n    if (this._hooks.length > 0) {\n      for (const module of this._modules) {\n        if (typeof module.patch === 'function' && module.moduleExports) {\n          this._diag.debug(\n            'Applying instrumentation patch for nodejs module on instrumentation enabled',\n            {\n              module: module.name,\n              version: module.moduleVersion,\n            }\n          );\n          module.patch(module.moduleExports, module.moduleVersion);\n        }\n        for (const file of module.files) {\n          if (file.moduleExports) {\n            this._diag.debug(\n              'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n              {\n                module: module.name,\n                version: module.moduleVersion,\n                fileName: file.name,\n              }\n            );\n            file.patch(file.moduleExports, module.moduleVersion);\n          }\n        }\n      }\n      return;\n    }\n\n    this._warnOnPreloadedModules();\n    for (const module of this._modules) {\n      const hookFn: HookFn = (exports, name, baseDir) => {\n        if (!baseDir && path.isAbsolute(name)) {\n          const parsedPath = path.parse(name);\n          name = parsedPath.name;\n          baseDir = parsedPath.dir;\n        }\n        return this._onRequire(module, exports, name, baseDir);\n      };\n      const onRequire: OnRequireFn = (exports, name, baseDir) => {\n        return this._onRequire(module, exports, name, baseDir);\n      };\n\n      // `RequireInTheMiddleSingleton` does not support absolute paths.\n      // For an absolute paths, we must create a separate instance of the\n      // require-in-the-middle `Hook`.\n      const hook = path.isAbsolute(module.name)\n        ? new HookRequire([module.name], { internals: true }, onRequire)\n        : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n      this._hooks.push(hook);\n      const esmHook = new HookImport(\n        [module.name],\n        { internals: false },\n        hookFn\n      );\n      this._hooks.push(esmHook);\n    }\n  }\n\n  public disable(): void {\n    if (!this._enabled) {\n      return;\n    }\n    this._enabled = false;\n\n    for (const module of this._modules) {\n      if (typeof module.unpatch === 'function' && module.moduleExports) {\n        this._diag.debug(\n          'Removing instrumentation patch for nodejs module on instrumentation disabled',\n          {\n            module: module.name,\n            version: module.moduleVersion,\n          }\n        );\n        module.unpatch(module.moduleExports, module.moduleVersion);\n      }\n      for (const file of module.files) {\n        if (file.moduleExports) {\n          this._diag.debug(\n            'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n            {\n              module: module.name,\n              version: module.moduleVersion,\n              fileName: file.name,\n            }\n          );\n          file.unpatch(file.moduleExports, module.moduleVersion);\n        }\n      }\n    }\n  }\n\n  public isEnabled(): boolean {\n    return this._enabled;\n  }\n}\n\nfunction isSupported(\n  supportedVersions: string[],\n  version?: string,\n  includePrerelease?: boolean\n): boolean {\n  if (typeof version === 'undefined') {\n    // If we don't have the version, accept the wildcard case only\n    return supportedVersions.includes('*');\n  }\n\n  return supportedVersions.some(supportedVersion => {\n    return satisfies(version, supportedVersion, { includePrerelease });\n  });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n  hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n  children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n  /**\n   * Whether to return the results in insertion order\n   */\n  maintainInsertionOrder?: boolean;\n  /**\n   * Whether to return only full matches\n   */\n  fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n  private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n  private _counter: number = 0;\n\n  /**\n   * Insert a module hook into the trie\n   *\n   * @param {Hooked} hook Hook\n   */\n  insert(hook: Hooked) {\n    let trieNode = this._trie;\n\n    for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n      let nextNode = trieNode.children.get(moduleNamePart);\n      if (!nextNode) {\n        nextNode = new ModuleNameTrieNode();\n        trieNode.children.set(moduleNamePart, nextNode);\n      }\n      trieNode = nextNode;\n    }\n    trieNode.hooks.push({ hook, insertedId: this._counter++ });\n  }\n\n  /**\n   * Search for matching hooks in the trie\n   *\n   * @param {string} moduleName Module name\n   * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n   * @param {boolean} fullOnly Whether to return only full matches\n   * @returns {Hooked[]} Matching hooks\n   */\n  search(\n    moduleName: string,\n    { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n  ): Hooked[] {\n    let trieNode = this._trie;\n    const results: ModuleNameTrieNode['hooks'] = [];\n    let foundFull = true;\n\n    for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n      const nextNode = trieNode.children.get(moduleNamePart);\n      if (!nextNode) {\n        foundFull = false;\n        break;\n      }\n      if (!fullOnly) {\n        results.push(...nextNode.hooks);\n      }\n      trieNode = nextNode;\n    }\n\n    if (fullOnly && foundFull) {\n      results.push(...trieNode.hooks);\n    }\n\n    if (results.length === 0) {\n      return [];\n    }\n    if (results.length === 1) {\n      return [results[0].hook];\n    }\n    if (maintainInsertionOrder) {\n      results.sort((a, b) => a.insertedId - b.insertedId);\n    }\n    return results.map(({ hook }) => hook);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  InstrumentationModuleDefinition,\n  InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n  implements InstrumentationModuleDefinition\n{\n  files: InstrumentationModuleFile[];\n  constructor(\n    public name: string,\n    public supportedVersions: string[],\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public patch?: (exports: any, moduleVersion?: string) => any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public unpatch?: (exports: any, moduleVersion?: string) => void,\n    files?: InstrumentationModuleFile[]\n  ) {\n    this.files = files || [];\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n","/*\n * Copyright The OpenTelemetry Authors\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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n *   list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n *   this list of conditions and the following disclaimer in the documentation\n *   and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n *  - converted to TypeScript\n *  - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n  const enumerable =\n    !!obj[name as keyof typeof obj] &&\n    Object.prototype.propertyIsEnumerable.call(obj, name);\n\n  Object.defineProperty(obj, name, {\n    configurable: true,\n    enumerable,\n    writable: true,\n    value,\n  });\n}\n\nexport const wrap = (\n  nodule: Nodule,\n  name: FieldName,\n  wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n  if (!nodule || !nodule[name]) {\n    logger('no original function ' + String(name) + ' to wrap');\n    return;\n  }\n\n  if (!wrapper) {\n    logger('no wrapper function');\n    logger(new Error().stack);\n    return;\n  }\n\n  const original = nodule[name];\n\n  if (typeof original !== 'function' || typeof wrapper !== 'function') {\n    logger('original object and wrapper must be functions');\n    return;\n  }\n\n  const wrapped = wrapper(original, name) as object;\n\n  defineProperty(wrapped, '__original', original);\n  defineProperty(wrapped, '__unwrap', () => {\n    if (nodule[name] === wrapped) {\n      defineProperty(nodule, name, original);\n    }\n  });\n  defineProperty(wrapped, '__wrapped', true);\n  defineProperty(nodule, name, wrapped);\n  return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n  nodules: Nodule[],\n  names: FieldName[],\n  wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n  if (!nodules) {\n    logger('must provide one or more modules to patch');\n    logger(new Error().stack);\n    return;\n  } else if (!Array.isArray(nodules)) {\n    nodules = [nodules];\n  }\n\n  if (!(names && Array.isArray(names))) {\n    logger('must provide one or more functions to wrap on modules');\n    return;\n  }\n\n  nodules.forEach(nodule => {\n    names.forEach(name => {\n      wrap(nodule, name, wrapper);\n    });\n  });\n};\n\nexport const unwrap = (\n  nodule: Nodule,\n  name: keyof Nodule\n): void => {\n  if (!nodule || !nodule[name]) {\n    logger('no function to unwrap.');\n    logger(new Error().stack);\n    return;\n  }\n\n  const wrapped = nodule[name] as unknown as ShimWrapped;\n\n  if (!wrapped.__unwrap) {\n    logger(\n      'no original to unwrap to -- has ' +\n        String(name) +\n        ' already been unwrapped?'\n    );\n  } else {\n    wrapped.__unwrap();\n    return;\n  }\n};\n\nexport const massUnwrap = (\n  nodules: Nodule[],\n  names: Array\n): void => {\n  if (!nodules) {\n    logger('must provide one or more modules to patch');\n    logger(new Error().stack);\n    return;\n  } else if (!Array.isArray(nodules)) {\n    nodules = [nodules];\n  }\n\n  if (!(names && Array.isArray(names))) {\n    logger('must provide one or more functions to unwrap on modules');\n    return;\n  }\n\n  nodules.forEach(nodule => {\n    names.forEach(name => {\n      unwrap(nodule, name);\n    });\n  });\n};\n\nexport interface ShimmerOptions {\n  logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n  if (options && options.logger) {\n    if (typeof options.logger !== 'function') {\n      logger(\"new logger isn't a function, not replacing\");\n    } else {\n      logger = options.logger;\n    }\n  }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\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// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n  /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n  /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n  '>': [1],\n  '>=': [0, 1],\n  '=': [0],\n  '<=': [-1, 0],\n  '<': [-1],\n  '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n  /**\n   * If set to true, the pre-release checks will be included\n   * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n   */\n  includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n  op?: string;\n\n  version?: string;\n  versionSegments?: string[];\n  versionSegmentCount?: number;\n\n  prerelease?: string;\n  prereleaseSegments?: string[];\n  prereleaseSegmentCount?: number;\n\n  build?: string;\n\n  invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range   the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n  version: string,\n  range: string,\n  options?: SatisfiesOptions\n): boolean {\n  // Strict semver format check\n  if (!_validateVersion(version)) {\n    diag.error(`Invalid version: ${version}`);\n    return false;\n  }\n\n  // If range is empty, satisfy check succeeds regardless what version is\n  if (!range) {\n    return true;\n  }\n\n  // Cleanup range\n  range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n  // Parse version\n  const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n  if (!parsedVersion) {\n    return false;\n  }\n\n  const allParsedRanges: ParsedVersion[] = [];\n\n  // Check given version whether it satisfies given range expression\n  const checkResult: boolean = _doSatisfies(\n    parsedVersion,\n    range,\n    allParsedRanges,\n    options\n  );\n\n  // If check result is OK,\n  // do another final check for pre-release, if pre-release check is included by option\n  if (checkResult && !options?.includePrerelease) {\n    return _doPreleaseCheck(parsedVersion, allParsedRanges);\n  }\n  return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n  return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n  parsedVersion: ParsedVersion,\n  range: string,\n  allParsedRanges: ParsedVersion[],\n  options?: SatisfiesOptions\n): boolean {\n  if (range.includes('||')) {\n    // A version matches a range if and only if\n    // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n    const ranges: string[] = range.trim().split('||');\n    for (const r of ranges) {\n      if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n        return true;\n      }\n    }\n    return false;\n  } else if (range.includes(' - ')) {\n    // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n    range = replaceHyphen(range, options);\n  } else if (range.includes(' ')) {\n    // Multiple separated ranges and all needs to be satisfied for success\n    const ranges: string[] = range\n      .trim()\n      .replace(/\\s{2,}/g, ' ')\n      .split(' ');\n    for (const r of ranges) {\n      if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // Check given parsed version with given range\n  return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n  parsedVersion: ParsedVersion,\n  range: string,\n  allParsedRanges: ParsedVersion[],\n  options?: SatisfiesOptions\n): boolean {\n  range = _normalizeRange(range, options);\n  if (range.includes(' ')) {\n    // If there are multiple ranges separated, satisfy each of them\n    return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n  } else {\n    // Validate and parse range\n    const parsedRange: ParsedVersion = _parseRange(range);\n    allParsedRanges.push(parsedRange);\n    // Check parsed version by parsed range\n    return _satisfies(parsedVersion, parsedRange);\n  }\n}\n\nfunction _satisfies(\n  parsedVersion: ParsedVersion,\n  parsedRange: ParsedVersion\n): boolean {\n  // If range is invalid, satisfy check fails (no error throw)\n  if (parsedRange.invalid) {\n    return false;\n  }\n\n  // If range is empty or wildcard, satisfy check succeeds regardless what version is\n  if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n    return true;\n  }\n\n  // Compare version segment first\n  let comparisonResult: number = _compareVersionSegments(\n    parsedVersion.versionSegments || [],\n    parsedRange.versionSegments || []\n  );\n\n  // If versions segments are equal, compare by pre-release segments\n  if (comparisonResult === 0) {\n    const versionPrereleaseSegments: string[] =\n      parsedVersion.prereleaseSegments || [];\n    const rangePrereleaseSegments: string[] =\n      parsedRange.prereleaseSegments || [];\n    if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n      comparisonResult = 0;\n    } else if (\n      !versionPrereleaseSegments.length &&\n      rangePrereleaseSegments.length\n    ) {\n      comparisonResult = 1;\n    } else if (\n      versionPrereleaseSegments.length &&\n      !rangePrereleaseSegments.length\n    ) {\n      comparisonResult = -1;\n    } else {\n      comparisonResult = _compareVersionSegments(\n        versionPrereleaseSegments,\n        rangePrereleaseSegments\n      );\n    }\n  }\n\n  // Resolve check result according to comparison operator\n  return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n  parsedVersion: ParsedVersion,\n  allParsedRanges: ParsedVersion[]\n): boolean {\n  if (parsedVersion.prerelease) {\n    return allParsedRanges.some(\n      r => r.prerelease && r.version === parsedVersion.version\n    );\n  }\n  return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n  range = range.trim();\n  range = replaceCaret(range, options);\n  range = replaceTilde(range);\n  range = replaceXRange(range, options);\n  range = range.trim();\n  return range;\n}\n\nfunction isX(id?: string): boolean {\n  return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n  const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n  if (!match) {\n    diag.error(`Invalid version: ${versionString}`);\n    return undefined;\n  }\n\n  const version: string = match!.groups!.version;\n  const prerelease: string = match!.groups!.prerelease;\n  const build: string = match!.groups!.build;\n\n  const versionSegments: string[] = version.split('.');\n  const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n  return {\n    op: undefined,\n\n    version,\n    versionSegments,\n    versionSegmentCount: versionSegments.length,\n\n    prerelease,\n    prereleaseSegments,\n    prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n    build,\n  };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n  if (!rangeString) {\n    return {};\n  }\n\n  const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n  if (!match) {\n    diag.error(`Invalid range: ${rangeString}`);\n    return {\n      invalid: true,\n    };\n  }\n\n  let op: string = match!.groups!.op;\n  const version: string = match!.groups!.version;\n  const prerelease: string = match!.groups!.prerelease;\n  const build: string = match!.groups!.build;\n\n  const versionSegments: string[] = version.split('.');\n  const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n  if (op === '==') {\n    op = '=';\n  }\n\n  return {\n    op: op || '=',\n\n    version,\n    versionSegments,\n    versionSegmentCount: versionSegments.length,\n\n    prerelease,\n    prereleaseSegments,\n    prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n    build,\n  };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n  return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n  const n: number = parseInt(v, 10);\n  return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n  a: string | number,\n  b: string | number\n): [string, string] | [number, number] {\n  if (typeof a === typeof b) {\n    if (typeof a === 'number') {\n      return [a as number, b as number];\n    } else if (typeof a === 'string') {\n      return [a as string, b as string];\n    } else {\n      throw new Error('Version segments can only be strings or numbers');\n    }\n  } else {\n    return [String(a), String(b)];\n  }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n  if (_isWildcard(v1) || _isWildcard(v2)) {\n    return 0;\n  }\n  const [parsedV1, parsedV2] = _normalizeVersionType(\n    _parseVersionString(v1),\n    _parseVersionString(v2)\n  );\n  if (parsedV1 > parsedV2) {\n    return 1;\n  } else if (parsedV1 < parsedV2) {\n    return -1;\n  }\n  return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n  for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n    const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n    if (res !== 0) {\n      return res;\n    }\n  }\n  return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n  `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n  `(?:\\\\.(${XRANGEIDENTIFIER})` +\n  `(?:\\\\.(${XRANGEIDENTIFIER})` +\n  `(?:${PRERELEASE})?${BUILD}?` +\n  `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n  `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n  const r = TILDE_REGEXP;\n  return comp.replace(r, (_, M, m, p, pr) => {\n    let ret;\n\n    if (isX(M)) {\n      ret = '';\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n    } else if (pr) {\n      ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n    }\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n  const r = CARET_REGEXP;\n  const z = options?.includePrerelease ? '-0' : '';\n  return comp.replace(r, (_, M, m, p, pr) => {\n    let ret;\n\n    if (isX(M)) {\n      ret = '';\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n      }\n    } else if (pr) {\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n      }\n    } else {\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n        } else {\n          ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n        }\n      } else {\n        ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n      }\n    }\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n  const r = XRANGE_REGEXP;\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    const xM = isX(M);\n    const xm = xM || isX(m);\n    const xp = xm || isX(p);\n    const anyX = xp;\n\n    if (gtlt === '=' && anyX) {\n      gtlt = '';\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options?.includePrerelease ? '-0' : '';\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0';\n      } else {\n        // nothing is forbidden\n        ret = '*';\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0;\n      }\n      p = 0;\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>=';\n        if (xm) {\n          M = +M + 1;\n          m = 0;\n          p = 0;\n        } else {\n          m = +m + 1;\n          p = 0;\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<';\n        if (xm) {\n          M = +M + 1;\n        } else {\n          m = +m + 1;\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0';\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`;\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n    }\n\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n  const r = HYPHENRANGE_REGEXP;\n  return comp.replace(\n    r,\n    (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n      if (isX(fM)) {\n        from = '';\n      } else if (isX(fm)) {\n        from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n      } else if (isX(fp)) {\n        from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n      } else if (fpr) {\n        from = `>=${from}`;\n      } else {\n        from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n      }\n\n      if (isX(tM)) {\n        to = '';\n      } else if (isX(tm)) {\n        to = `<${+tM + 1}.0.0-0`;\n      } else if (isX(tp)) {\n        to = `<${tM}.${+tm + 1}.0-0`;\n      } else if (tpr) {\n        to = `<=${tM}.${tm}.${tp}-${tpr}`;\n      } else if (options?.includePrerelease) {\n        to = `<${tM}.${tm}.${+tp + 1}-0`;\n      } else {\n        to = `<=${to}`;\n      }\n\n      return `${from} ${to}`.trim();\n    }\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n  emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n  execute: () => T,\n  onFinish: (e: Error | undefined, result: T | undefined) => void,\n  preventThrowingError?: boolean\n): T {\n  let error: Error | undefined;\n  let result: T | undefined;\n  try {\n    result = execute();\n  } catch (e) {\n    error = e;\n  } finally {\n    onFinish(error, result);\n    if (error && !preventThrowingError) {\n      // eslint-disable-next-line no-unsafe-finally\n      throw error;\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result as T;\n  }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n  execute: () => T,\n  onFinish: (e: Error | undefined, result: T | undefined) => void,\n  preventThrowingError?: boolean\n): Promise {\n  let error: Error | undefined;\n  let result: T | undefined;\n  try {\n    result = await execute();\n  } catch (e) {\n    error = e;\n  } finally {\n    onFinish(error, result);\n    if (error && !preventThrowingError) {\n      // eslint-disable-next-line no-unsafe-finally\n      throw error;\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result as T;\n  }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n  return (\n    typeof func === 'function' &&\n    typeof (func as ShimWrapped).__original === 'function' &&\n    typeof (func as ShimWrapped).__unwrap === 'function' &&\n    (func as ShimWrapped).__wrapped === true\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n  instrumentations: Instrumentation[],\n  tracerProvider?: TracerProvider,\n  meterProvider?: MeterProvider,\n  loggerProvider?: LoggerProvider\n): void {\n  for (let i = 0, j = instrumentations.length; i < j; i++) {\n    const instrumentation = instrumentations[i];\n    if (tracerProvider) {\n      instrumentation.setTracerProvider(tracerProvider);\n    }\n    if (meterProvider) {\n      instrumentation.setMeterProvider(meterProvider);\n    }\n    if (loggerProvider && instrumentation.setLoggerProvider) {\n      instrumentation.setLoggerProvider(loggerProvider);\n    }\n    // instrumentations have been already enabled during creation\n    // so enable only if user prevented that by setting enabled to false\n    // this is to prevent double enabling but when calling register all\n    // instrumentations should be now enabled\n    if (!instrumentation.getConfig().enabled) {\n      instrumentation.enable();\n    }\n  }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n  instrumentations: Instrumentation[]\n): void {\n  instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  PrismaInstrumentation: () => PrismaInstrumentation,\n  registerInstrumentations: () => import_instrumentation2.registerInstrumentations\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/PrismaInstrumentation.ts\nvar import_api2 = require(\"@opentelemetry/api\");\nvar import_instrumentation = require(\"@opentelemetry/instrumentation\");\n\n// ../instrumentation-contract/dist/index.mjs\nvar package_default = {\n  name: \"@prisma/instrumentation-contract\",\n  version: \"7.6.0\",\n  description: \"Shared types and utilities for Prisma instrumentation\",\n  main: \"dist/index.js\",\n  module: \"dist/index.mjs\",\n  types: \"dist/index.d.ts\",\n  exports: {\n    \".\": {\n      require: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.js\"\n      },\n      import: {\n        types: \"./dist/index.d.mts\",\n        default: \"./dist/index.mjs\"\n      }\n    }\n  },\n  license: \"Apache-2.0\",\n  homepage: \"https://www.prisma.io\",\n  repository: {\n    type: \"git\",\n    url: \"https://github.com/prisma/prisma.git\",\n    directory: \"packages/instrumentation-contract\"\n  },\n  bugs: \"https://github.com/prisma/prisma/issues\",\n  scripts: {\n    dev: \"DEV=true tsx helpers/build.ts\",\n    build: \"tsx helpers/build.ts\",\n    prepublishOnly: \"pnpm run build\",\n    test: \"vitest run\"\n  },\n  files: [\n    \"dist\"\n  ],\n  sideEffects: false,\n  devDependencies: {\n    \"@opentelemetry/api\": \"1.9.0\"\n  },\n  peerDependencies: {\n    \"@opentelemetry/api\": \"^1.8\"\n  }\n};\nvar majorVersion = package_default.version.split(\".\")[0];\nvar GLOBAL_INSTRUMENTATION_KEY = \"PRISMA_INSTRUMENTATION\";\nvar GLOBAL_VERSIONED_INSTRUMENTATION_KEY = `V${majorVersion}_PRISMA_INSTRUMENTATION`;\nvar globalThisWithPrismaInstrumentation = globalThis;\nfunction getGlobalTracingHelper() {\n  const versionedGlobal = globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n  if (versionedGlobal?.helper) {\n    return versionedGlobal.helper;\n  }\n  const fallbackGlobal = globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n  return fallbackGlobal?.helper;\n}\nfunction setGlobalTracingHelper(helper) {\n  const globalValue = { helper };\n  globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY] = globalValue;\n  globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY] = globalValue;\n}\nfunction clearGlobalTracingHelper() {\n  delete globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n  delete globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n}\n\n// src/ActiveTracingHelper.ts\nvar import_api = require(\"@opentelemetry/api\");\nvar showAllTraces = process.env.PRISMA_SHOW_ALL_TRACES === \"true\";\nvar nonSampledTraceParent = `00-10-10-00`;\nfunction engineSpanKindToOtelSpanKind(engineSpanKind) {\n  switch (engineSpanKind) {\n    case \"client\":\n      return import_api.SpanKind.CLIENT;\n    case \"internal\":\n    default:\n      return import_api.SpanKind.INTERNAL;\n  }\n}\nvar ActiveTracingHelper = class {\n  tracerProvider;\n  ignoreSpanTypes;\n  constructor({ tracerProvider, ignoreSpanTypes }) {\n    this.tracerProvider = tracerProvider;\n    this.ignoreSpanTypes = ignoreSpanTypes;\n  }\n  isEnabled() {\n    return true;\n  }\n  getTraceParent(context) {\n    const span = import_api.trace.getSpanContext(context ?? import_api.context.active());\n    if (span) {\n      return `00-${span.traceId}-${span.spanId}-0${span.traceFlags}`;\n    }\n    return nonSampledTraceParent;\n  }\n  dispatchEngineSpans(spans) {\n    const tracer = this.tracerProvider.getTracer(\"prisma\");\n    const linkIds = /* @__PURE__ */ new Map();\n    const roots = spans.filter((span) => span.parentId === null);\n    for (const root of roots) {\n      dispatchEngineSpan(tracer, root, spans, linkIds, this.ignoreSpanTypes);\n    }\n  }\n  getActiveContext() {\n    return import_api.context.active();\n  }\n  runInChildSpan(options, callback) {\n    if (typeof options === \"string\") {\n      options = { name: options };\n    }\n    if (options.internal && !showAllTraces) {\n      return callback();\n    }\n    const tracer = this.tracerProvider.getTracer(\"prisma\");\n    const context = options.context ?? this.getActiveContext();\n    const name = `prisma:client:${options.name}`;\n    if (shouldIgnoreSpan(name, this.ignoreSpanTypes)) {\n      return callback();\n    }\n    if (options.active === false) {\n      const span = tracer.startSpan(name, options, context);\n      return endSpan(span, callback(span, context));\n    }\n    return tracer.startActiveSpan(name, options, (span) => endSpan(span, callback(span, context)));\n  }\n};\nfunction dispatchEngineSpan(tracer, engineSpan, allSpans, linkIds, ignoreSpanTypes) {\n  if (shouldIgnoreSpan(engineSpan.name, ignoreSpanTypes)) return;\n  const spanOptions = {\n    attributes: engineSpan.attributes,\n    kind: engineSpanKindToOtelSpanKind(engineSpan.kind),\n    startTime: engineSpan.startTime\n  };\n  tracer.startActiveSpan(engineSpan.name, spanOptions, (span) => {\n    linkIds.set(engineSpan.id, span.spanContext().spanId);\n    if (engineSpan.links) {\n      span.addLinks(\n        engineSpan.links.flatMap((link) => {\n          const linkedId = linkIds.get(link);\n          if (!linkedId) {\n            return [];\n          }\n          return {\n            context: {\n              spanId: linkedId,\n              traceId: span.spanContext().traceId,\n              traceFlags: span.spanContext().traceFlags\n            }\n          };\n        })\n      );\n    }\n    const children = allSpans.filter((s) => s.parentId === engineSpan.id);\n    for (const child of children) {\n      dispatchEngineSpan(tracer, child, allSpans, linkIds, ignoreSpanTypes);\n    }\n    span.end(engineSpan.endTime);\n  });\n}\nfunction endSpan(span, result) {\n  if (isPromiseLike(result)) {\n    return result.then(\n      (value) => {\n        span.end();\n        return value;\n      },\n      (reason) => {\n        span.end();\n        throw reason;\n      }\n    );\n  }\n  span.end();\n  return result;\n}\nfunction isPromiseLike(value) {\n  return value != null && typeof value[\"then\"] === \"function\";\n}\nfunction shouldIgnoreSpan(spanName, ignoreSpanTypes) {\n  return ignoreSpanTypes.some(\n    (pattern) => typeof pattern === \"string\" ? pattern === spanName : pattern.test(spanName)\n  );\n}\n\n// package.json\nvar package_default2 = {\n  name: \"@prisma/instrumentation\",\n  version: \"7.6.0\",\n  description: \"OpenTelemetry compliant instrumentation for Prisma Client\",\n  main: \"dist/index.js\",\n  module: \"dist/index.mjs\",\n  types: \"dist/index.d.ts\",\n  exports: {\n    \".\": {\n      require: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.js\"\n      },\n      import: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.mjs\"\n      }\n    }\n  },\n  license: \"Apache-2.0\",\n  homepage: \"https://www.prisma.io\",\n  repository: {\n    type: \"git\",\n    url: \"https://github.com/prisma/prisma.git\",\n    directory: \"packages/instrumentation\"\n  },\n  bugs: \"https://github.com/prisma/prisma/issues\",\n  devDependencies: {\n    \"@opentelemetry/api\": \"1.9.0\",\n    \"@prisma/instrumentation-contract\": \"workspace:*\",\n    \"@types/node\": \"~20.19.24\",\n    typescript: \"5.4.5\"\n  },\n  dependencies: {\n    \"@opentelemetry/instrumentation\": \"^0.207.0\"\n  },\n  peerDependencies: {\n    \"@opentelemetry/api\": \"^1.8\"\n  },\n  files: [\n    \"dist\"\n  ],\n  keywords: [\n    \"prisma\",\n    \"instrumentation\",\n    \"opentelemetry\",\n    \"otel\"\n  ],\n  scripts: {\n    dev: \"DEV=true tsx helpers/build.ts\",\n    build: \"tsx helpers/build.ts\",\n    prepublishOnly: \"pnpm run build\",\n    test: \"vitest run\"\n  },\n  sideEffects: false\n};\n\n// src/constants.ts\nvar VERSION = package_default2.version;\nvar NAME = package_default2.name;\nvar MODULE_NAME = \"@prisma/client\";\n\n// src/PrismaInstrumentation.ts\nvar PrismaInstrumentation = class extends import_instrumentation.InstrumentationBase {\n  tracerProvider;\n  constructor(config = {}) {\n    super(NAME, VERSION, config);\n  }\n  setTracerProvider(tracerProvider) {\n    this.tracerProvider = tracerProvider;\n  }\n  init() {\n    const module2 = new import_instrumentation.InstrumentationNodeModuleDefinition(MODULE_NAME, [VERSION]);\n    return [module2];\n  }\n  enable() {\n    const config = this._config;\n    setGlobalTracingHelper(\n      new ActiveTracingHelper({\n        tracerProvider: this.tracerProvider ?? import_api2.trace.getTracerProvider(),\n        ignoreSpanTypes: config.ignoreSpanTypes ?? []\n      })\n    );\n  }\n  disable() {\n    clearGlobalTracingHelper();\n  }\n  isEnabled() {\n    return getGlobalTracingHelper() !== void 0;\n  }\n};\n\n// src/index.ts\nvar import_instrumentation2 = require(\"@opentelemetry/instrumentation\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  PrismaInstrumentation,\n  registerInstrumentations\n});\n","import type { Link, Tracer } from '@opentelemetry/api';\nimport { context, SpanKind, trace, TraceFlags } from '@opentelemetry/api';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport type { IdGenerator } from '@opentelemetry/sdk-trace-base';\nimport { PrismaInstrumentation } from '@prisma/instrumentation';\nimport { consoleSandbox, defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport type { PrismaV5TracingHelper } from './prisma/vendor/v5-tracing-helper';\nimport type { PrismaV6TracingHelper } from './prisma/vendor/v6-tracing-helper';\n\nconst INTEGRATION_NAME = 'Prisma';\n\ntype CompatibilityLayerTraceHelper = PrismaV5TracingHelper & PrismaV6TracingHelper;\n\n// Vendored in from @prisma/instrumentation v5:\ntype V5EngineSpanEvent = {\n  span: boolean;\n  spans: V5EngineSpan[];\n};\n\ntype V5EngineSpanKind = 'client' | 'internal';\n\ntype V5EngineSpan = {\n  span: boolean;\n  name: string;\n  trace_id: string;\n  span_id: string;\n  parent_span_id: string;\n  start_time: [number, number];\n  end_time: [number, number];\n  attributes?: Record;\n  links?: { trace_id: string; span_id: string }[];\n  kind: V5EngineSpanKind;\n};\n\nfunction isPrismaV6TracingHelper(helper: unknown): helper is PrismaV6TracingHelper {\n  return !!helper && typeof helper === 'object' && 'dispatchEngineSpans' in helper;\n}\n\nfunction getPrismaTracingHelper(): unknown | undefined {\n  const prismaInstrumentationObject = (globalThis as Record).PRISMA_INSTRUMENTATION;\n  const prismaTracingHelper =\n    prismaInstrumentationObject &&\n    typeof prismaInstrumentationObject === 'object' &&\n    'helper' in prismaInstrumentationObject\n      ? prismaInstrumentationObject.helper\n      : undefined;\n\n  return prismaTracingHelper;\n}\n\ntype TracerWithIdGenerator = Tracer & {\n  _idGenerator?: IdGenerator;\n};\n\ninterface PrismaOptions {\n  /**\n   * @deprecated This is no longer used, v5 works out of the box.\n   */\n  prismaInstrumentation?: Instrumentation;\n  /**\n   * Configuration passed through to the {@link PrismaInstrumentation} constructor.\n   */\n  instrumentationConfig?: ConstructorParameters[0];\n}\n\nclass SentryPrismaInteropInstrumentation extends PrismaInstrumentation {\n  public constructor(options?: PrismaOptions) {\n    super(options?.instrumentationConfig);\n  }\n\n  public enable(): void {\n    super.enable();\n\n    // The PrismaIntegration (super class) defines a global variable `global[\"PRISMA_INSTRUMENTATION\"]` when `enable()` is called. This global variable holds a \"TracingHelper\" which Prisma uses internally to create tracing data. It's their way of not depending on OTEL with their main package. The sucky thing is, prisma broke the interface of the tracing helper with the v6 major update. This means that if you use Prisma 5 with the v6 instrumentation (or vice versa) Prisma just blows up, because tries to call methods on the helper that no longer exist.\n    // Because we actually want to use the v6 instrumentation and not blow up in Prisma 5 user's faces, what we're doing here is backfilling the v5 method (`createEngineSpan`) with a noop so that no longer crashes when it attempts to call that function.\n    const prismaTracingHelper = getPrismaTracingHelper();\n\n    if (isPrismaV6TracingHelper(prismaTracingHelper)) {\n      // Inspired & adjusted from https://github.com/prisma/prisma/tree/5.22.0/packages/instrumentation\n      (prismaTracingHelper as CompatibilityLayerTraceHelper).createEngineSpan = (\n        engineSpanEvent: V5EngineSpanEvent,\n      ) => {\n        const tracer = trace.getTracer('prismaV5Compatibility') as TracerWithIdGenerator;\n\n        // Prisma v5 relies on being able to create spans with a specific span & trace ID\n        // this is no longer possible in OTEL v2, there is no public API to do this anymore\n        // So in order to kind of hack this possibility, we rely on the internal `_idGenerator` property\n        // This is used to generate the random IDs, and we overwrite this temporarily to generate static IDs\n        // This is flawed and may not work, e.g. if the code is bundled and the private property is renamed\n        // in such cases, these spans will not be captured and some Prisma spans will be missing\n        const initialIdGenerator = tracer._idGenerator;\n\n        if (!initialIdGenerator) {\n          consoleSandbox(() => {\n            // eslint-disable-next-line no-console\n            console.warn(\n              '[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!',\n            );\n          });\n\n          return;\n        }\n\n        try {\n          engineSpanEvent.spans.forEach(engineSpan => {\n            const kind = engineSpanKindToOTELSpanKind(engineSpan.kind);\n\n            const parentSpanId = engineSpan.parent_span_id;\n            const spanId = engineSpan.span_id;\n            const traceId = engineSpan.trace_id;\n\n            const links: Link[] | undefined = engineSpan.links?.map(link => {\n              return {\n                context: {\n                  traceId: link.trace_id,\n                  spanId: link.span_id,\n                  traceFlags: TraceFlags.SAMPLED,\n                },\n              };\n            });\n\n            const ctx = trace.setSpanContext(context.active(), {\n              traceId,\n              spanId: parentSpanId,\n              traceFlags: TraceFlags.SAMPLED,\n            });\n\n            context.with(ctx, () => {\n              const temporaryIdGenerator: IdGenerator = {\n                generateTraceId: () => {\n                  return traceId;\n                },\n                generateSpanId: () => {\n                  return spanId;\n                },\n              };\n\n              tracer._idGenerator = temporaryIdGenerator;\n\n              const span = tracer.startSpan(engineSpan.name, {\n                kind,\n                links,\n                startTime: engineSpan.start_time,\n                attributes: engineSpan.attributes,\n              });\n\n              span.end(engineSpan.end_time);\n\n              tracer._idGenerator = initialIdGenerator;\n            });\n          });\n        } finally {\n          // Ensure we always restore this at the end, even if something errors\n          tracer._idGenerator = initialIdGenerator;\n        }\n      };\n    }\n  }\n}\n\nfunction engineSpanKindToOTELSpanKind(engineSpanKind: V5EngineSpanKind): SpanKind {\n  switch (engineSpanKind) {\n    case 'client':\n      return SpanKind.CLIENT;\n    case 'internal':\n    default: // Other span kinds aren't currently supported\n      return SpanKind.INTERNAL;\n  }\n}\n\nexport const instrumentPrisma = generateInstrumentOnce(INTEGRATION_NAME, options => {\n  return new SentryPrismaInteropInstrumentation(options);\n});\n\n/**\n * Adds Sentry tracing instrumentation for the [prisma](https://www.npmjs.com/package/prisma) library.\n * For more information, see the [`prismaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/prisma/).\n *\n * NOTE: By default, this integration works with Prisma version 6.\n * To get performance instrumentation for other Prisma versions,\n * 1. Install the `@prisma/instrumentation` package with the desired version.\n * 1. Pass a `new PrismaInstrumentation()` instance as exported from `@prisma/instrumentation` to the `prismaInstrumentation` option of this integration:\n *\n *    ```js\n *    import { PrismaInstrumentation } from '@prisma/instrumentation'\n *\n *    Sentry.init({\n *      integrations: [\n *        prismaIntegration({\n *          // Override the default instrumentation that Sentry uses\n *          prismaInstrumentation: new PrismaInstrumentation()\n *        })\n *      ]\n *    })\n *    ```\n *\n *    The passed instrumentation instance will override the default instrumentation instance the integration would use, while the `prismaIntegration` will still ensure data compatibility for the various Prisma versions.\n * 1. Depending on your Prisma version (prior to version 6), add `previewFeatures = [\"tracing\"]` to the client generator block of your Prisma schema:\n *\n *    ```\n *    generator client {\n *      provider = \"prisma-client-js\"\n *      previewFeatures = [\"tracing\"]\n *    }\n *    ```\n */\nexport const prismaIntegration = defineIntegration((options?: PrismaOptions) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPrisma(options);\n    },\n    setup(client) {\n      // If no tracing helper exists, we skip any work here\n      // this means that prisma is not being used\n      if (!getPrismaTracingHelper()) {\n        return;\n      }\n\n      client.on('spanStart', span => {\n        const spanJSON = spanToJSON(span);\n        if (spanJSON.description?.startsWith('prisma:')) {\n          span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.prisma');\n        }\n\n        // Make sure we use the query text as the span name, for ex. SELECT * FROM \"User\" WHERE \"id\" = $1\n        if (spanJSON.description === 'prisma:engine:db_query' && spanJSON.data['db.query.text']) {\n          span.updateName(spanJSON.data['db.query.text'] as string);\n        }\n\n        // In Prisma v5.22+, the `db.system` attribute is automatically set\n        // On older versions, this is missing, so we add it here\n        if (spanJSON.description === 'prisma:engine:db_query' && !spanJSON.data['db.system']) {\n          span.setAttribute('db.system', 'prisma');\n        }\n      });\n    },\n  };\n});\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-hapi';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as Hapi from '@hapi/hapi';\n\nexport const HapiComponentName = '@hapi/hapi';\n\n/**\n * This symbol is used to mark a Hapi route handler or server extension handler as\n * already patched, since its possible to use these handlers multiple times\n * i.e. when allowing multiple versions of one plugin, or when registering a plugin\n * multiple times on different servers.\n */\nexport const handlerPatched: unique symbol = Symbol('hapi-handler-patched');\n\nexport type HapiServerRouteInputMethod = (route: HapiServerRouteInput) => void;\n\nexport type HapiServerRouteInput =\n  | PatchableServerRoute\n  | PatchableServerRoute[];\n\nexport type PatchableServerRoute = Hapi.ServerRoute & {\n  [handlerPatched]?: boolean;\n};\n\nexport type HapiPluginObject = Hapi.ServerRegisterPluginObject;\n\nexport type HapiPluginInput =\n  | HapiPluginObject\n  | Array>;\n\nexport type RegisterFunction = (\n  plugin: HapiPluginInput,\n  options?: Hapi.ServerRegisterOptions\n) => Promise;\n\nexport type PatchableExtMethod = Hapi.Lifecycle.Method & {\n  [handlerPatched]?: boolean;\n};\n\nexport type ServerExtDirectInput = [\n  Hapi.ServerRequestExtType,\n  Hapi.Lifecycle.Method,\n  (Hapi.ServerExtOptions | undefined)?,\n];\n\nexport const HapiLayerType = {\n  ROUTER: 'router',\n  PLUGIN: 'plugin',\n  EXT: 'server.ext',\n};\n\nexport const HapiLifecycleMethodNames = new Set([\n  'onPreAuth',\n  'onCredentials',\n  'onPostAuth',\n  'onPreHandler',\n  'onPostHandler',\n  'onPreResponse',\n  'onRequest',\n]);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  HAPI_TYPE = 'hapi.type',\n  PLUGIN_NAME = 'hapi.plugin.name',\n  EXT_TYPE = 'server.ext.type',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n  ATTR_HTTP_ROUTE,\n  ATTR_HTTP_REQUEST_METHOD,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_HTTP_METHOD } from './semconv';\nimport type * as Hapi from '@hapi/hapi';\nimport {\n  HapiLayerType,\n  HapiLifecycleMethodNames,\n  HapiPluginObject,\n  PatchableExtMethod,\n  ServerExtDirectInput,\n} from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\n\nexport function getPluginName(plugin: Hapi.Plugin): string {\n  if ((plugin as Hapi.PluginNameVersion).name) {\n    return (plugin as Hapi.PluginNameVersion).name;\n  } else {\n    return (plugin as Hapi.PluginPackage).pkg.name;\n  }\n}\n\nexport const isLifecycleExtType = (\n  variableToCheck: unknown\n): variableToCheck is Hapi.ServerRequestExtType => {\n  return (\n    typeof variableToCheck === 'string' &&\n    HapiLifecycleMethodNames.has(variableToCheck)\n  );\n};\n\nexport const isLifecycleExtEventObj = (\n  variableToCheck: unknown\n): variableToCheck is Hapi.ServerExtEventsRequestObject => {\n  const event = (variableToCheck as Hapi.ServerExtEventsRequestObject)?.type;\n  return event !== undefined && isLifecycleExtType(event);\n};\n\nexport const isDirectExtInput = (\n  variableToCheck: unknown\n): variableToCheck is ServerExtDirectInput => {\n  return (\n    Array.isArray(variableToCheck) &&\n    variableToCheck.length <= 3 &&\n    isLifecycleExtType(variableToCheck[0]) &&\n    typeof variableToCheck[1] === 'function'\n  );\n};\n\nexport const isPatchableExtMethod = (\n  variableToCheck: PatchableExtMethod | PatchableExtMethod[]\n): variableToCheck is PatchableExtMethod => {\n  return !Array.isArray(variableToCheck);\n};\n\nexport const getRouteMetadata = (\n  route: Hapi.ServerRoute,\n  semconvStability: SemconvStability,\n  pluginName?: string\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  const attributes: Attributes = {\n    [ATTR_HTTP_ROUTE]: route.path,\n  };\n  if (semconvStability & SemconvStability.OLD) {\n    attributes[ATTR_HTTP_METHOD] = route.method;\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    // Note: This currently does *not* normalize the method name to uppercase\n    // and conditionally include `http.request.method.original` as described\n    // at https://opentelemetry.io/docs/specs/semconv/http/http-spans/\n    // These attributes are for a *hapi* span, and not the parent HTTP span,\n    // so the HTTP span guidance doesn't strictly apply.\n    attributes[ATTR_HTTP_REQUEST_METHOD] = route.method;\n  }\n\n  let name;\n  if (pluginName) {\n    attributes[AttributeNames.HAPI_TYPE] = HapiLayerType.PLUGIN;\n    attributes[AttributeNames.PLUGIN_NAME] = pluginName;\n    name = `${pluginName}: route - ${route.path}`;\n  } else {\n    attributes[AttributeNames.HAPI_TYPE] = HapiLayerType.ROUTER;\n    name = `route - ${route.path}`;\n  }\n\n  return { attributes, name };\n};\n\nexport const getExtMetadata = (\n  extPoint: Hapi.ServerRequestExtType,\n  pluginName?: string,\n  methodName?: string\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  let baseName = `ext - ${extPoint}`;\n  if (methodName && methodName !== 'method') {\n    // method is the default name for the extension in the ServerExtEventsObject format.\n    baseName = `ext - ${extPoint} - ${methodName}`;\n  }\n  if (pluginName) {\n    return {\n      attributes: {\n        [AttributeNames.EXT_TYPE]: extPoint,\n        [AttributeNames.HAPI_TYPE]: HapiLayerType.EXT,\n        [AttributeNames.PLUGIN_NAME]: pluginName,\n      },\n      name: `${pluginName}: ${baseName}`,\n    };\n  }\n  return {\n    attributes: {\n      [AttributeNames.EXT_TYPE]: extPoint,\n      [AttributeNames.HAPI_TYPE]: HapiLayerType.EXT,\n    },\n    name: baseName,\n  };\n};\n\nexport const getPluginFromInput = (\n  pluginObj: HapiPluginObject\n): Hapi.Plugin => {\n  if ('plugin' in pluginObj) {\n    if ('plugin' in pluginObj.plugin) {\n      return pluginObj.plugin.plugin;\n    }\n    return pluginObj.plugin;\n  }\n  return pluginObj;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\n\nimport type * as Hapi from '@hapi/hapi';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  HapiComponentName,\n  HapiServerRouteInput,\n  handlerPatched,\n  PatchableServerRoute,\n  HapiServerRouteInputMethod,\n  HapiPluginInput,\n  RegisterFunction,\n  PatchableExtMethod,\n  ServerExtDirectInput,\n} from './internal-types';\nimport {\n  getRouteMetadata,\n  getPluginName,\n  isLifecycleExtType,\n  isLifecycleExtEventObj,\n  getExtMetadata,\n  isDirectExtInput,\n  isPatchableExtMethod,\n  getPluginFromInput,\n} from './utils';\n\n/** Hapi instrumentation for OpenTelemetry */\nexport class HapiInstrumentation extends InstrumentationBase {\n  private _semconvStability: SemconvStability;\n\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    return new InstrumentationNodeModuleDefinition(\n      HapiComponentName,\n      ['>=17.0.0 <22'],\n      (module: any) => {\n        const moduleExports: typeof Hapi =\n          module[Symbol.toStringTag] === 'Module' ? module.default : module;\n        if (!isWrapped(moduleExports.server)) {\n          this._wrap(\n            moduleExports,\n            'server',\n            this._getServerPatch.bind(this) as any\n          );\n        }\n\n        if (!isWrapped(moduleExports.Server)) {\n          this._wrap(\n            moduleExports,\n            'Server',\n            this._getServerPatch.bind(this) as any\n          );\n        }\n        return moduleExports;\n      },\n      (module: any) => {\n        const moduleExports: typeof Hapi =\n          module[Symbol.toStringTag] === 'Module' ? module.default : module;\n        this._massUnwrap([moduleExports], ['server', 'Server']);\n      }\n    );\n  }\n\n  /**\n   * Patches the Hapi.server and Hapi.Server functions in order to instrument\n   * the server.route, server.ext, and server.register functions via calls to the\n   * @function _getServerRoutePatch, @function _getServerExtPatch, and\n   * @function _getServerRegisterPatch functions\n   * @param original - the original Hapi Server creation function\n   */\n  private _getServerPatch(\n    original: (options?: Hapi.ServerOptions) => Hapi.Server\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n    const self = this;\n    return function server(this: Hapi.Server, opts?: Hapi.ServerOptions) {\n      const newServer: Hapi.Server = original.apply(this, [opts]);\n\n      self._wrap(newServer, 'route', originalRouter => {\n        return instrumentation._getServerRoutePatch.bind(instrumentation)(\n          originalRouter\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n      // function, which requires supporting a variety of different parameters\n      // as extension inputs\n      self._wrap(newServer, 'ext', originalExtHandler => {\n        return instrumentation._getServerExtPatch.bind(instrumentation)(\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          originalExtHandler as any\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.Server.register\n      // function, which requires supporting a variety of different types of Plugin inputs\n      self._wrap(\n        newServer,\n        'register',\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        instrumentation._getServerRegisterPatch.bind(instrumentation) as any\n      );\n      return newServer;\n    };\n  }\n\n  /**\n   * Patches the plugin register function used by the Hapi Server. This function\n   * goes through each plugin that is being registered and adds instrumentation\n   * via a call to the @function _wrapRegisterHandler function.\n   * @param {RegisterFunction} original - the original register function which\n   * registers each plugin on the server\n   */\n  private _getServerRegisterPatch(\n    original: RegisterFunction\n  ): RegisterFunction {\n    const instrumentation: HapiInstrumentation = this;\n    return function register(\n      this: Hapi.Server,\n      pluginInput: HapiPluginInput,\n      options?: Hapi.ServerRegisterOptions\n    ) {\n      if (Array.isArray(pluginInput)) {\n        for (const pluginObj of pluginInput) {\n          const plugin = getPluginFromInput(pluginObj);\n          instrumentation._wrapRegisterHandler(plugin);\n        }\n      } else {\n        const plugin = getPluginFromInput(pluginInput);\n        instrumentation._wrapRegisterHandler(plugin);\n      }\n      return original.apply(this, [pluginInput, options]);\n    };\n  }\n\n  /**\n   * Patches the Server.ext function which adds extension methods to the specified\n   * point along the request lifecycle. This function accepts the full range of\n   * accepted input into the standard Hapi `server.ext` function. For each extension,\n   * it adds instrumentation to the handler via a call to the @function _wrapExtMethods\n   * function.\n   * @param original - the original ext function which adds the extension method to the server\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server extension. Else, signifies that the extension was added directly\n   */\n  private _getServerExtPatch(\n    original: (...args: unknown[]) => unknown,\n    pluginName?: string\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n\n    return function ext(\n      this: ThisParameterType,\n      ...args: Parameters\n    ) {\n      if (Array.isArray(args[0])) {\n        const eventsList:\n          | Hapi.ServerExtEventsObject[]\n          | Hapi.ServerExtEventsRequestObject[] = args[0];\n        for (let i = 0; i < eventsList.length; i++) {\n          const eventObj = eventsList[i];\n          if (isLifecycleExtType(eventObj.type)) {\n            const lifecycleEventObj =\n              eventObj as Hapi.ServerExtEventsRequestObject;\n            const handler = instrumentation._wrapExtMethods(\n              lifecycleEventObj.method,\n              eventObj.type,\n              pluginName\n            );\n            lifecycleEventObj.method = handler;\n            eventsList[i] = lifecycleEventObj;\n          }\n        }\n        return original.apply(this, args);\n      } else if (isDirectExtInput(args)) {\n        const extInput: ServerExtDirectInput = args;\n        const method: PatchableExtMethod = extInput[1];\n        const handler = instrumentation._wrapExtMethods(\n          method,\n          extInput[0],\n          pluginName\n        );\n        return original.apply(this, [extInput[0], handler, extInput[2]]);\n      } else if (isLifecycleExtEventObj(args[0])) {\n        const lifecycleEventObj = args[0];\n        const handler = instrumentation._wrapExtMethods(\n          lifecycleEventObj.method,\n          lifecycleEventObj.type,\n          pluginName\n        );\n        lifecycleEventObj.method = handler;\n        return original.call(this, lifecycleEventObj);\n      }\n      return original.apply(this, args);\n    };\n  }\n\n  /**\n   * Patches the Server.route function. This function accepts either one or an array\n   * of Hapi.ServerRoute objects and adds instrumentation on each route via a call to\n   * the @function _wrapRouteHandler function.\n   * @param {HapiServerRouteInputMethod} original - the original route function which adds\n   * the route to the server\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _getServerRoutePatch(\n    original: HapiServerRouteInputMethod,\n    pluginName?: string\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n    return function route(\n      this: Hapi.Server,\n      route: HapiServerRouteInput\n    ): void {\n      if (Array.isArray(route)) {\n        for (let i = 0; i < route.length; i++) {\n          const newRoute = instrumentation._wrapRouteHandler.call(\n            instrumentation,\n            route[i],\n            pluginName\n          );\n          route[i] = newRoute;\n        }\n      } else {\n        route = instrumentation._wrapRouteHandler.call(\n          instrumentation,\n          route,\n          pluginName\n        );\n      }\n      return original.apply(this, [route]);\n    };\n  }\n\n  /**\n   * Wraps newly registered plugins to add instrumentation to the plugin's clone of\n   * the original server. Specifically, wraps the server.route and server.ext functions\n   * via calls to @function _getServerRoutePatch and @function _getServerExtPatch\n   * @param {Hapi.Plugin} plugin - the new plugin which is being instrumented\n   */\n  private _wrapRegisterHandler(plugin: Hapi.Plugin): void {\n    const instrumentation: HapiInstrumentation = this;\n    const pluginName = getPluginName(plugin);\n    const oldRegister = plugin.register;\n    const self = this;\n    const newRegisterHandler = function (\n      this: typeof plugin,\n      server: Hapi.Server,\n      options: T\n    ) {\n      self._wrap(server, 'route', original => {\n        return instrumentation._getServerRoutePatch.bind(instrumentation)(\n          original,\n          pluginName\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n      // function, which requires supporting a variety of different parameters\n      // as extension inputs\n      self._wrap(server, 'ext', originalExtHandler => {\n        return instrumentation._getServerExtPatch.bind(instrumentation)(\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          originalExtHandler as any,\n          pluginName\n        );\n      });\n      return oldRegister.call(this, server, options);\n    };\n    plugin.register = newRegisterHandler;\n  }\n\n  /**\n   * Wraps request extension methods to add instrumentation to each new extension handler.\n   * Patches each individual extension in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {PatchableExtMethod | PatchableExtMethod[]} method - the request extension\n   * handler which is being instrumented\n   * @param {Hapi.ServerRequestExtType} extPoint - the point in the Hapi request lifecycle\n   * which this extension targets\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _wrapExtMethods(\n    method: T,\n    extPoint: Hapi.ServerRequestExtType,\n    pluginName?: string\n  ): T {\n    const instrumentation: HapiInstrumentation = this;\n    if (method instanceof Array) {\n      for (let i = 0; i < method.length; i++) {\n        method[i] = instrumentation._wrapExtMethods(\n          method[i],\n          extPoint\n        ) as PatchableExtMethod;\n      }\n      return method;\n    } else if (isPatchableExtMethod(method)) {\n      if (method[handlerPatched] === true) return method;\n      method[handlerPatched] = true;\n\n      const newHandler: PatchableExtMethod = async function (\n        ...params: Parameters\n      ) {\n        if (api.trace.getSpan(api.context.active()) === undefined) {\n          return await method.apply(this, params);\n        }\n        const metadata = getExtMetadata(extPoint, pluginName, method.name);\n        const span = instrumentation.tracer.startSpan(metadata.name, {\n          attributes: metadata.attributes,\n        });\n        try {\n          return await api.context.with<\n            Parameters,\n            Hapi.Lifecycle.Method\n          >(\n            api.trace.setSpan(api.context.active(), span),\n            method,\n            undefined,\n            ...params\n          );\n        } catch (err: any) {\n          span.recordException(err);\n          span.setStatus({\n            code: api.SpanStatusCode.ERROR,\n            message: err.message,\n          });\n          throw err;\n        } finally {\n          span.end();\n        }\n      };\n      return newHandler as T;\n    }\n    return method;\n  }\n\n  /**\n   * Patches each individual route handler method in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {PatchableServerRoute} route - the route handler which is being instrumented\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _wrapRouteHandler(\n    route: PatchableServerRoute,\n    pluginName?: string\n  ): PatchableServerRoute {\n    const instrumentation: HapiInstrumentation = this;\n    if (route[handlerPatched] === true) return route;\n    route[handlerPatched] = true;\n\n    const wrapHandler: (\n      oldHandler: Hapi.Lifecycle.Method\n    ) => Hapi.Lifecycle.Method = oldHandler => {\n      return async function (...params: Parameters) {\n        if (api.trace.getSpan(api.context.active()) === undefined) {\n          return await oldHandler.call(this, ...params);\n        }\n        const rpcMetadata = getRPCMetadata(api.context.active());\n        if (rpcMetadata?.type === RPCType.HTTP) {\n          rpcMetadata.route = route.path;\n        }\n        const metadata = getRouteMetadata(\n          route,\n          instrumentation._semconvStability,\n          pluginName\n        );\n        const span = instrumentation.tracer.startSpan(metadata.name, {\n          attributes: metadata.attributes,\n        });\n        try {\n          return await api.context.with(\n            api.trace.setSpan(api.context.active(), span),\n            () => oldHandler.call(this, ...params)\n          );\n        } catch (err: any) {\n          span.recordException(err);\n          span.setStatus({\n            code: api.SpanStatusCode.ERROR,\n            message: err.message,\n          });\n          throw err;\n        } finally {\n          span.end();\n        }\n      };\n    };\n\n    if (typeof route.handler === 'function') {\n      route.handler = wrapHandler(route.handler as Hapi.Lifecycle.Method);\n    } else if (typeof route.options === 'function') {\n      const oldOptions = route.options;\n      route.options = function (server) {\n        const options = oldOptions(server);\n        if (typeof options.handler === 'function') {\n          options.handler = wrapHandler(\n            options.handler as Hapi.Lifecycle.Method\n          );\n        }\n        return options;\n      };\n    } else if (typeof route.options?.handler === 'function') {\n      route.options.handler = wrapHandler(\n        route.options.handler as Hapi.Lifecycle.Method\n      );\n    }\n    return route;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { HapiInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\n","import { HapiInstrumentation } from '@opentelemetry/instrumentation-hapi';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getClient,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  SDK_VERSION,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport type { Request, RequestEvent, Server } from './types';\n\nconst INTEGRATION_NAME = 'Hapi';\n\nexport const instrumentHapi = generateInstrumentOnce(INTEGRATION_NAME, () => new HapiInstrumentation());\n\nconst _hapiIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentHapi();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Hapi](https://hapi.dev/).\n *\n * If you also want to capture errors, you need to call `setupHapiErrorHandler(server)` after you set up your server.\n *\n * For more information, see the [hapi documentation](https://docs.sentry.io/platforms/javascript/guides/hapi/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.hapiIntegration()],\n * })\n * ```\n */\nexport const hapiIntegration = defineIntegration(_hapiIntegration);\n\nfunction isErrorEvent(event: unknown): event is RequestEvent {\n  return !!(event && typeof event === 'object' && 'error' in event && event.error);\n}\n\nfunction sendErrorToSentry(errorData: object): void {\n  captureException(errorData, {\n    mechanism: {\n      type: 'auto.function.hapi',\n      handled: false,\n    },\n  });\n}\n\nexport const hapiErrorPlugin = {\n  name: 'SentryHapiErrorPlugin',\n  version: SDK_VERSION,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  register: async function (serverArg: Record) {\n    const server = serverArg as unknown as Server;\n\n    server.events.on({ name: 'request', channels: ['error'] }, (request: Request, event: RequestEvent) => {\n      if (getIsolationScope() !== getDefaultIsolationScope()) {\n        const route = request.route;\n        if (route.path) {\n          getIsolationScope().setTransactionName(`${route.method.toUpperCase()} ${route.path}`);\n        }\n      } else {\n        DEBUG_BUILD &&\n          debug.warn('Isolation scope is still the default isolation scope - skipping setting transactionName');\n      }\n\n      if (isErrorEvent(event)) {\n        sendErrorToSentry(event.error);\n      }\n    });\n  },\n};\n\n/**\n * Add a Hapi plugin to capture errors to Sentry.\n *\n * @param server The Hapi server to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Hapi = require('@hapi/hapi');\n *\n * const init = async () => {\n *   const server = Hapi.server();\n *\n *   // all your routes here\n *\n *   await Sentry.setupHapiErrorHandler(server);\n *\n *   await server.start();\n * };\n * ```\n */\nexport async function setupHapiErrorHandler(server: Server): Promise {\n  await server.register(hapiErrorPlugin);\n\n  // Sadly, middleware spans do not go through `requestHook`, so we handle those here\n  // We register this hook in this method, because if we register it in the integration `setup`,\n  // it would always run even for users that are not even using hapi\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', span => {\n      addHapiSpanAttributes(span);\n    });\n  }\n\n  ensureIsWrapped(server.register, 'hapi');\n}\n\nfunction addHapiSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: router, plugin, server.ext\n  const type = attributes['hapi.type'];\n\n  // If this is already set, or we have no Hapi span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hapi',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hapi`,\n  });\n}\n","export const AttributeNames = {\n  HONO_TYPE: 'hono.type',\n  HONO_NAME: 'hono.name',\n} as const;\n\nexport type AttributeNames = (typeof AttributeNames)[keyof typeof AttributeNames];\n\nexport const HonoTypes = {\n  MIDDLEWARE: 'middleware',\n  REQUEST_HANDLER: 'request_handler',\n} as const;\n\nexport type HonoTypes = (typeof HonoTypes)[keyof typeof HonoTypes];\n","import type { Span } from '@opentelemetry/api';\nimport { context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { isThenable } from '@sentry/core';\nimport { AttributeNames, HonoTypes } from './constants';\nimport type {\n  Context,\n  Handler,\n  HandlerInterface,\n  Hono,\n  HonoInstance,\n  MiddlewareHandler,\n  MiddlewareHandlerInterface,\n  Next,\n  OnHandlerInterface,\n} from './types';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-hono';\nconst PACKAGE_VERSION = '0.0.1';\n\nexport interface HonoResponseHookFunction {\n  (span: Span): void;\n}\n\nexport interface HonoInstrumentationConfig extends InstrumentationConfig {\n  /** Function for adding custom span attributes from the response */\n  responseHook?: HonoResponseHookFunction;\n}\n\n/**\n * Hono instrumentation for OpenTelemetry\n */\nexport class HonoInstrumentation extends InstrumentationBase {\n  public constructor(config: HonoInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  /**\n   * Initialize the instrumentation.\n   */\n  public init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition('hono', ['>=4.0.0 <5'], moduleExports => this._patch(moduleExports)),\n    ];\n  }\n\n  /**\n   * Patches the module exports to instrument Hono.\n   */\n  private _patch(moduleExports: { Hono: Hono }): { Hono: Hono } {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    class WrappedHono extends moduleExports.Hono {\n      public constructor(...args: unknown[]) {\n        super(...args);\n\n        instrumentation._wrap(this, 'get', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'post', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'put', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'delete', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'options', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'patch', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'all', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'on', instrumentation._patchOnHandler());\n        instrumentation._wrap(this, 'use', instrumentation._patchMiddlewareHandler());\n      }\n    }\n\n    try {\n      moduleExports.Hono = WrappedHono;\n    } catch {\n      // This is a workaround for environments where direct assignment is not allowed.\n      return { ...moduleExports, Hono: WrappedHono };\n    }\n\n    return moduleExports;\n  }\n\n  /**\n   * Patches the route handler to instrument it.\n   */\n  private _patchHandler(): (original: HandlerInterface) => HandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: HandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        if (typeof args[0] === 'string') {\n          const path = args[0];\n          if (args.length === 1) {\n            return original.apply(this, [path]);\n          }\n\n          const handlers = args.slice(1);\n          return original.apply(this, [\n            path,\n            ...handlers.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n          ]);\n        }\n\n        return original.apply(\n          this,\n          args.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n        );\n      };\n    };\n  }\n\n  /**\n   * Patches the 'on' handler to instrument it.\n   */\n  private _patchOnHandler(): (original: OnHandlerInterface) => OnHandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: OnHandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        const handlers = args.slice(2);\n        return original.apply(this, [\n          ...args.slice(0, 2),\n          ...handlers.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n        ]);\n      };\n    };\n  }\n\n  /**\n   * Patches the middleware handler to instrument it.\n   */\n  private _patchMiddlewareHandler(): (original: MiddlewareHandlerInterface) => MiddlewareHandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: MiddlewareHandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        if (typeof args[0] === 'string') {\n          const path = args[0];\n          if (args.length === 1) {\n            return original.apply(this, [path]);\n          }\n\n          const handlers = args.slice(1);\n          return original.apply(this, [\n            path,\n            ...handlers.map(handler => instrumentation._wrapHandler(handler as MiddlewareHandler)),\n          ]);\n        }\n\n        return original.apply(\n          this,\n          args.map(handler => instrumentation._wrapHandler(handler as MiddlewareHandler)),\n        );\n      };\n    };\n  }\n\n  /**\n   * Wraps a handler or middleware handler to apply instrumentation.\n   */\n  private _wrapHandler(handler: Handler | MiddlewareHandler): Handler | MiddlewareHandler {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (this: unknown, c: Context, next: Next) {\n      if (!instrumentation.isEnabled()) {\n        return handler.apply(this, [c, next]);\n      }\n\n      const path = c.req.path;\n      const span = instrumentation.tracer.startSpan(path);\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        return instrumentation._safeExecute(\n          () => {\n            const result = handler.apply(this, [c, next]);\n            if (isThenable(result)) {\n              return result.then(result => {\n                const type = instrumentation._determineHandlerType(result);\n                span.setAttributes({\n                  [AttributeNames.HONO_TYPE]: type,\n                  [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n                });\n                instrumentation.getConfig().responseHook?.(span);\n                return result;\n              });\n            } else {\n              const type = instrumentation._determineHandlerType(result);\n              span.setAttributes({\n                [AttributeNames.HONO_TYPE]: type,\n                [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n              });\n              instrumentation.getConfig().responseHook?.(span);\n              return result;\n            }\n          },\n          () => span.end(),\n          error => {\n            instrumentation._handleError(span, error);\n            span.end();\n          },\n        );\n      });\n    };\n  }\n\n  /**\n   * Safely executes a function and handles errors.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private _safeExecute(execute: () => any, onSuccess: () => void, onFailure: (error: unknown) => void): () => any {\n    try {\n      const result = execute();\n\n      if (isThenable(result)) {\n        result.then(\n          () => onSuccess(),\n          (error: unknown) => onFailure(error),\n        );\n      } else {\n        onSuccess();\n      }\n\n      return result;\n    } catch (error: unknown) {\n      onFailure(error);\n      throw error;\n    }\n  }\n\n  /**\n   * Determines the handler type based on the result.\n   * @param result\n   * @private\n   */\n  private _determineHandlerType(result: unknown): HonoTypes {\n    return result === undefined ? HonoTypes.MIDDLEWARE : HonoTypes.REQUEST_HANDLER;\n  }\n\n  /**\n   * Handles errors by setting the span status and recording the exception.\n   */\n  private _handleError(span: Span, error: unknown): void {\n    if (error instanceof Error) {\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: error.message,\n      });\n      span.recordException(error);\n    }\n  }\n}\n","import { ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  httpRequestToRequestData,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport { AttributeNames } from './constants';\nimport { HonoInstrumentation } from './instrumentation';\nimport type { Context, MiddlewareHandler, MiddlewareHandlerInterface, Next } from './types';\n\nconst INTEGRATION_NAME = 'Hono';\n\nfunction addHonoSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n  const type = attributes[AttributeNames.HONO_TYPE];\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hono',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hono`,\n  });\n\n  const name = attributes[AttributeNames.HONO_NAME];\n  if (typeof name === 'string') {\n    span.updateName(name);\n  }\n\n  if (getIsolationScope() === getDefaultIsolationScope()) {\n    DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n    return;\n  }\n\n  const route = attributes[ATTR_HTTP_ROUTE];\n  const method = attributes[ATTR_HTTP_REQUEST_METHOD];\n  if (typeof route === 'string' && typeof method === 'string') {\n    getIsolationScope().setTransactionName(`${method} ${route}`);\n  }\n}\n\nexport const instrumentHono = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new HonoInstrumentation({\n      responseHook: span => {\n        addHonoSpanAttributes(span);\n      },\n    }),\n);\n\nconst _honoIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentHono();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Hono](https://hono.dev/).\n *\n * If you also want to capture errors, you need to call `setupHonoErrorHandler(app)` after you set up your Hono server.\n *\n * For more information, see the [hono documentation](https://docs.sentry.io/platforms/javascript/guides/hono/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.honoIntegration()],\n * })\n * ```\n */\nexport const honoIntegration = defineIntegration(_honoIntegration);\n\ninterface HonoHandlerOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   * @param error Captured Hono error\n   */\n  shouldHandleError: (context: Context) => boolean;\n}\n\nfunction honoRequestHandler(): MiddlewareHandler {\n  return async function sentryRequestMiddleware(context: Context, next: Next): Promise {\n    const normalizedRequest = httpRequestToRequestData(context.req);\n    getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n    await next();\n  };\n}\n\nfunction defaultShouldHandleError(context: Context): boolean {\n  const statusCode = context.res.status;\n  return statusCode >= 500;\n}\n\nfunction honoErrorHandler(options?: Partial): MiddlewareHandler {\n  return async function sentryErrorMiddleware(context: Context, next: Next): Promise {\n    await next();\n\n    const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n    if (shouldHandleError(context)) {\n      (context.res as { sentry?: string }).sentry = captureException(context.error, {\n        mechanism: {\n          type: 'auto.middleware.hono',\n          handled: false,\n        },\n      });\n    }\n  };\n}\n\n/**\n * Add a Hono error handler to capture errors to Sentry.\n *\n * @param app The Hono instances\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const { Hono } = require(\"hono\");\n *\n * const app = new Hono();\n *\n * Sentry.setupHonoErrorHandler(app);\n *\n * // Add your routes, etc.\n * ```\n */\nexport function setupHonoErrorHandler(\n  app: { use: MiddlewareHandlerInterface },\n  options?: Partial,\n): void {\n  app.use(honoRequestHandler());\n  app.use(honoErrorHandler(options));\n  ensureIsWrapped(app.use, 'hono');\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport enum KoaLayerType {\n  ROUTER = 'router',\n  MIDDLEWARE = 'middleware',\n}\n\n/**\n * Information about the current Koa middleware layer\n * The middleware layer type is any by default.\n * One can install koa types packages `@types/koa` and `@types/koa__router`\n * with compatible versions to the koa version used in the project\n * to get more specific types for the middleware layer property.\n *\n * Example use in a custom attribute function:\n * ```ts\n * import type { Middleware, ParameterizedContext, DefaultState } from 'koa';\n * import type { RouterParamContext } from '@koa/router';\n *\n * type KoaContext = ParameterizedContext;\n * type KoaMiddleware = Middleware;\n *\n * const koaConfig: KoaInstrumentationConfig = {\n *  requestHook: (span: Span, info: KoaRequestInfo) => {\n *   // custom typescript code that can access the typed into.middlewareLayer and info.context\n * }\n *\n */\nexport type KoaRequestInfo = {\n  context: KoaContextType;\n  middlewareLayer: KoaMiddlewareType;\n  layerType: KoaLayerType;\n};\n\n/**\n * Function that can be used to add custom attributes to the current span\n * @param span - The Express middleware layer span.\n * @param context - The current KoaContext.\n */\nexport interface KoaRequestCustomAttributeFunction<\n  KoaContextType = any,\n  KoaMiddlewareType = any,\n> {\n  (span: Span, info: KoaRequestInfo): void;\n}\n\n/**\n * Options available for the Koa Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-Instrumentation-koa#koa-Instrumentation-options))\n */\nexport interface KoaInstrumentationConfig<\n  KoaContextType = any,\n  KoaMiddlewareType = any,\n> extends InstrumentationConfig {\n  /** Ignore specific layers based on their type */\n  ignoreLayersType?: KoaLayerType[];\n  /** Function for adding custom attributes to each middleware layer span */\n  requestHook?: KoaRequestCustomAttributeFunction<\n    KoaContextType,\n    KoaMiddlewareType\n  >;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-koa';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  KOA_TYPE = 'koa.type',\n  KOA_NAME = 'koa.name',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { KoaLayerType, KoaInstrumentationConfig } from './types';\nimport { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { Attributes } from '@opentelemetry/api';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\n\nexport const getMiddlewareMetadata = (\n  context: KoaContext,\n  layer: KoaMiddleware,\n  isRouter: boolean,\n  layerPath?: string | RegExp\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  if (isRouter) {\n    return {\n      attributes: {\n        [AttributeNames.KOA_NAME]: layerPath?.toString(),\n        [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n        [ATTR_HTTP_ROUTE]: layerPath?.toString(),\n      },\n      name: context._matchedRouteName || `router - ${layerPath}`,\n    };\n  } else {\n    return {\n      attributes: {\n        [AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n        [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n      },\n      name: `middleware - ${layer.name}`,\n    };\n  }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n *     occurred\n */\nexport const isLayerIgnored = (\n  type: KoaLayerType,\n  config?: KoaInstrumentationConfig\n): boolean => {\n  return !!(\n    Array.isArray(config?.ignoreLayersType) &&\n    config?.ignoreLayersType?.includes(type)\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport type { Middleware, ParameterizedContext, DefaultState } from 'koa';\nimport type * as Router from '@koa/router';\n\n/**\n * Type compatibility note:\n *\n * This package uses @types/koa@3.x, but @types/koa__router@12.x depends on\n * @types/koa@2.x. This creates type conflicts when working with router middleware.\n * At runtime, koa@3.x is used throughout, so all methods exist and work correctly.\n *\n * The type casts in instrumentation.ts are necessary to bridge this gap.\n *\n * TODO: Remove type casts when @types/koa__router@13+ with @types/koa@3.x support is available\n */\n\nexport type KoaContext = ParameterizedContext<\n  DefaultState,\n  Router.RouterParamContext\n>;\nexport type KoaMiddleware = Middleware & {\n  router?: Router;\n};\n\n/**\n * This symbol is used to mark a Koa layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexport const kLayerPatched: unique symbol = Symbol('koa-layer-patched');\n\nexport type KoaPatchedMiddleware = KoaMiddleware & {\n  [kLayerPatched]?: boolean;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\n\nimport type * as koa from 'koa';\nimport { KoaLayerType, KoaInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { getMiddlewareMetadata, isLayerIgnored } from './utils';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  kLayerPatched,\n  KoaContext,\n  KoaMiddleware,\n  KoaPatchedMiddleware,\n} from './internal-types';\n\n/** Koa instrumentation for OpenTelemetry */\nexport class KoaInstrumentation extends InstrumentationBase {\n  constructor(config: KoaInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  protected init() {\n    return new InstrumentationNodeModuleDefinition(\n      'koa',\n      ['>=2.0.0 <4'],\n      (module: any) => {\n        const moduleExports: typeof koa =\n          module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        if (moduleExports == null) {\n          return moduleExports;\n        }\n        if (isWrapped(moduleExports.prototype.use)) {\n          this._unwrap(moduleExports.prototype, 'use');\n        }\n        this._wrap(\n          moduleExports.prototype,\n          'use',\n          this._getKoaUsePatch.bind(this)\n        );\n        return module;\n      },\n      (module: any) => {\n        const moduleExports: typeof koa =\n          module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        if (isWrapped(moduleExports.prototype.use)) {\n          this._unwrap(moduleExports.prototype, 'use');\n        }\n      }\n    );\n  }\n\n  /**\n   * Patches the Koa.use function in order to instrument each original\n   * middleware layer which is introduced\n   * @param {KoaMiddleware} middleware - the original middleware function\n   */\n  private _getKoaUsePatch(original: (middleware: KoaMiddleware) => koa) {\n    const plugin = this;\n    return function use(this: koa, middlewareFunction: KoaMiddleware) {\n      let patchedFunction: KoaMiddleware;\n      if (middlewareFunction.router) {\n        patchedFunction = plugin._patchRouterDispatch(middlewareFunction);\n      } else {\n        patchedFunction = plugin._patchLayer(middlewareFunction, false);\n      }\n      return original.apply(this, [patchedFunction]);\n    };\n  }\n\n  /**\n   * Patches the dispatch function used by @koa/router. This function\n   * goes through each routed middleware and adds instrumentation via a call\n   * to the @function _patchLayer function.\n   * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches\n   * routed middleware\n   */\n  private _patchRouterDispatch(dispatchLayer: KoaMiddleware): KoaMiddleware {\n    api.diag.debug('Patching @koa/router dispatch');\n\n    const router = dispatchLayer.router;\n\n    const routesStack = router?.stack ?? [];\n    for (const pathLayer of routesStack) {\n      const path = pathLayer.path;\n      // Type cast needed: router.stack comes from @types/koa@2.x but we use @types/koa@3.x\n      // See internal-types.ts for full explanation\n      const pathStack = pathLayer.stack as any;\n      for (let j = 0; j < pathStack.length; j++) {\n        const routedMiddleware: KoaMiddleware = pathStack[j];\n        pathStack[j] = this._patchLayer(routedMiddleware, true, path);\n      }\n    }\n\n    return dispatchLayer;\n  }\n\n  /**\n   * Patches each individual @param middlewareLayer function in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {KoaMiddleware} middlewareLayer - the original middleware function.\n   * @param {boolean} isRouter - tracks whether the original middleware function\n   * was dispatched by the router originally\n   * @param {string?} layerPath - if present, provides additional data from the\n   * router about the routed path which the middleware is attached to\n   */\n  private _patchLayer(\n    middlewareLayer: KoaPatchedMiddleware,\n    isRouter: boolean,\n    layerPath?: string | RegExp\n  ): KoaMiddleware {\n    const layerType = isRouter ? KoaLayerType.ROUTER : KoaLayerType.MIDDLEWARE;\n    // Skip patching layer if its ignored in the config\n    if (\n      middlewareLayer[kLayerPatched] === true ||\n      isLayerIgnored(layerType, this.getConfig())\n    )\n      return middlewareLayer;\n\n    if (\n      middlewareLayer.constructor.name === 'GeneratorFunction' ||\n      middlewareLayer.constructor.name === 'AsyncGeneratorFunction'\n    ) {\n      api.diag.debug('ignoring generator-based Koa middleware layer');\n      return middlewareLayer;\n    }\n\n    middlewareLayer[kLayerPatched] = true;\n\n    api.diag.debug('patching Koa middleware layer');\n    return async (context: KoaContext, next: koa.Next) => {\n      const parent = api.trace.getSpan(api.context.active());\n      if (parent === undefined) {\n        return middlewareLayer(context, next);\n      }\n      const metadata = getMiddlewareMetadata(\n        context,\n        middlewareLayer,\n        isRouter,\n        layerPath\n      );\n      const span = this.tracer.startSpan(metadata.name, {\n        attributes: metadata.attributes,\n      });\n\n      const rpcMetadata = getRPCMetadata(api.context.active());\n\n      if (rpcMetadata?.type === RPCType.HTTP && context._matchedRoute) {\n        rpcMetadata.route = context._matchedRoute.toString();\n      }\n\n      const { requestHook } = this.getConfig();\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            requestHook(span, {\n              context,\n              middlewareLayer,\n              layerType,\n            }),\n          e => {\n            if (e) {\n              api.diag.error('koa instrumentation: request hook failed', e);\n            }\n          },\n          true\n        );\n      }\n\n      const newContext = api.trace.setSpan(api.context.active(), span);\n      return api.context.with(newContext, async () => {\n        try {\n          return await middlewareLayer(context, next);\n        } catch (err: any) {\n          span.recordException(err);\n          throw err;\n        } finally {\n          span.end();\n        }\n      });\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { KoaInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\nexport { KoaLayerType } from './types';\nexport type {\n  KoaInstrumentationConfig,\n  KoaRequestCustomAttributeFunction,\n  KoaRequestInfo,\n} from './types';\n","import type { KoaInstrumentationConfig, KoaLayerType } from '@opentelemetry/instrumentation-koa';\nimport { KoaInstrumentation } from '@opentelemetry/instrumentation-koa';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  spanToJSON,\n} from '@sentry/core';\nimport { addOriginToSpan, ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\ninterface KoaOptions {\n  /**\n   * Ignore layers of specified types\n   */\n  ignoreLayersType?: Array<'middleware' | 'router'>;\n}\n\nconst INTEGRATION_NAME = 'Koa';\n\nexport const instrumentKoa = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  KoaInstrumentation,\n  (options: KoaOptions = {}) => {\n    return {\n      ignoreLayersType: options.ignoreLayersType as KoaLayerType[],\n      requestHook(span, info) {\n        addOriginToSpan(span, 'auto.http.otel.koa');\n\n        const attributes = spanToJSON(span).data;\n\n        // this is one of: middleware, router\n        const type = attributes['koa.type'];\n        if (type) {\n          span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.koa`);\n        }\n\n        // Also update the name\n        const name = attributes['koa.name'];\n        if (typeof name === 'string') {\n          // Somehow, name is sometimes `''` for middleware spans\n          // See: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2220\n          span.updateName(name || '< unknown >');\n        }\n\n        if (getIsolationScope() === getDefaultIsolationScope()) {\n          DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n          return;\n        }\n        const route = attributes[ATTR_HTTP_ROUTE];\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        const method = info.context?.request?.method?.toUpperCase() || 'GET';\n        if (route) {\n          getIsolationScope().setTransactionName(`${method} ${route}`);\n        }\n      },\n    } satisfies KoaInstrumentationConfig;\n  },\n);\n\nconst _koaIntegration = ((options: KoaOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentKoa(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Koa](https://koajs.com/).\n *\n * If you also want to capture errors, you need to call `setupKoaErrorHandler(app)` after you set up your Koa server.\n *\n * For more information, see the [koa documentation](https://docs.sentry.io/platforms/javascript/guides/koa/).\n *\n * @param {KoaOptions} options Configuration options for the Koa integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.koaIntegration()],\n * })\n * ```\n *\n * @example\n * ```javascript\n * // To ignore middleware spans\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [\n *     Sentry.koaIntegration({\n *       ignoreLayersType: ['middleware']\n *     })\n *   ],\n * })\n * ```\n */\nexport const koaIntegration = defineIntegration(_koaIntegration);\n\n/**\n * Add an Koa error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Koa = require(\"koa\");\n *\n * const app = new Koa();\n *\n * Sentry.setupKoaErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen(3000);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const setupKoaErrorHandler = (app: { use: (arg0: (ctx: any, next: any) => Promise) => void }): void => {\n  app.use(async (ctx, next) => {\n    try {\n      await next();\n    } catch (error) {\n      captureException(error, {\n        mechanism: {\n          handled: false,\n          type: 'auto.middleware.koa',\n        },\n      });\n      throw error;\n    }\n  });\n\n  ensureIsWrapped(app.use, 'koa');\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AttributeNames {\n  CONNECT_TYPE = 'connect.type',\n  CONNECT_NAME = 'connect.name',\n}\n\nexport enum ConnectTypes {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request_handler',\n}\n\nexport enum ConnectNames {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request handler',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-connect';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { HandleFunction, IncomingMessage, Server } from 'connect';\n\nexport const _LAYERS_STORE_PROPERTY: unique symbol = Symbol(\n  'opentelemetry.instrumentation-connect.request-route-stack'\n);\n\nexport type UseArgs1 = [HandleFunction];\nexport type UseArgs2 = [string, HandleFunction];\nexport type UseArgs = UseArgs1 | UseArgs2;\nexport type Use = (...args: UseArgs) => Server;\nexport type PatchedRequest = {\n  [_LAYERS_STORE_PROPERTY]: string[];\n} & IncomingMessage;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { diag } from '@opentelemetry/api';\nimport { _LAYERS_STORE_PROPERTY, PatchedRequest } from './internal-types';\n\nexport const addNewStackLayer = (request: PatchedRequest) => {\n  if (Array.isArray(request[_LAYERS_STORE_PROPERTY]) === false) {\n    Object.defineProperty(request, _LAYERS_STORE_PROPERTY, {\n      enumerable: false,\n      value: [],\n    });\n  }\n  request[_LAYERS_STORE_PROPERTY].push('/');\n\n  const stackLength = request[_LAYERS_STORE_PROPERTY].length;\n\n  return () => {\n    if (stackLength === request[_LAYERS_STORE_PROPERTY].length) {\n      request[_LAYERS_STORE_PROPERTY].pop();\n    } else {\n      diag.warn('Connect: Trying to pop the stack multiple time');\n    }\n  };\n};\n\nexport const replaceCurrentStackRoute = (\n  request: PatchedRequest,\n  newRoute?: string\n) => {\n  if (newRoute) {\n    request[_LAYERS_STORE_PROPERTY].splice(-1, 1, newRoute);\n  }\n};\n\n// generate route from existing stack on request object.\n// splash between stack layer will be deduped\n// [\"/first/\", \"/second\", \"/third/\"] => /first/second/third/\nexport const generateRoute = (request: PatchedRequest) => {\n  return request[_LAYERS_STORE_PROPERTY].reduce(\n    (acc, sub) => acc.replace(/\\/+$/, '') + sub\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, Span, SpanOptions } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport type { HandleFunction, NextFunction, Server } from 'connect';\nimport type { ServerResponse } from 'http';\nimport {\n  AttributeNames,\n  ConnectNames,\n  ConnectTypes,\n} from './enums/AttributeNames';\nimport { PatchedRequest, Use, UseArgs, UseArgs2 } from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport {\n  replaceCurrentStackRoute,\n  addNewStackLayer,\n  generateRoute,\n} from './utils';\n\nexport const ANONYMOUS_NAME = 'anonymous';\n\n/** Connect instrumentation for OpenTelemetry */\nexport class ConnectInstrumentation extends InstrumentationBase {\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'connect',\n        ['>=3.0.0 <4'],\n        moduleExports => {\n          return this._patchConstructor(moduleExports);\n        }\n      ),\n    ];\n  }\n\n  private _patchApp(patchedApp: Server) {\n    if (!isWrapped(patchedApp.use)) {\n      this._wrap(patchedApp, 'use', this._patchUse.bind(this));\n    }\n    if (!isWrapped(patchedApp.handle)) {\n      this._wrap(patchedApp, 'handle', this._patchHandle.bind(this));\n    }\n  }\n\n  private _patchConstructor(original: () => Server): () => Server {\n    const instrumentation = this;\n    return function (this: Server, ...args) {\n      const app = original.apply(this, args) as Server;\n      instrumentation._patchApp(app);\n      return app;\n    };\n  }\n\n  public _patchNext(next: NextFunction, finishSpan: () => void): NextFunction {\n    return function nextFunction(this: NextFunction, err?: any): void {\n      const result = next.apply(this, [err]);\n      finishSpan();\n      return result;\n    };\n  }\n\n  public _startSpan(routeName: string, middleWare: HandleFunction): Span {\n    let connectType: ConnectTypes;\n    let connectName: string;\n    let connectTypeName: string;\n    if (routeName) {\n      connectType = ConnectTypes.REQUEST_HANDLER;\n      connectTypeName = ConnectNames.REQUEST_HANDLER;\n      connectName = routeName;\n    } else {\n      connectType = ConnectTypes.MIDDLEWARE;\n      connectTypeName = ConnectNames.MIDDLEWARE;\n      connectName = middleWare.name || ANONYMOUS_NAME;\n    }\n    const spanName = `${connectTypeName} - ${connectName}`;\n    const options: SpanOptions = {\n      attributes: {\n        [ATTR_HTTP_ROUTE]: routeName.length > 0 ? routeName : '/',\n        [AttributeNames.CONNECT_TYPE]: connectType,\n        [AttributeNames.CONNECT_NAME]: connectName,\n      },\n    };\n\n    return this.tracer.startSpan(spanName, options);\n  }\n\n  public _patchMiddleware(\n    routeName: string,\n    middleWare: HandleFunction\n  ): HandleFunction {\n    const instrumentation = this;\n    const isErrorMiddleware = middleWare.length === 4;\n\n    function patchedMiddleware(this: Use): void {\n      if (!instrumentation.isEnabled()) {\n        return (middleWare as any).apply(this, arguments);\n      }\n      const [reqArgIdx, resArgIdx, nextArgIdx] = isErrorMiddleware\n        ? [1, 2, 3]\n        : [0, 1, 2];\n      const req = arguments[reqArgIdx] as PatchedRequest;\n      const res = arguments[resArgIdx] as ServerResponse;\n      const next = arguments[nextArgIdx] as NextFunction;\n\n      replaceCurrentStackRoute(req, routeName);\n\n      const rpcMetadata = getRPCMetadata(context.active());\n      if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n        rpcMetadata.route = generateRoute(req);\n      }\n\n      let spanName = '';\n      if (routeName) {\n        spanName = `request handler - ${routeName}`;\n      } else {\n        spanName = `middleware - ${middleWare.name || ANONYMOUS_NAME}`;\n      }\n      const span = instrumentation._startSpan(routeName, middleWare);\n      instrumentation._diag.debug('start span', spanName);\n      let spanFinished = false;\n\n      function finishSpan() {\n        if (!spanFinished) {\n          spanFinished = true;\n          instrumentation._diag.debug(`finishing span ${(span as any).name}`);\n          span.end();\n        } else {\n          instrumentation._diag.debug(\n            `span ${(span as any).name} - already finished`\n          );\n        }\n        res.removeListener('close', finishSpan);\n      }\n\n      res.addListener('close', finishSpan);\n      arguments[nextArgIdx] = instrumentation._patchNext(next, finishSpan);\n\n      return (middleWare as any).apply(this, arguments);\n    }\n\n    Object.defineProperty(patchedMiddleware, 'length', {\n      value: middleWare.length,\n      writable: false,\n      configurable: true,\n    });\n\n    return patchedMiddleware;\n  }\n\n  public _patchUse(original: Server['use']): Use {\n    const instrumentation = this;\n    return function (this: Server, ...args: UseArgs): Server {\n      const middleWare = args[args.length - 1] as HandleFunction;\n      const routeName = (args[args.length - 2] || '') as string;\n\n      args[args.length - 1] = instrumentation._patchMiddleware(\n        routeName,\n        middleWare\n      );\n\n      return original.apply(this, args as UseArgs2);\n    };\n  }\n\n  public _patchHandle(original: Server['handle']): Server['handle'] {\n    const instrumentation = this;\n    return function (this: Server): ReturnType {\n      const [reqIdx, outIdx] = [0, 2];\n      const req = arguments[reqIdx] as PatchedRequest;\n      const out = arguments[outIdx];\n      const completeStack = addNewStackLayer(req);\n\n      if (typeof out === 'function') {\n        arguments[outIdx] = instrumentation._patchOut(\n          out as NextFunction,\n          completeStack\n        );\n      }\n\n      return (original as any).apply(this, arguments);\n    };\n  }\n\n  public _patchOut(out: NextFunction, completeStack: () => void): NextFunction {\n    return function nextFunction(this: NextFunction, ...args: any[]): void {\n      completeStack();\n      return Reflect.apply(out, this, args);\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { ConnectInstrumentation, ANONYMOUS_NAME } from './instrumentation';\nexport {\n  AttributeNames,\n  ConnectNames,\n  ConnectTypes,\n} from './enums/AttributeNames';\n","import { ConnectInstrumentation } from '@opentelemetry/instrumentation-connect';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  defineIntegration,\n  getClient,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\n\ntype ConnectApp = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  use: (middleware: any) => void;\n};\n\nconst INTEGRATION_NAME = 'Connect';\n\nexport const instrumentConnect = generateInstrumentOnce(INTEGRATION_NAME, () => new ConnectInstrumentation());\n\nconst _connectIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentConnect();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Connect](https://github.com/senchalabs/connect/).\n *\n * If you also want to capture errors, you need to call `setupConnectErrorHandler(app)` after you initialize your connect app.\n *\n * For more information, see the [connect documentation](https://docs.sentry.io/platforms/javascript/guides/connect/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.connectIntegration()],\n * })\n * ```\n */\nexport const connectIntegration = defineIntegration(_connectIntegration);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction connectErrorMiddleware(err: any, req: any, res: any, next: any): void {\n  captureException(err, {\n    mechanism: {\n      handled: false,\n      type: 'auto.middleware.connect',\n    },\n  });\n  next(err);\n}\n\n/**\n * Add a Connect middleware to capture errors to Sentry.\n *\n * @param app The Connect app to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const connect = require(\"connect\");\n *\n * const app = connect();\n *\n * Sentry.setupConnectErrorHandler(app);\n *\n * // Add you connect routes here\n *\n * app.listen(3000);\n * ```\n */\nexport const setupConnectErrorHandler = (app: ConnectApp): void => {\n  app.use(connectErrorMiddleware);\n\n  // Sadly, ConnectInstrumentation has no requestHook, so we need to add the attributes here\n  // We register this hook in this method, because if we register it in the integration `setup`,\n  // it would always run even for users that are not even using connect\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', span => {\n      addConnectSpanAttributes(span);\n    });\n  }\n\n  ensureIsWrapped(app.use, 'connect');\n};\n\nfunction addConnectSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: middleware, request_handler\n  const type = attributes['connect.type'];\n\n  // If this is already set, or we have no connect span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.connect',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.connect`,\n  });\n\n  // Also update the name, we don't need the \"middleware - \" prefix\n  const name = attributes['connect.name'];\n  if (typeof name === 'string') {\n    span.updateName(name);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.58.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-knex';\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport const MODULE_NAME = 'knex';\nexport const SUPPORTED_VERSIONS = [\n  // use \"lib/execution\" for runner.js, \"lib\" for client.js as basepath, latest tested 0.95.6\n  '>=0.22.0 <4',\n  // use \"lib\" as basepath\n  '>=0.10.0 <0.18.0',\n  '>=0.19.0 <0.22.0',\n  // use \"src\" as basepath\n  '>=0.18.0 <0.19.0',\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.transport`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.transport`.\n */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SQLite](https://www.sqlite.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = 'sqlite' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Exception } from '@opentelemetry/api';\nimport { DB_SYSTEM_NAME_VALUE_POSTGRESQL } from '@opentelemetry/semantic-conventions';\nimport { DB_SYSTEM_NAME_VALUE_SQLITE } from './semconv';\n\ntype KnexError = Error & {\n  code?: string;\n};\n\nexport const getFormatter = (runner: any) => {\n  if (runner) {\n    if (runner.client) {\n      if (runner.client._formatQuery) {\n        return runner.client._formatQuery.bind(runner.client);\n      } else if (runner.client.SqlString) {\n        return runner.client.SqlString.format.bind(runner.client.SqlString);\n      }\n    }\n    if (runner.builder) {\n      return runner.builder.toString.bind(runner.builder);\n    }\n  }\n  return () => '';\n};\n\nexport function otelExceptionFromKnexError(\n  err: KnexError,\n  message: string\n): Exception {\n  if (!(err && err instanceof Error)) {\n    return err;\n  }\n\n  return {\n    message,\n    code: err.code,\n    stack: err.stack,\n    name: err.name,\n  };\n}\n\nconst systemMap = new Map([\n  ['sqlite3', DB_SYSTEM_NAME_VALUE_SQLITE],\n  ['pg', DB_SYSTEM_NAME_VALUE_POSTGRESQL],\n]);\n\nexport const mapSystem = (knexSystem: string) => {\n  return systemMap.get(knexSystem) || knexSystem;\n};\n\nexport const getName = (db: string, operation?: string, table?: string) => {\n  if (operation) {\n    if (table) {\n      return `${operation} ${db}.${table}`;\n    }\n    return `${operation} ${db}`;\n  }\n  return db;\n};\n\nexport const limitLength = (str: string, maxLength: number) => {\n  if (\n    typeof str === 'string' &&\n    typeof maxLength === 'number' &&\n    0 < maxLength &&\n    maxLength < str.length\n  ) {\n    return str.substring(0, maxLength) + '..';\n  }\n  return str;\n};\n\n/**\n * Helpers to extract connection details from a Knex connectionString.\n * When Knex is configured via `connection.connectionString` instead of\n * explicit fields like `host`, `port`, and `database`, these values are\n * embedded in the URL and must be parsed out.\n * e.g. \"postgres://user:pass@localhost:5432/mydb\"\n */\n\nexport const extractDatabaseFromConnectionString = (\n  connectionString?: string\n): string | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    const db = new URL(connectionString).pathname?.replace(/^\\//, '');\n    return db || undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractHostFromConnectionString = (\n  connectionString?: string\n): string | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    return new URL(connectionString).hostname || undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractPortFromConnectionString = (\n  connectionString?: string\n): number | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    const port = new URL(connectionString).port;\n    return port ? parseInt(port, 10) : undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractTableName = (builder: any): string => {\n  const table = builder?._single?.table;\n  if (typeof table === 'object') {\n    return extractTableName(table);\n  }\n  return table;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport * as constants from './constants';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport * as utils from './utils';\nimport { KnexInstrumentationConfig } from './types';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_NAME,\n  ATTR_DB_OPERATION,\n  ATTR_DB_SQL_TABLE,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  ATTR_NET_TRANSPORT,\n} from './semconv';\n\nconst contextSymbol = Symbol('opentelemetry.instrumentation-knex.context');\nconst DEFAULT_CONFIG: KnexInstrumentationConfig = {\n  maxQueryLength: 1022,\n  requireParentSpan: false,\n};\n\nexport class KnexInstrumentation extends InstrumentationBase {\n  private _semconvStability: SemconvStability;\n\n  constructor(config: KnexInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n\n    this._semconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: KnexInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  init() {\n    const module = new InstrumentationNodeModuleDefinition(\n      constants.MODULE_NAME,\n      constants.SUPPORTED_VERSIONS\n    );\n\n    module.files.push(\n      this.getClientNodeModuleFileInstrumentation('src'),\n      this.getClientNodeModuleFileInstrumentation('lib'),\n      this.getRunnerNodeModuleFileInstrumentation('src'),\n      this.getRunnerNodeModuleFileInstrumentation('lib'),\n      this.getRunnerNodeModuleFileInstrumentation('lib/execution')\n    );\n\n    return module;\n  }\n\n  private getRunnerNodeModuleFileInstrumentation(basePath: string) {\n    return new InstrumentationNodeModuleFile(\n      `knex/${basePath}/runner.js`,\n      constants.SUPPORTED_VERSIONS,\n      (Runner: any, moduleVersion) => {\n        this.ensureWrapped(\n          Runner.prototype,\n          'query',\n          this.createQueryWrapper(moduleVersion)\n        );\n        return Runner;\n      },\n      (Runner: any, moduleVersion) => {\n        this._unwrap(Runner.prototype, 'query');\n        return Runner;\n      }\n    );\n  }\n\n  private getClientNodeModuleFileInstrumentation(basePath: string) {\n    return new InstrumentationNodeModuleFile(\n      `knex/${basePath}/client.js`,\n      constants.SUPPORTED_VERSIONS,\n      (Client: any) => {\n        this.ensureWrapped(\n          Client.prototype,\n          'queryBuilder',\n          this.storeContext.bind(this)\n        );\n        this.ensureWrapped(\n          Client.prototype,\n          'schemaBuilder',\n          this.storeContext.bind(this)\n        );\n        this.ensureWrapped(\n          Client.prototype,\n          'raw',\n          this.storeContext.bind(this)\n        );\n        return Client;\n      },\n      (Client: any) => {\n        this._unwrap(Client.prototype, 'queryBuilder');\n        this._unwrap(Client.prototype, 'schemaBuilder');\n        this._unwrap(Client.prototype, 'raw');\n        return Client;\n      }\n    );\n  }\n\n  private createQueryWrapper(moduleVersion?: string) {\n    const instrumentation = this;\n\n    return function wrapQuery(original: (...args: any[]) => any) {\n      return function wrapped_logging_method(this: any, query: any) {\n        const config = this.client.config;\n\n        const table = utils.extractTableName(this.builder);\n        // `method` actually refers to the knex API method - Not exactly \"operation\"\n        // in the spec sense, but matches most of the time.\n        const operation = query?.method;\n        // Knex can be configured with a connectionString instead of explicit fields.\n        // Fall back to parsing the connectionString if filename and database are not set.\n        const connectionString = config?.connection?.connectionString;\n        const name =\n          config?.connection?.filename ||\n          config?.connection?.database ||\n          utils.extractDatabaseFromConnectionString(connectionString);\n        const { maxQueryLength } = instrumentation.getConfig();\n\n        const attributes: api.Attributes = {\n          'knex.version': moduleVersion,\n        };\n        const transport =\n          config?.connection?.filename === ':memory:' ? 'inproc' : undefined;\n\n        if (instrumentation._semconvStability & SemconvStability.OLD) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM]: utils.mapSystem(this.client.driverName),\n            [ATTR_DB_SQL_TABLE]: table,\n            [ATTR_DB_OPERATION]: operation,\n            [ATTR_DB_USER]: config?.connection?.user,\n            [ATTR_DB_NAME]: name,\n            // Fall back to parsing host and port from connectionString if not explicitly set.\n            [ATTR_NET_PEER_NAME]:\n              config?.connection?.host ??\n              utils.extractHostFromConnectionString(connectionString),\n            [ATTR_NET_PEER_PORT]:\n              config?.connection?.port ??\n              utils.extractPortFromConnectionString(connectionString),\n            [ATTR_NET_TRANSPORT]: transport,\n          });\n        }\n        if (instrumentation._semconvStability & SemconvStability.STABLE) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM_NAME]: utils.mapSystem(this.client.driverName),\n            [ATTR_DB_COLLECTION_NAME]: table,\n            [ATTR_DB_OPERATION_NAME]: operation,\n            [ATTR_DB_NAMESPACE]: name,\n            // Fall back to parsing host and port from connectionString if not explicitly set.\n            [ATTR_SERVER_ADDRESS]:\n              config?.connection?.host ??\n              utils.extractHostFromConnectionString(connectionString),\n            [ATTR_SERVER_PORT]:\n              config?.connection?.port ??\n              utils.extractPortFromConnectionString(connectionString),\n          });\n        }\n        if (maxQueryLength) {\n          // filters both undefined and 0\n          const queryText = utils.limitLength(query?.sql, maxQueryLength);\n          if (instrumentation._semconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = queryText;\n          }\n          if (instrumentation._semconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = queryText;\n          }\n        }\n\n        const parentContext =\n          this.builder[contextSymbol] || api.context.active();\n        const parentSpan = api.trace.getSpan(parentContext);\n        const hasActiveParent =\n          parentSpan && api.trace.isSpanContextValid(parentSpan.spanContext());\n        if (instrumentation._config.requireParentSpan && !hasActiveParent) {\n          return original.bind(this)(...arguments);\n        }\n\n        const span = instrumentation.tracer.startSpan(\n          utils.getName(name, operation, table),\n          {\n            kind: api.SpanKind.CLIENT,\n            attributes,\n          },\n          parentContext\n        );\n        const spanContext = api.trace.setSpan(api.context.active(), span);\n\n        return api.context\n          .with(spanContext, original, this, ...arguments)\n          .then((result: unknown) => {\n            span.end();\n            return result;\n          })\n          .catch((err: any) => {\n            // knex adds full query with all the binding values to the message,\n            // we want to undo that without changing the original error\n            const formatter = utils.getFormatter(this);\n            const fullQuery = formatter(query.sql, query.bindings || []);\n            const message = err.message.replace(fullQuery + ' - ', '');\n            const exc = utils.otelExceptionFromKnexError(err, message);\n            span.recordException(exc);\n            span.setStatus({ code: api.SpanStatusCode.ERROR, message });\n            span.end();\n            throw err;\n          });\n      };\n    };\n  }\n\n  private storeContext(original: Function) {\n    return function wrapped_logging_method(this: any) {\n      const builder = original.apply(this, arguments);\n      // Builder is a custom promise type and when awaited it fails to propagate context.\n      // We store the parent context at the moment of initiating the builder\n      // otherwise we'd have nothing to attach the span as a child for in `query`.\n      Object.defineProperty(builder, contextSymbol, {\n        value: api.context.active(),\n      });\n      return builder;\n    };\n  }\n\n  ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any) {\n    if (isWrapped(obj[methodName])) {\n      this._unwrap(obj, methodName);\n    }\n    this._wrap(obj, methodName, wrapper);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { KnexInstrumentation } from './instrumentation';\nexport type { KnexInstrumentationConfig } from './types';\n","import { KnexInstrumentation } from '@opentelemetry/instrumentation-knex';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Knex';\n\nexport const instrumentKnex = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () => new KnexInstrumentation({ requireParentSpan: true }),\n);\n\nconst _knexIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentKnex();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const { data } = spanToJSON(span);\n          // knex.version is always set in the span data\n          // https://github.com/open-telemetry/opentelemetry-js-contrib/blob/0309caeafc44ac9cb13a3345b790b01b76d0497d/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts#L138\n          if ('knex.version' in data) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.knex');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Knex integration\n *\n * Capture tracing data for [Knex](https://knexjs.org/).\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *  integrations: [Sentry.knexIntegration()],\n * });\n * ```\n */\nexport const knexIntegration = defineIntegration(_knexIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mssql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft SQL Server\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MSSQL = 'mssql' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns Operation executed on Tedious Connection. Does not map to SQL statement in any way.\n */\nexport function getSpanName(\n  operation: string,\n  db: string | undefined,\n  sql: string | undefined,\n  bulkLoadTable: string | undefined\n): string {\n  if (operation === 'execBulkLoad' && bulkLoadTable && db) {\n    return `${operation} ${bulkLoadTable} ${db}`;\n  }\n  if (operation === 'callProcedure') {\n    // `sql` refers to procedure name with `callProcedure`\n    if (db) {\n      return `${operation} ${sql} ${db}`;\n    }\n    return `${operation} ${sql}`;\n  }\n  // do not use `sql` in general case because of high-cardinality\n  if (db) {\n    return `${operation} ${db}`;\n  }\n  return `${operation}`;\n}\n\nexport const once = (fn: Function) => {\n  let called = false;\n  return (...args: unknown[]) => {\n    if (called) return;\n    called = true;\n    return fn(...args);\n  };\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-tedious';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  DB_SYSTEM_VALUE_MSSQL,\n  ATTR_DB_NAME,\n  ATTR_DB_SQL_TABLE,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport type * as tedious from 'tedious';\nimport { TediousInstrumentationConfig } from './types';\nimport { getSpanName, once } from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst CURRENT_DATABASE = Symbol(\n  'opentelemetry.instrumentation-tedious.current-database'\n);\n\nexport const INJECTED_CTX = Symbol(\n  'opentelemetry.instrumentation-tedious.context-info-injected'\n);\n\nconst PATCHED_METHODS = [\n  'callProcedure',\n  'execSql',\n  'execSqlBatch',\n  'execBulkLoad',\n  'prepare',\n  'execute',\n];\n\ntype UnknownFunction = (...args: any[]) => any;\ntype ApproxConnection = EventEmitter & {\n  [CURRENT_DATABASE]: string;\n  config: any;\n};\ntype ApproxRequest = EventEmitter & {\n  sqlTextOrProcedure: string | undefined;\n  callback: any;\n  table: string | undefined;\n  parametersByName: any;\n};\n\nfunction setDatabase(this: ApproxConnection, databaseName: string) {\n  Object.defineProperty(this, CURRENT_DATABASE, {\n    value: databaseName,\n    writable: true,\n  });\n}\n\nexport class TediousInstrumentation extends InstrumentationBase {\n  static readonly COMPONENT = 'tedious';\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: TediousInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        TediousInstrumentation.COMPONENT,\n        ['>=1.11.0 <20'],\n        (moduleExports: typeof tedious) => {\n          const ConnectionPrototype: any = moduleExports.Connection.prototype;\n          for (const method of PATCHED_METHODS) {\n            if (isWrapped(ConnectionPrototype[method])) {\n              this._unwrap(ConnectionPrototype, method);\n            }\n            this._wrap(\n              ConnectionPrototype,\n              method,\n              this._patchQuery(method, moduleExports) as any\n            );\n          }\n\n          if (isWrapped(ConnectionPrototype.connect)) {\n            this._unwrap(ConnectionPrototype, 'connect');\n          }\n          this._wrap(ConnectionPrototype, 'connect', this._patchConnect);\n\n          return moduleExports;\n        },\n        (moduleExports: typeof tedious) => {\n          if (moduleExports === undefined) return;\n          const ConnectionPrototype: any = moduleExports.Connection.prototype;\n          for (const method of PATCHED_METHODS) {\n            this._unwrap(ConnectionPrototype, method);\n          }\n          this._unwrap(ConnectionPrototype, 'connect');\n        }\n      ),\n    ];\n  }\n\n  private _patchConnect(original: UnknownFunction): UnknownFunction {\n    return function patchedConnect(this: ApproxConnection) {\n      setDatabase.call(this, this.config?.options?.database);\n\n      // remove the listener first in case it's already added\n      this.removeListener('databaseChange', setDatabase);\n      this.on('databaseChange', setDatabase);\n\n      this.once('end', () => {\n        this.removeListener('databaseChange', setDatabase);\n      });\n      return original.apply(this, arguments as unknown as any[]);\n    };\n  }\n\n  private _buildTraceparent(span: api.Span): string {\n    const sc = span.spanContext();\n    return `00-${sc.traceId}-${sc.spanId}-0${Number(sc.traceFlags || api.TraceFlags.NONE).toString(16)}`;\n  }\n\n  /**\n   * Fire a one-off `SET CONTEXT_INFO @opentelemetry_traceparent` on the same\n   * connection. Marks the request with INJECTED_CTX so our patch skips it.\n   */\n  private _injectContextInfo(\n    connection: any,\n    tediousModule: typeof tedious,\n    traceparent: string\n  ): Promise {\n    return new Promise(resolve => {\n      try {\n        const sql = 'set context_info @opentelemetry_traceparent';\n        const req = new tediousModule.Request(sql, (_err: any) => {\n          resolve();\n        });\n        Object.defineProperty(req, INJECTED_CTX, { value: true });\n        const buf = Buffer.from(traceparent, 'utf8');\n        req.addParameter(\n          'opentelemetry_traceparent',\n          (tediousModule as any).TYPES.VarBinary,\n          buf,\n          { length: buf.length }\n        );\n\n        connection.execSql(req);\n      } catch {\n        resolve();\n      }\n    });\n  }\n\n  private _shouldInjectFor(operation: string): boolean {\n    return (\n      operation === 'execSql' ||\n      operation === 'execSqlBatch' ||\n      operation === 'callProcedure' ||\n      operation === 'execute'\n    );\n  }\n\n  private _patchQuery(operation: string, tediousModule: typeof tedious) {\n    return (originalMethod: UnknownFunction): UnknownFunction => {\n      const thisPlugin = this;\n\n      function patchedMethod(this: ApproxConnection, request: ApproxRequest) {\n        // Skip our own injected request\n        if ((request as any)?.[INJECTED_CTX]) {\n          return originalMethod.apply(this, arguments as unknown as any[]);\n        }\n\n        if (!(request instanceof EventEmitter)) {\n          thisPlugin._diag.warn(\n            `Unexpected invocation of patched ${operation} method. Span not recorded`\n          );\n          return originalMethod.apply(this, arguments as unknown as any[]);\n        }\n        let procCount = 0;\n        let statementCount = 0;\n        const incrementStatementCount = () => statementCount++;\n        const incrementProcCount = () => procCount++;\n        const databaseName = this[CURRENT_DATABASE];\n        const sql = (request => {\n          // Required for <11.0.9\n          if (\n            request.sqlTextOrProcedure === 'sp_prepare' &&\n            request.parametersByName?.stmt?.value\n          ) {\n            return request.parametersByName.stmt.value;\n          }\n          return request.sqlTextOrProcedure;\n        })(request);\n\n        const attributes: api.Attributes = {};\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MSSQL;\n          attributes[ATTR_DB_NAME] = databaseName;\n          // >=4 uses `authentication` object; older versions just userName and password pair\n          attributes[ATTR_DB_USER] =\n            this.config?.userName ??\n            this.config?.authentication?.options?.userName;\n          attributes[ATTR_DB_STATEMENT] = sql;\n          attributes[ATTR_DB_SQL_TABLE] = request.table;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          // The OTel spec for \"db.namespace\" discusses handling for connection\n          // to MSSQL \"named instances\". This isn't currently supported.\n          //    https://opentelemetry.io/docs/specs/semconv/database/sql-server/#:~:text=%5B1%5D%20db%2Enamespace\n          attributes[ATTR_DB_NAMESPACE] = databaseName;\n          attributes[ATTR_DB_SYSTEM_NAME] =\n            DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER;\n          attributes[ATTR_DB_QUERY_TEXT] = sql;\n          attributes[ATTR_DB_COLLECTION_NAME] = request.table;\n          // See https://opentelemetry.io/docs/specs/semconv/database/sql-server/#spans\n          // TODO(3290): can `db.response.status_code` be added?\n          // TODO(3290): is `operation` correct for `db.operation.name`\n          // TODO(3290): can `db.query.summary` reliably be calculated?\n          // TODO(3290): `db.stored_procedure.name`\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_NAME] = this.config?.server;\n          attributes[ATTR_NET_PEER_PORT] = this.config?.options?.port;\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_ADDRESS] = this.config?.server;\n          attributes[ATTR_SERVER_PORT] = this.config?.options?.port;\n        }\n        const span = thisPlugin.tracer.startSpan(\n          getSpanName(operation, databaseName, sql, request.table),\n          {\n            kind: api.SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        const endSpan = once((err?: any) => {\n          request.removeListener('done', incrementStatementCount);\n          request.removeListener('doneInProc', incrementStatementCount);\n          request.removeListener('doneProc', incrementProcCount);\n          request.removeListener('error', endSpan);\n          this.removeListener('end', endSpan);\n\n          span.setAttribute('tedious.procedure_count', procCount);\n          span.setAttribute('tedious.statement_count', statementCount);\n          if (err) {\n            span.setStatus({\n              code: api.SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            // TODO(3290): set `error.type` attribute?\n          }\n          span.end();\n        });\n\n        request.on('done', incrementStatementCount);\n        request.on('doneInProc', incrementStatementCount);\n        request.on('doneProc', incrementProcCount);\n        request.once('error', endSpan);\n        this.on('end', endSpan);\n\n        if (typeof request.callback === 'function') {\n          thisPlugin._wrap(\n            request,\n            'callback',\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        } else {\n          thisPlugin._diag.error('Expected request.callback to be a function');\n        }\n\n        const runUserRequest = () => {\n          return api.context.with(\n            api.trace.setSpan(api.context.active(), span),\n            originalMethod,\n            this,\n            ...arguments\n          );\n        };\n\n        const cfg = thisPlugin.getConfig();\n        const shouldInject =\n          cfg.enableTraceContextPropagation &&\n          thisPlugin._shouldInjectFor(operation);\n\n        if (!shouldInject) return runUserRequest();\n\n        const traceparent = thisPlugin._buildTraceparent(span);\n\n        void thisPlugin\n          ._injectContextInfo(this, tediousModule, traceparent)\n          .finally(runUserRequest);\n      }\n\n      Object.defineProperty(patchedMethod, 'length', {\n        value: originalMethod.length,\n        writable: false,\n      });\n\n      return patchedMethod;\n    };\n  }\n\n  private _patchCallbackQuery(endSpan: Function) {\n    return (originalCallback: Function) => {\n      return function (\n        this: any,\n        err: Error | undefined | null,\n        rowCount?: number,\n        rows?: any\n      ) {\n        endSpan(err);\n        return originalCallback.apply(this, arguments);\n      };\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { TediousInstrumentation } from './instrumentation';\nexport type { TediousInstrumentationConfig } from './types';\n","import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst TEDIUS_INSTRUMENTED_METHODS = new Set([\n  'callProcedure',\n  'execSql',\n  'execSqlBatch',\n  'execBulkLoad',\n  'prepare',\n  'execute',\n]);\n\nconst INTEGRATION_NAME = 'Tedious';\n\nexport const instrumentTedious = generateInstrumentOnce(INTEGRATION_NAME, () => new TediousInstrumentation({}));\n\nconst _tediousIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentTedious();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const { description, data } = spanToJSON(span);\n          // Tedius integration always set a span name and `db.system` attribute to `mssql`.\n          if (!description || data['db.system'] !== 'mssql') {\n            return;\n          }\n\n          const operation = description.split(' ')[0] || '';\n          if (TEDIUS_INSTRUMENTED_METHODS.has(operation)) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.tedious');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [tedious](https://www.npmjs.com/package/tedious) library.\n *\n * For more information, see the [`tediousIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/tedious/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.tediousIntegration()],\n * });\n * ```\n */\nexport const tediousIntegration = defineIntegration(_tediousIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-generic-pool';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\n\nimport type * as genericPool from 'generic-pool';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst MODULE_NAME = 'generic-pool';\n\nexport class GenericPoolInstrumentation extends InstrumentationBase {\n  // only used for v2 - v2.3)\n  private _isDisabled = false;\n\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=3.0.0 <4'],\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          if (isWrapped(Pool.prototype.acquire)) {\n            this._unwrap(Pool.prototype, 'acquire');\n          }\n          this._wrap(\n            Pool.prototype,\n            'acquire',\n            this._acquirePatcher.bind(this)\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          this._unwrap(Pool.prototype, 'acquire');\n          return moduleExports;\n        }\n      ),\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.4.0 <3'],\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          if (isWrapped(Pool.prototype.acquire)) {\n            this._unwrap(Pool.prototype, 'acquire');\n          }\n          this._wrap(\n            Pool.prototype,\n            'acquire',\n            this._acquireWithCallbacksPatcher.bind(this)\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          this._unwrap(Pool.prototype, 'acquire');\n          return moduleExports;\n        }\n      ),\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.0.0 <2.4'],\n        moduleExports => {\n          this._isDisabled = false;\n          if (isWrapped(moduleExports.Pool)) {\n            this._unwrap(moduleExports, 'Pool');\n          }\n          this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n          return moduleExports;\n        },\n        moduleExports => {\n          // since the object is created on the fly every time, we need to use\n          // a boolean switch here to disable the instrumentation\n          this._isDisabled = true;\n          return moduleExports;\n        }\n      ),\n    ];\n  }\n\n  private _acquirePatcher(original: genericPool.Pool['acquire']) {\n    const instrumentation = this;\n    return function wrapped_acquire(\n      this: genericPool.Pool,\n      ...args: any[]\n    ) {\n      const parent = api.context.active();\n      const span = instrumentation.tracer.startSpan(\n        'generic-pool.acquire',\n        {},\n        parent\n      );\n\n      return api.context.with(api.trace.setSpan(parent, span), () => {\n        return original.call(this, ...args).then(\n          value => {\n            span.end();\n            return value;\n          },\n          err => {\n            span.recordException(err);\n            span.end();\n            throw err;\n          }\n        );\n      });\n    };\n  }\n\n  private _poolWrapper(original: any) {\n    const instrumentation = this;\n    return function wrapped_pool(this: any) {\n      const pool = original.apply(this, arguments);\n      instrumentation._wrap(\n        pool,\n        'acquire',\n        instrumentation._acquireWithCallbacksPatcher.bind(instrumentation)\n      );\n      return pool;\n    };\n  }\n\n  private _acquireWithCallbacksPatcher(original: any) {\n    const instrumentation = this;\n    return function wrapped_acquire(\n      this: genericPool.Pool,\n      cb: Function,\n      priority: number\n    ) {\n      // only used for v2 - v2.3\n      if (instrumentation._isDisabled) {\n        return original.call(this, cb, priority);\n      }\n      const parent = api.context.active();\n      const span = instrumentation.tracer.startSpan(\n        'generic-pool.acquire',\n        {},\n        parent\n      );\n\n      return api.context.with(api.trace.setSpan(parent, span), () => {\n        original.call(\n          this,\n          (err: unknown, client: unknown) => {\n            span.end();\n            // Not checking whether cb is a function because\n            // the original code doesn't do that either.\n            if (cb) {\n              return cb(err, client);\n            }\n          },\n          priority\n        );\n      });\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { GenericPoolInstrumentation } from './instrumentation';\n","import { GenericPoolInstrumentation } from '@opentelemetry/instrumentation-generic-pool';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nexport const instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentGenericPool();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const spanJSON = spanToJSON(span);\n\n          const spanDescription = spanJSON.description;\n\n          // typo in emitted span for version <= 0.38.0 of @opentelemetry/instrumentation-generic-pool\n          const isGenericPoolSpan =\n            spanDescription === 'generic-pool.aquire' || spanDescription === 'generic-pool.acquire';\n\n          if (isGenericPoolSpan) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.generic_pool');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [generic-pool](https://www.npmjs.com/package/generic-pool) library.\n *\n * For more information, see the [`genericPoolIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/genericpool/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.genericPoolIntegration()],\n * });\n * ```\n */\nexport const genericPoolIntegration = defineIntegration(_genericPoolIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.31.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-dataloader';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\nimport {\n  trace,\n  context,\n  Link,\n  SpanStatusCode,\n  SpanKind,\n} from '@opentelemetry/api';\nimport { DataloaderInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport type * as Dataloader from 'dataloader';\n\nconst MODULE_NAME = 'dataloader';\n\ntype DataloaderInternal = typeof Dataloader.prototype & {\n  _batchLoadFn: Dataloader.BatchLoadFn;\n  _batch: { spanLinks?: Link[] } | null;\n};\n\ntype LoadFn = (typeof Dataloader.prototype)['load'];\ntype LoadManyFn = (typeof Dataloader.prototype)['loadMany'];\ntype PrimeFn = (typeof Dataloader.prototype)['prime'];\ntype ClearFn = (typeof Dataloader.prototype)['clear'];\ntype ClearAllFn = (typeof Dataloader.prototype)['clearAll'];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractModuleExports(module: any) {\n  return module[Symbol.toStringTag] === 'Module'\n    ? module.default // ESM\n    : module; // CommonJS\n}\n\nexport class DataloaderInstrumentation extends InstrumentationBase {\n  constructor(config: DataloaderInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.0.0 <3'],\n        module => {\n          const dataloader = extractModuleExports(module);\n          this._patchLoad(dataloader.prototype);\n          this._patchLoadMany(dataloader.prototype);\n          this._patchPrime(dataloader.prototype);\n          this._patchClear(dataloader.prototype);\n          this._patchClearAll(dataloader.prototype);\n\n          return this._getPatchedConstructor(dataloader);\n        },\n        module => {\n          const dataloader = extractModuleExports(module);\n          ['load', 'loadMany', 'prime', 'clear', 'clearAll'].forEach(method => {\n            if (isWrapped(dataloader.prototype[method])) {\n              this._unwrap(dataloader.prototype, method);\n            }\n          });\n        }\n      ),\n    ];\n  }\n\n  private shouldCreateSpans(): boolean {\n    const config = this.getConfig();\n    const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n    return hasParentSpan || !config.requireParentSpan;\n  }\n\n  private getSpanName(\n    dataloader: DataloaderInternal,\n    operation: 'load' | 'loadMany' | 'batch' | 'prime' | 'clear' | 'clearAll'\n  ): string {\n    const dataloaderName = dataloader.name;\n    if (dataloaderName === undefined || dataloaderName === null) {\n      return `${MODULE_NAME}.${operation}`;\n    }\n\n    return `${MODULE_NAME}.${operation} ${dataloaderName}`;\n  }\n\n  private _wrapBatchLoadFn(\n    batchLoadFn: Dataloader.BatchLoadFn\n  ): Dataloader.BatchLoadFn {\n    const instrumentation = this;\n\n    return function patchedBatchLoadFn(\n      this: DataloaderInternal,\n      ...args: Parameters>\n    ) {\n      if (\n        !instrumentation.isEnabled() ||\n        !instrumentation.shouldCreateSpans()\n      ) {\n        return batchLoadFn.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'batch'),\n        { links: this._batch?.spanLinks as Link[] | undefined },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        return (batchLoadFn.apply(this, args) as Promise)\n          .then(value => {\n            span.end();\n            return value;\n          })\n          .catch(err => {\n            span.recordException(err);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            span.end();\n            throw err;\n          });\n      });\n    };\n  }\n\n  private _getPatchedConstructor(\n    constructor: typeof Dataloader\n  ): typeof Dataloader {\n    const instrumentation = this;\n    const prototype = constructor.prototype;\n\n    if (!instrumentation.isEnabled()) {\n      return constructor;\n    }\n\n    function PatchedDataloader(\n      this: DataloaderInternal,\n      ...args: ConstructorParameters\n    ) {\n      // BatchLoadFn is the first constructor argument\n      // https://github.com/graphql/dataloader/blob/77c2cd7ca97e8795242018ebc212ce2487e729d2/src/index.js#L47\n      if (typeof args[0] === 'function') {\n        if (isWrapped(args[0])) {\n          instrumentation._unwrap(args, 0);\n        }\n\n        args[0] = instrumentation._wrapBatchLoadFn(\n          args[0]\n        ) as Dataloader.BatchLoadFn;\n      }\n\n      return constructor.apply(this, args);\n    }\n\n    PatchedDataloader.prototype = prototype;\n    return PatchedDataloader as unknown as typeof Dataloader;\n  }\n\n  private _patchLoad(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.load)) {\n      this._unwrap(proto, 'load');\n    }\n\n    this._wrap(proto, 'load', this._getPatchedLoad.bind(this));\n  }\n\n  private _getPatchedLoad(original: LoadFn): LoadFn {\n    const instrumentation = this;\n\n    return function patchedLoad(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'load'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        const result = original\n          .call(this, ...args)\n          .then(value => {\n            span.end();\n            return value;\n          })\n          .catch(err => {\n            span.recordException(err);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            span.end();\n            throw err;\n          });\n\n        const loader = this as DataloaderInternal;\n\n        if (loader._batch) {\n          if (!loader._batch.spanLinks) {\n            loader._batch.spanLinks = [];\n          }\n\n          loader._batch.spanLinks.push({ context: span.spanContext() } as Link);\n        }\n\n        return result;\n      });\n    };\n  }\n\n  private _patchLoadMany(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.loadMany)) {\n      this._unwrap(proto, 'loadMany');\n    }\n\n    this._wrap(proto, 'loadMany', this._getPatchedLoadMany.bind(this));\n  }\n\n  private _getPatchedLoadMany(original: LoadManyFn): LoadManyFn {\n    const instrumentation = this;\n\n    return function patchedLoadMany(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'loadMany'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        // .loadMany never rejects, as errors from internal .load\n        // calls are caught by dataloader lib\n        return original.call(this, ...args).then(value => {\n          span.end();\n          return value;\n        });\n      });\n    };\n  }\n\n  private _patchPrime(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.prime)) {\n      this._unwrap(proto, 'prime');\n    }\n\n    this._wrap(proto, 'prime', this._getPatchedPrime.bind(this));\n  }\n\n  private _getPatchedPrime(original: PrimeFn): PrimeFn {\n    const instrumentation = this;\n\n    return function patchedPrime(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'prime'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n\n  private _patchClear(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.clear)) {\n      this._unwrap(proto, 'clear');\n    }\n\n    this._wrap(proto, 'clear', this._getPatchedClear.bind(this));\n  }\n\n  private _getPatchedClear(original: ClearFn): ClearFn {\n    const instrumentation = this;\n\n    return function patchedClear(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'clear'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n\n  private _patchClearAll(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.clearAll)) {\n      this._unwrap(proto, 'clearAll');\n    }\n\n    this._wrap(proto, 'clearAll', this._getPatchedClearAll.bind(this));\n  }\n\n  private _getPatchedClearAll(original: ClearAllFn): ClearAllFn {\n    const instrumentation = this;\n\n    return function patchedClearAll(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'clearAll'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { DataloaderInstrumentation } from './instrumentation';\nexport type { DataloaderInstrumentationConfig } from './types';\n","import { DataloaderInstrumentation } from '@opentelemetry/instrumentation-dataloader';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  defineIntegration,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Dataloader';\n\nexport const instrumentDataloader = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new DataloaderInstrumentation({\n      requireParentSpan: true,\n    }),\n);\n\nconst _dataloaderIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentDataloader();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      // This is called either immediately or when the instrumentation is wrapped\n      instrumentationWrappedCallback?.(() => {\n        client.on('spanStart', span => {\n          const spanJSON = spanToJSON(span);\n          if (spanJSON.description?.startsWith('dataloader')) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.dataloader');\n          }\n\n          // These are all possible dataloader span descriptions\n          // Still checking for the future versions\n          // in case they add support for `clear` and `prime`\n          if (\n            spanJSON.description === 'dataloader.load' ||\n            spanJSON.description === 'dataloader.loadMany' ||\n            spanJSON.description === 'dataloader.batch'\n          ) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'cache.get');\n            // TODO: We can try adding `key` to the `data` attribute upstream.\n            // Or alternatively, we can add `requestHook` to the dataloader instrumentation.\n          }\n        });\n      });\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [dataloader](https://www.npmjs.com/package/dataloader) library.\n *\n * For more information, see the [`dataloaderIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/dataloader/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.dataloaderIntegration()],\n * });\n * ```\n */\nexport const dataloaderIntegration = defineIntegration(_dataloaderIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `messaging.operation.type` instead.\n *\n * @example publish\n * @example create\n * @example process\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `messaging.operation.type`.\n */\nexport const ATTR_MESSAGING_OPERATION = 'messaging.operation' as const;\n\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains constants for values that where replaced/removed from\n * Semantic Conventions long enough ago that they do not have `ATTR_*`\n * constants in the `@opentelemetry/semantic-conventions` package. Eventually\n * it is expected that this instrumention will be updated to emit telemetry\n * using modern Semantic Conventions, dropping the need for the constants in\n * this file.\n */\n\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_DESTINATION = 'messaging.destination' as const;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const ATTR_MESSAGING_DESTINATION_KIND =\n  'messaging.destination_kind' as const;\n\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_RABBITMQ_ROUTING_KEY =\n  'messaging.rabbitmq.routing_key' as const;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGING_OPERATION_VALUE_PROCESS = 'process' as const;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const ATTR_MESSAGING_PROTOCOL = 'messaging.protocol' as const;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const ATTR_MESSAGING_PROTOCOL_VERSION =\n  'messaging.protocol_version' as const;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const ATTR_MESSAGING_URL = 'messaging.url' as const;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic' as const;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n *\n * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`.\n */\nexport const OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id' as const;\n\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_CONVERSATION_ID =\n  'messaging.conversation_id' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface PublishInfo {\n  moduleVersion: string | undefined;\n  exchange: string;\n  routingKey: string;\n  content: Buffer;\n  options?: AmqplibPublishOptions;\n  isConfirmChannel?: boolean;\n}\n\nexport interface PublishConfirmedInfo extends PublishInfo {\n  confirmError?: any;\n}\n\nexport interface ConsumeInfo {\n  moduleVersion: string | undefined;\n  msg: ConsumeMessage;\n}\n\nexport interface ConsumeEndInfo {\n  msg: ConsumeMessage;\n  rejected: boolean | null;\n  endOperation: EndOperation;\n}\n\nexport interface AmqplibPublishCustomAttributeFunction {\n  (span: Span, publishInfo: PublishInfo): void;\n}\n\nexport interface AmqplibPublishConfirmCustomAttributeFunction {\n  (span: Span, publishConfirmedInto: PublishConfirmedInfo): void;\n}\n\nexport interface AmqplibConsumeCustomAttributeFunction {\n  (span: Span, consumeInfo: ConsumeInfo): void;\n}\n\nexport interface AmqplibConsumeEndCustomAttributeFunction {\n  (span: Span, consumeEndInfo: ConsumeEndInfo): void;\n}\n\nexport enum EndOperation {\n  AutoAck = 'auto ack',\n  Ack = 'ack',\n  AckAll = 'ackAll',\n  Reject = 'reject',\n  Nack = 'nack',\n  NackAll = 'nackAll',\n  ChannelClosed = 'channel closed',\n  ChannelError = 'channel error',\n  InstrumentationTimeout = 'instrumentation timeout',\n}\n\nexport interface AmqplibInstrumentationConfig extends InstrumentationConfig {\n  /** hook for adding custom attributes before publish message is sent */\n  publishHook?: AmqplibPublishCustomAttributeFunction;\n\n  /** hook for adding custom attributes after publish message is confirmed by the broker */\n  publishConfirmHook?: AmqplibPublishConfirmCustomAttributeFunction;\n\n  /** hook for adding custom attributes before consumer message is processed */\n  consumeHook?: AmqplibConsumeCustomAttributeFunction;\n\n  /** hook for adding custom attributes after consumer message is acked to server */\n  consumeEndHook?: AmqplibConsumeEndCustomAttributeFunction;\n\n  /**\n   * When user is setting up consume callback, it is user's responsibility to call\n   * ack/nack etc on the msg to resolve it in the server.\n   * If user is not calling the ack, the message will stay in the queue until\n   * channel is closed, or until server timeout expires (if configured).\n   * While we wait for the ack, a reference to the message is stored in plugin, which\n   * will never be garbage collected.\n   * To prevent memory leak, plugin has it's own configuration of timeout, which\n   * will close the span if user did not call ack after this timeout.\n   * If timeout is not big enough, span might be closed with 'InstrumentationTimeout',\n   * and then received valid ack from the user later which will not be instrumented.\n   *\n   * Default is 1 minute\n   */\n  consumeTimeoutMs?: number;\n\n  /** option to use a span link for the consume message instead of continuing a trace */\n  useLinksForConsume?: boolean;\n}\n\nexport const DEFAULT_CONFIG: AmqplibInstrumentationConfig = {\n  consumeTimeoutMs: 1000 * 60, // 1 minute\n  useLinksForConsume: false,\n};\n\n// The following types are vendored from `@types/amqplib@0.10.1` - commit SHA: 4205e03127692a40b4871709a7134fe4e2ed5510\n\n// Vendored from: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/4205e03127692a40b4871709a7134fe4e2ed5510/types/amqplib/properties.d.ts#L108\n// This exists in `@types/amqplib` as `Options.Publish`. We're renaming things\n// here to avoid importing the whole Options namespace.\nexport interface AmqplibPublishOptions {\n  expiration?: string | number;\n  userId?: string;\n  CC?: string | string[];\n\n  mandatory?: boolean;\n  persistent?: boolean;\n  deliveryMode?: boolean | number;\n  BCC?: string | string[];\n\n  contentType?: string;\n  contentEncoding?: string;\n  headers?: any;\n  priority?: number;\n  correlationId?: string;\n  replyTo?: string;\n  messageId?: string;\n  timestamp?: number;\n  type?: string;\n  appId?: string;\n}\n\n// Vendored from: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/4205e03127692a40b4871709a7134fe4e2ed5510/types/amqplib/properties.d.ts#L142\nexport interface Message {\n  content: Buffer;\n  fields: MessageFields;\n  properties: MessageProperties;\n}\n\nexport interface ConsumeMessage extends Message {\n  fields: ConsumeMessageFields;\n}\n\nexport interface CommonMessageFields {\n  deliveryTag: number;\n  redelivered: boolean;\n  exchange: string;\n  routingKey: string;\n}\n\nexport interface MessageFields extends CommonMessageFields {\n  messageCount?: number;\n  consumerTag?: string;\n}\n\nexport interface ConsumeMessageFields extends CommonMessageFields {\n  deliveryTag: number;\n}\n\nexport interface MessageProperties {\n  contentType: any | undefined;\n  contentEncoding: any | undefined;\n  headers: any;\n  deliveryMode: any | undefined;\n  priority: any | undefined;\n  correlationId: any | undefined;\n  replyTo: any | undefined;\n  expiration: any | undefined;\n  messageId: any | undefined;\n  timestamp: any | undefined;\n  type: any | undefined;\n  userId: any | undefined;\n  appId: any | undefined;\n  clusterId: any | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  Context,\n  createContextKey,\n  diag,\n  HrTime,\n  Span,\n  Attributes,\n  AttributeValue,\n} from '@opentelemetry/api';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_MESSAGING_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n  ATTR_MESSAGING_PROTOCOL,\n  ATTR_MESSAGING_PROTOCOL_VERSION,\n  ATTR_MESSAGING_URL,\n} from '../src/semconv-obsolete';\nimport type * as amqp from 'amqplib';\n\nexport const MESSAGE_STORED_SPAN: unique symbol = Symbol(\n  'opentelemetry.amqplib.message.stored-span'\n);\nexport const CHANNEL_SPANS_NOT_ENDED: unique symbol = Symbol(\n  'opentelemetry.amqplib.channel.spans-not-ended'\n);\nexport const CHANNEL_CONSUME_TIMEOUT_TIMER: unique symbol = Symbol(\n  'opentelemetry.amqplib.channel.consumer-timeout-timer'\n);\nexport const CONNECTION_ATTRIBUTES: unique symbol = Symbol(\n  'opentelemetry.amqplib.connection.attributes'\n);\n\nexport type InstrumentationConnection = amqp.Connection & {\n  [CONNECTION_ATTRIBUTES]?: Attributes;\n};\nexport type InstrumentationPublishChannel = (\n  | amqp.Channel\n  | amqp.ConfirmChannel\n) & { connection: InstrumentationConnection };\nexport type InstrumentationConsumeChannel = amqp.Channel & {\n  connection: InstrumentationConnection;\n  [CHANNEL_SPANS_NOT_ENDED]?: {\n    msg: amqp.ConsumeMessage;\n    timeOfConsume: HrTime;\n  }[];\n  [CHANNEL_CONSUME_TIMEOUT_TIMER]?: NodeJS.Timeout;\n};\nexport type InstrumentationMessage = amqp.Message & {\n  [MESSAGE_STORED_SPAN]?: Span;\n};\nexport type InstrumentationConsumeMessage = amqp.ConsumeMessage & {\n  [MESSAGE_STORED_SPAN]?: Span;\n};\n\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY: symbol = createContextKey(\n  'opentelemetry.amqplib.channel.is-confirm-channel'\n);\n\nexport const normalizeExchange = (exchangeName: string) =>\n  exchangeName !== '' ? exchangeName : '';\n\nconst censorPassword = (url: string): string => {\n  return url.replace(/:[^:@/]*@/, ':***@');\n};\n\nconst getPort = (\n  portFromUrl: number | undefined,\n  resolvedProtocol: string\n): number => {\n  // we are using the resolved protocol which is upper case\n  // this code mimic the behavior of the amqplib which is used to set connection params\n  return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671);\n};\n\nconst getProtocol = (protocolFromUrl: string | undefined): string => {\n  const resolvedProtocol = protocolFromUrl || 'amqp';\n  // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp')\n  const noEndingColon = resolvedProtocol.endsWith(':')\n    ? resolvedProtocol.substring(0, resolvedProtocol.length - 1)\n    : resolvedProtocol;\n  // upper cases to match spec\n  return noEndingColon.toUpperCase();\n};\n\nconst getHostname = (hostnameFromUrl: string | undefined): string => {\n  // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost.\n  // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener\n  return hostnameFromUrl || 'localhost';\n};\n\nconst extractConnectionAttributeOrLog = (\n  url: string | amqp.Options.Connect,\n  attributeKey: string,\n  attributeValue: AttributeValue,\n  nameForLog: string\n): Attributes => {\n  if (attributeValue) {\n    return { [attributeKey]: attributeValue };\n  } else {\n    diag.error(\n      `amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`,\n      {\n        url,\n      }\n    );\n    return {};\n  }\n};\n\nexport const getConnectionAttributesFromServer = (\n  conn: amqp.Connection\n): Attributes => {\n  const product = conn.serverProperties.product?.toLowerCase?.();\n  if (product) {\n    return {\n      [ATTR_MESSAGING_SYSTEM]: product,\n    };\n  } else {\n    return {};\n  }\n};\n\nexport const getConnectionAttributesFromUrl = (\n  url: string | amqp.Options.Connect,\n  netSemconvStability: SemconvStability\n): Attributes => {\n  const attributes: Attributes = {\n    [ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n  };\n\n  url = url || 'amqp://localhost';\n  if (typeof url === 'object') {\n    const connectOptions = url as amqp.Options.Connect;\n\n    const protocol = getProtocol(connectOptions?.protocol);\n    Object.assign(attributes, {\n      ...extractConnectionAttributeOrLog(\n        url,\n        ATTR_MESSAGING_PROTOCOL,\n        protocol,\n        'protocol'\n      ),\n    });\n\n    const hostname = getHostname(connectOptions?.hostname);\n    if (netSemconvStability & SemconvStability.OLD) {\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          url,\n          ATTR_NET_PEER_NAME,\n          hostname,\n          'hostname'\n        ),\n      });\n    }\n    if (netSemconvStability & SemconvStability.STABLE) {\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          url,\n          ATTR_SERVER_ADDRESS,\n          hostname,\n          'hostname'\n        ),\n      });\n    }\n\n    const port = getPort(connectOptions.port, protocol);\n    if (netSemconvStability & SemconvStability.OLD) {\n      Object.assign(\n        attributes,\n        extractConnectionAttributeOrLog(url, ATTR_NET_PEER_PORT, port, 'port')\n      );\n    }\n    if (netSemconvStability & SemconvStability.STABLE) {\n      Object.assign(\n        attributes,\n        extractConnectionAttributeOrLog(url, ATTR_SERVER_PORT, port, 'port')\n      );\n    }\n  } else {\n    const censoredUrl = censorPassword(url);\n    attributes[ATTR_MESSAGING_URL] = censoredUrl;\n    try {\n      const urlParts = new URL(censoredUrl);\n\n      const protocol = getProtocol(urlParts.protocol);\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          censoredUrl,\n          ATTR_MESSAGING_PROTOCOL,\n          protocol,\n          'protocol'\n        ),\n      });\n\n      const hostname = getHostname(urlParts.hostname);\n      if (netSemconvStability & SemconvStability.OLD) {\n        Object.assign(attributes, {\n          ...extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_NET_PEER_NAME,\n            hostname,\n            'hostname'\n          ),\n        });\n      }\n      if (netSemconvStability & SemconvStability.STABLE) {\n        Object.assign(attributes, {\n          ...extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_SERVER_ADDRESS,\n            hostname,\n            'hostname'\n          ),\n        });\n      }\n\n      const port = getPort(\n        urlParts.port ? parseInt(urlParts.port) : undefined,\n        protocol\n      );\n      if (netSemconvStability & SemconvStability.OLD) {\n        Object.assign(\n          attributes,\n          extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_NET_PEER_PORT,\n            port,\n            'port'\n          )\n        );\n      }\n      if (netSemconvStability & SemconvStability.STABLE) {\n        Object.assign(\n          attributes,\n          extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_SERVER_PORT,\n            port,\n            'port'\n          )\n        );\n      }\n    } catch (err) {\n      diag.error(\n        'amqplib instrumentation: error while extracting connection details from connection url',\n        {\n          censoredUrl,\n          err,\n        }\n      );\n    }\n  }\n  return attributes;\n};\n\nexport const markConfirmChannelTracing = (context: Context) => {\n  return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\n\nexport const unmarkConfirmChannelTracing = (context: Context) => {\n  return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\n\nexport const isConfirmChannelTracing = (context: Context) => {\n  return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.61.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  context,\n  diag,\n  propagation,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  ROOT_CONTEXT,\n  Link,\n  Context,\n} from '@opentelemetry/api';\nimport {\n  hrTime,\n  hrTimeDuration,\n  hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_MESSAGING_OPERATION } from './semconv';\nimport {\n  ATTR_MESSAGING_DESTINATION,\n  ATTR_MESSAGING_DESTINATION_KIND,\n  ATTR_MESSAGING_RABBITMQ_ROUTING_KEY,\n  MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n  MESSAGING_OPERATION_VALUE_PROCESS,\n  OLD_ATTR_MESSAGING_MESSAGE_ID,\n  ATTR_MESSAGING_CONVERSATION_ID,\n} from '../src/semconv-obsolete';\nimport type {\n  Connection,\n  ConsumeMessage,\n  Message,\n  Options,\n  Replies,\n} from 'amqplib';\nimport {\n  AmqplibInstrumentationConfig,\n  DEFAULT_CONFIG,\n  EndOperation,\n} from './types';\nimport {\n  CHANNEL_CONSUME_TIMEOUT_TIMER,\n  CHANNEL_SPANS_NOT_ENDED,\n  CONNECTION_ATTRIBUTES,\n  getConnectionAttributesFromServer,\n  getConnectionAttributesFromUrl,\n  InstrumentationConnection,\n  InstrumentationConsumeChannel,\n  InstrumentationConsumeMessage,\n  InstrumentationMessage,\n  InstrumentationPublishChannel,\n  isConfirmChannelTracing,\n  markConfirmChannelTracing,\n  MESSAGE_STORED_SPAN,\n  normalizeExchange,\n  unmarkConfirmChannelTracing,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst supportedVersions = ['>=0.5.5 <1'];\n\nexport class AmqplibInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n\n  constructor(config: AmqplibInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: AmqplibInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  protected init() {\n    const channelModelModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/channel_model.js',\n      supportedVersions,\n      this.patchChannelModel.bind(this),\n      this.unpatchChannelModel.bind(this)\n    );\n\n    const callbackModelModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/callback_model.js',\n      supportedVersions,\n      this.patchChannelModel.bind(this),\n      this.unpatchChannelModel.bind(this)\n    );\n\n    const connectModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/connect.js',\n      supportedVersions,\n      this.patchConnect.bind(this),\n      this.unpatchConnect.bind(this)\n    );\n\n    const module = new InstrumentationNodeModuleDefinition(\n      'amqplib',\n      supportedVersions,\n      undefined,\n      undefined,\n      [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]\n    );\n    return module;\n  }\n\n  private patchConnect(moduleExports: any) {\n    moduleExports = this.unpatchConnect(moduleExports);\n    if (!isWrapped(moduleExports.connect)) {\n      this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this));\n    }\n    return moduleExports;\n  }\n\n  private unpatchConnect(moduleExports: any) {\n    if (isWrapped(moduleExports.connect)) {\n      this._unwrap(moduleExports, 'connect');\n    }\n    return moduleExports;\n  }\n\n  private patchChannelModel(\n    moduleExports: any,\n    moduleVersion: string | undefined\n  ) {\n    if (!isWrapped(moduleExports.Channel.prototype.publish)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'publish',\n        this.getPublishPatch.bind(this, moduleVersion)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.consume)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'consume',\n        this.getConsumePatch.bind(this, moduleVersion)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.ack)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'ack',\n        this.getAckPatch.bind(this, false, EndOperation.Ack)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.nack)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'nack',\n        this.getAckPatch.bind(this, true, EndOperation.Nack)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.reject)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'reject',\n        this.getAckPatch.bind(this, true, EndOperation.Reject)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.ackAll)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'ackAll',\n        this.getAckAllPatch.bind(this, false, EndOperation.AckAll)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.nackAll)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'nackAll',\n        this.getAckAllPatch.bind(this, true, EndOperation.NackAll)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.emit)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'emit',\n        this.getChannelEmitPatch.bind(this)\n      );\n    }\n    if (!isWrapped(moduleExports.ConfirmChannel.prototype.publish)) {\n      this._wrap(\n        moduleExports.ConfirmChannel.prototype,\n        'publish',\n        this.getConfirmedPublishPatch.bind(this, moduleVersion)\n      );\n    }\n    return moduleExports;\n  }\n\n  private unpatchChannelModel(moduleExports: any) {\n    if (isWrapped(moduleExports.Channel.prototype.publish)) {\n      this._unwrap(moduleExports.Channel.prototype, 'publish');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.consume)) {\n      this._unwrap(moduleExports.Channel.prototype, 'consume');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.ack)) {\n      this._unwrap(moduleExports.Channel.prototype, 'ack');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.nack)) {\n      this._unwrap(moduleExports.Channel.prototype, 'nack');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.reject)) {\n      this._unwrap(moduleExports.Channel.prototype, 'reject');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.ackAll)) {\n      this._unwrap(moduleExports.Channel.prototype, 'ackAll');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.nackAll)) {\n      this._unwrap(moduleExports.Channel.prototype, 'nackAll');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.emit)) {\n      this._unwrap(moduleExports.Channel.prototype, 'emit');\n    }\n    if (isWrapped(moduleExports.ConfirmChannel.prototype.publish)) {\n      this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish');\n    }\n    return moduleExports;\n  }\n\n  private getConnectPatch(\n    original: (\n      url: string | Options.Connect,\n      socketOptions: any,\n      openCallback: (err: any, connection: Connection) => void\n    ) => Connection\n  ) {\n    const self = this;\n    return function patchedConnect(\n      this: unknown,\n      url: string | Options.Connect,\n      socketOptions: any,\n      openCallback: Function\n    ) {\n      return original.call(\n        this,\n        url,\n        socketOptions,\n        function (this: unknown, err, conn: InstrumentationConnection) {\n          if (err == null) {\n            const urlAttributes = getConnectionAttributesFromUrl(\n              url,\n              self._netSemconvStability\n            );\n            const serverAttributes = getConnectionAttributesFromServer(conn);\n            conn[CONNECTION_ATTRIBUTES] = {\n              ...urlAttributes,\n              ...serverAttributes,\n            };\n          }\n          openCallback.apply(this, arguments);\n        }\n      );\n    };\n  }\n\n  private getChannelEmitPatch(original: Function) {\n    const self = this;\n    return function emit(\n      this: InstrumentationConsumeChannel,\n      eventName: string\n    ) {\n      if (eventName === 'close') {\n        self.endAllSpansOnChannel(\n          this,\n          true,\n          EndOperation.ChannelClosed,\n          undefined\n        );\n        const activeTimer = this[CHANNEL_CONSUME_TIMEOUT_TIMER];\n        if (activeTimer) {\n          clearInterval(activeTimer);\n        }\n        this[CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined;\n      } else if (eventName === 'error') {\n        self.endAllSpansOnChannel(\n          this,\n          true,\n          EndOperation.ChannelError,\n          undefined\n        );\n      }\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getAckAllPatch(\n    isRejected: boolean,\n    endOperation: EndOperation,\n    original: Function\n  ) {\n    const self = this;\n    return function ackAll(\n      this: InstrumentationConsumeChannel,\n      requeueOrEmpty?: boolean\n    ): void {\n      self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty);\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getAckPatch(\n    isRejected: boolean,\n    endOperation: EndOperation,\n    original: Function\n  ) {\n    const self = this;\n    return function ack(\n      this: InstrumentationConsumeChannel,\n      message: Message,\n      allUpToOrRequeue?: boolean,\n      requeue?: boolean\n    ): void {\n      const channel = this;\n      // we use this patch in reject function as well, but it has different signature\n      const requeueResolved =\n        endOperation === EndOperation.Reject ? allUpToOrRequeue : requeue;\n\n      const spansNotEnded: { msg: Message }[] =\n        channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n      const msgIndex = spansNotEnded.findIndex(\n        msgDetails => msgDetails.msg === message\n      );\n      if (msgIndex < 0) {\n        // should not happen in happy flow\n        // but possible if user is calling the api function ack twice with same message\n        self.endConsumerSpan(\n          message,\n          isRejected,\n          endOperation,\n          requeueResolved\n        );\n      } else if (endOperation !== EndOperation.Reject && allUpToOrRequeue) {\n        for (let i = 0; i <= msgIndex; i++) {\n          self.endConsumerSpan(\n            spansNotEnded[i].msg,\n            isRejected,\n            endOperation,\n            requeueResolved\n          );\n        }\n        spansNotEnded.splice(0, msgIndex + 1);\n      } else {\n        self.endConsumerSpan(\n          message,\n          isRejected,\n          endOperation,\n          requeueResolved\n        );\n        spansNotEnded.splice(msgIndex, 1);\n      }\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getConsumePatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function consume(\n      this: InstrumentationConsumeChannel,\n      queue: string,\n      onMessage: (msg: ConsumeMessage | null) => void,\n      options?: Options.Consume\n    ): Promise {\n      const channel = this;\n      if (\n        !Object.prototype.hasOwnProperty.call(channel, CHANNEL_SPANS_NOT_ENDED)\n      ) {\n        const { consumeTimeoutMs } = self.getConfig();\n        if (consumeTimeoutMs) {\n          const timer = setInterval(() => {\n            self.checkConsumeTimeoutOnChannel(channel);\n          }, consumeTimeoutMs);\n          timer.unref();\n          channel[CHANNEL_CONSUME_TIMEOUT_TIMER] = timer;\n        }\n        channel[CHANNEL_SPANS_NOT_ENDED] = [];\n      }\n\n      const patchedOnMessage = function (\n        this: unknown,\n        msg: InstrumentationConsumeMessage | null\n      ) {\n        // msg is expected to be null for signaling consumer cancel notification\n        // https://www.rabbitmq.com/consumer-cancel.html\n        // in this case, we do not start a span, as this is not a real message.\n        if (!msg) {\n          return onMessage.call(this, msg);\n        }\n\n        const headers = msg.properties.headers ?? {};\n        let parentContext: Context | undefined = propagation.extract(\n          ROOT_CONTEXT,\n          headers\n        );\n        const exchange = msg.fields?.exchange;\n        let links: Link[] | undefined;\n        if (self._config.useLinksForConsume) {\n          const parentSpanContext = parentContext\n            ? trace.getSpan(parentContext)?.spanContext()\n            : undefined;\n          parentContext = undefined;\n          if (parentSpanContext) {\n            links = [\n              {\n                context: parentSpanContext,\n              },\n            ];\n          }\n        }\n        const span = self.tracer.startSpan(\n          `${queue} process`,\n          {\n            kind: SpanKind.CONSUMER,\n            attributes: {\n              ...channel?.connection?.[CONNECTION_ATTRIBUTES],\n              [ATTR_MESSAGING_DESTINATION]: exchange,\n              [ATTR_MESSAGING_DESTINATION_KIND]:\n                MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n              [ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey,\n              [ATTR_MESSAGING_OPERATION]: MESSAGING_OPERATION_VALUE_PROCESS,\n              [OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId,\n              [ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId,\n            },\n            links,\n          },\n          parentContext\n        );\n\n        const { consumeHook } = self.getConfig();\n        if (consumeHook) {\n          safeExecuteInTheMiddle(\n            () => consumeHook(span, { moduleVersion, msg }),\n            e => {\n              if (e) {\n                diag.error('amqplib instrumentation: consumerHook error', e);\n              }\n            },\n            true\n          );\n        }\n\n        if (!options?.noAck) {\n          // store the message on the channel so we can close the span on ackAll etc\n          channel[CHANNEL_SPANS_NOT_ENDED]!.push({\n            msg,\n            timeOfConsume: hrTime(),\n          });\n\n          // store the span on the message, so we can end it when user call 'ack' on it\n          msg[MESSAGE_STORED_SPAN] = span;\n        }\n        const setContext: Context = parentContext\n          ? parentContext\n          : ROOT_CONTEXT;\n        context.with(trace.setSpan(setContext, span), () => {\n          onMessage.call(this, msg);\n        });\n\n        if (options?.noAck) {\n          self.callConsumeEndHook(span, msg, false, EndOperation.AutoAck);\n          span.end();\n        }\n      };\n      arguments[1] = patchedOnMessage;\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getConfirmedPublishPatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function confirmedPublish(\n      this: InstrumentationConsumeChannel,\n      exchange: string,\n      routingKey: string,\n      content: Buffer,\n      options?: Options.Publish,\n      callback?: (err: any, ok: Replies.Empty) => void\n    ): boolean {\n      const channel = this;\n      const { span, modifiedOptions } = self.createPublishSpan(\n        self,\n        exchange,\n        routingKey,\n        channel,\n        options\n      );\n\n      const { publishHook } = self.getConfig();\n      if (publishHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            publishHook(span, {\n              moduleVersion,\n              exchange,\n              routingKey,\n              content,\n              options: modifiedOptions,\n              isConfirmChannel: true,\n            }),\n          e => {\n            if (e) {\n              diag.error('amqplib instrumentation: publishHook error', e);\n            }\n          },\n          true\n        );\n      }\n\n      const patchedOnConfirm = function (\n        this: unknown,\n        err: any,\n        ok: Replies.Empty\n      ) {\n        try {\n          callback?.call(this, err, ok);\n        } finally {\n          const { publishConfirmHook } = self.getConfig();\n          if (publishConfirmHook) {\n            safeExecuteInTheMiddle(\n              () =>\n                publishConfirmHook(span, {\n                  moduleVersion,\n                  exchange,\n                  routingKey,\n                  content,\n                  options,\n                  isConfirmChannel: true,\n                  confirmError: err,\n                }),\n              e => {\n                if (e) {\n                  diag.error(\n                    'amqplib instrumentation: publishConfirmHook error',\n                    e\n                  );\n                }\n              },\n              true\n            );\n          }\n\n          if (err) {\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: \"message confirmation has been nack'ed\",\n            });\n          }\n          span.end();\n        }\n      };\n\n      // calling confirm channel publish function is storing the message in queue and registering the callback for broker confirm.\n      // span ends in the patched callback.\n      const markedContext = markConfirmChannelTracing(context.active());\n      const argumentsCopy = [...arguments];\n      argumentsCopy[3] = modifiedOptions;\n      argumentsCopy[4] = context.bind(\n        unmarkConfirmChannelTracing(trace.setSpan(markedContext, span)),\n        patchedOnConfirm\n      );\n      return context.with(markedContext, original.bind(this, ...argumentsCopy));\n    };\n  }\n\n  private getPublishPatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function publish(\n      this: InstrumentationPublishChannel,\n      exchange: string,\n      routingKey: string,\n      content: Buffer,\n      options?: Options.Publish\n    ): boolean {\n      if (isConfirmChannelTracing(context.active())) {\n        // work already done\n        return original.apply(this, arguments);\n      } else {\n        const channel = this;\n        const { span, modifiedOptions } = self.createPublishSpan(\n          self,\n          exchange,\n          routingKey,\n          channel,\n          options\n        );\n\n        const { publishHook } = self.getConfig();\n        if (publishHook) {\n          safeExecuteInTheMiddle(\n            () =>\n              publishHook(span, {\n                moduleVersion,\n                exchange,\n                routingKey,\n                content,\n                options: modifiedOptions,\n                isConfirmChannel: false,\n              }),\n            e => {\n              if (e) {\n                diag.error('amqplib instrumentation: publishHook error', e);\n              }\n            },\n            true\n          );\n        }\n\n        // calling normal channel publish function is only storing the message in queue.\n        // it does not send it and waits for an ack, so the span duration is expected to be very short.\n        const argumentsCopy = [...arguments];\n        argumentsCopy[3] = modifiedOptions;\n        const originalRes = original.apply(this, argumentsCopy as any);\n        span.end();\n        return originalRes;\n      }\n    };\n  }\n\n  private createPublishSpan(\n    self: this,\n    exchange: string,\n    routingKey: string,\n    channel: InstrumentationPublishChannel,\n    options?: Options.Publish\n  ) {\n    const normalizedExchange = normalizeExchange(exchange);\n\n    const span = self.tracer.startSpan(`publish ${normalizedExchange}`, {\n      kind: SpanKind.PRODUCER,\n      attributes: {\n        ...channel.connection[CONNECTION_ATTRIBUTES],\n        [ATTR_MESSAGING_DESTINATION]: exchange,\n        [ATTR_MESSAGING_DESTINATION_KIND]:\n          MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n\n        [ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey,\n        [OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId,\n        [ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId,\n      },\n    });\n    const modifiedOptions = options ?? {};\n    modifiedOptions.headers = modifiedOptions.headers ?? {};\n\n    propagation.inject(\n      trace.setSpan(context.active(), span),\n      modifiedOptions.headers\n    );\n\n    return { span, modifiedOptions };\n  }\n\n  private endConsumerSpan(\n    message: InstrumentationMessage,\n    isRejected: boolean | null,\n    operation: EndOperation,\n    requeue: boolean | undefined\n  ) {\n    const storedSpan: Span | undefined = message[MESSAGE_STORED_SPAN];\n    if (!storedSpan) return;\n    if (isRejected !== false) {\n      storedSpan.setStatus({\n        code: SpanStatusCode.ERROR,\n        message:\n          operation !== EndOperation.ChannelClosed &&\n          operation !== EndOperation.ChannelError\n            ? `${operation} called on message${\n                requeue === true\n                  ? ' with requeue'\n                  : requeue === false\n                    ? ' without requeue'\n                    : ''\n              }`\n            : operation,\n      });\n    }\n    this.callConsumeEndHook(storedSpan, message, isRejected, operation);\n    storedSpan.end();\n    message[MESSAGE_STORED_SPAN] = undefined;\n  }\n\n  private endAllSpansOnChannel(\n    channel: InstrumentationConsumeChannel,\n    isRejected: boolean,\n    operation: EndOperation,\n    requeue: boolean | undefined\n  ) {\n    const spansNotEnded: { msg: Message }[] =\n      channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n    spansNotEnded.forEach(msgDetails => {\n      this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue);\n    });\n    channel[CHANNEL_SPANS_NOT_ENDED] = [];\n  }\n\n  private callConsumeEndHook(\n    span: Span,\n    msg: InstrumentationMessage,\n    rejected: boolean | null,\n    endOperation: EndOperation\n  ) {\n    const { consumeEndHook } = this.getConfig();\n    if (!consumeEndHook) return;\n\n    safeExecuteInTheMiddle(\n      () => consumeEndHook(span, { msg, rejected, endOperation }),\n      e => {\n        if (e) {\n          diag.error('amqplib instrumentation: consumerEndHook error', e);\n        }\n      },\n      true\n    );\n  }\n\n  private checkConsumeTimeoutOnChannel(channel: InstrumentationConsumeChannel) {\n    const currentTime = hrTime();\n    const spansNotEnded = channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n    let i: number;\n    const { consumeTimeoutMs } = this.getConfig();\n    for (i = 0; i < spansNotEnded.length; i++) {\n      const currMessage = spansNotEnded[i];\n      const timeFromConsume = hrTimeDuration(\n        currMessage.timeOfConsume,\n        currentTime\n      );\n      if (hrTimeToMilliseconds(timeFromConsume) < consumeTimeoutMs!) {\n        break;\n      }\n      this.endConsumerSpan(\n        currMessage.msg,\n        null,\n        EndOperation.InstrumentationTimeout,\n        true\n      );\n    }\n    spansNotEnded.splice(0, i);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport { AmqplibInstrumentation } from './amqplib';\nexport { DEFAULT_CONFIG, EndOperation } from './types';\nexport type {\n  AmqplibConsumeCustomAttributeFunction,\n  AmqplibConsumeEndCustomAttributeFunction,\n  AmqplibInstrumentationConfig,\n  AmqplibPublishConfirmCustomAttributeFunction,\n  AmqplibPublishCustomAttributeFunction,\n  AmqplibPublishOptions,\n  CommonMessageFields,\n  ConsumeEndInfo,\n  ConsumeInfo,\n  ConsumeMessage,\n  ConsumeMessageFields,\n  Message,\n  MessageFields,\n  MessageProperties,\n  PublishConfirmedInfo,\n  PublishInfo,\n} from './types';\n","import type { Span } from '@opentelemetry/api';\nimport { AmqplibInstrumentation, type AmqplibInstrumentationConfig } from '@opentelemetry/instrumentation-amqplib';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Amqplib';\n\nconst config: AmqplibInstrumentationConfig = {\n  consumeEndHook: (span: Span) => {\n    addOriginToSpan(span, 'auto.amqplib.otel.consumer');\n  },\n  publishHook: (span: Span) => {\n    addOriginToSpan(span, 'auto.amqplib.otel.publisher');\n  },\n};\n\nexport const instrumentAmqplib = generateInstrumentOnce(INTEGRATION_NAME, () => new AmqplibInstrumentation(config));\n\nconst _amqplibIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentAmqplib();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [amqplib](https://www.npmjs.com/package/amqplib) library.\n *\n * For more information, see the [`amqplibIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/amqplib/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.amqplibIntegration()],\n * });\n * ```\n */\nexport const amqplibIntegration = defineIntegration(_amqplibIntegration);\n","export const INTEGRATION_NAME = 'VercelAI';\n","import type { InstrumentationConfig, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n  _INTERNAL_cleanupToolCallSpanContext,\n  _INTERNAL_getSpanContextForToolCallId,\n  addNonEnumerableProperty,\n  captureException,\n  getActiveSpan,\n  getClient,\n  handleCallbackErrors,\n  SDK_VERSION,\n  withScope,\n} from '@sentry/core';\nimport { INTEGRATION_NAME } from './constants';\nimport type { TelemetrySettings, VercelAiIntegration } from './types';\n\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <7'];\n\n// List of patched methods\n// From: https://sdk.vercel.ai/docs/ai-sdk-core/telemetry#collected-data\nconst INSTRUMENTED_METHODS = [\n  'generateText',\n  'streamText',\n  'generateObject',\n  'streamObject',\n  'embed',\n  'embedMany',\n  'rerank',\n] as const;\n\ninterface MethodFirstArg extends Record {\n  experimental_telemetry?: TelemetrySettings;\n}\n\ntype MethodArgs = [MethodFirstArg, ...unknown[]];\n\ntype PatchedModuleExports = Record<(typeof INSTRUMENTED_METHODS)[number], (...args: MethodArgs) => unknown> &\n  Record;\n\ninterface RecordingOptions {\n  recordInputs?: boolean;\n  recordOutputs?: boolean;\n}\n\ninterface ToolError {\n  type: 'tool-error' | 'tool-result' | 'tool-call';\n  toolCallId: string;\n  toolName: string;\n  input?: {\n    [key: string]: unknown;\n  };\n  error: Error;\n  dynamic?: boolean;\n}\n\nfunction isToolError(obj: unknown): obj is ToolError {\n  if (typeof obj !== 'object' || obj === null) {\n    return false;\n  }\n\n  const candidate = obj as Record;\n  return (\n    'type' in candidate &&\n    'error' in candidate &&\n    'toolName' in candidate &&\n    'toolCallId' in candidate &&\n    candidate.type === 'tool-error' &&\n    candidate.error instanceof Error\n  );\n}\n\n/**\n * Process tool call results: capture tool errors and clean up span context mappings.\n *\n * Error checking runs first (needs span context for linking), then cleanup removes all entries.\n * Tool errors are not rejected in Vercel AI V5 — they appear as metadata in the result content.\n */\nexport function processToolCallResults(result: unknown): void {\n  if (typeof result !== 'object' || result === null || !('content' in result)) {\n    return;\n  }\n\n  const resultObj = result as { content: Array };\n  if (!Array.isArray(resultObj.content)) {\n    return;\n  }\n\n  captureToolErrors(resultObj.content);\n  cleanupToolCallSpanContexts(resultObj.content);\n}\n\nfunction captureToolErrors(content: Array): void {\n  for (const item of content) {\n    if (!isToolError(item)) {\n      continue;\n    }\n\n    // Try to get the span context associated with this tool call ID\n    const spanContext = _INTERNAL_getSpanContextForToolCallId(item.toolCallId);\n\n    if (spanContext) {\n      // We have the span context, so link the error using span and trace IDs\n      withScope(scope => {\n        scope.setContext('trace', {\n          trace_id: spanContext.traceId,\n          span_id: spanContext.spanId,\n        });\n\n        scope.setTag('vercel.ai.tool.name', item.toolName);\n        scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n        scope.setLevel('error');\n\n        captureException(item.error, {\n          mechanism: {\n            type: 'auto.vercelai.otel',\n            handled: false,\n          },\n        });\n      });\n    } else {\n      // Fallback: capture without span linking\n      withScope(scope => {\n        scope.setTag('vercel.ai.tool.name', item.toolName);\n        scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n        scope.setLevel('error');\n\n        captureException(item.error, {\n          mechanism: {\n            type: 'auto.vercelai.otel',\n            handled: false,\n          },\n        });\n      });\n    }\n  }\n}\n\n/**\n * Remove span context entries for all completed tool calls in the content array.\n */\nexport function cleanupToolCallSpanContexts(content: Array): void {\n  for (const item of content) {\n    if (\n      typeof item === 'object' &&\n      item !== null &&\n      'toolCallId' in item &&\n      typeof (item as Record).toolCallId === 'string'\n    ) {\n      _INTERNAL_cleanupToolCallSpanContext((item as Record).toolCallId as string);\n    }\n  }\n}\n\n/**\n * Determines whether to record inputs and outputs for Vercel AI telemetry based on the configuration hierarchy.\n *\n * The order of precedence is:\n * 1. The vercel ai integration options\n * 2. The experimental_telemetry options in the vercel ai method calls\n * 3. When telemetry is explicitly enabled (isEnabled: true), default to recording\n * 4. Otherwise, use the sendDefaultPii option from client options\n */\nexport function determineRecordingSettings(\n  integrationRecordingOptions: RecordingOptions | undefined,\n  methodTelemetryOptions: RecordingOptions,\n  telemetryExplicitlyEnabled: boolean | undefined,\n  defaultRecordingEnabled: boolean,\n): { recordInputs: boolean; recordOutputs: boolean } {\n  const recordInputs =\n    integrationRecordingOptions?.recordInputs !== undefined\n      ? integrationRecordingOptions.recordInputs\n      : methodTelemetryOptions.recordInputs !== undefined\n        ? methodTelemetryOptions.recordInputs\n        : telemetryExplicitlyEnabled === true\n          ? true // When telemetry is explicitly enabled, default to recording inputs\n          : defaultRecordingEnabled;\n\n  const recordOutputs =\n    integrationRecordingOptions?.recordOutputs !== undefined\n      ? integrationRecordingOptions.recordOutputs\n      : methodTelemetryOptions.recordOutputs !== undefined\n        ? methodTelemetryOptions.recordOutputs\n        : telemetryExplicitlyEnabled === true\n          ? true // When telemetry is explicitly enabled, default to recording inputs\n          : defaultRecordingEnabled;\n\n  return { recordInputs, recordOutputs };\n}\n\n/**\n * This detects is added by the Sentry Vercel AI Integration to detect if the integration should\n * be enabled.\n *\n * It also patches the `ai` module to enable Vercel AI telemetry automatically for all methods.\n */\nexport class SentryVercelAiInstrumentation extends InstrumentationBase {\n  private _isPatched = false;\n  private _callbacks: (() => void)[] = [];\n\n  public constructor(config: InstrumentationConfig = {}) {\n    super('@sentry/instrumentation-vercel-ai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition('ai', SUPPORTED_VERSIONS, this._patch.bind(this));\n    return module;\n  }\n\n  /**\n   * Call the provided callback when the module is patched.\n   * If it has already been patched, the callback will be called immediately.\n   */\n  public callWhenPatched(callback: () => void): void {\n    if (this._isPatched) {\n      callback();\n    } else {\n      this._callbacks.push(callback);\n    }\n  }\n\n  /**\n   * Patches module exports to enable Vercel AI telemetry.\n   */\n  private _patch(moduleExports: PatchedModuleExports): unknown {\n    this._isPatched = true;\n\n    this._callbacks.forEach(callback => callback());\n    this._callbacks = [];\n\n    const generatePatch =  unknown>(originalMethod: T): T => {\n      return new Proxy(originalMethod, {\n        apply: (target, thisArg, args: MethodArgs) => {\n          const existingExperimentalTelemetry = args[0].experimental_telemetry || {};\n          const isEnabled = existingExperimentalTelemetry.isEnabled;\n\n          const client = getClient();\n          const integration = client?.getIntegrationByName(INTEGRATION_NAME);\n          const integrationOptions = integration?.options;\n          const shouldRecordInputsAndOutputs = integration ? Boolean(client?.getOptions().sendDefaultPii) : false;\n\n          const { recordInputs, recordOutputs } = determineRecordingSettings(\n            integrationOptions,\n            existingExperimentalTelemetry,\n            isEnabled,\n            shouldRecordInputsAndOutputs,\n          );\n\n          args[0].experimental_telemetry = {\n            ...existingExperimentalTelemetry,\n            isEnabled: isEnabled !== undefined ? isEnabled : true,\n            recordInputs,\n            recordOutputs,\n          };\n\n          return handleCallbackErrors(\n            () => Reflect.apply(target, thisArg, args),\n            error => {\n              // This error bubbles up to unhandledrejection handler (if not handled before),\n              // where we do not know the active span anymore\n              // So to circumvent this, we set the active span on the error object\n              // which is picked up by the unhandledrejection handler\n              if (error && typeof error === 'object') {\n                addNonEnumerableProperty(error, '_sentry_active_span', getActiveSpan());\n              }\n            },\n            () => {},\n            result => {\n              processToolCallResults(result);\n            },\n          );\n        },\n      });\n    };\n\n    // Is this an ESM module?\n    // https://tc39.es/ecma262/#sec-module-namespace-objects\n    if (Object.prototype.toString.call(moduleExports) === '[object Module]') {\n      // In ESM we take the usual route and just replace the exports we want to instrument\n      for (const method of INSTRUMENTED_METHODS) {\n        // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n        if (moduleExports[method] != null) {\n          moduleExports[method] = generatePatch(moduleExports[method]);\n        }\n      }\n\n      return moduleExports;\n    } else {\n      // In CJS we can't replace the exports in the original module because they\n      // don't have setters, so we create a new object with the same properties\n      const patchedModuleExports = INSTRUMENTED_METHODS.reduce((acc, curr) => {\n        // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n        if (moduleExports[curr] != null) {\n          acc[curr] = generatePatch(moduleExports[curr]);\n        }\n        return acc;\n      }, {} as PatchedModuleExports);\n\n      return { ...moduleExports, ...patchedModuleExports };\n    }\n  }\n}\n","import type { Client, IntegrationFn } from '@sentry/core';\nimport { addVercelAiProcessors, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, type modulesIntegration } from '@sentry/node-core';\nimport { INTEGRATION_NAME } from './constants';\nimport { SentryVercelAiInstrumentation } from './instrumentation';\nimport type { VercelAiOptions } from './types';\n\nexport const instrumentVercelAi = generateInstrumentOnce(INTEGRATION_NAME, () => new SentryVercelAiInstrumentation({}));\n\n/**\n * Determines if the integration should be forced based on environment and package availability.\n * Returns true if the 'ai' package is available.\n */\nfunction shouldForceIntegration(client: Client): boolean {\n  const modules = client.getIntegrationByName>('Modules');\n  return !!modules?.getModules?.()?.ai;\n}\n\nconst _vercelAIIntegration = ((options: VercelAiOptions = {}) => {\n  let instrumentation: undefined | SentryVercelAiInstrumentation;\n\n  return {\n    name: INTEGRATION_NAME,\n    options,\n    setupOnce() {\n      instrumentation = instrumentVercelAi();\n    },\n    afterAllSetup(client) {\n      // Auto-detect if we should force the integration when running with 'ai' package available\n      // Note that this can only be detected if the 'Modules' integration is available, and running in CJS mode\n      const shouldForce = options.force ?? shouldForceIntegration(client);\n\n      if (shouldForce) {\n        addVercelAiProcessors(client);\n      } else {\n        instrumentation?.callWhenPatched(() => addVercelAiProcessors(client));\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [ai](https://www.npmjs.com/package/ai) library.\n * This integration is not enabled by default, you need to manually add it.\n *\n * For more information, see the [`ai` documentation](https://sdk.vercel.ai/docs/ai-sdk-core/telemetry).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.vercelAIIntegration()],\n * });\n * ```\n *\n * This integration adds tracing support to all `ai` function calls.\n * You need to opt-in to collecting spans for a specific call,\n * you can do so by setting `experimental_telemetry.isEnabled` to `true` in the first argument of the function call.\n *\n * ```javascript\n * const result = await generateText({\n *   model: openai('gpt-4-turbo'),\n *   experimental_telemetry: { isEnabled: true },\n * });\n * ```\n *\n * If you want to collect inputs and outputs for a specific call, you must specifically opt-in to each\n * function call by setting `experimental_telemetry.recordInputs` and `experimental_telemetry.recordOutputs`\n * to `true`.\n *\n * ```javascript\n * const result = await generateText({\n *  model: openai('gpt-4-turbo'),\n *  experimental_telemetry: { isEnabled: true, recordInputs: true, recordOutputs: true },\n * });\n */\nexport const vercelAIIntegration = defineIntegration(_vercelAIIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { Integration, OpenAiClient, OpenAiOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  instrumentOpenAiClient,\n  OPENAI_INTEGRATION_NAME,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=4.0.0 <7'];\n\nexport interface OpenAiIntegration extends Integration {\n  options: OpenAiOptions;\n}\n\ntype OpenAiInstrumentationOptions = InstrumentationConfig & OpenAiOptions;\n\n/**\n * Represents the patched shape of the OpenAI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  OpenAI: abstract new (...args: unknown[]) => OpenAiClient;\n  AzureOpenAI?: abstract new (...args: unknown[]) => OpenAiClient;\n}\n\n/**\n * Sentry OpenAI instrumentation using OpenTelemetry.\n */\nexport class SentryOpenAiInstrumentation extends InstrumentationBase {\n  public constructor(config: OpenAiInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-openai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition('openai', supportedVersions, this._patch.bind(this));\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the OpenAI and AzureOpenAI client constructors.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    let result = exports;\n    result = this._patchClient(result, 'OpenAI');\n    result = this._patchClient(result, 'AzureOpenAI');\n    return result;\n  }\n\n  /**\n   * Patch logic applying instrumentation to the specified client constructor.\n   */\n  private _patchClient(exports: PatchedModuleExports, exportKey: 'OpenAI' | 'AzureOpenAI'): PatchedModuleExports {\n    const Original = exports[exportKey];\n    if (!Original) {\n      return exports;\n    }\n\n    const config = this.getConfig();\n\n    const WrappedOpenAI = function (this: unknown, ...args: unknown[]) {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(OPENAI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as OpenAiClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentOpenAiClient(instance as OpenAiClient, config);\n    } as unknown as abstract new (...args: unknown[]) => OpenAiClient;\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedOpenAI, Original);\n    Object.setPrototypeOf(WrappedOpenAI.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedOpenAI, key, descriptor);\n        }\n      }\n    }\n\n    // Constructor replacement - handle read-only properties\n    // The OpenAI property might have only a getter, so use defineProperty\n    try {\n      exports[exportKey] = WrappedOpenAI;\n    } catch {\n      // If direct assignment fails, override the property descriptor\n      Object.defineProperty(exports, exportKey, {\n        value: WrappedOpenAI,\n        writable: true,\n        configurable: true,\n        enumerable: true,\n      });\n    }\n\n    // Wrap the default export if it points to the original constructor\n    // Constructor replacement - handle read-only properties\n    // The OpenAI property might have only a getter, so use defineProperty\n    if (exports.default === Original) {\n      try {\n        exports.default = WrappedOpenAI;\n      } catch {\n        // If direct assignment fails, override the property descriptor\n        Object.defineProperty(exports, 'default', {\n          value: WrappedOpenAI,\n          writable: true,\n          configurable: true,\n          enumerable: true,\n        });\n      }\n    }\n    return exports;\n  }\n}\n","import type { IntegrationFn, OpenAiOptions } from '@sentry/core';\nimport { defineIntegration, OPENAI_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryOpenAiInstrumentation } from './instrumentation';\n\nexport const instrumentOpenAi = generateInstrumentOnce(\n  OPENAI_INTEGRATION_NAME,\n  options => new SentryOpenAiInstrumentation(options),\n);\n\nconst _openAiIntegration = ((options: OpenAiOptions = {}) => {\n  return {\n    name: OPENAI_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentOpenAi(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the OpenAI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments OpenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.openAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.openAIIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.openAIIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const openAIIntegration = defineIntegration(_openAiIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { AnthropicAiClient, AnthropicAiOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  instrumentAnthropicAiClient,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.19.2 <1.0.0'];\n\ntype AnthropicAiInstrumentationOptions = InstrumentationConfig & AnthropicAiOptions;\n\n/**\n * Represents the patched shape of the Anthropic AI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  Anthropic: abstract new (...args: unknown[]) => AnthropicAiClient;\n}\n\n/**\n * Sentry Anthropic AI instrumentation using OpenTelemetry.\n */\nexport class SentryAnthropicAiInstrumentation extends InstrumentationBase {\n  public constructor(config: AnthropicAiInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-anthropic-ai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@anthropic-ai/sdk',\n      supportedVersions,\n      this._patch.bind(this),\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the Anthropic AI client constructor.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    const Original = exports.Anthropic;\n\n    const config = this.getConfig();\n\n    const WrappedAnthropic = function (this: unknown, ...args: unknown[]) {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(ANTHROPIC_AI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as AnthropicAiClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentAnthropicAiClient(instance as AnthropicAiClient, config);\n    } as unknown as abstract new (...args: unknown[]) => AnthropicAiClient;\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedAnthropic, Original);\n    Object.setPrototypeOf(WrappedAnthropic.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedAnthropic, key, descriptor);\n        }\n      }\n    }\n\n    // Constructor replacement - handle read-only properties\n    // The Anthropic property might have only a getter, so use defineProperty\n    try {\n      exports.Anthropic = WrappedAnthropic;\n    } catch {\n      // If direct assignment fails, override the property descriptor\n      Object.defineProperty(exports, 'Anthropic', {\n        value: WrappedAnthropic,\n        writable: true,\n        configurable: true,\n        enumerable: true,\n      });\n    }\n\n    // Wrap the default export if it points to the original constructor\n    // Constructor replacement - handle read-only properties\n    // The Anthropic property might have only a getter, so use defineProperty\n    if (exports.default === Original) {\n      try {\n        exports.default = WrappedAnthropic;\n      } catch {\n        // If direct assignment fails, override the property descriptor\n        Object.defineProperty(exports, 'default', {\n          value: WrappedAnthropic,\n          writable: true,\n          configurable: true,\n          enumerable: true,\n        });\n      }\n    }\n    return exports;\n  }\n}\n","import type { AnthropicAiOptions, IntegrationFn } from '@sentry/core';\nimport { ANTHROPIC_AI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryAnthropicAiInstrumentation } from './instrumentation';\n\nexport const instrumentAnthropicAi = generateInstrumentOnce(\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  options => new SentryAnthropicAiInstrumentation(options),\n);\n\nconst _anthropicAIIntegration = ((options: AnthropicAiOptions = {}) => {\n  return {\n    name: ANTHROPIC_AI_INTEGRATION_NAME,\n    options,\n    setupOnce() {\n      instrumentAnthropicAi(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the Anthropic AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Anthropic AI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.anthropicAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.anthropicAIIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.anthropicAIIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const anthropicAIIntegration = defineIntegration(_anthropicAIIntegration);\n","import type { InstrumentationConfig, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { GoogleGenAIClient, GoogleGenAIOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  instrumentGoogleGenAIClient,\n  replaceExports,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.10.0 <2'];\n\n/**\n * Represents the patched shape of the Google GenAI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  GoogleGenAI?: unknown;\n}\n\ntype GoogleGenAIInstrumentationOptions = GoogleGenAIOptions & InstrumentationConfig;\n\n/**\n * Sentry Google GenAI instrumentation using OpenTelemetry.\n */\nexport class SentryGoogleGenAiInstrumentation extends InstrumentationBase {\n  public constructor(config: GoogleGenAIInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-google-genai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@google/genai',\n      supportedVersions,\n      exports => this._patch(exports),\n      exports => exports,\n      // In CJS, @google/genai re-exports from (dist/node/index.cjs) file.\n      // Patching only the root module sometimes misses the real implementation or\n      // gets overwritten when that file is loaded. We add a file-level patch so that\n      // _patch runs again on the concrete implementation\n      [\n        new InstrumentationNodeModuleFile(\n          '@google/genai/dist/node/index.cjs',\n          supportedVersions,\n          exports => this._patch(exports),\n          exports => exports,\n        ),\n      ],\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the Google GenAI client constructor.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    const Original = exports.GoogleGenAI;\n    const config = this.getConfig();\n\n    if (typeof Original !== 'function') {\n      return exports;\n    }\n\n    const WrappedGoogleGenAI = function (this: unknown, ...args: unknown[]): GoogleGenAIClient {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(GOOGLE_GENAI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as GoogleGenAIClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentGoogleGenAIClient(instance, config);\n    };\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedGoogleGenAI, Original);\n    Object.setPrototypeOf(WrappedGoogleGenAI.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedGoogleGenAI, key, descriptor);\n        }\n      }\n    }\n\n    // Replace google genai exports with the wrapped constructor\n    replaceExports(exports, 'GoogleGenAI', WrappedGoogleGenAI);\n\n    return exports;\n  }\n}\n","import type { GoogleGenAIOptions, IntegrationFn } from '@sentry/core';\nimport { defineIntegration, GOOGLE_GENAI_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryGoogleGenAiInstrumentation } from './instrumentation';\n\nexport const instrumentGoogleGenAI = generateInstrumentOnce(\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  options => new SentryGoogleGenAiInstrumentation(options),\n);\n\nconst _googleGenAIIntegration = ((options: GoogleGenAIOptions = {}) => {\n  return {\n    name: GOOGLE_GENAI_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentGoogleGenAI(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the Google Generative AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Google GenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.googleGenAiIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.googleGenAiIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.googleGenAiIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const googleGenAIIntegration = defineIntegration(_googleGenAIIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { LangChainOptions } from '@sentry/core';\nimport {\n  _INTERNAL_skipAiProviderWrapping,\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  createLangChainCallbackHandler,\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  OPENAI_INTEGRATION_NAME,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.1.0 <2.0.0'];\n\ntype LangChainInstrumentationOptions = InstrumentationConfig & LangChainOptions;\n\n/**\n * Represents the patched shape of LangChain provider package exports\n */\ninterface PatchedLangChainExports {\n  [key: string]: unknown;\n}\n\n/**\n * Augments a callback handler list with Sentry's handler if not already present\n */\nfunction augmentCallbackHandlers(handlers: unknown, sentryHandler: unknown): unknown {\n  // Handle null/undefined - return array with just our handler\n  if (!handlers) {\n    return [sentryHandler];\n  }\n\n  // If handlers is already an array\n  if (Array.isArray(handlers)) {\n    // Check if our handler is already in the list\n    if (handlers.includes(sentryHandler)) {\n      return handlers;\n    }\n    // Add our handler to the list\n    return [...handlers, sentryHandler];\n  }\n\n  // If it's a single handler object, convert to array\n  if (typeof handlers === 'object') {\n    return [handlers, sentryHandler];\n  }\n\n  // Unknown type - return original\n  return handlers;\n}\n\n/**\n * Wraps Runnable methods (invoke, stream, batch) to inject Sentry callbacks at request time\n * Uses a Proxy to intercept method calls and augment the options.callbacks\n */\nfunction wrapRunnableMethod(\n  originalMethod: (...args: unknown[]) => unknown,\n  sentryHandler: unknown,\n  _methodName: string,\n): (...args: unknown[]) => unknown {\n  return new Proxy(originalMethod, {\n    apply(target, thisArg, args: unknown[]): unknown {\n      // LangChain Runnable method signatures:\n      // invoke(input, options?) - options contains callbacks\n      // stream(input, options?) - options contains callbacks\n      // batch(inputs, options?) - options contains callbacks\n\n      // Options is typically the second argument\n      const optionsIndex = 1;\n      let options = args[optionsIndex] as Record | undefined;\n\n      // If options don't exist or aren't an object, create them\n      if (!options || typeof options !== 'object' || Array.isArray(options)) {\n        options = {};\n        args[optionsIndex] = options;\n      }\n\n      // Inject our callback handler into options.callbacks (request time callbacks)\n      const existingCallbacks = options.callbacks;\n      const augmentedCallbacks = augmentCallbackHandlers(existingCallbacks, sentryHandler);\n      options.callbacks = augmentedCallbacks;\n\n      // Call original method with augmented options\n      return Reflect.apply(target, thisArg, args);\n    },\n  }) as (...args: unknown[]) => unknown;\n}\n\n/**\n * Sentry LangChain instrumentation using OpenTelemetry.\n */\nexport class SentryLangChainInstrumentation extends InstrumentationBase {\n  public constructor(config: LangChainInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-langchain', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   * We patch the BaseChatModel class methods to inject callbacks\n   *\n   * We hook into provider packages (@langchain/anthropic, @langchain/openai, etc.)\n   * because @langchain/core is often bundled and not loaded as a separate module\n   */\n  public init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] {\n    const modules: InstrumentationModuleDefinition[] = [];\n\n    // Hook into common LangChain provider packages\n    const providerPackages = [\n      '@langchain/anthropic',\n      '@langchain/openai',\n      '@langchain/google-genai',\n      '@langchain/mistralai',\n      '@langchain/google-vertexai',\n      '@langchain/groq',\n    ];\n\n    for (const packageName of providerPackages) {\n      // In CJS, LangChain packages re-export from dist/index.cjs files.\n      // Patching only the root module sometimes misses the real implementation or\n      // gets overwritten when that file is loaded. We add a file-level patch so that\n      // _patch runs again on the concrete implementation\n      modules.push(\n        new InstrumentationNodeModuleDefinition(\n          packageName,\n          supportedVersions,\n          this._patch.bind(this),\n          exports => exports,\n          [\n            new InstrumentationNodeModuleFile(\n              `${packageName}/dist/index.cjs`,\n              supportedVersions,\n              this._patch.bind(this),\n              exports => exports,\n            ),\n          ],\n        ),\n      );\n    }\n\n    // Hook into main 'langchain' package to catch initChatModel (v1+)\n    modules.push(\n      new InstrumentationNodeModuleDefinition(\n        'langchain',\n        supportedVersions,\n        this._patch.bind(this),\n        exports => exports,\n        [\n          // To catch the CJS build that contains ConfigurableModel / initChatModel for v1\n          new InstrumentationNodeModuleFile(\n            'langchain/dist/chat_models/universal.cjs',\n            supportedVersions,\n            this._patch.bind(this),\n            exports => exports,\n          ),\n        ],\n      ),\n    );\n\n    return modules;\n  }\n\n  /**\n   * Core patch logic - patches chat model methods to inject Sentry callbacks\n   * This is called when a LangChain provider package is loaded\n   */\n  private _patch(exports: PatchedLangChainExports): PatchedLangChainExports | void {\n    // Skip AI provider wrapping now that LangChain is actually being used\n    // This prevents duplicate spans from Anthropic/OpenAI/GoogleGenAI standalone integrations\n    _INTERNAL_skipAiProviderWrapping([\n      OPENAI_INTEGRATION_NAME,\n      ANTHROPIC_AI_INTEGRATION_NAME,\n      GOOGLE_GENAI_INTEGRATION_NAME,\n    ]);\n\n    // Create a shared handler instance\n    const sentryHandler = createLangChainCallbackHandler(this.getConfig());\n\n    // Patch Runnable methods to inject callbacks at request time\n    // This directly manipulates options.callbacks that LangChain uses\n    this._patchRunnableMethods(exports, sentryHandler);\n\n    return exports;\n  }\n\n  /**\n   * Patches chat model methods (invoke, stream, batch) to inject Sentry callbacks\n   * Finds a chat model class from the provider package exports and patches its prototype methods\n   */\n  private _patchRunnableMethods(exports: PatchedLangChainExports, sentryHandler: unknown): void {\n    // Known chat model class names for each provider\n    const knownChatModelNames = [\n      'ChatAnthropic',\n      'ChatOpenAI',\n      'ChatGoogleGenerativeAI',\n      'ChatMistralAI',\n      'ChatVertexAI',\n      'ChatGroq',\n      'ConfigurableModel',\n    ];\n\n    const exportsToPatch = (exports.universal_exports ?? exports) as Record;\n\n    const chatModelClass = Object.values(exportsToPatch).find(exp => {\n      return typeof exp === 'function' && knownChatModelNames.includes(exp.name);\n    }) as { prototype: unknown; name: string } | undefined;\n\n    if (!chatModelClass) {\n      return;\n    }\n\n    // Patch directly on chatModelClass.prototype\n    const targetProto = chatModelClass.prototype as Record;\n\n    // Skip if already patched (both file-level and module-level hooks resolve to the same prototype)\n    if (targetProto.__sentry_patched__) {\n      return;\n    }\n    targetProto.__sentry_patched__ = true;\n\n    // Patch the methods (invoke, stream, batch)\n    // All chat model instances will inherit these patched methods\n    const methodsToPatch = ['invoke', 'stream', 'batch'] as const;\n\n    for (const methodName of methodsToPatch) {\n      const method = targetProto[methodName];\n      if (typeof method === 'function') {\n        targetProto[methodName] = wrapRunnableMethod(\n          method as (...args: unknown[]) => unknown,\n          sentryHandler,\n          methodName,\n        );\n      }\n    }\n  }\n}\n","import type { IntegrationFn, LangChainOptions } from '@sentry/core';\nimport { defineIntegration, LANGCHAIN_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangChainInstrumentation } from './instrumentation';\n\nexport const instrumentLangChain = generateInstrumentOnce(\n  LANGCHAIN_INTEGRATION_NAME,\n  options => new SentryLangChainInstrumentation(options),\n);\n\nconst _langChainIntegration = ((options: LangChainOptions = {}) => {\n  return {\n    name: LANGCHAIN_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLangChain(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for LangChain.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangChain runnable instances\n * to capture telemetry data by injecting Sentry callback handlers into all LangChain calls.\n *\n * **Important:** This integration automatically skips wrapping the OpenAI, Anthropic, and Google GenAI\n * providers to prevent duplicate spans when using LangChain with these AI providers.\n * LangChain handles the instrumentation for all underlying AI providers.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * Sentry.init({\n *   integrations: [Sentry.langChainIntegration()],\n *   sendDefaultPii: true, // Enable to record inputs/outputs\n * });\n *\n * // LangChain calls are automatically instrumented\n * const model = new ChatOpenAI();\n * await model.invoke(\"What is the capital of France?\");\n * ```\n *\n * ## Manual Callback Handler\n *\n * You can also manually add the Sentry callback handler alongside other callbacks:\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * const sentryHandler = Sentry.createLangChainCallbackHandler({\n *   recordInputs: true,\n *   recordOutputs: true\n * });\n *\n * const model = new ChatOpenAI();\n * await model.invoke(\n *   \"What is the capital of France?\",\n *   { callbacks: [sentryHandler, myOtherCallback] }\n * );\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages/prompts (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.langChainIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.langChainIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n * ## Supported Events\n *\n * The integration captures the following LangChain lifecycle events:\n * - LLM/Chat Model: start, end, error\n * - Chain: start, end, error\n * - Tool: start, end, error\n *\n */\nexport const langChainIntegration = defineIntegration(_langChainIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { LangGraphOptions } from '@sentry/core';\nimport { instrumentLangGraph, SDK_VERSION } from '@sentry/core';\n\nconst supportedVersions = ['>=0.0.0 <2.0.0'];\n\ntype LangGraphInstrumentationOptions = InstrumentationConfig & LangGraphOptions;\n\n/**\n * Represents the patched shape of the LangGraph module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  StateGraph?: abstract new (...args: unknown[]) => unknown;\n}\n\n/**\n * Sentry LangGraph instrumentation using OpenTelemetry.\n */\nexport class SentryLangGraphInstrumentation extends InstrumentationBase {\n  public constructor(config: LangGraphInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-langgraph', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@langchain/langgraph',\n      supportedVersions,\n      this._patch.bind(this),\n      exports => exports,\n      [\n        new InstrumentationNodeModuleFile(\n          /**\n           * In CJS, LangGraph packages re-export from dist/index.cjs files.\n           * Patching only the root module sometimes misses the real implementation or\n           * gets overwritten when that file is loaded. We add a file-level patch so that\n           * _patch runs again on the concrete implementation\n           */\n          '@langchain/langgraph/dist/index.cjs',\n          supportedVersions,\n          this._patch.bind(this),\n          exports => exports,\n        ),\n      ],\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the LangGraph module.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    // Patch StateGraph.compile to instrument both compile() and invoke()\n    if (exports.StateGraph && typeof exports.StateGraph === 'function') {\n      instrumentLangGraph(\n        exports.StateGraph.prototype as { compile: (...args: unknown[]) => unknown },\n        this.getConfig(),\n      );\n    }\n\n    return exports;\n  }\n}\n","import type { IntegrationFn, LangGraphOptions } from '@sentry/core';\nimport { defineIntegration, LANGGRAPH_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangGraphInstrumentation } from './instrumentation';\n\nexport const instrumentLangGraph = generateInstrumentOnce(\n  LANGGRAPH_INTEGRATION_NAME,\n  options => new SentryLangGraphInstrumentation(options),\n);\n\nconst _langGraphIntegration = ((options: LangGraphOptions = {}) => {\n  return {\n    name: LANGGRAPH_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLangGraph(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for LangGraph.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangGraph StateGraph and compiled graph instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.langGraphIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.langGraphIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.langGraphIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n * ## Captured Operations\n *\n * The integration captures the following LangGraph operations:\n * - **Agent Creation** (`StateGraph.compile()`) - Creates a `gen_ai.create_agent` span\n * - **Agent Invocation** (`CompiledGraph.invoke()`) - Creates a `gen_ai.invoke_agent` span\n *\n * ## Captured Data\n *\n * When `recordInputs` and `recordOutputs` are enabled, the integration captures:\n * - Input messages from the graph state\n * - Output messages and LLM responses\n * - Tool calls made during agent execution\n * - Agent and graph names\n * - Available tools configured in the graph\n *\n */\nexport const langGraphIntegration = defineIntegration(_langGraphIntegration);\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the LaunchDarkly integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const launchDarklyIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The launchDarklyIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'LaunchDarkly',\n  };\n});\n\n/**\n * This is a shim for the LaunchDarkly flag used handler.\n */\nexport function buildLaunchDarklyFlagUsedHandlerShim(): unknown {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'sentry-flag-auditor',\n    type: 'flag-used',\n    synchronous: true,\n    method: () => null,\n  };\n}\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the OpenFeature integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const openFeatureIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The openFeatureIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'OpenFeature',\n  };\n});\n\n/**\n * This is a shim for the OpenFeature integration hook.\n */\nexport class OpenFeatureIntegrationHookShim {\n  /**\n   *\n   */\n  public constructor() {\n    if (!isBrowser()) {\n      consoleSandbox(() => {\n        // eslint-disable-next-line no-console\n        console.warn('The OpenFeatureIntegrationHook can only be used in the browser.');\n      });\n    }\n  }\n\n  /**\n   *\n   */\n  public after(): void {\n    // No-op\n  }\n\n  /**\n   *\n   */\n  public error(): void {\n    // No-op\n  }\n}\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the Statsig integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const statsigIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The statsigIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'Statsig',\n  };\n});\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the Unleash integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const unleashIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The unleashIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'Unleash',\n  };\n});\n","import { growthbookIntegration as coreGrowthbookIntegration } from '@sentry/core';\n\n/**\n * Re-export the core GrowthBook integration for Node.js usage.\n * The core integration is runtime-agnostic and works in both browser and Node environments.\n */\nexport const growthbookIntegrationShim = coreGrowthbookIntegration;\n","import * as net from 'node:net';\nimport type { Span, Tracer } from '@opentelemetry/api';\nimport { context, diag, SpanKind, trace } from '@opentelemetry/api';\nimport {\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes } from '@sentry/core';\nimport type { FirebaseInstrumentation } from '../firebaseInstrumentation';\nimport type {\n  AddDocType,\n  CollectionReference,\n  DeleteDocType,\n  DocumentData,\n  DocumentReference,\n  FirebaseApp,\n  FirebaseInstrumentationConfig,\n  FirebaseOptions,\n  FirestoreSettings,\n  FirestoreSpanCreationHook,\n  GetDocsType,\n  PartialWithFieldValue,\n  QuerySnapshot,\n  SetDocType,\n  SetOptions,\n  WithFieldValue,\n} from '../types';\n\n// Inline minimal types used from `shimmer` to avoid importing shimmer's types directly.\n// We only need the shape for `wrap` and `unwrap` used in this file.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ShimmerWrap = (target: any, name: string, wrapper: (...args: any[]) => any) => void;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ShimmerUnwrap = (target: any, name: string) => void;\n\n/**\n *\n * @param tracer - Opentelemetry Tracer\n * @param firestoreSupportedVersions - supported version of firebase/firestore\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation wrap function\n */\nexport function patchFirestore(\n  tracer: Tracer,\n  firestoreSupportedVersions: string[],\n  wrap: ShimmerWrap,\n  unwrap: ShimmerUnwrap,\n  config: FirebaseInstrumentationConfig,\n): InstrumentationNodeModuleDefinition {\n  const defaultFirestoreSpanCreationHook: FirestoreSpanCreationHook = () => {};\n\n  let firestoreSpanCreationHook: FirestoreSpanCreationHook = defaultFirestoreSpanCreationHook;\n  const configFirestoreSpanCreationHook = config.firestoreSpanCreationHook;\n\n  if (typeof configFirestoreSpanCreationHook === 'function') {\n    firestoreSpanCreationHook = (span: Span) => {\n      safeExecuteInTheMiddle(\n        () => configFirestoreSpanCreationHook(span),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n\n  const moduleFirestoreCJS = new InstrumentationNodeModuleDefinition(\n    '@firebase/firestore',\n    firestoreSupportedVersions,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (moduleExports: any) => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n  );\n  const files: string[] = [\n    '@firebase/firestore/dist/lite/index.node.cjs.js',\n    '@firebase/firestore/dist/lite/index.node.mjs.js',\n    '@firebase/firestore/dist/lite/index.rn.esm2017.js',\n    '@firebase/firestore/dist/lite/index.cjs.js',\n  ];\n\n  for (const file of files) {\n    moduleFirestoreCJS.files.push(\n      new InstrumentationNodeModuleFile(\n        file,\n        firestoreSupportedVersions,\n        moduleExports => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n        moduleExports => unwrapMethods(moduleExports, unwrap),\n      ),\n    );\n  }\n\n  return moduleFirestoreCJS;\n}\n\nfunction wrapMethods(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  moduleExports: any,\n  wrap: ShimmerWrap,\n  unwrap: ShimmerUnwrap,\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  unwrapMethods(moduleExports, unwrap);\n\n  wrap(moduleExports, 'addDoc', patchAddDoc(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'getDocs', patchGetDocs(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'setDoc', patchSetDoc(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'deleteDoc', patchDeleteDoc(tracer, firestoreSpanCreationHook));\n\n  return moduleExports;\n}\n\nfunction unwrapMethods(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  moduleExports: any,\n  unwrap: ShimmerUnwrap,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  for (const method of ['addDoc', 'getDocs', 'setDoc', 'deleteDoc']) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    if (isWrapped(moduleExports[method])) {\n      unwrap(moduleExports, method);\n    }\n  }\n  return moduleExports;\n}\n\nfunction patchAddDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: AddDocType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: CollectionReference,\n  data: WithFieldValue,\n) => Promise> {\n  return function addDoc(original: AddDocType) {\n    return function (\n      reference: CollectionReference,\n      data: WithFieldValue,\n    ): Promise> {\n      const span = startDBSpan(tracer, 'addDoc', reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>>(span, () => {\n        return original(reference, data);\n      });\n    };\n  };\n}\n\nfunction patchDeleteDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: DeleteDocType,\n) => (this: FirebaseInstrumentation, reference: DocumentReference) => Promise {\n  return function deleteDoc(original: DeleteDocType) {\n    return function (reference: DocumentReference): Promise {\n      const span = startDBSpan(tracer, 'deleteDoc', reference.parent || reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>(span, () => {\n        return original(reference);\n      });\n    };\n  };\n}\n\nfunction patchGetDocs(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: GetDocsType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: CollectionReference,\n) => Promise> {\n  return function getDocs(original: GetDocsType) {\n    return function (\n      reference: CollectionReference,\n    ): Promise> {\n      const span = startDBSpan(tracer, 'getDocs', reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>>(span, () => {\n        return original(reference);\n      });\n    };\n  };\n}\n\nfunction patchSetDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: SetDocType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: DocumentReference,\n  data: WithFieldValue & PartialWithFieldValue,\n  options?: SetOptions,\n) => Promise {\n  return function setDoc(original: SetDocType) {\n    return function (\n      reference: DocumentReference,\n      data: WithFieldValue & PartialWithFieldValue,\n      options?: SetOptions,\n    ): Promise {\n      const span = startDBSpan(tracer, 'setDoc', reference.parent || reference);\n      firestoreSpanCreationHook(span);\n\n      return executeContextWithSpan>(span, () => {\n        return typeof options !== 'undefined' ? original(reference, data, options) : original(reference, data);\n      });\n    };\n  };\n}\n\nfunction executeContextWithSpan(span: Span, callback: () => T): T {\n  return context.with(trace.setSpan(context.active(), span), () => {\n    return safeExecuteInTheMiddle(\n      (): T => {\n        return callback();\n      },\n      err => {\n        if (err) {\n          span.recordException(err);\n        }\n        span.end();\n      },\n      true,\n    );\n  });\n}\n\nfunction startDBSpan(\n  tracer: Tracer,\n  spanName: string,\n  reference: CollectionReference | DocumentReference,\n): Span {\n  const span = tracer.startSpan(`${spanName} ${reference.path}`, { kind: SpanKind.CLIENT });\n  addAttributes(span, reference);\n  span.setAttribute(ATTR_DB_OPERATION_NAME, spanName);\n  return span;\n}\n\n/**\n * Gets the server address and port attributes from the Firestore settings.\n * It's best effort to extract the address and port from the settings, especially for IPv6.\n * @param span - The span to set attributes on.\n * @param settings - The Firestore settings containing host information.\n */\nexport function getPortAndAddress(settings: FirestoreSettings): {\n  address?: string;\n  port?: number;\n} {\n  let address: string | undefined;\n  let port: string | undefined;\n\n  if (typeof settings.host === 'string') {\n    if (settings.host.startsWith('[')) {\n      // IPv6 addresses can be enclosed in square brackets, e.g., [2001:db8::1]:8080\n      if (settings.host.endsWith(']')) {\n        // IPv6 with square brackets without port\n        address = settings.host.replace(/^\\[|\\]$/g, '');\n      } else if (settings.host.includes(']:')) {\n        // IPv6 with square brackets with port\n        const lastColonIndex = settings.host.lastIndexOf(':');\n        if (lastColonIndex !== -1) {\n          address = settings.host.slice(1, lastColonIndex).replace(/^\\[|\\]$/g, '');\n          port = settings.host.slice(lastColonIndex + 1);\n        }\n      }\n    } else {\n      // IPv4 or IPv6 without square brackets\n      // If it's an IPv6 address without square brackets, we assume it does not have a port.\n      if (net.isIPv6(settings.host)) {\n        address = settings.host;\n      }\n      // If it's an IPv4 address, we can extract the port if it exists.\n      else {\n        const lastColonIndex = settings.host.lastIndexOf(':');\n        if (lastColonIndex !== -1) {\n          address = settings.host.slice(0, lastColonIndex);\n          port = settings.host.slice(lastColonIndex + 1);\n        } else {\n          address = settings.host;\n        }\n      }\n    }\n  }\n  return {\n    address: address,\n    port: port ? parseInt(port, 10) : undefined,\n  };\n}\n\nfunction addAttributes(\n  span: Span,\n  reference: CollectionReference | DocumentReference,\n): void {\n  const firestoreApp: FirebaseApp = reference.firestore.app;\n  const firestoreOptions: FirebaseOptions = firestoreApp.options;\n  const json: { settings?: FirestoreSettings } = reference.firestore.toJSON() || {};\n  const settings: FirestoreSettings = json.settings || {};\n\n  const attributes: SpanAttributes = {\n    [ATTR_DB_COLLECTION_NAME]: reference.path,\n    [ATTR_DB_NAMESPACE]: firestoreApp.name,\n    [ATTR_DB_SYSTEM_NAME]: 'firebase.firestore',\n    'firebase.firestore.type': reference.type,\n    'firebase.firestore.options.projectId': firestoreOptions.projectId,\n    'firebase.firestore.options.appId': firestoreOptions.appId,\n    'firebase.firestore.options.messagingSenderId': firestoreOptions.messagingSenderId,\n    'firebase.firestore.options.storageBucket': firestoreOptions.storageBucket,\n  };\n\n  const { address, port } = getPortAndAddress(settings);\n\n  if (address) {\n    attributes[ATTR_SERVER_ADDRESS] = address;\n  }\n  if (port) {\n    attributes[ATTR_SERVER_PORT] = port;\n  }\n\n  span.setAttributes(attributes);\n}\n","import type { Span, Tracer } from '@opentelemetry/api';\nimport { context, diag, SpanKind, trace } from '@opentelemetry/api';\nimport type { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type { SpanAttributes } from '@sentry/core';\nimport type { FirebaseInstrumentation } from '../firebaseInstrumentation';\nimport type {\n  AvailableFirebaseFunctions,\n  FirebaseFunctions,\n  FirebaseInstrumentationConfig,\n  OverloadedParameters,\n  RequestHook,\n  ResponseHook,\n} from '../types';\n\n/**\n * Patches Firebase Functions v2 to add OpenTelemetry instrumentation\n * @param tracer - Opentelemetry Tracer\n * @param functionsSupportedVersions - supported versions of firebase-functions\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation unwrap function\n * @param config - Firebase instrumentation config\n */\nexport function patchFunctions(\n  tracer: Tracer,\n  functionsSupportedVersions: string[],\n  wrap: InstrumentationBase['_wrap'],\n  unwrap: InstrumentationBase['_unwrap'],\n  config: FirebaseInstrumentationConfig,\n): InstrumentationNodeModuleDefinition {\n  let requestHook: RequestHook = () => {};\n  let responseHook: ResponseHook = () => {};\n  const errorHook = config.functions?.errorHook;\n  const configRequestHook = config.functions?.requestHook;\n  const configResponseHook = config.functions?.responseHook;\n\n  if (typeof configResponseHook === 'function') {\n    responseHook = (span: Span, err: unknown) => {\n      safeExecuteInTheMiddle(\n        () => configResponseHook(span, err),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n  if (typeof configRequestHook === 'function') {\n    requestHook = (span: Span) => {\n      safeExecuteInTheMiddle(\n        () => configRequestHook(span),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n\n  const moduleFunctionsCJS = new InstrumentationNodeModuleDefinition('firebase-functions', functionsSupportedVersions);\n  const modulesToInstrument = [\n    { name: 'firebase-functions/lib/v2/providers/https.js', triggerType: 'function' },\n    { name: 'firebase-functions/lib/v2/providers/firestore.js', triggerType: 'firestore' },\n    { name: 'firebase-functions/lib/v2/providers/scheduler.js', triggerType: 'scheduler' },\n    { name: 'firebase-functions/lib/v2/storage.js', triggerType: 'storage' },\n  ] as const;\n\n  modulesToInstrument.forEach(({ name, triggerType }) => {\n    moduleFunctionsCJS.files.push(\n      new InstrumentationNodeModuleFile(\n        name,\n        functionsSupportedVersions,\n        moduleExports =>\n          wrapCommonFunctions(\n            moduleExports,\n            wrap,\n            unwrap,\n            tracer,\n            { requestHook, responseHook, errorHook },\n            triggerType,\n          ),\n        moduleExports => unwrapCommonFunctions(moduleExports, unwrap),\n      ),\n    );\n  });\n\n  return moduleFunctionsCJS;\n}\n\n/**\n * Patches Cloud Functions for Firebase (v2) to add OpenTelemetry instrumentation\n *\n * @param tracer - Opentelemetry Tracer\n * @param functionsConfig - Firebase instrumentation config\n * @param triggerType - Type of trigger\n * @returns A function that patches the function\n */\nexport function patchV2Functions(\n  tracer: Tracer,\n  functionsConfig: FirebaseInstrumentationConfig['functions'],\n  triggerType: string,\n): (original: T) => (...args: OverloadedParameters) => ReturnType {\n  return function v2FunctionsWrapper(original: T): (...args: OverloadedParameters) => ReturnType {\n    return function (this: FirebaseInstrumentation, ...args: OverloadedParameters): ReturnType {\n      const handler = typeof args[0] === 'function' ? args[0] : args[1];\n      const documentOrOptions = typeof args[0] === 'function' ? undefined : args[0];\n\n      if (!handler) {\n        return original.call(this, ...args);\n      }\n\n      const wrappedHandler = async function (this: unknown, ...handlerArgs: unknown[]): Promise {\n        const functionName = process.env.FUNCTION_TARGET || process.env.K_SERVICE || 'unknown';\n        const span = tracer.startSpan(`firebase.function.${triggerType}`, {\n          kind: SpanKind.SERVER,\n        });\n\n        const attributes: SpanAttributes = {\n          'faas.name': functionName,\n          'faas.trigger': triggerType,\n          'faas.provider': 'firebase',\n        };\n\n        if (process.env.GCLOUD_PROJECT) {\n          attributes['cloud.project_id'] = process.env.GCLOUD_PROJECT;\n        }\n\n        if (process.env.EVENTARC_CLOUD_EVENT_SOURCE) {\n          attributes['cloud.event_source'] = process.env.EVENTARC_CLOUD_EVENT_SOURCE;\n        }\n\n        span.setAttributes(attributes);\n        functionsConfig?.requestHook?.(span);\n\n        // Can be changed to safeExecuteInTheMiddleAsync once following is merged and released\n        // https://github.com/open-telemetry/opentelemetry-js/pull/6032\n        return context.with(trace.setSpan(context.active(), span), async () => {\n          let error: Error | undefined;\n          let result: T | undefined;\n\n          try {\n            result = await handler.apply(this, handlerArgs);\n          } catch (e) {\n            error = e as Error;\n          }\n\n          functionsConfig?.responseHook?.(span, error);\n\n          if (error) {\n            span.recordException(error);\n          }\n\n          span.end();\n\n          if (error) {\n            await functionsConfig?.errorHook?.(span, error);\n            throw error;\n          }\n\n          return result;\n        });\n      };\n\n      if (documentOrOptions) {\n        return original.call(this, documentOrOptions, wrappedHandler);\n      } else {\n        return original.call(this, wrappedHandler);\n      }\n    };\n  };\n}\n\nfunction wrapCommonFunctions(\n  moduleExports: AvailableFirebaseFunctions,\n  wrap: InstrumentationBase['_wrap'],\n  unwrap: InstrumentationBase['_unwrap'],\n  tracer: Tracer,\n  functionsConfig: FirebaseInstrumentationConfig['functions'],\n  triggerType: 'function' | 'firestore' | 'scheduler' | 'storage',\n): AvailableFirebaseFunctions {\n  unwrapCommonFunctions(moduleExports, unwrap);\n\n  switch (triggerType) {\n    case 'function':\n      wrap(moduleExports, 'onRequest', patchV2Functions(tracer, functionsConfig, 'http.request'));\n      wrap(moduleExports, 'onCall', patchV2Functions(tracer, functionsConfig, 'http.call'));\n      break;\n\n    case 'firestore':\n      wrap(moduleExports, 'onDocumentCreated', patchV2Functions(tracer, functionsConfig, 'firestore.document.created'));\n      wrap(moduleExports, 'onDocumentUpdated', patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'));\n      wrap(moduleExports, 'onDocumentDeleted', patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'));\n      wrap(moduleExports, 'onDocumentWritten', patchV2Functions(tracer, functionsConfig, 'firestore.document.written'));\n      wrap(\n        moduleExports,\n        'onDocumentCreatedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.created'),\n      );\n      wrap(\n        moduleExports,\n        'onDocumentUpdatedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'),\n      );\n\n      wrap(\n        moduleExports,\n        'onDocumentDeletedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'),\n      );\n\n      wrap(\n        moduleExports,\n        'onDocumentWrittenWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.written'),\n      );\n      break;\n\n    case 'scheduler':\n      wrap(moduleExports, 'onSchedule', patchV2Functions(tracer, functionsConfig, 'scheduler.scheduled'));\n      break;\n\n    case 'storage':\n      wrap(moduleExports, 'onObjectFinalized', patchV2Functions(tracer, functionsConfig, 'storage.object.finalized'));\n      wrap(moduleExports, 'onObjectArchived', patchV2Functions(tracer, functionsConfig, 'storage.object.archived'));\n      wrap(moduleExports, 'onObjectDeleted', patchV2Functions(tracer, functionsConfig, 'storage.object.deleted'));\n      wrap(\n        moduleExports,\n        'onObjectMetadataUpdated',\n        patchV2Functions(tracer, functionsConfig, 'storage.object.metadataUpdated'),\n      );\n      break;\n  }\n\n  return moduleExports;\n}\n\nfunction unwrapCommonFunctions(\n  moduleExports: AvailableFirebaseFunctions,\n  unwrap: InstrumentationBase['_unwrap'],\n): AvailableFirebaseFunctions {\n  const methods: (keyof AvailableFirebaseFunctions)[] = [\n    'onSchedule',\n    'onRequest',\n    'onCall',\n    'onObjectFinalized',\n    'onObjectArchived',\n    'onObjectDeleted',\n    'onObjectMetadataUpdated',\n    'onDocumentCreated',\n    'onDocumentUpdated',\n    'onDocumentDeleted',\n    'onDocumentWritten',\n    'onDocumentCreatedWithAuthContext',\n    'onDocumentUpdatedWithAuthContext',\n    'onDocumentDeletedWithAuthContext',\n    'onDocumentWrittenWithAuthContext',\n  ];\n\n  for (const method of methods) {\n    if (isWrapped(moduleExports[method])) {\n      unwrap(moduleExports, method);\n    }\n  }\n  return moduleExports;\n}\n","import { InstrumentationBase, type InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION } from '@sentry/core';\nimport { patchFirestore } from './patches/firestore';\nimport { patchFunctions } from './patches/functions';\nimport type { FirebaseInstrumentationConfig } from './types';\n\nconst DefaultFirebaseInstrumentationConfig: FirebaseInstrumentationConfig = {};\nconst firestoreSupportedVersions = ['>=3.0.0 <5']; // firebase 9+\nconst functionsSupportedVersions = ['>=6.0.0 <7']; // firebase-functions v2\n\n/**\n * Instrumentation for Firebase services, specifically Firestore.\n */\nexport class FirebaseInstrumentation extends InstrumentationBase {\n  public constructor(config: FirebaseInstrumentationConfig = DefaultFirebaseInstrumentationConfig) {\n    super('@sentry/instrumentation-firebase', SDK_VERSION, config);\n  }\n\n  /**\n   * sets config\n   * @param config\n   */\n  public override setConfig(config: FirebaseInstrumentationConfig = {}): void {\n    super.setConfig({ ...DefaultFirebaseInstrumentationConfig, ...config });\n  }\n\n  /**\n   *\n   * @protected\n   */\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  protected init(): InstrumentationNodeModuleDefinition | InstrumentationNodeModuleDefinition[] | void {\n    const modules: InstrumentationNodeModuleDefinition[] = [];\n\n    modules.push(patchFirestore(this.tracer, firestoreSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n    modules.push(patchFunctions(this.tracer, functionsSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n\n    return modules;\n  }\n}\n","import type { IntegrationFn } from '@sentry/core';\nimport { captureException, defineIntegration, flush, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { FirebaseInstrumentation, type FirebaseInstrumentationConfig } from './otel';\n\nconst INTEGRATION_NAME = 'Firebase';\n\nconst config: FirebaseInstrumentationConfig = {\n  firestoreSpanCreationHook: span => {\n    addOriginToSpan(span, 'auto.firebase.otel.firestore');\n\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'db.query');\n  },\n  functions: {\n    requestHook: span => {\n      addOriginToSpan(span, 'auto.firebase.otel.functions');\n\n      span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.request');\n    },\n    errorHook: async (_, error) => {\n      if (error) {\n        captureException(error, {\n          mechanism: {\n            type: 'auto.firebase.otel.functions',\n            handled: false,\n          },\n        });\n        await flush(2000);\n      }\n    },\n  },\n};\n\nexport const instrumentFirebase = generateInstrumentOnce(INTEGRATION_NAME, () => new FirebaseInstrumentation(config));\n\nconst _firebaseIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentFirebase();\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const firebaseIntegration = defineIntegration(_firebaseIntegration);\n","import type { Integration } from '@sentry/core';\nimport { instrumentOtelHttp, instrumentSentryHttp } from '../http';\nimport { amqplibIntegration, instrumentAmqplib } from './amqplib';\nimport { anthropicAIIntegration, instrumentAnthropicAi } from './anthropic-ai';\nimport { connectIntegration, instrumentConnect } from './connect';\nimport { expressIntegration, instrumentExpress } from './express';\nimport { fastifyIntegration, instrumentFastify, instrumentFastifyV3 } from './fastify';\nimport { firebaseIntegration, instrumentFirebase } from './firebase';\nimport { genericPoolIntegration, instrumentGenericPool } from './genericPool';\nimport { googleGenAIIntegration, instrumentGoogleGenAI } from './google-genai';\nimport { graphqlIntegration, instrumentGraphql } from './graphql';\nimport { hapiIntegration, instrumentHapi } from './hapi';\nimport { honoIntegration, instrumentHono } from './hono';\nimport { instrumentKafka, kafkaIntegration } from './kafka';\nimport { instrumentKoa, koaIntegration } from './koa';\nimport { instrumentLangChain, langChainIntegration } from './langchain';\nimport { instrumentLangGraph, langGraphIntegration } from './langgraph';\nimport { instrumentLruMemoizer, lruMemoizerIntegration } from './lrumemoizer';\nimport { instrumentMongo, mongoIntegration } from './mongo';\nimport { instrumentMongoose, mongooseIntegration } from './mongoose';\nimport { instrumentMysql, mysqlIntegration } from './mysql';\nimport { instrumentMysql2, mysql2Integration } from './mysql2';\nimport { instrumentOpenAi, openAIIntegration } from './openai';\nimport { instrumentPostgres, postgresIntegration } from './postgres';\nimport { instrumentPostgresJs, postgresJsIntegration } from './postgresjs';\nimport { prismaIntegration } from './prisma';\nimport { instrumentRedis, redisIntegration } from './redis';\nimport { instrumentTedious, tediousIntegration } from './tedious';\nimport { instrumentVercelAi, vercelAIIntegration } from './vercelai';\n\n/**\n * With OTEL, all performance integrations will be added, as OTEL only initializes them when the patched package is actually required.\n */\nexport function getAutoPerformanceIntegrations(): Integration[] {\n  return [\n    expressIntegration(),\n    fastifyIntegration(),\n    graphqlIntegration(),\n    honoIntegration(),\n    mongoIntegration(),\n    mongooseIntegration(),\n    mysqlIntegration(),\n    mysql2Integration(),\n    redisIntegration(),\n    postgresIntegration(),\n    prismaIntegration(),\n    hapiIntegration(),\n    koaIntegration(),\n    connectIntegration(),\n    tediousIntegration(),\n    genericPoolIntegration(),\n    kafkaIntegration(),\n    amqplibIntegration(),\n    lruMemoizerIntegration(),\n    // AI providers\n    // LangChain must come first to disable AI provider integrations before they instrument\n    langChainIntegration(),\n    langGraphIntegration(),\n    vercelAIIntegration(),\n    openAIIntegration(),\n    anthropicAIIntegration(),\n    googleGenAIIntegration(),\n    postgresJsIntegration(),\n    firebaseIntegration(),\n  ];\n}\n\n/**\n * Get a list of methods to instrument OTEL, when preload instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getOpenTelemetryInstrumentationToPreload(): (((options?: any) => void) & { id: string })[] {\n  return [\n    instrumentSentryHttp,\n    instrumentOtelHttp,\n    instrumentExpress,\n    instrumentConnect,\n    instrumentFastify,\n    instrumentFastifyV3,\n    instrumentHapi,\n    instrumentHono,\n    instrumentKafka,\n    instrumentKoa,\n    instrumentLruMemoizer,\n    instrumentMongo,\n    instrumentMongoose,\n    instrumentMysql,\n    instrumentMysql2,\n    instrumentPostgres,\n    instrumentHapi,\n    instrumentGraphql,\n    instrumentRedis,\n    instrumentTedious,\n    instrumentGenericPool,\n    instrumentAmqplib,\n    instrumentLangChain,\n    instrumentVercelAi,\n    instrumentOpenAi,\n    instrumentPostgresJs,\n    instrumentFirebase,\n    instrumentAnthropicAi,\n    instrumentGoogleGenAI,\n    instrumentLangGraph,\n  ];\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport type { Resource } from './Resource';\nimport { emptyResource, resourceFromDetectedResource } from './ResourceImpl';\nimport type { ResourceDetectionConfig } from './config';\n\n/**\n * Runs all resource detectors and returns the results merged into a single Resource.\n *\n * @param config Configuration for resource detection\n */\nexport const detectResources = (\n  config: ResourceDetectionConfig = {}\n): Resource => {\n  const resources: Resource[] = (config.detectors || []).map(d => {\n    try {\n      const resource = resourceFromDetectedResource(d.detect(config));\n      diag.debug(`${d.constructor.name} found resource.`, resource);\n      return resource;\n    } catch (e) {\n      diag.debug(`${d.constructor.name} failed: ${e.message}`);\n      return emptyResource();\n    }\n  });\n\n  return resources.reduce(\n    (acc, resource) => acc.merge(resource),\n    emptyResource()\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport type { ResourceDetectionConfig } from '../config';\nimport type { DetectedResource, ResourceDetector } from '../types';\nimport { getStringFromEnv } from '@opentelemetry/core';\n\n/**\n * EnvDetector can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetector implements ResourceDetector {\n  // Type, attribute keys, and attribute values should not exceed 256 characters.\n  private readonly _MAX_LENGTH = 255;\n\n  // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n  private readonly _COMMA_SEPARATOR = ',';\n\n  // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n  private readonly _LABEL_KEY_VALUE_SPLITTER = '=';\n\n  /**\n   * Returns a {@link Resource} populated with attributes from the\n   * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n   * function to conform to the Detector interface.\n   *\n   * @param config The resource detection config\n   */\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {};\n\n    const rawAttributes = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n    const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n    if (rawAttributes) {\n      try {\n        const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n        Object.assign(attributes, parsedAttributes);\n      } catch (e) {\n        diag.debug(`EnvDetector failed: ${e instanceof Error ? e.message : e}`);\n      }\n    }\n\n    if (serviceName) {\n      attributes[ATTR_SERVICE_NAME] = serviceName;\n    }\n\n    return { attributes };\n  }\n\n  /**\n   * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment\n   * variable.\n   *\n   * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes in the\n   * format \"key1=value1,key2=value2\". The ',' and '=' characters in keys\n   * and values MUST be percent-encoded. Other characters MAY be percent-encoded.\n   *\n   * Per the spec, on any error (e.g., decoding failure), the entire environment\n   * variable value is discarded.\n   *\n   * @param rawEnvAttributes The resource attributes as a comma-separated list\n   * of key/value pairs.\n   * @returns The parsed resource attributes.\n   * @throws Error if parsing fails (caller handles by discarding all attributes)\n   */\n  private _parseResourceAttributes(rawEnvAttributes?: string): Attributes {\n    if (!rawEnvAttributes) return {};\n\n    const attributes: Attributes = {};\n    const rawAttributes: string[] = rawEnvAttributes.split(\n      this._COMMA_SEPARATOR\n    );\n\n    for (const rawAttribute of rawAttributes) {\n      const keyValuePair: string[] = rawAttribute.split(\n        this._LABEL_KEY_VALUE_SPLITTER\n      );\n\n      // Per spec: ',' and '=' MUST be percent-encoded in keys and values.\n      // If we get != 2 parts, there's an unencoded '=' which is an error.\n      if (keyValuePair.length !== 2) {\n        throw new Error(\n          `Invalid format for OTEL_RESOURCE_ATTRIBUTES: \"${rawAttribute}\". ` +\n            `Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`\n        );\n      }\n\n      const [rawKey, rawValue] = keyValuePair;\n      const key = rawKey.trim();\n      const value = rawValue.trim();\n\n      if (key.length === 0) {\n        throw new Error(\n          `Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in \"${rawAttribute}\".`\n        );\n      }\n\n      let decodedKey: string;\n      let decodedValue: string;\n      try {\n        decodedKey = decodeURIComponent(key);\n        decodedValue = decodeURIComponent(value);\n      } catch (e) {\n        throw new Error(\n          `Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry \"${rawAttribute}\": ${e instanceof Error ? e.message : e}`\n        );\n      }\n\n      if (decodedKey.length > this._MAX_LENGTH) {\n        throw new Error(\n          `Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: \"${decodedKey}\".`\n        );\n      }\n\n      if (decodedValue.length > this._MAX_LENGTH) {\n        throw new Error(\n          `Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key \"${decodedKey}\".`\n        );\n      }\n\n      attributes[decodedKey] = decodedValue;\n    }\n\n    return attributes;\n  }\n}\n\nexport const envDetector = new EnvDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @example 111111111111\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * @example us-east-1c\n *\n * @note Availability zones are called \"zones\" on Alibaba Cloud and Google Cloud.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\n/**\n * Name of the cloud provider.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\n/**\n * The geographical region the resource is running.\n *\n * @example us-central1\n * @example us-east-1\n *\n * @note Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/global-infrastructure/geographies/), [Google Cloud regions](https://cloud.google.com/about/locations), or [Tencent Cloud regions](https://www.tencentcloud.com/document/product/213/6091).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated.\n *\n * @example a3bf90e006b2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\n/**\n * Name of the image the container was built on.\n *\n * @example gcr.io/opentelemetry/operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`.\n *\n * @example [\"v1.27.1\", \"3.5.7-0\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\n/**\n * Container name used by container runtime.\n *\n * @example opentelemetry-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system.\n *\n * @example fdbf79e8af94cb7f9e8df36789187052\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\n/**\n * VM image ID or host OS image ID. For Cloud, this value is from the provider.\n *\n * @example ami-07b06b442921831e5\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @example infra-ami-eks-worker-node-7d4ec78312\n * @example CentOS-8-x86_64-1905\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\n/**\n * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 0.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @example opentelemetry-test\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @example n1-standard-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\n/**\n * The name of the cluster.\n *\n * @example opentelemetry-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\n/**\n * The name of the Deployment.\n *\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\n/**\n * The name of the namespace that the pod is running in.\n *\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\n/**\n * The name of the Pod.\n *\n * @example opentelemetry-pod-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\n/**\n * The operating system type.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\n/**\n * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 14.2.1\n * @example 18.04.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @example cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @example [\"cmd/otecol\", \"--config=config.yaml\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\n/**\n * The name of the process executable. On Linux based systems, this **SHOULD** be set to the base name of the target of `/proc/[pid]/exe`. On Windows, this **SHOULD** be set to the base name of `GetProcessImageFileNameW`.\n *\n * @example otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @example /usr/bin/cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\n/**\n * The username of the user that owns the process.\n *\n * @example root\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\n/**\n * Process identifier (PID).\n *\n * @example 1234\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @example \"Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION =\n  'process.runtime.description' as const;\n\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @example \"14.0.2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\n/**\n * The name of the web engine.\n *\n * @example WildFly\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\n/**\n * The version of the web engine.\n *\n * @example 21.0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as process from 'process';\n\nlet getMachineIdImpl: undefined | (() => Promise);\n\nexport async function getMachineId(): Promise {\n  if (!getMachineIdImpl) {\n    switch (process.platform) {\n      case 'darwin':\n        getMachineIdImpl = (await import('./getMachineId-darwin.js'))\n          .getMachineId;\n        break;\n      case 'linux':\n        getMachineIdImpl = (await import('./getMachineId-linux.js'))\n          .getMachineId;\n        break;\n      case 'freebsd':\n        getMachineIdImpl = (await import('./getMachineId-bsd.js')).getMachineId;\n        break;\n      case 'win32':\n        getMachineIdImpl = (await import('./getMachineId-win.js')).getMachineId;\n        break;\n      default:\n        getMachineIdImpl = (await import('./getMachineId-unsupported.js'))\n          .getMachineId;\n        break;\n    }\n  }\n\n  return getMachineIdImpl();\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nexport const normalizeArch = (nodeArchString: string): string => {\n  // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec:\n  // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md\n  switch (nodeArchString) {\n    case 'arm':\n      return 'arm32';\n    case 'ppc':\n      return 'ppc32';\n    case 'x64':\n      return 'amd64';\n    default:\n      return nodeArchString;\n  }\n};\n\nexport const normalizeType = (nodePlatform: string): string => {\n  // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec:\n  // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md\n  switch (nodePlatform) {\n    case 'sunos':\n      return 'solaris';\n    case 'win32':\n      return 'windows';\n    default:\n      return nodePlatform;\n  }\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ATTR_HOST_ARCH, ATTR_HOST_ID, ATTR_HOST_NAME } from '../../../semconv';\nimport { arch, hostname } from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type {\n  DetectedResource,\n  DetectedResourceAttributes,\n  ResourceDetector,\n} from '../../../types';\nimport { getMachineId } from './machine-id/getMachineId';\nimport { normalizeArch } from './utils';\n\n/**\n * HostDetector detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: DetectedResourceAttributes = {\n      [ATTR_HOST_NAME]: hostname(),\n      [ATTR_HOST_ARCH]: normalizeArch(arch()),\n      [ATTR_HOST_ID]: getMachineId(),\n    };\n\n    return { attributes };\n  }\n}\n\nexport const hostDetector = new HostDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { ResourceDetectionConfig } from './config';\nexport { detectResources } from './detect-resources';\nexport {\n  envDetector,\n  hostDetector,\n  osDetector,\n  processDetector,\n  serviceInstanceIdDetector,\n} from './detectors';\nexport type { Resource } from './Resource';\nexport {\n  resourceFromAttributes,\n  defaultResource,\n  emptyResource,\n} from './ResourceImpl';\nexport { defaultServiceName } from './default-service-name';\nexport type {\n  ResourceDetector,\n  DetectedResource,\n  DetectedResourceAttributes,\n  RawResourceAttribute,\n  MaybePromise,\n} from './types';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { ATTR_OS_TYPE, ATTR_OS_VERSION } from '../../../semconv';\nimport { platform, release } from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\nimport { normalizeType } from './utils';\n\n/**\n * OSDetector detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {\n      [ATTR_OS_TYPE]: normalizeType(platform()),\n      [ATTR_OS_VERSION]: release(),\n    };\n    return { attributes };\n  }\n}\n\nexport const osDetector = new OSDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport {\n  ATTR_PROCESS_COMMAND,\n  ATTR_PROCESS_COMMAND_ARGS,\n  ATTR_PROCESS_EXECUTABLE_NAME,\n  ATTR_PROCESS_EXECUTABLE_PATH,\n  ATTR_PROCESS_OWNER,\n  ATTR_PROCESS_PID,\n  ATTR_PROCESS_RUNTIME_DESCRIPTION,\n  ATTR_PROCESS_RUNTIME_NAME,\n  ATTR_PROCESS_RUNTIME_VERSION,\n} from '../../../semconv';\nimport * as os from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ProcessDetector will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {\n      [ATTR_PROCESS_PID]: process.pid,\n      [ATTR_PROCESS_EXECUTABLE_NAME]: process.title,\n      [ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath,\n      [ATTR_PROCESS_COMMAND_ARGS]: [\n        process.argv[0],\n        ...process.execArgv,\n        ...process.argv.slice(1),\n      ],\n      [ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node,\n      [ATTR_PROCESS_RUNTIME_NAME]: 'nodejs',\n      [ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n    };\n\n    if (process.argv.length > 1) {\n      attributes[ATTR_PROCESS_COMMAND] = process.argv[1];\n    }\n\n    try {\n      const userInfo = os.userInfo();\n      attributes[ATTR_PROCESS_OWNER] = userInfo.username;\n    } catch (e) {\n      diag.debug(`error obtaining process owner: ${e}`);\n    }\n\n    return { attributes };\n  }\n}\n\nexport const processDetector = new ProcessDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ATTR_SERVICE_INSTANCE_ID } from '../../../semconv';\nimport { randomUUID } from 'crypto';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ServiceInstanceIdDetector detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    return {\n      attributes: {\n        [ATTR_SERVICE_INSTANCE_ID]: randomUUID(),\n      },\n    };\n  }\n}\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = new ServiceInstanceIdDetector();\n","import { context, propagation, trace } from '@opentelemetry/api';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport {\n  ATTR_SERVICE_NAME,\n  ATTR_SERVICE_VERSION,\n  SEMRESATTRS_SERVICE_NAMESPACE,\n} from '@opentelemetry/semantic-conventions';\nimport { debug as coreDebug, SDK_VERSION } from '@sentry/core';\nimport {\n  initializeEsmLoader,\n  type NodeClient,\n  SentryContextManager,\n  setupOpenTelemetryLogger,\n} from '@sentry/node-core';\nimport {\n  type AsyncLocalStorageLookup,\n  SentryPropagator,\n  SentrySampler,\n  SentrySpanProcessor,\n} from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing';\n\n// About 277h - this must fit into new Array(len)!\nconst MAX_MAX_SPAN_WAIT_DURATION = 1_000_000;\n\ninterface AdditionalOpenTelemetryOptions {\n  /** Additional SpanProcessor instances that should be used. */\n  spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Initialize OpenTelemetry for Node.\n */\nexport function initOpenTelemetry(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): void {\n  if (client.getOptions().debug) {\n    setupOpenTelemetryLogger();\n  }\n\n  const [provider, asyncLocalStorageLookup] = setupOtel(client, options);\n  client.traceProvider = provider;\n  client.asyncLocalStorageLookup = asyncLocalStorageLookup;\n}\n\ninterface NodePreloadOptions {\n  debug?: boolean;\n  integrations?: string[];\n}\n\n/**\n * Preload OpenTelemetry for Node.\n * This can be used to preload instrumentation early, but set up Sentry later.\n * By preloading the OTEL instrumentation wrapping still happens early enough that everything works.\n */\nexport function preloadOpenTelemetry(options: NodePreloadOptions = {}): void {\n  const { debug } = options;\n\n  if (debug) {\n    coreDebug.enable();\n  }\n\n  initializeEsmLoader();\n\n  // These are all integrations that we need to pre-load to ensure they are set up before any other code runs\n  getPreloadMethods(options.integrations).forEach(fn => {\n    fn();\n\n    if (debug) {\n      coreDebug.log(`[Sentry] Preloaded ${fn.id} instrumentation`);\n    }\n  });\n}\n\nfunction getPreloadMethods(integrationNames?: string[]): ((() => void) & { id: string })[] {\n  const instruments = getOpenTelemetryInstrumentationToPreload();\n\n  if (!integrationNames) {\n    return instruments;\n  }\n\n  // We match exact matches of instrumentation, but also match prefixes, e.g. \"Fastify.v5\" will match \"Fastify\"\n  return instruments.filter(instrumentation => {\n    const id = instrumentation.id;\n    return integrationNames.some(integrationName => id === integrationName || id.startsWith(`${integrationName}.`));\n  });\n}\n\n/** Just exported for tests. */\nexport function setupOtel(\n  client: NodeClient,\n  options: AdditionalOpenTelemetryOptions = {},\n): [BasicTracerProvider, AsyncLocalStorageLookup] {\n  // Create and configure NodeTracerProvider\n  const provider = new BasicTracerProvider({\n    sampler: new SentrySampler(client),\n    resource: defaultResource().merge(\n      resourceFromAttributes({\n        [ATTR_SERVICE_NAME]: 'node',\n        // eslint-disable-next-line deprecation/deprecation\n        [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry',\n        [ATTR_SERVICE_VERSION]: SDK_VERSION,\n      }),\n    ),\n    forceFlushTimeoutMillis: 500,\n    spanProcessors: [\n      new SentrySpanProcessor({\n        timeout: _clampSpanProcessorTimeout(client.getOptions().maxSpanWaitDuration),\n      }),\n      ...(options.spanProcessors || []),\n    ],\n  });\n\n  // Register as globals\n  trace.setGlobalTracerProvider(provider);\n  propagation.setGlobalPropagator(new SentryPropagator());\n\n  const ctxManager = new SentryContextManager();\n  context.setGlobalContextManager(ctxManager);\n\n  return [provider, ctxManager.getAsyncLocalStorageLookup()];\n}\n\n/** Just exported for tests. */\nexport function _clampSpanProcessorTimeout(maxSpanWaitDuration: number | undefined): number | undefined {\n  if (maxSpanWaitDuration == null) {\n    return undefined;\n  }\n\n  // We guard for a max. value here, because we create an array with this length\n  // So if this value is too large, this would fail\n  if (maxSpanWaitDuration > MAX_MAX_SPAN_WAIT_DURATION) {\n    DEBUG_BUILD &&\n      coreDebug.warn(`\\`maxSpanWaitDuration\\` is too high, using the maximum value of ${MAX_MAX_SPAN_WAIT_DURATION}`);\n    return MAX_MAX_SPAN_WAIT_DURATION;\n  } else if (maxSpanWaitDuration <= 0 || Number.isNaN(maxSpanWaitDuration)) {\n    DEBUG_BUILD && coreDebug.warn('`maxSpanWaitDuration` must be a positive number, using default value instead.');\n    return undefined;\n  }\n\n  return maxSpanWaitDuration;\n}\n","import type { Integration, Options } from '@sentry/core';\nimport { applySdkMetadata, hasSpansEnabled } from '@sentry/core';\nimport type { NodeClient } from '@sentry/node-core';\nimport {\n  getDefaultIntegrations as getNodeCoreDefaultIntegrations,\n  init as initNodeCore,\n  validateOpenTelemetrySetup,\n} from '@sentry/node-core';\nimport { httpIntegration } from '../integrations/http';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch';\nimport { getAutoPerformanceIntegrations } from '../integrations/tracing';\nimport type { NodeOptions } from '../types';\nimport { initOpenTelemetry } from './initOtel';\n\n/**\n * Get default integrations, excluding performance.\n */\nexport function getDefaultIntegrationsWithoutPerformance(): Integration[] {\n  const nodeCoreIntegrations = getNodeCoreDefaultIntegrations();\n\n  // Filter out the node-core HTTP and NodeFetch integrations and replace them with Node SDK's composite versions\n  return nodeCoreIntegrations\n    .filter(integration => integration.name !== 'Http' && integration.name !== 'NodeFetch')\n    .concat(httpIntegration(), nativeNodeFetchIntegration());\n}\n\n/** Get the default integrations for the Node SDK. */\nexport function getDefaultIntegrations(options: Options): Integration[] {\n  return [\n    ...getDefaultIntegrationsWithoutPerformance(),\n    // We only add performance integrations if tracing is enabled\n    // Note that this means that without tracing enabled, e.g. `expressIntegration()` will not be added\n    // This means that generally request isolation will work (because that is done by httpIntegration)\n    // But `transactionName` will not be set automatically\n    ...(hasSpansEnabled(options) ? getAutoPerformanceIntegrations() : []),\n  ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nexport function init(options: NodeOptions | undefined = {}): NodeClient | undefined {\n  return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Internal initialization function.\n */\nfunction _init(\n  options: NodeOptions | undefined = {},\n  getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClient | undefined {\n  applySdkMetadata(options, 'node');\n\n  const client = initNodeCore({\n    ...options,\n    // Only use Node SDK defaults if none provided\n    defaultIntegrations: options.defaultIntegrations ?? getDefaultIntegrationsImpl(options),\n  });\n\n  // Add Node SDK specific OpenTelemetry setup\n  if (client && !options.skipOpenTelemetrySetup) {\n    initOpenTelemetry(client, {\n      spanProcessors: options.openTelemetrySpanProcessors,\n    });\n    validateOpenTelemetrySetup();\n  }\n\n  return client;\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nexport function initWithoutDefaultIntegrations(options: NodeOptions | undefined = {}): NodeClient | undefined {\n  return _init(options, () => []);\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport type { RouteInfo, RouteManifest } from './types';\n\nexport type CreateRouteManifestOptions = {\n  // For starters we only support app router\n  appDirPath?: string;\n  /**\n   * Whether to include route groups (e.g., (auth-layout)) in the final route paths.\n   * By default, route groups are stripped from paths following Next.js convention.\n   */\n  includeRouteGroups?: boolean;\n  /**\n   * Base path for the application, if any. This will be prefixed to all routes.\n   */\n  basePath?: string;\n};\n\nlet manifestCache: RouteManifest | null = null;\nlet lastAppDirPath: string | null = null;\nlet lastIncludeRouteGroups: boolean | undefined = undefined;\n\nfunction isPageFile(filename: string): boolean {\n  return filename === 'page.tsx' || filename === 'page.jsx' || filename === 'page.ts' || filename === 'page.js';\n}\n\nfunction isRouteGroup(name: string): boolean {\n  return name.startsWith('(') && name.endsWith(')');\n}\n\nfunction normalizeRouteGroupPath(routePath: string): string {\n  // Remove route group segments from the path\n  // Using positive lookahead with (?=[^)\\/]*\\)) to avoid polynomial matching\n  return routePath.replace(/\\/\\((?=[^)/]*\\))[^)/]+\\)/g, '');\n}\n\nfunction getDynamicRouteSegment(name: string): string {\n  if (name.startsWith('[[...') && name.endsWith(']]')) {\n    // Optional catchall: [[...param]]\n    const paramName = name.slice(5, -2); // Remove [[... and ]]\n    return `:${paramName}*?`; // Mark with ? as optional\n  } else if (name.startsWith('[...') && name.endsWith(']')) {\n    // Required catchall: [...param]\n    const paramName = name.slice(4, -1); // Remove [... and ]\n    return `:${paramName}*`;\n  }\n  // Regular dynamic: [param]\n  return `:${name.slice(1, -1)}`;\n}\n\nfunction buildRegexForDynamicRoute(routePath: string): {\n  regex: string;\n  paramNames: string[];\n  hasOptionalPrefix: boolean;\n} {\n  const segments = routePath.split('/').filter(Boolean);\n  const regexSegments: string[] = [];\n  const paramNames: string[] = [];\n  let hasOptionalCatchall = false;\n\n  for (const segment of segments) {\n    if (segment.startsWith(':')) {\n      const paramName = segment.substring(1);\n\n      if (paramName.endsWith('*?')) {\n        // Optional catchall: matches zero or more segments\n        const cleanParamName = paramName.slice(0, -2);\n        paramNames.push(cleanParamName);\n        // Handling this special case in pattern construction below\n        hasOptionalCatchall = true;\n      } else if (paramName.endsWith('*')) {\n        // Required catchall: matches one or more segments\n        const cleanParamName = paramName.slice(0, -1);\n        paramNames.push(cleanParamName);\n        regexSegments.push('(.+)');\n      } else {\n        // Regular dynamic segment\n        paramNames.push(paramName);\n        regexSegments.push('([^/]+)');\n      }\n    } else {\n      // Static segment - escape regex special characters including route group parentheses\n      regexSegments.push(segment.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n    }\n  }\n\n  let pattern: string;\n  if (hasOptionalCatchall) {\n    if (regexSegments.length === 0) {\n      // If the optional catchall happens at the root, accept any path starting\n      // with a slash. Need capturing group for parameter extraction.\n      pattern = '^/(.*)$';\n    } else {\n      // For optional catchall, make the trailing slash and segments optional\n      // This allows matching both /catchall and /catchall/anything\n      const staticParts = regexSegments.join('/');\n      pattern = `^/${staticParts}(?:/(.*))?$`;\n    }\n  } else {\n    pattern = `^/${regexSegments.join('/')}$`;\n  }\n\n  return { regex: pattern, paramNames, hasOptionalPrefix: hasOptionalPrefix(paramNames) };\n}\n\n/**\n * Detect if the first parameter is a common i18n prefix segment\n * Common patterns: locale, lang, language\n */\nfunction hasOptionalPrefix(paramNames: string[]): boolean {\n  const firstParam = paramNames[0];\n  if (firstParam === undefined) {\n    return false;\n  }\n\n  return firstParam === 'locale' || firstParam === 'lang' || firstParam === 'language';\n}\n\n/**\n * Check if a page file exports generateStaticParams (ISR/SSG indicator)\n */\nfunction checkForGenerateStaticParams(pageFilePath: string): boolean {\n  try {\n    const content = fs.readFileSync(pageFilePath, 'utf8');\n    // check for generateStaticParams export\n    // the regex covers `export function generateStaticParams`, `export async function generateStaticParams`, `export const generateStaticParams`\n    return /export\\s+(async\\s+)?function\\s+generateStaticParams|export\\s+const\\s+generateStaticParams/.test(content);\n  } catch {\n    return false;\n  }\n}\n\nfunction scanAppDirectory(dir: string, basePath: string = '', includeRouteGroups: boolean = false): RouteManifest {\n  const dynamicRoutes: RouteInfo[] = [];\n  const staticRoutes: RouteInfo[] = [];\n  const isrRoutes: string[] = [];\n\n  try {\n    const entries = fs.readdirSync(dir, { withFileTypes: true });\n    const pageFile = entries.find(entry => isPageFile(entry.name));\n\n    if (pageFile) {\n      // Conditionally normalize the path based on includeRouteGroups option\n      const routePath = includeRouteGroups ? basePath || '/' : normalizeRouteGroupPath(basePath || '/');\n      const isDynamic = routePath.includes(':');\n\n      // Check if this page has generateStaticParams (ISR/SSG indicator)\n      const pageFilePath = path.join(dir, pageFile.name);\n      const hasGenerateStaticParams = checkForGenerateStaticParams(pageFilePath);\n\n      if (hasGenerateStaticParams) {\n        isrRoutes.push(routePath);\n      }\n\n      if (isDynamic) {\n        const { regex, paramNames, hasOptionalPrefix } = buildRegexForDynamicRoute(routePath);\n        dynamicRoutes.push({\n          path: routePath,\n          regex,\n          paramNames,\n          hasOptionalPrefix,\n        });\n      } else {\n        staticRoutes.push({\n          path: routePath,\n        });\n      }\n    }\n\n    for (const entry of entries) {\n      if (entry.isDirectory()) {\n        const fullPath = path.join(dir, entry.name);\n        let routeSegment: string;\n\n        const isDynamic = entry.name.startsWith('[') && entry.name.endsWith(']');\n        const isRouteGroupDir = isRouteGroup(entry.name);\n\n        if (isRouteGroupDir) {\n          if (includeRouteGroups) {\n            routeSegment = entry.name;\n          } else {\n            routeSegment = '';\n          }\n        } else if (isDynamic) {\n          routeSegment = getDynamicRouteSegment(entry.name);\n        } else {\n          routeSegment = entry.name;\n        }\n\n        const newBasePath = routeSegment ? `${basePath}/${routeSegment}` : basePath;\n        const subRoutes = scanAppDirectory(fullPath, newBasePath, includeRouteGroups);\n\n        dynamicRoutes.push(...subRoutes.dynamicRoutes);\n        staticRoutes.push(...subRoutes.staticRoutes);\n        isrRoutes.push(...subRoutes.isrRoutes);\n      }\n    }\n  } catch (error) {\n    // eslint-disable-next-line no-console\n    console.warn('Error building route manifest:', error);\n  }\n\n  return { dynamicRoutes, staticRoutes, isrRoutes };\n}\n\n/**\n * Returns a route manifest for the given app directory\n */\nexport function createRouteManifest(options?: CreateRouteManifestOptions): RouteManifest {\n  let targetDir: string | undefined;\n\n  if (options?.appDirPath) {\n    targetDir = options.appDirPath;\n  } else {\n    const projectDir = process.cwd();\n    const maybeAppDirPath = path.join(projectDir, 'app');\n    const maybeSrcAppDirPath = path.join(projectDir, 'src', 'app');\n\n    if (fs.existsSync(maybeAppDirPath) && fs.lstatSync(maybeAppDirPath).isDirectory()) {\n      targetDir = maybeAppDirPath;\n    } else if (fs.existsSync(maybeSrcAppDirPath) && fs.lstatSync(maybeSrcAppDirPath).isDirectory()) {\n      targetDir = maybeSrcAppDirPath;\n    }\n  }\n\n  if (!targetDir) {\n    return {\n      isrRoutes: [],\n      dynamicRoutes: [],\n      staticRoutes: [],\n    };\n  }\n\n  // Check if we can use cached version\n  if (manifestCache && lastAppDirPath === targetDir && lastIncludeRouteGroups === options?.includeRouteGroups) {\n    return manifestCache;\n  }\n\n  const { dynamicRoutes, staticRoutes, isrRoutes } = scanAppDirectory(\n    targetDir,\n    options?.basePath,\n    options?.includeRouteGroups,\n  );\n\n  const manifest: RouteManifest = {\n    dynamicRoutes,\n    staticRoutes,\n    isrRoutes,\n  };\n\n  // set cache\n  manifestCache = manifest;\n  lastAppDirPath = targetDir;\n  lastIncludeRouteGroups = options?.includeRouteGroups;\n\n  return manifest;\n}\n","import { _INTERNAL_safeMathRandom } from '@sentry/core';\nimport type { NextConfigObject } from '../types';\n\n/**\n * Generates a random tunnel route path that's less likely to be blocked by ad-blockers\n */\nfunction generateRandomTunnelRoute(): string {\n  // Generate a random 8-character alphanumeric string\n  const randomString = _INTERNAL_safeMathRandom().toString(36).substring(2, 10);\n  return `/${randomString}`;\n}\n\n/**\n * Resolves the tunnel route based on the user's configuration and the environment.\n * @param tunnelRoute - The user-provided tunnel route option\n */\nexport function resolveTunnelRoute(tunnelRoute: string | true): string {\n  if (process.env.__SENTRY_TUNNEL_ROUTE__) {\n    // Reuse cached value from previous build (server/client)\n    return process.env.__SENTRY_TUNNEL_ROUTE__;\n  }\n\n  const resolvedTunnelRoute = typeof tunnelRoute === 'string' ? tunnelRoute : generateRandomTunnelRoute();\n\n  // Cache for subsequent builds (only during build time)\n  // Turbopack runs the config twice, so we need a shared context to avoid generating a new tunnel route for each build.\n  // env works well here\n  // https://linear.app/getsentry/issue/JS-549/adblock-plus-blocking-requests-to-sentry-and-monitoring-tunnel\n  if (resolvedTunnelRoute) {\n    process.env.__SENTRY_TUNNEL_ROUTE__ = resolvedTunnelRoute;\n  }\n\n  return resolvedTunnelRoute;\n}\n\n/**\n * Injects rewrite rules into the Next.js config provided by the user to tunnel\n * requests from the `tunnelPath` to Sentry.\n *\n * See https://nextjs.org/docs/api-reference/next.config.js/rewrites.\n */\nexport function setUpTunnelRewriteRules(userNextConfig: NextConfigObject, tunnelPath: string): void {\n  const originalRewrites = userNextConfig.rewrites;\n  // Allow overriding the tunnel destination for E2E tests via environment variable\n  const destinationOverride = process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE;\n\n  // Make sure destinations are statically defined at build time\n  const destination = destinationOverride || 'https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0';\n  const destinationWithRegion =\n    destinationOverride || 'https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0';\n\n  // This function doesn't take any arguments at the time of writing but we future-proof\n  // here in case Next.js ever decides to pass some\n  userNextConfig.rewrites = async (...args: unknown[]) => {\n    const tunnelRouteRewrite = {\n      // Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]`\n      // Nextjs will automatically convert `source` into a regex for us\n      source: `${tunnelPath}(/?)`,\n      has: [\n        {\n          type: 'query',\n          key: 'o', // short for orgId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'p', // short for projectId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n      ],\n      destination,\n    };\n\n    const tunnelRouteRewriteWithRegion = {\n      // Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]?r=[region]`\n      // Nextjs will automatically convert `source` into a regex for us\n      source: `${tunnelPath}(/?)`,\n      has: [\n        {\n          type: 'query',\n          key: 'o', // short for orgId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'p', // short for projectId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'r', // short for region - we keep it short so matching is harder for ad-blockers\n          value: '(?[a-z]{2})',\n        },\n      ],\n      destination: destinationWithRegion,\n    };\n\n    // Order of these is important, they get applied first to last.\n    const newRewrites = [tunnelRouteRewriteWithRegion, tunnelRouteRewrite];\n\n    if (typeof originalRewrites !== 'function') {\n      return newRewrites;\n    }\n\n    // @ts-expect-error Expected 0 arguments but got 1 - this is from the future-proofing mentioned above, so we don't care about it\n    const originalRewritesResult = await originalRewrites(...args);\n\n    if (Array.isArray(originalRewritesResult)) {\n      return [...newRewrites, ...originalRewritesResult];\n    } else {\n      return {\n        ...originalRewritesResult,\n        beforeFiles: [...newRewrites, ...(originalRewritesResult.beforeFiles || [])],\n      };\n    }\n  };\n}\n","import { debug, isMatchingPattern, parseSemver } from '@sentry/core';\nimport { getSentryRelease } from '@sentry/node';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport { createRouteManifest } from '../manifest/createRouteManifest';\nimport type { RouteManifest } from '../manifest/types';\nimport type { NextConfigObject, SentryBuildOptions } from '../types';\nimport { requiresInstrumentationHook } from '../util';\nimport { getGitRevision, getInstrumentationClientFileContents } from './buildTime';\nimport { resolveTunnelRoute, setUpTunnelRewriteRules } from './tunnel';\n\nlet showedExportModeTunnelWarning = false;\nlet showedExperimentalBuildModeWarning = false;\n\n/**\n * Resolves the Sentry release name to use for build-time behavior.\n *\n * Note: if `release.create === false`, we avoid falling back to git to preserve build determinism.\n */\nexport function resolveReleaseName(userSentryOptions: SentryBuildOptions): string | undefined {\n  const shouldCreateRelease = userSentryOptions.release?.create !== false;\n  return shouldCreateRelease\n    ? (userSentryOptions.release?.name ?? getSentryRelease() ?? getGitRevision())\n    : userSentryOptions.release?.name;\n}\n\n/**\n * Applies tunnel-route rewrites, if configured.\n *\n * Note: this mutates `userSentryOptions` (to store the resolved tunnel route) and `incomingUserNextConfigObject`.\n */\nexport function maybeSetUpTunnelRouteRewriteRules(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): void {\n  if (!userSentryOptions.tunnelRoute) {\n    return;\n  }\n\n  if (incomingUserNextConfigObject.output === 'export') {\n    if (!showedExportModeTunnelWarning) {\n      showedExportModeTunnelWarning = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option',\n      );\n    }\n    return;\n  }\n\n  // Update the global options object to use the resolved value everywhere\n  const resolvedTunnelRoute = resolveTunnelRoute(userSentryOptions.tunnelRoute);\n  userSentryOptions.tunnelRoute = resolvedTunnelRoute || undefined;\n\n  setUpTunnelRewriteRules(incomingUserNextConfigObject, resolvedTunnelRoute);\n}\n\n/**\n * Handles Next's experimental build-mode warning/early return behavior.\n *\n * @returns `true` if Sentry config processing should be skipped for the current process invocation\n */\nexport function shouldReturnEarlyInExperimentalBuildMode(): boolean {\n  if (!process.argv.includes('--experimental-build-mode')) {\n    return false;\n  }\n\n  if (!showedExperimentalBuildModeWarning) {\n    showedExperimentalBuildModeWarning = true;\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode',\n    );\n  }\n\n  // Next.js v15.3.0-canary.1 splits the experimental build into two phases:\n  // 1. compile: Code compilation\n  // 2. generate: Environment variable inlining and prerendering (We don't instrument this phase, we inline in the compile phase)\n  //\n  // We assume a single \"full\" build and reruns Webpack instrumentation in both phases.\n  // During the generate step it collides with Next.js's inliner\n  // producing malformed JS and build failures.\n  // We skip Sentry processing during generate to avoid this issue.\n  return process.argv.includes('generate');\n}\n\n/**\n * Creates the route manifest used for client-side route name normalization, unless disabled.\n */\nexport function maybeCreateRouteManifest(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): RouteManifest | undefined {\n  // Handle deprecated option with warning\n  // eslint-disable-next-line deprecation/deprecation\n  if (userSentryOptions.disableManifestInjection) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead.',\n    );\n  }\n\n  // If explicitly disabled, skip\n  if (userSentryOptions.routeManifestInjection === false) {\n    return undefined;\n  }\n\n  // Still check the deprecated option if the new option is not set\n  // eslint-disable-next-line deprecation/deprecation\n  if (userSentryOptions.routeManifestInjection === undefined && userSentryOptions.disableManifestInjection) {\n    return undefined;\n  }\n\n  const manifest = createRouteManifest({\n    basePath: incomingUserNextConfigObject.basePath,\n  });\n\n  // Apply route exclusion filter if configured\n  const excludeFilter = userSentryOptions.routeManifestInjection?.exclude;\n  return filterRouteManifest(manifest, excludeFilter);\n}\n\ntype ExcludeFilter = ((route: string) => boolean) | (string | RegExp)[] | undefined;\n\n/**\n * Filters routes from the manifest based on the exclude filter.\n * (Exported only for testing)\n */\nexport function filterRouteManifest(manifest: RouteManifest, excludeFilter: ExcludeFilter): RouteManifest {\n  if (!excludeFilter) {\n    return manifest;\n  }\n\n  const shouldExclude = (route: string): boolean => {\n    if (typeof excludeFilter === 'function') {\n      return excludeFilter(route);\n    }\n\n    return excludeFilter.some(pattern => isMatchingPattern(route, pattern));\n  };\n\n  return {\n    staticRoutes: manifest.staticRoutes.filter(r => !shouldExclude(r.path)),\n    dynamicRoutes: manifest.dynamicRoutes.filter(r => !shouldExclude(r.path)),\n    isrRoutes: manifest.isrRoutes.filter(r => !shouldExclude(r)),\n  };\n}\n\n/**\n * Adds `experimental.clientTraceMetadata` for supported Next.js versions.\n */\nexport function maybeSetClientTraceMetadataOption(\n  incomingUserNextConfigObject: NextConfigObject,\n  nextJsVersion: string | undefined,\n): void {\n  // Add the `clientTraceMetadata` experimental option based on Next.js version. The option got introduced in Next.js version 15.0.0 (actually 14.3.0-canary.64).\n  // Adding the option on lower versions will cause Next.js to print nasty warnings we wouldn't confront our users with.\n  if (nextJsVersion) {\n    const { major, minor } = parseSemver(nextJsVersion);\n    if (major !== undefined && minor !== undefined && (major >= 15 || (major === 14 && minor >= 3))) {\n      incomingUserNextConfigObject.experimental = incomingUserNextConfigObject.experimental || {};\n      incomingUserNextConfigObject.experimental.clientTraceMetadata = [\n        'baggage',\n        'sentry-trace',\n        ...(incomingUserNextConfigObject.experimental?.clientTraceMetadata || []),\n      ];\n    }\n  } else {\n    // eslint-disable-next-line no-console\n    console.log(\n      \"[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.\",\n    );\n  }\n}\n\n/**\n * Ensures Next.js' `experimental.instrumentationHook` is set for versions which require it.\n */\nexport function maybeSetInstrumentationHookOption(\n  incomingUserNextConfigObject: NextConfigObject,\n  nextJsVersion: string | undefined,\n): void {\n  // From Next.js version (15.0.0-canary.124) onwards, Next.js does no longer require the `experimental.instrumentationHook` option and will\n  // print a warning when it is set, so we need to conditionally provide it for lower versions.\n  if (nextJsVersion && requiresInstrumentationHook(nextJsVersion)) {\n    if (incomingUserNextConfigObject.experimental?.instrumentationHook === false) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`.',\n      );\n    }\n    incomingUserNextConfigObject.experimental = {\n      instrumentationHook: true,\n      ...incomingUserNextConfigObject.experimental,\n    };\n    return;\n  }\n\n  if (nextJsVersion) {\n    return;\n  }\n\n  // If we cannot detect a Next.js version for whatever reason, the sensible default is to set the `experimental.instrumentationHook`, even though it may create a warning.\n  if (incomingUserNextConfigObject.experimental && 'instrumentationHook' in incomingUserNextConfigObject.experimental) {\n    if (incomingUserNextConfigObject.experimental.instrumentationHook === false) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`.',\n      );\n    }\n  } else {\n    // eslint-disable-next-line no-console\n    console.log(\n      \"[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`.\",\n    );\n    incomingUserNextConfigObject.experimental = {\n      instrumentationHook: true,\n      ...incomingUserNextConfigObject.experimental,\n    };\n  }\n}\n\n/**\n * Warns if the project has an `instrumentation-client` file but doesn't export `onRouterTransitionStart`.\n */\nexport function warnIfMissingOnRouterTransitionStartHook(userSentryOptions: SentryBuildOptions): void {\n  // We wanna check whether the user added a `onRouterTransitionStart` handler to their client instrumentation file.\n  const instrumentationClientFileContents = getInstrumentationClientFileContents();\n  if (\n    instrumentationClientFileContents !== undefined &&\n    !instrumentationClientFileContents.includes('onRouterTransitionStart') &&\n    !userSentryOptions.suppressOnRouterTransitionStartWarning\n  ) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.',\n    );\n  }\n}\n\n/**\n * Parses the major Next.js version number from a semver string.\n */\nexport function getNextMajor(nextJsVersion: string | undefined): number | undefined {\n  if (!nextJsVersion) {\n    return undefined;\n  }\n\n  const { major } = parseSemver(nextJsVersion);\n  return major;\n}\n\n/**\n * Reads the Vercel crons configuration from vercel.json.\n * Returns undefined if vercel.json doesn't exist or doesn't contain crons.\n */\nfunction readVercelCronsConfig(): VercelCronsConfig {\n  try {\n    const vercelJsonPath = path.join(process.cwd(), 'vercel.json');\n    const vercelJsonContents = fs.readFileSync(vercelJsonPath, 'utf8');\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    const cronsConfig = JSON.parse(vercelJsonContents).crons as VercelCronsConfig;\n\n    if (cronsConfig && Array.isArray(cronsConfig) && cronsConfig.length > 0) {\n      return cronsConfig;\n    }\n    return undefined;\n  } catch (e) {\n    if ((e as { code: string }).code === 'ENOENT') {\n      return undefined;\n    }\n    debug.error('[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation', e);\n    return undefined;\n  }\n}\n\n/** Strategy for Vercel cron monitoring instrumentation */\nexport type VercelCronsStrategy = 'spans' | 'wrapper';\n\nexport type VercelCronsConfigResult = {\n  /** The crons configuration from vercel.json, if available */\n  config: VercelCronsConfig;\n  /**\n   * The instrumentation strategy to use:\n   * - `spans`: New span-based approach (works for both App Router and Pages Router)\n   * - `wrapper`: Old wrapper-based approach (Pages Router only)\n   * - `undefined`: No cron monitoring enabled\n   */\n  strategy: VercelCronsStrategy | undefined;\n};\n\n/**\n * Reads and returns the Vercel crons configuration from vercel.json along with\n * information about which instrumentation approach to use.\n *\n * - `_experimental.vercelCronsMonitoring`: New span-based approach (works for both App Router and Pages Router)\n * - `automaticVercelMonitors`: Old wrapper-based approach (Pages Router only)\n *\n * If both are enabled, the new approach is preferred and a warning is logged.\n */\nexport function maybeGetVercelCronsConfig(userSentryOptions: SentryBuildOptions): VercelCronsConfigResult {\n  const result: VercelCronsConfigResult = { config: undefined, strategy: undefined };\n\n  if (!process.env.VERCEL) {\n    return result;\n  }\n\n  const experimentalEnabled = userSentryOptions._experimental?.vercelCronsMonitoring === true;\n  const legacyEnabled = userSentryOptions.webpack?.automaticVercelMonitors === true;\n\n  if (!experimentalEnabled && !legacyEnabled) {\n    return result;\n  }\n\n  const config = readVercelCronsConfig();\n  if (!config) {\n    return result;\n  }\n\n  result.config = config;\n\n  if (experimentalEnabled && legacyEnabled) {\n    debug.warn(\n      \"[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. \" +\n        \"Using the new span-based approach from '_experimental.vercelCronsMonitoring'. \" +\n        \"You can remove 'webpack.automaticVercelMonitors' from your config.\",\n    );\n    result.strategy = 'spans';\n  } else if (experimentalEnabled) {\n    debug.log(\n      '[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation.',\n    );\n    result.strategy = 'spans';\n  } else {\n    debug.log(\n      \"[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config.\",\n    );\n    result.strategy = 'wrapper';\n  }\n\n  return result;\n}\n","import type { NextConfigObject, SentryBuildOptions } from '../types';\nimport { getNextjsVersion } from '../util';\nimport { setUpBuildTimeVariables } from './buildTime';\nimport { migrateDeprecatedWebpackOptions } from './deprecatedWebpackOptions';\nimport {\n  getBundlerInfo,\n  getServerExternalPackagesPatch,\n  getTurbopackPatch,\n  getWebpackPatch,\n  maybeConstructTurbopackConfig,\n  maybeEnableTurbopackSourcemaps,\n  maybeSetUpRunAfterProductionCompileHook,\n  maybeWarnAboutUnsupportedRunAfterProductionCompileHook,\n  maybeWarnAboutUnsupportedTurbopack,\n  resolveUseRunAfterProductionCompileHookOption,\n} from './getFinalConfigObjectBundlerUtils';\nimport {\n  getNextMajor,\n  maybeCreateRouteManifest,\n  maybeGetVercelCronsConfig,\n  maybeSetClientTraceMetadataOption,\n  maybeSetInstrumentationHookOption,\n  maybeSetUpTunnelRouteRewriteRules,\n  resolveReleaseName,\n  shouldReturnEarlyInExperimentalBuildMode,\n  warnIfMissingOnRouterTransitionStartHook,\n} from './getFinalConfigObjectUtils';\n\n/**\n * Materializes the final Next.js config object with Sentry's build-time integrations applied.\n *\n * Note: this mutates both `incomingUserNextConfigObject` and `userSentryOptions` (to apply defaults/migrations).\n */\nexport function getFinalConfigObject(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): NextConfigObject {\n  migrateDeprecatedWebpackOptions(userSentryOptions);\n  const releaseName = resolveReleaseName(userSentryOptions);\n\n  maybeSetUpTunnelRouteRewriteRules(incomingUserNextConfigObject, userSentryOptions);\n\n  if (shouldReturnEarlyInExperimentalBuildMode()) {\n    return incomingUserNextConfigObject;\n  }\n\n  const routeManifest = maybeCreateRouteManifest(incomingUserNextConfigObject, userSentryOptions);\n  const vercelCronsConfigResult = maybeGetVercelCronsConfig(userSentryOptions);\n  setUpBuildTimeVariables(incomingUserNextConfigObject, userSentryOptions, releaseName);\n\n  const nextJsVersion = getNextjsVersion();\n  const nextMajor = getNextMajor(nextJsVersion);\n\n  maybeSetClientTraceMetadataOption(incomingUserNextConfigObject, nextJsVersion);\n  maybeSetInstrumentationHookOption(incomingUserNextConfigObject, nextJsVersion);\n  warnIfMissingOnRouterTransitionStartHook(userSentryOptions);\n\n  const bundlerInfo = getBundlerInfo(nextJsVersion);\n  maybeWarnAboutUnsupportedTurbopack(nextJsVersion, bundlerInfo);\n  maybeWarnAboutUnsupportedRunAfterProductionCompileHook(nextJsVersion, userSentryOptions, bundlerInfo);\n\n  const turboPackConfig = maybeConstructTurbopackConfig(\n    incomingUserNextConfigObject,\n    userSentryOptions,\n    routeManifest,\n    nextJsVersion,\n    bundlerInfo,\n    vercelCronsConfigResult,\n  );\n\n  const shouldUseRunAfterProductionCompileHook = resolveUseRunAfterProductionCompileHookOption(\n    userSentryOptions,\n    bundlerInfo,\n  );\n\n  maybeSetUpRunAfterProductionCompileHook({\n    incomingUserNextConfigObject,\n    userSentryOptions,\n    releaseName,\n    nextJsVersion,\n    bundlerInfo,\n    turboPackConfig,\n    shouldUseRunAfterProductionCompileHook,\n  });\n\n  maybeEnableTurbopackSourcemaps(incomingUserNextConfigObject, userSentryOptions, bundlerInfo);\n\n  return {\n    ...incomingUserNextConfigObject,\n    ...getServerExternalPackagesPatch(incomingUserNextConfigObject, nextMajor),\n    ...getWebpackPatch({\n      incomingUserNextConfigObject,\n      userSentryOptions,\n      releaseName,\n      routeManifest,\n      nextJsVersion,\n      shouldUseRunAfterProductionCompileHook,\n      bundlerInfo,\n      vercelCronsConfigResult,\n    }),\n    ...getTurbopackPatch(bundlerInfo, turboPackConfig),\n  };\n}\n","import { isThenable } from '@sentry/core';\nimport type { ExportedNextConfig as NextConfig, NextConfigFunction, SentryBuildOptions } from '../types';\nimport { DEFAULT_SERVER_EXTERNAL_PACKAGES } from './constants';\nimport { getFinalConfigObject } from './getFinalConfigObject';\n\nexport { DEFAULT_SERVER_EXTERNAL_PACKAGES };\n\n/**\n * Wraps a user's Next.js config and applies Sentry build-time behavior (instrumentation + sourcemap upload).\n *\n * Supports both object and function Next.js configs.\n *\n * @param nextConfig - The user's exported Next.js config\n * @param sentryBuildOptions - Options to configure Sentry's build-time behavior\n * @returns The wrapped Next.js config (same shape as the input)\n */\nexport function withSentryConfig(nextConfig?: C, sentryBuildOptions: SentryBuildOptions = {}): C {\n  const castNextConfig = (nextConfig as NextConfig) || {};\n  if (typeof castNextConfig === 'function') {\n    return function (this: unknown, ...webpackConfigFunctionArgs: unknown[]): ReturnType {\n      const maybePromiseNextConfig: ReturnType = castNextConfig.apply(\n        this,\n        webpackConfigFunctionArgs,\n      );\n\n      if (isThenable(maybePromiseNextConfig)) {\n        return maybePromiseNextConfig.then(promiseResultNextConfig => {\n          return getFinalConfigObject(promiseResultNextConfig, sentryBuildOptions);\n        });\n      }\n\n      return getFinalConfigObject(maybePromiseNextConfig, sentryBuildOptions);\n    } as C;\n  } else {\n    return getFinalConfigObject(castNextConfig, sentryBuildOptions) as C;\n  }\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","var UNKNOWN_FUNCTION = '';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction parse(stackString) {\n  var lines = stackString.split('\\n');\n  return lines.reduce(function (stack, line) {\n    var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n    if (parseResult) {\n      stack.push(parseResult);\n    }\n\n    return stack;\n  }, []);\n}\nvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n  var parts = chromeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n  var submatch = chromeEvalRe.exec(parts[2]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line/column number\n    parts[2] = submatch[1]; // url\n\n    parts[3] = submatch[2]; // line\n\n    parts[4] = submatch[3]; // column\n  }\n\n  return {\n    file: !isNative ? parts[2] : null,\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: isNative ? [parts[2]] : [],\n    lineNumber: parts[3] ? +parts[3] : null,\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n  var parts = winjsRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n  var parts = geckoRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n  var submatch = geckoEvalRe.exec(parts[3]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line number\n    parts[3] = submatch[1];\n    parts[4] = submatch[2];\n    parts[5] = null; // no column when eval\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: parts[2] ? parts[2].split(',') : [],\n    lineNumber: parts[4] ? +parts[4] : null,\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n  var parts = javaScriptCoreRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[4],\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n  var parts = nodeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nexport { parse };\n","import type { Event, EventHint } from '@sentry/core';\nimport { debug, GLOBAL_OBJ, parseSemver, suppressTracing } from '@sentry/core';\nimport type { StackFrame } from 'stacktrace-parser';\nimport * as stackTraceParser from 'stacktrace-parser';\nimport { DEBUG_BUILD } from './debug-build';\n\ntype OriginalStackFrameResponse = {\n  originalStackFrame: StackFrame;\n  originalCodeFrame: string | null;\n  sourcePackage?: string;\n};\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryBasePath?: string;\n  _sentryNextJsVersion: string | undefined;\n};\n\n/**\n * Constructs the base URL for the Next.js dev server, including the port and base path.\n * Returns only the base path when running in the browser (client-side) for relative URLs.\n */\nfunction getDevServerBaseUrl(): string {\n  let basePath = process.env._sentryBasePath ?? globalWithInjectedValues._sentryBasePath ?? '';\n\n  // Prefix the basepath with a slash if it doesn't have one\n  if (basePath !== '' && !basePath.match(/^\\//)) {\n    basePath = `/${basePath}`;\n  }\n\n  // eslint-disable-next-line no-restricted-globals\n  if (typeof window !== 'undefined') {\n    return basePath;\n  }\n\n  const devServerPort = process.env.PORT || '3000';\n  return `http://localhost:${devServerPort}${basePath}`;\n}\n\n/**\n * Fetches a URL with a 3-second timeout using AbortController.\n */\nasync function fetchWithTimeout(url: string, options: RequestInit = {}): Promise {\n  const controller = new AbortController();\n  const timer = setTimeout(() => controller.abort(), 3000);\n\n  return suppressTracing(() =>\n    fetch(url, {\n      ...options,\n      signal: controller.signal,\n    }).finally(() => {\n      clearTimeout(timer);\n    }),\n  );\n}\n\n/**\n * Event processor that will symbolicate errors by using the webpack/nextjs dev server that is used to show stack traces\n * in the dev overlay.\n */\nexport async function devErrorSymbolicationEventProcessor(event: Event, hint: EventHint): Promise {\n  // Filter out spans for requests resolving source maps for stack frames in dev mode\n  if (event.type === 'transaction') {\n    event.spans = event.spans?.filter(span => {\n      const httpUrlAttribute: unknown = span.data?.['http.url'];\n      if (typeof httpUrlAttribute === 'string') {\n        return !httpUrlAttribute.includes('__nextjs_original-stack-frame'); // could also be __nextjs_original-stack-frames (plural)\n      }\n\n      return true;\n    });\n  }\n\n  // Due to changes across Next.js versions, there are a million things that can go wrong here so we just try-catch the\n  // entire event processor. Symbolicated stack traces are just a nice to have.\n  try {\n    // oxlint-disable-next-line typescript/prefer-optional-chain\n    if (hint.originalException && hint.originalException instanceof Error && hint.originalException.stack) {\n      const frames = stackTraceParser.parse(hint.originalException.stack);\n      const nextJsVersion = globalWithInjectedValues._sentryNextJsVersion;\n\n      // If we for whatever reason don't have a Next.js version,\n      // we don't want to symbolicate as this previously lead to infinite loops\n      if (!nextJsVersion) {\n        return event;\n      }\n\n      const parsedNextjsVersion = parseSemver(nextJsVersion);\n\n      let resolvedFrames: ({\n        originalCodeFrame: string | null;\n        originalStackFrame: (StackFrame & { line1?: number; column1?: number }) | null;\n      } | null)[];\n\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      if (parsedNextjsVersion.major! > 15 || (parsedNextjsVersion.major === 15 && parsedNextjsVersion.minor! >= 2)) {\n        const r = await resolveStackFrames(frames);\n        if (r === null) {\n          return event;\n        }\n        resolvedFrames = r;\n      } else {\n        resolvedFrames = await Promise.all(\n          frames.map(frame => resolveStackFrame(frame, hint.originalException as Error)),\n        );\n      }\n\n      if (event.exception?.values?.[0]?.stacktrace?.frames) {\n        event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames.map(\n          (frame, i, frames) => {\n            const resolvedFrame = resolvedFrames[frames.length - 1 - i];\n            if (!resolvedFrame?.originalStackFrame || !resolvedFrame.originalCodeFrame) {\n              return {\n                ...frame,\n                platform: frame.filename?.startsWith('node:internal') ? 'nodejs' : undefined, // simple hack that will prevent a source mapping error from showing up\n                in_app: false,\n              };\n            }\n\n            const { contextLine, preContextLines, postContextLines } = parseOriginalCodeFrame(\n              resolvedFrame.originalCodeFrame,\n            );\n\n            return {\n              ...frame,\n              pre_context: preContextLines,\n              context_line: contextLine,\n              post_context: postContextLines,\n              function: resolvedFrame.originalStackFrame.methodName,\n              filename: resolvedFrame.originalStackFrame.file\n                ? stripWebpackInternalPrefix(resolvedFrame.originalStackFrame.file)\n                : undefined,\n              lineno:\n                resolvedFrame.originalStackFrame.lineNumber || resolvedFrame.originalStackFrame.line1 || undefined,\n              colno: resolvedFrame.originalStackFrame.column || resolvedFrame.originalStackFrame.column1 || undefined,\n            };\n          },\n        );\n      }\n    }\n  } catch {\n    return event;\n  }\n\n  return event;\n}\n\nasync function resolveStackFrame(\n  frame: StackFrame,\n  error: Error,\n): Promise<{ originalCodeFrame: string | null; originalStackFrame: StackFrame | null } | null> {\n  try {\n    if (!(frame.file?.startsWith('webpack-internal:') || frame.file?.startsWith('file:'))) {\n      return null;\n    }\n\n    const params = new URLSearchParams();\n    params.append('isServer', String(false)); // doesn't matter since it is overwritten by isAppDirectory\n    params.append('isEdgeServer', String(false)); // doesn't matter since it is overwritten by isAppDirectory\n    params.append('isAppDirectory', String(true)); // will force server to do more thorough checking\n    params.append('errorMessage', error.toString());\n    Object.keys(frame).forEach(key => {\n      params.append(key, (frame[key as keyof typeof frame] ?? '').toString());\n    });\n\n    const baseUrl = getDevServerBaseUrl();\n    const res = await fetchWithTimeout(`${baseUrl}/__nextjs_original-stack-frame?${params.toString()}`);\n\n    if (!res.ok || res.status === 204) {\n      return null;\n    }\n\n    const body: OriginalStackFrameResponse = await res.json();\n\n    return {\n      originalCodeFrame: body.originalCodeFrame,\n      originalStackFrame: body.originalStackFrame,\n    };\n  } catch (e) {\n    DEBUG_BUILD && debug.error('Failed to symbolicate event with Next.js dev server', e);\n    return null;\n  }\n}\n\nasync function resolveStackFrames(\n  frames: StackFrame[],\n): Promise<{ originalCodeFrame: string | null; originalStackFrame: StackFrame | null }[] | null> {\n  try {\n    const postBody = {\n      frames: frames\n        .filter(frame => {\n          return !!frame.file;\n        })\n        .map(frame => {\n          // https://github.com/vercel/next.js/blob/df0573a478baa8b55478a7963c473dddd59a5e40/packages/next/src/client/components/react-dev-overlay/server/middleware-turbopack.ts#L129\n          // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n          frame.file = frame.file!.replace(/^rsc:\\/\\/React\\/[^/]+\\//, '').replace(/\\?\\d+$/, '');\n\n          return {\n            file: frame.file,\n            methodName: frame.methodName ?? '',\n            arguments: [],\n            lineNumber: frame.lineNumber ?? 0,\n            column: frame.column ?? 0,\n            line1: frame.lineNumber ?? 0,\n            column1: frame.column ?? 0,\n          };\n        }),\n      isServer: false,\n      isEdgeServer: false,\n      isAppDirectory: true,\n    };\n\n    const baseUrl = getDevServerBaseUrl();\n    const res = await fetchWithTimeout(`${baseUrl}/__nextjs_original-stack-frames`, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      body: JSON.stringify(postBody),\n    });\n\n    if (!res.ok || res.status === 204) {\n      return null;\n    }\n\n    const body: { value: OriginalStackFrameResponse }[] = await res.json();\n\n    return body.map(frame => {\n      return {\n        originalCodeFrame: frame.value.originalCodeFrame,\n        originalStackFrame: frame.value.originalStackFrame,\n      };\n    });\n  } catch (e) {\n    DEBUG_BUILD && debug.error('Failed to symbolicate event with Next.js dev server', e);\n    return null;\n  }\n}\n\nfunction parseOriginalCodeFrame(codeFrame: string): {\n  contextLine: string | undefined;\n  preContextLines: string[];\n  postContextLines: string[];\n} {\n  const preProcessedLines = codeFrame\n    // Remove ASCII control characters that are used for syntax highlighting\n    .replace(\n      // eslint-disable-next-line no-control-regex\n      /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, // https://stackoverflow.com/a/29497680\n      '',\n    )\n    .split('\\n')\n    // Remove line that is supposed to indicate where the error happened\n    .filter(line => !line.match(/^\\s*\\|/))\n    // Find the error line\n    .map(line => ({\n      line,\n      isErrorLine: !!line.match(/^>/),\n    }))\n    // Remove the leading part that is just for prettier output\n    .map(lineObj => ({\n      ...lineObj,\n      line: lineObj.line.replace(/^.*\\|/, ''),\n    }));\n\n  const preContextLines = [];\n  let contextLine: string | undefined = undefined;\n  const postContextLines = [];\n\n  let reachedContextLine = false;\n\n  for (const preProcessedLine of preProcessedLines) {\n    if (preProcessedLine.isErrorLine) {\n      contextLine = preProcessedLine.line;\n      reachedContextLine = true;\n    } else if (reachedContextLine) {\n      postContextLines.push(preProcessedLine.line);\n    } else {\n      preContextLines.push(preProcessedLine.line);\n    }\n  }\n\n  return {\n    contextLine,\n    preContextLines,\n    postContextLines,\n  };\n}\n\n/**\n * Strips webpack-internal prefixes from filenames to clean up stack traces.\n *\n * Examples:\n * - \"webpack-internal:///./components/file.tsx\" -> \"./components/file.tsx\"\n * - \"webpack-internal:///(app-pages-browser)/./components/file.tsx\" -> \"./components/file.tsx\"\n */\nfunction stripWebpackInternalPrefix(filename: string): string | undefined {\n  if (!filename) {\n    return filename;\n  }\n\n  const webpackInternalRegex = /^webpack-internal:(?:\\/+)?(?:\\([^)]*\\)\\/)?(.+)$/;\n  const match = filename.match(webpackInternalRegex);\n\n  return match ? match[1] : filename;\n}\n","/**\n * Returns an environment setting value determined by Vercel's `VERCEL_ENV` environment variable.\n *\n * @param isClient Flag to indicate whether to use the `NEXT_PUBLIC_` prefixed version of the environment variable.\n */\nexport function getVercelEnv(isClient: boolean): string | undefined {\n  const vercelEnvVar = isClient ? process.env.NEXT_PUBLIC_VERCEL_ENV : process.env.VERCEL_ENV;\n  return vercelEnvVar ? `vercel-${vercelEnvVar}` : undefined;\n}\n","export const ATTR_NEXT_SPAN_TYPE = 'next.span_type';\nexport const ATTR_NEXT_SPAN_NAME = 'next.span_name';\nexport const ATTR_NEXT_ROUTE = 'next.route';\nexport const ATTR_NEXT_SPAN_DESCRIPTION = 'next.span_description';\nexport const ATTR_NEXT_SEGMENT = 'next.segment';\n","/**\n * If this attribute is attached to a transaction, the Next.js SDK will drop that transaction.\n */\nexport const TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION = 'sentry.drop_transaction';\n\nexport const TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL = 'sentry.sentry_trace_backfill';\n\nexport const TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL = 'sentry.route_backfill';\n","// Note: This file is JS because it's used by the taskfile-swc.js file, which is JS.\n// Keep file changes in sync with the corresponding `.d.ts` files.\n\n/**\n * These are the minimum browser versions that we consider \"modern\" and thus compile for by default.\n * This list was generated using `pnpm browserslist \"baseline widely available\"` on 2025-10-01.\n */\nconst MODERN_BROWSERSLIST_TARGET = [\n  'chrome 111',\n  'edge 111',\n  'firefox 111',\n  'safari 16.4',\n]\n\nmodule.exports = MODERN_BROWSERSLIST_TARGET\n","export const UNDERSCORE_NOT_FOUND_ROUTE = '/_not-found'\nexport const UNDERSCORE_NOT_FOUND_ROUTE_ENTRY = `${UNDERSCORE_NOT_FOUND_ROUTE}/page`\nexport const UNDERSCORE_GLOBAL_ERROR_ROUTE = '/_global-error'\nexport const UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY = `${UNDERSCORE_GLOBAL_ERROR_ROUTE}/page`\n","import MODERN_BROWSERSLIST_TARGET from './modern-browserslist-target'\n\nexport { MODERN_BROWSERSLIST_TARGET }\n\nexport type ValueOf = Required[keyof T]\n\nexport const COMPILER_NAMES = {\n  client: 'client',\n  server: 'server',\n  edgeServer: 'edge-server',\n} as const\n\nexport type CompilerNameValues = ValueOf\n\nexport const COMPILER_INDEXES: {\n  [compilerKey in CompilerNameValues]: number\n} = {\n  [COMPILER_NAMES.client]: 0,\n  [COMPILER_NAMES.server]: 1,\n  [COMPILER_NAMES.edgeServer]: 2,\n} as const\n\n// Re-export entry constants for backward compatibility\nexport {\n  UNDERSCORE_NOT_FOUND_ROUTE,\n  UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n  UNDERSCORE_GLOBAL_ERROR_ROUTE,\n  UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY,\n} from './entry-constants'\n\nexport enum AdapterOutputType {\n  /**\n   * `PAGES` represents all the React pages that are under `pages/`.\n   */\n  PAGES = 'PAGES',\n\n  /**\n   * `PAGES_API` represents all the API routes under `pages/api/`.\n   */\n  PAGES_API = 'PAGES_API',\n  /**\n   * `APP_PAGE` represents all the React pages that are under `app/` with the\n   * filename of `page.{j,t}s{,x}`.\n   */\n  APP_PAGE = 'APP_PAGE',\n\n  /**\n   * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n   * filename of `route.{j,t}s{,x}`.\n   */\n  APP_ROUTE = 'APP_ROUTE',\n\n  /**\n   * `PRERENDER` represents an ISR enabled route that might\n   * have a seeded cache entry or fallback generated during build\n   */\n  PRERENDER = 'PRERENDER',\n\n  /**\n   * `STATIC_FILE` represents a static file (ie /_next/static)\n   */\n  STATIC_FILE = 'STATIC_FILE',\n\n  /**\n   * `MIDDLEWARE` represents the middleware output if present\n   */\n  MIDDLEWARE = 'MIDDLEWARE',\n}\n\nexport const PHASE_EXPORT = 'phase-export'\nexport const PHASE_ANALYZE = 'phase-analyze'\nexport const PHASE_PRODUCTION_BUILD = 'phase-production-build'\nexport const PHASE_PRODUCTION_SERVER = 'phase-production-server'\nexport const PHASE_DEVELOPMENT_SERVER = 'phase-development-server'\nexport const PHASE_TEST = 'phase-test'\nexport const PHASE_INFO = 'phase-info'\n\nexport type PHASE_TYPE =\n  | typeof PHASE_INFO\n  | typeof PHASE_TEST\n  | typeof PHASE_EXPORT\n  | typeof PHASE_ANALYZE\n  | typeof PHASE_PRODUCTION_BUILD\n  | typeof PHASE_PRODUCTION_SERVER\n  | typeof PHASE_DEVELOPMENT_SERVER\n\nexport const PAGES_MANIFEST = 'pages-manifest.json'\nexport const WEBPACK_STATS = 'webpack-stats.json'\nexport const APP_PATHS_MANIFEST = 'app-paths-manifest.json'\nexport const APP_PATH_ROUTES_MANIFEST = 'app-path-routes-manifest.json'\nexport const BUILD_MANIFEST = 'build-manifest.json'\nexport const FUNCTIONS_CONFIG_MANIFEST = 'functions-config-manifest.json'\nexport const SUBRESOURCE_INTEGRITY_MANIFEST = 'subresource-integrity-manifest'\nexport const NEXT_FONT_MANIFEST = 'next-font-manifest'\nexport const EXPORT_MARKER = 'export-marker.json'\nexport const EXPORT_DETAIL = 'export-detail.json'\nexport const PRERENDER_MANIFEST = 'prerender-manifest.json'\nexport const ROUTES_MANIFEST = 'routes-manifest.json'\nexport const IMAGES_MANIFEST = 'images-manifest.json'\nexport const SERVER_FILES_MANIFEST = 'required-server-files'\nexport const DEV_CLIENT_PAGES_MANIFEST = '_devPagesManifest.json'\nexport const MIDDLEWARE_MANIFEST = 'middleware-manifest.json'\nexport const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST =\n  '_clientMiddlewareManifest.json'\nexport const TURBOPACK_CLIENT_BUILD_MANIFEST = 'client-build-manifest.json'\nexport const DEV_CLIENT_MIDDLEWARE_MANIFEST = '_devMiddlewareManifest.json'\nexport const REACT_LOADABLE_MANIFEST = 'react-loadable-manifest.json'\nexport const SERVER_DIRECTORY = 'server'\nexport const CONFIG_FILES = [\n  'next.config.js',\n  'next.config.mjs',\n  'next.config.ts',\n  // process.features can be undefined on Edge runtime\n  // TODO: Remove `as any` once we bump @types/node to v22.10.0+\n  ...((process?.features as any)?.typescript ? ['next.config.mts'] : []),\n]\nexport const BUILD_ID_FILE = 'BUILD_ID'\nexport const BLOCKED_PAGES = ['/_document', '/_app', '/_error']\nexport const CLIENT_PUBLIC_FILES_PATH = 'public'\nexport const CLIENT_STATIC_FILES_PATH = 'static'\nexport const STRING_LITERAL_DROP_BUNDLE = '__NEXT_DROP_CLIENT_FILE__'\nexport const NEXT_BUILTIN_DOCUMENT = '__NEXT_BUILTIN_DOCUMENT__'\nexport const BARREL_OPTIMIZATION_PREFIX = '__barrel_optimize__'\n\n// server/[entry]/page_client-reference-manifest.js\nexport const CLIENT_REFERENCE_MANIFEST = 'client-reference-manifest'\n// server/server-reference-manifest\nexport const SERVER_REFERENCE_MANIFEST = 'server-reference-manifest'\n// server/middleware-build-manifest.js\nexport const MIDDLEWARE_BUILD_MANIFEST = 'middleware-build-manifest'\n// server/middleware-react-loadable-manifest.js\nexport const MIDDLEWARE_REACT_LOADABLE_MANIFEST =\n  'middleware-react-loadable-manifest'\n// server/interception-route-rewrite-manifest.js\nexport const INTERCEPTION_ROUTE_REWRITE_MANIFEST =\n  'interception-route-rewrite-manifest'\n// server/dynamic-css-manifest.js\nexport const DYNAMIC_CSS_MANIFEST = 'dynamic-css-manifest'\n\n// static/runtime/main.js\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN = `main`\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = `${CLIENT_STATIC_FILES_RUNTIME_MAIN}-app`\n// next internal client components chunk for layouts\nexport const APP_CLIENT_INTERNALS = 'app-pages-internals'\n// static/runtime/react-refresh.js\nexport const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = `react-refresh`\n// static/runtime/webpack.js\nexport const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = `webpack`\n// static/runtime/polyfills.js\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = 'polyfills'\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL = Symbol(\n  CLIENT_STATIC_FILES_RUNTIME_POLYFILLS\n)\nexport const DEFAULT_RUNTIME_WEBPACK = 'webpack-runtime'\nexport const EDGE_RUNTIME_WEBPACK = 'edge-runtime-webpack'\nexport const STATIC_PROPS_ID = '__N_SSG'\nexport const SERVER_PROPS_ID = '__N_SSP'\nexport const DEFAULT_SERIF_FONT = {\n  name: 'Times New Roman',\n  xAvgCharWidth: 821,\n  azAvgWidth: 854.3953488372093,\n  unitsPerEm: 2048,\n}\nexport const DEFAULT_SANS_SERIF_FONT = {\n  name: 'Arial',\n  xAvgCharWidth: 904,\n  azAvgWidth: 934.5116279069767,\n  unitsPerEm: 2048,\n}\nexport const STATIC_STATUS_PAGES = ['/500']\nexport const TRACE_OUTPUT_VERSION = 1\n// in `MB`\nexport const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000\n\nexport const RSC_MODULE_TYPES = {\n  client: 'client',\n  server: 'server',\n} as const\n\n// comparing\n// https://nextjs.org/docs/api-reference/edge-runtime\n// with\n// https://nodejs.org/docs/latest/api/globals.html\nexport const EDGE_UNSUPPORTED_NODE_APIS = [\n  'clearImmediate',\n  'setImmediate',\n  'BroadcastChannel',\n  'ByteLengthQueuingStrategy',\n  'CompressionStream',\n  'CountQueuingStrategy',\n  'DecompressionStream',\n  'DomException',\n  'MessageChannel',\n  'MessageEvent',\n  'MessagePort',\n  'ReadableByteStreamController',\n  'ReadableStreamBYOBRequest',\n  'ReadableStreamDefaultController',\n  'TransformStreamDefaultController',\n  'WritableStreamDefaultController',\n]\n\nexport const SYSTEM_ENTRYPOINTS = new Set([\n  CLIENT_STATIC_FILES_RUNTIME_MAIN,\n  CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n  CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,\n])\n","module.exports = require('./dist/shared/lib/constants')\n","import { PHASE_PRODUCTION_BUILD } from 'next/constants';\n\n/**\n * Decide if the currently running process is part of the build phase or happening at runtime.\n */\nexport function isBuild(): boolean {\n  return process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n}\n","import type { Span } from '@sentry/core';\nimport { debug, fill, flush, GLOBAL_OBJ, setHttpStatus, vercelWaitUntil } from '@sentry/core';\nimport type { ServerResponse } from 'http';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ResponseEndMethod, WrappedResponseEndMethod } from '../types';\n\n/**\n * Wrap `res.end()` so that it ends the span and flushes events before letting the request finish.\n *\n * Note: This wraps a sync method with an async method. While in general that's not a great idea in terms of keeping\n * things in the right order, in this case it's safe, because the native `.end()` actually *is* (effectively) async, and\n * its run actually *is* (literally) awaited, just manually so (which reflects the fact that the core of the\n * request/response code in Node by far predates the introduction of `async`/`await`). When `.end()` is done, it emits\n * the `prefinish` event, and only once that fires does request processing continue. See\n * https://github.com/nodejs/node/commit/7c9b607048f13741173d397795bac37707405ba7.\n *\n * Also note: `res.end()` isn't called until *after* all response data and headers have been sent, so blocking inside of\n * `end` doesn't delay data getting to the end user. See\n * https://nodejs.org/api/http.html#responseenddata-encoding-callback.\n *\n * @param span The span tracking the request\n * @param res: The request's corresponding response\n */\nexport function autoEndSpanOnResponseEnd(span: Span, res: ServerResponse): void {\n  const wrapEndMethod = (origEnd: ResponseEndMethod): WrappedResponseEndMethod => {\n    return function sentryWrappedEnd(this: ServerResponse, ...args: unknown[]) {\n      finishSpan(span, this);\n      return origEnd.call(this, ...args);\n    };\n  };\n\n  // Prevent double-wrapping\n  // res.end may be undefined during build when using `next export` to statically export a Next.js app\n  if (res.end && !(res.end as WrappedResponseEndMethod).__sentry_original__) {\n    fill(res, 'end', wrapEndMethod);\n  }\n}\n\n/** Finish the given response's span and set HTTP status data */\nexport function finishSpan(span: Span, res: ServerResponse): void {\n  setHttpStatus(span, res.statusCode);\n  span.end();\n}\n\n/**\n * Flushes pending Sentry events with a 2 second timeout and in a way that cannot create unhandled promise rejections.\n */\nexport async function flushSafelyWithTimeout(): Promise {\n  try {\n    DEBUG_BUILD && debug.log('Flushing events...');\n    await flush(2000);\n    DEBUG_BUILD && debug.log('Done flushing events');\n  } catch (e) {\n    DEBUG_BUILD && debug.log('Error while flushing events:\\n', e);\n  }\n}\n\n/**\n * Uses platform-specific waitUntil function to wait for the provided task to complete without blocking.\n */\nexport function waitUntil(task: Promise): void {\n  // If deployed on Cloudflare, use the Cloudflare waitUntil function to flush the events\n  if (isCloudflareWaitUntilAvailable()) {\n    cloudflareWaitUntil(task);\n    return;\n  }\n\n  // otherwise, use vercel's\n  vercelWaitUntil(task);\n}\n\ntype MinimalCloudflareContext = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  waitUntil(promise: Promise): void;\n};\n\n/**\n * Gets the Cloudflare context from the global object.\n * Relevant to opennext\n * https://github.com/opennextjs/opennextjs-cloudflare/blob/b53a046bd5c30e94a42e36b67747cefbf7785f9a/packages/cloudflare/src/cli/templates/init.ts#L17\n */\nfunction _getOpenNextCloudflareContext(): MinimalCloudflareContext | undefined {\n  const openNextCloudflareContextSymbol = Symbol.for('__cloudflare-context__');\n\n  return (\n    GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n      [openNextCloudflareContextSymbol]?: {\n        ctx: MinimalCloudflareContext;\n      };\n    }\n  )[openNextCloudflareContextSymbol]?.ctx;\n}\n\n/**\n * Function that delays closing of a Cloudflare lambda until the provided promise is resolved.\n */\nexport function cloudflareWaitUntil(task: Promise): void {\n  _getOpenNextCloudflareContext()?.waitUntil(task);\n}\n\n/**\n * Checks if the Cloudflare waitUntil function is available globally.\n */\nexport function isCloudflareWaitUntilAvailable(): boolean {\n  return typeof _getOpenNextCloudflareContext()?.waitUntil === 'function';\n}\n","import { getSanitizedUrlStringFromUrlObject, parseStringToURLObject } from '@sentry/core';\n\ntype ComponentRouteParams = Record | undefined;\ntype HeadersDict = Record | undefined;\n\nconst HeaderKeys = {\n  FORWARDED_PROTO: 'x-forwarded-proto',\n  FORWARDED_HOST: 'x-forwarded-host',\n  HOST: 'host',\n  REFERER: 'referer',\n} as const;\n\n/**\n * Replaces route parameters in a path template with their values\n * @param path - The path template containing parameters in [paramName] format\n * @param params - Optional route parameters to replace in the template\n * @returns The path with parameters replaced\n */\nexport function substituteRouteParams(path: string, params?: ComponentRouteParams): string {\n  if (!params || typeof params !== 'object') return path;\n\n  let resultPath = path;\n  for (const [key, value] of Object.entries(params)) {\n    resultPath = resultPath.split(`[${key}]`).join(encodeURIComponent(value));\n  }\n  return resultPath;\n}\n\n/**\n * Normalizes a path by removing route groups\n * @param path - The path to normalize\n * @returns The normalized path\n */\nexport function sanitizeRoutePath(path: string): string {\n  const cleanedSegments = path\n    .split('/')\n    .filter(segment => segment && !(segment.startsWith('(') && segment.endsWith(')')));\n\n  return cleanedSegments.length > 0 ? `/${cleanedSegments.join('/')}` : '/';\n}\n\n/**\n * Constructs a full URL from the component route, parameters, and headers.\n *\n * @param componentRoute - The route template to construct the URL from\n * @param params - Optional route parameters to replace in the template\n * @param headersDict - Optional headers containing protocol and host information\n * @param pathname - Optional pathname coming from parent span \"http.target\"\n * @returns A sanitized URL string\n */\nexport function buildUrlFromComponentRoute(\n  componentRoute: string,\n  params?: ComponentRouteParams,\n  headersDict?: HeadersDict,\n  pathname?: string,\n): string {\n  const parameterizedPath = substituteRouteParams(componentRoute, params);\n  // If available, the pathname from the http.target of the HTTP request server span takes precedence over the parameterized path.\n  // Spans such as generateMetadata and Server Component rendering are typically direct children of that span.\n  const path = pathname ?? sanitizeRoutePath(parameterizedPath);\n\n  const protocol = headersDict?.[HeaderKeys.FORWARDED_PROTO];\n  const host = headersDict?.[HeaderKeys.FORWARDED_HOST] || headersDict?.[HeaderKeys.HOST];\n\n  if (!protocol || !host) {\n    return path;\n  }\n\n  const fullUrl = `${protocol}://${host}${path}`;\n\n  const urlObject = parseStringToURLObject(fullUrl);\n  if (!urlObject) {\n    return path;\n  }\n\n  return getSanitizedUrlStringFromUrlObject(urlObject);\n}\n\n/**\n * Returns a sanitized URL string from the referer header if it exists and is valid.\n *\n * @param headersDict - Optional headers containing the referer\n * @returns A sanitized URL string or undefined if referer is missing/invalid\n */\nexport function extractSanitizedUrlFromRefererHeader(headersDict?: HeadersDict): string | undefined {\n  const referer = headersDict?.[HeaderKeys.REFERER];\n  if (!referer) {\n    return undefined;\n  }\n\n  try {\n    const refererUrl = new URL(referer);\n    return getSanitizedUrlStringFromUrlObject(refererUrl);\n  } catch {\n    return undefined;\n  }\n}\n\n/**\n * Returns a sanitized URL string using the referer header if available,\n * otherwise constructs the URL from the component route, params, and headers.\n *\n * @param componentRoute - The route template to construct the URL from\n * @param params - Optional route parameters to replace in the template\n * @param headersDict - Optional headers containing protocol, host, and referer\n * @param pathname - Optional pathname coming from root span \"http.target\"\n * @returns A sanitized URL string\n */\nexport function getSanitizedRequestUrl(\n  componentRoute: string,\n  params?: ComponentRouteParams,\n  headersDict?: HeadersDict,\n  pathname?: string,\n): string {\n  const refererUrl = extractSanitizedUrlFromRefererHeader(headersDict);\n  if (refererUrl) {\n    return refererUrl;\n  }\n\n  return buildUrlFromComponentRoute(componentRoute, params, headersDict, pathname);\n}\n","import type { Event } from '@sentry/core';\nimport { getClient } from '@sentry/core';\nimport { getSanitizedRequestUrl } from './urls';\n\n/**\n * Sets the URL processing metadata for the event.\n */\nexport function setUrlProcessingMetadata(event: Event): void {\n  // Skip if not a server-side transaction\n  if (event.type !== 'transaction' || event.contexts?.trace?.op !== 'http.server' || !event.contexts?.trace?.data) {\n    return;\n  }\n\n  // Only add URL if sendDefaultPii is enabled, as URLs may contain PII\n  const client = getClient();\n  if (!client?.getOptions().sendDefaultPii) {\n    return;\n  }\n\n  const traceData = event.contexts.trace.data;\n\n  // Get the route from trace data\n  const componentRoute = traceData['next.route'] || traceData['http.route'];\n  const httpTarget = traceData['http.target'] as string | undefined;\n\n  if (!componentRoute) {\n    return;\n  }\n\n  // Extract headers\n  const isolationScopeData = event.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData();\n  const headersDict = isolationScopeData?.sdkProcessingMetadata?.normalizedRequest?.headers;\n\n  const url = getSanitizedRequestUrl(componentRoute, undefined, headersDict, httpTarget?.toString());\n\n  // Add URL to the isolation scope's normalizedRequest so requestDataIntegration picks it up\n  if (url && isolationScopeData?.sdkProcessingMetadata) {\n    isolationScopeData.sdkProcessingMetadata.normalizedRequest =\n      isolationScopeData.sdkProcessingMetadata.normalizedRequest || {};\n    isolationScopeData.sdkProcessingMetadata.normalizedRequest.url = url;\n  }\n}\n","import { defineIntegration, escapeStringForRegex, rewriteFramesIntegration } from '@sentry/core';\nimport * as path from 'path';\n\nexport const distDirRewriteFramesIntegration = defineIntegration(({ distDirName }: { distDirName: string }) => {\n  // nextjs always puts the build directory at the project root level, which is also where you run `next start` from, so\n  // we can read in the project directory from the currently running process\n  const distDirAbsPath = path.resolve(distDirName).replace(/(\\/|\\\\)$/, ''); // We strip trailing slashes because \"app:///_next\" also doesn't have one\n\n  // oxlint-disable-next-line sdk/no-regexp-constructor -- user input is escaped\n  const SOURCEMAP_FILENAME_REGEX = new RegExp(escapeStringForRegex(distDirAbsPath));\n\n  const rewriteFramesInstance = rewriteFramesIntegration({\n    iteratee: frame => {\n      frame.filename = frame.filename?.replace(SOURCEMAP_FILENAME_REGEX, 'app:///_next');\n      return frame;\n    },\n  });\n\n  return {\n    ...rewriteFramesInstance,\n    name: 'DistDirRewriteFrames',\n  };\n});\n","import type { Span, WebFetchHeaders } from '@sentry/core';\nimport { getClient, httpHeadersToSpanAttributes, winterCGHeadersToDict } from '@sentry/core';\n\n/**\n * Extracts HTTP request headers as span attributes and optionally applies them to a span.\n */\nexport function addHeadersAsAttributes(\n  headers: WebFetchHeaders | Headers | Record | undefined,\n  span?: Span,\n): Record {\n  if (!headers) {\n    return {};\n  }\n\n  const headersDict: Record =\n    headers instanceof Headers || (typeof headers === 'object' && 'get' in headers)\n      ? winterCGHeadersToDict(headers as Headers)\n      : headers;\n\n  const headerAttributes = httpHeadersToSpanAttributes(headersDict, getClient()?.getOptions().sendDefaultPii ?? false);\n\n  if (span) {\n    span.setAttributes(headerAttributes);\n  }\n\n  return headerAttributes;\n}\n","import { SEMATTRS_HTTP_TARGET } from '@opentelemetry/semantic-conventions';\nimport { getClient, GLOBAL_OBJ, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, type Span, type SpanAttributes } from '@sentry/core';\nimport { isSentryRequestSpan } from '@sentry/opentelemetry';\nimport { ATTR_NEXT_SPAN_TYPE } from '../nextSpanAttributes';\nimport { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached';\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryRewritesTunnelPath?: string;\n};\n\n/**\n * Drops spans for tunnel requests from middleware, fetch instrumentation, or BaseServer.handleRequest.\n * This catches:\n * 1. Requests to the local tunnel route (before rewrite) via middleware or BaseServer.handleRequest\n * 2. Requests to Sentry ingest (after rewrite) via fetch spans\n */\nexport function dropMiddlewareTunnelRequests(span: Span, attrs: SpanAttributes | undefined): void {\n  // When the user brings their own OTel setup (skipOpenTelemetrySetup: true), we should not\n  // mutate their spans with Sentry-internal attributes as it pollutes their tracing backends.\n  if ((getClient()?.getOptions() as { skipOpenTelemetrySetup?: boolean } | undefined)?.skipOpenTelemetrySetup) {\n    return;\n  }\n\n  // Only filter middleware spans, HTTP fetch spans, or BaseServer.handleRequest spans\n  const isMiddleware = attrs?.[ATTR_NEXT_SPAN_TYPE] === 'Middleware.execute';\n  // The fetch span could be originating from rewrites re-writing a tunnel request\n  // So we want to filter it out\n  const isFetchSpan = attrs?.[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] === 'auto.http.otel.node_fetch';\n  const isBaseServerHandleRequest = attrs?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest';\n\n  // If the span is not a middleware span, fetch span, or BaseServer.handleRequest span, return\n  if (!isMiddleware && !isFetchSpan && !isBaseServerHandleRequest) {\n    return;\n  }\n\n  // Check if this is either a tunnel route request or a Sentry ingest request\n  const isTunnel = isTunnelRouteSpan(attrs || {});\n  const isSentry = isSentryRequestSpan(span);\n\n  if (isTunnel || isSentry) {\n    // Mark the span to be dropped\n    span.setAttribute(TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION, true);\n  }\n}\n\n/**\n * Checks if a span's HTTP target matches the tunnel route.\n */\nfunction isTunnelRouteSpan(spanAttributes: Record): boolean {\n  const tunnelPath = globalWithInjectedValues._sentryRewritesTunnelPath || process.env._sentryRewritesTunnelPath;\n  if (!tunnelPath) {\n    return false;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  const httpTarget = spanAttributes[SEMATTRS_HTTP_TARGET];\n\n  if (typeof httpTarget === 'string') {\n    // Extract pathname from the target (e.g., \"/tunnel?o=123&p=456\" -> \"/tunnel\")\n    const pathname = httpTarget.split('?')[0] || '';\n\n    return pathname === tunnelPath || pathname.startsWith(`${tunnelPath}/`);\n  }\n\n  return false;\n}\n","import { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { PropagationContext, Span, SpanAttributes } from '@sentry/core';\nimport {\n  debug,\n  getActiveSpan,\n  getClient,\n  getRootSpan,\n  GLOBAL_OBJ,\n  Scope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  spanToJSON,\n  startNewTrace,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { ATTR_NEXT_SEGMENT, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../nextSpanAttributes';\nimport { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached';\n\nconst commonPropagationContextMap = new WeakMap();\n\nconst PAGE_SEGMENT = '__PAGE__';\n\n/**\n * Takes a shared (garbage collectable) object between resources, e.g. a headers object shared between Next.js server components and returns a common propagation context.\n *\n * @param commonObject The shared object.\n * @param propagationContext The propagation context that should be shared between all the resources if no propagation context was registered yet.\n * @returns the shared propagation context.\n */\nexport function commonObjectToPropagationContext(\n  commonObject: unknown,\n  propagationContext: PropagationContext,\n): PropagationContext {\n  if (typeof commonObject === 'object' && commonObject) {\n    const memoPropagationContext = commonPropagationContextMap.get(commonObject);\n    if (memoPropagationContext) {\n      return memoPropagationContext;\n    } else {\n      commonPropagationContextMap.set(commonObject, propagationContext);\n      return propagationContext;\n    }\n  } else {\n    return propagationContext;\n  }\n}\n\nconst commonIsolationScopeMap = new WeakMap();\n\n/**\n * Takes a shared (garbage collectable) object between resources, e.g. a headers object shared between Next.js server components and returns a common propagation context.\n *\n * @param commonObject The shared object.\n * @param isolationScope The isolationScope that should be shared between all the resources if no isolation scope was created yet.\n * @returns the shared isolation scope.\n */\nexport function commonObjectToIsolationScope(commonObject: unknown): Scope {\n  if (typeof commonObject === 'object' && commonObject) {\n    const memoIsolationScope = commonIsolationScopeMap.get(commonObject);\n    if (memoIsolationScope) {\n      return memoIsolationScope;\n    } else {\n      const newIsolationScope = new Scope();\n      commonIsolationScopeMap.set(commonObject, newIsolationScope);\n      return newIsolationScope;\n    }\n  } else {\n    return new Scope();\n  }\n}\n\ninterface AsyncLocalStorage {\n  getStore(): T | undefined;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  run(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R;\n}\n\nlet nextjsEscapedAsyncStorage: AsyncLocalStorage;\n\n/**\n * Will mark the execution context of the callback as \"escaped\" from Next.js internal tracing by unsetting the active\n * span and propagation context. When an execution passes through this function multiple times, it is a noop after the\n * first time.\n */\nexport function escapeNextjsTracing(cb: () => T): T {\n  const MaybeGlobalAsyncLocalStorage = (GLOBAL_OBJ as { AsyncLocalStorage?: new () => AsyncLocalStorage })\n    .AsyncLocalStorage;\n\n  if (!MaybeGlobalAsyncLocalStorage) {\n    DEBUG_BUILD &&\n      debug.warn(\n        \"Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage.\",\n      );\n    return cb();\n  }\n\n  if (!nextjsEscapedAsyncStorage) {\n    nextjsEscapedAsyncStorage = new MaybeGlobalAsyncLocalStorage();\n  }\n\n  if (nextjsEscapedAsyncStorage.getStore()) {\n    return cb();\n  } else {\n    return startNewTrace(() => {\n      return nextjsEscapedAsyncStorage.run(true, () => {\n        return cb();\n      });\n    });\n  }\n}\n\n/**\n * Ideally this function never lands in the develop branch.\n *\n * Drops the entire span tree this function was called in, if it was a span tree created by Next.js.\n */\nexport function dropNextjsRootContext(): void {\n  // When the user brings their own OTel setup (skipOpenTelemetrySetup: true), we should not\n  // mutate their spans with Sentry-internal attributes like `sentry.drop_transaction`\n  if ((getClient()?.getOptions() as { skipOpenTelemetrySetup?: boolean } | undefined)?.skipOpenTelemetrySetup) {\n    return;\n  }\n\n  const nextJsOwnedSpan = getActiveSpan();\n  if (nextJsOwnedSpan) {\n    const rootSpan = getRootSpan(nextJsOwnedSpan);\n    const rootSpanAttributes = spanToJSON(rootSpan).data;\n    if (rootSpanAttributes?.['next.span_type']) {\n      getRootSpan(nextJsOwnedSpan)?.setAttribute(TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION, true);\n    }\n  }\n}\n\n/**\n * Checks if the span is a resolve segment span.\n * @param spanAttributes The attributes of the span to check.\n * @returns True if the span is a resolve segment span, false otherwise.\n */\nexport function isResolveSegmentSpan(spanAttributes: SpanAttributes): boolean {\n  return (\n    spanAttributes[ATTR_NEXT_SPAN_TYPE] === 'NextNodeServer.getLayoutOrPageModule' &&\n    spanAttributes[ATTR_NEXT_SPAN_NAME] === 'resolve segment modules' &&\n    typeof spanAttributes[ATTR_NEXT_SEGMENT] === 'string'\n  );\n}\n\n/**\n * Returns the enhanced name for a resolve segment span.\n * @param segment The segment of the resolve segment span.\n * @param route The route of the resolve segment span.\n * @returns The enhanced name for the resolve segment span.\n */\nexport function getEnhancedResolveSegmentSpanName({ segment, route }: { segment: string; route: string }): string {\n  if (segment === PAGE_SEGMENT) {\n    return `resolve page server component \"${route}\"`;\n  }\n\n  if (segment === '') {\n    return 'resolve root layout server component';\n  }\n\n  return `resolve layout server component \"${segment}\"`;\n}\n\n/**\n * Maybe enhances the span name for a resolve segment span.\n * If the span is not a resolve segment span, this function does nothing.\n * @param activeSpan The active span.\n * @param spanAttributes The attributes of the span to check.\n * @param rootSpanAttributes The attributes of the according root span.\n */\nexport function maybeEnhanceServerComponentSpanName(\n  activeSpan: Span,\n  spanAttributes: SpanAttributes,\n  rootSpanAttributes: SpanAttributes,\n): void {\n  if (!isResolveSegmentSpan(spanAttributes)) {\n    return;\n  }\n\n  const segment = spanAttributes[ATTR_NEXT_SEGMENT] as string;\n  const route = rootSpanAttributes[ATTR_HTTP_ROUTE];\n  const enhancedName = getEnhancedResolveSegmentSpanName({ segment, route: typeof route === 'string' ? route : '' });\n  activeSpan.updateName(enhancedName);\n  activeSpan.setAttributes({\n    'sentry.nextjs.ssr.function.type': segment === PAGE_SEGMENT ? 'Page' : 'Layout',\n    'sentry.nextjs.ssr.function.route': route,\n  });\n  activeSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'function.nextjs');\n}\n","import type { Span } from '@sentry/core';\nimport { _INTERNAL_safeDateNow, captureCheckIn, debug, getIsolationScope, spanToJSON } from '@sentry/core';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport type { VercelCronsConfig } from '../common/types';\n\n// Attribute keys for storing cron check-in data on spans\nconst ATTR_SENTRY_CRON_CHECK_IN_ID = 'sentry.cron.checkInId';\nconst ATTR_SENTRY_CRON_MONITOR_SLUG = 'sentry.cron.monitorSlug';\nconst ATTR_SENTRY_CRON_START_TIME = 'sentry.cron.startTime';\nconst ATTR_SENTRY_CRON_SCHEDULE = 'sentry.cron.schedule';\n\n/**\n * Gets the Vercel crons configuration that was injected at build time.\n */\nfunction getVercelCronsConfig(): VercelCronsConfig {\n  const globalWithCronsConfig = globalThis as typeof globalThis & {\n    _sentryVercelCronsConfig?: string;\n  };\n\n  if (!globalWithCronsConfig._sentryVercelCronsConfig) {\n    return undefined;\n  }\n\n  try {\n    return JSON.parse(globalWithCronsConfig._sentryVercelCronsConfig) as VercelCronsConfig;\n  } catch {\n    DEBUG_BUILD && debug.log('[@sentry/nextjs] Failed to parse Vercel crons config');\n    return undefined;\n  }\n}\n\n/**\n * Checks if the request is a Vercel cron request and starts a check-in if it matches a configured cron.\n */\nexport function maybeStartCronCheckIn(span: Span, route: string | undefined): void {\n  const vercelCronsConfig = getVercelCronsConfig();\n  if (!vercelCronsConfig || !route) {\n    return;\n  }\n\n  // The strategy here is to check if the request is a Vercel cron\n  // request by checking the user agent, vercel always sets the user agent to 'vercel-cron/1.0'\n\n  const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers as\n    | Record\n    | undefined;\n\n  if (!headers) {\n    return;\n  }\n\n  const userAgent = Array.isArray(headers['user-agent']) ? headers['user-agent'][0] : headers['user-agent'];\n  if (!userAgent?.includes('vercel-cron')) {\n    return;\n  }\n\n  const matchedCron = vercelCronsConfig.find(cron => cron.path === route);\n  if (!matchedCron?.path || !matchedCron.schedule) {\n    return;\n  }\n\n  // Use raw path as monitor slug to match legacy wrapApiHandlerWithSentryVercelCrons behavior,\n  // so migration from automaticVercelMonitors to vercelCronsMonitoring keeps the same monitors.\n  const monitorSlug = matchedCron.path;\n  const startTime = _INTERNAL_safeDateNow() / 1000;\n\n  const checkInId = captureCheckIn(\n    { monitorSlug, status: 'in_progress' },\n    {\n      maxRuntime: 60 * 12,\n      schedule: { type: 'crontab', value: matchedCron.schedule },\n    },\n  );\n\n  DEBUG_BUILD && debug.log(`[Cron] Started check-in for \"${monitorSlug}\" with ID \"${checkInId}\"`);\n\n  // Store marking attributes on the span so we can complete the check-in later\n  span.setAttribute(ATTR_SENTRY_CRON_CHECK_IN_ID, checkInId);\n  span.setAttribute(ATTR_SENTRY_CRON_MONITOR_SLUG, monitorSlug);\n  span.setAttribute(ATTR_SENTRY_CRON_START_TIME, startTime);\n  span.setAttribute(ATTR_SENTRY_CRON_SCHEDULE, matchedCron.schedule);\n}\n\n/**\n * Completes a Vercel cron check-in when a span ends.\n * Should be called from the spanEnd event handler.\n */\nexport function maybeCompleteCronCheckIn(span: Span): void {\n  const spanData = spanToJSON(span).data;\n  const checkInId = spanData?.[ATTR_SENTRY_CRON_CHECK_IN_ID];\n  const monitorSlug = spanData?.[ATTR_SENTRY_CRON_MONITOR_SLUG];\n  const startTime = spanData?.[ATTR_SENTRY_CRON_START_TIME];\n  const schedule = spanData?.[ATTR_SENTRY_CRON_SCHEDULE];\n\n  if (!checkInId || !monitorSlug || typeof startTime !== 'number') {\n    return;\n  }\n\n  const duration = _INTERNAL_safeDateNow() / 1000 - startTime;\n  const spanStatus = spanToJSON(span).status;\n  // Span status is 'ok' for success, undefined for unset, or an error message like 'internal_error'\n  const checkInStatus = spanStatus && spanStatus !== 'ok' ? 'error' : 'ok';\n\n  // Include monitor_config for upsert in case the in_progress check-in was lost\n  const monitorConfig =\n    typeof schedule === 'string'\n      ? {\n          maxRuntime: 60 * 12,\n          schedule: { type: 'crontab' as const, value: schedule },\n        }\n      : undefined;\n\n  captureCheckIn(\n    {\n      checkInId: checkInId as string,\n      monitorSlug: monitorSlug as string,\n      status: checkInStatus,\n      duration,\n    },\n    monitorConfig,\n  );\n\n  // Cleanup marking attributes so they don't pollute user span data\n  span.setAttribute(ATTR_SENTRY_CRON_CHECK_IN_ID, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_MONITOR_SLUG, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_START_TIME, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_SCHEDULE, undefined);\n\n  DEBUG_BUILD && debug.log(`[Cron] Completed check-in for \"${monitorSlug}\" with status \"${checkInStatus}\"`);\n}\n","import type { Span } from '@sentry/core';\nimport { getIsolationScope, spanToJSON } from '@sentry/core';\n\n// OTel Messaging semantic convention attribute keys\nconst ATTR_MESSAGING_SYSTEM = 'messaging.system';\nconst ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name';\nconst ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id';\nconst ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name';\nconst ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name';\nconst ATTR_MESSAGING_MESSAGE_DELIVERY_COUNT = 'messaging.message.delivery_count';\n\n// Marker attribute to track enriched spans for cleanup\nconst ATTR_SENTRY_QUEUE_ENRICHED = 'sentry.queue.enriched';\n\n/**\n * Checks if the incoming request is a Vercel Queue consumer callback (push mode)\n * and enriches the http.server span with OTel messaging semantic attributes.\n *\n * Vercel Queues push delivery sends a CloudEvent POST with the header:\n *   ce-type: com.vercel.queue.v2beta\n * along with ce-vqs* headers carrying queue metadata.\n */\nexport function maybeEnrichQueueConsumerSpan(span: Span): void {\n  const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers as\n    | Record\n    | undefined;\n\n  if (!headers) {\n    return;\n  }\n\n  const ceType = Array.isArray(headers['ce-type']) ? headers['ce-type'][0] : headers['ce-type'];\n  if (ceType !== 'com.vercel.queue.v2beta') {\n    return;\n  }\n\n  const queueName = getHeader(headers, 'ce-vqsqueuename');\n  const messageId = getHeader(headers, 'ce-vqsmessageid');\n  const consumerGroup = getHeader(headers, 'ce-vqsconsumergroup');\n  const deliveryCount = getHeader(headers, 'ce-vqsdeliverycount');\n\n  span.setAttribute(ATTR_MESSAGING_SYSTEM, 'vercel.queue');\n  span.setAttribute(ATTR_MESSAGING_OPERATION_NAME, 'process');\n\n  if (queueName) {\n    span.setAttribute(ATTR_MESSAGING_DESTINATION_NAME, queueName);\n  }\n\n  if (messageId) {\n    span.setAttribute(ATTR_MESSAGING_MESSAGE_ID, messageId);\n  }\n\n  if (consumerGroup) {\n    span.setAttribute(ATTR_MESSAGING_CONSUMER_GROUP_NAME, consumerGroup);\n  }\n\n  if (deliveryCount) {\n    const count = parseInt(deliveryCount, 10);\n    if (!isNaN(count)) {\n      span.setAttribute(ATTR_MESSAGING_MESSAGE_DELIVERY_COUNT, count);\n    }\n  }\n\n  // Mark span so we can clean up marker on spanEnd\n  span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, true);\n}\n\n/**\n * Checks if an outgoing http.client span targets the Vercel Queues API\n * and enriches it with OTel messaging semantic attributes (producer side).\n *\n * The Vercel Queues API lives at *.vercel-queue.com/api/v3/topic/.\n * We use domain-based detection to avoid false positives from user routes.\n */\nexport function maybeEnrichQueueProducerSpan(span: Span): void {\n  const spanData = spanToJSON(span).data;\n\n  // http.client spans have url.full attribute\n  const urlFull = spanData?.['url.full'] as string | undefined;\n  if (!urlFull) {\n    return;\n  }\n\n  let parsed: URL;\n  try {\n    parsed = new URL(urlFull);\n  } catch {\n    return;\n  }\n\n  if (parsed.hostname !== 'vercel-queue.com' && !parsed.hostname.endsWith('.vercel-queue.com')) {\n    return;\n  }\n\n  // Extract topic from path: /api/v3/topic/[/]\n  const topicMatch = parsed.pathname.match(/^\\/api\\/v3\\/topic\\/([^/]+)/);\n  if (!topicMatch) {\n    return;\n  }\n\n  const topic = decodeURIComponent(topicMatch[1]!);\n\n  span.setAttribute(ATTR_MESSAGING_SYSTEM, 'vercel.queue');\n  span.setAttribute(ATTR_MESSAGING_DESTINATION_NAME, topic);\n  span.setAttribute(ATTR_MESSAGING_OPERATION_NAME, 'send');\n\n  // Mark span so we can clean up marker on spanEnd\n  span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, true);\n}\n\n/**\n * Cleans up the internal marker attribute from enriched queue spans on end.\n */\nexport function maybeCleanupQueueSpan(span: Span): void {\n  const spanData = spanToJSON(span).data;\n  if (spanData?.[ATTR_SENTRY_QUEUE_ENRICHED]) {\n    span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, undefined);\n  }\n}\n\nfunction getHeader(headers: Record, name: string): string | undefined {\n  const value = headers[name];\n  return Array.isArray(value) ? value[0] : value;\n}\n","import { context } from '@opentelemetry/api';\nimport { ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_ROUTE, SEMATTRS_HTTP_METHOD } from '@opentelemetry/semantic-conventions';\nimport type { Span } from '@sentry/core';\nimport {\n  getCapturedScopesOnSpan,\n  getCurrentScope,\n  getIsolationScope,\n  getRootSpan,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  setCapturedScopesOnSpan,\n  spanToJSON,\n} from '@sentry/core';\nimport { getScopesFromContext } from '@sentry/opentelemetry';\nimport { ATTR_NEXT_ROUTE, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../common/nextSpanAttributes';\nimport { addHeadersAsAttributes } from '../common/utils/addHeadersAsAttributes';\nimport { dropMiddlewareTunnelRequests } from '../common/utils/dropMiddlewareTunnelRequests';\nimport { maybeEnhanceServerComponentSpanName } from '../common/utils/tracingUtils';\nimport { maybeStartCronCheckIn } from './vercelCronsMonitoring';\nimport { maybeEnrichQueueConsumerSpan, maybeEnrichQueueProducerSpan } from './vercelQueuesMonitoring';\n\n/**\n * Handles the on span start event for Next.js spans.\n * This function is used to enhance the span with additional information such as the route, the method, the headers, etc.\n * It is called for every span that is started by Next.js.\n * @param span The span that is starting.\n */\nexport function handleOnSpanStart(span: Span): void {\n  const spanAttributes = spanToJSON(span).data;\n  const rootSpan = getRootSpan(span);\n  const rootSpanAttributes = spanToJSON(rootSpan).data;\n  const isRootSpan = span === rootSpan;\n\n  dropMiddlewareTunnelRequests(span, spanAttributes);\n\n  // What we do in this glorious piece of code, is hoist any information about parameterized routes from spans emitted\n  // by Next.js via the `next.route` attribute, up to the transaction by setting the http.route attribute.\n  if (typeof spanAttributes?.[ATTR_NEXT_ROUTE] === 'string') {\n    // Only hoist the http.route attribute if the transaction doesn't already have it\n    if (\n      // eslint-disable-next-line deprecation/deprecation\n      (rootSpanAttributes?.[ATTR_HTTP_REQUEST_METHOD] || rootSpanAttributes?.[SEMATTRS_HTTP_METHOD]) &&\n      !rootSpanAttributes?.[ATTR_HTTP_ROUTE]\n    ) {\n      const route = spanAttributes[ATTR_NEXT_ROUTE].replace(/\\/route$/, '');\n      rootSpan.updateName(route);\n      rootSpan.setAttribute(ATTR_HTTP_ROUTE, route);\n      // Preserving the original attribute despite internally not depending on it\n      rootSpan.setAttribute(ATTR_NEXT_ROUTE, route);\n\n      // Update the isolation scope's transaction name so that non-transaction events\n      // (e.g. captureMessage, captureException) also get the parameterized route.\n      // eslint-disable-next-line deprecation/deprecation\n      const method = rootSpanAttributes?.[ATTR_HTTP_REQUEST_METHOD] || rootSpanAttributes?.[SEMATTRS_HTTP_METHOD];\n      if (typeof method === 'string') {\n        getIsolationScope().setTransactionName(`${method} ${route}`);\n      }\n\n      // Check if this is a Vercel cron request and start a check-in\n      maybeStartCronCheckIn(rootSpan, route);\n\n      // Enrich queue consumer spans (Vercel Queue push delivery via CloudEvent)\n      maybeEnrichQueueConsumerSpan(rootSpan);\n    }\n  }\n\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] === 'Middleware.execute') {\n    const middlewareName = spanAttributes[ATTR_NEXT_SPAN_NAME];\n    if (typeof middlewareName === 'string') {\n      rootSpan.updateName(middlewareName);\n      rootSpan.setAttribute(ATTR_HTTP_ROUTE, middlewareName);\n      rootSpan.setAttribute(ATTR_NEXT_SPAN_NAME, middlewareName);\n    }\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto');\n  }\n\n  // We want to skip span data inference for any spans generated by Next.js. Reason being that Next.js emits spans\n  // with patterns (e.g. http.server spans) that will produce confusing data.\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] !== undefined) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto');\n  }\n\n  if (isRootSpan) {\n    const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;\n    addHeadersAsAttributes(headers, rootSpan);\n  }\n\n  // We want to fork the isolation scope for incoming requests\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest' && isRootSpan) {\n    const scopes = getCapturedScopesOnSpan(span);\n\n    const isolationScope = (scopes.isolationScope || getIsolationScope()).clone();\n    const scope = scopes.scope || getCurrentScope();\n\n    const currentScopesPointer = getScopesFromContext(context.active());\n    if (currentScopesPointer) {\n      currentScopesPointer.isolationScope = isolationScope;\n    }\n\n    setCapturedScopesOnSpan(span, scope, isolationScope);\n  }\n\n  maybeEnhanceServerComponentSpanName(span, spanAttributes, rootSpanAttributes);\n\n  // Enrich outgoing http.client spans targeting the Vercel Queues API (producer)\n  maybeEnrichQueueProducerSpan(span);\n}\n","import { type _INTERNAL_RandomSafeContextRunner as RandomSafeContextRunner, debug, GLOBAL_OBJ } from '@sentry/core';\nimport { DEBUG_BUILD } from '../common/debug-build';\n\n// Inline AsyncLocalStorage interface from current types\n// Avoids conflict with resolving it from getBuiltinModule\ntype OriginalAsyncLocalStorage = typeof AsyncLocalStorage;\n\n/**\n * Prepares the global object to generate safe random IDs in cache components contexts\n * See: https://github.com/getsentry/sentry-javascript/blob/ceb003c15973c2d8f437dfb7025eedffbc8bc8b0/packages/core/src/utils/propagationContext.ts#L1\n */\nexport function prepareSafeIdGeneratorContext(): void {\n  const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__');\n  const globalWithSymbol: typeof GLOBAL_OBJ & { [sym]?: RandomSafeContextRunner } = GLOBAL_OBJ;\n\n  // Get initial snapshot - if unavailable, don't set up the wrapper at all\n  const initialSnapshot = getAsyncLocalStorageSnapshot();\n  if (!initialSnapshot) {\n    return;\n  }\n\n  // We store a wrapper function instead of the raw snapshot because in serverless\n  // environments (e.g., Cloudflare Workers), the snapshot is bound to the request\n  // context it was created in. Once that request ends, the snapshot becomes invalid.\n  // The wrapper catches this and creates a fresh snapshot for the current request context.\n  let cachedSnapshot: RandomSafeContextRunner = initialSnapshot;\n\n  globalWithSymbol[sym] = (callback: () => T): T => {\n    try {\n      return cachedSnapshot(callback);\n    } catch (error) {\n      // Only handle AsyncLocalStorage-related errors, rethrow others\n      if (!isAsyncLocalStorageError(error)) {\n        throw error;\n      }\n\n      // Snapshot likely stale, try to get a fresh one and retry\n      const freshSnapshot = getAsyncLocalStorageSnapshot();\n      // No snapshot available, fall back to direct execution\n      if (!freshSnapshot) {\n        return callback();\n      }\n\n      // Update the cached snapshot\n      cachedSnapshot = freshSnapshot;\n\n      // Retry the callback with the fresh snapshot\n      try {\n        return cachedSnapshot(callback);\n      } catch (retryError) {\n        // Only fall back for AsyncLocalStorage errors, rethrow others\n        if (!isAsyncLocalStorageError(retryError)) {\n          throw retryError;\n        }\n        // If fresh snapshot also fails with ALS error, fall back to direct execution\n        return callback();\n      }\n    }\n  };\n\n  DEBUG_BUILD && debug.log('[@sentry/nextjs] Prepared safe random ID generator context');\n}\n\nfunction getAsyncLocalStorage(): OriginalAsyncLocalStorage | undefined {\n  // May exist in the Next.js runtime globals\n  // Doesn't exist in some of our tests\n  if (typeof AsyncLocalStorage !== 'undefined') {\n    return AsyncLocalStorage;\n  }\n\n  // Try to resolve it dynamically without synchronously importing the module\n  // This is done to avoid importing the module synchronously at the top\n  // which means this is safe across runtimes\n  if ('getBuiltinModule' in process && typeof process.getBuiltinModule === 'function') {\n    const { AsyncLocalStorage } = process.getBuiltinModule('async_hooks') ?? {};\n\n    return AsyncLocalStorage as OriginalAsyncLocalStorage;\n  }\n\n  return undefined;\n}\n\nfunction getAsyncLocalStorageSnapshot(): RandomSafeContextRunner | undefined {\n  const als = getAsyncLocalStorage();\n\n  if (!als || typeof als.snapshot !== 'function') {\n    DEBUG_BUILD &&\n      debug.warn(\n        '[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.',\n      );\n    return undefined;\n  }\n\n  return als.snapshot();\n}\n\nfunction isAsyncLocalStorageError(error: unknown): boolean {\n  return error instanceof Error && error.message.includes('AsyncLocalStorage');\n}\n","import {\n  captureException,\n  getIsolationScope,\n  httpRequestToRequestData,\n  isAlreadyCaptured,\n  withScope,\n} from '@sentry/core';\nimport type { NextPageContext } from 'next';\nimport { flushSafelyWithTimeout, waitUntil } from '../utils/responseEnd';\n\ntype ContextOrProps = {\n  req?: NextPageContext['req'];\n  res?: NextPageContext['res'];\n  err?: NextPageContext['err'] | string;\n  pathname?: string;\n  statusCode?: number;\n};\n\n/**\n * Capture the exception passed by nextjs to the `_error` page, adding context data as appropriate.\n *\n * This will not capture the exception if the status code is < 500 or if the pathname is not provided and will thus not return an event ID.\n *\n * @param contextOrProps The data passed to either `getInitialProps` or `render` by nextjs\n * @returns The Sentry event ID, or `undefined` if no event was captured\n */\nexport async function captureUnderscoreErrorException(contextOrProps: ContextOrProps): Promise {\n  const { req, res, err } = contextOrProps;\n\n  // 404s (and other 400-y friends) can trigger `_error`, but we don't want to send them to Sentry\n  const statusCode = res?.statusCode || contextOrProps.statusCode;\n  if (statusCode && statusCode < 500) {\n    return;\n  }\n\n  // In previous versions of the suggested `_error.js` page in which this function is meant to be used, there was a\n  // workaround for https://github.com/vercel/next.js/issues/8592 which involved an extra call to this function, in the\n  // custom error component's `render` method, just in case it hadn't been called by `getInitialProps`. Now that that\n  // issue has been fixed, the second call is unnecessary, but since it lives in user code rather than our code, users\n  // have to be the ones to get rid of it, and guaraneteedly, not all of them will. So, rather than capture the error\n  // twice, we just bail if we sense we're in that now-extraneous second call. (We can tell which function we're in\n  // because Nextjs passes `pathname` to `getInitialProps` but not to `render`.)\n  if (!contextOrProps.pathname) {\n    return;\n  }\n\n  // If the error was already captured (e.g., by wrapped functions in data fetchers),\n  // return the existing event ID instead of capturing it again (needed for lastEventId() to work)\n  if (err && isAlreadyCaptured(err)) {\n    waitUntil(flushSafelyWithTimeout());\n\n    const storedEventId =\n      typeof err === 'object' ? (err as unknown as Record).__sentry_event_id__ : undefined;\n\n    if (typeof storedEventId === 'string') {\n      getIsolationScope().setLastEventId(storedEventId);\n      return storedEventId;\n    }\n\n    return getIsolationScope().lastEventId();\n  }\n\n  const eventId = withScope(scope => {\n    if (req) {\n      const normalizedRequest = httpRequestToRequestData(req);\n      scope.setSDKProcessingMetadata({ normalizedRequest });\n    }\n\n    // If third-party libraries (or users themselves) throw something falsy, we want to capture it as a message (which\n    // is what passing a string to `captureException` will wind up doing)\n    return captureException(err || `_error.js called with falsy error (${err})`, {\n      mechanism: {\n        type: 'auto.function.nextjs.underscore_error',\n        handled: false,\n        data: {\n          function: '_error.getInitialProps',\n        },\n      },\n    });\n  });\n\n  waitUntil(flushSafelyWithTimeout());\n\n  return eventId;\n}\n","// Vendored from: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/client-and-server-references.ts\n\ninterface ServerReferenceInfo {\n  type: 'server-action' | 'use-cache';\n  usedArgs: [boolean, boolean, boolean, boolean, boolean, boolean];\n  hasRestArgs: boolean;\n}\n\nexport interface ServerReference {\n  $$typeof: symbol;\n  $$id: string;\n}\n\nexport type ServerFunction = ServerReference & ((...args: unknown[]) => Promise);\n\nfunction extractInfoFromServerReferenceId(id: string): ServerReferenceInfo {\n  const infoByte = parseInt(id.slice(0, 2), 16);\n  // eslint-disable-next-line no-bitwise\n  const typeBit = (infoByte >> 7) & 0x1;\n  // eslint-disable-next-line no-bitwise\n  const argMask = (infoByte >> 1) & 0x3f;\n  // eslint-disable-next-line no-bitwise\n  const restArgs = infoByte & 0x1;\n  const usedArgs = Array(6);\n\n  for (let index = 0; index < 6; index++) {\n    const bitPosition = 5 - index;\n    // eslint-disable-next-line no-bitwise\n    const bit = (argMask >> bitPosition) & 0x1;\n    usedArgs[index] = bit === 1;\n  }\n\n  return {\n    type: typeBit === 1 ? 'use-cache' : 'server-action',\n    usedArgs: usedArgs as [boolean, boolean, boolean, boolean, boolean, boolean],\n    hasRestArgs: restArgs === 1,\n  };\n}\n\nfunction isServerReference(value: T & Partial): value is T & ServerFunction {\n  return value.$$typeof === Symbol.for('react.server.reference');\n}\n\n/**\n * Check if the function is a use cache function.\n *\n * @param value - The function to check.\n * @returns true if the function is a use cache function, false otherwise.\n */\nexport function isUseCacheFunction(value: T & Partial): value is T & ServerFunction {\n  if (!isServerReference(value)) {\n    return false;\n  }\n\n  const { type } = extractInfoFromServerReferenceId(value.$$id);\n\n  return type === 'use-cache';\n}\n","import type { Span, StartSpanOptions } from '@sentry/core';\nimport {\n  debug,\n  SentryNonRecordingSpan,\n  startInactiveSpan as coreStartInactiveSpan,\n  startSpan as coreStartSpan,\n  startSpanManual as coreStartSpanManual,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { isBuild } from './isBuild';\nimport type { ServerReference } from './isUseCacheFunction';\nimport { isUseCacheFunction } from './isUseCacheFunction';\n\nfunction shouldNoopSpan(callback?: T & Partial): boolean {\n  const isBuildContext = isBuild();\n  const isUseCacheFunctionContext = callback ? isUseCacheFunction(callback) : false;\n\n  if (isUseCacheFunctionContext) {\n    DEBUG_BUILD && debug.log('Skipping span creation in Cache Components context');\n  }\n\n  return isBuildContext || isUseCacheFunctionContext;\n}\n\nfunction createNonRecordingSpan(): Span {\n  return new SentryNonRecordingSpan({\n    traceId: '00000000000000000000000000000000',\n    spanId: '0000000000000000',\n  });\n}\n\n/**\n * Next.js-specific implementation of `startSpan` that skips span creation\n * in Cache Components contexts (which render at build time).\n *\n * When in a Cache Components context, we execute the callback with a non-recording span\n * and return early without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @param callback - Callback function that receives the span\n * @returns The return value of the callback\n */\nexport function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T {\n  if (shouldNoopSpan(callback)) {\n    return callback(createNonRecordingSpan());\n  }\n\n  return coreStartSpan(options, callback);\n}\n\n/**\n *\n * When in a Cache Components context, we execute the callback with a non-recording span\n * and return early without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @param callback - Callback function that receives the span and finish function\n * @returns The return value of the callback\n */\nexport function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\n  if (shouldNoopSpan(callback)) {\n    const nonRecordingSpan = createNonRecordingSpan();\n    return callback(nonRecordingSpan, () => nonRecordingSpan.end());\n  }\n\n  return coreStartSpanManual(options, callback);\n}\n\n/**\n *\n * When in a Cache Components context, we return a non-recording span and return early\n * without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @returns A non-recording span (in Cache Components context) or the created span\n */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\n  if (shouldNoopSpan()) {\n    return createNonRecordingSpan();\n  }\n\n  return coreStartInactiveSpan(options);\n}\n","import {\n  captureException,\n  getActiveSpan,\n  getCurrentScope,\n  getIsolationScope,\n  getRootSpan,\n  getTraceData,\n  httpRequestToRequestData,\n  isThenable,\n} from '@sentry/core';\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport { TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL } from '../span-attributes-with-logic-attached';\n\n/**\n * Wraps a function that potentially throws. If it does, the error is passed to `captureException` and rethrown.\n *\n * Note: This function turns the wrapped function into an asynchronous one.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withErrorInstrumentation any>(\n  origFunction: F,\n): (...params: Parameters) => Promise> {\n  return async function (this: unknown, ...origFunctionArguments: Parameters): Promise> {\n    try {\n      return await origFunction.apply(this, origFunctionArguments);\n    } catch (e) {\n      // TODO: Extract error logic from `withSentry` in here or create a new wrapper with said logic or something like that.\n      captureException(e, {\n        // TODO: check if origFunction.name actually returns the correct name or minified garbage\n        // in this case, we can add another argument to this wrapper with the respective function name\n        mechanism: { handled: false, type: 'auto.function.nextjs.wrapped', data: { function: origFunction.name } },\n      });\n      throw e;\n    }\n  };\n}\n\n/**\n * Calls a server-side data fetching function (that takes a `req` and `res` object in its context) with tracing\n * instrumentation. A transaction will be created for the incoming request (if it doesn't already exist) in addition to\n * a span for the wrapped data fetching function.\n *\n * All of the above happens in an isolated domain, meaning all thrown errors will be associated with the correct span.\n *\n * @param origDataFetcher The data fetching method to call.\n * @param origFunctionArguments The arguments to call the data fetching method with.\n * @param req The data fetching function's request object.\n * @param res The data fetching function's response object.\n * @param options Options providing details for the created transaction and span.\n * @returns what the data fetching method call returned.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withTracedServerSideDataFetcher Promise | any>(\n  origDataFetcher: F,\n  req: IncomingMessage,\n  res: ServerResponse,\n  options: {\n    /** Parameterized route of the request - will be used for naming the transaction. */\n    requestedRouteName: string;\n    /** Name of the route the data fetcher was defined in - will be used for describing the data fetcher's span. */\n    dataFetcherRouteName: string;\n    /** Name of the data fetching method - will be used for describing the data fetcher's span. */\n    dataFetchingMethodName: string;\n  },\n): (...params: Parameters) => Promise<{ data: ReturnType; sentryTrace?: string; baggage?: string }> {\n  return async function (\n    this: unknown,\n    ...args: Parameters\n  ): Promise<{ data: ReturnType; sentryTrace?: string; baggage?: string }> {\n    const normalizedRequest = httpRequestToRequestData(req);\n    getCurrentScope().setTransactionName(`${options.dataFetchingMethodName} (${options.dataFetcherRouteName})`);\n    getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n    const span = getActiveSpan();\n\n    // Only set the route backfill if the span is not for /_error\n    if (span && options.requestedRouteName !== '/_error') {\n      const root = getRootSpan(span);\n      root.setAttribute(TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL, options.requestedRouteName);\n    }\n\n    const { 'sentry-trace': sentryTrace, baggage } = getTraceData();\n\n    return {\n      sentryTrace: sentryTrace,\n      baggage: baggage,\n      data: await origDataFetcher.apply(this, args),\n    };\n  };\n}\n\n/**\n * Call a data fetcher and trace it. Only traces the function if there is an active transaction on the scope.\n *\n * We only do the following until we move transaction creation into this function: When called, the wrapped function\n * will also update the name of the active transaction with a parameterized route provided via the `options` argument.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function callDataFetcherTraced Promise | any>(\n  origFunction: F,\n  origFunctionArgs: Parameters,\n): Promise> {\n  try {\n    return await origFunction(...origFunctionArgs);\n  } catch (e) {\n    captureException(e, { mechanism: { handled: false, type: 'auto.function.nextjs.data_fetcher' } });\n    throw e;\n  }\n}\n\n/**\n * Extracts the params and searchParams from the props object.\n *\n * Depending on the next version, params and searchParams may be a promise which we do not want to resolve in this function.\n */\nexport function maybeExtractSynchronousParamsAndSearchParams(props: unknown): {\n  params: Record | undefined;\n  searchParams: Record | undefined;\n} {\n  let params =\n    props && typeof props === 'object' && 'params' in props\n      ? (props.params as Record | Promise> | undefined)\n      : undefined;\n  if (isThenable(params)) {\n    params = undefined;\n  }\n\n  let searchParams =\n    props && typeof props === 'object' && 'searchParams' in props\n      ? (props.searchParams as Record | Promise> | undefined)\n      : undefined;\n  if (isThenable(searchParams)) {\n    searchParams = undefined;\n  }\n\n  return { params, searchParams };\n}\n","import type { GetStaticProps } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { callDataFetcherTraced, withErrorInstrumentation } from '../utils/wrapperUtils';\n\ntype Props = { [key: string]: unknown };\n\n/**\n * Create a wrapped version of the user's exported `getStaticProps` function\n *\n * @param origGetStaticProps The user's `getStaticProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetStaticPropsWithSentry(\n  origGetStaticPropsa: GetStaticProps,\n  _parameterizedRoute: string,\n): GetStaticProps {\n  return new Proxy(origGetStaticPropsa, {\n    apply: async (wrappingTarget, thisArg, args: Parameters>) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const errorWrappedGetStaticProps = withErrorInstrumentation(wrappingTarget);\n      return callDataFetcherTraced(errorWrappedGetStaticProps, args);\n    },\n  });\n}\n","import type { NextPage } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype GetInitialProps = Required['getInitialProps'];\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function\n *\n * @param origGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetInitialPropsWithSentry(origGetInitialProps: GetInitialProps): GetInitialProps {\n  return new Proxy(origGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: context.pathname,\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: initialProps,\n          baggage,\n          sentryTrace,\n        }: {\n          data?: unknown;\n          baggage?: string;\n          sentryTrace?: string;\n        } = (await tracedGetInitialProps.apply(thisArg, args)) ?? {}; // Next.js allows undefined to be returned from a getInitialPropsFunction.\n\n        if (typeof initialProps === 'object' && initialProps !== null) {\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (sentryTrace) {\n            (initialProps as Record)._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (initialProps as Record)._sentryBaggage = baggage;\n          }\n        }\n\n        return initialProps;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type App from 'next/app';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype AppGetInitialProps = (typeof App)['getInitialProps'];\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom app (\"_app.js\").\n *\n * @param origAppGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapAppGetInitialPropsWithSentry(origAppGetInitialProps: AppGetInitialProps): AppGetInitialProps {\n  return new Proxy(origAppGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context.ctx;\n\n      const errorWrappedAppGetInitialProps = withErrorInstrumentation(wrappingTarget);\n\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedAppGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_app',\n          requestedRouteName: context.ctx.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: appGetInitialProps,\n          sentryTrace,\n          baggage,\n        }: {\n          data?: unknown;\n          sentryTrace?: string;\n          baggage?: string;\n        } = await tracedGetInitialProps.apply(thisArg, args);\n\n        if (typeof appGetInitialProps === 'object' && appGetInitialProps !== null) {\n          // Per definition, `pageProps` is not optional, however an increased amount of users doesn't seem to call\n          // `App.getInitialProps(appContext)` in their custom `_app` pages which is required as per\n          // https://nextjs.org/docs/advanced-features/custom-app - resulting in missing `pageProps`.\n          // For this reason, we just handle the case where `pageProps` doesn't exist explicitly.\n          if (!(appGetInitialProps as Record).pageProps) {\n            (appGetInitialProps as Record).pageProps = {};\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (sentryTrace) {\n            (appGetInitialProps as { pageProps: Record }).pageProps._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (appGetInitialProps as { pageProps: Record }).pageProps._sentryBaggage = baggage;\n          }\n        }\n\n        return appGetInitialProps;\n      } else {\n        return errorWrappedAppGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type Document from 'next/document';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype DocumentGetInitialProps = typeof Document.getInitialProps;\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom document (\"_document.js\").\n *\n * @param origDocumentGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapDocumentGetInitialPropsWithSentry(\n  origDocumentGetInitialProps: DocumentGetInitialProps,\n): DocumentGetInitialProps {\n  return new Proxy(origDocumentGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_document',\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const { data } = await tracedGetInitialProps.apply(thisArg, args);\n        return data;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type { NextPageContext } from 'next';\nimport type { ErrorProps } from 'next/error';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype ErrorGetInitialProps = (context: NextPageContext) => Promise;\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom error page (\"_error.js\").\n *\n * @param origErrorGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapErrorGetInitialPropsWithSentry(\n  origErrorGetInitialProps: ErrorGetInitialProps,\n): ErrorGetInitialProps {\n  return new Proxy(origErrorGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_error',\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: errorGetInitialProps,\n          baggage,\n          sentryTrace,\n        }: {\n          data?: unknown;\n          baggage?: string;\n          sentryTrace?: string;\n        } = await tracedGetInitialProps.apply(thisArg, args);\n\n        if (typeof errorGetInitialProps === 'object' && errorGetInitialProps !== null) {\n          if (sentryTrace) {\n            // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n            (errorGetInitialProps as Record)._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (errorGetInitialProps as Record)._sentryBaggage = baggage;\n          }\n        }\n\n        return errorGetInitialProps;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type { GetServerSideProps } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\n/**\n * Create a wrapped version of the user's exported `getServerSideProps` function\n *\n * @param origGetServerSideProps The user's `getServerSideProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetServerSidePropsWithSentry(\n  origGetServerSideProps: GetServerSideProps,\n  parameterizedRoute: string,\n): GetServerSideProps {\n  return new Proxy(origGetServerSideProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetServerSideProps = withErrorInstrumentation(wrappingTarget);\n      const tracedGetServerSideProps = withTracedServerSideDataFetcher(errorWrappedGetServerSideProps, req, res, {\n        dataFetcherRouteName: parameterizedRoute,\n        requestedRouteName: parameterizedRoute,\n        dataFetchingMethodName: 'getServerSideProps',\n      });\n\n      const {\n        data: serverSideProps,\n        baggage,\n        sentryTrace,\n      }: {\n        data?: unknown;\n        baggage?: string;\n        sentryTrace?: string;\n      } = await (tracedGetServerSideProps.apply(thisArg, args) as ReturnType);\n\n      if (typeof serverSideProps === 'object' && serverSideProps !== null && 'props' in serverSideProps) {\n        // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n        if (sentryTrace) {\n          (serverSideProps.props as Record)._sentryTraceData = sentryTrace;\n        }\n\n        // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n        if (baggage) {\n          (serverSideProps.props as Record)._sentryBaggage = baggage;\n        }\n      }\n\n      return serverSideProps;\n    },\n  });\n}\n","import { isError } from '@sentry/core';\n\n/**\n * Determines whether input is a Next.js not-found error.\n * https://beta.nextjs.org/docs/api-reference/notfound#notfound\n */\nexport function isNotFoundNavigationError(subject: unknown): boolean {\n  return (\n    isError(subject) &&\n    ['NEXT_NOT_FOUND', 'NEXT_HTTP_ERROR_FALLBACK;404'].includes(\n      (subject as Error & { digest?: unknown }).digest as string,\n    )\n  );\n}\n\n/**\n * Determines whether input is a Next.js redirect error.\n * https://beta.nextjs.org/docs/api-reference/redirect#redirect\n */\nexport function isRedirectNavigationError(subject: unknown): boolean {\n  return (\n    isError(subject) &&\n    typeof (subject as Error & { digest?: unknown }).digest === 'string' &&\n    (subject as Error & { digest: string }).digest.startsWith('NEXT_REDIRECT;') // a redirect digest looks like \"NEXT_REDIRECT;[redirect path]\"\n  );\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getIsolationScope,\n  handleCallbackErrors,\n  SPAN_STATUS_ERROR,\n  SPAN_STATUS_OK,\n  winterCGHeadersToDict,\n} from '@sentry/core';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from '../common/nextNavigationErrorUtils';\nimport type { ServerComponentContext } from '../common/types';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\n\n/**\n * Wraps an `app` directory server component with Sentry error instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapServerComponentWithSentry any>(\n  appDirComponent: F,\n  context: ServerComponentContext,\n): F {\n  // Even though users may define server components as async functions, for the client bundles\n  // Next.js will turn them into synchronous functions and it will transform any `await`s into instances of the `use`\n  // hook. 🤯\n  return new Proxy(appDirComponent, {\n    apply: (originalFunction, thisArg, args) => {\n      const isolationScope = getIsolationScope();\n\n      const headersDict = context.headers ? winterCGHeadersToDict(context.headers) : undefined;\n\n      isolationScope.setSDKProcessingMetadata({\n        normalizedRequest: {\n          headers: headersDict,\n        } satisfies RequestEventData,\n      });\n\n      return handleCallbackErrors(\n        () => originalFunction.apply(thisArg, args),\n        error => {\n          const span = getActiveSpan();\n          const { componentRoute, componentType } = context;\n          let shouldCapture = true;\n          isolationScope.setTransactionName(`${componentType} Server Component (${componentRoute})`);\n\n          if (span) {\n            if (isNotFoundNavigationError(error)) {\n              // We don't want to report \"not-found\"s\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n            } else if (isRedirectNavigationError(error)) {\n              // We don't want to report redirects\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_OK });\n            } else {\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n            }\n          }\n\n          if (shouldCapture) {\n            captureException(error, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.server_component',\n              },\n            });\n          }\n        },\n        () => {\n          waitUntil(flushSafelyWithTimeout());\n        },\n      );\n    },\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getCapturedScopesOnSpan,\n  getIsolationScope,\n  getRootSpan,\n  handleCallbackErrors,\n  propagationContextFromHeaders,\n  Scope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setCapturedScopesOnSpan,\n  setHttpStatus,\n  winterCGHeadersToDict,\n  withIsolationScope,\n  withScope,\n} from '@sentry/core';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\nimport type { RouteHandlerContext } from './types';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\nimport { commonObjectToIsolationScope } from './utils/tracingUtils';\n\n/**\n * Wraps a Next.js App Router Route handler with Sentry error and performance instrumentation.\n *\n * NOTICE: This wrapper is for App Router API routes. If you are looking to wrap Pages Router API routes use `wrapApiHandlerWithSentry` instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapRouteHandlerWithSentry any>(\n  routeHandler: F,\n  context: RouteHandlerContext,\n): (...args: Parameters) => ReturnType extends Promise ? ReturnType : Promise> {\n  const { method, parameterizedRoute, headers } = context;\n\n  return new Proxy(routeHandler, {\n    apply: async (originalFunction, thisArg, args) => {\n      const activeSpan = getActiveSpan();\n      const rootSpan = activeSpan ? getRootSpan(activeSpan) : undefined;\n\n      let edgeRuntimeIsolationScopeOverride: Scope | undefined;\n      if (rootSpan && process.env.NEXT_RUNTIME === 'edge') {\n        const isolationScope = commonObjectToIsolationScope(headers);\n        const { scope } = getCapturedScopesOnSpan(rootSpan);\n        setCapturedScopesOnSpan(rootSpan, scope ?? new Scope(), isolationScope);\n\n        edgeRuntimeIsolationScopeOverride = isolationScope;\n\n        rootSpan.updateName(`${method} ${parameterizedRoute}`);\n        rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'route');\n        rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.server');\n      }\n\n      return withIsolationScope(\n        process.env.NEXT_RUNTIME === 'edge' ? edgeRuntimeIsolationScopeOverride : getIsolationScope(),\n        () => {\n          return withScope(async scope => {\n            scope.setTransactionName(`${method} ${parameterizedRoute}`);\n\n            if (process.env.NEXT_RUNTIME === 'edge') {\n              const completeHeadersDict: Record = headers ? winterCGHeadersToDict(headers) : {};\n              const incomingPropagationContext = propagationContextFromHeaders(\n                completeHeadersDict['sentry-trace'],\n                completeHeadersDict['baggage'],\n              );\n              scope.setPropagationContext(incomingPropagationContext);\n              scope.setSDKProcessingMetadata({\n                normalizedRequest: {\n                  method,\n                  headers: completeHeadersDict,\n                } satisfies RequestEventData,\n              });\n            }\n\n            const response: Response = await handleCallbackErrors(\n              () => originalFunction.apply(thisArg, args),\n              error => {\n                // Next.js throws errors when calling `redirect()`. We don't wanna report these.\n                if (isRedirectNavigationError(error)) {\n                  // Don't do anything\n                } else if (isNotFoundNavigationError(error)) {\n                  if (activeSpan) {\n                    setHttpStatus(activeSpan, 404);\n                  }\n                  if (rootSpan) {\n                    setHttpStatus(rootSpan, 404);\n                  }\n                } else {\n                  captureException(error, {\n                    mechanism: {\n                      handled: false,\n                      type: 'auto.function.nextjs.route_handler',\n                    },\n                  });\n                }\n              },\n              () => {\n                waitUntil(flushSafelyWithTimeout());\n              },\n            );\n\n            try {\n              if (response.status) {\n                if (activeSpan) {\n                  setHttpStatus(activeSpan, response.status);\n                }\n                if (rootSpan) {\n                  setHttpStatus(rootSpan, response.status);\n                }\n              }\n            } catch {\n              // best effort - response may be undefined?\n            }\n\n            return response;\n          });\n        },\n      );\n    },\n  });\n}\n","import { _INTERNAL_safeDateNow, captureCheckIn } from '@sentry/core';\nimport type { NextApiRequest } from 'next';\nimport type { VercelCronsConfig } from '../types';\n\ntype EdgeRequest = {\n  nextUrl: URL;\n  headers: Headers;\n};\n\n/**\n * Wraps a function with Sentry crons instrumentation by automatically sending check-ins for the given Vercel crons config.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapApiHandlerWithSentryVercelCrons any>(\n  handler: F,\n  vercelCronsConfig: VercelCronsConfig,\n): F {\n  return new Proxy(handler, {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    apply: (originalFunction, thisArg, args: any[]) => {\n      if (!args?.[0]) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const [req] = args as [NextApiRequest | EdgeRequest];\n\n      let maybePromiseResult;\n      const cronsKey = 'nextUrl' in req ? req.nextUrl.pathname : req.url;\n      const userAgentHeader = 'nextUrl' in req ? req.headers.get('user-agent') : req.headers['user-agent'];\n\n      if (\n        !vercelCronsConfig || // do nothing if vercel crons config is missing\n        !userAgentHeader?.includes('vercel-cron') // do nothing if endpoint is not called from vercel crons\n      ) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const vercelCron = vercelCronsConfig.find(vercelCron => vercelCron.path === cronsKey);\n\n      if (!vercelCron?.path || !vercelCron.schedule) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const monitorSlug = vercelCron.path;\n\n      const checkInId = captureCheckIn(\n        {\n          monitorSlug,\n          status: 'in_progress',\n        },\n        {\n          maxRuntime: 60 * 12, // (minutes) so 12 hours - just a very high arbitrary number since we don't know the actual duration of the users cron job\n          schedule: {\n            type: 'crontab',\n            value: vercelCron.schedule,\n          },\n        },\n      );\n\n      const startTime = _INTERNAL_safeDateNow() / 1000;\n\n      const handleErrorCase = (): void => {\n        captureCheckIn({\n          checkInId,\n          monitorSlug,\n          status: 'error',\n          duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n        });\n      };\n\n      try {\n        maybePromiseResult = originalFunction.apply(thisArg, args);\n      } catch (e) {\n        handleErrorCase();\n        throw e;\n      }\n\n      if (typeof maybePromiseResult === 'object' && maybePromiseResult !== null && 'then' in maybePromiseResult) {\n        Promise.resolve(maybePromiseResult).then(\n          () => {\n            captureCheckIn({\n              checkInId,\n              monitorSlug,\n              status: 'ok',\n              duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n            });\n          },\n          () => {\n            handleErrorCase();\n          },\n        );\n\n        // It is very important that we return the original promise here, because Next.js attaches various properties\n        // to that promise and will throw if they are not on the returned value.\n        return maybePromiseResult;\n      } else {\n        captureCheckIn({\n          checkInId,\n          monitorSlug,\n          status: 'ok',\n          duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n        });\n        return maybePromiseResult;\n      }\n    },\n  });\n}\n","import type { TransactionSource } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getCurrentScope,\n  getRootSpan,\n  handleCallbackErrors,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setCapturedScopesOnSpan,\n  startSpan,\n  winterCGRequestToRequestData,\n  withIsolationScope,\n} from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\nimport type { EdgeRouteHandler } from '../edge/types';\n\n/**\n * Wraps Next.js middleware with Sentry error and performance instrumentation.\n *\n * @param middleware The middleware handler.\n * @returns a wrapped middleware handler.\n */\nexport function wrapMiddlewareWithSentry(\n  middleware: H,\n): (...params: Parameters) => Promise> {\n  return new Proxy(middleware, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      const tunnelRoute =\n        '_sentryRewritesTunnelPath' in globalThis\n          ? (globalThis as Record)._sentryRewritesTunnelPath\n          : undefined;\n\n      if (tunnelRoute && typeof tunnelRoute === 'string') {\n        const req: unknown = args[0];\n        // Check if the current request matches the tunnel route\n        if (req instanceof Request) {\n          const url = new URL(req.url);\n          const isTunnelRequest = url.pathname.startsWith(tunnelRoute);\n\n          if (isTunnelRequest) {\n            // Create a simple response that mimics NextResponse.next() so we don't need to import internals here\n            // which breaks next 13 apps\n            // https://github.com/vercel/next.js/blob/c12c9c1f78ad384270902f0890dc4cd341408105/packages/next/src/server/web/spec-extension/response.ts#L146\n            return new Response(null, {\n              status: 200,\n              headers: {\n                'x-middleware-next': '1',\n              },\n            }) as ReturnType;\n          }\n        }\n      }\n      // TODO: We still should add central isolation scope creation for when our build-time instrumentation does not work anymore with turbopack.\n      return withIsolationScope(isolationScope => {\n        const req: unknown = args[0];\n        const currentScope = getCurrentScope();\n\n        let spanName: string;\n        let spanSource: TransactionSource;\n\n        if (req instanceof Request) {\n          isolationScope.setSDKProcessingMetadata({\n            normalizedRequest: winterCGRequestToRequestData(req),\n          });\n          spanName = `middleware ${req.method}`;\n          spanSource = 'url';\n        } else {\n          spanName = 'middleware';\n          spanSource = 'component';\n        }\n\n        currentScope.setTransactionName(spanName);\n\n        const activeSpan = getActiveSpan();\n\n        if (activeSpan) {\n          // If there is an active span, it likely means that the automatic Next.js OTEL instrumentation worked and we can\n          // rely on that for parameterization.\n          spanName = 'middleware';\n          spanSource = 'component';\n\n          const rootSpan = getRootSpan(activeSpan);\n          if (rootSpan) {\n            setCapturedScopesOnSpan(rootSpan, currentScope, isolationScope);\n          }\n        }\n\n        return startSpan(\n          {\n            name: spanName,\n            op: 'http.server.middleware',\n            attributes: {\n              [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: spanSource,\n              [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.nextjs.wrap_middleware',\n            },\n          },\n          () => {\n            return handleCallbackErrors(\n              () => wrappingTarget.apply(thisArg, args),\n              error => {\n                captureException(error, {\n                  mechanism: {\n                    type: 'auto.function.nextjs.wrap_middleware',\n                    handled: false,\n                  },\n                });\n              },\n              () => {\n                waitUntil(flushSafelyWithTimeout());\n              },\n            );\n          },\n        );\n      });\n    },\n  });\n}\n","import {\n  addNonEnumerableProperty,\n  captureException,\n  extractTraceparentData,\n  getCurrentScope,\n  withIsolationScope,\n} from '@sentry/core';\n\ninterface FunctionComponent {\n  (...args: unknown[]): unknown;\n}\n\ninterface ClassComponent {\n  new (...args: unknown[]): {\n    props?: unknown;\n    render(...args: unknown[]): unknown;\n  };\n}\n\nfunction storeCapturedEventIdOnError(error: unknown, eventId: string | undefined): void {\n  if (error && typeof error === 'object') {\n    addNonEnumerableProperty(error as Record, '__sentry_event_id__', eventId);\n  }\n}\n\nfunction isReactClassComponent(target: unknown): target is ClassComponent {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return typeof target === 'function' && target?.prototype?.isReactComponent;\n}\n\n/**\n * Wraps a page component with Sentry error instrumentation.\n */\nexport function wrapPageComponentWithSentry(pageComponent: FunctionComponent | ClassComponent): unknown {\n  if (isReactClassComponent(pageComponent)) {\n    return class SentryWrappedPageComponent extends pageComponent {\n      public render(...args: unknown[]): unknown {\n        return withIsolationScope(() => {\n          const scope = getCurrentScope();\n          // We extract the sentry trace data that is put in the component props by datafetcher wrappers\n          const sentryTraceData =\n            typeof this.props === 'object' &&\n            this.props !== null &&\n            '_sentryTraceData' in this.props &&\n            typeof this.props._sentryTraceData === 'string'\n              ? this.props._sentryTraceData\n              : undefined;\n\n          if (sentryTraceData) {\n            const traceparentData = extractTraceparentData(sentryTraceData);\n            scope.setContext('trace', {\n              span_id: traceparentData?.parentSpanId,\n              trace_id: traceparentData?.traceId,\n            });\n          }\n\n          try {\n            return super.render(...args);\n          } catch (e) {\n            const eventId = captureException(e, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.page_class',\n              },\n            });\n            storeCapturedEventIdOnError(e, eventId);\n            throw e;\n          }\n        });\n      }\n    };\n  } else if (typeof pageComponent === 'function') {\n    return new Proxy(pageComponent, {\n      apply(target, thisArg, argArray: [{ _sentryTraceData?: string } | undefined]) {\n        return withIsolationScope(() => {\n          const scope = getCurrentScope();\n          // We extract the sentry trace data that is put in the component props by datafetcher wrappers\n          const sentryTraceData = argArray?.[0]?._sentryTraceData;\n\n          if (sentryTraceData) {\n            const traceparentData = extractTraceparentData(sentryTraceData);\n            scope.setContext('trace', {\n              span_id: traceparentData?.parentSpanId,\n              trace_id: traceparentData?.traceId,\n            });\n          }\n\n          try {\n            return target.apply(thisArg, argArray);\n          } catch (e) {\n            const eventId = captureException(e, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.page_function',\n              },\n            });\n            storeCapturedEventIdOnError(e, eventId);\n            throw e;\n          }\n        });\n      },\n    });\n  } else {\n    return pageComponent;\n  }\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getIsolationScope,\n  handleCallbackErrors,\n  SPAN_STATUS_ERROR,\n  SPAN_STATUS_OK,\n  winterCGHeadersToDict,\n} from '@sentry/core';\nimport type { GenerationFunctionContext } from '../common/types';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\n\n/**\n * Wraps a generation function (e.g. generateMetadata) with Sentry error instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapGenerationFunctionWithSentry any>(\n  generationFunction: F,\n  context: GenerationFunctionContext,\n): F {\n  return new Proxy(generationFunction, {\n    apply: (originalFunction, thisArg, args) => {\n      const isolationScope = getIsolationScope();\n\n      let headers = undefined;\n      // We try-catch here just in case anything goes wrong with the async storage since it is Next.js internal API\n      try {\n        headers = context.requestAsyncStorage?.getStore()?.headers;\n      } catch {\n        /** empty */\n      }\n\n      const headersDict = headers ? winterCGHeadersToDict(headers) : undefined;\n\n      isolationScope.setSDKProcessingMetadata({\n        normalizedRequest: {\n          headers: headersDict,\n        } satisfies RequestEventData,\n      });\n\n      return handleCallbackErrors(\n        () => originalFunction.apply(thisArg, args),\n        error => {\n          const span = getActiveSpan();\n          const { componentRoute, componentType, generationFunctionIdentifier } = context;\n          let shouldCapture = true;\n          isolationScope.setTransactionName(`${componentType}.${generationFunctionIdentifier} (${componentRoute})`);\n\n          if (span) {\n            if (isNotFoundNavigationError(error)) {\n              // We don't want to report \"not-found\"s\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n            } else if (isRedirectNavigationError(error)) {\n              // We don't want to report redirects\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_OK });\n            } else {\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n            }\n          }\n\n          if (shouldCapture) {\n            captureException(error, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.generation_function',\n                data: {\n                  function: generationFunctionIdentifier,\n                },\n              },\n            });\n          }\n        },\n        () => {\n          waitUntil(flushSafelyWithTimeout());\n        },\n      );\n    },\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  continueTrace,\n  debug,\n  getActiveSpan,\n  getClient,\n  getIsolationScope,\n  handleCallbackErrors,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  SPAN_STATUS_ERROR,\n  startSpan,\n  withIsolationScope,\n} from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\n\ninterface Options {\n  formData?: FormData;\n\n  /**\n   * Headers as returned from `headers()`.\n   *\n   * Currently accepts both a plain `Headers` object and `Promise` to be compatible with async APIs introduced in Next.js 15: https://github.com/vercel/next.js/pull/68812\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  headers?: Headers | Promise;\n\n  /**\n   * Whether the server action response should be included in any events captured within the server action.\n   */\n  recordResponse?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withServerActionInstrumentation any>(\n  serverActionName: string,\n  callback: A,\n): Promise>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withServerActionInstrumentation any>(\n  serverActionName: string,\n  options: Options,\n  callback: A,\n): Promise>;\n\n/**\n * Wraps a Next.js Server Action implementation with Sentry Error and Performance instrumentation.\n */\nexport function withServerActionInstrumentation unknown>(\n  ...args: [string, Options, A] | [string, A]\n): Promise> {\n  if (typeof args[1] === 'function') {\n    const [serverActionName, callback] = args;\n    return withServerActionInstrumentationImplementation(serverActionName, {}, callback);\n  } else {\n    const [serverActionName, options, callback] = args;\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    return withServerActionInstrumentationImplementation(serverActionName, options, callback!);\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function withServerActionInstrumentationImplementation any>(\n  serverActionName: string,\n  options: Options,\n  callback: A,\n): Promise> {\n  return withIsolationScope(async isolationScope => {\n    const sendDefaultPii = getClient()?.getOptions().sendDefaultPii;\n\n    let sentryTraceHeader;\n    let baggageHeader;\n    const fullHeadersObject: Record = {};\n    try {\n      const awaitedHeaders: Headers = await options.headers;\n      sentryTraceHeader = awaitedHeaders?.get('sentry-trace') ?? undefined;\n      baggageHeader = awaitedHeaders?.get('baggage');\n      awaitedHeaders?.forEach((value, key) => {\n        fullHeadersObject[key] = value;\n      });\n    } catch {\n      DEBUG_BUILD &&\n        debug.warn(\n          \"Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.\",\n        );\n    }\n\n    isolationScope.setTransactionName(`serverAction/${serverActionName}`);\n    isolationScope.setSDKProcessingMetadata({\n      normalizedRequest: {\n        headers: fullHeadersObject,\n      } satisfies RequestEventData,\n    });\n\n    // Normally, there is an active span here (from Next.js OTEL) and we just use that as parent\n    // Else, we manually continueTrace from the incoming headers\n    const continueTraceIfNoActiveSpan = getActiveSpan()\n      ? (_opts: unknown, callback: () => T) => callback()\n      : continueTrace;\n\n    return continueTraceIfNoActiveSpan(\n      {\n        sentryTrace: sentryTraceHeader,\n        baggage: baggageHeader,\n      },\n      async () => {\n        try {\n          return await startSpan(\n            {\n              op: 'function.server_action',\n              name: `serverAction/${serverActionName}`,\n              forceTransaction: true,\n              attributes: {\n                [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n                [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.nextjs.server_action',\n              },\n            },\n            async span => {\n              // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n              const result = await handleCallbackErrors(callback, error => {\n                if (isNotFoundNavigationError(error)) {\n                  // We don't want to report \"not-found\"s\n                  span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n                } else if (isRedirectNavigationError(error)) {\n                  // Don't do anything for redirects\n                } else {\n                  span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n                  captureException(error, {\n                    mechanism: {\n                      handled: false,\n                      type: 'auto.function.nextjs.server_action',\n                    },\n                  });\n                }\n              });\n\n              if (options.recordResponse !== undefined ? options.recordResponse : sendDefaultPii) {\n                getIsolationScope().setExtra('server_action_result', result);\n              }\n\n              if (options.formData) {\n                options.formData.forEach((value, key) => {\n                  getIsolationScope().setExtra(\n                    `server_action_form_data.${key}`,\n                    typeof value === 'string' ? value : '[non-string value]',\n                  );\n                });\n              }\n\n              return result;\n            },\n          );\n        } finally {\n          waitUntil(flushSafelyWithTimeout());\n        }\n      },\n    );\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport { captureException, headersToDict, withScope } from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\n\ntype RequestInfo = {\n  path: string;\n  method: string;\n  headers: Record;\n};\n\ntype ErrorContext = {\n  routerKind: string; // 'Pages Router' | 'App Router'\n  routePath: string;\n  routeType: string; // 'render' | 'route' | 'middleware'\n};\n\n/**\n * Reports errors passed to the the Next.js `onRequestError` instrumentation hook.\n */\nexport function captureRequestError(error: unknown, request: RequestInfo, errorContext: ErrorContext): void {\n  withScope(scope => {\n    scope.setSDKProcessingMetadata({\n      normalizedRequest: {\n        headers: headersToDict(request.headers),\n        method: request.method,\n      } satisfies RequestEventData,\n    });\n\n    scope.setContext('nextjs', {\n      request_path: request.path,\n      router_kind: errorContext.routerKind,\n      router_path: errorContext.routePath,\n      route_type: errorContext.routeType,\n    });\n\n    scope.setTransactionName(`${request.method} ${errorContext.routePath}`);\n\n    captureException(error, {\n      mechanism: {\n        handled: false,\n        type: 'auto.function.nextjs.on_request_error',\n      },\n    });\n\n    waitUntil(flushSafelyWithTimeout());\n  });\n}\n","import {\n  captureException,\n  continueTrace,\n  debug,\n  getActiveSpan,\n  httpRequestToRequestData,\n  isString,\n  objectify,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setHttpStatus,\n  startSpanManual,\n  withIsolationScope,\n} from '@sentry/core';\nimport type { NextApiRequest } from 'next';\nimport type { AugmentedNextApiResponse, NextApiHandler } from '../types';\nimport { flushSafelyWithTimeout, waitUntil } from '../utils/responseEnd';\nimport { dropNextjsRootContext, escapeNextjsTracing } from '../utils/tracingUtils';\n\nexport type AugmentedNextApiRequest = NextApiRequest & {\n  __withSentry_applied__?: boolean;\n};\n\n/**\n * Wrap the given API route handler with error nad performance monitoring.\n *\n * @param apiHandler The handler exported from the user's API page route file, which may or may not already be\n * wrapped with `withSentry`\n * @param parameterizedRoute The page's parameterized route.\n * @returns The wrapped handler which will always return a Promise.\n */\nexport function wrapApiHandlerWithSentry(apiHandler: NextApiHandler, parameterizedRoute: string): NextApiHandler {\n  return new Proxy(apiHandler, {\n    apply: (\n      wrappingTarget,\n      thisArg,\n      args: [AugmentedNextApiRequest | undefined, AugmentedNextApiResponse | undefined],\n    ) => {\n      dropNextjsRootContext();\n      return escapeNextjsTracing(() => {\n        const [req, res] = args;\n\n        if (!req) {\n          debug.log(\n            `Wrapped API handler on route \"${parameterizedRoute}\" was not passed a request object. Will not instrument.`,\n          );\n          return wrappingTarget.apply(thisArg, args);\n        } else if (!res) {\n          debug.log(\n            `Wrapped API handler on route \"${parameterizedRoute}\" was not passed a response object. Will not instrument.`,\n          );\n          return wrappingTarget.apply(thisArg, args);\n        }\n\n        // Prevent double wrapping of the same request.\n        if (req.__withSentry_applied__) {\n          return wrappingTarget.apply(thisArg, args);\n        }\n        req.__withSentry_applied__ = true;\n\n        return withIsolationScope(isolationScope => {\n          // Normally, there is an active span here (from Next.js OTEL) and we just use that as parent\n          // Else, we manually continueTrace from the incoming headers\n          const continueTraceIfNoActiveSpan = getActiveSpan()\n            ? (_opts: unknown, callback: () => T) => callback()\n            : continueTrace;\n\n          return continueTraceIfNoActiveSpan(\n            {\n              sentryTrace:\n                req.headers && isString(req.headers['sentry-trace']) ? req.headers['sentry-trace'] : undefined,\n              baggage: req.headers?.baggage,\n            },\n            () => {\n              const reqMethod = `${(req.method || 'GET').toUpperCase()} `;\n              const normalizedRequest = httpRequestToRequestData(req);\n\n              isolationScope.setSDKProcessingMetadata({ normalizedRequest });\n              isolationScope.setTransactionName(`${reqMethod}${parameterizedRoute}`);\n\n              return startSpanManual(\n                {\n                  name: `${reqMethod}${parameterizedRoute}`,\n                  op: 'http.server',\n                  forceTransaction: true,\n                  attributes: {\n                    [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n                    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.nextjs',\n                  },\n                },\n                async span => {\n                  // eslint-disable-next-line @typescript-eslint/unbound-method\n                  res.end = new Proxy(res.end, {\n                    apply(target, thisArg, argArray) {\n                      setHttpStatus(span, res.statusCode);\n                      span.end();\n                      waitUntil(flushSafelyWithTimeout());\n                      return target.apply(thisArg, argArray);\n                    },\n                  });\n                  try {\n                    return await wrappingTarget.apply(thisArg, args);\n                  } catch (e) {\n                    // In case we have a primitive, wrap it in the equivalent wrapper class (string -> String, etc.) so that we can\n                    // store a seen flag on it. (Because of the one-way-on-Vercel-one-way-off-of-Vercel approach we've been forced\n                    // to take, it can happen that the same thrown object gets caught in two different ways, and flagging it is a\n                    // way to prevent it from actually being reported twice.)\n                    const objectifiedErr = objectify(e);\n\n                    captureException(objectifiedErr, {\n                      mechanism: {\n                        type: 'auto.http.nextjs.api_handler',\n                        handled: false,\n                        data: {\n                          wrapped_handler: wrappingTarget.name,\n                          function: 'withSentry',\n                        },\n                      },\n                    });\n\n                    setHttpStatus(span, 500);\n                    span.end();\n\n                    // we need to await the flush here to ensure that the error is captured\n                    // as the runtime freezes as soon as the error is thrown below\n                    await flushSafelyWithTimeout();\n\n                    // We rethrow here so that nextjs can do with the error whatever it would normally do. (Sometimes \"whatever it\n                    // would normally do\" is to allow the error to bubble up to the global handlers - another reason we need to mark\n                    // the error as already having been captured.)\n                    throw objectifiedErr;\n                  }\n                },\n              );\n            },\n          );\n        });\n      });\n    },\n  });\n}\n","// import/export got a false positive, and affects most of our index barrel files\n// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703\n/* eslint-disable import/export */\nimport {\n  ATTR_HTTP_ROUTE,\n  ATTR_URL_QUERY,\n  SEMATTRS_HTTP_METHOD,\n  SEMATTRS_HTTP_TARGET,\n} from '@opentelemetry/semantic-conventions';\nimport type { EventProcessor } from '@sentry/core';\nimport {\n  applySdkMetadata,\n  debug,\n  extractTraceparentData,\n  getClient,\n  getGlobalScope,\n  GLOBAL_OBJ,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport type { NodeClient, NodeOptions } from '@sentry/node';\nimport { getDefaultIntegrations, httpIntegration, init as nodeInit } from '@sentry/node';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { devErrorSymbolicationEventProcessor } from '../common/devErrorSymbolicationEventProcessor';\nimport { getVercelEnv } from '../common/getVercelEnv';\nimport { ATTR_NEXT_ROUTE, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../common/nextSpanAttributes';\nimport {\n  TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,\n  TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL,\n  TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,\n} from '../common/span-attributes-with-logic-attached';\nimport { isBuild } from '../common/utils/isBuild';\nimport { isCloudflareWaitUntilAvailable } from '../common/utils/responseEnd';\nimport { setUrlProcessingMetadata } from '../common/utils/setUrlProcessingMetadata';\nimport { distDirRewriteFramesIntegration } from './distDirRewriteFramesIntegration';\nimport { handleOnSpanStart } from './handleOnSpanStart';\nimport { prepareSafeIdGeneratorContext } from './prepareSafeIdGeneratorContext';\nimport { maybeCompleteCronCheckIn } from './vercelCronsMonitoring';\nimport { maybeCleanupQueueSpan } from './vercelQueuesMonitoring';\n\nexport * from '@sentry/node';\n\nexport { captureUnderscoreErrorException } from '../common/pages-router-instrumentation/_error';\n\n// Override core span methods with Next.js-specific implementations that support Cache Components\nexport { startSpan, startSpanManual, startInactiveSpan } from '../common/utils/nextSpan';\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryRewriteFramesDistDir?: string;\n  _sentryRelease?: string;\n};\n\n/**\n * A passthrough error boundary for the server that doesn't depend on any react. Error boundaries don't catch SSR errors\n * so they should simply be a passthrough.\n */\nexport const ErrorBoundary = (props: React.PropsWithChildren): React.ReactNode => {\n  if (!props.children) {\n    return null;\n  }\n\n  if (typeof props.children === 'function') {\n    return (props.children as () => React.ReactNode)();\n  }\n\n  // since Next.js >= 10 requires React ^16.6.0 we are allowed to return children like this here\n  return props.children as React.ReactNode;\n};\n\n/**\n * A passthrough redux enhancer for the server that doesn't depend on anything from the `@sentry/react` package.\n */\nexport function createReduxEnhancer() {\n  return (createStore: unknown) => createStore;\n}\n\n/**\n * A passthrough error boundary wrapper for the server that doesn't depend on any react. Error boundaries don't catch\n * SSR errors so they should simply be a passthrough.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withErrorBoundary

      >(\n WrappedComponent: React.ComponentType

      ,\n): React.FC

      {\n return WrappedComponent as React.FC

      ;\n}\n\n/**\n * Just a passthrough since we're on the server and showing the report dialog on the server doesn't make any sense.\n */\nexport function showReportDialog(): void {\n return;\n}\n\n/**\n * Returns the runtime configuration for the SDK based on the environment.\n * When running on OpenNext/Cloudflare, returns cloudflare runtime config.\n */\nfunction getCloudflareRuntimeConfig(): { runtime: { name: string } } | undefined {\n if (isCloudflareWaitUntilAvailable()) {\n // todo: add version information?\n return { runtime: { name: 'cloudflare' } };\n }\n return undefined;\n}\n\n/** Inits the Sentry NextJS SDK on node. */\n// eslint-disable-next-line complexity\nexport function init(options: NodeOptions): NodeClient | undefined {\n prepareSafeIdGeneratorContext();\n if (isBuild()) {\n return;\n }\n\n if (!DEBUG_BUILD && options.debug) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.',\n );\n }\n\n const customDefaultIntegrations = getDefaultIntegrations(options)\n .filter(integration => integration.name !== 'Http')\n .concat(\n // We are using the HTTP integration without instrumenting incoming HTTP requests because Next.js does that by itself.\n httpIntegration({\n disableIncomingRequestSpans: true,\n }),\n );\n\n // Turn off Next.js' own fetch instrumentation (only when we manage OTEL)\n // https://github.com/lforst/nextjs-fork/blob/1994fd186defda77ad971c36dc3163db263c993f/packages/next/src/server/lib/patch-fetch.ts#L245\n // Enable with custom OTel setup: https://github.com/getsentry/sentry-javascript/issues/17581\n if (!options.skipOpenTelemetrySetup) {\n process.env.NEXT_OTEL_FETCH_DISABLED = '1';\n }\n\n // This value is injected at build time, based on the output directory specified in the build config. Though a default\n // is set there, we set it here as well, just in case something has gone wrong with the injection.\n const distDirName = process.env._sentryRewriteFramesDistDir || globalWithInjectedValues._sentryRewriteFramesDistDir;\n if (distDirName) {\n customDefaultIntegrations.push(distDirRewriteFramesIntegration({ distDirName }));\n }\n\n // Detect if running on OpenNext/Cloudflare and get runtime config\n const cloudflareConfig = getCloudflareRuntimeConfig();\n\n const opts: NodeOptions = {\n environment: options.environment || process.env.SENTRY_ENVIRONMENT || getVercelEnv(false) || process.env.NODE_ENV,\n release: process.env._sentryRelease || globalWithInjectedValues._sentryRelease,\n defaultIntegrations: customDefaultIntegrations,\n ...options,\n // Override runtime to 'cloudflare' when running on OpenNext/Cloudflare\n ...cloudflareConfig,\n };\n\n if (DEBUG_BUILD && opts.debug) {\n debug.enable();\n }\n\n DEBUG_BUILD && debug.log('Initializing SDK...');\n\n if (sdkAlreadyInitialized()) {\n DEBUG_BUILD && debug.log('SDK already initialized');\n return;\n }\n\n // Use appropriate SDK metadata based on the runtime environment\n applySdkMetadata(opts, 'nextjs', ['nextjs', cloudflareConfig ? 'cloudflare' : 'node']);\n\n const client = nodeInit(opts);\n\n client?.on('beforeSampling', ({ spanAttributes }, samplingDecision) => {\n // There are situations where the Next.js Node.js server forwards requests for the Edge Runtime server (e.g. in\n // middleware) and this causes spans for Sentry ingest requests to be created. These are not exempt from our tracing\n // because we didn't get the chance to do `suppressTracing`, since this happens outside of userland.\n // We need to drop these spans.\n if (\n // eslint-disable-next-line deprecation/deprecation\n (typeof spanAttributes[SEMATTRS_HTTP_TARGET] === 'string' &&\n // eslint-disable-next-line deprecation/deprecation\n spanAttributes[SEMATTRS_HTTP_TARGET].includes('sentry_key') &&\n // eslint-disable-next-line deprecation/deprecation\n spanAttributes[SEMATTRS_HTTP_TARGET].includes('sentry_client')) ||\n (typeof spanAttributes[ATTR_URL_QUERY] === 'string' &&\n spanAttributes[ATTR_URL_QUERY].includes('sentry_key') &&\n spanAttributes[ATTR_URL_QUERY].includes('sentry_client'))\n ) {\n samplingDecision.decision = false;\n }\n });\n\n client?.on('spanStart', handleOnSpanStart);\n client?.on('spanEnd', maybeCompleteCronCheckIn);\n client?.on('spanEnd', maybeCleanupQueueSpan);\n\n getGlobalScope().addEventProcessor(\n Object.assign(\n (event => {\n if (event.type === 'transaction') {\n // Filter out transactions for static assets\n // This regex matches the default path to the static assets (`_next/static`) and could potentially filter out too many transactions.\n // We match `/_next/static/` anywhere in the transaction name because its location may change with the basePath setting.\n if (event.transaction?.match(/^GET (\\/.*)?\\/_next\\/static\\//)) {\n return null;\n }\n\n // Filter out requests to resolve source maps for stack frames in dev mode\n if (event.transaction?.match(/\\/__nextjs_original-stack-frame/)) {\n return null;\n }\n\n // Filter out /404 transactions which seem to be created excessively\n if (\n // Pages router\n event.transaction === '/404' ||\n // App router (could be \"GET /404\", \"POST /404\", ...)\n event.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \\/(404|_not-found)$/)\n ) {\n return null;\n }\n\n // Filter transactions that we explicitly want to drop.\n if (event.contexts?.trace?.data?.[TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]) {\n return null;\n }\n\n // Next.js 13 sometimes names the root transactions like this containing useless tracing.\n if (event.transaction === 'NextServer.getRequestHandler') {\n return null;\n }\n\n // Next.js 13 is not correctly picking up tracing data for trace propagation so we use a back-fill strategy\n if (typeof event.contexts?.trace?.data?.[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL] === 'string') {\n const traceparentData = extractTraceparentData(\n event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL],\n );\n\n if (traceparentData?.parentSampled === false) {\n return null;\n }\n }\n\n return event;\n } else {\n return event;\n }\n }) satisfies EventProcessor,\n { id: 'NextLowQualityTransactionsFilter' },\n ),\n );\n\n getGlobalScope().addEventProcessor(\n Object.assign(\n ((event, hint) => {\n if (event.type !== undefined) {\n return event;\n }\n\n const originalException = hint.originalException;\n\n const isPostponeError =\n typeof originalException === 'object' &&\n originalException !== null &&\n '$$typeof' in originalException &&\n originalException.$$typeof === Symbol.for('react.postpone');\n\n if (isPostponeError) {\n // Postpone errors are used for partial-pre-rendering (PPR)\n return null;\n }\n\n // We don't want to capture suspense errors as they are simply used by React/Next.js for control flow\n const exceptionMessage = event.exception?.values?.[0]?.value;\n if (\n exceptionMessage?.includes('Suspense Exception: This is not a real error!') ||\n exceptionMessage?.includes('Suspense Exception: This is not a real error, and should not leak')\n ) {\n return null;\n }\n\n return event;\n }) satisfies EventProcessor,\n { id: 'DropReactControlFlowErrors' },\n ),\n );\n\n // Use the preprocessEvent hook instead of an event processor, so that the users event processors receive the most\n // up-to-date value, but also so that the logic that detects changes to the transaction names to set the source to\n // \"custom\", doesn't trigger.\n client?.on('preprocessEvent', event => {\n // Enhance route handler transactions\n if (\n event.type === 'transaction' &&\n event.contexts?.trace?.data?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest'\n ) {\n event.contexts.trace.data[SEMANTIC_ATTRIBUTE_SENTRY_OP] = 'http.server';\n event.contexts.trace.op = 'http.server';\n\n if (event.transaction) {\n event.transaction = stripUrlQueryAndFragment(event.transaction);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const method = event.contexts.trace.data[SEMATTRS_HTTP_METHOD];\n // eslint-disable-next-line deprecation/deprecation\n const target = event.contexts?.trace?.data?.[SEMATTRS_HTTP_TARGET];\n const route = event.contexts.trace.data[ATTR_HTTP_ROUTE] || event.contexts.trace.data[ATTR_NEXT_ROUTE];\n const spanName = event.contexts.trace.data[ATTR_NEXT_SPAN_NAME];\n\n if (typeof method === 'string' && typeof route === 'string' && !route.startsWith('middleware')) {\n const cleanRoute = route.replace(/\\/route$/, '');\n event.transaction = `${method} ${cleanRoute}`;\n event.contexts.trace.data[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n // Preserve next.route in case it did not get hoisted\n event.contexts.trace.data[ATTR_NEXT_ROUTE] = cleanRoute;\n }\n\n // backfill transaction name for pages that would otherwise contain unparameterized routes\n if (event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL] && event.transaction !== 'GET /_app') {\n event.transaction = `${method} ${event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`;\n }\n\n const middlewareMatch =\n typeof spanName === 'string' && spanName.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);\n\n if (middlewareMatch) {\n const normalizedName = `middleware ${middlewareMatch[1]}`;\n event.transaction = normalizedName;\n event.contexts.trace.op = 'http.server.middleware';\n }\n\n // Next.js overrides transaction names for page loads that throw an error\n // but we want to keep the original target name\n if (event.transaction === 'GET /_error' && target) {\n event.transaction = `${method ? `${method} ` : ''}${target}`;\n }\n }\n\n // Next.js 13 is not correctly picking up tracing data for trace propagation so we use a back-fill strategy\n if (\n event.type === 'transaction' &&\n typeof event.contexts?.trace?.data?.[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL] === 'string'\n ) {\n const traceparentData = extractTraceparentData(event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);\n\n if (traceparentData?.traceId) {\n event.contexts.trace.trace_id = traceparentData.traceId;\n }\n\n if (traceparentData?.parentSpanId) {\n event.contexts.trace.parent_span_id = traceparentData.parentSpanId;\n }\n }\n\n setUrlProcessingMetadata(event);\n });\n\n if (process.env.NODE_ENV === 'development') {\n getGlobalScope().addEventProcessor(devErrorSymbolicationEventProcessor);\n }\n\n try {\n // @ts-expect-error `process.turbopack` is a magic string that will be replaced by Next.js\n if (process.turbopack) {\n getGlobalScope().setTag('turbopack', true);\n }\n } catch {\n // Noop\n // The statement above can throw because process is not defined on the client\n }\n\n DEBUG_BUILD && debug.log('SDK successfully initialized');\n\n return client;\n}\n\nfunction sdkAlreadyInitialized(): boolean {\n return !!getClient();\n}\n\nexport * from '../common';\n\nexport { wrapApiHandlerWithSentry } from '../common/pages-router-instrumentation/wrapApiHandlerWithSentry';\n"],"names":["GLOBAL_OBJ","SDK_VERSION","DEBUG_BUILD","getGlobalSingleton","debug","getFunctionName","addHandler","maybeInstrument","triggerHandlers","isString","isError","isEvent","isInstanceOf","isElement","htmlTreeAsString","isPrimitive","isVueViewModel","getVueInternalName","isRegExp","safeMathRandom","withRandomSafeContext","snipLine","addNonEnumerableProperty","safeDateNow","timestampInSeconds","uuid4","generateTraceId","_setSpanForScope","_getSpanForScope","updateSession","isPlainObject","dateTimestampInSeconds","truncate","merge","Scope","scope","isThenable","chainAndCopyPromiseLike","getMainCarrier","getSentryCarrier","getDefaultCurrentScope","getDefaultIsolationScope","carrier","getStackAsyncContextStrategy","getAsyncContextStrategy","propagationContext","generateSpanId","consoleSandbox","baggage","baggageHeaderToDynamicSamplingContext","parseSampleRate","extractOrgIdFromClient","getCapturedScopesOnSpan","generateSentryTraceHeader","generateTraceparentHeader","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SPAN_STATUS_UNSET","SPAN_STATUS_OK","getCurrentScope","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME","getActiveSpan","getRootSpan","SPAN_STATUS_ERROR","addGlobalErrorInstrumentationHandler","addGlobalUnhandledRejectionInstrumentationHandler","getClient","isMatchingPattern","DEFAULT_ENVIRONMENT","spanToJSON","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE","hasSpansEnabled","spanIsSampled","dynamicSamplingContextToSentryBaggageHeader","TRACE_FLAG_NONE","convertToPlainObject","isSyntheticEvent","normalize","dsn","dsnToString","getSdkMetadataForEnvelopeHeader","createEnvelope","createEventEnvelopeHeaders","getDynamicSamplingContextFromSpan","shouldIgnoreSpan","showSpanDropWarning","createSpanEnvelopeItem","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT","TRACE_FLAG_SAMPLED","spanTimeInputToSeconds","logSpanEnd","getStatusMessage","SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","timedEventsToMeasurements","convertSpanLinksForEnvelope","time","createSpanEnvelope","getSpanDescendants","spanToTransactionTraceContext","withScope","SentryNonRecordingSpan","handleCallbackErrors","shouldContinueTrace","propagationContextFromHeaders","freezeDscOnSpan","getIsolationScope","addChildSpanToSpan","logSpanStart","setCapturedScopesOnSpan","sampleSpan","SentrySpan","SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON","removeChildSpanFromSpan","startInactiveSpan","resolvedSyncPromise","rejectedSyncPromise","normalizeStackTracePath","getGlobalScope","spanToTraceContext","addExceptionMechanism","getCombinedScopeData","applyScopeDataToEvent","eventProcessors","notifyEventProcessors","getFilenameToDebugIdMap","parseEventHintOrCaptureContext","withIsolationScope","startNewTrace","session","makeSession","closeSession","makeDsn","getTraceContextFromScope","dynamicSamplingContext","getDynamicSamplingContextFromScope","_getTraceInfoFromScope","isParameterizedString","getSequenceAttribute","SEVERITY_TEXT_TO_SEVERITY_NUMBER","serializeAttributes","envelope","createLogEnvelope","createMetricEnvelope","safeUnref","makePromiseBuffer","forEachEnvelopeItem","envelopeItemTypeToDataCategory","isRateLimited","envelopeContainsItemType","serializeEnvelope","updateRateLimits","SENTRY_BUFFER_FULL_ERROR","DEFAULT_TRANSPORT_BUFFER_SIZE","getEnvelopeEndpointWithUrlEncodedAuth","_INTERNAL_flushLogsBuffer","_INTERNAL_flushMetricsBuffer","checkOrSetAlreadyCaught","integration","setupIntegration","afterSetupIntegrations","createEventEnvelope","addItemToEnvelope","createAttachmentEnvelopeItem","createSessionEnvelope","setupIntegrations","prepareEvent","getPossibleEventMessages","createClientReportEnvelope","convertTransactionEventToSpanJson","convertSpanJsonToTransactionEvent","reparentChildSpans","extractExceptionKeysForMessage","isErrorEvent","normalizeToSize","addExceptionTypeValue","Client","registerSpanErrorInstrumentation","addUserAgentToTransportHeaders","eventFromUnknownInput","eventFromMessage","createCheckInEnvelope","parseRetryAfterHeader","dsnFromString","SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD","SEMANTIC_ATTRIBUTE_URL_FULL","url","parseStringToURLObject","isURLObjectRelative","parseEnvelope","isEnabled","hasExternalPropagationContext","spanToTraceHeader","TRACEPARENT_REGEXP","spanToTraceparentHeader","stringMatchesSomePattern","traceData","getTraceData","getOriginalFunction","defineIntegration","getEventDescription","applyAggregateErrorsToEvent","exceptionFromError","stripMetadataFromStackFrames","addMetadataToStackFrames","getClientIPAddress","ipHeaderNames","parseCookie","CONSOLE_LEVELS","fill","originalConsoleMethods","addConsoleInstrumentationHandler","severityLevelFromString","safeJoin","captureException","getFramesFromEvent","relative","basename","startSpan","setHttpStatus","addBreadcrumb","startSpanManual","_INTERNAL_copyFlagsFromScopeToEvent","_INTERNAL_insertFlagToScope","_INTERNAL_addFeatureFlagToActiveSpan","GEN_AI_CONVERSATION_ID_ATTRIBUTE","isRequest","SENTRY_BAGGAGE_KEY_PREFIX","stripDataUrlContent","getSanitizedUrlStringFromUrlObject","captureError","attributes","MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE","isValidContentItem","MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE","MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE","MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE","getClientInfoForTransport","getSessionDataForTransport","MCP_SERVER_NAME_ATTRIBUTE","MCP_SERVER_TITLE_ATTRIBUTE","MCP_SERVER_VERSION_ATTRIBUTE","getProtocolVersionForTransport","MCP_SESSION_ID_ATTRIBUTE","CLIENT_ADDRESS_ATTRIBUTE","CLIENT_PORT_ATTRIBUTE","MCP_TRANSPORT_ATTRIBUTE","NETWORK_TRANSPORT_ATTRIBUTE","NETWORK_PROTOCOL_VERSION_ATTRIBUTE","MCP_PROTOCOL_VERSION_ATTRIBUTE","extractSessionDataFromInitializeResponse","buildServerAttributesFromInfo","extractToolResultAttributes","extractPromptResultAttributes","MCP_TOOL_NAME_ATTRIBUTE","MCP_RESOURCE_URI_ATTRIBUTE","MCP_PROMPT_NAME_ATTRIBUTE","MCP_REQUEST_ARGUMENT","MCP_LOGGING_LEVEL_ATTRIBUTE","MCP_LOGGING_LOGGER_ATTRIBUTE","MCP_LOGGING_DATA_TYPE_ATTRIBUTE","MCP_LOGGING_MESSAGE_ATTRIBUTE","extractTargetInfo","MCP_REQUEST_ID_ATTRIBUTE","getRequestArguments","MCP_SERVER_OP_VALUE","MCP_FUNCTION_ORIGIN_VALUE","MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE","MCP_NOTIFICATION_ORIGIN_VALUE","MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE","MCP_ROUTE_SOURCE_VALUE","buildTransportAttributes","MCP_METHOD_NAME_ATTRIBUTE","buildTypeSpecificAttributes","filterMcpPiiFromSpanData","isJsonRpcRequest","extractSessionDataFromInitializeRequest","storeSessionDataForTransport","buildMcpServerSpanConfig","buildClientAttributesFromInfo","storeSpanForRequest","withActiveSpan","isJsonRpcNotification","createMcpNotificationSpan","createMcpOutgoingNotificationSpan","isJsonRpcResponse","updateSessionDataForTransport","completeSpanWithResults","cleanupPendingSpansForTransport","cleanupSessionDataForTransport","validateMcpServerInstance","transport","wrapTransportOnMessage","wrapTransportSend","wrapTransportOnClose","wrapTransportError","wrapAllMCPHandlers","_INTERNAL_captureLog","formatConsoleArgs","hasConsoleSubstitutions","createConsoleTemplateAttributes","_INTERNAL_captureMetric","isContentMedia","stripInlineMediaFromSingleMessage","GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE","truncateGenAiStringInput","truncateGenAiMessages","GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE","GEN_AI_TOOL_NAME_ATTRIBUTE","GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE","toolCallSpanContextMap","AI_PROMPT_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","AI_PROMPT_MESSAGES_ATTRIBUTE","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","getTruncatedJsonString","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE","GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE","GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE","GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE","GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE","GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE","GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE","GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE","GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE","INVOKE_AGENT_OPS","GENERATE_CONTENT_OPS","EMBEDDINGS_OPS","RERANK_OPS","AI_TOOL_CALL_NAME_ATTRIBUTE","AI_TOOL_CALL_ID_ATTRIBUTE","AI_OPERATION_ID_ATTRIBUTE","accumulateTokensForParent","applyToolDescriptionsAndTokens","applyAccumulatedTokens","AI_RESPONSE_TEXT_ATTRIBUTE","AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","AI_RESPONSE_FINISH_REASON_ATTRIBUTE","GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE","AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","AI_USAGE_PROMPT_TOKENS_ATTRIBUTE","AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE","AI_USAGE_TOKENS_ATTRIBUTE","AI_PROMPT_TOOLS_ATTRIBUTE","convertAvailableToolsToJsonString","OPERATION_NAME_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","AI_RESPONSE_OBJECT_ATTRIBUTE","AI_TOOL_CALL_ARGS_ATTRIBUTE","GEN_AI_TOOL_INPUT_ATTRIBUTE","AI_TOOL_CALL_RESULT_ATTRIBUTE","GEN_AI_TOOL_OUTPUT_ATTRIBUTE","AI_SCHEMA_ATTRIBUTE","AI_MODEL_ID_ATTRIBUTE","GEN_AI_REQUEST_MODEL_ATTRIBUTE","AI_VALUES_ATTRIBUTE","GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE","GEN_AI_TOOL_CALL_ID_ATTRIBUTE","GEN_AI_TOOL_TYPE_ATTRIBUTE","AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE","requestMessagesFromPrompt","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","getSpanOpFromName","DO_SPAN_NAME_PREFIX","AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE","GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","OPENAI_RESPONSE_MODEL_ATTRIBUTE","OPENAI_RESPONSE_ID_ATTRIBUTE","GEN_AI_RESPONSE_ID_ATTRIBUTE","OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE","OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE","OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE","GEN_AI_REQUEST_TOP_P_ATTRIBUTE","GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE","GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE","GEN_AI_REQUEST_STREAM_ATTRIBUTE","GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE","GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE","RESPONSE_EVENT_TYPES","isChatCompletionChunk","isResponsesApiStreamEvent","setCommonResponseAttributes","setTokenUsageAttributes","GEN_AI_RESPONSE_STREAMING_ATTRIBUTE","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","GEN_AI_SYSTEM_ATTRIBUTE","extractRequestParameters","isChatCompletionResponse","addChatCompletionAttributes","isResponsesApiResponse","addResponsesApiAttributes","isEmbeddingsResponse","addEmbeddingsAttributes","isConversationResponse","addConversationAttributes","instrumentStream","wrapPromiseWithMethods","buildMethodPath","OPENAI_METHOD_REGISTRY","resolveAIRecordingOptions","mapAnthropicErrorToStatusMessage","GEN_AI_REQUEST_TOP_K_ATTRIBUTE","GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE","messagesFromParams","setMessagesAttribute","GEN_AI_PROMPT_ATTRIBUTE","ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE","handleResponseError","instrumentAsyncIterableStream","instrumentMessageStream","ANTHROPIC_METHOD_REGISTRY","GOOGLE_GENAI_SYSTEM_NAME","contentUnionToMessages","CHATS_CREATE_METHOD","GOOGLE_GENAI_METHOD_REGISTRY","CHAT_PATH","ROLE_MAP","LANGCHAIN_ORIGIN","GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE","GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE","getInvocationParams","extractLLMRequestAttributes","extractChatModelRequestAttributes","extractLlmResponseAttributes","normalizeLangChainMessages","LANGGRAPH_ORIGIN","GEN_AI_AGENT_NAME_ATTRIBUTE","GEN_AI_PIPELINE_NAME_ATTRIBUTE","extractToolsFromCompiledGraph","setResponseAttributes","supportsNativeFetch","isBrowserBundle","isNodeEnv","exports","UNKNOWN_FUNCTION","filenameIsInApp","flush","vercelWaitUntil","createRequire","parseSemver","detectActiveBundler","loadModule","getBuildPluginOptions","getPackageModules","supportsTurbopackRuleCondition","supportsNativeDebugIds","generateValueInjectionRules","escapeStringForRegex","getNextjsVersion","normalizePathForGlob","supportsProductionCompileHook","constructTurbopackConfig","handleRunAfterProductionCompile","DEFAULT_SERVER_EXTERNAL_PACKAGES","constructWebpackConfigFunction","instrumentation","registerInstrumentations","MAX_BODY_BYTE_LENGTH","createContextKey","subscribe","context","httpRequestToRequestData","patchRequestToCaptureBody","stripUrlQueryAndFragment","_INTERNAL_safeMathRandom","propagation","SpanKind","httpHeadersToSpanAttributes","RPCType","setRPCMetadata","trace","getSpanStatusFromHttpCode","errorMonitor","addStartSpanCallback","isTracingSuppressed","ATTR_HTTP_RESPONSE_STATUS_CODE","SEMATTRS_HTTP_STATUS_CODE","getRPCMetadata","SEMATTRS_NET_HOST_IP","SEMATTRS_NET_HOST_PORT","SEMATTRS_NET_PEER_IP","ATTR_HTTP_ROUTE","parseBaggageHeader","objectToBaggageHeader","getBreadcrumbLogLevelFromHttpStatusCode","shouldPropagateTraceForUrl","mergeBaggageHeaders","parseUrl","getSanitizedUrlString","InstrumentationBase","INSTRUMENTATION_NAME","LRUMap","unsubscribe","InstrumentationNodeModuleDefinition","SpanStatusCode","addRequestBreadcrumb","addTracePropagationHeadersToOutgoingRequest","getRequestOptions","getClientRequestUrl","getHttpSpanDetailsFromUrlObject","ATTR_USER_AGENT_ORIGINAL","ATTR_URL_FULL","ATTR_NETWORK_PROTOCOL_VERSION","ATTR_NETWORK_TRANSPORT","ATTR_NETWORK_PEER_ADDRESS","ATTR_NETWORK_PEER_PORT","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","generateInstrumentOnce","SentryHttpInstrumentation","httpServerIntegration","httpServerSpansIntegration","addTracePropagationHeadersToFetchRequest","addFetchRequestBreadcrumb","NODE_MAJOR","NODE_MINOR","getAbsoluteUrl","SentryNodeFetchInstrumentation","SEMATTRS_HTTP_URL","ATTR_HTTP_REQUEST_METHOD","SEMATTRS_HTTP_METHOD","isSentryRequestUrl","TraceFlags","ATTR_DB_SYSTEM_NAME","SEMATTRS_DB_SYSTEM","SEMATTRS_RPC_SERVICE","SEMATTRS_MESSAGING_SYSTEM","SEMATTRS_FAAS_TRIGGER","SEMATTRS_DB_STATEMENT","SEMATTRS_HTTP_TARGET","TraceState","W3CBaggagePropagator","INVALID_TRACEID","suppressTracing","suppressTracingImpl","setAsyncContextStrategy","SEMATTRS_RPC_GRPC_STATUS_CODE","_INTERNAL_safeDateNow","debounce","captureEvent","ROOT_CONTEXT","SamplingDecision","isSpanContextValid","wrapContextManagerClass","AsyncLocalStorageContextManager","diag","DiagLogLevel","promisify","readFile","readdir","execFile","join","createReadStream","createInterface","functionNamesMatch","LOCAL_VARIABLES_KEY","Worker","isDebuggerEnabled","createRateLimiter","NODE_VERSION","localVariablesSyncIntegration","localVariablesAsyncIntegration","isCjs","dirname","existsSync","readFileSync","isMainThread","logAndExitProcess","startSession","endSession","Agent","parseProxyResponse","Readable","createTransport","HttpsProxyAgent","createGzip","envToBool","sep","posix","createStackParser","nodeStackLineParser","createGetModuleFromFilename","ServerRuntimeClient","applySdkMetadata","threadId","_INTERNAL_clearAiProviderSkips","getTraceContextForScope","supportsEsmLoaderHooks","createAddHookMessageChannel","inboundFiltersIntegration","functionToStringIntegration","linkedErrorsIntegration","requestDataIntegration","systemErrorIntegration","conversationIdIntegration","consoleIntegration","httpIntegration","nativeNodeFetchIntegration","onUncaughtExceptionIntegration","onUnhandledRejectionIntegration","contextLinesIntegration","localVariablesIntegration","nodeContextIntegration","childProcessIntegration","processSessionIntegration","modulesIntegration","initializeEsmLoader","setOpenTelemetryContextAsyncContextStrategy","SPOTLIGHT_INTEGRATION_NAME","spotlightIntegration","client","NodeClient","enhanceDscWithOpenTelemetryRootSpanName","setupEventContextTrace","openTelemetrySetupCheck","getSpotlightConfig","makeNodeTransport","stackParserFromStackParserOptions","defaultStackParser","getIntegrationsToSetup","getSentryRelease","getScopesFromContext","isWrapped","createMissingInstrumentationContext","types","format","captureLog","metrics","performance","monitorEventLoopDelay","_INTERNAL_safeUnref","captureMessage","replaceCronNames","withMonitor","instrumentCron","instrumentNodeCron","instrumentNodeSchedule","HttpInstrumentation","getRequestUrl","addOriginToSpan","UndiciInstrumentation","FsInstrumentation","ExpressInstrumentation","ensureIsWrapped","AttributeNames","FastifyTypes","FastifyNames","spanRequestSymbol","endSpan","safeExecuteInTheMiddleMaybePromise","safeExecuteInTheMiddle","SEMATTRS_HTTP_ROUTE","FastifyInstrumentationV3","FastifyOtelInstrumentation","GraphQLInstrumentation","SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION","KafkaJsInstrumentation","LruMemoizerInstrumentation","MongoDBInstrumentation","MongooseInstrumentation","MySQLInstrumentation","MySQL2Instrumentation","_redisOptions","getCacheKeySafely","getCacheOperation","shouldConsiderForCache","calculateCacheItemSize","SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE","isInCommands","GET_COMMANDS","SEMANTIC_ATTRIBUTE_CACHE_HIT","SEMANTIC_ATTRIBUTE_CACHE_KEY","IORedisInstrumentation","RedisInstrumentation","PgInstrumentation","InstrumentationNodeModuleFile","instrumentPostgresJsSql","replaceExports","ATTR_DB_OPERATION_NAME","ATTR_DB_QUERY_TEXT","ATTR_DB_RESPONSE_STATUS_CODE","ATTR_ERROR_TYPE","PrismaInstrumentation","HapiInstrumentation","HonoTypes","HonoInstrumentation","KoaInstrumentation","ConnectInstrumentation","KnexInstrumentation","instrumentWhenWrapped","TediousInstrumentation","GenericPoolInstrumentation","DataloaderInstrumentation","AmqplibInstrumentation","_INTERNAL_getSpanContextForToolCallId","_INTERNAL_cleanupToolCallSpanContext","INTEGRATION_NAME","SentryVercelAiInstrumentation","addVercelAiProcessors","_INTERNAL_shouldSkipAiProviderWrapping","OPENAI_INTEGRATION_NAME","instrumentOpenAiClient","SentryOpenAiInstrumentation","ANTHROPIC_AI_INTEGRATION_NAME","instrumentAnthropicAiClient","SentryAnthropicAiInstrumentation","GOOGLE_GENAI_INTEGRATION_NAME","instrumentGoogleGenAIClient","SentryGoogleGenAiInstrumentation","_INTERNAL_skipAiProviderWrapping","createLangChainCallbackHandler","LANGCHAIN_INTEGRATION_NAME","SentryLangChainInstrumentation","instrumentLangGraph","LANGGRAPH_INTEGRATION_NAME","SentryLangGraphInstrumentation","isBrowser","coreGrowthbookIntegration","ATTR_DB_COLLECTION_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","patchFirestore","patchFunctions","FirebaseInstrumentation","expressIntegration","fastifyIntegration","graphqlIntegration","honoIntegration","mongoIntegration","mongooseIntegration","mysqlIntegration","mysql2Integration","redisIntegration","postgresIntegration","prismaIntegration","hapiIntegration","koaIntegration","connectIntegration","tediousIntegration","genericPoolIntegration","kafkaIntegration","amqplibIntegration","lruMemoizerIntegration","langChainIntegration","langGraphIntegration","vercelAIIntegration","openAIIntegration","anthropicAIIntegration","googleGenAIIntegration","postgresJsIntegration","firebaseIntegration","instrumentSentryHttp","instrumentOtelHttp","instrumentExpress","instrumentConnect","instrumentFastify","instrumentFastifyV3","instrumentHapi","instrumentHono","instrumentKafka","instrumentKoa","instrumentLruMemoizer","instrumentMongo","instrumentMongoose","instrumentMysql","instrumentMysql2","instrumentPostgres","instrumentGraphql","instrumentRedis","instrumentTedious","instrumentGenericPool","instrumentAmqplib","instrumentLangChain","instrumentVercelAi","instrumentOpenAi","instrumentPostgresJs","instrumentFirebase","instrumentAnthropicAi","instrumentGoogleGenAI","setupOpenTelemetryLogger","coreDebug","getOpenTelemetryInstrumentationToPreload","BasicTracerProvider","SentrySampler","defaultResource","resourceFromAttributes","ATTR_SERVICE_NAME","SEMRESATTRS_SERVICE_NAMESPACE","ATTR_SERVICE_VERSION","SentrySpanProcessor","SentryPropagator","SentryContextManager","getNodeCoreDefaultIntegrations","getAutoPerformanceIntegrations","initNodeCore","initOpenTelemetry","validateOpenTelemetrySetup","getGitRevision","resolveTunnelRoute","setUpTunnelRewriteRules","createRouteManifest","requiresInstrumentationHook","getInstrumentationClientFileContents","migrateDeprecatedWebpackOptions","resolveReleaseName","maybeSetUpTunnelRouteRewriteRules","shouldReturnEarlyInExperimentalBuildMode","maybeCreateRouteManifest","maybeGetVercelCronsConfig","setUpBuildTimeVariables","getNextMajor","maybeSetClientTraceMetadataOption","maybeSetInstrumentationHookOption","warnIfMissingOnRouterTransitionStartHook","getBundlerInfo","maybeWarnAboutUnsupportedTurbopack","maybeWarnAboutUnsupportedRunAfterProductionCompileHook","maybeConstructTurbopackConfig","resolveUseRunAfterProductionCompileHookOption","maybeSetUpRunAfterProductionCompileHook","maybeEnableTurbopackSourcemaps","getServerExternalPackagesPatch","getWebpackPatch","getTurbopackPatch","getFinalConfigObject","MODERN_BROWSERSLIST_TARGET","module","UNDERSCORE_GLOBAL_ERROR_ROUTE","UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY","UNDERSCORE_NOT_FOUND_ROUTE","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","APP_CLIENT_INTERNALS","APP_PATHS_MANIFEST","APP_PATH_ROUTES_MANIFEST","AdapterOutputType","BARREL_OPTIMIZATION_PREFIX","BLOCKED_PAGES","BUILD_ID_FILE","BUILD_MANIFEST","CLIENT_PUBLIC_FILES_PATH","CLIENT_REFERENCE_MANIFEST","CLIENT_STATIC_FILES_PATH","CLIENT_STATIC_FILES_RUNTIME_MAIN","CLIENT_STATIC_FILES_RUNTIME_MAIN_APP","CLIENT_STATIC_FILES_RUNTIME_POLYFILLS","CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL","CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH","CLIENT_STATIC_FILES_RUNTIME_WEBPACK","COMPILER_INDEXES","COMPILER_NAMES","CONFIG_FILES","DEFAULT_RUNTIME_WEBPACK","DEFAULT_SANS_SERIF_FONT","DEFAULT_SERIF_FONT","DEV_CLIENT_MIDDLEWARE_MANIFEST","DEV_CLIENT_PAGES_MANIFEST","DYNAMIC_CSS_MANIFEST","EDGE_RUNTIME_WEBPACK","EDGE_UNSUPPORTED_NODE_APIS","EXPORT_DETAIL","EXPORT_MARKER","FUNCTIONS_CONFIG_MANIFEST","IMAGES_MANIFEST","INTERCEPTION_ROUTE_REWRITE_MANIFEST","MIDDLEWARE_BUILD_MANIFEST","MIDDLEWARE_MANIFEST","MIDDLEWARE_REACT_LOADABLE_MANIFEST","NEXT_BUILTIN_DOCUMENT","NEXT_FONT_MANIFEST","PAGES_MANIFEST","PHASE_ANALYZE","PHASE_DEVELOPMENT_SERVER","PHASE_EXPORT","PHASE_INFO","PHASE_PRODUCTION_BUILD","PHASE_PRODUCTION_SERVER","PHASE_TEST","PRERENDER_MANIFEST","REACT_LOADABLE_MANIFEST","ROUTES_MANIFEST","RSC_MODULE_TYPES","SERVER_DIRECTORY","SERVER_FILES_MANIFEST","SERVER_PROPS_ID","SERVER_REFERENCE_MANIFEST","STATIC_PROPS_ID","STATIC_STATUS_PAGES","STRING_LITERAL_DROP_BUNDLE","SUBRESOURCE_INTEGRITY_MANIFEST","SYSTEM_ENTRYPOINTS","TRACE_OUTPUT_VERSION","TURBOPACK_CLIENT_BUILD_MANIFEST","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","TURBO_TRACE_DEFAULT_MEMORY_LIMIT","WEBPACK_STATS","server","edgeServer","process","features","typescript","Symbol","name","xAvgCharWidth","azAvgWidth","unitsPerEm","Set","getSanitizedRequestUrl","rewriteFramesIntegration","winterCGHeadersToDict","ATTR_NEXT_SPAN_TYPE","isSentryRequestSpan","TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION","ATTR_NEXT_SPAN_NAME","ATTR_NEXT_SEGMENT","captureCheckIn","dropMiddlewareTunnelRequests","ATTR_NEXT_ROUTE","maybeStartCronCheckIn","maybeEnrichQueueConsumerSpan","addHeadersAsAttributes","maybeEnhanceServerComponentSpanName","maybeEnrichQueueProducerSpan","isAlreadyCaptured","waitUntil","flushSafelyWithTimeout","isBuild","isUseCacheFunction","coreStartSpan","coreStartSpanManual","coreStartInactiveSpan","TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL","withErrorInstrumentation","callDataFetcherTraced","withTracedServerSideDataFetcher","isNotFoundNavigationError","isRedirectNavigationError","commonObjectToIsolationScope","winterCGRequestToRequestData","extractTraceparentData","continueTrace","headersToDict","dropNextjsRootContext","escapeNextjsTracing","objectify","isCloudflareWaitUntilAvailable","prepareSafeIdGeneratorContext","getDefaultIntegrations","distDirRewriteFramesIntegration","getVercelEnv","nodeInit","ATTR_URL_QUERY","handleOnSpanStart","maybeCompleteCronCheckIn","maybeCleanupQueueSpan","TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL","setUrlProcessingMetadata","devErrorSymbolicationEventProcessor"],"mappings":"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AAA,IAAW,CAAC,SAAS,CAAC,EAAM,EAAF,AAAQ,EAAF,CAChC,EAAqB,EAAQ,EAAe,GAElD,CAHqD,AACC,CAAC,AADD,CAAC,AACC,IAEjD,ECvBK,CAAA,GAAA,CDuBW,EAAoB,EAAE,KAAE,EAAW,GCvBJ,CAAC,AJnD3D,AG0EkE,CCvBN,ADuBO,CCvBN,ADuBO,CAAR,CH1EtD,EAAc,GGLG,CHKC,CGLC,AEFA,ADIA,ECJE,ACGA,AFCA,CGCC,CDFC,CCEC,CNFC,CEDC,CCEC,ACJA,CHIjB,ACFkB,AHKA,CMJC,CNIC,AEFlC,AKAkC,CCJC,ARMA,GGLG,MHqBpC,CAAyB,CACzB,CAAY,CACZ,CAAgB,CEpBF,AUakB,CZQT,AItB0B,ACJA,CL0B1B,AItB2B,ACJA,CHMrD,EIHwD,AGGrC,CHHsC,AGGtC,CTsBZ,CAAC,CEtBF,GCJyD,CAAC,CIGC,CAAC,EGMF,AViB/C,CUjBgD,AViB7C,EACjB,CS3BkB,CIeG,EbYjB,CAAA,IAAK,CAAA,KEvBoB,CAAC,AFwB1B,CAAA,OAAQ,CAAG,KGRK,EHSf,OAAA,CAAA,YAGG,CAAY,CAAE,CWjBT,AXiB8B,CEVpB,AFUsB,CAAA,CAAA,uBACvB,GAAA,SAAY,CAAA,EAAO,EAAS,CGRC,CHSrD,CCTC,ADSA,AAED,EAHkD,cAIhD,CKnBW,ALmBE,CACb,CGToB,CAAA,CHUE,AGVF,CHWpB,CGXsC,AHW/B,CGXgC,AHWhC,YAEa,UAAA,UACb,QAAA,KAAa,CAAA,EAAA,eAAuB,CIpBG,EJoBO,SAAS,CAAC,CAAC,oBAQxD,CAAA,SAAU,2BAIZ,EAAS,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAC7C,IAAI,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CACZ,IAAI,CAAC,OAAO,CACb,CAAC,eAEW,SAIC,CAAG,CWzBD,CAAC,ENHQ,YL6BJ,EAJZ,MWxBM,CR0BK,iCG5DlB,CCAC,ACJA,AJGA,AFEA,ACJA,CFCC,COFC,AJGA,AFEA,AKAP,AJJO,CFCD,EKEyB,KEJK,CKUpC,ALVqC,ELajC,AKNA,AEEA,ENNqC,CAAC,AGG3B,GAChB,EMIG,CAAc,CPPiC,A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CDDd,OAAO,EAAQ,GCEG,EDFH,CAAM,OAAO,CAAE,EAElC,CACF,AADG,CACF,AADG,AAFoC,CAMD,AANE,CAMQ,AANP,CAMQ,CAAC,CAAC,CAAC,CAAC,CAAC,AAEzD,CAF0D,AAEzD,CAkCF,OCxCkE,CAAC,CAAC,qBITnE,GDxBK,CCuBK,CDvBH,GCuBG,EAAS,ADCF,CCDE,CAAA,CAAA,CDvBZ,CC0BR,AD1BQ,EAAA,ACuBY,GDvBZ,CAAA,EAAA,CAAA,MCyBP,CDtBO,CAAA,CAAF,CAAE,CAAA,IJrBiD,CIqBjD,CAAA,EAAA,CAAA,oHDlCoB,EDCE,IDAI,EAAE,EGQE,EAAE,EDTE,AFCA,CEDC,EAC1B,CCQ6B,ADR7B,GDAgC,CAAC,CCAjC,EAAQ,CFEC,CDCD,AGHoB,OAAA,CCQkB,ADRT,CCQU,ADRT,GFAY,CAAC,SECjC,EAAoB,CCajB,EAAE,MAAM,AAAmB,CAAC,GAAA,EDbK,EAAoB,CAApC,KAAoC,CAAQ,CAAC,EHI7E,AGHA,EHGA,KAAA,CAAA,AGJoE,IHIpE,EGHkB,EAAS,CAAA,EAAI,EAAgB,EAAA,AAApB,CAAwB,CAAC,CAAC,EAC9C,CDEC,MCHuC,iBAE/B,GCgBG,AFdF,CEcG,AFdF,CCFG,ADEF,CCFG,MFYjC,CDGH,aCAI,CGwDG,AHxDmB,CAAA,CGwDjB,AH1DT,CG6DgB,GAAA,CAAA,CAHD,CD5DD,YFEA,CAAwB,CG6DA,GH7DI,GAAG,CAG/C,CAHiD,CAAC,CAGnC,ADEZ,CACF,GCHkB,AG2DR,CH3DS,CG0DoC,AAC3C,CAD4C,GH1D5C,CAAa,CAAC,CG6DV,CH5DvB,CG4DyB,IH1DrB,CAAW,CAAE,AG0Dc,AAFe,CHxD7B,AGwD8B,CHxD9B,EAH6B,CAAC,CAAC,CAMxC,EGyEM,AHzEO,EGyEL,EHzES,CAAC,GGyEJ,AHzEJ,GAAc,CGyEK,CHzEH,AGyEI,AD1EJ,CFMhC,CGkDqD,CAAC,KHtDlD,CGyEK,CHzEM,CGyEJ,MAAM,CHzEH,EGyEe,CAAC,GHzED,CAAC,CDED,ECFI,CAAC,IAChC,EADsC,AAC3B,CGyEO,CAAR,EAAE,IHzEF,MAAe,CAAC,CGyEO,CAA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","ignoreList":[195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,293,294,295,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,462,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,642,643,644,645,646,647,648,649,650,651,660,665,666,667,668]}}] } \ No newline at end of file diff --git a/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js b/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js index 317bdcfba..f99a594e8 100644 --- a/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js +++ b/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="4de6bcc9-110d-c5e1-84bb-f8ff52794f2a")}catch(e){}}(); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="85b2df47-db08-9f4c-e7fd-3b057452485d")}catch(e){}}(); module.exports=[492856,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.GLOBAL_OBJ=globalThis},633232,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.SDK_VERSION="10.47.0"},785734,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(633232),e=a.r(159409);function f(a){let b=a.__SENTRY__=a.__SENTRY__||{};return b.version=b.version||d.SDK_VERSION,b[d.SDK_VERSION]=b[d.SDK_VERSION]||{}}c.getGlobalSingleton=function(a,b,c=e.GLOBAL_OBJ){let f=c.__SENTRY__=c.__SENTRY__||{},g=f[d.SDK_VERSION]=f[d.SDK_VERSION]||{};return g[a]||(g[a]=b())},c.getMainCarrier=function(){return f(e.GLOBAL_OBJ),e.GLOBAL_OBJ},c.getSentryCarrier=f},451079,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(785734),e=a.r(492856),f=a.r(159409),g={};function h(a){if(!("console"in f.GLOBAL_OBJ))return a();let b=f.GLOBAL_OBJ.console,c={},d=Object.keys(g);d.forEach(a=>{let d=g[a];c[a]=b[a],b[a]=d});try{return a()}finally{d.forEach(a=>{b[a]=c[a]})}}function i(){return k().enabled}function j(a,...b){e.DEBUG_BUILD&&i()&&h(()=>{f.GLOBAL_OBJ.console[a](`Sentry Logger [${a}]:`,...b)})}function k(){return e.DEBUG_BUILD?d.getGlobalSingleton("loggerSettings",()=>({enabled:!1})):{enabled:!1}}c.CONSOLE_LEVELS=["debug","info","warn","error","log","assert","trace"],c.consoleSandbox=h,c.debug={enable:function(){k().enabled=!0},disable:function(){k().enabled=!1},isEnabled:i,log:function(...a){j("log",...a)},warn:function(...a){j("warn",...a)},error:function(...a){j("error",...a)}},c.originalConsoleMethods=g},456081,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=/\(error: (.*)\)/,e=/captureMessage|captureException/;function f(...a){let b=a.sort((a,b)=>a[0]-b[0]).map(a=>a[1]);return(a,c=0,e=0)=>{let f=[],h=a.split("\n");for(let a=c;a1024&&(c=c.slice(0,1024));let g=d.test(c)?c.replace(d,"$1"):c;if(!g.match(/\S*Error: /)){for(let a of b){let b=a(g);if(b){f.push(b);break}}if(f.length>=50+e)break}}return g(f.slice(e))}}function g(a){if(!a.length)return[];let b=Array.from(a);return/sentryWrapped/.test(h(b).function||"")&&b.pop(),b.reverse(),e.test(h(b).function||"")&&(b.pop(),e.test(h(b).function||"")&&b.pop()),b.slice(0,50).map(a=>({...a,filename:a.filename||h(b).filename,function:a.function||"?"}))}function h(a){return a[a.length-1]||{}}let i="";c.UNKNOWN_FUNCTION="?",c.createStackParser=f,c.getFramesFromEvent=function(a){let b=a.exception;if(b){let a=[];try{return b.values.forEach(b=>{b.stacktrace.frames&&a.push(...b.stacktrace.frames)}),a}catch{}}},c.getFunctionName=function(a){try{if(!a||"function"!=typeof a)return i;return a.name||i}catch{return i}},c.getVueInternalName=function(a){return"__v_isVNode"in a&&a.__v_isVNode?"[VueVNode]":"[VueViewModel]"},c.normalizeStackTracePath=function(a){let b=a?.startsWith("file://")?a.slice(7):a;return b?.match(/\/[A-Z]:/)&&(b=b.slice(1)),b},c.stackParserFromStackParserOptions=function(a){return Array.isArray(a)?f(...a):a},c.stripSentryFramesAndReverse=g},723381,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(492856),e=a.r(451079),f=a.r(456081),g={},h={};c.addHandler=function(a,b){g[a]=g[a]||[],g[a].push(b)},c.maybeInstrument=function(a,b){if(!h[a]){h[a]=!0;try{b()}catch(b){d.DEBUG_BUILD&&e.debug.error(`Error while instrumenting ${a}`,b)}}},c.resetInstrumentationHandlers=function(){Object.keys(g).forEach(a=>{g[a]=void 0})},c.triggerHandlers=function(a,b){let c=a&&g[a];if(c)for(let g of c)try{g(b)}catch(b){d.DEBUG_BUILD&&e.debug.error(`Error while triggering instrumentation handler. Type: ${a} Name: ${f.getFunctionName(g)} @@ -20,7 +20,7 @@ ${a.stack}`:"unknown"}}}}}let k=d.defineIntegration((a={})=>{let b=a.limit??10;r `;let n=h.parseProxyResponse(c);c.write(`${m}\r `);let{connect:o,buffered:p}=await n;if(a.emit("proxyConnect",o),this.emit("proxyConnect",o,a),200===o.statusCode){if(a.once("socket",k),b.secureEndpoint){i("Upgrading socket connection to TLS");let a=b.servername||b.host;return e.connect({...l(b,"host","path","port"),socket:c,servername:d.isIP(a)?void 0:a})}return c}c.destroy();let q=new d.Socket({writable:!1});return q.readable=!0,a.once("socket",a=>{i("Replaying proxy buffer for failed request"),a.push(p),a.push(null)}),q}}function k(a){a.resume()}function l(a,...b){let c,d={};for(c in a)b.includes(c)||(d[c]=a[c]);return d}j.__initStatic(),c.HttpsProxyAgent=j},667678,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(347299),e=a.r(743698),f=a.r(81111),g=a.r(727028),h=a.r(187845),i=a.r(454973);c.makeNodeTransport=function(a){let b;try{b=new URL(a.url)}catch(b){return h.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),h.createTransport(a,()=>Promise.resolve({}))}let c="https:"===b.protocol,j=function(a,b){let{no_proxy:c}=process.env;if(!c?.split(",").some(b=>a.host.endsWith(b)||a.hostname.endsWith(b)))return b}(b,a.proxy||(c?process.env.https_proxy:void 0)||process.env.http_proxy),k=c?e:d,l=void 0!==a.keepAlive&&a.keepAlive,m=j?new i.HttpsProxyAgent(j):new k.Agent({keepAlive:l,maxSockets:30,timeout:2e3}),n=function(a,b,c){let{hostname:d,pathname:e,port:i,protocol:j,search:k}=new URL(a.url);return function(l){return new Promise((m,n)=>{h.suppressTracing(()=>{var h;let o=(h=l.body,new f.Readable({read(){this.push(h),this.push(null)}})),p={...a.headers};l.body.length>32768&&(p["content-encoding"]="gzip",o=o.pipe(g.createGzip()));let q=d.startsWith("["),r=b.request({method:"POST",agent:c,headers:p,hostname:q?d.slice(1,-1):d,path:`${e}${k}`,port:i,protocol:j,ca:a.caCerts},a=>{a.on("data",()=>{}),a.on("end",()=>{}),a.setEncoding("utf8");let b=a.headers["retry-after"]??null,c=a.headers["x-sentry-rate-limits"]??null;m({statusCode:a.statusCode,headers:{"retry-after":b,"x-sentry-rate-limits":Array.isArray(c)?c[0]||null:c}})});r.on("error",n),o.pipe(r)})})}}(a,a.httpModule??k,m);return h.createTransport(a,n)}},82981,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.getSpotlightConfig=function(a){if(!1===a)return!1;if("string"==typeof a)return a;let b=d.envToBool(process.env.SENTRY_SPOTLIGHT,{strict:!0}),c=null===b&&process.env.SENTRY_SPOTLIGHT?process.env.SENTRY_SPOTLIGHT:void 0;return!0===a?c??!0:b??c}},97632,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(750227),e=a.r(187845);function f(a){return a.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}c.createGetModuleFromFilename=function(a=process.argv[1]?e.dirname(process.argv[1]):process.cwd(),b="\\"===d.sep){let c=b?f(a):a;return a=>{if(!a)return;let e=b?f(a):a,{dir:g,base:h,ext:i}=d.posix.parse(e);(".js"===i||".mjs"===i||".cjs"===i)&&(h=h.slice(0,-1*i.length));let j=decodeURIComponent(h);g||(g=".");let k=g.lastIndexOf("/node_modules");if(k>-1)return`${g.slice(k+14).replace(/\//g,".")}:${j}`;if(g.startsWith(c)){let a=g.slice(c.length+1).replace(/\//g,".");return a?`${a}:${j}`:j}return j}}},688113,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(97632);c.defaultStackParser=d.createStackParser(d.nodeStackLineParser(e.createGetModuleFromFilename())),c.getSentryRelease=function(a){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(d.GLOBAL_OBJ.SENTRY_RELEASE?.id)return d.GLOBAL_OBJ.SENTRY_RELEASE.id;let b=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,c=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_BUILD_COMMIT||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,e=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return b||c||e||a}},647260,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(660526),e=a.r(832528),f=a.r(167300),g=a.r(187845),h=a.r(221598),i=a.r(37702),j=a.r(970626);class k extends g.ServerRuntimeClient{constructor(b){const c=!1===b.includeServerName?void 0:b.serverName||a.g.process.env.SENTRY_NAME||d.hostname(),e={...b,platform:"node",runtime:b.runtime||{name:"node",version:a.g.process.version},serverName:c};b.openTelemetryInstrumentations&&f.registerInstrumentations({instrumentations:b.openTelemetryInstrumentations}),g.applySdkMetadata(e,"node"),g.debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${i.isMainThread?"main":`worker-${i.threadId}`}.`),super(e),this.getOptions().enableLogs&&(this._logOnExitFlushListener=()=>{g._INTERNAL_flushLogsBuffer(this)},c&&this.on("beforeCaptureLog",a=>{a.attributes={...a.attributes,"server.address":c}}),process.on("beforeExit",this._logOnExitFlushListener))}get tracer(){if(this._tracer)return this._tracer;let a=g.SDK_VERSION,b=e.trace.getTracer("@sentry/node",a);return this._tracer=b,b}async flush(a){return await this.traceProvider?.forceFlush(),this.getOptions().sendClientReports&&this._flushOutcomes(),super.flush(a)}async close(a){this._clientReportInterval&&clearInterval(this._clientReportInterval),this._clientReportOnExitFlushListener&&process.off("beforeExit",this._clientReportOnExitFlushListener),this._logOnExitFlushListener&&process.off("beforeExit",this._logOnExitFlushListener);let b=await super.close(a);return this.traceProvider&&await this.traceProvider.shutdown(),b}startClientReportTracking(){let a=this.getOptions();a.sendClientReports&&(this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{j.DEBUG_BUILD&&g.debug.log("Flushing client reports based on interval."),this._flushOutcomes()},a.clientReportFlushInterval??6e4).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener))}_setupIntegrations(){g._INTERNAL_clearAiProviderSkips(),super._setupIntegrations()}_getTraceInfoFromScope(a){return a?h.getTraceContextForScope(this,a):[void 0,void 0]}}c.NodeClient=k},995166,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(285512),f=a.r(362562),g=a.r(769575);var h="u">typeof document?document.currentScript:null;c.initializeEsmLoader=function(){if(g.supportsEsmLoaderHooks()&&!d.GLOBAL_OBJ._sentryEsmLoaderHookRegistered){d.GLOBAL_OBJ._sentryEsmLoaderHookRegistered=!0;try{let{addHookMessagePort:b}=e.createAddHookMessageChannel();f.register("import-in-the-middle/hook.mjs","u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(221598),f=a.r(970626),g=a.r(741677),h=a.r(255980),i=a.r(751233),j=a.r(97209),k=a.r(881969),l=a.r(899800),m=a.r(440222),n=a.r(548957),o=a.r(375821),p=a.r(173240),q=a.r(930951),r=a.r(367287),s=a.r(667678),t=a.r(769575),u=a.r(82981),v=a.r(688113),w=a.r(647260),x=a.r(995166);function y(){return[d.inboundFiltersIntegration(),d.functionToStringIntegration(),d.linkedErrorsIntegration(),d.requestDataIntegration(),r.systemErrorIntegration(),d.conversationIdIntegration(),d.consoleIntegration(),j.httpIntegration(),m.nativeNodeFetchIntegration(),n.onUncaughtExceptionIntegration(),o.onUnhandledRejectionIntegration(),i.contextLinesIntegration(),k.localVariablesIntegration(),h.nodeContextIntegration(),g.childProcessIntegration(),p.processSessionIntegration(),l.modulesIntegration()]}function z(a={},b){var c,g;let h,i,j,k,l,m,n=(c=a,g=b,h=function(a){if(void 0!==a)return a;let b=v.getSentryRelease();if(void 0!==b)return b}(c.release),i=u.getSpotlightConfig(c.spotlight),j=function(a){if(void 0!==a)return a;let b=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!b)return;let c=parseFloat(b);return isFinite(c)?c:void 0}(c.tracesSampleRate),k={...c,dsn:c.dsn??process.env.SENTRY_DSN,environment:c.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:c.sendClientReports??!0,transport:c.transport??s.makeNodeTransport,stackParser:d.stackParserFromStackParserOptions(c.stackParser||v.defaultStackParser),release:h,tracesSampleRate:j,spotlight:i,debug:d.envToBool(c.debug??process.env.SENTRY_DEBUG)},l=c.integrations,m=c.defaultIntegrations??g(k),{...k,integrations:d.getIntegrationsToSetup({defaultIntegrations:m,integrations:l})});!0===n.debug&&(f.DEBUG_BUILD?d.debug.enable():d.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),!1!==n.registerEsmLoaderHooks&&x.initializeEsmLoader(),e.setOpenTelemetryContextAsyncContextStrategy(),d.getCurrentScope().update(n.initialScope),n.spotlight&&!n.integrations.some(({name:a})=>a===q.INTEGRATION_NAME)&&n.integrations.push(q.spotlightIntegration({sidecarUrl:"string"==typeof n.spotlight?n.spotlight:void 0})),d.applySdkMetadata(n,"node-core");let o=new w.NodeClient(n);return d.getCurrentScope().setClient(o),o.init(),d.debug.log(`SDK initialized from ${t.isCjs()?"CommonJS":"ESM"}`),o.startClientReportTracking(),function(){if(!1!==d.envToBool(process.env.SENTRY_USE_ENVIRONMENT)){let a=process.env.SENTRY_TRACE,b=process.env.SENTRY_BAGGAGE,c=d.propagationContextFromHeaders(a,b);d.getCurrentScope().setPropagationContext(c)}}(),e.enhanceDscWithOpenTelemetryRootSpanName(o),e.setupEventContextTrace(o),process.env.VERCEL&&process.on("SIGTERM",async()=>{await o.flush(200)}),o}c.getDefaultIntegrations=y,c.init=function(a={}){return z(a,y)},c.initWithoutDefaultIntegrations=function(a={}){return z(a,()=>[])},c.validateOpenTelemetrySetup=function(){if(!f.DEBUG_BUILD)return;let a=e.openTelemetrySetupCheck(),b=["SentryContextManager","SentryPropagator"];for(let c of(d.hasSpansEnabled()&&b.push("SentrySpanProcessor"),b))a.includes(c)||d.debug.error(`You have to set up the ${c}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);a.includes("SentrySampler")||d.debug.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}},262955,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(221598);c.setIsolationScope=function(a){let b=e.getScopesFromContext(d.context.active());b&&(b.isolationScope=a)}},97827,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(769575);c.createMissingInstrumentationContext=a=>({package:a,"javascript.is_cjs":d.isCjs()})},125677,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(97827),g=a.r(769575);c.ensureIsWrapped=function(a,b){let c=e.getClient()?.getOptions();!c?.disableInstrumentationWarnings&&!d.isWrapped(a)&&e.isEnabled()&&e.hasSpansEnabled(c)&&(e.consoleSandbox(()=>{g.isCjs()?console.warn(`[Sentry] ${b} is not instrumented. This is likely because you required/imported ${b} before calling \`Sentry.init()\`.`):console.warn(`[Sentry] ${b} is not instrumented. Please make sure to initialize Sentry in a separate file that you \`--import\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${b}/install/esm/.`)}),e.getGlobalScope().setContext("missing_instrumentation",f.createMissingInstrumentationContext(b)))}},874835,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(812057),e=a.r(925127),f=a.r(187845),g=a.r(175262),h=a.r(558930),{isPromise:i}=d.types,j="LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ3LjAgKGE1YTRlNzMpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyB0fWZyb20ibm9kZTppbnNwZWN0b3IiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIG4scGFyZW50UG9ydCBhcyBlfWZyb20ibm9kZTp3b3JrZXJfdGhyZWFkcyI7aW1wb3J0e3Bvc2l4IGFzIHIsc2VwIGFzIG99ZnJvbSJub2RlOnBhdGgiO2ltcG9ydCphcyBpIGZyb20ibm9kZTpodHRwIjtpbXBvcnQqYXMgcyBmcm9tIm5vZGU6aHR0cHMiO2ltcG9ydHtSZWFkYWJsZSBhcyBjfWZyb20ibm9kZTpzdHJlYW0iO2ltcG9ydHtjcmVhdGVHemlwIGFzIHV9ZnJvbSJub2RlOnpsaWIiO2ltcG9ydCphcyBhIGZyb20ibm9kZTpuZXQiO2ltcG9ydCphcyBmIGZyb20ibm9kZTp0bHMiO2NvbnN0IGg9InVuZGVmaW5lZCI9PXR5cGVvZiBfX1NFTlRSWV9ERUJVR19ffHxfX1NFTlRSWV9ERUJVR19fLHA9Z2xvYmFsVGhpcyxkPSIxMC40Ny4wIjtmdW5jdGlvbiBsKCl7cmV0dXJuIG0ocCkscH1mdW5jdGlvbiBtKHQpe2NvbnN0IG49dC5fX1NFTlRSWV9fPXQuX19TRU5UUllfX3x8e307cmV0dXJuIG4udmVyc2lvbj1uLnZlcnNpb258fGQsbltkXT1uW2RdfHx7fX1mdW5jdGlvbiBnKHQsbixlPXApe2NvbnN0IHI9ZS5fX1NFTlRSWV9fPWUuX19TRU5UUllfX3x8e30sbz1yW2RdPXJbZF18fHt9O3JldHVybiBvW3RdfHwob1t0XT1uKCkpfWNvbnN0IHk9e307ZnVuY3Rpb24gYih0KXtpZighKCJjb25zb2xlImluIHApKXJldHVybiB0KCk7Y29uc3Qgbj1wLmNvbnNvbGUsZT17fSxyPU9iamVjdC5rZXlzKHkpO3IuZm9yRWFjaCh0PT57Y29uc3Qgcj15W3RdO2VbdF09blt0XSxuW3RdPXJ9KTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3IuZm9yRWFjaCh0PT57blt0XT1lW3RdfSl9fWZ1bmN0aW9uIHYoKXtyZXR1cm4gdygpLmVuYWJsZWR9ZnVuY3Rpb24gXyh0LC4uLm4pe2gmJnYoKSYmYigoKT0+e3AuY29uc29sZVt0XShgU2VudHJ5IExvZ2dlciBbJHt0fV06YCwuLi5uKX0pfWZ1bmN0aW9uIHcoKXtyZXR1cm4gaD9nKCJsb2dnZXJTZXR0aW5ncyIsKCk9Pih7ZW5hYmxlZDohMX0pKTp7ZW5hYmxlZDohMX19Y29uc3QgUz17ZW5hYmxlOmZ1bmN0aW9uKCl7dygpLmVuYWJsZWQ9ITB9LGRpc2FibGU6ZnVuY3Rpb24oKXt3KCkuZW5hYmxlZD0hMX0saXNFbmFibGVkOnYsbG9nOmZ1bmN0aW9uKC4uLnQpe18oImxvZyIsLi4udCl9LHdhcm46ZnVuY3Rpb24oLi4udCl7Xygid2FybiIsLi4udCl9LGVycm9yOmZ1bmN0aW9uKC4uLnQpe18oImVycm9yIiwuLi50KX19LCQ9L2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vO2Z1bmN0aW9uIEUodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV18fHt9fWNvbnN0IHg9Ijxhbm9ueW1vdXM+Ijtjb25zdCBOPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gaih0LG4pe3JldHVybiBOLmNhbGwodCk9PT1gW29iamVjdCAke259XWB9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gaih0LCJTdHJpbmciKX1mdW5jdGlvbiBBKHQpe3JldHVybiBqKHQsIk9iamVjdCIpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEJvb2xlYW4odD8udGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbil9ZnVuY3Rpb24gayh0LG4pe3RyeXtyZXR1cm4gdCBpbnN0YW5jZW9mIG59Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEk9cDtmdW5jdGlvbiBPKHQsbil7Y29uc3QgZT10LHI9W107aWYoIWU/LnRhZ05hbWUpcmV0dXJuIiI7aWYoSS5IVE1MRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZlLmRhdGFzZXQpe2lmKGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQ7aWYoZS5kYXRhc2V0LnNlbnRyeUVsZW1lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlFbGVtZW50fXIucHVzaChlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSk7Y29uc3Qgbz1uPy5sZW5ndGg/bi5maWx0ZXIodD0+ZS5nZXRBdHRyaWJ1dGUodCkpLm1hcCh0PT5bdCxlLmdldEF0dHJpYnV0ZSh0KV0pOm51bGw7aWYobz8ubGVuZ3RoKW8uZm9yRWFjaCh0PT57ci5wdXNoKGBbJHt0WzBdfT0iJHt0WzFdfSJdYCl9KTtlbHNle2UuaWQmJnIucHVzaChgIyR7ZS5pZH1gKTtjb25zdCB0PWUuY2xhc3NOYW1lO2lmKHQmJkModCkpe2NvbnN0IG49dC5zcGxpdCgvXHMrLyk7Zm9yKGNvbnN0IHQgb2YgbilyLnB1c2goYC4ke3R9YCl9fWZvcihjb25zdCB0IG9mWyJhcmlhLWxhYmVsIiwidHlwZSIsIm5hbWUiLCJ0aXRsZSIsImFsdCJdKXtjb25zdCBuPWUuZ2V0QXR0cmlidXRlKHQpO24mJnIucHVzaChgWyR7dH09IiR7bn0iXWApfXJldHVybiByLmpvaW4oIiIpfWZ1bmN0aW9uIFIodCl7aWYoZnVuY3Rpb24odCl7c3dpdGNoKE4uY2FsbCh0KSl7Y2FzZSJbb2JqZWN0IEVycm9yXSI6Y2FzZSJbb2JqZWN0IEV4Y2VwdGlvbl0iOmNhc2UiW29iamVjdCBET01FeGNlcHRpb25dIjpjYXNlIltvYmplY3QgV2ViQXNzZW1ibHkuRXhjZXB0aW9uXSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gayh0LEVycm9yKX19KHQpKXJldHVybnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrLC4uLkQodCl9O2lmKG49dCwidW5kZWZpbmVkIiE9dHlwZW9mIEV2ZW50JiZrKG4sRXZlbnQpKXtjb25zdCBuPXt0eXBlOnQudHlwZSx0YXJnZXQ6UCh0LnRhcmdldCksY3VycmVudFRhcmdldDpQKHQuY3VycmVudFRhcmdldCksLi4uRCh0KX07cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBDdXN0b21FdmVudCYmayh0LEN1c3RvbUV2ZW50KSYmKG4uZGV0YWlsPXQuZGV0YWlsKSxufXJldHVybiB0O3ZhciBufWZ1bmN0aW9uIFAodCl7dHJ5e3JldHVybiBuPXQsInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50JiZrKG4sRWxlbWVudCk/ZnVuY3Rpb24odCxuPXt9KXtpZighdClyZXR1cm4iPHVua25vd24+Ijt0cnl7bGV0IGU9dDtjb25zdCByPTUsbz1bXTtsZXQgaT0wLHM9MDtjb25zdCBjPSIgPiAiLHU9Yy5sZW5ndGg7bGV0IGE7Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP246bi5rZXlBdHRycyxoPSFBcnJheS5pc0FycmF5KG4pJiZuLm1heFN0cmluZ0xlbmd0aHx8ODA7Zm9yKDtlJiZpKys8ciYmKGE9TyhlLGYpLCEoImh0bWwiPT09YXx8aT4xJiZzK28ubGVuZ3RoKnUrYS5sZW5ndGg+PWgpKTspby5wdXNoKGEpLHMrPWEubGVuZ3RoLGU9ZS5wYXJlbnROb2RlO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGMpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifX0odCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifXZhciBufWZ1bmN0aW9uIEQodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dD9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkpOnt9fWxldCBVLEw7ZnVuY3Rpb24gTSh0KXtpZih2b2lkIDAhPT1VKXJldHVybiBVP1UodCk6dCgpO2NvbnN0IG49U3ltYm9sLmZvcigiX19TRU5UUllfU0FGRV9SQU5ET01fSURfV1JBUFBFUl9fIiksZT1wO3JldHVybiBuIGluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW25dPyhVPWVbbl0sVSh0KSk6KFU9bnVsbCx0KCkpfWZ1bmN0aW9uIEIoKXtyZXR1cm4gTSgoKT0+TWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gVygpe3JldHVybiBNKCgpPT5EYXRlLm5vdygpKX1mdW5jdGlvbiB6KHQsbj0wKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fDA9PT1ufHx0Lmxlbmd0aDw9bj90OmAke3Quc2xpY2UoMCxuKX0uLi5gfWZ1bmN0aW9uIEYodD1mdW5jdGlvbigpe2NvbnN0IHQ9cDtyZXR1cm4gdC5jcnlwdG98fHQubXNDcnlwdG99KCkpe3RyeXtpZih0Py5yYW5kb21VVUlEKXJldHVybiBNKCgpPT50LnJhbmRvbVVVSUQoKSkucmVwbGFjZSgvLS9nLCIiKX1jYXRjaHt9cmV0dXJuIEx8fChMPVsxZTddKzFlMys0ZTMrOGUzKzFlMTEpLEwucmVwbGFjZSgvWzAxOF0vZyx0PT4odF4oMTYqQigpJjE1KT4+dC80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gVygpLzFlM31sZXQgSDtmdW5jdGlvbiBKKCl7cmV0dXJuKEg/PyhIPWZ1bmN0aW9uKCl7Y29uc3R7cGVyZm9ybWFuY2U6dH09cDtpZighdD8ubm93fHwhdC50aW1lT3JpZ2luKXJldHVybiBHO2NvbnN0IG49dC50aW1lT3JpZ2luO3JldHVybigpPT4obitNKCgpPT50Lm5vdygpKSkvMWUzfSgpKSkoKX1mdW5jdGlvbiBZKHQpe2NvbnN0IG49SigpLGU9e3NpZDpGKCksaW5pdDohMCx0aW1lc3RhbXA6bixzdGFydGVkOm4sZHVyYXRpb246MCxzdGF0dXM6Im9rIixlcnJvcnM6MCxpZ25vcmVEdXJhdGlvbjohMSx0b0pTT046KCk9PmZ1bmN0aW9uKHQpe3JldHVybntzaWQ6YCR7dC5zaWR9YCxpbml0OnQuaW5pdCxzdGFydGVkOm5ldyBEYXRlKDFlMyp0LnN0YXJ0ZWQpLnRvSVNPU3RyaW5nKCksdGltZXN0YW1wOm5ldyBEYXRlKDFlMyp0LnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxzdGF0dXM6dC5zdGF0dXMsZXJyb3JzOnQuZXJyb3JzLGRpZDoibnVtYmVyIj09dHlwZW9mIHQuZGlkfHwic3RyaW5nIj09dHlwZW9mIHQuZGlkP2Ake3QuZGlkfWA6dm9pZCAwLGR1cmF0aW9uOnQuZHVyYXRpb24sYWJub3JtYWxfbWVjaGFuaXNtOnQuYWJub3JtYWxfbWVjaGFuaXNtLGF0dHJzOntyZWxlYXNlOnQucmVsZWFzZSxlbnZpcm9ubWVudDp0LmVudmlyb25tZW50LGlwX2FkZHJlc3M6dC5pcEFkZHJlc3MsdXNlcl9hZ2VudDp0LnVzZXJBZ2VudH19fShlKX07cmV0dXJuIHQmJlYoZSx0KSxlfWZ1bmN0aW9uIFYodCxuPXt9KXtpZihuLnVzZXImJighdC5pcEFkZHJlc3MmJm4udXNlci5pcF9hZGRyZXNzJiYodC5pcEFkZHJlc3M9bi51c2VyLmlwX2FkZHJlc3MpLHQuZGlkfHxuLmRpZHx8KHQuZGlkPW4udXNlci5pZHx8bi51c2VyLmVtYWlsfHxuLnVzZXIudXNlcm5hbWUpKSx0LnRpbWVzdGFtcD1uLnRpbWVzdGFtcHx8SigpLG4uYWJub3JtYWxfbWVjaGFuaXNtJiYodC5hYm5vcm1hbF9tZWNoYW5pc209bi5hYm5vcm1hbF9tZWNoYW5pc20pLG4uaWdub3JlRHVyYXRpb24mJih0Lmlnbm9yZUR1cmF0aW9uPW4uaWdub3JlRHVyYXRpb24pLG4uc2lkJiYodC5zaWQ9MzI9PT1uLnNpZC5sZW5ndGg/bi5zaWQ6RigpKSx2b2lkIDAhPT1uLmluaXQmJih0LmluaXQ9bi5pbml0KSwhdC5kaWQmJm4uZGlkJiYodC5kaWQ9YCR7bi5kaWR9YCksIm51bWJlciI9PXR5cGVvZiBuLnN0YXJ0ZWQmJih0LnN0YXJ0ZWQ9bi5zdGFydGVkKSx0Lmlnbm9yZUR1cmF0aW9uKXQuZHVyYXRpb249dm9pZCAwO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBuLmR1cmF0aW9uKXQuZHVyYXRpb249bi5kdXJhdGlvbjtlbHNle2NvbnN0IG49dC50aW1lc3RhbXAtdC5zdGFydGVkO3QuZHVyYXRpb249bj49MD9uOjB9bi5yZWxlYXNlJiYodC5yZWxlYXNlPW4ucmVsZWFzZSksbi5lbnZpcm9ubWVudCYmKHQuZW52aXJvbm1lbnQ9bi5lbnZpcm9ubWVudCksIXQuaXBBZGRyZXNzJiZuLmlwQWRkcmVzcyYmKHQuaXBBZGRyZXNzPW4uaXBBZGRyZXNzKSwhdC51c2VyQWdlbnQmJm4udXNlckFnZW50JiYodC51c2VyQWdlbnQ9bi51c2VyQWdlbnQpLCJudW1iZXIiPT10eXBlb2Ygbi5lcnJvcnMmJih0LmVycm9ycz1uLmVycm9ycyksbi5zdGF0dXMmJih0LnN0YXR1cz1uLnN0YXR1cyl9ZnVuY3Rpb24gSyh0LG4sZT0yKXtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHxlPD0wKXJldHVybiBuO2lmKHQmJjA9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IHQgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSYmKHJbdF09SyhyW3RdLG5bdF0sZS0xKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gWigpe3JldHVybiBGKCl9ZnVuY3Rpb24gcSgpe3JldHVybiBGKCkuc3Vic3RyaW5nKDE2KX1jb25zdCBRPSJfc2VudHJ5U3BhbiI7ZnVuY3Rpb24gWCh0LG4pe24/ZnVuY3Rpb24odCxuLGUpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWNhdGNoe2gmJlMubG9nKGBGYWlsZWQgdG8gYWRkIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5ICIke259IiB0byBvYmplY3RgLHQpfX0odCxRLG4pOmRlbGV0ZSB0W1FdfWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0W1FdfWNsYXNzIG50e2NvbnN0cnVjdG9yKCl7dGhpcy50PSExLHRoaXMubz1bXSx0aGlzLmk9W10sdGhpcy51PVtdLHRoaXMuaD1bXSx0aGlzLnA9e30sdGhpcy5sPXt9LHRoaXMubT17fSx0aGlzLnY9e30sdGhpcy5fPXt9LHRoaXMuUz17fSx0aGlzLk49e3RyYWNlSWQ6WigpLHNhbXBsZVJhbmQ6QigpfX1jbG9uZSgpe2NvbnN0IHQ9bmV3IG50O3JldHVybiB0LnU9Wy4uLnRoaXMudV0sdC5sPXsuLi50aGlzLmx9LHQubT17Li4udGhpcy5tfSx0LnY9ey4uLnRoaXMudn0sdC5fPXsuLi50aGlzLl99LHRoaXMuXy5mbGFncyYmKHQuXy5mbGFncz17dmFsdWVzOlsuLi50aGlzLl8uZmxhZ3MudmFsdWVzXX0pLHQucD10aGlzLnAsdC5qPXRoaXMuaix0LkM9dGhpcy5DLHQuQT10aGlzLkEsdC5UPXRoaXMuVCx0Lmk9Wy4uLnRoaXMuaV0sdC5oPVsuLi50aGlzLmhdLHQuUz17Li4udGhpcy5TfSx0Lk49ey4uLnRoaXMuTn0sdC5rPXRoaXMuayx0Lkk9dGhpcy5JLHQuTz10aGlzLk8sWCh0LHR0KHRoaXMpKSx0fXNldENsaWVudCh0KXt0aGlzLms9dH1zZXRMYXN0RXZlbnRJZCh0KXt0aGlzLkk9dH1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5rfWxhc3RFdmVudElkKCl7cmV0dXJuIHRoaXMuSX1hZGRTY29wZUxpc3RlbmVyKHQpe3RoaXMuby5wdXNoKHQpfWFkZEV2ZW50UHJvY2Vzc29yKHQpe3JldHVybiB0aGlzLmkucHVzaCh0KSx0aGlzfXNldFVzZXIodCl7cmV0dXJuIHRoaXMucD10fHx7ZW1haWw6dm9pZCAwLGlkOnZvaWQgMCxpcF9hZGRyZXNzOnZvaWQgMCx1c2VybmFtZTp2b2lkIDB9LHRoaXMuQyYmVih0aGlzLkMse3VzZXI6dH0pLHRoaXMuUigpLHRoaXN9Z2V0VXNlcigpe3JldHVybiB0aGlzLnB9c2V0Q29udmVyc2F0aW9uSWQodCl7cmV0dXJuIHRoaXMuTz10fHx2b2lkIDAsdGhpcy5SKCksdGhpc31zZXRUYWdzKHQpe3JldHVybiB0aGlzLmw9ey4uLnRoaXMubCwuLi50fSx0aGlzLlIoKSx0aGlzfXNldFRhZyh0LG4pe3JldHVybiB0aGlzLnNldFRhZ3Moe1t0XTpufSl9c2V0QXR0cmlidXRlcyh0KXtyZXR1cm4gdGhpcy5tPXsuLi50aGlzLm0sLi4udH0sdGhpcy5SKCksdGhpc31zZXRBdHRyaWJ1dGUodCxuKXtyZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVzKHtbdF06bn0pfXJlbW92ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gdCBpbiB0aGlzLm0mJihkZWxldGUgdGhpcy5tW3RdLHRoaXMuUigpKSx0aGlzfXNldEV4dHJhcyh0KXtyZXR1cm4gdGhpcy52PXsuLi50aGlzLnYsLi4udH0sdGhpcy5SKCksdGhpc31zZXRFeHRyYSh0LG4pe3JldHVybiB0aGlzLnY9ey4uLnRoaXMudixbdF06bn0sdGhpcy5SKCksdGhpc31zZXRGaW5nZXJwcmludCh0KXtyZXR1cm4gdGhpcy5UPXQsdGhpcy5SKCksdGhpc31zZXRMZXZlbCh0KXtyZXR1cm4gdGhpcy5qPXQsdGhpcy5SKCksdGhpc31zZXRUcmFuc2FjdGlvbk5hbWUodCl7cmV0dXJuIHRoaXMuQT10LHRoaXMuUigpLHRoaXN9c2V0Q29udGV4dCh0LG4pe3JldHVybiBudWxsPT09bj9kZWxldGUgdGhpcy5fW3RdOnRoaXMuX1t0XT1uLHRoaXMuUigpLHRoaXN9c2V0U2Vzc2lvbih0KXtyZXR1cm4gdD90aGlzLkM9dDpkZWxldGUgdGhpcy5DLHRoaXMuUigpLHRoaXN9Z2V0U2Vzc2lvbigpe3JldHVybiB0aGlzLkN9dXBkYXRlKHQpe2lmKCF0KXJldHVybiB0aGlzO2NvbnN0IG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dCh0aGlzKTp0LGU9biBpbnN0YW5jZW9mIG50P24uZ2V0U2NvcGVEYXRhKCk6QShuKT90OnZvaWQgMCx7dGFnczpyLGF0dHJpYnV0ZXM6byxleHRyYTppLHVzZXI6cyxjb250ZXh0czpjLGxldmVsOnUsZmluZ2VycHJpbnQ6YT1bXSxwcm9wYWdhdGlvbkNvbnRleHQ6Zixjb252ZXJzYXRpb25JZDpofT1lfHx7fTtyZXR1cm4gdGhpcy5sPXsuLi50aGlzLmwsLi4ucn0sdGhpcy5tPXsuLi50aGlzLm0sLi4ub30sdGhpcy52PXsuLi50aGlzLnYsLi4uaX0sdGhpcy5fPXsuLi50aGlzLl8sLi4uY30scyYmT2JqZWN0LmtleXMocykubGVuZ3RoJiYodGhpcy5wPXMpLHUmJih0aGlzLmo9dSksYS5sZW5ndGgmJih0aGlzLlQ9YSksZiYmKHRoaXMuTj1mKSxoJiYodGhpcy5PPWgpLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy51PVtdLHRoaXMubD17fSx0aGlzLm09e30sdGhpcy52PXt9LHRoaXMucD17fSx0aGlzLl89e30sdGhpcy5qPXZvaWQgMCx0aGlzLkE9dm9pZCAwLHRoaXMuVD12b2lkIDAsdGhpcy5DPXZvaWQgMCx0aGlzLk89dm9pZCAwLFgodGhpcyx2b2lkIDApLHRoaXMuaD1bXSx0aGlzLnNldFByb3BhZ2F0aW9uQ29udGV4dCh7dHJhY2VJZDpaKCksc2FtcGxlUmFuZDpCKCl9KSx0aGlzLlIoKSx0aGlzfWFkZEJyZWFkY3J1bWIodCxuKXtjb25zdCBlPSJudW1iZXIiPT10eXBlb2Ygbj9uOjEwMDtpZihlPD0wKXJldHVybiB0aGlzO2NvbnN0IHI9e3RpbWVzdGFtcDpHKCksLi4udCxtZXNzYWdlOnQubWVzc2FnZT96KHQubWVzc2FnZSwyMDQ4KTp0Lm1lc3NhZ2V9O3JldHVybiB0aGlzLnUucHVzaChyKSx0aGlzLnUubGVuZ3RoPmUmJih0aGlzLnU9dGhpcy51LnNsaWNlKC1lKSx0aGlzLms/LnJlY29yZERyb3BwZWRFdmVudCgiYnVmZmVyX292ZXJmbG93IiwibG9nX2l0ZW0iKSksdGhpcy5SKCksdGhpc31nZXRMYXN0QnJlYWRjcnVtYigpe3JldHVybiB0aGlzLnVbdGhpcy51Lmxlbmd0aC0xXX1jbGVhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMudT1bXSx0aGlzLlIoKSx0aGlzfWFkZEF0dGFjaG1lbnQodCl7cmV0dXJuIHRoaXMuaC5wdXNoKHQpLHRoaXN9Y2xlYXJBdHRhY2htZW50cygpe3JldHVybiB0aGlzLmg9W10sdGhpc31nZXRTY29wZURhdGEoKXtyZXR1cm57YnJlYWRjcnVtYnM6dGhpcy51LGF0dGFjaG1lbnRzOnRoaXMuaCxjb250ZXh0czp0aGlzLl8sdGFnczp0aGlzLmwsYXR0cmlidXRlczp0aGlzLm0sZXh0cmE6dGhpcy52LHVzZXI6dGhpcy5wLGxldmVsOnRoaXMuaixmaW5nZXJwcmludDp0aGlzLlR8fFtdLGV2ZW50UHJvY2Vzc29yczp0aGlzLmkscHJvcGFnYXRpb25Db250ZXh0OnRoaXMuTixzZGtQcm9jZXNzaW5nTWV0YWRhdGE6dGhpcy5TLHRyYW5zYWN0aW9uTmFtZTp0aGlzLkEsc3Bhbjp0dCh0aGlzKSxjb252ZXJzYXRpb25JZDp0aGlzLk99fXNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh0KXtyZXR1cm4gdGhpcy5TPUsodGhpcy5TLHQsMiksdGhpc31zZXRQcm9wYWdhdGlvbkNvbnRleHQodCl7cmV0dXJuIHRoaXMuTj10LHRoaXN9Z2V0UHJvcGFnYXRpb25Db250ZXh0KCl7cmV0dXJuIHRoaXMuTn1jYXB0dXJlRXhjZXB0aW9uKHQsbil7Y29uc3QgZT1uPy5ldmVudF9pZHx8RigpO2lmKCF0aGlzLmspcmV0dXJuIGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV4Y2VwdGlvbiEiKSxlO2NvbnN0IHI9bmV3IEVycm9yKCJTZW50cnkgc3ludGhldGljRXhjZXB0aW9uIik7cmV0dXJuIHRoaXMuay5jYXB0dXJlRXhjZXB0aW9uKHQse29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOnIsLi4ubixldmVudF9pZDplfSx0aGlzKSxlfWNhcHR1cmVNZXNzYWdlKHQsbixlKXtjb25zdCByPWU/LmV2ZW50X2lkfHxGKCk7aWYoIXRoaXMuaylyZXR1cm4gaCYmUy53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgbWVzc2FnZSEiKSxyO2NvbnN0IG89ZT8uc3ludGhldGljRXhjZXB0aW9uPz9uZXcgRXJyb3IodCk7cmV0dXJuIHRoaXMuay5jYXB0dXJlTWVzc2FnZSh0LG4se29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOm8sLi4uZSxldmVudF9pZDpyfSx0aGlzKSxyfWNhcHR1cmVFdmVudCh0LG4pe2NvbnN0IGU9dC5ldmVudF9pZHx8bj8uZXZlbnRfaWR8fEYoKTtyZXR1cm4gdGhpcy5rPyh0aGlzLmsuY2FwdHVyZUV2ZW50KHQsey4uLm4sZXZlbnRfaWQ6ZX0sdGhpcyksZSk6KGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50ISIpLGUpfVIoKXt0aGlzLnR8fCh0aGlzLnQ9ITAsdGhpcy5vLmZvckVhY2godD0+e3QodGhpcyl9KSx0aGlzLnQ9ITEpfX1jb25zdCBldD10PT50IGluc3RhbmNlb2YgUHJvbWlzZSYmIXRbcnRdLHJ0PVN5bWJvbCgiY2hhaW5lZCBQcm9taXNlTGlrZSIpLG90PSh0LG4pPT57bGV0IGU9ITE7Zm9yKGNvbnN0IHIgaW4gdCl7aWYociBpbiBuKWNvbnRpbnVlO2U9ITA7Y29uc3Qgbz10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBvP09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHIse3ZhbHVlOiguLi5uKT0+by5hcHBseSh0LG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vfXJldHVybiBlJiZPYmplY3QuYXNzaWduKG4se1tydF06ITB9KSxufTtjbGFzcyBpdHtjb25zdHJ1Y3Rvcih0LG4pe2xldCBlLHI7ZT10fHxuZXcgbnQscj1ufHxuZXcgbnQsdGhpcy5QPVt7c2NvcGU6ZX1dLHRoaXMuRD1yfXdpdGhTY29wZSh0KXtjb25zdCBuPXRoaXMuVSgpO2xldCBlO3RyeXtlPXQobil9Y2F0Y2godCl7dGhyb3cgdGhpcy5MKCksdH1yZXR1cm4gVChlKT8oKHQsbixlKT0+e2NvbnN0IHI9dC50aGVuKHQ9PihuKHQpLHQpLHQ9Pnt0aHJvdyBlKHQpLHR9KTtyZXR1cm4gZXQocikmJmV0KHQpP3I6b3QodCxyKX0pKGUsKCk9PnRoaXMuTCgpLCgpPT50aGlzLkwoKSk6KHRoaXMuTCgpLGUpfWdldENsaWVudCgpe3JldHVybiB0aGlzLmdldFN0YWNrVG9wKCkuY2xpZW50fWdldFNjb3BlKCl7cmV0dXJuIHRoaXMuZ2V0U3RhY2tUb3AoKS5zY29wZX1nZXRJc29sYXRpb25TY29wZSgpe3JldHVybiB0aGlzLkR9Z2V0U3RhY2tUb3AoKXtyZXR1cm4gdGhpcy5QW3RoaXMuUC5sZW5ndGgtMV19VSgpe2NvbnN0IHQ9dGhpcy5nZXRTY29wZSgpLmNsb25lKCk7cmV0dXJuIHRoaXMuUC5wdXNoKHtjbGllbnQ6dGhpcy5nZXRDbGllbnQoKSxzY29wZTp0fSksdH1MKCl7cmV0dXJuISh0aGlzLlAubGVuZ3RoPD0xKSYmISF0aGlzLlAucG9wKCl9fWZ1bmN0aW9uIHN0KCl7Y29uc3QgdD1tKGwoKSk7cmV0dXJuIHQuc3RhY2s9dC5zdGFja3x8bmV3IGl0KGcoImRlZmF1bHRDdXJyZW50U2NvcGUiLCgpPT5uZXcgbnQpLGcoImRlZmF1bHRJc29sYXRpb25TY29wZSIsKCk9Pm5ldyBudCkpfWZ1bmN0aW9uIGN0KHQpe3JldHVybiBzdCgpLndpdGhTY29wZSh0KX1mdW5jdGlvbiB1dCh0LG4pe2NvbnN0IGU9c3QoKTtyZXR1cm4gZS53aXRoU2NvcGUoKCk9PihlLmdldFN0YWNrVG9wKCkuc2NvcGU9dCxuKHQpKSl9ZnVuY3Rpb24gYXQodCl7cmV0dXJuIHN0KCkud2l0aFNjb3BlKCgpPT50KHN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKSkpfWZ1bmN0aW9uIGZ0KHQpe2NvbnN0IG49bSh0KTtyZXR1cm4gbi5hY3M/bi5hY3M6e3dpdGhJc29sYXRpb25TY29wZTphdCx3aXRoU2NvcGU6Y3Qsd2l0aFNldFNjb3BlOnV0LHdpdGhTZXRJc29sYXRpb25TY29wZToodCxuKT0+YXQobiksZ2V0Q3VycmVudFNjb3BlOigpPT5zdCgpLmdldFNjb3BlKCksZ2V0SXNvbGF0aW9uU2NvcGU6KCk9PnN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKX19ZnVuY3Rpb24gaHQoKXtyZXR1cm4gZnQobCgpKS5nZXRDdXJyZW50U2NvcGUoKS5nZXRDbGllbnQoKX1mdW5jdGlvbiBwdCh0KXtpZih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJiJkZXJlZiJpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5kZXJlZil0cnl7cmV0dXJuIHQuZGVyZWYoKX1jYXRjaHtyZXR1cm59cmV0dXJuIHR9fWZ1bmN0aW9uIGR0KHQpe2NvbnN0IG49dDtyZXR1cm57c2NvcGU6bi5fc2VudHJ5U2NvcGUsaXNvbGF0aW9uU2NvcGU6cHQobi5fc2VudHJ5SXNvbGF0aW9uU2NvcGUpfX1jb25zdCBsdD0ic2VudHJ5LSI7ZnVuY3Rpb24gbXQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdHx8IUModCkmJiFBcnJheS5pc0FycmF5KHQpKXJldHVybjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGU9Z3Qobik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtuLGVdKT0+e3Rbbl09ZX0pLHR9LHt9KTtyZXR1cm4gZ3QodCl9KHQpO2lmKCFuKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgodCxbbixlXSk9PntpZihuLnN0YXJ0c1dpdGgobHQpKXt0W24uc2xpY2UoNyldPWV9cmV0dXJuIHR9LHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjA/ZTp2b2lkIDB9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAodD0+e2NvbnN0IG49dC5pbmRleE9mKCI9Iik7aWYoLTE9PT1uKXJldHVybltdO3JldHVyblt0LnNsaWNlKDAsbiksdC5zbGljZShuKzEpXS5tYXAodD0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQudHJpbSgpKX1jYXRjaHtyZXR1cm59fSl9KS5yZWR1Y2UoKHQsW24sZV0pPT4obiYmZSYmKHRbbl09ZSksdCkse30pfWNvbnN0IHl0PS9ebyhcZCspXC4vO2Z1bmN0aW9uIGJ0KHQsbj0hMSl7Y29uc3R7aG9zdDplLHBhdGg6cixwYXNzOm8scG9ydDppLHByb2plY3RJZDpzLHByb3RvY29sOmMscHVibGljS2V5OnV9PXQ7cmV0dXJuYCR7Y306Ly8ke3V9JHtuJiZvP2A6JHtvfWA6IiJ9QCR7ZX0ke2k/YDoke2l9YDoiIn0vJHtyP2Ake3J9L2A6cn0ke3N9YH1mdW5jdGlvbiB2dCh0KXtjb25zdCBuPXQuZ2V0T3B0aW9ucygpLHtob3N0OmV9PXQuZ2V0RHNuKCl8fHt9O2xldCByO3JldHVybiBuLm9yZ0lkP3I9U3RyaW5nKG4ub3JnSWQpOmUmJihyPWZ1bmN0aW9uKHQpe2NvbnN0IG49dC5tYXRjaCh5dCk7cmV0dXJuIG4/LlsxXX0oZSkpLHJ9ZnVuY3Rpb24gX3QodCl7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplLGlzUmVtb3RlOnJ9PXQuc3BhbkNvbnRleHQoKSxvPXI/bjpFdCh0KS5wYXJlbnRfc3Bhbl9pZCxpPWR0KHQpLnNjb3BlO3JldHVybntwYXJlbnRfc3Bhbl9pZDpvLHNwYW5faWQ6cj9pPy5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKS5wcm9wYWdhdGlvblNwYW5JZHx8cSgpOm4sdHJhY2VfaWQ6ZX19ZnVuY3Rpb24gd3QodCl7cmV0dXJuIHQmJnQubGVuZ3RoPjA/dC5tYXAoKHtjb250ZXh0OntzcGFuSWQ6dCx0cmFjZUlkOm4sdHJhY2VGbGFnczplLC4uLnJ9LGF0dHJpYnV0ZXM6b30pPT4oe3NwYW5faWQ6dCx0cmFjZV9pZDpuLHNhbXBsZWQ6MT09PWUsYXR0cmlidXRlczpvLC4uLnJ9KSk6dm9pZCAwfWZ1bmN0aW9uIFN0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD8kdCh0KTpBcnJheS5pc0FycmF5KHQpP3RbMF0rdFsxXS8xZTk6dCBpbnN0YW5jZW9mIERhdGU/JHQodC5nZXRUaW1lKCkpOkooKX1mdW5jdGlvbiAkdCh0KXtyZXR1cm4gdD45OTk5OTk5OTk5P3QvMWUzOnR9ZnVuY3Rpb24gRXQodCl7aWYoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0U3BhbkpTT059KHQpKXJldHVybiB0LmdldFNwYW5KU09OKCk7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplfT10LnNwYW5Db250ZXh0KCk7aWYoZnVuY3Rpb24odCl7Y29uc3Qgbj10O3JldHVybiEhKG4uYXR0cmlidXRlcyYmbi5zdGFydFRpbWUmJm4ubmFtZSYmbi5lbmRUaW1lJiZuLnN0YXR1cyl9KHQpKXtjb25zdHthdHRyaWJ1dGVzOnIsc3RhcnRUaW1lOm8sbmFtZTppLGVuZFRpbWU6cyxzdGF0dXM6YyxsaW5rczp1fT10O3JldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxkYXRhOnIsZGVzY3JpcHRpb246aSxwYXJlbnRfc3Bhbl9pZDoicGFyZW50U3BhbklkImluIHQ/dC5wYXJlbnRTcGFuSWQ6InBhcmVudFNwYW5Db250ZXh0ImluIHQ/dC5wYXJlbnRTcGFuQ29udGV4dD8uc3BhbklkOnZvaWQgMCxzdGFydF90aW1lc3RhbXA6U3QobyksdGltZXN0YW1wOlN0KHMpfHx2b2lkIDAsc3RhdHVzOnh0KGMpLG9wOnJbInNlbnRyeS5vcCJdLG9yaWdpbjpyWyJzZW50cnkub3JpZ2luIl0sbGlua3M6d3QodSl9fXJldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxzdGFydF90aW1lc3RhbXA6MCxkYXRhOnt9fX1mdW5jdGlvbiB4dCh0KXtpZih0JiYwIT09dC5jb2RlKXJldHVybiAxPT09dC5jb2RlPyJvayI6dC5tZXNzYWdlfHwiaW50ZXJuYWxfZXJyb3IifWZ1bmN0aW9uIE50KHQpe3JldHVybiB0Ll9zZW50cnlSb290U3Bhbnx8dH1mdW5jdGlvbiBqdCh0KXtjb25zdCBuPWh0KCk7aWYoIW4pcmV0dXJue307Y29uc3QgZT1OdCh0KSxyPUV0KGUpLG89ci5kYXRhLGk9ZS5zcGFuQ29udGV4dCgpLnRyYWNlU3RhdGUscz1pPy5nZXQoInNlbnRyeS5zYW1wbGVfcmF0ZSIpPz9vWyJzZW50cnkuc2FtcGxlX3JhdGUiXT8/b1sic2VudHJ5LnByZXZpb3VzX3RyYWNlX3NhbXBsZV9yYXRlIl07ZnVuY3Rpb24gYyh0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHMmJiJzdHJpbmciIT10eXBlb2Ygc3x8KHQuc2FtcGxlX3JhdGU9YCR7c31gKSx0fWNvbnN0IHU9ZS5fZnJvemVuRHNjO2lmKHUpcmV0dXJuIGModSk7Y29uc3QgYT1pPy5nZXQoInNlbnRyeS5kc2MiKSxmPWEmJm10KGEpO2lmKGYpcmV0dXJuIGMoZik7Y29uc3QgaD1mdW5jdGlvbih0LG4pe2NvbnN0IGU9bi5nZXRPcHRpb25zKCkse3B1YmxpY0tleTpyfT1uLmdldERzbigpfHx7fSxvPXtlbnZpcm9ubWVudDplLmVudmlyb25tZW50fHwicHJvZHVjdGlvbiIscmVsZWFzZTplLnJlbGVhc2UscHVibGljX2tleTpyLHRyYWNlX2lkOnQsb3JnX2lkOnZ0KG4pfTtyZXR1cm4gbi5lbWl0KCJjcmVhdGVEc2MiLG8pLG99KHQuc3BhbkNvbnRleHQoKS50cmFjZUlkLG4pLHA9b1sic2VudHJ5LnNvdXJjZSJdLGQ9ci5kZXNjcmlwdGlvbjtyZXR1cm4idXJsIiE9PXAmJmQmJihoLnRyYW5zYWN0aW9uPWQpLGZ1bmN0aW9uKCl7aWYoImJvb2xlYW4iPT10eXBlb2YgX19TRU5UUllfVFJBQ0lOR19fJiYhX19TRU5UUllfVFJBQ0lOR19fKXJldHVybiExO2NvbnN0IHQ9aHQoKT8uZ2V0T3B0aW9ucygpO3JldHVybiEoIXR8fG51bGw9PXQudHJhY2VzU2FtcGxlUmF0ZSYmIXQudHJhY2VzU2FtcGxlcil9KCkmJihoLnNhbXBsZWQ9U3RyaW5nKGZ1bmN0aW9uKHQpe2NvbnN0e3RyYWNlRmxhZ3M6bn09dC5zcGFuQ29udGV4dCgpO3JldHVybiAxPT09bn0oZSkpLGguc2FtcGxlX3JhbmQ9aT8uZ2V0KCJzZW50cnkuc2FtcGxlX3JhbmQiKT8/ZHQoZSkuc2NvcGU/LmdldFByb3BhZ2F0aW9uQ29udGV4dCgpLnNhbXBsZVJhbmQudG9TdHJpbmcoKSksYyhoKSxuLmVtaXQoImNyZWF0ZURzYyIsaCxlKSxofWZ1bmN0aW9uIEN0KHQsbj0xMDAsZT0xLzApe3RyeXtyZXR1cm4gQXQoIiIsdCxuLGUpfWNhdGNoKHQpe3JldHVybntFUlJPUjpgKipub24tc2VyaWFsaXphYmxlKiogKCR7dH0pYH19fWZ1bmN0aW9uIEF0KHQsbixlPTEvMCxyPTEvMCxvPWZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgV2Vha1NldDtmdW5jdGlvbiBuKG4pe3JldHVybiEhdC5oYXMobil8fCh0LmFkZChuKSwhMSl9ZnVuY3Rpb24gZShuKXt0LmRlbGV0ZShuKX1yZXR1cm5bbixlXX0oKSl7Y29uc3RbaSxzXT1vO2lmKG51bGw9PW58fFsiYm9vbGVhbiIsInN0cmluZyJdLmluY2x1ZGVzKHR5cGVvZiBuKXx8Im51bWJlciI9PXR5cGVvZiBuJiZOdW1iZXIuaXNGaW5pdGUobikpcmV0dXJuIG47Y29uc3QgYz1mdW5jdGlvbih0LG4pe3RyeXtpZigiZG9tYWluIj09PXQmJm4mJiJvYmplY3QiPT10eXBlb2YgbiYmbi5NKXJldHVybiJbRG9tYWluXSI7aWYoImRvbWFpbkVtaXR0ZXIiPT09dClyZXR1cm4iW0RvbWFpbkVtaXR0ZXJdIjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbj09PWdsb2JhbClyZXR1cm4iW0dsb2JhbF0iO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZuPT09d2luZG93KXJldHVybiJbV2luZG93XSI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmbj09PWRvY3VtZW50KXJldHVybiJbRG9jdW1lbnRdIjtpZigib2JqZWN0Ij09dHlwZW9mKGU9bikmJm51bGwhPT1lJiYoZS5fX2lzVnVlfHxlLkJ8fGUuX192X2lzVk5vZGUpKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4iX192X2lzVk5vZGUiaW4gdCYmdC5fX3ZfaXNWTm9kZT8iW1Z1ZVZOb2RlXSI6IltWdWVWaWV3TW9kZWxdIn0obik7aWYoZnVuY3Rpb24odCl7cmV0dXJuIEEodCkmJiJuYXRpdmVFdmVudCJpbiB0JiYicHJldmVudERlZmF1bHQiaW4gdCYmInN0b3BQcm9wYWdhdGlvbiJpbiB0fShuKSlyZXR1cm4iW1N5bnRoZXRpY0V2ZW50XSI7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYhTnVtYmVyLmlzRmluaXRlKG4pKXJldHVybmBbJHtufV1gO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybmBbRnVuY3Rpb246ICR7ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5uYW1lfHx4fWNhdGNoe3JldHVybiB4fX0obil9XWA7aWYoInN5bWJvbCI9PXR5cGVvZiBuKXJldHVybmBbJHtTdHJpbmcobil9XWA7aWYoImJpZ2ludCI9PXR5cGVvZiBuKXJldHVybmBbQmlnSW50OiAke1N0cmluZyhuKX1dYDtjb25zdCByPWZ1bmN0aW9uKHQpe2NvbnN0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBuPy5jb25zdHJ1Y3Rvcj9uLmNvbnN0cnVjdG9yLm5hbWU6Im51bGwgcHJvdG90eXBlIn0obik7cmV0dXJuL15IVE1MKFx3KilFbGVtZW50JC8udGVzdChyKT9gW0hUTUxFbGVtZW50OiAke3J9XWA6YFtvYmplY3QgJHtyfV1gfWNhdGNoKHQpe3JldHVybmAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHt0fSlgfXZhciBlfSh0LG4pO2lmKCFjLnN0YXJ0c1dpdGgoIltvYmplY3QgIikpcmV0dXJuIGM7aWYobi5fX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXylyZXR1cm4gbjtjb25zdCB1PSJudW1iZXIiPT10eXBlb2Ygbi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18/bi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX186ZTtpZigwPT09dSlyZXR1cm4gYy5yZXBsYWNlKCJvYmplY3QgIiwiIik7aWYoaShuKSlyZXR1cm4iW0NpcmN1bGFyIH5dIjtjb25zdCBhPW47aWYoYSYmImZ1bmN0aW9uIj09dHlwZW9mIGEudG9KU09OKXRyeXtyZXR1cm4gQXQoIiIsYS50b0pTT04oKSx1LTEscixvKX1jYXRjaHt9Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP1tdOnt9O2xldCBoPTA7Y29uc3QgcD1SKG4pO2Zvcihjb25zdCB0IGluIHApe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCx0KSljb250aW51ZTtpZihoPj1yKXtmW3RdPSJbTWF4UHJvcGVydGllcyB+XSI7YnJlYWt9Y29uc3Qgbj1wW3RdO2ZbdF09QXQodCxuLHUtMSxyLG8pLGgrK31yZXR1cm4gcyhuKSxmfWZ1bmN0aW9uIFR0KHQsbil7Y29uc3QgZT1uLnJlcGxhY2UoL1xcL2csIi8iKS5yZXBsYWNlKC9bfFxce30oKVtcXV4kKyo/Ll0vZywiXFwkJiIpO2xldCByPXQ7dHJ5e3I9ZGVjb2RlVVJJKHQpfWNhdGNoe31yZXR1cm4gci5yZXBsYWNlKC9cXC9nLCIvIikucmVwbGFjZSgvd2VicGFjazpcLz8vZywiIikucmVwbGFjZShuZXcgUmVnRXhwKGAoZmlsZTovLyk/Lyoke2V9LypgLCJpZyIpLCJhcHA6Ly8vIil9ZnVuY3Rpb24ga3QodCxuPVtdKXtyZXR1cm5bdCxuXX1mdW5jdGlvbiBJdCh0LG4pe2NvbnN0IGU9dFsxXTtmb3IoY29uc3QgdCBvZiBlKXtpZihuKHQsdFswXS50eXBlKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBPdCh0KXtjb25zdCBuPW0ocCk7cmV0dXJuIG4uZW5jb2RlUG9seWZpbGw/bi5lbmNvZGVQb2x5ZmlsbCh0KToobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodCl9ZnVuY3Rpb24gUnQodCl7Y29uc3RbbixlXT10O2xldCByPUpTT04uc3RyaW5naWZ5KG4pO2Z1bmN0aW9uIG8odCl7InN0cmluZyI9PXR5cGVvZiByP3I9InN0cmluZyI9PXR5cGVvZiB0P3IrdDpbT3QociksdF06ci5wdXNoKCJzdHJpbmciPT10eXBlb2YgdD9PdCh0KTp0KX1mb3IoY29uc3QgdCBvZiBlKXtjb25zdFtuLGVdPXQ7aWYobyhgXG4ke0pTT04uc3RyaW5naWZ5KG4pfVxuYCksInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSlvKGUpO2Vsc2V7bGV0IHQ7dHJ5e3Q9SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2h7dD1KU09OLnN0cmluZ2lmeShDdChlKSl9byh0KX19cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3I6ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnJlZHVjZSgodCxuKT0+dCtuLmxlbmd0aCwwKSxlPW5ldyBVaW50OEFycmF5KG4pO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgdCllLnNldChuLHIpLHIrPW4ubGVuZ3RoO3JldHVybiBlfShyKX1jb25zdCBQdD17c2Vzc2lvbnM6InNlc3Npb24iLGV2ZW50OiJlcnJvciIsY2xpZW50X3JlcG9ydDoiaW50ZXJuYWwiLHVzZXJfcmVwb3J0OiJkZWZhdWx0Iixwcm9maWxlX2NodW5rOiJwcm9maWxlIixyZXBsYXlfZXZlbnQ6InJlcGxheSIscmVwbGF5X3JlY29yZGluZzoicmVwbGF5IixjaGVja19pbjoibW9uaXRvciIscmF3X3NlY3VyaXR5OiJzZWN1cml0eSIsbG9nOiJsb2dfaXRlbSIsdHJhY2VfbWV0cmljOiJtZXRyaWMifTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gUHR9KHQpP1B0W3RdOnR9ZnVuY3Rpb24gVXQodCl7aWYoIXQ/LnNkaylyZXR1cm47Y29uc3R7bmFtZTpuLHZlcnNpb246ZX09dC5zZGs7cmV0dXJue25hbWU6bix2ZXJzaW9uOmV9fWZ1bmN0aW9uIEx0KHQsbixlLHIpe2NvbnN0IG89VXQoZSksaT10LnR5cGUmJiJyZXBsYXlfZXZlbnQiIT09dC50eXBlP3QudHlwZToiZXZlbnQiOyFmdW5jdGlvbih0LG4pe2lmKCFuKXJldHVybiB0O2NvbnN0IGU9dC5zZGt8fHt9O3Quc2RrPXsuLi5lLG5hbWU6ZS5uYW1lfHxuLm5hbWUsdmVyc2lvbjplLnZlcnNpb258fG4udmVyc2lvbixpbnRlZ3JhdGlvbnM6Wy4uLnQuc2RrPy5pbnRlZ3JhdGlvbnN8fFtdLC4uLm4uaW50ZWdyYXRpb25zfHxbXV0scGFja2FnZXM6Wy4uLnQuc2RrPy5wYWNrYWdlc3x8W10sLi4ubi5wYWNrYWdlc3x8W11dLHNldHRpbmdzOnQuc2RrPy5zZXR0aW5nc3x8bi5zZXR0aW5ncz97Li4udC5zZGs/LnNldHRpbmdzLC4uLm4uc2V0dGluZ3N9OnZvaWQgMH19KHQsZT8uc2RrKTtjb25zdCBzPWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89dC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE/LmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7cmV0dXJue2V2ZW50X2lkOnQuZXZlbnRfaWQsc2VudF9hdDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCksLi4ubiYme3NkazpufSwuLi4hIWUmJnImJntkc246YnQocil9LC4uLm8mJnt0cmFjZTpvfX19KHQsbyxyLG4pO2RlbGV0ZSB0LnNka1Byb2Nlc3NpbmdNZXRhZGF0YTtyZXR1cm4ga3QocyxbW3t0eXBlOml9LHRdXSl9Y29uc3QgTXQ9Il9fU0VOVFJZX1NVUFBSRVNTX1RSQUNJTkdfXyI7ZnVuY3Rpb24gQnQodCl7Y29uc3Qgbj1mdChsKCkpO3JldHVybiBuLnN1cHByZXNzVHJhY2luZz9uLnN1cHByZXNzVHJhY2luZyh0KTpmdW5jdGlvbiguLi50KXtjb25zdCBuPWZ0KGwoKSk7aWYoMj09PXQubGVuZ3RoKXtjb25zdFtlLHJdPXQ7cmV0dXJuIGU/bi53aXRoU2V0U2NvcGUoZSxyKTpuLndpdGhTY29wZShyKX1yZXR1cm4gbi53aXRoU2NvcGUodFswXSl9KG49PntuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTohMH0pO2NvbnN0IGU9dCgpO3JldHVybiBuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTp2b2lkIDB9KSxlfSl9Y2xhc3MgV3R7Y29uc3RydWN0b3IodCl7dGhpcy5XPTAsdGhpcy5GPVtdLHRoaXMuRyh0KX10aGVuKHQsbil7cmV0dXJuIG5ldyBXdCgoZSxyKT0+e3RoaXMuRi5wdXNoKFshMSxuPT57aWYodCl0cnl7ZSh0KG4pKX1jYXRjaCh0KXtyKHQpfWVsc2UgZShuKX0sdD0+e2lmKG4pdHJ5e2Uobih0KSl9Y2F0Y2godCl7cih0KX1lbHNlIHIodCl9XSksdGhpcy5IKCl9KX1jYXRjaCh0KXtyZXR1cm4gdGhpcy50aGVuKHQ9PnQsdCl9ZmluYWxseSh0KXtyZXR1cm4gbmV3IFd0KChuLGUpPT57bGV0IHIsbztyZXR1cm4gdGhpcy50aGVuKG49PntvPSExLHI9bix0JiZ0KCl9LG49PntvPSEwLHI9bix0JiZ0KCl9KS50aGVuKCgpPT57bz9lKHIpOm4ocil9KX0pfUgoKXtpZigwPT09dGhpcy5XKXJldHVybjtjb25zdCB0PXRoaXMuRi5zbGljZSgpO3RoaXMuRj1bXSx0LmZvckVhY2godD0+e3RbMF18fCgxPT09dGhpcy5XJiZ0WzFdKHRoaXMuSiksMj09PXRoaXMuVyYmdFsyXSh0aGlzLkopLHRbMF09ITApfSl9Ryh0KXtjb25zdCBuPSh0LG4pPT57MD09PXRoaXMuVyYmKFQobik/bi50aGVuKGUscik6KHRoaXMuVz10LHRoaXMuSj1uLHRoaXMuSCgpKSl9LGU9dD0+e24oMSx0KX0scj10PT57bigyLHQpfTt0cnl7dChlLHIpfWNhdGNoKHQpe3IodCl9fX1mdW5jdGlvbiB6dCh0LG4pe2NvbnN0e2ZpbmdlcnByaW50OmUsc3BhbjpyLGJyZWFkY3J1bWJzOm8sc2RrUHJvY2Vzc2luZ01ldGFkYXRhOml9PW47IWZ1bmN0aW9uKHQsbil7Y29uc3R7ZXh0cmE6ZSx0YWdzOnIsdXNlcjpvLGNvbnRleHRzOmksbGV2ZWw6cyx0cmFuc2FjdGlvbk5hbWU6Y309bjtPYmplY3Qua2V5cyhlKS5sZW5ndGgmJih0LmV4dHJhPXsuLi5lLC4uLnQuZXh0cmF9KTtPYmplY3Qua2V5cyhyKS5sZW5ndGgmJih0LnRhZ3M9ey4uLnIsLi4udC50YWdzfSk7T2JqZWN0LmtleXMobykubGVuZ3RoJiYodC51c2VyPXsuLi5vLC4uLnQudXNlcn0pO09iamVjdC5rZXlzKGkpLmxlbmd0aCYmKHQuY29udGV4dHM9ey4uLmksLi4udC5jb250ZXh0c30pO3MmJih0LmxldmVsPXMpO2MmJiJ0cmFuc2FjdGlvbiIhPT10LnR5cGUmJih0LnRyYW5zYWN0aW9uPWMpfSh0LG4pLHImJmZ1bmN0aW9uKHQsbil7dC5jb250ZXh0cz17dHJhY2U6X3QobiksLi4udC5jb250ZXh0c30sdC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE9e2R5bmFtaWNTYW1wbGluZ0NvbnRleHQ6anQobiksLi4udC5zZGtQcm9jZXNzaW5nTWV0YWRhdGF9O2NvbnN0IGU9TnQobikscj1FdChlKS5kZXNjcmlwdGlvbjtyJiYhdC50cmFuc2FjdGlvbiYmInRyYW5zYWN0aW9uIj09PXQudHlwZSYmKHQudHJhbnNhY3Rpb249cil9KHQsciksZnVuY3Rpb24odCxuKXt0LmZpbmdlcnByaW50PXQuZmluZ2VycHJpbnQ/QXJyYXkuaXNBcnJheSh0LmZpbmdlcnByaW50KT90LmZpbmdlcnByaW50Olt0LmZpbmdlcnByaW50XTpbXSxuJiYodC5maW5nZXJwcmludD10LmZpbmdlcnByaW50LmNvbmNhdChuKSk7dC5maW5nZXJwcmludC5sZW5ndGh8fGRlbGV0ZSB0LmZpbmdlcnByaW50fSh0LGUpLGZ1bmN0aW9uKHQsbil7Y29uc3QgZT1bLi4udC5icmVhZGNydW1ic3x8W10sLi4ubl07dC5icmVhZGNydW1icz1lLmxlbmd0aD9lOnZvaWQgMH0odCxvKSxmdW5jdGlvbih0LG4pe3Quc2RrUHJvY2Vzc2luZ01ldGFkYXRhPXsuLi50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwuLi5ufX0odCxpKX1jb25zdCBGdD1TeW1ib2wuZm9yKCJTZW50cnlCdWZmZXJGdWxsRXJyb3IiKTtmdW5jdGlvbiBHdCh0PTEwMCl7Y29uc3Qgbj1uZXcgU2V0O2Z1bmN0aW9uIGUodCl7bi5kZWxldGUodCl9cmV0dXJue2dldCAkKCl7cmV0dXJuIEFycmF5LmZyb20obil9LGFkZDpmdW5jdGlvbihyKXtpZighKG4uc2l6ZTx0KSlyZXR1cm4gbz1GdCxuZXcgV3QoKHQsbik9PntuKG8pfSk7dmFyIG87Y29uc3QgaT1yKCk7cmV0dXJuIG4uYWRkKGkpLGkudGhlbigoKT0+ZShpKSwoKT0+ZShpKSksaX0sZHJhaW46ZnVuY3Rpb24odCl7aWYoIW4uc2l6ZSlyZXR1cm4gZT0hMCxuZXcgV3QodD0+e3QoZSl9KTt2YXIgZTtjb25zdCByPVByb21pc2UuYWxsU2V0dGxlZChBcnJheS5mcm9tKG4pKS50aGVuKCgpPT4hMCk7aWYoIXQpcmV0dXJuIHI7Y29uc3Qgbz1bcixuZXcgUHJvbWlzZShuPT57cmV0dXJuIm9iamVjdCI9PXR5cGVvZihlPXNldFRpbWVvdXQoKCk9Pm4oITEpLHQpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudW5yZWYmJmUudW5yZWYoKSxlO3ZhciBlfSldO3JldHVybiBQcm9taXNlLnJhY2Uobyl9fX1mdW5jdGlvbiBIdCh0LHtzdGF0dXNDb2RlOm4saGVhZGVyczplfSxyPVcoKSl7Y29uc3Qgbz17Li4udH0saT1lPy5bIngtc2VudHJ5LXJhdGUtbGltaXRzIl0scz1lPy5bInJldHJ5LWFmdGVyIl07aWYoaSlmb3IoY29uc3QgdCBvZiBpLnRyaW0oKS5zcGxpdCgiLCIpKXtjb25zdFtuLGUsLCxpXT10LnNwbGl0KCI6Iiw1KSxzPXBhcnNlSW50KG4sMTApLGM9MWUzKihpc05hTihzKT82MDpzKTtpZihlKWZvcihjb25zdCB0IG9mIGUuc3BsaXQoIjsiKSkibWV0cmljX2J1Y2tldCI9PT10JiZpJiYhaS5zcGxpdCgiOyIpLmluY2x1ZGVzKCJjdXN0b20iKXx8KG9bdF09citjKTtlbHNlIG8uYWxsPXIrY31lbHNlIHM/by5hbGw9citmdW5jdGlvbih0LG49VygpKXtjb25zdCBlPXBhcnNlSW50KGAke3R9YCwxMCk7aWYoIWlzTmFOKGUpKXJldHVybiAxZTMqZTtjb25zdCByPURhdGUucGFyc2UoYCR7dH1gKTtyZXR1cm4gaXNOYU4ocik/NmU0OnItbn0ocyxyKTo0Mjk9PT1uJiYoby5hbGw9cis2ZTQpO3JldHVybiBvfWZ1bmN0aW9uIEp0KHQsbixlPUd0KHQuYnVmZmVyU2l6ZXx8NjQpKXtsZXQgcj17fTtyZXR1cm57c2VuZDpmdW5jdGlvbih0KXtjb25zdCBvPVtdO2lmKEl0KHQsKHQsbik9Pntjb25zdCBlPUR0KG4pOyhmdW5jdGlvbih0LG4sZT1XKCkpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB0W25dfHx0LmFsbHx8MH0odCxuKT5lfSkocixlKXx8by5wdXNoKHQpfSksMD09PW8ubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO2NvbnN0IGk9a3QodFswXSxvKSxzPXQ9PnshZnVuY3Rpb24odCxuKXtyZXR1cm4gSXQodCwodCxlKT0+bi5pbmNsdWRlcyhlKSl9KGksWyJjbGllbnRfcmVwb3J0Il0pP0l0KGksKHQsbik9Pnt9KTpoJiZTLndhcm4oYERyb3BwaW5nIGNsaWVudCByZXBvcnQuIFdpbGwgbm90IHNlbmQgb3V0Y29tZXMgKHJlYXNvbjogJHt0fSkuYCl9O3JldHVybiBlLmFkZCgoKT0+bih7Ym9keTpSdChpKX0pLnRoZW4odD0+NDEzPT09dC5zdGF0dXNDb2RlPyhoJiZTLmVycm9yKCJTZW50cnkgcmVzcG9uZGVkIHdpdGggc3RhdHVzIGNvZGUgNDEzLiBFbnZlbG9wZSB3YXMgZGlzY2FyZGVkIGR1ZSB0byBleGNlZWRpbmcgc2l6ZSBsaW1pdHMuIikscygic2VuZF9lcnJvciIpLHQpOihoJiZ2b2lkIDAhPT10LnN0YXR1c0NvZGUmJih0LnN0YXR1c0NvZGU8MjAwfHx0LnN0YXR1c0NvZGU+PTMwMCkmJlMud2FybihgU2VudHJ5IHJlc3BvbmRlZCB3aXRoIHN0YXR1cyBjb2RlICR7dC5zdGF0dXNDb2RlfSB0byBzZW50IGV2ZW50LmApLHI9SHQocix0KSx0KSx0PT57dGhyb3cgcygibmV0d29ya19lcnJvciIpLGgmJlMuZXJyb3IoIkVuY291bnRlcmVkIGVycm9yIHJ1bm5pbmcgdHJhbnNwb3J0IHJlcXVlc3Q6Iix0KSx0fSkpLnRoZW4odD0+dCx0PT57aWYodD09PUZ0KXJldHVybiBoJiZTLmVycm9yKCJTa2lwcGVkIHNlbmRpbmcgZXZlbnQgYmVjYXVzZSBidWZmZXIgaXMgZnVsbC4iKSxzKCJxdWV1ZV9vdmVyZmxvdyIpLFByb21pc2UucmVzb2x2ZSh7fSk7dGhyb3cgdH0pfSxmbHVzaDp0PT5lLmRyYWluKHQpfX1jb25zdCBZdD0vXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87ZnVuY3Rpb24gVnQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtjb25zdCBuPXQubGVuZ3RoPjEwMjQ/YDx0cnVuY2F0ZWQ+JHt0LnNsaWNlKC0xMDI0KX1gOnQsZT1ZdC5leGVjKG4pO3JldHVybiBlP2Uuc2xpY2UoMSk6W119KHQpLGU9blswXXx8IiI7bGV0IHI9blsxXTtyZXR1cm4gZXx8cj8ociYmKHI9ci5zbGljZSgwLHIubGVuZ3RoLTEpKSxlK3IpOiIuIn1mdW5jdGlvbiBLdCh0LG49ITEpe3JldHVybiEobnx8dCYmIXQuc3RhcnRzV2l0aCgiLyIpJiYhdC5tYXRjaCgvXltBLVpdOi8pJiYhdC5zdGFydHNXaXRoKCIuIikmJiF0Lm1hdGNoKC9eW2EtekEtWl0oW2EtekEtWjAtOS5cLStdKSo6XC9cLy8pKSYmdm9pZCAwIT09dCYmIXQuaW5jbHVkZXMoIm5vZGVfbW9kdWxlcy8iKX1jb25zdCBadD1TeW1ib2woIkFnZW50QmFzZUludGVybmFsU3RhdGUiKTtjbGFzcyBxdCBleHRlbmRzIGkuQWdlbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpc1tadF09e319aXNTZWN1cmVFbmRwb2ludCh0KXtpZih0KXtpZigiYm9vbGVhbiI9PXR5cGVvZiB0LnNlY3VyZUVuZHBvaW50KXJldHVybiB0LnNlY3VyZUVuZHBvaW50O2lmKCJzdHJpbmciPT10eXBlb2YgdC5wcm90b2NvbClyZXR1cm4iaHR0cHM6Ij09PXQucHJvdG9jb2x9Y29uc3R7c3RhY2s6bn09bmV3IEVycm9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmbi5zcGxpdCgiXG4iKS5zb21lKHQ9Pi0xIT09dC5pbmRleE9mKCIoaHR0cHMuanM6Iil8fC0xIT09dC5pbmRleE9mKCJub2RlOmh0dHBzOiIpKX1jcmVhdGVTb2NrZXQodCxuLGUpe2NvbnN0IHI9ey4uLm4sc2VjdXJlRW5kcG9pbnQ6dGhpcy5pc1NlY3VyZUVuZHBvaW50KG4pfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbm5lY3QodCxyKSkudGhlbihvPT57aWYobyBpbnN0YW5jZW9mIGkuQWdlbnQpcmV0dXJuIG8uYWRkUmVxdWVzdCh0LHIpO3RoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9byxzdXBlci5jcmVhdGVTb2NrZXQodCxuLGUpfSxlKX1jcmVhdGVDb25uZWN0aW9uKCl7Y29uc3QgdD10aGlzW1p0XS5jdXJyZW50U29ja2V0O2lmKHRoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9dm9pZCAwLCF0KXRocm93IG5ldyBFcnJvcigiTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24iKTtyZXR1cm4gdH1nZXQgZGVmYXVsdFBvcnQoKXtyZXR1cm4gdGhpc1tadF0uZGVmYXVsdFBvcnQ/PygiaHR0cHM6Ij09PXRoaXMucHJvdG9jb2w/NDQzOjgwKX1zZXQgZGVmYXVsdFBvcnQodCl7dGhpc1tadF0mJih0aGlzW1p0XS5kZWZhdWx0UG9ydD10KX1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpc1tadF0ucHJvdG9jb2w/Pyh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKT8iaHR0cHM6IjoiaHR0cDoiKX1zZXQgcHJvdG9jb2wodCl7dGhpc1tadF0mJih0aGlzW1p0XS5wcm90b2NvbD10KX19ZnVuY3Rpb24gUXQoLi4udCl7Uy5sb2coIltodHRwcy1wcm94eS1hZ2VudDpwYXJzZS1wcm94eS1yZXNwb25zZV0iLC4uLnQpfWZ1bmN0aW9uIFh0KHQpe3JldHVybiBuZXcgUHJvbWlzZSgobixlKT0+e2xldCByPTA7Y29uc3Qgbz1bXTtmdW5jdGlvbiBpKCl7Y29uc3QgYz10LnJlYWQoKTtjP2Z1bmN0aW9uKGMpe28ucHVzaChjKSxyKz1jLmxlbmd0aDtjb25zdCB1PUJ1ZmZlci5jb25jYXQobyxyKSxhPXUuaW5kZXhPZigiXHJcblxyXG4iKTtpZigtMT09PWEpcmV0dXJuIFF0KCJoYXZlIG5vdCByZWNlaXZlZCBlbmQgb2YgSFRUUCBoZWFkZXJzIHlldC4uLiIpLHZvaWQgaSgpO2NvbnN0IGY9dS5zdWJhcnJheSgwLGEpLnRvU3RyaW5nKCJhc2NpaSIpLnNwbGl0KCJcclxuIiksaD1mLnNoaWZ0KCk7aWYoIWgpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKCJObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlIikpO2NvbnN0IHA9aC5zcGxpdCgiICIpLGQ9KyhwWzFdfHwwKSxsPXAuc2xpY2UoMikuam9pbigiICIpLG09e307Zm9yKGNvbnN0IG4gb2YgZil7aWYoIW4pY29udGludWU7Y29uc3Qgcj1uLmluZGV4T2YoIjoiKTtpZigtMT09PXIpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKGBJbnZhbGlkIGhlYWRlciBmcm9tIHByb3h5IENPTk5FQ1QgcmVzcG9uc2U6ICIke259ImApKTtjb25zdCBvPW4uc2xpY2UoMCxyKS50b0xvd2VyQ2FzZSgpLGk9bi5zbGljZShyKzEpLnRyaW1TdGFydCgpLHM9bVtvXTsic3RyaW5nIj09dHlwZW9mIHM/bVtvXT1bcyxpXTpBcnJheS5pc0FycmF5KHMpP3MucHVzaChpKTptW29dPWl9UXQoImdvdCBwcm94eSBzZXJ2ZXIgcmVzcG9uc2U6ICVvICVvIixoLG0pLHMoKSxuKHtjb25uZWN0OntzdGF0dXNDb2RlOmQsc3RhdHVzVGV4dDpsLGhlYWRlcnM6bX0sYnVmZmVyZWQ6dX0pfShjKTp0Lm9uY2UoInJlYWRhYmxlIixpKX1mdW5jdGlvbiBzKCl7dC5yZW1vdmVMaXN0ZW5lcigiZW5kIixjKSx0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsdSksdC5yZW1vdmVMaXN0ZW5lcigicmVhZGFibGUiLGkpfWZ1bmN0aW9uIGMoKXtzKCksUXQoIm9uZW5kIiksZShuZXcgRXJyb3IoIlByb3h5IGNvbm5lY3Rpb24gZW5kZWQgYmVmb3JlIHJlY2VpdmluZyBDT05ORUNUIHJlc3BvbnNlIikpfWZ1bmN0aW9uIHUodCl7cygpLFF0KCJvbmVycm9yICVvIix0KSxlKHQpfXQub24oImVycm9yIix1KSx0Lm9uKCJlbmQiLGMpLGkoKX0pfWZ1bmN0aW9uIHRuKC4uLnQpe1MubG9nKCJbaHR0cHMtcHJveHktYWdlbnRdIiwuLi50KX1jbGFzcyBubiBleHRlbmRzIHF0e3N0YXRpYyBfX2luaXRTdGF0aWMoKXt0aGlzLnByb3RvY29scz1bImh0dHAiLCJodHRwcyJdfWNvbnN0cnVjdG9yKHQsbil7c3VwZXIobiksdGhpcy5vcHRpb25zPXt9LHRoaXMucHJveHk9InN0cmluZyI9PXR5cGVvZiB0P25ldyBVUkwodCk6dCx0aGlzLnByb3h5SGVhZGVycz1uPy5oZWFkZXJzPz97fSx0bigiQ3JlYXRpbmcgbmV3IEh0dHBzUHJveHlBZ2VudCBpbnN0YW5jZTogJW8iLHRoaXMucHJveHkuaHJlZik7Y29uc3QgZT0odGhpcy5wcm94eS5ob3N0bmFtZXx8dGhpcy5wcm94eS5ob3N0KS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpLHI9dGhpcy5wcm94eS5wb3J0P3BhcnNlSW50KHRoaXMucHJveHkucG9ydCwxMCk6Imh0dHBzOiI9PT10aGlzLnByb3h5LnByb3RvY29sPzQ0Mzo4MDt0aGlzLmNvbm5lY3RPcHRzPXtBTFBOUHJvdG9jb2xzOlsiaHR0cC8xLjEiXSwuLi5uP3JuKG4sImhlYWRlcnMiKTpudWxsLGhvc3Q6ZSxwb3J0OnJ9fWFzeW5jIGNvbm5lY3QodCxuKXtjb25zdHtwcm94eTplfT10aGlzO2lmKCFuLmhvc3QpdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gImhvc3QiIHByb3ZpZGVkJyk7bGV0IHI7aWYoImh0dHBzOiI9PT1lLnByb3RvY29sKXt0bigiQ3JlYXRpbmcgYHRscy5Tb2NrZXRgOiAlbyIsdGhpcy5jb25uZWN0T3B0cyk7Y29uc3QgdD10aGlzLmNvbm5lY3RPcHRzLnNlcnZlcm5hbWV8fHRoaXMuY29ubmVjdE9wdHMuaG9zdDtyPWYuY29ubmVjdCh7Li4udGhpcy5jb25uZWN0T3B0cyxzZXJ2ZXJuYW1lOnQmJmEuaXNJUCh0KT92b2lkIDA6dH0pfWVsc2UgdG4oIkNyZWF0aW5nIGBuZXQuU29ja2V0YDogJW8iLHRoaXMuY29ubmVjdE9wdHMpLHI9YS5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpO2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucHJveHlIZWFkZXJzP3RoaXMucHJveHlIZWFkZXJzKCk6ey4uLnRoaXMucHJveHlIZWFkZXJzfSxpPWEuaXNJUHY2KG4uaG9zdCk/YFske24uaG9zdH1dYDpuLmhvc3Q7bGV0IHM9YENPTk5FQ1QgJHtpfToke24ucG9ydH0gSFRUUC8xLjFcclxuYDtpZihlLnVzZXJuYW1lfHxlLnBhc3N3b3JkKXtjb25zdCB0PWAke2RlY29kZVVSSUNvbXBvbmVudChlLnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQoZS5wYXNzd29yZCl9YDtvWyJQcm94eS1BdXRob3JpemF0aW9uIl09YEJhc2ljICR7QnVmZmVyLmZyb20odCkudG9TdHJpbmcoImJhc2U2NCIpfWB9by5Ib3N0PWAke2l9OiR7bi5wb3J0fWAsb1siUHJveHktQ29ubmVjdGlvbiJdfHwob1siUHJveHktQ29ubmVjdGlvbiJdPXRoaXMua2VlcEFsaXZlPyJLZWVwLUFsaXZlIjoiY2xvc2UiKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhvKSlzKz1gJHt0fTogJHtvW3RdfVxyXG5gO2NvbnN0IGM9WHQocik7ci53cml0ZShgJHtzfVxyXG5gKTtjb25zdHtjb25uZWN0OnUsYnVmZmVyZWQ6aH09YXdhaXQgYztpZih0LmVtaXQoInByb3h5Q29ubmVjdCIsdSksdGhpcy5lbWl0KCJwcm94eUNvbm5lY3QiLHUsdCksMjAwPT09dS5zdGF0dXNDb2RlKXtpZih0Lm9uY2UoInNvY2tldCIsZW4pLG4uc2VjdXJlRW5kcG9pbnQpe3RuKCJVcGdyYWRpbmcgc29ja2V0IGNvbm5lY3Rpb24gdG8gVExTIik7Y29uc3QgdD1uLnNlcnZlcm5hbWV8fG4uaG9zdDtyZXR1cm4gZi5jb25uZWN0KHsuLi5ybihuLCJob3N0IiwicGF0aCIsInBvcnQiKSxzb2NrZXQ6cixzZXJ2ZXJuYW1lOmEuaXNJUCh0KT92b2lkIDA6dH0pfXJldHVybiByfXIuZGVzdHJveSgpO2NvbnN0IHA9bmV3IGEuU29ja2V0KHt3cml0YWJsZTohMX0pO3JldHVybiBwLnJlYWRhYmxlPSEwLHQub25jZSgic29ja2V0Iix0PT57dG4oIlJlcGxheWluZyBwcm94eSBidWZmZXIgZm9yIGZhaWxlZCByZXF1ZXN0IiksdC5wdXNoKGgpLHQucHVzaChudWxsKX0pLHB9fWZ1bmN0aW9uIGVuKHQpe3QucmVzdW1lKCl9ZnVuY3Rpb24gcm4odCwuLi5uKXtjb25zdCBlPXt9O2xldCByO2ZvcihyIGluIHQpbi5pbmNsdWRlcyhyKXx8KGVbcl09dFtyXSk7cmV0dXJuIGV9bm4uX19pbml0U3RhdGljKCk7ZnVuY3Rpb24gb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXltBLVpdOi8sIiIpLnJlcGxhY2UoL1xcL2csIi8iKX1jb25zdCBzbj1uO2xldCBjbix1bj0wLGFuPXt9O2Z1bmN0aW9uIGZuKHQpe3NuLmRlYnVnJiZjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7dH1gKX12YXIgaG4scG4sZG47Y29uc3QgbG49ZnVuY3Rpb24odCl7bGV0IG47dHJ5e249bmV3IFVSTCh0LnVybCl9Y2F0Y2gobil7cmV0dXJuIGIoKCk9Pntjb25zb2xlLndhcm4oIltAc2VudHJ5L25vZGVdOiBJbnZhbGlkIGRzbiBvciB0dW5uZWwgb3B0aW9uLCB3aWxsIG5vdCBzZW5kIGFueSBldmVudHMuIFRoZSB0dW5uZWwgb3B0aW9uIG11c3QgYmUgYSBmdWxsIFVSTCB3aGVuIHVzZWQuIil9KSxKdCh0LCgpPT5Qcm9taXNlLnJlc29sdmUoe30pKX1jb25zdCBlPSJodHRwczoiPT09bi5wcm90b2NvbCxyPWZ1bmN0aW9uKHQsbil7Y29uc3R7bm9fcHJveHk6ZX09cHJvY2Vzcy5lbnYscj1lPy5zcGxpdCgiLCIpLnNvbWUobj0+dC5ob3N0LmVuZHNXaXRoKG4pfHx0Lmhvc3RuYW1lLmVuZHNXaXRoKG4pKTtyZXR1cm4gcj92b2lkIDA6bn0obix0LnByb3h5fHwoZT9wcm9jZXNzLmVudi5odHRwc19wcm94eTp2b2lkIDApfHxwcm9jZXNzLmVudi5odHRwX3Byb3h5KSxvPWU/czppLGE9dm9pZCAwIT09dC5rZWVwQWxpdmUmJnQua2VlcEFsaXZlLGY9cj9uZXcgbm4ocik6bmV3IG8uQWdlbnQoe2tlZXBBbGl2ZTphLG1heFNvY2tldHM6MzAsdGltZW91dDoyZTN9KSxoPWZ1bmN0aW9uKHQsbixlKXtjb25zdHtob3N0bmFtZTpyLHBhdGhuYW1lOm8scG9ydDppLHByb3RvY29sOnMsc2VhcmNoOmF9PW5ldyBVUkwodC51cmwpO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gbmV3IFByb21pc2UoKGgscCk9PntCdCgoKT0+e2xldCBkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYyh7cmVhZCgpe3RoaXMucHVzaCh0KSx0aGlzLnB1c2gobnVsbCl9fSl9KGYuYm9keSk7Y29uc3QgbD17Li4udC5oZWFkZXJzfTtmLmJvZHkubGVuZ3RoPjMyNzY4JiYobFsiY29udGVudC1lbmNvZGluZyJdPSJnemlwIixkPWQucGlwZSh1KCkpKTtjb25zdCBtPXIuc3RhcnRzV2l0aCgiWyIpLGc9bi5yZXF1ZXN0KHttZXRob2Q6IlBPU1QiLGFnZW50OmUsaGVhZGVyczpsLGhvc3RuYW1lOm0/ci5zbGljZSgxLC0xKTpyLHBhdGg6YCR7b30ke2F9YCxwb3J0OmkscHJvdG9jb2w6cyxjYTp0LmNhQ2VydHN9LHQ9Pnt0Lm9uKCJkYXRhIiwoKT0+e30pLHQub24oImVuZCIsKCk9Pnt9KSx0LnNldEVuY29kaW5nKCJ1dGY4Iik7Y29uc3Qgbj10LmhlYWRlcnNbInJldHJ5LWFmdGVyIl0/P251bGwsZT10LmhlYWRlcnNbIngtc2VudHJ5LXJhdGUtbGltaXRzIl0/P251bGw7aCh7c3RhdHVzQ29kZTp0LnN0YXR1c0NvZGUsaGVhZGVyczp7InJldHJ5LWFmdGVyIjpuLCJ4LXNlbnRyeS1yYXRlLWxpbWl0cyI6QXJyYXkuaXNBcnJheShlKT9lWzBdfHxudWxsOmV9fSl9KTtnLm9uKCJlcnJvciIscCksZC5waXBlKGcpfSl9KX19KHQsdC5odHRwTW9kdWxlPz9vLGYpO3JldHVybiBKdCh0LGgpfSh7dXJsOihobj1zbi5kc24scG49c24udHVubmVsLGRuPXNuLnNka01ldGFkYXRhLnNkayxwbnx8YCR7ZnVuY3Rpb24odCl7cmV0dXJuYCR7ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnByb3RvY29sP2Ake3QucHJvdG9jb2x9OmA6IiIsZT10LnBvcnQ/YDoke3QucG9ydH1gOiIiO3JldHVybmAke259Ly8ke3QuaG9zdH0ke2V9JHt0LnBhdGg/YC8ke3QucGF0aH1gOiIifS9hcGkvYH0odCl9JHt0LnByb2plY3RJZH0vZW52ZWxvcGUvYH0oaG4pfT8ke2Z1bmN0aW9uKHQsbil7Y29uc3QgZT17c2VudHJ5X3ZlcnNpb246IjcifTtyZXR1cm4gdC5wdWJsaWNLZXkmJihlLnNlbnRyeV9rZXk9dC5wdWJsaWNLZXkpLG4mJihlLnNlbnRyeV9jbGllbnQ9YCR7bi5uYW1lfS8ke24udmVyc2lvbn1gKSxuZXcgVVJMU2VhcmNoUGFyYW1zKGUpLnRvU3RyaW5nKCl9KGhuLGRuKX1gKX0pO2FzeW5jIGZ1bmN0aW9uIG1uKCl7aWYoY24pe2ZuKCJTZW5kaW5nIGFibm9ybWFsIHNlc3Npb24iKSxWKGNuLHtzdGF0dXM6ImFibm9ybWFsIixhYm5vcm1hbF9tZWNoYW5pc206ImFucl9mb3JlZ3JvdW5kIixyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnR9KTtjb25zdCB0PWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89VXQoZSk7cmV0dXJuIGt0KHtzZW50X2F0OihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwuLi5vJiZ7c2RrOm99LC4uLiEhciYmbiYme2RzbjpidChuKX19LFsiYWdncmVnYXRlcyJpbiB0P1t7dHlwZToic2Vzc2lvbnMifSx0XTpbe3R5cGU6InNlc3Npb24ifSx0LnRvSlNPTigpXV0pfShjbixzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeSh0KSksYXdhaXQgbG4uc2VuZCh0KTt0cnl7ZT8ucG9zdE1lc3NhZ2UoInNlc3Npb24tZW5kZWQiKX1jYXRjaHt9fX1mdW5jdGlvbiBnbih0KXtpZighdClyZXR1cm47Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdC5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1BcnJheS5mcm9tKHQpO3JldHVybi9zZW50cnlXcmFwcGVkLy50ZXN0KEUobikuZnVuY3Rpb258fCIiKSYmbi5wb3AoKSxuLnJldmVyc2UoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiYobi5wb3AoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiZuLnBvcCgpKSxuLnNsaWNlKDAsNTApLm1hcCh0PT4oey4uLnQsZmlsZW5hbWU6dC5maWxlbmFtZXx8RShuKS5maWxlbmFtZSxmdW5jdGlvbjp0LmZ1bmN0aW9ufHwiPyJ9KSl9KHQpO2lmKHNuLmFwcFJvb3RQYXRoKWZvcihjb25zdCB0IG9mIG4pdC5maWxlbmFtZSYmKHQuZmlsZW5hbWU9VHQodC5maWxlbmFtZSxzbi5hcHBSb290UGF0aCkpO3JldHVybiBufWFzeW5jIGZ1bmN0aW9uIHluKHQsbil7aWYodW4+PXNuLm1heEFuckV2ZW50cylyZXR1cm47dW4rPTEsYXdhaXQgbW4oKSxmbigiU2VuZGluZyBldmVudCIpO2NvbnN0IGU9e2V2ZW50X2lkOkYoKSxjb250ZXh0czpzbi5jb250ZXh0cyxyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnQsZGlzdDpzbi5kaXN0LHBsYXRmb3JtOiJub2RlIixsZXZlbDoiZXJyb3IiLGV4Y2VwdGlvbjp7dmFsdWVzOlt7dHlwZToiQXBwbGljYXRpb25Ob3RSZXNwb25kaW5nIix2YWx1ZTpgQXBwbGljYXRpb24gTm90IFJlc3BvbmRpbmcgZm9yIGF0IGxlYXN0ICR7c24uYW5yVGhyZXNob2xkfSBtc2Asc3RhY2t0cmFjZTp7ZnJhbWVzOmduKHQpfSxtZWNoYW5pc206e3R5cGU6IkFOUiJ9fV19LHRhZ3M6c24uc3RhdGljVGFnc307biYmZnVuY3Rpb24odCxuKXtpZih6dCh0LG4pLCF0LmNvbnRleHRzPy50cmFjZSl7Y29uc3R7dHJhY2VJZDplLHBhcmVudFNwYW5JZDpyLHByb3BhZ2F0aW9uU3BhbklkOm99PW4ucHJvcGFnYXRpb25Db250ZXh0O3QuY29udGV4dHM9e3RyYWNlOnt0cmFjZV9pZDplLHNwYW5faWQ6b3x8cSgpLHBhcmVudF9zcGFuX2lkOnJ9LC4uLnQuY29udGV4dHN9fX0oZSxuKSxmdW5jdGlvbih0KXtpZigwPT09T2JqZWN0LmtleXMoYW4pLmxlbmd0aClyZXR1cm47Y29uc3Qgbj1zbi5hcHBSb290UGF0aD97fTphbjtpZihzbi5hcHBSb290UGF0aClmb3IoY29uc3RbdCxlXW9mIE9iamVjdC5lbnRyaWVzKGFuKSluW1R0KHQsc24uYXBwUm9vdFBhdGgpXT1lO2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3QgciBvZiB0LmV4Y2VwdGlvbj8udmFsdWVzfHxbXSlmb3IoY29uc3QgdCBvZiByLnN0YWNrdHJhY2U/LmZyYW1lc3x8W10pe2NvbnN0IHI9dC5hYnNfcGF0aHx8dC5maWxlbmFtZTtyJiZuW3JdJiZlLnNldChyLG5bcl0pfWlmKGUuc2l6ZT4wKXtjb25zdCBuPVtdO2Zvcihjb25zdFt0LHJdb2YgZS5lbnRyaWVzKCkpbi5wdXNoKHt0eXBlOiJzb3VyY2VtYXAiLGNvZGVfZmlsZTp0LGRlYnVnX2lkOnJ9KTt0LmRlYnVnX21ldGE9e2ltYWdlczpufX19KGUpO2NvbnN0IHI9THQoZSxzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeShyKSksYXdhaXQgbG4uc2VuZChyKSxhd2FpdCBsbi5mbHVzaCgyZTMpLHVuPj1zbi5tYXhBbnJFdmVudHMmJnNldFRpbWVvdXQoKCk9Pntwcm9jZXNzLmV4aXQoMCl9LDVlMyl9bGV0IGJuO2lmKGZuKCJTdGFydGVkIiksc24uY2FwdHVyZVN0YWNrVHJhY2Upe2ZuKCJDb25uZWN0aW5nIHRvIGRlYnVnZ2VyIik7Y29uc3Qgbj1uZXcgdDtuLmNvbm5lY3RUb01haW5UaHJlYWQoKSxmbigiQ29ubmVjdGVkIHRvIGRlYnVnZ2VyIik7Y29uc3QgZT1uZXcgTWFwO24ub24oIkRlYnVnZ2VyLnNjcmlwdFBhcnNlZCIsdD0+e2Uuc2V0KHQucGFyYW1zLnNjcmlwdElkLHQucGFyYW1zLnVybCl9KSxuLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLHQ9PntpZigib3RoZXIiPT09dC5wYXJhbXMucmVhc29uKXRyeXtmbigiRGVidWdnZXIgcGF1c2VkIik7Y29uc3QgaT1bLi4udC5wYXJhbXMuY2FsbEZyYW1lc10scz1zbi5hcHBSb290UGF0aD9mdW5jdGlvbih0PShwcm9jZXNzLmFyZ3ZbMV0/VnQocHJvY2Vzcy5hcmd2WzFdKTpwcm9jZXNzLmN3ZCgpKSxuPSJcXCI9PT1vKXtjb25zdCBlPW4/b24odCk6dDtyZXR1cm4gdD0+e2lmKCF0KXJldHVybjtjb25zdCBvPW4/b24odCk6dDtsZXR7ZGlyOmksYmFzZTpzLGV4dDpjfT1yLnBhcnNlKG8pOyIuanMiIT09YyYmIi5tanMiIT09YyYmIi5janMiIT09Y3x8KHM9cy5zbGljZSgwLC0xKmMubGVuZ3RoKSk7Y29uc3QgdT1kZWNvZGVVUklDb21wb25lbnQocyk7aXx8KGk9Ii4iKTtjb25zdCBhPWkubGFzdEluZGV4T2YoIi9ub2RlX21vZHVsZXMiKTtpZihhPi0xKXJldHVybmAke2kuc2xpY2UoYSsxNCkucmVwbGFjZSgvXC8vZywiLiIpfToke3V9YDtpZihpLnN0YXJ0c1dpdGgoZSkpe2NvbnN0IHQ9aS5zbGljZShlLmxlbmd0aCsxKS5yZXBsYWNlKC9cLy9nLCIuIik7cmV0dXJuIHQ/YCR7dH06JHt1fWA6dX1yZXR1cm4gdX19KHNuLmFwcFJvb3RQYXRoKTooKT0+e30sYz1pLm1hcCh0PT5mdW5jdGlvbih0LG4sZSl7Y29uc3Qgcj1uP24ucmVwbGFjZSgvXmZpbGU6XC9cLy8sIiIpOnZvaWQgMCxvPXQubG9jYXRpb24uY29sdW1uTnVtYmVyP3QubG9jYXRpb24uY29sdW1uTnVtYmVyKzE6dm9pZCAwLGk9dC5sb2NhdGlvbi5saW5lTnVtYmVyP3QubG9jYXRpb24ubGluZU51bWJlcisxOnZvaWQgMDtyZXR1cm57ZmlsZW5hbWU6cixtb2R1bGU6ZShyKSxmdW5jdGlvbjp0LmZ1bmN0aW9uTmFtZXx8Ij8iLGNvbG5vOm8sbGluZW5vOmksaW5fYXBwOnI/S3Qocik6dm9pZCAwfX0odCxlLmdldCh0LmxvY2F0aW9uLnNjcmlwdElkKSxzKSksdT1zZXRUaW1lb3V0KCgpPT57eW4oYykudGhlbihudWxsLCgpPT57Zm4oIlNlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZC4iKX0pfSw1ZTMpO24ucG9zdCgiUnVudGltZS5ldmFsdWF0ZSIse2V4cHJlc3Npb246Imdsb2JhbC5fX1NFTlRSWV9HRVRfU0NPUEVTX18oKTsiLHNpbGVudDohMCxyZXR1cm5CeVZhbHVlOiEwfSwodCxlKT0+e3QmJmZuKGBFcnJvciBleGVjdXRpbmcgc2NyaXB0OiAnJHt0Lm1lc3NhZ2V9J2ApLGNsZWFyVGltZW91dCh1KTtjb25zdCByPWU/LnJlc3VsdD9lLnJlc3VsdC52YWx1ZTp2b2lkIDA7bi5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKSxuLnBvc3QoIkRlYnVnZ2VyLmRpc2FibGUiKSx5bihjLHIpLnRoZW4obnVsbCwoKT0+e2ZuKCJTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuIil9KX0pfWNhdGNoKHQpe3Rocm93IG4ucG9zdCgiRGVidWdnZXIucmVzdW1lIiksbi5wb3N0KCJEZWJ1Z2dlci5kaXNhYmxlIiksdH19KSxibj0oKT0+e3RyeXtuLnBvc3QoIkRlYnVnZ2VyLmVuYWJsZSIsKCk9PntuLnBvc3QoIkRlYnVnZ2VyLnBhdXNlIil9KX1jYXRjaHt9fX1jb25zdHtwb2xsOnZufT1mdW5jdGlvbih0LG4sZSxyKXtjb25zdCBvPXQoKTtsZXQgaT0hMSxzPSEwO3JldHVybiBzZXRJbnRlcnZhbCgoKT0+e2NvbnN0IHQ9by5nZXRUaW1lTXMoKTshMT09PWkmJnQ+bitlJiYoaT0hMCxzJiZyKCkpLHQ8bitlJiYoaT0hMSl9LDIwKSx7cG9sbDooKT0+e28ucmVzZXQoKX0sZW5hYmxlZDp0PT57cz10fX19KGZ1bmN0aW9uKCl7bGV0IHQ9cHJvY2Vzcy5ocnRpbWUoKTtyZXR1cm57Z2V0VGltZU1zOigpPT57Y29uc3RbbixlXT1wcm9jZXNzLmhydGltZSh0KTtyZXR1cm4gTWF0aC5mbG9vcigxZTMqbitlLzFlNil9LHJlc2V0OigpPT57dD1wcm9jZXNzLmhydGltZSgpfX19LHNuLnBvbGxJbnRlcnZhbCxzbi5hbnJUaHJlc2hvbGQsZnVuY3Rpb24oKXtmbigiV2F0Y2hkb2cgdGltZW91dCIpLGJuPyhmbigiUGF1c2luZyBkZWJ1Z2dlciB0byBjYXB0dXJlIHN0YWNrIHRyYWNlIiksYm4oKSk6KGZuKCJDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlIikseW4oKS50aGVuKG51bGwsKCk9PntmbigiU2VuZGluZyBBTlIgZXZlbnQgZmFpbGVkIG9uIHdhdGNoZG9nIHRpbWVvdXQuIil9KSl9KTtlPy5vbigibWVzc2FnZSIsdD0+e3Quc2Vzc2lvbiYmKGNuPVkodC5zZXNzaW9uKSksdC5kZWJ1Z0ltYWdlcyYmKGFuPXQuZGVidWdJbWFnZXMpLHZuKCl9KTs=";function k(a,...b){f.debug.log(`[ANR] ${a}`,...b)}function l(){let a=f.getCombinedScopeData(f.getIsolationScope(),f.getCurrentScope());return a.attachments=[],a.eventProcessors=[],a}async function m(a){let b={message:"ANR"},c={};for(let d of a.getEventProcessors()){if(null===b)break;b=await d(b,c)}return b?.contexts||{}}async function n(b,c){let d=b.getDsn();if(!d)return()=>{};let g=await m(b);delete g.app?.app_memory,delete g.device?.free_memory;let h=b.getOptions(),i=b.getSdkMetadata()||{};i.sdk&&(i.sdk.integrations=h.integrations.map(a=>a.name));let l={debug:f.debug.isEnabled(),dsn:d,tunnel:h.tunnel,environment:h.environment||"production",release:h.release,dist:h.dist,sdkMetadata:i,appRootPath:c.appRootPath,pollInterval:c.pollInterval||50,anrThreshold:c.anrThreshold||5e3,captureStackTrace:!!c.captureStackTrace,maxAnrEvents:c.maxAnrEvents||1,staticTags:c.staticTags||{},contexts:g};if(l.captureStackTrace){let b=await a.A(234177);b.url()||b.open(0)}let n=new e.Worker(new URL(`data:application/javascript;base64,${j}`),{workerData:l,execArgv:[],env:{...process.env,NODE_OPTIONS:void 0}});process.on("exit",()=>{n.terminate()});let o=setInterval(()=>{try{let a=f.getIsolationScope().getSession(),b=a?{...a,toJSON:void 0}:void 0;n.postMessage({session:b,debugImages:f.getFilenameToDebugIdMap(h.stackParser)})}catch{}},l.pollInterval);return o.unref(),n.on("message",a=>{"session-ended"===a&&(k("ANR event sent from ANR worker. Clearing session in this thread."),f.getIsolationScope().setSession(void 0))}),n.once("error",a=>{clearInterval(o),k("ANR worker error",a)}),n.once("exit",a=>{clearInterval(o),k("ANR worker exit",a)}),n.unref(),()=>{n.terminate(),clearInterval(o)}}c.anrIntegration=f.defineIntegration((a={})=>{let b,c;if(g.NODE_VERSION.major<16||16===g.NODE_VERSION.major&&g.NODE_VERSION.minor<17)throw Error("ANR detection requires Node 16.17.0 or later");return f.GLOBAL_OBJ.__SENTRY_GET_SCOPES__=l,{name:"Anr",startWorker:()=>{!b&&c&&(b=n(c,a))},stopWorker:()=>{b&&b.then(a=>{a(),b=void 0})},async setup(b){c=b,a.captureStackTrace&&await h.isDebuggerEnabled()&&(f.debug.warn("ANR captureStackTrace has been disabled because the debugger was already enabled"),a.captureStackTrace=!1),setImmediate(()=>this.startWorker())}}}),c.base64WorkerScript=j,c.disableAnrDetectionForCallback=function(a){let b=f.getClient()?.getIntegrationByName("Anr");if(!b)return a();b.stopWorker();let c=a();return i(c)?c.finally(()=>b.startWorker()):(b.startWorker(),c)}},820876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(812057),e=a.r(187845);c.captureLog=function(a,...b){let[c,f,g,h]=b;if(Array.isArray(f)){let b={...g};b["sentry.message.template"]=c,f.forEach((a,c)=>{b[`sentry.message.parameter.${c}`]=a});let i=d.format(c,...f);e._INTERNAL_captureLog({level:a,message:i,attributes:b},h?.scope)}else e._INTERNAL_captureLog({level:a,message:c,attributes:f},g?.scope??h?.scope)}},218921,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(820876);c.fmt=a.r(187845).fmt,c.debug=function(...a){d.captureLog("debug",...a)},c.error=function(...a){d.captureLog("error",...a)},c.fatal=function(...a){d.captureLog("fatal",...a)},c.info=function(...a){d.captureLog("info",...a)},c.trace=function(...a){d.captureLog("trace",...a)},c.warn=function(...a){d.captureLog("warn",...a)}},975798,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(60438),e=a.r(187845);c.nodeRuntimeMetricsIntegration=e.defineIntegration((a={})=>{let b,c,f,g,h=a.collectionIntervalMs??3e4,i={cpuUtilization:!0,memHeapUsed:!0,memHeapTotal:!0,memRss:!0,eventLoopDelayP50:!0,eventLoopDelayP99:!0,eventLoopUtilization:!0,uptime:!0,cpuTime:!1,memExternal:!1,eventLoopDelayMin:!1,eventLoopDelayMax:!1,eventLoopDelayMean:!1,eventLoopDelayP90:!1,...a.collect},j=i.eventLoopDelayP99||i.eventLoopDelayMin||i.eventLoopDelayMax||i.eventLoopDelayMean||i.eventLoopDelayP50||i.eventLoopDelayP90,k=i.cpuUtilization||i.cpuTime,l=0,m=a=>Math.max(0,(a-1e7)/1e9),n={attributes:{"sentry.origin":"auto.node.runtime_metrics"}},o={unit:"byte",attributes:{"sentry.origin":"auto.node.runtime_metrics"}},p={unit:"second",attributes:{"sentry.origin":"auto.node.runtime_metrics"}};function q(){let a=e._INTERNAL_safeDateNow(),b=a-l;if(k&&void 0!==c){let a=process.cpuUsage(c);i.cpuTime&&(e.metrics.gauge("node.runtime.cpu.user",a.user/1e6,p),e.metrics.gauge("node.runtime.cpu.system",a.system/1e6,p)),i.cpuUtilization&&b>0&&e.metrics.gauge("node.runtime.cpu.utilization",(a.user+a.system)/(1e3*b),n),c=process.cpuUsage()}if(i.memRss||i.memHeapUsed||i.memHeapTotal||i.memExternal){let a=process.memoryUsage();i.memRss&&e.metrics.gauge("node.runtime.mem.rss",a.rss,o),i.memHeapUsed&&e.metrics.gauge("node.runtime.mem.heap_used",a.heapUsed,o),i.memHeapTotal&&e.metrics.gauge("node.runtime.mem.heap_total",a.heapTotal,o),i.memExternal&&(e.metrics.gauge("node.runtime.mem.external",a.external,o),e.metrics.gauge("node.runtime.mem.array_buffers",a.arrayBuffers,o))}if(j&&g&&(i.eventLoopDelayMin&&e.metrics.gauge("node.runtime.event_loop.delay.min",m(g.min),p),i.eventLoopDelayMax&&e.metrics.gauge("node.runtime.event_loop.delay.max",m(g.max),p),i.eventLoopDelayMean&&e.metrics.gauge("node.runtime.event_loop.delay.mean",m(g.mean),p),i.eventLoopDelayP50&&e.metrics.gauge("node.runtime.event_loop.delay.p50",m(g.percentile(50)),p),i.eventLoopDelayP90&&e.metrics.gauge("node.runtime.event_loop.delay.p90",m(g.percentile(90)),p),i.eventLoopDelayP99&&e.metrics.gauge("node.runtime.event_loop.delay.p99",m(g.percentile(99)),p),g.reset()),i.eventLoopUtilization&&void 0!==f){let a=d.performance.eventLoopUtilization(),b=d.performance.eventLoopUtilization(a,f);e.metrics.gauge("node.runtime.event_loop.utilization",b.utilization,n),f=a}i.uptime&&b>0&&e.metrics.count("node.runtime.process.uptime",b/1e3,p),l=a}return{name:"NodeRuntimeMetrics",setup(){if(j){g?.disable();try{(g=d.monitorEventLoopDelay({resolution:10})).enable()}catch{g=void 0}}k&&(c=process.cpuUsage()),i.eventLoopUtilization&&(f=d.performance.eventLoopUtilization()),l=e._INTERNAL_safeDateNow(),b&&clearInterval(b),b=e._INTERNAL_safeUnref(setInterval(q,h))}}})},872360,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(970626),f=a.r(820876),g=["trace","debug","info","warn","error","fatal"],h=Symbol.for("level"),i=Symbol.for("message"),j=Symbol.for("splat"),k={silly:"trace",debug:"debug",verbose:"debug",http:"debug",info:"info",notice:"info",warn:"warn",warning:"warn",error:"error",emerg:"fatal",alert:"fatal",crit:"fatal"};c.createSentryWinstonTransport=function(a,b){return class extends a{constructor(a){super(a),this._levels=new Set(b?.levels??g)}log(a,c){try{var g;if(setImmediate(()=>{this.emit("logged",a)}),g=a,"object"!=typeof g||null==g)return;let c=a[h],{level:l,message:m,timestamp:n,...o}=a;o[h]=void 0,o[i]=void 0,o[j]=void 0;let p=b?.customLevelMap?.[c],q=k[c],r=p??q??"info";this._levels.has(r)?f.captureLog(r,m,{...o,"sentry.origin":"auto.log.winston"}):p||q||!e.DEBUG_BUILD||d.debug.log(`Winston log level ${c} is not captured by Sentry. Please add ${c} to the "customLevelMap" option of the Sentry Winston transport.`)}catch{}c&&c()}}}},380448,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(677652),e=a.r(187845),f=Symbol("sentry-track-pino-logger");function g(a,b,c){let d=Object.getOwnPropertySymbols(a),e=`Symbol(${b})`;for(let b of d)if(b.toString()===e){let d=a[b];return"string"==typeof d?d:c}return c}let h={levels:[],handled:!0},i={levels:["trace","debug","info","warn","error","fatal"]};c.pinoIntegration=Object.assign(e.defineIntegration((a={})=>{let b={autoInstrument:!1!==a.autoInstrument,error:{...h,...a.error},log:{...i,...a.log}};return{name:"Pino",setup:a=>{let c=!!a.getOptions().enableLogs;d.tracingChannel("pino_asJson").end.subscribe(a=>{let{instance:d,arguments:h,result:i}=a;!function(a,d,h){let i;if("track"!==(i=a[f])&&("ignore"===i||!b.autoInstrument))return;let j=function(a){let{level:b,time:c,pid:d,hostname:e,...f}=a;return f}(h),[k,l,m]=d,n=a?.levels?.labels?.[m]||"info",o=g(a,"pino.messageKey","msg"),p=l||j?.[o]||"";if(c&&b.log.levels.includes(n)){let a={...j,"sentry.origin":"auto.log.pino","pino.logger.level":m};e._INTERNAL_captureLog({level:n,message:p,attributes:a})}if(b.error.levels.includes(n)){let c={level:e.severityLevelFromString(n)};e.withScope(d=>{d.addEventProcessor(a=>(a.logger="pino",e.addExceptionMechanism(a,{handled:b.error.handled,type:"auto.log.pino"}),a));let f=k[g(a,"pino.errorKey","err")];f?e.captureException(f,c):e.captureMessage(p,c)})}}(d,h,JSON.parse(i))})}}}),{trackLogger(a){a&&"object"==typeof a&&"levels"in a&&(a[f]="track")},untrackLogger(a){a&&"object"==typeof a&&"levels"in a&&(a[f]="ignore")}})},42517,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.addOriginToSpan=function(a,b){a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,b)}},726848,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getRequestUrl=function(a){let b=a.protocol||"",c=a.hostname||a.host||"",d=!a.port||80===a.port||443===a.port||/^(.*):(\d+)$/.test(c)?"":`:${a.port}`,e=a.path?a.path:"/";return`${b}//${c}${d}${e}`}},483623,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];c.replaceCronNames=function(a){return d.reduce((a,[b,c])=>a.replace(RegExp(b,"gi"),c),a)}},43501,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(483623),f="Automatic instrumentation of CronJob only supports crontab string";c.instrumentCron=function(a,b){let c=!1;return new Proxy(a,{construct(a,g){let[h,i,j,k,l,...m]=g;if("string"!=typeof h)throw Error(f);if(c)throw Error(`A job named '${b}' has already been scheduled`);c=!0;let n=e.replaceCronNames(h);return new a(h,async function(a,c){return d.withMonitor(b,async()=>{try{await i(a,c)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),a}},{schedule:{type:"crontab",value:n},timezone:l||void 0})},j,k,l,...m)},get:(a,g)=>"from"===g?g=>{let{cronTime:h,onTick:i,timeZone:j}=g;if("string"!=typeof h)throw Error(f);if(c)throw Error(`A job named '${b}' has already been scheduled`);c=!0;let k=e.replaceCronNames(h);return g.onTick=async(a,c)=>d.withMonitor(b,async()=>{try{await i(a,c)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),a}},{schedule:{type:"crontab",value:k},timezone:j||void 0}),a.from(g)}:a[g]})}},573612,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(483623);c.instrumentNodeCron=function(a,b={}){return new Proxy(a,{get:(a,c)=>"schedule"===c&&a.schedule?new Proxy(a.schedule,{apply(a,c,f){let[g,h,i]=f,j=i?.name,k=i?.timezone;if(!j)throw Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');let l=async(...a)=>d.withMonitor(j,async()=>{try{return await h(...a)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.node-cron.instrumentNodeCron"}}),a}},{schedule:{type:"crontab",value:e.replaceCronNames(g)},timezone:k,...b});return a.apply(c,[g,l,i])}}):a[c]})}},353133,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(483623);c.instrumentNodeSchedule=function(a){return new Proxy(a,{get:(a,b)=>"scheduleJob"===b?new Proxy(a.scheduleJob,{apply(a,b,c){let[f,g,h]=c;if("string"!=typeof f||"string"!=typeof g||"function"!=typeof h)throw Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");async function i(){return d.withMonitor(f,async()=>{await h?.()},{schedule:{type:"crontab",value:e.replaceCronNames(g)}})}return a.apply(b,[f,g,i])}}):a[b]})}},980683,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(43501),e=a.r(573612),f=a.r(353133);c.cron={instrumentCron:d.instrumentCron,instrumentNodeCron:e.instrumentNodeCron,instrumentNodeSchedule:f.instrumentNodeSchedule}},309569,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97209),e=a.r(427477),f=a.r(445138),g=a.r(800750),h=a.r(440222),i=a.r(778524),j=a.r(629823),k=a.r(601619),l=a.r(547783),m=a.r(533091),n=a.r(262955),o=a.r(647260),p=a.r(125677),q=a.r(173240),r=a.r(221598),s=a.r(874835),t=a.r(187845),u=a.r(218921),v=a.r(255980),w=a.r(975798),x=a.r(751233),y=a.r(881969),z=a.r(899800),A=a.r(548957),B=a.r(375821),C=a.r(930951),D=a.r(367287),E=a.r(741677),F=a.r(872360),G=a.r(380448),H=a.r(688113),I=a.r(97632),J=a.r(42517),K=a.r(726848),L=a.r(995166),M=a.r(769575),N=a.r(97827),O=a.r(667678),P=a.r(980683),Q=a.r(175262);c.httpIntegration=d.httpIntegration,c.httpServerSpansIntegration=e.httpServerSpansIntegration,c.httpServerIntegration=f.httpServerIntegration,c.SentryHttpInstrumentation=g.SentryHttpInstrumentation,c.nativeNodeFetchIntegration=h.nativeNodeFetchIntegration,c.SentryNodeFetchInstrumentation=i.SentryNodeFetchInstrumentation,c.SentryContextManager=j.SentryContextManager,c.setupOpenTelemetryLogger=k.setupOpenTelemetryLogger,c.INSTRUMENTED=l.INSTRUMENTED,c.generateInstrumentOnce=l.generateInstrumentOnce,c.instrumentWhenWrapped=l.instrumentWhenWrapped,c.getDefaultIntegrations=m.getDefaultIntegrations,c.init=m.init,c.initWithoutDefaultIntegrations=m.initWithoutDefaultIntegrations,c.validateOpenTelemetrySetup=m.validateOpenTelemetrySetup,c.setIsolationScope=n.setIsolationScope,c.NodeClient=o.NodeClient,c.ensureIsWrapped=p.ensureIsWrapped,c.processSessionIntegration=q.processSessionIntegration,c.setNodeAsyncContextStrategy=r.setOpenTelemetryContextAsyncContextStrategy,c.anrIntegration=s.anrIntegration,c.disableAnrDetectionForCallback=s.disableAnrDetectionForCallback,c.SDK_VERSION=t.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=t.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=t.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=t.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=t.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=t.Scope,c.addBreadcrumb=t.addBreadcrumb,c.addEventProcessor=t.addEventProcessor,c.addIntegration=t.addIntegration,c.captureCheckIn=t.captureCheckIn,c.captureConsoleIntegration=t.captureConsoleIntegration,c.captureEvent=t.captureEvent,c.captureException=t.captureException,c.captureFeedback=t.captureFeedback,c.captureMessage=t.captureMessage,c.captureSession=t.captureSession,c.close=t.close,c.consoleIntegration=t.consoleIntegration,c.consoleLoggingIntegration=t.consoleLoggingIntegration,c.continueTrace=t.continueTrace,c.createConsolaReporter=t.createConsolaReporter,c.createTransport=t.createTransport,c.dedupeIntegration=t.dedupeIntegration,c.endSession=t.endSession,c.envToBool=t.envToBool,c.eventFiltersIntegration=t.eventFiltersIntegration,c.extraErrorDataIntegration=t.extraErrorDataIntegration,c.featureFlagsIntegration=t.featureFlagsIntegration,c.flush=t.flush,c.functionToStringIntegration=t.functionToStringIntegration,c.getActiveSpan=t.getActiveSpan,c.getClient=t.getClient,c.getCurrentScope=t.getCurrentScope,c.getGlobalScope=t.getGlobalScope,c.getIsolationScope=t.getIsolationScope,c.getRootSpan=t.getRootSpan,c.getSpanDescendants=t.getSpanDescendants,c.getSpanStatusFromHttpCode=t.getSpanStatusFromHttpCode,c.getTraceData=t.getTraceData,c.getTraceMetaTags=t.getTraceMetaTags,c.inboundFiltersIntegration=t.inboundFiltersIntegration,c.instrumentSupabaseClient=t.instrumentSupabaseClient,c.isEnabled=t.isEnabled,c.isInitialized=t.isInitialized,c.lastEventId=t.lastEventId,c.linkedErrorsIntegration=t.linkedErrorsIntegration,c.metrics=t.metrics,c.parameterize=t.parameterize,c.profiler=t.profiler,c.requestDataIntegration=t.requestDataIntegration,c.rewriteFramesIntegration=t.rewriteFramesIntegration,c.setContext=t.setContext,c.setCurrentClient=t.setCurrentClient,c.setExtra=t.setExtra,c.setExtras=t.setExtras,c.setHttpStatus=t.setHttpStatus,c.setMeasurement=t.setMeasurement,c.setTag=t.setTag,c.setTags=t.setTags,c.setUser=t.setUser,c.spanToBaggageHeader=t.spanToBaggageHeader,c.spanToJSON=t.spanToJSON,c.spanToTraceHeader=t.spanToTraceHeader,c.startInactiveSpan=t.startInactiveSpan,c.startNewTrace=t.startNewTrace,c.startSession=t.startSession,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.supabaseIntegration=t.supabaseIntegration,c.suppressTracing=t.suppressTracing,c.trpcMiddleware=t.trpcMiddleware,c.updateSpanName=t.updateSpanName,c.withActiveSpan=t.withActiveSpan,c.withIsolationScope=t.withIsolationScope,c.withMonitor=t.withMonitor,c.withScope=t.withScope,c.wrapMcpServerWithSentry=t.wrapMcpServerWithSentry,c.zodErrorsIntegration=t.zodErrorsIntegration,c.logger=u,c.nodeContextIntegration=v.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=w.nodeRuntimeMetricsIntegration,c.contextLinesIntegration=x.contextLinesIntegration,c.localVariablesIntegration=y.localVariablesIntegration,c.modulesIntegration=z.modulesIntegration,c.onUncaughtExceptionIntegration=A.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=B.onUnhandledRejectionIntegration,c.spotlightIntegration=C.spotlightIntegration,c.systemErrorIntegration=D.systemErrorIntegration,c.childProcessIntegration=E.childProcessIntegration,c.createSentryWinstonTransport=F.createSentryWinstonTransport,c.pinoIntegration=G.pinoIntegration,c.defaultStackParser=H.defaultStackParser,c.getSentryRelease=H.getSentryRelease,c.createGetModuleFromFilename=I.createGetModuleFromFilename,c.addOriginToSpan=J.addOriginToSpan,c.getRequestUrl=K.getRequestUrl,c.initializeEsmLoader=L.initializeEsmLoader,c.isCjs=M.isCjs,c.createMissingInstrumentationContext=N.createMissingInstrumentationContext,c.makeNodeTransport=O.makeNodeTransport,c.cron=P.cron,c.NODE_VERSION=Q.NODE_VERSION},948678,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(944851),f=a.r(187845),g=a.r(309569),h="Http",i="@opentelemetry_sentry-patched/instrumentation-http",j=22===g.NODE_VERSION.major&&g.NODE_VERSION.minor>=12||23===g.NODE_VERSION.major&&g.NODE_VERSION.minor>=2||g.NODE_VERSION.major>=24,k=g.generateInstrumentOnce(`${h}.sentry`,a=>new g.SentryHttpInstrumentation(a)),l=g.generateInstrumentOnce(h,a=>{let b=new e.HttpInstrumentation({...a,disableIncomingRequestInstrumentation:!0});try{b._diag=d.diag.createComponentLogger({namespace:i}),b.instrumentationName=i}catch{}try{let a={get:()=>!1,set:()=>{}};Object.defineProperty(b,"_httpPatched",a),Object.defineProperty(b,"_httpsPatched",a)}catch{}return b});function m(a,b={}){return"boolean"==typeof a.spans?a.spans:!b.skipOpenTelemetrySetup&&(!!f.hasSpansEnabled(b)||!j)}let n=f.defineIntegration((a={})=>{let b=a.spans??!0,c=a.disableIncomingRequestSpans,d={sessions:a.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:a.sessionFlushingDelayMS,ignoreRequestBody:a.ignoreIncomingRequestBody,maxRequestBodySize:a.maxIncomingRequestBodySize},e={ignoreIncomingRequests:a.ignoreIncomingRequests,ignoreStaticAssets:a.ignoreStaticAssets,ignoreStatusCodes:a.dropSpansForIncomingRequestStatusCodes,instrumentation:a.instrumentation,onSpanCreated:a.incomingRequestSpanHook},i=g.httpServerIntegration(d),n=g.httpServerSpansIntegration(e),o=b&&!c;return{name:h,setup(a){let b=a.getOptions();o&&f.hasSpansEnabled(b)&&n.setup(a)},setupOnce(){let b=m(a,f.getClient()?.getOptions()||{});i.setupOnce(),k({breadcrumbs:a.breadcrumbs,propagateTraceInOutgoingRequests:"boolean"==typeof a.tracePropagation?a.tracePropagation:j||!b,createSpansForOutgoingRequests:j,spans:a.spans,ignoreOutgoingRequests:a.ignoreOutgoingRequests,outgoingRequestHook:(b,c)=>{let d=g.getRequestUrl(c);if(d.startsWith("data:")){let a=f.stripDataUrlContent(d);b.setAttribute("http.url",a),b.setAttribute(f.SEMANTIC_ATTRIBUTE_URL_FULL,a),b.updateName(`${c.method||"GET"} ${a}`)}a.instrumentation?.requestHook?.(b,c)},outgoingResponseHook:a.instrumentation?.responseHook,outgoingRequestApplyCustomAttributes:a.instrumentation?.applyCustomAttributesOnSpan}),b&&l(function(a={}){return{disableOutgoingRequestInstrumentation:j,ignoreOutgoingRequestHook:b=>{let c=g.getRequestUrl(b);if(!c)return!1;let d=a.ignoreOutgoingRequests;return!!d?.(c,b)},requireParentforOutgoingSpans:!1,requestHook:(b,c)=>{g.addOriginToSpan(b,"auto.http.otel.http");let d=g.getRequestUrl(c);if(d.startsWith("data:")){let a=f.stripDataUrlContent(d);b.setAttribute("http.url",a),b.setAttribute(f.SEMANTIC_ATTRIBUTE_URL_FULL,a),b.updateName(`${c.method||"GET"} ${a}`)}a.instrumentation?.requestHook?.(b,c)},responseHook:(b,c)=>{a.instrumentation?.responseHook?.(b,c)},applyCustomAttributesOnSpan:(b,c,d)=>{a.instrumentation?.applyCustomAttributesOnSpan?.(b,c,d)}}}(a))},processEvent:a=>n.processEvent(a)}});c._shouldUseOtelHttpInstrumentation=m,c.httpIntegration=n,c.instrumentOtelHttp=l,c.instrumentSentryHttp=k},955818,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.24.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-undici"},329133,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.UndiciInstrumentation=void 0;let d=a.r(154993),e=a.r(792509),f=a.r(167300),g=a.r(832528),h=a.r(498562),i=a.r(357122),j=a.r(955818);class k extends f.InstrumentationBase{_recordFromReq=new WeakMap;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a)}init(){}disable(){super.disable(),this._channelSubs.forEach(a=>a.unsubscribe()),this._channelSubs.length=0}enable(){super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0||(this.subscribeToChannel("undici:request:create",this.onRequestCreated.bind(this)),this.subscribeToChannel("undici:client:sendHeaders",this.onRequestHeaders.bind(this)),this.subscribeToChannel("undici:request:headers",this.onResponseHeaders.bind(this)),this.subscribeToChannel("undici:request:trailers",this.onDone.bind(this)),this.subscribeToChannel("undici:request:error",this.onError.bind(this)))}_updateMetricInstruments(){this._httpClientDurationHistogram=this.meter.createHistogram(i.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Measures the duration of outbound HTTP requests.",unit:"s",valueType:g.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10]}})}subscribeToChannel(a,b){let c,[e,f]=process.version.replace("v","").split(".").map(a=>Number(a));if(e>18||18===e&&f>=19)d.subscribe?.(a,b),c=()=>d.unsubscribe?.(a,b);else{let e=d.channel(a);e.subscribe(b),c=()=>e.unsubscribe(b)}this._channelSubs.push({name:a,unsubscribe:c})}parseRequestHeaders(a){let b=new Map;if(Array.isArray(a.headers))for(let c=0;c!j||"CONNECT"===a.method||d.ignoreRequestHook?.(a),a=>a&&this._diag.error("caught ignoreRequestHook error: ",a),!0))return;let k=(0,h.hrTime)();try{b=new e.URL(a.path,a.origin)}catch(a){this._diag.warn("could not determine url.full:",a);return}let l=b.protocol.replace(":",""),m=this.getRequestMethod(a.method),n={[i.ATTR_HTTP_REQUEST_METHOD]:m,[i.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]:a.method,[i.ATTR_URL_FULL]:b.toString(),[i.ATTR_URL_PATH]:b.pathname,[i.ATTR_URL_QUERY]:b.search,[i.ATTR_URL_SCHEME]:l},o=b.hostname,p=b.port||({https:"443",http:"80"})[l];n[i.ATTR_SERVER_ADDRESS]=o,p&&!isNaN(Number(p))&&(n[i.ATTR_SERVER_PORT]=Number(p));let q=this.parseRequestHeaders(a).get("user-agent");if(q){let a=Array.isArray(q)?q[q.length-1]:q;n[i.ATTR_USER_AGENT_ORIGINAL]=a}let r=(0,f.safeExecuteInTheMiddle)(()=>d.startSpanHook?.(a),a=>a&&this._diag.error("caught startSpanHook error: ",a),!0);r&&Object.entries(r).forEach(([a,b])=>{n[a]=b});let s=g.context.active(),t=g.trace.getSpan(s);c=!d.requireParentforSpans||t&&g.trace.isSpanContextValid(t.spanContext())?this.tracer.startSpan("_OTHER"===m?"HTTP":m,{kind:g.SpanKind.CLIENT,attributes:n},s):g.trace.wrapSpanContext(g.INVALID_SPAN_CONTEXT),(0,f.safeExecuteInTheMiddle)(()=>d.requestHook?.(c,a),a=>a&&this._diag.error("caught requestHook error: ",a),!0);let u=g.trace.setSpan(g.context.active(),c),v={};g.propagation.inject(u,v);let w=Object.entries(v);for(let b=0;ba.toLowerCase()));for(let[c,d]of this.parseRequestHeaders(a).entries())if(b.has(c)){let a=Array.isArray(d)?d:[d];h[`http.request.header.${c}`]=a}}e.setAttributes(h)}onResponseHeaders({request:a,response:b}){let c=this._recordFromReq.get(a);if(!c)return;let{span:d,attributes:e}=c,h={[i.ATTR_HTTP_RESPONSE_STATUS_CODE]:b.statusCode},j=this.getConfig();if((0,f.safeExecuteInTheMiddle)(()=>j.responseHook?.(d,{request:a,response:b}),a=>a&&this._diag.error("caught responseHook error: ",a),!0),j.headersToSpanAttributes?.responseHeaders){let a=new Set;j.headersToSpanAttributes?.responseHeaders.forEach(b=>a.add(b.toLowerCase()));for(let c=0;c=400?g.SpanStatusCode.ERROR:g.SpanStatusCode.UNSET}),c.attributes=Object.assign(e,h)}onDone({request:a}){let b=this._recordFromReq.get(a);if(!b)return;let{span:c,attributes:d,startTime:e}=b;c.end(),this._recordFromReq.delete(a),this.recordRequestDuration(d,e)}onError({request:a,error:b}){let c=this._recordFromReq.get(a);if(!c)return;let{span:d,attributes:e,startTime:f}=c;d.recordException(b),d.setStatus({code:g.SpanStatusCode.ERROR,message:b.message}),d.end(),this._recordFromReq.delete(a),e[i.ATTR_ERROR_TYPE]=b.message,this.recordRequestDuration(e,f)}recordRequestDuration(a,b){let c={};[i.ATTR_HTTP_RESPONSE_STATUS_CODE,i.ATTR_HTTP_REQUEST_METHOD,i.ATTR_SERVER_ADDRESS,i.ATTR_SERVER_PORT,i.ATTR_URL_SCHEME,i.ATTR_ERROR_TYPE].forEach(b=>{b in a&&(c[b]=a[b])});let d=(0,h.hrTimeToMilliseconds)((0,h.hrTimeDuration)(b,(0,h.hrTime)()))/1e3;this._httpClientDurationHistogram.record(d,c)}getRequestMethod(a){return a.toUpperCase()in{CONNECT:!0,OPTIONS:!0,HEAD:!0,GET:!0,POST:!0,PUT:!0,PATCH:!0,DELETE:!0,TRACE:!0,QUERY:!0}?a.toUpperCase():"_OTHER"}}c.UndiciInstrumentation=k},47523,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.UndiciInstrumentation=void 0;var d=a.r(329133);Object.defineProperty(c,"UndiciInstrumentation",{enumerable:!0,get:function(){return d.UndiciInstrumentation}})},412292,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(47523),e=a.r(187845),f=a.r(309569),g="NodeFetch",h=f.generateInstrumentOnce(g,d.UndiciInstrumentation,a=>l(a)),i=f.generateInstrumentOnce(`${g}.sentry`,f.SentryNodeFetchInstrumentation,a=>a),j=e.defineIntegration((a={})=>({name:"NodeFetch",setupOnce(){(function(a,b={}){return"boolean"==typeof a.spans?a.spans:!b.skipOpenTelemetrySetup&&e.hasSpansEnabled(b)})(a,e.getClient()?.getOptions())&&h(a),i(a)}}));function k(a,b="/"){let c=`${a}`;return c.endsWith("/")&&b.startsWith("/")?`${c}${b.slice(1)}`:c.endsWith("/")||b.startsWith("/")?`${c}${b}`:`${c}/${b}`}function l(a={}){return{requireParentforSpans:!1,ignoreRequestHook:b=>{let c=k(b.origin,b.path),d=a.ignoreOutgoingRequests;return!!(d&&c&&d(c))},startSpanHook:a=>{let b=k(a.origin,a.path);if(b.startsWith("data:")){let c=e.stripDataUrlContent(b);return{[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch","http.url":c,[e.SEMANTIC_ATTRIBUTE_URL_FULL]:c,[e.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]:`${a.method||"GET"} ${c}`}}return{[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch"}},requestHook:a.requestHook,responseHook:a.responseHook,headersToSpanAttributes:a.headersToSpanAttributes}}c._getConfigWithDefaults=l,c.nativeNodeFetchIntegration=j},565954,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-fs"},563036,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SYNC_FUNCTIONS=c.CALLBACK_FUNCTIONS=c.PROMISE_FUNCTIONS=void 0,c.PROMISE_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],c.CALLBACK_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","exists","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],c.SYNC_FUNCTIONS=["accessSync","appendFileSync","chmodSync","chownSync","copyFileSync","cpSync","existsSync","lchownSync","linkSync","lstatSync","lutimesSync","mkdirSync","mkdtempSync","opendirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","unlinkSync","utimesSync","writeFileSync"]},932593,(a,b,c)=>{"use strict";function d(a){let b=a.split(".");if(!(b.length>1))return[a];if(2!==b.length)throw Error(`Invalid member function name ${a}`);return b}Object.defineProperty(c,"__esModule",{value:!0}),c.indexFs=c.splitTwoLevels=void 0,c.splitTwoLevels=d,c.indexFs=function(a,b){if(!b)throw Error(JSON.stringify({member:b}));let[c,e]=d(b);return e?{objectToPatch:a[c],functionNameToPatch:e}:{objectToPatch:a,functionNameToPatch:c}}},9856,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.FsInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(565954),h=a.r(563036),i=a.r(224361),j=a.r(932593);function k(a,b){return Object.assign(a,b)}class l extends f.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new f.InstrumentationNodeModuleDefinition("fs",["*"],a=>{for(let b of h.SYNC_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d),this._wrap(c,d,this._patchSyncFunction.bind(this,b))}for(let b of h.CALLBACK_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);if((0,f.isWrapped)(c[d])&&this._unwrap(c,d),"exists"===b){this._wrap(c,d,this._patchExistsCallbackFunction.bind(this,b));continue}this._wrap(c,d,this._patchCallbackFunction.bind(this,b))}for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a.promises[b])&&this._unwrap(a.promises,b),this._wrap(a.promises,b,this._patchPromiseFunction.bind(this,b));return a},a=>{if(void 0!==a){for(let b of h.SYNC_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d)}for(let b of h.CALLBACK_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d)}for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a.promises[b])&&this._unwrap(a.promises,b)}}),new f.InstrumentationNodeModuleDefinition("fs/promises",["*"],a=>{for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,this._patchPromiseFunction.bind(this,b));return a},a=>{if(void 0!==a)for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a[b])&&this._unwrap(a,b)})]}_patchSyncFunction(a,b){let c=this;return k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=c.tracer.startSpan(`fs ${a}`);try{let i=d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,h)),b,this,...f);return c._runEndHook(a,{args:f,span:h}),i}catch(b){throw h.recordException(b),h.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:h,error:b}),b}finally{h.end()}},b)}_patchCallbackFunction(a,b){let c=this;return k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=f.length-1,i=f[h];if("function"!=typeof i)return b.apply(this,f);{let j=c.tracer.startSpan(`fs ${a}`);f[h]=d.context.bind(g,function(b){return b&&(j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR})),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),i.apply(this,arguments)});try{return d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,j)),b,this,...f)}catch(b){throw j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),b}}},b)}_patchExistsCallbackFunction(a,b){let c=this,f=k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=f.length-1,i=f[h];if("function"!=typeof i)return b.apply(this,f);{let j=c.tracer.startSpan(`fs ${a}`);f[h]=d.context.bind(g,function(){return c._runEndHook(a,{args:f,span:j}),j.end(),i.apply(this,arguments)});try{return d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,j)),b,this,...f)}catch(b){throw j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),b}}},b),g=function(a){return new Promise(b=>f(a,b))};return Object.defineProperty(g,"name",{value:a}),Object.defineProperty(f,i.promisify.custom,{value:g}),f}_patchPromiseFunction(a,b){let c=this;return k(async function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=c.tracer.startSpan(`fs ${a}`);try{let i=await d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,h)),b,this,...f);return c._runEndHook(a,{args:f,span:h}),i}catch(b){throw h.recordException(b),h.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:h,error:b}),b}finally{h.end()}},b)}_runCreateHook(...a){let{createHook:b}=this.getConfig();if("function"==typeof b)try{return b(...a)}catch(a){this._diag.error("caught createHook error",a)}return!0}_runEndHook(...a){let{endHook:b}=this.getConfig();if("function"==typeof b)try{b(...a)}catch(a){this._diag.error("caught endHook error",a)}}_shouldTrace(a){if((0,e.isTracingSuppressed)(a))return!1;let{requireParentSpan:b}=this.getConfig();return(!b||null!=d.trace.getSpan(a))&&!0}}c.FsInstrumentation=l},784987,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.FsInstrumentation=void 0;var d=a.r(9856);Object.defineProperty(c,"FsInstrumentation",{enumerable:!0,get:function(){return d.FsInstrumentation}})},56551,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(784987),e=a.r(187845),f=a.r(309569),g="FileSystem",h=e.defineIntegration((a={})=>({name:g,setupOnce(){f.generateInstrumentOnce(g,()=>new d.FsInstrumentation({requireParentSpan:!0,endHook(b,{args:c,span:d,error:f}){d.updateName(`fs.${b}`),d.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"file",[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.file.fs"}),a.recordErrorMessagesAsSpanAttributes&&("string"==typeof c[0]&&n.includes(b)?d.setAttribute("path_argument",c[0]):"string"==typeof c[0]&&"string"==typeof c[1]&&m.includes(b)?(d.setAttribute("target_argument",c[0]),d.setAttribute("path_argument",c[1])):"string"==typeof c[0]&&l.includes(b)?d.setAttribute("prefix_argument",c[0]):"string"==typeof c[0]&&"string"==typeof c[1]&&k.includes(b)?(d.setAttribute("existing_path_argument",c[0]),d.setAttribute("new_path_argument",c[1])):"string"==typeof c[0]&&"string"==typeof c[1]&&j.includes(b)?(d.setAttribute("src_argument",c[0]),d.setAttribute("dest_argument",c[1])):"string"==typeof c[0]&&"string"==typeof c[1]&&i.includes(b)&&(d.setAttribute("old_path_argument",c[0]),d.setAttribute("new_path_argument",c[1]))),f&&a.recordErrorMessagesAsSpanAttributes&&d.setAttribute("fs_error",f.message)}}))()}})),i=["rename","renameSync"],j=["copyFile","cp","copyFileSync","cpSync"],k=["link","linkSync"],l=["mkdtemp","mkdtempSync"],m=["symlink","symlinkSync"],n=["access","appendFile","chmod","chown","exists","mkdir","lchown","lstat","lutimes","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rm","rmdir","stat","truncate","unlink","utimes","writeFile","accessSync","appendFileSync","chmodSync","chownSync","existsSync","lchownSync","lstatSync","lutimesSync","opendirSync","mkdirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","rmdirSync","rmSync","statSync","truncateSync","unlinkSync","utimesSync","writeFileSync"];c.fsIntegration=h},19293,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.ExpressLayerType=void 0,(d=c.ExpressLayerType||(c.ExpressLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware",d.REQUEST_HANDLER="request_handler"},852025,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).EXPRESS_TYPE="express.type",d.EXPRESS_NAME="express.name"},434300,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=c.kLayerPatched=void 0,c.kLayerPatched=Symbol("express-layer-patched"),c._LAYERS_STORE_PROPERTY="__ot_middlewares"},962983,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getActualMatchedRoute=c.getConstructedRoute=c.getLayerPath=c.asErrorAndMessage=c.isLayerIgnored=c.getLayerMetadata=c.getRouterPath=c.storeLayerPath=void 0;let d=a.r(19293),e=a.r(852025),f=a.r(434300);c.storeLayerPath=(a,b)=>(!1===Array.isArray(a[f._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,f._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),void 0===b)?{isLayerPathStored:!1}:(a[f._LAYERS_STORE_PROPERTY].push(b),{isLayerPathStored:!0}),c.getRouterPath=(a,b)=>{let d=b.handle?.stack?.[0];return d?.route?.path?`${a}${d.route.path}`:d?.handle?.stack?(0,c.getRouterPath)(a,d):a},c.getLayerMetadata=(a,b,f)=>{if("router"===b.name){let g=(0,c.getRouterPath)("",b)||f||a||"/";return{attributes:{[e.AttributeNames.EXPRESS_NAME]:g,[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.ROUTER},name:`router - ${g}`}}return"bound dispatch"===b.name||"handle"===b.name?{attributes:{[e.AttributeNames.EXPRESS_NAME]:(a||f)??"request handler",[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.REQUEST_HANDLER},name:`request handler${b.path?` - ${a||f}`:""}`}:{attributes:{[e.AttributeNames.EXPRESS_NAME]:b.name,[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.MIDDLEWARE},name:`middleware - ${b.name}`}};let g=(a,b)=>{if("string"==typeof b)return b===a;if(b instanceof RegExp)return b.test(a);if("function"==typeof b)return b(a);throw TypeError("Pattern is in unsupported datatype")};c.isLayerIgnored=(a,b,c)=>{if(Array.isArray(c?.ignoreLayersType)&&c?.ignoreLayersType?.includes(b))return!0;if(!1===Array.isArray(c?.ignoreLayers))return!1;try{for(let b of c.ignoreLayers)if(g(a,b))return!0}catch(a){}return!1},c.asErrorAndMessage=a=>a instanceof Error?[a,a.message]:[String(a),String(a)],c.getLayerPath=a=>{let b=a[0];return Array.isArray(b)?b.map(a=>h(a)||"").join(","):h(b)};let h=a=>"string"==typeof a?a:a instanceof RegExp||"number"==typeof a?a.toString():void 0;function i(a){let b=(Array.isArray(a[f._LAYERS_STORE_PROPERTY])?a[f._LAYERS_STORE_PROPERTY]:[]).filter(a=>"/"!==a&&"/*"!==a);return 1===b.length&&"*"===b[0]?"*":b.join("").replace(/\/{2,}/g,"/")}c.getConstructedRoute=i,c.getActualMatchedRoute=function(a){var b;let c=Array.isArray(a[f._LAYERS_STORE_PROPERTY])?a[f._LAYERS_STORE_PROPERTY]:[];if(0===c.length)return;if(c.every(a=>"/"===a))return"/"===a.originalUrl?"/":void 0;let d=i(a);if("*"===d||d.includes("/")&&(d.includes(",")||d.includes("\\")||d.includes("*")||d.includes("[")))return d;let e=d.startsWith("/")?d:`/${d}`;return e.length>0&&(a.originalUrl===e||a.originalUrl.startsWith(e)||(b=e).includes(":")||b.includes("*"))?e:void 0}},219306,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-express"},995882,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ExpressInstrumentation=void 0;let d=a.r(498562),e=a.r(832528),f=a.r(19293),g=a.r(852025),h=a.r(962983),i=a.r(219306),j=a.r(167300),k=a.r(357122),l=a.r(434300);class m extends j.InstrumentationBase{constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a)}init(){return[new j.InstrumentationNodeModuleDefinition("express",[">=4.0.0 <6"],a=>{let b="function"==typeof a?.Router?.prototype?.route,c=b?a.Router.prototype:a.Router;return(0,j.isWrapped)(c.route)&&this._unwrap(c,"route"),this._wrap(c,"route",this._getRoutePatch()),(0,j.isWrapped)(c.use)&&this._unwrap(c,"use"),this._wrap(c,"use",this._getRouterUsePatch()),(0,j.isWrapped)(a.application.use)&&this._unwrap(a.application,"use"),this._wrap(a.application,"use",this._getAppUsePatch(b)),a},a=>{if(void 0===a)return;let b="function"==typeof a?.Router?.prototype?.route?a.Router.prototype:a.Router;this._unwrap(b,"route"),this._unwrap(b,"use"),this._unwrap(a.application,"use")})]}_getRoutePatch(){let a=this;return function(b){return function(...c){let d=b.apply(this,c),e=this.stack[this.stack.length-1];return a._applyPatch(e,(0,h.getLayerPath)(c)),d}}}_getRouterUsePatch(){let a=this;return function(b){return function(...c){let d=b.apply(this,c),e=this.stack[this.stack.length-1];return a._applyPatch(e,(0,h.getLayerPath)(c)),d}}}_getAppUsePatch(a){let b=this;return function(c){return function(...d){let e=a?this.router:this._router,f=c.apply(this,d);if(e){let a=e.stack[e.stack.length-1];b._applyPatch(a,(0,h.getLayerPath)(d))}return f}}}_applyPatch(a,b){let c=this;!0!==a[l.kLayerPatched]&&(a[l.kLayerPatched]=!0,this._wrap(a,"handle",i=>{if(4===i.length)return i;let m=function(m,n){let{isLayerPathStored:o}=(0,h.storeLayerPath)(m,b),p=(0,h.getConstructedRoute)(m),q=(0,h.getActualMatchedRoute)(m),r={[k.ATTR_HTTP_ROUTE]:q},s=(0,h.getLayerMetadata)(p,a,b),t=s.attributes[g.AttributeNames.EXPRESS_TYPE],u=(0,d.getRPCMetadata)(e.context.active());if(u?.type===d.RPCType.HTTP&&(u.route=q),(0,h.isLayerIgnored)(s.name,t,c.getConfig()))return t===f.ExpressLayerType.MIDDLEWARE&&m[l._LAYERS_STORE_PROPERTY].pop(),i.apply(this,arguments);if(void 0===e.trace.getSpan(e.context.active()))return i.apply(this,arguments);let v=c._getSpanName({request:m,layerType:t,route:p},s.name),w=c.tracer.startSpan(v,{attributes:Object.assign(r,s.attributes)}),x=e.context.active(),y=e.trace.setSpan(x,w),{requestHook:z}=c.getConfig();z&&(0,j.safeExecuteInTheMiddle)(()=>z(w,{request:m,layerType:t,route:p}),a=>{a&&e.diag.error("express instrumentation: request hook failed",a)},!0);let A=!1;s.attributes[g.AttributeNames.EXPRESS_TYPE]===f.ExpressLayerType.ROUTER&&(w.end(),A=!0,y=x);let B=()=>{!1===A&&(A=!0,w.end())},C=Array.from(arguments),D=C.findIndex(a=>"function"==typeof a);D>=0&&(arguments[D]=function(){let a=arguments[0],b=![void 0,null,"route","router"].includes(a);if(!A&&b){let[b,c]=(0,h.asErrorAndMessage)(a);w.recordException(b),w.setStatus({code:e.SpanStatusCode.ERROR,message:c})}!1===A&&(A=!0,m.res?.removeListener("finish",B),w.end()),!(m.route&&b)&&o&&m[l._LAYERS_STORE_PROPERTY].pop();let c=C[D],d=e.context.active(),f=e.trace.getSpan(x),g=f?e.trace.setSpan(d,f):d;return e.context.bind(g,c).apply(this,arguments)});try{return e.context.bind(y,i).apply(this,arguments)}catch(c){let[a,b]=(0,h.asErrorAndMessage)(c);throw w.recordException(a),w.setStatus({code:e.SpanStatusCode.ERROR,message:b}),c}finally{A||n.once("finish",B)}};for(let a in i)Object.defineProperty(m,a,{get:()=>i[a],set(b){i[a]=b}});return m}))}_getSpanName(a,b){let{spanNameHook:c}=this.getConfig();if(!(c instanceof Function))return b;try{return c(a,b)??b}catch(a){return e.diag.error("express instrumentation: error calling span name rewrite hook",a),b}}}c.ExpressInstrumentation=m},584767,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.ExpressLayerType=c.ExpressInstrumentation=void 0;var d=a.r(995882);Object.defineProperty(c,"ExpressInstrumentation",{enumerable:!0,get:function(){return d.ExpressInstrumentation}});var e=a.r(19293);Object.defineProperty(c,"ExpressLayerType",{enumerable:!0,get:function(){return e.ExpressLayerType}});var f=a.r(852025);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return f.AttributeNames}})},852223,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(584767),e=a.r(187845),f=a.r(309569),g=a.r(852223),h="Express",i=f.generateInstrumentOnce(h,()=>new d.ExpressInstrumentation({requestHook:a=>{let b,c,d;return f.addOriginToSpan(a,"auto.http.otel.express"),(c=(b=e.spanToJSON(a).data)["express.type"])&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${c}.express`),void("string"==typeof(d=b["express.name"])&&a.updateName(d))},spanNameHook:(a,b)=>(function(a,b){if(e.getIsolationScope()===e.getDefaultIsolationScope())return g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still default isolation scope - skipping setting transactionName"),b;if("request_handler"===a.layerType){let b=a.request,c=b.method?b.method.toUpperCase():"GET";e.getIsolationScope().setTransactionName(`${c} ${a.route}`)}return b})(a,b)})),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}}));function k(a){return function(b,c,d,f){let g=e.httpRequestToRequestData(c);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g}),(a?.shouldHandleError||function(a){let b;return((b=a.status||a.statusCode||a.status_code||a.output?.statusCode)?parseInt(b,10):500)>=500})(b)&&(d.sentry=e.captureException(b,{mechanism:{type:"auto.middleware.express",handled:!1}})),f(b)}}c.expressErrorHandler=k,c.expressIntegration=j,c.instrumentExpress=i,c.setupExpressErrorHandler=function(a,b){a.use(function(a,b,c){let d=e.httpRequestToRequestData(a);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:d}),c()}),a.use(k(b)),f.ensureIsWrapped(a.use,"express")}},535049,a=>{"use strict";a.s([],373438),a.i(373438);var b,c,d=a.i(236471),e=a.i(231261);let f=Symbol.for("io.opentelemetry.js.api.logs"),g=globalThis;class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return g[f]?this.getLoggerProvider():(g[f]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=g[f])?void 0:a.call(g,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete g[f],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(984414);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(await b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(b=>b.name===g&&af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!0},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{files;name;supportedVersions;patch;unpatch;constructor(a,b,c,d,e){this.files=e||[],this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d}}class ah{name;supportedVersions;patch;unpatch;constructor(a,b,c,d){this.name=(0,p.normalize)(a),this.supportedVersions=b,this.patch=c,this.unpatch=d}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],535049)},69464,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.range=c.balanced=void 0,c.balanced=(a,b,e)=>{let f=a instanceof RegExp?d(a,e):a,g=b instanceof RegExp?d(b,e):b,h=null!==f&&null!=g&&(0,c.range)(f,g,e);return h&&{start:h[0],end:h[1],pre:e.slice(0,h[0]),body:e.slice(h[0]+f.length,h[1]),post:e.slice(h[1]+g.length)}};let d=(a,b)=>{let c=b.match(a);return c?c[0]:null};c.range=(a,b,c)=>{let d,e,f,g,h,i=c.indexOf(a),j=c.indexOf(b,i+1),k=i;if(i>=0&&j>0){if(a===b)return[i,j];for(d=[],f=c.length;k>=0&&!h;){if(k===i)d.push(k),i=c.indexOf(a,k+1);else if(1===d.length){let a=d.pop();void 0!==a&&(h=[a,j])}else void 0!==(e=d.pop())&&e=0?i:j}d.length&&void 0!==g&&(h=[f,g])}return h}},53509,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EXPANSION_MAX=void 0,c.expand=function(a,b={}){if(!a)return[];let{max:j=c.EXPANSION_MAX}=b;return"{}"===a.slice(0,2)&&(a="\\{\\}"+a.slice(2)),(function a(b,c,e){let f=[],h=(0,d.balanced)("{","}",b);if(!h)return[b];let i=h.pre,j=h.post.length?a(h.post,c,!1):[""];if(/\$$/.test(h.pre))for(let a=0;a=0;if(!o&&!p)return h.post.match(/,(?!,).*\}/)?a(b=h.pre+"{"+h.body+g+h.post,c,!0):[b];if(o)k=h.body.split(/\.\./);else if(1===(k=function a(b){if(!b)return[""];let c=[],e=(0,d.balanced)("{","}",b);if(!e)return b.split(",");let{pre:f,body:g,post:h}=e,i=f.split(",");i[i.length-1]+="{"+g+"}";let j=a(h);return h.length&&(i[i.length-1]+=j.shift(),i.push.apply(i,j)),c.push.apply(c,i),c}(h.body)).length&&void 0!==k[0]&&1===(k=a(k[0],c,!1).map(v)).length)return j.map(a=>h.pre+k[0]+a);if(o&&void 0!==k[0]&&void 0!==k[1]){let a=t(k[0]),b=t(k[1]),c=Math.max(k[0].length,k[1].length),d=3===k.length&&void 0!==k[2]?Math.max(Math.abs(t(k[2])),1):1,e=x;b0){let c=Array(b+1).join("0");a=g<0?"-"+c+a.slice(1):c+a}}l.push(a)}}else{l=[];for(let b=0;b=b}c.EXPANSION_MAX=1e5},244900,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.assertValidPattern=void 0,c.assertValidPattern=a=>{if("string"!=typeof a)throw TypeError("invalid pattern");if(a.length>65536)throw TypeError("pattern is too long")}},126118,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.parseClass=void 0;let d={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},e=a=>a.replace(/[[\]\\-]/g,"\\$&");c.parseClass=(a,b)=>{if("["!==a.charAt(b))throw Error("not in a brace expression");let c=[],f=[],g=b+1,h=!1,i=!1,j=!1,k=!1,l=b,m="";a:for(;gm?c.push(e(m)+"-"+e(n)):n===m&&c.push(e(n)),m="",g++;continue}if(a.startsWith("-]",g+1)){c.push(e(n+"-")),g+=2;continue}if(a.startsWith("-",g+1)){m=n,g+=2;continue}c.push(e(n)),g++}if(l{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.unescape=void 0,c.unescape=(a,{windowsPathsNoEscape:b=!1,magicalBraces:c=!0}={})=>c?b?a.replace(/\[([^/\\])\]/g,"$1"):a.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):b?a.replace(/\[([^/\\{}])\]/g,"$1"):a.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1")},86329,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AST=void 0;let e=a.r(126118),f=a.r(961730),g=new Set(["!","?","+","*","@"]),h=a=>g.has(a),i=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),j=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),k=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),l=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),m="(?!\\.)",n=new Set(["[","."]),o=new Set(["..","."]),p=new Set("().*{}+?[]^$\\!"),q=a=>a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),r="[^/]",s=r+"*?",t=r+"+?",u=0;class v{type;#a;#b;#c=!1;#d=[];#e;#f;#g;#h=!1;#i;#j;#k=!1;id=++u;get depth(){return(this.#e?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#a.id,parent:this.#e?.id,depth:this.depth,partsLength:this.#d.length,parts:this.#d}}constructor(a,b,c={}){this.type=a,a&&(this.#b=!0),this.#e=b,this.#a=this.#e?this.#e.#a:this,this.#i=this.#a===this?c:this.#a.#i,this.#g=this.#a===this?[]:this.#a.#g,"!"!==a||this.#a.#h||this.#g.push(this),this.#f=this.#e?this.#e.#d.length:0}get hasMagic(){if(void 0!==this.#b)return this.#b;for(let a of this.#d)if("string"!=typeof a&&(a.type||a.hasMagic))return this.#b=!0;return this.#b}toString(){return void 0!==this.#j?this.#j:this.type?this.#j=this.type+"("+this.#d.map(a=>String(a)).join("|")+")":this.#j=this.#d.map(a=>String(a)).join("")}#l(){let a;if(this!==this.#a)throw Error("should only call on root");if(this.#h)return this;for(this.toString(),this.#h=!0;a=this.#g.pop();){if("!"!==a.type)continue;let b=a,c=b.#e;for(;c;){for(let d=b.#f+1;!c.type&&d"string"==typeof a?a:a.toJSON()):[this.type,...this.#d.map(a=>a.toJSON())];return this.isStart()&&!this.type&&a.unshift([]),this.isEnd()&&(this===this.#a||this.#a.#h&&this.#e?.type==="!")&&a.push({}),a}isStart(){if(this.#a===this)return!0;if(!this.#e?.isStart())return!1;if(0===this.#f)return!0;let a=this.#e;for(let b=0;b"string"!=typeof a),e=this.#d.map(b=>{let[e,f,g,h]="string"==typeof b?d.#w(b,this.#b,c):b.toRegExpSource(a);return this.#b=this.#b||g,this.#c=this.#c||h,e}).join(""),g="";if(this.isStart()&&"string"==typeof this.#d[0]&&!(1===this.#d.length&&o.has(this.#d[0]))){let c=b&&n.has(e.charAt(0))||e.startsWith("\\.")&&n.has(e.charAt(2))||e.startsWith("\\.\\.")&&n.has(e.charAt(4)),d=!b&&!a&&n.has(e.charAt(0));g=c?"(?!(?:^|/)\\.\\.?(?:$|/))":d?m:""}let h="";return this.isEnd()&&this.#a.#h&&this.#e?.type==="!"&&(h="(?:$|\\/)"),[g+e+h,(0,f.unescape)(e),this.#b=!!this.#b,this.#c]}let c="*"===this.type||"+"===this.type,e="!"===this.type?"(?:(?!(?:":"(?:",g=this.#x(b);if(this.isStart()&&this.isEnd()&&!g&&"!"!==this.type){let a=this.toString();return this.#d=[a],this.type=null,this.#b=void 0,[a,(0,f.unescape)(this.toString()),!1,!1]}let i=!c||a||b||!m?"":this.#x(!0);i===g&&(i=""),i&&(g=`(?:${g})(?:${i})*?`);return["!"===this.type&&this.#k?(this.isStart()&&!b?m:"")+t:e+g+("!"===this.type?"))"+(!this.isStart()||b||a?"":m)+s+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":`)${this.type}`),(0,f.unescape)(g),this.#b=!!this.#b,this.#c]}#v(){if(h(this.type)){let a=0,b=!1;do{b=!0;for(let a=0;a{if("string"==typeof b)throw Error("string type in extglob ast??");let[c,d,e,f]=b.toRegExpSource(a);return this.#c=this.#c||f,c}).filter(a=>!(this.isStart()&&this.isEnd())||!!a).join("|")}static #w(a,b,c=!1){let d=!1,g="",h=!1,i=!1;for(let f=0;f{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.escape=void 0,c.escape=(a,{windowsPathsNoEscape:b=!1,magicalBraces:c=!1}={})=>c?b?a.replace(/[?*()[\]{}]/g,"[$&]"):a.replace(/[?*()[\]\\{}]/g,"\\$&"):b?a.replace(/[?*()[\]]/g,"[$&]"):a.replace(/[?*()[\]\\]/g,"\\$&")},179388,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.unescape=c.escape=c.AST=c.Minimatch=c.match=c.makeRe=c.braceExpand=c.defaults=c.filter=c.GLOBSTAR=c.sep=c.minimatch=void 0;let d=a.r(53509),e=a.r(244900),f=a.r(86329),g=a.r(620843),h=a.r(961730);c.minimatch=(a,b,c={})=>((0,e.assertValidPattern)(b),(!!c.nocomment||"#"!==b.charAt(0))&&new x(b,c).match(a));let i=/^\*+([^+@!?*[(]*)$/,j=/^\*+\.\*+$/,k=a=>!a.startsWith(".")&&a.includes("."),l=a=>"."!==a&&".."!==a&&a.includes("."),m=/^\.\*+$/,n=a=>"."!==a&&".."!==a&&a.startsWith("."),o=/^\*+$/,p=a=>0!==a.length&&!a.startsWith("."),q=a=>0!==a.length&&"."!==a&&".."!==a,r=/^\?+([^+@!?*[(]*)?$/,s=([a])=>{let b=a.length;return a=>a.length===b&&!a.startsWith(".")},t=([a])=>{let b=a.length;return a=>a.length===b&&"."!==a&&".."!==a},u="object"==typeof process&&process?"object"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";c.sep="win32"===u?"\\":"/",c.minimatch.sep=c.sep,c.GLOBSTAR=Symbol("globstar **"),c.minimatch.GLOBSTAR=c.GLOBSTAR;c.filter=(a,b={})=>d=>(0,c.minimatch)(d,a,b),c.minimatch.filter=c.filter;let v=(a,b={})=>Object.assign({},a,b);c.defaults=a=>{if(!a||"object"!=typeof a||!Object.keys(a).length)return c.minimatch;let b=c.minimatch;return Object.assign((c,d,e={})=>b(c,d,v(a,e)),{Minimatch:class extends b.Minimatch{constructor(b,c={}){super(b,v(a,c))}static defaults(c){return b.defaults(v(a,c)).Minimatch}},AST:class extends b.AST{constructor(b,c,d={}){super(b,c,v(a,d))}static fromGlob(c,d={}){return b.AST.fromGlob(c,v(a,d))}},unescape:(c,d={})=>b.unescape(c,v(a,d)),escape:(c,d={})=>b.escape(c,v(a,d)),filter:(c,d={})=>b.filter(c,v(a,d)),defaults:c=>b.defaults(v(a,c)),makeRe:(c,d={})=>b.makeRe(c,v(a,d)),braceExpand:(c,d={})=>b.braceExpand(c,v(a,d)),match:(c,d,e={})=>b.match(c,d,v(a,e)),sep:b.sep,GLOBSTAR:c.GLOBSTAR})},c.minimatch.defaults=c.defaults,c.braceExpand=(a,b={})=>((0,e.assertValidPattern)(a),b.nobrace||!/\{(?:(?!\{).)*\}/.test(a))?[a]:(0,d.expand)(a,{max:b.braceExpandMax}),c.minimatch.braceExpand=c.braceExpand,c.makeRe=(a,b={})=>new x(a,b).makeRe(),c.minimatch.makeRe=c.makeRe,c.match=(a,b,c={})=>{let d=new x(b,c);return a=a.filter(a=>d.match(a)),d.options.nonull&&!a.length&&a.push(b),a},c.minimatch.match=c.match;let w=/[?*]|[+@!]\(.*?\)|\[|\]/;class x{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(a,b={}){(0,e.assertValidPattern)(a),b=b||{},this.options=b,this.maxGlobstarRecursion=b.maxGlobstarRecursion??200,this.pattern=a,this.platform=b.platform||u,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!b.windowsPathsNoEscape||!1===b.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!b.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!b.nonegate,this.comment=!1,this.empty=!1,this.partial=!!b.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==b.windowsNoMagicRoot?b.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let a of this.set)for(let b of a)if("string"!=typeof b)return!0;return!1}debug(){}make(){let a=this.pattern,b=this.options;if(!b.nocomment&&"#"===a.charAt(0)){this.comment=!0;return}if(!a){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],b.debug&&(this.debug=(...a)=>console.error(...a)),this.debug(this.pattern,this.globSet);let c=this.globSet.map(a=>this.slashSplit(a));this.globParts=this.preprocess(c),this.debug(this.pattern,this.globParts);let d=this.globParts.map((a,b,c)=>{if(this.isWindows&&this.windowsNoMagicRoot){let b=""===a[0]&&""===a[1]&&("?"===a[2]||!w.test(a[2]))&&!w.test(a[3]),c=/^[a-z]:/i.test(a[0]);if(b)return[...a.slice(0,4),...a.slice(4).map(a=>this.parse(a))];if(c)return[a[0],...a.slice(1).map(a=>this.parse(a))]}return a.map(a=>this.parse(a))});if(this.debug(this.pattern,d),this.set=d.filter(a=>-1===a.indexOf(!1)),this.isWindows)for(let a=0;a=2?(a=this.firstPhasePreProcess(a),a=this.secondPhasePreProcess(a)):a=b>=1?this.levelOneOptimize(a):this.adjascentGlobstarOptimize(a),a}adjascentGlobstarOptimize(a){return a.map(a=>{let b=-1;for(;-1!==(b=a.indexOf("**",b+1));){let c=b;for(;"**"===a[c+1];)c++;c!==b&&a.splice(b,c-b)}return a})}levelOneOptimize(a){return a.map(a=>0===(a=a.reduce((a,b)=>{let c=a[a.length-1];return"**"===b&&"**"===c||(".."===b&&c&&".."!==c&&"."!==c&&"**"!==c?a.pop():a.push(b)),a},[])).length?[""]:a)}levelTwoFileOptimize(a){Array.isArray(a)||(a=this.slashSplit(a));let b=!1;do{if(b=!1,!this.preserveMultipleSlashes){for(let c=1;cd&&c.splice(d+1,e-d);let f=c[d+1],g=c[d+2],h=c[d+3];if(".."!==f||!g||"."===g||".."===g||!h||"."===h||".."===h)continue;b=!0,c.splice(d,1);let i=c.slice(0);i[d]="**",a.push(i),d--}if(!this.preserveMultipleSlashes){for(let a=1;aa.length)}partsMatch(a,b,c=!1){let d=0,e=0,f=[],g="";for(;d=2&&(a=this.levelTwoFileOptimize(a)),b.includes(c.GLOBSTAR))?this.#y(a,b,d,e,f):this.#z(a,b,d,e,f)}#y(a,b,d,e,f){let g=b.indexOf(c.GLOBSTAR,f),h=b.lastIndexOf(c.GLOBSTAR),[i,j,k]=d?[b.slice(f,g),b.slice(g+1),[]]:[b.slice(f,g),b.slice(g+1,h),b.slice(h+1)];if(i.length){let b=a.slice(e,e+i.length);if(!this.#z(b,i,d,0,0))return!1;e+=i.length,f+=i.length}let l=0;if(k.length){if(k.length+e>a.length)return!1;let b=a.length-k.length;if(this.#z(a,k,d,b,0))l=k.length;else{if(""!==a[a.length-1]||e+k.length===a.length||(b--,!this.#z(a,k,d,b,0)))return!1;l=k.length+1}}if(!j.length){let b=!!l;for(let c=e;c(a=a.toLowerCase(),b=>b.toLowerCase().endsWith(a)):a=>(a=a.toLowerCase(),b=>!b.startsWith(".")&&b.toLowerCase().endsWith(a)):d.dot?a=>b=>b.endsWith(a):a=>b=>!b.startsWith(".")&&b.endsWith(a))(b[1]):(b=a.match(r))?g=(d.nocase?d.dot?([a,b=""])=>{let c=t([a]);return b?(b=b.toLowerCase(),a=>c(a)&&a.toLowerCase().endsWith(b)):c}:([a,b=""])=>{let c=s([a]);return b?(b=b.toLowerCase(),a=>c(a)&&a.toLowerCase().endsWith(b)):c}:d.dot?([a,b=""])=>{let c=t([a]);return b?a=>c(a)&&a.endsWith(b):c}:([a,b=""])=>{let c=s([a]);return b?a=>c(a)&&a.endsWith(b):c})(b):(b=a.match(j))?g=d.dot?l:k:(b=a.match(m))&&(g=n);let h=f.AST.fromGlob(a,this.options).toMMPattern();return g&&"object"==typeof h&&Reflect.defineProperty(h,"test",{value:g}),h}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;let a=this.set;if(!a.length)return this.regexp=!1,this.regexp;let b=this.options,d=b.noglobstar?"[^/]*?":b.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",e=new Set(b.nocase?["i"]:[]),f=a.map(a=>{let b=a.map(a=>{if(a instanceof RegExp)for(let b of a.flags.split(""))e.add(b);return"string"==typeof a?a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):a===c.GLOBSTAR?c.GLOBSTAR:a._src});b.forEach((a,e)=>{let f=b[e+1],g=b[e-1];a===c.GLOBSTAR&&g!==c.GLOBSTAR&&(void 0===g?void 0!==f&&f!==c.GLOBSTAR?b[e+1]="(?:\\/|"+d+"\\/)?"+f:b[e]=d:void 0===f?b[e-1]=g+"(?:\\/|\\/"+d+")?":f!==c.GLOBSTAR&&(b[e-1]=g+"(?:\\/|\\/"+d+"\\/)"+f,b[e+1]=c.GLOBSTAR))});let f=b.filter(a=>a!==c.GLOBSTAR);if(this.partial&&f.length>=1){let a=[];for(let b=1;b<=f.length;b++)a.push(f.slice(0,b).join("/"));return"(?:"+a.join("|")+")"}return f.join("/")}).join("|"),[g,h]=a.length>1?["(?:",")"]:["",""];f="^"+g+f+h+"$",this.partial&&(f="^(?:\\/|"+g+f.slice(1,-1)+h+")$"),this.negate&&(f="^(?!"+f+").+$");try{this.regexp=new RegExp(f,[...e].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(a){return this.preserveMultipleSlashes?a.split("/"):this.isWindows&&/^\/\/[^/]+/.test(a)?["",...a.split(/\/+/)]:a.split(/\/+/)}match(a,b=this.partial){if(this.debug("match",a,this.pattern),this.comment)return!1;if(this.empty)return""===a;if("/"===a&&b)return!0;let c=this.options;this.isWindows&&(a=a.split("\\").join("/"));let d=this.slashSplit(a);this.debug(this.pattern,"split",d);let e=this.set;this.debug(this.pattern,"set",e);let f=d[d.length-1];if(!f)for(let a=d.length-2;!f&&a>=0;a--)f=d[a];for(let a of e){let e=d;if(c.matchBase&&1===a.length&&(e=[f]),this.matchOne(e,a,b)){if(c.flipNegate)return!0;return!this.negate}}return!c.flipNegate&&this.negate}static defaults(a){return c.minimatch.defaults(a).Minimatch}}c.Minimatch=x;var y=a.r(86329);Object.defineProperty(c,"AST",{enumerable:!0,get:function(){return y.AST}});var z=a.r(620843);Object.defineProperty(c,"escape",{enumerable:!0,get:function(){return z.escape}});var A=a.r(961730);Object.defineProperty(c,"unescape",{enumerable:!0,get:function(){return A.unescape}}),c.minimatch.AST=f.AST,c.minimatch.Minimatch=x,c.minimatch.escape=g.escape,c.minimatch.unescape=h.unescape},18779,(a,b,c)=>{"use strict";let d=a.r(677652),{context:e,trace:f,SpanStatusCode:g,propagation:h,diag:i}=a.r(832528),{getRPCMetadata:j,RPCType:k}=a.r(498562),{ATTR_HTTP_ROUTE:l,ATTR_HTTP_RESPONSE_STATUS_CODE:m,ATTR_HTTP_REQUEST_METHOD:n,ATTR_URL_PATH:o}=a.r(357122),{InstrumentationBase:p}=a.r(535049),{version:q,name:r}=a.r(989801),s=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend","onResponse","onError"],t="hook.name",u="fastify.type",v="hook.callback.name",w="route-hook",x="hook",y="anonymous",z=Symbol("fastify otel instance"),A=Symbol("fastify otel request spans"),B=Symbol("fastify otel request context"),C=Symbol("fastify otel addhook original"),D=Symbol("fastify otel setnotfound original"),E=Symbol("fastify otel ignore path"),F=Symbol("fastify otel record exceptions");class G extends p{logger=null;_requestHook=null;_lifecycleHook=null;constructor(b){if(super(r,q,b),this.logger=i.createComponentLogger({namespace:r}),this[E]=null,this[F]=!0,b?.recordExceptions!=null){if("boolean"!=typeof b.recordExceptions)throw TypeError("recordExceptions must be a boolean");this[F]=b.recordExceptions}if("function"==typeof b?.requestHook&&(this._requestHook=b.requestHook),"function"==typeof b?.lifecycleHook&&(this._lifecycleHook=b.lifecycleHook),b?.ignorePaths!=null||null!=process.env.OTEL_FASTIFY_IGNORE_PATHS){const c=b?.ignorePaths??process.env.OTEL_FASTIFY_IGNORE_PATHS;if(("string"!=typeof c||0===c.length)&&"function"!=typeof c)throw TypeError("ignorePaths must be a string or a function");let d=null;this[E]=b=>"function"==typeof c?c(b):(null==d&&(d=a.r(179388).minimatch),d(b.url,c))}}enable(){return void 0===this._handleInitialization&&this.getConfig().registerOnInitialization&&(this._handleInitialization=a=>{this.plugin()(a.fastify,void 0,()=>{});let b=(a,b,c)=>{c()};b[Symbol.for("skip-override")]=!0,b[Symbol.for("fastify.display-name")]="@fastify/otel",a.fastify.register(b)},d.subscribe("fastify.initialization",this._handleInitialization)),super.enable()}disable(){return this._handleInitialization&&(d.unsubscribe("fastify.initialization",this._handleInitialization),this._handleInitialization=void 0),super.disable()}init(){return[]}plugin(){let a=this;return b[Symbol.for("skip-override")]=!0,b[Symbol.for("fastify.display-name")]="@fastify/otel",b[Symbol.for("plugin-meta")]={fastify:">=4.0.0 <6",name:"@fastify/otel"},b;function b(b,c,d){function i(a,b,c,d){let e=a[A];null!=e&&(b.statusCode>=500&&e.setStatus({code:g.ERROR}),e.setAttributes({[m]:b.statusCode}),e.end()),a[A]=null,d(null,c)}function p(b,c,d,e){let f=b[A];null!=f&&(f.setStatus({code:g.ERROR,message:d.message}),!1!==a[F]&&f.recordException(d)),e()}function q(a,b,c={}){return function(...d){let h=this[z],i=function(a){for(let b of a)if(b?.routeOptions&&b.url&&b.method)return b;return null}(d);if(null===i)return h.logger.debug(`Ignoring route instrumentation because ${b} was called without a Fastify request argument`),a.call(this,...d);if(!1===h.isEnabled()||i.routeOptions.config?.otel===!1)return h.logger.debug(`Ignoring route instrumentation ${i.routeOptions.method} ${i.routeOptions.url} because it is disabled`),a.call(this,...d);if(h[E]?.({url:i.url,method:i.method})===!0)return h.logger.debug(`Ignoring route instrumentation ${i.routeOptions.method} ${i.routeOptions.url} because it matches the ignore path`),a.call(this,...d);let j=i[B]??e.active(),k=a.name?.length>0?a.name:this.pluginName??y,l=h.tracer.startSpan(`${b} - ${k}`,{attributes:c},j);if(null!=h._lifecycleHook)try{h._lifecycleHook(l,{hookName:b,request:i,handler:k})}catch(a){h.logger.error({err:a},"Execution of lifecycleHook failed")}return e.with(f.setSpan(j,l),function(){try{let b=a.call(this,...d);if("function"==typeof b?.then)return b.then(a=>(l.end(),a),a=>(l.setStatus({code:g.ERROR,message:a.message}),!1!==h[F]&&l.recordException(a),l.end(),Promise.reject(a)));return l.end(),b}catch(a){throw l.setStatus({code:g.ERROR,message:a.message}),!1!==h[F]&&l.recordException(a),l.end(),a}},this)}}b.decorate(z,a),b.decorate(C,b.addHook),b.decorate(D,b.setNotFoundHandler),b.decorateRequest("opentelemetry",function(){let b=this[B],c=this[A];return{enabled:this.routeOptions.config?.otel!==!1,span:c,tracer:a.tracer,context:b,inject:(a,c)=>h.inject(b,a,c),extract:(a,c)=>h.extract(b,a,c)}}),b.decorateRequest(A,null),b.decorateRequest(B,null),b.addHook("onRoute",function(b){if(a[E]?.(b)===!0)return void a.logger.debug(`Ignoring route instrumentation ${b.method} ${b.url} because it matches the ignore path`);if(b.config?.otel===!1)return void a.logger.debug(`Ignoring route instrumentation ${b.method} ${b.url} because it is disabled`);for(let a of s)if(null!=b[a]){let c=b[a];if("function"==typeof c)b[a]=q(c,a,{[t]:`${this.pluginName} - route -> ${a}`,[u]:w,[l]:b.url,[v]:c.name?.length>0?c.name:y});else if(Array.isArray(c)){let d=[];for(let e of c)d.push(q(e,a,{[t]:`${this.pluginName} - route -> ${a}`,[u]:w,[l]:b.url,[v]:e.name?.length>0?e.name:y}));b[a]=d}}null!=b.onSend?b.onSend=Array.isArray(b.onSend)?[...b.onSend,i]:[b.onSend,i]:b.onSend=i,null!=b.onError?b.onError=Array.isArray(b.onError)?[...b.onError,p]:[b.onError,p]:b.onError=p,b.handler=q(b.handler,"handler",{[t]:`${this.pluginName} - route-handler`,[u]:"request-handler",[l]:b.url,[v]:b.handler.name.length>0?b.handler.name:y})}),b.addHook("onRequest",function(a,b,c){if(!1===this[z].isEnabled()||a.routeOptions.config?.otel===!1)return c();if(this[z][E]?.({url:a.url,method:a.method})===!0)return this[z].logger.debug(`Ignoring request ${a.method} ${a.url} because it matches the ignore path`),c();let d=e.active();null==f.getSpan(d)&&(d=h.extract(d,a.headers));let g=j(d);null!=a.routeOptions.url&&g?.type===k.HTTP&&(g.route=a.routeOptions.url);let i={"fastify.root":"@fastify/otel",[n]:a.method,[o]:a.url};null!=a.routeOptions.url&&(i[l]=a.routeOptions.url);let m=this[z].tracer.startSpan("request",{attributes:i},d);try{this[z]._requestHook?.(m,a)}catch(a){this[z].logger.error({err:a},"requestHook threw")}a[B]=f.setSpan(d,m),a[A]=m,e.with(a[B],()=>{c()})}),b.addHook("onResponse",function(a,b,c){let d=a[A];null!=d&&(d.setAttributes({[m]:b.statusCode}),d.end()),a[A]=null,c()}),b.addHook=function(a,b){let c=this[C];return s.includes(a)?c.call(this,a,q(b,a,{[t]:`${this.pluginName} - ${a}`,[u]:x,[v]:b.name?.length>0?b.name:y})):c.call(this,a,b)},b.setNotFoundHandler=function(a,b){let c=this[D];"function"==typeof a?(b=q(a,"notFoundHandler",{[t]:`${this.pluginName} - not-found-handler`,[u]:x,[v]:a.name?.length>0?a.name:y}),c.call(this,b)):(null!=a.preValidation&&(a.preValidation=q(a.preValidation,"notFoundHandler - preValidation",{[t]:`${this.pluginName} - not-found-handler - preValidation`,[u]:x,[v]:a.preValidation.name?.length>0?a.preValidation.name:y})),null!=a.preHandler&&(a.preHandler=q(a.preHandler,"notFoundHandler - preHandler",{[t]:`${this.pluginName} - not-found-handler - preHandler`,[u]:x,[v]:a.preHandler.name?.length>0?a.preHandler.name:y})),b=q(b,"notFoundHandler",{[t]:`${this.pluginName} - not-found-handler`,[u]:x,[v]:b.name?.length>0?b.name:y}),c.call(this,a,b))},d()}}}b.exports=G,b.exports.FastifyOtelInstrumentation=G},487554,(a,b,c)=>{var d,e,f;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).FASTIFY_NAME="fastify.name",d.FASTIFY_TYPE="fastify.type",d.HOOK_NAME="hook.name",d.PLUGIN_NAME="plugin.name",c.FastifyTypes=void 0,(e=c.FastifyTypes||(c.FastifyTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",c.FastifyNames=void 0,(f=c.FastifyNames||(c.FastifyNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},269212,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.spanRequestSymbol=Symbol("opentelemetry.instrumentation.fastify.request_active_span")},63015,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(269212);function f(a){return"object"==typeof a&&a&&"function"==typeof Object.getOwnPropertyDescriptor(a,"then")?.value||!1}c.endSpan=function(a,b){let c=a[e.spanRequestSymbol]||[];c.length&&(c.forEach(a=>{b&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b)),a.end()}),delete a[e.spanRequestSymbol])},c.safeExecuteInTheMiddleMaybePromise=function(a,b,c){let d,e;try{e=a(),f(e)&&e.then(a=>b(void 0,a),a=>b(a))}catch(a){d=a}finally{if(!f(e)&&(b(d,e),d&&1))throw d;return e}},c.startSpan=function(a,b,c,d={}){let f=b.startSpan(c,{attributes:d}),g=a[e.spanRequestSymbol]||[];return g.push(f),Object.defineProperty(a,e.spanRequestSymbol,{enumerable:!1,configurable:!0,value:g}),f}},235988,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(357122),h=a.r(187845),i=a.r(487554),j=a.r(63015),k="anonymous",l=new Set(["onTimeout","onRequest","preParsing","preValidation","preSerialization","preHandler","onSend","onResponse","onError"]);class m extends f.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-fastify-v3","0.1.0",a)}init(){return[new f.InstrumentationNodeModuleDefinition("fastify",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_hookOnRequest(){let a=this;return function(b,c,f){if(!a.isEnabled())return f();a._wrap(c,"send",a._patchSend());let g=e.getRPCMetadata(d.context.active()),i=b.routeOptions?b.routeOptions.url:b.routerPath;i&&g?.type===e.RPCType.HTTP&&(g.route=i);let j=b.method||"GET";h.getIsolationScope().setTransactionName(`${j} ${i}`),f()}}_wrapHandler(a,b,c,e){let f=this;return this._diag.debug("Patching fastify route.handler function"),function(...g){if(!f.isEnabled())return c.apply(this,g);let h=c.name||a||k,l=`${i.FastifyNames.MIDDLEWARE} - ${h}`,m=g[1],n=j.startSpan(m,f.tracer,l,{[i.AttributeNames.FASTIFY_TYPE]:i.FastifyTypes.MIDDLEWARE,[i.AttributeNames.PLUGIN_NAME]:a,[i.AttributeNames.HOOK_NAME]:b}),o=e&&g[g.length-1];return o&&(g[g.length-1]=function(...a){j.endSpan(m),o.apply(this,a)}),d.context.with(d.trace.setSpan(d.context.active(),n),()=>j.safeExecuteInTheMiddleMaybePromise(()=>c.apply(this,g),a=>{a instanceof Error&&(n.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),n.recordException(a)),e||j.endSpan(m)}))}}_wrapAddHook(){let a=this;return this._diag.debug("Patching fastify server.addHook function"),function(b){return function(...c){let d=c[0],e=c[1],f=this.pluginName;if(!l.has(d))return b.apply(this,c);let g="function"==typeof c[c.length-1]&&"AsyncFunction"!==e.constructor.name;return b.apply(this,[d,a._wrapHandler(f,d,e,g)])}}}_patchConstructor(a){let b=this;function c(...d){let e,f=a.fastify.apply(this,d);return f.addHook("onRequest",b._hookOnRequest()),f.addHook("preHandler",b._hookPreHandler()),(e=h.getClient())&&e.on("spanStart",a=>{n(a)}),b._wrap(f,"addHook",b._wrapAddHook()),f}return void 0!==a.errorCodes&&(c.errorCodes=a.errorCodes),c.fastify=c,c.default=c,c}_patchSend(){let a=this;return this._diag.debug("Patching fastify reply.send function"),function(b){return function(...c){let d=c[0];return a.isEnabled()?f.safeExecuteInTheMiddle(()=>b.apply(this,c),a=>{!a&&d instanceof Error&&(a=d),j.endSpan(this,a)}):b.apply(this,c)}}}_hookPreHandler(){let a=this;return this._diag.debug("Patching fastify preHandler function"),function(b,c,e){if(!a.isEnabled())return e();let h=b.routeOptions?.handler||b.context?.handler,l=h?.name.startsWith("bound ")?h.name.substring(6):h?.name,m=`${i.FastifyNames.REQUEST_HANDLER} - ${l||this.pluginName||k}`,o={[i.AttributeNames.PLUGIN_NAME]:this.pluginName,[i.AttributeNames.FASTIFY_TYPE]:i.FastifyTypes.REQUEST_HANDLER,[g.SEMATTRS_HTTP_ROUTE]:b.routeOptions?b.routeOptions.url:b.routerPath};l&&(o[i.AttributeNames.FASTIFY_NAME]=l);let p=j.startSpan(c,a.tracer,m,o);n(p);let{requestHook:q}=a.getConfig();return q&&f.safeExecuteInTheMiddle(()=>q(p,{request:b}),b=>{b&&a._diag.error("request hook failed",b)},!0),d.context.with(d.trace.setSpan(d.context.active(),p),()=>{e()})}}}function n(a){let b=h.spanToJSON(a).data,c=b["fastify.type"];if(b[h.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[h.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[h.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.fastify`});let d=b["fastify.name"]||b["plugin.name"]||b["hook.name"];if("string"==typeof d){let b=d.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");a.updateName(b)}}c.FastifyInstrumentationV3=m},533819,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(677652),e=a.r(18779),f=a.r(187845),g=a.r(309569),h=a.r(852223),i=a.r(235988),j="Fastify",k=g.generateInstrumentOnce(`${j}.v3`,()=>new i.FastifyInstrumentationV3);function l(){let a=f.getClient();if(a)return a.getIntegrationByName(j)}function m(a,b,c,d){let e=l()?.getShouldHandleError()||o;if("diagnostics-channel"===d&&(this.diagnosticsChannelExists=!0),this.diagnosticsChannelExists&&"onError-hook"===d){h.DEBUG_BUILD&&f.debug.warn("Fastify error handler was already registered via diagnostics channel.","You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.");return}e(a,b,c)&&f.captureException(a,{mechanism:{handled:!1,type:"auto.function.fastify"}})}let n=g.generateInstrumentOnce(`${j}.v5`,()=>{let a=new e.FastifyOtelInstrumentation,b=a.plugin();return d.subscribe("fastify.initialization",a=>{let c=a.fastify;c?.register(b).after(a=>{let b;a?h.DEBUG_BUILD&&f.debug.error("Failed to setup Fastify instrumentation",a):((b=f.getClient())&&b.on("spanStart",a=>{p(a)}),c&&c.addHook("onRequest",async(a,b)=>{if(a.opentelemetry){let{span:b}=a.opentelemetry();b&&p(b)}let c=a.routeOptions?.url,d=a.method||"GET";f.getIsolationScope().setTransactionName(`${d} ${c}`)}))})}),d.subscribe("tracing:fastify.request.handler:error",a=>{let{error:b,request:c,reply:d}=a;m.call(m,b,c,d,"diagnostics-channel")}),a});function o(a,b,c){let d=c.statusCode;return d>=500||d<=299}function p(a){let b=f.spanToJSON(a),c=b.description,d=b.data,e=d["fastify.type"],g="hook"===e,h=e===c?.startsWith("handler -"),i="request"===c||"request-handler"===e;if(d[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!h&&!i&&!g)return;a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${g?"hook":h?"middleware":i?"request_handler":""}.fastify`});let j=d["fastify.name"]||d["plugin.name"]||d["hook.name"];if("string"==typeof j){let b=j.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");a.updateName(b)}}c.fastifyIntegration=f.defineIntegration((a={})=>(({shouldHandleError:a})=>{let b;return{name:j,setupOnce(){b=a||o,k(),n()},getShouldHandleError:()=>b,setShouldHandleError(a){b=a}}})(a)),c.instrumentFastify=n,c.instrumentFastifyV3=k,c.setupFastifyErrorHandler=function(a,b){b?.shouldHandleError&&l()?.setShouldHandleError(b.shouldHandleError);let c=Object.assign(function(a,b,c){a.addHook("onError",async(a,b,c)=>{m.call(m,c,a,b,"onError-hook")}),c()},{[Symbol.for("skip-override")]:!0,[Symbol.for("fastify.display-name")]:"sentry-fastify-error-handler"});a.register(c)}},34463,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=c.TokenKind=c.AllowedOperationTypes=void 0,(d=c.AllowedOperationTypes||(c.AllowedOperationTypes={})).QUERY="query",d.MUTATION="mutation",d.SUBSCRIPTION="subscription",(e=c.TokenKind||(c.TokenKind={})).SOF="",e.EOF="",e.BANG="!",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment",(f=c.SpanNames||(c.SpanNames={})).EXECUTE="graphql.execute",f.PARSE="graphql.parse",f.RESOLVE="graphql.resolve",f.VALIDATE="graphql.validate",f.SCHEMA_VALIDATE="graphql.validateSchema",f.SCHEMA_PARSE="graphql.parseSchema"},802147,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).SOURCE="graphql.source",d.FIELD_NAME="graphql.field.name",d.FIELD_PATH="graphql.field.path",d.FIELD_TYPE="graphql.field.type",d.PARENT_NAME="graphql.parent.name",d.OPERATION_TYPE="graphql.operation.type",d.OPERATION_NAME="graphql.operation.name",d.VARIABLES="graphql.variables.",d.ERROR_VALIDATION_NAME="graphql.validation.error"},897510,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.OTEL_GRAPHQL_DATA_SYMBOL=c.OTEL_PATCHED_SYMBOL=void 0,c.OTEL_PATCHED_SYMBOL=Symbol.for("opentelemetry.patched"),c.OTEL_GRAPHQL_DATA_SYMBOL=Symbol.for("opentelemetry.graphql_data")},452735,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.OPERATION_NOT_SUPPORTED=void 0,a.r(897510),c.OPERATION_NOT_SUPPORTED="Operation$operationName$not supported"},858879,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.wrapFieldResolver=c.wrapFields=c.getSourceFromLocation=c.getOperation=c.endSpan=c.addSpanSource=c.addInputVariableAttributes=c.isPromise=void 0;let d=a.r(832528),e=a.r(34463),f=a.r(802147),g=a.r(897510),h=Object.values(e.AllowedOperationTypes);function i(a,b,c,d,e){let g=o(b,c,d,e);a.setAttribute(f.AttributeNames.SOURCE,g)}function j(a,b){return a[g.OTEL_GRAPHQL_DATA_SYMBOL].fields[b.join(".")]}function k(a,b){for(let c=b.length-1;c>0;c--){let d=j(a,b.slice(0,c));if(d)return d.span}return l(a)}function l(a){return a[g.OTEL_GRAPHQL_DATA_SYMBOL].span}c.isPromise=a=>"function"==typeof a?.then,c.addInputVariableAttributes=function(a,b){Object.entries(b).forEach(([b,c])=>{!function a(b,c,d){Array.isArray(d)?d.forEach((d,e)=>{a(b,`${c}.${e}`,d)}):d instanceof Object?Object.entries(d).forEach(([d,e])=>{a(b,`${c}.${d}`,e)}):b.setAttribute(`${f.AttributeNames.VARIABLES}${String(c)}`,d)}(a,b,c)})},c.addSpanSource=i,c.endSpan=function(a,b){b&&a.recordException(b),a.end()},c.getOperation=function(a,b){if(a&&Array.isArray(a.definitions))if(b)return a.definitions.filter(a=>-1!==h.indexOf(a?.operation)).find(a=>b===a?.name?.value);else return a.definitions.find(a=>-1!==h.indexOf(a?.operation))};function m(a,b){let c="";for(let d=0;dh){i=i.next,j=i?.line;continue}let a=i.value||i.kind,c="";(!b&&n.indexOf(i.kind)>=0&&(a="*"),i.kind===e.TokenKind.STRING&&(a=`"${a}"`),i.kind===e.TokenKind.EOF&&(a=""),i.line>j)?(f+=m("\n",i.line-j),j=i.line,c=m(" ",i.column-1)):i.line===i.prev?.line&&(c=m(" ",i.start-(i.prev?.end||0))),f+=c+a,i&&(i=i.next)}}return f}c.getSourceFromLocation=o,c.wrapFields=function a(b,c,d){if(!b||b[g.OTEL_PATCHED_SYMBOL])return;let e=b.getFields();b[g.OTEL_PATCHED_SYMBOL]=!0,Object.keys(e).forEach(b=>{let f=e[b];if(f&&(f.resolve&&(f.resolve=r(c,d,f.resolve)),f.type))for(let b of function a(b){var c,d;return"ofType"in b?a(b.ofType):"getTypes"in(c=b)&&"function"==typeof c.getTypes?b.getTypes():"getFields"in(d=b)&&"function"==typeof d.getFields?[b]:[]}(f.type))a(b,c,d)})};let p=(a,b,c)=>{c&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end())},q=(a,b)=>{b&&a.end()};function r(a,b,h,m=!1){if(n[g.OTEL_PATCHED_SYMBOL]||"function"!=typeof h)return h;function n(n,o,r,s){let t;if(!h)return;let u=b();if(u.ignoreTrivialResolveSpans&&m&&("object"==typeof n&&null!==n||"function"==typeof n)&&"function"!=typeof n[s.fieldName]||!r[g.OTEL_GRAPHQL_DATA_SYMBOL])return h.call(this,n,o,r,s);let v=function(a,b){let c=[],d=b;for(;d;){let b=d.key;a&&"number"==typeof b&&(b="*"),c.push(String(b)),d=d.prev}return c.reverse()}(u.mergeItems,s&&s.path),w=v.filter(a=>"string"==typeof a).length,x=!1;if(u.depth>=0&&u.depth"Field"===a.kind))&&i(x,y.loc,o().allowValues,z.loc?.start,z.loc?.end),x)},t=c,u=m,v=A,t[g.OTEL_GRAPHQL_DATA_SYMBOL].fields[u.join(".")]=v,{field:A,spanAdded:!0}}(a,b,r,s,v);t=c.span,x=h}return d.context.with(d.trace.setSpan(d.context.active(),t),()=>{try{let a=h.call(this,n,o,r,s);if((0,c.isPromise)(a))return a.then(a=>(q(t,x),a),a=>{throw p(t,a,x),a});return q(t,x),a}catch(a){throw p(t,a,x),a}})}return n[g.OTEL_PATCHED_SYMBOL]=!0,n}c.wrapFieldResolver=r},658558,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-graphql"},858152,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GraphQLInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(34463),g=a.r(802147),h=a.r(897510),i=a.r(452735),j=a.r(858879),k=a.r(658558),l={mergeItems:!1,depth:-1,allowValues:!1,ignoreResolveSpans:!1},m=[">=14.0.0 <17"];class n extends e.InstrumentationBase{constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a})}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new e.InstrumentationNodeModuleDefinition("graphql",m);return a.files.push(this._addPatchingExecute()),a.files.push(this._addPatchingParser()),a.files.push(this._addPatchingValidate()),a}_addPatchingExecute(){return new e.InstrumentationNodeModuleFile("graphql/execution/execute.js",m,a=>((0,e.isWrapped)(a.execute)&&this._unwrap(a,"execute"),this._wrap(a,"execute",this._patchExecute(a.defaultFieldResolver)),a),a=>{a&&this._unwrap(a,"execute")})}_addPatchingParser(){return new e.InstrumentationNodeModuleFile("graphql/language/parser.js",m,a=>((0,e.isWrapped)(a.parse)&&this._unwrap(a,"parse"),this._wrap(a,"parse",this._patchParse()),a),a=>{a&&this._unwrap(a,"parse")})}_addPatchingValidate(){return new e.InstrumentationNodeModuleFile("graphql/validation/validate.js",m,a=>((0,e.isWrapped)(a.validate)&&this._unwrap(a,"validate"),this._wrap(a,"validate",this._patchValidate()),a),a=>{a&&this._unwrap(a,"validate")})}_patchExecute(a){let b=this;return function(c){return function(){let f;if(arguments.length>=2){let c=arguments;f=b._wrapExecuteArgs(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],a)}else{let c=arguments[0];f=b._wrapExecuteArgs(c.schema,c.document,c.rootValue,c.contextValue,c.variableValues,c.operationName,c.fieldResolver,c.typeResolver,a)}let g=(0,j.getOperation)(f.document,f.operationName),i=b._createExecuteSpan(g,f);return f.contextValue[h.OTEL_GRAPHQL_DATA_SYMBOL]={source:f.document?f.document||f.document[h.OTEL_GRAPHQL_DATA_SYMBOL]:void 0,span:i,fields:{}},d.context.with(d.trace.setSpan(d.context.active(),i),()=>(0,e.safeExecuteInTheMiddle)(()=>c.apply(this,[f]),(a,c)=>{b._handleExecutionResult(i,a,c)}))}}}_handleExecutionResult(a,b,c){let d=this.getConfig();if(void 0===c||b)return void(0,j.endSpan)(a,b);if((0,j.isPromise)(c))c.then(b=>{"function"!=typeof d.responseHook?(0,j.endSpan)(a):this._executeResponseHook(a,b)},b=>{(0,j.endSpan)(a,b)});else{if("function"!=typeof d.responseHook)return void(0,j.endSpan)(a);this._executeResponseHook(a,c)}}_executeResponseHook(a,b){let{responseHook:c}=this.getConfig();c&&(0,e.safeExecuteInTheMiddle)(()=>{c(a,b)},b=>{b&&this._diag.error("Error running response hook",b),(0,j.endSpan)(a,void 0)},!0)}_patchParse(){let a=this;return function(b){return function(c,d){return a._parse(this,b,c,d)}}}_patchValidate(){let a=this;return function(b){return function(c,d,e,f,g){return a._validate(this,b,c,d,e,g,f)}}}_parse(a,b,c,g){let h=this.getConfig(),i=this.tracer.startSpan(f.SpanNames.PARSE);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>(0,e.safeExecuteInTheMiddle)(()=>b.call(a,c,g),(a,b)=>{b&&((0,j.getOperation)(b)?b.loc&&(0,j.addSpanSource)(i,b.loc,h.allowValues):i.updateName(f.SpanNames.SCHEMA_PARSE)),(0,j.endSpan)(i,a)}))}_validate(a,b,c,h,i,k,l){let m=this.tracer.startSpan(f.SpanNames.VALIDATE,{});return d.context.with(d.trace.setSpan(d.context.active(),m),()=>(0,e.safeExecuteInTheMiddle)(()=>b.call(a,c,h,i,l,k),(a,b)=>{h.loc||m.updateName(f.SpanNames.SCHEMA_VALIDATE),b&&b.length&&m.recordException({name:g.AttributeNames.ERROR_VALIDATION_NAME,message:JSON.stringify(b)}),(0,j.endSpan)(m,a)}))}_createExecuteSpan(a,b){let c=this.getConfig(),d=this.tracer.startSpan(f.SpanNames.EXECUTE,{});if(a){let{operation:b,name:c}=a;d.setAttribute(g.AttributeNames.OPERATION_TYPE,b);let e=c?.value;e?(d.setAttribute(g.AttributeNames.OPERATION_NAME,e),d.updateName(`${b} ${e}`)):d.updateName(b)}else{let a=" ";b.operationName&&(a=` "${b.operationName}" `),a=i.OPERATION_NOT_SUPPORTED.replace("$operationName$",a),d.setAttribute(g.AttributeNames.OPERATION_NAME,a)}return b.document?.loc&&(0,j.addSpanSource)(d,b.document.loc,c.allowValues),b.variableValues&&c.allowValues&&(0,j.addInputVariableAttributes)(d,b.variableValues),d}_wrapExecuteArgs(a,b,c,d,e,f,g,i,k){if(d||(d={}),d[h.OTEL_GRAPHQL_DATA_SYMBOL]||this.getConfig().ignoreResolveSpans)return{schema:a,document:b,rootValue:c,contextValue:d,variableValues:e,operationName:f,fieldResolver:g,typeResolver:i};let l=null==g,m=g??k;return g=(0,j.wrapFieldResolver)(this.tracer,()=>this.getConfig(),m,l),a&&((0,j.wrapFields)(a.getQueryType(),this.tracer,()=>this.getConfig()),(0,j.wrapFields)(a.getMutationType(),this.tracer,()=>this.getConfig())),{schema:a,document:b,rootValue:c,contextValue:d,variableValues:e,operationName:f,fieldResolver:g,typeResolver:i}}}c.GraphQLInstrumentation=n},763696,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GraphQLInstrumentation=void 0;var d=a.r(858152);Object.defineProperty(c,"GraphQLInstrumentation",{enumerable:!0,get:function(){return d.GraphQLInstrumentation}})},534849,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(763696),f=a.r(187845),g=a.r(309569),h=a.r(221598),i="Graphql",j=g.generateInstrumentOnce(i,e.GraphQLInstrumentation,a=>{let b=k(a);return{...b,responseHook(a,c){g.addOriginToSpan(a,"auto.graphql.otel.graphql"),c.errors?.length&&!f.spanToJSON(a).status&&a.setStatus({code:d.SpanStatusCode.ERROR});let e=f.spanToJSON(a).data,i=e["graphql.operation.type"],j=e["graphql.operation.name"];if(b.useOperationNameForRootSpan&&i){let b=f.getRootSpan(a),c=f.spanToJSON(b).data[h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION]||[],d=j?`${i} ${j}`:`${i}`;Array.isArray(c)?(c.push(d),b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,c)):"string"==typeof c?b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,[c,d]):b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,d),f.spanToJSON(b).data["original-description"]||b.setAttribute("original-description",f.spanToJSON(b).description),b.updateName(`${f.spanToJSON(b).data["original-description"]} (${function(a){if(Array.isArray(a)){let b=a.slice().sort();return b.length<=5?b.join(", "):`${b.slice(0,5).join(", ")}, +${b.length-5}`}return`${a}`}(c)})`)}}}});function k(a){return{ignoreResolveSpans:!0,ignoreTrivialResolveSpans:!0,useOperationNameForRootSpan:!0,...a}}c.graphqlIntegration=f.defineIntegration((a={})=>({name:i,setupOnce(){j(k(a))}})),c.instrumentGraphql=j},410220,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.kafkajs.eventListenersSet")},192374,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.bufferTextMapGetter=void 0,c.bufferTextMapGetter={get(a,b){if(a){for(let c of Object.keys(a))if(c===b||c.toLowerCase()===b)return a[c]?.toString()}},keys:a=>a?Object.keys(a):[]}},616311,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_MESSAGING_PROCESS_DURATION=c.METRIC_MESSAGING_CLIENT_SENT_MESSAGES=c.METRIC_MESSAGING_CLIENT_OPERATION_DURATION=c.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES=c.MESSAGING_SYSTEM_VALUE_KAFKA=c.MESSAGING_OPERATION_TYPE_VALUE_SEND=c.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE=c.MESSAGING_OPERATION_TYPE_VALUE_PROCESS=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION_TYPE=c.ATTR_MESSAGING_OPERATION_NAME=c.ATTR_MESSAGING_KAFKA_OFFSET=c.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE=c.ATTR_MESSAGING_KAFKA_MESSAGE_KEY=c.ATTR_MESSAGING_DESTINATION_PARTITION_ID=c.ATTR_MESSAGING_DESTINATION_NAME=c.ATTR_MESSAGING_BATCH_MESSAGE_COUNT=void 0,c.ATTR_MESSAGING_BATCH_MESSAGE_COUNT="messaging.batch.message_count",c.ATTR_MESSAGING_DESTINATION_NAME="messaging.destination.name",c.ATTR_MESSAGING_DESTINATION_PARTITION_ID="messaging.destination.partition.id",c.ATTR_MESSAGING_KAFKA_MESSAGE_KEY="messaging.kafka.message.key",c.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE="messaging.kafka.message.tombstone",c.ATTR_MESSAGING_KAFKA_OFFSET="messaging.kafka.offset",c.ATTR_MESSAGING_OPERATION_NAME="messaging.operation.name",c.ATTR_MESSAGING_OPERATION_TYPE="messaging.operation.type",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.MESSAGING_OPERATION_TYPE_VALUE_PROCESS="process",c.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE="receive",c.MESSAGING_OPERATION_TYPE_VALUE_SEND="send",c.MESSAGING_SYSTEM_VALUE_KAFKA="kafka",c.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES="messaging.client.consumed.messages",c.METRIC_MESSAGING_CLIENT_OPERATION_DURATION="messaging.client.operation.duration",c.METRIC_MESSAGING_CLIENT_SENT_MESSAGES="messaging.client.sent.messages",c.METRIC_MESSAGING_PROCESS_DURATION="messaging.process.duration"},53386,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.23.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-kafkajs"},277460,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KafkaJsInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(410220),h=a.r(192374),i=a.r(616311),j=a.r(53386);function k(a,b,c){return d=>{a.add(b,{...c,...d?{[f.ATTR_ERROR_TYPE]:d}:{}})}}function l(a,b,c){return d=>{a.record((Date.now()-b)/1e3,{...c,...d?{[f.ATTR_ERROR_TYPE]:d}:{}})}}let m=[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10];class n extends e.InstrumentationBase{constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a)}_updateMetricInstruments(){this._clientDuration=this.meter.createHistogram(i.METRIC_MESSAGING_CLIENT_OPERATION_DURATION,{advice:{explicitBucketBoundaries:m}}),this._sentMessages=this.meter.createCounter(i.METRIC_MESSAGING_CLIENT_SENT_MESSAGES),this._consumedMessages=this.meter.createCounter(i.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES),this._processDuration=this.meter.createHistogram(i.METRIC_MESSAGING_PROCESS_DURATION,{advice:{explicitBucketBoundaries:m}})}init(){let a=a=>{(0,e.isWrapped)(a?.Kafka?.prototype.producer)&&this._unwrap(a.Kafka.prototype,"producer"),(0,e.isWrapped)(a?.Kafka?.prototype.consumer)&&this._unwrap(a.Kafka.prototype,"consumer")};return new e.InstrumentationNodeModuleDefinition("kafkajs",[">=0.3.0 <3"],b=>(a(b),this._wrap(b?.Kafka?.prototype,"producer",this._getProducerPatch()),this._wrap(b?.Kafka?.prototype,"consumer",this._getConsumerPatch()),b),a)}_getConsumerPatch(){let a=this;return b=>function(...c){let d=b.apply(this,c);return(0,e.isWrapped)(d.run)&&a._unwrap(d,"run"),a._wrap(d,"run",a._getConsumerRunPatch()),a._setKafkaEventListeners(d),d}}_setKafkaEventListeners(a){a[g.EVENT_LISTENERS_SET]||(a.events?.REQUEST&&a.on(a.events.REQUEST,this._recordClientDurationMetric.bind(this)),a[g.EVENT_LISTENERS_SET]=!0)}_recordClientDurationMetric(a){let[b,c]=a.payload.broker.split(":");this._clientDuration.record(a.payload.duration/1e3,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:`${a.payload.apiName}`,[f.ATTR_SERVER_ADDRESS]:b,[f.ATTR_SERVER_PORT]:Number.parseInt(c,10)})}_getProducerPatch(){let a=this;return b=>function(...c){let d=b.apply(this,c);return(0,e.isWrapped)(d.sendBatch)&&a._unwrap(d,"sendBatch"),a._wrap(d,"sendBatch",a._getSendBatchPatch()),(0,e.isWrapped)(d.send)&&a._unwrap(d,"send"),a._wrap(d,"send",a._getSendPatch()),(0,e.isWrapped)(d.transaction)&&a._unwrap(d,"transaction"),a._wrap(d,"transaction",a._getProducerTransactionPatch()),a._setKafkaEventListeners(d),d}}_getConsumerRunPatch(){let a=this;return b=>function(...c){let d=c[0];return d?.eachMessage&&((0,e.isWrapped)(d.eachMessage)&&a._unwrap(d,"eachMessage"),a._wrap(d,"eachMessage",a._getConsumerEachMessagePatch())),d?.eachBatch&&((0,e.isWrapped)(d.eachBatch)&&a._unwrap(d,"eachBatch"),a._wrap(d,"eachBatch",a._getConsumerEachBatchPatch())),b.call(this,d)}}_getConsumerEachMessagePatch(){let a=this;return b=>function(...c){let e=c[0],f=d.propagation.extract(d.ROOT_CONTEXT,e.message.headers,h.bufferTextMapGetter),g=a._startConsumerSpan({topic:e.topic,message:e.message,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,ctx:f,attributes:{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)}}),j=[l(a._processDuration,Date.now(),{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)}),k(a._consumedMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)})],m=d.context.with(d.trace.setSpan(f,g),()=>b.apply(this,c));return a._endSpansOnPromise([g],j,m)}}_getConsumerEachBatchPatch(){return a=>{let b=this;return function(...c){let e=c[0],f=b._startConsumerSpan({topic:e.batch.topic,message:void 0,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,ctx:d.ROOT_CONTEXT,attributes:{[i.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]:e.batch.messages.length,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}});return d.context.with(d.trace.setSpan(d.context.active(),f),()=>{let g=Date.now(),j=[],m=[k(b._consumedMessages,e.batch.messages.length,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.batch.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)})];e.batch.messages.forEach(a=>{let c,f=d.propagation.extract(d.ROOT_CONTEXT,a.headers,h.bufferTextMapGetter),k=d.trace.getSpan(f)?.spanContext();k&&(c={context:k}),j.push(b._startConsumerSpan({topic:e.batch.topic,message:a,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,link:c,attributes:{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}})),m.push(l(b._processDuration,g,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.batch.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}))});let n=a.apply(this,c);return j.unshift(f),b._endSpansOnPromise(j,m,n)})}}}_getProducerTransactionPatch(){let a=this;return b=>function(...c){let e=a.tracer.startSpan("transaction"),f=b.apply(this,c);return f.then(b=>{let c=b.send;b.send=function(...b){return d.context.with(d.trace.setSpan(d.context.active(),e),()=>a._getSendPatch()(c).apply(this,b).catch(a=>{throw e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),a}))};let f=b.sendBatch;b.sendBatch=function(...b){return d.context.with(d.trace.setSpan(d.context.active(),e),()=>a._getSendBatchPatch()(f).apply(this,b).catch(a=>{throw e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),a}))};let g=b.commit;b.commit=function(...b){let c=g.apply(this,b).then(()=>{e.setStatus({code:d.SpanStatusCode.OK})});return a._endSpansOnPromise([e],[],c)};let h=b.abort;b.abort=function(...b){let c=h.apply(this,b);return a._endSpansOnPromise([e],[],c)}}).catch(a=>{e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),e.end()}),f}}_getSendBatchPatch(){let a=this;return b=>function(...c){let d=c[0].topicMessages||[],e=[],f=[];d.forEach(b=>{b.messages.forEach(c=>{e.push(a._startProducerSpan(b.topic,c)),f.push(k(a._sentMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_DESTINATION_NAME]:b.topic,...void 0!==c.partition?{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(c.partition)}:{}}))})});let g=b.apply(this,c);return a._endSpansOnPromise(e,f,g)}}_getSendPatch(){let a=this;return b=>function(...c){let d=c[0],e=d.messages.map(b=>a._startProducerSpan(d.topic,b)),f=d.messages.map(b=>k(a._sentMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_DESTINATION_NAME]:d.topic,...void 0!==b.partition?{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(b.partition)}:{}})),g=b.apply(this,c);return a._endSpansOnPromise(e,f,g)}}_endSpansOnPromise(a,b,c){return Promise.resolve(c).then(a=>(b.forEach(a=>a()),a)).catch(c=>{let e,g=f.ERROR_TYPE_VALUE_OTHER;throw"string"==typeof c||void 0===c?e=c:"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,"message")&&(e=c.message,g=c.constructor.name),b.forEach(a=>a(g)),a.forEach(a=>{a.setAttribute(f.ATTR_ERROR_TYPE,g),a.setStatus({code:d.SpanStatusCode.ERROR,message:e})}),c}).finally(()=>{a.forEach(a=>a.end())})}_startConsumerSpan({topic:a,message:b,operationType:c,ctx:f,link:g,attributes:h}){let j=c===i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?"poll":c,k=this.tracer.startSpan(`${j} ${a}`,{kind:c===i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?d.SpanKind.CLIENT:d.SpanKind.CONSUMER,attributes:{...h,[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_DESTINATION_NAME]:a,[i.ATTR_MESSAGING_OPERATION_TYPE]:c,[i.ATTR_MESSAGING_OPERATION_NAME]:j,[i.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:b?.key?String(b.key):void 0,[i.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!b?.key&&null===b.value||void 0,[i.ATTR_MESSAGING_KAFKA_OFFSET]:b?.offset},links:g?[g]:[]},f),{consumerHook:l}=this.getConfig();return l&&b&&(0,e.safeExecuteInTheMiddle)(()=>l(k,{topic:a,message:b}),a=>{a&&this._diag.error("consumerHook error",a)},!0),k}_startProducerSpan(a,b){let c=this.tracer.startSpan(`send ${a}`,{kind:d.SpanKind.PRODUCER,attributes:{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_DESTINATION_NAME]:a,[i.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:b.key?String(b.key):void 0,[i.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!b.key&&null===b.value||void 0,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:void 0!==b.partition?String(b.partition):void 0,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_OPERATION_TYPE]:i.MESSAGING_OPERATION_TYPE_VALUE_SEND}});b.headers=b.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),c),b.headers);let{producerHook:f}=this.getConfig();return f&&(0,e.safeExecuteInTheMiddle)(()=>f(c,{topic:a,message:b}),a=>{a&&this._diag.error("producerHook error",a)},!0),c}}c.KafkaJsInstrumentation=n},236140,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KafkaJsInstrumentation=void 0;var d=a.r(277460);Object.defineProperty(c,"KafkaJsInstrumentation",{enumerable:!0,get:function(){return d.KafkaJsInstrumentation}})},142670,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(236140),e=a.r(187845),f=a.r(309569),g="Kafka",h=f.generateInstrumentOnce(g,()=>new d.KafkaJsInstrumentation({consumerHook(a){f.addOriginToSpan(a,"auto.kafkajs.otel.consumer")},producerHook(a){f.addOriginToSpan(a,"auto.kafkajs.otel.producer")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentKafka=h,c.kafkaIntegration=i},419633,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-lru-memoizer"},60335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.LruMemoizerInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(419633);class g extends e.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition("lru-memoizer",[">=1.3 <4"],a=>{let b=function(){let b=a.apply(this,arguments);return function(){let a=[...arguments],c=a.pop(),e="function"==typeof c?d.context.bind(d.context.active(),c):c;return a.push(e),b.apply(this,a)}};return b.sync=a.sync,b},void 0)]}}c.LruMemoizerInstrumentation=g},301936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.LruMemoizerInstrumentation=void 0;var d=a.r(60335);Object.defineProperty(c,"LruMemoizerInstrumentation",{enumerable:!0,get:function(){return d.LruMemoizerInstrumentation}})},268935,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(301936),e=a.r(187845),f=a.r(309569),g="LruMemoizer",h=f.generateInstrumentOnce(g,()=>new d.LruMemoizerInstrumentation),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentLruMemoizer=h,c.lruMemoizerIntegration=i},337045,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MONGODB=c.DB_SYSTEM_NAME_VALUE_MONGODB=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=c.ATTR_DB_MONGODB_COLLECTION=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb",c.DB_SYSTEM_VALUE_MONGODB="mongodb",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},848295,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=void 0,(d=c.MongodbCommandType||(c.MongodbCommandType={})).CREATE_INDEXES="createIndexes",d.FIND_AND_MODIFY="findAndModify",d.IS_MASTER="isMaster",d.COUNT="count",d.AGGREGATE="aggregate",d.UNKNOWN="unknown"},515299,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.67.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongodb"},115451,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongoDBInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(337045),h=a.r(848295),i=a.r(515299),j={requireParentSpan:!0};class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,{...j,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...j,...a})}_updateMetricInstruments(){this._connectionsUsage=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsage?.add(a,{"pool.name":b,state:c})}init(){let{v3PatchConnection:a,v3UnpatchConnection:b}=this._getV3ConnectionPatches(),{v4PatchConnect:c,v4UnpatchConnect:d}=this._getV4ConnectPatches(),{v4PatchConnectionCallback:f,v4PatchConnectionPromise:g,v4UnpatchConnection:h}=this._getV4ConnectionPatches(),{v4PatchConnectionPool:i,v4UnpatchConnectionPool:j}=this._getV4ConnectionPoolPatches(),{v4PatchSessions:k,v4UnpatchSessions:l}=this._getV4SessionsPatches();return[new e.InstrumentationNodeModuleDefinition("mongodb",[">=3.3.0 <4"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/core/wireprotocol/index.js",[">=3.3.0 <4"],a,b)]),new e.InstrumentationNodeModuleDefinition("mongodb",[">=4.0.0 <8"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=4.0.0 <6.4"],f,h),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=6.4.0 <8"],g,h),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection_pool.js",[">=4.0.0 <6.4"],i,j),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connect.js",[">=4.0.0 <8"],c,d),new e.InstrumentationNodeModuleFile("mongodb/lib/sessions.js",[">=4.0.0 <8"],k,l)])]}_getV3ConnectionPatches(){return{v3PatchConnection:a=>((0,e.isWrapped)(a.insert)&&this._unwrap(a,"insert"),this._wrap(a,"insert",this._getV3PatchOperation("insert")),(0,e.isWrapped)(a.remove)&&this._unwrap(a,"remove"),this._wrap(a,"remove",this._getV3PatchOperation("remove")),(0,e.isWrapped)(a.update)&&this._unwrap(a,"update"),this._wrap(a,"update",this._getV3PatchOperation("update")),(0,e.isWrapped)(a.command)&&this._unwrap(a,"command"),this._wrap(a,"command",this._getV3PatchCommand()),(0,e.isWrapped)(a.query)&&this._unwrap(a,"query"),this._wrap(a,"query",this._getV3PatchFind()),(0,e.isWrapped)(a.getMore)&&this._unwrap(a,"getMore"),this._wrap(a,"getMore",this._getV3PatchCursor()),a),v3UnpatchConnection:a=>{void 0!==a&&(this._unwrap(a,"insert"),this._unwrap(a,"remove"),this._unwrap(a,"update"),this._unwrap(a,"command"),this._unwrap(a,"query"),this._unwrap(a,"getMore"))}}}_getV4SessionsPatches(){return{v4PatchSessions:a=>((0,e.isWrapped)(a.acquire)&&this._unwrap(a,"acquire"),this._wrap(a.ServerSessionPool.prototype,"acquire",this._getV4AcquireCommand()),(0,e.isWrapped)(a.release)&&this._unwrap(a,"release"),this._wrap(a.ServerSessionPool.prototype,"release",this._getV4ReleaseCommand()),a),v4UnpatchSessions:a=>{void 0!==a&&((0,e.isWrapped)(a.acquire)&&this._unwrap(a,"acquire"),(0,e.isWrapped)(a.release)&&this._unwrap(a,"release"))}}}_getV4AcquireCommand(){let a=this;return b=>function(){let c=this.sessions.length,d=b.call(this),e=this.sessions.length;return c===e?a._connCountAdd(1,a._poolName,"used"):c-1===e&&(a._connCountAdd(-1,a._poolName,"idle"),a._connCountAdd(1,a._poolName,"used")),d}}_getV4ReleaseCommand(){let a=this;return b=>function(c){let d=b.call(this,c);return a._connCountAdd(-1,a._poolName,"used"),a._connCountAdd(1,a._poolName,"idle"),d}}_getV4ConnectionPoolPatches(){return{v4PatchConnectionPool:a=>{let b=a.ConnectionPool.prototype;return(0,e.isWrapped)(b.checkOut)&&this._unwrap(b,"checkOut"),this._wrap(b,"checkOut",this._getV4ConnectionPoolCheckOut()),a},v4UnpatchConnectionPool:a=>{void 0!==a&&this._unwrap(a.ConnectionPool.prototype,"checkOut")}}}_getV4ConnectPatches(){return{v4PatchConnect:a=>((0,e.isWrapped)(a.connect)&&this._unwrap(a,"connect"),this._wrap(a,"connect",this._getV4ConnectCommand()),a),v4UnpatchConnect:a=>{void 0!==a&&this._unwrap(a,"connect")}}}_getV4ConnectionPoolCheckOut(){return a=>function(b){let c=d.context.bind(d.context.active(),b);return a.call(this,c)}}_getV4ConnectCommand(){let a=this;return b=>function(c,d){if(1===b.length){let d=b.call(this,c);return d&&"function"==typeof d.then&&d.then(()=>a.setPoolName(c),()=>void 0),d}return b.call(this,c,function(b,e){b||!e||a.setPoolName(c),d(b,e)})}}_getV4ConnectionPatches(){return{v4PatchConnectionCallback:a=>((0,e.isWrapped)(a.Connection.prototype.command)&&this._unwrap(a.Connection.prototype,"command"),this._wrap(a.Connection.prototype,"command",this._getV4PatchCommandCallback()),a),v4PatchConnectionPromise:a=>((0,e.isWrapped)(a.Connection.prototype.command)&&this._unwrap(a.Connection.prototype,"command"),this._wrap(a.Connection.prototype,"command",this._getV4PatchCommandPromise()),a),v4UnpatchConnection:a=>{void 0!==a&&this._unwrap(a.Connection.prototype,"command")}}}_getV3PatchOperation(a){let b=this;return c=>function(e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=b._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l||"object"!=typeof g)if("function"==typeof h)return c.call(this,e,f,g,h);else return c.call(this,e,f,g,h,i);let m=b._getV3SpanAttributes(f,e,g[0],a),n=b._spanNameFromAttrs(m),o=b.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=b._patchEnd(o,l);return"function"==typeof h?c.call(this,e,f,g,p):c.call(this,e,f,g,h,p)}}_getV3PatchCommand(){let a=this;return b=>function(c,e,f,g,i){let j=d.trace.getSpan(d.context.active()),l=a._checkSkipInstrumentation(j),m="function"==typeof g?g:i;if(l||"function"!=typeof m||"object"!=typeof f)if("function"==typeof g)return b.call(this,c,e,f,g);else return b.call(this,c,e,f,g,i);let n=k._getCommandType(f),o=n===h.MongodbCommandType.UNKNOWN?void 0:n,p=a._getV3SpanAttributes(e,c,f,o),q=a._spanNameFromAttrs(p),r=a.tracer.startSpan(q,{kind:d.SpanKind.CLIENT,attributes:p}),s=a._patchEnd(r,m);return"function"==typeof g?b.call(this,c,e,f,s):b.call(this,c,e,f,g,s)}}_getV4PatchCommandCallback(){let a=this;return b=>function(c,e,f,g){let h,i=d.trace.getSpan(d.context.active()),j=a._checkSkipInstrumentation(i),k=Object.keys(e)[0];if("object"!=typeof e||e.ismaster||e.hello)return b.call(this,c,e,f,g);if(!j){let b=a._getV4SpanAttributes(this,c,e,k),f=a._spanNameFromAttrs(b);h=a.tracer.startSpan(f,{kind:d.SpanKind.CLIENT,attributes:b})}let l=a._patchEnd(h,g,this.id,k);return b.call(this,c,e,f,l)}}_getV4PatchCommandPromise(){let a=this;return b=>function(...c){let e,[f,g]=c,h=d.trace.getSpan(d.context.active()),i=a._checkSkipInstrumentation(h),j=Object.keys(g)[0];if("object"!=typeof g||g.ismaster||g.hello)return b.apply(this,c);if(!i){let b=a._getV4SpanAttributes(this,f,g,j),c=a._spanNameFromAttrs(b);e=a.tracer.startSpan(c,{kind:d.SpanKind.CLIENT,attributes:b})}let k=a._patchEnd(e,()=>void 0,this.id,j),l=b.apply(this,c);return l.then(a=>k(null,a),a=>k(a)),l}}_getV3PatchFind(){let a=this;return b=>function(c,e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=a._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l||"object"!=typeof f)if("function"==typeof h)return b.call(this,c,e,f,g,h);else return b.call(this,c,e,f,g,h,i);let m=a._getV3SpanAttributes(e,c,f,"find"),n=a._spanNameFromAttrs(m),o=a.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=a._patchEnd(o,l);return"function"==typeof h?b.call(this,c,e,f,g,p):b.call(this,c,e,f,g,h,p)}}_getV3PatchCursor(){let a=this;return b=>function(c,e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=a._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l)if("function"==typeof h)return b.call(this,c,e,f,g,h);else return b.call(this,c,e,f,g,h,i);let m=a._getV3SpanAttributes(e,c,f.cmd,"getMore"),n=a._spanNameFromAttrs(m),o=a.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=a._patchEnd(o,l);return"function"==typeof h?b.call(this,c,e,f,g,p):b.call(this,c,e,f,g,h,p)}}static _getCommandType(a){if(void 0!==a.createIndexes)return h.MongodbCommandType.CREATE_INDEXES;if(void 0!==a.findandmodify)return h.MongodbCommandType.FIND_AND_MODIFY;if(void 0!==a.ismaster)return h.MongodbCommandType.IS_MASTER;if(void 0!==a.count)return h.MongodbCommandType.COUNT;if(void 0!==a.aggregate)return h.MongodbCommandType.AGGREGATE;else return h.MongodbCommandType.UNKNOWN}_getV4SpanAttributes(a,b,c,d){let e,f,g;if(a){let b="string"==typeof a.address?a.address.split(":"):"";2===b.length&&(e=b[0],f=b[1])}return g=c?.documents&&c.documents[0]?c.documents[0]:c?.cursors?c.cursors:c,this._getSpanAttributes(b.db,b.collection,e,f,g,d)}_getV3SpanAttributes(a,b,c,d){let e,f;if(b&&b.s&&(e=b.s.options?.host??b.s.host,f=(b.s.options?.port??b.s.port)?.toString(),null==e||null==f)){let a=b.description?.address;if(a){let b=a.split(":");e=b[0],f=b[1]}}let[g,h]=a.toString().split("."),i=c?.query??c?.q??c;return this._getSpanAttributes(g,h,e,f,i,d)}_getSpanAttributes(a,b,c,d,h,i){let j={};if(this._dbSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MONGODB,j[g.ATTR_DB_NAME]=a,j[g.ATTR_DB_MONGODB_COLLECTION]=b,j[g.ATTR_DB_OPERATION]=i,j[g.ATTR_DB_CONNECTION_STRING]=`mongodb://${c}:${d}/${a}`),this._dbSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MONGODB,j[f.ATTR_DB_NAMESPACE]=a,j[f.ATTR_DB_OPERATION_NAME]=i,j[f.ATTR_DB_COLLECTION_NAME]=b),c&&d){this._netSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_NET_PEER_NAME]=c),this._netSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_SERVER_ADDRESS]=c);let a=parseInt(d,10);!isNaN(a)&&(this._netSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_NET_PEER_PORT]=a),this._netSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_SERVER_PORT]=a))}if(h){let{dbStatementSerializer:a}=this.getConfig(),b="function"==typeof a?a:this._defaultDbStatementSerializer.bind(this);(0,e.safeExecuteInTheMiddle)(()=>{let a=b(h);this._dbSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_DB_STATEMENT]=a),this._dbSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_DB_QUERY_TEXT]=a)},a=>{a&&this._diag.error("Error running dbStatementSerializer hook",a)},!0)}return j}_spanNameFromAttrs(a){return this._dbSemconvStability&e.SemconvStability.STABLE?[a[f.ATTR_DB_OPERATION_NAME],a[f.ATTR_DB_COLLECTION_NAME]].filter(a=>a).join(" ")||g.DB_SYSTEM_NAME_VALUE_MONGODB:`mongodb.${a[g.ATTR_DB_OPERATION]||"command"}`}_getDefaultDbStatementReplacer(){let a=new WeakSet;return(b,c)=>"object"==typeof c&&c?a.has(c)?"[Circular]":(a.add(c),c):"?"}_defaultDbStatementSerializer(a){let{enhancedDatabaseReporting:b}=this.getConfig();return b?JSON.stringify(a):JSON.stringify(a,this._getDefaultDbStatementReplacer())}_handleExecutionResult(a,b){let{responseHook:c}=this.getConfig();"function"==typeof c&&(0,e.safeExecuteInTheMiddle)(()=>{c(a,{data:b})},a=>{a&&this._diag.error("Error running response hook",a)},!0)}_patchEnd(a,b,c,e){let f=d.context.active(),g=this,h=!1;return function(...c){if(!h){h=!0;let b=c[0];if(a){if(b instanceof Error)a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message});else{let b=c[1];g._handleExecutionResult(a,b)}a.end()}"endSessions"===e&&g._connCountAdd(-1,g._poolName,"idle")}return d.context.with(f,()=>b.apply(this,c))}}setPoolName(a){let b=a.hostAddress?.host,c=a.hostAddress?.port,d=a.dbName,e=`mongodb://${b}:${c}/${d}`;this._poolName=e}_checkSkipInstrumentation(a){return!0===this.getConfig().requireParentSpan&&void 0===a}}c.MongoDBInstrumentation=k},440391,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=void 0,(d=c.MongodbCommandType||(c.MongodbCommandType={})).CREATE_INDEXES="createIndexes",d.FIND_AND_MODIFY="findAndModify",d.IS_MASTER="isMaster",d.COUNT="count",d.UNKNOWN="unknown"},767835,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=c.MongoDBInstrumentation=void 0;var d=a.r(115451);Object.defineProperty(c,"MongoDBInstrumentation",{enumerable:!0,get:function(){return d.MongoDBInstrumentation}});var e=a.r(440391);Object.defineProperty(c,"MongodbCommandType",{enumerable:!0,get:function(){return e.MongodbCommandType}})},228663,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(767835),e=a.r(187845),f=a.r(309569),g="Mongo",h=f.generateInstrumentOnce(g,()=>new d.MongoDBInstrumentation({dbStatementSerializer:i,responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongo")}}));function i(a){return JSON.stringify(function a(b){var c,d;let e;return Array.isArray(b)?b.map(b=>a(b)):"object"!=typeof(c=b)||null===c||(d=c,e=!1,"u">typeof Buffer&&(e=Buffer.isBuffer(d)),e)?"?":Object.entries(b).map(([b,c])=>[b,a(c)]).reduce((a,b)=>(Array.isArray(b)&&(a[b[0]]=b[1]),a),{})}(a))}let j=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c._defaultDbStatementSerializer=i,c.instrumentMongo=h,c.mongoIntegration=j},442679,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_MONGODB=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=c.ATTR_DB_MONGODB_COLLECTION=void 0,c.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb"},306195,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.handleCallbackResponse=c.handlePromiseResponse=c.getAttributesFromCollection=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(442679),g=a.r(357122);function h(a,b={}){a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:`${b.message} ${b.code?` -Mongoose Error Code: ${b.code}`:""}`})}function i(a,b,c,f){c&&(0,e.safeExecuteInTheMiddle)(()=>c(a,{moduleVersion:f,response:b}),a=>{a&&d.diag.error("mongoose instrumentation: responseHook error",a)},!0)}c.getAttributesFromCollection=function(a,b,c){let d={};return b&e.SemconvStability.OLD&&(d[f.ATTR_DB_MONGODB_COLLECTION]=a.name,d[f.ATTR_DB_NAME]=a.conn.name,d[f.ATTR_DB_USER]=a.conn.user),b&e.SemconvStability.STABLE&&(d[g.ATTR_DB_COLLECTION_NAME]=a.name,d[g.ATTR_DB_NAMESPACE]=a.conn.name),c&e.SemconvStability.OLD&&(d[f.ATTR_NET_PEER_NAME]=a.conn.host,d[f.ATTR_NET_PEER_PORT]=a.conn.port),c&e.SemconvStability.STABLE&&(d[g.ATTR_SERVER_ADDRESS]=a.conn.host,d[g.ATTR_SERVER_PORT]=a.conn.port),d},c.handlePromiseResponse=function(a,b,c,d){return a instanceof Promise?a.then(a=>(i(b,a,c,d),a)).catch(a=>{throw h(b,a),a}).finally(()=>b.end()):(i(b,a,c,d),b.end(),a)},c.handleCallbackResponse=function(a,b,c,d,e,f,g){let j=0;return 2===e.length?j=1:3===e.length&&(j=2),e[j]=(b,c)=>(b?h(d,b):i(d,c,f,g),d.end(),a(b,c)),b.apply(c,e)}},464532,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},625098,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=c._ALREADY_INSTRUMENTED=c._STORED_PARENT_SPAN=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(306195),g=a.r(167300),h=a.r(464532),i=a.r(442679),j=a.r(357122),k=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],l=["remove","count","findOneAndRemove",...k],m=["count","findOneAndRemove",...k],n=[...k];function o(a){return a?a.startsWith("6.")||a.startsWith("5.")?l:a.startsWith("7.")?m:n:k}function p(a){return a&&(a.startsWith("5.")||a.startsWith("6."))||!1}function q(a){return!!a&&!!a.startsWith("8.")&&parseInt(a.split(".")[1],10)>=21}c._STORED_PARENT_SPAN=Symbol("stored-parent-span"),c._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class r extends g.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,g.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new g.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a;return this._wrap(c.Model.prototype,"save",this.patchOnModelMethods("save",b)),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._wrap(c.Model.prototype,"remove",this.patchOnModelMethods("remove",b)),q(b)&&(this._wrap(c.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",b)),this._wrap(c.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",b))),this._wrap(c.Query.prototype,"exec",this.patchQueryExec(b)),this._wrap(c.Aggregate.prototype,"exec",this.patchAggregateExec(b)),o(b).forEach(a=>{this._wrap(c.Query.prototype,a,this.patchAndCaptureSpanContext(a))}),this._wrap(c.Model,"aggregate",this.patchModelAggregate()),this._wrap(c.Model,"insertMany",this.patchModelStatic("insertMany",b)),this._wrap(c.Model,"bulkWrite",this.patchModelStatic("bulkWrite",b)),c}unpatch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a,d=o(b);this._unwrap(c.Model.prototype,"save"),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._unwrap(c.Model.prototype,"remove"),q(b)&&(this._unwrap(c.Model.prototype,"updateOne"),this._unwrap(c.Model.prototype,"deleteOne")),this._unwrap(c.Query.prototype,"exec"),this._unwrap(c.Aggregate.prototype,"exec"),d.forEach(a=>{this._unwrap(c.Query.prototype,a)}),this._unwrap(c.Model,"aggregate"),this._unwrap(c.Model,"insertMany"),this._unwrap(c.Model,"bulkWrite")}patchAggregateExec(a){let b=this;return e=>function(f){if(b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l("aggregate",{options:this.options,aggregatePipeline:this._pipeline});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this._model.collection,this._model?.modelName,"aggregate",k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchQueryExec(a){let b=this;return e=>function(f){if(this[c._ALREADY_INSTRUMENTED]||b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this.mongooseCollection,this.model.modelName,this.op,k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchOnModelMethods(a,b){let c=this;return e=>function(f,h){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let k={document:this};!f||f instanceof Function||(k.options=f);let l={},{dbStatementSerializer:m}=c.getConfig();if(m){let b=m(a,k);c._dbSemconvStability&g.SemconvStability.OLD&&(l[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(l[j.ATTR_DB_QUERY_TEXT]=b)}let n=c._startSpan(this.constructor.collection,this.constructor.modelName,a,l);return f instanceof Function&&(h=f,f=void 0),c._handleResponse(n,e,this,arguments,h,b)}}_patchDocumentUpdateMethods(a,b){let e=this;return f=>function(h,k,l){if(e.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return f.apply(this,arguments);let m=l,n=h,o=k;"function"==typeof h?(m=h,n=void 0,o=void 0):"function"==typeof k&&(m=k,o=void 0);let p={},q=e.getConfig().dbStatementSerializer;if(q){let b=q(a,{condition:{_id:this._id},updates:n,options:o});e._dbSemconvStability&g.SemconvStability.OLD&&(p[i.ATTR_DB_STATEMENT]=b),e._dbSemconvStability&g.SemconvStability.STABLE&&(p[j.ATTR_DB_QUERY_TEXT]=b)}let r=e._startSpan(this.constructor.collection,this.constructor.modelName,a,p),s=e._handleResponse(r,f,this,arguments,m,b);return s&&"object"==typeof s&&(s[c._ALREADY_INSTRUMENTED]=!0),s}}patchModelStatic(a,b){let c=this;return e=>function(f,h,k){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);"function"==typeof h&&(k=h,h=void 0);let l={};switch(a){case"insertMany":l.documents=f;break;case"bulkWrite":l.operations=f;break;default:l.document=f}void 0!==h&&(l.options=h);let m={},{dbStatementSerializer:n}=c.getConfig();if(n){let b=n(a,l);c._dbSemconvStability&g.SemconvStability.OLD&&(m[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(m[j.ATTR_DB_QUERY_TEXT]=b)}let o=c._startSpan(this.collection,this.modelName,a,m);return c._handleResponse(o,e,this,arguments,k,b)}}patchModelAggregate(){let a=this;return b=>function(){let e=d.trace.getSpan(d.context.active()),f=a._callOriginalFunction(()=>b.apply(this,arguments));return f&&(f[c._STORED_PARENT_SPAN]=e),f}}patchAndCaptureSpanContext(a){let b=this;return a=>function(){return this[c._STORED_PARENT_SPAN]=d.trace.getSpan(d.context.active()),b._callOriginalFunction(()=>a.apply(this,arguments))}}_startSpan(a,b,c,e,h){let k={...e,...(0,f.getAttributesFromCollection)(a,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_OPERATION]=c,k[i.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_OPERATION_NAME]=c,k[j.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MONGODB);let l=this._dbSemconvStability&g.SemconvStability.STABLE?`${c} ${a.name}`:`mongoose.${b}.${c}`;return this.tracer.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:k},h?d.trace.setSpan(d.context.active(),h):void 0)}_handleResponse(a,b,c,d,e,g){let h=this;if(e instanceof Function)return h._callOriginalFunction(()=>(0,f.handleCallbackResponse)(e,b,c,a,d,h.getConfig().responseHook,g));{let e=h._callOriginalFunction(()=>b.apply(c,d));return(0,f.handlePromiseResponse)(e,a,h.getConfig().responseHook,g)}}_callOriginalFunction(a){return this.getConfig().suppressInternalInstrumentation?d.context.with((0,e.suppressTracing)(d.context.active()),a):a()}}c.MongooseInstrumentation=r},969069,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=void 0;var d=a.r(625098);Object.defineProperty(c,"MongooseInstrumentation",{enumerable:!0,get:function(){return d.MongooseInstrumentation}})},720382,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(969069),e=a.r(187845),f=a.r(309569),g="Mongoose",h=f.generateInstrumentOnce(g,()=>new d.MongooseInstrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongoose")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMongoose=h,c.mongooseIntegration=i},859284,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},217073,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(c.AttributeNames||(c.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},839212,(a,b,c)=>{"use strict";function d(a){return a?`[${a.toString()}]`:""}Object.defineProperty(c,"__esModule",{value:!0}),c.getPoolNameOld=c.arrayStringifyHelper=c.getSpanName=c.getDbValues=c.getDbQueryText=c.getJDBCString=c.getConfig=void 0,c.getConfig=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}},c.getJDBCString=function(a,b,c){let d=`jdbc:mysql://${a||"localhost"}`;return"number"==typeof b&&(d+=`:${b}`),"string"==typeof c&&(d+=`/${c}`),d},c.getDbQueryText=function(a){return"string"==typeof a?a:a.sql},c.getDbValues=function(a,b){return"string"==typeof a?d(b):d(b||a.values)},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.arrayStringifyHelper=d,c.getPoolNameOld=function(a){let b=a.config.connectionConfig,c="";return c+=b.host?`host: '${b.host}', `:"",c+=b.port?`port: ${b.port}, `:"",c+=b.database?`database: '${b.database}', `:"",c+=b.user?`user: '${b.user}'`:"",b.user||(c=c.substring(0,c.length-2)),c.trim()}},922059,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},101052,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(859284),h=a.r(217073),i=a.r(839212),j=a.r(922059);class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsageOld?.add(a,{state:c,name:b})}init(){return[new e.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],a=>((0,e.isWrapped)(a.createConnection)&&this._unwrap(a,"createConnection"),this._wrap(a,"createConnection",this._patchCreateConnection()),(0,e.isWrapped)(a.createPool)&&this._unwrap(a,"createPool"),this._wrap(a,"createPool",this._patchCreatePool()),(0,e.isWrapped)(a.createPoolCluster)&&this._unwrap(a,"createPoolCluster"),this._wrap(a,"createPoolCluster",this._patchCreatePoolCluster()),a),a=>{void 0!==a&&(this._unwrap(a,"createConnection"),this._unwrap(a,"createPool"),this._unwrap(a,"createPoolCluster"))})]}_patchCreateConnection(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),d}}}_patchCreatePool(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"end",b._patchPoolEnd(d)),b._setPoolCallbacks(d,""),d}}}_patchPoolEnd(a){return b=>{let c=this;return function(d){let e=a._allConnections.length,f=a._freeConnections.length,g=(0,i.getPoolNameOld)(a);c._connCountAdd(-(e-f),g,"used"),c._connCountAdd(-f,g,"idle"),b.apply(a,arguments)}}}_patchCreatePoolCluster(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"add",b._patchAdd(d)),d}}}_patchAdd(a){return b=>{let c=this;return function(d,e){if(!c._enabled)return c._unwrap(a,"add"),b.apply(a,arguments);b.apply(a,arguments);let f=a._nodes;if(f){let b=f["object"==typeof d?"CLUSTER::"+a._lastId:String(d)].pool;c._setPoolCallbacks(b,d)}}}}_patchGetConnection(a){return b=>{let c=this;return function(d,e,f){if(!c._enabled)return c._unwrap(a,"getConnection"),b.apply(a,arguments);if(1==arguments.length&&"function"==typeof d){let e=c._getConnectionCallbackPatchFn(d);return b.call(a,e)}if(2==arguments.length&&"function"==typeof e){let f=c._getConnectionCallbackPatchFn(e);return b.call(a,d,f)}if(3==arguments.length&&"function"==typeof f){let g=c._getConnectionCallbackPatchFn(f);return b.call(a,d,e,g)}return b.apply(a,arguments)}}}_getConnectionCallbackPatchFn(a){let b=this,c=d.context.active();return function(f,g){g&&!(0,e.isWrapped)(g.query)&&b._wrap(g,"query",b._patchQuery(g)),"function"==typeof a&&d.context.with(c,a,this,f,g)}}_patchQuery(a){return b=>{let c=this;return function(j,k,l){if(!c._enabled)return c._unwrap(a,"query"),b.apply(a,arguments);let m={},{host:n,port:o,database:p,user:q}=(0,i.getConfig)(a.config),r=parseInt(o,10),s=(0,i.getDbQueryText)(j);c._dbSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MYSQL,m[g.ATTR_DB_CONNECTION_STRING]=(0,i.getJDBCString)(n,o,p),m[g.ATTR_DB_NAME]=p,m[g.ATTR_DB_USER]=q,m[g.ATTR_DB_STATEMENT]=s),c._dbSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_DB_SYSTEM_NAME]=f.DB_SYSTEM_NAME_VALUE_MYSQL,m[f.ATTR_DB_NAMESPACE]=p,m[f.ATTR_DB_QUERY_TEXT]=s),c._netSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_NET_PEER_NAME]=n,isNaN(r)||(m[g.ATTR_NET_PEER_PORT]=r)),c._netSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_SERVER_ADDRESS]=n,isNaN(r)||(m[f.ATTR_SERVER_PORT]=r));let t=c.tracer.startSpan((0,i.getSpanName)(j),{kind:d.SpanKind.CLIENT,attributes:m});if(c.getConfig().enhancedDatabaseReporting){let a;Array.isArray(k)?a=k:arguments[2]&&(a=[k]),t.setAttribute(h.AttributeNames.MYSQL_VALUES,(0,i.getDbValues)(j,a))}let u=Array.from(arguments).findIndex(a=>"function"==typeof a),v=d.context.active();if(-1!==u)return c._wrap(arguments,u,c._patchCallbackQuery(t,v)),d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));{let c=d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));return d.context.bind(v,c),c.on("error",a=>t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message})).on("end",()=>{t.end()})}}}}_patchCallbackQuery(a,b){return c=>function(e,f,g){return e&&a.setStatus({code:d.SpanStatusCode.ERROR,message:e.message}),a.end(),d.context.with(b,()=>c(...arguments))}}_setPoolCallbacks(a,b){let c=b||(0,i.getPoolNameOld)(a);a.on("connection",a=>{this._connCountAdd(1,c,"idle")}),a.on("acquire",a=>{this._connCountAdd(-1,c,"idle"),this._connCountAdd(1,c,"used")}),a.on("release",a=>{this._connCountAdd(1,c,"idle"),this._connCountAdd(-1,c,"used")})}}c.MySQLInstrumentation=k},992288,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;var d=a.r(101052);Object.defineProperty(c,"MySQLInstrumentation",{enumerable:!0,get:function(){return d.MySQLInstrumentation}})},370840,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(992288),e=a.r(187845),f=a.r(309569),g="Mysql",h=f.generateInstrumentOnce(g,()=>new d.MySQLInstrumentation({})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql=h,c.mysqlIntegration=i},246060,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql"},481992,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.addSqlCommenterComment=void 0;let d=a.r(832528),e=a.r(498562);c.addSqlCommenterComment=function(a,b){let c;if("string"!=typeof b||0===b.length||(c=b.indexOf("--"))>=0||!(0>b.indexOf("/*"))&&c{let b=encodeURIComponent(g[a]).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`);return`${a}='${b}'`}).join(",");return`${b} /*${i}*/`}},762015,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getConnectionPrototypeToInstrument=c.once=c.getSpanName=c.getQueryText=c.getConnectionAttributes=void 0;let d=a.r(246060),e=a.r(167300),f=a.r(357122);function g(a){return a.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}c.getConnectionAttributes=function(a,b,c){var g,h,i;let j,{host:k,port:l,database:m,user:n}=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}}(a),o={};b&e.SemconvStability.OLD&&(o[d.ATTR_DB_CONNECTION_STRING]=(g=k,h=l,i=m,j=`jdbc:mysql://${g||"localhost"}`,"number"==typeof h&&(j+=`:${h}`),"string"==typeof i&&(j+=`/${i}`),j),o[d.ATTR_DB_NAME]=m,o[d.ATTR_DB_USER]=n),b&e.SemconvStability.STABLE&&(o[f.ATTR_DB_NAMESPACE]=m);let p=parseInt(l,10);return c&e.SemconvStability.OLD&&(o[d.ATTR_NET_PEER_NAME]=k,isNaN(p)||(o[d.ATTR_NET_PEER_PORT]=p)),c&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=k,isNaN(p)||(o[f.ATTR_SERVER_PORT]=p)),o},c.getQueryText=function(a,b,c,d=!1,e=g){let[f,h]="string"==typeof a?[a,c]:[a.sql,"values"in a?c||a.values:c];try{if(d)return e(f);if(b&&h)return b(f,h);return f}catch(a){return"Could not determine the query due to an error in masking or formatting"}},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}},c.getConnectionPrototypeToInstrument=function(a){let b=a.prototype,c=Object.getPrototypeOf(b);return"function"==typeof c?.query&&"function"==typeof c?.execute?c:b}},729087,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},980415,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(246060),g=a.r(481992),h=a.r(762015),i=a.r(729087),j=a.r(357122),k=[">=1.4.2 <4"];class l extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let a;function b(b){!a&&b.format&&(a=b.format)}let c=b=>{(0,e.isWrapped)(b.query)&&this._unwrap(b,"query"),this._wrap(b,"query",this._patchQuery(a,!1)),(0,e.isWrapped)(b.execute)&&this._unwrap(b,"execute"),this._wrap(b,"execute",this._patchQuery(a,!0))},d=a=>{this._unwrap(a,"query"),this._unwrap(a,"execute")};return[new e.InstrumentationNodeModuleDefinition("mysql2",k,a=>(b(a),a),()=>{},[new e.InstrumentationNodeModuleFile("mysql2/promise.js",k,a=>(b(a),a),()=>{}),new e.InstrumentationNodeModuleFile("mysql2/lib/connection.js",k,a=>(c((0,h.getConnectionPrototypeToInstrument)(a)),a),a=>{void 0===a||d((0,h.getConnectionPrototypeToInstrument)(a))})])]}_patchQuery(a,b){return c=>{let i=this;return function(k,l,m){let n;Array.isArray(l)?n=l:arguments[2]&&(n=[l]);let{maskStatement:o,maskStatementHook:p,responseHook:q}=i.getConfig(),r=(0,h.getConnectionAttributes)(this.config,i._dbSemconvStability,i._netSemconvStability),s=(0,h.getQueryText)(k,a,n,o,p);i._dbSemconvStability&e.SemconvStability.OLD&&(r[f.ATTR_DB_SYSTEM]=f.DB_SYSTEM_VALUE_MYSQL,r[f.ATTR_DB_STATEMENT]=s),i._dbSemconvStability&e.SemconvStability.STABLE&&(r[j.ATTR_DB_SYSTEM_NAME]=j.DB_SYSTEM_NAME_VALUE_MYSQL,r[j.ATTR_DB_QUERY_TEXT]=s);let t=i.tracer.startSpan((0,h.getSpanName)(k),{kind:d.SpanKind.CLIENT,attributes:r});!b&&i.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=k="string"==typeof k?(0,g.addSqlCommenterComment)(t,k):Object.assign(k,{sql:(0,g.addSqlCommenterComment)(t,k.sql)}));let u=(0,h.once)((a,b)=>{a?t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}):"function"==typeof q&&(0,e.safeExecuteInTheMiddle)(()=>{q(t,{queryResults:b})},a=>{a&&i._diag.warn("Failed executing responseHook",a)},!0),t.end()});if(1==arguments.length){"function"==typeof k.onResult&&i._wrap(k,"onResult",i._patchCallbackQuery(u));let a=c.apply(this,arguments);return a.once("error",a=>{u(a)}).once("result",a=>{u(void 0,a)}),a}return"function"==typeof arguments[1]?i._wrap(arguments,1,i._patchCallbackQuery(u)):"function"==typeof arguments[2]&&i._wrap(arguments,2,i._patchCallbackQuery(u)),c.apply(this,arguments)}}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c,d),b(...arguments)}}}c.MySQL2Instrumentation=l},542331,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;var d=a.r(980415);Object.defineProperty(c,"MySQL2Instrumentation",{enumerable:!0,get:function(){return d.MySQL2Instrumentation}})},592734,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(542331),e=a.r(187845),f=a.r(309569),g="Mysql2",h=f.generateInstrumentOnce(g,()=>new d.MySQL2Instrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mysql2")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql2=h,c.mysql2Integration=i},44518,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},678432,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.endSpan=void 0;let d=a.r(832528);c.endSpan=(a,b)=>{b&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message})),a.end()}},901032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.defaultDbStatementSerializer=void 0;let d=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];c.defaultDbStatementSerializer=(a,b)=>{if(Array.isArray(b)&&b.length){let c=d.find(({regex:b})=>b.test(a))?.args??0,e=c>=0?b.slice(0,c):b;return b.length>e.length&&e.push(`[${b.length-c} other arguments]`),`${a} ${e.join(" ")}`}return a}},164022,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},523602,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(44518),h=a.r(167300),i=a.r(678432),j=a.r(901032),k=a.r(164022),l={requireParentSpan:!0};class m extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){return[new e.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(a,b)=>{let c="Module"===a[Symbol.toStringTag]?a.default:a;return(0,e.isWrapped)(c.prototype.sendCommand)&&this._unwrap(c.prototype,"sendCommand"),this._wrap(c.prototype,"sendCommand",this._patchSendCommand(b)),(0,e.isWrapped)(c.prototype.connect)&&this._unwrap(c.prototype,"connect"),this._wrap(c.prototype,"connect",this._patchConnection()),a},a=>{if(void 0===a)return;let b="Module"===a[Symbol.toStringTag]?a.default:a;this._unwrap(b.prototype,"sendCommand"),this._unwrap(b.prototype,"connect")})]}_patchSendCommand(a){return b=>this._traceSendCommand(b,a)}_patchConnection(){return a=>this._traceConnection(a)}_traceSendCommand(a,b){let c=this;return function(k){if(arguments.length<1||"object"!=typeof k)return a.apply(this,arguments);let l=c.getConfig(),m=l.dbStatementSerializer||j.defaultDbStatementSerializer,n=void 0===d.trace.getSpan(d.context.active());if(!0===l.requireParentSpan&&n)return a.apply(this,arguments);let o={},{host:p,port:q}=this.options,r=m(k.name,k.args);c._dbSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,o[g.ATTR_DB_STATEMENT]=r,o[g.ATTR_DB_CONNECTION_STRING]=`redis://${p}:${q}`),c._dbSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,o[f.ATTR_DB_QUERY_TEXT]=r),c._netSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_NET_PEER_NAME]=p,o[g.ATTR_NET_PEER_PORT]=q),c._netSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=p,o[f.ATTR_SERVER_PORT]=q);let s=c.tracer.startSpan(k.name,{kind:d.SpanKind.CLIENT,attributes:o}),{requestHook:t}=l;t&&(0,h.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:b,cmdName:k.name,cmdArgs:k.args}),a=>{a&&d.diag.error("ioredis instrumentation: request hook failed",a)},!0);try{let b=a.apply(this,arguments),c=k.resolve;k.resolve=function(a){(0,h.safeExecuteInTheMiddle)(()=>l.responseHook?.(s,k.name,k.args,a),a=>{a&&d.diag.error("ioredis instrumentation: response hook failed",a)},!0),(0,i.endSpan)(s,null),c(a)};let e=k.reject;return k.reject=function(a){(0,i.endSpan)(s,a),e(a)},b}catch(a){throw(0,i.endSpan)(s,a),a}}}_traceConnection(a){let b=this;return function(){let c=void 0===d.trace.getSpan(d.context.active());if(!0===b.getConfig().requireParentSpan&&c)return a.apply(this,arguments);let h={},{host:j,port:k}=this.options;b._dbSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,h[g.ATTR_DB_STATEMENT]="connect",h[g.ATTR_DB_CONNECTION_STRING]=`redis://${j}:${k}`),b._dbSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,h[f.ATTR_DB_QUERY_TEXT]="connect"),b._netSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_NET_PEER_NAME]=j,h[g.ATTR_NET_PEER_PORT]=k),b._netSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_SERVER_ADDRESS]=j,h[f.ATTR_SERVER_PORT]=k);let l=b.tracer.startSpan("connect",{kind:d.SpanKind.CLIENT,attributes:h});try{let b=a.apply(this,arguments);return(0,i.endSpan)(l,null),b}catch(a){throw(0,i.endSpan)(l,a),a}}}}c.IORedisInstrumentation=m},417236,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;var d=a.r(523602);Object.defineProperty(c,"IORedisInstrumentation",{enumerable:!0,get:function(){return d.IORedisInstrumentation}})},56335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},426925,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getTracedCreateStreamTrace=c.getTracedCreateClient=c.endSpan=void 0;let d=a.r(832528);c.endSpan=(a,b)=>{b&&a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end()},c.getTracedCreateClient=a=>function(){let b=a.apply(this,arguments);return d.context.bind(d.context.active(),b)},c.getTracedCreateStreamTrace=a=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(a){d.context.bind(d.context.active(),a),this._patched_redis_stream=a}}),a.apply(this,arguments)}},484312,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},776491,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV2_V3=void 0;let d=a.r(167300),e=a.r(426925),f=a.r(56335),g=a.r(832528),h=a.r(357122),i=a.r(484312),j=a.r(901032);class k extends d.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new d.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],a=>((0,d.isWrapped)(a.RedisClient.prototype.internal_send_command)&&this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._wrap(a.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,d.isWrapped)(a.RedisClient.prototype.create_stream)&&this._unwrap(a.RedisClient.prototype,"create_stream"),this._wrap(a.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,d.isWrapped)(a.createClient)&&this._unwrap(a,"createClient"),this._wrap(a,"createClient",this._getPatchCreateClient()),a),a=>{void 0!==a&&(this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._unwrap(a.RedisClient.prototype,"create_stream"),this._unwrap(a,"createClient"))})]}_getPatchInternalSendCommand(){let a=this;return function(b){return function(c){if(1!=arguments.length||"object"!=typeof c)return b.apply(this,arguments);let f=a.getConfig(),l=void 0===g.trace.getSpan(g.context.active());if(!0===f.requireParentSpan&&l)return b.apply(this,arguments);let m=f?.dbStatementSerializer||j.defaultDbStatementSerializer,n={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(n,{[i.ATTR_DB_SYSTEM]:i.DB_SYSTEM_VALUE_REDIS,[i.ATTR_DB_STATEMENT]:m(c.command,c.args)}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(n,{[h.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_REDIS,[h.ATTR_DB_OPERATION_NAME]:c.command,[h.ATTR_DB_QUERY_TEXT]:m(c.command,c.args)});let o=a.tracer.startSpan(`${k.COMPONENT}-${c.command}`,{kind:g.SpanKind.CLIENT,attributes:n});if(this.connection_options){let b={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(b,{[i.ATTR_NET_PEER_NAME]:this.connection_options.host,[i.ATTR_NET_PEER_PORT]:this.connection_options.port}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(b,{[h.ATTR_SERVER_ADDRESS]:this.connection_options.host,[h.ATTR_SERVER_PORT]:this.connection_options.port}),o.setAttributes(b)}this.address&&a._semconvStability&d.SemconvStability.OLD&&o.setAttribute(i.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let p=arguments[0].callback;if(p){let b=g.context.active();arguments[0].callback=function(h,i){if(f?.responseHook){let b=f.responseHook;(0,d.safeExecuteInTheMiddle)(()=>{b(o,c.command,c.args,i)},b=>{b&&a._diag.error("Error executing responseHook",b)},!0)}return(0,e.endSpan)(o,h),g.context.with(b,p,this,...arguments)}}try{return b.apply(this,arguments)}catch(a){throw(0,e.endSpan)(o,a),a}}}}_getPatchCreateClient(){return function(a){return(0,e.getTracedCreateClient)(a)}}_getPatchCreateStream(){return function(a){return(0,e.getTracedCreateStreamTrace)(a)}}}c.RedisInstrumentationV2_V3=k},223134,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getClientAttributes=void 0;let d=a.r(357122),e=a.r(484312),f=a.r(167300);c.getClientAttributes=function(a,b,c){let g={};return c&f.SemconvStability.OLD&&Object.assign(g,{[e.ATTR_DB_SYSTEM]:e.DB_SYSTEM_VALUE_REDIS,[e.ATTR_NET_PEER_NAME]:b?.socket?.host,[e.ATTR_NET_PEER_PORT]:b?.socket?.port,[e.ATTR_DB_CONNECTION_STRING]:function(a,b){if("string"==typeof b&&b)try{let a=new URL(b);return a.searchParams.delete("user_pwd"),a.username="",a.password="",a.href}catch(b){a.error("failed to sanitize redis connection url",b)}}(a,b?.url)}),c&f.SemconvStability.STABLE&&Object.assign(g,{[d.ATTR_DB_SYSTEM_NAME]:e.DB_SYSTEM_NAME_VALUE_REDIS,[d.ATTR_SERVER_ADDRESS]:b?.socket?.host,[d.ATTR_SERVER_PORT]:b?.socket?.port}),g}},823723,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV4_V5=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(223134),g=a.r(901032),h=a.r(56335),i=a.r(357122),j=a.r(484312),k=Symbol("opentelemetry.instrumentation.redis.open_spans"),l=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class m extends e.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(a){let b=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/commander.js`,["^1.0.0"],(a,b)=>{let c=a.transformCommandArguments;if(!c)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),a;let d=b?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,e.isWrapped)(a?.[d])&&this._unwrap(a,d),this._wrap(a,d,this._getPatchExtendWithCommands(c)),a},a=>{(0,e.isWrapped)(a?.extendWithCommands)&&this._unwrap(a,"extendWithCommands"),(0,e.isWrapped)(a?.attachCommands)&&this._unwrap(a,"attachCommands")}),c=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),this._wrap(b,"exec",this._getPatchMultiCommandsExec(!1)),(0,e.isWrapped)(b?.execAsPipeline)&&this._unwrap(b,"execAsPipeline"),this._wrap(b,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand"),this._wrap(b,"addCommand",this._getPatchMultiCommandsAddCommand()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand")}),d=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return b?.multi&&((0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),this._wrap(b,"multi",this._getPatchRedisClientMulti())),b?.MULTI&&((0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),this._wrap(b,"MULTI",this._getPatchRedisClientMulti())),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand"),this._wrap(b,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(b,"connect",this._getPatchedClientConnect()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),(0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand")});return new e.InstrumentationNodeModuleDefinition(a,["^1.0.0","^5.0.0"],a=>a,()=>{},[b,c,d])}_getPatchExtendWithCommands(a){let b=this;return function(c){return function(d){if(d?.BaseClass?.name!=="RedisClient")return c.apply(this,arguments);let e=d.executor;return d.executor=function(c,d){let f=a(c,d).args;return b._traceClientCommand(e,this,arguments,f)},c.apply(this,arguments)}}}_getPatchMultiCommandsExec(a){let b=this;return function(c){return function(){let d=c.apply(this,arguments);return"function"!=typeof d?.then?(b._diag.error("non-promise result when patching exec/execAsPipeline"),d):d.then(c=>{let d=this[k];return b._endSpansWithRedisReplies(d,c,a),c}).catch(c=>{let d=this[k];if(d){let e="MultiErrorReply"===c.constructor.name?c.replies:Array(d.length).fill(c);b._endSpansWithRedisReplies(d,e,a)}else b._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(c)})}}}_getPatchMultiCommandsAddCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchRedisClientMulti(){return function(a){return function(){let b=a.apply(this,arguments);return b[l]=this.options,b}}}_getPatchRedisClientSendCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchedClientConnect(){let a=this;return function(b){return function(){let c=this.options,e=(0,f.getClientAttributes)(a._diag,c,a._semconvStability),g=a.tracer.startSpan(`${m.COMPONENT}-connect`,{kind:d.SpanKind.CLIENT,attributes:e});return d.context.with(d.trace.setSpan(d.context.active(),g),()=>b.apply(this)).then(a=>(g.end(),a)).catch(a=>(g.recordException(a),g.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),g.end(),Promise.reject(a)))}}}_traceClientCommand(a,b,c,h){if(void 0===d.trace.getSpan(d.context.active())&&this.getConfig().requireParentSpan)return a.apply(b,c);let n=b.options||b[l],o=h[0],p=h.slice(1),q=this.getConfig().dbStatementSerializer||g.defaultDbStatementSerializer,r=(0,f.getClientAttributes)(this._diag,n,this._semconvStability);this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_OPERATION_NAME]=o);try{let a=q(o,p);null!=a&&(this._semconvStability&e.SemconvStability.OLD&&(r[j.ATTR_DB_STATEMENT]=a),this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_QUERY_TEXT]=a))}catch(a){this._diag.error("dbStatementSerializer throw an exception",a,{commandName:o})}let s=this.tracer.startSpan(`${m.COMPONENT}-${o}`,{kind:d.SpanKind.CLIENT,attributes:r}),t=d.context.with(d.trace.setSpan(d.context.active(),s),()=>a.apply(b,c));return"function"==typeof t?.then?t.then(a=>{this._endSpanWithResponse(s,o,p,a,void 0)},a=>{this._endSpanWithResponse(s,o,p,null,a)}):(t[k]=t[k]||[],t[k].push({span:s,commandName:o,commandArgs:p})),t}_endSpansWithRedisReplies(a,b,c=!1){if(!a)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(b.length!==a.length)return this._diag.error("number of multi command spans does not match response from redis");let d=a.map(a=>a.commandName),f=d.every(a=>a===d[0])?(c?"PIPELINE ":"MULTI ")+d[0]:c?"PIPELINE":"MULTI";for(let c=0;c{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;let d=a.r(167300),e=a.r(56335),f=a.r(776491),g=a.r(823723),h={requireParentSpan:!1};class i extends d.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(a={}){const b={...h,...a};super(e.PACKAGE_NAME,e.PACKAGE_VERSION,b),this.instrumentationV2_V3=new f.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new g.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(a={}){let b={...h,...a};super.setConfig(b),this.initialized&&(this.instrumentationV2_V3.setConfig(b),this.instrumentationV4_V5.setConfig(b))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(a){super.setTracerProvider(a),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(a),this.instrumentationV4_V5.setTracerProvider(a))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}c.RedisInstrumentation=i},365261,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;var d=a.r(451985);Object.defineProperty(c,"RedisInstrumentation",{enumerable:!0,get:function(){return d.RedisInstrumentation}})},461429,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=["get","set","setex"],e=["get","mget"],f=["set","setex"];function g(a,b){return a.includes(b.toLowerCase())}function h(a){return g(e,a)?"cache.get":g(f,a)?"cache.put":void 0}function i(a){let b=[],c=a=>{a.forEach(a=>{Array.isArray(a)?c(a):b.push(a)})};return c(a),b}c.GET_COMMANDS=e,c.SET_COMMANDS=f,c.calculateCacheItemSize=function(a){let b=a=>{try{if(Buffer.isBuffer(a))return a.byteLength;if("string"==typeof a)return a.length;if("number"==typeof a)return a.toString().length;else if(null==a)return 0;return JSON.stringify(a).length}catch{return}};return Array.isArray(a)?a.reduce((a,c)=>{let d=b(c);return"number"==typeof d?void 0!==a?a+d:d:a},0):b(a)},c.getCacheKeySafely=function(a,b){try{if(0===b.length)return;let c=a=>"string"==typeof a||"number"==typeof a||Buffer.isBuffer(a)?[a.toString()]:Array.isArray(a)?i(a.map(a=>c(a))):[""],e=b[0];if(g(d,a)&&null!=e)return c(e);return i(b.map(a=>c(a)))}catch{return}},c.getCacheOperation=h,c.isInCommands=g,c.shouldConsiderForCache=function(a,b,c){if(!h(a))return!1;for(let a of b)if(function(a,b){return b.some(b=>a.startsWith(b))}(a,c))return!0;return!1}},461054,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(417236),e=a.r(365261),f=a.r(187845),g=a.r(309569),h=a.r(461429),i="Redis";c._redisOptions={};let j=(a,b,d,e)=>{a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let g=h.getCacheKeySafely(b,d),i=h.getCacheOperation(b);if(!g||!i||!c._redisOptions.cachePrefixes||!h.shouldConsiderForCache(b,g,c._redisOptions.cachePrefixes))return;let j=f.spanToJSON(a).data["net.peer.name"],k=f.spanToJSON(a).data["net.peer.port"];k&&j&&a.setAttributes({"network.peer.address":j,"network.peer.port":k});let l=h.calculateCacheItemSize(e);l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,l),h.isInCommands(h.GET_COMMANDS,b)&&void 0!==l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_HIT,l>0),a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:i,[f.SEMANTIC_ATTRIBUTE_CACHE_KEY]:g});let m=g.join(", ");a.updateName(c._redisOptions.maxCacheKeyLength?f.truncate(m,c._redisOptions.maxCacheKeyLength):m)},k=g.generateInstrumentOnce(`${i}.IORedis`,()=>new d.IORedisInstrumentation({responseHook:j})),l=g.generateInstrumentOnce(`${i}.Redis`,()=>new e.RedisInstrumentation({responseHook:j})),m=Object.assign(()=>{k(),l()},{id:i}),n=f.defineIntegration((a={})=>({name:i,setupOnce(){c._redisOptions=a,m()}}));c.cacheResponseHook=j,c.instrumentRedis=m,c.redisIntegration=n},754229,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},263318,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).PG_VALUES="db.postgresql.values",d.PG_PLAN="db.postgresql.plan",d.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",d.MAX_CLIENT="db.postgresql.max.client"},283302,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=c.METRIC_DB_CLIENT_CONNECTION_COUNT=c.DB_SYSTEM_VALUE_POSTGRESQL=c.DB_CLIENT_CONNECTION_STATE_VALUE_USED=c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=c.ATTR_DB_CLIENT_CONNECTION_STATE=c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",c.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",c.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",c.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",c.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},684683,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=void 0,(d=c.SpanNames||(c.SpanNames={})).QUERY_PREFIX="pg.query",d.CONNECT="pg.connect",d.POOL_CONNECT="pg-pool.connect"},182032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizedErrorMessage=c.isObjectWithTextString=c.getErrorMessage=c.patchClientConnectCallback=c.patchCallbackPGPool=c.updateCounter=c.getPoolName=c.patchCallback=c.handleExecutionResult=c.handleConfigQuery=c.shouldSkipInstrumentation=c.getSemanticAttributesFromPoolConnection=c.getSemanticAttributesFromConnection=c.getConnectionString=c.parseAndMaskConnectionString=c.parseNormalizedOperationName=c.getQuerySpanName=void 0;let d=a.r(832528),e=a.r(263318),f=a.r(357122),g=a.r(283302),h=a.r(167300),i=a.r(684683);function j(a,b){if(!b)return i.SpanNames.QUERY_PREFIX;let c="string"==typeof b.name&&b.name?b.name:k(b.text);return`${i.SpanNames.QUERY_PREFIX}:${c}${a?` ${a}`:""}`}function k(a){let b=a.trim(),c=b.indexOf(" "),d=-1===c?b:b.slice(0,c);return(d=d.toUpperCase()).endsWith(";")?d.slice(0,-1):d}function l(a){try{let b=new URL(a);return b.username="",b.password="",b.toString()}catch(a){return"postgresql://localhost:5432/"}}function m(a){if("connectionString"in a&&a.connectionString)return l(a.connectionString);let b=a.host||"localhost",c=a.port||5432,d=a.database||"";return`postgresql://${b}:${c}/${d}`}function n(a){if(Number.isInteger(a))return a}function o(a,b){let c={};return b&h.SemconvStability.OLD&&(c={...c,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_DB_USER]:a.user,[g.ATTR_NET_PEER_NAME]:a.host,[g.ATTR_NET_PEER_PORT]:n(a.port)}),b&h.SemconvStability.STABLE&&(c={...c,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:a.host,[f.ATTR_SERVER_PORT]:n(a.port)}),c}function p(a,b,c){"function"==typeof a.responseHook&&(0,h.safeExecuteInTheMiddle)(()=>{a.responseHook(b,{data:c})},a=>{a&&d.diag.error("Error running response hook",a)},!0)}function q(a){let b=a?.name??"PostgreSQLError",c=a?.code??"UNKNOWN";return`PostgreSQL error of type '${b}' occurred (code: ${c})`}c.getQuerySpanName=j,c.parseNormalizedOperationName=k,c.parseAndMaskConnectionString=l,c.getConnectionString=m,c.getSemanticAttributesFromConnection=o,c.getSemanticAttributesFromPoolConnection=function(a,b){let c;try{c=a.connectionString?new URL(a.connectionString):void 0}catch(a){c=void 0}let d={[e.AttributeNames.IDLE_TIMEOUT_MILLIS]:a.idleTimeoutMillis,[e.AttributeNames.MAX_CLIENT]:a.maxClient};return b&h.SemconvStability.OLD&&(d={...d,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:c?.pathname.slice(1)??a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_NET_PEER_NAME]:c?.hostname??a.host,[g.ATTR_NET_PEER_PORT]:Number(c?.port)||n(a.port),[g.ATTR_DB_USER]:c?.username??a.user}),b&h.SemconvStability.STABLE&&(d={...d,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:c?.hostname??a.host,[f.ATTR_SERVER_PORT]:Number(c?.port)||n(a.port)}),d},c.shouldSkipInstrumentation=function(a){return!0===a.requireParentSpan&&void 0===d.trace.getSpan(d.context.active())},c.handleConfigQuery=function(a,b,c,i){let{connectionParameters:k}=this,l=j(k.database,i),m=a.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:o(k,c)});if(!i)return m;if(i.text&&(c&h.SemconvStability.OLD&&m.setAttribute(g.ATTR_DB_STATEMENT,i.text),c&h.SemconvStability.STABLE&&m.setAttribute(f.ATTR_DB_QUERY_TEXT,i.text)),b.enhancedDatabaseReporting&&Array.isArray(i.values))try{let a=i.values.map(a=>null==a?"null":a instanceof Buffer?a.toString():"object"!=typeof a?a.toString():"function"==typeof a.toPostgres?a.toPostgres():JSON.stringify(a));m.setAttribute(e.AttributeNames.PG_VALUES,a)}catch(a){d.diag.error("failed to stringify ",i.values,a)}return"string"==typeof i.name&&m.setAttribute(e.AttributeNames.PG_PLAN,i.name),m},c.handleExecutionResult=p,c.patchCallback=function(a,b,c,e,g){return function(h,i){h?(Object.prototype.hasOwnProperty.call(h,"code")&&(e[f.ATTR_ERROR_TYPE]=h.code),h instanceof Error&&b.recordException(q(h)),b.setStatus({code:d.SpanStatusCode.ERROR,message:h.message})):p(a,b,i),g(),b.end(),c.call(this,h,i)}},c.getPoolName=function(a){let b="";return(b+=(a?.host?`${a.host}`:"unknown_host")+":"+(a?.port?`${a.port}`:"unknown_port")+"/"+(a?.database?`${a.database}`:"unknown_database")).trim()},c.updateCounter=function(a,b,c,d,e){let f=b.totalCount,h=b.waitingCount,i=b.idleCount,j=f-i;return c.add(j-e.used,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),c.add(i-e.idle,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),d.add(h-e.pending,{[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),{used:j,idle:i,pending:h}},c.patchCallbackPGPool=function(a,b){return function(c,e,f){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.call(this,c,e,f)}},c.patchClientConnectCallback=function(a,b){return function(c){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.apply(this,arguments)}},c.getErrorMessage=function(a){return"object"==typeof a&&null!==a&&"message"in a?String(a.message):void 0},c.isObjectWithTextString=function(a){return"object"==typeof a&&"string"==typeof a?.text},c.sanitizedErrorMessage=q},499741,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.66.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},928742,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PgInstrumentation=void 0;let d=a.r(167300),e=a.r(832528),f=a.r(754229),g=a.r(182032),h=a.r(481992),i=a.r(499741),j=a.r(684683),k=a.r(498562),l=a.r(357122),m=a.r(283302);function n(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class o extends d.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._semconvStability=(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(l.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:e.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let a=[">=8.0.3 <9"],b=new d.InstrumentationNodeModuleFile("pg/lib/native/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),c=new d.InstrumentationNodeModuleFile("pg/lib/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new d.InstrumentationNodeModuleDefinition("pg",a,a=>{let b=n(a);return this._patchPgClient(b.Client),a},a=>{let b=n(a);return this._unpatchPgClient(b.Client),a},[c,b]),new d.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],a=>{let b=n(a);return(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"connect",this._getPoolConnectPatch()),b},a=>{let b=n(a);(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect")})]}_patchPgClient(a){if(!a)return;let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"query",this._getClientQueryPatch()),this._wrap(b.prototype,"connect",this._getClientConnectPatch()),a}_unpatchPgClient(a){let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),a}_getClientConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||d.ignoreConnectSpans)return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromConnection(this,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchClientConnectCallback(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}recordOperationDuration(a,b){let c={},e=[l.ATTR_DB_NAMESPACE,l.ATTR_ERROR_TYPE,l.ATTR_SERVER_PORT,l.ATTR_SERVER_ADDRESS,l.ATTR_DB_OPERATION_NAME];this._semconvStability&d.SemconvStability.OLD&&e.push(m.ATTR_DB_SYSTEM),this._semconvStability&d.SemconvStability.STABLE&&e.push(l.ATTR_DB_SYSTEM_NAME),e.forEach(b=>{b in a&&(c[b]=a[b])});let f=(0,k.hrTimeToMilliseconds)((0,k.hrTimeDuration)(b,(0,k.hrTime)()))/1e3;this._operationDuration.record(f,c)}_getClientQueryPatch(){let a=this;return b=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...c){let f;if(g.shouldSkipInstrumentation(a.getConfig()))return b.apply(this,c);let i=(0,k.hrTime)(),j=c[0],n="string"==typeof j,o=g.isObjectWithTextString(j),p=n?{text:j,values:Array.isArray(c[1])?c[1]:void 0}:o?{...j,name:j.name,text:j.text,values:j.values??(Array.isArray(c[1])?c[1]:void 0)}:void 0,q={[m.ATTR_DB_SYSTEM]:m.DB_SYSTEM_VALUE_POSTGRESQL,[l.ATTR_DB_NAMESPACE]:this.database,[l.ATTR_SERVER_PORT]:this.connectionParameters.port,[l.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};p?.text&&(q[l.ATTR_DB_OPERATION_NAME]=g.parseNormalizedOperationName(p?.text));let r=()=>{a.recordOperationDuration(q,i)},s=a.getConfig(),t=g.handleConfigQuery.call(this,a.tracer,s,a._semconvStability,p);if(s.addSqlCommenterCommentToQueries&&(n?c[0]=(0,h.addSqlCommenterComment)(t,j):!o||"name"in j||(c[0]={...j,text:(0,h.addSqlCommenterComment)(t,j.text)})),c.length>0){let b=e.trace.getSpan(e.context.active());if("function"==typeof c[c.length-1])c[c.length-1]=g.patchCallback(s,t,c[c.length-1],q,r),b&&(c[c.length-1]=e.context.bind(e.context.active(),c[c.length-1]));else if("function"==typeof p?.callback){let d=g.patchCallback(a.getConfig(),t,p.callback,q,r);b&&(d=e.context.bind(e.context.active(),d)),c[0].callback=d}}let{requestHook:u}=s;"function"==typeof u&&p&&(0,d.safeExecuteInTheMiddle)(()=>{let{database:a,host:b,port:c,user:d}=this.connectionParameters;u(t,{connection:{database:a,host:b,port:c,user:d},query:{text:p.text,values:p.values,name:p.name}})},b=>{b&&a._diag.error("Error running query hook",b)},!0);try{f=b.apply(this,c)}catch(a){throw a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(a)}),t.end(),a}return f instanceof Promise?f.then(b=>new Promise(c=>{g.handleExecutionResult(a.getConfig(),t,b),r(),t.end(),c(b)})).catch(a=>new Promise((b,c)=>{a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),r(),t.end(),c(a)})):f})}_setPoolConnectEventListeners(a){if(a[f.EVENT_LISTENERS_SET])return;let b=g.getPoolName(a.options);a.on("connect",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("acquire",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("remove",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("release",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a[f.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||(a._setPoolConnectEventListeners(this),d.ignoreConnectSpans))return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.POOL_CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromPoolConnection(this.options,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchCallbackPGPool(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}}function p(a,b){return b instanceof Promise?e.context.bind(e.context.active(),b.then(b=>(a.end(),b)).catch(b=>(b instanceof Error&&a.recordException(g.sanitizedErrorMessage(b)),a.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(b)}),a.end(),Promise.reject(b)))):b}c.PgInstrumentation=o},146635,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.PgInstrumentation=void 0;var d=a.r(928742);Object.defineProperty(c,"PgInstrumentation",{enumerable:!0,get:function(){return d.PgInstrumentation}});var e=a.r(263318);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},257141,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(146635),e=a.r(187845),f=a.r(309569),g="Postgres",h=f.generateInstrumentOnce(g,d.PgInstrumentation,a=>({requireParentSpan:!0,requestHook(a){f.addOriginToSpan(a,"auto.db.otel.postgres")},ignoreConnectSpans:a?.ignoreConnectSpans??!1})),i=e.defineIntegration(a=>({name:g,setupOnce(){h(a)}}));c.instrumentPostgres=h,c.postgresIntegration=i},870983,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(187845),h=a.r(309569),i=a.r(852223),j="PostgresJs",k=[">=3.0.0 <4"],l=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,m=Symbol.for("sentry.query.from.instrumented.sql"),n=h.generateInstrumentOnce(j,a=>new o({requireParentSpan:a?.requireParentSpan??!0,requestHook:a?.requestHook}));class o extends e.InstrumentationBase{constructor(a){super("sentry-postgres-js",g.SDK_VERSION,a)}init(){let a=new e.InstrumentationNodeModuleDefinition("postgres",k,a=>{try{return this._patchPostgres(a)}catch(b){return i.DEBUG_BUILD&&g.debug.error("Failed to patch postgres module:",b),a}},a=>a);return["src","cf/src","cjs/src"].forEach(b=>{a.files.push(new e.InstrumentationNodeModuleFile(`postgres/${b}/query.js`,k,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),a}_patchPostgres(a){let b="function"==typeof a,c=b?a:a.default;if("function"!=typeof c)return i.DEBUG_BUILD&&g.debug.warn("postgres module does not export a function. Skipping instrumentation."),a;let d=this,e=function(...a){let b=Reflect.construct(c,a);if(!b||"function"!=typeof b)return i.DEBUG_BUILD&&g.debug.warn("postgres() did not return a valid instance"),b;let e=d.getConfig();return g.instrumentPostgresJsSql(b,{requireParentSpan:e.requireParentSpan,requestHook:e.requestHook})};for(let a of(Object.setPrototypeOf(e,c),Object.setPrototypeOf(e.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(e,a,b)}return b?e:(g.replaceExports(a,"default",e),a)}_shouldCreateSpans(){let a=this.getConfig();return void 0!==d.trace.getSpan(d.context.active())||!a.requireParentSpan}_setOperationName(a,b,c){if(c)return void a.setAttribute(f.ATTR_DB_OPERATION_NAME,c);let d=b?.match(l);d?.[1]&&a.setAttribute(f.ATTR_DB_OPERATION_NAME,d[1].toUpperCase())}_reconstructQuery(a){if(a?.length)return 1===a.length?a[0]||void 0:a.reduce((a,b,c)=>0===c?b:`${a}$${c}${b}`,"")}_sanitizeSqlQuery(a){return a?a.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{h.addOriginToSpan(d,"auto.db.postgresjs"),d.setAttributes({[f.ATTR_DB_SYSTEM_NAME]:"postgres",[f.ATTR_DB_QUERY_TEXT]:k});let{requestHook:l}=b.getConfig();l&&e.safeExecuteInTheMiddle(()=>l(d,k,void 0),a=>{a&&(d.setAttribute("sentry.hook.error","requestHook failed"),i.DEBUG_BUILD&&g.debug.error(`Error in requestHook for ${j} integration:`,a))},!0);let m=this.resolve;this.resolve=new Proxy(m,{apply:(a,c,e)=>{try{b._setOperationName(d,k,e?.[0]?.command),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in resolve callback:",a)}return Reflect.apply(a,c,e)}});let n=this.reject;this.reject=new Proxy(n,{apply:(a,c,e)=>{try{d.setStatus({code:g.SPAN_STATUS_ERROR,message:e?.[0]?.message||"unknown_error"}),d.setAttribute(f.ATTR_DB_RESPONSE_STATUS_CODE,e?.[0]?.code||"unknown"),d.setAttribute(f.ATTR_ERROR_TYPE,e?.[0]?.name||"unknown"),b._setOperationName(d,k),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in reject callback:",a)}return Reflect.apply(a,c,e)}});try{return c.apply(this,a)}catch(a){throw d.setStatus({code:g.SPAN_STATUS_ERROR,message:a instanceof Error?a.message:"unknown_error"}),d.end(),a}})},a.Query.prototype.handle.__sentry_original__=c,a}_unpatchQueryPrototype(a){return a.Query.prototype.handle.__sentry_original__&&(a.Query.prototype.handle=a.Query.prototype.handle.__sentry_original__),a}}let p=g.defineIntegration(a=>({name:j,setupOnce(){n(a)}}));c.PostgresJsInstrumentation=o,c.instrumentPostgresJs=n,c.postgresJsIntegration=p},116141,a=>{"use strict";a.s([],613895),a.i(613895);var b,c,d=a.i(236471),e=a.i(231261);let f="object"==typeof globalThis?globalThis:a.g,g=Symbol.for("io.opentelemetry.js.api.logs");class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return f[g]?this.getLoggerProvider():(f[g]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=f[g])?void 0:a.call(f,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete f[g],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(984414);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(a=>a.name===g).filter(b=>af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!1},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{name;supportedVersions;patch;unpatch;files;constructor(a,b,c,d,e){this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d,this.files=e||[]}}class ah{supportedVersions;patch;unpatch;name;constructor(a,b,c,d){this.supportedVersions=b,this.patch=c,this.unpatch=d,this.name=(0,p.normalize)(a)}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],116141)},634149,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={PrismaInstrumentation:()=>w,registerInstrumentations:()=>x.registerInstrumentations};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let i of f(b))g.call(a,i)||i===c||d(a,i,{get:()=>b[i],enumerable:!(h=e(b,i))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(832528),l=a.r(116141),m="7.6.0".split(".")[0],n="PRISMA_INSTRUMENTATION",o=`V${m}_PRISMA_INSTRUMENTATION`,p=globalThis,q=a.r(832528),r="true"===process.env.PRISMA_SHOW_ALL_TRACES,s=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:a,ignoreSpanTypes:b}){this.tracerProvider=a,this.ignoreSpanTypes=b}isEnabled(){return!0}getTraceParent(a){let b=q.trace.getSpanContext(a??q.context.active());return b?`00-${b.traceId}-${b.spanId}-0${b.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(a){let b=this.tracerProvider.getTracer("prisma"),c=new Map;for(let d of a.filter(a=>null===a.parentId))!function a(b,c,d,e,f){if(u(c.name,f))return;let g={attributes:c.attributes,kind:"client"===c.kind?q.SpanKind.CLIENT:q.SpanKind.INTERNAL,startTime:c.startTime};b.startActiveSpan(c.name,g,g=>{for(let h of(e.set(c.id,g.spanContext().spanId),c.links&&g.addLinks(c.links.flatMap(a=>{let b=e.get(a);return b?{context:{spanId:b,traceId:g.spanContext().traceId,traceFlags:g.spanContext().traceFlags}}:[]})),d.filter(a=>a.parentId===c.id)))a(b,h,d,e,f);g.end(c.endTime)})}(b,d,a,c,this.ignoreSpanTypes)}getActiveContext(){return q.context.active()}runInChildSpan(a,b){if("string"==typeof a&&(a={name:a}),a.internal&&!r)return b();let c=this.tracerProvider.getTracer("prisma"),d=a.context??this.getActiveContext(),e=`prisma:client:${a.name}`;if(u(e,this.ignoreSpanTypes))return b();if(!1===a.active){let f=c.startSpan(e,a,d);return t(f,b(f,d))}return c.startActiveSpan(e,a,a=>t(a,b(a,d)))}};function t(a,b){var c;return null!=(c=b)&&"function"==typeof c.then?b.then(b=>(a.end(),b),b=>{throw a.end(),b}):(a.end(),b)}function u(a,b){return b.some(b=>"string"==typeof b?b===a:b.test(a))}var v="7.6.0",w=class extends l.InstrumentationBase{tracerProvider;constructor(a={}){super("@prisma/instrumentation",v,a)}setTracerProvider(a){this.tracerProvider=a}init(){return[new l.InstrumentationNodeModuleDefinition("@prisma/client",[v])]}enable(){let a,b=this._config;a={helper:new s({tracerProvider:this.tracerProvider??k.trace.getTracerProvider(),ignoreSpanTypes:b.ignoreSpanTypes??[]})},p[o]=a,p[n]=a}disable(){delete p[o],delete p[n]}isEnabled(){return void 0!==function(){let a=p[o];if(a?.helper)return a.helper;let b=p[n];return b?.helper}()}},x=a.r(116141)},770948,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(634149),f=a.r(187845),g=a.r(309569),h="Prisma";function i(){let a=globalThis.PRISMA_INSTRUMENTATION;return a&&"object"==typeof a&&"helper"in a?a.helper:void 0}class j extends e.PrismaInstrumentation{constructor(a){super(a?.instrumentationConfig)}enable(){super.enable();let a=i();a&&"object"==typeof a&&"dispatchEngineSpans"in a&&(a.createEngineSpan=a=>{let b=d.trace.getTracer("prismaV5Compatibility"),c=b._idGenerator;if(!c)return void f.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{a.spans.forEach(a=>{var e;let f=(e=a.kind,"client"===e?d.SpanKind.CLIENT:d.SpanKind.INTERNAL),g=a.parent_span_id,h=a.span_id,i=a.trace_id,j=a.links?.map(a=>({context:{traceId:a.trace_id,spanId:a.span_id,traceFlags:d.TraceFlags.SAMPLED}})),k=d.trace.setSpanContext(d.context.active(),{traceId:i,spanId:g,traceFlags:d.TraceFlags.SAMPLED});d.context.with(k,()=>{b._idGenerator={generateTraceId:()=>i,generateSpanId:()=>h},b.startSpan(a.name,{kind:f,links:j,startTime:a.start_time,attributes:a.attributes}).end(a.end_time),b._idGenerator=c})})}finally{b._idGenerator=c}})}}let k=g.generateInstrumentOnce(h,a=>new j(a)),l=f.defineIntegration(a=>({name:h,setupOnce(){k(a)},setup(a){i()&&a.on("spanStart",a=>{let b=f.spanToJSON(a);b.description?.startsWith("prisma:")&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===b.description&&b.data["db.query.text"]&&a.updateName(b.data["db.query.text"]),"prisma:engine:db_query"!==b.description||b.data["db.system"]||a.setAttribute("db.system","prisma")})}}));c.instrumentPrisma=k,c.prismaIntegration=l},327397,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},31093,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiLifecycleMethodNames=c.HapiLayerType=c.handlerPatched=c.HapiComponentName=void 0,c.HapiComponentName="@hapi/hapi",c.handlerPatched=Symbol("hapi-handler-patched"),c.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},c.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},437108,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_HTTP_METHOD=void 0,c.ATTR_HTTP_METHOD="http.method"},678965,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).HAPI_TYPE="hapi.type",d.PLUGIN_NAME="hapi.plugin.name",d.EXT_TYPE="server.ext.type"},636223,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getPluginFromInput=c.getExtMetadata=c.getRouteMetadata=c.isPatchableExtMethod=c.isDirectExtInput=c.isLifecycleExtEventObj=c.isLifecycleExtType=c.getPluginName=void 0;let d=a.r(357122),e=a.r(437108),f=a.r(31093),g=a.r(678965),h=a.r(167300);c.getPluginName=function(a){return a.name?a.name:a.pkg.name},c.isLifecycleExtType=a=>"string"==typeof a&&f.HapiLifecycleMethodNames.has(a),c.isLifecycleExtEventObj=a=>{let b=a?.type;return void 0!==b&&(0,c.isLifecycleExtType)(b)},c.isDirectExtInput=a=>Array.isArray(a)&&a.length<=3&&(0,c.isLifecycleExtType)(a[0])&&"function"==typeof a[1],c.isPatchableExtMethod=a=>!Array.isArray(a),c.getRouteMetadata=(a,b,c)=>{let i,j={[d.ATTR_HTTP_ROUTE]:a.path};return b&h.SemconvStability.OLD&&(j[e.ATTR_HTTP_METHOD]=a.method),b&h.SemconvStability.STABLE&&(j[d.ATTR_HTTP_REQUEST_METHOD]=a.method),c?(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.PLUGIN,j[g.AttributeNames.PLUGIN_NAME]=c,i=`${c}: route - ${a.path}`):(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.ROUTER,i=`route - ${a.path}`),{attributes:j,name:i}},c.getExtMetadata=(a,b,c)=>{let d=`ext - ${a}`;return(c&&"method"!==c&&(d=`ext - ${a} - ${c}`),b)?{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT,[g.AttributeNames.PLUGIN_NAME]:b},name:`${b}: ${d}`}:{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT},name:d}},c.getPluginFromInput=a=>"plugin"in a?"plugin"in a.plugin?a.plugin.plugin:a.plugin:a},487995,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(327397),h=a.r(31093),i=a.r(636223);class j extends f.InstrumentationBase{_semconvStability;constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a),this._semconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new f.InstrumentationNodeModuleDefinition(h.HapiComponentName,[">=17.0.0 <22"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return(0,f.isWrapped)(b.server)||this._wrap(b,"server",this._getServerPatch.bind(this)),(0,f.isWrapped)(b.Server)||this._wrap(b,"Server",this._getServerPatch.bind(this)),b},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;this._massUnwrap([b],["server","Server"])})}_getServerPatch(a){let b=this,c=this;return function(d){let e=a.apply(this,[d]);return c._wrap(e,"route",a=>b._getServerRoutePatch.bind(b)(a)),c._wrap(e,"ext",a=>b._getServerExtPatch.bind(b)(a)),c._wrap(e,"register",b._getServerRegisterPatch.bind(b)),e}}_getServerRegisterPatch(a){let b=this;return function(c,d){if(Array.isArray(c))for(let a of c){let c=(0,i.getPluginFromInput)(a);b._wrapRegisterHandler(c)}else{let a=(0,i.getPluginFromInput)(c);b._wrapRegisterHandler(a)}return a.apply(this,[c,d])}}_getServerExtPatch(a,b){let c=this;return function(...d){if(Array.isArray(d[0])){let a=d[0];for(let d=0;db._getServerRoutePatch.bind(b)(a,c)),e._wrap(a,"ext",a=>b._getServerExtPatch.bind(b)(a,c)),d.call(this,a,f)}}_wrapExtMethods(a,b,c){let e=this;if(a instanceof Array)for(let c=0;casync function(...g){if(void 0===d.trace.getSpan(d.context.active()))return await f.call(this,...g);let h=(0,e.getRPCMetadata)(d.context.active());h?.type===e.RPCType.HTTP&&(h.route=a.path);let j=(0,i.getRouteMetadata)(a,c._semconvStability,b),k=c.tracer.startSpan(j.name,{attributes:j.attributes});try{return await d.context.with(d.trace.setSpan(d.context.active(),k),()=>f.call(this,...g))}catch(a){throw k.recordException(a),k.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),a}finally{k.end()}};if("function"==typeof a.handler)a.handler=f(a.handler);else if("function"==typeof a.options){let b=a.options;a.options=function(a){let c=b(a);return"function"==typeof c.handler&&(c.handler=f(c.handler)),c}}else"function"==typeof a.options?.handler&&(a.options.handler=f(a.options.handler));return a}}c.HapiInstrumentation=j},984769,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.HapiInstrumentation=void 0;var d=a.r(487995);Object.defineProperty(c,"HapiInstrumentation",{enumerable:!0,get:function(){return d.HapiInstrumentation}});var e=a.r(678965);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},969899,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(984769),e=a.r(187845),f=a.r(309569),g=a.r(852223),h="Hapi",i=f.generateInstrumentOnce(h,()=>new d.HapiInstrumentation),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}})),k={name:"SentryHapiErrorPlugin",version:e.SDK_VERSION,register:async function(a){a.events.on({name:"request",channels:["error"]},(a,b)=>{var c;if(e.getIsolationScope()!==e.getDefaultIsolationScope()){let b=a.route;b.path&&e.getIsolationScope().setTransactionName(`${b.method.toUpperCase()} ${b.path}`)}else g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");b&&"object"==typeof b&&"error"in b&&b.error&&(c=b.error,e.captureException(c,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function l(a){await a.register(k);let b=e.getClient();b&&b.on("spanStart",a=>{var b;let c,d;b=a,d=(c=e.spanToJSON(b).data)["hapi.type"],!c[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&d&&b.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${d}.hapi`})}),f.ensureIsWrapped(a.register,"hapi")}c.hapiErrorPlugin=k,c.hapiIntegration=j,c.instrumentHapi=i,c.setupHapiErrorHandler=l},547707,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},c.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},106789,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300),f=a.r(187845),g=a.r(547707);class h extends e.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-hono","0.0.1",a)}init(){return[new e.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],a=>this._patch(a))]}_patch(a){let b=this;class c extends a.Hono{constructor(...a){super(...a),b._wrap(this,"get",b._patchHandler()),b._wrap(this,"post",b._patchHandler()),b._wrap(this,"put",b._patchHandler()),b._wrap(this,"delete",b._patchHandler()),b._wrap(this,"options",b._patchHandler()),b._wrap(this,"patch",b._patchHandler()),b._wrap(this,"all",b._patchHandler()),b._wrap(this,"on",b._patchOnHandler()),b._wrap(this,"use",b._patchMiddlewareHandler())}}try{a.Hono=c}catch{return{...a,Hono:c}}return a}_patchHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_patchOnHandler(){let a=this;return function(b){return function(...c){let d=c.slice(2);return b.apply(this,[...c.slice(0,2),...d.map(b=>a._wrapHandler(b))])}}}_patchMiddlewareHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_wrapHandler(a){let b=this;return function(c,e){if(!b.isEnabled())return a.apply(this,[c,e]);let h=c.req.path,i=b.tracer.startSpan(h);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>b._safeExecute(()=>{let d=a.apply(this,[c,e]);if(f.isThenable(d))return d.then(c=>{let d=b._determineHandlerType(c);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:d,[g.AttributeNames.HONO_NAME]:d===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),c});{let c=b._determineHandlerType(d);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:c,[g.AttributeNames.HONO_NAME]:c===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),d}},()=>i.end(),a=>{b._handleError(i,a),i.end()}))}}_safeExecute(a,b,c){try{let d=a();return f.isThenable(d)?d.then(()=>b(),a=>c(a)):b(),d}catch(a){throw c(a),a}}_determineHandlerType(a){return void 0===a?g.HonoTypes.MIDDLEWARE:g.HonoTypes.REQUEST_HANDLER}_handleError(a,b){b instanceof Error&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b))}}c.HonoInstrumentation=h},27047,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(309569),g=a.r(852223),h=a.r(547707),i=a.r(106789),j="Hono",k=f.generateInstrumentOnce(j,()=>new i.HonoInstrumentation({responseHook:a=>{!function(a){let b=e.spanToJSON(a).data,c=b[h.AttributeNames.HONO_TYPE];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.hono`});let f=b[h.AttributeNames.HONO_NAME];if("string"==typeof f&&a.updateName(f),e.getIsolationScope()===e.getDefaultIsolationScope()){g.DEBUG_BUILD&&e.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let i=b[d.ATTR_HTTP_ROUTE],j=b[d.ATTR_HTTP_REQUEST_METHOD];"string"==typeof i&&"string"==typeof j&&e.getIsolationScope().setTransactionName(`${j} ${i}`)}(a)}})),l=e.defineIntegration(()=>({name:j,setupOnce(){k()}}));c.honoIntegration=l,c.instrumentHono=k,c.setupHonoErrorHandler=function(a,b){a.use(async function(a,b){let c=e.httpRequestToRequestData(a.req);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:c}),await b()}),a.use(async function(a,c){await c(),(b?.shouldHandleError||function(a){return a.res.status>=500})(a)&&(a.res.sentry=e.captureException(a.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),f.ensureIsWrapped(a.use,"hono")}},784005,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=void 0,(d=c.KoaLayerType||(c.KoaLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware"},327081,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},325778,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).KOA_TYPE="koa.type",d.KOA_NAME="koa.name"},703707,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isLayerIgnored=c.getMiddlewareMetadata=void 0;let d=a.r(784005),e=a.r(325778),f=a.r(357122);c.getMiddlewareMetadata=(a,b,c,g)=>c?{attributes:{[e.AttributeNames.KOA_NAME]:g?.toString(),[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.ROUTER,[f.ATTR_HTTP_ROUTE]:g?.toString()},name:a._matchedRouteName||`router - ${g}`}:{attributes:{[e.AttributeNames.KOA_NAME]:b.name??"middleware",[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.MIDDLEWARE},name:`middleware - ${b.name}`},c.isLayerIgnored=(a,b)=>!!(Array.isArray(b?.ignoreLayersType)&&b?.ignoreLayersType?.includes(a))},730772,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.kLayerPatched=void 0,c.kLayerPatched=Symbol("koa-layer-patched")},151114,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(784005),g=a.r(327081),h=a.r(703707),i=a.r(498562),j=a.r(730772);class k extends e.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return new e.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return null==b?b:((0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use"),this._wrap(b.prototype,"use",this._getKoaUsePatch.bind(this)),a)},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;(0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use")})}_getKoaUsePatch(a){let b=this;return function(c){let d;return d=c.router?b._patchRouterDispatch(c):b._patchLayer(c,!1),a.apply(this,[d])}}_patchRouterDispatch(a){d.diag.debug("Patching @koa/router dispatch");let b=a.router;for(let a of b?.stack??[]){let b=a.path,c=a.stack;for(let a=0;a{if(void 0===d.trace.getSpan(d.context.active()))return a(f,j);let k=(0,h.getMiddlewareMetadata)(f,a,b,c),l=this.tracer.startSpan(k.name,{attributes:k.attributes}),m=(0,i.getRPCMetadata)(d.context.active());m?.type===i.RPCType.HTTP&&f._matchedRoute&&(m.route=f._matchedRoute.toString());let{requestHook:n}=this.getConfig();n&&(0,e.safeExecuteInTheMiddle)(()=>n(l,{context:f,middlewareLayer:a,layerType:g}),a=>{a&&d.diag.error("koa instrumentation: request hook failed",a)},!0);let o=d.trace.setSpan(d.context.active(),l);return d.context.with(o,async()=>{try{return await a(f,j)}catch(a){throw l.recordException(a),a}finally{l.end()}})})}}c.KoaInstrumentation=k},474061,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=c.AttributeNames=c.KoaInstrumentation=void 0;var d=a.r(151114);Object.defineProperty(c,"KoaInstrumentation",{enumerable:!0,get:function(){return d.KoaInstrumentation}});var e=a.r(325778);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}});var f=a.r(784005);Object.defineProperty(c,"KoaLayerType",{enumerable:!0,get:function(){return f.KoaLayerType}})},550583,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(474061),e=a.r(357122),f=a.r(187845),g=a.r(309569),h=a.r(852223),i=g.generateInstrumentOnce("Koa",d.KoaInstrumentation,(a={})=>({ignoreLayersType:a.ignoreLayersType,requestHook(a,b){g.addOriginToSpan(a,"auto.http.otel.koa");let c=f.spanToJSON(a).data,d=c["koa.type"];d&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${d}.koa`);let i=c["koa.name"];if("string"==typeof i&&a.updateName(i||"< unknown >"),f.getIsolationScope()===f.getDefaultIsolationScope()){h.DEBUG_BUILD&&f.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let j=c[e.ATTR_HTTP_ROUTE],k=b.context?.request?.method?.toUpperCase()||"GET";j&&f.getIsolationScope().setTransactionName(`${k} ${j}`)}})),j=f.defineIntegration((a={})=>({name:"Koa",setupOnce(){i(a)}}));c.instrumentKoa=i,c.koaIntegration=j,c.setupKoaErrorHandler=a=>{a.use(async(a,b)=>{try{await b()}catch(a){throw f.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),a}}),g.ensureIsWrapped(a.use,"koa")}},791516,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectNames=c.ConnectTypes=c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).CONNECT_TYPE="connect.type",d.CONNECT_NAME="connect.name",(e=c.ConnectTypes||(c.ConnectTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",(f=c.ConnectNames||(c.ConnectNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},544769,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},109564,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=void 0,c._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},679231,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.generateRoute=c.replaceCurrentStackRoute=c.addNewStackLayer=void 0;let d=a.r(832528),e=a.r(109564);c.addNewStackLayer=a=>{!1===Array.isArray(a[e._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,e._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),a[e._LAYERS_STORE_PROPERTY].push("/");let b=a[e._LAYERS_STORE_PROPERTY].length;return()=>{b===a[e._LAYERS_STORE_PROPERTY].length?a[e._LAYERS_STORE_PROPERTY].pop():d.diag.warn("Connect: Trying to pop the stack multiple time")}},c.replaceCurrentStackRoute=(a,b)=>{b&&a[e._LAYERS_STORE_PROPERTY].splice(-1,1,b)},c.generateRoute=a=>a[e._LAYERS_STORE_PROPERTY].reduce((a,b)=>a.replace(/\/+$/,"")+b)},161740,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectInstrumentation=c.ANONYMOUS_NAME=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(791516),g=a.r(544769),h=a.r(167300),i=a.r(357122),j=a.r(679231);c.ANONYMOUS_NAME="anonymous";class k extends h.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new h.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_patchApp(a){(0,h.isWrapped)(a.use)||this._wrap(a,"use",this._patchUse.bind(this)),(0,h.isWrapped)(a.handle)||this._wrap(a,"handle",this._patchHandle.bind(this))}_patchConstructor(a){let b=this;return function(...c){let d=a.apply(this,c);return b._patchApp(d),d}}_patchNext(a,b){return function(c){let d=a.apply(this,[c]);return b(),d}}_startSpan(a,b){let d,e,g;a?(d=f.ConnectTypes.REQUEST_HANDLER,g=f.ConnectNames.REQUEST_HANDLER,e=a):(d=f.ConnectTypes.MIDDLEWARE,g=f.ConnectNames.MIDDLEWARE,e=b.name||c.ANONYMOUS_NAME);let h=`${g} - ${e}`,j={attributes:{[i.ATTR_HTTP_ROUTE]:a.length>0?a:"/",[f.AttributeNames.CONNECT_TYPE]:d,[f.AttributeNames.CONNECT_NAME]:e}};return this.tracer.startSpan(h,j)}_patchMiddleware(a,b){let f=this,g=4===b.length;function h(){if(!f.isEnabled())return b.apply(this,arguments);let[h,i,k]=g?[1,2,3]:[0,1,2],l=arguments[h],m=arguments[i],n=arguments[k];(0,j.replaceCurrentStackRoute)(l,a);let o=(0,e.getRPCMetadata)(d.context.active());a&&o?.type===e.RPCType.HTTP&&(o.route=(0,j.generateRoute)(l));let p="";p=a?`request handler - ${a}`:`middleware - ${b.name||c.ANONYMOUS_NAME}`;let q=f._startSpan(a,b);f._diag.debug("start span",p);let r=!1;function s(){r?f._diag.debug(`span ${q.name} - already finished`):(r=!0,f._diag.debug(`finishing span ${q.name}`),q.end()),m.removeListener("close",s)}return m.addListener("close",s),arguments[k]=f._patchNext(n,s),b.apply(this,arguments)}return Object.defineProperty(h,"length",{value:b.length,writable:!1,configurable:!0}),h}_patchUse(a){let b=this;return function(...c){let d=c[c.length-1],e=c[c.length-2]||"";return c[c.length-1]=b._patchMiddleware(e,d),a.apply(this,c)}}_patchHandle(a){let b=this;return function(){let[c,d]=[0,2],e=arguments[c],f=arguments[d],g=(0,j.addNewStackLayer)(e);return"function"==typeof f&&(arguments[d]=b._patchOut(f,g)),a.apply(this,arguments)}}_patchOut(a,b){return function(...c){return b(),Reflect.apply(a,this,c)}}}c.ConnectInstrumentation=k},403473,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectTypes=c.ConnectNames=c.AttributeNames=c.ANONYMOUS_NAME=c.ConnectInstrumentation=void 0;var d=a.r(161740);Object.defineProperty(c,"ConnectInstrumentation",{enumerable:!0,get:function(){return d.ConnectInstrumentation}}),Object.defineProperty(c,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return d.ANONYMOUS_NAME}});var e=a.r(791516);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}}),Object.defineProperty(c,"ConnectNames",{enumerable:!0,get:function(){return e.ConnectNames}}),Object.defineProperty(c,"ConnectTypes",{enumerable:!0,get:function(){return e.ConnectTypes}})},617413,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(403473),e=a.r(187845),f=a.r(309569),g="Connect",h=f.generateInstrumentOnce(g,()=>new d.ConnectInstrumentation);function i(a,b,c,d){e.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),d(a)}c.connectIntegration=e.defineIntegration(()=>({name:g,setupOnce(){h()}})),c.instrumentConnect=h,c.setupConnectErrorHandler=a=>{a.use(i);let b=e.getClient();b&&b.on("spanStart",a=>{!function(a){let b=e.spanToJSON(a).data,c=b["connect.type"];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.connect`});let d=b["connect.name"];"string"==typeof d&&a.updateName(d)}(a)}),f.ensureIsWrapped(a.use,"connect")}},194619,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},11859,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SUPPORTED_VERSIONS=c.MODULE_NAME=void 0,c.MODULE_NAME="knex",c.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},764122,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_SQLITE=c.ATTR_NET_TRANSPORT=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.ATTR_NET_TRANSPORT="net.transport",c.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},496910,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.extractTableName=c.extractPortFromConnectionString=c.extractHostFromConnectionString=c.extractDatabaseFromConnectionString=c.limitLength=c.getName=c.mapSystem=c.otelExceptionFromKnexError=c.getFormatter=void 0;let d=a.r(357122),e=a.r(764122);c.getFormatter=a=>{if(a){if(a.client){if(a.client._formatQuery)return a.client._formatQuery.bind(a.client);else if(a.client.SqlString)return a.client.SqlString.format.bind(a.client.SqlString)}if(a.builder)return a.builder.toString.bind(a.builder)}return()=>""},c.otelExceptionFromKnexError=function(a,b){return a&&a instanceof Error?{message:b,code:a.code,stack:a.stack,name:a.name}:a};let f=new Map([["sqlite3",e.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",d.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);c.mapSystem=a=>f.get(a)||a,c.getName=(a,b,c)=>b?c?`${b} ${a}.${c}`:`${b} ${a}`:a,c.limitLength=(a,b)=>"string"==typeof a&&"number"==typeof b&&0{if(a)try{return new URL(a).pathname?.replace(/^\//,"")||void 0}catch{return}},c.extractHostFromConnectionString=a=>{if(a)try{return new URL(a).hostname||void 0}catch{return}},c.extractPortFromConnectionString=a=>{if(a)try{let b=new URL(a).port;return b?parseInt(b,10):void 0}catch{return}},c.extractTableName=a=>{let b=a?._single?.table;return"object"==typeof b?(0,c.extractTableName)(b):b}},242713,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;let d=a.r(832528),e=a.r(194619),f=a.r(11859),g=a.r(167300),h=a.r(496910),i=a.r(357122),j=a.r(764122),k=Symbol("opentelemetry.instrumentation-knex.context"),l={maxQueryLength:1022,requireParentSpan:!1};class m extends g.InstrumentationBase{_semconvStability;constructor(a={}){super(e.PACKAGE_NAME,e.PACKAGE_VERSION,{...l,...a}),this._semconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new g.InstrumentationNodeModuleDefinition(f.MODULE_NAME,f.SUPPORTED_VERSIONS);return a.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),a}getRunnerNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/runner.js`,f.SUPPORTED_VERSIONS,(a,b)=>(this.ensureWrapped(a.prototype,"query",this.createQueryWrapper(b)),a),(a,b)=>(this._unwrap(a.prototype,"query"),a))}getClientNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/client.js`,f.SUPPORTED_VERSIONS,a=>(this.ensureWrapped(a.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"raw",this.storeContext.bind(this)),a),a=>(this._unwrap(a.prototype,"queryBuilder"),this._unwrap(a.prototype,"schemaBuilder"),this._unwrap(a.prototype,"raw"),a))}createQueryWrapper(a){let b=this;return function(c){return function(e){let f=this.client.config,l=h.extractTableName(this.builder),m=e?.method,n=f?.connection?.connectionString,o=f?.connection?.filename||f?.connection?.database||h.extractDatabaseFromConnectionString(n),{maxQueryLength:p}=b.getConfig(),q={"knex.version":a},r=f?.connection?.filename===":memory:"?"inproc":void 0;if(b._semconvStability&g.SemconvStability.OLD&&Object.assign(q,{[j.ATTR_DB_SYSTEM]:h.mapSystem(this.client.driverName),[j.ATTR_DB_SQL_TABLE]:l,[j.ATTR_DB_OPERATION]:m,[j.ATTR_DB_USER]:f?.connection?.user,[j.ATTR_DB_NAME]:o,[j.ATTR_NET_PEER_NAME]:f?.connection?.host??h.extractHostFromConnectionString(n),[j.ATTR_NET_PEER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n),[j.ATTR_NET_TRANSPORT]:r}),b._semconvStability&g.SemconvStability.STABLE&&Object.assign(q,{[i.ATTR_DB_SYSTEM_NAME]:h.mapSystem(this.client.driverName),[i.ATTR_DB_COLLECTION_NAME]:l,[i.ATTR_DB_OPERATION_NAME]:m,[i.ATTR_DB_NAMESPACE]:o,[i.ATTR_SERVER_ADDRESS]:f?.connection?.host??h.extractHostFromConnectionString(n),[i.ATTR_SERVER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n)}),p){let a=h.limitLength(e?.sql,p);b._semconvStability&g.SemconvStability.STABLE&&(q[i.ATTR_DB_QUERY_TEXT]=a),b._semconvStability&g.SemconvStability.OLD&&(q[j.ATTR_DB_STATEMENT]=a)}let s=this.builder[k]||d.context.active(),t=d.trace.getSpan(s),u=t&&d.trace.isSpanContextValid(t.spanContext());if(b._config.requireParentSpan&&!u)return c.bind(this)(...arguments);let v=b.tracer.startSpan(h.getName(o,m,l),{kind:d.SpanKind.CLIENT,attributes:q},s),w=d.trace.setSpan(d.context.active(),v);return d.context.with(w,c,this,...arguments).then(a=>(v.end(),a)).catch(a=>{let b=h.getFormatter(this)(e.sql,e.bindings||[]),c=a.message.replace(b+" - ",""),f=h.otelExceptionFromKnexError(a,c);throw v.recordException(f),v.setStatus({code:d.SpanStatusCode.ERROR,message:c}),v.end(),a})}}}storeContext(a){return function(){let b=a.apply(this,arguments);return Object.defineProperty(b,k,{value:d.context.active()}),b}}ensureWrapped(a,b,c){(0,g.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,c)}}c.KnexInstrumentation=m},555384,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;var d=a.r(242713);Object.defineProperty(c,"KnexInstrumentation",{enumerable:!0,get:function(){return d.KnexInstrumentation}})},523682,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(555384),e=a.r(187845),f=a.r(309569),g="Knex",h=f.generateInstrumentOnce(g,()=>new d.KnexInstrumentation({requireParentSpan:!0})),i=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{data:b}=e.spanToJSON(a);"knex.version"in b&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});c.instrumentKnex=h,c.knexIntegration=i},895264,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MSSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MSSQL="mssql"},910191,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.once=c.getSpanName=void 0,c.getSpanName=function(a,b,c,d){return"execBulkLoad"===a&&d&&b?`${a} ${d} ${b}`:"callProcedure"===a?b?`${a} ${c} ${b}`:`${a} ${c}`:b?`${a} ${b}`:`${a}`},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}}},855594,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},407612,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=c.INJECTED_CTX=void 0;let d=a.r(832528),e=a.r(427699),f=a.r(167300),g=a.r(357122),h=a.r(895264),i=a.r(910191),j=a.r(855594),k=Symbol("opentelemetry.instrumentation-tedious.current-database");c.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let l=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function m(a){Object.defineProperty(this,k,{value:a,writable:!0})}class n extends f.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,f.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new f.InstrumentationNodeModuleDefinition(n.COMPONENT,[">=1.11.0 <20"],a=>{let b=a.Connection.prototype;for(let c of l)(0,f.isWrapped)(b[c])&&this._unwrap(b,c),this._wrap(b,c,this._patchQuery(c,a));return(0,f.isWrapped)(b.connect)&&this._unwrap(b,"connect"),this._wrap(b,"connect",this._patchConnect),a},a=>{if(void 0===a)return;let b=a.Connection.prototype;for(let a of l)this._unwrap(b,a);this._unwrap(b,"connect")})]}_patchConnect(a){return function(){return m.call(this,this.config?.options?.database),this.removeListener("databaseChange",m),this.on("databaseChange",m),this.once("end",()=>{this.removeListener("databaseChange",m)}),a.apply(this,arguments)}}_buildTraceparent(a){let b=a.spanContext();return`00-${b.traceId}-${b.spanId}-0${Number(b.traceFlags||d.TraceFlags.NONE).toString(16)}`}_injectContextInfo(a,b,d){return new Promise(e=>{try{let f=new b.Request("set context_info @opentelemetry_traceparent",a=>{e()});Object.defineProperty(f,c.INJECTED_CTX,{value:!0});let g=Buffer.from(d,"utf8");f.addParameter("opentelemetry_traceparent",b.TYPES.VarBinary,g,{length:g.length}),a.execSql(f)}catch{e()}})}_shouldInjectFor(a){return"execSql"===a||"execSqlBatch"===a||"callProcedure"===a||"execute"===a}_patchQuery(a,b){return j=>{let l=this;function m(m){if(m?.[c.INJECTED_CTX])return j.apply(this,arguments);if(!(m instanceof e.EventEmitter))return l._diag.warn(`Unexpected invocation of patched ${a} method. Span not recorded`),j.apply(this,arguments);let n=0,o=0,p=()=>o++,q=()=>n++,r=this[k],s="sp_prepare"===m.sqlTextOrProcedure&&m.parametersByName?.stmt?.value?m.parametersByName.stmt.value:m.sqlTextOrProcedure,t={};l._dbSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_DB_SYSTEM]=h.DB_SYSTEM_VALUE_MSSQL,t[h.ATTR_DB_NAME]=r,t[h.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,t[h.ATTR_DB_STATEMENT]=s,t[h.ATTR_DB_SQL_TABLE]=m.table),l._dbSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_DB_NAMESPACE]=r,t[g.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,t[g.ATTR_DB_QUERY_TEXT]=s,t[g.ATTR_DB_COLLECTION_NAME]=m.table),l._netSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_NET_PEER_NAME]=this.config?.server,t[h.ATTR_NET_PEER_PORT]=this.config?.options?.port),l._netSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_SERVER_ADDRESS]=this.config?.server,t[g.ATTR_SERVER_PORT]=this.config?.options?.port);let u=l.tracer.startSpan((0,i.getSpanName)(a,r,s,m.table),{kind:d.SpanKind.CLIENT,attributes:t}),v=(0,i.once)(a=>{m.removeListener("done",p),m.removeListener("doneInProc",p),m.removeListener("doneProc",q),m.removeListener("error",v),this.removeListener("end",v),u.setAttribute("tedious.procedure_count",n),u.setAttribute("tedious.statement_count",o),a&&u.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),u.end()});m.on("done",p),m.on("doneInProc",p),m.on("doneProc",q),m.once("error",v),this.on("end",v),"function"==typeof m.callback?l._wrap(m,"callback",l._patchCallbackQuery(v)):l._diag.error("Expected request.callback to be a function");let w=()=>d.context.with(d.trace.setSpan(d.context.active(),u),j,this,...arguments);if(!(l.getConfig().enableTraceContextPropagation&&l._shouldInjectFor(a)))return w();let x=l._buildTraceparent(u);l._injectContextInfo(this,b,x).finally(w)}return Object.defineProperty(m,"length",{value:j.length,writable:!1}),m}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c),b.apply(this,arguments)}}}c.TediousInstrumentation=n},752273,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=void 0;var d=a.r(407612);Object.defineProperty(c,"TediousInstrumentation",{enumerable:!0,get:function(){return d.TediousInstrumentation}})},903664,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(752273),e=a.r(187845),f=a.r(309569),g=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),h="Tedious",i=f.generateInstrumentOnce(h,()=>new d.TediousInstrumentation({})),j=e.defineIntegration(()=>{let a;return{name:h,setupOnce(){let b=i();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{description:b,data:c}=e.spanToJSON(a);if(!b||"mssql"!==c["db.system"])return;let d=b.split(" ")[0]||"";g.has(d)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});c.instrumentTedious=i,c.tediousIntegration=j},824688,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},998342,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(824688),g="generic-pool";class h extends e.InstrumentationBase{_isDisabled=!1;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition(g,[">=3.0.0 <4"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquirePatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.4.0 <3"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <2.4"],a=>(this._isDisabled=!1,(0,e.isWrapped)(a.Pool)&&this._unwrap(a,"Pool"),this._wrap(a,"Pool",this._poolWrapper.bind(this)),a),a=>(this._isDisabled=!0,a))]}_acquirePatcher(a){let b=this;return function(...c){let e=d.context.active(),f=b.tracer.startSpan("generic-pool.acquire",{},e);return d.context.with(d.trace.setSpan(e,f),()=>a.call(this,...c).then(a=>(f.end(),a),a=>{throw f.recordException(a),f.end(),a}))}}_poolWrapper(a){let b=this;return function(){let c=a.apply(this,arguments);return b._wrap(c,"acquire",b._acquireWithCallbacksPatcher.bind(b)),c}}_acquireWithCallbacksPatcher(a){let b=this;return function(c,e){if(b._isDisabled)return a.call(this,c,e);let f=d.context.active(),g=b.tracer.startSpan("generic-pool.acquire",{},f);return d.context.with(d.trace.setSpan(f,g),()=>{a.call(this,(a,b)=>{if(g.end(),c)return c(a,b)},e)})}}}c.GenericPoolInstrumentation=h},985162,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;var d=a.r(998342);Object.defineProperty(c,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return d.GenericPoolInstrumentation}})},785663,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(985162),e=a.r(187845),f=a.r(309569),g="GenericPool",h=f.generateInstrumentOnce(g,()=>new d.GenericPoolInstrumentation({}));c.genericPoolIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let b=e.spanToJSON(a).description;("generic-pool.aquire"===b||"generic-pool.acquire"===b)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),c.instrumentGenericPool=h},951712,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.31.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},521492,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;let d=a.r(167300),e=a.r(832528),f=a.r(951712),g="dataloader";function h(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class i extends d.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new d.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <3"],a=>{let b=h(a);return this._patchLoad(b.prototype),this._patchLoadMany(b.prototype),this._patchPrime(b.prototype),this._patchClear(b.prototype),this._patchClearAll(b.prototype),this._getPatchedConstructor(b)},a=>{let b=h(a);["load","loadMany","prime","clear","clearAll"].forEach(a=>{(0,d.isWrapped)(b.prototype[a])&&this._unwrap(b.prototype,a)})})]}shouldCreateSpans(){let a=this.getConfig();return void 0!==e.trace.getSpan(e.context.active())||!a.requireParentSpan}getSpanName(a,b){let c=a.name;return null==c?`${g}.${b}`:`${g}.${b} ${c}`}_wrapBatchLoadFn(a){let b=this;return function(...c){if(!b.isEnabled()||!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"batch"),{links:this._batch?.spanLinks},d);return e.context.with(e.trace.setSpan(d,f),()=>a.apply(this,c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a}))}}_getPatchedConstructor(a){let b=this,c=a.prototype;if(!b.isEnabled())return a;function e(...c){return"function"==typeof c[0]&&((0,d.isWrapped)(c[0])&&b._unwrap(c,0),c[0]=b._wrapBatchLoadFn(c[0])),a.apply(this,c)}return e.prototype=c,e}_patchLoad(a){(0,d.isWrapped)(a.load)&&this._unwrap(a,"load"),this._wrap(a,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"load"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>{let b=a.call(this,...c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:f.spanContext()})),b})}}_patchLoadMany(a){(0,d.isWrapped)(a.loadMany)&&this._unwrap(a,"loadMany"),this._wrap(a,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"loadMany"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c).then(a=>(f.end(),a)))}}_patchPrime(a){(0,d.isWrapped)(a.prime)&&this._unwrap(a,"prime"),this._wrap(a,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"prime"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClear(a){(0,d.isWrapped)(a.clear)&&this._unwrap(a,"clear"),this._wrap(a,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clear"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClearAll(a){(0,d.isWrapped)(a.clearAll)&&this._unwrap(a,"clearAll"),this._wrap(a,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clearAll"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}}c.DataloaderInstrumentation=i},621292,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;var d=a.r(521492);Object.defineProperty(c,"DataloaderInstrumentation",{enumerable:!0,get:function(){return d.DataloaderInstrumentation}})},141019,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621292),e=a.r(187845),f=a.r(309569),g="Dataloader",h=f.generateInstrumentOnce(g,()=>new d.DataloaderInstrumentation({requireParentSpan:!0}));c.dataloaderIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>{b.on("spanStart",a=>{let b=e.spanToJSON(a);b.description?.startsWith("dataloader")&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===b.description||"dataloader.loadMany"===b.description||"dataloader.batch"===b.description)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),c.instrumentDataloader=h},363619,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION=void 0,c.ATTR_MESSAGING_OPERATION="messaging.operation",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port"},31854,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_MESSAGING_CONVERSATION_ID=c.OLD_ATTR_MESSAGING_MESSAGE_ID=c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=c.ATTR_MESSAGING_URL=c.ATTR_MESSAGING_PROTOCOL_VERSION=c.ATTR_MESSAGING_PROTOCOL=c.MESSAGING_OPERATION_VALUE_PROCESS=c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=c.ATTR_MESSAGING_DESTINATION_KIND=c.ATTR_MESSAGING_DESTINATION=void 0,c.ATTR_MESSAGING_DESTINATION="messaging.destination",c.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",c.MESSAGING_OPERATION_VALUE_PROCESS="process",c.ATTR_MESSAGING_PROTOCOL="messaging.protocol",c.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",c.ATTR_MESSAGING_URL="messaging.url",c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",c.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",c.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},215900,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.DEFAULT_CONFIG=c.EndOperation=void 0,(d=c.EndOperation||(c.EndOperation={})).AutoAck="auto ack",d.Ack="ack",d.AckAll="ackAll",d.Reject="reject",d.Nack="nack",d.NackAll="nackAll",d.ChannelClosed="channel closed",d.ChannelError="channel error",d.InstrumentationTimeout="instrumentation timeout",c.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},486569,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isConfirmChannelTracing=c.unmarkConfirmChannelTracing=c.markConfirmChannelTracing=c.getConnectionAttributesFromUrl=c.getConnectionAttributesFromServer=c.normalizeExchange=c.CONNECTION_ATTRIBUTES=c.CHANNEL_CONSUME_TIMEOUT_TIMER=c.CHANNEL_SPANS_NOT_ENDED=c.MESSAGE_STORED_SPAN=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(363619),h=a.r(31854);c.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),c.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),c.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),c.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let i=(0,d.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");c.normalizeExchange=a=>""!==a?a:"";let j=(a,b)=>a||("AMQP"===b?5672:5671),k=a=>{let b=a||"amqp";return(b.endsWith(":")?b.substring(0,b.length-1):b).toUpperCase()},l=(a,b,c,e)=>c?{[b]:c}:(d.diag.error(`amqplib instrumentation: could not extract connection attribute ${e} from user supplied url`,{url:a}),{});c.getConnectionAttributesFromServer=a=>{let b=a.serverProperties.product?.toLowerCase?.();return b?{[g.ATTR_MESSAGING_SYSTEM]:b}:{}},c.getConnectionAttributesFromUrl=(a,b)=>{let c={[h.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(a=a||"amqp://localhost")){let d=a,i=k(d?.protocol);Object.assign(c,{...l(a,h.ATTR_MESSAGING_PROTOCOL,i,"protocol")});let m=d?.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(a,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(a,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(d.port,i);b&e.SemconvStability.OLD&&Object.assign(c,l(a,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(a,f.ATTR_SERVER_PORT,n,"port"))}else{let i=a.replace(/:[^:@/]*@/,":***@");c[h.ATTR_MESSAGING_URL]=i;try{let a=new URL(i),d=k(a.protocol);Object.assign(c,{...l(i,h.ATTR_MESSAGING_PROTOCOL,d,"protocol")});let m=a.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(i,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(i,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(a.port?parseInt(a.port):void 0,d);b&e.SemconvStability.OLD&&Object.assign(c,l(i,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(i,f.ATTR_SERVER_PORT,n,"port"))}catch(a){d.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:i,err:a})}}return c},c.markConfirmChannelTracing=a=>a.setValue(i,!0),c.unmarkConfirmChannelTracing=a=>a.deleteValue(i),c.isConfirmChannelTracing=a=>!0===a.getValue(i)},557061,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.61.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},284258,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AmqplibInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(363619),h=a.r(31854),i=a.r(215900),j=a.r(486569),k=a.r(557061),l=[">=0.5.5 <1"];class m extends f.InstrumentationBase{_netSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...i.DEFAULT_CONFIG,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...i.DEFAULT_CONFIG,...a})}init(){let a=new f.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),b=new f.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),c=new f.InstrumentationNodeModuleFile("amqplib/lib/connect.js",l,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new f.InstrumentationNodeModuleDefinition("amqplib",l,void 0,void 0,[a,c,b])}patchConnect(a){return a=this.unpatchConnect(a),(0,f.isWrapped)(a.connect)||this._wrap(a,"connect",this.getConnectPatch.bind(this)),a}unpatchConnect(a){return(0,f.isWrapped)(a.connect)&&this._unwrap(a,"connect"),a}patchChannelModel(a,b){return(0,f.isWrapped)(a.Channel.prototype.publish)||this._wrap(a.Channel.prototype,"publish",this.getPublishPatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.consume)||this._wrap(a.Channel.prototype,"consume",this.getConsumePatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.ack)||this._wrap(a.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,i.EndOperation.Ack)),(0,f.isWrapped)(a.Channel.prototype.nack)||this._wrap(a.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,i.EndOperation.Nack)),(0,f.isWrapped)(a.Channel.prototype.reject)||this._wrap(a.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,i.EndOperation.Reject)),(0,f.isWrapped)(a.Channel.prototype.ackAll)||this._wrap(a.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,i.EndOperation.AckAll)),(0,f.isWrapped)(a.Channel.prototype.nackAll)||this._wrap(a.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,i.EndOperation.NackAll)),(0,f.isWrapped)(a.Channel.prototype.emit)||this._wrap(a.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)||this._wrap(a.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,b)),a}unpatchChannelModel(a){return(0,f.isWrapped)(a.Channel.prototype.publish)&&this._unwrap(a.Channel.prototype,"publish"),(0,f.isWrapped)(a.Channel.prototype.consume)&&this._unwrap(a.Channel.prototype,"consume"),(0,f.isWrapped)(a.Channel.prototype.ack)&&this._unwrap(a.Channel.prototype,"ack"),(0,f.isWrapped)(a.Channel.prototype.nack)&&this._unwrap(a.Channel.prototype,"nack"),(0,f.isWrapped)(a.Channel.prototype.reject)&&this._unwrap(a.Channel.prototype,"reject"),(0,f.isWrapped)(a.Channel.prototype.ackAll)&&this._unwrap(a.Channel.prototype,"ackAll"),(0,f.isWrapped)(a.Channel.prototype.nackAll)&&this._unwrap(a.Channel.prototype,"nackAll"),(0,f.isWrapped)(a.Channel.prototype.emit)&&this._unwrap(a.Channel.prototype,"emit"),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)&&this._unwrap(a.ConfirmChannel.prototype,"publish"),a}getConnectPatch(a){let b=this;return function(c,d,e){return a.call(this,c,d,function(a,d){if(null==a){let a=(0,j.getConnectionAttributesFromUrl)(c,b._netSemconvStability),e=(0,j.getConnectionAttributesFromServer)(d);d[j.CONNECTION_ATTRIBUTES]={...a,...e}}e.apply(this,arguments)})}}getChannelEmitPatch(a){let b=this;return function(c){if("close"===c){b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelClosed,void 0);let a=this[j.CHANNEL_CONSUME_TIMEOUT_TIMER];a&&clearInterval(a),this[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===c&&b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelError,void 0);return a.apply(this,arguments)}}getAckAllPatch(a,b,c){let d=this;return function(e){return d.endAllSpansOnChannel(this,a,b,e),c.apply(this,arguments)}}getAckPatch(a,b,c){let d=this;return function(e,f,g){let h=b===i.EndOperation.Reject?f:g,k=this[j.CHANNEL_SPANS_NOT_ENDED]??[],l=k.findIndex(a=>a.msg===e);if(l<0)d.endConsumerSpan(e,a,b,h);else if(b!==i.EndOperation.Reject&&f){for(let c=0;c<=l;c++)d.endConsumerSpan(k[c].msg,a,b,h);k.splice(0,l+1)}else d.endConsumerSpan(e,a,b,h),k.splice(l,1);return c.apply(this,arguments)}}getConsumePatch(a,b){let c=this;return function(k,l,m){let n=this;if(!Object.prototype.hasOwnProperty.call(n,j.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:a}=c.getConfig();if(a){let b=setInterval(()=>{c.checkConsumeTimeoutOnChannel(n)},a);b.unref(),n[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=b}n[j.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(b){let o;if(!b)return l.call(this,b);let p=b.properties.headers??{},q=d.propagation.extract(d.ROOT_CONTEXT,p),r=b.fields?.exchange;if(c._config.useLinksForConsume){let a=q?d.trace.getSpan(q)?.spanContext():void 0;q=void 0,a&&(o=[{context:a}])}let s=c.tracer.startSpan(`${k} process`,{kind:d.SpanKind.CONSUMER,attributes:{...n?.connection?.[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:r,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:b.fields?.routingKey,[g.ATTR_MESSAGING_OPERATION]:h.MESSAGING_OPERATION_VALUE_PROCESS,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:b?.properties.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:b?.properties.correlationId},links:o},q),{consumeHook:t}=c.getConfig();t&&(0,f.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:a,msg:b}),a=>{a&&d.diag.error("amqplib instrumentation: consumerHook error",a)},!0),m?.noAck||(n[j.CHANNEL_SPANS_NOT_ENDED].push({msg:b,timeOfConsume:(0,e.hrTime)()}),b[j.MESSAGE_STORED_SPAN]=s);let u=q||d.ROOT_CONTEXT;d.context.with(d.trace.setSpan(u,s),()=>{l.call(this,b)}),m?.noAck&&(c.callConsumeEndHook(s,b,!1,i.EndOperation.AutoAck),s.end())},b.apply(this,arguments)}}getConfirmedPublishPatch(a,b){let c=this;return function(e,g,h,i,k){let{span:l,modifiedOptions:m}=c.createPublishSpan(c,e,g,this,i),{publishHook:n}=c.getConfig();n&&(0,f.safeExecuteInTheMiddle)(()=>n(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:m,isConfirmChannel:!0}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let o=(0,j.markConfirmChannelTracing)(d.context.active()),p=[...arguments];return p[3]=m,p[4]=d.context.bind((0,j.unmarkConfirmChannelTracing)(d.trace.setSpan(o,l)),function(b,j){try{k?.call(this,b,j)}finally{let{publishConfirmHook:j}=c.getConfig();j&&(0,f.safeExecuteInTheMiddle)(()=>j(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:i,isConfirmChannel:!0,confirmError:b}),a=>{a&&d.diag.error("amqplib instrumentation: publishConfirmHook error",a)},!0),b&&l.setStatus({code:d.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),l.end()}}),d.context.with(o,b.bind(this,...p))}}getPublishPatch(a,b){let c=this;return function(e,g,h,i){if((0,j.isConfirmChannelTracing)(d.context.active()))return b.apply(this,arguments);{let{span:j,modifiedOptions:k}=c.createPublishSpan(c,e,g,this,i),{publishHook:l}=c.getConfig();l&&(0,f.safeExecuteInTheMiddle)(()=>l(j,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:k,isConfirmChannel:!1}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let m=[...arguments];m[3]=k;let n=b.apply(this,m);return j.end(),n}}}createPublishSpan(a,b,c,e,f){let g=(0,j.normalizeExchange)(b),i=a.tracer.startSpan(`publish ${g}`,{kind:d.SpanKind.PRODUCER,attributes:{...e.connection[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:b,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:c,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:f?.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:f?.correlationId}}),k=f??{};return k.headers=k.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),i),k.headers),{span:i,modifiedOptions:k}}endConsumerSpan(a,b,c,e){let f=a[j.MESSAGE_STORED_SPAN];f&&(!1!==b&&f.setStatus({code:d.SpanStatusCode.ERROR,message:c!==i.EndOperation.ChannelClosed&&c!==i.EndOperation.ChannelError?`${c} called on message${!0===e?" with requeue":!1===e?" without requeue":""}`:c}),this.callConsumeEndHook(f,a,b,c),f.end(),a[j.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(a,b,c,d){(a[j.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(a=>{this.endConsumerSpan(a.msg,b,c,d)}),a[j.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(a,b,c,e){let{consumeEndHook:g}=this.getConfig();g&&(0,f.safeExecuteInTheMiddle)(()=>g(a,{msg:b,rejected:c,endOperation:e}),a=>{a&&d.diag.error("amqplib instrumentation: consumerEndHook error",a)},!0)}checkConsumeTimeoutOnChannel(a){let b,c=(0,e.hrTime)(),d=a[j.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:f}=this.getConfig();for(b=0;b{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EndOperation=c.DEFAULT_CONFIG=c.AmqplibInstrumentation=void 0;var d=a.r(284258);Object.defineProperty(c,"AmqplibInstrumentation",{enumerable:!0,get:function(){return d.AmqplibInstrumentation}});var e=a.r(215900);Object.defineProperty(c,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return e.DEFAULT_CONFIG}}),Object.defineProperty(c,"EndOperation",{enumerable:!0,get:function(){return e.EndOperation}})},372233,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(991031),e=a.r(187845),f=a.r(309569),g="Amqplib",h={consumeEndHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.consumer")},publishHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.publisher")}},i=f.generateInstrumentOnce(g,()=>new d.AmqplibInstrumentation(h));c.amqplibIntegration=e.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentAmqplib=i},370289,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.INTEGRATION_NAME="VercelAI"},209207,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(370289),g=[">=3.0.0 <7"],h=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function i(a){"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)&&(function(a){for(let b of a){if(!("object"==typeof b&&null!==b&&"type"in b&&"error"in b&&"toolName"in b&&"toolCallId"in b&&"tool-error"===b.type&&b.error instanceof Error))continue;let a=e._INTERNAL_getSpanContextForToolCallId(b.toolCallId);a?e.withScope(c=>{c.setContext("trace",{trace_id:a.traceId,span_id:a.spanId}),c.setTag("vercel.ai.tool.name",b.toolName),c.setTag("vercel.ai.tool.callId",b.toolCallId),c.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):e.withScope(a=>{a.setTag("vercel.ai.tool.name",b.toolName),a.setTag("vercel.ai.tool.callId",b.toolCallId),a.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(a.content),j(a.content))}function j(a){for(let b of a)"object"==typeof b&&null!==b&&"toolCallId"in b&&"string"==typeof b.toolCallId&&e._INTERNAL_cleanupToolCallSpanContext(b.toolCallId)}function k(a,b,c,d){return{recordInputs:a?.recordInputs!==void 0?a.recordInputs:void 0!==b.recordInputs?b.recordInputs:!0===c||d,recordOutputs:a?.recordOutputs!==void 0?a.recordOutputs:void 0!==b.recordOutputs?b.recordOutputs:!0===c||d}}class l extends d.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(a={}){super("@sentry/instrumentation-vercel-ai",e.SDK_VERSION,a),l.prototype.__init.call(this),l.prototype.__init2.call(this)}init(){return new d.InstrumentationNodeModuleDefinition("ai",g,this._patch.bind(this))}callWhenPatched(a){this._isPatched?a():this._callbacks.push(a)}_patch(a){this._isPatched=!0,this._callbacks.forEach(a=>a()),this._callbacks=[];let b=a=>new Proxy(a,{apply:(a,b,c)=>{let d=c[0].experimental_telemetry||{},g=d.isEnabled,h=e.getClient(),j=h?.getIntegrationByName(f.INTEGRATION_NAME),{recordInputs:l,recordOutputs:m}=k(j?.options,d,g,!!j&&!!h?.getOptions().sendDefaultPii);return c[0].experimental_telemetry={...d,isEnabled:void 0===g||g,recordInputs:l,recordOutputs:m},e.handleCallbackErrors(()=>Reflect.apply(a,b,c),a=>{a&&"object"==typeof a&&e.addNonEnumerableProperty(a,"_sentry_active_span",e.getActiveSpan())},()=>{},a=>{i(a)})}});if("[object Module]"===Object.prototype.toString.call(a)){for(let c of h)null!=a[c]&&(a[c]=b(a[c]));return a}{let c=h.reduce((c,d)=>(null!=a[d]&&(c[d]=b(a[d])),c),{});return{...a,...c}}}}c.SentryVercelAiInstrumentation=l,c.cleanupToolCallSpanContexts=j,c.determineRecordingSettings=k,c.processToolCallResults=i},602959,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(370289),g=a.r(209207),h=e.generateInstrumentOnce(f.INTEGRATION_NAME,()=>new g.SentryVercelAiInstrumentation({})),i=d.defineIntegration((a={})=>{let b;return{name:f.INTEGRATION_NAME,options:a,setupOnce(){b=h()},afterAllSetup(c){let e;a.force??(e=c.getIntegrationByName("Modules"),!!e?.getModules?.()?.ai)?d.addVercelAiProcessors(c):b?.callWhenPatched(()=>d.addVercelAiProcessors(c))}}});c.instrumentVercelAi=h,c.vercelAIIntegration=i},339499,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=4.0.0 <7"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-openai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("openai",f,this._patch.bind(this))}_patch(a){let b=a;return b=this._patchClient(b,"OpenAI"),b=this._patchClient(b,"AzureOpenAI")}_patchClient(a,b){let c=a[b];if(!c)return a;let d=this.getConfig(),f=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.OPENAI_INTEGRATION_NAME))return Reflect.construct(c,a);let b=Reflect.construct(c,a);return e.instrumentOpenAiClient(b,d)};for(let a of(Object.setPrototypeOf(f,c),Object.setPrototypeOf(f.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(f,a,b)}try{a[b]=f}catch{Object.defineProperty(a,b,{value:f,writable:!0,configurable:!0,enumerable:!0})}if(a.default===c)try{a.default=f}catch{Object.defineProperty(a,"default",{value:f,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryOpenAiInstrumentation=g},783325,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(339499),g=e.generateInstrumentOnce(d.OPENAI_INTEGRATION_NAME,a=>new f.SentryOpenAiInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.OPENAI_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentOpenAi=g,c.openAIIntegration=h},297431,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.19.2 <1.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-anthropic-ai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",f,this._patch.bind(this))}_patch(a){let b=a.Anthropic,c=this.getConfig(),d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentAnthropicAiClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}try{a.Anthropic=d}catch{Object.defineProperty(a,"Anthropic",{value:d,writable:!0,configurable:!0,enumerable:!0})}if(a.default===b)try{a.default=d}catch{Object.defineProperty(a,"default",{value:d,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryAnthropicAiInstrumentation=g},876254,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(297431),g=e.generateInstrumentOnce(d.ANTHROPIC_AI_INTEGRATION_NAME,a=>new f.SentryAnthropicAiInstrumentation(a));c.anthropicAIIntegration=d.defineIntegration((a={})=>({name:d.ANTHROPIC_AI_INTEGRATION_NAME,options:a,setupOnce(){g(a)}})),c.instrumentAnthropicAi=g},702821,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.10.0 <2"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-google-genai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@google/genai",f,a=>this._patch(a),a=>a,[new d.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",f,a=>this._patch(a),a=>a)])}_patch(a){let b=a.GoogleGenAI,c=this.getConfig();if("function"!=typeof b)return a;let d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentGoogleGenAIClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}return e.replaceExports(a,"GoogleGenAI",d),a}}c.SentryGoogleGenAiInstrumentation=g},2031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(702821),g=e.generateInstrumentOnce(d.GOOGLE_GENAI_INTEGRATION_NAME,a=>new f.SentryGoogleGenAiInstrumentation(a));c.googleGenAIIntegration=d.defineIntegration((a={})=>({name:d.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){g(a)}})),c.instrumentGoogleGenAI=g},721669,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.1.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langchain",e.SDK_VERSION,a)}init(){let a=[];for(let b of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])a.push(new d.InstrumentationNodeModuleDefinition(b,f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile(`${b}/dist/index.cjs`,f,this._patch.bind(this),a=>a)]));return a.push(new d.InstrumentationNodeModuleDefinition("langchain",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",f,this._patch.bind(this),a=>a)])),a}_patch(a){e._INTERNAL_skipAiProviderWrapping([e.OPENAI_INTEGRATION_NAME,e.ANTHROPIC_AI_INTEGRATION_NAME,e.GOOGLE_GENAI_INTEGRATION_NAME]);let b=e.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(a,b),a}_patchRunnableMethods(a,b){let c=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],d=Object.values(a.universal_exports??a).find(a=>"function"==typeof a&&c.includes(a.name));if(!d)return;let e=d.prototype;if(!e.__sentry_patched__)for(let a of(e.__sentry_patched__=!0,["invoke","stream","batch"])){let c=e[a];"function"==typeof c&&(e[a]=function(a,b,c){return new Proxy(a,{apply(a,c,d){var e,f;let g=d[1];(!g||"object"!=typeof g||Array.isArray(g))&&(g={},d[1]=g);let h=(e=g.callbacks,f=b,e?Array.isArray(e)?e.includes(f)?e:[...e,f]:"object"==typeof e?[e,f]:e:[f]);return g.callbacks=h,Reflect.apply(a,c,d)}})}(c,b))}}}c.SentryLangChainInstrumentation=g},252877,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(721669),g=e.generateInstrumentOnce(d.LANGCHAIN_INTEGRATION_NAME,a=>new f.SentryLangChainInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGCHAIN_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangChain=g,c.langChainIntegration=h},750457,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.0.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langgraph",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@langchain/langgraph",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",f,this._patch.bind(this),a=>a)])}_patch(a){return a.StateGraph&&"function"==typeof a.StateGraph&&e.instrumentLangGraph(a.StateGraph.prototype,this.getConfig()),a}}c.SentryLangGraphInstrumentation=g},365497,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(750457),g=e.generateInstrumentOnce(d.LANGGRAPH_INTEGRATION_NAME,a=>new f.SentryLangGraphInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGGRAPH_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangGraph=g,c.langGraphIntegration=h},571160,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));c.buildLaunchDarklyFlagUsedHandlerShim=function(){return d.isBrowser()||d.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},c.launchDarklyIntegrationShim=e},980419,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));c.OpenFeatureIntegrationHookShim=class{constructor(){d.isBrowser()||d.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},c.openFeatureIntegrationShim=e},351649,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.statsigIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},420316,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.unleashIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},535383,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.growthbookIntegrationShim=a.r(187845).growthbookIntegration},41036,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(761095),e=a.r(832528),f=a.r(167300),g=a.r(357122);function h(a,b,c,d,e){var f,g,h,l,m,n,o,p;return i(a,c),b(a,"addDoc",(f=d,g=e,function(a){return function(b,c){let d=k(f,"addDoc",b);return g(d),j(d,()=>a(b,c))}})),b(a,"getDocs",(h=d,l=e,function(a){return function(b){let c=k(h,"getDocs",b);return l(c),j(c,()=>a(b))}})),b(a,"setDoc",(m=d,n=e,function(a){return function(b,c,d){let e=k(m,"setDoc",b.parent||b);return n(e),j(e,()=>void 0!==d?a(b,c,d):a(b,c))}})),b(a,"deleteDoc",(o=d,p=e,function(a){return function(b){let c=k(o,"deleteDoc",b.parent||b);return p(c),j(c,()=>a(b))}})),a}function i(a,b){for(let c of["addDoc","getDocs","setDoc","deleteDoc"])f.isWrapped(a[c])&&b(a,c);return a}function j(a,b){return e.context.with(e.trace.setSpan(e.context.active(),a),()=>f.safeExecuteInTheMiddle(()=>b(),b=>{b&&a.recordException(b),a.end()},!0))}function k(a,b,c){let d=a.startSpan(`${b} ${c.path}`,{kind:e.SpanKind.CLIENT});return function(a,b){let c=b.firestore.app,d=c.options,e=(b.firestore.toJSON()||{}).settings||{},f={[g.ATTR_DB_COLLECTION_NAME]:b.path,[g.ATTR_DB_NAMESPACE]:c.name,[g.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":b.type,"firebase.firestore.options.projectId":d.projectId,"firebase.firestore.options.appId":d.appId,"firebase.firestore.options.messagingSenderId":d.messagingSenderId,"firebase.firestore.options.storageBucket":d.storageBucket},{address:h,port:i}=l(e);h&&(f[g.ATTR_SERVER_ADDRESS]=h),i&&(f[g.ATTR_SERVER_PORT]=i),a.setAttributes(f)}(d,c),d.setAttribute(g.ATTR_DB_OPERATION_NAME,b),d}function l(a){let b,c;if("string"==typeof a.host)if(a.host.startsWith("[")){if(a.host.endsWith("]"))b=a.host.replace(/^\[|\]$/g,"");else if(a.host.includes("]:")){let d=a.host.lastIndexOf(":");-1!==d&&(b=a.host.slice(1,d).replace(/^\[|\]$/g,""),c=a.host.slice(d+1))}}else if(d.isIPv6(a.host))b=a.host;else{let d=a.host.lastIndexOf(":");-1!==d?(b=a.host.slice(0,d),c=a.host.slice(d+1)):b=a.host}return{address:b,port:c?parseInt(c,10):void 0}}c.getPortAndAddress=l,c.patchFirestore=function(a,b,c,d,g){let j=()=>{},k=g.firestoreSpanCreationHook;"function"==typeof k&&(j=a=>{f.safeExecuteInTheMiddle(()=>k(a),a=>{a&&e.diag.error(a?.message)},!0)});let l=new f.InstrumentationNodeModuleDefinition("@firebase/firestore",b,b=>h(b,c,d,a,j));for(let e of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])l.files.push(new f.InstrumentationNodeModuleFile(e,b,b=>h(b,c,d,a,j),a=>i(a,d)));return l}},647427,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300);function f(a,b,c){return function(e){return function(...f){let g="function"==typeof f[0]?f[0]:f[1],h="function"==typeof f[0]?void 0:f[0];if(!g)return e.call(this,...f);let i=async function(...e){let f=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",h=a.startSpan(`firebase.function.${c}`,{kind:d.SpanKind.SERVER}),i={"faas.name":f,"faas.trigger":c,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(i["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(i["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),h.setAttributes(i),b?.requestHook?.(h),d.context.with(d.trace.setSpan(d.context.active(),h),async()=>{let a,c;try{c=await g.apply(this,e)}catch(b){a=b}if(b?.responseHook?.(h,a),a&&h.recordException(a),h.end(),a)throw await b?.errorHook?.(h,a),a;return c})};return h?e.call(this,h,i):e.call(this,i)}}}function g(a,b){for(let c of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])e.isWrapped(a[c])&&b(a,c);return a}c.patchFunctions=function(a,b,c,h,i){let j=()=>{},k=()=>{},l=i.functions?.errorHook,m=i.functions?.requestHook,n=i.functions?.responseHook;"function"==typeof n&&(k=(a,b)=>{e.safeExecuteInTheMiddle(()=>n(a,b),a=>{a&&d.diag.error(a?.message)},!0)}),"function"==typeof m&&(j=a=>{e.safeExecuteInTheMiddle(()=>m(a),a=>{a&&d.diag.error(a?.message)},!0)});let o=new e.InstrumentationNodeModuleDefinition("firebase-functions",b);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:d,triggerType:i})=>{o.files.push(new e.InstrumentationNodeModuleFile(d,b,b=>(function(a,b,c,d,e,h){switch(g(a,c),h){case"function":b(a,"onRequest",f(d,e,"http.request")),b(a,"onCall",f(d,e,"http.call"));break;case"firestore":b(a,"onDocumentCreated",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdated",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeleted",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWritten",f(d,e,"firestore.document.written")),b(a,"onDocumentCreatedWithAuthContext",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdatedWithAuthContext",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeletedWithAuthContext",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWrittenWithAuthContext",f(d,e,"firestore.document.written"));break;case"scheduler":b(a,"onSchedule",f(d,e,"scheduler.scheduled"));break;case"storage":b(a,"onObjectFinalized",f(d,e,"storage.object.finalized")),b(a,"onObjectArchived",f(d,e,"storage.object.archived")),b(a,"onObjectDeleted",f(d,e,"storage.object.deleted")),b(a,"onObjectMetadataUpdated",f(d,e,"storage.object.metadataUpdated"))}return a})(b,c,h,a,{requestHook:j,responseHook:k,errorHook:l},i),a=>g(a,h)))}),o},c.patchV2Functions=f},562446,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(41036),g=a.r(647427),h={},i=[">=3.0.0 <5"],j=[">=6.0.0 <7"];class k extends d.InstrumentationBase{constructor(a=h){super("@sentry/instrumentation-firebase",e.SDK_VERSION,a)}setConfig(a={}){super.setConfig({...h,...a})}init(){let a=[];return a.push(f.patchFirestore(this.tracer,i,this._wrap,this._unwrap,this.getConfig())),a.push(g.patchFunctions(this.tracer,j,this._wrap,this._unwrap,this.getConfig())),a}}c.FirebaseInstrumentation=k},562382,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(562446),g="Firebase",h={firestoreSpanCreationHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.firestore"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.functions"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(a,b)=>{b&&(d.captureException(b,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d.flush(2e3))}}},i=e.generateInstrumentOnce(g,()=>new f.FirebaseInstrumentation(h));c.firebaseIntegration=d.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentFirebase=i},426414,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(948678),e=a.r(372233),f=a.r(876254),g=a.r(617413),h=a.r(31953),i=a.r(533819),j=a.r(562382),k=a.r(785663),l=a.r(2031),m=a.r(534849),n=a.r(969899),o=a.r(27047),p=a.r(142670),q=a.r(550583),r=a.r(252877),s=a.r(365497),t=a.r(268935),u=a.r(228663),v=a.r(720382),w=a.r(370840),x=a.r(592734),y=a.r(783325),z=a.r(257141),A=a.r(870983),B=a.r(770948),C=a.r(461054),D=a.r(903664),E=a.r(602959);c.getAutoPerformanceIntegrations=function(){return[h.expressIntegration(),i.fastifyIntegration(),m.graphqlIntegration(),o.honoIntegration(),u.mongoIntegration(),v.mongooseIntegration(),w.mysqlIntegration(),x.mysql2Integration(),C.redisIntegration(),z.postgresIntegration(),B.prismaIntegration(),n.hapiIntegration(),q.koaIntegration(),g.connectIntegration(),D.tediousIntegration(),k.genericPoolIntegration(),p.kafkaIntegration(),e.amqplibIntegration(),t.lruMemoizerIntegration(),r.langChainIntegration(),s.langGraphIntegration(),E.vercelAIIntegration(),y.openAIIntegration(),f.anthropicAIIntegration(),l.googleGenAIIntegration(),A.postgresJsIntegration(),j.firebaseIntegration()]},c.getOpenTelemetryInstrumentationToPreload=function(){return[d.instrumentSentryHttp,d.instrumentOtelHttp,h.instrumentExpress,g.instrumentConnect,i.instrumentFastify,i.instrumentFastifyV3,n.instrumentHapi,o.instrumentHono,p.instrumentKafka,q.instrumentKoa,t.instrumentLruMemoizer,u.instrumentMongo,v.instrumentMongoose,w.instrumentMysql,x.instrumentMysql2,z.instrumentPostgres,n.instrumentHapi,m.instrumentGraphql,C.instrumentRedis,D.instrumentTedious,k.instrumentGenericPool,e.instrumentAmqplib,r.instrumentLangChain,E.instrumentVercelAi,y.instrumentOpenAi,A.instrumentPostgresJs,j.instrumentFirebase,f.instrumentAnthropicAi,l.instrumentGoogleGenAI,s.instrumentLangGraph]}},319410,a=>{"use strict";let b;a.s([],485393),a.i(485393);var c=a.i(984414),d=a.i(928530),e=a.i(307554),f=a.i(39342);let g=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(a){let b={},d=(0,f.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),g=(0,f.getStringFromEnv)("OTEL_SERVICE_NAME");if(d)try{let a=this._parseResourceAttributes(d);Object.assign(b,a)}catch(a){c.diag.debug(`EnvDetector failed: ${a instanceof Error?a.message:a}`)}return g&&(b[e.ATTR_SERVICE_NAME]=g),{attributes:b}}_parseResourceAttributes(a){if(!a)return{};let b={};for(let c of a.split(this._COMMA_SEPARATOR)){let a,d,e=c.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==e.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${c}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[f,g]=e,h=f.trim(),i=g.trim();if(0===h.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${c}".`);try{a=decodeURIComponent(h),d=decodeURIComponent(i)}catch(a){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${c}": ${a instanceof Error?a.message:a}`)}if(a.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${a}".`);if(d.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${a}".`);b[a]=d}return b}};var h=a.i(446786),i=a.i(605365);async function j(){if(!b)switch(i.platform){case"darwin":b=(await a.A(939510)).getMachineId;break;case"linux":b=(await a.A(962327)).getMachineId;break;case"freebsd":b=(await a.A(665688)).getMachineId;break;case"win32":b=(await a.A(256493)).getMachineId;break;default:b=(await a.A(205639)).getMachineId}return b()}let k=new class{detect(a){return{attributes:{"host.name":(0,h.hostname)(),"host.arch":(a=>{switch(a){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return a}})((0,h.arch)()),"host.id":j()}}}},l=new class{detect(a){return{attributes:{"os.type":(a=>{switch(a){case"sunos":return"solaris";case"win32":return"windows";default:return a}})((0,h.platform)()),"os.version":(0,h.release)()}}}},m=new class{detect(a){let b={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(b["process.command"]=process.argv[1]);try{let a=h.userInfo();b["process.owner"]=a.username}catch(a){c.diag.debug(`error obtaining process owner: ${a}`)}return{attributes:b}}};var n=a.i(254799);let o=new class{detect(a){return{attributes:{"service.instance.id":(0,n.randomUUID)()}}}};var p=a.i(726435);a.s(["defaultResource",()=>d.defaultResource,"defaultServiceName",()=>p.defaultServiceName,"detectResources",0,(a={})=>(a.detectors||[]).map(b=>{try{let e=(0,d.resourceFromDetectedResource)(b.detect(a));return c.diag.debug(`${b.constructor.name} found resource.`,e),e}catch(a){return c.diag.debug(`${b.constructor.name} failed: ${a.message}`),(0,d.emptyResource)()}}).reduce((a,b)=>a.merge(b),(0,d.emptyResource)()),"emptyResource",()=>d.emptyResource,"envDetector",0,g,"hostDetector",0,k,"osDetector",0,l,"processDetector",0,m,"resourceFromAttributes",()=>d.resourceFromAttributes,"serviceInstanceIdDetector",0,o],319410)},562622,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(319410),f=a.r(409633),g=a.r(357122),h=a.r(187845),i=a.r(309569),j=a.r(221598),k=a.r(852223),l=a.r(426414);function m(a,b={}){let c=new f.BasicTracerProvider({sampler:new j.SentrySampler(a),resource:e.defaultResource().merge(e.resourceFromAttributes({[g.ATTR_SERVICE_NAME]:"node",[g.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[g.ATTR_SERVICE_VERSION]:h.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new j.SentrySpanProcessor({timeout:n(a.getOptions().maxSpanWaitDuration)}),...b.spanProcessors||[]]});d.trace.setGlobalTracerProvider(c),d.propagation.setGlobalPropagator(new j.SentryPropagator);let k=new i.SentryContextManager;return d.context.setGlobalContextManager(k),[c,k.getAsyncLocalStorageLookup()]}function n(a){if(null!=a){if(a>1e6)return k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(a<=0||Number.isNaN(a)){k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return a}}c._clampSpanProcessorTimeout=n,c.initOpenTelemetry=function(a,b={}){a.getOptions().debug&&i.setupOpenTelemetryLogger();let[c,d]=m(a,b);a.traceProvider=c,a.asyncLocalStorageLookup=d},c.preloadOpenTelemetry=function(a={}){var b;let c,{debug:d}=a;d&&h.debug.enable(),i.initializeEsmLoader(),(b=a.integrations,c=l.getOpenTelemetryInstrumentationToPreload(),b?c.filter(a=>{let c=a.id;return b.some(a=>c===a||c.startsWith(`${a}.`))}):c).forEach(a=>{a(),d&&h.debug.log(`[Sentry] Preloaded ${a.id} instrumentation`)})},c.setupOtel=m},969031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(948678),g=a.r(412292),h=a.r(426414),i=a.r(562622);function j(){return e.getDefaultIntegrations().filter(a=>"Http"!==a.name&&"NodeFetch"!==a.name).concat(f.httpIntegration(),g.nativeNodeFetchIntegration())}function k(a){return[...j(),...d.hasSpansEnabled(a)?h.getAutoPerformanceIntegrations():[]]}function l(a={},b){d.applySdkMetadata(a,"node");let c=e.init({...a,defaultIntegrations:a.defaultIntegrations??b(a)});return c&&!a.skipOpenTelemetrySetup&&(i.initOpenTelemetry(c,{spanProcessors:a.openTelemetrySpanProcessors}),e.validateOpenTelemetrySetup()),c}c.getDefaultIntegrations=k,c.getDefaultIntegrationsWithoutPerformance=j,c.init=function(a={}){return l(a,k)},c.initWithoutDefaultIntegrations=function(a={}){return l(a,()=>[])}},848074,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(948678),e=a.r(412292),f=a.r(56551),g=a.r(31953),h=a.r(533819),i=a.r(534849),j=a.r(142670),k=a.r(268935),l=a.r(228663),m=a.r(720382),n=a.r(370840),o=a.r(592734),p=a.r(461054),q=a.r(257141),r=a.r(870983),s=a.r(770948),t=a.r(969899),u=a.r(27047),v=a.r(550583),w=a.r(617413),x=a.r(523682),y=a.r(903664),z=a.r(785663),A=a.r(141019),B=a.r(372233),C=a.r(602959),D=a.r(783325),E=a.r(876254),F=a.r(2031),G=a.r(252877),H=a.r(365497),I=a.r(571160),J=a.r(980419),K=a.r(351649),L=a.r(420316),M=a.r(535383),N=a.r(562382),O=a.r(969031),P=a.r(562622),Q=a.r(426414),R=a.r(221598),S=a.r(187845),T=a.r(309569);c.httpIntegration=d.httpIntegration,c.nativeNodeFetchIntegration=e.nativeNodeFetchIntegration,c.fsIntegration=f.fsIntegration,c.expressErrorHandler=g.expressErrorHandler,c.expressIntegration=g.expressIntegration,c.setupExpressErrorHandler=g.setupExpressErrorHandler,c.fastifyIntegration=h.fastifyIntegration,c.setupFastifyErrorHandler=h.setupFastifyErrorHandler,c.graphqlIntegration=i.graphqlIntegration,c.kafkaIntegration=j.kafkaIntegration,c.lruMemoizerIntegration=k.lruMemoizerIntegration,c.mongoIntegration=l.mongoIntegration,c.mongooseIntegration=m.mongooseIntegration,c.mysqlIntegration=n.mysqlIntegration,c.mysql2Integration=o.mysql2Integration,c.redisIntegration=p.redisIntegration,c.postgresIntegration=q.postgresIntegration,c.postgresJsIntegration=r.postgresJsIntegration,c.prismaIntegration=s.prismaIntegration,c.hapiIntegration=t.hapiIntegration,c.setupHapiErrorHandler=t.setupHapiErrorHandler,c.honoIntegration=u.honoIntegration,c.setupHonoErrorHandler=u.setupHonoErrorHandler,c.koaIntegration=v.koaIntegration,c.setupKoaErrorHandler=v.setupKoaErrorHandler,c.connectIntegration=w.connectIntegration,c.setupConnectErrorHandler=w.setupConnectErrorHandler,c.knexIntegration=x.knexIntegration,c.tediousIntegration=y.tediousIntegration,c.genericPoolIntegration=z.genericPoolIntegration,c.dataloaderIntegration=A.dataloaderIntegration,c.amqplibIntegration=B.amqplibIntegration,c.vercelAIIntegration=C.vercelAIIntegration,c.openAIIntegration=D.openAIIntegration,c.anthropicAIIntegration=E.anthropicAIIntegration,c.googleGenAIIntegration=F.googleGenAIIntegration,c.langChainIntegration=G.langChainIntegration,c.langGraphIntegration=H.langGraphIntegration,c.buildLaunchDarklyFlagUsedHandler=I.buildLaunchDarklyFlagUsedHandlerShim,c.launchDarklyIntegration=I.launchDarklyIntegrationShim,c.OpenFeatureIntegrationHook=J.OpenFeatureIntegrationHookShim,c.openFeatureIntegration=J.openFeatureIntegrationShim,c.statsigIntegration=K.statsigIntegrationShim,c.unleashIntegration=L.unleashIntegrationShim,c.growthbookIntegration=M.growthbookIntegrationShim,c.firebaseIntegration=N.firebaseIntegration,c.getDefaultIntegrations=O.getDefaultIntegrations,c.getDefaultIntegrationsWithoutPerformance=O.getDefaultIntegrationsWithoutPerformance,c.init=O.init,c.initWithoutDefaultIntegrations=O.initWithoutDefaultIntegrations,c.initOpenTelemetry=P.initOpenTelemetry,c.preloadOpenTelemetry=P.preloadOpenTelemetry,c.getAutoPerformanceIntegrations=Q.getAutoPerformanceIntegrations,c.setNodeAsyncContextStrategy=R.setOpenTelemetryContextAsyncContextStrategy,c.SDK_VERSION=S.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=S.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=S.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=S.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=S.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=S.Scope,c.addBreadcrumb=S.addBreadcrumb,c.addEventProcessor=S.addEventProcessor,c.addIntegration=S.addIntegration,c.captureCheckIn=S.captureCheckIn,c.captureConsoleIntegration=S.captureConsoleIntegration,c.captureEvent=S.captureEvent,c.captureException=S.captureException,c.captureFeedback=S.captureFeedback,c.captureMessage=S.captureMessage,c.captureSession=S.captureSession,c.close=S.close,c.consoleIntegration=S.consoleIntegration,c.consoleLoggingIntegration=S.consoleLoggingIntegration,c.continueTrace=S.continueTrace,c.createConsolaReporter=S.createConsolaReporter,c.createLangChainCallbackHandler=S.createLangChainCallbackHandler,c.createTransport=S.createTransport,c.dedupeIntegration=S.dedupeIntegration,c.endSession=S.endSession,c.eventFiltersIntegration=S.eventFiltersIntegration,c.extraErrorDataIntegration=S.extraErrorDataIntegration,c.featureFlagsIntegration=S.featureFlagsIntegration,c.flush=S.flush,c.functionToStringIntegration=S.functionToStringIntegration,c.getActiveSpan=S.getActiveSpan,c.getClient=S.getClient,c.getCurrentScope=S.getCurrentScope,c.getGlobalScope=S.getGlobalScope,c.getIsolationScope=S.getIsolationScope,c.getRootSpan=S.getRootSpan,c.getSpanDescendants=S.getSpanDescendants,c.getSpanStatusFromHttpCode=S.getSpanStatusFromHttpCode,c.getTraceData=S.getTraceData,c.getTraceMetaTags=S.getTraceMetaTags,c.httpHeadersToSpanAttributes=S.httpHeadersToSpanAttributes,c.inboundFiltersIntegration=S.inboundFiltersIntegration,c.instrumentAnthropicAiClient=S.instrumentAnthropicAiClient,c.instrumentGoogleGenAIClient=S.instrumentGoogleGenAIClient,c.instrumentLangGraph=S.instrumentLangGraph,c.instrumentOpenAiClient=S.instrumentOpenAiClient,c.instrumentStateGraphCompile=S.instrumentStateGraphCompile,c.instrumentSupabaseClient=S.instrumentSupabaseClient,c.isEnabled=S.isEnabled,c.isInitialized=S.isInitialized,c.lastEventId=S.lastEventId,c.linkedErrorsIntegration=S.linkedErrorsIntegration,c.parameterize=S.parameterize,c.profiler=S.profiler,c.requestDataIntegration=S.requestDataIntegration,c.rewriteFramesIntegration=S.rewriteFramesIntegration,c.setContext=S.setContext,c.setConversationId=S.setConversationId,c.setCurrentClient=S.setCurrentClient,c.setExtra=S.setExtra,c.setExtras=S.setExtras,c.setHttpStatus=S.setHttpStatus,c.setMeasurement=S.setMeasurement,c.setTag=S.setTag,c.setTags=S.setTags,c.setUser=S.setUser,c.spanToBaggageHeader=S.spanToBaggageHeader,c.spanToJSON=S.spanToJSON,c.spanToTraceHeader=S.spanToTraceHeader,c.startInactiveSpan=S.startInactiveSpan,c.startNewTrace=S.startNewTrace,c.startSession=S.startSession,c.startSpan=S.startSpan,c.startSpanManual=S.startSpanManual,c.supabaseIntegration=S.supabaseIntegration,c.suppressTracing=S.suppressTracing,c.trpcMiddleware=S.trpcMiddleware,c.updateSpanName=S.updateSpanName,c.winterCGHeadersToDict=S.winterCGHeadersToDict,c.withActiveSpan=S.withActiveSpan,c.withIsolationScope=S.withIsolationScope,c.withMonitor=S.withMonitor,c.withScope=S.withScope,c.wrapMcpServerWithSentry=S.wrapMcpServerWithSentry,c.zodErrorsIntegration=S.zodErrorsIntegration,c.NODE_VERSION=T.NODE_VERSION,c.NodeClient=T.NodeClient,c.SentryContextManager=T.SentryContextManager,c.anrIntegration=T.anrIntegration,c.childProcessIntegration=T.childProcessIntegration,c.contextLinesIntegration=T.contextLinesIntegration,c.createGetModuleFromFilename=T.createGetModuleFromFilename,c.createSentryWinstonTransport=T.createSentryWinstonTransport,c.cron=T.cron,c.defaultStackParser=T.defaultStackParser,c.disableAnrDetectionForCallback=T.disableAnrDetectionForCallback,c.generateInstrumentOnce=T.generateInstrumentOnce,c.getSentryRelease=T.getSentryRelease,c.httpServerIntegration=T.httpServerIntegration,c.httpServerSpansIntegration=T.httpServerSpansIntegration,c.localVariablesIntegration=T.localVariablesIntegration,c.logger=T.logger,c.makeNodeTransport=T.makeNodeTransport,c.metrics=T.metrics,c.modulesIntegration=T.modulesIntegration,c.nodeContextIntegration=T.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=T.nodeRuntimeMetricsIntegration,c.onUncaughtExceptionIntegration=T.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=T.onUnhandledRejectionIntegration,c.pinoIntegration=T.pinoIntegration,c.processSessionIntegration=T.processSessionIntegration,c.spotlightIntegration=T.spotlightIntegration,c.systemErrorIntegration=T.systemErrorIntegration,c.validateOpenTelemetrySetup=T.validateOpenTelemetrySetup},505891,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(522734),f=a.r(814747),g=null,h=null;c.createRouteManifest=function(a){let b;if(a?.appDirPath)b=a.appDirPath;else{let a=process.cwd(),c=f.join(a,"app"),d=f.join(a,"src","app");e.existsSync(c)&&e.lstatSync(c).isDirectory()?b=c:e.existsSync(d)&&e.lstatSync(d).isDirectory()&&(b=d)}if(!b)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(g&&h===b&&d===a?.includeRouteGroups)return g;let{dynamicRoutes:c,staticRoutes:i,isrRoutes:j}=function a(b,c="",d=!1){let g=[],h=[],i=[];try{let k=e.readdirSync(b,{withFileTypes:!0}),l=k.find(a=>{var b;return b=a.name,"page.tsx"===b||"page.jsx"===b||"page.ts"===b||"page.js"===b});if(l){let a=d?c||"/":(c||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),j=a.includes(":"),k=f.join(b,l.name);if(function(a){try{let b=e.readFileSync(a,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(b)}catch{return!1}}(k)&&i.push(a),j){let{regex:b,paramNames:c,hasOptionalPrefix:d}=function(a){let b,c,d=a.split("/").filter(Boolean),e=[],f=[],g=!1;for(let a of d)if(a.startsWith(":")){let b=a.substring(1);if(b.endsWith("*?")){let a=b.slice(0,-2);f.push(a),g=!0}else if(b.endsWith("*")){let a=b.slice(0,-1);f.push(a),e.push("(.+)")}else f.push(b),e.push("([^/]+)")}else e.push(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(g)if(0===e.length)c="^/(.*)$";else{let a=e.join("/");c=`^/${a}(?:/(.*))?$`}else c=`^/${e.join("/")}$`;return{regex:c,paramNames:f,hasOptionalPrefix:(b=f[0],void 0!==b&&("locale"===b||"lang"===b||"language"===b))}}(a);g.push({path:a,regex:b,paramNames:c,hasOptionalPrefix:d})}else h.push({path:a})}for(let e of k)if(e.isDirectory()){var j;let k,l=f.join(b,e.name),m=e.name.startsWith("[")&&e.name.endsWith("]"),n=(k=(j=e.name).startsWith("(")&&j.endsWith(")")?d?e.name:"":m?function(a){if(a.startsWith("[[...")&&a.endsWith("]]")){let b=a.slice(5,-2);return`:${b}*?`}if(a.startsWith("[...")&&a.endsWith("]")){let b=a.slice(4,-1);return`:${b}*`}return`:${a.slice(1,-1)}`}(e.name):e.name)?`${c}/${k}`:c,o=a(l,n,d);g.push(...o.dynamicRoutes),h.push(...o.staticRoutes),i.push(...o.isrRoutes)}}catch(a){console.warn("Error building route manifest:",a)}return{dynamicRoutes:g,staticRoutes:h,isrRoutes:i}}(b,a?.basePath,a?.includeRouteGroups),k={dynamicRoutes:c,staticRoutes:i,isrRoutes:j};return g=k,h=b,d=a?.includeRouteGroups,k}},520112,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.resolveTunnelRoute=function(a){let b;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let c="string"==typeof a?a:(b=d._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${b}`);return c&&(process.env.__SENTRY_TUNNEL_ROUTE__=c),c},c.setUpTunnelRewriteRules=function(a,b){let c=a.rewrites,d=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,e=d||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",f=d||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";a.rewrites=async(...a)=>{let d={source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:e},g=[{source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:f},d];if("function"!=typeof c)return g;let h=await c(...a);return Array.isArray(h)?[...g,...h]:{...h,beforeFiles:[...g,...h.beforeFiles||[]]}}}},563540,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(848074),f=a.r(522734),g=a.r(814747),h=a.r(505891),i=a.r(832609),j=a.r(183276),k=a.r(520112),l=!1,m=!1;function n(a,b){if(!b)return a;let c=a=>"function"==typeof b?b(a):b.some(b=>d.isMatchingPattern(a,b));return{staticRoutes:a.staticRoutes.filter(a=>!c(a.path)),dynamicRoutes:a.dynamicRoutes.filter(a=>!c(a.path)),isrRoutes:a.isrRoutes.filter(a=>!c(a))}}c.filterRouteManifest=n,c.getNextMajor=function(a){if(!a)return;let{major:b}=d.parseSemver(a);return b},c.maybeCreateRouteManifest=function(a,b){if(b.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==b.routeManifestInjection&&(void 0!==b.routeManifestInjection||!b.disableManifestInjection))return n(h.createRouteManifest({basePath:a.basePath}),b.routeManifestInjection?.exclude)},c.maybeGetVercelCronsConfig=function(a){let b={config:void 0,strategy:void 0};if(!process.env.VERCEL)return b;let c=a._experimental?.vercelCronsMonitoring===!0,e=a.webpack?.automaticVercelMonitors===!0;if(!c&&!e)return b;let h=function(){try{let a=g.join(process.cwd(),"vercel.json"),b=f.readFileSync(a,"utf8"),c=JSON.parse(b).crons;if(c&&Array.isArray(c)&&c.length>0)return c;return}catch(a){if("ENOENT"===a.code)return;d.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",a);return}}();return h&&(b.config=h,c&&e?(d.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),b.strategy="spans"):c?(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),b.strategy="spans"):(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),b.strategy="wrapper")),b},c.maybeSetClientTraceMetadataOption=function(a,b){if(b){let{major:c,minor:e}=d.parseSemver(b);void 0!==c&&void 0!==e&&(c>=15||14===c&&e>=3)&&(a.experimental=a.experimental||{},a.experimental.clientTraceMetadata=["baggage","sentry-trace",...a.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},c.maybeSetInstrumentationHookOption=function(a,b){if(b&&i.requiresInstrumentationHook(b)){a.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),a.experimental={instrumentationHook:!0,...a.experimental};return}b||(a.experimental&&"instrumentationHook"in a.experimental?!1===a.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),a.experimental={instrumentationHook:!0,...a.experimental}))},c.maybeSetUpTunnelRouteRewriteRules=function(a,b){if(!b.tunnelRoute)return;if("export"===a.output){l||(l=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let c=k.resolveTunnelRoute(b.tunnelRoute);b.tunnelRoute=c||void 0,k.setUpTunnelRewriteRules(a,c)},c.resolveReleaseName=function(a){return a.release?.create!==!1?a.release?.name??e.getSentryRelease()??j.getGitRevision():a.release?.name},c.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(m||(m=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},c.warnIfMissingOnRouterTransitionStartHook=function(a){let b=j.getInstrumentationClientFileContents();void 0===b||b.includes("onRouterTransitionStart")||a.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},253989,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832609),e=a.r(183276),f=a.r(920753),g=a.r(993918),h=a.r(563540);c.getFinalConfigObject=function(a,b){f.migrateDeprecatedWebpackOptions(b);let c=h.resolveReleaseName(b);if(h.maybeSetUpTunnelRouteRewriteRules(a,b),h.shouldReturnEarlyInExperimentalBuildMode())return a;let i=h.maybeCreateRouteManifest(a,b),j=h.maybeGetVercelCronsConfig(b);e.setUpBuildTimeVariables(a,b,c);let k=d.getNextjsVersion(),l=h.getNextMajor(k);h.maybeSetClientTraceMetadataOption(a,k),h.maybeSetInstrumentationHookOption(a,k),h.warnIfMissingOnRouterTransitionStartHook(b);let m=g.getBundlerInfo(k);g.maybeWarnAboutUnsupportedTurbopack(k,m),g.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(k,b,m);let n=g.maybeConstructTurbopackConfig(a,b,i,k,m,j),o=g.resolveUseRunAfterProductionCompileHookOption(b,m);return g.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,nextJsVersion:k,bundlerInfo:m,turboPackConfig:n,shouldUseRunAfterProductionCompileHook:o}),g.maybeEnableTurbopackSourcemaps(a,b,m),{...a,...g.getServerExternalPackagesPatch(a,l),...g.getWebpackPatch({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,routeManifest:i,nextJsVersion:k,shouldUseRunAfterProductionCompileHook:o,bundlerInfo:m,vercelCronsConfigResult:j}),...g.getTurbopackPatch(m,n)}}},474224,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(253989);c.withSentryConfig=function(a,b={}){let c=a||{};return"function"==typeof c?function(...a){let f=c.apply(this,a);return d.isThenable(f)?f.then(a=>e.getFinalConfigObject(a,b)):e.getFinalConfigObject(f,b)}:e.getFinalConfigObject(c,b)}},263581,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{"use strict";var b="";function c(a){return a.split("\n").reduce(function(a,c){var k,l,m,n=function(a){var c=d.exec(a);if(!c)return null;var f=c[2]&&0===c[2].indexOf("native"),g=c[2]&&0===c[2].indexOf("eval"),h=e.exec(c[2]);return g&&null!=h&&(c[2]=h[1],c[3]=h[2],c[4]=h[3]),{file:f?null:c[2],methodName:c[1]||b,arguments:f?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}(c)||((k=f.exec(c))?{file:k[2],methodName:k[1]||b,arguments:[],lineNumber:+k[3],column:k[4]?+k[4]:null}:null)||function(a){var c=g.exec(a);if(!c)return null;var d=c[3]&&c[3].indexOf(" > eval")>-1,e=h.exec(c[3]);return d&&null!=e&&(c[3]=e[1],c[4]=e[2],c[5]=null),{file:c[3],methodName:c[1]||b,arguments:c[2]?c[2].split(","):[],lineNumber:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}(c)||((l=j.exec(c))?{file:l[2],methodName:l[1]||b,arguments:[],lineNumber:+l[3],column:l[4]?+l[4]:null}:null)||((m=i.exec(c))?{file:m[3],methodName:m[1]||b,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return n&&a.push(n),a},[])}var d=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,e=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;a.s(["parse",()=>c])},10308,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(641235),f=a.r(263581),g=d.GLOBAL_OBJ;function h(){let a=process.env._sentryBasePath??g._sentryBasePath??"";""===a||a.match(/^\//)||(a=`/${a}`);let b=process.env.PORT||"3000";return`http://localhost:${b}${a}`}async function i(a,b={}){let c=new AbortController,e=setTimeout(()=>c.abort(),3e3);return d.suppressTracing(()=>fetch(a,{...b,signal:c.signal}).finally(()=>{clearTimeout(e)}))}async function j(a,b){try{if(!(a.file?.startsWith("webpack-internal:")||a.file?.startsWith("file:")))return null;let c=new URLSearchParams;c.append("isServer",String(!1)),c.append("isEdgeServer",String(!1)),c.append("isAppDirectory",String(!0)),c.append("errorMessage",b.toString()),Object.keys(a).forEach(b=>{c.append(b,(a[b]??"").toString())});let d=h(),e=await i(`${d}/__nextjs_original-stack-frame?${c.toString()}`);if(!e.ok||204===e.status)return null;let f=await e.json();return{originalCodeFrame:f.originalCodeFrame,originalStackFrame:f.originalStackFrame}}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}async function k(a){try{let b={frames:a.filter(a=>!!a.file).map(a=>(a.file=a.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:a.file,methodName:a.methodName??"",arguments:[],lineNumber:a.lineNumber??0,column:a.column??0,line1:a.lineNumber??0,column1:a.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},c=h(),d=await i(`${c}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok||204===d.status)return null;return(await d.json()).map(a=>({originalCodeFrame:a.value.originalCodeFrame,originalStackFrame:a.value.originalStackFrame}))}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}c.devErrorSymbolicationEventProcessor=async function a(a,b){"transaction"===a.type&&(a.spans=a.spans?.filter(a=>{let b=a.data?.["http.url"];return"string"!=typeof b||!b.includes("__nextjs_original-stack-frame")}));try{if(b.originalException&&b.originalException instanceof Error&&b.originalException.stack){let c,f=e.parse(b.originalException.stack),h=g._sentryNextJsVersion;if(!h)return a;let i=d.parseSemver(h);if(i.major>15||15===i.major&&i.minor>=2){let b=await k(f);if(null===b)return a;c=b}else c=await Promise.all(f.map(a=>j(a,b.originalException)));a.exception?.values?.[0]?.stacktrace?.frames&&(a.exception.values[0].stacktrace.frames=a.exception.values[0].stacktrace.frames.map((a,b,d)=>{let e=c[d.length-1-b];if(!e?.originalStackFrame||!e.originalCodeFrame)return{...a,platform:a.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:f,preContextLines:g,postContextLines:h}=function(a){let b,c=a.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(a=>!a.match(/^\s*\|/)).map(a=>({line:a,isErrorLine:!!a.match(/^>/)})).map(a=>({...a,line:a.line.replace(/^.*\|/,"")})),d=[],e=[],f=!1;for(let a of c)a.isErrorLine?(b=a.line,f=!0):f?e.push(a.line):d.push(a.line);return{contextLine:b,preContextLines:d,postContextLines:e}}(e.originalCodeFrame);return{...a,pre_context:g,context_line:f,post_context:h,function:e.originalStackFrame.methodName,filename:e.originalStackFrame.file?function(a){if(!a)return a;let b=a.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return b?b[1]:a}(e.originalStackFrame.file):void 0,lineno:e.originalStackFrame.lineNumber||e.originalStackFrame.line1||void 0,colno:e.originalStackFrame.column||e.originalStackFrame.column1||void 0}}))}}catch{}return a}},983894,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getVercelEnv=function(a){let b=a?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return b?`vercel-${b}`:void 0}},411290,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.ATTR_NEXT_ROUTE="next.route",c.ATTR_NEXT_SEGMENT="next.segment",c.ATTR_NEXT_SPAN_NAME="next.span_name",c.ATTR_NEXT_SPAN_TYPE="next.span_type"},228551,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",c.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",c.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},948358,(a,b,c)=>{"use strict";b.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},686758,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE:function(){return f},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="/_not-found",g=`${f}/page`,h="/_global-error",i=`${h}/page`},850067,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={APP_CLIENT_INTERNALS:function(){return ab},APP_PATHS_MANIFEST:function(){return u},APP_PATH_ROUTES_MANIFEST:function(){return v},AdapterOutputType:function(){return k},BARREL_OPTIMIZATION_PREFIX:function(){return U},BLOCKED_PAGES:function(){return P},BUILD_ID_FILE:function(){return O},BUILD_MANIFEST:function(){return w},CLIENT_PUBLIC_FILES_PATH:function(){return Q},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return R},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return _},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return aa},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ae},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return af},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ac},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ad},COMPILER_INDEXES:function(){return j},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return N},DEFAULT_RUNTIME_WEBPACK:function(){return ag},DEFAULT_SANS_SERIF_FONT:function(){return al},DEFAULT_SERIF_FONT:function(){return ak},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return K},DEV_CLIENT_PAGES_MANIFEST:function(){return G},DYNAMIC_CSS_MANIFEST:function(){return $},EDGE_RUNTIME_WEBPACK:function(){return ah},EDGE_UNSUPPORTED_NODE_APIS:function(){return aq},EXPORT_DETAIL:function(){return B},EXPORT_MARKER:function(){return A},FUNCTIONS_CONFIG_MANIFEST:function(){return x},IMAGES_MANIFEST:function(){return E},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Z},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return H},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return Y},MODERN_BROWSERSLIST_TARGET:function(){return g.default},NEXT_BUILTIN_DOCUMENT:function(){return T},NEXT_FONT_MANIFEST:function(){return z},PAGES_MANIFEST:function(){return s},PHASE_ANALYZE:function(){return m},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return r},PHASE_PRODUCTION_BUILD:function(){return n},PHASE_PRODUCTION_SERVER:function(){return o},PHASE_TEST:function(){return q},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return L},ROUTES_MANIFEST:function(){return D},RSC_MODULE_TYPES:function(){return ap},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return F},SERVER_PROPS_ID:function(){return aj},SERVER_REFERENCE_MANIFEST:function(){return W},STATIC_PROPS_ID:function(){return ai},STATIC_STATUS_PAGES:function(){return am},STRING_LITERAL_DROP_BUNDLE:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},SYSTEM_ENTRYPOINTS:function(){return ar},TRACE_OUTPUT_VERSION:function(){return an},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return J},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ao},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return t}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(955289)._(a.r(948358)),h=a.r(686758),i={client:"client",server:"server",edgeServer:"edge-server"},j={[i.client]:0,[i.server]:1,[i.edgeServer]:2};var k=((d={}).PAGES="PAGES",d.PAGES_API="PAGES_API",d.APP_PAGE="APP_PAGE",d.APP_ROUTE="APP_ROUTE",d.PRERENDER="PRERENDER",d.STATIC_FILE="STATIC_FILE",d.MIDDLEWARE="MIDDLEWARE",d);let l="phase-export",m="phase-analyze",n="phase-production-build",o="phase-production-server",p="phase-development-server",q="phase-test",r="phase-info",s="pages-manifest.json",t="webpack-stats.json",u="app-paths-manifest.json",v="app-path-routes-manifest.json",w="build-manifest.json",x="functions-config-manifest.json",y="subresource-integrity-manifest",z="next-font-manifest",A="export-marker.json",B="export-detail.json",C="prerender-manifest.json",D="routes-manifest.json",E="images-manifest.json",F="required-server-files",G="_devPagesManifest.json",H="middleware-manifest.json",I="_clientMiddlewareManifest.json",J="client-build-manifest.json",K="_devMiddlewareManifest.json",L="react-loadable-manifest.json",M="server",N=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],O="BUILD_ID",P=["/_document","/_app","/_error"],Q="public",R="static",S="__NEXT_DROP_CLIENT_FILE__",T="__NEXT_BUILTIN_DOCUMENT__",U="__barrel_optimize__",V="client-reference-manifest",W="server-reference-manifest",X="middleware-build-manifest",Y="middleware-react-loadable-manifest",Z="interception-route-rewrite-manifest",$="dynamic-css-manifest",_="main",aa=`${_}-app`,ab="app-pages-internals",ac="react-refresh",ad="webpack",ae="polyfills",af=Symbol(ae),ag="webpack-runtime",ah="edge-runtime-webpack",ai="__N_SSG",aj="__N_SSP",ak={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},al={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},am=["/500"],an=1,ao=6e3,ap={client:"client",server:"server"},aq=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ar=new Set([_,ac,aa]);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},517613,(a,b,c)=>{b.exports=a.r(850067)},494409,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(517613);c.isBuild=function(){return process.env.NEXT_PHASE===d.PHASE_PRODUCTION_BUILD}},291230,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581);async function f(){try{e.DEBUG_BUILD&&d.debug.log("Flushing events..."),await d.flush(2e3),e.DEBUG_BUILD&&d.debug.log("Done flushing events")}catch(a){e.DEBUG_BUILD&&d.debug.log("Error while flushing events:\n",a)}}function g(){let a=Symbol.for("__cloudflare-context__");return d.GLOBAL_OBJ[a]?.ctx}function h(a){g()?.waitUntil(a)}function i(){return"function"==typeof g()?.waitUntil}c.cloudflareWaitUntil=h,c.flushSafelyWithTimeout=f,c.isCloudflareWaitUntilAvailable=i,c.waitUntil=function(a){i()?h(a):d.vercelWaitUntil(a)}},289467,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);function e(a){let b=a.split("/").filter(a=>a&&!(a.startsWith("(")&&a.endsWith(")")));return b.length>0?`/${b.join("/")}`:"/"}function f(a,b,c,f){let g=f??e(a),h=c?.["x-forwarded-proto"],i=c?.["x-forwarded-host"]||c?.host;if(!h||!i)return g;let j=`${h}://${i}${g}`,k=d.parseStringToURLObject(j);return k?d.getSanitizedUrlStringFromUrlObject(k):g}function g(a){let b=a?.referer;if(b)try{let a=new URL(b);return d.getSanitizedUrlStringFromUrlObject(a)}catch{return}}c.buildUrlFromComponentRoute=f,c.extractSanitizedUrlFromRefererHeader=g,c.getSanitizedRequestUrl=function(a,b,c,d){let e=g(c);return e||f(a,b,c,d)},c.sanitizeRoutePath=e,c.substituteRouteParams=function(a,b){return a}},521467,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(289467);c.setUrlProcessingMetadata=function(a){if("transaction"!==a.type||a.contexts?.trace?.op!=="http.server"||!a.contexts?.trace?.data)return;let b=d.getClient();if(!b?.getOptions().sendDefaultPii)return;let c=a.contexts.trace.data,f=c["next.route"]||c["http.route"],g=c["http.target"];if(!f)return;let h=a.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),i=h?.sdkProcessingMetadata?.normalizedRequest?.headers,j=e.getSanitizedRequestUrl(f,void 0,i,g?.toString());j&&h?.sdkProcessingMetadata&&(h.sdkProcessingMetadata.normalizedRequest=h.sdkProcessingMetadata.normalizedRequest||{},h.sdkProcessingMetadata.normalizedRequest.url=j)}},553484,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(814747);c.distDirRewriteFramesIntegration=d.defineIntegration(({distDirName:a})=>{let b=e.resolve(a).replace(/(\/|\\)$/,""),c=new RegExp(d.escapeStringForRegex(b));return{...d.rewriteFramesIntegration({iteratee:a=>(a.filename=a.filename?.replace(c,"app:///_next"),a)}),name:"DistDirRewriteFrames"}})},447537,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.addHeadersAsAttributes=function(a,b){if(!a)return{};let c=a instanceof Headers||"object"==typeof a&&"get"in a?d.winterCGHeadersToDict(a):a,e=d.httpHeadersToSpanAttributes(c,d.getClient()?.getOptions().sendDefaultPii??!1);return b&&b.setAttributes(e),e}},146939,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(221598),g=a.r(411290),h=a.r(228551),i=e.GLOBAL_OBJ;c.dropMiddlewareTunnelRequests=function(a,b){if(e.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let c=b?.[g.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",j=b?.[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",k=b?.[g.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!c&&!j&&!k)return;let l=function(a){let b=i._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!b)return!1;let c=a[d.SEMATTRS_HTTP_TARGET];if("string"==typeof c){let a=c.split("?")[0]||"";return a===b||a.startsWith(`${b}/`)}return!1}(b||{}),m=f.isSentryRequestSpan(a);(l||m)&&a.setAttribute(h.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},571795,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(357122),f=a.r(187845),g=a.r(263581),h=a.r(411290),i=a.r(228551),j="__PAGE__",k=new WeakMap;function l(a){return"NextNodeServer.getLayoutOrPageModule"===a[h.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===a[h.ATTR_NEXT_SPAN_NAME]&&"string"==typeof a[h.ATTR_NEXT_SEGMENT]}function m({segment:a,route:b}){return a===j?`resolve page server component "${b}"`:""===a?"resolve root layout server component":`resolve layout server component "${a}"`}c.commonObjectToIsolationScope=function(a){if("object"!=typeof a||!a)return new f.Scope;{let b=k.get(a);if(b)return b;{let b=new f.Scope;return k.set(a,b),b}}},c.dropNextjsRootContext=function(){if(f.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let a=f.getActiveSpan();if(a){let b=f.getRootSpan(a),c=f.spanToJSON(b).data;c?.["next.span_type"]&&f.getRootSpan(a)?.setAttribute(i.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},c.escapeNextjsTracing=function(a){let b=f.GLOBAL_OBJ.AsyncLocalStorage;return b?(d||(d=new b),d.getStore())?a():f.startNewTrace(()=>d.run(!0,()=>a())):(g.DEBUG_BUILD&&f.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),a())},c.getEnhancedResolveSegmentSpanName=m,c.isResolveSegmentSpan=l,c.maybeEnhanceServerComponentSpanName=function(a,b,c){if(!l(b))return;let d=b[h.ATTR_NEXT_SEGMENT],g=c[e.ATTR_HTTP_ROUTE],i=m({segment:d,route:"string"==typeof g?g:""});a.updateName(i),a.setAttributes({"sentry.nextjs.ssr.function.type":d===j?"Page":"Layout","sentry.nextjs.ssr.function.route":g}),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},266098,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581),f="sentry.cron.checkInId",g="sentry.cron.monitorSlug",h="sentry.cron.startTime",i="sentry.cron.schedule";c.maybeCompleteCronCheckIn=function(a){let b=d.spanToJSON(a).data,c=b?.[f],j=b?.[g],k=b?.[h],l=b?.[i];if(!c||!j||"number"!=typeof k)return;let m=d._INTERNAL_safeDateNow()/1e3-k,n=d.spanToJSON(a).status,o=n&&"ok"!==n?"error":"ok";d.captureCheckIn({checkInId:c,monitorSlug:j,status:o,duration:m},"string"==typeof l?{maxRuntime:720,schedule:{type:"crontab",value:l}}:void 0),a.setAttribute(f,void 0),a.setAttribute(g,void 0),a.setAttribute(h,void 0),a.setAttribute(i,void 0),e.DEBUG_BUILD&&d.debug.log(`[Cron] Completed check-in for "${j}" with status "${o}"`)},c.maybeStartCronCheckIn=function(a,b){let c=function(){let a=globalThis;if(a._sentryVercelCronsConfig)try{return JSON.parse(a._sentryVercelCronsConfig)}catch{e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!c||!b)return;let j=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!j)return;let k=Array.isArray(j["user-agent"])?j["user-agent"][0]:j["user-agent"];if(!k?.includes("vercel-cron"))return;let l=c.find(a=>a.path===b);if(!l?.path||!l.schedule)return;let m=l.path,n=d._INTERNAL_safeDateNow()/1e3,o=d.captureCheckIn({monitorSlug:m,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}});e.DEBUG_BUILD&&d.debug.log(`[Cron] Started check-in for "${m}" with ID "${o}"`),a.setAttribute(f,o),a.setAttribute(g,m),a.setAttribute(h,n),a.setAttribute(i,l.schedule)}},658788,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e="messaging.system",f="messaging.destination.name",g="messaging.operation.name",h="sentry.queue.enriched";function i(a,b){let c=a[b];return Array.isArray(c)?c[0]:c}c.maybeCleanupQueueSpan=function(a){let b=d.spanToJSON(a).data;b?.[h]&&a.setAttribute(h,void 0)},c.maybeEnrichQueueConsumerSpan=function(a){let b=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!b||"com.vercel.queue.v2beta"!==(Array.isArray(b["ce-type"])?b["ce-type"][0]:b["ce-type"]))return;let c=i(b,"ce-vqsqueuename"),j=i(b,"ce-vqsmessageid"),k=i(b,"ce-vqsconsumergroup"),l=i(b,"ce-vqsdeliverycount");if(a.setAttribute(e,"vercel.queue"),a.setAttribute(g,"process"),c&&a.setAttribute(f,c),j&&a.setAttribute("messaging.message.id",j),k&&a.setAttribute("messaging.consumer.group.name",k),l){let b=parseInt(l,10);isNaN(b)||a.setAttribute("messaging.message.delivery_count",b)}a.setAttribute(h,!0)},c.maybeEnrichQueueProducerSpan=function(a){let b,c=d.spanToJSON(a).data,i=c?.["url.full"];if(!i)return;try{b=new URL(i)}catch{return}if("vercel-queue.com"!==b.hostname&&!b.hostname.endsWith(".vercel-queue.com"))return;let j=b.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!j)return;let k=decodeURIComponent(j[1]);a.setAttribute(e,"vercel.queue"),a.setAttribute(f,k),a.setAttribute(g,"send"),a.setAttribute(h,!0)}},155672,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(357122),f=a.r(187845),g=a.r(221598),h=a.r(411290),i=a.r(447537),j=a.r(146939),k=a.r(571795),l=a.r(266098),m=a.r(658788);c.handleOnSpanStart=function(a){let b=f.spanToJSON(a).data,c=f.getRootSpan(a),n=f.spanToJSON(c).data,o=a===c;if(j.dropMiddlewareTunnelRequests(a,b),"string"==typeof b?.[h.ATTR_NEXT_ROUTE]&&(n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD])&&!n?.[e.ATTR_HTTP_ROUTE]){let a=b[h.ATTR_NEXT_ROUTE].replace(/\/route$/,"");c.updateName(a),c.setAttribute(e.ATTR_HTTP_ROUTE,a),c.setAttribute(h.ATTR_NEXT_ROUTE,a);let d=n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD];"string"==typeof d&&f.getIsolationScope().setTransactionName(`${d} ${a}`),l.maybeStartCronCheckIn(c,a),m.maybeEnrichQueueConsumerSpan(c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let d=b[h.ATTR_NEXT_SPAN_NAME];"string"==typeof d&&(c.updateName(d),c.setAttribute(e.ATTR_HTTP_ROUTE,d),c.setAttribute(h.ATTR_NEXT_SPAN_NAME,d)),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(b?.[h.ATTR_NEXT_SPAN_TYPE]!==void 0&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),o){let a=f.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;i.addHeadersAsAttributes(a,c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&o){let b=f.getCapturedScopesOnSpan(a),c=(b.isolationScope||f.getIsolationScope()).clone(),e=b.scope||f.getCurrentScope(),h=g.getScopesFromContext(d.context.active());h&&(h.isolationScope=c),f.setCapturedScopesOnSpan(a,e,c)}k.maybeEnhanceServerComponentSpanName(a,b,n),m.maybeEnrichQueueProducerSpan(a)}},342069,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581);function f(){let a=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:a}=process.getBuiltinModule("async_hooks")??{};return a}}();if(!a||"function"!=typeof a.snapshot){e.DEBUG_BUILD&&d.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return a.snapshot()}function g(a){return a instanceof Error&&a.message.includes("AsyncLocalStorage")}c.prepareSafeIdGeneratorContext=function(){let a=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),b=d.GLOBAL_OBJ,c=f();if(!c)return;let h=c;b[a]=a=>{try{return h(a)}catch(c){if(!g(c))throw c;let b=f();if(!b)return a();h=b;try{return h(a)}catch(b){if(!g(b))throw b;return a()}}},e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},575672,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.captureUnderscoreErrorException=async function(a){let{req:b,res:c,err:f}=a,g=c?.statusCode||a.statusCode;if(g&&g<500||!a.pathname)return;if(f&&d.isAlreadyCaptured(f)){e.waitUntil(e.flushSafelyWithTimeout());let a="object"==typeof f?f.__sentry_event_id__:void 0;return"string"==typeof a?(d.getIsolationScope().setLastEventId(a),a):d.getIsolationScope().lastEventId()}let h=d.withScope(a=>{if(b){let c=d.httpRequestToRequestData(b);a.setSDKProcessingMetadata({normalizedRequest:c})}return d.captureException(f||`_error.js called with falsy error (${f})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return e.waitUntil(e.flushSafelyWithTimeout()),h}},333299,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.isUseCacheFunction=function(a){if(a.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:b}=function(a){let b=parseInt(a.slice(0,2),16),c=b>>1&63,d=Array(6);for(let a=0;a<6;a++){let b=c>>5-a&1;d[a]=1===b}return{type:1==(b>>7&1)?"use-cache":"server-action",usedArgs:d,hasRestArgs:1==(1&b)}}(a.$$id);return"use-cache"===b}},145408,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581),f=a.r(494409),g=a.r(333299);function h(a){let b=f.isBuild(),c=!!a&&g.isUseCacheFunction(a);return c&&e.DEBUG_BUILD&&d.debug.log("Skipping span creation in Cache Components context"),b||c}function i(){return new d.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}c.startInactiveSpan=function(a){return h()?i():d.startInactiveSpan(a)},c.startSpan=function(a,b){return h(b)?b(i()):d.startSpan(a,b)},c.startSpanManual=function(a,b){if(h(b)){let a=i();return b(a,()=>a.end())}return d.startSpanManual(a,b)}},988136,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(228551);c.callDataFetcherTraced=async function(a,b){try{return await a(...b)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),a}},c.withErrorInstrumentation=function(a){return async function(...b){try{return await a.apply(this,b)}catch(b){throw d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:a.name}}}),b}}},c.withTracedServerSideDataFetcher=function(a,b,c,f){return async function(...c){let g=d.httpRequestToRequestData(b);d.getCurrentScope().setTransactionName(`${f.dataFetchingMethodName} (${f.dataFetcherRouteName})`),d.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g});let h=d.getActiveSpan();h&&"/_error"!==f.requestedRouteName&&d.getRootSpan(h).setAttribute(e.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,f.requestedRouteName);let{"sentry-trace":i,baggage:j}=d.getTraceData();return{sentryTrace:i,baggage:j,data:await a.apply(this,c)}}}},709897,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetStaticPropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let f=e.withErrorInstrumentation(a);return e.callDataFetcherTraced(f,c)}})}},890588,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:f.pathname,requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c)??{};return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},739941,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapAppGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f.ctx,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_app",requestedRouteName:f.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,sentryTrace:j,baggage:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(d.pageProps||(d.pageProps={}),j&&(d.pageProps._sentryTraceData=j),k&&(d.pageProps._sentryBaggage=k)),d}}})}},588876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapDocumentGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_document",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d}=await a.apply(b,c);return d}}})}},178211,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapErrorGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_error",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},193860,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetServerSidePropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,c,f)=>{if(d.isBuild())return a.apply(c,f);let[g]=f,{req:h,res:i}=g,j=e.withErrorInstrumentation(a),k=e.withTracedServerSideDataFetcher(j,h,i,{dataFetcherRouteName:b,requestedRouteName:b,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:m,sentryTrace:n}=await k.apply(c,f);return"object"==typeof l&&null!==l&&"props"in l&&(n&&(l.props._sentryTraceData=n),m&&(l.props._sentryBaggage=m)),l}})}},902363,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.isNotFoundNavigationError=function(a){return d.isError(a)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(a.digest)},c.isRedirectNavigationError=function(a){return d.isError(a)&&"string"==typeof a.digest&&a.digest.startsWith("NEXT_REDIRECT;")}},655243,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);c.wrapServerComponentWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h=d.getIsolationScope(),i=b.headers?d.winterCGHeadersToDict(b.headers):void 0;return h.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g}=b,i=!0;h.setTransactionName(`${g} Server Component (${f})`),c&&(e.isNotFoundNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),i&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},22912,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);a.r(571795),c.wrapRouteHandlerWithSentry=function(a,b){let{method:c,parameterizedRoute:g,headers:h}=b;return new Proxy(a,{apply:async(a,b,h)=>{let i=d.getActiveSpan(),j=i?d.getRootSpan(i):void 0;return d.withIsolationScope(d.getIsolationScope(),()=>d.withScope(async k=>{k.setTransactionName(`${c} ${g}`);let l=await d.handleCallbackErrors(()=>a.apply(b,h),a=>{e.isRedirectNavigationError(a)||(e.isNotFoundNavigationError(a)?(i&&d.setHttpStatus(i,404),j&&d.setHttpStatus(j,404)):d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{f.waitUntil(f.flushSafelyWithTimeout())});try{l.status&&(i&&d.setHttpStatus(i,l.status),j&&d.setHttpStatus(j,l.status))}catch{}return l}))}})}},102626,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.wrapApiHandlerWithSentryVercelCrons=function(a,b){return new Proxy(a,{apply:(a,c,e)=>{let f;if(!e?.[0])return a.apply(c,e);let[g]=e,h="nextUrl"in g?g.nextUrl.pathname:g.url,i="nextUrl"in g?g.headers.get("user-agent"):g.headers["user-agent"];if(!b||!i?.includes("vercel-cron"))return a.apply(c,e);let j=b.find(a=>a.path===h);if(!j?.path||!j.schedule)return a.apply(c,e);let k=j.path,l=d.captureCheckIn({monitorSlug:k,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:j.schedule}}),m=d._INTERNAL_safeDateNow()/1e3,n=()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"error",duration:d._INTERNAL_safeDateNow()/1e3-m})};try{f=a.apply(c,e)}catch(a){throw n(),a}return"object"==typeof f&&null!==f&&"then"in f?Promise.resolve(f).then(()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m})},()=>{n()}):d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m}),f}})}},689914,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.wrapMiddlewareWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{let f="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(f&&"string"==typeof f){let a=c[0];if(a instanceof Request&&new URL(a.url).pathname.startsWith(f))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return d.withIsolationScope(f=>{let g,h,i=c[0],j=d.getCurrentScope();i instanceof Request?(f.setSDKProcessingMetadata({normalizedRequest:d.winterCGRequestToRequestData(i)}),g=`middleware ${i.method}`,h="url"):(g="middleware",h="component"),j.setTransactionName(g);let k=d.getActiveSpan();if(k){g="middleware",h="component";let a=d.getRootSpan(k);a&&d.setCapturedScopesOnSpan(a,j,f)}return d.startSpan({name:g,op:"http.server.middleware",attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h,[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>d.handleCallbackErrors(()=>a.apply(b,c),a=>{d.captureException(a,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{e.waitUntil(e.flushSafelyWithTimeout())}))})}})}},260329,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);function e(a,b){a&&"object"==typeof a&&d.addNonEnumerableProperty(a,"__sentry_event_id__",b)}c.wrapPageComponentWithSentry=function(a){return"function"==typeof a&&a?.prototype?.isReactComponent?class extends a{render(...a){return d.withIsolationScope(()=>{let b=d.getCurrentScope(),c="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(c){let a=d.extractTraceparentData(c);b.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return super.render(...a)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw e(b,a),b}})}}:"function"==typeof a?new Proxy(a,{apply:(a,b,c)=>d.withIsolationScope(()=>{let f=d.getCurrentScope(),g=c?.[0]?._sentryTraceData;if(g){let a=d.extractTraceparentData(g);f.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return a.apply(b,c)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw e(b,a),b}})}):a}},773896,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);c.wrapGenerationFunctionWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h,i=d.getIsolationScope();try{h=b.requestAsyncStorage?.getStore()?.headers}catch{}let j=h?d.winterCGHeadersToDict(h):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:j}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g,generationFunctionIdentifier:h}=b,j=!0;i.setTransactionName(`${g}.${h} (${f})`),c&&(e.isNotFoundNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),j&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:h}}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},341264,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230),f=a.r(263581),g=a.r(902363);async function h(a,b,c){return d.withIsolationScope(async h=>{let i,j,k=d.getClient()?.getOptions().sendDefaultPii,l={};try{let a=await b.headers;i=a?.get("sentry-trace")??void 0,j=a?.get("baggage"),a?.forEach((a,b)=>{l[b]=a})}catch{f.DEBUG_BUILD&&d.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return h.setTransactionName(`serverAction/${a}`),h.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:i,baggage:j},async()=>{try{return await d.startSpan({op:"function.server_action",name:`serverAction/${a}`,forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async a=>{let e=await d.handleCallbackErrors(c,b=>{g.isNotFoundNavigationError(b)?a.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"}):g.isRedirectNavigationError(b)||(a.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"}),d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==b.recordResponse?b.recordResponse:k)&&d.getIsolationScope().setExtra("server_action_result",e),b.formData&&b.formData.forEach((a,b)=>{d.getIsolationScope().setExtra(`server_action_form_data.${b}`,"string"==typeof a?a:"[non-string value]")}),e})}finally{e.waitUntil(e.flushSafelyWithTimeout())}})})}c.withServerActionInstrumentation=function(...a){if("function"==typeof a[1]){let[b,c]=a;return h(b,{},c)}{let[b,c,d]=a;return h(b,c,d)}}},958031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.captureRequestError=function(a,b,c){d.withScope(f=>{f.setSDKProcessingMetadata({normalizedRequest:{headers:d.headersToDict(b.headers),method:b.method}}),f.setContext("nextjs",{request_path:b.path,router_kind:c.routerKind,router_path:c.routePath,route_type:c.routeType}),f.setTransactionName(`${b.method} ${c.routePath}`),d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),e.waitUntil(e.flushSafelyWithTimeout())})}},427967,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230),f=a.r(571795);c.wrapApiHandlerWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>(f.dropNextjsRootContext(),f.escapeNextjsTracing(()=>{let[f,h]=g;return f?h?f.__withSentry_applied__?a.apply(c,g):(f.__withSentry_applied__=!0,d.withIsolationScope(i=>(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:f.headers&&d.isString(f.headers["sentry-trace"])?f.headers["sentry-trace"]:void 0,baggage:f.headers?.baggage},()=>{let j=`${(f.method||"GET").toUpperCase()} `,k=d.httpRequestToRequestData(f);return i.setSDKProcessingMetadata({normalizedRequest:k}),i.setTransactionName(`${j}${b}`),d.startSpanManual({name:`${j}${b}`,op:"http.server",forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async b=>{h.end=new Proxy(h.end,{apply:(a,c,f)=>(d.setHttpStatus(b,h.statusCode),b.end(),e.waitUntil(e.flushSafelyWithTimeout()),a.apply(c,f))});try{return await a.apply(c,g)}catch(f){let c=d.objectify(f);throw d.captureException(c,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:a.name,function:"withSentry"}}}),d.setHttpStatus(b,500),b.end(),await e.flushSafelyWithTimeout(),c}})}))):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a response object. Will not instrument.`),a.apply(c,g)):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a request object. Will not instrument.`),a.apply(c,g))}))})}},610599,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(848074),g=a.r(263581);a.r(10308);let h=a.r(983894),i=a.r(411290),j=a.r(228551),k=a.r(494409),l=a.r(291230),m=a.r(521467),n=a.r(553484),o=a.r(155672),p=a.r(342069),q=a.r(266098),r=a.r(658788),s=a.r(575672),t=a.r(145408),u=a.r(709897),v=a.r(890588),w=a.r(739941),x=a.r(588876),y=a.r(178211),z=a.r(193860),A=a.r(655243),B=a.r(22912),C=a.r(102626),D=a.r(689914),E=a.r(260329),F=a.r(773896),G=a.r(341264),H=a.r(958031),I=a.r(427967);e.GLOBAL_OBJ,c.captureUnderscoreErrorException=s.captureUnderscoreErrorException,c.startInactiveSpan=t.startInactiveSpan,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.wrapGetStaticPropsWithSentry=u.wrapGetStaticPropsWithSentry,c.wrapGetInitialPropsWithSentry=v.wrapGetInitialPropsWithSentry,c.wrapAppGetInitialPropsWithSentry=w.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=x.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=y.wrapErrorGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=z.wrapGetServerSidePropsWithSentry,c.wrapServerComponentWithSentry=A.wrapServerComponentWithSentry,c.wrapRouteHandlerWithSentry=B.wrapRouteHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,c.wrapMiddlewareWithSentry=D.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=E.wrapPageComponentWithSentry,c.wrapGenerationFunctionWithSentry=F.wrapGenerationFunctionWithSentry,c.withServerActionInstrumentation=G.withServerActionInstrumentation,c.captureRequestError=H.captureRequestError,c.wrapApiHandlerWithSentry=I.wrapApiHandlerWithSentry,c.ErrorBoundary=a=>a.children?"function"==typeof a.children?a.children():a.children:null,c.createReduxEnhancer=function(){return a=>a},c.init=function(a){if(p.prepareSafeIdGeneratorContext(),k.isBuild())return;!g.DEBUG_BUILD&&a.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let b=f.getDefaultIntegrations(a).filter(a=>"Http"!==a.name).concat(f.httpIntegration({disableIncomingRequestSpans:!0}));a.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),b.push(n.distDirRewriteFramesIntegration({distDirName:".next"}));let c=function(){if(l.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),s={environment:a.environment||process.env.SENTRY_ENVIRONMENT||h.getVercelEnv(!1)||"production",release:"9dad66acd3deb36c6e51fae1fdce6de96dd992c7",defaultIntegrations:b,...a,...c};if(g.DEBUG_BUILD&&s.debug&&e.debug.enable(),g.DEBUG_BUILD&&e.debug.log("Initializing SDK..."),e.getClient()){g.DEBUG_BUILD&&e.debug.log("SDK already initialized");return}e.applySdkMetadata(s,"nextjs",["nextjs",c?"cloudflare":"node"]);let t=f.init(s);t?.on("beforeSampling",({spanAttributes:a},b)=>{("string"==typeof a[d.SEMATTRS_HTTP_TARGET]&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof a[d.ATTR_URL_QUERY]&&a[d.ATTR_URL_QUERY].includes("sentry_key")&&a[d.ATTR_URL_QUERY].includes("sentry_client"))&&(b.decision=!1)}),t?.on("spanStart",o.handleOnSpanStart),t?.on("spanEnd",q.maybeCompleteCronCheckIn),t?.on("spanEnd",r.maybeCleanupQueueSpan),e.getGlobalScope().addEventProcessor(Object.assign(a=>{if("transaction"!==a.type)return a;if(a.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||a.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===a.transaction||a.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===a.transaction)return null;if("string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(b?.parentSampled===!1)return null}return a},{id:"NextLowQualityTransactionsFilter"})),e.getGlobalScope().addEventProcessor(Object.assign((a,b)=>{if(void 0!==a.type)return a;let c=b.originalException;if("object"==typeof c&&null!==c&&"$$typeof"in c&&c.$$typeof===Symbol.for("react.postpone"))return null;let d=a.exception?.values?.[0]?.value;return d?.includes("Suspense Exception: This is not a real error!")||d?.includes("Suspense Exception: This is not a real error, and should not leak")?null:a},{id:"DropReactControlFlowErrors"})),t?.on("preprocessEvent",a=>{if("transaction"===a.type&&a.contexts?.trace?.data?.[i.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",a.contexts.trace.op="http.server",a.transaction&&(a.transaction=e.stripUrlQueryAndFragment(a.transaction));let b=a.contexts.trace.data[d.SEMATTRS_HTTP_METHOD],c=a.contexts?.trace?.data?.[d.SEMATTRS_HTTP_TARGET],f=a.contexts.trace.data[d.ATTR_HTTP_ROUTE]||a.contexts.trace.data[i.ATTR_NEXT_ROUTE],g=a.contexts.trace.data[i.ATTR_NEXT_SPAN_NAME];if("string"==typeof b&&"string"==typeof f&&!f.startsWith("middleware")){let c=f.replace(/\/route$/,"");a.transaction=`${b} ${c}`,a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",a.contexts.trace.data[i.ATTR_NEXT_ROUTE]=c}a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==a.transaction&&(a.transaction=`${b} ${a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let h="string"==typeof g&&g.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);h&&(a.transaction=`middleware ${h[1]}`,a.contexts.trace.op="http.server.middleware"),"GET /_error"===a.transaction&&c&&(a.transaction=`${b?`${b} `:""}${c}`)}if("transaction"===a.type&&"string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);b?.traceId&&(a.contexts.trace.trace_id=b.traceId),b?.parentSpanId&&(a.contexts.trace.parent_span_id=b.parentSpanId)}m.setUrlProcessingMetadata(a)});try{e.getGlobalScope().setTag("turbopack",!0)}catch{}return g.DEBUG_BUILD&&e.debug.log("SDK successfully initialized"),t},c.showReportDialog=function(){},c.withErrorBoundary=function(a){return a},Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})},305803,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(474224),e=a.r(610599),f=a.r(848074),g=a.r(958031),h=a.r(575672),i=a.r(145408),j=a.r(341264),k=a.r(427967),l=a.r(102626),m=a.r(739941),n=a.r(588876),o=a.r(178211),p=a.r(773896),q=a.r(890588),r=a.r(193860),s=a.r(709897),t=a.r(689914),u=a.r(260329),v=a.r(22912),w=a.r(655243);c.withSentryConfig=d.withSentryConfig,c.ErrorBoundary=e.ErrorBoundary,c.createReduxEnhancer=e.createReduxEnhancer,c.init=e.init,c.showReportDialog=e.showReportDialog,c.withErrorBoundary=e.withErrorBoundary,c.captureRequestError=g.captureRequestError,c.captureUnderscoreErrorException=h.captureUnderscoreErrorException,c.startInactiveSpan=i.startInactiveSpan,c.startSpan=i.startSpan,c.startSpanManual=i.startSpanManual,c.withServerActionInstrumentation=j.withServerActionInstrumentation,c.wrapApiHandlerWithSentry=k.wrapApiHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=l.wrapApiHandlerWithSentryVercelCrons,c.wrapAppGetInitialPropsWithSentry=m.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=n.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=o.wrapErrorGetInitialPropsWithSentry,c.wrapGenerationFunctionWithSentry=p.wrapGenerationFunctionWithSentry,c.wrapGetInitialPropsWithSentry=q.wrapGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=r.wrapGetServerSidePropsWithSentry,c.wrapGetStaticPropsWithSentry=s.wrapGetStaticPropsWithSentry,c.wrapMiddlewareWithSentry=t.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=u.wrapPageComponentWithSentry,c.wrapRouteHandlerWithSentry=v.wrapRouteHandlerWithSentry,c.wrapServerComponentWithSentry=w.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})}]; +Mongoose Error Code: ${b.code}`:""}`})}function i(a,b,c,f){c&&(0,e.safeExecuteInTheMiddle)(()=>c(a,{moduleVersion:f,response:b}),a=>{a&&d.diag.error("mongoose instrumentation: responseHook error",a)},!0)}c.getAttributesFromCollection=function(a,b,c){let d={};return b&e.SemconvStability.OLD&&(d[f.ATTR_DB_MONGODB_COLLECTION]=a.name,d[f.ATTR_DB_NAME]=a.conn.name,d[f.ATTR_DB_USER]=a.conn.user),b&e.SemconvStability.STABLE&&(d[g.ATTR_DB_COLLECTION_NAME]=a.name,d[g.ATTR_DB_NAMESPACE]=a.conn.name),c&e.SemconvStability.OLD&&(d[f.ATTR_NET_PEER_NAME]=a.conn.host,d[f.ATTR_NET_PEER_PORT]=a.conn.port),c&e.SemconvStability.STABLE&&(d[g.ATTR_SERVER_ADDRESS]=a.conn.host,d[g.ATTR_SERVER_PORT]=a.conn.port),d},c.handlePromiseResponse=function(a,b,c,d){return a instanceof Promise?a.then(a=>(i(b,a,c,d),a)).catch(a=>{throw h(b,a),a}).finally(()=>b.end()):(i(b,a,c,d),b.end(),a)},c.handleCallbackResponse=function(a,b,c,d,e,f,g){let j=0;return 2===e.length?j=1:3===e.length&&(j=2),e[j]=(b,c)=>(b?h(d,b):i(d,c,f,g),d.end(),a(b,c)),b.apply(c,e)}},464532,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},625098,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=c._ALREADY_INSTRUMENTED=c._STORED_PARENT_SPAN=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(306195),g=a.r(167300),h=a.r(464532),i=a.r(442679),j=a.r(357122),k=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],l=["remove","count","findOneAndRemove",...k],m=["count","findOneAndRemove",...k],n=[...k];function o(a){return a?a.startsWith("6.")||a.startsWith("5.")?l:a.startsWith("7.")?m:n:k}function p(a){return a&&(a.startsWith("5.")||a.startsWith("6."))||!1}function q(a){return!!a&&!!a.startsWith("8.")&&parseInt(a.split(".")[1],10)>=21}c._STORED_PARENT_SPAN=Symbol("stored-parent-span"),c._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class r extends g.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,g.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new g.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a;return this._wrap(c.Model.prototype,"save",this.patchOnModelMethods("save",b)),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._wrap(c.Model.prototype,"remove",this.patchOnModelMethods("remove",b)),q(b)&&(this._wrap(c.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",b)),this._wrap(c.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",b))),this._wrap(c.Query.prototype,"exec",this.patchQueryExec(b)),this._wrap(c.Aggregate.prototype,"exec",this.patchAggregateExec(b)),o(b).forEach(a=>{this._wrap(c.Query.prototype,a,this.patchAndCaptureSpanContext(a))}),this._wrap(c.Model,"aggregate",this.patchModelAggregate()),this._wrap(c.Model,"insertMany",this.patchModelStatic("insertMany",b)),this._wrap(c.Model,"bulkWrite",this.patchModelStatic("bulkWrite",b)),c}unpatch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a,d=o(b);this._unwrap(c.Model.prototype,"save"),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._unwrap(c.Model.prototype,"remove"),q(b)&&(this._unwrap(c.Model.prototype,"updateOne"),this._unwrap(c.Model.prototype,"deleteOne")),this._unwrap(c.Query.prototype,"exec"),this._unwrap(c.Aggregate.prototype,"exec"),d.forEach(a=>{this._unwrap(c.Query.prototype,a)}),this._unwrap(c.Model,"aggregate"),this._unwrap(c.Model,"insertMany"),this._unwrap(c.Model,"bulkWrite")}patchAggregateExec(a){let b=this;return e=>function(f){if(b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l("aggregate",{options:this.options,aggregatePipeline:this._pipeline});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this._model.collection,this._model?.modelName,"aggregate",k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchQueryExec(a){let b=this;return e=>function(f){if(this[c._ALREADY_INSTRUMENTED]||b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this.mongooseCollection,this.model.modelName,this.op,k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchOnModelMethods(a,b){let c=this;return e=>function(f,h){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let k={document:this};!f||f instanceof Function||(k.options=f);let l={},{dbStatementSerializer:m}=c.getConfig();if(m){let b=m(a,k);c._dbSemconvStability&g.SemconvStability.OLD&&(l[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(l[j.ATTR_DB_QUERY_TEXT]=b)}let n=c._startSpan(this.constructor.collection,this.constructor.modelName,a,l);return f instanceof Function&&(h=f,f=void 0),c._handleResponse(n,e,this,arguments,h,b)}}_patchDocumentUpdateMethods(a,b){let e=this;return f=>function(h,k,l){if(e.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return f.apply(this,arguments);let m=l,n=h,o=k;"function"==typeof h?(m=h,n=void 0,o=void 0):"function"==typeof k&&(m=k,o=void 0);let p={},q=e.getConfig().dbStatementSerializer;if(q){let b=q(a,{condition:{_id:this._id},updates:n,options:o});e._dbSemconvStability&g.SemconvStability.OLD&&(p[i.ATTR_DB_STATEMENT]=b),e._dbSemconvStability&g.SemconvStability.STABLE&&(p[j.ATTR_DB_QUERY_TEXT]=b)}let r=e._startSpan(this.constructor.collection,this.constructor.modelName,a,p),s=e._handleResponse(r,f,this,arguments,m,b);return s&&"object"==typeof s&&(s[c._ALREADY_INSTRUMENTED]=!0),s}}patchModelStatic(a,b){let c=this;return e=>function(f,h,k){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);"function"==typeof h&&(k=h,h=void 0);let l={};switch(a){case"insertMany":l.documents=f;break;case"bulkWrite":l.operations=f;break;default:l.document=f}void 0!==h&&(l.options=h);let m={},{dbStatementSerializer:n}=c.getConfig();if(n){let b=n(a,l);c._dbSemconvStability&g.SemconvStability.OLD&&(m[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(m[j.ATTR_DB_QUERY_TEXT]=b)}let o=c._startSpan(this.collection,this.modelName,a,m);return c._handleResponse(o,e,this,arguments,k,b)}}patchModelAggregate(){let a=this;return b=>function(){let e=d.trace.getSpan(d.context.active()),f=a._callOriginalFunction(()=>b.apply(this,arguments));return f&&(f[c._STORED_PARENT_SPAN]=e),f}}patchAndCaptureSpanContext(a){let b=this;return a=>function(){return this[c._STORED_PARENT_SPAN]=d.trace.getSpan(d.context.active()),b._callOriginalFunction(()=>a.apply(this,arguments))}}_startSpan(a,b,c,e,h){let k={...e,...(0,f.getAttributesFromCollection)(a,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_OPERATION]=c,k[i.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_OPERATION_NAME]=c,k[j.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MONGODB);let l=this._dbSemconvStability&g.SemconvStability.STABLE?`${c} ${a.name}`:`mongoose.${b}.${c}`;return this.tracer.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:k},h?d.trace.setSpan(d.context.active(),h):void 0)}_handleResponse(a,b,c,d,e,g){let h=this;if(e instanceof Function)return h._callOriginalFunction(()=>(0,f.handleCallbackResponse)(e,b,c,a,d,h.getConfig().responseHook,g));{let e=h._callOriginalFunction(()=>b.apply(c,d));return(0,f.handlePromiseResponse)(e,a,h.getConfig().responseHook,g)}}_callOriginalFunction(a){return this.getConfig().suppressInternalInstrumentation?d.context.with((0,e.suppressTracing)(d.context.active()),a):a()}}c.MongooseInstrumentation=r},969069,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=void 0;var d=a.r(625098);Object.defineProperty(c,"MongooseInstrumentation",{enumerable:!0,get:function(){return d.MongooseInstrumentation}})},720382,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(969069),e=a.r(187845),f=a.r(309569),g="Mongoose",h=f.generateInstrumentOnce(g,()=>new d.MongooseInstrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongoose")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMongoose=h,c.mongooseIntegration=i},859284,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},217073,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(c.AttributeNames||(c.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},839212,(a,b,c)=>{"use strict";function d(a){return a?`[${a.toString()}]`:""}Object.defineProperty(c,"__esModule",{value:!0}),c.getPoolNameOld=c.arrayStringifyHelper=c.getSpanName=c.getDbValues=c.getDbQueryText=c.getJDBCString=c.getConfig=void 0,c.getConfig=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}},c.getJDBCString=function(a,b,c){let d=`jdbc:mysql://${a||"localhost"}`;return"number"==typeof b&&(d+=`:${b}`),"string"==typeof c&&(d+=`/${c}`),d},c.getDbQueryText=function(a){return"string"==typeof a?a:a.sql},c.getDbValues=function(a,b){return"string"==typeof a?d(b):d(b||a.values)},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.arrayStringifyHelper=d,c.getPoolNameOld=function(a){let b=a.config.connectionConfig,c="";return c+=b.host?`host: '${b.host}', `:"",c+=b.port?`port: ${b.port}, `:"",c+=b.database?`database: '${b.database}', `:"",c+=b.user?`user: '${b.user}'`:"",b.user||(c=c.substring(0,c.length-2)),c.trim()}},922059,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},101052,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(859284),h=a.r(217073),i=a.r(839212),j=a.r(922059);class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsageOld?.add(a,{state:c,name:b})}init(){return[new e.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],a=>((0,e.isWrapped)(a.createConnection)&&this._unwrap(a,"createConnection"),this._wrap(a,"createConnection",this._patchCreateConnection()),(0,e.isWrapped)(a.createPool)&&this._unwrap(a,"createPool"),this._wrap(a,"createPool",this._patchCreatePool()),(0,e.isWrapped)(a.createPoolCluster)&&this._unwrap(a,"createPoolCluster"),this._wrap(a,"createPoolCluster",this._patchCreatePoolCluster()),a),a=>{void 0!==a&&(this._unwrap(a,"createConnection"),this._unwrap(a,"createPool"),this._unwrap(a,"createPoolCluster"))})]}_patchCreateConnection(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),d}}}_patchCreatePool(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"end",b._patchPoolEnd(d)),b._setPoolCallbacks(d,""),d}}}_patchPoolEnd(a){return b=>{let c=this;return function(d){let e=a._allConnections.length,f=a._freeConnections.length,g=(0,i.getPoolNameOld)(a);c._connCountAdd(-(e-f),g,"used"),c._connCountAdd(-f,g,"idle"),b.apply(a,arguments)}}}_patchCreatePoolCluster(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"add",b._patchAdd(d)),d}}}_patchAdd(a){return b=>{let c=this;return function(d,e){if(!c._enabled)return c._unwrap(a,"add"),b.apply(a,arguments);b.apply(a,arguments);let f=a._nodes;if(f){let b=f["object"==typeof d?"CLUSTER::"+a._lastId:String(d)].pool;c._setPoolCallbacks(b,d)}}}}_patchGetConnection(a){return b=>{let c=this;return function(d,e,f){if(!c._enabled)return c._unwrap(a,"getConnection"),b.apply(a,arguments);if(1==arguments.length&&"function"==typeof d){let e=c._getConnectionCallbackPatchFn(d);return b.call(a,e)}if(2==arguments.length&&"function"==typeof e){let f=c._getConnectionCallbackPatchFn(e);return b.call(a,d,f)}if(3==arguments.length&&"function"==typeof f){let g=c._getConnectionCallbackPatchFn(f);return b.call(a,d,e,g)}return b.apply(a,arguments)}}}_getConnectionCallbackPatchFn(a){let b=this,c=d.context.active();return function(f,g){g&&!(0,e.isWrapped)(g.query)&&b._wrap(g,"query",b._patchQuery(g)),"function"==typeof a&&d.context.with(c,a,this,f,g)}}_patchQuery(a){return b=>{let c=this;return function(j,k,l){if(!c._enabled)return c._unwrap(a,"query"),b.apply(a,arguments);let m={},{host:n,port:o,database:p,user:q}=(0,i.getConfig)(a.config),r=parseInt(o,10),s=(0,i.getDbQueryText)(j);c._dbSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MYSQL,m[g.ATTR_DB_CONNECTION_STRING]=(0,i.getJDBCString)(n,o,p),m[g.ATTR_DB_NAME]=p,m[g.ATTR_DB_USER]=q,m[g.ATTR_DB_STATEMENT]=s),c._dbSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_DB_SYSTEM_NAME]=f.DB_SYSTEM_NAME_VALUE_MYSQL,m[f.ATTR_DB_NAMESPACE]=p,m[f.ATTR_DB_QUERY_TEXT]=s),c._netSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_NET_PEER_NAME]=n,isNaN(r)||(m[g.ATTR_NET_PEER_PORT]=r)),c._netSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_SERVER_ADDRESS]=n,isNaN(r)||(m[f.ATTR_SERVER_PORT]=r));let t=c.tracer.startSpan((0,i.getSpanName)(j),{kind:d.SpanKind.CLIENT,attributes:m});if(c.getConfig().enhancedDatabaseReporting){let a;Array.isArray(k)?a=k:arguments[2]&&(a=[k]),t.setAttribute(h.AttributeNames.MYSQL_VALUES,(0,i.getDbValues)(j,a))}let u=Array.from(arguments).findIndex(a=>"function"==typeof a),v=d.context.active();if(-1!==u)return c._wrap(arguments,u,c._patchCallbackQuery(t,v)),d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));{let c=d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));return d.context.bind(v,c),c.on("error",a=>t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message})).on("end",()=>{t.end()})}}}}_patchCallbackQuery(a,b){return c=>function(e,f,g){return e&&a.setStatus({code:d.SpanStatusCode.ERROR,message:e.message}),a.end(),d.context.with(b,()=>c(...arguments))}}_setPoolCallbacks(a,b){let c=b||(0,i.getPoolNameOld)(a);a.on("connection",a=>{this._connCountAdd(1,c,"idle")}),a.on("acquire",a=>{this._connCountAdd(-1,c,"idle"),this._connCountAdd(1,c,"used")}),a.on("release",a=>{this._connCountAdd(1,c,"idle"),this._connCountAdd(-1,c,"used")})}}c.MySQLInstrumentation=k},992288,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;var d=a.r(101052);Object.defineProperty(c,"MySQLInstrumentation",{enumerable:!0,get:function(){return d.MySQLInstrumentation}})},370840,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(992288),e=a.r(187845),f=a.r(309569),g="Mysql",h=f.generateInstrumentOnce(g,()=>new d.MySQLInstrumentation({})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql=h,c.mysqlIntegration=i},246060,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql"},481992,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.addSqlCommenterComment=void 0;let d=a.r(832528),e=a.r(498562);c.addSqlCommenterComment=function(a,b){let c;if("string"!=typeof b||0===b.length||(c=b.indexOf("--"))>=0||!(0>b.indexOf("/*"))&&c{let b=encodeURIComponent(g[a]).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`);return`${a}='${b}'`}).join(",");return`${b} /*${i}*/`}},762015,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getConnectionPrototypeToInstrument=c.once=c.getSpanName=c.getQueryText=c.getConnectionAttributes=void 0;let d=a.r(246060),e=a.r(167300),f=a.r(357122);function g(a){return a.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}c.getConnectionAttributes=function(a,b,c){var g,h,i;let j,{host:k,port:l,database:m,user:n}=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}}(a),o={};b&e.SemconvStability.OLD&&(o[d.ATTR_DB_CONNECTION_STRING]=(g=k,h=l,i=m,j=`jdbc:mysql://${g||"localhost"}`,"number"==typeof h&&(j+=`:${h}`),"string"==typeof i&&(j+=`/${i}`),j),o[d.ATTR_DB_NAME]=m,o[d.ATTR_DB_USER]=n),b&e.SemconvStability.STABLE&&(o[f.ATTR_DB_NAMESPACE]=m);let p=parseInt(l,10);return c&e.SemconvStability.OLD&&(o[d.ATTR_NET_PEER_NAME]=k,isNaN(p)||(o[d.ATTR_NET_PEER_PORT]=p)),c&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=k,isNaN(p)||(o[f.ATTR_SERVER_PORT]=p)),o},c.getQueryText=function(a,b,c,d=!1,e=g){let[f,h]="string"==typeof a?[a,c]:[a.sql,"values"in a?c||a.values:c];try{if(d)return e(f);if(b&&h)return b(f,h);return f}catch(a){return"Could not determine the query due to an error in masking or formatting"}},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}},c.getConnectionPrototypeToInstrument=function(a){let b=a.prototype,c=Object.getPrototypeOf(b);return"function"==typeof c?.query&&"function"==typeof c?.execute?c:b}},729087,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},980415,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(246060),g=a.r(481992),h=a.r(762015),i=a.r(729087),j=a.r(357122),k=[">=1.4.2 <4"];class l extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let a;function b(b){!a&&b.format&&(a=b.format)}let c=b=>{(0,e.isWrapped)(b.query)&&this._unwrap(b,"query"),this._wrap(b,"query",this._patchQuery(a,!1)),(0,e.isWrapped)(b.execute)&&this._unwrap(b,"execute"),this._wrap(b,"execute",this._patchQuery(a,!0))},d=a=>{this._unwrap(a,"query"),this._unwrap(a,"execute")};return[new e.InstrumentationNodeModuleDefinition("mysql2",k,a=>(b(a),a),()=>{},[new e.InstrumentationNodeModuleFile("mysql2/promise.js",k,a=>(b(a),a),()=>{}),new e.InstrumentationNodeModuleFile("mysql2/lib/connection.js",k,a=>(c((0,h.getConnectionPrototypeToInstrument)(a)),a),a=>{void 0===a||d((0,h.getConnectionPrototypeToInstrument)(a))})])]}_patchQuery(a,b){return c=>{let i=this;return function(k,l,m){let n;Array.isArray(l)?n=l:arguments[2]&&(n=[l]);let{maskStatement:o,maskStatementHook:p,responseHook:q}=i.getConfig(),r=(0,h.getConnectionAttributes)(this.config,i._dbSemconvStability,i._netSemconvStability),s=(0,h.getQueryText)(k,a,n,o,p);i._dbSemconvStability&e.SemconvStability.OLD&&(r[f.ATTR_DB_SYSTEM]=f.DB_SYSTEM_VALUE_MYSQL,r[f.ATTR_DB_STATEMENT]=s),i._dbSemconvStability&e.SemconvStability.STABLE&&(r[j.ATTR_DB_SYSTEM_NAME]=j.DB_SYSTEM_NAME_VALUE_MYSQL,r[j.ATTR_DB_QUERY_TEXT]=s);let t=i.tracer.startSpan((0,h.getSpanName)(k),{kind:d.SpanKind.CLIENT,attributes:r});!b&&i.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=k="string"==typeof k?(0,g.addSqlCommenterComment)(t,k):Object.assign(k,{sql:(0,g.addSqlCommenterComment)(t,k.sql)}));let u=(0,h.once)((a,b)=>{a?t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}):"function"==typeof q&&(0,e.safeExecuteInTheMiddle)(()=>{q(t,{queryResults:b})},a=>{a&&i._diag.warn("Failed executing responseHook",a)},!0),t.end()});if(1==arguments.length){"function"==typeof k.onResult&&i._wrap(k,"onResult",i._patchCallbackQuery(u));let a=c.apply(this,arguments);return a.once("error",a=>{u(a)}).once("result",a=>{u(void 0,a)}),a}return"function"==typeof arguments[1]?i._wrap(arguments,1,i._patchCallbackQuery(u)):"function"==typeof arguments[2]&&i._wrap(arguments,2,i._patchCallbackQuery(u)),c.apply(this,arguments)}}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c,d),b(...arguments)}}}c.MySQL2Instrumentation=l},542331,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;var d=a.r(980415);Object.defineProperty(c,"MySQL2Instrumentation",{enumerable:!0,get:function(){return d.MySQL2Instrumentation}})},592734,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(542331),e=a.r(187845),f=a.r(309569),g="Mysql2",h=f.generateInstrumentOnce(g,()=>new d.MySQL2Instrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mysql2")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql2=h,c.mysql2Integration=i},44518,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},678432,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.endSpan=void 0;let d=a.r(832528);c.endSpan=(a,b)=>{b&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message})),a.end()}},901032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.defaultDbStatementSerializer=void 0;let d=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];c.defaultDbStatementSerializer=(a,b)=>{if(Array.isArray(b)&&b.length){let c=d.find(({regex:b})=>b.test(a))?.args??0,e=c>=0?b.slice(0,c):b;return b.length>e.length&&e.push(`[${b.length-c} other arguments]`),`${a} ${e.join(" ")}`}return a}},164022,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},523602,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(44518),h=a.r(167300),i=a.r(678432),j=a.r(901032),k=a.r(164022),l={requireParentSpan:!0};class m extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){return[new e.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(a,b)=>{let c="Module"===a[Symbol.toStringTag]?a.default:a;return(0,e.isWrapped)(c.prototype.sendCommand)&&this._unwrap(c.prototype,"sendCommand"),this._wrap(c.prototype,"sendCommand",this._patchSendCommand(b)),(0,e.isWrapped)(c.prototype.connect)&&this._unwrap(c.prototype,"connect"),this._wrap(c.prototype,"connect",this._patchConnection()),a},a=>{if(void 0===a)return;let b="Module"===a[Symbol.toStringTag]?a.default:a;this._unwrap(b.prototype,"sendCommand"),this._unwrap(b.prototype,"connect")})]}_patchSendCommand(a){return b=>this._traceSendCommand(b,a)}_patchConnection(){return a=>this._traceConnection(a)}_traceSendCommand(a,b){let c=this;return function(k){if(arguments.length<1||"object"!=typeof k)return a.apply(this,arguments);let l=c.getConfig(),m=l.dbStatementSerializer||j.defaultDbStatementSerializer,n=void 0===d.trace.getSpan(d.context.active());if(!0===l.requireParentSpan&&n)return a.apply(this,arguments);let o={},{host:p,port:q}=this.options,r=m(k.name,k.args);c._dbSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,o[g.ATTR_DB_STATEMENT]=r,o[g.ATTR_DB_CONNECTION_STRING]=`redis://${p}:${q}`),c._dbSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,o[f.ATTR_DB_QUERY_TEXT]=r),c._netSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_NET_PEER_NAME]=p,o[g.ATTR_NET_PEER_PORT]=q),c._netSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=p,o[f.ATTR_SERVER_PORT]=q);let s=c.tracer.startSpan(k.name,{kind:d.SpanKind.CLIENT,attributes:o}),{requestHook:t}=l;t&&(0,h.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:b,cmdName:k.name,cmdArgs:k.args}),a=>{a&&d.diag.error("ioredis instrumentation: request hook failed",a)},!0);try{let b=a.apply(this,arguments),c=k.resolve;k.resolve=function(a){(0,h.safeExecuteInTheMiddle)(()=>l.responseHook?.(s,k.name,k.args,a),a=>{a&&d.diag.error("ioredis instrumentation: response hook failed",a)},!0),(0,i.endSpan)(s,null),c(a)};let e=k.reject;return k.reject=function(a){(0,i.endSpan)(s,a),e(a)},b}catch(a){throw(0,i.endSpan)(s,a),a}}}_traceConnection(a){let b=this;return function(){let c=void 0===d.trace.getSpan(d.context.active());if(!0===b.getConfig().requireParentSpan&&c)return a.apply(this,arguments);let h={},{host:j,port:k}=this.options;b._dbSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,h[g.ATTR_DB_STATEMENT]="connect",h[g.ATTR_DB_CONNECTION_STRING]=`redis://${j}:${k}`),b._dbSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,h[f.ATTR_DB_QUERY_TEXT]="connect"),b._netSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_NET_PEER_NAME]=j,h[g.ATTR_NET_PEER_PORT]=k),b._netSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_SERVER_ADDRESS]=j,h[f.ATTR_SERVER_PORT]=k);let l=b.tracer.startSpan("connect",{kind:d.SpanKind.CLIENT,attributes:h});try{let b=a.apply(this,arguments);return(0,i.endSpan)(l,null),b}catch(a){throw(0,i.endSpan)(l,a),a}}}}c.IORedisInstrumentation=m},417236,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;var d=a.r(523602);Object.defineProperty(c,"IORedisInstrumentation",{enumerable:!0,get:function(){return d.IORedisInstrumentation}})},56335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},426925,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getTracedCreateStreamTrace=c.getTracedCreateClient=c.endSpan=void 0;let d=a.r(832528);c.endSpan=(a,b)=>{b&&a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end()},c.getTracedCreateClient=a=>function(){let b=a.apply(this,arguments);return d.context.bind(d.context.active(),b)},c.getTracedCreateStreamTrace=a=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(a){d.context.bind(d.context.active(),a),this._patched_redis_stream=a}}),a.apply(this,arguments)}},484312,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},776491,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV2_V3=void 0;let d=a.r(167300),e=a.r(426925),f=a.r(56335),g=a.r(832528),h=a.r(357122),i=a.r(484312),j=a.r(901032);class k extends d.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new d.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],a=>((0,d.isWrapped)(a.RedisClient.prototype.internal_send_command)&&this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._wrap(a.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,d.isWrapped)(a.RedisClient.prototype.create_stream)&&this._unwrap(a.RedisClient.prototype,"create_stream"),this._wrap(a.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,d.isWrapped)(a.createClient)&&this._unwrap(a,"createClient"),this._wrap(a,"createClient",this._getPatchCreateClient()),a),a=>{void 0!==a&&(this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._unwrap(a.RedisClient.prototype,"create_stream"),this._unwrap(a,"createClient"))})]}_getPatchInternalSendCommand(){let a=this;return function(b){return function(c){if(1!=arguments.length||"object"!=typeof c)return b.apply(this,arguments);let f=a.getConfig(),l=void 0===g.trace.getSpan(g.context.active());if(!0===f.requireParentSpan&&l)return b.apply(this,arguments);let m=f?.dbStatementSerializer||j.defaultDbStatementSerializer,n={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(n,{[i.ATTR_DB_SYSTEM]:i.DB_SYSTEM_VALUE_REDIS,[i.ATTR_DB_STATEMENT]:m(c.command,c.args)}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(n,{[h.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_REDIS,[h.ATTR_DB_OPERATION_NAME]:c.command,[h.ATTR_DB_QUERY_TEXT]:m(c.command,c.args)});let o=a.tracer.startSpan(`${k.COMPONENT}-${c.command}`,{kind:g.SpanKind.CLIENT,attributes:n});if(this.connection_options){let b={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(b,{[i.ATTR_NET_PEER_NAME]:this.connection_options.host,[i.ATTR_NET_PEER_PORT]:this.connection_options.port}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(b,{[h.ATTR_SERVER_ADDRESS]:this.connection_options.host,[h.ATTR_SERVER_PORT]:this.connection_options.port}),o.setAttributes(b)}this.address&&a._semconvStability&d.SemconvStability.OLD&&o.setAttribute(i.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let p=arguments[0].callback;if(p){let b=g.context.active();arguments[0].callback=function(h,i){if(f?.responseHook){let b=f.responseHook;(0,d.safeExecuteInTheMiddle)(()=>{b(o,c.command,c.args,i)},b=>{b&&a._diag.error("Error executing responseHook",b)},!0)}return(0,e.endSpan)(o,h),g.context.with(b,p,this,...arguments)}}try{return b.apply(this,arguments)}catch(a){throw(0,e.endSpan)(o,a),a}}}}_getPatchCreateClient(){return function(a){return(0,e.getTracedCreateClient)(a)}}_getPatchCreateStream(){return function(a){return(0,e.getTracedCreateStreamTrace)(a)}}}c.RedisInstrumentationV2_V3=k},223134,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getClientAttributes=void 0;let d=a.r(357122),e=a.r(484312),f=a.r(167300);c.getClientAttributes=function(a,b,c){let g={};return c&f.SemconvStability.OLD&&Object.assign(g,{[e.ATTR_DB_SYSTEM]:e.DB_SYSTEM_VALUE_REDIS,[e.ATTR_NET_PEER_NAME]:b?.socket?.host,[e.ATTR_NET_PEER_PORT]:b?.socket?.port,[e.ATTR_DB_CONNECTION_STRING]:function(a,b){if("string"==typeof b&&b)try{let a=new URL(b);return a.searchParams.delete("user_pwd"),a.username="",a.password="",a.href}catch(b){a.error("failed to sanitize redis connection url",b)}}(a,b?.url)}),c&f.SemconvStability.STABLE&&Object.assign(g,{[d.ATTR_DB_SYSTEM_NAME]:e.DB_SYSTEM_NAME_VALUE_REDIS,[d.ATTR_SERVER_ADDRESS]:b?.socket?.host,[d.ATTR_SERVER_PORT]:b?.socket?.port}),g}},823723,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV4_V5=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(223134),g=a.r(901032),h=a.r(56335),i=a.r(357122),j=a.r(484312),k=Symbol("opentelemetry.instrumentation.redis.open_spans"),l=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class m extends e.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(a){let b=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/commander.js`,["^1.0.0"],(a,b)=>{let c=a.transformCommandArguments;if(!c)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),a;let d=b?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,e.isWrapped)(a?.[d])&&this._unwrap(a,d),this._wrap(a,d,this._getPatchExtendWithCommands(c)),a},a=>{(0,e.isWrapped)(a?.extendWithCommands)&&this._unwrap(a,"extendWithCommands"),(0,e.isWrapped)(a?.attachCommands)&&this._unwrap(a,"attachCommands")}),c=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),this._wrap(b,"exec",this._getPatchMultiCommandsExec(!1)),(0,e.isWrapped)(b?.execAsPipeline)&&this._unwrap(b,"execAsPipeline"),this._wrap(b,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand"),this._wrap(b,"addCommand",this._getPatchMultiCommandsAddCommand()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand")}),d=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return b?.multi&&((0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),this._wrap(b,"multi",this._getPatchRedisClientMulti())),b?.MULTI&&((0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),this._wrap(b,"MULTI",this._getPatchRedisClientMulti())),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand"),this._wrap(b,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(b,"connect",this._getPatchedClientConnect()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),(0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand")});return new e.InstrumentationNodeModuleDefinition(a,["^1.0.0","^5.0.0"],a=>a,()=>{},[b,c,d])}_getPatchExtendWithCommands(a){let b=this;return function(c){return function(d){if(d?.BaseClass?.name!=="RedisClient")return c.apply(this,arguments);let e=d.executor;return d.executor=function(c,d){let f=a(c,d).args;return b._traceClientCommand(e,this,arguments,f)},c.apply(this,arguments)}}}_getPatchMultiCommandsExec(a){let b=this;return function(c){return function(){let d=c.apply(this,arguments);return"function"!=typeof d?.then?(b._diag.error("non-promise result when patching exec/execAsPipeline"),d):d.then(c=>{let d=this[k];return b._endSpansWithRedisReplies(d,c,a),c}).catch(c=>{let d=this[k];if(d){let e="MultiErrorReply"===c.constructor.name?c.replies:Array(d.length).fill(c);b._endSpansWithRedisReplies(d,e,a)}else b._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(c)})}}}_getPatchMultiCommandsAddCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchRedisClientMulti(){return function(a){return function(){let b=a.apply(this,arguments);return b[l]=this.options,b}}}_getPatchRedisClientSendCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchedClientConnect(){let a=this;return function(b){return function(){let c=this.options,e=(0,f.getClientAttributes)(a._diag,c,a._semconvStability),g=a.tracer.startSpan(`${m.COMPONENT}-connect`,{kind:d.SpanKind.CLIENT,attributes:e});return d.context.with(d.trace.setSpan(d.context.active(),g),()=>b.apply(this)).then(a=>(g.end(),a)).catch(a=>(g.recordException(a),g.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),g.end(),Promise.reject(a)))}}}_traceClientCommand(a,b,c,h){if(void 0===d.trace.getSpan(d.context.active())&&this.getConfig().requireParentSpan)return a.apply(b,c);let n=b.options||b[l],o=h[0],p=h.slice(1),q=this.getConfig().dbStatementSerializer||g.defaultDbStatementSerializer,r=(0,f.getClientAttributes)(this._diag,n,this._semconvStability);this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_OPERATION_NAME]=o);try{let a=q(o,p);null!=a&&(this._semconvStability&e.SemconvStability.OLD&&(r[j.ATTR_DB_STATEMENT]=a),this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_QUERY_TEXT]=a))}catch(a){this._diag.error("dbStatementSerializer throw an exception",a,{commandName:o})}let s=this.tracer.startSpan(`${m.COMPONENT}-${o}`,{kind:d.SpanKind.CLIENT,attributes:r}),t=d.context.with(d.trace.setSpan(d.context.active(),s),()=>a.apply(b,c));return"function"==typeof t?.then?t.then(a=>{this._endSpanWithResponse(s,o,p,a,void 0)},a=>{this._endSpanWithResponse(s,o,p,null,a)}):(t[k]=t[k]||[],t[k].push({span:s,commandName:o,commandArgs:p})),t}_endSpansWithRedisReplies(a,b,c=!1){if(!a)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(b.length!==a.length)return this._diag.error("number of multi command spans does not match response from redis");let d=a.map(a=>a.commandName),f=d.every(a=>a===d[0])?(c?"PIPELINE ":"MULTI ")+d[0]:c?"PIPELINE":"MULTI";for(let c=0;c{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;let d=a.r(167300),e=a.r(56335),f=a.r(776491),g=a.r(823723),h={requireParentSpan:!1};class i extends d.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(a={}){const b={...h,...a};super(e.PACKAGE_NAME,e.PACKAGE_VERSION,b),this.instrumentationV2_V3=new f.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new g.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(a={}){let b={...h,...a};super.setConfig(b),this.initialized&&(this.instrumentationV2_V3.setConfig(b),this.instrumentationV4_V5.setConfig(b))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(a){super.setTracerProvider(a),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(a),this.instrumentationV4_V5.setTracerProvider(a))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}c.RedisInstrumentation=i},365261,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;var d=a.r(451985);Object.defineProperty(c,"RedisInstrumentation",{enumerable:!0,get:function(){return d.RedisInstrumentation}})},461429,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=["get","set","setex"],e=["get","mget"],f=["set","setex"];function g(a,b){return a.includes(b.toLowerCase())}function h(a){return g(e,a)?"cache.get":g(f,a)?"cache.put":void 0}function i(a){let b=[],c=a=>{a.forEach(a=>{Array.isArray(a)?c(a):b.push(a)})};return c(a),b}c.GET_COMMANDS=e,c.SET_COMMANDS=f,c.calculateCacheItemSize=function(a){let b=a=>{try{if(Buffer.isBuffer(a))return a.byteLength;if("string"==typeof a)return a.length;if("number"==typeof a)return a.toString().length;else if(null==a)return 0;return JSON.stringify(a).length}catch{return}};return Array.isArray(a)?a.reduce((a,c)=>{let d=b(c);return"number"==typeof d?void 0!==a?a+d:d:a},0):b(a)},c.getCacheKeySafely=function(a,b){try{if(0===b.length)return;let c=a=>"string"==typeof a||"number"==typeof a||Buffer.isBuffer(a)?[a.toString()]:Array.isArray(a)?i(a.map(a=>c(a))):[""],e=b[0];if(g(d,a)&&null!=e)return c(e);return i(b.map(a=>c(a)))}catch{return}},c.getCacheOperation=h,c.isInCommands=g,c.shouldConsiderForCache=function(a,b,c){if(!h(a))return!1;for(let a of b)if(function(a,b){return b.some(b=>a.startsWith(b))}(a,c))return!0;return!1}},461054,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(417236),e=a.r(365261),f=a.r(187845),g=a.r(309569),h=a.r(461429),i="Redis";c._redisOptions={};let j=(a,b,d,e)=>{a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let g=h.getCacheKeySafely(b,d),i=h.getCacheOperation(b);if(!g||!i||!c._redisOptions.cachePrefixes||!h.shouldConsiderForCache(b,g,c._redisOptions.cachePrefixes))return;let j=f.spanToJSON(a).data["net.peer.name"],k=f.spanToJSON(a).data["net.peer.port"];k&&j&&a.setAttributes({"network.peer.address":j,"network.peer.port":k});let l=h.calculateCacheItemSize(e);l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,l),h.isInCommands(h.GET_COMMANDS,b)&&void 0!==l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_HIT,l>0),a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:i,[f.SEMANTIC_ATTRIBUTE_CACHE_KEY]:g});let m=g.join(", ");a.updateName(c._redisOptions.maxCacheKeyLength?f.truncate(m,c._redisOptions.maxCacheKeyLength):m)},k=g.generateInstrumentOnce(`${i}.IORedis`,()=>new d.IORedisInstrumentation({responseHook:j})),l=g.generateInstrumentOnce(`${i}.Redis`,()=>new e.RedisInstrumentation({responseHook:j})),m=Object.assign(()=>{k(),l()},{id:i}),n=f.defineIntegration((a={})=>({name:i,setupOnce(){c._redisOptions=a,m()}}));c.cacheResponseHook=j,c.instrumentRedis=m,c.redisIntegration=n},754229,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},263318,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).PG_VALUES="db.postgresql.values",d.PG_PLAN="db.postgresql.plan",d.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",d.MAX_CLIENT="db.postgresql.max.client"},283302,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=c.METRIC_DB_CLIENT_CONNECTION_COUNT=c.DB_SYSTEM_VALUE_POSTGRESQL=c.DB_CLIENT_CONNECTION_STATE_VALUE_USED=c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=c.ATTR_DB_CLIENT_CONNECTION_STATE=c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",c.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",c.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",c.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",c.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},684683,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=void 0,(d=c.SpanNames||(c.SpanNames={})).QUERY_PREFIX="pg.query",d.CONNECT="pg.connect",d.POOL_CONNECT="pg-pool.connect"},182032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizedErrorMessage=c.isObjectWithTextString=c.getErrorMessage=c.patchClientConnectCallback=c.patchCallbackPGPool=c.updateCounter=c.getPoolName=c.patchCallback=c.handleExecutionResult=c.handleConfigQuery=c.shouldSkipInstrumentation=c.getSemanticAttributesFromPoolConnection=c.getSemanticAttributesFromConnection=c.getConnectionString=c.parseAndMaskConnectionString=c.parseNormalizedOperationName=c.getQuerySpanName=void 0;let d=a.r(832528),e=a.r(263318),f=a.r(357122),g=a.r(283302),h=a.r(167300),i=a.r(684683);function j(a,b){if(!b)return i.SpanNames.QUERY_PREFIX;let c="string"==typeof b.name&&b.name?b.name:k(b.text);return`${i.SpanNames.QUERY_PREFIX}:${c}${a?` ${a}`:""}`}function k(a){let b=a.trim(),c=b.indexOf(" "),d=-1===c?b:b.slice(0,c);return(d=d.toUpperCase()).endsWith(";")?d.slice(0,-1):d}function l(a){try{let b=new URL(a);return b.username="",b.password="",b.toString()}catch(a){return"postgresql://localhost:5432/"}}function m(a){if("connectionString"in a&&a.connectionString)return l(a.connectionString);let b=a.host||"localhost",c=a.port||5432,d=a.database||"";return`postgresql://${b}:${c}/${d}`}function n(a){if(Number.isInteger(a))return a}function o(a,b){let c={};return b&h.SemconvStability.OLD&&(c={...c,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_DB_USER]:a.user,[g.ATTR_NET_PEER_NAME]:a.host,[g.ATTR_NET_PEER_PORT]:n(a.port)}),b&h.SemconvStability.STABLE&&(c={...c,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:a.host,[f.ATTR_SERVER_PORT]:n(a.port)}),c}function p(a,b,c){"function"==typeof a.responseHook&&(0,h.safeExecuteInTheMiddle)(()=>{a.responseHook(b,{data:c})},a=>{a&&d.diag.error("Error running response hook",a)},!0)}function q(a){let b=a?.name??"PostgreSQLError",c=a?.code??"UNKNOWN";return`PostgreSQL error of type '${b}' occurred (code: ${c})`}c.getQuerySpanName=j,c.parseNormalizedOperationName=k,c.parseAndMaskConnectionString=l,c.getConnectionString=m,c.getSemanticAttributesFromConnection=o,c.getSemanticAttributesFromPoolConnection=function(a,b){let c;try{c=a.connectionString?new URL(a.connectionString):void 0}catch(a){c=void 0}let d={[e.AttributeNames.IDLE_TIMEOUT_MILLIS]:a.idleTimeoutMillis,[e.AttributeNames.MAX_CLIENT]:a.maxClient};return b&h.SemconvStability.OLD&&(d={...d,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:c?.pathname.slice(1)??a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_NET_PEER_NAME]:c?.hostname??a.host,[g.ATTR_NET_PEER_PORT]:Number(c?.port)||n(a.port),[g.ATTR_DB_USER]:c?.username??a.user}),b&h.SemconvStability.STABLE&&(d={...d,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:c?.hostname??a.host,[f.ATTR_SERVER_PORT]:Number(c?.port)||n(a.port)}),d},c.shouldSkipInstrumentation=function(a){return!0===a.requireParentSpan&&void 0===d.trace.getSpan(d.context.active())},c.handleConfigQuery=function(a,b,c,i){let{connectionParameters:k}=this,l=j(k.database,i),m=a.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:o(k,c)});if(!i)return m;if(i.text&&(c&h.SemconvStability.OLD&&m.setAttribute(g.ATTR_DB_STATEMENT,i.text),c&h.SemconvStability.STABLE&&m.setAttribute(f.ATTR_DB_QUERY_TEXT,i.text)),b.enhancedDatabaseReporting&&Array.isArray(i.values))try{let a=i.values.map(a=>null==a?"null":a instanceof Buffer?a.toString():"object"!=typeof a?a.toString():"function"==typeof a.toPostgres?a.toPostgres():JSON.stringify(a));m.setAttribute(e.AttributeNames.PG_VALUES,a)}catch(a){d.diag.error("failed to stringify ",i.values,a)}return"string"==typeof i.name&&m.setAttribute(e.AttributeNames.PG_PLAN,i.name),m},c.handleExecutionResult=p,c.patchCallback=function(a,b,c,e,g){return function(h,i){h?(Object.prototype.hasOwnProperty.call(h,"code")&&(e[f.ATTR_ERROR_TYPE]=h.code),h instanceof Error&&b.recordException(q(h)),b.setStatus({code:d.SpanStatusCode.ERROR,message:h.message})):p(a,b,i),g(),b.end(),c.call(this,h,i)}},c.getPoolName=function(a){let b="";return(b+=(a?.host?`${a.host}`:"unknown_host")+":"+(a?.port?`${a.port}`:"unknown_port")+"/"+(a?.database?`${a.database}`:"unknown_database")).trim()},c.updateCounter=function(a,b,c,d,e){let f=b.totalCount,h=b.waitingCount,i=b.idleCount,j=f-i;return c.add(j-e.used,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),c.add(i-e.idle,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),d.add(h-e.pending,{[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),{used:j,idle:i,pending:h}},c.patchCallbackPGPool=function(a,b){return function(c,e,f){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.call(this,c,e,f)}},c.patchClientConnectCallback=function(a,b){return function(c){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.apply(this,arguments)}},c.getErrorMessage=function(a){return"object"==typeof a&&null!==a&&"message"in a?String(a.message):void 0},c.isObjectWithTextString=function(a){return"object"==typeof a&&"string"==typeof a?.text},c.sanitizedErrorMessage=q},499741,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.66.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},928742,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PgInstrumentation=void 0;let d=a.r(167300),e=a.r(832528),f=a.r(754229),g=a.r(182032),h=a.r(481992),i=a.r(499741),j=a.r(684683),k=a.r(498562),l=a.r(357122),m=a.r(283302);function n(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class o extends d.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._semconvStability=(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(l.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:e.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let a=[">=8.0.3 <9"],b=new d.InstrumentationNodeModuleFile("pg/lib/native/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),c=new d.InstrumentationNodeModuleFile("pg/lib/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new d.InstrumentationNodeModuleDefinition("pg",a,a=>{let b=n(a);return this._patchPgClient(b.Client),a},a=>{let b=n(a);return this._unpatchPgClient(b.Client),a},[c,b]),new d.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],a=>{let b=n(a);return(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"connect",this._getPoolConnectPatch()),b},a=>{let b=n(a);(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect")})]}_patchPgClient(a){if(!a)return;let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"query",this._getClientQueryPatch()),this._wrap(b.prototype,"connect",this._getClientConnectPatch()),a}_unpatchPgClient(a){let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),a}_getClientConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||d.ignoreConnectSpans)return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromConnection(this,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchClientConnectCallback(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}recordOperationDuration(a,b){let c={},e=[l.ATTR_DB_NAMESPACE,l.ATTR_ERROR_TYPE,l.ATTR_SERVER_PORT,l.ATTR_SERVER_ADDRESS,l.ATTR_DB_OPERATION_NAME];this._semconvStability&d.SemconvStability.OLD&&e.push(m.ATTR_DB_SYSTEM),this._semconvStability&d.SemconvStability.STABLE&&e.push(l.ATTR_DB_SYSTEM_NAME),e.forEach(b=>{b in a&&(c[b]=a[b])});let f=(0,k.hrTimeToMilliseconds)((0,k.hrTimeDuration)(b,(0,k.hrTime)()))/1e3;this._operationDuration.record(f,c)}_getClientQueryPatch(){let a=this;return b=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...c){let f;if(g.shouldSkipInstrumentation(a.getConfig()))return b.apply(this,c);let i=(0,k.hrTime)(),j=c[0],n="string"==typeof j,o=g.isObjectWithTextString(j),p=n?{text:j,values:Array.isArray(c[1])?c[1]:void 0}:o?{...j,name:j.name,text:j.text,values:j.values??(Array.isArray(c[1])?c[1]:void 0)}:void 0,q={[m.ATTR_DB_SYSTEM]:m.DB_SYSTEM_VALUE_POSTGRESQL,[l.ATTR_DB_NAMESPACE]:this.database,[l.ATTR_SERVER_PORT]:this.connectionParameters.port,[l.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};p?.text&&(q[l.ATTR_DB_OPERATION_NAME]=g.parseNormalizedOperationName(p?.text));let r=()=>{a.recordOperationDuration(q,i)},s=a.getConfig(),t=g.handleConfigQuery.call(this,a.tracer,s,a._semconvStability,p);if(s.addSqlCommenterCommentToQueries&&(n?c[0]=(0,h.addSqlCommenterComment)(t,j):!o||"name"in j||(c[0]={...j,text:(0,h.addSqlCommenterComment)(t,j.text)})),c.length>0){let b=e.trace.getSpan(e.context.active());if("function"==typeof c[c.length-1])c[c.length-1]=g.patchCallback(s,t,c[c.length-1],q,r),b&&(c[c.length-1]=e.context.bind(e.context.active(),c[c.length-1]));else if("function"==typeof p?.callback){let d=g.patchCallback(a.getConfig(),t,p.callback,q,r);b&&(d=e.context.bind(e.context.active(),d)),c[0].callback=d}}let{requestHook:u}=s;"function"==typeof u&&p&&(0,d.safeExecuteInTheMiddle)(()=>{let{database:a,host:b,port:c,user:d}=this.connectionParameters;u(t,{connection:{database:a,host:b,port:c,user:d},query:{text:p.text,values:p.values,name:p.name}})},b=>{b&&a._diag.error("Error running query hook",b)},!0);try{f=b.apply(this,c)}catch(a){throw a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(a)}),t.end(),a}return f instanceof Promise?f.then(b=>new Promise(c=>{g.handleExecutionResult(a.getConfig(),t,b),r(),t.end(),c(b)})).catch(a=>new Promise((b,c)=>{a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),r(),t.end(),c(a)})):f})}_setPoolConnectEventListeners(a){if(a[f.EVENT_LISTENERS_SET])return;let b=g.getPoolName(a.options);a.on("connect",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("acquire",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("remove",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("release",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a[f.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||(a._setPoolConnectEventListeners(this),d.ignoreConnectSpans))return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.POOL_CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromPoolConnection(this.options,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchCallbackPGPool(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}}function p(a,b){return b instanceof Promise?e.context.bind(e.context.active(),b.then(b=>(a.end(),b)).catch(b=>(b instanceof Error&&a.recordException(g.sanitizedErrorMessage(b)),a.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(b)}),a.end(),Promise.reject(b)))):b}c.PgInstrumentation=o},146635,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.PgInstrumentation=void 0;var d=a.r(928742);Object.defineProperty(c,"PgInstrumentation",{enumerable:!0,get:function(){return d.PgInstrumentation}});var e=a.r(263318);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},257141,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(146635),e=a.r(187845),f=a.r(309569),g="Postgres",h=f.generateInstrumentOnce(g,d.PgInstrumentation,a=>({requireParentSpan:!0,requestHook(a){f.addOriginToSpan(a,"auto.db.otel.postgres")},ignoreConnectSpans:a?.ignoreConnectSpans??!1})),i=e.defineIntegration(a=>({name:g,setupOnce(){h(a)}}));c.instrumentPostgres=h,c.postgresIntegration=i},870983,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(187845),h=a.r(309569),i=a.r(852223),j="PostgresJs",k=[">=3.0.0 <4"],l=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,m=Symbol.for("sentry.query.from.instrumented.sql"),n=h.generateInstrumentOnce(j,a=>new o({requireParentSpan:a?.requireParentSpan??!0,requestHook:a?.requestHook}));class o extends e.InstrumentationBase{constructor(a){super("sentry-postgres-js",g.SDK_VERSION,a)}init(){let a=new e.InstrumentationNodeModuleDefinition("postgres",k,a=>{try{return this._patchPostgres(a)}catch(b){return i.DEBUG_BUILD&&g.debug.error("Failed to patch postgres module:",b),a}},a=>a);return["src","cf/src","cjs/src"].forEach(b=>{a.files.push(new e.InstrumentationNodeModuleFile(`postgres/${b}/query.js`,k,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),a}_patchPostgres(a){let b="function"==typeof a,c=b?a:a.default;if("function"!=typeof c)return i.DEBUG_BUILD&&g.debug.warn("postgres module does not export a function. Skipping instrumentation."),a;let d=this,e=function(...a){let b=Reflect.construct(c,a);if(!b||"function"!=typeof b)return i.DEBUG_BUILD&&g.debug.warn("postgres() did not return a valid instance"),b;let e=d.getConfig();return g.instrumentPostgresJsSql(b,{requireParentSpan:e.requireParentSpan,requestHook:e.requestHook})};for(let a of(Object.setPrototypeOf(e,c),Object.setPrototypeOf(e.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(e,a,b)}return b?e:(g.replaceExports(a,"default",e),a)}_shouldCreateSpans(){let a=this.getConfig();return void 0!==d.trace.getSpan(d.context.active())||!a.requireParentSpan}_setOperationName(a,b,c){if(c)return void a.setAttribute(f.ATTR_DB_OPERATION_NAME,c);let d=b?.match(l);d?.[1]&&a.setAttribute(f.ATTR_DB_OPERATION_NAME,d[1].toUpperCase())}_reconstructQuery(a){if(a?.length)return 1===a.length?a[0]||void 0:a.reduce((a,b,c)=>0===c?b:`${a}$${c}${b}`,"")}_sanitizeSqlQuery(a){return a?a.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{h.addOriginToSpan(d,"auto.db.postgresjs"),d.setAttributes({[f.ATTR_DB_SYSTEM_NAME]:"postgres",[f.ATTR_DB_QUERY_TEXT]:k});let{requestHook:l}=b.getConfig();l&&e.safeExecuteInTheMiddle(()=>l(d,k,void 0),a=>{a&&(d.setAttribute("sentry.hook.error","requestHook failed"),i.DEBUG_BUILD&&g.debug.error(`Error in requestHook for ${j} integration:`,a))},!0);let m=this.resolve;this.resolve=new Proxy(m,{apply:(a,c,e)=>{try{b._setOperationName(d,k,e?.[0]?.command),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in resolve callback:",a)}return Reflect.apply(a,c,e)}});let n=this.reject;this.reject=new Proxy(n,{apply:(a,c,e)=>{try{d.setStatus({code:g.SPAN_STATUS_ERROR,message:e?.[0]?.message||"unknown_error"}),d.setAttribute(f.ATTR_DB_RESPONSE_STATUS_CODE,e?.[0]?.code||"unknown"),d.setAttribute(f.ATTR_ERROR_TYPE,e?.[0]?.name||"unknown"),b._setOperationName(d,k),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in reject callback:",a)}return Reflect.apply(a,c,e)}});try{return c.apply(this,a)}catch(a){throw d.setStatus({code:g.SPAN_STATUS_ERROR,message:a instanceof Error?a.message:"unknown_error"}),d.end(),a}})},a.Query.prototype.handle.__sentry_original__=c,a}_unpatchQueryPrototype(a){return a.Query.prototype.handle.__sentry_original__&&(a.Query.prototype.handle=a.Query.prototype.handle.__sentry_original__),a}}let p=g.defineIntegration(a=>({name:j,setupOnce(){n(a)}}));c.PostgresJsInstrumentation=o,c.instrumentPostgresJs=n,c.postgresJsIntegration=p},116141,a=>{"use strict";a.s([],613895),a.i(613895);var b,c,d=a.i(236471),e=a.i(231261);let f="object"==typeof globalThis?globalThis:a.g,g=Symbol.for("io.opentelemetry.js.api.logs");class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return f[g]?this.getLoggerProvider():(f[g]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=f[g])?void 0:a.call(f,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete f[g],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(984414);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(a=>a.name===g).filter(b=>af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!1},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{name;supportedVersions;patch;unpatch;files;constructor(a,b,c,d,e){this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d,this.files=e||[]}}class ah{supportedVersions;patch;unpatch;name;constructor(a,b,c,d){this.supportedVersions=b,this.patch=c,this.unpatch=d,this.name=(0,p.normalize)(a)}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],116141)},634149,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={PrismaInstrumentation:()=>w,registerInstrumentations:()=>x.registerInstrumentations};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let i of f(b))g.call(a,i)||i===c||d(a,i,{get:()=>b[i],enumerable:!(h=e(b,i))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(832528),l=a.r(116141),m="7.6.0".split(".")[0],n="PRISMA_INSTRUMENTATION",o=`V${m}_PRISMA_INSTRUMENTATION`,p=globalThis,q=a.r(832528),r="true"===process.env.PRISMA_SHOW_ALL_TRACES,s=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:a,ignoreSpanTypes:b}){this.tracerProvider=a,this.ignoreSpanTypes=b}isEnabled(){return!0}getTraceParent(a){let b=q.trace.getSpanContext(a??q.context.active());return b?`00-${b.traceId}-${b.spanId}-0${b.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(a){let b=this.tracerProvider.getTracer("prisma"),c=new Map;for(let d of a.filter(a=>null===a.parentId))!function a(b,c,d,e,f){if(u(c.name,f))return;let g={attributes:c.attributes,kind:"client"===c.kind?q.SpanKind.CLIENT:q.SpanKind.INTERNAL,startTime:c.startTime};b.startActiveSpan(c.name,g,g=>{for(let h of(e.set(c.id,g.spanContext().spanId),c.links&&g.addLinks(c.links.flatMap(a=>{let b=e.get(a);return b?{context:{spanId:b,traceId:g.spanContext().traceId,traceFlags:g.spanContext().traceFlags}}:[]})),d.filter(a=>a.parentId===c.id)))a(b,h,d,e,f);g.end(c.endTime)})}(b,d,a,c,this.ignoreSpanTypes)}getActiveContext(){return q.context.active()}runInChildSpan(a,b){if("string"==typeof a&&(a={name:a}),a.internal&&!r)return b();let c=this.tracerProvider.getTracer("prisma"),d=a.context??this.getActiveContext(),e=`prisma:client:${a.name}`;if(u(e,this.ignoreSpanTypes))return b();if(!1===a.active){let f=c.startSpan(e,a,d);return t(f,b(f,d))}return c.startActiveSpan(e,a,a=>t(a,b(a,d)))}};function t(a,b){var c;return null!=(c=b)&&"function"==typeof c.then?b.then(b=>(a.end(),b),b=>{throw a.end(),b}):(a.end(),b)}function u(a,b){return b.some(b=>"string"==typeof b?b===a:b.test(a))}var v="7.6.0",w=class extends l.InstrumentationBase{tracerProvider;constructor(a={}){super("@prisma/instrumentation",v,a)}setTracerProvider(a){this.tracerProvider=a}init(){return[new l.InstrumentationNodeModuleDefinition("@prisma/client",[v])]}enable(){let a,b=this._config;a={helper:new s({tracerProvider:this.tracerProvider??k.trace.getTracerProvider(),ignoreSpanTypes:b.ignoreSpanTypes??[]})},p[o]=a,p[n]=a}disable(){delete p[o],delete p[n]}isEnabled(){return void 0!==function(){let a=p[o];if(a?.helper)return a.helper;let b=p[n];return b?.helper}()}},x=a.r(116141)},770948,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(634149),f=a.r(187845),g=a.r(309569),h="Prisma";function i(){let a=globalThis.PRISMA_INSTRUMENTATION;return a&&"object"==typeof a&&"helper"in a?a.helper:void 0}class j extends e.PrismaInstrumentation{constructor(a){super(a?.instrumentationConfig)}enable(){super.enable();let a=i();a&&"object"==typeof a&&"dispatchEngineSpans"in a&&(a.createEngineSpan=a=>{let b=d.trace.getTracer("prismaV5Compatibility"),c=b._idGenerator;if(!c)return void f.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{a.spans.forEach(a=>{var e;let f=(e=a.kind,"client"===e?d.SpanKind.CLIENT:d.SpanKind.INTERNAL),g=a.parent_span_id,h=a.span_id,i=a.trace_id,j=a.links?.map(a=>({context:{traceId:a.trace_id,spanId:a.span_id,traceFlags:d.TraceFlags.SAMPLED}})),k=d.trace.setSpanContext(d.context.active(),{traceId:i,spanId:g,traceFlags:d.TraceFlags.SAMPLED});d.context.with(k,()=>{b._idGenerator={generateTraceId:()=>i,generateSpanId:()=>h},b.startSpan(a.name,{kind:f,links:j,startTime:a.start_time,attributes:a.attributes}).end(a.end_time),b._idGenerator=c})})}finally{b._idGenerator=c}})}}let k=g.generateInstrumentOnce(h,a=>new j(a)),l=f.defineIntegration(a=>({name:h,setupOnce(){k(a)},setup(a){i()&&a.on("spanStart",a=>{let b=f.spanToJSON(a);b.description?.startsWith("prisma:")&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===b.description&&b.data["db.query.text"]&&a.updateName(b.data["db.query.text"]),"prisma:engine:db_query"!==b.description||b.data["db.system"]||a.setAttribute("db.system","prisma")})}}));c.instrumentPrisma=k,c.prismaIntegration=l},327397,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},31093,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiLifecycleMethodNames=c.HapiLayerType=c.handlerPatched=c.HapiComponentName=void 0,c.HapiComponentName="@hapi/hapi",c.handlerPatched=Symbol("hapi-handler-patched"),c.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},c.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},437108,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_HTTP_METHOD=void 0,c.ATTR_HTTP_METHOD="http.method"},678965,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).HAPI_TYPE="hapi.type",d.PLUGIN_NAME="hapi.plugin.name",d.EXT_TYPE="server.ext.type"},636223,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getPluginFromInput=c.getExtMetadata=c.getRouteMetadata=c.isPatchableExtMethod=c.isDirectExtInput=c.isLifecycleExtEventObj=c.isLifecycleExtType=c.getPluginName=void 0;let d=a.r(357122),e=a.r(437108),f=a.r(31093),g=a.r(678965),h=a.r(167300);c.getPluginName=function(a){return a.name?a.name:a.pkg.name},c.isLifecycleExtType=a=>"string"==typeof a&&f.HapiLifecycleMethodNames.has(a),c.isLifecycleExtEventObj=a=>{let b=a?.type;return void 0!==b&&(0,c.isLifecycleExtType)(b)},c.isDirectExtInput=a=>Array.isArray(a)&&a.length<=3&&(0,c.isLifecycleExtType)(a[0])&&"function"==typeof a[1],c.isPatchableExtMethod=a=>!Array.isArray(a),c.getRouteMetadata=(a,b,c)=>{let i,j={[d.ATTR_HTTP_ROUTE]:a.path};return b&h.SemconvStability.OLD&&(j[e.ATTR_HTTP_METHOD]=a.method),b&h.SemconvStability.STABLE&&(j[d.ATTR_HTTP_REQUEST_METHOD]=a.method),c?(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.PLUGIN,j[g.AttributeNames.PLUGIN_NAME]=c,i=`${c}: route - ${a.path}`):(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.ROUTER,i=`route - ${a.path}`),{attributes:j,name:i}},c.getExtMetadata=(a,b,c)=>{let d=`ext - ${a}`;return(c&&"method"!==c&&(d=`ext - ${a} - ${c}`),b)?{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT,[g.AttributeNames.PLUGIN_NAME]:b},name:`${b}: ${d}`}:{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT},name:d}},c.getPluginFromInput=a=>"plugin"in a?"plugin"in a.plugin?a.plugin.plugin:a.plugin:a},487995,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(327397),h=a.r(31093),i=a.r(636223);class j extends f.InstrumentationBase{_semconvStability;constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a),this._semconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new f.InstrumentationNodeModuleDefinition(h.HapiComponentName,[">=17.0.0 <22"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return(0,f.isWrapped)(b.server)||this._wrap(b,"server",this._getServerPatch.bind(this)),(0,f.isWrapped)(b.Server)||this._wrap(b,"Server",this._getServerPatch.bind(this)),b},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;this._massUnwrap([b],["server","Server"])})}_getServerPatch(a){let b=this,c=this;return function(d){let e=a.apply(this,[d]);return c._wrap(e,"route",a=>b._getServerRoutePatch.bind(b)(a)),c._wrap(e,"ext",a=>b._getServerExtPatch.bind(b)(a)),c._wrap(e,"register",b._getServerRegisterPatch.bind(b)),e}}_getServerRegisterPatch(a){let b=this;return function(c,d){if(Array.isArray(c))for(let a of c){let c=(0,i.getPluginFromInput)(a);b._wrapRegisterHandler(c)}else{let a=(0,i.getPluginFromInput)(c);b._wrapRegisterHandler(a)}return a.apply(this,[c,d])}}_getServerExtPatch(a,b){let c=this;return function(...d){if(Array.isArray(d[0])){let a=d[0];for(let d=0;db._getServerRoutePatch.bind(b)(a,c)),e._wrap(a,"ext",a=>b._getServerExtPatch.bind(b)(a,c)),d.call(this,a,f)}}_wrapExtMethods(a,b,c){let e=this;if(a instanceof Array)for(let c=0;casync function(...g){if(void 0===d.trace.getSpan(d.context.active()))return await f.call(this,...g);let h=(0,e.getRPCMetadata)(d.context.active());h?.type===e.RPCType.HTTP&&(h.route=a.path);let j=(0,i.getRouteMetadata)(a,c._semconvStability,b),k=c.tracer.startSpan(j.name,{attributes:j.attributes});try{return await d.context.with(d.trace.setSpan(d.context.active(),k),()=>f.call(this,...g))}catch(a){throw k.recordException(a),k.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),a}finally{k.end()}};if("function"==typeof a.handler)a.handler=f(a.handler);else if("function"==typeof a.options){let b=a.options;a.options=function(a){let c=b(a);return"function"==typeof c.handler&&(c.handler=f(c.handler)),c}}else"function"==typeof a.options?.handler&&(a.options.handler=f(a.options.handler));return a}}c.HapiInstrumentation=j},984769,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.HapiInstrumentation=void 0;var d=a.r(487995);Object.defineProperty(c,"HapiInstrumentation",{enumerable:!0,get:function(){return d.HapiInstrumentation}});var e=a.r(678965);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},969899,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(984769),e=a.r(187845),f=a.r(309569),g=a.r(852223),h="Hapi",i=f.generateInstrumentOnce(h,()=>new d.HapiInstrumentation),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}})),k={name:"SentryHapiErrorPlugin",version:e.SDK_VERSION,register:async function(a){a.events.on({name:"request",channels:["error"]},(a,b)=>{var c;if(e.getIsolationScope()!==e.getDefaultIsolationScope()){let b=a.route;b.path&&e.getIsolationScope().setTransactionName(`${b.method.toUpperCase()} ${b.path}`)}else g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");b&&"object"==typeof b&&"error"in b&&b.error&&(c=b.error,e.captureException(c,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function l(a){await a.register(k);let b=e.getClient();b&&b.on("spanStart",a=>{var b;let c,d;b=a,d=(c=e.spanToJSON(b).data)["hapi.type"],!c[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&d&&b.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${d}.hapi`})}),f.ensureIsWrapped(a.register,"hapi")}c.hapiErrorPlugin=k,c.hapiIntegration=j,c.instrumentHapi=i,c.setupHapiErrorHandler=l},547707,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},c.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},106789,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300),f=a.r(187845),g=a.r(547707);class h extends e.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-hono","0.0.1",a)}init(){return[new e.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],a=>this._patch(a))]}_patch(a){let b=this;class c extends a.Hono{constructor(...a){super(...a),b._wrap(this,"get",b._patchHandler()),b._wrap(this,"post",b._patchHandler()),b._wrap(this,"put",b._patchHandler()),b._wrap(this,"delete",b._patchHandler()),b._wrap(this,"options",b._patchHandler()),b._wrap(this,"patch",b._patchHandler()),b._wrap(this,"all",b._patchHandler()),b._wrap(this,"on",b._patchOnHandler()),b._wrap(this,"use",b._patchMiddlewareHandler())}}try{a.Hono=c}catch{return{...a,Hono:c}}return a}_patchHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_patchOnHandler(){let a=this;return function(b){return function(...c){let d=c.slice(2);return b.apply(this,[...c.slice(0,2),...d.map(b=>a._wrapHandler(b))])}}}_patchMiddlewareHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_wrapHandler(a){let b=this;return function(c,e){if(!b.isEnabled())return a.apply(this,[c,e]);let h=c.req.path,i=b.tracer.startSpan(h);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>b._safeExecute(()=>{let d=a.apply(this,[c,e]);if(f.isThenable(d))return d.then(c=>{let d=b._determineHandlerType(c);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:d,[g.AttributeNames.HONO_NAME]:d===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),c});{let c=b._determineHandlerType(d);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:c,[g.AttributeNames.HONO_NAME]:c===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),d}},()=>i.end(),a=>{b._handleError(i,a),i.end()}))}}_safeExecute(a,b,c){try{let d=a();return f.isThenable(d)?d.then(()=>b(),a=>c(a)):b(),d}catch(a){throw c(a),a}}_determineHandlerType(a){return void 0===a?g.HonoTypes.MIDDLEWARE:g.HonoTypes.REQUEST_HANDLER}_handleError(a,b){b instanceof Error&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b))}}c.HonoInstrumentation=h},27047,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(309569),g=a.r(852223),h=a.r(547707),i=a.r(106789),j="Hono",k=f.generateInstrumentOnce(j,()=>new i.HonoInstrumentation({responseHook:a=>{!function(a){let b=e.spanToJSON(a).data,c=b[h.AttributeNames.HONO_TYPE];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.hono`});let f=b[h.AttributeNames.HONO_NAME];if("string"==typeof f&&a.updateName(f),e.getIsolationScope()===e.getDefaultIsolationScope()){g.DEBUG_BUILD&&e.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let i=b[d.ATTR_HTTP_ROUTE],j=b[d.ATTR_HTTP_REQUEST_METHOD];"string"==typeof i&&"string"==typeof j&&e.getIsolationScope().setTransactionName(`${j} ${i}`)}(a)}})),l=e.defineIntegration(()=>({name:j,setupOnce(){k()}}));c.honoIntegration=l,c.instrumentHono=k,c.setupHonoErrorHandler=function(a,b){a.use(async function(a,b){let c=e.httpRequestToRequestData(a.req);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:c}),await b()}),a.use(async function(a,c){await c(),(b?.shouldHandleError||function(a){return a.res.status>=500})(a)&&(a.res.sentry=e.captureException(a.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),f.ensureIsWrapped(a.use,"hono")}},784005,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=void 0,(d=c.KoaLayerType||(c.KoaLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware"},327081,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},325778,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).KOA_TYPE="koa.type",d.KOA_NAME="koa.name"},703707,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isLayerIgnored=c.getMiddlewareMetadata=void 0;let d=a.r(784005),e=a.r(325778),f=a.r(357122);c.getMiddlewareMetadata=(a,b,c,g)=>c?{attributes:{[e.AttributeNames.KOA_NAME]:g?.toString(),[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.ROUTER,[f.ATTR_HTTP_ROUTE]:g?.toString()},name:a._matchedRouteName||`router - ${g}`}:{attributes:{[e.AttributeNames.KOA_NAME]:b.name??"middleware",[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.MIDDLEWARE},name:`middleware - ${b.name}`},c.isLayerIgnored=(a,b)=>!!(Array.isArray(b?.ignoreLayersType)&&b?.ignoreLayersType?.includes(a))},730772,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.kLayerPatched=void 0,c.kLayerPatched=Symbol("koa-layer-patched")},151114,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(784005),g=a.r(327081),h=a.r(703707),i=a.r(498562),j=a.r(730772);class k extends e.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return new e.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return null==b?b:((0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use"),this._wrap(b.prototype,"use",this._getKoaUsePatch.bind(this)),a)},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;(0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use")})}_getKoaUsePatch(a){let b=this;return function(c){let d;return d=c.router?b._patchRouterDispatch(c):b._patchLayer(c,!1),a.apply(this,[d])}}_patchRouterDispatch(a){d.diag.debug("Patching @koa/router dispatch");let b=a.router;for(let a of b?.stack??[]){let b=a.path,c=a.stack;for(let a=0;a{if(void 0===d.trace.getSpan(d.context.active()))return a(f,j);let k=(0,h.getMiddlewareMetadata)(f,a,b,c),l=this.tracer.startSpan(k.name,{attributes:k.attributes}),m=(0,i.getRPCMetadata)(d.context.active());m?.type===i.RPCType.HTTP&&f._matchedRoute&&(m.route=f._matchedRoute.toString());let{requestHook:n}=this.getConfig();n&&(0,e.safeExecuteInTheMiddle)(()=>n(l,{context:f,middlewareLayer:a,layerType:g}),a=>{a&&d.diag.error("koa instrumentation: request hook failed",a)},!0);let o=d.trace.setSpan(d.context.active(),l);return d.context.with(o,async()=>{try{return await a(f,j)}catch(a){throw l.recordException(a),a}finally{l.end()}})})}}c.KoaInstrumentation=k},474061,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=c.AttributeNames=c.KoaInstrumentation=void 0;var d=a.r(151114);Object.defineProperty(c,"KoaInstrumentation",{enumerable:!0,get:function(){return d.KoaInstrumentation}});var e=a.r(325778);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}});var f=a.r(784005);Object.defineProperty(c,"KoaLayerType",{enumerable:!0,get:function(){return f.KoaLayerType}})},550583,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(474061),e=a.r(357122),f=a.r(187845),g=a.r(309569),h=a.r(852223),i=g.generateInstrumentOnce("Koa",d.KoaInstrumentation,(a={})=>({ignoreLayersType:a.ignoreLayersType,requestHook(a,b){g.addOriginToSpan(a,"auto.http.otel.koa");let c=f.spanToJSON(a).data,d=c["koa.type"];d&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${d}.koa`);let i=c["koa.name"];if("string"==typeof i&&a.updateName(i||"< unknown >"),f.getIsolationScope()===f.getDefaultIsolationScope()){h.DEBUG_BUILD&&f.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let j=c[e.ATTR_HTTP_ROUTE],k=b.context?.request?.method?.toUpperCase()||"GET";j&&f.getIsolationScope().setTransactionName(`${k} ${j}`)}})),j=f.defineIntegration((a={})=>({name:"Koa",setupOnce(){i(a)}}));c.instrumentKoa=i,c.koaIntegration=j,c.setupKoaErrorHandler=a=>{a.use(async(a,b)=>{try{await b()}catch(a){throw f.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),a}}),g.ensureIsWrapped(a.use,"koa")}},791516,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectNames=c.ConnectTypes=c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).CONNECT_TYPE="connect.type",d.CONNECT_NAME="connect.name",(e=c.ConnectTypes||(c.ConnectTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",(f=c.ConnectNames||(c.ConnectNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},544769,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},109564,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=void 0,c._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},679231,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.generateRoute=c.replaceCurrentStackRoute=c.addNewStackLayer=void 0;let d=a.r(832528),e=a.r(109564);c.addNewStackLayer=a=>{!1===Array.isArray(a[e._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,e._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),a[e._LAYERS_STORE_PROPERTY].push("/");let b=a[e._LAYERS_STORE_PROPERTY].length;return()=>{b===a[e._LAYERS_STORE_PROPERTY].length?a[e._LAYERS_STORE_PROPERTY].pop():d.diag.warn("Connect: Trying to pop the stack multiple time")}},c.replaceCurrentStackRoute=(a,b)=>{b&&a[e._LAYERS_STORE_PROPERTY].splice(-1,1,b)},c.generateRoute=a=>a[e._LAYERS_STORE_PROPERTY].reduce((a,b)=>a.replace(/\/+$/,"")+b)},161740,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectInstrumentation=c.ANONYMOUS_NAME=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(791516),g=a.r(544769),h=a.r(167300),i=a.r(357122),j=a.r(679231);c.ANONYMOUS_NAME="anonymous";class k extends h.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new h.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_patchApp(a){(0,h.isWrapped)(a.use)||this._wrap(a,"use",this._patchUse.bind(this)),(0,h.isWrapped)(a.handle)||this._wrap(a,"handle",this._patchHandle.bind(this))}_patchConstructor(a){let b=this;return function(...c){let d=a.apply(this,c);return b._patchApp(d),d}}_patchNext(a,b){return function(c){let d=a.apply(this,[c]);return b(),d}}_startSpan(a,b){let d,e,g;a?(d=f.ConnectTypes.REQUEST_HANDLER,g=f.ConnectNames.REQUEST_HANDLER,e=a):(d=f.ConnectTypes.MIDDLEWARE,g=f.ConnectNames.MIDDLEWARE,e=b.name||c.ANONYMOUS_NAME);let h=`${g} - ${e}`,j={attributes:{[i.ATTR_HTTP_ROUTE]:a.length>0?a:"/",[f.AttributeNames.CONNECT_TYPE]:d,[f.AttributeNames.CONNECT_NAME]:e}};return this.tracer.startSpan(h,j)}_patchMiddleware(a,b){let f=this,g=4===b.length;function h(){if(!f.isEnabled())return b.apply(this,arguments);let[h,i,k]=g?[1,2,3]:[0,1,2],l=arguments[h],m=arguments[i],n=arguments[k];(0,j.replaceCurrentStackRoute)(l,a);let o=(0,e.getRPCMetadata)(d.context.active());a&&o?.type===e.RPCType.HTTP&&(o.route=(0,j.generateRoute)(l));let p="";p=a?`request handler - ${a}`:`middleware - ${b.name||c.ANONYMOUS_NAME}`;let q=f._startSpan(a,b);f._diag.debug("start span",p);let r=!1;function s(){r?f._diag.debug(`span ${q.name} - already finished`):(r=!0,f._diag.debug(`finishing span ${q.name}`),q.end()),m.removeListener("close",s)}return m.addListener("close",s),arguments[k]=f._patchNext(n,s),b.apply(this,arguments)}return Object.defineProperty(h,"length",{value:b.length,writable:!1,configurable:!0}),h}_patchUse(a){let b=this;return function(...c){let d=c[c.length-1],e=c[c.length-2]||"";return c[c.length-1]=b._patchMiddleware(e,d),a.apply(this,c)}}_patchHandle(a){let b=this;return function(){let[c,d]=[0,2],e=arguments[c],f=arguments[d],g=(0,j.addNewStackLayer)(e);return"function"==typeof f&&(arguments[d]=b._patchOut(f,g)),a.apply(this,arguments)}}_patchOut(a,b){return function(...c){return b(),Reflect.apply(a,this,c)}}}c.ConnectInstrumentation=k},403473,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectTypes=c.ConnectNames=c.AttributeNames=c.ANONYMOUS_NAME=c.ConnectInstrumentation=void 0;var d=a.r(161740);Object.defineProperty(c,"ConnectInstrumentation",{enumerable:!0,get:function(){return d.ConnectInstrumentation}}),Object.defineProperty(c,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return d.ANONYMOUS_NAME}});var e=a.r(791516);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}}),Object.defineProperty(c,"ConnectNames",{enumerable:!0,get:function(){return e.ConnectNames}}),Object.defineProperty(c,"ConnectTypes",{enumerable:!0,get:function(){return e.ConnectTypes}})},617413,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(403473),e=a.r(187845),f=a.r(309569),g="Connect",h=f.generateInstrumentOnce(g,()=>new d.ConnectInstrumentation);function i(a,b,c,d){e.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),d(a)}c.connectIntegration=e.defineIntegration(()=>({name:g,setupOnce(){h()}})),c.instrumentConnect=h,c.setupConnectErrorHandler=a=>{a.use(i);let b=e.getClient();b&&b.on("spanStart",a=>{!function(a){let b=e.spanToJSON(a).data,c=b["connect.type"];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.connect`});let d=b["connect.name"];"string"==typeof d&&a.updateName(d)}(a)}),f.ensureIsWrapped(a.use,"connect")}},194619,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},11859,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SUPPORTED_VERSIONS=c.MODULE_NAME=void 0,c.MODULE_NAME="knex",c.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},764122,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_SQLITE=c.ATTR_NET_TRANSPORT=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.ATTR_NET_TRANSPORT="net.transport",c.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},496910,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.extractTableName=c.extractPortFromConnectionString=c.extractHostFromConnectionString=c.extractDatabaseFromConnectionString=c.limitLength=c.getName=c.mapSystem=c.otelExceptionFromKnexError=c.getFormatter=void 0;let d=a.r(357122),e=a.r(764122);c.getFormatter=a=>{if(a){if(a.client){if(a.client._formatQuery)return a.client._formatQuery.bind(a.client);else if(a.client.SqlString)return a.client.SqlString.format.bind(a.client.SqlString)}if(a.builder)return a.builder.toString.bind(a.builder)}return()=>""},c.otelExceptionFromKnexError=function(a,b){return a&&a instanceof Error?{message:b,code:a.code,stack:a.stack,name:a.name}:a};let f=new Map([["sqlite3",e.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",d.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);c.mapSystem=a=>f.get(a)||a,c.getName=(a,b,c)=>b?c?`${b} ${a}.${c}`:`${b} ${a}`:a,c.limitLength=(a,b)=>"string"==typeof a&&"number"==typeof b&&0{if(a)try{return new URL(a).pathname?.replace(/^\//,"")||void 0}catch{return}},c.extractHostFromConnectionString=a=>{if(a)try{return new URL(a).hostname||void 0}catch{return}},c.extractPortFromConnectionString=a=>{if(a)try{let b=new URL(a).port;return b?parseInt(b,10):void 0}catch{return}},c.extractTableName=a=>{let b=a?._single?.table;return"object"==typeof b?(0,c.extractTableName)(b):b}},242713,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;let d=a.r(832528),e=a.r(194619),f=a.r(11859),g=a.r(167300),h=a.r(496910),i=a.r(357122),j=a.r(764122),k=Symbol("opentelemetry.instrumentation-knex.context"),l={maxQueryLength:1022,requireParentSpan:!1};class m extends g.InstrumentationBase{_semconvStability;constructor(a={}){super(e.PACKAGE_NAME,e.PACKAGE_VERSION,{...l,...a}),this._semconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new g.InstrumentationNodeModuleDefinition(f.MODULE_NAME,f.SUPPORTED_VERSIONS);return a.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),a}getRunnerNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/runner.js`,f.SUPPORTED_VERSIONS,(a,b)=>(this.ensureWrapped(a.prototype,"query",this.createQueryWrapper(b)),a),(a,b)=>(this._unwrap(a.prototype,"query"),a))}getClientNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/client.js`,f.SUPPORTED_VERSIONS,a=>(this.ensureWrapped(a.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"raw",this.storeContext.bind(this)),a),a=>(this._unwrap(a.prototype,"queryBuilder"),this._unwrap(a.prototype,"schemaBuilder"),this._unwrap(a.prototype,"raw"),a))}createQueryWrapper(a){let b=this;return function(c){return function(e){let f=this.client.config,l=h.extractTableName(this.builder),m=e?.method,n=f?.connection?.connectionString,o=f?.connection?.filename||f?.connection?.database||h.extractDatabaseFromConnectionString(n),{maxQueryLength:p}=b.getConfig(),q={"knex.version":a},r=f?.connection?.filename===":memory:"?"inproc":void 0;if(b._semconvStability&g.SemconvStability.OLD&&Object.assign(q,{[j.ATTR_DB_SYSTEM]:h.mapSystem(this.client.driverName),[j.ATTR_DB_SQL_TABLE]:l,[j.ATTR_DB_OPERATION]:m,[j.ATTR_DB_USER]:f?.connection?.user,[j.ATTR_DB_NAME]:o,[j.ATTR_NET_PEER_NAME]:f?.connection?.host??h.extractHostFromConnectionString(n),[j.ATTR_NET_PEER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n),[j.ATTR_NET_TRANSPORT]:r}),b._semconvStability&g.SemconvStability.STABLE&&Object.assign(q,{[i.ATTR_DB_SYSTEM_NAME]:h.mapSystem(this.client.driverName),[i.ATTR_DB_COLLECTION_NAME]:l,[i.ATTR_DB_OPERATION_NAME]:m,[i.ATTR_DB_NAMESPACE]:o,[i.ATTR_SERVER_ADDRESS]:f?.connection?.host??h.extractHostFromConnectionString(n),[i.ATTR_SERVER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n)}),p){let a=h.limitLength(e?.sql,p);b._semconvStability&g.SemconvStability.STABLE&&(q[i.ATTR_DB_QUERY_TEXT]=a),b._semconvStability&g.SemconvStability.OLD&&(q[j.ATTR_DB_STATEMENT]=a)}let s=this.builder[k]||d.context.active(),t=d.trace.getSpan(s),u=t&&d.trace.isSpanContextValid(t.spanContext());if(b._config.requireParentSpan&&!u)return c.bind(this)(...arguments);let v=b.tracer.startSpan(h.getName(o,m,l),{kind:d.SpanKind.CLIENT,attributes:q},s),w=d.trace.setSpan(d.context.active(),v);return d.context.with(w,c,this,...arguments).then(a=>(v.end(),a)).catch(a=>{let b=h.getFormatter(this)(e.sql,e.bindings||[]),c=a.message.replace(b+" - ",""),f=h.otelExceptionFromKnexError(a,c);throw v.recordException(f),v.setStatus({code:d.SpanStatusCode.ERROR,message:c}),v.end(),a})}}}storeContext(a){return function(){let b=a.apply(this,arguments);return Object.defineProperty(b,k,{value:d.context.active()}),b}}ensureWrapped(a,b,c){(0,g.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,c)}}c.KnexInstrumentation=m},555384,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;var d=a.r(242713);Object.defineProperty(c,"KnexInstrumentation",{enumerable:!0,get:function(){return d.KnexInstrumentation}})},523682,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(555384),e=a.r(187845),f=a.r(309569),g="Knex",h=f.generateInstrumentOnce(g,()=>new d.KnexInstrumentation({requireParentSpan:!0})),i=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{data:b}=e.spanToJSON(a);"knex.version"in b&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});c.instrumentKnex=h,c.knexIntegration=i},895264,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MSSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MSSQL="mssql"},910191,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.once=c.getSpanName=void 0,c.getSpanName=function(a,b,c,d){return"execBulkLoad"===a&&d&&b?`${a} ${d} ${b}`:"callProcedure"===a?b?`${a} ${c} ${b}`:`${a} ${c}`:b?`${a} ${b}`:`${a}`},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}}},855594,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},407612,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=c.INJECTED_CTX=void 0;let d=a.r(832528),e=a.r(427699),f=a.r(167300),g=a.r(357122),h=a.r(895264),i=a.r(910191),j=a.r(855594),k=Symbol("opentelemetry.instrumentation-tedious.current-database");c.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let l=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function m(a){Object.defineProperty(this,k,{value:a,writable:!0})}class n extends f.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,f.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new f.InstrumentationNodeModuleDefinition(n.COMPONENT,[">=1.11.0 <20"],a=>{let b=a.Connection.prototype;for(let c of l)(0,f.isWrapped)(b[c])&&this._unwrap(b,c),this._wrap(b,c,this._patchQuery(c,a));return(0,f.isWrapped)(b.connect)&&this._unwrap(b,"connect"),this._wrap(b,"connect",this._patchConnect),a},a=>{if(void 0===a)return;let b=a.Connection.prototype;for(let a of l)this._unwrap(b,a);this._unwrap(b,"connect")})]}_patchConnect(a){return function(){return m.call(this,this.config?.options?.database),this.removeListener("databaseChange",m),this.on("databaseChange",m),this.once("end",()=>{this.removeListener("databaseChange",m)}),a.apply(this,arguments)}}_buildTraceparent(a){let b=a.spanContext();return`00-${b.traceId}-${b.spanId}-0${Number(b.traceFlags||d.TraceFlags.NONE).toString(16)}`}_injectContextInfo(a,b,d){return new Promise(e=>{try{let f=new b.Request("set context_info @opentelemetry_traceparent",a=>{e()});Object.defineProperty(f,c.INJECTED_CTX,{value:!0});let g=Buffer.from(d,"utf8");f.addParameter("opentelemetry_traceparent",b.TYPES.VarBinary,g,{length:g.length}),a.execSql(f)}catch{e()}})}_shouldInjectFor(a){return"execSql"===a||"execSqlBatch"===a||"callProcedure"===a||"execute"===a}_patchQuery(a,b){return j=>{let l=this;function m(m){if(m?.[c.INJECTED_CTX])return j.apply(this,arguments);if(!(m instanceof e.EventEmitter))return l._diag.warn(`Unexpected invocation of patched ${a} method. Span not recorded`),j.apply(this,arguments);let n=0,o=0,p=()=>o++,q=()=>n++,r=this[k],s="sp_prepare"===m.sqlTextOrProcedure&&m.parametersByName?.stmt?.value?m.parametersByName.stmt.value:m.sqlTextOrProcedure,t={};l._dbSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_DB_SYSTEM]=h.DB_SYSTEM_VALUE_MSSQL,t[h.ATTR_DB_NAME]=r,t[h.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,t[h.ATTR_DB_STATEMENT]=s,t[h.ATTR_DB_SQL_TABLE]=m.table),l._dbSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_DB_NAMESPACE]=r,t[g.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,t[g.ATTR_DB_QUERY_TEXT]=s,t[g.ATTR_DB_COLLECTION_NAME]=m.table),l._netSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_NET_PEER_NAME]=this.config?.server,t[h.ATTR_NET_PEER_PORT]=this.config?.options?.port),l._netSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_SERVER_ADDRESS]=this.config?.server,t[g.ATTR_SERVER_PORT]=this.config?.options?.port);let u=l.tracer.startSpan((0,i.getSpanName)(a,r,s,m.table),{kind:d.SpanKind.CLIENT,attributes:t}),v=(0,i.once)(a=>{m.removeListener("done",p),m.removeListener("doneInProc",p),m.removeListener("doneProc",q),m.removeListener("error",v),this.removeListener("end",v),u.setAttribute("tedious.procedure_count",n),u.setAttribute("tedious.statement_count",o),a&&u.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),u.end()});m.on("done",p),m.on("doneInProc",p),m.on("doneProc",q),m.once("error",v),this.on("end",v),"function"==typeof m.callback?l._wrap(m,"callback",l._patchCallbackQuery(v)):l._diag.error("Expected request.callback to be a function");let w=()=>d.context.with(d.trace.setSpan(d.context.active(),u),j,this,...arguments);if(!(l.getConfig().enableTraceContextPropagation&&l._shouldInjectFor(a)))return w();let x=l._buildTraceparent(u);l._injectContextInfo(this,b,x).finally(w)}return Object.defineProperty(m,"length",{value:j.length,writable:!1}),m}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c),b.apply(this,arguments)}}}c.TediousInstrumentation=n},752273,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=void 0;var d=a.r(407612);Object.defineProperty(c,"TediousInstrumentation",{enumerable:!0,get:function(){return d.TediousInstrumentation}})},903664,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(752273),e=a.r(187845),f=a.r(309569),g=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),h="Tedious",i=f.generateInstrumentOnce(h,()=>new d.TediousInstrumentation({})),j=e.defineIntegration(()=>{let a;return{name:h,setupOnce(){let b=i();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{description:b,data:c}=e.spanToJSON(a);if(!b||"mssql"!==c["db.system"])return;let d=b.split(" ")[0]||"";g.has(d)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});c.instrumentTedious=i,c.tediousIntegration=j},824688,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},998342,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(824688),g="generic-pool";class h extends e.InstrumentationBase{_isDisabled=!1;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition(g,[">=3.0.0 <4"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquirePatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.4.0 <3"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <2.4"],a=>(this._isDisabled=!1,(0,e.isWrapped)(a.Pool)&&this._unwrap(a,"Pool"),this._wrap(a,"Pool",this._poolWrapper.bind(this)),a),a=>(this._isDisabled=!0,a))]}_acquirePatcher(a){let b=this;return function(...c){let e=d.context.active(),f=b.tracer.startSpan("generic-pool.acquire",{},e);return d.context.with(d.trace.setSpan(e,f),()=>a.call(this,...c).then(a=>(f.end(),a),a=>{throw f.recordException(a),f.end(),a}))}}_poolWrapper(a){let b=this;return function(){let c=a.apply(this,arguments);return b._wrap(c,"acquire",b._acquireWithCallbacksPatcher.bind(b)),c}}_acquireWithCallbacksPatcher(a){let b=this;return function(c,e){if(b._isDisabled)return a.call(this,c,e);let f=d.context.active(),g=b.tracer.startSpan("generic-pool.acquire",{},f);return d.context.with(d.trace.setSpan(f,g),()=>{a.call(this,(a,b)=>{if(g.end(),c)return c(a,b)},e)})}}}c.GenericPoolInstrumentation=h},985162,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;var d=a.r(998342);Object.defineProperty(c,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return d.GenericPoolInstrumentation}})},785663,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(985162),e=a.r(187845),f=a.r(309569),g="GenericPool",h=f.generateInstrumentOnce(g,()=>new d.GenericPoolInstrumentation({}));c.genericPoolIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let b=e.spanToJSON(a).description;("generic-pool.aquire"===b||"generic-pool.acquire"===b)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),c.instrumentGenericPool=h},951712,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.31.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},521492,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;let d=a.r(167300),e=a.r(832528),f=a.r(951712),g="dataloader";function h(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class i extends d.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new d.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <3"],a=>{let b=h(a);return this._patchLoad(b.prototype),this._patchLoadMany(b.prototype),this._patchPrime(b.prototype),this._patchClear(b.prototype),this._patchClearAll(b.prototype),this._getPatchedConstructor(b)},a=>{let b=h(a);["load","loadMany","prime","clear","clearAll"].forEach(a=>{(0,d.isWrapped)(b.prototype[a])&&this._unwrap(b.prototype,a)})})]}shouldCreateSpans(){let a=this.getConfig();return void 0!==e.trace.getSpan(e.context.active())||!a.requireParentSpan}getSpanName(a,b){let c=a.name;return null==c?`${g}.${b}`:`${g}.${b} ${c}`}_wrapBatchLoadFn(a){let b=this;return function(...c){if(!b.isEnabled()||!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"batch"),{links:this._batch?.spanLinks},d);return e.context.with(e.trace.setSpan(d,f),()=>a.apply(this,c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a}))}}_getPatchedConstructor(a){let b=this,c=a.prototype;if(!b.isEnabled())return a;function e(...c){return"function"==typeof c[0]&&((0,d.isWrapped)(c[0])&&b._unwrap(c,0),c[0]=b._wrapBatchLoadFn(c[0])),a.apply(this,c)}return e.prototype=c,e}_patchLoad(a){(0,d.isWrapped)(a.load)&&this._unwrap(a,"load"),this._wrap(a,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"load"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>{let b=a.call(this,...c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:f.spanContext()})),b})}}_patchLoadMany(a){(0,d.isWrapped)(a.loadMany)&&this._unwrap(a,"loadMany"),this._wrap(a,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"loadMany"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c).then(a=>(f.end(),a)))}}_patchPrime(a){(0,d.isWrapped)(a.prime)&&this._unwrap(a,"prime"),this._wrap(a,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"prime"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClear(a){(0,d.isWrapped)(a.clear)&&this._unwrap(a,"clear"),this._wrap(a,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clear"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClearAll(a){(0,d.isWrapped)(a.clearAll)&&this._unwrap(a,"clearAll"),this._wrap(a,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clearAll"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}}c.DataloaderInstrumentation=i},621292,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;var d=a.r(521492);Object.defineProperty(c,"DataloaderInstrumentation",{enumerable:!0,get:function(){return d.DataloaderInstrumentation}})},141019,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621292),e=a.r(187845),f=a.r(309569),g="Dataloader",h=f.generateInstrumentOnce(g,()=>new d.DataloaderInstrumentation({requireParentSpan:!0}));c.dataloaderIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>{b.on("spanStart",a=>{let b=e.spanToJSON(a);b.description?.startsWith("dataloader")&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===b.description||"dataloader.loadMany"===b.description||"dataloader.batch"===b.description)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),c.instrumentDataloader=h},363619,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION=void 0,c.ATTR_MESSAGING_OPERATION="messaging.operation",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port"},31854,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_MESSAGING_CONVERSATION_ID=c.OLD_ATTR_MESSAGING_MESSAGE_ID=c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=c.ATTR_MESSAGING_URL=c.ATTR_MESSAGING_PROTOCOL_VERSION=c.ATTR_MESSAGING_PROTOCOL=c.MESSAGING_OPERATION_VALUE_PROCESS=c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=c.ATTR_MESSAGING_DESTINATION_KIND=c.ATTR_MESSAGING_DESTINATION=void 0,c.ATTR_MESSAGING_DESTINATION="messaging.destination",c.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",c.MESSAGING_OPERATION_VALUE_PROCESS="process",c.ATTR_MESSAGING_PROTOCOL="messaging.protocol",c.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",c.ATTR_MESSAGING_URL="messaging.url",c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",c.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",c.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},215900,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.DEFAULT_CONFIG=c.EndOperation=void 0,(d=c.EndOperation||(c.EndOperation={})).AutoAck="auto ack",d.Ack="ack",d.AckAll="ackAll",d.Reject="reject",d.Nack="nack",d.NackAll="nackAll",d.ChannelClosed="channel closed",d.ChannelError="channel error",d.InstrumentationTimeout="instrumentation timeout",c.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},486569,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isConfirmChannelTracing=c.unmarkConfirmChannelTracing=c.markConfirmChannelTracing=c.getConnectionAttributesFromUrl=c.getConnectionAttributesFromServer=c.normalizeExchange=c.CONNECTION_ATTRIBUTES=c.CHANNEL_CONSUME_TIMEOUT_TIMER=c.CHANNEL_SPANS_NOT_ENDED=c.MESSAGE_STORED_SPAN=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(363619),h=a.r(31854);c.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),c.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),c.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),c.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let i=(0,d.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");c.normalizeExchange=a=>""!==a?a:"";let j=(a,b)=>a||("AMQP"===b?5672:5671),k=a=>{let b=a||"amqp";return(b.endsWith(":")?b.substring(0,b.length-1):b).toUpperCase()},l=(a,b,c,e)=>c?{[b]:c}:(d.diag.error(`amqplib instrumentation: could not extract connection attribute ${e} from user supplied url`,{url:a}),{});c.getConnectionAttributesFromServer=a=>{let b=a.serverProperties.product?.toLowerCase?.();return b?{[g.ATTR_MESSAGING_SYSTEM]:b}:{}},c.getConnectionAttributesFromUrl=(a,b)=>{let c={[h.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(a=a||"amqp://localhost")){let d=a,i=k(d?.protocol);Object.assign(c,{...l(a,h.ATTR_MESSAGING_PROTOCOL,i,"protocol")});let m=d?.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(a,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(a,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(d.port,i);b&e.SemconvStability.OLD&&Object.assign(c,l(a,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(a,f.ATTR_SERVER_PORT,n,"port"))}else{let i=a.replace(/:[^:@/]*@/,":***@");c[h.ATTR_MESSAGING_URL]=i;try{let a=new URL(i),d=k(a.protocol);Object.assign(c,{...l(i,h.ATTR_MESSAGING_PROTOCOL,d,"protocol")});let m=a.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(i,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(i,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(a.port?parseInt(a.port):void 0,d);b&e.SemconvStability.OLD&&Object.assign(c,l(i,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(i,f.ATTR_SERVER_PORT,n,"port"))}catch(a){d.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:i,err:a})}}return c},c.markConfirmChannelTracing=a=>a.setValue(i,!0),c.unmarkConfirmChannelTracing=a=>a.deleteValue(i),c.isConfirmChannelTracing=a=>!0===a.getValue(i)},557061,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.61.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},284258,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AmqplibInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(363619),h=a.r(31854),i=a.r(215900),j=a.r(486569),k=a.r(557061),l=[">=0.5.5 <1"];class m extends f.InstrumentationBase{_netSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...i.DEFAULT_CONFIG,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...i.DEFAULT_CONFIG,...a})}init(){let a=new f.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),b=new f.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),c=new f.InstrumentationNodeModuleFile("amqplib/lib/connect.js",l,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new f.InstrumentationNodeModuleDefinition("amqplib",l,void 0,void 0,[a,c,b])}patchConnect(a){return a=this.unpatchConnect(a),(0,f.isWrapped)(a.connect)||this._wrap(a,"connect",this.getConnectPatch.bind(this)),a}unpatchConnect(a){return(0,f.isWrapped)(a.connect)&&this._unwrap(a,"connect"),a}patchChannelModel(a,b){return(0,f.isWrapped)(a.Channel.prototype.publish)||this._wrap(a.Channel.prototype,"publish",this.getPublishPatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.consume)||this._wrap(a.Channel.prototype,"consume",this.getConsumePatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.ack)||this._wrap(a.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,i.EndOperation.Ack)),(0,f.isWrapped)(a.Channel.prototype.nack)||this._wrap(a.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,i.EndOperation.Nack)),(0,f.isWrapped)(a.Channel.prototype.reject)||this._wrap(a.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,i.EndOperation.Reject)),(0,f.isWrapped)(a.Channel.prototype.ackAll)||this._wrap(a.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,i.EndOperation.AckAll)),(0,f.isWrapped)(a.Channel.prototype.nackAll)||this._wrap(a.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,i.EndOperation.NackAll)),(0,f.isWrapped)(a.Channel.prototype.emit)||this._wrap(a.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)||this._wrap(a.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,b)),a}unpatchChannelModel(a){return(0,f.isWrapped)(a.Channel.prototype.publish)&&this._unwrap(a.Channel.prototype,"publish"),(0,f.isWrapped)(a.Channel.prototype.consume)&&this._unwrap(a.Channel.prototype,"consume"),(0,f.isWrapped)(a.Channel.prototype.ack)&&this._unwrap(a.Channel.prototype,"ack"),(0,f.isWrapped)(a.Channel.prototype.nack)&&this._unwrap(a.Channel.prototype,"nack"),(0,f.isWrapped)(a.Channel.prototype.reject)&&this._unwrap(a.Channel.prototype,"reject"),(0,f.isWrapped)(a.Channel.prototype.ackAll)&&this._unwrap(a.Channel.prototype,"ackAll"),(0,f.isWrapped)(a.Channel.prototype.nackAll)&&this._unwrap(a.Channel.prototype,"nackAll"),(0,f.isWrapped)(a.Channel.prototype.emit)&&this._unwrap(a.Channel.prototype,"emit"),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)&&this._unwrap(a.ConfirmChannel.prototype,"publish"),a}getConnectPatch(a){let b=this;return function(c,d,e){return a.call(this,c,d,function(a,d){if(null==a){let a=(0,j.getConnectionAttributesFromUrl)(c,b._netSemconvStability),e=(0,j.getConnectionAttributesFromServer)(d);d[j.CONNECTION_ATTRIBUTES]={...a,...e}}e.apply(this,arguments)})}}getChannelEmitPatch(a){let b=this;return function(c){if("close"===c){b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelClosed,void 0);let a=this[j.CHANNEL_CONSUME_TIMEOUT_TIMER];a&&clearInterval(a),this[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===c&&b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelError,void 0);return a.apply(this,arguments)}}getAckAllPatch(a,b,c){let d=this;return function(e){return d.endAllSpansOnChannel(this,a,b,e),c.apply(this,arguments)}}getAckPatch(a,b,c){let d=this;return function(e,f,g){let h=b===i.EndOperation.Reject?f:g,k=this[j.CHANNEL_SPANS_NOT_ENDED]??[],l=k.findIndex(a=>a.msg===e);if(l<0)d.endConsumerSpan(e,a,b,h);else if(b!==i.EndOperation.Reject&&f){for(let c=0;c<=l;c++)d.endConsumerSpan(k[c].msg,a,b,h);k.splice(0,l+1)}else d.endConsumerSpan(e,a,b,h),k.splice(l,1);return c.apply(this,arguments)}}getConsumePatch(a,b){let c=this;return function(k,l,m){let n=this;if(!Object.prototype.hasOwnProperty.call(n,j.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:a}=c.getConfig();if(a){let b=setInterval(()=>{c.checkConsumeTimeoutOnChannel(n)},a);b.unref(),n[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=b}n[j.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(b){let o;if(!b)return l.call(this,b);let p=b.properties.headers??{},q=d.propagation.extract(d.ROOT_CONTEXT,p),r=b.fields?.exchange;if(c._config.useLinksForConsume){let a=q?d.trace.getSpan(q)?.spanContext():void 0;q=void 0,a&&(o=[{context:a}])}let s=c.tracer.startSpan(`${k} process`,{kind:d.SpanKind.CONSUMER,attributes:{...n?.connection?.[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:r,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:b.fields?.routingKey,[g.ATTR_MESSAGING_OPERATION]:h.MESSAGING_OPERATION_VALUE_PROCESS,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:b?.properties.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:b?.properties.correlationId},links:o},q),{consumeHook:t}=c.getConfig();t&&(0,f.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:a,msg:b}),a=>{a&&d.diag.error("amqplib instrumentation: consumerHook error",a)},!0),m?.noAck||(n[j.CHANNEL_SPANS_NOT_ENDED].push({msg:b,timeOfConsume:(0,e.hrTime)()}),b[j.MESSAGE_STORED_SPAN]=s);let u=q||d.ROOT_CONTEXT;d.context.with(d.trace.setSpan(u,s),()=>{l.call(this,b)}),m?.noAck&&(c.callConsumeEndHook(s,b,!1,i.EndOperation.AutoAck),s.end())},b.apply(this,arguments)}}getConfirmedPublishPatch(a,b){let c=this;return function(e,g,h,i,k){let{span:l,modifiedOptions:m}=c.createPublishSpan(c,e,g,this,i),{publishHook:n}=c.getConfig();n&&(0,f.safeExecuteInTheMiddle)(()=>n(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:m,isConfirmChannel:!0}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let o=(0,j.markConfirmChannelTracing)(d.context.active()),p=[...arguments];return p[3]=m,p[4]=d.context.bind((0,j.unmarkConfirmChannelTracing)(d.trace.setSpan(o,l)),function(b,j){try{k?.call(this,b,j)}finally{let{publishConfirmHook:j}=c.getConfig();j&&(0,f.safeExecuteInTheMiddle)(()=>j(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:i,isConfirmChannel:!0,confirmError:b}),a=>{a&&d.diag.error("amqplib instrumentation: publishConfirmHook error",a)},!0),b&&l.setStatus({code:d.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),l.end()}}),d.context.with(o,b.bind(this,...p))}}getPublishPatch(a,b){let c=this;return function(e,g,h,i){if((0,j.isConfirmChannelTracing)(d.context.active()))return b.apply(this,arguments);{let{span:j,modifiedOptions:k}=c.createPublishSpan(c,e,g,this,i),{publishHook:l}=c.getConfig();l&&(0,f.safeExecuteInTheMiddle)(()=>l(j,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:k,isConfirmChannel:!1}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let m=[...arguments];m[3]=k;let n=b.apply(this,m);return j.end(),n}}}createPublishSpan(a,b,c,e,f){let g=(0,j.normalizeExchange)(b),i=a.tracer.startSpan(`publish ${g}`,{kind:d.SpanKind.PRODUCER,attributes:{...e.connection[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:b,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:c,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:f?.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:f?.correlationId}}),k=f??{};return k.headers=k.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),i),k.headers),{span:i,modifiedOptions:k}}endConsumerSpan(a,b,c,e){let f=a[j.MESSAGE_STORED_SPAN];f&&(!1!==b&&f.setStatus({code:d.SpanStatusCode.ERROR,message:c!==i.EndOperation.ChannelClosed&&c!==i.EndOperation.ChannelError?`${c} called on message${!0===e?" with requeue":!1===e?" without requeue":""}`:c}),this.callConsumeEndHook(f,a,b,c),f.end(),a[j.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(a,b,c,d){(a[j.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(a=>{this.endConsumerSpan(a.msg,b,c,d)}),a[j.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(a,b,c,e){let{consumeEndHook:g}=this.getConfig();g&&(0,f.safeExecuteInTheMiddle)(()=>g(a,{msg:b,rejected:c,endOperation:e}),a=>{a&&d.diag.error("amqplib instrumentation: consumerEndHook error",a)},!0)}checkConsumeTimeoutOnChannel(a){let b,c=(0,e.hrTime)(),d=a[j.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:f}=this.getConfig();for(b=0;b{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EndOperation=c.DEFAULT_CONFIG=c.AmqplibInstrumentation=void 0;var d=a.r(284258);Object.defineProperty(c,"AmqplibInstrumentation",{enumerable:!0,get:function(){return d.AmqplibInstrumentation}});var e=a.r(215900);Object.defineProperty(c,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return e.DEFAULT_CONFIG}}),Object.defineProperty(c,"EndOperation",{enumerable:!0,get:function(){return e.EndOperation}})},372233,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(991031),e=a.r(187845),f=a.r(309569),g="Amqplib",h={consumeEndHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.consumer")},publishHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.publisher")}},i=f.generateInstrumentOnce(g,()=>new d.AmqplibInstrumentation(h));c.amqplibIntegration=e.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentAmqplib=i},370289,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.INTEGRATION_NAME="VercelAI"},209207,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(370289),g=[">=3.0.0 <7"],h=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function i(a){"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)&&(function(a){for(let b of a){if(!("object"==typeof b&&null!==b&&"type"in b&&"error"in b&&"toolName"in b&&"toolCallId"in b&&"tool-error"===b.type&&b.error instanceof Error))continue;let a=e._INTERNAL_getSpanContextForToolCallId(b.toolCallId);a?e.withScope(c=>{c.setContext("trace",{trace_id:a.traceId,span_id:a.spanId}),c.setTag("vercel.ai.tool.name",b.toolName),c.setTag("vercel.ai.tool.callId",b.toolCallId),c.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):e.withScope(a=>{a.setTag("vercel.ai.tool.name",b.toolName),a.setTag("vercel.ai.tool.callId",b.toolCallId),a.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(a.content),j(a.content))}function j(a){for(let b of a)"object"==typeof b&&null!==b&&"toolCallId"in b&&"string"==typeof b.toolCallId&&e._INTERNAL_cleanupToolCallSpanContext(b.toolCallId)}function k(a,b,c,d){return{recordInputs:a?.recordInputs!==void 0?a.recordInputs:void 0!==b.recordInputs?b.recordInputs:!0===c||d,recordOutputs:a?.recordOutputs!==void 0?a.recordOutputs:void 0!==b.recordOutputs?b.recordOutputs:!0===c||d}}class l extends d.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(a={}){super("@sentry/instrumentation-vercel-ai",e.SDK_VERSION,a),l.prototype.__init.call(this),l.prototype.__init2.call(this)}init(){return new d.InstrumentationNodeModuleDefinition("ai",g,this._patch.bind(this))}callWhenPatched(a){this._isPatched?a():this._callbacks.push(a)}_patch(a){this._isPatched=!0,this._callbacks.forEach(a=>a()),this._callbacks=[];let b=a=>new Proxy(a,{apply:(a,b,c)=>{let d=c[0].experimental_telemetry||{},g=d.isEnabled,h=e.getClient(),j=h?.getIntegrationByName(f.INTEGRATION_NAME),{recordInputs:l,recordOutputs:m}=k(j?.options,d,g,!!j&&!!h?.getOptions().sendDefaultPii);return c[0].experimental_telemetry={...d,isEnabled:void 0===g||g,recordInputs:l,recordOutputs:m},e.handleCallbackErrors(()=>Reflect.apply(a,b,c),a=>{a&&"object"==typeof a&&e.addNonEnumerableProperty(a,"_sentry_active_span",e.getActiveSpan())},()=>{},a=>{i(a)})}});if("[object Module]"===Object.prototype.toString.call(a)){for(let c of h)null!=a[c]&&(a[c]=b(a[c]));return a}{let c=h.reduce((c,d)=>(null!=a[d]&&(c[d]=b(a[d])),c),{});return{...a,...c}}}}c.SentryVercelAiInstrumentation=l,c.cleanupToolCallSpanContexts=j,c.determineRecordingSettings=k,c.processToolCallResults=i},602959,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(370289),g=a.r(209207),h=e.generateInstrumentOnce(f.INTEGRATION_NAME,()=>new g.SentryVercelAiInstrumentation({})),i=d.defineIntegration((a={})=>{let b;return{name:f.INTEGRATION_NAME,options:a,setupOnce(){b=h()},afterAllSetup(c){let e;a.force??(e=c.getIntegrationByName("Modules"),!!e?.getModules?.()?.ai)?d.addVercelAiProcessors(c):b?.callWhenPatched(()=>d.addVercelAiProcessors(c))}}});c.instrumentVercelAi=h,c.vercelAIIntegration=i},339499,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=4.0.0 <7"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-openai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("openai",f,this._patch.bind(this))}_patch(a){let b=a;return b=this._patchClient(b,"OpenAI"),b=this._patchClient(b,"AzureOpenAI")}_patchClient(a,b){let c=a[b];if(!c)return a;let d=this.getConfig(),f=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.OPENAI_INTEGRATION_NAME))return Reflect.construct(c,a);let b=Reflect.construct(c,a);return e.instrumentOpenAiClient(b,d)};for(let a of(Object.setPrototypeOf(f,c),Object.setPrototypeOf(f.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(f,a,b)}try{a[b]=f}catch{Object.defineProperty(a,b,{value:f,writable:!0,configurable:!0,enumerable:!0})}if(a.default===c)try{a.default=f}catch{Object.defineProperty(a,"default",{value:f,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryOpenAiInstrumentation=g},783325,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(339499),g=e.generateInstrumentOnce(d.OPENAI_INTEGRATION_NAME,a=>new f.SentryOpenAiInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.OPENAI_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentOpenAi=g,c.openAIIntegration=h},297431,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.19.2 <1.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-anthropic-ai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",f,this._patch.bind(this))}_patch(a){let b=a.Anthropic,c=this.getConfig(),d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentAnthropicAiClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}try{a.Anthropic=d}catch{Object.defineProperty(a,"Anthropic",{value:d,writable:!0,configurable:!0,enumerable:!0})}if(a.default===b)try{a.default=d}catch{Object.defineProperty(a,"default",{value:d,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryAnthropicAiInstrumentation=g},876254,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(297431),g=e.generateInstrumentOnce(d.ANTHROPIC_AI_INTEGRATION_NAME,a=>new f.SentryAnthropicAiInstrumentation(a));c.anthropicAIIntegration=d.defineIntegration((a={})=>({name:d.ANTHROPIC_AI_INTEGRATION_NAME,options:a,setupOnce(){g(a)}})),c.instrumentAnthropicAi=g},702821,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.10.0 <2"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-google-genai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@google/genai",f,a=>this._patch(a),a=>a,[new d.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",f,a=>this._patch(a),a=>a)])}_patch(a){let b=a.GoogleGenAI,c=this.getConfig();if("function"!=typeof b)return a;let d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentGoogleGenAIClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}return e.replaceExports(a,"GoogleGenAI",d),a}}c.SentryGoogleGenAiInstrumentation=g},2031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(702821),g=e.generateInstrumentOnce(d.GOOGLE_GENAI_INTEGRATION_NAME,a=>new f.SentryGoogleGenAiInstrumentation(a));c.googleGenAIIntegration=d.defineIntegration((a={})=>({name:d.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){g(a)}})),c.instrumentGoogleGenAI=g},721669,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.1.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langchain",e.SDK_VERSION,a)}init(){let a=[];for(let b of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])a.push(new d.InstrumentationNodeModuleDefinition(b,f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile(`${b}/dist/index.cjs`,f,this._patch.bind(this),a=>a)]));return a.push(new d.InstrumentationNodeModuleDefinition("langchain",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",f,this._patch.bind(this),a=>a)])),a}_patch(a){e._INTERNAL_skipAiProviderWrapping([e.OPENAI_INTEGRATION_NAME,e.ANTHROPIC_AI_INTEGRATION_NAME,e.GOOGLE_GENAI_INTEGRATION_NAME]);let b=e.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(a,b),a}_patchRunnableMethods(a,b){let c=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],d=Object.values(a.universal_exports??a).find(a=>"function"==typeof a&&c.includes(a.name));if(!d)return;let e=d.prototype;if(!e.__sentry_patched__)for(let a of(e.__sentry_patched__=!0,["invoke","stream","batch"])){let c=e[a];"function"==typeof c&&(e[a]=function(a,b,c){return new Proxy(a,{apply(a,c,d){var e,f;let g=d[1];(!g||"object"!=typeof g||Array.isArray(g))&&(g={},d[1]=g);let h=(e=g.callbacks,f=b,e?Array.isArray(e)?e.includes(f)?e:[...e,f]:"object"==typeof e?[e,f]:e:[f]);return g.callbacks=h,Reflect.apply(a,c,d)}})}(c,b))}}}c.SentryLangChainInstrumentation=g},252877,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(721669),g=e.generateInstrumentOnce(d.LANGCHAIN_INTEGRATION_NAME,a=>new f.SentryLangChainInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGCHAIN_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangChain=g,c.langChainIntegration=h},750457,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.0.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langgraph",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@langchain/langgraph",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",f,this._patch.bind(this),a=>a)])}_patch(a){return a.StateGraph&&"function"==typeof a.StateGraph&&e.instrumentLangGraph(a.StateGraph.prototype,this.getConfig()),a}}c.SentryLangGraphInstrumentation=g},365497,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(750457),g=e.generateInstrumentOnce(d.LANGGRAPH_INTEGRATION_NAME,a=>new f.SentryLangGraphInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGGRAPH_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangGraph=g,c.langGraphIntegration=h},571160,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));c.buildLaunchDarklyFlagUsedHandlerShim=function(){return d.isBrowser()||d.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},c.launchDarklyIntegrationShim=e},980419,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));c.OpenFeatureIntegrationHookShim=class{constructor(){d.isBrowser()||d.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},c.openFeatureIntegrationShim=e},351649,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.statsigIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},420316,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.unleashIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},535383,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.growthbookIntegrationShim=a.r(187845).growthbookIntegration},41036,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(761095),e=a.r(832528),f=a.r(167300),g=a.r(357122);function h(a,b,c,d,e){var f,g,h,l,m,n,o,p;return i(a,c),b(a,"addDoc",(f=d,g=e,function(a){return function(b,c){let d=k(f,"addDoc",b);return g(d),j(d,()=>a(b,c))}})),b(a,"getDocs",(h=d,l=e,function(a){return function(b){let c=k(h,"getDocs",b);return l(c),j(c,()=>a(b))}})),b(a,"setDoc",(m=d,n=e,function(a){return function(b,c,d){let e=k(m,"setDoc",b.parent||b);return n(e),j(e,()=>void 0!==d?a(b,c,d):a(b,c))}})),b(a,"deleteDoc",(o=d,p=e,function(a){return function(b){let c=k(o,"deleteDoc",b.parent||b);return p(c),j(c,()=>a(b))}})),a}function i(a,b){for(let c of["addDoc","getDocs","setDoc","deleteDoc"])f.isWrapped(a[c])&&b(a,c);return a}function j(a,b){return e.context.with(e.trace.setSpan(e.context.active(),a),()=>f.safeExecuteInTheMiddle(()=>b(),b=>{b&&a.recordException(b),a.end()},!0))}function k(a,b,c){let d=a.startSpan(`${b} ${c.path}`,{kind:e.SpanKind.CLIENT});return function(a,b){let c=b.firestore.app,d=c.options,e=(b.firestore.toJSON()||{}).settings||{},f={[g.ATTR_DB_COLLECTION_NAME]:b.path,[g.ATTR_DB_NAMESPACE]:c.name,[g.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":b.type,"firebase.firestore.options.projectId":d.projectId,"firebase.firestore.options.appId":d.appId,"firebase.firestore.options.messagingSenderId":d.messagingSenderId,"firebase.firestore.options.storageBucket":d.storageBucket},{address:h,port:i}=l(e);h&&(f[g.ATTR_SERVER_ADDRESS]=h),i&&(f[g.ATTR_SERVER_PORT]=i),a.setAttributes(f)}(d,c),d.setAttribute(g.ATTR_DB_OPERATION_NAME,b),d}function l(a){let b,c;if("string"==typeof a.host)if(a.host.startsWith("[")){if(a.host.endsWith("]"))b=a.host.replace(/^\[|\]$/g,"");else if(a.host.includes("]:")){let d=a.host.lastIndexOf(":");-1!==d&&(b=a.host.slice(1,d).replace(/^\[|\]$/g,""),c=a.host.slice(d+1))}}else if(d.isIPv6(a.host))b=a.host;else{let d=a.host.lastIndexOf(":");-1!==d?(b=a.host.slice(0,d),c=a.host.slice(d+1)):b=a.host}return{address:b,port:c?parseInt(c,10):void 0}}c.getPortAndAddress=l,c.patchFirestore=function(a,b,c,d,g){let j=()=>{},k=g.firestoreSpanCreationHook;"function"==typeof k&&(j=a=>{f.safeExecuteInTheMiddle(()=>k(a),a=>{a&&e.diag.error(a?.message)},!0)});let l=new f.InstrumentationNodeModuleDefinition("@firebase/firestore",b,b=>h(b,c,d,a,j));for(let e of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])l.files.push(new f.InstrumentationNodeModuleFile(e,b,b=>h(b,c,d,a,j),a=>i(a,d)));return l}},647427,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300);function f(a,b,c){return function(e){return function(...f){let g="function"==typeof f[0]?f[0]:f[1],h="function"==typeof f[0]?void 0:f[0];if(!g)return e.call(this,...f);let i=async function(...e){let f=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",h=a.startSpan(`firebase.function.${c}`,{kind:d.SpanKind.SERVER}),i={"faas.name":f,"faas.trigger":c,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(i["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(i["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),h.setAttributes(i),b?.requestHook?.(h),d.context.with(d.trace.setSpan(d.context.active(),h),async()=>{let a,c;try{c=await g.apply(this,e)}catch(b){a=b}if(b?.responseHook?.(h,a),a&&h.recordException(a),h.end(),a)throw await b?.errorHook?.(h,a),a;return c})};return h?e.call(this,h,i):e.call(this,i)}}}function g(a,b){for(let c of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])e.isWrapped(a[c])&&b(a,c);return a}c.patchFunctions=function(a,b,c,h,i){let j=()=>{},k=()=>{},l=i.functions?.errorHook,m=i.functions?.requestHook,n=i.functions?.responseHook;"function"==typeof n&&(k=(a,b)=>{e.safeExecuteInTheMiddle(()=>n(a,b),a=>{a&&d.diag.error(a?.message)},!0)}),"function"==typeof m&&(j=a=>{e.safeExecuteInTheMiddle(()=>m(a),a=>{a&&d.diag.error(a?.message)},!0)});let o=new e.InstrumentationNodeModuleDefinition("firebase-functions",b);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:d,triggerType:i})=>{o.files.push(new e.InstrumentationNodeModuleFile(d,b,b=>(function(a,b,c,d,e,h){switch(g(a,c),h){case"function":b(a,"onRequest",f(d,e,"http.request")),b(a,"onCall",f(d,e,"http.call"));break;case"firestore":b(a,"onDocumentCreated",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdated",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeleted",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWritten",f(d,e,"firestore.document.written")),b(a,"onDocumentCreatedWithAuthContext",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdatedWithAuthContext",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeletedWithAuthContext",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWrittenWithAuthContext",f(d,e,"firestore.document.written"));break;case"scheduler":b(a,"onSchedule",f(d,e,"scheduler.scheduled"));break;case"storage":b(a,"onObjectFinalized",f(d,e,"storage.object.finalized")),b(a,"onObjectArchived",f(d,e,"storage.object.archived")),b(a,"onObjectDeleted",f(d,e,"storage.object.deleted")),b(a,"onObjectMetadataUpdated",f(d,e,"storage.object.metadataUpdated"))}return a})(b,c,h,a,{requestHook:j,responseHook:k,errorHook:l},i),a=>g(a,h)))}),o},c.patchV2Functions=f},562446,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(41036),g=a.r(647427),h={},i=[">=3.0.0 <5"],j=[">=6.0.0 <7"];class k extends d.InstrumentationBase{constructor(a=h){super("@sentry/instrumentation-firebase",e.SDK_VERSION,a)}setConfig(a={}){super.setConfig({...h,...a})}init(){let a=[];return a.push(f.patchFirestore(this.tracer,i,this._wrap,this._unwrap,this.getConfig())),a.push(g.patchFunctions(this.tracer,j,this._wrap,this._unwrap,this.getConfig())),a}}c.FirebaseInstrumentation=k},562382,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(562446),g="Firebase",h={firestoreSpanCreationHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.firestore"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.functions"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(a,b)=>{b&&(d.captureException(b,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d.flush(2e3))}}},i=e.generateInstrumentOnce(g,()=>new f.FirebaseInstrumentation(h));c.firebaseIntegration=d.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentFirebase=i},426414,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(948678),e=a.r(372233),f=a.r(876254),g=a.r(617413),h=a.r(31953),i=a.r(533819),j=a.r(562382),k=a.r(785663),l=a.r(2031),m=a.r(534849),n=a.r(969899),o=a.r(27047),p=a.r(142670),q=a.r(550583),r=a.r(252877),s=a.r(365497),t=a.r(268935),u=a.r(228663),v=a.r(720382),w=a.r(370840),x=a.r(592734),y=a.r(783325),z=a.r(257141),A=a.r(870983),B=a.r(770948),C=a.r(461054),D=a.r(903664),E=a.r(602959);c.getAutoPerformanceIntegrations=function(){return[h.expressIntegration(),i.fastifyIntegration(),m.graphqlIntegration(),o.honoIntegration(),u.mongoIntegration(),v.mongooseIntegration(),w.mysqlIntegration(),x.mysql2Integration(),C.redisIntegration(),z.postgresIntegration(),B.prismaIntegration(),n.hapiIntegration(),q.koaIntegration(),g.connectIntegration(),D.tediousIntegration(),k.genericPoolIntegration(),p.kafkaIntegration(),e.amqplibIntegration(),t.lruMemoizerIntegration(),r.langChainIntegration(),s.langGraphIntegration(),E.vercelAIIntegration(),y.openAIIntegration(),f.anthropicAIIntegration(),l.googleGenAIIntegration(),A.postgresJsIntegration(),j.firebaseIntegration()]},c.getOpenTelemetryInstrumentationToPreload=function(){return[d.instrumentSentryHttp,d.instrumentOtelHttp,h.instrumentExpress,g.instrumentConnect,i.instrumentFastify,i.instrumentFastifyV3,n.instrumentHapi,o.instrumentHono,p.instrumentKafka,q.instrumentKoa,t.instrumentLruMemoizer,u.instrumentMongo,v.instrumentMongoose,w.instrumentMysql,x.instrumentMysql2,z.instrumentPostgres,n.instrumentHapi,m.instrumentGraphql,C.instrumentRedis,D.instrumentTedious,k.instrumentGenericPool,e.instrumentAmqplib,r.instrumentLangChain,E.instrumentVercelAi,y.instrumentOpenAi,A.instrumentPostgresJs,j.instrumentFirebase,f.instrumentAnthropicAi,l.instrumentGoogleGenAI,s.instrumentLangGraph]}},319410,a=>{"use strict";let b;a.s([],485393),a.i(485393);var c=a.i(984414),d=a.i(928530),e=a.i(307554),f=a.i(39342);let g=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(a){let b={},d=(0,f.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),g=(0,f.getStringFromEnv)("OTEL_SERVICE_NAME");if(d)try{let a=this._parseResourceAttributes(d);Object.assign(b,a)}catch(a){c.diag.debug(`EnvDetector failed: ${a instanceof Error?a.message:a}`)}return g&&(b[e.ATTR_SERVICE_NAME]=g),{attributes:b}}_parseResourceAttributes(a){if(!a)return{};let b={};for(let c of a.split(this._COMMA_SEPARATOR)){let a,d,e=c.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==e.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${c}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[f,g]=e,h=f.trim(),i=g.trim();if(0===h.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${c}".`);try{a=decodeURIComponent(h),d=decodeURIComponent(i)}catch(a){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${c}": ${a instanceof Error?a.message:a}`)}if(a.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${a}".`);if(d.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${a}".`);b[a]=d}return b}};var h=a.i(446786),i=a.i(605365);async function j(){if(!b)switch(i.platform){case"darwin":b=(await a.A(939510)).getMachineId;break;case"linux":b=(await a.A(962327)).getMachineId;break;case"freebsd":b=(await a.A(665688)).getMachineId;break;case"win32":b=(await a.A(256493)).getMachineId;break;default:b=(await a.A(205639)).getMachineId}return b()}let k=new class{detect(a){return{attributes:{"host.name":(0,h.hostname)(),"host.arch":(a=>{switch(a){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return a}})((0,h.arch)()),"host.id":j()}}}},l=new class{detect(a){return{attributes:{"os.type":(a=>{switch(a){case"sunos":return"solaris";case"win32":return"windows";default:return a}})((0,h.platform)()),"os.version":(0,h.release)()}}}},m=new class{detect(a){let b={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(b["process.command"]=process.argv[1]);try{let a=h.userInfo();b["process.owner"]=a.username}catch(a){c.diag.debug(`error obtaining process owner: ${a}`)}return{attributes:b}}};var n=a.i(254799);let o=new class{detect(a){return{attributes:{"service.instance.id":(0,n.randomUUID)()}}}};var p=a.i(726435);a.s(["defaultResource",()=>d.defaultResource,"defaultServiceName",()=>p.defaultServiceName,"detectResources",0,(a={})=>(a.detectors||[]).map(b=>{try{let e=(0,d.resourceFromDetectedResource)(b.detect(a));return c.diag.debug(`${b.constructor.name} found resource.`,e),e}catch(a){return c.diag.debug(`${b.constructor.name} failed: ${a.message}`),(0,d.emptyResource)()}}).reduce((a,b)=>a.merge(b),(0,d.emptyResource)()),"emptyResource",()=>d.emptyResource,"envDetector",0,g,"hostDetector",0,k,"osDetector",0,l,"processDetector",0,m,"resourceFromAttributes",()=>d.resourceFromAttributes,"serviceInstanceIdDetector",0,o],319410)},562622,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(319410),f=a.r(409633),g=a.r(357122),h=a.r(187845),i=a.r(309569),j=a.r(221598),k=a.r(852223),l=a.r(426414);function m(a,b={}){let c=new f.BasicTracerProvider({sampler:new j.SentrySampler(a),resource:e.defaultResource().merge(e.resourceFromAttributes({[g.ATTR_SERVICE_NAME]:"node",[g.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[g.ATTR_SERVICE_VERSION]:h.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new j.SentrySpanProcessor({timeout:n(a.getOptions().maxSpanWaitDuration)}),...b.spanProcessors||[]]});d.trace.setGlobalTracerProvider(c),d.propagation.setGlobalPropagator(new j.SentryPropagator);let k=new i.SentryContextManager;return d.context.setGlobalContextManager(k),[c,k.getAsyncLocalStorageLookup()]}function n(a){if(null!=a){if(a>1e6)return k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(a<=0||Number.isNaN(a)){k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return a}}c._clampSpanProcessorTimeout=n,c.initOpenTelemetry=function(a,b={}){a.getOptions().debug&&i.setupOpenTelemetryLogger();let[c,d]=m(a,b);a.traceProvider=c,a.asyncLocalStorageLookup=d},c.preloadOpenTelemetry=function(a={}){var b;let c,{debug:d}=a;d&&h.debug.enable(),i.initializeEsmLoader(),(b=a.integrations,c=l.getOpenTelemetryInstrumentationToPreload(),b?c.filter(a=>{let c=a.id;return b.some(a=>c===a||c.startsWith(`${a}.`))}):c).forEach(a=>{a(),d&&h.debug.log(`[Sentry] Preloaded ${a.id} instrumentation`)})},c.setupOtel=m},969031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(948678),g=a.r(412292),h=a.r(426414),i=a.r(562622);function j(){return e.getDefaultIntegrations().filter(a=>"Http"!==a.name&&"NodeFetch"!==a.name).concat(f.httpIntegration(),g.nativeNodeFetchIntegration())}function k(a){return[...j(),...d.hasSpansEnabled(a)?h.getAutoPerformanceIntegrations():[]]}function l(a={},b){d.applySdkMetadata(a,"node");let c=e.init({...a,defaultIntegrations:a.defaultIntegrations??b(a)});return c&&!a.skipOpenTelemetrySetup&&(i.initOpenTelemetry(c,{spanProcessors:a.openTelemetrySpanProcessors}),e.validateOpenTelemetrySetup()),c}c.getDefaultIntegrations=k,c.getDefaultIntegrationsWithoutPerformance=j,c.init=function(a={}){return l(a,k)},c.initWithoutDefaultIntegrations=function(a={}){return l(a,()=>[])}},848074,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(948678),e=a.r(412292),f=a.r(56551),g=a.r(31953),h=a.r(533819),i=a.r(534849),j=a.r(142670),k=a.r(268935),l=a.r(228663),m=a.r(720382),n=a.r(370840),o=a.r(592734),p=a.r(461054),q=a.r(257141),r=a.r(870983),s=a.r(770948),t=a.r(969899),u=a.r(27047),v=a.r(550583),w=a.r(617413),x=a.r(523682),y=a.r(903664),z=a.r(785663),A=a.r(141019),B=a.r(372233),C=a.r(602959),D=a.r(783325),E=a.r(876254),F=a.r(2031),G=a.r(252877),H=a.r(365497),I=a.r(571160),J=a.r(980419),K=a.r(351649),L=a.r(420316),M=a.r(535383),N=a.r(562382),O=a.r(969031),P=a.r(562622),Q=a.r(426414),R=a.r(221598),S=a.r(187845),T=a.r(309569);c.httpIntegration=d.httpIntegration,c.nativeNodeFetchIntegration=e.nativeNodeFetchIntegration,c.fsIntegration=f.fsIntegration,c.expressErrorHandler=g.expressErrorHandler,c.expressIntegration=g.expressIntegration,c.setupExpressErrorHandler=g.setupExpressErrorHandler,c.fastifyIntegration=h.fastifyIntegration,c.setupFastifyErrorHandler=h.setupFastifyErrorHandler,c.graphqlIntegration=i.graphqlIntegration,c.kafkaIntegration=j.kafkaIntegration,c.lruMemoizerIntegration=k.lruMemoizerIntegration,c.mongoIntegration=l.mongoIntegration,c.mongooseIntegration=m.mongooseIntegration,c.mysqlIntegration=n.mysqlIntegration,c.mysql2Integration=o.mysql2Integration,c.redisIntegration=p.redisIntegration,c.postgresIntegration=q.postgresIntegration,c.postgresJsIntegration=r.postgresJsIntegration,c.prismaIntegration=s.prismaIntegration,c.hapiIntegration=t.hapiIntegration,c.setupHapiErrorHandler=t.setupHapiErrorHandler,c.honoIntegration=u.honoIntegration,c.setupHonoErrorHandler=u.setupHonoErrorHandler,c.koaIntegration=v.koaIntegration,c.setupKoaErrorHandler=v.setupKoaErrorHandler,c.connectIntegration=w.connectIntegration,c.setupConnectErrorHandler=w.setupConnectErrorHandler,c.knexIntegration=x.knexIntegration,c.tediousIntegration=y.tediousIntegration,c.genericPoolIntegration=z.genericPoolIntegration,c.dataloaderIntegration=A.dataloaderIntegration,c.amqplibIntegration=B.amqplibIntegration,c.vercelAIIntegration=C.vercelAIIntegration,c.openAIIntegration=D.openAIIntegration,c.anthropicAIIntegration=E.anthropicAIIntegration,c.googleGenAIIntegration=F.googleGenAIIntegration,c.langChainIntegration=G.langChainIntegration,c.langGraphIntegration=H.langGraphIntegration,c.buildLaunchDarklyFlagUsedHandler=I.buildLaunchDarklyFlagUsedHandlerShim,c.launchDarklyIntegration=I.launchDarklyIntegrationShim,c.OpenFeatureIntegrationHook=J.OpenFeatureIntegrationHookShim,c.openFeatureIntegration=J.openFeatureIntegrationShim,c.statsigIntegration=K.statsigIntegrationShim,c.unleashIntegration=L.unleashIntegrationShim,c.growthbookIntegration=M.growthbookIntegrationShim,c.firebaseIntegration=N.firebaseIntegration,c.getDefaultIntegrations=O.getDefaultIntegrations,c.getDefaultIntegrationsWithoutPerformance=O.getDefaultIntegrationsWithoutPerformance,c.init=O.init,c.initWithoutDefaultIntegrations=O.initWithoutDefaultIntegrations,c.initOpenTelemetry=P.initOpenTelemetry,c.preloadOpenTelemetry=P.preloadOpenTelemetry,c.getAutoPerformanceIntegrations=Q.getAutoPerformanceIntegrations,c.setNodeAsyncContextStrategy=R.setOpenTelemetryContextAsyncContextStrategy,c.SDK_VERSION=S.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=S.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=S.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=S.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=S.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=S.Scope,c.addBreadcrumb=S.addBreadcrumb,c.addEventProcessor=S.addEventProcessor,c.addIntegration=S.addIntegration,c.captureCheckIn=S.captureCheckIn,c.captureConsoleIntegration=S.captureConsoleIntegration,c.captureEvent=S.captureEvent,c.captureException=S.captureException,c.captureFeedback=S.captureFeedback,c.captureMessage=S.captureMessage,c.captureSession=S.captureSession,c.close=S.close,c.consoleIntegration=S.consoleIntegration,c.consoleLoggingIntegration=S.consoleLoggingIntegration,c.continueTrace=S.continueTrace,c.createConsolaReporter=S.createConsolaReporter,c.createLangChainCallbackHandler=S.createLangChainCallbackHandler,c.createTransport=S.createTransport,c.dedupeIntegration=S.dedupeIntegration,c.endSession=S.endSession,c.eventFiltersIntegration=S.eventFiltersIntegration,c.extraErrorDataIntegration=S.extraErrorDataIntegration,c.featureFlagsIntegration=S.featureFlagsIntegration,c.flush=S.flush,c.functionToStringIntegration=S.functionToStringIntegration,c.getActiveSpan=S.getActiveSpan,c.getClient=S.getClient,c.getCurrentScope=S.getCurrentScope,c.getGlobalScope=S.getGlobalScope,c.getIsolationScope=S.getIsolationScope,c.getRootSpan=S.getRootSpan,c.getSpanDescendants=S.getSpanDescendants,c.getSpanStatusFromHttpCode=S.getSpanStatusFromHttpCode,c.getTraceData=S.getTraceData,c.getTraceMetaTags=S.getTraceMetaTags,c.httpHeadersToSpanAttributes=S.httpHeadersToSpanAttributes,c.inboundFiltersIntegration=S.inboundFiltersIntegration,c.instrumentAnthropicAiClient=S.instrumentAnthropicAiClient,c.instrumentGoogleGenAIClient=S.instrumentGoogleGenAIClient,c.instrumentLangGraph=S.instrumentLangGraph,c.instrumentOpenAiClient=S.instrumentOpenAiClient,c.instrumentStateGraphCompile=S.instrumentStateGraphCompile,c.instrumentSupabaseClient=S.instrumentSupabaseClient,c.isEnabled=S.isEnabled,c.isInitialized=S.isInitialized,c.lastEventId=S.lastEventId,c.linkedErrorsIntegration=S.linkedErrorsIntegration,c.parameterize=S.parameterize,c.profiler=S.profiler,c.requestDataIntegration=S.requestDataIntegration,c.rewriteFramesIntegration=S.rewriteFramesIntegration,c.setContext=S.setContext,c.setConversationId=S.setConversationId,c.setCurrentClient=S.setCurrentClient,c.setExtra=S.setExtra,c.setExtras=S.setExtras,c.setHttpStatus=S.setHttpStatus,c.setMeasurement=S.setMeasurement,c.setTag=S.setTag,c.setTags=S.setTags,c.setUser=S.setUser,c.spanToBaggageHeader=S.spanToBaggageHeader,c.spanToJSON=S.spanToJSON,c.spanToTraceHeader=S.spanToTraceHeader,c.startInactiveSpan=S.startInactiveSpan,c.startNewTrace=S.startNewTrace,c.startSession=S.startSession,c.startSpan=S.startSpan,c.startSpanManual=S.startSpanManual,c.supabaseIntegration=S.supabaseIntegration,c.suppressTracing=S.suppressTracing,c.trpcMiddleware=S.trpcMiddleware,c.updateSpanName=S.updateSpanName,c.winterCGHeadersToDict=S.winterCGHeadersToDict,c.withActiveSpan=S.withActiveSpan,c.withIsolationScope=S.withIsolationScope,c.withMonitor=S.withMonitor,c.withScope=S.withScope,c.wrapMcpServerWithSentry=S.wrapMcpServerWithSentry,c.zodErrorsIntegration=S.zodErrorsIntegration,c.NODE_VERSION=T.NODE_VERSION,c.NodeClient=T.NodeClient,c.SentryContextManager=T.SentryContextManager,c.anrIntegration=T.anrIntegration,c.childProcessIntegration=T.childProcessIntegration,c.contextLinesIntegration=T.contextLinesIntegration,c.createGetModuleFromFilename=T.createGetModuleFromFilename,c.createSentryWinstonTransport=T.createSentryWinstonTransport,c.cron=T.cron,c.defaultStackParser=T.defaultStackParser,c.disableAnrDetectionForCallback=T.disableAnrDetectionForCallback,c.generateInstrumentOnce=T.generateInstrumentOnce,c.getSentryRelease=T.getSentryRelease,c.httpServerIntegration=T.httpServerIntegration,c.httpServerSpansIntegration=T.httpServerSpansIntegration,c.localVariablesIntegration=T.localVariablesIntegration,c.logger=T.logger,c.makeNodeTransport=T.makeNodeTransport,c.metrics=T.metrics,c.modulesIntegration=T.modulesIntegration,c.nodeContextIntegration=T.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=T.nodeRuntimeMetricsIntegration,c.onUncaughtExceptionIntegration=T.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=T.onUnhandledRejectionIntegration,c.pinoIntegration=T.pinoIntegration,c.processSessionIntegration=T.processSessionIntegration,c.spotlightIntegration=T.spotlightIntegration,c.systemErrorIntegration=T.systemErrorIntegration,c.validateOpenTelemetrySetup=T.validateOpenTelemetrySetup},505891,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(522734),f=a.r(814747),g=null,h=null;c.createRouteManifest=function(a){let b;if(a?.appDirPath)b=a.appDirPath;else{let a=process.cwd(),c=f.join(a,"app"),d=f.join(a,"src","app");e.existsSync(c)&&e.lstatSync(c).isDirectory()?b=c:e.existsSync(d)&&e.lstatSync(d).isDirectory()&&(b=d)}if(!b)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(g&&h===b&&d===a?.includeRouteGroups)return g;let{dynamicRoutes:c,staticRoutes:i,isrRoutes:j}=function a(b,c="",d=!1){let g=[],h=[],i=[];try{let k=e.readdirSync(b,{withFileTypes:!0}),l=k.find(a=>{var b;return b=a.name,"page.tsx"===b||"page.jsx"===b||"page.ts"===b||"page.js"===b});if(l){let a=d?c||"/":(c||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),j=a.includes(":"),k=f.join(b,l.name);if(function(a){try{let b=e.readFileSync(a,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(b)}catch{return!1}}(k)&&i.push(a),j){let{regex:b,paramNames:c,hasOptionalPrefix:d}=function(a){let b,c,d=a.split("/").filter(Boolean),e=[],f=[],g=!1;for(let a of d)if(a.startsWith(":")){let b=a.substring(1);if(b.endsWith("*?")){let a=b.slice(0,-2);f.push(a),g=!0}else if(b.endsWith("*")){let a=b.slice(0,-1);f.push(a),e.push("(.+)")}else f.push(b),e.push("([^/]+)")}else e.push(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(g)if(0===e.length)c="^/(.*)$";else{let a=e.join("/");c=`^/${a}(?:/(.*))?$`}else c=`^/${e.join("/")}$`;return{regex:c,paramNames:f,hasOptionalPrefix:(b=f[0],void 0!==b&&("locale"===b||"lang"===b||"language"===b))}}(a);g.push({path:a,regex:b,paramNames:c,hasOptionalPrefix:d})}else h.push({path:a})}for(let e of k)if(e.isDirectory()){var j;let k,l=f.join(b,e.name),m=e.name.startsWith("[")&&e.name.endsWith("]"),n=(k=(j=e.name).startsWith("(")&&j.endsWith(")")?d?e.name:"":m?function(a){if(a.startsWith("[[...")&&a.endsWith("]]")){let b=a.slice(5,-2);return`:${b}*?`}if(a.startsWith("[...")&&a.endsWith("]")){let b=a.slice(4,-1);return`:${b}*`}return`:${a.slice(1,-1)}`}(e.name):e.name)?`${c}/${k}`:c,o=a(l,n,d);g.push(...o.dynamicRoutes),h.push(...o.staticRoutes),i.push(...o.isrRoutes)}}catch(a){console.warn("Error building route manifest:",a)}return{dynamicRoutes:g,staticRoutes:h,isrRoutes:i}}(b,a?.basePath,a?.includeRouteGroups),k={dynamicRoutes:c,staticRoutes:i,isrRoutes:j};return g=k,h=b,d=a?.includeRouteGroups,k}},520112,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.resolveTunnelRoute=function(a){let b;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let c="string"==typeof a?a:(b=d._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${b}`);return c&&(process.env.__SENTRY_TUNNEL_ROUTE__=c),c},c.setUpTunnelRewriteRules=function(a,b){let c=a.rewrites,d=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,e=d||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",f=d||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";a.rewrites=async(...a)=>{let d={source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:e},g=[{source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:f},d];if("function"!=typeof c)return g;let h=await c(...a);return Array.isArray(h)?[...g,...h]:{...h,beforeFiles:[...g,...h.beforeFiles||[]]}}}},563540,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(848074),f=a.r(522734),g=a.r(814747),h=a.r(505891),i=a.r(832609),j=a.r(183276),k=a.r(520112),l=!1,m=!1;function n(a,b){if(!b)return a;let c=a=>"function"==typeof b?b(a):b.some(b=>d.isMatchingPattern(a,b));return{staticRoutes:a.staticRoutes.filter(a=>!c(a.path)),dynamicRoutes:a.dynamicRoutes.filter(a=>!c(a.path)),isrRoutes:a.isrRoutes.filter(a=>!c(a))}}c.filterRouteManifest=n,c.getNextMajor=function(a){if(!a)return;let{major:b}=d.parseSemver(a);return b},c.maybeCreateRouteManifest=function(a,b){if(b.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==b.routeManifestInjection&&(void 0!==b.routeManifestInjection||!b.disableManifestInjection))return n(h.createRouteManifest({basePath:a.basePath}),b.routeManifestInjection?.exclude)},c.maybeGetVercelCronsConfig=function(a){let b={config:void 0,strategy:void 0};if(!process.env.VERCEL)return b;let c=a._experimental?.vercelCronsMonitoring===!0,e=a.webpack?.automaticVercelMonitors===!0;if(!c&&!e)return b;let h=function(){try{let a=g.join(process.cwd(),"vercel.json"),b=f.readFileSync(a,"utf8"),c=JSON.parse(b).crons;if(c&&Array.isArray(c)&&c.length>0)return c;return}catch(a){if("ENOENT"===a.code)return;d.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",a);return}}();return h&&(b.config=h,c&&e?(d.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),b.strategy="spans"):c?(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),b.strategy="spans"):(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),b.strategy="wrapper")),b},c.maybeSetClientTraceMetadataOption=function(a,b){if(b){let{major:c,minor:e}=d.parseSemver(b);void 0!==c&&void 0!==e&&(c>=15||14===c&&e>=3)&&(a.experimental=a.experimental||{},a.experimental.clientTraceMetadata=["baggage","sentry-trace",...a.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},c.maybeSetInstrumentationHookOption=function(a,b){if(b&&i.requiresInstrumentationHook(b)){a.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),a.experimental={instrumentationHook:!0,...a.experimental};return}b||(a.experimental&&"instrumentationHook"in a.experimental?!1===a.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),a.experimental={instrumentationHook:!0,...a.experimental}))},c.maybeSetUpTunnelRouteRewriteRules=function(a,b){if(!b.tunnelRoute)return;if("export"===a.output){l||(l=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let c=k.resolveTunnelRoute(b.tunnelRoute);b.tunnelRoute=c||void 0,k.setUpTunnelRewriteRules(a,c)},c.resolveReleaseName=function(a){return a.release?.create!==!1?a.release?.name??e.getSentryRelease()??j.getGitRevision():a.release?.name},c.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(m||(m=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},c.warnIfMissingOnRouterTransitionStartHook=function(a){let b=j.getInstrumentationClientFileContents();void 0===b||b.includes("onRouterTransitionStart")||a.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},253989,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832609),e=a.r(183276),f=a.r(920753),g=a.r(993918),h=a.r(563540);c.getFinalConfigObject=function(a,b){f.migrateDeprecatedWebpackOptions(b);let c=h.resolveReleaseName(b);if(h.maybeSetUpTunnelRouteRewriteRules(a,b),h.shouldReturnEarlyInExperimentalBuildMode())return a;let i=h.maybeCreateRouteManifest(a,b),j=h.maybeGetVercelCronsConfig(b);e.setUpBuildTimeVariables(a,b,c);let k=d.getNextjsVersion(),l=h.getNextMajor(k);h.maybeSetClientTraceMetadataOption(a,k),h.maybeSetInstrumentationHookOption(a,k),h.warnIfMissingOnRouterTransitionStartHook(b);let m=g.getBundlerInfo(k);g.maybeWarnAboutUnsupportedTurbopack(k,m),g.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(k,b,m);let n=g.maybeConstructTurbopackConfig(a,b,i,k,m,j),o=g.resolveUseRunAfterProductionCompileHookOption(b,m);return g.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,nextJsVersion:k,bundlerInfo:m,turboPackConfig:n,shouldUseRunAfterProductionCompileHook:o}),g.maybeEnableTurbopackSourcemaps(a,b,m),{...a,...g.getServerExternalPackagesPatch(a,l),...g.getWebpackPatch({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,routeManifest:i,nextJsVersion:k,shouldUseRunAfterProductionCompileHook:o,bundlerInfo:m,vercelCronsConfigResult:j}),...g.getTurbopackPatch(m,n)}}},474224,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(253989);c.withSentryConfig=function(a,b={}){let c=a||{};return"function"==typeof c?function(...a){let f=c.apply(this,a);return d.isThenable(f)?f.then(a=>e.getFinalConfigObject(a,b)):e.getFinalConfigObject(f,b)}:e.getFinalConfigObject(c,b)}},263581,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{"use strict";var b="";function c(a){return a.split("\n").reduce(function(a,c){var k,l,m,n=function(a){var c=d.exec(a);if(!c)return null;var f=c[2]&&0===c[2].indexOf("native"),g=c[2]&&0===c[2].indexOf("eval"),h=e.exec(c[2]);return g&&null!=h&&(c[2]=h[1],c[3]=h[2],c[4]=h[3]),{file:f?null:c[2],methodName:c[1]||b,arguments:f?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}(c)||((k=f.exec(c))?{file:k[2],methodName:k[1]||b,arguments:[],lineNumber:+k[3],column:k[4]?+k[4]:null}:null)||function(a){var c=g.exec(a);if(!c)return null;var d=c[3]&&c[3].indexOf(" > eval")>-1,e=h.exec(c[3]);return d&&null!=e&&(c[3]=e[1],c[4]=e[2],c[5]=null),{file:c[3],methodName:c[1]||b,arguments:c[2]?c[2].split(","):[],lineNumber:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}(c)||((l=j.exec(c))?{file:l[2],methodName:l[1]||b,arguments:[],lineNumber:+l[3],column:l[4]?+l[4]:null}:null)||((m=i.exec(c))?{file:m[3],methodName:m[1]||b,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return n&&a.push(n),a},[])}var d=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,e=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;a.s(["parse",()=>c])},10308,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(641235),f=a.r(263581),g=d.GLOBAL_OBJ;function h(){let a=process.env._sentryBasePath??g._sentryBasePath??"";""===a||a.match(/^\//)||(a=`/${a}`);let b=process.env.PORT||"3000";return`http://localhost:${b}${a}`}async function i(a,b={}){let c=new AbortController,e=setTimeout(()=>c.abort(),3e3);return d.suppressTracing(()=>fetch(a,{...b,signal:c.signal}).finally(()=>{clearTimeout(e)}))}async function j(a,b){try{if(!(a.file?.startsWith("webpack-internal:")||a.file?.startsWith("file:")))return null;let c=new URLSearchParams;c.append("isServer",String(!1)),c.append("isEdgeServer",String(!1)),c.append("isAppDirectory",String(!0)),c.append("errorMessage",b.toString()),Object.keys(a).forEach(b=>{c.append(b,(a[b]??"").toString())});let d=h(),e=await i(`${d}/__nextjs_original-stack-frame?${c.toString()}`);if(!e.ok||204===e.status)return null;let f=await e.json();return{originalCodeFrame:f.originalCodeFrame,originalStackFrame:f.originalStackFrame}}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}async function k(a){try{let b={frames:a.filter(a=>!!a.file).map(a=>(a.file=a.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:a.file,methodName:a.methodName??"",arguments:[],lineNumber:a.lineNumber??0,column:a.column??0,line1:a.lineNumber??0,column1:a.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},c=h(),d=await i(`${c}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok||204===d.status)return null;return(await d.json()).map(a=>({originalCodeFrame:a.value.originalCodeFrame,originalStackFrame:a.value.originalStackFrame}))}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}c.devErrorSymbolicationEventProcessor=async function a(a,b){"transaction"===a.type&&(a.spans=a.spans?.filter(a=>{let b=a.data?.["http.url"];return"string"!=typeof b||!b.includes("__nextjs_original-stack-frame")}));try{if(b.originalException&&b.originalException instanceof Error&&b.originalException.stack){let c,f=e.parse(b.originalException.stack),h=g._sentryNextJsVersion;if(!h)return a;let i=d.parseSemver(h);if(i.major>15||15===i.major&&i.minor>=2){let b=await k(f);if(null===b)return a;c=b}else c=await Promise.all(f.map(a=>j(a,b.originalException)));a.exception?.values?.[0]?.stacktrace?.frames&&(a.exception.values[0].stacktrace.frames=a.exception.values[0].stacktrace.frames.map((a,b,d)=>{let e=c[d.length-1-b];if(!e?.originalStackFrame||!e.originalCodeFrame)return{...a,platform:a.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:f,preContextLines:g,postContextLines:h}=function(a){let b,c=a.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(a=>!a.match(/^\s*\|/)).map(a=>({line:a,isErrorLine:!!a.match(/^>/)})).map(a=>({...a,line:a.line.replace(/^.*\|/,"")})),d=[],e=[],f=!1;for(let a of c)a.isErrorLine?(b=a.line,f=!0):f?e.push(a.line):d.push(a.line);return{contextLine:b,preContextLines:d,postContextLines:e}}(e.originalCodeFrame);return{...a,pre_context:g,context_line:f,post_context:h,function:e.originalStackFrame.methodName,filename:e.originalStackFrame.file?function(a){if(!a)return a;let b=a.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return b?b[1]:a}(e.originalStackFrame.file):void 0,lineno:e.originalStackFrame.lineNumber||e.originalStackFrame.line1||void 0,colno:e.originalStackFrame.column||e.originalStackFrame.column1||void 0}}))}}catch{}return a}},983894,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getVercelEnv=function(a){let b=a?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return b?`vercel-${b}`:void 0}},411290,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.ATTR_NEXT_ROUTE="next.route",c.ATTR_NEXT_SEGMENT="next.segment",c.ATTR_NEXT_SPAN_NAME="next.span_name",c.ATTR_NEXT_SPAN_TYPE="next.span_type"},228551,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",c.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",c.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},948358,(a,b,c)=>{"use strict";b.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},686758,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE:function(){return f},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="/_not-found",g=`${f}/page`,h="/_global-error",i=`${h}/page`},850067,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={APP_CLIENT_INTERNALS:function(){return ab},APP_PATHS_MANIFEST:function(){return u},APP_PATH_ROUTES_MANIFEST:function(){return v},AdapterOutputType:function(){return k},BARREL_OPTIMIZATION_PREFIX:function(){return U},BLOCKED_PAGES:function(){return P},BUILD_ID_FILE:function(){return O},BUILD_MANIFEST:function(){return w},CLIENT_PUBLIC_FILES_PATH:function(){return Q},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return R},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return _},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return aa},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ae},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return af},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ac},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ad},COMPILER_INDEXES:function(){return j},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return N},DEFAULT_RUNTIME_WEBPACK:function(){return ag},DEFAULT_SANS_SERIF_FONT:function(){return al},DEFAULT_SERIF_FONT:function(){return ak},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return K},DEV_CLIENT_PAGES_MANIFEST:function(){return G},DYNAMIC_CSS_MANIFEST:function(){return $},EDGE_RUNTIME_WEBPACK:function(){return ah},EDGE_UNSUPPORTED_NODE_APIS:function(){return aq},EXPORT_DETAIL:function(){return B},EXPORT_MARKER:function(){return A},FUNCTIONS_CONFIG_MANIFEST:function(){return x},IMAGES_MANIFEST:function(){return E},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Z},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return H},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return Y},MODERN_BROWSERSLIST_TARGET:function(){return g.default},NEXT_BUILTIN_DOCUMENT:function(){return T},NEXT_FONT_MANIFEST:function(){return z},PAGES_MANIFEST:function(){return s},PHASE_ANALYZE:function(){return m},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return r},PHASE_PRODUCTION_BUILD:function(){return n},PHASE_PRODUCTION_SERVER:function(){return o},PHASE_TEST:function(){return q},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return L},ROUTES_MANIFEST:function(){return D},RSC_MODULE_TYPES:function(){return ap},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return F},SERVER_PROPS_ID:function(){return aj},SERVER_REFERENCE_MANIFEST:function(){return W},STATIC_PROPS_ID:function(){return ai},STATIC_STATUS_PAGES:function(){return am},STRING_LITERAL_DROP_BUNDLE:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},SYSTEM_ENTRYPOINTS:function(){return ar},TRACE_OUTPUT_VERSION:function(){return an},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return J},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ao},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return t}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(955289)._(a.r(948358)),h=a.r(686758),i={client:"client",server:"server",edgeServer:"edge-server"},j={[i.client]:0,[i.server]:1,[i.edgeServer]:2};var k=((d={}).PAGES="PAGES",d.PAGES_API="PAGES_API",d.APP_PAGE="APP_PAGE",d.APP_ROUTE="APP_ROUTE",d.PRERENDER="PRERENDER",d.STATIC_FILE="STATIC_FILE",d.MIDDLEWARE="MIDDLEWARE",d);let l="phase-export",m="phase-analyze",n="phase-production-build",o="phase-production-server",p="phase-development-server",q="phase-test",r="phase-info",s="pages-manifest.json",t="webpack-stats.json",u="app-paths-manifest.json",v="app-path-routes-manifest.json",w="build-manifest.json",x="functions-config-manifest.json",y="subresource-integrity-manifest",z="next-font-manifest",A="export-marker.json",B="export-detail.json",C="prerender-manifest.json",D="routes-manifest.json",E="images-manifest.json",F="required-server-files",G="_devPagesManifest.json",H="middleware-manifest.json",I="_clientMiddlewareManifest.json",J="client-build-manifest.json",K="_devMiddlewareManifest.json",L="react-loadable-manifest.json",M="server",N=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],O="BUILD_ID",P=["/_document","/_app","/_error"],Q="public",R="static",S="__NEXT_DROP_CLIENT_FILE__",T="__NEXT_BUILTIN_DOCUMENT__",U="__barrel_optimize__",V="client-reference-manifest",W="server-reference-manifest",X="middleware-build-manifest",Y="middleware-react-loadable-manifest",Z="interception-route-rewrite-manifest",$="dynamic-css-manifest",_="main",aa=`${_}-app`,ab="app-pages-internals",ac="react-refresh",ad="webpack",ae="polyfills",af=Symbol(ae),ag="webpack-runtime",ah="edge-runtime-webpack",ai="__N_SSG",aj="__N_SSP",ak={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},al={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},am=["/500"],an=1,ao=6e3,ap={client:"client",server:"server"},aq=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ar=new Set([_,ac,aa]);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},517613,(a,b,c)=>{b.exports=a.r(850067)},494409,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(517613);c.isBuild=function(){return process.env.NEXT_PHASE===d.PHASE_PRODUCTION_BUILD}},291230,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581);async function f(){try{e.DEBUG_BUILD&&d.debug.log("Flushing events..."),await d.flush(2e3),e.DEBUG_BUILD&&d.debug.log("Done flushing events")}catch(a){e.DEBUG_BUILD&&d.debug.log("Error while flushing events:\n",a)}}function g(){let a=Symbol.for("__cloudflare-context__");return d.GLOBAL_OBJ[a]?.ctx}function h(a){g()?.waitUntil(a)}function i(){return"function"==typeof g()?.waitUntil}c.cloudflareWaitUntil=h,c.flushSafelyWithTimeout=f,c.isCloudflareWaitUntilAvailable=i,c.waitUntil=function(a){i()?h(a):d.vercelWaitUntil(a)}},289467,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);function e(a){let b=a.split("/").filter(a=>a&&!(a.startsWith("(")&&a.endsWith(")")));return b.length>0?`/${b.join("/")}`:"/"}function f(a,b,c,f){let g=f??e(a),h=c?.["x-forwarded-proto"],i=c?.["x-forwarded-host"]||c?.host;if(!h||!i)return g;let j=`${h}://${i}${g}`,k=d.parseStringToURLObject(j);return k?d.getSanitizedUrlStringFromUrlObject(k):g}function g(a){let b=a?.referer;if(b)try{let a=new URL(b);return d.getSanitizedUrlStringFromUrlObject(a)}catch{return}}c.buildUrlFromComponentRoute=f,c.extractSanitizedUrlFromRefererHeader=g,c.getSanitizedRequestUrl=function(a,b,c,d){let e=g(c);return e||f(a,b,c,d)},c.sanitizeRoutePath=e,c.substituteRouteParams=function(a,b){return a}},521467,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(289467);c.setUrlProcessingMetadata=function(a){if("transaction"!==a.type||a.contexts?.trace?.op!=="http.server"||!a.contexts?.trace?.data)return;let b=d.getClient();if(!b?.getOptions().sendDefaultPii)return;let c=a.contexts.trace.data,f=c["next.route"]||c["http.route"],g=c["http.target"];if(!f)return;let h=a.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),i=h?.sdkProcessingMetadata?.normalizedRequest?.headers,j=e.getSanitizedRequestUrl(f,void 0,i,g?.toString());j&&h?.sdkProcessingMetadata&&(h.sdkProcessingMetadata.normalizedRequest=h.sdkProcessingMetadata.normalizedRequest||{},h.sdkProcessingMetadata.normalizedRequest.url=j)}},553484,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(814747);c.distDirRewriteFramesIntegration=d.defineIntegration(({distDirName:a})=>{let b=e.resolve(a).replace(/(\/|\\)$/,""),c=new RegExp(d.escapeStringForRegex(b));return{...d.rewriteFramesIntegration({iteratee:a=>(a.filename=a.filename?.replace(c,"app:///_next"),a)}),name:"DistDirRewriteFrames"}})},447537,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.addHeadersAsAttributes=function(a,b){if(!a)return{};let c=a instanceof Headers||"object"==typeof a&&"get"in a?d.winterCGHeadersToDict(a):a,e=d.httpHeadersToSpanAttributes(c,d.getClient()?.getOptions().sendDefaultPii??!1);return b&&b.setAttributes(e),e}},146939,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(221598),g=a.r(411290),h=a.r(228551),i=e.GLOBAL_OBJ;c.dropMiddlewareTunnelRequests=function(a,b){if(e.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let c=b?.[g.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",j=b?.[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",k=b?.[g.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!c&&!j&&!k)return;let l=function(a){let b=i._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!b)return!1;let c=a[d.SEMATTRS_HTTP_TARGET];if("string"==typeof c){let a=c.split("?")[0]||"";return a===b||a.startsWith(`${b}/`)}return!1}(b||{}),m=f.isSentryRequestSpan(a);(l||m)&&a.setAttribute(h.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},571795,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(357122),f=a.r(187845),g=a.r(263581),h=a.r(411290),i=a.r(228551),j="__PAGE__",k=new WeakMap;function l(a){return"NextNodeServer.getLayoutOrPageModule"===a[h.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===a[h.ATTR_NEXT_SPAN_NAME]&&"string"==typeof a[h.ATTR_NEXT_SEGMENT]}function m({segment:a,route:b}){return a===j?`resolve page server component "${b}"`:""===a?"resolve root layout server component":`resolve layout server component "${a}"`}c.commonObjectToIsolationScope=function(a){if("object"!=typeof a||!a)return new f.Scope;{let b=k.get(a);if(b)return b;{let b=new f.Scope;return k.set(a,b),b}}},c.dropNextjsRootContext=function(){if(f.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let a=f.getActiveSpan();if(a){let b=f.getRootSpan(a),c=f.spanToJSON(b).data;c?.["next.span_type"]&&f.getRootSpan(a)?.setAttribute(i.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},c.escapeNextjsTracing=function(a){let b=f.GLOBAL_OBJ.AsyncLocalStorage;return b?(d||(d=new b),d.getStore())?a():f.startNewTrace(()=>d.run(!0,()=>a())):(g.DEBUG_BUILD&&f.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),a())},c.getEnhancedResolveSegmentSpanName=m,c.isResolveSegmentSpan=l,c.maybeEnhanceServerComponentSpanName=function(a,b,c){if(!l(b))return;let d=b[h.ATTR_NEXT_SEGMENT],g=c[e.ATTR_HTTP_ROUTE],i=m({segment:d,route:"string"==typeof g?g:""});a.updateName(i),a.setAttributes({"sentry.nextjs.ssr.function.type":d===j?"Page":"Layout","sentry.nextjs.ssr.function.route":g}),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},266098,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581),f="sentry.cron.checkInId",g="sentry.cron.monitorSlug",h="sentry.cron.startTime",i="sentry.cron.schedule";c.maybeCompleteCronCheckIn=function(a){let b=d.spanToJSON(a).data,c=b?.[f],j=b?.[g],k=b?.[h],l=b?.[i];if(!c||!j||"number"!=typeof k)return;let m=d._INTERNAL_safeDateNow()/1e3-k,n=d.spanToJSON(a).status,o=n&&"ok"!==n?"error":"ok";d.captureCheckIn({checkInId:c,monitorSlug:j,status:o,duration:m},"string"==typeof l?{maxRuntime:720,schedule:{type:"crontab",value:l}}:void 0),a.setAttribute(f,void 0),a.setAttribute(g,void 0),a.setAttribute(h,void 0),a.setAttribute(i,void 0),e.DEBUG_BUILD&&d.debug.log(`[Cron] Completed check-in for "${j}" with status "${o}"`)},c.maybeStartCronCheckIn=function(a,b){let c=function(){let a=globalThis;if(a._sentryVercelCronsConfig)try{return JSON.parse(a._sentryVercelCronsConfig)}catch{e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!c||!b)return;let j=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!j)return;let k=Array.isArray(j["user-agent"])?j["user-agent"][0]:j["user-agent"];if(!k?.includes("vercel-cron"))return;let l=c.find(a=>a.path===b);if(!l?.path||!l.schedule)return;let m=l.path,n=d._INTERNAL_safeDateNow()/1e3,o=d.captureCheckIn({monitorSlug:m,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}});e.DEBUG_BUILD&&d.debug.log(`[Cron] Started check-in for "${m}" with ID "${o}"`),a.setAttribute(f,o),a.setAttribute(g,m),a.setAttribute(h,n),a.setAttribute(i,l.schedule)}},658788,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e="messaging.system",f="messaging.destination.name",g="messaging.operation.name",h="sentry.queue.enriched";function i(a,b){let c=a[b];return Array.isArray(c)?c[0]:c}c.maybeCleanupQueueSpan=function(a){let b=d.spanToJSON(a).data;b?.[h]&&a.setAttribute(h,void 0)},c.maybeEnrichQueueConsumerSpan=function(a){let b=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!b||"com.vercel.queue.v2beta"!==(Array.isArray(b["ce-type"])?b["ce-type"][0]:b["ce-type"]))return;let c=i(b,"ce-vqsqueuename"),j=i(b,"ce-vqsmessageid"),k=i(b,"ce-vqsconsumergroup"),l=i(b,"ce-vqsdeliverycount");if(a.setAttribute(e,"vercel.queue"),a.setAttribute(g,"process"),c&&a.setAttribute(f,c),j&&a.setAttribute("messaging.message.id",j),k&&a.setAttribute("messaging.consumer.group.name",k),l){let b=parseInt(l,10);isNaN(b)||a.setAttribute("messaging.message.delivery_count",b)}a.setAttribute(h,!0)},c.maybeEnrichQueueProducerSpan=function(a){let b,c=d.spanToJSON(a).data,i=c?.["url.full"];if(!i)return;try{b=new URL(i)}catch{return}if("vercel-queue.com"!==b.hostname&&!b.hostname.endsWith(".vercel-queue.com"))return;let j=b.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!j)return;let k=decodeURIComponent(j[1]);a.setAttribute(e,"vercel.queue"),a.setAttribute(f,k),a.setAttribute(g,"send"),a.setAttribute(h,!0)}},155672,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(357122),f=a.r(187845),g=a.r(221598),h=a.r(411290),i=a.r(447537),j=a.r(146939),k=a.r(571795),l=a.r(266098),m=a.r(658788);c.handleOnSpanStart=function(a){let b=f.spanToJSON(a).data,c=f.getRootSpan(a),n=f.spanToJSON(c).data,o=a===c;if(j.dropMiddlewareTunnelRequests(a,b),"string"==typeof b?.[h.ATTR_NEXT_ROUTE]&&(n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD])&&!n?.[e.ATTR_HTTP_ROUTE]){let a=b[h.ATTR_NEXT_ROUTE].replace(/\/route$/,"");c.updateName(a),c.setAttribute(e.ATTR_HTTP_ROUTE,a),c.setAttribute(h.ATTR_NEXT_ROUTE,a);let d=n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD];"string"==typeof d&&f.getIsolationScope().setTransactionName(`${d} ${a}`),l.maybeStartCronCheckIn(c,a),m.maybeEnrichQueueConsumerSpan(c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let d=b[h.ATTR_NEXT_SPAN_NAME];"string"==typeof d&&(c.updateName(d),c.setAttribute(e.ATTR_HTTP_ROUTE,d),c.setAttribute(h.ATTR_NEXT_SPAN_NAME,d)),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(b?.[h.ATTR_NEXT_SPAN_TYPE]!==void 0&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),o){let a=f.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;i.addHeadersAsAttributes(a,c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&o){let b=f.getCapturedScopesOnSpan(a),c=(b.isolationScope||f.getIsolationScope()).clone(),e=b.scope||f.getCurrentScope(),h=g.getScopesFromContext(d.context.active());h&&(h.isolationScope=c),f.setCapturedScopesOnSpan(a,e,c)}k.maybeEnhanceServerComponentSpanName(a,b,n),m.maybeEnrichQueueProducerSpan(a)}},342069,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581);function f(){let a=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:a}=process.getBuiltinModule("async_hooks")??{};return a}}();if(!a||"function"!=typeof a.snapshot){e.DEBUG_BUILD&&d.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return a.snapshot()}function g(a){return a instanceof Error&&a.message.includes("AsyncLocalStorage")}c.prepareSafeIdGeneratorContext=function(){let a=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),b=d.GLOBAL_OBJ,c=f();if(!c)return;let h=c;b[a]=a=>{try{return h(a)}catch(c){if(!g(c))throw c;let b=f();if(!b)return a();h=b;try{return h(a)}catch(b){if(!g(b))throw b;return a()}}},e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},575672,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.captureUnderscoreErrorException=async function(a){let{req:b,res:c,err:f}=a,g=c?.statusCode||a.statusCode;if(g&&g<500||!a.pathname)return;if(f&&d.isAlreadyCaptured(f)){e.waitUntil(e.flushSafelyWithTimeout());let a="object"==typeof f?f.__sentry_event_id__:void 0;return"string"==typeof a?(d.getIsolationScope().setLastEventId(a),a):d.getIsolationScope().lastEventId()}let h=d.withScope(a=>{if(b){let c=d.httpRequestToRequestData(b);a.setSDKProcessingMetadata({normalizedRequest:c})}return d.captureException(f||`_error.js called with falsy error (${f})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return e.waitUntil(e.flushSafelyWithTimeout()),h}},333299,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.isUseCacheFunction=function(a){if(a.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:b}=function(a){let b=parseInt(a.slice(0,2),16),c=b>>1&63,d=Array(6);for(let a=0;a<6;a++){let b=c>>5-a&1;d[a]=1===b}return{type:1==(b>>7&1)?"use-cache":"server-action",usedArgs:d,hasRestArgs:1==(1&b)}}(a.$$id);return"use-cache"===b}},145408,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581),f=a.r(494409),g=a.r(333299);function h(a){let b=f.isBuild(),c=!!a&&g.isUseCacheFunction(a);return c&&e.DEBUG_BUILD&&d.debug.log("Skipping span creation in Cache Components context"),b||c}function i(){return new d.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}c.startInactiveSpan=function(a){return h()?i():d.startInactiveSpan(a)},c.startSpan=function(a,b){return h(b)?b(i()):d.startSpan(a,b)},c.startSpanManual=function(a,b){if(h(b)){let a=i();return b(a,()=>a.end())}return d.startSpanManual(a,b)}},988136,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(228551);c.callDataFetcherTraced=async function(a,b){try{return await a(...b)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),a}},c.withErrorInstrumentation=function(a){return async function(...b){try{return await a.apply(this,b)}catch(b){throw d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:a.name}}}),b}}},c.withTracedServerSideDataFetcher=function(a,b,c,f){return async function(...c){let g=d.httpRequestToRequestData(b);d.getCurrentScope().setTransactionName(`${f.dataFetchingMethodName} (${f.dataFetcherRouteName})`),d.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g});let h=d.getActiveSpan();h&&"/_error"!==f.requestedRouteName&&d.getRootSpan(h).setAttribute(e.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,f.requestedRouteName);let{"sentry-trace":i,baggage:j}=d.getTraceData();return{sentryTrace:i,baggage:j,data:await a.apply(this,c)}}}},709897,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetStaticPropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let f=e.withErrorInstrumentation(a);return e.callDataFetcherTraced(f,c)}})}},890588,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:f.pathname,requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c)??{};return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},739941,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapAppGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f.ctx,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_app",requestedRouteName:f.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,sentryTrace:j,baggage:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(d.pageProps||(d.pageProps={}),j&&(d.pageProps._sentryTraceData=j),k&&(d.pageProps._sentryBaggage=k)),d}}})}},588876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapDocumentGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_document",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d}=await a.apply(b,c);return d}}})}},178211,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapErrorGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_error",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},193860,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetServerSidePropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,c,f)=>{if(d.isBuild())return a.apply(c,f);let[g]=f,{req:h,res:i}=g,j=e.withErrorInstrumentation(a),k=e.withTracedServerSideDataFetcher(j,h,i,{dataFetcherRouteName:b,requestedRouteName:b,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:m,sentryTrace:n}=await k.apply(c,f);return"object"==typeof l&&null!==l&&"props"in l&&(n&&(l.props._sentryTraceData=n),m&&(l.props._sentryBaggage=m)),l}})}},902363,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.isNotFoundNavigationError=function(a){return d.isError(a)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(a.digest)},c.isRedirectNavigationError=function(a){return d.isError(a)&&"string"==typeof a.digest&&a.digest.startsWith("NEXT_REDIRECT;")}},655243,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);c.wrapServerComponentWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h=d.getIsolationScope(),i=b.headers?d.winterCGHeadersToDict(b.headers):void 0;return h.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g}=b,i=!0;h.setTransactionName(`${g} Server Component (${f})`),c&&(e.isNotFoundNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),i&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},22912,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);a.r(571795),c.wrapRouteHandlerWithSentry=function(a,b){let{method:c,parameterizedRoute:g,headers:h}=b;return new Proxy(a,{apply:async(a,b,h)=>{let i=d.getActiveSpan(),j=i?d.getRootSpan(i):void 0;return d.withIsolationScope(d.getIsolationScope(),()=>d.withScope(async k=>{k.setTransactionName(`${c} ${g}`);let l=await d.handleCallbackErrors(()=>a.apply(b,h),a=>{e.isRedirectNavigationError(a)||(e.isNotFoundNavigationError(a)?(i&&d.setHttpStatus(i,404),j&&d.setHttpStatus(j,404)):d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{f.waitUntil(f.flushSafelyWithTimeout())});try{l.status&&(i&&d.setHttpStatus(i,l.status),j&&d.setHttpStatus(j,l.status))}catch{}return l}))}})}},102626,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.wrapApiHandlerWithSentryVercelCrons=function(a,b){return new Proxy(a,{apply:(a,c,e)=>{let f;if(!e?.[0])return a.apply(c,e);let[g]=e,h="nextUrl"in g?g.nextUrl.pathname:g.url,i="nextUrl"in g?g.headers.get("user-agent"):g.headers["user-agent"];if(!b||!i?.includes("vercel-cron"))return a.apply(c,e);let j=b.find(a=>a.path===h);if(!j?.path||!j.schedule)return a.apply(c,e);let k=j.path,l=d.captureCheckIn({monitorSlug:k,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:j.schedule}}),m=d._INTERNAL_safeDateNow()/1e3,n=()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"error",duration:d._INTERNAL_safeDateNow()/1e3-m})};try{f=a.apply(c,e)}catch(a){throw n(),a}return"object"==typeof f&&null!==f&&"then"in f?Promise.resolve(f).then(()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m})},()=>{n()}):d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m}),f}})}},689914,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.wrapMiddlewareWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{let f="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(f&&"string"==typeof f){let a=c[0];if(a instanceof Request&&new URL(a.url).pathname.startsWith(f))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return d.withIsolationScope(f=>{let g,h,i=c[0],j=d.getCurrentScope();i instanceof Request?(f.setSDKProcessingMetadata({normalizedRequest:d.winterCGRequestToRequestData(i)}),g=`middleware ${i.method}`,h="url"):(g="middleware",h="component"),j.setTransactionName(g);let k=d.getActiveSpan();if(k){g="middleware",h="component";let a=d.getRootSpan(k);a&&d.setCapturedScopesOnSpan(a,j,f)}return d.startSpan({name:g,op:"http.server.middleware",attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h,[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>d.handleCallbackErrors(()=>a.apply(b,c),a=>{d.captureException(a,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{e.waitUntil(e.flushSafelyWithTimeout())}))})}})}},260329,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);function e(a,b){a&&"object"==typeof a&&d.addNonEnumerableProperty(a,"__sentry_event_id__",b)}c.wrapPageComponentWithSentry=function(a){return"function"==typeof a&&a?.prototype?.isReactComponent?class extends a{render(...a){return d.withIsolationScope(()=>{let b=d.getCurrentScope(),c="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(c){let a=d.extractTraceparentData(c);b.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return super.render(...a)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw e(b,a),b}})}}:"function"==typeof a?new Proxy(a,{apply:(a,b,c)=>d.withIsolationScope(()=>{let f=d.getCurrentScope(),g=c?.[0]?._sentryTraceData;if(g){let a=d.extractTraceparentData(g);f.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return a.apply(b,c)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw e(b,a),b}})}):a}},773896,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);c.wrapGenerationFunctionWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h,i=d.getIsolationScope();try{h=b.requestAsyncStorage?.getStore()?.headers}catch{}let j=h?d.winterCGHeadersToDict(h):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:j}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g,generationFunctionIdentifier:h}=b,j=!0;i.setTransactionName(`${g}.${h} (${f})`),c&&(e.isNotFoundNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),j&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:h}}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},341264,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230),f=a.r(263581),g=a.r(902363);async function h(a,b,c){return d.withIsolationScope(async h=>{let i,j,k=d.getClient()?.getOptions().sendDefaultPii,l={};try{let a=await b.headers;i=a?.get("sentry-trace")??void 0,j=a?.get("baggage"),a?.forEach((a,b)=>{l[b]=a})}catch{f.DEBUG_BUILD&&d.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return h.setTransactionName(`serverAction/${a}`),h.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:i,baggage:j},async()=>{try{return await d.startSpan({op:"function.server_action",name:`serverAction/${a}`,forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async a=>{let e=await d.handleCallbackErrors(c,b=>{g.isNotFoundNavigationError(b)?a.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"}):g.isRedirectNavigationError(b)||(a.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"}),d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==b.recordResponse?b.recordResponse:k)&&d.getIsolationScope().setExtra("server_action_result",e),b.formData&&b.formData.forEach((a,b)=>{d.getIsolationScope().setExtra(`server_action_form_data.${b}`,"string"==typeof a?a:"[non-string value]")}),e})}finally{e.waitUntil(e.flushSafelyWithTimeout())}})})}c.withServerActionInstrumentation=function(...a){if("function"==typeof a[1]){let[b,c]=a;return h(b,{},c)}{let[b,c,d]=a;return h(b,c,d)}}},958031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.captureRequestError=function(a,b,c){d.withScope(f=>{f.setSDKProcessingMetadata({normalizedRequest:{headers:d.headersToDict(b.headers),method:b.method}}),f.setContext("nextjs",{request_path:b.path,router_kind:c.routerKind,router_path:c.routePath,route_type:c.routeType}),f.setTransactionName(`${b.method} ${c.routePath}`),d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),e.waitUntil(e.flushSafelyWithTimeout())})}},427967,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230),f=a.r(571795);c.wrapApiHandlerWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>(f.dropNextjsRootContext(),f.escapeNextjsTracing(()=>{let[f,h]=g;return f?h?f.__withSentry_applied__?a.apply(c,g):(f.__withSentry_applied__=!0,d.withIsolationScope(i=>(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:f.headers&&d.isString(f.headers["sentry-trace"])?f.headers["sentry-trace"]:void 0,baggage:f.headers?.baggage},()=>{let j=`${(f.method||"GET").toUpperCase()} `,k=d.httpRequestToRequestData(f);return i.setSDKProcessingMetadata({normalizedRequest:k}),i.setTransactionName(`${j}${b}`),d.startSpanManual({name:`${j}${b}`,op:"http.server",forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async b=>{h.end=new Proxy(h.end,{apply:(a,c,f)=>(d.setHttpStatus(b,h.statusCode),b.end(),e.waitUntil(e.flushSafelyWithTimeout()),a.apply(c,f))});try{return await a.apply(c,g)}catch(f){let c=d.objectify(f);throw d.captureException(c,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:a.name,function:"withSentry"}}}),d.setHttpStatus(b,500),b.end(),await e.flushSafelyWithTimeout(),c}})}))):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a response object. Will not instrument.`),a.apply(c,g)):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a request object. Will not instrument.`),a.apply(c,g))}))})}},610599,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(848074),g=a.r(263581);a.r(10308);let h=a.r(983894),i=a.r(411290),j=a.r(228551),k=a.r(494409),l=a.r(291230),m=a.r(521467),n=a.r(553484),o=a.r(155672),p=a.r(342069),q=a.r(266098),r=a.r(658788),s=a.r(575672),t=a.r(145408),u=a.r(709897),v=a.r(890588),w=a.r(739941),x=a.r(588876),y=a.r(178211),z=a.r(193860),A=a.r(655243),B=a.r(22912),C=a.r(102626),D=a.r(689914),E=a.r(260329),F=a.r(773896),G=a.r(341264),H=a.r(958031),I=a.r(427967);e.GLOBAL_OBJ,c.captureUnderscoreErrorException=s.captureUnderscoreErrorException,c.startInactiveSpan=t.startInactiveSpan,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.wrapGetStaticPropsWithSentry=u.wrapGetStaticPropsWithSentry,c.wrapGetInitialPropsWithSentry=v.wrapGetInitialPropsWithSentry,c.wrapAppGetInitialPropsWithSentry=w.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=x.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=y.wrapErrorGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=z.wrapGetServerSidePropsWithSentry,c.wrapServerComponentWithSentry=A.wrapServerComponentWithSentry,c.wrapRouteHandlerWithSentry=B.wrapRouteHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,c.wrapMiddlewareWithSentry=D.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=E.wrapPageComponentWithSentry,c.wrapGenerationFunctionWithSentry=F.wrapGenerationFunctionWithSentry,c.withServerActionInstrumentation=G.withServerActionInstrumentation,c.captureRequestError=H.captureRequestError,c.wrapApiHandlerWithSentry=I.wrapApiHandlerWithSentry,c.ErrorBoundary=a=>a.children?"function"==typeof a.children?a.children():a.children:null,c.createReduxEnhancer=function(){return a=>a},c.init=function(a){if(p.prepareSafeIdGeneratorContext(),k.isBuild())return;!g.DEBUG_BUILD&&a.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let b=f.getDefaultIntegrations(a).filter(a=>"Http"!==a.name).concat(f.httpIntegration({disableIncomingRequestSpans:!0}));a.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),b.push(n.distDirRewriteFramesIntegration({distDirName:".next"}));let c=function(){if(l.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),s={environment:a.environment||process.env.SENTRY_ENVIRONMENT||h.getVercelEnv(!1)||"production",release:"dc62485b60679b810b5f74bfb5a22915b7a62314",defaultIntegrations:b,...a,...c};if(g.DEBUG_BUILD&&s.debug&&e.debug.enable(),g.DEBUG_BUILD&&e.debug.log("Initializing SDK..."),e.getClient()){g.DEBUG_BUILD&&e.debug.log("SDK already initialized");return}e.applySdkMetadata(s,"nextjs",["nextjs",c?"cloudflare":"node"]);let t=f.init(s);t?.on("beforeSampling",({spanAttributes:a},b)=>{("string"==typeof a[d.SEMATTRS_HTTP_TARGET]&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof a[d.ATTR_URL_QUERY]&&a[d.ATTR_URL_QUERY].includes("sentry_key")&&a[d.ATTR_URL_QUERY].includes("sentry_client"))&&(b.decision=!1)}),t?.on("spanStart",o.handleOnSpanStart),t?.on("spanEnd",q.maybeCompleteCronCheckIn),t?.on("spanEnd",r.maybeCleanupQueueSpan),e.getGlobalScope().addEventProcessor(Object.assign(a=>{if("transaction"!==a.type)return a;if(a.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||a.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===a.transaction||a.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===a.transaction)return null;if("string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(b?.parentSampled===!1)return null}return a},{id:"NextLowQualityTransactionsFilter"})),e.getGlobalScope().addEventProcessor(Object.assign((a,b)=>{if(void 0!==a.type)return a;let c=b.originalException;if("object"==typeof c&&null!==c&&"$$typeof"in c&&c.$$typeof===Symbol.for("react.postpone"))return null;let d=a.exception?.values?.[0]?.value;return d?.includes("Suspense Exception: This is not a real error!")||d?.includes("Suspense Exception: This is not a real error, and should not leak")?null:a},{id:"DropReactControlFlowErrors"})),t?.on("preprocessEvent",a=>{if("transaction"===a.type&&a.contexts?.trace?.data?.[i.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",a.contexts.trace.op="http.server",a.transaction&&(a.transaction=e.stripUrlQueryAndFragment(a.transaction));let b=a.contexts.trace.data[d.SEMATTRS_HTTP_METHOD],c=a.contexts?.trace?.data?.[d.SEMATTRS_HTTP_TARGET],f=a.contexts.trace.data[d.ATTR_HTTP_ROUTE]||a.contexts.trace.data[i.ATTR_NEXT_ROUTE],g=a.contexts.trace.data[i.ATTR_NEXT_SPAN_NAME];if("string"==typeof b&&"string"==typeof f&&!f.startsWith("middleware")){let c=f.replace(/\/route$/,"");a.transaction=`${b} ${c}`,a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",a.contexts.trace.data[i.ATTR_NEXT_ROUTE]=c}a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==a.transaction&&(a.transaction=`${b} ${a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let h="string"==typeof g&&g.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);h&&(a.transaction=`middleware ${h[1]}`,a.contexts.trace.op="http.server.middleware"),"GET /_error"===a.transaction&&c&&(a.transaction=`${b?`${b} `:""}${c}`)}if("transaction"===a.type&&"string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);b?.traceId&&(a.contexts.trace.trace_id=b.traceId),b?.parentSpanId&&(a.contexts.trace.parent_span_id=b.parentSpanId)}m.setUrlProcessingMetadata(a)});try{e.getGlobalScope().setTag("turbopack",!0)}catch{}return g.DEBUG_BUILD&&e.debug.log("SDK successfully initialized"),t},c.showReportDialog=function(){},c.withErrorBoundary=function(a){return a},Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})},305803,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(474224),e=a.r(610599),f=a.r(848074),g=a.r(958031),h=a.r(575672),i=a.r(145408),j=a.r(341264),k=a.r(427967),l=a.r(102626),m=a.r(739941),n=a.r(588876),o=a.r(178211),p=a.r(773896),q=a.r(890588),r=a.r(193860),s=a.r(709897),t=a.r(689914),u=a.r(260329),v=a.r(22912),w=a.r(655243);c.withSentryConfig=d.withSentryConfig,c.ErrorBoundary=e.ErrorBoundary,c.createReduxEnhancer=e.createReduxEnhancer,c.init=e.init,c.showReportDialog=e.showReportDialog,c.withErrorBoundary=e.withErrorBoundary,c.captureRequestError=g.captureRequestError,c.captureUnderscoreErrorException=h.captureUnderscoreErrorException,c.startInactiveSpan=i.startInactiveSpan,c.startSpan=i.startSpan,c.startSpanManual=i.startSpanManual,c.withServerActionInstrumentation=j.withServerActionInstrumentation,c.wrapApiHandlerWithSentry=k.wrapApiHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=l.wrapApiHandlerWithSentryVercelCrons,c.wrapAppGetInitialPropsWithSentry=m.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=n.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=o.wrapErrorGetInitialPropsWithSentry,c.wrapGenerationFunctionWithSentry=p.wrapGenerationFunctionWithSentry,c.wrapGetInitialPropsWithSentry=q.wrapGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=r.wrapGetServerSidePropsWithSentry,c.wrapGetStaticPropsWithSentry=s.wrapGetStaticPropsWithSentry,c.wrapMiddlewareWithSentry=t.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=u.wrapPageComponentWithSentry,c.wrapRouteHandlerWithSentry=v.wrapRouteHandlerWithSentry,c.wrapServerComponentWithSentry=w.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})}]; -//# debugId=4de6bcc9-110d-c5e1-84bb-f8ff52794f2a +//# debugId=85b2df47-db08-9f4c-e7fd-3b057452485d //# sourceMappingURL=node_modules__pnpm_66399b09._.js.map \ No newline at end of file diff --git a/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js.map b/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js.map index 84e290929..07823b8a9 100644 --- a/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js.map +++ b/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": [], - "debugId": "4de6bcc9-110d-c5e1-84bb-f8ff52794f2a", + "debugId": "85b2df47-db08-9f4c-e7fd-3b057452485d", "sections": [ {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/debug-build.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/worldwide.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/version.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/carrier.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debug-logger.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/stacktrace.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/handlers.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/globalError.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/globalUnhandledRejection.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/is.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/browser.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/object.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/randomSafeContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/string.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/misc.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/time.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/session.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/merge.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/propagationContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/spanOnScope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/scope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/defaultScopes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/chain-and-copy-promiselike.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/asyncContext/stackStrategy.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/asyncContext/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/currentScopes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/semanticAttributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/spanstatus.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/baggage.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/dsn.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/parseSampleRate.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tracing.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/spanUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/errors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/hasSpansEnabled.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/should-ignore-span.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/dynamicSamplingContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sentryNonRecordingSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/normalize.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/envelope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/envelope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/logSpans.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/measurement.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sentrySpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/handleCallbackErrors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/sampling.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/trace.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/idleSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/syncpromise.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/eventProcessors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debug-ids.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/scopeData.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/prepareEvent.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/exports.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/api.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integration.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/attributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/timestampSequence.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/trace-info.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/envelope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/internal.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/envelope.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/internal.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/timer.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/promisebuffer.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ratelimit.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/base.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/clientreport.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/eventUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/transactionEvent.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/client.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/checkin.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/userAgent.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/eventbuilder.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/server-runtime-client.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/sdk.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/offline.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/transports/multiplexed.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ai/providerSkip.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/envToBool.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/url.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/isSentryRequestUrl.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/parameterize.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tunnel.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/ipAddress.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/sdkMetadata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/traceData.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/tracePropagationTargets.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/meta.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/debounce.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/request.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/breadcrumbs.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/functiontostring.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/eventFilters.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/aggregate-errors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/linkederrors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metadata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/moduleMetadata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/cookie.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/vendor/getIpAddress.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/requestdata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/console.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/severity.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/captureconsole.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/dedupe.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/extraerrordata.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/path.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/rewriteframes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/supabase.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/postgresjs.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/zoderrors.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/third-party-errors-filter.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/console.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/featureFlags.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/featureFlags/featureFlagsIntegration.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/featureFlags/growthbook.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/conversationId.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/profiling.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/fetch.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/trpc.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/errorCapture.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/handlers.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/attributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/validation.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/resultExtraction.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/sessionManagement.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/sessionExtraction.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/correlation.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/methodConfig.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/attributeExtraction.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/piiFiltering.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/spans.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/transport.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/mcp-server/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/feedback.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/public-api.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/logs/console-integration.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/metrics/public-api.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/integrations/consola.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/gen-ai-attributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/mediaStripping.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/messageTruncation.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/ai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/vercel-ai-attributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/vercel-ai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/streaming.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/openai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/streaming.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/anthropic-ai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/streaming.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/google-genai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langchain/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/tracing/langgraph/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/breadcrumb-log-level.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/error.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/supports.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/instrument/fetch.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/env.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/node.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/isBrowser.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/exports.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/node-stack-trace.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/anr.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/lru.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/vercelWaitUntil.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/utils/flushIfServerless.ts","../../../../node_modules/.pnpm/%40sentry%2Bcore%4010.47.0/node_modules/%40sentry/core/src/vendor/escapeStringForRegex.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/util.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/buildTime.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/deprecatedWebpackOptions.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/getBuildPluginOptions.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/handleRunAfterProductionCompile.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/turbopack/generateValueInjectionRules.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/turbopack/constructTurbopackConfig.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/webpack.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObjectBundlerUtils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_attributes.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/environment.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/sdk-info.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/ExportResult.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/promise.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/attributes.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/platform/node/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/merge.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/time.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/internal/exporter.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/suppress-tracing.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/global-error-handler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/callback.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/lodash.merge.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/logging-error-handler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/propagation/W3CBaggagePropagator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/W3CTraceContextPropagator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/rpc-metadata.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/propagation/composite.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/trace/TraceState.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/configuration.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/url.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/internal/validators.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/baggage/constants.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/globalThis.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/utils/timeout.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/timer-util.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcore%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/core/src/common/anchored-clock.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.214.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/resource/SemanticResourceAttributes.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/internal/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/trace/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/resource/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/trace/SemanticAttributes.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_events.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsemantic-conventions%401.40.0/node_modules/%40opentelemetry/semantic-conventions/src/stable_metrics.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/internal-types.ts","../../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/lib/error.js","../../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/lib/ascii.js","../../../../node_modules/.pnpm/forwarded-parse%402.1.2/node_modules/forwarded-parse/index.js","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/http.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-http%400.214.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-http/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/instrument.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/debug-build.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/captureRequestBody.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/httpServerIntegration.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/httpServerSpansIntegration.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/baggage.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/outgoingHttpRequest.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/SentryHttpInstrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/http/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/nodeVersion.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/outgoingFetchRequest.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/node-fetch/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AbstractAsyncHooksContextManager.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AsyncHooksContextManager.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/AsyncLocalStorageContextManager.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/context-async-hooks/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/ResourceImpl.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/default-service-name.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/platform/node/RandomIdGenerator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/ConsoleSpanExporter.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/config.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/BasicTracerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/AlwaysOffSampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/BatchSpanProcessorBase.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/ParentBasedSampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/utility.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/platform/node/export/BatchSpanProcessor.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Tracer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/InMemorySpanExporter.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Span.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/TraceIdRatioBasedSampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/sampler/AlwaysOnSampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/SimpleSpanProcessor.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/MultiSpanProcessor.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/enums.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/export/NoopSpanProcessor.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/TracerMetrics.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/Sampler.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsdk-trace-base%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sdk-trace-base/src/semconv.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/semanticAttributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getParentSpanId.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/spanTypes.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getRequestSpanData.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/custom/client.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getSpanKind.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/contextData.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/isSentryRequest.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getSamplingDecision.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/parseSpanDescription.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/enhanceDscWithOpenTelemetryRootSpanName.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getActiveSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/debug-build.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/makeTraceState.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/setupCheck.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/propagator.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/trace.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/suppressTracing.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/setupEventContextTrace.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/getTraceData.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/asyncContextStrategy.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/contextManager.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/groupSpansWithParents.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/utils/mapStatus.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/spanExporter.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/spanProcessor.ts","../../../../node_modules/.pnpm/%40sentry%2Bopentelemetry%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hoo_70f539428297572a9e3752da9c315982/node_modules/%40sentry/opentelemetry/src/sampler.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/contextManager.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/otel/logger.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/childProcess.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/context.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/contextlines.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/debug.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/common.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/local-variables-async.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/local-variables-sync.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/local-variables/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/detection.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/modules.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/errorhandling.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/onuncaughtexception.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/onunhandledrejection.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/processSession.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/spotlight.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/systemError.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/base.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/parse-proxy-response.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/proxy/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/transports/http.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/spotlight.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/module.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/api.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/client.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/esmLoader.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/sdk/scope.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/createMissingInstrumentationContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/ensureIsWrapped.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/anr/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/logs/capture.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/logs/exports.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/nodeRuntimeMetrics.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/winston.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/integrations/pino.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/addOriginToSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/utils/getRequestUrl.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/common.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/cron.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/node-cron.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/node-schedule.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode-core%4010.47.0_%40opentelemetry%2Bapi%401.9.1_%40opentelemetry%2Bcontext-async-hooks%402_6bb9c158a6d788145ea4af24b1f9730a/node_modules/%40sentry/node-core/src/cron/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/http.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/undici.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-undici%400.24.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-undici/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/node-fetch.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/constants.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-fs%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-fs/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/fs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/enums/ExpressLayerType.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-express%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-express/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/debug-build.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/express.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.212.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.212.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../../node_modules/.pnpm/balanced-match%404.0.4/node_modules/balanced-match/src/index.ts","../../../../node_modules/.pnpm/brace-expansion%405.0.5/node_modules/brace-expansion/src/index.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/assert-valid-pattern.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/brace-expressions.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/unescape.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/ast.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/escape.ts","../../../../node_modules/.pnpm/minimatch%4010.2.5/node_modules/minimatch/src/index.ts","../../../../node_modules/.pnpm/%40fastify%2Botel%400.18.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40fastify/otel/index.js","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/utils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/v3/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/fastify/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/enum.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/symbols.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-graphql%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-graphql/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/graphql.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/propagator.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-kafkajs%400.23.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-kafkajs/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/kafka.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-lru-memoizer%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-lru-memoizer/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/lrumemoizer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongodb%400.67.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongodb/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mongo.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/mongoose.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mongoose%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mongoose/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mongoose.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mysql.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bsql-common%400.41.2_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/sql-common/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-mysql2%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-mysql2/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/mysql2.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bredis-common%400.38.2/node_modules/%40opentelemetry/redis-common/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-ioredis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-ioredis/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v2-v3/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v2-v3/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v4-v5/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/v4-v5/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/redis.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-redis%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-redis/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/utils/redisCache.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/redis.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/enums/SpanNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-pg%400.66.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-pg/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/postgres.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/postgresjs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semconvStability.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/RequireInTheMiddleSingleton.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/internal/global-utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoader.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/api/logs.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/ProxyLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/NoopLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleFile.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/ProxyLoggerProvider.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/platform/node/ModuleNameTrie.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/instrumentationNodeModuleDefinition.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/platform/node/globalThis.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/shimmer.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/semver.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bapi-logs%400.207.0/node_modules/%40opentelemetry/api-logs/src/NoopLogger.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation%400.207.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation/src/autoLoaderUtils.ts","../../../../node_modules/.pnpm/%40prisma%2Binstrumentation%407.6.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40prisma/instrumentation/dist/index.js","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/prisma.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-hapi%400.60.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-hapi/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hapi/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/hono/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-koa%400.62.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-koa/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/koa.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/enums/AttributeNames.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/internal-types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-connect%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-connect/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/connect.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/constants.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-knex%400.58.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-knex/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/knex.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-tedious%400.33.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-tedious/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/tedious.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-generic-pool%400.57.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-generic-pool/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/genericPool.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/instrumentation.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-dataloader%400.31.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-dataloader/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/dataloader.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/semconv-obsolete.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/types.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/version.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/amqplib.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Binstrumentation-amqplib%400.61.0_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/instrumentation-amqplib/src/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/amqplib.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/constants.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/vercelai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/openai/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/openai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/anthropic-ai/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/anthropic-ai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/google-genai/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/google-genai/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langchain/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langchain/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langgraph/instrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/langgraph/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/launchDarkly.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/openFeature.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/statsig.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/unleash.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/featureFlagShims/growthbook.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/patches/firestore.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/patches/functions.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/otel/firebaseInstrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/firebase/firebase.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/integrations/tracing/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detect-resources.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/EnvDetector.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/semconv.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/machine-id/getMachineId.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/utils.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/HostDetector.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/index.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/OSDetector.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/ProcessDetector.ts","../../../../node_modules/.pnpm/%40opentelemetry%2Bresources%402.6.1_%40opentelemetry%2Bapi%401.9.1/node_modules/%40opentelemetry/resources/src/detectors/platform/node/ServiceInstanceIdDetector.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/sdk/initOtel.ts","../../../../node_modules/.pnpm/%40sentry%2Bnode%4010.47.0/node_modules/%40sentry/node/src/sdk/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/manifest/createRouteManifest.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/tunnel.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObjectUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/getFinalConfigObject.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/config/withSentryConfig/index.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/debug-build.ts","../../../../node_modules/.pnpm/stacktrace-parser%400.1.11/node_modules/stacktrace-parser/dist/stack-trace-parser.esm.js","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/devErrorSymbolicationEventProcessor.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/getVercelEnv.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/nextSpanAttributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/span-attributes-with-logic-attached.ts","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/modern-browserslist-target.js","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/entry-constants.ts","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/src/shared/lib/constants.ts","../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40opentelemetry%2Bapi%401.9.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4_sass%401.98.0/node_modules/next/constants.js","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/isBuild.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/responseEnd.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/urls.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/setUrlProcessingMetadata.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/distDirRewriteFramesIntegration.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/addHeadersAsAttributes.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/tracingUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/vercelCronsMonitoring.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/vercelQueuesMonitoring.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/handleOnSpanStart.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/prepareSafeIdGeneratorContext.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/_error.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/isUseCacheFunction.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/nextSpan.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/utils/wrapperUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetStaticPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetInitialPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapAppGetInitialPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapDocumentGetInitialPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapErrorGetInitialPropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapGetServerSidePropsWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/nextNavigationErrorUtils.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapServerComponentWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapRouteHandlerWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentryVercelCrons.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapMiddlewareWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/wrapGenerationFunctionWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/withServerActionInstrumentation.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/captureRequestError.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentry.ts","../../../../node_modules/.pnpm/%40sentry%2Bnextjs%4010.47.0_%40opentelemetry%2Bcontext-async-hooks%402.6.1_%40opentelemetry%2Bapi%401.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/%40sentry/nextjs/src/server/index.ts"],"sourcesContent":["declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\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 `debug` singleton, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Carrier } from '../carrier';\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport type InternalGlobal = {\n navigator?: { userAgent?: string; maxTouchPoints?: number };\n console: Console;\n PerformanceObserver?: any;\n Sentry?: any;\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record;\n /**\n * Native debug IDs implementation (e.g., from Vercel).\n * This uses the same format as _sentryDebugIds but with a different global name.\n * Keys are `error.stack` strings, values are debug IDs.\n */\n _debugIds?: Record;\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record;\n _sentryEsmLoaderHookRegistered?: boolean;\n} & Carrier;\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ = globalThis as unknown as InternalGlobal;\n","// This is a magic string replaced by rollup\ndeclare const __SENTRY_SDK_VERSION__: string;\n\nexport const SDK_VERSION = typeof __SENTRY_SDK_VERSION__ === 'string' ? __SENTRY_SDK_VERSION__ : '0.0.0-unknown.0';\n","import type { AsyncContextStack } from './asyncContext/stackStrategy';\nimport type { AsyncContextStrategy } from './asyncContext/types';\nimport type { Client } from './client';\nimport type { Scope } from './scope';\nimport type { SerializedLog } from './types-hoist/log';\nimport type { SerializedMetric } from './types-hoist/metric';\nimport { SDK_VERSION } from './utils/version';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: VersionedCarrier;\n}\n\ntype VersionedCarrier = {\n version?: string;\n} & Record, SentryCarrier>;\n\nexport interface SentryCarrier {\n acs?: AsyncContextStrategy;\n stack?: AsyncContextStack;\n\n globalScope?: Scope;\n defaultIsolationScope?: Scope;\n defaultCurrentScope?: Scope;\n loggerSettings?: { enabled: boolean };\n /**\n * A map of Sentry clients to their log buffers.\n * This is used to store logs that are sent to Sentry.\n */\n clientToLogBufferMap?: WeakMap>;\n\n /**\n * A map of Sentry clients to their metric buffers.\n * This is used to store metrics that are sent to Sentry.\n */\n clientToMetricBufferMap?: WeakMap>;\n\n /** Overwrites TextEncoder used in `@sentry/core`, need for `react-native@0.73` and older */\n encodePolyfill?: (input: string) => Uint8Array;\n /** Overwrites TextDecoder used in `@sentry/core`, need for `react-native@0.73` and older */\n decodePolyfill?: (input: Uint8Array) => string;\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 **/\nexport function getMainCarrier(): Carrier {\n // This ensures a Sentry carrier exists\n getSentryCarrier(GLOBAL_OBJ);\n return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nexport function getSentryCarrier(carrier: Carrier): SentryCarrier {\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n // For now: First SDK that sets the .version property wins\n __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n // Intentionally populating and returning the version of \"this\" SDK instance\n // rather than what's set in .version so that \"this\" SDK always gets its carrier\n return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\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 `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(\n name: Prop,\n creator: () => NonNullable,\n obj = GLOBAL_OBJ,\n): NonNullable {\n const __SENTRY__ = (obj.__SENTRY__ = obj.__SENTRY__ || {});\n const carrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n // Note: We do not want to set `carrier.version` here, as this may be called before any `init` is called, e.g. for the default scopes\n return carrier[name] || (carrier[name] = creator());\n}\n","import { getGlobalSingleton } from '../carrier';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from './worldwide';\n\nexport interface SentryDebugLogger {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n log(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n}\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: Partial<{\n log(...args: Parameters): void;\n info(...args: Parameters): void;\n warn(...args: Parameters): void;\n error(...args: Parameters): void;\n debug(...args: Parameters): void;\n assert(...args: Parameters): void;\n trace(...args: Parameters): void;\n}> = {};\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 */\nexport function consoleSandbox(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console;\n const wrappedFuncs: Partial void>> = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level];\n wrappedFuncs[level] = console[level] as (...args: unknown[]) => void;\n console[level] = originalConsoleMethod as (...args: unknown[]) => void;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as (...args: unknown[]) => void;\n });\n }\n}\n\nfunction enable(): void {\n _getLoggerSettings().enabled = true;\n}\n\nfunction disable(): void {\n _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled(): boolean {\n return _getLoggerSettings().enabled;\n}\n\nfunction log(...args: Parameters): void {\n _maybeLog('log', ...args);\n}\n\nfunction warn(...args: Parameters): void {\n _maybeLog('warn', ...args);\n}\n\nfunction error(...args: Parameters): void {\n _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level: ConsoleLevel, ...args: Parameters<(typeof console)[typeof level]>): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n if (isEnabled()) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n });\n }\n}\n\nfunction _getLoggerSettings(): { enabled: boolean } {\n if (!DEBUG_BUILD) {\n return { enabled: false };\n }\n\n return getGlobalSingleton('loggerSettings', () => ({ enabled: false }));\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n */\nexport const debug = {\n /** Enable logging. */\n enable,\n /** Disable logging. */\n disable,\n /** Check if logging is enabled. */\n isEnabled,\n /** Log a message. */\n log,\n /** Log a warning. */\n warn,\n /** Log an error. */\n error,\n} satisfies SentryDebugLogger;\n","import type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackLineParser, StackParser } from '../types-hoist/stacktrace';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\nexport const UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\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 */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirstLines: number = 0, framesToPop: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirstLines; i < lines.length; i++) {\n let line = lines[i] as string;\n // Truncate lines over 1kb because many of the regular expressions use\n // backtracking which results in run time that increases exponentially\n // with input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n line = line.slice(0, 1024);\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames.slice(framesToPop));\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 */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\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 (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\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 (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the scope itself, making it:\n //\n // Sentry.captureException()\n // scope.captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION,\n }));\n}\n\nfunction getLastStackFrame(arr: StackFrame[]): StackFrame {\n return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch {\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\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nexport function getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n const frames: StackFrame[] = [];\n try {\n // @ts-expect-error Object could be undefined\n exception.values.forEach(value => {\n // @ts-expect-error Value could be undefined\n if (value.stacktrace.frames) {\n // @ts-expect-error Value could be undefined\n frames.push(...value.stacktrace.frames);\n }\n });\n return frames;\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Get the internal name of an internal Vue value, to represent it in a stacktrace.\n *\n * @param value The value to get the internal name of.\n */\nexport function getVueInternalName(value: VueViewModel | VNode): string {\n // Check if it's a VNode (has __v_isVNode) or a component instance (has _isVue/__isVue)\n const isVNode = '__v_isVNode' in value && value.__v_isVNode;\n\n return isVNode ? '[VueVNode]' : '[VueViewModel]';\n}\n\n/**\n * Normalizes stack line paths by removing file:// prefix and leading slashes for Windows paths\n */\nexport function normalizeStackTracePath(path: string | undefined): string | undefined {\n let filename = path?.startsWith('file://') ? path.slice(7) : path;\n // If it's a Windows path, trim the leading slash so that `/C:/foo` becomes `C:/foo`\n if (filename?.match(/\\/[A-Z]:/)) {\n filename = filename.slice(1);\n }\n return filename;\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from '../utils/debug-logger';\nimport { getFunctionName } from '../utils/stacktrace';\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'fetch-body-resolved'\n | 'history'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n handlers[type].push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n if (!instrumented[type]) {\n instrumented[type] = true;\n try {\n instrumentFn();\n } catch (e) {\n DEBUG_BUILD && debug.error(`Error while instrumenting ${type}`, e);\n }\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n debug.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n","import type { HandlerDataError } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n // Note: The reason we are doing window.onerror instead of window.addEventListener('error')\n // is that we are using this handler in the Loader Script, to handle buffered errors consistently\n GLOBAL_OBJ.onerror = function (\n msg: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","import type { HandlerDataUnhandledRejection } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection')\n // is that we are using this handler in the Loader Script, to handle buffered rejections consistently\n GLOBAL_OBJ.onunhandledrejection = function (e: unknown): boolean {\n const handlerData: HandlerDataUnhandledRejection = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Primitive } from '../types-hoist/misc';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { PolymorphicEvent } from '../types-hoist/polymorphics';\nimport type { VNode, VueViewModel } from '../types-hoist/vue';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst 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 */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object WebAssembly.Exception]':\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: unknown, className: string): boolean {\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 */\nexport function isErrorEvent(wat: unknown): boolean {\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 */\nexport function isDOMError(wat: unknown): boolean {\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 */\nexport function isDOMException(wat: unknown): boolean {\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 */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\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 */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\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 */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\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 */\nexport function isElement(wat: unknown): boolean {\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 */\nexport function isRegExp(wat: unknown): wat is RegExp {\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 */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(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 */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in 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 */\n// TODO: fix in v11, convert any to unknown\n// export function isInstanceOf(wat: unknown, base: { new (...args: any[]): T }): wat is T {\nexport function isInstanceOf(wat: any, base: any): wat is T {\n try {\n return wat instanceof base;\n } catch {\n return false;\n }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel or a VNode.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): wat is VueViewModel | VNode {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n // We also need to check for __v_isVNode because Vue 3 component render instances have an internal __v_isVNode property.\n return !!(\n typeof wat === 'object' &&\n wat !== null &&\n ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue || (wat as { __v_isVNode?: boolean }).__v_isVNode)\n );\n}\n\n/**\n * Checks whether the given parameter is a Standard Web API Request instance.\n *\n * Returns false if Request is not available in the current runtime.\n */\nexport function isRequest(request: unknown): request is Request {\n return typeof Request !== 'undefined' && isInstanceOf(request, Request);\n}\n","import { isString } from './is';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n parentNode: SimpleNode;\n} | null;\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 */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n if (!elem) {\n return '';\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 as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\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 maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\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 {\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: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n\n if (!elem?.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset) {\n if (elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n if (elem.dataset['sentryElement']) {\n return elem.dataset['sentryElement'];\n }\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs = keyAttrs?.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (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 const className = elem.className;\n if (className && isString(className)) {\n const classes = className.split(/\\s+/);\n for (const c of classes) {\n out.push(`.${c}`);\n }\n }\n }\n for (const k of ['aria-label', 'type', 'name', 'title', 'alt']) {\n const attr = elem.getAttribute(k);\n if (attr) {\n out.push(`[${k}=\"${attr}\"]`);\n }\n }\n\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch {\n return '';\n }\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement) {\n if (currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n if (currentElem.dataset['sentryElement']) {\n return currentElem.dataset['sentryElement'];\n }\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { htmlTreeAsString } from './browser';\nimport { debug } from './debug-logger';\nimport { isElement, isError, isEvent, isInstanceOf, isPrimitive } from './is';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * If the method on the passed object is not a function, the wrapper will not be applied.\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 */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n // explicitly casting to unknown because we don't know the type of the method initially at all\n const original = source[name] as unknown;\n\n if (typeof original !== 'function') {\n return;\n }\n\n const wrapped = replacementFactory(original) as WrappedFunction;\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 markFunctionWrapped(wrapped, original);\n }\n\n try {\n source[name] = wrapped;\n } catch {\n DEBUG_BUILD && debug.log(`Failed to replace method \"${name}\" in object`, source);\n }\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 */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value,\n writable: true,\n configurable: true,\n });\n } catch {\n DEBUG_BUILD && debug.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\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 */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch {} // eslint-disable-line no-empty\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 */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function getOriginalFunction(func: WrappedFunction): T | undefined {\n return func.__sentry_original__;\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 argument itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(value: V):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\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 const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\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: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n return Object.fromEntries(Object.entries(obj));\n }\n return {};\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 */\nexport function extractExceptionKeysForMessage(exception: Record): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n return !keys[0] ? '[object has no keys]' : keys.join(', ');\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 *\n * @deprecated This function is no longer used by the SDK and will be removed in a future major version.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\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 const 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: T, memoizationMap: Map): T {\n // Early return for primitive values\n if (inputValue === null || typeof inputValue !== 'object') {\n return inputValue;\n }\n\n // Check memo map first for all object types\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n // handle arrays\n if (Array.isArray(inputValue)) {\n const returnValue: unknown[] = [];\n // Store mapping to handle circular references\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach(value => {\n returnValue.push(_dropUndefinedKeys(value, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n if (isPojo(inputValue)) {\n const returnValue: { [key: string]: unknown } = {};\n // Store mapping to handle circular references\n memoizationMap.set(inputValue, returnValue);\n\n const keys = Object.keys(inputValue);\n\n keys.forEach(key => {\n const val = inputValue[key];\n if (val !== undefined) {\n returnValue[key] = _dropUndefinedKeys(val, memoizationMap);\n }\n });\n\n return returnValue as T;\n }\n\n // For other object types, return as is\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record {\n // Plain objects have Object as constructor or no constructor\n const constructor = (input as object).constructor;\n return constructor === Object || constructor === undefined;\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 */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n // this will catch both undefined and null\n case wat == undefined:\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).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","import { GLOBAL_OBJ } from './worldwide';\n\nexport type RandomSafeContextRunner = (callback: () => T) => T;\n\n// undefined = not yet resolved, null = no runner found, function = runner found\nlet RESOLVED_RUNNER: RandomSafeContextRunner | null | undefined;\n\n/**\n * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts\n */\nexport function withRandomSafeContext(cb: () => T): T {\n // Skips future symbol lookups if we've already resolved (or attempted to resolve) the runner once\n if (RESOLVED_RUNNER !== undefined) {\n return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb();\n }\n\n const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__');\n const globalWithSymbol: typeof GLOBAL_OBJ & { [sym]?: RandomSafeContextRunner } = GLOBAL_OBJ;\n\n if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === 'function') {\n RESOLVED_RUNNER = globalWithSymbol[sym];\n return RESOLVED_RUNNER(cb);\n }\n\n RESOLVED_RUNNER = null;\n return cb();\n}\n\n/**\n * Identical to Math.random() but wrapped in withRandomSafeContext\n * to ensure safe random number generation in certain contexts (e.g., Next.js Cache Components).\n */\nexport function safeMathRandom(): number {\n return withRandomSafeContext(() => Math.random());\n}\n\n/**\n * Identical to Date.now() but wrapped in withRandomSafeContext\n * to ensure safe time value generation in certain contexts (e.g., Next.js Cache Components).\n */\nexport function safeDateNow(): number {\n return withRandomSafeContext(() => Date.now());\n}\n","import { isRegExp, isString, isVueViewModel } from './is';\nimport { getVueInternalName } from './stacktrace';\n\nexport { escapeStringForRegex } from '../vendor/escapeStringForRegex';\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 */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(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 */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\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 */\nexport function safeJoin(input: unknown[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line typescript/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push(getVueInternalName(value));\n } else {\n output.push(String(value));\n }\n } catch {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","import type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { addNonEnumerableProperty } from './object';\nimport { safeMathRandom, withRandomSafeContext } from './randomSafeContext';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\nfunction getCrypto(): CryptoInternal | undefined {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n return gbl.crypto || gbl.msCrypto;\n}\n\nlet emptyUuid: string | undefined;\n\nfunction getRandomByte(): number {\n return safeMathRandom() * 16;\n}\n\n/**\n * UUID4 generator\n * @param crypto Object that provides the crypto API.\n * @returns string Generated UUID4.\n */\nexport function uuid4(crypto = getCrypto()): string {\n try {\n if (crypto?.randomUUID) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return withRandomSafeContext(() => crypto.randomUUID!()).replace(/-/g, '');\n }\n } catch {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n if (!emptyUuid) {\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 emptyUuid = ([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11;\n }\n\n return emptyUuid.replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception?.values?.[0];\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 */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const 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 */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const 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 */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...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\nconst 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 */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\nfunction _parseInt(input: string | undefined): number {\n return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = _parseInt(match[1]);\n const minor = _parseInt(match[2]);\n const patch = _parseInt(match[3]);\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 */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n // We guard here to ensure this is not larger than the existing number of lines\n const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n frame.context_line = snipLine(lines[lineIndex]!, frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => 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 */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n if (isAlreadyCaptured(exception)) {\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 as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether we've already captured the given exception (note: not an identical exception - the very object).\n * It is considered already captured if it has the `__sentry_captured__` property set to `true`.\n *\n * @internal Only considered for internal usage\n */\nexport function isAlreadyCaptured(exception: unknown): boolean | void {\n try {\n return (exception as { __sentry_captured__?: boolean }).__sentry_captured__;\n } catch {} // eslint-disable-line no-empty\n}\n","import { safeDateNow, withRandomSafeContext } from './randomSafeContext';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\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 */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport function dateTimestampInSeconds(): number {\n return safeDateNow() / ONE_SECOND_IN_MS;\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 createUnixTimestampInSecondsFunc(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n // Some browser and environments don't have a performance or timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n if (!performance?.now || !performance.timeOrigin) {\n return dateTimestampInSeconds;\n }\n\n const timeOrigin = performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + withRandomSafeContext(() => performance.now())) / ONE_SECOND_IN_MS;\n };\n}\n\nlet _cachedTimestampInSeconds: (() => number) | undefined;\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 * 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 */\nexport function timestampInSeconds(): number {\n // We store this in a closure so that we don't have to create a new function every time this is called.\n const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc());\n return func();\n}\n\n/**\n * Cached result of getBrowserTimeOrigin.\n */\nlet cachedTimeOrigin: number | null | undefined = null;\n\n/**\n * Gets the time origin and the mode used to determine it.\n *\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 * TODO: move to `@sentry/browser-utils` package.\n */\nfunction getBrowserTimeOrigin(): number | undefined {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance?.now) {\n return undefined;\n }\n\n const threshold = 300_000; // 5 minutes in milliseconds\n const performanceNow = withRandomSafeContext(() => performance.now());\n const dateNow = safeDateNow();\n\n const timeOrigin = performance.timeOrigin;\n if (typeof timeOrigin === 'number') {\n const timeOriginDelta = Math.abs(timeOrigin + performanceNow - dateNow);\n if (timeOriginDelta < threshold) {\n return timeOrigin;\n }\n }\n\n // TODO: Remove all code related to `performance.timing.navigationStart` once we drop support for Safari 14.\n // `performance.timeSince` is available in Safari 15.\n // see: https://caniuse.com/mdn-api_performance_timeorigin\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 // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing?.navigationStart;\n if (typeof navigationStart === 'number') {\n const navigationStartDelta = Math.abs(navigationStart + performanceNow - dateNow);\n if (navigationStartDelta < threshold) {\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to subtracting\n // `performance.now()` from `Date.now()`.\n return dateNow - performanceNow;\n}\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 */\nexport function browserPerformanceTimeOrigin(): number | undefined {\n if (cachedTimeOrigin === null) {\n cachedTimeOrigin = getBrowserTimeOrigin();\n }\n\n return cachedTimeOrigin;\n}\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from './types-hoist/session';\nimport { uuid4 } from './utils/misc';\nimport { timestampInSeconds } from './utils/time';\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 */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: 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 Client.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 */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\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.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\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 const 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 */\nexport function closeSession(session: Session, status?: Exclude): void {\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: Session): SerializedSession {\n return {\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 abnormal_mechanism: session.abnormal_mechanism,\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 * Shallow merge two objects.\n * Does not mutate the passed in objects.\n * Undefined/empty values in the merge object will overwrite existing values.\n *\n * By default, this merges 2 levels deep.\n */\nexport function merge(initialObj: T, mergeObj: T, levels = 2): T {\n // If the merge value is not an object, or we have no merge levels left,\n // we just set the value to the merge value\n if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {\n return mergeObj;\n }\n\n // If the merge object is an empty object, and the initial object is not undefined, we return the initial object\n if (initialObj && Object.keys(mergeObj).length === 0) {\n return initialObj;\n }\n\n // Clone object\n const output = { ...initialObj };\n\n // Merge values into output, resursively\n for (const key in mergeObj) {\n if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n output[key] = merge(output[key], mergeObj[key], levels - 1);\n }\n }\n\n return output;\n}\n","import { uuid4 } from './misc';\n\n/**\n * Generate a random, valid trace ID.\n */\nexport function generateTraceId(): string {\n return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nexport function generateSpanId(): string {\n return uuid4().substring(16);\n}\n","import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\ntype ScopeWithMaybeSpan = Scope & {\n [SCOPE_SPAN_FIELD]?: Span;\n};\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nexport function _setSpanForScope(scope: Scope, span: Span | undefined): void {\n if (span) {\n addNonEnumerableProperty(scope as ScopeWithMaybeSpan, SCOPE_SPAN_FIELD, span);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (scope as ScopeWithMaybeSpan)[SCOPE_SPAN_FIELD];\n }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nexport function _getSpanForScope(scope: ScopeWithMaybeSpan): Span | undefined {\n return scope[SCOPE_SPAN_FIELD];\n}\n","/* eslint-disable max-lines */\nimport type { AttributeObject, RawAttribute, RawAttributes } from './attributes';\nimport type { Client } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport { updateSession } from './session';\nimport type { Attachment } from './types-hoist/attachment';\nimport type { Breadcrumb } from './types-hoist/breadcrumb';\nimport type { Context, Contexts } from './types-hoist/context';\nimport type { DynamicSamplingContext } from './types-hoist/envelope';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { Session } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span } from './types-hoist/span';\nimport type { PropagationContext } from './types-hoist/tracing';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isPlainObject } from './utils/is';\nimport { merge } from './utils/merge';\nimport { uuid4 } from './utils/misc';\nimport { generateTraceId } from './utils/propagationContext';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from './utils/spanOnScope';\nimport { truncate } from './utils/string';\nimport { dateTimestampInSeconds } from './utils/time';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * A context to be used for capturing an event.\n * This can either be a Scope, or a partial ScopeContext,\n * or a callback that receives the current scope and returns a new scope to use.\n */\nexport type CaptureContext = Scope | Partial | ((scope: Scope) => Scope);\n\n/**\n * Data that can be converted to a Scope.\n */\nexport interface ScopeContext {\n user: User;\n level: SeverityLevel;\n extra: Extras;\n contexts: Contexts;\n tags: { [key: string]: Primitive };\n attributes?: RawAttributes>;\n fingerprint: string[];\n propagationContext: PropagationContext;\n conversationId?: string;\n}\n\nexport interface SdkProcessingMetadata {\n [key: string]: unknown;\n requestSession?: {\n status: 'ok' | 'errored' | 'crashed';\n };\n normalizedRequest?: RequestEventData;\n dynamicSamplingContext?: Partial;\n capturedSpanScope?: Scope;\n capturedSpanIsolationScope?: Scope;\n spanCountBeforeProcessing?: number;\n ipAddress?: string;\n}\n\n/**\n * Normalized data of the Scope, ready to be used.\n */\nexport interface ScopeData {\n eventProcessors: EventProcessor[];\n breadcrumbs: Breadcrumb[];\n user: User;\n tags: { [key: string]: Primitive };\n // TODO(v11): Make this a required field (could be subtly breaking if we did it today)\n attributes?: RawAttributes>;\n extra: Extras;\n contexts: Contexts;\n attachments: Attachment[];\n propagationContext: PropagationContext;\n sdkProcessingMetadata: SdkProcessingMetadata;\n fingerprint: string[];\n level?: SeverityLevel;\n transactionName?: string;\n span?: Span;\n conversationId?: string;\n}\n\n/**\n * Holds additional event information.\n */\nexport class Scope {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called during event processing. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Attributes */\n protected _attributes: RawAttributes>;\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\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 protected _sdkProcessingMetadata: SdkProcessingMetadata;\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: SeverityLevel;\n\n /**\n * Transaction Name\n *\n * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n */\n protected _transactionName?: string;\n\n /** Session */\n protected _session?: Session;\n\n /** The client on this scope */\n protected _client?: Client;\n\n /** Contains the last event id of a captured event. */\n protected _lastEventId?: string;\n\n /** Conversation ID */\n protected _conversationId?: string;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public 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._attributes = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = {\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n };\n }\n\n /**\n * Clone all data from this scope into a new scope.\n */\n public clone(): Scope {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._attributes = { ...this._attributes };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n if (this._contexts.flags) {\n // We need to copy the `values` array so insertions on a cloned scope\n // won't affect the original array.\n newScope._contexts.flags = {\n values: [...this._contexts.flags.values],\n };\n }\n\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n newScope._lastEventId = this._lastEventId;\n newScope._conversationId = this._conversationId;\n\n _setSpanForScope(newScope, _getSpanForScope(this));\n\n return newScope;\n }\n\n /**\n * Update the client assigned to this scope.\n * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client,\n * as well as manually created scopes.\n */\n public setClient(client: Client | undefined): void {\n this._client = client;\n }\n\n /**\n * Set the ID of the last captured error event.\n * This is generally only captured on the isolation scope.\n */\n public setLastEventId(lastEventId: string | undefined): void {\n this._lastEventId = lastEventId;\n }\n\n /**\n * Get the client assigned to this scope.\n */\n public getClient(): C | undefined {\n return this._client as C | undefined;\n }\n\n /**\n * Get the ID of the last captured error event.\n * This is generally only available on the isolation scope.\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * Add an event processor that will be called before an event is sent.\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * Set the user for this scope.\n * Set to `null` to unset the user.\n */\n public setUser(user: User | null): this {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Get the user from this scope.\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * Set the conversation ID for this scope.\n * Set to `null` to unset the conversation ID.\n */\n public setConversationId(conversationId: string | null | undefined): this {\n this._conversationId = conversationId || undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set an object that will be merged into existing tags on the scope,\n * and will be sent as tags data with the event.\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set a single tag that will be sent as tags data with the event.\n */\n public setTag(key: string, value: Primitive): this {\n return this.setTags({ [key]: value });\n }\n\n /**\n * Sets attributes onto the scope.\n *\n * These attributes are currently applied to logs and metrics.\n * In the future, they will also be applied to spans.\n *\n * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n * more complex attribute types. We'll add this support in the future but already specify the wider type to\n * avoid a breaking change in the future.\n *\n * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or\n * an object with a `value` and an optional `unit` (if applicable to your attribute).\n *\n * @example\n * ```typescript\n * scope.setAttributes({\n * is_admin: true,\n * payment_selection: 'credit_card',\n * render_duration: { value: 'render_duration', unit: 'ms' },\n * });\n * ```\n */\n public setAttributes>(newAttributes: RawAttributes): this {\n this._attributes = {\n ...this._attributes,\n ...newAttributes,\n };\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets an attribute onto the scope.\n *\n * These attributes are currently applied to logs and metrics.\n * In the future, they will also be applied to spans.\n *\n * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n * more complex attribute types. We'll add this support in the future but already specify the wider type to\n * avoid a breaking change in the future.\n *\n * @param key - The attribute key.\n * @param value - the attribute value. You can either pass in a raw value, or an attribute\n * object with a `value` and an optional `unit` (if applicable to your attribute).\n *\n * @example\n * ```typescript\n * scope.setAttribute('is_admin', true);\n * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' });\n * ```\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setAttribute extends { value: any } | { unit: any } ? AttributeObject : unknown>(\n key: string,\n value: RawAttribute,\n ): this {\n return this.setAttributes({ [key]: value });\n }\n\n /**\n * Removes the attribute with the given key from the scope.\n *\n * @param key - The attribute key.\n *\n * @example\n * ```typescript\n * scope.removeAttribute('is_admin');\n * ```\n */\n public removeAttribute(key: string): this {\n if (key in this._attributes) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n this._notifyScopeListeners();\n }\n return this;\n }\n\n /**\n * Set an object that will be merged into existing extra on the scope,\n * and will be sent as extra data with the event.\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set a single key:value extra entry that will be sent as extra data with the event.\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the fingerprint on the scope to send with the events.\n * @param {string[]} fingerprint Fingerprint to group events in Sentry.\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the level on the scope for future events.\n */\n public setLevel(level: SeverityLevel): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope so that the name of e.g. taken server route or\n * the page location is attached to future events.\n *\n * IMPORTANT: Calling this function does NOT change the name of the currently active\n * root span. If you want to change the name of the active root span, use\n * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n *\n * By default, the SDK updates the scope's transaction name automatically on sensible\n * occasions, such as a page navigation or when handling a new request on the server.\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets context data with the given name.\n * Data passed as context will be normalized. You can also pass `null` to unset the context.\n * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key.\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Set the session for the scope.\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Get the session from the scope.\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * Updates the scope with provided data. Can work in three variations:\n * - plain object containing updatable attributes\n * - Scope instance that'll extract the attributes from\n * - callback function that'll receive the current scope as an argument and allow for modifications\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n const scopeInstance =\n scopeToMerge instanceof Scope\n ? scopeToMerge.getScopeData()\n : isPlainObject(scopeToMerge)\n ? (captureContext as ScopeContext)\n : undefined;\n\n const {\n tags,\n attributes,\n extra,\n user,\n contexts,\n level,\n fingerprint = [],\n propagationContext,\n conversationId,\n } = scopeInstance || {};\n\n this._tags = { ...this._tags, ...tags };\n this._attributes = { ...this._attributes, ...attributes };\n this._extra = { ...this._extra, ...extra };\n this._contexts = { ...this._contexts, ...contexts };\n\n if (user && Object.keys(user).length) {\n this._user = user;\n }\n\n if (level) {\n this._level = level;\n }\n\n if (fingerprint.length) {\n this._fingerprint = fingerprint;\n }\n\n if (propagationContext) {\n this._propagationContext = propagationContext;\n }\n\n if (conversationId) {\n this._conversationId = conversationId;\n }\n\n return this;\n }\n\n /**\n * Clears the current scope and resets its properties.\n * Note: The client will not be cleared.\n */\n public clear(): this {\n // client is not cleared here on purpose!\n this._breadcrumbs = [];\n this._tags = {};\n this._attributes = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._session = undefined;\n this._conversationId = undefined;\n _setSpanForScope(this, undefined);\n this._attachments = [];\n this.setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n });\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Adds a breadcrumb to the scope.\n * By default, the last 100 breadcrumbs are kept.\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_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 const mergedBreadcrumb: Breadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory\n message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message,\n };\n\n this._breadcrumbs.push(mergedBreadcrumb);\n if (this._breadcrumbs.length > maxCrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n this._client?.recordDroppedEvent('buffer_overflow', 'log_item');\n }\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * Get the last breadcrumb of the scope.\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * Clear all breadcrumbs from the scope.\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Add an attachment to the scope.\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * Clear all attachments from the scope.\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Get the data of this scope, which should be applied to an event during processing.\n */\n public getScopeData(): ScopeData {\n return {\n breadcrumbs: this._breadcrumbs,\n attachments: this._attachments,\n contexts: this._contexts,\n tags: this._tags,\n attributes: this._attributes,\n extra: this._extra,\n user: this._user,\n level: this._level,\n fingerprint: this._fingerprint || [],\n eventProcessors: this._eventProcessors,\n propagationContext: this._propagationContext,\n sdkProcessingMetadata: this._sdkProcessingMetadata,\n transactionName: this._transactionName,\n span: _getSpanForScope(this),\n conversationId: this._conversationId,\n };\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry.\n */\n public setSDKProcessingMetadata(newData: SdkProcessingMetadata): this {\n this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n return this;\n }\n\n /**\n * Add propagation context to the scope, used for distributed tracing\n */\n public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * Get propagation context from the scope, used for distributed tracing\n */\n public getPropagationContext(): PropagationContext {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @returns {string} The id of the captured Sentry event.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @returns {string} The id of the captured message.\n */\n public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n const eventId = hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = hint?.syntheticException ?? new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a Sentry event for this scope.\n *\n * @returns {string} The id of the captured event.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = event.event_id || hint?.event_id || uuid4();\n\n if (!this._client) {\n DEBUG_BUILD && debug.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\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","import { getGlobalSingleton } from './carrier';\nimport { Scope } from './scope';\n\n/** Get the default current scope. */\nexport function getDefaultCurrentScope(): Scope {\n return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nexport function getDefaultIsolationScope(): Scope {\n return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n","const isActualPromise = (p: unknown) =>\n p instanceof Promise && !(p as unknown as ChainedPromiseLike)[kChainedCopy];\n\ntype ChainedPromiseLike = PromiseLike & {\n [kChainedCopy]: true;\n};\nconst kChainedCopy = Symbol('chained PromiseLike');\n\n/**\n * Copy the properties from a decorated promiselike object onto its chained\n * actual promise.\n */\nexport const chainAndCopyPromiseLike = >(\n original: T,\n onSuccess: (value: V) => void,\n onError: (e: unknown) => void,\n): T => {\n const chained = original.then(\n value => {\n onSuccess(value);\n return value;\n },\n err => {\n onError(err);\n throw err;\n },\n ) as T;\n\n // if we're just dealing with \"normal\" Promise objects, return the chain\n return isActualPromise(chained) && isActualPromise(original) ? chained : copyProps(original, chained);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst copyProps = >(original: T, chained: T): T => {\n let mutated = false;\n //oxlint-disable-next-line guard-for-in\n for (const key in original) {\n if (key in chained) continue;\n mutated = true;\n const value = original[key];\n if (typeof value === 'function') {\n Object.defineProperty(chained, key, {\n value: (...args: unknown[]) => value.apply(original, args),\n enumerable: true,\n configurable: true,\n writable: true,\n });\n } else {\n (chained as Record)[key] = value;\n }\n }\n\n if (mutated) Object.assign(chained, { [kChainedCopy]: true });\n return chained;\n};\n","import type { Client } from '../client';\nimport { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes';\nimport { Scope } from '../scope';\nimport { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike';\nimport { isThenable } from '../utils/is';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport type { AsyncContextStrategy } from './types';\n\ninterface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * This is an object that holds a stack of scopes.\n */\nexport class AsyncContextStack {\n private readonly _stack: [Layer, ...Layer[]];\n private _isolationScope: Scope;\n\n public constructor(scope?: Scope, isolationScope?: Scope) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n // scope stack for domains or the process\n this._stack = [{ scope: assignedScope }];\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Fork a scope for the stack.\n */\n public withScope(callback: (scope: Scope) => T): T {\n const scope = this._pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n this._popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n return chainAndCopyPromiseLike(\n maybePromiseResult as PromiseLike> & Record,\n () => this._popScope(),\n () => this._popScope(),\n ) as T;\n }\n\n this._popScope();\n return maybePromiseResult;\n }\n\n /**\n * Get the client of the stack.\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n */\n public getScope(): Scope {\n return this.getStackTop().scope;\n }\n\n /**\n * Get the isolation scope for the stack.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1] as Layer;\n }\n\n /**\n * Push a scope to the stack.\n */\n private _pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = this.getScope().clone();\n this._stack.push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * Pop a scope from the stack.\n */\n private _popScope(): boolean {\n if (this._stack.length <= 1) return false;\n return !!this._stack.pop();\n }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack(): AsyncContextStack {\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n\n return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope(callback: (scope: Scope) => T): T {\n return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope: Scope, callback: (scope: Scope) => T): T {\n const stack = getAsyncContextStack();\n return stack.withScope(() => {\n stack.getStackTop().scope = scope;\n return callback(scope);\n });\n}\n\nfunction withIsolationScope(callback: (isolationScope: Scope) => T): T {\n return getAsyncContextStack().withScope(() => {\n return callback(getAsyncContextStack().getIsolationScope());\n });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nexport function getStackAsyncContextStrategy(): AsyncContextStrategy {\n return {\n withIsolationScope,\n withScope,\n withSetScope,\n withSetIsolationScope: (_isolationScope: Scope, callback: (isolationScope: Scope) => T) => {\n return withIsolationScope(callback);\n },\n getCurrentScope: () => getAsyncContextStack().getScope(),\n getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n };\n}\n","import type { Carrier } from './../carrier';\nimport { getMainCarrier, getSentryCarrier } from './../carrier';\nimport { getStackAsyncContextStrategy } from './stackStrategy';\nimport type { AsyncContextStrategy } from './types';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nexport function getAsyncContextStrategy(carrier: Carrier): AsyncContextStrategy {\n const sentry = getSentryCarrier(carrier);\n\n if (sentry.acs) {\n return sentry.acs;\n }\n\n // Otherwise, use the default one (stack)\n return getStackAsyncContextStrategy();\n}\n","import { getAsyncContextStrategy } from './asyncContext';\nimport { getGlobalSingleton, getMainCarrier } from './carrier';\nimport type { Client } from './client';\nimport { Scope } from './scope';\nimport type { TraceContext } from './types-hoist/context';\nimport { generateSpanId } from './utils/propagationContext';\n\nlet _externalPropagationContextProvider: (() => { traceId: string; spanId: string } | undefined) | undefined;\n\n/**\n * Register an external propagation context provider function.\n * When registered, trace context will be read from the external source (e.g. OpenTelemetry)\n * instead of from the Sentry scope's propagation context.\n */\nexport function registerExternalPropagationContext(fn: () => { traceId: string; spanId: string } | undefined): void {\n _externalPropagationContextProvider = fn;\n}\n\n/**\n * Get the external propagation context, if a provider has been registered.\n */\nexport function getExternalPropagationContext(): { traceId: string; spanId: string } | undefined {\n return _externalPropagationContextProvider?.();\n}\n\n/**\n * Check if an external propagation context provider has been registered.\n */\nexport function hasExternalPropagationContext(): boolean {\n return _externalPropagationContextProvider !== undefined;\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current execution context.\n */\nexport function getIsolationScope(): Scope {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): Scope {\n return getGlobalSingleton('globalScope', () => new Scope());\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 */\nexport function withScope(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope(scope: Scope | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope(\n ...rest: [callback: (scope: Scope) => T] | [scope: Scope | undefined, callback: (scope: Scope) => T]\n): T {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n\n if (!scope) {\n return acs.withScope(callback);\n }\n\n return acs.withSetScope(scope, callback);\n }\n\n return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\nexport function withIsolationScope(callback: (isolationScope: Scope) => T): T;\n/**\n * Set the provided isolation scope as active in the given callback. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * If you pass in `undefined` as a scope, it will fork a new isolation scope, the same as if no scope is passed.\n */\nexport function withIsolationScope(isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T): T;\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nexport function withIsolationScope(\n ...rest:\n | [callback: (isolationScope: Scope) => T]\n | [isolationScope: Scope | undefined, callback: (isolationScope: Scope) => T]\n): T {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [isolationScope, callback] = rest;\n\n if (!isolationScope) {\n return acs.withIsolationScope(callback);\n }\n\n return acs.withSetIsolationScope(isolationScope, callback);\n }\n\n return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient(): C | undefined {\n return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nexport function getTraceContextFromScope(scope: Scope): TraceContext {\n const externalContext = getExternalPropagationContext();\n if (externalContext) {\n return { trace_id: externalContext.traceId, span_id: externalContext.spanId };\n }\n\n const propagationContext = scope.getPropagationContext();\n\n const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n\n const traceContext: TraceContext = {\n trace_id: traceId,\n span_id: propagationSpanId || generateSpanId(),\n };\n\n if (parentSpanId) {\n traceContext.parent_span_id = parentSpanId;\n }\n\n return traceContext;\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Attributes that holds the sample rate that was locally applied to a span.\n * If this attribute is not defined, it means that the span inherited a sampling decision.\n *\n * NOTE: Is only defined on root spans.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Attribute holding the sample rate of the previous trace.\n * This is used to sample consistently across subsequent traces in the browser SDK.\n *\n * Note: Only defined on root spans, if opted into consistent sampling\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = 'sentry.previous_trace_sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * A custom span name set by users guaranteed to be taken over any automatically\n * inferred name. This attribute is removed before the span is sent.\n *\n * @internal only meant for internal SDK usage\n * @hidden\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nexport const SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nexport const SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nexport const SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nexport const SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n\n/**\n * A span link attribute to mark the link as a special span link.\n *\n * Known values:\n * - `previous_trace`: The span links to the frontend root span of the previous trace.\n * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK)\n *\n * Other values may be set as appropriate.\n * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types\n */\nexport const SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = 'sentry.link.type';\n\n/**\n * =============================================================================\n * GEN AI ATTRIBUTES\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n * =============================================================================\n */\n\n/**\n * The conversation ID for linking messages across API calls.\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n","import type { Span } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\n\nexport const SPAN_STATUS_UNSET = 0;\nexport const SPAN_STATUS_OK = 1;\nexport const SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or internal_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatus {\n if (httpStatus < 400 && httpStatus >= 100) {\n return { code: SPAN_STATUS_OK };\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n case 403:\n return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n case 404:\n return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n case 409:\n return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n case 413:\n return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n case 429:\n return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n case 499:\n return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n case 503:\n return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n case 504:\n return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n default:\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n span.setAttribute('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus.message !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n","import type { Scope } from '../scope';\nimport type { Span } from '../types-hoist/span';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype ScopeWeakRef = { deref(): Scope | undefined } | Scope;\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: ScopeWeakRef;\n};\n\n/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */\nfunction wrapScopeWithWeakRef(scope: Scope): ScopeWeakRef {\n try {\n // @ts-expect-error - WeakRef is not available in all environments\n const WeakRefClass = GLOBAL_OBJ.WeakRef;\n if (typeof WeakRefClass === 'function') {\n return new WeakRefClass(scope);\n }\n } catch {\n // WeakRef not available or failed to create\n // We'll fall back to a direct scope\n }\n\n return scope;\n}\n\n/** Try to unwrap a scope from a potential WeakRef wrapper. */\nfunction unwrapScopeFromWeakRef(scopeRef: ScopeWeakRef | undefined): Scope | undefined {\n if (!scopeRef) {\n return undefined;\n }\n\n if (typeof scopeRef === 'object' && 'deref' in scopeRef && typeof scopeRef.deref === 'function') {\n try {\n return scopeRef.deref();\n } catch {\n return undefined;\n }\n }\n\n // Fallback to a direct scope\n return scopeRef as Scope;\n}\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nexport function setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, wrapScopeWithWeakRef(isolationScope));\n // We don't wrap the scope with a WeakRef here because webkit aggressively garbage collects\n // and scopes are not held in memory for long periods of time.\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n * If WeakRef was used and scopes have been garbage collected, returns undefined for those scopes.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n const spanWithScopes = span as SpanWithScopes;\n\n return {\n scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]),\n };\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { debug } from './debug-logger';\nimport { isString } from './is';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const 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 */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial | undefined {\n const baggageObject = parseBaggageHeader(baggageHeader);\n\n if (!baggageObject) {\n return undefined;\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce>((acc, [key, value]) => {\n if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext?: Partial,\n): string | undefined {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nexport function parseBaggageHeader(\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Record | undefined {\n if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n return undefined;\n }\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n return baggageHeader.reduce>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n Object.entries(currBaggageObject).forEach(([key, value]) => {\n acc[key] = value;\n });\n return acc;\n }, {});\n }\n\n return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record {\n return baggageHeader\n .split(',')\n .map(baggageEntry => {\n const eqIdx = baggageEntry.indexOf('=');\n if (eqIdx === -1) {\n // Likely an invalid entry\n return [];\n }\n const key = baggageEntry.slice(0, eqIdx);\n const value = baggageEntry.slice(eqIdx + 1);\n return [key, value].map(keyOrValue => {\n try {\n return decodeURIComponent(keyOrValue.trim());\n } catch {\n // We ignore errors here, e.g. if the value cannot be URL decoded.\n // This will then be skipped in the next step\n return;\n }\n });\n })\n .reduce>((acc, [key, value]) => {\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nexport function objectToBaggageHeader(object: Record): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n debug.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import type { Client } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { DsnComponents, DsnLike, DsnProtocol } from '../types-hoist/dsn';\nimport { consoleSandbox, debug } from './debug-logger';\n\n/** Regular expression used to extract org ID from a DSN host. */\nconst ORG_ID_REGEX = /^o(\\d+)\\./;\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)((?:\\[[:.%\\w]+\\]|[\\w.-]+))(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\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 */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\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 or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\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: DsnComponents): boolean {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n debug.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n debug.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Extract the org ID from a DSN host.\n *\n * @param host The host from a DSN\n * @returns The org ID if found, undefined otherwise\n */\nexport function extractOrgIdFromDsnHost(host: string): string | undefined {\n const match = host.match(ORG_ID_REGEX);\n\n return match?.[1];\n}\n\n/**\n * Returns the organization ID of the client.\n *\n * The organization ID is extracted from the DSN. If the client options include a `orgId`, this will always take precedence.\n */\nexport function extractOrgIdFromClient(client: Client): string | undefined {\n const options = client.getOptions();\n\n const { host } = client.getDsn() || {};\n\n let org_id: string | undefined;\n\n if (options.orgId) {\n org_id = String(options.orgId);\n } else if (host) {\n org_id = extractOrgIdFromDsnHost(host);\n }\n\n return org_id;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n","/**\n * Parse a sample rate from a given value.\n * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1).\n * If a string is passed, we try to convert it to a number.\n *\n * Any invalid sample rate will return `undefined`.\n */\nexport function parseSampleRate(sampleRate: unknown): number | undefined {\n if (typeof sampleRate === 'boolean') {\n return Number(sampleRate);\n }\n\n const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate;\n if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) {\n return undefined;\n }\n\n return rate;\n}\n","import type { Client } from '../client';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { PropagationContext } from '../types-hoist/tracing';\nimport type { TraceparentData } from '../types-hoist/transaction';\nimport { debug } from '../utils/debug-logger';\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { extractOrgIdFromClient } from './dsn';\nimport { parseSampleRate } from './parseSampleRate';\nimport { generateSpanId, generateTraceId } from './propagationContext';\nimport { safeMathRandom } from './randomSafeContext';\n\n// oxlint-disable-next-line sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const 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 * This is terrible naming but the function has nothing to do with the W3C traceparent header.\n * It can only parse the `sentry-trace` header and extract the \"trace parent\" data.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create a propagation context from incoming headers or\n * creates a minimal new one if the headers are undefined.\n */\nexport function propagationContextFromHeaders(\n sentryTrace: string | undefined,\n baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n if (!traceparentData?.traceId) {\n return {\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n };\n }\n\n const sampleRand = getSampleRandFromTraceparentAndDsc(traceparentData, dynamicSamplingContext);\n\n // The sample_rand on the DSC needs to be generated based on traceparent + baggage.\n if (dynamicSamplingContext) {\n dynamicSamplingContext.sample_rand = sampleRand.toString();\n }\n\n const { traceId, parentSpanId, parentSampled } = traceparentData;\n\n return {\n traceId,\n parentSpanId,\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n sampleRand,\n };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nexport function generateSentryTraceHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\n/**\n * Creates a W3C traceparent header from the given trace and span ids.\n */\nexport function generateTraceparentHeader(\n traceId: string | undefined = generateTraceId(),\n spanId: string | undefined = generateSpanId(),\n sampled?: boolean,\n): string {\n return `00-${traceId}-${spanId}-${sampled ? '01' : '00'}`;\n}\n\n/**\n * Given any combination of an incoming trace, generate a sample rand based on its defined semantics.\n *\n * Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n */\nfunction getSampleRandFromTraceparentAndDsc(\n traceparentData: TraceparentData | undefined,\n dsc: Partial | undefined,\n): number {\n // When there is an incoming sample rand use it.\n const parsedSampleRand = parseSampleRate(dsc?.sample_rand);\n if (parsedSampleRand !== undefined) {\n return parsedSampleRand;\n }\n\n // Otherwise, if there is an incoming sampling decision + sample rate, generate a sample rand that would lead to the same sampling decision.\n const parsedSampleRate = parseSampleRate(dsc?.sample_rate);\n if (parsedSampleRate && traceparentData?.parentSampled !== undefined) {\n return traceparentData.parentSampled\n ? // Returns a sample rand with positive sampling decision [0, sampleRate)\n safeMathRandom() * parsedSampleRate\n : // Returns a sample rand with negative sampling decision [sampleRate, 1)\n parsedSampleRate + safeMathRandom() * (1 - parsedSampleRate);\n } else {\n // If nothing applies, return a random sample rand.\n return safeMathRandom();\n }\n}\n\n/**\n * Determines whether a new trace should be continued based on the provided baggage org ID and the client's `strictTraceContinuation` option.\n * If the trace should not be continued, a new trace will be started.\n *\n * The result is dependent on the `strictTraceContinuation` option in the client.\n * See https://develop.sentry.dev/sdk/telemetry/traces/#stricttracecontinuation\n */\nexport function shouldContinueTrace(client: Client, baggageOrgId?: string): boolean {\n const clientOrgId = extractOrgIdFromClient(client);\n\n // Case: baggage orgID and Client orgID don't match - always start new trace\n if (baggageOrgId && clientOrgId && baggageOrgId !== clientOrgId) {\n debug.log(\n `Won't continue trace because org IDs don't match (incoming baggage: ${baggageOrgId}, SDK options: ${clientOrgId})`,\n );\n return false;\n }\n\n const strictTraceContinuation = client.getOptions().strictTraceContinuation || false; // default for `strictTraceContinuation` is `false`\n\n if (strictTraceContinuation) {\n // With strict continuation enabled, don't continue trace if:\n // - Baggage has orgID, but Client doesn't have one\n // - Client has orgID, but baggage doesn't have one\n if ((baggageOrgId && !clientOrgId) || (!baggageOrgId && clientOrgId)) {\n debug.log(\n `Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${baggageOrgId}, Sentry client: ${clientOrgId})`,\n );\n return false;\n }\n }\n\n return true;\n}\n","import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport { getCurrentScope } from '../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SentrySpan } from '../tracing/sentrySpan';\nimport { SPAN_STATUS_OK, SPAN_STATUS_UNSET } from '../tracing/spanstatus';\nimport { getCapturedScopesOnSpan } from '../tracing/utils';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { SpanLink, SpanLinkJSON } from '../types-hoist/link';\nimport type { Span, SpanAttributes, SpanJSON, SpanOrigin, SpanTimeInput } from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { generateSpanId } from '../utils/propagationContext';\nimport { timestampInSeconds } from '../utils/time';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from '../utils/tracing';\nimport { consoleSandbox } from './debug-logger';\nimport { _getSpanForScope } from './spanOnScope';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\nlet hasShownSpanDropWarning = false;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nexport function spanToTransactionTraceContext(span: Span): TraceContext {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, origin, links } = spanToJSON(span);\n\n return {\n parent_span_id,\n span_id,\n trace_id,\n data,\n op,\n status,\n origin,\n links,\n };\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n\n // If the span is remote, we use a random/virtual span as span_id to the trace context,\n // and the remote span as parent_span_id\n const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n const scope = getCapturedScopesOnSpan(span).scope;\n\n const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId;\n\n return {\n parent_span_id,\n span_id,\n trace_id,\n };\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a Span to a W3C traceparent header.\n */\nexport function spanToTraceparentHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateTraceparentHeader(traceId, spanId, sampled);\n}\n\n/**\n * Converts the span links array to a flattened version to be sent within an envelope.\n *\n * If the links array is empty, it returns `undefined` so the empty value can be dropped before it's sent.\n */\nexport function convertSpanLinksForEnvelope(links?: SpanLink[]): SpanLinkJSON[] | undefined {\n if (links && links.length > 0) {\n return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({\n span_id: spanId,\n trace_id: traceId,\n sampled: traceFlags === TRACE_FLAG_SAMPLED,\n attributes,\n ...restContext,\n }));\n } else {\n return undefined;\n }\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nexport function spanToJSON(span: Span): SpanJSON {\n if (spanIsSentrySpan(span)) {\n return span.getSpanJSON();\n }\n\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n const { attributes, startTime, name, endTime, status, links } = span;\n\n // In preparation for the next major of OpenTelemetry, we want to support\n // looking up the parent span id according to the new API\n // In OTel v1, the parent span id is accessed as `parentSpanId`\n // In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n const parentSpanId =\n 'parentSpanId' in span\n ? span.parentSpanId\n : 'parentSpanContext' in span\n ? (span.parentSpanContext as { spanId?: string } | undefined)?.spanId\n : undefined;\n\n return {\n span_id,\n trace_id,\n data: attributes,\n description: name,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status),\n op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n links: convertSpanLinksForEnvelope(links),\n };\n }\n\n // Finally, at least we have `spanContext()`....\n // This should not actually happen in reality, but we need to handle it for type safety.\n return {\n span_id,\n trace_id,\n start_timestamp: 0,\n data: {},\n };\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span: Span): span is OpenTelemetrySdkTraceBaseSpan {\n const castSpan = span as Partial;\n return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\nexport interface OpenTelemetrySdkTraceBaseSpan extends Span {\n attributes: SpanAttributes;\n startTime: SpanTimeInput;\n name: string;\n status: SpanStatus;\n endTime: SpanTimeInput;\n parentSpanId?: string;\n links?: SpanLink[];\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span: Span): span is SentrySpan {\n return typeof (span as SentrySpan).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nexport function getStatusMessage(status: SpanStatus | undefined): string | undefined {\n if (!status || status.code === SPAN_STATUS_UNSET) {\n return undefined;\n }\n\n if (status.code === SPAN_STATUS_OK) {\n return 'ok';\n }\n\n return status.message || 'internal_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\ntype SpanWithPotentialChildren = Span & {\n [CHILD_SPANS_FIELD]?: Set;\n [ROOT_SPAN_FIELD]?: Span;\n};\n\n/**\n * Adds an opaque child span reference to a span.\n */\nexport function addChildSpanToSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\n // We store the root span reference on the child span\n // We need this for `getRootSpan()` to work\n const rootSpan = span[ROOT_SPAN_FIELD] || span;\n addNonEnumerableProperty(childSpan as SpanWithPotentialChildren, ROOT_SPAN_FIELD, rootSpan);\n\n // We store a list of child spans on the parent span\n // We need this for `getSpanDescendants()` to work\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].add(childSpan);\n } else {\n addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n }\n}\n\n/** This is only used internally by Idle Spans. */\nexport function removeChildSpanFromSpan(span: SpanWithPotentialChildren, childSpan: Span): void {\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].delete(childSpan);\n }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nexport function getSpanDescendants(span: SpanWithPotentialChildren): Span[] {\n const resultSet = new Set();\n\n function addSpanChildren(span: SpanWithPotentialChildren): void {\n // This exit condition is required to not infinitely loop in case of a circular dependency.\n if (resultSet.has(span)) {\n return;\n // We want to ignore unsampled spans (e.g. non recording spans)\n } else if (spanIsSampled(span)) {\n resultSet.add(span);\n const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n for (const childSpan of childSpans) {\n addSpanChildren(childSpan);\n }\n }\n }\n\n addSpanChildren(span);\n\n return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nexport function getRootSpan(span: SpanWithPotentialChildren): Span {\n return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getActiveSpan) {\n return acs.getActiveSpan();\n }\n\n return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Logs a warning once if `beforeSendSpan` is used to drop spans.\n */\nexport function showSpanDropWarning(): void {\n if (!hasShownSpanDropWarning) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.',\n );\n });\n hasShownSpanDropWarning = true;\n }\n}\n\n/**\n * Updates the name of the given span and ensures that the span name is not\n * overwritten by the Sentry SDK.\n *\n * Use this function instead of `span.updateName()` if you want to make sure that\n * your name is kept. For some spans, for example root `http.server` spans the\n * Sentry SDK would otherwise overwrite the span name with a high-quality name\n * it infers when the span ends.\n *\n * Use this function in server code or when your span is started on the server\n * and on the client (browser). If you only update a span name on the client,\n * you can also use `span.updateName()` the SDK does not overwrite the name.\n *\n * @param span - The span to update the name of.\n * @param name - The name to set on the span.\n */\nexport function updateSpanName(span: Span, name: string): void {\n span.updateName(name);\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n });\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { addGlobalErrorInstrumentationHandler } from '../instrument/globalError';\nimport { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\n\nlet errorsInstrumented = false;\n\n/** Only exposed for testing */\nexport function _resetErrorsInstrumented(): void {\n errorsInstrumented = false;\n}\n\n/**\n * Ensure that global errors automatically set the active span status.\n */\nexport function registerSpanErrorInstrumentation(): void {\n if (errorsInstrumented) {\n return;\n }\n\n /**\n * If an error or unhandled promise occurs, we mark the active root span as failed\n */\n function errorCallback(): void {\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n if (rootSpan) {\n const message = 'internal_error';\n DEBUG_BUILD && debug.log(`[Tracing] Root span: ${message} -> Global error occurred`);\n rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message });\n }\n }\n\n // The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n // node.js default exit behaviour\n errorCallback.tag = 'sentry_tracingErrorCallback';\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n","import { getClient } from '../currentScopes';\nimport type { CoreOptions } from '../types-hoist/options';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if span recording is currently enabled.\n *\n * Spans are recorded when at least one of `tracesSampleRate` and `tracesSampler`\n * is defined in the SDK config. This function does not make any assumption about\n * sampling decisions, it only checks if the SDK is configured to record spans.\n *\n * Important: This function only determines if span recording is enabled. Trace\n * continuation and propagation is separately controlled and not covered by this function.\n * If this function returns `false`, traces can still be propagated (which is what\n * we refer to by \"Tracing without Performance\")\n * @see https://develop.sentry.dev/sdk/telemetry/traces/tracing-without-performance/\n *\n * @param maybeOptions An SDK options object to be passed to this function.\n * If this option is not provided, the function will use the current client's options.\n */\nexport function hasSpansEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const options = maybeOptions || getClient()?.getOptions();\n return (\n !!options &&\n // Note: This check is `!= null`, meaning \"nullish\". `0` is not \"nullish\", `undefined` and `null` are. (This comment was brought to you by 15 minutes of questioning life)\n (options.tracesSampleRate != null || !!options.tracesSampler)\n );\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { debug } from './debug-logger';\nimport { isMatchingPattern } from './string';\n\nfunction logIgnoredSpan(droppedSpan: Pick): void {\n debug.log(`Ignoring span ${droppedSpan.op} - ${droppedSpan.description} because it matches \\`ignoreSpans\\`.`);\n}\n\n/**\n * Check if a span should be ignored based on the ignoreSpans configuration.\n */\nexport function shouldIgnoreSpan(\n span: Pick,\n ignoreSpans: Required['ignoreSpans'],\n): boolean {\n if (!ignoreSpans?.length || !span.description) {\n return false;\n }\n\n for (const pattern of ignoreSpans) {\n if (isStringOrRegExp(pattern)) {\n if (isMatchingPattern(span.description, pattern)) {\n DEBUG_BUILD && logIgnoredSpan(span);\n return true;\n }\n continue;\n }\n\n if (!pattern.name && !pattern.op) {\n continue;\n }\n\n const nameMatches = pattern.name ? isMatchingPattern(span.description, pattern.name) : true;\n const opMatches = pattern.op ? span.op && isMatchingPattern(span.op, pattern.op) : true;\n\n // This check here is only correct because we can guarantee that we ran `isMatchingPattern`\n // for at least one of `nameMatches` and `opMatches`. So in contrary to how this looks,\n // not both op and name actually have to match. This is the most efficient way to check\n // for all combinations of name and op patterns.\n if (nameMatches && opMatches) {\n DEBUG_BUILD && logIgnoredSpan(span);\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Takes a list of spans, and a span that was dropped, and re-parents the child spans of the dropped span to the parent of the dropped span, if possible.\n * This mutates the spans array in place!\n */\nexport function reparentChildSpans(spans: SpanJSON[], dropSpan: SpanJSON): void {\n const droppedSpanParentId = dropSpan.parent_span_id;\n const droppedSpanId = dropSpan.span_id;\n\n // This should generally not happen, as we do not apply this on root spans\n // but to be safe, we just bail in this case\n if (!droppedSpanParentId) {\n return;\n }\n\n for (const span of spans) {\n if (span.parent_span_id === droppedSpanId) {\n span.parent_span_id = droppedSpanParentId;\n }\n }\n}\n\nfunction isStringOrRegExp(value: unknown): value is string | RegExp {\n return typeof value === 'string' || value instanceof RegExp;\n}\n","export const DEFAULT_ENVIRONMENT = 'production';\nexport const DEV_ENVIRONMENT = 'development';\n","import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage';\nimport { extractOrgIdFromClient } from '../utils/dsn';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\nimport { getCapturedScopesOnSpan } from './utils';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\ntype SpanWithMaybeDsc = Span & {\n [FROZEN_DSC_FIELD]?: Partial | undefined;\n};\n\n/**\n * Freeze the given DSC on the given span.\n */\nexport function freezeDscOnSpan(span: Span, dsc: Partial): void {\n const spanWithMaybeDsc = span as SpanWithMaybeDsc;\n addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(trace_id: string, client: Client): DynamicSamplingContext {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n\n // Instead of conditionally adding non-undefined values, we add them and then remove them if needed\n // otherwise, the order of baggage entries changes, which \"breaks\" a bunch of tests etc.\n const dsc: DynamicSamplingContext = {\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n public_key,\n trace_id,\n org_id: extractOrgIdFromClient(client),\n };\n\n client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * Get the dynamic sampling context for the currently active scopes.\n */\nexport function getDynamicSamplingContextFromScope(client: Client, scope: Scope): Partial {\n const propagationContext = scope.getPropagationContext();\n return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly> {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n const rootSpan = getRootSpan(span);\n const rootSpanJson = spanToJSON(rootSpan);\n const rootSpanAttributes = rootSpanJson.data;\n const traceState = rootSpan.spanContext().traceState;\n\n // The span sample rate that was locally applied to the root span should also always be applied to the DSC, even if the DSC is frozen.\n // This is so that the downstream traces/services can use parentSampleRate in their `tracesSampler` to make consistent sampling decisions across the entire trace.\n const rootSpanSampleRate =\n traceState?.get('sentry.sample_rate') ??\n rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ??\n rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE];\n\n function applyLocalSampleRateToDsc(dsc: Partial): Partial {\n if (typeof rootSpanSampleRate === 'number' || typeof rootSpanSampleRate === 'string') {\n dsc.sample_rate = `${rootSpanSampleRate}`;\n }\n return dsc;\n }\n\n // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n const frozenDsc = (rootSpan as SpanWithMaybeDsc)[FROZEN_DSC_FIELD];\n if (frozenDsc) {\n return applyLocalSampleRateToDsc(frozenDsc);\n }\n\n // For OpenTelemetry, we freeze the DSC on the trace state\n const traceStateDsc = traceState?.get('sentry.dsc');\n\n // If the span has a DSC, we want it to take precedence\n const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n if (dscOnTraceState) {\n return applyLocalSampleRateToDsc(dscOnTraceState);\n }\n\n // Else, we generate it from the span\n const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n const name = rootSpanJson.description;\n if (source !== 'url' && name) {\n dsc.transaction = name;\n }\n\n // How can we even land here with hasSpansEnabled() returning false?\n // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n // So we end up with an active span that is not sampled (neither positively nor negatively)\n if (hasSpansEnabled()) {\n dsc.sampled = String(spanIsSampled(rootSpan));\n dsc.sample_rand =\n // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans\n // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span\n traceState?.get('sentry.sample_rand') ??\n // On all other platforms we can actually get the scopes from a root span (we use this as a fallback)\n getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString();\n }\n\n applyLocalSampleRateToDsc(dsc);\n\n client.emit('createDsc', dsc, rootSpan);\n\n return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nexport function spanToBaggageHeader(span: Span): string | undefined {\n const dsc = getDynamicSamplingContextFromSpan(span);\n return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n","import type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils';\n\n/**\n * A Sentry Span that is non-recording, meaning it will not be sent to Sentry.\n */\nexport class SentryNonRecordingSpan implements Span {\n private _traceId: string;\n private _spanId: string;\n\n public constructor(spanContext: SentrySpanArguments = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n return {\n spanId: this._spanId,\n traceId: this._traceId,\n traceFlags: TRACE_FLAG_NONE,\n };\n }\n\n /** @inheritdoc */\n public end(_timestamp?: SpanTimeInput): void {}\n\n /** @inheritdoc */\n public setAttribute(_key: string, _value: SpanAttributeValue | undefined): this {\n return this;\n }\n\n /** @inheritdoc */\n public setAttributes(_values: SpanAttributes): this {\n return this;\n }\n\n /** @inheritdoc */\n public setStatus(_status: SpanStatus): this {\n return this;\n }\n\n /** @inheritdoc */\n public updateName(_name: string): this {\n return this;\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return false;\n }\n\n /** @inheritdoc */\n public addEvent(\n _name: string,\n _attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n _startTime?: SpanTimeInput,\n ): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLink(_link: unknown): this {\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(_links: unknown[]): this {\n return this;\n }\n\n /**\n * This should generally not be used,\n * but we need it for being compliant with the OTEL Span interface.\n *\n * @hidden\n * @internal\n */\n public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n}\n","import type { Primitive } from '../types-hoist/misc';\nimport { isSyntheticEvent, isVueViewModel } from './is';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName, getVueInternalName } from './stacktrace';\n\ntype Prototype = { constructor?: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\ntype MemoFunc = [\n // memoize\n (obj: object) => boolean,\n // unmemoize\n (obj: object) => void,\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 normalized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\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 */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\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: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n ['boolean', 'string'].includes(typeof value) ||\n (typeof value === 'number' && Number.isFinite(value))\n ) {\n return value as Primitive;\n }\n\n const 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 as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value as ObjOrArray)['__sentry_override_normalization_depth__'] === 'number'\n ? ((value as ObjOrArray)['__sentry_override_normalization_depth__'] as number)\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 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 const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch {\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 const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\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 const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const 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 const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\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/* eslint-disable complexity */\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: unknown,\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: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._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 // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return getVueInternalName(value);\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && !Number.isFinite(value)) {\n return `[${value}]`;\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 const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n return prototype?.constructor ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // oxlint-disable-next-line sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder(): MemoFunc {\n const inner = new WeakSet();\n function memoize(obj: object): boolean {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n\n function unmemoize(obj: object): void {\n inner.delete(obj);\n }\n return [memoize, unmemoize];\n}\n","import { getSentryCarrier } from '../carrier';\nimport type { Attachment } from '../types-hoist/attachment';\nimport type { DataCategory } from '../types-hoist/datacategory';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport type {\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n Envelope,\n EnvelopeItemType,\n EventEnvelopeHeaders,\n SpanItem,\n} from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { SdkInfo } from '../types-hoist/sdkinfo';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport type { SpanJSON } from '../types-hoist/span';\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { GLOBAL_OBJ } from './worldwide';\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 */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\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 */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as unknown as E;\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 *\n * If the callback returns true, the rest of the items will be skipped.\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input: string): Uint8Array {\n const carrier = getSentryCarrier(GLOBAL_OBJ);\n return carrier.encodePolyfill ? carrier.encodePolyfill(input) : new TextEncoder().encode(input);\n}\n\n/**\n * Decode a UTF8 array to string.\n */\nfunction decodeUTF8(input: Uint8Array): string {\n const carrier = getSentryCarrier(GLOBAL_OBJ);\n return carrier.decodePolyfill ? carrier.decodePolyfill(input) : new TextDecoder().decode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope): string | Uint8Array {\n const [envHeaders, items] = envelope;\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Parses an envelope\n */\nexport function parseEnvelope(env: string | Uint8Array): Envelope {\n let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n function readBinary(length: number): Uint8Array {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson(): T {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(decodeUTF8(readBinary(i))) as T;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates envelope item for a single span\n */\nexport function createSpanEnvelopeItem(spanJson: Partial): SpanItem {\n const spanHeaders: SpanItem[0] = {\n type: 'span',\n };\n\n return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(attachment: Attachment): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data;\n\n return [\n {\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\ntype OverriddenItemType = Exclude;\n\n// Map of envelope item types to data categories where the category differs from the type.\n// Types that map to themselves (session, attachment, transaction, profile, feedback, span, metric) fall through.\nconst DATA_CATEGORY_OVERRIDES: Record = {\n sessions: 'session',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile_chunk: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n raw_security: 'security',\n log: 'log_item',\n trace_metric: 'metric',\n};\n\nfunction _isOverriddenType(type: EnvelopeItemType): type is OverriddenItemType {\n return type in DATA_CATEGORY_OVERRIDES;\n}\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return _isOverriddenType(type) ? DATA_CATEGORY_OVERRIDES[type] : type;\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\n if (!metadataOrEvent?.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n return {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dynamicSamplingContext,\n }),\n };\n}\n","import type { Client } from './client';\nimport { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext';\nimport type { SentrySpan } from './tracing/sentrySpan';\nimport type { LegacyCSPReport } from './types-hoist/csp';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type {\n DynamicSamplingContext,\n EventEnvelope,\n EventItem,\n RawSecurityEnvelope,\n RawSecurityItem,\n SessionEnvelope,\n SessionItem,\n SpanEnvelope,\n SpanItem,\n} from './types-hoist/envelope';\nimport type { Event } from './types-hoist/event';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport { dsnToString } from './utils/dsn';\nimport {\n createEnvelope,\n createEventEnvelopeHeaders,\n createSpanEnvelopeItem,\n getSdkMetadataForEnvelopeHeader,\n} from './utils/envelope';\nimport { uuid4 } from './utils/misc';\nimport { shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning, spanToJSON } from './utils/spanUtils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n *\n * @internal, exported only for testing\n **/\nexport function _enhanceEventWithSdkInfo(event: Event, newSdkInfo?: SdkInfo): Event {\n if (!newSdkInfo) {\n return event;\n }\n\n const eventSdkInfo = event.sdk || {};\n\n event.sdk = {\n ...eventSdkInfo,\n name: eventSdkInfo.name || newSdkInfo.name,\n version: eventSdkInfo.version || newSdkInfo.version,\n integrations: [...(event.sdk?.integrations || []), ...(newSdkInfo.integrations || [])],\n packages: [...(event.sdk?.packages || []), ...(newSdkInfo.packages || [])],\n settings:\n event.sdk?.settings || newSdkInfo.settings\n ? {\n ...event.sdk?.settings,\n ...newSdkInfo.settings,\n }\n : undefined,\n };\n\n return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): SessionEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem: SessionItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n event: Event,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): EventEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n /*\n Note: Due to TS, event.type may be `replay_event`, theoretically.\n In practice, we never call `createEventEnvelope` with `replay_event` type,\n and we'd have to adjust a looot of types to make this work properly.\n We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n So the safe choice is to really guard against the replay_event type here.\n */\n const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n _enhanceEventWithSdkInfo(event, metadata?.sdk);\n\n const 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 const eventItem: EventItem = [{ type: eventType }, event];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/**\n * Create envelope from Span item.\n *\n * Takes an optional client and runs spans through `beforeSendSpan` if available.\n */\nexport function createSpanEnvelope(spans: [SentrySpan, ...SentrySpan[]], client?: Client): SpanEnvelope {\n function dscHasRequiredProps(dsc: Partial): dsc is DynamicSamplingContext {\n return !!dsc.trace_id && !!dsc.public_key;\n }\n\n // For the moment we'll obtain the DSC from the first span in the array\n // This might need to be changed if we permit sending multiple spans from\n // different segments in one envelope\n const dsc = getDynamicSamplingContextFromSpan(spans[0]);\n\n const dsn = client?.getDsn();\n const tunnel = client?.getOptions().tunnel;\n\n const headers: SpanEnvelope[0] = {\n sent_at: new Date().toISOString(),\n ...(dscHasRequiredProps(dsc) && { trace: dsc }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const { beforeSendSpan, ignoreSpans } = client?.getOptions() || {};\n\n const filteredSpans = ignoreSpans?.length\n ? spans.filter(span => !shouldIgnoreSpan(spanToJSON(span), ignoreSpans))\n : spans;\n const droppedSpans = spans.length - filteredSpans.length;\n\n if (droppedSpans) {\n client?.recordDroppedEvent('before_send', 'span', droppedSpans);\n }\n\n const convertToSpanJSON = beforeSendSpan\n ? (span: SentrySpan) => {\n const spanJson = spanToJSON(span);\n const processedSpan = beforeSendSpan(spanJson);\n\n if (!processedSpan) {\n showSpanDropWarning();\n return spanJson;\n }\n\n return processedSpan;\n }\n : spanToJSON;\n\n const items: SpanItem[] = [];\n for (const span of filteredSpans) {\n const spanJson = convertToSpanJSON(span);\n if (spanJson) {\n items.push(createSpanEnvelopeItem(spanJson));\n }\n }\n\n return createEnvelope(headers, items);\n}\n\n/**\n * Create an Envelope from a CSP report.\n */\nexport function createRawSecurityEnvelope(\n report: LegacyCSPReport,\n dsn: DsnComponents,\n tunnel?: string,\n release?: string,\n environment?: string,\n): RawSecurityEnvelope {\n const envelopeHeaders = {\n event_id: uuid4(),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n };\n\n const eventItem: RawSecurityItem = [\n { type: 'raw_security', sentry_release: release, sentry_environment: environment },\n report,\n ];\n\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { Span } from '../types-hoist/span';\nimport { debug } from '../utils/debug-logger';\nimport { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Print a log message for a started span.\n */\nexport function logSpanStart(span: Span): void {\n if (!DEBUG_BUILD) return;\n\n const { description = '< unknown name >', op = '< unknown op >', parent_span_id: parentSpanId } = spanToJSON(span);\n const { spanId } = span.spanContext();\n\n const sampled = spanIsSampled(span);\n const rootSpan = getRootSpan(span);\n const isRootSpan = rootSpan === span;\n\n const header = `[Tracing] Starting ${sampled ? 'sampled' : 'unsampled'} ${isRootSpan ? 'root ' : ''}span`;\n\n const infoParts: string[] = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`];\n\n if (parentSpanId) {\n infoParts.push(`parent ID: ${parentSpanId}`);\n }\n\n if (!isRootSpan) {\n const { op, description } = spanToJSON(rootSpan);\n infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`);\n if (op) {\n infoParts.push(`root op: ${op}`);\n }\n if (description) {\n infoParts.push(`root description: ${description}`);\n }\n }\n\n debug.log(`${header}\n ${infoParts.join('\\n ')}`);\n}\n\n/**\n * Print a log message for an ended span.\n */\nexport function logSpanEnd(span: Span): void {\n if (!DEBUG_BUILD) return;\n\n const { description = '< unknown name >', op = '< unknown op >' } = spanToJSON(span);\n const { spanId } = span.spanContext();\n const rootSpan = getRootSpan(span);\n const isRootSpan = rootSpan === span;\n\n const msg = `[Tracing] Finishing \"${op}\" ${isRootSpan ? 'root ' : ''}span \"${description}\" with ID ${spanId}`;\n debug.log(msg);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT,\n SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE,\n} from '../semanticAttributes';\nimport type { Measurements, MeasurementUnit } from '../types-hoist/measurement';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils';\n\n/**\n * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span\n * as the 4th parameter.\n */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit, activeSpan = getActiveSpan()): void {\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n\n if (rootSpan) {\n DEBUG_BUILD && debug.log(`[Measurement] Setting measurement on root span: ${name} = ${value} ${unit}`);\n rootSpan.addEvent(name, {\n [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value,\n [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit as string,\n });\n }\n}\n\n/**\n * Convert timed events to measurements.\n */\nexport function timedEventsToMeasurements(events: TimedEvent[]): Measurements | undefined {\n if (!events || events.length === 0) {\n return undefined;\n }\n\n const measurements: Measurements = {};\n events.forEach(event => {\n const attributes = event.attributes || {};\n const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] as MeasurementUnit | undefined;\n const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] as number | undefined;\n\n if (typeof unit === 'string' && typeof value === 'number') {\n measurements[event.name] = { value, unit };\n }\n });\n\n return measurements;\n}\n","import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { createSpanEnvelope } from '../envelope';\nimport {\n SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME,\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../semanticAttributes';\nimport type { SpanEnvelope } from '../types-hoist/envelope';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanLink } from '../types-hoist/link';\nimport type {\n SentrySpanArguments,\n Span,\n SpanAttributes,\n SpanAttributeValue,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n} from '../types-hoist/span';\nimport type { SpanStatus } from '../types-hoist/spanStatus';\nimport type { TimedEvent } from '../types-hoist/timedEvent';\nimport { debug } from '../utils/debug-logger';\nimport { generateSpanId, generateTraceId } from '../utils/propagationContext';\nimport {\n convertSpanLinksForEnvelope,\n getRootSpan,\n getSpanDescendants,\n getStatusMessage,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTransactionTraceContext,\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanEnd } from './logSpans';\nimport { timedEventsToMeasurements } from './measurement';\nimport { getCapturedScopesOnSpan } from './utils';\n\nconst MAX_SPAN_COUNT = 1000;\n\n/**\n * Span contains all data about a span\n */\nexport class SentrySpan implements Span {\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n protected _links?: SpanLink[];\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatus;\n /** The timed events added to this span. */\n protected _events: TimedEvent[];\n\n /** if true, treat span as a standalone span (not part of a transaction) */\n private _isStandaloneSpan?: boolean;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startSpan()`\n * or other span methods.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext: SentrySpanArguments = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n this._links = spanContext.links;\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n this._name = spanContext.name;\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.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n\n this._events = [];\n\n this._isStandaloneSpan = spanContext.isStandalone;\n\n // If the span is already ended, ensure we finalize the span immediately\n if (this._endTime) {\n this._onSpanEnded();\n }\n }\n\n /** @inheritDoc */\n public addLink(link: SpanLink): this {\n if (this._links) {\n this._links.push(link);\n } else {\n this._links = [link];\n }\n return this;\n }\n\n /** @inheritDoc */\n public addLinks(links: SpanLink[]): this {\n if (this._links) {\n this._links.push(...links);\n } else {\n this._links = links;\n }\n return this;\n }\n\n /**\n * This should generally not be used,\n * but it is needed for being compliant with the OTEL Span interface.\n *\n * @hidden\n * @internal\n */\n public recordException(_exception: unknown, _time?: number | undefined): void {\n // noop\n }\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /** @inheritdoc */\n public setAttribute(key: string, value: SpanAttributeValue | undefined): this {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n\n return this;\n }\n\n /** @inheritdoc */\n public setAttributes(attributes: SpanAttributes): this {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n return this;\n }\n\n /**\n * This should generally not be used,\n * but we need it for browser tracing where we want to adjust the start time afterwards.\n * USE THIS WITH CAUTION!\n *\n * @hidden\n * @internal\n */\n public updateStartTime(timeInput: SpanTimeInput): void {\n this._startTime = spanTimeInputToSeconds(timeInput);\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatus): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom');\n return this;\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n logSpanEnd(this);\n\n this._onSpanEnded();\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n public getSpanJSON(): SpanJSON {\n return {\n data: this._attributes,\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: getStatusMessage(this._status),\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n measurements: timedEventsToMeasurements(this._events),\n is_segment: (this._isStandaloneSpan && getRootSpan(this) === this) || undefined,\n segment_id: this._isStandaloneSpan ? getRootSpan(this).spanContext().spanId : undefined,\n links: convertSpanLinksForEnvelope(this._links),\n };\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * @inheritdoc\n */\n public addEvent(\n name: string,\n attributesOrStartTime?: SpanAttributes | SpanTimeInput,\n startTime?: SpanTimeInput,\n ): this {\n DEBUG_BUILD && debug.log('[Tracing] Adding an event to span:', name);\n\n const time = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || timestampInSeconds();\n const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {};\n\n const event: TimedEvent = {\n name,\n time: spanTimeInputToSeconds(time),\n attributes,\n };\n\n this._events.push(event);\n\n return this;\n }\n\n /**\n * This method should generally not be used,\n * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set.\n * USE THIS WITH CAUTION!\n * @internal\n * @hidden\n * @experimental\n */\n public isStandaloneSpan(): boolean {\n return !!this._isStandaloneSpan;\n }\n\n /** Emit `spanEnd` when the span is ended. */\n private _onSpanEnded(): void {\n const client = getClient();\n if (client) {\n client.emit('spanEnd', this);\n }\n\n // A segment span is basically the root span of a local span tree.\n // So for now, this is either what we previously refer to as the root span,\n // or a standalone span.\n const isSegmentSpan = this._isStandaloneSpan || this === getRootSpan(this);\n\n if (!isSegmentSpan) {\n return;\n }\n\n // if this is a standalone span, we send it immediately\n if (this._isStandaloneSpan) {\n if (this._sampled) {\n sendSpanEnvelope(createSpanEnvelope([this], client));\n } else {\n DEBUG_BUILD &&\n debug.log('[Tracing] Discarding standalone span because its trace was not chosen to be sampled.');\n if (client) {\n client.recordDroppedEvent('sample_rate', 'span');\n }\n }\n return;\n }\n\n const transactionEvent = this._convertSpanToTransaction();\n if (transactionEvent) {\n const scope = getCapturedScopesOnSpan(this).scope || getCurrentScope();\n scope.captureEvent(transactionEvent);\n }\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n private _convertSpanToTransaction(): TransactionEvent | undefined {\n // We can only convert finished spans\n if (!isFullFinishedSpan(spanToJSON(this))) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && debug.warn('Transaction has no name, falling back to ``.');\n this._name = '';\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n const normalizedRequest = capturedSpanScope?.getScopeData().sdkProcessingMetadata?.normalizedRequest;\n\n if (this._sampled !== true) {\n return undefined;\n }\n\n // The transaction span itself as well as any potential standalone spans should be filtered out\n const finishedSpans = getSpanDescendants(this).filter(span => span !== this && !isStandaloneSpan(span));\n\n const spans = finishedSpans.map(span => spanToJSON(span)).filter(isFullFinishedSpan);\n\n const source = this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n // remove internal root span attributes we don't need to send.\n /* eslint-disable @typescript-eslint/no-dynamic-delete */\n delete this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n spans.forEach(span => {\n delete span.data[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n });\n // eslint-enabled-next-line @typescript-eslint/no-dynamic-delete\n\n const transaction: TransactionEvent = {\n contexts: {\n trace: spanToTransactionTraceContext(this),\n },\n spans:\n // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here\n // we do not use spans anymore after this point\n spans.length > MAX_SPAN_COUNT\n ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n : spans,\n start_timestamp: this._startTime,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n capturedSpanScope,\n capturedSpanIsolationScope,\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n },\n request: normalizedRequest,\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const measurements = timedEventsToMeasurements(this._events);\n const hasMeasurements = measurements && Object.keys(measurements).length;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\n debug.log(\n '[Measurements] Adding measurements to transaction event',\n JSON.stringify(measurements, undefined, 2),\n );\n transaction.measurements = measurements;\n }\n\n return transaction;\n }\n}\n\nfunction isSpanTimeInput(value: undefined | SpanAttributes | SpanTimeInput): value is SpanTimeInput {\n return (value && typeof value === 'number') || value instanceof Date || Array.isArray(value);\n}\n\n// We want to filter out any incomplete SpanJSON objects\nfunction isFullFinishedSpan(input: Partial): input is SpanJSON {\n return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id;\n}\n\n/** `SentrySpan`s can be sent as a standalone span rather than belonging to a transaction */\nfunction isStandaloneSpan(span: Span): boolean {\n return span instanceof SentrySpan && span.isStandaloneSpan();\n}\n\n/**\n * Sends a `SpanEnvelope`.\n *\n * Note: If the envelope's spans are dropped, e.g. via `beforeSendSpan`,\n * the envelope will not be sent either.\n */\nfunction sendSpanEnvelope(envelope: SpanEnvelope): void {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const spanItems = envelope[1];\n if (!spanItems || spanItems.length === 0) {\n client.recordDroppedEvent('before_send', 'span');\n return;\n }\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n","import { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike';\nimport { isThenable } from '../utils/is';\n\n/* eslint-disable */\n// Vendor \"Awaited\" in to be TS 3.8 compatible\ntype AwaitedPromise = T extends null | undefined\n ? T // special case for `null | undefined` when not in `--strictNullChecks` mode\n : T extends object & { then(onfulfilled: infer F, ...args: infer _): any } // `await` only unwraps object types with a callable `then`. Non-object types are not unwrapped\n ? F extends (value: infer V, ...args: infer _) => any // if the argument to `then` is callable, extracts the first argument\n ? V // normally this would recursively unwrap, but this is not possible in TS3.8\n : never // the argument to `then` was not callable\n : T; // non-object or non-thenable\n/* eslint-enable */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors Promise, PromiseValue = AwaitedPromise>>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: PromiseValue) => void,\n): ReturnType;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function handleCallbackErrors any>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally?: () => void,\n onSuccess?: (result: ReturnType) => void,\n): ReturnType;\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n ValueType = ReturnType,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n onFinally: () => void = () => {},\n onSuccess: (result: ValueType | AwaitedPromise) => void = () => {},\n): ValueType {\n let maybePromiseResult: ReturnType;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally, onSuccess);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n *\n * For thenable objects with extra methods (like jQuery's jqXHR),\n * this function preserves those methods by wrapping the original thenable in a Proxy\n * that intercepts .then() calls to apply error handling while forwarding all other\n * properties to the original object.\n * This allows code like `startSpan(() => $.ajax(...)).abort()` to work correctly.\n */\nfunction maybeHandlePromiseRejection(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n onSuccess: (result: MaybePromise | AwaitedPromise) => void,\n): MaybePromise {\n if (isThenable(value)) {\n return chainAndCopyPromiseLike(\n value as MaybePromise & PromiseLike> & Record,\n result => {\n onFinally();\n onSuccess(result as Awaited);\n },\n err => {\n onError(err);\n onFinally();\n },\n ) as MaybePromise;\n }\n // Non-thenable value - call callbacks immediately and return as-is\n onFinally();\n onSuccess(value);\n return value;\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { CoreOptions } from '../types-hoist/options';\nimport type { SamplingContext } from '../types-hoist/samplingcontext';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\n\n/**\n * Makes a sampling decision for the given options.\n *\n * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n */\nexport function sampleSpan(\n options: Pick,\n samplingContext: SamplingContext,\n sampleRand: number,\n): [sampled: boolean, sampleRate?: number, localSampleRateWasApplied?: boolean] {\n // nothing to do if span recording is not enabled\n if (!hasSpansEnabled(options)) {\n return [false];\n }\n\n let localSampleRateWasApplied = undefined;\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({\n ...samplingContext,\n inheritOrSampleWith: fallbackSampleRate => {\n // If we have an incoming parent sample rate, we'll just use that one.\n // The sampling decision will be inherited because of the sample_rand that was generated when the trace reached the incoming boundaries of the SDK.\n if (typeof samplingContext.parentSampleRate === 'number') {\n return samplingContext.parentSampleRate;\n }\n\n // Fallback if parent sample rate is not on the incoming trace (e.g. if there is no baggage)\n // This is to provide backwards compatibility if there are incoming traces from older SDKs that don't send a parent sample rate or a sample rand. In these cases we just want to force either a sampling decision on the downstream traces via the sample rate.\n if (typeof samplingContext.parentSampled === 'boolean') {\n return Number(samplingContext.parentSampled);\n }\n\n return fallbackSampleRate;\n },\n });\n localSampleRateWasApplied = true;\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n localSampleRateWasApplied = true;\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get.\n // (The only valid values are booleans or numbers between 0 and 1.)\n const parsedSampleRate = parseSampleRate(sampleRate);\n\n if (parsedSampleRate === undefined) {\n DEBUG_BUILD &&\n debug.warn(\n `[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n sampleRate,\n )} of type ${JSON.stringify(typeof sampleRate)}.`,\n );\n return [false];\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 (!parsedSampleRate) {\n DEBUG_BUILD &&\n debug.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 return [false, parsedSampleRate, localSampleRateWasApplied];\n }\n\n // We always compare the sample rand for the current execution context against the chosen sample rate.\n // Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n const shouldSample = sampleRand < parsedSampleRate;\n\n // if we're not going to keep it, we're done\n if (!shouldSample) {\n DEBUG_BUILD &&\n debug.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n }\n\n return [shouldSample, parsedSampleRate, localSampleRateWasApplied];\n}\n","/* eslint-disable max-lines */\n\nimport { getAsyncContextStrategy } from '../asyncContext';\nimport type { AsyncContextStrategy } from '../asyncContext/types';\nimport { getMainCarrier } from '../carrier';\nimport { getClient, getCurrentScope, getIsolationScope, withScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { SentrySpanArguments, Span, SpanTimeInput } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { baggageHeaderToDynamicSamplingContext } from '../utils/baggage';\nimport { debug } from '../utils/debug-logger';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { parseSampleRate } from '../utils/parseSampleRate';\nimport { generateTraceId } from '../utils/propagationContext';\nimport { safeMathRandom } from '../utils/randomSafeContext';\nimport { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope';\nimport { addChildSpanToSpan, getRootSpan, spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport { propagationContextFromHeaders, shouldContinueTrace } from '../utils/tracing';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { logSpanStart } from './logSpans';\nimport { sampleSpan } from './sampling';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR } from './spanstatus';\nimport { setCapturedScopesOnSpan } from './utils';\n\nconst SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T {\n const acs = getAcs();\n if (acs.startSpan) {\n return acs.startSpan(options, callback);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n // We still need to fork a potentially passed scope, as we set the active span on it\n // and we need to ensure that it is cleaned up properly once the span ends.\n const customForkedScope = customScope?.clone();\n\n return withScope(customForkedScope, () => {\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? new SentryNonRecordingSpan()\n : createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n\n _setSpanForScope(scope, activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n const { status } = spanToJSON(activeSpan);\n if (activeSpan.isRecording() && (!status || status === 'ok')) {\n activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n },\n () => {\n activeSpan.end();\n },\n );\n });\n });\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. Use `span.end()` to end the span.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\n const acs = getAcs();\n if (acs.startSpanManual) {\n return acs.startSpanManual(options, callback);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n const customForkedScope = customScope?.clone();\n\n return withScope(customForkedScope, () => {\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? new SentryNonRecordingSpan()\n : createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n\n _setSpanForScope(scope, activeSpan);\n\n return handleCallbackErrors(\n // We pass the `finish` function to the callback, so the user can finish the span manually\n // this is mainly here for historic purposes because previously, we instructed users to call\n // `finish` instead of `span.end()` to also clean up the scope. Nowadays, calling `span.end()`\n // or `finish` has the same effect and we simply leave it here to avoid breaking user code.\n () => callback(activeSpan, () => activeSpan.end()),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n const { status } = spanToJSON(activeSpan);\n if (activeSpan.isRecording() && (!status || status === 'ok')) {\n activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\n const acs = getAcs();\n if (acs.startInactiveSpan) {\n return acs.startInactiveSpan(options);\n }\n\n const spanArguments = parseSentrySpanArguments(options);\n const { forceTransaction, parentSpan: customParentSpan } = options;\n\n // If `options.scope` is defined, we use this as as a wrapper,\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = options.scope\n ? (callback: () => Span) => withScope(options.scope, callback)\n : customParentSpan !== undefined\n ? (callback: () => Span) => withActiveSpan(customParentSpan, callback)\n : (callback: () => Span) => callback();\n\n return wrapper(() => {\n const scope = getCurrentScope();\n const parentSpan = getParentSpan(scope, customParentSpan);\n\n const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return new SentryNonRecordingSpan();\n }\n\n return createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n });\n });\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n */\nexport const continueTrace = (\n options: {\n sentryTrace: Parameters[0];\n baggage: Parameters[1];\n },\n callback: () => V,\n): V => {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.continueTrace) {\n return acs.continueTrace(options, callback);\n }\n\n const { sentryTrace, baggage } = options;\n\n const client = getClient();\n const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n if (client && !shouldContinueTrace(client, incomingDsc?.org_id)) {\n return startNewTrace(callback);\n }\n\n return withScope(scope => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n _setSpanForScope(scope, undefined);\n return callback();\n });\n};\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will not be attached to a parent span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T {\n const acs = getAcs();\n if (acs.withActiveSpan) {\n return acs.withActiveSpan(span, callback);\n }\n\n return withScope(scope => {\n _setSpanForScope(scope, span || undefined);\n return callback(scope);\n });\n}\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nexport function suppressTracing(callback: () => T): T {\n const acs = getAcs();\n\n if (acs.suppressTracing) {\n return acs.suppressTracing(callback);\n }\n\n return withScope(scope => {\n // Note: We do not wait for the callback to finish before we reset the metadata\n // the reason for this is that otherwise, in the browser this can lead to very weird behavior\n // as there is only a single top scope, if the callback takes longer to finish,\n // other, unrelated spans may also be suppressed, which we do not want\n // so instead, we only suppress tracing synchronoysly in the browser\n scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true });\n const res = callback();\n scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: undefined });\n return res;\n });\n}\n\n/**\n * Starts a new trace for the duration of the provided callback. Spans started within the\n * callback will be part of the new trace instead of a potentially previously started trace.\n *\n * Important: Only use this function if you want to override the default trace lifetime and\n * propagation mechanism of the SDK for the duration and scope of the provided callback.\n * The newly created trace will also be the root of a new distributed trace, for example if\n * you make http requests within the callback.\n * This function might be useful if the operation you want to instrument should not be part\n * of a potentially ongoing trace.\n *\n * Default behavior:\n * - Server-side: A new trace is started for each incoming request.\n * - Browser: A new trace is started for each page our route. Navigating to a new route\n * or page will automatically create a new trace.\n */\nexport function startNewTrace(callback: () => T): T {\n const acs = getAcs();\n if (acs.startNewTrace) {\n return acs.startNewTrace(callback);\n }\n\n return withScope(scope => {\n scope.setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: safeMathRandom(),\n });\n DEBUG_BUILD && debug.log(`Starting a new trace with id ${scope.getPropagationContext().traceId}`);\n return withActiveSpan(null, callback);\n });\n}\n\nfunction createChildOrRootSpan({\n parentSpan,\n spanArguments,\n forceTransaction,\n scope,\n}: {\n parentSpan: SentrySpan | undefined;\n spanArguments: SentrySpanArguments;\n forceTransaction?: boolean;\n scope: Scope;\n}): Span {\n if (!hasSpansEnabled()) {\n const span = new SentryNonRecordingSpan();\n\n // If this is a root span, we ensure to freeze a DSC\n // So we can have at least partial data here\n if (forceTransaction || !parentSpan) {\n const dsc = {\n sampled: 'false',\n sample_rate: '0',\n transaction: spanArguments.name,\n ...getDynamicSamplingContextFromSpan(span),\n } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n }\n\n return span;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: Span;\n if (parentSpan && !forceTransaction) {\n span = _startChildSpan(parentSpan, scope, spanArguments);\n addChildSpanToSpan(parentSpan, span);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const parentSampled = spanIsSampled(parentSpan);\n\n span = _startRootSpan(\n {\n traceId,\n parentSpanId,\n ...spanArguments,\n },\n scope,\n parentSampled,\n );\n\n freezeDscOnSpan(span, dsc);\n } else {\n const {\n traceId,\n dsc,\n parentSpanId,\n sampled: parentSampled,\n } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n span = _startRootSpan(\n {\n traceId,\n parentSpanId,\n ...spanArguments,\n },\n scope,\n parentSampled,\n );\n\n if (dsc) {\n freezeDscOnSpan(span, dsc);\n }\n }\n\n logSpanStart(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to SentrySpanArguments.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n */\nfunction parseSentrySpanArguments(options: StartSpanOptions): SentrySpanArguments {\n const exp = options.experimental || {};\n const initialCtx: SentrySpanArguments = {\n isStandalone: exp.standalone,\n ...options,\n };\n\n if (options.startTime) {\n const ctx: SentrySpanArguments & { startTime?: SpanTimeInput } = { ...initialCtx };\n ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return initialCtx;\n}\n\nfunction getAcs(): AsyncContextStrategy {\n const carrier = getMainCarrier();\n return getAsyncContextStrategy(carrier);\n}\n\nfunction _startRootSpan(spanArguments: SentrySpanArguments, scope: Scope, parentSampled?: boolean): SentrySpan {\n const client = getClient();\n const options: Partial = client?.getOptions() || {};\n\n const { name = '' } = spanArguments;\n\n const mutableSpanSamplingData = { spanAttributes: { ...spanArguments.attributes }, spanName: name, parentSampled };\n\n // we don't care about the decision for the moment; this is just a placeholder\n client?.emit('beforeSampling', mutableSpanSamplingData, { decision: false });\n\n // If hook consumers override the parentSampled flag, we will use that value instead of the actual one\n const finalParentSampled = mutableSpanSamplingData.parentSampled ?? parentSampled;\n const finalAttributes = mutableSpanSamplingData.spanAttributes;\n\n const currentPropagationContext = scope.getPropagationContext();\n const [sampled, sampleRate, localSampleRateWasApplied] = scope.getScopeData().sdkProcessingMetadata[\n SUPPRESS_TRACING_KEY\n ]\n ? [false]\n : sampleSpan(\n options,\n {\n name,\n parentSampled: finalParentSampled,\n attributes: finalAttributes,\n parentSampleRate: parseSampleRate(currentPropagationContext.dsc?.sample_rate),\n },\n currentPropagationContext.sampleRand,\n );\n\n const rootSpan = new SentrySpan({\n ...spanArguments,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]:\n sampleRate !== undefined && localSampleRateWasApplied ? sampleRate : undefined,\n ...finalAttributes,\n },\n sampled,\n });\n\n if (!sampled && client) {\n DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n if (client) {\n client.emit('spanStart', rootSpan);\n }\n\n return rootSpan;\n}\n\n/**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * This inherits the sampling decision from the parent span.\n */\nfunction _startChildSpan(parentSpan: Span, scope: Scope, spanArguments: SentrySpanArguments): Span {\n const { spanId, traceId } = parentSpan.spanContext();\n const sampled = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] ? false : spanIsSampled(parentSpan);\n\n const childSpan = sampled\n ? new SentrySpan({\n ...spanArguments,\n parentSpanId: spanId,\n traceId,\n sampled,\n })\n : new SentryNonRecordingSpan({ traceId });\n\n addChildSpanToSpan(parentSpan, childSpan);\n\n const client = getClient();\n if (client) {\n client.emit('spanStart', childSpan);\n // If it has an endTimestamp, it's already ended\n if (spanArguments.endTimestamp) {\n client.emit('spanEnd', childSpan);\n }\n }\n\n return childSpan;\n}\n\nfunction getParentSpan(scope: Scope, customParentSpan: Span | null | undefined): SentrySpan | undefined {\n // always use the passed in span directly\n if (customParentSpan) {\n return customParentSpan as SentrySpan;\n }\n\n // This is different from `undefined` as it means the user explicitly wants no parent span\n if (customParentSpan === null) {\n return undefined;\n }\n\n const span = _getSpanForScope(scope) as SentrySpan | undefined;\n\n if (!span) {\n return undefined;\n }\n\n const client = getClient();\n const options: Partial = client ? client.getOptions() : {};\n if (options.parentSpanIsAlwaysRootSpan) {\n return getRootSpan(span) as SentrySpan;\n }\n\n return span;\n}\n\nfunction getActiveSpanWrapper(parentSpan: Span | undefined | null): (callback: () => T) => T {\n return parentSpan !== undefined\n ? (callback: () => T) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback: () => T) => callback();\n}\n","import { getClient, getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON } from '../semanticAttributes';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport type { Span } from '../types-hoist/span';\nimport type { StartSpanOptions } from '../types-hoist/startSpanOptions';\nimport { debug } from '../utils/debug-logger';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled';\nimport { shouldIgnoreSpan } from '../utils/should-ignore-span';\nimport { _setSpanForScope } from '../utils/spanOnScope';\nimport {\n getActiveSpan,\n getSpanDescendants,\n removeChildSpanFromSpan,\n spanTimeInputToSeconds,\n spanToJSON,\n} from '../utils/spanUtils';\nimport { timestampInSeconds } from '../utils/time';\nimport { freezeDscOnSpan, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan';\nimport { SentrySpan } from './sentrySpan';\nimport { SPAN_STATUS_ERROR, SPAN_STATUS_OK } from './spanstatus';\nimport { startInactiveSpan } from './trace';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1_000,\n finalTimeout: 30_000,\n childSpanTimeout: 15_000,\n};\n\nconst FINISH_REASON_HEARTBEAT_FAILED = 'heartbeatFailed';\nconst FINISH_REASON_IDLE_TIMEOUT = 'idleTimeout';\nconst FINISH_REASON_FINAL_TIMEOUT = 'finalTimeout';\nconst FINISH_REASON_EXTERNAL_FINISH = 'externalFinish';\nconst FINISH_REASON_CANCELLED = 'cancelled';\n\n// unused\nconst FINISH_REASON_DOCUMENT_HIDDEN = 'documentHidden';\n\n// unused in this file, but used in BrowserTracing\nconst FINISH_REASON_INTERRUPTED = 'interactionInterrupted';\n\ntype IdleSpanFinishReason =\n | typeof FINISH_REASON_CANCELLED\n | typeof FINISH_REASON_DOCUMENT_HIDDEN\n | typeof FINISH_REASON_EXTERNAL_FINISH\n | typeof FINISH_REASON_FINAL_TIMEOUT\n | typeof FINISH_REASON_HEARTBEAT_FAILED\n | typeof FINISH_REASON_IDLE_TIMEOUT\n | typeof FINISH_REASON_INTERRUPTED;\n\ninterface IdleSpanOptions {\n /**\n * The time that has to pass without any span being created.\n * If this time is exceeded, the idle span will finish.\n */\n idleTimeout: number;\n /**\n * The max. time an idle span may run.\n * If this time is exceeded, the idle span will finish no matter what.\n */\n finalTimeout: number;\n /**\n * The max. time a child span may run.\n * If the time since the last span was started exceeds this time, the idle span will finish.\n */\n childSpanTimeout?: number;\n /**\n * When set to `true`, will disable the idle timeout and child timeout\n * until the `idleSpanEnableAutoFinish` hook is emitted for the idle span.\n * The final timeout mechanism will not be affected by this option,\n * meaning the idle span will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n disableAutoFinish?: boolean;\n\n /** Allows to configure a hook that is called when the idle span is ended, before it is processed. */\n beforeSpanEnd?: (span: Span) => void;\n\n /**\n * If set to `true`, the idle span will be trimmed to the latest span end timestamp of its children.\n *\n * @default `true`.\n */\n trimIdleSpanEndTimestamp?: boolean;\n}\n\n/**\n * An idle span is a span that automatically finishes. It does this by tracking child spans as activities.\n * An idle span is always the active span.\n */\nexport function startIdleSpan(startSpanOptions: StartSpanOptions, options: Partial = {}): Span {\n // Activities store a list of active spans\n const activities = new Map();\n\n // We should not use heartbeat if we finished a span\n let _finished = false;\n\n // Timer that tracks idleTimeout\n let _idleTimeoutID: ReturnType | undefined;\n\n // Timer that tracks maxSpanTime for child spans\n let _childSpanTimeoutID: ReturnType | undefined;\n\n // The reason why the span was finished\n let _finishReason: IdleSpanFinishReason = FINISH_REASON_EXTERNAL_FINISH;\n\n let _autoFinishAllowed: boolean = !options.disableAutoFinish;\n\n const _cleanupHooks: (() => void)[] = [];\n\n const {\n idleTimeout = TRACING_DEFAULTS.idleTimeout,\n finalTimeout = TRACING_DEFAULTS.finalTimeout,\n childSpanTimeout = TRACING_DEFAULTS.childSpanTimeout,\n beforeSpanEnd,\n trimIdleSpanEndTimestamp = true,\n } = options;\n\n const client = getClient();\n\n if (!client || !hasSpansEnabled()) {\n const span = new SentryNonRecordingSpan();\n\n const dsc = {\n sample_rate: '0',\n sampled: 'false',\n ...getDynamicSamplingContextFromSpan(span),\n } satisfies Partial;\n freezeDscOnSpan(span, dsc);\n\n return span;\n }\n\n const scope = getCurrentScope();\n const previousActiveSpan = getActiveSpan();\n const span = _startIdleSpan(startSpanOptions);\n\n // We patch span.end to ensure we can run some things before the span is ended\n // eslint-disable-next-line @typescript-eslint/unbound-method\n span.end = new Proxy(span.end, {\n apply(target, thisArg, args: Parameters) {\n if (beforeSpanEnd) {\n beforeSpanEnd(span);\n }\n\n // If the span is non-recording, nothing more to do here...\n // This is the case if tracing is enabled but this specific span was not sampled\n if (thisArg instanceof SentryNonRecordingSpan) {\n return;\n }\n\n // Just ensuring that this keeps working, even if we ever have more arguments here\n const [definedEndTimestamp, ...rest] = args;\n const timestamp = definedEndTimestamp || timestampInSeconds();\n const spanEndTimestamp = spanTimeInputToSeconds(timestamp);\n\n // Ensure we end with the last span timestamp, if possible\n const spans = getSpanDescendants(span).filter(child => child !== span);\n\n const spanJson = spanToJSON(span);\n\n // If we have no spans, we just end, nothing else to do here\n // Likewise, if users explicitly ended the span, we simply end the span without timestamp adjustment\n if (!spans.length || !trimIdleSpanEndTimestamp) {\n onIdleSpanEnded(spanEndTimestamp);\n return Reflect.apply(target, thisArg, [spanEndTimestamp, ...rest]);\n }\n\n const ignoreSpans = client.getOptions().ignoreSpans;\n\n const latestSpanEndTimestamp = spans?.reduce((acc: number | undefined, current) => {\n const currentSpanJson = spanToJSON(current);\n if (!currentSpanJson.timestamp) {\n return acc;\n }\n // Ignored spans will get dropped later (in the client) but since we already adjust\n // the idle span end timestamp here, we can already take to-be-ignored spans out of\n // the calculation here.\n if (ignoreSpans && shouldIgnoreSpan(currentSpanJson, ignoreSpans)) {\n return acc;\n }\n return acc ? Math.max(acc, currentSpanJson.timestamp) : currentSpanJson.timestamp;\n }, undefined);\n\n // In reality this should always exist here, but type-wise it may be undefined...\n const spanStartTimestamp = spanJson.start_timestamp;\n\n // The final endTimestamp should:\n // * Never be before the span start timestamp\n // * Be the latestSpanEndTimestamp, if there is one, and it is smaller than the passed span end timestamp\n // * Otherwise be the passed end timestamp\n // Final timestamp can never be after finalTimeout\n const endTimestamp = Math.min(\n spanStartTimestamp ? spanStartTimestamp + finalTimeout / 1000 : Infinity,\n Math.max(spanStartTimestamp || -Infinity, Math.min(spanEndTimestamp, latestSpanEndTimestamp || Infinity)),\n );\n\n onIdleSpanEnded(endTimestamp);\n return Reflect.apply(target, thisArg, [endTimestamp, ...rest]);\n },\n });\n\n /**\n * Cancels the existing idle timeout, if there is one.\n */\n function _cancelIdleTimeout(): void {\n if (_idleTimeoutID) {\n clearTimeout(_idleTimeoutID);\n _idleTimeoutID = undefined;\n }\n }\n\n /**\n * Cancels the existing child span timeout, if there is one.\n */\n function _cancelChildSpanTimeout(): void {\n if (_childSpanTimeoutID) {\n clearTimeout(_childSpanTimeoutID);\n _childSpanTimeoutID = undefined;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n function _restartIdleTimeout(endTimestamp?: number): void {\n _cancelIdleTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && activities.size === 0 && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_IDLE_TIMEOUT;\n span.end(endTimestamp);\n }\n }, idleTimeout);\n }\n\n /**\n * Restarts child span timeout, if there is none running it will start one.\n */\n function _restartChildSpanTimeout(endTimestamp?: number): void {\n _cancelChildSpanTimeout();\n _idleTimeoutID = setTimeout(() => {\n if (!_finished && _autoFinishAllowed) {\n _finishReason = FINISH_REASON_HEARTBEAT_FAILED;\n span.end(endTimestamp);\n }\n }, childSpanTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n function _pushActivity(spanId: string): void {\n _cancelIdleTimeout();\n activities.set(spanId, true);\n\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartChildSpanTimeout(endTimestamp + childSpanTimeout / 1000);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n function _popActivity(spanId: string): void {\n if (activities.has(spanId)) {\n activities.delete(spanId);\n }\n\n if (activities.size === 0) {\n const endTimestamp = timestampInSeconds();\n // We need to add the timeout here to have the real endtimestamp of the idle span\n // Remember timestampInSeconds is in seconds, timeout is in ms\n _restartIdleTimeout(endTimestamp + idleTimeout / 1000);\n _cancelChildSpanTimeout();\n }\n }\n\n function onIdleSpanEnded(endTimestamp: number): void {\n _finished = true;\n activities.clear();\n\n _cleanupHooks.forEach(cleanup => cleanup());\n\n _setSpanForScope(scope, previousActiveSpan);\n\n const spanJSON = spanToJSON(span);\n\n const { start_timestamp: startTimestamp } = spanJSON;\n // This should never happen, but to make TS happy...\n if (!startTimestamp) {\n return;\n }\n\n const attributes = spanJSON.data;\n if (!attributes[SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, _finishReason);\n }\n\n // Set span status to 'ok' if it hasn't been explicitly set to an error status\n const currentStatus = spanJSON.status;\n if (!currentStatus || currentStatus === 'unknown') {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n debug.log(`[Tracing] Idle span \"${spanJSON.op}\" finished`);\n\n const childSpans = getSpanDescendants(span).filter(child => child !== span);\n\n let discardedSpans = 0;\n childSpans.forEach(childSpan => {\n // We cancel all pending spans with status \"cancelled\" to indicate the idle span was finished early\n if (childSpan.isRecording()) {\n childSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'cancelled' });\n childSpan.end(endTimestamp);\n DEBUG_BUILD &&\n debug.log('[Tracing] Cancelling span since span ended early', JSON.stringify(childSpan, undefined, 2));\n }\n\n const childSpanJSON = spanToJSON(childSpan);\n const { timestamp: childEndTimestamp = 0, start_timestamp: childStartTimestamp = 0 } = childSpanJSON;\n\n const spanStartedBeforeIdleSpanEnd = childStartTimestamp <= endTimestamp;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (finalTimeout + idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = childEndTimestamp - childStartTimestamp <= timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(childSpan, undefined, 2);\n if (!spanStartedBeforeIdleSpanEnd) {\n debug.log('[Tracing] Discarding span since it happened after idle span was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n debug.log('[Tracing] Discarding span since it finished after idle span final timeout', stringifiedSpan);\n }\n }\n\n if (!spanEndedBeforeFinalTimeout || !spanStartedBeforeIdleSpanEnd) {\n removeChildSpanFromSpan(span, childSpan);\n discardedSpans++;\n }\n });\n\n if (discardedSpans > 0) {\n span.setAttribute('sentry.idle_span_discarded_spans', discardedSpans);\n }\n }\n\n _cleanupHooks.push(\n client.on('spanStart', startedSpan => {\n // If we already finished the idle span,\n // or if this is the idle span itself being started,\n // or if the started span has already been closed,\n // we don't care about it for activity\n if (\n _finished ||\n startedSpan === span ||\n !!spanToJSON(startedSpan).timestamp ||\n (startedSpan instanceof SentrySpan && startedSpan.isStandaloneSpan())\n ) {\n return;\n }\n\n const allSpans = getSpanDescendants(span);\n\n // If the span that was just started is a child of the idle span, we should track it\n if (allSpans.includes(startedSpan)) {\n _pushActivity(startedSpan.spanContext().spanId);\n }\n }),\n );\n\n _cleanupHooks.push(\n client.on('spanEnd', endedSpan => {\n if (_finished) {\n return;\n }\n\n _popActivity(endedSpan.spanContext().spanId);\n }),\n );\n\n _cleanupHooks.push(\n client.on('idleSpanEnableAutoFinish', spanToAllowAutoFinish => {\n if (spanToAllowAutoFinish === span) {\n _autoFinishAllowed = true;\n _restartIdleTimeout();\n\n if (activities.size) {\n _restartChildSpanTimeout();\n }\n }\n }),\n );\n\n // We only start the initial idle timeout if we are not delaying the auto finish\n if (!options.disableAutoFinish) {\n _restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!_finished) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' });\n _finishReason = FINISH_REASON_FINAL_TIMEOUT;\n span.end();\n }\n }, finalTimeout);\n\n return span;\n}\n\nfunction _startIdleSpan(options: StartSpanOptions): Span {\n const span = startInactiveSpan(options);\n\n _setSpanForScope(getCurrentScope(), span);\n\n DEBUG_BUILD && debug.log('[Tracing] Started span is an idle span');\n\n return span;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\n\ntype State = typeof STATE_PENDING | typeof STATE_RESOLVED | typeof STATE_REJECTED;\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\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 */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\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 */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\ntype Executor = (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void;\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nexport class SyncPromise implements PromiseLike {\n private _state: State;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(executor: Executor) {\n this._state = STATE_PENDING;\n this._handlers = [];\n\n this._runExecutor(executor);\n }\n\n /** @inheritdoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\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 as any);\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 /** @inheritdoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** @inheritdoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\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 as unknown as any);\n });\n });\n }\n\n /** Excute the resolve/reject handlers. */\n private _executeHandlers(): void {\n if (this._state === STATE_PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === STATE_RESOLVED) {\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === STATE_REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n }\n\n /** Run the executor for the SyncPromise. */\n private _runExecutor(executor: Executor): void {\n const setResult = (state: State, value?: T | PromiseLike | any): void => {\n if (this._state !== STATE_PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(resolve, reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n const resolve = (value: unknown): void => {\n setResult(STATE_RESOLVED, value);\n };\n\n const reject = (reason: unknown): void => {\n setResult(STATE_REJECTED, reason);\n };\n\n try {\n executor(resolve, reject);\n } catch (e) {\n reject(e);\n }\n }\n}\n","import { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { rejectedSyncPromise, resolvedSyncPromise } from './utils/syncpromise';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike {\n try {\n const result = _notifyEventProcessors(event, hint, processors, index);\n return isThenable(result) ? result : resolvedSyncPromise(result);\n } catch (error) {\n return rejectedSyncPromise(error);\n }\n}\n\nfunction _notifyEventProcessors(\n event: Event | null,\n hint: EventHint,\n processors: EventProcessor[],\n index: number,\n): Event | null | PromiseLike {\n const processor = processors[index];\n\n if (!event || !processor) {\n return event;\n }\n\n const result = processor({ ...event }, hint);\n\n DEBUG_BUILD && result === null && debug.log(`Event processor \"${processor.id || '?'}\" dropped event`);\n\n if (isThenable(result)) {\n return result.then(final => _notifyEventProcessors(final, hint, processors, index + 1));\n }\n\n return _notifyEventProcessors(result, hint, processors, index + 1);\n}\n","import type { DebugImage } from '../types-hoist/debugMeta';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath } from './stacktrace';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype StackString = string;\ntype CachedResult = [string, string];\n\nlet parsedStackResults: Record | undefined;\nlet lastSentryKeysCount: number | undefined;\nlet lastNativeKeysCount: number | undefined;\nlet cachedFilenameDebugIds: Record | undefined;\n\n/**\n * Clears the cached debug ID mappings.\n * Useful for testing or when the global debug ID state changes.\n */\nexport function clearDebugIdCache(): void {\n parsedStackResults = undefined;\n lastSentryKeysCount = undefined;\n lastNativeKeysCount = undefined;\n cachedFilenameDebugIds = undefined;\n}\n\n/**\n * Returns a map of filenames to debug identifiers.\n * Supports both proprietary _sentryDebugIds and native _debugIds (e.g., from Vercel) formats.\n */\nexport function getFilenameToDebugIdMap(stackParser: StackParser): Record {\n const sentryDebugIdMap = GLOBAL_OBJ._sentryDebugIds;\n const nativeDebugIdMap = GLOBAL_OBJ._debugIds;\n\n if (!sentryDebugIdMap && !nativeDebugIdMap) {\n return {};\n }\n\n const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : [];\n const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : [];\n\n // If the count of registered globals hasn't changed since the last call, we\n // can just return the cached result.\n if (\n cachedFilenameDebugIds &&\n sentryDebugIdKeys.length === lastSentryKeysCount &&\n nativeDebugIdKeys.length === lastNativeKeysCount\n ) {\n return cachedFilenameDebugIds;\n }\n\n lastSentryKeysCount = sentryDebugIdKeys.length;\n lastNativeKeysCount = nativeDebugIdKeys.length;\n\n // Build a map of filename -> debug_id from both sources\n cachedFilenameDebugIds = {};\n\n if (!parsedStackResults) {\n parsedStackResults = {};\n }\n\n const processDebugIds = (debugIdKeys: string[], debugIdMap: Record): void => {\n for (const key of debugIdKeys) {\n const debugId = debugIdMap[key];\n const result = parsedStackResults?.[key];\n\n if (result && cachedFilenameDebugIds && debugId) {\n // Use cached filename but update with current debug ID\n cachedFilenameDebugIds[result[0]] = debugId;\n // Update cached result with new debug ID\n if (parsedStackResults) {\n parsedStackResults[key] = [result[0], debugId];\n }\n } else if (debugId) {\n const parsedStack = stackParser(key);\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n\n if (filename && cachedFilenameDebugIds && parsedStackResults) {\n cachedFilenameDebugIds[filename] = debugId;\n parsedStackResults[key] = [filename, debugId];\n break;\n }\n }\n }\n }\n };\n\n if (sentryDebugIdMap) {\n processDebugIds(sentryDebugIdKeys, sentryDebugIdMap);\n }\n\n // Native _debugIds will override _sentryDebugIds if same file\n if (nativeDebugIdMap) {\n processDebugIds(nativeDebugIdKeys, nativeDebugIdMap);\n }\n\n return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nexport function getDebugImagesForResources(\n stackParser: StackParser,\n resource_paths: ReadonlyArray,\n): DebugImage[] {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n if (!filenameDebugIdMap) {\n return [];\n }\n\n const images: DebugImage[] = [];\n for (const path of resource_paths) {\n const normalizedPath = normalizeStackTracePath(path);\n if (normalizedPath && filenameDebugIdMap[normalizedPath]) {\n images.push({\n type: 'sourcemap',\n code_file: path,\n debug_id: filenameDebugIdMap[normalizedPath],\n });\n }\n }\n\n return images;\n}\n","import { getGlobalScope } from '../currentScopes';\nimport type { Scope, ScopeData } from '../scope';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport type { Breadcrumb } from '../types-hoist/breadcrumb';\nimport type { Event } from '../types-hoist/event';\nimport type { Span } from '../types-hoist/span';\nimport { merge } from './merge';\nimport { getRootSpan, spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\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 (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n const {\n extra,\n tags,\n attributes,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'attributes', attributes);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'attributes' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n data[prop] = merge(data[prop], mergeVal, 1);\n}\n\n/** Exported only for tests */\nexport function mergeArray(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\n}\n\n/**\n * Get the scope data for the current scope after merging with the\n * global scope and isolation scope.\n *\n * @param currentScope - The current scope.\n * @returns The scope data.\n */\nexport function getCombinedScopeData(isolationScope: Scope | undefined, currentScope: Scope | undefined): ScopeData {\n const scopeData = getGlobalScope().getScopeData();\n isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData());\n currentScope && mergeScopeData(scopeData, currentScope.getScopeData());\n return scopeData;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n const { extra, tags, user, contexts, level, transactionName } = data;\n\n if (Object.keys(extra).length) {\n event.extra = { ...extra, ...event.extra };\n }\n\n if (Object.keys(tags).length) {\n event.tags = { ...tags, ...event.tags };\n }\n\n if (Object.keys(user).length) {\n event.user = { ...user, ...event.user };\n }\n\n if (Object.keys(contexts).length) {\n event.contexts = { ...contexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n // transaction events get their `transaction` from the root span name\n if (transactionName && event.type !== 'transaction') {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n\n const rootSpan = getRootSpan(span);\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName && !event.transaction && event.type === 'transaction') {\n event.transaction = transactionName;\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 */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (!event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n","import type { Client } from '../client';\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { notifyEventProcessors } from '../eventProcessors';\nimport type { CaptureContext, ScopeContext } from '../scope';\nimport { Scope } from '../scope';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { ClientOptions } from '../types-hoist/options';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { getFilenameToDebugIdMap } from './debug-ids';\nimport { addExceptionMechanism, uuid4 } from './misc';\nimport { normalize } from './normalize';\nimport { applyScopeDataToEvent, getCombinedScopeData } from './scopeData';\nimport { truncate } from './string';\nimport { resolvedSyncPromise } from './syncpromise';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\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 * @hidden\n */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n client?: Client,\n isolationScope?: Scope,\n): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n if (client) {\n client.emit('applyFrameMetadata', event);\n }\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\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 const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Scope.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getCombinedScopeData(isolationScope, finalScope);\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n const eventProcessors = [\n ...clientEventProcessors,\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n // Skip event processors for internal exceptions to prevent recursion\n // oxlint-disable-next-line typescript/prefer-optional-chain\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n const result = isInternalException\n ? resolvedSyncPromise(prepared)\n : notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\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 *\n * Only exported for tests.\n *\n * @param event event instance to be enhanced\n */\nexport function applyClientOptions(event: Event, options: ClientOptions): void {\n const { environment, release, dist, maxValueLength } = options;\n\n // empty strings do not make sense for environment, release, and dist\n // so we handle them the same as if they were not provided\n event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n\n if (!event.release && release) {\n event.release = release;\n }\n\n if (!event.dist && dist) {\n event.dist = dist;\n }\n\n const request = event.request;\n if (request?.url && maxValueLength) {\n request.url = truncate(request.url, maxValueLength);\n }\n\n if (maxValueLength) {\n event.exception?.values?.forEach(exception => {\n if (exception.value) {\n // Truncates error messages\n exception.value = truncate(exception.value, maxValueLength);\n }\n });\n }\n}\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap: Record = {};\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id,\n });\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 */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\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 */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\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?.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 return {\n ...span,\n ...(span.data && {\n data: normalize(span.data, depth, maxBreadth),\n }),\n };\n });\n }\n\n // event.contexts.flags (FeatureFlagContext) stores context for our feature\n // flag integrations. It has a greater nesting depth than our other typed\n // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want\n // to skip this in case of conflicting, user-provided context.\n if (event.contexts?.flags && normalized.contexts) {\n normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n }\n\n return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(hint: CaptureContext | EventHint): hint is Scope | ((scope: Scope) => Scope) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial | EventHint): hint is Partial {\n return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import { getClient, getCurrentScope, getIsolationScope, withIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { CaptureContext } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { startNewTrace } from './tracing/trace';\nimport type { CheckIn, FinishedCheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { Extra, Extras } from './types-hoist/extra';\nimport type { Primitive } from './types-hoist/misc';\nimport type { Session, SessionContext } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { User } from './types-hoist/user';\nimport { debug } from './utils/debug-logger';\nimport { isThenable } from './utils/is';\nimport { uuid4 } from './utils/misc';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { getCombinedScopeData } from './utils/scopeData';\nimport { timestampInSeconds } from './utils/time';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(exception: unknown, hint?: ExclusiveEventHintOrCaptureContext): string {\n return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\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 captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | SeverityLevel): string {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const hint = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentScope().captureMessage(message, level, hint);\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 * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n return getCurrentScope().captureEvent(event, hint);\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 */\nexport function setContext(name: string, context: { [key: string]: unknown } | null): void {\n getIsolationScope().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 */\nexport function setExtras(extras: Extras): void {\n getIsolationScope().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 */\nexport function setExtra(key: string, extra: Extra): void {\n getIsolationScope().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 */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n getIsolationScope().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 */\nexport function setTag(key: string, value: Primitive): void {\n getIsolationScope().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 */\nexport function setUser(user: User | null): void {\n getIsolationScope().setUser(user);\n}\n\n/**\n * Sets the conversation ID for the current isolation scope.\n *\n * @param conversationId The conversation ID to set. Pass `null` or `undefined` to unset the conversation ID.\n */\nexport function setConversationId(conversationId: string | null | undefined): void {\n getIsolationScope().setConversationId(conversationId);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nexport function lastEventId(): string | undefined {\n return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && debug.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param callback Callback to be monitored\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n function runCallback(): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n // Default behavior without isolateTrace\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n return maybePromiseResult.then(\n r => {\n finishCheckIn('ok');\n return r;\n },\n e => {\n finishCheckIn('error');\n throw e;\n },\n ) as T;\n }\n finishCheckIn('ok');\n\n return maybePromiseResult;\n }\n\n return withIsolationScope(() => (upsertMonitorConfig?.isolateTrace ? startNewTrace(runCallback) : runCallback()));\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 */\nexport async function flush(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && debug.warn('Cannot flush events. No client defined.');\n return Promise.resolve(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 */\nexport async function close(timeout?: number): Promise {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && debug.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nexport function isEnabled(): boolean {\n const client = getClient();\n return client?.getOptions().enabled !== false && !!client?.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n const isolationScope = getIsolationScope();\n\n const { user } = getCombinedScopeData(isolationScope, getCurrentScope());\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n user,\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession?.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n const isolationScope = getIsolationScope();\n const client = getClient();\n const session = isolationScope.getSession();\n if (session && client) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n","import type { ReportDialogOptions } from './report-dialog';\nimport type { DsnComponents, DsnLike } from './types-hoist/dsn';\nimport type { SdkInfo } from './types-hoist/sdkinfo';\nimport { dsnToString, makeDsn } from './utils/dsn';\n\nexport const SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const 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: DsnComponents): string {\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: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n const params: Record = {\n sentry_version: SENTRY_API_VERSION,\n };\n\n if (dsn.publicKey) {\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n params.sentry_key = dsn.publicKey;\n }\n\n if (sdkInfo) {\n params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`;\n }\n\n return new URLSearchParams(params).toString();\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 */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string, sdkInfo?: SdkInfo): string {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(dsnLike: DsnLike, dialogOptions: ReportDialogOptions): string {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'onClose') {\n continue;\n }\n\n if (key === 'user') {\n const 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] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import type { Client } from './client';\nimport { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { Integration, IntegrationFn } from './types-hoist/integration';\nimport type { CoreOptions } from './types-hoist/options';\nimport { debug } from './utils/debug-logger';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\ntype IntegrationWithDefaultInstance = Integration & { isDefaultInstance?: true };\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preserve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach((currentInstance: IntegrationWithDefaultInstance) => {\n const { name } = currentInstance;\n\n const existingInstance: IntegrationWithDefaultInstance | undefined = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(\n options: Pick,\n): Integration[] {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach((integration: IntegrationWithDefaultInstance) => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\n } else {\n integrations = defaultIntegrations;\n }\n\n return filterDuplicates(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 */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach((integration: Integration | undefined) => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(client, integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n for (const integration of integrations) {\n // guard against empty provided integrations\n if (integration?.afterAllSetup) {\n integration.afterAllSetup(client);\n }\n }\n}\n\n/** Setup a single integration. */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n if (integrationIndex[integration.name]) {\n DEBUG_BUILD && debug.log(`Integration skipped because it was already installed: ${integration.name}`);\n return;\n }\n integrationIndex[integration.name] = integration;\n\n // `setupOnce` is only called the first time\n if (!installedIntegrations.includes(integration.name) && typeof integration.setupOnce === 'function') {\n integration.setupOnce();\n installedIntegrations.push(integration.name);\n }\n\n // `setup` is run for each client\n if (integration.setup && typeof integration.setup === 'function') {\n integration.setup(client);\n }\n\n if (typeof integration.preprocessEvent === 'function') {\n const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n }\n\n if (typeof integration.processEvent === 'function') {\n const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n id: integration.name,\n });\n\n client.addEventProcessor(processor);\n }\n\n DEBUG_BUILD && debug.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nexport function addIntegration(integration: Integration): void {\n const client = getClient();\n\n if (!client) {\n DEBUG_BUILD && debug.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n return;\n }\n\n client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration(fn: Fn): (...args: Parameters) => Integration {\n return fn;\n}\n","import type { DurationUnit, FractionUnit, InformationUnit } from './types-hoist/measurement';\n\nexport type RawAttributes = T & ValidatedAttributes;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type RawAttribute = T extends { value: any } | { unit: any } ? AttributeObject : T;\n\nexport type Attributes = Record;\n\nexport type AttributeValueType = string | number | boolean | Array | Array | Array;\n\ntype AttributeTypeMap = {\n string: string;\n integer: number;\n double: number;\n boolean: boolean;\n 'string[]': Array;\n 'integer[]': Array;\n 'double[]': Array;\n 'boolean[]': Array;\n};\n\n/* Generates a type from the AttributeTypeMap like:\n | { value: string; type: 'string' }\n | { value: number; type: 'integer' }\n | { value: number; type: 'double' }\n */\ntype AttributeUnion = {\n [K in keyof AttributeTypeMap]: {\n value: AttributeTypeMap[K];\n type: K;\n };\n}[keyof AttributeTypeMap];\n\nexport type TypedAttributeValue = AttributeUnion & { unit?: AttributeUnit };\n\nexport type AttributeObject = {\n value: unknown;\n unit?: AttributeUnit;\n};\n\n// Unfortunately, we loose type safety if we did something like Exclude\n// so therefore we unionize between the three supported unit categories.\ntype AttributeUnit = DurationUnit | InformationUnit | FractionUnit;\n\n/* If an attribute has either a 'value' or 'unit' property, we use the ValidAttributeObject type. */\nexport type ValidatedAttributes = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof T]: T[K] extends { value: any } | { unit: any } ? AttributeObject : unknown;\n};\n\n/**\n * Type-guard: The attribute object has the shape the official attribute object (value, type, unit).\n * https://develop.sentry.dev/sdk/telemetry/scopes/#setting-attributes\n */\nexport function isAttributeObject(maybeObj: unknown): maybeObj is AttributeObject {\n return (\n typeof maybeObj === 'object' &&\n maybeObj != null &&\n !Array.isArray(maybeObj) &&\n Object.keys(maybeObj).includes('value')\n );\n}\n\n/**\n * Converts an attribute value to a typed attribute value.\n *\n * For now, we intentionally only support primitive values and attribute objects with primitive values.\n * If @param useFallback is true, we stringify non-primitive values to a string attribute value. Otherwise\n * we return `undefined` for unsupported values.\n *\n * @param value - The value of the passed attribute.\n * @param useFallback - If true, unsupported values will be stringified to a string attribute value.\n * Defaults to false. In this case, `undefined` is returned for unsupported values.\n * @returns The typed attribute.\n */\nexport function attributeValueToTypedAttributeValue(\n rawValue: unknown,\n useFallback?: boolean | 'skip-undefined',\n): TypedAttributeValue | void {\n const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: undefined };\n const attributeValue = getTypedAttributeValue(value);\n const checkedUnit = unit && typeof unit === 'string' ? { unit } : {};\n if (attributeValue) {\n return { ...attributeValue, ...checkedUnit };\n }\n\n if (!useFallback || (useFallback === 'skip-undefined' && value === undefined)) {\n return;\n }\n\n // Fallback: stringify the value\n // TODO(v11): be smarter here and use String constructor if stringify fails\n // (this is a breaking change for already existing attribute values)\n let stringValue = '';\n try {\n stringValue = JSON.stringify(value) ?? '';\n } catch {\n // Do nothing\n }\n return {\n value: stringValue,\n type: 'string',\n ...checkedUnit,\n };\n}\n\n/**\n * Serializes raw attributes to typed attributes as expected in our envelopes.\n *\n * @param attributes The raw attributes to serialize.\n * @param fallback If true, unsupported values will be stringified to a string attribute value.\n * Defaults to false. In this case, `undefined` is returned for unsupported values.\n *\n * @returns The serialized attributes.\n */\nexport function serializeAttributes(\n attributes: RawAttributes | undefined,\n fallback: boolean | 'skip-undefined' = false,\n): Attributes {\n const serializedAttributes: Attributes = {};\n for (const [key, value] of Object.entries(attributes ?? {})) {\n const typedValue = attributeValueToTypedAttributeValue(value, fallback);\n if (typedValue) {\n serializedAttributes[key] = typedValue;\n }\n }\n return serializedAttributes;\n}\n\n/**\n * NOTE: We intentionally do not return anything for non-primitive values:\n * - array support will come in the future but if we stringify arrays now,\n * sending arrays (unstringified) later will be a subtle breaking change.\n * - Objects are not supported yet and product support is still TBD.\n * - We still keep the type signature for TypedAttributeValue wider to avoid a\n * breaking change once we add support for non-primitive values.\n * - Once we go back to supporting arrays and stringifying all other values,\n * we already implemented the serialization logic here:\n * https://github.com/getsentry/sentry-javascript/pull/18165\n */\nfunction getTypedAttributeValue(value: unknown): TypedAttributeValue | void {\n const primitiveType =\n typeof value === 'string'\n ? 'string'\n : typeof value === 'boolean'\n ? 'boolean'\n : typeof value === 'number' && !Number.isNaN(value)\n ? Number.isInteger(value)\n ? 'integer'\n : 'double'\n : null;\n if (primitiveType) {\n // @ts-expect-error - TS complains because {@link TypedAttributeValue} is strictly typed to\n // avoid setting the wrong `type` on the attribute value.\n // In this case, getPrimitiveType already does the check but TS doesn't know that.\n // The \"clean\" alternative is to return an object per `typeof value` case\n // but that would require more bundle size\n // Therefore, we ignore it.\n return { value, type: primitiveType };\n }\n}\n","const SEQUENCE_ATTR_KEY = 'sentry.timestamp.sequence';\n\nlet _sequenceNumber = 0;\nlet _previousTimestampMs: number | undefined;\n\n/**\n * Returns the `sentry.timestamp.sequence` attribute entry for a serialized telemetry item.\n *\n * The sequence number starts at 0 and increments by 1 for each item captured.\n * It resets to 0 when the current item's integer millisecond timestamp differs\n * from the previous item's integer millisecond timestamp.\n *\n * @param timestampInSeconds - The timestamp of the telemetry item in seconds.\n */\nexport function getSequenceAttribute(timestampInSeconds: number): {\n key: string;\n value: { value: number; type: 'integer' };\n} {\n const nowMs = Math.floor(timestampInSeconds * 1000);\n\n if (_previousTimestampMs !== undefined && nowMs !== _previousTimestampMs) {\n _sequenceNumber = 0;\n }\n\n const value = _sequenceNumber;\n _sequenceNumber++;\n _previousTimestampMs = nowMs;\n\n return {\n key: SEQUENCE_ATTR_KEY,\n value: { value, type: 'integer' },\n };\n}\n\n/**\n * Resets the sequence number state. Only exported for testing purposes.\n */\nexport function _INTERNAL_resetSequenceNumber(): void {\n _sequenceNumber = 0;\n _previousTimestampMs = undefined;\n}\n","import type { Client } from '../client';\nimport { getTraceContextFromScope, withScope } from '../currentScopes';\nimport type { Scope } from '../scope';\nimport {\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n} from '../tracing/dynamicSamplingContext';\nimport type { TraceContext } from '../types-hoist/context';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { getActiveSpan, spanToTraceContext } from './spanUtils';\n\n/** Extract trace information from scope */\nexport function _getTraceInfoFromScope(\n client: Client,\n scope: Scope | undefined,\n): [dynamicSamplingContext: Partial | undefined, traceContext: TraceContext | undefined] {\n if (!scope) {\n return [undefined, undefined];\n }\n\n return withScope(scope, () => {\n const span = getActiveSpan();\n const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n const dynamicSamplingContext = span\n ? getDynamicSamplingContextFromSpan(span)\n : getDynamicSamplingContextFromScope(client, scope);\n return [dynamicSamplingContext, traceContext];\n });\n}\n","import type { LogSeverityLevel } from '../types-hoist/log';\n\n/**\n * Maps a log severity level to a log severity number.\n *\n * @see LogSeverityLevel\n */\nexport const SEVERITY_TEXT_TO_SEVERITY_NUMBER: Partial> = {\n trace: 1,\n debug: 5,\n info: 9,\n warn: 13,\n error: 17,\n fatal: 21,\n};\n","import type { DsnComponents } from '../types-hoist/dsn';\nimport type { LogContainerItem, LogEnvelope } from '../types-hoist/envelope';\nimport type { SerializedLog } from '../types-hoist/log';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\n\n/**\n * Creates a log container envelope item for a list of logs.\n *\n * @param items - The logs to include in the envelope.\n * @returns The created log container envelope item.\n */\nexport function createLogContainerEnvelopeItem(items: Array): LogContainerItem {\n return [\n {\n type: 'log',\n item_count: items.length,\n content_type: 'application/vnd.sentry.items.log+json',\n },\n {\n items,\n },\n ];\n}\n\n/**\n * Creates an envelope for a list of logs.\n *\n * Logs from multiple traces can be included in the same envelope.\n *\n * @param logs - The logs to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nexport function createLogEnvelope(\n logs: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): LogEnvelope {\n const headers: LogEnvelope[0] = {};\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n return createEnvelope(headers, [createLogContainerEnvelopeItem(logs)]);\n}\n","import { serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Log, SerializedLog } from '../types-hoist/log';\nimport { consoleSandbox, debug } from '../utils/debug-logger';\nimport { isParameterizedString } from '../utils/is';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { getSequenceAttribute } from '../utils/timestampSequence';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants';\nimport { createLogEnvelope } from './envelope';\n\nconst MAX_LOG_BUFFER_SIZE = 100;\n\n/**\n * Sets a log attribute if the value exists and the attribute key is not already present.\n *\n * @param logAttributes - The log attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setLogAttribute(\n logAttributes: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\n if (value && (!logAttributes[key] || setEvenIfPresent)) {\n logAttributes[key] = value;\n }\n}\n\n/**\n * Captures a serialized log event and adds it to the log buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedLog - The serialized log event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void {\n const bufferMap = _getBufferMap();\n const logBuffer = _INTERNAL_getLogBuffer(client);\n\n if (logBuffer === undefined) {\n bufferMap.set(client, [serializedLog]);\n } else {\n if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {\n _INTERNAL_flushLogsBuffer(client, logBuffer);\n bufferMap.set(client, [serializedLog]);\n } else {\n bufferMap.set(client, [...logBuffer, serializedLog]);\n }\n }\n}\n\n/**\n * Captures a log event and sends it to Sentry.\n *\n * @param log - The log event to capture.\n * @param scope - A scope. Uses the current scope if not provided.\n * @param client - A client. Uses the current client if not provided.\n * @param captureSerializedLog - A function to capture the serialized log.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureLog(\n beforeLog: Log,\n currentScope = getCurrentScope(),\n captureSerializedLog: (client: Client, log: SerializedLog) => void = _INTERNAL_captureSerializedLog,\n): void {\n const client = currentScope?.getClient() ?? getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No client available to capture log.');\n return;\n }\n\n const { release, environment, enableLogs = false, beforeSendLog } = client.getOptions();\n if (!enableLogs) {\n DEBUG_BUILD && debug.warn('logging option not enabled, log will not be captured.');\n return;\n }\n\n const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n\n const processedLogAttributes = {\n ...beforeLog.attributes,\n };\n\n const {\n user: { id, email, username },\n attributes: scopeAttributes = {},\n } = getCombinedScopeData(getIsolationScope(), currentScope);\n\n setLogAttribute(processedLogAttributes, 'user.id', id, false);\n setLogAttribute(processedLogAttributes, 'user.email', email, false);\n setLogAttribute(processedLogAttributes, 'user.name', username, false);\n\n setLogAttribute(processedLogAttributes, 'sentry.release', release);\n setLogAttribute(processedLogAttributes, 'sentry.environment', environment);\n\n const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n setLogAttribute(processedLogAttributes, 'sentry.sdk.name', name);\n setLogAttribute(processedLogAttributes, 'sentry.sdk.version', version);\n\n const replay = client.getIntegrationByName<\n Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\n }\n >('Replay');\n\n const replayId = replay?.getReplayId(true);\n setLogAttribute(processedLogAttributes, 'sentry.replay_id', replayId);\n\n if (replayId && replay?.getRecordingMode() === 'buffer') {\n // We send this so we can identify cases where the replayId is attached but the replay itself might not have been sent to Sentry\n setLogAttribute(processedLogAttributes, 'sentry._internal.replay_is_buffering', true);\n }\n\n const beforeLogMessage = beforeLog.message;\n if (isParameterizedString(beforeLogMessage)) {\n const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage;\n if (__sentry_template_values__?.length) {\n processedLogAttributes['sentry.message.template'] = __sentry_template_string__;\n }\n __sentry_template_values__.forEach((param, index) => {\n processedLogAttributes[`sentry.message.parameter.${index}`] = param;\n });\n }\n\n const span = _getSpanForScope(currentScope);\n // Add the parent span ID to the log attributes for trace context\n setLogAttribute(processedLogAttributes, 'sentry.trace.parent_span_id', span?.spanContext().spanId);\n\n const processedLog = { ...beforeLog, attributes: processedLogAttributes };\n\n client.emit('beforeCaptureLog', processedLog);\n\n // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog`\n const log = beforeSendLog ? consoleSandbox(() => beforeSendLog(processedLog)) : processedLog;\n if (!log) {\n client.recordDroppedEvent('before_send', 'log_item', 1);\n DEBUG_BUILD && debug.warn('beforeSendLog returned null, log will not be captured.');\n return;\n }\n\n const { level, message, attributes: logAttributes = {}, severityNumber } = log;\n\n const timestamp = timestampInSeconds();\n const sequenceAttr = getSequenceAttribute(timestamp);\n\n const serializedLog: SerializedLog = {\n timestamp,\n level,\n body: message,\n trace_id: traceContext?.trace_id,\n severity_number: severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER[level],\n attributes: {\n ...serializeAttributes(scopeAttributes),\n ...serializeAttributes(logAttributes, true),\n [sequenceAttr.key]: sequenceAttr.value,\n },\n };\n\n captureSerializedLog(client, serializedLog);\n\n client.emit('afterCaptureLog', log);\n}\n\n/**\n * Flushes the logs buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_flushLogsBuffer(client: Client, maybeLogBuffer?: Array): void {\n const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? [];\n if (logBuffer.length === 0) {\n return;\n }\n\n const clientOptions = client.getOptions();\n const envelope = createLogEnvelope(logBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n // Clear the log buffer after envelopes have been constructed.\n _getBufferMap().set(client, []);\n\n client.emit('flushLogs');\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the log buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the log buffer for.\n * @returns The log buffer for the given client.\n */\nexport function _INTERNAL_getLogBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\n // The reference to the Client <> LogBuffer map is stored on the carrier to ensure it's always the same\n return getGlobalSingleton('clientToLogBufferMap', () => new WeakMap>());\n}\n","import type { DsnComponents } from '../types-hoist/dsn';\nimport type { MetricContainerItem, MetricEnvelope } from '../types-hoist/envelope';\nimport type { SerializedMetric } from '../types-hoist/metric';\nimport type { SdkMetadata } from '../types-hoist/sdkmetadata';\nimport { dsnToString } from '../utils/dsn';\nimport { createEnvelope } from '../utils/envelope';\n\n/**\n * Creates a metric container envelope item for a list of metrics.\n *\n * @param items - The metrics to include in the envelope.\n * @returns The created metric container envelope item.\n */\nexport function createMetricContainerEnvelopeItem(items: Array): MetricContainerItem {\n return [\n {\n type: 'trace_metric',\n item_count: items.length,\n content_type: 'application/vnd.sentry.items.trace-metric+json',\n } as MetricContainerItem[0],\n {\n items,\n },\n ];\n}\n\n/**\n * Creates an envelope for a list of metrics.\n *\n * Metrics from multiple traces can be included in the same envelope.\n *\n * @param metrics - The metrics to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nexport function createMetricEnvelope(\n metrics: Array,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): MetricEnvelope {\n const headers: MetricEnvelope[0] = {};\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n return createEnvelope(headers, [createMetricContainerEnvelopeItem(metrics)]);\n}\n","import { type RawAttributes, serializeAttributes } from '../attributes';\nimport { getGlobalSingleton } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Scope } from '../scope';\nimport type { Integration } from '../types-hoist/integration';\nimport type { Metric, SerializedMetric } from '../types-hoist/metric';\nimport type { User } from '../types-hoist/user';\nimport { debug } from '../utils/debug-logger';\nimport { getCombinedScopeData } from '../utils/scopeData';\nimport { _getSpanForScope } from '../utils/spanOnScope';\nimport { timestampInSeconds } from '../utils/time';\nimport { getSequenceAttribute } from '../utils/timestampSequence';\nimport { _getTraceInfoFromScope } from '../utils/trace-info';\nimport { createMetricEnvelope } from './envelope';\n\nconst MAX_METRIC_BUFFER_SIZE = 1000;\n\n/**\n * Sets a metric attribute if the value exists and the attribute key is not already present.\n *\n * @param metricAttributes - The metric attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setMetricAttribute(\n metricAttributes: Record,\n key: string,\n value: unknown,\n setEvenIfPresent = true,\n): void {\n if (value && (setEvenIfPresent || !(key in metricAttributes))) {\n metricAttributes[key] = value;\n }\n}\n\n/**\n * Captures a serialized metric event and adds it to the metric buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedMetric - The serialized metric event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureSerializedMetric(client: Client, serializedMetric: SerializedMetric): void {\n const bufferMap = _getBufferMap();\n const metricBuffer = _INTERNAL_getMetricBuffer(client);\n\n if (metricBuffer === undefined) {\n bufferMap.set(client, [serializedMetric]);\n } else {\n if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) {\n _INTERNAL_flushMetricsBuffer(client, metricBuffer);\n bufferMap.set(client, [serializedMetric]);\n } else {\n bufferMap.set(client, [...metricBuffer, serializedMetric]);\n }\n }\n}\n\n/**\n * Options for capturing a metric internally.\n */\nexport interface InternalCaptureMetricOptions {\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n\n /**\n * A function to capture the serialized metric.\n */\n captureSerializedMetric?: (client: Client, metric: SerializedMetric) => void;\n}\n\n/**\n * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.)\n */\nfunction _enrichMetricAttributes(beforeMetric: Metric, client: Client, user: User): Metric {\n const { release, environment } = client.getOptions();\n\n const processedMetricAttributes = {\n ...beforeMetric.attributes,\n };\n\n // Add user attributes\n setMetricAttribute(processedMetricAttributes, 'user.id', user.id, false);\n setMetricAttribute(processedMetricAttributes, 'user.email', user.email, false);\n setMetricAttribute(processedMetricAttributes, 'user.name', user.username, false);\n\n // Add Sentry metadata\n setMetricAttribute(processedMetricAttributes, 'sentry.release', release);\n setMetricAttribute(processedMetricAttributes, 'sentry.environment', environment);\n\n // Add SDK metadata\n const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n setMetricAttribute(processedMetricAttributes, 'sentry.sdk.name', name);\n setMetricAttribute(processedMetricAttributes, 'sentry.sdk.version', version);\n\n // Add replay metadata\n const replay = client.getIntegrationByName<\n Integration & {\n getReplayId: (onlyIfSampled?: boolean) => string;\n getRecordingMode: () => 'session' | 'buffer' | undefined;\n }\n >('Replay');\n\n const replayId = replay?.getReplayId(true);\n setMetricAttribute(processedMetricAttributes, 'sentry.replay_id', replayId);\n\n if (replayId && replay?.getRecordingMode() === 'buffer') {\n setMetricAttribute(processedMetricAttributes, 'sentry._internal.replay_is_buffering', true);\n }\n\n return {\n ...beforeMetric,\n attributes: processedMetricAttributes,\n };\n}\n\n/**\n * Creates a serialized metric ready to be sent to Sentry.\n */\nfunction _buildSerializedMetric(\n metric: Metric,\n client: Client,\n currentScope: Scope,\n scopeAttributes: RawAttributes> | undefined,\n): SerializedMetric {\n // Get trace context\n const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n const span = _getSpanForScope(currentScope);\n const traceId = span ? span.spanContext().traceId : traceContext?.trace_id;\n const spanId = span ? span.spanContext().spanId : undefined;\n\n const timestamp = timestampInSeconds();\n const sequenceAttr = getSequenceAttribute(timestamp);\n\n return {\n timestamp,\n trace_id: traceId ?? '',\n span_id: spanId,\n name: metric.name,\n type: metric.type,\n unit: metric.unit,\n value: metric.value,\n attributes: {\n ...serializeAttributes(scopeAttributes),\n ...serializeAttributes(metric.attributes, 'skip-undefined'),\n [sequenceAttr.key]: sequenceAttr.value,\n },\n };\n}\n\n/**\n * Captures a metric event and sends it to Sentry.\n *\n * @param metric - The metric event to capture.\n * @param options - Options for capturing the metric.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_captureMetric(beforeMetric: Metric, options?: InternalCaptureMetricOptions): void {\n const currentScope = options?.scope ?? getCurrentScope();\n const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric;\n const client = currentScope?.getClient() ?? getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No client available to capture metric.');\n return;\n }\n\n const { _experiments, enableMetrics, beforeSendMetric } = client.getOptions();\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const metricsEnabled = enableMetrics ?? _experiments?.enableMetrics ?? true;\n\n if (!metricsEnabled) {\n DEBUG_BUILD && debug.warn('metrics option not enabled, metric will not be captured.');\n return;\n }\n\n // Enrich metric with contextual attributes\n const { user, attributes: scopeAttributes } = getCombinedScopeData(getIsolationScope(), currentScope);\n const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user);\n\n client.emit('processMetric', enrichedMetric);\n\n // todo(v11): Remove the experimental `beforeSendMetric`\n // eslint-disable-next-line deprecation/deprecation\n const beforeSendCallback = beforeSendMetric || _experiments?.beforeSendMetric;\n const processedMetric = beforeSendCallback ? beforeSendCallback(enrichedMetric) : enrichedMetric;\n\n if (!processedMetric) {\n DEBUG_BUILD && debug.log('`beforeSendMetric` returned `null`, will not send metric.');\n return;\n }\n\n const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes);\n\n DEBUG_BUILD && debug.log('[Metric]', serializedMetric);\n\n captureSerializedMetric(client, serializedMetric);\n\n client.emit('afterCaptureMetric', processedMetric);\n}\n\n/**\n * Flushes the metrics buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nexport function _INTERNAL_flushMetricsBuffer(client: Client, maybeMetricBuffer?: Array): void {\n const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? [];\n if (metricBuffer.length === 0) {\n return;\n }\n\n const clientOptions = client.getOptions();\n const envelope = createMetricEnvelope(metricBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n // Clear the metric buffer after envelopes have been constructed.\n _getBufferMap().set(client, []);\n\n client.emit('flushMetrics');\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the metric buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the metric buffer for.\n * @returns The metric buffer for the given client.\n */\nexport function _INTERNAL_getMetricBuffer(client: Client): Array | undefined {\n return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap(): WeakMap> {\n // The reference to the Client <> MetricBuffer map is stored on the carrier to ensure it's always the same\n return getGlobalSingleton('clientToMetricBufferMap', () => new WeakMap>());\n}\n","/**\n * Calls `unref` on a timer, if the method is available on @param timer.\n *\n * `unref()` is used to allow processes to exit immediately, even if the timer\n * is still running and hasn't resolved yet.\n *\n * Use this in places where code can run on browser or server, since browsers\n * do not support `unref`.\n */\nexport function safeUnref(timer: ReturnType): ReturnType {\n if (typeof timer === 'object' && typeof timer.unref === 'function') {\n timer.unref();\n }\n return timer;\n}\n","import { rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\nimport { safeUnref } from './timer';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: PromiseLike[];\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\nexport const SENTRY_BUFFER_FULL_ERROR = Symbol.for('SentryBufferFullError');\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 */\nexport function makePromiseBuffer(limit: number = 100): PromiseBuffer {\n const buffer: Set> = new Set();\n\n function isReady(): boolean {\n return buffer.size < 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: PromiseLike): void {\n buffer.delete(task);\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: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR);\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n buffer.add(task);\n void task.then(\n () => remove(task),\n () => remove(task),\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?: number): PromiseLike {\n if (!buffer.size) {\n return resolvedSyncPromise(true);\n }\n\n // We want to resolve even if one of the promises rejects\n const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true);\n\n if (!timeout) {\n return drainPromise;\n }\n\n const promises = [\n drainPromise,\n new Promise(resolve => safeUnref(setTimeout(() => resolve(false), timeout))),\n ];\n\n return Promise.race(promises);\n }\n\n return {\n get $(): PromiseLike[] {\n return Array.from(buffer);\n },\n add,\n drain,\n };\n}\n","import type { DataCategory } from '../types-hoist/datacategory';\nimport type { TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { safeDateNow } from './randomSafeContext';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const 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 */\nexport function parseRetryAfterHeader(header: string, now: number = safeDateNow()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const 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 the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = safeDateNow()): boolean {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = safeDateNow(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers?.['x-sentry-rate-limits'];\n const retryAfterHeader = 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 * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5) as [string, ...string[]];\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\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","import { DEBUG_BUILD } from '../debug-build';\nimport type { EventDropReason } from '../types-hoist/clientreport';\nimport type { Envelope, EnvelopeItem } from '../types-hoist/envelope';\nimport type {\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport {\n createEnvelope,\n envelopeContainsItemType,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n serializeEnvelope,\n} from '../utils/envelope';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer';\nimport { isRateLimited, type RateLimits, updateRateLimits } from '../utils/ratelimit';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', dataCategory);\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 Promise.resolve({});\n }\n\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as (typeof envelope)[1]);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n // Don't record outcomes for client reports - we don't want to create a feedback loop if client reports themselves fail to send\n if (envelopeContainsItemType(filteredEnvelope, ['client_report'])) {\n DEBUG_BUILD && debug.warn(`Dropping client report. Will not send outcomes (reason: ${reason}).`);\n return;\n }\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n response => {\n // Handle 413 Content Too Large\n // Loss of envelope content is expected so we record a send_error client report\n // https://develop.sentry.dev/sdk/expected-features/#dealing-with-network-failures\n if (response.statusCode === 413) {\n DEBUG_BUILD &&\n debug.error(\n 'Sentry responded with status code 413. Envelope was discarded due to exceeding size limits.',\n );\n recordEnvelopeLoss('send_error');\n return response;\n }\n\n // We don't want to throw on NOK responses, but we want to at least log them\n if (\n DEBUG_BUILD &&\n response.statusCode !== undefined &&\n (response.statusCode < 200 || response.statusCode >= 300)\n ) {\n debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n DEBUG_BUILD && debug.error('Encountered error running transport request:', error);\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error === SENTRY_BUFFER_FULL_ERROR) {\n DEBUG_BUILD && debug.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return Promise.resolve({});\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n","import type { ClientReport } from '../types-hoist/clientreport';\nimport type { ClientReportEnvelope, ClientReportItem } from '../types-hoist/envelope';\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\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 */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import type { Event } from '../types-hoist/event';\n\n/**\n * Get a list of possible event messages from a Sentry event.\n */\nexport function getPossibleEventMessages(event: Event): string[] {\n const possibleMessages: string[] = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n try {\n // @ts-expect-error Try catching to save bundle size\n const lastException = event.exception.values[event.exception.values.length - 1];\n if (lastException?.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n } catch {\n // ignore errors here\n }\n\n return possibleMessages;\n}\n","import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes';\nimport type { TransactionEvent } from '../types-hoist/event';\nimport type { SpanJSON } from '../types-hoist/span';\n\n/**\n * Converts a transaction event to a span JSON object.\n */\nexport function convertTransactionEventToSpanJson(event: TransactionEvent): SpanJSON {\n const { trace_id, parent_span_id, span_id, status, origin, data, op } = event.contexts?.trace ?? {};\n\n return {\n data: data ?? {},\n description: event.transaction,\n op,\n parent_span_id,\n span_id: span_id ?? '',\n start_timestamp: event.start_timestamp ?? 0,\n status,\n timestamp: event.timestamp,\n trace_id: trace_id ?? '',\n origin,\n profile_id: data?.[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] as number | undefined,\n measurements: event.measurements,\n is_segment: true,\n };\n}\n\n/**\n * Converts a span JSON object to a transaction event.\n */\nexport function convertSpanJsonToTransactionEvent(span: SpanJSON): TransactionEvent {\n return {\n type: 'transaction',\n timestamp: span.timestamp,\n start_timestamp: span.start_timestamp,\n transaction: span.description,\n contexts: {\n trace: {\n trace_id: span.trace_id,\n span_id: span.span_id,\n parent_span_id: span.parent_span_id,\n op: span.op,\n status: span.status,\n origin: span.origin,\n data: {\n ...span.data,\n ...(span.profile_id && { [SEMANTIC_ATTRIBUTE_PROFILE_ID]: span.profile_id }),\n ...(span.exclusive_time && { [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: span.exclusive_time }),\n },\n },\n },\n measurements: span.measurements,\n };\n}\n","/* eslint-disable max-lines */\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { getCurrentScope, getIsolationScope, getTraceContextFromScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations, setupIntegration, setupIntegrations } from './integration';\nimport { _INTERNAL_flushLogsBuffer } from './logs/internal';\nimport { _INTERNAL_flushMetricsBuffer } from './metrics/internal';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base';\nimport type { Breadcrumb, BreadcrumbHint, FetchBreadcrumbHint, XhrBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { CheckIn, MonitorConfig } from './types-hoist/checkin';\nimport type { EventDropReason, Outcome } from './types-hoist/clientreport';\nimport type { DataCategory } from './types-hoist/datacategory';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { DynamicSamplingContext, Envelope } from './types-hoist/envelope';\nimport type { ErrorEvent, Event, EventHint, EventType, TransactionEvent } from './types-hoist/event';\nimport type { EventProcessor } from './types-hoist/eventprocessor';\nimport type { FeedbackEvent } from './types-hoist/feedback';\nimport type { Integration } from './types-hoist/integration';\nimport type { Log } from './types-hoist/log';\nimport type { Metric } from './types-hoist/metric';\nimport type { Primitive } from './types-hoist/misc';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { RequestEventData } from './types-hoist/request';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport type { Session, SessionAggregates } from './types-hoist/session';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { Span, SpanAttributes, SpanContextData, SpanJSON } from './types-hoist/span';\nimport type { StartSpanOptions } from './types-hoist/startSpanOptions';\nimport type { Transport, TransportMakeRequestResponse } from './types-hoist/transport';\nimport { createClientReportEnvelope } from './utils/clientreport';\nimport { debug } from './utils/debug-logger';\nimport { dsnToString, makeDsn } from './utils/dsn';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope';\nimport { getPossibleEventMessages } from './utils/eventUtils';\nimport { isParameterizedString, isPlainObject, isPrimitive, isThenable } from './utils/is';\nimport { merge } from './utils/merge';\nimport { checkOrSetAlreadyCaught, uuid4 } from './utils/misc';\nimport { parseSampleRate } from './utils/parseSampleRate';\nimport { prepareEvent } from './utils/prepareEvent';\nimport { makePromiseBuffer, type PromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer';\nimport { safeMathRandom } from './utils/randomSafeContext';\nimport { reparentChildSpans, shouldIgnoreSpan } from './utils/should-ignore-span';\nimport { showSpanDropWarning } from './utils/spanUtils';\nimport { rejectedSyncPromise } from './utils/syncpromise';\nimport { safeUnref } from './utils/timer';\nimport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson } from './utils/transactionEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\nconst MISSING_RELEASE_FOR_SESSION_ERROR = 'Discarded session because of missing or non-string release';\n\nconst INTERNAL_ERROR_SYMBOL = Symbol.for('SentryInternalError');\nconst DO_NOT_SEND_EVENT_SYMBOL = Symbol.for('SentryDoNotSendEventError');\n\n// Default interval for flushing logs and metrics (5 seconds)\nconst DEFAULT_FLUSH_INTERVAL = 5000;\n\ninterface InternalError {\n message: string;\n [INTERNAL_ERROR_SYMBOL]: true;\n}\n\ninterface DoNotSendEventError {\n message: string;\n [DO_NOT_SEND_EVENT_SYMBOL]: true;\n}\n\nfunction _makeInternalError(message: string): InternalError {\n return {\n message,\n [INTERNAL_ERROR_SYMBOL]: true,\n };\n}\n\nfunction _makeDoNotSendEventError(message: string): DoNotSendEventError {\n return {\n message,\n [DO_NOT_SEND_EVENT_SYMBOL]: true,\n };\n}\n\nfunction _isInternalError(error: unknown): error is InternalError {\n return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error;\n}\n\nfunction _isDoNotSendEventError(error: unknown): error is DoNotSendEventError {\n return !!error && typeof error === 'object' && DO_NOT_SEND_EVENT_SYMBOL in error;\n}\n\n/**\n * Sets up weight-based flushing for logs or metrics.\n * This helper function encapsulates the common pattern of:\n * 1. Tracking accumulated weight of items\n * 2. Flushing when weight exceeds threshold (800KB)\n * 3. Flushing after timeout period from the first item\n *\n * Uses closure variables to track weight and timeout state.\n */\nfunction setupWeightBasedFlushing<\n T,\n AfterCaptureHook extends 'afterCaptureLog' | 'afterCaptureMetric',\n FlushHook extends 'flushLogs' | 'flushMetrics',\n>(\n client: Client,\n afterCaptureHook: AfterCaptureHook,\n flushHook: FlushHook,\n estimateSizeFn: (item: T) => number,\n flushFn: (client: Client) => void,\n): void {\n // Track weight and timeout in closure variables\n let weight = 0;\n let flushTimeout: ReturnType | undefined;\n let isTimerActive = false;\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(flushHook, () => {\n weight = 0;\n clearTimeout(flushTimeout);\n isTimerActive = false;\n });\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(afterCaptureHook, (item: T) => {\n weight += estimateSizeFn(item);\n\n // We flush the buffer if it exceeds 0.8 MB\n // The weight is a rough estimate, so we flush way before the payload gets too big.\n if (weight >= 800_000) {\n flushFn(client);\n } else if (!isTimerActive) {\n // Only start timer if one isn't already running.\n // This prevents flushing being delayed by items that arrive close to the timeout limit\n // and thus resetting the flushing timeout and delaying items being flushed.\n isTimerActive = true;\n // Use safeUnref so the timer doesn't prevent the process from exiting\n flushTimeout = safeUnref(\n setTimeout(() => {\n flushFn(client);\n // Note: isTimerActive is reset by the flushHook handler above, not here,\n // to avoid race conditions when new items arrive during the flush.\n }, DEFAULT_FLUSH_INTERVAL),\n );\n }\n });\n\n client.on('flush', () => {\n flushFn(client);\n });\n}\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 Client._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 Client {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex;\n\n /** Number of calls being processed */\n protected _numProcessing: number;\n\n protected _eventProcessors: EventProcessor[];\n\n /** Holds flushable */\n protected _outcomes: { [key: string]: number };\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n protected _hooks: Record>;\n\n protected _promiseBuffer: PromiseBuffer;\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n this._integrations = {};\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n this._promiseBuffer = makePromiseBuffer(options.transportOptions?.bufferSize ?? DEFAULT_TRANSPORT_BUFFER_SIZE);\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && debug.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(\n this._dsn,\n options.tunnel,\n options._metadata ? options._metadata.sdk : undefined,\n );\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n\n // Backfill enableLogs option from _experiments.enableLogs\n // TODO(v11): Remove or change default value\n // eslint-disable-next-line deprecation/deprecation\n this._options.enableLogs = this._options.enableLogs ?? this._options._experiments?.enableLogs;\n\n // Setup log flushing with weight and timeout tracking\n if (this._options.enableLogs) {\n setupWeightBasedFlushing(this, 'afterCaptureLog', 'flushLogs', estimateLogSizeInBytes, _INTERNAL_flushLogsBuffer);\n }\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const enableMetrics = this._options.enableMetrics ?? this._options._experiments?.enableMetrics ?? true;\n\n // Setup metric flushing with weight and timeout tracking\n if (enableMetrics) {\n setupWeightBasedFlushing(\n this,\n 'afterCaptureMetric',\n 'flushMetrics',\n estimateMetricSizeInBytes,\n _INTERNAL_flushMetricsBuffer,\n );\n }\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n this._process(\n () =>\n this.eventFromException(exception, hintWithEventId)\n .then(event => this._captureEvent(event, hintWithEventId, scope))\n .then(res => res),\n 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureMessage(\n message: ParameterizedString,\n level?: SeverityLevel,\n hint?: EventHint,\n currentScope?: Scope,\n ): string {\n const hintWithEventId = {\n event_id: uuid4(),\n ...hint,\n };\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n const isMessage = isPrimitive(message);\n const promisedEvent = isMessage\n ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n : this.eventFromException(message, hintWithEventId);\n\n this._process(\n () => promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)),\n isMessage ? 'unknown' : 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a manually created event and sends it to Sentry.\n *\n * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope.\n */\n public captureEvent(event: Event, hint?: EventHint, currentScope?: Scope): string {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (hint?.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n const dataCategory = getDataCategoryByType(event.type);\n\n this._process(\n () => this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope),\n dataCategory,\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a session.\n */\n public captureSession(session: Session): void {\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 * Create a cron monitor check in and send it to Sentry. This method is not available on all clients.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n * @param scope An optional scope containing event metadata.\n * @returns A string representing the id of the check in.\n */\n public captureCheckIn?(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string;\n\n /**\n * Get the current Dsn.\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * Get the current options.\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * Get the SDK metadata.\n * @see SdkMetadata\n */\n public getSdkMetadata(): SdkMetadata | undefined {\n return this._options._metadata;\n }\n\n /**\n * Returns the transport that is used by the client.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * Wait for all events to be sent or the timeout to expire, whichever comes first.\n *\n * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will\n * cause the client to wait until all events are sent before resolving the promise.\n * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are\n * still events in the queue when the timeout is reached.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (!transport) {\n return true;\n }\n\n this.emit('flush');\n\n const clientFinished = await this._isClientDoneProcessing(timeout);\n const transportFlushed = await transport.flush(timeout);\n\n return clientFinished && transportFlushed;\n }\n\n /**\n * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}.\n *\n * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause\n * the client to wait until all events are sent before disabling itself.\n * @returns {Promise} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if\n * it doesn't.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async close(timeout?: number): PromiseLike {\n _INTERNAL_flushLogsBuffer(this);\n const result = await this.flush(timeout);\n this.getOptions().enabled = false;\n this.emit('close');\n return result;\n }\n\n /**\n * Get all installed event processors.\n */\n public getEventProcessors(): EventProcessor[] {\n return this._eventProcessors;\n }\n\n /**\n * Adds an event processor that applies to any event processed by this client.\n */\n public addEventProcessor(eventProcessor: EventProcessor): void {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * Initialize this client.\n * Call this after the client was set on a scope.\n */\n public init(): void {\n if (\n this._isEnabled() ||\n // Force integrations to be setup even if no DSN was set when we have\n // Spotlight enabled. This is particularly important for browser as we\n // don't support the `spotlight` option there and rely on the users\n // adding the `spotlightBrowserIntegration()` to their integrations which\n // wouldn't get initialized with the check below when there's no DSN set.\n this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n ) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed.\n */\n public getIntegrationByName(integrationName: string): T | undefined {\n return this._integrations[integrationName] as T | undefined;\n }\n\n /**\n * Add an integration to the client.\n * This can be used to e.g. lazy load integrations.\n * In most cases, this should not be necessary,\n * and you're better off just passing the integrations via `integrations: []` at initialization time.\n * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so.\n */\n public addIntegration(integration: Integration): void {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * Send a fully prepared event to Sentry.\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n }\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env).then(sendResponse => this.emit('afterSendEvent', event, sendResponse));\n }\n\n /**\n * Send a session or session aggregrates to Sentry.\n */\n public sendSession(session: Session | SessionAggregates): void {\n // Backfill release and environment on session\n const { release: clientReleaseOption, environment: clientEnvironmentOption = DEFAULT_ENVIRONMENT } = this._options;\n if ('aggregates' in session) {\n const sessionAttrs = session.attrs || {};\n if (!sessionAttrs.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n sessionAttrs.release = sessionAttrs.release || clientReleaseOption;\n sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption;\n session.attrs = sessionAttrs;\n } else {\n if (!session.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n session.release = session.release || clientReleaseOption;\n session.environment = session.environment || clientEnvironmentOption;\n }\n\n this.emit('beforeSendSession', session);\n\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env);\n }\n\n /**\n * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry).\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory, count: number = 1): void {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) 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 const key = `${reason}:${category}`;\n DEBUG_BUILD && debug.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n /* eslint-disable @typescript-eslint/unified-signatures */\n /**\n * Register a callback for whenever a span is started.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'spanStart', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback before span sampling runs. Receives a `samplingDecision` object argument with a `decision`\n * property that can be used to make a sampling decision that will be enforced, before any span sampling runs.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSampling',\n callback: (\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ) => void,\n ): void;\n\n /**\n * Register a callback for after a span is ended.\n * NOTE: The span cannot be mutated anymore in this callback.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'spanEnd', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for when an idle span is allowed to auto-finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'idleSpanEnableAutoFinish', callback: (span: Span) => void): () => void;\n\n /**\n * Register a callback for transaction start and finish.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): () => void;\n\n /**\n * Register a callback that runs when stack frame metadata should be applied to an event.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'applyFrameMetadata', callback: (event: Event) => void): () => void;\n\n /**\n * Register a callback for before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for before sending a session or session aggregrates..\n * Receives the session/aggregate as second argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeSendSession', callback: (session: Session | SessionAggregates) => void): () => void;\n\n /**\n * Register a callback for preprocessing an event,\n * before it is passed to (global) event processors.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for postprocessing an event,\n * after it was passed to (global) event processors, before it is being sent.\n * Receives an Event & EventHint as arguments.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'postprocessEvent', callback: (event: Event, hint?: EventHint | undefined) => void): () => void;\n\n /**\n * Register a callback for when an event has been sent.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse) => void,\n ): () => void;\n\n /**\n * Register a callback before a breadcrumb is added.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): () => void;\n\n /**\n * Register a callback when a DSC (Dynamic Sampling Context) is created.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext, rootSpan?: Span) => void): () => void;\n\n /**\n * Register a callback when a Feedback event has been prepared.\n * This should be used to mutate the event. The options argument can hint\n * about what kind of mutation it expects.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeSendFeedback',\n callback: (feedback: FeedbackEvent, options?: { includeReplay?: boolean }) => void,\n ): () => void;\n\n /**\n * Register a callback when the feedback widget is opened in a user's browser\n */\n public on(hook: 'openFeedbackWidget', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger a span start for a page load.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startPageLoadSpan',\n callback: (\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ) => void,\n ): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger the end of a page load span.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'endPageloadSpan', callback: () => void): () => void;\n\n /**\n * A hook for the browser tracing integrations to trigger after the pageload span was started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterStartPageLoadSpan', callback: (span: Span) => void): () => void;\n\n /**\n * A hook for triggering right before a navigation span is started.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeStartNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for browser tracing integrations to trigger a span for a navigation.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'startNavigationSpan',\n callback: (options: StartSpanOptions, navigationOptions?: { isRedirect?: boolean }) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a span with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestSpan',\n callback: (span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook for GraphQL client integration to enhance a breadcrumb with request data.\n * @returns A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'beforeOutgoingRequestBreadcrumb',\n callback: (breadcrumb: Breadcrumb, hint: XhrBreadcrumbHint | FetchBreadcrumbHint) => void,\n ): () => void;\n\n /**\n * A hook that is called when the client is flushing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flush', callback: () => void): () => void;\n\n /**\n * A hook that is called when the client is closing\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'close', callback: () => void): () => void;\n\n /**\n * A hook that is called before a log is captured. This hooks runs before `beforeSendLog` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'beforeCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called after a log is captured\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureLog', callback: (log: Log) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing logs\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushLogs', callback: () => void): () => void;\n\n /**\n * A hook that is called after capturing a metric. This hooks runs after `beforeSendMetric` is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'afterCaptureMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when the client is flushing metrics\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'flushMetrics', callback: () => void): () => void;\n\n /**\n * A hook that is called when a metric is processed before it is captured and before the `beforeSendMetric` callback is fired.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'processMetric', callback: (metric: Metric) => void): () => void;\n\n /**\n * A hook that is called when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(\n hook: 'httpServerRequest',\n callback: (request: unknown, response: unknown, normalizedRequest: RequestEventData) => void,\n ): () => void;\n\n /**\n * A hook that is called when the UI Profiler should start profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.startProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'startUIProfiler', callback: () => void): () => void;\n\n /**\n * A hook that is called when the UI Profiler should stop profiling.\n *\n * This hook is called when running `Sentry.uiProfiler.stopProfiler()`.\n *\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n public on(hook: 'stopUIProfiler', callback: () => void): () => void;\n\n /**\n * Register a hook on this client.\n */\n public on(hook: string, callback: unknown): () => void {\n const hookCallbacks = (this._hooks[hook] = this._hooks[hook] || new Set());\n\n // Wrap the callback in a function so that registering the same callback instance multiple\n // times results in the callback being called multiple times.\n // @ts-expect-error - The `callback` type is correct and must be a function due to the\n // individual, specific overloads of this function.\n // eslint-disable-next-line @typescript-eslint/ban-types\n const uniqueCallback: Function = (...args: unknown[]) => callback(...args);\n\n hookCallbacks.add(uniqueCallback);\n\n // This function returns a callback execution handler that, when invoked,\n // deregisters a callback. This is crucial for managing instances where callbacks\n // need to be unregistered to prevent self-referencing in callback closures,\n // ensuring proper garbage collection.\n return () => {\n hookCallbacks.delete(uniqueCallback);\n };\n }\n\n /** Fire a hook whenever a span starts. */\n public emit(hook: 'spanStart', span: Span): void;\n\n /** A hook that is called every time before a span is sampled. */\n public emit(\n hook: 'beforeSampling',\n samplingData: {\n spanAttributes: SpanAttributes;\n spanName: string;\n parentSampled?: boolean;\n parentSampleRate?: number;\n parentContext?: SpanContextData;\n },\n samplingDecision: { decision: boolean },\n ): void;\n\n /** Fire a hook whenever a span ends. */\n public emit(hook: 'spanEnd', span: Span): void;\n\n /**\n * Fire a hook indicating that an idle span is allowed to auto finish.\n */\n public emit(hook: 'idleSpanEnableAutoFinish', span: Span): void;\n\n /**\n * Fire a hook event for envelope creation and sending. Expects to be given an envelope as the\n * second argument.\n */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /**\n * Fire a hook indicating that stack frame metadata should be applied to the event passed to the hook.\n */\n public emit(hook: 'applyFrameMetadata', event: Event): void;\n\n /**\n * Fire a hook event before sending an event.\n * This is called right before an event is sent and should not be used to mutate the event.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event before sending a session/aggregates.\n * Expects to be given the prepared session/aggregates as second argument.\n */\n public emit(hook: 'beforeSendSession', session: Session | SessionAggregates): void;\n\n /**\n * Fire a hook event to process events before they are passed to (global) event processors.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event to process a user on an event before it is sent to Sentry, after all other processors have run.\n * Expects to be given an Event & EventHint as the second/third argument.\n */\n public emit(hook: 'postprocessEvent', event: Event, hint?: EventHint): void;\n\n /**\n * Fire a hook event after sending an event. Expects to be given an Event as the\n * second argument.\n */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse): void;\n\n /**\n * Fire a hook for when a breadcrumb is added. Expects the breadcrumb as second argument.\n */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /**\n * Fire a hook for when a DSC (Dynamic Sampling Context) is created. Expects the DSC as second argument.\n */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext, rootSpan?: Span): void;\n\n /**\n * Fire a hook event for after preparing a feedback event. Events to be given\n * a feedback event as the second argument, and an optional options object as\n * third argument.\n */\n public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay?: boolean }): void;\n\n /**\n * Fire a hook event for when the feedback widget is opened in a user's browser\n */\n public emit(hook: 'openFeedbackWidget'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span start for a page load.\n */\n public emit(\n hook: 'startPageLoadSpan',\n options: StartSpanOptions,\n traceOptions?: { sentryTrace?: string | undefined; baggage?: string | undefined },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger the end of a page load span.\n */\n public emit(hook: 'endPageloadSpan'): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger aafter the pageload span was started.\n */\n public emit(hook: 'afterStartPageLoadSpan', span: Span): void;\n\n /**\n * Emit a hook event for triggering right before a navigation span is started.\n */\n public emit(\n hook: 'beforeStartNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for browser tracing integrations to trigger a span for a navigation.\n */\n public emit(\n hook: 'startNavigationSpan',\n options: StartSpanOptions,\n navigationOptions?: { isRedirect?: boolean },\n ): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a span with request data.\n */\n public emit(hook: 'beforeOutgoingRequestSpan', span: Span, hint: XhrBreadcrumbHint | FetchBreadcrumbHint): void;\n\n /**\n * Emit a hook event for GraphQL client integration to enhance a breadcrumb with request data.\n */\n public emit(\n hook: 'beforeOutgoingRequestBreadcrumb',\n breadcrumb: Breadcrumb,\n hint: XhrBreadcrumbHint | FetchBreadcrumbHint,\n ): void;\n\n /**\n * Emit a hook event for client flush\n */\n public emit(hook: 'flush'): void;\n\n /**\n * Emit a hook event for client close\n */\n public emit(hook: 'close'): void;\n\n /**\n * Emit a hook event for client before capturing a log. This hooks runs before `beforeSendLog` is fired.\n */\n public emit(hook: 'beforeCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client after capturing a log.\n */\n public emit(hook: 'afterCaptureLog', log: Log): void;\n\n /**\n * Emit a hook event for client flush logs\n */\n public emit(hook: 'flushLogs'): void;\n\n /**\n * Emit a hook event for client after capturing a metric.\n */\n public emit(hook: 'afterCaptureMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client flush metrics\n */\n public emit(hook: 'flushMetrics'): void;\n\n /**\n *\n * Emit a hook event for client to process a metric before it is captured.\n * This hook is called before the `beforeSendMetric` callback is fired.\n */\n public emit(hook: 'processMetric', metric: Metric): void;\n\n /**\n * Emit a hook event for client when a http server request is started.\n * This hook is called after request isolation, but before the request is processed.\n */\n public emit(\n hook: 'httpServerRequest',\n request: unknown,\n response: unknown,\n normalizedRequest: RequestEventData,\n ): void;\n\n /**\n * Emit a hook event for starting the UI Profiler.\n */\n public emit(hook: 'startUIProfiler'): void;\n\n /**\n * Emit a hook event for stopping the UI Profiler.\n */\n public emit(hook: 'stopUIProfiler'): void;\n\n /**\n * Emit a hook that was previously registered via `on()`.\n */\n public emit(hook: string, ...rest: unknown[]): void {\n const callbacks = this._hooks[hook];\n if (callbacks) {\n callbacks.forEach(callback => callback(...rest));\n }\n }\n\n /**\n * Send an envelope to Sentry.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async sendEnvelope(envelope: Envelope): PromiseLike {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n try {\n return await this._transport.send(envelope);\n } catch (reason) {\n DEBUG_BUILD && debug.error('Error while sending envelope:', reason);\n return {};\n }\n }\n\n DEBUG_BUILD && debug.error('Transport disabled');\n return {};\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * Subclasses should override this method to clean up their own resources.\n * After calling dispose(), the client should not be used anymore.\n */\n public dispose(): void {\n // Base class has no cleanup logic - subclasses implement their own\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n protected _setupIntegrations(): void {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n // initially, set `crashed` based on the event level and update from exceptions if there are any later on\n let crashed = event.level === 'fatal';\n let errored = false;\n const exceptions = event.exception?.values;\n\n if (exceptions) {\n errored = true;\n // reset crashed to false if there are exceptions, to ensure `mechanism.handled` is respected.\n crashed = false;\n\n for (const ex of exceptions) {\n if (ex.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 const sessionNonTerminal = session.status === 'ok';\n const 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 protected async _isClientDoneProcessing(timeout?: number): Promise {\n let ticked = 0;\n\n while (!timeout || ticked < timeout) {\n await new Promise(resolve => setTimeout(resolve, 1));\n\n if (!this._numProcessing) {\n return true;\n }\n ticked++;\n }\n\n return false;\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._transport !== 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 currentScope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations?.length) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n if (!event.type) {\n isolationScope.setLastEventId(event.event_id || hint.event_id);\n }\n\n return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n this.emit('postprocessEvent', evt, hint);\n\n evt.contexts = {\n trace: { ...evt.contexts?.trace, ...getTraceContextFromScope(currentScope) },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n\n return evt;\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 protected _captureEvent(\n event: Event,\n hint: EventHint = {},\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ): PromiseLike {\n if (DEBUG_BUILD && isErrorEvent(event)) {\n debug.log(`Captured error event \\`${getPossibleEventMessages(event)[0] || ''}\\``);\n }\n\n return this._processEvent(event, hint, currentScope, isolationScope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n if (_isDoNotSendEventError(reason)) {\n debug.log(reason.message);\n } else if (_isInternalError(reason)) {\n debug.warn(reason.message);\n } else {\n debug.warn(reason);\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 currentScope 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 protected _processEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n if (isError && typeof parsedSampleRate === 'number' && safeMathRandom() > parsedSampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n _makeDoNotSendEventError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n const dataCategory = getDataCategoryByType(event.type);\n\n return this._prepareEvent(event, hint, currentScope, isolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory);\n throw _makeDoNotSendEventError('An event processor returned `null`, will not send event.');\n }\n\n const isInternalException = (hint.data as { __sentry__: boolean })?.__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(this, options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw _makeDoNotSendEventError(`${beforeSendLabel} returned \\`null\\`, will not send event.`);\n }\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (isError && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore = processedEvent.sdkProcessingMetadata?.spanCountBeforeProcessing || 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (_isDoNotSendEventError(reason) || _isInternalError(reason)) {\n throw reason;\n }\n\n this.captureException(reason, {\n mechanism: {\n handled: false,\n type: 'internal',\n },\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw _makeInternalError(\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 protected _process(taskProducer: () => PromiseLike, dataCategory: DataCategory): void {\n this._numProcessing++;\n\n void this._promiseBuffer.add(taskProducer).then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n\n if (reason === SENTRY_BUFFER_FULL_ERROR) {\n this.recordDroppedEvent('queue_overflow', dataCategory);\n }\n\n return reason;\n },\n );\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n protected _flushOutcomes(): void {\n DEBUG_BUILD && debug.log('Flushing outcomes...');\n\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && debug.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && debug.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && debug.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n */\n public abstract eventFromException(_exception: unknown, _hint?: EventHint): PromiseLike;\n\n /**\n * Creates an {@link Event} from primitive inputs to `captureMessage`.\n */\n public abstract eventFromMessage(\n _message: ParameterizedString,\n _level?: SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\nfunction getDataCategoryByType(type: EventType | 'replay_event' | undefined): DataCategory {\n return type === 'replay_event' ? 'replay' : type || 'error';\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike | Event | null,\n beforeSendLabel: string,\n): PromiseLike | Event | null {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return event;\n },\n e => {\n throw _makeInternalError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n client: Client,\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike | Event | null {\n const { beforeSend, beforeSendTransaction, beforeSendSpan, ignoreSpans } = options;\n let processedEvent = event;\n\n if (isErrorEvent(processedEvent) && beforeSend) {\n return beforeSend(processedEvent, hint);\n }\n\n if (isTransactionEvent(processedEvent)) {\n // Avoid processing if we don't have to\n if (beforeSendSpan || ignoreSpans) {\n // 1. Process root span\n const rootSpanJson = convertTransactionEventToSpanJson(processedEvent);\n\n // 1.1 If the root span should be ignored, drop the whole transaction\n if (ignoreSpans?.length && shouldIgnoreSpan(rootSpanJson, ignoreSpans)) {\n // dropping the whole transaction!\n return null;\n }\n\n // 1.2 If a `beforeSendSpan` callback is defined, process the root span\n if (beforeSendSpan) {\n const processedRootSpanJson = beforeSendSpan(rootSpanJson);\n if (!processedRootSpanJson) {\n showSpanDropWarning();\n } else {\n // update event with processed root span values\n processedEvent = merge(event, convertSpanJsonToTransactionEvent(processedRootSpanJson));\n }\n }\n\n // 2. Process child spans\n if (processedEvent.spans) {\n const processedSpans: SpanJSON[] = [];\n\n const initialSpans = processedEvent.spans;\n\n for (const span of initialSpans) {\n // 2.a If the child span should be ignored, reparent it to the root span\n if (ignoreSpans?.length && shouldIgnoreSpan(span, ignoreSpans)) {\n reparentChildSpans(initialSpans, span);\n continue;\n }\n\n // 2.b If a `beforeSendSpan` callback is defined, process the child span\n if (beforeSendSpan) {\n const processedSpan = beforeSendSpan(span);\n if (!processedSpan) {\n showSpanDropWarning();\n processedSpans.push(span);\n } else {\n processedSpans.push(processedSpan);\n }\n } else {\n processedSpans.push(span);\n }\n }\n\n const droppedSpans = processedEvent.spans.length - processedSpans.length;\n if (droppedSpans) {\n client.recordDroppedEvent('before_send', 'span', droppedSpans);\n }\n\n processedEvent.spans = processedSpans;\n }\n }\n\n if (beforeSendTransaction) {\n if (processedEvent.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = processedEvent.spans.length;\n processedEvent.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(processedEvent as TransactionEvent, hint);\n }\n }\n\n return processedEvent;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n\n/**\n * Estimate the size of a metric in bytes.\n *\n * @param metric - The metric to estimate the size of.\n * @returns The estimated size of the metric in bytes.\n */\nfunction estimateMetricSizeInBytes(metric: Metric): number {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (metric.name) {\n weight += metric.name.length * 2;\n }\n\n // Add weight for number\n weight += 8;\n\n return weight + estimateAttributesSizeInBytes(metric.attributes);\n}\n\n/**\n * Estimate the size of a log in bytes.\n *\n * @param log - The log to estimate the size of.\n * @returns The estimated size of the log in bytes.\n */\nfunction estimateLogSizeInBytes(log: Log): number {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (log.message) {\n weight += log.message.length * 2;\n }\n\n return weight + estimateAttributesSizeInBytes(log.attributes);\n}\n\n/**\n * Estimate the size of attributes in bytes.\n *\n * @param attributes - The attributes object to estimate the size of.\n * @returns The estimated size of the attributes in bytes.\n */\nfunction estimateAttributesSizeInBytes(attributes: Record | undefined): number {\n if (!attributes) {\n return 0;\n }\n\n let weight = 0;\n\n Object.values(attributes).forEach(value => {\n if (Array.isArray(value)) {\n weight += value.length * estimatePrimitiveSizeInBytes(value[0]);\n } else if (isPrimitive(value)) {\n weight += estimatePrimitiveSizeInBytes(value);\n } else {\n // For objects values, we estimate the size of the object as 100 bytes\n weight += 100;\n }\n });\n\n return weight;\n}\n\nfunction estimatePrimitiveSizeInBytes(value: Primitive): number {\n if (typeof value === 'string') {\n return value.length * 2;\n } else if (typeof value === 'number') {\n return 8;\n } else if (typeof value === 'boolean') {\n return 4;\n }\n\n return 0;\n}\n","import type { SerializedCheckIn } from './types-hoist/checkin';\nimport type { DsnComponents } from './types-hoist/dsn';\nimport type { CheckInEnvelope, CheckInItem, DynamicSamplingContext } from './types-hoist/envelope';\nimport type { SdkMetadata } from './types-hoist/sdkmetadata';\nimport { dsnToString } from './utils/dsn';\nimport { createEnvelope } from './utils/envelope';\n\n/**\n * Create envelope from check in item.\n */\nexport function createCheckInEnvelope(\n checkIn: SerializedCheckIn,\n dynamicSamplingContext?: Partial,\n metadata?: SdkMetadata,\n tunnel?: string,\n dsn?: DsnComponents,\n): CheckInEnvelope {\n const headers: CheckInEnvelope[0] = {\n sent_at: new Date().toISOString(),\n };\n\n if (metadata?.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && !!dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n if (dynamicSamplingContext) {\n headers.trace = dynamicSamplingContext as DynamicSamplingContext;\n }\n\n const item = createCheckInEnvelopeItem(checkIn);\n return createEnvelope(headers, [item]);\n}\n\nfunction createCheckInEnvelopeItem(checkIn: SerializedCheckIn): CheckInItem {\n const checkInHeaders: CheckInItem[0] = {\n type: 'check_in',\n };\n return [checkInHeaders, checkIn];\n}\n","import type { ClientOptions } from '../types-hoist/options';\n\n/**\n * Takes the SDK metadata and adds the user-agent header to the transport options.\n * This ensures that the SDK sends the user-agent header with SDK name and version to\n * all requests made by the transport.\n *\n * @see https://develop.sentry.dev/sdk/overview/#user-agent\n */\nexport function addUserAgentToTransportHeaders(options: ClientOptions): void {\n const sdkMetadata = options._metadata?.sdk;\n const sdkUserAgent =\n sdkMetadata?.name && sdkMetadata?.version ? `${sdkMetadata?.name}/${sdkMetadata?.version}` : undefined;\n\n options.transportOptions = {\n ...options.transportOptions,\n headers: {\n ...(sdkUserAgent && { 'user-agent': sdkUserAgent }),\n ...options.transportOptions?.headers,\n },\n };\n}\n","import type { Client } from '../client';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { Extras } from '../types-hoist/extra';\nimport type { Mechanism } from '../types-hoist/mechanism';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport type { SeverityLevel } from '../types-hoist/severity';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isError, isErrorEvent, isParameterizedString, isPlainObject } from './is';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc';\nimport { normalizeToSize } from './normalize';\nimport { extractExceptionKeysForMessage } from './object';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nexport function parseStackFrames(stackParser: StackParser, error: Error): StackFrame[] {\n return stackParser(error.stack || '', 1);\n}\n\nfunction hasSentryFetchUrlHost(error: unknown): error is Error & { __sentry_fetch_url_host__: string } {\n return isError(error) && '__sentry_fetch_url_host__' in error && typeof error.__sentry_fetch_url_host__ === 'string';\n}\n\n/**\n * Enhances the error message with the hostname for better Sentry error reporting.\n * This allows third-party packages to still match on the original error message,\n * while Sentry gets the enhanced version with context.\n *\n * Only used internally\n * @hidden\n */\nexport function _enhanceErrorWithSentryInfo(error: T): string {\n // If the error has a __sentry_fetch_url_host__ property (added by fetch instrumentation),\n // enhance the error message with the hostname.\n if (hasSentryFetchUrlHost(error)) {\n return `${error.message} (${error.__sentry_fetch_url_host__})`;\n }\n\n return error.message;\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nexport function exceptionFromError(stackParser: StackParser, error: Error): Exception {\n const exception: Exception = {\n type: error.name || error.constructor.name,\n value: _enhanceErrorWithSentryInfo(error),\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj: Record): Error | undefined {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (value instanceof Error) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nfunction getMessageForObject(exception: Record): string {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n }\n\n const keys = extractExceptionKeysForMessage(exception);\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as exception with message \\`${exception.message}\\``;\n }\n\n const className = getObjectClassName(exception);\n\n return `${\n className && className !== 'Object' ? `'${className}'` : 'Object'\n } captured as exception with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n try {\n const prototype: unknown | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\nfunction getException(\n client: Client,\n mechanism: Mechanism,\n exception: unknown,\n hint?: EventHint,\n): [Error, Extras | undefined] {\n if (isError(exception)) {\n return [exception, undefined];\n }\n\n // Mutate this!\n mechanism.synthetic = true;\n\n if (isPlainObject(exception)) {\n const normalizeDepth = client?.getOptions().normalizeDepth;\n const extras = { ['__serialized__']: normalizeToSize(exception, normalizeDepth) };\n\n const errorFromProp = getErrorPropertyFromObject(exception);\n if (errorFromProp) {\n return [errorFromProp, extras];\n }\n\n const message = getMessageForObject(exception);\n const ex = hint?.syntheticException || new Error(message);\n ex.message = message;\n\n return [ex, extras];\n }\n\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n const ex = hint?.syntheticException || new Error(exception as string);\n ex.message = `${exception}`;\n\n return [ex, undefined];\n}\n\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromUnknownInput(\n client: Client,\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n): Event {\n const providedMechanism: Mechanism | undefined = hint?.data && (hint.data as { mechanism: Mechanism }).mechanism;\n const mechanism: Mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n const [ex, extras] = getException(client, mechanism, exception, hint);\n\n const event: Event = {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint?.event_id,\n };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n event_id: hint?.event_id,\n level,\n };\n\n if (attachStacktrace && hint?.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n addExceptionMechanism(event, { synthetic: true });\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n","import { createCheckInEnvelope } from './checkin';\nimport { Client } from './client';\nimport { getIsolationScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Scope } from './scope';\nimport { registerSpanErrorInstrumentation } from './tracing';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base';\nimport { addUserAgentToTransportHeaders } from './transports/userAgent';\nimport type { CheckIn, MonitorConfig, SerializedCheckIn } from './types-hoist/checkin';\nimport type { Event, EventHint } from './types-hoist/event';\nimport type { ClientOptions } from './types-hoist/options';\nimport type { ParameterizedString } from './types-hoist/parameterize';\nimport type { SeverityLevel } from './types-hoist/severity';\nimport type { BaseTransportOptions, Transport } from './types-hoist/transport';\nimport { debug } from './utils/debug-logger';\nimport { eventFromMessage, eventFromUnknownInput } from './utils/eventbuilder';\nimport { uuid4 } from './utils/misc';\nimport { makePromiseBuffer } from './utils/promisebuffer';\nimport { resolvedSyncPromise } from './utils/syncpromise';\nimport { _getTraceInfoFromScope } from './utils/trace-info';\n\nexport interface ServerRuntimeClientOptions extends ClientOptions {\n platform?: string;\n runtime?: { name: string; version?: string };\n serverName?: string;\n}\n\n/**\n * The Sentry Server Runtime Client SDK.\n */\nexport class ServerRuntimeClient<\n O extends ClientOptions & ServerRuntimeClientOptions = ServerRuntimeClientOptions,\n> extends Client {\n /**\n * Creates a new Edge SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: O) {\n // Server clients always support tracing\n registerSpanErrorInstrumentation();\n\n addUserAgentToTransportHeaders(options);\n\n super(options);\n\n this._setUpMetricsProcessing();\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n const event = eventFromUnknownInput(this, this._options.stackParser, exception, hint);\n event.level = 'error';\n\n return resolvedSyncPromise(event);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: ParameterizedString,\n level: SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return resolvedSyncPromise(\n eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace),\n );\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: unknown, hint?: EventHint, scope?: Scope): string {\n setCurrentRequestSessionErroredOrCrashed(hint);\n return super.captureException(exception, hint, scope);\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string {\n // If the event is of type Exception, then a request session should be captured\n const isException = !event.type && event.exception?.values && event.exception.values.length > 0;\n if (isException) {\n setCurrentRequestSessionErroredOrCrashed(hint);\n }\n\n return super.captureEvent(event, hint, scope);\n }\n\n /**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\n public captureCheckIn(checkIn: CheckIn, monitorConfig?: MonitorConfig, scope?: Scope): string {\n const id = 'checkInId' in checkIn && checkIn.checkInId ? checkIn.checkInId : uuid4();\n if (!this._isEnabled()) {\n DEBUG_BUILD && debug.warn('SDK not enabled, will not capture check-in.');\n return id;\n }\n\n const options = this.getOptions();\n const { release, environment, tunnel } = options;\n\n const serializedCheckIn: SerializedCheckIn = {\n check_in_id: id,\n monitor_slug: checkIn.monitorSlug,\n status: checkIn.status,\n release,\n environment,\n };\n\n if ('duration' in checkIn) {\n serializedCheckIn.duration = checkIn.duration;\n }\n\n if (monitorConfig) {\n serializedCheckIn.monitor_config = {\n schedule: monitorConfig.schedule,\n checkin_margin: monitorConfig.checkinMargin,\n max_runtime: monitorConfig.maxRuntime,\n timezone: monitorConfig.timezone,\n failure_issue_threshold: monitorConfig.failureIssueThreshold,\n recovery_threshold: monitorConfig.recoveryThreshold,\n };\n }\n\n const [dynamicSamplingContext, traceContext] = _getTraceInfoFromScope(this, scope);\n if (traceContext) {\n serializedCheckIn.contexts = {\n trace: traceContext,\n };\n }\n\n const envelope = createCheckInEnvelope(\n serializedCheckIn,\n dynamicSamplingContext,\n this.getSdkMetadata(),\n tunnel,\n this.getDsn(),\n );\n\n DEBUG_BUILD && debug.log('Sending checkin:', checkIn.monitorSlug, checkIn.status);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n\n return id;\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * This method clears all internal state to allow the client to be garbage collected.\n * It clears hooks, event processors, integrations, transport, and other internal references.\n *\n * Call this method after flushing to allow the client to be garbage collected.\n * After calling dispose(), the client should not be used anymore.\n *\n * Subclasses should override this method to clean up their own resources and call `super.dispose()`.\n */\n public override dispose(): void {\n DEBUG_BUILD && debug.log('Disposing client...');\n\n for (const hookName of Object.keys(this._hooks)) {\n this._hooks[hookName]?.clear();\n }\n\n this._hooks = {};\n this._eventProcessors.length = 0;\n this._integrations = {};\n this._outcomes = {};\n (this as unknown as { _transport?: Transport })._transport = undefined;\n this._promiseBuffer = makePromiseBuffer(DEFAULT_TRANSPORT_BUFFER_SIZE);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n currentScope: Scope,\n isolationScope: Scope,\n ): PromiseLike {\n if (this._options.platform) {\n event.platform = event.platform || this._options.platform;\n }\n\n if (this._options.runtime) {\n event.contexts = {\n ...event.contexts,\n runtime: event.contexts?.runtime || this._options.runtime,\n };\n }\n\n if (this._options.serverName) {\n event.server_name = event.server_name || this._options.serverName;\n }\n\n return super._prepareEvent(event, hint, currentScope, isolationScope);\n }\n\n /**\n * Process a server-side metric before it is captured.\n */\n private _setUpMetricsProcessing(): void {\n this.on('processMetric', metric => {\n if (this._options.serverName) {\n metric.attributes = {\n 'server.address': this._options.serverName,\n ...metric.attributes,\n };\n }\n });\n }\n}\n\nfunction setCurrentRequestSessionErroredOrCrashed(eventHint?: EventHint): void {\n const requestSession = getIsolationScope().getScopeData().sdkProcessingMetadata.requestSession;\n if (requestSession) {\n // We mutate instead of doing `setSdkProcessingMetadata` because the http integration stores away a particular\n // isolationScope. If that isolation scope is forked, setting the processing metadata here will not mutate the\n // original isolation scope that the http integration stored away.\n const isHandledException = eventHint?.mechanism?.handled ?? true;\n // A request session can go from \"errored\" -> \"crashed\" but not \"crashed\" -> \"errored\".\n // Crashed (unhandled exception) is worse than errored (handled exception).\n if (isHandledException && requestSession.status !== 'crashed') {\n requestSession.status = 'errored';\n } else if (!isHandledException) {\n requestSession.status = 'crashed';\n }\n }\n}\n","import type { Client } from './client';\nimport { getCurrentScope } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ClientOptions } from './types-hoist/options';\nimport { consoleSandbox, debug } from './utils/debug-logger';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\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 */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): Client {\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n debug.enable();\n } else {\n // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n client.init();\n return client;\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n getCurrentScope().setClient(client);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { Envelope } from '../types-hoist/envelope';\nimport type { InternalBaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { debug } from '../utils/debug-logger';\nimport { envelopeContainsItemType } from '../utils/envelope';\nimport { parseRetryAfterHeader } from '../utils/ratelimit';\nimport { safeUnref } from '../utils/timer';\n\nexport const MIN_DELAY = 100; // 100 ms\nexport const START_DELAY = 5_000; // 5 seconds\nconst MAX_DELAY = 3.6e6; // 1 hour\n\nexport interface OfflineStore {\n push(env: Envelope): Promise;\n unshift(env: Envelope): Promise;\n shift(): Promise;\n}\n\nexport type CreateOfflineStore = (options: OfflineTransportOptions) => OfflineStore;\n\nexport interface OfflineTransportOptions extends InternalBaseTransportOptions {\n /**\n * A function that creates the offline store instance.\n */\n createStore?: CreateOfflineStore;\n\n /**\n * Flush the offline store shortly after startup.\n *\n * Defaults: false\n */\n flushAtStartup?: boolean;\n\n /**\n * Called before an event is stored.\n *\n * Return false to drop the envelope rather than store it.\n *\n * @param envelope The envelope that failed to send.\n * @param error The error that occurred.\n * @param retryDelay The current retry delay in milliseconds.\n * @returns Whether the envelope should be stored.\n */\n shouldStore?: (envelope: Envelope, error: Error, retryDelay: number) => boolean | Promise;\n\n /**\n * Should an attempt be made to send the envelope to Sentry.\n *\n * If this function is supplied and returns false, `shouldStore` will be called to determine if the envelope should be stored.\n *\n * @param envelope The envelope that will be sent.\n * @returns Whether we should attempt to send the envelope\n */\n shouldSend?: (envelope: Envelope) => boolean | Promise;\n}\n\ntype Timer = number | { unref?: () => void };\n\n/**\n * Wraps a transport and stores and retries events when they fail to send.\n *\n * @param createTransport The transport to wrap.\n */\nexport function makeOfflineTransport(\n createTransport: (options: TO) => Transport,\n): (options: TO & OfflineTransportOptions) => Transport {\n function log(...args: unknown[]): void {\n DEBUG_BUILD && debug.log('[Offline]:', ...args);\n }\n\n return options => {\n const transport = createTransport(options);\n\n if (!options.createStore) {\n throw new Error('No `createStore` function was provided');\n }\n\n const store = options.createStore(options);\n\n let retryDelay = START_DELAY;\n let flushTimer: Timer | undefined;\n\n function shouldQueue(env: Envelope, error: Error, retryDelay: number): boolean | Promise {\n // We want to drop client reports because they can be generated when we retry sending events while offline.\n if (envelopeContainsItemType(env, ['client_report'])) {\n return false;\n }\n\n if (options.shouldStore) {\n return options.shouldStore(env, error, retryDelay);\n }\n\n return true;\n }\n\n function flushIn(delay: number): void {\n if (flushTimer) {\n clearTimeout(flushTimer as ReturnType);\n }\n\n // We need to unref the timer in node.js, otherwise the node process never exit.\n flushTimer = safeUnref(\n setTimeout(async () => {\n flushTimer = undefined;\n\n const found = await store.shift();\n if (found) {\n log('Attempting to send previously queued event');\n\n // We should to update the sent_at timestamp to the current time.\n found[0].sent_at = new Date().toISOString();\n\n void send(found, true).catch(e => {\n log('Failed to retry sending', e);\n });\n }\n }, delay),\n ) as Timer;\n }\n\n function flushWithBackOff(): void {\n if (flushTimer) {\n return;\n }\n\n flushIn(retryDelay);\n\n retryDelay = Math.min(retryDelay * 2, MAX_DELAY);\n }\n\n async function send(envelope: Envelope, isRetry: boolean = false): Promise {\n // We queue all replay envelopes to avoid multiple replay envelopes being sent at the same time. If one fails, we\n // need to retry them in order.\n if (!isRetry && envelopeContainsItemType(envelope, ['replay_event', 'replay_recording'])) {\n await store.push(envelope);\n flushIn(MIN_DELAY);\n return {};\n }\n\n try {\n if (options.shouldSend && (await options.shouldSend(envelope)) === false) {\n throw new Error('Envelope not sent because `shouldSend` callback returned false');\n }\n\n const result = await transport.send(envelope);\n\n let delay = MIN_DELAY;\n\n if (result) {\n // If there's a retry-after header, use that as the next delay.\n if (result.headers?.['retry-after']) {\n delay = parseRetryAfterHeader(result.headers['retry-after']);\n } else if (result.headers?.['x-sentry-rate-limits']) {\n delay = 60_000; // 60 seconds\n } // If we have a server error, return now so we don't flush the queue.\n else if ((result.statusCode || 0) >= 400) {\n return result;\n }\n }\n\n flushIn(delay);\n retryDelay = START_DELAY;\n return result;\n } catch (e) {\n if (await shouldQueue(envelope, e as Error, retryDelay)) {\n // If this envelope was a retry, we want to add it to the front of the queue so it's retried again first.\n if (isRetry) {\n await store.unshift(envelope);\n } else {\n await store.push(envelope);\n }\n flushWithBackOff();\n log('Error sending. Event queued.', e as Error);\n return {};\n } else {\n throw e;\n }\n }\n }\n\n if (options.flushAtStartup) {\n flushWithBackOff();\n }\n\n return {\n send,\n flush: timeout => {\n // If there's no timeout, we should attempt to flush the offline queue.\n if (timeout === undefined) {\n retryDelay = START_DELAY;\n flushIn(MIN_DELAY);\n }\n\n return transport.flush(timeout);\n },\n };\n };\n}\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\nimport type { Envelope, EnvelopeItemType, EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { BaseTransportOptions, Transport, TransportMakeRequestResponse } from '../types-hoist/transport';\nimport { dsnFromString } from '../utils/dsn';\nimport { createEnvelope, forEachEnvelopeItem } from '../utils/envelope';\n\ninterface MatchParam {\n /** The envelope to be sent */\n envelope: Envelope;\n /**\n * A function that returns an event from the envelope if one exists. You can optionally pass an array of envelope item\n * types to filter by - only envelopes matching the given types will be multiplexed.\n * Allowed values are: 'event', 'transaction', 'profile', 'replay_event'\n *\n * @param types Defaults to ['event']\n */\n getEvent(types?: EnvelopeItemType[]): Event | undefined;\n}\n\ntype RouteTo = { dsn: string; release: string };\ntype Matcher = (param: MatchParam) => (string | RouteTo)[];\n\n/**\n * Key used in event.extra to provide routing information for the multiplexed transport.\n * Should contain an array of `{ dsn: string, release?: string }` objects.\n */\nexport const MULTIPLEXED_TRANSPORT_EXTRA_KEY = 'MULTIPLEXED_TRANSPORT_EXTRA_KEY';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nexport function eventFromEnvelope(env: Envelope, types: EnvelopeItemType[]): Event | undefined {\n let event: Event | undefined;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport: (options: TO) => Transport,\n release: string,\n): (options: TO) => Transport {\n return options => {\n const transport = createTransport(options);\n\n return {\n ...transport,\n send: async (envelope: Envelope): Promise => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n };\n };\n}\n\n/** Overrides the DSN in the envelope header */\nfunction overrideDsn(envelope: Envelope, dsn: string): Envelope {\n return createEnvelope(\n dsn\n ? {\n ...envelope[0],\n dsn,\n }\n : envelope[0],\n envelope[1],\n );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n *\n * If no matcher is provided, the transport will look for routing information in\n * `event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]`, which should contain\n * an array of `{ dsn: string, release?: string }` objects.\n */\nexport function makeMultiplexedTransport(\n createTransport: (options: TO) => Transport,\n matcher?: Matcher,\n): (options: TO) => Transport {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports: Map = new Map();\n\n // Use provided matcher or default to simple multiplexed transport behavior\n const actualMatcher: Matcher =\n matcher ||\n (args => {\n const event = args.getEvent();\n if (\n event?.extra?.[MULTIPLEXED_TRANSPORT_EXTRA_KEY] &&\n Array.isArray(event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY])\n ) {\n return event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY];\n }\n return [];\n });\n\n function getTransport(dsn: string, release: string | undefined): [string, Transport] | undefined {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n let transport = otherTransports.get(key);\n\n if (!transport) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n transport = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n\n otherTransports.set(key, transport);\n }\n\n return [dsn, transport];\n }\n\n async function send(envelope: Envelope): Promise {\n function getEvent(types?: EnvelopeItemType[]): Event | undefined {\n const eventTypes: EnvelopeItemType[] = types?.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = actualMatcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t): t is [string, Transport] => !!t);\n\n // If we have no transports to send to, use the fallback transport\n // Don't override the DSN in the header for the fallback transport. '' is falsy\n const transportsWithFallback: [string, Transport][] = transports.length ? transports : [['', fallbackTransport]];\n\n const results = (await Promise.all(\n transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n )) as [TransportMakeRequestResponse, ...TransportMakeRequestResponse[]];\n\n return results[0];\n }\n\n async function flush(timeout: number | undefined): Promise {\n const allTransports = [...otherTransports.values(), fallbackTransport];\n const results = await Promise.all(allTransports.map(transport => transport.flush(timeout)));\n return results.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n","import { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../debug-logger';\n\n/**\n * Registry tracking which AI provider modules should skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n */\nconst SKIPPED_AI_PROVIDERS = new Set();\n\n/**\n * Mark AI provider modules to skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n *\n * @internal\n * @param modules - Array of npm module names to skip (e.g., '@anthropic-ai/sdk', 'openai')\n *\n * @example\n * ```typescript\n * // In LangChain integration\n * _INTERNAL_skipAiProviderWrapping(['@anthropic-ai/sdk', 'openai', '@google/generative-ai']);\n * ```\n */\nexport function _INTERNAL_skipAiProviderWrapping(modules: string[]): void {\n modules.forEach(module => {\n SKIPPED_AI_PROVIDERS.add(module);\n DEBUG_BUILD && debug.log(`AI provider \"${module}\" wrapping will be skipped`);\n });\n}\n\n/**\n * Check if an AI provider module should skip instrumentation wrapping.\n *\n * @internal\n * @param module - The npm module name (e.g., '@anthropic-ai/sdk', 'openai')\n * @returns true if wrapping should be skipped\n *\n * @example\n * ```typescript\n * // In AI provider instrumentation\n * if (_INTERNAL_shouldSkipAiProviderWrapping('@anthropic-ai/sdk')) {\n * return Reflect.construct(Original, args); // Don't instrument\n * }\n * ```\n */\nexport function _INTERNAL_shouldSkipAiProviderWrapping(module: string): boolean {\n return SKIPPED_AI_PROVIDERS.has(module);\n}\n\n/**\n * Clear all AI provider skip registrations.\n *\n * This is automatically called at the start of Sentry.init() to ensure a clean state\n * between different client initializations.\n *\n * @internal\n */\nexport function _INTERNAL_clearAiProviderSkips(): void {\n SKIPPED_AI_PROVIDERS.clear();\n DEBUG_BUILD && debug.log('Cleared AI provider skip registrations');\n}\n","export const FALSY_ENV_VALUES = new Set(['false', 'f', 'n', 'no', 'off', '0']);\nexport const TRUTHY_ENV_VALUES = new Set(['true', 't', 'y', 'yes', 'on', '1']);\n\nexport type StrictBoolCast = {\n strict: true;\n};\n\nexport type LooseBoolCast = {\n strict?: false;\n};\n\nexport type BoolCastOptions = StrictBoolCast | LooseBoolCast;\n\nexport function envToBool(value: unknown, options?: LooseBoolCast): boolean;\nexport function envToBool(value: unknown, options: StrictBoolCast): boolean | null;\nexport function envToBool(value: unknown, options?: BoolCastOptions): boolean | null;\n/**\n * A helper function which casts an ENV variable value to `true` or `false` using the constants defined above.\n * In strict mode, it may return `null` if the value doesn't match any of the predefined values.\n *\n * @param value The value of the env variable\n * @param options -- Only has `strict` key for now, which requires a strict match for `true` in TRUTHY_ENV_VALUES\n * @returns true/false if the lowercase value matches the predefined values above. If not, null in strict mode,\n * and Boolean(value) in loose mode.\n */\nexport function envToBool(value: unknown, options?: BoolCastOptions): boolean | null {\n const normalized = String(value).toLowerCase();\n\n if (FALSY_ENV_VALUES.has(normalized)) {\n return false;\n }\n\n if (TRUTHY_ENV_VALUES.has(normalized)) {\n return true;\n }\n\n return options?.strict ? null : Boolean(value);\n}\n","import {\n SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n} from '../semanticAttributes';\nimport type { SpanAttributes } from '../types-hoist/span';\n\ntype PartialURL = {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n search?: string;\n hash?: string;\n};\n\ninterface URLwithCanParse extends URL {\n canParse: (url: string, base?: string | URL | undefined) => boolean;\n}\n\n// A subset of the URL object that is valid for relative URLs\n// The URL object cannot handle relative URLs, so we need to handle them separately\ntype RelativeURL = {\n isRelative: true;\n pathname: URL['pathname'];\n search: URL['search'];\n hash: URL['hash'];\n};\n\ntype URLObject = RelativeURL | URL;\n\n// Curious about `thismessage:/`? See: https://www.rfc-editor.org/rfc/rfc2557.html\n// > When the methods above do not yield an absolute URI, a base URL\n// > of \"thismessage:/\" MUST be employed. This base URL has been\n// > defined for the sole purpose of resolving relative references\n// > within a multipart/related structure when no other base URI is\n// > specified.\n//\n// We need to provide a base URL to `parseStringToURLObject` because the fetch API gives us a\n// relative URL sometimes.\n//\n// This is the only case where we need to provide a base URL to `parseStringToURLObject`\n// because the relative URL is not valid on its own.\nconst DEFAULT_BASE_URL = 'thismessage:/';\n\n/**\n * Checks if the URL object is relative\n *\n * @param url - The URL object to check\n * @returns True if the URL object is relative, false otherwise\n */\nexport function isURLObjectRelative(url: URLObject): url is RelativeURL {\n return 'isRelative' in url;\n}\n\n/**\n * Parses string to a URL object\n *\n * @param url - The URL to parse\n * @returns The parsed URL object or undefined if the URL is invalid\n */\nexport function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined {\n const isRelative = url.indexOf('://') <= 0 && url.indexOf('//') !== 0;\n const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : undefined);\n try {\n // Use `canParse` to short-circuit the URL constructor if it's not a valid URL\n // This is faster than trying to construct the URL and catching the error\n // Node 20+, Chrome 120+, Firefox 115+, Safari 17+\n if ('canParse' in URL && !(URL as unknown as URLwithCanParse).canParse(url, base)) {\n return undefined;\n }\n\n const fullUrlObject = new URL(url, base);\n if (isRelative) {\n // Because we used a fake base URL, we need to return a relative URL object.\n // We cannot return anything about the origin, host, etc. because it will refer to the fake base URL.\n return {\n isRelative,\n pathname: fullUrlObject.pathname,\n search: fullUrlObject.search,\n hash: fullUrlObject.hash,\n };\n }\n return fullUrlObject;\n } catch {\n // empty body\n }\n\n return undefined;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlStringFromUrlObject(url: URLObject): string {\n if (isURLObjectRelative(url)) {\n return url.pathname;\n }\n\n const newUrl = new URL(url);\n newUrl.search = '';\n newUrl.hash = '';\n if (['80', '443'].includes(newUrl.port)) {\n newUrl.port = '';\n }\n if (newUrl.password) {\n newUrl.password = '%filtered%';\n }\n if (newUrl.username) {\n newUrl.username = '%filtered%';\n }\n\n return newUrl.toString();\n}\n\ntype PartialRequest = {\n method?: string;\n};\n\nfunction getHttpSpanNameFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n request?: PartialRequest,\n routeName?: string,\n): string {\n const method = request?.method?.toUpperCase() ?? 'GET';\n const route = routeName\n ? routeName\n : urlObject\n ? kind === 'client'\n ? getSanitizedUrlStringFromUrlObject(urlObject)\n : urlObject.pathname\n : '/';\n\n return `${method} ${route}`;\n}\n\n/**\n * Takes a parsed URL object and returns a set of attributes for the span\n * that represents the HTTP request for that url. This is used for both server\n * and client http spans.\n *\n * Follows https://opentelemetry.io/docs/specs/semconv/http/.\n *\n * @param urlObject - see {@link parseStringToURLObject}\n * @param kind - The type of HTTP operation (server or client)\n * @param spanOrigin - The origin of the span\n * @param request - The request object, see {@link PartialRequest}\n * @param routeName - The name of the route, must be low cardinality\n * @returns The span name and attributes for the HTTP operation\n */\nexport function getHttpSpanDetailsFromUrlObject(\n urlObject: URLObject | undefined,\n kind: 'server' | 'client',\n spanOrigin: string,\n request?: PartialRequest,\n routeName?: string,\n): [name: string, attributes: SpanAttributes] {\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n };\n\n if (routeName) {\n // This is based on https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name\n attributes[kind === 'server' ? 'http.route' : 'url.template'] = routeName;\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n\n if (request?.method) {\n attributes[SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] = request.method.toUpperCase();\n }\n\n if (urlObject) {\n if (urlObject.search) {\n attributes['url.query'] = urlObject.search;\n }\n if (urlObject.hash) {\n attributes['url.fragment'] = urlObject.hash;\n }\n if (urlObject.pathname) {\n attributes['url.path'] = urlObject.pathname;\n if (urlObject.pathname === '/') {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n }\n\n if (!isURLObjectRelative(urlObject)) {\n attributes[SEMANTIC_ATTRIBUTE_URL_FULL] = urlObject.href;\n if (urlObject.port) {\n attributes['url.port'] = urlObject.port;\n }\n if (urlObject.protocol) {\n attributes['url.scheme'] = urlObject.protocol;\n }\n if (urlObject.hostname) {\n attributes[kind === 'server' ? 'server.address' : 'url.domain'] = urlObject.hostname;\n }\n }\n }\n\n return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes];\n}\n\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 */\nexport function parseUrl(url: string): PartialURL {\n if (!url) {\n return {};\n }\n\n const 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 const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\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 */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n return (urlPath.split(/[?#]/, 1) as [string, ...string[]])[0];\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n const { protocol, host, path } = url;\n\n const filteredHost =\n host\n // Always filter out authority\n ?.replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '') || '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\n/**\n * Strips the content from a data URL, returning a placeholder with the MIME type.\n *\n * Data URLs can be very long (e.g. base64 encoded scripts for Web Workers),\n * with little valuable information, often leading to envelopes getting dropped due\n * to size limit violations. Therefore, we strip data URLs and replace them with a\n * placeholder.\n *\n * @param url - The URL to process\n * @param includeDataPrefix - If true, includes the first 10 characters of the data stream\n * for debugging (e.g., to identify magic bytes like WASM's AGFzbQ).\n * Defaults to true.\n * @returns For data URLs, returns a short format like `data:text/javascript;base64,SGVsbG8gV2... [truncated]`.\n * For non-data URLs, returns the original URL unchanged.\n */\nexport function stripDataUrlContent(url: string, includeDataPrefix: boolean = true): string {\n if (url.startsWith('data:')) {\n // Match the MIME type (everything after 'data:' until the first ';' or ',')\n const match = url.match(/^data:([^;,]+)/);\n const mimeType = match ? match[1] : 'text/plain';\n const isBase64 = url.includes(';base64,');\n\n // Find where the actual data starts (after the comma)\n const dataStart = url.indexOf(',');\n let dataPrefix = '';\n if (includeDataPrefix && dataStart !== -1) {\n const data = url.slice(dataStart + 1);\n // Include first 10 chars of data to help identify content (e.g., magic bytes)\n dataPrefix = data.length > 10 ? `${data.slice(0, 10)}... [truncated]` : data;\n }\n\n return `data:${mimeType}${isBase64 ? ',base64' : ''}${dataPrefix ? `,${dataPrefix}` : ''}`;\n }\n return url;\n}\n","import type { Client } from '../client';\nimport type { DsnComponents } from '../types-hoist/dsn';\nimport { isURLObjectRelative, parseStringToURLObject } from './url';\n\n/**\n * Checks whether given url points to Sentry server\n *\n * @param url url to verify\n */\nexport function isSentryRequestUrl(url: string, client: Client | undefined): boolean {\n const dsn = client?.getDsn();\n const tunnel = client?.getOptions().tunnel;\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url: string, tunnel: string | undefined): boolean {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url: string, dsn: DsnComponents | undefined): boolean {\n // Requests to Sentry's ingest endpoint must have a `sentry_key` in the query string\n // This is equivalent to the public_key which is required in the DSN\n // see https://develop.sentry.dev/sdk/overview/#parsing-the-dsn\n // Therefore, a request to the same host and with a `sentry_key` in the query string\n // can be considered a request to the ingest endpoint.\n const urlParts = parseStringToURLObject(url);\n if (!urlParts || isURLObjectRelative(urlParts)) {\n return false;\n }\n\n return dsn ? urlParts.host.includes(dsn.host) && /(^|&|\\?)sentry_key=/.test(urlParts.search) : false;\n}\n\nfunction removeTrailingSlash(str: string): string {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n","import type { ParameterizedString } from '../types-hoist/parameterize';\n\n/**\n * Tagged template function which returns parameterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n *\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport function parameterize(strings: TemplateStringsArray, ...values: unknown[]): ParameterizedString {\n const formatted = new String(String.raw(strings, ...values)) as ParameterizedString;\n formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n formatted.__sentry_template_values__ = values;\n return formatted;\n}\n\n/**\n * Tagged template function which returns parameterized representation of the message.\n *\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns A `ParameterizedString` object that can be passed into `captureMessage` or Sentry.logger.X methods.\n */\nexport const fmt = parameterize;\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\nimport { debug } from './debug-logger';\nimport { makeDsn } from './dsn';\nimport { parseEnvelope } from './envelope';\n\nexport interface HandleTunnelRequestOptions {\n /** Incoming request containing the Sentry envelope as its body */\n request: Request;\n /** Pre-parsed array of allowed DSN strings */\n allowedDsns: Array;\n}\n\n/**\n * Core Sentry tunnel handler - framework agnostic.\n *\n * Validates the envelope DSN against allowed DSNs, then forwards the\n * envelope to the Sentry ingest endpoint.\n *\n * @returns A `Response` — either the upstream Sentry response on success, or an error response.\n */\nexport async function handleTunnelRequest(options: HandleTunnelRequestOptions): Promise {\n const { request, allowedDsns } = options;\n\n if (allowedDsns.length === 0) {\n return new Response('Tunnel not configured', { status: 500 });\n }\n\n const body = new Uint8Array(await request.arrayBuffer());\n\n let envelopeHeader;\n try {\n [envelopeHeader] = parseEnvelope(body);\n } catch {\n return new Response('Invalid envelope', { status: 400 });\n }\n\n if (!envelopeHeader) {\n return new Response('Invalid envelope: missing header', { status: 400 });\n }\n\n const dsn = envelopeHeader.dsn;\n if (!dsn) {\n return new Response('Invalid envelope: missing DSN', { status: 400 });\n }\n\n // SECURITY: Validate that the envelope DSN matches one of the allowed DSNs\n // This prevents SSRF attacks where attackers send crafted envelopes\n // with malicious DSNs pointing to arbitrary hosts\n const isAllowed = allowedDsns.some(allowed => allowed === dsn);\n\n if (!isAllowed) {\n debug.warn(`Sentry tunnel: rejected request with unauthorized DSN (${dsn})`);\n return new Response('DSN not allowed', { status: 403 });\n }\n\n const dsnComponents = makeDsn(dsn);\n if (!dsnComponents) {\n debug.warn(`Could not extract DSN Components from: ${dsn}`);\n return new Response('Invalid DSN', { status: 403 });\n }\n\n const sentryIngestUrl = getEnvelopeEndpointWithUrlEncodedAuth(dsnComponents);\n\n try {\n return await fetch(sentryIngestUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n body,\n });\n } catch (error) {\n debug.error('Sentry tunnel: failed to forward envelope', error);\n return new Response('Failed to forward envelope to Sentry', { status: 500 });\n }\n}\n","import type { Session, SessionAggregates } from '../types-hoist/session';\nimport type { User } from '../types-hoist/user';\n\n// By default, we want to infer the IP address, unless this is explicitly set to `null`\n// We do this after all other processing is done\n// If `ip_address` is explicitly set to `null` or a value, we leave it as is\n\n/**\n * @internal\n * @deprecated -- set ip inferral via via SDK metadata options on client instead.\n */\nexport function addAutoIpAddressToUser(objWithMaybeUser: { user?: User | null }): void {\n if (objWithMaybeUser.user?.ip_address === undefined) {\n objWithMaybeUser.user = {\n ...objWithMaybeUser.user,\n ip_address: '{{auto}}',\n };\n }\n}\n\n/**\n * @internal\n */\nexport function addAutoIpAddressToSession(session: Session | SessionAggregates): void {\n if ('aggregates' in session) {\n if (session.attrs?.['ip_address'] === undefined) {\n session.attrs = {\n ...session.attrs,\n ip_address: '{{auto}}',\n };\n }\n } else {\n if (session.ipAddress === undefined) {\n session.ipAddress = '{{auto}}';\n }\n }\n}\n","import type { CoreOptions } from '../types-hoist/options';\nimport { SDK_VERSION } from '../utils/version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: CoreOptions, name: string, names = [name], source = 'npm'): void {\n const sdk = ((options._metadata = options._metadata || {}).sdk = options._metadata.sdk || {});\n\n if (!sdk.name) {\n sdk.name = `sentry.javascript.${name}`;\n sdk.packages = names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n }));\n sdk.version = SDK_VERSION;\n }\n}\n","import { getAsyncContextStrategy } from '../asyncContext';\nimport { getMainCarrier } from '../carrier';\nimport type { Client } from '../client';\nimport { getClient, getCurrentScope, hasExternalPropagationContext } from '../currentScopes';\nimport { isEnabled } from '../exports';\nimport type { Scope } from '../scope';\nimport { getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan } from '../tracing';\nimport type { Span } from '../types-hoist/span';\nimport type { SerializedTraceData } from '../types-hoist/tracing';\nimport { dynamicSamplingContextToSentryBaggageHeader } from './baggage';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils';\nimport { generateSentryTraceHeader, generateTraceparentHeader, TRACEPARENT_REGEXP } from './tracing';\n\n/**\n * Extracts trace propagation data from the current span or from the client's scope (via transaction or propagation\n * context) and serializes it to `sentry-trace` and `baggage` values. These values can be used to propagate\n * a trace via our tracing Http headers or Html `` tags.\n *\n * This function also applies some validation to the generated sentry-trace and baggage values to ensure that\n * only valid strings are returned.\n *\n * When an external propagation context is registered (e.g. via the OTLP integration) and there is no active\n * Sentry span, this function returns an empty object to defer outgoing request propagation to the external\n * propagator (e.g. an OpenTelemetry propagator).\n *\n * If (@param options.propagateTraceparent) is `true`, the function will also generate a `traceparent` value,\n * following the W3C traceparent header format.\n *\n * @returns an object with the tracing data values. The object keys are the name of the tracing key to be used as header\n * or meta tag name.\n */\nexport function getTraceData(\n options: { span?: Span; scope?: Scope; client?: Client; propagateTraceparent?: boolean } = {},\n): SerializedTraceData {\n const client = options.client || getClient();\n if (!isEnabled() || !client) {\n return {};\n }\n\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getTraceData) {\n return acs.getTraceData(options);\n }\n\n const scope = options.scope || getCurrentScope();\n const span = options.span || getActiveSpan();\n\n // When no active span and external propagation context is registered (e.g. OTLP integration),\n // return empty to let the OTel propagator handle outgoing request propagation.\n if (!span && hasExternalPropagationContext()) {\n return {};\n }\n\n const sentryTrace = span ? spanToTraceHeader(span) : scopeToTraceHeader(scope);\n const dsc = span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromScope(client, scope);\n const baggage = dynamicSamplingContextToSentryBaggageHeader(dsc);\n\n const isValidSentryTraceHeader = TRACEPARENT_REGEXP.test(sentryTrace);\n if (!isValidSentryTraceHeader) {\n debug.warn('Invalid sentry-trace data. Cannot generate trace data');\n return {};\n }\n\n const traceData: SerializedTraceData = {\n 'sentry-trace': sentryTrace,\n baggage,\n };\n\n if (options.propagateTraceparent) {\n traceData.traceparent = span ? spanToTraceparentHeader(span) : scopeToTraceparentHeader(scope);\n }\n\n return traceData;\n}\n\n/**\n * Get a sentry-trace header value for the given scope.\n */\nfunction scopeToTraceHeader(scope: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateSentryTraceHeader(traceId, propagationSpanId, sampled);\n}\n\nfunction scopeToTraceparentHeader(scope: Scope): string {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateTraceparentHeader(traceId, propagationSpanId, sampled);\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { CoreOptions as Options } from '../types-hoist/options';\nimport { debug } from './debug-logger';\nimport type { LRUMap } from './lru';\nimport { stringMatchesSomePattern } from './string';\n\nconst NOT_PROPAGATED_MESSAGE =\n '[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:';\n\n/**\n * Check if a given URL should be propagated to or not.\n * If no url is defined, or no trace propagation targets are defined, this will always return `true`.\n * You can also optionally provide a decision map, to cache decisions and avoid repeated regex lookups.\n */\nexport function shouldPropagateTraceForUrl(\n url: string | undefined,\n tracePropagationTargets: Options['tracePropagationTargets'],\n decisionMap?: LRUMap,\n): boolean {\n if (typeof url !== 'string' || !tracePropagationTargets) {\n return true;\n }\n\n const cachedDecision = decisionMap?.get(url);\n if (cachedDecision !== undefined) {\n DEBUG_BUILD && !cachedDecision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return cachedDecision;\n }\n\n const decision = stringMatchesSomePattern(url, tracePropagationTargets);\n decisionMap?.set(url, decision);\n\n DEBUG_BUILD && !decision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return decision;\n}\n","import type { SerializedTraceData } from '../types-hoist/tracing';\nimport { getTraceData } from './traceData';\n\n/**\n * Returns a string of meta tags that represent the current trace data.\n *\n * You can use this to propagate a trace from your server-side rendered Html to the browser.\n * This function returns up to two meta tags, `sentry-trace` and `baggage`, depending on the\n * current trace data state.\n *\n * @example\n * Usage example:\n *\n * ```js\n * function renderHtml() {\n * return `\n * \n * ${getTraceMetaTags()}\n * \n * `;\n * }\n * ```\n *\n */\nexport function getTraceMetaTags(traceData?: SerializedTraceData): string {\n return Object.entries(traceData || getTraceData())\n .map(([key, value]) => ``)\n .join('\\n');\n}\n","type DebouncedCallback = {\n (): void | unknown;\n flush: () => void | unknown;\n cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = {\n /** The max. time in ms to wait for the callback to be invoked. */\n maxWait?: number;\n /** This can be overwritten to use a different setTimeout implementation, e.g. to avoid triggering change detection in Angular */\n setTimeoutImpl?: typeof setTimeout;\n};\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n let callbackReturnValue: unknown;\n\n let timerId: ReturnType | undefined;\n let maxTimerId: ReturnType | undefined;\n\n const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0;\n const setTimeoutImpl = options?.setTimeoutImpl || setTimeout;\n\n function invokeFunc(): unknown {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers(): void {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush(): unknown {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced(): unknown {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeoutImpl(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeoutImpl(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n","import type { PolymorphicRequest } from '../types-hoist/polymorphics';\nimport type { RequestEventData } from '../types-hoist/request';\nimport type { WebFetchHeaders, WebFetchRequest } from '../types-hoist/webfetchapi';\n\n/**\n * Transforms a `Headers` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into a simple key-value dict.\n * The header keys will be lower case: e.g. A \"Content-Type\" header will be stored as \"content-type\".\n */\nexport function winterCGHeadersToDict(winterCGHeaders: WebFetchHeaders): Record {\n const headers: Record = {};\n try {\n winterCGHeaders.forEach((value, key) => {\n if (typeof value === 'string') {\n // We check that value is a string even though it might be redundant to make sure prototype pollution is not possible.\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Convert common request headers to a simple dictionary.\n */\nexport function headersToDict(reqHeaders: Record): Record {\n const headers: Record = Object.create(null);\n\n try {\n Object.entries(reqHeaders).forEach(([key, value]) => {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Converts a `Request` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into the format that the `RequestData` integration understands.\n */\nexport function winterCGRequestToRequestData(req: WebFetchRequest): RequestEventData {\n const headers = winterCGHeadersToDict(req.headers);\n\n return {\n method: req.method,\n url: req.url,\n query_string: extractQueryParamsFromUrl(req.url),\n headers,\n // TODO: Can we extract body data from the request?\n };\n}\n\n/**\n * Convert a HTTP request object to RequestEventData to be passed as normalizedRequest.\n * Instead of allowing `PolymorphicRequest` to be passed,\n * we want to be more specific and generally require a http.IncomingMessage-like object.\n */\nexport function httpRequestToRequestData(request: {\n method?: string;\n url?: string;\n headers?: {\n [key: string]: string | string[] | undefined;\n };\n protocol?: string;\n socket?: {\n encrypted?: boolean;\n remoteAddress?: string;\n };\n}): RequestEventData {\n const headers = request.headers || {};\n\n // Check for x-forwarded-host first, then fall back to host header\n const forwardedHost = typeof headers['x-forwarded-host'] === 'string' ? headers['x-forwarded-host'] : undefined;\n const host = forwardedHost || (typeof headers.host === 'string' ? headers.host : undefined);\n\n // Check for x-forwarded-proto first, then fall back to existing protocol detection\n const forwardedProto = typeof headers['x-forwarded-proto'] === 'string' ? headers['x-forwarded-proto'] : undefined;\n const protocol = forwardedProto || request.protocol || (request.socket?.encrypted ? 'https' : 'http');\n\n const url = request.url || '';\n\n const absoluteUrl = getAbsoluteUrl({\n url,\n host,\n protocol,\n });\n\n // This is non-standard, but may be sometimes set\n // It may be overwritten later by our own body handling\n const data = (request as PolymorphicRequest).body || undefined;\n\n // This is non-standard, but may be set on e.g. Next.js or Express requests\n const cookies = (request as PolymorphicRequest).cookies;\n\n return {\n url: absoluteUrl,\n method: request.method,\n query_string: extractQueryParamsFromUrl(url),\n headers: headersToDict(headers),\n cookies,\n data,\n };\n}\n\nfunction getAbsoluteUrl({\n url,\n protocol,\n host,\n}: {\n url?: string;\n protocol: string;\n host?: string;\n}): string | undefined {\n if (url?.startsWith('http')) {\n return url;\n }\n\n if (url && host) {\n return `${protocol}://${host}${url}`;\n }\n\n return undefined;\n}\n\nconst SENSITIVE_HEADER_SNIPPETS = [\n 'auth',\n 'token',\n 'secret',\n 'session', // for the user_session cookie\n 'password',\n 'passwd',\n 'pwd',\n 'key',\n 'jwt',\n 'bearer',\n 'sso',\n 'saml',\n 'csrf',\n 'xsrf',\n 'credentials',\n // Always treat cookie headers as sensitive in case individual key-value cookie pairs cannot properly be extracted\n 'set-cookie',\n 'cookie',\n];\n\nconst PII_HEADER_SNIPPETS = ['x-forwarded-', '-user'];\n\n/**\n * Converts incoming HTTP request or response headers to OpenTelemetry span attributes following semantic conventions.\n * Header names are converted to the format: http..header.\n * where is the header name in lowercase with dashes converted to underscores.\n *\n * @param lifecycle - The lifecycle of the headers, either 'request' or 'response'\n *\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-response-header\n *\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-request-header-key\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-response-header-key\n */\nexport function httpHeadersToSpanAttributes(\n headers: Record,\n sendDefaultPii: boolean = false,\n lifecycle: 'request' | 'response' = 'request',\n): Record {\n const spanAttributes: Record = {};\n\n try {\n Object.entries(headers).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n const lowerCasedHeaderKey = key.toLowerCase();\n const isCookieHeader = lowerCasedHeaderKey === 'cookie' || lowerCasedHeaderKey === 'set-cookie';\n\n if (isCookieHeader && typeof value === 'string' && value !== '') {\n // Set-Cookie: single cookie with attributes (\"name=value; HttpOnly; Secure\")\n // Cookie: multiple cookies separated by \"; \" (\"cookie1=value1; cookie2=value2\")\n const isSetCookie = lowerCasedHeaderKey === 'set-cookie';\n const semicolonIndex = value.indexOf(';');\n const cookieString = isSetCookie && semicolonIndex !== -1 ? value.substring(0, semicolonIndex) : value;\n const cookies = isSetCookie ? [cookieString] : cookieString.split('; ');\n\n for (const cookie of cookies) {\n // Split only at the first '=' to preserve '=' characters in cookie values\n const equalSignIndex = cookie.indexOf('=');\n const cookieKey = equalSignIndex !== -1 ? cookie.substring(0, equalSignIndex) : cookie;\n const cookieValue = equalSignIndex !== -1 ? cookie.substring(equalSignIndex + 1) : '';\n\n const lowerCasedCookieKey = cookieKey.toLowerCase();\n\n addSpanAttribute(\n spanAttributes,\n lowerCasedHeaderKey,\n lowerCasedCookieKey,\n cookieValue,\n sendDefaultPii,\n lifecycle,\n );\n }\n } else {\n addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii, lifecycle);\n }\n });\n } catch {\n // Return empty object if there's an error\n }\n\n return spanAttributes;\n}\n\nfunction normalizeAttributeKey(key: string): string {\n return key.replace(/-/g, '_');\n}\n\nfunction addSpanAttribute(\n spanAttributes: Record,\n headerKey: string,\n cookieKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n lifecycle: 'request' | 'response',\n): void {\n const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii);\n if (headerValue == null) {\n return;\n }\n\n const normalizedKey = `http.${lifecycle}.header.${normalizeAttributeKey(headerKey)}${cookieKey ? `.${normalizeAttributeKey(cookieKey)}` : ''}`;\n spanAttributes[normalizedKey] = headerValue;\n}\n\nfunction handleHttpHeader(\n lowerCasedKey: string,\n value: string | string[] | undefined,\n sendPii: boolean,\n): string | undefined {\n const isSensitive = sendPii\n ? SENSITIVE_HEADER_SNIPPETS.some(snippet => lowerCasedKey.includes(snippet))\n : [...PII_HEADER_SNIPPETS, ...SENSITIVE_HEADER_SNIPPETS].some(snippet => lowerCasedKey.includes(snippet));\n\n if (isSensitive) {\n return '[Filtered]';\n } else if (Array.isArray(value)) {\n return value.map(v => (v != null ? String(v) : v)).join(';');\n } else if (typeof value === 'string') {\n return value;\n }\n\n return undefined;\n}\n\n/** Extract the query params from an URL. */\nexport function extractQueryParamsFromUrl(url: string): string | undefined {\n // url is path and query string\n if (!url) {\n return;\n }\n\n try {\n // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n // hostname as the base. Since the point here is just to grab the query string, it doesn't matter what we use.\n const queryParams = new URL(url, 'http://s.io').search.slice(1);\n return queryParams.length ? queryParams : undefined;\n } catch {\n return undefined;\n }\n}\n","import { getClient, getIsolationScope } from './currentScopes';\nimport type { Breadcrumb, BreadcrumbHint } from './types-hoist/breadcrumb';\nimport { consoleSandbox } from './utils/debug-logger';\nimport { dateTimestampInSeconds } from './utils/time';\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\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 */\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const client = getClient();\n const isolationScope = getIsolationScope();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions();\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint))\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n","import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { WrappedFunction } from '../types-hoist/wrappedfunction';\nimport { getOriginalFunction } from '../utils/object';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n Function.prototype.toString = function (this: WrappedFunction, ...args: unknown[]): string {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getPossibleEventMessages } from '../utils/eventUtils';\nimport { getEventDescription } from '../utils/misc';\nimport { stringMatchesSomePattern } from '../utils/string';\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.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n /^Can't find variable: gmo$/, // Error from Google Search App https://issuetracker.google.com/issues/396043331\n /^undefined is not an object \\(evaluating 'a\\.[A-Z]'\\)$/, // Random error that happens but not actionable or noticeable to end-users.\n /can't redefine non-configurable property \"solana\"/, // Probably a browser extension or custom browser (Brave) throwing this error\n /vv\\(\\)\\.getRestrictions is not a function/, // Error thrown by GTM, seemingly not affecting end-users\n /Can't find variable: _AutofillCallbackHandler/, // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n /Object Not Found Matching Id:\\d+, MethodName:simulateEvent/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n /^Java exception was raised during method invocation$/, // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065)\n];\n\n/** Options for the EventFilters integration */\nexport interface EventFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'EventFilters';\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n */\nexport const eventFiltersIntegration = defineIntegration((options: Partial = {}) => {\n let mergedOptions: Partial | undefined;\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n },\n processEvent(event, _hint, client) {\n if (!mergedOptions) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n }\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n});\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n *\n * @deprecated this integration was renamed and will be removed in a future major version.\n * Use `eventFiltersIntegration` instead.\n */\nexport const inboundFiltersIntegration = defineIntegration(((options: Partial = {}) => {\n return {\n ...eventFiltersIntegration(options),\n name: 'InboundFilters',\n };\n}) satisfies IntegrationFn);\n\nfunction _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial): boolean {\n if (!event.type) {\n // Filter errors\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isUselessError(event)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n event,\n )}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n debug.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 DEBUG_BUILD &&\n debug.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 } else if (event.type === 'transaction') {\n // Filter transactions\n\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors?.length) {\n return false;\n }\n\n return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array): boolean {\n if (!ignoreTransactions?.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n if (!denyUrls?.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n if (!allowUrls?.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const 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: Event): string | null {\n try {\n // If there are linked exceptions or exception aggregates we only want to match against the top frame of the \"root\" (the main exception)\n // The root always comes last in linked exceptions\n const rootException = [...(event.exception?.values ?? [])]\n .reverse()\n .find(value => value.mechanism?.parent_id === undefined && value.stacktrace?.frames?.length);\n const frames = rootException?.stacktrace?.frames;\n return frames ? _getLastValidUrl(frames) : null;\n } catch {\n DEBUG_BUILD && debug.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nfunction _isUselessError(event: Event): boolean {\n // We only want to consider events for dropping that actually have recorded exception values.\n if (!event.exception?.values?.length) {\n return false;\n }\n\n return (\n // No top-level message\n !event.message &&\n // There are no exception values that have a stacktrace, a non-generic-Error type or value\n !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n );\n}\n","import type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isInstanceOf } from './is';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): void {\n if (!event.exception?.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException: Exception | undefined =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException as ExtendedError,\n key,\n event.exception.values,\n originalException,\n 0,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n prevExceptions: Exception[],\n exception: Exception,\n exceptionId: number,\n): Exception[] {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, error[key] as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key] as ExtendedError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (isExceptionGroup(error)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, childError as Error);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError as ExtendedError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction isExceptionGroup(error: ExtendedError): error is ExtendedError & { errors: unknown[] } {\n return Array.isArray(error.errors);\n}\n\nfunction applyExceptionGroupFieldsForParentException(\n exception: Exception,\n exceptionId: number,\n error: ExtendedError,\n): void {\n exception.mechanism = {\n handled: true,\n type: 'auto.core.linked_errors',\n ...(isExceptionGroup(error) && { is_exception_group: true }),\n ...exception.mechanism,\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception: Exception,\n source: string,\n exceptionId: number,\n parentId: number | undefined,\n): void {\n exception.mechanism = {\n handled: true,\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n","import { defineIntegration } from '../integration';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { applyAggregateErrorsToEvent } from '../utils/aggregate-errors';\nimport { exceptionFromError } from '../utils/eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(exceptionFromError, options.stackParser, key, limit, event, hint);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n","import type { Event } from './types-hoist/event';\nimport type { StackParser } from './types-hoist/stacktrace';\nimport { GLOBAL_OBJ } from './utils/worldwide';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\n/**\n * Builds a map of filenames to module metadata from the global _sentryModuleMetadata object.\n * This is useful for forwarding metadata from web workers to the main thread.\n *\n * @param parser - Stack parser to use for extracting filenames from stack traces\n * @returns A map of filename to metadata object\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getFilenameToMetadataMap(parser: StackParser): Record {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filenameMap: Record = {};\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n const frames = parser(stack);\n\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n filenameMap[frame.filename] = metadata;\n break;\n }\n }\n }\n\n return filenameMap;\n}\n\nfunction ensureMetadataStacksAreParsed(parser: StackParser): void {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMetadataForUrl(parser: StackParser, filename: string): any | undefined {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nexport function addMetadataToStackFrames(parser: StackParser, event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n if (!frame.filename || frame.module_metadata) {\n return;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n });\n });\n}\n\n/**\n * Strips metadata from stack frames.\n */\nexport function stripMetadataFromStackFrames(event: Event): void {\n event.exception?.values?.forEach(exception => {\n exception.stacktrace?.frames?.forEach(frame => {\n delete frame.module_metadata;\n });\n });\n}\n","import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport { forEachEnvelopeItem } from '../utils/envelope';\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\nexport const moduleMetadataIntegration = defineIntegration(() => {\n return {\n name: 'ModuleMetadata',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n };\n});\n","/**\n * This code was originally copied from the 'cookie` module at v0.5.0 and was simplified for our use case.\n * https://github.com/jshttp/cookie/blob/a0c84147aab6266bdb3996cf4062e93907c0b0fc/index.js\n * It had the following license:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Roman Shtylman \n * Copyright (c) 2015 Douglas Christopher Wilson \n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/**\n * Parses a cookie string\n */\nexport function parseCookie(str: string): Record {\n const obj: Record = {};\n let index = 0;\n\n while (index < str.length) {\n const eqIdx = str.indexOf('=', index);\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break;\n }\n\n let endIdx = str.indexOf(';', index);\n\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1;\n continue;\n }\n\n const key = str.slice(index, eqIdx).trim();\n\n // only assign once\n if (undefined === obj[key]) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1);\n }\n\n try {\n obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val;\n } catch {\n obj[key] = val;\n }\n }\n\n index = endIdx + 1;\n }\n\n return obj;\n}\n","// Vendored / modified from @sergiodxa/remix-utils\n\n// https://github.com/sergiodxa/remix-utils/blob/02af80e12829a53696bfa8f3c2363975cf59f55e/src/server/get-client-ip-address.ts\n// MIT License\n\n// Copyright (c) 2021 Sergio Xalambrí\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// The headers to check, in priority order\nexport const ipHeaderNames = [\n 'X-Client-IP',\n 'X-Forwarded-For',\n 'Fly-Client-IP',\n 'CF-Connecting-IP',\n 'Fastly-Client-Ip',\n 'True-Client-Ip',\n 'X-Real-IP',\n 'X-Cluster-Client-IP',\n 'X-Forwarded',\n 'Forwarded-For',\n 'Forwarded',\n 'X-Vercel-Forwarded-For',\n];\n\n/**\n * Get the IP address of the client sending a request.\n *\n * It receives a Request headers object and use it to get the\n * IP address from one of the following headers in order.\n *\n * If the IP address is valid, it will be returned. Otherwise, null will be\n * returned.\n *\n * If the header values contains more than one IP address, the first valid one\n * will be returned.\n */\nexport function getClientIPAddress(headers: { [key: string]: string | string[] | undefined }): string | null {\n // Build a map of lowercase header names to their values for case-insensitive lookup\n // This is needed because headers from different sources may have different casings\n const lowerCaseHeaders: { [key: string]: string | string[] | undefined } = {};\n\n for (const key of Object.keys(headers)) {\n lowerCaseHeaders[key.toLowerCase()] = headers[key];\n }\n\n // This will end up being Array because of the various possible values a header\n // can take\n const headerValues = ipHeaderNames.map((headerName: string) => {\n const rawValue = lowerCaseHeaders[headerName.toLowerCase()];\n const value = Array.isArray(rawValue) ? rawValue.join(';') : rawValue;\n\n if (headerName === 'Forwarded') {\n return parseForwardedHeader(value);\n }\n\n return value?.split(',').map((v: string) => v.trim());\n });\n\n // Flatten the array and filter out any falsy entries\n const flattenedHeaderValues = headerValues.reduce((acc: string[], val) => {\n if (!val) {\n return acc;\n }\n\n return acc.concat(val);\n }, []);\n\n // Find the first value which is a valid IP address, if any\n const ipAddress = flattenedHeaderValues.find(ip => ip !== null && isIP(ip));\n\n return ipAddress || null;\n}\n\nfunction parseForwardedHeader(value: string | null | undefined): string | null {\n if (!value) {\n return null;\n }\n\n for (const part of value.split(';')) {\n if (part.startsWith('for=')) {\n return part.slice(4);\n }\n }\n\n return null;\n}\n\n//\n/**\n * Custom method instead of importing this from `net` package, as this only exists in node\n * Accepts:\n * 127.0.0.1\n * 192.168.1.1\n * 192.168.1.255\n * 255.255.255.255\n * 10.1.1.1\n * 0.0.0.0\n * 2b01:cb19:8350:ed00:d0dd:fa5b:de31:8be5\n *\n * Rejects:\n * 1.1.1.01\n * 30.168.1.255.1\n * 127.1\n * 192.168.1.256\n * -1.2.3.4\n * 1.1.1.1.\n * 3...3\n * 192.168.1.099\n */\nfunction isIP(str: string): boolean {\n const regex =\n /(?:^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$)|(?:^(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|(?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/;\n return regex.test(str);\n}\n","import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { RequestEventData } from '../types-hoist/request';\nimport { parseCookie } from '../utils/cookie';\nimport { getClientIPAddress, ipHeaderNames } from '../vendor/getIpAddress';\n\ninterface RequestDataIncludeOptions {\n cookies?: boolean;\n data?: boolean;\n headers?: boolean;\n ip?: boolean;\n query_string?: boolean;\n url?: boolean;\n}\n\ntype RequestDataIntegrationOptions = {\n /**\n * Controls what data is pulled from the request and added to the event.\n */\n include?: RequestDataIncludeOptions;\n};\n\n// TODO(v11): Change defaults based on `sendDefaultPii`\nconst DEFAULT_INCLUDE: RequestDataIncludeOptions = {\n cookies: true,\n data: true,\n headers: true,\n query_string: true,\n url: true,\n};\n\nconst INTEGRATION_NAME = 'RequestData';\n\nconst _requestDataIntegration = ((options: RequestDataIntegrationOptions = {}) => {\n const include = {\n ...DEFAULT_INCLUDE,\n ...options.include,\n };\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event, _hint, client) {\n const { sdkProcessingMetadata = {} } = event;\n const { normalizedRequest, ipAddress } = sdkProcessingMetadata;\n\n const includeWithDefaultPiiApplied: RequestDataIncludeOptions = {\n ...include,\n ip: include.ip ?? client.getOptions().sendDefaultPii,\n };\n\n if (normalizedRequest) {\n addNormalizedRequestDataToEvent(event, normalizedRequest, { ipAddress }, includeWithDefaultPiiApplied);\n }\n\n return event;\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core`\n * so it can be used in cross-platform SDKs like `@sentry/nextjs`.\n */\nexport const requestDataIntegration = defineIntegration(_requestDataIntegration);\n\n/**\n * Add already normalized request data to an event.\n * This mutates the passed in event.\n */\nfunction addNormalizedRequestDataToEvent(\n event: Event,\n req: RequestEventData,\n // Data that should not go into `event.request` but is somehow related to requests\n additionalData: { ipAddress?: string },\n include: RequestDataIncludeOptions,\n): void {\n event.request = {\n ...event.request,\n ...extractNormalizedRequestData(req, include),\n };\n\n if (include.ip) {\n const ip = (req.headers && getClientIPAddress(req.headers)) || additionalData.ipAddress;\n if (ip) {\n event.user = {\n ...event.user,\n ip_address: ip,\n };\n }\n }\n}\n\nfunction extractNormalizedRequestData(\n normalizedRequest: RequestEventData,\n include: RequestDataIncludeOptions,\n): RequestEventData {\n const requestData: RequestEventData = {};\n const headers = { ...normalizedRequest.headers };\n\n if (include.headers) {\n requestData.headers = headers;\n\n // Remove the Cookie header in case cookie data should not be included in the event\n if (!include.cookies) {\n delete (headers as { cookie?: string }).cookie;\n }\n\n // Remove IP headers in case IP data should not be included in the event\n if (!include.ip) {\n ipHeaderNames.forEach(ipHeaderName => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (headers as Record)[ipHeaderName];\n });\n }\n }\n\n requestData.method = normalizedRequest.method;\n\n if (include.url) {\n requestData.url = normalizedRequest.url;\n }\n\n if (include.cookies) {\n const cookies = normalizedRequest.cookies || (headers?.cookie ? parseCookie(headers.cookie) : undefined);\n requestData.cookies = cookies || {};\n }\n\n if (include.query_string) {\n requestData.query_string = normalizedRequest.query_string;\n }\n\n if (include.data) {\n requestData.data = normalizedRequest.data;\n }\n\n return requestData;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger';\nimport { fill } from '../utils/object';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n const handlerData: HandlerDataConsole = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log?.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n","import type { SeverityLevel } from '../types-hoist/severity';\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 */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (\n level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n ) as SeverityLevel;\n}\n","import { getClient, withScope } from '../currentScopes';\nimport { captureException } from '../exports';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { CaptureContext } from '../scope';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { addExceptionMechanism } from '../utils/misc';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface CaptureConsoleOptions {\n levels?: string[];\n\n /**\n * By default, Sentry will mark captured console messages as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled?: boolean;\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n const handled = options.handled ?? true;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args: unknown[], level: string, handled: boolean): void {\n const severityLevel = severityLevelFromString(level);\n\n /*\n We create this error here already to attach a stack trace to captured messages,\n if users set `attachStackTrace` to `true` in Sentry.init.\n We do this here already because we want to minimize the number of Sentry SDK stack frames\n within the error. Technically, Client.captureMessage will also do it but this happens several\n stack frames deeper.\n */\n const syntheticException = new Error();\n\n const captureContext: CaptureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'auto.core.capture_console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n scope.captureMessage(message, severityLevel, { captureContext, syntheticException });\n });\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { debug } from '../utils/debug-logger';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent: Event | undefined;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && debug.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Deduplication filter.\n */\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/** only exported for tests. */\nexport function _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\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\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const 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\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const 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\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\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 as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const frameA = previousFrames[i]!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const 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\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\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 as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception?.values?.[0];\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { defineIntegration } from '../integration';\nimport type { Contexts } from '../types-hoist/context';\nimport type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isError, isPlainObject } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { addNonEnumerableProperty } from '../utils/object';\nimport { truncate } from '../utils/string';\n\nconst INTEGRATION_NAME = 'ExtraErrorData';\n\ninterface ExtraErrorDataOptions {\n /**\n * The object depth up to which to capture data on error objects.\n */\n depth: number;\n\n /**\n * Whether to capture error causes. Defaults to true.\n *\n * More information: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n */\n captureErrorCause: boolean;\n}\n\n/**\n * Extract additional data for from original exceptions.\n */\nconst _extraErrorDataIntegration = ((options: Partial = {}) => {\n const { depth = 3, captureErrorCause = true } = options;\n return {\n name: INTEGRATION_NAME,\n processEvent(event, hint, client) {\n const { maxValueLength } = client.getOptions();\n return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration);\n\nfunction _enhanceEventWithErrorData(\n event: Event,\n hint: EventHint = {},\n depth: number,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Event {\n if (!hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const exceptionName = (hint.originalException as ExtendedError).name || hint.originalException.constructor.name;\n\n const errorData = _extractErrorData(hint.originalException as ExtendedError, captureErrorCause, maxValueLength);\n\n if (errorData) {\n const contexts: Contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, depth);\n\n if (isPlainObject(normalizedErrorData)) {\n // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n // potentially truncate the data we just already normalized, with a certain depth setting.\n addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n contexts[exceptionName] = normalizedErrorData;\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n}\n\n/**\n * Extract extra information from the Error object\n */\nfunction _extractErrorData(\n error: ExtendedError,\n captureErrorCause: boolean,\n maxValueLength: number | undefined,\n): Record | null {\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = [\n 'name',\n 'message',\n 'stack',\n 'line',\n 'column',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'toJSON',\n ];\n\n const extraErrorInfo: Record = {};\n\n // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n for (const key of Object.keys(error)) {\n if (nativeKeys.indexOf(key) !== -1) {\n continue;\n }\n const value = error[key];\n extraErrorInfo[key] =\n isError(value) || typeof value === 'string'\n ? maxValueLength\n ? truncate(`${value}`, maxValueLength)\n : `${value}`\n : value;\n }\n\n // Error.cause is a standard property that is non enumerable, we therefore need to access it separately.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n if (captureErrorCause && error.cause !== undefined) {\n if (isError(error.cause)) {\n const errorName = error.cause.name || error.cause.constructor.name;\n extraErrorInfo.cause = { [errorName]: _extractErrorData(error.cause as ExtendedError, false, maxValueLength) };\n } else {\n extraErrorInfo.cause = error.cause;\n }\n }\n\n // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n if (typeof error.toJSON === 'function') {\n const serializedError = error.toJSON() as Record;\n\n for (const key of Object.keys(serializedError)) {\n const value = serializedError[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n }\n\n return extraErrorInfo;\n } catch (oO) {\n DEBUG_BUILD && debug.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return null;\n}\n","// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js\n//\n// Copyright Joyent, Inc.and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/** JSDoc */\nfunction normalizeArray(parts: string[], allowAboveRoot?: boolean): string[] {\n // if the path tries to go above the root, `up` ends up > 0\n let up = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\S+:\\\\|\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^/\\\\]+?|)(\\.[^./\\\\]*|))(?:[/\\\\]*)$/;\n/** JSDoc */\nfunction splitPath(filename: string): string[] {\n // Truncate files names greater than 1024 characters to avoid regex dos\n // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172\n const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename;\n const parts = splitPathRe.exec(truncated);\n return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nexport function resolve(...args: string[]): string {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : '/';\n\n // Skip empty entries\n if (!path) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(\n resolvedPath.split('/').filter(p => !!p),\n !resolvedAbsolute,\n ).join('/');\n\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr: string[]): string[] {\n let start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') {\n break;\n }\n }\n\n let end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') {\n break;\n }\n }\n\n if (start > end) {\n return [];\n }\n return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nexport function relative(from: string, to: string): string {\n /* eslint-disable no-param-reassign */\n from = resolve(from).slice(1);\n to = resolve(to).slice(1);\n /* eslint-enable no-param-reassign */\n\n const fromParts = trim(from.split('/'));\n const toParts = trim(to.split('/'));\n\n const length = Math.min(fromParts.length, toParts.length);\n let samePartsLength = length;\n for (let i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n let outputParts = [];\n for (let i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nexport function normalizePath(path: string): string {\n const isPathAbsolute = isAbsolute(path);\n const trailingSlash = path.slice(-1) === '/';\n\n // Normalize the path\n let normalizedPath = normalizeArray(\n path.split('/').filter(p => !!p),\n !isPathAbsolute,\n ).join('/');\n\n if (!normalizedPath && !isPathAbsolute) {\n normalizedPath = '.';\n }\n if (normalizedPath && trailingSlash) {\n normalizedPath += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nexport function isAbsolute(path: string): boolean {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\n const result = splitPath(path);\n const root = result[0] || '';\n let dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.slice(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\n/** JSDoc */\nexport function basename(path: string, ext?: string): string {\n let f = splitPath(path)[2] || '';\n if (ext && f.slice(ext.length * -1) === ext) {\n f = f.slice(0, f.length - ext.length);\n }\n return f;\n}\n","import { defineIntegration } from '../integration';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport type { Stacktrace } from '../types-hoist/stacktrace';\nimport { basename, relative } from '../utils/path';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype StackFrameIteratee = (frame: StackFrame) => StackFrame;\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\ninterface RewriteFramesOptions {\n /**\n * Root path (the beginning of the path) that will be stripped from the frames' filename.\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `root` will be stripped from the beginning stack frames' paths (if the path started with the value).\n * - On the server, the root value will only replace the beginning of stack frame filepaths, when the path is absolute. If no `root` value is provided and the path is absolute, the frame will be reduced to only the filename and the provided `prefix` option.\n *\n * Browser example:\n * - Original frame: `'http://example.com/my/path/static/asset.js'`\n * - `root: 'http://example.com/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n *\n * Server example:\n * - Original frame: `'/User/local/my/path/static/asset.js'`\n * - `root: '/User/local/my/path'`\n * - `assetPrefix: 'app://'`\n * - Resulting frame: `'app:///static/asset.js'`\n */\n root?: string;\n\n /**\n * A custom prefix that stack frames will be prepended with.\n *\n * Default: `'app://'`\n *\n * This option has slightly different behaviour in the browser and on servers:\n * - In the browser, the value you provide in `prefix` will prefix the resulting filename when the value you provided in `root` was applied. Effectively replacing whatever `root` matched in the beginning of the frame with `prefix`.\n * - On the server, the prefix is applied to all stackframes with absolute paths. On Windows, the drive identifier (e.g. \"C://\") is replaced with the prefix.\n */\n prefix?: string;\n\n /**\n * Defines an iterator that is used to iterate through all of the stack frames for modification before being sent to Sentry.\n * Setting this option will effectively disable both the `root` and the `prefix` options.\n */\n iteratee?: StackFrameIteratee;\n}\n\n/**\n * Rewrite event frames paths.\n */\nexport const rewriteFramesIntegration = defineIntegration((options: RewriteFramesOptions = {}) => {\n const root = options.root;\n const prefix = options.prefix || 'app:///';\n\n const isBrowser = 'window' in GLOBAL_OBJ && !!GLOBAL_OBJ.window;\n\n const iteratee: StackFrameIteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix });\n\n /** Process an exception event. */\n function _processExceptionsEvent(event: Event): Event {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n values: event.exception!.values!.map(value => ({\n ...value,\n ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n })),\n },\n };\n } catch {\n return event;\n }\n }\n\n /** Process a stack trace. */\n function _processStacktrace(stacktrace?: Stacktrace): Stacktrace {\n return {\n ...stacktrace,\n frames: stacktrace?.frames?.map(f => iteratee(f)),\n };\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent) {\n let processedEvent = originalEvent;\n\n if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n processedEvent = _processExceptionsEvent(processedEvent);\n }\n\n return processedEvent;\n },\n };\n});\n\n/**\n * Exported only for tests.\n */\nexport function generateIteratee({\n isBrowser,\n root,\n prefix,\n}: {\n isBrowser: boolean;\n root?: string;\n prefix: string;\n}): StackFrameIteratee {\n return (frame: StackFrame) => {\n if (!frame.filename) {\n return frame;\n }\n\n // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n const isWindowsFrame =\n /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n\n // Check if the frame filename begins with `/`\n const startsWithSlash = /^\\//.test(frame.filename);\n\n if (isBrowser) {\n if (root) {\n const oldFilename = frame.filename;\n if (oldFilename.indexOf(root) === 0) {\n frame.filename = oldFilename.replace(root, prefix);\n }\n }\n } else {\n if (isWindowsFrame || startsWithSlash) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = root ? relative(root, filename) : basename(filename);\n frame.filename = `${prefix}${base}`;\n }\n }\n\n return frame;\n };\n}\n","// Based on Kamil Ogórek's work on:\n// https://github.com/supabase-community/sentry-integration-js\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-lines */\nimport { addBreadcrumb } from '../breadcrumbs';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { captureException } from '../exports';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, SPAN_STATUS_OK, startSpan } from '../tracing';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { debug } from '../utils/debug-logger';\nimport { isPlainObject } from '../utils/is';\nimport { addExceptionMechanism } from '../utils/misc';\n\nconst AUTH_OPERATIONS_TO_INSTRUMENT = [\n 'reauthenticate',\n 'signInAnonymously',\n 'signInWithOAuth',\n 'signInWithIdToken',\n 'signInWithOtp',\n 'signInWithPassword',\n 'signInWithSSO',\n 'signOut',\n 'signUp',\n 'verifyOtp',\n];\n\nconst AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT = [\n 'createUser',\n 'deleteUser',\n 'listUsers',\n 'getUserById',\n 'updateUserById',\n 'inviteUserByEmail',\n];\n\nexport const FILTER_MAPPINGS = {\n eq: 'eq',\n neq: 'neq',\n gt: 'gt',\n gte: 'gte',\n lt: 'lt',\n lte: 'lte',\n like: 'like',\n 'like(all)': 'likeAllOf',\n 'like(any)': 'likeAnyOf',\n ilike: 'ilike',\n 'ilike(all)': 'ilikeAllOf',\n 'ilike(any)': 'ilikeAnyOf',\n is: 'is',\n in: 'in',\n cs: 'contains',\n cd: 'containedBy',\n sr: 'rangeGt',\n nxl: 'rangeGte',\n sl: 'rangeLt',\n nxr: 'rangeLte',\n adj: 'rangeAdjacent',\n ov: 'overlaps',\n fts: '',\n plfts: 'plain',\n phfts: 'phrase',\n wfts: 'websearch',\n not: 'not',\n};\n\nexport const DB_OPERATIONS_TO_INSTRUMENT = ['select', 'insert', 'upsert', 'update', 'delete'];\n\ntype AuthOperationFn = (...args: unknown[]) => Promise;\ntype AuthOperationName = (typeof AUTH_OPERATIONS_TO_INSTRUMENT)[number];\ntype AuthAdminOperationName = (typeof AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT)[number];\ntype PostgRESTQueryOperationFn = (...args: unknown[]) => PostgRESTFilterBuilder;\n\nexport interface SupabaseClientInstance {\n auth: {\n admin: Record;\n } & Record;\n}\n\nexport interface PostgRESTQueryBuilder {\n [key: string]: PostgRESTQueryOperationFn;\n}\n\nexport interface PostgRESTFilterBuilder {\n method: string;\n headers: Record;\n url: URL;\n schema: string;\n body: any;\n}\n\nexport interface SupabaseResponse {\n status?: number;\n error?: {\n message: string;\n code?: string;\n details?: unknown;\n };\n}\n\nexport interface SupabaseError extends Error {\n code?: string;\n details?: unknown;\n}\n\nexport interface SupabaseBreadcrumb {\n type: string;\n category: string;\n message: string;\n data?: {\n query?: string[];\n body?: Record;\n };\n}\n\nexport interface SupabaseClientConstructor {\n prototype: {\n from: (table: string) => PostgRESTQueryBuilder;\n };\n}\n\nexport interface PostgRESTProtoThenable {\n then: (\n onfulfilled?: ((value: T) => T | PromiseLike) | null,\n onrejected?: ((reason: any) => T | PromiseLike) | null,\n ) => Promise;\n}\n\ntype SentryInstrumented = T & {\n __SENTRY_INSTRUMENTED__?: boolean;\n};\n\nfunction markAsInstrumented(fn: T): void {\n try {\n (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__ = true;\n } catch {\n // ignore errors here\n }\n}\n\nfunction isInstrumented(fn: T): boolean | undefined {\n try {\n return (fn as SentryInstrumented).__SENTRY_INSTRUMENTED__;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts the database operation type from the HTTP method and headers\n * @param method - The HTTP method of the request\n * @param headers - The request headers\n * @returns The database operation type ('select', 'insert', 'upsert', 'update', or 'delete')\n */\nexport function extractOperation(method: string, headers: Record = {}): string {\n switch (method) {\n case 'GET': {\n return 'select';\n }\n case 'POST': {\n if (headers['Prefer']?.includes('resolution=')) {\n return 'upsert';\n } else {\n return 'insert';\n }\n }\n case 'PATCH': {\n return 'update';\n }\n case 'DELETE': {\n return 'delete';\n }\n default: {\n return '';\n }\n }\n}\n\n/**\n * Translates Supabase filter parameters into readable method names for tracing\n * @param key - The filter key from the URL search parameters\n * @param query - The filter value from the URL search parameters\n * @returns A string representation of the filter as a method call\n */\nexport function translateFiltersIntoMethods(key: string, query: string): string {\n if (query === '' || query === '*') {\n return 'select(*)';\n }\n\n if (key === 'select') {\n return `select(${query})`;\n }\n\n if (key === 'or' || key.endsWith('.or')) {\n return `${key}${query}`;\n }\n\n const [filter, ...value] = query.split('.');\n\n let method;\n // Handle optional `configPart` of the filter\n if (filter?.startsWith('fts')) {\n method = 'textSearch';\n } else if (filter?.startsWith('plfts')) {\n method = 'textSearch[plain]';\n } else if (filter?.startsWith('phfts')) {\n method = 'textSearch[phrase]';\n } else if (filter?.startsWith('wfts')) {\n method = 'textSearch[websearch]';\n } else {\n method = (filter && FILTER_MAPPINGS[filter as keyof typeof FILTER_MAPPINGS]) || 'filter';\n }\n\n return `${method}(${key}, ${value.join('.')})`;\n}\n\nfunction instrumentAuthOperation(operation: AuthOperationFn, isAdmin = false): AuthOperationFn {\n return new Proxy(operation, {\n apply(target, thisArg, argumentsList) {\n return startSpan(\n {\n name: `auth ${isAdmin ? '(admin) ' : ''}${operation.name}`,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n 'db.system': 'postgresql',\n 'db.operation': `auth.${isAdmin ? 'admin.' : ''}${operation.name}`,\n },\n },\n span => {\n return Reflect.apply(target, thisArg, argumentsList)\n .then((res: unknown) => {\n if (res && typeof res === 'object' && 'error' in res && res.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n\n captureException(res.error, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n } else {\n span.setStatus({ code: SPAN_STATUS_OK });\n }\n\n span.end();\n return res;\n })\n .catch((err: unknown) => {\n span.setStatus({ code: SPAN_STATUS_ERROR });\n span.end();\n\n captureException(err, {\n mechanism: {\n handled: false,\n type: 'auto.db.supabase.auth',\n },\n });\n\n throw err;\n })\n .then(...argumentsList);\n },\n );\n },\n });\n}\n\nfunction instrumentSupabaseAuthClient(supabaseClientInstance: SupabaseClientInstance): void {\n const auth = supabaseClientInstance.auth;\n\n if (!auth || isInstrumented(supabaseClientInstance.auth)) {\n return;\n }\n\n for (const operation of AUTH_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth[operation] === 'function') {\n supabaseClientInstance.auth[operation] = instrumentAuthOperation(authOperation);\n }\n }\n\n for (const operation of AUTH_ADMIN_OPERATIONS_TO_INSTRUMENT) {\n const authOperation = auth.admin[operation];\n\n if (!authOperation) {\n continue;\n }\n\n if (typeof supabaseClientInstance.auth.admin[operation] === 'function') {\n supabaseClientInstance.auth.admin[operation] = instrumentAuthOperation(authOperation, true);\n }\n }\n\n markAsInstrumented(supabaseClientInstance.auth);\n}\n\nfunction instrumentSupabaseClientConstructor(SupabaseClient: unknown): void {\n if (isInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from)) {\n return;\n }\n\n (SupabaseClient as SupabaseClientConstructor).prototype.from = new Proxy(\n (SupabaseClient as SupabaseClientConstructor).prototype.from,\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTQueryBuilder = (rv as PostgRESTQueryBuilder).constructor;\n\n instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder as unknown as new () => PostgRESTQueryBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((SupabaseClient as SupabaseClientConstructor).prototype.from);\n}\n\nfunction instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder: PostgRESTFilterBuilder['constructor']): void {\n if (isInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then)) {\n return;\n }\n\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then = new Proxy(\n (PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then,\n {\n apply(target, thisArg, argumentsList) {\n const operations = DB_OPERATIONS_TO_INSTRUMENT;\n const typedThis = thisArg as PostgRESTFilterBuilder;\n const operation = extractOperation(typedThis.method, typedThis.headers);\n\n if (!operations.includes(operation)) {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n if (!typedThis?.url?.pathname || typeof typedThis.url.pathname !== 'string') {\n return Reflect.apply(target, thisArg, argumentsList);\n }\n\n const pathParts = typedThis.url.pathname.split('/');\n const table = pathParts.length > 0 ? pathParts[pathParts.length - 1] : '';\n\n const queryItems: string[] = [];\n for (const [key, value] of typedThis.url.searchParams.entries()) {\n // It's possible to have multiple entries for the same key, eg. `id=eq.7&id=eq.3`,\n // so we need to use array instead of object to collect them.\n queryItems.push(translateFiltersIntoMethods(key, value));\n }\n const body: Record = Object.create(null);\n if (isPlainObject(typedThis.body)) {\n for (const [key, value] of Object.entries(typedThis.body)) {\n body[key] = value;\n }\n }\n\n // Adding operation to the beginning of the description if it's not a `select` operation\n // For example, it can be an `insert` or `update` operation but the query can be `select(...)`\n // For `select` operations, we don't need repeat it in the description\n const description = `${operation === 'select' ? '' : `${operation}${body ? '(...) ' : ''}`}${queryItems.join(\n ' ',\n )} from(${table})`;\n\n const attributes: Record = {\n 'db.table': table,\n 'db.schema': typedThis.schema,\n 'db.url': typedThis.url.origin,\n 'db.sdk': typedThis.headers['X-Client-Info'],\n 'db.system': 'postgresql',\n 'db.operation': operation,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.supabase',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'db',\n };\n\n if (queryItems.length) {\n attributes['db.query'] = queryItems;\n }\n\n if (Object.keys(body).length) {\n attributes['db.body'] = body;\n }\n\n return startSpan(\n {\n name: description,\n attributes,\n },\n span => {\n return (Reflect.apply(target, thisArg, []) as Promise)\n .then(\n (res: SupabaseResponse) => {\n if (span) {\n if (res && typeof res === 'object' && 'status' in res) {\n setHttpStatus(span, res.status || 500);\n }\n span.end();\n }\n\n if (res?.error) {\n const err = new Error(res.error.message) as SupabaseError;\n if (res.error.code) {\n err.code = res.error.code;\n }\n if (res.error.details) {\n err.details = res.error.details;\n }\n\n const supabaseContext: Record = {};\n if (queryItems.length) {\n supabaseContext.query = queryItems;\n }\n if (Object.keys(body).length) {\n supabaseContext.body = body;\n }\n\n captureException(err, scope => {\n scope.addEventProcessor(e => {\n addExceptionMechanism(e, {\n handled: false,\n type: 'auto.db.supabase.postgres',\n });\n\n return e;\n });\n\n scope.setContext('supabase', supabaseContext);\n\n return scope;\n });\n }\n\n const breadcrumb: SupabaseBreadcrumb = {\n type: 'supabase',\n category: `db.${operation}`,\n message: description,\n };\n\n const data: Record = {};\n\n if (queryItems.length) {\n data.query = queryItems;\n }\n\n if (Object.keys(body).length) {\n data.body = body;\n }\n\n if (Object.keys(data).length) {\n breadcrumb.data = data;\n }\n\n addBreadcrumb(breadcrumb);\n\n return res;\n },\n (err: Error) => {\n // TODO: shouldn't we capture this error?\n if (span) {\n setHttpStatus(span, 500);\n span.end();\n }\n throw err;\n },\n )\n .then(...argumentsList);\n },\n );\n },\n },\n );\n\n markAsInstrumented((PostgRESTFilterBuilder.prototype as unknown as PostgRESTProtoThenable).then);\n}\n\nfunction instrumentPostgRESTQueryBuilder(PostgRESTQueryBuilder: new () => PostgRESTQueryBuilder): void {\n // We need to wrap _all_ operations despite them sharing the same `PostgRESTFilterBuilder`\n // constructor, as we don't know which method will be called first, and we don't want to miss any calls.\n for (const operation of DB_OPERATIONS_TO_INSTRUMENT) {\n if (isInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation])) {\n continue;\n }\n\n type PostgRESTOperation = keyof Pick;\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation] = new Proxy(\n (PostgRESTQueryBuilder.prototype as Record)[operation as PostgRESTOperation],\n {\n apply(target, thisArg, argumentsList) {\n const rv = Reflect.apply(target, thisArg, argumentsList);\n const PostgRESTFilterBuilder = (rv as PostgRESTFilterBuilder).constructor;\n\n DEBUG_BUILD && debug.log(`Instrumenting ${operation} operation's PostgRESTFilterBuilder`);\n\n instrumentPostgRESTFilterBuilder(PostgRESTFilterBuilder);\n\n return rv;\n },\n },\n );\n\n markAsInstrumented((PostgRESTQueryBuilder.prototype as Record)[operation]);\n }\n}\n\nexport const instrumentSupabaseClient = (supabaseClient: unknown): void => {\n if (!supabaseClient) {\n DEBUG_BUILD && debug.warn('Supabase integration was not installed because no Supabase client was provided.');\n return;\n }\n const SupabaseClientConstructor =\n supabaseClient.constructor === Function ? supabaseClient : supabaseClient.constructor;\n\n instrumentSupabaseClientConstructor(SupabaseClientConstructor);\n instrumentSupabaseAuthClient(supabaseClient as SupabaseClientInstance);\n};\n\nconst INTEGRATION_NAME = 'Supabase';\n\nconst _supabaseIntegration = ((supabaseClient: unknown) => {\n return {\n setupOnce() {\n instrumentSupabaseClient(supabaseClient);\n },\n name: INTEGRATION_NAME,\n };\n}) satisfies IntegrationFn;\n\nexport const supabaseIntegration = defineIntegration((options: { supabaseClient: any }) => {\n return _supabaseIntegration(options.supabaseClient);\n}) satisfies IntegrationFn;\n","// Portable instrumentation for https://github.com/porsager/postgres\n// This can be used in any environment (Node.js, Cloudflare Workers, etc.)\n// without depending on OpenTelemetry module hooking.\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport { SPAN_STATUS_ERROR, startSpanManual } from '../tracing';\nimport type { Span } from '../types-hoist/span';\nimport { debug } from '../utils/debug-logger';\nimport { getActiveSpan } from '../utils/spanUtils';\n\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\ntype PostgresConnectionContext = {\n ATTR_DB_NAMESPACE?: string;\n ATTR_SERVER_ADDRESS?: string;\n ATTR_SERVER_PORT?: string;\n};\n\ninterface PostgresJsSqlInstrumentationOptions {\n /**\n * Whether to require a parent span for the instrumentation.\n * If set to true, the instrumentation will only create spans if there is a parent span\n * available in the current scope.\n * @default true\n */\n requireParentSpan?: boolean;\n /**\n * Hook to modify the span before it is started.\n * This can be used to set additional attributes or modify the span in any way.\n */\n requestHook?: (span: Span, sanitizedSqlQuery: string, postgresConnectionContext?: PostgresConnectionContext) => void;\n}\n\nconst CONNECTION_CONTEXT_SYMBOL = Symbol('sentryPostgresConnectionContext');\n\n// Use the same Symbol.for() markers as the Node.js OTel instrumentation\n// so that both approaches recognize each other and prevent double-wrapping.\nconst INSTRUMENTED_MARKER = Symbol.for('sentry.instrumented.postgresjs');\n// Marker to track if a query was created from an instrumented sql instance.\n// This prevents double-spanning when both the wrapper and the Node.js Query.prototype\n// fallback patch are active simultaneously.\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\n/**\n * Instruments a postgres.js `sql` instance with Sentry tracing.\n *\n * This is a portable instrumentation function that works in any environment\n * (Node.js, Cloudflare Workers, etc.) without depending on OpenTelemetry.\n *\n * @example\n * ```javascript\n * import postgres from 'postgres';\n * import * as Sentry from '@sentry/cloudflare'; // or '@sentry/deno'\n *\n * const sql = Sentry.instrumentPostgresJsSql(\n * postgres({ host: 'localhost', database: 'mydb' })\n * );\n *\n * // All queries now create Sentry spans\n * await sql`SELECT * FROM users WHERE id = ${userId}`;\n * ```\n */\nexport function instrumentPostgresJsSql(sql: T, options?: PostgresJsSqlInstrumentationOptions): T {\n if (!sql || typeof sql !== 'function') {\n DEBUG_BUILD && debug.warn('instrumentPostgresJsSql: provided value is not a valid postgres.js sql instance');\n return sql;\n }\n\n return _instrumentSqlInstance(sql, { requireParentSpan: true, ...options }) as T;\n}\n\n/**\n * Instruments a sql instance by wrapping its query execution methods.\n */\nfunction _instrumentSqlInstance(\n sql: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n parentConnectionContext?: PostgresConnectionContext,\n): unknown {\n // Check if already instrumented to prevent double-wrapping\n // Using Symbol.for() ensures the marker survives proxying\n if ((sql as Record)[INSTRUMENTED_MARKER]) {\n return sql;\n }\n\n // Wrap the sql function to intercept query creation\n const proxiedSql: unknown = new Proxy(sql as (...args: unknown[]) => unknown, {\n apply(target, thisArg, argumentsList: unknown[]) {\n const query = Reflect.apply(target, thisArg, argumentsList);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query as { handle: unknown; strings?: string[] }, proxiedSql, options);\n }\n\n return query;\n },\n get(target, prop) {\n const original = (target as unknown as Record)[prop];\n\n if (typeof prop !== 'string' || typeof original !== 'function') {\n return original;\n }\n\n // Wrap methods that return PendingQuery objects (unsafe, file)\n if (prop === 'unsafe' || prop === 'file') {\n return _wrapQueryMethod(original as (...args: unknown[]) => unknown, target, proxiedSql, options);\n }\n\n // Wrap begin and reserve (not savepoint to avoid duplicate spans)\n if (prop === 'begin' || prop === 'reserve') {\n return _wrapCallbackMethod(original as (...args: unknown[]) => unknown, target, proxiedSql, options);\n }\n\n return original;\n },\n });\n\n // Use provided parent context if available, otherwise extract from sql.options\n if (parentConnectionContext) {\n (proxiedSql as Record)[CONNECTION_CONTEXT_SYMBOL] = parentConnectionContext;\n } else {\n _attachConnectionContext(sql, proxiedSql as Record);\n }\n\n // Mark both the original and proxy as instrumented to prevent double-wrapping\n (sql as Record)[INSTRUMENTED_MARKER] = true;\n (proxiedSql as Record)[INSTRUMENTED_MARKER] = true;\n\n return proxiedSql;\n}\n\n/**\n * Wraps query-returning methods (unsafe, file) to ensure their queries are instrumented.\n */\nfunction _wrapQueryMethod(\n original: (...args: unknown[]) => unknown,\n target: unknown,\n proxiedSql: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): (...args: unknown[]) => unknown {\n return function (this: unknown, ...args: unknown[]): unknown {\n const query = Reflect.apply(original, target, args);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query as { handle: unknown; strings?: string[] }, proxiedSql, options);\n }\n\n return query;\n };\n}\n\n/**\n * Wraps callback-based methods (begin, reserve) to recursively instrument Sql instances.\n * Note: These methods can also be used as tagged templates, which we pass through unchanged.\n *\n * Savepoint is not wrapped to avoid complex nested transaction instrumentation issues.\n * Queries within savepoint callbacks are still instrumented through the parent transaction's Sql instance.\n */\nfunction _wrapCallbackMethod(\n original: (...args: unknown[]) => unknown,\n target: unknown,\n parentSqlInstance: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): (...args: unknown[]) => unknown {\n return function (this: unknown, ...args: unknown[]): unknown {\n // Extract parent context to propagate to child instances\n const parentContext = (parentSqlInstance as Record)[CONNECTION_CONTEXT_SYMBOL] as\n | PostgresConnectionContext\n | undefined;\n\n // Check if this is a callback-based call by verifying the last argument is a function\n const isCallbackBased = typeof args[args.length - 1] === 'function';\n\n if (!isCallbackBased) {\n // Not a callback-based call - could be tagged template or promise-based\n const result = Reflect.apply(original, target, args);\n // If result is a Promise (e.g., reserve() without callback), instrument the resolved Sql instance\n if (result && typeof (result as Promise).then === 'function') {\n return (result as Promise).then((sqlInstance: unknown) => {\n return _instrumentSqlInstance(sqlInstance, options, parentContext);\n });\n }\n return result;\n }\n\n // Callback-based call: wrap the callback to instrument the Sql instance\n const callback = (args.length === 1 ? args[0] : args[1]) as (sql: unknown) => unknown;\n const wrappedCallback = function (sqlInstance: unknown): unknown {\n const instrumentedSql = _instrumentSqlInstance(sqlInstance, options, parentContext);\n return callback(instrumentedSql);\n };\n\n const newArgs = args.length === 1 ? [wrappedCallback] : [args[0], wrappedCallback];\n return Reflect.apply(original, target, newArgs);\n };\n}\n\n/**\n * Wraps a single query's handle method to create spans.\n */\nfunction _wrapSingleQueryHandle(\n query: { handle: unknown; strings?: string[]; __sentryWrapped?: boolean },\n sqlInstance: unknown,\n options: PostgresJsSqlInstrumentationOptions,\n): void {\n // Prevent double wrapping - check if the handle itself is already wrapped\n if ((query.handle as { __sentryWrapped?: boolean })?.__sentryWrapped) {\n return;\n }\n\n // Mark this query as coming from an instrumented sql instance.\n // This prevents the Node.js Query.prototype fallback patch from double-spanning.\n (query as Record)[QUERY_FROM_INSTRUMENTED_SQL] = true;\n\n const originalHandle = query.handle as (...args: unknown[]) => Promise;\n\n // IMPORTANT: We must replace the handle function directly, not use a Proxy,\n // because Query.then() internally calls this.handle(), which would bypass a Proxy wrapper.\n const wrappedHandle = async function (this: unknown, ...args: unknown[]): Promise {\n if (!_shouldCreateSpans(options)) {\n return originalHandle.apply(this, args);\n }\n\n const fullQuery = _reconstructQuery(query.strings);\n const sanitizedSqlQuery = _sanitizeSqlQuery(fullQuery);\n\n return startSpanManual(\n {\n name: sanitizedSqlQuery || 'postgresjs.query',\n op: 'db',\n },\n (span: Span) => {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.postgresjs');\n\n span.setAttributes({\n 'db.system.name': 'postgres',\n 'db.query.text': sanitizedSqlQuery,\n });\n\n const connectionContext = sqlInstance\n ? ((sqlInstance as Record)[CONNECTION_CONTEXT_SYMBOL] as\n | PostgresConnectionContext\n | undefined)\n : undefined;\n\n _setConnectionAttributes(span, connectionContext);\n\n if (options.requestHook) {\n try {\n options.requestHook(span, sanitizedSqlQuery, connectionContext);\n } catch (e) {\n span.setAttribute('sentry.hook.error', 'requestHook failed');\n DEBUG_BUILD && debug.error('Error in requestHook for PostgresJs instrumentation:', e);\n }\n }\n\n const queryWithCallbacks = this as {\n resolve: unknown;\n reject: unknown;\n };\n\n queryWithCallbacks.resolve = new Proxy(queryWithCallbacks.resolve as (...args: unknown[]) => unknown, {\n apply: (resolveTarget, resolveThisArg, resolveArgs: [{ command?: string }]) => {\n try {\n _setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n }\n\n return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n },\n });\n\n queryWithCallbacks.reject = new Proxy(queryWithCallbacks.reject as (...args: unknown[]) => unknown, {\n apply: (rejectTarget, rejectThisArg, rejectArgs: { message?: string; code?: string; name?: string }[]) => {\n try {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: rejectArgs?.[0]?.message || 'unknown_error',\n });\n\n span.setAttribute('db.response.status_code', rejectArgs?.[0]?.code || 'unknown');\n span.setAttribute('error.type', rejectArgs?.[0]?.name || 'unknown');\n\n _setOperationName(span, sanitizedSqlQuery);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n }\n return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n },\n });\n\n // Handle synchronous errors that might occur before promise is created\n try {\n return originalHandle.apply(this, args);\n } catch (e) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: e instanceof Error ? e.message : 'unknown_error',\n });\n span.end();\n throw e;\n }\n },\n );\n };\n\n (wrappedHandle as { __sentryWrapped?: boolean }).__sentryWrapped = true;\n query.handle = wrappedHandle;\n}\n\n/**\n * Determines whether a span should be created based on the current context.\n * If `requireParentSpan` is set to true in the options, a span will\n * only be created if there is a parent span available.\n */\nfunction _shouldCreateSpans(options: PostgresJsSqlInstrumentationOptions): boolean {\n const hasParentSpan = getActiveSpan() !== undefined;\n return hasParentSpan || !options.requireParentSpan;\n}\n\n/**\n * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n *\n * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n * strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n * returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n *\n * @internal Exported for testing only\n */\nexport function _reconstructQuery(strings: string[] | undefined): string | undefined {\n if (!strings?.length) {\n return undefined;\n }\n if (strings.length === 1) {\n return strings[0] || undefined;\n }\n // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n}\n\n/**\n * Sanitize SQL query as per the OTEL semantic conventions\n * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n *\n * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n *\n * @internal Exported for testing only\n */\nexport function _sanitizeSqlQuery(sqlQuery: string | undefined): string {\n if (!sqlQuery) {\n return 'Unknown SQL Query';\n }\n\n return (\n sqlQuery\n // Remove comments first (they may contain newlines and extra spaces)\n .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n .replace(/;\\s*$/, '') // Remove trailing semicolons\n // Collapse whitespace to a single space (after removing comments)\n .replace(/\\s+/g, ' ')\n .trim() // Remove extra spaces and trim\n // Sanitize hex/binary literals before string literals\n .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n // Sanitize string literals (handles escaped quotes)\n .replace(/'(?:[^']|'')*'/g, '?')\n // Sanitize hex numbers\n .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n // Sanitize boolean literals\n .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n .replace(/(?): void {\n const sqlInstance = sql as { options?: { host?: string[]; port?: number[]; database?: string } };\n if (!sqlInstance.options || typeof sqlInstance.options !== 'object') {\n return;\n }\n\n const opts = sqlInstance.options;\n // postgres.js stores parsed options with host and port as arrays\n // The library defaults to 'localhost' and 5432 if not specified, but we're defensive here\n const host = opts.host?.[0] || 'localhost';\n const port = opts.port?.[0] || 5432;\n\n const connectionContext: PostgresConnectionContext = {\n ATTR_DB_NAMESPACE: typeof opts.database === 'string' && opts.database !== '' ? opts.database : undefined,\n ATTR_SERVER_ADDRESS: host,\n ATTR_SERVER_PORT: String(port),\n };\n\n proxiedSql[CONNECTION_CONTEXT_SYMBOL] = connectionContext;\n}\n","import { defineIntegration } from '../integration';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { isError } from '../utils/is';\nimport { truncate } from '../utils/string';\n\ninterface ZodErrorsOptions {\n key?: string;\n /**\n * Limits the number of Zod errors inlined in each Sentry event.\n *\n * @default 10\n */\n limit?: number;\n /**\n * Save full list of Zod issues as an attachment in Sentry\n *\n * @default false\n */\n saveZodIssuesAsAttachment?: boolean;\n}\n\nconst DEFAULT_LIMIT = 10;\nconst INTEGRATION_NAME = 'ZodErrors';\n\n/**\n * Simplified ZodIssue type definition\n */\ninterface ZodIssue {\n path: (string | number)[];\n message?: string;\n expected?: unknown;\n received?: unknown;\n unionErrors?: unknown[];\n keys?: unknown[];\n invalid_literal?: unknown;\n}\n\ninterface ZodError extends Error {\n issues: ZodIssue[];\n}\n\nfunction originalExceptionIsZodError(originalException: unknown): originalException is ZodError {\n return (\n isError(originalException) &&\n originalException.name === 'ZodError' &&\n Array.isArray((originalException as ZodError).issues)\n );\n}\n\ntype SingleLevelZodIssue = {\n [P in keyof T]: T[P] extends string | number | undefined\n ? T[P]\n : T[P] extends unknown[]\n ? string | undefined\n : unknown;\n};\n\n/**\n * Formats child objects or arrays to a string\n * that is preserved when sent to Sentry.\n *\n * Without this, we end up with something like this in Sentry:\n *\n * [\n * [Object],\n * [Object],\n * [Object],\n * [Object]\n * ]\n */\nexport function flattenIssue(issue: ZodIssue): SingleLevelZodIssue {\n return {\n ...issue,\n path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined,\n keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined,\n unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined,\n };\n}\n\n/**\n * Takes ZodError issue path array and returns a flattened version as a string.\n * This makes it easier to display paths within a Sentry error message.\n *\n * Array indexes are normalized to reduce duplicate entries\n *\n * @param path ZodError issue path\n * @returns flattened path\n *\n * @example\n * flattenIssuePath([0, 'foo', 1, 'bar']) // -> '.foo..bar'\n */\nexport function flattenIssuePath(path: Array): string {\n return path\n .map(p => {\n if (typeof p === 'number') {\n return '';\n } else {\n return p;\n }\n })\n .join('.');\n}\n\n/**\n * Zod error message is a stringified version of ZodError.issues\n * This doesn't display well in the Sentry UI. Replace it with something shorter.\n */\nexport function formatIssueMessage(zodError: ZodError): string {\n const errorKeyMap = new Set();\n for (const iss of zodError.issues) {\n const issuePath = flattenIssuePath(iss.path);\n if (issuePath.length > 0) {\n errorKeyMap.add(issuePath);\n }\n }\n\n const errorKeys = Array.from(errorKeyMap);\n if (errorKeys.length === 0) {\n // If there are no keys, then we're likely validating the root\n // variable rather than a key within an object. This attempts\n // to extract what type it was that failed to validate.\n // For example, z.string().parse(123) would return \"string\" here.\n let rootExpectedType = 'variable';\n if (zodError.issues.length > 0) {\n const iss = zodError.issues[0];\n if (iss !== undefined && 'expected' in iss && typeof iss.expected === 'string') {\n rootExpectedType = iss.expected;\n }\n }\n return `Failed to validate ${rootExpectedType}`;\n }\n return `Failed to validate keys: ${truncate(errorKeys.join(', '), 100)}`;\n}\n\n/**\n * Applies ZodError issues to an event extra and replaces the error message\n */\nexport function applyZodErrorsToEvent(\n limit: number,\n saveZodIssuesAsAttachment: boolean = false,\n event: Event,\n hint: EventHint,\n): Event {\n if (\n !event.exception?.values ||\n !hint.originalException ||\n !originalExceptionIsZodError(hint.originalException) ||\n hint.originalException.issues.length === 0\n ) {\n return event;\n }\n\n try {\n const issuesToFlatten = saveZodIssuesAsAttachment\n ? hint.originalException.issues\n : hint.originalException.issues.slice(0, limit);\n const flattenedIssues = issuesToFlatten.map(flattenIssue);\n\n if (saveZodIssuesAsAttachment) {\n // Sometimes having the full error details can be helpful.\n // Attachments have much higher limits, so we can include the full list of issues.\n if (!Array.isArray(hint.attachments)) {\n hint.attachments = [];\n }\n hint.attachments.push({\n filename: 'zod_issues.json',\n data: JSON.stringify({\n issues: flattenedIssues,\n }),\n });\n }\n\n return {\n ...event,\n exception: {\n ...event.exception,\n values: [\n {\n ...event.exception.values[0],\n value: formatIssueMessage(hint.originalException),\n },\n ...event.exception.values.slice(1),\n ],\n },\n extra: {\n ...event.extra,\n 'zoderror.issues': flattenedIssues.slice(0, limit),\n },\n };\n } catch (e) {\n // Hopefully we never throw errors here, but record it\n // with the event just in case.\n return {\n ...event,\n extra: {\n ...event.extra,\n 'zoderrors sentry integration parse error': {\n message: 'an exception was thrown while processing ZodError within applyZodErrorsToEvent()',\n error: e instanceof Error ? `${e.name}: ${e.message}\\n${e.stack}` : 'unknown',\n },\n },\n };\n }\n}\n\nconst _zodErrorsIntegration = ((options: ZodErrorsOptions = {}) => {\n const limit = options.limit ?? DEFAULT_LIMIT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent, hint): Event {\n const processedEvent = applyZodErrorsToEvent(limit, options.saveZodIssuesAsAttachment, originalEvent, hint);\n return processedEvent;\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Sentry integration to process Zod errors, making them easier to work with in Sentry.\n */\nexport const zodErrorsIntegration = defineIntegration(_zodErrorsIntegration);\n","import { defineIntegration } from '../integration';\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\nimport type { EventItem } from '../types-hoist/envelope';\nimport type { Event } from '../types-hoist/event';\nimport type { StackFrame } from '../types-hoist/stackframe';\nimport { forEachEnvelopeItem } from '../utils/envelope';\nimport { getFramesFromEvent } from '../utils/stacktrace';\n\ninterface Options {\n /**\n * Keys that have been provided in the Sentry bundler plugin via the the `applicationKey` option, identifying your bundles.\n *\n * - Webpack plugin: https://www.npmjs.com/package/@sentry/webpack-plugin#applicationkey\n * - Vite plugin: https://www.npmjs.com/package/@sentry/vite-plugin#applicationkey\n * - Esbuild plugin: https://www.npmjs.com/package/@sentry/esbuild-plugin#applicationkey\n * - Rollup plugin: https://www.npmjs.com/package/@sentry/rollup-plugin#applicationkey\n */\n filterKeys: string[];\n\n /**\n * Defines how the integration should behave. \"Third-Party Stack Frames\" are stack frames that did not come from files marked with a matching bundle key.\n *\n * You can define the behaviour with one of 4 modes:\n * - `drop-error-if-contains-third-party-frames`: Drop error events that contain at least one third-party stack frame.\n * - `drop-error-if-exclusively-contains-third-party-frames`: Drop error events that exclusively contain third-party stack frames.\n * - `apply-tag-if-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains at least one third-party stack frame.\n * - `apply-tag-if-exclusively-contains-third-party-frames`: Keep all error events, but apply a `third_party_code: true` tag in case the error contains exclusively third-party stack frames.\n *\n * If you chose the mode to only apply tags, the tags can then be used in Sentry to filter your issue stream by entering `!third_party_code:True` in the search bar.\n */\n behaviour:\n | 'drop-error-if-contains-third-party-frames'\n | 'drop-error-if-exclusively-contains-third-party-frames'\n | 'apply-tag-if-contains-third-party-frames'\n | 'apply-tag-if-exclusively-contains-third-party-frames';\n\n /**\n * @experimental\n * If set to true, the integration will ignore frames that are internal to the Sentry SDK from the third-party frame detection.\n * Note that enabling this option might lead to errors being misclassified as third-party errors.\n */\n ignoreSentryInternalFrames?: boolean;\n}\n\n/**\n * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins.\n */\nexport const thirdPartyErrorFilterIntegration = defineIntegration((options: Options) => {\n return {\n name: 'ThirdPartyErrorsFilter',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n\n processEvent(event) {\n const frameKeys = getBundleKeysForAllFramesWithFilenames(event, options.ignoreSentryInternalFrames);\n\n if (frameKeys) {\n const arrayMethod =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'apply-tag-if-contains-third-party-frames'\n ? 'some'\n : 'every';\n\n const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key)));\n\n if (behaviourApplies) {\n const shouldDrop =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames';\n if (shouldDrop) {\n return null;\n } else {\n event.tags = {\n ...event.tags,\n third_party_code: true,\n };\n }\n }\n }\n\n return event;\n },\n };\n});\n\n/**\n * Checks if a stack frame is a Sentry internal frame by strictly matching:\n * 1. The frame must be the last frame in the stack\n * 2. The filename must indicate the internal helpers file\n * 3. The context_line must contain the exact pattern \"fn.apply(this, wrappedArguments)\"\n * 4. The comment pattern \"Attempt to invoke user-land function\" must be present in pre_context\n *\n */\nfunction isSentryInternalFrame(frame: StackFrame, frameIndex: number): boolean {\n // Only match the last frame (index 0 in reversed stack)\n if (frameIndex !== 0 || !frame.context_line || !frame.filename) {\n return false;\n }\n\n if (\n !frame.filename.includes('sentry') ||\n !frame.filename.includes('helpers') || // Filename would look something like this: 'node_modules/@sentry/browser/build/npm/esm/helpers.js'\n !frame.context_line.includes(SENTRY_INTERNAL_FN_APPLY) // Must have context_line with the exact fn.apply pattern\n ) {\n return false;\n }\n\n // Check pre_context array for comment pattern\n if (frame.pre_context) {\n const len = frame.pre_context.length;\n for (let i = 0; i < len; i++) {\n if (frame.pre_context[i]?.includes(SENTRY_INTERNAL_COMMENT)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getBundleKeysForAllFramesWithFilenames(\n event: Event,\n ignoreSentryInternalFrames?: boolean,\n): string[][] | undefined {\n const frames = getFramesFromEvent(event);\n\n if (!frames) {\n return undefined;\n }\n\n return frames\n .filter((frame, index) => {\n // Exclude frames without a filename\n if (!frame.filename) {\n return false;\n }\n // Exclude frames without location info, since these are likely native code or built-ins.\n // JS frames have lineno/colno, WASM frames have instruction_addr instead.\n if (frame.lineno == null && frame.colno == null && frame.instruction_addr == null) {\n return false;\n }\n // Optionally ignore Sentry internal frames\n return !ignoreSentryInternalFrames || !isSentryInternalFrame(frame, index);\n })\n .map(frame => {\n if (!frame.module_metadata) {\n return [];\n }\n return Object.keys(frame.module_metadata)\n .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX))\n .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length));\n });\n}\n\nconst BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:';\nconst SENTRY_INTERNAL_COMMENT = 'Attempt to invoke user-land function';\nconst SENTRY_INTERNAL_FN_APPLY = 'fn.apply(this, wrappedArguments)';\n","import { addBreadcrumb } from '../breadcrumbs';\nimport { getClient } from '../currentScopes';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { CONSOLE_LEVELS } from '../utils/debug-logger';\nimport { severityLevelFromString } from '../utils/severity';\nimport { safeJoin } from '../utils/string';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ninterface ConsoleIntegrationOptions {\n levels: ConsoleLevel[];\n}\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\nconst INTEGRATION_NAME = 'Console';\n\n/**\n * Captures calls to the `console` API as breadcrumbs in Sentry.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```js\n * Sentry.init({\n * integrations: [Sentry.consoleIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleIntegration = defineIntegration((options: Partial = {}) => {\n const levels = new Set(options.levels || CONSOLE_LEVELS);\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.has(level)) {\n return;\n }\n\n addConsoleBreadcrumb(level, args);\n });\n },\n };\n});\n\n/**\n * Capture a console breadcrumb.\n *\n * Exported just for tests.\n */\nexport function addConsoleBreadcrumb(level: ConsoleLevel, args: unknown[]): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: args,\n logger: 'console',\n },\n level: severityLevelFromString(level),\n message: formatConsoleArgs(args),\n };\n\n if (level === 'assert') {\n if (args[0] === false) {\n const assertionArgs = args.slice(1);\n breadcrumb.message =\n assertionArgs.length > 0 ? `Assertion failed: ${formatConsoleArgs(assertionArgs)}` : 'Assertion failed';\n breadcrumb.data.arguments = assertionArgs;\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: args,\n level,\n });\n}\n\nfunction formatConsoleArgs(values: unknown[]): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoin(values, ' ');\n}\n","import { getCurrentScope } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { type Event } from '../types-hoist/event';\nimport { debug } from './debug-logger';\nimport { getActiveSpan, spanToJSON } from './spanUtils';\n\n/**\n * Ordered LRU cache for storing feature flags in the scope context. The name\n * of each flag in the buffer is unique, and the output of getAll() is ordered\n * from oldest to newest.\n */\n\nexport type FeatureFlag = { readonly flag: string; readonly result: boolean };\n\n/**\n * Max size of the LRU flag buffer stored in Sentry scope and event contexts.\n */\nexport const _INTERNAL_FLAG_BUFFER_SIZE = 100;\n\n/**\n * Max number of flag evaluations to record per span.\n */\nexport const _INTERNAL_MAX_FLAGS_PER_SPAN = 10;\n\nconst SPAN_FLAG_ATTRIBUTE_PREFIX = 'flag.evaluation.';\n\n/**\n * Copies feature flags that are in current scope context to the event context\n */\nexport function _INTERNAL_copyFlagsFromScopeToEvent(event: Event): Event {\n const scope = getCurrentScope();\n const flagContext = scope.getScopeData().contexts.flags;\n const flagBuffer = flagContext ? flagContext.values : [];\n\n if (!flagBuffer.length) {\n return event;\n }\n\n if (event.contexts === undefined) {\n event.contexts = {};\n }\n event.contexts.flags = { values: [...flagBuffer] };\n return event;\n}\n\n/**\n * Inserts a flag into the current scope's context while maintaining ordered LRU properties.\n * Not thread-safe. After inserting:\n * - The flag buffer is sorted in order of recency, with the newest evaluation at the end.\n * - The names in the buffer are always unique.\n * - The length of the buffer never exceeds `maxSize`.\n *\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertFlagToScope(\n name: string,\n value: unknown,\n maxSize: number = _INTERNAL_FLAG_BUFFER_SIZE,\n): void {\n const scopeContexts = getCurrentScope().getScopeData().contexts;\n if (!scopeContexts.flags) {\n scopeContexts.flags = { values: [] };\n }\n const flags = scopeContexts.flags.values;\n _INTERNAL_insertToFlagBuffer(flags, name, value, maxSize);\n}\n\n/**\n * Exported for tests only. Currently only accepts boolean values (otherwise no-op).\n * Inserts a flag into a FeatureFlag array while maintaining the following properties:\n * - Flags are sorted in order of recency, with the newest evaluation at the end.\n * - The flag names are always unique.\n * - The length of the array never exceeds `maxSize`.\n *\n * @param flags The buffer to insert the flag into.\n * @param name Name of the feature flag to insert.\n * @param value Value of the feature flag.\n * @param maxSize Max number of flags the buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_insertToFlagBuffer(\n flags: FeatureFlag[],\n name: string,\n value: unknown,\n maxSize: number,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n if (flags.length > maxSize) {\n DEBUG_BUILD && debug.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${maxSize}`);\n return;\n }\n\n // Check if the flag is already in the buffer - O(n)\n const index = flags.findIndex(f => f.flag === name);\n\n if (index !== -1) {\n // The flag was found, remove it from its current position - O(n)\n flags.splice(index, 1);\n }\n\n if (flags.length === maxSize) {\n // If at capacity, pop the earliest flag - O(n)\n flags.shift();\n }\n\n // Push the flag to the end - O(1)\n flags.push({\n flag: name,\n result: value,\n });\n}\n\n/**\n * Records a feature flag evaluation for the active span. This is a no-op for non-boolean values.\n * The flag and its value is stored in span attributes with the `flag.evaluation` prefix. Once the\n * unique flags for a span reaches maxFlagsPerSpan, subsequent flags are dropped.\n *\n * @param name Name of the feature flag.\n * @param value Value of the feature flag. Non-boolean values are ignored.\n * @param maxFlagsPerSpan Max number of flags a buffer should store. Default value should always be used in production.\n */\nexport function _INTERNAL_addFeatureFlagToActiveSpan(\n name: string,\n value: unknown,\n maxFlagsPerSpan: number = _INTERNAL_MAX_FLAGS_PER_SPAN,\n): void {\n if (typeof value !== 'boolean') {\n return;\n }\n\n const span = getActiveSpan();\n if (!span) {\n return;\n }\n\n const attributes = spanToJSON(span).data;\n\n // If the flag already exists, always update it\n if (`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}` in attributes) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n return;\n }\n\n // Else, add the flag to the span if we have not reached the max number of flags\n const numOfAddedFlags = Object.keys(attributes).filter(key => key.startsWith(SPAN_FLAG_ATTRIBUTE_PREFIX)).length;\n if (numOfAddedFlags < maxFlagsPerSpan) {\n span.setAttribute(`${SPAN_FLAG_ATTRIBUTE_PREFIX}${name}`, value);\n }\n}\n","import { type Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport { type Event, type EventHint } from '../../types-hoist/event';\nimport { type Integration, type IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\n\nexport interface FeatureFlagsIntegration extends Integration {\n addFeatureFlag: (name: string, value: unknown) => void;\n}\n\n/**\n * Sentry integration for buffering feature flag evaluations manually with an API, and\n * capturing them on error events and spans.\n *\n * See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.\n *\n * @example\n * ```\n * import * as Sentry from '@sentry/browser';\n * import { type FeatureFlagsIntegration } from '@sentry/browser';\n *\n * // Setup\n * Sentry.init(..., integrations: [Sentry.featureFlagsIntegration()])\n *\n * // Verify\n * const flagsIntegration = Sentry.getClient()?.getIntegrationByName('FeatureFlags');\n * if (flagsIntegration) {\n * flagsIntegration.addFeatureFlag('my-flag', true);\n * } else {\n * // check your setup\n * }\n * Sentry.captureException(Exception('broke')); // 'my-flag' should be captured to this Sentry event.\n * ```\n */\nexport const featureFlagsIntegration = defineIntegration(() => {\n return {\n name: 'FeatureFlags',\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n\n addFeatureFlag(name: string, value: unknown): void {\n _INTERNAL_insertFlagToScope(name, value);\n _INTERNAL_addFeatureFlagToActiveSpan(name, value);\n },\n };\n}) as IntegrationFn;\n","import type { Client } from '../../client';\nimport { defineIntegration } from '../../integration';\nimport type { Event, EventHint } from '../../types-hoist/event';\nimport type { IntegrationFn } from '../../types-hoist/integration';\nimport {\n _INTERNAL_addFeatureFlagToActiveSpan,\n _INTERNAL_copyFlagsFromScopeToEvent,\n _INTERNAL_insertFlagToScope,\n} from '../../utils/featureFlags';\nimport { fill } from '../../utils/object';\n\ninterface GrowthBookLike {\n isOn(this: GrowthBookLike, featureKey: string, ...rest: unknown[]): boolean;\n getFeatureValue(this: GrowthBookLike, featureKey: string, defaultValue: unknown, ...rest: unknown[]): unknown;\n}\n\nexport type GrowthBookClassLike = new (...args: unknown[]) => GrowthBookLike;\n\n/**\n * Sentry integration for capturing feature flag evaluations from GrowthBook.\n *\n * Only boolean results are captured at this time.\n *\n * @example\n * ```typescript\n * import { GrowthBook } from '@growthbook/growthbook';\n * import * as Sentry from '@sentry/browser'; // or '@sentry/node'\n *\n * Sentry.init({\n * dsn: 'your-dsn',\n * integrations: [\n * Sentry.growthbookIntegration({ growthbookClass: GrowthBook })\n * ]\n * });\n * ```\n */\nexport const growthbookIntegration: IntegrationFn = defineIntegration(\n ({ growthbookClass }: { growthbookClass: GrowthBookClassLike }) => {\n return {\n name: 'GrowthBook',\n\n setupOnce() {\n const proto = growthbookClass.prototype as GrowthBookLike;\n\n // Type guard and wrap isOn\n if (typeof proto.isOn === 'function') {\n fill(proto, 'isOn', _wrapAndCaptureBooleanResult);\n }\n\n // Type guard and wrap getFeatureValue\n if (typeof proto.getFeatureValue === 'function') {\n fill(proto, 'getFeatureValue', _wrapAndCaptureBooleanResult);\n }\n },\n\n processEvent(event: Event, _hint: EventHint, _client: Client): Event {\n return _INTERNAL_copyFlagsFromScopeToEvent(event);\n },\n };\n },\n);\n\nfunction _wrapAndCaptureBooleanResult(\n original: (this: GrowthBookLike, ...args: unknown[]) => unknown,\n): (this: GrowthBookLike, ...args: unknown[]) => unknown {\n return function (this: GrowthBookLike, ...args: unknown[]): unknown {\n const flagName = args[0];\n const result = original.apply(this, args);\n\n if (typeof flagName === 'string' && typeof result === 'boolean') {\n _INTERNAL_insertFlagToScope(flagName, result);\n _INTERNAL_addFeatureFlagToActiveSpan(flagName, result);\n }\n\n return result;\n };\n}\n","import type { Client } from '../client';\nimport { getCurrentScope, getIsolationScope } from '../currentScopes';\nimport { defineIntegration } from '../integration';\nimport { GEN_AI_CONVERSATION_ID_ATTRIBUTE } from '../semanticAttributes';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport type { Span } from '../types-hoist/span';\n\nconst INTEGRATION_NAME = 'ConversationId';\n\nconst _conversationIdIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setup(client: Client) {\n client.on('spanStart', (span: Span) => {\n const scopeData = getCurrentScope().getScopeData();\n const isolationScopeData = getIsolationScope().getScopeData();\n\n const conversationId = scopeData.conversationId || isolationScopeData.conversationId;\n\n if (conversationId) {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, conversationId);\n }\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Automatically applies conversation ID from scope to spans.\n *\n * This integration reads the conversation ID from the current or isolation scope\n * and applies it to spans when they start. This ensures the conversation ID is\n * available for all AI-related operations.\n */\nexport const conversationIdIntegration = defineIntegration(_conversationIdIntegration);\n","import { getClient } from './currentScopes';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Profiler, ProfilingIntegration } from './types-hoist/profiling';\nimport { debug } from './utils/debug-logger';\n\nfunction isProfilingIntegrationWithProfiler(\n integration: ProfilingIntegration | undefined,\n): integration is ProfilingIntegration {\n return (\n !!integration &&\n typeof integration['_profiler'] !== 'undefined' &&\n typeof integration['_profiler']['start'] === 'function' &&\n typeof integration['_profiler']['stop'] === 'function'\n );\n}\n/**\n * Starts the Sentry continuous profiler.\n * This mode is exclusive with the transaction profiler and will only work if the profilesSampleRate is set to a falsy value.\n * In continuous profiling mode, the profiler will keep reporting profile chunks to Sentry until it is stopped, which allows for continuous profiling of the application.\n */\nfunction startProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.start();\n}\n\n/**\n * Stops the Sentry continuous profiler.\n * Calls to stop will stop the profiler and flush the currently collected profile data to Sentry.\n */\nfunction stopProfiler(): void {\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn('No Sentry client available, profiling is not started');\n return;\n }\n\n const integration = client.getIntegrationByName('ProfilingIntegration');\n if (!integration) {\n DEBUG_BUILD && debug.warn('ProfilingIntegration is not available');\n return;\n }\n\n if (!isProfilingIntegrationWithProfiler(integration)) {\n DEBUG_BUILD && debug.warn('Profiler is not available on profiling integration.');\n return;\n }\n\n integration._profiler.stop();\n}\n\n/**\n * Profiler namespace for controlling the profiler in 'manual' mode.\n *\n * Requires the `nodeProfilingIntegration` from the `@sentry/profiling-node` package.\n */\nexport const profiler: Profiler = {\n startProfiler,\n stopProfiler,\n};\n","import { getClient } from './currentScopes';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes';\nimport { setHttpStatus, SPAN_STATUS_ERROR, startInactiveSpan } from './tracing';\nimport { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan';\nimport type { FetchBreadcrumbHint } from './types-hoist/breadcrumb';\nimport type { HandlerDataFetch } from './types-hoist/instrument';\nimport type { ResponseHookInfo } from './types-hoist/request';\nimport type { Span, SpanAttributes, SpanOrigin } from './types-hoist/span';\nimport { SENTRY_BAGGAGE_KEY_PREFIX } from './utils/baggage';\nimport { hasSpansEnabled } from './utils/hasSpansEnabled';\nimport { isInstanceOf, isRequest } from './utils/is';\nimport { getActiveSpan } from './utils/spanUtils';\nimport { getTraceData } from './utils/traceData';\nimport {\n getSanitizedUrlStringFromUrlObject,\n isURLObjectRelative,\n parseStringToURLObject,\n stripDataUrlContent,\n} from './utils/url';\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not precisely the Header type used in Request, but it'll pass duck-typing\n | {\n append: (key: string, value: string) => void;\n get: (key: string) => string | null | undefined;\n };\n\ninterface InstrumentFetchRequestOptions {\n spanOrigin?: SpanOrigin;\n propagateTraceparent?: boolean;\n onRequestSpanEnd?: (span: Span, responseInformation: ResponseHookInfo) => void;\n}\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @deprecated pass an options object instead of the spanOrigin parameter\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOrigin: SpanOrigin,\n): Span | undefined;\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- needed because the other overload is deprecated\n instrumentFetchRequestOptions: InstrumentFetchRequestOptions,\n): Span | undefined;\n\n/**\n * Create and track fetch request spans for usage in combination with `addFetchInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): Span | undefined {\n if (!handlerData.fetchData) {\n return undefined;\n }\n\n const { method, url } = handlerData.fetchData;\n\n const shouldCreateSpanResult = hasSpansEnabled() && shouldCreateSpan(url);\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n\n if (span) {\n // Only end the span and call hooks if we're actually recording\n if (shouldCreateSpanResult) {\n endSpan(span, handlerData);\n _callOnRequestSpanEnd(span, handlerData, spanOriginOrOptions);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n\n return undefined;\n }\n\n // Backwards-compatible with the old signature. Needed to introduce the combined optional parameter\n // to avoid API breakage for anyone calling this function with the optional spanOrigin parameter\n // TODO (v11): remove this backwards-compatible code and only accept the options parameter\n const { spanOrigin = 'auto.http.browser', propagateTraceparent = false } =\n typeof spanOriginOrOptions === 'object' ? spanOriginOrOptions : { spanOrigin: spanOriginOrOptions };\n\n const hasParent = !!getActiveSpan();\n\n const span =\n shouldCreateSpanResult && hasParent\n ? startInactiveSpan(getSpanStartOptions(url, method, spanOrigin))\n : new SentryNonRecordingSpan();\n\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n\n if (shouldAttachHeaders(handlerData.fetchData.url)) {\n const request: string | Request = handlerData.args[0];\n\n // Shallow clone the options object to avoid mutating the original user-provided object\n // Examples: users re-using same options object for multiple fetch calls, frozen objects\n const options: { [key: string]: unknown } = { ...(handlerData.args[1] || {}) };\n\n const headers = _addTracingHeadersToFetchRequest(\n request,\n options,\n // If performance is disabled (TWP) or there's no active root span (pageload/navigation/interaction),\n // we do not want to use the span as base for the trace headers,\n // which means that the headers will be generated from the scope and the sampling decision is deferred\n hasSpansEnabled() && hasParent ? span : undefined,\n propagateTraceparent,\n );\n if (headers) {\n // Ensure this is actually set, if no options have been passed previously\n handlerData.args[1] = options;\n options.headers = headers;\n }\n }\n\n const client = getClient();\n\n if (client) {\n const fetchHint = {\n input: handlerData.args,\n response: handlerData.response,\n startTimestamp: handlerData.startTimestamp,\n endTimestamp: handlerData.endTimestamp,\n } satisfies FetchBreadcrumbHint;\n\n client.emit('beforeOutgoingRequestSpan', span, fetchHint);\n }\n\n return span;\n}\n\n/**\n * Calls the onRequestSpanEnd callback if it is defined.\n */\nexport function _callOnRequestSpanEnd(\n span: Span,\n handlerData: HandlerDataFetch,\n spanOriginOrOptions?: SpanOrigin | InstrumentFetchRequestOptions,\n): void {\n const onRequestSpanEnd =\n typeof spanOriginOrOptions === 'object' && spanOriginOrOptions !== null\n ? spanOriginOrOptions.onRequestSpanEnd\n : undefined;\n\n onRequestSpanEnd?.(span, {\n headers: handlerData.response?.headers,\n error: handlerData.error,\n });\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers.\n * exported only for testing purposes\n *\n * When we determine if we should add a baggage header, there are 3 cases:\n * 1. No previous baggage header -> add baggage\n * 2. Previous baggage header has no sentry baggage values -> add our baggage\n * 3. Previous baggage header has sentry baggage values -> do nothing (might have been added manually by users)\n */\n// eslint-disable-next-line complexity -- yup it's this complicated :(\nexport function _addTracingHeadersToFetchRequest(\n request: string | Request,\n fetchOptionsObj: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | PolymorphicRequestHeaders;\n },\n span?: Span,\n propagateTraceparent?: boolean,\n): PolymorphicRequestHeaders | undefined {\n const traceHeaders = getTraceData({ span, propagateTraceparent });\n const sentryTrace = traceHeaders['sentry-trace'];\n const baggage = traceHeaders.baggage;\n const traceparent = traceHeaders.traceparent;\n\n // Nothing to do, when we return undefined here, the original headers will be used\n if (!sentryTrace) {\n return undefined;\n }\n\n const originalHeaders = fetchOptionsObj.headers || (isRequest(request) ? request.headers : undefined);\n\n if (!originalHeaders) {\n return { ...traceHeaders };\n } else if (isHeaders(originalHeaders)) {\n const newHeaders = new Headers(originalHeaders);\n\n // We don't want to override manually added sentry headers\n if (!newHeaders.get('sentry-trace')) {\n newHeaders.set('sentry-trace', sentryTrace);\n }\n\n if (propagateTraceparent && traceparent && !newHeaders.get('traceparent')) {\n newHeaders.set('traceparent', traceparent);\n }\n\n if (baggage) {\n const prevBaggageHeader = newHeaders.get('baggage');\n\n if (!prevBaggageHeader) {\n newHeaders.set('baggage', baggage);\n } else if (!baggageHeaderHasSentryBaggageValues(prevBaggageHeader)) {\n newHeaders.set('baggage', `${prevBaggageHeader},${baggage}`);\n }\n }\n\n return newHeaders;\n } else if (Array.isArray(originalHeaders)) {\n const newHeaders = [...originalHeaders];\n\n if (!originalHeaders.find(header => header[0] === 'sentry-trace')) {\n newHeaders.push(['sentry-trace', sentryTrace]);\n }\n\n if (propagateTraceparent && traceparent && !originalHeaders.find(header => header[0] === 'traceparent')) {\n newHeaders.push(['traceparent', traceparent]);\n }\n\n const prevBaggageHeaderWithSentryValues = originalHeaders.find(\n header => header[0] === 'baggage' && baggageHeaderHasSentryBaggageValues(header[1]),\n );\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push(['baggage', baggage]);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else {\n const existingSentryTraceHeader = 'sentry-trace' in originalHeaders ? originalHeaders['sentry-trace'] : undefined;\n const existingTraceparentHeader = 'traceparent' in originalHeaders ? originalHeaders.traceparent : undefined;\n const existingBaggageHeader = 'baggage' in originalHeaders ? originalHeaders.baggage : undefined;\n\n const newBaggageHeaders: string[] = existingBaggageHeader\n ? Array.isArray(existingBaggageHeader)\n ? [...existingBaggageHeader]\n : [existingBaggageHeader]\n : [];\n\n const prevBaggageHeaderWithSentryValues =\n existingBaggageHeader &&\n (Array.isArray(existingBaggageHeader)\n ? existingBaggageHeader.find(headerItem => baggageHeaderHasSentryBaggageValues(headerItem))\n : baggageHeaderHasSentryBaggageValues(existingBaggageHeader));\n\n if (baggage && !prevBaggageHeaderWithSentryValues) {\n newBaggageHeaders.push(baggage);\n }\n\n const newHeaders: {\n 'sentry-trace': string;\n baggage: string | undefined;\n traceparent?: string;\n } = {\n ...originalHeaders,\n 'sentry-trace': (existingSentryTraceHeader as string | undefined) ?? sentryTrace,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n\n if (propagateTraceparent && traceparent && !existingTraceparentHeader) {\n newHeaders.traceparent = traceparent;\n }\n\n return newHeaders;\n }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n if (handlerData.response) {\n setHttpStatus(span, handlerData.response.status);\n\n const contentLength = handlerData.response?.headers?.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n}\n\nfunction baggageHeaderHasSentryBaggageValues(baggageHeader: string): boolean {\n return baggageHeader.split(',').some(baggageEntry => baggageEntry.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX));\n}\n\nfunction isHeaders(headers: unknown): headers is Headers {\n return typeof Headers !== 'undefined' && isInstanceOf(headers, Headers);\n}\n\nfunction getSpanStartOptions(\n url: string,\n method: string,\n spanOrigin: SpanOrigin,\n): Parameters[0] {\n // Data URLs need special handling because parseStringToURLObject treats them as \"relative\"\n // (no \"://\"), causing getSanitizedUrlStringFromUrlObject to return just the pathname\n // without the \"data:\" prefix, making later stripDataUrlContent calls ineffective.\n // So for data URLs, we strip the content first and use that directly.\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, undefined, method, spanOrigin),\n };\n }\n\n const parsedUrl = parseStringToURLObject(url);\n const sanitizedUrl = parsedUrl ? getSanitizedUrlStringFromUrlObject(parsedUrl) : url;\n return {\n name: `${method} ${sanitizedUrl}`,\n attributes: getFetchSpanAttributes(url, parsedUrl, method, spanOrigin),\n };\n}\n\nfunction getFetchSpanAttributes(\n url: string,\n parsedUrl: ReturnType,\n method: string,\n spanOrigin: SpanOrigin,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n url: stripDataUrlContent(url),\n type: 'fetch',\n 'http.method': method,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n };\n if (parsedUrl) {\n if (!isURLObjectRelative(parsedUrl)) {\n attributes['http.url'] = stripDataUrlContent(parsedUrl.href);\n attributes['server.address'] = parsedUrl.host;\n }\n if (parsedUrl.search) {\n attributes['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n attributes['http.fragment'] = parsedUrl.hash;\n }\n }\n return attributes;\n}\n","import { getClient, withIsolationScope } from './currentScopes';\nimport { captureException } from './exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes';\nimport { startSpanManual } from './tracing';\nimport { normalize } from './utils/normalize';\nimport { addNonEnumerableProperty } from './utils/object';\n\ninterface SentryTrpcMiddlewareOptions {\n /** Whether to include procedure inputs in reported events. Defaults to `false`. */\n attachRpcInput?: boolean;\n forceTransaction?: boolean;\n}\n\nexport interface SentryTrpcMiddlewareArguments {\n path?: unknown;\n type?: unknown;\n next: () => T;\n rawInput?: unknown;\n getRawInput?: () => Promise;\n}\n\nconst trpcCaptureContext = { mechanism: { handled: false, type: 'auto.rpc.trpc.middleware' } };\n\nfunction captureIfError(nextResult: unknown): void {\n // TODO: Set span status based on what TRPCError was encountered\n if (\n typeof nextResult === 'object' &&\n nextResult !== null &&\n 'ok' in nextResult &&\n !nextResult.ok &&\n 'error' in nextResult\n ) {\n captureException(nextResult.error, trpcCaptureContext);\n }\n}\n\ntype SentryTrpcMiddleware = T extends Promise ? T : Promise;\n\n/**\n * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return async function (opts: SentryTrpcMiddlewareArguments): SentryTrpcMiddleware {\n const { path, type, next, rawInput, getRawInput } = opts;\n\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n const trpcContext: Record = {\n procedure_path: path,\n procedure_type: type,\n };\n\n addNonEnumerableProperty(\n trpcContext,\n '__sentry_override_normalization_depth__',\n 1 + // 1 for context.input + the normal normalization depth\n (clientOptions?.normalizeDepth ?? 5), // 5 is a sane depth\n );\n\n if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) {\n if (rawInput !== undefined) {\n trpcContext.input = normalize(rawInput);\n }\n\n if (getRawInput !== undefined && typeof getRawInput === 'function') {\n try {\n const rawRes = await getRawInput();\n\n trpcContext.input = normalize(rawRes);\n } catch {\n // noop\n }\n }\n }\n\n return withIsolationScope(scope => {\n scope.setContext('trpc', trpcContext);\n return startSpanManual(\n {\n name: `trpc/${path}`,\n op: 'rpc.server',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc',\n },\n forceTransaction: !!options.forceTransaction,\n },\n async span => {\n try {\n const nextResult = await next();\n captureIfError(nextResult);\n span.end();\n return nextResult;\n } catch (e) {\n captureException(e, trpcCaptureContext);\n span.end();\n throw e;\n }\n },\n ) as SentryTrpcMiddleware;\n });\n };\n}\n","/**\n * Safe error capture utilities for MCP server instrumentation\n *\n * Ensures error reporting never interferes with MCP server operation.\n * All capture operations are wrapped in try-catch to prevent side effects.\n */\n\nimport { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { getActiveSpan } from '../../utils/spanUtils';\nimport type { McpErrorType } from './types';\n\n/**\n * Captures an error without affecting MCP server operation.\n *\n * The active span already contains all MCP context (method, tool, arguments, etc.)\n * @param error - Error to capture\n * @param errorType - Classification of error type for filtering\n * @param extraData - Additional context data to include\n */\nexport function captureError(error: Error, errorType?: McpErrorType, extraData?: Record): void {\n try {\n const client = getClient();\n if (!client) {\n return;\n }\n\n const activeSpan = getActiveSpan();\n if (activeSpan?.isRecording()) {\n activeSpan.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'internal_error',\n });\n }\n\n captureException(error, {\n mechanism: {\n type: 'auto.ai.mcp_server',\n handled: false,\n data: {\n error_type: errorType || 'handler_execution',\n ...extraData,\n },\n },\n });\n } catch {\n // noop\n }\n}\n","/**\n * Handler method wrapping for MCP server instrumentation\n *\n * Provides automatic error capture and span correlation for tool, resource,\n * and prompt handlers.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport { fill } from '../../utils/object';\nimport { captureError } from './errorCapture';\nimport type { MCPHandler, MCPServerInstance } from './types';\n\n/**\n * Generic function to wrap MCP server method handlers\n * @internal\n * @param serverInstance - MCP server instance\n * @param methodName - Method name to wrap (tool, resource, prompt)\n */\nfunction wrapMethodHandler(serverInstance: MCPServerInstance, methodName: keyof MCPServerInstance): void {\n fill(serverInstance, methodName, originalMethod => {\n return function (this: MCPServerInstance, name: string, ...args: unknown[]) {\n const handler = args[args.length - 1];\n\n if (typeof handler !== 'function') {\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args);\n }\n\n const wrappedHandler = createWrappedHandler(handler as MCPHandler, methodName, name);\n return (originalMethod as (...args: unknown[]) => unknown).call(this, name, ...args.slice(0, -1), wrappedHandler);\n };\n });\n}\n\n/**\n * Creates a wrapped handler with span correlation and error capture\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @returns Wrapped handler function\n */\nfunction createWrappedHandler(originalHandler: MCPHandler, methodName: keyof MCPServerInstance, handlerName: string) {\n return function (this: unknown, ...handlerArgs: unknown[]): unknown {\n try {\n return createErrorCapturingHandler.call(this, originalHandler, methodName, handlerName, handlerArgs);\n } catch (error) {\n DEBUG_BUILD && debug.warn('MCP handler wrapping failed:', error);\n return originalHandler.apply(this, handlerArgs);\n }\n };\n}\n\n/**\n * Creates an error-capturing wrapper for handler execution\n * @internal\n * @param originalHandler - Original handler function\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n * @param handlerArgs - Handler arguments\n * @param extraHandlerData - Additional handler context\n * @returns Handler execution result\n */\nfunction createErrorCapturingHandler(\n this: MCPServerInstance,\n originalHandler: MCPHandler,\n methodName: keyof MCPServerInstance,\n handlerName: string,\n handlerArgs: unknown[],\n): unknown {\n try {\n const result = originalHandler.apply(this, handlerArgs);\n\n if (result && typeof result === 'object' && typeof (result as { then?: unknown }).then === 'function') {\n return Promise.resolve(result).catch(error => {\n captureHandlerError(error, methodName, handlerName);\n throw error;\n });\n }\n\n return result;\n } catch (error) {\n captureHandlerError(error as Error, methodName, handlerName);\n throw error;\n }\n}\n\n/**\n * Captures handler execution errors based on handler type\n * @internal\n * @param error - Error to capture\n * @param methodName - MCP method name\n * @param handlerName - Handler identifier\n */\nfunction captureHandlerError(error: Error, methodName: keyof MCPServerInstance, handlerName: string): void {\n try {\n const extraData: Record = {};\n\n if (methodName === 'tool') {\n extraData.tool_name = handlerName;\n\n if (\n error.name === 'ProtocolValidationError' ||\n error.message.includes('validation') ||\n error.message.includes('protocol')\n ) {\n captureError(error, 'validation', extraData);\n } else if (\n error.name === 'ServerTimeoutError' ||\n error.message.includes('timed out') ||\n error.message.includes('timeout')\n ) {\n captureError(error, 'timeout', extraData);\n } else {\n captureError(error, 'tool_execution', extraData);\n }\n } else if (methodName === 'resource') {\n extraData.resource_uri = handlerName;\n captureError(error, 'resource_execution', extraData);\n } else if (methodName === 'prompt') {\n extraData.prompt_name = handlerName;\n captureError(error, 'prompt_execution', extraData);\n }\n } catch (_captureErr) {\n // noop\n }\n}\n\n/**\n * Wraps tool handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapToolHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'tool');\n}\n\n/**\n * Wraps resource handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapResourceHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'resource');\n}\n\n/**\n * Wraps prompt handlers to associate them with request spans\n * @param serverInstance - MCP server instance\n */\nexport function wrapPromptHandlers(serverInstance: MCPServerInstance): void {\n wrapMethodHandler(serverInstance, 'prompt');\n}\n\n/**\n * Wraps all MCP handler types (tool, resource, prompt) for span correlation\n * @param serverInstance - MCP server instance\n */\nexport function wrapAllMCPHandlers(serverInstance: MCPServerInstance): void {\n wrapToolHandlers(serverInstance);\n wrapResourceHandlers(serverInstance);\n wrapPromptHandlers(serverInstance);\n}\n","/**\n * Essential MCP attribute constants for Sentry instrumentation\n *\n * Based on OpenTelemetry MCP semantic conventions\n * @see https://github.com/open-telemetry/semantic-conventions/blob/3097fb0af5b9492b0e3f55dc5f6c21a3dc2be8df/docs/gen-ai/mcp.md\n */\n\n// =============================================================================\n// CORE MCP ATTRIBUTES\n// =============================================================================\n\n/** The name of the request or notification method */\nexport const MCP_METHOD_NAME_ATTRIBUTE = 'mcp.method.name';\n\n/** JSON-RPC request identifier for the request. Unique within the MCP session. */\nexport const MCP_REQUEST_ID_ATTRIBUTE = 'mcp.request.id';\n\n/** Identifies the MCP session */\nexport const MCP_SESSION_ID_ATTRIBUTE = 'mcp.session.id';\n\n/** Transport method used for MCP communication */\nexport const MCP_TRANSPORT_ATTRIBUTE = 'mcp.transport';\n\n// =============================================================================\n// CLIENT ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP client application */\nexport const MCP_CLIENT_NAME_ATTRIBUTE = 'mcp.client.name';\n\n/** Display title of the MCP client application */\nexport const MCP_CLIENT_TITLE_ATTRIBUTE = 'mcp.client.title';\n\n/** Version of the MCP client application */\nexport const MCP_CLIENT_VERSION_ATTRIBUTE = 'mcp.client.version';\n\n// =============================================================================\n// SERVER ATTRIBUTES\n// =============================================================================\n\n/** Name of the MCP server application */\nexport const MCP_SERVER_NAME_ATTRIBUTE = 'mcp.server.name';\n\n/** Display title of the MCP server application */\nexport const MCP_SERVER_TITLE_ATTRIBUTE = 'mcp.server.title';\n\n/** Version of the MCP server application */\nexport const MCP_SERVER_VERSION_ATTRIBUTE = 'mcp.server.version';\n\n/** MCP protocol version used in the session */\nexport const MCP_PROTOCOL_VERSION_ATTRIBUTE = 'mcp.protocol.version';\n\n// =============================================================================\n// METHOD-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/** Name of the tool being called */\nexport const MCP_TOOL_NAME_ATTRIBUTE = 'mcp.tool.name';\n\n/** The resource URI being accessed */\nexport const MCP_RESOURCE_URI_ATTRIBUTE = 'mcp.resource.uri';\n\n/** Name of the prompt template */\nexport const MCP_PROMPT_NAME_ATTRIBUTE = 'mcp.prompt.name';\n\n// =============================================================================\n// TOOL RESULT ATTRIBUTES\n// =============================================================================\n\n/** Whether a tool execution resulted in an error */\nexport const MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE = 'mcp.tool.result.is_error';\n\n/** Number of content items in the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE = 'mcp.tool.result.content_count';\n\n/** Serialized content of the tool result */\nexport const MCP_TOOL_RESULT_CONTENT_ATTRIBUTE = 'mcp.tool.result.content';\n\n/** Prefix for tool result attributes that contain sensitive content */\nexport const MCP_TOOL_RESULT_PREFIX = 'mcp.tool.result';\n\n// =============================================================================\n// PROMPT RESULT ATTRIBUTES\n// =============================================================================\n\n/** Description of the prompt result */\nexport const MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE = 'mcp.prompt.result.description';\n\n/** Number of messages in the prompt result */\nexport const MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE = 'mcp.prompt.result.message_count';\n\n/** Role of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_ROLE_ATTRIBUTE = 'mcp.prompt.result.message_role';\n\n/** Content of the message in the prompt result (for single message results) */\nexport const MCP_PROMPT_RESULT_MESSAGE_CONTENT_ATTRIBUTE = 'mcp.prompt.result.message_content';\n\n/** Prefix for prompt result attributes that contain sensitive content */\nexport const MCP_PROMPT_RESULT_PREFIX = 'mcp.prompt.result';\n\n// =============================================================================\n// REQUEST ARGUMENT ATTRIBUTES\n// =============================================================================\n\n/** Prefix for MCP request argument prefix for each argument */\nexport const MCP_REQUEST_ARGUMENT = 'mcp.request.argument';\n\n// =============================================================================\n// LOGGING ATTRIBUTES\n// =============================================================================\n\n/** Log level for MCP logging operations */\nexport const MCP_LOGGING_LEVEL_ATTRIBUTE = 'mcp.logging.level';\n\n/** Logger name for MCP logging operations */\nexport const MCP_LOGGING_LOGGER_ATTRIBUTE = 'mcp.logging.logger';\n\n/** Data type of the logged message */\nexport const MCP_LOGGING_DATA_TYPE_ATTRIBUTE = 'mcp.logging.data_type';\n\n/** Log message content */\nexport const MCP_LOGGING_MESSAGE_ATTRIBUTE = 'mcp.logging.message';\n\n// =============================================================================\n// NETWORK ATTRIBUTES (OpenTelemetry Standard)\n// =============================================================================\n\n/** OSI transport layer protocol */\nexport const NETWORK_TRANSPORT_ATTRIBUTE = 'network.transport';\n\n/** The version of JSON RPC protocol used */\nexport const NETWORK_PROTOCOL_VERSION_ATTRIBUTE = 'network.protocol.version';\n\n/** Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name */\nexport const CLIENT_ADDRESS_ATTRIBUTE = 'client.address';\n\n/** Client port number */\nexport const CLIENT_PORT_ATTRIBUTE = 'client.port';\n\n// =============================================================================\n// SENTRY-SPECIFIC MCP ATTRIBUTE VALUES\n// =============================================================================\n\n/** Sentry operation value for MCP server spans */\nexport const MCP_SERVER_OP_VALUE = 'mcp.server';\n\n/**\n * Sentry operation value for client-to-server notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE = 'mcp.notification.client_to_server';\n\n/**\n * Sentry operation value for server-to-client notifications\n * Following OpenTelemetry MCP semantic conventions\n */\nexport const MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE = 'mcp.notification.server_to_client';\n\n/** Sentry origin value for MCP function spans */\nexport const MCP_FUNCTION_ORIGIN_VALUE = 'auto.function.mcp_server';\n\n/** Sentry origin value for MCP notification spans */\nexport const MCP_NOTIFICATION_ORIGIN_VALUE = 'auto.mcp.notification';\n\n/** Sentry source value for MCP route spans */\nexport const MCP_ROUTE_SOURCE_VALUE = 'route';\n","/**\n * Message validation functions for MCP server instrumentation\n *\n * Provides JSON-RPC 2.0 message type validation and MCP server instance validation.\n */\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { debug } from '../../utils/debug-logger';\nimport type { JsonRpcNotification, JsonRpcRequest, JsonRpcResponse } from './types';\n\n/**\n * Validates if a message is a JSON-RPC request\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC request\n */\nexport function isJsonRpcRequest(message: unknown): message is JsonRpcRequest {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcRequest).jsonrpc === '2.0' &&\n 'method' in message &&\n 'id' in message\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC notification\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC notification\n */\nexport function isJsonRpcNotification(message: unknown): message is JsonRpcNotification {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as JsonRpcNotification).jsonrpc === '2.0' &&\n 'method' in message &&\n !('id' in message)\n );\n}\n\n/**\n * Validates if a message is a JSON-RPC response\n * @param message - Message to validate\n * @returns True if message is a JSON-RPC response\n */\nexport function isJsonRpcResponse(message: unknown): message is JsonRpcResponse {\n return (\n typeof message === 'object' &&\n message !== null &&\n 'jsonrpc' in message &&\n (message as { jsonrpc: string }).jsonrpc === '2.0' &&\n 'id' in message &&\n ('result' in message || 'error' in message)\n );\n}\n\n/**\n * Validates MCP server instance with type checking\n * @param instance - Object to validate as MCP server instance\n * @returns True if instance has required MCP server methods\n */\nexport function validateMcpServerInstance(instance: unknown): boolean {\n if (\n typeof instance === 'object' &&\n instance !== null &&\n 'resource' in instance &&\n 'tool' in instance &&\n 'prompt' in instance &&\n 'connect' in instance\n ) {\n return true;\n }\n DEBUG_BUILD && debug.warn('Did not patch MCP server. Interface is incompatible.');\n return false;\n}\n\n/**\n * Check if the item is a valid content item\n * @param item - The item to check\n * @returns True if the item is a valid content item, false otherwise\n */\nexport function isValidContentItem(item: unknown): item is Record {\n return item != null && typeof item === 'object';\n}\n","/**\n * Result extraction functions for MCP server instrumentation\n *\n * Handles extraction of attributes from tool and prompt execution results.\n */\n\nimport {\n MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE,\n MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE,\n MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE,\n} from './attributes';\nimport { isValidContentItem } from './validation';\n\n/**\n * Build attributes for tool result content items\n * @param content - Array of content items from tool result\n * @param includeContent - Whether to include actual content (text, URIs) or just metadata\n * @returns Attributes extracted from each content item\n */\nfunction buildAllContentItemAttributes(\n content: unknown[],\n includeContent: boolean,\n): Record {\n const attributes: Record = {\n [MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE]: content.length,\n };\n\n for (const [i, item] of content.entries()) {\n if (!isValidContentItem(item)) {\n continue;\n }\n\n const prefix = content.length === 1 ? 'mcp.tool.result' : `mcp.tool.result.${i}`;\n\n if (typeof item.type === 'string') {\n attributes[`${prefix}.content_type`] = item.type;\n }\n\n if (includeContent) {\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n attributes[`${prefix}.${key}`] = value;\n }\n };\n\n safeSet('mime_type', item.mimeType);\n safeSet('uri', item.uri);\n safeSet('name', item.name);\n\n if (typeof item.text === 'string') {\n attributes[`${prefix}.content`] = item.text;\n }\n\n if (typeof item.data === 'string') {\n attributes[`${prefix}.data_size`] = item.data.length;\n }\n\n const resource = item.resource;\n if (isValidContentItem(resource)) {\n safeSet('resource_uri', resource.uri);\n safeSet('resource_mime_type', resource.mimeType);\n }\n }\n }\n\n return attributes;\n}\n\n/**\n * Extract tool result attributes for span instrumentation\n * @param result - Tool execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts, error status)\n * @returns Attributes extracted from tool result content\n */\nexport function extractToolResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n if (!isValidContentItem(result)) {\n return {};\n }\n\n const attributes = Array.isArray(result.content) ? buildAllContentItemAttributes(result.content, recordOutputs) : {};\n\n if (typeof result.isError === 'boolean') {\n attributes[MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE] = result.isError;\n }\n\n return attributes;\n}\n\n/**\n * Extract prompt result attributes for span instrumentation\n * @param result - Prompt execution result\n * @param recordOutputs - Whether to include actual content or just metadata (counts)\n * @returns Attributes extracted from prompt result\n */\nexport function extractPromptResultAttributes(\n result: unknown,\n recordOutputs: boolean,\n): Record {\n const attributes: Record = {};\n if (!isValidContentItem(result)) {\n return attributes;\n }\n\n if (recordOutputs && typeof result.description === 'string') {\n attributes[MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE] = result.description;\n }\n\n if (Array.isArray(result.messages)) {\n attributes[MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE] = result.messages.length;\n\n if (recordOutputs) {\n const messages = result.messages;\n for (const [i, message] of messages.entries()) {\n if (!isValidContentItem(message)) {\n continue;\n }\n\n const prefix = messages.length === 1 ? 'mcp.prompt.result' : `mcp.prompt.result.${i}`;\n\n const safeSet = (key: string, value: unknown): void => {\n if (typeof value === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_${key}` : `${prefix}.${key}`;\n attributes[attrName] = value;\n }\n };\n\n safeSet('role', message.role);\n\n if (isValidContentItem(message.content)) {\n const content = message.content;\n if (typeof content.text === 'string') {\n const attrName = messages.length === 1 ? `${prefix}.message_content` : `${prefix}.content`;\n attributes[attrName] = content.text;\n }\n }\n }\n }\n }\n\n return attributes;\n}\n","/**\n * Session data management for MCP server instrumentation\n *\n * Uses sessionId as the primary key for stateful transports. This handles the wrapper\n * transport pattern (e.g., NodeStreamableHTTPServerTransport wrapping WebStandardStreamableHTTPServerTransport)\n * where different methods may receive different `this` values but share the same sessionId.\n *\n * Falls back to WeakMap by transport instance for stateless transports (no sessionId).\n */\n\nimport type { MCPTransport, PartyInfo, SessionData } from './types';\n\n/**\n * Session-scoped data storage for stateful transports (with sessionId)\n * @internal Using sessionId as key handles wrapper transport patterns\n */\nconst sessionToSessionData = new Map();\n\n/**\n * Transport-scoped data storage fallback for stateless transports (no sessionId)\n * @internal WeakMap allows automatic cleanup when transport is garbage collected\n */\nconst statelessSessionData = new WeakMap();\n\n/**\n * Gets session data for a transport, checking sessionId first then fallback\n * @internal\n */\nfunction getSessionData(transport: MCPTransport): SessionData | undefined {\n const sessionId = transport.sessionId;\n if (sessionId) {\n return sessionToSessionData.get(sessionId);\n }\n return statelessSessionData.get(transport);\n}\n\n/**\n * Sets session data for a transport, using sessionId when available\n * @internal\n */\nfunction setSessionData(transport: MCPTransport, data: SessionData): void {\n const sessionId = transport.sessionId;\n if (sessionId) {\n sessionToSessionData.set(sessionId, data);\n } else {\n statelessSessionData.set(transport, data);\n }\n}\n\n/**\n * Stores session data for a transport\n * @param transport - MCP transport instance\n * @param sessionData - Session data to store\n */\nexport function storeSessionDataForTransport(transport: MCPTransport, sessionData: SessionData): void {\n // For stateful transports, always store (sessionId is the key)\n // For stateless transports, also store (transport instance is the key)\n setSessionData(transport, sessionData);\n}\n\n/**\n * Updates session data for a transport (merges with existing data)\n * @param transport - MCP transport instance\n * @param partialSessionData - Partial session data to merge with existing data\n */\nexport function updateSessionDataForTransport(transport: MCPTransport, partialSessionData: Partial): void {\n const existingData = getSessionData(transport) || {};\n setSessionData(transport, { ...existingData, ...partialSessionData });\n}\n\n/**\n * Retrieves client information for a transport\n * @param transport - MCP transport instance\n * @returns Client information if available\n */\nexport function getClientInfoForTransport(transport: MCPTransport): PartyInfo | undefined {\n return getSessionData(transport)?.clientInfo;\n}\n\n/**\n * Retrieves protocol version for a transport\n * @param transport - MCP transport instance\n * @returns Protocol version if available\n */\nexport function getProtocolVersionForTransport(transport: MCPTransport): string | undefined {\n return getSessionData(transport)?.protocolVersion;\n}\n\n/**\n * Retrieves full session data for a transport\n * @param transport - MCP transport instance\n * @returns Complete session data if available\n */\nexport function getSessionDataForTransport(transport: MCPTransport): SessionData | undefined {\n return getSessionData(transport);\n}\n\n/**\n * Cleans up session data for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupSessionDataForTransport(transport: MCPTransport): void {\n const sessionId = transport.sessionId;\n if (sessionId) {\n sessionToSessionData.delete(sessionId);\n }\n // Note: WeakMap entries are automatically cleaned up when transport is GC'd\n // No explicit delete needed for statelessSessionData\n}\n","/**\n * Session and party info extraction functions for MCP server instrumentation\n *\n * Handles extraction of client/server info and session data from MCP messages.\n */\n\nimport {\n CLIENT_ADDRESS_ATTRIBUTE,\n CLIENT_PORT_ATTRIBUTE,\n MCP_PROTOCOL_VERSION_ATTRIBUTE,\n MCP_SERVER_NAME_ATTRIBUTE,\n MCP_SERVER_TITLE_ATTRIBUTE,\n MCP_SERVER_VERSION_ATTRIBUTE,\n MCP_SESSION_ID_ATTRIBUTE,\n MCP_TRANSPORT_ATTRIBUTE,\n NETWORK_PROTOCOL_VERSION_ATTRIBUTE,\n NETWORK_TRANSPORT_ATTRIBUTE,\n} from './attributes';\nimport {\n getClientInfoForTransport,\n getProtocolVersionForTransport,\n getSessionDataForTransport,\n} from './sessionManagement';\nimport type { ExtraHandlerData, JsonRpcRequest, MCPTransport, PartyInfo, SessionData } from './types';\nimport { isValidContentItem } from './validation';\n\n/**\n * Extracts and validates PartyInfo from an unknown object\n * @param obj - Unknown object that might contain party info\n * @returns Validated PartyInfo object with only string properties\n */\nfunction extractPartyInfo(obj: unknown): PartyInfo {\n const partyInfo: PartyInfo = {};\n\n if (isValidContentItem(obj)) {\n if (typeof obj.name === 'string') {\n partyInfo.name = obj.name;\n }\n if (typeof obj.title === 'string') {\n partyInfo.title = obj.title;\n }\n if (typeof obj.version === 'string') {\n partyInfo.version = obj.version;\n }\n }\n\n return partyInfo;\n}\n\n/**\n * Extracts session data from \"initialize\" requests\n * @param request - JSON-RPC \"initialize\" request containing client info and protocol version\n * @returns Session data extracted from request parameters including protocol version and client info\n */\nexport function extractSessionDataFromInitializeRequest(request: JsonRpcRequest): SessionData {\n const sessionData: SessionData = {};\n if (isValidContentItem(request.params)) {\n if (typeof request.params.protocolVersion === 'string') {\n sessionData.protocolVersion = request.params.protocolVersion;\n }\n if (request.params.clientInfo) {\n sessionData.clientInfo = extractPartyInfo(request.params.clientInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Extracts session data from \"initialize\" response\n * @param result - \"initialize\" response result containing server info and protocol version\n * @returns Partial session data extracted from response including protocol version and server info\n */\nexport function extractSessionDataFromInitializeResponse(result: unknown): Partial {\n const sessionData: Partial = {};\n if (isValidContentItem(result)) {\n if (typeof result.protocolVersion === 'string') {\n sessionData.protocolVersion = result.protocolVersion;\n }\n if (result.serverInfo) {\n sessionData.serverInfo = extractPartyInfo(result.serverInfo);\n }\n }\n return sessionData;\n}\n\n/**\n * Build client attributes from stored client info\n * @param transport - MCP transport instance\n * @returns Client attributes for span instrumentation\n */\nexport function getClientAttributes(transport: MCPTransport): Record {\n const clientInfo = getClientInfoForTransport(transport);\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build client attributes from PartyInfo directly\n * @param clientInfo - Client party info\n * @returns Client attributes for span instrumentation\n */\nexport function buildClientAttributesFromInfo(clientInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (clientInfo?.name) {\n attributes['mcp.client.name'] = clientInfo.name;\n }\n if (clientInfo?.title) {\n attributes['mcp.client.title'] = clientInfo.title;\n }\n if (clientInfo?.version) {\n attributes['mcp.client.version'] = clientInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from stored server info\n * @param transport - MCP transport instance\n * @returns Server attributes for span instrumentation\n */\nexport function getServerAttributes(transport: MCPTransport): Record {\n const serverInfo = getSessionDataForTransport(transport)?.serverInfo;\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Build server attributes from PartyInfo directly\n * @param serverInfo - Server party info\n * @returns Server attributes for span instrumentation\n */\nexport function buildServerAttributesFromInfo(serverInfo?: PartyInfo): Record {\n const attributes: Record = {};\n\n if (serverInfo?.name) {\n attributes[MCP_SERVER_NAME_ATTRIBUTE] = serverInfo.name;\n }\n if (serverInfo?.title) {\n attributes[MCP_SERVER_TITLE_ATTRIBUTE] = serverInfo.title;\n }\n if (serverInfo?.version) {\n attributes[MCP_SERVER_VERSION_ATTRIBUTE] = serverInfo.version;\n }\n\n return attributes;\n}\n\n/**\n * Extracts client connection info from extra handler data\n * @param extra - Extra handler data containing connection info\n * @returns Client address and port information\n */\nexport function extractClientInfo(extra: ExtraHandlerData): {\n address?: string;\n port?: number;\n} {\n return {\n address:\n extra?.requestInfo?.remoteAddress ||\n extra?.clientAddress ||\n extra?.request?.ip ||\n extra?.request?.connection?.remoteAddress,\n port: extra?.requestInfo?.remotePort || extra?.clientPort || extra?.request?.connection?.remotePort,\n };\n}\n\n/**\n * Extracts transport types based on transport constructor name\n * @param transport - MCP transport instance\n * @returns Transport type mapping for span attributes\n */\nexport function getTransportTypes(transport: MCPTransport): { mcpTransport: string; networkTransport: string } {\n if (!transport?.constructor) {\n return { mcpTransport: 'unknown', networkTransport: 'unknown' };\n }\n const transportName = typeof transport.constructor?.name === 'string' ? transport.constructor.name : 'unknown';\n let networkTransport = 'unknown';\n\n const lowerTransportName = transportName.toLowerCase();\n if (lowerTransportName.includes('stdio')) {\n networkTransport = 'pipe';\n } else if (lowerTransportName.includes('http') || lowerTransportName.includes('sse')) {\n networkTransport = 'tcp';\n }\n\n return {\n mcpTransport: transportName,\n networkTransport,\n };\n}\n\n/**\n * Build transport and network attributes\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @returns Transport attributes for span instrumentation\n * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow\n */\nexport function buildTransportAttributes(\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n): Record {\n const sessionId = transport && 'sessionId' in transport ? transport.sessionId : undefined;\n const clientInfo = extra ? extractClientInfo(extra) : {};\n const { mcpTransport, networkTransport } = getTransportTypes(transport);\n const clientAttributes = getClientAttributes(transport);\n const serverAttributes = getServerAttributes(transport);\n const protocolVersion = getProtocolVersionForTransport(transport);\n\n const attributes = {\n ...(sessionId && { [MCP_SESSION_ID_ATTRIBUTE]: sessionId }),\n ...(clientInfo.address && { [CLIENT_ADDRESS_ATTRIBUTE]: clientInfo.address }),\n ...(clientInfo.port && { [CLIENT_PORT_ATTRIBUTE]: clientInfo.port }),\n [MCP_TRANSPORT_ATTRIBUTE]: mcpTransport,\n [NETWORK_TRANSPORT_ATTRIBUTE]: networkTransport,\n [NETWORK_PROTOCOL_VERSION_ATTRIBUTE]: '2.0',\n ...(protocolVersion && { [MCP_PROTOCOL_VERSION_ATTRIBUTE]: protocolVersion }),\n ...clientAttributes,\n ...serverAttributes,\n };\n\n return attributes;\n}\n","/**\n * Request-span correlation system for MCP server instrumentation\n *\n * Handles mapping requestId to span data for correlation with handler execution.\n *\n * Uses sessionId as the primary key for stateful transports. This handles the wrapper\n * transport pattern (e.g., NodeStreamableHTTPServerTransport wrapping WebStandardStreamableHTTPServerTransport)\n * where onmessage and send may receive different `this` values but share the same sessionId.\n *\n * Falls back to WeakMap by transport instance for stateless transports (no sessionId).\n */\n\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { extractPromptResultAttributes, extractToolResultAttributes } from './resultExtraction';\nimport { buildServerAttributesFromInfo, extractSessionDataFromInitializeResponse } from './sessionExtraction';\nimport type { MCPTransport, RequestId, RequestSpanMapValue, ResolvedMcpOptions } from './types';\n\n/**\n * Session-scoped correlation for stateful transports (with sessionId)\n * @internal Using sessionId as key handles wrapper transport patterns where\n * different transport objects share the same logical session\n */\nconst sessionToSpanMap = new Map>();\n\n/**\n * Transport-scoped correlation fallback for stateless transports (no sessionId)\n * @internal WeakMap allows automatic cleanup when transport is garbage collected\n */\nconst statelessSpanMap = new WeakMap>();\n\n/**\n * Gets or creates the span map for a transport, using sessionId when available\n * @internal\n * @param transport - MCP transport instance\n * @returns Span map for the transport/session\n */\nfunction getOrCreateSpanMap(transport: MCPTransport): Map {\n const sessionId = transport.sessionId;\n\n if (sessionId) {\n // Stateful transport - use sessionId as key (handles wrapper pattern)\n let spanMap = sessionToSpanMap.get(sessionId);\n if (!spanMap) {\n spanMap = new Map();\n sessionToSpanMap.set(sessionId, spanMap);\n }\n return spanMap;\n }\n\n // Stateless fallback - use transport instance as key\n let spanMap = statelessSpanMap.get(transport);\n if (!spanMap) {\n spanMap = new Map();\n statelessSpanMap.set(transport, spanMap);\n }\n return spanMap;\n}\n\n/**\n * Stores span context for later correlation with handler execution\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param span - Active span to correlate\n * @param method - MCP method name\n */\nexport function storeSpanForRequest(transport: MCPTransport, requestId: RequestId, span: Span, method: string): void {\n const spanMap = getOrCreateSpanMap(transport);\n spanMap.set(requestId, {\n span,\n method,\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n startTime: Date.now(),\n });\n}\n\n/**\n * Completes span with results and cleans up correlation\n * @param transport - MCP transport instance\n * @param requestId - Request identifier\n * @param result - Execution result for attribute extraction\n * @param options - Resolved MCP options\n */\nexport function completeSpanWithResults(\n transport: MCPTransport,\n requestId: RequestId,\n result: unknown,\n options: ResolvedMcpOptions,\n): void {\n const spanMap = getOrCreateSpanMap(transport);\n const spanData = spanMap.get(requestId);\n if (spanData) {\n const { span, method } = spanData;\n\n if (method === 'initialize') {\n const sessionData = extractSessionDataFromInitializeResponse(result);\n const serverAttributes = buildServerAttributesFromInfo(sessionData.serverInfo);\n\n const initAttributes: Record = {\n ...serverAttributes,\n };\n if (sessionData.protocolVersion) {\n initAttributes[MCP_PROTOCOL_VERSION_ATTRIBUTE] = sessionData.protocolVersion;\n }\n\n span.setAttributes(initAttributes);\n } else if (method === 'tools/call') {\n const toolAttributes = extractToolResultAttributes(result, options.recordOutputs);\n span.setAttributes(toolAttributes);\n } else if (method === 'prompts/get') {\n const promptAttributes = extractPromptResultAttributes(result, options.recordOutputs);\n span.setAttributes(promptAttributes);\n }\n\n span.end();\n spanMap.delete(requestId);\n }\n}\n\n/**\n * Cleans up pending spans for a specific transport (when that transport closes)\n * @param transport - MCP transport instance\n */\nexport function cleanupPendingSpansForTransport(transport: MCPTransport): void {\n const sessionId = transport.sessionId;\n\n // Try sessionId-based cleanup first (for stateful transports)\n if (sessionId) {\n const spanMap = sessionToSpanMap.get(sessionId);\n if (spanMap) {\n for (const [, spanData] of spanMap) {\n spanData.span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'cancelled',\n });\n spanData.span.end();\n }\n sessionToSpanMap.delete(sessionId);\n }\n return;\n }\n\n // Fallback to transport-based cleanup (for stateless transports)\n const spanMap = statelessSpanMap.get(transport);\n if (spanMap) {\n for (const [, spanData] of spanMap) {\n spanData.span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: 'cancelled',\n });\n spanData.span.end();\n }\n spanMap.clear();\n // Note: WeakMap entries are automatically cleaned up when transport is GC'd\n }\n}\n","/**\n * Method configuration and request processing for MCP server instrumentation\n */\n\nimport {\n MCP_PROMPT_NAME_ATTRIBUTE,\n MCP_REQUEST_ARGUMENT,\n MCP_RESOURCE_URI_ATTRIBUTE,\n MCP_TOOL_NAME_ATTRIBUTE,\n} from './attributes';\nimport type { MethodConfig } from './types';\n\n/**\n * Configuration for MCP methods to extract targets and arguments\n * @internal Maps method names to their extraction configuration\n */\nconst METHOD_CONFIGS: Record = {\n 'tools/call': {\n targetField: 'name',\n targetAttribute: MCP_TOOL_NAME_ATTRIBUTE,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n 'resources/read': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n captureUri: true,\n },\n 'resources/subscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'resources/unsubscribe': {\n targetField: 'uri',\n targetAttribute: MCP_RESOURCE_URI_ATTRIBUTE,\n },\n 'prompts/get': {\n targetField: 'name',\n targetAttribute: MCP_PROMPT_NAME_ATTRIBUTE,\n captureName: true,\n captureArguments: true,\n argumentsField: 'arguments',\n },\n};\n\n/**\n * Extracts target info from method and params based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Target name and attributes for span instrumentation\n */\nexport function extractTargetInfo(\n method: string,\n params: Record,\n): {\n target?: string;\n attributes: Record;\n} {\n const config = METHOD_CONFIGS[method];\n if (!config) {\n return { attributes: {} };\n }\n\n const target =\n config.targetField && typeof params?.[config.targetField] === 'string'\n ? (params[config.targetField] as string)\n : undefined;\n\n return {\n target,\n attributes: target && config.targetAttribute ? { [config.targetAttribute]: target } : {},\n };\n}\n\n/**\n * Extracts request arguments based on method type\n * @param method - MCP method name\n * @param params - Method parameters\n * @returns Arguments as span attributes with mcp.request.argument prefix\n */\nexport function getRequestArguments(method: string, params: Record): Record {\n const args: Record = {};\n const config = METHOD_CONFIGS[method];\n\n if (!config) {\n return args;\n }\n\n if (config.captureArguments && config.argumentsField && params?.[config.argumentsField]) {\n const argumentsObj = params[config.argumentsField];\n if (typeof argumentsObj === 'object' && argumentsObj !== null) {\n for (const [key, value] of Object.entries(argumentsObj as Record)) {\n args[`${MCP_REQUEST_ARGUMENT}.${key.toLowerCase()}`] = JSON.stringify(value);\n }\n }\n }\n\n if (config.captureUri && params?.uri) {\n args[`${MCP_REQUEST_ARGUMENT}.uri`] = JSON.stringify(params.uri);\n }\n\n if (config.captureName && params?.name) {\n args[`${MCP_REQUEST_ARGUMENT}.name`] = JSON.stringify(params.name);\n }\n\n return args;\n}\n","/**\n * Core attribute extraction and building functions for MCP server instrumentation\n */\n\nimport { isURLObjectRelative, parseStringToURLObject } from '../../utils/url';\nimport {\n MCP_LOGGING_DATA_TYPE_ATTRIBUTE,\n MCP_LOGGING_LEVEL_ATTRIBUTE,\n MCP_LOGGING_LOGGER_ATTRIBUTE,\n MCP_LOGGING_MESSAGE_ATTRIBUTE,\n MCP_REQUEST_ID_ATTRIBUTE,\n MCP_RESOURCE_URI_ATTRIBUTE,\n} from './attributes';\nimport { extractTargetInfo, getRequestArguments } from './methodConfig';\nimport type { JsonRpcNotification, JsonRpcRequest, McpSpanType } from './types';\n\n/**\n * Formats logging data for span attributes\n * @internal\n */\nfunction formatLoggingData(data: unknown): string {\n return typeof data === 'string' ? data : JSON.stringify(data);\n}\n\n/**\n * Extracts additional attributes for specific notification types\n * @param method - Notification method name\n * @param params - Notification parameters\n * @param recordInputs - Whether to include actual content or just metadata\n * @returns Method-specific attributes for span instrumentation\n */\nexport function getNotificationAttributes(\n method: string,\n params: Record,\n recordInputs?: boolean,\n): Record {\n const attributes: Record = {};\n\n switch (method) {\n case 'notifications/cancelled':\n if (params?.requestId) {\n attributes['mcp.cancelled.request_id'] = String(params.requestId);\n }\n if (params?.reason) {\n attributes['mcp.cancelled.reason'] = String(params.reason);\n }\n break;\n\n case 'notifications/message':\n if (params?.level) {\n attributes[MCP_LOGGING_LEVEL_ATTRIBUTE] = String(params.level);\n }\n if (params?.logger) {\n attributes[MCP_LOGGING_LOGGER_ATTRIBUTE] = String(params.logger);\n }\n if (params?.data !== undefined) {\n attributes[MCP_LOGGING_DATA_TYPE_ATTRIBUTE] = typeof params.data;\n if (recordInputs) {\n attributes[MCP_LOGGING_MESSAGE_ATTRIBUTE] = formatLoggingData(params.data);\n }\n }\n break;\n\n case 'notifications/progress':\n if (params?.progressToken) {\n attributes['mcp.progress.token'] = String(params.progressToken);\n }\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.current'] = params.progress;\n }\n if (typeof params?.total === 'number') {\n attributes['mcp.progress.total'] = params.total;\n if (typeof params?.progress === 'number') {\n attributes['mcp.progress.percentage'] = (params.progress / params.total) * 100;\n }\n }\n if (params?.message) {\n attributes['mcp.progress.message'] = String(params.message);\n }\n break;\n\n case 'notifications/resources/updated':\n if (params?.uri) {\n attributes[MCP_RESOURCE_URI_ATTRIBUTE] = String(params.uri);\n const urlObject = parseStringToURLObject(String(params.uri));\n if (urlObject && !isURLObjectRelative(urlObject)) {\n attributes['mcp.resource.protocol'] = urlObject.protocol.replace(':', '');\n }\n }\n break;\n\n case 'notifications/initialized':\n attributes['mcp.lifecycle.phase'] = 'initialization_complete';\n attributes['mcp.protocol.ready'] = 1;\n break;\n }\n\n return attributes;\n}\n\n/**\n * Build type-specific attributes based on message type\n * @param type - Span type (request or notification)\n * @param message - JSON-RPC message\n * @param params - Optional parameters for attribute extraction\n * @param recordInputs - Whether to capture input arguments in spans\n * @returns Type-specific attributes for span instrumentation\n */\nexport function buildTypeSpecificAttributes(\n type: McpSpanType,\n message: JsonRpcRequest | JsonRpcNotification,\n params?: Record,\n recordInputs?: boolean,\n): Record {\n if (type === 'request') {\n const request = message as JsonRpcRequest;\n const targetInfo = extractTargetInfo(request.method, params || {});\n\n return {\n ...(request.id !== undefined && { [MCP_REQUEST_ID_ATTRIBUTE]: String(request.id) }),\n ...targetInfo.attributes,\n ...(recordInputs ? getRequestArguments(request.method, params || {}) : {}),\n };\n }\n\n return getNotificationAttributes(message.method, params || {}, recordInputs);\n}\n\n// Re-export buildTransportAttributes for spans.ts\nexport { buildTransportAttributes } from './sessionExtraction';\n","/**\n * PII filtering for MCP server spans\n *\n * Removes network-level sensitive data when sendDefaultPii is false.\n * Input/output data (request arguments, tool/prompt results) is controlled\n * separately via recordInputs/recordOutputs options.\n */\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport { CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE } from './attributes';\n\n/**\n * Network PII attributes that should be removed when sendDefaultPii is false\n * @internal\n */\nconst NETWORK_PII_ATTRIBUTES = new Set([CLIENT_ADDRESS_ATTRIBUTE, CLIENT_PORT_ATTRIBUTE, MCP_RESOURCE_URI_ATTRIBUTE]);\n\n/**\n * Checks if an attribute key should be considered network PII.\n *\n * Returns true for:\n * - client.address (IP address)\n * - client.port (port number)\n * - mcp.resource.uri (potentially sensitive URIs)\n *\n * @param key - Attribute key to evaluate\n * @returns true if the attribute should be filtered out (is network PII), false if it should be preserved\n * @internal\n */\nfunction isNetworkPiiAttribute(key: string): boolean {\n return NETWORK_PII_ATTRIBUTES.has(key);\n}\n\n/**\n * Removes network PII attributes from span data when sendDefaultPii is false\n * @param spanData - Raw span attributes\n * @param sendDefaultPii - Whether to include PII data\n * @returns Filtered span attributes\n */\nexport function filterMcpPiiFromSpanData(\n spanData: Record,\n sendDefaultPii: boolean,\n): Record {\n if (sendDefaultPii) {\n return spanData as Record;\n }\n\n return Object.entries(spanData).reduce(\n (acc, [key, value]) => {\n if (!isNetworkPiiAttribute(key)) {\n acc[key] = value as SpanAttributeValue;\n }\n return acc;\n },\n {} as Record,\n );\n}\n","/**\n * Span creation and management functions for MCP server instrumentation\n *\n * Provides unified span creation following OpenTelemetry MCP semantic conventions and our opinitionated take on MCP.\n * Handles both request and notification spans with attribute extraction.\n */\n\nimport { getClient } from '../../currentScopes';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n} from '../../semanticAttributes';\nimport { startSpan } from '../../tracing';\nimport { buildTransportAttributes, buildTypeSpecificAttributes } from './attributeExtraction';\nimport {\n MCP_FUNCTION_ORIGIN_VALUE,\n MCP_METHOD_NAME_ATTRIBUTE,\n MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE,\n MCP_NOTIFICATION_ORIGIN_VALUE,\n MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE,\n MCP_ROUTE_SOURCE_VALUE,\n MCP_SERVER_OP_VALUE,\n} from './attributes';\nimport { extractTargetInfo } from './methodConfig';\nimport { filterMcpPiiFromSpanData } from './piiFiltering';\nimport type {\n ExtraHandlerData,\n JsonRpcNotification,\n JsonRpcRequest,\n McpSpanConfig,\n MCPTransport,\n ResolvedMcpOptions,\n} from './types';\n\n/**\n * Creates a span name based on the method and target\n * @internal\n * @param method - MCP method name\n * @param target - Optional target identifier\n * @returns Formatted span name\n */\nfunction createSpanName(method: string, target?: string): string {\n return target ? `${method} ${target}` : method;\n}\n\n/**\n * Build Sentry-specific attributes based on span type\n * @internal\n * @param type - Span type configuration\n * @returns Sentry-specific attributes\n */\nfunction buildSentryAttributes(type: McpSpanConfig['type']): Record {\n let op: string;\n let origin: string;\n\n switch (type) {\n case 'request':\n op = MCP_SERVER_OP_VALUE;\n origin = MCP_FUNCTION_ORIGIN_VALUE;\n break;\n case 'notification-incoming':\n op = MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n case 'notification-outgoing':\n op = MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE;\n origin = MCP_NOTIFICATION_ORIGIN_VALUE;\n break;\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: MCP_ROUTE_SOURCE_VALUE,\n };\n}\n\n/**\n * Unified builder for creating MCP spans\n * @internal\n * @param config - Span configuration\n * @returns Created span\n */\nfunction createMcpSpan(config: McpSpanConfig): unknown {\n const { type, message, transport, extra, callback, options } = config;\n const { method } = message;\n const params = message.params;\n\n // Determine span name based on type and OTEL conventions\n let spanName: string;\n if (type === 'request') {\n const targetInfo = extractTargetInfo(method, params || {});\n spanName = createSpanName(method, targetInfo.target);\n } else {\n // For notifications, use method name directly per OpenTelemetry conventions\n spanName = method;\n }\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes(type, message, params, options?.recordInputs),\n ...buildSentryAttributes(type),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return startSpan(\n {\n name: spanName,\n forceTransaction: true,\n attributes,\n },\n callback,\n );\n}\n\n/**\n * Creates a span for incoming MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param extra - Extra handler data\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n extra: ExtraHandlerData,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-incoming',\n message: jsonRpcMessage,\n transport,\n extra,\n callback,\n options,\n });\n}\n\n/**\n * Creates a span for outgoing MCP notifications\n * @param jsonRpcMessage - Notification message\n * @param transport - MCP transport instance\n * @param options - Resolved MCP options\n * @param callback - Span execution callback\n * @returns Span execution result\n */\nexport function createMcpOutgoingNotificationSpan(\n jsonRpcMessage: JsonRpcNotification,\n transport: MCPTransport,\n options: ResolvedMcpOptions,\n callback: () => unknown,\n): unknown {\n return createMcpSpan({\n type: 'notification-outgoing',\n message: jsonRpcMessage,\n transport,\n options,\n callback,\n });\n}\n\n/**\n * Builds span configuration for MCP server requests\n * @param jsonRpcMessage - Request message\n * @param transport - MCP transport instance\n * @param extra - Optional extra handler data\n * @param options - Resolved MCP options\n * @returns Span configuration object\n */\nexport function buildMcpServerSpanConfig(\n jsonRpcMessage: JsonRpcRequest,\n transport: MCPTransport,\n extra?: ExtraHandlerData,\n options?: ResolvedMcpOptions,\n): {\n name: string;\n op: string;\n forceTransaction: boolean;\n attributes: Record;\n} {\n const { method } = jsonRpcMessage;\n const params = jsonRpcMessage.params;\n\n const targetInfo = extractTargetInfo(method, params || {});\n const spanName = createSpanName(method, targetInfo.target);\n\n const rawAttributes: Record = {\n ...buildTransportAttributes(transport, extra),\n [MCP_METHOD_NAME_ATTRIBUTE]: method,\n ...buildTypeSpecificAttributes('request', jsonRpcMessage, params, options?.recordInputs),\n ...buildSentryAttributes('request'),\n };\n\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n const attributes = filterMcpPiiFromSpanData(rawAttributes, sendDefaultPii) as Record;\n\n return {\n name: spanName,\n op: MCP_SERVER_OP_VALUE,\n forceTransaction: true,\n attributes,\n };\n}\n","/**\n * Transport layer instrumentation for MCP server\n *\n * Handles message interception and response correlation.\n * @see https://modelcontextprotocol.io/specification/2025-06-18/basic/transports\n */\n\nimport { getIsolationScope, withIsolationScope } from '../../currentScopes';\nimport { startInactiveSpan, withActiveSpan } from '../../tracing';\nimport { fill } from '../../utils/object';\nimport { MCP_PROTOCOL_VERSION_ATTRIBUTE } from './attributes';\nimport { cleanupPendingSpansForTransport, completeSpanWithResults, storeSpanForRequest } from './correlation';\nimport { captureError } from './errorCapture';\nimport {\n buildClientAttributesFromInfo,\n extractSessionDataFromInitializeRequest,\n extractSessionDataFromInitializeResponse,\n} from './sessionExtraction';\nimport {\n cleanupSessionDataForTransport,\n storeSessionDataForTransport,\n updateSessionDataForTransport,\n} from './sessionManagement';\nimport { buildMcpServerSpanConfig, createMcpNotificationSpan, createMcpOutgoingNotificationSpan } from './spans';\nimport type { ExtraHandlerData, MCPTransport, ResolvedMcpOptions, SessionData } from './types';\nimport { isJsonRpcNotification, isJsonRpcRequest, isJsonRpcResponse, isValidContentItem } from './validation';\n\n/**\n * Wraps transport.onmessage to create spans for incoming messages.\n * For \"initialize\" requests, extracts and stores client info and protocol version\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportOnMessage(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.onmessage) {\n fill(transport, 'onmessage', originalOnMessage => {\n return function (this: MCPTransport, message: unknown, extra?: unknown) {\n if (isJsonRpcRequest(message)) {\n const isInitialize = message.method === 'initialize';\n let initSessionData: SessionData | undefined;\n\n if (isInitialize) {\n try {\n initSessionData = extractSessionDataFromInitializeRequest(message);\n storeSessionDataForTransport(this, initSessionData);\n } catch {\n // noop\n }\n }\n\n const isolationScope = getIsolationScope().clone();\n\n return withIsolationScope(isolationScope, () => {\n const spanConfig = buildMcpServerSpanConfig(message, this, extra as ExtraHandlerData, options);\n const span = startInactiveSpan(spanConfig);\n\n // For initialize requests, add client info directly to span (works even for stateless transports)\n if (isInitialize && initSessionData) {\n span.setAttributes({\n ...buildClientAttributesFromInfo(initSessionData.clientInfo),\n ...(initSessionData.protocolVersion && {\n [MCP_PROTOCOL_VERSION_ATTRIBUTE]: initSessionData.protocolVersion,\n }),\n });\n }\n\n storeSpanForRequest(this, message.id, span, message.method);\n\n return withActiveSpan(span, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n });\n }\n\n if (isJsonRpcNotification(message)) {\n return createMcpNotificationSpan(message, this, extra as ExtraHandlerData, options, () => {\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n });\n }\n\n return (originalOnMessage as (...args: unknown[]) => unknown).call(this, message, extra);\n };\n });\n }\n}\n\n/**\n * Wraps transport.send to handle outgoing messages and response correlation.\n * For \"initialize\" responses, extracts and stores protocol version and server info\n * in the session data for the transport.\n * @param transport - MCP transport instance to wrap\n * @param options - Resolved MCP options\n */\nexport function wrapTransportSend(transport: MCPTransport, options: ResolvedMcpOptions): void {\n if (transport.send) {\n fill(transport, 'send', originalSend => {\n return async function (this: MCPTransport, ...args: unknown[]) {\n const [message] = args;\n\n if (isJsonRpcNotification(message)) {\n return createMcpOutgoingNotificationSpan(message, this, options, () => {\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n });\n }\n\n if (isJsonRpcResponse(message)) {\n if (message.id !== null && message.id !== undefined) {\n if (message.error) {\n captureJsonRpcErrorResponse(message.error);\n }\n\n if (isValidContentItem(message.result)) {\n if (message.result.protocolVersion || message.result.serverInfo) {\n try {\n const serverData = extractSessionDataFromInitializeResponse(message.result);\n updateSessionDataForTransport(this, serverData);\n } catch {\n // noop\n }\n }\n }\n\n completeSpanWithResults(this, message.id, message.result, options);\n }\n }\n\n return (originalSend as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport.onclose to clean up pending spans for this transport only\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportOnClose(transport: MCPTransport): void {\n if (transport.onclose) {\n fill(transport, 'onclose', originalOnClose => {\n return function (this: MCPTransport, ...args: unknown[]) {\n cleanupPendingSpansForTransport(this);\n cleanupSessionDataForTransport(this);\n return (originalOnClose as (...args: unknown[]) => unknown).call(this, ...args);\n };\n });\n }\n}\n\n/**\n * Wraps transport error handlers to capture connection errors\n * @param transport - MCP transport instance to wrap\n */\nexport function wrapTransportError(transport: MCPTransport): void {\n if (transport.onerror) {\n fill(transport, 'onerror', (originalOnError: (error: Error) => void) => {\n return function (this: MCPTransport, error: Error) {\n captureTransportError(error);\n return originalOnError.call(this, error);\n };\n });\n }\n}\n\n/**\n * Captures JSON-RPC error responses for server-side errors.\n * @see https://www.jsonrpc.org/specification#error_object\n * @internal\n * @param errorResponse - JSON-RPC error response\n */\nfunction captureJsonRpcErrorResponse(errorResponse: unknown): void {\n try {\n if (errorResponse && typeof errorResponse === 'object' && 'code' in errorResponse && 'message' in errorResponse) {\n const jsonRpcError = errorResponse as { code: number; message: string; data?: unknown };\n\n const isServerError =\n jsonRpcError.code === -32603 || (jsonRpcError.code >= -32099 && jsonRpcError.code <= -32000);\n\n if (isServerError) {\n const error = new Error(jsonRpcError.message);\n error.name = `JsonRpcError_${jsonRpcError.code}`;\n\n captureError(error, 'protocol');\n }\n }\n } catch {\n // noop\n }\n}\n\n/**\n * Captures transport connection errors\n * @internal\n * @param error - Transport error\n */\nfunction captureTransportError(error: Error): void {\n try {\n captureError(error, 'transport');\n } catch {\n // noop\n }\n}\n","import { getClient } from '../../currentScopes';\nimport { fill } from '../../utils/object';\nimport { wrapAllMCPHandlers } from './handlers';\nimport { wrapTransportError, wrapTransportOnClose, wrapTransportOnMessage, wrapTransportSend } from './transport';\nimport type { MCPServerInstance, McpServerWrapperOptions, MCPTransport, ResolvedMcpOptions } from './types';\nimport { validateMcpServerInstance } from './validation';\n\n/**\n * Tracks wrapped MCP server instances to prevent double-wrapping\n * @internal\n */\nconst wrappedMcpServerInstances = new WeakSet();\n\n/**\n * Wraps a MCP Server instance from the `@modelcontextprotocol/sdk` package with Sentry instrumentation.\n *\n * Compatible with versions `^1.9.0` of the `@modelcontextprotocol/sdk` package.\n * Automatically instruments transport methods and handler functions for comprehensive monitoring.\n *\n * @example\n * ```typescript\n * import * as Sentry from '@sentry/core';\n * import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n * import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\n *\n * // Default: inputs/outputs captured based on sendDefaultPii option\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" })\n * );\n *\n * // Explicitly control input/output capture\n * const server = Sentry.wrapMcpServerWithSentry(\n * new McpServer({ name: \"my-server\", version: \"1.0.0\" }),\n * { recordInputs: true, recordOutputs: false }\n * );\n *\n * const transport = new StreamableHTTPServerTransport();\n * await server.connect(transport);\n * ```\n *\n * @param mcpServerInstance - MCP server instance to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns Instrumented server instance (same reference)\n */\nexport function wrapMcpServerWithSentry(mcpServerInstance: S, options?: McpServerWrapperOptions): S {\n if (wrappedMcpServerInstances.has(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n if (!validateMcpServerInstance(mcpServerInstance)) {\n return mcpServerInstance;\n }\n\n const serverInstance = mcpServerInstance as MCPServerInstance;\n const client = getClient();\n const sendDefaultPii = Boolean(client?.getOptions().sendDefaultPii);\n\n const resolvedOptions: ResolvedMcpOptions = {\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n };\n\n fill(serverInstance, 'connect', originalConnect => {\n return async function (this: MCPServerInstance, transport: MCPTransport, ...restArgs: unknown[]) {\n const result = await (originalConnect as (...args: unknown[]) => Promise).call(\n this,\n transport,\n ...restArgs,\n );\n\n wrapTransportOnMessage(transport, resolvedOptions);\n wrapTransportSend(transport, resolvedOptions);\n wrapTransportOnClose(transport);\n wrapTransportError(transport);\n\n return result;\n };\n });\n\n wrapAllMCPHandlers(serverInstance);\n\n wrappedMcpServerInstances.add(mcpServerInstance);\n return mcpServerInstance;\n}\n","import { getClient, getCurrentScope } from './currentScopes';\nimport type { EventHint } from './types-hoist/event';\nimport type { FeedbackEvent, SendFeedbackParams } from './types-hoist/feedback';\n\n/**\n * Send user feedback to Sentry.\n */\nexport function captureFeedback(\n params: SendFeedbackParams,\n hint: EventHint & { includeReplay?: boolean } = {},\n scope = getCurrentScope(),\n): string {\n const { message, name, email, url, source, associatedEventId, tags } = params;\n\n const feedbackEvent: FeedbackEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n associated_event_id: associatedEventId,\n },\n },\n type: 'feedback',\n level: 'info',\n tags,\n };\n\n const client = scope?.getClient() || getClient();\n\n if (client) {\n client.emit('beforeSendFeedback', feedbackEvent, hint);\n }\n\n const eventId = scope.captureEvent(feedbackEvent, hint);\n\n return eventId;\n}\n","import type { Scope } from '../scope';\nimport type { Log, LogSeverityLevel } from '../types-hoist/log';\nimport type { ParameterizedString } from '../types-hoist/parameterize';\nimport { _INTERNAL_captureLog } from './internal';\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n * @param scope - The scope to capture the log with.\n * @param severityNumber - The severity number of the log.\n */\nfunction captureLog(\n level: LogSeverityLevel,\n message: ParameterizedString,\n attributes?: Log['attributes'],\n scope?: Scope,\n severityNumber?: Log['severityNumber'],\n): void {\n _INTERNAL_captureLog({ level, message, attributes, severityNumber }, scope);\n}\n\n/**\n * Additional metadata to capture the log with.\n */\ninterface CaptureLogMetadata {\n scope?: Scope;\n}\n\n/**\n * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { userId: 100, route: '/dashboard' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('User clicked submit button', {\n * buttonId: 'submit-form',\n * formId: 'user-profile',\n * timestamp: Date.now()\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace(Sentry.logger.fmt`User ${user} navigated to ${page}`, {\n * userId: '123',\n * sessionId: 'abc-xyz'\n * });\n * ```\n */\nexport function trace(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('trace', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { component: 'Header', state: 'loading' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Component mounted', {\n * component: 'UserProfile',\n * props: { userId: 123 },\n * renderTime: 150\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug(Sentry.logger.fmt`API request to ${endpoint} failed`, {\n * statusCode: 404,\n * requestId: 'req-123',\n * duration: 250\n * });\n * ```\n */\nexport function debug(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('debug', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { feature: 'checkout', status: 'completed' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User completed checkout', {\n * orderId: 'order-123',\n * amount: 99.99,\n * paymentMethod: 'credit_card'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info(Sentry.logger.fmt`User ${user} updated profile picture`, {\n * userId: 'user-123',\n * imageSize: '2.5MB',\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function info(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('info', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { browser: 'Chrome', version: '91.0' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Browser compatibility issue detected', {\n * browser: 'Safari',\n * version: '14.0',\n * feature: 'WebRTC',\n * fallback: 'enabled'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn(Sentry.logger.fmt`API endpoint ${endpoint} is deprecated`, {\n * recommendedEndpoint: '/api/v2/users',\n * sunsetDate: '2024-12-31',\n * clientVersion: '1.2.3'\n * });\n * ```\n */\nexport function warn(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('warn', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { error: 'NetworkError', url: '/api/data' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to load user data', {\n * error: 'NetworkError',\n * url: '/api/users/123',\n * statusCode: 500,\n * retryCount: 3\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error(Sentry.logger.fmt`Payment processing failed for order ${orderId}`, {\n * error: 'InsufficientFunds',\n * amount: 100.00,\n * currency: 'USD',\n * userId: 'user-456'\n * });\n * ```\n */\nexport function error(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('error', message, attributes, scope);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled.\n *\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., { appState: 'corrupted', sessionId: 'abc-123' }.\n * @param metadata - additional metadata to capture the log with.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Application state corrupted', {\n * lastKnownState: 'authenticated',\n * sessionId: 'session-123',\n * timestamp: Date.now(),\n * recoveryAttempted: true\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal(Sentry.logger.fmt`Critical system failure in ${service}`, {\n * service: 'payment-processor',\n * errorCode: 'CRITICAL_FAILURE',\n * affectedUsers: 150,\n * timestamp: Date.now()\n * });\n * ```\n */\nexport function fatal(\n message: ParameterizedString,\n attributes?: Log['attributes'],\n { scope }: CaptureLogMetadata = {},\n): void {\n captureLog('fatal', message, attributes, scope);\n}\n\nexport { fmt } from '../utils/parameterize';\n","import { isPrimitive } from '../utils/is';\nimport { normalize } from '../utils/normalize';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\n\ntype GlobalObjectWithUtil = typeof GLOBAL_OBJ & {\n util: {\n format: (...args: unknown[]) => string;\n };\n};\n\n/**\n * Formats the given values into a string.\n *\n * @param values - The values to format.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The formatted string.\n */\nexport function formatConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ as GlobalObjectWithUtil).util.format === 'function'\n ? (GLOBAL_OBJ as GlobalObjectWithUtil).util.format(...values)\n : safeJoinConsoleArgs(values, normalizeDepth, normalizeMaxBreadth);\n}\n\n/**\n * Joins the given values into a string.\n *\n * @param values - The values to join.\n * @param normalizeDepth - The depth to normalize the values.\n * @param normalizeMaxBreadth - The max breadth to normalize the values.\n * @returns The joined string.\n */\nexport function safeJoinConsoleArgs(values: unknown[], normalizeDepth: number, normalizeMaxBreadth: number): string {\n return values\n .map(value =>\n isPrimitive(value) ? String(value) : JSON.stringify(normalize(value, normalizeDepth, normalizeMaxBreadth)),\n )\n .join(' ');\n}\n\n/**\n * Checks if a string contains console substitution patterns like %s, %d, %i, %f, %o, %O, %c.\n *\n * @param str - The string to check\n * @returns true if the string contains console substitution patterns\n */\nexport function hasConsoleSubstitutions(str: string): boolean {\n // Match console substitution patterns: %s, %d, %i, %f, %o, %O, %c\n return /%[sdifocO]/.test(str);\n}\n\n/**\n * Creates template attributes for multiple console arguments.\n *\n * @param args - The console arguments\n * @returns An object with template and parameter attributes\n */\nexport function createConsoleTemplateAttributes(firstArg: unknown, followingArgs: unknown[]): Record {\n const attributes: Record = {};\n\n // Create template with placeholders for each argument\n const template = new Array(followingArgs.length).fill('{}').join(' ');\n attributes['sentry.message.template'] = `${firstArg} ${template}`;\n\n // Add each argument as a parameter\n followingArgs.forEach((arg, index) => {\n attributes[`sentry.message.parameter.${index}`] = arg;\n });\n\n return attributes;\n}\n","import { getClient } from '../currentScopes';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { addConsoleInstrumentationHandler } from '../instrument/console';\nimport { defineIntegration } from '../integration';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport type { IntegrationFn } from '../types-hoist/integration';\nimport { CONSOLE_LEVELS, debug } from '../utils/debug-logger';\nimport { _INTERNAL_captureLog } from './internal';\nimport { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions } from './utils';\n\ninterface CaptureConsoleOptions {\n levels: ConsoleLevel[];\n}\n\nconst INTEGRATION_NAME = 'ConsoleLogs';\n\nconst DEFAULT_ATTRIBUTES = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.log.console',\n};\n\nconst _consoleLoggingIntegration = ((options: Partial = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const { enableLogs, normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n if (!enableLogs) {\n DEBUG_BUILD && debug.warn('`enableLogs` is not enabled, ConsoleLogs integration disabled');\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n const firstArg = args[0];\n const followingArgs = args.slice(1);\n\n if (level === 'assert') {\n if (!firstArg) {\n const assertionMessage =\n followingArgs.length > 0\n ? `Assertion failed: ${formatConsoleArgs(followingArgs, normalizeDepth, normalizeMaxBreadth)}`\n : 'Assertion failed';\n _INTERNAL_captureLog({ level: 'error', message: assertionMessage, attributes: DEFAULT_ATTRIBUTES });\n }\n return;\n }\n\n const isLevelLog = level === 'log';\n\n const shouldGenerateTemplate =\n args.length > 1 && typeof args[0] === 'string' && !hasConsoleSubstitutions(args[0]);\n const attributes = {\n ...DEFAULT_ATTRIBUTES,\n ...(shouldGenerateTemplate ? createConsoleTemplateAttributes(firstArg, followingArgs) : {}),\n };\n\n _INTERNAL_captureLog({\n level: isLevelLog ? 'info' : level,\n message: formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth),\n severityNumber: isLevelLog ? 10 : undefined,\n attributes,\n });\n });\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Captures calls to the `console` API as logs in Sentry. Requires the `enableLogs` option to be enabled.\n *\n * @experimental This feature is experimental and may be changed or removed in future versions.\n *\n * By default the integration instruments `console.debug`, `console.info`, `console.warn`, `console.error`,\n * `console.log`, `console.trace`, and `console.assert`. You can use the `levels` option to customize which\n * levels are captured.\n *\n * @example\n *\n * ```ts\n * import * as Sentry from '@sentry/browser';\n *\n * Sentry.init({\n * enableLogs: true,\n * integrations: [Sentry.consoleLoggingIntegration({ levels: ['error', 'warn'] })],\n * });\n * ```\n */\nexport const consoleLoggingIntegration = defineIntegration(_consoleLoggingIntegration);\n","import type { Scope } from '../scope';\nimport type { Metric, MetricType } from '../types-hoist/metric';\nimport { _INTERNAL_captureMetric } from './internal';\n\n/**\n * Options for capturing a metric.\n */\nexport interface MetricOptions {\n /**\n * The unit of the metric value.\n */\n unit?: string;\n\n /**\n * Arbitrary structured data that stores information about the metric.\n */\n attributes?: Metric['attributes'];\n\n /**\n * The scope to capture the metric with.\n */\n scope?: Scope;\n}\n\n/**\n * Capture a metric with the given type, name, and value.\n *\n * @param type - The type of the metric.\n * @param name - The name of the metric.\n * @param value - The value of the metric.\n * @param options - Options for capturing the metric.\n */\nfunction captureMetric(type: MetricType, name: string, value: number, options?: MetricOptions): void {\n _INTERNAL_captureMetric(\n { type, name, value, unit: options?.unit, attributes: options?.attributes },\n { scope: options?.scope },\n );\n}\n\n/**\n * @summary Increment a counter metric.\n *\n * @param name - The name of the counter metric.\n * @param value - The value to increment by (defaults to 1).\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.count('api.requests', 1, {\n * attributes: {\n * endpoint: '/api/users',\n * method: 'GET',\n * status: 200\n * }\n * });\n * ```\n *\n * @example With custom value\n *\n * ```\n * Sentry.metrics.count('items.processed', 5, {\n * attributes: {\n * processor: 'batch-processor',\n * queue: 'high-priority'\n * }\n * });\n * ```\n */\nexport function count(name: string, value: number = 1, options?: MetricOptions): void {\n captureMetric('counter', name, value, options);\n}\n\n/**\n * @summary Set a gauge metric to a specific value.\n *\n * @param name - The name of the gauge metric.\n * @param value - The current value of the gauge.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.gauge('memory.usage', 1024, {\n * unit: 'megabyte',\n * attributes: {\n * process: 'web-server',\n * region: 'us-east-1'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.gauge('active.connections', 42, {\n * attributes: {\n * server: 'api-1',\n * protocol: 'websocket'\n * }\n * });\n * ```\n */\nexport function gauge(name: string, value: number, options?: MetricOptions): void {\n captureMetric('gauge', name, value, options);\n}\n\n/**\n * @summary Record a value in a distribution metric.\n *\n * @param name - The name of the distribution metric.\n * @param value - The value to record in the distribution.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.distribution('task.duration', 500, {\n * unit: 'millisecond',\n * attributes: {\n * task: 'data-processing',\n * priority: 'high'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.distribution('batch.size', 100, {\n * attributes: {\n * processor: 'batch-1',\n * type: 'async'\n * }\n * });\n * ```\n */\nexport function distribution(name: string, value: number, options?: MetricOptions): void {\n captureMetric('distribution', name, value, options);\n}\n","import type { Client } from '../client';\nimport { getClient } from '../currentScopes';\nimport { _INTERNAL_captureLog } from '../logs/internal';\nimport { createConsoleTemplateAttributes, formatConsoleArgs, hasConsoleSubstitutions } from '../logs/utils';\nimport type { LogSeverityLevel } from '../types-hoist/log';\nimport { isPlainObject } from '../utils/is';\nimport { normalize } from '../utils/normalize';\n\n/**\n * Result of extracting structured attributes from console arguments.\n */\ninterface ExtractAttributesResult {\n /**\n * The log message to use for the log entry, typically constructed from the console arguments.\n */\n message?: string;\n\n /**\n * The parameterized template string which is added as `sentry.message.template` attribute if applicable.\n */\n messageTemplate?: string;\n\n /**\n * Remaining arguments to process as attributes with keys like `sentry.message.parameter.0`, `sentry.message.parameter.1`, etc.\n */\n messageParameters?: unknown[];\n\n /**\n * Additional attributes to add to the log.\n */\n attributes?: Record;\n}\n\n/**\n * Options for the Sentry Consola reporter.\n */\ninterface ConsolaReporterOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * consola.addReporter(sentryReporter);\n * ```\n */\n levels?: Array;\n\n /**\n * Optionally provide a specific Sentry client instance to use for capturing logs.\n * If not provided, the current client will be retrieved using `getClient()`.\n *\n * This is useful when you want to use specific client options for log normalization\n * or when working with multiple client instances.\n *\n * @example\n * ```ts\n * const sentryReporter = Sentry.createConsolaReporter({\n * client: myCustomClient,\n * });\n * ```\n */\n client?: Client;\n}\n\nexport interface ConsolaReporter {\n log: (logObj: ConsolaLogObject) => void;\n}\n\n/**\n * Represents a log object that Consola reporters receive.\n *\n * This interface matches the structure of log objects passed to Consola reporters.\n * See: https://github.com/unjs/consola#custom-reporters\n *\n * @example\n * ```ts\n * const reporter = {\n * log(logObj: ConsolaLogObject) {\n * console.log(`[${logObj.type}] ${logObj.message || logObj.args?.join(' ')}`);\n * }\n * };\n * consola.addReporter(reporter);\n * ```\n */\nexport interface ConsolaLogObject {\n /**\n * Allows additional custom properties to be set on the log object. These properties will be captured as log attributes.\n *\n * Additional properties are set when passing a single object with a `message` (`consola.[type]({ message: '', ... })`) or if the reporter is called directly\n *\n * @example\n * ```ts\n * const reporter = Sentry.createConsolaReporter();\n * reporter.log({\n * type: 'info',\n * message: 'User action',\n * userId: 123,\n * sessionId: 'abc-123'\n * });\n * // Will create attributes: `userId` and `sessionId`\n * ```\n */\n [key: string]: unknown;\n\n /**\n * The numeric log level (0-5) or null.\n *\n * Consola log levels:\n * - 0: Fatal and Error\n * - 1: Warnings\n * - 2: Normal logs\n * - 3: Informational logs, success, fail, ready, start, box, ...\n * - 4: Debug logs\n * - 5: Trace logs\n * - null: Some special types like 'verbose'\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-level\n */\n level?: number | null;\n\n /**\n * The log type/method name (e.g., 'error', 'warn', 'info', 'debug', 'trace', 'success', 'fail', etc.).\n *\n * Consola built-in types include:\n * - Standard: silent, fatal, error, warn, log, info, success, fail, ready, start, box, debug, trace, verbose\n * - Custom types can also be defined\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#log-types\n */\n type?: string;\n\n /**\n * An optional tag/scope for the log entry.\n *\n * Tags are created using `consola.withTag('scope')` and help categorize logs.\n *\n * @example\n * ```ts\n * const scopedLogger = consola.withTag('auth');\n * scopedLogger.info('User logged in'); // tag will be 'auth'\n * ```\n *\n * See: https://github.com/unjs/consola/blob/main/README.md#withtagtag\n */\n tag?: string;\n\n /**\n * The raw arguments passed to the log method.\n *\n * These args are typically formatted into the final `message`. In Consola reporters, `message` is not provided. See: https://github.com/unjs/consola/issues/406#issuecomment-3684792551\n *\n * @example\n * ```ts\n * consola.info('Hello', 'world', { user: 'john' });\n * // args = ['Hello', 'world', { user: 'john' }]\n * ```\n *\n * @example\n * ```ts\n * // `message` is a reserved property in Consola\n * consola.log({ message: 'Hello' });\n * // args = ['Hello']\n * ```\n */\n args?: unknown[];\n\n /**\n * The timestamp when the log was created.\n *\n * This is automatically set by Consola when the log is created.\n */\n date?: Date;\n\n /**\n * The formatted log message.\n *\n * When provided, this is the final formatted message. When not provided,\n * the message should be constructed from the `args` array.\n *\n * Note: In reporters, `message` is typically undefined. It is primarily for\n * `consola.[type]({ message: 'xxx' })` usage and is normalized into `args` before\n * reporters receive the log object. See: https://github.com/unjs/consola/issues/406#issuecomment-3684792551\n */\n message?: string;\n}\n\nconst DEFAULT_CAPTURED_LEVELS: Array = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n/**\n * Creates a new Sentry reporter for Consola that forwards logs to Sentry. Requires the `enableLogs` option to be enabled.\n *\n * **Note: This integration supports Consola v3.x only.** The reporter interface and log object structure\n * may differ in other versions of Consola.\n *\n * @param options - Configuration options for the reporter.\n * @returns A Consola reporter that can be added to consola instances.\n *\n * @example\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import { consola } from 'consola';\n *\n * Sentry.init({\n * enableLogs: true,\n * });\n *\n * const sentryReporter = Sentry.createConsolaReporter({\n * // Optional: filter levels to capture\n * levels: ['error', 'warn', 'info'],\n * });\n *\n * consola.addReporter(sentryReporter);\n *\n * // Now consola logs will be captured by Sentry\n * consola.info('This will be sent to Sentry');\n * consola.error('This error will also be sent to Sentry');\n * ```\n */\nexport function createConsolaReporter(options: ConsolaReporterOptions = {}): ConsolaReporter {\n const levels = new Set(options.levels ?? DEFAULT_CAPTURED_LEVELS);\n const providedClient = options.client;\n\n return {\n log(logObj: ConsolaLogObject) {\n // We need to exclude certain known properties from being added as additional attributes\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { type, level, message: consolaMessage, args, tag, date: _date, ...rest } = logObj;\n\n // Get client - use provided client or current client\n const client = providedClient || getClient();\n if (!client) {\n return;\n }\n\n // Determine the log severity level\n const logSeverityLevel = getLogSeverityLevel(type, level);\n\n // Early exit if this level should not be captured\n if (!levels.has(logSeverityLevel)) {\n return;\n }\n\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = client.getOptions();\n\n const attributes: Record = {};\n\n // Build attributes\n for (const [key, value] of Object.entries(rest)) {\n attributes[key] = normalize(value, normalizeDepth, normalizeMaxBreadth);\n }\n\n attributes['sentry.origin'] = 'auto.log.consola';\n\n if (tag) {\n attributes['consola.tag'] = tag;\n }\n\n if (type) {\n attributes['consola.type'] = type;\n }\n\n // Only add level if it's a valid number (not null/undefined)\n if (level != null && typeof level === 'number') {\n attributes['consola.level'] = level;\n }\n\n const extractionResult = processExtractedAttributes(\n defaultExtractAttributes(args, normalizeDepth, normalizeMaxBreadth),\n normalizeDepth,\n normalizeMaxBreadth,\n );\n\n if (extractionResult?.attributes) {\n Object.assign(attributes, extractionResult.attributes);\n }\n\n _INTERNAL_captureLog({\n level: logSeverityLevel,\n message:\n extractionResult?.message ||\n consolaMessage ||\n (args && formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth)) ||\n '',\n attributes,\n });\n },\n };\n}\n\n// Mapping from consola log types to Sentry log severity levels\nconst CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n // Consola built-in types\n silent: 'trace',\n fatal: 'fatal',\n error: 'error',\n warn: 'warn',\n log: 'info',\n info: 'info',\n success: 'info',\n fail: 'error',\n ready: 'info',\n start: 'info',\n box: 'info',\n debug: 'debug',\n trace: 'trace',\n verbose: 'debug',\n // Custom types that might exist\n critical: 'fatal',\n notice: 'info',\n};\n\n// Mapping from consola log levels (numbers) to Sentry log severity levels\nconst CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n 0: 'fatal', // Fatal and Error\n 1: 'warn', // Warnings\n 2: 'info', // Normal logs\n 3: 'info', // Informational logs, success, fail, ready, start, ...\n 4: 'debug', // Debug logs\n 5: 'trace', // Trace logs\n};\n\n/**\n * Determines the log severity level from Consola type and level.\n *\n * @param type - The Consola log type (e.g., 'error', 'warn', 'info')\n * @param level - The Consola numeric log level (0-5) or null for some types like 'verbose'\n * @returns The corresponding Sentry log severity level\n */\nfunction getLogSeverityLevel(type?: string, level?: number | null): LogSeverityLevel {\n // Handle special case for verbose logs (level can be null with infinite level in Consola)\n if (type === 'verbose') {\n return 'debug';\n }\n\n // Handle silent logs - these should be at trace level\n if (type === 'silent') {\n return 'trace';\n }\n\n // First try to map by type (more specific)\n if (type) {\n const mappedLevel = CONSOLA_TYPE_TO_LOG_SEVERITY_LEVEL_MAP[type];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Fallback to level mapping (handle null level)\n if (typeof level === 'number') {\n const mappedLevel = CONSOLA_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[level];\n if (mappedLevel) {\n return mappedLevel;\n }\n }\n\n // Default fallback\n return 'info';\n}\n\n/**\n * Extracts structured attributes from console arguments. If the first argument is a plain object, its properties are extracted as attributes.\n */\nfunction defaultExtractAttributes(\n args: unknown[] | undefined,\n normalizeDepth: number,\n normalizeMaxBreadth: number,\n): ExtractAttributesResult {\n if (!args?.length) {\n return { message: '' };\n }\n\n // Message looks like how consola logs the message to the console (all args stringified and joined)\n const message = formatConsoleArgs(args, normalizeDepth, normalizeMaxBreadth);\n\n const firstArg = args[0];\n\n if (isPlainObject(firstArg)) {\n // Remaining args start from index 2 i f we used second arg as message, otherwise from index 1\n const remainingArgsStartIndex = typeof args[1] === 'string' ? 2 : 1;\n const remainingArgs = args.slice(remainingArgsStartIndex);\n\n return {\n message,\n // Object content from first arg is added as attributes\n attributes: firstArg,\n // Add remaining args as message parameters\n messageParameters: remainingArgs,\n };\n } else {\n const followingArgs = args.slice(1);\n\n const shouldAddTemplateAttr =\n followingArgs.length > 0 && typeof firstArg === 'string' && !hasConsoleSubstitutions(firstArg);\n\n return {\n message,\n messageTemplate: shouldAddTemplateAttr ? firstArg : undefined,\n messageParameters: shouldAddTemplateAttr ? followingArgs : undefined,\n };\n }\n}\n\n/**\n * Processes extracted attributes by normalizing them and preparing message parameter attributes if a template is present.\n */\nfunction processExtractedAttributes(\n extractionResult: ExtractAttributesResult,\n normalizeDepth: number,\n normalizeMaxBreadth: number,\n): { message: string | undefined; attributes: Record } {\n const { message, attributes, messageTemplate, messageParameters } = extractionResult;\n\n const messageParamAttributes: Record = {};\n\n if (messageTemplate && messageParameters) {\n const templateAttrs = createConsoleTemplateAttributes(messageTemplate, messageParameters);\n\n for (const [key, value] of Object.entries(templateAttrs)) {\n messageParamAttributes[key] = key.startsWith('sentry.message.parameter.')\n ? normalize(value, normalizeDepth, normalizeMaxBreadth)\n : value;\n }\n } else if (messageParameters && messageParameters.length > 0) {\n messageParameters.forEach((arg, index) => {\n messageParamAttributes[`sentry.message.parameter.${index}`] = normalize(arg, normalizeDepth, normalizeMaxBreadth);\n });\n }\n\n return {\n message: message,\n attributes: {\n ...normalize(attributes, normalizeDepth, normalizeMaxBreadth),\n ...messageParamAttributes,\n },\n };\n}\n","/**\n * OpenAI Integration Telemetry Attributes\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n */\n\n// =============================================================================\n// OPENTELEMETRY SEMANTIC CONVENTIONS FOR GENAI\n// =============================================================================\n\n/**\n * The input messages sent to the model\n */\nexport const GEN_AI_PROMPT_ATTRIBUTE = 'gen_ai.prompt';\n\n/**\n * The Generative AI system being used\n * For OpenAI, this should always be \"openai\"\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * The name of the model as requested\n * Examples: \"gpt-4\", \"gpt-3.5-turbo\"\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Whether streaming was enabled for the request\n */\nexport const GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream';\n\n/**\n * The temperature setting for the model request\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * The maximum number of tokens requested\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * The frequency penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * The presence penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * The top_p (nucleus sampling) setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * The top_k setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Stop sequences for the model request\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * The encoding format for the model request\n */\nexport const GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format';\n\n/**\n * The dimensions for the model request\n */\nexport const GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions';\n\n/**\n * Array of reasons why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * The name of the model that generated the response\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * The unique identifier for the response\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * The reason why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason';\n\n/**\n * The number of tokens used in the prompt\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * The number of tokens used in the response\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n/**\n * The total number of tokens used (input + output)\n */\nexport const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens';\n\n/**\n * The operation name\n */\nexport const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';\n\n/**\n * Original length of messages array, used to indicate truncations had occured\n */\nexport const GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'sentry.sdk_meta.gen_ai.input.messages.original_length';\n\n/**\n * The prompt messages\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.messages';\n\n/**\n * The model's response messages including text and tool calls\n * Only recorded when recordOutputs is enabled\n * Format: stringified array of message objects with role, parts, and finish_reason\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-output-messages\n */\nexport const GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE = 'gen_ai.output.messages';\n\n/**\n * The system instructions extracted from system messages\n * Only recorded when recordInputs is enabled\n * According to OpenTelemetry spec: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions\n */\nexport const GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions';\n\n/**\n * The response text\n * Only recorded when recordOutputs is enabled\n */\nexport const GEN_AI_RESPONSE_TEXT_ATTRIBUTE = 'gen_ai.response.text';\n\n/**\n * The available tools from incoming request\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools';\n\n/**\n * Whether the response is a streaming response\n */\nexport const GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = 'gen_ai.response.streaming';\n\n/**\n * The tool calls from the response\n * Only recorded when recordOutputs is enabled\n */\nexport const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls';\n\n/**\n * The agent name\n */\nexport const GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name';\n\n/**\n * The pipeline name\n */\nexport const GEN_AI_PIPELINE_NAME_ATTRIBUTE = 'gen_ai.pipeline.name';\n\n/**\n * The conversation ID for linking messages across API calls\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nexport const GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\n/**\n * The number of cache creation input tokens used\n */\nexport const GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_creation_input_tokens';\n\n/**\n * The number of cache read input tokens used\n */\nexport const GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_read_input_tokens';\n\n/**\n * The number of cache write input tokens used\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = 'gen_ai.usage.input_tokens.cache_write';\n\n/**\n * The number of cached input tokens that were used\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = 'gen_ai.usage.input_tokens.cached';\n\n/**\n * The span operation name for invoking an agent\n */\nexport const GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent';\n\n/**\n * The span operation name for generating text\n */\nexport const GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text';\n\n/**\n * The span operation name for streaming text\n */\nexport const GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text';\n\n/**\n * The span operation name for generating object\n */\nexport const GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object';\n\n/**\n * The span operation name for streaming object\n */\nexport const GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_object';\n\n/**\n * The embeddings input\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input';\n\n/**\n * The span operation name for embedding\n */\nexport const GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for embedding many\n */\nexport const GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for reranking\n */\nexport const GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE = 'gen_ai.rerank';\n\n/**\n * The span operation name for executing a tool\n */\nexport const GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool';\n\n/**\n * The tool name for tool call spans\n */\nexport const GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name';\n\n/**\n * The tool call ID\n */\nexport const GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id';\n\n/**\n * The tool type (e.g., 'function')\n */\nexport const GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type';\n\n/**\n * The tool input/arguments\n */\nexport const GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input';\n\n/**\n * The tool output/result\n */\nexport const GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output';\n\n/**\n * The description of the tool being used\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-description\n */\nexport const GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE = 'gen_ai.tool.description';\n\n// =============================================================================\n// OPENAI-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/**\n * The response ID from OpenAI\n */\nexport const OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id';\n\n/**\n * The response model from OpenAI\n */\nexport const OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model';\n\n/**\n * The response timestamp from OpenAI (ISO string)\n */\nexport const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp';\n\n/**\n * The number of completion tokens used\n */\nexport const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens';\n\n/**\n * The number of prompt tokens used\n */\nexport const OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'openai.usage.prompt_tokens';\n\n// =============================================================================\n// ANTHROPIC AI OPERATIONS\n// =============================================================================\n\n/**\n * The response timestamp from Anthropic AI (ISO string)\n */\nexport const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp';\n","import type { ToolCallSpanContext } from './types';\n\n// Global map to track tool call IDs to their corresponding span contexts.\n// This allows us to capture tool errors and link them to the correct span\n// without keeping full Span objects (and their potentially large attributes) alive.\nexport const toolCallSpanContextMap = new Map();\n\n// Operation sets for efficient mapping to OpenTelemetry semantic convention values\nexport const INVOKE_AGENT_OPS = new Set(['ai.generateText', 'ai.streamText', 'ai.generateObject', 'ai.streamObject']);\n\nexport const GENERATE_CONTENT_OPS = new Set([\n 'ai.generateText.doGenerate',\n 'ai.streamText.doStream',\n 'ai.generateObject.doGenerate',\n 'ai.streamObject.doStream',\n]);\n\nexport const EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']);\n\nexport const RERANK_OPS = new Set(['ai.rerank.doRerank']);\n\nexport const DO_SPAN_NAME_PREFIX: Record = {\n 'ai.embed.doEmbed': 'embeddings',\n 'ai.embedMany.doEmbed': 'embeddings',\n 'ai.rerank.doRerank': 'rerank',\n};\n","/**\n * Inline media content source, with a potentially very large base64\n * blob or data: uri.\n */\nexport type ContentMedia = Record &\n (\n | {\n media_type: string;\n data: string;\n }\n | {\n image_url: `data:${string}`;\n }\n | {\n image_url: { url: `data:${string}` };\n }\n | {\n type: 'blob' | 'base64';\n content: string;\n }\n | {\n b64_json: string;\n }\n | {\n uri: `data:${string}`;\n }\n | {\n type: 'input_audio';\n input_audio: { data: string };\n }\n | {\n type: 'file';\n file: { file_data?: string };\n }\n );\n\n/**\n * Check if a content part is an OpenAI/Anthropic media source\n */\nexport function isContentMedia(part: unknown): part is ContentMedia {\n if (!part || typeof part !== 'object') return false;\n\n return (\n isContentMediaSource(part) ||\n hasInlineData(part) ||\n hasImageUrl(part) ||\n hasInputAudio(part) ||\n hasFileData(part) ||\n hasMediaTypeData(part) ||\n hasVercelFileData(part) ||\n hasVercelImageData(part) ||\n hasBlobOrBase64Type(part) ||\n hasB64Json(part) ||\n hasImageGenerationResult(part) ||\n hasDataUri(part)\n );\n}\n\nfunction hasImageUrl(part: NonNullable): boolean {\n if (!('image_url' in part)) return false;\n if (typeof part.image_url === 'string') return part.image_url.startsWith('data:');\n return hasNestedImageUrl(part);\n}\n\nfunction hasNestedImageUrl(part: NonNullable): part is { image_url: { url: string } } {\n return (\n 'image_url' in part &&\n !!part.image_url &&\n typeof part.image_url === 'object' &&\n 'url' in part.image_url &&\n typeof part.image_url.url === 'string' &&\n part.image_url.url.startsWith('data:')\n );\n}\n\nfunction isContentMediaSource(part: NonNullable): boolean {\n return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source);\n}\n\nfunction hasInlineData(part: NonNullable): part is { inlineData: { data?: string } } {\n return (\n 'inlineData' in part &&\n !!part.inlineData &&\n typeof part.inlineData === 'object' &&\n 'data' in part.inlineData &&\n typeof part.inlineData.data === 'string'\n );\n}\n\nfunction hasInputAudio(part: NonNullable): part is { type: 'input_audio'; input_audio: { data: string } } {\n return (\n 'type' in part &&\n part.type === 'input_audio' &&\n 'input_audio' in part &&\n !!part.input_audio &&\n typeof part.input_audio === 'object' &&\n 'data' in part.input_audio &&\n typeof part.input_audio.data === 'string'\n );\n}\n\nfunction hasFileData(part: NonNullable): part is { type: 'file'; file: { file_data: string } } {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'file' in part &&\n !!part.file &&\n typeof part.file === 'object' &&\n 'file_data' in part.file &&\n typeof part.file.file_data === 'string'\n );\n}\n\nfunction hasMediaTypeData(part: NonNullable): part is { media_type: string; data: string } {\n return 'media_type' in part && typeof part.media_type === 'string' && 'data' in part;\n}\n\n/**\n * Check for Vercel AI SDK file format: { type: \"file\", mediaType: \"...\", data: \"...\" }\n * Only matches base64/binary data, not HTTP/HTTPS URLs (which should be preserved).\n */\nfunction hasVercelFileData(part: NonNullable): part is { type: 'file'; mediaType: string; data: string } {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'mediaType' in part &&\n typeof part.mediaType === 'string' &&\n 'data' in part &&\n typeof part.data === 'string' &&\n // Only strip base64/binary data, not HTTP/HTTPS URLs which should be preserved as references\n !part.data.startsWith('http://') &&\n !part.data.startsWith('https://')\n );\n}\n\n/**\n * Check for Vercel AI SDK image format: { type: \"image\", image: \"base64...\", mimeType?: \"...\" }\n * Only matches base64/data URIs, not HTTP/HTTPS URLs (which should be preserved).\n * Note: mimeType is optional in Vercel AI SDK image parts.\n */\nfunction hasVercelImageData(part: NonNullable): part is { type: 'image'; image: string; mimeType?: string } {\n return (\n 'type' in part &&\n part.type === 'image' &&\n 'image' in part &&\n typeof part.image === 'string' &&\n // Only strip base64/data URIs, not HTTP/HTTPS URLs which should be preserved as references\n !part.image.startsWith('http://') &&\n !part.image.startsWith('https://')\n );\n}\n\nfunction hasBlobOrBase64Type(part: NonNullable): part is { type: 'blob' | 'base64'; content: string } {\n return 'type' in part && (part.type === 'blob' || part.type === 'base64');\n}\n\nfunction hasB64Json(part: NonNullable): part is { b64_json: string } {\n return 'b64_json' in part;\n}\n\nfunction hasImageGenerationResult(part: NonNullable): part is { type: 'image_generation'; result: string } {\n return 'type' in part && 'result' in part && part.type === 'image_generation';\n}\n\nfunction hasDataUri(part: NonNullable): part is { uri: string } {\n return 'uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:');\n}\n\nconst REMOVED_STRING = '[Blob substitute]';\n\nconst MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri', 'image'] as const;\n\n/**\n * Replace inline binary data in a single media content part with a placeholder.\n */\nexport function stripInlineMediaFromSingleMessage(part: ContentMedia): ContentMedia {\n const strip = { ...part };\n if (isContentMedia(strip.source)) {\n strip.source = stripInlineMediaFromSingleMessage(strip.source);\n }\n if (hasInlineData(part)) {\n strip.inlineData = { ...part.inlineData, data: REMOVED_STRING };\n }\n if (hasNestedImageUrl(part)) {\n strip.image_url = { ...part.image_url, url: REMOVED_STRING };\n }\n if (hasInputAudio(part)) {\n strip.input_audio = { ...part.input_audio, data: REMOVED_STRING };\n }\n if (hasFileData(part)) {\n strip.file = { ...part.file, file_data: REMOVED_STRING };\n }\n for (const field of MEDIA_FIELDS) {\n if (typeof strip[field] === 'string') strip[field] = REMOVED_STRING;\n }\n return strip;\n}\n","import { isContentMedia, stripInlineMediaFromSingleMessage } from './mediaStripping';\n\n/**\n * Default maximum size in bytes for GenAI messages.\n * Messages exceeding this limit will be truncated.\n */\nexport const DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000;\n\n/**\n * Message format used by OpenAI and Anthropic APIs.\n */\ntype ContentMessage = {\n [key: string]: unknown;\n content: string;\n};\n\n/**\n * One block inside OpenAI / Anthropic `content: [...]` arrays (text, image_url, etc.).\n */\ntype ContentArrayBlock = {\n [key: string]: unknown;\n type: string;\n};\n\n/**\n * Message format used by OpenAI and Anthropic APIs for media.\n */\ntype ContentArrayMessage = {\n [key: string]: unknown;\n content: ContentArrayBlock[];\n};\n\n/**\n * Message format used by Google GenAI API.\n * Parts can be strings or objects with a text property.\n */\ntype PartsMessage = {\n [key: string]: unknown;\n parts: Array;\n};\n\n/**\n * A part in a Google GenAI message that contains text.\n */\ntype TextPart = string | { text: string };\n\n/**\n * A part in a Google GenAI that contains media.\n */\ntype MediaPart = {\n type: string;\n content: string;\n};\n\n/**\n * One element of an array-based message: OpenAI/Anthropic `content[]` or Google `parts`.\n */\ntype ArrayMessageItem = TextPart | MediaPart | ContentArrayBlock;\n\n/**\n * Calculate the UTF-8 byte length of a string.\n */\nconst utf8Bytes = (text: string): number => {\n return new TextEncoder().encode(text).length;\n};\n\n/**\n * Calculate the UTF-8 byte length of a value's JSON representation.\n */\nconst jsonBytes = (value: unknown): number => {\n return utf8Bytes(JSON.stringify(value));\n};\n\n/**\n * Truncate a string to fit within maxBytes (inclusive) when encoded as UTF-8.\n * Uses binary search for efficiency with multi-byte characters.\n *\n * @param text - The string to truncate\n * @param maxBytes - Maximum byte length (inclusive, UTF-8 encoded)\n * @returns Truncated string whose UTF-8 byte length is at most maxBytes\n */\nfunction truncateTextByBytes(text: string, maxBytes: number): string {\n if (utf8Bytes(text) <= maxBytes) {\n return text;\n }\n\n let low = 0;\n let high = text.length;\n let bestFit = '';\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = text.slice(0, mid);\n const byteSize = utf8Bytes(candidate);\n\n if (byteSize <= maxBytes) {\n bestFit = candidate;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n return bestFit;\n}\n\n/**\n * Extract text content from a message item.\n * Handles plain strings and objects with a text property.\n *\n * @returns The text content\n */\nfunction getItemText(item: ArrayMessageItem): string {\n if (typeof item === 'string') {\n return item;\n }\n if ('text' in item && typeof item.text === 'string') {\n return item.text;\n }\n return '';\n}\n\n/**\n * Create a new item with updated text content while preserving the original structure.\n *\n * @param item - Original item (string or object)\n * @param text - New text content\n * @returns New item with updated text\n */\nfunction withItemText(item: ArrayMessageItem, text: string): ArrayMessageItem {\n if (typeof item === 'string') {\n return text;\n }\n return { ...item, text };\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content format.\n */\nfunction isContentMessage(message: unknown): message is ContentMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'content' in message &&\n typeof (message as ContentMessage).content === 'string'\n );\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content array format.\n */\nfunction isContentArrayMessage(message: unknown): message is ContentArrayMessage {\n return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content);\n}\n\n/**\n * Check if a message has the Google GenAI parts format.\n */\nfunction isPartsMessage(message: unknown): message is PartsMessage {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'parts' in message &&\n Array.isArray((message as PartsMessage).parts) &&\n (message as PartsMessage).parts.length > 0\n );\n}\n\n/**\n * Truncate a message with `content: string` format (OpenAI/Anthropic).\n *\n * @param message - Message with content property\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateContentMessage(message: ContentMessage, maxBytes: number): unknown[] {\n // Calculate overhead (message structure without content)\n const emptyMessage = { ...message, content: '' };\n const overhead = jsonBytes(emptyMessage);\n const availableForContent = maxBytes - overhead;\n\n if (availableForContent <= 0) {\n return [];\n }\n\n const truncatedContent = truncateTextByBytes(message.content, availableForContent);\n return [{ ...message, content: truncatedContent }];\n}\n\n/**\n * Extracts the array items and their key from an array-based message.\n * Returns `null` key if neither `parts` nor `content` is a valid array.\n */\nfunction getArrayItems(message: PartsMessage | ContentArrayMessage): {\n key: 'parts' | 'content' | null;\n items: ArrayMessageItem[];\n} {\n if ('parts' in message && Array.isArray(message.parts)) {\n return { key: 'parts', items: message.parts };\n }\n if ('content' in message && Array.isArray(message.content)) {\n return { key: 'content', items: message.content };\n }\n return { key: null, items: [] };\n}\n\n/**\n * Truncate a message with an array-based format.\n * Handles both `parts: [...]` (Google GenAI) and `content: [...]` (OpenAI/Anthropic multimodal).\n * Keeps as many complete items as possible, only truncating the first item if needed.\n *\n * @param message - Message with parts or content array\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateArrayMessage(message: PartsMessage | ContentArrayMessage, maxBytes: number): unknown[] {\n const { key, items } = getArrayItems(message);\n\n if (key === null || items.length === 0) {\n return [];\n }\n\n // Calculate overhead by creating empty text items\n const emptyItems = items.map(item => withItemText(item, ''));\n const overhead = jsonBytes({ ...message, [key]: emptyItems });\n let remainingBytes = maxBytes - overhead;\n\n if (remainingBytes <= 0) {\n return [];\n }\n\n // Include items until we run out of space\n const includedItems: ArrayMessageItem[] = [];\n\n for (const item of items) {\n const text = getItemText(item);\n const textSize = utf8Bytes(text);\n\n if (textSize <= remainingBytes) {\n // Item fits: include it as-is\n includedItems.push(item);\n remainingBytes -= textSize;\n } else if (includedItems.length === 0) {\n // First item doesn't fit: truncate it\n const truncated = truncateTextByBytes(text, remainingBytes);\n if (truncated) {\n includedItems.push(withItemText(item, truncated));\n }\n break;\n } else {\n // Subsequent item doesn't fit: stop here\n break;\n }\n }\n\n /* c8 ignore start\n * for type safety only, algorithm guarantees SOME text included */\n if (includedItems.length <= 0) {\n return [];\n } else {\n /* c8 ignore stop */\n return [{ ...message, [key]: includedItems }];\n }\n}\n\n/**\n * Truncate a single message to fit within maxBytes.\n *\n * Supports three message formats:\n * - OpenAI/Anthropic: `{ ..., content: string }`\n * - Vercel AI/OpenAI multimodal: `{ ..., content: Array<{type, text?, ...}> }`\n * - Google GenAI: `{ ..., parts: Array }`\n *\n * @param message - The message to truncate\n * @param maxBytes - Maximum byte limit for the message\n * @returns Array containing the truncated message, or empty array if truncation fails\n */\nfunction truncateSingleMessage(message: unknown, maxBytes: number): unknown[] {\n if (!message) return [];\n\n // Handle plain strings (e.g., embeddings input)\n if (typeof message === 'string') {\n const truncated = truncateTextByBytes(message, maxBytes);\n return truncated ? [truncated] : [];\n }\n\n if (typeof message !== 'object') {\n return [];\n }\n\n if (isContentMessage(message)) {\n return truncateContentMessage(message, maxBytes);\n }\n\n if (isContentArrayMessage(message) || isPartsMessage(message)) {\n return truncateArrayMessage(message, maxBytes);\n }\n\n // Unknown message format: cannot truncate safely\n return [];\n}\n\n/**\n * Strip the inline media from message arrays.\n *\n * This returns a stripped message. We do NOT want to mutate the data in place,\n * because of course we still want the actual API/client to handle the media.\n */\nfunction stripInlineMediaFromMessages(messages: unknown[]): unknown[] {\n const stripped = messages.map(message => {\n let newMessage: Record | undefined = undefined;\n if (!!message && typeof message === 'object') {\n if (isContentArrayMessage(message)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromMessages(message.content),\n };\n } else if ('content' in message && isContentMedia(message.content)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromSingleMessage(message.content),\n };\n }\n if (isPartsMessage(message)) {\n newMessage = {\n // might have to strip content AND parts\n ...(newMessage ?? message),\n parts: stripInlineMediaFromMessages(message.parts),\n };\n }\n if (isContentMedia(newMessage)) {\n newMessage = stripInlineMediaFromSingleMessage(newMessage);\n } else if (isContentMedia(message)) {\n newMessage = stripInlineMediaFromSingleMessage(message);\n }\n }\n return newMessage ?? message;\n });\n return stripped;\n}\n\n/**\n * Truncate an array of messages to fit within a byte limit.\n *\n * Strategy:\n * - Always keeps only the last (newest) message\n * - Strips inline media from the message\n * - Truncates the message content if it exceeds the byte limit\n *\n * @param messages - Array of messages to truncate\n * @param maxBytes - Maximum total byte limit for the message\n * @returns Array containing only the last message (possibly truncated)\n *\n * @example\n * ```ts\n * const messages = [msg1, msg2, msg3, msg4]; // newest is msg4\n * const truncated = truncateMessagesByBytes(messages, 10000);\n * // Returns [msg4] (truncated if needed)\n * ```\n */\nfunction truncateMessagesByBytes(messages: unknown[], maxBytes: number): unknown[] {\n // Early return for empty or invalid input\n if (!Array.isArray(messages) || messages.length === 0) {\n return messages;\n }\n\n // The result is always a single-element array that callers wrap with\n // JSON.stringify([message]), so subtract the 2-byte array wrapper (\"[\" and \"]\")\n // to ensure the final serialized value stays under the limit.\n const effectiveMaxBytes = maxBytes - 2;\n\n // Always keep only the last message\n const lastMessage = messages[messages.length - 1];\n\n // Strip inline media from the single message\n const stripped = stripInlineMediaFromMessages([lastMessage]);\n const strippedMessage = stripped[0];\n\n // Check if it fits\n const messageBytes = jsonBytes(strippedMessage);\n if (messageBytes <= effectiveMaxBytes) {\n return stripped;\n }\n\n // Truncate the single message if needed\n return truncateSingleMessage(strippedMessage, effectiveMaxBytes);\n}\n\n/**\n * Truncate GenAI messages using the default byte limit.\n *\n * Convenience wrapper around `truncateMessagesByBytes` with the default limit.\n *\n * @param messages - Array of messages to truncate\n * @returns Truncated array of messages\n */\nexport function truncateGenAiMessages(messages: unknown[]): unknown[] {\n return truncateMessagesByBytes(messages, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n\n/**\n * Truncate GenAI string input using the default byte limit.\n *\n * @param input - The string to truncate\n * @returns Truncated string\n */\nexport function truncateGenAiStringInput(input: string): string {\n return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n","/**\n * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.)\n */\nimport { captureException } from '../../exports';\nimport { getClient } from '../../currentScopes';\nimport type { Span } from '../../types-hoist/span';\nimport { isThenable } from '../../utils/is';\nimport {\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from './gen-ai-attributes';\nimport { truncateGenAiMessages, truncateGenAiStringInput } from './messageTruncation';\n\nexport interface AIRecordingOptions {\n recordInputs?: boolean;\n recordOutputs?: boolean;\n}\n\n/**\n * A method registry entry describes a single instrumented method:\n * which gen_ai operation it maps to and whether it is intrinsically streaming.\n */\nexport interface InstrumentedMethodEntry {\n /** Operation name (e.g. 'chat', 'embeddings', 'generate_content') */\n operation: string;\n /** True if the method itself is always streaming (not param-based) */\n streaming?: boolean;\n}\n\n/**\n * Maps method paths to their registry entries.\n * Used by proxy-based AI client instrumentations to determine which methods\n * to instrument, what operation name to use, and whether they stream.\n */\nexport type InstrumentedMethodRegistry = Record;\n\n/**\n * Resolves AI recording options by falling back to the client's `sendDefaultPii` setting.\n * Precedence: explicit option > sendDefaultPii > false\n */\nexport function resolveAIRecordingOptions(options?: T): T & Required {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n return {\n ...options,\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n } as T & Required;\n}\n\n/**\n * Build method path from current traversal\n */\nexport function buildMethodPath(currentPath: string, prop: string): string {\n return currentPath ? `${currentPath}.${prop}` : prop;\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param cachedInputTokens - The number of cached input tokens\n * @param cachedOutputTokens - The number of cached output tokens\n */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n cachedInputTokens?: number,\n cachedOutputTokens?: number,\n): void {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (\n promptTokens !== undefined ||\n completionTokens !== undefined ||\n cachedInputTokens !== undefined ||\n cachedOutputTokens !== undefined\n ) {\n /**\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n const totalTokens =\n (promptTokens ?? 0) + (completionTokens ?? 0) + (cachedInputTokens ?? 0) + (cachedOutputTokens ?? 0);\n\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Get the truncated JSON string for a string or array of strings.\n *\n * @param value - The string or array of strings to truncate\n * @returns The truncated JSON string\n */\nexport function getTruncatedJsonString(value: T | T[]): string {\n if (typeof value === 'string') {\n // Some values are already JSON strings, so we don't need to duplicate the JSON parsing\n return truncateGenAiStringInput(value);\n }\n if (Array.isArray(value)) {\n // truncateGenAiMessages returns an array of strings, so we need to stringify it\n const truncatedMessages = truncateGenAiMessages(value);\n return JSON.stringify(truncatedMessages);\n }\n // value is an object, so we need to stringify it\n return JSON.stringify(value);\n}\n\n/**\n * Extract system instructions from messages array.\n * Finds the first system message and formats it according to OpenTelemetry semantic conventions.\n *\n * @param messages - Array of messages to extract system instructions from\n * @returns systemInstructions (JSON string) and filteredMessages (without system message)\n */\nexport function extractSystemInstructions(messages: unknown[] | unknown): {\n systemInstructions: string | undefined;\n filteredMessages: unknown[] | unknown;\n} {\n if (!Array.isArray(messages)) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessageIndex = messages.findIndex(\n msg => msg && typeof msg === 'object' && 'role' in msg && (msg as { role: string }).role === 'system',\n );\n\n if (systemMessageIndex === -1) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessage = messages[systemMessageIndex] as { role: string; content?: string | unknown };\n const systemContent =\n typeof systemMessage.content === 'string'\n ? systemMessage.content\n : systemMessage.content !== undefined\n ? JSON.stringify(systemMessage.content)\n : undefined;\n\n if (!systemContent) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemInstructions = JSON.stringify([{ type: 'text', content: systemContent }]);\n const filteredMessages = [...messages.slice(0, systemMessageIndex), ...messages.slice(systemMessageIndex + 1)];\n\n return { systemInstructions, filteredMessages };\n}\n\n/**\n * Creates a wrapped version of .withResponse() that replaces the data field\n * with the instrumented result while preserving metadata (response, request_id).\n */\nasync function createWithResponseWrapper(\n originalWithResponse: Promise,\n instrumentedPromise: Promise,\n mechanismType: string,\n): Promise {\n // Attach catch handler to originalWithResponse immediately to prevent unhandled rejection\n // If instrumentedPromise rejects first, we still need this handled\n const safeOriginalWithResponse = originalWithResponse.catch(error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: mechanismType,\n },\n });\n throw error;\n });\n\n const instrumentedResult = await instrumentedPromise;\n const originalWrapper = await safeOriginalWithResponse;\n\n // Combine instrumented result with original metadata\n if (originalWrapper && typeof originalWrapper === 'object' && 'data' in originalWrapper) {\n return {\n ...originalWrapper,\n data: instrumentedResult,\n };\n }\n return instrumentedResult;\n}\n\n/**\n * Wraps a promise-like object to preserve additional methods (like .withResponse())\n * that AI SDK clients (OpenAI, Anthropic) attach to their APIPromise return values.\n *\n * Standard Promise methods (.then, .catch, .finally) are routed to the instrumented\n * promise to preserve Sentry's span instrumentation, while custom SDK methods are\n * forwarded to the original promise to maintain the SDK's API surface.\n */\nexport function wrapPromiseWithMethods(\n originalPromiseLike: Promise,\n instrumentedPromise: Promise,\n mechanismType: string,\n): Promise {\n // If the original result is not thenable, return the instrumented promise\n if (!isThenable(originalPromiseLike)) {\n return instrumentedPromise;\n }\n\n // Create a proxy that forwards Promise methods to instrumentedPromise\n // and preserves additional methods from the original result\n return new Proxy(originalPromiseLike, {\n get(target: object, prop: string | symbol): unknown {\n // For standard Promise methods (.then, .catch, .finally, Symbol.toStringTag),\n // use instrumentedPromise to preserve Sentry instrumentation.\n // For custom methods (like .withResponse()), use the original target.\n const useInstrumentedPromise = prop in Promise.prototype || prop === Symbol.toStringTag;\n const source = useInstrumentedPromise ? instrumentedPromise : target;\n\n const value = Reflect.get(source, prop) as unknown;\n\n // Special handling for .withResponse() to preserve instrumentation\n // .withResponse() returns { data: T, response: Response, request_id: string }\n if (prop === 'withResponse' && typeof value === 'function') {\n return function wrappedWithResponse(this: unknown): unknown {\n const originalWithResponse = (value as (...args: unknown[]) => unknown).call(target);\n return createWithResponseWrapper(originalWithResponse, instrumentedPromise, mechanismType);\n };\n }\n\n return typeof value === 'function' ? value.bind(source) : value;\n },\n }) as Promise;\n}\n","/* eslint-disable max-lines */\n/**\n * AI SDK Telemetry Attributes\n * Based on https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\n\n// =============================================================================\n// COMMON ATTRIBUTES\n// =============================================================================\n\n/**\n * Common attribute for operation name across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nexport const OPERATION_NAME_ATTRIBUTE = 'operation.name';\n\n/**\n * Common attribute for AI operation ID across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nexport const AI_OPERATION_ID_ATTRIBUTE = 'ai.operationId';\n\n// =============================================================================\n// SHARED ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n * `streamText` function - `ai.streamText` span\n *\n * The prompt that was used when calling the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_PROMPT_ATTRIBUTE = 'ai.prompt';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The JSON schema version of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_ATTRIBUTE = 'ai.schema';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The name of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_NAME_ATTRIBUTE = 'ai.schema.name';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The description of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SCHEMA_DESCRIPTION_ATTRIBUTE = 'ai.schema.description';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object that was generated (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object generation mode, e.g. `json`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SETTINGS_MODE_ATTRIBUTE = 'ai.settings.mode';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The output type that was used, e.g. `object` or `no-schema`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_SETTINGS_OUTPUT_ATTRIBUTE = 'ai.settings.output';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * The values that were passed into the function (array)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_VALUES_ATTRIBUTE = 'ai.values';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * An array of JSON-stringified embeddings\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_EMBEDDINGS_ATTRIBUTE = 'ai.embeddings';\n\n// =============================================================================\n// GENERATETEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The text that was generated\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_TEXT_ATTRIBUTE = 'ai.response.text';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The tool calls that were made as part of the generation (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'ai.response.toolCalls';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The reason why the generation finished\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_RESPONSE_FINISH_REASON_ATTRIBUTE = 'ai.response.finishReason';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The maximum number of steps that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_SETTINGS_MAX_STEPS_ATTRIBUTE = 'ai.settings.maxSteps';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The format of the prompt\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_FORMAT_ATTRIBUTE = 'ai.prompt.format';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The messages that were passed into the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_MESSAGES_ATTRIBUTE = 'ai.prompt.messages';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * Array of stringified tool definitions\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The stringified tool choice setting (JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_PROMPT_TOOL_CHOICE_ATTRIBUTE = 'ai.prompt.toolChoice';\n\n// =============================================================================\n// STREAMTEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the first chunk in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE = 'ai.response.msToFirstChunk';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The time it took to receive the finish part of the LLM stream in milliseconds\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE = 'ai.response.msToFinish';\n\n/**\n * `streamText` function - `ai.streamText.doStream` span\n *\n * The average completion tokens per second\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE = 'ai.response.avgCompletionTokensPerSecond';\n\n// =============================================================================\n// EMBED FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `embed` function - `ai.embed` span\n *\n * The value that was passed into the `embed` function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_VALUE_ATTRIBUTE = 'ai.value';\n\n/**\n * `embed` function - `ai.embed` span\n *\n * A JSON-stringified embedding\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBEDDING_ATTRIBUTE = 'ai.embedding';\n\n// =============================================================================\n// BASIC LLM SPAN INFORMATION\n// =============================================================================\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The functionId that was set through `telemetry.functionId`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const RESOURCE_NAME_ATTRIBUTE = 'resource.name';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The id of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_MODEL_ID_ATTRIBUTE = 'ai.model.id';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The provider of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_MODEL_PROVIDER_ATTRIBUTE = 'ai.model.provider';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The request headers that were passed in through `headers`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_REQUEST_HEADERS_ATTRIBUTE = 'ai.request.headers';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * Provider specific metadata returned with the generation response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The maximum number of retries that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_SETTINGS_MAX_RETRIES_ATTRIBUTE = 'ai.settings.maxRetries';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of cached input tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = 'ai.usage.cachedInputTokens';\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The functionId that was set through `telemetry.functionId`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The metadata that was passed in through `telemetry.metadata`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_TELEMETRY_METADATA_ATTRIBUTE = 'ai.telemetry.metadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'ai.usage.completionTokens';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nexport const AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens';\n\n// =============================================================================\n// CALL LLM SPAN INFORMATION\n// =============================================================================\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_MODEL_ATTRIBUTE = 'ai.response.model';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_ID_ATTRIBUTE = 'ai.response.id';\n\n/**\n * Call LLM span information\n * Individual LLM call spans\n *\n * The timestamp of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'ai.response.timestamp';\n\n// =============================================================================\n// SEMANTIC CONVENTIONS FOR GENAI OPERATIONS\n// =============================================================================\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The provider that was used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was requested\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The temperature that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The maximum number of tokens that were set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The frequency penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The presence penalty that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topK parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The topP parameter value that was set\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The stop sequences\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The finish reasons that were returned by the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The model that was used to generate the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The id of the response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * Semantic Conventions for GenAI operations\n * Individual LLM call spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#call-llm-span-information\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n// =============================================================================\n// BASIC EMBEDDING SPAN INFORMATION\n// =============================================================================\n\n/**\n * Basic embedding span information\n * Embedding spans\n *\n * The number of tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-embedding-span-information\n */\nexport const AI_USAGE_TOKENS_ATTRIBUTE = 'ai.usage.tokens';\n\n// =============================================================================\n// TOOL CALL SPANS\n// =============================================================================\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The name of the tool\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_NAME_ATTRIBUTE = 'ai.toolCall.name';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The id of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_ID_ATTRIBUTE = 'ai.toolCall.id';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The parameters of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_ARGS_ATTRIBUTE = 'ai.toolCall.args';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The result of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result';\n\n// =============================================================================\n// SPAN ATTRIBUTE OBJECTS\n// =============================================================================\n\n/**\n * Attributes collected for `ai.generateText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n AI_RESPONSE_TEXT: AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS: AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_RESPONSE_FINISH_REASON: AI_RESPONSE_FINISH_REASON_ATTRIBUTE,\n AI_SETTINGS_MAX_STEPS: AI_SETTINGS_MAX_STEPS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateText.doGenerate` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nexport const AI_GENERATE_TEXT_DO_GENERATE_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_FORMAT: AI_PROMPT_FORMAT_ATTRIBUTE,\n AI_PROMPT_MESSAGES: AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS: AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_PROMPT_TOOL_CHOICE: AI_PROMPT_TOOL_CHOICE_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT: AI_PROMPT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamText.doStream` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nexport const AI_STREAM_TEXT_DO_STREAM_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FIRST_CHUNK: AI_RESPONSE_MS_TO_FIRST_CHUNK_ATTRIBUTE,\n AI_RESPONSE_MS_TO_FINISH: AI_RESPONSE_MS_TO_FINISH_ATTRIBUTE,\n AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND: AI_RESPONSE_AVG_COMPLETION_TOKENS_PER_SECOND_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n // Call LLM span information\n AI_RESPONSE_MODEL: AI_RESPONSE_MODEL_ATTRIBUTE,\n AI_RESPONSE_ID: AI_RESPONSE_ID_ATTRIBUTE,\n AI_RESPONSE_TIMESTAMP: AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n // Semantic Conventions for GenAI operations\n GEN_AI_SYSTEM: GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL: GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE: GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS: GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY: GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY: GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K: GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P: GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_REQUEST_STOP_SEQUENCES: GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS: GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL: GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_ID: GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS: GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS: GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.generateObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n */\nexport const AI_GENERATE_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.streamObject` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nexport const AI_STREAM_OBJECT_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_SCHEMA: AI_SCHEMA_ATTRIBUTE,\n AI_SCHEMA_NAME: AI_SCHEMA_NAME_ATTRIBUTE,\n AI_SCHEMA_DESCRIPTION: AI_SCHEMA_DESCRIPTION_ATTRIBUTE,\n AI_RESPONSE_OBJECT: AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_SETTINGS_MODE: AI_SETTINGS_MODE_ATTRIBUTE,\n AI_SETTINGS_OUTPUT: AI_SETTINGS_OUTPUT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS: AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS: AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUE: AI_VALUE_ATTRIBUTE,\n AI_EMBEDDING: AI_EMBEDDING_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embed.doEmbed` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n */\nexport const AI_EMBED_DO_EMBED_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.embedMany` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nexport const AI_EMBED_MANY_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_VALUES: AI_VALUES_ATTRIBUTE,\n AI_EMBEDDINGS: AI_EMBEDDINGS_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n // Basic embedding span information\n AI_USAGE_TOKENS: AI_USAGE_TOKENS_ATTRIBUTE,\n} as const;\n\n/**\n * Attributes collected for `ai.toolCall` span\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nexport const AI_TOOL_CALL_SPAN_ATTRIBUTES = {\n OPERATION_NAME: OPERATION_NAME_ATTRIBUTE,\n AI_OPERATION_ID: AI_OPERATION_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME: AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_ID: AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS: AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_RESULT: AI_TOOL_CALL_RESULT_ATTRIBUTE,\n // Basic LLM span information\n RESOURCE_NAME: RESOURCE_NAME_ATTRIBUTE,\n AI_MODEL_ID: AI_MODEL_ID_ATTRIBUTE,\n AI_MODEL_PROVIDER: AI_MODEL_PROVIDER_ATTRIBUTE,\n AI_REQUEST_HEADERS: AI_REQUEST_HEADERS_ATTRIBUTE,\n AI_SETTINGS_MAX_RETRIES: AI_SETTINGS_MAX_RETRIES_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID: AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TELEMETRY_METADATA: AI_TELEMETRY_METADATA_ATTRIBUTE,\n} as const;\n\n// =============================================================================\n// PROVIDER METADATA\n// =============================================================================\n\n/**\n * OpenAI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/openai-chat-language-model.ts#L397-L416\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/responses/openai-responses-language-model.ts#L377C7-L384\n */\nexport interface OpenAiProviderMetadata {\n /**\n * The number of predicted output tokens that were accepted.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n acceptedPredictionTokens?: number;\n\n /**\n * The number of predicted output tokens that were rejected.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#predicted-outputs\n */\n rejectedPredictionTokens?: number;\n\n /**\n * The number of reasoning tokens that the model generated.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n reasoningTokens?: number;\n\n /**\n * The number of prompt tokens that were a cache hit.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n */\n cachedPromptTokens?: number;\n\n /**\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai#responses-models\n *\n * The ID of the response. Can be used to continue a conversation.\n */\n responseId?: string;\n}\n\n/**\n * Anthropic Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/anthropic/src/anthropic-messages-language-model.ts#L346-L352\n */\ninterface AnthropicProviderMetadata {\n /**\n * The number of tokens that were used to create the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheCreationInputTokens?: number;\n\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/anthropic#cache-control\n */\n cacheReadInputTokens?: number;\n\n /**\n * Usage metrics for the Anthropic model.\n */\n usage?: {\n input_tokens: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n cache_creation?: {\n ephemeral_5m_input_tokens?: number;\n ephemeral_1h_input_tokens?: number;\n };\n output_tokens?: number;\n service_tier?: string;\n };\n}\n\n/**\n * Amazon Bedrock Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/amazon-bedrock/src/bedrock-chat-language-model.ts#L263-L280\n */\ninterface AmazonBedrockProviderMetadata {\n /**\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseTrace.html\n */\n trace?: {\n /**\n * The guardrail trace object.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailTraceAssessment.html\n *\n * This was purposely left as unknown as it's a complex object. This can be typed in the future\n * if the SDK decides to support bedrock in a more advanced way.\n */\n guardrail?: unknown;\n /**\n * The request's prompt router.\n * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_PromptRouterTrace.html\n */\n promptRouter?: {\n /**\n * The ID of the invoked model.\n */\n invokedModelId?: string;\n };\n };\n usage?: {\n /**\n * The number of tokens that were read from the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheReadInputTokens?: number;\n\n /**\n * The number of tokens that were written to the cache.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/amazon-bedrock#cache-points\n */\n cacheWriteInputTokens?: number;\n };\n}\n\n/**\n * Google Generative AI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai\n */\nexport interface GoogleGenerativeAIProviderMetadata {\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-prompt.ts#L28-L30\n */\n groundingMetadata: null | {\n /**\n * Array of search queries used to retrieve information\n * @example [\"What's the weather in Chicago this weekend?\"]\n *\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n webSearchQueries: string[] | null;\n /**\n * Contains the main search result content used as an entry point\n * The `renderedContent` field contains the formatted content\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n searchEntryPoint?: {\n renderedContent: string;\n } | null;\n /**\n * Contains details about how specific response parts are supported by search results\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai#search-grounding\n */\n groundingSupports: Array<{\n /**\n * Information about the grounded text segment.\n */\n segment: {\n /**\n * The start index of the text segment.\n */\n startIndex?: number | null;\n /**\n * The end index of the text segment.\n */\n endIndex?: number | null;\n /**\n * The actual text segment.\n */\n text?: string | null;\n };\n /**\n * References to supporting search result chunks.\n */\n groundingChunkIndices?: number[] | null;\n /**\n * Confidence scores (0-1) for each supporting chunk.\n */\n confidenceScores?: number[] | null;\n }> | null;\n };\n /**\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/google/src/google-generative-ai-language-model.ts#L620-L627\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters\n */\n safetyRatings?: null | unknown;\n}\n\n/**\n * DeepSeek Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek\n */\ninterface DeepSeekProviderMetadata {\n /**\n * The number of tokens that were cache hits.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheHitTokens?: number;\n\n /**\n * The number of tokens that were cache misses.\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/deepseek#cache-token-usage\n */\n promptCacheMissTokens?: number;\n}\n\n/**\n * Perplexity Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/perplexity\n */\ninterface PerplexityProviderMetadata {\n /**\n * Object containing citationTokens and numSearchQueries metrics\n */\n usage?: {\n citationTokens?: number;\n numSearchQueries?: number;\n };\n /**\n * Array of image URLs when return_images is enabled.\n *\n * You can enable image responses by setting return_images: true in the provider options.\n * This feature is only available to Perplexity Tier-2 users and above.\n */\n images?: Array<{\n imageUrl?: string;\n originUrl?: string;\n height?: number;\n width?: number;\n }>;\n}\n\nexport interface ProviderMetadata {\n openai?: OpenAiProviderMetadata;\n azure?: OpenAiProviderMetadata; // v6: Azure Responses API uses 'azure' key instead of 'openai'\n anthropic?: AnthropicProviderMetadata;\n bedrock?: AmazonBedrockProviderMetadata;\n google?: GoogleGenerativeAIProviderMetadata;\n vertex?: GoogleGenerativeAIProviderMetadata; // v6: Google Vertex uses 'vertex' key instead of 'google'\n deepseek?: DeepSeekProviderMetadata;\n perplexity?: PerplexityProviderMetadata;\n}\n","import type { TraceContext } from '../../types-hoist/context';\nimport type { Span, SpanAttributes, SpanJSON } from '../../types-hoist/span';\nimport {\n GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE,\n GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport { toolCallSpanContextMap } from './constants';\nimport type { TokenSummary, ToolCallSpanContext } from './types';\nimport { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes';\n\n/**\n * Accumulates token data from a span to its parent in the token accumulator map.\n * This function extracts token usage from the current span and adds it to the\n * accumulated totals for its parent span.\n */\nexport function accumulateTokensForParent(span: SpanJSON, tokenAccumulator: Map): void {\n const parentSpanId = span.parent_span_id;\n if (!parentSpanId) {\n return;\n }\n\n const inputTokens = span.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n const outputTokens = span.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE];\n\n if (typeof inputTokens === 'number' || typeof outputTokens === 'number') {\n const existing = tokenAccumulator.get(parentSpanId) || { inputTokens: 0, outputTokens: 0 };\n\n if (typeof inputTokens === 'number') {\n existing.inputTokens += inputTokens;\n }\n if (typeof outputTokens === 'number') {\n existing.outputTokens += outputTokens;\n }\n\n tokenAccumulator.set(parentSpanId, existing);\n }\n}\n\n/**\n * Applies accumulated token data to the `gen_ai.invoke_agent` span.\n * Only immediate children of the `gen_ai.invoke_agent` span are considered,\n * since aggregation will automatically occur for each parent span.\n */\nexport function applyAccumulatedTokens(\n spanOrTrace: SpanJSON | TraceContext,\n tokenAccumulator: Map,\n): void {\n const accumulated = tokenAccumulator.get(spanOrTrace.span_id);\n if (!accumulated || !spanOrTrace.data) {\n return;\n }\n\n if (accumulated.inputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = accumulated.inputTokens;\n }\n if (accumulated.outputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = accumulated.outputTokens;\n }\n if (accumulated.inputTokens > 0 || accumulated.outputTokens > 0) {\n spanOrTrace.data['gen_ai.usage.total_tokens'] = accumulated.inputTokens + accumulated.outputTokens;\n }\n}\n\n/**\n * Builds a map of tool name -> description from all spans with available_tools.\n * This avoids O(n²) iteration and repeated JSON parsing.\n */\nfunction buildToolDescriptionMap(spans: SpanJSON[]): Map {\n const toolDescriptions = new Map();\n\n for (const span of spans) {\n const availableTools = span.data[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE];\n if (typeof availableTools !== 'string') {\n continue;\n }\n try {\n const tools = JSON.parse(availableTools) as Array<{ name?: string; description?: string }>;\n for (const tool of tools) {\n if (tool.name && tool.description && !toolDescriptions.has(tool.name)) {\n toolDescriptions.set(tool.name, tool.description);\n }\n }\n } catch {\n // ignore parse errors\n }\n }\n\n return toolDescriptions;\n}\n\n/**\n * Applies tool descriptions and accumulated tokens to spans in a single pass.\n *\n * - For `gen_ai.execute_tool` spans: looks up tool description from\n * `gen_ai.request.available_tools` on sibling spans\n * - For `gen_ai.invoke_agent` spans: applies accumulated token data from children\n */\nexport function applyToolDescriptionsAndTokens(spans: SpanJSON[], tokenAccumulator: Map): void {\n // Build lookup map once to avoid O(n²) iteration and repeated JSON parsing\n const toolDescriptions = buildToolDescriptionMap(spans);\n\n for (const span of spans) {\n if (span.op === 'gen_ai.execute_tool') {\n const toolName = span.data[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (typeof toolName === 'string') {\n const description = toolDescriptions.get(toolName);\n if (description) {\n span.data[GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE] = description;\n }\n }\n }\n\n if (span.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(span, tokenAccumulator);\n }\n }\n}\n\n/**\n * Get the span context associated with a tool call ID.\n */\nexport function _INTERNAL_getSpanContextForToolCallId(toolCallId: string): ToolCallSpanContext | undefined {\n return toolCallSpanContextMap.get(toolCallId);\n}\n\n/**\n * Clean up the span mapping for a tool call ID\n */\nexport function _INTERNAL_cleanupToolCallSpanContext(toolCallId: string): void {\n toolCallSpanContextMap.delete(toolCallId);\n}\n\n/**\n * Convert an array of tool strings to a JSON string\n */\nexport function convertAvailableToolsToJsonString(tools: unknown[]): string {\n const toolObjects = tools.map(tool => {\n if (typeof tool === 'string') {\n try {\n return JSON.parse(tool);\n } catch {\n return tool;\n }\n }\n return tool;\n });\n return JSON.stringify(toolObjects);\n}\n\n/**\n * Filter out invalid entries in messages array\n * @param input - The input array to filter\n * @returns The filtered array\n */\nfunction filterMessagesArray(input: unknown[]): { role: string; content: string }[] {\n return input.filter(\n (m: unknown): m is { role: string; content: string } =>\n !!m && typeof m === 'object' && 'role' in m && 'content' in m,\n );\n}\n\n/**\n * Normalize the user input (stringified object with prompt, system, messages) to messages array\n */\nexport function convertUserInputToMessagesFormat(userInput: string): { role: string; content: string }[] {\n try {\n const p = JSON.parse(userInput);\n if (!!p && typeof p === 'object') {\n let { messages } = p;\n const { prompt, system } = p;\n const result: { role: string; content: string }[] = [];\n\n // prepend top-level system instruction if present\n if (typeof system === 'string') {\n result.push({ role: 'system', content: system });\n }\n\n // stringified messages array\n if (typeof messages === 'string') {\n try {\n messages = JSON.parse(messages);\n } catch {\n // ignore parse errors\n }\n }\n\n // messages array format: { messages: [...] }\n if (Array.isArray(messages)) {\n result.push(...filterMessagesArray(messages));\n return result;\n }\n\n // prompt array format: { prompt: [...] }\n if (Array.isArray(prompt)) {\n result.push(...filterMessagesArray(prompt));\n return result;\n }\n\n // prompt string format: { prompt: \"...\" }\n if (typeof prompt === 'string') {\n result.push({ role: 'user', content: prompt });\n }\n\n if (result.length > 0) {\n return result;\n }\n }\n // eslint-disable-next-line no-empty\n } catch {}\n return [];\n}\n\n/**\n * Generate a request.messages JSON array from the prompt field in the\n * invoke_agent op\n */\nexport function requestMessagesFromPrompt(span: Span, attributes: SpanAttributes): void {\n if (\n typeof attributes[AI_PROMPT_ATTRIBUTE] === 'string' &&\n !attributes[GEN_AI_INPUT_MESSAGES_ATTRIBUTE] &&\n !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]\n ) {\n // No messages array is present, so we need to convert the prompt to the proper messages format\n // This is the case for ai.generateText spans\n // The ai.prompt attribute is a stringified object with prompt, system, messages attributes\n // The format of these is described in the vercel docs, for instance: https://ai-sdk.dev/docs/reference/ai-sdk-core/stream-object#parameters\n const userInput = attributes[AI_PROMPT_ATTRIBUTE];\n const messages = convertUserInputToMessagesFormat(userInput);\n if (messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n } else if (typeof attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') {\n // In this case we already get a properly formatted messages array, this is the preferred way to get the messages\n // This is the case for ai.generateText.doGenerate spans\n try {\n const messages = JSON.parse(attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]);\n if (Array.isArray(messages)) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n // eslint-disable-next-line no-empty\n } catch {}\n }\n}\n\n/**\n * Maps a Vercel AI span name to the corresponding Sentry op.\n */\nexport function getSpanOpFromName(name: string): string | undefined {\n switch (name) {\n case 'ai.generateText':\n case 'ai.streamText':\n case 'ai.generateObject':\n case 'ai.streamObject':\n return GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE;\n case 'ai.generateText.doGenerate':\n return GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamText.doStream':\n return GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.generateObject.doGenerate':\n return GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamObject.doStream':\n return GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.embed.doEmbed':\n return GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.embedMany.doEmbed':\n return GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.rerank.doRerank':\n return GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE;\n case 'ai.toolCall':\n return GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE;\n default:\n if (name.startsWith('ai.stream')) {\n return 'ai.run';\n }\n return undefined;\n }\n}\n","/* eslint-disable max-lines */\nimport type { Client } from '../../client';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { Event } from '../../types-hoist/event';\nimport type { Span, SpanAttributes, SpanAttributeValue, SpanJSON } from '../../types-hoist/span';\nimport { spanToJSON } from '../../utils/spanUtils';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_CALL_ID_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n GEN_AI_TOOL_TYPE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport {\n DO_SPAN_NAME_PREFIX,\n EMBEDDINGS_OPS,\n GENERATE_CONTENT_OPS,\n INVOKE_AGENT_OPS,\n RERANK_OPS,\n toolCallSpanContextMap,\n} from './constants';\nimport type { TokenSummary } from './types';\nimport {\n accumulateTokensForParent,\n applyAccumulatedTokens,\n applyToolDescriptionsAndTokens,\n convertAvailableToolsToJsonString,\n getSpanOpFromName,\n requestMessagesFromPrompt,\n} from './utils';\nimport type { OpenAiProviderMetadata, ProviderMetadata } from './vercel-ai-attributes';\nimport {\n AI_MODEL_ID_ATTRIBUTE,\n AI_OPERATION_ID_ATTRIBUTE,\n AI_PROMPT_MESSAGES_ATTRIBUTE,\n AI_PROMPT_TOOLS_ATTRIBUTE,\n AI_RESPONSE_FINISH_REASON_ATTRIBUTE,\n AI_RESPONSE_OBJECT_ATTRIBUTE,\n AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE,\n AI_RESPONSE_TEXT_ATTRIBUTE,\n AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n AI_SCHEMA_ATTRIBUTE,\n AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE,\n AI_TOOL_CALL_ARGS_ATTRIBUTE,\n AI_TOOL_CALL_ID_ATTRIBUTE,\n AI_TOOL_CALL_NAME_ATTRIBUTE,\n AI_TOOL_CALL_RESULT_ATTRIBUTE,\n AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE,\n AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n AI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n AI_USAGE_TOKENS_ATTRIBUTE,\n AI_VALUES_ATTRIBUTE,\n OPERATION_NAME_ATTRIBUTE,\n} from './vercel-ai-attributes';\n\n/**\n * Maps Vercel AI SDK operation names to OpenTelemetry semantic convention values\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction mapVercelAiOperationName(operationName: string): string {\n // Top-level pipeline operations map to invoke_agent\n if (INVOKE_AGENT_OPS.has(operationName)) {\n return 'invoke_agent';\n }\n // .do* operations are the actual LLM calls\n if (GENERATE_CONTENT_OPS.has(operationName)) {\n return 'generate_content';\n }\n if (EMBEDDINGS_OPS.has(operationName)) {\n return 'embeddings';\n }\n if (RERANK_OPS.has(operationName)) {\n return 'rerank';\n }\n if (operationName === 'ai.toolCall') {\n return 'execute_tool';\n }\n // Return the original value for unknown operations\n return operationName;\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n * This is supposed to be used in `client.on('spanStart', ...)\n */\nfunction onVercelAiSpanStart(span: Span): void {\n const { data: attributes, description: name } = spanToJSON(span);\n\n if (!name) {\n return;\n }\n\n // Tool call spans\n // https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n if (attributes[AI_TOOL_CALL_NAME_ATTRIBUTE] && attributes[AI_TOOL_CALL_ID_ATTRIBUTE] && name === 'ai.toolCall') {\n processToolCallSpan(span, attributes);\n return;\n }\n\n // V6+ Check if this is a Vercel AI span by checking if the operation ID attribute is present.\n // V5+ Check if this is a Vercel AI span by name pattern.\n if (!attributes[AI_OPERATION_ID_ATTRIBUTE] && !name.startsWith('ai.')) {\n return;\n }\n\n processGenerateSpan(span, name, attributes);\n}\n\nfunction vercelAiEventProcessor(event: Event): Event {\n if (event.type === 'transaction' && event.spans) {\n // Map to accumulate token data by parent span ID\n const tokenAccumulator: Map = new Map();\n\n // First pass: process all spans and accumulate token data\n for (const span of event.spans) {\n processEndedVercelAiSpan(span);\n\n // Accumulate token data for parent spans\n accumulateTokensForParent(span, tokenAccumulator);\n }\n\n // Second pass: apply tool descriptions and accumulated tokens\n applyToolDescriptionsAndTokens(event.spans, tokenAccumulator);\n\n // Also apply to root when it is the invoke_agent pipeline\n const trace = event.contexts?.trace;\n if (trace?.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(trace, tokenAccumulator);\n }\n }\n\n return event;\n}\n\n/**\n * Tool call structure from Vercel AI SDK\n * Note: V5/V6 use 'input' for arguments, V4 and earlier use 'args'\n */\ninterface VercelToolCall {\n toolCallId: string;\n toolName: string;\n input?: Record | string; // V5/V6\n args?: string; // V4 and earlier\n}\n\n/**\n * Normalize finish reason to match OpenTelemetry semantic conventions.\n * Valid values: \"stop\", \"length\", \"content_filter\", \"tool_call\", \"error\"\n *\n * Vercel AI SDK uses \"tool-calls\" (plural, with hyphen) which we map to \"tool_call\".\n */\nfunction normalizeFinishReason(finishReason: unknown): string {\n if (typeof finishReason !== 'string') {\n return 'stop';\n }\n\n // Map Vercel AI SDK finish reasons to OpenTelemetry semantic convention values\n switch (finishReason) {\n case 'tool-calls':\n return 'tool_call';\n case 'stop':\n case 'length':\n case 'content_filter':\n case 'error':\n return finishReason;\n default:\n // For unknown values, return as-is (schema allows arbitrary strings)\n return finishReason;\n }\n}\n\n/**\n * Build gen_ai.output.messages from ai.response.text and/or ai.response.toolCalls\n *\n * Format follows OpenTelemetry semantic conventions:\n * [{\"role\": \"assistant\", \"parts\": [...], \"finish_reason\": \"stop\"}]\n *\n * Parts can be:\n * - {\"type\": \"text\", \"content\": \"...\"}\n * - {\"type\": \"tool_call\", \"id\": \"...\", \"name\": \"...\", \"arguments\": \"...\"}\n */\nfunction buildOutputMessages(attributes: Record): void {\n const responseText = attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n const responseToolCalls = attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n const finishReason = attributes[AI_RESPONSE_FINISH_REASON_ATTRIBUTE];\n\n // Skip if neither text nor tool calls are present\n if (responseText == null && responseToolCalls == null) {\n return;\n }\n\n const parts: Array> = [];\n\n // Add text part if present\n if (typeof responseText === 'string' && responseText.length > 0) {\n parts.push({\n type: 'text',\n content: responseText,\n });\n }\n\n // Add tool call parts if present\n if (responseToolCalls != null) {\n try {\n // Tool calls can be a string (JSON) or already parsed array\n const toolCalls: VercelToolCall[] =\n typeof responseToolCalls === 'string' ? JSON.parse(responseToolCalls) : responseToolCalls;\n\n if (Array.isArray(toolCalls)) {\n for (const toolCall of toolCalls) {\n // V5/V6 use 'input', V4 and earlier use 'args'\n const args = toolCall.input ?? toolCall.args;\n parts.push({\n type: 'tool_call',\n id: toolCall.toolCallId,\n name: toolCall.toolName,\n // Handle undefined args: JSON.stringify(undefined) returns undefined, not a string,\n // which would cause the property to be omitted from the final JSON output\n arguments: typeof args === 'string' ? args : JSON.stringify(args ?? {}),\n });\n }\n // Only delete tool calls attribute if we successfully processed them\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n }\n } catch {\n // Ignore parsing errors - tool calls attribute is preserved\n }\n }\n\n // Only set output messages and delete text attribute if we have parts\n if (parts.length > 0) {\n const outputMessage = {\n role: 'assistant',\n parts,\n finish_reason: normalizeFinishReason(finishReason),\n };\n\n attributes[GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE] = JSON.stringify([outputMessage]);\n\n // Remove the text attribute since it's now captured in gen_ai.output.messages\n // Note: tool calls attribute is deleted above only if successfully parsed\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n }\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n */\nfunction processEndedVercelAiSpan(span: SpanJSON): void {\n const { data: attributes, origin } = span;\n\n if (origin !== 'auto.vercelai.otel') {\n return;\n }\n\n // The Vercel AI SDK sets span status to raw error message strings.\n // Any such value should be normalized to a SpanStatusType value. We pick internal_error as it is the most generic.\n if (span.status && span.status !== 'ok') {\n span.status = 'internal_error';\n }\n\n renameAttributeKey(attributes, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE);\n\n // Parent spans (ai.streamText, ai.streamObject, etc.) use inputTokens/outputTokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, 'ai.usage.inputTokens', GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, 'ai.usage.outputTokens', GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n\n // Embedding spans use ai.usage.tokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, AI_USAGE_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n\n // AI SDK uses avgOutputTokensPerSecond, map to our expected attribute name\n renameAttributeKey(attributes, 'ai.response.avgOutputTokensPerSecond', 'ai.response.avgCompletionTokensPerSecond');\n\n // Input tokens is the sum of prompt tokens and cached input tokens\n if (\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' &&\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE] === 'number'\n ) {\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] =\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] + attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE];\n }\n\n // Compute total tokens from input + output (embeddings may only have input tokens)\n if (typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number') {\n const outputTokens =\n typeof attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number'\n ? attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]\n : 0;\n attributes[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = outputTokens + attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n }\n\n // Convert the available tools array to a JSON string\n if (attributes[AI_PROMPT_TOOLS_ATTRIBUTE] && Array.isArray(attributes[AI_PROMPT_TOOLS_ATTRIBUTE])) {\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] = convertAvailableToolsToJsonString(\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] as unknown[],\n );\n }\n\n // Rename AI SDK attributes to standardized gen_ai attributes\n // Map operation.name to OpenTelemetry semantic convention values\n if (attributes[OPERATION_NAME_ATTRIBUTE]) {\n const operationName = mapVercelAiOperationName(attributes[OPERATION_NAME_ATTRIBUTE] as string);\n attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE] = operationName;\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[OPERATION_NAME_ATTRIBUTE];\n }\n renameAttributeKey(attributes, AI_PROMPT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE);\n\n // Build gen_ai.output.messages from response text and/or tool calls\n // Note: buildOutputMessages also removes the source attributes when output is successfully generated\n buildOutputMessages(attributes);\n\n renameAttributeKey(attributes, AI_RESPONSE_OBJECT_ATTRIBUTE, 'gen_ai.response.object');\n renameAttributeKey(attributes, AI_PROMPT_TOOLS_ATTRIBUTE, 'gen_ai.request.available_tools');\n\n renameAttributeKey(attributes, AI_TOOL_CALL_ARGS_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_RESULT_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE);\n\n renameAttributeKey(attributes, AI_SCHEMA_ATTRIBUTE, 'gen_ai.request.schema');\n renameAttributeKey(attributes, AI_MODEL_ID_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE);\n\n // Map embedding input: ai.values → gen_ai.embeddings.input\n // Vercel AI SDK JSON-stringifies each value individually, so we parse each element back.\n // Single embed gets unwrapped to a plain value; batch embedMany stays as a JSON array.\n if (Array.isArray(attributes[AI_VALUES_ATTRIBUTE])) {\n const parsed = (attributes[AI_VALUES_ATTRIBUTE] as string[]).map(v => {\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n });\n attributes[GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE] = parsed.length === 1 ? parsed[0] : JSON.stringify(parsed);\n }\n\n addProviderMetadataToAttributes(attributes);\n\n // Change attributes namespaced with `ai.X` to `vercel.ai.X`\n for (const key of Object.keys(attributes)) {\n if (key.startsWith('ai.')) {\n renameAttributeKey(attributes, key, `vercel.${key}`);\n }\n }\n}\n\n/**\n * Renames an attribute key in the provided attributes object if the old key exists.\n * This function safely handles null and undefined values.\n */\nfunction renameAttributeKey(attributes: Record, oldKey: string, newKey: string): void {\n if (attributes[oldKey] != null) {\n attributes[newKey] = attributes[oldKey];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[oldKey];\n }\n}\n\nfunction processToolCallSpan(span: Span, attributes: SpanAttributes): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'gen_ai.execute_tool');\n span.setAttribute(GEN_AI_OPERATION_NAME_ATTRIBUTE, 'execute_tool');\n renameAttributeKey(attributes, AI_TOOL_CALL_NAME_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE);\n\n // Store the span context in our global map using the tool call ID.\n // This allows us to capture tool errors and link them to the correct span\n // without retaining the full Span object in memory.\n const toolCallId = attributes[GEN_AI_TOOL_CALL_ID_ATTRIBUTE];\n\n if (typeof toolCallId === 'string') {\n toolCallSpanContextMap.set(toolCallId, span.spanContext());\n }\n\n // https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-type\n if (!attributes[GEN_AI_TOOL_TYPE_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_TOOL_TYPE_ATTRIBUTE, 'function');\n }\n const toolName = attributes[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (toolName) {\n span.updateName(`execute_tool ${toolName}`);\n }\n}\n\nfunction processGenerateSpan(span: Span, name: string, attributes: SpanAttributes): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n\n const nameWthoutAi = name.replace('ai.', '');\n span.setAttribute('ai.pipeline.name', nameWthoutAi);\n span.updateName(nameWthoutAi);\n\n const functionId = attributes[AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE];\n if (functionId && typeof functionId === 'string') {\n span.setAttribute('gen_ai.function_id', functionId);\n }\n\n requestMessagesFromPrompt(span, attributes);\n\n if (attributes[AI_MODEL_ID_ATTRIBUTE] && !attributes[GEN_AI_RESPONSE_MODEL_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, attributes[AI_MODEL_ID_ATTRIBUTE]);\n }\n span.setAttribute('ai.streaming', name.includes('stream'));\n\n // Set the op based on the span name\n const op = getSpanOpFromName(name);\n if (op) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n // For invoke_agent pipeline spans, use 'invoke_agent' as the description\n // to be consistent with other AI integrations (e.g. LangGraph)\n if (INVOKE_AGENT_OPS.has(name)) {\n if (functionId && typeof functionId === 'string') {\n span.updateName(`invoke_agent ${functionId}`);\n } else {\n span.updateName('invoke_agent');\n }\n return;\n }\n\n const modelId = attributes[AI_MODEL_ID_ATTRIBUTE];\n if (modelId) {\n const doSpanPrefix = GENERATE_CONTENT_OPS.has(name) ? 'generate_content' : DO_SPAN_NAME_PREFIX[name];\n if (doSpanPrefix) {\n span.updateName(`${doSpanPrefix} ${modelId}`);\n }\n }\n}\n\n/**\n * Add event processors to the given client to process Vercel AI spans.\n */\nexport function addVercelAiProcessors(client: Client): void {\n client.on('spanStart', onVercelAiSpanStart);\n // Note: We cannot do this on `spanEnd`, because the span cannot be mutated anymore at this point\n client.addEventProcessor(Object.assign(vercelAiEventProcessor, { id: 'VercelAiEventProcessor' }));\n}\n\nfunction addProviderMetadataToAttributes(attributes: SpanAttributes): void {\n const providerMetadata = attributes[AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] as string | undefined;\n if (providerMetadata) {\n try {\n const providerMetadataObject = JSON.parse(providerMetadata) as ProviderMetadata;\n\n // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure')\n const openaiMetadata: OpenAiProviderMetadata | undefined =\n providerMetadataObject.openai ?? providerMetadataObject.azure;\n if (openaiMetadata) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n openaiMetadata.cachedPromptTokens,\n );\n setAttributeIfDefined(attributes, 'gen_ai.usage.output_tokens.reasoning', openaiMetadata.reasoningTokens);\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_accepted',\n openaiMetadata.acceptedPredictionTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_rejected',\n openaiMetadata.rejectedPredictionTokens,\n );\n if (!attributes['gen_ai.conversation.id']) {\n setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId);\n }\n }\n\n if (providerMetadataObject.anthropic) {\n const cachedInputTokens =\n providerMetadataObject.anthropic.usage?.cache_read_input_tokens ??\n providerMetadataObject.anthropic.cacheReadInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, cachedInputTokens);\n\n const cacheWriteInputTokens =\n providerMetadataObject.anthropic.usage?.cache_creation_input_tokens ??\n providerMetadataObject.anthropic.cacheCreationInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, cacheWriteInputTokens);\n }\n\n if (providerMetadataObject.bedrock?.usage) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheReadInputTokens,\n );\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheWriteInputTokens,\n );\n }\n\n if (providerMetadataObject.deepseek) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.deepseek.promptCacheHitTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.input_tokens.cache_miss',\n providerMetadataObject.deepseek.promptCacheMissTokens,\n );\n }\n } catch {\n // Ignore\n }\n }\n}\n\n/**\n * Sets an attribute only if the value is not null or undefined.\n */\nfunction setAttributeIfDefined(attributes: SpanAttributes, key: string, value: SpanAttributeValue | undefined): void {\n if (value != null) {\n attributes[key] = value;\n }\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const OPENAI_INTEGRATION_NAME = 'OpenAI';\n\n// https://platform.openai.com/docs/quickstart?api-mode=responses\n// https://platform.openai.com/docs/quickstart?api-mode=chat\n// https://platform.openai.com/docs/api-reference/conversations\nexport const OPENAI_METHOD_REGISTRY = {\n 'responses.create': { operation: 'chat' },\n 'chat.completions.create': { operation: 'chat' },\n 'embeddings.create': { operation: 'embeddings' },\n // Conversations API - for conversation state management\n // https://platform.openai.com/docs/guides/conversation-state\n 'conversations.create': { operation: 'chat' },\n} as const satisfies InstrumentedMethodRegistry;\nexport const RESPONSES_TOOL_CALL_EVENT_TYPES = [\n 'response.output_item.added',\n 'response.function_call_arguments.delta',\n 'response.function_call_arguments.done',\n 'response.output_item.done',\n] as const;\nexport const RESPONSE_EVENT_TYPES = [\n 'response.created',\n 'response.in_progress',\n 'response.failed',\n 'response.completed',\n 'response.incomplete',\n 'response.queued',\n 'response.output_text.delta',\n ...RESPONSES_TOOL_CALL_EVENT_TYPES,\n] as const;\n","import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE,\n GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n OPENAI_RESPONSE_ID_ATTRIBUTE,\n OPENAI_RESPONSE_MODEL_ATTRIBUTE,\n OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE,\n OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type {\n ChatCompletionChunk,\n OpenAiChatCompletionObject,\n OpenAIConversationObject,\n OpenAICreateEmbeddingsObject,\n OpenAIResponseObject,\n ResponseStreamingEvent,\n} from './types';\n\n/**\n * Check if response is a Chat Completion object\n */\nexport function isChatCompletionResponse(response: unknown): response is OpenAiChatCompletionObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'chat.completion'\n );\n}\n\n/**\n * Check if response is a Responses API object\n */\nexport function isResponsesApiResponse(response: unknown): response is OpenAIResponseObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'response'\n );\n}\n\n/**\n * Check if response is an Embeddings API object\n */\nexport function isEmbeddingsResponse(response: unknown): response is OpenAICreateEmbeddingsObject {\n if (response === null || typeof response !== 'object' || !('object' in response)) {\n return false;\n }\n const responseObject = response as Record;\n return (\n responseObject.object === 'list' &&\n typeof responseObject.model === 'string' &&\n responseObject.model.toLowerCase().includes('embedding')\n );\n}\n\n/**\n * Check if response is a Conversations API object\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nexport function isConversationResponse(response: unknown): response is OpenAIConversationObject {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response as Record).object === 'conversation'\n );\n}\n\n/**\n * Check if streaming event is from the Responses API\n */\nexport function isResponsesApiStreamEvent(event: unknown): event is ResponseStreamingEvent {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'type' in event &&\n typeof (event as Record).type === 'string' &&\n ((event as Record).type as string).startsWith('response.')\n );\n}\n\n/**\n * Check if streaming event is a chat completion chunk\n */\nexport function isChatCompletionChunk(event: unknown): event is ChatCompletionChunk {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'object' in event &&\n (event as Record).object === 'chat.completion.chunk'\n );\n}\n\n/**\n * Add attributes for Chat Completion responses\n */\nexport function addChatCompletionAttributes(\n span: Span,\n response: OpenAiChatCompletionObject,\n recordOutputs?: boolean,\n): void {\n setCommonResponseAttributes(span, response.id, response.model, response.created);\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.prompt_tokens,\n response.usage.completion_tokens,\n response.usage.total_tokens,\n );\n }\n if (Array.isArray(response.choices)) {\n const finishReasons = response.choices\n .map(choice => choice.finish_reason)\n .filter((reason): reason is string => reason !== null);\n if (finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(finishReasons),\n });\n }\n\n // Extract tool calls from all choices (only if recordOutputs is true)\n if (recordOutputs) {\n const toolCalls = response.choices\n .map(choice => choice.message?.tool_calls)\n .filter(calls => Array.isArray(calls) && calls.length > 0)\n .flat();\n\n if (toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Responses API responses\n */\nexport function addResponsesApiAttributes(span: Span, response: OpenAIResponseObject, recordOutputs?: boolean): void {\n setCommonResponseAttributes(span, response.id, response.model, response.created_at);\n if (response.status) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify([response.status]),\n });\n }\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.total_tokens,\n );\n }\n\n // Extract function calls from output (only if recordOutputs is true)\n if (recordOutputs) {\n const responseWithOutput = response as OpenAIResponseObject & { output?: unknown[] };\n if (Array.isArray(responseWithOutput.output) && responseWithOutput.output.length > 0) {\n // Filter for function_call type objects in the output array\n const functionCalls = responseWithOutput.output.filter(\n (item): unknown =>\n // oxlint-disable-next-line typescript/prefer-optional-chain\n typeof item === 'object' && item !== null && (item as Record).type === 'function_call',\n );\n\n if (functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Embeddings API responses\n */\nexport function addEmbeddingsAttributes(span: Span, response: OpenAICreateEmbeddingsObject): void {\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if (response.usage) {\n setTokenUsageAttributes(span, response.usage.prompt_tokens, undefined, response.usage.total_tokens);\n }\n}\n\n/**\n * Add attributes for Conversations API responses\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nexport function addConversationAttributes(span: Span, response: OpenAIConversationObject): void {\n const { id, created_at } = response;\n\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n // The conversation id is used to link messages across API calls\n [GEN_AI_CONVERSATION_ID_ATTRIBUTE]: id,\n });\n\n if (created_at) {\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(created_at * 1000).toISOString(),\n });\n }\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param totalTokens - The number of total tokens\n */\nexport function setTokenUsageAttributes(\n span: Span,\n promptTokens?: number,\n completionTokens?: number,\n totalTokens?: number,\n): void {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE]: promptTokens,\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE]: completionTokens,\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (totalTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Set common response attributes\n * @param span - The span to add attributes to\n * @param id - The response id\n * @param model - The response model\n * @param timestamp - The response timestamp\n */\nexport function setCommonResponseAttributes(span: Span, id: string, model: string, timestamp: number): void {\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: model,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(timestamp * 1000).toISOString(),\n });\n}\n\n/**\n * Extract conversation ID from request parameters\n * Supports both Conversations API and previous_response_id chaining\n * @see https://platform.openai.com/docs/guides/conversation-state\n */\nfunction extractConversationId(params: Record): string | undefined {\n // Conversations API: conversation parameter (e.g., \"conv_...\")\n if ('conversation' in params && typeof params.conversation === 'string') {\n return params.conversation;\n }\n // Responses chaining: previous_response_id links to parent response\n if ('previous_response_id' in params && typeof params.previous_response_id === 'string') {\n return params.previous_response_id;\n }\n return undefined;\n}\n\n/**\n * Extract request parameters including model settings and conversation context\n */\nexport function extractRequestParameters(params: Record): Record {\n const attributes: Record = {\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: params.model ?? 'unknown',\n };\n\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('frequency_penalty' in params) attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('presence_penalty' in params) attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = params.presence_penalty;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('encoding_format' in params) attributes[GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE] = params.encoding_format;\n if ('dimensions' in params) attributes[GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE] = params.dimensions;\n\n // Capture conversation ID for linking messages across API calls\n const conversationId = extractConversationId(params);\n if (conversationId) {\n attributes[GEN_AI_CONVERSATION_ID_ATTRIBUTE] = conversationId;\n }\n\n return attributes;\n}\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { RESPONSE_EVENT_TYPES } from './constants';\nimport type {\n ChatCompletionChunk,\n ChatCompletionToolCall,\n OpenAIResponseObject,\n ResponseFunctionCall,\n ResponseStreamingEvent,\n} from './types';\nimport {\n isChatCompletionChunk,\n isResponsesApiStreamEvent,\n setCommonResponseAttributes,\n setTokenUsageAttributes,\n} from './utils';\n\n/**\n * State object used to accumulate information from a stream of OpenAI events/chunks.\n */\ninterface StreamingState {\n /** Types of events encountered in the stream. */\n eventTypes: string[];\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** The timestamp of the response. */\n responseTimestamp: number;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Total number of tokens used (prompt + completion). */\n totalTokens: number | undefined;\n /**\n * Accumulated tool calls from Chat Completion streaming, indexed by tool call index.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=chat#streaming\n */\n chatCompletionToolCalls: Record;\n /**\n * Accumulated function calls from Responses API streaming.\n * @see https://platform.openai.com/docs/guides/function-calling?api-mode=responses#streaming\n */\n responsesApiToolCalls: Array;\n}\n\n/**\n * Processes tool calls from a chat completion chunk delta.\n * Follows the pattern: accumulate by index, then convert to array at the end.\n *\n * @param toolCalls - Array of tool calls from the delta.\n * @param state - The current streaming state to update.\n *\n * @see https://platform.openai.com/docs/guides/function-calling#streaming\n */\nfunction processChatCompletionToolCalls(toolCalls: ChatCompletionToolCall[], state: StreamingState): void {\n for (const toolCall of toolCalls) {\n const index = toolCall.index;\n if (index === undefined || !toolCall.function) continue;\n\n // Initialize tool call if this is the first chunk for this index\n if (!(index in state.chatCompletionToolCalls)) {\n state.chatCompletionToolCalls[index] = {\n ...toolCall,\n function: {\n name: toolCall.function.name,\n arguments: toolCall.function.arguments || '',\n },\n };\n } else {\n // Accumulate function arguments from subsequent chunks\n const existingToolCall = state.chatCompletionToolCalls[index];\n if (toolCall.function.arguments && existingToolCall?.function) {\n existingToolCall.function.arguments += toolCall.function.arguments;\n }\n }\n }\n}\n\n/**\n * Processes a single OpenAI ChatCompletionChunk event, updating the streaming state.\n *\n * @param chunk - The ChatCompletionChunk event to process.\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n */\nfunction processChatCompletionChunk(chunk: ChatCompletionChunk, state: StreamingState, recordOutputs: boolean): void {\n state.responseId = chunk.id ?? state.responseId;\n state.responseModel = chunk.model ?? state.responseModel;\n state.responseTimestamp = chunk.created ?? state.responseTimestamp;\n\n if (chunk.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = chunk.usage.prompt_tokens;\n state.completionTokens = chunk.usage.completion_tokens;\n state.totalTokens = chunk.usage.total_tokens;\n }\n\n for (const choice of chunk.choices ?? []) {\n if (recordOutputs) {\n if (choice.delta?.content) {\n state.responseTexts.push(choice.delta.content);\n }\n\n // Handle tool calls from delta\n if (choice.delta?.tool_calls) {\n processChatCompletionToolCalls(choice.delta.tool_calls, state);\n }\n }\n if (choice.finish_reason) {\n state.finishReasons.push(choice.finish_reason);\n }\n }\n}\n\n/**\n * Processes a single OpenAI Responses API streaming event, updating the streaming state and span.\n *\n * @param streamEvent - The event to process (may be an error or unknown object).\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n * @param span - The span to update with error status if needed.\n */\nfunction processResponsesApiEvent(\n streamEvent: ResponseStreamingEvent | unknown | Error,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\n if (!(streamEvent && typeof streamEvent === 'object')) {\n state.eventTypes.push('unknown:non-object');\n return;\n }\n if (streamEvent instanceof Error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(streamEvent, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream-response',\n },\n });\n return;\n }\n\n if (!('type' in streamEvent)) return;\n const event = streamEvent as ResponseStreamingEvent;\n\n if (!RESPONSE_EVENT_TYPES.includes(event.type)) {\n state.eventTypes.push(event.type);\n return;\n }\n\n // Handle output text delta\n if (recordOutputs) {\n // Handle tool call events for Responses API\n if (event.type === 'response.output_item.done' && 'item' in event) {\n state.responsesApiToolCalls.push(event.item);\n }\n\n if (event.type === 'response.output_text.delta' && 'delta' in event && event.delta) {\n state.responseTexts.push(event.delta);\n return;\n }\n }\n\n if ('response' in event) {\n const { response } = event as { response: OpenAIResponseObject };\n state.responseId = response.id ?? state.responseId;\n state.responseModel = response.model ?? state.responseModel;\n state.responseTimestamp = response.created_at ?? state.responseTimestamp;\n\n if (response.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = response.usage.input_tokens;\n state.completionTokens = response.usage.output_tokens;\n state.totalTokens = response.usage.total_tokens;\n }\n\n if (response.status) {\n state.finishReasons.push(response.status);\n }\n\n if (recordOutputs && response.output_text) {\n state.responseTexts.push(response.output_text);\n }\n }\n}\n\n/**\n * Instruments a stream of OpenAI events, updating the provided span with relevant attributes and\n * optionally recording output text. This function yields each event from the input stream as it is processed.\n *\n * @template T - The type of events in the stream.\n * @param stream - The async iterable stream of events to instrument.\n * @param span - The span to add attributes to and to finish at the end of the stream.\n * @param recordOutputs - Whether to record output text fragments in the span.\n * @returns An async generator yielding each event from the input stream.\n */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n eventTypes: [],\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n responseTimestamp: 0,\n promptTokens: undefined,\n completionTokens: undefined,\n totalTokens: undefined,\n chatCompletionToolCalls: {},\n responsesApiToolCalls: [],\n };\n\n try {\n for await (const event of stream) {\n if (isChatCompletionChunk(event)) {\n processChatCompletionChunk(event as ChatCompletionChunk, state, recordOutputs);\n } else if (isResponsesApiStreamEvent(event)) {\n processResponsesApiEvent(event as ResponseStreamingEvent, state, recordOutputs, span);\n }\n yield event;\n }\n } finally {\n setCommonResponseAttributes(span, state.responseId, state.responseModel, state.responseTimestamp);\n setTokenUsageAttributes(span, state.promptTokens, state.completionTokens, state.totalTokens);\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls attribute if any were accumulated\n const chatCompletionToolCallsArray = Object.values(state.chatCompletionToolCalls);\n const allToolCalls = [...chatCompletionToolCallsArray, ...state.responsesApiToolCalls];\n\n if (allToolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(allToolCalls),\n });\n }\n\n span.end();\n }\n}\n","import { DEBUG_BUILD } from '../../debug-build';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { debug } from '../../utils/debug-logger';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport {\n buildMethodPath,\n extractSystemInstructions,\n getTruncatedJsonString,\n resolveAIRecordingOptions,\n wrapPromiseWithMethods,\n} from '../ai/utils';\nimport { OPENAI_METHOD_REGISTRY } from './constants';\nimport { instrumentStream } from './streaming';\nimport type { ChatCompletionChunk, OpenAiOptions, OpenAiResponse, OpenAIStream, ResponseStreamingEvent } from './types';\nimport {\n addChatCompletionAttributes,\n addConversationAttributes,\n addEmbeddingsAttributes,\n addResponsesApiAttributes,\n extractRequestParameters,\n isChatCompletionResponse,\n isConversationResponse,\n isEmbeddingsResponse,\n isResponsesApiResponse,\n} from './utils';\n\n/**\n * Extract available tools from request parameters\n */\nfunction extractAvailableTools(params: Record): string | undefined {\n const tools = Array.isArray(params.tools) ? params.tools : [];\n const hasWebSearchOptions = params.web_search_options && typeof params.web_search_options === 'object';\n const webSearchOptions = hasWebSearchOptions\n ? [{ type: 'web_search_options', ...(params.web_search_options as Record) }]\n : [];\n\n const availableTools = [...tools, ...webSearchOptions];\n if (availableTools.length === 0) {\n return undefined;\n }\n\n try {\n return JSON.stringify(availableTools);\n } catch (error) {\n DEBUG_BUILD && debug.error('Failed to serialize OpenAI tools:', error);\n return undefined;\n }\n}\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], operationName: string): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] as Record;\n\n const availableTools = extractAvailableTools(params);\n if (availableTools) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = availableTools;\n }\n\n Object.assign(attributes, extractRequestParameters(params));\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n\n return attributes;\n}\n\n/**\n * Add response attributes to spans\n * This supports Chat Completion, Responses API, Embeddings, and Conversations API responses\n */\nfunction addResponseAttributes(span: Span, result: unknown, recordOutputs?: boolean): void {\n if (!result || typeof result !== 'object') return;\n\n const response = result as OpenAiResponse;\n\n if (isChatCompletionResponse(response)) {\n addChatCompletionAttributes(span, response, recordOutputs);\n if (recordOutputs && response.choices?.length) {\n const responseTexts = response.choices.map(choice => choice.message?.content || '');\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(responseTexts) });\n }\n } else if (isResponsesApiResponse(response)) {\n addResponsesApiAttributes(span, response, recordOutputs);\n if (recordOutputs && response.output_text) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.output_text });\n }\n } else if (isEmbeddingsResponse(response)) {\n addEmbeddingsAttributes(span, response);\n } else if (isConversationResponse(response)) {\n addConversationAttributes(span, response);\n }\n}\n\n// Extract and record AI request inputs, if present. This is intentionally separate from response attributes.\nfunction addRequestAttributes(span: Span, params: Record, operationName: string): void {\n // Store embeddings input on a separate attribute and do not truncate it\n if (operationName === 'embeddings' && 'input' in params) {\n const input = params.input;\n\n // No input provided\n if (input == null) {\n return;\n }\n\n // Empty input string\n if (typeof input === 'string' && input.length === 0) {\n return;\n }\n\n // Empty array input\n if (Array.isArray(input) && input.length === 0) {\n return;\n }\n\n // Store strings as-is, arrays/objects as JSON\n span.setAttribute(GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, typeof input === 'string' ? input : JSON.stringify(input));\n return;\n }\n\n const src = 'input' in params ? params.input : 'messages' in params ? params.messages : undefined;\n\n if (!src) {\n return;\n }\n\n if (Array.isArray(src) && src.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(src);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedInput = getTruncatedJsonString(filteredMessages);\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ATTRIBUTE, truncatedInput);\n\n if (Array.isArray(filteredMessages)) {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredMessages.length);\n } else {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, 1);\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: OpenAiOptions,\n): (...args: T) => Promise {\n return function instrumentedCall(...args: T): Promise {\n const operationName = instrumentedMethod.operation;\n const requestAttributes = extractRequestAttributes(args, operationName);\n const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] as string) || 'unknown';\n\n const params = args[0] as Record | undefined;\n const isStreamRequested = params && typeof params === 'object' && params.stream === true;\n\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n };\n\n if (isStreamRequested) {\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span: Span) => {\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n // Return async processing\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentStream(\n result as OpenAIStream,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n }\n\n // Non-streaming\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpan(spanConfig, (span: Span) => {\n // Call synchronously to capture the promise\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result, options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai',\n data: { function: methodPath },\n },\n });\n throw error;\n },\n );\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n };\n}\n\n/**\n * Create a deep proxy for OpenAI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: OpenAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = OPENAI_METHOD_REGISTRY[methodPath as keyof typeof OPENAI_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n return instrumentMethod(\n value as (...args: unknown[]) => Promise,\n methodPath,\n instrumentedMethod,\n obj,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n // which is required for accessing private class fields (e.g. #baseURL) in OpenAI SDK v5.\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) as T;\n}\n\n/**\n * Instrument an OpenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n */\nexport function instrumentOpenAiClient(client: T, options?: OpenAiOptions): T {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const ANTHROPIC_AI_INTEGRATION_NAME = 'Anthropic_AI';\n\n// https://docs.anthropic.com/en/api/messages\n// https://docs.anthropic.com/en/api/models-list\nexport const ANTHROPIC_METHOD_REGISTRY = {\n 'messages.create': { operation: 'chat' },\n 'messages.stream': { operation: 'chat', streaming: true },\n 'messages.countTokens': { operation: 'chat' },\n 'models.get': { operation: 'models' },\n 'completions.create': { operation: 'chat' },\n 'models.retrieve': { operation: 'models' },\n 'beta.messages.create': { operation: 'chat' },\n} as const satisfies InstrumentedMethodRegistry;\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport type { SpanStatusType } from '../../types-hoist/spanStatus';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils';\nimport type { AnthropicAiResponse } from './types';\n\n/**\n * Set the messages and messages original length attributes.\n * Extracts system instructions before truncation.\n */\nexport function setMessagesAttribute(span: Span, messages: unknown): void {\n if (Array.isArray(messages) && messages.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttributes({\n [GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions,\n });\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n}\n\nconst ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS: Record = {\n invalid_request_error: 'invalid_argument',\n authentication_error: 'unauthenticated',\n permission_error: 'permission_denied',\n not_found_error: 'not_found',\n request_too_large: 'failed_precondition',\n rate_limit_error: 'resource_exhausted',\n api_error: 'internal_error',\n overloaded_error: 'unavailable',\n};\n\n/**\n * Map an Anthropic API error type to a SpanStatusType value.\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nexport function mapAnthropicErrorToStatusMessage(errorType: string | undefined): SpanStatusType {\n if (!errorType) {\n return 'internal_error';\n }\n return ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS[errorType] || 'internal_error';\n}\n\n/**\n * Capture error information from the response\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nexport function handleResponseError(span: Span, response: AnthropicAiResponse): void {\n if (response.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(response.error.type) });\n\n captureException(response.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n }\n}\n\n/**\n * Include the system prompt in the messages list, if available\n */\nexport function messagesFromParams(params: Record): unknown[] {\n const { system, messages, input } = params;\n\n const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : [];\n\n const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : undefined;\n\n const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : [];\n\n const userMessages = inputParamMessages ?? messagesParamMessages;\n\n return [...systemMessages, ...userMessages];\n}\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { setTokenUsageAttributes } from '../ai/utils';\nimport type { AnthropicAiStreamingEvent } from './types';\nimport { mapAnthropicErrorToStatusMessage } from './utils';\n\n/**\n * State object used to accumulate information from a stream of Anthropic AI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId: string;\n /** The model name. */\n responseModel: string;\n /** Number of prompt/input tokens used. */\n promptTokens: number | undefined;\n /** Number of completion/output tokens used. */\n completionTokens: number | undefined;\n /** Number of cache creation input tokens used. */\n cacheCreationInputTokens: number | undefined;\n /** Number of cache read input tokens used. */\n cacheReadInputTokens: number | undefined;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\n /** In-progress tool call blocks keyed by index */\n activeToolBlocks: Record<\n number,\n {\n id?: string;\n name?: string;\n inputJsonParts: string[];\n }\n >;\n}\n\n/**\n * Checks if an event is an error event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n * @returns Whether an error occurred\n */\n\nfunction isErrorEvent(event: AnthropicAiStreamingEvent, span: Span): boolean {\n if ('type' in event && typeof event.type === 'string') {\n // If the event is an error, set the span status and capture the error\n // These error events are not rejected by the API by default, but are sent as metadata of the response\n if (event.type === 'error') {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(event.error?.type) });\n captureException(event.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n return true;\n }\n }\n return false;\n}\n\n/**\n * Processes the message metadata of an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n */\n\nfunction handleMessageMetadata(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n // The token counts shown in the usage field of the message_delta event are cumulative.\n // @see https://docs.anthropic.com/en/docs/build-with-claude/streaming#event-types\n if (event.type === 'message_delta' && event.usage) {\n if ('output_tokens' in event.usage && typeof event.usage.output_tokens === 'number') {\n state.completionTokens = event.usage.output_tokens;\n }\n }\n\n if (event.message) {\n const message = event.message;\n\n if (message.id) state.responseId = message.id;\n if (message.model) state.responseModel = message.model;\n if (message.stop_reason) state.finishReasons.push(message.stop_reason);\n\n if (message.usage) {\n if (typeof message.usage.input_tokens === 'number') state.promptTokens = message.usage.input_tokens;\n if (typeof message.usage.cache_creation_input_tokens === 'number')\n state.cacheCreationInputTokens = message.usage.cache_creation_input_tokens;\n if (typeof message.usage.cache_read_input_tokens === 'number')\n state.cacheReadInputTokens = message.usage.cache_read_input_tokens;\n }\n }\n}\n\n/**\n * Handle start of a content block (e.g., tool_use)\n */\nfunction handleContentBlockStart(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n if (event.type !== 'content_block_start' || typeof event.index !== 'number' || !event.content_block) return;\n if (event.content_block.type === 'tool_use' || event.content_block.type === 'server_tool_use') {\n state.activeToolBlocks[event.index] = {\n id: event.content_block.id,\n name: event.content_block.name,\n inputJsonParts: [],\n };\n }\n}\n\n/**\n * Handle deltas of a content block, including input_json_delta for tool_use\n */\nfunction handleContentBlockDelta(\n event: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n): void {\n if (event.type !== 'content_block_delta' || !event.delta) return;\n\n // Accumulate tool_use input JSON deltas only when we have an index and an active tool block\n if (\n typeof event.index === 'number' &&\n 'partial_json' in event.delta &&\n typeof event.delta.partial_json === 'string'\n ) {\n const active = state.activeToolBlocks[event.index];\n if (active) {\n active.inputJsonParts.push(event.delta.partial_json);\n }\n }\n\n // Accumulate streamed response text regardless of index\n if (recordOutputs && typeof event.delta.text === 'string') {\n state.responseTexts.push(event.delta.text);\n }\n}\n\n/**\n * Handle stop of a content block; finalize tool_use entries\n */\nfunction handleContentBlockStop(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n if (event.type !== 'content_block_stop' || typeof event.index !== 'number') return;\n\n const active = state.activeToolBlocks[event.index];\n if (!active) return;\n\n const raw = active.inputJsonParts.join('');\n let parsedInput: unknown;\n\n try {\n parsedInput = raw ? JSON.parse(raw) : {};\n } catch {\n parsedInput = { __unparsed: raw };\n }\n\n state.toolCalls.push({\n type: 'tool_use',\n id: active.id,\n name: active.name,\n input: parsedInput,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete state.activeToolBlocks[event.index];\n}\n\n/**\n * Processes an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processEvent(\n event: AnthropicAiStreamingEvent,\n state: StreamingState,\n recordOutputs: boolean,\n span: Span,\n): void {\n if (!(event && typeof event === 'object')) {\n return;\n }\n\n const isError = isErrorEvent(event, span);\n if (isError) return;\n\n handleMessageMetadata(event, state);\n\n // Tool call events are sent via 3 separate events:\n // - content_block_start (start of the tool call)\n // - content_block_delta (delta aka input of the tool call)\n // - content_block_stop (end of the tool call)\n // We need to handle them all to capture the full tool call.\n handleContentBlockStart(event, state);\n handleContentBlockDelta(event, state, recordOutputs);\n handleContentBlockStop(event, state);\n}\n\n/**\n * Finalizes span attributes when stream processing completes\n */\nfunction finalizeStreamSpan(state: StreamingState, span: Span, recordOutputs: boolean): void {\n if (!span.isRecording()) {\n return;\n }\n\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n}\n\n/**\n * Instruments an async iterable stream of Anthropic events, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each event from the input stream unchanged.\n */\nexport async function* instrumentAsyncIterableStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n try {\n for await (const event of stream) {\n processEvent(event, state, recordOutputs, span);\n yield event;\n }\n } finally {\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n }\n}\n\n/**\n * Instruments a MessageStream by registering event handlers and preserving the original stream API.\n */\nexport function instrumentMessageStream void }>(\n stream: R,\n span: Span,\n recordOutputs: boolean,\n): R {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n stream.on('streamEvent', (event: unknown) => {\n processEvent(event as AnthropicAiStreamingEvent, state, recordOutputs, span);\n });\n\n // The event fired when a message is done being streamed by the API. Corresponds to the message_stop SSE event.\n // @see https://github.com/anthropics/anthropic-sdk-typescript/blob/d3be31f5a4e6ebb4c0a2f65dbb8f381ae73a9166/helpers.md?plain=1#L42-L44\n stream.on('message', () => {\n finalizeStreamSpan(state, span, recordOutputs);\n });\n\n stream.on('error', (error: unknown) => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.stream_error',\n },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n });\n\n return stream;\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PROMPT_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport {\n buildMethodPath,\n resolveAIRecordingOptions,\n setTokenUsageAttributes,\n wrapPromiseWithMethods,\n} from '../ai/utils';\nimport { ANTHROPIC_METHOD_REGISTRY } from './constants';\nimport { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming';\nimport type { AnthropicAiOptions, AnthropicAiResponse, AnthropicAiStreamingEvent, ContentBlock } from './types';\nimport { handleResponseError, messagesFromParams, setMessagesAttribute } from './utils';\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], methodPath: string, operationName: string): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] as Record;\n if (params.tools && Array.isArray(params.tools)) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(params.tools);\n }\n\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = params.model ?? 'unknown';\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('top_k' in params) attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = params.top_k;\n if ('frequency_penalty' in params)\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('max_tokens' in params) attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = params.max_tokens;\n } else {\n if (methodPath === 'models.retrieve' || methodPath === 'models.get') {\n // models.retrieve(model-id) and models.get(model-id)\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = args[0];\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n */\nfunction addPrivateRequestAttributes(span: Span, params: Record): void {\n const messages = messagesFromParams(params);\n setMessagesAttribute(span, messages);\n\n if ('prompt' in params) {\n span.setAttributes({ [GEN_AI_PROMPT_ATTRIBUTE]: JSON.stringify(params.prompt) });\n }\n}\n\n/**\n * Add content attributes when recordOutputs is enabled\n */\nfunction addContentAttributes(span: Span, response: AnthropicAiResponse): void {\n // Messages.create\n if ('content' in response) {\n if (Array.isArray(response.content)) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.content\n .map((item: ContentBlock) => item.text)\n .filter(text => !!text)\n .join(''),\n });\n\n const toolCalls: Array = [];\n\n for (const item of response.content) {\n if (item.type === 'tool_use' || item.type === 'server_tool_use') {\n toolCalls.push(item);\n }\n }\n if (toolCalls.length > 0) {\n span.setAttributes({ [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls) });\n }\n }\n }\n // Completions.create\n if ('completion' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.completion });\n }\n // Models.countTokens\n if ('input_tokens' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(response.input_tokens) });\n }\n}\n\n/**\n * Add basic metadata attributes from the response\n */\nfunction addMetadataAttributes(span: Span, response: AnthropicAiResponse): void {\n if ('id' in response && 'model' in response) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: response.id,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if ('created' in response && typeof response.created === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created * 1000).toISOString(),\n });\n }\n if ('created_at' in response && typeof response.created_at === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created_at * 1000).toISOString(),\n });\n }\n\n if ('usage' in response && response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.cache_creation_input_tokens,\n response.usage.cache_read_input_tokens,\n );\n }\n }\n}\n\n/**\n * Add response attributes to spans\n */\nfunction addResponseAttributes(span: Span, response: AnthropicAiResponse, recordOutputs?: boolean): void {\n if (!response || typeof response !== 'object') return;\n\n // capture error, do not add attributes if error (they shouldn't exist)\n if ('type' in response && response.type === 'error') {\n handleResponseError(span, response);\n return;\n }\n\n // Private response attributes that are only recorded if recordOutputs is true.\n if (recordOutputs) {\n addContentAttributes(span, response);\n }\n\n // Add basic metadata attributes\n addMetadataAttributes(span, response);\n}\n\n/**\n * Handle common error catching and reporting for streaming requests\n */\nfunction handleStreamingError(error: unknown, span: Span, methodPath: string): never {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.anthropic', data: { function: methodPath } },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n throw error;\n}\n\n/**\n * Handle streaming cases with common logic\n */\nfunction handleStreamingRequest(\n originalMethod: (...args: T) => R | Promise,\n target: (...args: T) => R | Promise,\n context: unknown,\n args: T,\n requestAttributes: Record,\n operationName: string,\n methodPath: string,\n params: Record | undefined,\n options: AnthropicAiOptions,\n isStreamRequested: boolean,\n isStreamingMethod: boolean,\n): R | Promise {\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n };\n\n // messages.stream() always returns a sync MessageStream, even with stream: true param\n if (isStreamRequested && !isStreamingMethod) {\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span: Span) => {\n originalResult = originalMethod.apply(context, args) as Promise;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentAsyncIterableStream(\n result as AsyncIterable,\n span,\n options.recordOutputs ?? false,\n ) as unknown as R;\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n } else {\n return startSpanManual(spanConfig, span => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const messageStream = target.apply(context, args);\n return instrumentMessageStream(messageStream, span, options.recordOutputs ?? false);\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n });\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => R | Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: AnthropicAiOptions,\n): (...args: T) => R | Promise {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args: T): R | Promise {\n const operationName = instrumentedMethod.operation;\n const requestAttributes = extractRequestAttributes(args, methodPath, operationName);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n\n const params = typeof args[0] === 'object' ? (args[0] as Record) : undefined;\n const isStreamRequested = Boolean(params?.stream);\n const isStreamingMethod = instrumentedMethod.streaming === true;\n\n if (isStreamRequested || isStreamingMethod) {\n return handleStreamingRequest(\n originalMethod,\n target,\n context,\n args,\n requestAttributes,\n operationName,\n methodPath,\n params,\n options,\n isStreamRequested,\n isStreamingMethod,\n );\n }\n\n let originalResult!: Promise;\n\n const instrumentedPromise = startSpan(\n {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes as Record,\n },\n span => {\n originalResult = target.apply(context, args) as Promise;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result as AnthropicAiResponse, options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic',\n data: {\n function: methodPath,\n },\n },\n });\n throw error;\n },\n );\n },\n );\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n },\n }) as (...args: T) => R | Promise;\n}\n\n/**\n * Create a deep proxy for Anthropic AI client instrumentation\n */\nfunction createDeepProxy(target: T, currentPath = '', options: AnthropicAiOptions): T {\n return new Proxy(target, {\n get(obj: object, prop: string): unknown {\n const value = (obj as Record)[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = ANTHROPIC_METHOD_REGISTRY[methodPath as keyof typeof ANTHROPIC_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n return instrumentMethod(\n value as (...args: unknown[]) => unknown | Promise,\n methodPath,\n instrumentedMethod,\n obj,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) as T;\n}\n\n/**\n * Instrument an Anthropic AI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends object\n * @param client - The Anthropic AI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n */\nexport function instrumentAnthropicAiClient(anthropicAiClient: T, options?: AnthropicAiOptions): T {\n return createDeepProxy(anthropicAiClient, '', resolveAIRecordingOptions(options));\n}\n","import type { InstrumentedMethodRegistry } from '../ai/utils';\n\nexport const GOOGLE_GENAI_INTEGRATION_NAME = 'Google_GenAI';\n\n// https://ai.google.dev/api/rest/v1/models/generateContent\n// https://ai.google.dev/api/rest/v1/chats/sendMessage\n// https://googleapis.github.io/js-genai/release_docs/classes/models.Models.html#generatecontentstream\n// https://googleapis.github.io/js-genai/release_docs/classes/chats.Chat.html#sendmessagestream\nexport const GOOGLE_GENAI_METHOD_REGISTRY = {\n 'models.generateContent': { operation: 'generate_content' },\n 'models.generateContentStream': { operation: 'generate_content', streaming: true },\n 'models.embedContent': { operation: 'embeddings' },\n 'chats.create': { operation: 'chat' },\n // chat.* paths are built by createDeepProxy when it proxies the chat instance with CHAT_PATH as base\n 'chat.sendMessage': { operation: 'chat' },\n 'chat.sendMessageStream': { operation: 'chat', streaming: true },\n} as const satisfies InstrumentedMethodRegistry;\n\n// Constants for internal use\nexport const GOOGLE_GENAI_SYSTEM_NAME = 'google_genai';\nexport const CHATS_CREATE_METHOD = 'chats.create';\nexport const CHAT_PATH = 'chat';\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { GoogleGenAIResponse } from './types';\n\n/**\n * State object used to accumulate information from a stream of Google GenAI events.\n */\ninterface StreamingState {\n /** Collected response text fragments (for output recording). */\n responseTexts: string[];\n /** Reasons for finishing the response, as reported by the API. */\n finishReasons: string[];\n /** The response ID. */\n responseId?: string;\n /** The model name. */\n responseModel?: string;\n /** Number of prompt/input tokens used. */\n promptTokens?: number;\n /** Number of completion/output tokens used. */\n completionTokens?: number;\n /** Number of total tokens used. */\n totalTokens?: number;\n /** Accumulated tool calls (finalized) */\n toolCalls: Array>;\n}\n\n/**\n * Checks if a response chunk contains an error\n * @param chunk - The response chunk to check\n * @param span - The span to update if error is found\n * @returns Whether an error occurred\n */\nfunction isErrorChunk(chunk: GoogleGenAIResponse, span: Span): boolean {\n const feedback = chunk?.promptFeedback;\n if (feedback?.blockReason) {\n const message = feedback.blockReasonMessage ?? feedback.blockReason;\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(`Content blocked: ${message}`, {\n mechanism: { handled: false, type: 'auto.ai.google_genai' },\n });\n return true;\n }\n return false;\n}\n\n/**\n * Processes response metadata from a chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n */\nfunction handleResponseMetadata(chunk: GoogleGenAIResponse, state: StreamingState): void {\n if (typeof chunk.responseId === 'string') state.responseId = chunk.responseId;\n if (typeof chunk.modelVersion === 'string') state.responseModel = chunk.modelVersion;\n\n const usage = chunk.usageMetadata;\n if (usage) {\n if (typeof usage.promptTokenCount === 'number') state.promptTokens = usage.promptTokenCount;\n if (typeof usage.candidatesTokenCount === 'number') state.completionTokens = usage.candidatesTokenCount;\n if (typeof usage.totalTokenCount === 'number') state.totalTokens = usage.totalTokenCount;\n }\n}\n\n/**\n * Processes candidate content from a response chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n */\nfunction handleCandidateContent(chunk: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean): void {\n if (Array.isArray(chunk.functionCalls)) {\n state.toolCalls.push(...chunk.functionCalls);\n }\n\n for (const candidate of chunk.candidates ?? []) {\n if (candidate?.finishReason && !state.finishReasons.includes(candidate.finishReason)) {\n state.finishReasons.push(candidate.finishReason);\n }\n\n for (const part of candidate?.content?.parts ?? []) {\n if (recordOutputs && part.text) state.responseTexts.push(part.text);\n if (part.functionCall) {\n state.toolCalls.push({\n type: 'function',\n id: part.functionCall.id,\n name: part.functionCall.name,\n arguments: part.functionCall.args,\n });\n }\n }\n }\n}\n\n/**\n * Processes a single chunk from the Google GenAI stream\n * @param chunk - The chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processChunk(chunk: GoogleGenAIResponse, state: StreamingState, recordOutputs: boolean, span: Span): void {\n if (!chunk || isErrorChunk(chunk, span)) return;\n handleResponseMetadata(chunk, state);\n handleCandidateContent(chunk, state, recordOutputs);\n}\n\n/**\n * Instruments an async iterable stream of Google GenAI response chunks, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each chunk from the input stream unchanged.\n */\nexport async function* instrumentStream(\n stream: AsyncIterable,\n span: Span,\n recordOutputs: boolean,\n): AsyncGenerator {\n const state: StreamingState = {\n responseTexts: [],\n finishReasons: [],\n toolCalls: [],\n };\n\n try {\n for await (const chunk of stream) {\n processChunk(chunk, state, recordOutputs, span);\n yield chunk;\n }\n } finally {\n const attrs: Record = {\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n };\n\n if (state.responseId) attrs[GEN_AI_RESPONSE_ID_ATTRIBUTE] = state.responseId;\n if (state.responseModel) attrs[GEN_AI_RESPONSE_MODEL_ATTRIBUTE] = state.responseModel;\n if (state.promptTokens !== undefined) attrs[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = state.promptTokens;\n if (state.completionTokens !== undefined) attrs[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = state.completionTokens;\n if (state.totalTokens !== undefined) attrs[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = state.totalTokens;\n\n if (state.finishReasons.length) {\n attrs[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE] = JSON.stringify(state.finishReasons);\n }\n if (recordOutputs && state.responseTexts.length) {\n attrs[GEN_AI_RESPONSE_TEXT_ATTRIBUTE] = state.responseTexts.join('');\n }\n if (recordOutputs && state.toolCalls.length) {\n attrs[GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE] = JSON.stringify(state.toolCalls);\n }\n\n span.setAttributes(attrs);\n span.end();\n }\n}\n","// Copied from https://googleapis.github.io/js-genai/release_docs/index.html\nexport type ContentListUnion = Content | Content[] | PartListUnion;\nexport type ContentUnion = Content | PartUnion[] | PartUnion;\nexport type Content = {\n parts?: Part[];\n role?: string;\n};\nexport type PartUnion = Part | string;\nexport type Part = Record & {\n inlineData?: {\n data?: string;\n displayName?: string;\n mimeType?: string;\n };\n text?: string;\n};\nexport type PartListUnion = PartUnion[] | PartUnion;\n\n// our consistent span message shape\nexport type Message = Record & {\n role: string;\n content?: PartListUnion;\n parts?: PartListUnion;\n};\n\n/**\n *\n */\nexport function contentUnionToMessages(content: ContentListUnion, role = 'user'): Message[] {\n if (typeof content === 'string') {\n return [{ role, content }];\n }\n if (Array.isArray(content)) {\n return content.flatMap(content => contentUnionToMessages(content, role));\n }\n if (typeof content !== 'object' || !content) return [];\n if ('role' in content && typeof content.role === 'string') {\n return [content as Message];\n }\n if ('parts' in content) {\n return [{ ...content, role } as Message];\n }\n return [{ role, content }];\n}\n","/* eslint-disable max-lines */\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors';\nimport {\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport type { InstrumentedMethodEntry } from '../ai/utils';\nimport { buildMethodPath, extractSystemInstructions, resolveAIRecordingOptions } from '../ai/utils';\nimport { CHAT_PATH, CHATS_CREATE_METHOD, GOOGLE_GENAI_METHOD_REGISTRY, GOOGLE_GENAI_SYSTEM_NAME } from './constants';\nimport { instrumentStream } from './streaming';\nimport type { Candidate, ContentPart, GoogleGenAIOptions, GoogleGenAIResponse } from './types';\nimport type { ContentListUnion, ContentUnion, Message, PartListUnion } from './utils';\nimport { contentUnionToMessages } from './utils';\n\n/**\n * Extract model from parameters or chat context object\n * For chat instances, the model is available on the chat object as 'model' (older versions) or 'modelVersion' (newer versions)\n */\nexport function extractModel(params: Record, context?: unknown): string {\n if ('model' in params && typeof params.model === 'string') {\n return params.model;\n }\n\n // Try to get model from chat context object (chat instance has model property)\n if (context && typeof context === 'object') {\n const contextObj = context as Record;\n\n // Check for 'model' property (older versions, and streaming)\n if ('model' in contextObj && typeof contextObj.model === 'string') {\n return contextObj.model;\n }\n\n // Check for 'modelVersion' property (newer versions)\n if ('modelVersion' in contextObj && typeof contextObj.modelVersion === 'string') {\n return contextObj.modelVersion;\n }\n }\n\n return 'unknown';\n}\n\n/**\n * Extract generation config parameters\n */\nfunction extractConfigAttributes(config: Record): Record {\n const attributes: Record = {};\n\n if ('temperature' in config && typeof config.temperature === 'number') {\n attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = config.temperature;\n }\n if ('topP' in config && typeof config.topP === 'number') {\n attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = config.topP;\n }\n if ('topK' in config && typeof config.topK === 'number') {\n attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = config.topK;\n }\n if ('maxOutputTokens' in config && typeof config.maxOutputTokens === 'number') {\n attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = config.maxOutputTokens;\n }\n if ('frequencyPenalty' in config && typeof config.frequencyPenalty === 'number') {\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = config.frequencyPenalty;\n }\n if ('presencePenalty' in config && typeof config.presencePenalty === 'number') {\n attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = config.presencePenalty;\n }\n\n return attributes;\n}\n\n/**\n * Extract request attributes from method arguments\n * Builds the base attributes for span creation including system info, model, and config\n */\nfunction extractRequestAttributes(\n operationName: string,\n params?: Record,\n context?: unknown,\n): Record {\n const attributes: Record = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: GOOGLE_GENAI_SYSTEM_NAME,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: operationName,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.google_genai',\n };\n\n if (params) {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel(params, context);\n\n // Extract generation config parameters\n if ('config' in params && typeof params.config === 'object' && params.config) {\n const config = params.config as Record;\n Object.assign(attributes, extractConfigAttributes(config));\n\n // Extract available tools from config\n if ('tools' in config && Array.isArray(config.tools)) {\n const functionDeclarations = config.tools.flatMap(\n (tool: { functionDeclarations: unknown[] }) => tool.functionDeclarations,\n );\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(functionDeclarations);\n }\n }\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel({}, context);\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n * Handles different parameter formats for different Google GenAI methods.\n */\nfunction addPrivateRequestAttributes(span: Span, params: Record, isEmbeddings: boolean): void {\n if (isEmbeddings) {\n const contents = params.contents;\n if (contents != null) {\n span.setAttribute(\n GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE,\n typeof contents === 'string' ? contents : JSON.stringify(contents),\n );\n }\n return;\n }\n\n const messages: Message[] = [];\n\n // config.systemInstruction: ContentUnion\n if (\n 'config' in params &&\n params.config &&\n typeof params.config === 'object' &&\n 'systemInstruction' in params.config &&\n params.config.systemInstruction\n ) {\n messages.push(...contentUnionToMessages(params.config.systemInstruction as ContentUnion, 'system'));\n }\n\n // For chats.create: history contains the conversation history\n if ('history' in params) {\n messages.push(...contentUnionToMessages(params.history as PartListUnion, 'user'));\n }\n\n // For models.generateContent: ContentListUnion\n if ('contents' in params) {\n messages.push(...contentUnionToMessages(params.contents as ContentListUnion, 'user'));\n }\n\n // For chat.sendMessage: message can be PartListUnion\n if ('message' in params) {\n messages.push(...contentUnionToMessages(params.message as PartListUnion, 'user'));\n }\n\n if (Array.isArray(messages) && messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncateGenAiMessages(filteredMessages as unknown[])),\n });\n }\n}\n\n/**\n * Add response attributes from the Google GenAI response\n * @see https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L2313\n */\nfunction addResponseAttributes(span: Span, response: GoogleGenAIResponse, recordOutputs?: boolean): void {\n if (!response || typeof response !== 'object') return;\n\n if (response.modelVersion) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, response.modelVersion);\n }\n\n // Add usage metadata if present\n if (response.usageMetadata && typeof response.usageMetadata === 'object') {\n const usage = response.usageMetadata;\n if (typeof usage.promptTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: usage.promptTokenCount,\n });\n }\n if (typeof usage.candidatesTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: usage.candidatesTokenCount,\n });\n }\n if (typeof usage.totalTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: usage.totalTokenCount,\n });\n }\n }\n\n // Add response text if recordOutputs is enabled\n if (recordOutputs && Array.isArray(response.candidates) && response.candidates.length > 0) {\n const responseTexts = response.candidates\n .map((candidate: Candidate) => {\n if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {\n return candidate.content.parts\n .map((part: ContentPart) => (typeof part.text === 'string' ? part.text : ''))\n .filter((text: string) => text.length > 0)\n .join('');\n }\n return '';\n })\n .filter((text: string) => text.length > 0);\n\n if (responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: responseTexts.join(''),\n });\n }\n }\n\n // Add tool calls if recordOutputs is enabled\n if (recordOutputs && response.functionCalls) {\n const functionCalls = response.functionCalls;\n if (Array.isArray(functionCalls) && functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n}\n\n/**\n * Instrument any async or synchronous genai method with Sentry spans\n * Handles operations like models.generateContent and chat.sendMessage and chats.create\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod: (...args: T) => R | Promise,\n methodPath: string,\n instrumentedMethod: InstrumentedMethodEntry,\n context: unknown,\n options: GoogleGenAIOptions,\n): (...args: T) => R | Promise {\n const isSyncCreate = methodPath === CHATS_CREATE_METHOD;\n const isEmbeddings = instrumentedMethod.operation === 'embeddings';\n\n return new Proxy(originalMethod, {\n apply(target, _, args: T): R | Promise {\n const operationName = instrumentedMethod.operation;\n const params = args[0] as Record | undefined;\n const requestAttributes = extractRequestAttributes(operationName, params, context);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n\n // Check if this is a streaming method\n if (instrumentedMethod.streaming) {\n // Use startSpanManual for streaming methods to control span lifecycle\n return startSpanManual(\n {\n name: `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes,\n },\n async (span: Span) => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params, isEmbeddings);\n }\n const stream = await target.apply(context, args);\n return instrumentStream(stream, span, Boolean(options.recordOutputs)) as R;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.google_genai',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n },\n );\n }\n // Single span for both sync and async operations\n return startSpan(\n {\n name: isSyncCreate ? `${operationName} ${model} create` : `${operationName} ${model}`,\n op: `gen_ai.${operationName}`,\n attributes: requestAttributes,\n },\n (span: Span) => {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params, isEmbeddings);\n }\n\n return handleCallbackErrors(\n () => target.apply(context, args),\n error => {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.google_genai', data: { function: methodPath } },\n });\n },\n () => {},\n result => {\n // Only add response attributes for content-producing methods, not for chats.create or embeddings\n if (!isSyncCreate && !isEmbeddings) {\n addResponseAttributes(span, result, options.recordOutputs);\n }\n },\n );\n },\n );\n },\n }) as (...args: T) => R | Promise;\n}\n\n/**\n * Create a deep proxy for Google GenAI client instrumentation\n * Recursively instruments methods and handles special cases like chats.create\n */\nfunction createDeepProxy(target: T, currentPath = '', options: GoogleGenAIOptions): T {\n return new Proxy(target, {\n get: (t, prop, receiver) => {\n const value = Reflect.get(t, prop, receiver);\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n const instrumentedMethod = GOOGLE_GENAI_METHOD_REGISTRY[methodPath as keyof typeof GOOGLE_GENAI_METHOD_REGISTRY];\n if (typeof value === 'function' && instrumentedMethod) {\n // Special case: chats.create is synchronous but needs both instrumentation AND result proxying\n if (methodPath === CHATS_CREATE_METHOD) {\n const wrappedMethod = instrumentMethod(\n value as (...args: unknown[]) => unknown,\n methodPath,\n instrumentedMethod,\n t,\n options,\n );\n return function instrumentedAndProxiedCreate(...args: unknown[]): unknown {\n const result = wrappedMethod(...args);\n // If the result is an object (like a chat instance), proxy it too\n if (result && typeof result === 'object') {\n return createDeepProxy(result, CHAT_PATH, options);\n }\n return result;\n };\n }\n\n return instrumentMethod(\n value as (...args: unknown[]) => Promise,\n methodPath,\n instrumentedMethod,\n t,\n options,\n );\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context\n return value.bind(t);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n });\n}\n\n/**\n * Instrument a Google GenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends client object\n * @param client - The Google GenAI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n *\n * @example\n * ```typescript\n * import { GoogleGenAI } from '@google/genai';\n * import { instrumentGoogleGenAIClient } from '@sentry/core';\n *\n * const genAI = new GoogleGenAI({ apiKey: process.env.GOOGLE_GENAI_API_KEY });\n * const instrumentedClient = instrumentGoogleGenAIClient(genAI);\n *\n * // Now both chats.create and sendMessage will be instrumented\n * const chat = instrumentedClient.chats.create({ model: 'gemini-1.5-pro' });\n * const response = await chat.sendMessage({ message: 'Hello' });\n * ```\n */\nexport function instrumentGoogleGenAIClient(client: T, options?: GoogleGenAIOptions): T {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n","export const LANGCHAIN_INTEGRATION_NAME = 'LangChain';\nexport const LANGCHAIN_ORIGIN = 'auto.ai.langchain';\n\nexport const ROLE_MAP: Record = {\n human: 'user',\n ai: 'assistant',\n assistant: 'assistant',\n system: 'system',\n function: 'function',\n tool: 'tool',\n};\n","import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport type { SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE,\n GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_ID_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_SYSTEM_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { isContentMedia, stripInlineMediaFromSingleMessage } from '../ai/mediaStripping';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions } from '../ai/utils';\nimport { LANGCHAIN_ORIGIN, ROLE_MAP } from './constants';\nimport type { LangChainLLMResult, LangChainMessage, LangChainSerialized } from './types';\n\n/**\n * Assigns an attribute only when the value is neither `undefined` nor `null`.\n *\n * We keep this tiny helper because call sites are repetitive and easy to miswrite.\n * It also preserves falsy-but-valid values like `0` and `\"\"`.\n */\nconst setIfDefined = (target: Record, key: string, value: unknown): void => {\n if (value != null) target[key] = value as SpanAttributeValue;\n};\n\n/**\n * Like `setIfDefined`, but converts the value with `Number()` and skips only when the\n * result is `NaN`. This ensures numeric 0 makes it through (unlike truthy checks).\n */\nconst setNumberIfDefined = (target: Record, key: string, value: unknown): void => {\n const n = Number(value);\n if (!Number.isNaN(n)) target[key] = n;\n};\n\n/**\n * Converts a value to a string. Avoids double-quoted JSON strings where a plain\n * string is desired, but still handles objects/arrays safely.\n */\nfunction asString(v: unknown): string {\n if (typeof v === 'string') return v;\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\n/**\n * Converts message content to a string, stripping inline media (base64 images, audio, etc.)\n * from multimodal content before stringification so downstream media stripping can't miss it.\n *\n * @example\n * // String content passes through unchanged:\n * normalizeContent(\"Hello\") // => \"Hello\"\n *\n * // Multimodal array content — media is replaced with \"[Blob substitute]\" before JSON.stringify:\n * normalizeContent([\n * { type: \"text\", text: \"What color?\" },\n * { type: \"image_url\", image_url: { url: \"data:image/png;base64,iVBOR...\" } }\n * ])\n * // => '[{\"type\":\"text\",\"text\":\"What color?\"},{\"type\":\"image_url\",\"image_url\":{\"url\":\"[Blob substitute]\"}}]'\n *\n * // Without this, asString() would JSON.stringify the raw array and the base64 blob\n * // would end up in span attributes, since downstream stripping only works on objects.\n */\nfunction normalizeContent(v: unknown): string {\n if (Array.isArray(v)) {\n try {\n const stripped = v.map(part =>\n part && typeof part === 'object' && isContentMedia(part) ? stripInlineMediaFromSingleMessage(part) : part,\n );\n return JSON.stringify(stripped);\n } catch {\n return String(v);\n }\n }\n return asString(v);\n}\n\n/**\n * Normalizes a single role token to our canonical set.\n *\n * @param role Incoming role value (free-form, any casing)\n * @returns Canonical role: 'user' | 'assistant' | 'system' | 'function' | 'tool' | \n */\nfunction normalizeMessageRole(role: string): string {\n const normalized = role.toLowerCase();\n return ROLE_MAP[normalized] ?? normalized;\n}\n\n/**\n * Infers a role from a LangChain message constructor name.\n *\n * Checks for substrings like \"System\", \"Human\", \"AI\", etc.\n */\nfunction normalizeRoleNameFromCtor(name: string): string {\n if (name.includes('System')) return 'system';\n if (name.includes('Human')) return 'user';\n if (name.includes('AI') || name.includes('Assistant')) return 'assistant';\n if (name.includes('Function')) return 'function';\n if (name.includes('Tool')) return 'tool';\n return 'user';\n}\n\n/**\n * Returns invocation params from a LangChain `tags` object.\n *\n * LangChain often passes runtime parameters (model, temperature, etc.) via the\n * `tags.invocation_params` bag. If `tags` is an array (LangChain sometimes uses\n * string tags), we return `undefined`.\n *\n * @param tags LangChain tags (string[] or record)\n * @returns The `invocation_params` object, if present\n */\nexport function getInvocationParams(tags?: string[] | Record): Record | undefined {\n if (!tags || Array.isArray(tags)) return undefined;\n return tags.invocation_params as Record | undefined;\n}\n\n/**\n * Normalizes a heterogeneous set of LangChain messages to `{ role, content }`.\n *\n * Why so many branches? LangChain messages can arrive in several shapes:\n * - Message classes with `_getType()` (most reliable)\n * - Classes with meaningful constructor names (e.g. `SystemMessage`)\n * - Plain objects with `type`, or `{ role, content }`\n * - Serialized format with `{ lc: 1, id: [...], kwargs: { content } }`\n * We preserve the prioritization to minimize behavioral drift.\n *\n * @param messages Mixed LangChain messages\n * @returns Array of normalized `{ role, content }`\n */\nexport function normalizeLangChainMessages(messages: LangChainMessage[]): Array<{ role: string; content: string }> {\n return messages.map(message => {\n // 1) Prefer _getType() when present\n const maybeGetType = (message as { _getType?: () => string })._getType;\n if (typeof maybeGetType === 'function') {\n const messageType = maybeGetType.call(message);\n return {\n role: normalizeMessageRole(messageType),\n content: normalizeContent(message.content),\n };\n }\n\n // 2) Serialized LangChain format (lc: 1) - check before constructor name\n // This is more reliable than constructor.name which can be lost during serialization\n if (message.lc === 1 && message.kwargs) {\n const id = message.id;\n const messageType = Array.isArray(id) && id.length > 0 ? id[id.length - 1] : '';\n const role = typeof messageType === 'string' ? normalizeRoleNameFromCtor(messageType) : 'user';\n\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.kwargs?.content),\n };\n }\n\n // 3) Then objects with `type`\n if (message.type) {\n const role = String(message.type).toLowerCase();\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.content),\n };\n }\n\n // 4) Then objects with `{ role, content }` - check before constructor name\n // Plain objects have constructor.name=\"Object\" which would incorrectly default to \"user\"\n if (message.role) {\n return {\n role: normalizeMessageRole(String(message.role)),\n content: normalizeContent(message.content),\n };\n }\n\n // 5) Then try constructor name (SystemMessage / HumanMessage / ...)\n // Only use this if we haven't matched a more specific case\n const ctor = (message as { constructor?: { name?: string } }).constructor?.name;\n if (ctor && ctor !== 'Object') {\n return {\n role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)),\n content: normalizeContent(message.content),\n };\n }\n\n // 6) Fallback: treat as user text\n return {\n role: 'user',\n content: normalizeContent(message.content),\n };\n });\n}\n\n/**\n * Extracts request attributes common to both LLM and ChatModel invocations.\n *\n * Source precedence:\n * 1) `invocationParams` (highest)\n * 2) `langSmithMetadata`\n *\n * Numeric values are set even when 0 (e.g. `temperature: 0`), but skipped if `NaN`.\n */\nfunction extractCommonRequestAttributes(\n serialized: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const attrs: Record = {};\n\n // Get kwargs if available (from constructor type)\n const kwargs = 'kwargs' in serialized ? serialized.kwargs : undefined;\n\n const temperature = invocationParams?.temperature ?? langSmithMetadata?.ls_temperature ?? kwargs?.temperature;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, temperature);\n\n const maxTokens = invocationParams?.max_tokens ?? langSmithMetadata?.ls_max_tokens ?? kwargs?.max_tokens;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, maxTokens);\n\n const topP = invocationParams?.top_p ?? kwargs?.top_p;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, topP);\n\n const frequencyPenalty = invocationParams?.frequency_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, frequencyPenalty);\n\n const presencePenalty = invocationParams?.presence_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, presencePenalty);\n\n // LangChain uses `stream`. We only set the attribute if the key actually exists\n // (some callbacks report `false` even on streamed requests, this stems from LangChain's callback handler).\n if (invocationParams && 'stream' in invocationParams) {\n setIfDefined(attrs, GEN_AI_REQUEST_STREAM_ATTRIBUTE, Boolean(invocationParams.stream));\n }\n\n return attrs;\n}\n\n/**\n * Small helper to assemble boilerplate attributes shared by both request extractors.\n * Always uses 'chat' as the operation type for all LLM and chat model operations.\n */\nfunction baseRequestAttributes(\n system: unknown,\n modelName: unknown,\n serialized: LangChainSerialized,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n return {\n [GEN_AI_SYSTEM_ATTRIBUTE]: asString(system ?? 'langchain'),\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'chat',\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: asString(modelName),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n ...extractCommonRequestAttributes(serialized, invocationParams, langSmithMetadata),\n };\n}\n\n/**\n * Extracts attributes for plain LLM invocations (string prompts).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain LLM operations are treated as chat operations.\n * - When `recordInputs` is true, string prompts are wrapped into `{role:\"user\"}`\n * messages to align with the chat schema used elsewhere.\n */\nexport function extractLLMRequestAttributes(\n llm: LangChainSerialized,\n prompts: string[],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const system = langSmithMetadata?.ls_provider;\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(prompts) && prompts.length > 0) {\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, prompts.length);\n const messages = prompts.map(p => ({ role: 'user', content: p }));\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(messages));\n }\n\n return attrs;\n}\n\n/**\n * Extracts attributes for ChatModel invocations (array-of-arrays of messages).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain chat model operations are chat operations.\n * - We flatten LangChain's `LangChainMessage[][]` and normalize shapes into a\n * consistent `{ role, content }` array when `recordInputs` is true.\n * - Provider system value falls back to `serialized.id?.[2]`.\n */\nexport function extractChatModelRequestAttributes(\n llm: LangChainSerialized,\n langChainMessages: LangChainMessage[][],\n recordInputs: boolean,\n invocationParams?: Record,\n langSmithMetadata?: Record,\n): Record {\n const system = langSmithMetadata?.ls_provider ?? llm.id?.[2];\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(langChainMessages) && langChainMessages.length > 0) {\n const normalized = normalizeLangChainMessages(langChainMessages.flat());\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalized);\n\n if (systemInstructions) {\n setIfDefined(attrs, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredLength);\n\n const truncated = truncateGenAiMessages(filteredMessages as unknown[]);\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(truncated));\n }\n\n return attrs;\n}\n\n/**\n * Scans generations for Anthropic-style `tool_use` items and records them.\n *\n * LangChain represents some provider messages (e.g., Anthropic) with a `message.content`\n * array that may include objects `{ type: 'tool_use', ... }`. We collect and attach\n * them as a JSON array on `gen_ai.response.tool_calls` for downstream consumers.\n */\nfunction addToolCallsAttributes(generations: LangChainMessage[][], attrs: Record): void {\n const toolCalls: unknown[] = [];\n const flatGenerations = generations.flat();\n\n for (const gen of flatGenerations) {\n const content = gen.message?.content;\n if (Array.isArray(content)) {\n for (const item of content) {\n const t = item as { type: string };\n if (t.type === 'tool_use') toolCalls.push(t);\n }\n }\n }\n\n if (toolCalls.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, asString(toolCalls));\n }\n}\n\n/**\n * Adds token usage attributes, supporting both OpenAI (`tokenUsage`) and Anthropic (`usage`) formats.\n * - Preserve zero values (0 tokens) by avoiding truthy checks.\n * - Compute a total for Anthropic when not explicitly provided.\n * - Include cache token metrics when present.\n */\nfunction addTokenUsageAttributes(\n llmOutput: LangChainLLMResult['llmOutput'],\n attrs: Record,\n): void {\n if (!llmOutput) return;\n\n const tokenUsage = llmOutput.tokenUsage as\n | { promptTokens?: number; completionTokens?: number; totalTokens?: number }\n | undefined;\n const anthropicUsage = llmOutput.usage as\n | {\n input_tokens?: number;\n output_tokens?: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n }\n | undefined;\n\n if (tokenUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, tokenUsage.promptTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, tokenUsage.completionTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, tokenUsage.totalTokens);\n } else if (anthropicUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.input_tokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, anthropicUsage.output_tokens);\n\n // Compute total when not provided by the provider.\n const input = Number(anthropicUsage.input_tokens);\n const output = Number(anthropicUsage.output_tokens);\n const total = (Number.isNaN(input) ? 0 : input) + (Number.isNaN(output) ? 0 : output);\n if (total > 0) setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, total);\n\n // Extra Anthropic cache metrics (present only when caching is enabled)\n if (anthropicUsage.cache_creation_input_tokens !== undefined)\n setNumberIfDefined(\n attrs,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n anthropicUsage.cache_creation_input_tokens,\n );\n if (anthropicUsage.cache_read_input_tokens !== undefined)\n setNumberIfDefined(attrs, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.cache_read_input_tokens);\n }\n}\n\n/**\n * Extracts response-related attributes based on a `LangChainLLMResult`.\n *\n * - Records finish reasons when present on generations (e.g., OpenAI)\n * - When `recordOutputs` is true, captures textual response content and any\n * tool calls.\n * - Also propagates model name (`model_name` or `model`), response `id`, and\n * `stop_reason` (for providers that use it).\n */\nexport function extractLlmResponseAttributes(\n llmResult: LangChainLLMResult,\n recordOutputs: boolean,\n): Record | undefined {\n if (!llmResult) return;\n\n const attrs: Record = {};\n\n if (Array.isArray(llmResult.generations)) {\n const finishReasons = llmResult.generations\n .flat()\n .map(g => {\n // v1 uses generationInfo.finish_reason\n if (g.generationInfo?.finish_reason) {\n return g.generationInfo.finish_reason;\n }\n // v0.3+ uses generation_info.finish_reason\n if (g.generation_info?.finish_reason) {\n return g.generation_info.finish_reason;\n }\n return null;\n })\n .filter((r): r is string => typeof r === 'string');\n\n if (finishReasons.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, asString(finishReasons));\n }\n\n // Tool calls metadata (names, IDs) are not PII, so capture them regardless of recordOutputs\n addToolCallsAttributes(llmResult.generations as LangChainMessage[][], attrs);\n\n if (recordOutputs) {\n const texts = llmResult.generations\n .flat()\n .map(gen => gen.text ?? gen.message?.content)\n .filter(t => typeof t === 'string');\n\n if (texts.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, asString(texts));\n }\n }\n }\n\n addTokenUsageAttributes(llmResult.llmOutput, attrs);\n\n const llmOutput = llmResult.llmOutput;\n\n // Extract from v1 generations structure if available\n const firstGeneration = llmResult.generations?.[0]?.[0];\n const v1Message = firstGeneration?.message;\n\n // Provider model identifier: `model_name` (OpenAI-style) or `model` (others)\n // v1 stores this in message.response_metadata.model_name\n const modelName = llmOutput?.model_name ?? llmOutput?.model ?? v1Message?.response_metadata?.model_name;\n if (modelName) setIfDefined(attrs, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, modelName);\n\n // Response ID: v1 stores this in message.id\n const responseId = llmOutput?.id ?? v1Message?.id;\n if (responseId) {\n setIfDefined(attrs, GEN_AI_RESPONSE_ID_ATTRIBUTE, responseId);\n }\n\n // Stop reason: v1 stores this in message.response_metadata.finish_reason\n const stopReason = llmOutput?.stop_reason ?? v1Message?.response_metadata?.finish_reason;\n if (stopReason) {\n setIfDefined(attrs, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, asString(stopReason));\n }\n\n return attrs;\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n GEN_AI_TOOL_INPUT_ATTRIBUTE,\n GEN_AI_TOOL_NAME_ATTRIBUTE,\n GEN_AI_TOOL_OUTPUT_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { resolveAIRecordingOptions } from '../ai/utils';\nimport { LANGCHAIN_ORIGIN } from './constants';\nimport type {\n LangChainCallbackHandler,\n LangChainLLMResult,\n LangChainMessage,\n LangChainOptions,\n LangChainSerialized,\n} from './types';\nimport {\n extractChatModelRequestAttributes,\n extractLLMRequestAttributes,\n extractLlmResponseAttributes,\n getInvocationParams,\n} from './utils';\n\n/**\n * Creates a Sentry callback handler for LangChain\n * Returns a plain object that LangChain will call via duck-typing\n *\n * This is a stateful handler that tracks spans across multiple LangChain executions.\n */\nexport function createLangChainCallbackHandler(options: LangChainOptions = {}): LangChainCallbackHandler {\n const { recordInputs, recordOutputs } = resolveAIRecordingOptions(options);\n\n // Internal state - single instance tracks all spans\n const spanMap = new Map();\n\n /**\n * Exit a span and clean up\n */\n const exitSpan = (runId: string): void => {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.end();\n spanMap.delete(runId);\n }\n };\n\n /**\n * Handler for LLM Start\n * This handler will be called by LangChain's callback handler when an LLM event is detected.\n */\n const handler: LangChainCallbackHandler = {\n // Required LangChain BaseCallbackHandler properties\n lc_serializable: false,\n lc_namespace: ['langchain_core', 'callbacks', 'sentry'],\n lc_secrets: undefined,\n lc_attributes: undefined,\n lc_aliases: undefined,\n lc_serializable_keys: undefined,\n lc_id: ['langchain_core', 'callbacks', 'sentry'],\n lc_kwargs: {},\n name: 'SentryCallbackHandler',\n\n // BaseCallbackHandlerInput boolean flags\n ignoreLLM: false,\n ignoreChain: false,\n ignoreAgent: false,\n ignoreRetriever: false,\n ignoreCustomEvent: false,\n raiseError: false,\n awaitHandlers: true,\n\n handleLLMStart(\n llm: unknown,\n prompts: string[],\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractLLMRequestAttributes(\n llm as LangChainSerialized,\n prompts,\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chat Model Start Handler\n handleChatModelStart(\n llm: unknown,\n messages: unknown,\n runId: string,\n _parentRunId?: string,\n _extraParams?: Record,\n tags?: string[],\n metadata?: Record,\n _runName?: string,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractChatModelRequestAttributes(\n llm as LangChainSerialized,\n messages as LangChainMessage[][],\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // LLM End Handler - note: handleLLMEnd with capital LLM (used by both LLMs and chat models!)\n handleLLMEnd(\n output: unknown,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _extraParams?: Record,\n ) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n const attributes = extractLlmResponseAttributes(output as LangChainLLMResult, recordOutputs);\n if (attributes) {\n span.setAttributes(attributes);\n }\n exitSpan(runId);\n }\n },\n\n // LLM Error Handler - note: handleLLMError with capital LLM\n handleLLMError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.llm_error_handler`,\n },\n });\n },\n\n // Chain Start Handler\n handleChainStart(\n chain: { name?: string },\n inputs: Record,\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _metadata?: Record,\n _runType?: string,\n runName?: string,\n ) {\n const chainName = runName || chain.name || 'unknown_chain';\n const attributes: Record = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',\n 'langchain.chain.name': chainName,\n };\n\n // Add inputs if recordInputs is enabled\n if (recordInputs) {\n attributes['langchain.chain.inputs'] = JSON.stringify(inputs);\n }\n\n startSpanManual(\n {\n name: `chain ${chainName}`,\n op: 'gen_ai.invoke_agent',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.invoke_agent',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chain End Handler\n handleChainEnd(outputs: unknown, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add outputs if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n 'langchain.chain.outputs': JSON.stringify(outputs),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Chain Error Handler\n handleChainError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.chain_error_handler`,\n },\n });\n },\n\n // Tool Start Handler\n handleToolStart(tool: { name?: string }, input: string, runId: string, _parentRunId?: string) {\n const toolName = tool.name || 'unknown_tool';\n const attributes: Record = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n [GEN_AI_TOOL_NAME_ATTRIBUTE]: toolName,\n };\n\n // Add input if recordInputs is enabled\n if (recordInputs) {\n attributes[GEN_AI_TOOL_INPUT_ATTRIBUTE] = input;\n }\n\n startSpanManual(\n {\n name: `execute_tool ${toolName}`,\n op: 'gen_ai.execute_tool',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.execute_tool',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Tool End Handler\n handleToolEnd(output: unknown, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add output if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n [GEN_AI_TOOL_OUTPUT_ATTRIBUTE]: JSON.stringify(output),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Tool Error Handler\n handleToolError(error: Error, runId: string) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.tool_error_handler`,\n },\n });\n },\n\n // LangChain BaseCallbackHandler required methods\n copy() {\n return handler;\n },\n\n toJSON() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n\n toJSONNotImplemented() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n };\n\n return handler;\n}\n","export const LANGGRAPH_INTEGRATION_NAME = 'LangGraph';\nexport const LANGGRAPH_ORIGIN = 'auto.ai.langgraph';\n","import type { Span } from '../../types-hoist/span';\nimport {\n GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport type { CompiledGraph, LangGraphTool } from './types';\n\n/**\n * Extract tool calls from messages\n */\nexport function extractToolCalls(messages: Array> | null): unknown[] | null {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const toolCalls: unknown[] = [];\n\n for (const message of messages) {\n if (message && typeof message === 'object') {\n const msgToolCalls = message.tool_calls;\n if (msgToolCalls && Array.isArray(msgToolCalls)) {\n toolCalls.push(...msgToolCalls);\n }\n }\n }\n\n return toolCalls.length > 0 ? toolCalls : null;\n}\n\n/**\n * Extract token usage from a message's usage_metadata or response_metadata\n * Returns token counts without setting span attributes\n */\nexport function extractTokenUsageFromMessage(message: LangChainMessage): {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n} {\n const msg = message as Record;\n let inputTokens = 0;\n let outputTokens = 0;\n let totalTokens = 0;\n\n // Extract from usage_metadata (newer format)\n if (msg.usage_metadata && typeof msg.usage_metadata === 'object') {\n const usage = msg.usage_metadata as Record;\n if (typeof usage.input_tokens === 'number') {\n inputTokens = usage.input_tokens;\n }\n if (typeof usage.output_tokens === 'number') {\n outputTokens = usage.output_tokens;\n }\n if (typeof usage.total_tokens === 'number') {\n totalTokens = usage.total_tokens;\n }\n return { inputTokens, outputTokens, totalTokens };\n }\n\n // Fallback: Extract from response_metadata.tokenUsage\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata as Record;\n if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') {\n const tokenUsage = metadata.tokenUsage as Record;\n if (typeof tokenUsage.promptTokens === 'number') {\n inputTokens = tokenUsage.promptTokens;\n }\n if (typeof tokenUsage.completionTokens === 'number') {\n outputTokens = tokenUsage.completionTokens;\n }\n if (typeof tokenUsage.totalTokens === 'number') {\n totalTokens = tokenUsage.totalTokens;\n }\n }\n }\n\n return { inputTokens, outputTokens, totalTokens };\n}\n\n/**\n * Extract model and finish reason from a message's response_metadata\n */\nexport function extractModelMetadata(span: Span, message: LangChainMessage): void {\n const msg = message as Record;\n\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata as Record;\n\n if (metadata.model_name && typeof metadata.model_name === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, metadata.model_name);\n }\n\n if (metadata.finish_reason && typeof metadata.finish_reason === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, [metadata.finish_reason]);\n }\n }\n}\n\n/**\n * Extract tools from compiled graph structure\n *\n * Tools are stored in: compiledGraph.builder.nodes.tools.runnable.tools\n */\nexport function extractToolsFromCompiledGraph(compiledGraph: CompiledGraph): unknown[] | null {\n if (!compiledGraph.builder?.nodes?.tools?.runnable?.tools) {\n return null;\n }\n\n const tools = compiledGraph.builder?.nodes?.tools?.runnable?.tools;\n\n if (!tools || !Array.isArray(tools) || tools.length === 0) {\n return null;\n }\n\n // Extract name, description, and schema from each tool's lc_kwargs\n return tools.map((tool: LangGraphTool) => ({\n name: tool.lc_kwargs?.name,\n description: tool.lc_kwargs?.description,\n schema: tool.lc_kwargs?.schema,\n }));\n}\n\n/**\n * Set response attributes on the span\n */\nexport function setResponseAttributes(span: Span, inputMessages: LangChainMessage[] | null, result: unknown): void {\n // Extract messages from result\n const resultObj = result as { messages?: LangChainMessage[] } | undefined;\n const outputMessages = resultObj?.messages;\n\n if (!outputMessages || !Array.isArray(outputMessages)) {\n return;\n }\n\n // Get new messages (delta between input and output)\n const inputCount = inputMessages?.length ?? 0;\n const newMessages = outputMessages.length > inputCount ? outputMessages.slice(inputCount) : [];\n\n if (newMessages.length === 0) {\n return;\n }\n\n // Extract and set tool calls from new messages BEFORE normalization\n // (normalization strips tool_calls, so we need to extract them first)\n const toolCalls = extractToolCalls(newMessages as Array>);\n if (toolCalls) {\n span.setAttribute(GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, JSON.stringify(toolCalls));\n }\n\n // Normalize the new messages\n const normalizedNewMessages = normalizeLangChainMessages(newMessages);\n span.setAttribute(GEN_AI_RESPONSE_TEXT_ATTRIBUTE, JSON.stringify(normalizedNewMessages));\n\n // Accumulate token usage across all messages\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalTokens = 0;\n\n // Extract metadata from messages\n for (const message of newMessages) {\n // Accumulate token usage\n const tokens = extractTokenUsageFromMessage(message);\n totalInputTokens += tokens.inputTokens;\n totalOutputTokens += tokens.outputTokens;\n totalTokens += tokens.totalTokens;\n\n // Extract model metadata (last message's metadata wins for model/finish_reason)\n extractModelMetadata(span, message);\n }\n\n // Set accumulated token usage on span\n if (totalInputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, totalInputTokens);\n }\n if (totalOutputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, totalOutputTokens);\n }\n if (totalTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, totalTokens);\n }\n}\n","import { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport {\n GEN_AI_AGENT_NAME_ATTRIBUTE,\n GEN_AI_CONVERSATION_ID_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ATTRIBUTE,\n GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,\n GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n GEN_AI_OPERATION_NAME_ATTRIBUTE,\n GEN_AI_PIPELINE_NAME_ATTRIBUTE,\n GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { truncateGenAiMessages } from '../ai/messageTruncation';\nimport { extractSystemInstructions, resolveAIRecordingOptions } from '../ai/utils';\nimport type { LangChainMessage } from '../langchain/types';\nimport { normalizeLangChainMessages } from '../langchain/utils';\nimport { startSpan } from '../trace';\nimport { LANGGRAPH_ORIGIN } from './constants';\nimport type { CompiledGraph, LangGraphOptions } from './types';\nimport { extractToolsFromCompiledGraph, setResponseAttributes } from './utils';\n\n/**\n * Instruments StateGraph's compile method to create spans for agent creation and invocation\n *\n * Wraps the compile() method to:\n * - Create a `gen_ai.create_agent` span when compile() is called\n * - Automatically wrap the invoke() method on the returned compiled graph with a `gen_ai.invoke_agent` span\n *\n */\nexport function instrumentStateGraphCompile(\n originalCompile: (...args: unknown[]) => CompiledGraph,\n options: LangGraphOptions,\n): (...args: unknown[]) => CompiledGraph {\n return new Proxy(originalCompile, {\n apply(target, thisArg, args: unknown[]): CompiledGraph {\n return startSpan(\n {\n op: 'gen_ai.create_agent',\n name: 'create_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.create_agent',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'create_agent',\n },\n },\n span => {\n try {\n const compiledGraph = Reflect.apply(target, thisArg, args);\n const compileOptions = args.length > 0 ? (args[0] as Record) : {};\n\n // Extract graph name\n if (compileOptions?.name && typeof compileOptions.name === 'string') {\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, compileOptions.name);\n span.updateName(`create_agent ${compileOptions.name}`);\n }\n\n // Instrument agent invoke method on the compiled graph\n const originalInvoke = compiledGraph.invoke;\n if (originalInvoke && typeof originalInvoke === 'function') {\n compiledGraph.invoke = instrumentCompiledGraphInvoke(\n originalInvoke.bind(compiledGraph) as (...args: unknown[]) => Promise,\n compiledGraph,\n compileOptions,\n options,\n ) as typeof originalInvoke;\n }\n\n return compiledGraph;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) as (...args: unknown[]) => CompiledGraph;\n}\n\n/**\n * Instruments CompiledGraph's invoke method to create spans for agent invocation\n *\n * Creates a `gen_ai.invoke_agent` span when invoke() is called\n */\nfunction instrumentCompiledGraphInvoke(\n originalInvoke: (...args: unknown[]) => Promise,\n graphInstance: CompiledGraph,\n compileOptions: Record,\n options: LangGraphOptions,\n): (...args: unknown[]) => Promise {\n return new Proxy(originalInvoke, {\n apply(target, thisArg, args: unknown[]): Promise {\n return startSpan(\n {\n op: 'gen_ai.invoke_agent',\n name: 'invoke_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'invoke_agent',\n },\n },\n async span => {\n try {\n const graphName = compileOptions?.name;\n\n if (graphName && typeof graphName === 'string') {\n span.setAttribute(GEN_AI_PIPELINE_NAME_ATTRIBUTE, graphName);\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, graphName);\n span.updateName(`invoke_agent ${graphName}`);\n }\n\n // Extract thread_id from the config (second argument)\n // LangGraph uses config.configurable.thread_id for conversation/session linking\n const config = args.length > 1 ? (args[1] as Record | undefined) : undefined;\n const configurable = config?.configurable as Record | undefined;\n const threadId = configurable?.thread_id;\n if (threadId && typeof threadId === 'string') {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, threadId);\n }\n\n // Extract available tools from the graph instance\n const tools = extractToolsFromCompiledGraph(graphInstance);\n if (tools) {\n span.setAttribute(GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, JSON.stringify(tools));\n }\n\n // Parse input messages\n const recordInputs = options.recordInputs;\n const recordOutputs = options.recordOutputs;\n const inputMessages =\n args.length > 0 ? ((args[0] as { messages?: LangChainMessage[] } | null)?.messages ?? []) : [];\n\n if (inputMessages && recordInputs) {\n const normalizedMessages = normalizeLangChainMessages(inputMessages);\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalizedMessages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedMessages = truncateGenAiMessages(filteredMessages as unknown[]);\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncatedMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n\n // Call original invoke\n const result = await Reflect.apply(target, thisArg, args);\n\n // Set response attributes\n if (recordOutputs) {\n setResponseAttributes(span, inputMessages ?? null, result);\n }\n\n return result;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) as (...args: unknown[]) => Promise;\n}\n\n/**\n * Directly instruments a StateGraph instance to add tracing spans\n *\n * This function can be used to manually instrument LangGraph StateGraph instances\n * in environments where automatic instrumentation is not available or desired.\n *\n * @param stateGraph - The StateGraph instance to instrument\n * @param options - Optional configuration for recording inputs/outputs\n *\n * @example\n * ```typescript\n * import { instrumentLangGraph } from '@sentry/cloudflare';\n * import { StateGraph } from '@langchain/langgraph';\n *\n * const graph = new StateGraph(MessagesAnnotation)\n * .addNode('agent', mockLlm)\n * .addEdge(START, 'agent')\n * .addEdge('agent', END);\n *\n * instrumentLangGraph(graph, { recordInputs: true, recordOutputs: true });\n * const compiled = graph.compile({ name: 'my_agent' });\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function instrumentLangGraph any }>(\n stateGraph: T,\n options?: LangGraphOptions,\n): T {\n stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile, resolveAIRecordingOptions(options));\n\n return stateGraph;\n}\n","import type { SeverityLevel } from '../types-hoist/severity';\n\n/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nexport function getBreadcrumbLogLevelFromHttpStatusCode(statusCode: number | undefined): SeverityLevel | undefined {\n // NOTE: undefined defaults to 'info' in Sentry\n if (statusCode === undefined) {\n return undefined;\n } else if (statusCode >= 400 && statusCode < 500) {\n return 'warning';\n } else if (statusCode >= 500) {\n return 'error';\n } else {\n return undefined;\n }\n}\n","import type { ConsoleLevel } from '../types-hoist/instrument';\n\n/**\n * An error emitted by Sentry SDKs and related utilities.\n * @deprecated This class is no longer used and will be removed in a future version. Use `Error` instead.\n */\nexport class SentryError extends Error {\n public logLevel: ConsoleLevel;\n\n public constructor(\n public message: string,\n logLevel: ConsoleLevel = 'warn',\n ) {\n super(message);\n\n this.logLevel = logLevel;\n }\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { debug } from './debug-logger';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\ndeclare const EdgeRuntime: string | undefined;\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch {\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 */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch {\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 */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch {\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 */\nexport function supportsHistory(): boolean {\n return 'history' in WINDOW && !!WINDOW.history;\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport const supportsFetch = _isFetchSupported;\n\nfunction _isFetchSupported(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n // Deno requires a valid URL so '' cannot be used as an argument\n new Request('data:,');\n new Response();\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * isNative checks if the given function is a native implementation\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFunction(func: Function): boolean {\n return func && /^function\\s+\\w+\\(\\)\\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 */\nexport function supportsNativeFetch(): boolean {\n if (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!_isFetchSupported()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFunction(WINDOW.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 const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow?.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFunction(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n DEBUG_BUILD && debug.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 */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n * @deprecated This is no longer used and will be removed in a future major version.\n */\nexport function supportsReferrerPolicy(): boolean {\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 (!_isFetchSupported()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch {\n return false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getClient } from '../currentScopes';\nimport type { HandlerDataFetch } from '../types-hoist/instrument';\nimport type { WebFetchHeaders } from '../types-hoist/webfetchapi';\nimport { isError, isRequest } from '../utils/is';\nimport { addNonEnumerableProperty, fill } from '../utils/object';\nimport { supportsNativeFetch } from '../utils/supports';\nimport { timestampInSeconds } from '../utils/time';\nimport { GLOBAL_OBJ } from '../utils/worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(\n handler: (data: HandlerDataFetch) => void,\n skipNativeFetchCheck?: boolean,\n): void {\n const type = 'fetch';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(undefined, skipNativeFetchCheck));\n}\n\n/**\n * Add an instrumentation handler for long-lived fetch requests, like consuming server-sent events (SSE) via fetch.\n * The handler will resolve the request body and emit the actual `endTimestamp`, so that the\n * span can be updated accordingly.\n *\n * Only used internally\n * @hidden\n */\nexport function addFetchEndInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n const type = 'fetch-body-resolved';\n addHandler(type, handler);\n maybeInstrument(type, () => instrumentFetch(streamHandler));\n}\n\nfunction instrumentFetch(onFetchResolved?: (response: Response) => void, skipNativeFetchCheck: boolean = false): void {\n if (skipNativeFetchCheck && !supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n // We capture the error right here and not in the Promise error callback because Safari (and probably other\n // browsers too) will wipe the stack trace up to this point, only leaving us with this file which is useless.\n\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n const virtualError = new Error();\n\n const { method, url } = parseFetchArgs(args);\n const handlerData: HandlerDataFetch = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: timestampInSeconds() * 1000,\n // // Adding the error to be able to fingerprint the failed fetch event in HttpClient instrumentation\n virtualError,\n headers: getHeadersFromFetchArgs(args),\n };\n\n // if there is no callback, fetch is instrumented directly\n if (!onFetchResolved) {\n triggerHandlers('fetch', {\n ...handlerData,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n async (response: Response) => {\n if (onFetchResolved) {\n onFetchResolved(response);\n } else {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n }\n\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: timestampInSeconds() * 1000,\n error,\n });\n\n if (isError(error) && error.stack === undefined) {\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your fetch call did not\n // have a stack trace, so the SDK backfilled the stack trace so\n // you can see which fetch call failed.\n error.stack = virtualError.stack;\n addNonEnumerableProperty(error, 'framesToPop', 1);\n }\n\n // We enhance fetch error messages with hostname information based on the configuration.\n // Possible messages we handle here:\n // * \"Failed to fetch\" (chromium)\n // * \"Load failed\" (webkit)\n // * \"NetworkError when attempting to fetch resource.\" (firefox)\n const client = getClient();\n const enhanceOption = client?.getOptions().enhanceFetchErrorMessages ?? 'always';\n const shouldEnhance = enhanceOption !== false;\n\n if (\n shouldEnhance &&\n error instanceof TypeError &&\n (error.message === 'Failed to fetch' ||\n error.message === 'Load failed' ||\n error.message === 'NetworkError when attempting to fetch resource.')\n ) {\n try {\n const url = new URL(handlerData.fetchData.url);\n const hostname = url.host;\n\n if (enhanceOption === 'always') {\n // Modify the error message directly\n error.message = `${error.message} (${hostname})`;\n } else {\n // Store hostname as non-enumerable property for Sentry-only enhancement\n // This preserves the original error message for third-party packages\n addNonEnumerableProperty(error, '__sentry_fetch_url_host__', hostname);\n }\n } catch {\n // ignore it if errors happen here\n }\n }\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\nasync function resolveResponse(res: Response | undefined, onFinishedResolving: () => void): Promise {\n if (res?.body) {\n const body = res.body;\n const responseReader = body.getReader();\n\n // Define a maximum duration after which we just cancel\n const maxFetchDurationTimeout = setTimeout(\n () => {\n body.cancel().then(null, () => {\n // noop\n });\n },\n 90 * 1000, // 90s\n );\n\n let readingActive = true;\n while (readingActive) {\n let chunkTimeout;\n try {\n // abort reading if read op takes more than 5s\n chunkTimeout = setTimeout(() => {\n body.cancel().then(null, () => {\n // noop on error\n });\n }, 5000);\n\n // This .read() call will reject/throw when we abort due to timeouts through `body.cancel()`\n const { done } = await responseReader.read();\n\n clearTimeout(chunkTimeout);\n\n if (done) {\n onFinishedResolving();\n readingActive = false;\n }\n } catch {\n readingActive = false;\n } finally {\n clearTimeout(chunkTimeout);\n }\n }\n\n clearTimeout(maxFetchDurationTimeout);\n\n responseReader.releaseLock();\n body.cancel().then(null, () => {\n // noop on error\n });\n }\n}\n\nfunction streamHandler(response: Response): void {\n // clone response for awaiting stream\n let clonedResponseForResolving: Response;\n try {\n clonedResponseForResolving = response.clone();\n } catch {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resolveResponse(clonedResponseForResolving, () => {\n triggerHandlers('fetch-body-resolved', {\n endTimestamp: timestampInSeconds() * 1000,\n response,\n });\n });\n}\n\nfunction hasProp(obj: unknown, prop: T): obj is Record {\n return !!obj && typeof obj === 'object' && !!(obj as Record)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [resource, options] = fetchArgs as [FetchResource, object];\n\n return {\n url: getUrlFromResource(resource),\n method: hasProp(options, 'method')\n ? String(options.method).toUpperCase()\n : // Request object as first argument\n isRequest(resource) && hasProp(resource, 'method')\n ? String(resource.method).toUpperCase()\n : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg as FetchResource),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\nfunction getHeadersFromFetchArgs(fetchArgs: unknown[]): WebFetchHeaders | undefined {\n const [requestArgument, optionsArgument] = fetchArgs;\n\n try {\n if (\n typeof optionsArgument === 'object' &&\n optionsArgument !== null &&\n 'headers' in optionsArgument &&\n optionsArgument.headers\n ) {\n return new Headers(optionsArgument.headers as any);\n }\n\n if (isRequest(requestArgument)) {\n return new Headers(requestArgument.headers);\n }\n } catch {\n // noop\n }\n\n return;\n}\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 * `debug` 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 flags 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\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader' | 'aws-lambda-layer';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // This comment is used to identify this line in the CDN bundle build step and replace this with \"return 'cdn';\"\n /* __SENTRY_SDK_SOURCE__ */ return 'npm';\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 `debug` singleton, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\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 * @param existingModule module to use for requiring\n * @returns possibly required module\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function loadModule(moduleName: string, existingModule: any = module): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(existingModule, moduleName);\n } catch {\n // no-empty\n }\n\n if (!mod) {\n try {\n const { cwd } = dynamicRequire(existingModule, 'process');\n mod = dynamicRequire(existingModule, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch {\n // no-empty\n }\n }\n\n return mod;\n}\n","import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n const process = (GLOBAL_OBJ as typeof GLOBAL_OBJ & { process?: ElectronProcess }).process;\n return process?.type === 'renderer';\n}\n","/**\n * Replaces constructor functions in module exports, handling read-only properties,\n * and both default and named exports by wrapping them with the constructor.\n *\n * @param exports The module exports object to modify\n * @param exportName The name of the export to replace (e.g., 'GoogleGenAI', 'Anthropic', 'OpenAI')\n * @param wrappedConstructor The wrapped constructor function to replace the original with\n * @returns void\n */\nexport function replaceExports(\n exports: { [key: string]: unknown },\n exportName: string,\n wrappedConstructor: unknown,\n): void {\n const original = exports[exportName];\n\n if (typeof original !== 'function') {\n return;\n }\n\n // Replace the named export - handle read-only properties\n try {\n exports[exportName] = wrappedConstructor;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports, exportName, {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Replace the default export if it points to the original constructor\n if (exports.default === original) {\n try {\n exports.default = wrappedConstructor;\n } catch {\n Object.defineProperty(exports, 'default', {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n}\n","// This code was originally forked from https://github.com/felixge/node-stack-trace\n// Since then it has been highly modified to fit our needs.\n\n// Copyright (c) 2011 Felix Geisendörfer (felix@debuggable.com)//\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions://\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.//\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport type { StackLineParser, StackLineParserFn } from '../types-hoist/stacktrace';\nimport { normalizeStackTracePath, UNKNOWN_FUNCTION } from './stacktrace';\n\nexport type GetModuleFn = (filename: string | undefined) => string | undefined;\n\n/**\n * Does this filename look like it's part of the app code?\n */\nexport function filenameIsInApp(filename: string, isNative: boolean = false): boolean {\n const isInternal =\n isNative ||\n (filename &&\n // It's not internal if it's an absolute linux path\n !filename.startsWith('/') &&\n // It's not internal if it's an absolute windows path\n !filename.match(/^[A-Z]:/) &&\n // It's not internal if the path is starting with a dot\n !filename.startsWith('.') &&\n // It's not internal if the frame has a protocol. In node, this is usually the case if the file got pre-processed with a bundler like webpack\n !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//)); // Schema from: https://stackoverflow.com/a/3641782\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\n return !isInternal && filename !== undefined && !filename.includes('node_modules/');\n}\n\n/** Node Stack line parser */\nexport function node(getModule?: GetModuleFn): StackLineParserFn {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n const DATA_URI_MATCH = /at (?:async )?(.+?) \\(data:(.*?),/;\n\n return (line: string) => {\n const dataUriMatch = line.match(DATA_URI_MATCH);\n if (dataUriMatch) {\n return {\n filename: ``,\n function: dataUriMatch[1],\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n\n if (lineMatch) {\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\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.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(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 || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n let filename = normalizeStackTracePath(lineMatch[2]);\n const isNative = lineMatch[5] === 'native';\n\n if (!filename && lineMatch[5] && !isNative) {\n filename = lineMatch[5];\n }\n\n const maybeDecodedFilename = filename ? _safeDecodeURI(filename) : undefined;\n return {\n filename: maybeDecodedFilename ?? filename,\n module: maybeDecodedFilename && getModule?.(maybeDecodedFilename),\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n };\n }\n\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n return undefined;\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/core 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 */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n\nfunction _parseIntOrUndefined(input: string | undefined): number | undefined {\n return parseInt(input || '', 10) || undefined;\n}\n\nfunction _safeDecodeURI(filename: string): string | undefined {\n try {\n return decodeURI(filename);\n } catch {\n return undefined;\n }\n}\n","import type { StackFrame } from '../types-hoist/stackframe';\nimport { filenameIsInApp } from './node-stack-trace';\nimport { UNKNOWN_FUNCTION } from './stacktrace';\n\ntype WatchdogReturn = {\n /** Resets the watchdog timer */\n poll: () => void;\n /** Enables or disables the watchdog timer */\n enabled: (state: boolean) => void;\n};\n\ntype CreateTimerImpl = () => { getTimeMs: () => number; reset: () => void };\n\n/**\n * A node.js watchdog timer\n * @param pollInterval The interval that we expect to get polled at\n * @param anrThreshold The threshold for when we consider ANR\n * @param callback The callback to call for ANR\n * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn}\n */\nexport function watchdogTimer(\n createTimer: CreateTimerImpl,\n pollInterval: number,\n anrThreshold: number,\n callback: () => void,\n): WatchdogReturn {\n const timer = createTimer();\n let triggered = false;\n let enabled = true;\n\n setInterval(() => {\n const diffMs = timer.getTimeMs();\n\n if (triggered === false && diffMs > pollInterval + anrThreshold) {\n triggered = true;\n if (enabled) {\n callback();\n }\n }\n\n if (diffMs < pollInterval + anrThreshold) {\n triggered = false;\n }\n }, 20);\n\n return {\n poll: () => {\n timer.reset();\n },\n enabled: (state: boolean) => {\n enabled = state;\n },\n };\n}\n\n// types copied from inspector.d.ts\ninterface Location {\n scriptId: string;\n lineNumber: number;\n columnNumber?: number;\n}\n\ninterface CallFrame {\n functionName: string;\n location: Location;\n url: string;\n}\n\n/**\n * Converts Debugger.CallFrame to Sentry StackFrame\n */\nexport function callFrameToStackFrame(\n frame: CallFrame,\n url: string | undefined,\n getModuleFromFilename: (filename: string | undefined) => string | undefined,\n): StackFrame {\n const filename = url ? url.replace(/^file:\\/\\//, '') : undefined;\n\n // CallFrame row/col are 0 based, whereas StackFrame are 1 based\n const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined;\n const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined;\n\n return {\n filename,\n module: getModuleFromFilename(filename),\n function: frame.functionName || UNKNOWN_FUNCTION,\n colno,\n lineno,\n in_app: filename ? filenameIsInApp(filename) : undefined,\n };\n}\n","/** A simple Least Recently Used map */\nexport class LRUMap {\n private readonly _cache: Map;\n\n public constructor(private readonly _maxSize: number) {\n this._cache = new Map();\n }\n\n /** Get the current size of the cache */\n public get size(): number {\n return this._cache.size;\n }\n\n /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */\n public get(key: K): V | undefined {\n const value = this._cache.get(key);\n if (value === undefined) {\n return undefined;\n }\n // Remove and re-insert to update the order\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n\n /** Insert an entry and evict an older entry if we've reached maxSize */\n public set(key: K, value: V): void {\n if (this._cache.size >= this._maxSize) {\n // keys() returns an iterator in insertion order so keys().next() gives us the oldest key\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nextKey = this._cache.keys().next().value!;\n this._cache.delete(nextKey);\n }\n this._cache.set(key, value);\n }\n\n /** Remove an entry and return the entry if it was in the cache */\n public remove(key: K): V | undefined {\n const value = this._cache.get(key);\n if (value) {\n this._cache.delete(key);\n }\n return value;\n }\n\n /** Clear all entries */\n public clear(): void {\n this._cache.clear();\n }\n\n /** Get all the keys */\n public keys(): Array {\n return Array.from(this._cache.keys());\n }\n\n /** Get all the values */\n public values(): Array {\n const values: V[] = [];\n this._cache.forEach(value => values.push(value));\n return values;\n }\n}\n","import { GLOBAL_OBJ } from './worldwide';\n\ndeclare const EdgeRuntime: string | undefined;\n\ninterface VercelRequestContextGlobal {\n get?():\n | {\n waitUntil?: (task: Promise) => void;\n }\n | undefined;\n}\n\n/**\n * Function that delays closing of a Vercel lambda until the provided promise is resolved.\n *\n * Vendored from https://www.npmjs.com/package/@vercel/functions\n */\nexport function vercelWaitUntil(task: Promise): void {\n // We only flush manually in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n if (typeof EdgeRuntime !== 'string') {\n return;\n }\n const vercelRequestContextGlobal: VercelRequestContextGlobal | undefined =\n // @ts-expect-error This is not typed\n GLOBAL_OBJ[Symbol.for('@vercel/request-context')];\n\n const ctx = vercelRequestContextGlobal?.get?.();\n\n if (ctx?.waitUntil) {\n ctx.waitUntil(task);\n }\n}\n","import { flush } from '../exports';\nimport { debug } from './debug-logger';\nimport { vercelWaitUntil } from './vercelWaitUntil';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype MinimalCloudflareContext = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n waitUntil(promise: Promise): void;\n};\n\nasync function flushWithTimeout(timeout: number): Promise {\n try {\n debug.log('Flushing events...');\n await flush(timeout);\n debug.log('Done flushing events');\n } catch (e) {\n debug.log('Error while flushing events:\\n', e);\n }\n}\n\n/**\n * Flushes the event queue with a timeout in serverless environments to ensure that events are sent to Sentry before the\n * serverless function execution ends.\n *\n * The function is async, but in environments that support a `waitUntil` mechanism, it will run synchronously.\n *\n * This function is aware of the following serverless platforms:\n * - Cloudflare: If a Cloudflare context is provided, it will use `ctx.waitUntil()` to flush events (keeps the `this` context of `ctx`).\n * If a `cloudflareWaitUntil` function is provided, it will use that to flush events (looses the `this` context of `ctx`).\n * - Vercel: It detects the Vercel environment and uses Vercel's `waitUntil` function.\n * - Other Serverless (AWS Lambda, Google Cloud, etc.): It detects the environment via environment variables\n * and uses a regular `await flush()`.\n *\n * @internal This function is supposed for internal Sentry SDK usage only.\n * @hidden\n */\nexport async function flushIfServerless(\n params: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | { timeout?: number; cloudflareWaitUntil?: (task: Promise) => void }\n | { timeout?: number; cloudflareCtx?: MinimalCloudflareContext } = {},\n): Promise {\n const { timeout = 2000 } = params;\n\n if ('cloudflareWaitUntil' in params && typeof params?.cloudflareWaitUntil === 'function') {\n params.cloudflareWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if ('cloudflareCtx' in params && typeof params.cloudflareCtx?.waitUntil === 'function') {\n params.cloudflareCtx.waitUntil(flushWithTimeout(timeout));\n return;\n }\n\n // Note: vercelWaitUntil only does something in Vercel Edge runtime\n // In Node runtime, we use process.on('SIGTERM') instead\n // @ts-expect-error This is not typed\n if (GLOBAL_OBJ[Symbol.for('@vercel/request-context')]) {\n // Vercel has a waitUntil equivalent that works without execution context\n vercelWaitUntil(flushWithTimeout(timeout));\n return;\n }\n\n if (typeof process === 'undefined') {\n return;\n }\n\n const isServerless =\n !!process.env.FUNCTIONS_WORKER_RUNTIME || // Azure Functions\n !!process.env.LAMBDA_TASK_ROOT || // AWS Lambda\n !!process.env.K_SERVICE || // Google Cloud Run\n !!process.env.CF_PAGES || // Cloudflare Pages\n !!process.env.VERCEL ||\n !!process.env.NETLIFY;\n\n if (isServerless) {\n // Use regular flush for environments without a generic waitUntil mechanism\n await flushWithTimeout(timeout);\n }\n}\n","// Based on https://github.com/sindresorhus/escape-string-regexp but with modifications to:\n// a) reduce the size by skipping the runtime type - checking\n// b) ensure it gets down - compiled for old versions of Node(the published package only supports Node 14+).\n//\n// MIT License\n//\n// Copyright (c) Sindre Sorhus (https://sindresorhus.com)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation\n// the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and\n// to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of\n// the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\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 * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\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","import { parseSemver } from '@sentry/core';\nimport * as fs from 'fs';\nimport { createRequire } from 'module';\nimport * as path from 'path';\n\n/**\n * Returns the version of Next.js installed in the project, or undefined if it cannot be determined.\n */\nexport function getNextjsVersion(): string | undefined {\n const nextjsPackageJsonPath = resolveNextjsPackageJson();\n if (nextjsPackageJsonPath) {\n try {\n const nextjsPackageJson: { version: string } = JSON.parse(\n fs.readFileSync(nextjsPackageJsonPath, { encoding: 'utf-8' }),\n );\n return nextjsPackageJson.version;\n } catch {\n // noop\n }\n }\n\n return undefined;\n}\n\nfunction resolveNextjsPackageJson(): string | undefined {\n try {\n return createRequire(`${process.cwd()}/`).resolve('next/package.json');\n } catch {\n return undefined;\n }\n}\n\n/**\n * Checks if the current Next.js version supports the runAfterProductionCompile hook.\n * This hook was introduced in Next.js 15.4.1. (https://github.com/vercel/next.js/pull/77345)\n *\n * @param version - version string to check.\n * @returns true if Next.js version is 15.4.1 or higher\n */\nexport function supportsProductionCompileHook(version: string): boolean {\n const versionToCheck = version;\n if (!versionToCheck) {\n return false;\n }\n\n const { major, minor, patch } = parseSemver(versionToCheck);\n\n if (major === undefined || minor === undefined || patch === undefined) {\n return false;\n }\n\n if (major > 15) {\n return true;\n }\n\n // For major version 15, check if it's 15.4.1 or higher\n if (major === 15) {\n if (minor > 4) {\n return true;\n }\n if (minor === 4 && patch >= 1) {\n return true;\n }\n return false;\n }\n\n return false;\n}\n\n/**\n * Checks if the current Next.js version supports the `condition` field in Turbopack rules.\n * This field was introduced in Next.js 16.\n *\n * @param version - version string to check.\n * @returns true if Next.js version is 16 or higher\n */\nexport function supportsTurbopackRuleCondition(version: string): boolean {\n if (!version) {\n return false;\n }\n\n const { major } = parseSemver(version);\n\n if (major === undefined) {\n return false;\n }\n\n return major >= 16;\n}\n\n/**\n * Checks if the current Next.js version supports native debug ids for turbopack.\n * This feature was first introduced in Next.js v15.6.0-canary.36 and marked stable in Next.js v16\n *\n * @param version - version string to check.\n * @returns true if Next.js version supports native debug ids for turbopack builds\n */\nexport function supportsNativeDebugIds(version: string): boolean {\n if (!version) {\n return false;\n }\n\n const { major, minor, prerelease } = parseSemver(version);\n\n if (major === undefined || minor === undefined) {\n return false;\n }\n\n // Next.js 16+ supports native debug ids\n if (major >= 16) {\n return true;\n }\n\n // For Next.js 15, check if it's 15.6.0-canary.36+\n if (major === 15 && prerelease?.startsWith('canary.')) {\n // Any canary version 15.7+ supports native debug ids\n if (minor > 6) {\n return true;\n }\n\n // For 15.6 canary versions, check if it's canary.36 or higher\n if (minor === 6) {\n const canaryNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n if (canaryNumber >= 36) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Checks if the given Next.js version requires the `experimental.instrumentationHook` option.\n * Next.js 15.0.0 and higher (including certain RC and canary versions) no longer require this option\n * and will print a warning if it is set.\n *\n * @param version - version string to check.\n * @returns true if the version requires the instrumentationHook option to be set\n */\nexport function requiresInstrumentationHook(version: string): boolean {\n if (!version) {\n return true; // Default to requiring it if version cannot be determined\n }\n\n const { major, minor, patch, prerelease } = parseSemver(version);\n\n if (major === undefined || minor === undefined || patch === undefined) {\n return true; // Default to requiring it if parsing fails\n }\n\n // Next.js 16+ never requires the hook\n if (major >= 16) {\n return false;\n }\n\n // Next.js 14 and below always require the hook\n if (major < 15) {\n return true;\n }\n\n // At this point, we know it's Next.js 15.x.y\n // Stable releases (15.0.0+) don't require the hook\n if (!prerelease) {\n return false;\n }\n\n // Next.js 15.x.y with x > 0 or y > 0 don't require the hook\n if (minor > 0 || patch > 0) {\n return false;\n }\n\n // Check specific prerelease versions that don't require the hook\n if (prerelease.startsWith('rc.')) {\n const rcNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n return rcNumber === 0; // Only rc.0 requires the hook\n }\n\n if (prerelease.startsWith('canary.')) {\n const canaryNumber = parseInt(prerelease.split('.')[1] || '0', 10);\n return canaryNumber < 124; // canary.124+ doesn't require the hook\n }\n\n // All other 15.0.0 prerelease versions (alpha, beta, etc.) require the hook\n return true;\n}\n\n/**\n * Determines which bundler is actually being used based on environment variables,\n * and CLI flags.\n *\n * @returns 'turbopack' or 'webpack'\n */\nexport function detectActiveBundler(): 'turbopack' | 'webpack' {\n const turbopackEnv = process.env.TURBOPACK;\n\n // Check if TURBOPACK env var is set to a truthy value (excluding falsy strings like 'false', '0', '')\n const isTurbopackEnabled = turbopackEnv && turbopackEnv !== 'false' && turbopackEnv !== '0';\n\n if (isTurbopackEnabled || process.argv.includes('--turbo')) {\n return 'turbopack';\n } else {\n return 'webpack';\n }\n}\n\n/**\n * Extract modules from project directory's package.json\n */\nexport function getPackageModules(projectDir: string): Record {\n try {\n const packageJson = path.join(projectDir, 'package.json');\n const packageJsonContent = fs.readFileSync(packageJson, 'utf8');\n const packageJsonObject = JSON.parse(packageJsonContent) as {\n dependencies?: Record;\n devDependencies?: Record;\n };\n\n return {\n ...packageJsonObject.dependencies,\n ...packageJsonObject.devDependencies,\n };\n } catch {\n return {};\n }\n}\n","import * as childProcess from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type { NextConfigObject, SentryBuildOptions } from '../types';\n\n/**\n * Adds Sentry-related build-time variables to `nextConfig.env`.\n *\n * Note: this mutates `userNextConfig`.\n *\n * @param userNextConfig - The user's Next.js config object\n * @param userSentryOptions - The Sentry build options passed to `withSentryConfig`\n * @param releaseName - The resolved release name, if any\n */\nexport function setUpBuildTimeVariables(\n userNextConfig: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n releaseName: string | undefined,\n): void {\n const assetPrefix = userNextConfig.assetPrefix || userNextConfig.basePath || '';\n const basePath = userNextConfig.basePath ?? '';\n\n const rewritesTunnelPath =\n userSentryOptions.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${basePath}${userSentryOptions.tunnelRoute}`\n : undefined;\n\n const buildTimeVariables: Record = {\n // Make sure that if we have a windows path, the backslashes are interpreted as such (rather than as escape\n // characters)\n _sentryRewriteFramesDistDir: userNextConfig.distDir?.replace(/\\\\/g, '\\\\\\\\') || '.next',\n // Get the path part of `assetPrefix`, minus any trailing slash. (We use a placeholder for the origin if\n // `assetPrefix` doesn't include one. Since we only care about the path, it doesn't matter what it is.)\n _sentryRewriteFramesAssetPrefixPath: assetPrefix\n ? new URL(assetPrefix, 'http://dogs.are.great').pathname.replace(/\\/$/, '')\n : '',\n };\n\n if (userNextConfig.assetPrefix) {\n buildTimeVariables._assetsPrefix = userNextConfig.assetPrefix;\n }\n\n if (userSentryOptions._experimental?.thirdPartyOriginStackFrames) {\n buildTimeVariables._experimentalThirdPartyOriginStackFrames = 'true';\n }\n\n if (rewritesTunnelPath) {\n buildTimeVariables._sentryRewritesTunnelPath = rewritesTunnelPath;\n }\n\n if (basePath) {\n buildTimeVariables._sentryBasePath = basePath;\n }\n\n if (userNextConfig.assetPrefix) {\n buildTimeVariables._sentryAssetPrefix = userNextConfig.assetPrefix;\n }\n\n if (userSentryOptions._experimental?.thirdPartyOriginStackFrames) {\n buildTimeVariables._experimentalThirdPartyOriginStackFrames = 'true';\n }\n\n if (releaseName) {\n buildTimeVariables._sentryRelease = releaseName;\n }\n\n if (typeof userNextConfig.env === 'object') {\n userNextConfig.env = { ...buildTimeVariables, ...userNextConfig.env };\n } else if (userNextConfig.env === undefined) {\n userNextConfig.env = buildTimeVariables;\n }\n}\n\n/**\n * Returns the current git SHA (HEAD), if available.\n *\n * This is a best-effort helper and returns `undefined` if git isn't available or the cwd isn't a git repo.\n */\nexport function getGitRevision(): string | undefined {\n let gitRevision: string | undefined;\n try {\n gitRevision = childProcess\n .execSync('git rev-parse HEAD', { stdio: ['ignore', 'pipe', 'ignore'] })\n .toString()\n .trim();\n } catch {\n // noop\n }\n return gitRevision;\n}\n\n/**\n * Reads the project's `instrumentation-client.(js|ts)` file contents, if present.\n *\n * @returns The file contents, or `undefined` if the file can't be found/read\n */\nexport function getInstrumentationClientFileContents(): string | void {\n const potentialInstrumentationClientFileLocations = [\n ['src', 'instrumentation-client.ts'],\n ['src', 'instrumentation-client.js'],\n ['instrumentation-client.ts'],\n ['instrumentation-client.js'],\n ];\n\n for (const pathSegments of potentialInstrumentationClientFileLocations) {\n try {\n return fs.readFileSync(path.join(process.cwd(), ...pathSegments), 'utf-8');\n } catch {\n // noop\n }\n }\n}\n","import type { SentryBuildOptions } from '../types';\nimport { detectActiveBundler } from '../util';\n\n/**\n * Migrates deprecated top-level webpack options to the new `webpack.*` path for backward compatibility.\n * The new path takes precedence over deprecated options. This mutates the userSentryOptions object.\n */\nexport function migrateDeprecatedWebpackOptions(userSentryOptions: SentryBuildOptions): void {\n // Initialize webpack options if not present\n userSentryOptions.webpack = userSentryOptions.webpack || {};\n\n const webpack = userSentryOptions.webpack;\n\n const withDeprecatedFallback = (\n newValue: T | undefined,\n deprecatedValue: T | undefined,\n message: string,\n ): T | undefined => {\n if (deprecatedValue !== undefined) {\n // eslint-disable-next-line no-console\n console.warn(message);\n }\n\n return newValue ?? deprecatedValue;\n };\n\n const deprecatedMessage = (deprecatedPath: string, newPath: string): string => {\n const message = `[@sentry/nextjs] DEPRECATION WARNING: ${deprecatedPath} is deprecated and will be removed in a future version. Use ${newPath} instead.`;\n\n // In Turbopack builds, webpack configuration is not applied, so webpack-scoped options won't have any effect.\n if (detectActiveBundler() === 'turbopack' && newPath.startsWith('webpack.')) {\n return `${message} (Not supported with Turbopack.)`;\n }\n\n return message;\n };\n\n /* eslint-disable deprecation/deprecation */\n // Migrate each deprecated option to the new path, but only if the new path isn't already set\n webpack.autoInstrumentServerFunctions = withDeprecatedFallback(\n webpack.autoInstrumentServerFunctions,\n userSentryOptions.autoInstrumentServerFunctions,\n deprecatedMessage('autoInstrumentServerFunctions', 'webpack.autoInstrumentServerFunctions'),\n );\n\n webpack.autoInstrumentMiddleware = withDeprecatedFallback(\n webpack.autoInstrumentMiddleware,\n userSentryOptions.autoInstrumentMiddleware,\n deprecatedMessage('autoInstrumentMiddleware', 'webpack.autoInstrumentMiddleware'),\n );\n\n webpack.autoInstrumentAppDirectory = withDeprecatedFallback(\n webpack.autoInstrumentAppDirectory,\n userSentryOptions.autoInstrumentAppDirectory,\n deprecatedMessage('autoInstrumentAppDirectory', 'webpack.autoInstrumentAppDirectory'),\n );\n\n webpack.excludeServerRoutes = withDeprecatedFallback(\n webpack.excludeServerRoutes,\n userSentryOptions.excludeServerRoutes,\n deprecatedMessage('excludeServerRoutes', 'webpack.excludeServerRoutes'),\n );\n\n webpack.unstable_sentryWebpackPluginOptions = withDeprecatedFallback(\n webpack.unstable_sentryWebpackPluginOptions,\n userSentryOptions.unstable_sentryWebpackPluginOptions,\n deprecatedMessage('unstable_sentryWebpackPluginOptions', 'webpack.unstable_sentryWebpackPluginOptions'),\n );\n\n webpack.disableSentryConfig = withDeprecatedFallback(\n webpack.disableSentryConfig,\n userSentryOptions.disableSentryWebpackConfig,\n deprecatedMessage('disableSentryWebpackConfig', 'webpack.disableSentryConfig'),\n );\n\n // Handle treeshake.removeDebugLogging specially since it's nested\n if (userSentryOptions.disableLogger !== undefined) {\n webpack.treeshake = webpack.treeshake || {};\n webpack.treeshake.removeDebugLogging = withDeprecatedFallback(\n webpack.treeshake.removeDebugLogging,\n userSentryOptions.disableLogger,\n deprecatedMessage('disableLogger', 'webpack.treeshake.removeDebugLogging'),\n );\n }\n\n webpack.automaticVercelMonitors = withDeprecatedFallback(\n webpack.automaticVercelMonitors,\n userSentryOptions.automaticVercelMonitors,\n deprecatedMessage('automaticVercelMonitors', 'webpack.automaticVercelMonitors'),\n );\n\n webpack.reactComponentAnnotation = withDeprecatedFallback(\n webpack.reactComponentAnnotation,\n userSentryOptions.reactComponentAnnotation,\n deprecatedMessage('reactComponentAnnotation', 'webpack.reactComponentAnnotation'),\n );\n}\n","import type { Options as SentryBuildPluginOptions } from '@sentry/bundler-plugin-core';\nimport * as path from 'path';\nimport type { SentryBuildOptions } from './types';\n\nconst LOGGER_PREFIXES = {\n 'webpack-nodejs': '[@sentry/nextjs - Node.js]',\n 'webpack-edge': '[@sentry/nextjs - Edge]',\n 'webpack-client': '[@sentry/nextjs - Client]',\n 'after-production-compile-webpack': '[@sentry/nextjs - After Production Compile (Webpack)]',\n 'after-production-compile-turbopack': '[@sentry/nextjs - After Production Compile (Turbopack)]',\n} as const;\n\n// File patterns for source map operations\n// We use both glob patterns and directory paths for the sourcemap upload and deletion\n// -> Direct CLI invocation handles file paths better than glob patterns\n// -> Webpack/Bundler needs glob patterns as this is the format that is used by the plugin\nconst FILE_PATTERNS = {\n SERVER: {\n GLOB: 'server/**',\n PATH: 'server',\n },\n SERVERLESS: 'serverless/**',\n STATIC_CHUNKS: {\n GLOB: 'static/chunks/**',\n PATH: 'static/chunks',\n },\n STATIC_CHUNKS_PAGES: {\n GLOB: 'static/chunks/pages/**',\n PATH: 'static/chunks/pages',\n },\n STATIC_CHUNKS_APP: {\n GLOB: 'static/chunks/app/**',\n PATH: 'static/chunks/app',\n },\n MAIN_CHUNKS: 'static/chunks/main-*',\n FRAMEWORK_CHUNKS: 'static/chunks/framework-*',\n FRAMEWORK_CHUNKS_DOT: 'static/chunks/framework.*',\n POLYFILLS_CHUNKS: 'static/chunks/polyfills-*',\n WEBPACK_CHUNKS: 'static/chunks/webpack-*',\n PAGE_CLIENT_REFERENCE_MANIFEST: '**/page_client-reference-manifest.js',\n SERVER_REFERENCE_MANIFEST: '**/server-reference-manifest.js',\n NEXT_FONT_MANIFEST: '**/next-font-manifest.js',\n MIDDLEWARE_BUILD_MANIFEST: '**/middleware-build-manifest.js',\n INTERCEPTION_ROUTE_REWRITE_MANIFEST: '**/interception-route-rewrite-manifest.js',\n ROUTE_CLIENT_REFERENCE_MANIFEST: '**/route_client-reference-manifest.js',\n MIDDLEWARE_REACT_LOADABLE_MANIFEST: '**/middleware-react-loadable-manifest.js',\n} as const;\n\n// Source map file extensions to delete\nconst SOURCEMAP_EXTENSIONS = ['*.js.map', '*.mjs.map', '*.cjs.map', '*.css.map'] as const;\n\ntype BuildTool = keyof typeof LOGGER_PREFIXES;\n\n/**\n * Normalizes Windows paths to POSIX format for glob patterns\n */\nexport function normalizePathForGlob(distPath: string): string {\n return distPath.replace(/\\\\/g, '/');\n}\n\n/**\n * These functions are used to get the correct pattern for the sourcemap upload based on the build tool and the usage context\n * -> Direct CLI invocation handles file paths better than glob patterns\n */\nfunction getServerPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.SERVER.PATH : FILE_PATTERNS.SERVER.GLOB;\n}\n\nfunction getStaticChunksPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS.PATH : FILE_PATTERNS.STATIC_CHUNKS.GLOB;\n}\n\nfunction getStaticChunksPagesPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS_PAGES.PATH : FILE_PATTERNS.STATIC_CHUNKS_PAGES.GLOB;\n}\n\nfunction getStaticChunksAppPattern({ useDirectoryPath = false }: { useDirectoryPath?: boolean }): string {\n return useDirectoryPath ? FILE_PATTERNS.STATIC_CHUNKS_APP.PATH : FILE_PATTERNS.STATIC_CHUNKS_APP.GLOB;\n}\n\n/**\n * Creates file patterns for source map uploads based on build tool and options\n */\nfunction createSourcemapUploadAssetPatterns(\n normalizedDistPath: string,\n buildTool: BuildTool,\n widenClientFileUpload: boolean = false,\n): string[] {\n const assets: string[] = [];\n\n if (buildTool.startsWith('after-production-compile')) {\n assets.push(path.posix.join(normalizedDistPath, getServerPattern({ useDirectoryPath: true })));\n\n if (buildTool === 'after-production-compile-turbopack') {\n // In turbopack we always want to upload the full static chunks directory\n // as the build output is not split into pages|app chunks\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: true })));\n } else {\n // Webpack client builds in after-production-compile mode\n if (widenClientFileUpload) {\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: true })));\n } else {\n assets.push(\n path.posix.join(normalizedDistPath, getStaticChunksPagesPattern({ useDirectoryPath: true })),\n path.posix.join(normalizedDistPath, getStaticChunksAppPattern({ useDirectoryPath: true })),\n );\n }\n }\n } else {\n if (buildTool === 'webpack-nodejs' || buildTool === 'webpack-edge') {\n // Server builds\n assets.push(\n path.posix.join(normalizedDistPath, getServerPattern({ useDirectoryPath: false })),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.SERVERLESS),\n );\n } else if (buildTool === 'webpack-client') {\n // Client builds\n if (widenClientFileUpload) {\n assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: false })));\n } else {\n assets.push(\n path.posix.join(normalizedDistPath, getStaticChunksPagesPattern({ useDirectoryPath: false })),\n path.posix.join(normalizedDistPath, getStaticChunksAppPattern({ useDirectoryPath: false })),\n );\n }\n }\n }\n\n return assets;\n}\n\n/**\n * Creates ignore patterns for source map uploads\n */\nfunction createSourcemapUploadIgnorePattern(\n normalizedDistPath: string,\n widenClientFileUpload: boolean = false,\n): string[] {\n const ignore: string[] = [];\n\n // We only add main-* files if the user has not opted into it\n if (!widenClientFileUpload) {\n ignore.push(path.posix.join(normalizedDistPath, FILE_PATTERNS.MAIN_CHUNKS));\n }\n\n // Always ignore these patterns\n ignore.push(\n path.posix.join(normalizedDistPath, FILE_PATTERNS.FRAMEWORK_CHUNKS),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.FRAMEWORK_CHUNKS_DOT),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.POLYFILLS_CHUNKS),\n path.posix.join(normalizedDistPath, FILE_PATTERNS.WEBPACK_CHUNKS),\n // Next.js internal manifest files that don't have source maps\n // These files are auto-generated by Next.js and do not contain user code.\n // Ignoring them prevents \"Could not determine source map reference\" warnings.\n FILE_PATTERNS.PAGE_CLIENT_REFERENCE_MANIFEST,\n FILE_PATTERNS.SERVER_REFERENCE_MANIFEST,\n FILE_PATTERNS.NEXT_FONT_MANIFEST,\n FILE_PATTERNS.MIDDLEWARE_BUILD_MANIFEST,\n FILE_PATTERNS.INTERCEPTION_ROUTE_REWRITE_MANIFEST,\n FILE_PATTERNS.ROUTE_CLIENT_REFERENCE_MANIFEST,\n FILE_PATTERNS.MIDDLEWARE_REACT_LOADABLE_MANIFEST,\n );\n\n return ignore;\n}\n\n/**\n * Creates file patterns for deletion after source map upload\n */\nfunction createFilesToDeleteAfterUploadPattern(\n normalizedDistPath: string,\n buildTool: BuildTool,\n deleteSourcemapsAfterUpload: boolean,\n useRunAfterProductionCompileHook: boolean = false,\n): string[] | undefined {\n if (!deleteSourcemapsAfterUpload) {\n return undefined;\n }\n\n // We don't want to delete source maps for server builds as this led to errors on Vercel in the past\n // See: https://github.com/getsentry/sentry-javascript/issues/13099\n if (buildTool === 'webpack-nodejs' || buildTool === 'webpack-edge') {\n return undefined;\n }\n\n // Skip deletion for webpack client builds when using the experimental hook\n if (buildTool === 'webpack-client' && useRunAfterProductionCompileHook) {\n return undefined;\n }\n\n return SOURCEMAP_EXTENSIONS.map(ext => path.posix.join(normalizedDistPath, 'static', '**', ext));\n}\n\n/**\n * Determines if sourcemap uploads should be skipped\n */\nfunction shouldSkipSourcemapUpload(buildTool: BuildTool, useRunAfterProductionCompileHook: boolean = false): boolean {\n return useRunAfterProductionCompileHook && buildTool.startsWith('webpack');\n}\n\n/**\n * Source rewriting function for webpack sources\n */\nfunction rewriteWebpackSources(source: string): string {\n return source.replace(/^webpack:\\/\\/(?:_N_E\\/)?/, '');\n}\n\n/**\n * Creates release configuration\n */\nfunction createReleaseConfig(\n releaseName: string | undefined,\n sentryBuildOptions: SentryBuildOptions,\n): SentryBuildPluginOptions['release'] {\n if (releaseName !== undefined) {\n return {\n inject: false, // The webpack plugin's release injection breaks the `app` directory - we inject the release manually with the value injection loader instead.\n name: releaseName,\n create: sentryBuildOptions.release?.create,\n finalize: sentryBuildOptions.release?.finalize,\n dist: sentryBuildOptions.release?.dist,\n vcsRemote: sentryBuildOptions.release?.vcsRemote,\n setCommits: sentryBuildOptions.release?.setCommits,\n deploy: sentryBuildOptions.release?.deploy,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.release,\n };\n }\n\n return {\n inject: false,\n create: false,\n finalize: false,\n };\n}\n\n/**\n * Merges default ignore patterns with user-provided ignore patterns.\n * User patterns are appended to the defaults to ensure internal Next.js\n * files are always ignored while allowing users to add additional patterns.\n */\nfunction mergeIgnorePatterns(defaultPatterns: string[], userPatterns: string | string[] | undefined): string[] {\n if (!userPatterns) {\n return defaultPatterns;\n }\n\n const userPatternsArray = Array.isArray(userPatterns) ? userPatterns : [userPatterns];\n return [...defaultPatterns, ...userPatternsArray];\n}\n\n/**\n * Get Sentry Build Plugin options for both webpack and turbopack builds.\n * These options can be used in two ways:\n * 1. The options can be built in a single operation after the production build completes\n * 2. The options can be built in multiple operations, one for each webpack build\n */\nexport function getBuildPluginOptions({\n sentryBuildOptions,\n releaseName,\n distDirAbsPath,\n buildTool,\n useRunAfterProductionCompileHook,\n}: {\n sentryBuildOptions: SentryBuildOptions;\n releaseName: string | undefined;\n distDirAbsPath: string;\n buildTool: BuildTool;\n useRunAfterProductionCompileHook?: boolean; // Whether the user has opted into using the experimental hook\n}): SentryBuildPluginOptions {\n // We need to convert paths to posix because Glob patterns use `\\` to escape\n // glob characters. This clashes with Windows path separators.\n // See: https://www.npmjs.com/package/glob\n const normalizedDistDirAbsPath = normalizePathForGlob(distDirAbsPath);\n const loggerPrefix = LOGGER_PREFIXES[buildTool];\n const widenClientFileUpload = sentryBuildOptions.widenClientFileUpload ?? false;\n const deleteSourcemapsAfterUpload = sentryBuildOptions.sourcemaps?.deleteSourcemapsAfterUpload ?? false;\n\n const sourcemapUploadAssets = createSourcemapUploadAssetPatterns(\n normalizedDistDirAbsPath,\n buildTool,\n widenClientFileUpload,\n );\n\n const sourcemapUploadIgnore = createSourcemapUploadIgnorePattern(normalizedDistDirAbsPath, widenClientFileUpload);\n\n const finalIgnorePatterns = mergeIgnorePatterns(sourcemapUploadIgnore, sentryBuildOptions.sourcemaps?.ignore);\n\n const userFilesToDeleteAfterUpload = sentryBuildOptions.sourcemaps?.filesToDeleteAfterUpload;\n\n if (sentryBuildOptions.debug && userFilesToDeleteAfterUpload !== undefined) {\n // eslint-disable-next-line no-console\n console.debug(\n '[@sentry/nextjs] Skipping auto-deletion of source maps as user has provided filesToDeleteAfterUpload:',\n userFilesToDeleteAfterUpload,\n );\n }\n\n const filesToDeleteAfterUpload =\n userFilesToDeleteAfterUpload !== undefined\n ? Array.isArray(userFilesToDeleteAfterUpload)\n ? userFilesToDeleteAfterUpload\n : [userFilesToDeleteAfterUpload]\n : createFilesToDeleteAfterUploadPattern(\n normalizedDistDirAbsPath,\n buildTool,\n deleteSourcemapsAfterUpload,\n useRunAfterProductionCompileHook,\n );\n\n const skipSourcemapsUpload = shouldSkipSourcemapUpload(buildTool, useRunAfterProductionCompileHook);\n\n return {\n authToken: sentryBuildOptions.authToken,\n headers: sentryBuildOptions.headers,\n org: sentryBuildOptions.org,\n project: sentryBuildOptions.project,\n telemetry: sentryBuildOptions.telemetry,\n debug: sentryBuildOptions.debug,\n errorHandler: sentryBuildOptions.errorHandler,\n reactComponentAnnotation: buildTool.startsWith('after-production-compile')\n ? undefined\n : {\n ...sentryBuildOptions.webpack?.reactComponentAnnotation,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.reactComponentAnnotation,\n },\n silent: sentryBuildOptions.silent,\n url: sentryBuildOptions.sentryUrl,\n sourcemaps: {\n disable: skipSourcemapsUpload ? true : (sentryBuildOptions.sourcemaps?.disable ?? false),\n rewriteSources: rewriteWebpackSources,\n assets: sentryBuildOptions.sourcemaps?.assets ?? sourcemapUploadAssets,\n ignore: finalIgnorePatterns,\n filesToDeleteAfterUpload,\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions?.sourcemaps,\n },\n release: createReleaseConfig(releaseName, sentryBuildOptions),\n bundleSizeOptimizations: {\n ...sentryBuildOptions.bundleSizeOptimizations,\n },\n _metaOptions: {\n loggerPrefixOverride: loggerPrefix,\n telemetry: {\n metaFramework: 'nextjs',\n },\n },\n ...sentryBuildOptions.webpack?.unstable_sentryWebpackPluginOptions,\n };\n}\n","import type { createSentryBuildPluginManager as createSentryBuildPluginManagerType } from '@sentry/bundler-plugin-core';\nimport { loadModule } from '@sentry/core';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { getBuildPluginOptions } from './getBuildPluginOptions';\nimport type { SentryBuildOptions } from './types';\n\n/**\n * This function is called by Next.js after the production build is complete.\n * It is used to upload sourcemaps to Sentry.\n */\nexport async function handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool,\n usesNativeDebugIds,\n }: { releaseName?: string; distDir: string; buildTool: 'webpack' | 'turbopack'; usesNativeDebugIds?: boolean },\n sentryBuildOptions: SentryBuildOptions,\n): Promise {\n if (sentryBuildOptions.debug) {\n // eslint-disable-next-line no-console\n console.debug('[@sentry/nextjs] Running runAfterProductionCompile logic.');\n }\n\n const { createSentryBuildPluginManager } =\n loadModule<{ createSentryBuildPluginManager: typeof createSentryBuildPluginManagerType }>(\n '@sentry/bundler-plugin-core',\n module,\n ) ?? {};\n\n if (!createSentryBuildPluginManager) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not load build manager package. Will not run runAfterProductionCompile logic.',\n );\n return;\n }\n\n const options = getBuildPluginOptions({\n sentryBuildOptions,\n releaseName,\n distDirAbsPath: distDir,\n buildTool: `after-production-compile-${buildTool}`,\n });\n\n const sentryBuildPluginManager = createSentryBuildPluginManager(options, {\n buildTool,\n loggerPrefix: '[@sentry/nextjs - After Production Compile]',\n });\n\n await sentryBuildPluginManager.telemetry.emitBundlerPluginExecutionSignal();\n await sentryBuildPluginManager.createRelease();\n\n // Skip debug ID injection if sourcemaps are disabled which are only relevant for sourcemap correlation\n if (!usesNativeDebugIds && sentryBuildOptions.sourcemaps?.disable !== true) {\n await sentryBuildPluginManager.injectDebugIds([distDir]);\n }\n\n await sentryBuildPluginManager.uploadSourcemaps([distDir], {\n // We don't want to prepare the artifacts because we injected debug ids manually before\n prepareArtifacts: false,\n });\n await sentryBuildPluginManager.deleteArtifacts();\n\n // After deleting source map files in turbopack builds, strip any remaining\n // sourceMappingURL comments from client JS files. Without this, browsers request\n // the deleted .map files, and in Next.js 16 (turbopack) those requests fall through\n // to the app router instead of returning 404, which can break middleware-dependent\n // features like Clerk auth.\n const deleteSourcemapsAfterUpload = sentryBuildOptions.sourcemaps?.deleteSourcemapsAfterUpload ?? false;\n if (deleteSourcemapsAfterUpload && buildTool === 'turbopack') {\n await stripSourceMappingURLComments(path.join(distDir, 'static'), sentryBuildOptions.debug);\n }\n}\n\nconst SOURCEMAPPING_URL_COMMENT_REGEX = /\\n?\\/\\/[#@] sourceMappingURL=[^\\n]+$/;\nconst CSS_SOURCEMAPPING_URL_COMMENT_REGEX = /\\n?\\/\\*[#@] sourceMappingURL=[^\\n]+\\*\\/$/;\n\n/**\n * Strips sourceMappingURL comments from all JS/MJS/CJS/CSS files in the given directory.\n * This prevents browsers from requesting deleted .map files.\n */\nexport async function stripSourceMappingURLComments(staticDir: string, debug?: boolean): Promise {\n let entries: string[];\n try {\n entries = await fs.promises.readdir(staticDir, { recursive: true }).then(e => e.map(f => String(f)));\n } catch {\n // Directory may not exist (e.g., no static output)\n return;\n }\n\n const filesToProcess = entries.filter(\n f => f.endsWith('.js') || f.endsWith('.mjs') || f.endsWith('.cjs') || f.endsWith('.css'),\n );\n\n const results = await Promise.all(\n filesToProcess.map(async file => {\n const filePath = path.join(staticDir, file);\n try {\n const content = await fs.promises.readFile(filePath, 'utf-8');\n\n const isCSS = file.endsWith('.css');\n const regex = isCSS ? CSS_SOURCEMAPPING_URL_COMMENT_REGEX : SOURCEMAPPING_URL_COMMENT_REGEX;\n\n const strippedContent = content.replace(regex, '');\n if (strippedContent !== content) {\n await fs.promises.writeFile(filePath, strippedContent, 'utf-8');\n return file;\n }\n } catch {\n // Skip files that can't be read/written\n }\n return undefined;\n }),\n );\n\n const strippedCount = results.filter(Boolean).length;\n\n if (debug && strippedCount > 0) {\n // eslint-disable-next-line no-console\n console.debug(\n `[@sentry/nextjs] Stripped sourceMappingURL comments from ${String(strippedCount)} file(s) to prevent requests for deleted source maps.`,\n );\n }\n}\n","import * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport type { RouteManifest } from '../manifest/types';\nimport type { JSONValue, TurbopackMatcherWithRule } from '../types';\nimport { getPackageModules, supportsTurbopackRuleCondition } from '../util';\n\n/**\n * Generate the value injection rules for client and server in turbopack config.\n */\nexport function generateValueInjectionRules({\n routeManifest,\n nextJsVersion,\n tunnelPath,\n vercelCronsConfig,\n}: {\n routeManifest?: RouteManifest;\n nextJsVersion?: string;\n tunnelPath?: string;\n vercelCronsConfig?: VercelCronsConfig;\n}): TurbopackMatcherWithRule[] {\n const rules: TurbopackMatcherWithRule[] = [];\n const isomorphicValues: Record = {};\n let clientValues: Record = {};\n let serverValues: Record = {};\n\n if (nextJsVersion) {\n // This is used to determine version-based dev-symbolication behavior\n isomorphicValues._sentryNextJsVersion = nextJsVersion;\n }\n\n if (routeManifest) {\n clientValues._sentryRouteManifest = JSON.stringify(routeManifest);\n }\n\n // Inject tunnel route path for both client and server\n if (tunnelPath) {\n isomorphicValues._sentryRewritesTunnelPath = tunnelPath;\n }\n\n // Inject Vercel crons config for server-side cron auto-instrumentation\n if (vercelCronsConfig) {\n serverValues._sentryVercelCronsConfig = JSON.stringify(vercelCronsConfig);\n }\n // Inject server modules (matching webpack's __SENTRY_SERVER_MODULES__ behavior)\n // Use process.cwd() to get the project directory at build time\n serverValues.__SENTRY_SERVER_MODULES__ = getPackageModules(process.cwd());\n\n if (Object.keys(isomorphicValues).length > 0) {\n clientValues = { ...clientValues, ...isomorphicValues };\n serverValues = { ...serverValues, ...isomorphicValues };\n }\n\n const hasConditionSupport = nextJsVersion ? supportsTurbopackRuleCondition(nextJsVersion) : false;\n\n // Client value injection\n if (Object.keys(clientValues).length > 0) {\n rules.push({\n matcher: '**/instrumentation-client.*',\n rule: {\n // Only run on user code, not node_modules or Next.js internals\n // condition field is only supported in Next.js 16+\n ...(hasConditionSupport ? { condition: { not: 'foreign' } } : {}),\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'valueInjectionLoader.js'),\n options: {\n values: clientValues,\n },\n },\n ],\n },\n });\n }\n\n // Server value injection\n if (Object.keys(serverValues).length > 0) {\n rules.push({\n matcher: '**/instrumentation.*',\n rule: {\n // Only run on user code, not node_modules or Next.js internals\n // condition field is only supported in Next.js 16+\n ...(hasConditionSupport ? { condition: { not: 'foreign' } } : {}),\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'valueInjectionLoader.js'),\n options: {\n values: serverValues,\n },\n },\n ],\n },\n });\n }\n\n return rules;\n}\n","import { debug } from '@sentry/core';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport type { RouteManifest } from '../manifest/types';\nimport type { NextConfigObject, SentryBuildOptions, TurbopackMatcherWithRule, TurbopackOptions } from '../types';\nimport { supportsNativeDebugIds, supportsTurbopackRuleCondition } from '../util';\nimport { generateValueInjectionRules } from './generateValueInjectionRules';\n\n/**\n * Construct a Turbopack config object from a Next.js config object and a Turbopack options object.\n *\n * @param userNextConfig - The Next.js config object.\n * @param userSentryOptions - The Sentry build options object.\n * @param routeManifest - The route manifest object.\n * @param nextJsVersion - The Next.js version.\n * @param vercelCronsConfig - The Vercel crons configuration from vercel.json.\n * @returns The Turbopack config object.\n */\nexport function constructTurbopackConfig({\n userNextConfig,\n userSentryOptions,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n}: {\n userNextConfig: NextConfigObject;\n userSentryOptions?: SentryBuildOptions;\n routeManifest?: RouteManifest;\n nextJsVersion?: string;\n vercelCronsConfig?: VercelCronsConfig;\n}): TurbopackOptions {\n // If sourcemaps are disabled, we don't need to enable native debug ids as this will add build time.\n const shouldEnableNativeDebugIds =\n (supportsNativeDebugIds(nextJsVersion ?? '') && userNextConfig?.turbopack?.debugIds) ??\n userSentryOptions?.sourcemaps?.disable !== true;\n\n const newConfig: TurbopackOptions = {\n ...userNextConfig.turbopack,\n ...(shouldEnableNativeDebugIds ? { debugIds: true } : {}),\n };\n\n const tunnelPath =\n userSentryOptions?.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${userNextConfig.basePath ?? ''}${userSentryOptions.tunnelRoute}`\n : undefined;\n\n const valueInjectionRules = generateValueInjectionRules({\n routeManifest,\n nextJsVersion,\n tunnelPath,\n vercelCronsConfig,\n });\n\n for (const { matcher, rule } of valueInjectionRules) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, { matcher, rule });\n }\n\n // Add module metadata injection loader for thirdPartyErrorFilterIntegration support.\n // This loader tags modules with `_sentryModuleMetadata` so the integration can tell\n // first-party code from third-party code. We intentionally do NOT use\n // `condition: { not: 'foreign' }` so that node_modules are also tagged as first-party,\n // matching the webpack plugin's BannerPlugin behavior (which injects into all chunks\n // without excluding node_modules). The injected code is wrapped in a try-catch IIFE\n // so it is safe even for node_modules with strict initialization order.\n // We only exclude Next.js build polyfills which contain non-standard syntax that causes\n // parse errors when any code is prepended (Turbopack re-parses the loader output).\n const applicationKey = userSentryOptions?._experimental?.turbopackApplicationKey;\n if (applicationKey && nextJsVersion && supportsTurbopackRuleCondition(nextJsVersion)) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, {\n matcher: '*.{ts,tsx,js,jsx,mjs,cjs}',\n rule: {\n condition: { not: { path: /next\\/dist\\/build\\/polyfills/ } },\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'moduleMetadataInjectionLoader.js'),\n options: {\n applicationKey,\n },\n },\n ],\n },\n });\n }\n\n // Add component annotation loader for react component name annotation in Turbopack builds.\n // This is only added when turbopackReactComponentAnnotation.enabled is set AND the Next.js\n // version supports the `condition` field in Turbopack rules (Next.js 16+).\n const turbopackReactComponentAnnotation = userSentryOptions?._experimental?.turbopackReactComponentAnnotation;\n if (turbopackReactComponentAnnotation?.enabled && nextJsVersion && supportsTurbopackRuleCondition(nextJsVersion)) {\n newConfig.rules = safelyAddTurbopackRule(newConfig.rules, {\n matcher: '*.{tsx,jsx}',\n rule: {\n condition: { not: 'foreign' },\n loaders: [\n {\n loader: path.resolve(__dirname, '..', 'loaders', 'componentAnnotationLoader.js'),\n options: {\n ignoredComponents: turbopackReactComponentAnnotation.ignoredComponents ?? [],\n },\n },\n ],\n },\n });\n }\n\n return newConfig;\n}\n\n/**\n * Safely add a Turbopack rule to the existing rules.\n *\n * @param existingRules - The existing rules.\n * @param matcher - The matcher for the rule.\n * @param rule - The rule to add.\n * @returns The updated rules object.\n */\nexport function safelyAddTurbopackRule(\n existingRules: TurbopackOptions['rules'],\n { matcher, rule }: TurbopackMatcherWithRule,\n): TurbopackOptions['rules'] {\n if (!existingRules) {\n return {\n [matcher]: rule,\n };\n }\n\n // If the rule already exists, we don't want to mess with it.\n if (existingRules[matcher]) {\n debug.log(\n `[@sentry/nextjs] - Turbopack rule already exists for ${matcher}. Please remove it from your Next.js config in order for Sentry to work properly.`,\n );\n return existingRules;\n }\n\n return {\n ...existingRules,\n [matcher]: rule,\n };\n}\n","/* eslint-disable complexity */\n/* eslint-disable max-lines */\n\nimport { debug, escapeStringForRegex, loadModule, parseSemver } from '@sentry/core';\nimport * as fs from 'fs';\nimport { createRequire } from 'module';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../common/types';\nimport { getBuildPluginOptions, normalizePathForGlob } from './getBuildPluginOptions';\nimport type { RouteManifest } from './manifest/types';\n// Note: If you need to import a type from Webpack, do it in `types.ts` and export it from there. Otherwise, our\n// circular dependency check thinks this file is importing from itself. See https://github.com/pahen/madge/issues/306.\nimport type {\n BuildContext,\n EntryPropertyObject,\n IgnoreWarningsOption,\n NextConfigObject,\n SentryBuildOptions,\n WebpackConfigFunction,\n WebpackConfigObject,\n WebpackConfigObjectWithModuleRules,\n WebpackEntryProperty,\n} from './types';\nimport { getNextjsVersion, getPackageModules } from './util';\nimport type { VercelCronsConfigResult } from './withSentryConfig/getFinalConfigObjectUtils';\n\n// Next.js runs webpack 3 times, once for the client, the server, and for edge. Because we don't want to print certain\n// warnings 3 times, we keep track of them here.\nlet showedMissingGlobalErrorWarningMsg = false;\n\n/**\n * Construct the function which will be used as the nextjs config's `webpack` value.\n *\n * Sets:\n * - `devtool`, to ensure high-quality sourcemaps are generated\n * - `entry`, to include user's sentry config files (where `Sentry.init` is called) in the build\n * - `plugins`, to add SentryWebpackPlugin\n *\n * @param userNextConfig The user's existing nextjs config, as passed to `withSentryConfig`\n * @param userSentryOptions The user's SentryWebpackPlugin config, as passed to `withSentryConfig`\n * @returns The function to set as the nextjs config's `webpack` value\n */\nexport function constructWebpackConfigFunction({\n userNextConfig = {},\n userSentryOptions = {},\n releaseName,\n routeManifest,\n nextJsVersion,\n useRunAfterProductionCompileHook,\n vercelCronsConfigResult,\n}: {\n userNextConfig: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n useRunAfterProductionCompileHook: boolean | undefined;\n vercelCronsConfigResult: VercelCronsConfigResult;\n}): WebpackConfigFunction {\n // Will be called by nextjs and passed its default webpack configuration and context data about the build (whether\n // we're building server or client, whether we're in dev, what version of webpack we're using, etc). Note that\n // `incomingConfig` and `buildContext` are referred to as `config` and `options` in the nextjs docs.\n return function newWebpackFunction(\n incomingConfig: WebpackConfigObject,\n buildContext: BuildContext,\n ): WebpackConfigObject {\n const { isServer, dev: isDev, dir: projectDir } = buildContext;\n const runtime = isServer ? (buildContext.nextRuntime === 'edge' ? 'edge' : 'server') : 'client';\n // Default page extensions per https://github.com/vercel/next.js/blob/f1dbc9260d48c7995f6c52f8fbcc65f08e627992/packages/next/server/config-shared.ts#L161\n const pageExtensions = userNextConfig.pageExtensions || ['tsx', 'ts', 'jsx', 'js'];\n const dotPrefixedPageExtensions = pageExtensions.map(ext => `.${ext}`);\n const pageExtensionRegex = pageExtensions.map(escapeStringForRegex).join('|');\n const nextVersion = nextJsVersion || getNextjsVersion();\n const { major } = parseSemver(nextVersion || '');\n\n // We add `.ts` and `.js` back in because `pageExtensions` might not be relevant to the instrumentation file\n // e.g. user's setting `.mdx`. In that case we still want to default look up\n // `instrumentation.ts` and `instrumentation.js`\n const instrumentationFile = getInstrumentationFile(projectDir, dotPrefixedPageExtensions.concat(['.ts', '.js']));\n\n if (runtime !== 'client') {\n warnAboutDeprecatedConfigFiles(projectDir, instrumentationFile, runtime);\n }\n if (runtime === 'server') {\n // was added in v15 (https://github.com/vercel/next.js/pull/67539)\n if (major && major >= 15) {\n warnAboutMissingOnRequestErrorHandler(instrumentationFile);\n }\n }\n\n let rawNewConfig = { ...incomingConfig };\n\n // if user has custom webpack config (which always takes the form of a function), run it so we have actual values to\n // work with\n if ('webpack' in userNextConfig && typeof userNextConfig.webpack === 'function') {\n rawNewConfig = userNextConfig.webpack(rawNewConfig, buildContext);\n }\n\n // This mutates `rawNewConfig` in place, but also returns it in order to switch its type to one in which\n // `newConfig.module.rules` is required, so we don't have to keep asserting its existence\n const newConfig = setUpModuleRules(rawNewConfig);\n\n // Determine which cron config to use based on strategy\n // - 'spans': injected as global for span-based detection (App Router + Pages Router)\n // - 'wrapper': passed to wrapping loader for Pages Router API handler wrapping\n const { strategy: cronsStrategy, config: cronsConfig } = vercelCronsConfigResult;\n const vercelCronsConfigForGlobal = cronsStrategy === 'spans' ? cronsConfig : undefined;\n const vercelCronsConfigForWrapper = cronsStrategy === 'wrapper' ? cronsConfig : undefined;\n\n // Add a loader which will inject code that sets global values\n addValueInjectionLoader({\n newConfig,\n userNextConfig,\n userSentryOptions,\n buildContext,\n releaseName,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig: vercelCronsConfigForGlobal,\n });\n\n addOtelWarningIgnoreRule(newConfig);\n\n // Add edge runtime polyfills when building for edge in dev mode\n if (major && major === 13 && runtime === 'edge' && isDev) {\n addEdgeRuntimePolyfills(newConfig, buildContext);\n }\n\n let pagesDirPath: string | undefined;\n const maybePagesDirPath = path.join(projectDir, 'pages');\n const maybeSrcPagesDirPath = path.join(projectDir, 'src', 'pages');\n if (fs.existsSync(maybePagesDirPath) && fs.lstatSync(maybePagesDirPath).isDirectory()) {\n pagesDirPath = maybePagesDirPath;\n } else if (fs.existsSync(maybeSrcPagesDirPath) && fs.lstatSync(maybeSrcPagesDirPath).isDirectory()) {\n pagesDirPath = maybeSrcPagesDirPath;\n }\n\n let appDirPath: string | undefined;\n const maybeAppDirPath = path.join(projectDir, 'app');\n const maybeSrcAppDirPath = path.join(projectDir, 'src', 'app');\n if (fs.existsSync(maybeAppDirPath) && fs.lstatSync(maybeAppDirPath).isDirectory()) {\n appDirPath = maybeAppDirPath;\n } else if (fs.existsSync(maybeSrcAppDirPath) && fs.lstatSync(maybeSrcAppDirPath).isDirectory()) {\n appDirPath = maybeSrcAppDirPath;\n }\n\n const apiRoutesPath = pagesDirPath ? path.join(pagesDirPath, 'api') : undefined;\n\n const middlewareLocationFolder = pagesDirPath\n ? path.join(pagesDirPath, '..')\n : appDirPath\n ? path.join(appDirPath, '..')\n : projectDir;\n\n const staticWrappingLoaderOptions = {\n appDir: appDirPath,\n pagesDir: pagesDirPath,\n pageExtensionRegex,\n excludeServerRoutes: userSentryOptions.webpack?.excludeServerRoutes,\n nextjsRequestAsyncStorageModulePath: getRequestAsyncStorageModuleLocation(\n projectDir,\n rawNewConfig.resolve?.modules,\n ),\n isDev,\n };\n\n const normalizeLoaderResourcePath = (resourcePath: string): string => {\n // `resourcePath` may be an absolute path or a path relative to the context of the webpack config\n let absoluteResourcePath: string;\n if (path.isAbsolute(resourcePath)) {\n absoluteResourcePath = resourcePath;\n } else {\n absoluteResourcePath = path.join(projectDir, resourcePath);\n }\n\n return path.normalize(absoluteResourcePath);\n };\n\n const isPageResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n pagesDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(pagesDirPath + path.sep) &&\n !normalizedAbsoluteResourcePath.startsWith(apiRoutesPath + path.sep) &&\n dotPrefixedPageExtensions.some(ext => normalizedAbsoluteResourcePath.endsWith(ext))\n );\n };\n\n const isApiRouteResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n normalizedAbsoluteResourcePath.startsWith(apiRoutesPath + path.sep) &&\n dotPrefixedPageExtensions.some(ext => normalizedAbsoluteResourcePath.endsWith(ext))\n );\n };\n\n const possibleMiddlewareLocations = pageExtensions.flatMap(middlewareFileEnding => {\n return [\n path.join(middlewareLocationFolder, `middleware.${middlewareFileEnding}`),\n path.join(middlewareLocationFolder, `proxy.${middlewareFileEnding}`),\n ];\n });\n const isMiddlewareResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return possibleMiddlewareLocations.includes(normalizedAbsoluteResourcePath);\n };\n\n const isServerComponentResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n\n // \".js, .jsx, or .tsx file extensions can be used for Pages\"\n // https://beta.nextjs.org/docs/routing/pages-and-layouts#pages:~:text=.js%2C%20.jsx%2C%20or%20.tsx%20file%20extensions%20can%20be%20used%20for%20Pages.\n return (\n appDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(appDirPath + path.sep) &&\n !!normalizedAbsoluteResourcePath.match(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n new RegExp(`[\\\\\\\\/](page|layout|loading|head|not-found)\\\\.(${pageExtensionRegex})$`),\n )\n );\n };\n\n const isRouteHandlerResource = (resourcePath: string): boolean => {\n const normalizedAbsoluteResourcePath = normalizeLoaderResourcePath(resourcePath);\n return (\n appDirPath !== undefined &&\n normalizedAbsoluteResourcePath.startsWith(appDirPath + path.sep) &&\n !!normalizedAbsoluteResourcePath.match(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n new RegExp(`[\\\\\\\\/]route\\\\.(${pageExtensionRegex})$`),\n )\n );\n };\n\n if (isServer && userSentryOptions.webpack?.autoInstrumentServerFunctions !== false) {\n // It is very important that we insert our loaders at the beginning of the array because we expect any sort of transformations/transpilations (e.g. TS -> JS) to already have happened.\n\n // Wrap pages\n newConfig.module.rules.unshift({\n test: isPageResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'page',\n },\n },\n ],\n });\n\n // Wrap api routes\n newConfig.module.rules.unshift({\n test: isApiRouteResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n vercelCronsConfig: vercelCronsConfigForWrapper,\n wrappingTargetKind: 'api-route',\n },\n },\n ],\n });\n\n // Wrap middleware\n const canWrapStandaloneMiddleware = userNextConfig.output !== 'standalone' || !major || major < 16;\n if ((userSentryOptions.webpack?.autoInstrumentMiddleware ?? true) && canWrapStandaloneMiddleware) {\n newConfig.module.rules.unshift({\n test: isMiddlewareResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'middleware',\n },\n },\n ],\n });\n }\n }\n\n if (isServer && userSentryOptions.webpack?.autoInstrumentAppDirectory !== false) {\n // Wrap server components\n newConfig.module.rules.unshift({\n test: isServerComponentResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'server-component',\n },\n },\n ],\n });\n\n // Wrap route handlers\n newConfig.module.rules.unshift({\n test: isRouteHandlerResource,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders', 'wrappingLoader.js'),\n options: {\n ...staticWrappingLoaderOptions,\n wrappingTargetKind: 'route-handler',\n },\n },\n ],\n });\n }\n\n if (appDirPath) {\n const hasGlobalErrorFile = pageExtensions\n .map(extension => `global-error.${extension}`)\n .some(globalErrorFile => fs.existsSync(path.join(appDirPath, globalErrorFile)));\n\n if (\n !hasGlobalErrorFile &&\n !showedMissingGlobalErrorWarningMsg &&\n !process.env.SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING\n ) {\n // eslint-disable-next-line no-console\n console.log(\n \"[@sentry/nextjs] It seems like you don't have a global error handler set up. It is recommended that you add a 'global-error.js' file with Sentry instrumentation so that React rendering errors are reported to Sentry. Read more: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#react-render-errors-in-app-router (you can suppress this warning by setting SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 as environment variable)\",\n );\n showedMissingGlobalErrorWarningMsg = true;\n }\n }\n\n if (!isServer) {\n // Tell webpack to inject the client config files (containing the client-side `Sentry.init()` call) into the appropriate output\n // bundles. Store a separate reference to the original `entry` value to avoid an infinite loop. (If we don't do\n // this, we'll have a statement of the form `x.y = () => f(x.y)`, where one of the things `f` does is call `x.y`.\n // Since we're setting `x.y` to be a callback (which, by definition, won't run until some time later), by the time\n // the function runs (causing `f` to run, causing `x.y` to run), `x.y` will point to the callback itself, rather\n // than its original value. So calling it will call the callback which will call `f` which will call `x.y` which\n // will call the callback which will call `f` which will call `x.y`... and on and on. Theoretically this could also\n // be fixed by using `bind`, but this is way simpler.)\n const origEntryProperty = newConfig.entry;\n newConfig.entry = async () => addSentryToClientEntryProperty(origEntryProperty, buildContext);\n\n const clientSentryConfigFileName = getClientSentryConfigFile(projectDir);\n if (clientSentryConfigFileName) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] DEPRECATION WARNING: It is recommended renaming your \\`${clientSentryConfigFileName}\\` file, or moving its content to \\`instrumentation-client.ts\\`. When using Turbopack \\`${clientSentryConfigFileName}\\` will no longer work. Read more about the \\`instrumentation-client.ts\\` file: https://nextjs.org/docs/app/api-reference/file-conventions/instrumentation-client`,\n );\n }\n }\n\n const isStaticExport = userNextConfig?.output === 'export';\n\n // We don't want to do any webpack plugin stuff OR any source maps stuff in dev mode or for the server on static-only builds.\n // Symbolication for dev-mode errors is done elsewhere.\n if (!(isDev || (isStaticExport && isServer))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { sentryWebpackPlugin } = loadModule<{ sentryWebpackPlugin: any }>('@sentry/webpack-plugin', module) ?? {};\n\n if (sentryWebpackPlugin) {\n if (!userSentryOptions.sourcemaps?.disable) {\n // Source maps can be configured in 3 ways:\n // 1. (next config): productionBrowserSourceMaps\n // 2. (next config): experimental.serverSourceMaps\n // 3. custom webpack configuration\n //\n // We only update this if no explicit value is set\n // (Next.js defaults to `false`: https://github.com/vercel/next.js/blob/5f4f96c133bd6b10954812cc2fef6af085b82aa5/packages/next/src/build/webpack/config/blocks/base.ts#L61)\n if (!newConfig.devtool) {\n debug.log(`[@sentry/nextjs] Automatically enabling source map generation for ${runtime} build.`);\n // `hidden-source-map` produces the same sourcemaps as `source-map`, but doesn't include the `sourceMappingURL`\n // comment at the bottom. For folks who aren't publicly hosting their sourcemaps, this is helpful because then\n // the browser won't look for them and throw errors into the console when it can't find them. Because this is a\n // front-end-only problem, and because `sentry-cli` handles sourcemaps more reliably with the comment than\n // without, the option to use `hidden-source-map` only applies to the client-side build.\n if (isServer) {\n newConfig.devtool = 'source-map';\n } else {\n newConfig.devtool = 'hidden-source-map';\n }\n }\n\n // enable source map deletion if not explicitly disabled\n if (!isServer && userSentryOptions.sourcemaps?.deleteSourcemapsAfterUpload === undefined) {\n debug.warn(\n '[@sentry/nextjs] Source maps will be automatically deleted after being uploaded to Sentry. If you want to keep the source maps, set the `sourcemaps.deleteSourcemapsAfterUpload` option to false in `withSentryConfig()`. If you do not want to generate and upload sourcemaps at all, set the `sourcemaps.disable` option to true.',\n );\n userSentryOptions.sourcemaps = {\n ...userSentryOptions.sourcemaps,\n deleteSourcemapsAfterUpload: true,\n };\n }\n }\n\n newConfig.plugins = newConfig.plugins || [];\n const { config: userNextConfig, dir, nextRuntime } = buildContext;\n const buildTool = isServer ? (nextRuntime === 'edge' ? 'webpack-edge' : 'webpack-nodejs') : 'webpack-client';\n const projectDir = normalizePathForGlob(dir);\n const distDir = normalizePathForGlob((userNextConfig as NextConfigObject).distDir ?? '.next');\n const distDirAbsPath = path.posix.join(projectDir, distDir);\n\n const sentryWebpackPluginInstance = sentryWebpackPlugin(\n getBuildPluginOptions({\n sentryBuildOptions: userSentryOptions,\n releaseName,\n distDirAbsPath,\n buildTool,\n useRunAfterProductionCompileHook,\n }),\n );\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n sentryWebpackPluginInstance._name = 'sentry-webpack-plugin'; // For tests and debugging. Serves no other purpose.\n newConfig.plugins.push(sentryWebpackPluginInstance);\n }\n }\n\n if (userSentryOptions.webpack?.treeshake) {\n setupTreeshakingFromConfig(userSentryOptions, newConfig, buildContext);\n }\n\n // We inject a map of dependencies that the nextjs app has, as we cannot reliably extract them at runtime, sadly\n newConfig.plugins = newConfig.plugins || [];\n newConfig.plugins.push(\n new buildContext.webpack.DefinePlugin({\n __SENTRY_SERVER_MODULES__: JSON.stringify(getPackageModules(projectDir)),\n }),\n );\n\n return newConfig;\n };\n}\n\n/**\n * Modify the webpack `entry` property so that the code in `sentry.client.config.js` is\n * included in the the necessary bundles.\n *\n * @param currentEntryProperty The value of the property before Sentry code has been injected\n * @param buildContext Object passed by nextjs containing metadata about the build\n * @returns The value which the new `entry` property (which will be a function) will return (TODO: this should return\n * the function, rather than the function's return value)\n */\nasync function addSentryToClientEntryProperty(\n currentEntryProperty: WebpackEntryProperty,\n buildContext: BuildContext,\n): Promise {\n // The `entry` entry in a webpack config can be a string, array of strings, object, or function. By default, nextjs\n // sets it to an async function which returns the promise of an object of string arrays. Because we don't know whether\n // someone else has come along before us and changed that, we need to check a few things along the way. The one thing\n // we know is that it won't have gotten *simpler* in form, so we only need to worry about the object and function\n // options. See https://webpack.js.org/configuration/entry-context/#entry.\n\n const { dir: projectDir, dev: isDevMode } = buildContext;\n\n const newEntryProperty =\n typeof currentEntryProperty === 'function' ? await currentEntryProperty() : { ...currentEntryProperty };\n\n const clientSentryConfigFileName = getClientSentryConfigFile(projectDir);\n const instrumentationClientFileName = getInstrumentationClientFile(projectDir);\n\n const filesToInject = [];\n if (clientSentryConfigFileName) {\n // we need to turn the filename into a path so webpack can find it\n filesToInject.push(`./${clientSentryConfigFileName}`);\n }\n if (instrumentationClientFileName) {\n // we need to turn the filename into a path so webpack can find it\n filesToInject.push(`./${instrumentationClientFileName}`);\n }\n\n // inject into all entry points which might contain user's code\n for (const entryPointName in newEntryProperty) {\n if (\n entryPointName === 'pages/_app' ||\n // entrypoint for `/app` pages\n entryPointName === 'main-app'\n ) {\n addFilesToWebpackEntryPoint(newEntryProperty, entryPointName, filesToInject, isDevMode);\n }\n }\n\n return newEntryProperty;\n}\n\n/**\n * Gets the content of the user's instrumentation file\n */\nfunction getInstrumentationFile(projectDir: string, dotPrefixedExtensions: string[]): string | null {\n const paths = dotPrefixedExtensions.flatMap(extension => [\n ['src', `instrumentation${extension}`],\n [`instrumentation${extension}`],\n ]);\n\n for (const pathSegments of paths) {\n try {\n return fs.readFileSync(path.resolve(projectDir, ...pathSegments), { encoding: 'utf-8' });\n } catch {\n // no-op\n }\n }\n\n return null;\n}\n\n/**\n * Make sure the instrumentation file has a `onRequestError` Handler\n */\nfunction warnAboutMissingOnRequestErrorHandler(instrumentationFile: string | null): void {\n if (!instrumentationFile) {\n if (!process.env.SENTRY_SUPPRESS_INSTRUMENTATION_FILE_WARNING) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not find a Next.js instrumentation file. This indicates an incomplete configuration of the Sentry SDK. An instrumentation file is required for the Sentry SDK to be initialized on the server: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#create-initialization-config-files (you can suppress this warning by setting SENTRY_SUPPRESS_INSTRUMENTATION_FILE_WARNING=1 as environment variable)',\n );\n }\n return;\n }\n\n if (!instrumentationFile.includes('onRequestError')) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Could not find `onRequestError` hook in instrumentation file. This indicates outdated configuration of the Sentry SDK. Use `Sentry.captureRequestError` to instrument the `onRequestError` hook: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#errors-from-nested-react-server-components',\n );\n }\n}\n\n/**\n * Searches for old `sentry.(server|edge).config.ts` files and Next.js instrumentation hooks and warns if there are \"old\"\n * config files and no signs of them inside the instrumentation hook.\n *\n * @param projectDir The root directory of the project, where config files would be located\n * @param platform Either \"server\" or \"edge\", so that we know which file to look for\n */\nfunction warnAboutDeprecatedConfigFiles(\n projectDir: string,\n instrumentationFile: string | null,\n platform: 'server' | 'edge',\n): void {\n const hasInstrumentationHookWithIndicationsOfSentry =\n instrumentationFile &&\n (instrumentationFile.includes('@sentry/') ||\n instrumentationFile.match(/sentry\\.(server|edge)\\.config(\\.(ts|js))?/));\n\n if (hasInstrumentationHookWithIndicationsOfSentry) {\n return;\n }\n\n for (const filename of [`sentry.${platform}.config.ts`, `sentry.${platform}.config.js`]) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] It appears you've configured a \\`${filename}\\` file. Please ensure to put this file's content into the \\`register()\\` function of a Next.js instrumentation file instead. To ensure correct functionality of the SDK, \\`Sentry.init\\` must be called inside of an instrumentation file. Learn more about setting up an instrumentation file in Next.js: https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation. You can safely delete the \\`${filename}\\` file afterward.`,\n );\n }\n }\n}\n\n/**\n * Searches for a `sentry.client.config.ts|js` file and returns its file name if it finds one. (ts being prioritized)\n *\n * @param projectDir The root directory of the project, where config files would be located\n */\nfunction getClientSentryConfigFile(projectDir: string): string | void {\n const possibilities = ['sentry.client.config.ts', 'sentry.client.config.js'];\n\n for (const filename of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n return filename;\n }\n }\n}\n\n/**\n * Searches for a `instrumentation-client.ts|js` file and returns its file name if it finds one. (ts being prioritized)\n *\n * @param projectDir The root directory of the project, where config files would be located\n */\nfunction getInstrumentationClientFile(projectDir: string): string | void {\n const possibilities = [\n ['src', 'instrumentation-client.js'],\n ['src', 'instrumentation-client.ts'],\n ['instrumentation-client.js'],\n ['instrumentation-client.ts'],\n ];\n\n for (const pathParts of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, ...pathParts))) {\n return path.join(...pathParts);\n }\n }\n}\n\n/**\n * Add files to a specific element of the given `entry` webpack config property.\n *\n * @param entryProperty The existing `entry` config object\n * @param entryPointName The key where the file should be injected\n * @param filesToInsert An array of paths to the injected files\n */\nfunction addFilesToWebpackEntryPoint(\n entryProperty: EntryPropertyObject,\n entryPointName: string,\n filesToInsert: string[],\n isDevMode: boolean,\n): void {\n // BIG FAT NOTE: Order of insertion seems to matter here. If we insert the new files before the `currentEntrypoint`s,\n // the Next.js dev server breaks. Because we generally still want the SDK to be initialized as early as possible we\n // still keep it at the start of the entrypoints if we are not in dev mode.\n\n // can be a string, array of strings, or object whose `import` property is one of those two\n const currentEntryPoint = entryProperty[entryPointName];\n let newEntryPoint = currentEntryPoint;\n\n if (typeof currentEntryPoint === 'string' || Array.isArray(currentEntryPoint)) {\n newEntryPoint = Array.isArray(currentEntryPoint) ? currentEntryPoint : [currentEntryPoint];\n if (newEntryPoint.some(entry => filesToInsert.includes(entry))) {\n return;\n }\n\n if (isDevMode) {\n // Inserting at beginning breaks dev mode so we insert at the end\n newEntryPoint.push(...filesToInsert);\n } else {\n // In other modes we insert at the beginning so that the SDK initializes as early as possible\n newEntryPoint.unshift(...filesToInsert);\n }\n }\n // descriptor object (webpack 5+)\n else if (typeof currentEntryPoint === 'object' && 'import' in currentEntryPoint) {\n const currentImportValue = currentEntryPoint.import;\n const newImportValue = Array.isArray(currentImportValue) ? currentImportValue : [currentImportValue];\n if (newImportValue.some(entry => filesToInsert.includes(entry))) {\n return;\n }\n\n if (isDevMode) {\n // Inserting at beginning breaks dev mode so we insert at the end\n newImportValue.push(...filesToInsert);\n } else {\n // In other modes we insert at the beginning so that the SDK initializes as early as possible\n newImportValue.unshift(...filesToInsert);\n }\n\n newEntryPoint = {\n ...currentEntryPoint,\n import: newImportValue,\n };\n }\n // malformed entry point (use `console.error` rather than `debug.error` because it will always be printed, regardless\n // of SDK settings)\n else {\n // eslint-disable-next-line no-console\n console.error(\n 'Sentry Logger [Error]:',\n `Could not inject SDK initialization code into entry point ${entryPointName}, as its current value is not in a recognized format.\\n`,\n 'Expected: string | Array | { [key:string]: any, import: string | Array }\\n',\n `Got: ${currentEntryPoint}`,\n );\n }\n\n if (newEntryPoint) {\n entryProperty[entryPointName] = newEntryPoint;\n }\n}\n\n/**\n * Ensure that `newConfig.module.rules` exists. Modifies the given config in place but also returns it in order to\n * change its type.\n *\n * @param newConfig A webpack config object which may or may not contain `module` and `module.rules`\n * @returns The same object, with an empty `module.rules` array added if necessary\n */\nfunction setUpModuleRules(newConfig: WebpackConfigObject): WebpackConfigObjectWithModuleRules {\n newConfig.module = {\n ...newConfig.module,\n rules: [...(newConfig.module?.rules || [])],\n };\n // Surprising that we have to assert the type here, since we've demonstrably guaranteed the existence of\n // `newConfig.module.rules` just above, but ¯\\_(ツ)_/¯\n return newConfig as WebpackConfigObjectWithModuleRules;\n}\n\n/**\n * Adds loaders to inject values on the global object based on user configuration.\n */\n// TODO: Remove this loader and replace it with a nextConfig.env (https://web.archive.org/web/20240917153554/https://nextjs.org/docs/app/api-reference/next-config-js/env) or define based (https://github.com/vercel/next.js/discussions/71476) approach.\n// In order to remove this loader though we need to make sure the minimum supported Next.js version includes this PR (https://github.com/vercel/next.js/pull/61194), otherwise the nextConfig.env based approach will not work, as our SDK code is not processed by Next.js.\nfunction addValueInjectionLoader({\n newConfig,\n userNextConfig,\n userSentryOptions,\n buildContext,\n releaseName,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n}: {\n newConfig: WebpackConfigObjectWithModuleRules;\n userNextConfig: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n buildContext: BuildContext;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n vercelCronsConfig: VercelCronsConfig;\n}): void {\n const assetPrefix = userNextConfig.assetPrefix || userNextConfig.basePath || '';\n\n // Check if release creation is disabled to prevent injection that breaks build determinism\n const shouldCreateRelease = userSentryOptions.release?.create !== false;\n const releaseToInject = releaseName && shouldCreateRelease ? releaseName : undefined;\n\n const isomorphicValues = {\n // `rewritesTunnel` set by the user in Next.js config\n _sentryRewritesTunnelPath:\n userSentryOptions.tunnelRoute !== undefined &&\n userNextConfig.output !== 'export' &&\n typeof userSentryOptions.tunnelRoute === 'string'\n ? `${userNextConfig.basePath ?? ''}${userSentryOptions.tunnelRoute}`\n : undefined,\n\n // The webpack plugin's release injection breaks the `app` directory so we inject the release manually here instead.\n // Having a release defined in dev-mode spams releases in Sentry so we only set one in non-dev mode\n // Only inject if release creation is not explicitly disabled (to maintain build determinism)\n SENTRY_RELEASE: releaseToInject && !buildContext.dev ? { id: releaseToInject } : undefined,\n _sentryBasePath: buildContext.dev ? userNextConfig.basePath : undefined,\n // This is used to determine version-based dev-symbolication behavior\n _sentryNextJsVersion: nextJsVersion,\n };\n\n const serverValues = {\n ...isomorphicValues,\n // Make sure that if we have a windows path, the backslashes are interpreted as such (rather than as escape\n // characters)\n _sentryRewriteFramesDistDir: userNextConfig.distDir?.replace(/\\\\/g, '\\\\\\\\') || '.next',\n // Inject Vercel crons config for server-side cron auto-instrumentation\n _sentryVercelCronsConfig: vercelCronsConfig ? JSON.stringify(vercelCronsConfig) : undefined,\n };\n\n const clientValues = {\n ...isomorphicValues,\n // Get the path part of `assetPrefix`, minus any trailing slash. (We use a placeholder for the origin if\n // `assetPrefix` doesn't include one. Since we only care about the path, it doesn't matter what it is.)\n _sentryRewriteFramesAssetPrefixPath: assetPrefix\n ? new URL(assetPrefix, 'http://dogs.are.great').pathname.replace(/\\/$/, '')\n : '',\n _sentryAssetPrefix: userNextConfig.assetPrefix,\n _sentryExperimentalThirdPartyOriginStackFrames: userSentryOptions._experimental?.thirdPartyOriginStackFrames\n ? 'true'\n : undefined,\n _sentryRouteManifest: JSON.stringify(routeManifest),\n };\n\n if (buildContext.isServer) {\n newConfig.module.rules.push({\n // TODO: Find a more bulletproof way of matching. For now this is fine and doesn't hurt anyone. It merely sets some globals.\n test: /(src[\\\\/])?instrumentation.(js|ts)/,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders/valueInjectionLoader.js'),\n options: {\n values: serverValues,\n },\n },\n ],\n });\n } else {\n newConfig.module.rules.push({\n test: /(?:sentry\\.client\\.config\\.(jsx?|tsx?)|(?:src[\\\\/])?instrumentation-client\\.(js|ts))$/,\n use: [\n {\n loader: path.resolve(__dirname, 'loaders/valueInjectionLoader.js'),\n options: {\n values: clientValues,\n },\n },\n ],\n });\n }\n}\n\nfunction resolveNextPackageDirFromDirectory(basedir: string): string | undefined {\n try {\n return path.dirname(createRequire(`${basedir}/`).resolve('next/package.json'));\n } catch {\n // Should not happen in theory\n return undefined;\n }\n}\n\nconst POTENTIAL_REQUEST_ASYNC_STORAGE_LOCATIONS = [\n // Original location of RequestAsyncStorage\n // https://github.com/vercel/next.js/blob/46151dd68b417e7850146d00354f89930d10b43b/packages/next/src/client/components/request-async-storage.ts\n 'next/dist/client/components/request-async-storage.js',\n // Introduced in Next.js 13.4.20\n // https://github.com/vercel/next.js/blob/e1bc270830f2fc2df3542d4ef4c61b916c802df3/packages/next/src/client/components/request-async-storage.external.ts\n 'next/dist/client/components/request-async-storage.external.js',\n // Introduced in Next.js 15.0.0-canary.180\n // https://github.com/vercel/next.js/blob/541167b9b0fed6af9f36472e632863ffec41f18c/packages/next/src/server/app-render/work-unit-async-storage.external.ts\n 'next/dist/server/app-render/work-unit-async-storage.external.js',\n // Introduced in Next.js 15.0.0-canary.182\n // https://github.com/vercel/next.js/blob/f35159e5e80138ca7373f57b47edcaae3bcf1728/packages/next/src/client/components/work-unit-async-storage.external.ts\n 'next/dist/client/components/work-unit-async-storage.external.js',\n];\n\nfunction getRequestAsyncStorageModuleLocation(\n webpackContextDir: string,\n webpackResolvableModuleLocations: string[] | undefined,\n): string | undefined {\n if (webpackResolvableModuleLocations === undefined) {\n return undefined;\n }\n\n const absoluteWebpackResolvableModuleLocations = webpackResolvableModuleLocations.map(loc =>\n path.resolve(webpackContextDir, loc),\n );\n\n for (const webpackResolvableLocation of absoluteWebpackResolvableModuleLocations) {\n const nextPackageDir = resolveNextPackageDirFromDirectory(webpackResolvableLocation);\n if (nextPackageDir) {\n const asyncLocalStorageLocation = POTENTIAL_REQUEST_ASYNC_STORAGE_LOCATIONS.find(loc =>\n fs.existsSync(path.join(nextPackageDir, '..', loc)),\n );\n if (asyncLocalStorageLocation) {\n return asyncLocalStorageLocation;\n }\n }\n }\n\n return undefined;\n}\n\nfunction addOtelWarningIgnoreRule(newConfig: WebpackConfigObjectWithModuleRules): void {\n const ignoreRules = [\n // Inspired by @matmannion: https://github.com/getsentry/sentry-javascript/issues/12077#issuecomment-2180307072\n (warning, compilation) => {\n // This is wrapped in try-catch because we are vendoring types for this hook and we can't be 100% sure that we are accessing API that is there\n try {\n if (!warning.module) {\n return false;\n }\n\n const isDependencyThatMayRaiseCriticalDependencyMessage =\n /@opentelemetry\\/instrumentation/.test(warning.module.readableIdentifier(compilation.requestShortener)) ||\n /@prisma\\/instrumentation/.test(warning.module.readableIdentifier(compilation.requestShortener));\n const isCriticalDependencyMessage = /Critical dependency/.test(warning.message);\n\n return isDependencyThatMayRaiseCriticalDependencyMessage && isCriticalDependencyMessage;\n } catch {\n return false;\n }\n },\n // We provide these objects in addition to the hook above to provide redundancy in case the hook fails.\n { module: /@opentelemetry\\/instrumentation/, message: /Critical dependency/ },\n { module: /@prisma\\/instrumentation/, message: /Critical dependency/ },\n { module: /require-in-the-middle/, message: /Critical dependency/ },\n ] satisfies IgnoreWarningsOption;\n\n if (newConfig.ignoreWarnings === undefined) {\n newConfig.ignoreWarnings = ignoreRules;\n } else if (Array.isArray(newConfig.ignoreWarnings)) {\n newConfig.ignoreWarnings.push(...ignoreRules);\n }\n}\n\nfunction addEdgeRuntimePolyfills(newConfig: WebpackConfigObjectWithModuleRules, buildContext: BuildContext): void {\n // Use ProvidePlugin to inject performance global only when accessed\n newConfig.plugins = newConfig.plugins || [];\n newConfig.plugins.push(\n new buildContext.webpack.ProvidePlugin({\n performance: [path.resolve(__dirname, 'polyfills', 'perf_hooks.js'), 'performance'],\n }),\n );\n\n // Add module resolution aliases for problematic Node.js modules in edge runtime\n newConfig.resolve = newConfig.resolve || {};\n newConfig.resolve.alias = {\n ...newConfig.resolve.alias,\n // Redirect perf_hooks imports to a polyfilled version\n perf_hooks: path.resolve(__dirname, 'polyfills', 'perf_hooks.js'),\n };\n}\n\n/**\n * Sets up the tree-shaking flags based on the user's configuration.\n * https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/tree-shaking/\n */\nfunction setupTreeshakingFromConfig(\n userSentryOptions: SentryBuildOptions,\n newConfig: WebpackConfigObjectWithModuleRules,\n buildContext: BuildContext,\n): void {\n const defines: Record = {};\n\n newConfig.plugins = newConfig.plugins || [];\n\n if (userSentryOptions.webpack?.treeshake?.removeDebugLogging) {\n defines.__SENTRY_DEBUG__ = false;\n }\n\n if (userSentryOptions.webpack?.treeshake?.removeTracing) {\n defines.__SENTRY_TRACING__ = false;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayIframe) {\n defines.__RRWEB_EXCLUDE_IFRAME__ = true;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayShadowDOM) {\n defines.__RRWEB_EXCLUDE_SHADOW_DOM__ = true;\n }\n\n if (userSentryOptions.webpack?.treeshake?.excludeReplayCompressionWorker) {\n defines.__SENTRY_EXCLUDE_REPLAY_WORKER__ = true;\n }\n\n // Only add DefinePlugin if there are actual defines to set\n if (Object.keys(defines).length > 0) {\n newConfig.plugins.push(new buildContext.webpack.DefinePlugin(defines));\n }\n}\n","// Packages we auto-instrument need to be external for instrumentation to work\n// Next.js externalizes some packages by default, see: https://nextjs.org/docs/app/api-reference/config/next-config-js/serverExternalPackages\n// Others we need to add ourselves\n//\n// NOTE: 'ai' (Vercel AI SDK) is intentionally NOT included in this list.\n// When externalized, Next.js doesn't properly handle the package's conditional exports,\n// specifically the \"react-server\" export condition. This causes client-side code to be\n// loaded in server components instead of the appropriate server-side functions.\nexport const DEFAULT_SERVER_EXTERNAL_PACKAGES = [\n 'amqplib',\n 'connect',\n 'dataloader',\n 'express',\n 'generic-pool',\n 'graphql',\n '@hapi/hapi',\n 'ioredis',\n 'kafkajs',\n 'koa',\n 'lru-memoizer',\n 'mongodb',\n 'mongoose',\n 'mysql',\n 'mysql2',\n 'knex',\n 'pg',\n 'pg-pool',\n '@node-redis/client',\n '@redis/client',\n 'redis',\n 'tedious',\n];\n","import { handleRunAfterProductionCompile } from '../handleRunAfterProductionCompile';\nimport type { RouteManifest } from '../manifest/types';\nimport { constructTurbopackConfig } from '../turbopack';\nimport type { NextConfigObject, SentryBuildOptions, TurbopackOptions } from '../types';\nimport { detectActiveBundler, supportsProductionCompileHook } from '../util';\nimport { constructWebpackConfigFunction } from '../webpack';\nimport { DEFAULT_SERVER_EXTERNAL_PACKAGES } from './constants';\nimport type { VercelCronsConfigResult } from './getFinalConfigObjectUtils';\n\n/**\n * Information about the active bundler and feature support based on Next.js version.\n */\nexport type BundlerInfo = {\n isTurbopack: boolean;\n isWebpack: boolean;\n isTurbopackSupported: boolean;\n};\n\n/**\n * Detects which bundler is active (webpack vs turbopack) and whether turbopack features are supported.\n */\nexport function getBundlerInfo(nextJsVersion: string | undefined): BundlerInfo {\n const activeBundler = detectActiveBundler();\n const isTurbopack = activeBundler === 'turbopack';\n const isWebpack = activeBundler === 'webpack';\n const isTurbopackSupported = supportsProductionCompileHook(nextJsVersion ?? '');\n\n return { isTurbopack, isWebpack, isTurbopackSupported };\n}\n\n/**\n * Warns if turbopack is in use but the detected Next.js version is unsupported.\n */\nexport function maybeWarnAboutUnsupportedTurbopack(nextJsVersion: string | undefined, bundlerInfo: BundlerInfo): void {\n // Warn if using turbopack with an unsupported Next.js version\n if (!bundlerInfo.isTurbopackSupported && bundlerInfo.isTurbopack) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] WARNING: You are using the Sentry SDK with Turbopack. The Sentry SDK is compatible with Turbopack on Next.js version 15.4.1 or later. You are currently on ${nextJsVersion}. Please upgrade to a newer Next.js version to use the Sentry SDK with Turbopack.`,\n );\n }\n}\n\n/**\n * Warns if `useRunAfterProductionCompileHook` is enabled in webpack mode but the Next.js version is unsupported.\n */\nexport function maybeWarnAboutUnsupportedRunAfterProductionCompileHook(\n nextJsVersion: string | undefined,\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): void {\n // Webpack case - warn if trying to use runAfterProductionCompile hook with unsupported Next.js version\n if (\n userSentryOptions.useRunAfterProductionCompileHook &&\n !supportsProductionCompileHook(nextJsVersion ?? '') &&\n bundlerInfo.isWebpack\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] The configured `useRunAfterProductionCompileHook` option is not compatible with your current Next.js version. This option is only supported on Next.js version 15.4.1 or later. Will not run source map and release management logic.',\n );\n }\n}\n\n/**\n * Constructs turbopack config when turbopack is active.\n */\nexport function maybeConstructTurbopackConfig(\n incomingUserNextConfigObject: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n routeManifest: RouteManifest | undefined,\n nextJsVersion: string | undefined,\n bundlerInfo: BundlerInfo,\n vercelCronsConfigResult: VercelCronsConfigResult,\n): TurbopackOptions | undefined {\n if (!bundlerInfo.isTurbopack) {\n return undefined;\n }\n\n // Only pass crons config if the span-based approach is enabled\n const vercelCronsConfig = vercelCronsConfigResult.strategy === 'spans' ? vercelCronsConfigResult.config : undefined;\n\n return constructTurbopackConfig({\n userNextConfig: incomingUserNextConfigObject,\n userSentryOptions,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n });\n}\n\n/**\n * Resolves whether to use the `runAfterProductionCompile` hook based on options and bundler.\n */\nexport function resolveUseRunAfterProductionCompileHookOption(\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): boolean {\n // If not explicitly set, turbopack uses the runAfterProductionCompile hook (as there are no alternatives), webpack does not.\n return userSentryOptions.useRunAfterProductionCompileHook ?? (bundlerInfo.isTurbopack ? true : false);\n}\n\n/**\n * Hooks into Next.js' `compiler.runAfterProductionCompile` to run Sentry release/sourcemap handling.\n *\n * Note: this mutates `incomingUserNextConfigObject`.\n */\nexport function maybeSetUpRunAfterProductionCompileHook({\n incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n nextJsVersion,\n bundlerInfo,\n turboPackConfig,\n shouldUseRunAfterProductionCompileHook,\n}: {\n incomingUserNextConfigObject: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n nextJsVersion: string | undefined;\n bundlerInfo: BundlerInfo;\n turboPackConfig: TurbopackOptions | undefined;\n shouldUseRunAfterProductionCompileHook: boolean;\n}): void {\n if (!shouldUseRunAfterProductionCompileHook) {\n return;\n }\n\n if (!supportsProductionCompileHook(nextJsVersion ?? '')) {\n return;\n }\n\n if (incomingUserNextConfigObject?.compiler?.runAfterProductionCompile === undefined) {\n incomingUserNextConfigObject.compiler ??= {};\n\n incomingUserNextConfigObject.compiler.runAfterProductionCompile = async ({ distDir }) => {\n await handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool: bundlerInfo.isTurbopack ? 'turbopack' : 'webpack',\n usesNativeDebugIds: bundlerInfo.isTurbopack ? turboPackConfig?.debugIds : undefined,\n },\n userSentryOptions,\n );\n };\n return;\n }\n\n if (typeof incomingUserNextConfigObject.compiler.runAfterProductionCompile === 'function') {\n incomingUserNextConfigObject.compiler.runAfterProductionCompile = new Proxy(\n incomingUserNextConfigObject.compiler.runAfterProductionCompile,\n {\n async apply(target, thisArg, argArray) {\n const { distDir }: { distDir: string } = argArray[0] ?? { distDir: '.next' };\n await target.apply(thisArg, argArray);\n await handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool: bundlerInfo.isTurbopack ? 'turbopack' : 'webpack',\n usesNativeDebugIds: bundlerInfo.isTurbopack ? turboPackConfig?.debugIds : undefined,\n },\n userSentryOptions,\n );\n },\n },\n );\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] The configured `compiler.runAfterProductionCompile` option is not a function. Will not run source map and release management logic.',\n );\n}\n\n/**\n * For supported turbopack builds, auto-enables browser sourcemaps and defaults to deleting them after upload.\n *\n * Note: this mutates both `incomingUserNextConfigObject` and `userSentryOptions`.\n */\nexport function maybeEnableTurbopackSourcemaps(\n incomingUserNextConfigObject: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): void {\n // Enable source maps for turbopack builds\n if (!bundlerInfo.isTurbopackSupported || !bundlerInfo.isTurbopack || userSentryOptions.sourcemaps?.disable) {\n return;\n }\n\n // Only set if not already configured by user\n if (incomingUserNextConfigObject.productionBrowserSourceMaps !== undefined) {\n return;\n }\n\n if (userSentryOptions.debug) {\n // eslint-disable-next-line no-console\n console.log('[@sentry/nextjs] Automatically enabling browser source map generation for turbopack build.');\n }\n incomingUserNextConfigObject.productionBrowserSourceMaps = true;\n\n // Enable source map deletion if not explicitly disabled\n if (userSentryOptions.sourcemaps?.deleteSourcemapsAfterUpload !== undefined) {\n return;\n }\n\n if (userSentryOptions.debug) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Source maps will be automatically deleted after being uploaded to Sentry. If you want to keep the source maps, set the `sourcemaps.deleteSourcemapsAfterUpload` option to false in `withSentryConfig()`. If you do not want to generate and upload sourcemaps at all, set the `sourcemaps.disable` option to true.',\n );\n }\n\n userSentryOptions.sourcemaps = {\n ...userSentryOptions.sourcemaps,\n deleteSourcemapsAfterUpload: true,\n };\n}\n\n/**\n * Returns the patch which ensures server-side auto-instrumented packages are externalized.\n */\nexport function getServerExternalPackagesPatch(\n incomingUserNextConfigObject: NextConfigObject,\n nextMajor: number | undefined,\n): Partial {\n if (nextMajor && nextMajor >= 15) {\n return {\n serverExternalPackages: [\n ...(incomingUserNextConfigObject.serverExternalPackages || []),\n ...DEFAULT_SERVER_EXTERNAL_PACKAGES,\n ],\n };\n }\n\n return {\n experimental: {\n ...incomingUserNextConfigObject.experimental,\n serverComponentsExternalPackages: [\n ...(incomingUserNextConfigObject.experimental?.serverComponentsExternalPackages || []),\n ...DEFAULT_SERVER_EXTERNAL_PACKAGES,\n ],\n },\n };\n}\n\n/**\n * Returns the patch for injecting Sentry's webpack config function (if enabled and applicable).\n */\nexport function getWebpackPatch({\n incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n routeManifest,\n nextJsVersion,\n shouldUseRunAfterProductionCompileHook,\n bundlerInfo,\n vercelCronsConfigResult,\n}: {\n incomingUserNextConfigObject: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n shouldUseRunAfterProductionCompileHook: boolean;\n bundlerInfo: BundlerInfo;\n vercelCronsConfigResult: VercelCronsConfigResult;\n}): Partial {\n if (!bundlerInfo.isWebpack || userSentryOptions.webpack?.disableSentryConfig) {\n return {};\n }\n\n return {\n webpack: constructWebpackConfigFunction({\n userNextConfig: incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n routeManifest,\n nextJsVersion,\n useRunAfterProductionCompileHook: shouldUseRunAfterProductionCompileHook,\n vercelCronsConfigResult,\n }),\n };\n}\n\n/**\n * Returns the patch for adding turbopack config (if enabled and supported).\n */\nexport function getTurbopackPatch(\n bundlerInfo: BundlerInfo,\n turboPackConfig: TurbopackOptions | undefined,\n): Partial {\n if (!bundlerInfo.isTurbopackSupported || !bundlerInfo.isTurbopack) {\n return {};\n }\n\n return { turbopack: turboPackConfig };\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling didn't run because the request was aborted.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling was skipped because the response had started.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was not handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\" as const;\n\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;\n\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy' as const;\n\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;\n\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\" as const;\n\n/**\n * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the endpoint limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\" as const;\n\n/**\n * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the global limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\" as const;\n\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\" as const;\n\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled' as const;\n\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback' as const;\n\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated' as const;\n\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_ADDRESS = 'client.address' as const;\n\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_PORT = 'client.port' as const;\n\n/**\n * The column number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 16\n */\nexport const ATTR_CODE_COLUMN_NUMBER = 'code.column.number' as const;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\n */\nexport const ATTR_CODE_FILE_PATH = 'code.file.path' as const;\n\n/**\n * The method or function fully-qualified name without arguments. The value should fit the natural representation of the language runtime, which is also likely the same used within `code.stacktrace` attribute value. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example com.example.MyHttpService.serveRequest\n * @example GuzzleHttp\\\\Client::transfer\n * @example fopen\n *\n * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples.\n * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in\n * `code.stacktrace` without information on arguments.\n *\n * Examples:\n *\n * - Java method: `com.example.MyHttpService.serveRequest`\n * - Java anonymous class method: `com.mycompany.Main$1.myMethod`\n * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod`\n * - PHP function: `GuzzleHttp\\Client::transfer`\n * - Go function: `github.com/my/repo/pkg.foo.func5`\n * - Elixir: `OpenTelemetry.Ctx.new`\n * - Erlang: `opentelemetry_ctx:new`\n * - Rust: `playground::my_module::my_cool_func`\n * - C function: `fopen`\n */\nexport const ATTR_CODE_FUNCTION_NAME = 'code.function.name' as const;\n\n/**\n * The line number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 42\n */\nexport const ATTR_CODE_LINE_NUMBER = 'code.line.number' as const;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is identical to [`exception.stacktrace`](/docs/exceptions/exceptions-spans.md#stacktrace-representation). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Location'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace' as const;\n\n/**\n * The name of a collection (table, container) within the database.\n *\n * @example public.users\n * @example customers\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The collection name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple collections\n * in non-batch operations.\n *\n * For batch operations, if the individual operations are known to have the same\n * collection name then that collection name **SHOULD** be used.\n */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name' as const;\n\n/**\n * The name of the database, fully qualified within the server address and port.\n *\n * @example customers\n * @example test.users\n *\n * @note If a database system has multiple namespace components, they **SHOULD** be concatenated from the most general to the most specific namespace component, using `|` as a separator between the components. Any missing components (and their associated separators) **SHOULD** be omitted.\n * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system.\n * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.\n */\nexport const ATTR_DB_NAMESPACE = 'db.namespace' as const;\n\n/**\n * The number of queries included in a batch operation.\n *\n * @example 2\n * @example 3\n * @example 4\n *\n * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`.\n */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;\n\n/**\n * The name of the operation or command being executed.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The operation name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple operations\n * in non-batch operations.\n *\n * If spaces can occur in the operation name, multiple consecutive spaces\n * **SHOULD** be normalized to a single space.\n *\n * For batch operations, if the individual operations are known to have the same operation name\n * then that operation name **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;\n\n/**\n * Low cardinality summary of a database query.\n *\n * @example SELECT wuser_table\n * @example INSERT shipping_details SELECT orders\n * @example get user by id\n *\n * @note The query summary describes a class of database queries and is useful\n * as a grouping key, especially when analyzing telemetry for database\n * calls involving complex queries.\n *\n * Summary may be available to the instrumentation through\n * instrumentation hooks or other means. If it is not available, instrumentations\n * that support query parsing **SHOULD** generate a summary following\n * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query)\n * section.\n *\n * For batch operations, if the individual operations are known to have the same query summary\n * then that query summary **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.query.summary` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexport const ATTR_DB_QUERY_SUMMARY = 'db.query.summary' as const;\n\n/**\n * The database query being executed.\n *\n * @example SELECT * FROM wuser_table where username = ?\n * @example SET mykey ?\n *\n * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext).\n * For batch operations, if the individual operations are known to have the same query text then that query text **SHOULD** be used, otherwise all of the individual query texts **SHOULD** be concatenated with separator `; ` or some other database system specific separator if more applicable.\n * Parameterized query text **SHOULD NOT** be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk.\n */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;\n\n/**\n * Database response status code.\n *\n * @example 102\n * @example ORA-17002\n * @example 08P01\n * @example 404\n *\n * @note The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.\n * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system.\n */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code' as const;\n\n/**\n * The name of a stored procedure within the database.\n *\n * @example GetCustomer\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * For batch operations, if the individual operations are known to have the same\n * stored procedure name then that stored procedure name **SHOULD** be used.\n */\nexport const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name' as const;\n\n/**\n * The database management system (DBMS) product as identified by the client instrumentation.\n *\n * @note The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge.\n */\nexport const ATTR_DB_SYSTEM_NAME = 'db.system.name' as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\" as const;\n\n/**\n * Enum value \"microsoft.sql_server\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Microsoft SQL Server](https://www.microsoft.com/sql-server)\n */\nexport const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\" as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation' as const;\n\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\" as const;\n\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\" as const;\n\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\" as const;\n\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\" as const;\n\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\" as const;\n\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes),\n * it's **RECOMMENDED** to:\n *\n * - Use a domain-specific attribute\n * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport const ATTR_ERROR_TYPE = 'error.type' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n *\n * A fallback error value to be used when the instrumentation doesn't define a custom value.\n */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Indicates that the exception is escaping the scope of the span.\n *\n * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span.\n */\nexport const ATTR_EXCEPTION_ESCAPED = 'exception.escaped' as const;\n\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n */\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message' as const;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace' as const;\n\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexport const ATTR_EXCEPTION_TYPE = 'exception.type' as const;\n\n/**\n * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * The `User-Agent` header is already captured in the `user_agent.original` attribute.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for`\n * attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]` or `[\"1.2.3.4, 1.2.3.5\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${key}`;\n\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods),\n * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html)\n * and the QUERY method defined in [httpbis-safe-method-w-body](https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/?include_text=1).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods.\n *\n *\n * If this override is done via declarative configuration, then the list **MUST** be configurable via the `known_methods` property\n * (an array of case-sensitive strings with minimum items 0) under `.instrumentation/development.general.http.client` and/or\n * `.instrumentation/development.general.http.server`.\n *\n * In either case, this list **MUST** be a full override of the default known methods,\n * it is not a list of known methods in addition to the defaults.\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexport const ATTR_HTTP_REQUEST_METHOD = 'http.request.method' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * Any HTTP method that the instrumentation has no prior knowledge of.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\" as const;\n\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\" as const;\n\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\" as const;\n\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\" as const;\n\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\" as const;\n\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\" as const;\n\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\" as const;\n\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\" as const;\n\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\" as const;\n\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original' as const;\n\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexport const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count' as const;\n\n/**\n * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header`\n * attribute with value `[\"abc\", \"def\"]` or `[\"abc, def\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.${key}`;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code' as const;\n\n/**\n * The matched route template for the request. This **MUST** be low-cardinality and include all static path segments, with dynamic path segments represented with placeholders.\n *\n * @example /users/:userID?\n * @example my-controller/my-action/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n *\n * A static path segment is a part of the route template with a fixed, low-cardinality value. This includes literal strings like `/users/` and placeholders that\n * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`.\n *\n * A dynamic path segment is a placeholder for a value that can have high cardinality and is not constrained to a predefined list like static path segments.\n *\n * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY**\n * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string.\n */\nexport const ATTR_HTTP_ROUTE = 'http.route' as const;\n\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexport const ATTR_JVM_GC_ACTION = 'jvm.gc.action' as const;\n\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexport const ATTR_JVM_GC_NAME = 'jvm.gc.name' as const;\n\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexport const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name' as const;\n\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type' as const;\n\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\" as const;\n\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\" as const;\n\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon' as const;\n\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state' as const;\n\n/**\n * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is blocked waiting for a monitor lock is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\" as const;\n\n/**\n * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has not yet started is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\" as const;\n\n/**\n * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread executing in the Java virtual machine is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\n/**\n * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\" as const;\n\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting indefinitely for another thread to perform a particular action is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\" as const;\n\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address' as const;\n\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port' as const;\n\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address' as const;\n\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;\n\n/**\n * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;\n\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexport const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version' as const;\n\n/**\n * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexport const ATTR_NETWORK_TRANSPORT = 'network.transport' as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\" as const;\n\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\" as const;\n\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\" as const;\n\n/**\n * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_TYPE = 'network.type' as const;\n\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\" as const;\n\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\" as const;\n\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name' as const;\n\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version' as const;\n\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport const ATTR_OTEL_STATUS_CODE = 'otel.status_code' as const;\n\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\" as const;\n\n/**\n * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation has been validated by an Application developer or Operator to have completed successfully.\n */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\" as const;\n\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description' as const;\n\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_ADDRESS = 'server.address' as const;\n\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_PORT = 'server.port' as const;\n\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexport const ATTR_SERVICE_NAME = 'service.name' as const;\n\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * The version string of the service component. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexport const ATTR_SERVICE_VERSION = 'service.version' as const;\n\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status' as const;\n\n/**\n * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed because the app is shutting down.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\" as const;\n\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexport const ATTR_SIGNALR_TRANSPORT = 'signalr.transport' as const;\n\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\" as const;\n\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\" as const;\n\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\" as const;\n\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;\n\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\" as const;\n\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\" as const;\n\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\" as const;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexport const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;\n\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport const ATTR_URL_FRAGMENT = 'url.fragment' as const;\n\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment\n * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n *\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`.\n * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n *\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed).\n *\n * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the\n * value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `https://www.example.com/path?color=blue&sig=REDACTED`.\n */\nexport const ATTR_URL_FULL = 'url.full' as const;\n\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport const ATTR_URL_PATH = 'url.path' as const;\n\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexport const ATTR_URL_QUERY = 'url.query' as const;\n\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexport const ATTR_URL_SCHEME = 'url.scheme' as const;\n\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexport const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { inspect } from 'util';\n\n/**\n * Retrieves a number from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number.\n * - Returns a number in all other cases.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {number | undefined} - The number value or `undefined`.\n */\nexport function getNumberFromEnv(key: string): number | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n\n const value = Number(raw);\n if (isNaN(value)) {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`\n );\n return undefined;\n }\n\n return value;\n}\n\n/**\n * Retrieves a string from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string | undefined} - The string value or `undefined`.\n */\nexport function getStringFromEnv(key: string): string | undefined {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\n\n/**\n * Retrieves a boolean value from an environment variable.\n * - Trims leading and trailing whitespace and ignores casing.\n * - Returns `false` if the environment variable is empty, unset, or contains only whitespace.\n * - Returns `false` for strings that cannot be mapped to a boolean.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace.\n */\nexport function getBooleanFromEnv(key: string): boolean {\n const raw = process.env[key]?.trim().toLowerCase();\n if (raw == null || raw === '') {\n // NOTE: falling back to `false` instead of `undefined` as required by the specification.\n // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary\n // normalizations in the consuming code.\n return false;\n }\n if (raw === 'true') {\n return true;\n } else if (raw === 'false') {\n return false;\n } else {\n diag.warn(\n `Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`\n );\n return false;\n }\n}\n\n/**\n * Retrieves a list of strings from an environment variable.\n * - Uses ',' as the delimiter.\n * - Trims leading and trailing whitespace from each entry.\n * - Excludes empty entries.\n * - Returns `undefined` if the environment variable is empty or contains only whitespace.\n * - Returns an empty array if all entries are empty or whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string[] | undefined} - The list of strings or `undefined`.\n */\nexport function getStringListFromEnv(key: string): string[] | undefined {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.6.1';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { VERSION } from '../../version';\nimport {\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport interface ExportResult {\n code: ExportResultCode;\n error?: Error;\n}\n\nexport enum ExportResultCode {\n SUCCESS,\n FAILED,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport class Deferred {\n private _promise: Promise;\n private _resolve!: (val: T) => void;\n private _reject!: (error: unknown) => void;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get promise() {\n return this._promise;\n }\n\n resolve(val: T) {\n this._resolve(val);\n }\n\n reject(err: unknown) {\n this._reject(err);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AttributeValue, Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\n\nexport function sanitizeAttributes(attributes: unknown): Attributes {\n const out: Attributes = {};\n\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = (attributes as Record)[key];\n if (!isAttributeValue(val)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n } else {\n out[key] = val;\n }\n }\n\n return out;\n}\n\nexport function isAttributeKey(key: unknown): key is string {\n return typeof key === 'string' && key !== '';\n}\n\nexport function isAttributeValue(val: unknown): val is AttributeValue {\n if (val == null) {\n return true;\n }\n\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n\n return isValidPrimitiveAttributeValueType(typeof val);\n}\n\nfunction isHomogeneousAttributeValueArray(arr: unknown[]): boolean {\n let type: string | undefined;\n\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null) continue;\n const elementType = typeof element;\n\n if (elementType === type) {\n continue;\n }\n\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction isValidPrimitiveAttributeValueType(valType: string): boolean {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n\n return false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport {\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from '../../common/globalThis';\nexport { SDK_INFO } from './sdk-info';\n\n/**\n * @deprecated Use performance directly.\n */\nexport const otperformance: { now(): number; readonly timeOrigin: number } =\n performance;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isPlainObject } from './lodash.merge';\n\nconst MAX_LEVEL = 20;\n\ninterface ObjectInto {\n obj: any;\n key: string;\n}\n\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nexport function merge(...args: any[]): any {\n let result: any = args.shift();\n const objects: WeakMap | undefined = new WeakMap<\n any,\n ObjectInto[]\n >();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n\n return result;\n}\n\nfunction takeValue(value: any): any {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\n\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(\n one: any,\n two: any,\n level = 0,\n objects: WeakMap\n): any {\n let result: any;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\n } else if (isArray(one)) {\n result = one.slice();\n if (isArray(two)) {\n for (let i = 0, j = two.length; i < j; i++) {\n result.push(takeValue(two[i]));\n }\n } else if (isObject(two)) {\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n result[key] = takeValue(two[key]);\n }\n }\n } else if (isObject(one)) {\n if (isObject(two)) {\n if (!shouldMerge(one, two)) {\n return two;\n }\n result = Object.assign({}, one);\n const keys = Object.keys(two);\n\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n } else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n } else {\n const obj1 = result[key];\n const obj2 = twoValue;\n\n if (\n wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)\n ) {\n delete result[key];\n } else {\n if (isObject(obj1) && isObject(obj2)) {\n const arr1 = objects.get(obj1) || [];\n const arr2 = objects.get(obj2) || [];\n arr1.push({ obj: one, key });\n arr2.push({ obj: two, key });\n objects.set(obj1, arr1);\n objects.set(obj2, arr2);\n }\n\n result[key] = mergeTwoObjects(\n result[key],\n twoValue,\n level,\n objects\n );\n }\n }\n }\n } else {\n result = two;\n }\n }\n\n return result;\n}\n\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(\n obj: any,\n key: string,\n objects: WeakMap\n): boolean {\n const arr = objects.get(obj[key]) || [];\n for (let i = 0, j = arr.length; i < j; i++) {\n const info = arr[i];\n if (info.key === key && info.obj === obj) {\n return true;\n }\n }\n return false;\n}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value);\n}\n\nfunction isFunction(value: any): boolean {\n return typeof value === 'function';\n}\n\nfunction isObject(value: any): boolean {\n return (\n !isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object'\n );\n}\n\nfunction isPrimitive(value: any): boolean {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined' ||\n value instanceof Date ||\n value instanceof RegExp ||\n value === null\n );\n}\n\nfunction shouldMerge(one: any, two: any): boolean {\n if (!isPlainObject(one) || !isPlainObject(two)) {\n return false;\n }\n\n return true;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator';\nexport { AnchoredClock } from './common/anchored-clock';\nexport type { Clock } from './common/anchored-clock';\nexport { isAttributeValue, sanitizeAttributes } from './common/attributes';\nexport {\n globalErrorHandler,\n setGlobalErrorHandler,\n} from './common/global-error-handler';\nexport { loggingErrorHandler } from './common/logging-error-handler';\nexport {\n addHrTimes,\n getTimeOrigin,\n hrTime,\n hrTimeDuration,\n hrTimeToMicroseconds,\n hrTimeToMilliseconds,\n hrTimeToNanoseconds,\n hrTimeToTimeStamp,\n isTimeInput,\n isTimeInputHrTime,\n millisToHrTime,\n timeInputToHrTime,\n} from './common/time';\nexport { unrefTimer } from './common/timer-util';\nexport type { ErrorHandler, InstrumentationScope } from './common/types';\nexport { ExportResultCode } from './ExportResult';\nexport type { ExportResult } from './ExportResult';\nexport { parseKeyPairsIntoRecord } from './baggage/utils';\nexport {\n SDK_INFO,\n _globalThis,\n getStringFromEnv,\n getBooleanFromEnv,\n getNumberFromEnv,\n getStringListFromEnv,\n otperformance,\n} from './platform';\nexport { CompositePropagator } from './propagation/composite';\nexport type { CompositePropagatorConfig } from './propagation/composite';\nexport {\n TRACE_PARENT_HEADER,\n TRACE_STATE_HEADER,\n W3CTraceContextPropagator,\n parseTraceParent,\n} from './trace/W3CTraceContextPropagator';\nexport {\n RPCType,\n deleteRPCMetadata,\n getRPCMetadata,\n setRPCMetadata,\n} from './trace/rpc-metadata';\nexport type { RPCMetadata } from './trace/rpc-metadata';\nexport {\n isTracingSuppressed,\n suppressTracing,\n unsuppressTracing,\n} from './trace/suppress-tracing';\nexport { TraceState } from './trace/TraceState';\nexport { merge } from './utils/merge';\nexport { TimeoutError, callWithTimeout } from './utils/timeout';\nexport { isUrlIgnored, urlMatches } from './utils/url';\nexport { BindOnceFuture } from './utils/callback';\nexport { diagLogLevelFromString } from './utils/configuration';\nimport { _export } from './internal/exporter';\nexport const internal = {\n _export,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as api from '@opentelemetry/api';\nimport { otperformance as performance } from '../platform';\n\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis: number): api.HrTime {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\n\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nexport function getTimeOrigin(): number {\n return performance.timeOrigin;\n}\n\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow?: number): api.HrTime {\n const timeOrigin = millisToHrTime(performance.timeOrigin);\n const now = millisToHrTime(\n typeof performanceNow === 'number' ? performanceNow : performance.now()\n );\n\n return addHrTimes(timeOrigin, now);\n}\n\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time: api.TimeInput): api.HrTime {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time as api.HrTime;\n } else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < performance.timeOrigin) {\n return hrTime(time);\n } else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n } else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n } else {\n throw TypeError('Invalid input type');\n }\n}\n\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(\n startTime: api.HrTime,\n endTime: api.HrTime\n): api.HrTime {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n\n return [seconds, nanos];\n}\n\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time: api.HrTime): string {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\n\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time: api.HrTime): number {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time: api.HrTime): number {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time: api.HrTime): number {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value: unknown): value is api.HrTime {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number'\n );\n}\n\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(\n value: unknown\n): value is api.HrTime | number | Date {\n return (\n isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date\n );\n}\n\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime {\n const out = [time1[0] + time2[0], time1[1] + time2[1]] as api.HrTime;\n\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n\n return out;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { context } from '@opentelemetry/api';\nimport type { ExportResult } from '../ExportResult';\nimport { suppressTracing } from '../trace/suppress-tracing';\n\nexport interface Exporter {\n export(arg: T, resultCallback: (result: ExportResult) => void): void;\n}\n\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nexport function _export(\n exporter: Exporter,\n arg: T\n): Promise {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n exporter.export(arg, resolve);\n });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { createContextKey } from '@opentelemetry/api';\n\nconst SUPPRESS_TRACING_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key SUPPRESS_TRACING'\n);\n\nexport function suppressTracing(context: Context): Context {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\n\nexport function unsuppressTracing(context: Context): Context {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\n\nexport function isTracingSuppressed(context: Context): boolean {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Exception } from '@opentelemetry/api';\nimport { loggingErrorHandler } from './logging-error-handler';\nimport type { ErrorHandler } from './types';\n\n/** The global error handler delegate */\nlet delegateHandler = loggingErrorHandler();\n\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nexport function setGlobalErrorHandler(handler: ErrorHandler): void {\n delegateHandler = handler;\n}\n\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nexport function globalErrorHandler(ex: Exception): void {\n try {\n delegateHandler(ex);\n } catch {} // eslint-disable-line no-empty\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Deferred } from './promise';\n\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nexport class BindOnceFuture<\n R,\n This = unknown,\n T extends (this: This, ...args: unknown[]) => R = () => R,\n> {\n private _isCalled = false;\n private _deferred = new Deferred();\n private _callback: T;\n private _that: This;\n\n constructor(callback: T, that: This) {\n this._callback = callback;\n this._that = that;\n }\n\n get isCalled() {\n return this._isCalled;\n }\n\n get promise() {\n return this._deferred.promise;\n }\n\n call(...args: Parameters): Promise {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(\n val => this._deferred.resolve(val),\n err => this._deferred.reject(err)\n );\n } catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\n\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nexport function isPlainObject(value: any) {\n if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n return false;\n }\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (\n typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString\n );\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value: any) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value: any) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value)\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value: any) {\n const isOwn = hasOwnProperty.call(value, symToStringTag as any),\n tag = value[symToStringTag as any];\n let unmasked = false;\n\n try {\n value[symToStringTag as any] = undefined;\n unmasked = true;\n } catch {\n // silence\n }\n\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag as any] = tag;\n } else {\n delete value[symToStringTag as any];\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value: any) {\n return nativeObjectToString.call(value);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Exception } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport type { ErrorHandler } from './types';\n\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nexport function loggingErrorHandler(): ErrorHandler {\n return (ex: Exception) => {\n diag.error(stringifyException(ex));\n };\n}\n\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex: Exception | string): string {\n if (typeof ex === 'string') {\n return ex;\n } else {\n return JSON.stringify(flattenException(ex));\n }\n}\n\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex: Exception): Record {\n const result = {} as Record;\n let current = ex;\n\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName]) return;\n const value = current[propertyName as keyof typeof current];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n\n return result;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Baggage, BaggageEntryMetadata } from '@opentelemetry/api';\nimport { baggageEntryMetadataFromString } from '@opentelemetry/api';\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_PROPERTIES_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n} from './constants';\n\ntype ParsedBaggageKeyValue = {\n key: string;\n value: string;\n metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue: string, current: string) => {\n const value = `${hValue}${\n hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''\n }${current}`;\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n\n return entry;\n });\n}\n\nexport function parsePairKeyValue(\n entry: string\n): ParsedBaggageKeyValue | undefined {\n if (!entry) return;\n const metadataSeparatorIndex = entry.indexOf(BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart =\n metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0) return;\n\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n\n if (!rawKey || !rawValue) return;\n let key: string;\n let value: string;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n } catch {\n return;\n }\n\n let metadata;\n if (\n metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1\n ) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = baggageEntryMetadataFromString(metadataString);\n }\n\n return { key, value, metadata };\n}\n\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nexport function parseKeyPairsIntoRecord(\n value?: string\n): Record {\n const result: Record = {};\n\n if (typeof value === 'string' && value.length > 0) {\n value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n\n return result;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n BaggageEntry,\n Context,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { propagation } from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = propagation.getBaggage(context);\n if (!baggage || isTracingSuppressed(context)) return;\n const keyPairs = getKeyPairs(baggage)\n .filter((pair: string) => {\n return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = serializeKeyPairs(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, BAGGAGE_HEADER, headerValue);\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString) return context;\n const baggage: Record = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair) {\n const baggageEntry: BaggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return propagation.setBaggage(context, propagation.createBaggage(baggage));\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n SpanContext,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { isSpanContextValid, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed } from './suppress-tracing';\nimport { TraceState } from './TraceState';\n\nexport const TRACE_PARENT_HEADER = 'traceparent';\nexport const TRACE_STATE_HEADER = 'tracestate';\n\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(\n `^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`\n);\n\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n * It should be dynamically generated server side to have the server's request trace Id,\n * a parent span Id that was set on the server's request span,\n * and the trace flags to indicate the server's sampling decision\n * (01 = sampled, 00 = not sampled).\n * for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n * For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nexport function parseTraceParent(traceParent: string): SpanContext | null {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match) return null;\n\n // According to the specification the implementation should be compatible\n // with future versions. If there are more parts, we only reject it if it's using version 00\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n if (match[1] === '00' && match[5]) return null;\n\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\n\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nexport class W3CTraceContextPropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const spanContext = trace.getSpanContext(context);\n if (\n !spanContext ||\n isTracingSuppressed(context) ||\n !isSpanContextValid(spanContext)\n )\n return;\n\n const traceParent = `${VERSION}-${spanContext.traceId}-${\n spanContext.spanId\n }-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`;\n\n setter.set(carrier, TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(\n carrier,\n TRACE_STATE_HEADER,\n spanContext.traceState.serialize()\n );\n }\n }\n\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);\n if (!traceParentHeader) return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string') return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext) return context;\n\n spanContext.isRemote = true;\n\n const traceStateHeader = getter.get(carrier, TRACE_STATE_HEADER);\n if (traceStateHeader) {\n // If more than one `tracestate` header is found, we merge them into a\n // single header.\n const state = Array.isArray(traceStateHeader)\n ? traceStateHeader.join(',')\n : traceStateHeader;\n spanContext.traceState = new TraceState(\n typeof state === 'string' ? state : undefined\n );\n }\n return trace.setSpanContext(context, spanContext);\n }\n\n fields(): string[] {\n return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context, Span } from '@opentelemetry/api';\nimport { createContextKey } from '@opentelemetry/api';\n\nconst RPC_METADATA_KEY = createContextKey(\n 'OpenTelemetry SDK Context Key RPC_METADATA'\n);\n\nexport enum RPCType {\n HTTP = 'http',\n}\n\ntype HTTPMetadata = {\n type: RPCType.HTTP;\n route?: string;\n span: Span;\n};\n\n/**\n * Allows for future rpc metadata to be used with this mechanism\n */\nexport type RPCMetadata = HTTPMetadata;\n\nexport function setRPCMetadata(context: Context, meta: RPCMetadata): Context {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\n\nexport function deleteRPCMetadata(context: Context): Context {\n return context.deleteValue(RPC_METADATA_KEY);\n}\n\nexport function getRPCMetadata(context: Context): RPCMetadata | undefined {\n return context.getValue(RPC_METADATA_KEY) as RPCMetadata | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n} from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\n\n/** Configuration object for composite propagator */\nexport interface CompositePropagatorConfig {\n /**\n * List of propagators to run. Propagators run in the\n * list order. If a propagator later in the list writes the same context\n * key as a propagator earlier in the list, the later on will \"win\".\n */\n propagators?: TextMapPropagator[];\n}\n\n/** Combines multiple propagators into a single propagator. */\nexport class CompositePropagator implements TextMapPropagator {\n private readonly _propagators: TextMapPropagator[];\n private readonly _fields: string[];\n\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config: CompositePropagatorConfig = {}) {\n this._propagators = config.propagators ?? [];\n\n this._fields = Array.from(\n new Set(\n this._propagators\n // older propagators may not have fields function, null check to be sure\n .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n .reduce((x, y) => x.concat(y), [])\n )\n );\n }\n\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same carrier key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to inject\n * @param carrier Carrier into which context will be injected\n */\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n } catch (err) {\n diag.warn(\n `Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n }\n }\n\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same context key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to add values to\n * @param carrier Carrier from which to extract context\n */\n extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n } catch (err) {\n diag.warn(\n `Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`\n );\n }\n return ctx;\n }, context);\n }\n\n fields(): string[] {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as api from '@opentelemetry/api';\nimport { validateKey, validateValue } from '../internal/validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nexport class TraceState implements api.TraceState {\n private _internalState: Map = new Map();\n\n constructor(rawTraceState?: string) {\n if (rawTraceState) this._parse(rawTraceState);\n }\n\n set(key: string, value: string): TraceState {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n\n unset(key: string): TraceState {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n\n get(key: string): string | undefined {\n return this._internalState.get(key);\n }\n\n serialize(): string {\n return this._keys()\n .reduce((agg: string[], key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n\n private _parse(rawTraceState: string) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg: Map, part: string) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if (validateKey(key) && validateValue(value)) {\n agg.set(key, value);\n } else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(\n Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS)\n );\n }\n }\n\n private _keys(): string[] {\n return Array.from(this._internalState.keys()).reverse();\n }\n\n private _clone(): TraceState {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { diag, DiagLogLevel } from '@opentelemetry/api';\n\nconst logLevelMap: { [key: string]: DiagLogLevel } = {\n ALL: DiagLogLevel.ALL,\n VERBOSE: DiagLogLevel.VERBOSE,\n DEBUG: DiagLogLevel.DEBUG,\n INFO: DiagLogLevel.INFO,\n WARN: DiagLogLevel.WARN,\n ERROR: DiagLogLevel.ERROR,\n NONE: DiagLogLevel.NONE,\n};\n\n/**\n * Convert a string to a {@link DiagLogLevel}, defaults to {@link DiagLogLevel} if the log level does not exist or undefined if the input is undefined.\n * @param value\n */\nexport function diagLogLevelFromString(\n value: string | undefined\n): DiagLogLevel | undefined {\n if (value == null) {\n // don't fall back to default - no value set has different semantics for ús than an incorrect value (do not set vs. fall back to default)\n return undefined;\n }\n\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n\n if (resolvedLogLevel == null) {\n diag.warn(\n `Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`\n );\n return DiagLogLevel.INFO;\n }\n\n return resolvedLogLevel;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nexport function urlMatches(url: string, urlToMatch: string | RegExp): boolean {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n } else {\n return !!url.match(urlToMatch);\n }\n}\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nexport function isUrlIgnored(\n url: string,\n ignoredUrls?: Array\n): boolean {\n if (!ignoredUrls) {\n return false;\n }\n\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nexport function validateKey(key: string): boolean {\n return VALID_KEY_REGEX.test(key);\n}\n\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nexport function validateValue(value: string): boolean {\n return (\n VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\n\n// Name of the http header used to propagate the baggage\nexport const BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @deprecated Use globalThis directly instead.\n */\nexport const _globalThis = globalThis;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n constructor(message?: string) {\n super(message);\n\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *
      // -> 
      /\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // 
      /

      /../ ->

      /\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (\n          p &&\n          p !== '.' &&\n          p !== '..' &&\n          p !== '**' &&\n          !(this.isWindows && /^[a-z]:$/i.test(p))\n        ) {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // 
       is 1 or more portions\n  //  is 1 or more portions\n  // 

      is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

      /**/../

      /

      / -> {

      /../

      /

      /,

      /**/

      /

      /}\n //

      // -> 
      /\n  // 
      /

      /../ ->

      /\n  // **/**/ -> **/\n  //\n  // **/*/ -> */**/ <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // 
      /**/../

      /

      / -> {

      /../

      /

      /,

      /**/

      /

      /}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n //

      /**/**/ -> 
      /**/\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // 
      // -> 
      /\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // 
      /

      /../ ->

      /\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {
      /*/,
      /

      /} ->

      /*/\n  // {
      /,
      /} -> 
      /\n  // {
      /**/,
      /} -> 
      /**/\n  //\n  // {
      /**/,
      /**/

      /} ->

      /**/\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes,\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false,\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean = false,\n  ) {\n    let fileStartIndex = 0\n    let patternStartIndex = 0\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive =\n        typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi =\n        fileUNC ? 3\n        : fileDrive ? 0\n        : undefined\n      const pdi =\n        patternUNC ? 3\n        : patternDrive ? 0\n        : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [\n          file[fdi],\n          pattern[pdi] as string,\n        ]\n        // start matching at the drive letter index of each\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          patternStartIndex = pdi\n          fileStartIndex = fdi\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // don't need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    if (pattern.includes(GLOBSTAR)) {\n      return this.#matchGlobstar(\n        file,\n        pattern,\n        partial,\n        fileStartIndex,\n        patternStartIndex,\n      )\n    }\n\n    return this.#matchOne(\n      file,\n      pattern,\n      partial,\n      fileStartIndex,\n      patternStartIndex,\n    )\n  }\n\n  #matchGlobstar(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    // split the pattern into head, tail, and middle of ** delimited parts\n    const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n    const lastgs = pattern.lastIndexOf(GLOBSTAR)\n\n    // split the pattern up into globstar-delimited sections\n    // the tail has to be at the end, and the others just have\n    // to be found in order from the head.\n    const [head, body, tail] =\n      partial ?\n        [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1),\n          [],\n        ]\n      : [\n          pattern.slice(patternIndex, firstgs),\n          pattern.slice(firstgs + 1, lastgs),\n          pattern.slice(lastgs + 1),\n        ]\n\n    // check the head, from the current file/pattern index.\n    if (head.length) {\n      const fileHead = file.slice(fileIndex, fileIndex + head.length)\n      if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n        return false\n      }\n      fileIndex += head.length\n      patternIndex += head.length\n    }\n    // now we know the head matches!\n\n    // if the last portion is not empty, it MUST match the end\n    // check the tail\n    let fileTailMatch: number = 0\n    if (tail.length) {\n      // if head + tail > file, then we cannot possibly match\n      if (tail.length + fileIndex > file.length) return false\n\n      // try to match the tail\n      let tailStart = file.length - tail.length\n      if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n        fileTailMatch = tail.length\n      } else {\n        // affordance for stuff like a/**/* matching a/b/\n        // if the last file portion is '', and there's more to the pattern\n        // then try without the '' bit.\n        if (\n          file[file.length - 1] !== '' ||\n          fileIndex + tail.length === file.length\n        ) {\n          return false\n        }\n        tailStart--\n        if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n          return false\n        }\n        fileTailMatch = tail.length + 1\n      }\n    }\n\n    // now we know the tail matches!\n\n    // the middle is zero or more portions wrapped in **, possibly\n    // containing more ** sections.\n    // so a/**/b/**/c/**/d has become **/b/**/c/**\n    // if it's empty, it means a/**/b, just verify we have no bad dots\n    // if there's no tail, so it ends on /**, then we must have *something*\n    // after the head, or it's not a matc\n    if (!body.length) {\n      let sawSome = !!fileTailMatch\n      for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n        const f = String(file[i])\n        sawSome = true\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      // in partial mode, we just need to get past all file parts\n      return partial || sawSome\n    }\n\n    // now we know that there's one or more body sections, which can\n    // be matched anywhere from the 0 index (because the head was pruned)\n    // through to the length-fileTailMatch index.\n    // split the body up into sections, and note the minimum index it can\n    // be found at (start with the length of all previous segments)\n    // [section, before, after]\n    const bodySegments: [ParseReturn[], number][] = [[[], 0]]\n    let currentBody: [ParseReturn[], number] = bodySegments[0]\n    let nonGsParts = 0\n    const nonGsPartsSums: number[] = [0]\n    for (const b of body) {\n      if (b === GLOBSTAR) {\n        nonGsPartsSums.push(nonGsParts)\n        currentBody = [[], 0]\n        bodySegments.push(currentBody)\n      } else {\n        currentBody[0].push(b)\n        nonGsParts++\n      }\n    }\n    let i = bodySegments.length - 1\n    const fileLength = file.length - fileTailMatch\n    for (const b of bodySegments) {\n      b[1] = fileLength - ((nonGsPartsSums[i--] as number) + b[0].length)\n    }\n\n    return !!this.#matchGlobStarBodySections(\n      file,\n      bodySegments,\n      fileIndex,\n      0,\n      partial,\n      0,\n      !!fileTailMatch,\n    )\n  }\n\n  // return false for \"nope, not matching\"\n  // return null for \"not matching, cannot keep trying\"\n  #matchGlobStarBodySections(\n    file: string[],\n    // pattern section, last possible position for it\n    bodySegments: [ParseReturn[], number][],\n    fileIndex: number,\n    bodyIndex: number,\n    partial: boolean,\n    globStarDepth: number,\n    sawTail: boolean,\n  ): boolean | null {\n    // take the first body segment, and walk from fileIndex to its \"after\"\n    // value at the end\n    // If it doesn't match at that position, we increment, until we hit\n    // that final possible position, and give up.\n    // If it does match, then advance and try to rest.\n    // If any of them fail we keep walking forward.\n    // this is still a bit recursively painful, but it's more constrained\n    // than previous implementations, because we never test something that\n    // can't possibly be a valid matching condition.\n    const bs = bodySegments[bodyIndex]\n    if (!bs) {\n      // just make sure that there's no bad dots\n      for (let i = fileIndex; i < file.length; i++) {\n        sawTail = true\n        const f = file[i]\n        if (\n          f === '.' ||\n          f === '..' ||\n          (!this.options.dot && f.startsWith('.'))\n        ) {\n          return false\n        }\n      }\n      return sawTail\n    }\n\n    // have a non-globstar body section to test\n    const [body, after] = bs\n    while (fileIndex <= after) {\n      const m = this.#matchOne(\n        file.slice(0, fileIndex + body.length),\n        body,\n        partial,\n        fileIndex,\n        0,\n      )\n      // if limit exceeded, no match. intentional false negative,\n      // acceptable break in correctness for security.\n      if (m && globStarDepth < this.maxGlobstarRecursion) {\n        // match! see if the rest match. if so, we're done!\n        const sub = this.#matchGlobStarBodySections(\n          file,\n          bodySegments,\n          fileIndex + body.length,\n          bodyIndex + 1,\n          partial,\n          globStarDepth + 1,\n          sawTail,\n        )\n        if (sub !== false) {\n          return sub\n        }\n      }\n      const f = file[fileIndex]\n      if (\n        f === '.' ||\n        f === '..' ||\n        (!this.options.dot && f.startsWith('.'))\n      ) {\n        return false\n      }\n\n      fileIndex++\n    }\n    // walked off. no point continuing\n    return partial || null\n  }\n\n  #matchOne(\n    file: string[],\n    pattern: ParseReturn[],\n    partial: boolean,\n    fileIndex: number,\n    patternIndex: number,\n  ) {\n    let fi: number\n    let pi: number\n    let pl: number\n    let fl: number\n    for (\n      fi = fileIndex,\n        pi = patternIndex,\n        fl = file.length,\n        pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      let p = pattern[pi]\n      let f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false || p === GLOBSTAR) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            starDotExtTestNocaseDot\n          : starDotExtTestNocase\n        : options.dot ? starDotExtTestDot\n        : starDotExtTest)(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase ?\n          options.dot ?\n            qmarksTestNocaseDot\n          : qmarksTestNocase\n        : options.dot ? qmarksTestDot\n        : qmarksTest)(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar =\n      options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return (\n            typeof p === 'string' ? regExpEscape(p)\n            : p === GLOBSTAR ? GLOBSTAR\n            : p._src\n          )\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        const filtered = pp.filter(p => p !== GLOBSTAR)\n\n        // For partial matches, we need to make the pattern match\n        // any prefix of the full path. We do this by generating\n        // alternative patterns that match progressively longer prefixes.\n        if (this.partial && filtered.length >= 1) {\n          const prefixes: string[] = []\n          for (let i = 1; i <= filtered.length; i++) {\n            prefixes.push(filtered.slice(0, i).join('/'))\n          }\n          return '(?:' + prefixes.join('|') + ')'\n        }\n\n        return filtered.join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // In partial mode, '/' should always match as it's a valid prefix for any pattern\n    if (this.partial) {\n      re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$'\n    }\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (const pattern of set) {\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n","'use strict'\nconst dc = require('node:diagnostics_channel')\nconst { context, trace, SpanStatusCode, propagation, diag } = require('@opentelemetry/api')\nconst { getRPCMetadata, RPCType } = require('@opentelemetry/core')\nconst {\n  ATTR_HTTP_ROUTE,\n  ATTR_HTTP_RESPONSE_STATUS_CODE,\n  ATTR_HTTP_REQUEST_METHOD,\n  ATTR_URL_PATH\n} = require('@opentelemetry/semantic-conventions')\nconst { InstrumentationBase } = require('@opentelemetry/instrumentation')\n\nconst {\n  version: PACKAGE_VERSION,\n  name: PACKAGE_NAME\n} = require('./package.json')\n\n// Constants\nconst SUPPORTED_VERSIONS = '>=4.0.0 <6'\nconst FASTIFY_HOOKS = [\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preHandler',\n  'preSerialization',\n  'onSend',\n  'onResponse',\n  'onError'\n]\nconst ATTRIBUTE_NAMES = {\n  HOOK_NAME: 'hook.name',\n  FASTIFY_TYPE: 'fastify.type',\n  HOOK_CALLBACK_NAME: 'hook.callback.name',\n  ROOT: 'fastify.root'\n}\nconst HOOK_TYPES = {\n  ROUTE: 'route-hook',\n  INSTANCE: 'hook',\n  HANDLER: 'request-handler'\n}\nconst ANONYMOUS_FUNCTION_NAME = 'anonymous'\n\n// Symbols\nconst kInstrumentation = Symbol('fastify otel instance')\nconst kRequestSpan = Symbol('fastify otel request spans')\nconst kRequestContext = Symbol('fastify otel request context')\nconst kAddHookOriginal = Symbol('fastify otel addhook original')\nconst kSetNotFoundOriginal = Symbol('fastify otel setnotfound original')\nconst kIgnorePaths = Symbol('fastify otel ignore path')\nconst kRecordExceptions = Symbol('fastify otel record exceptions')\n\nclass FastifyOtelInstrumentation extends InstrumentationBase {\n  logger = null\n  _requestHook = null\n  _lifecycleHook = null\n\n  constructor (config) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config)\n    this.logger = diag.createComponentLogger({ namespace: PACKAGE_NAME })\n    this[kIgnorePaths] = null\n    this[kRecordExceptions] = true\n\n    if (config?.recordExceptions != null) {\n      if (typeof config.recordExceptions !== 'boolean') {\n        throw new TypeError('recordExceptions must be a boolean')\n      }\n\n      this[kRecordExceptions] = config.recordExceptions\n    }\n    if (typeof config?.requestHook === 'function') {\n      this._requestHook = config.requestHook\n    }\n    if (typeof config?.lifecycleHook === 'function') {\n      this._lifecycleHook = config.lifecycleHook\n    }\n\n    if (config?.ignorePaths != null || process.env.OTEL_FASTIFY_IGNORE_PATHS != null) {\n      const ignorePaths = config?.ignorePaths ?? process.env.OTEL_FASTIFY_IGNORE_PATHS\n\n      if ((typeof ignorePaths !== 'string' || ignorePaths.length === 0) && typeof ignorePaths !== 'function') {\n        throw new TypeError(\n          'ignorePaths must be a string or a function'\n        )\n      }\n\n      let globMatcher = null\n\n      this[kIgnorePaths] = (routeOptions) => {\n        if (typeof ignorePaths === 'function') {\n          return ignorePaths(routeOptions)\n        } else {\n          // Using minimatch to match the path until path.matchesGlob is out of experimental\n          // path.matchesGlob uses minimatch internally\n          if (globMatcher == null) {\n            globMatcher = require('minimatch').minimatch\n          }\n\n          return globMatcher(routeOptions.url, ignorePaths)\n        }\n      }\n    }\n  }\n\n  enable () {\n    if (this._handleInitialization === undefined && this.getConfig().registerOnInitialization) {\n      this._handleInitialization = (message) => {\n        // Cannot use `fastify.register(plugin)` because it is lazily executed and\n        // thus requires user code to await fastify instance first.\n        this.plugin()(message.fastify, undefined, () => {})\n\n        // Add an empty plugin to keep `app.hasPlugin('@fastify/otel')` invariant\n        const emptyPlugin = (_, __, done) => {\n          done()\n        }\n        emptyPlugin[Symbol.for('skip-override')] = true\n        emptyPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n        message.fastify.register(emptyPlugin)\n      }\n      dc.subscribe('fastify.initialization', this._handleInitialization)\n    }\n    return super.enable()\n  }\n\n  disable () {\n    if (this._handleInitialization) {\n      dc.unsubscribe('fastify.initialization', this._handleInitialization)\n      this._handleInitialization = undefined\n    }\n    return super.disable()\n  }\n\n  // We do not do patching in this instrumentation\n  init () {\n    return []\n  }\n\n  plugin () {\n    const instrumentation = this\n\n    FastifyInstrumentationPlugin[Symbol.for('skip-override')] = true\n    FastifyInstrumentationPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n    FastifyInstrumentationPlugin[Symbol.for('plugin-meta')] = {\n      fastify: SUPPORTED_VERSIONS,\n      name: '@fastify/otel',\n    }\n\n    return FastifyInstrumentationPlugin\n\n    function FastifyInstrumentationPlugin (instance, opts, done) {\n      instance.decorate(kInstrumentation, instrumentation)\n      // addHook and notfoundHandler are essentially inherited from the prototype\n      // what is important is to bound it to the right instance\n      instance.decorate(kAddHookOriginal, instance.addHook)\n      instance.decorate(kSetNotFoundOriginal, instance.setNotFoundHandler)\n      instance.decorateRequest('opentelemetry', function openetelemetry () {\n        const ctx = this[kRequestContext]\n        const span = this[kRequestSpan]\n\n        return {\n          enabled: this.routeOptions.config?.otel !== false,\n          span,\n          tracer: instrumentation.tracer,\n          context: ctx,\n          inject: (carrier, setter) => {\n            return propagation.inject(ctx, carrier, setter)\n          },\n          extract: (carrier, getter) => {\n            return propagation.extract(ctx, carrier, getter)\n          }\n        }\n      })\n      instance.decorateRequest(kRequestSpan, null)\n      instance.decorateRequest(kRequestContext, null)\n\n      instance.addHook('onRoute', function otelWireRoute (routeOptions) {\n        if (instrumentation[kIgnorePaths]?.(routeOptions) === true) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it matches the ignore path`\n          )\n          return\n        }\n\n        if (routeOptions.config?.otel === false) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it is disabled`\n          )\n\n          return\n        }\n\n        for (const hook of FASTIFY_HOOKS) {\n          if (routeOptions[hook] != null) {\n            const handlerLike = routeOptions[hook]\n\n            if (typeof handlerLike === 'function') {\n              routeOptions[hook] = handlerWrapper(handlerLike, hook, {\n                [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                [ATTR_HTTP_ROUTE]: routeOptions.url,\n                [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                  handlerLike.name?.length > 0\n                    ? handlerLike.name\n                    : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n              })\n            } else if (Array.isArray(handlerLike)) {\n              const wrappedHandlers = []\n\n              for (const handler of handlerLike) {\n                wrappedHandlers.push(\n                  handlerWrapper(handler, hook, {\n                    [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                    [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                    [ATTR_HTTP_ROUTE]: routeOptions.url,\n                    [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                      handler.name?.length > 0\n                        ? handler.name\n                        : ANONYMOUS_FUNCTION_NAME\n                  })\n                )\n              }\n\n              routeOptions[hook] = wrappedHandlers\n            }\n          }\n        }\n\n        // We always want to add the onSend hook to the route to be executed last\n        if (routeOptions.onSend != null) {\n          routeOptions.onSend = Array.isArray(routeOptions.onSend)\n            ? [...routeOptions.onSend, finalizeResponseSpanHook]\n            : [routeOptions.onSend, finalizeResponseSpanHook]\n        } else {\n          routeOptions.onSend = finalizeResponseSpanHook\n        }\n\n        // We always want to add the onError hook to the route to be executed last\n        if (routeOptions.onError != null) {\n          routeOptions.onError = Array.isArray(routeOptions.onError)\n            ? [...routeOptions.onError, recordErrorInSpanHook]\n            : [routeOptions.onError, recordErrorInSpanHook]\n        } else {\n          routeOptions.onError = recordErrorInSpanHook\n        }\n\n        routeOptions.handler = handlerWrapper(routeOptions.handler, 'handler', {\n          [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route-handler`,\n          [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.HANDLER,\n          [ATTR_HTTP_ROUTE]: routeOptions.url,\n          [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n            routeOptions.handler.name.length > 0\n              ? routeOptions.handler.name\n              : ANONYMOUS_FUNCTION_NAME\n        })\n      })\n\n      instance.addHook('onRequest', function startRequestSpanHook (request, _reply, hookDone) {\n        if (\n          this[kInstrumentation].isEnabled() === false ||\n          request.routeOptions.config?.otel === false\n        ) {\n          return hookDone()\n        }\n\n        if (this[kInstrumentation][kIgnorePaths]?.({\n          url: request.url,\n          method: request.method,\n        }) === true) {\n          this[kInstrumentation].logger.debug(\n            `Ignoring request ${request.method} ${request.url} because it matches the ignore path`\n          )\n          return hookDone()\n        }\n\n        let ctx = context.active()\n\n        if (trace.getSpan(ctx) == null) {\n          ctx = propagation.extract(ctx, request.headers)\n        }\n\n        const rpcMetadata = getRPCMetadata(ctx)\n\n        if (\n          request.routeOptions.url != null &&\n          rpcMetadata?.type === RPCType.HTTP\n        ) {\n          rpcMetadata.route = request.routeOptions.url\n        }\n\n        const attributes = {\n          [ATTRIBUTE_NAMES.ROOT]: '@fastify/otel',\n          [ATTR_HTTP_REQUEST_METHOD]: request.method,\n          [ATTR_URL_PATH]: request.url\n        }\n\n        if (request.routeOptions.url != null) {\n          attributes[ATTR_HTTP_ROUTE] = request.routeOptions.url\n        }\n\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = this[kInstrumentation].tracer.startSpan('request', {\n          attributes\n        }, ctx)\n\n        try {\n          this[kInstrumentation]._requestHook?.(span, request)\n        } catch (err) {\n          this[kInstrumentation].logger.error({ err }, 'requestHook threw')\n        }\n\n        request[kRequestContext] = trace.setSpan(ctx, span)\n        request[kRequestSpan] = span\n\n        context.with(request[kRequestContext], () => {\n          hookDone()\n        })\n      })\n\n      // onResponse is the last hook to be executed, only added for 404 handlers\n      instance.addHook('onResponse', function finalizeNotFoundSpanHook (request, reply, hookDone) {\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone()\n      })\n\n      instance.addHook = addHookPatched\n      instance.setNotFoundHandler = setNotFoundHandlerPatched\n\n      done()\n\n      function finalizeResponseSpanHook (request, reply, payload, hookDone) {\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          if (reply.statusCode >= 500) {\n            span.setStatus({ code: SpanStatusCode.ERROR })\n          }\n\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone(null, payload)\n      }\n\n      function recordErrorInSpanHook (request, reply, error, hookDone) {\n        /** @type {Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: error.message\n          })\n          if (instrumentation[kRecordExceptions] !== false) {\n            span.recordException(error)\n          }\n        }\n\n        hookDone()\n      }\n\n      function addHookPatched (name, hook) {\n        const addHookOriginal = this[kAddHookOriginal]\n\n        if (FASTIFY_HOOKS.includes(name)) {\n          return addHookOriginal.call(\n            this,\n            name,\n            handlerWrapper(hook, name, {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - ${name}`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hook.name?.length > 0\n                  ? hook.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          )\n        } else {\n          return addHookOriginal.call(this, name, hook)\n        }\n      }\n\n      function setNotFoundHandlerPatched (hooks, handler) {\n        const setNotFoundHandlerOriginal = this[kSetNotFoundOriginal]\n        if (typeof hooks === 'function') {\n          handler = handlerWrapper(hooks, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              hooks.name?.length > 0\n                ? hooks.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, handler)\n        } else {\n          if (hooks.preValidation != null) {\n            hooks.preValidation = handlerWrapper(hooks.preValidation, 'notFoundHandler - preValidation', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preValidation`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preValidation.name?.length > 0\n                  ? hooks.preValidation.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          if (hooks.preHandler != null) {\n            hooks.preHandler = handlerWrapper(hooks.preHandler, 'notFoundHandler - preHandler', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preHandler`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preHandler.name?.length > 0\n                  ? hooks.preHandler.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          handler = handlerWrapper(handler, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              handler.name?.length > 0\n                ? handler.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, hooks, handler)\n        }\n      }\n\n      // regular handlers are (request, reply), @fastify/websocket handlers are (socket, request)\n      function getRequestFromArgs (args) {\n        for (const arg of args) {\n          if (arg?.routeOptions && arg.url && arg.method) {\n            return arg\n          }\n        }\n        return null\n      }\n\n      function handlerWrapper (handler, hookName, spanAttributes = {}) {\n        return function handlerWrapped (...args) {\n          /** @type {FastifyOtelInstrumentation} */\n          const instrumentation = this[kInstrumentation]\n\n          const request = getRequestFromArgs(args)\n          if (request === null) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation because ${hookName} was called without a Fastify request argument`\n            )\n            return handler.call(this, ...args)\n          }\n\n          if (instrumentation.isEnabled() === false || request.routeOptions.config?.otel === false) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it is disabled`\n            )\n            return handler.call(this, ...args)\n          }\n\n          if (instrumentation[kIgnorePaths]?.({\n            url: request.url,\n            method: request.method,\n          }) === true) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it matches the ignore path`\n            )\n            return handler.call(this, ...args)\n          }\n\n          /* c8 ignore next */\n          const ctx = request[kRequestContext] ?? context.active()\n          const handlerName = handler.name?.length > 0\n            ? handler.name\n            : this.pluginName /* c8 ignore next */ ?? ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n\n          const span = instrumentation.tracer.startSpan(\n            `${hookName} - ${handlerName}`,\n            {\n              attributes: spanAttributes\n            },\n            ctx\n          )\n\n          if (instrumentation._lifecycleHook != null) {\n            try {\n              instrumentation._lifecycleHook(span, {\n                hookName,\n                request,\n                handler: handlerName\n              })\n            } catch (err) {\n              instrumentation.logger.error({ err }, 'Execution of lifecycleHook failed')\n            }\n          }\n\n          return context.with(\n            trace.setSpan(ctx, span),\n            function () {\n              try {\n                const res = handler.call(this, ...args)\n\n                if (typeof res?.then === 'function') {\n                  return res.then(\n                    result => {\n                      span.end()\n                      return result\n                    },\n                    error => {\n                      span.setStatus({\n                        code: SpanStatusCode.ERROR,\n                        message: error.message\n                      })\n                      if (instrumentation[kRecordExceptions] !== false) {\n                        span.recordException(error)\n                      }\n                      span.end()\n                      return Promise.reject(error)\n                    }\n                  )\n                }\n\n                span.end()\n                return res\n              } catch (error) {\n                span.setStatus({\n                  code: SpanStatusCode.ERROR,\n                  message: error.message\n                })\n                if (instrumentation[kRecordExceptions] !== false) {\n                  span.recordException(error)\n                }\n                span.end()\n                throw error\n              }\n            },\n            this\n          )\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = FastifyOtelInstrumentation\nmodule.exports.FastifyOtelInstrumentation = FastifyOtelInstrumentation\n","// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts\n//\n/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AttributeNames {\n  FASTIFY_NAME = 'fastify.name',\n  FASTIFY_TYPE = 'fastify.type',\n  HOOK_NAME = 'hook.name',\n  PLUGIN_NAME = 'plugin.name',\n}\n\nexport enum FastifyTypes {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request_handler',\n}\n\nexport enum FastifyNames {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request handler',\n}\n","// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts\n/*\n * Copyright The OpenTelemetry Authors\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\nexport const spanRequestSymbol = Symbol('opentelemetry.instrumentation.fastify.request_active_span');\n\n// The instrumentation creates a span for invocations of lifecycle hook handlers\n// that take `(request, reply, ...[, done])` arguments. Currently this is all\n// lifecycle hooks except `onRequestAbort`.\n// https://fastify.dev/docs/latest/Reference/Hooks\nexport const hooksNamesToWrap = new Set([\n  'onTimeout',\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preSerialization',\n  'preHandler',\n  'onSend',\n  'onResponse',\n  'onError',\n]);\n","// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright The OpenTelemetry Authors\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\nimport { type Attributes, type Span, SpanStatusCode, type Tracer } from '@opentelemetry/api';\nimport { spanRequestSymbol } from './constants';\nimport type { PluginFastifyReply } from './internal-types';\n\n/**\n * Starts Span\n * @param reply - reply function\n * @param tracer - tracer\n * @param spanName - span name\n * @param spanAttributes - span attributes\n */\nexport function startSpan(\n  reply: PluginFastifyReply,\n  tracer: Tracer,\n  spanName: string,\n  spanAttributes: Attributes = {},\n) {\n  const span = tracer.startSpan(spanName, { attributes: spanAttributes });\n\n  const spans: Span[] = reply[spanRequestSymbol] || [];\n  spans.push(span);\n\n  Object.defineProperty(reply, spanRequestSymbol, {\n    enumerable: false,\n    configurable: true,\n    value: spans,\n  });\n\n  return span;\n}\n\n/**\n * Ends span\n * @param reply - reply function\n * @param err - error\n */\nexport function endSpan(reply: PluginFastifyReply, err?: any) {\n  const spans = reply[spanRequestSymbol] || [];\n  // there is no active span, or it has already ended\n  if (!spans.length) {\n    return;\n  }\n  // biome-ignore lint/complexity/noForEach: \n  spans.forEach((span: Span) => {\n    if (err) {\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n      span.recordException(err);\n    }\n    span.end();\n  });\n  delete reply[spanRequestSymbol];\n}\n\n// @TODO after approve add this to instrumentation package and replace usage\n// when it will be released\n\n/**\n * This function handles the missing case from instrumentation package when\n * execute can either return a promise or void. And using async is not an\n * option as it is producing unwanted side effects.\n * @param execute - function to be executed\n * @param onFinish - function called when function executed\n * @param preventThrowingError - prevent to throw error when execute\n * function fails\n */\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => Promise,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): Promise;\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => T,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): T;\nexport function safeExecuteInTheMiddleMaybePromise(\n  execute: () => T | Promise,\n  onFinish: (e: unknown, result?: T) => void,\n  preventThrowingError?: boolean,\n): T | Promise | undefined {\n  let error: unknown;\n  let result: T | Promise | undefined = undefined;\n  try {\n    result = execute();\n\n    if (isPromise(result)) {\n      result.then(\n        res => onFinish(undefined, res),\n        err => onFinish(err),\n      );\n    }\n  } catch (e) {\n    error = e;\n  } finally {\n    if (!isPromise(result)) {\n      onFinish(error, result);\n      if (error && !preventThrowingError) {\n        // eslint-disable-next-line no-unsafe-finally\n        throw error;\n      }\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result;\n  }\n}\n\nfunction isPromise(val: T | Promise): val is Promise {\n  return (\n    (typeof val === 'object' && val && typeof Object.getOwnPropertyDescriptor(val, 'then')?.value === 'function') ||\n    false\n  );\n}\n","// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/*\n * Copyright The OpenTelemetry Authors\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\nimport { type Attributes, context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { Span } from '@sentry/core';\nimport {\n  getClient,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport type {\n  FastifyErrorCodes,\n  FastifyInstance,\n  FastifyReply,\n  FastifyRequest,\n  HandlerOriginal,\n  HookHandlerDoneFunction,\n} from '../types';\nimport { AttributeNames, FastifyNames, FastifyTypes } from './enums/AttributeNames';\nimport type { PluginFastifyReply } from './internal-types';\nimport type { FastifyInstrumentationConfig } from './types';\nimport { endSpan, safeExecuteInTheMiddleMaybePromise, startSpan } from './utils';\n/** @knipignore */\n\nconst PACKAGE_VERSION = '0.1.0';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-fastify-v3';\nconst ANONYMOUS_NAME = 'anonymous';\n\n// The instrumentation creates a span for invocations of lifecycle hook handlers\n// that take `(request, reply, ...[, done])` arguments. Currently this is all\n// lifecycle hooks except `onRequestAbort`.\n// https://fastify.dev/docs/latest/Reference/Hooks\nconst hooksNamesToWrap = new Set([\n  'onTimeout',\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preSerialization',\n  'preHandler',\n  'onSend',\n  'onResponse',\n  'onError',\n]);\n\n/**\n * Fastify instrumentation for OpenTelemetry\n */\nexport class FastifyInstrumentationV3 extends InstrumentationBase {\n  public constructor(config: FastifyInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  public init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition('fastify', ['>=3.0.0 <4'], moduleExports => {\n        return this._patchConstructor(moduleExports);\n      }),\n    ];\n  }\n\n  private _hookOnRequest() {\n    const instrumentation = this;\n\n    return function onRequest(request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction) {\n      if (!instrumentation.isEnabled()) {\n        return done();\n      }\n      instrumentation._wrap(reply, 'send', instrumentation._patchSend());\n\n      const anyRequest = request as any;\n\n      const rpcMetadata = getRPCMetadata(context.active());\n      const routeName = anyRequest.routeOptions\n        ? anyRequest.routeOptions.url // since fastify@4.10.0\n        : request.routerPath;\n      if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n        rpcMetadata.route = routeName;\n      }\n\n      const method = request.method || 'GET';\n\n      getIsolationScope().setTransactionName(`${method} ${routeName}`);\n      done();\n    };\n  }\n\n  private _wrapHandler(\n    pluginName: string,\n    hookName: string,\n    original: HandlerOriginal,\n    syncFunctionWithDone: boolean,\n  ): () => Promise {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify route.handler function');\n\n    return function (this: any, ...args: unknown[]): Promise {\n      if (!instrumentation.isEnabled()) {\n        return original.apply(this, args);\n      }\n\n      const name = original.name || pluginName || ANONYMOUS_NAME;\n      const spanName = `${FastifyNames.MIDDLEWARE} - ${name}`;\n\n      const reply = args[1] as PluginFastifyReply;\n\n      const span = startSpan(reply, instrumentation.tracer, spanName, {\n        [AttributeNames.FASTIFY_TYPE]: FastifyTypes.MIDDLEWARE,\n        [AttributeNames.PLUGIN_NAME]: pluginName,\n        [AttributeNames.HOOK_NAME]: hookName,\n      });\n\n      const origDone = syncFunctionWithDone && (args[args.length - 1] as HookHandlerDoneFunction);\n      if (origDone) {\n        args[args.length - 1] = function (...doneArgs: Parameters) {\n          endSpan(reply);\n          origDone.apply(this, doneArgs);\n        };\n      }\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        return safeExecuteInTheMiddleMaybePromise(\n          () => {\n            return original.apply(this, args);\n          },\n          err => {\n            if (err instanceof Error) {\n              span.setStatus({\n                code: SpanStatusCode.ERROR,\n                message: err.message,\n              });\n              span.recordException(err);\n            }\n            // async hooks should end the span as soon as the promise is resolved\n            if (!syncFunctionWithDone) {\n              endSpan(reply);\n            }\n          },\n        );\n      });\n    };\n  }\n\n  private _wrapAddHook(): (original: FastifyInstance['addHook']) => () => FastifyInstance {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify server.addHook function');\n\n    // biome-ignore lint/complexity/useArrowFunction: \n    return function (original: FastifyInstance['addHook']): () => FastifyInstance {\n      return function wrappedAddHook(this: any, ...args: any) {\n        const name = args[0] as string;\n        const handler = args[1] as HandlerOriginal;\n        const pluginName = this.pluginName;\n        if (!hooksNamesToWrap.has(name)) {\n          return original.apply(this, args);\n        }\n\n        const syncFunctionWithDone =\n          typeof args[args.length - 1] === 'function' && handler.constructor.name !== 'AsyncFunction';\n\n        return original.apply(this, [\n          name,\n          instrumentation._wrapHandler(pluginName, name, handler, syncFunctionWithDone),\n        ] as never);\n      };\n    };\n  }\n\n  private _patchConstructor(moduleExports: {\n    fastify: () => FastifyInstance;\n    errorCodes: FastifyErrorCodes | undefined;\n  }): () => FastifyInstance {\n    const instrumentation = this;\n\n    function fastify(this: FastifyInstance, ...args: any) {\n      const app: FastifyInstance = moduleExports.fastify.apply(this, args);\n      app.addHook('onRequest', instrumentation._hookOnRequest());\n      app.addHook('preHandler', instrumentation._hookPreHandler());\n\n      instrumentClient();\n\n      instrumentation._wrap(app, 'addHook', instrumentation._wrapAddHook());\n\n      return app;\n    }\n\n    if (moduleExports.errorCodes !== undefined) {\n      fastify.errorCodes = moduleExports.errorCodes;\n    }\n    fastify.fastify = fastify;\n    fastify.default = fastify;\n    return fastify;\n  }\n\n  private _patchSend() {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify reply.send function');\n\n    return function patchSend(original: () => FastifyReply): () => FastifyReply {\n      return function send(this: FastifyReply, ...args: any) {\n        const maybeError: any = args[0];\n\n        if (!instrumentation.isEnabled()) {\n          return original.apply(this, args);\n        }\n\n        return safeExecuteInTheMiddle(\n          () => {\n            return original.apply(this, args);\n          },\n          err => {\n            if (!err && maybeError instanceof Error) {\n              // eslint-disable-next-line no-param-reassign\n              err = maybeError;\n            }\n            endSpan(this, err);\n          },\n        );\n      };\n    };\n  }\n\n  private _hookPreHandler() {\n    const instrumentation = this;\n    this._diag.debug('Patching fastify preHandler function');\n\n    return function preHandler(this: any, request: FastifyRequest, reply: FastifyReply, done: HookHandlerDoneFunction) {\n      if (!instrumentation.isEnabled()) {\n        return done();\n      }\n      const anyRequest = request as any;\n\n      const handler = anyRequest.routeOptions?.handler || anyRequest.context?.handler;\n      const handlerName = handler?.name.startsWith('bound ') ? handler.name.substring(6) : handler?.name;\n      const spanName = `${FastifyNames.REQUEST_HANDLER} - ${handlerName || this.pluginName || ANONYMOUS_NAME}`;\n\n      const spanAttributes: Attributes = {\n        [AttributeNames.PLUGIN_NAME]: this.pluginName,\n        [AttributeNames.FASTIFY_TYPE]: FastifyTypes.REQUEST_HANDLER,\n        // eslint-disable-next-line deprecation/deprecation\n        [SEMATTRS_HTTP_ROUTE]: anyRequest.routeOptions\n          ? anyRequest.routeOptions.url // since fastify@4.10.0\n          : request.routerPath,\n      };\n      if (handlerName) {\n        spanAttributes[AttributeNames.FASTIFY_NAME] = handlerName;\n      }\n      const span = startSpan(reply, instrumentation.tracer, spanName, spanAttributes);\n\n      addFastifyV3SpanAttributes(span);\n\n      const { requestHook } = instrumentation.getConfig();\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () => requestHook(span, { request }),\n          e => {\n            if (e) {\n              instrumentation._diag.error('request hook failed', e);\n            }\n          },\n          true,\n        );\n      }\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        done();\n      });\n    };\n  }\n}\n\nfunction instrumentClient(): void {\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', (span: Span) => {\n      addFastifyV3SpanAttributes(span);\n    });\n  }\n}\n\nfunction addFastifyV3SpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: middleware, request_handler\n  const type = attributes['fastify.type'];\n\n  // If this is already set, or we have no fastify span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.fastify`,\n  });\n\n  // Also update the name, we don't need to \"middleware - \" prefix\n  const name = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n  if (typeof name === 'string') {\n    // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n    // This is a bit of a hack, and not always working for all spans\n    // But it's the best we can do without a proper API\n    const updatedName = name.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n    span.updateName(updatedName);\n  }\n}\n","import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport type { Instrumentation, InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getClient,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport type { FastifyInstance, FastifyMinimal, FastifyReply, FastifyRequest } from './types';\nimport { FastifyInstrumentationV3 } from './v3/instrumentation';\n\n/**\n * Options for the Fastify integration.\n *\n * `shouldHandleError` - Callback method deciding whether error should be captured and sent to Sentry\n * This is used on Fastify v5 where Sentry handles errors in the diagnostics channel.\n * Fastify v3 and v4 use `setupFastifyErrorHandler` instead.\n *\n * @example\n *\n * ```javascript\n * Sentry.init({\n *   integrations: [\n *     Sentry.fastifyIntegration({\n *       shouldHandleError(_error, _request, reply) {\n *         return reply.statusCode >= 500;\n *       },\n *     });\n *   },\n * });\n * ```\n *\n */\ninterface FastifyIntegrationOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   * This is used on Fastify v5 where Sentry handles errors in the diagnostics channel.\n   * Fastify v3 and v4 use `setupFastifyErrorHandler` instead.\n   *\n   * @param error Captured Fastify error\n   * @param request Fastify request (or any object containing at least method, routeOptions.url, and routerPath)\n   * @param reply Fastify reply (or any object containing at least statusCode)\n   */\n  shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n}\n\ninterface FastifyHandlerOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   *\n   * @param error Captured Fastify error\n   * @param request Fastify request (or any object containing at least method, routeOptions.url, and routerPath)\n   * @param reply Fastify reply (or any object containing at least statusCode)\n   *\n   * @example\n   *\n   *\n   * ```javascript\n   * setupFastifyErrorHandler(app, {\n   *   shouldHandleError(_error, _request, reply) {\n   *     return reply.statusCode >= 400;\n   *   },\n   * });\n   * ```\n   *\n   *\n   * If using TypeScript, you can cast the request and reply to get full type safety.\n   *\n   * ```typescript\n   * import type { FastifyRequest, FastifyReply } from 'fastify';\n   *\n   * setupFastifyErrorHandler(app, {\n   *   shouldHandleError(error, minimalRequest, minimalReply) {\n   *     const request = minimalRequest as FastifyRequest;\n   *     const reply = minimalReply as FastifyReply;\n   *     return reply.statusCode >= 500;\n   *   },\n   * });\n   * ```\n   */\n  shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n}\n\nconst INTEGRATION_NAME = 'Fastify';\n\nexport const instrumentFastifyV3 = generateInstrumentOnce(\n  `${INTEGRATION_NAME}.v3`,\n  () => new FastifyInstrumentationV3(),\n);\n\nfunction getFastifyIntegration(): ReturnType | undefined {\n  const client = getClient();\n  if (!client) {\n    return undefined;\n  } else {\n    return client.getIntegrationByName(INTEGRATION_NAME);\n  }\n}\n\nfunction handleFastifyError(\n  this: {\n    diagnosticsChannelExists?: boolean;\n  },\n  error: Error,\n  request: FastifyRequest & { opentelemetry?: () => { span?: Span } },\n  reply: FastifyReply,\n  handlerOrigin: 'diagnostics-channel' | 'onError-hook',\n): void {\n  const shouldHandleError = getFastifyIntegration()?.getShouldHandleError() || defaultShouldHandleError;\n  // Diagnostics channel runs before the onError hook, so we can use it to check if the handler was already registered\n  if (handlerOrigin === 'diagnostics-channel') {\n    this.diagnosticsChannelExists = true;\n  }\n\n  if (this.diagnosticsChannelExists && handlerOrigin === 'onError-hook') {\n    DEBUG_BUILD &&\n      debug.warn(\n        'Fastify error handler was already registered via diagnostics channel.',\n        'You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.',\n      );\n\n    // If the diagnostics channel already exists, we don't need to handle the error again\n    return;\n  }\n\n  if (shouldHandleError(error, request, reply)) {\n    captureException(error, { mechanism: { handled: false, type: 'auto.function.fastify' } });\n  }\n}\n\nexport const instrumentFastify = generateInstrumentOnce(`${INTEGRATION_NAME}.v5`, () => {\n  const fastifyOtelInstrumentationInstance = new FastifyOtelInstrumentation();\n  const plugin = fastifyOtelInstrumentationInstance.plugin();\n\n  // This message handler works for Fastify versions 3, 4 and 5\n  diagnosticsChannel.subscribe('fastify.initialization', message => {\n    const fastifyInstance = (message as { fastify?: FastifyInstance }).fastify;\n\n    fastifyInstance?.register(plugin).after(err => {\n      if (err) {\n        DEBUG_BUILD && debug.error('Failed to setup Fastify instrumentation', err);\n      } else {\n        instrumentClient();\n\n        if (fastifyInstance) {\n          instrumentOnRequest(fastifyInstance);\n        }\n      }\n    });\n  });\n\n  // This diagnostics channel only works on Fastify version 5\n  // For versions 3 and 4, we use `setupFastifyErrorHandler` instead\n  diagnosticsChannel.subscribe('tracing:fastify.request.handler:error', message => {\n    const { error, request, reply } = message as {\n      error: Error;\n      request: FastifyRequest & { opentelemetry?: () => { span?: Span } };\n      reply: FastifyReply;\n    };\n\n    handleFastifyError.call(handleFastifyError, error, request, reply, 'diagnostics-channel');\n  });\n\n  // Returning this as Instrumentation to avoid leaking @fastify/otel types into the public API\n  return fastifyOtelInstrumentationInstance as unknown as Instrumentation;\n});\n\nconst _fastifyIntegration = (({ shouldHandleError }: Partial) => {\n  let _shouldHandleError: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean;\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      _shouldHandleError = shouldHandleError || defaultShouldHandleError;\n\n      instrumentFastifyV3();\n      instrumentFastify();\n    },\n    getShouldHandleError() {\n      return _shouldHandleError;\n    },\n    setShouldHandleError(fn: (error: Error, request: FastifyRequest, reply: FastifyReply) => boolean): void {\n      _shouldHandleError = fn;\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Fastify](https://fastify.dev/).\n *\n * If you also want to capture errors, you need to call `setupFastifyErrorHandler(app)` after you set up your Fastify server.\n *\n * For more information, see the [fastify documentation](https://docs.sentry.io/platforms/javascript/guides/fastify/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.fastifyIntegration()],\n * })\n * ```\n */\nexport const fastifyIntegration = defineIntegration((options: Partial = {}) =>\n  _fastifyIntegration(options),\n);\n\n/**\n * Default function to determine if an error should be sent to Sentry\n *\n * 3xx and 4xx errors are not sent by default.\n */\nfunction defaultShouldHandleError(_error: Error, _request: FastifyRequest, reply: FastifyReply): boolean {\n  const statusCode = reply.statusCode;\n  // 3xx and 4xx errors are not sent by default.\n  return statusCode >= 500 || statusCode <= 299;\n}\n\n/**\n * Add an Fastify error handler to capture errors to Sentry.\n *\n * @param fastify The Fastify instance to which to add the error handler\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Fastify = require(\"fastify\");\n *\n * const app = Fastify();\n *\n * Sentry.setupFastifyErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen({ port: 3000 });\n * ```\n */\nexport function setupFastifyErrorHandler(fastify: FastifyMinimal, options?: Partial): void {\n  if (options?.shouldHandleError) {\n    getFastifyIntegration()?.setShouldHandleError(options.shouldHandleError);\n  }\n\n  const plugin = Object.assign(\n    function (fastify: FastifyInstance, _options: unknown, done: () => void): void {\n      fastify.addHook('onError', async (request, reply, error) => {\n        handleFastifyError.call(handleFastifyError, error, request, reply, 'onError-hook');\n      });\n      done();\n    },\n    {\n      [Symbol.for('skip-override')]: true,\n      [Symbol.for('fastify.display-name')]: 'sentry-fastify-error-handler',\n    },\n  );\n\n  fastify.register(plugin);\n}\n\nfunction addFastifySpanAttributes(span: Span): void {\n  const spanJSON = spanToJSON(span);\n  const spanName = spanJSON.description;\n  const attributes = spanJSON.data;\n\n  const type = attributes['fastify.type'];\n\n  const isHook = type === 'hook';\n  const isHandler = type === spanName?.startsWith('handler -');\n  // In @fastify/otel `request-handler` is separated by dash, not underscore\n  const isRequestHandler = spanName === 'request' || type === 'request-handler';\n\n  // If this is already set, or we have no fastify span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || (!isHandler && !isRequestHandler && !isHook)) {\n    return;\n  }\n\n  const opPrefix = isHook ? 'hook' : isHandler ? 'middleware' : isRequestHandler ? 'request_handler' : '';\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${opPrefix}.fastify`,\n  });\n\n  const attrName = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n  if (typeof attrName === 'string') {\n    // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n    // This is a bit of a hack, and not always working for all spans\n    // But it's the best we can do without a proper API\n    const updatedName = attrName.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n    span.updateName(updatedName);\n  }\n}\n\nfunction instrumentClient(): void {\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', (span: Span) => {\n      addFastifySpanAttributes(span);\n    });\n  }\n}\n\nfunction instrumentOnRequest(fastify: FastifyInstance): void {\n  fastify.addHook('onRequest', async (request: FastifyRequest & { opentelemetry?: () => { span?: Span } }, _reply) => {\n    if (request.opentelemetry) {\n      const { span } = request.opentelemetry();\n\n      if (span) {\n        addFastifySpanAttributes(span);\n      }\n    }\n\n    const routeName = request.routeOptions?.url;\n    const method = request.method || 'GET';\n\n    getIsolationScope().setTransactionName(`${method} ${routeName}`);\n  });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AllowedOperationTypes {\n  QUERY = 'query',\n  MUTATION = 'mutation',\n  SUBSCRIPTION = 'subscription',\n}\n\nexport enum TokenKind {\n  SOF = '',\n  EOF = '',\n  BANG = '!',\n  DOLLAR = '$',\n  AMP = '&',\n  PAREN_L = '(',\n  PAREN_R = ')',\n  SPREAD = '...',\n  COLON = ':',\n  EQUALS = '=',\n  AT = '@',\n  BRACKET_L = '[',\n  BRACKET_R = ']',\n  BRACE_L = '{',\n  PIPE = '|',\n  BRACE_R = '}',\n  NAME = 'Name',\n  INT = 'Int',\n  FLOAT = 'Float',\n  STRING = 'String',\n  BLOCK_STRING = 'BlockString',\n  COMMENT = 'Comment',\n}\n\nexport enum SpanNames {\n  EXECUTE = 'graphql.execute',\n  PARSE = 'graphql.parse',\n  RESOLVE = 'graphql.resolve',\n  VALIDATE = 'graphql.validate',\n  SCHEMA_VALIDATE = 'graphql.validateSchema',\n  SCHEMA_PARSE = 'graphql.parseSchema',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  SOURCE = 'graphql.source',\n  FIELD_NAME = 'graphql.field.name',\n  FIELD_PATH = 'graphql.field.path',\n  FIELD_TYPE = 'graphql.field.type',\n  PARENT_NAME = 'graphql.parent.name',\n  OPERATION_TYPE = 'graphql.operation.type',\n  OPERATION_NAME = 'graphql.operation.name',\n  VARIABLES = 'graphql.variables.',\n  ERROR_VALIDATION_NAME = 'graphql.validation.error',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport const OTEL_PATCHED_SYMBOL = Symbol.for('opentelemetry.patched');\n\nexport const OTEL_GRAPHQL_DATA_SYMBOL = Symbol.for(\n  'opentelemetry.graphql_data'\n);\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as graphqlTypes from 'graphql';\nimport type * as api from '@opentelemetry/api';\nimport type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport type { DocumentNode } from 'graphql/language/ast';\nimport type {\n  GraphQLFieldResolver,\n  GraphQLTypeResolver,\n} from 'graphql/type/definition';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\n\nexport const OPERATION_NOT_SUPPORTED =\n  'Operation$operationName$not' + ' supported';\n\nexport type executeFunctionWithObj = (\n  args: graphqlTypes.ExecutionArgs\n) => PromiseOrValue;\n\nexport type executeArgumentsArray = [\n  graphqlTypes.GraphQLSchema,\n  graphqlTypes.DocumentNode,\n  any,\n  any,\n  Maybe<{ [key: string]: any }>,\n  Maybe,\n  Maybe>,\n  Maybe>,\n];\n\nexport type executeFunctionWithArgs = (\n  schema: graphqlTypes.GraphQLSchema,\n  document: graphqlTypes.DocumentNode,\n  rootValue?: any,\n  contextValue?: any,\n  variableValues?: Maybe<{ [key: string]: any }>,\n  operationName?: Maybe,\n  fieldResolver?: Maybe>,\n  typeResolver?: Maybe>\n) => PromiseOrValue;\n\nexport interface OtelExecutionArgs {\n  schema: graphqlTypes.GraphQLSchema;\n  document: DocumentNode & ObjectWithGraphQLData;\n  rootValue?: any;\n  contextValue?: any & ObjectWithGraphQLData;\n  variableValues?: Maybe<{ [key: string]: any }>;\n  operationName?: Maybe;\n  fieldResolver?: Maybe & OtelPatched>;\n  typeResolver?: Maybe>;\n}\n\nexport type executeType = executeFunctionWithObj | executeFunctionWithArgs;\n\nexport type parseType = (\n  source: string | graphqlTypes.Source,\n  options?: graphqlTypes.ParseOptions\n) => graphqlTypes.DocumentNode;\n\nexport type validateType = (\n  schema: graphqlTypes.GraphQLSchema,\n  documentAST: graphqlTypes.DocumentNode,\n  rules?: ReadonlyArray,\n  options?: { maxErrors?: number },\n  typeInfo?: graphqlTypes.TypeInfo\n) => ReadonlyArray;\n\nexport interface GraphQLField {\n  span: api.Span;\n}\n\ninterface OtelGraphQLData {\n  source?: any;\n  span: api.Span;\n  fields: { [key: string]: GraphQLField };\n}\n\nexport interface ObjectWithGraphQLData {\n  [OTEL_GRAPHQL_DATA_SYMBOL]?: OtelGraphQLData;\n}\n\nexport interface OtelPatched {\n  [OTEL_PATCHED_SYMBOL]?: boolean;\n}\n\nexport interface GraphQLPath {\n  prev: GraphQLPath | undefined;\n  key: string | number;\n  /**\n   * optional as it didn't exist yet in ver 14\n   */\n  typename?: string | undefined;\n}\n\n/**\n * Moving this type from ver 15 of graphql as it is nto available in ver. 14s\n * this way it can compile against ver 14.\n */\nexport type Maybe = null | undefined | T;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as graphqlTypes from 'graphql';\nimport * as api from '@opentelemetry/api';\nimport { AllowedOperationTypes, SpanNames, TokenKind } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\nimport {\n  GraphQLField,\n  GraphQLPath,\n  ObjectWithGraphQLData,\n  OtelPatched,\n  Maybe,\n} from './internal-types';\nimport { GraphQLInstrumentationParsedConfig } from './types';\n\nconst OPERATION_VALUES = Object.values(AllowedOperationTypes);\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts\nexport const isPromise = (value: any): value is Promise => {\n  return typeof value?.then === 'function';\n};\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isObjectLike.ts\nconst isObjectLike = (value: unknown): value is { [key: string]: unknown } => {\n  return typeof value == 'object' && value !== null;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction addInputVariableAttribute(span: api.Span, key: string, variable: any) {\n  if (Array.isArray(variable)) {\n    variable.forEach((value, idx) => {\n      addInputVariableAttribute(span, `${key}.${idx}`, value);\n    });\n  } else if (variable instanceof Object) {\n    Object.entries(variable).forEach(([nestedKey, value]) => {\n      addInputVariableAttribute(span, `${key}.${nestedKey}`, value);\n    });\n  } else {\n    span.setAttribute(`${AttributeNames.VARIABLES}${String(key)}`, variable);\n  }\n}\n\nexport function addInputVariableAttributes(\n  span: api.Span,\n  variableValues: { [key: string]: any }\n) {\n  Object.entries(variableValues).forEach(([key, value]) => {\n    addInputVariableAttribute(span, key, value);\n  });\n}\n\nexport function addSpanSource(\n  span: api.Span,\n  loc?: graphqlTypes.Location,\n  allowValues?: boolean,\n  start?: number,\n  end?: number\n): void {\n  const source = getSourceFromLocation(loc, allowValues, start, end);\n  span.setAttribute(AttributeNames.SOURCE, source);\n}\n\nfunction createFieldIfNotExists(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  contextValue: any,\n  info: graphqlTypes.GraphQLResolveInfo,\n  path: string[]\n): {\n  field: GraphQLField;\n  spanAdded: boolean;\n} {\n  let field = getField(contextValue, path);\n  if (field) {\n    return { field, spanAdded: false };\n  }\n\n  const config = getConfig();\n  const parentSpan = config.flatResolveSpans\n    ? getRootSpan(contextValue)\n    : getParentFieldSpan(contextValue, path);\n\n  field = {\n    span: createResolverSpan(\n      tracer,\n      getConfig,\n      contextValue,\n      info,\n      path,\n      parentSpan\n    ),\n  };\n\n  addField(contextValue, path, field);\n\n  return { field, spanAdded: true };\n}\n\nfunction createResolverSpan(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  contextValue: any,\n  info: graphqlTypes.GraphQLResolveInfo,\n  path: string[],\n  parentSpan?: api.Span\n): api.Span {\n  const attributes: api.SpanAttributes = {\n    [AttributeNames.FIELD_NAME]: info.fieldName,\n    [AttributeNames.FIELD_PATH]: path.join('.'),\n    [AttributeNames.FIELD_TYPE]: info.returnType.toString(),\n    [AttributeNames.PARENT_NAME]: info.parentType.name,\n  };\n\n  const span = tracer.startSpan(\n    `${SpanNames.RESOLVE} ${attributes[AttributeNames.FIELD_PATH]}`,\n    {\n      attributes,\n    },\n    parentSpan ? api.trace.setSpan(api.context.active(), parentSpan) : undefined\n  );\n\n  const document = contextValue[OTEL_GRAPHQL_DATA_SYMBOL].source;\n  const fieldNode = info.fieldNodes.find(\n    fieldNode => fieldNode.kind === 'Field'\n  );\n\n  if (fieldNode) {\n    addSpanSource(\n      span,\n      document.loc,\n      getConfig().allowValues,\n      fieldNode.loc?.start,\n      fieldNode.loc?.end\n    );\n  }\n\n  return span;\n}\n\nexport function endSpan(span: api.Span, error?: Error): void {\n  if (error) {\n    span.recordException(error);\n  }\n  span.end();\n}\n\nexport function getOperation(\n  document: graphqlTypes.DocumentNode,\n  operationName?: Maybe\n): graphqlTypes.DefinitionNode | undefined {\n  if (!document || !Array.isArray(document.definitions)) {\n    return undefined;\n  }\n\n  if (operationName) {\n    return document.definitions\n      .filter(\n        definition =>\n          OPERATION_VALUES.indexOf((definition as any)?.operation) !== -1\n      )\n      .find(definition => operationName === (definition as any)?.name?.value);\n  } else {\n    return document.definitions.find(\n      definition =>\n        OPERATION_VALUES.indexOf((definition as any)?.operation) !== -1\n    );\n  }\n}\n\nfunction addField(contextValue: any, path: string[], field: GraphQLField) {\n  return (contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] =\n    field);\n}\n\nfunction getField(contextValue: any, path: string[]): GraphQLField {\n  return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')];\n}\n\nfunction getParentFieldSpan(contextValue: any, path: string[]): api.Span {\n  for (let i = path.length - 1; i > 0; i--) {\n    const field = getField(contextValue, path.slice(0, i));\n\n    if (field) {\n      return field.span;\n    }\n  }\n\n  return getRootSpan(contextValue);\n}\n\nfunction getRootSpan(contextValue: any): api.Span {\n  return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].span;\n}\n\nfunction pathToArray(mergeItems: boolean, path: GraphQLPath): string[] {\n  const flattened: string[] = [];\n  let curr: GraphQLPath | undefined = path;\n  while (curr) {\n    let key = curr.key;\n\n    if (mergeItems && typeof key === 'number') {\n      key = '*';\n    }\n    flattened.push(String(key));\n    curr = curr.prev;\n  }\n  return flattened.reverse();\n}\n\nfunction repeatBreak(i: number): string {\n  return repeatChar('\\n', i);\n}\n\nfunction repeatSpace(i: number): string {\n  return repeatChar(' ', i);\n}\n\nfunction repeatChar(char: string, to: number): string {\n  let text = '';\n  for (let i = 0; i < to; i++) {\n    text += char;\n  }\n  return text;\n}\n\nconst KindsToBeRemoved: string[] = [\n  TokenKind.FLOAT,\n  TokenKind.STRING,\n  TokenKind.INT,\n  TokenKind.BLOCK_STRING,\n];\n\nexport function getSourceFromLocation(\n  loc?: graphqlTypes.Location,\n  allowValues = false,\n  inputStart?: number,\n  inputEnd?: number\n): string {\n  let source = '';\n\n  if (loc?.startToken) {\n    const start = typeof inputStart === 'number' ? inputStart : loc.start;\n    const end = typeof inputEnd === 'number' ? inputEnd : loc.end;\n\n    let next: graphqlTypes.Token | null = loc.startToken.next;\n    let previousLine: number | undefined = 1;\n    while (next) {\n      if (next.start < start) {\n        next = next.next;\n        previousLine = next?.line;\n        continue;\n      }\n      if (next.end > end) {\n        next = next.next;\n        previousLine = next?.line;\n        continue;\n      }\n      let value = next.value || next.kind;\n      let space = '';\n      if (!allowValues && KindsToBeRemoved.indexOf(next.kind) >= 0) {\n        // value = repeatChar('*', value.length);\n        value = '*';\n      }\n      if (next.kind === TokenKind.STRING) {\n        value = `\"${value}\"`;\n      }\n      if (next.kind === TokenKind.EOF) {\n        value = '';\n      }\n      if (next.line > previousLine!) {\n        source += repeatBreak(next.line - previousLine!);\n        previousLine = next.line;\n        space = repeatSpace(next.column - 1);\n      } else {\n        if (next.line === next.prev?.line) {\n          space = repeatSpace(next.start - (next.prev?.end || 0));\n        }\n      }\n      source += space + value;\n      if (next) {\n        next = next.next!;\n      }\n    }\n  }\n\n  return source;\n}\n\nexport function wrapFields(\n  type: Maybe,\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig\n): void {\n  if (!type || type[OTEL_PATCHED_SYMBOL]) {\n    return;\n  }\n  const fields = type.getFields();\n\n  type[OTEL_PATCHED_SYMBOL] = true;\n\n  Object.keys(fields).forEach(key => {\n    const field = fields[key];\n\n    if (!field) {\n      return;\n    }\n\n    if (field.resolve) {\n      field.resolve = wrapFieldResolver(tracer, getConfig, field.resolve);\n    }\n\n    if (field.type) {\n      const unwrappedTypes = unwrapType(field.type);\n      for (const unwrappedType of unwrappedTypes) {\n        wrapFields(unwrappedType, tracer, getConfig);\n      }\n    }\n  });\n}\n\nfunction unwrapType(\n  type: graphqlTypes.GraphQLOutputType\n): readonly graphqlTypes.GraphQLObjectType[] {\n  // unwrap wrapping types (non-nullable and list types)\n  if ('ofType' in type) {\n    return unwrapType(type.ofType);\n  }\n\n  // unwrap union types\n  if (isGraphQLUnionType(type)) {\n    return type.getTypes();\n  }\n\n  // return object types\n  if (isGraphQLObjectType(type)) {\n    return [type];\n  }\n\n  return [];\n}\n\nfunction isGraphQLUnionType(\n  type: graphqlTypes.GraphQLType\n): type is graphqlTypes.GraphQLUnionType {\n  return 'getTypes' in type && typeof type.getTypes === 'function';\n}\n\nfunction isGraphQLObjectType(\n  type: graphqlTypes.GraphQLType\n): type is graphqlTypes.GraphQLObjectType {\n  return 'getFields' in type && typeof type.getFields === 'function';\n}\n\nconst handleResolveSpanError = (\n  resolveSpan: api.Span,\n  err: any,\n  shouldEndSpan: boolean\n) => {\n  if (!shouldEndSpan) {\n    return;\n  }\n  resolveSpan.recordException(err);\n  resolveSpan.setStatus({\n    code: api.SpanStatusCode.ERROR,\n    message: err.message,\n  });\n  resolveSpan.end();\n};\n\nconst handleResolveSpanSuccess = (\n  resolveSpan: api.Span,\n  shouldEndSpan: boolean\n) => {\n  if (!shouldEndSpan) {\n    return;\n  }\n  resolveSpan.end();\n};\n\nexport function wrapFieldResolver(\n  tracer: api.Tracer,\n  getConfig: () => GraphQLInstrumentationParsedConfig,\n  fieldResolver: Maybe<\n    graphqlTypes.GraphQLFieldResolver & OtelPatched\n  >,\n  isDefaultResolver = false\n): graphqlTypes.GraphQLFieldResolver<\n  TSource,\n  TContext & ObjectWithGraphQLData,\n  TArgs\n> &\n  OtelPatched {\n  if (\n    (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] ||\n    typeof fieldResolver !== 'function'\n  ) {\n    return fieldResolver!;\n  }\n\n  function wrappedFieldResolver(\n    this: graphqlTypes.GraphQLFieldResolver,\n    source: TSource,\n    args: TArgs,\n    contextValue: TContext & ObjectWithGraphQLData,\n    info: graphqlTypes.GraphQLResolveInfo\n  ) {\n    if (!fieldResolver) {\n      return undefined;\n    }\n    const config = getConfig();\n\n    // follows what graphql is doing to decide if this is a trivial resolver\n    // for which we don't need to create a resolve span\n    if (\n      config.ignoreTrivialResolveSpans &&\n      isDefaultResolver &&\n      (isObjectLike(source) || typeof source === 'function')\n    ) {\n      const property = (source as any)[info.fieldName];\n      // a function execution is not trivial and should be recorder.\n      // property which is not a function is just a value and we don't want a \"resolve\" span for it\n      if (typeof property !== 'function') {\n        return fieldResolver.call(this, source, args, contextValue, info);\n      }\n    }\n\n    if (!contextValue[OTEL_GRAPHQL_DATA_SYMBOL]) {\n      return fieldResolver.call(this, source, args, contextValue, info);\n    }\n    const path = pathToArray(config.mergeItems, info && info.path);\n    const depth = path.filter((item: any) => typeof item === 'string').length;\n\n    let span: api.Span;\n    let shouldEndSpan = false;\n    if (config.depth >= 0 && config.depth < depth) {\n      span = getParentFieldSpan(contextValue, path);\n    } else {\n      const { field, spanAdded } = createFieldIfNotExists(\n        tracer,\n        getConfig,\n        contextValue,\n        info,\n        path\n      );\n      span = field.span;\n      shouldEndSpan = spanAdded;\n    }\n\n    return api.context.with(\n      api.trace.setSpan(api.context.active(), span),\n      () => {\n        try {\n          const res = fieldResolver.call(\n            this,\n            source,\n            args,\n            contextValue,\n            info\n          );\n          if (isPromise(res)) {\n            return res.then(\n              (r: any) => {\n                handleResolveSpanSuccess(span, shouldEndSpan);\n                return r;\n              },\n              (err: Error) => {\n                handleResolveSpanError(span, err, shouldEndSpan);\n                throw err;\n              }\n            );\n          } else {\n            handleResolveSpanSuccess(span, shouldEndSpan);\n            return res;\n          }\n        } catch (err: any) {\n          handleResolveSpanError(span, err, shouldEndSpan);\n          throw err;\n        }\n      }\n    );\n  }\n\n  (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] = true;\n\n  return wrappedFieldResolver;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-graphql';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, trace } from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type * as graphqlTypes from 'graphql';\nimport { SpanNames } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL } from './symbols';\n\nimport {\n  executeFunctionWithObj,\n  executeArgumentsArray,\n  executeType,\n  parseType,\n  validateType,\n  OtelExecutionArgs,\n  ObjectWithGraphQLData,\n  OPERATION_NOT_SUPPORTED,\n  Maybe,\n} from './internal-types';\nimport {\n  addInputVariableAttributes,\n  addSpanSource,\n  endSpan,\n  getOperation,\n  isPromise,\n  wrapFieldResolver,\n  wrapFields,\n} from './utils';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport * as api from '@opentelemetry/api';\nimport type { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport {\n  GraphQLInstrumentationConfig,\n  GraphQLInstrumentationParsedConfig,\n} from './types';\n\nconst DEFAULT_CONFIG: GraphQLInstrumentationParsedConfig = {\n  mergeItems: false,\n  depth: -1,\n  allowValues: false,\n  ignoreResolveSpans: false,\n};\n\nconst supportedVersions = ['>=14.0.0 <17'];\n\nexport class GraphQLInstrumentation extends InstrumentationBase {\n  constructor(config: GraphQLInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n  }\n\n  override setConfig(config: GraphQLInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  protected init() {\n    const module = new InstrumentationNodeModuleDefinition(\n      'graphql',\n      supportedVersions\n    );\n    module.files.push(this._addPatchingExecute());\n    module.files.push(this._addPatchingParser());\n    module.files.push(this._addPatchingValidate());\n\n    return module;\n  }\n\n  private _addPatchingExecute(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/execution/execute.js',\n      supportedVersions,\n      // cannot make it work with appropriate type as execute function has 2\n      //types and/cannot import function but only types\n      (moduleExports: any) => {\n        if (isWrapped(moduleExports.execute)) {\n          this._unwrap(moduleExports, 'execute');\n        }\n        this._wrap(\n          moduleExports,\n          'execute',\n          this._patchExecute(moduleExports.defaultFieldResolver)\n        );\n        return moduleExports;\n      },\n      moduleExports => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'execute');\n        }\n      }\n    );\n  }\n\n  private _addPatchingParser(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/language/parser.js',\n      supportedVersions,\n      (moduleExports: typeof graphqlTypes) => {\n        if (isWrapped(moduleExports.parse)) {\n          this._unwrap(moduleExports, 'parse');\n        }\n        this._wrap(moduleExports, 'parse', this._patchParse());\n        return moduleExports;\n      },\n      (moduleExports: typeof graphqlTypes) => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'parse');\n        }\n      }\n    );\n  }\n\n  private _addPatchingValidate(): InstrumentationNodeModuleFile {\n    return new InstrumentationNodeModuleFile(\n      'graphql/validation/validate.js',\n      supportedVersions,\n      moduleExports => {\n        if (isWrapped(moduleExports.validate)) {\n          this._unwrap(moduleExports, 'validate');\n        }\n        this._wrap(moduleExports, 'validate', this._patchValidate());\n        return moduleExports;\n      },\n      moduleExports => {\n        if (moduleExports) {\n          this._unwrap(moduleExports, 'validate');\n        }\n      }\n    );\n  }\n\n  private _patchExecute(\n    defaultFieldResolved: graphqlTypes.GraphQLFieldResolver\n  ): (original: executeType) => executeType {\n    const instrumentation = this;\n    return function execute(original) {\n      return function patchExecute(\n        this: executeType\n      ): PromiseOrValue {\n        let processedArgs: OtelExecutionArgs;\n\n        // case when apollo server is used for example\n        if (arguments.length >= 2) {\n          const args = arguments as unknown as executeArgumentsArray;\n          processedArgs = instrumentation._wrapExecuteArgs(\n            args[0],\n            args[1],\n            args[2],\n            args[3],\n            args[4],\n            args[5],\n            args[6],\n            args[7],\n            defaultFieldResolved\n          );\n        } else {\n          const args = arguments[0] as graphqlTypes.ExecutionArgs;\n          processedArgs = instrumentation._wrapExecuteArgs(\n            args.schema,\n            args.document,\n            args.rootValue,\n            args.contextValue,\n            args.variableValues,\n            args.operationName,\n            args.fieldResolver,\n            args.typeResolver,\n            defaultFieldResolved\n          );\n        }\n\n        const operation = getOperation(\n          processedArgs.document,\n          processedArgs.operationName\n        );\n\n        const span = instrumentation._createExecuteSpan(\n          operation,\n          processedArgs\n        );\n\n        processedArgs.contextValue[OTEL_GRAPHQL_DATA_SYMBOL] = {\n          source: processedArgs.document\n            ? processedArgs.document ||\n              (processedArgs.document as ObjectWithGraphQLData)[\n                OTEL_GRAPHQL_DATA_SYMBOL\n              ]\n            : undefined,\n          span,\n          fields: {},\n        };\n\n        return context.with(trace.setSpan(context.active(), span), () => {\n          return safeExecuteInTheMiddle<\n            PromiseOrValue\n          >(\n            () => {\n              return (original as executeFunctionWithObj).apply(this, [\n                processedArgs,\n              ]);\n            },\n            (err, result) => {\n              instrumentation._handleExecutionResult(span, err, result);\n            }\n          );\n        });\n      };\n    };\n  }\n\n  private _handleExecutionResult(\n    span: api.Span,\n    err?: Error,\n    result?: PromiseOrValue\n  ) {\n    const config = this.getConfig();\n    if (result === undefined || err) {\n      endSpan(span, err);\n      return;\n    }\n\n    if (isPromise(result)) {\n      (result as Promise).then(\n        resultData => {\n          if (typeof config.responseHook !== 'function') {\n            endSpan(span);\n            return;\n          }\n          this._executeResponseHook(span, resultData);\n        },\n        error => {\n          endSpan(span, error);\n        }\n      );\n    } else {\n      if (typeof config.responseHook !== 'function') {\n        endSpan(span);\n        return;\n      }\n      this._executeResponseHook(span, result as graphqlTypes.ExecutionResult);\n    }\n  }\n\n  private _executeResponseHook(\n    span: api.Span,\n    result: graphqlTypes.ExecutionResult\n  ) {\n    const { responseHook } = this.getConfig();\n    if (!responseHook) {\n      return;\n    }\n\n    safeExecuteInTheMiddle(\n      () => {\n        responseHook(span, result);\n      },\n      err => {\n        if (err) {\n          this._diag.error('Error running response hook', err);\n        }\n\n        endSpan(span, undefined);\n      },\n      true\n    );\n  }\n\n  private _patchParse(): (original: parseType) => parseType {\n    const instrumentation = this;\n    return function parse(original) {\n      return function patchParse(\n        this: parseType,\n        source: string | graphqlTypes.Source,\n        options?: graphqlTypes.ParseOptions\n      ): graphqlTypes.DocumentNode {\n        return instrumentation._parse(this, original, source, options);\n      };\n    };\n  }\n\n  private _patchValidate(): (original: validateType) => validateType {\n    const instrumentation = this;\n    return function validate(original: validateType) {\n      return function patchValidate(\n        this: validateType,\n        schema: graphqlTypes.GraphQLSchema,\n        documentAST: graphqlTypes.DocumentNode,\n        rules?: ReadonlyArray,\n        options?: { maxErrors?: number },\n        typeInfo?: graphqlTypes.TypeInfo\n      ): ReadonlyArray {\n        return instrumentation._validate(\n          this,\n          original,\n          schema,\n          documentAST,\n          rules,\n          typeInfo,\n          options\n        );\n      };\n    };\n  }\n\n  private _parse(\n    obj: parseType,\n    original: parseType,\n    source: string | graphqlTypes.Source,\n    options?: graphqlTypes.ParseOptions\n  ): graphqlTypes.DocumentNode {\n    const config = this.getConfig();\n    const span = this.tracer.startSpan(SpanNames.PARSE);\n\n    return context.with(trace.setSpan(context.active(), span), () => {\n      return safeExecuteInTheMiddle<\n        graphqlTypes.DocumentNode & ObjectWithGraphQLData\n      >(\n        () => {\n          return original.call(obj, source, options);\n        },\n        (err, result) => {\n          if (result) {\n            const operation = getOperation(result);\n            if (!operation) {\n              span.updateName(SpanNames.SCHEMA_PARSE);\n            } else if (result.loc) {\n              addSpanSource(span, result.loc, config.allowValues);\n            }\n          }\n          endSpan(span, err);\n        }\n      );\n    });\n  }\n\n  private _validate(\n    obj: validateType,\n    original: validateType,\n    schema: graphqlTypes.GraphQLSchema,\n    documentAST: graphqlTypes.DocumentNode,\n    rules?: ReadonlyArray,\n    typeInfo?: graphqlTypes.TypeInfo,\n    options?: { maxErrors?: number }\n  ): ReadonlyArray {\n    const span = this.tracer.startSpan(SpanNames.VALIDATE, {});\n\n    return context.with(trace.setSpan(context.active(), span), () => {\n      return safeExecuteInTheMiddle>(\n        () => {\n          return original.call(\n            obj,\n            schema,\n            documentAST,\n            rules,\n            options,\n            typeInfo\n          );\n        },\n        (err, errors) => {\n          if (!documentAST.loc) {\n            span.updateName(SpanNames.SCHEMA_VALIDATE);\n          }\n          if (errors && errors.length) {\n            span.recordException({\n              name: AttributeNames.ERROR_VALIDATION_NAME,\n              message: JSON.stringify(errors),\n            });\n          }\n          endSpan(span, err);\n        }\n      );\n    });\n  }\n\n  private _createExecuteSpan(\n    operation: graphqlTypes.DefinitionNode | undefined,\n    processedArgs: graphqlTypes.ExecutionArgs\n  ): api.Span {\n    const config = this.getConfig();\n\n    const span = this.tracer.startSpan(SpanNames.EXECUTE, {});\n    if (operation) {\n      const { operation: operationType, name: nameNode } =\n        operation as graphqlTypes.OperationDefinitionNode;\n\n      span.setAttribute(AttributeNames.OPERATION_TYPE, operationType);\n\n      const operationName = nameNode?.value;\n\n      // https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/graphql/\n      // > The span name MUST be of the format   provided that graphql.operation.type and graphql.operation.name are available.\n      // > If graphql.operation.name is not available, the span SHOULD be named .\n      if (operationName) {\n        span.setAttribute(AttributeNames.OPERATION_NAME, operationName);\n        span.updateName(`${operationType} ${operationName}`);\n      } else {\n        span.updateName(operationType);\n      }\n    } else {\n      let operationName = ' ';\n      if (processedArgs.operationName) {\n        operationName = ` \"${processedArgs.operationName}\" `;\n      }\n      operationName = OPERATION_NOT_SUPPORTED.replace(\n        '$operationName$',\n        operationName\n      );\n      span.setAttribute(AttributeNames.OPERATION_NAME, operationName);\n    }\n\n    if (processedArgs.document?.loc) {\n      addSpanSource(span, processedArgs.document.loc, config.allowValues);\n    }\n\n    if (processedArgs.variableValues && config.allowValues) {\n      addInputVariableAttributes(span, processedArgs.variableValues);\n    }\n\n    return span;\n  }\n\n  private _wrapExecuteArgs(\n    schema: graphqlTypes.GraphQLSchema,\n    document: graphqlTypes.DocumentNode,\n    rootValue: any,\n    contextValue: any,\n    variableValues: Maybe<{ [key: string]: any }>,\n    operationName: Maybe,\n    fieldResolver: Maybe>,\n    typeResolver: Maybe>,\n    defaultFieldResolved: graphqlTypes.GraphQLFieldResolver\n  ): OtelExecutionArgs {\n    if (!contextValue) {\n      contextValue = {};\n    }\n\n    if (\n      contextValue[OTEL_GRAPHQL_DATA_SYMBOL] ||\n      this.getConfig().ignoreResolveSpans\n    ) {\n      return {\n        schema,\n        document,\n        rootValue,\n        contextValue,\n        variableValues,\n        operationName,\n        fieldResolver,\n        typeResolver,\n      };\n    }\n\n    const isUsingDefaultResolver = fieldResolver == null;\n    // follows graphql implementation here:\n    // https://github.com/graphql/graphql-js/blob/0b7daed9811731362c71900e12e5ea0d1ecc7f1f/src/execution/execute.ts#L494\n    const fieldResolverForExecute = fieldResolver ?? defaultFieldResolved;\n    fieldResolver = wrapFieldResolver(\n      this.tracer,\n      () => this.getConfig(),\n      fieldResolverForExecute,\n      isUsingDefaultResolver\n    );\n\n    if (schema) {\n      wrapFields(schema.getQueryType(), this.tracer, () => this.getConfig());\n      wrapFields(schema.getMutationType(), this.tracer, () => this.getConfig());\n    }\n\n    return {\n      schema,\n      document,\n      rootValue,\n      contextValue,\n      variableValues,\n      operationName,\n      fieldResolver,\n      typeResolver,\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { GraphQLInstrumentation } from './instrumentation';\nexport type {\n  GraphQLInstrumentationConfig,\n  GraphQLInstrumentationExecutionResponseHook,\n  GraphQLInstrumentationParsedConfig,\n} from './types';\n","import type { AttributeValue } from '@opentelemetry/api';\nimport { SpanStatusCode } from '@opentelemetry/api';\nimport { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, getRootSpan, spanToJSON } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '@sentry/opentelemetry';\n\ninterface GraphqlOptions {\n  /**\n   * Do not create spans for resolvers.\n   *\n   * Defaults to true.\n   */\n  ignoreResolveSpans?: boolean;\n\n  /**\n   * Don't create spans for the execution of the default resolver on object properties.\n   *\n   * When a resolver function is not defined on the schema for a field, graphql will\n   * use the default resolver which just looks for a property with that name on the object.\n   * If the property is not a function, it's not very interesting to trace.\n   * This option can reduce noise and number of spans created.\n   *\n   * Defaults to true.\n   */\n  ignoreTrivialResolveSpans?: boolean;\n\n  /**\n   * If this is enabled, a http.server root span containing this span will automatically be renamed to include the operation name.\n   * Set this to `false` if you do not want this behavior, and want to keep the default http.server span name.\n   *\n   * Defaults to true.\n   */\n  useOperationNameForRootSpan?: boolean;\n}\n\nconst INTEGRATION_NAME = 'Graphql';\n\nexport const instrumentGraphql = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  GraphQLInstrumentation,\n  (_options: GraphqlOptions) => {\n    const options = getOptionsWithDefaults(_options);\n\n    return {\n      ...options,\n      responseHook(span, result) {\n        addOriginToSpan(span, 'auto.graphql.otel.graphql');\n\n        // We want to ensure spans are marked as errored if there are errors in the result\n        // We only do that if the span is not already marked with a status\n        const resultWithMaybeError = result as { errors?: { message: string }[] };\n        if (resultWithMaybeError.errors?.length && !spanToJSON(span).status) {\n          span.setStatus({ code: SpanStatusCode.ERROR });\n        }\n\n        const attributes = spanToJSON(span).data;\n\n        // If operation.name is not set, we fall back to use operation.type only\n        const operationType = attributes['graphql.operation.type'];\n        const operationName = attributes['graphql.operation.name'];\n\n        if (options.useOperationNameForRootSpan && operationType) {\n          const rootSpan = getRootSpan(span);\n          const rootSpanAttributes = spanToJSON(rootSpan).data;\n\n          const existingOperations = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION] || [];\n\n          const newOperation = operationName ? `${operationType} ${operationName}` : `${operationType}`;\n\n          // We keep track of each operation on the root span\n          // This can either be a string, or an array of strings (if there are multiple operations)\n          if (Array.isArray(existingOperations)) {\n            (existingOperations as string[]).push(newOperation);\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, existingOperations);\n          } else if (typeof existingOperations === 'string') {\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, [existingOperations, newOperation]);\n          } else {\n            rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, newOperation);\n          }\n\n          if (!spanToJSON(rootSpan).data['original-description']) {\n            rootSpan.setAttribute('original-description', spanToJSON(rootSpan).description);\n          }\n          // Important for e.g. @sentry/aws-serverless because this would otherwise overwrite the name again\n          rootSpan.updateName(\n            `${spanToJSON(rootSpan).data['original-description']} (${getGraphqlOperationNamesFromAttribute(\n              existingOperations,\n            )})`,\n          );\n        }\n      },\n    };\n  },\n);\n\nconst _graphqlIntegration = ((options: GraphqlOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      // We set defaults here, too, because otherwise we'd update the instrumentation config\n      // to the config without defaults, as `generateInstrumentOnce` automatically calls `setConfig(options)`\n      // when being called the second time\n      instrumentGraphql(getOptionsWithDefaults(options));\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [graphql](https://www.npmjs.com/package/graphql) library.\n *\n * For more information, see the [`graphqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/graphql/).\n *\n * @param {GraphqlOptions} options Configuration options for the GraphQL integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.graphqlIntegration()],\n * });\n */\nexport const graphqlIntegration = defineIntegration(_graphqlIntegration);\n\nfunction getOptionsWithDefaults(options?: GraphqlOptions): GraphqlOptions {\n  return {\n    ignoreResolveSpans: true,\n    ignoreTrivialResolveSpans: true,\n    useOperationNameForRootSpan: true,\n    ...options,\n  };\n}\n\n// copy from packages/opentelemetry/utils\nfunction getGraphqlOperationNamesFromAttribute(attr: AttributeValue): string {\n  if (Array.isArray(attr)) {\n    // oxlint-disable-next-line typescript/require-array-sort-compare\n    const sorted = attr.slice().sort();\n\n    // Up to 5 items, we just add all of them\n    if (sorted.length <= 5) {\n      return sorted.join(', ');\n    } else {\n      // Else, we add the first 5 and the diff of other operations\n      return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n    }\n  }\n\n  return `${attr}`;\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nimport type * as KafkaJSTypes from 'kafkajs';\n\nexport const EVENT_LISTENERS_SET = Symbol(\n  'opentelemetry.instrumentation.kafkajs.eventListenersSet'\n);\n\nexport interface ConsumerExtended extends KafkaJSTypes.Consumer {\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n\nexport interface ProducerExtended extends KafkaJSTypes.Producer {\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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 */\nimport { TextMapGetter } from '@opentelemetry/api';\n\n/*\nsame as open telemetry's `defaultTextMapGetter`,\nbut also handle case where header is buffer,\nadding toString() to make sure string is returned\n*/\nexport const bufferTextMapGetter: TextMapGetter = {\n  get(carrier, key) {\n    if (!carrier) {\n      return undefined;\n    }\n\n    const keys = Object.keys(carrier);\n\n    for (const carrierKey of keys) {\n      if (carrierKey === key || carrierKey.toLowerCase() === key) {\n        return carrier[carrierKey]?.toString();\n      }\n    }\n\n    return undefined;\n  },\n\n  keys(carrier) {\n    return carrier ? Object.keys(carrier) : [];\n  },\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The number of messages sent, received, or processed in the scope of the batching operation.\n *\n * @example 0\n * @example 1\n * @example 2\n *\n * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_BATCH_MESSAGE_COUNT =\n  'messaging.batch.message_count' as const;\n\n/**\n * The message destination name\n *\n * @example MyQueue\n * @example MyTopic\n *\n * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If\n * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_NAME =\n  'messaging.destination.name' as const;\n\n/**\n * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`.\n *\n * @example \"1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_DESTINATION_PARTITION_ID =\n  'messaging.destination.partition.id' as const;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message.id` in that they're not unique. If the key is `null`, the attribute **MUST NOT** be set.\n *\n * @example \"myKey\"\n *\n * @note If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_KEY =\n  'messaging.kafka.message.key' as const;\n\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE =\n  'messaging.kafka.message.tombstone' as const;\n\n/**\n * The offset of a record in the corresponding Kafka partition.\n *\n * @example 42\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset' as const;\n\n/**\n * The system-specific name of the messaging operation.\n *\n * @example ack\n * @example nack\n * @example send\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_OPERATION_NAME =\n  'messaging.operation.name' as const;\n\n/**\n * A string identifying the type of the messaging operation.\n *\n * @note If a custom value is used, it **MUST** be of low cardinality.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_OPERATION_TYPE =\n  'messaging.operation.type' as const;\n\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_PROCESS = 'process' as const;\n\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = 'receive' as const;\n\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexport const MESSAGING_OPERATION_TYPE_VALUE_SEND = 'send' as const;\n\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexport const MESSAGING_SYSTEM_VALUE_KAFKA = 'kafka' as const;\n\n/**\n * Number of messages that were delivered to the application.\n *\n * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios.\n * The metric **SHOULD** be reported once per message delivery. For example, if receiving and processing operations are both instrumented for a single message delivery, this counter is incremented when the message is received and not reported when it is processed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES =\n  'messaging.client.consumed.messages' as const;\n\n/**\n * Duration of messaging operation initiated by a producer or consumer client.\n *\n * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_OPERATION_DURATION =\n  'messaging.client.operation.duration' as const;\n\n/**\n * Number of messages producer attempted to send to the broker.\n *\n * @note This metric **MUST NOT** count messages that were created but haven't yet been sent.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_CLIENT_SENT_MESSAGES =\n  'messaging.client.sent.messages' as const;\n\n/**\n * Duration of processing operation.\n *\n * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_MESSAGING_PROCESS_DURATION =\n  'messaging.process.duration' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.23.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-kafkajs';\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nimport {\n  Attributes,\n  Context,\n  context,\n  Counter,\n  Histogram,\n  Link,\n  propagation,\n  ROOT_CONTEXT,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  trace,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  ERROR_TYPE_VALUE_OTHER,\n} from '@opentelemetry/semantic-conventions';\nimport type * as kafkaJs from 'kafkajs';\nimport type {\n  Consumer,\n  ConsumerRunConfig,\n  EachBatchHandler,\n  EachMessageHandler,\n  KafkaMessage,\n  Message,\n  Producer,\n  RecordMetadata,\n} from 'kafkajs';\nimport { EVENT_LISTENERS_SET } from './internal-types';\nimport { bufferTextMapGetter } from './propagator';\nimport {\n  ATTR_MESSAGING_BATCH_MESSAGE_COUNT,\n  ATTR_MESSAGING_DESTINATION_NAME,\n  ATTR_MESSAGING_DESTINATION_PARTITION_ID,\n  ATTR_MESSAGING_KAFKA_MESSAGE_KEY,\n  ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE,\n  ATTR_MESSAGING_KAFKA_OFFSET,\n  ATTR_MESSAGING_OPERATION_NAME,\n  ATTR_MESSAGING_OPERATION_TYPE,\n  ATTR_MESSAGING_SYSTEM,\n  MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n  MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n  MESSAGING_OPERATION_TYPE_VALUE_SEND,\n  MESSAGING_SYSTEM_VALUE_KAFKA,\n  METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES,\n  METRIC_MESSAGING_CLIENT_OPERATION_DURATION,\n  METRIC_MESSAGING_CLIENT_SENT_MESSAGES,\n  METRIC_MESSAGING_PROCESS_DURATION,\n} from './semconv';\nimport { KafkaJsInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\ninterface ConsumerSpanOptions {\n  topic: string;\n  message: KafkaMessage | undefined;\n  operationType: string;\n  attributes: Attributes;\n  ctx?: Context | undefined;\n  link?: Link;\n}\n// This interface acts as a strict subset of the KafkaJS Consumer and\n// Producer interfaces (just for the event we're needing)\ninterface KafkaEventEmitter {\n  on(\n    eventName:\n      | kafkaJs.ConsumerEvents['REQUEST']\n      | kafkaJs.ProducerEvents['REQUEST'],\n    listener: (event: kafkaJs.RequestEvent) => void\n  ): void;\n  events: {\n    REQUEST:\n      | kafkaJs.ConsumerEvents['REQUEST']\n      | kafkaJs.ProducerEvents['REQUEST'];\n  };\n  [EVENT_LISTENERS_SET]?: boolean;\n}\n\ninterface StandardAttributes extends Attributes {\n  [ATTR_MESSAGING_SYSTEM]: string;\n  [ATTR_MESSAGING_OPERATION_NAME]: OP;\n  [ATTR_ERROR_TYPE]?: string;\n}\ninterface TopicAttributes {\n  [ATTR_MESSAGING_DESTINATION_NAME]: string;\n  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]?: string;\n}\n\ninterface ClientDurationAttributes\n  extends StandardAttributes,\n    Partial {\n  [ATTR_SERVER_ADDRESS]: string;\n  [ATTR_SERVER_PORT]: number;\n  [ATTR_MESSAGING_OPERATION_TYPE]?: string;\n}\ninterface SentMessagesAttributes\n  extends StandardAttributes<'send'>,\n    TopicAttributes {\n  [ATTR_ERROR_TYPE]?: string;\n}\ntype ConsumedMessagesAttributes = StandardAttributes<'receive' | 'process'>;\ninterface MessageProcessDurationAttributes\n  extends StandardAttributes<'process'>,\n    TopicAttributes {\n  [ATTR_MESSAGING_SYSTEM]: string;\n  [ATTR_MESSAGING_OPERATION_NAME]: 'process';\n  [ATTR_ERROR_TYPE]?: string;\n}\ntype RecordPendingMetric = (errorType?: string | undefined) => void;\n\nfunction prepareCounter(\n  meter: Counter,\n  value: number,\n  attributes: T\n): RecordPendingMetric {\n  return (errorType?: string | undefined) => {\n    meter.add(value, {\n      ...attributes,\n      ...(errorType ? { [ATTR_ERROR_TYPE]: errorType } : {}),\n    });\n  };\n}\n\nfunction prepareDurationHistogram(\n  meter: Histogram,\n  value: number,\n  attributes: T\n): RecordPendingMetric {\n  return (errorType?: string | undefined) => {\n    meter.record((Date.now() - value) / 1000, {\n      ...attributes,\n      ...(errorType ? { [ATTR_ERROR_TYPE]: errorType } : {}),\n    });\n  };\n}\n\nconst HISTOGRAM_BUCKET_BOUNDARIES = [\n  0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,\n];\nexport class KafkaJsInstrumentation extends InstrumentationBase {\n  declare private _clientDuration: Histogram;\n  declare private _sentMessages: Counter;\n  declare private _consumedMessages: Counter;\n  declare private _processDuration: Histogram;\n\n  constructor(config: KafkaJsInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  override _updateMetricInstruments() {\n    this._clientDuration = this.meter.createHistogram(\n      METRIC_MESSAGING_CLIENT_OPERATION_DURATION,\n      { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }\n    );\n    this._sentMessages = this.meter.createCounter(\n      METRIC_MESSAGING_CLIENT_SENT_MESSAGES\n    );\n    this._consumedMessages = this.meter.createCounter(\n      METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES\n    );\n    this._processDuration = this.meter.createHistogram(\n      METRIC_MESSAGING_PROCESS_DURATION,\n      { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } }\n    );\n  }\n\n  protected init() {\n    const unpatch = (moduleExports: typeof kafkaJs) => {\n      if (isWrapped(moduleExports?.Kafka?.prototype.producer)) {\n        this._unwrap(moduleExports.Kafka.prototype, 'producer');\n      }\n      if (isWrapped(moduleExports?.Kafka?.prototype.consumer)) {\n        this._unwrap(moduleExports.Kafka.prototype, 'consumer');\n      }\n    };\n\n    const module = new InstrumentationNodeModuleDefinition(\n      'kafkajs',\n      ['>=0.3.0 <3'],\n      (moduleExports: typeof kafkaJs) => {\n        unpatch(moduleExports);\n        this._wrap(\n          moduleExports?.Kafka?.prototype,\n          'producer',\n          this._getProducerPatch()\n        );\n        this._wrap(\n          moduleExports?.Kafka?.prototype,\n          'consumer',\n          this._getConsumerPatch()\n        );\n\n        return moduleExports;\n      },\n      unpatch\n    );\n    return module;\n  }\n\n  private _getConsumerPatch() {\n    const instrumentation = this;\n    return (original: kafkaJs.Kafka['consumer']) => {\n      return function consumer(\n        this: kafkaJs.Kafka,\n        ...args: Parameters\n      ) {\n        const newConsumer: Consumer = original.apply(this, args);\n\n        if (isWrapped(newConsumer.run)) {\n          instrumentation._unwrap(newConsumer, 'run');\n        }\n\n        instrumentation._wrap(\n          newConsumer,\n          'run',\n          instrumentation._getConsumerRunPatch()\n        );\n\n        instrumentation._setKafkaEventListeners(newConsumer);\n\n        return newConsumer;\n      };\n    };\n  }\n\n  private _setKafkaEventListeners(kafkaObj: KafkaEventEmitter) {\n    if (kafkaObj[EVENT_LISTENERS_SET]) return;\n\n    // The REQUEST Consumer event was added in kafkajs@1.5.0.\n    if (kafkaObj.events?.REQUEST) {\n      kafkaObj.on(\n        kafkaObj.events.REQUEST,\n        this._recordClientDurationMetric.bind(this)\n      );\n    }\n\n    kafkaObj[EVENT_LISTENERS_SET] = true;\n  }\n\n  private _recordClientDurationMetric(\n    event: Pick\n  ) {\n    const [address, port] = event.payload.broker.split(':');\n    this._clientDuration.record(event.payload.duration / 1000, {\n      [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n      [ATTR_MESSAGING_OPERATION_NAME]: `${event.payload.apiName}`, // potentially suffix with @v${event.payload.apiVersion}?\n      [ATTR_SERVER_ADDRESS]: address,\n      [ATTR_SERVER_PORT]: Number.parseInt(port, 10),\n    });\n  }\n\n  private _getProducerPatch() {\n    const instrumentation = this;\n    return (original: kafkaJs.Kafka['producer']) => {\n      return function consumer(\n        this: kafkaJs.Kafka,\n        ...args: Parameters\n      ) {\n        const newProducer: Producer = original.apply(this, args);\n\n        if (isWrapped(newProducer.sendBatch)) {\n          instrumentation._unwrap(newProducer, 'sendBatch');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'sendBatch',\n          instrumentation._getSendBatchPatch()\n        );\n\n        if (isWrapped(newProducer.send)) {\n          instrumentation._unwrap(newProducer, 'send');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'send',\n          instrumentation._getSendPatch()\n        );\n\n        if (isWrapped(newProducer.transaction)) {\n          instrumentation._unwrap(newProducer, 'transaction');\n        }\n        instrumentation._wrap(\n          newProducer,\n          'transaction',\n          instrumentation._getProducerTransactionPatch()\n        );\n\n        instrumentation._setKafkaEventListeners(newProducer);\n\n        return newProducer;\n      };\n    };\n  }\n\n  private _getConsumerRunPatch() {\n    const instrumentation = this;\n    return (original: Consumer['run']) => {\n      return function run(\n        this: Consumer,\n        ...args: Parameters\n      ): ReturnType {\n        const config = args[0];\n        if (config?.eachMessage) {\n          if (isWrapped(config.eachMessage)) {\n            instrumentation._unwrap(config, 'eachMessage');\n          }\n          instrumentation._wrap(\n            config,\n            'eachMessage',\n            instrumentation._getConsumerEachMessagePatch()\n          );\n        }\n        if (config?.eachBatch) {\n          if (isWrapped(config.eachBatch)) {\n            instrumentation._unwrap(config, 'eachBatch');\n          }\n          instrumentation._wrap(\n            config,\n            'eachBatch',\n            instrumentation._getConsumerEachBatchPatch()\n          );\n        }\n        return original.call(this, config);\n      };\n    };\n  }\n\n  private _getConsumerEachMessagePatch() {\n    const instrumentation = this;\n    return (original: ConsumerRunConfig['eachMessage']) => {\n      return function eachMessage(\n        this: unknown,\n        ...args: Parameters\n      ): Promise {\n        const payload = args[0];\n        const propagatedContext: Context = propagation.extract(\n          ROOT_CONTEXT,\n          payload.message.headers,\n          bufferTextMapGetter\n        );\n        const span = instrumentation._startConsumerSpan({\n          topic: payload.topic,\n          message: payload.message,\n          operationType: MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n          ctx: propagatedContext,\n          attributes: {\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.partition\n            ),\n          },\n        });\n\n        const pendingMetrics: RecordPendingMetric[] = [\n          prepareDurationHistogram(\n            instrumentation._processDuration,\n            Date.now(),\n            {\n              [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n              [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n              [ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n              [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                payload.partition\n              ),\n            }\n          ),\n          prepareCounter(instrumentation._consumedMessages, 1, {\n            [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n            [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n            [ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.partition\n            ),\n          }),\n        ];\n\n        const eachMessagePromise = context.with(\n          trace.setSpan(propagatedContext, span),\n          () => {\n            return original!.apply(this, args);\n          }\n        );\n        return instrumentation._endSpansOnPromise(\n          [span],\n          pendingMetrics,\n          eachMessagePromise\n        );\n      };\n    };\n  }\n\n  private _getConsumerEachBatchPatch() {\n    return (original: ConsumerRunConfig['eachBatch']) => {\n      const instrumentation = this;\n      return function eachBatch(\n        this: unknown,\n        ...args: Parameters\n      ): Promise {\n        const payload = args[0];\n        // https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#topic-with-multiple-consumers\n        const receivingSpan = instrumentation._startConsumerSpan({\n          topic: payload.batch.topic,\n          message: undefined,\n          operationType: MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n          ctx: ROOT_CONTEXT,\n          attributes: {\n            [ATTR_MESSAGING_BATCH_MESSAGE_COUNT]: payload.batch.messages.length,\n            [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n              payload.batch.partition\n            ),\n          },\n        });\n        return context.with(\n          trace.setSpan(context.active(), receivingSpan),\n          () => {\n            const startTime = Date.now();\n            const spans: Span[] = [];\n            const pendingMetrics: RecordPendingMetric[] = [\n              prepareCounter(\n                instrumentation._consumedMessages,\n                payload.batch.messages.length,\n                {\n                  [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                  [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                  [ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                    payload.batch.partition\n                  ),\n                }\n              ),\n            ];\n            payload.batch.messages.forEach(message => {\n              const propagatedContext: Context = propagation.extract(\n                ROOT_CONTEXT,\n                message.headers,\n                bufferTextMapGetter\n              );\n              const spanContext = trace\n                .getSpan(propagatedContext)\n                ?.spanContext();\n              let origSpanLink: Link | undefined;\n              if (spanContext) {\n                origSpanLink = {\n                  context: spanContext,\n                };\n              }\n              spans.push(\n                instrumentation._startConsumerSpan({\n                  topic: payload.batch.topic,\n                  message,\n                  operationType: MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n                  link: origSpanLink,\n                  attributes: {\n                    [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                      payload.batch.partition\n                    ),\n                  },\n                })\n              );\n              pendingMetrics.push(\n                prepareDurationHistogram(\n                  instrumentation._processDuration,\n                  startTime,\n                  {\n                    [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                    [ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                    [ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                    [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                      payload.batch.partition\n                    ),\n                  }\n                )\n              );\n            });\n            const batchMessagePromise: Promise = original!.apply(\n              this,\n              args\n            );\n            spans.unshift(receivingSpan);\n            return instrumentation._endSpansOnPromise(\n              spans,\n              pendingMetrics,\n              batchMessagePromise\n            );\n          }\n        );\n      };\n    };\n  }\n\n  private _getProducerTransactionPatch() {\n    const instrumentation = this;\n    return (original: Producer['transaction']) => {\n      return function transaction(\n        this: Producer,\n        ...args: Parameters\n      ): ReturnType {\n        const transactionSpan = instrumentation.tracer.startSpan('transaction');\n\n        const transactionPromise = original.apply(this, args);\n\n        transactionPromise\n          .then((transaction: kafkaJs.Transaction) => {\n            const originalSend = transaction.send;\n            transaction.send = function send(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              return context.with(\n                trace.setSpan(context.active(), transactionSpan),\n                () => {\n                  const patched = instrumentation._getSendPatch()(originalSend);\n                  return patched.apply(this, args).catch(err => {\n                    transactionSpan.setStatus({\n                      code: SpanStatusCode.ERROR,\n                      message: err?.message,\n                    });\n                    transactionSpan.recordException(err);\n                    throw err;\n                  });\n                }\n              );\n            };\n\n            const originalSendBatch = transaction.sendBatch;\n            transaction.sendBatch = function sendBatch(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              return context.with(\n                trace.setSpan(context.active(), transactionSpan),\n                () => {\n                  const patched =\n                    instrumentation._getSendBatchPatch()(originalSendBatch);\n                  return patched.apply(this, args).catch(err => {\n                    transactionSpan.setStatus({\n                      code: SpanStatusCode.ERROR,\n                      message: err?.message,\n                    });\n                    transactionSpan.recordException(err);\n                    throw err;\n                  });\n                }\n              );\n            };\n\n            const originalCommit = transaction.commit;\n            transaction.commit = function commit(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              const originCommitPromise = originalCommit\n                .apply(this, args)\n                .then(() => {\n                  transactionSpan.setStatus({ code: SpanStatusCode.OK });\n                });\n              return instrumentation._endSpansOnPromise(\n                [transactionSpan],\n                [],\n                originCommitPromise\n              );\n            };\n\n            const originalAbort = transaction.abort;\n            transaction.abort = function abort(\n              this: kafkaJs.Transaction,\n              ...args\n            ) {\n              const originAbortPromise = originalAbort.apply(this, args);\n              return instrumentation._endSpansOnPromise(\n                [transactionSpan],\n                [],\n                originAbortPromise\n              );\n            };\n          })\n          .catch(err => {\n            transactionSpan.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err?.message,\n            });\n            transactionSpan.recordException(err);\n            transactionSpan.end();\n          });\n\n        return transactionPromise;\n      };\n    };\n  }\n\n  private _getSendBatchPatch() {\n    const instrumentation = this;\n    return (\n      original: Producer['sendBatch'] | kafkaJs.Transaction['sendBatch']\n    ) => {\n      return function sendBatch(\n        this: kafkaJs.Producer | kafkaJs.Transaction,\n        ...args: Parameters\n      ): ReturnType {\n        const batch = args[0];\n        const messages = batch.topicMessages || [];\n\n        const spans: Span[] = [];\n        const pendingMetrics: RecordPendingMetric[] = [];\n\n        messages.forEach(topicMessage => {\n          topicMessage.messages.forEach(message => {\n            spans.push(\n              instrumentation._startProducerSpan(topicMessage.topic, message)\n            );\n            pendingMetrics.push(\n              prepareCounter(instrumentation._sentMessages, 1, {\n                [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n                [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                [ATTR_MESSAGING_DESTINATION_NAME]: topicMessage.topic,\n                ...(message.partition !== undefined\n                  ? {\n                      [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                        message.partition\n                      ),\n                    }\n                  : {}),\n              })\n            );\n          });\n        });\n        const origSendResult: Promise = original.apply(\n          this,\n          args\n        );\n        return instrumentation._endSpansOnPromise(\n          spans,\n          pendingMetrics,\n          origSendResult\n        );\n      };\n    };\n  }\n\n  private _getSendPatch() {\n    const instrumentation = this;\n    return (original: Producer['send'] | kafkaJs.Transaction['send']) => {\n      return function send(\n        this: Producer | kafkaJs.Transaction,\n        ...args: Parameters\n      ): ReturnType {\n        const record = args[0];\n        const spans: Span[] = record.messages.map(message => {\n          return instrumentation._startProducerSpan(record.topic, message);\n        });\n\n        const pendingMetrics: RecordPendingMetric[] = record.messages.map(m =>\n          prepareCounter(instrumentation._sentMessages, 1, {\n            [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n            [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n            [ATTR_MESSAGING_DESTINATION_NAME]: record.topic,\n            ...(m.partition !== undefined\n              ? {\n                  [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(\n                    m.partition\n                  ),\n                }\n              : {}),\n          })\n        );\n        const origSendResult: Promise = original.apply(\n          this,\n          args\n        );\n        return instrumentation._endSpansOnPromise(\n          spans,\n          pendingMetrics,\n          origSendResult\n        );\n      };\n    };\n  }\n\n  private _endSpansOnPromise(\n    spans: Span[],\n    pendingMetrics: RecordPendingMetric[],\n    sendPromise: Promise\n  ): Promise {\n    return Promise.resolve(sendPromise)\n      .then(result => {\n        pendingMetrics.forEach(m => m());\n        return result;\n      })\n      .catch(reason => {\n        let errorMessage: string | undefined;\n        let errorType: string = ERROR_TYPE_VALUE_OTHER;\n        if (typeof reason === 'string' || reason === undefined) {\n          errorMessage = reason;\n        } else if (\n          typeof reason === 'object' &&\n          Object.prototype.hasOwnProperty.call(reason, 'message')\n        ) {\n          errorMessage = reason.message;\n          errorType = reason.constructor.name;\n        }\n        pendingMetrics.forEach(m => m(errorType));\n\n        spans.forEach(span => {\n          span.setAttribute(ATTR_ERROR_TYPE, errorType);\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: errorMessage,\n          });\n        });\n\n        throw reason;\n      })\n      .finally(() => {\n        spans.forEach(span => span.end());\n      });\n  }\n\n  private _startConsumerSpan({\n    topic,\n    message,\n    operationType,\n    ctx,\n    link,\n    attributes,\n  }: ConsumerSpanOptions) {\n    const operationName =\n      operationType === MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n        ? 'poll' // for batch processing spans\n        : operationType; // for individual message processing spans\n\n    const span = this.tracer.startSpan(\n      `${operationName} ${topic}`,\n      {\n        kind:\n          operationType === MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n            ? SpanKind.CLIENT\n            : SpanKind.CONSUMER,\n        attributes: {\n          ...attributes,\n          [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n          [ATTR_MESSAGING_DESTINATION_NAME]: topic,\n          [ATTR_MESSAGING_OPERATION_TYPE]: operationType,\n          [ATTR_MESSAGING_OPERATION_NAME]: operationName,\n          [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message?.key\n            ? String(message.key)\n            : undefined,\n          [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:\n            message?.key && message.value === null ? true : undefined,\n          [ATTR_MESSAGING_KAFKA_OFFSET]: message?.offset,\n        },\n        links: link ? [link] : [],\n      },\n      ctx\n    );\n\n    const { consumerHook } = this.getConfig();\n    if (consumerHook && message) {\n      safeExecuteInTheMiddle(\n        () => consumerHook(span, { topic, message }),\n        e => {\n          if (e) this._diag.error('consumerHook error', e);\n        },\n        true\n      );\n    }\n\n    return span;\n  }\n\n  private _startProducerSpan(topic: string, message: Message) {\n    const span = this.tracer.startSpan(`send ${topic}`, {\n      kind: SpanKind.PRODUCER,\n      attributes: {\n        [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA,\n        [ATTR_MESSAGING_DESTINATION_NAME]: topic,\n        [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message.key\n          ? String(message.key)\n          : undefined,\n        [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:\n          message.key && message.value === null ? true : undefined,\n        [ATTR_MESSAGING_DESTINATION_PARTITION_ID]:\n          message.partition !== undefined\n            ? String(message.partition)\n            : undefined,\n        [ATTR_MESSAGING_OPERATION_NAME]: 'send',\n        [ATTR_MESSAGING_OPERATION_TYPE]: MESSAGING_OPERATION_TYPE_VALUE_SEND,\n      },\n    });\n\n    message.headers = message.headers ?? {};\n    propagation.inject(trace.setSpan(context.active(), span), message.headers);\n\n    const { producerHook } = this.getConfig();\n    if (producerHook) {\n      safeExecuteInTheMiddle(\n        () => producerHook(span, { topic, message }),\n        e => {\n          if (e) this._diag.error('producerHook error', e);\n        },\n        true\n      );\n    }\n\n    return span;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors, Aspecto\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\nexport { KafkaJsInstrumentation } from './instrumentation';\nexport type {\n  KafkaConsumerCustomAttributeFunction,\n  KafkaJsInstrumentationConfig,\n  KafkaProducerCustomAttributeFunction,\n  KafkajsMessage,\n  MessageInfo,\n} from './types';\n","import { KafkaJsInstrumentation } from '@opentelemetry/instrumentation-kafkajs';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Kafka';\n\nexport const instrumentKafka = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new KafkaJsInstrumentation({\n      consumerHook(span) {\n        addOriginToSpan(span, 'auto.kafkajs.otel.consumer');\n      },\n      producerHook(span) {\n        addOriginToSpan(span, 'auto.kafkajs.otel.producer');\n      },\n    }),\n);\n\nconst _kafkaIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentKafka();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [kafkajs](https://www.npmjs.com/package/kafkajs) library.\n *\n * For more information, see the [`kafkaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/kafka/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.kafkaIntegration()],\n * });\n */\nexport const kafkaIntegration = defineIntegration(_kafkaIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.58.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-lru-memoizer';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context } from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nexport class LruMemoizerInstrumentation extends InstrumentationBase {\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'lru-memoizer',\n        ['>=1.3 <4'],\n        moduleExports => {\n          // moduleExports is a function which receives an options object,\n          // and returns a \"memoizer\" function upon invocation.\n          // We want to patch this \"memoizer's\" internal function\n          const asyncMemoizer = function (this: unknown) {\n            // This following function is invoked every time the user wants to get a (possible) memoized value\n            // We replace it with another function in which we bind the current context to the last argument (callback)\n            const origMemoizer = moduleExports.apply(this, arguments);\n            return function (this: unknown) {\n              const modifiedArguments = [...arguments];\n              // last argument is the callback\n              const origCallback = modifiedArguments.pop();\n              const callbackWithContext =\n                typeof origCallback === 'function'\n                  ? context.bind(context.active(), origCallback)\n                  : origCallback;\n              modifiedArguments.push(callbackWithContext);\n              return origMemoizer.apply(this, modifiedArguments);\n            };\n          };\n\n          // sync function preserves context, but we still need to export it\n          // as the lru-memoizer package does\n          asyncMemoizer.sync = moduleExports.sync;\n          return asyncMemoizer;\n        },\n        undefined // no need to disable as this instrumentation does not create any spans\n      ),\n    ];\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { LruMemoizerInstrumentation } from './instrumentation';\n","import { LruMemoizerInstrumentation } from '@opentelemetry/instrumentation-lru-memoizer';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'LruMemoizer';\n\nexport const instrumentLruMemoizer = generateInstrumentOnce(INTEGRATION_NAME, () => new LruMemoizerInstrumentation());\n\nconst _lruMemoizerIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLruMemoizer();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [lru-memoizer](https://www.npmjs.com/package/lru-memoizer) library.\n *\n * For more information, see the [`lruMemoizerIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/lrumemoizer/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.lruMemoizerIntegration()],\n * });\n */\nexport const lruMemoizerIntegration = defineIntegration(_lruMemoizerIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MongoDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MONGODB = 'mongodb' as const;\n\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE =\n  'db.client.connections.usage' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n  (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n  /**\n   * If true, additional information about query parameters and\n   * results will be attached (as `attributes`) to spans representing\n   * database operations.\n   */\n  enhancedDatabaseReporting?: boolean;\n\n  /**\n   * Hook that allows adding custom span attributes based on the data\n   * returned from MongoDB actions.\n   *\n   * @default undefined\n   */\n  responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n  /**\n   * Custom serializer function for the db.statement tag\n   */\n  dbStatementSerializer?: DbStatementSerializer;\n}\n\nexport type Func = (...args: unknown[]) => T;\nexport type MongoInternalCommand = {\n  findandmodify: boolean;\n  createIndexes: boolean;\n  count: boolean;\n  aggregate: boolean;\n  ismaster: boolean;\n  indexes?: unknown[];\n  query?: Record;\n  limit?: number;\n  q?: Record;\n  u?: Record;\n};\n\nexport type ServerSession = {\n  id: any;\n  lastUse: number;\n  txnNumber: number;\n  isDirty: boolean;\n};\n\nexport type CursorState = { cmd: MongoInternalCommand } & Record<\n  string,\n  unknown\n>;\n\nexport interface MongoResponseHookInformation {\n  data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n  result?: unknown;\n  connection?: unknown;\n  message?: unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/wireprotocol/index.js\nexport type WireProtocolInternal = {\n  insert: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  update: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  remove: (\n    server: MongoInternalTopology,\n    ns: string,\n    ops: unknown[],\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  killCursors: (\n    server: MongoInternalTopology,\n    ns: string,\n    cursorState: CursorState,\n    callback: Function\n  ) => unknown;\n  getMore: (\n    server: MongoInternalTopology,\n    ns: string,\n    cursorState: CursorState,\n    batchSize: number,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  query: (\n    server: MongoInternalTopology,\n    ns: string,\n    cmd: MongoInternalCommand,\n    cursorState: CursorState,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n  command: (\n    server: MongoInternalTopology,\n    ns: string,\n    cmd: MongoInternalCommand,\n    options: unknown | Function,\n    callback?: Function\n  ) => unknown;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/topologies/server.js#L172\n// https://github.com/mongodb/node-mongodb-native/blob/2.2/lib/server.js#L174\nexport type MongoInternalTopology = {\n  s?: {\n    // those are for mongodb@3\n    options?: {\n      host?: string;\n      port?: number;\n      servername?: string;\n    };\n    // those are for mongodb@2\n    host?: string;\n    port?: number;\n  };\n  // mongodb@3 with useUnifiedTopology option\n  description?: {\n    address?: string;\n  };\n};\n\nexport enum MongodbCommandType {\n  CREATE_INDEXES = 'createIndexes',\n  FIND_AND_MODIFY = 'findAndModify',\n  IS_MASTER = 'isMaster',\n  COUNT = 'count',\n  AGGREGATE = 'aggregate',\n  UNKNOWN = 'unknown',\n}\n\n// https://github.com/mongodb/js-bson/blob/main/src/bson.ts\nexport type Document = {\n  [key: string]: any;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/utils.ts#L281\nexport interface MongodbNamespace {\n  db: string;\n  collection?: string;\n}\n\nexport type V4Connection = {\n  command: Function;\n  // From version 6.4.0 the method does not expect a callback and returns a promise\n  // https://github.com/mongodb/node-mongodb-native/blob/v6.4.2/src/cmap/connection.ts\n  commandPromise(\n    ns: MongodbNamespace,\n    cmd: Document,\n    options: undefined | unknown,\n    // From v6.6.0 we have this new param which is a constructor function\n    // https://github.com/mongodb/node-mongodb-native/blob/v6.6.0/src/cmap/connection.ts#L588\n    responseType: undefined | unknown\n  ): Promise;\n  // Earlier versions expect a callback param and return void\n  // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection.ts\n  commandCallback(\n    ns: MongodbNamespace,\n    cmd: Document,\n    options: undefined | unknown,\n    callback: any\n  ): void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection_pool.ts\nexport type V4ConnectionPool = {\n  // Instrumentation just cares about carrying the async context so\n  // types of callback params are not needed\n  checkOut: (callback: (error: any, connection: any) => void) => void;\n};\n\nexport type V4Connect = {\n  connect: Function;\n  // From version 6.4.0 the method does not expect a callback and returns a promise\n  // https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/cmap/connect.ts\n  connectPromise: (options: any) => Promise;\n  // Earlier versions expect a callback param and return void\n  // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connect.ts\n  connectCallback: (options: any, callback: any) => void;\n};\n\n// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/sessions.ts\nexport type V4Session = {\n  acquire: () => ServerSession;\n  release: (session: ServerSession) => void;\n};\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#replacer\n */\nexport type Replacer = (key: string, value: unknown) => unknown;\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.67.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mongodb';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  context,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  UpDownCounter,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_MONGODB_COLLECTION,\n  ATTR_DB_NAME,\n  ATTR_DB_OPERATION,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_NAME_VALUE_MONGODB,\n  DB_SYSTEM_VALUE_MONGODB,\n  METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport { MongoDBInstrumentationConfig, CommandResult } from './types';\nimport {\n  CursorState,\n  ServerSession,\n  MongodbCommandType,\n  MongoInternalCommand,\n  MongodbNamespace,\n  MongoInternalTopology,\n  WireProtocolInternal,\n  V4Connection,\n  V4ConnectionPool,\n  Replacer,\n} from './internal-types';\nimport { V4Connect, V4Session } from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst DEFAULT_CONFIG: MongoDBInstrumentationConfig = {\n  requireParentSpan: true,\n};\n\n/** mongodb instrumentation plugin for OpenTelemetry */\nexport class MongoDBInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n  declare private _connectionsUsage: UpDownCounter;\n  declare private _poolName: string;\n\n  constructor(config: MongoDBInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: MongoDBInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  override _updateMetricInstruments() {\n    this._connectionsUsage = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  /**\n   * Convenience function for updating the `db.client.connections.usage` metric.\n   * The name \"count\" comes from the eventual replacement for this metric per\n   * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n   */\n  private _connCountAdd(n: number, poolName: string, state: string) {\n    this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n  }\n\n  init() {\n    const {\n      v3PatchConnection: v3PatchConnection,\n      v3UnpatchConnection: v3UnpatchConnection,\n    } = this._getV3ConnectionPatches();\n\n    const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n    const {\n      v4PatchConnectionCallback,\n      v4PatchConnectionPromise,\n      v4UnpatchConnection,\n    } = this._getV4ConnectionPatches();\n    const { v4PatchConnectionPool, v4UnpatchConnectionPool } =\n      this._getV4ConnectionPoolPatches();\n    const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mongodb',\n        ['>=3.3.0 <4'],\n        undefined,\n        undefined,\n        [\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/core/wireprotocol/index.js',\n            ['>=3.3.0 <4'],\n            v3PatchConnection,\n            v3UnpatchConnection\n          ),\n        ]\n      ),\n      new InstrumentationNodeModuleDefinition(\n        'mongodb',\n        ['>=4.0.0 <8'],\n        undefined,\n        undefined,\n        [\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection.js',\n            ['>=4.0.0 <6.4'],\n            v4PatchConnectionCallback,\n            v4UnpatchConnection\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection.js',\n            ['>=6.4.0 <8'],\n            v4PatchConnectionPromise,\n            v4UnpatchConnection\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connection_pool.js',\n            ['>=4.0.0 <6.4'],\n            v4PatchConnectionPool,\n            v4UnpatchConnectionPool\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/cmap/connect.js',\n            ['>=4.0.0 <8'],\n            v4PatchConnect,\n            v4UnpatchConnect\n          ),\n          new InstrumentationNodeModuleFile(\n            'mongodb/lib/sessions.js',\n            ['>=4.0.0 <8'],\n            v4PatchSessions,\n            v4UnpatchSessions\n          ),\n        ]\n      ),\n    ];\n  }\n\n  private _getV3ConnectionPatches() {\n    return {\n      v3PatchConnection: (moduleExports: T) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.insert)) {\n          this._unwrap(moduleExports, 'insert');\n        }\n        this._wrap(\n          moduleExports,\n          'insert',\n          this._getV3PatchOperation('insert')\n        );\n        // patch remove operation\n        if (isWrapped(moduleExports.remove)) {\n          this._unwrap(moduleExports, 'remove');\n        }\n        this._wrap(\n          moduleExports,\n          'remove',\n          this._getV3PatchOperation('remove')\n        );\n        // patch update operation\n        if (isWrapped(moduleExports.update)) {\n          this._unwrap(moduleExports, 'update');\n        }\n        this._wrap(\n          moduleExports,\n          'update',\n          this._getV3PatchOperation('update')\n        );\n        // patch other command\n        if (isWrapped(moduleExports.command)) {\n          this._unwrap(moduleExports, 'command');\n        }\n        this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n        // patch query\n        if (isWrapped(moduleExports.query)) {\n          this._unwrap(moduleExports, 'query');\n        }\n        this._wrap(moduleExports, 'query', this._getV3PatchFind());\n        // patch get more operation on cursor\n        if (isWrapped(moduleExports.getMore)) {\n          this._unwrap(moduleExports, 'getMore');\n        }\n        this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n        return moduleExports;\n      },\n      v3UnpatchConnection: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n        this._unwrap(moduleExports, 'insert');\n        this._unwrap(moduleExports, 'remove');\n        this._unwrap(moduleExports, 'update');\n        this._unwrap(moduleExports, 'command');\n        this._unwrap(moduleExports, 'query');\n        this._unwrap(moduleExports, 'getMore');\n      },\n    };\n  }\n\n  private _getV4SessionsPatches() {\n    return {\n      v4PatchSessions: (moduleExports: any) => {\n        if (isWrapped(moduleExports.acquire)) {\n          this._unwrap(moduleExports, 'acquire');\n        }\n        this._wrap(\n          moduleExports.ServerSessionPool.prototype,\n          'acquire',\n          this._getV4AcquireCommand()\n        );\n\n        if (isWrapped(moduleExports.release)) {\n          this._unwrap(moduleExports, 'release');\n        }\n        this._wrap(\n          moduleExports.ServerSessionPool.prototype,\n          'release',\n          this._getV4ReleaseCommand()\n        );\n        return moduleExports;\n      },\n      v4UnpatchSessions: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n        if (isWrapped(moduleExports.acquire)) {\n          this._unwrap(moduleExports, 'acquire');\n        }\n        if (isWrapped(moduleExports.release)) {\n          this._unwrap(moduleExports, 'release');\n        }\n      },\n    };\n  }\n\n  private _getV4AcquireCommand() {\n    const instrumentation = this;\n    return (original: V4Session['acquire']) => {\n      return function patchAcquire(this: any) {\n        const nSessionsBeforeAcquire = this.sessions.length;\n        const session = original.call(this);\n        const nSessionsAfterAcquire = this.sessions.length;\n\n        if (nSessionsBeforeAcquire === nSessionsAfterAcquire) {\n          //no session in the pool. a new session was created and used\n          instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n        } else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) {\n          //a session was already in the pool. remove it from the pool and use it.\n          instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n          instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n        }\n        return session;\n      };\n    };\n  }\n\n  private _getV4ReleaseCommand() {\n    const instrumentation = this;\n    return (original: V4Session['release']) => {\n      return function patchRelease(this: any, session: ServerSession) {\n        const cmdPromise = original.call(this, session);\n\n        instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n        instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n        return cmdPromise;\n      };\n    };\n  }\n\n  private _getV4ConnectionPoolPatches() {\n    return {\n      v4PatchConnectionPool: (moduleExports: any) => {\n        const poolPrototype = moduleExports.ConnectionPool.prototype;\n\n        if (isWrapped(poolPrototype.checkOut)) {\n          this._unwrap(poolPrototype, 'checkOut');\n        }\n\n        this._wrap(\n          poolPrototype,\n          'checkOut',\n          this._getV4ConnectionPoolCheckOut()\n        );\n        return moduleExports;\n      },\n      v4UnpatchConnectionPool: (moduleExports?: any) => {\n        if (moduleExports === undefined) return;\n\n        this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n      },\n    };\n  }\n\n  private _getV4ConnectPatches() {\n    return {\n      v4PatchConnect: (moduleExports: any) => {\n        if (isWrapped(moduleExports.connect)) {\n          this._unwrap(moduleExports, 'connect');\n        }\n\n        this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n        return moduleExports;\n      },\n      v4UnpatchConnect: (moduleExports?: T) => {\n        if (moduleExports === undefined) return;\n\n        this._unwrap(moduleExports, 'connect');\n      },\n    };\n  }\n\n  // This patch will become unnecessary once\n  // https://jira.mongodb.org/browse/NODE-5639 is done.\n  private _getV4ConnectionPoolCheckOut() {\n    return (original: V4ConnectionPool['checkOut']) => {\n      return function patchedCheckout(this: unknown, callback: any) {\n        const patchedCallback = context.bind(context.active(), callback);\n        return original.call(this, patchedCallback);\n      };\n    };\n  }\n\n  private _getV4ConnectCommand() {\n    const instrumentation = this;\n\n    return (\n      original: V4Connect['connectCallback'] | V4Connect['connectPromise']\n    ) => {\n      return function patchedConnect(\n        this: unknown,\n        options: any,\n        callback: any\n      ) {\n        // from v6.4 `connect` method only accepts an options param and returns a promise\n        // with the connection\n        if (original.length === 1) {\n          const result = (original as V4Connect['connectPromise']).call(\n            this,\n            options\n          );\n          if (result && typeof result.then === 'function') {\n            result.then(\n              () => instrumentation.setPoolName(options),\n              // this handler is set to pass the lint rules\n              () => undefined\n            );\n          }\n          return result;\n        }\n\n        // Earlier versions expects a callback param and return void\n        const patchedCallback = function (err: any, conn: any) {\n          if (err || !conn) {\n            callback(err, conn);\n            return;\n          }\n          instrumentation.setPoolName(options);\n          callback(err, conn);\n        };\n\n        return (original as V4Connect['connectCallback']).call(\n          this,\n          options,\n          patchedCallback\n        );\n      };\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  private _getV4ConnectionPatches() {\n    return {\n      v4PatchConnectionCallback: (moduleExports: any) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.Connection.prototype.command)) {\n          this._unwrap(moduleExports.Connection.prototype, 'command');\n        }\n\n        this._wrap(\n          moduleExports.Connection.prototype,\n          'command',\n          this._getV4PatchCommandCallback()\n        );\n        return moduleExports;\n      },\n      v4PatchConnectionPromise: (moduleExports: any) => {\n        // patch insert operation\n        if (isWrapped(moduleExports.Connection.prototype.command)) {\n          this._unwrap(moduleExports.Connection.prototype, 'command');\n        }\n\n        this._wrap(\n          moduleExports.Connection.prototype,\n          'command',\n          this._getV4PatchCommandPromise()\n        );\n        return moduleExports;\n      },\n      v4UnpatchConnection: (moduleExports?: any) => {\n        if (moduleExports === undefined) return;\n        this._unwrap(moduleExports.Connection.prototype, 'command');\n      },\n    };\n  }\n\n  /** Creates spans for common operations */\n  private _getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n    const instrumentation = this;\n    return (original: WireProtocolInternal[typeof operationName]) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        ops: unknown[],\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof ops !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, ops, options);\n          } else {\n            return original.call(this, server, ns, ops, options, callback);\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          ops[0] as any,\n          operationName\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(this, server, ns, ops, patchedCallback);\n        } else {\n          return original.call(this, server, ns, ops, options, patchedCallback);\n        }\n      };\n    };\n  }\n\n  /** Creates spans for command operation */\n  private _getV3PatchCommand() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['command']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cmd: MongoInternalCommand,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof cmd !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, cmd, options);\n          } else {\n            return original.call(this, server, ns, cmd, options, callback);\n          }\n        }\n\n        const commandType = MongoDBInstrumentation._getCommandType(cmd);\n        const operationName =\n          commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cmd,\n          operationName\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(this, server, ns, cmd, patchedCallback);\n        } else {\n          return original.call(this, server, ns, cmd, options, patchedCallback);\n        }\n      };\n    };\n  }\n\n  /** Creates spans for command operation */\n  private _getV4PatchCommandCallback() {\n    const instrumentation = this;\n    return (original: V4Connection['commandCallback']) => {\n      return function patchedV4ServerCommand(\n        this: any,\n        ns: MongodbNamespace,\n        cmd: any,\n        options: undefined | unknown,\n        callback: any\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n        const resultHandler = callback;\n        const commandType = Object.keys(cmd)[0];\n\n        if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n          return original.call(this, ns, cmd, options, callback);\n        }\n\n        let span = undefined;\n        if (!skipInstrumentation) {\n          const attributes = instrumentation._getV4SpanAttributes(\n            this,\n            ns,\n            cmd,\n            commandType\n          );\n          const spanName = instrumentation._spanNameFromAttrs(attributes);\n          span = instrumentation.tracer.startSpan(spanName, {\n            kind: SpanKind.CLIENT,\n            attributes,\n          });\n        }\n        const patchedCallback = instrumentation._patchEnd(\n          span,\n          resultHandler,\n          this.id,\n          commandType\n        );\n\n        return original.call(this, ns, cmd, options, patchedCallback);\n      };\n    };\n  }\n\n  private _getV4PatchCommandPromise() {\n    const instrumentation = this;\n    return (original: V4Connection['commandPromise']) => {\n      return function patchedV4ServerCommand(\n        this: any,\n        ...args: Parameters\n      ) {\n        const [ns, cmd] = args;\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const commandType = Object.keys(cmd)[0];\n        const resultHandler = () => undefined;\n\n        if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n          return original.apply(this, args);\n        }\n\n        let span = undefined;\n        if (!skipInstrumentation) {\n          const attributes = instrumentation._getV4SpanAttributes(\n            this,\n            ns,\n            cmd,\n            commandType\n          );\n          const spanName = instrumentation._spanNameFromAttrs(attributes);\n          span = instrumentation.tracer.startSpan(spanName, {\n            kind: SpanKind.CLIENT,\n            attributes,\n          });\n        }\n\n        const patchedCallback = instrumentation._patchEnd(\n          span,\n          resultHandler,\n          this.id,\n          commandType\n        );\n\n        const result = original.apply(this, args);\n        result.then(\n          (res: any) => patchedCallback(null, res),\n          (err: any) => patchedCallback(err)\n        );\n\n        return result;\n      };\n    };\n  }\n\n  /** Creates spans for find operation */\n  private _getV3PatchFind() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['query']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cmd: MongoInternalCommand,\n        cursorState: CursorState,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (\n          skipInstrumentation ||\n          typeof resultHandler !== 'function' ||\n          typeof cmd !== 'object'\n        ) {\n          if (typeof options === 'function') {\n            return original.call(this, server, ns, cmd, cursorState, options);\n          } else {\n            return original.call(\n              this,\n              server,\n              ns,\n              cmd,\n              cursorState,\n              options,\n              callback\n            );\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cmd,\n          'find'\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(\n            this,\n            server,\n            ns,\n            cmd,\n            cursorState,\n            patchedCallback\n          );\n        } else {\n          return original.call(\n            this,\n            server,\n            ns,\n            cmd,\n            cursorState,\n            options,\n            patchedCallback\n          );\n        }\n      };\n    };\n  }\n\n  /** Creates spans for find operation */\n  private _getV3PatchCursor() {\n    const instrumentation = this;\n    return (original: WireProtocolInternal['getMore']) => {\n      return function patchedServerCommand(\n        this: unknown,\n        server: MongoInternalTopology,\n        ns: string,\n        cursorState: CursorState,\n        batchSize: number,\n        options: unknown | Function,\n        callback?: Function\n      ) {\n        const currentSpan = trace.getSpan(context.active());\n        const skipInstrumentation =\n          instrumentation._checkSkipInstrumentation(currentSpan);\n\n        const resultHandler =\n          typeof options === 'function' ? options : callback;\n\n        if (skipInstrumentation || typeof resultHandler !== 'function') {\n          if (typeof options === 'function') {\n            return original.call(\n              this,\n              server,\n              ns,\n              cursorState,\n              batchSize,\n              options\n            );\n          } else {\n            return original.call(\n              this,\n              server,\n              ns,\n              cursorState,\n              batchSize,\n              options,\n              callback\n            );\n          }\n        }\n\n        const attributes = instrumentation._getV3SpanAttributes(\n          ns,\n          server,\n          cursorState.cmd,\n          'getMore'\n        );\n        const spanName = instrumentation._spanNameFromAttrs(attributes);\n        const span = instrumentation.tracer.startSpan(spanName, {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n        // handle when options is the callback to send the correct number of args\n        if (typeof options === 'function') {\n          return original.call(\n            this,\n            server,\n            ns,\n            cursorState,\n            batchSize,\n            patchedCallback\n          );\n        } else {\n          return original.call(\n            this,\n            server,\n            ns,\n            cursorState,\n            batchSize,\n            options,\n            patchedCallback\n          );\n        }\n      };\n    };\n  }\n\n  /**\n   * Get the mongodb command type from the object.\n   * @param command Internal mongodb command object\n   */\n  private static _getCommandType(\n    command: MongoInternalCommand\n  ): MongodbCommandType {\n    if (command.createIndexes !== undefined) {\n      return MongodbCommandType.CREATE_INDEXES;\n    } else if (command.findandmodify !== undefined) {\n      return MongodbCommandType.FIND_AND_MODIFY;\n    } else if (command.ismaster !== undefined) {\n      return MongodbCommandType.IS_MASTER;\n    } else if (command.count !== undefined) {\n      return MongodbCommandType.COUNT;\n    } else if (command.aggregate !== undefined) {\n      return MongodbCommandType.AGGREGATE;\n    } else {\n      return MongodbCommandType.UNKNOWN;\n    }\n  }\n\n  /**\n   * Determine a span's attributes by fetching related metadata from the context\n   * @param connectionCtx mongodb internal connection context\n   * @param ns mongodb namespace\n   * @param command mongodb internal representation of a command\n   */\n  private _getV4SpanAttributes(\n    connectionCtx: any,\n    ns: MongodbNamespace,\n    command?: any,\n    operation?: string\n  ): Attributes {\n    let host, port: undefined | string;\n    if (connectionCtx) {\n      const hostParts =\n        typeof connectionCtx.address === 'string'\n          ? connectionCtx.address.split(':')\n          : '';\n      if (hostParts.length === 2) {\n        host = hostParts[0];\n        port = hostParts[1];\n      }\n    }\n    // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n    let commandObj: Record;\n    if (command?.documents && command.documents[0]) {\n      commandObj = command.documents[0];\n    } else if (command?.cursors) {\n      commandObj = command.cursors;\n    } else {\n      commandObj = command;\n    }\n\n    return this._getSpanAttributes(\n      ns.db,\n      ns.collection,\n      host,\n      port,\n      commandObj,\n      operation\n    );\n  }\n\n  /**\n   * Determine a span's attributes by fetching related metadata from the context\n   * @param ns mongodb namespace\n   * @param topology mongodb internal representation of the network topology\n   * @param command mongodb internal representation of a command\n   */\n  private _getV3SpanAttributes(\n    ns: string,\n    topology: MongoInternalTopology,\n    command?: MongoInternalCommand,\n    operation?: string | undefined\n  ): Attributes {\n    // Extract host/port info.\n    let host: undefined | string;\n    let port: undefined | string;\n    if (topology && topology.s) {\n      host = topology.s.options?.host ?? topology.s.host;\n      port = (topology.s.options?.port ?? topology.s.port)?.toString();\n      if (host == null || port == null) {\n        const address = topology.description?.address;\n        if (address) {\n          const addressSegments = address.split(':');\n          host = addressSegments[0];\n          port = addressSegments[1];\n        }\n      }\n    }\n\n    // The namespace is a combination of the database name and the name of the\n    // collection or index, like so: [database-name].[collection-or-index-name].\n    // It could be a string or an instance of MongoDBNamespace, as such we\n    // always coerce to a string to extract db and collection.\n    const [dbName, dbCollection] = ns.toString().split('.');\n    // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n    const commandObj = command?.query ?? command?.q ?? command;\n\n    return this._getSpanAttributes(\n      dbName,\n      dbCollection,\n      host,\n      port,\n      commandObj,\n      operation\n    );\n  }\n\n  private _getSpanAttributes(\n    dbName?: string,\n    dbCollection?: string,\n    host?: undefined | string,\n    port?: undefined | string,\n    commandObj?: any,\n    operation?: string | undefined\n  ): Attributes {\n    const attributes: Attributes = {};\n\n    if (this._dbSemconvStability & SemconvStability.OLD) {\n      attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MONGODB;\n      attributes[ATTR_DB_NAME] = dbName;\n      attributes[ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n      attributes[ATTR_DB_OPERATION] = operation;\n      attributes[ATTR_DB_CONNECTION_STRING] =\n        `mongodb://${host}:${port}/${dbName}`;\n    }\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB;\n      attributes[ATTR_DB_NAMESPACE] = dbName;\n      attributes[ATTR_DB_OPERATION_NAME] = operation;\n      attributes[ATTR_DB_COLLECTION_NAME] = dbCollection;\n    }\n\n    if (host && port) {\n      if (this._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n      }\n      if (this._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n      }\n      const portNumber = parseInt(port, 10);\n      if (!isNaN(portNumber)) {\n        if (this._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_PORT] = portNumber;\n        }\n        if (this._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_PORT] = portNumber;\n        }\n      }\n    }\n\n    if (commandObj) {\n      const { dbStatementSerializer: configDbStatementSerializer } =\n        this.getConfig();\n      const dbStatementSerializer =\n        typeof configDbStatementSerializer === 'function'\n          ? configDbStatementSerializer\n          : this._defaultDbStatementSerializer.bind(this);\n\n      safeExecuteInTheMiddle(\n        () => {\n          const query = dbStatementSerializer(commandObj);\n          if (this._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = query;\n          }\n          if (this._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = query;\n          }\n        },\n        err => {\n          if (err) {\n            this._diag.error('Error running dbStatementSerializer hook', err);\n          }\n        },\n        true\n      );\n    }\n\n    return attributes;\n  }\n\n  private _spanNameFromAttrs(attributes: Attributes): string {\n    let spanName;\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n      spanName =\n        [\n          attributes[ATTR_DB_OPERATION_NAME],\n          attributes[ATTR_DB_COLLECTION_NAME],\n        ]\n          .filter(attr => attr)\n          .join(' ') || DB_SYSTEM_NAME_VALUE_MONGODB;\n    } else {\n      spanName = `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`;\n    }\n    return spanName;\n  }\n\n  private _getDefaultDbStatementReplacer(): Replacer {\n    const seen = new WeakSet();\n    return (_key, value) => {\n      // undefined, boolean, number, bigint, string, symbol, function || null\n      if (typeof value !== 'object' || !value) return '?';\n\n      // objects (including arrays)\n      if (seen.has(value)) return '[Circular]';\n      seen.add(value);\n      return value;\n    };\n  }\n\n  private _defaultDbStatementSerializer(commandObj: Record) {\n    const { enhancedDatabaseReporting } = this.getConfig();\n\n    if (enhancedDatabaseReporting) {\n      return JSON.stringify(commandObj);\n    }\n\n    return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n  }\n\n  /**\n   * Triggers the response hook in case it is defined.\n   * @param span The span to add the results to.\n   * @param result The command result\n   */\n  private _handleExecutionResult(span: Span, result: CommandResult) {\n    const { responseHook } = this.getConfig();\n    if (typeof responseHook === 'function') {\n      safeExecuteInTheMiddle(\n        () => {\n          responseHook(span, { data: result });\n        },\n        err => {\n          if (err) {\n            this._diag.error('Error running response hook', err);\n          }\n        },\n        true\n      );\n    }\n  }\n\n  /**\n   * Ends a created span.\n   * @param span The created span to end.\n   * @param resultHandler A callback function.\n   * @param connectionId: The connection ID of the Command response.\n   */\n  private _patchEnd(\n    span: Span | undefined,\n    resultHandler: Function,\n    connectionId?: number,\n    commandType?: string\n  ): Function {\n    // mongodb is using \"tick\" when calling a callback, this way the context\n    // in final callback (resultHandler) is lost\n    const activeContext = context.active();\n    const instrumentation = this;\n    let spanEnded = false;\n\n    return function patchedEnd(this: {}, ...args: unknown[]) {\n      if (!spanEnded) {\n        spanEnded = true;\n        const error = args[0];\n        if (span) {\n          if (error instanceof Error) {\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } else {\n            const result = args[1] as CommandResult;\n            instrumentation._handleExecutionResult(span, result);\n          }\n          span.end();\n        }\n\n        if (commandType === 'endSessions') {\n          instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n        }\n      }\n\n      return context.with(activeContext, () => {\n        return resultHandler.apply(this, args);\n      });\n    };\n  }\n  private setPoolName(options: any) {\n    const host = options.hostAddress?.host;\n    const port = options.hostAddress?.port;\n    const database = options.dbName;\n    const poolName = `mongodb://${host}:${port}/${database}`;\n    this._poolName = poolName;\n  }\n\n  private _checkSkipInstrumentation(currentSpan: Span | undefined) {\n    const requireParentSpan = this.getConfig().requireParentSpan;\n    const hasNoParentSpan = currentSpan === undefined;\n    return requireParentSpan === true && hasNoParentSpan;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { Span } from '@opentelemetry/api';\n\nexport interface MongoDBInstrumentationExecutionResponseHook {\n  (span: Span, responseInfo: MongoResponseHookInformation): void;\n}\n\n/**\n * Function that can be used to serialize db.statement tag\n * @param cmd - MongoDB command object\n *\n * @returns serialized string that will be used as the db.statement attribute.\n */\nexport type DbStatementSerializer = (cmd: Record) => string;\n\nexport interface MongoDBInstrumentationConfig extends InstrumentationConfig {\n  /**\n   * If true, additional information about query parameters and\n   * results will be attached (as `attributes`) to spans representing\n   * database operations.\n   */\n  enhancedDatabaseReporting?: boolean;\n\n  /**\n   * Hook that allows adding custom span attributes based on the data\n   * returned from MongoDB actions.\n   *\n   * @default undefined\n   */\n  responseHook?: MongoDBInstrumentationExecutionResponseHook;\n\n  /**\n   * Custom serializer function for the db.statement tag\n   */\n  dbStatementSerializer?: DbStatementSerializer;\n\n  /**\n   * Require parent to create mongodb span, default when unset is true\n   */\n  requireParentSpan?: boolean;\n}\n\nexport interface MongoResponseHookInformation {\n  data: CommandResult;\n}\n\n// https://github.com/mongodb/node-mongodb-native/blob/3.6/lib/core/connection/command_result.js\nexport type CommandResult = {\n  result?: unknown;\n  connection?: unknown;\n  message?: unknown;\n};\n\nexport enum MongodbCommandType {\n  CREATE_INDEXES = 'createIndexes',\n  FIND_AND_MODIFY = 'findAndModify',\n  IS_MASTER = 'isMaster',\n  COUNT = 'count',\n  UNKNOWN = 'unknown',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MongoDBInstrumentation } from './instrumentation';\nexport { MongodbCommandType } from './types';\nexport type {\n  CommandResult,\n  DbStatementSerializer,\n  MongoDBInstrumentationConfig,\n  MongoDBInstrumentationExecutionResponseHook,\n  MongoResponseHookInformation,\n} from './types';\n","import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongo';\n\nexport const instrumentMongo = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MongoDBInstrumentation({\n      dbStatementSerializer: _defaultDbStatementSerializer,\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mongo');\n      },\n    }),\n);\n\n/**\n * Replaces values in document with '?', hiding PII and helping grouping.\n */\nexport function _defaultDbStatementSerializer(commandObj: Record): string {\n  const resultObj = _scrubStatement(commandObj);\n  return JSON.stringify(resultObj);\n}\n\nfunction _scrubStatement(value: unknown): unknown {\n  if (Array.isArray(value)) {\n    return value.map(element => _scrubStatement(element));\n  }\n\n  if (isCommandObj(value)) {\n    const initial: Record = {};\n    return Object.entries(value)\n      .map(([key, element]) => [key, _scrubStatement(element)])\n      .reduce((prev, current) => {\n        if (isCommandEntry(current)) {\n          prev[current[0]] = current[1];\n        }\n        return prev;\n      }, initial);\n  }\n\n  // A value like string or number, possible contains PII, scrub it\n  return '?';\n}\n\nfunction isCommandObj(value: Record | unknown): value is Record {\n  return typeof value === 'object' && value !== null && !isBuffer(value);\n}\n\nfunction isBuffer(value: unknown): boolean {\n  let isBuffer = false;\n  if (typeof Buffer !== 'undefined') {\n    isBuffer = Buffer.isBuffer(value);\n  }\n  return isBuffer;\n}\n\nfunction isCommandEntry(value: [string, unknown] | unknown): value is [string, unknown] {\n  return Array.isArray(value);\n}\n\nconst _mongoIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMongo();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongodb](https://www.npmjs.com/package/mongodb) library.\n *\n * For more information, see the [`mongoIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongo/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mongoIntegration()],\n * });\n * ```\n */\nexport const mongoIntegration = defineIntegration(_mongoIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Attributes, SpanStatusCode, diag, Span } from '@opentelemetry/api';\nimport type { Collection } from 'mongoose';\nimport { MongooseResponseCustomAttributesFunction } from './types';\nimport {\n  safeExecuteInTheMiddle,\n  SemconvStability,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_MONGODB_COLLECTION,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\n\nexport function getAttributesFromCollection(\n  collection: Collection,\n  dbSemconvStability: SemconvStability,\n  netSemconvStability: SemconvStability\n): Attributes {\n  const attrs: Attributes = {};\n\n  if (dbSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_DB_MONGODB_COLLECTION] = collection.name;\n    attrs[ATTR_DB_NAME] = collection.conn.name;\n    attrs[ATTR_DB_USER] = collection.conn.user;\n  }\n  if (dbSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_DB_COLLECTION_NAME] = collection.name;\n    attrs[ATTR_DB_NAMESPACE] = collection.conn.name;\n    // db.user has no stable replacement\n  }\n\n  if (netSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_NET_PEER_NAME] = collection.conn.host;\n    attrs[ATTR_NET_PEER_PORT] = collection.conn.port;\n  }\n  if (netSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_SERVER_ADDRESS] = collection.conn.host;\n    attrs[ATTR_SERVER_PORT] = collection.conn.port;\n  }\n\n  return attrs;\n}\n\nfunction setErrorStatus(span: Span, error: any = {}) {\n  span.recordException(error);\n\n  span.setStatus({\n    code: SpanStatusCode.ERROR,\n    message: `${error.message} ${\n      error.code ? `\\nMongoose Error Code: ${error.code}` : ''\n    }`,\n  });\n}\n\nfunction applyResponseHook(\n  span: Span,\n  response: any,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n) {\n  if (!responseHook) {\n    return;\n  }\n\n  safeExecuteInTheMiddle(\n    () => responseHook(span, { moduleVersion, response }),\n    e => {\n      if (e) {\n        diag.error('mongoose instrumentation: responseHook error', e);\n      }\n    },\n    true\n  );\n}\n\nexport function handlePromiseResponse(\n  execResponse: any,\n  span: Span,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n): any {\n  if (!(execResponse instanceof Promise)) {\n    applyResponseHook(span, execResponse, responseHook, moduleVersion);\n    span.end();\n    return execResponse;\n  }\n\n  return execResponse\n    .then(response => {\n      applyResponseHook(span, response, responseHook, moduleVersion);\n      return response;\n    })\n    .catch(err => {\n      setErrorStatus(span, err);\n      throw err;\n    })\n    .finally(() => span.end());\n}\n\nexport function handleCallbackResponse(\n  callback: Function,\n  exec: Function,\n  originalThis: any,\n  span: Span,\n  args: IArguments,\n  responseHook?: MongooseResponseCustomAttributesFunction,\n  moduleVersion: string | undefined = undefined\n) {\n  let callbackArgumentIndex = 0;\n  if (args.length === 2) {\n    callbackArgumentIndex = 1;\n  } else if (args.length === 3) {\n    callbackArgumentIndex = 2;\n  }\n\n  args[callbackArgumentIndex] = (err: Error, response: any): any => {\n    if (err) {\n      setErrorStatus(span, err);\n    } else {\n      applyResponseHook(span, response, responseHook, moduleVersion);\n    }\n\n    span.end();\n    return callback!(err, response);\n  };\n\n  return exec.apply(originalThis, args);\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { context, Span, trace, Attributes, SpanKind } from '@opentelemetry/api';\nimport { suppressTracing } from '@opentelemetry/core';\nimport type * as mongoose from 'mongoose';\nimport { MongooseInstrumentationConfig, SerializerPayload } from './types';\nimport {\n  handleCallbackResponse,\n  handlePromiseResponse,\n  getAttributesFromCollection,\n} from './utils';\nimport {\n  InstrumentationBase,\n  InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  ATTR_DB_OPERATION,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  DB_SYSTEM_NAME_VALUE_MONGODB,\n} from './semconv';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n} from '@opentelemetry/semantic-conventions';\n\nconst contextCaptureFunctionsCommon = [\n  'deleteOne',\n  'deleteMany',\n  'find',\n  'findOne',\n  'estimatedDocumentCount',\n  'countDocuments',\n  'distinct',\n  'where',\n  '$where',\n  'findOneAndUpdate',\n  'findOneAndDelete',\n  'findOneAndReplace',\n];\n\nconst contextCaptureFunctions6 = [\n  'remove',\n  'count',\n  'findOneAndRemove',\n  ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions7 = [\n  'count',\n  'findOneAndRemove',\n  ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\n\nfunction getContextCaptureFunctions(\n  moduleVersion: string | undefined\n): string[] {\n  /* istanbul ignore next */\n  if (!moduleVersion) {\n    return contextCaptureFunctionsCommon;\n  } else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n    return contextCaptureFunctions6;\n  } else if (moduleVersion.startsWith('7.')) {\n    return contextCaptureFunctions7;\n  } else {\n    return contextCaptureFunctions8;\n  }\n}\n\nfunction instrumentRemove(moduleVersion: string | undefined): boolean {\n  return (\n    (moduleVersion &&\n      (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) ||\n    false\n  );\n}\n\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion: string | undefined): boolean {\n  if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n    return false;\n  }\n\n  const minor = parseInt(moduleVersion.split('.')[1], 10);\n  return minor >= 21;\n}\n\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexport const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span');\n\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexport const _ALREADY_INSTRUMENTED: unique symbol = Symbol(\n  'already-instrumented'\n);\n\nexport class MongooseInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: MongooseInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      'mongoose',\n      ['>=5.9.7 <10'],\n      this.patch.bind(this),\n      this.unpatch.bind(this)\n    );\n    return module;\n  }\n\n  private patch(module: any, moduleVersion: string | undefined) {\n    const moduleExports: typeof mongoose =\n      module[Symbol.toStringTag] === 'Module'\n        ? module.default // ESM\n        : module; // CommonJS\n\n    this._wrap(\n      moduleExports.Model.prototype,\n      'save',\n      this.patchOnModelMethods('save', moduleVersion)\n    );\n    // mongoose applies this code on module require:\n    // Model.prototype.$save = Model.prototype.save;\n    // which captures the save function before it is patched.\n    // so we need to apply the same logic after instrumenting the save function.\n    moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n    if (instrumentRemove(moduleVersion)) {\n      this._wrap(\n        moduleExports.Model.prototype,\n        'remove',\n        this.patchOnModelMethods('remove', moduleVersion)\n      );\n    }\n\n    // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n    //\n    // See https://github.com/Automattic/mongoose/blob/7dbda12dca1bd7adb9e270d7de8ac5229606ce72/lib/document.js#L861.\n    // - `this` is a Query object\n    // - the update happens in a pre-hook that gets called when Query.exec() is already running.\n    // - when we instrument Query.exec(), we don't have access to the options yet as they get set during Query.exec() only.\n    //\n    // Unfortunately, after Query.exec() is finished, the options are left modified by the library, so just delaying\n    // attaching the attributes after the span is done is not an option. Therefore, we patch Model methods\n    // and grab the data directly where the user provides it.\n    //\n    // ref: https://github.com/Automattic/mongoose/pull/15908 (introduced this behavior)\n    if (needsDocumentMethodPatch(moduleVersion)) {\n      this._wrap(\n        moduleExports.Model.prototype,\n        'updateOne',\n        this._patchDocumentUpdateMethods('updateOne', moduleVersion)\n      );\n      this._wrap(\n        moduleExports.Model.prototype,\n        'deleteOne',\n        this._patchDocumentUpdateMethods('deleteOne', moduleVersion)\n      );\n    }\n\n    this._wrap(\n      moduleExports.Query.prototype,\n      'exec',\n      this.patchQueryExec(moduleVersion)\n    );\n    this._wrap(\n      moduleExports.Aggregate.prototype,\n      'exec',\n      this.patchAggregateExec(moduleVersion)\n    );\n\n    const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n    contextCaptureFunctions.forEach((funcName: string) => {\n      this._wrap(\n        moduleExports.Query.prototype,\n        funcName as any,\n        this.patchAndCaptureSpanContext(funcName)\n      );\n    });\n    this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n\n    this._wrap(\n      moduleExports.Model,\n      'insertMany',\n      this.patchModelStatic('insertMany', moduleVersion)\n    );\n    this._wrap(\n      moduleExports.Model,\n      'bulkWrite',\n      this.patchModelStatic('bulkWrite', moduleVersion)\n    );\n\n    return moduleExports;\n  }\n\n  private unpatch(module: any, moduleVersion: string | undefined): void {\n    const moduleExports: typeof mongoose =\n      module[Symbol.toStringTag] === 'Module'\n        ? module.default // ESM\n        : module; // CommonJS\n\n    const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n    this._unwrap(moduleExports.Model.prototype, 'save');\n    // revert the patch for $save which we applied by aliasing it to patched `save`\n    moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n    if (instrumentRemove(moduleVersion)) {\n      this._unwrap(moduleExports.Model.prototype, 'remove');\n    }\n\n    if (needsDocumentMethodPatch(moduleVersion)) {\n      this._unwrap(moduleExports.Model.prototype, 'updateOne');\n      this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n    }\n\n    this._unwrap(moduleExports.Query.prototype, 'exec');\n    this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n\n    contextCaptureFunctions.forEach((funcName: string) => {\n      this._unwrap(moduleExports.Query.prototype, funcName as any);\n    });\n    this._unwrap(moduleExports.Model, 'aggregate');\n\n    this._unwrap(moduleExports.Model, 'insertMany');\n    this._unwrap(moduleExports.Model, 'bulkWrite');\n  }\n\n  private patchAggregateExec(moduleVersion: string | undefined) {\n    const self = this;\n    return (originalAggregate: Function) => {\n      return function exec(this: any, callback?: Function) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalAggregate.apply(this, arguments);\n        }\n\n        const parentSpan = this[_STORED_PARENT_SPAN];\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer('aggregate', {\n            options: this.options,\n            aggregatePipeline: this._pipeline,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this._model.collection,\n          this._model?.modelName,\n          'aggregate',\n          attributes,\n          parentSpan\n        );\n\n        return self._handleResponse(\n          span,\n          originalAggregate,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  private patchQueryExec(moduleVersion: string | undefined) {\n    const self = this;\n    return (originalExec: Function) => {\n      return function exec(this: any, callback?: Function) {\n        // Skip if already instrumented by document instance method patch\n        if (this[_ALREADY_INSTRUMENTED]) {\n          return originalExec.apply(this, arguments);\n        }\n\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalExec.apply(this, arguments);\n        }\n\n        const parentSpan = this[_STORED_PARENT_SPAN];\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(this.op, {\n            // Use public API methods (getFilter/getOptions) for better compatibility\n            condition: this.getFilter?.() ?? this._conditions,\n            updates: this._update,\n            options: this.getOptions?.() ?? this.options,\n            fields: this._fields,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n        const span = self._startSpan(\n          this.mongooseCollection,\n          this.model.modelName,\n          this.op,\n          attributes,\n          parentSpan\n        );\n\n        return self._handleResponse(\n          span,\n          originalExec,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  private patchOnModelMethods(op: string, moduleVersion: string | undefined) {\n    const self = this;\n    return (originalOnModelFunction: Function) => {\n      return function method(this: any, options?: any, callback?: Function) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalOnModelFunction.apply(this, arguments);\n        }\n\n        const serializePayload: SerializerPayload = { document: this };\n        if (options && !(options instanceof Function)) {\n          serializePayload.options = options;\n        }\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, serializePayload);\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n        const span = self._startSpan(\n          this.constructor.collection,\n          this.constructor.modelName,\n          op,\n          attributes\n        );\n\n        if (options instanceof Function) {\n          callback = options;\n          options = undefined;\n        }\n\n        return self._handleResponse(\n          span,\n          originalOnModelFunction,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n  private _patchDocumentUpdateMethods(\n    op: string,\n    moduleVersion: string | undefined\n  ) {\n    const self = this;\n    return (originalMethod: Function) => {\n      return function method(\n        this: any,\n        update?: any,\n        options?: any,\n        callback?: Function\n      ) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return originalMethod.apply(this, arguments);\n        }\n\n        // determine actual callback since different argument patterns are allowed\n        let actualCallback: Function | undefined = callback;\n        let actualUpdate = update;\n        let actualOptions = options;\n\n        if (typeof update === 'function') {\n          actualCallback = update;\n          actualUpdate = undefined;\n          actualOptions = undefined;\n        } else if (typeof options === 'function') {\n          actualCallback = options;\n          actualOptions = undefined;\n        }\n\n        const attributes: Attributes = {};\n        const dbStatementSerializer = self.getConfig().dbStatementSerializer;\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, {\n            // Document instance methods automatically use the document's _id as filter\n            condition: { _id: this._id },\n            updates: actualUpdate,\n            options: actualOptions,\n          });\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this.constructor.collection,\n          this.constructor.modelName,\n          op,\n          attributes\n        );\n\n        const result = self._handleResponse(\n          span,\n          originalMethod,\n          this,\n          arguments,\n          actualCallback,\n          moduleVersion\n        );\n\n        // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n        if (result && typeof result === 'object') {\n          result[_ALREADY_INSTRUMENTED] = true;\n        }\n\n        return result;\n      };\n    };\n  }\n\n  private patchModelStatic(op: string, moduleVersion: string | undefined) {\n    const self = this;\n    return (original: Function) => {\n      return function patchedStatic(\n        this: any,\n        docsOrOps: any,\n        options?: any,\n        callback?: Function\n      ) {\n        if (\n          self.getConfig().requireParentSpan &&\n          trace.getSpan(context.active()) === undefined\n        ) {\n          return original.apply(this, arguments);\n        }\n        if (typeof options === 'function') {\n          callback = options;\n          options = undefined;\n        }\n\n        const serializePayload: SerializerPayload = {};\n        switch (op) {\n          case 'insertMany':\n            serializePayload.documents = docsOrOps;\n            break;\n          case 'bulkWrite':\n            serializePayload.operations = docsOrOps;\n            break;\n          default:\n            serializePayload.document = docsOrOps;\n            break;\n        }\n        if (options !== undefined) {\n          serializePayload.options = options;\n        }\n\n        const attributes: Attributes = {};\n        const { dbStatementSerializer } = self.getConfig();\n        if (dbStatementSerializer) {\n          const statement = dbStatementSerializer(op, serializePayload);\n          if (self._dbSemconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = statement;\n          }\n          if (self._dbSemconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = statement;\n          }\n        }\n\n        const span = self._startSpan(\n          this.collection,\n          this.modelName,\n          op,\n          attributes\n        );\n\n        return self._handleResponse(\n          span,\n          original,\n          this,\n          arguments,\n          callback,\n          moduleVersion\n        );\n      };\n    };\n  }\n\n  // we want to capture the otel span on the object which is calling exec.\n  // in the special case of aggregate, we need have no function to path\n  // on the Aggregate object to capture the context on, so we patch\n  // the aggregate of Model, and set the context on the Aggregate object\n  private patchModelAggregate() {\n    const self = this;\n    return (original: Function) => {\n      return function captureSpanContext(this: any) {\n        const currentSpan = trace.getSpan(context.active());\n        const aggregate = self._callOriginalFunction(() =>\n          original.apply(this, arguments)\n        );\n        if (aggregate) aggregate[_STORED_PARENT_SPAN] = currentSpan;\n        return aggregate;\n      };\n    };\n  }\n\n  private patchAndCaptureSpanContext(funcName: string) {\n    const self = this;\n    return (original: Function) => {\n      return function captureSpanContext(this: any) {\n        this[_STORED_PARENT_SPAN] = trace.getSpan(context.active());\n        return self._callOriginalFunction(() =>\n          original.apply(this, arguments)\n        );\n      };\n    };\n  }\n\n  private _startSpan(\n    collection: mongoose.Collection,\n    modelName: string,\n    operation: string,\n    attributes: Attributes,\n    parentSpan?: Span\n  ): Span {\n    const finalAttributes: Attributes = {\n      ...attributes,\n      ...getAttributesFromCollection(\n        collection,\n        this._dbSemconvStability,\n        this._netSemconvStability\n      ),\n    };\n\n    if (this._dbSemconvStability & SemconvStability.OLD) {\n      finalAttributes[ATTR_DB_OPERATION] = operation;\n      finalAttributes[ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility\n    }\n    if (this._dbSemconvStability & SemconvStability.STABLE) {\n      finalAttributes[ATTR_DB_OPERATION_NAME] = operation;\n      finalAttributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name\n    }\n\n    const spanName =\n      this._dbSemconvStability & SemconvStability.STABLE\n        ? `${operation} ${collection.name}`\n        : `mongoose.${modelName}.${operation}`;\n\n    return this.tracer.startSpan(\n      spanName,\n      {\n        kind: SpanKind.CLIENT,\n        attributes: finalAttributes,\n      },\n      parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined\n    );\n  }\n\n  private _handleResponse(\n    span: Span,\n    exec: Function,\n    originalThis: any,\n    args: IArguments,\n    callback?: Function,\n    moduleVersion: string | undefined = undefined\n  ) {\n    const self = this;\n    if (callback instanceof Function) {\n      return self._callOriginalFunction(() =>\n        handleCallbackResponse(\n          callback,\n          exec,\n          originalThis,\n          span,\n          args,\n          self.getConfig().responseHook,\n          moduleVersion\n        )\n      );\n    } else {\n      const response = self._callOriginalFunction(() =>\n        exec.apply(originalThis, args)\n      );\n      return handlePromiseResponse(\n        response,\n        span,\n        self.getConfig().responseHook,\n        moduleVersion\n      );\n    }\n  }\n\n  private _callOriginalFunction(originalFunction: (...args: any[]) => T): T {\n    if (this.getConfig().suppressInternalInstrumentation) {\n      return context.with(suppressTracing(context.active()), originalFunction);\n    } else {\n      return originalFunction();\n    }\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport { MongooseInstrumentation } from './mongoose';\nexport type {\n  DbStatementSerializer,\n  MongooseInstrumentationConfig,\n  MongooseResponseCustomAttributesFunction,\n  ResponseInfo,\n  SerializerPayload,\n} from './types';\n","import { MongooseInstrumentation } from '@opentelemetry/instrumentation-mongoose';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongoose';\n\nexport const instrumentMongoose = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MongooseInstrumentation({\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mongoose');\n      },\n    }),\n);\n\nconst _mongooseIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMongoose();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nexport const mongooseIntegration = defineIntegration(_mongooseIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexport const METRIC_DB_CLIENT_CONNECTIONS_USAGE =\n  'db.client.connections.usage' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// Mysql specific attributes not covered by semantic conventions\nexport enum AttributeNames {\n  MYSQL_VALUES = 'db.mysql.values',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Pool, Query, QueryOptions } from 'mysql';\n\nexport function getConfig(config: any) {\n  const { host, port, database, user } =\n    (config && config.connectionConfig) || config || {};\n  return { host, port, database, user };\n}\n\nexport function getJDBCString(\n  host: string | undefined,\n  port: number | undefined,\n  database: string | undefined\n) {\n  let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n  if (typeof port === 'number') {\n    jdbcString += `:${port}`;\n  }\n\n  if (typeof database === 'string') {\n    jdbcString += `/${database}`;\n  }\n\n  return jdbcString;\n}\n\n/**\n * @returns the database query being executed.\n */\nexport function getDbQueryText(query: string | Query | QueryOptions): string {\n  if (typeof query === 'string') {\n    return query;\n  } else {\n    return query.sql;\n  }\n}\n\nexport function getDbValues(\n  query: string | Query | QueryOptions,\n  values?: any[]\n): string {\n  if (typeof query === 'string') {\n    return arrayStringifyHelper(values);\n  } else {\n    // According to https://github.com/mysqljs/mysql#performing-queries\n    // The values argument will override the values in the option object.\n    return arrayStringifyHelper(values || query.values);\n  }\n}\n\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nexport function getSpanName(query: string | Query | QueryOptions): string {\n  const rawQuery = typeof query === 'object' ? query.sql : query;\n  // Extract the SQL verb\n  const firstSpace = rawQuery?.indexOf(' ');\n  if (typeof firstSpace === 'number' && firstSpace !== -1) {\n    return rawQuery?.substring(0, firstSpace);\n  }\n  return rawQuery;\n}\n\nexport function arrayStringifyHelper(arr: Array | undefined): string {\n  if (arr) return `[${arr.toString()}]`;\n  return '';\n}\n\nexport function getPoolNameOld(pool: Pool): string {\n  const c = pool.config.connectionConfig;\n  let poolName = '';\n  poolName += c.host ? `host: '${c.host}', ` : '';\n  poolName += c.port ? `port: ${c.port}, ` : '';\n  poolName += c.database ? `database: '${c.database}', ` : '';\n  poolName += c.user ? `user: '${c.user}'` : '';\n  if (!c.user) {\n    poolName = poolName.substring(0, poolName.length - 2); //omit last comma\n  }\n  return poolName.trim();\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mysql';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  context,\n  Context,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_NAME,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_VALUE_MYSQL,\n  METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport type * as mysqlTypes from 'mysql';\nimport { AttributeNames } from './AttributeNames';\nimport { MySQLInstrumentationConfig } from './types';\nimport {\n  getConfig,\n  getDbQueryText,\n  getDbValues,\n  getJDBCString,\n  getSpanName,\n  getPoolNameOld,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { UpDownCounter } from '@opentelemetry/api';\n\ntype getConnectionCallbackType = (\n  err: mysqlTypes.MysqlError,\n  connection: mysqlTypes.PoolConnection\n) => void;\n\nexport class MySQLInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n  declare private _connectionsUsageOld: UpDownCounter;\n\n  constructor(config: MySQLInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected override _updateMetricInstruments() {\n    this._connectionsUsageOld = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  /**\n   * Convenience function for updating the `db.client.connections.usage` metric.\n   * The name \"count\" comes from the eventually replacement for this metric per\n   * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n   */\n  private _connCountAdd(n: number, poolNameOld: string, state: string) {\n    this._connectionsUsageOld?.add(n, { state, name: poolNameOld });\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mysql',\n        ['>=2.0.0 <3'],\n        (moduleExports: typeof mysqlTypes) => {\n          if (isWrapped(moduleExports.createConnection)) {\n            this._unwrap(moduleExports, 'createConnection');\n          }\n          this._wrap(\n            moduleExports,\n            'createConnection',\n            this._patchCreateConnection() as any\n          );\n\n          if (isWrapped(moduleExports.createPool)) {\n            this._unwrap(moduleExports, 'createPool');\n          }\n          this._wrap(\n            moduleExports,\n            'createPool',\n            this._patchCreatePool() as any\n          );\n\n          if (isWrapped(moduleExports.createPoolCluster)) {\n            this._unwrap(moduleExports, 'createPoolCluster');\n          }\n          this._wrap(\n            moduleExports,\n            'createPoolCluster',\n            this._patchCreatePoolCluster() as any\n          );\n\n          return moduleExports;\n        },\n        (moduleExports: typeof mysqlTypes) => {\n          if (moduleExports === undefined) return;\n          this._unwrap(moduleExports, 'createConnection');\n          this._unwrap(moduleExports, 'createPool');\n          this._unwrap(moduleExports, 'createPoolCluster');\n        }\n      ),\n    ];\n  }\n\n  // global export function\n  private _patchCreateConnection() {\n    return (originalCreateConnection: Function) => {\n      const thisPlugin = this;\n\n      return function createConnection(\n        _connectionUri: string | mysqlTypes.ConnectionConfig\n      ) {\n        const originalResult = originalCreateConnection(...arguments);\n\n        // This is unwrapped on next call after unpatch\n        thisPlugin._wrap(\n          originalResult,\n          'query',\n          thisPlugin._patchQuery(originalResult) as any\n        );\n\n        return originalResult;\n      };\n    };\n  }\n\n  // global export function\n  private _patchCreatePool() {\n    return (originalCreatePool: Function) => {\n      const thisPlugin = this;\n      return function createPool(_config: string | mysqlTypes.PoolConfig) {\n        const pool = originalCreatePool(...arguments);\n\n        thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n        thisPlugin._wrap(\n          pool,\n          'getConnection',\n          thisPlugin._patchGetConnection(pool)\n        );\n        thisPlugin._wrap(pool, 'end', thisPlugin._patchPoolEnd(pool));\n        thisPlugin._setPoolCallbacks(pool, '');\n\n        return pool;\n      };\n    };\n  }\n\n  private _patchPoolEnd(pool: any) {\n    return (originalPoolEnd: Function) => {\n      const thisPlugin = this;\n      return function end(callback?: unknown) {\n        const nAll = (pool as any)._allConnections.length;\n        const nFree = (pool as any)._freeConnections.length;\n        const nUsed = nAll - nFree;\n        const poolNameOld = getPoolNameOld(pool);\n        thisPlugin._connCountAdd(-nUsed, poolNameOld, 'used');\n        thisPlugin._connCountAdd(-nFree, poolNameOld, 'idle');\n        originalPoolEnd.apply(pool, arguments);\n      };\n    };\n  }\n\n  // global export function\n  private _patchCreatePoolCluster() {\n    return (originalCreatePoolCluster: Function) => {\n      const thisPlugin = this;\n      return function createPool(_config: string | mysqlTypes.PoolConfig) {\n        const cluster = originalCreatePoolCluster(...arguments);\n\n        // This is unwrapped on next call after unpatch\n        thisPlugin._wrap(\n          cluster,\n          'getConnection',\n          thisPlugin._patchGetConnection(cluster)\n        );\n        thisPlugin._wrap(cluster, 'add', thisPlugin._patchAdd(cluster));\n\n        return cluster;\n      };\n    };\n  }\n  private _patchAdd(cluster: mysqlTypes.PoolCluster) {\n    return (originalAdd: Function) => {\n      const thisPlugin = this;\n      return function add(id: string, config: unknown) {\n        // Unwrap if unpatch has been called\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(cluster, 'add');\n          return originalAdd.apply(cluster, arguments);\n        }\n        originalAdd.apply(cluster, arguments);\n        const nodes = cluster['_nodes' as keyof mysqlTypes.PoolCluster] as any;\n        if (nodes) {\n          const nodeId =\n            typeof id === 'object'\n              ? 'CLUSTER::' + (cluster as any)._lastId\n              : String(id);\n\n          const pool = nodes[nodeId].pool;\n          thisPlugin._setPoolCallbacks(pool, id);\n        }\n      };\n    };\n  }\n\n  // method on cluster or pool\n  private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) {\n    return (originalGetConnection: Function) => {\n      const thisPlugin = this;\n\n      return function getConnection(\n        arg1?: unknown,\n        arg2?: unknown,\n        arg3?: unknown\n      ) {\n        // Unwrap if unpatch has been called\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(pool, 'getConnection');\n          return originalGetConnection.apply(pool, arguments);\n        }\n\n        if (arguments.length === 1 && typeof arg1 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg1 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, patchFn);\n        }\n        if (arguments.length === 2 && typeof arg2 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg2 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, arg1, patchFn);\n        }\n        if (arguments.length === 3 && typeof arg3 === 'function') {\n          const patchFn = thisPlugin._getConnectionCallbackPatchFn(\n            arg3 as getConnectionCallbackType\n          );\n          return originalGetConnection.call(pool, arg1, arg2, patchFn);\n        }\n\n        return originalGetConnection.apply(pool, arguments);\n      };\n    };\n  }\n\n  private _getConnectionCallbackPatchFn(cb: getConnectionCallbackType) {\n    const thisPlugin = this;\n    const activeContext = context.active();\n    return function (\n      this: any,\n      err: mysqlTypes.MysqlError,\n      connection: mysqlTypes.PoolConnection\n    ) {\n      if (connection) {\n        // this is the callback passed into a query\n        // no need to unwrap\n        if (!isWrapped(connection.query)) {\n          thisPlugin._wrap(\n            connection,\n            'query',\n            thisPlugin._patchQuery(connection)\n          );\n        }\n      }\n      if (typeof cb === 'function') {\n        context.with(activeContext, cb, this, err, connection);\n      }\n    };\n  }\n\n  private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) {\n    return (originalQuery: Function): mysqlTypes.QueryFunction => {\n      const thisPlugin = this;\n\n      return function query(\n        query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n        _valuesOrCallback?: unknown[] | mysqlTypes.queryCallback,\n        _callback?: mysqlTypes.queryCallback\n      ) {\n        if (!thisPlugin['_enabled']) {\n          thisPlugin._unwrap(connection, 'query');\n          return originalQuery.apply(connection, arguments);\n        }\n\n        const attributes: Attributes = {};\n        const { host, port, database, user } = getConfig(connection.config);\n        const portNumber = parseInt(port, 10);\n        const dbQueryText = getDbQueryText(query);\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n          attributes[ATTR_DB_CONNECTION_STRING] = getJDBCString(\n            host,\n            port,\n            database\n          );\n          attributes[ATTR_DB_NAME] = database;\n          attributes[ATTR_DB_USER] = user;\n          attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n          attributes[ATTR_DB_NAMESPACE] = database;\n          attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_NAME] = host;\n          if (!isNaN(portNumber)) {\n            attributes[ATTR_NET_PEER_PORT] = portNumber;\n          }\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_ADDRESS] = host;\n          if (!isNaN(portNumber)) {\n            attributes[ATTR_SERVER_PORT] = portNumber;\n          }\n        }\n        const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n          kind: SpanKind.CLIENT,\n          attributes,\n        });\n\n        if (thisPlugin.getConfig().enhancedDatabaseReporting) {\n          let values;\n\n          if (Array.isArray(_valuesOrCallback)) {\n            values = _valuesOrCallback;\n          } else if (arguments[2]) {\n            values = [_valuesOrCallback];\n          }\n\n          span.setAttribute(\n            AttributeNames.MYSQL_VALUES,\n            getDbValues(query, values)\n          );\n        }\n\n        const cbIndex = Array.from(arguments).findIndex(\n          arg => typeof arg === 'function'\n        );\n\n        const parentContext = context.active();\n\n        if (cbIndex === -1) {\n          const streamableQuery: mysqlTypes.Query = context.with(\n            trace.setSpan(context.active(), span),\n            () => {\n              return originalQuery.apply(connection, arguments);\n            }\n          );\n          context.bind(parentContext, streamableQuery);\n\n          return streamableQuery\n            .on('error', err =>\n              span.setStatus({\n                code: SpanStatusCode.ERROR,\n                message: err.message,\n              })\n            )\n            .on('end', () => {\n              span.end();\n            });\n        } else {\n          thisPlugin._wrap(\n            arguments,\n            cbIndex,\n            thisPlugin._patchCallbackQuery(span, parentContext)\n          );\n\n          return context.with(trace.setSpan(context.active(), span), () => {\n            return originalQuery.apply(connection, arguments);\n          });\n        }\n      };\n    };\n  }\n\n  private _patchCallbackQuery(span: Span, parentContext: Context) {\n    return (originalCallback: Function) => {\n      return function (\n        err: mysqlTypes.MysqlError | null,\n        results?: any,\n        fields?: mysqlTypes.FieldInfo[]\n      ) {\n        if (err) {\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: err.message,\n          });\n        }\n        span.end();\n        return context.with(parentContext, () =>\n          originalCallback(...arguments)\n        );\n      };\n    };\n  }\n\n  private _setPoolCallbacks(pool: mysqlTypes.Pool, id: string) {\n    const poolNameOld = id || getPoolNameOld(pool);\n\n    pool.on('connection', _connection => {\n      this._connCountAdd(1, poolNameOld, 'idle');\n    });\n\n    pool.on('acquire', _connection => {\n      this._connCountAdd(-1, poolNameOld, 'idle');\n      this._connCountAdd(1, poolNameOld, 'used');\n    });\n\n    pool.on('release', _connection => {\n      this._connCountAdd(1, poolNameOld, 'idle');\n      this._connCountAdd(-1, poolNameOld, 'used');\n    });\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MySQLInstrumentation } from './instrumentation';\nexport type { MySQLInstrumentationConfig } from './types';\n","import { MySQLInstrumentation } from '@opentelemetry/instrumentation-mysql';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql';\n\nexport const instrumentMysql = generateInstrumentOnce(INTEGRATION_NAME, () => new MySQLInstrumentation({}));\n\nconst _mysqlIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMysql();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql](https://www.npmjs.com/package/mysql) library.\n *\n * For more information, see the [`mysqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nexport const mysqlIntegration = defineIntegration(_mysqlIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  trace,\n  Span,\n  ROOT_CONTEXT,\n  defaultTextMapSetter,\n} from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\n\n// NOTE: This function currently is returning false-positives\n// in cases where comment characters appear in string literals\n// (\"SELECT '-- not a comment';\" would return true, although has no comment)\nfunction hasValidSqlComment(query: string): boolean {\n  const indexOpeningDashDashComment = query.indexOf('--');\n  if (indexOpeningDashDashComment >= 0) {\n    return true;\n  }\n\n  const indexOpeningSlashComment = query.indexOf('/*');\n  if (indexOpeningSlashComment < 0) {\n    return false;\n  }\n\n  const indexClosingSlashComment = query.indexOf('*/');\n  return indexOpeningDashDashComment < indexClosingSlashComment;\n}\n\n// sqlcommenter specification (https://google.github.io/sqlcommenter/spec/#value-serialization)\n// expects us to URL encode based on the RFC 3986 spec (https://en.wikipedia.org/wiki/Percent-encoding),\n// but encodeURIComponent does not handle some characters correctly (! ' ( ) *),\n// which means we need special handling for this\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\nfunction fixedEncodeURIComponent(str: string) {\n  return encodeURIComponent(str).replace(\n    /[!'()*]/g,\n    c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`\n  );\n}\n\nexport function addSqlCommenterComment(span: Span, query: string): string {\n  if (typeof query !== 'string' || query.length === 0) {\n    return query;\n  }\n\n  // As per sqlcommenter spec we shall not add a comment if there already is a comment\n  // in the query\n  if (hasValidSqlComment(query)) {\n    return query;\n  }\n\n  const propagator = new W3CTraceContextPropagator();\n  const headers: { [key: string]: string } = {};\n  propagator.inject(\n    trace.setSpan(ROOT_CONTEXT, span),\n    headers,\n    defaultTextMapSetter\n  );\n\n  // sqlcommenter spec requires keys in the comment to be sorted lexicographically\n  const sortedKeys = Object.keys(headers).sort();\n\n  if (sortedKeys.length === 0) {\n    return query;\n  }\n\n  const commentString = sortedKeys\n    .map(key => {\n      const encodedValue = fixedEncodeURIComponent(headers[key]);\n      return `${key}='${encodedValue}'`;\n    })\n    .join(',');\n\n  return `${query} /*${commentString}*/`;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport type * as mysqlTypes from 'mysql2';\nimport { MySQL2InstrumentationQueryMaskingHook } from './types';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\n\ntype formatType = typeof mysqlTypes.format;\n\n/*\n  Following types declare an expectation on mysql2 types and define a subset we\n  use in the instrumentation of the types actually defined in mysql2 package\n\n  We need to import them here so that the installing party of the instrumentation\n  doesn't have to absolutely install the mysql2 package as well - specially\n  important for auto-loaders and meta-packages.\n*/\ninterface QueryOptions {\n  sql: string;\n  values?: any | any[] | { [param: string]: any };\n}\n\ninterface Query {\n  sql: string;\n}\n\ninterface Config {\n  host?: string;\n  port?: number;\n  database?: string;\n  user?: string;\n  connectionConfig?: Config;\n}\n\n/**\n * Get an Attributes map from a mysql connection config object\n *\n * @param config ConnectionConfig\n */\nexport function getConnectionAttributes(\n  config: Config,\n  dbSemconvStability: SemconvStability,\n  netSemconvStability: SemconvStability\n): Attributes {\n  const { host, port, database, user } = getConfig(config);\n\n  const attrs: Attributes = {};\n  if (dbSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database);\n    attrs[ATTR_DB_NAME] = database;\n    attrs[ATTR_DB_USER] = user;\n  }\n  if (dbSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_DB_NAMESPACE] = database;\n  }\n\n  const portNumber = parseInt(port, 10);\n  if (netSemconvStability & SemconvStability.OLD) {\n    attrs[ATTR_NET_PEER_NAME] = host;\n    if (!isNaN(portNumber)) {\n      attrs[ATTR_NET_PEER_PORT] = portNumber;\n    }\n  }\n  if (netSemconvStability & SemconvStability.STABLE) {\n    attrs[ATTR_SERVER_ADDRESS] = host;\n    if (!isNaN(portNumber)) {\n      attrs[ATTR_SERVER_PORT] = portNumber;\n    }\n  }\n\n  return attrs;\n}\n\nfunction getConfig(config: any) {\n  const { host, port, database, user } =\n    (config && config.connectionConfig) || config || {};\n  return { host, port, database, user };\n}\n\nfunction getJDBCString(\n  host: string | undefined,\n  port: number | undefined,\n  database: string | undefined\n) {\n  let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n\n  if (typeof port === 'number') {\n    jdbcString += `:${port}`;\n  }\n\n  if (typeof database === 'string') {\n    jdbcString += `/${database}`;\n  }\n\n  return jdbcString;\n}\n\n/**\n * Conjures up the value for the db.query.text attribute by formatting a SQL query.\n */\nexport function getQueryText(\n  query: string | Query | QueryOptions,\n  format?: formatType,\n  values?: any[],\n  maskStatement = false,\n  maskStatementHook: MySQL2InstrumentationQueryMaskingHook = defaultMaskingHook\n): string {\n  const [querySql, queryValues] =\n    typeof query === 'string'\n      ? [query, values]\n      : [query.sql, hasValues(query) ? values || query.values : values];\n  try {\n    if (maskStatement) {\n      return maskStatementHook(querySql);\n    } else if (format && queryValues) {\n      return format(querySql, queryValues);\n    } else {\n      return querySql;\n    }\n  } catch (e) {\n    return 'Could not determine the query due to an error in masking or formatting';\n  }\n}\n\n/**\n * Replaces numeric values and quoted strings in the query with placeholders ('?').\n *\n * - `\\b\\d+\\b`: Matches whole numbers (integers) and replaces them with '?'.\n * - `([\"'])(?:(?=(\\\\?))\\2.)*?\\1`:\n *   - Matches quoted strings (both single `'` and double `\"` quotes).\n *   - Uses a lookahead `(?=(\\\\?))` to detect an optional backslash without consuming it immediately.\n *   - Captures the optional backslash `\\2` and ensures escaped quotes inside the string are handled correctly.\n *   - Ensures that only complete quoted strings are replaced with '?'.\n *\n * This prevents accidental replacement of escaped quotes within strings and ensures that the\n * query structure remains intact while masking sensitive data.\n */\nfunction defaultMaskingHook(query: string): string {\n  return query\n    .replace(/\\b\\d+\\b/g, '?')\n    .replace(/([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g, '?');\n}\n\nfunction hasValues(obj: Query | QueryOptions): obj is QueryOptions {\n  return 'values' in obj;\n}\n\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nexport function getSpanName(query: string | Query | QueryOptions): string {\n  const rawQuery = typeof query === 'object' ? query.sql : query;\n  // Extract the SQL verb\n  const firstSpace = rawQuery?.indexOf(' ');\n  if (typeof firstSpace === 'number' && firstSpace !== -1) {\n    return rawQuery?.substring(0, firstSpace);\n  }\n  return rawQuery;\n}\n\nexport const once = (fn: Function) => {\n  let called = false;\n  return (...args: unknown[]) => {\n    if (called) return;\n    called = true;\n    return fn(...args);\n  };\n};\n\nexport function getConnectionPrototypeToInstrument(connection: any) {\n  const connectionPrototype = connection.prototype;\n  const basePrototype = Object.getPrototypeOf(connectionPrototype);\n\n  // mysql2@3.11.5 included a refactoring, where most code was moved out of the `Connection` class and into a shared base\n  // so we need to instrument that instead, see https://github.com/sidorares/node-mysql2/pull/3081\n  // This checks if the functions we're instrumenting are there on the base - we cannot use the presence of a base\n  // prototype since EventEmitter is the base for mysql2@<=3.11.4\n  if (\n    typeof basePrototype?.query === 'function' &&\n    typeof basePrototype?.execute === 'function'\n  ) {\n    return basePrototype;\n  }\n\n  // otherwise instrument the connection directly.\n  return connectionPrototype;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-mysql2';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  DB_SYSTEM_VALUE_MYSQL,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n} from './semconv';\nimport { addSqlCommenterComment } from '@opentelemetry/sql-common';\nimport type * as mysqlTypes from 'mysql2';\nimport { MySQL2InstrumentationConfig } from './types';\nimport {\n  getConnectionAttributes,\n  getConnectionPrototypeToInstrument,\n  getQueryText,\n  getSpanName,\n  once,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\n\ntype formatType = typeof mysqlTypes.format;\n\nconst supportedVersions = ['>=1.4.2 <4'];\n\nexport class MySQL2Instrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: MySQL2InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    let format: formatType | undefined;\n    function setFormatFunction(moduleExports: any) {\n      if (!format && moduleExports.format) {\n        format = moduleExports.format;\n      }\n    }\n    const patch = (ConnectionPrototype: mysqlTypes.Connection) => {\n      if (isWrapped(ConnectionPrototype.query)) {\n        this._unwrap(ConnectionPrototype, 'query');\n      }\n      this._wrap(\n        ConnectionPrototype,\n        'query',\n        this._patchQuery(format, false) as any\n      );\n      if (isWrapped(ConnectionPrototype.execute)) {\n        this._unwrap(ConnectionPrototype, 'execute');\n      }\n      this._wrap(\n        ConnectionPrototype,\n        'execute',\n        this._patchQuery(format, true) as any\n      );\n    };\n    const unpatch = (ConnectionPrototype: mysqlTypes.Connection) => {\n      this._unwrap(ConnectionPrototype, 'query');\n      this._unwrap(ConnectionPrototype, 'execute');\n    };\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'mysql2',\n        supportedVersions,\n        (moduleExports: any) => {\n          setFormatFunction(moduleExports);\n          return moduleExports;\n        },\n        () => {},\n        [\n          new InstrumentationNodeModuleFile(\n            'mysql2/promise.js',\n            supportedVersions,\n            (moduleExports: any) => {\n              setFormatFunction(moduleExports);\n              return moduleExports;\n            },\n            () => {}\n          ),\n          new InstrumentationNodeModuleFile(\n            'mysql2/lib/connection.js',\n            supportedVersions,\n            (moduleExports: any) => {\n              const ConnectionPrototype: mysqlTypes.Connection =\n                getConnectionPrototypeToInstrument(moduleExports);\n              patch(ConnectionPrototype);\n              return moduleExports;\n            },\n            (moduleExports: any) => {\n              if (moduleExports === undefined) return;\n              const ConnectionPrototype: mysqlTypes.Connection =\n                getConnectionPrototypeToInstrument(moduleExports);\n              unpatch(ConnectionPrototype);\n            }\n          ),\n        ]\n      ),\n    ];\n  }\n\n  private _patchQuery(format: formatType | undefined, isPrepared: boolean) {\n    return (originalQuery: Function): Function => {\n      const thisPlugin = this;\n      return function query(\n        this: mysqlTypes.Connection,\n        query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n        _valuesOrCallback?: unknown[] | Function,\n        _callback?: Function\n      ) {\n        let values;\n        if (Array.isArray(_valuesOrCallback)) {\n          values = _valuesOrCallback;\n        } else if (arguments[2]) {\n          values = [_valuesOrCallback];\n        }\n        const { maskStatement, maskStatementHook, responseHook } =\n          thisPlugin.getConfig();\n\n        const attributes: api.Attributes = getConnectionAttributes(\n          this.config,\n          thisPlugin._dbSemconvStability,\n          thisPlugin._netSemconvStability\n        );\n        const dbQueryText = getQueryText(\n          query,\n          format,\n          values,\n          maskStatement,\n          maskStatementHook\n        );\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n          attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n          attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n        }\n\n        const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n          kind: api.SpanKind.CLIENT,\n          attributes,\n        });\n\n        if (\n          !isPrepared &&\n          thisPlugin.getConfig().addSqlCommenterCommentToQueries\n        ) {\n          arguments[0] = query =\n            typeof query === 'string'\n              ? addSqlCommenterComment(span, query)\n              : Object.assign(query, {\n                  sql: addSqlCommenterComment(span, query.sql),\n                });\n        }\n\n        const endSpan = once((err?: any, results?: any) => {\n          if (err) {\n            span.setStatus({\n              code: api.SpanStatusCode.ERROR,\n              message: err.message,\n            });\n          } else {\n            if (typeof responseHook === 'function') {\n              safeExecuteInTheMiddle(\n                () => {\n                  responseHook(span, {\n                    queryResults: results,\n                  });\n                },\n                err => {\n                  if (err) {\n                    thisPlugin._diag.warn('Failed executing responseHook', err);\n                  }\n                },\n                true\n              );\n            }\n          }\n\n          span.end();\n        });\n\n        if (arguments.length === 1) {\n          if (typeof (query as any).onResult === 'function') {\n            thisPlugin._wrap(\n              query as any,\n              'onResult',\n              thisPlugin._patchCallbackQuery(endSpan)\n            );\n          }\n\n          const streamableQuery: mysqlTypes.Query = originalQuery.apply(\n            this,\n            arguments\n          );\n\n          // `end` in mysql behaves similarly to `result` in mysql2.\n          streamableQuery\n            .once('error', err => {\n              endSpan(err);\n            })\n            .once('result', results => {\n              endSpan(undefined, results);\n            });\n\n          return streamableQuery;\n        }\n\n        if (typeof arguments[1] === 'function') {\n          thisPlugin._wrap(\n            arguments,\n            1,\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        } else if (typeof arguments[2] === 'function') {\n          thisPlugin._wrap(\n            arguments,\n            2,\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        }\n\n        return originalQuery.apply(this, arguments);\n      };\n    };\n  }\n\n  private _patchCallbackQuery(endSpan: Function) {\n    return (originalCallback: Function) => {\n      return function (\n        err: mysqlTypes.QueryError | null,\n        results?: any,\n        fields?: mysqlTypes.FieldPacket[]\n      ) {\n        endSpan(err, results);\n        return originalCallback(...arguments);\n      };\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { MySQL2Instrumentation } from './instrumentation';\nexport type {\n  MySQL2InstrumentationConfig,\n  MySQL2InstrumentationExecutionResponseHook,\n  MySQL2ResponseHookInformation,\n} from './types';\n","import { MySQL2Instrumentation } from '@opentelemetry/instrumentation-mysql2';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql2';\n\nexport const instrumentMysql2 = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new MySQL2Instrumentation({\n      responseHook(span) {\n        addOriginToSpan(span, 'auto.db.otel.mysql2');\n      },\n    }),\n);\n\nconst _mysql2Integration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentMysql2();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql2](https://www.npmjs.com/package/mysql2) library.\n *\n * For more information, see the [`mysql2Integration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql2/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nexport const mysql2Integration = defineIntegration(_mysql2Integration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDIS = 'redis' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Span, SpanStatusCode } from '@opentelemetry/api';\n\nexport const endSpan = (\n  span: Span,\n  err: NodeJS.ErrnoException | null | undefined\n) => {\n  if (err) {\n    span.recordException(err);\n    span.setStatus({\n      code: SpanStatusCode.ERROR,\n      message: err.message,\n    });\n  }\n  span.end();\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * List of regexes and the number of arguments that should be serialized for matching commands.\n * For example, HSET should serialize which key and field it's operating on, but not its value.\n * Setting the subset to -1 will serialize all arguments.\n * Commands without a match will have their first argument serialized.\n *\n * Refer to https://redis.io/commands/ for the full list.\n */\nconst serializationSubsets = [\n  {\n    regex: /^ECHO/i,\n    args: 0,\n  },\n  {\n    regex: /^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,\n    args: 1,\n  },\n  {\n    regex: /^(HSET|HMSET|LSET|LINSERT)/i,\n    args: 2,\n  },\n  {\n    regex:\n      /^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,\n    args: -1,\n  },\n];\n\nexport type DbStatementSerializer = (\n  cmdName: string,\n  cmdArgs: Array\n) => string;\n\n/**\n * Given the redis command name and arguments, return a combination of the\n * command name + the allowed arguments according to `serializationSubsets`.\n * @param cmdName The redis command name\n * @param cmdArgs The redis command arguments\n * @returns a combination of the command name + args according to `serializationSubsets`.\n */\nexport const defaultDbStatementSerializer: DbStatementSerializer = (\n  cmdName,\n  cmdArgs\n) => {\n  if (Array.isArray(cmdArgs) && cmdArgs.length) {\n    const nArgsToSerialize =\n      serializationSubsets.find(({ regex }) => {\n        return regex.test(cmdName);\n      })?.args ?? 0;\n    const argsToSerialize =\n      nArgsToSerialize >= 0 ? cmdArgs.slice(0, nArgsToSerialize) : cmdArgs;\n    if (cmdArgs.length > argsToSerialize.length) {\n      argsToSerialize.push(\n        `[${cmdArgs.length - nArgsToSerialize} other arguments]`\n      );\n    }\n    return `${cmdName} ${argsToSerialize.join(' ')}`;\n  }\n  return cmdName;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-ioredis';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  diag,\n  trace,\n  context,\n  SpanKind,\n  type Attributes,\n} from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { IORedisInstrumentationConfig } from './types';\nimport { IORedisCommand, RedisInterface } from './internal-types';\nimport {\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  DB_SYSTEM_VALUE_REDIS,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { endSpan } from './utils';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst DEFAULT_CONFIG: IORedisInstrumentationConfig = {\n  requireParentSpan: true,\n};\n\nexport class IORedisInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: IORedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: IORedisInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'ioredis',\n        ['>=2.0.0 <6'],\n        (module, moduleVersion?: string) => {\n          const moduleExports =\n            module[Symbol.toStringTag] === 'Module'\n              ? module.default // ESM\n              : module; // CommonJS\n          if (isWrapped(moduleExports.prototype.sendCommand)) {\n            this._unwrap(moduleExports.prototype, 'sendCommand');\n          }\n          this._wrap(\n            moduleExports.prototype,\n            'sendCommand',\n            this._patchSendCommand(moduleVersion)\n          );\n          if (isWrapped(moduleExports.prototype.connect)) {\n            this._unwrap(moduleExports.prototype, 'connect');\n          }\n          this._wrap(\n            moduleExports.prototype,\n            'connect',\n            this._patchConnection()\n          );\n          return module;\n        },\n        module => {\n          if (module === undefined) return;\n          const moduleExports =\n            module[Symbol.toStringTag] === 'Module'\n              ? module.default // ESM\n              : module; // CommonJS\n          this._unwrap(moduleExports.prototype, 'sendCommand');\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n      ),\n    ];\n  }\n\n  /**\n   * Patch send command internal to trace requests\n   */\n  private _patchSendCommand(moduleVersion?: string) {\n    return (original: Function) => {\n      return this._traceSendCommand(original, moduleVersion);\n    };\n  }\n\n  private _patchConnection() {\n    return (original: Function) => {\n      return this._traceConnection(original);\n    };\n  }\n\n  private _traceSendCommand(original: Function, moduleVersion?: string) {\n    const instrumentation = this;\n    return function (this: RedisInterface, cmd?: IORedisCommand) {\n      if (arguments.length < 1 || typeof cmd !== 'object') {\n        return original.apply(this, arguments);\n      }\n      const config = instrumentation.getConfig();\n      const dbStatementSerializer =\n        config.dbStatementSerializer || defaultDbStatementSerializer;\n\n      const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n      if (config.requireParentSpan === true && hasNoParentSpan) {\n        return original.apply(this, arguments);\n      }\n\n      const attributes: Attributes = {};\n      const { host, port } = this.options;\n      const dbQueryText = dbStatementSerializer(cmd.name, cmd.args);\n      if (instrumentation._dbSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_REDIS;\n        attributes[ATTR_DB_STATEMENT] = dbQueryText;\n        attributes[ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n      }\n      if (instrumentation._dbSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_REDIS;\n        attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n        attributes[ATTR_NET_PEER_PORT] = port;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n        attributes[ATTR_SERVER_PORT] = port;\n      }\n      const span = instrumentation.tracer.startSpan(cmd.name, {\n        kind: SpanKind.CLIENT,\n        attributes,\n      });\n\n      const { requestHook } = config;\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            requestHook(span, {\n              moduleVersion,\n              cmdName: cmd.name,\n              cmdArgs: cmd.args,\n            }),\n          e => {\n            if (e) {\n              diag.error('ioredis instrumentation: request hook failed', e);\n            }\n          },\n          true\n        );\n      }\n\n      try {\n        const result = original.apply(this, arguments);\n\n        const origResolve = cmd.resolve;\n        /* eslint-disable @typescript-eslint/no-explicit-any */\n        cmd.resolve = function (result: any) {\n          safeExecuteInTheMiddle(\n            () => config.responseHook?.(span, cmd.name, cmd.args, result),\n            e => {\n              if (e) {\n                diag.error('ioredis instrumentation: response hook failed', e);\n              }\n            },\n            true\n          );\n\n          endSpan(span, null);\n          origResolve(result);\n        };\n\n        const origReject = cmd.reject;\n        cmd.reject = function (err: Error) {\n          endSpan(span, err);\n          origReject(err);\n        };\n\n        return result;\n      } catch (error: any) {\n        endSpan(span, error);\n        throw error;\n      }\n    };\n  }\n\n  private _traceConnection(original: Function) {\n    const instrumentation = this;\n    return function (this: RedisInterface) {\n      const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n      if (\n        instrumentation.getConfig().requireParentSpan === true &&\n        hasNoParentSpan\n      ) {\n        return original.apply(this, arguments);\n      }\n\n      const attributes: Attributes = {};\n      const { host, port } = this.options;\n      if (instrumentation._dbSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_REDIS;\n        attributes[ATTR_DB_STATEMENT] = 'connect';\n        attributes[ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n      }\n      if (instrumentation._dbSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_REDIS;\n        attributes[ATTR_DB_QUERY_TEXT] = 'connect';\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.OLD) {\n        attributes[ATTR_NET_PEER_NAME] = host;\n        attributes[ATTR_NET_PEER_PORT] = port;\n      }\n      if (instrumentation._netSemconvStability & SemconvStability.STABLE) {\n        attributes[ATTR_SERVER_ADDRESS] = host;\n        attributes[ATTR_SERVER_PORT] = port;\n      }\n      const span = instrumentation.tracer.startSpan('connect', {\n        kind: SpanKind.CLIENT,\n        attributes,\n      });\n\n      try {\n        const client = original.apply(this, arguments);\n        endSpan(span, null);\n        return client;\n      } catch (error: any) {\n        endSpan(span, error);\n        throw error;\n      }\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { IORedisInstrumentation } from './instrumentation';\nexport type {\n  CommandArgs,\n  DbStatementSerializer,\n  IORedisInstrumentationConfig,\n  IORedisRequestHookInformation,\n  RedisRequestCustomAttributeFunction,\n  RedisResponseCustomAttributeFunction,\n} from './types';\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-redis';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, Span, SpanStatusCode } from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\n\nexport const endSpan = (span: Span, err?: Error | null) => {\n  if (err) {\n    span.setStatus({\n      code: SpanStatusCode.ERROR,\n      message: err.message,\n    });\n  }\n  span.end();\n};\n\nexport const getTracedCreateClient = (original: Function) => {\n  return function createClientTrace(this: any) {\n    const client = original.apply(this, arguments);\n    return context.bind(context.active(), client);\n  };\n};\n\nexport const getTracedCreateStreamTrace = (original: Function) => {\n  return function create_stream_trace(this: any) {\n    if (!Object.prototype.hasOwnProperty.call(this, 'stream')) {\n      Object.defineProperty(this, 'stream', {\n        get() {\n          return this._patched_redis_stream;\n        },\n        set(val: EventEmitter) {\n          context.bind(context.active(), val);\n          this._patched_redis_stream = val;\n        },\n      });\n    }\n    return original.apply(this, arguments);\n  };\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_REDIS = 'redis' as const;\n\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_REDIS = 'redis' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  endSpan,\n  getTracedCreateClient,\n  getTracedCreateStreamTrace,\n} from './utils';\nimport { RedisInstrumentationConfig } from '../types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from '../version';\nimport type { RedisCommand, RedisPluginClientTypes } from './internal-types';\nimport { Attributes, SpanKind, context, trace } from '@opentelemetry/api';\nimport {\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n  DB_SYSTEM_VALUE_REDIS,\n} from '../semconv';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\n\nexport class RedisInstrumentationV2_V3 extends InstrumentationBase {\n  static readonly COMPONENT = 'redis';\n  private _semconvStability: SemconvStability;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    super.setConfig(config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'redis',\n        ['>=2.6.0 <4'],\n        moduleExports => {\n          if (\n            isWrapped(\n              moduleExports.RedisClient.prototype['internal_send_command']\n            )\n          ) {\n            this._unwrap(\n              moduleExports.RedisClient.prototype,\n              'internal_send_command'\n            );\n          }\n          this._wrap(\n            moduleExports.RedisClient.prototype,\n            'internal_send_command',\n            this._getPatchInternalSendCommand()\n          );\n\n          if (isWrapped(moduleExports.RedisClient.prototype['create_stream'])) {\n            this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n          }\n          this._wrap(\n            moduleExports.RedisClient.prototype,\n            'create_stream',\n            this._getPatchCreateStream()\n          );\n\n          if (isWrapped(moduleExports.createClient)) {\n            this._unwrap(moduleExports, 'createClient');\n          }\n          this._wrap(\n            moduleExports,\n            'createClient',\n            this._getPatchCreateClient()\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          if (moduleExports === undefined) return;\n          this._unwrap(\n            moduleExports.RedisClient.prototype,\n            'internal_send_command'\n          );\n          this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n          this._unwrap(moduleExports, 'createClient');\n        }\n      ),\n    ];\n  }\n\n  /**\n   * Patch internal_send_command(...) to trace requests\n   */\n  private _getPatchInternalSendCommand() {\n    const instrumentation = this;\n    return function internal_send_command(original: Function) {\n      return function internal_send_command_trace(\n        this: RedisPluginClientTypes,\n        cmd?: RedisCommand\n      ) {\n        // Versions of redis (2.4+) use a single options object\n        // instead of named arguments\n        if (arguments.length !== 1 || typeof cmd !== 'object') {\n          // We don't know how to trace this call, so don't start/stop a span\n          return original.apply(this, arguments);\n        }\n\n        const config = instrumentation.getConfig();\n\n        const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n        if (config.requireParentSpan === true && hasNoParentSpan) {\n          return original.apply(this, arguments);\n        }\n\n        const dbStatementSerializer =\n          config?.dbStatementSerializer || defaultDbStatementSerializer;\n\n        const attributes: Attributes = {};\n\n        if (instrumentation._semconvStability & SemconvStability.OLD) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n            [ATTR_DB_STATEMENT]: dbStatementSerializer(cmd.command, cmd.args),\n          });\n        }\n\n        if (instrumentation._semconvStability & SemconvStability.STABLE) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_REDIS,\n            [ATTR_DB_OPERATION_NAME]: cmd.command,\n            [ATTR_DB_QUERY_TEXT]: dbStatementSerializer(cmd.command, cmd.args),\n          });\n        }\n\n        const span = instrumentation.tracer.startSpan(\n          `${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`,\n          {\n            kind: SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        // Set attributes for not explicitly typed RedisPluginClientTypes\n        if (this.connection_options) {\n          const connectionAttributes: Attributes = {};\n\n          if (instrumentation._semconvStability & SemconvStability.OLD) {\n            Object.assign(connectionAttributes, {\n              [ATTR_NET_PEER_NAME]: this.connection_options.host,\n              [ATTR_NET_PEER_PORT]: this.connection_options.port,\n            });\n          }\n\n          if (instrumentation._semconvStability & SemconvStability.STABLE) {\n            Object.assign(connectionAttributes, {\n              [ATTR_SERVER_ADDRESS]: this.connection_options.host,\n              [ATTR_SERVER_PORT]: this.connection_options.port,\n            });\n          }\n\n          span.setAttributes(connectionAttributes);\n        }\n\n        if (\n          this.address &&\n          instrumentation._semconvStability & SemconvStability.OLD\n        ) {\n          span.setAttribute(\n            ATTR_DB_CONNECTION_STRING,\n            `redis://${this.address}`\n          );\n        }\n\n        const originalCallback = arguments[0].callback;\n        if (originalCallback) {\n          const originalContext = context.active();\n          (arguments[0] as RedisCommand).callback = function callback(\n            this: unknown,\n            err: Error | null,\n            reply: T\n          ) {\n            if (config?.responseHook) {\n              const responseHook = config.responseHook;\n              safeExecuteInTheMiddle(\n                () => {\n                  responseHook(span, cmd.command, cmd.args, reply);\n                },\n                err => {\n                  if (err) {\n                    instrumentation._diag.error(\n                      'Error executing responseHook',\n                      err\n                    );\n                  }\n                },\n                true\n              );\n            }\n\n            endSpan(span, err);\n            return context.with(\n              originalContext,\n              originalCallback,\n              this,\n              ...arguments\n            );\n          };\n        }\n        try {\n          // Span will be ended in callback\n          return original.apply(this, arguments);\n        } catch (rethrow: any) {\n          endSpan(span, rethrow);\n          throw rethrow; // rethrow after ending span\n        }\n      };\n    };\n  }\n\n  private _getPatchCreateClient() {\n    return function createClient(original: Function) {\n      return getTracedCreateClient(original);\n    };\n  }\n\n  private _getPatchCreateStream() {\n    return function createReadStream(original: Function) {\n      return getTracedCreateStreamTrace(original);\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Attributes, DiagLogger } from '@opentelemetry/api';\nimport {\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_SYSTEM,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  DB_SYSTEM_VALUE_REDIS,\n  DB_SYSTEM_NAME_VALUE_REDIS,\n} from '../semconv';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\n\nexport function getClientAttributes(\n  diag: DiagLogger,\n  options: any,\n  semconvStability: SemconvStability\n): Attributes {\n  const attributes: Attributes = {};\n\n  if (semconvStability & SemconvStability.OLD) {\n    Object.assign(attributes, {\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_REDIS,\n      [ATTR_NET_PEER_NAME]: options?.socket?.host,\n      [ATTR_NET_PEER_PORT]: options?.socket?.port,\n      [ATTR_DB_CONNECTION_STRING]:\n        removeCredentialsFromDBConnectionStringAttribute(diag, options?.url),\n    });\n  }\n\n  if (semconvStability & SemconvStability.STABLE) {\n    Object.assign(attributes, {\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_REDIS,\n      [ATTR_SERVER_ADDRESS]: options?.socket?.host,\n      [ATTR_SERVER_PORT]: options?.socket?.port,\n    });\n  }\n\n  return attributes;\n}\n\n/**\n * removeCredentialsFromDBConnectionStringAttribute removes basic auth from url and user_pwd from query string\n *\n * Examples:\n *   redis://user:pass@localhost:6379/mydb => redis://localhost:6379/mydb\n *   redis://localhost:6379?db=mydb&user_pwd=pass => redis://localhost:6379?db=mydb\n */\nfunction removeCredentialsFromDBConnectionStringAttribute(\n  diag: DiagLogger,\n  url?: unknown\n): string | undefined {\n  if (typeof url !== 'string' || !url) {\n    return;\n  }\n\n  try {\n    const u = new URL(url);\n    u.searchParams.delete('user_pwd');\n    u.username = '';\n    u.password = '';\n    return u.href;\n  } catch (err) {\n    diag.error('failed to sanitize redis connection url', err);\n  }\n  return;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  trace,\n  context,\n  SpanKind,\n  Span,\n  SpanStatusCode,\n} from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { getClientAttributes } from './utils';\nimport { defaultDbStatementSerializer } from '@opentelemetry/redis-common';\nimport { RedisInstrumentationConfig } from '../types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from '../version';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_DB_STATEMENT } from '../semconv';\nimport type { MultiErrorReply } from './internal-types';\n\nconst OTEL_OPEN_SPANS = Symbol(\n  'opentelemetry.instrumentation.redis.open_spans'\n);\nconst MULTI_COMMAND_OPTIONS = Symbol(\n  'opentelemetry.instrumentation.redis.multi_command_options'\n);\n\ninterface MutliCommandInfo {\n  span: Span;\n  commandName: string;\n  commandArgs: Array;\n}\n\nexport class RedisInstrumentationV4_V5 extends InstrumentationBase {\n  static readonly COMPONENT = 'redis';\n  private _semconvStability: SemconvStability;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    super.setConfig(config);\n    this._semconvStability = config.semconvStability\n      ? config.semconvStability\n      : semconvStabilityFromStr(\n          'database',\n          process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n        );\n  }\n\n  protected init() {\n    // @node-redis/client is a new package introduced and consumed by 'redis 4.0.x'\n    // on redis@4.1.0 it was changed to @redis/client.\n    // we will instrument both packages\n    return [\n      this._getInstrumentationNodeModuleDefinition('@redis/client'),\n      this._getInstrumentationNodeModuleDefinition('@node-redis/client'),\n    ];\n  }\n\n  private _getInstrumentationNodeModuleDefinition(\n    basePackageName: string\n  ): InstrumentationNodeModuleDefinition {\n    const commanderModuleFile = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/commander.js`,\n      ['^1.0.0'],\n      (moduleExports: any, moduleVersion?: string) => {\n        const transformCommandArguments =\n          moduleExports.transformCommandArguments;\n        if (!transformCommandArguments) {\n          this._diag.error(\n            'internal instrumentation error, missing transformCommandArguments function'\n          );\n          return moduleExports;\n        }\n\n        // function name and signature changed in redis 4.1.0 from 'extendWithCommands' to 'attachCommands'\n        // the matching internal package names starts with 1.0.x (for redis 4.0.x)\n        const functionToPatch = moduleVersion?.startsWith('1.0.')\n          ? 'extendWithCommands'\n          : 'attachCommands';\n        // this is the function that extend a redis client with a list of commands.\n        // the function patches the commandExecutor to record a span\n        if (isWrapped(moduleExports?.[functionToPatch])) {\n          this._unwrap(moduleExports, functionToPatch);\n        }\n        this._wrap(\n          moduleExports,\n          functionToPatch,\n          this._getPatchExtendWithCommands(transformCommandArguments)\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        if (isWrapped(moduleExports?.extendWithCommands)) {\n          this._unwrap(moduleExports, 'extendWithCommands');\n        }\n        if (isWrapped(moduleExports?.attachCommands)) {\n          this._unwrap(moduleExports, 'attachCommands');\n        }\n      }\n    );\n\n    const multiCommanderModule = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/client/multi-command.js`,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        const redisClientMultiCommandPrototype =\n          moduleExports?.default?.prototype;\n\n        if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'exec');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'exec',\n          this._getPatchMultiCommandsExec(false)\n        );\n        if (isWrapped(redisClientMultiCommandPrototype?.execAsPipeline)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'execAsPipeline',\n          this._getPatchMultiCommandsExec(true)\n        );\n\n        if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n        }\n        this._wrap(\n          redisClientMultiCommandPrototype,\n          'addCommand',\n          this._getPatchMultiCommandsAddCommand()\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        const redisClientMultiCommandPrototype =\n          moduleExports?.default?.prototype;\n        if (isWrapped(redisClientMultiCommandPrototype?.exec)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'exec');\n        }\n        if (isWrapped(redisClientMultiCommandPrototype?.addCommand)) {\n          this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n        }\n      }\n    );\n\n    const clientIndexModule = new InstrumentationNodeModuleFile(\n      `${basePackageName}/dist/lib/client/index.js`,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        const redisClientPrototype = moduleExports?.default?.prototype;\n\n        // In some @redis/client versions 'multi' is a method. In later\n        // versions, as of https://github.com/redis/node-redis/pull/2324,\n        // 'MULTI' is a method and 'multi' is a property defined in the\n        // constructor that points to 'MULTI', and therefore it will not\n        // be defined on the prototype.\n        if (redisClientPrototype?.multi) {\n          if (isWrapped(redisClientPrototype?.multi)) {\n            this._unwrap(redisClientPrototype, 'multi');\n          }\n          this._wrap(\n            redisClientPrototype,\n            'multi',\n            this._getPatchRedisClientMulti()\n          );\n        }\n        if (redisClientPrototype?.MULTI) {\n          if (isWrapped(redisClientPrototype?.MULTI)) {\n            this._unwrap(redisClientPrototype, 'MULTI');\n          }\n          this._wrap(\n            redisClientPrototype,\n            'MULTI',\n            this._getPatchRedisClientMulti()\n          );\n        }\n\n        if (isWrapped(redisClientPrototype?.sendCommand)) {\n          this._unwrap(redisClientPrototype, 'sendCommand');\n        }\n        this._wrap(\n          redisClientPrototype,\n          'sendCommand',\n          this._getPatchRedisClientSendCommand()\n        );\n\n        this._wrap(\n          redisClientPrototype,\n          'connect',\n          this._getPatchedClientConnect()\n        );\n\n        return moduleExports;\n      },\n      (moduleExports: any) => {\n        const redisClientPrototype = moduleExports?.default?.prototype;\n        if (isWrapped(redisClientPrototype?.multi)) {\n          this._unwrap(redisClientPrototype, 'multi');\n        }\n        if (isWrapped(redisClientPrototype?.MULTI)) {\n          this._unwrap(redisClientPrototype, 'MULTI');\n        }\n        if (isWrapped(redisClientPrototype?.sendCommand)) {\n          this._unwrap(redisClientPrototype, 'sendCommand');\n        }\n      }\n    );\n\n    return new InstrumentationNodeModuleDefinition(\n      basePackageName,\n      ['^1.0.0', '^5.0.0'],\n      (moduleExports: any) => {\n        return moduleExports;\n      },\n      () => {},\n      [commanderModuleFile, multiCommanderModule, clientIndexModule]\n    );\n  }\n\n  // serves both for redis 4.0.x where function name is extendWithCommands\n  // and redis ^4.1.0 where function name is attachCommands\n  private _getPatchExtendWithCommands(transformCommandArguments: Function) {\n    const plugin = this;\n    return function extendWithCommandsPatchWrapper(original: Function) {\n      return function extendWithCommandsPatch(this: any, config: any) {\n        if (config?.BaseClass?.name !== 'RedisClient') {\n          return original.apply(this, arguments);\n        }\n\n        const origExecutor = config.executor;\n        config.executor = function (\n          this: any,\n          command: any,\n          args: Array\n        ) {\n          const redisCommandArguments = transformCommandArguments(\n            command,\n            args\n          ).args;\n          return plugin._traceClientCommand(\n            origExecutor,\n            this,\n            arguments,\n            redisCommandArguments\n          );\n        };\n        return original.apply(this, arguments);\n      };\n    };\n  }\n\n  private _getPatchMultiCommandsExec(isPipeline: boolean) {\n    const plugin = this;\n    return function execPatchWrapper(original: Function) {\n      return function execPatch(this: any) {\n        const execRes = original.apply(this, arguments);\n        if (typeof execRes?.then !== 'function') {\n          plugin._diag.error(\n            'non-promise result when patching exec/execAsPipeline'\n          );\n          return execRes;\n        }\n\n        return execRes\n          .then((redisRes: unknown[]) => {\n            const openSpans = this[OTEL_OPEN_SPANS];\n            plugin._endSpansWithRedisReplies(openSpans, redisRes, isPipeline);\n            return redisRes;\n          })\n          .catch((err: Error) => {\n            const openSpans = this[OTEL_OPEN_SPANS];\n            if (!openSpans) {\n              plugin._diag.error(\n                'cannot find open spans to end for multi/pipeline'\n              );\n            } else {\n              const replies =\n                err.constructor.name === 'MultiErrorReply'\n                  ? (err as MultiErrorReply).replies\n                  : new Array(openSpans.length).fill(err);\n              plugin._endSpansWithRedisReplies(openSpans, replies, isPipeline);\n            }\n            return Promise.reject(err);\n          });\n      };\n    };\n  }\n\n  private _getPatchMultiCommandsAddCommand() {\n    const plugin = this;\n    return function addCommandWrapper(original: Function) {\n      return function addCommandPatch(this: any, args: Array) {\n        return plugin._traceClientCommand(original, this, arguments, args);\n      };\n    };\n  }\n\n  private _getPatchRedisClientMulti() {\n    return function multiPatchWrapper(original: Function) {\n      return function multiPatch(this: any) {\n        const multiRes = original.apply(this, arguments);\n        multiRes[MULTI_COMMAND_OPTIONS] = this.options;\n        return multiRes;\n      };\n    };\n  }\n\n  private _getPatchRedisClientSendCommand() {\n    const plugin = this;\n    return function sendCommandWrapper(original: Function) {\n      return function sendCommandPatch(\n        this: any,\n        args: Array\n      ) {\n        return plugin._traceClientCommand(original, this, arguments, args);\n      };\n    };\n  }\n\n  private _getPatchedClientConnect() {\n    const plugin = this;\n    return function connectWrapper(original: Function) {\n      return function patchedConnect(this: any): Promise {\n        const options = this.options;\n        const attributes = getClientAttributes(\n          plugin._diag,\n          options,\n          plugin._semconvStability\n        );\n\n        const span = plugin.tracer.startSpan(\n          `${RedisInstrumentationV4_V5.COMPONENT}-connect`,\n          {\n            kind: SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        const res = context.with(trace.setSpan(context.active(), span), () => {\n          return original.apply(this);\n        });\n\n        return res\n          .then((result: unknown) => {\n            span.end();\n            return result;\n          })\n          .catch((error: Error) => {\n            span.recordException(error);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n            span.end();\n            return Promise.reject(error);\n          });\n      };\n    };\n  }\n\n  private _traceClientCommand(\n    origFunction: Function,\n    origThis: any,\n    origArguments: IArguments,\n    redisCommandArguments: Array\n  ) {\n    const hasNoParentSpan = trace.getSpan(context.active()) === undefined;\n    if (hasNoParentSpan && this.getConfig().requireParentSpan) {\n      return origFunction.apply(origThis, origArguments);\n    }\n\n    const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS];\n\n    const commandName = redisCommandArguments[0] as string; // types also allows it to be a Buffer, but in practice it only string\n    const commandArgs = redisCommandArguments.slice(1);\n\n    const dbStatementSerializer =\n      this.getConfig().dbStatementSerializer || defaultDbStatementSerializer;\n\n    const attributes = getClientAttributes(\n      this._diag,\n      clientOptions,\n      this._semconvStability\n    );\n    if (this._semconvStability & SemconvStability.STABLE) {\n      attributes[ATTR_DB_OPERATION_NAME] = commandName;\n    }\n    try {\n      const dbStatement = dbStatementSerializer(commandName, commandArgs);\n      if (dbStatement != null) {\n        if (this._semconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_STATEMENT] = dbStatement;\n        }\n        if (this._semconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_DB_QUERY_TEXT] = dbStatement;\n        }\n      }\n    } catch (e) {\n      this._diag.error('dbStatementSerializer throw an exception', e, {\n        commandName,\n      });\n    }\n\n    const span = this.tracer.startSpan(\n      `${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`,\n      {\n        kind: SpanKind.CLIENT,\n        attributes,\n      }\n    );\n\n    const res = context.with(trace.setSpan(context.active(), span), () => {\n      return origFunction.apply(origThis, origArguments);\n    });\n    if (typeof res?.then === 'function') {\n      res.then(\n        (redisRes: unknown) => {\n          this._endSpanWithResponse(\n            span,\n            commandName,\n            commandArgs,\n            redisRes,\n            undefined\n          );\n        },\n        (err: any) => {\n          this._endSpanWithResponse(span, commandName, commandArgs, null, err);\n        }\n      );\n    } else {\n      const redisClientMultiCommand = res as {\n        [OTEL_OPEN_SPANS]?: Array;\n      };\n      redisClientMultiCommand[OTEL_OPEN_SPANS] =\n        redisClientMultiCommand[OTEL_OPEN_SPANS] || [];\n      redisClientMultiCommand[OTEL_OPEN_SPANS]!.push({\n        span,\n        commandName,\n        commandArgs,\n      });\n    }\n    return res;\n  }\n\n  private _endSpansWithRedisReplies(\n    openSpans: Array,\n    replies: unknown[],\n    isPipeline = false\n  ) {\n    if (!openSpans) {\n      return this._diag.error(\n        'cannot find open spans to end for redis multi/pipeline'\n      );\n    }\n    if (replies.length !== openSpans.length) {\n      return this._diag.error(\n        'number of multi command spans does not match response from redis'\n      );\n    }\n    // Determine a single operation name for the batch of commands.\n    // If all commands are identical, include the command name (e.g., \"MULTI SET\").\n    // Otherwise, use a generic \"MULTI\" or \"PIPELINE\" label for the span.\n    const allCommands = openSpans.map(s => s.commandName);\n    const allSameCommand = allCommands.every(cmd => cmd === allCommands[0]);\n    const operationName = allSameCommand\n      ? (isPipeline ? 'PIPELINE ' : 'MULTI ') + allCommands[0]\n      : isPipeline\n        ? 'PIPELINE'\n        : 'MULTI';\n\n    for (let i = 0; i < openSpans.length; i++) {\n      const { span, commandArgs } = openSpans[i];\n      const currCommandRes = replies[i];\n      const [res, err] =\n        currCommandRes instanceof Error\n          ? [null, currCommandRes]\n          : [currCommandRes, undefined];\n\n      if (this._semconvStability & SemconvStability.STABLE) {\n        span.setAttribute(ATTR_DB_OPERATION_NAME, operationName);\n      }\n\n      this._endSpanWithResponse(span, allCommands[i], commandArgs, res, err);\n    }\n  }\n\n  private _endSpanWithResponse(\n    span: Span,\n    commandName: string,\n    commandArgs: Array,\n    response: unknown,\n    error: Error | undefined\n  ) {\n    const { responseHook } = this.getConfig();\n    if (!error && responseHook) {\n      try {\n        responseHook(span, commandName, commandArgs, response);\n      } catch (err) {\n        this._diag.error('responseHook throw an exception', err);\n      }\n    }\n    if (error) {\n      span.recordException(error);\n      span.setStatus({ code: SpanStatusCode.ERROR, message: error?.message });\n    }\n    span.end();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  InstrumentationBase,\n  InstrumentationModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport { RedisInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { RedisInstrumentationV2_V3 } from './v2-v3/instrumentation';\nimport { TracerProvider } from '@opentelemetry/api';\nimport { RedisInstrumentationV4_V5 } from './v4-v5/instrumentation';\n\nconst DEFAULT_CONFIG: RedisInstrumentationConfig = {\n  requireParentSpan: false,\n};\n\n// Wrapper RedisInstrumentation that address all supported versions\nexport class RedisInstrumentation extends InstrumentationBase {\n  private instrumentationV2_V3: RedisInstrumentationV2_V3;\n  private instrumentationV4_V5: RedisInstrumentationV4_V5;\n\n  // this is used to bypass a flaw in the base class constructor, which is calling\n  // member functions before the constructor has a chance to fully initialize the member variables.\n  private initialized = false;\n\n  constructor(config: RedisInstrumentationConfig = {}) {\n    const resolvedConfig = { ...DEFAULT_CONFIG, ...config };\n    super(PACKAGE_NAME, PACKAGE_VERSION, resolvedConfig);\n\n    this.instrumentationV2_V3 = new RedisInstrumentationV2_V3(this.getConfig());\n    this.instrumentationV4_V5 = new RedisInstrumentationV4_V5(this.getConfig());\n    this.initialized = true;\n  }\n\n  override setConfig(config: RedisInstrumentationConfig = {}) {\n    const newConfig = { ...DEFAULT_CONFIG, ...config };\n    super.setConfig(newConfig);\n    if (!this.initialized) {\n      return;\n    }\n\n    this.instrumentationV2_V3.setConfig(newConfig);\n    this.instrumentationV4_V5.setConfig(newConfig);\n  }\n\n  override init() {}\n\n  // Return underlying modules, as consumers (like https://github.com/DrewCorlin/opentelemetry-node-bundler-plugins) may\n  // expect them to be populated without knowing that this module wraps 2 instrumentations\n  override getModuleDefinitions(): InstrumentationModuleDefinition[] {\n    return [\n      ...this.instrumentationV2_V3.getModuleDefinitions(),\n      ...this.instrumentationV4_V5.getModuleDefinitions(),\n    ];\n  }\n\n  override setTracerProvider(tracerProvider: TracerProvider) {\n    super.setTracerProvider(tracerProvider);\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.setTracerProvider(tracerProvider);\n    this.instrumentationV4_V5.setTracerProvider(tracerProvider);\n  }\n\n  override enable() {\n    super.enable();\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.enable();\n    this.instrumentationV4_V5.enable();\n  }\n\n  override disable() {\n    super.disable();\n    if (!this.initialized) {\n      return;\n    }\n    this.instrumentationV2_V3.disable();\n    this.instrumentationV4_V5.disable();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { RedisInstrumentation } from './redis';\nexport type {\n  DbStatementSerializer,\n  RedisInstrumentationConfig,\n  RedisResponseCustomAttributeFunction,\n} from './types';\n","import type { CommandArgs as IORedisCommandArgs } from '@opentelemetry/instrumentation-ioredis';\n\nconst SINGLE_ARG_COMMANDS = ['get', 'set', 'setex'];\n\nexport const GET_COMMANDS = ['get', 'mget'];\nexport const SET_COMMANDS = ['set', 'setex'];\n// todo: del, expire\n\n/** Checks if a given command is in the list of redis commands.\n *  Useful because commands can come in lowercase or uppercase (depending on the library). */\nexport function isInCommands(redisCommands: string[], command: string): boolean {\n  return redisCommands.includes(command.toLowerCase());\n}\n\n/** Determine cache operation based on redis statement */\nexport function getCacheOperation(\n  command: string,\n): 'cache.get' | 'cache.put' | 'cache.remove' | 'cache.flush' | undefined {\n  if (isInCommands(GET_COMMANDS, command)) {\n    return 'cache.get';\n  } else if (isInCommands(SET_COMMANDS, command)) {\n    return 'cache.put';\n  } else {\n    return undefined;\n  }\n}\n\nfunction keyHasPrefix(key: string, prefixes: string[]): boolean {\n  return prefixes.some(prefix => key.startsWith(prefix));\n}\n\n/** Safely converts a redis key to a string (comma-separated if there are multiple keys) */\nexport function getCacheKeySafely(redisCommand: string, cmdArgs: IORedisCommandArgs): string[] | undefined {\n  try {\n    if (cmdArgs.length === 0) {\n      return undefined;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const processArg = (arg: string | Buffer | number | any[]): string[] => {\n      if (typeof arg === 'string' || typeof arg === 'number' || Buffer.isBuffer(arg)) {\n        return [arg.toString()];\n      } else if (Array.isArray(arg)) {\n        return flatten(arg.map(arg => processArg(arg)));\n      } else {\n        return [''];\n      }\n    };\n\n    const firstArg = cmdArgs[0];\n    if (isInCommands(SINGLE_ARG_COMMANDS, redisCommand) && firstArg != null) {\n      return processArg(firstArg);\n    }\n\n    return flatten(cmdArgs.map(arg => processArg(arg)));\n  } catch {\n    return undefined;\n  }\n}\n\n/** Determines whether a redis operation should be considered as \"cache operation\" by checking if a key is prefixed.\n *  We only support certain commands (such as 'set', 'get', 'mget'). */\nexport function shouldConsiderForCache(redisCommand: string, keys: string[], prefixes: string[]): boolean {\n  if (!getCacheOperation(redisCommand)) {\n    return false;\n  }\n\n  for (const key of keys) {\n    if (keyHasPrefix(key, prefixes)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/** Calculates size based on the cache response value */\nexport function calculateCacheItemSize(response: unknown): number | undefined {\n  const getSize = (value: unknown): number | undefined => {\n    try {\n      if (Buffer.isBuffer(value)) return value.byteLength;\n      else if (typeof value === 'string') return value.length;\n      else if (typeof value === 'number') return value.toString().length;\n      else if (value === null || value === undefined) return 0;\n      return JSON.stringify(value).length;\n    } catch {\n      return undefined;\n    }\n  };\n\n  return Array.isArray(response)\n    ? response.reduce((acc: number | undefined, curr) => {\n        const size = getSize(curr);\n        return typeof size === 'number' ? (acc !== undefined ? acc + size : size) : acc;\n      }, 0)\n    : getSize(response);\n}\n\ntype NestedArray = Array | T>;\n\nfunction flatten(input: NestedArray): T[] {\n  const result: T[] = [];\n\n  const flattenHelper = (input: NestedArray): void => {\n    input.forEach((el: T | NestedArray) => {\n      if (Array.isArray(el)) {\n        flattenHelper(el);\n      } else {\n        result.push(el);\n      }\n    });\n  };\n\n  flattenHelper(input);\n  return result;\n}\n","import type { Span } from '@opentelemetry/api';\nimport type { RedisResponseCustomAttributeFunction } from '@opentelemetry/instrumentation-ioredis';\nimport { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  defineIntegration,\n  SEMANTIC_ATTRIBUTE_CACHE_HIT,\n  SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,\n  SEMANTIC_ATTRIBUTE_CACHE_KEY,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n  truncate,\n} from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport {\n  calculateCacheItemSize,\n  GET_COMMANDS,\n  getCacheKeySafely,\n  getCacheOperation,\n  isInCommands,\n  shouldConsiderForCache,\n} from '../../utils/redisCache';\n\ninterface RedisOptions {\n  /**\n   * Define cache prefixes for cache keys that should be captured as a cache span.\n   *\n   * Setting this to, for example, `['user:']` will capture cache keys that start with `user:`.\n   */\n  cachePrefixes?: string[];\n  /**\n   * Maximum length of the cache key added to the span description. If the key exceeds this length, it will be truncated.\n   *\n   * Passing `0` will use the full cache key without truncation.\n   *\n   * By default, the full cache key is used.\n   */\n  maxCacheKeyLength?: number;\n}\n\nconst INTEGRATION_NAME = 'Redis';\n\n/* Only exported for testing purposes */\nexport let _redisOptions: RedisOptions = {};\n\n/* Only exported for testing purposes */\nexport const cacheResponseHook: RedisResponseCustomAttributeFunction = (\n  span: Span,\n  redisCommand,\n  cmdArgs,\n  response,\n) => {\n  span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.redis');\n\n  const safeKey = getCacheKeySafely(redisCommand, cmdArgs);\n  const cacheOperation = getCacheOperation(redisCommand);\n\n  if (\n    !safeKey ||\n    !cacheOperation ||\n    !_redisOptions.cachePrefixes ||\n    !shouldConsiderForCache(redisCommand, safeKey, _redisOptions.cachePrefixes)\n  ) {\n    // not relevant for cache\n    return;\n  }\n\n  // otel/ioredis seems to be using the old standard, as there was a change to those params: https://github.com/open-telemetry/opentelemetry-specification/issues/3199\n  // We are using params based on the docs: https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/\n  const networkPeerAddress = spanToJSON(span).data['net.peer.name'];\n  const networkPeerPort = spanToJSON(span).data['net.peer.port'];\n  if (networkPeerPort && networkPeerAddress) {\n    span.setAttributes({ 'network.peer.address': networkPeerAddress, 'network.peer.port': networkPeerPort });\n  }\n\n  const cacheItemSize = calculateCacheItemSize(response);\n\n  if (cacheItemSize) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, cacheItemSize);\n  }\n\n  if (isInCommands(GET_COMMANDS, redisCommand) && cacheItemSize !== undefined) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_HIT, cacheItemSize > 0);\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: cacheOperation,\n    [SEMANTIC_ATTRIBUTE_CACHE_KEY]: safeKey,\n  });\n\n  // todo: change to string[] once EAP supports it\n  const spanDescription = safeKey.join(', ');\n\n  span.updateName(\n    _redisOptions.maxCacheKeyLength ? truncate(spanDescription, _redisOptions.maxCacheKeyLength) : spanDescription,\n  );\n};\n\nconst instrumentIORedis = generateInstrumentOnce(`${INTEGRATION_NAME}.IORedis`, () => {\n  return new IORedisInstrumentation({\n    responseHook: cacheResponseHook,\n  });\n});\n\nconst instrumentRedisModule = generateInstrumentOnce(`${INTEGRATION_NAME}.Redis`, () => {\n  return new RedisInstrumentation({\n    responseHook: cacheResponseHook,\n  });\n});\n\n/** To be able to preload all Redis OTel instrumentations with just one ID (\"Redis\"), all the instrumentations are generated in this one function  */\nexport const instrumentRedis = Object.assign(\n  (): void => {\n    instrumentIORedis();\n    instrumentRedisModule();\n\n    // todo: implement them gradually\n    // new LegacyRedisInstrumentation({}),\n  },\n  { id: INTEGRATION_NAME },\n);\n\nconst _redisIntegration = ((options: RedisOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      _redisOptions = options;\n      instrumentRedis();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [redis](https://www.npmjs.com/package/redis) and\n * [ioredis](https://www.npmjs.com/package/ioredis) libraries.\n *\n * For more information, see the [`redisIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/redis/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.redisIntegration()],\n * });\n * ```\n */\nexport const redisIntegration = defineIntegration(_redisIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as pgTypes from 'pg';\nimport type * as pgPoolTypes from 'pg-pool';\n\nexport type PostgresCallback = (err: Error, res: object) => unknown;\n\n// NB: this type describes the shape of a parsed, normalized form of the\n// connection information that's stored inside each pg.Client instance. It's\n// _not_ the same as the ConnectionConfig type exported from `@types/pg`. That\n// type defines how data must be _passed in_ when creating a new `pg.Client`,\n// which doesn't necessarily match the normalized internal form. E.g., a user\n// can call `new Client({ connectionString: '...' }), but `connectionString`\n// will never show up in the type below, because only the extracted host, port,\n// etc. are recorded in this normalized config. The keys listed below are also\n// incomplete, which is fine because the type is internal and these keys are the\n// only ones our code is reading. See https://github.com/brianc/node-postgres/blob/fde5ec586e49258dfc4a2fcd861fcdecb4794fc3/lib/client.js#L25\nexport interface PgParsedConnectionParams {\n  database?: string;\n  host?: string;\n  namespace?: string;\n  port?: number;\n  user?: string;\n}\n\nexport interface PgClientExtended extends pgTypes.Client {\n  connectionParameters: PgParsedConnectionParams;\n}\n\nexport type PgPoolCallback = (\n  err: Error,\n  client: any,\n  done: (release?: any) => void\n) => void;\n\nexport interface PgPoolOptionsParams {\n  allowExitOnIdle: boolean;\n  connectionString?: string; // connection string if provided directly\n  database: string;\n  host: string;\n  idleTimeoutMillis: number; // the minimum amount of time that an object may sit idle in the pool before it is eligible for eviction due to idle time\n  max: number;\n  maxClient: number; // maximum size of the pool\n  maxLifetimeSeconds: number;\n  maxUses: number;\n  namespace: string;\n  port: number;\n  user: string;\n}\n\nexport const EVENT_LISTENERS_SET = Symbol(\n  'opentelemetry.instrumentation.pg.eventListenersSet'\n);\n\nexport interface PgPoolExtended extends pgPoolTypes {\n  options: PgPoolOptionsParams;\n  [EVENT_LISTENERS_SET]?: boolean; // flag to identify if the event listeners for instrumentation have been set\n}\n\nexport type PgClientConnect = (callback?: Function) => Promise | void;\n","/*\n * Copyright The OpenTelemetry Authors\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// Postgresql specific attributes not covered by semantic conventions\nexport enum AttributeNames {\n  PG_VALUES = 'db.postgresql.values',\n  PG_PLAN = 'db.postgresql.plan',\n  IDLE_TIMEOUT_MILLIS = 'db.postgresql.idle.timeout.millis',\n  MAX_CLIENT = 'db.postgresql.max.client',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, instrumentation **SHOULD** use a combination of parameters that would make the name unique, for example, combining attributes `server.address`, `server.port`, and `db.namespace`, formatted as `server.address:server.port/db.namespace`. Instrumentations that generate connection pool name following different patterns **SHOULD** document it.\n *\n * @example myDataSource\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CLIENT_CONNECTION_POOL_NAME =\n  'db.client.connection.pool.name' as const;\n\n/**\n * The state of a connection in the pool\n *\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_DB_CLIENT_CONNECTION_STATE =\n  'db.client.connection.state' as const;\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle' as const;\n\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexport const DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used' as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexport const DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql' as const;\n\n/**\n * The number of connections that are currently in state described by the `state` attribute\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_COUNT =\n  'db.client.connection.count' as const;\n\n/**\n * The number of current pending requests for an open connection\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS =\n  'db.client.connection.pending_requests' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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// Contains span names produced by instrumentation\nexport enum SpanNames {\n  QUERY_PREFIX = 'pg.query',\n  CONNECT = 'pg.connect',\n  POOL_CONNECT = 'pg-pool.connect',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  context,\n  trace,\n  Span,\n  SpanStatusCode,\n  Tracer,\n  SpanKind,\n  diag,\n  UpDownCounter,\n  Attributes,\n} from '@opentelemetry/api';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  ATTR_DB_QUERY_TEXT,\n  DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_CLIENT_CONNECTION_POOL_NAME,\n  ATTR_DB_CLIENT_CONNECTION_STATE,\n  DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n  DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_NAME,\n  ATTR_DB_USER,\n  DB_SYSTEM_VALUE_POSTGRESQL,\n  ATTR_DB_CONNECTION_STRING,\n  ATTR_NET_PEER_PORT,\n  ATTR_NET_PEER_NAME,\n  ATTR_DB_STATEMENT,\n} from './semconv';\nimport {\n  PgClientExtended,\n  PostgresCallback,\n  PgPoolCallback,\n  PgPoolExtended,\n  PgParsedConnectionParams,\n  PgPoolOptionsParams,\n} from './internal-types';\nimport { PgInstrumentationConfig } from './types';\nimport type * as pgTypes from 'pg';\nimport {\n  safeExecuteInTheMiddle,\n  SemconvStability,\n} from '@opentelemetry/instrumentation';\nimport { SpanNames } from './enums/SpanNames';\n\n/**\n * Helper function to get a low cardinality span name from whatever info we have\n * about the query.\n *\n * This is tricky, because we don't have most of the information (table name,\n * operation name, etc) the spec recommends using to build a low-cardinality\n * value w/o parsing. So, we use db.name and assume that, if the query's a named\n * prepared statement, those `name` values will be low cardinality. If we don't\n * have a named prepared statement, we try to parse an operation (despite the\n * spec's warnings).\n *\n * @params dbName The name of the db against which this query is being issued,\n *   which could be missing if no db name was given at the time that the\n *   connection was established.\n * @params queryConfig Information we have about the query being issued, typed\n *   to reflect only the validation we've actually done on the args to\n *   `client.query()`. This will be undefined if `client.query()` was called\n *   with invalid arguments.\n */\nexport function getQuerySpanName(\n  dbName: string | undefined,\n  queryConfig?: { text: string; name?: unknown }\n) {\n  // NB: when the query config is invalid, we omit the dbName too, so that\n  // someone (or some tool) reading the span name doesn't misinterpret the\n  // dbName as being a prepared statement or sql commit name.\n  if (!queryConfig) return SpanNames.QUERY_PREFIX;\n\n  // Either the name of a prepared statement; or an attempted parse\n  // of the SQL command, normalized to uppercase; or unknown.\n  const command =\n    typeof queryConfig.name === 'string' && queryConfig.name\n      ? queryConfig.name\n      : parseNormalizedOperationName(queryConfig.text);\n\n  return `${SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`;\n}\n\nexport function parseNormalizedOperationName(queryText: string) {\n  // Trim the query text to handle leading/trailing whitespace\n  const trimmedQuery = queryText.trim();\n  const indexOfFirstSpace = trimmedQuery.indexOf(' ');\n  let sqlCommand =\n    indexOfFirstSpace === -1\n      ? trimmedQuery\n      : trimmedQuery.slice(0, indexOfFirstSpace);\n  sqlCommand = sqlCommand.toUpperCase();\n\n  // Handle query text being \"COMMIT;\", which has an extra semicolon before the space.\n  return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand;\n}\n\nexport function parseAndMaskConnectionString(connectionString: string): string {\n  try {\n    // Parse the connection string\n    const url = new URL(connectionString);\n\n    // Remove all auth information (username and password)\n    url.username = '';\n    url.password = '';\n\n    return url.toString();\n  } catch (e) {\n    // If parsing fails, return a generic connection string\n    return 'postgresql://localhost:5432/';\n  }\n}\n\nexport function getConnectionString(\n  params: PgParsedConnectionParams | PgPoolOptionsParams\n) {\n  if ('connectionString' in params && params.connectionString) {\n    return parseAndMaskConnectionString(params.connectionString);\n  }\n  const host = params.host || 'localhost';\n  const port = params.port || 5432;\n  const database = params.database || '';\n  return `postgresql://${host}:${port}/${database}`;\n}\n\nfunction getPort(port: number | undefined): number | undefined {\n  // Port may be NaN as parseInt() is used on the value, passing null will result in NaN being parsed.\n  // https://github.com/brianc/node-postgres/blob/2a8efbee09a284be12748ed3962bc9b816965e36/packages/pg/lib/connection-parameters.js#L66\n  if (Number.isInteger(port)) {\n    return port;\n  }\n\n  // Unable to find the default used in pg code, so falling back to 'undefined'.\n  return undefined;\n}\n\nexport function getSemanticAttributesFromConnection(\n  params: PgParsedConnectionParams,\n  semconvStability: SemconvStability\n) {\n  let attributes: Attributes = {};\n\n  if (semconvStability & SemconvStability.OLD) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n      [ATTR_DB_NAME]: params.database,\n      [ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n      [ATTR_DB_USER]: params.user,\n      [ATTR_NET_PEER_NAME]: params.host, // required\n      [ATTR_NET_PEER_PORT]: getPort(params.port),\n    };\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n      [ATTR_DB_NAMESPACE]: params.namespace,\n      [ATTR_SERVER_ADDRESS]: params.host,\n      [ATTR_SERVER_PORT]: getPort(params.port),\n    };\n  }\n\n  return attributes;\n}\n\nexport function getSemanticAttributesFromPoolConnection(\n  params: PgPoolOptionsParams,\n  semconvStability: SemconvStability\n) {\n  let url: URL | undefined;\n  try {\n    url = params.connectionString\n      ? new URL(params.connectionString)\n      : undefined;\n  } catch (e) {\n    url = undefined;\n  }\n  let attributes: Attributes = {\n    [AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis,\n    [AttributeNames.MAX_CLIENT]: params.maxClient,\n  };\n\n  if (semconvStability & SemconvStability.OLD) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n      [ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database,\n      [ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n      [ATTR_NET_PEER_NAME]: url?.hostname ?? params.host,\n      [ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port),\n      [ATTR_DB_USER]: url?.username ?? params.user,\n    };\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    attributes = {\n      ...attributes,\n      [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n      [ATTR_DB_NAMESPACE]: params.namespace,\n      [ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host,\n      [ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port),\n    };\n  }\n\n  return attributes;\n}\n\nexport function shouldSkipInstrumentation(\n  instrumentationConfig: PgInstrumentationConfig\n) {\n  return (\n    instrumentationConfig.requireParentSpan === true &&\n    trace.getSpan(context.active()) === undefined\n  );\n}\n\n// Create a span from our normalized queryConfig object,\n// or return a basic span if no queryConfig was given/could be created.\nexport function handleConfigQuery(\n  this: PgClientExtended,\n  tracer: Tracer,\n  instrumentationConfig: PgInstrumentationConfig,\n  semconvStability: SemconvStability,\n  queryConfig?: { text: string; values?: unknown; name?: unknown }\n) {\n  // Create child span.\n  const { connectionParameters } = this;\n  const dbName = connectionParameters.database;\n\n  const spanName = getQuerySpanName(dbName, queryConfig);\n  const span = tracer.startSpan(spanName, {\n    kind: SpanKind.CLIENT,\n    attributes: getSemanticAttributesFromConnection(\n      connectionParameters,\n      semconvStability\n    ),\n  });\n\n  if (!queryConfig) {\n    return span;\n  }\n\n  // Set attributes\n  if (queryConfig.text) {\n    if (semconvStability & SemconvStability.OLD) {\n      span.setAttribute(ATTR_DB_STATEMENT, queryConfig.text);\n    }\n    if (semconvStability & SemconvStability.STABLE) {\n      span.setAttribute(ATTR_DB_QUERY_TEXT, queryConfig.text);\n    }\n  }\n\n  if (\n    instrumentationConfig.enhancedDatabaseReporting &&\n    Array.isArray(queryConfig.values)\n  ) {\n    try {\n      const convertedValues = queryConfig.values.map(value => {\n        if (value == null) {\n          return 'null';\n        } else if (value instanceof Buffer) {\n          return value.toString();\n        } else if (typeof value === 'object') {\n          if (typeof value.toPostgres === 'function') {\n            return value.toPostgres();\n          }\n          return JSON.stringify(value);\n        } else {\n          //string, number\n          return value.toString();\n        }\n      });\n      span.setAttribute(AttributeNames.PG_VALUES, convertedValues);\n    } catch (e) {\n      diag.error('failed to stringify ', queryConfig.values, e);\n    }\n  }\n\n  // Set plan name attribute, if present\n  if (typeof queryConfig.name === 'string') {\n    span.setAttribute(AttributeNames.PG_PLAN, queryConfig.name);\n  }\n\n  return span;\n}\n\nexport function handleExecutionResult(\n  config: PgInstrumentationConfig,\n  span: Span,\n  pgResult: pgTypes.QueryResult | pgTypes.QueryArrayResult | unknown\n) {\n  if (typeof config.responseHook === 'function') {\n    safeExecuteInTheMiddle(\n      () => {\n        config.responseHook!(span, {\n          data: pgResult as pgTypes.QueryResult | pgTypes.QueryArrayResult,\n        });\n      },\n      err => {\n        if (err) {\n          diag.error('Error running response hook', err);\n        }\n      },\n      true\n    );\n  }\n}\n\nexport function patchCallback(\n  instrumentationConfig: PgInstrumentationConfig,\n  span: Span,\n  cb: PostgresCallback,\n  attributes: Attributes,\n  recordDuration: { (): void }\n): PostgresCallback {\n  return function patchedCallback(\n    this: PgClientExtended,\n    err: Error,\n    res: object\n  ) {\n    if (err) {\n      if (Object.prototype.hasOwnProperty.call(err, 'code')) {\n        attributes[ATTR_ERROR_TYPE] = (err as any)['code'];\n      }\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    } else {\n      handleExecutionResult(instrumentationConfig, span, res);\n    }\n\n    recordDuration();\n    span.end();\n    cb.call(this, err, res);\n  };\n}\n\nexport function getPoolName(pool: PgPoolOptionsParams): string {\n  let poolName = '';\n  poolName += (pool?.host ? `${pool.host}` : 'unknown_host') + ':';\n  poolName += (pool?.port ? `${pool.port}` : 'unknown_port') + '/';\n  poolName += pool?.database ? `${pool.database}` : 'unknown_database';\n\n  return poolName.trim();\n}\n\nexport interface poolConnectionsCounter {\n  used: number;\n  idle: number;\n  pending: number;\n}\n\nexport function updateCounter(\n  poolName: string,\n  pool: PgPoolExtended,\n  connectionCount: UpDownCounter,\n  connectionPendingRequests: UpDownCounter,\n  latestCounter: poolConnectionsCounter\n): poolConnectionsCounter {\n  const all = pool.totalCount;\n  const pending = pool.waitingCount;\n  const idle = pool.idleCount;\n  const used = all - idle;\n\n  connectionCount.add(used - latestCounter.used, {\n    [ATTR_DB_CLIENT_CONNECTION_STATE]: DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  connectionCount.add(idle - latestCounter.idle, {\n    [ATTR_DB_CLIENT_CONNECTION_STATE]: DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  connectionPendingRequests.add(pending - latestCounter.pending, {\n    [ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n  });\n\n  return { used: used, idle: idle, pending: pending };\n}\n\nexport function patchCallbackPGPool(\n  span: Span,\n  cb: PgPoolCallback\n): PgPoolCallback {\n  return function patchedCallback(\n    this: PgPoolExtended,\n    err: Error,\n    res: object,\n    done: any\n  ) {\n    if (err) {\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    }\n    span.end();\n    cb.call(this, err, res, done);\n  };\n}\n\nexport function patchClientConnectCallback(span: Span, cb: Function): Function {\n  return function patchedClientConnectCallback(\n    this: pgTypes.Client,\n    err: Error\n  ) {\n    if (err) {\n      if (err instanceof Error) {\n        span.recordException(sanitizedErrorMessage(err));\n      }\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: err.message,\n      });\n    }\n    span.end();\n    cb.apply(this, arguments);\n  };\n}\n\n/**\n * Attempt to get a message string from a thrown value, while being quite\n * defensive, to recognize the fact that, in JS, any kind of value (even\n * primitives) can be thrown.\n */\nexport function getErrorMessage(e: unknown) {\n  return typeof e === 'object' && e !== null && 'message' in e\n    ? String((e as { message?: unknown }).message)\n    : undefined;\n}\n\nexport function isObjectWithTextString(it: unknown): it is ObjectWithText {\n  return (\n    typeof it === 'object' &&\n    typeof (it as null | { text?: unknown })?.text === 'string'\n  );\n}\n\nexport type ObjectWithText = {\n  text: string;\n  [k: string]: unknown;\n};\n\n/**\n * Generates a sanitized message for the error.\n * Only includes the error type and PostgreSQL error code, omitting any sensitive details.\n */\nexport function sanitizedErrorMessage(error: unknown): string {\n  const name = (error as any)?.name ?? 'PostgreSQLError';\n  const code = (error as any)?.code ?? 'UNKNOWN';\n\n  return `PostgreSQL error of type '${name}' occurred (code: ${code})`;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.66.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-pg';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n  InstrumentationNodeModuleFile,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  context,\n  trace,\n  Span,\n  SpanStatusCode,\n  SpanKind,\n  Histogram,\n  ValueType,\n  Attributes,\n  HrTime,\n  UpDownCounter,\n} from '@opentelemetry/api';\nimport type * as pgTypes from 'pg';\nimport type * as pgPoolTypes from 'pg-pool';\nimport {\n  PgClientConnect,\n  PgClientExtended,\n  PostgresCallback,\n  PgPoolExtended,\n  PgPoolCallback,\n  EVENT_LISTENERS_SET,\n} from './internal-types';\nimport { PgInstrumentationConfig } from './types';\nimport * as utils from './utils';\nimport { addSqlCommenterComment } from '@opentelemetry/sql-common';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { SpanNames } from './enums/SpanNames';\nimport {\n  hrTime,\n  hrTimeDuration,\n  hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n  ATTR_ERROR_TYPE,\n  ATTR_SERVER_PORT,\n  ATTR_SERVER_ADDRESS,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_SYSTEM_NAME,\n  METRIC_DB_CLIENT_OPERATION_DURATION,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  METRIC_DB_CLIENT_CONNECTION_COUNT,\n  METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,\n  ATTR_DB_SYSTEM,\n  DB_SYSTEM_VALUE_POSTGRESQL,\n} from './semconv';\n\nfunction extractModuleExports(module: any) {\n  return module[Symbol.toStringTag] === 'Module'\n    ? module.default // ESM\n    : module; // CommonJS\n}\n\nexport class PgInstrumentation extends InstrumentationBase {\n  declare private _operationDuration: Histogram;\n  declare private _connectionsCount: UpDownCounter;\n  declare private _connectionPendingRequests: UpDownCounter;\n  // Pool events connect, acquire, release and remove can be called\n  // multiple times without changing the values of total, idle and waiting\n  // connections. The _connectionsCounter is used to keep track of latest\n  // values and only update the metrics _connectionsCount and _connectionPendingRequests\n  // when the value change.\n  private _connectionsCounter: utils.poolConnectionsCounter = {\n    used: 0,\n    idle: 0,\n    pending: 0,\n  };\n  private _semconvStability: SemconvStability;\n\n  constructor(config: PgInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override _updateMetricInstruments() {\n    this._operationDuration = this.meter.createHistogram(\n      METRIC_DB_CLIENT_OPERATION_DURATION,\n      {\n        description: 'Duration of database client operations.',\n        unit: 's',\n        valueType: ValueType.DOUBLE,\n        advice: {\n          explicitBucketBoundaries: [\n            0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10,\n          ],\n        },\n      }\n    );\n\n    this._connectionsCounter = {\n      idle: 0,\n      pending: 0,\n      used: 0,\n    };\n    this._connectionsCount = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTION_COUNT,\n      {\n        description:\n          'The number of connections that are currently in state described by the state attribute.',\n        unit: '{connection}',\n      }\n    );\n    this._connectionPendingRequests = this.meter.createUpDownCounter(\n      METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,\n      {\n        description:\n          'The number of current pending requests for an open connection.',\n        unit: '{connection}',\n      }\n    );\n  }\n\n  protected init() {\n    const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9'];\n    const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4'];\n\n    const modulePgNativeClient = new InstrumentationNodeModuleFile(\n      'pg/lib/native/client.js',\n      SUPPORTED_PG_VERSIONS,\n      this._patchPgClient.bind(this),\n      this._unpatchPgClient.bind(this)\n    );\n\n    const modulePgClient = new InstrumentationNodeModuleFile(\n      'pg/lib/client.js',\n      SUPPORTED_PG_VERSIONS,\n      this._patchPgClient.bind(this),\n      this._unpatchPgClient.bind(this)\n    );\n\n    const modulePG = new InstrumentationNodeModuleDefinition(\n      'pg',\n      SUPPORTED_PG_VERSIONS,\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n\n        this._patchPgClient(moduleExports.Client);\n        return module;\n      },\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n\n        this._unpatchPgClient(moduleExports.Client);\n        return module;\n      },\n      [modulePgClient, modulePgNativeClient]\n    );\n\n    const modulePGPool = new InstrumentationNodeModuleDefinition(\n      'pg-pool',\n      SUPPORTED_PG_POOL_VERSIONS,\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n        if (isWrapped(moduleExports.prototype.connect)) {\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n        this._wrap(\n          moduleExports.prototype,\n          'connect',\n          this._getPoolConnectPatch() as any\n        );\n        return moduleExports;\n      },\n      (module: any) => {\n        const moduleExports = extractModuleExports(module);\n        if (isWrapped(moduleExports.prototype.connect)) {\n          this._unwrap(moduleExports.prototype, 'connect');\n        }\n      }\n    );\n\n    return [modulePG, modulePGPool];\n  }\n\n  private _patchPgClient(module: any) {\n    if (!module) {\n      return;\n    }\n\n    const moduleExports = extractModuleExports(module);\n\n    if (isWrapped(moduleExports.prototype.query)) {\n      this._unwrap(moduleExports.prototype, 'query');\n    }\n\n    if (isWrapped(moduleExports.prototype.connect)) {\n      this._unwrap(moduleExports.prototype, 'connect');\n    }\n\n    this._wrap(\n      moduleExports.prototype,\n      'query',\n      this._getClientQueryPatch() as any\n    );\n\n    this._wrap(\n      moduleExports.prototype,\n      'connect',\n      this._getClientConnectPatch() as any\n    );\n\n    return module;\n  }\n\n  private _unpatchPgClient(module: any) {\n    const moduleExports = extractModuleExports(module);\n\n    if (isWrapped(moduleExports.prototype.query)) {\n      this._unwrap(moduleExports.prototype, 'query');\n    }\n\n    if (isWrapped(moduleExports.prototype.connect)) {\n      this._unwrap(moduleExports.prototype, 'connect');\n    }\n\n    return module;\n  }\n\n  private _getClientConnectPatch() {\n    const plugin = this;\n    return (original: PgClientConnect) => {\n      return function connect(this: pgTypes.Client, callback?: Function) {\n        const config = plugin.getConfig();\n\n        if (\n          utils.shouldSkipInstrumentation(config) ||\n          config.ignoreConnectSpans\n        ) {\n          return original.call(this, callback);\n        }\n\n        const span = plugin.tracer.startSpan(SpanNames.CONNECT, {\n          kind: SpanKind.CLIENT,\n          attributes: utils.getSemanticAttributesFromConnection(\n            this,\n            plugin._semconvStability\n          ),\n        });\n\n        if (callback) {\n          const parentSpan = trace.getSpan(context.active());\n          callback = utils.patchClientConnectCallback(span, callback);\n          if (parentSpan) {\n            callback = context.bind(context.active(), callback);\n          }\n        }\n\n        const connectResult: unknown = context.with(\n          trace.setSpan(context.active(), span),\n          () => {\n            return original.call(this, callback);\n          }\n        );\n\n        return handleConnectResult(span, connectResult);\n      };\n    };\n  }\n\n  private recordOperationDuration(attributes: Attributes, startTime: HrTime) {\n    const metricsAttributes: Attributes = {};\n    const keysToCopy: string[] = [\n      ATTR_DB_NAMESPACE,\n      ATTR_ERROR_TYPE,\n      ATTR_SERVER_PORT,\n      ATTR_SERVER_ADDRESS,\n      ATTR_DB_OPERATION_NAME,\n    ];\n    if (this._semconvStability & SemconvStability.OLD) {\n      keysToCopy.push(ATTR_DB_SYSTEM);\n    }\n    if (this._semconvStability & SemconvStability.STABLE) {\n      keysToCopy.push(ATTR_DB_SYSTEM_NAME);\n    }\n\n    keysToCopy.forEach(key => {\n      if (key in attributes) {\n        metricsAttributes[key] = attributes[key];\n      }\n    });\n\n    const durationSeconds =\n      hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000;\n    this._operationDuration.record(durationSeconds, metricsAttributes);\n  }\n\n  private _getClientQueryPatch() {\n    const plugin = this;\n    return (original: typeof pgTypes.Client.prototype.query) => {\n      this._diag.debug('Patching pg.Client.prototype.query');\n      return function query(this: PgClientExtended, ...args: unknown[]) {\n        if (utils.shouldSkipInstrumentation(plugin.getConfig())) {\n          return original.apply(this, args as never);\n        }\n        const startTime = hrTime();\n\n        // client.query(text, cb?), client.query(text, values, cb?), and\n        // client.query(configObj, cb?) are all valid signatures. We construct\n        // a queryConfig obj from all (valid) signatures to build the span in a\n        // unified way. We verify that we at least have query text, and code\n        // defensively when dealing with `queryConfig` after that (to handle all\n        // the other invalid cases, like a non-array for values being provided).\n        // The type casts here reflect only what we've actually validated.\n        const arg0 = args[0];\n        const firstArgIsString = typeof arg0 === 'string';\n        const firstArgIsQueryObjectWithText =\n          utils.isObjectWithTextString(arg0);\n\n        // TODO: remove the `as ...` casts below when the TS version is upgraded.\n        // Newer TS versions will use the result of firstArgIsQueryObjectWithText\n        // to properly narrow arg0, but TS 4.3.5 does not.\n        const queryConfig = firstArgIsString\n          ? {\n              text: arg0 as string,\n              values: Array.isArray(args[1]) ? args[1] : undefined,\n            }\n          : firstArgIsQueryObjectWithText\n            ? {\n                ...(arg0 as any),\n                name: arg0.name,\n                text: arg0.text,\n                values:\n                  (arg0 as any).values ??\n                  (Array.isArray(args[1]) ? args[1] : undefined),\n              }\n            : undefined;\n\n        const attributes: Attributes = {\n          [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL,\n          [ATTR_DB_NAMESPACE]: this.database,\n          [ATTR_SERVER_PORT]: this.connectionParameters.port,\n          [ATTR_SERVER_ADDRESS]: this.connectionParameters.host,\n        };\n\n        if (queryConfig?.text) {\n          attributes[ATTR_DB_OPERATION_NAME] =\n            utils.parseNormalizedOperationName(queryConfig?.text);\n        }\n\n        const recordDuration = () => {\n          plugin.recordOperationDuration(attributes, startTime);\n        };\n\n        const instrumentationConfig = plugin.getConfig();\n\n        const span = utils.handleConfigQuery.call(\n          this,\n          plugin.tracer,\n          instrumentationConfig,\n          plugin._semconvStability,\n          queryConfig\n        );\n\n        // Modify query text w/ a tracing comment before invoking original for\n        // tracing, but only if args[0] has one of our expected shapes.\n        if (instrumentationConfig.addSqlCommenterCommentToQueries) {\n          if (firstArgIsString) {\n            args[0] = addSqlCommenterComment(span, arg0);\n          } else if (firstArgIsQueryObjectWithText && !('name' in arg0)) {\n            // In the case of a query object, we need to ensure there's no name field\n            // as this indicates a prepared query, where the comment would remain the same\n            // for every invocation and contain an outdated trace context.\n            args[0] = {\n              ...arg0,\n              text: addSqlCommenterComment(span, arg0.text),\n            };\n          }\n        }\n\n        // Bind callback (if any) to parent span (if any)\n        if (args.length > 0) {\n          const parentSpan = trace.getSpan(context.active());\n          if (typeof args[args.length - 1] === 'function') {\n            // Patch ParameterQuery callback\n            args[args.length - 1] = utils.patchCallback(\n              instrumentationConfig,\n              span,\n              args[args.length - 1] as PostgresCallback, // nb: not type safe.\n              attributes,\n              recordDuration\n            );\n\n            // If a parent span exists, bind the callback\n            if (parentSpan) {\n              args[args.length - 1] = context.bind(\n                context.active(),\n                args[args.length - 1]\n              );\n            }\n          } else if (typeof queryConfig?.callback === 'function') {\n            // Patch ConfigQuery callback\n            let callback = utils.patchCallback(\n              plugin.getConfig(),\n              span,\n              queryConfig.callback as PostgresCallback, // nb: not type safe.\n              attributes,\n              recordDuration\n            );\n\n            // If a parent span existed, bind the callback\n            if (parentSpan) {\n              callback = context.bind(context.active(), callback);\n            }\n\n            (args[0] as { callback?: PostgresCallback }).callback = callback;\n          }\n        }\n\n        const { requestHook } = instrumentationConfig;\n        if (typeof requestHook === 'function' && queryConfig) {\n          safeExecuteInTheMiddle(\n            () => {\n              // pick keys to expose explicitly, so we're not leaking pg package\n              // internals that are subject to change\n              const { database, host, port, user } = this.connectionParameters;\n              const connection = { database, host, port, user };\n\n              requestHook(span, {\n                connection,\n                query: {\n                  text: queryConfig.text,\n                  // nb: if `client.query` is called with illegal arguments\n                  // (e.g., if `queryConfig.values` is passed explicitly, but a\n                  // non-array is given), then the type casts will be wrong. But\n                  // we leave it up to the queryHook to handle that, and we\n                  // catch and swallow any errors it throws. The other options\n                  // are all worse. E.g., we could leave `queryConfig.values`\n                  // and `queryConfig.name` as `unknown`, but then the hook body\n                  // would be forced to validate (or cast) them before using\n                  // them, which seems incredibly cumbersome given that these\n                  // casts will be correct 99.9% of the time -- and pg.query\n                  // will immediately throw during development in the other .1%\n                  // of cases. Alternatively, we could simply skip calling the\n                  // hook when `values` or `name` don't have the expected type,\n                  // but that would add unnecessary validation overhead to every\n                  // hook invocation and possibly be even more confusing/unexpected.\n                  values: queryConfig.values as unknown[],\n                  name: queryConfig.name as string | undefined,\n                },\n              });\n            },\n            err => {\n              if (err) {\n                plugin._diag.error('Error running query hook', err);\n              }\n            },\n            true\n          );\n        }\n\n        let result: unknown;\n        try {\n          result = original.apply(this, args as never);\n        } catch (e: unknown) {\n          if (e instanceof Error) {\n            span.recordException(utils.sanitizedErrorMessage(e));\n          }\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: utils.getErrorMessage(e),\n          });\n          span.end();\n          throw e;\n        }\n\n        // Bind promise to parent span and end the span\n        if (result instanceof Promise) {\n          return result\n            .then((result: unknown) => {\n              // Return a pass-along promise which ends the span and then goes to user's orig resolvers\n              return new Promise(resolve => {\n                utils.handleExecutionResult(plugin.getConfig(), span, result);\n                recordDuration();\n                span.end();\n                resolve(result);\n              });\n            })\n            .catch((error: Error) => {\n              return new Promise((_, reject) => {\n                if (error instanceof Error) {\n                  span.recordException(utils.sanitizedErrorMessage(error));\n                }\n                span.setStatus({\n                  code: SpanStatusCode.ERROR,\n                  message: error.message,\n                });\n                recordDuration();\n                span.end();\n                reject(error);\n              });\n            });\n        }\n\n        // else returns void\n        return result; // void\n      };\n    };\n  }\n\n  private _setPoolConnectEventListeners(pgPool: PgPoolExtended) {\n    if (pgPool[EVENT_LISTENERS_SET]) return;\n    const poolName = utils.getPoolName(pgPool.options);\n\n    pgPool.on('connect', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('acquire', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('remove', () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n\n    pgPool.on('release' as any, () => {\n      this._connectionsCounter = utils.updateCounter(\n        poolName,\n        pgPool,\n        this._connectionsCount,\n        this._connectionPendingRequests,\n        this._connectionsCounter\n      );\n    });\n    pgPool[EVENT_LISTENERS_SET] = true;\n  }\n\n  private _getPoolConnectPatch() {\n    const plugin = this;\n    return (originalConnect: typeof pgPoolTypes.prototype.connect) => {\n      return function connect(this: PgPoolExtended, callback?: PgPoolCallback) {\n        const config = plugin.getConfig();\n\n        if (utils.shouldSkipInstrumentation(config)) {\n          return originalConnect.call(this, callback as any);\n        }\n\n        // Still set up event listeners for metrics even when skipping spans\n        plugin._setPoolConnectEventListeners(this);\n\n        if (config.ignoreConnectSpans) {\n          return originalConnect.call(this, callback as any);\n        }\n\n        // setup span\n        const span = plugin.tracer.startSpan(SpanNames.POOL_CONNECT, {\n          kind: SpanKind.CLIENT,\n          attributes: utils.getSemanticAttributesFromPoolConnection(\n            this.options,\n            plugin._semconvStability\n          ),\n        });\n\n        if (callback) {\n          const parentSpan = trace.getSpan(context.active());\n          callback = utils.patchCallbackPGPool(\n            span,\n            callback\n          ) as PgPoolCallback;\n          // If a parent span exists, bind the callback\n          if (parentSpan) {\n            callback = context.bind(context.active(), callback);\n          }\n        }\n\n        const connectResult: unknown = context.with(\n          trace.setSpan(context.active(), span),\n          () => {\n            return originalConnect.call(this, callback as any);\n          }\n        );\n\n        return handleConnectResult(span, connectResult);\n      };\n    };\n  }\n}\n\nfunction handleConnectResult(span: Span, connectResult: unknown) {\n  if (!(connectResult instanceof Promise)) {\n    return connectResult;\n  }\n\n  const connectResultPromise = connectResult as Promise;\n  return context.bind(\n    context.active(),\n    connectResultPromise\n      .then(result => {\n        span.end();\n        return result;\n      })\n      .catch((error: unknown) => {\n        if (error instanceof Error) {\n          span.recordException(utils.sanitizedErrorMessage(error));\n        }\n        span.setStatus({\n          code: SpanStatusCode.ERROR,\n          message: utils.getErrorMessage(error),\n        });\n        span.end();\n        return Promise.reject(error);\n      })\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { PgInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\nexport type {\n  PgInstrumentationConfig,\n  PgInstrumentationExecutionRequestHook,\n  PgInstrumentationExecutionResponseHook,\n  PgRequestHookInformation,\n  PgResponseHookInformation,\n} from './types';\n","import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\ninterface PostgresIntegrationOptions {\n  ignoreConnectSpans?: boolean;\n}\n\nconst INTEGRATION_NAME = 'Postgres';\n\nexport const instrumentPostgres = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  PgInstrumentation,\n  (options?: PostgresIntegrationOptions) => ({\n    requireParentSpan: true,\n    requestHook(span) {\n      addOriginToSpan(span, 'auto.db.otel.postgres');\n    },\n    ignoreConnectSpans: options?.ignoreConnectSpans ?? false,\n  }),\n);\n\nconst _postgresIntegration = ((options?: PostgresIntegrationOptions) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPostgres(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [pg](https://www.npmjs.com/package/pg) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.postgresIntegration()],\n * });\n * ```\n */\nexport const postgresIntegration = defineIntegration(_postgresIntegration);\n","// Instrumentation for https://github.com/porsager/postgres\n\nimport { context, trace } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_RESPONSE_STATUS_CODE,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_ERROR_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  debug,\n  defineIntegration,\n  instrumentPostgresJsSql,\n  replaceExports,\n  SDK_VERSION,\n  SPAN_STATUS_ERROR,\n  startSpanManual,\n} from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\nconst INTEGRATION_NAME = 'PostgresJs';\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <4'];\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\ntype PostgresConnectionContext = {\n  ATTR_DB_NAMESPACE?: string; // Database name\n  ATTR_SERVER_ADDRESS?: string; // Hostname or IP address of the database server\n  ATTR_SERVER_PORT?: string; // Port number of the database server\n};\n\n// Marker to track if a query was created from an instrumented sql instance\n// This prevents double-spanning when both wrapper and prototype patches are active\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\ntype PostgresJsInstrumentationConfig = InstrumentationConfig & {\n  /**\n   * Whether to require a parent span for the instrumentation.\n   * If set to true, the instrumentation will only create spans if there is a parent span\n   * available in the current scope.\n   * @default true\n   */\n  requireParentSpan?: boolean;\n  /**\n   * Hook to modify the span before it is started.\n   * This can be used to set additional attributes or modify the span in any way.\n   */\n  requestHook?: (span: Span, sanitizedSqlQuery: string, postgresConnectionContext?: PostgresConnectionContext) => void;\n};\n\nexport const instrumentPostgresJs = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  (options?: PostgresJsInstrumentationConfig) =>\n    new PostgresJsInstrumentation({\n      requireParentSpan: options?.requireParentSpan ?? true,\n      requestHook: options?.requestHook,\n    }),\n);\n\n/**\n * Instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n * This instrumentation captures postgresjs queries and their attributes.\n *\n * Uses internal Sentry patching patterns to support both CommonJS and ESM environments.\n */\nexport class PostgresJsInstrumentation extends InstrumentationBase {\n  public constructor(config: PostgresJsInstrumentationConfig) {\n    super('sentry-postgres-js', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by patching the postgres module.\n   * Uses two complementary approaches:\n   * 1. Main function wrapper: instruments sql instances created AFTER instrumentation is set up (CJS + ESM)\n   * 2. Query.prototype patch: fallback for sql instances created BEFORE instrumentation (CJS only)\n   */\n  public init(): InstrumentationNodeModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      'postgres',\n      SUPPORTED_VERSIONS,\n      exports => {\n        try {\n          return this._patchPostgres(exports);\n        } catch (e) {\n          DEBUG_BUILD && debug.error('Failed to patch postgres module:', e);\n          return exports;\n        }\n      },\n      exports => exports,\n    );\n\n    // Add fallback Query.prototype patching for pre-existing sql instances (CJS only)\n    // This catches queries from sql instances created before Sentry was initialized\n    ['src', 'cf/src', 'cjs/src'].forEach(path => {\n      module.files.push(\n        new InstrumentationNodeModuleFile(\n          `postgres/${path}/query.js`,\n          SUPPORTED_VERSIONS,\n          this._patchQueryPrototype.bind(this),\n          this._unpatchQueryPrototype.bind(this),\n        ),\n      );\n    });\n\n    return module;\n  }\n\n  /**\n   * Patches the postgres module by wrapping the main export function.\n   * This intercepts the creation of sql instances and instruments them.\n   */\n  private _patchPostgres(exports: { [key: string]: unknown }): { [key: string]: unknown } {\n    // In CJS: exports is the function itself\n    // In ESM: exports.default is the function\n    const isFunction = typeof exports === 'function';\n    const Original = isFunction ? exports : exports.default;\n\n    if (typeof Original !== 'function') {\n      DEBUG_BUILD && debug.warn('postgres module does not export a function. Skipping instrumentation.');\n      return exports;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this;\n\n    const WrappedPostgres = function (this: unknown, ...args: unknown[]): unknown {\n      const sql = Reflect.construct(Original as (...args: unknown[]) => unknown, args);\n\n      // Validate that construction succeeded and returned a valid function object\n      if (!sql || typeof sql !== 'function') {\n        DEBUG_BUILD && debug.warn('postgres() did not return a valid instance');\n        return sql;\n      }\n\n      // Delegate to the portable instrumentation from @sentry/core\n      const config = self.getConfig();\n      return instrumentPostgresJsSql(sql, {\n        requireParentSpan: config.requireParentSpan,\n        requestHook: config.requestHook,\n      });\n    };\n\n    Object.setPrototypeOf(WrappedPostgres, Original);\n    Object.setPrototypeOf(WrappedPostgres.prototype, (Original as { prototype: object }).prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedPostgres, key, descriptor);\n        }\n      }\n    }\n\n    // For CJS: the exports object IS the function, so return the wrapped function\n    // For ESM: replace the default export\n    if (isFunction) {\n      return WrappedPostgres as unknown as { [key: string]: unknown };\n    } else {\n      replaceExports(exports, 'default', WrappedPostgres);\n      return exports;\n    }\n  }\n\n  /**\n   * Determines whether a span should be created based on the current context.\n   * If `requireParentSpan` is set to true in the configuration, a span will\n   * only be created if there is a parent span available.\n   */\n  private _shouldCreateSpans(): boolean {\n    const config = this.getConfig();\n    const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n    return hasParentSpan || !config.requireParentSpan;\n  }\n\n  /**\n   * Extracts DB operation name from SQL query and sets it on the span.\n   */\n  private _setOperationName(span: Span, sanitizedQuery: string | undefined, command?: string): void {\n    if (command) {\n      span.setAttribute(ATTR_DB_OPERATION_NAME, command);\n      return;\n    }\n    // Fallback: extract operation from the SQL query\n    const operationMatch = sanitizedQuery?.match(SQL_OPERATION_REGEX);\n    if (operationMatch?.[1]) {\n      span.setAttribute(ATTR_DB_OPERATION_NAME, operationMatch[1].toUpperCase());\n    }\n  }\n\n  /**\n   * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n   *\n   * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n   *   strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n   *   returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n   */\n  private _reconstructQuery(strings: string[] | undefined): string | undefined {\n    if (!strings?.length) {\n      return undefined;\n    }\n    if (strings.length === 1) {\n      return strings[0] || undefined;\n    }\n    // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n    return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n  }\n\n  /**\n   * Sanitize SQL query as per the OTEL semantic conventions\n   * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n   *\n   * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n   * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n   */\n  private _sanitizeSqlQuery(sqlQuery: string | undefined): string {\n    if (!sqlQuery) {\n      return 'Unknown SQL Query';\n    }\n\n    return (\n      sqlQuery\n        // Remove comments first (they may contain newlines and extra spaces)\n        .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n        .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n        .replace(/;\\s*$/, '') // Remove trailing semicolons\n        // Collapse whitespace to a single space (after removing comments)\n        .replace(/\\s+/g, ' ')\n        .trim() // Remove extra spaces and trim\n        // Sanitize hex/binary literals before string literals\n        .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n        .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n        // Sanitize string literals (handles escaped quotes)\n        .replace(/'(?:[^']|'')*'/g, '?')\n        // Sanitize hex numbers\n        .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n        // Sanitize boolean literals\n        .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n        // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n        .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n        .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n        .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n        .replace(/(? Promise) & {\n          __sentry_original__?: (...args: unknown[]) => Promise;\n        };\n      };\n    };\n  }): typeof moduleExports {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this;\n    const originalHandle = moduleExports.Query.prototype.handle;\n\n    moduleExports.Query.prototype.handle = async function (\n      this: {\n        resolve: unknown;\n        reject: unknown;\n        strings?: string[];\n      },\n      ...args: unknown[]\n    ): Promise {\n      // Skip if this query came from an instrumented sql instance (already handled by wrapper)\n      if ((this as Record)[QUERY_FROM_INSTRUMENTED_SQL]) {\n        return originalHandle.apply(this, args);\n      }\n\n      // Skip if we shouldn't create spans\n      if (!self._shouldCreateSpans()) {\n        return originalHandle.apply(this, args);\n      }\n\n      const fullQuery = self._reconstructQuery(this.strings);\n      const sanitizedSqlQuery = self._sanitizeSqlQuery(fullQuery);\n\n      return startSpanManual(\n        {\n          name: sanitizedSqlQuery || 'postgresjs.query',\n          op: 'db',\n        },\n        (span: Span) => {\n          addOriginToSpan(span, 'auto.db.postgresjs');\n\n          span.setAttributes({\n            [ATTR_DB_SYSTEM_NAME]: 'postgres',\n            [ATTR_DB_QUERY_TEXT]: sanitizedSqlQuery,\n          });\n\n          // Note: No connection context available for pre-existing instances\n          // because the sql instance wasn't created through our instrumented wrapper\n\n          const config = self.getConfig();\n          const { requestHook } = config;\n          if (requestHook) {\n            safeExecuteInTheMiddle(\n              () => requestHook(span, sanitizedSqlQuery, undefined),\n              e => {\n                if (e) {\n                  span.setAttribute('sentry.hook.error', 'requestHook failed');\n                  DEBUG_BUILD && debug.error(`Error in requestHook for ${INTEGRATION_NAME} integration:`, e);\n                }\n              },\n              true,\n            );\n          }\n\n          // Wrap resolve to end span on success\n          const originalResolve = this.resolve;\n          this.resolve = new Proxy(originalResolve as (...args: unknown[]) => unknown, {\n            apply: (resolveTarget, resolveThisArg, resolveArgs: [{ command?: string }]) => {\n              try {\n                self._setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n                span.end();\n              } catch (e) {\n                DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n              }\n              return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n            },\n          });\n\n          // Wrap reject to end span on error\n          const originalReject = this.reject;\n          this.reject = new Proxy(originalReject as (...args: unknown[]) => unknown, {\n            apply: (rejectTarget, rejectThisArg, rejectArgs: { message?: string; code?: string; name?: string }[]) => {\n              try {\n                span.setStatus({\n                  code: SPAN_STATUS_ERROR,\n                  message: rejectArgs?.[0]?.message || 'unknown_error',\n                });\n                span.setAttribute(ATTR_DB_RESPONSE_STATUS_CODE, rejectArgs?.[0]?.code || 'unknown');\n                span.setAttribute(ATTR_ERROR_TYPE, rejectArgs?.[0]?.name || 'unknown');\n                self._setOperationName(span, sanitizedSqlQuery);\n                span.end();\n              } catch (e) {\n                DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n              }\n              return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n            },\n          });\n\n          try {\n            return originalHandle.apply(this, args);\n          } catch (e) {\n            span.setStatus({\n              code: SPAN_STATUS_ERROR,\n              message: e instanceof Error ? e.message : 'unknown_error',\n            });\n            span.end();\n            throw e;\n          }\n        },\n      );\n    };\n\n    // Store original for unpatch - must be set on the NEW patched function\n    moduleExports.Query.prototype.handle.__sentry_original__ = originalHandle;\n\n    return moduleExports;\n  }\n\n  /**\n   * Restores the original Query.prototype.handle method.\n   */\n  private _unpatchQueryPrototype(moduleExports: {\n    Query: {\n      prototype: {\n        handle: ((...args: unknown[]) => Promise) & {\n          __sentry_original__?: (...args: unknown[]) => Promise;\n        };\n      };\n    };\n  }): typeof moduleExports {\n    if (moduleExports.Query.prototype.handle.__sentry_original__) {\n      moduleExports.Query.prototype.handle = moduleExports.Query.prototype.handle.__sentry_original__;\n    }\n    return moduleExports;\n  }\n}\n\nconst _postgresJsIntegration = ((options?: PostgresJsInstrumentationConfig) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPostgresJs(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.postgresJsIntegration()],\n * });\n * ```\n */\n\nexport const postgresJsIntegration = defineIntegration(_postgresJsIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum SemconvStability {\n  /** Emit only stable semantic conventions. */\n  STABLE = 0x1,\n  /** Emit only old semantic conventions. */\n  OLD = 0x2,\n  /** Emit both stable and old semantic conventions. */\n  DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n  | 'http'\n  | 'messaging'\n  | 'database'\n  | 'k8s'\n  | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n *  import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n *  export class FooInstrumentation extends InstrumentationBase {\n *    private _semconvStability: SemconvStability;\n *    constructor(config: FooInstrumentationConfig = {}) {\n *      super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n *      // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n *      );\n *\n *      // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n *      // the web where there are no envvars).\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        config?.semconvStabilityOptIn\n *      );\n *    }\n *  }\n *\n *  // Then, to apply semconv, use the following or similar:\n *  if (this._semconvStability & SemconvStability.OLD) {\n *    // ...\n *  }\n *  if (this._semconvStability & SemconvStability.STABLE) {\n *    // ...\n *  }\n *\n */\nexport function semconvStabilityFromStr(\n  namespace: SemConvStabilityNamespace,\n  str: string | undefined\n) {\n  let semconvStability = SemconvStability.OLD;\n\n  // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n  const entries = str\n    ?.split(',')\n    .map(v => v.trim())\n    .filter(s => s !== '');\n  for (const entry of entries ?? []) {\n    if (entry.toLowerCase() === namespace + '/dup') {\n      // DUPLICATE takes highest precedence.\n      semconvStability = SemconvStability.DUPLICATE;\n      break;\n    } else if (entry.toLowerCase() === namespace) {\n      semconvStability = SemconvStability.STABLE;\n    }\n  }\n\n  return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n  moduleName: string;\n  onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n  'afterEach',\n  'after',\n  'beforeEach',\n  'before',\n  'describe',\n  'it',\n].every(fn => {\n  // @ts-expect-error TS7053: Element implicitly has an 'any' type\n  return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n  private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n  private static _instance?: RequireInTheMiddleSingleton;\n\n  private constructor() {\n    this._initialize();\n  }\n\n  private _initialize() {\n    new Hook(\n      // Intercept all `require` calls; we will filter the matching ones below\n      null,\n      { internals: true },\n      (exports, name, basedir) => {\n        // For internal files on Windows, `name` will use backslash as the path separator\n        const normalizedModuleName = normalizePathSeparators(name);\n\n        const matches = this._moduleNameTrie.search(normalizedModuleName, {\n          maintainInsertionOrder: true,\n          // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n          // This matches the behavior of `require-in-the-middle`.\n          // `basedir` is always `undefined` for core modules.\n          fullOnly: basedir === undefined,\n        });\n\n        for (const { onRequire } of matches) {\n          exports = onRequire(exports, name, basedir);\n        }\n\n        return exports;\n      }\n    );\n  }\n\n  /**\n   * Register a hook with `require-in-the-middle`\n   *\n   * @param {string} moduleName Module name\n   * @param {OnRequireFn} onRequire Hook function\n   * @returns {Hooked} Registered hook\n   */\n  register(moduleName: string, onRequire: OnRequireFn): Hooked {\n    const hooked = { moduleName, onRequire };\n    this._moduleNameTrie.insert(hooked);\n    return hooked;\n  }\n\n  /**\n   * Get the `RequireInTheMiddleSingleton` singleton\n   *\n   * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n   */\n  static getInstance(): RequireInTheMiddleSingleton {\n    // Mocha runs all test suites in the same process\n    // This prevents test suites from sharing a singleton\n    if (isMocha) return new RequireInTheMiddleSingleton();\n\n    return (this._instance =\n      this._instance ?? new RequireInTheMiddleSingleton());\n  }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n  return path.sep !== ModuleNameSeparator\n    ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n    : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { _globalThis } from '../platform';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n  [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = _globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n  requiredVersion: number,\n  instance: T,\n  fallback: T\n): Get {\n  return (version: number): T =>\n    version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n  disableInstrumentations,\n  enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n *   registered\n */\nexport function registerInstrumentations(\n  options: AutoLoaderOptions\n): () => void {\n  const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n  const meterProvider = options.meterProvider || metrics.getMeterProvider();\n  const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n  const instrumentations = options.instrumentations?.flat() ?? [];\n\n  enableInstrumentations(\n    instrumentations,\n    tracerProvider,\n    meterProvider,\n    loggerProvider\n  );\n\n  return () => {\n    disableInstrumentations(instrumentations);\n  };\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  API_BACKWARDS_COMPATIBILITY_VERSION,\n  GLOBAL_LOGS_API_KEY,\n  _global,\n  makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n  private static _instance?: LogsAPI;\n\n  private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n  private constructor() {}\n\n  public static getInstance(): LogsAPI {\n    if (!this._instance) {\n      this._instance = new LogsAPI();\n    }\n\n    return this._instance;\n  }\n\n  public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n    if (_global[GLOBAL_LOGS_API_KEY]) {\n      return this.getLoggerProvider();\n    }\n\n    _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n      API_BACKWARDS_COMPATIBILITY_VERSION,\n      provider,\n      NOOP_LOGGER_PROVIDER\n    );\n    this._proxyLoggerProvider._setDelegate(provider);\n\n    return provider;\n  }\n\n  /**\n   * Returns the global logger provider.\n   *\n   * @returns LoggerProvider\n   */\n  public getLoggerProvider(): LoggerProvider {\n    return (\n      _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n      this._proxyLoggerProvider\n    );\n  }\n\n  /**\n   * Returns a logger from the global logger provider.\n   *\n   * @returns Logger\n   */\n  public getLogger(\n    name: string,\n    version?: string,\n    options?: LoggerOptions\n  ): Logger {\n    return this.getLoggerProvider().getLogger(name, version, options);\n  }\n\n  /** Remove the global logger provider */\n  public disable(): void {\n    delete _global[GLOBAL_LOGS_API_KEY];\n    this._proxyLoggerProvider = new ProxyLoggerProvider();\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n  // When a real implementation is provided, this will be it\n  private _delegate?: Logger;\n\n  constructor(\n    private _provider: LoggerDelegator,\n    public readonly name: string,\n    public readonly version?: string | undefined,\n    public readonly options?: LoggerOptions | undefined\n  ) {}\n\n  /**\n   * Emit a log record. This method should only be used by log appenders.\n   *\n   * @param logRecord\n   */\n  emit(logRecord: LogRecord): void {\n    this._getLogger().emit(logRecord);\n  }\n\n  /**\n   * Try to get a logger from the proxy logger provider.\n   * If the proxy logger provider has no delegate, return a noop logger.\n   */\n  private _getLogger() {\n    if (this._delegate) {\n      return this._delegate;\n    }\n    const logger = this._provider._getDelegateLogger(\n      this.name,\n      this.version,\n      this.options\n    );\n    if (!logger) {\n      return NOOP_LOGGER;\n    }\n    this._delegate = logger;\n    return this._delegate;\n  }\n}\n\nexport interface LoggerDelegator {\n  _getDelegateLogger(\n    name: string,\n    version?: string,\n    options?: LoggerOptions\n  ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n  Instrumentation,\n  InstrumentationConfig,\n  InstrumentationModuleDefinition,\n  InstrumentationModuleFile,\n  ShimWrapped,\n  SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n  isWrapped,\n  safeExecuteInTheMiddle,\n  safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n  getLogger(\n    _name: string,\n    _version?: string | undefined,\n    _options?: LoggerOptions | undefined\n  ): Logger {\n    return new NoopLogger();\n  }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\nexport { NOOP_LOGGER_PROVIDER, NoopLoggerProvider } from './NoopLoggerProvider';\nexport { ProxyLogger } from './ProxyLogger';\nexport { ProxyLoggerProvider } from './ProxyLoggerProvider';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  diag,\n  DiagLogger,\n  metrics,\n  Meter,\n  MeterProvider,\n  trace,\n  Tracer,\n  TracerProvider,\n  Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n  InstrumentationModuleDefinition,\n  Instrumentation,\n  InstrumentationConfig,\n  SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n  ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n  protected _config: ConfigType = {} as ConfigType;\n\n  private _tracer: Tracer;\n  private _meter: Meter;\n  private _logger: Logger;\n  protected _diag: DiagLogger;\n\n  constructor(\n    public readonly instrumentationName: string,\n    public readonly instrumentationVersion: string,\n    config: ConfigType\n  ) {\n    this.setConfig(config);\n\n    this._diag = diag.createComponentLogger({\n      namespace: instrumentationName,\n    });\n\n    this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n    this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n    this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n    this._updateMetricInstruments();\n  }\n\n  /* Api to wrap instrumented method */\n  protected _wrap = shimmer.wrap;\n  /* Api to unwrap instrumented methods */\n  protected _unwrap = shimmer.unwrap;\n  /* Api to mass wrap instrumented method */\n  protected _massWrap = shimmer.massWrap;\n  /* Api to mass unwrap instrumented methods */\n  protected _massUnwrap = shimmer.massUnwrap;\n\n  /* Returns meter */\n  protected get meter(): Meter {\n    return this._meter;\n  }\n\n  /**\n   * Sets MeterProvider to this plugin\n   * @param meterProvider\n   */\n  public setMeterProvider(meterProvider: MeterProvider): void {\n    this._meter = meterProvider.getMeter(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n\n    this._updateMetricInstruments();\n  }\n\n  /* Returns logger */\n  protected get logger(): Logger {\n    return this._logger;\n  }\n\n  /**\n   * Sets LoggerProvider to this plugin\n   * @param loggerProvider\n   */\n  public setLoggerProvider(loggerProvider: LoggerProvider): void {\n    this._logger = loggerProvider.getLogger(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n  }\n\n  /**\n   * @experimental\n   *\n   * Get module definitions defined by {@link init}.\n   * This can be used for experimental compile-time instrumentation.\n   *\n   * @returns an array of {@link InstrumentationModuleDefinition}\n   */\n  public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n    const initResult = this.init() ?? [];\n    if (!Array.isArray(initResult)) {\n      return [initResult];\n    }\n\n    return initResult;\n  }\n\n  /**\n   * Sets the new metric instruments with the current Meter.\n   */\n  protected _updateMetricInstruments(): void {\n    return;\n  }\n\n  /* Returns InstrumentationConfig */\n  public getConfig(): ConfigType {\n    return this._config;\n  }\n\n  /**\n   * Sets InstrumentationConfig to this plugin\n   * @param config\n   */\n  public setConfig(config: ConfigType): void {\n    // copy config first level properties to ensure they are immutable.\n    // nested properties are not copied, thus are mutable from the outside.\n    this._config = {\n      enabled: true,\n      ...config,\n    };\n  }\n\n  /**\n   * Sets TraceProvider to this plugin\n   * @param tracerProvider\n   */\n  public setTracerProvider(tracerProvider: TracerProvider): void {\n    this._tracer = tracerProvider.getTracer(\n      this.instrumentationName,\n      this.instrumentationVersion\n    );\n  }\n\n  /* Returns tracer */\n  protected get tracer(): Tracer {\n    return this._tracer;\n  }\n\n  /* Enable plugin */\n  public abstract enable(): void;\n\n  /* Disable plugin */\n  public abstract disable(): void;\n\n  /**\n   * Init method in which plugin should define _modules and patches for\n   * methods.\n   */\n  protected abstract init():\n    | InstrumentationModuleDefinition\n    | InstrumentationModuleDefinition[]\n    | void;\n\n  /**\n   * Execute span customization hook, if configured, and log any errors.\n   * Any semantics of the trigger and info are defined by the specific instrumentation.\n   * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n   * @param triggerName The name of the trigger for executing the hook for logging purposes\n   * @param span The span to which the hook should be applied\n   * @param info The info object to be passed to the hook, with useful data the hook may use\n   */\n  protected _runSpanCustomizationHook(\n    hookHandler: SpanCustomizationHook | undefined,\n    triggerName: string,\n    span: Span,\n    info: SpanCustomizationInfoType\n  ) {\n    if (!hookHandler) {\n      return;\n    }\n\n    try {\n      hookHandler(span, info);\n    } catch (e) {\n      this._diag.error(\n        `Error running span customization hook due to exception in handler`,\n        { triggerName },\n        e\n      );\n    }\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n  implements InstrumentationModuleFile\n{\n  public name: string;\n  constructor(\n    name: string,\n    public supportedVersions: string[],\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public patch: (moduleExports: any, moduleVersion?: string) => any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public unpatch: (moduleExports?: any, moduleVersion?: string) => void\n  ) {\n    this.name = normalize(name);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n  private _delegate?: LoggerProvider;\n\n  getLogger(\n    name: string,\n    version?: string | undefined,\n    options?: LoggerOptions | undefined\n  ): Logger {\n    return (\n      this._getDelegateLogger(name, version, options) ??\n      new ProxyLogger(this, name, version, options)\n    );\n  }\n\n  /**\n   * Get the delegate logger provider.\n   * Used by tests only.\n   * @internal\n   */\n  _getDelegate(): LoggerProvider {\n    return this._delegate ?? NOOP_LOGGER_PROVIDER;\n  }\n\n  /**\n   * Set the delegate logger provider\n   * @internal\n   */\n  _setDelegate(delegate: LoggerProvider) {\n    this._delegate = delegate;\n  }\n\n  /**\n   * @internal\n   */\n  _getDelegateLogger(\n    name: string,\n    version?: string | undefined,\n    options?: LoggerOptions | undefined\n  ): Logger | undefined {\n    return this._delegate?.getLogger(name, version, options);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n  RequireInTheMiddleSingleton,\n  Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n  InstrumentationConfig,\n  InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n    ConfigType extends InstrumentationConfig = InstrumentationConfig,\n  >\n  extends InstrumentationAbstract\n  implements types.Instrumentation\n{\n  private _modules: InstrumentationModuleDefinition[];\n  private _hooks: (Hooked | HookRequire)[] = [];\n  private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n    RequireInTheMiddleSingleton.getInstance();\n  private _enabled = false;\n\n  constructor(\n    instrumentationName: string,\n    instrumentationVersion: string,\n    config: ConfigType\n  ) {\n    super(instrumentationName, instrumentationVersion, config);\n\n    let modules = this.init();\n\n    if (modules && !Array.isArray(modules)) {\n      modules = [modules];\n    }\n\n    this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n    if (this._config.enabled) {\n      this.enable();\n    }\n  }\n\n  protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n    if (isWrapped(moduleExports[name])) {\n      this._unwrap(moduleExports, name);\n    }\n    if (!utilTypes.isProxy(moduleExports)) {\n      return wrap(moduleExports, name, wrapper);\n    } else {\n      const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n      Object.defineProperty(moduleExports, name, {\n        value: wrapped,\n      });\n      return wrapped;\n    }\n  };\n\n  protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n    if (!utilTypes.isProxy(moduleExports)) {\n      return unwrap(moduleExports, name);\n    } else {\n      return Object.defineProperty(moduleExports, name, {\n        value: moduleExports[name],\n      });\n    }\n  };\n\n  protected override _massWrap: typeof massWrap = (\n    moduleExportsArray,\n    names,\n    wrapper\n  ) => {\n    if (!moduleExportsArray) {\n      diag.error('must provide one or more modules to patch');\n      return;\n    } else if (!Array.isArray(moduleExportsArray)) {\n      moduleExportsArray = [moduleExportsArray];\n    }\n\n    if (!(names && Array.isArray(names))) {\n      diag.error('must provide one or more functions to wrap on modules');\n      return;\n    }\n\n    moduleExportsArray.forEach(moduleExports => {\n      names.forEach(name => {\n        this._wrap(moduleExports, name, wrapper);\n      });\n    });\n  };\n\n  protected override _massUnwrap: typeof massUnwrap = (\n    moduleExportsArray,\n    names\n  ) => {\n    if (!moduleExportsArray) {\n      diag.error('must provide one or more modules to patch');\n      return;\n    } else if (!Array.isArray(moduleExportsArray)) {\n      moduleExportsArray = [moduleExportsArray];\n    }\n\n    if (!(names && Array.isArray(names))) {\n      diag.error('must provide one or more functions to wrap on modules');\n      return;\n    }\n\n    moduleExportsArray.forEach(moduleExports => {\n      names.forEach(name => {\n        this._unwrap(moduleExports, name);\n      });\n    });\n  };\n\n  private _warnOnPreloadedModules(): void {\n    this._modules.forEach((module: InstrumentationModuleDefinition) => {\n      const { name } = module;\n      try {\n        const resolvedModule = require.resolve(name);\n        if (require.cache[resolvedModule]) {\n          // Module is already cached, which means the instrumentation hook might not work\n          this._diag.warn(\n            `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n          );\n        }\n      } catch {\n        // Module isn't available, we can simply skip\n      }\n    });\n  }\n\n  private _extractPackageVersion(baseDir: string): string | undefined {\n    try {\n      const json = readFileSync(path.join(baseDir, 'package.json'), {\n        encoding: 'utf8',\n      });\n      const version = JSON.parse(json).version;\n      return typeof version === 'string' ? version : undefined;\n    } catch {\n      diag.warn('Failed extracting version', baseDir);\n    }\n\n    return undefined;\n  }\n\n  private _onRequire(\n    module: InstrumentationModuleDefinition,\n    exports: T,\n    name: string,\n    baseDir?: string | void\n  ): T {\n    if (!baseDir) {\n      if (typeof module.patch === 'function') {\n        module.moduleExports = exports;\n        if (this._enabled) {\n          this._diag.debug(\n            'Applying instrumentation patch for nodejs core module on require hook',\n            {\n              module: module.name,\n            }\n          );\n          return module.patch(exports);\n        }\n      }\n      return exports;\n    }\n\n    const version = this._extractPackageVersion(baseDir);\n    module.moduleVersion = version;\n    if (module.name === name) {\n      // main module\n      if (\n        isSupported(module.supportedVersions, version, module.includePrerelease)\n      ) {\n        if (typeof module.patch === 'function') {\n          module.moduleExports = exports;\n          if (this._enabled) {\n            this._diag.debug(\n              'Applying instrumentation patch for module on require hook',\n              {\n                module: module.name,\n                version: module.moduleVersion,\n                baseDir,\n              }\n            );\n            return module.patch(exports, module.moduleVersion);\n          }\n        }\n      }\n      return exports;\n    }\n    // internal file\n    const files = module.files ?? [];\n    const normalizedName = path.normalize(name);\n    const supportedFileInstrumentations = files\n      .filter(f => f.name === normalizedName)\n      .filter(f =>\n        isSupported(f.supportedVersions, version, module.includePrerelease)\n      );\n    return supportedFileInstrumentations.reduce((patchedExports, file) => {\n      file.moduleExports = patchedExports;\n      if (this._enabled) {\n        this._diag.debug(\n          'Applying instrumentation patch for nodejs module file on require hook',\n          {\n            module: module.name,\n            version: module.moduleVersion,\n            fileName: file.name,\n            baseDir,\n          }\n        );\n\n        // patch signature is not typed, so we cast it assuming it's correct\n        return file.patch(patchedExports, module.moduleVersion) as T;\n      }\n      return patchedExports;\n    }, exports);\n  }\n\n  public enable(): void {\n    if (this._enabled) {\n      return;\n    }\n    this._enabled = true;\n\n    // already hooked, just call patch again\n    if (this._hooks.length > 0) {\n      for (const module of this._modules) {\n        if (typeof module.patch === 'function' && module.moduleExports) {\n          this._diag.debug(\n            'Applying instrumentation patch for nodejs module on instrumentation enabled',\n            {\n              module: module.name,\n              version: module.moduleVersion,\n            }\n          );\n          module.patch(module.moduleExports, module.moduleVersion);\n        }\n        for (const file of module.files) {\n          if (file.moduleExports) {\n            this._diag.debug(\n              'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n              {\n                module: module.name,\n                version: module.moduleVersion,\n                fileName: file.name,\n              }\n            );\n            file.patch(file.moduleExports, module.moduleVersion);\n          }\n        }\n      }\n      return;\n    }\n\n    this._warnOnPreloadedModules();\n    for (const module of this._modules) {\n      const hookFn: HookFn = (exports, name, baseDir) => {\n        if (!baseDir && path.isAbsolute(name)) {\n          const parsedPath = path.parse(name);\n          name = parsedPath.name;\n          baseDir = parsedPath.dir;\n        }\n        return this._onRequire(module, exports, name, baseDir);\n      };\n      const onRequire: OnRequireFn = (exports, name, baseDir) => {\n        return this._onRequire(module, exports, name, baseDir);\n      };\n\n      // `RequireInTheMiddleSingleton` does not support absolute paths.\n      // For an absolute paths, we must create a separate instance of the\n      // require-in-the-middle `Hook`.\n      const hook = path.isAbsolute(module.name)\n        ? new HookRequire([module.name], { internals: true }, onRequire)\n        : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n      this._hooks.push(hook);\n      const esmHook = new HookImport(\n        [module.name],\n        { internals: false },\n        hookFn\n      );\n      this._hooks.push(esmHook);\n    }\n  }\n\n  public disable(): void {\n    if (!this._enabled) {\n      return;\n    }\n    this._enabled = false;\n\n    for (const module of this._modules) {\n      if (typeof module.unpatch === 'function' && module.moduleExports) {\n        this._diag.debug(\n          'Removing instrumentation patch for nodejs module on instrumentation disabled',\n          {\n            module: module.name,\n            version: module.moduleVersion,\n          }\n        );\n        module.unpatch(module.moduleExports, module.moduleVersion);\n      }\n      for (const file of module.files) {\n        if (file.moduleExports) {\n          this._diag.debug(\n            'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n            {\n              module: module.name,\n              version: module.moduleVersion,\n              fileName: file.name,\n            }\n          );\n          file.unpatch(file.moduleExports, module.moduleVersion);\n        }\n      }\n    }\n  }\n\n  public isEnabled(): boolean {\n    return this._enabled;\n  }\n}\n\nfunction isSupported(\n  supportedVersions: string[],\n  version?: string,\n  includePrerelease?: boolean\n): boolean {\n  if (typeof version === 'undefined') {\n    // If we don't have the version, accept the wildcard case only\n    return supportedVersions.includes('*');\n  }\n\n  return supportedVersions.some(supportedVersion => {\n    return satisfies(version, supportedVersion, { includePrerelease });\n  });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n  hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n  children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n  /**\n   * Whether to return the results in insertion order\n   */\n  maintainInsertionOrder?: boolean;\n  /**\n   * Whether to return only full matches\n   */\n  fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n  private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n  private _counter: number = 0;\n\n  /**\n   * Insert a module hook into the trie\n   *\n   * @param {Hooked} hook Hook\n   */\n  insert(hook: Hooked) {\n    let trieNode = this._trie;\n\n    for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n      let nextNode = trieNode.children.get(moduleNamePart);\n      if (!nextNode) {\n        nextNode = new ModuleNameTrieNode();\n        trieNode.children.set(moduleNamePart, nextNode);\n      }\n      trieNode = nextNode;\n    }\n    trieNode.hooks.push({ hook, insertedId: this._counter++ });\n  }\n\n  /**\n   * Search for matching hooks in the trie\n   *\n   * @param {string} moduleName Module name\n   * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n   * @param {boolean} fullOnly Whether to return only full matches\n   * @returns {Hooked[]} Matching hooks\n   */\n  search(\n    moduleName: string,\n    { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n  ): Hooked[] {\n    let trieNode = this._trie;\n    const results: ModuleNameTrieNode['hooks'] = [];\n    let foundFull = true;\n\n    for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n      const nextNode = trieNode.children.get(moduleNamePart);\n      if (!nextNode) {\n        foundFull = false;\n        break;\n      }\n      if (!fullOnly) {\n        results.push(...nextNode.hooks);\n      }\n      trieNode = nextNode;\n    }\n\n    if (fullOnly && foundFull) {\n      results.push(...trieNode.hooks);\n    }\n\n    if (results.length === 0) {\n      return [];\n    }\n    if (results.length === 1) {\n      return [results[0].hook];\n    }\n    if (maintainInsertionOrder) {\n      results.sort((a, b) => a.insertedId - b.insertedId);\n    }\n    return results.map(({ hook }) => hook);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  InstrumentationModuleDefinition,\n  InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n  implements InstrumentationModuleDefinition\n{\n  files: InstrumentationModuleFile[];\n  constructor(\n    public name: string,\n    public supportedVersions: string[],\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public patch?: (exports: any, moduleVersion?: string) => any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public unpatch?: (exports: any, moduleVersion?: string) => void,\n    files?: InstrumentationModuleFile[]\n  ) {\n    this.files = files || [];\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n","/*\n * Copyright The OpenTelemetry Authors\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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n *   list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n *   this list of conditions and the following disclaimer in the documentation\n *   and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n *  - converted to TypeScript\n *  - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n  const enumerable =\n    !!obj[name as keyof typeof obj] &&\n    Object.prototype.propertyIsEnumerable.call(obj, name);\n\n  Object.defineProperty(obj, name, {\n    configurable: true,\n    enumerable,\n    writable: true,\n    value,\n  });\n}\n\nexport const wrap = (\n  nodule: Nodule,\n  name: FieldName,\n  wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n  if (!nodule || !nodule[name]) {\n    logger('no original function ' + String(name) + ' to wrap');\n    return;\n  }\n\n  if (!wrapper) {\n    logger('no wrapper function');\n    logger(new Error().stack);\n    return;\n  }\n\n  const original = nodule[name];\n\n  if (typeof original !== 'function' || typeof wrapper !== 'function') {\n    logger('original object and wrapper must be functions');\n    return;\n  }\n\n  const wrapped = wrapper(original, name) as object;\n\n  defineProperty(wrapped, '__original', original);\n  defineProperty(wrapped, '__unwrap', () => {\n    if (nodule[name] === wrapped) {\n      defineProperty(nodule, name, original);\n    }\n  });\n  defineProperty(wrapped, '__wrapped', true);\n  defineProperty(nodule, name, wrapped);\n  return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n  nodules: Nodule[],\n  names: FieldName[],\n  wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n  if (!nodules) {\n    logger('must provide one or more modules to patch');\n    logger(new Error().stack);\n    return;\n  } else if (!Array.isArray(nodules)) {\n    nodules = [nodules];\n  }\n\n  if (!(names && Array.isArray(names))) {\n    logger('must provide one or more functions to wrap on modules');\n    return;\n  }\n\n  nodules.forEach(nodule => {\n    names.forEach(name => {\n      wrap(nodule, name, wrapper);\n    });\n  });\n};\n\nexport const unwrap = (\n  nodule: Nodule,\n  name: keyof Nodule\n): void => {\n  if (!nodule || !nodule[name]) {\n    logger('no function to unwrap.');\n    logger(new Error().stack);\n    return;\n  }\n\n  const wrapped = nodule[name] as unknown as ShimWrapped;\n\n  if (!wrapped.__unwrap) {\n    logger(\n      'no original to unwrap to -- has ' +\n        String(name) +\n        ' already been unwrapped?'\n    );\n  } else {\n    wrapped.__unwrap();\n    return;\n  }\n};\n\nexport const massUnwrap = (\n  nodules: Nodule[],\n  names: Array\n): void => {\n  if (!nodules) {\n    logger('must provide one or more modules to patch');\n    logger(new Error().stack);\n    return;\n  } else if (!Array.isArray(nodules)) {\n    nodules = [nodules];\n  }\n\n  if (!(names && Array.isArray(names))) {\n    logger('must provide one or more functions to unwrap on modules');\n    return;\n  }\n\n  nodules.forEach(nodule => {\n    names.forEach(name => {\n      unwrap(nodule, name);\n    });\n  });\n};\n\nexport interface ShimmerOptions {\n  logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n  if (options && options.logger) {\n    if (typeof options.logger !== 'function') {\n      logger(\"new logger isn't a function, not replacing\");\n    } else {\n      logger = options.logger;\n    }\n  }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\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// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n  /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n  /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n  '>': [1],\n  '>=': [0, 1],\n  '=': [0],\n  '<=': [-1, 0],\n  '<': [-1],\n  '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n  /**\n   * If set to true, the pre-release checks will be included\n   * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n   */\n  includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n  op?: string;\n\n  version?: string;\n  versionSegments?: string[];\n  versionSegmentCount?: number;\n\n  prerelease?: string;\n  prereleaseSegments?: string[];\n  prereleaseSegmentCount?: number;\n\n  build?: string;\n\n  invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range   the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n  version: string,\n  range: string,\n  options?: SatisfiesOptions\n): boolean {\n  // Strict semver format check\n  if (!_validateVersion(version)) {\n    diag.error(`Invalid version: ${version}`);\n    return false;\n  }\n\n  // If range is empty, satisfy check succeeds regardless what version is\n  if (!range) {\n    return true;\n  }\n\n  // Cleanup range\n  range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n  // Parse version\n  const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n  if (!parsedVersion) {\n    return false;\n  }\n\n  const allParsedRanges: ParsedVersion[] = [];\n\n  // Check given version whether it satisfies given range expression\n  const checkResult: boolean = _doSatisfies(\n    parsedVersion,\n    range,\n    allParsedRanges,\n    options\n  );\n\n  // If check result is OK,\n  // do another final check for pre-release, if pre-release check is included by option\n  if (checkResult && !options?.includePrerelease) {\n    return _doPreleaseCheck(parsedVersion, allParsedRanges);\n  }\n  return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n  return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n  parsedVersion: ParsedVersion,\n  range: string,\n  allParsedRanges: ParsedVersion[],\n  options?: SatisfiesOptions\n): boolean {\n  if (range.includes('||')) {\n    // A version matches a range if and only if\n    // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n    const ranges: string[] = range.trim().split('||');\n    for (const r of ranges) {\n      if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n        return true;\n      }\n    }\n    return false;\n  } else if (range.includes(' - ')) {\n    // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n    range = replaceHyphen(range, options);\n  } else if (range.includes(' ')) {\n    // Multiple separated ranges and all needs to be satisfied for success\n    const ranges: string[] = range\n      .trim()\n      .replace(/\\s{2,}/g, ' ')\n      .split(' ');\n    for (const r of ranges) {\n      if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // Check given parsed version with given range\n  return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n  parsedVersion: ParsedVersion,\n  range: string,\n  allParsedRanges: ParsedVersion[],\n  options?: SatisfiesOptions\n): boolean {\n  range = _normalizeRange(range, options);\n  if (range.includes(' ')) {\n    // If there are multiple ranges separated, satisfy each of them\n    return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n  } else {\n    // Validate and parse range\n    const parsedRange: ParsedVersion = _parseRange(range);\n    allParsedRanges.push(parsedRange);\n    // Check parsed version by parsed range\n    return _satisfies(parsedVersion, parsedRange);\n  }\n}\n\nfunction _satisfies(\n  parsedVersion: ParsedVersion,\n  parsedRange: ParsedVersion\n): boolean {\n  // If range is invalid, satisfy check fails (no error throw)\n  if (parsedRange.invalid) {\n    return false;\n  }\n\n  // If range is empty or wildcard, satisfy check succeeds regardless what version is\n  if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n    return true;\n  }\n\n  // Compare version segment first\n  let comparisonResult: number = _compareVersionSegments(\n    parsedVersion.versionSegments || [],\n    parsedRange.versionSegments || []\n  );\n\n  // If versions segments are equal, compare by pre-release segments\n  if (comparisonResult === 0) {\n    const versionPrereleaseSegments: string[] =\n      parsedVersion.prereleaseSegments || [];\n    const rangePrereleaseSegments: string[] =\n      parsedRange.prereleaseSegments || [];\n    if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n      comparisonResult = 0;\n    } else if (\n      !versionPrereleaseSegments.length &&\n      rangePrereleaseSegments.length\n    ) {\n      comparisonResult = 1;\n    } else if (\n      versionPrereleaseSegments.length &&\n      !rangePrereleaseSegments.length\n    ) {\n      comparisonResult = -1;\n    } else {\n      comparisonResult = _compareVersionSegments(\n        versionPrereleaseSegments,\n        rangePrereleaseSegments\n      );\n    }\n  }\n\n  // Resolve check result according to comparison operator\n  return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n  parsedVersion: ParsedVersion,\n  allParsedRanges: ParsedVersion[]\n): boolean {\n  if (parsedVersion.prerelease) {\n    return allParsedRanges.some(\n      r => r.prerelease && r.version === parsedVersion.version\n    );\n  }\n  return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n  range = range.trim();\n  range = replaceCaret(range, options);\n  range = replaceTilde(range);\n  range = replaceXRange(range, options);\n  range = range.trim();\n  return range;\n}\n\nfunction isX(id?: string): boolean {\n  return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n  const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n  if (!match) {\n    diag.error(`Invalid version: ${versionString}`);\n    return undefined;\n  }\n\n  const version: string = match!.groups!.version;\n  const prerelease: string = match!.groups!.prerelease;\n  const build: string = match!.groups!.build;\n\n  const versionSegments: string[] = version.split('.');\n  const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n  return {\n    op: undefined,\n\n    version,\n    versionSegments,\n    versionSegmentCount: versionSegments.length,\n\n    prerelease,\n    prereleaseSegments,\n    prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n    build,\n  };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n  if (!rangeString) {\n    return {};\n  }\n\n  const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n  if (!match) {\n    diag.error(`Invalid range: ${rangeString}`);\n    return {\n      invalid: true,\n    };\n  }\n\n  let op: string = match!.groups!.op;\n  const version: string = match!.groups!.version;\n  const prerelease: string = match!.groups!.prerelease;\n  const build: string = match!.groups!.build;\n\n  const versionSegments: string[] = version.split('.');\n  const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n  if (op === '==') {\n    op = '=';\n  }\n\n  return {\n    op: op || '=',\n\n    version,\n    versionSegments,\n    versionSegmentCount: versionSegments.length,\n\n    prerelease,\n    prereleaseSegments,\n    prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n    build,\n  };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n  return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n  const n: number = parseInt(v, 10);\n  return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n  a: string | number,\n  b: string | number\n): [string, string] | [number, number] {\n  if (typeof a === typeof b) {\n    if (typeof a === 'number') {\n      return [a as number, b as number];\n    } else if (typeof a === 'string') {\n      return [a as string, b as string];\n    } else {\n      throw new Error('Version segments can only be strings or numbers');\n    }\n  } else {\n    return [String(a), String(b)];\n  }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n  if (_isWildcard(v1) || _isWildcard(v2)) {\n    return 0;\n  }\n  const [parsedV1, parsedV2] = _normalizeVersionType(\n    _parseVersionString(v1),\n    _parseVersionString(v2)\n  );\n  if (parsedV1 > parsedV2) {\n    return 1;\n  } else if (parsedV1 < parsedV2) {\n    return -1;\n  }\n  return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n  for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n    const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n    if (res !== 0) {\n      return res;\n    }\n  }\n  return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n  `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n  `(?:\\\\.(${XRANGEIDENTIFIER})` +\n  `(?:\\\\.(${XRANGEIDENTIFIER})` +\n  `(?:${PRERELEASE})?${BUILD}?` +\n  `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n  `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n  const r = TILDE_REGEXP;\n  return comp.replace(r, (_, M, m, p, pr) => {\n    let ret;\n\n    if (isX(M)) {\n      ret = '';\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n    } else if (pr) {\n      ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n    }\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n  const r = CARET_REGEXP;\n  const z = options?.includePrerelease ? '-0' : '';\n  return comp.replace(r, (_, M, m, p, pr) => {\n    let ret;\n\n    if (isX(M)) {\n      ret = '';\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n      }\n    } else if (pr) {\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n      }\n    } else {\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n        } else {\n          ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n        }\n      } else {\n        ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n      }\n    }\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n  const r = XRANGE_REGEXP;\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    const xM = isX(M);\n    const xm = xM || isX(m);\n    const xp = xm || isX(p);\n    const anyX = xp;\n\n    if (gtlt === '=' && anyX) {\n      gtlt = '';\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options?.includePrerelease ? '-0' : '';\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0';\n      } else {\n        // nothing is forbidden\n        ret = '*';\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0;\n      }\n      p = 0;\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>=';\n        if (xm) {\n          M = +M + 1;\n          m = 0;\n          p = 0;\n        } else {\n          m = +m + 1;\n          p = 0;\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<';\n        if (xm) {\n          M = +M + 1;\n        } else {\n          m = +m + 1;\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0';\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`;\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n    }\n\n    return ret;\n  });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n  const r = HYPHENRANGE_REGEXP;\n  return comp.replace(\n    r,\n    (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n      if (isX(fM)) {\n        from = '';\n      } else if (isX(fm)) {\n        from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n      } else if (isX(fp)) {\n        from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n      } else if (fpr) {\n        from = `>=${from}`;\n      } else {\n        from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n      }\n\n      if (isX(tM)) {\n        to = '';\n      } else if (isX(tm)) {\n        to = `<${+tM + 1}.0.0-0`;\n      } else if (isX(tp)) {\n        to = `<${tM}.${+tm + 1}.0-0`;\n      } else if (tpr) {\n        to = `<=${tM}.${tm}.${tp}-${tpr}`;\n      } else if (options?.includePrerelease) {\n        to = `<${tM}.${tm}.${+tp + 1}-0`;\n      } else {\n        to = `<=${to}`;\n      }\n\n      return `${from} ${to}`.trim();\n    }\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n  emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n  execute: () => T,\n  onFinish: (e: Error | undefined, result: T | undefined) => void,\n  preventThrowingError?: boolean\n): T {\n  let error: Error | undefined;\n  let result: T | undefined;\n  try {\n    result = execute();\n  } catch (e) {\n    error = e;\n  } finally {\n    onFinish(error, result);\n    if (error && !preventThrowingError) {\n      // eslint-disable-next-line no-unsafe-finally\n      throw error;\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result as T;\n  }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n  execute: () => T,\n  onFinish: (e: Error | undefined, result: T | undefined) => void,\n  preventThrowingError?: boolean\n): Promise {\n  let error: Error | undefined;\n  let result: T | undefined;\n  try {\n    result = await execute();\n  } catch (e) {\n    error = e;\n  } finally {\n    onFinish(error, result);\n    if (error && !preventThrowingError) {\n      // eslint-disable-next-line no-unsafe-finally\n      throw error;\n    }\n    // eslint-disable-next-line no-unsafe-finally\n    return result as T;\n  }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n  return (\n    typeof func === 'function' &&\n    typeof (func as ShimWrapped).__original === 'function' &&\n    typeof (func as ShimWrapped).__unwrap === 'function' &&\n    (func as ShimWrapped).__wrapped === true\n  );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n  instrumentations: Instrumentation[],\n  tracerProvider?: TracerProvider,\n  meterProvider?: MeterProvider,\n  loggerProvider?: LoggerProvider\n): void {\n  for (let i = 0, j = instrumentations.length; i < j; i++) {\n    const instrumentation = instrumentations[i];\n    if (tracerProvider) {\n      instrumentation.setTracerProvider(tracerProvider);\n    }\n    if (meterProvider) {\n      instrumentation.setMeterProvider(meterProvider);\n    }\n    if (loggerProvider && instrumentation.setLoggerProvider) {\n      instrumentation.setLoggerProvider(loggerProvider);\n    }\n    // instrumentations have been already enabled during creation\n    // so enable only if user prevented that by setting enabled to false\n    // this is to prevent double enabling but when calling register all\n    // instrumentations should be now enabled\n    if (!instrumentation.getConfig().enabled) {\n      instrumentation.enable();\n    }\n  }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n  instrumentations: Instrumentation[]\n): void {\n  instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  PrismaInstrumentation: () => PrismaInstrumentation,\n  registerInstrumentations: () => import_instrumentation2.registerInstrumentations\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/PrismaInstrumentation.ts\nvar import_api2 = require(\"@opentelemetry/api\");\nvar import_instrumentation = require(\"@opentelemetry/instrumentation\");\n\n// ../instrumentation-contract/dist/index.mjs\nvar package_default = {\n  name: \"@prisma/instrumentation-contract\",\n  version: \"7.6.0\",\n  description: \"Shared types and utilities for Prisma instrumentation\",\n  main: \"dist/index.js\",\n  module: \"dist/index.mjs\",\n  types: \"dist/index.d.ts\",\n  exports: {\n    \".\": {\n      require: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.js\"\n      },\n      import: {\n        types: \"./dist/index.d.mts\",\n        default: \"./dist/index.mjs\"\n      }\n    }\n  },\n  license: \"Apache-2.0\",\n  homepage: \"https://www.prisma.io\",\n  repository: {\n    type: \"git\",\n    url: \"https://github.com/prisma/prisma.git\",\n    directory: \"packages/instrumentation-contract\"\n  },\n  bugs: \"https://github.com/prisma/prisma/issues\",\n  scripts: {\n    dev: \"DEV=true tsx helpers/build.ts\",\n    build: \"tsx helpers/build.ts\",\n    prepublishOnly: \"pnpm run build\",\n    test: \"vitest run\"\n  },\n  files: [\n    \"dist\"\n  ],\n  sideEffects: false,\n  devDependencies: {\n    \"@opentelemetry/api\": \"1.9.0\"\n  },\n  peerDependencies: {\n    \"@opentelemetry/api\": \"^1.8\"\n  }\n};\nvar majorVersion = package_default.version.split(\".\")[0];\nvar GLOBAL_INSTRUMENTATION_KEY = \"PRISMA_INSTRUMENTATION\";\nvar GLOBAL_VERSIONED_INSTRUMENTATION_KEY = `V${majorVersion}_PRISMA_INSTRUMENTATION`;\nvar globalThisWithPrismaInstrumentation = globalThis;\nfunction getGlobalTracingHelper() {\n  const versionedGlobal = globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n  if (versionedGlobal?.helper) {\n    return versionedGlobal.helper;\n  }\n  const fallbackGlobal = globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n  return fallbackGlobal?.helper;\n}\nfunction setGlobalTracingHelper(helper) {\n  const globalValue = { helper };\n  globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY] = globalValue;\n  globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY] = globalValue;\n}\nfunction clearGlobalTracingHelper() {\n  delete globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n  delete globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n}\n\n// src/ActiveTracingHelper.ts\nvar import_api = require(\"@opentelemetry/api\");\nvar showAllTraces = process.env.PRISMA_SHOW_ALL_TRACES === \"true\";\nvar nonSampledTraceParent = `00-10-10-00`;\nfunction engineSpanKindToOtelSpanKind(engineSpanKind) {\n  switch (engineSpanKind) {\n    case \"client\":\n      return import_api.SpanKind.CLIENT;\n    case \"internal\":\n    default:\n      return import_api.SpanKind.INTERNAL;\n  }\n}\nvar ActiveTracingHelper = class {\n  tracerProvider;\n  ignoreSpanTypes;\n  constructor({ tracerProvider, ignoreSpanTypes }) {\n    this.tracerProvider = tracerProvider;\n    this.ignoreSpanTypes = ignoreSpanTypes;\n  }\n  isEnabled() {\n    return true;\n  }\n  getTraceParent(context) {\n    const span = import_api.trace.getSpanContext(context ?? import_api.context.active());\n    if (span) {\n      return `00-${span.traceId}-${span.spanId}-0${span.traceFlags}`;\n    }\n    return nonSampledTraceParent;\n  }\n  dispatchEngineSpans(spans) {\n    const tracer = this.tracerProvider.getTracer(\"prisma\");\n    const linkIds = /* @__PURE__ */ new Map();\n    const roots = spans.filter((span) => span.parentId === null);\n    for (const root of roots) {\n      dispatchEngineSpan(tracer, root, spans, linkIds, this.ignoreSpanTypes);\n    }\n  }\n  getActiveContext() {\n    return import_api.context.active();\n  }\n  runInChildSpan(options, callback) {\n    if (typeof options === \"string\") {\n      options = { name: options };\n    }\n    if (options.internal && !showAllTraces) {\n      return callback();\n    }\n    const tracer = this.tracerProvider.getTracer(\"prisma\");\n    const context = options.context ?? this.getActiveContext();\n    const name = `prisma:client:${options.name}`;\n    if (shouldIgnoreSpan(name, this.ignoreSpanTypes)) {\n      return callback();\n    }\n    if (options.active === false) {\n      const span = tracer.startSpan(name, options, context);\n      return endSpan(span, callback(span, context));\n    }\n    return tracer.startActiveSpan(name, options, (span) => endSpan(span, callback(span, context)));\n  }\n};\nfunction dispatchEngineSpan(tracer, engineSpan, allSpans, linkIds, ignoreSpanTypes) {\n  if (shouldIgnoreSpan(engineSpan.name, ignoreSpanTypes)) return;\n  const spanOptions = {\n    attributes: engineSpan.attributes,\n    kind: engineSpanKindToOtelSpanKind(engineSpan.kind),\n    startTime: engineSpan.startTime\n  };\n  tracer.startActiveSpan(engineSpan.name, spanOptions, (span) => {\n    linkIds.set(engineSpan.id, span.spanContext().spanId);\n    if (engineSpan.links) {\n      span.addLinks(\n        engineSpan.links.flatMap((link) => {\n          const linkedId = linkIds.get(link);\n          if (!linkedId) {\n            return [];\n          }\n          return {\n            context: {\n              spanId: linkedId,\n              traceId: span.spanContext().traceId,\n              traceFlags: span.spanContext().traceFlags\n            }\n          };\n        })\n      );\n    }\n    const children = allSpans.filter((s) => s.parentId === engineSpan.id);\n    for (const child of children) {\n      dispatchEngineSpan(tracer, child, allSpans, linkIds, ignoreSpanTypes);\n    }\n    span.end(engineSpan.endTime);\n  });\n}\nfunction endSpan(span, result) {\n  if (isPromiseLike(result)) {\n    return result.then(\n      (value) => {\n        span.end();\n        return value;\n      },\n      (reason) => {\n        span.end();\n        throw reason;\n      }\n    );\n  }\n  span.end();\n  return result;\n}\nfunction isPromiseLike(value) {\n  return value != null && typeof value[\"then\"] === \"function\";\n}\nfunction shouldIgnoreSpan(spanName, ignoreSpanTypes) {\n  return ignoreSpanTypes.some(\n    (pattern) => typeof pattern === \"string\" ? pattern === spanName : pattern.test(spanName)\n  );\n}\n\n// package.json\nvar package_default2 = {\n  name: \"@prisma/instrumentation\",\n  version: \"7.6.0\",\n  description: \"OpenTelemetry compliant instrumentation for Prisma Client\",\n  main: \"dist/index.js\",\n  module: \"dist/index.mjs\",\n  types: \"dist/index.d.ts\",\n  exports: {\n    \".\": {\n      require: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.js\"\n      },\n      import: {\n        types: \"./dist/index.d.ts\",\n        default: \"./dist/index.mjs\"\n      }\n    }\n  },\n  license: \"Apache-2.0\",\n  homepage: \"https://www.prisma.io\",\n  repository: {\n    type: \"git\",\n    url: \"https://github.com/prisma/prisma.git\",\n    directory: \"packages/instrumentation\"\n  },\n  bugs: \"https://github.com/prisma/prisma/issues\",\n  devDependencies: {\n    \"@opentelemetry/api\": \"1.9.0\",\n    \"@prisma/instrumentation-contract\": \"workspace:*\",\n    \"@types/node\": \"~20.19.24\",\n    typescript: \"5.4.5\"\n  },\n  dependencies: {\n    \"@opentelemetry/instrumentation\": \"^0.207.0\"\n  },\n  peerDependencies: {\n    \"@opentelemetry/api\": \"^1.8\"\n  },\n  files: [\n    \"dist\"\n  ],\n  keywords: [\n    \"prisma\",\n    \"instrumentation\",\n    \"opentelemetry\",\n    \"otel\"\n  ],\n  scripts: {\n    dev: \"DEV=true tsx helpers/build.ts\",\n    build: \"tsx helpers/build.ts\",\n    prepublishOnly: \"pnpm run build\",\n    test: \"vitest run\"\n  },\n  sideEffects: false\n};\n\n// src/constants.ts\nvar VERSION = package_default2.version;\nvar NAME = package_default2.name;\nvar MODULE_NAME = \"@prisma/client\";\n\n// src/PrismaInstrumentation.ts\nvar PrismaInstrumentation = class extends import_instrumentation.InstrumentationBase {\n  tracerProvider;\n  constructor(config = {}) {\n    super(NAME, VERSION, config);\n  }\n  setTracerProvider(tracerProvider) {\n    this.tracerProvider = tracerProvider;\n  }\n  init() {\n    const module2 = new import_instrumentation.InstrumentationNodeModuleDefinition(MODULE_NAME, [VERSION]);\n    return [module2];\n  }\n  enable() {\n    const config = this._config;\n    setGlobalTracingHelper(\n      new ActiveTracingHelper({\n        tracerProvider: this.tracerProvider ?? import_api2.trace.getTracerProvider(),\n        ignoreSpanTypes: config.ignoreSpanTypes ?? []\n      })\n    );\n  }\n  disable() {\n    clearGlobalTracingHelper();\n  }\n  isEnabled() {\n    return getGlobalTracingHelper() !== void 0;\n  }\n};\n\n// src/index.ts\nvar import_instrumentation2 = require(\"@opentelemetry/instrumentation\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  PrismaInstrumentation,\n  registerInstrumentations\n});\n","import type { Link, Tracer } from '@opentelemetry/api';\nimport { context, SpanKind, trace, TraceFlags } from '@opentelemetry/api';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport type { IdGenerator } from '@opentelemetry/sdk-trace-base';\nimport { PrismaInstrumentation } from '@prisma/instrumentation';\nimport { consoleSandbox, defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport type { PrismaV5TracingHelper } from './prisma/vendor/v5-tracing-helper';\nimport type { PrismaV6TracingHelper } from './prisma/vendor/v6-tracing-helper';\n\nconst INTEGRATION_NAME = 'Prisma';\n\ntype CompatibilityLayerTraceHelper = PrismaV5TracingHelper & PrismaV6TracingHelper;\n\n// Vendored in from @prisma/instrumentation v5:\ntype V5EngineSpanEvent = {\n  span: boolean;\n  spans: V5EngineSpan[];\n};\n\ntype V5EngineSpanKind = 'client' | 'internal';\n\ntype V5EngineSpan = {\n  span: boolean;\n  name: string;\n  trace_id: string;\n  span_id: string;\n  parent_span_id: string;\n  start_time: [number, number];\n  end_time: [number, number];\n  attributes?: Record;\n  links?: { trace_id: string; span_id: string }[];\n  kind: V5EngineSpanKind;\n};\n\nfunction isPrismaV6TracingHelper(helper: unknown): helper is PrismaV6TracingHelper {\n  return !!helper && typeof helper === 'object' && 'dispatchEngineSpans' in helper;\n}\n\nfunction getPrismaTracingHelper(): unknown | undefined {\n  const prismaInstrumentationObject = (globalThis as Record).PRISMA_INSTRUMENTATION;\n  const prismaTracingHelper =\n    prismaInstrumentationObject &&\n    typeof prismaInstrumentationObject === 'object' &&\n    'helper' in prismaInstrumentationObject\n      ? prismaInstrumentationObject.helper\n      : undefined;\n\n  return prismaTracingHelper;\n}\n\ntype TracerWithIdGenerator = Tracer & {\n  _idGenerator?: IdGenerator;\n};\n\ninterface PrismaOptions {\n  /**\n   * @deprecated This is no longer used, v5 works out of the box.\n   */\n  prismaInstrumentation?: Instrumentation;\n  /**\n   * Configuration passed through to the {@link PrismaInstrumentation} constructor.\n   */\n  instrumentationConfig?: ConstructorParameters[0];\n}\n\nclass SentryPrismaInteropInstrumentation extends PrismaInstrumentation {\n  public constructor(options?: PrismaOptions) {\n    super(options?.instrumentationConfig);\n  }\n\n  public enable(): void {\n    super.enable();\n\n    // The PrismaIntegration (super class) defines a global variable `global[\"PRISMA_INSTRUMENTATION\"]` when `enable()` is called. This global variable holds a \"TracingHelper\" which Prisma uses internally to create tracing data. It's their way of not depending on OTEL with their main package. The sucky thing is, prisma broke the interface of the tracing helper with the v6 major update. This means that if you use Prisma 5 with the v6 instrumentation (or vice versa) Prisma just blows up, because tries to call methods on the helper that no longer exist.\n    // Because we actually want to use the v6 instrumentation and not blow up in Prisma 5 user's faces, what we're doing here is backfilling the v5 method (`createEngineSpan`) with a noop so that no longer crashes when it attempts to call that function.\n    const prismaTracingHelper = getPrismaTracingHelper();\n\n    if (isPrismaV6TracingHelper(prismaTracingHelper)) {\n      // Inspired & adjusted from https://github.com/prisma/prisma/tree/5.22.0/packages/instrumentation\n      (prismaTracingHelper as CompatibilityLayerTraceHelper).createEngineSpan = (\n        engineSpanEvent: V5EngineSpanEvent,\n      ) => {\n        const tracer = trace.getTracer('prismaV5Compatibility') as TracerWithIdGenerator;\n\n        // Prisma v5 relies on being able to create spans with a specific span & trace ID\n        // this is no longer possible in OTEL v2, there is no public API to do this anymore\n        // So in order to kind of hack this possibility, we rely on the internal `_idGenerator` property\n        // This is used to generate the random IDs, and we overwrite this temporarily to generate static IDs\n        // This is flawed and may not work, e.g. if the code is bundled and the private property is renamed\n        // in such cases, these spans will not be captured and some Prisma spans will be missing\n        const initialIdGenerator = tracer._idGenerator;\n\n        if (!initialIdGenerator) {\n          consoleSandbox(() => {\n            // eslint-disable-next-line no-console\n            console.warn(\n              '[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!',\n            );\n          });\n\n          return;\n        }\n\n        try {\n          engineSpanEvent.spans.forEach(engineSpan => {\n            const kind = engineSpanKindToOTELSpanKind(engineSpan.kind);\n\n            const parentSpanId = engineSpan.parent_span_id;\n            const spanId = engineSpan.span_id;\n            const traceId = engineSpan.trace_id;\n\n            const links: Link[] | undefined = engineSpan.links?.map(link => {\n              return {\n                context: {\n                  traceId: link.trace_id,\n                  spanId: link.span_id,\n                  traceFlags: TraceFlags.SAMPLED,\n                },\n              };\n            });\n\n            const ctx = trace.setSpanContext(context.active(), {\n              traceId,\n              spanId: parentSpanId,\n              traceFlags: TraceFlags.SAMPLED,\n            });\n\n            context.with(ctx, () => {\n              const temporaryIdGenerator: IdGenerator = {\n                generateTraceId: () => {\n                  return traceId;\n                },\n                generateSpanId: () => {\n                  return spanId;\n                },\n              };\n\n              tracer._idGenerator = temporaryIdGenerator;\n\n              const span = tracer.startSpan(engineSpan.name, {\n                kind,\n                links,\n                startTime: engineSpan.start_time,\n                attributes: engineSpan.attributes,\n              });\n\n              span.end(engineSpan.end_time);\n\n              tracer._idGenerator = initialIdGenerator;\n            });\n          });\n        } finally {\n          // Ensure we always restore this at the end, even if something errors\n          tracer._idGenerator = initialIdGenerator;\n        }\n      };\n    }\n  }\n}\n\nfunction engineSpanKindToOTELSpanKind(engineSpanKind: V5EngineSpanKind): SpanKind {\n  switch (engineSpanKind) {\n    case 'client':\n      return SpanKind.CLIENT;\n    case 'internal':\n    default: // Other span kinds aren't currently supported\n      return SpanKind.INTERNAL;\n  }\n}\n\nexport const instrumentPrisma = generateInstrumentOnce(INTEGRATION_NAME, options => {\n  return new SentryPrismaInteropInstrumentation(options);\n});\n\n/**\n * Adds Sentry tracing instrumentation for the [prisma](https://www.npmjs.com/package/prisma) library.\n * For more information, see the [`prismaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/prisma/).\n *\n * NOTE: By default, this integration works with Prisma version 6.\n * To get performance instrumentation for other Prisma versions,\n * 1. Install the `@prisma/instrumentation` package with the desired version.\n * 1. Pass a `new PrismaInstrumentation()` instance as exported from `@prisma/instrumentation` to the `prismaInstrumentation` option of this integration:\n *\n *    ```js\n *    import { PrismaInstrumentation } from '@prisma/instrumentation'\n *\n *    Sentry.init({\n *      integrations: [\n *        prismaIntegration({\n *          // Override the default instrumentation that Sentry uses\n *          prismaInstrumentation: new PrismaInstrumentation()\n *        })\n *      ]\n *    })\n *    ```\n *\n *    The passed instrumentation instance will override the default instrumentation instance the integration would use, while the `prismaIntegration` will still ensure data compatibility for the various Prisma versions.\n * 1. Depending on your Prisma version (prior to version 6), add `previewFeatures = [\"tracing\"]` to the client generator block of your Prisma schema:\n *\n *    ```\n *    generator client {\n *      provider = \"prisma-client-js\"\n *      previewFeatures = [\"tracing\"]\n *    }\n *    ```\n */\nexport const prismaIntegration = defineIntegration((options?: PrismaOptions) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentPrisma(options);\n    },\n    setup(client) {\n      // If no tracing helper exists, we skip any work here\n      // this means that prisma is not being used\n      if (!getPrismaTracingHelper()) {\n        return;\n      }\n\n      client.on('spanStart', span => {\n        const spanJSON = spanToJSON(span);\n        if (spanJSON.description?.startsWith('prisma:')) {\n          span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.prisma');\n        }\n\n        // Make sure we use the query text as the span name, for ex. SELECT * FROM \"User\" WHERE \"id\" = $1\n        if (spanJSON.description === 'prisma:engine:db_query' && spanJSON.data['db.query.text']) {\n          span.updateName(spanJSON.data['db.query.text'] as string);\n        }\n\n        // In Prisma v5.22+, the `db.system` attribute is automatically set\n        // On older versions, this is missing, so we add it here\n        if (spanJSON.description === 'prisma:engine:db_query' && !spanJSON.data['db.system']) {\n          span.setAttribute('db.system', 'prisma');\n        }\n      });\n    },\n  };\n});\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.60.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-hapi';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type * as Hapi from '@hapi/hapi';\n\nexport const HapiComponentName = '@hapi/hapi';\n\n/**\n * This symbol is used to mark a Hapi route handler or server extension handler as\n * already patched, since its possible to use these handlers multiple times\n * i.e. when allowing multiple versions of one plugin, or when registering a plugin\n * multiple times on different servers.\n */\nexport const handlerPatched: unique symbol = Symbol('hapi-handler-patched');\n\nexport type HapiServerRouteInputMethod = (route: HapiServerRouteInput) => void;\n\nexport type HapiServerRouteInput =\n  | PatchableServerRoute\n  | PatchableServerRoute[];\n\nexport type PatchableServerRoute = Hapi.ServerRoute & {\n  [handlerPatched]?: boolean;\n};\n\nexport type HapiPluginObject = Hapi.ServerRegisterPluginObject;\n\nexport type HapiPluginInput =\n  | HapiPluginObject\n  | Array>;\n\nexport type RegisterFunction = (\n  plugin: HapiPluginInput,\n  options?: Hapi.ServerRegisterOptions\n) => Promise;\n\nexport type PatchableExtMethod = Hapi.Lifecycle.Method & {\n  [handlerPatched]?: boolean;\n};\n\nexport type ServerExtDirectInput = [\n  Hapi.ServerRequestExtType,\n  Hapi.Lifecycle.Method,\n  (Hapi.ServerExtOptions | undefined)?,\n];\n\nexport const HapiLayerType = {\n  ROUTER: 'router',\n  PLUGIN: 'plugin',\n  EXT: 'server.ext',\n};\n\nexport const HapiLifecycleMethodNames = new Set([\n  'onPreAuth',\n  'onCredentials',\n  'onPostAuth',\n  'onPreHandler',\n  'onPostHandler',\n  'onPreResponse',\n  'onRequest',\n]);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  HAPI_TYPE = 'hapi.type',\n  PLUGIN_NAME = 'hapi.plugin.name',\n  EXT_TYPE = 'server.ext.type',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n  ATTR_HTTP_ROUTE,\n  ATTR_HTTP_REQUEST_METHOD,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_HTTP_METHOD } from './semconv';\nimport type * as Hapi from '@hapi/hapi';\nimport {\n  HapiLayerType,\n  HapiLifecycleMethodNames,\n  HapiPluginObject,\n  PatchableExtMethod,\n  ServerExtDirectInput,\n} from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\n\nexport function getPluginName(plugin: Hapi.Plugin): string {\n  if ((plugin as Hapi.PluginNameVersion).name) {\n    return (plugin as Hapi.PluginNameVersion).name;\n  } else {\n    return (plugin as Hapi.PluginPackage).pkg.name;\n  }\n}\n\nexport const isLifecycleExtType = (\n  variableToCheck: unknown\n): variableToCheck is Hapi.ServerRequestExtType => {\n  return (\n    typeof variableToCheck === 'string' &&\n    HapiLifecycleMethodNames.has(variableToCheck)\n  );\n};\n\nexport const isLifecycleExtEventObj = (\n  variableToCheck: unknown\n): variableToCheck is Hapi.ServerExtEventsRequestObject => {\n  const event = (variableToCheck as Hapi.ServerExtEventsRequestObject)?.type;\n  return event !== undefined && isLifecycleExtType(event);\n};\n\nexport const isDirectExtInput = (\n  variableToCheck: unknown\n): variableToCheck is ServerExtDirectInput => {\n  return (\n    Array.isArray(variableToCheck) &&\n    variableToCheck.length <= 3 &&\n    isLifecycleExtType(variableToCheck[0]) &&\n    typeof variableToCheck[1] === 'function'\n  );\n};\n\nexport const isPatchableExtMethod = (\n  variableToCheck: PatchableExtMethod | PatchableExtMethod[]\n): variableToCheck is PatchableExtMethod => {\n  return !Array.isArray(variableToCheck);\n};\n\nexport const getRouteMetadata = (\n  route: Hapi.ServerRoute,\n  semconvStability: SemconvStability,\n  pluginName?: string\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  const attributes: Attributes = {\n    [ATTR_HTTP_ROUTE]: route.path,\n  };\n  if (semconvStability & SemconvStability.OLD) {\n    attributes[ATTR_HTTP_METHOD] = route.method;\n  }\n  if (semconvStability & SemconvStability.STABLE) {\n    // Note: This currently does *not* normalize the method name to uppercase\n    // and conditionally include `http.request.method.original` as described\n    // at https://opentelemetry.io/docs/specs/semconv/http/http-spans/\n    // These attributes are for a *hapi* span, and not the parent HTTP span,\n    // so the HTTP span guidance doesn't strictly apply.\n    attributes[ATTR_HTTP_REQUEST_METHOD] = route.method;\n  }\n\n  let name;\n  if (pluginName) {\n    attributes[AttributeNames.HAPI_TYPE] = HapiLayerType.PLUGIN;\n    attributes[AttributeNames.PLUGIN_NAME] = pluginName;\n    name = `${pluginName}: route - ${route.path}`;\n  } else {\n    attributes[AttributeNames.HAPI_TYPE] = HapiLayerType.ROUTER;\n    name = `route - ${route.path}`;\n  }\n\n  return { attributes, name };\n};\n\nexport const getExtMetadata = (\n  extPoint: Hapi.ServerRequestExtType,\n  pluginName?: string,\n  methodName?: string\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  let baseName = `ext - ${extPoint}`;\n  if (methodName && methodName !== 'method') {\n    // method is the default name for the extension in the ServerExtEventsObject format.\n    baseName = `ext - ${extPoint} - ${methodName}`;\n  }\n  if (pluginName) {\n    return {\n      attributes: {\n        [AttributeNames.EXT_TYPE]: extPoint,\n        [AttributeNames.HAPI_TYPE]: HapiLayerType.EXT,\n        [AttributeNames.PLUGIN_NAME]: pluginName,\n      },\n      name: `${pluginName}: ${baseName}`,\n    };\n  }\n  return {\n    attributes: {\n      [AttributeNames.EXT_TYPE]: extPoint,\n      [AttributeNames.HAPI_TYPE]: HapiLayerType.EXT,\n    },\n    name: baseName,\n  };\n};\n\nexport const getPluginFromInput = (\n  pluginObj: HapiPluginObject\n): Hapi.Plugin => {\n  if ('plugin' in pluginObj) {\n    if ('plugin' in pluginObj.plugin) {\n      return pluginObj.plugin.plugin;\n    }\n    return pluginObj.plugin;\n  }\n  return pluginObj;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\n\nimport type * as Hapi from '@hapi/hapi';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  HapiComponentName,\n  HapiServerRouteInput,\n  handlerPatched,\n  PatchableServerRoute,\n  HapiServerRouteInputMethod,\n  HapiPluginInput,\n  RegisterFunction,\n  PatchableExtMethod,\n  ServerExtDirectInput,\n} from './internal-types';\nimport {\n  getRouteMetadata,\n  getPluginName,\n  isLifecycleExtType,\n  isLifecycleExtEventObj,\n  getExtMetadata,\n  isDirectExtInput,\n  isPatchableExtMethod,\n  getPluginFromInput,\n} from './utils';\n\n/** Hapi instrumentation for OpenTelemetry */\nexport class HapiInstrumentation extends InstrumentationBase {\n  private _semconvStability: SemconvStability;\n\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._semconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    return new InstrumentationNodeModuleDefinition(\n      HapiComponentName,\n      ['>=17.0.0 <22'],\n      (module: any) => {\n        const moduleExports: typeof Hapi =\n          module[Symbol.toStringTag] === 'Module' ? module.default : module;\n        if (!isWrapped(moduleExports.server)) {\n          this._wrap(\n            moduleExports,\n            'server',\n            this._getServerPatch.bind(this) as any\n          );\n        }\n\n        if (!isWrapped(moduleExports.Server)) {\n          this._wrap(\n            moduleExports,\n            'Server',\n            this._getServerPatch.bind(this) as any\n          );\n        }\n        return moduleExports;\n      },\n      (module: any) => {\n        const moduleExports: typeof Hapi =\n          module[Symbol.toStringTag] === 'Module' ? module.default : module;\n        this._massUnwrap([moduleExports], ['server', 'Server']);\n      }\n    );\n  }\n\n  /**\n   * Patches the Hapi.server and Hapi.Server functions in order to instrument\n   * the server.route, server.ext, and server.register functions via calls to the\n   * @function _getServerRoutePatch, @function _getServerExtPatch, and\n   * @function _getServerRegisterPatch functions\n   * @param original - the original Hapi Server creation function\n   */\n  private _getServerPatch(\n    original: (options?: Hapi.ServerOptions) => Hapi.Server\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n    const self = this;\n    return function server(this: Hapi.Server, opts?: Hapi.ServerOptions) {\n      const newServer: Hapi.Server = original.apply(this, [opts]);\n\n      self._wrap(newServer, 'route', originalRouter => {\n        return instrumentation._getServerRoutePatch.bind(instrumentation)(\n          originalRouter\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n      // function, which requires supporting a variety of different parameters\n      // as extension inputs\n      self._wrap(newServer, 'ext', originalExtHandler => {\n        return instrumentation._getServerExtPatch.bind(instrumentation)(\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          originalExtHandler as any\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.Server.register\n      // function, which requires supporting a variety of different types of Plugin inputs\n      self._wrap(\n        newServer,\n        'register',\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        instrumentation._getServerRegisterPatch.bind(instrumentation) as any\n      );\n      return newServer;\n    };\n  }\n\n  /**\n   * Patches the plugin register function used by the Hapi Server. This function\n   * goes through each plugin that is being registered and adds instrumentation\n   * via a call to the @function _wrapRegisterHandler function.\n   * @param {RegisterFunction} original - the original register function which\n   * registers each plugin on the server\n   */\n  private _getServerRegisterPatch(\n    original: RegisterFunction\n  ): RegisterFunction {\n    const instrumentation: HapiInstrumentation = this;\n    return function register(\n      this: Hapi.Server,\n      pluginInput: HapiPluginInput,\n      options?: Hapi.ServerRegisterOptions\n    ) {\n      if (Array.isArray(pluginInput)) {\n        for (const pluginObj of pluginInput) {\n          const plugin = getPluginFromInput(pluginObj);\n          instrumentation._wrapRegisterHandler(plugin);\n        }\n      } else {\n        const plugin = getPluginFromInput(pluginInput);\n        instrumentation._wrapRegisterHandler(plugin);\n      }\n      return original.apply(this, [pluginInput, options]);\n    };\n  }\n\n  /**\n   * Patches the Server.ext function which adds extension methods to the specified\n   * point along the request lifecycle. This function accepts the full range of\n   * accepted input into the standard Hapi `server.ext` function. For each extension,\n   * it adds instrumentation to the handler via a call to the @function _wrapExtMethods\n   * function.\n   * @param original - the original ext function which adds the extension method to the server\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server extension. Else, signifies that the extension was added directly\n   */\n  private _getServerExtPatch(\n    original: (...args: unknown[]) => unknown,\n    pluginName?: string\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n\n    return function ext(\n      this: ThisParameterType,\n      ...args: Parameters\n    ) {\n      if (Array.isArray(args[0])) {\n        const eventsList:\n          | Hapi.ServerExtEventsObject[]\n          | Hapi.ServerExtEventsRequestObject[] = args[0];\n        for (let i = 0; i < eventsList.length; i++) {\n          const eventObj = eventsList[i];\n          if (isLifecycleExtType(eventObj.type)) {\n            const lifecycleEventObj =\n              eventObj as Hapi.ServerExtEventsRequestObject;\n            const handler = instrumentation._wrapExtMethods(\n              lifecycleEventObj.method,\n              eventObj.type,\n              pluginName\n            );\n            lifecycleEventObj.method = handler;\n            eventsList[i] = lifecycleEventObj;\n          }\n        }\n        return original.apply(this, args);\n      } else if (isDirectExtInput(args)) {\n        const extInput: ServerExtDirectInput = args;\n        const method: PatchableExtMethod = extInput[1];\n        const handler = instrumentation._wrapExtMethods(\n          method,\n          extInput[0],\n          pluginName\n        );\n        return original.apply(this, [extInput[0], handler, extInput[2]]);\n      } else if (isLifecycleExtEventObj(args[0])) {\n        const lifecycleEventObj = args[0];\n        const handler = instrumentation._wrapExtMethods(\n          lifecycleEventObj.method,\n          lifecycleEventObj.type,\n          pluginName\n        );\n        lifecycleEventObj.method = handler;\n        return original.call(this, lifecycleEventObj);\n      }\n      return original.apply(this, args);\n    };\n  }\n\n  /**\n   * Patches the Server.route function. This function accepts either one or an array\n   * of Hapi.ServerRoute objects and adds instrumentation on each route via a call to\n   * the @function _wrapRouteHandler function.\n   * @param {HapiServerRouteInputMethod} original - the original route function which adds\n   * the route to the server\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _getServerRoutePatch(\n    original: HapiServerRouteInputMethod,\n    pluginName?: string\n  ) {\n    const instrumentation: HapiInstrumentation = this;\n    return function route(\n      this: Hapi.Server,\n      route: HapiServerRouteInput\n    ): void {\n      if (Array.isArray(route)) {\n        for (let i = 0; i < route.length; i++) {\n          const newRoute = instrumentation._wrapRouteHandler.call(\n            instrumentation,\n            route[i],\n            pluginName\n          );\n          route[i] = newRoute;\n        }\n      } else {\n        route = instrumentation._wrapRouteHandler.call(\n          instrumentation,\n          route,\n          pluginName\n        );\n      }\n      return original.apply(this, [route]);\n    };\n  }\n\n  /**\n   * Wraps newly registered plugins to add instrumentation to the plugin's clone of\n   * the original server. Specifically, wraps the server.route and server.ext functions\n   * via calls to @function _getServerRoutePatch and @function _getServerExtPatch\n   * @param {Hapi.Plugin} plugin - the new plugin which is being instrumented\n   */\n  private _wrapRegisterHandler(plugin: Hapi.Plugin): void {\n    const instrumentation: HapiInstrumentation = this;\n    const pluginName = getPluginName(plugin);\n    const oldRegister = plugin.register;\n    const self = this;\n    const newRegisterHandler = function (\n      this: typeof plugin,\n      server: Hapi.Server,\n      options: T\n    ) {\n      self._wrap(server, 'route', original => {\n        return instrumentation._getServerRoutePatch.bind(instrumentation)(\n          original,\n          pluginName\n        );\n      });\n\n      // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n      // function, which requires supporting a variety of different parameters\n      // as extension inputs\n      self._wrap(server, 'ext', originalExtHandler => {\n        return instrumentation._getServerExtPatch.bind(instrumentation)(\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          originalExtHandler as any,\n          pluginName\n        );\n      });\n      return oldRegister.call(this, server, options);\n    };\n    plugin.register = newRegisterHandler;\n  }\n\n  /**\n   * Wraps request extension methods to add instrumentation to each new extension handler.\n   * Patches each individual extension in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {PatchableExtMethod | PatchableExtMethod[]} method - the request extension\n   * handler which is being instrumented\n   * @param {Hapi.ServerRequestExtType} extPoint - the point in the Hapi request lifecycle\n   * which this extension targets\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _wrapExtMethods(\n    method: T,\n    extPoint: Hapi.ServerRequestExtType,\n    pluginName?: string\n  ): T {\n    const instrumentation: HapiInstrumentation = this;\n    if (method instanceof Array) {\n      for (let i = 0; i < method.length; i++) {\n        method[i] = instrumentation._wrapExtMethods(\n          method[i],\n          extPoint\n        ) as PatchableExtMethod;\n      }\n      return method;\n    } else if (isPatchableExtMethod(method)) {\n      if (method[handlerPatched] === true) return method;\n      method[handlerPatched] = true;\n\n      const newHandler: PatchableExtMethod = async function (\n        ...params: Parameters\n      ) {\n        if (api.trace.getSpan(api.context.active()) === undefined) {\n          return await method.apply(this, params);\n        }\n        const metadata = getExtMetadata(extPoint, pluginName, method.name);\n        const span = instrumentation.tracer.startSpan(metadata.name, {\n          attributes: metadata.attributes,\n        });\n        try {\n          return await api.context.with<\n            Parameters,\n            Hapi.Lifecycle.Method\n          >(\n            api.trace.setSpan(api.context.active(), span),\n            method,\n            undefined,\n            ...params\n          );\n        } catch (err: any) {\n          span.recordException(err);\n          span.setStatus({\n            code: api.SpanStatusCode.ERROR,\n            message: err.message,\n          });\n          throw err;\n        } finally {\n          span.end();\n        }\n      };\n      return newHandler as T;\n    }\n    return method;\n  }\n\n  /**\n   * Patches each individual route handler method in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {PatchableServerRoute} route - the route handler which is being instrumented\n   * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n   * for adding this server route. Else, signifies that the route was added directly\n   */\n  private _wrapRouteHandler(\n    route: PatchableServerRoute,\n    pluginName?: string\n  ): PatchableServerRoute {\n    const instrumentation: HapiInstrumentation = this;\n    if (route[handlerPatched] === true) return route;\n    route[handlerPatched] = true;\n\n    const wrapHandler: (\n      oldHandler: Hapi.Lifecycle.Method\n    ) => Hapi.Lifecycle.Method = oldHandler => {\n      return async function (...params: Parameters) {\n        if (api.trace.getSpan(api.context.active()) === undefined) {\n          return await oldHandler.call(this, ...params);\n        }\n        const rpcMetadata = getRPCMetadata(api.context.active());\n        if (rpcMetadata?.type === RPCType.HTTP) {\n          rpcMetadata.route = route.path;\n        }\n        const metadata = getRouteMetadata(\n          route,\n          instrumentation._semconvStability,\n          pluginName\n        );\n        const span = instrumentation.tracer.startSpan(metadata.name, {\n          attributes: metadata.attributes,\n        });\n        try {\n          return await api.context.with(\n            api.trace.setSpan(api.context.active(), span),\n            () => oldHandler.call(this, ...params)\n          );\n        } catch (err: any) {\n          span.recordException(err);\n          span.setStatus({\n            code: api.SpanStatusCode.ERROR,\n            message: err.message,\n          });\n          throw err;\n        } finally {\n          span.end();\n        }\n      };\n    };\n\n    if (typeof route.handler === 'function') {\n      route.handler = wrapHandler(route.handler as Hapi.Lifecycle.Method);\n    } else if (typeof route.options === 'function') {\n      const oldOptions = route.options;\n      route.options = function (server) {\n        const options = oldOptions(server);\n        if (typeof options.handler === 'function') {\n          options.handler = wrapHandler(\n            options.handler as Hapi.Lifecycle.Method\n          );\n        }\n        return options;\n      };\n    } else if (typeof route.options?.handler === 'function') {\n      route.options.handler = wrapHandler(\n        route.options.handler as Hapi.Lifecycle.Method\n      );\n    }\n    return route;\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { HapiInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\n","import { HapiInstrumentation } from '@opentelemetry/instrumentation-hapi';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getClient,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  SDK_VERSION,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport type { Request, RequestEvent, Server } from './types';\n\nconst INTEGRATION_NAME = 'Hapi';\n\nexport const instrumentHapi = generateInstrumentOnce(INTEGRATION_NAME, () => new HapiInstrumentation());\n\nconst _hapiIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentHapi();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Hapi](https://hapi.dev/).\n *\n * If you also want to capture errors, you need to call `setupHapiErrorHandler(server)` after you set up your server.\n *\n * For more information, see the [hapi documentation](https://docs.sentry.io/platforms/javascript/guides/hapi/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.hapiIntegration()],\n * })\n * ```\n */\nexport const hapiIntegration = defineIntegration(_hapiIntegration);\n\nfunction isErrorEvent(event: unknown): event is RequestEvent {\n  return !!(event && typeof event === 'object' && 'error' in event && event.error);\n}\n\nfunction sendErrorToSentry(errorData: object): void {\n  captureException(errorData, {\n    mechanism: {\n      type: 'auto.function.hapi',\n      handled: false,\n    },\n  });\n}\n\nexport const hapiErrorPlugin = {\n  name: 'SentryHapiErrorPlugin',\n  version: SDK_VERSION,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  register: async function (serverArg: Record) {\n    const server = serverArg as unknown as Server;\n\n    server.events.on({ name: 'request', channels: ['error'] }, (request: Request, event: RequestEvent) => {\n      if (getIsolationScope() !== getDefaultIsolationScope()) {\n        const route = request.route;\n        if (route.path) {\n          getIsolationScope().setTransactionName(`${route.method.toUpperCase()} ${route.path}`);\n        }\n      } else {\n        DEBUG_BUILD &&\n          debug.warn('Isolation scope is still the default isolation scope - skipping setting transactionName');\n      }\n\n      if (isErrorEvent(event)) {\n        sendErrorToSentry(event.error);\n      }\n    });\n  },\n};\n\n/**\n * Add a Hapi plugin to capture errors to Sentry.\n *\n * @param server The Hapi server to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Hapi = require('@hapi/hapi');\n *\n * const init = async () => {\n *   const server = Hapi.server();\n *\n *   // all your routes here\n *\n *   await Sentry.setupHapiErrorHandler(server);\n *\n *   await server.start();\n * };\n * ```\n */\nexport async function setupHapiErrorHandler(server: Server): Promise {\n  await server.register(hapiErrorPlugin);\n\n  // Sadly, middleware spans do not go through `requestHook`, so we handle those here\n  // We register this hook in this method, because if we register it in the integration `setup`,\n  // it would always run even for users that are not even using hapi\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', span => {\n      addHapiSpanAttributes(span);\n    });\n  }\n\n  ensureIsWrapped(server.register, 'hapi');\n}\n\nfunction addHapiSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: router, plugin, server.ext\n  const type = attributes['hapi.type'];\n\n  // If this is already set, or we have no Hapi span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hapi',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hapi`,\n  });\n}\n","export const AttributeNames = {\n  HONO_TYPE: 'hono.type',\n  HONO_NAME: 'hono.name',\n} as const;\n\nexport type AttributeNames = (typeof AttributeNames)[keyof typeof AttributeNames];\n\nexport const HonoTypes = {\n  MIDDLEWARE: 'middleware',\n  REQUEST_HANDLER: 'request_handler',\n} as const;\n\nexport type HonoTypes = (typeof HonoTypes)[keyof typeof HonoTypes];\n","import type { Span } from '@opentelemetry/api';\nimport { context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { isThenable } from '@sentry/core';\nimport { AttributeNames, HonoTypes } from './constants';\nimport type {\n  Context,\n  Handler,\n  HandlerInterface,\n  Hono,\n  HonoInstance,\n  MiddlewareHandler,\n  MiddlewareHandlerInterface,\n  Next,\n  OnHandlerInterface,\n} from './types';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-hono';\nconst PACKAGE_VERSION = '0.0.1';\n\nexport interface HonoResponseHookFunction {\n  (span: Span): void;\n}\n\nexport interface HonoInstrumentationConfig extends InstrumentationConfig {\n  /** Function for adding custom span attributes from the response */\n  responseHook?: HonoResponseHookFunction;\n}\n\n/**\n * Hono instrumentation for OpenTelemetry\n */\nexport class HonoInstrumentation extends InstrumentationBase {\n  public constructor(config: HonoInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  /**\n   * Initialize the instrumentation.\n   */\n  public init(): InstrumentationNodeModuleDefinition[] {\n    return [\n      new InstrumentationNodeModuleDefinition('hono', ['>=4.0.0 <5'], moduleExports => this._patch(moduleExports)),\n    ];\n  }\n\n  /**\n   * Patches the module exports to instrument Hono.\n   */\n  private _patch(moduleExports: { Hono: Hono }): { Hono: Hono } {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    class WrappedHono extends moduleExports.Hono {\n      public constructor(...args: unknown[]) {\n        super(...args);\n\n        instrumentation._wrap(this, 'get', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'post', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'put', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'delete', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'options', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'patch', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'all', instrumentation._patchHandler());\n        instrumentation._wrap(this, 'on', instrumentation._patchOnHandler());\n        instrumentation._wrap(this, 'use', instrumentation._patchMiddlewareHandler());\n      }\n    }\n\n    try {\n      moduleExports.Hono = WrappedHono;\n    } catch {\n      // This is a workaround for environments where direct assignment is not allowed.\n      return { ...moduleExports, Hono: WrappedHono };\n    }\n\n    return moduleExports;\n  }\n\n  /**\n   * Patches the route handler to instrument it.\n   */\n  private _patchHandler(): (original: HandlerInterface) => HandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: HandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        if (typeof args[0] === 'string') {\n          const path = args[0];\n          if (args.length === 1) {\n            return original.apply(this, [path]);\n          }\n\n          const handlers = args.slice(1);\n          return original.apply(this, [\n            path,\n            ...handlers.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n          ]);\n        }\n\n        return original.apply(\n          this,\n          args.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n        );\n      };\n    };\n  }\n\n  /**\n   * Patches the 'on' handler to instrument it.\n   */\n  private _patchOnHandler(): (original: OnHandlerInterface) => OnHandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: OnHandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        const handlers = args.slice(2);\n        return original.apply(this, [\n          ...args.slice(0, 2),\n          ...handlers.map(handler => instrumentation._wrapHandler(handler as Handler | MiddlewareHandler)),\n        ]);\n      };\n    };\n  }\n\n  /**\n   * Patches the middleware handler to instrument it.\n   */\n  private _patchMiddlewareHandler(): (original: MiddlewareHandlerInterface) => MiddlewareHandlerInterface {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (original: MiddlewareHandlerInterface) {\n      return function wrappedHandler(this: HonoInstance, ...args: unknown[]) {\n        if (typeof args[0] === 'string') {\n          const path = args[0];\n          if (args.length === 1) {\n            return original.apply(this, [path]);\n          }\n\n          const handlers = args.slice(1);\n          return original.apply(this, [\n            path,\n            ...handlers.map(handler => instrumentation._wrapHandler(handler as MiddlewareHandler)),\n          ]);\n        }\n\n        return original.apply(\n          this,\n          args.map(handler => instrumentation._wrapHandler(handler as MiddlewareHandler)),\n        );\n      };\n    };\n  }\n\n  /**\n   * Wraps a handler or middleware handler to apply instrumentation.\n   */\n  private _wrapHandler(handler: Handler | MiddlewareHandler): Handler | MiddlewareHandler {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const instrumentation = this;\n\n    return function (this: unknown, c: Context, next: Next) {\n      if (!instrumentation.isEnabled()) {\n        return handler.apply(this, [c, next]);\n      }\n\n      const path = c.req.path;\n      const span = instrumentation.tracer.startSpan(path);\n\n      return context.with(trace.setSpan(context.active(), span), () => {\n        return instrumentation._safeExecute(\n          () => {\n            const result = handler.apply(this, [c, next]);\n            if (isThenable(result)) {\n              return result.then(result => {\n                const type = instrumentation._determineHandlerType(result);\n                span.setAttributes({\n                  [AttributeNames.HONO_TYPE]: type,\n                  [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n                });\n                instrumentation.getConfig().responseHook?.(span);\n                return result;\n              });\n            } else {\n              const type = instrumentation._determineHandlerType(result);\n              span.setAttributes({\n                [AttributeNames.HONO_TYPE]: type,\n                [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n              });\n              instrumentation.getConfig().responseHook?.(span);\n              return result;\n            }\n          },\n          () => span.end(),\n          error => {\n            instrumentation._handleError(span, error);\n            span.end();\n          },\n        );\n      });\n    };\n  }\n\n  /**\n   * Safely executes a function and handles errors.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private _safeExecute(execute: () => any, onSuccess: () => void, onFailure: (error: unknown) => void): () => any {\n    try {\n      const result = execute();\n\n      if (isThenable(result)) {\n        result.then(\n          () => onSuccess(),\n          (error: unknown) => onFailure(error),\n        );\n      } else {\n        onSuccess();\n      }\n\n      return result;\n    } catch (error: unknown) {\n      onFailure(error);\n      throw error;\n    }\n  }\n\n  /**\n   * Determines the handler type based on the result.\n   * @param result\n   * @private\n   */\n  private _determineHandlerType(result: unknown): HonoTypes {\n    return result === undefined ? HonoTypes.MIDDLEWARE : HonoTypes.REQUEST_HANDLER;\n  }\n\n  /**\n   * Handles errors by setting the span status and recording the exception.\n   */\n  private _handleError(span: Span, error: unknown): void {\n    if (error instanceof Error) {\n      span.setStatus({\n        code: SpanStatusCode.ERROR,\n        message: error.message,\n      });\n      span.recordException(error);\n    }\n  }\n}\n","import { ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  httpRequestToRequestData,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build';\nimport { AttributeNames } from './constants';\nimport { HonoInstrumentation } from './instrumentation';\nimport type { Context, MiddlewareHandler, MiddlewareHandlerInterface, Next } from './types';\n\nconst INTEGRATION_NAME = 'Hono';\n\nfunction addHonoSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n  const type = attributes[AttributeNames.HONO_TYPE];\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hono',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hono`,\n  });\n\n  const name = attributes[AttributeNames.HONO_NAME];\n  if (typeof name === 'string') {\n    span.updateName(name);\n  }\n\n  if (getIsolationScope() === getDefaultIsolationScope()) {\n    DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n    return;\n  }\n\n  const route = attributes[ATTR_HTTP_ROUTE];\n  const method = attributes[ATTR_HTTP_REQUEST_METHOD];\n  if (typeof route === 'string' && typeof method === 'string') {\n    getIsolationScope().setTransactionName(`${method} ${route}`);\n  }\n}\n\nexport const instrumentHono = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new HonoInstrumentation({\n      responseHook: span => {\n        addHonoSpanAttributes(span);\n      },\n    }),\n);\n\nconst _honoIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentHono();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Hono](https://hono.dev/).\n *\n * If you also want to capture errors, you need to call `setupHonoErrorHandler(app)` after you set up your Hono server.\n *\n * For more information, see the [hono documentation](https://docs.sentry.io/platforms/javascript/guides/hono/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.honoIntegration()],\n * })\n * ```\n */\nexport const honoIntegration = defineIntegration(_honoIntegration);\n\ninterface HonoHandlerOptions {\n  /**\n   * Callback method deciding whether error should be captured and sent to Sentry\n   * @param error Captured Hono error\n   */\n  shouldHandleError: (context: Context) => boolean;\n}\n\nfunction honoRequestHandler(): MiddlewareHandler {\n  return async function sentryRequestMiddleware(context: Context, next: Next): Promise {\n    const normalizedRequest = httpRequestToRequestData(context.req);\n    getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n    await next();\n  };\n}\n\nfunction defaultShouldHandleError(context: Context): boolean {\n  const statusCode = context.res.status;\n  return statusCode >= 500;\n}\n\nfunction honoErrorHandler(options?: Partial): MiddlewareHandler {\n  return async function sentryErrorMiddleware(context: Context, next: Next): Promise {\n    await next();\n\n    const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n    if (shouldHandleError(context)) {\n      (context.res as { sentry?: string }).sentry = captureException(context.error, {\n        mechanism: {\n          type: 'auto.middleware.hono',\n          handled: false,\n        },\n      });\n    }\n  };\n}\n\n/**\n * Add a Hono error handler to capture errors to Sentry.\n *\n * @param app The Hono instances\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const { Hono } = require(\"hono\");\n *\n * const app = new Hono();\n *\n * Sentry.setupHonoErrorHandler(app);\n *\n * // Add your routes, etc.\n * ```\n */\nexport function setupHonoErrorHandler(\n  app: { use: MiddlewareHandlerInterface },\n  options?: Partial,\n): void {\n  app.use(honoRequestHandler());\n  app.use(honoErrorHandler(options));\n  ensureIsWrapped(app.use, 'hono');\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport enum KoaLayerType {\n  ROUTER = 'router',\n  MIDDLEWARE = 'middleware',\n}\n\n/**\n * Information about the current Koa middleware layer\n * The middleware layer type is any by default.\n * One can install koa types packages `@types/koa` and `@types/koa__router`\n * with compatible versions to the koa version used in the project\n * to get more specific types for the middleware layer property.\n *\n * Example use in a custom attribute function:\n * ```ts\n * import type { Middleware, ParameterizedContext, DefaultState } from 'koa';\n * import type { RouterParamContext } from '@koa/router';\n *\n * type KoaContext = ParameterizedContext;\n * type KoaMiddleware = Middleware;\n *\n * const koaConfig: KoaInstrumentationConfig = {\n *  requestHook: (span: Span, info: KoaRequestInfo) => {\n *   // custom typescript code that can access the typed into.middlewareLayer and info.context\n * }\n *\n */\nexport type KoaRequestInfo = {\n  context: KoaContextType;\n  middlewareLayer: KoaMiddlewareType;\n  layerType: KoaLayerType;\n};\n\n/**\n * Function that can be used to add custom attributes to the current span\n * @param span - The Express middleware layer span.\n * @param context - The current KoaContext.\n */\nexport interface KoaRequestCustomAttributeFunction<\n  KoaContextType = any,\n  KoaMiddlewareType = any,\n> {\n  (span: Span, info: KoaRequestInfo): void;\n}\n\n/**\n * Options available for the Koa Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-Instrumentation-koa#koa-Instrumentation-options))\n */\nexport interface KoaInstrumentationConfig<\n  KoaContextType = any,\n  KoaMiddlewareType = any,\n> extends InstrumentationConfig {\n  /** Ignore specific layers based on their type */\n  ignoreLayersType?: KoaLayerType[];\n  /** Function for adding custom attributes to each middleware layer span */\n  requestHook?: KoaRequestCustomAttributeFunction<\n    KoaContextType,\n    KoaMiddlewareType\n  >;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-koa';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n  KOA_TYPE = 'koa.type',\n  KOA_NAME = 'koa.name',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { KoaLayerType, KoaInstrumentationConfig } from './types';\nimport { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { Attributes } from '@opentelemetry/api';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\n\nexport const getMiddlewareMetadata = (\n  context: KoaContext,\n  layer: KoaMiddleware,\n  isRouter: boolean,\n  layerPath?: string | RegExp\n): {\n  attributes: Attributes;\n  name: string;\n} => {\n  if (isRouter) {\n    return {\n      attributes: {\n        [AttributeNames.KOA_NAME]: layerPath?.toString(),\n        [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n        [ATTR_HTTP_ROUTE]: layerPath?.toString(),\n      },\n      name: context._matchedRouteName || `router - ${layerPath}`,\n    };\n  } else {\n    return {\n      attributes: {\n        [AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n        [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n      },\n      name: `middleware - ${layer.name}`,\n    };\n  }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n *     occurred\n */\nexport const isLayerIgnored = (\n  type: KoaLayerType,\n  config?: KoaInstrumentationConfig\n): boolean => {\n  return !!(\n    Array.isArray(config?.ignoreLayersType) &&\n    config?.ignoreLayersType?.includes(type)\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport type { Middleware, ParameterizedContext, DefaultState } from 'koa';\nimport type * as Router from '@koa/router';\n\n/**\n * Type compatibility note:\n *\n * This package uses @types/koa@3.x, but @types/koa__router@12.x depends on\n * @types/koa@2.x. This creates type conflicts when working with router middleware.\n * At runtime, koa@3.x is used throughout, so all methods exist and work correctly.\n *\n * The type casts in instrumentation.ts are necessary to bridge this gap.\n *\n * TODO: Remove type casts when @types/koa__router@13+ with @types/koa@3.x support is available\n */\n\nexport type KoaContext = ParameterizedContext<\n  DefaultState,\n  Router.RouterParamContext\n>;\nexport type KoaMiddleware = Middleware & {\n  router?: Router;\n};\n\n/**\n * This symbol is used to mark a Koa layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexport const kLayerPatched: unique symbol = Symbol('koa-layer-patched');\n\nexport type KoaPatchedMiddleware = KoaMiddleware & {\n  [kLayerPatched]?: boolean;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  isWrapped,\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\n\nimport type * as koa from 'koa';\nimport { KoaLayerType, KoaInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { getMiddlewareMetadata, isLayerIgnored } from './utils';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n  kLayerPatched,\n  KoaContext,\n  KoaMiddleware,\n  KoaPatchedMiddleware,\n} from './internal-types';\n\n/** Koa instrumentation for OpenTelemetry */\nexport class KoaInstrumentation extends InstrumentationBase {\n  constructor(config: KoaInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  protected init() {\n    return new InstrumentationNodeModuleDefinition(\n      'koa',\n      ['>=2.0.0 <4'],\n      (module: any) => {\n        const moduleExports: typeof koa =\n          module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        if (moduleExports == null) {\n          return moduleExports;\n        }\n        if (isWrapped(moduleExports.prototype.use)) {\n          this._unwrap(moduleExports.prototype, 'use');\n        }\n        this._wrap(\n          moduleExports.prototype,\n          'use',\n          this._getKoaUsePatch.bind(this)\n        );\n        return module;\n      },\n      (module: any) => {\n        const moduleExports: typeof koa =\n          module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        if (isWrapped(moduleExports.prototype.use)) {\n          this._unwrap(moduleExports.prototype, 'use');\n        }\n      }\n    );\n  }\n\n  /**\n   * Patches the Koa.use function in order to instrument each original\n   * middleware layer which is introduced\n   * @param {KoaMiddleware} middleware - the original middleware function\n   */\n  private _getKoaUsePatch(original: (middleware: KoaMiddleware) => koa) {\n    const plugin = this;\n    return function use(this: koa, middlewareFunction: KoaMiddleware) {\n      let patchedFunction: KoaMiddleware;\n      if (middlewareFunction.router) {\n        patchedFunction = plugin._patchRouterDispatch(middlewareFunction);\n      } else {\n        patchedFunction = plugin._patchLayer(middlewareFunction, false);\n      }\n      return original.apply(this, [patchedFunction]);\n    };\n  }\n\n  /**\n   * Patches the dispatch function used by @koa/router. This function\n   * goes through each routed middleware and adds instrumentation via a call\n   * to the @function _patchLayer function.\n   * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches\n   * routed middleware\n   */\n  private _patchRouterDispatch(dispatchLayer: KoaMiddleware): KoaMiddleware {\n    api.diag.debug('Patching @koa/router dispatch');\n\n    const router = dispatchLayer.router;\n\n    const routesStack = router?.stack ?? [];\n    for (const pathLayer of routesStack) {\n      const path = pathLayer.path;\n      // Type cast needed: router.stack comes from @types/koa@2.x but we use @types/koa@3.x\n      // See internal-types.ts for full explanation\n      const pathStack = pathLayer.stack as any;\n      for (let j = 0; j < pathStack.length; j++) {\n        const routedMiddleware: KoaMiddleware = pathStack[j];\n        pathStack[j] = this._patchLayer(routedMiddleware, true, path);\n      }\n    }\n\n    return dispatchLayer;\n  }\n\n  /**\n   * Patches each individual @param middlewareLayer function in order to create the\n   * span and propagate context. It does not create spans when there is no parent span.\n   * @param {KoaMiddleware} middlewareLayer - the original middleware function.\n   * @param {boolean} isRouter - tracks whether the original middleware function\n   * was dispatched by the router originally\n   * @param {string?} layerPath - if present, provides additional data from the\n   * router about the routed path which the middleware is attached to\n   */\n  private _patchLayer(\n    middlewareLayer: KoaPatchedMiddleware,\n    isRouter: boolean,\n    layerPath?: string | RegExp\n  ): KoaMiddleware {\n    const layerType = isRouter ? KoaLayerType.ROUTER : KoaLayerType.MIDDLEWARE;\n    // Skip patching layer if its ignored in the config\n    if (\n      middlewareLayer[kLayerPatched] === true ||\n      isLayerIgnored(layerType, this.getConfig())\n    )\n      return middlewareLayer;\n\n    if (\n      middlewareLayer.constructor.name === 'GeneratorFunction' ||\n      middlewareLayer.constructor.name === 'AsyncGeneratorFunction'\n    ) {\n      api.diag.debug('ignoring generator-based Koa middleware layer');\n      return middlewareLayer;\n    }\n\n    middlewareLayer[kLayerPatched] = true;\n\n    api.diag.debug('patching Koa middleware layer');\n    return async (context: KoaContext, next: koa.Next) => {\n      const parent = api.trace.getSpan(api.context.active());\n      if (parent === undefined) {\n        return middlewareLayer(context, next);\n      }\n      const metadata = getMiddlewareMetadata(\n        context,\n        middlewareLayer,\n        isRouter,\n        layerPath\n      );\n      const span = this.tracer.startSpan(metadata.name, {\n        attributes: metadata.attributes,\n      });\n\n      const rpcMetadata = getRPCMetadata(api.context.active());\n\n      if (rpcMetadata?.type === RPCType.HTTP && context._matchedRoute) {\n        rpcMetadata.route = context._matchedRoute.toString();\n      }\n\n      const { requestHook } = this.getConfig();\n      if (requestHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            requestHook(span, {\n              context,\n              middlewareLayer,\n              layerType,\n            }),\n          e => {\n            if (e) {\n              api.diag.error('koa instrumentation: request hook failed', e);\n            }\n          },\n          true\n        );\n      }\n\n      const newContext = api.trace.setSpan(api.context.active(), span);\n      return api.context.with(newContext, async () => {\n        try {\n          return await middlewareLayer(context, next);\n        } catch (err: any) {\n          span.recordException(err);\n          throw err;\n        } finally {\n          span.end();\n        }\n      });\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { KoaInstrumentation } from './instrumentation';\nexport { AttributeNames } from './enums/AttributeNames';\nexport { KoaLayerType } from './types';\nexport type {\n  KoaInstrumentationConfig,\n  KoaRequestCustomAttributeFunction,\n  KoaRequestInfo,\n} from './types';\n","import type { KoaInstrumentationConfig, KoaLayerType } from '@opentelemetry/instrumentation-koa';\nimport { KoaInstrumentation } from '@opentelemetry/instrumentation-koa';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  captureException,\n  debug,\n  defineIntegration,\n  getDefaultIsolationScope,\n  getIsolationScope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  spanToJSON,\n} from '@sentry/core';\nimport { addOriginToSpan, ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\ninterface KoaOptions {\n  /**\n   * Ignore layers of specified types\n   */\n  ignoreLayersType?: Array<'middleware' | 'router'>;\n}\n\nconst INTEGRATION_NAME = 'Koa';\n\nexport const instrumentKoa = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  KoaInstrumentation,\n  (options: KoaOptions = {}) => {\n    return {\n      ignoreLayersType: options.ignoreLayersType as KoaLayerType[],\n      requestHook(span, info) {\n        addOriginToSpan(span, 'auto.http.otel.koa');\n\n        const attributes = spanToJSON(span).data;\n\n        // this is one of: middleware, router\n        const type = attributes['koa.type'];\n        if (type) {\n          span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.koa`);\n        }\n\n        // Also update the name\n        const name = attributes['koa.name'];\n        if (typeof name === 'string') {\n          // Somehow, name is sometimes `''` for middleware spans\n          // See: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2220\n          span.updateName(name || '< unknown >');\n        }\n\n        if (getIsolationScope() === getDefaultIsolationScope()) {\n          DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n          return;\n        }\n        const route = attributes[ATTR_HTTP_ROUTE];\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        const method = info.context?.request?.method?.toUpperCase() || 'GET';\n        if (route) {\n          getIsolationScope().setTransactionName(`${method} ${route}`);\n        }\n      },\n    } satisfies KoaInstrumentationConfig;\n  },\n);\n\nconst _koaIntegration = ((options: KoaOptions = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentKoa(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Koa](https://koajs.com/).\n *\n * If you also want to capture errors, you need to call `setupKoaErrorHandler(app)` after you set up your Koa server.\n *\n * For more information, see the [koa documentation](https://docs.sentry.io/platforms/javascript/guides/koa/).\n *\n * @param {KoaOptions} options Configuration options for the Koa integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.koaIntegration()],\n * })\n * ```\n *\n * @example\n * ```javascript\n * // To ignore middleware spans\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [\n *     Sentry.koaIntegration({\n *       ignoreLayersType: ['middleware']\n *     })\n *   ],\n * })\n * ```\n */\nexport const koaIntegration = defineIntegration(_koaIntegration);\n\n/**\n * Add an Koa error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Koa = require(\"koa\");\n *\n * const app = new Koa();\n *\n * Sentry.setupKoaErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen(3000);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const setupKoaErrorHandler = (app: { use: (arg0: (ctx: any, next: any) => Promise) => void }): void => {\n  app.use(async (ctx, next) => {\n    try {\n      await next();\n    } catch (error) {\n      captureException(error, {\n        mechanism: {\n          handled: false,\n          type: 'auto.middleware.koa',\n        },\n      });\n      throw error;\n    }\n  });\n\n  ensureIsWrapped(app.use, 'koa');\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum AttributeNames {\n  CONNECT_TYPE = 'connect.type',\n  CONNECT_NAME = 'connect.name',\n}\n\nexport enum ConnectTypes {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request_handler',\n}\n\nexport enum ConnectNames {\n  MIDDLEWARE = 'middleware',\n  REQUEST_HANDLER = 'request handler',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-connect';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { HandleFunction, IncomingMessage, Server } from 'connect';\n\nexport const _LAYERS_STORE_PROPERTY: unique symbol = Symbol(\n  'opentelemetry.instrumentation-connect.request-route-stack'\n);\n\nexport type UseArgs1 = [HandleFunction];\nexport type UseArgs2 = [string, HandleFunction];\nexport type UseArgs = UseArgs1 | UseArgs2;\nexport type Use = (...args: UseArgs) => Server;\nexport type PatchedRequest = {\n  [_LAYERS_STORE_PROPERTY]: string[];\n} & IncomingMessage;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { diag } from '@opentelemetry/api';\nimport { _LAYERS_STORE_PROPERTY, PatchedRequest } from './internal-types';\n\nexport const addNewStackLayer = (request: PatchedRequest) => {\n  if (Array.isArray(request[_LAYERS_STORE_PROPERTY]) === false) {\n    Object.defineProperty(request, _LAYERS_STORE_PROPERTY, {\n      enumerable: false,\n      value: [],\n    });\n  }\n  request[_LAYERS_STORE_PROPERTY].push('/');\n\n  const stackLength = request[_LAYERS_STORE_PROPERTY].length;\n\n  return () => {\n    if (stackLength === request[_LAYERS_STORE_PROPERTY].length) {\n      request[_LAYERS_STORE_PROPERTY].pop();\n    } else {\n      diag.warn('Connect: Trying to pop the stack multiple time');\n    }\n  };\n};\n\nexport const replaceCurrentStackRoute = (\n  request: PatchedRequest,\n  newRoute?: string\n) => {\n  if (newRoute) {\n    request[_LAYERS_STORE_PROPERTY].splice(-1, 1, newRoute);\n  }\n};\n\n// generate route from existing stack on request object.\n// splash between stack layer will be deduped\n// [\"/first/\", \"/second\", \"/third/\"] => /first/second/third/\nexport const generateRoute = (request: PatchedRequest) => {\n  return request[_LAYERS_STORE_PROPERTY].reduce(\n    (acc, sub) => acc.replace(/\\/+$/, '') + sub\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { context, Span, SpanOptions } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport type { HandleFunction, NextFunction, Server } from 'connect';\nimport type { ServerResponse } from 'http';\nimport {\n  AttributeNames,\n  ConnectNames,\n  ConnectTypes,\n} from './enums/AttributeNames';\nimport { PatchedRequest, Use, UseArgs, UseArgs2 } from './internal-types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport {\n  replaceCurrentStackRoute,\n  addNewStackLayer,\n  generateRoute,\n} from './utils';\n\nexport const ANONYMOUS_NAME = 'anonymous';\n\n/** Connect instrumentation for OpenTelemetry */\nexport class ConnectInstrumentation extends InstrumentationBase {\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        'connect',\n        ['>=3.0.0 <4'],\n        moduleExports => {\n          return this._patchConstructor(moduleExports);\n        }\n      ),\n    ];\n  }\n\n  private _patchApp(patchedApp: Server) {\n    if (!isWrapped(patchedApp.use)) {\n      this._wrap(patchedApp, 'use', this._patchUse.bind(this));\n    }\n    if (!isWrapped(patchedApp.handle)) {\n      this._wrap(patchedApp, 'handle', this._patchHandle.bind(this));\n    }\n  }\n\n  private _patchConstructor(original: () => Server): () => Server {\n    const instrumentation = this;\n    return function (this: Server, ...args) {\n      const app = original.apply(this, args) as Server;\n      instrumentation._patchApp(app);\n      return app;\n    };\n  }\n\n  public _patchNext(next: NextFunction, finishSpan: () => void): NextFunction {\n    return function nextFunction(this: NextFunction, err?: any): void {\n      const result = next.apply(this, [err]);\n      finishSpan();\n      return result;\n    };\n  }\n\n  public _startSpan(routeName: string, middleWare: HandleFunction): Span {\n    let connectType: ConnectTypes;\n    let connectName: string;\n    let connectTypeName: string;\n    if (routeName) {\n      connectType = ConnectTypes.REQUEST_HANDLER;\n      connectTypeName = ConnectNames.REQUEST_HANDLER;\n      connectName = routeName;\n    } else {\n      connectType = ConnectTypes.MIDDLEWARE;\n      connectTypeName = ConnectNames.MIDDLEWARE;\n      connectName = middleWare.name || ANONYMOUS_NAME;\n    }\n    const spanName = `${connectTypeName} - ${connectName}`;\n    const options: SpanOptions = {\n      attributes: {\n        [ATTR_HTTP_ROUTE]: routeName.length > 0 ? routeName : '/',\n        [AttributeNames.CONNECT_TYPE]: connectType,\n        [AttributeNames.CONNECT_NAME]: connectName,\n      },\n    };\n\n    return this.tracer.startSpan(spanName, options);\n  }\n\n  public _patchMiddleware(\n    routeName: string,\n    middleWare: HandleFunction\n  ): HandleFunction {\n    const instrumentation = this;\n    const isErrorMiddleware = middleWare.length === 4;\n\n    function patchedMiddleware(this: Use): void {\n      if (!instrumentation.isEnabled()) {\n        return (middleWare as any).apply(this, arguments);\n      }\n      const [reqArgIdx, resArgIdx, nextArgIdx] = isErrorMiddleware\n        ? [1, 2, 3]\n        : [0, 1, 2];\n      const req = arguments[reqArgIdx] as PatchedRequest;\n      const res = arguments[resArgIdx] as ServerResponse;\n      const next = arguments[nextArgIdx] as NextFunction;\n\n      replaceCurrentStackRoute(req, routeName);\n\n      const rpcMetadata = getRPCMetadata(context.active());\n      if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n        rpcMetadata.route = generateRoute(req);\n      }\n\n      let spanName = '';\n      if (routeName) {\n        spanName = `request handler - ${routeName}`;\n      } else {\n        spanName = `middleware - ${middleWare.name || ANONYMOUS_NAME}`;\n      }\n      const span = instrumentation._startSpan(routeName, middleWare);\n      instrumentation._diag.debug('start span', spanName);\n      let spanFinished = false;\n\n      function finishSpan() {\n        if (!spanFinished) {\n          spanFinished = true;\n          instrumentation._diag.debug(`finishing span ${(span as any).name}`);\n          span.end();\n        } else {\n          instrumentation._diag.debug(\n            `span ${(span as any).name} - already finished`\n          );\n        }\n        res.removeListener('close', finishSpan);\n      }\n\n      res.addListener('close', finishSpan);\n      arguments[nextArgIdx] = instrumentation._patchNext(next, finishSpan);\n\n      return (middleWare as any).apply(this, arguments);\n    }\n\n    Object.defineProperty(patchedMiddleware, 'length', {\n      value: middleWare.length,\n      writable: false,\n      configurable: true,\n    });\n\n    return patchedMiddleware;\n  }\n\n  public _patchUse(original: Server['use']): Use {\n    const instrumentation = this;\n    return function (this: Server, ...args: UseArgs): Server {\n      const middleWare = args[args.length - 1] as HandleFunction;\n      const routeName = (args[args.length - 2] || '') as string;\n\n      args[args.length - 1] = instrumentation._patchMiddleware(\n        routeName,\n        middleWare\n      );\n\n      return original.apply(this, args as UseArgs2);\n    };\n  }\n\n  public _patchHandle(original: Server['handle']): Server['handle'] {\n    const instrumentation = this;\n    return function (this: Server): ReturnType {\n      const [reqIdx, outIdx] = [0, 2];\n      const req = arguments[reqIdx] as PatchedRequest;\n      const out = arguments[outIdx];\n      const completeStack = addNewStackLayer(req);\n\n      if (typeof out === 'function') {\n        arguments[outIdx] = instrumentation._patchOut(\n          out as NextFunction,\n          completeStack\n        );\n      }\n\n      return (original as any).apply(this, arguments);\n    };\n  }\n\n  public _patchOut(out: NextFunction, completeStack: () => void): NextFunction {\n    return function nextFunction(this: NextFunction, ...args: any[]): void {\n      completeStack();\n      return Reflect.apply(out, this, args);\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { ConnectInstrumentation, ANONYMOUS_NAME } from './instrumentation';\nexport {\n  AttributeNames,\n  ConnectNames,\n  ConnectTypes,\n} from './enums/AttributeNames';\n","import { ConnectInstrumentation } from '@opentelemetry/instrumentation-connect';\nimport type { IntegrationFn, Span } from '@sentry/core';\nimport {\n  captureException,\n  defineIntegration,\n  getClient,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\n\ntype ConnectApp = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  use: (middleware: any) => void;\n};\n\nconst INTEGRATION_NAME = 'Connect';\n\nexport const instrumentConnect = generateInstrumentOnce(INTEGRATION_NAME, () => new ConnectInstrumentation());\n\nconst _connectIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentConnect();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Connect](https://github.com/senchalabs/connect/).\n *\n * If you also want to capture errors, you need to call `setupConnectErrorHandler(app)` after you initialize your connect app.\n *\n * For more information, see the [connect documentation](https://docs.sentry.io/platforms/javascript/guides/connect/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *   integrations: [Sentry.connectIntegration()],\n * })\n * ```\n */\nexport const connectIntegration = defineIntegration(_connectIntegration);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction connectErrorMiddleware(err: any, req: any, res: any, next: any): void {\n  captureException(err, {\n    mechanism: {\n      handled: false,\n      type: 'auto.middleware.connect',\n    },\n  });\n  next(err);\n}\n\n/**\n * Add a Connect middleware to capture errors to Sentry.\n *\n * @param app The Connect app to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const connect = require(\"connect\");\n *\n * const app = connect();\n *\n * Sentry.setupConnectErrorHandler(app);\n *\n * // Add you connect routes here\n *\n * app.listen(3000);\n * ```\n */\nexport const setupConnectErrorHandler = (app: ConnectApp): void => {\n  app.use(connectErrorMiddleware);\n\n  // Sadly, ConnectInstrumentation has no requestHook, so we need to add the attributes here\n  // We register this hook in this method, because if we register it in the integration `setup`,\n  // it would always run even for users that are not even using connect\n  const client = getClient();\n  if (client) {\n    client.on('spanStart', span => {\n      addConnectSpanAttributes(span);\n    });\n  }\n\n  ensureIsWrapped(app.use, 'connect');\n};\n\nfunction addConnectSpanAttributes(span: Span): void {\n  const attributes = spanToJSON(span).data;\n\n  // this is one of: middleware, request_handler\n  const type = attributes['connect.type'];\n\n  // If this is already set, or we have no connect span, no need to process again...\n  if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n    return;\n  }\n\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.connect',\n    [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.connect`,\n  });\n\n  // Also update the name, we don't need the \"middleware - \" prefix\n  const name = attributes['connect.name'];\n  if (typeof name === 'string') {\n    span.updateName(name);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.58.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-knex';\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport const MODULE_NAME = 'knex';\nexport const SUPPORTED_VERSIONS = [\n  // use \"lib/execution\" for runner.js, \"lib\" for client.js as basepath, latest tested 0.95.6\n  '>=0.22.0 <4',\n  // use \"lib\" as basepath\n  '>=0.10.0 <0.18.0',\n  '>=0.19.0 <0.22.0',\n  // use \"src\" as basepath\n  '>=0.18.0 <0.19.0',\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexport const ATTR_DB_OPERATION = 'db.operation' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.transport`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.transport`.\n */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"sqlite\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [SQLite](https://www.sqlite.org/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_NAME_VALUE_SQLITE = 'sqlite' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Exception } from '@opentelemetry/api';\nimport { DB_SYSTEM_NAME_VALUE_POSTGRESQL } from '@opentelemetry/semantic-conventions';\nimport { DB_SYSTEM_NAME_VALUE_SQLITE } from './semconv';\n\ntype KnexError = Error & {\n  code?: string;\n};\n\nexport const getFormatter = (runner: any) => {\n  if (runner) {\n    if (runner.client) {\n      if (runner.client._formatQuery) {\n        return runner.client._formatQuery.bind(runner.client);\n      } else if (runner.client.SqlString) {\n        return runner.client.SqlString.format.bind(runner.client.SqlString);\n      }\n    }\n    if (runner.builder) {\n      return runner.builder.toString.bind(runner.builder);\n    }\n  }\n  return () => '';\n};\n\nexport function otelExceptionFromKnexError(\n  err: KnexError,\n  message: string\n): Exception {\n  if (!(err && err instanceof Error)) {\n    return err;\n  }\n\n  return {\n    message,\n    code: err.code,\n    stack: err.stack,\n    name: err.name,\n  };\n}\n\nconst systemMap = new Map([\n  ['sqlite3', DB_SYSTEM_NAME_VALUE_SQLITE],\n  ['pg', DB_SYSTEM_NAME_VALUE_POSTGRESQL],\n]);\n\nexport const mapSystem = (knexSystem: string) => {\n  return systemMap.get(knexSystem) || knexSystem;\n};\n\nexport const getName = (db: string, operation?: string, table?: string) => {\n  if (operation) {\n    if (table) {\n      return `${operation} ${db}.${table}`;\n    }\n    return `${operation} ${db}`;\n  }\n  return db;\n};\n\nexport const limitLength = (str: string, maxLength: number) => {\n  if (\n    typeof str === 'string' &&\n    typeof maxLength === 'number' &&\n    0 < maxLength &&\n    maxLength < str.length\n  ) {\n    return str.substring(0, maxLength) + '..';\n  }\n  return str;\n};\n\n/**\n * Helpers to extract connection details from a Knex connectionString.\n * When Knex is configured via `connection.connectionString` instead of\n * explicit fields like `host`, `port`, and `database`, these values are\n * embedded in the URL and must be parsed out.\n * e.g. \"postgres://user:pass@localhost:5432/mydb\"\n */\n\nexport const extractDatabaseFromConnectionString = (\n  connectionString?: string\n): string | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    const db = new URL(connectionString).pathname?.replace(/^\\//, '');\n    return db || undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractHostFromConnectionString = (\n  connectionString?: string\n): string | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    return new URL(connectionString).hostname || undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractPortFromConnectionString = (\n  connectionString?: string\n): number | undefined => {\n  if (!connectionString) return undefined;\n  try {\n    const port = new URL(connectionString).port;\n    return port ? parseInt(port, 10) : undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nexport const extractTableName = (builder: any): string => {\n  const table = builder?._single?.table;\n  if (typeof table === 'object') {\n    return extractTableName(table);\n  }\n  return table;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport * as constants from './constants';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport * as utils from './utils';\nimport { KnexInstrumentationConfig } from './types';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_DB_NAME,\n  ATTR_DB_OPERATION,\n  ATTR_DB_SQL_TABLE,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n  ATTR_NET_TRANSPORT,\n} from './semconv';\n\nconst contextSymbol = Symbol('opentelemetry.instrumentation-knex.context');\nconst DEFAULT_CONFIG: KnexInstrumentationConfig = {\n  maxQueryLength: 1022,\n  requireParentSpan: false,\n};\n\nexport class KnexInstrumentation extends InstrumentationBase {\n  private _semconvStability: SemconvStability;\n\n  constructor(config: KnexInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n\n    this._semconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: KnexInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  init() {\n    const module = new InstrumentationNodeModuleDefinition(\n      constants.MODULE_NAME,\n      constants.SUPPORTED_VERSIONS\n    );\n\n    module.files.push(\n      this.getClientNodeModuleFileInstrumentation('src'),\n      this.getClientNodeModuleFileInstrumentation('lib'),\n      this.getRunnerNodeModuleFileInstrumentation('src'),\n      this.getRunnerNodeModuleFileInstrumentation('lib'),\n      this.getRunnerNodeModuleFileInstrumentation('lib/execution')\n    );\n\n    return module;\n  }\n\n  private getRunnerNodeModuleFileInstrumentation(basePath: string) {\n    return new InstrumentationNodeModuleFile(\n      `knex/${basePath}/runner.js`,\n      constants.SUPPORTED_VERSIONS,\n      (Runner: any, moduleVersion) => {\n        this.ensureWrapped(\n          Runner.prototype,\n          'query',\n          this.createQueryWrapper(moduleVersion)\n        );\n        return Runner;\n      },\n      (Runner: any, moduleVersion) => {\n        this._unwrap(Runner.prototype, 'query');\n        return Runner;\n      }\n    );\n  }\n\n  private getClientNodeModuleFileInstrumentation(basePath: string) {\n    return new InstrumentationNodeModuleFile(\n      `knex/${basePath}/client.js`,\n      constants.SUPPORTED_VERSIONS,\n      (Client: any) => {\n        this.ensureWrapped(\n          Client.prototype,\n          'queryBuilder',\n          this.storeContext.bind(this)\n        );\n        this.ensureWrapped(\n          Client.prototype,\n          'schemaBuilder',\n          this.storeContext.bind(this)\n        );\n        this.ensureWrapped(\n          Client.prototype,\n          'raw',\n          this.storeContext.bind(this)\n        );\n        return Client;\n      },\n      (Client: any) => {\n        this._unwrap(Client.prototype, 'queryBuilder');\n        this._unwrap(Client.prototype, 'schemaBuilder');\n        this._unwrap(Client.prototype, 'raw');\n        return Client;\n      }\n    );\n  }\n\n  private createQueryWrapper(moduleVersion?: string) {\n    const instrumentation = this;\n\n    return function wrapQuery(original: (...args: any[]) => any) {\n      return function wrapped_logging_method(this: any, query: any) {\n        const config = this.client.config;\n\n        const table = utils.extractTableName(this.builder);\n        // `method` actually refers to the knex API method - Not exactly \"operation\"\n        // in the spec sense, but matches most of the time.\n        const operation = query?.method;\n        // Knex can be configured with a connectionString instead of explicit fields.\n        // Fall back to parsing the connectionString if filename and database are not set.\n        const connectionString = config?.connection?.connectionString;\n        const name =\n          config?.connection?.filename ||\n          config?.connection?.database ||\n          utils.extractDatabaseFromConnectionString(connectionString);\n        const { maxQueryLength } = instrumentation.getConfig();\n\n        const attributes: api.Attributes = {\n          'knex.version': moduleVersion,\n        };\n        const transport =\n          config?.connection?.filename === ':memory:' ? 'inproc' : undefined;\n\n        if (instrumentation._semconvStability & SemconvStability.OLD) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM]: utils.mapSystem(this.client.driverName),\n            [ATTR_DB_SQL_TABLE]: table,\n            [ATTR_DB_OPERATION]: operation,\n            [ATTR_DB_USER]: config?.connection?.user,\n            [ATTR_DB_NAME]: name,\n            // Fall back to parsing host and port from connectionString if not explicitly set.\n            [ATTR_NET_PEER_NAME]:\n              config?.connection?.host ??\n              utils.extractHostFromConnectionString(connectionString),\n            [ATTR_NET_PEER_PORT]:\n              config?.connection?.port ??\n              utils.extractPortFromConnectionString(connectionString),\n            [ATTR_NET_TRANSPORT]: transport,\n          });\n        }\n        if (instrumentation._semconvStability & SemconvStability.STABLE) {\n          Object.assign(attributes, {\n            [ATTR_DB_SYSTEM_NAME]: utils.mapSystem(this.client.driverName),\n            [ATTR_DB_COLLECTION_NAME]: table,\n            [ATTR_DB_OPERATION_NAME]: operation,\n            [ATTR_DB_NAMESPACE]: name,\n            // Fall back to parsing host and port from connectionString if not explicitly set.\n            [ATTR_SERVER_ADDRESS]:\n              config?.connection?.host ??\n              utils.extractHostFromConnectionString(connectionString),\n            [ATTR_SERVER_PORT]:\n              config?.connection?.port ??\n              utils.extractPortFromConnectionString(connectionString),\n          });\n        }\n        if (maxQueryLength) {\n          // filters both undefined and 0\n          const queryText = utils.limitLength(query?.sql, maxQueryLength);\n          if (instrumentation._semconvStability & SemconvStability.STABLE) {\n            attributes[ATTR_DB_QUERY_TEXT] = queryText;\n          }\n          if (instrumentation._semconvStability & SemconvStability.OLD) {\n            attributes[ATTR_DB_STATEMENT] = queryText;\n          }\n        }\n\n        const parentContext =\n          this.builder[contextSymbol] || api.context.active();\n        const parentSpan = api.trace.getSpan(parentContext);\n        const hasActiveParent =\n          parentSpan && api.trace.isSpanContextValid(parentSpan.spanContext());\n        if (instrumentation._config.requireParentSpan && !hasActiveParent) {\n          return original.bind(this)(...arguments);\n        }\n\n        const span = instrumentation.tracer.startSpan(\n          utils.getName(name, operation, table),\n          {\n            kind: api.SpanKind.CLIENT,\n            attributes,\n          },\n          parentContext\n        );\n        const spanContext = api.trace.setSpan(api.context.active(), span);\n\n        return api.context\n          .with(spanContext, original, this, ...arguments)\n          .then((result: unknown) => {\n            span.end();\n            return result;\n          })\n          .catch((err: any) => {\n            // knex adds full query with all the binding values to the message,\n            // we want to undo that without changing the original error\n            const formatter = utils.getFormatter(this);\n            const fullQuery = formatter(query.sql, query.bindings || []);\n            const message = err.message.replace(fullQuery + ' - ', '');\n            const exc = utils.otelExceptionFromKnexError(err, message);\n            span.recordException(exc);\n            span.setStatus({ code: api.SpanStatusCode.ERROR, message });\n            span.end();\n            throw err;\n          });\n      };\n    };\n  }\n\n  private storeContext(original: Function) {\n    return function wrapped_logging_method(this: any) {\n      const builder = original.apply(this, arguments);\n      // Builder is a custom promise type and when awaited it fails to propagate context.\n      // We store the parent context at the moment of initiating the builder\n      // otherwise we'd have nothing to attach the span as a child for in `query`.\n      Object.defineProperty(builder, contextSymbol, {\n        value: api.context.active(),\n      });\n      return builder;\n    };\n  }\n\n  ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any) {\n    if (isWrapped(obj[methodName])) {\n      this._unwrap(obj, methodName);\n    }\n    this._wrap(obj, methodName, wrapper);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { KnexInstrumentation } from './instrumentation';\nexport type { KnexInstrumentationConfig } from './types';\n","import { KnexInstrumentation } from '@opentelemetry/instrumentation-knex';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Knex';\n\nexport const instrumentKnex = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () => new KnexInstrumentation({ requireParentSpan: true }),\n);\n\nconst _knexIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentKnex();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const { data } = spanToJSON(span);\n          // knex.version is always set in the span data\n          // https://github.com/open-telemetry/opentelemetry-js-contrib/blob/0309caeafc44ac9cb13a3345b790b01b76d0497d/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts#L138\n          if ('knex.version' in data) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.knex');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Knex integration\n *\n * Capture tracing data for [Knex](https://knexjs.org/).\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *  integrations: [Sentry.knexIntegration()],\n * });\n * ```\n */\nexport const knexIntegration = defineIntegration(_knexIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexport const ATTR_DB_SQL_TABLE = 'db.sql.table' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"mssql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft SQL Server\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MSSQL = 'mssql' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns Operation executed on Tedious Connection. Does not map to SQL statement in any way.\n */\nexport function getSpanName(\n  operation: string,\n  db: string | undefined,\n  sql: string | undefined,\n  bulkLoadTable: string | undefined\n): string {\n  if (operation === 'execBulkLoad' && bulkLoadTable && db) {\n    return `${operation} ${bulkLoadTable} ${db}`;\n  }\n  if (operation === 'callProcedure') {\n    // `sql` refers to procedure name with `callProcedure`\n    if (db) {\n      return `${operation} ${sql} ${db}`;\n    }\n    return `${operation} ${sql}`;\n  }\n  // do not use `sql` in general case because of high-cardinality\n  if (db) {\n    return `${operation} ${db}`;\n  }\n  return `${operation}`;\n}\n\nexport const once = (fn: Function) => {\n  let called = false;\n  return (...args: unknown[]) => {\n    if (called) return;\n    called = true;\n    return fn(...args);\n  };\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-tedious';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_QUERY_TEXT,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  DB_SYSTEM_VALUE_MSSQL,\n  ATTR_DB_NAME,\n  ATTR_DB_SQL_TABLE,\n  ATTR_DB_STATEMENT,\n  ATTR_DB_SYSTEM,\n  ATTR_DB_USER,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport type * as tedious from 'tedious';\nimport { TediousInstrumentationConfig } from './types';\nimport { getSpanName, once } from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst CURRENT_DATABASE = Symbol(\n  'opentelemetry.instrumentation-tedious.current-database'\n);\n\nexport const INJECTED_CTX = Symbol(\n  'opentelemetry.instrumentation-tedious.context-info-injected'\n);\n\nconst PATCHED_METHODS = [\n  'callProcedure',\n  'execSql',\n  'execSqlBatch',\n  'execBulkLoad',\n  'prepare',\n  'execute',\n];\n\ntype UnknownFunction = (...args: any[]) => any;\ntype ApproxConnection = EventEmitter & {\n  [CURRENT_DATABASE]: string;\n  config: any;\n};\ntype ApproxRequest = EventEmitter & {\n  sqlTextOrProcedure: string | undefined;\n  callback: any;\n  table: string | undefined;\n  parametersByName: any;\n};\n\nfunction setDatabase(this: ApproxConnection, databaseName: string) {\n  Object.defineProperty(this, CURRENT_DATABASE, {\n    value: databaseName,\n    writable: true,\n  });\n}\n\nexport class TediousInstrumentation extends InstrumentationBase {\n  static readonly COMPONENT = 'tedious';\n  private _netSemconvStability!: SemconvStability;\n  private _dbSemconvStability!: SemconvStability;\n\n  constructor(config: TediousInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n    this._dbSemconvStability = semconvStabilityFromStr(\n      'database',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        TediousInstrumentation.COMPONENT,\n        ['>=1.11.0 <20'],\n        (moduleExports: typeof tedious) => {\n          const ConnectionPrototype: any = moduleExports.Connection.prototype;\n          for (const method of PATCHED_METHODS) {\n            if (isWrapped(ConnectionPrototype[method])) {\n              this._unwrap(ConnectionPrototype, method);\n            }\n            this._wrap(\n              ConnectionPrototype,\n              method,\n              this._patchQuery(method, moduleExports) as any\n            );\n          }\n\n          if (isWrapped(ConnectionPrototype.connect)) {\n            this._unwrap(ConnectionPrototype, 'connect');\n          }\n          this._wrap(ConnectionPrototype, 'connect', this._patchConnect);\n\n          return moduleExports;\n        },\n        (moduleExports: typeof tedious) => {\n          if (moduleExports === undefined) return;\n          const ConnectionPrototype: any = moduleExports.Connection.prototype;\n          for (const method of PATCHED_METHODS) {\n            this._unwrap(ConnectionPrototype, method);\n          }\n          this._unwrap(ConnectionPrototype, 'connect');\n        }\n      ),\n    ];\n  }\n\n  private _patchConnect(original: UnknownFunction): UnknownFunction {\n    return function patchedConnect(this: ApproxConnection) {\n      setDatabase.call(this, this.config?.options?.database);\n\n      // remove the listener first in case it's already added\n      this.removeListener('databaseChange', setDatabase);\n      this.on('databaseChange', setDatabase);\n\n      this.once('end', () => {\n        this.removeListener('databaseChange', setDatabase);\n      });\n      return original.apply(this, arguments as unknown as any[]);\n    };\n  }\n\n  private _buildTraceparent(span: api.Span): string {\n    const sc = span.spanContext();\n    return `00-${sc.traceId}-${sc.spanId}-0${Number(sc.traceFlags || api.TraceFlags.NONE).toString(16)}`;\n  }\n\n  /**\n   * Fire a one-off `SET CONTEXT_INFO @opentelemetry_traceparent` on the same\n   * connection. Marks the request with INJECTED_CTX so our patch skips it.\n   */\n  private _injectContextInfo(\n    connection: any,\n    tediousModule: typeof tedious,\n    traceparent: string\n  ): Promise {\n    return new Promise(resolve => {\n      try {\n        const sql = 'set context_info @opentelemetry_traceparent';\n        const req = new tediousModule.Request(sql, (_err: any) => {\n          resolve();\n        });\n        Object.defineProperty(req, INJECTED_CTX, { value: true });\n        const buf = Buffer.from(traceparent, 'utf8');\n        req.addParameter(\n          'opentelemetry_traceparent',\n          (tediousModule as any).TYPES.VarBinary,\n          buf,\n          { length: buf.length }\n        );\n\n        connection.execSql(req);\n      } catch {\n        resolve();\n      }\n    });\n  }\n\n  private _shouldInjectFor(operation: string): boolean {\n    return (\n      operation === 'execSql' ||\n      operation === 'execSqlBatch' ||\n      operation === 'callProcedure' ||\n      operation === 'execute'\n    );\n  }\n\n  private _patchQuery(operation: string, tediousModule: typeof tedious) {\n    return (originalMethod: UnknownFunction): UnknownFunction => {\n      const thisPlugin = this;\n\n      function patchedMethod(this: ApproxConnection, request: ApproxRequest) {\n        // Skip our own injected request\n        if ((request as any)?.[INJECTED_CTX]) {\n          return originalMethod.apply(this, arguments as unknown as any[]);\n        }\n\n        if (!(request instanceof EventEmitter)) {\n          thisPlugin._diag.warn(\n            `Unexpected invocation of patched ${operation} method. Span not recorded`\n          );\n          return originalMethod.apply(this, arguments as unknown as any[]);\n        }\n        let procCount = 0;\n        let statementCount = 0;\n        const incrementStatementCount = () => statementCount++;\n        const incrementProcCount = () => procCount++;\n        const databaseName = this[CURRENT_DATABASE];\n        const sql = (request => {\n          // Required for <11.0.9\n          if (\n            request.sqlTextOrProcedure === 'sp_prepare' &&\n            request.parametersByName?.stmt?.value\n          ) {\n            return request.parametersByName.stmt.value;\n          }\n          return request.sqlTextOrProcedure;\n        })(request);\n\n        const attributes: api.Attributes = {};\n        if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MSSQL;\n          attributes[ATTR_DB_NAME] = databaseName;\n          // >=4 uses `authentication` object; older versions just userName and password pair\n          attributes[ATTR_DB_USER] =\n            this.config?.userName ??\n            this.config?.authentication?.options?.userName;\n          attributes[ATTR_DB_STATEMENT] = sql;\n          attributes[ATTR_DB_SQL_TABLE] = request.table;\n        }\n        if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n          // The OTel spec for \"db.namespace\" discusses handling for connection\n          // to MSSQL \"named instances\". This isn't currently supported.\n          //    https://opentelemetry.io/docs/specs/semconv/database/sql-server/#:~:text=%5B1%5D%20db%2Enamespace\n          attributes[ATTR_DB_NAMESPACE] = databaseName;\n          attributes[ATTR_DB_SYSTEM_NAME] =\n            DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER;\n          attributes[ATTR_DB_QUERY_TEXT] = sql;\n          attributes[ATTR_DB_COLLECTION_NAME] = request.table;\n          // See https://opentelemetry.io/docs/specs/semconv/database/sql-server/#spans\n          // TODO(3290): can `db.response.status_code` be added?\n          // TODO(3290): is `operation` correct for `db.operation.name`\n          // TODO(3290): can `db.query.summary` reliably be calculated?\n          // TODO(3290): `db.stored_procedure.name`\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.OLD) {\n          attributes[ATTR_NET_PEER_NAME] = this.config?.server;\n          attributes[ATTR_NET_PEER_PORT] = this.config?.options?.port;\n        }\n        if (thisPlugin._netSemconvStability & SemconvStability.STABLE) {\n          attributes[ATTR_SERVER_ADDRESS] = this.config?.server;\n          attributes[ATTR_SERVER_PORT] = this.config?.options?.port;\n        }\n        const span = thisPlugin.tracer.startSpan(\n          getSpanName(operation, databaseName, sql, request.table),\n          {\n            kind: api.SpanKind.CLIENT,\n            attributes,\n          }\n        );\n\n        const endSpan = once((err?: any) => {\n          request.removeListener('done', incrementStatementCount);\n          request.removeListener('doneInProc', incrementStatementCount);\n          request.removeListener('doneProc', incrementProcCount);\n          request.removeListener('error', endSpan);\n          this.removeListener('end', endSpan);\n\n          span.setAttribute('tedious.procedure_count', procCount);\n          span.setAttribute('tedious.statement_count', statementCount);\n          if (err) {\n            span.setStatus({\n              code: api.SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            // TODO(3290): set `error.type` attribute?\n          }\n          span.end();\n        });\n\n        request.on('done', incrementStatementCount);\n        request.on('doneInProc', incrementStatementCount);\n        request.on('doneProc', incrementProcCount);\n        request.once('error', endSpan);\n        this.on('end', endSpan);\n\n        if (typeof request.callback === 'function') {\n          thisPlugin._wrap(\n            request,\n            'callback',\n            thisPlugin._patchCallbackQuery(endSpan)\n          );\n        } else {\n          thisPlugin._diag.error('Expected request.callback to be a function');\n        }\n\n        const runUserRequest = () => {\n          return api.context.with(\n            api.trace.setSpan(api.context.active(), span),\n            originalMethod,\n            this,\n            ...arguments\n          );\n        };\n\n        const cfg = thisPlugin.getConfig();\n        const shouldInject =\n          cfg.enableTraceContextPropagation &&\n          thisPlugin._shouldInjectFor(operation);\n\n        if (!shouldInject) return runUserRequest();\n\n        const traceparent = thisPlugin._buildTraceparent(span);\n\n        void thisPlugin\n          ._injectContextInfo(this, tediousModule, traceparent)\n          .finally(runUserRequest);\n      }\n\n      Object.defineProperty(patchedMethod, 'length', {\n        value: originalMethod.length,\n        writable: false,\n      });\n\n      return patchedMethod;\n    };\n  }\n\n  private _patchCallbackQuery(endSpan: Function) {\n    return (originalCallback: Function) => {\n      return function (\n        this: any,\n        err: Error | undefined | null,\n        rowCount?: number,\n        rows?: any\n      ) {\n        endSpan(err);\n        return originalCallback.apply(this, arguments);\n      };\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { TediousInstrumentation } from './instrumentation';\nexport type { TediousInstrumentationConfig } from './types';\n","import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst TEDIUS_INSTRUMENTED_METHODS = new Set([\n  'callProcedure',\n  'execSql',\n  'execSqlBatch',\n  'execBulkLoad',\n  'prepare',\n  'execute',\n]);\n\nconst INTEGRATION_NAME = 'Tedious';\n\nexport const instrumentTedious = generateInstrumentOnce(INTEGRATION_NAME, () => new TediousInstrumentation({}));\n\nconst _tediousIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentTedious();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const { description, data } = spanToJSON(span);\n          // Tedius integration always set a span name and `db.system` attribute to `mssql`.\n          if (!description || data['db.system'] !== 'mssql') {\n            return;\n          }\n\n          const operation = description.split(' ')[0] || '';\n          if (TEDIUS_INSTRUMENTED_METHODS.has(operation)) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.tedious');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [tedious](https://www.npmjs.com/package/tedious) library.\n *\n * For more information, see the [`tediousIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/tedious/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.tediousIntegration()],\n * });\n * ```\n */\nexport const tediousIntegration = defineIntegration(_tediousIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.57.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-generic-pool';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport {\n  InstrumentationBase,\n  InstrumentationConfig,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\n\nimport type * as genericPool from 'generic-pool';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst MODULE_NAME = 'generic-pool';\n\nexport class GenericPoolInstrumentation extends InstrumentationBase {\n  // only used for v2 - v2.3)\n  private _isDisabled = false;\n\n  constructor(config: InstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=3.0.0 <4'],\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          if (isWrapped(Pool.prototype.acquire)) {\n            this._unwrap(Pool.prototype, 'acquire');\n          }\n          this._wrap(\n            Pool.prototype,\n            'acquire',\n            this._acquirePatcher.bind(this)\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          this._unwrap(Pool.prototype, 'acquire');\n          return moduleExports;\n        }\n      ),\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.4.0 <3'],\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          if (isWrapped(Pool.prototype.acquire)) {\n            this._unwrap(Pool.prototype, 'acquire');\n          }\n          this._wrap(\n            Pool.prototype,\n            'acquire',\n            this._acquireWithCallbacksPatcher.bind(this)\n          );\n          return moduleExports;\n        },\n        moduleExports => {\n          const Pool: any = moduleExports.Pool;\n          this._unwrap(Pool.prototype, 'acquire');\n          return moduleExports;\n        }\n      ),\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.0.0 <2.4'],\n        moduleExports => {\n          this._isDisabled = false;\n          if (isWrapped(moduleExports.Pool)) {\n            this._unwrap(moduleExports, 'Pool');\n          }\n          this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n          return moduleExports;\n        },\n        moduleExports => {\n          // since the object is created on the fly every time, we need to use\n          // a boolean switch here to disable the instrumentation\n          this._isDisabled = true;\n          return moduleExports;\n        }\n      ),\n    ];\n  }\n\n  private _acquirePatcher(original: genericPool.Pool['acquire']) {\n    const instrumentation = this;\n    return function wrapped_acquire(\n      this: genericPool.Pool,\n      ...args: any[]\n    ) {\n      const parent = api.context.active();\n      const span = instrumentation.tracer.startSpan(\n        'generic-pool.acquire',\n        {},\n        parent\n      );\n\n      return api.context.with(api.trace.setSpan(parent, span), () => {\n        return original.call(this, ...args).then(\n          value => {\n            span.end();\n            return value;\n          },\n          err => {\n            span.recordException(err);\n            span.end();\n            throw err;\n          }\n        );\n      });\n    };\n  }\n\n  private _poolWrapper(original: any) {\n    const instrumentation = this;\n    return function wrapped_pool(this: any) {\n      const pool = original.apply(this, arguments);\n      instrumentation._wrap(\n        pool,\n        'acquire',\n        instrumentation._acquireWithCallbacksPatcher.bind(instrumentation)\n      );\n      return pool;\n    };\n  }\n\n  private _acquireWithCallbacksPatcher(original: any) {\n    const instrumentation = this;\n    return function wrapped_acquire(\n      this: genericPool.Pool,\n      cb: Function,\n      priority: number\n    ) {\n      // only used for v2 - v2.3\n      if (instrumentation._isDisabled) {\n        return original.call(this, cb, priority);\n      }\n      const parent = api.context.active();\n      const span = instrumentation.tracer.startSpan(\n        'generic-pool.acquire',\n        {},\n        parent\n      );\n\n      return api.context.with(api.trace.setSpan(parent, span), () => {\n        original.call(\n          this,\n          (err: unknown, client: unknown) => {\n            span.end();\n            // Not checking whether cb is a function because\n            // the original code doesn't do that either.\n            if (cb) {\n              return cb(err, client);\n            }\n          },\n          priority\n        );\n      });\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { GenericPoolInstrumentation } from './instrumentation';\n","import { GenericPoolInstrumentation } from '@opentelemetry/instrumentation-generic-pool';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nexport const instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentGenericPool();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      instrumentationWrappedCallback?.(() =>\n        client.on('spanStart', span => {\n          const spanJSON = spanToJSON(span);\n\n          const spanDescription = spanJSON.description;\n\n          // typo in emitted span for version <= 0.38.0 of @opentelemetry/instrumentation-generic-pool\n          const isGenericPoolSpan =\n            spanDescription === 'generic-pool.aquire' || spanDescription === 'generic-pool.acquire';\n\n          if (isGenericPoolSpan) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.generic_pool');\n          }\n        }),\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [generic-pool](https://www.npmjs.com/package/generic-pool) library.\n *\n * For more information, see the [`genericPoolIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/genericpool/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.genericPoolIntegration()],\n * });\n * ```\n */\nexport const genericPoolIntegration = defineIntegration(_genericPoolIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.31.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-dataloader';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  isWrapped,\n} from '@opentelemetry/instrumentation';\nimport {\n  trace,\n  context,\n  Link,\n  SpanStatusCode,\n  SpanKind,\n} from '@opentelemetry/api';\nimport { DataloaderInstrumentationConfig } from './types';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport type * as Dataloader from 'dataloader';\n\nconst MODULE_NAME = 'dataloader';\n\ntype DataloaderInternal = typeof Dataloader.prototype & {\n  _batchLoadFn: Dataloader.BatchLoadFn;\n  _batch: { spanLinks?: Link[] } | null;\n};\n\ntype LoadFn = (typeof Dataloader.prototype)['load'];\ntype LoadManyFn = (typeof Dataloader.prototype)['loadMany'];\ntype PrimeFn = (typeof Dataloader.prototype)['prime'];\ntype ClearFn = (typeof Dataloader.prototype)['clear'];\ntype ClearAllFn = (typeof Dataloader.prototype)['clearAll'];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractModuleExports(module: any) {\n  return module[Symbol.toStringTag] === 'Module'\n    ? module.default // ESM\n    : module; // CommonJS\n}\n\nexport class DataloaderInstrumentation extends InstrumentationBase {\n  constructor(config: DataloaderInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config);\n  }\n\n  protected init() {\n    return [\n      new InstrumentationNodeModuleDefinition(\n        MODULE_NAME,\n        ['>=2.0.0 <3'],\n        module => {\n          const dataloader = extractModuleExports(module);\n          this._patchLoad(dataloader.prototype);\n          this._patchLoadMany(dataloader.prototype);\n          this._patchPrime(dataloader.prototype);\n          this._patchClear(dataloader.prototype);\n          this._patchClearAll(dataloader.prototype);\n\n          return this._getPatchedConstructor(dataloader);\n        },\n        module => {\n          const dataloader = extractModuleExports(module);\n          ['load', 'loadMany', 'prime', 'clear', 'clearAll'].forEach(method => {\n            if (isWrapped(dataloader.prototype[method])) {\n              this._unwrap(dataloader.prototype, method);\n            }\n          });\n        }\n      ),\n    ];\n  }\n\n  private shouldCreateSpans(): boolean {\n    const config = this.getConfig();\n    const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n    return hasParentSpan || !config.requireParentSpan;\n  }\n\n  private getSpanName(\n    dataloader: DataloaderInternal,\n    operation: 'load' | 'loadMany' | 'batch' | 'prime' | 'clear' | 'clearAll'\n  ): string {\n    const dataloaderName = dataloader.name;\n    if (dataloaderName === undefined || dataloaderName === null) {\n      return `${MODULE_NAME}.${operation}`;\n    }\n\n    return `${MODULE_NAME}.${operation} ${dataloaderName}`;\n  }\n\n  private _wrapBatchLoadFn(\n    batchLoadFn: Dataloader.BatchLoadFn\n  ): Dataloader.BatchLoadFn {\n    const instrumentation = this;\n\n    return function patchedBatchLoadFn(\n      this: DataloaderInternal,\n      ...args: Parameters>\n    ) {\n      if (\n        !instrumentation.isEnabled() ||\n        !instrumentation.shouldCreateSpans()\n      ) {\n        return batchLoadFn.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'batch'),\n        { links: this._batch?.spanLinks as Link[] | undefined },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        return (batchLoadFn.apply(this, args) as Promise)\n          .then(value => {\n            span.end();\n            return value;\n          })\n          .catch(err => {\n            span.recordException(err);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            span.end();\n            throw err;\n          });\n      });\n    };\n  }\n\n  private _getPatchedConstructor(\n    constructor: typeof Dataloader\n  ): typeof Dataloader {\n    const instrumentation = this;\n    const prototype = constructor.prototype;\n\n    if (!instrumentation.isEnabled()) {\n      return constructor;\n    }\n\n    function PatchedDataloader(\n      this: DataloaderInternal,\n      ...args: ConstructorParameters\n    ) {\n      // BatchLoadFn is the first constructor argument\n      // https://github.com/graphql/dataloader/blob/77c2cd7ca97e8795242018ebc212ce2487e729d2/src/index.js#L47\n      if (typeof args[0] === 'function') {\n        if (isWrapped(args[0])) {\n          instrumentation._unwrap(args, 0);\n        }\n\n        args[0] = instrumentation._wrapBatchLoadFn(\n          args[0]\n        ) as Dataloader.BatchLoadFn;\n      }\n\n      return constructor.apply(this, args);\n    }\n\n    PatchedDataloader.prototype = prototype;\n    return PatchedDataloader as unknown as typeof Dataloader;\n  }\n\n  private _patchLoad(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.load)) {\n      this._unwrap(proto, 'load');\n    }\n\n    this._wrap(proto, 'load', this._getPatchedLoad.bind(this));\n  }\n\n  private _getPatchedLoad(original: LoadFn): LoadFn {\n    const instrumentation = this;\n\n    return function patchedLoad(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'load'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        const result = original\n          .call(this, ...args)\n          .then(value => {\n            span.end();\n            return value;\n          })\n          .catch(err => {\n            span.recordException(err);\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: err.message,\n            });\n            span.end();\n            throw err;\n          });\n\n        const loader = this as DataloaderInternal;\n\n        if (loader._batch) {\n          if (!loader._batch.spanLinks) {\n            loader._batch.spanLinks = [];\n          }\n\n          loader._batch.spanLinks.push({ context: span.spanContext() } as Link);\n        }\n\n        return result;\n      });\n    };\n  }\n\n  private _patchLoadMany(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.loadMany)) {\n      this._unwrap(proto, 'loadMany');\n    }\n\n    this._wrap(proto, 'loadMany', this._getPatchedLoadMany.bind(this));\n  }\n\n  private _getPatchedLoadMany(original: LoadManyFn): LoadManyFn {\n    const instrumentation = this;\n\n    return function patchedLoadMany(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'loadMany'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      return context.with(trace.setSpan(parent, span), () => {\n        // .loadMany never rejects, as errors from internal .load\n        // calls are caught by dataloader lib\n        return original.call(this, ...args).then(value => {\n          span.end();\n          return value;\n        });\n      });\n    };\n  }\n\n  private _patchPrime(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.prime)) {\n      this._unwrap(proto, 'prime');\n    }\n\n    this._wrap(proto, 'prime', this._getPatchedPrime.bind(this));\n  }\n\n  private _getPatchedPrime(original: PrimeFn): PrimeFn {\n    const instrumentation = this;\n\n    return function patchedPrime(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'prime'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n\n  private _patchClear(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.clear)) {\n      this._unwrap(proto, 'clear');\n    }\n\n    this._wrap(proto, 'clear', this._getPatchedClear.bind(this));\n  }\n\n  private _getPatchedClear(original: ClearFn): ClearFn {\n    const instrumentation = this;\n\n    return function patchedClear(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'clear'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n\n  private _patchClearAll(proto: typeof Dataloader.prototype) {\n    if (isWrapped(proto.clearAll)) {\n      this._unwrap(proto, 'clearAll');\n    }\n\n    this._wrap(proto, 'clearAll', this._getPatchedClearAll.bind(this));\n  }\n\n  private _getPatchedClearAll(original: ClearAllFn): ClearAllFn {\n    const instrumentation = this;\n\n    return function patchedClearAll(\n      this: DataloaderInternal,\n      ...args: Parameters\n    ) {\n      if (!instrumentation.shouldCreateSpans()) {\n        return original.call(this, ...args);\n      }\n\n      const parent = context.active();\n      const span = instrumentation.tracer.startSpan(\n        instrumentation.getSpanName(this, 'clearAll'),\n        { kind: SpanKind.CLIENT },\n        parent\n      );\n\n      const ret = context.with(trace.setSpan(parent, span), () => {\n        return original.call(this, ...args);\n      });\n\n      span.end();\n\n      return ret;\n    };\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { DataloaderInstrumentation } from './instrumentation';\nexport type { DataloaderInstrumentationConfig } from './types';\n","import { DataloaderInstrumentation } from '@opentelemetry/instrumentation-dataloader';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n  defineIntegration,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  spanToJSON,\n} from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Dataloader';\n\nexport const instrumentDataloader = generateInstrumentOnce(\n  INTEGRATION_NAME,\n  () =>\n    new DataloaderInstrumentation({\n      requireParentSpan: true,\n    }),\n);\n\nconst _dataloaderIntegration = (() => {\n  let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      const instrumentation = instrumentDataloader();\n      instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n    },\n\n    setup(client) {\n      // This is called either immediately or when the instrumentation is wrapped\n      instrumentationWrappedCallback?.(() => {\n        client.on('spanStart', span => {\n          const spanJSON = spanToJSON(span);\n          if (spanJSON.description?.startsWith('dataloader')) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.dataloader');\n          }\n\n          // These are all possible dataloader span descriptions\n          // Still checking for the future versions\n          // in case they add support for `clear` and `prime`\n          if (\n            spanJSON.description === 'dataloader.load' ||\n            spanJSON.description === 'dataloader.loadMany' ||\n            spanJSON.description === 'dataloader.batch'\n          ) {\n            span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'cache.get');\n            // TODO: We can try adding `key` to the `data` attribute upstream.\n            // Or alternatively, we can add `requestHook` to the dataloader instrumentation.\n          }\n        });\n      });\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [dataloader](https://www.npmjs.com/package/dataloader) library.\n *\n * For more information, see the [`dataloaderIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/dataloader/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.dataloaderIntegration()],\n * });\n * ```\n */\nexport const dataloaderIntegration = defineIntegration(_dataloaderIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `messaging.operation.type` instead.\n *\n * @example publish\n * @example create\n * @example process\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `messaging.operation.type`.\n */\nexport const ATTR_MESSAGING_OPERATION = 'messaging.operation' as const;\n\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_MESSAGING_SYSTEM = 'messaging.system' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 * This file contains constants for values that where replaced/removed from\n * Semantic Conventions long enough ago that they do not have `ATTR_*`\n * constants in the `@opentelemetry/semantic-conventions` package. Eventually\n * it is expected that this instrumention will be updated to emit telemetry\n * using modern Semantic Conventions, dropping the need for the constants in\n * this file.\n */\n\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_DESTINATION = 'messaging.destination' as const;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const ATTR_MESSAGING_DESTINATION_KIND =\n  'messaging.destination_kind' as const;\n\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_RABBITMQ_ROUTING_KEY =\n  'messaging.rabbitmq.routing_key' as const;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGING_OPERATION_VALUE_PROCESS = 'process' as const;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const ATTR_MESSAGING_PROTOCOL = 'messaging.protocol' as const;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const ATTR_MESSAGING_PROTOCOL_VERSION =\n  'messaging.protocol_version' as const;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const ATTR_MESSAGING_URL = 'messaging.url' as const;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic' as const;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n *\n * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`.\n */\nexport const OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id' as const;\n\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const ATTR_MESSAGING_CONVERSATION_ID =\n  'messaging.conversation_id' as const;\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport { Span } from '@opentelemetry/api';\nimport { InstrumentationConfig } from '@opentelemetry/instrumentation';\n\nexport interface PublishInfo {\n  moduleVersion: string | undefined;\n  exchange: string;\n  routingKey: string;\n  content: Buffer;\n  options?: AmqplibPublishOptions;\n  isConfirmChannel?: boolean;\n}\n\nexport interface PublishConfirmedInfo extends PublishInfo {\n  confirmError?: any;\n}\n\nexport interface ConsumeInfo {\n  moduleVersion: string | undefined;\n  msg: ConsumeMessage;\n}\n\nexport interface ConsumeEndInfo {\n  msg: ConsumeMessage;\n  rejected: boolean | null;\n  endOperation: EndOperation;\n}\n\nexport interface AmqplibPublishCustomAttributeFunction {\n  (span: Span, publishInfo: PublishInfo): void;\n}\n\nexport interface AmqplibPublishConfirmCustomAttributeFunction {\n  (span: Span, publishConfirmedInto: PublishConfirmedInfo): void;\n}\n\nexport interface AmqplibConsumeCustomAttributeFunction {\n  (span: Span, consumeInfo: ConsumeInfo): void;\n}\n\nexport interface AmqplibConsumeEndCustomAttributeFunction {\n  (span: Span, consumeEndInfo: ConsumeEndInfo): void;\n}\n\nexport enum EndOperation {\n  AutoAck = 'auto ack',\n  Ack = 'ack',\n  AckAll = 'ackAll',\n  Reject = 'reject',\n  Nack = 'nack',\n  NackAll = 'nackAll',\n  ChannelClosed = 'channel closed',\n  ChannelError = 'channel error',\n  InstrumentationTimeout = 'instrumentation timeout',\n}\n\nexport interface AmqplibInstrumentationConfig extends InstrumentationConfig {\n  /** hook for adding custom attributes before publish message is sent */\n  publishHook?: AmqplibPublishCustomAttributeFunction;\n\n  /** hook for adding custom attributes after publish message is confirmed by the broker */\n  publishConfirmHook?: AmqplibPublishConfirmCustomAttributeFunction;\n\n  /** hook for adding custom attributes before consumer message is processed */\n  consumeHook?: AmqplibConsumeCustomAttributeFunction;\n\n  /** hook for adding custom attributes after consumer message is acked to server */\n  consumeEndHook?: AmqplibConsumeEndCustomAttributeFunction;\n\n  /**\n   * When user is setting up consume callback, it is user's responsibility to call\n   * ack/nack etc on the msg to resolve it in the server.\n   * If user is not calling the ack, the message will stay in the queue until\n   * channel is closed, or until server timeout expires (if configured).\n   * While we wait for the ack, a reference to the message is stored in plugin, which\n   * will never be garbage collected.\n   * To prevent memory leak, plugin has it's own configuration of timeout, which\n   * will close the span if user did not call ack after this timeout.\n   * If timeout is not big enough, span might be closed with 'InstrumentationTimeout',\n   * and then received valid ack from the user later which will not be instrumented.\n   *\n   * Default is 1 minute\n   */\n  consumeTimeoutMs?: number;\n\n  /** option to use a span link for the consume message instead of continuing a trace */\n  useLinksForConsume?: boolean;\n}\n\nexport const DEFAULT_CONFIG: AmqplibInstrumentationConfig = {\n  consumeTimeoutMs: 1000 * 60, // 1 minute\n  useLinksForConsume: false,\n};\n\n// The following types are vendored from `@types/amqplib@0.10.1` - commit SHA: 4205e03127692a40b4871709a7134fe4e2ed5510\n\n// Vendored from: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/4205e03127692a40b4871709a7134fe4e2ed5510/types/amqplib/properties.d.ts#L108\n// This exists in `@types/amqplib` as `Options.Publish`. We're renaming things\n// here to avoid importing the whole Options namespace.\nexport interface AmqplibPublishOptions {\n  expiration?: string | number;\n  userId?: string;\n  CC?: string | string[];\n\n  mandatory?: boolean;\n  persistent?: boolean;\n  deliveryMode?: boolean | number;\n  BCC?: string | string[];\n\n  contentType?: string;\n  contentEncoding?: string;\n  headers?: any;\n  priority?: number;\n  correlationId?: string;\n  replyTo?: string;\n  messageId?: string;\n  timestamp?: number;\n  type?: string;\n  appId?: string;\n}\n\n// Vendored from: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/4205e03127692a40b4871709a7134fe4e2ed5510/types/amqplib/properties.d.ts#L142\nexport interface Message {\n  content: Buffer;\n  fields: MessageFields;\n  properties: MessageProperties;\n}\n\nexport interface ConsumeMessage extends Message {\n  fields: ConsumeMessageFields;\n}\n\nexport interface CommonMessageFields {\n  deliveryTag: number;\n  redelivered: boolean;\n  exchange: string;\n  routingKey: string;\n}\n\nexport interface MessageFields extends CommonMessageFields {\n  messageCount?: number;\n  consumerTag?: string;\n}\n\nexport interface ConsumeMessageFields extends CommonMessageFields {\n  deliveryTag: number;\n}\n\nexport interface MessageProperties {\n  contentType: any | undefined;\n  contentEncoding: any | undefined;\n  headers: any;\n  deliveryMode: any | undefined;\n  priority: any | undefined;\n  correlationId: any | undefined;\n  replyTo: any | undefined;\n  expiration: any | undefined;\n  messageId: any | undefined;\n  timestamp: any | undefined;\n  type: any | undefined;\n  userId: any | undefined;\n  appId: any | undefined;\n  clusterId: any | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  Context,\n  createContextKey,\n  diag,\n  HrTime,\n  Span,\n  Attributes,\n  AttributeValue,\n} from '@opentelemetry/api';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport {\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport {\n  ATTR_MESSAGING_SYSTEM,\n  ATTR_NET_PEER_NAME,\n  ATTR_NET_PEER_PORT,\n} from './semconv';\nimport {\n  ATTR_MESSAGING_PROTOCOL,\n  ATTR_MESSAGING_PROTOCOL_VERSION,\n  ATTR_MESSAGING_URL,\n} from '../src/semconv-obsolete';\nimport type * as amqp from 'amqplib';\n\nexport const MESSAGE_STORED_SPAN: unique symbol = Symbol(\n  'opentelemetry.amqplib.message.stored-span'\n);\nexport const CHANNEL_SPANS_NOT_ENDED: unique symbol = Symbol(\n  'opentelemetry.amqplib.channel.spans-not-ended'\n);\nexport const CHANNEL_CONSUME_TIMEOUT_TIMER: unique symbol = Symbol(\n  'opentelemetry.amqplib.channel.consumer-timeout-timer'\n);\nexport const CONNECTION_ATTRIBUTES: unique symbol = Symbol(\n  'opentelemetry.amqplib.connection.attributes'\n);\n\nexport type InstrumentationConnection = amqp.Connection & {\n  [CONNECTION_ATTRIBUTES]?: Attributes;\n};\nexport type InstrumentationPublishChannel = (\n  | amqp.Channel\n  | amqp.ConfirmChannel\n) & { connection: InstrumentationConnection };\nexport type InstrumentationConsumeChannel = amqp.Channel & {\n  connection: InstrumentationConnection;\n  [CHANNEL_SPANS_NOT_ENDED]?: {\n    msg: amqp.ConsumeMessage;\n    timeOfConsume: HrTime;\n  }[];\n  [CHANNEL_CONSUME_TIMEOUT_TIMER]?: NodeJS.Timeout;\n};\nexport type InstrumentationMessage = amqp.Message & {\n  [MESSAGE_STORED_SPAN]?: Span;\n};\nexport type InstrumentationConsumeMessage = amqp.ConsumeMessage & {\n  [MESSAGE_STORED_SPAN]?: Span;\n};\n\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY: symbol = createContextKey(\n  'opentelemetry.amqplib.channel.is-confirm-channel'\n);\n\nexport const normalizeExchange = (exchangeName: string) =>\n  exchangeName !== '' ? exchangeName : '';\n\nconst censorPassword = (url: string): string => {\n  return url.replace(/:[^:@/]*@/, ':***@');\n};\n\nconst getPort = (\n  portFromUrl: number | undefined,\n  resolvedProtocol: string\n): number => {\n  // we are using the resolved protocol which is upper case\n  // this code mimic the behavior of the amqplib which is used to set connection params\n  return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671);\n};\n\nconst getProtocol = (protocolFromUrl: string | undefined): string => {\n  const resolvedProtocol = protocolFromUrl || 'amqp';\n  // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp')\n  const noEndingColon = resolvedProtocol.endsWith(':')\n    ? resolvedProtocol.substring(0, resolvedProtocol.length - 1)\n    : resolvedProtocol;\n  // upper cases to match spec\n  return noEndingColon.toUpperCase();\n};\n\nconst getHostname = (hostnameFromUrl: string | undefined): string => {\n  // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost.\n  // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener\n  return hostnameFromUrl || 'localhost';\n};\n\nconst extractConnectionAttributeOrLog = (\n  url: string | amqp.Options.Connect,\n  attributeKey: string,\n  attributeValue: AttributeValue,\n  nameForLog: string\n): Attributes => {\n  if (attributeValue) {\n    return { [attributeKey]: attributeValue };\n  } else {\n    diag.error(\n      `amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`,\n      {\n        url,\n      }\n    );\n    return {};\n  }\n};\n\nexport const getConnectionAttributesFromServer = (\n  conn: amqp.Connection\n): Attributes => {\n  const product = conn.serverProperties.product?.toLowerCase?.();\n  if (product) {\n    return {\n      [ATTR_MESSAGING_SYSTEM]: product,\n    };\n  } else {\n    return {};\n  }\n};\n\nexport const getConnectionAttributesFromUrl = (\n  url: string | amqp.Options.Connect,\n  netSemconvStability: SemconvStability\n): Attributes => {\n  const attributes: Attributes = {\n    [ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n  };\n\n  url = url || 'amqp://localhost';\n  if (typeof url === 'object') {\n    const connectOptions = url as amqp.Options.Connect;\n\n    const protocol = getProtocol(connectOptions?.protocol);\n    Object.assign(attributes, {\n      ...extractConnectionAttributeOrLog(\n        url,\n        ATTR_MESSAGING_PROTOCOL,\n        protocol,\n        'protocol'\n      ),\n    });\n\n    const hostname = getHostname(connectOptions?.hostname);\n    if (netSemconvStability & SemconvStability.OLD) {\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          url,\n          ATTR_NET_PEER_NAME,\n          hostname,\n          'hostname'\n        ),\n      });\n    }\n    if (netSemconvStability & SemconvStability.STABLE) {\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          url,\n          ATTR_SERVER_ADDRESS,\n          hostname,\n          'hostname'\n        ),\n      });\n    }\n\n    const port = getPort(connectOptions.port, protocol);\n    if (netSemconvStability & SemconvStability.OLD) {\n      Object.assign(\n        attributes,\n        extractConnectionAttributeOrLog(url, ATTR_NET_PEER_PORT, port, 'port')\n      );\n    }\n    if (netSemconvStability & SemconvStability.STABLE) {\n      Object.assign(\n        attributes,\n        extractConnectionAttributeOrLog(url, ATTR_SERVER_PORT, port, 'port')\n      );\n    }\n  } else {\n    const censoredUrl = censorPassword(url);\n    attributes[ATTR_MESSAGING_URL] = censoredUrl;\n    try {\n      const urlParts = new URL(censoredUrl);\n\n      const protocol = getProtocol(urlParts.protocol);\n      Object.assign(attributes, {\n        ...extractConnectionAttributeOrLog(\n          censoredUrl,\n          ATTR_MESSAGING_PROTOCOL,\n          protocol,\n          'protocol'\n        ),\n      });\n\n      const hostname = getHostname(urlParts.hostname);\n      if (netSemconvStability & SemconvStability.OLD) {\n        Object.assign(attributes, {\n          ...extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_NET_PEER_NAME,\n            hostname,\n            'hostname'\n          ),\n        });\n      }\n      if (netSemconvStability & SemconvStability.STABLE) {\n        Object.assign(attributes, {\n          ...extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_SERVER_ADDRESS,\n            hostname,\n            'hostname'\n          ),\n        });\n      }\n\n      const port = getPort(\n        urlParts.port ? parseInt(urlParts.port) : undefined,\n        protocol\n      );\n      if (netSemconvStability & SemconvStability.OLD) {\n        Object.assign(\n          attributes,\n          extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_NET_PEER_PORT,\n            port,\n            'port'\n          )\n        );\n      }\n      if (netSemconvStability & SemconvStability.STABLE) {\n        Object.assign(\n          attributes,\n          extractConnectionAttributeOrLog(\n            censoredUrl,\n            ATTR_SERVER_PORT,\n            port,\n            'port'\n          )\n        );\n      }\n    } catch (err) {\n      diag.error(\n        'amqplib instrumentation: error while extracting connection details from connection url',\n        {\n          censoredUrl,\n          err,\n        }\n      );\n    }\n  }\n  return attributes;\n};\n\nexport const markConfirmChannelTracing = (context: Context) => {\n  return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\n\nexport const unmarkConfirmChannelTracing = (context: Context) => {\n  return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\n\nexport const isConfirmChannelTracing = (context: Context) => {\n  return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.61.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport {\n  context,\n  diag,\n  propagation,\n  trace,\n  Span,\n  SpanKind,\n  SpanStatusCode,\n  ROOT_CONTEXT,\n  Link,\n  Context,\n} from '@opentelemetry/api';\nimport {\n  hrTime,\n  hrTimeDuration,\n  hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n  SemconvStability,\n  semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_MESSAGING_OPERATION } from './semconv';\nimport {\n  ATTR_MESSAGING_DESTINATION,\n  ATTR_MESSAGING_DESTINATION_KIND,\n  ATTR_MESSAGING_RABBITMQ_ROUTING_KEY,\n  MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n  MESSAGING_OPERATION_VALUE_PROCESS,\n  OLD_ATTR_MESSAGING_MESSAGE_ID,\n  ATTR_MESSAGING_CONVERSATION_ID,\n} from '../src/semconv-obsolete';\nimport type {\n  Connection,\n  ConsumeMessage,\n  Message,\n  Options,\n  Replies,\n} from 'amqplib';\nimport {\n  AmqplibInstrumentationConfig,\n  DEFAULT_CONFIG,\n  EndOperation,\n} from './types';\nimport {\n  CHANNEL_CONSUME_TIMEOUT_TIMER,\n  CHANNEL_SPANS_NOT_ENDED,\n  CONNECTION_ATTRIBUTES,\n  getConnectionAttributesFromServer,\n  getConnectionAttributesFromUrl,\n  InstrumentationConnection,\n  InstrumentationConsumeChannel,\n  InstrumentationConsumeMessage,\n  InstrumentationMessage,\n  InstrumentationPublishChannel,\n  isConfirmChannelTracing,\n  markConfirmChannelTracing,\n  MESSAGE_STORED_SPAN,\n  normalizeExchange,\n  unmarkConfirmChannelTracing,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nconst supportedVersions = ['>=0.5.5 <1'];\n\nexport class AmqplibInstrumentation extends InstrumentationBase {\n  private _netSemconvStability!: SemconvStability;\n\n  constructor(config: AmqplibInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    this._setSemconvStabilityFromEnv();\n  }\n\n  // Used for testing.\n  private _setSemconvStabilityFromEnv() {\n    this._netSemconvStability = semconvStabilityFromStr(\n      'http',\n      process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n    );\n  }\n\n  override setConfig(config: AmqplibInstrumentationConfig = {}) {\n    super.setConfig({ ...DEFAULT_CONFIG, ...config });\n  }\n\n  protected init() {\n    const channelModelModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/channel_model.js',\n      supportedVersions,\n      this.patchChannelModel.bind(this),\n      this.unpatchChannelModel.bind(this)\n    );\n\n    const callbackModelModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/callback_model.js',\n      supportedVersions,\n      this.patchChannelModel.bind(this),\n      this.unpatchChannelModel.bind(this)\n    );\n\n    const connectModuleFile = new InstrumentationNodeModuleFile(\n      'amqplib/lib/connect.js',\n      supportedVersions,\n      this.patchConnect.bind(this),\n      this.unpatchConnect.bind(this)\n    );\n\n    const module = new InstrumentationNodeModuleDefinition(\n      'amqplib',\n      supportedVersions,\n      undefined,\n      undefined,\n      [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]\n    );\n    return module;\n  }\n\n  private patchConnect(moduleExports: any) {\n    moduleExports = this.unpatchConnect(moduleExports);\n    if (!isWrapped(moduleExports.connect)) {\n      this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this));\n    }\n    return moduleExports;\n  }\n\n  private unpatchConnect(moduleExports: any) {\n    if (isWrapped(moduleExports.connect)) {\n      this._unwrap(moduleExports, 'connect');\n    }\n    return moduleExports;\n  }\n\n  private patchChannelModel(\n    moduleExports: any,\n    moduleVersion: string | undefined\n  ) {\n    if (!isWrapped(moduleExports.Channel.prototype.publish)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'publish',\n        this.getPublishPatch.bind(this, moduleVersion)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.consume)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'consume',\n        this.getConsumePatch.bind(this, moduleVersion)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.ack)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'ack',\n        this.getAckPatch.bind(this, false, EndOperation.Ack)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.nack)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'nack',\n        this.getAckPatch.bind(this, true, EndOperation.Nack)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.reject)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'reject',\n        this.getAckPatch.bind(this, true, EndOperation.Reject)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.ackAll)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'ackAll',\n        this.getAckAllPatch.bind(this, false, EndOperation.AckAll)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.nackAll)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'nackAll',\n        this.getAckAllPatch.bind(this, true, EndOperation.NackAll)\n      );\n    }\n    if (!isWrapped(moduleExports.Channel.prototype.emit)) {\n      this._wrap(\n        moduleExports.Channel.prototype,\n        'emit',\n        this.getChannelEmitPatch.bind(this)\n      );\n    }\n    if (!isWrapped(moduleExports.ConfirmChannel.prototype.publish)) {\n      this._wrap(\n        moduleExports.ConfirmChannel.prototype,\n        'publish',\n        this.getConfirmedPublishPatch.bind(this, moduleVersion)\n      );\n    }\n    return moduleExports;\n  }\n\n  private unpatchChannelModel(moduleExports: any) {\n    if (isWrapped(moduleExports.Channel.prototype.publish)) {\n      this._unwrap(moduleExports.Channel.prototype, 'publish');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.consume)) {\n      this._unwrap(moduleExports.Channel.prototype, 'consume');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.ack)) {\n      this._unwrap(moduleExports.Channel.prototype, 'ack');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.nack)) {\n      this._unwrap(moduleExports.Channel.prototype, 'nack');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.reject)) {\n      this._unwrap(moduleExports.Channel.prototype, 'reject');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.ackAll)) {\n      this._unwrap(moduleExports.Channel.prototype, 'ackAll');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.nackAll)) {\n      this._unwrap(moduleExports.Channel.prototype, 'nackAll');\n    }\n    if (isWrapped(moduleExports.Channel.prototype.emit)) {\n      this._unwrap(moduleExports.Channel.prototype, 'emit');\n    }\n    if (isWrapped(moduleExports.ConfirmChannel.prototype.publish)) {\n      this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish');\n    }\n    return moduleExports;\n  }\n\n  private getConnectPatch(\n    original: (\n      url: string | Options.Connect,\n      socketOptions: any,\n      openCallback: (err: any, connection: Connection) => void\n    ) => Connection\n  ) {\n    const self = this;\n    return function patchedConnect(\n      this: unknown,\n      url: string | Options.Connect,\n      socketOptions: any,\n      openCallback: Function\n    ) {\n      return original.call(\n        this,\n        url,\n        socketOptions,\n        function (this: unknown, err, conn: InstrumentationConnection) {\n          if (err == null) {\n            const urlAttributes = getConnectionAttributesFromUrl(\n              url,\n              self._netSemconvStability\n            );\n            const serverAttributes = getConnectionAttributesFromServer(conn);\n            conn[CONNECTION_ATTRIBUTES] = {\n              ...urlAttributes,\n              ...serverAttributes,\n            };\n          }\n          openCallback.apply(this, arguments);\n        }\n      );\n    };\n  }\n\n  private getChannelEmitPatch(original: Function) {\n    const self = this;\n    return function emit(\n      this: InstrumentationConsumeChannel,\n      eventName: string\n    ) {\n      if (eventName === 'close') {\n        self.endAllSpansOnChannel(\n          this,\n          true,\n          EndOperation.ChannelClosed,\n          undefined\n        );\n        const activeTimer = this[CHANNEL_CONSUME_TIMEOUT_TIMER];\n        if (activeTimer) {\n          clearInterval(activeTimer);\n        }\n        this[CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined;\n      } else if (eventName === 'error') {\n        self.endAllSpansOnChannel(\n          this,\n          true,\n          EndOperation.ChannelError,\n          undefined\n        );\n      }\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getAckAllPatch(\n    isRejected: boolean,\n    endOperation: EndOperation,\n    original: Function\n  ) {\n    const self = this;\n    return function ackAll(\n      this: InstrumentationConsumeChannel,\n      requeueOrEmpty?: boolean\n    ): void {\n      self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty);\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getAckPatch(\n    isRejected: boolean,\n    endOperation: EndOperation,\n    original: Function\n  ) {\n    const self = this;\n    return function ack(\n      this: InstrumentationConsumeChannel,\n      message: Message,\n      allUpToOrRequeue?: boolean,\n      requeue?: boolean\n    ): void {\n      const channel = this;\n      // we use this patch in reject function as well, but it has different signature\n      const requeueResolved =\n        endOperation === EndOperation.Reject ? allUpToOrRequeue : requeue;\n\n      const spansNotEnded: { msg: Message }[] =\n        channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n      const msgIndex = spansNotEnded.findIndex(\n        msgDetails => msgDetails.msg === message\n      );\n      if (msgIndex < 0) {\n        // should not happen in happy flow\n        // but possible if user is calling the api function ack twice with same message\n        self.endConsumerSpan(\n          message,\n          isRejected,\n          endOperation,\n          requeueResolved\n        );\n      } else if (endOperation !== EndOperation.Reject && allUpToOrRequeue) {\n        for (let i = 0; i <= msgIndex; i++) {\n          self.endConsumerSpan(\n            spansNotEnded[i].msg,\n            isRejected,\n            endOperation,\n            requeueResolved\n          );\n        }\n        spansNotEnded.splice(0, msgIndex + 1);\n      } else {\n        self.endConsumerSpan(\n          message,\n          isRejected,\n          endOperation,\n          requeueResolved\n        );\n        spansNotEnded.splice(msgIndex, 1);\n      }\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getConsumePatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function consume(\n      this: InstrumentationConsumeChannel,\n      queue: string,\n      onMessage: (msg: ConsumeMessage | null) => void,\n      options?: Options.Consume\n    ): Promise {\n      const channel = this;\n      if (\n        !Object.prototype.hasOwnProperty.call(channel, CHANNEL_SPANS_NOT_ENDED)\n      ) {\n        const { consumeTimeoutMs } = self.getConfig();\n        if (consumeTimeoutMs) {\n          const timer = setInterval(() => {\n            self.checkConsumeTimeoutOnChannel(channel);\n          }, consumeTimeoutMs);\n          timer.unref();\n          channel[CHANNEL_CONSUME_TIMEOUT_TIMER] = timer;\n        }\n        channel[CHANNEL_SPANS_NOT_ENDED] = [];\n      }\n\n      const patchedOnMessage = function (\n        this: unknown,\n        msg: InstrumentationConsumeMessage | null\n      ) {\n        // msg is expected to be null for signaling consumer cancel notification\n        // https://www.rabbitmq.com/consumer-cancel.html\n        // in this case, we do not start a span, as this is not a real message.\n        if (!msg) {\n          return onMessage.call(this, msg);\n        }\n\n        const headers = msg.properties.headers ?? {};\n        let parentContext: Context | undefined = propagation.extract(\n          ROOT_CONTEXT,\n          headers\n        );\n        const exchange = msg.fields?.exchange;\n        let links: Link[] | undefined;\n        if (self._config.useLinksForConsume) {\n          const parentSpanContext = parentContext\n            ? trace.getSpan(parentContext)?.spanContext()\n            : undefined;\n          parentContext = undefined;\n          if (parentSpanContext) {\n            links = [\n              {\n                context: parentSpanContext,\n              },\n            ];\n          }\n        }\n        const span = self.tracer.startSpan(\n          `${queue} process`,\n          {\n            kind: SpanKind.CONSUMER,\n            attributes: {\n              ...channel?.connection?.[CONNECTION_ATTRIBUTES],\n              [ATTR_MESSAGING_DESTINATION]: exchange,\n              [ATTR_MESSAGING_DESTINATION_KIND]:\n                MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n              [ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey,\n              [ATTR_MESSAGING_OPERATION]: MESSAGING_OPERATION_VALUE_PROCESS,\n              [OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId,\n              [ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId,\n            },\n            links,\n          },\n          parentContext\n        );\n\n        const { consumeHook } = self.getConfig();\n        if (consumeHook) {\n          safeExecuteInTheMiddle(\n            () => consumeHook(span, { moduleVersion, msg }),\n            e => {\n              if (e) {\n                diag.error('amqplib instrumentation: consumerHook error', e);\n              }\n            },\n            true\n          );\n        }\n\n        if (!options?.noAck) {\n          // store the message on the channel so we can close the span on ackAll etc\n          channel[CHANNEL_SPANS_NOT_ENDED]!.push({\n            msg,\n            timeOfConsume: hrTime(),\n          });\n\n          // store the span on the message, so we can end it when user call 'ack' on it\n          msg[MESSAGE_STORED_SPAN] = span;\n        }\n        const setContext: Context = parentContext\n          ? parentContext\n          : ROOT_CONTEXT;\n        context.with(trace.setSpan(setContext, span), () => {\n          onMessage.call(this, msg);\n        });\n\n        if (options?.noAck) {\n          self.callConsumeEndHook(span, msg, false, EndOperation.AutoAck);\n          span.end();\n        }\n      };\n      arguments[1] = patchedOnMessage;\n      return original.apply(this, arguments);\n    };\n  }\n\n  private getConfirmedPublishPatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function confirmedPublish(\n      this: InstrumentationConsumeChannel,\n      exchange: string,\n      routingKey: string,\n      content: Buffer,\n      options?: Options.Publish,\n      callback?: (err: any, ok: Replies.Empty) => void\n    ): boolean {\n      const channel = this;\n      const { span, modifiedOptions } = self.createPublishSpan(\n        self,\n        exchange,\n        routingKey,\n        channel,\n        options\n      );\n\n      const { publishHook } = self.getConfig();\n      if (publishHook) {\n        safeExecuteInTheMiddle(\n          () =>\n            publishHook(span, {\n              moduleVersion,\n              exchange,\n              routingKey,\n              content,\n              options: modifiedOptions,\n              isConfirmChannel: true,\n            }),\n          e => {\n            if (e) {\n              diag.error('amqplib instrumentation: publishHook error', e);\n            }\n          },\n          true\n        );\n      }\n\n      const patchedOnConfirm = function (\n        this: unknown,\n        err: any,\n        ok: Replies.Empty\n      ) {\n        try {\n          callback?.call(this, err, ok);\n        } finally {\n          const { publishConfirmHook } = self.getConfig();\n          if (publishConfirmHook) {\n            safeExecuteInTheMiddle(\n              () =>\n                publishConfirmHook(span, {\n                  moduleVersion,\n                  exchange,\n                  routingKey,\n                  content,\n                  options,\n                  isConfirmChannel: true,\n                  confirmError: err,\n                }),\n              e => {\n                if (e) {\n                  diag.error(\n                    'amqplib instrumentation: publishConfirmHook error',\n                    e\n                  );\n                }\n              },\n              true\n            );\n          }\n\n          if (err) {\n            span.setStatus({\n              code: SpanStatusCode.ERROR,\n              message: \"message confirmation has been nack'ed\",\n            });\n          }\n          span.end();\n        }\n      };\n\n      // calling confirm channel publish function is storing the message in queue and registering the callback for broker confirm.\n      // span ends in the patched callback.\n      const markedContext = markConfirmChannelTracing(context.active());\n      const argumentsCopy = [...arguments];\n      argumentsCopy[3] = modifiedOptions;\n      argumentsCopy[4] = context.bind(\n        unmarkConfirmChannelTracing(trace.setSpan(markedContext, span)),\n        patchedOnConfirm\n      );\n      return context.with(markedContext, original.bind(this, ...argumentsCopy));\n    };\n  }\n\n  private getPublishPatch(\n    moduleVersion: string | undefined,\n    original: Function\n  ) {\n    const self = this;\n    return function publish(\n      this: InstrumentationPublishChannel,\n      exchange: string,\n      routingKey: string,\n      content: Buffer,\n      options?: Options.Publish\n    ): boolean {\n      if (isConfirmChannelTracing(context.active())) {\n        // work already done\n        return original.apply(this, arguments);\n      } else {\n        const channel = this;\n        const { span, modifiedOptions } = self.createPublishSpan(\n          self,\n          exchange,\n          routingKey,\n          channel,\n          options\n        );\n\n        const { publishHook } = self.getConfig();\n        if (publishHook) {\n          safeExecuteInTheMiddle(\n            () =>\n              publishHook(span, {\n                moduleVersion,\n                exchange,\n                routingKey,\n                content,\n                options: modifiedOptions,\n                isConfirmChannel: false,\n              }),\n            e => {\n              if (e) {\n                diag.error('amqplib instrumentation: publishHook error', e);\n              }\n            },\n            true\n          );\n        }\n\n        // calling normal channel publish function is only storing the message in queue.\n        // it does not send it and waits for an ack, so the span duration is expected to be very short.\n        const argumentsCopy = [...arguments];\n        argumentsCopy[3] = modifiedOptions;\n        const originalRes = original.apply(this, argumentsCopy as any);\n        span.end();\n        return originalRes;\n      }\n    };\n  }\n\n  private createPublishSpan(\n    self: this,\n    exchange: string,\n    routingKey: string,\n    channel: InstrumentationPublishChannel,\n    options?: Options.Publish\n  ) {\n    const normalizedExchange = normalizeExchange(exchange);\n\n    const span = self.tracer.startSpan(`publish ${normalizedExchange}`, {\n      kind: SpanKind.PRODUCER,\n      attributes: {\n        ...channel.connection[CONNECTION_ATTRIBUTES],\n        [ATTR_MESSAGING_DESTINATION]: exchange,\n        [ATTR_MESSAGING_DESTINATION_KIND]:\n          MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n\n        [ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey,\n        [OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId,\n        [ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId,\n      },\n    });\n    const modifiedOptions = options ?? {};\n    modifiedOptions.headers = modifiedOptions.headers ?? {};\n\n    propagation.inject(\n      trace.setSpan(context.active(), span),\n      modifiedOptions.headers\n    );\n\n    return { span, modifiedOptions };\n  }\n\n  private endConsumerSpan(\n    message: InstrumentationMessage,\n    isRejected: boolean | null,\n    operation: EndOperation,\n    requeue: boolean | undefined\n  ) {\n    const storedSpan: Span | undefined = message[MESSAGE_STORED_SPAN];\n    if (!storedSpan) return;\n    if (isRejected !== false) {\n      storedSpan.setStatus({\n        code: SpanStatusCode.ERROR,\n        message:\n          operation !== EndOperation.ChannelClosed &&\n          operation !== EndOperation.ChannelError\n            ? `${operation} called on message${\n                requeue === true\n                  ? ' with requeue'\n                  : requeue === false\n                    ? ' without requeue'\n                    : ''\n              }`\n            : operation,\n      });\n    }\n    this.callConsumeEndHook(storedSpan, message, isRejected, operation);\n    storedSpan.end();\n    message[MESSAGE_STORED_SPAN] = undefined;\n  }\n\n  private endAllSpansOnChannel(\n    channel: InstrumentationConsumeChannel,\n    isRejected: boolean,\n    operation: EndOperation,\n    requeue: boolean | undefined\n  ) {\n    const spansNotEnded: { msg: Message }[] =\n      channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n    spansNotEnded.forEach(msgDetails => {\n      this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue);\n    });\n    channel[CHANNEL_SPANS_NOT_ENDED] = [];\n  }\n\n  private callConsumeEndHook(\n    span: Span,\n    msg: InstrumentationMessage,\n    rejected: boolean | null,\n    endOperation: EndOperation\n  ) {\n    const { consumeEndHook } = this.getConfig();\n    if (!consumeEndHook) return;\n\n    safeExecuteInTheMiddle(\n      () => consumeEndHook(span, { msg, rejected, endOperation }),\n      e => {\n        if (e) {\n          diag.error('amqplib instrumentation: consumerEndHook error', e);\n        }\n      },\n      true\n    );\n  }\n\n  private checkConsumeTimeoutOnChannel(channel: InstrumentationConsumeChannel) {\n    const currentTime = hrTime();\n    const spansNotEnded = channel[CHANNEL_SPANS_NOT_ENDED] ?? [];\n    let i: number;\n    const { consumeTimeoutMs } = this.getConfig();\n    for (i = 0; i < spansNotEnded.length; i++) {\n      const currMessage = spansNotEnded[i];\n      const timeFromConsume = hrTimeDuration(\n        currMessage.timeOfConsume,\n        currentTime\n      );\n      if (hrTimeToMilliseconds(timeFromConsume) < consumeTimeoutMs!) {\n        break;\n      }\n      this.endConsumerSpan(\n        currMessage.msg,\n        null,\n        EndOperation.InstrumentationTimeout,\n        true\n      );\n    }\n    spansNotEnded.splice(0, i);\n  }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport { AmqplibInstrumentation } from './amqplib';\nexport { DEFAULT_CONFIG, EndOperation } from './types';\nexport type {\n  AmqplibConsumeCustomAttributeFunction,\n  AmqplibConsumeEndCustomAttributeFunction,\n  AmqplibInstrumentationConfig,\n  AmqplibPublishConfirmCustomAttributeFunction,\n  AmqplibPublishCustomAttributeFunction,\n  AmqplibPublishOptions,\n  CommonMessageFields,\n  ConsumeEndInfo,\n  ConsumeInfo,\n  ConsumeMessage,\n  ConsumeMessageFields,\n  Message,\n  MessageFields,\n  MessageProperties,\n  PublishConfirmedInfo,\n  PublishInfo,\n} from './types';\n","import type { Span } from '@opentelemetry/api';\nimport { AmqplibInstrumentation, type AmqplibInstrumentationConfig } from '@opentelemetry/instrumentation-amqplib';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Amqplib';\n\nconst config: AmqplibInstrumentationConfig = {\n  consumeEndHook: (span: Span) => {\n    addOriginToSpan(span, 'auto.amqplib.otel.consumer');\n  },\n  publishHook: (span: Span) => {\n    addOriginToSpan(span, 'auto.amqplib.otel.publisher');\n  },\n};\n\nexport const instrumentAmqplib = generateInstrumentOnce(INTEGRATION_NAME, () => new AmqplibInstrumentation(config));\n\nconst _amqplibIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentAmqplib();\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [amqplib](https://www.npmjs.com/package/amqplib) library.\n *\n * For more information, see the [`amqplibIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/amqplib/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.amqplibIntegration()],\n * });\n * ```\n */\nexport const amqplibIntegration = defineIntegration(_amqplibIntegration);\n","export const INTEGRATION_NAME = 'VercelAI';\n","import type { InstrumentationConfig, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n  _INTERNAL_cleanupToolCallSpanContext,\n  _INTERNAL_getSpanContextForToolCallId,\n  addNonEnumerableProperty,\n  captureException,\n  getActiveSpan,\n  getClient,\n  handleCallbackErrors,\n  SDK_VERSION,\n  withScope,\n} from '@sentry/core';\nimport { INTEGRATION_NAME } from './constants';\nimport type { TelemetrySettings, VercelAiIntegration } from './types';\n\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <7'];\n\n// List of patched methods\n// From: https://sdk.vercel.ai/docs/ai-sdk-core/telemetry#collected-data\nconst INSTRUMENTED_METHODS = [\n  'generateText',\n  'streamText',\n  'generateObject',\n  'streamObject',\n  'embed',\n  'embedMany',\n  'rerank',\n] as const;\n\ninterface MethodFirstArg extends Record {\n  experimental_telemetry?: TelemetrySettings;\n}\n\ntype MethodArgs = [MethodFirstArg, ...unknown[]];\n\ntype PatchedModuleExports = Record<(typeof INSTRUMENTED_METHODS)[number], (...args: MethodArgs) => unknown> &\n  Record;\n\ninterface RecordingOptions {\n  recordInputs?: boolean;\n  recordOutputs?: boolean;\n}\n\ninterface ToolError {\n  type: 'tool-error' | 'tool-result' | 'tool-call';\n  toolCallId: string;\n  toolName: string;\n  input?: {\n    [key: string]: unknown;\n  };\n  error: Error;\n  dynamic?: boolean;\n}\n\nfunction isToolError(obj: unknown): obj is ToolError {\n  if (typeof obj !== 'object' || obj === null) {\n    return false;\n  }\n\n  const candidate = obj as Record;\n  return (\n    'type' in candidate &&\n    'error' in candidate &&\n    'toolName' in candidate &&\n    'toolCallId' in candidate &&\n    candidate.type === 'tool-error' &&\n    candidate.error instanceof Error\n  );\n}\n\n/**\n * Process tool call results: capture tool errors and clean up span context mappings.\n *\n * Error checking runs first (needs span context for linking), then cleanup removes all entries.\n * Tool errors are not rejected in Vercel AI V5 — they appear as metadata in the result content.\n */\nexport function processToolCallResults(result: unknown): void {\n  if (typeof result !== 'object' || result === null || !('content' in result)) {\n    return;\n  }\n\n  const resultObj = result as { content: Array };\n  if (!Array.isArray(resultObj.content)) {\n    return;\n  }\n\n  captureToolErrors(resultObj.content);\n  cleanupToolCallSpanContexts(resultObj.content);\n}\n\nfunction captureToolErrors(content: Array): void {\n  for (const item of content) {\n    if (!isToolError(item)) {\n      continue;\n    }\n\n    // Try to get the span context associated with this tool call ID\n    const spanContext = _INTERNAL_getSpanContextForToolCallId(item.toolCallId);\n\n    if (spanContext) {\n      // We have the span context, so link the error using span and trace IDs\n      withScope(scope => {\n        scope.setContext('trace', {\n          trace_id: spanContext.traceId,\n          span_id: spanContext.spanId,\n        });\n\n        scope.setTag('vercel.ai.tool.name', item.toolName);\n        scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n        scope.setLevel('error');\n\n        captureException(item.error, {\n          mechanism: {\n            type: 'auto.vercelai.otel',\n            handled: false,\n          },\n        });\n      });\n    } else {\n      // Fallback: capture without span linking\n      withScope(scope => {\n        scope.setTag('vercel.ai.tool.name', item.toolName);\n        scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n        scope.setLevel('error');\n\n        captureException(item.error, {\n          mechanism: {\n            type: 'auto.vercelai.otel',\n            handled: false,\n          },\n        });\n      });\n    }\n  }\n}\n\n/**\n * Remove span context entries for all completed tool calls in the content array.\n */\nexport function cleanupToolCallSpanContexts(content: Array): void {\n  for (const item of content) {\n    if (\n      typeof item === 'object' &&\n      item !== null &&\n      'toolCallId' in item &&\n      typeof (item as Record).toolCallId === 'string'\n    ) {\n      _INTERNAL_cleanupToolCallSpanContext((item as Record).toolCallId as string);\n    }\n  }\n}\n\n/**\n * Determines whether to record inputs and outputs for Vercel AI telemetry based on the configuration hierarchy.\n *\n * The order of precedence is:\n * 1. The vercel ai integration options\n * 2. The experimental_telemetry options in the vercel ai method calls\n * 3. When telemetry is explicitly enabled (isEnabled: true), default to recording\n * 4. Otherwise, use the sendDefaultPii option from client options\n */\nexport function determineRecordingSettings(\n  integrationRecordingOptions: RecordingOptions | undefined,\n  methodTelemetryOptions: RecordingOptions,\n  telemetryExplicitlyEnabled: boolean | undefined,\n  defaultRecordingEnabled: boolean,\n): { recordInputs: boolean; recordOutputs: boolean } {\n  const recordInputs =\n    integrationRecordingOptions?.recordInputs !== undefined\n      ? integrationRecordingOptions.recordInputs\n      : methodTelemetryOptions.recordInputs !== undefined\n        ? methodTelemetryOptions.recordInputs\n        : telemetryExplicitlyEnabled === true\n          ? true // When telemetry is explicitly enabled, default to recording inputs\n          : defaultRecordingEnabled;\n\n  const recordOutputs =\n    integrationRecordingOptions?.recordOutputs !== undefined\n      ? integrationRecordingOptions.recordOutputs\n      : methodTelemetryOptions.recordOutputs !== undefined\n        ? methodTelemetryOptions.recordOutputs\n        : telemetryExplicitlyEnabled === true\n          ? true // When telemetry is explicitly enabled, default to recording inputs\n          : defaultRecordingEnabled;\n\n  return { recordInputs, recordOutputs };\n}\n\n/**\n * This detects is added by the Sentry Vercel AI Integration to detect if the integration should\n * be enabled.\n *\n * It also patches the `ai` module to enable Vercel AI telemetry automatically for all methods.\n */\nexport class SentryVercelAiInstrumentation extends InstrumentationBase {\n  private _isPatched = false;\n  private _callbacks: (() => void)[] = [];\n\n  public constructor(config: InstrumentationConfig = {}) {\n    super('@sentry/instrumentation-vercel-ai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition('ai', SUPPORTED_VERSIONS, this._patch.bind(this));\n    return module;\n  }\n\n  /**\n   * Call the provided callback when the module is patched.\n   * If it has already been patched, the callback will be called immediately.\n   */\n  public callWhenPatched(callback: () => void): void {\n    if (this._isPatched) {\n      callback();\n    } else {\n      this._callbacks.push(callback);\n    }\n  }\n\n  /**\n   * Patches module exports to enable Vercel AI telemetry.\n   */\n  private _patch(moduleExports: PatchedModuleExports): unknown {\n    this._isPatched = true;\n\n    this._callbacks.forEach(callback => callback());\n    this._callbacks = [];\n\n    const generatePatch =  unknown>(originalMethod: T): T => {\n      return new Proxy(originalMethod, {\n        apply: (target, thisArg, args: MethodArgs) => {\n          const existingExperimentalTelemetry = args[0].experimental_telemetry || {};\n          const isEnabled = existingExperimentalTelemetry.isEnabled;\n\n          const client = getClient();\n          const integration = client?.getIntegrationByName(INTEGRATION_NAME);\n          const integrationOptions = integration?.options;\n          const shouldRecordInputsAndOutputs = integration ? Boolean(client?.getOptions().sendDefaultPii) : false;\n\n          const { recordInputs, recordOutputs } = determineRecordingSettings(\n            integrationOptions,\n            existingExperimentalTelemetry,\n            isEnabled,\n            shouldRecordInputsAndOutputs,\n          );\n\n          args[0].experimental_telemetry = {\n            ...existingExperimentalTelemetry,\n            isEnabled: isEnabled !== undefined ? isEnabled : true,\n            recordInputs,\n            recordOutputs,\n          };\n\n          return handleCallbackErrors(\n            () => Reflect.apply(target, thisArg, args),\n            error => {\n              // This error bubbles up to unhandledrejection handler (if not handled before),\n              // where we do not know the active span anymore\n              // So to circumvent this, we set the active span on the error object\n              // which is picked up by the unhandledrejection handler\n              if (error && typeof error === 'object') {\n                addNonEnumerableProperty(error, '_sentry_active_span', getActiveSpan());\n              }\n            },\n            () => {},\n            result => {\n              processToolCallResults(result);\n            },\n          );\n        },\n      });\n    };\n\n    // Is this an ESM module?\n    // https://tc39.es/ecma262/#sec-module-namespace-objects\n    if (Object.prototype.toString.call(moduleExports) === '[object Module]') {\n      // In ESM we take the usual route and just replace the exports we want to instrument\n      for (const method of INSTRUMENTED_METHODS) {\n        // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n        if (moduleExports[method] != null) {\n          moduleExports[method] = generatePatch(moduleExports[method]);\n        }\n      }\n\n      return moduleExports;\n    } else {\n      // In CJS we can't replace the exports in the original module because they\n      // don't have setters, so we create a new object with the same properties\n      const patchedModuleExports = INSTRUMENTED_METHODS.reduce((acc, curr) => {\n        // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n        if (moduleExports[curr] != null) {\n          acc[curr] = generatePatch(moduleExports[curr]);\n        }\n        return acc;\n      }, {} as PatchedModuleExports);\n\n      return { ...moduleExports, ...patchedModuleExports };\n    }\n  }\n}\n","import type { Client, IntegrationFn } from '@sentry/core';\nimport { addVercelAiProcessors, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, type modulesIntegration } from '@sentry/node-core';\nimport { INTEGRATION_NAME } from './constants';\nimport { SentryVercelAiInstrumentation } from './instrumentation';\nimport type { VercelAiOptions } from './types';\n\nexport const instrumentVercelAi = generateInstrumentOnce(INTEGRATION_NAME, () => new SentryVercelAiInstrumentation({}));\n\n/**\n * Determines if the integration should be forced based on environment and package availability.\n * Returns true if the 'ai' package is available.\n */\nfunction shouldForceIntegration(client: Client): boolean {\n  const modules = client.getIntegrationByName>('Modules');\n  return !!modules?.getModules?.()?.ai;\n}\n\nconst _vercelAIIntegration = ((options: VercelAiOptions = {}) => {\n  let instrumentation: undefined | SentryVercelAiInstrumentation;\n\n  return {\n    name: INTEGRATION_NAME,\n    options,\n    setupOnce() {\n      instrumentation = instrumentVercelAi();\n    },\n    afterAllSetup(client) {\n      // Auto-detect if we should force the integration when running with 'ai' package available\n      // Note that this can only be detected if the 'Modules' integration is available, and running in CJS mode\n      const shouldForce = options.force ?? shouldForceIntegration(client);\n\n      if (shouldForce) {\n        addVercelAiProcessors(client);\n      } else {\n        instrumentation?.callWhenPatched(() => addVercelAiProcessors(client));\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [ai](https://www.npmjs.com/package/ai) library.\n * This integration is not enabled by default, you need to manually add it.\n *\n * For more information, see the [`ai` documentation](https://sdk.vercel.ai/docs/ai-sdk-core/telemetry).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n *  integrations: [Sentry.vercelAIIntegration()],\n * });\n * ```\n *\n * This integration adds tracing support to all `ai` function calls.\n * You need to opt-in to collecting spans for a specific call,\n * you can do so by setting `experimental_telemetry.isEnabled` to `true` in the first argument of the function call.\n *\n * ```javascript\n * const result = await generateText({\n *   model: openai('gpt-4-turbo'),\n *   experimental_telemetry: { isEnabled: true },\n * });\n * ```\n *\n * If you want to collect inputs and outputs for a specific call, you must specifically opt-in to each\n * function call by setting `experimental_telemetry.recordInputs` and `experimental_telemetry.recordOutputs`\n * to `true`.\n *\n * ```javascript\n * const result = await generateText({\n *  model: openai('gpt-4-turbo'),\n *  experimental_telemetry: { isEnabled: true, recordInputs: true, recordOutputs: true },\n * });\n */\nexport const vercelAIIntegration = defineIntegration(_vercelAIIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { Integration, OpenAiClient, OpenAiOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  instrumentOpenAiClient,\n  OPENAI_INTEGRATION_NAME,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=4.0.0 <7'];\n\nexport interface OpenAiIntegration extends Integration {\n  options: OpenAiOptions;\n}\n\ntype OpenAiInstrumentationOptions = InstrumentationConfig & OpenAiOptions;\n\n/**\n * Represents the patched shape of the OpenAI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  OpenAI: abstract new (...args: unknown[]) => OpenAiClient;\n  AzureOpenAI?: abstract new (...args: unknown[]) => OpenAiClient;\n}\n\n/**\n * Sentry OpenAI instrumentation using OpenTelemetry.\n */\nexport class SentryOpenAiInstrumentation extends InstrumentationBase {\n  public constructor(config: OpenAiInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-openai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition('openai', supportedVersions, this._patch.bind(this));\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the OpenAI and AzureOpenAI client constructors.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    let result = exports;\n    result = this._patchClient(result, 'OpenAI');\n    result = this._patchClient(result, 'AzureOpenAI');\n    return result;\n  }\n\n  /**\n   * Patch logic applying instrumentation to the specified client constructor.\n   */\n  private _patchClient(exports: PatchedModuleExports, exportKey: 'OpenAI' | 'AzureOpenAI'): PatchedModuleExports {\n    const Original = exports[exportKey];\n    if (!Original) {\n      return exports;\n    }\n\n    const config = this.getConfig();\n\n    const WrappedOpenAI = function (this: unknown, ...args: unknown[]) {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(OPENAI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as OpenAiClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentOpenAiClient(instance as OpenAiClient, config);\n    } as unknown as abstract new (...args: unknown[]) => OpenAiClient;\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedOpenAI, Original);\n    Object.setPrototypeOf(WrappedOpenAI.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedOpenAI, key, descriptor);\n        }\n      }\n    }\n\n    // Constructor replacement - handle read-only properties\n    // The OpenAI property might have only a getter, so use defineProperty\n    try {\n      exports[exportKey] = WrappedOpenAI;\n    } catch {\n      // If direct assignment fails, override the property descriptor\n      Object.defineProperty(exports, exportKey, {\n        value: WrappedOpenAI,\n        writable: true,\n        configurable: true,\n        enumerable: true,\n      });\n    }\n\n    // Wrap the default export if it points to the original constructor\n    // Constructor replacement - handle read-only properties\n    // The OpenAI property might have only a getter, so use defineProperty\n    if (exports.default === Original) {\n      try {\n        exports.default = WrappedOpenAI;\n      } catch {\n        // If direct assignment fails, override the property descriptor\n        Object.defineProperty(exports, 'default', {\n          value: WrappedOpenAI,\n          writable: true,\n          configurable: true,\n          enumerable: true,\n        });\n      }\n    }\n    return exports;\n  }\n}\n","import type { IntegrationFn, OpenAiOptions } from '@sentry/core';\nimport { defineIntegration, OPENAI_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryOpenAiInstrumentation } from './instrumentation';\n\nexport const instrumentOpenAi = generateInstrumentOnce(\n  OPENAI_INTEGRATION_NAME,\n  options => new SentryOpenAiInstrumentation(options),\n);\n\nconst _openAiIntegration = ((options: OpenAiOptions = {}) => {\n  return {\n    name: OPENAI_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentOpenAi(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the OpenAI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments OpenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.openAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.openAIIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.openAIIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const openAIIntegration = defineIntegration(_openAiIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { AnthropicAiClient, AnthropicAiOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  instrumentAnthropicAiClient,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.19.2 <1.0.0'];\n\ntype AnthropicAiInstrumentationOptions = InstrumentationConfig & AnthropicAiOptions;\n\n/**\n * Represents the patched shape of the Anthropic AI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  Anthropic: abstract new (...args: unknown[]) => AnthropicAiClient;\n}\n\n/**\n * Sentry Anthropic AI instrumentation using OpenTelemetry.\n */\nexport class SentryAnthropicAiInstrumentation extends InstrumentationBase {\n  public constructor(config: AnthropicAiInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-anthropic-ai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@anthropic-ai/sdk',\n      supportedVersions,\n      this._patch.bind(this),\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the Anthropic AI client constructor.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    const Original = exports.Anthropic;\n\n    const config = this.getConfig();\n\n    const WrappedAnthropic = function (this: unknown, ...args: unknown[]) {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(ANTHROPIC_AI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as AnthropicAiClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentAnthropicAiClient(instance as AnthropicAiClient, config);\n    } as unknown as abstract new (...args: unknown[]) => AnthropicAiClient;\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedAnthropic, Original);\n    Object.setPrototypeOf(WrappedAnthropic.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedAnthropic, key, descriptor);\n        }\n      }\n    }\n\n    // Constructor replacement - handle read-only properties\n    // The Anthropic property might have only a getter, so use defineProperty\n    try {\n      exports.Anthropic = WrappedAnthropic;\n    } catch {\n      // If direct assignment fails, override the property descriptor\n      Object.defineProperty(exports, 'Anthropic', {\n        value: WrappedAnthropic,\n        writable: true,\n        configurable: true,\n        enumerable: true,\n      });\n    }\n\n    // Wrap the default export if it points to the original constructor\n    // Constructor replacement - handle read-only properties\n    // The Anthropic property might have only a getter, so use defineProperty\n    if (exports.default === Original) {\n      try {\n        exports.default = WrappedAnthropic;\n      } catch {\n        // If direct assignment fails, override the property descriptor\n        Object.defineProperty(exports, 'default', {\n          value: WrappedAnthropic,\n          writable: true,\n          configurable: true,\n          enumerable: true,\n        });\n      }\n    }\n    return exports;\n  }\n}\n","import type { AnthropicAiOptions, IntegrationFn } from '@sentry/core';\nimport { ANTHROPIC_AI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryAnthropicAiInstrumentation } from './instrumentation';\n\nexport const instrumentAnthropicAi = generateInstrumentOnce(\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  options => new SentryAnthropicAiInstrumentation(options),\n);\n\nconst _anthropicAIIntegration = ((options: AnthropicAiOptions = {}) => {\n  return {\n    name: ANTHROPIC_AI_INTEGRATION_NAME,\n    options,\n    setupOnce() {\n      instrumentAnthropicAi(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the Anthropic AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Anthropic AI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.anthropicAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.anthropicAIIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.anthropicAIIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const anthropicAIIntegration = defineIntegration(_anthropicAIIntegration);\n","import type { InstrumentationConfig, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationBase,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { GoogleGenAIClient, GoogleGenAIOptions } from '@sentry/core';\nimport {\n  _INTERNAL_shouldSkipAiProviderWrapping,\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  instrumentGoogleGenAIClient,\n  replaceExports,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.10.0 <2'];\n\n/**\n * Represents the patched shape of the Google GenAI module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  GoogleGenAI?: unknown;\n}\n\ntype GoogleGenAIInstrumentationOptions = GoogleGenAIOptions & InstrumentationConfig;\n\n/**\n * Sentry Google GenAI instrumentation using OpenTelemetry.\n */\nexport class SentryGoogleGenAiInstrumentation extends InstrumentationBase {\n  public constructor(config: GoogleGenAIInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-google-genai', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@google/genai',\n      supportedVersions,\n      exports => this._patch(exports),\n      exports => exports,\n      // In CJS, @google/genai re-exports from (dist/node/index.cjs) file.\n      // Patching only the root module sometimes misses the real implementation or\n      // gets overwritten when that file is loaded. We add a file-level patch so that\n      // _patch runs again on the concrete implementation\n      [\n        new InstrumentationNodeModuleFile(\n          '@google/genai/dist/node/index.cjs',\n          supportedVersions,\n          exports => this._patch(exports),\n          exports => exports,\n        ),\n      ],\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the Google GenAI client constructor.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    const Original = exports.GoogleGenAI;\n    const config = this.getConfig();\n\n    if (typeof Original !== 'function') {\n      return exports;\n    }\n\n    const WrappedGoogleGenAI = function (this: unknown, ...args: unknown[]): GoogleGenAIClient {\n      // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n      if (_INTERNAL_shouldSkipAiProviderWrapping(GOOGLE_GENAI_INTEGRATION_NAME)) {\n        return Reflect.construct(Original, args) as GoogleGenAIClient;\n      }\n\n      const instance = Reflect.construct(Original, args);\n\n      return instrumentGoogleGenAIClient(instance, config);\n    };\n\n    // Preserve static and prototype chains\n    Object.setPrototypeOf(WrappedGoogleGenAI, Original);\n    Object.setPrototypeOf(WrappedGoogleGenAI.prototype, Original.prototype);\n\n    for (const key of Object.getOwnPropertyNames(Original)) {\n      if (!['length', 'name', 'prototype'].includes(key)) {\n        const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n        if (descriptor) {\n          Object.defineProperty(WrappedGoogleGenAI, key, descriptor);\n        }\n      }\n    }\n\n    // Replace google genai exports with the wrapped constructor\n    replaceExports(exports, 'GoogleGenAI', WrappedGoogleGenAI);\n\n    return exports;\n  }\n}\n","import type { GoogleGenAIOptions, IntegrationFn } from '@sentry/core';\nimport { defineIntegration, GOOGLE_GENAI_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryGoogleGenAiInstrumentation } from './instrumentation';\n\nexport const instrumentGoogleGenAI = generateInstrumentOnce(\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  options => new SentryGoogleGenAiInstrumentation(options),\n);\n\nconst _googleGenAIIntegration = ((options: GoogleGenAIOptions = {}) => {\n  return {\n    name: GOOGLE_GENAI_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentGoogleGenAI(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the Google Generative AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Google GenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.googleGenAiIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.googleGenAiIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.googleGenAiIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n */\nexport const googleGenAIIntegration = defineIntegration(_googleGenAIIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { LangChainOptions } from '@sentry/core';\nimport {\n  _INTERNAL_skipAiProviderWrapping,\n  ANTHROPIC_AI_INTEGRATION_NAME,\n  createLangChainCallbackHandler,\n  GOOGLE_GENAI_INTEGRATION_NAME,\n  OPENAI_INTEGRATION_NAME,\n  SDK_VERSION,\n} from '@sentry/core';\n\nconst supportedVersions = ['>=0.1.0 <2.0.0'];\n\ntype LangChainInstrumentationOptions = InstrumentationConfig & LangChainOptions;\n\n/**\n * Represents the patched shape of LangChain provider package exports\n */\ninterface PatchedLangChainExports {\n  [key: string]: unknown;\n}\n\n/**\n * Augments a callback handler list with Sentry's handler if not already present\n */\nfunction augmentCallbackHandlers(handlers: unknown, sentryHandler: unknown): unknown {\n  // Handle null/undefined - return array with just our handler\n  if (!handlers) {\n    return [sentryHandler];\n  }\n\n  // If handlers is already an array\n  if (Array.isArray(handlers)) {\n    // Check if our handler is already in the list\n    if (handlers.includes(sentryHandler)) {\n      return handlers;\n    }\n    // Add our handler to the list\n    return [...handlers, sentryHandler];\n  }\n\n  // If it's a single handler object, convert to array\n  if (typeof handlers === 'object') {\n    return [handlers, sentryHandler];\n  }\n\n  // Unknown type - return original\n  return handlers;\n}\n\n/**\n * Wraps Runnable methods (invoke, stream, batch) to inject Sentry callbacks at request time\n * Uses a Proxy to intercept method calls and augment the options.callbacks\n */\nfunction wrapRunnableMethod(\n  originalMethod: (...args: unknown[]) => unknown,\n  sentryHandler: unknown,\n  _methodName: string,\n): (...args: unknown[]) => unknown {\n  return new Proxy(originalMethod, {\n    apply(target, thisArg, args: unknown[]): unknown {\n      // LangChain Runnable method signatures:\n      // invoke(input, options?) - options contains callbacks\n      // stream(input, options?) - options contains callbacks\n      // batch(inputs, options?) - options contains callbacks\n\n      // Options is typically the second argument\n      const optionsIndex = 1;\n      let options = args[optionsIndex] as Record | undefined;\n\n      // If options don't exist or aren't an object, create them\n      if (!options || typeof options !== 'object' || Array.isArray(options)) {\n        options = {};\n        args[optionsIndex] = options;\n      }\n\n      // Inject our callback handler into options.callbacks (request time callbacks)\n      const existingCallbacks = options.callbacks;\n      const augmentedCallbacks = augmentCallbackHandlers(existingCallbacks, sentryHandler);\n      options.callbacks = augmentedCallbacks;\n\n      // Call original method with augmented options\n      return Reflect.apply(target, thisArg, args);\n    },\n  }) as (...args: unknown[]) => unknown;\n}\n\n/**\n * Sentry LangChain instrumentation using OpenTelemetry.\n */\nexport class SentryLangChainInstrumentation extends InstrumentationBase {\n  public constructor(config: LangChainInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-langchain', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   * We patch the BaseChatModel class methods to inject callbacks\n   *\n   * We hook into provider packages (@langchain/anthropic, @langchain/openai, etc.)\n   * because @langchain/core is often bundled and not loaded as a separate module\n   */\n  public init(): InstrumentationModuleDefinition | InstrumentationModuleDefinition[] {\n    const modules: InstrumentationModuleDefinition[] = [];\n\n    // Hook into common LangChain provider packages\n    const providerPackages = [\n      '@langchain/anthropic',\n      '@langchain/openai',\n      '@langchain/google-genai',\n      '@langchain/mistralai',\n      '@langchain/google-vertexai',\n      '@langchain/groq',\n    ];\n\n    for (const packageName of providerPackages) {\n      // In CJS, LangChain packages re-export from dist/index.cjs files.\n      // Patching only the root module sometimes misses the real implementation or\n      // gets overwritten when that file is loaded. We add a file-level patch so that\n      // _patch runs again on the concrete implementation\n      modules.push(\n        new InstrumentationNodeModuleDefinition(\n          packageName,\n          supportedVersions,\n          this._patch.bind(this),\n          exports => exports,\n          [\n            new InstrumentationNodeModuleFile(\n              `${packageName}/dist/index.cjs`,\n              supportedVersions,\n              this._patch.bind(this),\n              exports => exports,\n            ),\n          ],\n        ),\n      );\n    }\n\n    // Hook into main 'langchain' package to catch initChatModel (v1+)\n    modules.push(\n      new InstrumentationNodeModuleDefinition(\n        'langchain',\n        supportedVersions,\n        this._patch.bind(this),\n        exports => exports,\n        [\n          // To catch the CJS build that contains ConfigurableModel / initChatModel for v1\n          new InstrumentationNodeModuleFile(\n            'langchain/dist/chat_models/universal.cjs',\n            supportedVersions,\n            this._patch.bind(this),\n            exports => exports,\n          ),\n        ],\n      ),\n    );\n\n    return modules;\n  }\n\n  /**\n   * Core patch logic - patches chat model methods to inject Sentry callbacks\n   * This is called when a LangChain provider package is loaded\n   */\n  private _patch(exports: PatchedLangChainExports): PatchedLangChainExports | void {\n    // Skip AI provider wrapping now that LangChain is actually being used\n    // This prevents duplicate spans from Anthropic/OpenAI/GoogleGenAI standalone integrations\n    _INTERNAL_skipAiProviderWrapping([\n      OPENAI_INTEGRATION_NAME,\n      ANTHROPIC_AI_INTEGRATION_NAME,\n      GOOGLE_GENAI_INTEGRATION_NAME,\n    ]);\n\n    // Create a shared handler instance\n    const sentryHandler = createLangChainCallbackHandler(this.getConfig());\n\n    // Patch Runnable methods to inject callbacks at request time\n    // This directly manipulates options.callbacks that LangChain uses\n    this._patchRunnableMethods(exports, sentryHandler);\n\n    return exports;\n  }\n\n  /**\n   * Patches chat model methods (invoke, stream, batch) to inject Sentry callbacks\n   * Finds a chat model class from the provider package exports and patches its prototype methods\n   */\n  private _patchRunnableMethods(exports: PatchedLangChainExports, sentryHandler: unknown): void {\n    // Known chat model class names for each provider\n    const knownChatModelNames = [\n      'ChatAnthropic',\n      'ChatOpenAI',\n      'ChatGoogleGenerativeAI',\n      'ChatMistralAI',\n      'ChatVertexAI',\n      'ChatGroq',\n      'ConfigurableModel',\n    ];\n\n    const exportsToPatch = (exports.universal_exports ?? exports) as Record;\n\n    const chatModelClass = Object.values(exportsToPatch).find(exp => {\n      return typeof exp === 'function' && knownChatModelNames.includes(exp.name);\n    }) as { prototype: unknown; name: string } | undefined;\n\n    if (!chatModelClass) {\n      return;\n    }\n\n    // Patch directly on chatModelClass.prototype\n    const targetProto = chatModelClass.prototype as Record;\n\n    // Skip if already patched (both file-level and module-level hooks resolve to the same prototype)\n    if (targetProto.__sentry_patched__) {\n      return;\n    }\n    targetProto.__sentry_patched__ = true;\n\n    // Patch the methods (invoke, stream, batch)\n    // All chat model instances will inherit these patched methods\n    const methodsToPatch = ['invoke', 'stream', 'batch'] as const;\n\n    for (const methodName of methodsToPatch) {\n      const method = targetProto[methodName];\n      if (typeof method === 'function') {\n        targetProto[methodName] = wrapRunnableMethod(\n          method as (...args: unknown[]) => unknown,\n          sentryHandler,\n          methodName,\n        );\n      }\n    }\n  }\n}\n","import type { IntegrationFn, LangChainOptions } from '@sentry/core';\nimport { defineIntegration, LANGCHAIN_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangChainInstrumentation } from './instrumentation';\n\nexport const instrumentLangChain = generateInstrumentOnce(\n  LANGCHAIN_INTEGRATION_NAME,\n  options => new SentryLangChainInstrumentation(options),\n);\n\nconst _langChainIntegration = ((options: LangChainOptions = {}) => {\n  return {\n    name: LANGCHAIN_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLangChain(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for LangChain.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangChain runnable instances\n * to capture telemetry data by injecting Sentry callback handlers into all LangChain calls.\n *\n * **Important:** This integration automatically skips wrapping the OpenAI, Anthropic, and Google GenAI\n * providers to prevent duplicate spans when using LangChain with these AI providers.\n * LangChain handles the instrumentation for all underlying AI providers.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * Sentry.init({\n *   integrations: [Sentry.langChainIntegration()],\n *   sendDefaultPii: true, // Enable to record inputs/outputs\n * });\n *\n * // LangChain calls are automatically instrumented\n * const model = new ChatOpenAI();\n * await model.invoke(\"What is the capital of France?\");\n * ```\n *\n * ## Manual Callback Handler\n *\n * You can also manually add the Sentry callback handler alongside other callbacks:\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * const sentryHandler = Sentry.createLangChainCallbackHandler({\n *   recordInputs: true,\n *   recordOutputs: true\n * });\n *\n * const model = new ChatOpenAI();\n * await model.invoke(\n *   \"What is the capital of France?\",\n *   { callbacks: [sentryHandler, myOtherCallback] }\n * );\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages/prompts (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.langChainIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.langChainIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n * ## Supported Events\n *\n * The integration captures the following LangChain lifecycle events:\n * - LLM/Chat Model: start, end, error\n * - Chain: start, end, error\n * - Tool: start, end, error\n *\n */\nexport const langChainIntegration = defineIntegration(_langChainIntegration);\n","import {\n  InstrumentationBase,\n  type InstrumentationConfig,\n  type InstrumentationModuleDefinition,\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n} from '@opentelemetry/instrumentation';\nimport type { LangGraphOptions } from '@sentry/core';\nimport { instrumentLangGraph, SDK_VERSION } from '@sentry/core';\n\nconst supportedVersions = ['>=0.0.0 <2.0.0'];\n\ntype LangGraphInstrumentationOptions = InstrumentationConfig & LangGraphOptions;\n\n/**\n * Represents the patched shape of the LangGraph module export.\n */\ninterface PatchedModuleExports {\n  [key: string]: unknown;\n  StateGraph?: abstract new (...args: unknown[]) => unknown;\n}\n\n/**\n * Sentry LangGraph instrumentation using OpenTelemetry.\n */\nexport class SentryLangGraphInstrumentation extends InstrumentationBase {\n  public constructor(config: LangGraphInstrumentationOptions = {}) {\n    super('@sentry/instrumentation-langgraph', SDK_VERSION, config);\n  }\n\n  /**\n   * Initializes the instrumentation by defining the modules to be patched.\n   */\n  public init(): InstrumentationModuleDefinition {\n    const module = new InstrumentationNodeModuleDefinition(\n      '@langchain/langgraph',\n      supportedVersions,\n      this._patch.bind(this),\n      exports => exports,\n      [\n        new InstrumentationNodeModuleFile(\n          /**\n           * In CJS, LangGraph packages re-export from dist/index.cjs files.\n           * Patching only the root module sometimes misses the real implementation or\n           * gets overwritten when that file is loaded. We add a file-level patch so that\n           * _patch runs again on the concrete implementation\n           */\n          '@langchain/langgraph/dist/index.cjs',\n          supportedVersions,\n          this._patch.bind(this),\n          exports => exports,\n        ),\n      ],\n    );\n    return module;\n  }\n\n  /**\n   * Core patch logic applying instrumentation to the LangGraph module.\n   */\n  private _patch(exports: PatchedModuleExports): PatchedModuleExports | void {\n    // Patch StateGraph.compile to instrument both compile() and invoke()\n    if (exports.StateGraph && typeof exports.StateGraph === 'function') {\n      instrumentLangGraph(\n        exports.StateGraph.prototype as { compile: (...args: unknown[]) => unknown },\n        this.getConfig(),\n      );\n    }\n\n    return exports;\n  }\n}\n","import type { IntegrationFn, LangGraphOptions } from '@sentry/core';\nimport { defineIntegration, LANGGRAPH_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangGraphInstrumentation } from './instrumentation';\n\nexport const instrumentLangGraph = generateInstrumentOnce(\n  LANGGRAPH_INTEGRATION_NAME,\n  options => new SentryLangGraphInstrumentation(options),\n);\n\nconst _langGraphIntegration = ((options: LangGraphOptions = {}) => {\n  return {\n    name: LANGGRAPH_INTEGRATION_NAME,\n    setupOnce() {\n      instrumentLangGraph(options);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for LangGraph.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangGraph StateGraph and compiled graph instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n *   integrations: [Sentry.langGraphIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n *   integrations: [\n *     Sentry.langGraphIntegration({\n *       recordInputs: true,\n *       recordOutputs: true\n *     })\n *   ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n *   sendDefaultPii: true,\n *   integrations: [\n *     Sentry.langGraphIntegration({\n *       recordInputs: false,\n *       recordOutputs: false\n *     })\n *   ],\n * });\n * ```\n *\n * ## Captured Operations\n *\n * The integration captures the following LangGraph operations:\n * - **Agent Creation** (`StateGraph.compile()`) - Creates a `gen_ai.create_agent` span\n * - **Agent Invocation** (`CompiledGraph.invoke()`) - Creates a `gen_ai.invoke_agent` span\n *\n * ## Captured Data\n *\n * When `recordInputs` and `recordOutputs` are enabled, the integration captures:\n * - Input messages from the graph state\n * - Output messages and LLM responses\n * - Tool calls made during agent execution\n * - Agent and graph names\n * - Available tools configured in the graph\n *\n */\nexport const langGraphIntegration = defineIntegration(_langGraphIntegration);\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the LaunchDarkly integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const launchDarklyIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The launchDarklyIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'LaunchDarkly',\n  };\n});\n\n/**\n * This is a shim for the LaunchDarkly flag used handler.\n */\nexport function buildLaunchDarklyFlagUsedHandlerShim(): unknown {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'sentry-flag-auditor',\n    type: 'flag-used',\n    synchronous: true,\n    method: () => null,\n  };\n}\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the OpenFeature integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const openFeatureIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The openFeatureIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'OpenFeature',\n  };\n});\n\n/**\n * This is a shim for the OpenFeature integration hook.\n */\nexport class OpenFeatureIntegrationHookShim {\n  /**\n   *\n   */\n  public constructor() {\n    if (!isBrowser()) {\n      consoleSandbox(() => {\n        // eslint-disable-next-line no-console\n        console.warn('The OpenFeatureIntegrationHook can only be used in the browser.');\n      });\n    }\n  }\n\n  /**\n   *\n   */\n  public after(): void {\n    // No-op\n  }\n\n  /**\n   *\n   */\n  public error(): void {\n    // No-op\n  }\n}\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the Statsig integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const statsigIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The statsigIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'Statsig',\n  };\n});\n","import { consoleSandbox, defineIntegration, isBrowser } from '@sentry/core';\n\n/**\n * This is a shim for the Unleash integration.\n * We need this in order to not throw runtime errors when accidentally importing this on the server through a meta framework like Next.js.\n */\nexport const unleashIntegrationShim = defineIntegration((_options?: unknown) => {\n  if (!isBrowser()) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn('The unleashIntegration() can only be used in the browser.');\n    });\n  }\n\n  return {\n    name: 'Unleash',\n  };\n});\n","import { growthbookIntegration as coreGrowthbookIntegration } from '@sentry/core';\n\n/**\n * Re-export the core GrowthBook integration for Node.js usage.\n * The core integration is runtime-agnostic and works in both browser and Node environments.\n */\nexport const growthbookIntegrationShim = coreGrowthbookIntegration;\n","import * as net from 'node:net';\nimport type { Span, Tracer } from '@opentelemetry/api';\nimport { context, diag, SpanKind, trace } from '@opentelemetry/api';\nimport {\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n  ATTR_DB_COLLECTION_NAME,\n  ATTR_DB_NAMESPACE,\n  ATTR_DB_OPERATION_NAME,\n  ATTR_DB_SYSTEM_NAME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes } from '@sentry/core';\nimport type { FirebaseInstrumentation } from '../firebaseInstrumentation';\nimport type {\n  AddDocType,\n  CollectionReference,\n  DeleteDocType,\n  DocumentData,\n  DocumentReference,\n  FirebaseApp,\n  FirebaseInstrumentationConfig,\n  FirebaseOptions,\n  FirestoreSettings,\n  FirestoreSpanCreationHook,\n  GetDocsType,\n  PartialWithFieldValue,\n  QuerySnapshot,\n  SetDocType,\n  SetOptions,\n  WithFieldValue,\n} from '../types';\n\n// Inline minimal types used from `shimmer` to avoid importing shimmer's types directly.\n// We only need the shape for `wrap` and `unwrap` used in this file.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ShimmerWrap = (target: any, name: string, wrapper: (...args: any[]) => any) => void;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ShimmerUnwrap = (target: any, name: string) => void;\n\n/**\n *\n * @param tracer - Opentelemetry Tracer\n * @param firestoreSupportedVersions - supported version of firebase/firestore\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation wrap function\n */\nexport function patchFirestore(\n  tracer: Tracer,\n  firestoreSupportedVersions: string[],\n  wrap: ShimmerWrap,\n  unwrap: ShimmerUnwrap,\n  config: FirebaseInstrumentationConfig,\n): InstrumentationNodeModuleDefinition {\n  const defaultFirestoreSpanCreationHook: FirestoreSpanCreationHook = () => {};\n\n  let firestoreSpanCreationHook: FirestoreSpanCreationHook = defaultFirestoreSpanCreationHook;\n  const configFirestoreSpanCreationHook = config.firestoreSpanCreationHook;\n\n  if (typeof configFirestoreSpanCreationHook === 'function') {\n    firestoreSpanCreationHook = (span: Span) => {\n      safeExecuteInTheMiddle(\n        () => configFirestoreSpanCreationHook(span),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n\n  const moduleFirestoreCJS = new InstrumentationNodeModuleDefinition(\n    '@firebase/firestore',\n    firestoreSupportedVersions,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (moduleExports: any) => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n  );\n  const files: string[] = [\n    '@firebase/firestore/dist/lite/index.node.cjs.js',\n    '@firebase/firestore/dist/lite/index.node.mjs.js',\n    '@firebase/firestore/dist/lite/index.rn.esm2017.js',\n    '@firebase/firestore/dist/lite/index.cjs.js',\n  ];\n\n  for (const file of files) {\n    moduleFirestoreCJS.files.push(\n      new InstrumentationNodeModuleFile(\n        file,\n        firestoreSupportedVersions,\n        moduleExports => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n        moduleExports => unwrapMethods(moduleExports, unwrap),\n      ),\n    );\n  }\n\n  return moduleFirestoreCJS;\n}\n\nfunction wrapMethods(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  moduleExports: any,\n  wrap: ShimmerWrap,\n  unwrap: ShimmerUnwrap,\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  unwrapMethods(moduleExports, unwrap);\n\n  wrap(moduleExports, 'addDoc', patchAddDoc(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'getDocs', patchGetDocs(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'setDoc', patchSetDoc(tracer, firestoreSpanCreationHook));\n  wrap(moduleExports, 'deleteDoc', patchDeleteDoc(tracer, firestoreSpanCreationHook));\n\n  return moduleExports;\n}\n\nfunction unwrapMethods(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  moduleExports: any,\n  unwrap: ShimmerUnwrap,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  for (const method of ['addDoc', 'getDocs', 'setDoc', 'deleteDoc']) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    if (isWrapped(moduleExports[method])) {\n      unwrap(moduleExports, method);\n    }\n  }\n  return moduleExports;\n}\n\nfunction patchAddDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: AddDocType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: CollectionReference,\n  data: WithFieldValue,\n) => Promise> {\n  return function addDoc(original: AddDocType) {\n    return function (\n      reference: CollectionReference,\n      data: WithFieldValue,\n    ): Promise> {\n      const span = startDBSpan(tracer, 'addDoc', reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>>(span, () => {\n        return original(reference, data);\n      });\n    };\n  };\n}\n\nfunction patchDeleteDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: DeleteDocType,\n) => (this: FirebaseInstrumentation, reference: DocumentReference) => Promise {\n  return function deleteDoc(original: DeleteDocType) {\n    return function (reference: DocumentReference): Promise {\n      const span = startDBSpan(tracer, 'deleteDoc', reference.parent || reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>(span, () => {\n        return original(reference);\n      });\n    };\n  };\n}\n\nfunction patchGetDocs(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: GetDocsType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: CollectionReference,\n) => Promise> {\n  return function getDocs(original: GetDocsType) {\n    return function (\n      reference: CollectionReference,\n    ): Promise> {\n      const span = startDBSpan(tracer, 'getDocs', reference);\n      firestoreSpanCreationHook(span);\n      return executeContextWithSpan>>(span, () => {\n        return original(reference);\n      });\n    };\n  };\n}\n\nfunction patchSetDoc(\n  tracer: Tracer,\n  firestoreSpanCreationHook: FirestoreSpanCreationHook,\n): (\n  original: SetDocType,\n) => (\n  this: FirebaseInstrumentation,\n  reference: DocumentReference,\n  data: WithFieldValue & PartialWithFieldValue,\n  options?: SetOptions,\n) => Promise {\n  return function setDoc(original: SetDocType) {\n    return function (\n      reference: DocumentReference,\n      data: WithFieldValue & PartialWithFieldValue,\n      options?: SetOptions,\n    ): Promise {\n      const span = startDBSpan(tracer, 'setDoc', reference.parent || reference);\n      firestoreSpanCreationHook(span);\n\n      return executeContextWithSpan>(span, () => {\n        return typeof options !== 'undefined' ? original(reference, data, options) : original(reference, data);\n      });\n    };\n  };\n}\n\nfunction executeContextWithSpan(span: Span, callback: () => T): T {\n  return context.with(trace.setSpan(context.active(), span), () => {\n    return safeExecuteInTheMiddle(\n      (): T => {\n        return callback();\n      },\n      err => {\n        if (err) {\n          span.recordException(err);\n        }\n        span.end();\n      },\n      true,\n    );\n  });\n}\n\nfunction startDBSpan(\n  tracer: Tracer,\n  spanName: string,\n  reference: CollectionReference | DocumentReference,\n): Span {\n  const span = tracer.startSpan(`${spanName} ${reference.path}`, { kind: SpanKind.CLIENT });\n  addAttributes(span, reference);\n  span.setAttribute(ATTR_DB_OPERATION_NAME, spanName);\n  return span;\n}\n\n/**\n * Gets the server address and port attributes from the Firestore settings.\n * It's best effort to extract the address and port from the settings, especially for IPv6.\n * @param span - The span to set attributes on.\n * @param settings - The Firestore settings containing host information.\n */\nexport function getPortAndAddress(settings: FirestoreSettings): {\n  address?: string;\n  port?: number;\n} {\n  let address: string | undefined;\n  let port: string | undefined;\n\n  if (typeof settings.host === 'string') {\n    if (settings.host.startsWith('[')) {\n      // IPv6 addresses can be enclosed in square brackets, e.g., [2001:db8::1]:8080\n      if (settings.host.endsWith(']')) {\n        // IPv6 with square brackets without port\n        address = settings.host.replace(/^\\[|\\]$/g, '');\n      } else if (settings.host.includes(']:')) {\n        // IPv6 with square brackets with port\n        const lastColonIndex = settings.host.lastIndexOf(':');\n        if (lastColonIndex !== -1) {\n          address = settings.host.slice(1, lastColonIndex).replace(/^\\[|\\]$/g, '');\n          port = settings.host.slice(lastColonIndex + 1);\n        }\n      }\n    } else {\n      // IPv4 or IPv6 without square brackets\n      // If it's an IPv6 address without square brackets, we assume it does not have a port.\n      if (net.isIPv6(settings.host)) {\n        address = settings.host;\n      }\n      // If it's an IPv4 address, we can extract the port if it exists.\n      else {\n        const lastColonIndex = settings.host.lastIndexOf(':');\n        if (lastColonIndex !== -1) {\n          address = settings.host.slice(0, lastColonIndex);\n          port = settings.host.slice(lastColonIndex + 1);\n        } else {\n          address = settings.host;\n        }\n      }\n    }\n  }\n  return {\n    address: address,\n    port: port ? parseInt(port, 10) : undefined,\n  };\n}\n\nfunction addAttributes(\n  span: Span,\n  reference: CollectionReference | DocumentReference,\n): void {\n  const firestoreApp: FirebaseApp = reference.firestore.app;\n  const firestoreOptions: FirebaseOptions = firestoreApp.options;\n  const json: { settings?: FirestoreSettings } = reference.firestore.toJSON() || {};\n  const settings: FirestoreSettings = json.settings || {};\n\n  const attributes: SpanAttributes = {\n    [ATTR_DB_COLLECTION_NAME]: reference.path,\n    [ATTR_DB_NAMESPACE]: firestoreApp.name,\n    [ATTR_DB_SYSTEM_NAME]: 'firebase.firestore',\n    'firebase.firestore.type': reference.type,\n    'firebase.firestore.options.projectId': firestoreOptions.projectId,\n    'firebase.firestore.options.appId': firestoreOptions.appId,\n    'firebase.firestore.options.messagingSenderId': firestoreOptions.messagingSenderId,\n    'firebase.firestore.options.storageBucket': firestoreOptions.storageBucket,\n  };\n\n  const { address, port } = getPortAndAddress(settings);\n\n  if (address) {\n    attributes[ATTR_SERVER_ADDRESS] = address;\n  }\n  if (port) {\n    attributes[ATTR_SERVER_PORT] = port;\n  }\n\n  span.setAttributes(attributes);\n}\n","import type { Span, Tracer } from '@opentelemetry/api';\nimport { context, diag, SpanKind, trace } from '@opentelemetry/api';\nimport type { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport {\n  InstrumentationNodeModuleDefinition,\n  InstrumentationNodeModuleFile,\n  isWrapped,\n  safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport type { SpanAttributes } from '@sentry/core';\nimport type { FirebaseInstrumentation } from '../firebaseInstrumentation';\nimport type {\n  AvailableFirebaseFunctions,\n  FirebaseFunctions,\n  FirebaseInstrumentationConfig,\n  OverloadedParameters,\n  RequestHook,\n  ResponseHook,\n} from '../types';\n\n/**\n * Patches Firebase Functions v2 to add OpenTelemetry instrumentation\n * @param tracer - Opentelemetry Tracer\n * @param functionsSupportedVersions - supported versions of firebase-functions\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation unwrap function\n * @param config - Firebase instrumentation config\n */\nexport function patchFunctions(\n  tracer: Tracer,\n  functionsSupportedVersions: string[],\n  wrap: InstrumentationBase['_wrap'],\n  unwrap: InstrumentationBase['_unwrap'],\n  config: FirebaseInstrumentationConfig,\n): InstrumentationNodeModuleDefinition {\n  let requestHook: RequestHook = () => {};\n  let responseHook: ResponseHook = () => {};\n  const errorHook = config.functions?.errorHook;\n  const configRequestHook = config.functions?.requestHook;\n  const configResponseHook = config.functions?.responseHook;\n\n  if (typeof configResponseHook === 'function') {\n    responseHook = (span: Span, err: unknown) => {\n      safeExecuteInTheMiddle(\n        () => configResponseHook(span, err),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n  if (typeof configRequestHook === 'function') {\n    requestHook = (span: Span) => {\n      safeExecuteInTheMiddle(\n        () => configRequestHook(span),\n        error => {\n          if (!error) {\n            return;\n          }\n          diag.error(error?.message);\n        },\n        true,\n      );\n    };\n  }\n\n  const moduleFunctionsCJS = new InstrumentationNodeModuleDefinition('firebase-functions', functionsSupportedVersions);\n  const modulesToInstrument = [\n    { name: 'firebase-functions/lib/v2/providers/https.js', triggerType: 'function' },\n    { name: 'firebase-functions/lib/v2/providers/firestore.js', triggerType: 'firestore' },\n    { name: 'firebase-functions/lib/v2/providers/scheduler.js', triggerType: 'scheduler' },\n    { name: 'firebase-functions/lib/v2/storage.js', triggerType: 'storage' },\n  ] as const;\n\n  modulesToInstrument.forEach(({ name, triggerType }) => {\n    moduleFunctionsCJS.files.push(\n      new InstrumentationNodeModuleFile(\n        name,\n        functionsSupportedVersions,\n        moduleExports =>\n          wrapCommonFunctions(\n            moduleExports,\n            wrap,\n            unwrap,\n            tracer,\n            { requestHook, responseHook, errorHook },\n            triggerType,\n          ),\n        moduleExports => unwrapCommonFunctions(moduleExports, unwrap),\n      ),\n    );\n  });\n\n  return moduleFunctionsCJS;\n}\n\n/**\n * Patches Cloud Functions for Firebase (v2) to add OpenTelemetry instrumentation\n *\n * @param tracer - Opentelemetry Tracer\n * @param functionsConfig - Firebase instrumentation config\n * @param triggerType - Type of trigger\n * @returns A function that patches the function\n */\nexport function patchV2Functions(\n  tracer: Tracer,\n  functionsConfig: FirebaseInstrumentationConfig['functions'],\n  triggerType: string,\n): (original: T) => (...args: OverloadedParameters) => ReturnType {\n  return function v2FunctionsWrapper(original: T): (...args: OverloadedParameters) => ReturnType {\n    return function (this: FirebaseInstrumentation, ...args: OverloadedParameters): ReturnType {\n      const handler = typeof args[0] === 'function' ? args[0] : args[1];\n      const documentOrOptions = typeof args[0] === 'function' ? undefined : args[0];\n\n      if (!handler) {\n        return original.call(this, ...args);\n      }\n\n      const wrappedHandler = async function (this: unknown, ...handlerArgs: unknown[]): Promise {\n        const functionName = process.env.FUNCTION_TARGET || process.env.K_SERVICE || 'unknown';\n        const span = tracer.startSpan(`firebase.function.${triggerType}`, {\n          kind: SpanKind.SERVER,\n        });\n\n        const attributes: SpanAttributes = {\n          'faas.name': functionName,\n          'faas.trigger': triggerType,\n          'faas.provider': 'firebase',\n        };\n\n        if (process.env.GCLOUD_PROJECT) {\n          attributes['cloud.project_id'] = process.env.GCLOUD_PROJECT;\n        }\n\n        if (process.env.EVENTARC_CLOUD_EVENT_SOURCE) {\n          attributes['cloud.event_source'] = process.env.EVENTARC_CLOUD_EVENT_SOURCE;\n        }\n\n        span.setAttributes(attributes);\n        functionsConfig?.requestHook?.(span);\n\n        // Can be changed to safeExecuteInTheMiddleAsync once following is merged and released\n        // https://github.com/open-telemetry/opentelemetry-js/pull/6032\n        return context.with(trace.setSpan(context.active(), span), async () => {\n          let error: Error | undefined;\n          let result: T | undefined;\n\n          try {\n            result = await handler.apply(this, handlerArgs);\n          } catch (e) {\n            error = e as Error;\n          }\n\n          functionsConfig?.responseHook?.(span, error);\n\n          if (error) {\n            span.recordException(error);\n          }\n\n          span.end();\n\n          if (error) {\n            await functionsConfig?.errorHook?.(span, error);\n            throw error;\n          }\n\n          return result;\n        });\n      };\n\n      if (documentOrOptions) {\n        return original.call(this, documentOrOptions, wrappedHandler);\n      } else {\n        return original.call(this, wrappedHandler);\n      }\n    };\n  };\n}\n\nfunction wrapCommonFunctions(\n  moduleExports: AvailableFirebaseFunctions,\n  wrap: InstrumentationBase['_wrap'],\n  unwrap: InstrumentationBase['_unwrap'],\n  tracer: Tracer,\n  functionsConfig: FirebaseInstrumentationConfig['functions'],\n  triggerType: 'function' | 'firestore' | 'scheduler' | 'storage',\n): AvailableFirebaseFunctions {\n  unwrapCommonFunctions(moduleExports, unwrap);\n\n  switch (triggerType) {\n    case 'function':\n      wrap(moduleExports, 'onRequest', patchV2Functions(tracer, functionsConfig, 'http.request'));\n      wrap(moduleExports, 'onCall', patchV2Functions(tracer, functionsConfig, 'http.call'));\n      break;\n\n    case 'firestore':\n      wrap(moduleExports, 'onDocumentCreated', patchV2Functions(tracer, functionsConfig, 'firestore.document.created'));\n      wrap(moduleExports, 'onDocumentUpdated', patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'));\n      wrap(moduleExports, 'onDocumentDeleted', patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'));\n      wrap(moduleExports, 'onDocumentWritten', patchV2Functions(tracer, functionsConfig, 'firestore.document.written'));\n      wrap(\n        moduleExports,\n        'onDocumentCreatedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.created'),\n      );\n      wrap(\n        moduleExports,\n        'onDocumentUpdatedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'),\n      );\n\n      wrap(\n        moduleExports,\n        'onDocumentDeletedWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'),\n      );\n\n      wrap(\n        moduleExports,\n        'onDocumentWrittenWithAuthContext',\n        patchV2Functions(tracer, functionsConfig, 'firestore.document.written'),\n      );\n      break;\n\n    case 'scheduler':\n      wrap(moduleExports, 'onSchedule', patchV2Functions(tracer, functionsConfig, 'scheduler.scheduled'));\n      break;\n\n    case 'storage':\n      wrap(moduleExports, 'onObjectFinalized', patchV2Functions(tracer, functionsConfig, 'storage.object.finalized'));\n      wrap(moduleExports, 'onObjectArchived', patchV2Functions(tracer, functionsConfig, 'storage.object.archived'));\n      wrap(moduleExports, 'onObjectDeleted', patchV2Functions(tracer, functionsConfig, 'storage.object.deleted'));\n      wrap(\n        moduleExports,\n        'onObjectMetadataUpdated',\n        patchV2Functions(tracer, functionsConfig, 'storage.object.metadataUpdated'),\n      );\n      break;\n  }\n\n  return moduleExports;\n}\n\nfunction unwrapCommonFunctions(\n  moduleExports: AvailableFirebaseFunctions,\n  unwrap: InstrumentationBase['_unwrap'],\n): AvailableFirebaseFunctions {\n  const methods: (keyof AvailableFirebaseFunctions)[] = [\n    'onSchedule',\n    'onRequest',\n    'onCall',\n    'onObjectFinalized',\n    'onObjectArchived',\n    'onObjectDeleted',\n    'onObjectMetadataUpdated',\n    'onDocumentCreated',\n    'onDocumentUpdated',\n    'onDocumentDeleted',\n    'onDocumentWritten',\n    'onDocumentCreatedWithAuthContext',\n    'onDocumentUpdatedWithAuthContext',\n    'onDocumentDeletedWithAuthContext',\n    'onDocumentWrittenWithAuthContext',\n  ];\n\n  for (const method of methods) {\n    if (isWrapped(moduleExports[method])) {\n      unwrap(moduleExports, method);\n    }\n  }\n  return moduleExports;\n}\n","import { InstrumentationBase, type InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION } from '@sentry/core';\nimport { patchFirestore } from './patches/firestore';\nimport { patchFunctions } from './patches/functions';\nimport type { FirebaseInstrumentationConfig } from './types';\n\nconst DefaultFirebaseInstrumentationConfig: FirebaseInstrumentationConfig = {};\nconst firestoreSupportedVersions = ['>=3.0.0 <5']; // firebase 9+\nconst functionsSupportedVersions = ['>=6.0.0 <7']; // firebase-functions v2\n\n/**\n * Instrumentation for Firebase services, specifically Firestore.\n */\nexport class FirebaseInstrumentation extends InstrumentationBase {\n  public constructor(config: FirebaseInstrumentationConfig = DefaultFirebaseInstrumentationConfig) {\n    super('@sentry/instrumentation-firebase', SDK_VERSION, config);\n  }\n\n  /**\n   * sets config\n   * @param config\n   */\n  public override setConfig(config: FirebaseInstrumentationConfig = {}): void {\n    super.setConfig({ ...DefaultFirebaseInstrumentationConfig, ...config });\n  }\n\n  /**\n   *\n   * @protected\n   */\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  protected init(): InstrumentationNodeModuleDefinition | InstrumentationNodeModuleDefinition[] | void {\n    const modules: InstrumentationNodeModuleDefinition[] = [];\n\n    modules.push(patchFirestore(this.tracer, firestoreSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n    modules.push(patchFunctions(this.tracer, functionsSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n\n    return modules;\n  }\n}\n","import type { IntegrationFn } from '@sentry/core';\nimport { captureException, defineIntegration, flush, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '@sentry/core';\nimport { addOriginToSpan, generateInstrumentOnce } from '@sentry/node-core';\nimport { FirebaseInstrumentation, type FirebaseInstrumentationConfig } from './otel';\n\nconst INTEGRATION_NAME = 'Firebase';\n\nconst config: FirebaseInstrumentationConfig = {\n  firestoreSpanCreationHook: span => {\n    addOriginToSpan(span, 'auto.firebase.otel.firestore');\n\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'db.query');\n  },\n  functions: {\n    requestHook: span => {\n      addOriginToSpan(span, 'auto.firebase.otel.functions');\n\n      span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.request');\n    },\n    errorHook: async (_, error) => {\n      if (error) {\n        captureException(error, {\n          mechanism: {\n            type: 'auto.firebase.otel.functions',\n            handled: false,\n          },\n        });\n        await flush(2000);\n      }\n    },\n  },\n};\n\nexport const instrumentFirebase = generateInstrumentOnce(INTEGRATION_NAME, () => new FirebaseInstrumentation(config));\n\nconst _firebaseIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      instrumentFirebase();\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const firebaseIntegration = defineIntegration(_firebaseIntegration);\n","import type { Integration } from '@sentry/core';\nimport { instrumentOtelHttp, instrumentSentryHttp } from '../http';\nimport { amqplibIntegration, instrumentAmqplib } from './amqplib';\nimport { anthropicAIIntegration, instrumentAnthropicAi } from './anthropic-ai';\nimport { connectIntegration, instrumentConnect } from './connect';\nimport { expressIntegration, instrumentExpress } from './express';\nimport { fastifyIntegration, instrumentFastify, instrumentFastifyV3 } from './fastify';\nimport { firebaseIntegration, instrumentFirebase } from './firebase';\nimport { genericPoolIntegration, instrumentGenericPool } from './genericPool';\nimport { googleGenAIIntegration, instrumentGoogleGenAI } from './google-genai';\nimport { graphqlIntegration, instrumentGraphql } from './graphql';\nimport { hapiIntegration, instrumentHapi } from './hapi';\nimport { honoIntegration, instrumentHono } from './hono';\nimport { instrumentKafka, kafkaIntegration } from './kafka';\nimport { instrumentKoa, koaIntegration } from './koa';\nimport { instrumentLangChain, langChainIntegration } from './langchain';\nimport { instrumentLangGraph, langGraphIntegration } from './langgraph';\nimport { instrumentLruMemoizer, lruMemoizerIntegration } from './lrumemoizer';\nimport { instrumentMongo, mongoIntegration } from './mongo';\nimport { instrumentMongoose, mongooseIntegration } from './mongoose';\nimport { instrumentMysql, mysqlIntegration } from './mysql';\nimport { instrumentMysql2, mysql2Integration } from './mysql2';\nimport { instrumentOpenAi, openAIIntegration } from './openai';\nimport { instrumentPostgres, postgresIntegration } from './postgres';\nimport { instrumentPostgresJs, postgresJsIntegration } from './postgresjs';\nimport { prismaIntegration } from './prisma';\nimport { instrumentRedis, redisIntegration } from './redis';\nimport { instrumentTedious, tediousIntegration } from './tedious';\nimport { instrumentVercelAi, vercelAIIntegration } from './vercelai';\n\n/**\n * With OTEL, all performance integrations will be added, as OTEL only initializes them when the patched package is actually required.\n */\nexport function getAutoPerformanceIntegrations(): Integration[] {\n  return [\n    expressIntegration(),\n    fastifyIntegration(),\n    graphqlIntegration(),\n    honoIntegration(),\n    mongoIntegration(),\n    mongooseIntegration(),\n    mysqlIntegration(),\n    mysql2Integration(),\n    redisIntegration(),\n    postgresIntegration(),\n    prismaIntegration(),\n    hapiIntegration(),\n    koaIntegration(),\n    connectIntegration(),\n    tediousIntegration(),\n    genericPoolIntegration(),\n    kafkaIntegration(),\n    amqplibIntegration(),\n    lruMemoizerIntegration(),\n    // AI providers\n    // LangChain must come first to disable AI provider integrations before they instrument\n    langChainIntegration(),\n    langGraphIntegration(),\n    vercelAIIntegration(),\n    openAIIntegration(),\n    anthropicAIIntegration(),\n    googleGenAIIntegration(),\n    postgresJsIntegration(),\n    firebaseIntegration(),\n  ];\n}\n\n/**\n * Get a list of methods to instrument OTEL, when preload instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getOpenTelemetryInstrumentationToPreload(): (((options?: any) => void) & { id: string })[] {\n  return [\n    instrumentSentryHttp,\n    instrumentOtelHttp,\n    instrumentExpress,\n    instrumentConnect,\n    instrumentFastify,\n    instrumentFastifyV3,\n    instrumentHapi,\n    instrumentHono,\n    instrumentKafka,\n    instrumentKoa,\n    instrumentLruMemoizer,\n    instrumentMongo,\n    instrumentMongoose,\n    instrumentMysql,\n    instrumentMysql2,\n    instrumentPostgres,\n    instrumentHapi,\n    instrumentGraphql,\n    instrumentRedis,\n    instrumentTedious,\n    instrumentGenericPool,\n    instrumentAmqplib,\n    instrumentLangChain,\n    instrumentVercelAi,\n    instrumentOpenAi,\n    instrumentPostgresJs,\n    instrumentFirebase,\n    instrumentAnthropicAi,\n    instrumentGoogleGenAI,\n    instrumentLangGraph,\n  ];\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport type { Resource } from './Resource';\nimport { emptyResource, resourceFromDetectedResource } from './ResourceImpl';\nimport type { ResourceDetectionConfig } from './config';\n\n/**\n * Runs all resource detectors and returns the results merged into a single Resource.\n *\n * @param config Configuration for resource detection\n */\nexport const detectResources = (\n  config: ResourceDetectionConfig = {}\n): Resource => {\n  const resources: Resource[] = (config.detectors || []).map(d => {\n    try {\n      const resource = resourceFromDetectedResource(d.detect(config));\n      diag.debug(`${d.constructor.name} found resource.`, resource);\n      return resource;\n    } catch (e) {\n      diag.debug(`${d.constructor.name} failed: ${e.message}`);\n      return emptyResource();\n    }\n  });\n\n  return resources.reduce(\n    (acc, resource) => acc.merge(resource),\n    emptyResource()\n  );\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport type { ResourceDetectionConfig } from '../config';\nimport type { DetectedResource, ResourceDetector } from '../types';\nimport { getStringFromEnv } from '@opentelemetry/core';\n\n/**\n * EnvDetector can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetector implements ResourceDetector {\n  // Type, attribute keys, and attribute values should not exceed 256 characters.\n  private readonly _MAX_LENGTH = 255;\n\n  // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n  private readonly _COMMA_SEPARATOR = ',';\n\n  // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n  private readonly _LABEL_KEY_VALUE_SPLITTER = '=';\n\n  /**\n   * Returns a {@link Resource} populated with attributes from the\n   * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n   * function to conform to the Detector interface.\n   *\n   * @param config The resource detection config\n   */\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {};\n\n    const rawAttributes = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n    const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n    if (rawAttributes) {\n      try {\n        const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n        Object.assign(attributes, parsedAttributes);\n      } catch (e) {\n        diag.debug(`EnvDetector failed: ${e instanceof Error ? e.message : e}`);\n      }\n    }\n\n    if (serviceName) {\n      attributes[ATTR_SERVICE_NAME] = serviceName;\n    }\n\n    return { attributes };\n  }\n\n  /**\n   * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment\n   * variable.\n   *\n   * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes in the\n   * format \"key1=value1,key2=value2\". The ',' and '=' characters in keys\n   * and values MUST be percent-encoded. Other characters MAY be percent-encoded.\n   *\n   * Per the spec, on any error (e.g., decoding failure), the entire environment\n   * variable value is discarded.\n   *\n   * @param rawEnvAttributes The resource attributes as a comma-separated list\n   * of key/value pairs.\n   * @returns The parsed resource attributes.\n   * @throws Error if parsing fails (caller handles by discarding all attributes)\n   */\n  private _parseResourceAttributes(rawEnvAttributes?: string): Attributes {\n    if (!rawEnvAttributes) return {};\n\n    const attributes: Attributes = {};\n    const rawAttributes: string[] = rawEnvAttributes.split(\n      this._COMMA_SEPARATOR\n    );\n\n    for (const rawAttribute of rawAttributes) {\n      const keyValuePair: string[] = rawAttribute.split(\n        this._LABEL_KEY_VALUE_SPLITTER\n      );\n\n      // Per spec: ',' and '=' MUST be percent-encoded in keys and values.\n      // If we get != 2 parts, there's an unencoded '=' which is an error.\n      if (keyValuePair.length !== 2) {\n        throw new Error(\n          `Invalid format for OTEL_RESOURCE_ATTRIBUTES: \"${rawAttribute}\". ` +\n            `Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`\n        );\n      }\n\n      const [rawKey, rawValue] = keyValuePair;\n      const key = rawKey.trim();\n      const value = rawValue.trim();\n\n      if (key.length === 0) {\n        throw new Error(\n          `Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in \"${rawAttribute}\".`\n        );\n      }\n\n      let decodedKey: string;\n      let decodedValue: string;\n      try {\n        decodedKey = decodeURIComponent(key);\n        decodedValue = decodeURIComponent(value);\n      } catch (e) {\n        throw new Error(\n          `Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry \"${rawAttribute}\": ${e instanceof Error ? e.message : e}`\n        );\n      }\n\n      if (decodedKey.length > this._MAX_LENGTH) {\n        throw new Error(\n          `Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: \"${decodedKey}\".`\n        );\n      }\n\n      if (decodedValue.length > this._MAX_LENGTH) {\n        throw new Error(\n          `Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key \"${decodedKey}\".`\n        );\n      }\n\n      attributes[decodedKey] = decodedValue;\n    }\n\n    return attributes;\n  }\n}\n\nexport const envDetector = new EnvDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @example 111111111111\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id' as const;\n\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * @example us-east-1c\n *\n * @note Availability zones are called \"zones\" on Alibaba Cloud and Google Cloud.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone' as const;\n\n/**\n * Name of the cloud provider.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_PROVIDER = 'cloud.provider' as const;\n\n/**\n * The geographical region the resource is running.\n *\n * @example us-central1\n * @example us-east-1\n *\n * @note Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/global-infrastructure/geographies/), [Google Cloud regions](https://cloud.google.com/about/locations), or [Tencent Cloud regions](https://www.tencentcloud.com/document/product/213/6091).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CLOUD_REGION = 'cloud.region' as const;\n\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated.\n *\n * @example a3bf90e006b2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_ID = 'container.id' as const;\n\n/**\n * Name of the image the container was built on.\n *\n * @example gcr.io/opentelemetry/operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_NAME = 'container.image.name' as const;\n\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`.\n *\n * @example [\"v1.27.1\", \"3.5.7-0\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags' as const;\n\n/**\n * Container name used by container runtime.\n *\n * @example opentelemetry-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_CONTAINER_NAME = 'container.name' as const;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_ARCH = 'host.arch' as const;\n\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system.\n *\n * @example fdbf79e8af94cb7f9e8df36789187052\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_ID = 'host.id' as const;\n\n/**\n * VM image ID or host OS image ID. For Cloud, this value is from the provider.\n *\n * @example ami-07b06b442921831e5\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_ID = 'host.image.id' as const;\n\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @example infra-ami-eks-worker-node-7d4ec78312\n * @example CentOS-8-x86_64-1905\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_NAME = 'host.image.name' as const;\n\n/**\n * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 0.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_IMAGE_VERSION = 'host.image.version' as const;\n\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @example opentelemetry-test\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_NAME = 'host.name' as const;\n\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @example n1-standard-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_HOST_TYPE = 'host.type' as const;\n\n/**\n * The name of the cluster.\n *\n * @example opentelemetry-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name' as const;\n\n/**\n * The name of the Deployment.\n *\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' as const;\n\n/**\n * The name of the namespace that the pod is running in.\n *\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name' as const;\n\n/**\n * The name of the Pod.\n *\n * @example opentelemetry-pod-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_K8S_POD_NAME = 'k8s.pod.name' as const;\n\n/**\n * The operating system type.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_TYPE = 'os.type' as const;\n\n/**\n * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 14.2.1\n * @example 18.04.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OS_VERSION = 'os.version' as const;\n\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @example cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND = 'process.command' as const;\n\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @example [\"cmd/otecol\", \"--config=config.yaml\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_COMMAND_ARGS = 'process.command_args' as const;\n\n/**\n * The name of the process executable. On Linux based systems, this **SHOULD** be set to the base name of the target of `/proc/[pid]/exe`. On Windows, this **SHOULD** be set to the base name of `GetProcessImageFileNameW`.\n *\n * @example otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name' as const;\n\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @example /usr/bin/cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path' as const;\n\n/**\n * The username of the user that owns the process.\n *\n * @example root\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_OWNER = 'process.owner' as const;\n\n/**\n * Process identifier (PID).\n *\n * @example 1234\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_PID = 'process.pid' as const;\n\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @example \"Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_DESCRIPTION =\n  'process.runtime.description' as const;\n\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @example \"14.0.2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version' as const;\n\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_INSTANCE_ID = 'service.instance.id' as const;\n\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_SERVICE_NAMESPACE = 'service.namespace' as const;\n\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_DESCRIPTION = 'webengine.description' as const;\n\n/**\n * The name of the web engine.\n *\n * @example WildFly\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_NAME = 'webengine.name' as const;\n\n/**\n * The version of the web engine.\n *\n * @example 21.0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_WEBENGINE_VERSION = 'webengine.version' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as process from 'process';\n\nlet getMachineIdImpl: undefined | (() => Promise);\n\nexport async function getMachineId(): Promise {\n  if (!getMachineIdImpl) {\n    switch (process.platform) {\n      case 'darwin':\n        getMachineIdImpl = (await import('./getMachineId-darwin.js'))\n          .getMachineId;\n        break;\n      case 'linux':\n        getMachineIdImpl = (await import('./getMachineId-linux.js'))\n          .getMachineId;\n        break;\n      case 'freebsd':\n        getMachineIdImpl = (await import('./getMachineId-bsd.js')).getMachineId;\n        break;\n      case 'win32':\n        getMachineIdImpl = (await import('./getMachineId-win.js')).getMachineId;\n        break;\n      default:\n        getMachineIdImpl = (await import('./getMachineId-unsupported.js'))\n          .getMachineId;\n        break;\n    }\n  }\n\n  return getMachineIdImpl();\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nexport const normalizeArch = (nodeArchString: string): string => {\n  // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec:\n  // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md\n  switch (nodeArchString) {\n    case 'arm':\n      return 'arm32';\n    case 'ppc':\n      return 'ppc32';\n    case 'x64':\n      return 'amd64';\n    default:\n      return nodeArchString;\n  }\n};\n\nexport const normalizeType = (nodePlatform: string): string => {\n  // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec:\n  // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md\n  switch (nodePlatform) {\n    case 'sunos':\n      return 'solaris';\n    case 'win32':\n      return 'windows';\n    default:\n      return nodePlatform;\n  }\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ATTR_HOST_ARCH, ATTR_HOST_ID, ATTR_HOST_NAME } from '../../../semconv';\nimport { arch, hostname } from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type {\n  DetectedResource,\n  DetectedResourceAttributes,\n  ResourceDetector,\n} from '../../../types';\nimport { getMachineId } from './machine-id/getMachineId';\nimport { normalizeArch } from './utils';\n\n/**\n * HostDetector detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: DetectedResourceAttributes = {\n      [ATTR_HOST_NAME]: hostname(),\n      [ATTR_HOST_ARCH]: normalizeArch(arch()),\n      [ATTR_HOST_ID]: getMachineId(),\n    };\n\n    return { attributes };\n  }\n}\n\nexport const hostDetector = new HostDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { ResourceDetectionConfig } from './config';\nexport { detectResources } from './detect-resources';\nexport {\n  envDetector,\n  hostDetector,\n  osDetector,\n  processDetector,\n  serviceInstanceIdDetector,\n} from './detectors';\nexport type { Resource } from './Resource';\nexport {\n  resourceFromAttributes,\n  defaultResource,\n  emptyResource,\n} from './ResourceImpl';\nexport { defaultServiceName } from './default-service-name';\nexport type {\n  ResourceDetector,\n  DetectedResource,\n  DetectedResourceAttributes,\n  RawResourceAttribute,\n  MaybePromise,\n} from './types';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { ATTR_OS_TYPE, ATTR_OS_VERSION } from '../../../semconv';\nimport { platform, release } from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\nimport { normalizeType } from './utils';\n\n/**\n * OSDetector detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {\n      [ATTR_OS_TYPE]: normalizeType(platform()),\n      [ATTR_OS_VERSION]: release(),\n    };\n    return { attributes };\n  }\n}\n\nexport const osDetector = new OSDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport {\n  ATTR_PROCESS_COMMAND,\n  ATTR_PROCESS_COMMAND_ARGS,\n  ATTR_PROCESS_EXECUTABLE_NAME,\n  ATTR_PROCESS_EXECUTABLE_PATH,\n  ATTR_PROCESS_OWNER,\n  ATTR_PROCESS_PID,\n  ATTR_PROCESS_RUNTIME_DESCRIPTION,\n  ATTR_PROCESS_RUNTIME_NAME,\n  ATTR_PROCESS_RUNTIME_VERSION,\n} from '../../../semconv';\nimport * as os from 'os';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ProcessDetector will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    const attributes: Attributes = {\n      [ATTR_PROCESS_PID]: process.pid,\n      [ATTR_PROCESS_EXECUTABLE_NAME]: process.title,\n      [ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath,\n      [ATTR_PROCESS_COMMAND_ARGS]: [\n        process.argv[0],\n        ...process.execArgv,\n        ...process.argv.slice(1),\n      ],\n      [ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node,\n      [ATTR_PROCESS_RUNTIME_NAME]: 'nodejs',\n      [ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n    };\n\n    if (process.argv.length > 1) {\n      attributes[ATTR_PROCESS_COMMAND] = process.argv[1];\n    }\n\n    try {\n      const userInfo = os.userInfo();\n      attributes[ATTR_PROCESS_OWNER] = userInfo.username;\n    } catch (e) {\n      diag.debug(`error obtaining process owner: ${e}`);\n    }\n\n    return { attributes };\n  }\n}\n\nexport const processDetector = new ProcessDetector();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ATTR_SERVICE_INSTANCE_ID } from '../../../semconv';\nimport { randomUUID } from 'crypto';\nimport type { ResourceDetectionConfig } from '../../../config';\nimport type { DetectedResource, ResourceDetector } from '../../../types';\n\n/**\n * ServiceInstanceIdDetector detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetector implements ResourceDetector {\n  detect(_config?: ResourceDetectionConfig): DetectedResource {\n    return {\n      attributes: {\n        [ATTR_SERVICE_INSTANCE_ID]: randomUUID(),\n      },\n    };\n  }\n}\n\n/**\n * @experimental\n */\nexport const serviceInstanceIdDetector = new ServiceInstanceIdDetector();\n","import { context, propagation, trace } from '@opentelemetry/api';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport {\n  ATTR_SERVICE_NAME,\n  ATTR_SERVICE_VERSION,\n  SEMRESATTRS_SERVICE_NAMESPACE,\n} from '@opentelemetry/semantic-conventions';\nimport { debug as coreDebug, SDK_VERSION } from '@sentry/core';\nimport {\n  initializeEsmLoader,\n  type NodeClient,\n  SentryContextManager,\n  setupOpenTelemetryLogger,\n} from '@sentry/node-core';\nimport {\n  type AsyncLocalStorageLookup,\n  SentryPropagator,\n  SentrySampler,\n  SentrySpanProcessor,\n} from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing';\n\n// About 277h - this must fit into new Array(len)!\nconst MAX_MAX_SPAN_WAIT_DURATION = 1_000_000;\n\ninterface AdditionalOpenTelemetryOptions {\n  /** Additional SpanProcessor instances that should be used. */\n  spanProcessors?: SpanProcessor[];\n}\n\n/**\n * Initialize OpenTelemetry for Node.\n */\nexport function initOpenTelemetry(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): void {\n  if (client.getOptions().debug) {\n    setupOpenTelemetryLogger();\n  }\n\n  const [provider, asyncLocalStorageLookup] = setupOtel(client, options);\n  client.traceProvider = provider;\n  client.asyncLocalStorageLookup = asyncLocalStorageLookup;\n}\n\ninterface NodePreloadOptions {\n  debug?: boolean;\n  integrations?: string[];\n}\n\n/**\n * Preload OpenTelemetry for Node.\n * This can be used to preload instrumentation early, but set up Sentry later.\n * By preloading the OTEL instrumentation wrapping still happens early enough that everything works.\n */\nexport function preloadOpenTelemetry(options: NodePreloadOptions = {}): void {\n  const { debug } = options;\n\n  if (debug) {\n    coreDebug.enable();\n  }\n\n  initializeEsmLoader();\n\n  // These are all integrations that we need to pre-load to ensure they are set up before any other code runs\n  getPreloadMethods(options.integrations).forEach(fn => {\n    fn();\n\n    if (debug) {\n      coreDebug.log(`[Sentry] Preloaded ${fn.id} instrumentation`);\n    }\n  });\n}\n\nfunction getPreloadMethods(integrationNames?: string[]): ((() => void) & { id: string })[] {\n  const instruments = getOpenTelemetryInstrumentationToPreload();\n\n  if (!integrationNames) {\n    return instruments;\n  }\n\n  // We match exact matches of instrumentation, but also match prefixes, e.g. \"Fastify.v5\" will match \"Fastify\"\n  return instruments.filter(instrumentation => {\n    const id = instrumentation.id;\n    return integrationNames.some(integrationName => id === integrationName || id.startsWith(`${integrationName}.`));\n  });\n}\n\n/** Just exported for tests. */\nexport function setupOtel(\n  client: NodeClient,\n  options: AdditionalOpenTelemetryOptions = {},\n): [BasicTracerProvider, AsyncLocalStorageLookup] {\n  // Create and configure NodeTracerProvider\n  const provider = new BasicTracerProvider({\n    sampler: new SentrySampler(client),\n    resource: defaultResource().merge(\n      resourceFromAttributes({\n        [ATTR_SERVICE_NAME]: 'node',\n        // eslint-disable-next-line deprecation/deprecation\n        [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry',\n        [ATTR_SERVICE_VERSION]: SDK_VERSION,\n      }),\n    ),\n    forceFlushTimeoutMillis: 500,\n    spanProcessors: [\n      new SentrySpanProcessor({\n        timeout: _clampSpanProcessorTimeout(client.getOptions().maxSpanWaitDuration),\n      }),\n      ...(options.spanProcessors || []),\n    ],\n  });\n\n  // Register as globals\n  trace.setGlobalTracerProvider(provider);\n  propagation.setGlobalPropagator(new SentryPropagator());\n\n  const ctxManager = new SentryContextManager();\n  context.setGlobalContextManager(ctxManager);\n\n  return [provider, ctxManager.getAsyncLocalStorageLookup()];\n}\n\n/** Just exported for tests. */\nexport function _clampSpanProcessorTimeout(maxSpanWaitDuration: number | undefined): number | undefined {\n  if (maxSpanWaitDuration == null) {\n    return undefined;\n  }\n\n  // We guard for a max. value here, because we create an array with this length\n  // So if this value is too large, this would fail\n  if (maxSpanWaitDuration > MAX_MAX_SPAN_WAIT_DURATION) {\n    DEBUG_BUILD &&\n      coreDebug.warn(`\\`maxSpanWaitDuration\\` is too high, using the maximum value of ${MAX_MAX_SPAN_WAIT_DURATION}`);\n    return MAX_MAX_SPAN_WAIT_DURATION;\n  } else if (maxSpanWaitDuration <= 0 || Number.isNaN(maxSpanWaitDuration)) {\n    DEBUG_BUILD && coreDebug.warn('`maxSpanWaitDuration` must be a positive number, using default value instead.');\n    return undefined;\n  }\n\n  return maxSpanWaitDuration;\n}\n","import type { Integration, Options } from '@sentry/core';\nimport { applySdkMetadata, hasSpansEnabled } from '@sentry/core';\nimport type { NodeClient } from '@sentry/node-core';\nimport {\n  getDefaultIntegrations as getNodeCoreDefaultIntegrations,\n  init as initNodeCore,\n  validateOpenTelemetrySetup,\n} from '@sentry/node-core';\nimport { httpIntegration } from '../integrations/http';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch';\nimport { getAutoPerformanceIntegrations } from '../integrations/tracing';\nimport type { NodeOptions } from '../types';\nimport { initOpenTelemetry } from './initOtel';\n\n/**\n * Get default integrations, excluding performance.\n */\nexport function getDefaultIntegrationsWithoutPerformance(): Integration[] {\n  const nodeCoreIntegrations = getNodeCoreDefaultIntegrations();\n\n  // Filter out the node-core HTTP and NodeFetch integrations and replace them with Node SDK's composite versions\n  return nodeCoreIntegrations\n    .filter(integration => integration.name !== 'Http' && integration.name !== 'NodeFetch')\n    .concat(httpIntegration(), nativeNodeFetchIntegration());\n}\n\n/** Get the default integrations for the Node SDK. */\nexport function getDefaultIntegrations(options: Options): Integration[] {\n  return [\n    ...getDefaultIntegrationsWithoutPerformance(),\n    // We only add performance integrations if tracing is enabled\n    // Note that this means that without tracing enabled, e.g. `expressIntegration()` will not be added\n    // This means that generally request isolation will work (because that is done by httpIntegration)\n    // But `transactionName` will not be set automatically\n    ...(hasSpansEnabled(options) ? getAutoPerformanceIntegrations() : []),\n  ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nexport function init(options: NodeOptions | undefined = {}): NodeClient | undefined {\n  return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Internal initialization function.\n */\nfunction _init(\n  options: NodeOptions | undefined = {},\n  getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClient | undefined {\n  applySdkMetadata(options, 'node');\n\n  const client = initNodeCore({\n    ...options,\n    // Only use Node SDK defaults if none provided\n    defaultIntegrations: options.defaultIntegrations ?? getDefaultIntegrationsImpl(options),\n  });\n\n  // Add Node SDK specific OpenTelemetry setup\n  if (client && !options.skipOpenTelemetrySetup) {\n    initOpenTelemetry(client, {\n      spanProcessors: options.openTelemetrySpanProcessors,\n    });\n    validateOpenTelemetrySetup();\n  }\n\n  return client;\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nexport function initWithoutDefaultIntegrations(options: NodeOptions | undefined = {}): NodeClient | undefined {\n  return _init(options, () => []);\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\nimport type { RouteInfo, RouteManifest } from './types';\n\nexport type CreateRouteManifestOptions = {\n  // For starters we only support app router\n  appDirPath?: string;\n  /**\n   * Whether to include route groups (e.g., (auth-layout)) in the final route paths.\n   * By default, route groups are stripped from paths following Next.js convention.\n   */\n  includeRouteGroups?: boolean;\n  /**\n   * Base path for the application, if any. This will be prefixed to all routes.\n   */\n  basePath?: string;\n};\n\nlet manifestCache: RouteManifest | null = null;\nlet lastAppDirPath: string | null = null;\nlet lastIncludeRouteGroups: boolean | undefined = undefined;\n\nfunction isPageFile(filename: string): boolean {\n  return filename === 'page.tsx' || filename === 'page.jsx' || filename === 'page.ts' || filename === 'page.js';\n}\n\nfunction isRouteGroup(name: string): boolean {\n  return name.startsWith('(') && name.endsWith(')');\n}\n\nfunction normalizeRouteGroupPath(routePath: string): string {\n  // Remove route group segments from the path\n  // Using positive lookahead with (?=[^)\\/]*\\)) to avoid polynomial matching\n  return routePath.replace(/\\/\\((?=[^)/]*\\))[^)/]+\\)/g, '');\n}\n\nfunction getDynamicRouteSegment(name: string): string {\n  if (name.startsWith('[[...') && name.endsWith(']]')) {\n    // Optional catchall: [[...param]]\n    const paramName = name.slice(5, -2); // Remove [[... and ]]\n    return `:${paramName}*?`; // Mark with ? as optional\n  } else if (name.startsWith('[...') && name.endsWith(']')) {\n    // Required catchall: [...param]\n    const paramName = name.slice(4, -1); // Remove [... and ]\n    return `:${paramName}*`;\n  }\n  // Regular dynamic: [param]\n  return `:${name.slice(1, -1)}`;\n}\n\nfunction buildRegexForDynamicRoute(routePath: string): {\n  regex: string;\n  paramNames: string[];\n  hasOptionalPrefix: boolean;\n} {\n  const segments = routePath.split('/').filter(Boolean);\n  const regexSegments: string[] = [];\n  const paramNames: string[] = [];\n  let hasOptionalCatchall = false;\n\n  for (const segment of segments) {\n    if (segment.startsWith(':')) {\n      const paramName = segment.substring(1);\n\n      if (paramName.endsWith('*?')) {\n        // Optional catchall: matches zero or more segments\n        const cleanParamName = paramName.slice(0, -2);\n        paramNames.push(cleanParamName);\n        // Handling this special case in pattern construction below\n        hasOptionalCatchall = true;\n      } else if (paramName.endsWith('*')) {\n        // Required catchall: matches one or more segments\n        const cleanParamName = paramName.slice(0, -1);\n        paramNames.push(cleanParamName);\n        regexSegments.push('(.+)');\n      } else {\n        // Regular dynamic segment\n        paramNames.push(paramName);\n        regexSegments.push('([^/]+)');\n      }\n    } else {\n      // Static segment - escape regex special characters including route group parentheses\n      regexSegments.push(segment.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n    }\n  }\n\n  let pattern: string;\n  if (hasOptionalCatchall) {\n    if (regexSegments.length === 0) {\n      // If the optional catchall happens at the root, accept any path starting\n      // with a slash. Need capturing group for parameter extraction.\n      pattern = '^/(.*)$';\n    } else {\n      // For optional catchall, make the trailing slash and segments optional\n      // This allows matching both /catchall and /catchall/anything\n      const staticParts = regexSegments.join('/');\n      pattern = `^/${staticParts}(?:/(.*))?$`;\n    }\n  } else {\n    pattern = `^/${regexSegments.join('/')}$`;\n  }\n\n  return { regex: pattern, paramNames, hasOptionalPrefix: hasOptionalPrefix(paramNames) };\n}\n\n/**\n * Detect if the first parameter is a common i18n prefix segment\n * Common patterns: locale, lang, language\n */\nfunction hasOptionalPrefix(paramNames: string[]): boolean {\n  const firstParam = paramNames[0];\n  if (firstParam === undefined) {\n    return false;\n  }\n\n  return firstParam === 'locale' || firstParam === 'lang' || firstParam === 'language';\n}\n\n/**\n * Check if a page file exports generateStaticParams (ISR/SSG indicator)\n */\nfunction checkForGenerateStaticParams(pageFilePath: string): boolean {\n  try {\n    const content = fs.readFileSync(pageFilePath, 'utf8');\n    // check for generateStaticParams export\n    // the regex covers `export function generateStaticParams`, `export async function generateStaticParams`, `export const generateStaticParams`\n    return /export\\s+(async\\s+)?function\\s+generateStaticParams|export\\s+const\\s+generateStaticParams/.test(content);\n  } catch {\n    return false;\n  }\n}\n\nfunction scanAppDirectory(dir: string, basePath: string = '', includeRouteGroups: boolean = false): RouteManifest {\n  const dynamicRoutes: RouteInfo[] = [];\n  const staticRoutes: RouteInfo[] = [];\n  const isrRoutes: string[] = [];\n\n  try {\n    const entries = fs.readdirSync(dir, { withFileTypes: true });\n    const pageFile = entries.find(entry => isPageFile(entry.name));\n\n    if (pageFile) {\n      // Conditionally normalize the path based on includeRouteGroups option\n      const routePath = includeRouteGroups ? basePath || '/' : normalizeRouteGroupPath(basePath || '/');\n      const isDynamic = routePath.includes(':');\n\n      // Check if this page has generateStaticParams (ISR/SSG indicator)\n      const pageFilePath = path.join(dir, pageFile.name);\n      const hasGenerateStaticParams = checkForGenerateStaticParams(pageFilePath);\n\n      if (hasGenerateStaticParams) {\n        isrRoutes.push(routePath);\n      }\n\n      if (isDynamic) {\n        const { regex, paramNames, hasOptionalPrefix } = buildRegexForDynamicRoute(routePath);\n        dynamicRoutes.push({\n          path: routePath,\n          regex,\n          paramNames,\n          hasOptionalPrefix,\n        });\n      } else {\n        staticRoutes.push({\n          path: routePath,\n        });\n      }\n    }\n\n    for (const entry of entries) {\n      if (entry.isDirectory()) {\n        const fullPath = path.join(dir, entry.name);\n        let routeSegment: string;\n\n        const isDynamic = entry.name.startsWith('[') && entry.name.endsWith(']');\n        const isRouteGroupDir = isRouteGroup(entry.name);\n\n        if (isRouteGroupDir) {\n          if (includeRouteGroups) {\n            routeSegment = entry.name;\n          } else {\n            routeSegment = '';\n          }\n        } else if (isDynamic) {\n          routeSegment = getDynamicRouteSegment(entry.name);\n        } else {\n          routeSegment = entry.name;\n        }\n\n        const newBasePath = routeSegment ? `${basePath}/${routeSegment}` : basePath;\n        const subRoutes = scanAppDirectory(fullPath, newBasePath, includeRouteGroups);\n\n        dynamicRoutes.push(...subRoutes.dynamicRoutes);\n        staticRoutes.push(...subRoutes.staticRoutes);\n        isrRoutes.push(...subRoutes.isrRoutes);\n      }\n    }\n  } catch (error) {\n    // eslint-disable-next-line no-console\n    console.warn('Error building route manifest:', error);\n  }\n\n  return { dynamicRoutes, staticRoutes, isrRoutes };\n}\n\n/**\n * Returns a route manifest for the given app directory\n */\nexport function createRouteManifest(options?: CreateRouteManifestOptions): RouteManifest {\n  let targetDir: string | undefined;\n\n  if (options?.appDirPath) {\n    targetDir = options.appDirPath;\n  } else {\n    const projectDir = process.cwd();\n    const maybeAppDirPath = path.join(projectDir, 'app');\n    const maybeSrcAppDirPath = path.join(projectDir, 'src', 'app');\n\n    if (fs.existsSync(maybeAppDirPath) && fs.lstatSync(maybeAppDirPath).isDirectory()) {\n      targetDir = maybeAppDirPath;\n    } else if (fs.existsSync(maybeSrcAppDirPath) && fs.lstatSync(maybeSrcAppDirPath).isDirectory()) {\n      targetDir = maybeSrcAppDirPath;\n    }\n  }\n\n  if (!targetDir) {\n    return {\n      isrRoutes: [],\n      dynamicRoutes: [],\n      staticRoutes: [],\n    };\n  }\n\n  // Check if we can use cached version\n  if (manifestCache && lastAppDirPath === targetDir && lastIncludeRouteGroups === options?.includeRouteGroups) {\n    return manifestCache;\n  }\n\n  const { dynamicRoutes, staticRoutes, isrRoutes } = scanAppDirectory(\n    targetDir,\n    options?.basePath,\n    options?.includeRouteGroups,\n  );\n\n  const manifest: RouteManifest = {\n    dynamicRoutes,\n    staticRoutes,\n    isrRoutes,\n  };\n\n  // set cache\n  manifestCache = manifest;\n  lastAppDirPath = targetDir;\n  lastIncludeRouteGroups = options?.includeRouteGroups;\n\n  return manifest;\n}\n","import { _INTERNAL_safeMathRandom } from '@sentry/core';\nimport type { NextConfigObject } from '../types';\n\n/**\n * Generates a random tunnel route path that's less likely to be blocked by ad-blockers\n */\nfunction generateRandomTunnelRoute(): string {\n  // Generate a random 8-character alphanumeric string\n  const randomString = _INTERNAL_safeMathRandom().toString(36).substring(2, 10);\n  return `/${randomString}`;\n}\n\n/**\n * Resolves the tunnel route based on the user's configuration and the environment.\n * @param tunnelRoute - The user-provided tunnel route option\n */\nexport function resolveTunnelRoute(tunnelRoute: string | true): string {\n  if (process.env.__SENTRY_TUNNEL_ROUTE__) {\n    // Reuse cached value from previous build (server/client)\n    return process.env.__SENTRY_TUNNEL_ROUTE__;\n  }\n\n  const resolvedTunnelRoute = typeof tunnelRoute === 'string' ? tunnelRoute : generateRandomTunnelRoute();\n\n  // Cache for subsequent builds (only during build time)\n  // Turbopack runs the config twice, so we need a shared context to avoid generating a new tunnel route for each build.\n  // env works well here\n  // https://linear.app/getsentry/issue/JS-549/adblock-plus-blocking-requests-to-sentry-and-monitoring-tunnel\n  if (resolvedTunnelRoute) {\n    process.env.__SENTRY_TUNNEL_ROUTE__ = resolvedTunnelRoute;\n  }\n\n  return resolvedTunnelRoute;\n}\n\n/**\n * Injects rewrite rules into the Next.js config provided by the user to tunnel\n * requests from the `tunnelPath` to Sentry.\n *\n * See https://nextjs.org/docs/api-reference/next.config.js/rewrites.\n */\nexport function setUpTunnelRewriteRules(userNextConfig: NextConfigObject, tunnelPath: string): void {\n  const originalRewrites = userNextConfig.rewrites;\n  // Allow overriding the tunnel destination for E2E tests via environment variable\n  const destinationOverride = process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE;\n\n  // Make sure destinations are statically defined at build time\n  const destination = destinationOverride || 'https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0';\n  const destinationWithRegion =\n    destinationOverride || 'https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0';\n\n  // This function doesn't take any arguments at the time of writing but we future-proof\n  // here in case Next.js ever decides to pass some\n  userNextConfig.rewrites = async (...args: unknown[]) => {\n    const tunnelRouteRewrite = {\n      // Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]`\n      // Nextjs will automatically convert `source` into a regex for us\n      source: `${tunnelPath}(/?)`,\n      has: [\n        {\n          type: 'query',\n          key: 'o', // short for orgId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'p', // short for projectId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n      ],\n      destination,\n    };\n\n    const tunnelRouteRewriteWithRegion = {\n      // Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]?r=[region]`\n      // Nextjs will automatically convert `source` into a regex for us\n      source: `${tunnelPath}(/?)`,\n      has: [\n        {\n          type: 'query',\n          key: 'o', // short for orgId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'p', // short for projectId - we keep it short so matching is harder for ad-blockers\n          value: '(?\\\\d*)',\n        },\n        {\n          type: 'query',\n          key: 'r', // short for region - we keep it short so matching is harder for ad-blockers\n          value: '(?[a-z]{2})',\n        },\n      ],\n      destination: destinationWithRegion,\n    };\n\n    // Order of these is important, they get applied first to last.\n    const newRewrites = [tunnelRouteRewriteWithRegion, tunnelRouteRewrite];\n\n    if (typeof originalRewrites !== 'function') {\n      return newRewrites;\n    }\n\n    // @ts-expect-error Expected 0 arguments but got 1 - this is from the future-proofing mentioned above, so we don't care about it\n    const originalRewritesResult = await originalRewrites(...args);\n\n    if (Array.isArray(originalRewritesResult)) {\n      return [...newRewrites, ...originalRewritesResult];\n    } else {\n      return {\n        ...originalRewritesResult,\n        beforeFiles: [...newRewrites, ...(originalRewritesResult.beforeFiles || [])],\n      };\n    }\n  };\n}\n","import { debug, isMatchingPattern, parseSemver } from '@sentry/core';\nimport { getSentryRelease } from '@sentry/node';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type { VercelCronsConfig } from '../../common/types';\nimport { createRouteManifest } from '../manifest/createRouteManifest';\nimport type { RouteManifest } from '../manifest/types';\nimport type { NextConfigObject, SentryBuildOptions } from '../types';\nimport { requiresInstrumentationHook } from '../util';\nimport { getGitRevision, getInstrumentationClientFileContents } from './buildTime';\nimport { resolveTunnelRoute, setUpTunnelRewriteRules } from './tunnel';\n\nlet showedExportModeTunnelWarning = false;\nlet showedExperimentalBuildModeWarning = false;\n\n/**\n * Resolves the Sentry release name to use for build-time behavior.\n *\n * Note: if `release.create === false`, we avoid falling back to git to preserve build determinism.\n */\nexport function resolveReleaseName(userSentryOptions: SentryBuildOptions): string | undefined {\n  const shouldCreateRelease = userSentryOptions.release?.create !== false;\n  return shouldCreateRelease\n    ? (userSentryOptions.release?.name ?? getSentryRelease() ?? getGitRevision())\n    : userSentryOptions.release?.name;\n}\n\n/**\n * Applies tunnel-route rewrites, if configured.\n *\n * Note: this mutates `userSentryOptions` (to store the resolved tunnel route) and `incomingUserNextConfigObject`.\n */\nexport function maybeSetUpTunnelRouteRewriteRules(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): void {\n  if (!userSentryOptions.tunnelRoute) {\n    return;\n  }\n\n  if (incomingUserNextConfigObject.output === 'export') {\n    if (!showedExportModeTunnelWarning) {\n      showedExportModeTunnelWarning = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option',\n      );\n    }\n    return;\n  }\n\n  // Update the global options object to use the resolved value everywhere\n  const resolvedTunnelRoute = resolveTunnelRoute(userSentryOptions.tunnelRoute);\n  userSentryOptions.tunnelRoute = resolvedTunnelRoute || undefined;\n\n  setUpTunnelRewriteRules(incomingUserNextConfigObject, resolvedTunnelRoute);\n}\n\n/**\n * Handles Next's experimental build-mode warning/early return behavior.\n *\n * @returns `true` if Sentry config processing should be skipped for the current process invocation\n */\nexport function shouldReturnEarlyInExperimentalBuildMode(): boolean {\n  if (!process.argv.includes('--experimental-build-mode')) {\n    return false;\n  }\n\n  if (!showedExperimentalBuildModeWarning) {\n    showedExperimentalBuildModeWarning = true;\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode',\n    );\n  }\n\n  // Next.js v15.3.0-canary.1 splits the experimental build into two phases:\n  // 1. compile: Code compilation\n  // 2. generate: Environment variable inlining and prerendering (We don't instrument this phase, we inline in the compile phase)\n  //\n  // We assume a single \"full\" build and reruns Webpack instrumentation in both phases.\n  // During the generate step it collides with Next.js's inliner\n  // producing malformed JS and build failures.\n  // We skip Sentry processing during generate to avoid this issue.\n  return process.argv.includes('generate');\n}\n\n/**\n * Creates the route manifest used for client-side route name normalization, unless disabled.\n */\nexport function maybeCreateRouteManifest(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): RouteManifest | undefined {\n  // Handle deprecated option with warning\n  // eslint-disable-next-line deprecation/deprecation\n  if (userSentryOptions.disableManifestInjection) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead.',\n    );\n  }\n\n  // If explicitly disabled, skip\n  if (userSentryOptions.routeManifestInjection === false) {\n    return undefined;\n  }\n\n  // Still check the deprecated option if the new option is not set\n  // eslint-disable-next-line deprecation/deprecation\n  if (userSentryOptions.routeManifestInjection === undefined && userSentryOptions.disableManifestInjection) {\n    return undefined;\n  }\n\n  const manifest = createRouteManifest({\n    basePath: incomingUserNextConfigObject.basePath,\n  });\n\n  // Apply route exclusion filter if configured\n  const excludeFilter = userSentryOptions.routeManifestInjection?.exclude;\n  return filterRouteManifest(manifest, excludeFilter);\n}\n\ntype ExcludeFilter = ((route: string) => boolean) | (string | RegExp)[] | undefined;\n\n/**\n * Filters routes from the manifest based on the exclude filter.\n * (Exported only for testing)\n */\nexport function filterRouteManifest(manifest: RouteManifest, excludeFilter: ExcludeFilter): RouteManifest {\n  if (!excludeFilter) {\n    return manifest;\n  }\n\n  const shouldExclude = (route: string): boolean => {\n    if (typeof excludeFilter === 'function') {\n      return excludeFilter(route);\n    }\n\n    return excludeFilter.some(pattern => isMatchingPattern(route, pattern));\n  };\n\n  return {\n    staticRoutes: manifest.staticRoutes.filter(r => !shouldExclude(r.path)),\n    dynamicRoutes: manifest.dynamicRoutes.filter(r => !shouldExclude(r.path)),\n    isrRoutes: manifest.isrRoutes.filter(r => !shouldExclude(r)),\n  };\n}\n\n/**\n * Adds `experimental.clientTraceMetadata` for supported Next.js versions.\n */\nexport function maybeSetClientTraceMetadataOption(\n  incomingUserNextConfigObject: NextConfigObject,\n  nextJsVersion: string | undefined,\n): void {\n  // Add the `clientTraceMetadata` experimental option based on Next.js version. The option got introduced in Next.js version 15.0.0 (actually 14.3.0-canary.64).\n  // Adding the option on lower versions will cause Next.js to print nasty warnings we wouldn't confront our users with.\n  if (nextJsVersion) {\n    const { major, minor } = parseSemver(nextJsVersion);\n    if (major !== undefined && minor !== undefined && (major >= 15 || (major === 14 && minor >= 3))) {\n      incomingUserNextConfigObject.experimental = incomingUserNextConfigObject.experimental || {};\n      incomingUserNextConfigObject.experimental.clientTraceMetadata = [\n        'baggage',\n        'sentry-trace',\n        ...(incomingUserNextConfigObject.experimental?.clientTraceMetadata || []),\n      ];\n    }\n  } else {\n    // eslint-disable-next-line no-console\n    console.log(\n      \"[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.\",\n    );\n  }\n}\n\n/**\n * Ensures Next.js' `experimental.instrumentationHook` is set for versions which require it.\n */\nexport function maybeSetInstrumentationHookOption(\n  incomingUserNextConfigObject: NextConfigObject,\n  nextJsVersion: string | undefined,\n): void {\n  // From Next.js version (15.0.0-canary.124) onwards, Next.js does no longer require the `experimental.instrumentationHook` option and will\n  // print a warning when it is set, so we need to conditionally provide it for lower versions.\n  if (nextJsVersion && requiresInstrumentationHook(nextJsVersion)) {\n    if (incomingUserNextConfigObject.experimental?.instrumentationHook === false) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`.',\n      );\n    }\n    incomingUserNextConfigObject.experimental = {\n      instrumentationHook: true,\n      ...incomingUserNextConfigObject.experimental,\n    };\n    return;\n  }\n\n  if (nextJsVersion) {\n    return;\n  }\n\n  // If we cannot detect a Next.js version for whatever reason, the sensible default is to set the `experimental.instrumentationHook`, even though it may create a warning.\n  if (incomingUserNextConfigObject.experimental && 'instrumentationHook' in incomingUserNextConfigObject.experimental) {\n    if (incomingUserNextConfigObject.experimental.instrumentationHook === false) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`.',\n      );\n    }\n  } else {\n    // eslint-disable-next-line no-console\n    console.log(\n      \"[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`.\",\n    );\n    incomingUserNextConfigObject.experimental = {\n      instrumentationHook: true,\n      ...incomingUserNextConfigObject.experimental,\n    };\n  }\n}\n\n/**\n * Warns if the project has an `instrumentation-client` file but doesn't export `onRouterTransitionStart`.\n */\nexport function warnIfMissingOnRouterTransitionStartHook(userSentryOptions: SentryBuildOptions): void {\n  // We wanna check whether the user added a `onRouterTransitionStart` handler to their client instrumentation file.\n  const instrumentationClientFileContents = getInstrumentationClientFileContents();\n  if (\n    instrumentationClientFileContents !== undefined &&\n    !instrumentationClientFileContents.includes('onRouterTransitionStart') &&\n    !userSentryOptions.suppressOnRouterTransitionStartWarning\n  ) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      '[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.',\n    );\n  }\n}\n\n/**\n * Parses the major Next.js version number from a semver string.\n */\nexport function getNextMajor(nextJsVersion: string | undefined): number | undefined {\n  if (!nextJsVersion) {\n    return undefined;\n  }\n\n  const { major } = parseSemver(nextJsVersion);\n  return major;\n}\n\n/**\n * Reads the Vercel crons configuration from vercel.json.\n * Returns undefined if vercel.json doesn't exist or doesn't contain crons.\n */\nfunction readVercelCronsConfig(): VercelCronsConfig {\n  try {\n    const vercelJsonPath = path.join(process.cwd(), 'vercel.json');\n    const vercelJsonContents = fs.readFileSync(vercelJsonPath, 'utf8');\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    const cronsConfig = JSON.parse(vercelJsonContents).crons as VercelCronsConfig;\n\n    if (cronsConfig && Array.isArray(cronsConfig) && cronsConfig.length > 0) {\n      return cronsConfig;\n    }\n    return undefined;\n  } catch (e) {\n    if ((e as { code: string }).code === 'ENOENT') {\n      return undefined;\n    }\n    debug.error('[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation', e);\n    return undefined;\n  }\n}\n\n/** Strategy for Vercel cron monitoring instrumentation */\nexport type VercelCronsStrategy = 'spans' | 'wrapper';\n\nexport type VercelCronsConfigResult = {\n  /** The crons configuration from vercel.json, if available */\n  config: VercelCronsConfig;\n  /**\n   * The instrumentation strategy to use:\n   * - `spans`: New span-based approach (works for both App Router and Pages Router)\n   * - `wrapper`: Old wrapper-based approach (Pages Router only)\n   * - `undefined`: No cron monitoring enabled\n   */\n  strategy: VercelCronsStrategy | undefined;\n};\n\n/**\n * Reads and returns the Vercel crons configuration from vercel.json along with\n * information about which instrumentation approach to use.\n *\n * - `_experimental.vercelCronsMonitoring`: New span-based approach (works for both App Router and Pages Router)\n * - `automaticVercelMonitors`: Old wrapper-based approach (Pages Router only)\n *\n * If both are enabled, the new approach is preferred and a warning is logged.\n */\nexport function maybeGetVercelCronsConfig(userSentryOptions: SentryBuildOptions): VercelCronsConfigResult {\n  const result: VercelCronsConfigResult = { config: undefined, strategy: undefined };\n\n  if (!process.env.VERCEL) {\n    return result;\n  }\n\n  const experimentalEnabled = userSentryOptions._experimental?.vercelCronsMonitoring === true;\n  const legacyEnabled = userSentryOptions.webpack?.automaticVercelMonitors === true;\n\n  if (!experimentalEnabled && !legacyEnabled) {\n    return result;\n  }\n\n  const config = readVercelCronsConfig();\n  if (!config) {\n    return result;\n  }\n\n  result.config = config;\n\n  if (experimentalEnabled && legacyEnabled) {\n    debug.warn(\n      \"[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. \" +\n        \"Using the new span-based approach from '_experimental.vercelCronsMonitoring'. \" +\n        \"You can remove 'webpack.automaticVercelMonitors' from your config.\",\n    );\n    result.strategy = 'spans';\n  } else if (experimentalEnabled) {\n    debug.log(\n      '[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation.',\n    );\n    result.strategy = 'spans';\n  } else {\n    debug.log(\n      \"[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config.\",\n    );\n    result.strategy = 'wrapper';\n  }\n\n  return result;\n}\n","import type { NextConfigObject, SentryBuildOptions } from '../types';\nimport { getNextjsVersion } from '../util';\nimport { setUpBuildTimeVariables } from './buildTime';\nimport { migrateDeprecatedWebpackOptions } from './deprecatedWebpackOptions';\nimport {\n  getBundlerInfo,\n  getServerExternalPackagesPatch,\n  getTurbopackPatch,\n  getWebpackPatch,\n  maybeConstructTurbopackConfig,\n  maybeEnableTurbopackSourcemaps,\n  maybeSetUpRunAfterProductionCompileHook,\n  maybeWarnAboutUnsupportedRunAfterProductionCompileHook,\n  maybeWarnAboutUnsupportedTurbopack,\n  resolveUseRunAfterProductionCompileHookOption,\n} from './getFinalConfigObjectBundlerUtils';\nimport {\n  getNextMajor,\n  maybeCreateRouteManifest,\n  maybeGetVercelCronsConfig,\n  maybeSetClientTraceMetadataOption,\n  maybeSetInstrumentationHookOption,\n  maybeSetUpTunnelRouteRewriteRules,\n  resolveReleaseName,\n  shouldReturnEarlyInExperimentalBuildMode,\n  warnIfMissingOnRouterTransitionStartHook,\n} from './getFinalConfigObjectUtils';\n\n/**\n * Materializes the final Next.js config object with Sentry's build-time integrations applied.\n *\n * Note: this mutates both `incomingUserNextConfigObject` and `userSentryOptions` (to apply defaults/migrations).\n */\nexport function getFinalConfigObject(\n  incomingUserNextConfigObject: NextConfigObject,\n  userSentryOptions: SentryBuildOptions,\n): NextConfigObject {\n  migrateDeprecatedWebpackOptions(userSentryOptions);\n  const releaseName = resolveReleaseName(userSentryOptions);\n\n  maybeSetUpTunnelRouteRewriteRules(incomingUserNextConfigObject, userSentryOptions);\n\n  if (shouldReturnEarlyInExperimentalBuildMode()) {\n    return incomingUserNextConfigObject;\n  }\n\n  const routeManifest = maybeCreateRouteManifest(incomingUserNextConfigObject, userSentryOptions);\n  const vercelCronsConfigResult = maybeGetVercelCronsConfig(userSentryOptions);\n  setUpBuildTimeVariables(incomingUserNextConfigObject, userSentryOptions, releaseName);\n\n  const nextJsVersion = getNextjsVersion();\n  const nextMajor = getNextMajor(nextJsVersion);\n\n  maybeSetClientTraceMetadataOption(incomingUserNextConfigObject, nextJsVersion);\n  maybeSetInstrumentationHookOption(incomingUserNextConfigObject, nextJsVersion);\n  warnIfMissingOnRouterTransitionStartHook(userSentryOptions);\n\n  const bundlerInfo = getBundlerInfo(nextJsVersion);\n  maybeWarnAboutUnsupportedTurbopack(nextJsVersion, bundlerInfo);\n  maybeWarnAboutUnsupportedRunAfterProductionCompileHook(nextJsVersion, userSentryOptions, bundlerInfo);\n\n  const turboPackConfig = maybeConstructTurbopackConfig(\n    incomingUserNextConfigObject,\n    userSentryOptions,\n    routeManifest,\n    nextJsVersion,\n    bundlerInfo,\n    vercelCronsConfigResult,\n  );\n\n  const shouldUseRunAfterProductionCompileHook = resolveUseRunAfterProductionCompileHookOption(\n    userSentryOptions,\n    bundlerInfo,\n  );\n\n  maybeSetUpRunAfterProductionCompileHook({\n    incomingUserNextConfigObject,\n    userSentryOptions,\n    releaseName,\n    nextJsVersion,\n    bundlerInfo,\n    turboPackConfig,\n    shouldUseRunAfterProductionCompileHook,\n  });\n\n  maybeEnableTurbopackSourcemaps(incomingUserNextConfigObject, userSentryOptions, bundlerInfo);\n\n  return {\n    ...incomingUserNextConfigObject,\n    ...getServerExternalPackagesPatch(incomingUserNextConfigObject, nextMajor),\n    ...getWebpackPatch({\n      incomingUserNextConfigObject,\n      userSentryOptions,\n      releaseName,\n      routeManifest,\n      nextJsVersion,\n      shouldUseRunAfterProductionCompileHook,\n      bundlerInfo,\n      vercelCronsConfigResult,\n    }),\n    ...getTurbopackPatch(bundlerInfo, turboPackConfig),\n  };\n}\n","import { isThenable } from '@sentry/core';\nimport type { ExportedNextConfig as NextConfig, NextConfigFunction, SentryBuildOptions } from '../types';\nimport { DEFAULT_SERVER_EXTERNAL_PACKAGES } from './constants';\nimport { getFinalConfigObject } from './getFinalConfigObject';\n\nexport { DEFAULT_SERVER_EXTERNAL_PACKAGES };\n\n/**\n * Wraps a user's Next.js config and applies Sentry build-time behavior (instrumentation + sourcemap upload).\n *\n * Supports both object and function Next.js configs.\n *\n * @param nextConfig - The user's exported Next.js config\n * @param sentryBuildOptions - Options to configure Sentry's build-time behavior\n * @returns The wrapped Next.js config (same shape as the input)\n */\nexport function withSentryConfig(nextConfig?: C, sentryBuildOptions: SentryBuildOptions = {}): C {\n  const castNextConfig = (nextConfig as NextConfig) || {};\n  if (typeof castNextConfig === 'function') {\n    return function (this: unknown, ...webpackConfigFunctionArgs: unknown[]): ReturnType {\n      const maybePromiseNextConfig: ReturnType = castNextConfig.apply(\n        this,\n        webpackConfigFunctionArgs,\n      );\n\n      if (isThenable(maybePromiseNextConfig)) {\n        return maybePromiseNextConfig.then(promiseResultNextConfig => {\n          return getFinalConfigObject(promiseResultNextConfig, sentryBuildOptions);\n        });\n      }\n\n      return getFinalConfigObject(maybePromiseNextConfig, sentryBuildOptions);\n    } as C;\n  } else {\n    return getFinalConfigObject(castNextConfig, sentryBuildOptions) as C;\n  }\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","var UNKNOWN_FUNCTION = '';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction parse(stackString) {\n  var lines = stackString.split('\\n');\n  return lines.reduce(function (stack, line) {\n    var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n    if (parseResult) {\n      stack.push(parseResult);\n    }\n\n    return stack;\n  }, []);\n}\nvar chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n  var parts = chromeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n  var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n  var submatch = chromeEvalRe.exec(parts[2]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line/column number\n    parts[2] = submatch[1]; // url\n\n    parts[3] = submatch[2]; // line\n\n    parts[4] = submatch[3]; // column\n  }\n\n  return {\n    file: !isNative ? parts[2] : null,\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: isNative ? [parts[2]] : [],\n    lineNumber: parts[3] ? +parts[3] : null,\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n  var parts = winjsRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nvar geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n  var parts = geckoRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n  var submatch = geckoEvalRe.exec(parts[3]);\n\n  if (isEval && submatch != null) {\n    // throw out eval line/column and use top-most line number\n    parts[3] = submatch[1];\n    parts[4] = submatch[2];\n    parts[5] = null; // no column when eval\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: parts[2] ? parts[2].split(',') : [],\n    lineNumber: parts[4] ? +parts[4] : null,\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n  var parts = javaScriptCoreRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[3],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[4],\n    column: parts[5] ? +parts[5] : null\n  };\n}\n\nvar nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n  var parts = nodeRe.exec(line);\n\n  if (!parts) {\n    return null;\n  }\n\n  return {\n    file: parts[2],\n    methodName: parts[1] || UNKNOWN_FUNCTION,\n    arguments: [],\n    lineNumber: +parts[3],\n    column: parts[4] ? +parts[4] : null\n  };\n}\n\nexport { parse };\n","import type { Event, EventHint } from '@sentry/core';\nimport { debug, GLOBAL_OBJ, parseSemver, suppressTracing } from '@sentry/core';\nimport type { StackFrame } from 'stacktrace-parser';\nimport * as stackTraceParser from 'stacktrace-parser';\nimport { DEBUG_BUILD } from './debug-build';\n\ntype OriginalStackFrameResponse = {\n  originalStackFrame: StackFrame;\n  originalCodeFrame: string | null;\n  sourcePackage?: string;\n};\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryBasePath?: string;\n  _sentryNextJsVersion: string | undefined;\n};\n\n/**\n * Constructs the base URL for the Next.js dev server, including the port and base path.\n * Returns only the base path when running in the browser (client-side) for relative URLs.\n */\nfunction getDevServerBaseUrl(): string {\n  let basePath = process.env._sentryBasePath ?? globalWithInjectedValues._sentryBasePath ?? '';\n\n  // Prefix the basepath with a slash if it doesn't have one\n  if (basePath !== '' && !basePath.match(/^\\//)) {\n    basePath = `/${basePath}`;\n  }\n\n  // eslint-disable-next-line no-restricted-globals\n  if (typeof window !== 'undefined') {\n    return basePath;\n  }\n\n  const devServerPort = process.env.PORT || '3000';\n  return `http://localhost:${devServerPort}${basePath}`;\n}\n\n/**\n * Fetches a URL with a 3-second timeout using AbortController.\n */\nasync function fetchWithTimeout(url: string, options: RequestInit = {}): Promise {\n  const controller = new AbortController();\n  const timer = setTimeout(() => controller.abort(), 3000);\n\n  return suppressTracing(() =>\n    fetch(url, {\n      ...options,\n      signal: controller.signal,\n    }).finally(() => {\n      clearTimeout(timer);\n    }),\n  );\n}\n\n/**\n * Event processor that will symbolicate errors by using the webpack/nextjs dev server that is used to show stack traces\n * in the dev overlay.\n */\nexport async function devErrorSymbolicationEventProcessor(event: Event, hint: EventHint): Promise {\n  // Filter out spans for requests resolving source maps for stack frames in dev mode\n  if (event.type === 'transaction') {\n    event.spans = event.spans?.filter(span => {\n      const httpUrlAttribute: unknown = span.data?.['http.url'];\n      if (typeof httpUrlAttribute === 'string') {\n        return !httpUrlAttribute.includes('__nextjs_original-stack-frame'); // could also be __nextjs_original-stack-frames (plural)\n      }\n\n      return true;\n    });\n  }\n\n  // Due to changes across Next.js versions, there are a million things that can go wrong here so we just try-catch the\n  // entire event processor. Symbolicated stack traces are just a nice to have.\n  try {\n    // oxlint-disable-next-line typescript/prefer-optional-chain\n    if (hint.originalException && hint.originalException instanceof Error && hint.originalException.stack) {\n      const frames = stackTraceParser.parse(hint.originalException.stack);\n      const nextJsVersion = globalWithInjectedValues._sentryNextJsVersion;\n\n      // If we for whatever reason don't have a Next.js version,\n      // we don't want to symbolicate as this previously lead to infinite loops\n      if (!nextJsVersion) {\n        return event;\n      }\n\n      const parsedNextjsVersion = parseSemver(nextJsVersion);\n\n      let resolvedFrames: ({\n        originalCodeFrame: string | null;\n        originalStackFrame: (StackFrame & { line1?: number; column1?: number }) | null;\n      } | null)[];\n\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      if (parsedNextjsVersion.major! > 15 || (parsedNextjsVersion.major === 15 && parsedNextjsVersion.minor! >= 2)) {\n        const r = await resolveStackFrames(frames);\n        if (r === null) {\n          return event;\n        }\n        resolvedFrames = r;\n      } else {\n        resolvedFrames = await Promise.all(\n          frames.map(frame => resolveStackFrame(frame, hint.originalException as Error)),\n        );\n      }\n\n      if (event.exception?.values?.[0]?.stacktrace?.frames) {\n        event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames.map(\n          (frame, i, frames) => {\n            const resolvedFrame = resolvedFrames[frames.length - 1 - i];\n            if (!resolvedFrame?.originalStackFrame || !resolvedFrame.originalCodeFrame) {\n              return {\n                ...frame,\n                platform: frame.filename?.startsWith('node:internal') ? 'nodejs' : undefined, // simple hack that will prevent a source mapping error from showing up\n                in_app: false,\n              };\n            }\n\n            const { contextLine, preContextLines, postContextLines } = parseOriginalCodeFrame(\n              resolvedFrame.originalCodeFrame,\n            );\n\n            return {\n              ...frame,\n              pre_context: preContextLines,\n              context_line: contextLine,\n              post_context: postContextLines,\n              function: resolvedFrame.originalStackFrame.methodName,\n              filename: resolvedFrame.originalStackFrame.file\n                ? stripWebpackInternalPrefix(resolvedFrame.originalStackFrame.file)\n                : undefined,\n              lineno:\n                resolvedFrame.originalStackFrame.lineNumber || resolvedFrame.originalStackFrame.line1 || undefined,\n              colno: resolvedFrame.originalStackFrame.column || resolvedFrame.originalStackFrame.column1 || undefined,\n            };\n          },\n        );\n      }\n    }\n  } catch {\n    return event;\n  }\n\n  return event;\n}\n\nasync function resolveStackFrame(\n  frame: StackFrame,\n  error: Error,\n): Promise<{ originalCodeFrame: string | null; originalStackFrame: StackFrame | null } | null> {\n  try {\n    if (!(frame.file?.startsWith('webpack-internal:') || frame.file?.startsWith('file:'))) {\n      return null;\n    }\n\n    const params = new URLSearchParams();\n    params.append('isServer', String(false)); // doesn't matter since it is overwritten by isAppDirectory\n    params.append('isEdgeServer', String(false)); // doesn't matter since it is overwritten by isAppDirectory\n    params.append('isAppDirectory', String(true)); // will force server to do more thorough checking\n    params.append('errorMessage', error.toString());\n    Object.keys(frame).forEach(key => {\n      params.append(key, (frame[key as keyof typeof frame] ?? '').toString());\n    });\n\n    const baseUrl = getDevServerBaseUrl();\n    const res = await fetchWithTimeout(`${baseUrl}/__nextjs_original-stack-frame?${params.toString()}`);\n\n    if (!res.ok || res.status === 204) {\n      return null;\n    }\n\n    const body: OriginalStackFrameResponse = await res.json();\n\n    return {\n      originalCodeFrame: body.originalCodeFrame,\n      originalStackFrame: body.originalStackFrame,\n    };\n  } catch (e) {\n    DEBUG_BUILD && debug.error('Failed to symbolicate event with Next.js dev server', e);\n    return null;\n  }\n}\n\nasync function resolveStackFrames(\n  frames: StackFrame[],\n): Promise<{ originalCodeFrame: string | null; originalStackFrame: StackFrame | null }[] | null> {\n  try {\n    const postBody = {\n      frames: frames\n        .filter(frame => {\n          return !!frame.file;\n        })\n        .map(frame => {\n          // https://github.com/vercel/next.js/blob/df0573a478baa8b55478a7963c473dddd59a5e40/packages/next/src/client/components/react-dev-overlay/server/middleware-turbopack.ts#L129\n          // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n          frame.file = frame.file!.replace(/^rsc:\\/\\/React\\/[^/]+\\//, '').replace(/\\?\\d+$/, '');\n\n          return {\n            file: frame.file,\n            methodName: frame.methodName ?? '',\n            arguments: [],\n            lineNumber: frame.lineNumber ?? 0,\n            column: frame.column ?? 0,\n            line1: frame.lineNumber ?? 0,\n            column1: frame.column ?? 0,\n          };\n        }),\n      isServer: false,\n      isEdgeServer: false,\n      isAppDirectory: true,\n    };\n\n    const baseUrl = getDevServerBaseUrl();\n    const res = await fetchWithTimeout(`${baseUrl}/__nextjs_original-stack-frames`, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      body: JSON.stringify(postBody),\n    });\n\n    if (!res.ok || res.status === 204) {\n      return null;\n    }\n\n    const body: { value: OriginalStackFrameResponse }[] = await res.json();\n\n    return body.map(frame => {\n      return {\n        originalCodeFrame: frame.value.originalCodeFrame,\n        originalStackFrame: frame.value.originalStackFrame,\n      };\n    });\n  } catch (e) {\n    DEBUG_BUILD && debug.error('Failed to symbolicate event with Next.js dev server', e);\n    return null;\n  }\n}\n\nfunction parseOriginalCodeFrame(codeFrame: string): {\n  contextLine: string | undefined;\n  preContextLines: string[];\n  postContextLines: string[];\n} {\n  const preProcessedLines = codeFrame\n    // Remove ASCII control characters that are used for syntax highlighting\n    .replace(\n      // eslint-disable-next-line no-control-regex\n      /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, // https://stackoverflow.com/a/29497680\n      '',\n    )\n    .split('\\n')\n    // Remove line that is supposed to indicate where the error happened\n    .filter(line => !line.match(/^\\s*\\|/))\n    // Find the error line\n    .map(line => ({\n      line,\n      isErrorLine: !!line.match(/^>/),\n    }))\n    // Remove the leading part that is just for prettier output\n    .map(lineObj => ({\n      ...lineObj,\n      line: lineObj.line.replace(/^.*\\|/, ''),\n    }));\n\n  const preContextLines = [];\n  let contextLine: string | undefined = undefined;\n  const postContextLines = [];\n\n  let reachedContextLine = false;\n\n  for (const preProcessedLine of preProcessedLines) {\n    if (preProcessedLine.isErrorLine) {\n      contextLine = preProcessedLine.line;\n      reachedContextLine = true;\n    } else if (reachedContextLine) {\n      postContextLines.push(preProcessedLine.line);\n    } else {\n      preContextLines.push(preProcessedLine.line);\n    }\n  }\n\n  return {\n    contextLine,\n    preContextLines,\n    postContextLines,\n  };\n}\n\n/**\n * Strips webpack-internal prefixes from filenames to clean up stack traces.\n *\n * Examples:\n * - \"webpack-internal:///./components/file.tsx\" -> \"./components/file.tsx\"\n * - \"webpack-internal:///(app-pages-browser)/./components/file.tsx\" -> \"./components/file.tsx\"\n */\nfunction stripWebpackInternalPrefix(filename: string): string | undefined {\n  if (!filename) {\n    return filename;\n  }\n\n  const webpackInternalRegex = /^webpack-internal:(?:\\/+)?(?:\\([^)]*\\)\\/)?(.+)$/;\n  const match = filename.match(webpackInternalRegex);\n\n  return match ? match[1] : filename;\n}\n","/**\n * Returns an environment setting value determined by Vercel's `VERCEL_ENV` environment variable.\n *\n * @param isClient Flag to indicate whether to use the `NEXT_PUBLIC_` prefixed version of the environment variable.\n */\nexport function getVercelEnv(isClient: boolean): string | undefined {\n  const vercelEnvVar = isClient ? process.env.NEXT_PUBLIC_VERCEL_ENV : process.env.VERCEL_ENV;\n  return vercelEnvVar ? `vercel-${vercelEnvVar}` : undefined;\n}\n","export const ATTR_NEXT_SPAN_TYPE = 'next.span_type';\nexport const ATTR_NEXT_SPAN_NAME = 'next.span_name';\nexport const ATTR_NEXT_ROUTE = 'next.route';\nexport const ATTR_NEXT_SPAN_DESCRIPTION = 'next.span_description';\nexport const ATTR_NEXT_SEGMENT = 'next.segment';\n","/**\n * If this attribute is attached to a transaction, the Next.js SDK will drop that transaction.\n */\nexport const TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION = 'sentry.drop_transaction';\n\nexport const TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL = 'sentry.sentry_trace_backfill';\n\nexport const TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL = 'sentry.route_backfill';\n","// Note: This file is JS because it's used by the taskfile-swc.js file, which is JS.\n// Keep file changes in sync with the corresponding `.d.ts` files.\n\n/**\n * These are the minimum browser versions that we consider \"modern\" and thus compile for by default.\n * This list was generated using `pnpm browserslist \"baseline widely available\"` on 2025-10-01.\n */\nconst MODERN_BROWSERSLIST_TARGET = [\n  'chrome 111',\n  'edge 111',\n  'firefox 111',\n  'safari 16.4',\n]\n\nmodule.exports = MODERN_BROWSERSLIST_TARGET\n","export const UNDERSCORE_NOT_FOUND_ROUTE = '/_not-found'\nexport const UNDERSCORE_NOT_FOUND_ROUTE_ENTRY = `${UNDERSCORE_NOT_FOUND_ROUTE}/page`\nexport const UNDERSCORE_GLOBAL_ERROR_ROUTE = '/_global-error'\nexport const UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY = `${UNDERSCORE_GLOBAL_ERROR_ROUTE}/page`\n","import MODERN_BROWSERSLIST_TARGET from './modern-browserslist-target'\n\nexport { MODERN_BROWSERSLIST_TARGET }\n\nexport type ValueOf = Required[keyof T]\n\nexport const COMPILER_NAMES = {\n  client: 'client',\n  server: 'server',\n  edgeServer: 'edge-server',\n} as const\n\nexport type CompilerNameValues = ValueOf\n\nexport const COMPILER_INDEXES: {\n  [compilerKey in CompilerNameValues]: number\n} = {\n  [COMPILER_NAMES.client]: 0,\n  [COMPILER_NAMES.server]: 1,\n  [COMPILER_NAMES.edgeServer]: 2,\n} as const\n\n// Re-export entry constants for backward compatibility\nexport {\n  UNDERSCORE_NOT_FOUND_ROUTE,\n  UNDERSCORE_NOT_FOUND_ROUTE_ENTRY,\n  UNDERSCORE_GLOBAL_ERROR_ROUTE,\n  UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY,\n} from './entry-constants'\n\nexport enum AdapterOutputType {\n  /**\n   * `PAGES` represents all the React pages that are under `pages/`.\n   */\n  PAGES = 'PAGES',\n\n  /**\n   * `PAGES_API` represents all the API routes under `pages/api/`.\n   */\n  PAGES_API = 'PAGES_API',\n  /**\n   * `APP_PAGE` represents all the React pages that are under `app/` with the\n   * filename of `page.{j,t}s{,x}`.\n   */\n  APP_PAGE = 'APP_PAGE',\n\n  /**\n   * `APP_ROUTE` represents all the API routes and metadata routes that are under `app/` with the\n   * filename of `route.{j,t}s{,x}`.\n   */\n  APP_ROUTE = 'APP_ROUTE',\n\n  /**\n   * `PRERENDER` represents an ISR enabled route that might\n   * have a seeded cache entry or fallback generated during build\n   */\n  PRERENDER = 'PRERENDER',\n\n  /**\n   * `STATIC_FILE` represents a static file (ie /_next/static)\n   */\n  STATIC_FILE = 'STATIC_FILE',\n\n  /**\n   * `MIDDLEWARE` represents the middleware output if present\n   */\n  MIDDLEWARE = 'MIDDLEWARE',\n}\n\nexport const PHASE_EXPORT = 'phase-export'\nexport const PHASE_ANALYZE = 'phase-analyze'\nexport const PHASE_PRODUCTION_BUILD = 'phase-production-build'\nexport const PHASE_PRODUCTION_SERVER = 'phase-production-server'\nexport const PHASE_DEVELOPMENT_SERVER = 'phase-development-server'\nexport const PHASE_TEST = 'phase-test'\nexport const PHASE_INFO = 'phase-info'\n\nexport type PHASE_TYPE =\n  | typeof PHASE_INFO\n  | typeof PHASE_TEST\n  | typeof PHASE_EXPORT\n  | typeof PHASE_ANALYZE\n  | typeof PHASE_PRODUCTION_BUILD\n  | typeof PHASE_PRODUCTION_SERVER\n  | typeof PHASE_DEVELOPMENT_SERVER\n\nexport const PAGES_MANIFEST = 'pages-manifest.json'\nexport const WEBPACK_STATS = 'webpack-stats.json'\nexport const APP_PATHS_MANIFEST = 'app-paths-manifest.json'\nexport const APP_PATH_ROUTES_MANIFEST = 'app-path-routes-manifest.json'\nexport const BUILD_MANIFEST = 'build-manifest.json'\nexport const FUNCTIONS_CONFIG_MANIFEST = 'functions-config-manifest.json'\nexport const SUBRESOURCE_INTEGRITY_MANIFEST = 'subresource-integrity-manifest'\nexport const NEXT_FONT_MANIFEST = 'next-font-manifest'\nexport const EXPORT_MARKER = 'export-marker.json'\nexport const EXPORT_DETAIL = 'export-detail.json'\nexport const PRERENDER_MANIFEST = 'prerender-manifest.json'\nexport const ROUTES_MANIFEST = 'routes-manifest.json'\nexport const IMAGES_MANIFEST = 'images-manifest.json'\nexport const SERVER_FILES_MANIFEST = 'required-server-files'\nexport const DEV_CLIENT_PAGES_MANIFEST = '_devPagesManifest.json'\nexport const MIDDLEWARE_MANIFEST = 'middleware-manifest.json'\nexport const TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST =\n  '_clientMiddlewareManifest.json'\nexport const TURBOPACK_CLIENT_BUILD_MANIFEST = 'client-build-manifest.json'\nexport const DEV_CLIENT_MIDDLEWARE_MANIFEST = '_devMiddlewareManifest.json'\nexport const REACT_LOADABLE_MANIFEST = 'react-loadable-manifest.json'\nexport const SERVER_DIRECTORY = 'server'\nexport const CONFIG_FILES = [\n  'next.config.js',\n  'next.config.mjs',\n  'next.config.ts',\n  // process.features can be undefined on Edge runtime\n  // TODO: Remove `as any` once we bump @types/node to v22.10.0+\n  ...((process?.features as any)?.typescript ? ['next.config.mts'] : []),\n]\nexport const BUILD_ID_FILE = 'BUILD_ID'\nexport const BLOCKED_PAGES = ['/_document', '/_app', '/_error']\nexport const CLIENT_PUBLIC_FILES_PATH = 'public'\nexport const CLIENT_STATIC_FILES_PATH = 'static'\nexport const STRING_LITERAL_DROP_BUNDLE = '__NEXT_DROP_CLIENT_FILE__'\nexport const NEXT_BUILTIN_DOCUMENT = '__NEXT_BUILTIN_DOCUMENT__'\nexport const BARREL_OPTIMIZATION_PREFIX = '__barrel_optimize__'\n\n// server/[entry]/page_client-reference-manifest.js\nexport const CLIENT_REFERENCE_MANIFEST = 'client-reference-manifest'\n// server/server-reference-manifest\nexport const SERVER_REFERENCE_MANIFEST = 'server-reference-manifest'\n// server/middleware-build-manifest.js\nexport const MIDDLEWARE_BUILD_MANIFEST = 'middleware-build-manifest'\n// server/middleware-react-loadable-manifest.js\nexport const MIDDLEWARE_REACT_LOADABLE_MANIFEST =\n  'middleware-react-loadable-manifest'\n// server/interception-route-rewrite-manifest.js\nexport const INTERCEPTION_ROUTE_REWRITE_MANIFEST =\n  'interception-route-rewrite-manifest'\n// server/dynamic-css-manifest.js\nexport const DYNAMIC_CSS_MANIFEST = 'dynamic-css-manifest'\n\n// static/runtime/main.js\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN = `main`\nexport const CLIENT_STATIC_FILES_RUNTIME_MAIN_APP = `${CLIENT_STATIC_FILES_RUNTIME_MAIN}-app`\n// next internal client components chunk for layouts\nexport const APP_CLIENT_INTERNALS = 'app-pages-internals'\n// static/runtime/react-refresh.js\nexport const CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH = `react-refresh`\n// static/runtime/webpack.js\nexport const CLIENT_STATIC_FILES_RUNTIME_WEBPACK = `webpack`\n// static/runtime/polyfills.js\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS = 'polyfills'\nexport const CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL = Symbol(\n  CLIENT_STATIC_FILES_RUNTIME_POLYFILLS\n)\nexport const DEFAULT_RUNTIME_WEBPACK = 'webpack-runtime'\nexport const EDGE_RUNTIME_WEBPACK = 'edge-runtime-webpack'\nexport const STATIC_PROPS_ID = '__N_SSG'\nexport const SERVER_PROPS_ID = '__N_SSP'\nexport const DEFAULT_SERIF_FONT = {\n  name: 'Times New Roman',\n  xAvgCharWidth: 821,\n  azAvgWidth: 854.3953488372093,\n  unitsPerEm: 2048,\n}\nexport const DEFAULT_SANS_SERIF_FONT = {\n  name: 'Arial',\n  xAvgCharWidth: 904,\n  azAvgWidth: 934.5116279069767,\n  unitsPerEm: 2048,\n}\nexport const STATIC_STATUS_PAGES = ['/500']\nexport const TRACE_OUTPUT_VERSION = 1\n// in `MB`\nexport const TURBO_TRACE_DEFAULT_MEMORY_LIMIT = 6000\n\nexport const RSC_MODULE_TYPES = {\n  client: 'client',\n  server: 'server',\n} as const\n\n// comparing\n// https://nextjs.org/docs/api-reference/edge-runtime\n// with\n// https://nodejs.org/docs/latest/api/globals.html\nexport const EDGE_UNSUPPORTED_NODE_APIS = [\n  'clearImmediate',\n  'setImmediate',\n  'BroadcastChannel',\n  'ByteLengthQueuingStrategy',\n  'CompressionStream',\n  'CountQueuingStrategy',\n  'DecompressionStream',\n  'DomException',\n  'MessageChannel',\n  'MessageEvent',\n  'MessagePort',\n  'ReadableByteStreamController',\n  'ReadableStreamBYOBRequest',\n  'ReadableStreamDefaultController',\n  'TransformStreamDefaultController',\n  'WritableStreamDefaultController',\n]\n\nexport const SYSTEM_ENTRYPOINTS = new Set([\n  CLIENT_STATIC_FILES_RUNTIME_MAIN,\n  CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH,\n  CLIENT_STATIC_FILES_RUNTIME_MAIN_APP,\n])\n","module.exports = require('./dist/shared/lib/constants')\n","import { PHASE_PRODUCTION_BUILD } from 'next/constants';\n\n/**\n * Decide if the currently running process is part of the build phase or happening at runtime.\n */\nexport function isBuild(): boolean {\n  return process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD;\n}\n","import type { Span } from '@sentry/core';\nimport { debug, fill, flush, GLOBAL_OBJ, setHttpStatus, vercelWaitUntil } from '@sentry/core';\nimport type { ServerResponse } from 'http';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ResponseEndMethod, WrappedResponseEndMethod } from '../types';\n\n/**\n * Wrap `res.end()` so that it ends the span and flushes events before letting the request finish.\n *\n * Note: This wraps a sync method with an async method. While in general that's not a great idea in terms of keeping\n * things in the right order, in this case it's safe, because the native `.end()` actually *is* (effectively) async, and\n * its run actually *is* (literally) awaited, just manually so (which reflects the fact that the core of the\n * request/response code in Node by far predates the introduction of `async`/`await`). When `.end()` is done, it emits\n * the `prefinish` event, and only once that fires does request processing continue. See\n * https://github.com/nodejs/node/commit/7c9b607048f13741173d397795bac37707405ba7.\n *\n * Also note: `res.end()` isn't called until *after* all response data and headers have been sent, so blocking inside of\n * `end` doesn't delay data getting to the end user. See\n * https://nodejs.org/api/http.html#responseenddata-encoding-callback.\n *\n * @param span The span tracking the request\n * @param res: The request's corresponding response\n */\nexport function autoEndSpanOnResponseEnd(span: Span, res: ServerResponse): void {\n  const wrapEndMethod = (origEnd: ResponseEndMethod): WrappedResponseEndMethod => {\n    return function sentryWrappedEnd(this: ServerResponse, ...args: unknown[]) {\n      finishSpan(span, this);\n      return origEnd.call(this, ...args);\n    };\n  };\n\n  // Prevent double-wrapping\n  // res.end may be undefined during build when using `next export` to statically export a Next.js app\n  if (res.end && !(res.end as WrappedResponseEndMethod).__sentry_original__) {\n    fill(res, 'end', wrapEndMethod);\n  }\n}\n\n/** Finish the given response's span and set HTTP status data */\nexport function finishSpan(span: Span, res: ServerResponse): void {\n  setHttpStatus(span, res.statusCode);\n  span.end();\n}\n\n/**\n * Flushes pending Sentry events with a 2 second timeout and in a way that cannot create unhandled promise rejections.\n */\nexport async function flushSafelyWithTimeout(): Promise {\n  try {\n    DEBUG_BUILD && debug.log('Flushing events...');\n    await flush(2000);\n    DEBUG_BUILD && debug.log('Done flushing events');\n  } catch (e) {\n    DEBUG_BUILD && debug.log('Error while flushing events:\\n', e);\n  }\n}\n\n/**\n * Uses platform-specific waitUntil function to wait for the provided task to complete without blocking.\n */\nexport function waitUntil(task: Promise): void {\n  // If deployed on Cloudflare, use the Cloudflare waitUntil function to flush the events\n  if (isCloudflareWaitUntilAvailable()) {\n    cloudflareWaitUntil(task);\n    return;\n  }\n\n  // otherwise, use vercel's\n  vercelWaitUntil(task);\n}\n\ntype MinimalCloudflareContext = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  waitUntil(promise: Promise): void;\n};\n\n/**\n * Gets the Cloudflare context from the global object.\n * Relevant to opennext\n * https://github.com/opennextjs/opennextjs-cloudflare/blob/b53a046bd5c30e94a42e36b67747cefbf7785f9a/packages/cloudflare/src/cli/templates/init.ts#L17\n */\nfunction _getOpenNextCloudflareContext(): MinimalCloudflareContext | undefined {\n  const openNextCloudflareContextSymbol = Symbol.for('__cloudflare-context__');\n\n  return (\n    GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n      [openNextCloudflareContextSymbol]?: {\n        ctx: MinimalCloudflareContext;\n      };\n    }\n  )[openNextCloudflareContextSymbol]?.ctx;\n}\n\n/**\n * Function that delays closing of a Cloudflare lambda until the provided promise is resolved.\n */\nexport function cloudflareWaitUntil(task: Promise): void {\n  _getOpenNextCloudflareContext()?.waitUntil(task);\n}\n\n/**\n * Checks if the Cloudflare waitUntil function is available globally.\n */\nexport function isCloudflareWaitUntilAvailable(): boolean {\n  return typeof _getOpenNextCloudflareContext()?.waitUntil === 'function';\n}\n","import { getSanitizedUrlStringFromUrlObject, parseStringToURLObject } from '@sentry/core';\n\ntype ComponentRouteParams = Record | undefined;\ntype HeadersDict = Record | undefined;\n\nconst HeaderKeys = {\n  FORWARDED_PROTO: 'x-forwarded-proto',\n  FORWARDED_HOST: 'x-forwarded-host',\n  HOST: 'host',\n  REFERER: 'referer',\n} as const;\n\n/**\n * Replaces route parameters in a path template with their values\n * @param path - The path template containing parameters in [paramName] format\n * @param params - Optional route parameters to replace in the template\n * @returns The path with parameters replaced\n */\nexport function substituteRouteParams(path: string, params?: ComponentRouteParams): string {\n  if (!params || typeof params !== 'object') return path;\n\n  let resultPath = path;\n  for (const [key, value] of Object.entries(params)) {\n    resultPath = resultPath.split(`[${key}]`).join(encodeURIComponent(value));\n  }\n  return resultPath;\n}\n\n/**\n * Normalizes a path by removing route groups\n * @param path - The path to normalize\n * @returns The normalized path\n */\nexport function sanitizeRoutePath(path: string): string {\n  const cleanedSegments = path\n    .split('/')\n    .filter(segment => segment && !(segment.startsWith('(') && segment.endsWith(')')));\n\n  return cleanedSegments.length > 0 ? `/${cleanedSegments.join('/')}` : '/';\n}\n\n/**\n * Constructs a full URL from the component route, parameters, and headers.\n *\n * @param componentRoute - The route template to construct the URL from\n * @param params - Optional route parameters to replace in the template\n * @param headersDict - Optional headers containing protocol and host information\n * @param pathname - Optional pathname coming from parent span \"http.target\"\n * @returns A sanitized URL string\n */\nexport function buildUrlFromComponentRoute(\n  componentRoute: string,\n  params?: ComponentRouteParams,\n  headersDict?: HeadersDict,\n  pathname?: string,\n): string {\n  const parameterizedPath = substituteRouteParams(componentRoute, params);\n  // If available, the pathname from the http.target of the HTTP request server span takes precedence over the parameterized path.\n  // Spans such as generateMetadata and Server Component rendering are typically direct children of that span.\n  const path = pathname ?? sanitizeRoutePath(parameterizedPath);\n\n  const protocol = headersDict?.[HeaderKeys.FORWARDED_PROTO];\n  const host = headersDict?.[HeaderKeys.FORWARDED_HOST] || headersDict?.[HeaderKeys.HOST];\n\n  if (!protocol || !host) {\n    return path;\n  }\n\n  const fullUrl = `${protocol}://${host}${path}`;\n\n  const urlObject = parseStringToURLObject(fullUrl);\n  if (!urlObject) {\n    return path;\n  }\n\n  return getSanitizedUrlStringFromUrlObject(urlObject);\n}\n\n/**\n * Returns a sanitized URL string from the referer header if it exists and is valid.\n *\n * @param headersDict - Optional headers containing the referer\n * @returns A sanitized URL string or undefined if referer is missing/invalid\n */\nexport function extractSanitizedUrlFromRefererHeader(headersDict?: HeadersDict): string | undefined {\n  const referer = headersDict?.[HeaderKeys.REFERER];\n  if (!referer) {\n    return undefined;\n  }\n\n  try {\n    const refererUrl = new URL(referer);\n    return getSanitizedUrlStringFromUrlObject(refererUrl);\n  } catch {\n    return undefined;\n  }\n}\n\n/**\n * Returns a sanitized URL string using the referer header if available,\n * otherwise constructs the URL from the component route, params, and headers.\n *\n * @param componentRoute - The route template to construct the URL from\n * @param params - Optional route parameters to replace in the template\n * @param headersDict - Optional headers containing protocol, host, and referer\n * @param pathname - Optional pathname coming from root span \"http.target\"\n * @returns A sanitized URL string\n */\nexport function getSanitizedRequestUrl(\n  componentRoute: string,\n  params?: ComponentRouteParams,\n  headersDict?: HeadersDict,\n  pathname?: string,\n): string {\n  const refererUrl = extractSanitizedUrlFromRefererHeader(headersDict);\n  if (refererUrl) {\n    return refererUrl;\n  }\n\n  return buildUrlFromComponentRoute(componentRoute, params, headersDict, pathname);\n}\n","import type { Event } from '@sentry/core';\nimport { getClient } from '@sentry/core';\nimport { getSanitizedRequestUrl } from './urls';\n\n/**\n * Sets the URL processing metadata for the event.\n */\nexport function setUrlProcessingMetadata(event: Event): void {\n  // Skip if not a server-side transaction\n  if (event.type !== 'transaction' || event.contexts?.trace?.op !== 'http.server' || !event.contexts?.trace?.data) {\n    return;\n  }\n\n  // Only add URL if sendDefaultPii is enabled, as URLs may contain PII\n  const client = getClient();\n  if (!client?.getOptions().sendDefaultPii) {\n    return;\n  }\n\n  const traceData = event.contexts.trace.data;\n\n  // Get the route from trace data\n  const componentRoute = traceData['next.route'] || traceData['http.route'];\n  const httpTarget = traceData['http.target'] as string | undefined;\n\n  if (!componentRoute) {\n    return;\n  }\n\n  // Extract headers\n  const isolationScopeData = event.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData();\n  const headersDict = isolationScopeData?.sdkProcessingMetadata?.normalizedRequest?.headers;\n\n  const url = getSanitizedRequestUrl(componentRoute, undefined, headersDict, httpTarget?.toString());\n\n  // Add URL to the isolation scope's normalizedRequest so requestDataIntegration picks it up\n  if (url && isolationScopeData?.sdkProcessingMetadata) {\n    isolationScopeData.sdkProcessingMetadata.normalizedRequest =\n      isolationScopeData.sdkProcessingMetadata.normalizedRequest || {};\n    isolationScopeData.sdkProcessingMetadata.normalizedRequest.url = url;\n  }\n}\n","import { defineIntegration, escapeStringForRegex, rewriteFramesIntegration } from '@sentry/core';\nimport * as path from 'path';\n\nexport const distDirRewriteFramesIntegration = defineIntegration(({ distDirName }: { distDirName: string }) => {\n  // nextjs always puts the build directory at the project root level, which is also where you run `next start` from, so\n  // we can read in the project directory from the currently running process\n  const distDirAbsPath = path.resolve(distDirName).replace(/(\\/|\\\\)$/, ''); // We strip trailing slashes because \"app:///_next\" also doesn't have one\n\n  // oxlint-disable-next-line sdk/no-regexp-constructor -- user input is escaped\n  const SOURCEMAP_FILENAME_REGEX = new RegExp(escapeStringForRegex(distDirAbsPath));\n\n  const rewriteFramesInstance = rewriteFramesIntegration({\n    iteratee: frame => {\n      frame.filename = frame.filename?.replace(SOURCEMAP_FILENAME_REGEX, 'app:///_next');\n      return frame;\n    },\n  });\n\n  return {\n    ...rewriteFramesInstance,\n    name: 'DistDirRewriteFrames',\n  };\n});\n","import type { Span, WebFetchHeaders } from '@sentry/core';\nimport { getClient, httpHeadersToSpanAttributes, winterCGHeadersToDict } from '@sentry/core';\n\n/**\n * Extracts HTTP request headers as span attributes and optionally applies them to a span.\n */\nexport function addHeadersAsAttributes(\n  headers: WebFetchHeaders | Headers | Record | undefined,\n  span?: Span,\n): Record {\n  if (!headers) {\n    return {};\n  }\n\n  const headersDict: Record =\n    headers instanceof Headers || (typeof headers === 'object' && 'get' in headers)\n      ? winterCGHeadersToDict(headers as Headers)\n      : headers;\n\n  const headerAttributes = httpHeadersToSpanAttributes(headersDict, getClient()?.getOptions().sendDefaultPii ?? false);\n\n  if (span) {\n    span.setAttributes(headerAttributes);\n  }\n\n  return headerAttributes;\n}\n","import { SEMATTRS_HTTP_TARGET } from '@opentelemetry/semantic-conventions';\nimport { getClient, GLOBAL_OBJ, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, type Span, type SpanAttributes } from '@sentry/core';\nimport { isSentryRequestSpan } from '@sentry/opentelemetry';\nimport { ATTR_NEXT_SPAN_TYPE } from '../nextSpanAttributes';\nimport { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached';\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryRewritesTunnelPath?: string;\n};\n\n/**\n * Drops spans for tunnel requests from middleware, fetch instrumentation, or BaseServer.handleRequest.\n * This catches:\n * 1. Requests to the local tunnel route (before rewrite) via middleware or BaseServer.handleRequest\n * 2. Requests to Sentry ingest (after rewrite) via fetch spans\n */\nexport function dropMiddlewareTunnelRequests(span: Span, attrs: SpanAttributes | undefined): void {\n  // When the user brings their own OTel setup (skipOpenTelemetrySetup: true), we should not\n  // mutate their spans with Sentry-internal attributes as it pollutes their tracing backends.\n  if ((getClient()?.getOptions() as { skipOpenTelemetrySetup?: boolean } | undefined)?.skipOpenTelemetrySetup) {\n    return;\n  }\n\n  // Only filter middleware spans, HTTP fetch spans, or BaseServer.handleRequest spans\n  const isMiddleware = attrs?.[ATTR_NEXT_SPAN_TYPE] === 'Middleware.execute';\n  // The fetch span could be originating from rewrites re-writing a tunnel request\n  // So we want to filter it out\n  const isFetchSpan = attrs?.[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] === 'auto.http.otel.node_fetch';\n  const isBaseServerHandleRequest = attrs?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest';\n\n  // If the span is not a middleware span, fetch span, or BaseServer.handleRequest span, return\n  if (!isMiddleware && !isFetchSpan && !isBaseServerHandleRequest) {\n    return;\n  }\n\n  // Check if this is either a tunnel route request or a Sentry ingest request\n  const isTunnel = isTunnelRouteSpan(attrs || {});\n  const isSentry = isSentryRequestSpan(span);\n\n  if (isTunnel || isSentry) {\n    // Mark the span to be dropped\n    span.setAttribute(TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION, true);\n  }\n}\n\n/**\n * Checks if a span's HTTP target matches the tunnel route.\n */\nfunction isTunnelRouteSpan(spanAttributes: Record): boolean {\n  const tunnelPath = globalWithInjectedValues._sentryRewritesTunnelPath || process.env._sentryRewritesTunnelPath;\n  if (!tunnelPath) {\n    return false;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  const httpTarget = spanAttributes[SEMATTRS_HTTP_TARGET];\n\n  if (typeof httpTarget === 'string') {\n    // Extract pathname from the target (e.g., \"/tunnel?o=123&p=456\" -> \"/tunnel\")\n    const pathname = httpTarget.split('?')[0] || '';\n\n    return pathname === tunnelPath || pathname.startsWith(`${tunnelPath}/`);\n  }\n\n  return false;\n}\n","import { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport type { PropagationContext, Span, SpanAttributes } from '@sentry/core';\nimport {\n  debug,\n  getActiveSpan,\n  getClient,\n  getRootSpan,\n  GLOBAL_OBJ,\n  Scope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  spanToJSON,\n  startNewTrace,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { ATTR_NEXT_SEGMENT, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../nextSpanAttributes';\nimport { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached';\n\nconst commonPropagationContextMap = new WeakMap();\n\nconst PAGE_SEGMENT = '__PAGE__';\n\n/**\n * Takes a shared (garbage collectable) object between resources, e.g. a headers object shared between Next.js server components and returns a common propagation context.\n *\n * @param commonObject The shared object.\n * @param propagationContext The propagation context that should be shared between all the resources if no propagation context was registered yet.\n * @returns the shared propagation context.\n */\nexport function commonObjectToPropagationContext(\n  commonObject: unknown,\n  propagationContext: PropagationContext,\n): PropagationContext {\n  if (typeof commonObject === 'object' && commonObject) {\n    const memoPropagationContext = commonPropagationContextMap.get(commonObject);\n    if (memoPropagationContext) {\n      return memoPropagationContext;\n    } else {\n      commonPropagationContextMap.set(commonObject, propagationContext);\n      return propagationContext;\n    }\n  } else {\n    return propagationContext;\n  }\n}\n\nconst commonIsolationScopeMap = new WeakMap();\n\n/**\n * Takes a shared (garbage collectable) object between resources, e.g. a headers object shared between Next.js server components and returns a common propagation context.\n *\n * @param commonObject The shared object.\n * @param isolationScope The isolationScope that should be shared between all the resources if no isolation scope was created yet.\n * @returns the shared isolation scope.\n */\nexport function commonObjectToIsolationScope(commonObject: unknown): Scope {\n  if (typeof commonObject === 'object' && commonObject) {\n    const memoIsolationScope = commonIsolationScopeMap.get(commonObject);\n    if (memoIsolationScope) {\n      return memoIsolationScope;\n    } else {\n      const newIsolationScope = new Scope();\n      commonIsolationScopeMap.set(commonObject, newIsolationScope);\n      return newIsolationScope;\n    }\n  } else {\n    return new Scope();\n  }\n}\n\ninterface AsyncLocalStorage {\n  getStore(): T | undefined;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  run(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R;\n}\n\nlet nextjsEscapedAsyncStorage: AsyncLocalStorage;\n\n/**\n * Will mark the execution context of the callback as \"escaped\" from Next.js internal tracing by unsetting the active\n * span and propagation context. When an execution passes through this function multiple times, it is a noop after the\n * first time.\n */\nexport function escapeNextjsTracing(cb: () => T): T {\n  const MaybeGlobalAsyncLocalStorage = (GLOBAL_OBJ as { AsyncLocalStorage?: new () => AsyncLocalStorage })\n    .AsyncLocalStorage;\n\n  if (!MaybeGlobalAsyncLocalStorage) {\n    DEBUG_BUILD &&\n      debug.warn(\n        \"Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage.\",\n      );\n    return cb();\n  }\n\n  if (!nextjsEscapedAsyncStorage) {\n    nextjsEscapedAsyncStorage = new MaybeGlobalAsyncLocalStorage();\n  }\n\n  if (nextjsEscapedAsyncStorage.getStore()) {\n    return cb();\n  } else {\n    return startNewTrace(() => {\n      return nextjsEscapedAsyncStorage.run(true, () => {\n        return cb();\n      });\n    });\n  }\n}\n\n/**\n * Ideally this function never lands in the develop branch.\n *\n * Drops the entire span tree this function was called in, if it was a span tree created by Next.js.\n */\nexport function dropNextjsRootContext(): void {\n  // When the user brings their own OTel setup (skipOpenTelemetrySetup: true), we should not\n  // mutate their spans with Sentry-internal attributes like `sentry.drop_transaction`\n  if ((getClient()?.getOptions() as { skipOpenTelemetrySetup?: boolean } | undefined)?.skipOpenTelemetrySetup) {\n    return;\n  }\n\n  const nextJsOwnedSpan = getActiveSpan();\n  if (nextJsOwnedSpan) {\n    const rootSpan = getRootSpan(nextJsOwnedSpan);\n    const rootSpanAttributes = spanToJSON(rootSpan).data;\n    if (rootSpanAttributes?.['next.span_type']) {\n      getRootSpan(nextJsOwnedSpan)?.setAttribute(TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION, true);\n    }\n  }\n}\n\n/**\n * Checks if the span is a resolve segment span.\n * @param spanAttributes The attributes of the span to check.\n * @returns True if the span is a resolve segment span, false otherwise.\n */\nexport function isResolveSegmentSpan(spanAttributes: SpanAttributes): boolean {\n  return (\n    spanAttributes[ATTR_NEXT_SPAN_TYPE] === 'NextNodeServer.getLayoutOrPageModule' &&\n    spanAttributes[ATTR_NEXT_SPAN_NAME] === 'resolve segment modules' &&\n    typeof spanAttributes[ATTR_NEXT_SEGMENT] === 'string'\n  );\n}\n\n/**\n * Returns the enhanced name for a resolve segment span.\n * @param segment The segment of the resolve segment span.\n * @param route The route of the resolve segment span.\n * @returns The enhanced name for the resolve segment span.\n */\nexport function getEnhancedResolveSegmentSpanName({ segment, route }: { segment: string; route: string }): string {\n  if (segment === PAGE_SEGMENT) {\n    return `resolve page server component \"${route}\"`;\n  }\n\n  if (segment === '') {\n    return 'resolve root layout server component';\n  }\n\n  return `resolve layout server component \"${segment}\"`;\n}\n\n/**\n * Maybe enhances the span name for a resolve segment span.\n * If the span is not a resolve segment span, this function does nothing.\n * @param activeSpan The active span.\n * @param spanAttributes The attributes of the span to check.\n * @param rootSpanAttributes The attributes of the according root span.\n */\nexport function maybeEnhanceServerComponentSpanName(\n  activeSpan: Span,\n  spanAttributes: SpanAttributes,\n  rootSpanAttributes: SpanAttributes,\n): void {\n  if (!isResolveSegmentSpan(spanAttributes)) {\n    return;\n  }\n\n  const segment = spanAttributes[ATTR_NEXT_SEGMENT] as string;\n  const route = rootSpanAttributes[ATTR_HTTP_ROUTE];\n  const enhancedName = getEnhancedResolveSegmentSpanName({ segment, route: typeof route === 'string' ? route : '' });\n  activeSpan.updateName(enhancedName);\n  activeSpan.setAttributes({\n    'sentry.nextjs.ssr.function.type': segment === PAGE_SEGMENT ? 'Page' : 'Layout',\n    'sentry.nextjs.ssr.function.route': route,\n  });\n  activeSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'function.nextjs');\n}\n","import type { Span } from '@sentry/core';\nimport { _INTERNAL_safeDateNow, captureCheckIn, debug, getIsolationScope, spanToJSON } from '@sentry/core';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport type { VercelCronsConfig } from '../common/types';\n\n// Attribute keys for storing cron check-in data on spans\nconst ATTR_SENTRY_CRON_CHECK_IN_ID = 'sentry.cron.checkInId';\nconst ATTR_SENTRY_CRON_MONITOR_SLUG = 'sentry.cron.monitorSlug';\nconst ATTR_SENTRY_CRON_START_TIME = 'sentry.cron.startTime';\nconst ATTR_SENTRY_CRON_SCHEDULE = 'sentry.cron.schedule';\n\n/**\n * Gets the Vercel crons configuration that was injected at build time.\n */\nfunction getVercelCronsConfig(): VercelCronsConfig {\n  const globalWithCronsConfig = globalThis as typeof globalThis & {\n    _sentryVercelCronsConfig?: string;\n  };\n\n  if (!globalWithCronsConfig._sentryVercelCronsConfig) {\n    return undefined;\n  }\n\n  try {\n    return JSON.parse(globalWithCronsConfig._sentryVercelCronsConfig) as VercelCronsConfig;\n  } catch {\n    DEBUG_BUILD && debug.log('[@sentry/nextjs] Failed to parse Vercel crons config');\n    return undefined;\n  }\n}\n\n/**\n * Checks if the request is a Vercel cron request and starts a check-in if it matches a configured cron.\n */\nexport function maybeStartCronCheckIn(span: Span, route: string | undefined): void {\n  const vercelCronsConfig = getVercelCronsConfig();\n  if (!vercelCronsConfig || !route) {\n    return;\n  }\n\n  // The strategy here is to check if the request is a Vercel cron\n  // request by checking the user agent, vercel always sets the user agent to 'vercel-cron/1.0'\n\n  const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers as\n    | Record\n    | undefined;\n\n  if (!headers) {\n    return;\n  }\n\n  const userAgent = Array.isArray(headers['user-agent']) ? headers['user-agent'][0] : headers['user-agent'];\n  if (!userAgent?.includes('vercel-cron')) {\n    return;\n  }\n\n  const matchedCron = vercelCronsConfig.find(cron => cron.path === route);\n  if (!matchedCron?.path || !matchedCron.schedule) {\n    return;\n  }\n\n  // Use raw path as monitor slug to match legacy wrapApiHandlerWithSentryVercelCrons behavior,\n  // so migration from automaticVercelMonitors to vercelCronsMonitoring keeps the same monitors.\n  const monitorSlug = matchedCron.path;\n  const startTime = _INTERNAL_safeDateNow() / 1000;\n\n  const checkInId = captureCheckIn(\n    { monitorSlug, status: 'in_progress' },\n    {\n      maxRuntime: 60 * 12,\n      schedule: { type: 'crontab', value: matchedCron.schedule },\n    },\n  );\n\n  DEBUG_BUILD && debug.log(`[Cron] Started check-in for \"${monitorSlug}\" with ID \"${checkInId}\"`);\n\n  // Store marking attributes on the span so we can complete the check-in later\n  span.setAttribute(ATTR_SENTRY_CRON_CHECK_IN_ID, checkInId);\n  span.setAttribute(ATTR_SENTRY_CRON_MONITOR_SLUG, monitorSlug);\n  span.setAttribute(ATTR_SENTRY_CRON_START_TIME, startTime);\n  span.setAttribute(ATTR_SENTRY_CRON_SCHEDULE, matchedCron.schedule);\n}\n\n/**\n * Completes a Vercel cron check-in when a span ends.\n * Should be called from the spanEnd event handler.\n */\nexport function maybeCompleteCronCheckIn(span: Span): void {\n  const spanData = spanToJSON(span).data;\n  const checkInId = spanData?.[ATTR_SENTRY_CRON_CHECK_IN_ID];\n  const monitorSlug = spanData?.[ATTR_SENTRY_CRON_MONITOR_SLUG];\n  const startTime = spanData?.[ATTR_SENTRY_CRON_START_TIME];\n  const schedule = spanData?.[ATTR_SENTRY_CRON_SCHEDULE];\n\n  if (!checkInId || !monitorSlug || typeof startTime !== 'number') {\n    return;\n  }\n\n  const duration = _INTERNAL_safeDateNow() / 1000 - startTime;\n  const spanStatus = spanToJSON(span).status;\n  // Span status is 'ok' for success, undefined for unset, or an error message like 'internal_error'\n  const checkInStatus = spanStatus && spanStatus !== 'ok' ? 'error' : 'ok';\n\n  // Include monitor_config for upsert in case the in_progress check-in was lost\n  const monitorConfig =\n    typeof schedule === 'string'\n      ? {\n          maxRuntime: 60 * 12,\n          schedule: { type: 'crontab' as const, value: schedule },\n        }\n      : undefined;\n\n  captureCheckIn(\n    {\n      checkInId: checkInId as string,\n      monitorSlug: monitorSlug as string,\n      status: checkInStatus,\n      duration,\n    },\n    monitorConfig,\n  );\n\n  // Cleanup marking attributes so they don't pollute user span data\n  span.setAttribute(ATTR_SENTRY_CRON_CHECK_IN_ID, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_MONITOR_SLUG, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_START_TIME, undefined);\n  span.setAttribute(ATTR_SENTRY_CRON_SCHEDULE, undefined);\n\n  DEBUG_BUILD && debug.log(`[Cron] Completed check-in for \"${monitorSlug}\" with status \"${checkInStatus}\"`);\n}\n","import type { Span } from '@sentry/core';\nimport { getIsolationScope, spanToJSON } from '@sentry/core';\n\n// OTel Messaging semantic convention attribute keys\nconst ATTR_MESSAGING_SYSTEM = 'messaging.system';\nconst ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name';\nconst ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id';\nconst ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name';\nconst ATTR_MESSAGING_CONSUMER_GROUP_NAME = 'messaging.consumer.group.name';\nconst ATTR_MESSAGING_MESSAGE_DELIVERY_COUNT = 'messaging.message.delivery_count';\n\n// Marker attribute to track enriched spans for cleanup\nconst ATTR_SENTRY_QUEUE_ENRICHED = 'sentry.queue.enriched';\n\n/**\n * Checks if the incoming request is a Vercel Queue consumer callback (push mode)\n * and enriches the http.server span with OTel messaging semantic attributes.\n *\n * Vercel Queues push delivery sends a CloudEvent POST with the header:\n *   ce-type: com.vercel.queue.v2beta\n * along with ce-vqs* headers carrying queue metadata.\n */\nexport function maybeEnrichQueueConsumerSpan(span: Span): void {\n  const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers as\n    | Record\n    | undefined;\n\n  if (!headers) {\n    return;\n  }\n\n  const ceType = Array.isArray(headers['ce-type']) ? headers['ce-type'][0] : headers['ce-type'];\n  if (ceType !== 'com.vercel.queue.v2beta') {\n    return;\n  }\n\n  const queueName = getHeader(headers, 'ce-vqsqueuename');\n  const messageId = getHeader(headers, 'ce-vqsmessageid');\n  const consumerGroup = getHeader(headers, 'ce-vqsconsumergroup');\n  const deliveryCount = getHeader(headers, 'ce-vqsdeliverycount');\n\n  span.setAttribute(ATTR_MESSAGING_SYSTEM, 'vercel.queue');\n  span.setAttribute(ATTR_MESSAGING_OPERATION_NAME, 'process');\n\n  if (queueName) {\n    span.setAttribute(ATTR_MESSAGING_DESTINATION_NAME, queueName);\n  }\n\n  if (messageId) {\n    span.setAttribute(ATTR_MESSAGING_MESSAGE_ID, messageId);\n  }\n\n  if (consumerGroup) {\n    span.setAttribute(ATTR_MESSAGING_CONSUMER_GROUP_NAME, consumerGroup);\n  }\n\n  if (deliveryCount) {\n    const count = parseInt(deliveryCount, 10);\n    if (!isNaN(count)) {\n      span.setAttribute(ATTR_MESSAGING_MESSAGE_DELIVERY_COUNT, count);\n    }\n  }\n\n  // Mark span so we can clean up marker on spanEnd\n  span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, true);\n}\n\n/**\n * Checks if an outgoing http.client span targets the Vercel Queues API\n * and enriches it with OTel messaging semantic attributes (producer side).\n *\n * The Vercel Queues API lives at *.vercel-queue.com/api/v3/topic/.\n * We use domain-based detection to avoid false positives from user routes.\n */\nexport function maybeEnrichQueueProducerSpan(span: Span): void {\n  const spanData = spanToJSON(span).data;\n\n  // http.client spans have url.full attribute\n  const urlFull = spanData?.['url.full'] as string | undefined;\n  if (!urlFull) {\n    return;\n  }\n\n  let parsed: URL;\n  try {\n    parsed = new URL(urlFull);\n  } catch {\n    return;\n  }\n\n  if (parsed.hostname !== 'vercel-queue.com' && !parsed.hostname.endsWith('.vercel-queue.com')) {\n    return;\n  }\n\n  // Extract topic from path: /api/v3/topic/[/]\n  const topicMatch = parsed.pathname.match(/^\\/api\\/v3\\/topic\\/([^/]+)/);\n  if (!topicMatch) {\n    return;\n  }\n\n  const topic = decodeURIComponent(topicMatch[1]!);\n\n  span.setAttribute(ATTR_MESSAGING_SYSTEM, 'vercel.queue');\n  span.setAttribute(ATTR_MESSAGING_DESTINATION_NAME, topic);\n  span.setAttribute(ATTR_MESSAGING_OPERATION_NAME, 'send');\n\n  // Mark span so we can clean up marker on spanEnd\n  span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, true);\n}\n\n/**\n * Cleans up the internal marker attribute from enriched queue spans on end.\n */\nexport function maybeCleanupQueueSpan(span: Span): void {\n  const spanData = spanToJSON(span).data;\n  if (spanData?.[ATTR_SENTRY_QUEUE_ENRICHED]) {\n    span.setAttribute(ATTR_SENTRY_QUEUE_ENRICHED, undefined);\n  }\n}\n\nfunction getHeader(headers: Record, name: string): string | undefined {\n  const value = headers[name];\n  return Array.isArray(value) ? value[0] : value;\n}\n","import { context } from '@opentelemetry/api';\nimport { ATTR_HTTP_REQUEST_METHOD, ATTR_HTTP_ROUTE, SEMATTRS_HTTP_METHOD } from '@opentelemetry/semantic-conventions';\nimport type { Span } from '@sentry/core';\nimport {\n  getCapturedScopesOnSpan,\n  getCurrentScope,\n  getIsolationScope,\n  getRootSpan,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  setCapturedScopesOnSpan,\n  spanToJSON,\n} from '@sentry/core';\nimport { getScopesFromContext } from '@sentry/opentelemetry';\nimport { ATTR_NEXT_ROUTE, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../common/nextSpanAttributes';\nimport { addHeadersAsAttributes } from '../common/utils/addHeadersAsAttributes';\nimport { dropMiddlewareTunnelRequests } from '../common/utils/dropMiddlewareTunnelRequests';\nimport { maybeEnhanceServerComponentSpanName } from '../common/utils/tracingUtils';\nimport { maybeStartCronCheckIn } from './vercelCronsMonitoring';\nimport { maybeEnrichQueueConsumerSpan, maybeEnrichQueueProducerSpan } from './vercelQueuesMonitoring';\n\n/**\n * Handles the on span start event for Next.js spans.\n * This function is used to enhance the span with additional information such as the route, the method, the headers, etc.\n * It is called for every span that is started by Next.js.\n * @param span The span that is starting.\n */\nexport function handleOnSpanStart(span: Span): void {\n  const spanAttributes = spanToJSON(span).data;\n  const rootSpan = getRootSpan(span);\n  const rootSpanAttributes = spanToJSON(rootSpan).data;\n  const isRootSpan = span === rootSpan;\n\n  dropMiddlewareTunnelRequests(span, spanAttributes);\n\n  // What we do in this glorious piece of code, is hoist any information about parameterized routes from spans emitted\n  // by Next.js via the `next.route` attribute, up to the transaction by setting the http.route attribute.\n  if (typeof spanAttributes?.[ATTR_NEXT_ROUTE] === 'string') {\n    // Only hoist the http.route attribute if the transaction doesn't already have it\n    if (\n      // eslint-disable-next-line deprecation/deprecation\n      (rootSpanAttributes?.[ATTR_HTTP_REQUEST_METHOD] || rootSpanAttributes?.[SEMATTRS_HTTP_METHOD]) &&\n      !rootSpanAttributes?.[ATTR_HTTP_ROUTE]\n    ) {\n      const route = spanAttributes[ATTR_NEXT_ROUTE].replace(/\\/route$/, '');\n      rootSpan.updateName(route);\n      rootSpan.setAttribute(ATTR_HTTP_ROUTE, route);\n      // Preserving the original attribute despite internally not depending on it\n      rootSpan.setAttribute(ATTR_NEXT_ROUTE, route);\n\n      // Update the isolation scope's transaction name so that non-transaction events\n      // (e.g. captureMessage, captureException) also get the parameterized route.\n      // eslint-disable-next-line deprecation/deprecation\n      const method = rootSpanAttributes?.[ATTR_HTTP_REQUEST_METHOD] || rootSpanAttributes?.[SEMATTRS_HTTP_METHOD];\n      if (typeof method === 'string') {\n        getIsolationScope().setTransactionName(`${method} ${route}`);\n      }\n\n      // Check if this is a Vercel cron request and start a check-in\n      maybeStartCronCheckIn(rootSpan, route);\n\n      // Enrich queue consumer spans (Vercel Queue push delivery via CloudEvent)\n      maybeEnrichQueueConsumerSpan(rootSpan);\n    }\n  }\n\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] === 'Middleware.execute') {\n    const middlewareName = spanAttributes[ATTR_NEXT_SPAN_NAME];\n    if (typeof middlewareName === 'string') {\n      rootSpan.updateName(middlewareName);\n      rootSpan.setAttribute(ATTR_HTTP_ROUTE, middlewareName);\n      rootSpan.setAttribute(ATTR_NEXT_SPAN_NAME, middlewareName);\n    }\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto');\n  }\n\n  // We want to skip span data inference for any spans generated by Next.js. Reason being that Next.js emits spans\n  // with patterns (e.g. http.server spans) that will produce confusing data.\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] !== undefined) {\n    span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto');\n  }\n\n  if (isRootSpan) {\n    const headers = getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;\n    addHeadersAsAttributes(headers, rootSpan);\n  }\n\n  // We want to fork the isolation scope for incoming requests\n  if (spanAttributes?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest' && isRootSpan) {\n    const scopes = getCapturedScopesOnSpan(span);\n\n    const isolationScope = (scopes.isolationScope || getIsolationScope()).clone();\n    const scope = scopes.scope || getCurrentScope();\n\n    const currentScopesPointer = getScopesFromContext(context.active());\n    if (currentScopesPointer) {\n      currentScopesPointer.isolationScope = isolationScope;\n    }\n\n    setCapturedScopesOnSpan(span, scope, isolationScope);\n  }\n\n  maybeEnhanceServerComponentSpanName(span, spanAttributes, rootSpanAttributes);\n\n  // Enrich outgoing http.client spans targeting the Vercel Queues API (producer)\n  maybeEnrichQueueProducerSpan(span);\n}\n","import { type _INTERNAL_RandomSafeContextRunner as RandomSafeContextRunner, debug, GLOBAL_OBJ } from '@sentry/core';\nimport { DEBUG_BUILD } from '../common/debug-build';\n\n// Inline AsyncLocalStorage interface from current types\n// Avoids conflict with resolving it from getBuiltinModule\ntype OriginalAsyncLocalStorage = typeof AsyncLocalStorage;\n\n/**\n * Prepares the global object to generate safe random IDs in cache components contexts\n * See: https://github.com/getsentry/sentry-javascript/blob/ceb003c15973c2d8f437dfb7025eedffbc8bc8b0/packages/core/src/utils/propagationContext.ts#L1\n */\nexport function prepareSafeIdGeneratorContext(): void {\n  const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__');\n  const globalWithSymbol: typeof GLOBAL_OBJ & { [sym]?: RandomSafeContextRunner } = GLOBAL_OBJ;\n\n  // Get initial snapshot - if unavailable, don't set up the wrapper at all\n  const initialSnapshot = getAsyncLocalStorageSnapshot();\n  if (!initialSnapshot) {\n    return;\n  }\n\n  // We store a wrapper function instead of the raw snapshot because in serverless\n  // environments (e.g., Cloudflare Workers), the snapshot is bound to the request\n  // context it was created in. Once that request ends, the snapshot becomes invalid.\n  // The wrapper catches this and creates a fresh snapshot for the current request context.\n  let cachedSnapshot: RandomSafeContextRunner = initialSnapshot;\n\n  globalWithSymbol[sym] = (callback: () => T): T => {\n    try {\n      return cachedSnapshot(callback);\n    } catch (error) {\n      // Only handle AsyncLocalStorage-related errors, rethrow others\n      if (!isAsyncLocalStorageError(error)) {\n        throw error;\n      }\n\n      // Snapshot likely stale, try to get a fresh one and retry\n      const freshSnapshot = getAsyncLocalStorageSnapshot();\n      // No snapshot available, fall back to direct execution\n      if (!freshSnapshot) {\n        return callback();\n      }\n\n      // Update the cached snapshot\n      cachedSnapshot = freshSnapshot;\n\n      // Retry the callback with the fresh snapshot\n      try {\n        return cachedSnapshot(callback);\n      } catch (retryError) {\n        // Only fall back for AsyncLocalStorage errors, rethrow others\n        if (!isAsyncLocalStorageError(retryError)) {\n          throw retryError;\n        }\n        // If fresh snapshot also fails with ALS error, fall back to direct execution\n        return callback();\n      }\n    }\n  };\n\n  DEBUG_BUILD && debug.log('[@sentry/nextjs] Prepared safe random ID generator context');\n}\n\nfunction getAsyncLocalStorage(): OriginalAsyncLocalStorage | undefined {\n  // May exist in the Next.js runtime globals\n  // Doesn't exist in some of our tests\n  if (typeof AsyncLocalStorage !== 'undefined') {\n    return AsyncLocalStorage;\n  }\n\n  // Try to resolve it dynamically without synchronously importing the module\n  // This is done to avoid importing the module synchronously at the top\n  // which means this is safe across runtimes\n  if ('getBuiltinModule' in process && typeof process.getBuiltinModule === 'function') {\n    const { AsyncLocalStorage } = process.getBuiltinModule('async_hooks') ?? {};\n\n    return AsyncLocalStorage as OriginalAsyncLocalStorage;\n  }\n\n  return undefined;\n}\n\nfunction getAsyncLocalStorageSnapshot(): RandomSafeContextRunner | undefined {\n  const als = getAsyncLocalStorage();\n\n  if (!als || typeof als.snapshot !== 'function') {\n    DEBUG_BUILD &&\n      debug.warn(\n        '[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.',\n      );\n    return undefined;\n  }\n\n  return als.snapshot();\n}\n\nfunction isAsyncLocalStorageError(error: unknown): boolean {\n  return error instanceof Error && error.message.includes('AsyncLocalStorage');\n}\n","import {\n  captureException,\n  getIsolationScope,\n  httpRequestToRequestData,\n  isAlreadyCaptured,\n  withScope,\n} from '@sentry/core';\nimport type { NextPageContext } from 'next';\nimport { flushSafelyWithTimeout, waitUntil } from '../utils/responseEnd';\n\ntype ContextOrProps = {\n  req?: NextPageContext['req'];\n  res?: NextPageContext['res'];\n  err?: NextPageContext['err'] | string;\n  pathname?: string;\n  statusCode?: number;\n};\n\n/**\n * Capture the exception passed by nextjs to the `_error` page, adding context data as appropriate.\n *\n * This will not capture the exception if the status code is < 500 or if the pathname is not provided and will thus not return an event ID.\n *\n * @param contextOrProps The data passed to either `getInitialProps` or `render` by nextjs\n * @returns The Sentry event ID, or `undefined` if no event was captured\n */\nexport async function captureUnderscoreErrorException(contextOrProps: ContextOrProps): Promise {\n  const { req, res, err } = contextOrProps;\n\n  // 404s (and other 400-y friends) can trigger `_error`, but we don't want to send them to Sentry\n  const statusCode = res?.statusCode || contextOrProps.statusCode;\n  if (statusCode && statusCode < 500) {\n    return;\n  }\n\n  // In previous versions of the suggested `_error.js` page in which this function is meant to be used, there was a\n  // workaround for https://github.com/vercel/next.js/issues/8592 which involved an extra call to this function, in the\n  // custom error component's `render` method, just in case it hadn't been called by `getInitialProps`. Now that that\n  // issue has been fixed, the second call is unnecessary, but since it lives in user code rather than our code, users\n  // have to be the ones to get rid of it, and guaraneteedly, not all of them will. So, rather than capture the error\n  // twice, we just bail if we sense we're in that now-extraneous second call. (We can tell which function we're in\n  // because Nextjs passes `pathname` to `getInitialProps` but not to `render`.)\n  if (!contextOrProps.pathname) {\n    return;\n  }\n\n  // If the error was already captured (e.g., by wrapped functions in data fetchers),\n  // return the existing event ID instead of capturing it again (needed for lastEventId() to work)\n  if (err && isAlreadyCaptured(err)) {\n    waitUntil(flushSafelyWithTimeout());\n\n    const storedEventId =\n      typeof err === 'object' ? (err as unknown as Record).__sentry_event_id__ : undefined;\n\n    if (typeof storedEventId === 'string') {\n      getIsolationScope().setLastEventId(storedEventId);\n      return storedEventId;\n    }\n\n    return getIsolationScope().lastEventId();\n  }\n\n  const eventId = withScope(scope => {\n    if (req) {\n      const normalizedRequest = httpRequestToRequestData(req);\n      scope.setSDKProcessingMetadata({ normalizedRequest });\n    }\n\n    // If third-party libraries (or users themselves) throw something falsy, we want to capture it as a message (which\n    // is what passing a string to `captureException` will wind up doing)\n    return captureException(err || `_error.js called with falsy error (${err})`, {\n      mechanism: {\n        type: 'auto.function.nextjs.underscore_error',\n        handled: false,\n        data: {\n          function: '_error.getInitialProps',\n        },\n      },\n    });\n  });\n\n  waitUntil(flushSafelyWithTimeout());\n\n  return eventId;\n}\n","// Vendored from: https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/client-and-server-references.ts\n\ninterface ServerReferenceInfo {\n  type: 'server-action' | 'use-cache';\n  usedArgs: [boolean, boolean, boolean, boolean, boolean, boolean];\n  hasRestArgs: boolean;\n}\n\nexport interface ServerReference {\n  $$typeof: symbol;\n  $$id: string;\n}\n\nexport type ServerFunction = ServerReference & ((...args: unknown[]) => Promise);\n\nfunction extractInfoFromServerReferenceId(id: string): ServerReferenceInfo {\n  const infoByte = parseInt(id.slice(0, 2), 16);\n  // eslint-disable-next-line no-bitwise\n  const typeBit = (infoByte >> 7) & 0x1;\n  // eslint-disable-next-line no-bitwise\n  const argMask = (infoByte >> 1) & 0x3f;\n  // eslint-disable-next-line no-bitwise\n  const restArgs = infoByte & 0x1;\n  const usedArgs = Array(6);\n\n  for (let index = 0; index < 6; index++) {\n    const bitPosition = 5 - index;\n    // eslint-disable-next-line no-bitwise\n    const bit = (argMask >> bitPosition) & 0x1;\n    usedArgs[index] = bit === 1;\n  }\n\n  return {\n    type: typeBit === 1 ? 'use-cache' : 'server-action',\n    usedArgs: usedArgs as [boolean, boolean, boolean, boolean, boolean, boolean],\n    hasRestArgs: restArgs === 1,\n  };\n}\n\nfunction isServerReference(value: T & Partial): value is T & ServerFunction {\n  return value.$$typeof === Symbol.for('react.server.reference');\n}\n\n/**\n * Check if the function is a use cache function.\n *\n * @param value - The function to check.\n * @returns true if the function is a use cache function, false otherwise.\n */\nexport function isUseCacheFunction(value: T & Partial): value is T & ServerFunction {\n  if (!isServerReference(value)) {\n    return false;\n  }\n\n  const { type } = extractInfoFromServerReferenceId(value.$$id);\n\n  return type === 'use-cache';\n}\n","import type { Span, StartSpanOptions } from '@sentry/core';\nimport {\n  debug,\n  SentryNonRecordingSpan,\n  startInactiveSpan as coreStartInactiveSpan,\n  startSpan as coreStartSpan,\n  startSpanManual as coreStartSpanManual,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { isBuild } from './isBuild';\nimport type { ServerReference } from './isUseCacheFunction';\nimport { isUseCacheFunction } from './isUseCacheFunction';\n\nfunction shouldNoopSpan(callback?: T & Partial): boolean {\n  const isBuildContext = isBuild();\n  const isUseCacheFunctionContext = callback ? isUseCacheFunction(callback) : false;\n\n  if (isUseCacheFunctionContext) {\n    DEBUG_BUILD && debug.log('Skipping span creation in Cache Components context');\n  }\n\n  return isBuildContext || isUseCacheFunctionContext;\n}\n\nfunction createNonRecordingSpan(): Span {\n  return new SentryNonRecordingSpan({\n    traceId: '00000000000000000000000000000000',\n    spanId: '0000000000000000',\n  });\n}\n\n/**\n * Next.js-specific implementation of `startSpan` that skips span creation\n * in Cache Components contexts (which render at build time).\n *\n * When in a Cache Components context, we execute the callback with a non-recording span\n * and return early without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @param callback - Callback function that receives the span\n * @returns The return value of the callback\n */\nexport function startSpan(options: StartSpanOptions, callback: (span: Span) => T): T {\n  if (shouldNoopSpan(callback)) {\n    return callback(createNonRecordingSpan());\n  }\n\n  return coreStartSpan(options, callback);\n}\n\n/**\n *\n * When in a Cache Components context, we execute the callback with a non-recording span\n * and return early without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @param callback - Callback function that receives the span and finish function\n * @returns The return value of the callback\n */\nexport function startSpanManual(options: StartSpanOptions, callback: (span: Span, finish: () => void) => T): T {\n  if (shouldNoopSpan(callback)) {\n    const nonRecordingSpan = createNonRecordingSpan();\n    return callback(nonRecordingSpan, () => nonRecordingSpan.end());\n  }\n\n  return coreStartSpanManual(options, callback);\n}\n\n/**\n *\n * When in a Cache Components context, we return a non-recording span and return early\n * without creating an actual span, since spans don't make sense at build/cache time.\n *\n * @param options - Options for starting the span\n * @returns A non-recording span (in Cache Components context) or the created span\n */\nexport function startInactiveSpan(options: StartSpanOptions): Span {\n  if (shouldNoopSpan()) {\n    return createNonRecordingSpan();\n  }\n\n  return coreStartInactiveSpan(options);\n}\n","import {\n  captureException,\n  getActiveSpan,\n  getCurrentScope,\n  getIsolationScope,\n  getRootSpan,\n  getTraceData,\n  httpRequestToRequestData,\n  isThenable,\n} from '@sentry/core';\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport { TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL } from '../span-attributes-with-logic-attached';\n\n/**\n * Wraps a function that potentially throws. If it does, the error is passed to `captureException` and rethrown.\n *\n * Note: This function turns the wrapped function into an asynchronous one.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withErrorInstrumentation any>(\n  origFunction: F,\n): (...params: Parameters) => Promise> {\n  return async function (this: unknown, ...origFunctionArguments: Parameters): Promise> {\n    try {\n      return await origFunction.apply(this, origFunctionArguments);\n    } catch (e) {\n      // TODO: Extract error logic from `withSentry` in here or create a new wrapper with said logic or something like that.\n      captureException(e, {\n        // TODO: check if origFunction.name actually returns the correct name or minified garbage\n        // in this case, we can add another argument to this wrapper with the respective function name\n        mechanism: { handled: false, type: 'auto.function.nextjs.wrapped', data: { function: origFunction.name } },\n      });\n      throw e;\n    }\n  };\n}\n\n/**\n * Calls a server-side data fetching function (that takes a `req` and `res` object in its context) with tracing\n * instrumentation. A transaction will be created for the incoming request (if it doesn't already exist) in addition to\n * a span for the wrapped data fetching function.\n *\n * All of the above happens in an isolated domain, meaning all thrown errors will be associated with the correct span.\n *\n * @param origDataFetcher The data fetching method to call.\n * @param origFunctionArguments The arguments to call the data fetching method with.\n * @param req The data fetching function's request object.\n * @param res The data fetching function's response object.\n * @param options Options providing details for the created transaction and span.\n * @returns what the data fetching method call returned.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withTracedServerSideDataFetcher Promise | any>(\n  origDataFetcher: F,\n  req: IncomingMessage,\n  res: ServerResponse,\n  options: {\n    /** Parameterized route of the request - will be used for naming the transaction. */\n    requestedRouteName: string;\n    /** Name of the route the data fetcher was defined in - will be used for describing the data fetcher's span. */\n    dataFetcherRouteName: string;\n    /** Name of the data fetching method - will be used for describing the data fetcher's span. */\n    dataFetchingMethodName: string;\n  },\n): (...params: Parameters) => Promise<{ data: ReturnType; sentryTrace?: string; baggage?: string }> {\n  return async function (\n    this: unknown,\n    ...args: Parameters\n  ): Promise<{ data: ReturnType; sentryTrace?: string; baggage?: string }> {\n    const normalizedRequest = httpRequestToRequestData(req);\n    getCurrentScope().setTransactionName(`${options.dataFetchingMethodName} (${options.dataFetcherRouteName})`);\n    getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n    const span = getActiveSpan();\n\n    // Only set the route backfill if the span is not for /_error\n    if (span && options.requestedRouteName !== '/_error') {\n      const root = getRootSpan(span);\n      root.setAttribute(TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL, options.requestedRouteName);\n    }\n\n    const { 'sentry-trace': sentryTrace, baggage } = getTraceData();\n\n    return {\n      sentryTrace: sentryTrace,\n      baggage: baggage,\n      data: await origDataFetcher.apply(this, args),\n    };\n  };\n}\n\n/**\n * Call a data fetcher and trace it. Only traces the function if there is an active transaction on the scope.\n *\n * We only do the following until we move transaction creation into this function: When called, the wrapped function\n * will also update the name of the active transaction with a parameterized route provided via the `options` argument.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function callDataFetcherTraced Promise | any>(\n  origFunction: F,\n  origFunctionArgs: Parameters,\n): Promise> {\n  try {\n    return await origFunction(...origFunctionArgs);\n  } catch (e) {\n    captureException(e, { mechanism: { handled: false, type: 'auto.function.nextjs.data_fetcher' } });\n    throw e;\n  }\n}\n\n/**\n * Extracts the params and searchParams from the props object.\n *\n * Depending on the next version, params and searchParams may be a promise which we do not want to resolve in this function.\n */\nexport function maybeExtractSynchronousParamsAndSearchParams(props: unknown): {\n  params: Record | undefined;\n  searchParams: Record | undefined;\n} {\n  let params =\n    props && typeof props === 'object' && 'params' in props\n      ? (props.params as Record | Promise> | undefined)\n      : undefined;\n  if (isThenable(params)) {\n    params = undefined;\n  }\n\n  let searchParams =\n    props && typeof props === 'object' && 'searchParams' in props\n      ? (props.searchParams as Record | Promise> | undefined)\n      : undefined;\n  if (isThenable(searchParams)) {\n    searchParams = undefined;\n  }\n\n  return { params, searchParams };\n}\n","import type { GetStaticProps } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { callDataFetcherTraced, withErrorInstrumentation } from '../utils/wrapperUtils';\n\ntype Props = { [key: string]: unknown };\n\n/**\n * Create a wrapped version of the user's exported `getStaticProps` function\n *\n * @param origGetStaticProps The user's `getStaticProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetStaticPropsWithSentry(\n  origGetStaticPropsa: GetStaticProps,\n  _parameterizedRoute: string,\n): GetStaticProps {\n  return new Proxy(origGetStaticPropsa, {\n    apply: async (wrappingTarget, thisArg, args: Parameters>) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const errorWrappedGetStaticProps = withErrorInstrumentation(wrappingTarget);\n      return callDataFetcherTraced(errorWrappedGetStaticProps, args);\n    },\n  });\n}\n","import type { NextPage } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype GetInitialProps = Required['getInitialProps'];\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function\n *\n * @param origGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetInitialPropsWithSentry(origGetInitialProps: GetInitialProps): GetInitialProps {\n  return new Proxy(origGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: context.pathname,\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: initialProps,\n          baggage,\n          sentryTrace,\n        }: {\n          data?: unknown;\n          baggage?: string;\n          sentryTrace?: string;\n        } = (await tracedGetInitialProps.apply(thisArg, args)) ?? {}; // Next.js allows undefined to be returned from a getInitialPropsFunction.\n\n        if (typeof initialProps === 'object' && initialProps !== null) {\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (sentryTrace) {\n            (initialProps as Record)._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (initialProps as Record)._sentryBaggage = baggage;\n          }\n        }\n\n        return initialProps;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type App from 'next/app';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype AppGetInitialProps = (typeof App)['getInitialProps'];\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom app (\"_app.js\").\n *\n * @param origAppGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapAppGetInitialPropsWithSentry(origAppGetInitialProps: AppGetInitialProps): AppGetInitialProps {\n  return new Proxy(origAppGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context.ctx;\n\n      const errorWrappedAppGetInitialProps = withErrorInstrumentation(wrappingTarget);\n\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedAppGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_app',\n          requestedRouteName: context.ctx.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: appGetInitialProps,\n          sentryTrace,\n          baggage,\n        }: {\n          data?: unknown;\n          sentryTrace?: string;\n          baggage?: string;\n        } = await tracedGetInitialProps.apply(thisArg, args);\n\n        if (typeof appGetInitialProps === 'object' && appGetInitialProps !== null) {\n          // Per definition, `pageProps` is not optional, however an increased amount of users doesn't seem to call\n          // `App.getInitialProps(appContext)` in their custom `_app` pages which is required as per\n          // https://nextjs.org/docs/advanced-features/custom-app - resulting in missing `pageProps`.\n          // For this reason, we just handle the case where `pageProps` doesn't exist explicitly.\n          if (!(appGetInitialProps as Record).pageProps) {\n            (appGetInitialProps as Record).pageProps = {};\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (sentryTrace) {\n            (appGetInitialProps as { pageProps: Record }).pageProps._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (appGetInitialProps as { pageProps: Record }).pageProps._sentryBaggage = baggage;\n          }\n        }\n\n        return appGetInitialProps;\n      } else {\n        return errorWrappedAppGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type Document from 'next/document';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype DocumentGetInitialProps = typeof Document.getInitialProps;\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom document (\"_document.js\").\n *\n * @param origDocumentGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapDocumentGetInitialPropsWithSentry(\n  origDocumentGetInitialProps: DocumentGetInitialProps,\n): DocumentGetInitialProps {\n  return new Proxy(origDocumentGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_document',\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const { data } = await tracedGetInitialProps.apply(thisArg, args);\n        return data;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type { NextPageContext } from 'next';\nimport type { ErrorProps } from 'next/error';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\ntype ErrorGetInitialProps = (context: NextPageContext) => Promise;\n\n/**\n * Create a wrapped version of the user's exported `getInitialProps` function in\n * a custom error page (\"_error.js\").\n *\n * @param origErrorGetInitialProps The user's `getInitialProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapErrorGetInitialPropsWithSentry(\n  origErrorGetInitialProps: ErrorGetInitialProps,\n): ErrorGetInitialProps {\n  return new Proxy(origErrorGetInitialProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetInitialProps = withErrorInstrumentation(wrappingTarget);\n      // Generally we can assume that `req` and `res` are always defined on the server:\n      // https://nextjs.org/docs/api-reference/data-fetching/get-initial-props#context-object\n      // This does not seem to be the case in dev mode. Because we have no clean way of associating the the data fetcher\n      // span with each other when there are no req or res objects, we simply do not trace them at all here.\n      if (req && res) {\n        const tracedGetInitialProps = withTracedServerSideDataFetcher(errorWrappedGetInitialProps, req, res, {\n          dataFetcherRouteName: '/_error',\n          requestedRouteName: context.pathname,\n          dataFetchingMethodName: 'getInitialProps',\n        });\n\n        const {\n          data: errorGetInitialProps,\n          baggage,\n          sentryTrace,\n        }: {\n          data?: unknown;\n          baggage?: string;\n          sentryTrace?: string;\n        } = await tracedGetInitialProps.apply(thisArg, args);\n\n        if (typeof errorGetInitialProps === 'object' && errorGetInitialProps !== null) {\n          if (sentryTrace) {\n            // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n            (errorGetInitialProps as Record)._sentryTraceData = sentryTrace;\n          }\n\n          // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n          if (baggage) {\n            (errorGetInitialProps as Record)._sentryBaggage = baggage;\n          }\n        }\n\n        return errorGetInitialProps;\n      } else {\n        return errorWrappedGetInitialProps.apply(thisArg, args);\n      }\n    },\n  });\n}\n","import type { GetServerSideProps } from 'next';\nimport { isBuild } from '../utils/isBuild';\nimport { withErrorInstrumentation, withTracedServerSideDataFetcher } from '../utils/wrapperUtils';\n\n/**\n * Create a wrapped version of the user's exported `getServerSideProps` function\n *\n * @param origGetServerSideProps The user's `getServerSideProps` function\n * @param parameterizedRoute The page's parameterized route\n * @returns A wrapped version of the function\n */\nexport function wrapGetServerSidePropsWithSentry(\n  origGetServerSideProps: GetServerSideProps,\n  parameterizedRoute: string,\n): GetServerSideProps {\n  return new Proxy(origGetServerSideProps, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      if (isBuild()) {\n        return wrappingTarget.apply(thisArg, args);\n      }\n\n      const [context] = args;\n      const { req, res } = context;\n\n      const errorWrappedGetServerSideProps = withErrorInstrumentation(wrappingTarget);\n      const tracedGetServerSideProps = withTracedServerSideDataFetcher(errorWrappedGetServerSideProps, req, res, {\n        dataFetcherRouteName: parameterizedRoute,\n        requestedRouteName: parameterizedRoute,\n        dataFetchingMethodName: 'getServerSideProps',\n      });\n\n      const {\n        data: serverSideProps,\n        baggage,\n        sentryTrace,\n      }: {\n        data?: unknown;\n        baggage?: string;\n        sentryTrace?: string;\n      } = await (tracedGetServerSideProps.apply(thisArg, args) as ReturnType);\n\n      if (typeof serverSideProps === 'object' && serverSideProps !== null && 'props' in serverSideProps) {\n        // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n        if (sentryTrace) {\n          (serverSideProps.props as Record)._sentryTraceData = sentryTrace;\n        }\n\n        // The Next.js serializer throws on undefined values so we need to guard for it (#12102)\n        if (baggage) {\n          (serverSideProps.props as Record)._sentryBaggage = baggage;\n        }\n      }\n\n      return serverSideProps;\n    },\n  });\n}\n","import { isError } from '@sentry/core';\n\n/**\n * Determines whether input is a Next.js not-found error.\n * https://beta.nextjs.org/docs/api-reference/notfound#notfound\n */\nexport function isNotFoundNavigationError(subject: unknown): boolean {\n  return (\n    isError(subject) &&\n    ['NEXT_NOT_FOUND', 'NEXT_HTTP_ERROR_FALLBACK;404'].includes(\n      (subject as Error & { digest?: unknown }).digest as string,\n    )\n  );\n}\n\n/**\n * Determines whether input is a Next.js redirect error.\n * https://beta.nextjs.org/docs/api-reference/redirect#redirect\n */\nexport function isRedirectNavigationError(subject: unknown): boolean {\n  return (\n    isError(subject) &&\n    typeof (subject as Error & { digest?: unknown }).digest === 'string' &&\n    (subject as Error & { digest: string }).digest.startsWith('NEXT_REDIRECT;') // a redirect digest looks like \"NEXT_REDIRECT;[redirect path]\"\n  );\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getIsolationScope,\n  handleCallbackErrors,\n  SPAN_STATUS_ERROR,\n  SPAN_STATUS_OK,\n  winterCGHeadersToDict,\n} from '@sentry/core';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from '../common/nextNavigationErrorUtils';\nimport type { ServerComponentContext } from '../common/types';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\n\n/**\n * Wraps an `app` directory server component with Sentry error instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapServerComponentWithSentry any>(\n  appDirComponent: F,\n  context: ServerComponentContext,\n): F {\n  // Even though users may define server components as async functions, for the client bundles\n  // Next.js will turn them into synchronous functions and it will transform any `await`s into instances of the `use`\n  // hook. 🤯\n  return new Proxy(appDirComponent, {\n    apply: (originalFunction, thisArg, args) => {\n      const isolationScope = getIsolationScope();\n\n      const headersDict = context.headers ? winterCGHeadersToDict(context.headers) : undefined;\n\n      isolationScope.setSDKProcessingMetadata({\n        normalizedRequest: {\n          headers: headersDict,\n        } satisfies RequestEventData,\n      });\n\n      return handleCallbackErrors(\n        () => originalFunction.apply(thisArg, args),\n        error => {\n          const span = getActiveSpan();\n          const { componentRoute, componentType } = context;\n          let shouldCapture = true;\n          isolationScope.setTransactionName(`${componentType} Server Component (${componentRoute})`);\n\n          if (span) {\n            if (isNotFoundNavigationError(error)) {\n              // We don't want to report \"not-found\"s\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n            } else if (isRedirectNavigationError(error)) {\n              // We don't want to report redirects\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_OK });\n            } else {\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n            }\n          }\n\n          if (shouldCapture) {\n            captureException(error, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.server_component',\n              },\n            });\n          }\n        },\n        () => {\n          waitUntil(flushSafelyWithTimeout());\n        },\n      );\n    },\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getCapturedScopesOnSpan,\n  getIsolationScope,\n  getRootSpan,\n  handleCallbackErrors,\n  propagationContextFromHeaders,\n  Scope,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setCapturedScopesOnSpan,\n  setHttpStatus,\n  winterCGHeadersToDict,\n  withIsolationScope,\n  withScope,\n} from '@sentry/core';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\nimport type { RouteHandlerContext } from './types';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\nimport { commonObjectToIsolationScope } from './utils/tracingUtils';\n\n/**\n * Wraps a Next.js App Router Route handler with Sentry error and performance instrumentation.\n *\n * NOTICE: This wrapper is for App Router API routes. If you are looking to wrap Pages Router API routes use `wrapApiHandlerWithSentry` instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapRouteHandlerWithSentry any>(\n  routeHandler: F,\n  context: RouteHandlerContext,\n): (...args: Parameters) => ReturnType extends Promise ? ReturnType : Promise> {\n  const { method, parameterizedRoute, headers } = context;\n\n  return new Proxy(routeHandler, {\n    apply: async (originalFunction, thisArg, args) => {\n      const activeSpan = getActiveSpan();\n      const rootSpan = activeSpan ? getRootSpan(activeSpan) : undefined;\n\n      let edgeRuntimeIsolationScopeOverride: Scope | undefined;\n      if (rootSpan && process.env.NEXT_RUNTIME === 'edge') {\n        const isolationScope = commonObjectToIsolationScope(headers);\n        const { scope } = getCapturedScopesOnSpan(rootSpan);\n        setCapturedScopesOnSpan(rootSpan, scope ?? new Scope(), isolationScope);\n\n        edgeRuntimeIsolationScopeOverride = isolationScope;\n\n        rootSpan.updateName(`${method} ${parameterizedRoute}`);\n        rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'route');\n        rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.server');\n      }\n\n      return withIsolationScope(\n        process.env.NEXT_RUNTIME === 'edge' ? edgeRuntimeIsolationScopeOverride : getIsolationScope(),\n        () => {\n          return withScope(async scope => {\n            scope.setTransactionName(`${method} ${parameterizedRoute}`);\n\n            if (process.env.NEXT_RUNTIME === 'edge') {\n              const completeHeadersDict: Record = headers ? winterCGHeadersToDict(headers) : {};\n              const incomingPropagationContext = propagationContextFromHeaders(\n                completeHeadersDict['sentry-trace'],\n                completeHeadersDict['baggage'],\n              );\n              scope.setPropagationContext(incomingPropagationContext);\n              scope.setSDKProcessingMetadata({\n                normalizedRequest: {\n                  method,\n                  headers: completeHeadersDict,\n                } satisfies RequestEventData,\n              });\n            }\n\n            const response: Response = await handleCallbackErrors(\n              () => originalFunction.apply(thisArg, args),\n              error => {\n                // Next.js throws errors when calling `redirect()`. We don't wanna report these.\n                if (isRedirectNavigationError(error)) {\n                  // Don't do anything\n                } else if (isNotFoundNavigationError(error)) {\n                  if (activeSpan) {\n                    setHttpStatus(activeSpan, 404);\n                  }\n                  if (rootSpan) {\n                    setHttpStatus(rootSpan, 404);\n                  }\n                } else {\n                  captureException(error, {\n                    mechanism: {\n                      handled: false,\n                      type: 'auto.function.nextjs.route_handler',\n                    },\n                  });\n                }\n              },\n              () => {\n                waitUntil(flushSafelyWithTimeout());\n              },\n            );\n\n            try {\n              if (response.status) {\n                if (activeSpan) {\n                  setHttpStatus(activeSpan, response.status);\n                }\n                if (rootSpan) {\n                  setHttpStatus(rootSpan, response.status);\n                }\n              }\n            } catch {\n              // best effort - response may be undefined?\n            }\n\n            return response;\n          });\n        },\n      );\n    },\n  });\n}\n","import { _INTERNAL_safeDateNow, captureCheckIn } from '@sentry/core';\nimport type { NextApiRequest } from 'next';\nimport type { VercelCronsConfig } from '../types';\n\ntype EdgeRequest = {\n  nextUrl: URL;\n  headers: Headers;\n};\n\n/**\n * Wraps a function with Sentry crons instrumentation by automatically sending check-ins for the given Vercel crons config.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapApiHandlerWithSentryVercelCrons any>(\n  handler: F,\n  vercelCronsConfig: VercelCronsConfig,\n): F {\n  return new Proxy(handler, {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    apply: (originalFunction, thisArg, args: any[]) => {\n      if (!args?.[0]) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const [req] = args as [NextApiRequest | EdgeRequest];\n\n      let maybePromiseResult;\n      const cronsKey = 'nextUrl' in req ? req.nextUrl.pathname : req.url;\n      const userAgentHeader = 'nextUrl' in req ? req.headers.get('user-agent') : req.headers['user-agent'];\n\n      if (\n        !vercelCronsConfig || // do nothing if vercel crons config is missing\n        !userAgentHeader?.includes('vercel-cron') // do nothing if endpoint is not called from vercel crons\n      ) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const vercelCron = vercelCronsConfig.find(vercelCron => vercelCron.path === cronsKey);\n\n      if (!vercelCron?.path || !vercelCron.schedule) {\n        return originalFunction.apply(thisArg, args);\n      }\n\n      const monitorSlug = vercelCron.path;\n\n      const checkInId = captureCheckIn(\n        {\n          monitorSlug,\n          status: 'in_progress',\n        },\n        {\n          maxRuntime: 60 * 12, // (minutes) so 12 hours - just a very high arbitrary number since we don't know the actual duration of the users cron job\n          schedule: {\n            type: 'crontab',\n            value: vercelCron.schedule,\n          },\n        },\n      );\n\n      const startTime = _INTERNAL_safeDateNow() / 1000;\n\n      const handleErrorCase = (): void => {\n        captureCheckIn({\n          checkInId,\n          monitorSlug,\n          status: 'error',\n          duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n        });\n      };\n\n      try {\n        maybePromiseResult = originalFunction.apply(thisArg, args);\n      } catch (e) {\n        handleErrorCase();\n        throw e;\n      }\n\n      if (typeof maybePromiseResult === 'object' && maybePromiseResult !== null && 'then' in maybePromiseResult) {\n        Promise.resolve(maybePromiseResult).then(\n          () => {\n            captureCheckIn({\n              checkInId,\n              monitorSlug,\n              status: 'ok',\n              duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n            });\n          },\n          () => {\n            handleErrorCase();\n          },\n        );\n\n        // It is very important that we return the original promise here, because Next.js attaches various properties\n        // to that promise and will throw if they are not on the returned value.\n        return maybePromiseResult;\n      } else {\n        captureCheckIn({\n          checkInId,\n          monitorSlug,\n          status: 'ok',\n          duration: _INTERNAL_safeDateNow() / 1000 - startTime,\n        });\n        return maybePromiseResult;\n      }\n    },\n  });\n}\n","import type { TransactionSource } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getCurrentScope,\n  getRootSpan,\n  handleCallbackErrors,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setCapturedScopesOnSpan,\n  startSpan,\n  winterCGRequestToRequestData,\n  withIsolationScope,\n} from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\nimport type { EdgeRouteHandler } from '../edge/types';\n\n/**\n * Wraps Next.js middleware with Sentry error and performance instrumentation.\n *\n * @param middleware The middleware handler.\n * @returns a wrapped middleware handler.\n */\nexport function wrapMiddlewareWithSentry(\n  middleware: H,\n): (...params: Parameters) => Promise> {\n  return new Proxy(middleware, {\n    apply: async (wrappingTarget, thisArg, args: Parameters) => {\n      const tunnelRoute =\n        '_sentryRewritesTunnelPath' in globalThis\n          ? (globalThis as Record)._sentryRewritesTunnelPath\n          : undefined;\n\n      if (tunnelRoute && typeof tunnelRoute === 'string') {\n        const req: unknown = args[0];\n        // Check if the current request matches the tunnel route\n        if (req instanceof Request) {\n          const url = new URL(req.url);\n          const isTunnelRequest = url.pathname.startsWith(tunnelRoute);\n\n          if (isTunnelRequest) {\n            // Create a simple response that mimics NextResponse.next() so we don't need to import internals here\n            // which breaks next 13 apps\n            // https://github.com/vercel/next.js/blob/c12c9c1f78ad384270902f0890dc4cd341408105/packages/next/src/server/web/spec-extension/response.ts#L146\n            return new Response(null, {\n              status: 200,\n              headers: {\n                'x-middleware-next': '1',\n              },\n            }) as ReturnType;\n          }\n        }\n      }\n      // TODO: We still should add central isolation scope creation for when our build-time instrumentation does not work anymore with turbopack.\n      return withIsolationScope(isolationScope => {\n        const req: unknown = args[0];\n        const currentScope = getCurrentScope();\n\n        let spanName: string;\n        let spanSource: TransactionSource;\n\n        if (req instanceof Request) {\n          isolationScope.setSDKProcessingMetadata({\n            normalizedRequest: winterCGRequestToRequestData(req),\n          });\n          spanName = `middleware ${req.method}`;\n          spanSource = 'url';\n        } else {\n          spanName = 'middleware';\n          spanSource = 'component';\n        }\n\n        currentScope.setTransactionName(spanName);\n\n        const activeSpan = getActiveSpan();\n\n        if (activeSpan) {\n          // If there is an active span, it likely means that the automatic Next.js OTEL instrumentation worked and we can\n          // rely on that for parameterization.\n          spanName = 'middleware';\n          spanSource = 'component';\n\n          const rootSpan = getRootSpan(activeSpan);\n          if (rootSpan) {\n            setCapturedScopesOnSpan(rootSpan, currentScope, isolationScope);\n          }\n        }\n\n        return startSpan(\n          {\n            name: spanName,\n            op: 'http.server.middleware',\n            attributes: {\n              [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: spanSource,\n              [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.nextjs.wrap_middleware',\n            },\n          },\n          () => {\n            return handleCallbackErrors(\n              () => wrappingTarget.apply(thisArg, args),\n              error => {\n                captureException(error, {\n                  mechanism: {\n                    type: 'auto.function.nextjs.wrap_middleware',\n                    handled: false,\n                  },\n                });\n              },\n              () => {\n                waitUntil(flushSafelyWithTimeout());\n              },\n            );\n          },\n        );\n      });\n    },\n  });\n}\n","import {\n  addNonEnumerableProperty,\n  captureException,\n  extractTraceparentData,\n  getCurrentScope,\n  withIsolationScope,\n} from '@sentry/core';\n\ninterface FunctionComponent {\n  (...args: unknown[]): unknown;\n}\n\ninterface ClassComponent {\n  new (...args: unknown[]): {\n    props?: unknown;\n    render(...args: unknown[]): unknown;\n  };\n}\n\nfunction storeCapturedEventIdOnError(error: unknown, eventId: string | undefined): void {\n  if (error && typeof error === 'object') {\n    addNonEnumerableProperty(error as Record, '__sentry_event_id__', eventId);\n  }\n}\n\nfunction isReactClassComponent(target: unknown): target is ClassComponent {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return typeof target === 'function' && target?.prototype?.isReactComponent;\n}\n\n/**\n * Wraps a page component with Sentry error instrumentation.\n */\nexport function wrapPageComponentWithSentry(pageComponent: FunctionComponent | ClassComponent): unknown {\n  if (isReactClassComponent(pageComponent)) {\n    return class SentryWrappedPageComponent extends pageComponent {\n      public render(...args: unknown[]): unknown {\n        return withIsolationScope(() => {\n          const scope = getCurrentScope();\n          // We extract the sentry trace data that is put in the component props by datafetcher wrappers\n          const sentryTraceData =\n            typeof this.props === 'object' &&\n            this.props !== null &&\n            '_sentryTraceData' in this.props &&\n            typeof this.props._sentryTraceData === 'string'\n              ? this.props._sentryTraceData\n              : undefined;\n\n          if (sentryTraceData) {\n            const traceparentData = extractTraceparentData(sentryTraceData);\n            scope.setContext('trace', {\n              span_id: traceparentData?.parentSpanId,\n              trace_id: traceparentData?.traceId,\n            });\n          }\n\n          try {\n            return super.render(...args);\n          } catch (e) {\n            const eventId = captureException(e, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.page_class',\n              },\n            });\n            storeCapturedEventIdOnError(e, eventId);\n            throw e;\n          }\n        });\n      }\n    };\n  } else if (typeof pageComponent === 'function') {\n    return new Proxy(pageComponent, {\n      apply(target, thisArg, argArray: [{ _sentryTraceData?: string } | undefined]) {\n        return withIsolationScope(() => {\n          const scope = getCurrentScope();\n          // We extract the sentry trace data that is put in the component props by datafetcher wrappers\n          const sentryTraceData = argArray?.[0]?._sentryTraceData;\n\n          if (sentryTraceData) {\n            const traceparentData = extractTraceparentData(sentryTraceData);\n            scope.setContext('trace', {\n              span_id: traceparentData?.parentSpanId,\n              trace_id: traceparentData?.traceId,\n            });\n          }\n\n          try {\n            return target.apply(thisArg, argArray);\n          } catch (e) {\n            const eventId = captureException(e, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.page_function',\n              },\n            });\n            storeCapturedEventIdOnError(e, eventId);\n            throw e;\n          }\n        });\n      },\n    });\n  } else {\n    return pageComponent;\n  }\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  getActiveSpan,\n  getIsolationScope,\n  handleCallbackErrors,\n  SPAN_STATUS_ERROR,\n  SPAN_STATUS_OK,\n  winterCGHeadersToDict,\n} from '@sentry/core';\nimport type { GenerationFunctionContext } from '../common/types';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\n\n/**\n * Wraps a generation function (e.g. generateMetadata) with Sentry error instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapGenerationFunctionWithSentry any>(\n  generationFunction: F,\n  context: GenerationFunctionContext,\n): F {\n  return new Proxy(generationFunction, {\n    apply: (originalFunction, thisArg, args) => {\n      const isolationScope = getIsolationScope();\n\n      let headers = undefined;\n      // We try-catch here just in case anything goes wrong with the async storage since it is Next.js internal API\n      try {\n        headers = context.requestAsyncStorage?.getStore()?.headers;\n      } catch {\n        /** empty */\n      }\n\n      const headersDict = headers ? winterCGHeadersToDict(headers) : undefined;\n\n      isolationScope.setSDKProcessingMetadata({\n        normalizedRequest: {\n          headers: headersDict,\n        } satisfies RequestEventData,\n      });\n\n      return handleCallbackErrors(\n        () => originalFunction.apply(thisArg, args),\n        error => {\n          const span = getActiveSpan();\n          const { componentRoute, componentType, generationFunctionIdentifier } = context;\n          let shouldCapture = true;\n          isolationScope.setTransactionName(`${componentType}.${generationFunctionIdentifier} (${componentRoute})`);\n\n          if (span) {\n            if (isNotFoundNavigationError(error)) {\n              // We don't want to report \"not-found\"s\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n            } else if (isRedirectNavigationError(error)) {\n              // We don't want to report redirects\n              shouldCapture = false;\n              span.setStatus({ code: SPAN_STATUS_OK });\n            } else {\n              span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n            }\n          }\n\n          if (shouldCapture) {\n            captureException(error, {\n              mechanism: {\n                handled: false,\n                type: 'auto.function.nextjs.generation_function',\n                data: {\n                  function: generationFunctionIdentifier,\n                },\n              },\n            });\n          }\n        },\n        () => {\n          waitUntil(flushSafelyWithTimeout());\n        },\n      );\n    },\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport {\n  captureException,\n  continueTrace,\n  debug,\n  getActiveSpan,\n  getClient,\n  getIsolationScope,\n  handleCallbackErrors,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  SPAN_STATUS_ERROR,\n  startSpan,\n  withIsolationScope,\n} from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from '../common/utils/responseEnd';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils';\n\ninterface Options {\n  formData?: FormData;\n\n  /**\n   * Headers as returned from `headers()`.\n   *\n   * Currently accepts both a plain `Headers` object and `Promise` to be compatible with async APIs introduced in Next.js 15: https://github.com/vercel/next.js/pull/68812\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  headers?: Headers | Promise;\n\n  /**\n   * Whether the server action response should be included in any events captured within the server action.\n   */\n  recordResponse?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withServerActionInstrumentation any>(\n  serverActionName: string,\n  callback: A,\n): Promise>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withServerActionInstrumentation any>(\n  serverActionName: string,\n  options: Options,\n  callback: A,\n): Promise>;\n\n/**\n * Wraps a Next.js Server Action implementation with Sentry Error and Performance instrumentation.\n */\nexport function withServerActionInstrumentation unknown>(\n  ...args: [string, Options, A] | [string, A]\n): Promise> {\n  if (typeof args[1] === 'function') {\n    const [serverActionName, callback] = args;\n    return withServerActionInstrumentationImplementation(serverActionName, {}, callback);\n  } else {\n    const [serverActionName, options, callback] = args;\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    return withServerActionInstrumentationImplementation(serverActionName, options, callback!);\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nasync function withServerActionInstrumentationImplementation any>(\n  serverActionName: string,\n  options: Options,\n  callback: A,\n): Promise> {\n  return withIsolationScope(async isolationScope => {\n    const sendDefaultPii = getClient()?.getOptions().sendDefaultPii;\n\n    let sentryTraceHeader;\n    let baggageHeader;\n    const fullHeadersObject: Record = {};\n    try {\n      const awaitedHeaders: Headers = await options.headers;\n      sentryTraceHeader = awaitedHeaders?.get('sentry-trace') ?? undefined;\n      baggageHeader = awaitedHeaders?.get('baggage');\n      awaitedHeaders?.forEach((value, key) => {\n        fullHeadersObject[key] = value;\n      });\n    } catch {\n      DEBUG_BUILD &&\n        debug.warn(\n          \"Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.\",\n        );\n    }\n\n    isolationScope.setTransactionName(`serverAction/${serverActionName}`);\n    isolationScope.setSDKProcessingMetadata({\n      normalizedRequest: {\n        headers: fullHeadersObject,\n      } satisfies RequestEventData,\n    });\n\n    // Normally, there is an active span here (from Next.js OTEL) and we just use that as parent\n    // Else, we manually continueTrace from the incoming headers\n    const continueTraceIfNoActiveSpan = getActiveSpan()\n      ? (_opts: unknown, callback: () => T) => callback()\n      : continueTrace;\n\n    return continueTraceIfNoActiveSpan(\n      {\n        sentryTrace: sentryTraceHeader,\n        baggage: baggageHeader,\n      },\n      async () => {\n        try {\n          return await startSpan(\n            {\n              op: 'function.server_action',\n              name: `serverAction/${serverActionName}`,\n              forceTransaction: true,\n              attributes: {\n                [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n                [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.nextjs.server_action',\n              },\n            },\n            async span => {\n              // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n              const result = await handleCallbackErrors(callback, error => {\n                if (isNotFoundNavigationError(error)) {\n                  // We don't want to report \"not-found\"s\n                  span.setStatus({ code: SPAN_STATUS_ERROR, message: 'not_found' });\n                } else if (isRedirectNavigationError(error)) {\n                  // Don't do anything for redirects\n                } else {\n                  span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n                  captureException(error, {\n                    mechanism: {\n                      handled: false,\n                      type: 'auto.function.nextjs.server_action',\n                    },\n                  });\n                }\n              });\n\n              if (options.recordResponse !== undefined ? options.recordResponse : sendDefaultPii) {\n                getIsolationScope().setExtra('server_action_result', result);\n              }\n\n              if (options.formData) {\n                options.formData.forEach((value, key) => {\n                  getIsolationScope().setExtra(\n                    `server_action_form_data.${key}`,\n                    typeof value === 'string' ? value : '[non-string value]',\n                  );\n                });\n              }\n\n              return result;\n            },\n          );\n        } finally {\n          waitUntil(flushSafelyWithTimeout());\n        }\n      },\n    );\n  });\n}\n","import type { RequestEventData } from '@sentry/core';\nimport { captureException, headersToDict, withScope } from '@sentry/core';\nimport { flushSafelyWithTimeout, waitUntil } from './utils/responseEnd';\n\ntype RequestInfo = {\n  path: string;\n  method: string;\n  headers: Record;\n};\n\ntype ErrorContext = {\n  routerKind: string; // 'Pages Router' | 'App Router'\n  routePath: string;\n  routeType: string; // 'render' | 'route' | 'middleware'\n};\n\n/**\n * Reports errors passed to the the Next.js `onRequestError` instrumentation hook.\n */\nexport function captureRequestError(error: unknown, request: RequestInfo, errorContext: ErrorContext): void {\n  withScope(scope => {\n    scope.setSDKProcessingMetadata({\n      normalizedRequest: {\n        headers: headersToDict(request.headers),\n        method: request.method,\n      } satisfies RequestEventData,\n    });\n\n    scope.setContext('nextjs', {\n      request_path: request.path,\n      router_kind: errorContext.routerKind,\n      router_path: errorContext.routePath,\n      route_type: errorContext.routeType,\n    });\n\n    scope.setTransactionName(`${request.method} ${errorContext.routePath}`);\n\n    captureException(error, {\n      mechanism: {\n        handled: false,\n        type: 'auto.function.nextjs.on_request_error',\n      },\n    });\n\n    waitUntil(flushSafelyWithTimeout());\n  });\n}\n","import {\n  captureException,\n  continueTrace,\n  debug,\n  getActiveSpan,\n  httpRequestToRequestData,\n  isString,\n  objectify,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  setHttpStatus,\n  startSpanManual,\n  withIsolationScope,\n} from '@sentry/core';\nimport type { NextApiRequest } from 'next';\nimport type { AugmentedNextApiResponse, NextApiHandler } from '../types';\nimport { flushSafelyWithTimeout, waitUntil } from '../utils/responseEnd';\nimport { dropNextjsRootContext, escapeNextjsTracing } from '../utils/tracingUtils';\n\nexport type AugmentedNextApiRequest = NextApiRequest & {\n  __withSentry_applied__?: boolean;\n};\n\n/**\n * Wrap the given API route handler with error nad performance monitoring.\n *\n * @param apiHandler The handler exported from the user's API page route file, which may or may not already be\n * wrapped with `withSentry`\n * @param parameterizedRoute The page's parameterized route.\n * @returns The wrapped handler which will always return a Promise.\n */\nexport function wrapApiHandlerWithSentry(apiHandler: NextApiHandler, parameterizedRoute: string): NextApiHandler {\n  return new Proxy(apiHandler, {\n    apply: (\n      wrappingTarget,\n      thisArg,\n      args: [AugmentedNextApiRequest | undefined, AugmentedNextApiResponse | undefined],\n    ) => {\n      dropNextjsRootContext();\n      return escapeNextjsTracing(() => {\n        const [req, res] = args;\n\n        if (!req) {\n          debug.log(\n            `Wrapped API handler on route \"${parameterizedRoute}\" was not passed a request object. Will not instrument.`,\n          );\n          return wrappingTarget.apply(thisArg, args);\n        } else if (!res) {\n          debug.log(\n            `Wrapped API handler on route \"${parameterizedRoute}\" was not passed a response object. Will not instrument.`,\n          );\n          return wrappingTarget.apply(thisArg, args);\n        }\n\n        // Prevent double wrapping of the same request.\n        if (req.__withSentry_applied__) {\n          return wrappingTarget.apply(thisArg, args);\n        }\n        req.__withSentry_applied__ = true;\n\n        return withIsolationScope(isolationScope => {\n          // Normally, there is an active span here (from Next.js OTEL) and we just use that as parent\n          // Else, we manually continueTrace from the incoming headers\n          const continueTraceIfNoActiveSpan = getActiveSpan()\n            ? (_opts: unknown, callback: () => T) => callback()\n            : continueTrace;\n\n          return continueTraceIfNoActiveSpan(\n            {\n              sentryTrace:\n                req.headers && isString(req.headers['sentry-trace']) ? req.headers['sentry-trace'] : undefined,\n              baggage: req.headers?.baggage,\n            },\n            () => {\n              const reqMethod = `${(req.method || 'GET').toUpperCase()} `;\n              const normalizedRequest = httpRequestToRequestData(req);\n\n              isolationScope.setSDKProcessingMetadata({ normalizedRequest });\n              isolationScope.setTransactionName(`${reqMethod}${parameterizedRoute}`);\n\n              return startSpanManual(\n                {\n                  name: `${reqMethod}${parameterizedRoute}`,\n                  op: 'http.server',\n                  forceTransaction: true,\n                  attributes: {\n                    [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n                    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.nextjs',\n                  },\n                },\n                async span => {\n                  // eslint-disable-next-line @typescript-eslint/unbound-method\n                  res.end = new Proxy(res.end, {\n                    apply(target, thisArg, argArray) {\n                      setHttpStatus(span, res.statusCode);\n                      span.end();\n                      waitUntil(flushSafelyWithTimeout());\n                      return target.apply(thisArg, argArray);\n                    },\n                  });\n                  try {\n                    return await wrappingTarget.apply(thisArg, args);\n                  } catch (e) {\n                    // In case we have a primitive, wrap it in the equivalent wrapper class (string -> String, etc.) so that we can\n                    // store a seen flag on it. (Because of the one-way-on-Vercel-one-way-off-of-Vercel approach we've been forced\n                    // to take, it can happen that the same thrown object gets caught in two different ways, and flagging it is a\n                    // way to prevent it from actually being reported twice.)\n                    const objectifiedErr = objectify(e);\n\n                    captureException(objectifiedErr, {\n                      mechanism: {\n                        type: 'auto.http.nextjs.api_handler',\n                        handled: false,\n                        data: {\n                          wrapped_handler: wrappingTarget.name,\n                          function: 'withSentry',\n                        },\n                      },\n                    });\n\n                    setHttpStatus(span, 500);\n                    span.end();\n\n                    // we need to await the flush here to ensure that the error is captured\n                    // as the runtime freezes as soon as the error is thrown below\n                    await flushSafelyWithTimeout();\n\n                    // We rethrow here so that nextjs can do with the error whatever it would normally do. (Sometimes \"whatever it\n                    // would normally do\" is to allow the error to bubble up to the global handlers - another reason we need to mark\n                    // the error as already having been captured.)\n                    throw objectifiedErr;\n                  }\n                },\n              );\n            },\n          );\n        });\n      });\n    },\n  });\n}\n","// import/export got a false positive, and affects most of our index barrel files\n// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703\n/* eslint-disable import/export */\nimport {\n  ATTR_HTTP_ROUTE,\n  ATTR_URL_QUERY,\n  SEMATTRS_HTTP_METHOD,\n  SEMATTRS_HTTP_TARGET,\n} from '@opentelemetry/semantic-conventions';\nimport type { EventProcessor } from '@sentry/core';\nimport {\n  applySdkMetadata,\n  debug,\n  extractTraceparentData,\n  getClient,\n  getGlobalScope,\n  GLOBAL_OBJ,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport type { NodeClient, NodeOptions } from '@sentry/node';\nimport { getDefaultIntegrations, httpIntegration, init as nodeInit } from '@sentry/node';\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { devErrorSymbolicationEventProcessor } from '../common/devErrorSymbolicationEventProcessor';\nimport { getVercelEnv } from '../common/getVercelEnv';\nimport { ATTR_NEXT_ROUTE, ATTR_NEXT_SPAN_NAME, ATTR_NEXT_SPAN_TYPE } from '../common/nextSpanAttributes';\nimport {\n  TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,\n  TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL,\n  TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,\n} from '../common/span-attributes-with-logic-attached';\nimport { isBuild } from '../common/utils/isBuild';\nimport { isCloudflareWaitUntilAvailable } from '../common/utils/responseEnd';\nimport { setUrlProcessingMetadata } from '../common/utils/setUrlProcessingMetadata';\nimport { distDirRewriteFramesIntegration } from './distDirRewriteFramesIntegration';\nimport { handleOnSpanStart } from './handleOnSpanStart';\nimport { prepareSafeIdGeneratorContext } from './prepareSafeIdGeneratorContext';\nimport { maybeCompleteCronCheckIn } from './vercelCronsMonitoring';\nimport { maybeCleanupQueueSpan } from './vercelQueuesMonitoring';\n\nexport * from '@sentry/node';\n\nexport { captureUnderscoreErrorException } from '../common/pages-router-instrumentation/_error';\n\n// Override core span methods with Next.js-specific implementations that support Cache Components\nexport { startSpan, startSpanManual, startInactiveSpan } from '../common/utils/nextSpan';\n\nconst globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {\n  _sentryRewriteFramesDistDir?: string;\n  _sentryRelease?: string;\n};\n\n/**\n * A passthrough error boundary for the server that doesn't depend on any react. Error boundaries don't catch SSR errors\n * so they should simply be a passthrough.\n */\nexport const ErrorBoundary = (props: React.PropsWithChildren): React.ReactNode => {\n  if (!props.children) {\n    return null;\n  }\n\n  if (typeof props.children === 'function') {\n    return (props.children as () => React.ReactNode)();\n  }\n\n  // since Next.js >= 10 requires React ^16.6.0 we are allowed to return children like this here\n  return props.children as React.ReactNode;\n};\n\n/**\n * A passthrough redux enhancer for the server that doesn't depend on anything from the `@sentry/react` package.\n */\nexport function createReduxEnhancer() {\n  return (createStore: unknown) => createStore;\n}\n\n/**\n * A passthrough error boundary wrapper for the server that doesn't depend on any react. Error boundaries don't catch\n * SSR errors so they should simply be a passthrough.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withErrorBoundary

      >(\n WrappedComponent: React.ComponentType

      ,\n): React.FC

      {\n return WrappedComponent as React.FC

      ;\n}\n\n/**\n * Just a passthrough since we're on the server and showing the report dialog on the server doesn't make any sense.\n */\nexport function showReportDialog(): void {\n return;\n}\n\n/**\n * Returns the runtime configuration for the SDK based on the environment.\n * When running on OpenNext/Cloudflare, returns cloudflare runtime config.\n */\nfunction getCloudflareRuntimeConfig(): { runtime: { name: string } } | undefined {\n if (isCloudflareWaitUntilAvailable()) {\n // todo: add version information?\n return { runtime: { name: 'cloudflare' } };\n }\n return undefined;\n}\n\n/** Inits the Sentry NextJS SDK on node. */\n// eslint-disable-next-line complexity\nexport function init(options: NodeOptions): NodeClient | undefined {\n prepareSafeIdGeneratorContext();\n if (isBuild()) {\n return;\n }\n\n if (!DEBUG_BUILD && options.debug) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.',\n );\n }\n\n const customDefaultIntegrations = getDefaultIntegrations(options)\n .filter(integration => integration.name !== 'Http')\n .concat(\n // We are using the HTTP integration without instrumenting incoming HTTP requests because Next.js does that by itself.\n httpIntegration({\n disableIncomingRequestSpans: true,\n }),\n );\n\n // Turn off Next.js' own fetch instrumentation (only when we manage OTEL)\n // https://github.com/lforst/nextjs-fork/blob/1994fd186defda77ad971c36dc3163db263c993f/packages/next/src/server/lib/patch-fetch.ts#L245\n // Enable with custom OTel setup: https://github.com/getsentry/sentry-javascript/issues/17581\n if (!options.skipOpenTelemetrySetup) {\n process.env.NEXT_OTEL_FETCH_DISABLED = '1';\n }\n\n // This value is injected at build time, based on the output directory specified in the build config. Though a default\n // is set there, we set it here as well, just in case something has gone wrong with the injection.\n const distDirName = process.env._sentryRewriteFramesDistDir || globalWithInjectedValues._sentryRewriteFramesDistDir;\n if (distDirName) {\n customDefaultIntegrations.push(distDirRewriteFramesIntegration({ distDirName }));\n }\n\n // Detect if running on OpenNext/Cloudflare and get runtime config\n const cloudflareConfig = getCloudflareRuntimeConfig();\n\n const opts: NodeOptions = {\n environment: options.environment || process.env.SENTRY_ENVIRONMENT || getVercelEnv(false) || process.env.NODE_ENV,\n release: process.env._sentryRelease || globalWithInjectedValues._sentryRelease,\n defaultIntegrations: customDefaultIntegrations,\n ...options,\n // Override runtime to 'cloudflare' when running on OpenNext/Cloudflare\n ...cloudflareConfig,\n };\n\n if (DEBUG_BUILD && opts.debug) {\n debug.enable();\n }\n\n DEBUG_BUILD && debug.log('Initializing SDK...');\n\n if (sdkAlreadyInitialized()) {\n DEBUG_BUILD && debug.log('SDK already initialized');\n return;\n }\n\n // Use appropriate SDK metadata based on the runtime environment\n applySdkMetadata(opts, 'nextjs', ['nextjs', cloudflareConfig ? 'cloudflare' : 'node']);\n\n const client = nodeInit(opts);\n\n client?.on('beforeSampling', ({ spanAttributes }, samplingDecision) => {\n // There are situations where the Next.js Node.js server forwards requests for the Edge Runtime server (e.g. in\n // middleware) and this causes spans for Sentry ingest requests to be created. These are not exempt from our tracing\n // because we didn't get the chance to do `suppressTracing`, since this happens outside of userland.\n // We need to drop these spans.\n if (\n // eslint-disable-next-line deprecation/deprecation\n (typeof spanAttributes[SEMATTRS_HTTP_TARGET] === 'string' &&\n // eslint-disable-next-line deprecation/deprecation\n spanAttributes[SEMATTRS_HTTP_TARGET].includes('sentry_key') &&\n // eslint-disable-next-line deprecation/deprecation\n spanAttributes[SEMATTRS_HTTP_TARGET].includes('sentry_client')) ||\n (typeof spanAttributes[ATTR_URL_QUERY] === 'string' &&\n spanAttributes[ATTR_URL_QUERY].includes('sentry_key') &&\n spanAttributes[ATTR_URL_QUERY].includes('sentry_client'))\n ) {\n samplingDecision.decision = false;\n }\n });\n\n client?.on('spanStart', handleOnSpanStart);\n client?.on('spanEnd', maybeCompleteCronCheckIn);\n client?.on('spanEnd', maybeCleanupQueueSpan);\n\n getGlobalScope().addEventProcessor(\n Object.assign(\n (event => {\n if (event.type === 'transaction') {\n // Filter out transactions for static assets\n // This regex matches the default path to the static assets (`_next/static`) and could potentially filter out too many transactions.\n // We match `/_next/static/` anywhere in the transaction name because its location may change with the basePath setting.\n if (event.transaction?.match(/^GET (\\/.*)?\\/_next\\/static\\//)) {\n return null;\n }\n\n // Filter out requests to resolve source maps for stack frames in dev mode\n if (event.transaction?.match(/\\/__nextjs_original-stack-frame/)) {\n return null;\n }\n\n // Filter out /404 transactions which seem to be created excessively\n if (\n // Pages router\n event.transaction === '/404' ||\n // App router (could be \"GET /404\", \"POST /404\", ...)\n event.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \\/(404|_not-found)$/)\n ) {\n return null;\n }\n\n // Filter transactions that we explicitly want to drop.\n if (event.contexts?.trace?.data?.[TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]) {\n return null;\n }\n\n // Next.js 13 sometimes names the root transactions like this containing useless tracing.\n if (event.transaction === 'NextServer.getRequestHandler') {\n return null;\n }\n\n // Next.js 13 is not correctly picking up tracing data for trace propagation so we use a back-fill strategy\n if (typeof event.contexts?.trace?.data?.[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL] === 'string') {\n const traceparentData = extractTraceparentData(\n event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL],\n );\n\n if (traceparentData?.parentSampled === false) {\n return null;\n }\n }\n\n return event;\n } else {\n return event;\n }\n }) satisfies EventProcessor,\n { id: 'NextLowQualityTransactionsFilter' },\n ),\n );\n\n getGlobalScope().addEventProcessor(\n Object.assign(\n ((event, hint) => {\n if (event.type !== undefined) {\n return event;\n }\n\n const originalException = hint.originalException;\n\n const isPostponeError =\n typeof originalException === 'object' &&\n originalException !== null &&\n '$$typeof' in originalException &&\n originalException.$$typeof === Symbol.for('react.postpone');\n\n if (isPostponeError) {\n // Postpone errors are used for partial-pre-rendering (PPR)\n return null;\n }\n\n // We don't want to capture suspense errors as they are simply used by React/Next.js for control flow\n const exceptionMessage = event.exception?.values?.[0]?.value;\n if (\n exceptionMessage?.includes('Suspense Exception: This is not a real error!') ||\n exceptionMessage?.includes('Suspense Exception: This is not a real error, and should not leak')\n ) {\n return null;\n }\n\n return event;\n }) satisfies EventProcessor,\n { id: 'DropReactControlFlowErrors' },\n ),\n );\n\n // Use the preprocessEvent hook instead of an event processor, so that the users event processors receive the most\n // up-to-date value, but also so that the logic that detects changes to the transaction names to set the source to\n // \"custom\", doesn't trigger.\n client?.on('preprocessEvent', event => {\n // Enhance route handler transactions\n if (\n event.type === 'transaction' &&\n event.contexts?.trace?.data?.[ATTR_NEXT_SPAN_TYPE] === 'BaseServer.handleRequest'\n ) {\n event.contexts.trace.data[SEMANTIC_ATTRIBUTE_SENTRY_OP] = 'http.server';\n event.contexts.trace.op = 'http.server';\n\n if (event.transaction) {\n event.transaction = stripUrlQueryAndFragment(event.transaction);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const method = event.contexts.trace.data[SEMATTRS_HTTP_METHOD];\n // eslint-disable-next-line deprecation/deprecation\n const target = event.contexts?.trace?.data?.[SEMATTRS_HTTP_TARGET];\n const route = event.contexts.trace.data[ATTR_HTTP_ROUTE] || event.contexts.trace.data[ATTR_NEXT_ROUTE];\n const spanName = event.contexts.trace.data[ATTR_NEXT_SPAN_NAME];\n\n if (typeof method === 'string' && typeof route === 'string' && !route.startsWith('middleware')) {\n const cleanRoute = route.replace(/\\/route$/, '');\n event.transaction = `${method} ${cleanRoute}`;\n event.contexts.trace.data[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n // Preserve next.route in case it did not get hoisted\n event.contexts.trace.data[ATTR_NEXT_ROUTE] = cleanRoute;\n }\n\n // backfill transaction name for pages that would otherwise contain unparameterized routes\n if (event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL] && event.transaction !== 'GET /_app') {\n event.transaction = `${method} ${event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`;\n }\n\n const middlewareMatch =\n typeof spanName === 'string' && spanName.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);\n\n if (middlewareMatch) {\n const normalizedName = `middleware ${middlewareMatch[1]}`;\n event.transaction = normalizedName;\n event.contexts.trace.op = 'http.server.middleware';\n }\n\n // Next.js overrides transaction names for page loads that throw an error\n // but we want to keep the original target name\n if (event.transaction === 'GET /_error' && target) {\n event.transaction = `${method ? `${method} ` : ''}${target}`;\n }\n }\n\n // Next.js 13 is not correctly picking up tracing data for trace propagation so we use a back-fill strategy\n if (\n event.type === 'transaction' &&\n typeof event.contexts?.trace?.data?.[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL] === 'string'\n ) {\n const traceparentData = extractTraceparentData(event.contexts.trace.data[TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);\n\n if (traceparentData?.traceId) {\n event.contexts.trace.trace_id = traceparentData.traceId;\n }\n\n if (traceparentData?.parentSpanId) {\n event.contexts.trace.parent_span_id = traceparentData.parentSpanId;\n }\n }\n\n setUrlProcessingMetadata(event);\n });\n\n if (process.env.NODE_ENV === 'development') {\n getGlobalScope().addEventProcessor(devErrorSymbolicationEventProcessor);\n }\n\n try {\n // @ts-expect-error `process.turbopack` is a magic string that will be replaced by Next.js\n if (process.turbopack) {\n getGlobalScope().setTag('turbopack', true);\n }\n } catch {\n // Noop\n // The statement above can throw because process is not defined on the client\n }\n\n DEBUG_BUILD && debug.log('SDK successfully initialized');\n\n return client;\n}\n\nfunction sdkAlreadyInitialized(): boolean {\n return !!getClient();\n}\n\nexport * from '../common';\n\nexport { wrapApiHandlerWithSentry } from '../common/pages-router-instrumentation/wrapApiHandlerWithSentry';\n"],"names":["GLOBAL_OBJ","SDK_VERSION","DEBUG_BUILD","getGlobalSingleton","debug","getFunctionName","addHandler","maybeInstrument","triggerHandlers","isString","isError","isEvent","isInstanceOf","isElement","htmlTreeAsString","isPrimitive","isVueViewModel","getVueInternalName","isRegExp","safeMathRandom","withRandomSafeContext","snipLine","addNonEnumerableProperty","safeDateNow","timestampInSeconds","uuid4","generateTraceId","_setSpanForScope","_getSpanForScope","updateSession","isPlainObject","dateTimestampInSeconds","truncate","merge","Scope","scope","isThenable","chainAndCopyPromiseLike","getMainCarrier","getSentryCarrier","getDefaultCurrentScope","getDefaultIsolationScope","carrier","getStackAsyncContextStrategy","getAsyncContextStrategy","propagationContext","generateSpanId","consoleSandbox","baggage","baggageHeaderToDynamicSamplingContext","parseSampleRate","extractOrgIdFromClient","getCapturedScopesOnSpan","generateSentryTraceHeader","generateTraceparentHeader","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SPAN_STATUS_UNSET","SPAN_STATUS_OK","getCurrentScope","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME","getActiveSpan","getRootSpan","SPAN_STATUS_ERROR","addGlobalErrorInstrumentationHandler","addGlobalUnhandledRejectionInstrumentationHandler","getClient","isMatchingPattern","DEFAULT_ENVIRONMENT","spanToJSON","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE","hasSpansEnabled","spanIsSampled","dynamicSamplingContextToSentryBaggageHeader","TRACE_FLAG_NONE","convertToPlainObject","isSyntheticEvent","normalize","dsn","dsnToString","getSdkMetadataForEnvelopeHeader","createEnvelope","createEventEnvelopeHeaders","getDynamicSamplingContextFromSpan","shouldIgnoreSpan","showSpanDropWarning","createSpanEnvelopeItem","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE","SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT","TRACE_FLAG_SAMPLED","spanTimeInputToSeconds","logSpanEnd","getStatusMessage","SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","timedEventsToMeasurements","convertSpanLinksForEnvelope","time","createSpanEnvelope","getSpanDescendants","spanToTransactionTraceContext","withScope","SentryNonRecordingSpan","handleCallbackErrors","shouldContinueTrace","propagationContextFromHeaders","freezeDscOnSpan","getIsolationScope","addChildSpanToSpan","logSpanStart","setCapturedScopesOnSpan","sampleSpan","SentrySpan","SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON","removeChildSpanFromSpan","startInactiveSpan","resolvedSyncPromise","rejectedSyncPromise","normalizeStackTracePath","getGlobalScope","spanToTraceContext","addExceptionMechanism","getCombinedScopeData","applyScopeDataToEvent","eventProcessors","notifyEventProcessors","getFilenameToDebugIdMap","parseEventHintOrCaptureContext","withIsolationScope","startNewTrace","session","makeSession","closeSession","makeDsn","getTraceContextFromScope","dynamicSamplingContext","getDynamicSamplingContextFromScope","_getTraceInfoFromScope","isParameterizedString","getSequenceAttribute","SEVERITY_TEXT_TO_SEVERITY_NUMBER","serializeAttributes","envelope","createLogEnvelope","createMetricEnvelope","safeUnref","makePromiseBuffer","forEachEnvelopeItem","envelopeItemTypeToDataCategory","isRateLimited","envelopeContainsItemType","serializeEnvelope","updateRateLimits","SENTRY_BUFFER_FULL_ERROR","DEFAULT_TRANSPORT_BUFFER_SIZE","getEnvelopeEndpointWithUrlEncodedAuth","_INTERNAL_flushLogsBuffer","_INTERNAL_flushMetricsBuffer","checkOrSetAlreadyCaught","integration","setupIntegration","afterSetupIntegrations","createEventEnvelope","addItemToEnvelope","createAttachmentEnvelopeItem","createSessionEnvelope","setupIntegrations","prepareEvent","getPossibleEventMessages","createClientReportEnvelope","convertTransactionEventToSpanJson","convertSpanJsonToTransactionEvent","reparentChildSpans","extractExceptionKeysForMessage","isErrorEvent","normalizeToSize","addExceptionTypeValue","Client","registerSpanErrorInstrumentation","addUserAgentToTransportHeaders","eventFromUnknownInput","eventFromMessage","createCheckInEnvelope","parseRetryAfterHeader","dsnFromString","SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD","SEMANTIC_ATTRIBUTE_URL_FULL","url","parseStringToURLObject","isURLObjectRelative","parseEnvelope","isEnabled","hasExternalPropagationContext","spanToTraceHeader","TRACEPARENT_REGEXP","spanToTraceparentHeader","stringMatchesSomePattern","traceData","getTraceData","getOriginalFunction","defineIntegration","getEventDescription","applyAggregateErrorsToEvent","exceptionFromError","stripMetadataFromStackFrames","addMetadataToStackFrames","getClientIPAddress","ipHeaderNames","parseCookie","CONSOLE_LEVELS","fill","originalConsoleMethods","addConsoleInstrumentationHandler","severityLevelFromString","safeJoin","captureException","getFramesFromEvent","relative","basename","startSpan","setHttpStatus","addBreadcrumb","startSpanManual","_INTERNAL_copyFlagsFromScopeToEvent","_INTERNAL_insertFlagToScope","_INTERNAL_addFeatureFlagToActiveSpan","GEN_AI_CONVERSATION_ID_ATTRIBUTE","isRequest","SENTRY_BAGGAGE_KEY_PREFIX","stripDataUrlContent","getSanitizedUrlStringFromUrlObject","captureError","attributes","MCP_TOOL_RESULT_CONTENT_COUNT_ATTRIBUTE","isValidContentItem","MCP_TOOL_RESULT_IS_ERROR_ATTRIBUTE","MCP_PROMPT_RESULT_DESCRIPTION_ATTRIBUTE","MCP_PROMPT_RESULT_MESSAGE_COUNT_ATTRIBUTE","getClientInfoForTransport","getSessionDataForTransport","MCP_SERVER_NAME_ATTRIBUTE","MCP_SERVER_TITLE_ATTRIBUTE","MCP_SERVER_VERSION_ATTRIBUTE","getProtocolVersionForTransport","MCP_SESSION_ID_ATTRIBUTE","CLIENT_ADDRESS_ATTRIBUTE","CLIENT_PORT_ATTRIBUTE","MCP_TRANSPORT_ATTRIBUTE","NETWORK_TRANSPORT_ATTRIBUTE","NETWORK_PROTOCOL_VERSION_ATTRIBUTE","MCP_PROTOCOL_VERSION_ATTRIBUTE","extractSessionDataFromInitializeResponse","buildServerAttributesFromInfo","extractToolResultAttributes","extractPromptResultAttributes","MCP_TOOL_NAME_ATTRIBUTE","MCP_RESOURCE_URI_ATTRIBUTE","MCP_PROMPT_NAME_ATTRIBUTE","MCP_REQUEST_ARGUMENT","MCP_LOGGING_LEVEL_ATTRIBUTE","MCP_LOGGING_LOGGER_ATTRIBUTE","MCP_LOGGING_DATA_TYPE_ATTRIBUTE","MCP_LOGGING_MESSAGE_ATTRIBUTE","extractTargetInfo","MCP_REQUEST_ID_ATTRIBUTE","getRequestArguments","MCP_SERVER_OP_VALUE","MCP_FUNCTION_ORIGIN_VALUE","MCP_NOTIFICATION_CLIENT_TO_SERVER_OP_VALUE","MCP_NOTIFICATION_ORIGIN_VALUE","MCP_NOTIFICATION_SERVER_TO_CLIENT_OP_VALUE","MCP_ROUTE_SOURCE_VALUE","buildTransportAttributes","MCP_METHOD_NAME_ATTRIBUTE","buildTypeSpecificAttributes","filterMcpPiiFromSpanData","isJsonRpcRequest","extractSessionDataFromInitializeRequest","storeSessionDataForTransport","buildMcpServerSpanConfig","buildClientAttributesFromInfo","storeSpanForRequest","withActiveSpan","isJsonRpcNotification","createMcpNotificationSpan","createMcpOutgoingNotificationSpan","isJsonRpcResponse","updateSessionDataForTransport","completeSpanWithResults","cleanupPendingSpansForTransport","cleanupSessionDataForTransport","validateMcpServerInstance","transport","wrapTransportOnMessage","wrapTransportSend","wrapTransportOnClose","wrapTransportError","wrapAllMCPHandlers","_INTERNAL_captureLog","formatConsoleArgs","hasConsoleSubstitutions","createConsoleTemplateAttributes","_INTERNAL_captureMetric","isContentMedia","stripInlineMediaFromSingleMessage","GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE","truncateGenAiStringInput","truncateGenAiMessages","GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE","GEN_AI_TOOL_NAME_ATTRIBUTE","GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE","toolCallSpanContextMap","AI_PROMPT_ATTRIBUTE","GEN_AI_INPUT_MESSAGES_ATTRIBUTE","AI_PROMPT_MESSAGES_ATTRIBUTE","extractSystemInstructions","GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE","getTruncatedJsonString","GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE","GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE","GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE","GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE","GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE","GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE","GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE","GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE","GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE","GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE","INVOKE_AGENT_OPS","GENERATE_CONTENT_OPS","EMBEDDINGS_OPS","RERANK_OPS","AI_TOOL_CALL_NAME_ATTRIBUTE","AI_TOOL_CALL_ID_ATTRIBUTE","AI_OPERATION_ID_ATTRIBUTE","accumulateTokensForParent","applyToolDescriptionsAndTokens","applyAccumulatedTokens","AI_RESPONSE_TEXT_ATTRIBUTE","AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","AI_RESPONSE_FINISH_REASON_ATTRIBUTE","GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE","AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","AI_USAGE_PROMPT_TOKENS_ATTRIBUTE","AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE","AI_USAGE_TOKENS_ATTRIBUTE","AI_PROMPT_TOOLS_ATTRIBUTE","convertAvailableToolsToJsonString","OPERATION_NAME_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","AI_RESPONSE_OBJECT_ATTRIBUTE","AI_TOOL_CALL_ARGS_ATTRIBUTE","GEN_AI_TOOL_INPUT_ATTRIBUTE","AI_TOOL_CALL_RESULT_ATTRIBUTE","GEN_AI_TOOL_OUTPUT_ATTRIBUTE","AI_SCHEMA_ATTRIBUTE","AI_MODEL_ID_ATTRIBUTE","GEN_AI_REQUEST_MODEL_ATTRIBUTE","AI_VALUES_ATTRIBUTE","GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE","GEN_AI_TOOL_CALL_ID_ATTRIBUTE","GEN_AI_TOOL_TYPE_ATTRIBUTE","AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE","requestMessagesFromPrompt","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","getSpanOpFromName","DO_SPAN_NAME_PREFIX","AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE","GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE","GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","OPENAI_RESPONSE_MODEL_ATTRIBUTE","OPENAI_RESPONSE_ID_ATTRIBUTE","GEN_AI_RESPONSE_ID_ATTRIBUTE","OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE","OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE","OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE","GEN_AI_REQUEST_TOP_P_ATTRIBUTE","GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE","GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE","GEN_AI_REQUEST_STREAM_ATTRIBUTE","GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE","GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE","RESPONSE_EVENT_TYPES","isChatCompletionChunk","isResponsesApiStreamEvent","setCommonResponseAttributes","setTokenUsageAttributes","GEN_AI_RESPONSE_STREAMING_ATTRIBUTE","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","GEN_AI_SYSTEM_ATTRIBUTE","extractRequestParameters","isChatCompletionResponse","addChatCompletionAttributes","isResponsesApiResponse","addResponsesApiAttributes","isEmbeddingsResponse","addEmbeddingsAttributes","isConversationResponse","addConversationAttributes","instrumentStream","wrapPromiseWithMethods","buildMethodPath","OPENAI_METHOD_REGISTRY","resolveAIRecordingOptions","mapAnthropicErrorToStatusMessage","GEN_AI_REQUEST_TOP_K_ATTRIBUTE","GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE","messagesFromParams","setMessagesAttribute","GEN_AI_PROMPT_ATTRIBUTE","ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE","handleResponseError","instrumentAsyncIterableStream","instrumentMessageStream","ANTHROPIC_METHOD_REGISTRY","GOOGLE_GENAI_SYSTEM_NAME","contentUnionToMessages","CHATS_CREATE_METHOD","GOOGLE_GENAI_METHOD_REGISTRY","CHAT_PATH","ROLE_MAP","LANGCHAIN_ORIGIN","GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE","GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE","getInvocationParams","extractLLMRequestAttributes","extractChatModelRequestAttributes","extractLlmResponseAttributes","normalizeLangChainMessages","LANGGRAPH_ORIGIN","GEN_AI_AGENT_NAME_ATTRIBUTE","GEN_AI_PIPELINE_NAME_ATTRIBUTE","extractToolsFromCompiledGraph","setResponseAttributes","supportsNativeFetch","isBrowserBundle","isNodeEnv","exports","UNKNOWN_FUNCTION","filenameIsInApp","flush","vercelWaitUntil","createRequire","parseSemver","detectActiveBundler","loadModule","getBuildPluginOptions","getPackageModules","supportsTurbopackRuleCondition","supportsNativeDebugIds","generateValueInjectionRules","escapeStringForRegex","getNextjsVersion","normalizePathForGlob","supportsProductionCompileHook","constructTurbopackConfig","handleRunAfterProductionCompile","DEFAULT_SERVER_EXTERNAL_PACKAGES","constructWebpackConfigFunction","instrumentation","registerInstrumentations","MAX_BODY_BYTE_LENGTH","createContextKey","subscribe","context","httpRequestToRequestData","patchRequestToCaptureBody","stripUrlQueryAndFragment","_INTERNAL_safeMathRandom","propagation","SpanKind","httpHeadersToSpanAttributes","RPCType","setRPCMetadata","trace","getSpanStatusFromHttpCode","errorMonitor","addStartSpanCallback","isTracingSuppressed","ATTR_HTTP_RESPONSE_STATUS_CODE","SEMATTRS_HTTP_STATUS_CODE","getRPCMetadata","SEMATTRS_NET_HOST_IP","SEMATTRS_NET_HOST_PORT","SEMATTRS_NET_PEER_IP","ATTR_HTTP_ROUTE","parseBaggageHeader","objectToBaggageHeader","getBreadcrumbLogLevelFromHttpStatusCode","shouldPropagateTraceForUrl","mergeBaggageHeaders","parseUrl","getSanitizedUrlString","InstrumentationBase","INSTRUMENTATION_NAME","LRUMap","unsubscribe","InstrumentationNodeModuleDefinition","SpanStatusCode","addRequestBreadcrumb","addTracePropagationHeadersToOutgoingRequest","getRequestOptions","getClientRequestUrl","getHttpSpanDetailsFromUrlObject","ATTR_USER_AGENT_ORIGINAL","ATTR_URL_FULL","ATTR_NETWORK_PROTOCOL_VERSION","ATTR_NETWORK_TRANSPORT","ATTR_NETWORK_PEER_ADDRESS","ATTR_NETWORK_PEER_PORT","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","generateInstrumentOnce","SentryHttpInstrumentation","httpServerIntegration","httpServerSpansIntegration","addTracePropagationHeadersToFetchRequest","addFetchRequestBreadcrumb","NODE_MAJOR","NODE_MINOR","getAbsoluteUrl","SentryNodeFetchInstrumentation","SEMATTRS_HTTP_URL","ATTR_HTTP_REQUEST_METHOD","SEMATTRS_HTTP_METHOD","isSentryRequestUrl","TraceFlags","ATTR_DB_SYSTEM_NAME","SEMATTRS_DB_SYSTEM","SEMATTRS_RPC_SERVICE","SEMATTRS_MESSAGING_SYSTEM","SEMATTRS_FAAS_TRIGGER","SEMATTRS_DB_STATEMENT","SEMATTRS_HTTP_TARGET","TraceState","W3CBaggagePropagator","INVALID_TRACEID","suppressTracing","suppressTracingImpl","setAsyncContextStrategy","SEMATTRS_RPC_GRPC_STATUS_CODE","_INTERNAL_safeDateNow","debounce","captureEvent","ROOT_CONTEXT","SamplingDecision","isSpanContextValid","wrapContextManagerClass","AsyncLocalStorageContextManager","diag","DiagLogLevel","promisify","readFile","readdir","execFile","join","createReadStream","createInterface","functionNamesMatch","LOCAL_VARIABLES_KEY","Worker","isDebuggerEnabled","createRateLimiter","NODE_VERSION","localVariablesSyncIntegration","localVariablesAsyncIntegration","isCjs","dirname","existsSync","readFileSync","isMainThread","logAndExitProcess","startSession","endSession","Agent","parseProxyResponse","Readable","createTransport","HttpsProxyAgent","createGzip","envToBool","sep","posix","createStackParser","nodeStackLineParser","createGetModuleFromFilename","ServerRuntimeClient","applySdkMetadata","threadId","_INTERNAL_clearAiProviderSkips","getTraceContextForScope","supportsEsmLoaderHooks","createAddHookMessageChannel","inboundFiltersIntegration","functionToStringIntegration","linkedErrorsIntegration","requestDataIntegration","systemErrorIntegration","conversationIdIntegration","consoleIntegration","httpIntegration","nativeNodeFetchIntegration","onUncaughtExceptionIntegration","onUnhandledRejectionIntegration","contextLinesIntegration","localVariablesIntegration","nodeContextIntegration","childProcessIntegration","processSessionIntegration","modulesIntegration","initializeEsmLoader","setOpenTelemetryContextAsyncContextStrategy","SPOTLIGHT_INTEGRATION_NAME","spotlightIntegration","client","NodeClient","enhanceDscWithOpenTelemetryRootSpanName","setupEventContextTrace","openTelemetrySetupCheck","getSpotlightConfig","makeNodeTransport","stackParserFromStackParserOptions","defaultStackParser","getIntegrationsToSetup","getSentryRelease","getScopesFromContext","isWrapped","createMissingInstrumentationContext","types","format","captureLog","metrics","performance","monitorEventLoopDelay","_INTERNAL_safeUnref","captureMessage","replaceCronNames","withMonitor","instrumentCron","instrumentNodeCron","instrumentNodeSchedule","HttpInstrumentation","getRequestUrl","addOriginToSpan","UndiciInstrumentation","FsInstrumentation","ExpressInstrumentation","ensureIsWrapped","AttributeNames","FastifyTypes","FastifyNames","spanRequestSymbol","endSpan","safeExecuteInTheMiddleMaybePromise","safeExecuteInTheMiddle","SEMATTRS_HTTP_ROUTE","FastifyInstrumentationV3","FastifyOtelInstrumentation","GraphQLInstrumentation","SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION","KafkaJsInstrumentation","LruMemoizerInstrumentation","MongoDBInstrumentation","MongooseInstrumentation","MySQLInstrumentation","MySQL2Instrumentation","_redisOptions","getCacheKeySafely","getCacheOperation","shouldConsiderForCache","calculateCacheItemSize","SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE","isInCommands","GET_COMMANDS","SEMANTIC_ATTRIBUTE_CACHE_HIT","SEMANTIC_ATTRIBUTE_CACHE_KEY","IORedisInstrumentation","RedisInstrumentation","PgInstrumentation","InstrumentationNodeModuleFile","instrumentPostgresJsSql","replaceExports","ATTR_DB_OPERATION_NAME","ATTR_DB_QUERY_TEXT","ATTR_DB_RESPONSE_STATUS_CODE","ATTR_ERROR_TYPE","PrismaInstrumentation","HapiInstrumentation","HonoTypes","HonoInstrumentation","KoaInstrumentation","ConnectInstrumentation","KnexInstrumentation","instrumentWhenWrapped","TediousInstrumentation","GenericPoolInstrumentation","DataloaderInstrumentation","AmqplibInstrumentation","_INTERNAL_getSpanContextForToolCallId","_INTERNAL_cleanupToolCallSpanContext","INTEGRATION_NAME","SentryVercelAiInstrumentation","addVercelAiProcessors","_INTERNAL_shouldSkipAiProviderWrapping","OPENAI_INTEGRATION_NAME","instrumentOpenAiClient","SentryOpenAiInstrumentation","ANTHROPIC_AI_INTEGRATION_NAME","instrumentAnthropicAiClient","SentryAnthropicAiInstrumentation","GOOGLE_GENAI_INTEGRATION_NAME","instrumentGoogleGenAIClient","SentryGoogleGenAiInstrumentation","_INTERNAL_skipAiProviderWrapping","createLangChainCallbackHandler","LANGCHAIN_INTEGRATION_NAME","SentryLangChainInstrumentation","instrumentLangGraph","LANGGRAPH_INTEGRATION_NAME","SentryLangGraphInstrumentation","isBrowser","coreGrowthbookIntegration","ATTR_DB_COLLECTION_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","patchFirestore","patchFunctions","FirebaseInstrumentation","expressIntegration","fastifyIntegration","graphqlIntegration","honoIntegration","mongoIntegration","mongooseIntegration","mysqlIntegration","mysql2Integration","redisIntegration","postgresIntegration","prismaIntegration","hapiIntegration","koaIntegration","connectIntegration","tediousIntegration","genericPoolIntegration","kafkaIntegration","amqplibIntegration","lruMemoizerIntegration","langChainIntegration","langGraphIntegration","vercelAIIntegration","openAIIntegration","anthropicAIIntegration","googleGenAIIntegration","postgresJsIntegration","firebaseIntegration","instrumentSentryHttp","instrumentOtelHttp","instrumentExpress","instrumentConnect","instrumentFastify","instrumentFastifyV3","instrumentHapi","instrumentHono","instrumentKafka","instrumentKoa","instrumentLruMemoizer","instrumentMongo","instrumentMongoose","instrumentMysql","instrumentMysql2","instrumentPostgres","instrumentGraphql","instrumentRedis","instrumentTedious","instrumentGenericPool","instrumentAmqplib","instrumentLangChain","instrumentVercelAi","instrumentOpenAi","instrumentPostgresJs","instrumentFirebase","instrumentAnthropicAi","instrumentGoogleGenAI","setupOpenTelemetryLogger","coreDebug","getOpenTelemetryInstrumentationToPreload","BasicTracerProvider","SentrySampler","defaultResource","resourceFromAttributes","ATTR_SERVICE_NAME","SEMRESATTRS_SERVICE_NAMESPACE","ATTR_SERVICE_VERSION","SentrySpanProcessor","SentryPropagator","SentryContextManager","getNodeCoreDefaultIntegrations","getAutoPerformanceIntegrations","initNodeCore","initOpenTelemetry","validateOpenTelemetrySetup","getGitRevision","resolveTunnelRoute","setUpTunnelRewriteRules","createRouteManifest","requiresInstrumentationHook","getInstrumentationClientFileContents","migrateDeprecatedWebpackOptions","resolveReleaseName","maybeSetUpTunnelRouteRewriteRules","shouldReturnEarlyInExperimentalBuildMode","maybeCreateRouteManifest","maybeGetVercelCronsConfig","setUpBuildTimeVariables","getNextMajor","maybeSetClientTraceMetadataOption","maybeSetInstrumentationHookOption","warnIfMissingOnRouterTransitionStartHook","getBundlerInfo","maybeWarnAboutUnsupportedTurbopack","maybeWarnAboutUnsupportedRunAfterProductionCompileHook","maybeConstructTurbopackConfig","resolveUseRunAfterProductionCompileHookOption","maybeSetUpRunAfterProductionCompileHook","maybeEnableTurbopackSourcemaps","getServerExternalPackagesPatch","getWebpackPatch","getTurbopackPatch","getFinalConfigObject","MODERN_BROWSERSLIST_TARGET","module","UNDERSCORE_GLOBAL_ERROR_ROUTE","UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY","UNDERSCORE_NOT_FOUND_ROUTE","UNDERSCORE_NOT_FOUND_ROUTE_ENTRY","APP_CLIENT_INTERNALS","APP_PATHS_MANIFEST","APP_PATH_ROUTES_MANIFEST","AdapterOutputType","BARREL_OPTIMIZATION_PREFIX","BLOCKED_PAGES","BUILD_ID_FILE","BUILD_MANIFEST","CLIENT_PUBLIC_FILES_PATH","CLIENT_REFERENCE_MANIFEST","CLIENT_STATIC_FILES_PATH","CLIENT_STATIC_FILES_RUNTIME_MAIN","CLIENT_STATIC_FILES_RUNTIME_MAIN_APP","CLIENT_STATIC_FILES_RUNTIME_POLYFILLS","CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL","CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH","CLIENT_STATIC_FILES_RUNTIME_WEBPACK","COMPILER_INDEXES","COMPILER_NAMES","CONFIG_FILES","DEFAULT_RUNTIME_WEBPACK","DEFAULT_SANS_SERIF_FONT","DEFAULT_SERIF_FONT","DEV_CLIENT_MIDDLEWARE_MANIFEST","DEV_CLIENT_PAGES_MANIFEST","DYNAMIC_CSS_MANIFEST","EDGE_RUNTIME_WEBPACK","EDGE_UNSUPPORTED_NODE_APIS","EXPORT_DETAIL","EXPORT_MARKER","FUNCTIONS_CONFIG_MANIFEST","IMAGES_MANIFEST","INTERCEPTION_ROUTE_REWRITE_MANIFEST","MIDDLEWARE_BUILD_MANIFEST","MIDDLEWARE_MANIFEST","MIDDLEWARE_REACT_LOADABLE_MANIFEST","NEXT_BUILTIN_DOCUMENT","NEXT_FONT_MANIFEST","PAGES_MANIFEST","PHASE_ANALYZE","PHASE_DEVELOPMENT_SERVER","PHASE_EXPORT","PHASE_INFO","PHASE_PRODUCTION_BUILD","PHASE_PRODUCTION_SERVER","PHASE_TEST","PRERENDER_MANIFEST","REACT_LOADABLE_MANIFEST","ROUTES_MANIFEST","RSC_MODULE_TYPES","SERVER_DIRECTORY","SERVER_FILES_MANIFEST","SERVER_PROPS_ID","SERVER_REFERENCE_MANIFEST","STATIC_PROPS_ID","STATIC_STATUS_PAGES","STRING_LITERAL_DROP_BUNDLE","SUBRESOURCE_INTEGRITY_MANIFEST","SYSTEM_ENTRYPOINTS","TRACE_OUTPUT_VERSION","TURBOPACK_CLIENT_BUILD_MANIFEST","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","TURBO_TRACE_DEFAULT_MEMORY_LIMIT","WEBPACK_STATS","server","edgeServer","process","features","typescript","Symbol","name","xAvgCharWidth","azAvgWidth","unitsPerEm","Set","getSanitizedRequestUrl","rewriteFramesIntegration","winterCGHeadersToDict","ATTR_NEXT_SPAN_TYPE","isSentryRequestSpan","TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION","ATTR_NEXT_SPAN_NAME","ATTR_NEXT_SEGMENT","captureCheckIn","dropMiddlewareTunnelRequests","ATTR_NEXT_ROUTE","maybeStartCronCheckIn","maybeEnrichQueueConsumerSpan","addHeadersAsAttributes","maybeEnhanceServerComponentSpanName","maybeEnrichQueueProducerSpan","isAlreadyCaptured","waitUntil","flushSafelyWithTimeout","isBuild","isUseCacheFunction","coreStartSpan","coreStartSpanManual","coreStartInactiveSpan","TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL","withErrorInstrumentation","callDataFetcherTraced","withTracedServerSideDataFetcher","isNotFoundNavigationError","isRedirectNavigationError","commonObjectToIsolationScope","winterCGRequestToRequestData","extractTraceparentData","continueTrace","headersToDict","dropNextjsRootContext","escapeNextjsTracing","objectify","isCloudflareWaitUntilAvailable","prepareSafeIdGeneratorContext","getDefaultIntegrations","distDirRewriteFramesIntegration","getVercelEnv","nodeInit","ATTR_URL_QUERY","handleOnSpanStart","maybeCompleteCronCheckIn","maybeCleanupQueueSpan","TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL","setUrlProcessingMetadata","devErrorSymbolicationEventProcessor"],"mappings":"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IAAI,CAAC,MAAM,EACpB,IAAI,CAAC,MAAM,CAAC,GOwDK,EPxDA,GAErB,CAAC,AAEO,aAAW,MACG,MOuDM,EPvDlB,CAAC,EAAsB,IAAhB,gBACA,IAAI,CAAC,MAAM,CAAC,CAAC,AAC1B,IAAI,CAAC,MAAM,MAAG,EAElB,CAAC,CAGF,KAL4B,CAAC,UGjPU,CHCtB,EOeV,AVlBmC,AGIzC,EYJ2C,AJCA,AXDA,AUmB3C,CKnB4C,AJCA,AJDA,ECCE,ADDA,ECCE,CRDC,GOAG,AFEA,CQElC,ARFmC,CDDC,AIAA,CKItD,ATJuD,CHCC,CAAC,ASiB3C,APfE,EOgBhB,APfA,CGH0E,ICFV,CAAC,IMKnD,CbLwD,CAAC,CaMxE,CdciD,CMSnB,CG5B8C,AEmB3D,CFnB4D,CEoB5E,APhBkB,CUCb,CVAL,SOeW,EACX,IPhBe,GAChB,AJeyB,CAAA,CchBE,CdgBF,AchBG,GVCtB,IOeY,EACjB,aAAa,EPhBa,AOiB1B,CXKM,AItBqB,CJsBpB,UAAA,CAAW,EAAA,EACT,CWNS,GXMT,AWLV,CXKU,KWLJ,KXKmB,gBWLE,CAAC,wDXsBrB,WAAY,EAAK,EAAD,MAAC,CAAS,UAAU,uBAEhB,EAAK,oBAAoB,IMkBE,KNjBxC,EAAA,WAAgB,CeCC,EfDE,CSQvB,MAAA,qBTPmB,iBAAiB,yBACb,GAAG,UAAU,EAAE,2BAEvC,EcYI,AdZC,CeEG,UfFQ,EAAE,CAAC,GEmBK,CAAC,EFnBA,MACvB,EAAK,IAAA,cACA,EAAA,oBAAA,AAAoB,EAAC,EAAK,CEmBC,AahBA,QfHQ,CAAC,ACCV,aDA3B,EAAA,oBAAA,AAAoB,EAAC,EAAK,QAAQ,CAAC,YACjC,CEuBD,CapBK,AfHC,KSS+C,CAAC,CAAC,GTTjD,QACT,EAAK,CkBcC,AhBSA,CAAC,IFvBI,CeGC,AdFE,ODAd,EAAK,CeGD,KAAA,OfFL,EAAA,KAAA,EASH,WACN,CAAqB,CAAA,CAAA,CAAA,CAGrB,CSWC,GAAA,ITXU,KAAQ,CWiDC,CXhDlB,IADwB,IACxB,GAAW,CAAC,CEoBC,GAAA,CFpBI,GCHK,QDGM,CAAC,EEoBE,CFpBK,CAAE,KAA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","ignoreList":[194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,257,258,259,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,426,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,606,607,608,609,610,611,612,613,614,615,624,629,630,631,632]}}] } \ No newline at end of file diff --git a/.next/server/pages/404.html b/.next/server/pages/404.html index 83b002999..98cfb6c39 100644 --- a/.next/server/pages/404.html +++ b/.next/server/pages/404.html @@ -1 +1 @@ -404: This page could not be found.

      404

      This page could not be found.

      \ No newline at end of file +404: This page could not be found.

      404

      This page could not be found.

      \ No newline at end of file diff --git a/.next/server/pages/500.html b/.next/server/pages/500.html index 65f9a031c..e83f19541 100644 --- a/.next/server/pages/500.html +++ b/.next/server/pages/500.html @@ -1,2 +1,2 @@ -500: Internal Server Error.

      500

      Internal Server Error.

      \ No newline at end of file +500: Internal Server Error.

      500

      Internal Server Error.

      \ No newline at end of file diff --git a/.next/standalone/.next/BUILD_ID b/.next/standalone/.next/BUILD_ID index 5709a67db..0f376391c 100644 --- a/.next/standalone/.next/BUILD_ID +++ b/.next/standalone/.next/BUILD_ID @@ -1 +1 @@ -ON8Osmtbmq5s2e697_K2w \ No newline at end of file +XENt8yYSMkapksfMi5ncI \ No newline at end of file diff --git a/.next/standalone/.next/build-manifest.json b/.next/standalone/.next/build-manifest.json index 25a94290c..57d2d36e2 100644 --- a/.next/standalone/.next/build-manifest.json +++ b/.next/standalone/.next/build-manifest.json @@ -7,8 +7,8 @@ "static/chunks/a6dad97d9634a72d.js" ], "lowPriorityFiles": [ - "static/ON8Osmtbmq5s2e697_K2w/_ssgManifest.js", - "static/ON8Osmtbmq5s2e697_K2w/_buildManifest.js" + "static/XENt8yYSMkapksfMi5ncI/_ssgManifest.js", + "static/XENt8yYSMkapksfMi5ncI/_buildManifest.js" ], "rootMainFiles": [ "static/chunks/c68fc807b9365f18.js", diff --git a/.next/standalone/.next/required-server-files.json b/.next/standalone/.next/required-server-files.json index d6e248fdb..47f2c9ea5 100644 --- a/.next/standalone/.next/required-server-files.json +++ b/.next/standalone/.next/required-server-files.json @@ -4,7 +4,7 @@ "env": { "_sentryRewriteFramesDistDir": ".next", "_sentryRewriteFramesAssetPrefixPath": "", - "_sentryRelease": "9dad66acd3deb36c6e51fae1fdce6de96dd992c7" + "_sentryRelease": "dc62485b60679b810b5f74bfb5a22915b7a62314" }, "typescript": { "ignoreBuildErrors": false diff --git a/.next/standalone/.next/server/app/[locale]/[slug]/page/react-loadable-manifest.json b/.next/standalone/.next/server/app/[locale]/[slug]/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/standalone/.next/server/app/[locale]/[slug]/page/react-loadable-manifest.json +++ b/.next/standalone/.next/server/app/[locale]/[slug]/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/standalone/.next/server/app/[locale]/[slug]/page_client-reference-manifest.js b/.next/standalone/.next/server/app/[locale]/[slug]/page_client-reference-manifest.js index 8c21aea90..eba270807 100644 --- a/.next/standalone/.next/server/app/[locale]/[slug]/page_client-reference-manifest.js +++ b/.next/standalone/.next/server/app/[locale]/[slug]/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/[slug]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedLink.tsx ":{"id":813804,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedLink.tsx":{"id":813804,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx ":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx ":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx ":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx ":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompanyTimeline.tsx ":{"id":287980,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompanyTimeline.tsx":{"id":287980,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/bb67666abbf0faf9.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"813804":{"*":{"id":586793,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"610408":{"*":{"id":805585,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"138557":{"*":{"id":523290,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"285997":{"*":{"id":649511,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"677705":{"*":{"id":744435,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"287980":{"*":{"id":104186,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"813804":{"*":{"id":214504,"name":"*","chunks":[],"async":false}},"610408":{"*":{"id":575076,"name":"*","chunks":[],"async":false}},"138557":{"*":{"id":34183,"name":"*","chunks":[],"async":false}},"285997":{"*":{"id":819160,"name":"*","chunks":[],"async":false}},"677705":{"*":{"id":960688,"name":"*","chunks":[],"async":false}},"287980":{"*":{"id":980820,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/[slug]/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/[slug]/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/bb67666abbf0faf9.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/[slug]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedLink.tsx ":{"id":813804,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedLink.tsx":{"id":813804,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx ":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx ":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx ":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx ":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompanyTimeline.tsx ":{"id":287980,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/CompanyTimeline.tsx":{"id":287980,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/d029331c34817a47.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"813804":{"*":{"id":586793,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"610408":{"*":{"id":805585,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"138557":{"*":{"id":523290,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"285997":{"*":{"id":649511,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"677705":{"*":{"id":744435,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}},"287980":{"*":{"id":104186,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__515fce6c._.js","server/chunks/ssr/components_blocks_05eea213._.js","server/chunks/ssr/_6f66913b._.js","server/chunks/ssr/components_d242fd4b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"813804":{"*":{"id":214504,"name":"*","chunks":[],"async":false}},"610408":{"*":{"id":575076,"name":"*","chunks":[],"async":false}},"138557":{"*":{"id":34183,"name":"*","chunks":[],"async":false}},"285997":{"*":{"id":819160,"name":"*","chunks":[],"async":false}},"677705":{"*":{"id":960688,"name":"*","chunks":[],"async":false}},"287980":{"*":{"id":980820,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/[slug]/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/[slug]/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/d029331c34817a47.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/standalone/.next/server/app/[locale]/blog/[slug]/page/react-loadable-manifest.json b/.next/standalone/.next/server/app/[locale]/blog/[slug]/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/standalone/.next/server/app/[locale]/blog/[slug]/page/react-loadable-manifest.json +++ b/.next/standalone/.next/server/app/[locale]/blog/[slug]/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/standalone/.next/server/app/[locale]/blog/[slug]/page_client-reference-manifest.js b/.next/standalone/.next/server/app/[locale]/blog/[slug]/page_client-reference-manifest.js index 4b196c0b2..52aa9ed13 100644 --- a/.next/standalone/.next/server/app/[locale]/blog/[slug]/page_client-reference-manifest.js +++ b/.next/standalone/.next/server/app/[locale]/blog/[slug]/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/blog/[slug]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blog/TableOfContents.tsx ":{"id":959504,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blog/TableOfContents.tsx":{"id":959504,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/BlogEngagementTracker.tsx ":{"id":59828,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/BlogEngagementTracker.tsx":{"id":59828,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/e30faaa1d932575b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"959504":{"*":{"id":762771,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"59828":{"*":{"id":679329,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"959504":{"*":{"id":630187,"name":"*","chunks":[],"async":false}},"59828":{"*":{"id":679007,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/blog/[slug]/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/blog/[slug]/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/e30faaa1d932575b.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/blog/[slug]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blog/TableOfContents.tsx ":{"id":959504,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blog/TableOfContents.tsx":{"id":959504,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/BlogEngagementTracker.tsx ":{"id":59828,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/BlogEngagementTracker.tsx":{"id":59828,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/40c364ffa4723488.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"959504":{"*":{"id":762771,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"59828":{"*":{"id":679329,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__4f559f29._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"959504":{"*":{"id":630187,"name":"*","chunks":[],"async":false}},"59828":{"*":{"id":679007,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/blog/[slug]/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/blog/[slug]/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/40c364ffa4723488.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/standalone/.next/server/app/[locale]/blog/page/react-loadable-manifest.json b/.next/standalone/.next/server/app/[locale]/blog/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/standalone/.next/server/app/[locale]/blog/page/react-loadable-manifest.json +++ b/.next/standalone/.next/server/app/[locale]/blog/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/standalone/.next/server/app/[locale]/blog/page_client-reference-manifest.js b/.next/standalone/.next/server/app/[locale]/blog/page_client-reference-manifest.js index 0fa4028b9..55bd11f67 100644 --- a/.next/standalone/.next/server/app/[locale]/blog/page_client-reference-manifest.js +++ b/.next/standalone/.next/server/app/[locale]/blog/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/blog/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/components/blog/BlogPaginationKeyboardObserver.tsx ":{"id":783488,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false},"[project]/components/blog/BlogPaginationKeyboardObserver.tsx":{"id":783488,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a551d00bdf29b7b5.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"783488":{"*":{"id":281104,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"783488":{"*":{"id":43482,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/blog/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/blog/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/a551d00bdf29b7b5.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/blog/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/components/blog/BlogPaginationKeyboardObserver.tsx ":{"id":783488,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false},"[project]/components/blog/BlogPaginationKeyboardObserver.tsx":{"id":783488,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/507106f8cc18accf.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}},"783488":{"*":{"id":281104,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_5d55bae9._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"783488":{"*":{"id":43482,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/blog/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/blog/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/507106f8cc18accf.js"]}} diff --git a/.next/standalone/.next/server/app/[locale]/contact/page/react-loadable-manifest.json b/.next/standalone/.next/server/app/[locale]/contact/page/react-loadable-manifest.json index d4a3f8db2..fdfa4a197 100644 --- a/.next/standalone/.next/server/app/[locale]/contact/page/react-loadable-manifest.json +++ b/.next/standalone/.next/server/app/[locale]/contact/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/standalone/.next/server/app/[locale]/contact/page_client-reference-manifest.js b/.next/standalone/.next/server/app/[locale]/contact/page_client-reference-manifest.js index 046cd7c94..0d55194ec 100644 --- a/.next/standalone/.next/server/app/[locale]/contact/page_client-reference-manifest.js +++ b/.next/standalone/.next/server/app/[locale]/contact/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/contact/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactForm.tsx ":{"id":833128,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactForm.tsx":{"id":833128,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactMap.tsx ":{"id":936744,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactMap.tsx":{"id":936744,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ObfuscatedEmail.tsx ":{"id":499139,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ObfuscatedEmail.tsx":{"id":499139,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/a9e41f7e725e0855.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"833128":{"*":{"id":366014,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"936744":{"*":{"id":648658,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"499139":{"*":{"id":567784,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"833128":{"*":{"id":115955,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"936744":{"*":{"id":263835,"name":"*","chunks":[],"async":false}},"499139":{"*":{"id":228672,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/contact/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/contact/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/a9e41f7e725e0855.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/contact/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactForm.tsx ":{"id":833128,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactForm.tsx":{"id":833128,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactMap.tsx ":{"id":936744,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ContactMap.tsx":{"id":936744,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ObfuscatedEmail.tsx ":{"id":499139,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/ObfuscatedEmail.tsx":{"id":499139,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/15da4f80e6e79aca.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"833128":{"*":{"id":366014,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"936744":{"*":{"id":648658,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"499139":{"*":{"id":567784,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__b20a6437._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"833128":{"*":{"id":115955,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"936744":{"*":{"id":263835,"name":"*","chunks":[],"async":false}},"499139":{"*":{"id":228672,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/contact/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/contact/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/15da4f80e6e79aca.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/standalone/.next/server/app/[locale]/page/react-loadable-manifest.json b/.next/standalone/.next/server/app/[locale]/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/standalone/.next/server/app/[locale]/page/react-loadable-manifest.json +++ b/.next/standalone/.next/server/app/[locale]/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/standalone/.next/server/app/[locale]/page_client-reference-manifest.js b/.next/standalone/.next/server/app/[locale]/page_client-reference-manifest.js index 37e637334..ab25bd30b 100644 --- a/.next/standalone/.next/server/app/[locale]/page_client-reference-manifest.js +++ b/.next/standalone/.next/server/app/[locale]/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx ":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx ":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx ":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx ":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"610408":{"*":{"id":805585,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"138557":{"*":{"id":523290,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"285997":{"*":{"id":649511,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"677705":{"*":{"id":744435,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"610408":{"*":{"id":575076,"name":"*","chunks":[],"async":false}},"138557":{"*":{"id":34183,"name":"*","chunks":[],"async":false}},"285997":{"*":{"id":819160,"name":"*","chunks":[],"async":false}},"677705":{"*":{"id":960688,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/650cc12d707f2be0.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx ":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/HeroVideo.tsx":{"id":610408,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx ":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/SubCompanyTiles.tsx":{"id":138557,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx ":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/CompetenceBentoGrid.tsx":{"id":285997,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx ":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false},"[project]/components/blocks/ReferencesSlider.tsx":{"id":677705,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/650cc12d707f2be0.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"610408":{"*":{"id":805585,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"138557":{"*":{"id":523290,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"285997":{"*":{"id":649511,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}},"677705":{"*":{"id":744435,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/components_blocks_05eea213._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"610408":{"*":{"id":575076,"name":"*","chunks":[],"async":false}},"138557":{"*":{"id":34183,"name":"*","chunks":[],"async":false}},"285997":{"*":{"id":819160,"name":"*","chunks":[],"async":false}},"677705":{"*":{"id":960688,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/650cc12d707f2be0.js"]}} diff --git a/.next/standalone/.next/server/app/[locale]/team/page/react-loadable-manifest.json b/.next/standalone/.next/server/app/[locale]/team/page/react-loadable-manifest.json index 2d920ed0d..732774f2f 100644 --- a/.next/standalone/.next/server/app/[locale]/team/page/react-loadable-manifest.json +++ b/.next/standalone/.next/server/app/[locale]/team/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/standalone/.next/server/app/[locale]/team/page_client-reference-manifest.js b/.next/standalone/.next/server/app/[locale]/team/page_client-reference-manifest.js index 3b76231d5..43d10a89b 100644 --- a/.next/standalone/.next/server/app/[locale]/team/page_client-reference-manifest.js +++ b/.next/standalone/.next/server/app/[locale]/team/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/team/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/team/Gallery.tsx ":{"id":7278,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/team/Gallery.tsx":{"id":7278,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedButton.tsx ":{"id":132273,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedButton.tsx":{"id":132273,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/9dd118ede697d679.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"7278":{"*":{"id":26701,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"132273":{"*":{"id":390265,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"7278":{"*":{"id":620578,"name":"*","chunks":[],"async":false}},"132273":{"*":{"id":763547,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/team/page":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/team/page":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/9dd118ede697d679.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/team/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx ":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Reveal.tsx":{"id":759095,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/team/Gallery.tsx ":{"id":7278,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/team/Gallery.tsx":{"id":7278,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedButton.tsx ":{"id":132273,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/TrackedButton.tsx":{"id":132273,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/218ae81565b48aff.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"759095":{"*":{"id":188457,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"7278":{"*":{"id":26701,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"132273":{"*":{"id":390265,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__0bdab930._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}},"759095":{"*":{"id":479251,"name":"*","chunks":[],"async":false}},"7278":{"*":{"id":620578,"name":"*","chunks":[],"async":false}},"132273":{"*":{"id":763547,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/team/page":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/team/page":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/218ae81565b48aff.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/standalone/.next/server/app/[locale]/test/page/react-loadable-manifest.json b/.next/standalone/.next/server/app/[locale]/test/page/react-loadable-manifest.json index 80ff07db4..5b2261139 100644 --- a/.next/standalone/.next/server/app/[locale]/test/page/react-loadable-manifest.json +++ b/.next/standalone/.next/server/app/[locale]/test/page/react-loadable-manifest.json @@ -2,21 +2,21 @@ "565071": { "id": 565071, "files": [ - "static/chunks/ad93c165b40135d0.js", + "static/chunks/fdf84fd199216566.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "248785": { "id": 248785, "files": [ - "static/chunks/aec2fa7d5c9477d9.js", + "static/chunks/2f9e45ecb224d02b.js", "static/chunks/0ff158dd58fe47c8.js" ] }, "950648": { "id": 950648, "files": [ - "static/chunks/092693b3be4c94df.js", + "static/chunks/fd2d3a68c2dda793.js", "static/chunks/0ff158dd58fe47c8.js" ] }, diff --git a/.next/standalone/.next/server/app/[locale]/test/page_client-reference-manifest.js b/.next/standalone/.next/server/app/[locale]/test/page_client-reference-manifest.js index de5313004..7257d9b23 100644 --- a/.next/standalone/.next/server/app/[locale]/test/page_client-reference-manifest.js +++ b/.next/standalone/.next/server/app/[locale]/test/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/[locale]/test/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/96ab9ac4f103512c.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5b986d05c5eeddd1.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8d21a9c9b9b42088.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/bead93b8f9ff3f6c.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/96ab9ac4f103512c.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5b986d05c5eeddd1.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8d21a9c9b9b42088.js","static/chunks/0ff158dd58fe47c8.js"]}} +globalThis.__RSC_MANIFEST["/[locale]/test/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/layout-router.js":{"id":666284,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":29584,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js ":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-page.js":{"id":30965,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/client-segment.js":{"id":966591,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3420,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":489266,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":67067,"name":"*","chunks":["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"async":false},"[project]/app/global-error.tsx ":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/app/global-error.tsx":{"id":253348,"name":"*","chunks":["/_next/static/chunks/7bc980684698d6e7.js","/_next/static/chunks/5336d64d11e7435f.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js ":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/app-dir/link.js":{"id":184868,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js ":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/client/image-component.js":{"id":702050,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx ":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/LanguageSwitcher.tsx":{"id":287564,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx ":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/layout/Header.tsx":{"id":993983,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx ":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/SkipLink.tsx":{"id":814508,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx ":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/analytics/AnalyticsShell.tsx":{"id":531518,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js ":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/node_modules/.pnpm/next-intl@4.9.0_@swc+helpers@0.5.20_next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1_5cb25dbd0384afd6e865a90a66b8b329/node_modules/next-intl/dist/esm/production/shared/NextIntlClientProvider.js":{"id":600023,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx ":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/components/FeedbackClientWrapper.tsx":{"id":689647,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js"],"async":false},"[project]/app/[locale]/error.tsx ":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/app/[locale]/error.tsx":{"id":309974,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/8eda4ccbc7682bed.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx ":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/Scribble.tsx":{"id":224038,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx ":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false},"[project]/components/analytics/ClientNotFoundTracker.tsx":{"id":555331,"name":"*","chunks":["/_next/static/chunks/5dced52d81a603a9.js","/_next/static/chunks/eeabc9d46e43f022.js","/_next/static/chunks/595f4cd305cd0088.js","/_next/static/chunks/638730c9f4207dea.js","/_next/static/chunks/2d7630a45ddc2e56.js","/_next/static/chunks/fac3383571a5e891.js","/_next/static/chunks/ad1b4e551db227fe.js","/_next/static/chunks/5a836673698c817b.js","/_next/static/chunks/0ff158dd58fe47c8.js"],"async":false}},"ssrModuleMapping":{"666284":{"*":{"id":164732,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"29584":{"*":{"id":743976,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"30965":{"*":{"id":46550,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"966591":{"*":{"id":594180,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"3420":{"*":{"id":585766,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"489266":{"*":{"id":471584,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"67067":{"*":{"id":561162,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__366a9ff8._.js","server/chunks/ssr/468ab_next_dist_esm_10bac804._.js"],"async":false}},"253348":{"*":{"id":303171,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__411530ea._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"],"async":false}},"184868":{"*":{"id":841757,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"702050":{"*":{"id":739969,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"287564":{"*":{"id":81870,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"993983":{"*":{"id":581631,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"814508":{"*":{"id":909381,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"531518":{"*":{"id":905651,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"600023":{"*":{"id":650766,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"689647":{"*":{"id":894447,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js"],"async":false}},"309974":{"*":{"id":497627,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__34977423._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"224038":{"*":{"id":991320,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}},"555331":{"*":{"id":868513,"name":"*","chunks":["server/chunks/ssr/468ab_next_dist_a9fadb3f._.js","server/chunks/ssr/node_modules__pnpm_d28cabd9._.js","server/chunks/ssr/[root-of-the-server]__7fda9c9f._.js","server/chunks/ssr/876ae_framer-motion_dist_es_render_components_motion_proxy_mjs_b5db6a2f._.js","server/chunks/ssr/_16003e4d._.js","server/chunks/ssr/468ab_next_c7821d87._.js","server/chunks/ssr/_c3cb4fd0._.js","server/chunks/ssr/[root-of-the-server]__63a582be._.js","server/chunks/ssr/_6f66913b._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"666284":{"*":{"id":551417,"name":"*","chunks":[],"async":false}},"29584":{"*":{"id":536434,"name":"*","chunks":[],"async":false}},"30965":{"*":{"id":387103,"name":"*","chunks":[],"async":false}},"966591":{"*":{"id":580884,"name":"*","chunks":[],"async":false}},"3420":{"*":{"id":504014,"name":"*","chunks":[],"async":false}},"489266":{"*":{"id":726190,"name":"*","chunks":[],"async":false}},"67067":{"*":{"id":76412,"name":"*","chunks":[],"async":false}},"253348":{"*":{"id":153128,"name":"*","chunks":[],"async":false}},"184868":{"*":{"id":917929,"name":"*","chunks":[],"async":false}},"702050":{"*":{"id":986834,"name":"*","chunks":[],"async":false}},"287564":{"*":{"id":168713,"name":"*","chunks":[],"async":false}},"993983":{"*":{"id":625244,"name":"*","chunks":[],"async":false}},"814508":{"*":{"id":566663,"name":"*","chunks":[],"async":false}},"531518":{"*":{"id":292727,"name":"*","chunks":[],"async":false}},"600023":{"*":{"id":963034,"name":"*","chunks":[],"async":false}},"689647":{"*":{"id":679583,"name":"*","chunks":[],"async":false}},"309974":{"*":{"id":363934,"name":"*","chunks":[],"async":false}},"224038":{"*":{"id":404449,"name":"*","chunks":[],"async":false}},"555331":{"*":{"id":588684,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/app/[locale]/opengraph-image--metadata":[],"[project]/app/global-error":[],"[project]/app/[locale]/layout":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/error":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}],"[project]/app/[locale]/not-found":[{"path":"static/chunks/c4abba184b151b69.css","inlined":false},{"path":"static/chunks/7b987e8f60b282b6.css","inlined":false}]},"entryJSFiles":{"[project]/app/[locale]/opengraph-image--metadata":["static/chunks/93736546a7cd8cd8.js","static/chunks/870a2c2978ab4440.js"],"[project]/app/global-error":["static/chunks/7bc980684698d6e7.js","static/chunks/5336d64d11e7435f.js"],"[project]/app/[locale]/layout":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js"],"[project]/app/[locale]/error":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/8eda4ccbc7682bed.js","static/chunks/0ff158dd58fe47c8.js"],"[project]/app/[locale]/not-found":["static/chunks/5dced52d81a603a9.js","static/chunks/eeabc9d46e43f022.js","static/chunks/595f4cd305cd0088.js","static/chunks/638730c9f4207dea.js","static/chunks/2d7630a45ddc2e56.js","static/chunks/fac3383571a5e891.js","static/chunks/ad1b4e551db227fe.js","static/chunks/5a836673698c817b.js","static/chunks/0ff158dd58fe47c8.js"]}} diff --git a/.next/standalone/.next/server/app/_global-error.html b/.next/standalone/.next/server/app/_global-error.html index 65f9a031c..e83f19541 100644 --- a/.next/standalone/.next/server/app/_global-error.html +++ b/.next/standalone/.next/server/app/_global-error.html @@ -1,2 +1,2 @@ -500: Internal Server Error.

      500

      Internal Server Error.

      \ No newline at end of file +500: Internal Server Error.

      500

      Internal Server Error.

      \ No newline at end of file diff --git a/.next/standalone/.next/server/app/_global-error.rsc b/.next/standalone/.next/server/app/_global-error.rsc index 095c63302..958cfe914 100644 --- a/.next/standalone/.next/server/app/_global-error.rsc +++ b/.next/standalone/.next/server/app/_global-error.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[267866,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc b/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc index 4a26a9fdb..4833e7cab 100644 --- a/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +++ b/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true}]],["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true}]],["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc b/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc index 095c63302..958cfe914 100644 --- a/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +++ b/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[267866,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/93736546a7cd8cd8.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/870a2c2978ab4440.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc b/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc index ade5351f1..9edf87f57 100644 --- a/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +++ b/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 3:I[67067,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc b/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc index 857b0180f..e0e6921d1 100644 --- a/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +++ b/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/93736546a7cd8cd8.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc b/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc index 5a28ec2c9..492cec0cb 100644 --- a/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +++ b/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc @@ -1 +1 @@ -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false},"staleTime":300} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false},"staleTime":300} diff --git a/.next/standalone/.next/server/app/_not-found.html b/.next/standalone/.next/server/app/_not-found.html index 83b002999..98cfb6c39 100644 --- a/.next/standalone/.next/server/app/_not-found.html +++ b/.next/standalone/.next/server/app/_not-found.html @@ -1 +1 @@ -404: This page could not be found.

      404

      This page could not be found.

      \ No newline at end of file +404: This page could not be found.

      404

      This page could not be found.

      \ No newline at end of file diff --git a/.next/standalone/.next/server/app/_not-found.rsc b/.next/standalone/.next/server/app/_not-found.rsc index 5f26fe0b6..666b6d9b6 100644 --- a/.next/standalone/.next/server/app/_not-found.rsc +++ b/.next/standalone/.next/server/app/_not-found.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[253348,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc b/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc index 5f26fe0b6..666b6d9b6 100644 --- a/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +++ b/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[253348,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc b/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc index db05dba18..728934513 100644 --- a/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +++ b/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 3:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc b/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc index 3f44665fc..a5281d737 100644 --- a/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +++ b/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","html",null,{"children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc b/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc index 336d777d3..ac5010a9f 100644 --- a/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +++ b/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc b/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc index 5a1c0bc41..d15c57df2 100644 --- a/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +++ b/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc b/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc index f3736bc90..a4f136a97 100644 --- a/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +++ b/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc @@ -1 +1 @@ -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300} diff --git a/.next/standalone/.next/server/app/test.html b/.next/standalone/.next/server/app/test.html index f37d36e17..387e2a3ba 100644 --- a/.next/standalone/.next/server/app/test.html +++ b/.next/standalone/.next/server/app/test.html @@ -1 +1 @@ -

      TEST PAGE WORKS

      \ No newline at end of file +

      TEST PAGE WORKS

      \ No newline at end of file diff --git a/.next/standalone/.next/server/app/test.rsc b/.next/standalone/.next/server/app/test.rsc index 6e585167f..570fb9ea9 100644 --- a/.next/standalone/.next/server/app/test.rsc +++ b/.next/standalone/.next/server/app/test.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[253348,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","test"],"q":"","i":false,"f":[[["",{"children":["test",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","test"],"q":"","i":false,"f":[[["",{"children":["test",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/standalone/.next/server/app/test.segments/_full.segment.rsc b/.next/standalone/.next/server/app/test.segments/_full.segment.rsc index 6e585167f..570fb9ea9 100644 --- a/.next/standalone/.next/server/app/test.segments/_full.segment.rsc +++ b/.next/standalone/.next/server/app/test.segments/_full.segment.rsc @@ -6,7 +6,7 @@ 7:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 9:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] b:I[253348,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"P":null,"b":"ON8Osmtbmq5s2e697_K2w","c":["","test"],"q":"","i":false,"f":[[["",{"children":["test",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} +0:{"P":null,"b":"XENt8yYSMkapksfMi5ncI","c":["","test"],"q":"","i":false,"f":[[["",{"children":["test",{"children":["__PAGE__",{}]}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b",[]],"S":true} 8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 6:null a:[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}]] diff --git a/.next/standalone/.next/server/app/test.segments/_head.segment.rsc b/.next/standalone/.next/server/app/test.segments/_head.segment.rsc index 33e04f60b..3be16687c 100644 --- a/.next/standalone/.next/server/app/test.segments/_head.segment.rsc +++ b/.next/standalone/.next/server/app/test.segments/_head.segment.rsc @@ -2,4 +2,4 @@ 2:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"ViewportBoundary"] 3:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"MetadataBoundary"] 4:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"manifest","href":"/manifest.webmanifest"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false} diff --git a/.next/standalone/.next/server/app/test.segments/_index.segment.rsc b/.next/standalone/.next/server/app/test.segments/_index.segment.rsc index 504d26452..1365a7317 100644 --- a/.next/standalone/.next/server/app/test.segments/_index.segment.rsc +++ b/.next/standalone/.next/server/app/test.segments/_index.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}],"loading":null,"isPartial":false} diff --git a/.next/standalone/.next/server/app/test.segments/_tree.segment.rsc b/.next/standalone/.next/server/app/test.segments/_tree.segment.rsc index 7bc93eb53..43d1bf7ad 100644 --- a/.next/standalone/.next/server/app/test.segments/_tree.segment.rsc +++ b/.next/standalone/.next/server/app/test.segments/_tree.segment.rsc @@ -1 +1 @@ -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"test","paramType":null,"paramKey":"test","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":false},"staleTime":300} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"test","paramType":null,"paramKey":"test","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":false},"staleTime":300} diff --git a/.next/standalone/.next/server/app/test.segments/test.segment.rsc b/.next/standalone/.next/server/app/test.segments/test.segment.rsc index 336d777d3..ac5010a9f 100644 --- a/.next/standalone/.next/server/app/test.segments/test.segment.rsc +++ b/.next/standalone/.next/server/app/test.segments/test.segment.rsc @@ -1,4 +1,4 @@ 1:"$Sreact.fragment" 2:I[666284,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] 3:I[29584,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"default"] -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false} diff --git a/.next/standalone/.next/server/app/test.segments/test/__PAGE__.segment.rsc b/.next/standalone/.next/server/app/test.segments/test/__PAGE__.segment.rsc index 7ae47e6d1..300ca141c 100644 --- a/.next/standalone/.next/server/app/test.segments/test/__PAGE__.segment.rsc +++ b/.next/standalone/.next/server/app/test.segments/test/__PAGE__.segment.rsc @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" 2:I[67067,["/_next/static/chunks/113c8c54faea44a4.js","/_next/static/chunks/5336d64d11e7435f.js","/_next/static/chunks/870a2c2978ab4440.js"],"OutletBoundary"] 3:"$Sreact.suspense" -0:{"buildId":"ON8Osmtbmq5s2e697_K2w","rsc":["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} +0:{"buildId":"XENt8yYSMkapksfMi5ncI","rsc":["$","$1","c",{"children":[["$","div",null,{"children":["$","h1",null,{"children":"TEST PAGE WORKS"}]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false} 4:null diff --git a/.next/standalone/.next/server/chunks/node_modules__pnpm_b4ece637._.js b/.next/standalone/.next/server/chunks/node_modules__pnpm_b4ece637._.js index ca5c8bb4f..0fa0a55e9 100644 --- a/.next/standalone/.next/server/chunks/node_modules__pnpm_b4ece637._.js +++ b/.next/standalone/.next/server/chunks/node_modules__pnpm_b4ece637._.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="700e904c-e9dc-c1c5-e110-8b95775a6984")}catch(e){}}(); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="33335499-202e-67bd-daff-32b8b7c5c4fc")}catch(e){}}(); module.exports=[421756,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.DEBUG_BUILD="u"{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.GLOBAL_OBJ=globalThis},786339,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.SDK_VERSION="10.47.0"},673729,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(786339),o=e.r(56212);function i(e){let t=e.__SENTRY__=e.__SENTRY__||{};return t.version=t.version||r.SDK_VERSION,t[r.SDK_VERSION]=t[r.SDK_VERSION]||{}}n.getGlobalSingleton=function(e,t,n=o.GLOBAL_OBJ){let i=n.__SENTRY__=n.__SENTRY__||{},a=i[r.SDK_VERSION]=i[r.SDK_VERSION]||{};return a[e]||(a[e]=t())},n.getMainCarrier=function(){return i(o.GLOBAL_OBJ),o.GLOBAL_OBJ},n.getSentryCarrier=i},385177,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(673729),o=e.r(421756),i=e.r(56212),a={};function s(e){if(!("console"in i.GLOBAL_OBJ))return e();let t=i.GLOBAL_OBJ.console,n={},r=Object.keys(a);r.forEach(e=>{let r=a[e];n[e]=t[e],t[e]=r});try{return e()}finally{r.forEach(e=>{t[e]=n[e]})}}function l(){return c().enabled}function u(e,...t){o.DEBUG_BUILD&&l()&&s(()=>{i.GLOBAL_OBJ.console[e](`Sentry Logger [${e}]:`,...t)})}function c(){return o.DEBUG_BUILD?r.getGlobalSingleton("loggerSettings",()=>({enabled:!1})):{enabled:!1}}n.CONSOLE_LEVELS=["debug","info","warn","error","log","assert","trace"],n.consoleSandbox=s,n.debug={enable:function(){c().enabled=!0},disable:function(){c().enabled=!1},isEnabled:l,log:function(...e){u("log",...e)},warn:function(...e){u("warn",...e)},error:function(...e){u("error",...e)}},n.originalConsoleMethods=a},5497,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=/\(error: (.*)\)/,o=/captureMessage|captureException/;function i(...e){let t=e.sort((e,t)=>e[0]-t[0]).map(e=>e[1]);return(e,n=0,o=0)=>{let i=[],s=e.split("\n");for(let e=n;e1024&&(n=n.slice(0,1024));let a=r.test(n)?n.replace(r,"$1"):n;if(!a.match(/\S*Error: /)){for(let e of t){let t=e(a);if(t){i.push(t);break}}if(i.length>=50+o)break}}return a(i.slice(o))}}function a(e){if(!e.length)return[];let t=Array.from(e);return/sentryWrapped/.test(s(t).function||"")&&t.pop(),t.reverse(),o.test(s(t).function||"")&&(t.pop(),o.test(s(t).function||"")&&t.pop()),t.slice(0,50).map(e=>({...e,filename:e.filename||s(t).filename,function:e.function||"?"}))}function s(e){return e[e.length-1]||{}}let l="";n.UNKNOWN_FUNCTION="?",n.createStackParser=i,n.getFramesFromEvent=function(e){let t=e.exception;if(t){let e=[];try{return t.values.forEach(t=>{t.stacktrace.frames&&e.push(...t.stacktrace.frames)}),e}catch{}}},n.getFunctionName=function(e){try{if(!e||"function"!=typeof e)return l;return e.name||l}catch{return l}},n.getVueInternalName=function(e){return"__v_isVNode"in e&&e.__v_isVNode?"[VueVNode]":"[VueViewModel]"},n.normalizeStackTracePath=function(e){let t=e?.startsWith("file://")?e.slice(7):e;return t?.match(/\/[A-Z]:/)&&(t=t.slice(1)),t},n.stackParserFromStackParserOptions=function(e){return Array.isArray(e)?i(...e):e},n.stripSentryFramesAndReverse=a},628345,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(421756),o=e.r(385177),i=e.r(5497),a={},s={};n.addHandler=function(e,t){a[e]=a[e]||[],a[e].push(t)},n.maybeInstrument=function(e,t){if(!s[e]){s[e]=!0;try{t()}catch(t){r.DEBUG_BUILD&&o.debug.error(`Error while instrumenting ${e}`,t)}}},n.resetInstrumentationHandlers=function(){Object.keys(a).forEach(e=>{a[e]=void 0})},n.triggerHandlers=function(e,t){let n=e&&a[e];if(n)for(let a of n)try{a(t)}catch(t){r.DEBUG_BUILD&&o.debug.error(`Error while triggering instrumentation handler. Type: ${e} Name: ${i.getFunctionName(a)} @@ -20,7 +20,7 @@ ${e.stack}`:"unknown"}}}}}let c=r.defineIntegration((e={})=>{let t=e.limit??10;r `;let T=s.parseProxyResponse(n);n.write(`${_}\r `);let{connect:d,buffered:E}=await T;if(e.emit("proxyConnect",d),this.emit("proxyConnect",d,e),200===d.statusCode){if(e.once("socket",c),t.secureEndpoint){l("Upgrading socket connection to TLS");let e=t.servername||t.host;return o.connect({...p(t,"host","path","port"),socket:n,servername:r.isIP(e)?void 0:e})}return n}n.destroy();let S=new r.Socket({writable:!1});return S.readable=!0,e.once("socket",e=>{l("Replaying proxy buffer for failed request"),e.push(E),e.push(null)}),S}}function c(e){e.resume()}function p(e,...t){let n,r={};for(n in e)t.includes(n)||(r[n]=e[n]);return r}u.__initStatic(),n.HttpsProxyAgent=u},136001,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(347299),o=e.r(743698),i=e.r(81111),a=e.r(727028),s=e.r(976285),l=e.r(358652);n.makeNodeTransport=function(e){let t;try{t=new URL(e.url)}catch(t){return s.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),s.createTransport(e,()=>Promise.resolve({}))}let n="https:"===t.protocol,u=function(e,t){let{no_proxy:n}=process.env;if(!n?.split(",").some(t=>e.host.endsWith(t)||e.hostname.endsWith(t)))return t}(t,e.proxy||(n?process.env.https_proxy:void 0)||process.env.http_proxy),c=n?o:r,p=void 0!==e.keepAlive&&e.keepAlive,_=u?new l.HttpsProxyAgent(u):new c.Agent({keepAlive:p,maxSockets:30,timeout:2e3}),T=function(e,t,n){let{hostname:r,pathname:o,port:l,protocol:u,search:c}=new URL(e.url);return function(p){return new Promise((_,T)=>{s.suppressTracing(()=>{var s;let d=(s=p.body,new i.Readable({read(){this.push(s),this.push(null)}})),E={...e.headers};p.body.length>32768&&(E["content-encoding"]="gzip",d=d.pipe(a.createGzip()));let S=r.startsWith("["),A=t.request({method:"POST",agent:n,headers:E,hostname:S?r.slice(1,-1):r,path:`${o}${c}`,port:l,protocol:u,ca:e.caCerts},e=>{e.on("data",()=>{}),e.on("end",()=>{}),e.setEncoding("utf8");let t=e.headers["retry-after"]??null,n=e.headers["x-sentry-rate-limits"]??null;_({statusCode:e.statusCode,headers:{"retry-after":t,"x-sentry-rate-limits":Array.isArray(n)?n[0]||null:n}})});A.on("error",T),d.pipe(A)})})}}(e,e.httpModule??c,_);return s.createTransport(e,T)}},148131,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.getSpotlightConfig=function(e){if(!1===e)return!1;if("string"==typeof e)return e;let t=r.envToBool(process.env.SENTRY_SPOTLIGHT,{strict:!0}),n=null===t&&process.env.SENTRY_SPOTLIGHT?process.env.SENTRY_SPOTLIGHT:void 0;return!0===e?n??!0:t??n}},941438,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(750227),o=e.r(976285);function i(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}n.createGetModuleFromFilename=function(e=process.argv[1]?o.dirname(process.argv[1]):process.cwd(),t="\\"===r.sep){let n=t?i(e):e;return e=>{if(!e)return;let o=t?i(e):e,{dir:a,base:s,ext:l}=r.posix.parse(o);(".js"===l||".mjs"===l||".cjs"===l)&&(s=s.slice(0,-1*l.length));let u=decodeURIComponent(s);a||(a=".");let c=a.lastIndexOf("/node_modules");if(c>-1)return`${a.slice(c+14).replace(/\//g,".")}:${u}`;if(a.startsWith(n)){let e=a.slice(n.length+1).replace(/\//g,".");return e?`${e}:${u}`:u}return u}}},315564,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(941438);n.defaultStackParser=r.createStackParser(r.nodeStackLineParser(o.createGetModuleFromFilename())),n.getSentryRelease=function(e){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(r.GLOBAL_OBJ.SENTRY_RELEASE?.id)return r.GLOBAL_OBJ.SENTRY_RELEASE.id;let t=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,n=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_BUILD_COMMIT||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,o=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return t||n||o||e}},367920,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(660526),o=e.r(357762),i=e.r(204780),a=e.r(976285),s=e.r(779607),l=e.r(37702),u=e.r(747535);class c extends a.ServerRuntimeClient{constructor(t){const n=!1===t.includeServerName?void 0:t.serverName||e.g.process.env.SENTRY_NAME||r.hostname(),o={...t,platform:"node",runtime:t.runtime||{name:"node",version:e.g.process.version},serverName:n};t.openTelemetryInstrumentations&&i.registerInstrumentations({instrumentations:t.openTelemetryInstrumentations}),a.applySdkMetadata(o,"node"),a.debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${l.isMainThread?"main":`worker-${l.threadId}`}.`),super(o),this.getOptions().enableLogs&&(this._logOnExitFlushListener=()=>{a._INTERNAL_flushLogsBuffer(this)},n&&this.on("beforeCaptureLog",e=>{e.attributes={...e.attributes,"server.address":n}}),process.on("beforeExit",this._logOnExitFlushListener))}get tracer(){if(this._tracer)return this._tracer;let e=a.SDK_VERSION,t=o.trace.getTracer("@sentry/node",e);return this._tracer=t,t}async flush(e){return await this.traceProvider?.forceFlush(),this.getOptions().sendClientReports&&this._flushOutcomes(),super.flush(e)}async close(e){this._clientReportInterval&&clearInterval(this._clientReportInterval),this._clientReportOnExitFlushListener&&process.off("beforeExit",this._clientReportOnExitFlushListener),this._logOnExitFlushListener&&process.off("beforeExit",this._logOnExitFlushListener);let t=await super.close(e);return this.traceProvider&&await this.traceProvider.shutdown(),t}startClientReportTracking(){let e=this.getOptions();e.sendClientReports&&(this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{u.DEBUG_BUILD&&a.debug.log("Flushing client reports based on interval."),this._flushOutcomes()},e.clientReportFlushInterval??6e4).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener))}_setupIntegrations(){a._INTERNAL_clearAiProviderSkips(),super._setupIntegrations()}_getTraceInfoFromScope(e){return e?s.getTraceContextForScope(this,e):[void 0,void 0]}}n.NodeClient=c},652203,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(285512),i=e.r(362562),a=e.r(234848);var s="u">typeof document?document.currentScript:null;n.initializeEsmLoader=function(){if(a.supportsEsmLoaderHooks()&&!r.GLOBAL_OBJ._sentryEsmLoaderHookRegistered){r.GLOBAL_OBJ._sentryEsmLoaderHookRegistered=!0;try{let{addHookMessagePort:t}=o.createAddHookMessageChannel();i.register("import-in-the-middle/hook.mjs","u"{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(779607),i=e.r(747535),a=e.r(475008),s=e.r(356044),l=e.r(179334),u=e.r(780200),c=e.r(179508),p=e.r(950051),_=e.r(642089),T=e.r(621353),d=e.r(438647),E=e.r(687123),S=e.r(254565),A=e.r(439390),g=e.r(136001),m=e.r(234848),h=e.r(148131),R=e.r(315564),f=e.r(367920),N=e.r(652203);function I(){return[r.inboundFiltersIntegration(),r.functionToStringIntegration(),r.linkedErrorsIntegration(),r.requestDataIntegration(),A.systemErrorIntegration(),r.conversationIdIntegration(),r.consoleIntegration(),u.httpIntegration(),_.nativeNodeFetchIntegration(),T.onUncaughtExceptionIntegration(),d.onUnhandledRejectionIntegration(),l.contextLinesIntegration(),c.localVariablesIntegration(),s.nodeContextIntegration(),a.childProcessIntegration(),E.processSessionIntegration(),p.modulesIntegration()]}function O(e={},t){var n,a;let s,l,u,c,p,_,T=(n=e,a=t,s=function(e){if(void 0!==e)return e;let t=R.getSentryRelease();if(void 0!==t)return t}(n.release),l=h.getSpotlightConfig(n.spotlight),u=function(e){if(void 0!==e)return e;let t=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!t)return;let n=parseFloat(t);return isFinite(n)?n:void 0}(n.tracesSampleRate),c={...n,dsn:n.dsn??process.env.SENTRY_DSN,environment:n.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:n.sendClientReports??!0,transport:n.transport??g.makeNodeTransport,stackParser:r.stackParserFromStackParserOptions(n.stackParser||R.defaultStackParser),release:s,tracesSampleRate:u,spotlight:l,debug:r.envToBool(n.debug??process.env.SENTRY_DEBUG)},p=n.integrations,_=n.defaultIntegrations??a(c),{...c,integrations:r.getIntegrationsToSetup({defaultIntegrations:_,integrations:p})});!0===T.debug&&(i.DEBUG_BUILD?r.debug.enable():r.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),!1!==T.registerEsmLoaderHooks&&N.initializeEsmLoader(),o.setOpenTelemetryContextAsyncContextStrategy(),r.getCurrentScope().update(T.initialScope),T.spotlight&&!T.integrations.some(({name:e})=>e===S.INTEGRATION_NAME)&&T.integrations.push(S.spotlightIntegration({sidecarUrl:"string"==typeof T.spotlight?T.spotlight:void 0})),r.applySdkMetadata(T,"node-core");let d=new f.NodeClient(T);return r.getCurrentScope().setClient(d),d.init(),r.debug.log(`SDK initialized from ${m.isCjs()?"CommonJS":"ESM"}`),d.startClientReportTracking(),function(){if(!1!==r.envToBool(process.env.SENTRY_USE_ENVIRONMENT)){let e=process.env.SENTRY_TRACE,t=process.env.SENTRY_BAGGAGE,n=r.propagationContextFromHeaders(e,t);r.getCurrentScope().setPropagationContext(n)}}(),o.enhanceDscWithOpenTelemetryRootSpanName(d),o.setupEventContextTrace(d),process.env.VERCEL&&process.on("SIGTERM",async()=>{await d.flush(200)}),d}n.getDefaultIntegrations=I,n.init=function(e={}){return O(e,I)},n.initWithoutDefaultIntegrations=function(e={}){return O(e,()=>[])},n.validateOpenTelemetrySetup=function(){if(!i.DEBUG_BUILD)return;let e=o.openTelemetrySetupCheck(),t=["SentryContextManager","SentryPropagator"];for(let n of(r.hasSpansEnabled()&&t.push("SentrySpanProcessor"),t))e.includes(n)||r.debug.error(`You have to set up the ${n}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);e.includes("SentrySampler")||r.debug.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}},211587,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(779607);n.setIsolationScope=function(e){let t=o.getScopesFromContext(r.context.active());t&&(t.isolationScope=e)}},709895,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(234848);n.createMissingInstrumentationContext=e=>({package:e,"javascript.is_cjs":r.isCjs()})},145844,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(709895),a=e.r(234848);n.ensureIsWrapped=function(e,t){let n=o.getClient()?.getOptions();!n?.disableInstrumentationWarnings&&!r.isWrapped(e)&&o.isEnabled()&&o.hasSpansEnabled(n)&&(o.consoleSandbox(()=>{a.isCjs()?console.warn(`[Sentry] ${t} is not instrumented. This is likely because you required/imported ${t} before calling \`Sentry.init()\`.`):console.warn(`[Sentry] ${t} is not instrumented. Please make sure to initialize Sentry in a separate file that you \`--import\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${t}/install/esm/.`)}),o.getGlobalScope().setContext("missing_instrumentation",i.createMissingInstrumentationContext(t)))}},498721,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(812057),o=e.r(925127),i=e.r(976285),a=e.r(860015),s=e.r(552237),{isPromise:l}=r.types,u="LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ3LjAgKGE1YTRlNzMpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyB0fWZyb20ibm9kZTppbnNwZWN0b3IiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIG4scGFyZW50UG9ydCBhcyBlfWZyb20ibm9kZTp3b3JrZXJfdGhyZWFkcyI7aW1wb3J0e3Bvc2l4IGFzIHIsc2VwIGFzIG99ZnJvbSJub2RlOnBhdGgiO2ltcG9ydCphcyBpIGZyb20ibm9kZTpodHRwIjtpbXBvcnQqYXMgcyBmcm9tIm5vZGU6aHR0cHMiO2ltcG9ydHtSZWFkYWJsZSBhcyBjfWZyb20ibm9kZTpzdHJlYW0iO2ltcG9ydHtjcmVhdGVHemlwIGFzIHV9ZnJvbSJub2RlOnpsaWIiO2ltcG9ydCphcyBhIGZyb20ibm9kZTpuZXQiO2ltcG9ydCphcyBmIGZyb20ibm9kZTp0bHMiO2NvbnN0IGg9InVuZGVmaW5lZCI9PXR5cGVvZiBfX1NFTlRSWV9ERUJVR19ffHxfX1NFTlRSWV9ERUJVR19fLHA9Z2xvYmFsVGhpcyxkPSIxMC40Ny4wIjtmdW5jdGlvbiBsKCl7cmV0dXJuIG0ocCkscH1mdW5jdGlvbiBtKHQpe2NvbnN0IG49dC5fX1NFTlRSWV9fPXQuX19TRU5UUllfX3x8e307cmV0dXJuIG4udmVyc2lvbj1uLnZlcnNpb258fGQsbltkXT1uW2RdfHx7fX1mdW5jdGlvbiBnKHQsbixlPXApe2NvbnN0IHI9ZS5fX1NFTlRSWV9fPWUuX19TRU5UUllfX3x8e30sbz1yW2RdPXJbZF18fHt9O3JldHVybiBvW3RdfHwob1t0XT1uKCkpfWNvbnN0IHk9e307ZnVuY3Rpb24gYih0KXtpZighKCJjb25zb2xlImluIHApKXJldHVybiB0KCk7Y29uc3Qgbj1wLmNvbnNvbGUsZT17fSxyPU9iamVjdC5rZXlzKHkpO3IuZm9yRWFjaCh0PT57Y29uc3Qgcj15W3RdO2VbdF09blt0XSxuW3RdPXJ9KTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3IuZm9yRWFjaCh0PT57blt0XT1lW3RdfSl9fWZ1bmN0aW9uIHYoKXtyZXR1cm4gdygpLmVuYWJsZWR9ZnVuY3Rpb24gXyh0LC4uLm4pe2gmJnYoKSYmYigoKT0+e3AuY29uc29sZVt0XShgU2VudHJ5IExvZ2dlciBbJHt0fV06YCwuLi5uKX0pfWZ1bmN0aW9uIHcoKXtyZXR1cm4gaD9nKCJsb2dnZXJTZXR0aW5ncyIsKCk9Pih7ZW5hYmxlZDohMX0pKTp7ZW5hYmxlZDohMX19Y29uc3QgUz17ZW5hYmxlOmZ1bmN0aW9uKCl7dygpLmVuYWJsZWQ9ITB9LGRpc2FibGU6ZnVuY3Rpb24oKXt3KCkuZW5hYmxlZD0hMX0saXNFbmFibGVkOnYsbG9nOmZ1bmN0aW9uKC4uLnQpe18oImxvZyIsLi4udCl9LHdhcm46ZnVuY3Rpb24oLi4udCl7Xygid2FybiIsLi4udCl9LGVycm9yOmZ1bmN0aW9uKC4uLnQpe18oImVycm9yIiwuLi50KX19LCQ9L2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vO2Z1bmN0aW9uIEUodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV18fHt9fWNvbnN0IHg9Ijxhbm9ueW1vdXM+Ijtjb25zdCBOPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gaih0LG4pe3JldHVybiBOLmNhbGwodCk9PT1gW29iamVjdCAke259XWB9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gaih0LCJTdHJpbmciKX1mdW5jdGlvbiBBKHQpe3JldHVybiBqKHQsIk9iamVjdCIpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEJvb2xlYW4odD8udGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbil9ZnVuY3Rpb24gayh0LG4pe3RyeXtyZXR1cm4gdCBpbnN0YW5jZW9mIG59Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEk9cDtmdW5jdGlvbiBPKHQsbil7Y29uc3QgZT10LHI9W107aWYoIWU/LnRhZ05hbWUpcmV0dXJuIiI7aWYoSS5IVE1MRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZlLmRhdGFzZXQpe2lmKGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQ7aWYoZS5kYXRhc2V0LnNlbnRyeUVsZW1lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlFbGVtZW50fXIucHVzaChlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSk7Y29uc3Qgbz1uPy5sZW5ndGg/bi5maWx0ZXIodD0+ZS5nZXRBdHRyaWJ1dGUodCkpLm1hcCh0PT5bdCxlLmdldEF0dHJpYnV0ZSh0KV0pOm51bGw7aWYobz8ubGVuZ3RoKW8uZm9yRWFjaCh0PT57ci5wdXNoKGBbJHt0WzBdfT0iJHt0WzFdfSJdYCl9KTtlbHNle2UuaWQmJnIucHVzaChgIyR7ZS5pZH1gKTtjb25zdCB0PWUuY2xhc3NOYW1lO2lmKHQmJkModCkpe2NvbnN0IG49dC5zcGxpdCgvXHMrLyk7Zm9yKGNvbnN0IHQgb2YgbilyLnB1c2goYC4ke3R9YCl9fWZvcihjb25zdCB0IG9mWyJhcmlhLWxhYmVsIiwidHlwZSIsIm5hbWUiLCJ0aXRsZSIsImFsdCJdKXtjb25zdCBuPWUuZ2V0QXR0cmlidXRlKHQpO24mJnIucHVzaChgWyR7dH09IiR7bn0iXWApfXJldHVybiByLmpvaW4oIiIpfWZ1bmN0aW9uIFIodCl7aWYoZnVuY3Rpb24odCl7c3dpdGNoKE4uY2FsbCh0KSl7Y2FzZSJbb2JqZWN0IEVycm9yXSI6Y2FzZSJbb2JqZWN0IEV4Y2VwdGlvbl0iOmNhc2UiW29iamVjdCBET01FeGNlcHRpb25dIjpjYXNlIltvYmplY3QgV2ViQXNzZW1ibHkuRXhjZXB0aW9uXSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gayh0LEVycm9yKX19KHQpKXJldHVybnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrLC4uLkQodCl9O2lmKG49dCwidW5kZWZpbmVkIiE9dHlwZW9mIEV2ZW50JiZrKG4sRXZlbnQpKXtjb25zdCBuPXt0eXBlOnQudHlwZSx0YXJnZXQ6UCh0LnRhcmdldCksY3VycmVudFRhcmdldDpQKHQuY3VycmVudFRhcmdldCksLi4uRCh0KX07cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBDdXN0b21FdmVudCYmayh0LEN1c3RvbUV2ZW50KSYmKG4uZGV0YWlsPXQuZGV0YWlsKSxufXJldHVybiB0O3ZhciBufWZ1bmN0aW9uIFAodCl7dHJ5e3JldHVybiBuPXQsInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50JiZrKG4sRWxlbWVudCk/ZnVuY3Rpb24odCxuPXt9KXtpZighdClyZXR1cm4iPHVua25vd24+Ijt0cnl7bGV0IGU9dDtjb25zdCByPTUsbz1bXTtsZXQgaT0wLHM9MDtjb25zdCBjPSIgPiAiLHU9Yy5sZW5ndGg7bGV0IGE7Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP246bi5rZXlBdHRycyxoPSFBcnJheS5pc0FycmF5KG4pJiZuLm1heFN0cmluZ0xlbmd0aHx8ODA7Zm9yKDtlJiZpKys8ciYmKGE9TyhlLGYpLCEoImh0bWwiPT09YXx8aT4xJiZzK28ubGVuZ3RoKnUrYS5sZW5ndGg+PWgpKTspby5wdXNoKGEpLHMrPWEubGVuZ3RoLGU9ZS5wYXJlbnROb2RlO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGMpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifX0odCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifXZhciBufWZ1bmN0aW9uIEQodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dD9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkpOnt9fWxldCBVLEw7ZnVuY3Rpb24gTSh0KXtpZih2b2lkIDAhPT1VKXJldHVybiBVP1UodCk6dCgpO2NvbnN0IG49U3ltYm9sLmZvcigiX19TRU5UUllfU0FGRV9SQU5ET01fSURfV1JBUFBFUl9fIiksZT1wO3JldHVybiBuIGluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW25dPyhVPWVbbl0sVSh0KSk6KFU9bnVsbCx0KCkpfWZ1bmN0aW9uIEIoKXtyZXR1cm4gTSgoKT0+TWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gVygpe3JldHVybiBNKCgpPT5EYXRlLm5vdygpKX1mdW5jdGlvbiB6KHQsbj0wKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fDA9PT1ufHx0Lmxlbmd0aDw9bj90OmAke3Quc2xpY2UoMCxuKX0uLi5gfWZ1bmN0aW9uIEYodD1mdW5jdGlvbigpe2NvbnN0IHQ9cDtyZXR1cm4gdC5jcnlwdG98fHQubXNDcnlwdG99KCkpe3RyeXtpZih0Py5yYW5kb21VVUlEKXJldHVybiBNKCgpPT50LnJhbmRvbVVVSUQoKSkucmVwbGFjZSgvLS9nLCIiKX1jYXRjaHt9cmV0dXJuIEx8fChMPVsxZTddKzFlMys0ZTMrOGUzKzFlMTEpLEwucmVwbGFjZSgvWzAxOF0vZyx0PT4odF4oMTYqQigpJjE1KT4+dC80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gVygpLzFlM31sZXQgSDtmdW5jdGlvbiBKKCl7cmV0dXJuKEg/PyhIPWZ1bmN0aW9uKCl7Y29uc3R7cGVyZm9ybWFuY2U6dH09cDtpZighdD8ubm93fHwhdC50aW1lT3JpZ2luKXJldHVybiBHO2NvbnN0IG49dC50aW1lT3JpZ2luO3JldHVybigpPT4obitNKCgpPT50Lm5vdygpKSkvMWUzfSgpKSkoKX1mdW5jdGlvbiBZKHQpe2NvbnN0IG49SigpLGU9e3NpZDpGKCksaW5pdDohMCx0aW1lc3RhbXA6bixzdGFydGVkOm4sZHVyYXRpb246MCxzdGF0dXM6Im9rIixlcnJvcnM6MCxpZ25vcmVEdXJhdGlvbjohMSx0b0pTT046KCk9PmZ1bmN0aW9uKHQpe3JldHVybntzaWQ6YCR7dC5zaWR9YCxpbml0OnQuaW5pdCxzdGFydGVkOm5ldyBEYXRlKDFlMyp0LnN0YXJ0ZWQpLnRvSVNPU3RyaW5nKCksdGltZXN0YW1wOm5ldyBEYXRlKDFlMyp0LnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxzdGF0dXM6dC5zdGF0dXMsZXJyb3JzOnQuZXJyb3JzLGRpZDoibnVtYmVyIj09dHlwZW9mIHQuZGlkfHwic3RyaW5nIj09dHlwZW9mIHQuZGlkP2Ake3QuZGlkfWA6dm9pZCAwLGR1cmF0aW9uOnQuZHVyYXRpb24sYWJub3JtYWxfbWVjaGFuaXNtOnQuYWJub3JtYWxfbWVjaGFuaXNtLGF0dHJzOntyZWxlYXNlOnQucmVsZWFzZSxlbnZpcm9ubWVudDp0LmVudmlyb25tZW50LGlwX2FkZHJlc3M6dC5pcEFkZHJlc3MsdXNlcl9hZ2VudDp0LnVzZXJBZ2VudH19fShlKX07cmV0dXJuIHQmJlYoZSx0KSxlfWZ1bmN0aW9uIFYodCxuPXt9KXtpZihuLnVzZXImJighdC5pcEFkZHJlc3MmJm4udXNlci5pcF9hZGRyZXNzJiYodC5pcEFkZHJlc3M9bi51c2VyLmlwX2FkZHJlc3MpLHQuZGlkfHxuLmRpZHx8KHQuZGlkPW4udXNlci5pZHx8bi51c2VyLmVtYWlsfHxuLnVzZXIudXNlcm5hbWUpKSx0LnRpbWVzdGFtcD1uLnRpbWVzdGFtcHx8SigpLG4uYWJub3JtYWxfbWVjaGFuaXNtJiYodC5hYm5vcm1hbF9tZWNoYW5pc209bi5hYm5vcm1hbF9tZWNoYW5pc20pLG4uaWdub3JlRHVyYXRpb24mJih0Lmlnbm9yZUR1cmF0aW9uPW4uaWdub3JlRHVyYXRpb24pLG4uc2lkJiYodC5zaWQ9MzI9PT1uLnNpZC5sZW5ndGg/bi5zaWQ6RigpKSx2b2lkIDAhPT1uLmluaXQmJih0LmluaXQ9bi5pbml0KSwhdC5kaWQmJm4uZGlkJiYodC5kaWQ9YCR7bi5kaWR9YCksIm51bWJlciI9PXR5cGVvZiBuLnN0YXJ0ZWQmJih0LnN0YXJ0ZWQ9bi5zdGFydGVkKSx0Lmlnbm9yZUR1cmF0aW9uKXQuZHVyYXRpb249dm9pZCAwO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBuLmR1cmF0aW9uKXQuZHVyYXRpb249bi5kdXJhdGlvbjtlbHNle2NvbnN0IG49dC50aW1lc3RhbXAtdC5zdGFydGVkO3QuZHVyYXRpb249bj49MD9uOjB9bi5yZWxlYXNlJiYodC5yZWxlYXNlPW4ucmVsZWFzZSksbi5lbnZpcm9ubWVudCYmKHQuZW52aXJvbm1lbnQ9bi5lbnZpcm9ubWVudCksIXQuaXBBZGRyZXNzJiZuLmlwQWRkcmVzcyYmKHQuaXBBZGRyZXNzPW4uaXBBZGRyZXNzKSwhdC51c2VyQWdlbnQmJm4udXNlckFnZW50JiYodC51c2VyQWdlbnQ9bi51c2VyQWdlbnQpLCJudW1iZXIiPT10eXBlb2Ygbi5lcnJvcnMmJih0LmVycm9ycz1uLmVycm9ycyksbi5zdGF0dXMmJih0LnN0YXR1cz1uLnN0YXR1cyl9ZnVuY3Rpb24gSyh0LG4sZT0yKXtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHxlPD0wKXJldHVybiBuO2lmKHQmJjA9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IHQgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSYmKHJbdF09SyhyW3RdLG5bdF0sZS0xKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gWigpe3JldHVybiBGKCl9ZnVuY3Rpb24gcSgpe3JldHVybiBGKCkuc3Vic3RyaW5nKDE2KX1jb25zdCBRPSJfc2VudHJ5U3BhbiI7ZnVuY3Rpb24gWCh0LG4pe24/ZnVuY3Rpb24odCxuLGUpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWNhdGNoe2gmJlMubG9nKGBGYWlsZWQgdG8gYWRkIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5ICIke259IiB0byBvYmplY3RgLHQpfX0odCxRLG4pOmRlbGV0ZSB0W1FdfWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0W1FdfWNsYXNzIG50e2NvbnN0cnVjdG9yKCl7dGhpcy50PSExLHRoaXMubz1bXSx0aGlzLmk9W10sdGhpcy51PVtdLHRoaXMuaD1bXSx0aGlzLnA9e30sdGhpcy5sPXt9LHRoaXMubT17fSx0aGlzLnY9e30sdGhpcy5fPXt9LHRoaXMuUz17fSx0aGlzLk49e3RyYWNlSWQ6WigpLHNhbXBsZVJhbmQ6QigpfX1jbG9uZSgpe2NvbnN0IHQ9bmV3IG50O3JldHVybiB0LnU9Wy4uLnRoaXMudV0sdC5sPXsuLi50aGlzLmx9LHQubT17Li4udGhpcy5tfSx0LnY9ey4uLnRoaXMudn0sdC5fPXsuLi50aGlzLl99LHRoaXMuXy5mbGFncyYmKHQuXy5mbGFncz17dmFsdWVzOlsuLi50aGlzLl8uZmxhZ3MudmFsdWVzXX0pLHQucD10aGlzLnAsdC5qPXRoaXMuaix0LkM9dGhpcy5DLHQuQT10aGlzLkEsdC5UPXRoaXMuVCx0Lmk9Wy4uLnRoaXMuaV0sdC5oPVsuLi50aGlzLmhdLHQuUz17Li4udGhpcy5TfSx0Lk49ey4uLnRoaXMuTn0sdC5rPXRoaXMuayx0Lkk9dGhpcy5JLHQuTz10aGlzLk8sWCh0LHR0KHRoaXMpKSx0fXNldENsaWVudCh0KXt0aGlzLms9dH1zZXRMYXN0RXZlbnRJZCh0KXt0aGlzLkk9dH1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5rfWxhc3RFdmVudElkKCl7cmV0dXJuIHRoaXMuSX1hZGRTY29wZUxpc3RlbmVyKHQpe3RoaXMuby5wdXNoKHQpfWFkZEV2ZW50UHJvY2Vzc29yKHQpe3JldHVybiB0aGlzLmkucHVzaCh0KSx0aGlzfXNldFVzZXIodCl7cmV0dXJuIHRoaXMucD10fHx7ZW1haWw6dm9pZCAwLGlkOnZvaWQgMCxpcF9hZGRyZXNzOnZvaWQgMCx1c2VybmFtZTp2b2lkIDB9LHRoaXMuQyYmVih0aGlzLkMse3VzZXI6dH0pLHRoaXMuUigpLHRoaXN9Z2V0VXNlcigpe3JldHVybiB0aGlzLnB9c2V0Q29udmVyc2F0aW9uSWQodCl7cmV0dXJuIHRoaXMuTz10fHx2b2lkIDAsdGhpcy5SKCksdGhpc31zZXRUYWdzKHQpe3JldHVybiB0aGlzLmw9ey4uLnRoaXMubCwuLi50fSx0aGlzLlIoKSx0aGlzfXNldFRhZyh0LG4pe3JldHVybiB0aGlzLnNldFRhZ3Moe1t0XTpufSl9c2V0QXR0cmlidXRlcyh0KXtyZXR1cm4gdGhpcy5tPXsuLi50aGlzLm0sLi4udH0sdGhpcy5SKCksdGhpc31zZXRBdHRyaWJ1dGUodCxuKXtyZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVzKHtbdF06bn0pfXJlbW92ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gdCBpbiB0aGlzLm0mJihkZWxldGUgdGhpcy5tW3RdLHRoaXMuUigpKSx0aGlzfXNldEV4dHJhcyh0KXtyZXR1cm4gdGhpcy52PXsuLi50aGlzLnYsLi4udH0sdGhpcy5SKCksdGhpc31zZXRFeHRyYSh0LG4pe3JldHVybiB0aGlzLnY9ey4uLnRoaXMudixbdF06bn0sdGhpcy5SKCksdGhpc31zZXRGaW5nZXJwcmludCh0KXtyZXR1cm4gdGhpcy5UPXQsdGhpcy5SKCksdGhpc31zZXRMZXZlbCh0KXtyZXR1cm4gdGhpcy5qPXQsdGhpcy5SKCksdGhpc31zZXRUcmFuc2FjdGlvbk5hbWUodCl7cmV0dXJuIHRoaXMuQT10LHRoaXMuUigpLHRoaXN9c2V0Q29udGV4dCh0LG4pe3JldHVybiBudWxsPT09bj9kZWxldGUgdGhpcy5fW3RdOnRoaXMuX1t0XT1uLHRoaXMuUigpLHRoaXN9c2V0U2Vzc2lvbih0KXtyZXR1cm4gdD90aGlzLkM9dDpkZWxldGUgdGhpcy5DLHRoaXMuUigpLHRoaXN9Z2V0U2Vzc2lvbigpe3JldHVybiB0aGlzLkN9dXBkYXRlKHQpe2lmKCF0KXJldHVybiB0aGlzO2NvbnN0IG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dCh0aGlzKTp0LGU9biBpbnN0YW5jZW9mIG50P24uZ2V0U2NvcGVEYXRhKCk6QShuKT90OnZvaWQgMCx7dGFnczpyLGF0dHJpYnV0ZXM6byxleHRyYTppLHVzZXI6cyxjb250ZXh0czpjLGxldmVsOnUsZmluZ2VycHJpbnQ6YT1bXSxwcm9wYWdhdGlvbkNvbnRleHQ6Zixjb252ZXJzYXRpb25JZDpofT1lfHx7fTtyZXR1cm4gdGhpcy5sPXsuLi50aGlzLmwsLi4ucn0sdGhpcy5tPXsuLi50aGlzLm0sLi4ub30sdGhpcy52PXsuLi50aGlzLnYsLi4uaX0sdGhpcy5fPXsuLi50aGlzLl8sLi4uY30scyYmT2JqZWN0LmtleXMocykubGVuZ3RoJiYodGhpcy5wPXMpLHUmJih0aGlzLmo9dSksYS5sZW5ndGgmJih0aGlzLlQ9YSksZiYmKHRoaXMuTj1mKSxoJiYodGhpcy5PPWgpLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy51PVtdLHRoaXMubD17fSx0aGlzLm09e30sdGhpcy52PXt9LHRoaXMucD17fSx0aGlzLl89e30sdGhpcy5qPXZvaWQgMCx0aGlzLkE9dm9pZCAwLHRoaXMuVD12b2lkIDAsdGhpcy5DPXZvaWQgMCx0aGlzLk89dm9pZCAwLFgodGhpcyx2b2lkIDApLHRoaXMuaD1bXSx0aGlzLnNldFByb3BhZ2F0aW9uQ29udGV4dCh7dHJhY2VJZDpaKCksc2FtcGxlUmFuZDpCKCl9KSx0aGlzLlIoKSx0aGlzfWFkZEJyZWFkY3J1bWIodCxuKXtjb25zdCBlPSJudW1iZXIiPT10eXBlb2Ygbj9uOjEwMDtpZihlPD0wKXJldHVybiB0aGlzO2NvbnN0IHI9e3RpbWVzdGFtcDpHKCksLi4udCxtZXNzYWdlOnQubWVzc2FnZT96KHQubWVzc2FnZSwyMDQ4KTp0Lm1lc3NhZ2V9O3JldHVybiB0aGlzLnUucHVzaChyKSx0aGlzLnUubGVuZ3RoPmUmJih0aGlzLnU9dGhpcy51LnNsaWNlKC1lKSx0aGlzLms/LnJlY29yZERyb3BwZWRFdmVudCgiYnVmZmVyX292ZXJmbG93IiwibG9nX2l0ZW0iKSksdGhpcy5SKCksdGhpc31nZXRMYXN0QnJlYWRjcnVtYigpe3JldHVybiB0aGlzLnVbdGhpcy51Lmxlbmd0aC0xXX1jbGVhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMudT1bXSx0aGlzLlIoKSx0aGlzfWFkZEF0dGFjaG1lbnQodCl7cmV0dXJuIHRoaXMuaC5wdXNoKHQpLHRoaXN9Y2xlYXJBdHRhY2htZW50cygpe3JldHVybiB0aGlzLmg9W10sdGhpc31nZXRTY29wZURhdGEoKXtyZXR1cm57YnJlYWRjcnVtYnM6dGhpcy51LGF0dGFjaG1lbnRzOnRoaXMuaCxjb250ZXh0czp0aGlzLl8sdGFnczp0aGlzLmwsYXR0cmlidXRlczp0aGlzLm0sZXh0cmE6dGhpcy52LHVzZXI6dGhpcy5wLGxldmVsOnRoaXMuaixmaW5nZXJwcmludDp0aGlzLlR8fFtdLGV2ZW50UHJvY2Vzc29yczp0aGlzLmkscHJvcGFnYXRpb25Db250ZXh0OnRoaXMuTixzZGtQcm9jZXNzaW5nTWV0YWRhdGE6dGhpcy5TLHRyYW5zYWN0aW9uTmFtZTp0aGlzLkEsc3Bhbjp0dCh0aGlzKSxjb252ZXJzYXRpb25JZDp0aGlzLk99fXNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh0KXtyZXR1cm4gdGhpcy5TPUsodGhpcy5TLHQsMiksdGhpc31zZXRQcm9wYWdhdGlvbkNvbnRleHQodCl7cmV0dXJuIHRoaXMuTj10LHRoaXN9Z2V0UHJvcGFnYXRpb25Db250ZXh0KCl7cmV0dXJuIHRoaXMuTn1jYXB0dXJlRXhjZXB0aW9uKHQsbil7Y29uc3QgZT1uPy5ldmVudF9pZHx8RigpO2lmKCF0aGlzLmspcmV0dXJuIGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV4Y2VwdGlvbiEiKSxlO2NvbnN0IHI9bmV3IEVycm9yKCJTZW50cnkgc3ludGhldGljRXhjZXB0aW9uIik7cmV0dXJuIHRoaXMuay5jYXB0dXJlRXhjZXB0aW9uKHQse29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOnIsLi4ubixldmVudF9pZDplfSx0aGlzKSxlfWNhcHR1cmVNZXNzYWdlKHQsbixlKXtjb25zdCByPWU/LmV2ZW50X2lkfHxGKCk7aWYoIXRoaXMuaylyZXR1cm4gaCYmUy53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgbWVzc2FnZSEiKSxyO2NvbnN0IG89ZT8uc3ludGhldGljRXhjZXB0aW9uPz9uZXcgRXJyb3IodCk7cmV0dXJuIHRoaXMuay5jYXB0dXJlTWVzc2FnZSh0LG4se29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOm8sLi4uZSxldmVudF9pZDpyfSx0aGlzKSxyfWNhcHR1cmVFdmVudCh0LG4pe2NvbnN0IGU9dC5ldmVudF9pZHx8bj8uZXZlbnRfaWR8fEYoKTtyZXR1cm4gdGhpcy5rPyh0aGlzLmsuY2FwdHVyZUV2ZW50KHQsey4uLm4sZXZlbnRfaWQ6ZX0sdGhpcyksZSk6KGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50ISIpLGUpfVIoKXt0aGlzLnR8fCh0aGlzLnQ9ITAsdGhpcy5vLmZvckVhY2godD0+e3QodGhpcyl9KSx0aGlzLnQ9ITEpfX1jb25zdCBldD10PT50IGluc3RhbmNlb2YgUHJvbWlzZSYmIXRbcnRdLHJ0PVN5bWJvbCgiY2hhaW5lZCBQcm9taXNlTGlrZSIpLG90PSh0LG4pPT57bGV0IGU9ITE7Zm9yKGNvbnN0IHIgaW4gdCl7aWYociBpbiBuKWNvbnRpbnVlO2U9ITA7Y29uc3Qgbz10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBvP09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHIse3ZhbHVlOiguLi5uKT0+by5hcHBseSh0LG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vfXJldHVybiBlJiZPYmplY3QuYXNzaWduKG4se1tydF06ITB9KSxufTtjbGFzcyBpdHtjb25zdHJ1Y3Rvcih0LG4pe2xldCBlLHI7ZT10fHxuZXcgbnQscj1ufHxuZXcgbnQsdGhpcy5QPVt7c2NvcGU6ZX1dLHRoaXMuRD1yfXdpdGhTY29wZSh0KXtjb25zdCBuPXRoaXMuVSgpO2xldCBlO3RyeXtlPXQobil9Y2F0Y2godCl7dGhyb3cgdGhpcy5MKCksdH1yZXR1cm4gVChlKT8oKHQsbixlKT0+e2NvbnN0IHI9dC50aGVuKHQ9PihuKHQpLHQpLHQ9Pnt0aHJvdyBlKHQpLHR9KTtyZXR1cm4gZXQocikmJmV0KHQpP3I6b3QodCxyKX0pKGUsKCk9PnRoaXMuTCgpLCgpPT50aGlzLkwoKSk6KHRoaXMuTCgpLGUpfWdldENsaWVudCgpe3JldHVybiB0aGlzLmdldFN0YWNrVG9wKCkuY2xpZW50fWdldFNjb3BlKCl7cmV0dXJuIHRoaXMuZ2V0U3RhY2tUb3AoKS5zY29wZX1nZXRJc29sYXRpb25TY29wZSgpe3JldHVybiB0aGlzLkR9Z2V0U3RhY2tUb3AoKXtyZXR1cm4gdGhpcy5QW3RoaXMuUC5sZW5ndGgtMV19VSgpe2NvbnN0IHQ9dGhpcy5nZXRTY29wZSgpLmNsb25lKCk7cmV0dXJuIHRoaXMuUC5wdXNoKHtjbGllbnQ6dGhpcy5nZXRDbGllbnQoKSxzY29wZTp0fSksdH1MKCl7cmV0dXJuISh0aGlzLlAubGVuZ3RoPD0xKSYmISF0aGlzLlAucG9wKCl9fWZ1bmN0aW9uIHN0KCl7Y29uc3QgdD1tKGwoKSk7cmV0dXJuIHQuc3RhY2s9dC5zdGFja3x8bmV3IGl0KGcoImRlZmF1bHRDdXJyZW50U2NvcGUiLCgpPT5uZXcgbnQpLGcoImRlZmF1bHRJc29sYXRpb25TY29wZSIsKCk9Pm5ldyBudCkpfWZ1bmN0aW9uIGN0KHQpe3JldHVybiBzdCgpLndpdGhTY29wZSh0KX1mdW5jdGlvbiB1dCh0LG4pe2NvbnN0IGU9c3QoKTtyZXR1cm4gZS53aXRoU2NvcGUoKCk9PihlLmdldFN0YWNrVG9wKCkuc2NvcGU9dCxuKHQpKSl9ZnVuY3Rpb24gYXQodCl7cmV0dXJuIHN0KCkud2l0aFNjb3BlKCgpPT50KHN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKSkpfWZ1bmN0aW9uIGZ0KHQpe2NvbnN0IG49bSh0KTtyZXR1cm4gbi5hY3M/bi5hY3M6e3dpdGhJc29sYXRpb25TY29wZTphdCx3aXRoU2NvcGU6Y3Qsd2l0aFNldFNjb3BlOnV0LHdpdGhTZXRJc29sYXRpb25TY29wZToodCxuKT0+YXQobiksZ2V0Q3VycmVudFNjb3BlOigpPT5zdCgpLmdldFNjb3BlKCksZ2V0SXNvbGF0aW9uU2NvcGU6KCk9PnN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKX19ZnVuY3Rpb24gaHQoKXtyZXR1cm4gZnQobCgpKS5nZXRDdXJyZW50U2NvcGUoKS5nZXRDbGllbnQoKX1mdW5jdGlvbiBwdCh0KXtpZih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJiJkZXJlZiJpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5kZXJlZil0cnl7cmV0dXJuIHQuZGVyZWYoKX1jYXRjaHtyZXR1cm59cmV0dXJuIHR9fWZ1bmN0aW9uIGR0KHQpe2NvbnN0IG49dDtyZXR1cm57c2NvcGU6bi5fc2VudHJ5U2NvcGUsaXNvbGF0aW9uU2NvcGU6cHQobi5fc2VudHJ5SXNvbGF0aW9uU2NvcGUpfX1jb25zdCBsdD0ic2VudHJ5LSI7ZnVuY3Rpb24gbXQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdHx8IUModCkmJiFBcnJheS5pc0FycmF5KHQpKXJldHVybjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGU9Z3Qobik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtuLGVdKT0+e3Rbbl09ZX0pLHR9LHt9KTtyZXR1cm4gZ3QodCl9KHQpO2lmKCFuKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgodCxbbixlXSk9PntpZihuLnN0YXJ0c1dpdGgobHQpKXt0W24uc2xpY2UoNyldPWV9cmV0dXJuIHR9LHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjA/ZTp2b2lkIDB9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAodD0+e2NvbnN0IG49dC5pbmRleE9mKCI9Iik7aWYoLTE9PT1uKXJldHVybltdO3JldHVyblt0LnNsaWNlKDAsbiksdC5zbGljZShuKzEpXS5tYXAodD0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQudHJpbSgpKX1jYXRjaHtyZXR1cm59fSl9KS5yZWR1Y2UoKHQsW24sZV0pPT4obiYmZSYmKHRbbl09ZSksdCkse30pfWNvbnN0IHl0PS9ebyhcZCspXC4vO2Z1bmN0aW9uIGJ0KHQsbj0hMSl7Y29uc3R7aG9zdDplLHBhdGg6cixwYXNzOm8scG9ydDppLHByb2plY3RJZDpzLHByb3RvY29sOmMscHVibGljS2V5OnV9PXQ7cmV0dXJuYCR7Y306Ly8ke3V9JHtuJiZvP2A6JHtvfWA6IiJ9QCR7ZX0ke2k/YDoke2l9YDoiIn0vJHtyP2Ake3J9L2A6cn0ke3N9YH1mdW5jdGlvbiB2dCh0KXtjb25zdCBuPXQuZ2V0T3B0aW9ucygpLHtob3N0OmV9PXQuZ2V0RHNuKCl8fHt9O2xldCByO3JldHVybiBuLm9yZ0lkP3I9U3RyaW5nKG4ub3JnSWQpOmUmJihyPWZ1bmN0aW9uKHQpe2NvbnN0IG49dC5tYXRjaCh5dCk7cmV0dXJuIG4/LlsxXX0oZSkpLHJ9ZnVuY3Rpb24gX3QodCl7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplLGlzUmVtb3RlOnJ9PXQuc3BhbkNvbnRleHQoKSxvPXI/bjpFdCh0KS5wYXJlbnRfc3Bhbl9pZCxpPWR0KHQpLnNjb3BlO3JldHVybntwYXJlbnRfc3Bhbl9pZDpvLHNwYW5faWQ6cj9pPy5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKS5wcm9wYWdhdGlvblNwYW5JZHx8cSgpOm4sdHJhY2VfaWQ6ZX19ZnVuY3Rpb24gd3QodCl7cmV0dXJuIHQmJnQubGVuZ3RoPjA/dC5tYXAoKHtjb250ZXh0OntzcGFuSWQ6dCx0cmFjZUlkOm4sdHJhY2VGbGFnczplLC4uLnJ9LGF0dHJpYnV0ZXM6b30pPT4oe3NwYW5faWQ6dCx0cmFjZV9pZDpuLHNhbXBsZWQ6MT09PWUsYXR0cmlidXRlczpvLC4uLnJ9KSk6dm9pZCAwfWZ1bmN0aW9uIFN0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD8kdCh0KTpBcnJheS5pc0FycmF5KHQpP3RbMF0rdFsxXS8xZTk6dCBpbnN0YW5jZW9mIERhdGU/JHQodC5nZXRUaW1lKCkpOkooKX1mdW5jdGlvbiAkdCh0KXtyZXR1cm4gdD45OTk5OTk5OTk5P3QvMWUzOnR9ZnVuY3Rpb24gRXQodCl7aWYoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0U3BhbkpTT059KHQpKXJldHVybiB0LmdldFNwYW5KU09OKCk7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplfT10LnNwYW5Db250ZXh0KCk7aWYoZnVuY3Rpb24odCl7Y29uc3Qgbj10O3JldHVybiEhKG4uYXR0cmlidXRlcyYmbi5zdGFydFRpbWUmJm4ubmFtZSYmbi5lbmRUaW1lJiZuLnN0YXR1cyl9KHQpKXtjb25zdHthdHRyaWJ1dGVzOnIsc3RhcnRUaW1lOm8sbmFtZTppLGVuZFRpbWU6cyxzdGF0dXM6YyxsaW5rczp1fT10O3JldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxkYXRhOnIsZGVzY3JpcHRpb246aSxwYXJlbnRfc3Bhbl9pZDoicGFyZW50U3BhbklkImluIHQ/dC5wYXJlbnRTcGFuSWQ6InBhcmVudFNwYW5Db250ZXh0ImluIHQ/dC5wYXJlbnRTcGFuQ29udGV4dD8uc3BhbklkOnZvaWQgMCxzdGFydF90aW1lc3RhbXA6U3QobyksdGltZXN0YW1wOlN0KHMpfHx2b2lkIDAsc3RhdHVzOnh0KGMpLG9wOnJbInNlbnRyeS5vcCJdLG9yaWdpbjpyWyJzZW50cnkub3JpZ2luIl0sbGlua3M6d3QodSl9fXJldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxzdGFydF90aW1lc3RhbXA6MCxkYXRhOnt9fX1mdW5jdGlvbiB4dCh0KXtpZih0JiYwIT09dC5jb2RlKXJldHVybiAxPT09dC5jb2RlPyJvayI6dC5tZXNzYWdlfHwiaW50ZXJuYWxfZXJyb3IifWZ1bmN0aW9uIE50KHQpe3JldHVybiB0Ll9zZW50cnlSb290U3Bhbnx8dH1mdW5jdGlvbiBqdCh0KXtjb25zdCBuPWh0KCk7aWYoIW4pcmV0dXJue307Y29uc3QgZT1OdCh0KSxyPUV0KGUpLG89ci5kYXRhLGk9ZS5zcGFuQ29udGV4dCgpLnRyYWNlU3RhdGUscz1pPy5nZXQoInNlbnRyeS5zYW1wbGVfcmF0ZSIpPz9vWyJzZW50cnkuc2FtcGxlX3JhdGUiXT8/b1sic2VudHJ5LnByZXZpb3VzX3RyYWNlX3NhbXBsZV9yYXRlIl07ZnVuY3Rpb24gYyh0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHMmJiJzdHJpbmciIT10eXBlb2Ygc3x8KHQuc2FtcGxlX3JhdGU9YCR7c31gKSx0fWNvbnN0IHU9ZS5fZnJvemVuRHNjO2lmKHUpcmV0dXJuIGModSk7Y29uc3QgYT1pPy5nZXQoInNlbnRyeS5kc2MiKSxmPWEmJm10KGEpO2lmKGYpcmV0dXJuIGMoZik7Y29uc3QgaD1mdW5jdGlvbih0LG4pe2NvbnN0IGU9bi5nZXRPcHRpb25zKCkse3B1YmxpY0tleTpyfT1uLmdldERzbigpfHx7fSxvPXtlbnZpcm9ubWVudDplLmVudmlyb25tZW50fHwicHJvZHVjdGlvbiIscmVsZWFzZTplLnJlbGVhc2UscHVibGljX2tleTpyLHRyYWNlX2lkOnQsb3JnX2lkOnZ0KG4pfTtyZXR1cm4gbi5lbWl0KCJjcmVhdGVEc2MiLG8pLG99KHQuc3BhbkNvbnRleHQoKS50cmFjZUlkLG4pLHA9b1sic2VudHJ5LnNvdXJjZSJdLGQ9ci5kZXNjcmlwdGlvbjtyZXR1cm4idXJsIiE9PXAmJmQmJihoLnRyYW5zYWN0aW9uPWQpLGZ1bmN0aW9uKCl7aWYoImJvb2xlYW4iPT10eXBlb2YgX19TRU5UUllfVFJBQ0lOR19fJiYhX19TRU5UUllfVFJBQ0lOR19fKXJldHVybiExO2NvbnN0IHQ9aHQoKT8uZ2V0T3B0aW9ucygpO3JldHVybiEoIXR8fG51bGw9PXQudHJhY2VzU2FtcGxlUmF0ZSYmIXQudHJhY2VzU2FtcGxlcil9KCkmJihoLnNhbXBsZWQ9U3RyaW5nKGZ1bmN0aW9uKHQpe2NvbnN0e3RyYWNlRmxhZ3M6bn09dC5zcGFuQ29udGV4dCgpO3JldHVybiAxPT09bn0oZSkpLGguc2FtcGxlX3JhbmQ9aT8uZ2V0KCJzZW50cnkuc2FtcGxlX3JhbmQiKT8/ZHQoZSkuc2NvcGU/LmdldFByb3BhZ2F0aW9uQ29udGV4dCgpLnNhbXBsZVJhbmQudG9TdHJpbmcoKSksYyhoKSxuLmVtaXQoImNyZWF0ZURzYyIsaCxlKSxofWZ1bmN0aW9uIEN0KHQsbj0xMDAsZT0xLzApe3RyeXtyZXR1cm4gQXQoIiIsdCxuLGUpfWNhdGNoKHQpe3JldHVybntFUlJPUjpgKipub24tc2VyaWFsaXphYmxlKiogKCR7dH0pYH19fWZ1bmN0aW9uIEF0KHQsbixlPTEvMCxyPTEvMCxvPWZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgV2Vha1NldDtmdW5jdGlvbiBuKG4pe3JldHVybiEhdC5oYXMobil8fCh0LmFkZChuKSwhMSl9ZnVuY3Rpb24gZShuKXt0LmRlbGV0ZShuKX1yZXR1cm5bbixlXX0oKSl7Y29uc3RbaSxzXT1vO2lmKG51bGw9PW58fFsiYm9vbGVhbiIsInN0cmluZyJdLmluY2x1ZGVzKHR5cGVvZiBuKXx8Im51bWJlciI9PXR5cGVvZiBuJiZOdW1iZXIuaXNGaW5pdGUobikpcmV0dXJuIG47Y29uc3QgYz1mdW5jdGlvbih0LG4pe3RyeXtpZigiZG9tYWluIj09PXQmJm4mJiJvYmplY3QiPT10eXBlb2YgbiYmbi5NKXJldHVybiJbRG9tYWluXSI7aWYoImRvbWFpbkVtaXR0ZXIiPT09dClyZXR1cm4iW0RvbWFpbkVtaXR0ZXJdIjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbj09PWdsb2JhbClyZXR1cm4iW0dsb2JhbF0iO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZuPT09d2luZG93KXJldHVybiJbV2luZG93XSI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmbj09PWRvY3VtZW50KXJldHVybiJbRG9jdW1lbnRdIjtpZigib2JqZWN0Ij09dHlwZW9mKGU9bikmJm51bGwhPT1lJiYoZS5fX2lzVnVlfHxlLkJ8fGUuX192X2lzVk5vZGUpKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4iX192X2lzVk5vZGUiaW4gdCYmdC5fX3ZfaXNWTm9kZT8iW1Z1ZVZOb2RlXSI6IltWdWVWaWV3TW9kZWxdIn0obik7aWYoZnVuY3Rpb24odCl7cmV0dXJuIEEodCkmJiJuYXRpdmVFdmVudCJpbiB0JiYicHJldmVudERlZmF1bHQiaW4gdCYmInN0b3BQcm9wYWdhdGlvbiJpbiB0fShuKSlyZXR1cm4iW1N5bnRoZXRpY0V2ZW50XSI7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYhTnVtYmVyLmlzRmluaXRlKG4pKXJldHVybmBbJHtufV1gO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybmBbRnVuY3Rpb246ICR7ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5uYW1lfHx4fWNhdGNoe3JldHVybiB4fX0obil9XWA7aWYoInN5bWJvbCI9PXR5cGVvZiBuKXJldHVybmBbJHtTdHJpbmcobil9XWA7aWYoImJpZ2ludCI9PXR5cGVvZiBuKXJldHVybmBbQmlnSW50OiAke1N0cmluZyhuKX1dYDtjb25zdCByPWZ1bmN0aW9uKHQpe2NvbnN0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBuPy5jb25zdHJ1Y3Rvcj9uLmNvbnN0cnVjdG9yLm5hbWU6Im51bGwgcHJvdG90eXBlIn0obik7cmV0dXJuL15IVE1MKFx3KilFbGVtZW50JC8udGVzdChyKT9gW0hUTUxFbGVtZW50OiAke3J9XWA6YFtvYmplY3QgJHtyfV1gfWNhdGNoKHQpe3JldHVybmAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHt0fSlgfXZhciBlfSh0LG4pO2lmKCFjLnN0YXJ0c1dpdGgoIltvYmplY3QgIikpcmV0dXJuIGM7aWYobi5fX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXylyZXR1cm4gbjtjb25zdCB1PSJudW1iZXIiPT10eXBlb2Ygbi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18/bi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX186ZTtpZigwPT09dSlyZXR1cm4gYy5yZXBsYWNlKCJvYmplY3QgIiwiIik7aWYoaShuKSlyZXR1cm4iW0NpcmN1bGFyIH5dIjtjb25zdCBhPW47aWYoYSYmImZ1bmN0aW9uIj09dHlwZW9mIGEudG9KU09OKXRyeXtyZXR1cm4gQXQoIiIsYS50b0pTT04oKSx1LTEscixvKX1jYXRjaHt9Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP1tdOnt9O2xldCBoPTA7Y29uc3QgcD1SKG4pO2Zvcihjb25zdCB0IGluIHApe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCx0KSljb250aW51ZTtpZihoPj1yKXtmW3RdPSJbTWF4UHJvcGVydGllcyB+XSI7YnJlYWt9Y29uc3Qgbj1wW3RdO2ZbdF09QXQodCxuLHUtMSxyLG8pLGgrK31yZXR1cm4gcyhuKSxmfWZ1bmN0aW9uIFR0KHQsbil7Y29uc3QgZT1uLnJlcGxhY2UoL1xcL2csIi8iKS5yZXBsYWNlKC9bfFxce30oKVtcXV4kKyo/Ll0vZywiXFwkJiIpO2xldCByPXQ7dHJ5e3I9ZGVjb2RlVVJJKHQpfWNhdGNoe31yZXR1cm4gci5yZXBsYWNlKC9cXC9nLCIvIikucmVwbGFjZSgvd2VicGFjazpcLz8vZywiIikucmVwbGFjZShuZXcgUmVnRXhwKGAoZmlsZTovLyk/Lyoke2V9LypgLCJpZyIpLCJhcHA6Ly8vIil9ZnVuY3Rpb24ga3QodCxuPVtdKXtyZXR1cm5bdCxuXX1mdW5jdGlvbiBJdCh0LG4pe2NvbnN0IGU9dFsxXTtmb3IoY29uc3QgdCBvZiBlKXtpZihuKHQsdFswXS50eXBlKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBPdCh0KXtjb25zdCBuPW0ocCk7cmV0dXJuIG4uZW5jb2RlUG9seWZpbGw/bi5lbmNvZGVQb2x5ZmlsbCh0KToobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodCl9ZnVuY3Rpb24gUnQodCl7Y29uc3RbbixlXT10O2xldCByPUpTT04uc3RyaW5naWZ5KG4pO2Z1bmN0aW9uIG8odCl7InN0cmluZyI9PXR5cGVvZiByP3I9InN0cmluZyI9PXR5cGVvZiB0P3IrdDpbT3QociksdF06ci5wdXNoKCJzdHJpbmciPT10eXBlb2YgdD9PdCh0KTp0KX1mb3IoY29uc3QgdCBvZiBlKXtjb25zdFtuLGVdPXQ7aWYobyhgXG4ke0pTT04uc3RyaW5naWZ5KG4pfVxuYCksInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSlvKGUpO2Vsc2V7bGV0IHQ7dHJ5e3Q9SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2h7dD1KU09OLnN0cmluZ2lmeShDdChlKSl9byh0KX19cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3I6ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnJlZHVjZSgodCxuKT0+dCtuLmxlbmd0aCwwKSxlPW5ldyBVaW50OEFycmF5KG4pO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgdCllLnNldChuLHIpLHIrPW4ubGVuZ3RoO3JldHVybiBlfShyKX1jb25zdCBQdD17c2Vzc2lvbnM6InNlc3Npb24iLGV2ZW50OiJlcnJvciIsY2xpZW50X3JlcG9ydDoiaW50ZXJuYWwiLHVzZXJfcmVwb3J0OiJkZWZhdWx0Iixwcm9maWxlX2NodW5rOiJwcm9maWxlIixyZXBsYXlfZXZlbnQ6InJlcGxheSIscmVwbGF5X3JlY29yZGluZzoicmVwbGF5IixjaGVja19pbjoibW9uaXRvciIscmF3X3NlY3VyaXR5OiJzZWN1cml0eSIsbG9nOiJsb2dfaXRlbSIsdHJhY2VfbWV0cmljOiJtZXRyaWMifTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gUHR9KHQpP1B0W3RdOnR9ZnVuY3Rpb24gVXQodCl7aWYoIXQ/LnNkaylyZXR1cm47Y29uc3R7bmFtZTpuLHZlcnNpb246ZX09dC5zZGs7cmV0dXJue25hbWU6bix2ZXJzaW9uOmV9fWZ1bmN0aW9uIEx0KHQsbixlLHIpe2NvbnN0IG89VXQoZSksaT10LnR5cGUmJiJyZXBsYXlfZXZlbnQiIT09dC50eXBlP3QudHlwZToiZXZlbnQiOyFmdW5jdGlvbih0LG4pe2lmKCFuKXJldHVybiB0O2NvbnN0IGU9dC5zZGt8fHt9O3Quc2RrPXsuLi5lLG5hbWU6ZS5uYW1lfHxuLm5hbWUsdmVyc2lvbjplLnZlcnNpb258fG4udmVyc2lvbixpbnRlZ3JhdGlvbnM6Wy4uLnQuc2RrPy5pbnRlZ3JhdGlvbnN8fFtdLC4uLm4uaW50ZWdyYXRpb25zfHxbXV0scGFja2FnZXM6Wy4uLnQuc2RrPy5wYWNrYWdlc3x8W10sLi4ubi5wYWNrYWdlc3x8W11dLHNldHRpbmdzOnQuc2RrPy5zZXR0aW5nc3x8bi5zZXR0aW5ncz97Li4udC5zZGs/LnNldHRpbmdzLC4uLm4uc2V0dGluZ3N9OnZvaWQgMH19KHQsZT8uc2RrKTtjb25zdCBzPWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89dC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE/LmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7cmV0dXJue2V2ZW50X2lkOnQuZXZlbnRfaWQsc2VudF9hdDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCksLi4ubiYme3NkazpufSwuLi4hIWUmJnImJntkc246YnQocil9LC4uLm8mJnt0cmFjZTpvfX19KHQsbyxyLG4pO2RlbGV0ZSB0LnNka1Byb2Nlc3NpbmdNZXRhZGF0YTtyZXR1cm4ga3QocyxbW3t0eXBlOml9LHRdXSl9Y29uc3QgTXQ9Il9fU0VOVFJZX1NVUFBSRVNTX1RSQUNJTkdfXyI7ZnVuY3Rpb24gQnQodCl7Y29uc3Qgbj1mdChsKCkpO3JldHVybiBuLnN1cHByZXNzVHJhY2luZz9uLnN1cHByZXNzVHJhY2luZyh0KTpmdW5jdGlvbiguLi50KXtjb25zdCBuPWZ0KGwoKSk7aWYoMj09PXQubGVuZ3RoKXtjb25zdFtlLHJdPXQ7cmV0dXJuIGU/bi53aXRoU2V0U2NvcGUoZSxyKTpuLndpdGhTY29wZShyKX1yZXR1cm4gbi53aXRoU2NvcGUodFswXSl9KG49PntuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTohMH0pO2NvbnN0IGU9dCgpO3JldHVybiBuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTp2b2lkIDB9KSxlfSl9Y2xhc3MgV3R7Y29uc3RydWN0b3IodCl7dGhpcy5XPTAsdGhpcy5GPVtdLHRoaXMuRyh0KX10aGVuKHQsbil7cmV0dXJuIG5ldyBXdCgoZSxyKT0+e3RoaXMuRi5wdXNoKFshMSxuPT57aWYodCl0cnl7ZSh0KG4pKX1jYXRjaCh0KXtyKHQpfWVsc2UgZShuKX0sdD0+e2lmKG4pdHJ5e2Uobih0KSl9Y2F0Y2godCl7cih0KX1lbHNlIHIodCl9XSksdGhpcy5IKCl9KX1jYXRjaCh0KXtyZXR1cm4gdGhpcy50aGVuKHQ9PnQsdCl9ZmluYWxseSh0KXtyZXR1cm4gbmV3IFd0KChuLGUpPT57bGV0IHIsbztyZXR1cm4gdGhpcy50aGVuKG49PntvPSExLHI9bix0JiZ0KCl9LG49PntvPSEwLHI9bix0JiZ0KCl9KS50aGVuKCgpPT57bz9lKHIpOm4ocil9KX0pfUgoKXtpZigwPT09dGhpcy5XKXJldHVybjtjb25zdCB0PXRoaXMuRi5zbGljZSgpO3RoaXMuRj1bXSx0LmZvckVhY2godD0+e3RbMF18fCgxPT09dGhpcy5XJiZ0WzFdKHRoaXMuSiksMj09PXRoaXMuVyYmdFsyXSh0aGlzLkopLHRbMF09ITApfSl9Ryh0KXtjb25zdCBuPSh0LG4pPT57MD09PXRoaXMuVyYmKFQobik/bi50aGVuKGUscik6KHRoaXMuVz10LHRoaXMuSj1uLHRoaXMuSCgpKSl9LGU9dD0+e24oMSx0KX0scj10PT57bigyLHQpfTt0cnl7dChlLHIpfWNhdGNoKHQpe3IodCl9fX1mdW5jdGlvbiB6dCh0LG4pe2NvbnN0e2ZpbmdlcnByaW50OmUsc3BhbjpyLGJyZWFkY3J1bWJzOm8sc2RrUHJvY2Vzc2luZ01ldGFkYXRhOml9PW47IWZ1bmN0aW9uKHQsbil7Y29uc3R7ZXh0cmE6ZSx0YWdzOnIsdXNlcjpvLGNvbnRleHRzOmksbGV2ZWw6cyx0cmFuc2FjdGlvbk5hbWU6Y309bjtPYmplY3Qua2V5cyhlKS5sZW5ndGgmJih0LmV4dHJhPXsuLi5lLC4uLnQuZXh0cmF9KTtPYmplY3Qua2V5cyhyKS5sZW5ndGgmJih0LnRhZ3M9ey4uLnIsLi4udC50YWdzfSk7T2JqZWN0LmtleXMobykubGVuZ3RoJiYodC51c2VyPXsuLi5vLC4uLnQudXNlcn0pO09iamVjdC5rZXlzKGkpLmxlbmd0aCYmKHQuY29udGV4dHM9ey4uLmksLi4udC5jb250ZXh0c30pO3MmJih0LmxldmVsPXMpO2MmJiJ0cmFuc2FjdGlvbiIhPT10LnR5cGUmJih0LnRyYW5zYWN0aW9uPWMpfSh0LG4pLHImJmZ1bmN0aW9uKHQsbil7dC5jb250ZXh0cz17dHJhY2U6X3QobiksLi4udC5jb250ZXh0c30sdC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE9e2R5bmFtaWNTYW1wbGluZ0NvbnRleHQ6anQobiksLi4udC5zZGtQcm9jZXNzaW5nTWV0YWRhdGF9O2NvbnN0IGU9TnQobikscj1FdChlKS5kZXNjcmlwdGlvbjtyJiYhdC50cmFuc2FjdGlvbiYmInRyYW5zYWN0aW9uIj09PXQudHlwZSYmKHQudHJhbnNhY3Rpb249cil9KHQsciksZnVuY3Rpb24odCxuKXt0LmZpbmdlcnByaW50PXQuZmluZ2VycHJpbnQ/QXJyYXkuaXNBcnJheSh0LmZpbmdlcnByaW50KT90LmZpbmdlcnByaW50Olt0LmZpbmdlcnByaW50XTpbXSxuJiYodC5maW5nZXJwcmludD10LmZpbmdlcnByaW50LmNvbmNhdChuKSk7dC5maW5nZXJwcmludC5sZW5ndGh8fGRlbGV0ZSB0LmZpbmdlcnByaW50fSh0LGUpLGZ1bmN0aW9uKHQsbil7Y29uc3QgZT1bLi4udC5icmVhZGNydW1ic3x8W10sLi4ubl07dC5icmVhZGNydW1icz1lLmxlbmd0aD9lOnZvaWQgMH0odCxvKSxmdW5jdGlvbih0LG4pe3Quc2RrUHJvY2Vzc2luZ01ldGFkYXRhPXsuLi50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwuLi5ufX0odCxpKX1jb25zdCBGdD1TeW1ib2wuZm9yKCJTZW50cnlCdWZmZXJGdWxsRXJyb3IiKTtmdW5jdGlvbiBHdCh0PTEwMCl7Y29uc3Qgbj1uZXcgU2V0O2Z1bmN0aW9uIGUodCl7bi5kZWxldGUodCl9cmV0dXJue2dldCAkKCl7cmV0dXJuIEFycmF5LmZyb20obil9LGFkZDpmdW5jdGlvbihyKXtpZighKG4uc2l6ZTx0KSlyZXR1cm4gbz1GdCxuZXcgV3QoKHQsbik9PntuKG8pfSk7dmFyIG87Y29uc3QgaT1yKCk7cmV0dXJuIG4uYWRkKGkpLGkudGhlbigoKT0+ZShpKSwoKT0+ZShpKSksaX0sZHJhaW46ZnVuY3Rpb24odCl7aWYoIW4uc2l6ZSlyZXR1cm4gZT0hMCxuZXcgV3QodD0+e3QoZSl9KTt2YXIgZTtjb25zdCByPVByb21pc2UuYWxsU2V0dGxlZChBcnJheS5mcm9tKG4pKS50aGVuKCgpPT4hMCk7aWYoIXQpcmV0dXJuIHI7Y29uc3Qgbz1bcixuZXcgUHJvbWlzZShuPT57cmV0dXJuIm9iamVjdCI9PXR5cGVvZihlPXNldFRpbWVvdXQoKCk9Pm4oITEpLHQpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudW5yZWYmJmUudW5yZWYoKSxlO3ZhciBlfSldO3JldHVybiBQcm9taXNlLnJhY2Uobyl9fX1mdW5jdGlvbiBIdCh0LHtzdGF0dXNDb2RlOm4saGVhZGVyczplfSxyPVcoKSl7Y29uc3Qgbz17Li4udH0saT1lPy5bIngtc2VudHJ5LXJhdGUtbGltaXRzIl0scz1lPy5bInJldHJ5LWFmdGVyIl07aWYoaSlmb3IoY29uc3QgdCBvZiBpLnRyaW0oKS5zcGxpdCgiLCIpKXtjb25zdFtuLGUsLCxpXT10LnNwbGl0KCI6Iiw1KSxzPXBhcnNlSW50KG4sMTApLGM9MWUzKihpc05hTihzKT82MDpzKTtpZihlKWZvcihjb25zdCB0IG9mIGUuc3BsaXQoIjsiKSkibWV0cmljX2J1Y2tldCI9PT10JiZpJiYhaS5zcGxpdCgiOyIpLmluY2x1ZGVzKCJjdXN0b20iKXx8KG9bdF09citjKTtlbHNlIG8uYWxsPXIrY31lbHNlIHM/by5hbGw9citmdW5jdGlvbih0LG49VygpKXtjb25zdCBlPXBhcnNlSW50KGAke3R9YCwxMCk7aWYoIWlzTmFOKGUpKXJldHVybiAxZTMqZTtjb25zdCByPURhdGUucGFyc2UoYCR7dH1gKTtyZXR1cm4gaXNOYU4ocik/NmU0OnItbn0ocyxyKTo0Mjk9PT1uJiYoby5hbGw9cis2ZTQpO3JldHVybiBvfWZ1bmN0aW9uIEp0KHQsbixlPUd0KHQuYnVmZmVyU2l6ZXx8NjQpKXtsZXQgcj17fTtyZXR1cm57c2VuZDpmdW5jdGlvbih0KXtjb25zdCBvPVtdO2lmKEl0KHQsKHQsbik9Pntjb25zdCBlPUR0KG4pOyhmdW5jdGlvbih0LG4sZT1XKCkpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB0W25dfHx0LmFsbHx8MH0odCxuKT5lfSkocixlKXx8by5wdXNoKHQpfSksMD09PW8ubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO2NvbnN0IGk9a3QodFswXSxvKSxzPXQ9PnshZnVuY3Rpb24odCxuKXtyZXR1cm4gSXQodCwodCxlKT0+bi5pbmNsdWRlcyhlKSl9KGksWyJjbGllbnRfcmVwb3J0Il0pP0l0KGksKHQsbik9Pnt9KTpoJiZTLndhcm4oYERyb3BwaW5nIGNsaWVudCByZXBvcnQuIFdpbGwgbm90IHNlbmQgb3V0Y29tZXMgKHJlYXNvbjogJHt0fSkuYCl9O3JldHVybiBlLmFkZCgoKT0+bih7Ym9keTpSdChpKX0pLnRoZW4odD0+NDEzPT09dC5zdGF0dXNDb2RlPyhoJiZTLmVycm9yKCJTZW50cnkgcmVzcG9uZGVkIHdpdGggc3RhdHVzIGNvZGUgNDEzLiBFbnZlbG9wZSB3YXMgZGlzY2FyZGVkIGR1ZSB0byBleGNlZWRpbmcgc2l6ZSBsaW1pdHMuIikscygic2VuZF9lcnJvciIpLHQpOihoJiZ2b2lkIDAhPT10LnN0YXR1c0NvZGUmJih0LnN0YXR1c0NvZGU8MjAwfHx0LnN0YXR1c0NvZGU+PTMwMCkmJlMud2FybihgU2VudHJ5IHJlc3BvbmRlZCB3aXRoIHN0YXR1cyBjb2RlICR7dC5zdGF0dXNDb2RlfSB0byBzZW50IGV2ZW50LmApLHI9SHQocix0KSx0KSx0PT57dGhyb3cgcygibmV0d29ya19lcnJvciIpLGgmJlMuZXJyb3IoIkVuY291bnRlcmVkIGVycm9yIHJ1bm5pbmcgdHJhbnNwb3J0IHJlcXVlc3Q6Iix0KSx0fSkpLnRoZW4odD0+dCx0PT57aWYodD09PUZ0KXJldHVybiBoJiZTLmVycm9yKCJTa2lwcGVkIHNlbmRpbmcgZXZlbnQgYmVjYXVzZSBidWZmZXIgaXMgZnVsbC4iKSxzKCJxdWV1ZV9vdmVyZmxvdyIpLFByb21pc2UucmVzb2x2ZSh7fSk7dGhyb3cgdH0pfSxmbHVzaDp0PT5lLmRyYWluKHQpfX1jb25zdCBZdD0vXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87ZnVuY3Rpb24gVnQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtjb25zdCBuPXQubGVuZ3RoPjEwMjQ/YDx0cnVuY2F0ZWQ+JHt0LnNsaWNlKC0xMDI0KX1gOnQsZT1ZdC5leGVjKG4pO3JldHVybiBlP2Uuc2xpY2UoMSk6W119KHQpLGU9blswXXx8IiI7bGV0IHI9blsxXTtyZXR1cm4gZXx8cj8ociYmKHI9ci5zbGljZSgwLHIubGVuZ3RoLTEpKSxlK3IpOiIuIn1mdW5jdGlvbiBLdCh0LG49ITEpe3JldHVybiEobnx8dCYmIXQuc3RhcnRzV2l0aCgiLyIpJiYhdC5tYXRjaCgvXltBLVpdOi8pJiYhdC5zdGFydHNXaXRoKCIuIikmJiF0Lm1hdGNoKC9eW2EtekEtWl0oW2EtekEtWjAtOS5cLStdKSo6XC9cLy8pKSYmdm9pZCAwIT09dCYmIXQuaW5jbHVkZXMoIm5vZGVfbW9kdWxlcy8iKX1jb25zdCBadD1TeW1ib2woIkFnZW50QmFzZUludGVybmFsU3RhdGUiKTtjbGFzcyBxdCBleHRlbmRzIGkuQWdlbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpc1tadF09e319aXNTZWN1cmVFbmRwb2ludCh0KXtpZih0KXtpZigiYm9vbGVhbiI9PXR5cGVvZiB0LnNlY3VyZUVuZHBvaW50KXJldHVybiB0LnNlY3VyZUVuZHBvaW50O2lmKCJzdHJpbmciPT10eXBlb2YgdC5wcm90b2NvbClyZXR1cm4iaHR0cHM6Ij09PXQucHJvdG9jb2x9Y29uc3R7c3RhY2s6bn09bmV3IEVycm9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmbi5zcGxpdCgiXG4iKS5zb21lKHQ9Pi0xIT09dC5pbmRleE9mKCIoaHR0cHMuanM6Iil8fC0xIT09dC5pbmRleE9mKCJub2RlOmh0dHBzOiIpKX1jcmVhdGVTb2NrZXQodCxuLGUpe2NvbnN0IHI9ey4uLm4sc2VjdXJlRW5kcG9pbnQ6dGhpcy5pc1NlY3VyZUVuZHBvaW50KG4pfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbm5lY3QodCxyKSkudGhlbihvPT57aWYobyBpbnN0YW5jZW9mIGkuQWdlbnQpcmV0dXJuIG8uYWRkUmVxdWVzdCh0LHIpO3RoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9byxzdXBlci5jcmVhdGVTb2NrZXQodCxuLGUpfSxlKX1jcmVhdGVDb25uZWN0aW9uKCl7Y29uc3QgdD10aGlzW1p0XS5jdXJyZW50U29ja2V0O2lmKHRoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9dm9pZCAwLCF0KXRocm93IG5ldyBFcnJvcigiTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24iKTtyZXR1cm4gdH1nZXQgZGVmYXVsdFBvcnQoKXtyZXR1cm4gdGhpc1tadF0uZGVmYXVsdFBvcnQ/PygiaHR0cHM6Ij09PXRoaXMucHJvdG9jb2w/NDQzOjgwKX1zZXQgZGVmYXVsdFBvcnQodCl7dGhpc1tadF0mJih0aGlzW1p0XS5kZWZhdWx0UG9ydD10KX1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpc1tadF0ucHJvdG9jb2w/Pyh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKT8iaHR0cHM6IjoiaHR0cDoiKX1zZXQgcHJvdG9jb2wodCl7dGhpc1tadF0mJih0aGlzW1p0XS5wcm90b2NvbD10KX19ZnVuY3Rpb24gUXQoLi4udCl7Uy5sb2coIltodHRwcy1wcm94eS1hZ2VudDpwYXJzZS1wcm94eS1yZXNwb25zZV0iLC4uLnQpfWZ1bmN0aW9uIFh0KHQpe3JldHVybiBuZXcgUHJvbWlzZSgobixlKT0+e2xldCByPTA7Y29uc3Qgbz1bXTtmdW5jdGlvbiBpKCl7Y29uc3QgYz10LnJlYWQoKTtjP2Z1bmN0aW9uKGMpe28ucHVzaChjKSxyKz1jLmxlbmd0aDtjb25zdCB1PUJ1ZmZlci5jb25jYXQobyxyKSxhPXUuaW5kZXhPZigiXHJcblxyXG4iKTtpZigtMT09PWEpcmV0dXJuIFF0KCJoYXZlIG5vdCByZWNlaXZlZCBlbmQgb2YgSFRUUCBoZWFkZXJzIHlldC4uLiIpLHZvaWQgaSgpO2NvbnN0IGY9dS5zdWJhcnJheSgwLGEpLnRvU3RyaW5nKCJhc2NpaSIpLnNwbGl0KCJcclxuIiksaD1mLnNoaWZ0KCk7aWYoIWgpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKCJObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlIikpO2NvbnN0IHA9aC5zcGxpdCgiICIpLGQ9KyhwWzFdfHwwKSxsPXAuc2xpY2UoMikuam9pbigiICIpLG09e307Zm9yKGNvbnN0IG4gb2YgZil7aWYoIW4pY29udGludWU7Y29uc3Qgcj1uLmluZGV4T2YoIjoiKTtpZigtMT09PXIpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKGBJbnZhbGlkIGhlYWRlciBmcm9tIHByb3h5IENPTk5FQ1QgcmVzcG9uc2U6ICIke259ImApKTtjb25zdCBvPW4uc2xpY2UoMCxyKS50b0xvd2VyQ2FzZSgpLGk9bi5zbGljZShyKzEpLnRyaW1TdGFydCgpLHM9bVtvXTsic3RyaW5nIj09dHlwZW9mIHM/bVtvXT1bcyxpXTpBcnJheS5pc0FycmF5KHMpP3MucHVzaChpKTptW29dPWl9UXQoImdvdCBwcm94eSBzZXJ2ZXIgcmVzcG9uc2U6ICVvICVvIixoLG0pLHMoKSxuKHtjb25uZWN0OntzdGF0dXNDb2RlOmQsc3RhdHVzVGV4dDpsLGhlYWRlcnM6bX0sYnVmZmVyZWQ6dX0pfShjKTp0Lm9uY2UoInJlYWRhYmxlIixpKX1mdW5jdGlvbiBzKCl7dC5yZW1vdmVMaXN0ZW5lcigiZW5kIixjKSx0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsdSksdC5yZW1vdmVMaXN0ZW5lcigicmVhZGFibGUiLGkpfWZ1bmN0aW9uIGMoKXtzKCksUXQoIm9uZW5kIiksZShuZXcgRXJyb3IoIlByb3h5IGNvbm5lY3Rpb24gZW5kZWQgYmVmb3JlIHJlY2VpdmluZyBDT05ORUNUIHJlc3BvbnNlIikpfWZ1bmN0aW9uIHUodCl7cygpLFF0KCJvbmVycm9yICVvIix0KSxlKHQpfXQub24oImVycm9yIix1KSx0Lm9uKCJlbmQiLGMpLGkoKX0pfWZ1bmN0aW9uIHRuKC4uLnQpe1MubG9nKCJbaHR0cHMtcHJveHktYWdlbnRdIiwuLi50KX1jbGFzcyBubiBleHRlbmRzIHF0e3N0YXRpYyBfX2luaXRTdGF0aWMoKXt0aGlzLnByb3RvY29scz1bImh0dHAiLCJodHRwcyJdfWNvbnN0cnVjdG9yKHQsbil7c3VwZXIobiksdGhpcy5vcHRpb25zPXt9LHRoaXMucHJveHk9InN0cmluZyI9PXR5cGVvZiB0P25ldyBVUkwodCk6dCx0aGlzLnByb3h5SGVhZGVycz1uPy5oZWFkZXJzPz97fSx0bigiQ3JlYXRpbmcgbmV3IEh0dHBzUHJveHlBZ2VudCBpbnN0YW5jZTogJW8iLHRoaXMucHJveHkuaHJlZik7Y29uc3QgZT0odGhpcy5wcm94eS5ob3N0bmFtZXx8dGhpcy5wcm94eS5ob3N0KS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpLHI9dGhpcy5wcm94eS5wb3J0P3BhcnNlSW50KHRoaXMucHJveHkucG9ydCwxMCk6Imh0dHBzOiI9PT10aGlzLnByb3h5LnByb3RvY29sPzQ0Mzo4MDt0aGlzLmNvbm5lY3RPcHRzPXtBTFBOUHJvdG9jb2xzOlsiaHR0cC8xLjEiXSwuLi5uP3JuKG4sImhlYWRlcnMiKTpudWxsLGhvc3Q6ZSxwb3J0OnJ9fWFzeW5jIGNvbm5lY3QodCxuKXtjb25zdHtwcm94eTplfT10aGlzO2lmKCFuLmhvc3QpdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gImhvc3QiIHByb3ZpZGVkJyk7bGV0IHI7aWYoImh0dHBzOiI9PT1lLnByb3RvY29sKXt0bigiQ3JlYXRpbmcgYHRscy5Tb2NrZXRgOiAlbyIsdGhpcy5jb25uZWN0T3B0cyk7Y29uc3QgdD10aGlzLmNvbm5lY3RPcHRzLnNlcnZlcm5hbWV8fHRoaXMuY29ubmVjdE9wdHMuaG9zdDtyPWYuY29ubmVjdCh7Li4udGhpcy5jb25uZWN0T3B0cyxzZXJ2ZXJuYW1lOnQmJmEuaXNJUCh0KT92b2lkIDA6dH0pfWVsc2UgdG4oIkNyZWF0aW5nIGBuZXQuU29ja2V0YDogJW8iLHRoaXMuY29ubmVjdE9wdHMpLHI9YS5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpO2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucHJveHlIZWFkZXJzP3RoaXMucHJveHlIZWFkZXJzKCk6ey4uLnRoaXMucHJveHlIZWFkZXJzfSxpPWEuaXNJUHY2KG4uaG9zdCk/YFske24uaG9zdH1dYDpuLmhvc3Q7bGV0IHM9YENPTk5FQ1QgJHtpfToke24ucG9ydH0gSFRUUC8xLjFcclxuYDtpZihlLnVzZXJuYW1lfHxlLnBhc3N3b3JkKXtjb25zdCB0PWAke2RlY29kZVVSSUNvbXBvbmVudChlLnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQoZS5wYXNzd29yZCl9YDtvWyJQcm94eS1BdXRob3JpemF0aW9uIl09YEJhc2ljICR7QnVmZmVyLmZyb20odCkudG9TdHJpbmcoImJhc2U2NCIpfWB9by5Ib3N0PWAke2l9OiR7bi5wb3J0fWAsb1siUHJveHktQ29ubmVjdGlvbiJdfHwob1siUHJveHktQ29ubmVjdGlvbiJdPXRoaXMua2VlcEFsaXZlPyJLZWVwLUFsaXZlIjoiY2xvc2UiKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhvKSlzKz1gJHt0fTogJHtvW3RdfVxyXG5gO2NvbnN0IGM9WHQocik7ci53cml0ZShgJHtzfVxyXG5gKTtjb25zdHtjb25uZWN0OnUsYnVmZmVyZWQ6aH09YXdhaXQgYztpZih0LmVtaXQoInByb3h5Q29ubmVjdCIsdSksdGhpcy5lbWl0KCJwcm94eUNvbm5lY3QiLHUsdCksMjAwPT09dS5zdGF0dXNDb2RlKXtpZih0Lm9uY2UoInNvY2tldCIsZW4pLG4uc2VjdXJlRW5kcG9pbnQpe3RuKCJVcGdyYWRpbmcgc29ja2V0IGNvbm5lY3Rpb24gdG8gVExTIik7Y29uc3QgdD1uLnNlcnZlcm5hbWV8fG4uaG9zdDtyZXR1cm4gZi5jb25uZWN0KHsuLi5ybihuLCJob3N0IiwicGF0aCIsInBvcnQiKSxzb2NrZXQ6cixzZXJ2ZXJuYW1lOmEuaXNJUCh0KT92b2lkIDA6dH0pfXJldHVybiByfXIuZGVzdHJveSgpO2NvbnN0IHA9bmV3IGEuU29ja2V0KHt3cml0YWJsZTohMX0pO3JldHVybiBwLnJlYWRhYmxlPSEwLHQub25jZSgic29ja2V0Iix0PT57dG4oIlJlcGxheWluZyBwcm94eSBidWZmZXIgZm9yIGZhaWxlZCByZXF1ZXN0IiksdC5wdXNoKGgpLHQucHVzaChudWxsKX0pLHB9fWZ1bmN0aW9uIGVuKHQpe3QucmVzdW1lKCl9ZnVuY3Rpb24gcm4odCwuLi5uKXtjb25zdCBlPXt9O2xldCByO2ZvcihyIGluIHQpbi5pbmNsdWRlcyhyKXx8KGVbcl09dFtyXSk7cmV0dXJuIGV9bm4uX19pbml0U3RhdGljKCk7ZnVuY3Rpb24gb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXltBLVpdOi8sIiIpLnJlcGxhY2UoL1xcL2csIi8iKX1jb25zdCBzbj1uO2xldCBjbix1bj0wLGFuPXt9O2Z1bmN0aW9uIGZuKHQpe3NuLmRlYnVnJiZjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7dH1gKX12YXIgaG4scG4sZG47Y29uc3QgbG49ZnVuY3Rpb24odCl7bGV0IG47dHJ5e249bmV3IFVSTCh0LnVybCl9Y2F0Y2gobil7cmV0dXJuIGIoKCk9Pntjb25zb2xlLndhcm4oIltAc2VudHJ5L25vZGVdOiBJbnZhbGlkIGRzbiBvciB0dW5uZWwgb3B0aW9uLCB3aWxsIG5vdCBzZW5kIGFueSBldmVudHMuIFRoZSB0dW5uZWwgb3B0aW9uIG11c3QgYmUgYSBmdWxsIFVSTCB3aGVuIHVzZWQuIil9KSxKdCh0LCgpPT5Qcm9taXNlLnJlc29sdmUoe30pKX1jb25zdCBlPSJodHRwczoiPT09bi5wcm90b2NvbCxyPWZ1bmN0aW9uKHQsbil7Y29uc3R7bm9fcHJveHk6ZX09cHJvY2Vzcy5lbnYscj1lPy5zcGxpdCgiLCIpLnNvbWUobj0+dC5ob3N0LmVuZHNXaXRoKG4pfHx0Lmhvc3RuYW1lLmVuZHNXaXRoKG4pKTtyZXR1cm4gcj92b2lkIDA6bn0obix0LnByb3h5fHwoZT9wcm9jZXNzLmVudi5odHRwc19wcm94eTp2b2lkIDApfHxwcm9jZXNzLmVudi5odHRwX3Byb3h5KSxvPWU/czppLGE9dm9pZCAwIT09dC5rZWVwQWxpdmUmJnQua2VlcEFsaXZlLGY9cj9uZXcgbm4ocik6bmV3IG8uQWdlbnQoe2tlZXBBbGl2ZTphLG1heFNvY2tldHM6MzAsdGltZW91dDoyZTN9KSxoPWZ1bmN0aW9uKHQsbixlKXtjb25zdHtob3N0bmFtZTpyLHBhdGhuYW1lOm8scG9ydDppLHByb3RvY29sOnMsc2VhcmNoOmF9PW5ldyBVUkwodC51cmwpO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gbmV3IFByb21pc2UoKGgscCk9PntCdCgoKT0+e2xldCBkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYyh7cmVhZCgpe3RoaXMucHVzaCh0KSx0aGlzLnB1c2gobnVsbCl9fSl9KGYuYm9keSk7Y29uc3QgbD17Li4udC5oZWFkZXJzfTtmLmJvZHkubGVuZ3RoPjMyNzY4JiYobFsiY29udGVudC1lbmNvZGluZyJdPSJnemlwIixkPWQucGlwZSh1KCkpKTtjb25zdCBtPXIuc3RhcnRzV2l0aCgiWyIpLGc9bi5yZXF1ZXN0KHttZXRob2Q6IlBPU1QiLGFnZW50OmUsaGVhZGVyczpsLGhvc3RuYW1lOm0/ci5zbGljZSgxLC0xKTpyLHBhdGg6YCR7b30ke2F9YCxwb3J0OmkscHJvdG9jb2w6cyxjYTp0LmNhQ2VydHN9LHQ9Pnt0Lm9uKCJkYXRhIiwoKT0+e30pLHQub24oImVuZCIsKCk9Pnt9KSx0LnNldEVuY29kaW5nKCJ1dGY4Iik7Y29uc3Qgbj10LmhlYWRlcnNbInJldHJ5LWFmdGVyIl0/P251bGwsZT10LmhlYWRlcnNbIngtc2VudHJ5LXJhdGUtbGltaXRzIl0/P251bGw7aCh7c3RhdHVzQ29kZTp0LnN0YXR1c0NvZGUsaGVhZGVyczp7InJldHJ5LWFmdGVyIjpuLCJ4LXNlbnRyeS1yYXRlLWxpbWl0cyI6QXJyYXkuaXNBcnJheShlKT9lWzBdfHxudWxsOmV9fSl9KTtnLm9uKCJlcnJvciIscCksZC5waXBlKGcpfSl9KX19KHQsdC5odHRwTW9kdWxlPz9vLGYpO3JldHVybiBKdCh0LGgpfSh7dXJsOihobj1zbi5kc24scG49c24udHVubmVsLGRuPXNuLnNka01ldGFkYXRhLnNkayxwbnx8YCR7ZnVuY3Rpb24odCl7cmV0dXJuYCR7ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnByb3RvY29sP2Ake3QucHJvdG9jb2x9OmA6IiIsZT10LnBvcnQ/YDoke3QucG9ydH1gOiIiO3JldHVybmAke259Ly8ke3QuaG9zdH0ke2V9JHt0LnBhdGg/YC8ke3QucGF0aH1gOiIifS9hcGkvYH0odCl9JHt0LnByb2plY3RJZH0vZW52ZWxvcGUvYH0oaG4pfT8ke2Z1bmN0aW9uKHQsbil7Y29uc3QgZT17c2VudHJ5X3ZlcnNpb246IjcifTtyZXR1cm4gdC5wdWJsaWNLZXkmJihlLnNlbnRyeV9rZXk9dC5wdWJsaWNLZXkpLG4mJihlLnNlbnRyeV9jbGllbnQ9YCR7bi5uYW1lfS8ke24udmVyc2lvbn1gKSxuZXcgVVJMU2VhcmNoUGFyYW1zKGUpLnRvU3RyaW5nKCl9KGhuLGRuKX1gKX0pO2FzeW5jIGZ1bmN0aW9uIG1uKCl7aWYoY24pe2ZuKCJTZW5kaW5nIGFibm9ybWFsIHNlc3Npb24iKSxWKGNuLHtzdGF0dXM6ImFibm9ybWFsIixhYm5vcm1hbF9tZWNoYW5pc206ImFucl9mb3JlZ3JvdW5kIixyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnR9KTtjb25zdCB0PWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89VXQoZSk7cmV0dXJuIGt0KHtzZW50X2F0OihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwuLi5vJiZ7c2RrOm99LC4uLiEhciYmbiYme2RzbjpidChuKX19LFsiYWdncmVnYXRlcyJpbiB0P1t7dHlwZToic2Vzc2lvbnMifSx0XTpbe3R5cGU6InNlc3Npb24ifSx0LnRvSlNPTigpXV0pfShjbixzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeSh0KSksYXdhaXQgbG4uc2VuZCh0KTt0cnl7ZT8ucG9zdE1lc3NhZ2UoInNlc3Npb24tZW5kZWQiKX1jYXRjaHt9fX1mdW5jdGlvbiBnbih0KXtpZighdClyZXR1cm47Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdC5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1BcnJheS5mcm9tKHQpO3JldHVybi9zZW50cnlXcmFwcGVkLy50ZXN0KEUobikuZnVuY3Rpb258fCIiKSYmbi5wb3AoKSxuLnJldmVyc2UoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiYobi5wb3AoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiZuLnBvcCgpKSxuLnNsaWNlKDAsNTApLm1hcCh0PT4oey4uLnQsZmlsZW5hbWU6dC5maWxlbmFtZXx8RShuKS5maWxlbmFtZSxmdW5jdGlvbjp0LmZ1bmN0aW9ufHwiPyJ9KSl9KHQpO2lmKHNuLmFwcFJvb3RQYXRoKWZvcihjb25zdCB0IG9mIG4pdC5maWxlbmFtZSYmKHQuZmlsZW5hbWU9VHQodC5maWxlbmFtZSxzbi5hcHBSb290UGF0aCkpO3JldHVybiBufWFzeW5jIGZ1bmN0aW9uIHluKHQsbil7aWYodW4+PXNuLm1heEFuckV2ZW50cylyZXR1cm47dW4rPTEsYXdhaXQgbW4oKSxmbigiU2VuZGluZyBldmVudCIpO2NvbnN0IGU9e2V2ZW50X2lkOkYoKSxjb250ZXh0czpzbi5jb250ZXh0cyxyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnQsZGlzdDpzbi5kaXN0LHBsYXRmb3JtOiJub2RlIixsZXZlbDoiZXJyb3IiLGV4Y2VwdGlvbjp7dmFsdWVzOlt7dHlwZToiQXBwbGljYXRpb25Ob3RSZXNwb25kaW5nIix2YWx1ZTpgQXBwbGljYXRpb24gTm90IFJlc3BvbmRpbmcgZm9yIGF0IGxlYXN0ICR7c24uYW5yVGhyZXNob2xkfSBtc2Asc3RhY2t0cmFjZTp7ZnJhbWVzOmduKHQpfSxtZWNoYW5pc206e3R5cGU6IkFOUiJ9fV19LHRhZ3M6c24uc3RhdGljVGFnc307biYmZnVuY3Rpb24odCxuKXtpZih6dCh0LG4pLCF0LmNvbnRleHRzPy50cmFjZSl7Y29uc3R7dHJhY2VJZDplLHBhcmVudFNwYW5JZDpyLHByb3BhZ2F0aW9uU3BhbklkOm99PW4ucHJvcGFnYXRpb25Db250ZXh0O3QuY29udGV4dHM9e3RyYWNlOnt0cmFjZV9pZDplLHNwYW5faWQ6b3x8cSgpLHBhcmVudF9zcGFuX2lkOnJ9LC4uLnQuY29udGV4dHN9fX0oZSxuKSxmdW5jdGlvbih0KXtpZigwPT09T2JqZWN0LmtleXMoYW4pLmxlbmd0aClyZXR1cm47Y29uc3Qgbj1zbi5hcHBSb290UGF0aD97fTphbjtpZihzbi5hcHBSb290UGF0aClmb3IoY29uc3RbdCxlXW9mIE9iamVjdC5lbnRyaWVzKGFuKSluW1R0KHQsc24uYXBwUm9vdFBhdGgpXT1lO2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3QgciBvZiB0LmV4Y2VwdGlvbj8udmFsdWVzfHxbXSlmb3IoY29uc3QgdCBvZiByLnN0YWNrdHJhY2U/LmZyYW1lc3x8W10pe2NvbnN0IHI9dC5hYnNfcGF0aHx8dC5maWxlbmFtZTtyJiZuW3JdJiZlLnNldChyLG5bcl0pfWlmKGUuc2l6ZT4wKXtjb25zdCBuPVtdO2Zvcihjb25zdFt0LHJdb2YgZS5lbnRyaWVzKCkpbi5wdXNoKHt0eXBlOiJzb3VyY2VtYXAiLGNvZGVfZmlsZTp0LGRlYnVnX2lkOnJ9KTt0LmRlYnVnX21ldGE9e2ltYWdlczpufX19KGUpO2NvbnN0IHI9THQoZSxzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeShyKSksYXdhaXQgbG4uc2VuZChyKSxhd2FpdCBsbi5mbHVzaCgyZTMpLHVuPj1zbi5tYXhBbnJFdmVudHMmJnNldFRpbWVvdXQoKCk9Pntwcm9jZXNzLmV4aXQoMCl9LDVlMyl9bGV0IGJuO2lmKGZuKCJTdGFydGVkIiksc24uY2FwdHVyZVN0YWNrVHJhY2Upe2ZuKCJDb25uZWN0aW5nIHRvIGRlYnVnZ2VyIik7Y29uc3Qgbj1uZXcgdDtuLmNvbm5lY3RUb01haW5UaHJlYWQoKSxmbigiQ29ubmVjdGVkIHRvIGRlYnVnZ2VyIik7Y29uc3QgZT1uZXcgTWFwO24ub24oIkRlYnVnZ2VyLnNjcmlwdFBhcnNlZCIsdD0+e2Uuc2V0KHQucGFyYW1zLnNjcmlwdElkLHQucGFyYW1zLnVybCl9KSxuLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLHQ9PntpZigib3RoZXIiPT09dC5wYXJhbXMucmVhc29uKXRyeXtmbigiRGVidWdnZXIgcGF1c2VkIik7Y29uc3QgaT1bLi4udC5wYXJhbXMuY2FsbEZyYW1lc10scz1zbi5hcHBSb290UGF0aD9mdW5jdGlvbih0PShwcm9jZXNzLmFyZ3ZbMV0/VnQocHJvY2Vzcy5hcmd2WzFdKTpwcm9jZXNzLmN3ZCgpKSxuPSJcXCI9PT1vKXtjb25zdCBlPW4/b24odCk6dDtyZXR1cm4gdD0+e2lmKCF0KXJldHVybjtjb25zdCBvPW4/b24odCk6dDtsZXR7ZGlyOmksYmFzZTpzLGV4dDpjfT1yLnBhcnNlKG8pOyIuanMiIT09YyYmIi5tanMiIT09YyYmIi5janMiIT09Y3x8KHM9cy5zbGljZSgwLC0xKmMubGVuZ3RoKSk7Y29uc3QgdT1kZWNvZGVVUklDb21wb25lbnQocyk7aXx8KGk9Ii4iKTtjb25zdCBhPWkubGFzdEluZGV4T2YoIi9ub2RlX21vZHVsZXMiKTtpZihhPi0xKXJldHVybmAke2kuc2xpY2UoYSsxNCkucmVwbGFjZSgvXC8vZywiLiIpfToke3V9YDtpZihpLnN0YXJ0c1dpdGgoZSkpe2NvbnN0IHQ9aS5zbGljZShlLmxlbmd0aCsxKS5yZXBsYWNlKC9cLy9nLCIuIik7cmV0dXJuIHQ/YCR7dH06JHt1fWA6dX1yZXR1cm4gdX19KHNuLmFwcFJvb3RQYXRoKTooKT0+e30sYz1pLm1hcCh0PT5mdW5jdGlvbih0LG4sZSl7Y29uc3Qgcj1uP24ucmVwbGFjZSgvXmZpbGU6XC9cLy8sIiIpOnZvaWQgMCxvPXQubG9jYXRpb24uY29sdW1uTnVtYmVyP3QubG9jYXRpb24uY29sdW1uTnVtYmVyKzE6dm9pZCAwLGk9dC5sb2NhdGlvbi5saW5lTnVtYmVyP3QubG9jYXRpb24ubGluZU51bWJlcisxOnZvaWQgMDtyZXR1cm57ZmlsZW5hbWU6cixtb2R1bGU6ZShyKSxmdW5jdGlvbjp0LmZ1bmN0aW9uTmFtZXx8Ij8iLGNvbG5vOm8sbGluZW5vOmksaW5fYXBwOnI/S3Qocik6dm9pZCAwfX0odCxlLmdldCh0LmxvY2F0aW9uLnNjcmlwdElkKSxzKSksdT1zZXRUaW1lb3V0KCgpPT57eW4oYykudGhlbihudWxsLCgpPT57Zm4oIlNlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZC4iKX0pfSw1ZTMpO24ucG9zdCgiUnVudGltZS5ldmFsdWF0ZSIse2V4cHJlc3Npb246Imdsb2JhbC5fX1NFTlRSWV9HRVRfU0NPUEVTX18oKTsiLHNpbGVudDohMCxyZXR1cm5CeVZhbHVlOiEwfSwodCxlKT0+e3QmJmZuKGBFcnJvciBleGVjdXRpbmcgc2NyaXB0OiAnJHt0Lm1lc3NhZ2V9J2ApLGNsZWFyVGltZW91dCh1KTtjb25zdCByPWU/LnJlc3VsdD9lLnJlc3VsdC52YWx1ZTp2b2lkIDA7bi5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKSxuLnBvc3QoIkRlYnVnZ2VyLmRpc2FibGUiKSx5bihjLHIpLnRoZW4obnVsbCwoKT0+e2ZuKCJTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuIil9KX0pfWNhdGNoKHQpe3Rocm93IG4ucG9zdCgiRGVidWdnZXIucmVzdW1lIiksbi5wb3N0KCJEZWJ1Z2dlci5kaXNhYmxlIiksdH19KSxibj0oKT0+e3RyeXtuLnBvc3QoIkRlYnVnZ2VyLmVuYWJsZSIsKCk9PntuLnBvc3QoIkRlYnVnZ2VyLnBhdXNlIil9KX1jYXRjaHt9fX1jb25zdHtwb2xsOnZufT1mdW5jdGlvbih0LG4sZSxyKXtjb25zdCBvPXQoKTtsZXQgaT0hMSxzPSEwO3JldHVybiBzZXRJbnRlcnZhbCgoKT0+e2NvbnN0IHQ9by5nZXRUaW1lTXMoKTshMT09PWkmJnQ+bitlJiYoaT0hMCxzJiZyKCkpLHQ8bitlJiYoaT0hMSl9LDIwKSx7cG9sbDooKT0+e28ucmVzZXQoKX0sZW5hYmxlZDp0PT57cz10fX19KGZ1bmN0aW9uKCl7bGV0IHQ9cHJvY2Vzcy5ocnRpbWUoKTtyZXR1cm57Z2V0VGltZU1zOigpPT57Y29uc3RbbixlXT1wcm9jZXNzLmhydGltZSh0KTtyZXR1cm4gTWF0aC5mbG9vcigxZTMqbitlLzFlNil9LHJlc2V0OigpPT57dD1wcm9jZXNzLmhydGltZSgpfX19LHNuLnBvbGxJbnRlcnZhbCxzbi5hbnJUaHJlc2hvbGQsZnVuY3Rpb24oKXtmbigiV2F0Y2hkb2cgdGltZW91dCIpLGJuPyhmbigiUGF1c2luZyBkZWJ1Z2dlciB0byBjYXB0dXJlIHN0YWNrIHRyYWNlIiksYm4oKSk6KGZuKCJDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlIikseW4oKS50aGVuKG51bGwsKCk9PntmbigiU2VuZGluZyBBTlIgZXZlbnQgZmFpbGVkIG9uIHdhdGNoZG9nIHRpbWVvdXQuIil9KSl9KTtlPy5vbigibWVzc2FnZSIsdD0+e3Quc2Vzc2lvbiYmKGNuPVkodC5zZXNzaW9uKSksdC5kZWJ1Z0ltYWdlcyYmKGFuPXQuZGVidWdJbWFnZXMpLHZuKCl9KTs=";function c(e,...t){i.debug.log(`[ANR] ${e}`,...t)}function p(){let e=i.getCombinedScopeData(i.getIsolationScope(),i.getCurrentScope());return e.attachments=[],e.eventProcessors=[],e}async function _(e){let t={message:"ANR"},n={};for(let r of e.getEventProcessors()){if(null===t)break;t=await r(t,n)}return t?.contexts||{}}async function T(t,n){let r=t.getDsn();if(!r)return()=>{};let a=await _(t);delete a.app?.app_memory,delete a.device?.free_memory;let s=t.getOptions(),l=t.getSdkMetadata()||{};l.sdk&&(l.sdk.integrations=s.integrations.map(e=>e.name));let p={debug:i.debug.isEnabled(),dsn:r,tunnel:s.tunnel,environment:s.environment||"production",release:s.release,dist:s.dist,sdkMetadata:l,appRootPath:n.appRootPath,pollInterval:n.pollInterval||50,anrThreshold:n.anrThreshold||5e3,captureStackTrace:!!n.captureStackTrace,maxAnrEvents:n.maxAnrEvents||1,staticTags:n.staticTags||{},contexts:a};if(p.captureStackTrace){let t=await e.A(234177);t.url()||t.open(0)}let T=new o.Worker(new URL(`data:application/javascript;base64,${u}`),{workerData:p,execArgv:[],env:{...process.env,NODE_OPTIONS:void 0}});process.on("exit",()=>{T.terminate()});let d=setInterval(()=>{try{let e=i.getIsolationScope().getSession(),t=e?{...e,toJSON:void 0}:void 0;T.postMessage({session:t,debugImages:i.getFilenameToDebugIdMap(s.stackParser)})}catch{}},p.pollInterval);return d.unref(),T.on("message",e=>{"session-ended"===e&&(c("ANR event sent from ANR worker. Clearing session in this thread."),i.getIsolationScope().setSession(void 0))}),T.once("error",e=>{clearInterval(d),c("ANR worker error",e)}),T.once("exit",e=>{clearInterval(d),c("ANR worker exit",e)}),T.unref(),()=>{T.terminate(),clearInterval(d)}}n.anrIntegration=i.defineIntegration((e={})=>{let t,n;if(a.NODE_VERSION.major<16||16===a.NODE_VERSION.major&&a.NODE_VERSION.minor<17)throw Error("ANR detection requires Node 16.17.0 or later");return i.GLOBAL_OBJ.__SENTRY_GET_SCOPES__=p,{name:"Anr",startWorker:()=>{!t&&n&&(t=T(n,e))},stopWorker:()=>{t&&t.then(e=>{e(),t=void 0})},async setup(t){n=t,e.captureStackTrace&&await s.isDebuggerEnabled()&&(i.debug.warn("ANR captureStackTrace has been disabled because the debugger was already enabled"),e.captureStackTrace=!1),setImmediate(()=>this.startWorker())}}}),n.base64WorkerScript=u,n.disableAnrDetectionForCallback=function(e){let t=i.getClient()?.getIntegrationByName("Anr");if(!t)return e();t.stopWorker();let n=e();return l(n)?n.finally(()=>t.startWorker()):(t.startWorker(),n)}},770905,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(812057),o=e.r(976285);n.captureLog=function(e,...t){let[n,i,a,s]=t;if(Array.isArray(i)){let t={...a};t["sentry.message.template"]=n,i.forEach((e,n)=>{t[`sentry.message.parameter.${n}`]=e});let l=r.format(n,...i);o._INTERNAL_captureLog({level:e,message:l,attributes:t},s?.scope)}else o._INTERNAL_captureLog({level:e,message:n,attributes:i},a?.scope??s?.scope)}},664181,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(770905);n.fmt=e.r(976285).fmt,n.debug=function(...e){r.captureLog("debug",...e)},n.error=function(...e){r.captureLog("error",...e)},n.fatal=function(...e){r.captureLog("fatal",...e)},n.info=function(...e){r.captureLog("info",...e)},n.trace=function(...e){r.captureLog("trace",...e)},n.warn=function(...e){r.captureLog("warn",...e)}},140469,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(60438),o=e.r(976285);n.nodeRuntimeMetricsIntegration=o.defineIntegration((e={})=>{let t,n,i,a,s=e.collectionIntervalMs??3e4,l={cpuUtilization:!0,memHeapUsed:!0,memHeapTotal:!0,memRss:!0,eventLoopDelayP50:!0,eventLoopDelayP99:!0,eventLoopUtilization:!0,uptime:!0,cpuTime:!1,memExternal:!1,eventLoopDelayMin:!1,eventLoopDelayMax:!1,eventLoopDelayMean:!1,eventLoopDelayP90:!1,...e.collect},u=l.eventLoopDelayP99||l.eventLoopDelayMin||l.eventLoopDelayMax||l.eventLoopDelayMean||l.eventLoopDelayP50||l.eventLoopDelayP90,c=l.cpuUtilization||l.cpuTime,p=0,_=e=>Math.max(0,(e-1e7)/1e9),T={attributes:{"sentry.origin":"auto.node.runtime_metrics"}},d={unit:"byte",attributes:{"sentry.origin":"auto.node.runtime_metrics"}},E={unit:"second",attributes:{"sentry.origin":"auto.node.runtime_metrics"}};function S(){let e=o._INTERNAL_safeDateNow(),t=e-p;if(c&&void 0!==n){let e=process.cpuUsage(n);l.cpuTime&&(o.metrics.gauge("node.runtime.cpu.user",e.user/1e6,E),o.metrics.gauge("node.runtime.cpu.system",e.system/1e6,E)),l.cpuUtilization&&t>0&&o.metrics.gauge("node.runtime.cpu.utilization",(e.user+e.system)/(1e3*t),T),n=process.cpuUsage()}if(l.memRss||l.memHeapUsed||l.memHeapTotal||l.memExternal){let e=process.memoryUsage();l.memRss&&o.metrics.gauge("node.runtime.mem.rss",e.rss,d),l.memHeapUsed&&o.metrics.gauge("node.runtime.mem.heap_used",e.heapUsed,d),l.memHeapTotal&&o.metrics.gauge("node.runtime.mem.heap_total",e.heapTotal,d),l.memExternal&&(o.metrics.gauge("node.runtime.mem.external",e.external,d),o.metrics.gauge("node.runtime.mem.array_buffers",e.arrayBuffers,d))}if(u&&a&&(l.eventLoopDelayMin&&o.metrics.gauge("node.runtime.event_loop.delay.min",_(a.min),E),l.eventLoopDelayMax&&o.metrics.gauge("node.runtime.event_loop.delay.max",_(a.max),E),l.eventLoopDelayMean&&o.metrics.gauge("node.runtime.event_loop.delay.mean",_(a.mean),E),l.eventLoopDelayP50&&o.metrics.gauge("node.runtime.event_loop.delay.p50",_(a.percentile(50)),E),l.eventLoopDelayP90&&o.metrics.gauge("node.runtime.event_loop.delay.p90",_(a.percentile(90)),E),l.eventLoopDelayP99&&o.metrics.gauge("node.runtime.event_loop.delay.p99",_(a.percentile(99)),E),a.reset()),l.eventLoopUtilization&&void 0!==i){let e=r.performance.eventLoopUtilization(),t=r.performance.eventLoopUtilization(e,i);o.metrics.gauge("node.runtime.event_loop.utilization",t.utilization,T),i=e}l.uptime&&t>0&&o.metrics.count("node.runtime.process.uptime",t/1e3,E),p=e}return{name:"NodeRuntimeMetrics",setup(){if(u){a?.disable();try{(a=r.monitorEventLoopDelay({resolution:10})).enable()}catch{a=void 0}}c&&(n=process.cpuUsage()),l.eventLoopUtilization&&(i=r.performance.eventLoopUtilization()),p=o._INTERNAL_safeDateNow(),t&&clearInterval(t),t=o._INTERNAL_safeUnref(setInterval(S,s))}}})},573841,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(747535),i=e.r(770905),a=["trace","debug","info","warn","error","fatal"],s=Symbol.for("level"),l=Symbol.for("message"),u=Symbol.for("splat"),c={silly:"trace",debug:"debug",verbose:"debug",http:"debug",info:"info",notice:"info",warn:"warn",warning:"warn",error:"error",emerg:"fatal",alert:"fatal",crit:"fatal"};n.createSentryWinstonTransport=function(e,t){return class extends e{constructor(e){super(e),this._levels=new Set(t?.levels??a)}log(e,n){try{var a;if(setImmediate(()=>{this.emit("logged",e)}),a=e,"object"!=typeof a||null==a)return;let n=e[s],{level:p,message:_,timestamp:T,...d}=e;d[s]=void 0,d[l]=void 0,d[u]=void 0;let E=t?.customLevelMap?.[n],S=c[n],A=E??S??"info";this._levels.has(A)?i.captureLog(A,_,{...d,"sentry.origin":"auto.log.winston"}):E||S||!o.DEBUG_BUILD||r.debug.log(`Winston log level ${n} is not captured by Sentry. Please add ${n} to the "customLevelMap" option of the Sentry Winston transport.`)}catch{}n&&n()}}}},535302,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(677652),o=e.r(976285),i=Symbol("sentry-track-pino-logger");function a(e,t,n){let r=Object.getOwnPropertySymbols(e),o=`Symbol(${t})`;for(let t of r)if(t.toString()===o){let r=e[t];return"string"==typeof r?r:n}return n}let s={levels:[],handled:!0},l={levels:["trace","debug","info","warn","error","fatal"]};n.pinoIntegration=Object.assign(o.defineIntegration((e={})=>{let t={autoInstrument:!1!==e.autoInstrument,error:{...s,...e.error},log:{...l,...e.log}};return{name:"Pino",setup:e=>{let n=!!e.getOptions().enableLogs;r.tracingChannel("pino_asJson").end.subscribe(e=>{let{instance:r,arguments:s,result:l}=e;!function(e,r,s){let l;if("track"!==(l=e[i])&&("ignore"===l||!t.autoInstrument))return;let u=function(e){let{level:t,time:n,pid:r,hostname:o,...i}=e;return i}(s),[c,p,_]=r,T=e?.levels?.labels?.[_]||"info",d=a(e,"pino.messageKey","msg"),E=p||u?.[d]||"";if(n&&t.log.levels.includes(T)){let e={...u,"sentry.origin":"auto.log.pino","pino.logger.level":_};o._INTERNAL_captureLog({level:T,message:E,attributes:e})}if(t.error.levels.includes(T)){let n={level:o.severityLevelFromString(T)};o.withScope(r=>{r.addEventProcessor(e=>(e.logger="pino",o.addExceptionMechanism(e,{handled:t.error.handled,type:"auto.log.pino"}),e));let i=c[a(e,"pino.errorKey","err")];i?o.captureException(i,n):o.captureMessage(E,n)})}}(r,s,JSON.parse(l))})}}}),{trackLogger(e){e&&"object"==typeof e&&"levels"in e&&(e[i]="track")},untrackLogger(e){e&&"object"==typeof e&&"levels"in e&&(e[i]="ignore")}})},167983,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.addOriginToSpan=function(e,t){e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,t)}},997624,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.getRequestUrl=function(e){let t=e.protocol||"",n=e.hostname||e.host||"",r=!e.port||80===e.port||443===e.port||/^(.*):(\d+)$/.test(n)?"":`:${e.port}`,o=e.path?e.path:"/";return`${t}//${n}${r}${o}`}},880191,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];n.replaceCronNames=function(e){return r.reduce((e,[t,n])=>e.replace(RegExp(t,"gi"),n),e)}},990611,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(880191),i="Automatic instrumentation of CronJob only supports crontab string";n.instrumentCron=function(e,t){let n=!1;return new Proxy(e,{construct(e,a){let[s,l,u,c,p,..._]=a;if("string"!=typeof s)throw Error(i);if(n)throw Error(`A job named '${t}' has already been scheduled`);n=!0;let T=o.replaceCronNames(s);return new e(s,async function(e,n){return r.withMonitor(t,async()=>{try{await l(e,n)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),e}},{schedule:{type:"crontab",value:T},timezone:p||void 0})},u,c,p,..._)},get:(e,a)=>"from"===a?a=>{let{cronTime:s,onTick:l,timeZone:u}=a;if("string"!=typeof s)throw Error(i);if(n)throw Error(`A job named '${t}' has already been scheduled`);n=!0;let c=o.replaceCronNames(s);return a.onTick=async(e,n)=>r.withMonitor(t,async()=>{try{await l(e,n)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),e}},{schedule:{type:"crontab",value:c},timezone:u||void 0}),e.from(a)}:e[a]})}},21175,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(880191);n.instrumentNodeCron=function(e,t={}){return new Proxy(e,{get:(e,n)=>"schedule"===n&&e.schedule?new Proxy(e.schedule,{apply(e,n,i){let[a,s,l]=i,u=l?.name,c=l?.timezone;if(!u)throw Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');let p=async(...e)=>r.withMonitor(u,async()=>{try{return await s(...e)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.node-cron.instrumentNodeCron"}}),e}},{schedule:{type:"crontab",value:o.replaceCronNames(a)},timezone:c,...t});return e.apply(n,[a,p,l])}}):e[n]})}},429710,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(880191);n.instrumentNodeSchedule=function(e){return new Proxy(e,{get:(e,t)=>"scheduleJob"===t?new Proxy(e.scheduleJob,{apply(e,t,n){let[i,a,s]=n;if("string"!=typeof i||"string"!=typeof a||"function"!=typeof s)throw Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");async function l(){return r.withMonitor(i,async()=>{await s?.()},{schedule:{type:"crontab",value:o.replaceCronNames(a)}})}return e.apply(t,[i,a,l])}}):e[t]})}},206871,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(990611),o=e.r(21175),i=e.r(429710);n.cron={instrumentCron:r.instrumentCron,instrumentNodeCron:o.instrumentNodeCron,instrumentNodeSchedule:i.instrumentNodeSchedule}},625331,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(780200),o=e.r(391499),i=e.r(773766),a=e.r(866240),s=e.r(642089),l=e.r(725875),u=e.r(252436),c=e.r(313416),p=e.r(553838),_=e.r(576071),T=e.r(211587),d=e.r(367920),E=e.r(145844),S=e.r(687123),A=e.r(779607),g=e.r(498721),m=e.r(976285),h=e.r(664181),R=e.r(356044),f=e.r(140469),N=e.r(179334),I=e.r(179508),O=e.r(950051),y=e.r(621353),b=e.r(438647),C=e.r(254565),M=e.r(439390),P=e.r(475008),L=e.r(573841),v=e.r(535302),U=e.r(315564),D=e.r(941438),G=e.r(167983),B=e.r(997624),x=e.r(652203),V=e.r(234848),w=e.r(709895),H=e.r(136001),k=e.r(206871),Y=e.r(860015);n.httpIntegration=r.httpIntegration,n.httpServerSpansIntegration=o.httpServerSpansIntegration,n.httpServerIntegration=i.httpServerIntegration,n.SentryHttpInstrumentation=a.SentryHttpInstrumentation,n.nativeNodeFetchIntegration=s.nativeNodeFetchIntegration,n.SentryNodeFetchInstrumentation=l.SentryNodeFetchInstrumentation,n.SentryContextManager=u.SentryContextManager,n.setupOpenTelemetryLogger=c.setupOpenTelemetryLogger,n.INSTRUMENTED=p.INSTRUMENTED,n.generateInstrumentOnce=p.generateInstrumentOnce,n.instrumentWhenWrapped=p.instrumentWhenWrapped,n.getDefaultIntegrations=_.getDefaultIntegrations,n.init=_.init,n.initWithoutDefaultIntegrations=_.initWithoutDefaultIntegrations,n.validateOpenTelemetrySetup=_.validateOpenTelemetrySetup,n.setIsolationScope=T.setIsolationScope,n.NodeClient=d.NodeClient,n.ensureIsWrapped=E.ensureIsWrapped,n.processSessionIntegration=S.processSessionIntegration,n.setNodeAsyncContextStrategy=A.setOpenTelemetryContextAsyncContextStrategy,n.anrIntegration=g.anrIntegration,n.disableAnrDetectionForCallback=g.disableAnrDetectionForCallback,n.SDK_VERSION=m.SDK_VERSION,n.SEMANTIC_ATTRIBUTE_SENTRY_OP=m.SEMANTIC_ATTRIBUTE_SENTRY_OP,n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=m.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=m.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=m.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n.Scope=m.Scope,n.addBreadcrumb=m.addBreadcrumb,n.addEventProcessor=m.addEventProcessor,n.addIntegration=m.addIntegration,n.captureCheckIn=m.captureCheckIn,n.captureConsoleIntegration=m.captureConsoleIntegration,n.captureEvent=m.captureEvent,n.captureException=m.captureException,n.captureFeedback=m.captureFeedback,n.captureMessage=m.captureMessage,n.captureSession=m.captureSession,n.close=m.close,n.consoleIntegration=m.consoleIntegration,n.consoleLoggingIntegration=m.consoleLoggingIntegration,n.continueTrace=m.continueTrace,n.createConsolaReporter=m.createConsolaReporter,n.createTransport=m.createTransport,n.dedupeIntegration=m.dedupeIntegration,n.endSession=m.endSession,n.envToBool=m.envToBool,n.eventFiltersIntegration=m.eventFiltersIntegration,n.extraErrorDataIntegration=m.extraErrorDataIntegration,n.featureFlagsIntegration=m.featureFlagsIntegration,n.flush=m.flush,n.functionToStringIntegration=m.functionToStringIntegration,n.getActiveSpan=m.getActiveSpan,n.getClient=m.getClient,n.getCurrentScope=m.getCurrentScope,n.getGlobalScope=m.getGlobalScope,n.getIsolationScope=m.getIsolationScope,n.getRootSpan=m.getRootSpan,n.getSpanDescendants=m.getSpanDescendants,n.getSpanStatusFromHttpCode=m.getSpanStatusFromHttpCode,n.getTraceData=m.getTraceData,n.getTraceMetaTags=m.getTraceMetaTags,n.inboundFiltersIntegration=m.inboundFiltersIntegration,n.instrumentSupabaseClient=m.instrumentSupabaseClient,n.isEnabled=m.isEnabled,n.isInitialized=m.isInitialized,n.lastEventId=m.lastEventId,n.linkedErrorsIntegration=m.linkedErrorsIntegration,n.metrics=m.metrics,n.parameterize=m.parameterize,n.profiler=m.profiler,n.requestDataIntegration=m.requestDataIntegration,n.rewriteFramesIntegration=m.rewriteFramesIntegration,n.setContext=m.setContext,n.setCurrentClient=m.setCurrentClient,n.setExtra=m.setExtra,n.setExtras=m.setExtras,n.setHttpStatus=m.setHttpStatus,n.setMeasurement=m.setMeasurement,n.setTag=m.setTag,n.setTags=m.setTags,n.setUser=m.setUser,n.spanToBaggageHeader=m.spanToBaggageHeader,n.spanToJSON=m.spanToJSON,n.spanToTraceHeader=m.spanToTraceHeader,n.startInactiveSpan=m.startInactiveSpan,n.startNewTrace=m.startNewTrace,n.startSession=m.startSession,n.startSpan=m.startSpan,n.startSpanManual=m.startSpanManual,n.supabaseIntegration=m.supabaseIntegration,n.suppressTracing=m.suppressTracing,n.trpcMiddleware=m.trpcMiddleware,n.updateSpanName=m.updateSpanName,n.withActiveSpan=m.withActiveSpan,n.withIsolationScope=m.withIsolationScope,n.withMonitor=m.withMonitor,n.withScope=m.withScope,n.wrapMcpServerWithSentry=m.wrapMcpServerWithSentry,n.zodErrorsIntegration=m.zodErrorsIntegration,n.logger=h,n.nodeContextIntegration=R.nodeContextIntegration,n.nodeRuntimeMetricsIntegration=f.nodeRuntimeMetricsIntegration,n.contextLinesIntegration=N.contextLinesIntegration,n.localVariablesIntegration=I.localVariablesIntegration,n.modulesIntegration=O.modulesIntegration,n.onUncaughtExceptionIntegration=y.onUncaughtExceptionIntegration,n.onUnhandledRejectionIntegration=b.onUnhandledRejectionIntegration,n.spotlightIntegration=C.spotlightIntegration,n.systemErrorIntegration=M.systemErrorIntegration,n.childProcessIntegration=P.childProcessIntegration,n.createSentryWinstonTransport=L.createSentryWinstonTransport,n.pinoIntegration=v.pinoIntegration,n.defaultStackParser=U.defaultStackParser,n.getSentryRelease=U.getSentryRelease,n.createGetModuleFromFilename=D.createGetModuleFromFilename,n.addOriginToSpan=G.addOriginToSpan,n.getRequestUrl=B.getRequestUrl,n.initializeEsmLoader=x.initializeEsmLoader,n.isCjs=V.isCjs,n.createMissingInstrumentationContext=w.createMissingInstrumentationContext,n.makeNodeTransport=H.makeNodeTransport,n.cron=k.cron,n.NODE_VERSION=Y.NODE_VERSION},738190,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(693949),i=e.r(976285),a=e.r(625331),s="Http",l="@opentelemetry_sentry-patched/instrumentation-http",u=22===a.NODE_VERSION.major&&a.NODE_VERSION.minor>=12||23===a.NODE_VERSION.major&&a.NODE_VERSION.minor>=2||a.NODE_VERSION.major>=24,c=a.generateInstrumentOnce(`${s}.sentry`,e=>new a.SentryHttpInstrumentation(e)),p=a.generateInstrumentOnce(s,e=>{let t=new o.HttpInstrumentation({...e,disableIncomingRequestInstrumentation:!0});try{t._diag=r.diag.createComponentLogger({namespace:l}),t.instrumentationName=l}catch{}try{let e={get:()=>!1,set:()=>{}};Object.defineProperty(t,"_httpPatched",e),Object.defineProperty(t,"_httpsPatched",e)}catch{}return t});function _(e,t={}){return"boolean"==typeof e.spans?e.spans:!t.skipOpenTelemetrySetup&&(!!i.hasSpansEnabled(t)||!u)}let T=i.defineIntegration((e={})=>{let t=e.spans??!0,n=e.disableIncomingRequestSpans,r={sessions:e.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:e.sessionFlushingDelayMS,ignoreRequestBody:e.ignoreIncomingRequestBody,maxRequestBodySize:e.maxIncomingRequestBodySize},o={ignoreIncomingRequests:e.ignoreIncomingRequests,ignoreStaticAssets:e.ignoreStaticAssets,ignoreStatusCodes:e.dropSpansForIncomingRequestStatusCodes,instrumentation:e.instrumentation,onSpanCreated:e.incomingRequestSpanHook},l=a.httpServerIntegration(r),T=a.httpServerSpansIntegration(o),d=t&&!n;return{name:s,setup(e){let t=e.getOptions();d&&i.hasSpansEnabled(t)&&T.setup(e)},setupOnce(){let t=_(e,i.getClient()?.getOptions()||{});l.setupOnce(),c({breadcrumbs:e.breadcrumbs,propagateTraceInOutgoingRequests:"boolean"==typeof e.tracePropagation?e.tracePropagation:u||!t,createSpansForOutgoingRequests:u,spans:e.spans,ignoreOutgoingRequests:e.ignoreOutgoingRequests,outgoingRequestHook:(t,n)=>{let r=a.getRequestUrl(n);if(r.startsWith("data:")){let e=i.stripDataUrlContent(r);t.setAttribute("http.url",e),t.setAttribute(i.SEMANTIC_ATTRIBUTE_URL_FULL,e),t.updateName(`${n.method||"GET"} ${e}`)}e.instrumentation?.requestHook?.(t,n)},outgoingResponseHook:e.instrumentation?.responseHook,outgoingRequestApplyCustomAttributes:e.instrumentation?.applyCustomAttributesOnSpan}),t&&p(function(e={}){return{disableOutgoingRequestInstrumentation:u,ignoreOutgoingRequestHook:t=>{let n=a.getRequestUrl(t);if(!n)return!1;let r=e.ignoreOutgoingRequests;return!!r?.(n,t)},requireParentforOutgoingSpans:!1,requestHook:(t,n)=>{a.addOriginToSpan(t,"auto.http.otel.http");let r=a.getRequestUrl(n);if(r.startsWith("data:")){let e=i.stripDataUrlContent(r);t.setAttribute("http.url",e),t.setAttribute(i.SEMANTIC_ATTRIBUTE_URL_FULL,e),t.updateName(`${n.method||"GET"} ${e}`)}e.instrumentation?.requestHook?.(t,n)},responseHook:(t,n)=>{e.instrumentation?.responseHook?.(t,n)},applyCustomAttributesOnSpan:(t,n,r)=>{e.instrumentation?.applyCustomAttributesOnSpan?.(t,n,r)}}}(e))},processEvent:e=>T.processEvent(e)}});n._shouldUseOtelHttpInstrumentation=_,n.httpIntegration=T,n.instrumentOtelHttp=p,n.instrumentSentryHttp=c},105458,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.24.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-undici"},383757,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.UndiciInstrumentation=void 0;let r=e.r(154993),o=e.r(792509),i=e.r(204780),a=e.r(357762),s=e.r(385692),l=e.r(808119),u=e.r(105458);class c extends i.InstrumentationBase{_recordFromReq=new WeakMap;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e)}init(){}disable(){super.disable(),this._channelSubs.forEach(e=>e.unsubscribe()),this._channelSubs.length=0}enable(){super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0||(this.subscribeToChannel("undici:request:create",this.onRequestCreated.bind(this)),this.subscribeToChannel("undici:client:sendHeaders",this.onRequestHeaders.bind(this)),this.subscribeToChannel("undici:request:headers",this.onResponseHeaders.bind(this)),this.subscribeToChannel("undici:request:trailers",this.onDone.bind(this)),this.subscribeToChannel("undici:request:error",this.onError.bind(this)))}_updateMetricInstruments(){this._httpClientDurationHistogram=this.meter.createHistogram(l.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Measures the duration of outbound HTTP requests.",unit:"s",valueType:a.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10]}})}subscribeToChannel(e,t){let n,[o,i]=process.version.replace("v","").split(".").map(e=>Number(e));if(o>18||18===o&&i>=19)r.subscribe?.(e,t),n=()=>r.unsubscribe?.(e,t);else{let o=r.channel(e);o.subscribe(t),n=()=>o.unsubscribe(t)}this._channelSubs.push({name:e,unsubscribe:n})}parseRequestHeaders(e){let t=new Map;if(Array.isArray(e.headers))for(let n=0;n!u||"CONNECT"===e.method||r.ignoreRequestHook?.(e),e=>e&&this._diag.error("caught ignoreRequestHook error: ",e),!0))return;let c=(0,s.hrTime)();try{t=new o.URL(e.path,e.origin)}catch(e){this._diag.warn("could not determine url.full:",e);return}let p=t.protocol.replace(":",""),_=this.getRequestMethod(e.method),T={[l.ATTR_HTTP_REQUEST_METHOD]:_,[l.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]:e.method,[l.ATTR_URL_FULL]:t.toString(),[l.ATTR_URL_PATH]:t.pathname,[l.ATTR_URL_QUERY]:t.search,[l.ATTR_URL_SCHEME]:p},d=t.hostname,E=t.port||({https:"443",http:"80"})[p];T[l.ATTR_SERVER_ADDRESS]=d,E&&!isNaN(Number(E))&&(T[l.ATTR_SERVER_PORT]=Number(E));let S=this.parseRequestHeaders(e).get("user-agent");if(S){let e=Array.isArray(S)?S[S.length-1]:S;T[l.ATTR_USER_AGENT_ORIGINAL]=e}let A=(0,i.safeExecuteInTheMiddle)(()=>r.startSpanHook?.(e),e=>e&&this._diag.error("caught startSpanHook error: ",e),!0);A&&Object.entries(A).forEach(([e,t])=>{T[e]=t});let g=a.context.active(),m=a.trace.getSpan(g);n=!r.requireParentforSpans||m&&a.trace.isSpanContextValid(m.spanContext())?this.tracer.startSpan("_OTHER"===_?"HTTP":_,{kind:a.SpanKind.CLIENT,attributes:T},g):a.trace.wrapSpanContext(a.INVALID_SPAN_CONTEXT),(0,i.safeExecuteInTheMiddle)(()=>r.requestHook?.(n,e),e=>e&&this._diag.error("caught requestHook error: ",e),!0);let h=a.trace.setSpan(a.context.active(),n),R={};a.propagation.inject(h,R);let f=Object.entries(R);for(let t=0;te.toLowerCase()));for(let[n,r]of this.parseRequestHeaders(e).entries())if(t.has(n)){let e=Array.isArray(r)?r:[r];s[`http.request.header.${n}`]=e}}o.setAttributes(s)}onResponseHeaders({request:e,response:t}){let n=this._recordFromReq.get(e);if(!n)return;let{span:r,attributes:o}=n,s={[l.ATTR_HTTP_RESPONSE_STATUS_CODE]:t.statusCode},u=this.getConfig();if((0,i.safeExecuteInTheMiddle)(()=>u.responseHook?.(r,{request:e,response:t}),e=>e&&this._diag.error("caught responseHook error: ",e),!0),u.headersToSpanAttributes?.responseHeaders){let e=new Set;u.headersToSpanAttributes?.responseHeaders.forEach(t=>e.add(t.toLowerCase()));for(let n=0;n=400?a.SpanStatusCode.ERROR:a.SpanStatusCode.UNSET}),n.attributes=Object.assign(o,s)}onDone({request:e}){let t=this._recordFromReq.get(e);if(!t)return;let{span:n,attributes:r,startTime:o}=t;n.end(),this._recordFromReq.delete(e),this.recordRequestDuration(r,o)}onError({request:e,error:t}){let n=this._recordFromReq.get(e);if(!n)return;let{span:r,attributes:o,startTime:i}=n;r.recordException(t),r.setStatus({code:a.SpanStatusCode.ERROR,message:t.message}),r.end(),this._recordFromReq.delete(e),o[l.ATTR_ERROR_TYPE]=t.message,this.recordRequestDuration(o,i)}recordRequestDuration(e,t){let n={};[l.ATTR_HTTP_RESPONSE_STATUS_CODE,l.ATTR_HTTP_REQUEST_METHOD,l.ATTR_SERVER_ADDRESS,l.ATTR_SERVER_PORT,l.ATTR_URL_SCHEME,l.ATTR_ERROR_TYPE].forEach(t=>{t in e&&(n[t]=e[t])});let r=(0,s.hrTimeToMilliseconds)((0,s.hrTimeDuration)(t,(0,s.hrTime)()))/1e3;this._httpClientDurationHistogram.record(r,n)}getRequestMethod(e){return e.toUpperCase()in{CONNECT:!0,OPTIONS:!0,HEAD:!0,GET:!0,POST:!0,PUT:!0,PATCH:!0,DELETE:!0,TRACE:!0,QUERY:!0}?e.toUpperCase():"_OTHER"}}n.UndiciInstrumentation=c},919221,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.UndiciInstrumentation=void 0;var r=e.r(383757);Object.defineProperty(n,"UndiciInstrumentation",{enumerable:!0,get:function(){return r.UndiciInstrumentation}})},354258,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(919221),o=e.r(976285),i=e.r(625331),a="NodeFetch",s=i.generateInstrumentOnce(a,r.UndiciInstrumentation,e=>p(e)),l=i.generateInstrumentOnce(`${a}.sentry`,i.SentryNodeFetchInstrumentation,e=>e),u=o.defineIntegration((e={})=>({name:"NodeFetch",setupOnce(){(function(e,t={}){return"boolean"==typeof e.spans?e.spans:!t.skipOpenTelemetrySetup&&o.hasSpansEnabled(t)})(e,o.getClient()?.getOptions())&&s(e),l(e)}}));function c(e,t="/"){let n=`${e}`;return n.endsWith("/")&&t.startsWith("/")?`${n}${t.slice(1)}`:n.endsWith("/")||t.startsWith("/")?`${n}${t}`:`${n}/${t}`}function p(e={}){return{requireParentforSpans:!1,ignoreRequestHook:t=>{let n=c(t.origin,t.path),r=e.ignoreOutgoingRequests;return!!(r&&n&&r(n))},startSpanHook:e=>{let t=c(e.origin,e.path);if(t.startsWith("data:")){let n=o.stripDataUrlContent(t);return{[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch","http.url":n,[o.SEMANTIC_ATTRIBUTE_URL_FULL]:n,[o.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]:`${e.method||"GET"} ${n}`}}return{[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch"}},requestHook:e.requestHook,responseHook:e.responseHook,headersToSpanAttributes:e.headersToSpanAttributes}}n._getConfigWithDefaults=p,n.nativeNodeFetchIntegration=u},866744,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.33.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-fs"},109429,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SYNC_FUNCTIONS=n.CALLBACK_FUNCTIONS=n.PROMISE_FUNCTIONS=void 0,n.PROMISE_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],n.CALLBACK_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","exists","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],n.SYNC_FUNCTIONS=["accessSync","appendFileSync","chmodSync","chownSync","copyFileSync","cpSync","existsSync","lchownSync","linkSync","lstatSync","lutimesSync","mkdirSync","mkdtempSync","opendirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","unlinkSync","utimesSync","writeFileSync"]},349982,(e,t,n)=>{"use strict";function r(e){let t=e.split(".");if(!(t.length>1))return[e];if(2!==t.length)throw Error(`Invalid member function name ${e}`);return t}Object.defineProperty(n,"__esModule",{value:!0}),n.indexFs=n.splitTwoLevels=void 0,n.splitTwoLevels=r,n.indexFs=function(e,t){if(!t)throw Error(JSON.stringify({member:t}));let[n,o]=r(t);return o?{objectToPatch:e[n],functionNameToPatch:o}:{objectToPatch:e,functionNameToPatch:n}}},982860,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.FsInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(866744),s=e.r(109429),l=e.r(224361),u=e.r(349982);function c(e,t){return Object.assign(e,t)}class p extends i.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return[new i.InstrumentationNodeModuleDefinition("fs",["*"],e=>{for(let t of s.SYNC_FUNCTIONS){let{objectToPatch:n,functionNameToPatch:r}=(0,u.indexFs)(e,t);(0,i.isWrapped)(n[r])&&this._unwrap(n,r),this._wrap(n,r,this._patchSyncFunction.bind(this,t))}for(let t of s.CALLBACK_FUNCTIONS){let{objectToPatch:n,functionNameToPatch:r}=(0,u.indexFs)(e,t);if((0,i.isWrapped)(n[r])&&this._unwrap(n,r),"exists"===t){this._wrap(n,r,this._patchExistsCallbackFunction.bind(this,t));continue}this._wrap(n,r,this._patchCallbackFunction.bind(this,t))}for(let t of s.PROMISE_FUNCTIONS)(0,i.isWrapped)(e.promises[t])&&this._unwrap(e.promises,t),this._wrap(e.promises,t,this._patchPromiseFunction.bind(this,t));return e},e=>{if(void 0!==e){for(let t of s.SYNC_FUNCTIONS){let{objectToPatch:n,functionNameToPatch:r}=(0,u.indexFs)(e,t);(0,i.isWrapped)(n[r])&&this._unwrap(n,r)}for(let t of s.CALLBACK_FUNCTIONS){let{objectToPatch:n,functionNameToPatch:r}=(0,u.indexFs)(e,t);(0,i.isWrapped)(n[r])&&this._unwrap(n,r)}for(let t of s.PROMISE_FUNCTIONS)(0,i.isWrapped)(e.promises[t])&&this._unwrap(e.promises,t)}}),new i.InstrumentationNodeModuleDefinition("fs/promises",["*"],e=>{for(let t of s.PROMISE_FUNCTIONS)(0,i.isWrapped)(e[t])&&this._unwrap(e,t),this._wrap(e,t,this._patchPromiseFunction.bind(this,t));return e},e=>{if(void 0!==e)for(let t of s.PROMISE_FUNCTIONS)(0,i.isWrapped)(e[t])&&this._unwrap(e,t)})]}_patchSyncFunction(e,t){let n=this;return c(function(...i){let a=r.context.active();if(!n._shouldTrace(a))return t.apply(this,i);if(!1===n._runCreateHook(e,{args:i}))return r.context.with((0,o.suppressTracing)(a),t,this,...i);let s=n.tracer.startSpan(`fs ${e}`);try{let l=r.context.with((0,o.suppressTracing)(r.trace.setSpan(a,s)),t,this,...i);return n._runEndHook(e,{args:i,span:s}),l}catch(t){throw s.recordException(t),s.setStatus({message:t.message,code:r.SpanStatusCode.ERROR}),n._runEndHook(e,{args:i,span:s,error:t}),t}finally{s.end()}},t)}_patchCallbackFunction(e,t){let n=this;return c(function(...i){let a=r.context.active();if(!n._shouldTrace(a))return t.apply(this,i);if(!1===n._runCreateHook(e,{args:i}))return r.context.with((0,o.suppressTracing)(a),t,this,...i);let s=i.length-1,l=i[s];if("function"!=typeof l)return t.apply(this,i);{let u=n.tracer.startSpan(`fs ${e}`);i[s]=r.context.bind(a,function(t){return t&&(u.recordException(t),u.setStatus({message:t.message,code:r.SpanStatusCode.ERROR})),n._runEndHook(e,{args:i,span:u,error:t}),u.end(),l.apply(this,arguments)});try{return r.context.with((0,o.suppressTracing)(r.trace.setSpan(a,u)),t,this,...i)}catch(t){throw u.recordException(t),u.setStatus({message:t.message,code:r.SpanStatusCode.ERROR}),n._runEndHook(e,{args:i,span:u,error:t}),u.end(),t}}},t)}_patchExistsCallbackFunction(e,t){let n=this,i=c(function(...i){let a=r.context.active();if(!n._shouldTrace(a))return t.apply(this,i);if(!1===n._runCreateHook(e,{args:i}))return r.context.with((0,o.suppressTracing)(a),t,this,...i);let s=i.length-1,l=i[s];if("function"!=typeof l)return t.apply(this,i);{let u=n.tracer.startSpan(`fs ${e}`);i[s]=r.context.bind(a,function(){return n._runEndHook(e,{args:i,span:u}),u.end(),l.apply(this,arguments)});try{return r.context.with((0,o.suppressTracing)(r.trace.setSpan(a,u)),t,this,...i)}catch(t){throw u.recordException(t),u.setStatus({message:t.message,code:r.SpanStatusCode.ERROR}),n._runEndHook(e,{args:i,span:u,error:t}),u.end(),t}}},t),a=function(e){return new Promise(t=>i(e,t))};return Object.defineProperty(a,"name",{value:e}),Object.defineProperty(i,l.promisify.custom,{value:a}),i}_patchPromiseFunction(e,t){let n=this;return c(async function(...i){let a=r.context.active();if(!n._shouldTrace(a))return t.apply(this,i);if(!1===n._runCreateHook(e,{args:i}))return r.context.with((0,o.suppressTracing)(a),t,this,...i);let s=n.tracer.startSpan(`fs ${e}`);try{let l=await r.context.with((0,o.suppressTracing)(r.trace.setSpan(a,s)),t,this,...i);return n._runEndHook(e,{args:i,span:s}),l}catch(t){throw s.recordException(t),s.setStatus({message:t.message,code:r.SpanStatusCode.ERROR}),n._runEndHook(e,{args:i,span:s,error:t}),t}finally{s.end()}},t)}_runCreateHook(...e){let{createHook:t}=this.getConfig();if("function"==typeof t)try{return t(...e)}catch(e){this._diag.error("caught createHook error",e)}return!0}_runEndHook(...e){let{endHook:t}=this.getConfig();if("function"==typeof t)try{t(...e)}catch(e){this._diag.error("caught endHook error",e)}}_shouldTrace(e){if((0,o.isTracingSuppressed)(e))return!1;let{requireParentSpan:t}=this.getConfig();return(!t||null!=r.trace.getSpan(e))&&!0}}n.FsInstrumentation=p},850653,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.FsInstrumentation=void 0;var r=e.r(982860);Object.defineProperty(n,"FsInstrumentation",{enumerable:!0,get:function(){return r.FsInstrumentation}})},174710,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(850653),o=e.r(976285),i=e.r(625331),a="FileSystem",s=o.defineIntegration((e={})=>({name:a,setupOnce(){i.generateInstrumentOnce(a,()=>new r.FsInstrumentation({requireParentSpan:!0,endHook(t,{args:n,span:r,error:i}){r.updateName(`fs.${t}`),r.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"file",[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.file.fs"}),e.recordErrorMessagesAsSpanAttributes&&("string"==typeof n[0]&&T.includes(t)?r.setAttribute("path_argument",n[0]):"string"==typeof n[0]&&"string"==typeof n[1]&&_.includes(t)?(r.setAttribute("target_argument",n[0]),r.setAttribute("path_argument",n[1])):"string"==typeof n[0]&&p.includes(t)?r.setAttribute("prefix_argument",n[0]):"string"==typeof n[0]&&"string"==typeof n[1]&&c.includes(t)?(r.setAttribute("existing_path_argument",n[0]),r.setAttribute("new_path_argument",n[1])):"string"==typeof n[0]&&"string"==typeof n[1]&&u.includes(t)?(r.setAttribute("src_argument",n[0]),r.setAttribute("dest_argument",n[1])):"string"==typeof n[0]&&"string"==typeof n[1]&&l.includes(t)&&(r.setAttribute("old_path_argument",n[0]),r.setAttribute("new_path_argument",n[1]))),i&&e.recordErrorMessagesAsSpanAttributes&&r.setAttribute("fs_error",i.message)}}))()}})),l=["rename","renameSync"],u=["copyFile","cp","copyFileSync","cpSync"],c=["link","linkSync"],p=["mkdtemp","mkdtempSync"],_=["symlink","symlinkSync"],T=["access","appendFile","chmod","chown","exists","mkdir","lchown","lstat","lutimes","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rm","rmdir","stat","truncate","unlink","utimes","writeFile","accessSync","appendFileSync","chmodSync","chownSync","existsSync","lchownSync","lstatSync","lutimesSync","opendirSync","mkdirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","rmdirSync","rmSync","statSync","truncateSync","unlinkSync","utimesSync","writeFileSync"];n.fsIntegration=s},418871,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.ExpressLayerType=void 0,(r=n.ExpressLayerType||(n.ExpressLayerType={})).ROUTER="router",r.MIDDLEWARE="middleware",r.REQUEST_HANDLER="request_handler"},2458,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).EXPRESS_TYPE="express.type",r.EXPRESS_NAME="express.name"},947389,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n._LAYERS_STORE_PROPERTY=n.kLayerPatched=void 0,n.kLayerPatched=Symbol("express-layer-patched"),n._LAYERS_STORE_PROPERTY="__ot_middlewares"},169560,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getActualMatchedRoute=n.getConstructedRoute=n.getLayerPath=n.asErrorAndMessage=n.isLayerIgnored=n.getLayerMetadata=n.getRouterPath=n.storeLayerPath=void 0;let r=e.r(418871),o=e.r(2458),i=e.r(947389);n.storeLayerPath=(e,t)=>(!1===Array.isArray(e[i._LAYERS_STORE_PROPERTY])&&Object.defineProperty(e,i._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),void 0===t)?{isLayerPathStored:!1}:(e[i._LAYERS_STORE_PROPERTY].push(t),{isLayerPathStored:!0}),n.getRouterPath=(e,t)=>{let r=t.handle?.stack?.[0];return r?.route?.path?`${e}${r.route.path}`:r?.handle?.stack?(0,n.getRouterPath)(e,r):e},n.getLayerMetadata=(e,t,i)=>{if("router"===t.name){let a=(0,n.getRouterPath)("",t)||i||e||"/";return{attributes:{[o.AttributeNames.EXPRESS_NAME]:a,[o.AttributeNames.EXPRESS_TYPE]:r.ExpressLayerType.ROUTER},name:`router - ${a}`}}return"bound dispatch"===t.name||"handle"===t.name?{attributes:{[o.AttributeNames.EXPRESS_NAME]:(e||i)??"request handler",[o.AttributeNames.EXPRESS_TYPE]:r.ExpressLayerType.REQUEST_HANDLER},name:`request handler${t.path?` - ${e||i}`:""}`}:{attributes:{[o.AttributeNames.EXPRESS_NAME]:t.name,[o.AttributeNames.EXPRESS_TYPE]:r.ExpressLayerType.MIDDLEWARE},name:`middleware - ${t.name}`}};let a=(e,t)=>{if("string"==typeof t)return t===e;if(t instanceof RegExp)return t.test(e);if("function"==typeof t)return t(e);throw TypeError("Pattern is in unsupported datatype")};n.isLayerIgnored=(e,t,n)=>{if(Array.isArray(n?.ignoreLayersType)&&n?.ignoreLayersType?.includes(t))return!0;if(!1===Array.isArray(n?.ignoreLayers))return!1;try{for(let t of n.ignoreLayers)if(a(e,t))return!0}catch(e){}return!1},n.asErrorAndMessage=e=>e instanceof Error?[e,e.message]:[String(e),String(e)],n.getLayerPath=e=>{let t=e[0];return Array.isArray(t)?t.map(e=>s(e)||"").join(","):s(t)};let s=e=>"string"==typeof e?e:e instanceof RegExp||"number"==typeof e?e.toString():void 0;function l(e){let t=(Array.isArray(e[i._LAYERS_STORE_PROPERTY])?e[i._LAYERS_STORE_PROPERTY]:[]).filter(e=>"/"!==e&&"/*"!==e);return 1===t.length&&"*"===t[0]?"*":t.join("").replace(/\/{2,}/g,"/")}n.getConstructedRoute=l,n.getActualMatchedRoute=function(e){var t;let n=Array.isArray(e[i._LAYERS_STORE_PROPERTY])?e[i._LAYERS_STORE_PROPERTY]:[];if(0===n.length)return;if(n.every(e=>"/"===e))return"/"===e.originalUrl?"/":void 0;let r=l(e);if("*"===r||r.includes("/")&&(r.includes(",")||r.includes("\\")||r.includes("*")||r.includes("[")))return r;let o=r.startsWith("/")?r:`/${r}`;return o.length>0&&(e.originalUrl===o||e.originalUrl.startsWith(o)||(t=o).includes(":")||t.includes("*"))?o:void 0}},913652,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-express"},473222,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ExpressInstrumentation=void 0;let r=e.r(385692),o=e.r(357762),i=e.r(418871),a=e.r(2458),s=e.r(169560),l=e.r(913652),u=e.r(204780),c=e.r(808119),p=e.r(947389);class _ extends u.InstrumentationBase{constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e)}init(){return[new u.InstrumentationNodeModuleDefinition("express",[">=4.0.0 <6"],e=>{let t="function"==typeof e?.Router?.prototype?.route,n=t?e.Router.prototype:e.Router;return(0,u.isWrapped)(n.route)&&this._unwrap(n,"route"),this._wrap(n,"route",this._getRoutePatch()),(0,u.isWrapped)(n.use)&&this._unwrap(n,"use"),this._wrap(n,"use",this._getRouterUsePatch()),(0,u.isWrapped)(e.application.use)&&this._unwrap(e.application,"use"),this._wrap(e.application,"use",this._getAppUsePatch(t)),e},e=>{if(void 0===e)return;let t="function"==typeof e?.Router?.prototype?.route?e.Router.prototype:e.Router;this._unwrap(t,"route"),this._unwrap(t,"use"),this._unwrap(e.application,"use")})]}_getRoutePatch(){let e=this;return function(t){return function(...n){let r=t.apply(this,n),o=this.stack[this.stack.length-1];return e._applyPatch(o,(0,s.getLayerPath)(n)),r}}}_getRouterUsePatch(){let e=this;return function(t){return function(...n){let r=t.apply(this,n),o=this.stack[this.stack.length-1];return e._applyPatch(o,(0,s.getLayerPath)(n)),r}}}_getAppUsePatch(e){let t=this;return function(n){return function(...r){let o=e?this.router:this._router,i=n.apply(this,r);if(o){let e=o.stack[o.stack.length-1];t._applyPatch(e,(0,s.getLayerPath)(r))}return i}}}_applyPatch(e,t){let n=this;!0!==e[p.kLayerPatched]&&(e[p.kLayerPatched]=!0,this._wrap(e,"handle",l=>{if(4===l.length)return l;let _=function(_,T){let{isLayerPathStored:d}=(0,s.storeLayerPath)(_,t),E=(0,s.getConstructedRoute)(_),S=(0,s.getActualMatchedRoute)(_),A={[c.ATTR_HTTP_ROUTE]:S},g=(0,s.getLayerMetadata)(E,e,t),m=g.attributes[a.AttributeNames.EXPRESS_TYPE],h=(0,r.getRPCMetadata)(o.context.active());if(h?.type===r.RPCType.HTTP&&(h.route=S),(0,s.isLayerIgnored)(g.name,m,n.getConfig()))return m===i.ExpressLayerType.MIDDLEWARE&&_[p._LAYERS_STORE_PROPERTY].pop(),l.apply(this,arguments);if(void 0===o.trace.getSpan(o.context.active()))return l.apply(this,arguments);let R=n._getSpanName({request:_,layerType:m,route:E},g.name),f=n.tracer.startSpan(R,{attributes:Object.assign(A,g.attributes)}),N=o.context.active(),I=o.trace.setSpan(N,f),{requestHook:O}=n.getConfig();O&&(0,u.safeExecuteInTheMiddle)(()=>O(f,{request:_,layerType:m,route:E}),e=>{e&&o.diag.error("express instrumentation: request hook failed",e)},!0);let y=!1;g.attributes[a.AttributeNames.EXPRESS_TYPE]===i.ExpressLayerType.ROUTER&&(f.end(),y=!0,I=N);let b=()=>{!1===y&&(y=!0,f.end())},C=Array.from(arguments),M=C.findIndex(e=>"function"==typeof e);M>=0&&(arguments[M]=function(){let e=arguments[0],t=![void 0,null,"route","router"].includes(e);if(!y&&t){let[t,n]=(0,s.asErrorAndMessage)(e);f.recordException(t),f.setStatus({code:o.SpanStatusCode.ERROR,message:n})}!1===y&&(y=!0,_.res?.removeListener("finish",b),f.end()),!(_.route&&t)&&d&&_[p._LAYERS_STORE_PROPERTY].pop();let n=C[M],r=o.context.active(),i=o.trace.getSpan(N),a=i?o.trace.setSpan(r,i):r;return o.context.bind(a,n).apply(this,arguments)});try{return o.context.bind(I,l).apply(this,arguments)}catch(n){let[e,t]=(0,s.asErrorAndMessage)(n);throw f.recordException(e),f.setStatus({code:o.SpanStatusCode.ERROR,message:t}),n}finally{y||T.once("finish",b)}};for(let e in l)Object.defineProperty(_,e,{get:()=>l[e],set(t){l[e]=t}});return _}))}_getSpanName(e,t){let{spanNameHook:n}=this.getConfig();if(!(n instanceof Function))return t;try{return n(e,t)??t}catch(e){return o.diag.error("express instrumentation: error calling span name rewrite hook",e),t}}}n.ExpressInstrumentation=_},873311,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.ExpressLayerType=n.ExpressInstrumentation=void 0;var r=e.r(473222);Object.defineProperty(n,"ExpressInstrumentation",{enumerable:!0,get:function(){return r.ExpressInstrumentation}});var o=e.r(418871);Object.defineProperty(n,"ExpressLayerType",{enumerable:!0,get:function(){return o.ExpressLayerType}});var i=e.r(2458);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return i.AttributeNames}})},866779,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.DEBUG_BUILD="u"{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(873311),o=e.r(976285),i=e.r(625331),a=e.r(866779),s="Express",l=i.generateInstrumentOnce(s,()=>new r.ExpressInstrumentation({requestHook:e=>{let t,n,r;return i.addOriginToSpan(e,"auto.http.otel.express"),(n=(t=o.spanToJSON(e).data)["express.type"])&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${n}.express`),void("string"==typeof(r=t["express.name"])&&e.updateName(r))},spanNameHook:(e,t)=>(function(e,t){if(o.getIsolationScope()===o.getDefaultIsolationScope())return a.DEBUG_BUILD&&o.debug.warn("Isolation scope is still default isolation scope - skipping setting transactionName"),t;if("request_handler"===e.layerType){let t=e.request,n=t.method?t.method.toUpperCase():"GET";o.getIsolationScope().setTransactionName(`${n} ${e.route}`)}return t})(e,t)})),u=o.defineIntegration(()=>({name:s,setupOnce(){l()}}));function c(e){return function(t,n,r,i){let a=o.httpRequestToRequestData(n);o.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:a}),(e?.shouldHandleError||function(e){let t;return((t=e.status||e.statusCode||e.status_code||e.output?.statusCode)?parseInt(t,10):500)>=500})(t)&&(r.sentry=o.captureException(t,{mechanism:{type:"auto.middleware.express",handled:!1}})),i(t)}}n.expressErrorHandler=c,n.expressIntegration=u,n.instrumentExpress=l,n.setupExpressErrorHandler=function(e,t){e.use(function(e,t,n){let r=o.httpRequestToRequestData(e);o.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:r}),n()}),e.use(c(t)),i.ensureIsWrapped(e.use,"express")}},682342,e=>{"use strict";e.s([],577208),e.i(577208);var t,n,r=e.i(545364),o=e.i(605809);let i=Symbol.for("io.opentelemetry.js.api.logs"),a=globalThis;class s{emit(e){}}let l=new s,u=new class{getLogger(e,t,n){return new s}};class c{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}emit(e){this._getLogger().emit(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider._getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):l}}class p{getLogger(e,t,n){var r;return null!=(r=this._getDelegateLogger(e,t,n))?r:new c(this,e,t,n)}_getDelegate(){var e;return null!=(e=this._delegate)?e:u}_setDelegate(e){this._delegate=e}_getDelegateLogger(e,t,n){var r;return null==(r=this._delegate)?void 0:r.getLogger(e,t,n)}}class _{constructor(){this._proxyLoggerProvider=new p}static getInstance(){return this._instance||(this._instance=new _),this._instance}setGlobalLoggerProvider(e){return a[i]?this.getLoggerProvider():(a[i]=t=>1===t?e:u,this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,t;return null!=(t=null==(e=a[i])?void 0:e.call(a,1))?t:this._proxyLoggerProvider}getLogger(e,t,n){return this.getLoggerProvider().getLogger(e,t,n)}disable(){delete a[i],this._proxyLoggerProvider=new p}}let T=_.getInstance();function d(e){let t=e.tracerProvider||r.trace.getTracerProvider(),n=e.meterProvider||o.metrics.getMeterProvider(),i=e.loggerProvider||T.getLoggerProvider(),a=e.instrumentations?.flat()??[];for(let e=0,r=a.length;e{a.forEach(e=>e.disable())}}var E=e.i(814747),S=e.i(224361),A=e.i(978116);let g=/^(?:v)?(?(?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-]+)*))?$/,m=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,h={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function R(e,t,n,r){if(t.includes("||")){for(let o of t.trim().split("||"))if(f(e,o,n,r))return!0;return!1}if(t.includes(" - ")){var o,i;o=t,i=r,t=o.replace(x,(e,t,n,r,o,a,s,l,u,c,p,_)=>(t=N(n)?"":N(r)?`>=${n}.0.0${i?.includePrerelease?"-0":""}`:N(o)?`>=${n}.${r}.0${i?.includePrerelease?"-0":""}`:a?`>=${t}`:`>=${t}${i?.includePrerelease?"-0":""}`,l=N(u)?"":N(c)?`<${+u+1}.0.0-0`:N(p)?`<${u}.${+c+1}.0-0`:_?`<=${u}.${c}.${p}-${_}`:i?.includePrerelease?`<${u}.${c}.${+p+1}-0`:`<=${l}`,`${t} ${l}`.trim()))}else if(t.includes(" ")){for(let o of t.trim().replace(/\s{2,}/g," ").split(" "))if(!f(e,o,n,r))return!1;return!0}return f(e,t,n,r)}function f(e,t,n,r){var o,i,a,s,l,u;let c;if((o=t,i=r,t=(l=o=(a=o=o.trim(),s=i,c=s?.includePrerelease?"-0":"",o=a.replace(w,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0${c} <${+t+1}.0.0-0`:N(r)?"0"===t?`>=${t}.${n}.0${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.0${c} <${+t+1}.0.0-0`:o?"0"===t?"0"===n?`>=${t}.${n}.${r}-${o} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r}-${o} <${+t+1}.0.0-0`:"0"===t?"0"===n?`>=${t}.${n}.${r}${c} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${+t+1}.0.0-0`)).replace(V,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0 <${+t+1}.0.0-0`:N(r)?`>=${t}.${n}.0 <${t}.${+n+1}.0-0`:o?`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${t}.${+n+1}.0-0`),u=i,o=l.replace(B,(e,t,n,r,o,i)=>{let a=N(n),s=a||N(r),l=s||N(o);return"="===t&&l&&(t=""),i=u?.includePrerelease?"-0":"",a?e=">"===t||"<"===t?"<0.0.0-0":"*":t&&l?(s&&(r=0),o=0,">"===t?(t=">=",s?(n=+n+1,r=0):r=+r+1,o=0):"<="===t&&(t="<",s?n=+n+1:r=+r+1),"<"===t&&(i="-0"),e=`${t+n}.${r}.${o}${i}`):s?e=`>=${n}.0.0${i} <${+n+1}.0.0-0`:l&&(e=`>=${n}.${r}.0${i} <${n}.${+r+1}.0-0`),e})).trim()).includes(" "))return R(e,t,n,r);{let r=function(e){if(!e)return{};let t=e.match(m);if(!t)return A.diag.error(`Invalid range: ${e}`),{invalid:!0};let n=t.groups.op,r=t.groups.version,o=t.groups.prerelease,i=t.groups.build,a=r.split("."),s=o?.split(".");return"=="===n&&(n="="),{op:n||"=",version:r,versionSegments:a,versionSegmentCount:a.length,prerelease:o,prereleaseSegments:s,prereleaseSegmentCount:s?s.length:0,build:i}}(t);return n.push(r),function(e,t){if(t.invalid)return!1;if(!t.version||I(t.version))return!0;let n=y(e.versionSegments||[],t.versionSegments||[]);if(0===n){let r=e.prereleaseSegments||[],o=t.prereleaseSegments||[];n=r.length||o.length?!r.length&&o.length?1:r.length&&!o.length?-1:y(r,o):0}return h[t.op]?.includes(n)}(e,r)}}function N(e){return!e||"x"===e.toLowerCase()||"*"===e}function I(e){return"*"===e||"x"===e||"X"===e}function O(e){let t=parseInt(e,10);return isNaN(t)?e:t}function y(e,t){for(let n=0;nr?1:n)?=?)\\s*${G}$`),x=RegExp(`^\\s*(${G})\\s+-\\s+(${G})\\s*$`),V=RegExp(`^(?:~>?)${G}$`),w=RegExp(`^(?:\\^)${G}$`),H=console.error.bind(console);function k(e,t,n){let r=!!e[t]&&Object.prototype.propertyIsEnumerable.call(e,t);Object.defineProperty(e,t,{configurable:!0,enumerable:r,writable:!0,value:n})}let Y=(e,t,n)=>{if(!e||!e[t])return void H("no original function "+String(t)+" to wrap");if(!n){H("no wrapper function"),H(Error().stack);return}let r=e[t];if("function"!=typeof r||"function"!=typeof n)return void H("original object and wrapper must be functions");let o=n(r,t);return k(o,"__original",r),k(o,"__unwrap",()=>{e[t]===o&&k(e,t,r)}),k(o,"__wrapped",!0),k(e,t,o),o},j=(e,t,n)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{Y(e,t,n)})}):H("must provide one or more functions to wrap on modules")},F=(e,t)=>{if(!e||!e[t]){H("no function to unwrap."),H(Error().stack);return}let n=e[t];n.__unwrap?n.__unwrap():H("no original to unwrap to -- has "+String(t)+" already been unwrapped?")},W=(e,t)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{F(e,t)})}):H("must provide one or more functions to unwrap on modules")};function K(e){e&&e.logger&&("function"!=typeof e.logger?H("new logger isn't a function, not replacing"):H=e.logger)}K.wrap=Y,K.massWrap=j,K.unwrap=F,K.massUnwrap=W;class X{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(e,t,n){this.instrumentationName=e,this.instrumentationVersion=t,this.setConfig(n),this._diag=A.diag.createComponentLogger({namespace:e}),this._tracer=r.trace.getTracer(e,t),this._meter=o.metrics.getMeter(e,t),this._logger=T.getLogger(e,t),this._updateMetricInstruments()}_wrap=Y;_unwrap=F;_massWrap=j;_massUnwrap=W;get meter(){return this._meter}setMeterProvider(e){this._meter=e.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(e){this._logger=e.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let e=this.init()??[];return Array.isArray(e)?e:[e]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(e){this._config={enabled:!0,...e}}setTracerProvider(e){this._tracer=e.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(e,t,n,r){if(e)try{e(n,r)}catch(e){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:t},e)}}}var Z=e.i(156823);class J{hooks=[];children=new Map}class ${_trie=new J;_counter=0;insert(e){let t=this._trie;for(let n of e.moduleName.split("/")){let e=t.children.get(n);e||(e=new J,t.children.set(n,e)),t=e}t.hooks.push({hook:e,insertedId:this._counter++})}search(e,{maintainInsertionOrder:t,fullOnly:n}={}){let r=this._trie,o=[],i=!0;for(let t of e.split("/")){let e=r.children.get(t);if(!e){i=!1;break}n||o.push(...e.hooks),r=e}return(n&&i&&o.push(...r.hooks),0===o.length)?[]:1===o.length?[o[0].hook]:(t&&o.sort((e,t)=>e.insertedId-t.insertedId),o.map(({hook:e})=>e))}}let Q=["afterEach","after","beforeEach","before","describe","it"].every(t=>"function"==typeof e.g[t]);class z{_moduleNameTrie=new $;static _instance;constructor(){this._initialize()}_initialize(){new Z.Hook(null,{internals:!0},(e,t,n)=>{var r;let o=(r=t,"/"!==E.sep?r.split(E.sep).join("/"):r);for(let{onRequire:r}of this._moduleNameTrie.search(o,{maintainInsertionOrder:!0,fullOnly:void 0===n}))e=r(e,t,n);return e})}register(e,t){let n={moduleName:e,onRequire:t};return this._moduleNameTrie.insert(n),n}static getInstance(){return Q?new z:this._instance=this._instance??new z}}var q=e.i(74667),ee=e.i(522734);function et(e,t,n){let r,o;try{o=e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}async function en(e,t,n){let r,o;try{o=await e()}catch(e){r=e}finally{if(await t(r,o),r&&!n)throw r;return o}}function er(e){return"function"==typeof e&&"function"==typeof e.__original&&"function"==typeof e.__unwrap&&!0===e.__wrapped}class eo extends X{_modules;_hooks=[];_requireInTheMiddleSingleton=z.getInstance();_enabled=!1;constructor(e,t,n){super(e,t,n);let r=this.init();r&&!Array.isArray(r)&&(r=[r]),this._modules=r||[],this._config.enabled&&this.enable()}_wrap=(e,t,n)=>{if(er(e[t])&&this._unwrap(e,t),!S.types.isProxy(e))return Y(e,t,n);{let r=Y(Object.assign({},e),t,n);return Object.defineProperty(e,t,{value:r}),r}};_unwrap=(e,t)=>S.types.isProxy(e)?Object.defineProperty(e,t,{value:e[t]}):F(e,t);_massWrap=(e,t,n)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._wrap(e,t,n)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_massUnwrap=(e,t)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._unwrap(e,t)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(t=>{let{name:n}=t;try{let t=(()=>{let e=Error("Cannot find module as expression is too dynamic");throw e.code="MODULE_NOT_FOUND",e})();e.c[t]&&this._diag.warn(`Module ${n} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${n}`)}catch{}})}_extractPackageVersion(e){try{let t=(0,ee.readFileSync)(E.join(e,"package.json"),{encoding:"utf8"}),n=JSON.parse(t).version;return"string"==typeof n?n:void 0}catch{A.diag.warn("Failed extracting version",e)}}_onRequire(e,t,n,r){if(!r)return"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:e.name}),e.patch(t)):t;let o=this._extractPackageVersion(r);if(e.moduleVersion=o,e.name===n)return ei(e.supportedVersions,o,e.includePrerelease)&&"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:e.name,version:e.moduleVersion,baseDir:r}),e.patch(t,e.moduleVersion)):t;let i=e.files??[],a=E.normalize(n);return i.filter(t=>t.name===a&&ei(t.supportedVersions,o,e.includePrerelease)).reduce((t,n)=>(n.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:e.name,version:e.moduleVersion,fileName:n.name,baseDir:r}),n.patch(t,e.moduleVersion)):t,t)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let e of this._modules)for(let t of("function"==typeof e.patch&&e.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:e.name,version:e.moduleVersion}),e.patch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.patch(t.moduleExports,e.moduleVersion));return}for(let e of(this._warnOnPreloadedModules(),this._modules)){let t=(t,n,r)=>{if(!r&&E.isAbsolute(n)){let e=E.parse(n);n=e.name,r=e.dir}return this._onRequire(e,t,n,r)},n=(t,n,r)=>this._onRequire(e,t,n,r),r=E.isAbsolute(e.name)?new Z.Hook([e.name],{internals:!0},n):this._requireInTheMiddleSingleton.register(e.name,n);this._hooks.push(r);let o=new q.Hook([e.name],{internals:!0},t);this._hooks.push(o)}}}disable(){if(this._enabled)for(let e of(this._enabled=!1,this._modules))for(let t of("function"==typeof e.unpatch&&e.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:e.name,version:e.moduleVersion}),e.unpatch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.unpatch(t.moduleExports,e.moduleVersion))}isEnabled(){return this._enabled}}function ei(e,t,n){return void 0===t?e.includes("*"):e.some(e=>(function(e,t,n){var r,o,i;if(!("string"==typeof(r=e)&&g.test(r)))return A.diag.error(`Invalid version: ${e}`),!1;if(!t)return!0;t=t.replace(/([<>=~^]+)\s+/g,"$1");let a=function(e){let t=e.match(g);if(!t)return void A.diag.error(`Invalid version: ${e}`);let n=t.groups.version,r=t.groups.prerelease,o=t.groups.build,i=n.split("."),a=r?.split(".");return{op:void 0,version:n,versionSegments:i,versionSegmentCount:i.length,prerelease:r,prereleaseSegments:a,prereleaseSegmentCount:a?a.length:0,build:o}}(e);if(!a)return!1;let s=[],l=R(a,t,s,n);return l&&!n?.includePrerelease?(o=a,i=s,!o.prerelease||i.some(e=>e.prerelease&&e.version===o.version)):l})(t,e,{includePrerelease:n}))}class ea{files;name;supportedVersions;patch;unpatch;constructor(e,t,n,r,o){this.files=o||[],this.name=e,this.supportedVersions=t,this.patch=n,this.unpatch=r}}class es{name;supportedVersions;patch;unpatch;constructor(e,t,n,r){this.name=(0,E.normalize)(e),this.supportedVersions=t,this.patch=n,this.unpatch=r}}function el(e,t){let r=n.OLD;for(let o of t?.split(",").map(e=>e.trim()).filter(e=>""!==e)??[])if(o.toLowerCase()===e+"/dup"){r=n.DUPLICATE;break}else o.toLowerCase()===e&&(r=n.STABLE);return r}(t=n||(n={}))[t.STABLE=1]="STABLE",t[t.OLD=2]="OLD",t[t.DUPLICATE=3]="DUPLICATE",e.s(["InstrumentationBase",()=>eo,"InstrumentationNodeModuleDefinition",()=>ea,"InstrumentationNodeModuleFile",()=>es,"SemconvStability",()=>n,"isWrapped",()=>er,"registerInstrumentations",()=>d,"safeExecuteInTheMiddle",()=>et,"safeExecuteInTheMiddleAsync",()=>en,"semconvStabilityFromStr",()=>el],682342)},62701,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.range=n.balanced=void 0,n.balanced=(e,t,o)=>{let i=e instanceof RegExp?r(e,o):e,a=t instanceof RegExp?r(t,o):t,s=null!==i&&null!=a&&(0,n.range)(i,a,o);return s&&{start:s[0],end:s[1],pre:o.slice(0,s[0]),body:o.slice(s[0]+i.length,s[1]),post:o.slice(s[1]+a.length)}};let r=(e,t)=>{let n=t.match(e);return n?n[0]:null};n.range=(e,t,n)=>{let r,o,i,a,s,l=n.indexOf(e),u=n.indexOf(t,l+1),c=l;if(l>=0&&u>0){if(e===t)return[l,u];for(r=[],i=n.length;c>=0&&!s;){if(c===l)r.push(c),l=n.indexOf(e,c+1);else if(1===r.length){let e=r.pop();void 0!==e&&(s=[e,u])}else void 0!==(o=r.pop())&&o=0?l:u}r.length&&void 0!==a&&(s=[i,a])}return s}},872050,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EXPANSION_MAX=void 0,n.expand=function(e,t={}){if(!e)return[];let{max:u=n.EXPANSION_MAX}=t;return"{}"===e.slice(0,2)&&(e="\\{\\}"+e.slice(2)),(function e(t,n,o){let i=[],s=(0,r.balanced)("{","}",t);if(!s)return[t];let l=s.pre,u=s.post.length?e(s.post,n,!1):[""];if(/\$$/.test(s.pre))for(let e=0;e=0;if(!d&&!E)return s.post.match(/,(?!,).*\}/)?e(t=s.pre+"{"+s.body+a+s.post,n,!0):[t];if(d)c=s.body.split(/\.\./);else if(1===(c=function e(t){if(!t)return[""];let n=[],o=(0,r.balanced)("{","}",t);if(!o)return t.split(",");let{pre:i,body:a,post:s}=o,l=i.split(",");l[l.length-1]+="{"+a+"}";let u=e(s);return s.length&&(l[l.length-1]+=u.shift(),l.push.apply(l,u)),n.push.apply(n,l),n}(s.body)).length&&void 0!==c[0]&&1===(c=e(c[0],n,!1).map(R)).length)return u.map(e=>s.pre+c[0]+e);if(d&&void 0!==c[0]&&void 0!==c[1]){let e=m(c[0]),t=m(c[1]),n=Math.max(c[0].length,c[1].length),r=3===c.length&&void 0!==c[2]?Math.max(Math.abs(m(c[2])),1):1,o=N;t0){let n=Array(t+1).join("0");e=a<0?"-"+n+e.slice(1):n+e}}p.push(e)}}else{p=[];for(let t=0;t=t}n.EXPANSION_MAX=1e5},707441,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.assertValidPattern=void 0,n.assertValidPattern=e=>{if("string"!=typeof e)throw TypeError("invalid pattern");if(e.length>65536)throw TypeError("pattern is too long")}},523132,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.parseClass=void 0;let r={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o=e=>e.replace(/[[\]\\-]/g,"\\$&");n.parseClass=(e,t)=>{if("["!==e.charAt(t))throw Error("not in a brace expression");let n=[],i=[],a=t+1,s=!1,l=!1,u=!1,c=!1,p=t,_="";e:for(;a_?n.push(o(_)+"-"+o(T)):T===_&&n.push(o(T)),_="",a++;continue}if(e.startsWith("-]",a+1)){n.push(o(T+"-")),a+=2;continue}if(e.startsWith("-",a+1)){_=T,a+=2;continue}n.push(o(T)),a++}if(p{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.unescape=void 0,n.unescape=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!0}={})=>n?t?e.replace(/\[([^/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?e.replace(/\[([^/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1")},965128,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AST=void 0;let o=e.r(523132),i=e.r(106952),a=new Set(["!","?","+","*","@"]),s=e=>a.has(e),l=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),u=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),c=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),p=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),_="(?!\\.)",T=new Set(["[","."]),d=new Set(["..","."]),E=new Set("().*{}+?[]^$\\!"),S=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),A="[^/]",g=A+"*?",m=A+"+?",h=0;class R{type;#e;#t;#n=!1;#r=[];#o;#i;#a;#s=!1;#l;#u;#c=!1;id=++h;get depth(){return(this.#o?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#e.id,parent:this.#o?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(e,t,n={}){this.type=e,e&&(this.#t=!0),this.#o=t,this.#e=this.#o?this.#o.#e:this,this.#l=this.#e===this?n:this.#e.#l,this.#a=this.#e===this?[]:this.#e.#a,"!"!==e||this.#e.#s||this.#a.push(this),this.#i=this.#o?this.#o.#r.length:0}get hasMagic(){if(void 0!==this.#t)return this.#t;for(let e of this.#r)if("string"!=typeof e&&(e.type||e.hasMagic))return this.#t=!0;return this.#t}toString(){return void 0!==this.#u?this.#u:this.type?this.#u=this.type+"("+this.#r.map(e=>String(e)).join("|")+")":this.#u=this.#r.map(e=>String(e)).join("")}#p(){let e;if(this!==this.#e)throw Error("should only call on root");if(this.#s)return this;for(this.toString(),this.#s=!0;e=this.#a.pop();){if("!"!==e.type)continue;let t=e,n=t.#o;for(;n;){for(let r=t.#i+1;!n.type&&r"string"==typeof e?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#s&&this.#o?.type==="!")&&e.push({}),e}isStart(){if(this.#e===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;let e=this.#o;for(let t=0;t"string"!=typeof e),o=this.#r.map(t=>{let[o,i,a,s]="string"==typeof t?r.#f(t,this.#t,n):t.toRegExpSource(e);return this.#t=this.#t||a,this.#n=this.#n||s,o}).join(""),a="";if(this.isStart()&&"string"==typeof this.#r[0]&&!(1===this.#r.length&&d.has(this.#r[0]))){let n=t&&T.has(o.charAt(0))||o.startsWith("\\.")&&T.has(o.charAt(2))||o.startsWith("\\.\\.")&&T.has(o.charAt(4)),r=!t&&!e&&T.has(o.charAt(0));a=n?"(?!(?:^|/)\\.\\.?(?:$|/))":r?_:""}let s="";return this.isEnd()&&this.#e.#s&&this.#o?.type==="!"&&(s="(?:$|\\/)"),[a+o+s,(0,i.unescape)(o),this.#t=!!this.#t,this.#n]}let n="*"===this.type||"+"===this.type,o="!"===this.type?"(?:(?!(?:":"(?:",a=this.#N(t);if(this.isStart()&&this.isEnd()&&!a&&"!"!==this.type){let e=this.toString();return this.#r=[e],this.type=null,this.#t=void 0,[e,(0,i.unescape)(this.toString()),!1,!1]}let l=!n||e||t||!_?"":this.#N(!0);l===a&&(l=""),l&&(a=`(?:${a})(?:${l})*?`);return["!"===this.type&&this.#c?(this.isStart()&&!t?_:"")+m:o+a+("!"===this.type?"))"+(!this.isStart()||t||e?"":_)+g+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&l?")":"*"===this.type&&l?")?":`)${this.type}`),(0,i.unescape)(a),this.#t=!!this.#t,this.#n]}#R(){if(s(this.type)){let e=0,t=!1;do{t=!0;for(let e=0;e{if("string"==typeof t)throw Error("string type in extglob ast??");let[n,r,o,i]=t.toRegExpSource(e);return this.#n=this.#n||i,n}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")}static #f(e,t,n=!1){let r=!1,a="",s=!1,l=!1;for(let i=0;i{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.escape=void 0,n.escape=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!1}={})=>n?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&")},843860,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.unescape=n.escape=n.AST=n.Minimatch=n.match=n.makeRe=n.braceExpand=n.defaults=n.filter=n.GLOBSTAR=n.sep=n.minimatch=void 0;let r=e.r(872050),o=e.r(707441),i=e.r(965128),a=e.r(686006),s=e.r(106952);n.minimatch=(e,t,n={})=>((0,o.assertValidPattern)(t),(!!n.nocomment||"#"!==t.charAt(0))&&new N(t,n).match(e));let l=/^\*+([^+@!?*[(]*)$/,u=/^\*+\.\*+$/,c=e=>!e.startsWith(".")&&e.includes("."),p=e=>"."!==e&&".."!==e&&e.includes("."),_=/^\.\*+$/,T=e=>"."!==e&&".."!==e&&e.startsWith("."),d=/^\*+$/,E=e=>0!==e.length&&!e.startsWith("."),S=e=>0!==e.length&&"."!==e&&".."!==e,A=/^\?+([^+@!?*[(]*)?$/,g=([e])=>{let t=e.length;return e=>e.length===t&&!e.startsWith(".")},m=([e])=>{let t=e.length;return e=>e.length===t&&"."!==e&&".."!==e},h="object"==typeof process&&process?"object"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";n.sep="win32"===h?"\\":"/",n.minimatch.sep=n.sep,n.GLOBSTAR=Symbol("globstar **"),n.minimatch.GLOBSTAR=n.GLOBSTAR;n.filter=(e,t={})=>r=>(0,n.minimatch)(r,e,t),n.minimatch.filter=n.filter;let R=(e,t={})=>Object.assign({},e,t);n.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return n.minimatch;let t=n.minimatch;return Object.assign((n,r,o={})=>t(n,r,R(e,o)),{Minimatch:class extends t.Minimatch{constructor(t,n={}){super(t,R(e,n))}static defaults(n){return t.defaults(R(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n,r={}){super(t,n,R(e,r))}static fromGlob(n,r={}){return t.AST.fromGlob(n,R(e,r))}},unescape:(n,r={})=>t.unescape(n,R(e,r)),escape:(n,r={})=>t.escape(n,R(e,r)),filter:(n,r={})=>t.filter(n,R(e,r)),defaults:n=>t.defaults(R(e,n)),makeRe:(n,r={})=>t.makeRe(n,R(e,r)),braceExpand:(n,r={})=>t.braceExpand(n,R(e,r)),match:(n,r,o={})=>t.match(n,r,R(e,o)),sep:t.sep,GLOBSTAR:n.GLOBSTAR})},n.minimatch.defaults=n.defaults,n.braceExpand=(e,t={})=>((0,o.assertValidPattern)(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e))?[e]:(0,r.expand)(e,{max:t.braceExpandMax}),n.minimatch.braceExpand=n.braceExpand,n.makeRe=(e,t={})=>new N(e,t).makeRe(),n.minimatch.makeRe=n.makeRe,n.match=(e,t,n={})=>{let r=new N(t,n);return e=e.filter(e=>r.match(e)),r.options.nonull&&!e.length&&e.push(t),e},n.minimatch.match=n.match;let f=/[?*]|[+@!]\(.*?\)|\[|\]/;class N{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(e,t={}){(0,o.assertValidPattern)(e),t=t||{},this.options=t,this.maxGlobstarRecursion=t.maxGlobstarRecursion??200,this.pattern=e,this.platform=t.platform||h,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||!1===t.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==t.windowsNoMagicRoot?t.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if("string"!=typeof t)return!0;return!1}debug(){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0)){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){let t=""===e[0]&&""===e[1]&&("?"===e[2]||!f.test(e[2]))&&!f.test(e[3]),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>-1===e.indexOf(!1)),this.isWindows)for(let e=0;e=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;-1!==(t=e.indexOf("**",t+1));){let n=t;for(;"**"===e[n+1];)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>0===(e=e.reduce((e,t)=>{let n=e[e.length-1];return"**"===t&&"**"===n||(".."===t&&n&&".."!==n&&"."!==n&&"**"!==n?e.pop():e.push(t)),e},[])).length?[""]:e)}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,o-r);let i=n[r+1],a=n[r+2],s=n[r+3];if(".."!==i||!a||"."===a||".."===a||!s||"."===s||".."===s)continue;t=!0,n.splice(r,1);let l=n.slice(0);l[r]="**",e.push(l),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length)}partsMatch(e,t,n=!1){let r=0,o=0,i=[],a="";for(;r=2&&(e=this.levelTwoFileOptimize(e)),t.includes(n.GLOBSTAR))?this.#I(e,t,r,o,i):this.#O(e,t,r,o,i)}#I(e,t,r,o,i){let a=t.indexOf(n.GLOBSTAR,i),s=t.lastIndexOf(n.GLOBSTAR),[l,u,c]=r?[t.slice(i,a),t.slice(a+1),[]]:[t.slice(i,a),t.slice(a+1,s),t.slice(s+1)];if(l.length){let t=e.slice(o,o+l.length);if(!this.#O(t,l,r,0,0))return!1;o+=l.length,i+=l.length}let p=0;if(c.length){if(c.length+o>e.length)return!1;let t=e.length-c.length;if(this.#O(e,c,r,t,0))p=c.length;else{if(""!==e[e.length-1]||o+c.length===e.length||(t--,!this.#O(e,c,r,t,0)))return!1;p=c.length+1}}if(!u.length){let t=!!p;for(let n=o;n(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)):e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)):r.dot?e=>t=>t.endsWith(e):e=>t=>!t.startsWith(".")&&t.endsWith(e))(t[1]):(t=e.match(A))?a=(r.nocase?r.dot?([e,t=""])=>{let n=m([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n}:([e,t=""])=>{let n=g([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n}:r.dot?([e,t=""])=>{let n=m([e]);return t?e=>n(e)&&e.endsWith(t):n}:([e,t=""])=>{let n=g([e]);return t?e=>n(e)&&e.endsWith(t):n})(t):(t=e.match(u))?a=r.dot?p:c:(t=e.match(_))&&(a=T);let s=i.AST.fromGlob(e,this.options).toMMPattern();return a&&"object"==typeof s&&Reflect.defineProperty(s,"test",{value:a}),s}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,r=t.noglobstar?"[^/]*?":t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",o=new Set(t.nocase?["i"]:[]),i=e.map(e=>{let t=e.map(e=>{if(e instanceof RegExp)for(let t of e.flags.split(""))o.add(t);return"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===n.GLOBSTAR?n.GLOBSTAR:e._src});t.forEach((e,o)=>{let i=t[o+1],a=t[o-1];e===n.GLOBSTAR&&a!==n.GLOBSTAR&&(void 0===a?void 0!==i&&i!==n.GLOBSTAR?t[o+1]="(?:\\/|"+r+"\\/)?"+i:t[o]=r:void 0===i?t[o-1]=a+"(?:\\/|\\/"+r+")?":i!==n.GLOBSTAR&&(t[o-1]=a+"(?:\\/|\\/"+r+"\\/)"+i,t[o+1]=n.GLOBSTAR))});let i=t.filter(e=>e!==n.GLOBSTAR);if(this.partial&&i.length>=1){let e=[];for(let t=1;t<=i.length;t++)e.push(i.slice(0,t).join("/"));return"(?:"+e.join("|")+")"}return i.join("/")}).join("|"),[a,s]=e.length>1?["(?:",")"]:["",""];i="^"+a+i+s+"$",this.partial&&(i="^(?:\\/|"+a+i.slice(1,-1)+s+")$"),this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...o].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;let n=this.options;this.isWindows&&(e=e.split("\\").join("/"));let r=this.slashSplit(e);this.debug(this.pattern,"split",r);let o=this.set;this.debug(this.pattern,"set",o);let i=r[r.length-1];if(!i)for(let e=r.length-2;!i&&e>=0;e--)i=r[e];for(let e of o){let o=r;if(n.matchBase&&1===e.length&&(o=[i]),this.matchOne(o,e,t)){if(n.flipNegate)return!0;return!this.negate}}return!n.flipNegate&&this.negate}static defaults(e){return n.minimatch.defaults(e).Minimatch}}n.Minimatch=N;var I=e.r(965128);Object.defineProperty(n,"AST",{enumerable:!0,get:function(){return I.AST}});var O=e.r(686006);Object.defineProperty(n,"escape",{enumerable:!0,get:function(){return O.escape}});var y=e.r(106952);Object.defineProperty(n,"unescape",{enumerable:!0,get:function(){return y.unescape}}),n.minimatch.AST=i.AST,n.minimatch.Minimatch=N,n.minimatch.escape=a.escape,n.minimatch.unescape=s.unescape},740071,(e,t,n)=>{"use strict";let r=e.r(677652),{context:o,trace:i,SpanStatusCode:a,propagation:s,diag:l}=e.r(357762),{getRPCMetadata:u,RPCType:c}=e.r(385692),{ATTR_HTTP_ROUTE:p,ATTR_HTTP_RESPONSE_STATUS_CODE:_,ATTR_HTTP_REQUEST_METHOD:T,ATTR_URL_PATH:d}=e.r(808119),{InstrumentationBase:E}=e.r(682342),{version:S,name:A}=e.r(989801),g=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend","onResponse","onError"],m="hook.name",h="fastify.type",R="hook.callback.name",f="route-hook",N="hook",I="anonymous",O=Symbol("fastify otel instance"),y=Symbol("fastify otel request spans"),b=Symbol("fastify otel request context"),C=Symbol("fastify otel addhook original"),M=Symbol("fastify otel setnotfound original"),P=Symbol("fastify otel ignore path"),L=Symbol("fastify otel record exceptions");class v extends E{logger=null;_requestHook=null;_lifecycleHook=null;constructor(t){if(super(A,S,t),this.logger=l.createComponentLogger({namespace:A}),this[P]=null,this[L]=!0,t?.recordExceptions!=null){if("boolean"!=typeof t.recordExceptions)throw TypeError("recordExceptions must be a boolean");this[L]=t.recordExceptions}if("function"==typeof t?.requestHook&&(this._requestHook=t.requestHook),"function"==typeof t?.lifecycleHook&&(this._lifecycleHook=t.lifecycleHook),t?.ignorePaths!=null||null!=process.env.OTEL_FASTIFY_IGNORE_PATHS){const n=t?.ignorePaths??process.env.OTEL_FASTIFY_IGNORE_PATHS;if(("string"!=typeof n||0===n.length)&&"function"!=typeof n)throw TypeError("ignorePaths must be a string or a function");let r=null;this[P]=t=>"function"==typeof n?n(t):(null==r&&(r=e.r(843860).minimatch),r(t.url,n))}}enable(){return void 0===this._handleInitialization&&this.getConfig().registerOnInitialization&&(this._handleInitialization=e=>{this.plugin()(e.fastify,void 0,()=>{});let t=(e,t,n)=>{n()};t[Symbol.for("skip-override")]=!0,t[Symbol.for("fastify.display-name")]="@fastify/otel",e.fastify.register(t)},r.subscribe("fastify.initialization",this._handleInitialization)),super.enable()}disable(){return this._handleInitialization&&(r.unsubscribe("fastify.initialization",this._handleInitialization),this._handleInitialization=void 0),super.disable()}init(){return[]}plugin(){let e=this;return t[Symbol.for("skip-override")]=!0,t[Symbol.for("fastify.display-name")]="@fastify/otel",t[Symbol.for("plugin-meta")]={fastify:">=4.0.0 <6",name:"@fastify/otel"},t;function t(t,n,r){function l(e,t,n,r){let o=e[y];null!=o&&(t.statusCode>=500&&o.setStatus({code:a.ERROR}),o.setAttributes({[_]:t.statusCode}),o.end()),e[y]=null,r(null,n)}function E(t,n,r,o){let i=t[y];null!=i&&(i.setStatus({code:a.ERROR,message:r.message}),!1!==e[L]&&i.recordException(r)),o()}function S(e,t,n={}){return function(...r){let s=this[O],l=function(e){for(let t of e)if(t?.routeOptions&&t.url&&t.method)return t;return null}(r);if(null===l)return s.logger.debug(`Ignoring route instrumentation because ${t} was called without a Fastify request argument`),e.call(this,...r);if(!1===s.isEnabled()||l.routeOptions.config?.otel===!1)return s.logger.debug(`Ignoring route instrumentation ${l.routeOptions.method} ${l.routeOptions.url} because it is disabled`),e.call(this,...r);if(s[P]?.({url:l.url,method:l.method})===!0)return s.logger.debug(`Ignoring route instrumentation ${l.routeOptions.method} ${l.routeOptions.url} because it matches the ignore path`),e.call(this,...r);let u=l[b]??o.active(),c=e.name?.length>0?e.name:this.pluginName??I,p=s.tracer.startSpan(`${t} - ${c}`,{attributes:n},u);if(null!=s._lifecycleHook)try{s._lifecycleHook(p,{hookName:t,request:l,handler:c})}catch(e){s.logger.error({err:e},"Execution of lifecycleHook failed")}return o.with(i.setSpan(u,p),function(){try{let t=e.call(this,...r);if("function"==typeof t?.then)return t.then(e=>(p.end(),e),e=>(p.setStatus({code:a.ERROR,message:e.message}),!1!==s[L]&&p.recordException(e),p.end(),Promise.reject(e)));return p.end(),t}catch(e){throw p.setStatus({code:a.ERROR,message:e.message}),!1!==s[L]&&p.recordException(e),p.end(),e}},this)}}t.decorate(O,e),t.decorate(C,t.addHook),t.decorate(M,t.setNotFoundHandler),t.decorateRequest("opentelemetry",function(){let t=this[b],n=this[y];return{enabled:this.routeOptions.config?.otel!==!1,span:n,tracer:e.tracer,context:t,inject:(e,n)=>s.inject(t,e,n),extract:(e,n)=>s.extract(t,e,n)}}),t.decorateRequest(y,null),t.decorateRequest(b,null),t.addHook("onRoute",function(t){if(e[P]?.(t)===!0)return void e.logger.debug(`Ignoring route instrumentation ${t.method} ${t.url} because it matches the ignore path`);if(t.config?.otel===!1)return void e.logger.debug(`Ignoring route instrumentation ${t.method} ${t.url} because it is disabled`);for(let e of g)if(null!=t[e]){let n=t[e];if("function"==typeof n)t[e]=S(n,e,{[m]:`${this.pluginName} - route -> ${e}`,[h]:f,[p]:t.url,[R]:n.name?.length>0?n.name:I});else if(Array.isArray(n)){let r=[];for(let o of n)r.push(S(o,e,{[m]:`${this.pluginName} - route -> ${e}`,[h]:f,[p]:t.url,[R]:o.name?.length>0?o.name:I}));t[e]=r}}null!=t.onSend?t.onSend=Array.isArray(t.onSend)?[...t.onSend,l]:[t.onSend,l]:t.onSend=l,null!=t.onError?t.onError=Array.isArray(t.onError)?[...t.onError,E]:[t.onError,E]:t.onError=E,t.handler=S(t.handler,"handler",{[m]:`${this.pluginName} - route-handler`,[h]:"request-handler",[p]:t.url,[R]:t.handler.name.length>0?t.handler.name:I})}),t.addHook("onRequest",function(e,t,n){if(!1===this[O].isEnabled()||e.routeOptions.config?.otel===!1)return n();if(this[O][P]?.({url:e.url,method:e.method})===!0)return this[O].logger.debug(`Ignoring request ${e.method} ${e.url} because it matches the ignore path`),n();let r=o.active();null==i.getSpan(r)&&(r=s.extract(r,e.headers));let a=u(r);null!=e.routeOptions.url&&a?.type===c.HTTP&&(a.route=e.routeOptions.url);let l={"fastify.root":"@fastify/otel",[T]:e.method,[d]:e.url};null!=e.routeOptions.url&&(l[p]=e.routeOptions.url);let _=this[O].tracer.startSpan("request",{attributes:l},r);try{this[O]._requestHook?.(_,e)}catch(e){this[O].logger.error({err:e},"requestHook threw")}e[b]=i.setSpan(r,_),e[y]=_,o.with(e[b],()=>{n()})}),t.addHook("onResponse",function(e,t,n){let r=e[y];null!=r&&(r.setAttributes({[_]:t.statusCode}),r.end()),e[y]=null,n()}),t.addHook=function(e,t){let n=this[C];return g.includes(e)?n.call(this,e,S(t,e,{[m]:`${this.pluginName} - ${e}`,[h]:N,[R]:t.name?.length>0?t.name:I})):n.call(this,e,t)},t.setNotFoundHandler=function(e,t){let n=this[M];"function"==typeof e?(t=S(e,"notFoundHandler",{[m]:`${this.pluginName} - not-found-handler`,[h]:N,[R]:e.name?.length>0?e.name:I}),n.call(this,t)):(null!=e.preValidation&&(e.preValidation=S(e.preValidation,"notFoundHandler - preValidation",{[m]:`${this.pluginName} - not-found-handler - preValidation`,[h]:N,[R]:e.preValidation.name?.length>0?e.preValidation.name:I})),null!=e.preHandler&&(e.preHandler=S(e.preHandler,"notFoundHandler - preHandler",{[m]:`${this.pluginName} - not-found-handler - preHandler`,[h]:N,[R]:e.preHandler.name?.length>0?e.preHandler.name:I})),t=S(t,"notFoundHandler",{[m]:`${this.pluginName} - not-found-handler`,[h]:N,[R]:t.name?.length>0?t.name:I}),n.call(this,e,t))},r()}}}t.exports=v,t.exports.FastifyOtelInstrumentation=v},399239,(e,t,n)=>{var r,o,i;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).FASTIFY_NAME="fastify.name",r.FASTIFY_TYPE="fastify.type",r.HOOK_NAME="hook.name",r.PLUGIN_NAME="plugin.name",n.FastifyTypes=void 0,(o=n.FastifyTypes||(n.FastifyTypes={})).MIDDLEWARE="middleware",o.REQUEST_HANDLER="request_handler",n.FastifyNames=void 0,(i=n.FastifyNames||(n.FastifyNames={})).MIDDLEWARE="middleware",i.REQUEST_HANDLER="request handler"},512069,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.spanRequestSymbol=Symbol("opentelemetry.instrumentation.fastify.request_active_span")},714820,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(512069);function i(e){return"object"==typeof e&&e&&"function"==typeof Object.getOwnPropertyDescriptor(e,"then")?.value||!1}n.endSpan=function(e,t){let n=e[o.spanRequestSymbol]||[];n.length&&(n.forEach(e=>{t&&(e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.recordException(t)),e.end()}),delete e[o.spanRequestSymbol])},n.safeExecuteInTheMiddleMaybePromise=function(e,t,n){let r,o;try{o=e(),i(o)&&o.then(e=>t(void 0,e),e=>t(e))}catch(e){r=e}finally{if(!i(o)&&(t(r,o),r&&1))throw r;return o}},n.startSpan=function(e,t,n,r={}){let i=t.startSpan(n,{attributes:r}),a=e[o.spanRequestSymbol]||[];return a.push(i),Object.defineProperty(e,o.spanRequestSymbol,{enumerable:!1,configurable:!0,value:a}),i}},35288,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(808119),s=e.r(976285),l=e.r(399239),u=e.r(714820),c="anonymous",p=new Set(["onTimeout","onRequest","preParsing","preValidation","preSerialization","preHandler","onSend","onResponse","onError"]);class _ extends i.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-fastify-v3","0.1.0",e)}init(){return[new i.InstrumentationNodeModuleDefinition("fastify",[">=3.0.0 <4"],e=>this._patchConstructor(e))]}_hookOnRequest(){let e=this;return function(t,n,i){if(!e.isEnabled())return i();e._wrap(n,"send",e._patchSend());let a=o.getRPCMetadata(r.context.active()),l=t.routeOptions?t.routeOptions.url:t.routerPath;l&&a?.type===o.RPCType.HTTP&&(a.route=l);let u=t.method||"GET";s.getIsolationScope().setTransactionName(`${u} ${l}`),i()}}_wrapHandler(e,t,n,o){let i=this;return this._diag.debug("Patching fastify route.handler function"),function(...a){if(!i.isEnabled())return n.apply(this,a);let s=n.name||e||c,p=`${l.FastifyNames.MIDDLEWARE} - ${s}`,_=a[1],T=u.startSpan(_,i.tracer,p,{[l.AttributeNames.FASTIFY_TYPE]:l.FastifyTypes.MIDDLEWARE,[l.AttributeNames.PLUGIN_NAME]:e,[l.AttributeNames.HOOK_NAME]:t}),d=o&&a[a.length-1];return d&&(a[a.length-1]=function(...e){u.endSpan(_),d.apply(this,e)}),r.context.with(r.trace.setSpan(r.context.active(),T),()=>u.safeExecuteInTheMiddleMaybePromise(()=>n.apply(this,a),e=>{e instanceof Error&&(T.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),T.recordException(e)),o||u.endSpan(_)}))}}_wrapAddHook(){let e=this;return this._diag.debug("Patching fastify server.addHook function"),function(t){return function(...n){let r=n[0],o=n[1],i=this.pluginName;if(!p.has(r))return t.apply(this,n);let a="function"==typeof n[n.length-1]&&"AsyncFunction"!==o.constructor.name;return t.apply(this,[r,e._wrapHandler(i,r,o,a)])}}}_patchConstructor(e){let t=this;function n(...r){let o,i=e.fastify.apply(this,r);return i.addHook("onRequest",t._hookOnRequest()),i.addHook("preHandler",t._hookPreHandler()),(o=s.getClient())&&o.on("spanStart",e=>{T(e)}),t._wrap(i,"addHook",t._wrapAddHook()),i}return void 0!==e.errorCodes&&(n.errorCodes=e.errorCodes),n.fastify=n,n.default=n,n}_patchSend(){let e=this;return this._diag.debug("Patching fastify reply.send function"),function(t){return function(...n){let r=n[0];return e.isEnabled()?i.safeExecuteInTheMiddle(()=>t.apply(this,n),e=>{!e&&r instanceof Error&&(e=r),u.endSpan(this,e)}):t.apply(this,n)}}}_hookPreHandler(){let e=this;return this._diag.debug("Patching fastify preHandler function"),function(t,n,o){if(!e.isEnabled())return o();let s=t.routeOptions?.handler||t.context?.handler,p=s?.name.startsWith("bound ")?s.name.substring(6):s?.name,_=`${l.FastifyNames.REQUEST_HANDLER} - ${p||this.pluginName||c}`,d={[l.AttributeNames.PLUGIN_NAME]:this.pluginName,[l.AttributeNames.FASTIFY_TYPE]:l.FastifyTypes.REQUEST_HANDLER,[a.SEMATTRS_HTTP_ROUTE]:t.routeOptions?t.routeOptions.url:t.routerPath};p&&(d[l.AttributeNames.FASTIFY_NAME]=p);let E=u.startSpan(n,e.tracer,_,d);T(E);let{requestHook:S}=e.getConfig();return S&&i.safeExecuteInTheMiddle(()=>S(E,{request:t}),t=>{t&&e._diag.error("request hook failed",t)},!0),r.context.with(r.trace.setSpan(r.context.active(),E),()=>{o()})}}}function T(e){let t=s.spanToJSON(e).data,n=t["fastify.type"];if(t[s.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[s.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[s.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.fastify`});let r=t["fastify.name"]||t["plugin.name"]||t["hook.name"];if("string"==typeof r){let t=r.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");e.updateName(t)}}n.FastifyInstrumentationV3=_},602878,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(677652),o=e.r(740071),i=e.r(976285),a=e.r(625331),s=e.r(866779),l=e.r(35288),u="Fastify",c=a.generateInstrumentOnce(`${u}.v3`,()=>new l.FastifyInstrumentationV3);function p(){let e=i.getClient();if(e)return e.getIntegrationByName(u)}function _(e,t,n,r){let o=p()?.getShouldHandleError()||d;if("diagnostics-channel"===r&&(this.diagnosticsChannelExists=!0),this.diagnosticsChannelExists&&"onError-hook"===r){s.DEBUG_BUILD&&i.debug.warn("Fastify error handler was already registered via diagnostics channel.","You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.");return}o(e,t,n)&&i.captureException(e,{mechanism:{handled:!1,type:"auto.function.fastify"}})}let T=a.generateInstrumentOnce(`${u}.v5`,()=>{let e=new o.FastifyOtelInstrumentation,t=e.plugin();return r.subscribe("fastify.initialization",e=>{let n=e.fastify;n?.register(t).after(e=>{let t;e?s.DEBUG_BUILD&&i.debug.error("Failed to setup Fastify instrumentation",e):((t=i.getClient())&&t.on("spanStart",e=>{E(e)}),n&&n.addHook("onRequest",async(e,t)=>{if(e.opentelemetry){let{span:t}=e.opentelemetry();t&&E(t)}let n=e.routeOptions?.url,r=e.method||"GET";i.getIsolationScope().setTransactionName(`${r} ${n}`)}))})}),r.subscribe("tracing:fastify.request.handler:error",e=>{let{error:t,request:n,reply:r}=e;_.call(_,t,n,r,"diagnostics-channel")}),e});function d(e,t,n){let r=n.statusCode;return r>=500||r<=299}function E(e){let t=i.spanToJSON(e),n=t.description,r=t.data,o=r["fastify.type"],a="hook"===o,s=o===n?.startsWith("handler -"),l="request"===n||"request-handler"===o;if(r[i.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!s&&!l&&!a)return;e.setAttributes({[i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[i.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${a?"hook":s?"middleware":l?"request_handler":""}.fastify`});let u=r["fastify.name"]||r["plugin.name"]||r["hook.name"];if("string"==typeof u){let t=u.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");e.updateName(t)}}n.fastifyIntegration=i.defineIntegration((e={})=>(({shouldHandleError:e})=>{let t;return{name:u,setupOnce(){t=e||d,c(),T()},getShouldHandleError:()=>t,setShouldHandleError(e){t=e}}})(e)),n.instrumentFastify=T,n.instrumentFastifyV3=c,n.setupFastifyErrorHandler=function(e,t){t?.shouldHandleError&&p()?.setShouldHandleError(t.shouldHandleError);let n=Object.assign(function(e,t,n){e.addHook("onError",async(e,t,n)=>{_.call(_,n,e,t,"onError-hook")}),n()},{[Symbol.for("skip-override")]:!0,[Symbol.for("fastify.display-name")]:"sentry-fastify-error-handler"});e.register(n)}},187477,(e,t,n)=>{"use strict";var r,o,i;Object.defineProperty(n,"__esModule",{value:!0}),n.SpanNames=n.TokenKind=n.AllowedOperationTypes=void 0,(r=n.AllowedOperationTypes||(n.AllowedOperationTypes={})).QUERY="query",r.MUTATION="mutation",r.SUBSCRIPTION="subscription",(o=n.TokenKind||(n.TokenKind={})).SOF="",o.EOF="",o.BANG="!",o.DOLLAR="$",o.AMP="&",o.PAREN_L="(",o.PAREN_R=")",o.SPREAD="...",o.COLON=":",o.EQUALS="=",o.AT="@",o.BRACKET_L="[",o.BRACKET_R="]",o.BRACE_L="{",o.PIPE="|",o.BRACE_R="}",o.NAME="Name",o.INT="Int",o.FLOAT="Float",o.STRING="String",o.BLOCK_STRING="BlockString",o.COMMENT="Comment",(i=n.SpanNames||(n.SpanNames={})).EXECUTE="graphql.execute",i.PARSE="graphql.parse",i.RESOLVE="graphql.resolve",i.VALIDATE="graphql.validate",i.SCHEMA_VALIDATE="graphql.validateSchema",i.SCHEMA_PARSE="graphql.parseSchema"},476424,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).SOURCE="graphql.source",r.FIELD_NAME="graphql.field.name",r.FIELD_PATH="graphql.field.path",r.FIELD_TYPE="graphql.field.type",r.PARENT_NAME="graphql.parent.name",r.OPERATION_TYPE="graphql.operation.type",r.OPERATION_NAME="graphql.operation.name",r.VARIABLES="graphql.variables.",r.ERROR_VALIDATION_NAME="graphql.validation.error"},46931,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.OTEL_GRAPHQL_DATA_SYMBOL=n.OTEL_PATCHED_SYMBOL=void 0,n.OTEL_PATCHED_SYMBOL=Symbol.for("opentelemetry.patched"),n.OTEL_GRAPHQL_DATA_SYMBOL=Symbol.for("opentelemetry.graphql_data")},718496,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.OPERATION_NOT_SUPPORTED=void 0,e.r(46931),n.OPERATION_NOT_SUPPORTED="Operation$operationName$not supported"},931418,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.wrapFieldResolver=n.wrapFields=n.getSourceFromLocation=n.getOperation=n.endSpan=n.addSpanSource=n.addInputVariableAttributes=n.isPromise=void 0;let r=e.r(357762),o=e.r(187477),i=e.r(476424),a=e.r(46931),s=Object.values(o.AllowedOperationTypes);function l(e,t,n,r,o){let a=d(t,n,r,o);e.setAttribute(i.AttributeNames.SOURCE,a)}function u(e,t){return e[a.OTEL_GRAPHQL_DATA_SYMBOL].fields[t.join(".")]}function c(e,t){for(let n=t.length-1;n>0;n--){let r=u(e,t.slice(0,n));if(r)return r.span}return p(e)}function p(e){return e[a.OTEL_GRAPHQL_DATA_SYMBOL].span}n.isPromise=e=>"function"==typeof e?.then,n.addInputVariableAttributes=function(e,t){Object.entries(t).forEach(([t,n])=>{!function e(t,n,r){Array.isArray(r)?r.forEach((r,o)=>{e(t,`${n}.${o}`,r)}):r instanceof Object?Object.entries(r).forEach(([r,o])=>{e(t,`${n}.${r}`,o)}):t.setAttribute(`${i.AttributeNames.VARIABLES}${String(n)}`,r)}(e,t,n)})},n.addSpanSource=l,n.endSpan=function(e,t){t&&e.recordException(t),e.end()},n.getOperation=function(e,t){if(e&&Array.isArray(e.definitions))if(t)return e.definitions.filter(e=>-1!==s.indexOf(e?.operation)).find(e=>t===e?.name?.value);else return e.definitions.find(e=>-1!==s.indexOf(e?.operation))};function _(e,t){let n="";for(let r=0;rs){l=l.next,u=l?.line;continue}let e=l.value||l.kind,n="";(!t&&T.indexOf(l.kind)>=0&&(e="*"),l.kind===o.TokenKind.STRING&&(e=`"${e}"`),l.kind===o.TokenKind.EOF&&(e=""),l.line>u)?(i+=_("\n",l.line-u),u=l.line,n=_(" ",l.column-1)):l.line===l.prev?.line&&(n=_(" ",l.start-(l.prev?.end||0))),i+=n+e,l&&(l=l.next)}}return i}n.getSourceFromLocation=d,n.wrapFields=function e(t,n,r){if(!t||t[a.OTEL_PATCHED_SYMBOL])return;let o=t.getFields();t[a.OTEL_PATCHED_SYMBOL]=!0,Object.keys(o).forEach(t=>{let i=o[t];if(i&&(i.resolve&&(i.resolve=A(n,r,i.resolve)),i.type))for(let t of function e(t){var n,r;return"ofType"in t?e(t.ofType):"getTypes"in(n=t)&&"function"==typeof n.getTypes?t.getTypes():"getFields"in(r=t)&&"function"==typeof r.getFields?[t]:[]}(i.type))e(t,n,r)})};let E=(e,t,n)=>{n&&(e.recordException(t),e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.end())},S=(e,t)=>{t&&e.end()};function A(e,t,s,_=!1){if(T[a.OTEL_PATCHED_SYMBOL]||"function"!=typeof s)return s;function T(T,d,A,g){let m;if(!s)return;let h=t();if(h.ignoreTrivialResolveSpans&&_&&("object"==typeof T&&null!==T||"function"==typeof T)&&"function"!=typeof T[g.fieldName]||!A[a.OTEL_GRAPHQL_DATA_SYMBOL])return s.call(this,T,d,A,g);let R=function(e,t){let n=[],r=t;for(;r;){let t=r.key;e&&"number"==typeof t&&(t="*"),n.push(String(t)),r=r.prev}return n.reverse()}(h.mergeItems,g&&g.path),f=R.filter(e=>"string"==typeof e).length,N=!1;if(h.depth>=0&&h.depth"Field"===e.kind))&&l(N,I.loc,d().allowValues,O.loc?.start,O.loc?.end),N)},m=n,h=_,R=y,m[a.OTEL_GRAPHQL_DATA_SYMBOL].fields[h.join(".")]=R,{field:y,spanAdded:!0}}(e,t,A,g,R);m=n.span,N=s}return r.context.with(r.trace.setSpan(r.context.active(),m),()=>{try{let e=s.call(this,T,d,A,g);if((0,n.isPromise)(e))return e.then(e=>(S(m,N),e),e=>{throw E(m,e,N),e});return S(m,N),e}catch(e){throw E(m,e,N),e}})}return T[a.OTEL_PATCHED_SYMBOL]=!0,T}n.wrapFieldResolver=A},98582,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-graphql"},400932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GraphQLInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(187477),a=e.r(476424),s=e.r(46931),l=e.r(718496),u=e.r(931418),c=e.r(98582),p={mergeItems:!1,depth:-1,allowValues:!1,ignoreResolveSpans:!1},_=[">=14.0.0 <17"];class T extends o.InstrumentationBase{constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...p,...e})}setConfig(e={}){super.setConfig({...p,...e})}init(){let e=new o.InstrumentationNodeModuleDefinition("graphql",_);return e.files.push(this._addPatchingExecute()),e.files.push(this._addPatchingParser()),e.files.push(this._addPatchingValidate()),e}_addPatchingExecute(){return new o.InstrumentationNodeModuleFile("graphql/execution/execute.js",_,e=>((0,o.isWrapped)(e.execute)&&this._unwrap(e,"execute"),this._wrap(e,"execute",this._patchExecute(e.defaultFieldResolver)),e),e=>{e&&this._unwrap(e,"execute")})}_addPatchingParser(){return new o.InstrumentationNodeModuleFile("graphql/language/parser.js",_,e=>((0,o.isWrapped)(e.parse)&&this._unwrap(e,"parse"),this._wrap(e,"parse",this._patchParse()),e),e=>{e&&this._unwrap(e,"parse")})}_addPatchingValidate(){return new o.InstrumentationNodeModuleFile("graphql/validation/validate.js",_,e=>((0,o.isWrapped)(e.validate)&&this._unwrap(e,"validate"),this._wrap(e,"validate",this._patchValidate()),e),e=>{e&&this._unwrap(e,"validate")})}_patchExecute(e){let t=this;return function(n){return function(){let i;if(arguments.length>=2){let n=arguments;i=t._wrapExecuteArgs(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],e)}else{let n=arguments[0];i=t._wrapExecuteArgs(n.schema,n.document,n.rootValue,n.contextValue,n.variableValues,n.operationName,n.fieldResolver,n.typeResolver,e)}let a=(0,u.getOperation)(i.document,i.operationName),l=t._createExecuteSpan(a,i);return i.contextValue[s.OTEL_GRAPHQL_DATA_SYMBOL]={source:i.document?i.document||i.document[s.OTEL_GRAPHQL_DATA_SYMBOL]:void 0,span:l,fields:{}},r.context.with(r.trace.setSpan(r.context.active(),l),()=>(0,o.safeExecuteInTheMiddle)(()=>n.apply(this,[i]),(e,n)=>{t._handleExecutionResult(l,e,n)}))}}}_handleExecutionResult(e,t,n){let r=this.getConfig();if(void 0===n||t)return void(0,u.endSpan)(e,t);if((0,u.isPromise)(n))n.then(t=>{"function"!=typeof r.responseHook?(0,u.endSpan)(e):this._executeResponseHook(e,t)},t=>{(0,u.endSpan)(e,t)});else{if("function"!=typeof r.responseHook)return void(0,u.endSpan)(e);this._executeResponseHook(e,n)}}_executeResponseHook(e,t){let{responseHook:n}=this.getConfig();n&&(0,o.safeExecuteInTheMiddle)(()=>{n(e,t)},t=>{t&&this._diag.error("Error running response hook",t),(0,u.endSpan)(e,void 0)},!0)}_patchParse(){let e=this;return function(t){return function(n,r){return e._parse(this,t,n,r)}}}_patchValidate(){let e=this;return function(t){return function(n,r,o,i,a){return e._validate(this,t,n,r,o,a,i)}}}_parse(e,t,n,a){let s=this.getConfig(),l=this.tracer.startSpan(i.SpanNames.PARSE);return r.context.with(r.trace.setSpan(r.context.active(),l),()=>(0,o.safeExecuteInTheMiddle)(()=>t.call(e,n,a),(e,t)=>{t&&((0,u.getOperation)(t)?t.loc&&(0,u.addSpanSource)(l,t.loc,s.allowValues):l.updateName(i.SpanNames.SCHEMA_PARSE)),(0,u.endSpan)(l,e)}))}_validate(e,t,n,s,l,c,p){let _=this.tracer.startSpan(i.SpanNames.VALIDATE,{});return r.context.with(r.trace.setSpan(r.context.active(),_),()=>(0,o.safeExecuteInTheMiddle)(()=>t.call(e,n,s,l,p,c),(e,t)=>{s.loc||_.updateName(i.SpanNames.SCHEMA_VALIDATE),t&&t.length&&_.recordException({name:a.AttributeNames.ERROR_VALIDATION_NAME,message:JSON.stringify(t)}),(0,u.endSpan)(_,e)}))}_createExecuteSpan(e,t){let n=this.getConfig(),r=this.tracer.startSpan(i.SpanNames.EXECUTE,{});if(e){let{operation:t,name:n}=e;r.setAttribute(a.AttributeNames.OPERATION_TYPE,t);let o=n?.value;o?(r.setAttribute(a.AttributeNames.OPERATION_NAME,o),r.updateName(`${t} ${o}`)):r.updateName(t)}else{let e=" ";t.operationName&&(e=` "${t.operationName}" `),e=l.OPERATION_NOT_SUPPORTED.replace("$operationName$",e),r.setAttribute(a.AttributeNames.OPERATION_NAME,e)}return t.document?.loc&&(0,u.addSpanSource)(r,t.document.loc,n.allowValues),t.variableValues&&n.allowValues&&(0,u.addInputVariableAttributes)(r,t.variableValues),r}_wrapExecuteArgs(e,t,n,r,o,i,a,l,c){if(r||(r={}),r[s.OTEL_GRAPHQL_DATA_SYMBOL]||this.getConfig().ignoreResolveSpans)return{schema:e,document:t,rootValue:n,contextValue:r,variableValues:o,operationName:i,fieldResolver:a,typeResolver:l};let p=null==a,_=a??c;return a=(0,u.wrapFieldResolver)(this.tracer,()=>this.getConfig(),_,p),e&&((0,u.wrapFields)(e.getQueryType(),this.tracer,()=>this.getConfig()),(0,u.wrapFields)(e.getMutationType(),this.tracer,()=>this.getConfig())),{schema:e,document:t,rootValue:n,contextValue:r,variableValues:o,operationName:i,fieldResolver:a,typeResolver:l}}}n.GraphQLInstrumentation=T},928683,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GraphQLInstrumentation=void 0;var r=e.r(400932);Object.defineProperty(n,"GraphQLInstrumentation",{enumerable:!0,get:function(){return r.GraphQLInstrumentation}})},176571,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(928683),i=e.r(976285),a=e.r(625331),s=e.r(779607),l="Graphql",u=a.generateInstrumentOnce(l,o.GraphQLInstrumentation,e=>{let t=c(e);return{...t,responseHook(e,n){a.addOriginToSpan(e,"auto.graphql.otel.graphql"),n.errors?.length&&!i.spanToJSON(e).status&&e.setStatus({code:r.SpanStatusCode.ERROR});let o=i.spanToJSON(e).data,l=o["graphql.operation.type"],u=o["graphql.operation.name"];if(t.useOperationNameForRootSpan&&l){let t=i.getRootSpan(e),n=i.spanToJSON(t).data[s.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION]||[],r=u?`${l} ${u}`:`${l}`;Array.isArray(n)?(n.push(r),t.setAttribute(s.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,n)):"string"==typeof n?t.setAttribute(s.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,[n,r]):t.setAttribute(s.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,r),i.spanToJSON(t).data["original-description"]||t.setAttribute("original-description",i.spanToJSON(t).description),t.updateName(`${i.spanToJSON(t).data["original-description"]} (${function(e){if(Array.isArray(e)){let t=e.slice().sort();return t.length<=5?t.join(", "):`${t.slice(0,5).join(", ")}, +${t.length-5}`}return`${e}`}(n)})`)}}}});function c(e){return{ignoreResolveSpans:!0,ignoreTrivialResolveSpans:!0,useOperationNameForRootSpan:!0,...e}}n.graphqlIntegration=i.defineIntegration((e={})=>({name:l,setupOnce(){u(c(e))}})),n.instrumentGraphql=u},233787,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EVENT_LISTENERS_SET=void 0,n.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.kafkajs.eventListenersSet")},513616,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.bufferTextMapGetter=void 0,n.bufferTextMapGetter={get(e,t){if(e){for(let n of Object.keys(e))if(n===t||n.toLowerCase()===t)return e[n]?.toString()}},keys:e=>e?Object.keys(e):[]}},996292,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_MESSAGING_PROCESS_DURATION=n.METRIC_MESSAGING_CLIENT_SENT_MESSAGES=n.METRIC_MESSAGING_CLIENT_OPERATION_DURATION=n.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES=n.MESSAGING_SYSTEM_VALUE_KAFKA=n.MESSAGING_OPERATION_TYPE_VALUE_SEND=n.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE=n.MESSAGING_OPERATION_TYPE_VALUE_PROCESS=n.ATTR_MESSAGING_SYSTEM=n.ATTR_MESSAGING_OPERATION_TYPE=n.ATTR_MESSAGING_OPERATION_NAME=n.ATTR_MESSAGING_KAFKA_OFFSET=n.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE=n.ATTR_MESSAGING_KAFKA_MESSAGE_KEY=n.ATTR_MESSAGING_DESTINATION_PARTITION_ID=n.ATTR_MESSAGING_DESTINATION_NAME=n.ATTR_MESSAGING_BATCH_MESSAGE_COUNT=void 0,n.ATTR_MESSAGING_BATCH_MESSAGE_COUNT="messaging.batch.message_count",n.ATTR_MESSAGING_DESTINATION_NAME="messaging.destination.name",n.ATTR_MESSAGING_DESTINATION_PARTITION_ID="messaging.destination.partition.id",n.ATTR_MESSAGING_KAFKA_MESSAGE_KEY="messaging.kafka.message.key",n.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE="messaging.kafka.message.tombstone",n.ATTR_MESSAGING_KAFKA_OFFSET="messaging.kafka.offset",n.ATTR_MESSAGING_OPERATION_NAME="messaging.operation.name",n.ATTR_MESSAGING_OPERATION_TYPE="messaging.operation.type",n.ATTR_MESSAGING_SYSTEM="messaging.system",n.MESSAGING_OPERATION_TYPE_VALUE_PROCESS="process",n.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE="receive",n.MESSAGING_OPERATION_TYPE_VALUE_SEND="send",n.MESSAGING_SYSTEM_VALUE_KAFKA="kafka",n.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES="messaging.client.consumed.messages",n.METRIC_MESSAGING_CLIENT_OPERATION_DURATION="messaging.client.operation.duration",n.METRIC_MESSAGING_CLIENT_SENT_MESSAGES="messaging.client.sent.messages",n.METRIC_MESSAGING_PROCESS_DURATION="messaging.process.duration"},419585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.23.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-kafkajs"},803515,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KafkaJsInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(233787),s=e.r(513616),l=e.r(996292),u=e.r(419585);function c(e,t,n){return r=>{e.add(t,{...n,...r?{[i.ATTR_ERROR_TYPE]:r}:{}})}}function p(e,t,n){return r=>{e.record((Date.now()-t)/1e3,{...n,...r?{[i.ATTR_ERROR_TYPE]:r}:{}})}}let _=[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10];class T extends o.InstrumentationBase{constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e)}_updateMetricInstruments(){this._clientDuration=this.meter.createHistogram(l.METRIC_MESSAGING_CLIENT_OPERATION_DURATION,{advice:{explicitBucketBoundaries:_}}),this._sentMessages=this.meter.createCounter(l.METRIC_MESSAGING_CLIENT_SENT_MESSAGES),this._consumedMessages=this.meter.createCounter(l.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES),this._processDuration=this.meter.createHistogram(l.METRIC_MESSAGING_PROCESS_DURATION,{advice:{explicitBucketBoundaries:_}})}init(){let e=e=>{(0,o.isWrapped)(e?.Kafka?.prototype.producer)&&this._unwrap(e.Kafka.prototype,"producer"),(0,o.isWrapped)(e?.Kafka?.prototype.consumer)&&this._unwrap(e.Kafka.prototype,"consumer")};return new o.InstrumentationNodeModuleDefinition("kafkajs",[">=0.3.0 <3"],t=>(e(t),this._wrap(t?.Kafka?.prototype,"producer",this._getProducerPatch()),this._wrap(t?.Kafka?.prototype,"consumer",this._getConsumerPatch()),t),e)}_getConsumerPatch(){let e=this;return t=>function(...n){let r=t.apply(this,n);return(0,o.isWrapped)(r.run)&&e._unwrap(r,"run"),e._wrap(r,"run",e._getConsumerRunPatch()),e._setKafkaEventListeners(r),r}}_setKafkaEventListeners(e){e[a.EVENT_LISTENERS_SET]||(e.events?.REQUEST&&e.on(e.events.REQUEST,this._recordClientDurationMetric.bind(this)),e[a.EVENT_LISTENERS_SET]=!0)}_recordClientDurationMetric(e){let[t,n]=e.payload.broker.split(":");this._clientDuration.record(e.payload.duration/1e3,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:`${e.payload.apiName}`,[i.ATTR_SERVER_ADDRESS]:t,[i.ATTR_SERVER_PORT]:Number.parseInt(n,10)})}_getProducerPatch(){let e=this;return t=>function(...n){let r=t.apply(this,n);return(0,o.isWrapped)(r.sendBatch)&&e._unwrap(r,"sendBatch"),e._wrap(r,"sendBatch",e._getSendBatchPatch()),(0,o.isWrapped)(r.send)&&e._unwrap(r,"send"),e._wrap(r,"send",e._getSendPatch()),(0,o.isWrapped)(r.transaction)&&e._unwrap(r,"transaction"),e._wrap(r,"transaction",e._getProducerTransactionPatch()),e._setKafkaEventListeners(r),r}}_getConsumerRunPatch(){let e=this;return t=>function(...n){let r=n[0];return r?.eachMessage&&((0,o.isWrapped)(r.eachMessage)&&e._unwrap(r,"eachMessage"),e._wrap(r,"eachMessage",e._getConsumerEachMessagePatch())),r?.eachBatch&&((0,o.isWrapped)(r.eachBatch)&&e._unwrap(r,"eachBatch"),e._wrap(r,"eachBatch",e._getConsumerEachBatchPatch())),t.call(this,r)}}_getConsumerEachMessagePatch(){let e=this;return t=>function(...n){let o=n[0],i=r.propagation.extract(r.ROOT_CONTEXT,o.message.headers,s.bufferTextMapGetter),a=e._startConsumerSpan({topic:o.topic,message:o.message,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,ctx:i,attributes:{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.partition)}}),u=[p(e._processDuration,Date.now(),{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:o.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.partition)}),c(e._consumedMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:o.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.partition)})],_=r.context.with(r.trace.setSpan(i,a),()=>t.apply(this,n));return e._endSpansOnPromise([a],u,_)}}_getConsumerEachBatchPatch(){return e=>{let t=this;return function(...n){let o=n[0],i=t._startConsumerSpan({topic:o.batch.topic,message:void 0,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,ctx:r.ROOT_CONTEXT,attributes:{[l.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]:o.batch.messages.length,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.batch.partition)}});return r.context.with(r.trace.setSpan(r.context.active(),i),()=>{let a=Date.now(),u=[],_=[c(t._consumedMessages,o.batch.messages.length,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:o.batch.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.batch.partition)})];o.batch.messages.forEach(e=>{let n,i=r.propagation.extract(r.ROOT_CONTEXT,e.headers,s.bufferTextMapGetter),c=r.trace.getSpan(i)?.spanContext();c&&(n={context:c}),u.push(t._startConsumerSpan({topic:o.batch.topic,message:e,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,link:n,attributes:{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.batch.partition)}})),_.push(p(t._processDuration,a,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:o.batch.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(o.batch.partition)}))});let T=e.apply(this,n);return u.unshift(i),t._endSpansOnPromise(u,_,T)})}}}_getProducerTransactionPatch(){let e=this;return t=>function(...n){let o=e.tracer.startSpan("transaction"),i=t.apply(this,n);return i.then(t=>{let n=t.send;t.send=function(...t){return r.context.with(r.trace.setSpan(r.context.active(),o),()=>e._getSendPatch()(n).apply(this,t).catch(e=>{throw o.setStatus({code:r.SpanStatusCode.ERROR,message:e?.message}),o.recordException(e),e}))};let i=t.sendBatch;t.sendBatch=function(...t){return r.context.with(r.trace.setSpan(r.context.active(),o),()=>e._getSendBatchPatch()(i).apply(this,t).catch(e=>{throw o.setStatus({code:r.SpanStatusCode.ERROR,message:e?.message}),o.recordException(e),e}))};let a=t.commit;t.commit=function(...t){let n=a.apply(this,t).then(()=>{o.setStatus({code:r.SpanStatusCode.OK})});return e._endSpansOnPromise([o],[],n)};let s=t.abort;t.abort=function(...t){let n=s.apply(this,t);return e._endSpansOnPromise([o],[],n)}}).catch(e=>{o.setStatus({code:r.SpanStatusCode.ERROR,message:e?.message}),o.recordException(e),o.end()}),i}}_getSendBatchPatch(){let e=this;return t=>function(...n){let r=n[0].topicMessages||[],o=[],i=[];r.forEach(t=>{t.messages.forEach(n=>{o.push(e._startProducerSpan(t.topic,n)),i.push(c(e._sentMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_DESTINATION_NAME]:t.topic,...void 0!==n.partition?{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(n.partition)}:{}}))})});let a=t.apply(this,n);return e._endSpansOnPromise(o,i,a)}}_getSendPatch(){let e=this;return t=>function(...n){let r=n[0],o=r.messages.map(t=>e._startProducerSpan(r.topic,t)),i=r.messages.map(t=>c(e._sentMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_DESTINATION_NAME]:r.topic,...void 0!==t.partition?{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(t.partition)}:{}})),a=t.apply(this,n);return e._endSpansOnPromise(o,i,a)}}_endSpansOnPromise(e,t,n){return Promise.resolve(n).then(e=>(t.forEach(e=>e()),e)).catch(n=>{let o,a=i.ERROR_TYPE_VALUE_OTHER;throw"string"==typeof n||void 0===n?o=n:"object"==typeof n&&Object.prototype.hasOwnProperty.call(n,"message")&&(o=n.message,a=n.constructor.name),t.forEach(e=>e(a)),e.forEach(e=>{e.setAttribute(i.ATTR_ERROR_TYPE,a),e.setStatus({code:r.SpanStatusCode.ERROR,message:o})}),n}).finally(()=>{e.forEach(e=>e.end())})}_startConsumerSpan({topic:e,message:t,operationType:n,ctx:i,link:a,attributes:s}){let u=n===l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?"poll":n,c=this.tracer.startSpan(`${u} ${e}`,{kind:n===l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?r.SpanKind.CLIENT:r.SpanKind.CONSUMER,attributes:{...s,[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_DESTINATION_NAME]:e,[l.ATTR_MESSAGING_OPERATION_TYPE]:n,[l.ATTR_MESSAGING_OPERATION_NAME]:u,[l.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:t?.key?String(t.key):void 0,[l.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!t?.key&&null===t.value||void 0,[l.ATTR_MESSAGING_KAFKA_OFFSET]:t?.offset},links:a?[a]:[]},i),{consumerHook:p}=this.getConfig();return p&&t&&(0,o.safeExecuteInTheMiddle)(()=>p(c,{topic:e,message:t}),e=>{e&&this._diag.error("consumerHook error",e)},!0),c}_startProducerSpan(e,t){let n=this.tracer.startSpan(`send ${e}`,{kind:r.SpanKind.PRODUCER,attributes:{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_DESTINATION_NAME]:e,[l.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:t.key?String(t.key):void 0,[l.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!t.key&&null===t.value||void 0,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:void 0!==t.partition?String(t.partition):void 0,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_OPERATION_TYPE]:l.MESSAGING_OPERATION_TYPE_VALUE_SEND}});t.headers=t.headers??{},r.propagation.inject(r.trace.setSpan(r.context.active(),n),t.headers);let{producerHook:i}=this.getConfig();return i&&(0,o.safeExecuteInTheMiddle)(()=>i(n,{topic:e,message:t}),e=>{e&&this._diag.error("producerHook error",e)},!0),n}}n.KafkaJsInstrumentation=T},5468,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KafkaJsInstrumentation=void 0;var r=e.r(803515);Object.defineProperty(n,"KafkaJsInstrumentation",{enumerable:!0,get:function(){return r.KafkaJsInstrumentation}})},934925,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(5468),o=e.r(976285),i=e.r(625331),a="Kafka",s=i.generateInstrumentOnce(a,()=>new r.KafkaJsInstrumentation({consumerHook(e){i.addOriginToSpan(e,"auto.kafkajs.otel.consumer")},producerHook(e){i.addOriginToSpan(e,"auto.kafkajs.otel.producer")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentKafka=s,n.kafkaIntegration=l},959616,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.58.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-lru-memoizer"},726974,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.LruMemoizerInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(959616);class a extends o.InstrumentationBase{constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new o.InstrumentationNodeModuleDefinition("lru-memoizer",[">=1.3 <4"],e=>{let t=function(){let t=e.apply(this,arguments);return function(){let e=[...arguments],n=e.pop(),o="function"==typeof n?r.context.bind(r.context.active(),n):n;return e.push(o),t.apply(this,e)}};return t.sync=e.sync,t},void 0)]}}n.LruMemoizerInstrumentation=a},97630,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.LruMemoizerInstrumentation=void 0;var r=e.r(726974);Object.defineProperty(n,"LruMemoizerInstrumentation",{enumerable:!0,get:function(){return r.LruMemoizerInstrumentation}})},888804,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(97630),o=e.r(976285),i=e.r(625331),a="LruMemoizer",s=i.generateInstrumentOnce(a,()=>new r.LruMemoizerInstrumentation),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentLruMemoizer=s,n.lruMemoizerIntegration=l},301506,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTIONS_USAGE=n.DB_SYSTEM_VALUE_MONGODB=n.DB_SYSTEM_NAME_VALUE_MONGODB=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_OPERATION=n.ATTR_DB_NAME=n.ATTR_DB_MONGODB_COLLECTION=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",n.ATTR_DB_NAME="db.name",n.ATTR_DB_OPERATION="db.operation",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb",n.DB_SYSTEM_VALUE_MONGODB="mongodb",n.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},488067,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.MongodbCommandType=void 0,(r=n.MongodbCommandType||(n.MongodbCommandType={})).CREATE_INDEXES="createIndexes",r.FIND_AND_MODIFY="findAndModify",r.IS_MASTER="isMaster",r.COUNT="count",r.AGGREGATE="aggregate",r.UNKNOWN="unknown"},409179,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.67.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mongodb"},121806,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongoDBInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(301506),s=e.r(488067),l=e.r(409179),u={requireParentSpan:!0};class c extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,{...u,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...u,...e})}_updateMetricInstruments(){this._connectionsUsage=this.meter.createUpDownCounter(a.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(e,t,n){this._connectionsUsage?.add(e,{"pool.name":t,state:n})}init(){let{v3PatchConnection:e,v3UnpatchConnection:t}=this._getV3ConnectionPatches(),{v4PatchConnect:n,v4UnpatchConnect:r}=this._getV4ConnectPatches(),{v4PatchConnectionCallback:i,v4PatchConnectionPromise:a,v4UnpatchConnection:s}=this._getV4ConnectionPatches(),{v4PatchConnectionPool:l,v4UnpatchConnectionPool:u}=this._getV4ConnectionPoolPatches(),{v4PatchSessions:c,v4UnpatchSessions:p}=this._getV4SessionsPatches();return[new o.InstrumentationNodeModuleDefinition("mongodb",[">=3.3.0 <4"],void 0,void 0,[new o.InstrumentationNodeModuleFile("mongodb/lib/core/wireprotocol/index.js",[">=3.3.0 <4"],e,t)]),new o.InstrumentationNodeModuleDefinition("mongodb",[">=4.0.0 <8"],void 0,void 0,[new o.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=4.0.0 <6.4"],i,s),new o.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=6.4.0 <8"],a,s),new o.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection_pool.js",[">=4.0.0 <6.4"],l,u),new o.InstrumentationNodeModuleFile("mongodb/lib/cmap/connect.js",[">=4.0.0 <8"],n,r),new o.InstrumentationNodeModuleFile("mongodb/lib/sessions.js",[">=4.0.0 <8"],c,p)])]}_getV3ConnectionPatches(){return{v3PatchConnection:e=>((0,o.isWrapped)(e.insert)&&this._unwrap(e,"insert"),this._wrap(e,"insert",this._getV3PatchOperation("insert")),(0,o.isWrapped)(e.remove)&&this._unwrap(e,"remove"),this._wrap(e,"remove",this._getV3PatchOperation("remove")),(0,o.isWrapped)(e.update)&&this._unwrap(e,"update"),this._wrap(e,"update",this._getV3PatchOperation("update")),(0,o.isWrapped)(e.command)&&this._unwrap(e,"command"),this._wrap(e,"command",this._getV3PatchCommand()),(0,o.isWrapped)(e.query)&&this._unwrap(e,"query"),this._wrap(e,"query",this._getV3PatchFind()),(0,o.isWrapped)(e.getMore)&&this._unwrap(e,"getMore"),this._wrap(e,"getMore",this._getV3PatchCursor()),e),v3UnpatchConnection:e=>{void 0!==e&&(this._unwrap(e,"insert"),this._unwrap(e,"remove"),this._unwrap(e,"update"),this._unwrap(e,"command"),this._unwrap(e,"query"),this._unwrap(e,"getMore"))}}}_getV4SessionsPatches(){return{v4PatchSessions:e=>((0,o.isWrapped)(e.acquire)&&this._unwrap(e,"acquire"),this._wrap(e.ServerSessionPool.prototype,"acquire",this._getV4AcquireCommand()),(0,o.isWrapped)(e.release)&&this._unwrap(e,"release"),this._wrap(e.ServerSessionPool.prototype,"release",this._getV4ReleaseCommand()),e),v4UnpatchSessions:e=>{void 0!==e&&((0,o.isWrapped)(e.acquire)&&this._unwrap(e,"acquire"),(0,o.isWrapped)(e.release)&&this._unwrap(e,"release"))}}}_getV4AcquireCommand(){let e=this;return t=>function(){let n=this.sessions.length,r=t.call(this),o=this.sessions.length;return n===o?e._connCountAdd(1,e._poolName,"used"):n-1===o&&(e._connCountAdd(-1,e._poolName,"idle"),e._connCountAdd(1,e._poolName,"used")),r}}_getV4ReleaseCommand(){let e=this;return t=>function(n){let r=t.call(this,n);return e._connCountAdd(-1,e._poolName,"used"),e._connCountAdd(1,e._poolName,"idle"),r}}_getV4ConnectionPoolPatches(){return{v4PatchConnectionPool:e=>{let t=e.ConnectionPool.prototype;return(0,o.isWrapped)(t.checkOut)&&this._unwrap(t,"checkOut"),this._wrap(t,"checkOut",this._getV4ConnectionPoolCheckOut()),e},v4UnpatchConnectionPool:e=>{void 0!==e&&this._unwrap(e.ConnectionPool.prototype,"checkOut")}}}_getV4ConnectPatches(){return{v4PatchConnect:e=>((0,o.isWrapped)(e.connect)&&this._unwrap(e,"connect"),this._wrap(e,"connect",this._getV4ConnectCommand()),e),v4UnpatchConnect:e=>{void 0!==e&&this._unwrap(e,"connect")}}}_getV4ConnectionPoolCheckOut(){return e=>function(t){let n=r.context.bind(r.context.active(),t);return e.call(this,n)}}_getV4ConnectCommand(){let e=this;return t=>function(n,r){if(1===t.length){let r=t.call(this,n);return r&&"function"==typeof r.then&&r.then(()=>e.setPoolName(n),()=>void 0),r}return t.call(this,n,function(t,o){t||!o||e.setPoolName(n),r(t,o)})}}_getV4ConnectionPatches(){return{v4PatchConnectionCallback:e=>((0,o.isWrapped)(e.Connection.prototype.command)&&this._unwrap(e.Connection.prototype,"command"),this._wrap(e.Connection.prototype,"command",this._getV4PatchCommandCallback()),e),v4PatchConnectionPromise:e=>((0,o.isWrapped)(e.Connection.prototype.command)&&this._unwrap(e.Connection.prototype,"command"),this._wrap(e.Connection.prototype,"command",this._getV4PatchCommandPromise()),e),v4UnpatchConnection:e=>{void 0!==e&&this._unwrap(e.Connection.prototype,"command")}}}_getV3PatchOperation(e){let t=this;return n=>function(o,i,a,s,l){let u=r.trace.getSpan(r.context.active()),c=t._checkSkipInstrumentation(u),p="function"==typeof s?s:l;if(c||"function"!=typeof p||"object"!=typeof a)if("function"==typeof s)return n.call(this,o,i,a,s);else return n.call(this,o,i,a,s,l);let _=t._getV3SpanAttributes(i,o,a[0],e),T=t._spanNameFromAttrs(_),d=t.tracer.startSpan(T,{kind:r.SpanKind.CLIENT,attributes:_}),E=t._patchEnd(d,p);return"function"==typeof s?n.call(this,o,i,a,E):n.call(this,o,i,a,s,E)}}_getV3PatchCommand(){let e=this;return t=>function(n,o,i,a,l){let u=r.trace.getSpan(r.context.active()),p=e._checkSkipInstrumentation(u),_="function"==typeof a?a:l;if(p||"function"!=typeof _||"object"!=typeof i)if("function"==typeof a)return t.call(this,n,o,i,a);else return t.call(this,n,o,i,a,l);let T=c._getCommandType(i),d=T===s.MongodbCommandType.UNKNOWN?void 0:T,E=e._getV3SpanAttributes(o,n,i,d),S=e._spanNameFromAttrs(E),A=e.tracer.startSpan(S,{kind:r.SpanKind.CLIENT,attributes:E}),g=e._patchEnd(A,_);return"function"==typeof a?t.call(this,n,o,i,g):t.call(this,n,o,i,a,g)}}_getV4PatchCommandCallback(){let e=this;return t=>function(n,o,i,a){let s,l=r.trace.getSpan(r.context.active()),u=e._checkSkipInstrumentation(l),c=Object.keys(o)[0];if("object"!=typeof o||o.ismaster||o.hello)return t.call(this,n,o,i,a);if(!u){let t=e._getV4SpanAttributes(this,n,o,c),i=e._spanNameFromAttrs(t);s=e.tracer.startSpan(i,{kind:r.SpanKind.CLIENT,attributes:t})}let p=e._patchEnd(s,a,this.id,c);return t.call(this,n,o,i,p)}}_getV4PatchCommandPromise(){let e=this;return t=>function(...n){let o,[i,a]=n,s=r.trace.getSpan(r.context.active()),l=e._checkSkipInstrumentation(s),u=Object.keys(a)[0];if("object"!=typeof a||a.ismaster||a.hello)return t.apply(this,n);if(!l){let t=e._getV4SpanAttributes(this,i,a,u),n=e._spanNameFromAttrs(t);o=e.tracer.startSpan(n,{kind:r.SpanKind.CLIENT,attributes:t})}let c=e._patchEnd(o,()=>void 0,this.id,u),p=t.apply(this,n);return p.then(e=>c(null,e),e=>c(e)),p}}_getV3PatchFind(){let e=this;return t=>function(n,o,i,a,s,l){let u=r.trace.getSpan(r.context.active()),c=e._checkSkipInstrumentation(u),p="function"==typeof s?s:l;if(c||"function"!=typeof p||"object"!=typeof i)if("function"==typeof s)return t.call(this,n,o,i,a,s);else return t.call(this,n,o,i,a,s,l);let _=e._getV3SpanAttributes(o,n,i,"find"),T=e._spanNameFromAttrs(_),d=e.tracer.startSpan(T,{kind:r.SpanKind.CLIENT,attributes:_}),E=e._patchEnd(d,p);return"function"==typeof s?t.call(this,n,o,i,a,E):t.call(this,n,o,i,a,s,E)}}_getV3PatchCursor(){let e=this;return t=>function(n,o,i,a,s,l){let u=r.trace.getSpan(r.context.active()),c=e._checkSkipInstrumentation(u),p="function"==typeof s?s:l;if(c||"function"!=typeof p)if("function"==typeof s)return t.call(this,n,o,i,a,s);else return t.call(this,n,o,i,a,s,l);let _=e._getV3SpanAttributes(o,n,i.cmd,"getMore"),T=e._spanNameFromAttrs(_),d=e.tracer.startSpan(T,{kind:r.SpanKind.CLIENT,attributes:_}),E=e._patchEnd(d,p);return"function"==typeof s?t.call(this,n,o,i,a,E):t.call(this,n,o,i,a,s,E)}}static _getCommandType(e){if(void 0!==e.createIndexes)return s.MongodbCommandType.CREATE_INDEXES;if(void 0!==e.findandmodify)return s.MongodbCommandType.FIND_AND_MODIFY;if(void 0!==e.ismaster)return s.MongodbCommandType.IS_MASTER;if(void 0!==e.count)return s.MongodbCommandType.COUNT;if(void 0!==e.aggregate)return s.MongodbCommandType.AGGREGATE;else return s.MongodbCommandType.UNKNOWN}_getV4SpanAttributes(e,t,n,r){let o,i,a;if(e){let t="string"==typeof e.address?e.address.split(":"):"";2===t.length&&(o=t[0],i=t[1])}return a=n?.documents&&n.documents[0]?n.documents[0]:n?.cursors?n.cursors:n,this._getSpanAttributes(t.db,t.collection,o,i,a,r)}_getV3SpanAttributes(e,t,n,r){let o,i;if(t&&t.s&&(o=t.s.options?.host??t.s.host,i=(t.s.options?.port??t.s.port)?.toString(),null==o||null==i)){let e=t.description?.address;if(e){let t=e.split(":");o=t[0],i=t[1]}}let[a,s]=e.toString().split("."),l=n?.query??n?.q??n;return this._getSpanAttributes(a,s,o,i,l,r)}_getSpanAttributes(e,t,n,r,s,l){let u={};if(this._dbSemconvStability&o.SemconvStability.OLD&&(u[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_MONGODB,u[a.ATTR_DB_NAME]=e,u[a.ATTR_DB_MONGODB_COLLECTION]=t,u[a.ATTR_DB_OPERATION]=l,u[a.ATTR_DB_CONNECTION_STRING]=`mongodb://${n}:${r}/${e}`),this._dbSemconvStability&o.SemconvStability.STABLE&&(u[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_MONGODB,u[i.ATTR_DB_NAMESPACE]=e,u[i.ATTR_DB_OPERATION_NAME]=l,u[i.ATTR_DB_COLLECTION_NAME]=t),n&&r){this._netSemconvStability&o.SemconvStability.OLD&&(u[a.ATTR_NET_PEER_NAME]=n),this._netSemconvStability&o.SemconvStability.STABLE&&(u[i.ATTR_SERVER_ADDRESS]=n);let e=parseInt(r,10);!isNaN(e)&&(this._netSemconvStability&o.SemconvStability.OLD&&(u[a.ATTR_NET_PEER_PORT]=e),this._netSemconvStability&o.SemconvStability.STABLE&&(u[i.ATTR_SERVER_PORT]=e))}if(s){let{dbStatementSerializer:e}=this.getConfig(),t="function"==typeof e?e:this._defaultDbStatementSerializer.bind(this);(0,o.safeExecuteInTheMiddle)(()=>{let e=t(s);this._dbSemconvStability&o.SemconvStability.OLD&&(u[a.ATTR_DB_STATEMENT]=e),this._dbSemconvStability&o.SemconvStability.STABLE&&(u[i.ATTR_DB_QUERY_TEXT]=e)},e=>{e&&this._diag.error("Error running dbStatementSerializer hook",e)},!0)}return u}_spanNameFromAttrs(e){return this._dbSemconvStability&o.SemconvStability.STABLE?[e[i.ATTR_DB_OPERATION_NAME],e[i.ATTR_DB_COLLECTION_NAME]].filter(e=>e).join(" ")||a.DB_SYSTEM_NAME_VALUE_MONGODB:`mongodb.${e[a.ATTR_DB_OPERATION]||"command"}`}_getDefaultDbStatementReplacer(){let e=new WeakSet;return(t,n)=>"object"==typeof n&&n?e.has(n)?"[Circular]":(e.add(n),n):"?"}_defaultDbStatementSerializer(e){let{enhancedDatabaseReporting:t}=this.getConfig();return t?JSON.stringify(e):JSON.stringify(e,this._getDefaultDbStatementReplacer())}_handleExecutionResult(e,t){let{responseHook:n}=this.getConfig();"function"==typeof n&&(0,o.safeExecuteInTheMiddle)(()=>{n(e,{data:t})},e=>{e&&this._diag.error("Error running response hook",e)},!0)}_patchEnd(e,t,n,o){let i=r.context.active(),a=this,s=!1;return function(...n){if(!s){s=!0;let t=n[0];if(e){if(t instanceof Error)e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message});else{let t=n[1];a._handleExecutionResult(e,t)}e.end()}"endSessions"===o&&a._connCountAdd(-1,a._poolName,"idle")}return r.context.with(i,()=>t.apply(this,n))}}setPoolName(e){let t=e.hostAddress?.host,n=e.hostAddress?.port,r=e.dbName,o=`mongodb://${t}:${n}/${r}`;this._poolName=o}_checkSkipInstrumentation(e){return!0===this.getConfig().requireParentSpan&&void 0===e}}n.MongoDBInstrumentation=c},818,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.MongodbCommandType=void 0,(r=n.MongodbCommandType||(n.MongodbCommandType={})).CREATE_INDEXES="createIndexes",r.FIND_AND_MODIFY="findAndModify",r.IS_MASTER="isMaster",r.COUNT="count",r.UNKNOWN="unknown"},101229,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongodbCommandType=n.MongoDBInstrumentation=void 0;var r=e.r(121806);Object.defineProperty(n,"MongoDBInstrumentation",{enumerable:!0,get:function(){return r.MongoDBInstrumentation}});var o=e.r(818);Object.defineProperty(n,"MongodbCommandType",{enumerable:!0,get:function(){return o.MongodbCommandType}})},143655,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(101229),o=e.r(976285),i=e.r(625331),a="Mongo",s=i.generateInstrumentOnce(a,()=>new r.MongoDBInstrumentation({dbStatementSerializer:l,responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mongo")}}));function l(e){return JSON.stringify(function e(t){var n,r;let o;return Array.isArray(t)?t.map(t=>e(t)):"object"!=typeof(n=t)||null===n||(r=n,o=!1,"u">typeof Buffer&&(o=Buffer.isBuffer(r)),o)?"?":Object.entries(t).map(([t,n])=>[t,e(n)]).reduce((e,t)=>(Array.isArray(t)&&(e[t[0]]=t[1]),e),{})}(e))}let u=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n._defaultDbStatementSerializer=l,n.instrumentMongo=s,n.mongoIntegration=u},214787,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_NAME_VALUE_MONGODB=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_OPERATION=n.ATTR_DB_NAME=n.ATTR_DB_MONGODB_COLLECTION=void 0,n.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",n.ATTR_DB_NAME="db.name",n.ATTR_DB_OPERATION="db.operation",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb"},388687,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.handleCallbackResponse=n.handlePromiseResponse=n.getAttributesFromCollection=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(214787),a=e.r(808119);function s(e,t={}){e.recordException(t),e.setStatus({code:r.SpanStatusCode.ERROR,message:`${t.message} ${t.code?` -Mongoose Error Code: ${t.code}`:""}`})}function l(e,t,n,i){n&&(0,o.safeExecuteInTheMiddle)(()=>n(e,{moduleVersion:i,response:t}),e=>{e&&r.diag.error("mongoose instrumentation: responseHook error",e)},!0)}n.getAttributesFromCollection=function(e,t,n){let r={};return t&o.SemconvStability.OLD&&(r[i.ATTR_DB_MONGODB_COLLECTION]=e.name,r[i.ATTR_DB_NAME]=e.conn.name,r[i.ATTR_DB_USER]=e.conn.user),t&o.SemconvStability.STABLE&&(r[a.ATTR_DB_COLLECTION_NAME]=e.name,r[a.ATTR_DB_NAMESPACE]=e.conn.name),n&o.SemconvStability.OLD&&(r[i.ATTR_NET_PEER_NAME]=e.conn.host,r[i.ATTR_NET_PEER_PORT]=e.conn.port),n&o.SemconvStability.STABLE&&(r[a.ATTR_SERVER_ADDRESS]=e.conn.host,r[a.ATTR_SERVER_PORT]=e.conn.port),r},n.handlePromiseResponse=function(e,t,n,r){return e instanceof Promise?e.then(e=>(l(t,e,n,r),e)).catch(e=>{throw s(t,e),e}).finally(()=>t.end()):(l(t,e,n,r),t.end(),e)},n.handleCallbackResponse=function(e,t,n,r,o,i,a){let u=0;return 2===o.length?u=1:3===o.length&&(u=2),o[u]=(t,n)=>(t?s(r,t):l(r,n,i,a),r.end(),e(t,n)),t.apply(n,o)}},661395,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},152852,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongooseInstrumentation=n._ALREADY_INSTRUMENTED=n._STORED_PARENT_SPAN=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(388687),a=e.r(204780),s=e.r(661395),l=e.r(214787),u=e.r(808119),c=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],p=["remove","count","findOneAndRemove",...c],_=["count","findOneAndRemove",...c],T=[...c];function d(e){return e?e.startsWith("6.")||e.startsWith("5.")?p:e.startsWith("7.")?_:T:c}function E(e){return e&&(e.startsWith("5.")||e.startsWith("6."))||!1}function S(e){return!!e&&!!e.startsWith("8.")&&parseInt(e.split(".")[1],10)>=21}n._STORED_PARENT_SPAN=Symbol("stored-parent-span"),n._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class A extends a.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(s.PACKAGE_NAME,s.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,a.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,a.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new a.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(e,t){let n="Module"===e[Symbol.toStringTag]?e.default:e;return this._wrap(n.Model.prototype,"save",this.patchOnModelMethods("save",t)),n.Model.prototype.$save=n.Model.prototype.save,E(t)&&this._wrap(n.Model.prototype,"remove",this.patchOnModelMethods("remove",t)),S(t)&&(this._wrap(n.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",t)),this._wrap(n.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",t))),this._wrap(n.Query.prototype,"exec",this.patchQueryExec(t)),this._wrap(n.Aggregate.prototype,"exec",this.patchAggregateExec(t)),d(t).forEach(e=>{this._wrap(n.Query.prototype,e,this.patchAndCaptureSpanContext(e))}),this._wrap(n.Model,"aggregate",this.patchModelAggregate()),this._wrap(n.Model,"insertMany",this.patchModelStatic("insertMany",t)),this._wrap(n.Model,"bulkWrite",this.patchModelStatic("bulkWrite",t)),n}unpatch(e,t){let n="Module"===e[Symbol.toStringTag]?e.default:e,r=d(t);this._unwrap(n.Model.prototype,"save"),n.Model.prototype.$save=n.Model.prototype.save,E(t)&&this._unwrap(n.Model.prototype,"remove"),S(t)&&(this._unwrap(n.Model.prototype,"updateOne"),this._unwrap(n.Model.prototype,"deleteOne")),this._unwrap(n.Query.prototype,"exec"),this._unwrap(n.Aggregate.prototype,"exec"),r.forEach(e=>{this._unwrap(n.Query.prototype,e)}),this._unwrap(n.Model,"aggregate"),this._unwrap(n.Model,"insertMany"),this._unwrap(n.Model,"bulkWrite")}patchAggregateExec(e){let t=this;return o=>function(i){if(t.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let s=this[n._STORED_PARENT_SPAN],c={},{dbStatementSerializer:p}=t.getConfig();if(p){let e=p("aggregate",{options:this.options,aggregatePipeline:this._pipeline});t._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_STATEMENT]=e),t._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_QUERY_TEXT]=e)}let _=t._startSpan(this._model.collection,this._model?.modelName,"aggregate",c,s);return t._handleResponse(_,o,this,arguments,i,e)}}patchQueryExec(e){let t=this;return o=>function(i){if(this[n._ALREADY_INSTRUMENTED]||t.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let s=this[n._STORED_PARENT_SPAN],c={},{dbStatementSerializer:p}=t.getConfig();if(p){let e=p(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});t._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_STATEMENT]=e),t._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_QUERY_TEXT]=e)}let _=t._startSpan(this.mongooseCollection,this.model.modelName,this.op,c,s);return t._handleResponse(_,o,this,arguments,i,e)}}patchOnModelMethods(e,t){let n=this;return o=>function(i,s){if(n.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let c={document:this};!i||i instanceof Function||(c.options=i);let p={},{dbStatementSerializer:_}=n.getConfig();if(_){let t=_(e,c);n._dbSemconvStability&a.SemconvStability.OLD&&(p[l.ATTR_DB_STATEMENT]=t),n._dbSemconvStability&a.SemconvStability.STABLE&&(p[u.ATTR_DB_QUERY_TEXT]=t)}let T=n._startSpan(this.constructor.collection,this.constructor.modelName,e,p);return i instanceof Function&&(s=i,i=void 0),n._handleResponse(T,o,this,arguments,s,t)}}_patchDocumentUpdateMethods(e,t){let o=this;return i=>function(s,c,p){if(o.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return i.apply(this,arguments);let _=p,T=s,d=c;"function"==typeof s?(_=s,T=void 0,d=void 0):"function"==typeof c&&(_=c,d=void 0);let E={},S=o.getConfig().dbStatementSerializer;if(S){let t=S(e,{condition:{_id:this._id},updates:T,options:d});o._dbSemconvStability&a.SemconvStability.OLD&&(E[l.ATTR_DB_STATEMENT]=t),o._dbSemconvStability&a.SemconvStability.STABLE&&(E[u.ATTR_DB_QUERY_TEXT]=t)}let A=o._startSpan(this.constructor.collection,this.constructor.modelName,e,E),g=o._handleResponse(A,i,this,arguments,_,t);return g&&"object"==typeof g&&(g[n._ALREADY_INSTRUMENTED]=!0),g}}patchModelStatic(e,t){let n=this;return o=>function(i,s,c){if(n.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);"function"==typeof s&&(c=s,s=void 0);let p={};switch(e){case"insertMany":p.documents=i;break;case"bulkWrite":p.operations=i;break;default:p.document=i}void 0!==s&&(p.options=s);let _={},{dbStatementSerializer:T}=n.getConfig();if(T){let t=T(e,p);n._dbSemconvStability&a.SemconvStability.OLD&&(_[l.ATTR_DB_STATEMENT]=t),n._dbSemconvStability&a.SemconvStability.STABLE&&(_[u.ATTR_DB_QUERY_TEXT]=t)}let d=n._startSpan(this.collection,this.modelName,e,_);return n._handleResponse(d,o,this,arguments,c,t)}}patchModelAggregate(){let e=this;return t=>function(){let o=r.trace.getSpan(r.context.active()),i=e._callOriginalFunction(()=>t.apply(this,arguments));return i&&(i[n._STORED_PARENT_SPAN]=o),i}}patchAndCaptureSpanContext(e){let t=this;return e=>function(){return this[n._STORED_PARENT_SPAN]=r.trace.getSpan(r.context.active()),t._callOriginalFunction(()=>e.apply(this,arguments))}}_startSpan(e,t,n,o,s){let c={...o,...(0,i.getAttributesFromCollection)(e,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_OPERATION]=n,c[l.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_OPERATION_NAME]=n,c[u.ATTR_DB_SYSTEM_NAME]=l.DB_SYSTEM_NAME_VALUE_MONGODB);let p=this._dbSemconvStability&a.SemconvStability.STABLE?`${n} ${e.name}`:`mongoose.${t}.${n}`;return this.tracer.startSpan(p,{kind:r.SpanKind.CLIENT,attributes:c},s?r.trace.setSpan(r.context.active(),s):void 0)}_handleResponse(e,t,n,r,o,a){let s=this;if(o instanceof Function)return s._callOriginalFunction(()=>(0,i.handleCallbackResponse)(o,t,n,e,r,s.getConfig().responseHook,a));{let o=s._callOriginalFunction(()=>t.apply(n,r));return(0,i.handlePromiseResponse)(o,e,s.getConfig().responseHook,a)}}_callOriginalFunction(e){return this.getConfig().suppressInternalInstrumentation?r.context.with((0,o.suppressTracing)(r.context.active()),e):e()}}n.MongooseInstrumentation=A},583049,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongooseInstrumentation=void 0;var r=e.r(152852);Object.defineProperty(n,"MongooseInstrumentation",{enumerable:!0,get:function(){return r.MongooseInstrumentation}})},780216,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(583049),o=e.r(976285),i=e.r(625331),a="Mongoose",s=i.generateInstrumentOnce(a,()=>new r.MongooseInstrumentation({responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mongoose")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMongoose=s,n.mongooseIntegration=l},286950,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTIONS_USAGE=n.DB_SYSTEM_VALUE_MYSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MYSQL="mysql",n.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},424590,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(n.AttributeNames||(n.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},952519,(e,t,n)=>{"use strict";function r(e){return e?`[${e.toString()}]`:""}Object.defineProperty(n,"__esModule",{value:!0}),n.getPoolNameOld=n.arrayStringifyHelper=n.getSpanName=n.getDbValues=n.getDbQueryText=n.getJDBCString=n.getConfig=void 0,n.getConfig=function(e){let{host:t,port:n,database:r,user:o}=e&&e.connectionConfig||e||{};return{host:t,port:n,database:r,user:o}},n.getJDBCString=function(e,t,n){let r=`jdbc:mysql://${e||"localhost"}`;return"number"==typeof t&&(r+=`:${t}`),"string"==typeof n&&(r+=`/${n}`),r},n.getDbQueryText=function(e){return"string"==typeof e?e:e.sql},n.getDbValues=function(e,t){return"string"==typeof e?r(t):r(t||e.values)},n.getSpanName=function(e){let t="object"==typeof e?e.sql:e,n=t?.indexOf(" ");return"number"==typeof n&&-1!==n?t?.substring(0,n):t},n.arrayStringifyHelper=r,n.getPoolNameOld=function(e){let t=e.config.connectionConfig,n="";return n+=t.host?`host: '${t.host}', `:"",n+=t.port?`port: ${t.port}, `:"",n+=t.database?`database: '${t.database}', `:"",n+=t.user?`user: '${t.user}'`:"",t.user||(n=n.substring(0,n.length-2)),n.trim()}},819437,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},937494,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQLInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(286950),s=e.r(424590),l=e.r(952519),u=e.r(819437);class c extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(a.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(e,t,n){this._connectionsUsageOld?.add(e,{state:n,name:t})}init(){return[new o.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],e=>((0,o.isWrapped)(e.createConnection)&&this._unwrap(e,"createConnection"),this._wrap(e,"createConnection",this._patchCreateConnection()),(0,o.isWrapped)(e.createPool)&&this._unwrap(e,"createPool"),this._wrap(e,"createPool",this._patchCreatePool()),(0,o.isWrapped)(e.createPoolCluster)&&this._unwrap(e,"createPoolCluster"),this._wrap(e,"createPoolCluster",this._patchCreatePoolCluster()),e),e=>{void 0!==e&&(this._unwrap(e,"createConnection"),this._unwrap(e,"createPool"),this._unwrap(e,"createPoolCluster"))})]}_patchCreateConnection(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"query",t._patchQuery(r)),r}}}_patchCreatePool(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"query",t._patchQuery(r)),t._wrap(r,"getConnection",t._patchGetConnection(r)),t._wrap(r,"end",t._patchPoolEnd(r)),t._setPoolCallbacks(r,""),r}}}_patchPoolEnd(e){return t=>{let n=this;return function(r){let o=e._allConnections.length,i=e._freeConnections.length,a=(0,l.getPoolNameOld)(e);n._connCountAdd(-(o-i),a,"used"),n._connCountAdd(-i,a,"idle"),t.apply(e,arguments)}}}_patchCreatePoolCluster(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"getConnection",t._patchGetConnection(r)),t._wrap(r,"add",t._patchAdd(r)),r}}}_patchAdd(e){return t=>{let n=this;return function(r,o){if(!n._enabled)return n._unwrap(e,"add"),t.apply(e,arguments);t.apply(e,arguments);let i=e._nodes;if(i){let t=i["object"==typeof r?"CLUSTER::"+e._lastId:String(r)].pool;n._setPoolCallbacks(t,r)}}}}_patchGetConnection(e){return t=>{let n=this;return function(r,o,i){if(!n._enabled)return n._unwrap(e,"getConnection"),t.apply(e,arguments);if(1==arguments.length&&"function"==typeof r){let o=n._getConnectionCallbackPatchFn(r);return t.call(e,o)}if(2==arguments.length&&"function"==typeof o){let i=n._getConnectionCallbackPatchFn(o);return t.call(e,r,i)}if(3==arguments.length&&"function"==typeof i){let a=n._getConnectionCallbackPatchFn(i);return t.call(e,r,o,a)}return t.apply(e,arguments)}}}_getConnectionCallbackPatchFn(e){let t=this,n=r.context.active();return function(i,a){a&&!(0,o.isWrapped)(a.query)&&t._wrap(a,"query",t._patchQuery(a)),"function"==typeof e&&r.context.with(n,e,this,i,a)}}_patchQuery(e){return t=>{let n=this;return function(u,c,p){if(!n._enabled)return n._unwrap(e,"query"),t.apply(e,arguments);let _={},{host:T,port:d,database:E,user:S}=(0,l.getConfig)(e.config),A=parseInt(d,10),g=(0,l.getDbQueryText)(u);n._dbSemconvStability&o.SemconvStability.OLD&&(_[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_MYSQL,_[a.ATTR_DB_CONNECTION_STRING]=(0,l.getJDBCString)(T,d,E),_[a.ATTR_DB_NAME]=E,_[a.ATTR_DB_USER]=S,_[a.ATTR_DB_STATEMENT]=g),n._dbSemconvStability&o.SemconvStability.STABLE&&(_[i.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MYSQL,_[i.ATTR_DB_NAMESPACE]=E,_[i.ATTR_DB_QUERY_TEXT]=g),n._netSemconvStability&o.SemconvStability.OLD&&(_[a.ATTR_NET_PEER_NAME]=T,isNaN(A)||(_[a.ATTR_NET_PEER_PORT]=A)),n._netSemconvStability&o.SemconvStability.STABLE&&(_[i.ATTR_SERVER_ADDRESS]=T,isNaN(A)||(_[i.ATTR_SERVER_PORT]=A));let m=n.tracer.startSpan((0,l.getSpanName)(u),{kind:r.SpanKind.CLIENT,attributes:_});if(n.getConfig().enhancedDatabaseReporting){let e;Array.isArray(c)?e=c:arguments[2]&&(e=[c]),m.setAttribute(s.AttributeNames.MYSQL_VALUES,(0,l.getDbValues)(u,e))}let h=Array.from(arguments).findIndex(e=>"function"==typeof e),R=r.context.active();if(-1!==h)return n._wrap(arguments,h,n._patchCallbackQuery(m,R)),r.context.with(r.trace.setSpan(r.context.active(),m),()=>t.apply(e,arguments));{let n=r.context.with(r.trace.setSpan(r.context.active(),m),()=>t.apply(e,arguments));return r.context.bind(R,n),n.on("error",e=>m.setStatus({code:r.SpanStatusCode.ERROR,message:e.message})).on("end",()=>{m.end()})}}}}_patchCallbackQuery(e,t){return n=>function(o,i,a){return o&&e.setStatus({code:r.SpanStatusCode.ERROR,message:o.message}),e.end(),r.context.with(t,()=>n(...arguments))}}_setPoolCallbacks(e,t){let n=t||(0,l.getPoolNameOld)(e);e.on("connection",e=>{this._connCountAdd(1,n,"idle")}),e.on("acquire",e=>{this._connCountAdd(-1,n,"idle"),this._connCountAdd(1,n,"used")}),e.on("release",e=>{this._connCountAdd(1,n,"idle"),this._connCountAdd(-1,n,"used")})}}n.MySQLInstrumentation=c},510039,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQLInstrumentation=void 0;var r=e.r(937494);Object.defineProperty(n,"MySQLInstrumentation",{enumerable:!0,get:function(){return r.MySQLInstrumentation}})},473485,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(510039),o=e.r(976285),i=e.r(625331),a="Mysql",s=i.generateInstrumentOnce(a,()=>new r.MySQLInstrumentation({})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMysql=s,n.mysqlIntegration=l},366020,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_MYSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MYSQL="mysql"},386127,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.addSqlCommenterComment=void 0;let r=e.r(357762),o=e.r(385692);n.addSqlCommenterComment=function(e,t){let n;if("string"!=typeof t||0===t.length||(n=t.indexOf("--"))>=0||!(0>t.indexOf("/*"))&&n{let t=encodeURIComponent(a[e]).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`);return`${e}='${t}'`}).join(",");return`${t} /*${l}*/`}},739749,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getConnectionPrototypeToInstrument=n.once=n.getSpanName=n.getQueryText=n.getConnectionAttributes=void 0;let r=e.r(366020),o=e.r(204780),i=e.r(808119);function a(e){return e.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}n.getConnectionAttributes=function(e,t,n){var a,s,l;let u,{host:c,port:p,database:_,user:T}=function(e){let{host:t,port:n,database:r,user:o}=e&&e.connectionConfig||e||{};return{host:t,port:n,database:r,user:o}}(e),d={};t&o.SemconvStability.OLD&&(d[r.ATTR_DB_CONNECTION_STRING]=(a=c,s=p,l=_,u=`jdbc:mysql://${a||"localhost"}`,"number"==typeof s&&(u+=`:${s}`),"string"==typeof l&&(u+=`/${l}`),u),d[r.ATTR_DB_NAME]=_,d[r.ATTR_DB_USER]=T),t&o.SemconvStability.STABLE&&(d[i.ATTR_DB_NAMESPACE]=_);let E=parseInt(p,10);return n&o.SemconvStability.OLD&&(d[r.ATTR_NET_PEER_NAME]=c,isNaN(E)||(d[r.ATTR_NET_PEER_PORT]=E)),n&o.SemconvStability.STABLE&&(d[i.ATTR_SERVER_ADDRESS]=c,isNaN(E)||(d[i.ATTR_SERVER_PORT]=E)),d},n.getQueryText=function(e,t,n,r=!1,o=a){let[i,s]="string"==typeof e?[e,n]:[e.sql,"values"in e?n||e.values:n];try{if(r)return o(i);if(t&&s)return t(i,s);return i}catch(e){return"Could not determine the query due to an error in masking or formatting"}},n.getSpanName=function(e){let t="object"==typeof e?e.sql:e,n=t?.indexOf(" ");return"number"==typeof n&&-1!==n?t?.substring(0,n):t},n.once=e=>{let t=!1;return(...n)=>{if(!t)return t=!0,e(...n)}},n.getConnectionPrototypeToInstrument=function(e){let t=e.prototype,n=Object.getPrototypeOf(t);return"function"==typeof n?.query&&"function"==typeof n?.execute?n:t}},184863,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},742188,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQL2Instrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(366020),a=e.r(386127),s=e.r(739749),l=e.r(184863),u=e.r(808119),c=[">=1.4.2 <4"];class p extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let e;function t(t){!e&&t.format&&(e=t.format)}let n=t=>{(0,o.isWrapped)(t.query)&&this._unwrap(t,"query"),this._wrap(t,"query",this._patchQuery(e,!1)),(0,o.isWrapped)(t.execute)&&this._unwrap(t,"execute"),this._wrap(t,"execute",this._patchQuery(e,!0))},r=e=>{this._unwrap(e,"query"),this._unwrap(e,"execute")};return[new o.InstrumentationNodeModuleDefinition("mysql2",c,e=>(t(e),e),()=>{},[new o.InstrumentationNodeModuleFile("mysql2/promise.js",c,e=>(t(e),e),()=>{}),new o.InstrumentationNodeModuleFile("mysql2/lib/connection.js",c,e=>(n((0,s.getConnectionPrototypeToInstrument)(e)),e),e=>{void 0===e||r((0,s.getConnectionPrototypeToInstrument)(e))})])]}_patchQuery(e,t){return n=>{let l=this;return function(c,p,_){let T;Array.isArray(p)?T=p:arguments[2]&&(T=[p]);let{maskStatement:d,maskStatementHook:E,responseHook:S}=l.getConfig(),A=(0,s.getConnectionAttributes)(this.config,l._dbSemconvStability,l._netSemconvStability),g=(0,s.getQueryText)(c,e,T,d,E);l._dbSemconvStability&o.SemconvStability.OLD&&(A[i.ATTR_DB_SYSTEM]=i.DB_SYSTEM_VALUE_MYSQL,A[i.ATTR_DB_STATEMENT]=g),l._dbSemconvStability&o.SemconvStability.STABLE&&(A[u.ATTR_DB_SYSTEM_NAME]=u.DB_SYSTEM_NAME_VALUE_MYSQL,A[u.ATTR_DB_QUERY_TEXT]=g);let m=l.tracer.startSpan((0,s.getSpanName)(c),{kind:r.SpanKind.CLIENT,attributes:A});!t&&l.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=c="string"==typeof c?(0,a.addSqlCommenterComment)(m,c):Object.assign(c,{sql:(0,a.addSqlCommenterComment)(m,c.sql)}));let h=(0,s.once)((e,t)=>{e?m.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}):"function"==typeof S&&(0,o.safeExecuteInTheMiddle)(()=>{S(m,{queryResults:t})},e=>{e&&l._diag.warn("Failed executing responseHook",e)},!0),m.end()});if(1==arguments.length){"function"==typeof c.onResult&&l._wrap(c,"onResult",l._patchCallbackQuery(h));let e=n.apply(this,arguments);return e.once("error",e=>{h(e)}).once("result",e=>{h(void 0,e)}),e}return"function"==typeof arguments[1]?l._wrap(arguments,1,l._patchCallbackQuery(h)):"function"==typeof arguments[2]&&l._wrap(arguments,2,l._patchCallbackQuery(h)),n.apply(this,arguments)}}}_patchCallbackQuery(e){return t=>function(n,r,o){return e(n,r),t(...arguments)}}}n.MySQL2Instrumentation=p},623318,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQL2Instrumentation=void 0;var r=e.r(742188);Object.defineProperty(n,"MySQL2Instrumentation",{enumerable:!0,get:function(){return r.MySQL2Instrumentation}})},625680,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(623318),o=e.r(976285),i=e.r(625331),a="Mysql2",s=i.generateInstrumentOnce(a,()=>new r.MySQL2Instrumentation({responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mysql2")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMysql2=s,n.mysql2Integration=l},458792,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_REDIS=n.DB_SYSTEM_NAME_VALUE_REDIS=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_REDIS="redis",n.DB_SYSTEM_VALUE_REDIS="redis"},678116,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.endSpan=void 0;let r=e.r(357762);n.endSpan=(e,t)=>{t&&(e.recordException(t),e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message})),e.end()}},744606,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.defaultDbStatementSerializer=void 0;let r=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];n.defaultDbStatementSerializer=(e,t)=>{if(Array.isArray(t)&&t.length){let n=r.find(({regex:t})=>t.test(e))?.args??0,o=n>=0?t.slice(0,n):t;return t.length>o.length&&o.push(`[${t.length-n} other arguments]`),`${e} ${o.join(" ")}`}return e}},983181,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},943579,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.IORedisInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(458792),s=e.r(204780),l=e.r(678116),u=e.r(744606),c=e.r(983181),p={requireParentSpan:!0};class _ extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...p,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...p,...e})}init(){return[new o.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(e,t)=>{let n="Module"===e[Symbol.toStringTag]?e.default:e;return(0,o.isWrapped)(n.prototype.sendCommand)&&this._unwrap(n.prototype,"sendCommand"),this._wrap(n.prototype,"sendCommand",this._patchSendCommand(t)),(0,o.isWrapped)(n.prototype.connect)&&this._unwrap(n.prototype,"connect"),this._wrap(n.prototype,"connect",this._patchConnection()),e},e=>{if(void 0===e)return;let t="Module"===e[Symbol.toStringTag]?e.default:e;this._unwrap(t.prototype,"sendCommand"),this._unwrap(t.prototype,"connect")})]}_patchSendCommand(e){return t=>this._traceSendCommand(t,e)}_patchConnection(){return e=>this._traceConnection(e)}_traceSendCommand(e,t){let n=this;return function(c){if(arguments.length<1||"object"!=typeof c)return e.apply(this,arguments);let p=n.getConfig(),_=p.dbStatementSerializer||u.defaultDbStatementSerializer,T=void 0===r.trace.getSpan(r.context.active());if(!0===p.requireParentSpan&&T)return e.apply(this,arguments);let d={},{host:E,port:S}=this.options,A=_(c.name,c.args);n._dbSemconvStability&o.SemconvStability.OLD&&(d[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_REDIS,d[a.ATTR_DB_STATEMENT]=A,d[a.ATTR_DB_CONNECTION_STRING]=`redis://${E}:${S}`),n._dbSemconvStability&o.SemconvStability.STABLE&&(d[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_REDIS,d[i.ATTR_DB_QUERY_TEXT]=A),n._netSemconvStability&o.SemconvStability.OLD&&(d[a.ATTR_NET_PEER_NAME]=E,d[a.ATTR_NET_PEER_PORT]=S),n._netSemconvStability&o.SemconvStability.STABLE&&(d[i.ATTR_SERVER_ADDRESS]=E,d[i.ATTR_SERVER_PORT]=S);let g=n.tracer.startSpan(c.name,{kind:r.SpanKind.CLIENT,attributes:d}),{requestHook:m}=p;m&&(0,s.safeExecuteInTheMiddle)(()=>m(g,{moduleVersion:t,cmdName:c.name,cmdArgs:c.args}),e=>{e&&r.diag.error("ioredis instrumentation: request hook failed",e)},!0);try{let t=e.apply(this,arguments),n=c.resolve;c.resolve=function(e){(0,s.safeExecuteInTheMiddle)(()=>p.responseHook?.(g,c.name,c.args,e),e=>{e&&r.diag.error("ioredis instrumentation: response hook failed",e)},!0),(0,l.endSpan)(g,null),n(e)};let o=c.reject;return c.reject=function(e){(0,l.endSpan)(g,e),o(e)},t}catch(e){throw(0,l.endSpan)(g,e),e}}}_traceConnection(e){let t=this;return function(){let n=void 0===r.trace.getSpan(r.context.active());if(!0===t.getConfig().requireParentSpan&&n)return e.apply(this,arguments);let s={},{host:u,port:c}=this.options;t._dbSemconvStability&o.SemconvStability.OLD&&(s[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_REDIS,s[a.ATTR_DB_STATEMENT]="connect",s[a.ATTR_DB_CONNECTION_STRING]=`redis://${u}:${c}`),t._dbSemconvStability&o.SemconvStability.STABLE&&(s[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_REDIS,s[i.ATTR_DB_QUERY_TEXT]="connect"),t._netSemconvStability&o.SemconvStability.OLD&&(s[a.ATTR_NET_PEER_NAME]=u,s[a.ATTR_NET_PEER_PORT]=c),t._netSemconvStability&o.SemconvStability.STABLE&&(s[i.ATTR_SERVER_ADDRESS]=u,s[i.ATTR_SERVER_PORT]=c);let p=t.tracer.startSpan("connect",{kind:r.SpanKind.CLIENT,attributes:s});try{let t=e.apply(this,arguments);return(0,l.endSpan)(p,null),t}catch(e){throw(0,l.endSpan)(p,e),e}}}}n.IORedisInstrumentation=_},788406,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.IORedisInstrumentation=void 0;var r=e.r(943579);Object.defineProperty(n,"IORedisInstrumentation",{enumerable:!0,get:function(){return r.IORedisInstrumentation}})},680749,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},324932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getTracedCreateStreamTrace=n.getTracedCreateClient=n.endSpan=void 0;let r=e.r(357762);n.endSpan=(e,t)=>{t&&e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.end()},n.getTracedCreateClient=e=>function(){let t=e.apply(this,arguments);return r.context.bind(r.context.active(),t)},n.getTracedCreateStreamTrace=e=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(e){r.context.bind(r.context.active(),e),this._patched_redis_stream=e}}),e.apply(this,arguments)}},985163,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_REDIS=n.DB_SYSTEM_NAME_VALUE_REDIS=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_REDIS="redis",n.DB_SYSTEM_VALUE_REDIS="redis"},868434,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentationV2_V3=void 0;let r=e.r(204780),o=e.r(324932),i=e.r(680749),a=e.r(357762),s=e.r(808119),l=e.r(985163),u=e.r(744606);class c extends r.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e),this._semconvStability=e.semconvStability?e.semconvStability:(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig(e),this._semconvStability=e.semconvStability?e.semconvStability:(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new r.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],e=>((0,r.isWrapped)(e.RedisClient.prototype.internal_send_command)&&this._unwrap(e.RedisClient.prototype,"internal_send_command"),this._wrap(e.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,r.isWrapped)(e.RedisClient.prototype.create_stream)&&this._unwrap(e.RedisClient.prototype,"create_stream"),this._wrap(e.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,r.isWrapped)(e.createClient)&&this._unwrap(e,"createClient"),this._wrap(e,"createClient",this._getPatchCreateClient()),e),e=>{void 0!==e&&(this._unwrap(e.RedisClient.prototype,"internal_send_command"),this._unwrap(e.RedisClient.prototype,"create_stream"),this._unwrap(e,"createClient"))})]}_getPatchInternalSendCommand(){let e=this;return function(t){return function(n){if(1!=arguments.length||"object"!=typeof n)return t.apply(this,arguments);let i=e.getConfig(),p=void 0===a.trace.getSpan(a.context.active());if(!0===i.requireParentSpan&&p)return t.apply(this,arguments);let _=i?.dbStatementSerializer||u.defaultDbStatementSerializer,T={};e._semconvStability&r.SemconvStability.OLD&&Object.assign(T,{[l.ATTR_DB_SYSTEM]:l.DB_SYSTEM_VALUE_REDIS,[l.ATTR_DB_STATEMENT]:_(n.command,n.args)}),e._semconvStability&r.SemconvStability.STABLE&&Object.assign(T,{[s.ATTR_DB_SYSTEM_NAME]:l.DB_SYSTEM_NAME_VALUE_REDIS,[s.ATTR_DB_OPERATION_NAME]:n.command,[s.ATTR_DB_QUERY_TEXT]:_(n.command,n.args)});let d=e.tracer.startSpan(`${c.COMPONENT}-${n.command}`,{kind:a.SpanKind.CLIENT,attributes:T});if(this.connection_options){let t={};e._semconvStability&r.SemconvStability.OLD&&Object.assign(t,{[l.ATTR_NET_PEER_NAME]:this.connection_options.host,[l.ATTR_NET_PEER_PORT]:this.connection_options.port}),e._semconvStability&r.SemconvStability.STABLE&&Object.assign(t,{[s.ATTR_SERVER_ADDRESS]:this.connection_options.host,[s.ATTR_SERVER_PORT]:this.connection_options.port}),d.setAttributes(t)}this.address&&e._semconvStability&r.SemconvStability.OLD&&d.setAttribute(l.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let E=arguments[0].callback;if(E){let t=a.context.active();arguments[0].callback=function(s,l){if(i?.responseHook){let t=i.responseHook;(0,r.safeExecuteInTheMiddle)(()=>{t(d,n.command,n.args,l)},t=>{t&&e._diag.error("Error executing responseHook",t)},!0)}return(0,o.endSpan)(d,s),a.context.with(t,E,this,...arguments)}}try{return t.apply(this,arguments)}catch(e){throw(0,o.endSpan)(d,e),e}}}}_getPatchCreateClient(){return function(e){return(0,o.getTracedCreateClient)(e)}}_getPatchCreateStream(){return function(e){return(0,o.getTracedCreateStreamTrace)(e)}}}n.RedisInstrumentationV2_V3=c},33280,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getClientAttributes=void 0;let r=e.r(808119),o=e.r(985163),i=e.r(204780);n.getClientAttributes=function(e,t,n){let a={};return n&i.SemconvStability.OLD&&Object.assign(a,{[o.ATTR_DB_SYSTEM]:o.DB_SYSTEM_VALUE_REDIS,[o.ATTR_NET_PEER_NAME]:t?.socket?.host,[o.ATTR_NET_PEER_PORT]:t?.socket?.port,[o.ATTR_DB_CONNECTION_STRING]:function(e,t){if("string"==typeof t&&t)try{let e=new URL(t);return e.searchParams.delete("user_pwd"),e.username="",e.password="",e.href}catch(t){e.error("failed to sanitize redis connection url",t)}}(e,t?.url)}),n&i.SemconvStability.STABLE&&Object.assign(a,{[r.ATTR_DB_SYSTEM_NAME]:o.DB_SYSTEM_NAME_VALUE_REDIS,[r.ATTR_SERVER_ADDRESS]:t?.socket?.host,[r.ATTR_SERVER_PORT]:t?.socket?.port}),a}},130932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentationV4_V5=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(33280),a=e.r(744606),s=e.r(680749),l=e.r(808119),u=e.r(985163),c=Symbol("opentelemetry.instrumentation.redis.open_spans"),p=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class _ extends o.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(e={}){super(s.PACKAGE_NAME,s.PACKAGE_VERSION,e),this._semconvStability=e.semconvStability?e.semconvStability:(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig(e),this._semconvStability=e.semconvStability?e.semconvStability:(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(e){let t=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/commander.js`,["^1.0.0"],(e,t)=>{let n=e.transformCommandArguments;if(!n)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),e;let r=t?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,o.isWrapped)(e?.[r])&&this._unwrap(e,r),this._wrap(e,r,this._getPatchExtendWithCommands(n)),e},e=>{(0,o.isWrapped)(e?.extendWithCommands)&&this._unwrap(e,"extendWithCommands"),(0,o.isWrapped)(e?.attachCommands)&&this._unwrap(e,"attachCommands")}),n=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],e=>{let t=e?.default?.prototype;return(0,o.isWrapped)(t?.exec)&&this._unwrap(t,"exec"),this._wrap(t,"exec",this._getPatchMultiCommandsExec(!1)),(0,o.isWrapped)(t?.execAsPipeline)&&this._unwrap(t,"execAsPipeline"),this._wrap(t,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,o.isWrapped)(t?.addCommand)&&this._unwrap(t,"addCommand"),this._wrap(t,"addCommand",this._getPatchMultiCommandsAddCommand()),e},e=>{let t=e?.default?.prototype;(0,o.isWrapped)(t?.exec)&&this._unwrap(t,"exec"),(0,o.isWrapped)(t?.addCommand)&&this._unwrap(t,"addCommand")}),r=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],e=>{let t=e?.default?.prototype;return t?.multi&&((0,o.isWrapped)(t?.multi)&&this._unwrap(t,"multi"),this._wrap(t,"multi",this._getPatchRedisClientMulti())),t?.MULTI&&((0,o.isWrapped)(t?.MULTI)&&this._unwrap(t,"MULTI"),this._wrap(t,"MULTI",this._getPatchRedisClientMulti())),(0,o.isWrapped)(t?.sendCommand)&&this._unwrap(t,"sendCommand"),this._wrap(t,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(t,"connect",this._getPatchedClientConnect()),e},e=>{let t=e?.default?.prototype;(0,o.isWrapped)(t?.multi)&&this._unwrap(t,"multi"),(0,o.isWrapped)(t?.MULTI)&&this._unwrap(t,"MULTI"),(0,o.isWrapped)(t?.sendCommand)&&this._unwrap(t,"sendCommand")});return new o.InstrumentationNodeModuleDefinition(e,["^1.0.0","^5.0.0"],e=>e,()=>{},[t,n,r])}_getPatchExtendWithCommands(e){let t=this;return function(n){return function(r){if(r?.BaseClass?.name!=="RedisClient")return n.apply(this,arguments);let o=r.executor;return r.executor=function(n,r){let i=e(n,r).args;return t._traceClientCommand(o,this,arguments,i)},n.apply(this,arguments)}}}_getPatchMultiCommandsExec(e){let t=this;return function(n){return function(){let r=n.apply(this,arguments);return"function"!=typeof r?.then?(t._diag.error("non-promise result when patching exec/execAsPipeline"),r):r.then(n=>{let r=this[c];return t._endSpansWithRedisReplies(r,n,e),n}).catch(n=>{let r=this[c];if(r){let o="MultiErrorReply"===n.constructor.name?n.replies:Array(r.length).fill(n);t._endSpansWithRedisReplies(r,o,e)}else t._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(n)})}}}_getPatchMultiCommandsAddCommand(){let e=this;return function(t){return function(n){return e._traceClientCommand(t,this,arguments,n)}}}_getPatchRedisClientMulti(){return function(e){return function(){let t=e.apply(this,arguments);return t[p]=this.options,t}}}_getPatchRedisClientSendCommand(){let e=this;return function(t){return function(n){return e._traceClientCommand(t,this,arguments,n)}}}_getPatchedClientConnect(){let e=this;return function(t){return function(){let n=this.options,o=(0,i.getClientAttributes)(e._diag,n,e._semconvStability),a=e.tracer.startSpan(`${_.COMPONENT}-connect`,{kind:r.SpanKind.CLIENT,attributes:o});return r.context.with(r.trace.setSpan(r.context.active(),a),()=>t.apply(this)).then(e=>(a.end(),e)).catch(e=>(a.recordException(e),a.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),a.end(),Promise.reject(e)))}}}_traceClientCommand(e,t,n,s){if(void 0===r.trace.getSpan(r.context.active())&&this.getConfig().requireParentSpan)return e.apply(t,n);let T=t.options||t[p],d=s[0],E=s.slice(1),S=this.getConfig().dbStatementSerializer||a.defaultDbStatementSerializer,A=(0,i.getClientAttributes)(this._diag,T,this._semconvStability);this._semconvStability&o.SemconvStability.STABLE&&(A[l.ATTR_DB_OPERATION_NAME]=d);try{let e=S(d,E);null!=e&&(this._semconvStability&o.SemconvStability.OLD&&(A[u.ATTR_DB_STATEMENT]=e),this._semconvStability&o.SemconvStability.STABLE&&(A[l.ATTR_DB_QUERY_TEXT]=e))}catch(e){this._diag.error("dbStatementSerializer throw an exception",e,{commandName:d})}let g=this.tracer.startSpan(`${_.COMPONENT}-${d}`,{kind:r.SpanKind.CLIENT,attributes:A}),m=r.context.with(r.trace.setSpan(r.context.active(),g),()=>e.apply(t,n));return"function"==typeof m?.then?m.then(e=>{this._endSpanWithResponse(g,d,E,e,void 0)},e=>{this._endSpanWithResponse(g,d,E,null,e)}):(m[c]=m[c]||[],m[c].push({span:g,commandName:d,commandArgs:E})),m}_endSpansWithRedisReplies(e,t,n=!1){if(!e)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(t.length!==e.length)return this._diag.error("number of multi command spans does not match response from redis");let r=e.map(e=>e.commandName),i=r.every(e=>e===r[0])?(n?"PIPELINE ":"MULTI ")+r[0]:n?"PIPELINE":"MULTI";for(let n=0;n{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentation=void 0;let r=e.r(204780),o=e.r(680749),i=e.r(868434),a=e.r(130932),s={requireParentSpan:!1};class l extends r.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(e={}){const t={...s,...e};super(o.PACKAGE_NAME,o.PACKAGE_VERSION,t),this.instrumentationV2_V3=new i.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new a.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(e={}){let t={...s,...e};super.setConfig(t),this.initialized&&(this.instrumentationV2_V3.setConfig(t),this.instrumentationV4_V5.setConfig(t))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(e){super.setTracerProvider(e),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(e),this.instrumentationV4_V5.setTracerProvider(e))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}n.RedisInstrumentation=l},339097,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentation=void 0;var r=e.r(276221);Object.defineProperty(n,"RedisInstrumentation",{enumerable:!0,get:function(){return r.RedisInstrumentation}})},688662,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=["get","set","setex"],o=["get","mget"],i=["set","setex"];function a(e,t){return e.includes(t.toLowerCase())}function s(e){return a(o,e)?"cache.get":a(i,e)?"cache.put":void 0}function l(e){let t=[],n=e=>{e.forEach(e=>{Array.isArray(e)?n(e):t.push(e)})};return n(e),t}n.GET_COMMANDS=o,n.SET_COMMANDS=i,n.calculateCacheItemSize=function(e){let t=e=>{try{if(Buffer.isBuffer(e))return e.byteLength;if("string"==typeof e)return e.length;if("number"==typeof e)return e.toString().length;else if(null==e)return 0;return JSON.stringify(e).length}catch{return}};return Array.isArray(e)?e.reduce((e,n)=>{let r=t(n);return"number"==typeof r?void 0!==e?e+r:r:e},0):t(e)},n.getCacheKeySafely=function(e,t){try{if(0===t.length)return;let n=e=>"string"==typeof e||"number"==typeof e||Buffer.isBuffer(e)?[e.toString()]:Array.isArray(e)?l(e.map(e=>n(e))):[""],o=t[0];if(a(r,e)&&null!=o)return n(o);return l(t.map(e=>n(e)))}catch{return}},n.getCacheOperation=s,n.isInCommands=a,n.shouldConsiderForCache=function(e,t,n){if(!s(e))return!1;for(let e of t)if(function(e,t){return t.some(t=>e.startsWith(t))}(e,n))return!0;return!1}},978486,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(788406),o=e.r(339097),i=e.r(976285),a=e.r(625331),s=e.r(688662),l="Redis";n._redisOptions={};let u=(e,t,r,o)=>{e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let a=s.getCacheKeySafely(t,r),l=s.getCacheOperation(t);if(!a||!l||!n._redisOptions.cachePrefixes||!s.shouldConsiderForCache(t,a,n._redisOptions.cachePrefixes))return;let u=i.spanToJSON(e).data["net.peer.name"],c=i.spanToJSON(e).data["net.peer.port"];c&&u&&e.setAttributes({"network.peer.address":u,"network.peer.port":c});let p=s.calculateCacheItemSize(o);p&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,p),s.isInCommands(s.GET_COMMANDS,t)&&void 0!==p&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_CACHE_HIT,p>0),e.setAttributes({[i.SEMANTIC_ATTRIBUTE_SENTRY_OP]:l,[i.SEMANTIC_ATTRIBUTE_CACHE_KEY]:a});let _=a.join(", ");e.updateName(n._redisOptions.maxCacheKeyLength?i.truncate(_,n._redisOptions.maxCacheKeyLength):_)},c=a.generateInstrumentOnce(`${l}.IORedis`,()=>new r.IORedisInstrumentation({responseHook:u})),p=a.generateInstrumentOnce(`${l}.Redis`,()=>new o.RedisInstrumentation({responseHook:u})),_=Object.assign(()=>{c(),p()},{id:l}),T=i.defineIntegration((e={})=>({name:l,setupOnce(){n._redisOptions=e,_()}}));n.cacheResponseHook=u,n.instrumentRedis=_,n.redisIntegration=T},400893,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EVENT_LISTENERS_SET=void 0,n.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},894105,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).PG_VALUES="db.postgresql.values",r.PG_PLAN="db.postgresql.plan",r.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",r.MAX_CLIENT="db.postgresql.max.client"},184319,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=n.METRIC_DB_CLIENT_CONNECTION_COUNT=n.DB_SYSTEM_VALUE_POSTGRESQL=n.DB_CLIENT_CONNECTION_STATE_VALUE_USED=n.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=n.ATTR_DB_CLIENT_CONNECTION_STATE=n.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,n.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",n.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",n.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",n.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",n.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",n.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},465522,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.SpanNames=void 0,(r=n.SpanNames||(n.SpanNames={})).QUERY_PREFIX="pg.query",r.CONNECT="pg.connect",r.POOL_CONNECT="pg-pool.connect"},482101,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.sanitizedErrorMessage=n.isObjectWithTextString=n.getErrorMessage=n.patchClientConnectCallback=n.patchCallbackPGPool=n.updateCounter=n.getPoolName=n.patchCallback=n.handleExecutionResult=n.handleConfigQuery=n.shouldSkipInstrumentation=n.getSemanticAttributesFromPoolConnection=n.getSemanticAttributesFromConnection=n.getConnectionString=n.parseAndMaskConnectionString=n.parseNormalizedOperationName=n.getQuerySpanName=void 0;let r=e.r(357762),o=e.r(894105),i=e.r(808119),a=e.r(184319),s=e.r(204780),l=e.r(465522);function u(e,t){if(!t)return l.SpanNames.QUERY_PREFIX;let n="string"==typeof t.name&&t.name?t.name:c(t.text);return`${l.SpanNames.QUERY_PREFIX}:${n}${e?` ${e}`:""}`}function c(e){let t=e.trim(),n=t.indexOf(" "),r=-1===n?t:t.slice(0,n);return(r=r.toUpperCase()).endsWith(";")?r.slice(0,-1):r}function p(e){try{let t=new URL(e);return t.username="",t.password="",t.toString()}catch(e){return"postgresql://localhost:5432/"}}function _(e){if("connectionString"in e&&e.connectionString)return p(e.connectionString);let t=e.host||"localhost",n=e.port||5432,r=e.database||"";return`postgresql://${t}:${n}/${r}`}function T(e){if(Number.isInteger(e))return e}function d(e,t){let n={};return t&s.SemconvStability.OLD&&(n={...n,[a.ATTR_DB_SYSTEM]:a.DB_SYSTEM_VALUE_POSTGRESQL,[a.ATTR_DB_NAME]:e.database,[a.ATTR_DB_CONNECTION_STRING]:_(e),[a.ATTR_DB_USER]:e.user,[a.ATTR_NET_PEER_NAME]:e.host,[a.ATTR_NET_PEER_PORT]:T(e.port)}),t&s.SemconvStability.STABLE&&(n={...n,[i.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[i.ATTR_DB_NAMESPACE]:e.namespace,[i.ATTR_SERVER_ADDRESS]:e.host,[i.ATTR_SERVER_PORT]:T(e.port)}),n}function E(e,t,n){"function"==typeof e.responseHook&&(0,s.safeExecuteInTheMiddle)(()=>{e.responseHook(t,{data:n})},e=>{e&&r.diag.error("Error running response hook",e)},!0)}function S(e){let t=e?.name??"PostgreSQLError",n=e?.code??"UNKNOWN";return`PostgreSQL error of type '${t}' occurred (code: ${n})`}n.getQuerySpanName=u,n.parseNormalizedOperationName=c,n.parseAndMaskConnectionString=p,n.getConnectionString=_,n.getSemanticAttributesFromConnection=d,n.getSemanticAttributesFromPoolConnection=function(e,t){let n;try{n=e.connectionString?new URL(e.connectionString):void 0}catch(e){n=void 0}let r={[o.AttributeNames.IDLE_TIMEOUT_MILLIS]:e.idleTimeoutMillis,[o.AttributeNames.MAX_CLIENT]:e.maxClient};return t&s.SemconvStability.OLD&&(r={...r,[a.ATTR_DB_SYSTEM]:a.DB_SYSTEM_VALUE_POSTGRESQL,[a.ATTR_DB_NAME]:n?.pathname.slice(1)??e.database,[a.ATTR_DB_CONNECTION_STRING]:_(e),[a.ATTR_NET_PEER_NAME]:n?.hostname??e.host,[a.ATTR_NET_PEER_PORT]:Number(n?.port)||T(e.port),[a.ATTR_DB_USER]:n?.username??e.user}),t&s.SemconvStability.STABLE&&(r={...r,[i.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[i.ATTR_DB_NAMESPACE]:e.namespace,[i.ATTR_SERVER_ADDRESS]:n?.hostname??e.host,[i.ATTR_SERVER_PORT]:Number(n?.port)||T(e.port)}),r},n.shouldSkipInstrumentation=function(e){return!0===e.requireParentSpan&&void 0===r.trace.getSpan(r.context.active())},n.handleConfigQuery=function(e,t,n,l){let{connectionParameters:c}=this,p=u(c.database,l),_=e.startSpan(p,{kind:r.SpanKind.CLIENT,attributes:d(c,n)});if(!l)return _;if(l.text&&(n&s.SemconvStability.OLD&&_.setAttribute(a.ATTR_DB_STATEMENT,l.text),n&s.SemconvStability.STABLE&&_.setAttribute(i.ATTR_DB_QUERY_TEXT,l.text)),t.enhancedDatabaseReporting&&Array.isArray(l.values))try{let e=l.values.map(e=>null==e?"null":e instanceof Buffer?e.toString():"object"!=typeof e?e.toString():"function"==typeof e.toPostgres?e.toPostgres():JSON.stringify(e));_.setAttribute(o.AttributeNames.PG_VALUES,e)}catch(e){r.diag.error("failed to stringify ",l.values,e)}return"string"==typeof l.name&&_.setAttribute(o.AttributeNames.PG_PLAN,l.name),_},n.handleExecutionResult=E,n.patchCallback=function(e,t,n,o,a){return function(s,l){s?(Object.prototype.hasOwnProperty.call(s,"code")&&(o[i.ATTR_ERROR_TYPE]=s.code),s instanceof Error&&t.recordException(S(s)),t.setStatus({code:r.SpanStatusCode.ERROR,message:s.message})):E(e,t,l),a(),t.end(),n.call(this,s,l)}},n.getPoolName=function(e){let t="";return(t+=(e?.host?`${e.host}`:"unknown_host")+":"+(e?.port?`${e.port}`:"unknown_port")+"/"+(e?.database?`${e.database}`:"unknown_database")).trim()},n.updateCounter=function(e,t,n,r,o){let i=t.totalCount,s=t.waitingCount,l=t.idleCount,u=i-l;return n.add(u-o.used,{[a.ATTR_DB_CLIENT_CONNECTION_STATE]:a.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),n.add(l-o.idle,{[a.ATTR_DB_CLIENT_CONNECTION_STATE]:a.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),r.add(s-o.pending,{[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),{used:u,idle:l,pending:s}},n.patchCallbackPGPool=function(e,t){return function(n,o,i){n&&(n instanceof Error&&e.recordException(S(n)),e.setStatus({code:r.SpanStatusCode.ERROR,message:n.message})),e.end(),t.call(this,n,o,i)}},n.patchClientConnectCallback=function(e,t){return function(n){n&&(n instanceof Error&&e.recordException(S(n)),e.setStatus({code:r.SpanStatusCode.ERROR,message:n.message})),e.end(),t.apply(this,arguments)}},n.getErrorMessage=function(e){return"object"==typeof e&&null!==e&&"message"in e?String(e.message):void 0},n.isObjectWithTextString=function(e){return"object"==typeof e&&"string"==typeof e?.text},n.sanitizedErrorMessage=S},324552,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.66.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},451598,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PgInstrumentation=void 0;let r=e.r(204780),o=e.r(357762),i=e.r(400893),a=e.r(482101),s=e.r(386127),l=e.r(324552),u=e.r(465522),c=e.r(385692),p=e.r(808119),_=e.r(184319);function T(e){return"Module"===e[Symbol.toStringTag]?e.default:e}class d extends r.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e),this._semconvStability=(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(p.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:o.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(_.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(_.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let e=[">=8.0.3 <9"],t=new r.InstrumentationNodeModuleFile("pg/lib/native/client.js",e,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),n=new r.InstrumentationNodeModuleFile("pg/lib/client.js",e,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new r.InstrumentationNodeModuleDefinition("pg",e,e=>{let t=T(e);return this._patchPgClient(t.Client),e},e=>{let t=T(e);return this._unpatchPgClient(t.Client),e},[n,t]),new r.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],e=>{let t=T(e);return(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),this._wrap(t.prototype,"connect",this._getPoolConnectPatch()),t},e=>{let t=T(e);(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect")})]}_patchPgClient(e){if(!e)return;let t=T(e);return(0,r.isWrapped)(t.prototype.query)&&this._unwrap(t.prototype,"query"),(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),this._wrap(t.prototype,"query",this._getClientQueryPatch()),this._wrap(t.prototype,"connect",this._getClientConnectPatch()),e}_unpatchPgClient(e){let t=T(e);return(0,r.isWrapped)(t.prototype.query)&&this._unwrap(t.prototype,"query"),(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),e}_getClientConnectPatch(){let e=this;return t=>function(n){let r=e.getConfig();if(a.shouldSkipInstrumentation(r)||r.ignoreConnectSpans)return t.call(this,n);let i=e.tracer.startSpan(u.SpanNames.CONNECT,{kind:o.SpanKind.CLIENT,attributes:a.getSemanticAttributesFromConnection(this,e._semconvStability)});if(n){let e=o.trace.getSpan(o.context.active());n=a.patchClientConnectCallback(i,n),e&&(n=o.context.bind(o.context.active(),n))}let s=o.context.with(o.trace.setSpan(o.context.active(),i),()=>t.call(this,n));return E(i,s)}}recordOperationDuration(e,t){let n={},o=[p.ATTR_DB_NAMESPACE,p.ATTR_ERROR_TYPE,p.ATTR_SERVER_PORT,p.ATTR_SERVER_ADDRESS,p.ATTR_DB_OPERATION_NAME];this._semconvStability&r.SemconvStability.OLD&&o.push(_.ATTR_DB_SYSTEM),this._semconvStability&r.SemconvStability.STABLE&&o.push(p.ATTR_DB_SYSTEM_NAME),o.forEach(t=>{t in e&&(n[t]=e[t])});let i=(0,c.hrTimeToMilliseconds)((0,c.hrTimeDuration)(t,(0,c.hrTime)()))/1e3;this._operationDuration.record(i,n)}_getClientQueryPatch(){let e=this;return t=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...n){let i;if(a.shouldSkipInstrumentation(e.getConfig()))return t.apply(this,n);let l=(0,c.hrTime)(),u=n[0],T="string"==typeof u,d=a.isObjectWithTextString(u),E=T?{text:u,values:Array.isArray(n[1])?n[1]:void 0}:d?{...u,name:u.name,text:u.text,values:u.values??(Array.isArray(n[1])?n[1]:void 0)}:void 0,S={[_.ATTR_DB_SYSTEM]:_.DB_SYSTEM_VALUE_POSTGRESQL,[p.ATTR_DB_NAMESPACE]:this.database,[p.ATTR_SERVER_PORT]:this.connectionParameters.port,[p.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};E?.text&&(S[p.ATTR_DB_OPERATION_NAME]=a.parseNormalizedOperationName(E?.text));let A=()=>{e.recordOperationDuration(S,l)},g=e.getConfig(),m=a.handleConfigQuery.call(this,e.tracer,g,e._semconvStability,E);if(g.addSqlCommenterCommentToQueries&&(T?n[0]=(0,s.addSqlCommenterComment)(m,u):!d||"name"in u||(n[0]={...u,text:(0,s.addSqlCommenterComment)(m,u.text)})),n.length>0){let t=o.trace.getSpan(o.context.active());if("function"==typeof n[n.length-1])n[n.length-1]=a.patchCallback(g,m,n[n.length-1],S,A),t&&(n[n.length-1]=o.context.bind(o.context.active(),n[n.length-1]));else if("function"==typeof E?.callback){let r=a.patchCallback(e.getConfig(),m,E.callback,S,A);t&&(r=o.context.bind(o.context.active(),r)),n[0].callback=r}}let{requestHook:h}=g;"function"==typeof h&&E&&(0,r.safeExecuteInTheMiddle)(()=>{let{database:e,host:t,port:n,user:r}=this.connectionParameters;h(m,{connection:{database:e,host:t,port:n,user:r},query:{text:E.text,values:E.values,name:E.name}})},t=>{t&&e._diag.error("Error running query hook",t)},!0);try{i=t.apply(this,n)}catch(e){throw e instanceof Error&&m.recordException(a.sanitizedErrorMessage(e)),m.setStatus({code:o.SpanStatusCode.ERROR,message:a.getErrorMessage(e)}),m.end(),e}return i instanceof Promise?i.then(t=>new Promise(n=>{a.handleExecutionResult(e.getConfig(),m,t),A(),m.end(),n(t)})).catch(e=>new Promise((t,n)=>{e instanceof Error&&m.recordException(a.sanitizedErrorMessage(e)),m.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),A(),m.end(),n(e)})):i})}_setPoolConnectEventListeners(e){if(e[i.EVENT_LISTENERS_SET])return;let t=a.getPoolName(e.options);e.on("connect",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("acquire",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("remove",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("release",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e[i.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let e=this;return t=>function(n){let r=e.getConfig();if(a.shouldSkipInstrumentation(r)||(e._setPoolConnectEventListeners(this),r.ignoreConnectSpans))return t.call(this,n);let i=e.tracer.startSpan(u.SpanNames.POOL_CONNECT,{kind:o.SpanKind.CLIENT,attributes:a.getSemanticAttributesFromPoolConnection(this.options,e._semconvStability)});if(n){let e=o.trace.getSpan(o.context.active());n=a.patchCallbackPGPool(i,n),e&&(n=o.context.bind(o.context.active(),n))}let s=o.context.with(o.trace.setSpan(o.context.active(),i),()=>t.call(this,n));return E(i,s)}}}function E(e,t){return t instanceof Promise?o.context.bind(o.context.active(),t.then(t=>(e.end(),t)).catch(t=>(t instanceof Error&&e.recordException(a.sanitizedErrorMessage(t)),e.setStatus({code:o.SpanStatusCode.ERROR,message:a.getErrorMessage(t)}),e.end(),Promise.reject(t)))):t}n.PgInstrumentation=d},840167,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.PgInstrumentation=void 0;var r=e.r(451598);Object.defineProperty(n,"PgInstrumentation",{enumerable:!0,get:function(){return r.PgInstrumentation}});var o=e.r(894105);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}})},832719,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(840167),o=e.r(976285),i=e.r(625331),a="Postgres",s=i.generateInstrumentOnce(a,r.PgInstrumentation,e=>({requireParentSpan:!0,requestHook(e){i.addOriginToSpan(e,"auto.db.otel.postgres")},ignoreConnectSpans:e?.ignoreConnectSpans??!1})),l=o.defineIntegration(e=>({name:a,setupOnce(){s(e)}}));n.instrumentPostgres=s,n.postgresIntegration=l},19194,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(976285),s=e.r(625331),l=e.r(866779),u="PostgresJs",c=[">=3.0.0 <4"],p=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,_=Symbol.for("sentry.query.from.instrumented.sql"),T=s.generateInstrumentOnce(u,e=>new d({requireParentSpan:e?.requireParentSpan??!0,requestHook:e?.requestHook}));class d extends o.InstrumentationBase{constructor(e){super("sentry-postgres-js",a.SDK_VERSION,e)}init(){let e=new o.InstrumentationNodeModuleDefinition("postgres",c,e=>{try{return this._patchPostgres(e)}catch(t){return l.DEBUG_BUILD&&a.debug.error("Failed to patch postgres module:",t),e}},e=>e);return["src","cf/src","cjs/src"].forEach(t=>{e.files.push(new o.InstrumentationNodeModuleFile(`postgres/${t}/query.js`,c,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),e}_patchPostgres(e){let t="function"==typeof e,n=t?e:e.default;if("function"!=typeof n)return l.DEBUG_BUILD&&a.debug.warn("postgres module does not export a function. Skipping instrumentation."),e;let r=this,o=function(...e){let t=Reflect.construct(n,e);if(!t||"function"!=typeof t)return l.DEBUG_BUILD&&a.debug.warn("postgres() did not return a valid instance"),t;let o=r.getConfig();return a.instrumentPostgresJsSql(t,{requireParentSpan:o.requireParentSpan,requestHook:o.requestHook})};for(let e of(Object.setPrototypeOf(o,n),Object.setPrototypeOf(o.prototype,n.prototype),Object.getOwnPropertyNames(n)))if(!["length","name","prototype"].includes(e)){let t=Object.getOwnPropertyDescriptor(n,e);t&&Object.defineProperty(o,e,t)}return t?o:(a.replaceExports(e,"default",o),e)}_shouldCreateSpans(){let e=this.getConfig();return void 0!==r.trace.getSpan(r.context.active())||!e.requireParentSpan}_setOperationName(e,t,n){if(n)return void e.setAttribute(i.ATTR_DB_OPERATION_NAME,n);let r=t?.match(p);r?.[1]&&e.setAttribute(i.ATTR_DB_OPERATION_NAME,r[1].toUpperCase())}_reconstructQuery(e){if(e?.length)return 1===e.length?e[0]||void 0:e.reduce((e,t,n)=>0===n?t:`${e}$${n}${t}`,"")}_sanitizeSqlQuery(e){return e?e.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{s.addOriginToSpan(r,"auto.db.postgresjs"),r.setAttributes({[i.ATTR_DB_SYSTEM_NAME]:"postgres",[i.ATTR_DB_QUERY_TEXT]:c});let{requestHook:p}=t.getConfig();p&&o.safeExecuteInTheMiddle(()=>p(r,c,void 0),e=>{e&&(r.setAttribute("sentry.hook.error","requestHook failed"),l.DEBUG_BUILD&&a.debug.error(`Error in requestHook for ${u} integration:`,e))},!0);let _=this.resolve;this.resolve=new Proxy(_,{apply:(e,n,o)=>{try{t._setOperationName(r,c,o?.[0]?.command),r.end()}catch(e){l.DEBUG_BUILD&&a.debug.error("Error ending span in resolve callback:",e)}return Reflect.apply(e,n,o)}});let T=this.reject;this.reject=new Proxy(T,{apply:(e,n,o)=>{try{r.setStatus({code:a.SPAN_STATUS_ERROR,message:o?.[0]?.message||"unknown_error"}),r.setAttribute(i.ATTR_DB_RESPONSE_STATUS_CODE,o?.[0]?.code||"unknown"),r.setAttribute(i.ATTR_ERROR_TYPE,o?.[0]?.name||"unknown"),t._setOperationName(r,c),r.end()}catch(e){l.DEBUG_BUILD&&a.debug.error("Error ending span in reject callback:",e)}return Reflect.apply(e,n,o)}});try{return n.apply(this,e)}catch(e){throw r.setStatus({code:a.SPAN_STATUS_ERROR,message:e instanceof Error?e.message:"unknown_error"}),r.end(),e}})},e.Query.prototype.handle.__sentry_original__=n,e}_unpatchQueryPrototype(e){return e.Query.prototype.handle.__sentry_original__&&(e.Query.prototype.handle=e.Query.prototype.handle.__sentry_original__),e}}let E=a.defineIntegration(e=>({name:u,setupOnce(){T(e)}}));n.PostgresJsInstrumentation=d,n.instrumentPostgresJs=T,n.postgresJsIntegration=E},816879,e=>{"use strict";e.s([],712748),e.i(712748);var t,n,r=e.i(545364),o=e.i(605809);let i="object"==typeof globalThis?globalThis:e.g,a=Symbol.for("io.opentelemetry.js.api.logs");class s{emit(e){}}let l=new s,u=new class{getLogger(e,t,n){return new s}};class c{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}emit(e){this._getLogger().emit(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider._getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):l}}class p{getLogger(e,t,n){var r;return null!=(r=this._getDelegateLogger(e,t,n))?r:new c(this,e,t,n)}_getDelegate(){var e;return null!=(e=this._delegate)?e:u}_setDelegate(e){this._delegate=e}_getDelegateLogger(e,t,n){var r;return null==(r=this._delegate)?void 0:r.getLogger(e,t,n)}}class _{constructor(){this._proxyLoggerProvider=new p}static getInstance(){return this._instance||(this._instance=new _),this._instance}setGlobalLoggerProvider(e){return i[a]?this.getLoggerProvider():(i[a]=t=>1===t?e:u,this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,t;return null!=(t=null==(e=i[a])?void 0:e.call(i,1))?t:this._proxyLoggerProvider}getLogger(e,t,n){return this.getLoggerProvider().getLogger(e,t,n)}disable(){delete i[a],this._proxyLoggerProvider=new p}}let T=_.getInstance();function d(e){let t=e.tracerProvider||r.trace.getTracerProvider(),n=e.meterProvider||o.metrics.getMeterProvider(),i=e.loggerProvider||T.getLoggerProvider(),a=e.instrumentations?.flat()??[];for(let e=0,r=a.length;e{a.forEach(e=>e.disable())}}var E=e.i(814747),S=e.i(224361),A=e.i(978116);let g=/^(?:v)?(?(?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-]+)*))?$/,m=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,h={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function R(e,t,n,r){if(t.includes("||")){for(let o of t.trim().split("||"))if(f(e,o,n,r))return!0;return!1}if(t.includes(" - ")){var o,i;o=t,i=r,t=o.replace(x,(e,t,n,r,o,a,s,l,u,c,p,_)=>(t=N(n)?"":N(r)?`>=${n}.0.0${i?.includePrerelease?"-0":""}`:N(o)?`>=${n}.${r}.0${i?.includePrerelease?"-0":""}`:a?`>=${t}`:`>=${t}${i?.includePrerelease?"-0":""}`,l=N(u)?"":N(c)?`<${+u+1}.0.0-0`:N(p)?`<${u}.${+c+1}.0-0`:_?`<=${u}.${c}.${p}-${_}`:i?.includePrerelease?`<${u}.${c}.${+p+1}-0`:`<=${l}`,`${t} ${l}`.trim()))}else if(t.includes(" ")){for(let o of t.trim().replace(/\s{2,}/g," ").split(" "))if(!f(e,o,n,r))return!1;return!0}return f(e,t,n,r)}function f(e,t,n,r){var o,i,a,s,l,u;let c;if((o=t,i=r,t=(l=o=(a=o=o.trim(),s=i,c=s?.includePrerelease?"-0":"",o=a.replace(w,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0${c} <${+t+1}.0.0-0`:N(r)?"0"===t?`>=${t}.${n}.0${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.0${c} <${+t+1}.0.0-0`:o?"0"===t?"0"===n?`>=${t}.${n}.${r}-${o} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r}-${o} <${+t+1}.0.0-0`:"0"===t?"0"===n?`>=${t}.${n}.${r}${c} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${+t+1}.0.0-0`)).replace(V,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0 <${+t+1}.0.0-0`:N(r)?`>=${t}.${n}.0 <${t}.${+n+1}.0-0`:o?`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${t}.${+n+1}.0-0`),u=i,o=l.replace(B,(e,t,n,r,o,i)=>{let a=N(n),s=a||N(r),l=s||N(o);return"="===t&&l&&(t=""),i=u?.includePrerelease?"-0":"",a?e=">"===t||"<"===t?"<0.0.0-0":"*":t&&l?(s&&(r=0),o=0,">"===t?(t=">=",s?(n=+n+1,r=0):r=+r+1,o=0):"<="===t&&(t="<",s?n=+n+1:r=+r+1),"<"===t&&(i="-0"),e=`${t+n}.${r}.${o}${i}`):s?e=`>=${n}.0.0${i} <${+n+1}.0.0-0`:l&&(e=`>=${n}.${r}.0${i} <${n}.${+r+1}.0-0`),e})).trim()).includes(" "))return R(e,t,n,r);{let r=function(e){if(!e)return{};let t=e.match(m);if(!t)return A.diag.error(`Invalid range: ${e}`),{invalid:!0};let n=t.groups.op,r=t.groups.version,o=t.groups.prerelease,i=t.groups.build,a=r.split("."),s=o?.split(".");return"=="===n&&(n="="),{op:n||"=",version:r,versionSegments:a,versionSegmentCount:a.length,prerelease:o,prereleaseSegments:s,prereleaseSegmentCount:s?s.length:0,build:i}}(t);return n.push(r),function(e,t){if(t.invalid)return!1;if(!t.version||I(t.version))return!0;let n=y(e.versionSegments||[],t.versionSegments||[]);if(0===n){let r=e.prereleaseSegments||[],o=t.prereleaseSegments||[];n=r.length||o.length?!r.length&&o.length?1:r.length&&!o.length?-1:y(r,o):0}return h[t.op]?.includes(n)}(e,r)}}function N(e){return!e||"x"===e.toLowerCase()||"*"===e}function I(e){return"*"===e||"x"===e||"X"===e}function O(e){let t=parseInt(e,10);return isNaN(t)?e:t}function y(e,t){for(let n=0;nr?1:n)?=?)\\s*${G}$`),x=RegExp(`^\\s*(${G})\\s+-\\s+(${G})\\s*$`),V=RegExp(`^(?:~>?)${G}$`),w=RegExp(`^(?:\\^)${G}$`),H=console.error.bind(console);function k(e,t,n){let r=!!e[t]&&Object.prototype.propertyIsEnumerable.call(e,t);Object.defineProperty(e,t,{configurable:!0,enumerable:r,writable:!0,value:n})}let Y=(e,t,n)=>{if(!e||!e[t])return void H("no original function "+String(t)+" to wrap");if(!n){H("no wrapper function"),H(Error().stack);return}let r=e[t];if("function"!=typeof r||"function"!=typeof n)return void H("original object and wrapper must be functions");let o=n(r,t);return k(o,"__original",r),k(o,"__unwrap",()=>{e[t]===o&&k(e,t,r)}),k(o,"__wrapped",!0),k(e,t,o),o},j=(e,t,n)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{Y(e,t,n)})}):H("must provide one or more functions to wrap on modules")},F=(e,t)=>{if(!e||!e[t]){H("no function to unwrap."),H(Error().stack);return}let n=e[t];n.__unwrap?n.__unwrap():H("no original to unwrap to -- has "+String(t)+" already been unwrapped?")},W=(e,t)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{F(e,t)})}):H("must provide one or more functions to unwrap on modules")};function K(e){e&&e.logger&&("function"!=typeof e.logger?H("new logger isn't a function, not replacing"):H=e.logger)}K.wrap=Y,K.massWrap=j,K.unwrap=F,K.massUnwrap=W;class X{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(e,t,n){this.instrumentationName=e,this.instrumentationVersion=t,this.setConfig(n),this._diag=A.diag.createComponentLogger({namespace:e}),this._tracer=r.trace.getTracer(e,t),this._meter=o.metrics.getMeter(e,t),this._logger=T.getLogger(e,t),this._updateMetricInstruments()}_wrap=Y;_unwrap=F;_massWrap=j;_massUnwrap=W;get meter(){return this._meter}setMeterProvider(e){this._meter=e.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(e){this._logger=e.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let e=this.init()??[];return Array.isArray(e)?e:[e]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(e){this._config={enabled:!0,...e}}setTracerProvider(e){this._tracer=e.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(e,t,n,r){if(e)try{e(n,r)}catch(e){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:t},e)}}}var Z=e.i(156823);class J{hooks=[];children=new Map}class ${_trie=new J;_counter=0;insert(e){let t=this._trie;for(let n of e.moduleName.split("/")){let e=t.children.get(n);e||(e=new J,t.children.set(n,e)),t=e}t.hooks.push({hook:e,insertedId:this._counter++})}search(e,{maintainInsertionOrder:t,fullOnly:n}={}){let r=this._trie,o=[],i=!0;for(let t of e.split("/")){let e=r.children.get(t);if(!e){i=!1;break}n||o.push(...e.hooks),r=e}return(n&&i&&o.push(...r.hooks),0===o.length)?[]:1===o.length?[o[0].hook]:(t&&o.sort((e,t)=>e.insertedId-t.insertedId),o.map(({hook:e})=>e))}}let Q=["afterEach","after","beforeEach","before","describe","it"].every(t=>"function"==typeof e.g[t]);class z{_moduleNameTrie=new $;static _instance;constructor(){this._initialize()}_initialize(){new Z.Hook(null,{internals:!0},(e,t,n)=>{var r;let o=(r=t,"/"!==E.sep?r.split(E.sep).join("/"):r);for(let{onRequire:r}of this._moduleNameTrie.search(o,{maintainInsertionOrder:!0,fullOnly:void 0===n}))e=r(e,t,n);return e})}register(e,t){let n={moduleName:e,onRequire:t};return this._moduleNameTrie.insert(n),n}static getInstance(){return Q?new z:this._instance=this._instance??new z}}var q=e.i(74667),ee=e.i(522734);function et(e,t,n){let r,o;try{o=e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}async function en(e,t,n){let r,o;try{o=await e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}function er(e){return"function"==typeof e&&"function"==typeof e.__original&&"function"==typeof e.__unwrap&&!0===e.__wrapped}class eo extends X{_modules;_hooks=[];_requireInTheMiddleSingleton=z.getInstance();_enabled=!1;constructor(e,t,n){super(e,t,n);let r=this.init();r&&!Array.isArray(r)&&(r=[r]),this._modules=r||[],this._config.enabled&&this.enable()}_wrap=(e,t,n)=>{if(er(e[t])&&this._unwrap(e,t),!S.types.isProxy(e))return Y(e,t,n);{let r=Y(Object.assign({},e),t,n);return Object.defineProperty(e,t,{value:r}),r}};_unwrap=(e,t)=>S.types.isProxy(e)?Object.defineProperty(e,t,{value:e[t]}):F(e,t);_massWrap=(e,t,n)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._wrap(e,t,n)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_massUnwrap=(e,t)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._unwrap(e,t)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(t=>{let{name:n}=t;try{let t=(()=>{let e=Error("Cannot find module as expression is too dynamic");throw e.code="MODULE_NOT_FOUND",e})();e.c[t]&&this._diag.warn(`Module ${n} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${n}`)}catch{}})}_extractPackageVersion(e){try{let t=(0,ee.readFileSync)(E.join(e,"package.json"),{encoding:"utf8"}),n=JSON.parse(t).version;return"string"==typeof n?n:void 0}catch{A.diag.warn("Failed extracting version",e)}}_onRequire(e,t,n,r){if(!r)return"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:e.name}),e.patch(t)):t;let o=this._extractPackageVersion(r);if(e.moduleVersion=o,e.name===n)return ei(e.supportedVersions,o,e.includePrerelease)&&"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:e.name,version:e.moduleVersion,baseDir:r}),e.patch(t,e.moduleVersion)):t;let i=e.files??[],a=E.normalize(n);return i.filter(e=>e.name===a).filter(t=>ei(t.supportedVersions,o,e.includePrerelease)).reduce((t,n)=>(n.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:e.name,version:e.moduleVersion,fileName:n.name,baseDir:r}),n.patch(t,e.moduleVersion)):t,t)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let e of this._modules)for(let t of("function"==typeof e.patch&&e.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:e.name,version:e.moduleVersion}),e.patch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.patch(t.moduleExports,e.moduleVersion));return}for(let e of(this._warnOnPreloadedModules(),this._modules)){let t=(t,n,r)=>{if(!r&&E.isAbsolute(n)){let e=E.parse(n);n=e.name,r=e.dir}return this._onRequire(e,t,n,r)},n=(t,n,r)=>this._onRequire(e,t,n,r),r=E.isAbsolute(e.name)?new Z.Hook([e.name],{internals:!0},n):this._requireInTheMiddleSingleton.register(e.name,n);this._hooks.push(r);let o=new q.Hook([e.name],{internals:!1},t);this._hooks.push(o)}}}disable(){if(this._enabled)for(let e of(this._enabled=!1,this._modules))for(let t of("function"==typeof e.unpatch&&e.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:e.name,version:e.moduleVersion}),e.unpatch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.unpatch(t.moduleExports,e.moduleVersion))}isEnabled(){return this._enabled}}function ei(e,t,n){return void 0===t?e.includes("*"):e.some(e=>(function(e,t,n){var r,o,i;if(!("string"==typeof(r=e)&&g.test(r)))return A.diag.error(`Invalid version: ${e}`),!1;if(!t)return!0;t=t.replace(/([<>=~^]+)\s+/g,"$1");let a=function(e){let t=e.match(g);if(!t)return void A.diag.error(`Invalid version: ${e}`);let n=t.groups.version,r=t.groups.prerelease,o=t.groups.build,i=n.split("."),a=r?.split(".");return{op:void 0,version:n,versionSegments:i,versionSegmentCount:i.length,prerelease:r,prereleaseSegments:a,prereleaseSegmentCount:a?a.length:0,build:o}}(e);if(!a)return!1;let s=[],l=R(a,t,s,n);return l&&!n?.includePrerelease?(o=a,i=s,!o.prerelease||i.some(e=>e.prerelease&&e.version===o.version)):l})(t,e,{includePrerelease:n}))}class ea{name;supportedVersions;patch;unpatch;files;constructor(e,t,n,r,o){this.name=e,this.supportedVersions=t,this.patch=n,this.unpatch=r,this.files=o||[]}}class es{supportedVersions;patch;unpatch;name;constructor(e,t,n,r){this.supportedVersions=t,this.patch=n,this.unpatch=r,this.name=(0,E.normalize)(e)}}function el(e,t){let r=n.OLD;for(let o of t?.split(",").map(e=>e.trim()).filter(e=>""!==e)??[])if(o.toLowerCase()===e+"/dup"){r=n.DUPLICATE;break}else o.toLowerCase()===e&&(r=n.STABLE);return r}(t=n||(n={}))[t.STABLE=1]="STABLE",t[t.OLD=2]="OLD",t[t.DUPLICATE=3]="DUPLICATE",e.s(["InstrumentationBase",()=>eo,"InstrumentationNodeModuleDefinition",()=>ea,"InstrumentationNodeModuleFile",()=>es,"SemconvStability",()=>n,"isWrapped",()=>er,"registerInstrumentations",()=>d,"safeExecuteInTheMiddle",()=>et,"safeExecuteInTheMiddleAsync",()=>en,"semconvStabilityFromStr",()=>el],816879)},823876,(e,t,n)=>{"use strict";var r=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,s={},l={PrismaInstrumentation:()=>f,registerInstrumentations:()=>N.registerInstrumentations};for(var u in l)r(s,u,{get:l[u],enumerable:!0});t.exports=((e,t,n,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of i(t))a.call(e,l)||l===n||r(e,l,{get:()=>t[l],enumerable:!(s=o(t,l))||s.enumerable});return e})(r({},"__esModule",{value:!0}),s);var c=e.r(357762),p=e.r(816879),_="7.6.0".split(".")[0],T="PRISMA_INSTRUMENTATION",d=`V${_}_PRISMA_INSTRUMENTATION`,E=globalThis,S=e.r(357762),A="true"===process.env.PRISMA_SHOW_ALL_TRACES,g=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:e,ignoreSpanTypes:t}){this.tracerProvider=e,this.ignoreSpanTypes=t}isEnabled(){return!0}getTraceParent(e){let t=S.trace.getSpanContext(e??S.context.active());return t?`00-${t.traceId}-${t.spanId}-0${t.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(e){let t=this.tracerProvider.getTracer("prisma"),n=new Map;for(let r of e.filter(e=>null===e.parentId))!function e(t,n,r,o,i){if(h(n.name,i))return;let a={attributes:n.attributes,kind:"client"===n.kind?S.SpanKind.CLIENT:S.SpanKind.INTERNAL,startTime:n.startTime};t.startActiveSpan(n.name,a,a=>{for(let s of(o.set(n.id,a.spanContext().spanId),n.links&&a.addLinks(n.links.flatMap(e=>{let t=o.get(e);return t?{context:{spanId:t,traceId:a.spanContext().traceId,traceFlags:a.spanContext().traceFlags}}:[]})),r.filter(e=>e.parentId===n.id)))e(t,s,r,o,i);a.end(n.endTime)})}(t,r,e,n,this.ignoreSpanTypes)}getActiveContext(){return S.context.active()}runInChildSpan(e,t){if("string"==typeof e&&(e={name:e}),e.internal&&!A)return t();let n=this.tracerProvider.getTracer("prisma"),r=e.context??this.getActiveContext(),o=`prisma:client:${e.name}`;if(h(o,this.ignoreSpanTypes))return t();if(!1===e.active){let i=n.startSpan(o,e,r);return m(i,t(i,r))}return n.startActiveSpan(o,e,e=>m(e,t(e,r)))}};function m(e,t){var n;return null!=(n=t)&&"function"==typeof n.then?t.then(t=>(e.end(),t),t=>{throw e.end(),t}):(e.end(),t)}function h(e,t){return t.some(t=>"string"==typeof t?t===e:t.test(e))}var R="7.6.0",f=class extends p.InstrumentationBase{tracerProvider;constructor(e={}){super("@prisma/instrumentation",R,e)}setTracerProvider(e){this.tracerProvider=e}init(){return[new p.InstrumentationNodeModuleDefinition("@prisma/client",[R])]}enable(){let e,t=this._config;e={helper:new g({tracerProvider:this.tracerProvider??c.trace.getTracerProvider(),ignoreSpanTypes:t.ignoreSpanTypes??[]})},E[d]=e,E[T]=e}disable(){delete E[d],delete E[T]}isEnabled(){return void 0!==function(){let e=E[d];if(e?.helper)return e.helper;let t=E[T];return t?.helper}()}},N=e.r(816879)},547683,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(823876),i=e.r(976285),a=e.r(625331),s="Prisma";function l(){let e=globalThis.PRISMA_INSTRUMENTATION;return e&&"object"==typeof e&&"helper"in e?e.helper:void 0}class u extends o.PrismaInstrumentation{constructor(e){super(e?.instrumentationConfig)}enable(){super.enable();let e=l();e&&"object"==typeof e&&"dispatchEngineSpans"in e&&(e.createEngineSpan=e=>{let t=r.trace.getTracer("prismaV5Compatibility"),n=t._idGenerator;if(!n)return void i.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{e.spans.forEach(e=>{var o;let i=(o=e.kind,"client"===o?r.SpanKind.CLIENT:r.SpanKind.INTERNAL),a=e.parent_span_id,s=e.span_id,l=e.trace_id,u=e.links?.map(e=>({context:{traceId:e.trace_id,spanId:e.span_id,traceFlags:r.TraceFlags.SAMPLED}})),c=r.trace.setSpanContext(r.context.active(),{traceId:l,spanId:a,traceFlags:r.TraceFlags.SAMPLED});r.context.with(c,()=>{t._idGenerator={generateTraceId:()=>l,generateSpanId:()=>s},t.startSpan(e.name,{kind:i,links:u,startTime:e.start_time,attributes:e.attributes}).end(e.end_time),t._idGenerator=n})})}finally{t._idGenerator=n}})}}let c=a.generateInstrumentOnce(s,e=>new u(e)),p=i.defineIntegration(e=>({name:s,setupOnce(){c(e)},setup(e){l()&&e.on("spanStart",e=>{let t=i.spanToJSON(e);t.description?.startsWith("prisma:")&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===t.description&&t.data["db.query.text"]&&e.updateName(t.data["db.query.text"]),"prisma:engine:db_query"!==t.description||t.data["db.system"]||e.setAttribute("db.system","prisma")})}}));n.instrumentPrisma=c,n.prismaIntegration=p},399189,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},318837,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HapiLifecycleMethodNames=n.HapiLayerType=n.handlerPatched=n.HapiComponentName=void 0,n.HapiComponentName="@hapi/hapi",n.handlerPatched=Symbol("hapi-handler-patched"),n.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},n.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},808139,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_HTTP_METHOD=void 0,n.ATTR_HTTP_METHOD="http.method"},180434,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).HAPI_TYPE="hapi.type",r.PLUGIN_NAME="hapi.plugin.name",r.EXT_TYPE="server.ext.type"},346711,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getPluginFromInput=n.getExtMetadata=n.getRouteMetadata=n.isPatchableExtMethod=n.isDirectExtInput=n.isLifecycleExtEventObj=n.isLifecycleExtType=n.getPluginName=void 0;let r=e.r(808119),o=e.r(808139),i=e.r(318837),a=e.r(180434),s=e.r(204780);n.getPluginName=function(e){return e.name?e.name:e.pkg.name},n.isLifecycleExtType=e=>"string"==typeof e&&i.HapiLifecycleMethodNames.has(e),n.isLifecycleExtEventObj=e=>{let t=e?.type;return void 0!==t&&(0,n.isLifecycleExtType)(t)},n.isDirectExtInput=e=>Array.isArray(e)&&e.length<=3&&(0,n.isLifecycleExtType)(e[0])&&"function"==typeof e[1],n.isPatchableExtMethod=e=>!Array.isArray(e),n.getRouteMetadata=(e,t,n)=>{let l,u={[r.ATTR_HTTP_ROUTE]:e.path};return t&s.SemconvStability.OLD&&(u[o.ATTR_HTTP_METHOD]=e.method),t&s.SemconvStability.STABLE&&(u[r.ATTR_HTTP_REQUEST_METHOD]=e.method),n?(u[a.AttributeNames.HAPI_TYPE]=i.HapiLayerType.PLUGIN,u[a.AttributeNames.PLUGIN_NAME]=n,l=`${n}: route - ${e.path}`):(u[a.AttributeNames.HAPI_TYPE]=i.HapiLayerType.ROUTER,l=`route - ${e.path}`),{attributes:u,name:l}},n.getExtMetadata=(e,t,n)=>{let r=`ext - ${e}`;return(n&&"method"!==n&&(r=`ext - ${e} - ${n}`),t)?{attributes:{[a.AttributeNames.EXT_TYPE]:e,[a.AttributeNames.HAPI_TYPE]:i.HapiLayerType.EXT,[a.AttributeNames.PLUGIN_NAME]:t},name:`${t}: ${r}`}:{attributes:{[a.AttributeNames.EXT_TYPE]:e,[a.AttributeNames.HAPI_TYPE]:i.HapiLayerType.EXT},name:r}},n.getPluginFromInput=e=>"plugin"in e?"plugin"in e.plugin?e.plugin.plugin:e.plugin:e},345301,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HapiInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(399189),s=e.r(318837),l=e.r(346711);class u extends i.InstrumentationBase{_semconvStability;constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e),this._semconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new i.InstrumentationNodeModuleDefinition(s.HapiComponentName,[">=17.0.0 <22"],e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;return(0,i.isWrapped)(t.server)||this._wrap(t,"server",this._getServerPatch.bind(this)),(0,i.isWrapped)(t.Server)||this._wrap(t,"Server",this._getServerPatch.bind(this)),t},e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;this._massUnwrap([t],["server","Server"])})}_getServerPatch(e){let t=this,n=this;return function(r){let o=e.apply(this,[r]);return n._wrap(o,"route",e=>t._getServerRoutePatch.bind(t)(e)),n._wrap(o,"ext",e=>t._getServerExtPatch.bind(t)(e)),n._wrap(o,"register",t._getServerRegisterPatch.bind(t)),o}}_getServerRegisterPatch(e){let t=this;return function(n,r){if(Array.isArray(n))for(let e of n){let n=(0,l.getPluginFromInput)(e);t._wrapRegisterHandler(n)}else{let e=(0,l.getPluginFromInput)(n);t._wrapRegisterHandler(e)}return e.apply(this,[n,r])}}_getServerExtPatch(e,t){let n=this;return function(...r){if(Array.isArray(r[0])){let e=r[0];for(let r=0;rt._getServerRoutePatch.bind(t)(e,n)),o._wrap(e,"ext",e=>t._getServerExtPatch.bind(t)(e,n)),r.call(this,e,i)}}_wrapExtMethods(e,t,n){let o=this;if(e instanceof Array)for(let n=0;nasync function(...a){if(void 0===r.trace.getSpan(r.context.active()))return await i.call(this,...a);let s=(0,o.getRPCMetadata)(r.context.active());s?.type===o.RPCType.HTTP&&(s.route=e.path);let u=(0,l.getRouteMetadata)(e,n._semconvStability,t),c=n.tracer.startSpan(u.name,{attributes:u.attributes});try{return await r.context.with(r.trace.setSpan(r.context.active(),c),()=>i.call(this,...a))}catch(e){throw c.recordException(e),c.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),e}finally{c.end()}};if("function"==typeof e.handler)e.handler=i(e.handler);else if("function"==typeof e.options){let t=e.options;e.options=function(e){let n=t(e);return"function"==typeof n.handler&&(n.handler=i(n.handler)),n}}else"function"==typeof e.options?.handler&&(e.options.handler=i(e.options.handler));return e}}n.HapiInstrumentation=u},144297,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.HapiInstrumentation=void 0;var r=e.r(345301);Object.defineProperty(n,"HapiInstrumentation",{enumerable:!0,get:function(){return r.HapiInstrumentation}});var o=e.r(180434);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}})},376169,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(144297),o=e.r(976285),i=e.r(625331),a=e.r(866779),s="Hapi",l=i.generateInstrumentOnce(s,()=>new r.HapiInstrumentation),u=o.defineIntegration(()=>({name:s,setupOnce(){l()}})),c={name:"SentryHapiErrorPlugin",version:o.SDK_VERSION,register:async function(e){e.events.on({name:"request",channels:["error"]},(e,t)=>{var n;if(o.getIsolationScope()!==o.getDefaultIsolationScope()){let t=e.route;t.path&&o.getIsolationScope().setTransactionName(`${t.method.toUpperCase()} ${t.path}`)}else a.DEBUG_BUILD&&o.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");t&&"object"==typeof t&&"error"in t&&t.error&&(n=t.error,o.captureException(n,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function p(e){await e.register(c);let t=o.getClient();t&&t.on("spanStart",e=>{var t;let n,r;t=e,r=(n=o.spanToJSON(t).data)["hapi.type"],!n[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&r&&t.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${r}.hapi`})}),i.ensureIsWrapped(e.register,"hapi")}n.hapiErrorPlugin=c,n.hapiIntegration=u,n.instrumentHapi=l,n.setupHapiErrorHandler=p},212994,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},n.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},29288,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780),i=e.r(976285),a=e.r(212994);class s extends o.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-hono","0.0.1",e)}init(){return[new o.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],e=>this._patch(e))]}_patch(e){let t=this;class n extends e.Hono{constructor(...e){super(...e),t._wrap(this,"get",t._patchHandler()),t._wrap(this,"post",t._patchHandler()),t._wrap(this,"put",t._patchHandler()),t._wrap(this,"delete",t._patchHandler()),t._wrap(this,"options",t._patchHandler()),t._wrap(this,"patch",t._patchHandler()),t._wrap(this,"all",t._patchHandler()),t._wrap(this,"on",t._patchOnHandler()),t._wrap(this,"use",t._patchMiddlewareHandler())}}try{e.Hono=n}catch{return{...e,Hono:n}}return e}_patchHandler(){let e=this;return function(t){return function(...n){if("string"==typeof n[0]){let r=n[0];if(1===n.length)return t.apply(this,[r]);let o=n.slice(1);return t.apply(this,[r,...o.map(t=>e._wrapHandler(t))])}return t.apply(this,n.map(t=>e._wrapHandler(t)))}}}_patchOnHandler(){let e=this;return function(t){return function(...n){let r=n.slice(2);return t.apply(this,[...n.slice(0,2),...r.map(t=>e._wrapHandler(t))])}}}_patchMiddlewareHandler(){let e=this;return function(t){return function(...n){if("string"==typeof n[0]){let r=n[0];if(1===n.length)return t.apply(this,[r]);let o=n.slice(1);return t.apply(this,[r,...o.map(t=>e._wrapHandler(t))])}return t.apply(this,n.map(t=>e._wrapHandler(t)))}}}_wrapHandler(e){let t=this;return function(n,o){if(!t.isEnabled())return e.apply(this,[n,o]);let s=n.req.path,l=t.tracer.startSpan(s);return r.context.with(r.trace.setSpan(r.context.active(),l),()=>t._safeExecute(()=>{let r=e.apply(this,[n,o]);if(i.isThenable(r))return r.then(n=>{let r=t._determineHandlerType(n);return l.setAttributes({[a.AttributeNames.HONO_TYPE]:r,[a.AttributeNames.HONO_NAME]:r===a.HonoTypes.REQUEST_HANDLER?s:e.name||"anonymous"}),t.getConfig().responseHook?.(l),n});{let n=t._determineHandlerType(r);return l.setAttributes({[a.AttributeNames.HONO_TYPE]:n,[a.AttributeNames.HONO_NAME]:n===a.HonoTypes.REQUEST_HANDLER?s:e.name||"anonymous"}),t.getConfig().responseHook?.(l),r}},()=>l.end(),e=>{t._handleError(l,e),l.end()}))}}_safeExecute(e,t,n){try{let r=e();return i.isThenable(r)?r.then(()=>t(),e=>n(e)):t(),r}catch(e){throw n(e),e}}_determineHandlerType(e){return void 0===e?a.HonoTypes.MIDDLEWARE:a.HonoTypes.REQUEST_HANDLER}_handleError(e,t){t instanceof Error&&(e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.recordException(t))}}n.HonoInstrumentation=s},688750,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(625331),a=e.r(866779),s=e.r(212994),l=e.r(29288),u="Hono",c=i.generateInstrumentOnce(u,()=>new l.HonoInstrumentation({responseHook:e=>{!function(e){let t=o.spanToJSON(e).data,n=t[s.AttributeNames.HONO_TYPE];if(t[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.hono`});let i=t[s.AttributeNames.HONO_NAME];if("string"==typeof i&&e.updateName(i),o.getIsolationScope()===o.getDefaultIsolationScope()){a.DEBUG_BUILD&&o.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let l=t[r.ATTR_HTTP_ROUTE],u=t[r.ATTR_HTTP_REQUEST_METHOD];"string"==typeof l&&"string"==typeof u&&o.getIsolationScope().setTransactionName(`${u} ${l}`)}(e)}})),p=o.defineIntegration(()=>({name:u,setupOnce(){c()}}));n.honoIntegration=p,n.instrumentHono=c,n.setupHonoErrorHandler=function(e,t){e.use(async function(e,t){let n=o.httpRequestToRequestData(e.req);o.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:n}),await t()}),e.use(async function(e,n){await n(),(t?.shouldHandleError||function(e){return e.res.status>=500})(e)&&(e.res.sentry=o.captureException(e.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),i.ensureIsWrapped(e.use,"hono")}},476528,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.KoaLayerType=void 0,(r=n.KoaLayerType||(n.KoaLayerType={})).ROUTER="router",r.MIDDLEWARE="middleware"},61353,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},259134,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).KOA_TYPE="koa.type",r.KOA_NAME="koa.name"},327028,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isLayerIgnored=n.getMiddlewareMetadata=void 0;let r=e.r(476528),o=e.r(259134),i=e.r(808119);n.getMiddlewareMetadata=(e,t,n,a)=>n?{attributes:{[o.AttributeNames.KOA_NAME]:a?.toString(),[o.AttributeNames.KOA_TYPE]:r.KoaLayerType.ROUTER,[i.ATTR_HTTP_ROUTE]:a?.toString()},name:e._matchedRouteName||`router - ${a}`}:{attributes:{[o.AttributeNames.KOA_NAME]:t.name??"middleware",[o.AttributeNames.KOA_TYPE]:r.KoaLayerType.MIDDLEWARE},name:`middleware - ${t.name}`},n.isLayerIgnored=(e,t)=>!!(Array.isArray(t?.ignoreLayersType)&&t?.ignoreLayersType?.includes(e))},780039,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.kLayerPatched=void 0,n.kLayerPatched=Symbol("koa-layer-patched")},166165,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KoaInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(476528),a=e.r(61353),s=e.r(327028),l=e.r(385692),u=e.r(780039);class c extends o.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return new o.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;return null==t?t:((0,o.isWrapped)(t.prototype.use)&&this._unwrap(t.prototype,"use"),this._wrap(t.prototype,"use",this._getKoaUsePatch.bind(this)),e)},e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;(0,o.isWrapped)(t.prototype.use)&&this._unwrap(t.prototype,"use")})}_getKoaUsePatch(e){let t=this;return function(n){let r;return r=n.router?t._patchRouterDispatch(n):t._patchLayer(n,!1),e.apply(this,[r])}}_patchRouterDispatch(e){r.diag.debug("Patching @koa/router dispatch");let t=e.router;for(let e of t?.stack??[]){let t=e.path,n=e.stack;for(let e=0;e{if(void 0===r.trace.getSpan(r.context.active()))return e(i,u);let c=(0,s.getMiddlewareMetadata)(i,e,t,n),p=this.tracer.startSpan(c.name,{attributes:c.attributes}),_=(0,l.getRPCMetadata)(r.context.active());_?.type===l.RPCType.HTTP&&i._matchedRoute&&(_.route=i._matchedRoute.toString());let{requestHook:T}=this.getConfig();T&&(0,o.safeExecuteInTheMiddle)(()=>T(p,{context:i,middlewareLayer:e,layerType:a}),e=>{e&&r.diag.error("koa instrumentation: request hook failed",e)},!0);let d=r.trace.setSpan(r.context.active(),p);return r.context.with(d,async()=>{try{return await e(i,u)}catch(e){throw p.recordException(e),e}finally{p.end()}})})}}n.KoaInstrumentation=c},891732,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KoaLayerType=n.AttributeNames=n.KoaInstrumentation=void 0;var r=e.r(166165);Object.defineProperty(n,"KoaInstrumentation",{enumerable:!0,get:function(){return r.KoaInstrumentation}});var o=e.r(259134);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}});var i=e.r(476528);Object.defineProperty(n,"KoaLayerType",{enumerable:!0,get:function(){return i.KoaLayerType}})},86294,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(891732),o=e.r(808119),i=e.r(976285),a=e.r(625331),s=e.r(866779),l=a.generateInstrumentOnce("Koa",r.KoaInstrumentation,(e={})=>({ignoreLayersType:e.ignoreLayersType,requestHook(e,t){a.addOriginToSpan(e,"auto.http.otel.koa");let n=i.spanToJSON(e).data,r=n["koa.type"];r&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${r}.koa`);let l=n["koa.name"];if("string"==typeof l&&e.updateName(l||"< unknown >"),i.getIsolationScope()===i.getDefaultIsolationScope()){s.DEBUG_BUILD&&i.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let u=n[o.ATTR_HTTP_ROUTE],c=t.context?.request?.method?.toUpperCase()||"GET";u&&i.getIsolationScope().setTransactionName(`${c} ${u}`)}})),u=i.defineIntegration((e={})=>({name:"Koa",setupOnce(){l(e)}}));n.instrumentKoa=l,n.koaIntegration=u,n.setupKoaErrorHandler=e=>{e.use(async(e,t)=>{try{await t()}catch(e){throw i.captureException(e,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),e}}),a.ensureIsWrapped(e.use,"koa")}},737439,(e,t,n)=>{"use strict";var r,o,i;Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectNames=n.ConnectTypes=n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).CONNECT_TYPE="connect.type",r.CONNECT_NAME="connect.name",(o=n.ConnectTypes||(n.ConnectTypes={})).MIDDLEWARE="middleware",o.REQUEST_HANDLER="request_handler",(i=n.ConnectNames||(n.ConnectNames={})).MIDDLEWARE="middleware",i.REQUEST_HANDLER="request handler"},927690,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.57.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},783486,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n._LAYERS_STORE_PROPERTY=void 0,n._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},674147,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.generateRoute=n.replaceCurrentStackRoute=n.addNewStackLayer=void 0;let r=e.r(357762),o=e.r(783486);n.addNewStackLayer=e=>{!1===Array.isArray(e[o._LAYERS_STORE_PROPERTY])&&Object.defineProperty(e,o._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),e[o._LAYERS_STORE_PROPERTY].push("/");let t=e[o._LAYERS_STORE_PROPERTY].length;return()=>{t===e[o._LAYERS_STORE_PROPERTY].length?e[o._LAYERS_STORE_PROPERTY].pop():r.diag.warn("Connect: Trying to pop the stack multiple time")}},n.replaceCurrentStackRoute=(e,t)=>{t&&e[o._LAYERS_STORE_PROPERTY].splice(-1,1,t)},n.generateRoute=e=>e[o._LAYERS_STORE_PROPERTY].reduce((e,t)=>e.replace(/\/+$/,"")+t)},683741,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectInstrumentation=n.ANONYMOUS_NAME=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(737439),a=e.r(927690),s=e.r(204780),l=e.r(808119),u=e.r(674147);n.ANONYMOUS_NAME="anonymous";class c extends s.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return[new s.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],e=>this._patchConstructor(e))]}_patchApp(e){(0,s.isWrapped)(e.use)||this._wrap(e,"use",this._patchUse.bind(this)),(0,s.isWrapped)(e.handle)||this._wrap(e,"handle",this._patchHandle.bind(this))}_patchConstructor(e){let t=this;return function(...n){let r=e.apply(this,n);return t._patchApp(r),r}}_patchNext(e,t){return function(n){let r=e.apply(this,[n]);return t(),r}}_startSpan(e,t){let r,o,a;e?(r=i.ConnectTypes.REQUEST_HANDLER,a=i.ConnectNames.REQUEST_HANDLER,o=e):(r=i.ConnectTypes.MIDDLEWARE,a=i.ConnectNames.MIDDLEWARE,o=t.name||n.ANONYMOUS_NAME);let s=`${a} - ${o}`,u={attributes:{[l.ATTR_HTTP_ROUTE]:e.length>0?e:"/",[i.AttributeNames.CONNECT_TYPE]:r,[i.AttributeNames.CONNECT_NAME]:o}};return this.tracer.startSpan(s,u)}_patchMiddleware(e,t){let i=this,a=4===t.length;function s(){if(!i.isEnabled())return t.apply(this,arguments);let[s,l,c]=a?[1,2,3]:[0,1,2],p=arguments[s],_=arguments[l],T=arguments[c];(0,u.replaceCurrentStackRoute)(p,e);let d=(0,o.getRPCMetadata)(r.context.active());e&&d?.type===o.RPCType.HTTP&&(d.route=(0,u.generateRoute)(p));let E="";E=e?`request handler - ${e}`:`middleware - ${t.name||n.ANONYMOUS_NAME}`;let S=i._startSpan(e,t);i._diag.debug("start span",E);let A=!1;function g(){A?i._diag.debug(`span ${S.name} - already finished`):(A=!0,i._diag.debug(`finishing span ${S.name}`),S.end()),_.removeListener("close",g)}return _.addListener("close",g),arguments[c]=i._patchNext(T,g),t.apply(this,arguments)}return Object.defineProperty(s,"length",{value:t.length,writable:!1,configurable:!0}),s}_patchUse(e){let t=this;return function(...n){let r=n[n.length-1],o=n[n.length-2]||"";return n[n.length-1]=t._patchMiddleware(o,r),e.apply(this,n)}}_patchHandle(e){let t=this;return function(){let[n,r]=[0,2],o=arguments[n],i=arguments[r],a=(0,u.addNewStackLayer)(o);return"function"==typeof i&&(arguments[r]=t._patchOut(i,a)),e.apply(this,arguments)}}_patchOut(e,t){return function(...n){return t(),Reflect.apply(e,this,n)}}}n.ConnectInstrumentation=c},13613,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectTypes=n.ConnectNames=n.AttributeNames=n.ANONYMOUS_NAME=n.ConnectInstrumentation=void 0;var r=e.r(683741);Object.defineProperty(n,"ConnectInstrumentation",{enumerable:!0,get:function(){return r.ConnectInstrumentation}}),Object.defineProperty(n,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return r.ANONYMOUS_NAME}});var o=e.r(737439);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}}),Object.defineProperty(n,"ConnectNames",{enumerable:!0,get:function(){return o.ConnectNames}}),Object.defineProperty(n,"ConnectTypes",{enumerable:!0,get:function(){return o.ConnectTypes}})},953027,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(13613),o=e.r(976285),i=e.r(625331),a="Connect",s=i.generateInstrumentOnce(a,()=>new r.ConnectInstrumentation);function l(e,t,n,r){o.captureException(e,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),r(e)}n.connectIntegration=o.defineIntegration(()=>({name:a,setupOnce(){s()}})),n.instrumentConnect=s,n.setupConnectErrorHandler=e=>{e.use(l);let t=o.getClient();t&&t.on("spanStart",e=>{!function(e){let t=o.spanToJSON(e).data,n=t["connect.type"];if(t[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.connect`});let r=t["connect.name"];"string"==typeof r&&e.updateName(r)}(e)}),i.ensureIsWrapped(e.use,"connect")}},210033,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.58.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},312058,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SUPPORTED_VERSIONS=n.MODULE_NAME=void 0,n.MODULE_NAME="knex",n.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},77979,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_NAME_VALUE_SQLITE=n.ATTR_NET_TRANSPORT=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_SQL_TABLE=n.ATTR_DB_OPERATION=n.ATTR_DB_NAME=void 0,n.ATTR_DB_NAME="db.name",n.ATTR_DB_OPERATION="db.operation",n.ATTR_DB_SQL_TABLE="db.sql.table",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.ATTR_NET_TRANSPORT="net.transport",n.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},113622,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.extractTableName=n.extractPortFromConnectionString=n.extractHostFromConnectionString=n.extractDatabaseFromConnectionString=n.limitLength=n.getName=n.mapSystem=n.otelExceptionFromKnexError=n.getFormatter=void 0;let r=e.r(808119),o=e.r(77979);n.getFormatter=e=>{if(e){if(e.client){if(e.client._formatQuery)return e.client._formatQuery.bind(e.client);else if(e.client.SqlString)return e.client.SqlString.format.bind(e.client.SqlString)}if(e.builder)return e.builder.toString.bind(e.builder)}return()=>""},n.otelExceptionFromKnexError=function(e,t){return e&&e instanceof Error?{message:t,code:e.code,stack:e.stack,name:e.name}:e};let i=new Map([["sqlite3",o.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",r.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);n.mapSystem=e=>i.get(e)||e,n.getName=(e,t,n)=>t?n?`${t} ${e}.${n}`:`${t} ${e}`:e,n.limitLength=(e,t)=>"string"==typeof e&&"number"==typeof t&&0{if(e)try{return new URL(e).pathname?.replace(/^\//,"")||void 0}catch{return}},n.extractHostFromConnectionString=e=>{if(e)try{return new URL(e).hostname||void 0}catch{return}},n.extractPortFromConnectionString=e=>{if(e)try{let t=new URL(e).port;return t?parseInt(t,10):void 0}catch{return}},n.extractTableName=e=>{let t=e?._single?.table;return"object"==typeof t?(0,n.extractTableName)(t):t}},730413,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KnexInstrumentation=void 0;let r=e.r(357762),o=e.r(210033),i=e.r(312058),a=e.r(204780),s=e.r(113622),l=e.r(808119),u=e.r(77979),c=Symbol("opentelemetry.instrumentation-knex.context"),p={maxQueryLength:1022,requireParentSpan:!1};class _ extends a.InstrumentationBase{_semconvStability;constructor(e={}){super(o.PACKAGE_NAME,o.PACKAGE_VERSION,{...p,...e}),this._semconvStability=(0,a.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...p,...e})}init(){let e=new a.InstrumentationNodeModuleDefinition(i.MODULE_NAME,i.SUPPORTED_VERSIONS);return e.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),e}getRunnerNodeModuleFileInstrumentation(e){return new a.InstrumentationNodeModuleFile(`knex/${e}/runner.js`,i.SUPPORTED_VERSIONS,(e,t)=>(this.ensureWrapped(e.prototype,"query",this.createQueryWrapper(t)),e),(e,t)=>(this._unwrap(e.prototype,"query"),e))}getClientNodeModuleFileInstrumentation(e){return new a.InstrumentationNodeModuleFile(`knex/${e}/client.js`,i.SUPPORTED_VERSIONS,e=>(this.ensureWrapped(e.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(e.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(e.prototype,"raw",this.storeContext.bind(this)),e),e=>(this._unwrap(e.prototype,"queryBuilder"),this._unwrap(e.prototype,"schemaBuilder"),this._unwrap(e.prototype,"raw"),e))}createQueryWrapper(e){let t=this;return function(n){return function(o){let i=this.client.config,p=s.extractTableName(this.builder),_=o?.method,T=i?.connection?.connectionString,d=i?.connection?.filename||i?.connection?.database||s.extractDatabaseFromConnectionString(T),{maxQueryLength:E}=t.getConfig(),S={"knex.version":e},A=i?.connection?.filename===":memory:"?"inproc":void 0;if(t._semconvStability&a.SemconvStability.OLD&&Object.assign(S,{[u.ATTR_DB_SYSTEM]:s.mapSystem(this.client.driverName),[u.ATTR_DB_SQL_TABLE]:p,[u.ATTR_DB_OPERATION]:_,[u.ATTR_DB_USER]:i?.connection?.user,[u.ATTR_DB_NAME]:d,[u.ATTR_NET_PEER_NAME]:i?.connection?.host??s.extractHostFromConnectionString(T),[u.ATTR_NET_PEER_PORT]:i?.connection?.port??s.extractPortFromConnectionString(T),[u.ATTR_NET_TRANSPORT]:A}),t._semconvStability&a.SemconvStability.STABLE&&Object.assign(S,{[l.ATTR_DB_SYSTEM_NAME]:s.mapSystem(this.client.driverName),[l.ATTR_DB_COLLECTION_NAME]:p,[l.ATTR_DB_OPERATION_NAME]:_,[l.ATTR_DB_NAMESPACE]:d,[l.ATTR_SERVER_ADDRESS]:i?.connection?.host??s.extractHostFromConnectionString(T),[l.ATTR_SERVER_PORT]:i?.connection?.port??s.extractPortFromConnectionString(T)}),E){let e=s.limitLength(o?.sql,E);t._semconvStability&a.SemconvStability.STABLE&&(S[l.ATTR_DB_QUERY_TEXT]=e),t._semconvStability&a.SemconvStability.OLD&&(S[u.ATTR_DB_STATEMENT]=e)}let g=this.builder[c]||r.context.active(),m=r.trace.getSpan(g),h=m&&r.trace.isSpanContextValid(m.spanContext());if(t._config.requireParentSpan&&!h)return n.bind(this)(...arguments);let R=t.tracer.startSpan(s.getName(d,_,p),{kind:r.SpanKind.CLIENT,attributes:S},g),f=r.trace.setSpan(r.context.active(),R);return r.context.with(f,n,this,...arguments).then(e=>(R.end(),e)).catch(e=>{let t=s.getFormatter(this)(o.sql,o.bindings||[]),n=e.message.replace(t+" - ",""),i=s.otelExceptionFromKnexError(e,n);throw R.recordException(i),R.setStatus({code:r.SpanStatusCode.ERROR,message:n}),R.end(),e})}}}storeContext(e){return function(){let t=e.apply(this,arguments);return Object.defineProperty(t,c,{value:r.context.active()}),t}}ensureWrapped(e,t,n){(0,a.isWrapped)(e[t])&&this._unwrap(e,t),this._wrap(e,t,n)}}n.KnexInstrumentation=_},618728,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KnexInstrumentation=void 0;var r=e.r(730413);Object.defineProperty(n,"KnexInstrumentation",{enumerable:!0,get:function(){return r.KnexInstrumentation}})},823099,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(618728),o=e.r(976285),i=e.r(625331),a="Knex",s=i.generateInstrumentOnce(a,()=>new r.KnexInstrumentation({requireParentSpan:!0})),l=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let{data:t}=o.spanToJSON(e);"knex.version"in t&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});n.instrumentKnex=s,n.knexIntegration=l},749620,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_MSSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_SQL_TABLE=n.ATTR_DB_NAME=void 0,n.ATTR_DB_NAME="db.name",n.ATTR_DB_SQL_TABLE="db.sql.table",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MSSQL="mssql"},224620,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.once=n.getSpanName=void 0,n.getSpanName=function(e,t,n,r){return"execBulkLoad"===e&&r&&t?`${e} ${r} ${t}`:"callProcedure"===e?t?`${e} ${n} ${t}`:`${e} ${n}`:t?`${e} ${t}`:`${e}`},n.once=e=>{let t=!1;return(...n)=>{if(!t)return t=!0,e(...n)}}},104038,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.33.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},189155,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TediousInstrumentation=n.INJECTED_CTX=void 0;let r=e.r(357762),o=e.r(427699),i=e.r(204780),a=e.r(808119),s=e.r(749620),l=e.r(224620),u=e.r(104038),c=Symbol("opentelemetry.instrumentation-tedious.current-database");n.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let p=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function _(e){Object.defineProperty(this,c,{value:e,writable:!0})}class T extends i.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,i.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new i.InstrumentationNodeModuleDefinition(T.COMPONENT,[">=1.11.0 <20"],e=>{let t=e.Connection.prototype;for(let n of p)(0,i.isWrapped)(t[n])&&this._unwrap(t,n),this._wrap(t,n,this._patchQuery(n,e));return(0,i.isWrapped)(t.connect)&&this._unwrap(t,"connect"),this._wrap(t,"connect",this._patchConnect),e},e=>{if(void 0===e)return;let t=e.Connection.prototype;for(let e of p)this._unwrap(t,e);this._unwrap(t,"connect")})]}_patchConnect(e){return function(){return _.call(this,this.config?.options?.database),this.removeListener("databaseChange",_),this.on("databaseChange",_),this.once("end",()=>{this.removeListener("databaseChange",_)}),e.apply(this,arguments)}}_buildTraceparent(e){let t=e.spanContext();return`00-${t.traceId}-${t.spanId}-0${Number(t.traceFlags||r.TraceFlags.NONE).toString(16)}`}_injectContextInfo(e,t,r){return new Promise(o=>{try{let i=new t.Request("set context_info @opentelemetry_traceparent",e=>{o()});Object.defineProperty(i,n.INJECTED_CTX,{value:!0});let a=Buffer.from(r,"utf8");i.addParameter("opentelemetry_traceparent",t.TYPES.VarBinary,a,{length:a.length}),e.execSql(i)}catch{o()}})}_shouldInjectFor(e){return"execSql"===e||"execSqlBatch"===e||"callProcedure"===e||"execute"===e}_patchQuery(e,t){return u=>{let p=this;function _(_){if(_?.[n.INJECTED_CTX])return u.apply(this,arguments);if(!(_ instanceof o.EventEmitter))return p._diag.warn(`Unexpected invocation of patched ${e} method. Span not recorded`),u.apply(this,arguments);let T=0,d=0,E=()=>d++,S=()=>T++,A=this[c],g="sp_prepare"===_.sqlTextOrProcedure&&_.parametersByName?.stmt?.value?_.parametersByName.stmt.value:_.sqlTextOrProcedure,m={};p._dbSemconvStability&i.SemconvStability.OLD&&(m[s.ATTR_DB_SYSTEM]=s.DB_SYSTEM_VALUE_MSSQL,m[s.ATTR_DB_NAME]=A,m[s.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,m[s.ATTR_DB_STATEMENT]=g,m[s.ATTR_DB_SQL_TABLE]=_.table),p._dbSemconvStability&i.SemconvStability.STABLE&&(m[a.ATTR_DB_NAMESPACE]=A,m[a.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,m[a.ATTR_DB_QUERY_TEXT]=g,m[a.ATTR_DB_COLLECTION_NAME]=_.table),p._netSemconvStability&i.SemconvStability.OLD&&(m[s.ATTR_NET_PEER_NAME]=this.config?.server,m[s.ATTR_NET_PEER_PORT]=this.config?.options?.port),p._netSemconvStability&i.SemconvStability.STABLE&&(m[a.ATTR_SERVER_ADDRESS]=this.config?.server,m[a.ATTR_SERVER_PORT]=this.config?.options?.port);let h=p.tracer.startSpan((0,l.getSpanName)(e,A,g,_.table),{kind:r.SpanKind.CLIENT,attributes:m}),R=(0,l.once)(e=>{_.removeListener("done",E),_.removeListener("doneInProc",E),_.removeListener("doneProc",S),_.removeListener("error",R),this.removeListener("end",R),h.setAttribute("tedious.procedure_count",T),h.setAttribute("tedious.statement_count",d),e&&h.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),h.end()});_.on("done",E),_.on("doneInProc",E),_.on("doneProc",S),_.once("error",R),this.on("end",R),"function"==typeof _.callback?p._wrap(_,"callback",p._patchCallbackQuery(R)):p._diag.error("Expected request.callback to be a function");let f=()=>r.context.with(r.trace.setSpan(r.context.active(),h),u,this,...arguments);if(!(p.getConfig().enableTraceContextPropagation&&p._shouldInjectFor(e)))return f();let N=p._buildTraceparent(h);p._injectContextInfo(this,t,N).finally(f)}return Object.defineProperty(_,"length",{value:u.length,writable:!1}),_}}_patchCallbackQuery(e){return t=>function(n,r,o){return e(n),t.apply(this,arguments)}}}n.TediousInstrumentation=T},537920,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TediousInstrumentation=void 0;var r=e.r(189155);Object.defineProperty(n,"TediousInstrumentation",{enumerable:!0,get:function(){return r.TediousInstrumentation}})},946603,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(537920),o=e.r(976285),i=e.r(625331),a=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),s="Tedious",l=i.generateInstrumentOnce(s,()=>new r.TediousInstrumentation({})),u=o.defineIntegration(()=>{let e;return{name:s,setupOnce(){let t=l();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let{description:t,data:n}=o.spanToJSON(e);if(!t||"mssql"!==n["db.system"])return;let r=t.split(" ")[0]||"";a.has(r)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});n.instrumentTedious=l,n.tediousIntegration=u},171476,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.57.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},936981,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GenericPoolInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(171476),a="generic-pool";class s extends o.InstrumentationBase{_isDisabled=!1;constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new o.InstrumentationNodeModuleDefinition(a,[">=3.0.0 <4"],e=>{let t=e.Pool;return(0,o.isWrapped)(t.prototype.acquire)&&this._unwrap(t.prototype,"acquire"),this._wrap(t.prototype,"acquire",this._acquirePatcher.bind(this)),e},e=>{let t=e.Pool;return this._unwrap(t.prototype,"acquire"),e}),new o.InstrumentationNodeModuleDefinition(a,[">=2.4.0 <3"],e=>{let t=e.Pool;return(0,o.isWrapped)(t.prototype.acquire)&&this._unwrap(t.prototype,"acquire"),this._wrap(t.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),e},e=>{let t=e.Pool;return this._unwrap(t.prototype,"acquire"),e}),new o.InstrumentationNodeModuleDefinition(a,[">=2.0.0 <2.4"],e=>(this._isDisabled=!1,(0,o.isWrapped)(e.Pool)&&this._unwrap(e,"Pool"),this._wrap(e,"Pool",this._poolWrapper.bind(this)),e),e=>(this._isDisabled=!0,e))]}_acquirePatcher(e){let t=this;return function(...n){let o=r.context.active(),i=t.tracer.startSpan("generic-pool.acquire",{},o);return r.context.with(r.trace.setSpan(o,i),()=>e.call(this,...n).then(e=>(i.end(),e),e=>{throw i.recordException(e),i.end(),e}))}}_poolWrapper(e){let t=this;return function(){let n=e.apply(this,arguments);return t._wrap(n,"acquire",t._acquireWithCallbacksPatcher.bind(t)),n}}_acquireWithCallbacksPatcher(e){let t=this;return function(n,o){if(t._isDisabled)return e.call(this,n,o);let i=r.context.active(),a=t.tracer.startSpan("generic-pool.acquire",{},i);return r.context.with(r.trace.setSpan(i,a),()=>{e.call(this,(e,t)=>{if(a.end(),n)return n(e,t)},o)})}}}n.GenericPoolInstrumentation=s},802638,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GenericPoolInstrumentation=void 0;var r=e.r(936981);Object.defineProperty(n,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return r.GenericPoolInstrumentation}})},979396,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(802638),o=e.r(976285),i=e.r(625331),a="GenericPool",s=i.generateInstrumentOnce(a,()=>new r.GenericPoolInstrumentation({}));n.genericPoolIntegration=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let t=o.spanToJSON(e).description;("generic-pool.aquire"===t||"generic-pool.acquire"===t)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),n.instrumentGenericPool=s},624905,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.31.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},56741,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataloaderInstrumentation=void 0;let r=e.r(204780),o=e.r(357762),i=e.r(624905),a="dataloader";function s(e){return"Module"===e[Symbol.toStringTag]?e.default:e}class l extends r.InstrumentationBase{constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new r.InstrumentationNodeModuleDefinition(a,[">=2.0.0 <3"],e=>{let t=s(e);return this._patchLoad(t.prototype),this._patchLoadMany(t.prototype),this._patchPrime(t.prototype),this._patchClear(t.prototype),this._patchClearAll(t.prototype),this._getPatchedConstructor(t)},e=>{let t=s(e);["load","loadMany","prime","clear","clearAll"].forEach(e=>{(0,r.isWrapped)(t.prototype[e])&&this._unwrap(t.prototype,e)})})]}shouldCreateSpans(){let e=this.getConfig();return void 0!==o.trace.getSpan(o.context.active())||!e.requireParentSpan}getSpanName(e,t){let n=e.name;return null==n?`${a}.${t}`:`${a}.${t} ${n}`}_wrapBatchLoadFn(e){let t=this;return function(...n){if(!t.isEnabled()||!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"batch"),{links:this._batch?.spanLinks},r);return o.context.with(o.trace.setSpan(r,i),()=>e.apply(this,n).then(e=>(i.end(),e)).catch(e=>{throw i.recordException(e),i.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),i.end(),e}))}}_getPatchedConstructor(e){let t=this,n=e.prototype;if(!t.isEnabled())return e;function o(...n){return"function"==typeof n[0]&&((0,r.isWrapped)(n[0])&&t._unwrap(n,0),n[0]=t._wrapBatchLoadFn(n[0])),e.apply(this,n)}return o.prototype=n,o}_patchLoad(e){(0,r.isWrapped)(e.load)&&this._unwrap(e,"load"),this._wrap(e,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"load"),{kind:o.SpanKind.CLIENT},r);return o.context.with(o.trace.setSpan(r,i),()=>{let t=e.call(this,...n).then(e=>(i.end(),e)).catch(e=>{throw i.recordException(e),i.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),i.end(),e});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:i.spanContext()})),t})}}_patchLoadMany(e){(0,r.isWrapped)(e.loadMany)&&this._unwrap(e,"loadMany"),this._wrap(e,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"loadMany"),{kind:o.SpanKind.CLIENT},r);return o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n).then(e=>(i.end(),e)))}}_patchPrime(e){(0,r.isWrapped)(e.prime)&&this._unwrap(e,"prime"),this._wrap(e,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"prime"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}_patchClear(e){(0,r.isWrapped)(e.clear)&&this._unwrap(e,"clear"),this._wrap(e,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"clear"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}_patchClearAll(e){(0,r.isWrapped)(e.clearAll)&&this._unwrap(e,"clearAll"),this._wrap(e,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"clearAll"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}}n.DataloaderInstrumentation=l},228251,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataloaderInstrumentation=void 0;var r=e.r(56741);Object.defineProperty(n,"DataloaderInstrumentation",{enumerable:!0,get:function(){return r.DataloaderInstrumentation}})},363082,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(228251),o=e.r(976285),i=e.r(625331),a="Dataloader",s=i.generateInstrumentOnce(a,()=>new r.DataloaderInstrumentation({requireParentSpan:!0}));n.dataloaderIntegration=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>{t.on("spanStart",e=>{let t=o.spanToJSON(e);t.description?.startsWith("dataloader")&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===t.description||"dataloader.loadMany"===t.description||"dataloader.batch"===t.description)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),n.instrumentDataloader=s},58684,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_MESSAGING_SYSTEM=n.ATTR_MESSAGING_OPERATION=void 0,n.ATTR_MESSAGING_OPERATION="messaging.operation",n.ATTR_MESSAGING_SYSTEM="messaging.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port"},980159,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_MESSAGING_CONVERSATION_ID=n.OLD_ATTR_MESSAGING_MESSAGE_ID=n.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=n.ATTR_MESSAGING_URL=n.ATTR_MESSAGING_PROTOCOL_VERSION=n.ATTR_MESSAGING_PROTOCOL=n.MESSAGING_OPERATION_VALUE_PROCESS=n.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=n.ATTR_MESSAGING_DESTINATION_KIND=n.ATTR_MESSAGING_DESTINATION=void 0,n.ATTR_MESSAGING_DESTINATION="messaging.destination",n.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",n.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",n.MESSAGING_OPERATION_VALUE_PROCESS="process",n.ATTR_MESSAGING_PROTOCOL="messaging.protocol",n.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",n.ATTR_MESSAGING_URL="messaging.url",n.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",n.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",n.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},650834,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CONFIG=n.EndOperation=void 0,(r=n.EndOperation||(n.EndOperation={})).AutoAck="auto ack",r.Ack="ack",r.AckAll="ackAll",r.Reject="reject",r.Nack="nack",r.NackAll="nackAll",r.ChannelClosed="channel closed",r.ChannelError="channel error",r.InstrumentationTimeout="instrumentation timeout",n.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},959801,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isConfirmChannelTracing=n.unmarkConfirmChannelTracing=n.markConfirmChannelTracing=n.getConnectionAttributesFromUrl=n.getConnectionAttributesFromServer=n.normalizeExchange=n.CONNECTION_ATTRIBUTES=n.CHANNEL_CONSUME_TIMEOUT_TIMER=n.CHANNEL_SPANS_NOT_ENDED=n.MESSAGE_STORED_SPAN=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(58684),s=e.r(980159);n.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),n.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),n.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),n.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let l=(0,r.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");n.normalizeExchange=e=>""!==e?e:"";let u=(e,t)=>e||("AMQP"===t?5672:5671),c=e=>{let t=e||"amqp";return(t.endsWith(":")?t.substring(0,t.length-1):t).toUpperCase()},p=(e,t,n,o)=>n?{[t]:n}:(r.diag.error(`amqplib instrumentation: could not extract connection attribute ${o} from user supplied url`,{url:e}),{});n.getConnectionAttributesFromServer=e=>{let t=e.serverProperties.product?.toLowerCase?.();return t?{[a.ATTR_MESSAGING_SYSTEM]:t}:{}},n.getConnectionAttributesFromUrl=(e,t)=>{let n={[s.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(e=e||"amqp://localhost")){let r=e,l=c(r?.protocol);Object.assign(n,{...p(e,s.ATTR_MESSAGING_PROTOCOL,l,"protocol")});let _=r?.hostname||"localhost";t&o.SemconvStability.OLD&&Object.assign(n,{...p(e,a.ATTR_NET_PEER_NAME,_,"hostname")}),t&o.SemconvStability.STABLE&&Object.assign(n,{...p(e,i.ATTR_SERVER_ADDRESS,_,"hostname")});let T=u(r.port,l);t&o.SemconvStability.OLD&&Object.assign(n,p(e,a.ATTR_NET_PEER_PORT,T,"port")),t&o.SemconvStability.STABLE&&Object.assign(n,p(e,i.ATTR_SERVER_PORT,T,"port"))}else{let l=e.replace(/:[^:@/]*@/,":***@");n[s.ATTR_MESSAGING_URL]=l;try{let e=new URL(l),r=c(e.protocol);Object.assign(n,{...p(l,s.ATTR_MESSAGING_PROTOCOL,r,"protocol")});let _=e.hostname||"localhost";t&o.SemconvStability.OLD&&Object.assign(n,{...p(l,a.ATTR_NET_PEER_NAME,_,"hostname")}),t&o.SemconvStability.STABLE&&Object.assign(n,{...p(l,i.ATTR_SERVER_ADDRESS,_,"hostname")});let T=u(e.port?parseInt(e.port):void 0,r);t&o.SemconvStability.OLD&&Object.assign(n,p(l,a.ATTR_NET_PEER_PORT,T,"port")),t&o.SemconvStability.STABLE&&Object.assign(n,p(l,i.ATTR_SERVER_PORT,T,"port"))}catch(e){r.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:l,err:e})}}return n},n.markConfirmChannelTracing=e=>e.setValue(l,!0),n.unmarkConfirmChannelTracing=e=>e.deleteValue(l),n.isConfirmChannelTracing=e=>!0===e.getValue(l)},36349,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.61.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},826845,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AmqplibInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(58684),s=e.r(980159),l=e.r(650834),u=e.r(959801),c=e.r(36349),p=[">=0.5.5 <1"];class _ extends i.InstrumentationBase{_netSemconvStability;constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...l.DEFAULT_CONFIG,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...l.DEFAULT_CONFIG,...e})}init(){let e=new i.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",p,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),t=new i.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",p,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),n=new i.InstrumentationNodeModuleFile("amqplib/lib/connect.js",p,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new i.InstrumentationNodeModuleDefinition("amqplib",p,void 0,void 0,[e,n,t])}patchConnect(e){return e=this.unpatchConnect(e),(0,i.isWrapped)(e.connect)||this._wrap(e,"connect",this.getConnectPatch.bind(this)),e}unpatchConnect(e){return(0,i.isWrapped)(e.connect)&&this._unwrap(e,"connect"),e}patchChannelModel(e,t){return(0,i.isWrapped)(e.Channel.prototype.publish)||this._wrap(e.Channel.prototype,"publish",this.getPublishPatch.bind(this,t)),(0,i.isWrapped)(e.Channel.prototype.consume)||this._wrap(e.Channel.prototype,"consume",this.getConsumePatch.bind(this,t)),(0,i.isWrapped)(e.Channel.prototype.ack)||this._wrap(e.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,l.EndOperation.Ack)),(0,i.isWrapped)(e.Channel.prototype.nack)||this._wrap(e.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,l.EndOperation.Nack)),(0,i.isWrapped)(e.Channel.prototype.reject)||this._wrap(e.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,l.EndOperation.Reject)),(0,i.isWrapped)(e.Channel.prototype.ackAll)||this._wrap(e.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,l.EndOperation.AckAll)),(0,i.isWrapped)(e.Channel.prototype.nackAll)||this._wrap(e.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,l.EndOperation.NackAll)),(0,i.isWrapped)(e.Channel.prototype.emit)||this._wrap(e.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,i.isWrapped)(e.ConfirmChannel.prototype.publish)||this._wrap(e.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,t)),e}unpatchChannelModel(e){return(0,i.isWrapped)(e.Channel.prototype.publish)&&this._unwrap(e.Channel.prototype,"publish"),(0,i.isWrapped)(e.Channel.prototype.consume)&&this._unwrap(e.Channel.prototype,"consume"),(0,i.isWrapped)(e.Channel.prototype.ack)&&this._unwrap(e.Channel.prototype,"ack"),(0,i.isWrapped)(e.Channel.prototype.nack)&&this._unwrap(e.Channel.prototype,"nack"),(0,i.isWrapped)(e.Channel.prototype.reject)&&this._unwrap(e.Channel.prototype,"reject"),(0,i.isWrapped)(e.Channel.prototype.ackAll)&&this._unwrap(e.Channel.prototype,"ackAll"),(0,i.isWrapped)(e.Channel.prototype.nackAll)&&this._unwrap(e.Channel.prototype,"nackAll"),(0,i.isWrapped)(e.Channel.prototype.emit)&&this._unwrap(e.Channel.prototype,"emit"),(0,i.isWrapped)(e.ConfirmChannel.prototype.publish)&&this._unwrap(e.ConfirmChannel.prototype,"publish"),e}getConnectPatch(e){let t=this;return function(n,r,o){return e.call(this,n,r,function(e,r){if(null==e){let e=(0,u.getConnectionAttributesFromUrl)(n,t._netSemconvStability),o=(0,u.getConnectionAttributesFromServer)(r);r[u.CONNECTION_ATTRIBUTES]={...e,...o}}o.apply(this,arguments)})}}getChannelEmitPatch(e){let t=this;return function(n){if("close"===n){t.endAllSpansOnChannel(this,!0,l.EndOperation.ChannelClosed,void 0);let e=this[u.CHANNEL_CONSUME_TIMEOUT_TIMER];e&&clearInterval(e),this[u.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===n&&t.endAllSpansOnChannel(this,!0,l.EndOperation.ChannelError,void 0);return e.apply(this,arguments)}}getAckAllPatch(e,t,n){let r=this;return function(o){return r.endAllSpansOnChannel(this,e,t,o),n.apply(this,arguments)}}getAckPatch(e,t,n){let r=this;return function(o,i,a){let s=t===l.EndOperation.Reject?i:a,c=this[u.CHANNEL_SPANS_NOT_ENDED]??[],p=c.findIndex(e=>e.msg===o);if(p<0)r.endConsumerSpan(o,e,t,s);else if(t!==l.EndOperation.Reject&&i){for(let n=0;n<=p;n++)r.endConsumerSpan(c[n].msg,e,t,s);c.splice(0,p+1)}else r.endConsumerSpan(o,e,t,s),c.splice(p,1);return n.apply(this,arguments)}}getConsumePatch(e,t){let n=this;return function(c,p,_){let T=this;if(!Object.prototype.hasOwnProperty.call(T,u.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:e}=n.getConfig();if(e){let t=setInterval(()=>{n.checkConsumeTimeoutOnChannel(T)},e);t.unref(),T[u.CHANNEL_CONSUME_TIMEOUT_TIMER]=t}T[u.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(t){let d;if(!t)return p.call(this,t);let E=t.properties.headers??{},S=r.propagation.extract(r.ROOT_CONTEXT,E),A=t.fields?.exchange;if(n._config.useLinksForConsume){let e=S?r.trace.getSpan(S)?.spanContext():void 0;S=void 0,e&&(d=[{context:e}])}let g=n.tracer.startSpan(`${c} process`,{kind:r.SpanKind.CONSUMER,attributes:{...T?.connection?.[u.CONNECTION_ATTRIBUTES],[s.ATTR_MESSAGING_DESTINATION]:A,[s.ATTR_MESSAGING_DESTINATION_KIND]:s.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[s.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:t.fields?.routingKey,[a.ATTR_MESSAGING_OPERATION]:s.MESSAGING_OPERATION_VALUE_PROCESS,[s.OLD_ATTR_MESSAGING_MESSAGE_ID]:t?.properties.messageId,[s.ATTR_MESSAGING_CONVERSATION_ID]:t?.properties.correlationId},links:d},S),{consumeHook:m}=n.getConfig();m&&(0,i.safeExecuteInTheMiddle)(()=>m(g,{moduleVersion:e,msg:t}),e=>{e&&r.diag.error("amqplib instrumentation: consumerHook error",e)},!0),_?.noAck||(T[u.CHANNEL_SPANS_NOT_ENDED].push({msg:t,timeOfConsume:(0,o.hrTime)()}),t[u.MESSAGE_STORED_SPAN]=g);let h=S||r.ROOT_CONTEXT;r.context.with(r.trace.setSpan(h,g),()=>{p.call(this,t)}),_?.noAck&&(n.callConsumeEndHook(g,t,!1,l.EndOperation.AutoAck),g.end())},t.apply(this,arguments)}}getConfirmedPublishPatch(e,t){let n=this;return function(o,a,s,l,c){let{span:p,modifiedOptions:_}=n.createPublishSpan(n,o,a,this,l),{publishHook:T}=n.getConfig();T&&(0,i.safeExecuteInTheMiddle)(()=>T(p,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:_,isConfirmChannel:!0}),e=>{e&&r.diag.error("amqplib instrumentation: publishHook error",e)},!0);let d=(0,u.markConfirmChannelTracing)(r.context.active()),E=[...arguments];return E[3]=_,E[4]=r.context.bind((0,u.unmarkConfirmChannelTracing)(r.trace.setSpan(d,p)),function(t,u){try{c?.call(this,t,u)}finally{let{publishConfirmHook:u}=n.getConfig();u&&(0,i.safeExecuteInTheMiddle)(()=>u(p,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:l,isConfirmChannel:!0,confirmError:t}),e=>{e&&r.diag.error("amqplib instrumentation: publishConfirmHook error",e)},!0),t&&p.setStatus({code:r.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),p.end()}}),r.context.with(d,t.bind(this,...E))}}getPublishPatch(e,t){let n=this;return function(o,a,s,l){if((0,u.isConfirmChannelTracing)(r.context.active()))return t.apply(this,arguments);{let{span:u,modifiedOptions:c}=n.createPublishSpan(n,o,a,this,l),{publishHook:p}=n.getConfig();p&&(0,i.safeExecuteInTheMiddle)(()=>p(u,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:c,isConfirmChannel:!1}),e=>{e&&r.diag.error("amqplib instrumentation: publishHook error",e)},!0);let _=[...arguments];_[3]=c;let T=t.apply(this,_);return u.end(),T}}}createPublishSpan(e,t,n,o,i){let a=(0,u.normalizeExchange)(t),l=e.tracer.startSpan(`publish ${a}`,{kind:r.SpanKind.PRODUCER,attributes:{...o.connection[u.CONNECTION_ATTRIBUTES],[s.ATTR_MESSAGING_DESTINATION]:t,[s.ATTR_MESSAGING_DESTINATION_KIND]:s.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[s.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:n,[s.OLD_ATTR_MESSAGING_MESSAGE_ID]:i?.messageId,[s.ATTR_MESSAGING_CONVERSATION_ID]:i?.correlationId}}),c=i??{};return c.headers=c.headers??{},r.propagation.inject(r.trace.setSpan(r.context.active(),l),c.headers),{span:l,modifiedOptions:c}}endConsumerSpan(e,t,n,o){let i=e[u.MESSAGE_STORED_SPAN];i&&(!1!==t&&i.setStatus({code:r.SpanStatusCode.ERROR,message:n!==l.EndOperation.ChannelClosed&&n!==l.EndOperation.ChannelError?`${n} called on message${!0===o?" with requeue":!1===o?" without requeue":""}`:n}),this.callConsumeEndHook(i,e,t,n),i.end(),e[u.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(e,t,n,r){(e[u.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(e=>{this.endConsumerSpan(e.msg,t,n,r)}),e[u.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(e,t,n,o){let{consumeEndHook:a}=this.getConfig();a&&(0,i.safeExecuteInTheMiddle)(()=>a(e,{msg:t,rejected:n,endOperation:o}),e=>{e&&r.diag.error("amqplib instrumentation: consumerEndHook error",e)},!0)}checkConsumeTimeoutOnChannel(e){let t,n=(0,o.hrTime)(),r=e[u.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:i}=this.getConfig();for(t=0;t{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EndOperation=n.DEFAULT_CONFIG=n.AmqplibInstrumentation=void 0;var r=e.r(826845);Object.defineProperty(n,"AmqplibInstrumentation",{enumerable:!0,get:function(){return r.AmqplibInstrumentation}});var o=e.r(650834);Object.defineProperty(n,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return o.DEFAULT_CONFIG}}),Object.defineProperty(n,"EndOperation",{enumerable:!0,get:function(){return o.EndOperation}})},855902,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(908157),o=e.r(976285),i=e.r(625331),a="Amqplib",s={consumeEndHook:e=>{i.addOriginToSpan(e,"auto.amqplib.otel.consumer")},publishHook:e=>{i.addOriginToSpan(e,"auto.amqplib.otel.publisher")}},l=i.generateInstrumentOnce(a,()=>new r.AmqplibInstrumentation(s));n.amqplibIntegration=o.defineIntegration(()=>({name:a,setupOnce(){l()}})),n.instrumentAmqplib=l},197696,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.INTEGRATION_NAME="VercelAI"},696887,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(197696),a=[">=3.0.0 <7"],s=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function l(e){"object"==typeof e&&null!==e&&"content"in e&&Array.isArray(e.content)&&(function(e){for(let t of e){if(!("object"==typeof t&&null!==t&&"type"in t&&"error"in t&&"toolName"in t&&"toolCallId"in t&&"tool-error"===t.type&&t.error instanceof Error))continue;let e=o._INTERNAL_getSpanContextForToolCallId(t.toolCallId);e?o.withScope(n=>{n.setContext("trace",{trace_id:e.traceId,span_id:e.spanId}),n.setTag("vercel.ai.tool.name",t.toolName),n.setTag("vercel.ai.tool.callId",t.toolCallId),n.setLevel("error"),o.captureException(t.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):o.withScope(e=>{e.setTag("vercel.ai.tool.name",t.toolName),e.setTag("vercel.ai.tool.callId",t.toolCallId),e.setLevel("error"),o.captureException(t.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(e.content),u(e.content))}function u(e){for(let t of e)"object"==typeof t&&null!==t&&"toolCallId"in t&&"string"==typeof t.toolCallId&&o._INTERNAL_cleanupToolCallSpanContext(t.toolCallId)}function c(e,t,n,r){return{recordInputs:e?.recordInputs!==void 0?e.recordInputs:void 0!==t.recordInputs?t.recordInputs:!0===n||r,recordOutputs:e?.recordOutputs!==void 0?e.recordOutputs:void 0!==t.recordOutputs?t.recordOutputs:!0===n||r}}class p extends r.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(e={}){super("@sentry/instrumentation-vercel-ai",o.SDK_VERSION,e),p.prototype.__init.call(this),p.prototype.__init2.call(this)}init(){return new r.InstrumentationNodeModuleDefinition("ai",a,this._patch.bind(this))}callWhenPatched(e){this._isPatched?e():this._callbacks.push(e)}_patch(e){this._isPatched=!0,this._callbacks.forEach(e=>e()),this._callbacks=[];let t=e=>new Proxy(e,{apply:(e,t,n)=>{let r=n[0].experimental_telemetry||{},a=r.isEnabled,s=o.getClient(),u=s?.getIntegrationByName(i.INTEGRATION_NAME),{recordInputs:p,recordOutputs:_}=c(u?.options,r,a,!!u&&!!s?.getOptions().sendDefaultPii);return n[0].experimental_telemetry={...r,isEnabled:void 0===a||a,recordInputs:p,recordOutputs:_},o.handleCallbackErrors(()=>Reflect.apply(e,t,n),e=>{e&&"object"==typeof e&&o.addNonEnumerableProperty(e,"_sentry_active_span",o.getActiveSpan())},()=>{},e=>{l(e)})}});if("[object Module]"===Object.prototype.toString.call(e)){for(let n of s)null!=e[n]&&(e[n]=t(e[n]));return e}{let n=s.reduce((n,r)=>(null!=e[r]&&(n[r]=t(e[r])),n),{});return{...e,...n}}}}n.SentryVercelAiInstrumentation=p,n.cleanupToolCallSpanContexts=u,n.determineRecordingSettings=c,n.processToolCallResults=l},834440,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(197696),a=e.r(696887),s=o.generateInstrumentOnce(i.INTEGRATION_NAME,()=>new a.SentryVercelAiInstrumentation({})),l=r.defineIntegration((e={})=>{let t;return{name:i.INTEGRATION_NAME,options:e,setupOnce(){t=s()},afterAllSetup(n){let o;e.force??(o=n.getIntegrationByName("Modules"),!!o?.getModules?.()?.ai)?r.addVercelAiProcessors(n):t?.callWhenPatched(()=>r.addVercelAiProcessors(n))}}});n.instrumentVercelAi=s,n.vercelAIIntegration=l},116769,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=4.0.0 <7"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-openai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("openai",i,this._patch.bind(this))}_patch(e){let t=e;return t=this._patchClient(t,"OpenAI"),t=this._patchClient(t,"AzureOpenAI")}_patchClient(e,t){let n=e[t];if(!n)return e;let r=this.getConfig(),i=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.OPENAI_INTEGRATION_NAME))return Reflect.construct(n,e);let t=Reflect.construct(n,e);return o.instrumentOpenAiClient(t,r)};for(let e of(Object.setPrototypeOf(i,n),Object.setPrototypeOf(i.prototype,n.prototype),Object.getOwnPropertyNames(n)))if(!["length","name","prototype"].includes(e)){let t=Object.getOwnPropertyDescriptor(n,e);t&&Object.defineProperty(i,e,t)}try{e[t]=i}catch{Object.defineProperty(e,t,{value:i,writable:!0,configurable:!0,enumerable:!0})}if(e.default===n)try{e.default=i}catch{Object.defineProperty(e,"default",{value:i,writable:!0,configurable:!0,enumerable:!0})}return e}}n.SentryOpenAiInstrumentation=a},758158,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(116769),a=o.generateInstrumentOnce(r.OPENAI_INTEGRATION_NAME,e=>new i.SentryOpenAiInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.OPENAI_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentOpenAi=a,n.openAIIntegration=s},654826,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.19.2 <1.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-anthropic-ai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",i,this._patch.bind(this))}_patch(e){let t=e.Anthropic,n=this.getConfig(),r=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(t,e);let r=Reflect.construct(t,e);return o.instrumentAnthropicAiClient(r,n)};for(let e of(Object.setPrototypeOf(r,t),Object.setPrototypeOf(r.prototype,t.prototype),Object.getOwnPropertyNames(t)))if(!["length","name","prototype"].includes(e)){let n=Object.getOwnPropertyDescriptor(t,e);n&&Object.defineProperty(r,e,n)}try{e.Anthropic=r}catch{Object.defineProperty(e,"Anthropic",{value:r,writable:!0,configurable:!0,enumerable:!0})}if(e.default===t)try{e.default=r}catch{Object.defineProperty(e,"default",{value:r,writable:!0,configurable:!0,enumerable:!0})}return e}}n.SentryAnthropicAiInstrumentation=a},718239,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(654826),a=o.generateInstrumentOnce(r.ANTHROPIC_AI_INTEGRATION_NAME,e=>new i.SentryAnthropicAiInstrumentation(e));n.anthropicAIIntegration=r.defineIntegration((e={})=>({name:r.ANTHROPIC_AI_INTEGRATION_NAME,options:e,setupOnce(){a(e)}})),n.instrumentAnthropicAi=a},116463,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.10.0 <2"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-google-genai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@google/genai",i,e=>this._patch(e),e=>e,[new r.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",i,e=>this._patch(e),e=>e)])}_patch(e){let t=e.GoogleGenAI,n=this.getConfig();if("function"!=typeof t)return e;let r=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(t,e);let r=Reflect.construct(t,e);return o.instrumentGoogleGenAIClient(r,n)};for(let e of(Object.setPrototypeOf(r,t),Object.setPrototypeOf(r.prototype,t.prototype),Object.getOwnPropertyNames(t)))if(!["length","name","prototype"].includes(e)){let n=Object.getOwnPropertyDescriptor(t,e);n&&Object.defineProperty(r,e,n)}return o.replaceExports(e,"GoogleGenAI",r),e}}n.SentryGoogleGenAiInstrumentation=a},880504,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(116463),a=o.generateInstrumentOnce(r.GOOGLE_GENAI_INTEGRATION_NAME,e=>new i.SentryGoogleGenAiInstrumentation(e));n.googleGenAIIntegration=r.defineIntegration((e={})=>({name:r.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){a(e)}})),n.instrumentGoogleGenAI=a},454883,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.1.0 <2.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-langchain",o.SDK_VERSION,e)}init(){let e=[];for(let t of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])e.push(new r.InstrumentationNodeModuleDefinition(t,i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile(`${t}/dist/index.cjs`,i,this._patch.bind(this),e=>e)]));return e.push(new r.InstrumentationNodeModuleDefinition("langchain",i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",i,this._patch.bind(this),e=>e)])),e}_patch(e){o._INTERNAL_skipAiProviderWrapping([o.OPENAI_INTEGRATION_NAME,o.ANTHROPIC_AI_INTEGRATION_NAME,o.GOOGLE_GENAI_INTEGRATION_NAME]);let t=o.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(e,t),e}_patchRunnableMethods(e,t){let n=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],r=Object.values(e.universal_exports??e).find(e=>"function"==typeof e&&n.includes(e.name));if(!r)return;let o=r.prototype;if(!o.__sentry_patched__)for(let e of(o.__sentry_patched__=!0,["invoke","stream","batch"])){let n=o[e];"function"==typeof n&&(o[e]=function(e,t,n){return new Proxy(e,{apply(e,n,r){var o,i;let a=r[1];(!a||"object"!=typeof a||Array.isArray(a))&&(a={},r[1]=a);let s=(o=a.callbacks,i=t,o?Array.isArray(o)?o.includes(i)?o:[...o,i]:"object"==typeof o?[o,i]:o:[i]);return a.callbacks=s,Reflect.apply(e,n,r)}})}(n,t))}}}n.SentryLangChainInstrumentation=a},62602,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(454883),a=o.generateInstrumentOnce(r.LANGCHAIN_INTEGRATION_NAME,e=>new i.SentryLangChainInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.LANGCHAIN_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentLangChain=a,n.langChainIntegration=s},955749,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.0.0 <2.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-langgraph",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@langchain/langgraph",i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",i,this._patch.bind(this),e=>e)])}_patch(e){return e.StateGraph&&"function"==typeof e.StateGraph&&o.instrumentLangGraph(e.StateGraph.prototype,this.getConfig()),e}}n.SentryLangGraphInstrumentation=a},521121,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(955749),a=o.generateInstrumentOnce(r.LANGGRAPH_INTEGRATION_NAME,e=>new i.SentryLangGraphInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.LANGGRAPH_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentLangGraph=a,n.langGraphIntegration=s},477801,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));n.buildLaunchDarklyFlagUsedHandlerShim=function(){return r.isBrowser()||r.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},n.launchDarklyIntegrationShim=o},222267,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));n.OpenFeatureIntegrationHookShim=class{constructor(){r.isBrowser()||r.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},n.openFeatureIntegrationShim=o},742355,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.statsigIntegrationShim=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},954005,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.unleashIntegrationShim=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},822525,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.growthbookIntegrationShim=e.r(976285).growthbookIntegration},395316,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(761095),o=e.r(357762),i=e.r(204780),a=e.r(808119);function s(e,t,n,r,o){var i,a,s,p,_,T,d,E;return l(e,n),t(e,"addDoc",(i=r,a=o,function(e){return function(t,n){let r=c(i,"addDoc",t);return a(r),u(r,()=>e(t,n))}})),t(e,"getDocs",(s=r,p=o,function(e){return function(t){let n=c(s,"getDocs",t);return p(n),u(n,()=>e(t))}})),t(e,"setDoc",(_=r,T=o,function(e){return function(t,n,r){let o=c(_,"setDoc",t.parent||t);return T(o),u(o,()=>void 0!==r?e(t,n,r):e(t,n))}})),t(e,"deleteDoc",(d=r,E=o,function(e){return function(t){let n=c(d,"deleteDoc",t.parent||t);return E(n),u(n,()=>e(t))}})),e}function l(e,t){for(let n of["addDoc","getDocs","setDoc","deleteDoc"])i.isWrapped(e[n])&&t(e,n);return e}function u(e,t){return o.context.with(o.trace.setSpan(o.context.active(),e),()=>i.safeExecuteInTheMiddle(()=>t(),t=>{t&&e.recordException(t),e.end()},!0))}function c(e,t,n){let r=e.startSpan(`${t} ${n.path}`,{kind:o.SpanKind.CLIENT});return function(e,t){let n=t.firestore.app,r=n.options,o=(t.firestore.toJSON()||{}).settings||{},i={[a.ATTR_DB_COLLECTION_NAME]:t.path,[a.ATTR_DB_NAMESPACE]:n.name,[a.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":t.type,"firebase.firestore.options.projectId":r.projectId,"firebase.firestore.options.appId":r.appId,"firebase.firestore.options.messagingSenderId":r.messagingSenderId,"firebase.firestore.options.storageBucket":r.storageBucket},{address:s,port:l}=p(o);s&&(i[a.ATTR_SERVER_ADDRESS]=s),l&&(i[a.ATTR_SERVER_PORT]=l),e.setAttributes(i)}(r,n),r.setAttribute(a.ATTR_DB_OPERATION_NAME,t),r}function p(e){let t,n;if("string"==typeof e.host)if(e.host.startsWith("[")){if(e.host.endsWith("]"))t=e.host.replace(/^\[|\]$/g,"");else if(e.host.includes("]:")){let r=e.host.lastIndexOf(":");-1!==r&&(t=e.host.slice(1,r).replace(/^\[|\]$/g,""),n=e.host.slice(r+1))}}else if(r.isIPv6(e.host))t=e.host;else{let r=e.host.lastIndexOf(":");-1!==r?(t=e.host.slice(0,r),n=e.host.slice(r+1)):t=e.host}return{address:t,port:n?parseInt(n,10):void 0}}n.getPortAndAddress=p,n.patchFirestore=function(e,t,n,r,a){let u=()=>{},c=a.firestoreSpanCreationHook;"function"==typeof c&&(u=e=>{i.safeExecuteInTheMiddle(()=>c(e),e=>{e&&o.diag.error(e?.message)},!0)});let p=new i.InstrumentationNodeModuleDefinition("@firebase/firestore",t,t=>s(t,n,r,e,u));for(let o of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])p.files.push(new i.InstrumentationNodeModuleFile(o,t,t=>s(t,n,r,e,u),e=>l(e,r)));return p}},248461,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780);function i(e,t,n){return function(o){return function(...i){let a="function"==typeof i[0]?i[0]:i[1],s="function"==typeof i[0]?void 0:i[0];if(!a)return o.call(this,...i);let l=async function(...o){let i=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",s=e.startSpan(`firebase.function.${n}`,{kind:r.SpanKind.SERVER}),l={"faas.name":i,"faas.trigger":n,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(l["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(l["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),s.setAttributes(l),t?.requestHook?.(s),r.context.with(r.trace.setSpan(r.context.active(),s),async()=>{let e,n;try{n=await a.apply(this,o)}catch(t){e=t}if(t?.responseHook?.(s,e),e&&s.recordException(e),s.end(),e)throw await t?.errorHook?.(s,e),e;return n})};return s?o.call(this,s,l):o.call(this,l)}}}function a(e,t){for(let n of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])o.isWrapped(e[n])&&t(e,n);return e}n.patchFunctions=function(e,t,n,s,l){let u=()=>{},c=()=>{},p=l.functions?.errorHook,_=l.functions?.requestHook,T=l.functions?.responseHook;"function"==typeof T&&(c=(e,t)=>{o.safeExecuteInTheMiddle(()=>T(e,t),e=>{e&&r.diag.error(e?.message)},!0)}),"function"==typeof _&&(u=e=>{o.safeExecuteInTheMiddle(()=>_(e),e=>{e&&r.diag.error(e?.message)},!0)});let d=new o.InstrumentationNodeModuleDefinition("firebase-functions",t);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:r,triggerType:l})=>{d.files.push(new o.InstrumentationNodeModuleFile(r,t,t=>(function(e,t,n,r,o,s){switch(a(e,n),s){case"function":t(e,"onRequest",i(r,o,"http.request")),t(e,"onCall",i(r,o,"http.call"));break;case"firestore":t(e,"onDocumentCreated",i(r,o,"firestore.document.created")),t(e,"onDocumentUpdated",i(r,o,"firestore.document.updated")),t(e,"onDocumentDeleted",i(r,o,"firestore.document.deleted")),t(e,"onDocumentWritten",i(r,o,"firestore.document.written")),t(e,"onDocumentCreatedWithAuthContext",i(r,o,"firestore.document.created")),t(e,"onDocumentUpdatedWithAuthContext",i(r,o,"firestore.document.updated")),t(e,"onDocumentDeletedWithAuthContext",i(r,o,"firestore.document.deleted")),t(e,"onDocumentWrittenWithAuthContext",i(r,o,"firestore.document.written"));break;case"scheduler":t(e,"onSchedule",i(r,o,"scheduler.scheduled"));break;case"storage":t(e,"onObjectFinalized",i(r,o,"storage.object.finalized")),t(e,"onObjectArchived",i(r,o,"storage.object.archived")),t(e,"onObjectDeleted",i(r,o,"storage.object.deleted")),t(e,"onObjectMetadataUpdated",i(r,o,"storage.object.metadataUpdated"))}return e})(t,n,s,e,{requestHook:u,responseHook:c,errorHook:p},l),e=>a(e,s)))}),d},n.patchV2Functions=i},516771,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(395316),a=e.r(248461),s={},l=[">=3.0.0 <5"],u=[">=6.0.0 <7"];class c extends r.InstrumentationBase{constructor(e=s){super("@sentry/instrumentation-firebase",o.SDK_VERSION,e)}setConfig(e={}){super.setConfig({...s,...e})}init(){let e=[];return e.push(i.patchFirestore(this.tracer,l,this._wrap,this._unwrap,this.getConfig())),e.push(a.patchFunctions(this.tracer,u,this._wrap,this._unwrap,this.getConfig())),e}}n.FirebaseInstrumentation=c},146523,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(516771),a="Firebase",s={firestoreSpanCreationHook:e=>{o.addOriginToSpan(e,"auto.firebase.otel.firestore"),e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:e=>{o.addOriginToSpan(e,"auto.firebase.otel.functions"),e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(e,t)=>{t&&(r.captureException(t,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await r.flush(2e3))}}},l=o.generateInstrumentOnce(a,()=>new i.FirebaseInstrumentation(s));n.firebaseIntegration=r.defineIntegration(()=>({name:a,setupOnce(){l()}})),n.instrumentFirebase=l},273273,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(738190),o=e.r(855902),i=e.r(718239),a=e.r(953027),s=e.r(429440),l=e.r(602878),u=e.r(146523),c=e.r(979396),p=e.r(880504),_=e.r(176571),T=e.r(376169),d=e.r(688750),E=e.r(934925),S=e.r(86294),A=e.r(62602),g=e.r(521121),m=e.r(888804),h=e.r(143655),R=e.r(780216),f=e.r(473485),N=e.r(625680),I=e.r(758158),O=e.r(832719),y=e.r(19194),b=e.r(547683),C=e.r(978486),M=e.r(946603),P=e.r(834440);n.getAutoPerformanceIntegrations=function(){return[s.expressIntegration(),l.fastifyIntegration(),_.graphqlIntegration(),d.honoIntegration(),h.mongoIntegration(),R.mongooseIntegration(),f.mysqlIntegration(),N.mysql2Integration(),C.redisIntegration(),O.postgresIntegration(),b.prismaIntegration(),T.hapiIntegration(),S.koaIntegration(),a.connectIntegration(),M.tediousIntegration(),c.genericPoolIntegration(),E.kafkaIntegration(),o.amqplibIntegration(),m.lruMemoizerIntegration(),A.langChainIntegration(),g.langGraphIntegration(),P.vercelAIIntegration(),I.openAIIntegration(),i.anthropicAIIntegration(),p.googleGenAIIntegration(),y.postgresJsIntegration(),u.firebaseIntegration()]},n.getOpenTelemetryInstrumentationToPreload=function(){return[r.instrumentSentryHttp,r.instrumentOtelHttp,s.instrumentExpress,a.instrumentConnect,l.instrumentFastify,l.instrumentFastifyV3,T.instrumentHapi,d.instrumentHono,E.instrumentKafka,S.instrumentKoa,m.instrumentLruMemoizer,h.instrumentMongo,R.instrumentMongoose,f.instrumentMysql,N.instrumentMysql2,O.instrumentPostgres,T.instrumentHapi,_.instrumentGraphql,C.instrumentRedis,M.instrumentTedious,c.instrumentGenericPool,o.instrumentAmqplib,A.instrumentLangChain,P.instrumentVercelAi,I.instrumentOpenAi,y.instrumentPostgresJs,u.instrumentFirebase,i.instrumentAnthropicAi,p.instrumentGoogleGenAI,g.instrumentLangGraph]}},1631,e=>{"use strict";let t;e.s([],827962),e.i(827962);var n=e.i(978116),r=e.i(670496),o=e.i(606733),i=e.i(775332);let a=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(e){let t={},r=(0,i.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),a=(0,i.getStringFromEnv)("OTEL_SERVICE_NAME");if(r)try{let e=this._parseResourceAttributes(r);Object.assign(t,e)}catch(e){n.diag.debug(`EnvDetector failed: ${e instanceof Error?e.message:e}`)}return a&&(t[o.ATTR_SERVICE_NAME]=a),{attributes:t}}_parseResourceAttributes(e){if(!e)return{};let t={};for(let n of e.split(this._COMMA_SEPARATOR)){let e,r,o=n.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==o.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${n}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[i,a]=o,s=i.trim(),l=a.trim();if(0===s.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${n}".`);try{e=decodeURIComponent(s),r=decodeURIComponent(l)}catch(e){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${n}": ${e instanceof Error?e.message:e}`)}if(e.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${e}".`);if(r.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${e}".`);t[e]=r}return t}};var s=e.i(446786),l=e.i(605365);async function u(){if(!t)switch(l.platform){case"darwin":t=(await e.A(57998)).getMachineId;break;case"linux":t=(await e.A(944291)).getMachineId;break;case"freebsd":t=(await e.A(822215)).getMachineId;break;case"win32":t=(await e.A(497519)).getMachineId;break;default:t=(await e.A(418670)).getMachineId}return t()}let c=new class{detect(e){return{attributes:{"host.name":(0,s.hostname)(),"host.arch":(e=>{switch(e){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return e}})((0,s.arch)()),"host.id":u()}}}},p=new class{detect(e){return{attributes:{"os.type":(e=>{switch(e){case"sunos":return"solaris";case"win32":return"windows";default:return e}})((0,s.platform)()),"os.version":(0,s.release)()}}}},_=new class{detect(e){let t={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(t["process.command"]=process.argv[1]);try{let e=s.userInfo();t["process.owner"]=e.username}catch(e){n.diag.debug(`error obtaining process owner: ${e}`)}return{attributes:t}}};var T=e.i(254799);let d=new class{detect(e){return{attributes:{"service.instance.id":(0,T.randomUUID)()}}}};var E=e.i(581453);e.s(["defaultResource",()=>r.defaultResource,"defaultServiceName",()=>E.defaultServiceName,"detectResources",0,(e={})=>(e.detectors||[]).map(t=>{try{let o=(0,r.resourceFromDetectedResource)(t.detect(e));return n.diag.debug(`${t.constructor.name} found resource.`,o),o}catch(e){return n.diag.debug(`${t.constructor.name} failed: ${e.message}`),(0,r.emptyResource)()}}).reduce((e,t)=>e.merge(t),(0,r.emptyResource)()),"emptyResource",()=>r.emptyResource,"envDetector",0,a,"hostDetector",0,c,"osDetector",0,p,"processDetector",0,_,"resourceFromAttributes",()=>r.resourceFromAttributes,"serviceInstanceIdDetector",0,d],1631)},815084,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(1631),i=e.r(148861),a=e.r(808119),s=e.r(976285),l=e.r(625331),u=e.r(779607),c=e.r(866779),p=e.r(273273);function _(e,t={}){let n=new i.BasicTracerProvider({sampler:new u.SentrySampler(e),resource:o.defaultResource().merge(o.resourceFromAttributes({[a.ATTR_SERVICE_NAME]:"node",[a.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[a.ATTR_SERVICE_VERSION]:s.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new u.SentrySpanProcessor({timeout:T(e.getOptions().maxSpanWaitDuration)}),...t.spanProcessors||[]]});r.trace.setGlobalTracerProvider(n),r.propagation.setGlobalPropagator(new u.SentryPropagator);let c=new l.SentryContextManager;return r.context.setGlobalContextManager(c),[n,c.getAsyncLocalStorageLookup()]}function T(e){if(null!=e){if(e>1e6)return c.DEBUG_BUILD&&s.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(e<=0||Number.isNaN(e)){c.DEBUG_BUILD&&s.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return e}}n._clampSpanProcessorTimeout=T,n.initOpenTelemetry=function(e,t={}){e.getOptions().debug&&l.setupOpenTelemetryLogger();let[n,r]=_(e,t);e.traceProvider=n,e.asyncLocalStorageLookup=r},n.preloadOpenTelemetry=function(e={}){var t;let n,{debug:r}=e;r&&s.debug.enable(),l.initializeEsmLoader(),(t=e.integrations,n=p.getOpenTelemetryInstrumentationToPreload(),t?n.filter(e=>{let n=e.id;return t.some(e=>n===e||n.startsWith(`${e}.`))}):n).forEach(e=>{e(),r&&s.debug.log(`[Sentry] Preloaded ${e.id} instrumentation`)})},n.setupOtel=_},645105,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(738190),a=e.r(354258),s=e.r(273273),l=e.r(815084);function u(){return o.getDefaultIntegrations().filter(e=>"Http"!==e.name&&"NodeFetch"!==e.name).concat(i.httpIntegration(),a.nativeNodeFetchIntegration())}function c(e){return[...u(),...r.hasSpansEnabled(e)?s.getAutoPerformanceIntegrations():[]]}function p(e={},t){r.applySdkMetadata(e,"node");let n=o.init({...e,defaultIntegrations:e.defaultIntegrations??t(e)});return n&&!e.skipOpenTelemetrySetup&&(l.initOpenTelemetry(n,{spanProcessors:e.openTelemetrySpanProcessors}),o.validateOpenTelemetrySetup()),n}n.getDefaultIntegrations=c,n.getDefaultIntegrationsWithoutPerformance=u,n.init=function(e={}){return p(e,c)},n.initWithoutDefaultIntegrations=function(e={}){return p(e,()=>[])}},96892,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(738190),o=e.r(354258),i=e.r(174710),a=e.r(429440),s=e.r(602878),l=e.r(176571),u=e.r(934925),c=e.r(888804),p=e.r(143655),_=e.r(780216),T=e.r(473485),d=e.r(625680),E=e.r(978486),S=e.r(832719),A=e.r(19194),g=e.r(547683),m=e.r(376169),h=e.r(688750),R=e.r(86294),f=e.r(953027),N=e.r(823099),I=e.r(946603),O=e.r(979396),y=e.r(363082),b=e.r(855902),C=e.r(834440),M=e.r(758158),P=e.r(718239),L=e.r(880504),v=e.r(62602),U=e.r(521121),D=e.r(477801),G=e.r(222267),B=e.r(742355),x=e.r(954005),V=e.r(822525),w=e.r(146523),H=e.r(645105),k=e.r(815084),Y=e.r(273273),j=e.r(779607),F=e.r(976285),W=e.r(625331);n.httpIntegration=r.httpIntegration,n.nativeNodeFetchIntegration=o.nativeNodeFetchIntegration,n.fsIntegration=i.fsIntegration,n.expressErrorHandler=a.expressErrorHandler,n.expressIntegration=a.expressIntegration,n.setupExpressErrorHandler=a.setupExpressErrorHandler,n.fastifyIntegration=s.fastifyIntegration,n.setupFastifyErrorHandler=s.setupFastifyErrorHandler,n.graphqlIntegration=l.graphqlIntegration,n.kafkaIntegration=u.kafkaIntegration,n.lruMemoizerIntegration=c.lruMemoizerIntegration,n.mongoIntegration=p.mongoIntegration,n.mongooseIntegration=_.mongooseIntegration,n.mysqlIntegration=T.mysqlIntegration,n.mysql2Integration=d.mysql2Integration,n.redisIntegration=E.redisIntegration,n.postgresIntegration=S.postgresIntegration,n.postgresJsIntegration=A.postgresJsIntegration,n.prismaIntegration=g.prismaIntegration,n.hapiIntegration=m.hapiIntegration,n.setupHapiErrorHandler=m.setupHapiErrorHandler,n.honoIntegration=h.honoIntegration,n.setupHonoErrorHandler=h.setupHonoErrorHandler,n.koaIntegration=R.koaIntegration,n.setupKoaErrorHandler=R.setupKoaErrorHandler,n.connectIntegration=f.connectIntegration,n.setupConnectErrorHandler=f.setupConnectErrorHandler,n.knexIntegration=N.knexIntegration,n.tediousIntegration=I.tediousIntegration,n.genericPoolIntegration=O.genericPoolIntegration,n.dataloaderIntegration=y.dataloaderIntegration,n.amqplibIntegration=b.amqplibIntegration,n.vercelAIIntegration=C.vercelAIIntegration,n.openAIIntegration=M.openAIIntegration,n.anthropicAIIntegration=P.anthropicAIIntegration,n.googleGenAIIntegration=L.googleGenAIIntegration,n.langChainIntegration=v.langChainIntegration,n.langGraphIntegration=U.langGraphIntegration,n.buildLaunchDarklyFlagUsedHandler=D.buildLaunchDarklyFlagUsedHandlerShim,n.launchDarklyIntegration=D.launchDarklyIntegrationShim,n.OpenFeatureIntegrationHook=G.OpenFeatureIntegrationHookShim,n.openFeatureIntegration=G.openFeatureIntegrationShim,n.statsigIntegration=B.statsigIntegrationShim,n.unleashIntegration=x.unleashIntegrationShim,n.growthbookIntegration=V.growthbookIntegrationShim,n.firebaseIntegration=w.firebaseIntegration,n.getDefaultIntegrations=H.getDefaultIntegrations,n.getDefaultIntegrationsWithoutPerformance=H.getDefaultIntegrationsWithoutPerformance,n.init=H.init,n.initWithoutDefaultIntegrations=H.initWithoutDefaultIntegrations,n.initOpenTelemetry=k.initOpenTelemetry,n.preloadOpenTelemetry=k.preloadOpenTelemetry,n.getAutoPerformanceIntegrations=Y.getAutoPerformanceIntegrations,n.setNodeAsyncContextStrategy=j.setOpenTelemetryContextAsyncContextStrategy,n.SDK_VERSION=F.SDK_VERSION,n.SEMANTIC_ATTRIBUTE_SENTRY_OP=F.SEMANTIC_ATTRIBUTE_SENTRY_OP,n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=F.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=F.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=F.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n.Scope=F.Scope,n.addBreadcrumb=F.addBreadcrumb,n.addEventProcessor=F.addEventProcessor,n.addIntegration=F.addIntegration,n.captureCheckIn=F.captureCheckIn,n.captureConsoleIntegration=F.captureConsoleIntegration,n.captureEvent=F.captureEvent,n.captureException=F.captureException,n.captureFeedback=F.captureFeedback,n.captureMessage=F.captureMessage,n.captureSession=F.captureSession,n.close=F.close,n.consoleIntegration=F.consoleIntegration,n.consoleLoggingIntegration=F.consoleLoggingIntegration,n.continueTrace=F.continueTrace,n.createConsolaReporter=F.createConsolaReporter,n.createLangChainCallbackHandler=F.createLangChainCallbackHandler,n.createTransport=F.createTransport,n.dedupeIntegration=F.dedupeIntegration,n.endSession=F.endSession,n.eventFiltersIntegration=F.eventFiltersIntegration,n.extraErrorDataIntegration=F.extraErrorDataIntegration,n.featureFlagsIntegration=F.featureFlagsIntegration,n.flush=F.flush,n.functionToStringIntegration=F.functionToStringIntegration,n.getActiveSpan=F.getActiveSpan,n.getClient=F.getClient,n.getCurrentScope=F.getCurrentScope,n.getGlobalScope=F.getGlobalScope,n.getIsolationScope=F.getIsolationScope,n.getRootSpan=F.getRootSpan,n.getSpanDescendants=F.getSpanDescendants,n.getSpanStatusFromHttpCode=F.getSpanStatusFromHttpCode,n.getTraceData=F.getTraceData,n.getTraceMetaTags=F.getTraceMetaTags,n.httpHeadersToSpanAttributes=F.httpHeadersToSpanAttributes,n.inboundFiltersIntegration=F.inboundFiltersIntegration,n.instrumentAnthropicAiClient=F.instrumentAnthropicAiClient,n.instrumentGoogleGenAIClient=F.instrumentGoogleGenAIClient,n.instrumentLangGraph=F.instrumentLangGraph,n.instrumentOpenAiClient=F.instrumentOpenAiClient,n.instrumentStateGraphCompile=F.instrumentStateGraphCompile,n.instrumentSupabaseClient=F.instrumentSupabaseClient,n.isEnabled=F.isEnabled,n.isInitialized=F.isInitialized,n.lastEventId=F.lastEventId,n.linkedErrorsIntegration=F.linkedErrorsIntegration,n.parameterize=F.parameterize,n.profiler=F.profiler,n.requestDataIntegration=F.requestDataIntegration,n.rewriteFramesIntegration=F.rewriteFramesIntegration,n.setContext=F.setContext,n.setConversationId=F.setConversationId,n.setCurrentClient=F.setCurrentClient,n.setExtra=F.setExtra,n.setExtras=F.setExtras,n.setHttpStatus=F.setHttpStatus,n.setMeasurement=F.setMeasurement,n.setTag=F.setTag,n.setTags=F.setTags,n.setUser=F.setUser,n.spanToBaggageHeader=F.spanToBaggageHeader,n.spanToJSON=F.spanToJSON,n.spanToTraceHeader=F.spanToTraceHeader,n.startInactiveSpan=F.startInactiveSpan,n.startNewTrace=F.startNewTrace,n.startSession=F.startSession,n.startSpan=F.startSpan,n.startSpanManual=F.startSpanManual,n.supabaseIntegration=F.supabaseIntegration,n.suppressTracing=F.suppressTracing,n.trpcMiddleware=F.trpcMiddleware,n.updateSpanName=F.updateSpanName,n.winterCGHeadersToDict=F.winterCGHeadersToDict,n.withActiveSpan=F.withActiveSpan,n.withIsolationScope=F.withIsolationScope,n.withMonitor=F.withMonitor,n.withScope=F.withScope,n.wrapMcpServerWithSentry=F.wrapMcpServerWithSentry,n.zodErrorsIntegration=F.zodErrorsIntegration,n.NODE_VERSION=W.NODE_VERSION,n.NodeClient=W.NodeClient,n.SentryContextManager=W.SentryContextManager,n.anrIntegration=W.anrIntegration,n.childProcessIntegration=W.childProcessIntegration,n.contextLinesIntegration=W.contextLinesIntegration,n.createGetModuleFromFilename=W.createGetModuleFromFilename,n.createSentryWinstonTransport=W.createSentryWinstonTransport,n.cron=W.cron,n.defaultStackParser=W.defaultStackParser,n.disableAnrDetectionForCallback=W.disableAnrDetectionForCallback,n.generateInstrumentOnce=W.generateInstrumentOnce,n.getSentryRelease=W.getSentryRelease,n.httpServerIntegration=W.httpServerIntegration,n.httpServerSpansIntegration=W.httpServerSpansIntegration,n.localVariablesIntegration=W.localVariablesIntegration,n.logger=W.logger,n.makeNodeTransport=W.makeNodeTransport,n.metrics=W.metrics,n.modulesIntegration=W.modulesIntegration,n.nodeContextIntegration=W.nodeContextIntegration,n.nodeRuntimeMetricsIntegration=W.nodeRuntimeMetricsIntegration,n.onUncaughtExceptionIntegration=W.onUncaughtExceptionIntegration,n.onUnhandledRejectionIntegration=W.onUnhandledRejectionIntegration,n.pinoIntegration=W.pinoIntegration,n.processSessionIntegration=W.processSessionIntegration,n.spotlightIntegration=W.spotlightIntegration,n.systemErrorIntegration=W.systemErrorIntegration,n.validateOpenTelemetrySetup=W.validateOpenTelemetrySetup},820456,(e,t,n)=>{let r;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let o=e.r(522734),i=e.r(814747),a=null,s=null;n.createRouteManifest=function(e){let t;if(e?.appDirPath)t=e.appDirPath;else{let e=process.cwd(),n=i.join(e,"app"),r=i.join(e,"src","app");o.existsSync(n)&&o.lstatSync(n).isDirectory()?t=n:o.existsSync(r)&&o.lstatSync(r).isDirectory()&&(t=r)}if(!t)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(a&&s===t&&r===e?.includeRouteGroups)return a;let{dynamicRoutes:n,staticRoutes:l,isrRoutes:u}=function e(t,n="",r=!1){let a=[],s=[],l=[];try{let c=o.readdirSync(t,{withFileTypes:!0}),p=c.find(e=>{var t;return t=e.name,"page.tsx"===t||"page.jsx"===t||"page.ts"===t||"page.js"===t});if(p){let e=r?n||"/":(n||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),u=e.includes(":"),c=i.join(t,p.name);if(function(e){try{let t=o.readFileSync(e,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(t)}catch{return!1}}(c)&&l.push(e),u){let{regex:t,paramNames:n,hasOptionalPrefix:r}=function(e){let t,n,r=e.split("/").filter(Boolean),o=[],i=[],a=!1;for(let e of r)if(e.startsWith(":")){let t=e.substring(1);if(t.endsWith("*?")){let e=t.slice(0,-2);i.push(e),a=!0}else if(t.endsWith("*")){let e=t.slice(0,-1);i.push(e),o.push("(.+)")}else i.push(t),o.push("([^/]+)")}else o.push(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(a)if(0===o.length)n="^/(.*)$";else{let e=o.join("/");n=`^/${e}(?:/(.*))?$`}else n=`^/${o.join("/")}$`;return{regex:n,paramNames:i,hasOptionalPrefix:(t=i[0],void 0!==t&&("locale"===t||"lang"===t||"language"===t))}}(e);a.push({path:e,regex:t,paramNames:n,hasOptionalPrefix:r})}else s.push({path:e})}for(let o of c)if(o.isDirectory()){var u;let c,p=i.join(t,o.name),_=o.name.startsWith("[")&&o.name.endsWith("]"),T=(c=(u=o.name).startsWith("(")&&u.endsWith(")")?r?o.name:"":_?function(e){if(e.startsWith("[[...")&&e.endsWith("]]")){let t=e.slice(5,-2);return`:${t}*?`}if(e.startsWith("[...")&&e.endsWith("]")){let t=e.slice(4,-1);return`:${t}*`}return`:${e.slice(1,-1)}`}(o.name):o.name)?`${n}/${c}`:n,d=e(p,T,r);a.push(...d.dynamicRoutes),s.push(...d.staticRoutes),l.push(...d.isrRoutes)}}catch(e){console.warn("Error building route manifest:",e)}return{dynamicRoutes:a,staticRoutes:s,isrRoutes:l}}(t,e?.basePath,e?.includeRouteGroups),c={dynamicRoutes:n,staticRoutes:l,isrRoutes:u};return a=c,s=t,r=e?.includeRouteGroups,c}},382226,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.resolveTunnelRoute=function(e){let t;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let n="string"==typeof e?e:(t=r._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${t}`);return n&&(process.env.__SENTRY_TUNNEL_ROUTE__=n),n},n.setUpTunnelRewriteRules=function(e,t){let n=e.rewrites,r=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,o=r||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",i=r||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";e.rewrites=async(...e)=>{let r={source:`${t}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:o},a=[{source:`${t}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:i},r];if("function"!=typeof n)return a;let s=await n(...e);return Array.isArray(s)?[...a,...s]:{...s,beforeFiles:[...a,...s.beforeFiles||[]]}}}},586605,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(96892),i=e.r(522734),a=e.r(814747),s=e.r(820456),l=e.r(690268),u=e.r(934474),c=e.r(382226),p=!1,_=!1;function T(e,t){if(!t)return e;let n=e=>"function"==typeof t?t(e):t.some(t=>r.isMatchingPattern(e,t));return{staticRoutes:e.staticRoutes.filter(e=>!n(e.path)),dynamicRoutes:e.dynamicRoutes.filter(e=>!n(e.path)),isrRoutes:e.isrRoutes.filter(e=>!n(e))}}n.filterRouteManifest=T,n.getNextMajor=function(e){if(!e)return;let{major:t}=r.parseSemver(e);return t},n.maybeCreateRouteManifest=function(e,t){if(t.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==t.routeManifestInjection&&(void 0!==t.routeManifestInjection||!t.disableManifestInjection))return T(s.createRouteManifest({basePath:e.basePath}),t.routeManifestInjection?.exclude)},n.maybeGetVercelCronsConfig=function(e){let t={config:void 0,strategy:void 0};if(!process.env.VERCEL)return t;let n=e._experimental?.vercelCronsMonitoring===!0,o=e.webpack?.automaticVercelMonitors===!0;if(!n&&!o)return t;let s=function(){try{let e=a.join(process.cwd(),"vercel.json"),t=i.readFileSync(e,"utf8"),n=JSON.parse(t).crons;if(n&&Array.isArray(n)&&n.length>0)return n;return}catch(e){if("ENOENT"===e.code)return;r.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",e);return}}();return s&&(t.config=s,n&&o?(r.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),t.strategy="spans"):n?(r.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),t.strategy="spans"):(r.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),t.strategy="wrapper")),t},n.maybeSetClientTraceMetadataOption=function(e,t){if(t){let{major:n,minor:o}=r.parseSemver(t);void 0!==n&&void 0!==o&&(n>=15||14===n&&o>=3)&&(e.experimental=e.experimental||{},e.experimental.clientTraceMetadata=["baggage","sentry-trace",...e.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},n.maybeSetInstrumentationHookOption=function(e,t){if(t&&l.requiresInstrumentationHook(t)){e.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),e.experimental={instrumentationHook:!0,...e.experimental};return}t||(e.experimental&&"instrumentationHook"in e.experimental?!1===e.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),e.experimental={instrumentationHook:!0,...e.experimental}))},n.maybeSetUpTunnelRouteRewriteRules=function(e,t){if(!t.tunnelRoute)return;if("export"===e.output){p||(p=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let n=c.resolveTunnelRoute(t.tunnelRoute);t.tunnelRoute=n||void 0,c.setUpTunnelRewriteRules(e,n)},n.resolveReleaseName=function(e){return e.release?.create!==!1?e.release?.name??o.getSentryRelease()??u.getGitRevision():e.release?.name},n.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(_||(_=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},n.warnIfMissingOnRouterTransitionStartHook=function(e){let t=u.getInstrumentationClientFileContents();void 0===t||t.includes("onRouterTransitionStart")||e.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},766776,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(690268),o=e.r(934474),i=e.r(279876),a=e.r(780663),s=e.r(586605);n.getFinalConfigObject=function(e,t){i.migrateDeprecatedWebpackOptions(t);let n=s.resolveReleaseName(t);if(s.maybeSetUpTunnelRouteRewriteRules(e,t),s.shouldReturnEarlyInExperimentalBuildMode())return e;let l=s.maybeCreateRouteManifest(e,t),u=s.maybeGetVercelCronsConfig(t);o.setUpBuildTimeVariables(e,t,n);let c=r.getNextjsVersion(),p=s.getNextMajor(c);s.maybeSetClientTraceMetadataOption(e,c),s.maybeSetInstrumentationHookOption(e,c),s.warnIfMissingOnRouterTransitionStartHook(t);let _=a.getBundlerInfo(c);a.maybeWarnAboutUnsupportedTurbopack(c,_),a.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(c,t,_);let T=a.maybeConstructTurbopackConfig(e,t,l,c,_,u),d=a.resolveUseRunAfterProductionCompileHookOption(t,_);return a.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:e,userSentryOptions:t,releaseName:n,nextJsVersion:c,bundlerInfo:_,turboPackConfig:T,shouldUseRunAfterProductionCompileHook:d}),a.maybeEnableTurbopackSourcemaps(e,t,_),{...e,...a.getServerExternalPackagesPatch(e,p),...a.getWebpackPatch({incomingUserNextConfigObject:e,userSentryOptions:t,releaseName:n,routeManifest:l,nextJsVersion:c,shouldUseRunAfterProductionCompileHook:d,bundlerInfo:_,vercelCronsConfigResult:u}),...a.getTurbopackPatch(_,T)}}},256782,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(766776);n.withSentryConfig=function(e,t={}){let n=e||{};return"function"==typeof n?function(...e){let i=n.apply(this,e);return r.isThenable(i)?i.then(e=>o.getFinalConfigObject(e,t)):o.getFinalConfigObject(i,t)}:o.getFinalConfigObject(n,t)}},644247,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.DEBUG_BUILD="u"{"use strict";var t="";function n(e){return e.split("\n").reduce(function(e,n){var c,p,_,T=function(e){var n=r.exec(e);if(!n)return null;var i=n[2]&&0===n[2].indexOf("native"),a=n[2]&&0===n[2].indexOf("eval"),s=o.exec(n[2]);return a&&null!=s&&(n[2]=s[1],n[3]=s[2],n[4]=s[3]),{file:i?null:n[2],methodName:n[1]||t,arguments:i?[n[2]]:[],lineNumber:n[3]?+n[3]:null,column:n[4]?+n[4]:null}}(n)||((c=i.exec(n))?{file:c[2],methodName:c[1]||t,arguments:[],lineNumber:+c[3],column:c[4]?+c[4]:null}:null)||function(e){var n=a.exec(e);if(!n)return null;var r=n[3]&&n[3].indexOf(" > eval")>-1,o=s.exec(n[3]);return r&&null!=o&&(n[3]=o[1],n[4]=o[2],n[5]=null),{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(","):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}(n)||((p=u.exec(n))?{file:p[2],methodName:p[1]||t,arguments:[],lineNumber:+p[3],column:p[4]?+p[4]:null}:null)||((_=l.exec(n))?{file:_[3],methodName:_[1]||t,arguments:[],lineNumber:+_[4],column:_[5]?+_[5]:null}:null);return T&&e.push(T),e},[])}var r=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,o=/\((\S*)(?::(\d+))(?::(\d+))\)/,i=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,a=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,s=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,u=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;e.s(["parse",()=>n])},313627,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(695005),i=e.r(644247),a=r.GLOBAL_OBJ;function s(){let e=process.env._sentryBasePath??a._sentryBasePath??"";""===e||e.match(/^\//)||(e=`/${e}`);let t=process.env.PORT||"3000";return`http://localhost:${t}${e}`}async function l(e,t={}){let n=new AbortController,o=setTimeout(()=>n.abort(),3e3);return r.suppressTracing(()=>fetch(e,{...t,signal:n.signal}).finally(()=>{clearTimeout(o)}))}async function u(e,t){try{if(!(e.file?.startsWith("webpack-internal:")||e.file?.startsWith("file:")))return null;let n=new URLSearchParams;n.append("isServer",String(!1)),n.append("isEdgeServer",String(!1)),n.append("isAppDirectory",String(!0)),n.append("errorMessage",t.toString()),Object.keys(e).forEach(t=>{n.append(t,(e[t]??"").toString())});let r=s(),o=await l(`${r}/__nextjs_original-stack-frame?${n.toString()}`);if(!o.ok||204===o.status)return null;let i=await o.json();return{originalCodeFrame:i.originalCodeFrame,originalStackFrame:i.originalStackFrame}}catch(e){return i.DEBUG_BUILD&&r.debug.error("Failed to symbolicate event with Next.js dev server",e),null}}async function c(e){try{let t={frames:e.filter(e=>!!e.file).map(e=>(e.file=e.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:e.file,methodName:e.methodName??"",arguments:[],lineNumber:e.lineNumber??0,column:e.column??0,line1:e.lineNumber??0,column1:e.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},n=s(),r=await l(`${n}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok||204===r.status)return null;return(await r.json()).map(e=>({originalCodeFrame:e.value.originalCodeFrame,originalStackFrame:e.value.originalStackFrame}))}catch(e){return i.DEBUG_BUILD&&r.debug.error("Failed to symbolicate event with Next.js dev server",e),null}}n.devErrorSymbolicationEventProcessor=async function e(e,t){"transaction"===e.type&&(e.spans=e.spans?.filter(e=>{let t=e.data?.["http.url"];return"string"!=typeof t||!t.includes("__nextjs_original-stack-frame")}));try{if(t.originalException&&t.originalException instanceof Error&&t.originalException.stack){let n,i=o.parse(t.originalException.stack),s=a._sentryNextJsVersion;if(!s)return e;let l=r.parseSemver(s);if(l.major>15||15===l.major&&l.minor>=2){let t=await c(i);if(null===t)return e;n=t}else n=await Promise.all(i.map(e=>u(e,t.originalException)));e.exception?.values?.[0]?.stacktrace?.frames&&(e.exception.values[0].stacktrace.frames=e.exception.values[0].stacktrace.frames.map((e,t,r)=>{let o=n[r.length-1-t];if(!o?.originalStackFrame||!o.originalCodeFrame)return{...e,platform:e.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:i,preContextLines:a,postContextLines:s}=function(e){let t,n=e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(e=>!e.match(/^\s*\|/)).map(e=>({line:e,isErrorLine:!!e.match(/^>/)})).map(e=>({...e,line:e.line.replace(/^.*\|/,"")})),r=[],o=[],i=!1;for(let e of n)e.isErrorLine?(t=e.line,i=!0):i?o.push(e.line):r.push(e.line);return{contextLine:t,preContextLines:r,postContextLines:o}}(o.originalCodeFrame);return{...e,pre_context:a,context_line:i,post_context:s,function:o.originalStackFrame.methodName,filename:o.originalStackFrame.file?function(e){if(!e)return e;let t=e.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return t?t[1]:e}(o.originalStackFrame.file):void 0,lineno:o.originalStackFrame.lineNumber||o.originalStackFrame.line1||void 0,colno:o.originalStackFrame.column||o.originalStackFrame.column1||void 0}}))}}catch{}return e}},102372,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.getVercelEnv=function(e){let t=e?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return t?`vercel-${t}`:void 0}},322192,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.ATTR_NEXT_ROUTE="next.route",n.ATTR_NEXT_SEGMENT="next.segment",n.ATTR_NEXT_SPAN_NAME="next.span_name",n.ATTR_NEXT_SPAN_TYPE="next.span_type"},753802,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",n.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",n.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},166740,(e,t,n)=>{"use strict";n._=function(e){return e&&e.__esModule?e:{default:e}}},404660,(e,t,n)=>{"use strict";t.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},473032,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return l},UNDERSCORE_NOT_FOUND_ROUTE:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return a}};for(var o in r)Object.defineProperty(n,o,{enumerable:!0,get:r[o]});let i="/_not-found",a=`${i}/page`,s="/_global-error",l=`${s}/page`},59653,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,o={APP_CLIENT_INTERNALS:function(){return et},APP_PATHS_MANIFEST:function(){return h},APP_PATH_ROUTES_MANIFEST:function(){return R},AdapterOutputType:function(){return c},BARREL_OPTIMIZATION_PREFIX:function(){return K},BLOCKED_PAGES:function(){return k},BUILD_ID_FILE:function(){return H},BUILD_MANIFEST:function(){return f},CLIENT_PUBLIC_FILES_PATH:function(){return Y},CLIENT_REFERENCE_MANIFEST:function(){return X},CLIENT_STATIC_FILES_PATH:function(){return j},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return q},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return ee},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return eo},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return ei},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return en},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return er},COMPILER_INDEXES:function(){return u},COMPILER_NAMES:function(){return l},CONFIG_FILES:function(){return w},DEFAULT_RUNTIME_WEBPACK:function(){return ea},DEFAULT_SANS_SERIF_FONT:function(){return ep},DEFAULT_SERIF_FONT:function(){return ec},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return B},DEV_CLIENT_PAGES_MANIFEST:function(){return v},DYNAMIC_CSS_MANIFEST:function(){return z},EDGE_RUNTIME_WEBPACK:function(){return es},EDGE_UNSUPPORTED_NODE_APIS:function(){return eS},EXPORT_DETAIL:function(){return b},EXPORT_MARKER:function(){return y},FUNCTIONS_CONFIG_MANIFEST:function(){return N},IMAGES_MANIFEST:function(){return P},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Q},MIDDLEWARE_BUILD_MANIFEST:function(){return J},MIDDLEWARE_MANIFEST:function(){return U},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return $},MODERN_BROWSERSLIST_TARGET:function(){return a.default},NEXT_BUILTIN_DOCUMENT:function(){return W},NEXT_FONT_MANIFEST:function(){return O},PAGES_MANIFEST:function(){return g},PHASE_ANALYZE:function(){return _},PHASE_DEVELOPMENT_SERVER:function(){return E},PHASE_EXPORT:function(){return p},PHASE_INFO:function(){return A},PHASE_PRODUCTION_BUILD:function(){return T},PHASE_PRODUCTION_SERVER:function(){return d},PHASE_TEST:function(){return S},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return x},ROUTES_MANIFEST:function(){return M},RSC_MODULE_TYPES:function(){return eE},SERVER_DIRECTORY:function(){return V},SERVER_FILES_MANIFEST:function(){return L},SERVER_PROPS_ID:function(){return eu},SERVER_REFERENCE_MANIFEST:function(){return Z},STATIC_PROPS_ID:function(){return el},STATIC_STATUS_PAGES:function(){return e_},STRING_LITERAL_DROP_BUNDLE:function(){return F},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return I},SYSTEM_ENTRYPOINTS:function(){return eA},TRACE_OUTPUT_VERSION:function(){return eT},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return G},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return D},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ed},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return m}};for(var i in o)Object.defineProperty(n,i,{enumerable:!0,get:o[i]});let a=e.r(166740)._(e.r(404660)),s=e.r(473032),l={client:"client",server:"server",edgeServer:"edge-server"},u={[l.client]:0,[l.server]:1,[l.edgeServer]:2};var c=((r={}).PAGES="PAGES",r.PAGES_API="PAGES_API",r.APP_PAGE="APP_PAGE",r.APP_ROUTE="APP_ROUTE",r.PRERENDER="PRERENDER",r.STATIC_FILE="STATIC_FILE",r.MIDDLEWARE="MIDDLEWARE",r);let p="phase-export",_="phase-analyze",T="phase-production-build",d="phase-production-server",E="phase-development-server",S="phase-test",A="phase-info",g="pages-manifest.json",m="webpack-stats.json",h="app-paths-manifest.json",R="app-path-routes-manifest.json",f="build-manifest.json",N="functions-config-manifest.json",I="subresource-integrity-manifest",O="next-font-manifest",y="export-marker.json",b="export-detail.json",C="prerender-manifest.json",M="routes-manifest.json",P="images-manifest.json",L="required-server-files",v="_devPagesManifest.json",U="middleware-manifest.json",D="_clientMiddlewareManifest.json",G="client-build-manifest.json",B="_devMiddlewareManifest.json",x="react-loadable-manifest.json",V="server",w=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],H="BUILD_ID",k=["/_document","/_app","/_error"],Y="public",j="static",F="__NEXT_DROP_CLIENT_FILE__",W="__NEXT_BUILTIN_DOCUMENT__",K="__barrel_optimize__",X="client-reference-manifest",Z="server-reference-manifest",J="middleware-build-manifest",$="middleware-react-loadable-manifest",Q="interception-route-rewrite-manifest",z="dynamic-css-manifest",q="main",ee=`${q}-app`,et="app-pages-internals",en="react-refresh",er="webpack",eo="polyfills",ei=Symbol(eo),ea="webpack-runtime",es="edge-runtime-webpack",el="__N_SSG",eu="__N_SSP",ec={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},ep={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},e_=["/500"],eT=1,ed=6e3,eE={client:"client",server:"server"},eS=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eA=new Set([q,en,ee]);("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},797121,(e,t,n)=>{t.exports=e.r(59653)},775563,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(797121);n.isBuild=function(){return process.env.NEXT_PHASE===r.PHASE_PRODUCTION_BUILD}},804822,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247);async function i(){try{o.DEBUG_BUILD&&r.debug.log("Flushing events..."),await r.flush(2e3),o.DEBUG_BUILD&&r.debug.log("Done flushing events")}catch(e){o.DEBUG_BUILD&&r.debug.log("Error while flushing events:\n",e)}}function a(){let e=Symbol.for("__cloudflare-context__");return r.GLOBAL_OBJ[e]?.ctx}function s(e){a()?.waitUntil(e)}function l(){return"function"==typeof a()?.waitUntil}n.cloudflareWaitUntil=s,n.flushSafelyWithTimeout=i,n.isCloudflareWaitUntilAvailable=l,n.waitUntil=function(e){l()?s(e):r.vercelWaitUntil(e)}},835229,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);function o(e){let t=e.split("/").filter(e=>e&&!(e.startsWith("(")&&e.endsWith(")")));return t.length>0?`/${t.join("/")}`:"/"}function i(e,t,n,i){let a=i??o(e),s=n?.["x-forwarded-proto"],l=n?.["x-forwarded-host"]||n?.host;if(!s||!l)return a;let u=`${s}://${l}${a}`,c=r.parseStringToURLObject(u);return c?r.getSanitizedUrlStringFromUrlObject(c):a}function a(e){let t=e?.referer;if(t)try{let e=new URL(t);return r.getSanitizedUrlStringFromUrlObject(e)}catch{return}}n.buildUrlFromComponentRoute=i,n.extractSanitizedUrlFromRefererHeader=a,n.getSanitizedRequestUrl=function(e,t,n,r){let o=a(n);return o||i(e,t,n,r)},n.sanitizeRoutePath=o,n.substituteRouteParams=function(e,t){return e}},638074,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(835229);n.setUrlProcessingMetadata=function(e){if("transaction"!==e.type||e.contexts?.trace?.op!=="http.server"||!e.contexts?.trace?.data)return;let t=r.getClient();if(!t?.getOptions().sendDefaultPii)return;let n=e.contexts.trace.data,i=n["next.route"]||n["http.route"],a=n["http.target"];if(!i)return;let s=e.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),l=s?.sdkProcessingMetadata?.normalizedRequest?.headers,u=o.getSanitizedRequestUrl(i,void 0,l,a?.toString());u&&s?.sdkProcessingMetadata&&(s.sdkProcessingMetadata.normalizedRequest=s.sdkProcessingMetadata.normalizedRequest||{},s.sdkProcessingMetadata.normalizedRequest.url=u)}},540886,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(814747);n.distDirRewriteFramesIntegration=r.defineIntegration(({distDirName:e})=>{let t=o.resolve(e).replace(/(\/|\\)$/,""),n=new RegExp(r.escapeStringForRegex(t));return{...r.rewriteFramesIntegration({iteratee:e=>(e.filename=e.filename?.replace(n,"app:///_next"),e)}),name:"DistDirRewriteFrames"}})},224915,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.addHeadersAsAttributes=function(e,t){if(!e)return{};let n=e instanceof Headers||"object"==typeof e&&"get"in e?r.winterCGHeadersToDict(e):e,o=r.httpHeadersToSpanAttributes(n,r.getClient()?.getOptions().sendDefaultPii??!1);return t&&t.setAttributes(o),o}},851224,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(779607),a=e.r(322192),s=e.r(753802),l=o.GLOBAL_OBJ;n.dropMiddlewareTunnelRequests=function(e,t){if(o.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let n=t?.[a.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",u=t?.[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",c=t?.[a.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!n&&!u&&!c)return;let p=function(e){let t=l._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!t)return!1;let n=e[r.SEMATTRS_HTTP_TARGET];if("string"==typeof n){let e=n.split("?")[0]||"";return e===t||e.startsWith(`${t}/`)}return!1}(t||{}),_=i.isSentryRequestSpan(e);(p||_)&&e.setAttribute(s.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},997574,(e,t,n)=>{let r;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let o=e.r(808119),i=e.r(976285),a=e.r(644247),s=e.r(322192),l=e.r(753802),u="__PAGE__",c=new WeakMap;function p(e){return"NextNodeServer.getLayoutOrPageModule"===e[s.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===e[s.ATTR_NEXT_SPAN_NAME]&&"string"==typeof e[s.ATTR_NEXT_SEGMENT]}function _({segment:e,route:t}){return e===u?`resolve page server component "${t}"`:""===e?"resolve root layout server component":`resolve layout server component "${e}"`}n.commonObjectToIsolationScope=function(e){if("object"!=typeof e||!e)return new i.Scope;{let t=c.get(e);if(t)return t;{let t=new i.Scope;return c.set(e,t),t}}},n.dropNextjsRootContext=function(){if(i.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let e=i.getActiveSpan();if(e){let t=i.getRootSpan(e),n=i.spanToJSON(t).data;n?.["next.span_type"]&&i.getRootSpan(e)?.setAttribute(l.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},n.escapeNextjsTracing=function(e){let t=i.GLOBAL_OBJ.AsyncLocalStorage;return t?(r||(r=new t),r.getStore())?e():i.startNewTrace(()=>r.run(!0,()=>e())):(a.DEBUG_BUILD&&i.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),e())},n.getEnhancedResolveSegmentSpanName=_,n.isResolveSegmentSpan=p,n.maybeEnhanceServerComponentSpanName=function(e,t,n){if(!p(t))return;let r=t[s.ATTR_NEXT_SEGMENT],a=n[o.ATTR_HTTP_ROUTE],l=_({segment:r,route:"string"==typeof a?a:""});e.updateName(l),e.setAttributes({"sentry.nextjs.ssr.function.type":r===u?"Page":"Layout","sentry.nextjs.ssr.function.route":a}),e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},800038,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247),i="sentry.cron.checkInId",a="sentry.cron.monitorSlug",s="sentry.cron.startTime",l="sentry.cron.schedule";n.maybeCompleteCronCheckIn=function(e){let t=r.spanToJSON(e).data,n=t?.[i],u=t?.[a],c=t?.[s],p=t?.[l];if(!n||!u||"number"!=typeof c)return;let _=r._INTERNAL_safeDateNow()/1e3-c,T=r.spanToJSON(e).status,d=T&&"ok"!==T?"error":"ok";r.captureCheckIn({checkInId:n,monitorSlug:u,status:d,duration:_},"string"==typeof p?{maxRuntime:720,schedule:{type:"crontab",value:p}}:void 0),e.setAttribute(i,void 0),e.setAttribute(a,void 0),e.setAttribute(s,void 0),e.setAttribute(l,void 0),o.DEBUG_BUILD&&r.debug.log(`[Cron] Completed check-in for "${u}" with status "${d}"`)},n.maybeStartCronCheckIn=function(e,t){let n=function(){let e=globalThis;if(e._sentryVercelCronsConfig)try{return JSON.parse(e._sentryVercelCronsConfig)}catch{o.DEBUG_BUILD&&r.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!n||!t)return;let u=r.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!u)return;let c=Array.isArray(u["user-agent"])?u["user-agent"][0]:u["user-agent"];if(!c?.includes("vercel-cron"))return;let p=n.find(e=>e.path===t);if(!p?.path||!p.schedule)return;let _=p.path,T=r._INTERNAL_safeDateNow()/1e3,d=r.captureCheckIn({monitorSlug:_,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:p.schedule}});o.DEBUG_BUILD&&r.debug.log(`[Cron] Started check-in for "${_}" with ID "${d}"`),e.setAttribute(i,d),e.setAttribute(a,_),e.setAttribute(s,T),e.setAttribute(l,p.schedule)}},383234,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o="messaging.system",i="messaging.destination.name",a="messaging.operation.name",s="sentry.queue.enriched";function l(e,t){let n=e[t];return Array.isArray(n)?n[0]:n}n.maybeCleanupQueueSpan=function(e){let t=r.spanToJSON(e).data;t?.[s]&&e.setAttribute(s,void 0)},n.maybeEnrichQueueConsumerSpan=function(e){let t=r.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!t||"com.vercel.queue.v2beta"!==(Array.isArray(t["ce-type"])?t["ce-type"][0]:t["ce-type"]))return;let n=l(t,"ce-vqsqueuename"),u=l(t,"ce-vqsmessageid"),c=l(t,"ce-vqsconsumergroup"),p=l(t,"ce-vqsdeliverycount");if(e.setAttribute(o,"vercel.queue"),e.setAttribute(a,"process"),n&&e.setAttribute(i,n),u&&e.setAttribute("messaging.message.id",u),c&&e.setAttribute("messaging.consumer.group.name",c),p){let t=parseInt(p,10);isNaN(t)||e.setAttribute("messaging.message.delivery_count",t)}e.setAttribute(s,!0)},n.maybeEnrichQueueProducerSpan=function(e){let t,n=r.spanToJSON(e).data,l=n?.["url.full"];if(!l)return;try{t=new URL(l)}catch{return}if("vercel-queue.com"!==t.hostname&&!t.hostname.endsWith(".vercel-queue.com"))return;let u=t.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!u)return;let c=decodeURIComponent(u[1]);e.setAttribute(o,"vercel.queue"),e.setAttribute(i,c),e.setAttribute(a,"send"),e.setAttribute(s,!0)}},541464,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(808119),i=e.r(976285),a=e.r(779607),s=e.r(322192),l=e.r(224915),u=e.r(851224),c=e.r(997574),p=e.r(800038),_=e.r(383234);n.handleOnSpanStart=function(e){let t=i.spanToJSON(e).data,n=i.getRootSpan(e),T=i.spanToJSON(n).data,d=e===n;if(u.dropMiddlewareTunnelRequests(e,t),"string"==typeof t?.[s.ATTR_NEXT_ROUTE]&&(T?.[o.ATTR_HTTP_REQUEST_METHOD]||T?.[o.SEMATTRS_HTTP_METHOD])&&!T?.[o.ATTR_HTTP_ROUTE]){let e=t[s.ATTR_NEXT_ROUTE].replace(/\/route$/,"");n.updateName(e),n.setAttribute(o.ATTR_HTTP_ROUTE,e),n.setAttribute(s.ATTR_NEXT_ROUTE,e);let r=T?.[o.ATTR_HTTP_REQUEST_METHOD]||T?.[o.SEMATTRS_HTTP_METHOD];"string"==typeof r&&i.getIsolationScope().setTransactionName(`${r} ${e}`),p.maybeStartCronCheckIn(n,e),_.maybeEnrichQueueConsumerSpan(n)}if(t?.[s.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let r=t[s.ATTR_NEXT_SPAN_NAME];"string"==typeof r&&(n.updateName(r),n.setAttribute(o.ATTR_HTTP_ROUTE,r),n.setAttribute(s.ATTR_NEXT_SPAN_NAME,r)),e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(t?.[s.ATTR_NEXT_SPAN_TYPE]!==void 0&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),d){let e=i.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;l.addHeadersAsAttributes(e,n)}if(t?.[s.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&d){let t=i.getCapturedScopesOnSpan(e),n=(t.isolationScope||i.getIsolationScope()).clone(),o=t.scope||i.getCurrentScope(),s=a.getScopesFromContext(r.context.active());s&&(s.isolationScope=n),i.setCapturedScopesOnSpan(e,o,n)}c.maybeEnhanceServerComponentSpanName(e,t,T),_.maybeEnrichQueueProducerSpan(e)}},280432,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247);function i(){let e=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:e}=process.getBuiltinModule("async_hooks")??{};return e}}();if(!e||"function"!=typeof e.snapshot){o.DEBUG_BUILD&&r.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return e.snapshot()}function a(e){return e instanceof Error&&e.message.includes("AsyncLocalStorage")}n.prepareSafeIdGeneratorContext=function(){let e=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),t=r.GLOBAL_OBJ,n=i();if(!n)return;let s=n;t[e]=e=>{try{return s(e)}catch(n){if(!a(n))throw n;let t=i();if(!t)return e();s=t;try{return s(e)}catch(t){if(!a(t))throw t;return e()}}},o.DEBUG_BUILD&&r.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},202446,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.captureUnderscoreErrorException=async function(e){let{req:t,res:n,err:i}=e,a=n?.statusCode||e.statusCode;if(a&&a<500||!e.pathname)return;if(i&&r.isAlreadyCaptured(i)){o.waitUntil(o.flushSafelyWithTimeout());let e="object"==typeof i?i.__sentry_event_id__:void 0;return"string"==typeof e?(r.getIsolationScope().setLastEventId(e),e):r.getIsolationScope().lastEventId()}let s=r.withScope(e=>{if(t){let n=r.httpRequestToRequestData(t);e.setSDKProcessingMetadata({normalizedRequest:n})}return r.captureException(i||`_error.js called with falsy error (${i})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return o.waitUntil(o.flushSafelyWithTimeout()),s}},144865,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.isUseCacheFunction=function(e){if(e.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:t}=function(e){let t=parseInt(e.slice(0,2),16),n=t>>1&63,r=Array(6);for(let e=0;e<6;e++){let t=n>>5-e&1;r[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:r,hasRestArgs:1==(1&t)}}(e.$$id);return"use-cache"===t}},584990,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247),i=e.r(775563),a=e.r(144865);function s(e){let t=i.isBuild(),n=!!e&&a.isUseCacheFunction(e);return n&&o.DEBUG_BUILD&&r.debug.log("Skipping span creation in Cache Components context"),t||n}function l(){return new r.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}n.startInactiveSpan=function(e){return s()?l():r.startInactiveSpan(e)},n.startSpan=function(e,t){return s(t)?t(l()):r.startSpan(e,t)},n.startSpanManual=function(e,t){if(s(t)){let e=l();return t(e,()=>e.end())}return r.startSpanManual(e,t)}},952597,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(753802);n.callDataFetcherTraced=async function(e,t){try{return await e(...t)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),e}},n.withErrorInstrumentation=function(e){return async function(...t){try{return await e.apply(this,t)}catch(t){throw r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:e.name}}}),t}}},n.withTracedServerSideDataFetcher=function(e,t,n,i){return async function(...n){let a=r.httpRequestToRequestData(t);r.getCurrentScope().setTransactionName(`${i.dataFetchingMethodName} (${i.dataFetcherRouteName})`),r.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:a});let s=r.getActiveSpan();s&&"/_error"!==i.requestedRouteName&&r.getRootSpan(s).setAttribute(o.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,i.requestedRouteName);let{"sentry-trace":l,baggage:u}=r.getTraceData();return{sentryTrace:l,baggage:u,data:await e.apply(this,n)}}}},263350,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetStaticPropsWithSentry=function(e,t){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let i=o.withErrorInstrumentation(e);return o.callDataFetcherTraced(i,n)}})}},804806,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:i.pathname,requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,baggage:u,sentryTrace:c}=await e.apply(t,n)??{};return"object"==typeof r&&null!==r&&(c&&(r._sentryTraceData=c),u&&(r._sentryBaggage=u)),r}}})}},233160,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapAppGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i.ctx,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_app",requestedRouteName:i.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,sentryTrace:u,baggage:c}=await e.apply(t,n);return"object"==typeof r&&null!==r&&(r.pageProps||(r.pageProps={}),u&&(r.pageProps._sentryTraceData=u),c&&(r.pageProps._sentryBaggage=c)),r}}})}},935404,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapDocumentGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_document",requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r}=await e.apply(t,n);return r}}})}},914109,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapErrorGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_error",requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,baggage:u,sentryTrace:c}=await e.apply(t,n);return"object"==typeof r&&null!==r&&(c&&(r._sentryTraceData=c),u&&(r._sentryBaggage=u)),r}}})}},315469,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetServerSidePropsWithSentry=function(e,t){return new Proxy(e,{apply:async(e,n,i)=>{if(r.isBuild())return e.apply(n,i);let[a]=i,{req:s,res:l}=a,u=o.withErrorInstrumentation(e),c=o.withTracedServerSideDataFetcher(u,s,l,{dataFetcherRouteName:t,requestedRouteName:t,dataFetchingMethodName:"getServerSideProps"}),{data:p,baggage:_,sentryTrace:T}=await c.apply(n,i);return"object"==typeof p&&null!==p&&"props"in p&&(T&&(p.props._sentryTraceData=T),_&&(p.props._sentryBaggage=_)),p}})}},44343,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.isNotFoundNavigationError=function(e){return r.isError(e)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(e.digest)},n.isRedirectNavigationError=function(e){return r.isError(e)&&"string"==typeof e.digest&&e.digest.startsWith("NEXT_REDIRECT;")}},461047,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);n.wrapServerComponentWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>{let s=r.getIsolationScope(),l=t.headers?r.winterCGHeadersToDict(t.headers):void 0;return s.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),r.handleCallbackErrors(()=>e.apply(n,a),e=>{let n=r.getActiveSpan(),{componentRoute:i,componentType:a}=t,l=!0;s.setTransactionName(`${a} Server Component (${i})`),n&&(o.isNotFoundNavigationError(e)?(l=!1,n.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"})):o.isRedirectNavigationError(e)?(l=!1,n.setStatus({code:r.SPAN_STATUS_OK})):n.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"})),l&&r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{i.waitUntil(i.flushSafelyWithTimeout())})}})}},839777,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);e.r(997574),n.wrapRouteHandlerWithSentry=function(e,t){let{method:n,parameterizedRoute:a,headers:s}=t;return new Proxy(e,{apply:async(e,t,s)=>{let l=r.getActiveSpan(),u=l?r.getRootSpan(l):void 0;return r.withIsolationScope(r.getIsolationScope(),()=>r.withScope(async c=>{c.setTransactionName(`${n} ${a}`);let p=await r.handleCallbackErrors(()=>e.apply(t,s),e=>{o.isRedirectNavigationError(e)||(o.isNotFoundNavigationError(e)?(l&&r.setHttpStatus(l,404),u&&r.setHttpStatus(u,404)):r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{i.waitUntil(i.flushSafelyWithTimeout())});try{p.status&&(l&&r.setHttpStatus(l,p.status),u&&r.setHttpStatus(u,p.status))}catch{}return p}))}})}},573937,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.wrapApiHandlerWithSentryVercelCrons=function(e,t){return new Proxy(e,{apply:(e,n,o)=>{let i;if(!o?.[0])return e.apply(n,o);let[a]=o,s="nextUrl"in a?a.nextUrl.pathname:a.url,l="nextUrl"in a?a.headers.get("user-agent"):a.headers["user-agent"];if(!t||!l?.includes("vercel-cron"))return e.apply(n,o);let u=t.find(e=>e.path===s);if(!u?.path||!u.schedule)return e.apply(n,o);let c=u.path,p=r.captureCheckIn({monitorSlug:c,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:u.schedule}}),_=r._INTERNAL_safeDateNow()/1e3,T=()=>{r.captureCheckIn({checkInId:p,monitorSlug:c,status:"error",duration:r._INTERNAL_safeDateNow()/1e3-_})};try{i=e.apply(n,o)}catch(e){throw T(),e}return"object"==typeof i&&null!==i&&"then"in i?Promise.resolve(i).then(()=>{r.captureCheckIn({checkInId:p,monitorSlug:c,status:"ok",duration:r._INTERNAL_safeDateNow()/1e3-_})},()=>{T()}):r.captureCheckIn({checkInId:p,monitorSlug:c,status:"ok",duration:r._INTERNAL_safeDateNow()/1e3-_}),i}})}},918606,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.wrapMiddlewareWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{let i="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(i&&"string"==typeof i){let e=n[0];if(e instanceof Request&&new URL(e.url).pathname.startsWith(i))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return r.withIsolationScope(i=>{let a,s,l=n[0],u=r.getCurrentScope();l instanceof Request?(i.setSDKProcessingMetadata({normalizedRequest:r.winterCGRequestToRequestData(l)}),a=`middleware ${l.method}`,s="url"):(a="middleware",s="component"),u.setTransactionName(a);let c=r.getActiveSpan();if(c){a="middleware",s="component";let e=r.getRootSpan(c);e&&r.setCapturedScopesOnSpan(e,u,i)}return r.startSpan({name:a,op:"http.server.middleware",attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:s,[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>r.handleCallbackErrors(()=>e.apply(t,n),e=>{r.captureException(e,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{o.waitUntil(o.flushSafelyWithTimeout())}))})}})}},91026,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);function o(e,t){e&&"object"==typeof e&&r.addNonEnumerableProperty(e,"__sentry_event_id__",t)}n.wrapPageComponentWithSentry=function(e){return"function"==typeof e&&e?.prototype?.isReactComponent?class extends e{render(...e){return r.withIsolationScope(()=>{let t=r.getCurrentScope(),n="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(n){let e=r.extractTraceparentData(n);t.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return super.render(...e)}catch(t){let e=r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw o(t,e),t}})}}:"function"==typeof e?new Proxy(e,{apply:(e,t,n)=>r.withIsolationScope(()=>{let i=r.getCurrentScope(),a=n?.[0]?._sentryTraceData;if(a){let e=r.extractTraceparentData(a);i.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return e.apply(t,n)}catch(t){let e=r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw o(t,e),t}})}):e}},332796,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);n.wrapGenerationFunctionWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>{let s,l=r.getIsolationScope();try{s=t.requestAsyncStorage?.getStore()?.headers}catch{}let u=s?r.winterCGHeadersToDict(s):void 0;return l.setSDKProcessingMetadata({normalizedRequest:{headers:u}}),r.handleCallbackErrors(()=>e.apply(n,a),e=>{let n=r.getActiveSpan(),{componentRoute:i,componentType:a,generationFunctionIdentifier:s}=t,u=!0;l.setTransactionName(`${a}.${s} (${i})`),n&&(o.isNotFoundNavigationError(e)?(u=!1,n.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"})):o.isRedirectNavigationError(e)?(u=!1,n.setStatus({code:r.SPAN_STATUS_OK})):n.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"})),u&&r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:s}}})},()=>{i.waitUntil(i.flushSafelyWithTimeout())})}})}},982907,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822),i=e.r(644247),a=e.r(44343);async function s(e,t,n){return r.withIsolationScope(async s=>{let l,u,c=r.getClient()?.getOptions().sendDefaultPii,p={};try{let e=await t.headers;l=e?.get("sentry-trace")??void 0,u=e?.get("baggage"),e?.forEach((e,t)=>{p[t]=e})}catch{i.DEBUG_BUILD&&r.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return s.setTransactionName(`serverAction/${e}`),s.setSDKProcessingMetadata({normalizedRequest:{headers:p}}),(r.getActiveSpan()?(e,t)=>t():r.continueTrace)({sentryTrace:l,baggage:u},async()=>{try{return await r.startSpan({op:"function.server_action",name:`serverAction/${e}`,forceTransaction:!0,attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async e=>{let o=await r.handleCallbackErrors(n,t=>{a.isNotFoundNavigationError(t)?e.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"}):a.isRedirectNavigationError(t)||(e.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"}),r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==t.recordResponse?t.recordResponse:c)&&r.getIsolationScope().setExtra("server_action_result",o),t.formData&&t.formData.forEach((e,t)=>{r.getIsolationScope().setExtra(`server_action_form_data.${t}`,"string"==typeof e?e:"[non-string value]")}),o})}finally{o.waitUntil(o.flushSafelyWithTimeout())}})})}n.withServerActionInstrumentation=function(...e){if("function"==typeof e[1]){let[t,n]=e;return s(t,{},n)}{let[t,n,r]=e;return s(t,n,r)}}},659534,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.captureRequestError=function(e,t,n){r.withScope(i=>{i.setSDKProcessingMetadata({normalizedRequest:{headers:r.headersToDict(t.headers),method:t.method}}),i.setContext("nextjs",{request_path:t.path,router_kind:n.routerKind,router_path:n.routePath,route_type:n.routeType}),i.setTransactionName(`${t.method} ${n.routePath}`),r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),o.waitUntil(o.flushSafelyWithTimeout())})}},13458,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822),i=e.r(997574);n.wrapApiHandlerWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>(i.dropNextjsRootContext(),i.escapeNextjsTracing(()=>{let[i,s]=a;return i?s?i.__withSentry_applied__?e.apply(n,a):(i.__withSentry_applied__=!0,r.withIsolationScope(l=>(r.getActiveSpan()?(e,t)=>t():r.continueTrace)({sentryTrace:i.headers&&r.isString(i.headers["sentry-trace"])?i.headers["sentry-trace"]:void 0,baggage:i.headers?.baggage},()=>{let u=`${(i.method||"GET").toUpperCase()} `,c=r.httpRequestToRequestData(i);return l.setSDKProcessingMetadata({normalizedRequest:c}),l.setTransactionName(`${u}${t}`),r.startSpanManual({name:`${u}${t}`,op:"http.server",forceTransaction:!0,attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async t=>{s.end=new Proxy(s.end,{apply:(e,n,i)=>(r.setHttpStatus(t,s.statusCode),t.end(),o.waitUntil(o.flushSafelyWithTimeout()),e.apply(n,i))});try{return await e.apply(n,a)}catch(i){let n=r.objectify(i);throw r.captureException(n,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:e.name,function:"withSentry"}}}),r.setHttpStatus(t,500),t.end(),await o.flushSafelyWithTimeout(),n}})}))):(r.debug.log(`Wrapped API handler on route "${t}" was not passed a response object. Will not instrument.`),e.apply(n,a)):(r.debug.log(`Wrapped API handler on route "${t}" was not passed a request object. Will not instrument.`),e.apply(n,a))}))})}},398609,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(96892),a=e.r(644247);e.r(313627);let s=e.r(102372),l=e.r(322192),u=e.r(753802),c=e.r(775563),p=e.r(804822),_=e.r(638074),T=e.r(540886),d=e.r(541464),E=e.r(280432),S=e.r(800038),A=e.r(383234),g=e.r(202446),m=e.r(584990),h=e.r(263350),R=e.r(804806),f=e.r(233160),N=e.r(935404),I=e.r(914109),O=e.r(315469),y=e.r(461047),b=e.r(839777),C=e.r(573937),M=e.r(918606),P=e.r(91026),L=e.r(332796),v=e.r(982907),U=e.r(659534),D=e.r(13458);o.GLOBAL_OBJ,n.captureUnderscoreErrorException=g.captureUnderscoreErrorException,n.startInactiveSpan=m.startInactiveSpan,n.startSpan=m.startSpan,n.startSpanManual=m.startSpanManual,n.wrapGetStaticPropsWithSentry=h.wrapGetStaticPropsWithSentry,n.wrapGetInitialPropsWithSentry=R.wrapGetInitialPropsWithSentry,n.wrapAppGetInitialPropsWithSentry=f.wrapAppGetInitialPropsWithSentry,n.wrapDocumentGetInitialPropsWithSentry=N.wrapDocumentGetInitialPropsWithSentry,n.wrapErrorGetInitialPropsWithSentry=I.wrapErrorGetInitialPropsWithSentry,n.wrapGetServerSidePropsWithSentry=O.wrapGetServerSidePropsWithSentry,n.wrapServerComponentWithSentry=y.wrapServerComponentWithSentry,n.wrapRouteHandlerWithSentry=b.wrapRouteHandlerWithSentry,n.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,n.wrapMiddlewareWithSentry=M.wrapMiddlewareWithSentry,n.wrapPageComponentWithSentry=P.wrapPageComponentWithSentry,n.wrapGenerationFunctionWithSentry=L.wrapGenerationFunctionWithSentry,n.withServerActionInstrumentation=v.withServerActionInstrumentation,n.captureRequestError=U.captureRequestError,n.wrapApiHandlerWithSentry=D.wrapApiHandlerWithSentry,n.ErrorBoundary=e=>e.children?"function"==typeof e.children?e.children():e.children:null,n.createReduxEnhancer=function(){return e=>e},n.init=function(e){if(E.prepareSafeIdGeneratorContext(),c.isBuild())return;!a.DEBUG_BUILD&&e.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let t=i.getDefaultIntegrations(e).filter(e=>"Http"!==e.name).concat(i.httpIntegration({disableIncomingRequestSpans:!0}));e.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),t.push(T.distDirRewriteFramesIntegration({distDirName:".next"}));let n=function(){if(p.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),g={environment:e.environment||process.env.SENTRY_ENVIRONMENT||s.getVercelEnv(!1)||"production",release:"9dad66acd3deb36c6e51fae1fdce6de96dd992c7",defaultIntegrations:t,...e,...n};if(a.DEBUG_BUILD&&g.debug&&o.debug.enable(),a.DEBUG_BUILD&&o.debug.log("Initializing SDK..."),o.getClient()){a.DEBUG_BUILD&&o.debug.log("SDK already initialized");return}o.applySdkMetadata(g,"nextjs",["nextjs",n?"cloudflare":"node"]);let m=i.init(g);m?.on("beforeSampling",({spanAttributes:e},t)=>{("string"==typeof e[r.SEMATTRS_HTTP_TARGET]&&e[r.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&e[r.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof e[r.ATTR_URL_QUERY]&&e[r.ATTR_URL_QUERY].includes("sentry_key")&&e[r.ATTR_URL_QUERY].includes("sentry_client"))&&(t.decision=!1)}),m?.on("spanStart",d.handleOnSpanStart),m?.on("spanEnd",S.maybeCompleteCronCheckIn),m?.on("spanEnd",A.maybeCleanupQueueSpan),o.getGlobalScope().addEventProcessor(Object.assign(e=>{if("transaction"!==e.type)return e;if(e.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||e.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===e.transaction||e.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===e.transaction)return null;if("string"==typeof e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let t=o.extractTraceparentData(e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(t?.parentSampled===!1)return null}return e},{id:"NextLowQualityTransactionsFilter"})),o.getGlobalScope().addEventProcessor(Object.assign((e,t)=>{if(void 0!==e.type)return e;let n=t.originalException;if("object"==typeof n&&null!==n&&"$$typeof"in n&&n.$$typeof===Symbol.for("react.postpone"))return null;let r=e.exception?.values?.[0]?.value;return r?.includes("Suspense Exception: This is not a real error!")||r?.includes("Suspense Exception: This is not a real error, and should not leak")?null:e},{id:"DropReactControlFlowErrors"})),m?.on("preprocessEvent",e=>{if("transaction"===e.type&&e.contexts?.trace?.data?.[l.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){e.contexts.trace.data[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",e.contexts.trace.op="http.server",e.transaction&&(e.transaction=o.stripUrlQueryAndFragment(e.transaction));let t=e.contexts.trace.data[r.SEMATTRS_HTTP_METHOD],n=e.contexts?.trace?.data?.[r.SEMATTRS_HTTP_TARGET],i=e.contexts.trace.data[r.ATTR_HTTP_ROUTE]||e.contexts.trace.data[l.ATTR_NEXT_ROUTE],a=e.contexts.trace.data[l.ATTR_NEXT_SPAN_NAME];if("string"==typeof t&&"string"==typeof i&&!i.startsWith("middleware")){let n=i.replace(/\/route$/,"");e.transaction=`${t} ${n}`,e.contexts.trace.data[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",e.contexts.trace.data[l.ATTR_NEXT_ROUTE]=n}e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==e.transaction&&(e.transaction=`${t} ${e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let s="string"==typeof a&&a.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);s&&(e.transaction=`middleware ${s[1]}`,e.contexts.trace.op="http.server.middleware"),"GET /_error"===e.transaction&&n&&(e.transaction=`${t?`${t} `:""}${n}`)}if("transaction"===e.type&&"string"==typeof e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let t=o.extractTraceparentData(e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);t?.traceId&&(e.contexts.trace.trace_id=t.traceId),t?.parentSpanId&&(e.contexts.trace.parent_span_id=t.parentSpanId)}_.setUrlProcessingMetadata(e)});try{o.getGlobalScope().setTag("turbopack",!0)}catch{}return a.DEBUG_BUILD&&o.debug.log("SDK successfully initialized"),m},n.showReportDialog=function(){},n.withErrorBoundary=function(e){return e},Object.prototype.hasOwnProperty.call(i,"__proto__")&&!Object.prototype.hasOwnProperty.call(n,"__proto__")&&Object.defineProperty(n,"__proto__",{enumerable:!0,value:i.__proto__}),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(n,e)||(n[e]=i[e])})},755538,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(256782),o=e.r(398609),i=e.r(96892),a=e.r(659534),s=e.r(202446),l=e.r(584990),u=e.r(982907),c=e.r(13458),p=e.r(573937),_=e.r(233160),T=e.r(935404),d=e.r(914109),E=e.r(332796),S=e.r(804806),A=e.r(315469),g=e.r(263350),m=e.r(918606),h=e.r(91026),R=e.r(839777),f=e.r(461047);n.withSentryConfig=r.withSentryConfig,n.ErrorBoundary=o.ErrorBoundary,n.createReduxEnhancer=o.createReduxEnhancer,n.init=o.init,n.showReportDialog=o.showReportDialog,n.withErrorBoundary=o.withErrorBoundary,n.captureRequestError=a.captureRequestError,n.captureUnderscoreErrorException=s.captureUnderscoreErrorException,n.startInactiveSpan=l.startInactiveSpan,n.startSpan=l.startSpan,n.startSpanManual=l.startSpanManual,n.withServerActionInstrumentation=u.withServerActionInstrumentation,n.wrapApiHandlerWithSentry=c.wrapApiHandlerWithSentry,n.wrapApiHandlerWithSentryVercelCrons=p.wrapApiHandlerWithSentryVercelCrons,n.wrapAppGetInitialPropsWithSentry=_.wrapAppGetInitialPropsWithSentry,n.wrapDocumentGetInitialPropsWithSentry=T.wrapDocumentGetInitialPropsWithSentry,n.wrapErrorGetInitialPropsWithSentry=d.wrapErrorGetInitialPropsWithSentry,n.wrapGenerationFunctionWithSentry=E.wrapGenerationFunctionWithSentry,n.wrapGetInitialPropsWithSentry=S.wrapGetInitialPropsWithSentry,n.wrapGetServerSidePropsWithSentry=A.wrapGetServerSidePropsWithSentry,n.wrapGetStaticPropsWithSentry=g.wrapGetStaticPropsWithSentry,n.wrapMiddlewareWithSentry=m.wrapMiddlewareWithSentry,n.wrapPageComponentWithSentry=h.wrapPageComponentWithSentry,n.wrapRouteHandlerWithSentry=R.wrapRouteHandlerWithSentry,n.wrapServerComponentWithSentry=f.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(i,"__proto__")&&!Object.prototype.hasOwnProperty.call(n,"__proto__")&&Object.defineProperty(n,"__proto__",{enumerable:!0,value:i.__proto__}),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(n,e)||(n[e]=i[e])})}]; +Mongoose Error Code: ${t.code}`:""}`})}function l(e,t,n,i){n&&(0,o.safeExecuteInTheMiddle)(()=>n(e,{moduleVersion:i,response:t}),e=>{e&&r.diag.error("mongoose instrumentation: responseHook error",e)},!0)}n.getAttributesFromCollection=function(e,t,n){let r={};return t&o.SemconvStability.OLD&&(r[i.ATTR_DB_MONGODB_COLLECTION]=e.name,r[i.ATTR_DB_NAME]=e.conn.name,r[i.ATTR_DB_USER]=e.conn.user),t&o.SemconvStability.STABLE&&(r[a.ATTR_DB_COLLECTION_NAME]=e.name,r[a.ATTR_DB_NAMESPACE]=e.conn.name),n&o.SemconvStability.OLD&&(r[i.ATTR_NET_PEER_NAME]=e.conn.host,r[i.ATTR_NET_PEER_PORT]=e.conn.port),n&o.SemconvStability.STABLE&&(r[a.ATTR_SERVER_ADDRESS]=e.conn.host,r[a.ATTR_SERVER_PORT]=e.conn.port),r},n.handlePromiseResponse=function(e,t,n,r){return e instanceof Promise?e.then(e=>(l(t,e,n,r),e)).catch(e=>{throw s(t,e),e}).finally(()=>t.end()):(l(t,e,n,r),t.end(),e)},n.handleCallbackResponse=function(e,t,n,r,o,i,a){let u=0;return 2===o.length?u=1:3===o.length&&(u=2),o[u]=(t,n)=>(t?s(r,t):l(r,n,i,a),r.end(),e(t,n)),t.apply(n,o)}},661395,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},152852,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongooseInstrumentation=n._ALREADY_INSTRUMENTED=n._STORED_PARENT_SPAN=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(388687),a=e.r(204780),s=e.r(661395),l=e.r(214787),u=e.r(808119),c=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],p=["remove","count","findOneAndRemove",...c],_=["count","findOneAndRemove",...c],T=[...c];function d(e){return e?e.startsWith("6.")||e.startsWith("5.")?p:e.startsWith("7.")?_:T:c}function E(e){return e&&(e.startsWith("5.")||e.startsWith("6."))||!1}function S(e){return!!e&&!!e.startsWith("8.")&&parseInt(e.split(".")[1],10)>=21}n._STORED_PARENT_SPAN=Symbol("stored-parent-span"),n._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class A extends a.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(s.PACKAGE_NAME,s.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,a.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,a.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new a.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(e,t){let n="Module"===e[Symbol.toStringTag]?e.default:e;return this._wrap(n.Model.prototype,"save",this.patchOnModelMethods("save",t)),n.Model.prototype.$save=n.Model.prototype.save,E(t)&&this._wrap(n.Model.prototype,"remove",this.patchOnModelMethods("remove",t)),S(t)&&(this._wrap(n.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",t)),this._wrap(n.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",t))),this._wrap(n.Query.prototype,"exec",this.patchQueryExec(t)),this._wrap(n.Aggregate.prototype,"exec",this.patchAggregateExec(t)),d(t).forEach(e=>{this._wrap(n.Query.prototype,e,this.patchAndCaptureSpanContext(e))}),this._wrap(n.Model,"aggregate",this.patchModelAggregate()),this._wrap(n.Model,"insertMany",this.patchModelStatic("insertMany",t)),this._wrap(n.Model,"bulkWrite",this.patchModelStatic("bulkWrite",t)),n}unpatch(e,t){let n="Module"===e[Symbol.toStringTag]?e.default:e,r=d(t);this._unwrap(n.Model.prototype,"save"),n.Model.prototype.$save=n.Model.prototype.save,E(t)&&this._unwrap(n.Model.prototype,"remove"),S(t)&&(this._unwrap(n.Model.prototype,"updateOne"),this._unwrap(n.Model.prototype,"deleteOne")),this._unwrap(n.Query.prototype,"exec"),this._unwrap(n.Aggregate.prototype,"exec"),r.forEach(e=>{this._unwrap(n.Query.prototype,e)}),this._unwrap(n.Model,"aggregate"),this._unwrap(n.Model,"insertMany"),this._unwrap(n.Model,"bulkWrite")}patchAggregateExec(e){let t=this;return o=>function(i){if(t.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let s=this[n._STORED_PARENT_SPAN],c={},{dbStatementSerializer:p}=t.getConfig();if(p){let e=p("aggregate",{options:this.options,aggregatePipeline:this._pipeline});t._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_STATEMENT]=e),t._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_QUERY_TEXT]=e)}let _=t._startSpan(this._model.collection,this._model?.modelName,"aggregate",c,s);return t._handleResponse(_,o,this,arguments,i,e)}}patchQueryExec(e){let t=this;return o=>function(i){if(this[n._ALREADY_INSTRUMENTED]||t.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let s=this[n._STORED_PARENT_SPAN],c={},{dbStatementSerializer:p}=t.getConfig();if(p){let e=p(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});t._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_STATEMENT]=e),t._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_QUERY_TEXT]=e)}let _=t._startSpan(this.mongooseCollection,this.model.modelName,this.op,c,s);return t._handleResponse(_,o,this,arguments,i,e)}}patchOnModelMethods(e,t){let n=this;return o=>function(i,s){if(n.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);let c={document:this};!i||i instanceof Function||(c.options=i);let p={},{dbStatementSerializer:_}=n.getConfig();if(_){let t=_(e,c);n._dbSemconvStability&a.SemconvStability.OLD&&(p[l.ATTR_DB_STATEMENT]=t),n._dbSemconvStability&a.SemconvStability.STABLE&&(p[u.ATTR_DB_QUERY_TEXT]=t)}let T=n._startSpan(this.constructor.collection,this.constructor.modelName,e,p);return i instanceof Function&&(s=i,i=void 0),n._handleResponse(T,o,this,arguments,s,t)}}_patchDocumentUpdateMethods(e,t){let o=this;return i=>function(s,c,p){if(o.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return i.apply(this,arguments);let _=p,T=s,d=c;"function"==typeof s?(_=s,T=void 0,d=void 0):"function"==typeof c&&(_=c,d=void 0);let E={},S=o.getConfig().dbStatementSerializer;if(S){let t=S(e,{condition:{_id:this._id},updates:T,options:d});o._dbSemconvStability&a.SemconvStability.OLD&&(E[l.ATTR_DB_STATEMENT]=t),o._dbSemconvStability&a.SemconvStability.STABLE&&(E[u.ATTR_DB_QUERY_TEXT]=t)}let A=o._startSpan(this.constructor.collection,this.constructor.modelName,e,E),g=o._handleResponse(A,i,this,arguments,_,t);return g&&"object"==typeof g&&(g[n._ALREADY_INSTRUMENTED]=!0),g}}patchModelStatic(e,t){let n=this;return o=>function(i,s,c){if(n.getConfig().requireParentSpan&&void 0===r.trace.getSpan(r.context.active()))return o.apply(this,arguments);"function"==typeof s&&(c=s,s=void 0);let p={};switch(e){case"insertMany":p.documents=i;break;case"bulkWrite":p.operations=i;break;default:p.document=i}void 0!==s&&(p.options=s);let _={},{dbStatementSerializer:T}=n.getConfig();if(T){let t=T(e,p);n._dbSemconvStability&a.SemconvStability.OLD&&(_[l.ATTR_DB_STATEMENT]=t),n._dbSemconvStability&a.SemconvStability.STABLE&&(_[u.ATTR_DB_QUERY_TEXT]=t)}let d=n._startSpan(this.collection,this.modelName,e,_);return n._handleResponse(d,o,this,arguments,c,t)}}patchModelAggregate(){let e=this;return t=>function(){let o=r.trace.getSpan(r.context.active()),i=e._callOriginalFunction(()=>t.apply(this,arguments));return i&&(i[n._STORED_PARENT_SPAN]=o),i}}patchAndCaptureSpanContext(e){let t=this;return e=>function(){return this[n._STORED_PARENT_SPAN]=r.trace.getSpan(r.context.active()),t._callOriginalFunction(()=>e.apply(this,arguments))}}_startSpan(e,t,n,o,s){let c={...o,...(0,i.getAttributesFromCollection)(e,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&a.SemconvStability.OLD&&(c[l.ATTR_DB_OPERATION]=n,c[l.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&a.SemconvStability.STABLE&&(c[u.ATTR_DB_OPERATION_NAME]=n,c[u.ATTR_DB_SYSTEM_NAME]=l.DB_SYSTEM_NAME_VALUE_MONGODB);let p=this._dbSemconvStability&a.SemconvStability.STABLE?`${n} ${e.name}`:`mongoose.${t}.${n}`;return this.tracer.startSpan(p,{kind:r.SpanKind.CLIENT,attributes:c},s?r.trace.setSpan(r.context.active(),s):void 0)}_handleResponse(e,t,n,r,o,a){let s=this;if(o instanceof Function)return s._callOriginalFunction(()=>(0,i.handleCallbackResponse)(o,t,n,e,r,s.getConfig().responseHook,a));{let o=s._callOriginalFunction(()=>t.apply(n,r));return(0,i.handlePromiseResponse)(o,e,s.getConfig().responseHook,a)}}_callOriginalFunction(e){return this.getConfig().suppressInternalInstrumentation?r.context.with((0,o.suppressTracing)(r.context.active()),e):e()}}n.MongooseInstrumentation=A},583049,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MongooseInstrumentation=void 0;var r=e.r(152852);Object.defineProperty(n,"MongooseInstrumentation",{enumerable:!0,get:function(){return r.MongooseInstrumentation}})},780216,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(583049),o=e.r(976285),i=e.r(625331),a="Mongoose",s=i.generateInstrumentOnce(a,()=>new r.MongooseInstrumentation({responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mongoose")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMongoose=s,n.mongooseIntegration=l},286950,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTIONS_USAGE=n.DB_SYSTEM_VALUE_MYSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MYSQL="mysql",n.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},424590,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(n.AttributeNames||(n.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},952519,(e,t,n)=>{"use strict";function r(e){return e?`[${e.toString()}]`:""}Object.defineProperty(n,"__esModule",{value:!0}),n.getPoolNameOld=n.arrayStringifyHelper=n.getSpanName=n.getDbValues=n.getDbQueryText=n.getJDBCString=n.getConfig=void 0,n.getConfig=function(e){let{host:t,port:n,database:r,user:o}=e&&e.connectionConfig||e||{};return{host:t,port:n,database:r,user:o}},n.getJDBCString=function(e,t,n){let r=`jdbc:mysql://${e||"localhost"}`;return"number"==typeof t&&(r+=`:${t}`),"string"==typeof n&&(r+=`/${n}`),r},n.getDbQueryText=function(e){return"string"==typeof e?e:e.sql},n.getDbValues=function(e,t){return"string"==typeof e?r(t):r(t||e.values)},n.getSpanName=function(e){let t="object"==typeof e?e.sql:e,n=t?.indexOf(" ");return"number"==typeof n&&-1!==n?t?.substring(0,n):t},n.arrayStringifyHelper=r,n.getPoolNameOld=function(e){let t=e.config.connectionConfig,n="";return n+=t.host?`host: '${t.host}', `:"",n+=t.port?`port: ${t.port}, `:"",n+=t.database?`database: '${t.database}', `:"",n+=t.user?`user: '${t.user}'`:"",t.user||(n=n.substring(0,n.length-2)),n.trim()}},819437,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},937494,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQLInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(286950),s=e.r(424590),l=e.r(952519),u=e.r(819437);class c extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(a.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(e,t,n){this._connectionsUsageOld?.add(e,{state:n,name:t})}init(){return[new o.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],e=>((0,o.isWrapped)(e.createConnection)&&this._unwrap(e,"createConnection"),this._wrap(e,"createConnection",this._patchCreateConnection()),(0,o.isWrapped)(e.createPool)&&this._unwrap(e,"createPool"),this._wrap(e,"createPool",this._patchCreatePool()),(0,o.isWrapped)(e.createPoolCluster)&&this._unwrap(e,"createPoolCluster"),this._wrap(e,"createPoolCluster",this._patchCreatePoolCluster()),e),e=>{void 0!==e&&(this._unwrap(e,"createConnection"),this._unwrap(e,"createPool"),this._unwrap(e,"createPoolCluster"))})]}_patchCreateConnection(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"query",t._patchQuery(r)),r}}}_patchCreatePool(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"query",t._patchQuery(r)),t._wrap(r,"getConnection",t._patchGetConnection(r)),t._wrap(r,"end",t._patchPoolEnd(r)),t._setPoolCallbacks(r,""),r}}}_patchPoolEnd(e){return t=>{let n=this;return function(r){let o=e._allConnections.length,i=e._freeConnections.length,a=(0,l.getPoolNameOld)(e);n._connCountAdd(-(o-i),a,"used"),n._connCountAdd(-i,a,"idle"),t.apply(e,arguments)}}}_patchCreatePoolCluster(){return e=>{let t=this;return function(n){let r=e(...arguments);return t._wrap(r,"getConnection",t._patchGetConnection(r)),t._wrap(r,"add",t._patchAdd(r)),r}}}_patchAdd(e){return t=>{let n=this;return function(r,o){if(!n._enabled)return n._unwrap(e,"add"),t.apply(e,arguments);t.apply(e,arguments);let i=e._nodes;if(i){let t=i["object"==typeof r?"CLUSTER::"+e._lastId:String(r)].pool;n._setPoolCallbacks(t,r)}}}}_patchGetConnection(e){return t=>{let n=this;return function(r,o,i){if(!n._enabled)return n._unwrap(e,"getConnection"),t.apply(e,arguments);if(1==arguments.length&&"function"==typeof r){let o=n._getConnectionCallbackPatchFn(r);return t.call(e,o)}if(2==arguments.length&&"function"==typeof o){let i=n._getConnectionCallbackPatchFn(o);return t.call(e,r,i)}if(3==arguments.length&&"function"==typeof i){let a=n._getConnectionCallbackPatchFn(i);return t.call(e,r,o,a)}return t.apply(e,arguments)}}}_getConnectionCallbackPatchFn(e){let t=this,n=r.context.active();return function(i,a){a&&!(0,o.isWrapped)(a.query)&&t._wrap(a,"query",t._patchQuery(a)),"function"==typeof e&&r.context.with(n,e,this,i,a)}}_patchQuery(e){return t=>{let n=this;return function(u,c,p){if(!n._enabled)return n._unwrap(e,"query"),t.apply(e,arguments);let _={},{host:T,port:d,database:E,user:S}=(0,l.getConfig)(e.config),A=parseInt(d,10),g=(0,l.getDbQueryText)(u);n._dbSemconvStability&o.SemconvStability.OLD&&(_[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_MYSQL,_[a.ATTR_DB_CONNECTION_STRING]=(0,l.getJDBCString)(T,d,E),_[a.ATTR_DB_NAME]=E,_[a.ATTR_DB_USER]=S,_[a.ATTR_DB_STATEMENT]=g),n._dbSemconvStability&o.SemconvStability.STABLE&&(_[i.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MYSQL,_[i.ATTR_DB_NAMESPACE]=E,_[i.ATTR_DB_QUERY_TEXT]=g),n._netSemconvStability&o.SemconvStability.OLD&&(_[a.ATTR_NET_PEER_NAME]=T,isNaN(A)||(_[a.ATTR_NET_PEER_PORT]=A)),n._netSemconvStability&o.SemconvStability.STABLE&&(_[i.ATTR_SERVER_ADDRESS]=T,isNaN(A)||(_[i.ATTR_SERVER_PORT]=A));let m=n.tracer.startSpan((0,l.getSpanName)(u),{kind:r.SpanKind.CLIENT,attributes:_});if(n.getConfig().enhancedDatabaseReporting){let e;Array.isArray(c)?e=c:arguments[2]&&(e=[c]),m.setAttribute(s.AttributeNames.MYSQL_VALUES,(0,l.getDbValues)(u,e))}let h=Array.from(arguments).findIndex(e=>"function"==typeof e),R=r.context.active();if(-1!==h)return n._wrap(arguments,h,n._patchCallbackQuery(m,R)),r.context.with(r.trace.setSpan(r.context.active(),m),()=>t.apply(e,arguments));{let n=r.context.with(r.trace.setSpan(r.context.active(),m),()=>t.apply(e,arguments));return r.context.bind(R,n),n.on("error",e=>m.setStatus({code:r.SpanStatusCode.ERROR,message:e.message})).on("end",()=>{m.end()})}}}}_patchCallbackQuery(e,t){return n=>function(o,i,a){return o&&e.setStatus({code:r.SpanStatusCode.ERROR,message:o.message}),e.end(),r.context.with(t,()=>n(...arguments))}}_setPoolCallbacks(e,t){let n=t||(0,l.getPoolNameOld)(e);e.on("connection",e=>{this._connCountAdd(1,n,"idle")}),e.on("acquire",e=>{this._connCountAdd(-1,n,"idle"),this._connCountAdd(1,n,"used")}),e.on("release",e=>{this._connCountAdd(1,n,"idle"),this._connCountAdd(-1,n,"used")})}}n.MySQLInstrumentation=c},510039,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQLInstrumentation=void 0;var r=e.r(937494);Object.defineProperty(n,"MySQLInstrumentation",{enumerable:!0,get:function(){return r.MySQLInstrumentation}})},473485,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(510039),o=e.r(976285),i=e.r(625331),a="Mysql",s=i.generateInstrumentOnce(a,()=>new r.MySQLInstrumentation({})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMysql=s,n.mysqlIntegration=l},366020,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_MYSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MYSQL="mysql"},386127,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.addSqlCommenterComment=void 0;let r=e.r(357762),o=e.r(385692);n.addSqlCommenterComment=function(e,t){let n;if("string"!=typeof t||0===t.length||(n=t.indexOf("--"))>=0||!(0>t.indexOf("/*"))&&n{let t=encodeURIComponent(a[e]).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`);return`${e}='${t}'`}).join(",");return`${t} /*${l}*/`}},739749,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getConnectionPrototypeToInstrument=n.once=n.getSpanName=n.getQueryText=n.getConnectionAttributes=void 0;let r=e.r(366020),o=e.r(204780),i=e.r(808119);function a(e){return e.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}n.getConnectionAttributes=function(e,t,n){var a,s,l;let u,{host:c,port:p,database:_,user:T}=function(e){let{host:t,port:n,database:r,user:o}=e&&e.connectionConfig||e||{};return{host:t,port:n,database:r,user:o}}(e),d={};t&o.SemconvStability.OLD&&(d[r.ATTR_DB_CONNECTION_STRING]=(a=c,s=p,l=_,u=`jdbc:mysql://${a||"localhost"}`,"number"==typeof s&&(u+=`:${s}`),"string"==typeof l&&(u+=`/${l}`),u),d[r.ATTR_DB_NAME]=_,d[r.ATTR_DB_USER]=T),t&o.SemconvStability.STABLE&&(d[i.ATTR_DB_NAMESPACE]=_);let E=parseInt(p,10);return n&o.SemconvStability.OLD&&(d[r.ATTR_NET_PEER_NAME]=c,isNaN(E)||(d[r.ATTR_NET_PEER_PORT]=E)),n&o.SemconvStability.STABLE&&(d[i.ATTR_SERVER_ADDRESS]=c,isNaN(E)||(d[i.ATTR_SERVER_PORT]=E)),d},n.getQueryText=function(e,t,n,r=!1,o=a){let[i,s]="string"==typeof e?[e,n]:[e.sql,"values"in e?n||e.values:n];try{if(r)return o(i);if(t&&s)return t(i,s);return i}catch(e){return"Could not determine the query due to an error in masking or formatting"}},n.getSpanName=function(e){let t="object"==typeof e?e.sql:e,n=t?.indexOf(" ");return"number"==typeof n&&-1!==n?t?.substring(0,n):t},n.once=e=>{let t=!1;return(...n)=>{if(!t)return t=!0,e(...n)}},n.getConnectionPrototypeToInstrument=function(e){let t=e.prototype,n=Object.getPrototypeOf(t);return"function"==typeof n?.query&&"function"==typeof n?.execute?n:t}},184863,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},742188,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQL2Instrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(366020),a=e.r(386127),s=e.r(739749),l=e.r(184863),u=e.r(808119),c=[">=1.4.2 <4"];class p extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let e;function t(t){!e&&t.format&&(e=t.format)}let n=t=>{(0,o.isWrapped)(t.query)&&this._unwrap(t,"query"),this._wrap(t,"query",this._patchQuery(e,!1)),(0,o.isWrapped)(t.execute)&&this._unwrap(t,"execute"),this._wrap(t,"execute",this._patchQuery(e,!0))},r=e=>{this._unwrap(e,"query"),this._unwrap(e,"execute")};return[new o.InstrumentationNodeModuleDefinition("mysql2",c,e=>(t(e),e),()=>{},[new o.InstrumentationNodeModuleFile("mysql2/promise.js",c,e=>(t(e),e),()=>{}),new o.InstrumentationNodeModuleFile("mysql2/lib/connection.js",c,e=>(n((0,s.getConnectionPrototypeToInstrument)(e)),e),e=>{void 0===e||r((0,s.getConnectionPrototypeToInstrument)(e))})])]}_patchQuery(e,t){return n=>{let l=this;return function(c,p,_){let T;Array.isArray(p)?T=p:arguments[2]&&(T=[p]);let{maskStatement:d,maskStatementHook:E,responseHook:S}=l.getConfig(),A=(0,s.getConnectionAttributes)(this.config,l._dbSemconvStability,l._netSemconvStability),g=(0,s.getQueryText)(c,e,T,d,E);l._dbSemconvStability&o.SemconvStability.OLD&&(A[i.ATTR_DB_SYSTEM]=i.DB_SYSTEM_VALUE_MYSQL,A[i.ATTR_DB_STATEMENT]=g),l._dbSemconvStability&o.SemconvStability.STABLE&&(A[u.ATTR_DB_SYSTEM_NAME]=u.DB_SYSTEM_NAME_VALUE_MYSQL,A[u.ATTR_DB_QUERY_TEXT]=g);let m=l.tracer.startSpan((0,s.getSpanName)(c),{kind:r.SpanKind.CLIENT,attributes:A});!t&&l.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=c="string"==typeof c?(0,a.addSqlCommenterComment)(m,c):Object.assign(c,{sql:(0,a.addSqlCommenterComment)(m,c.sql)}));let h=(0,s.once)((e,t)=>{e?m.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}):"function"==typeof S&&(0,o.safeExecuteInTheMiddle)(()=>{S(m,{queryResults:t})},e=>{e&&l._diag.warn("Failed executing responseHook",e)},!0),m.end()});if(1==arguments.length){"function"==typeof c.onResult&&l._wrap(c,"onResult",l._patchCallbackQuery(h));let e=n.apply(this,arguments);return e.once("error",e=>{h(e)}).once("result",e=>{h(void 0,e)}),e}return"function"==typeof arguments[1]?l._wrap(arguments,1,l._patchCallbackQuery(h)):"function"==typeof arguments[2]&&l._wrap(arguments,2,l._patchCallbackQuery(h)),n.apply(this,arguments)}}}_patchCallbackQuery(e){return t=>function(n,r,o){return e(n,r),t(...arguments)}}}n.MySQL2Instrumentation=p},623318,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MySQL2Instrumentation=void 0;var r=e.r(742188);Object.defineProperty(n,"MySQL2Instrumentation",{enumerable:!0,get:function(){return r.MySQL2Instrumentation}})},625680,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(623318),o=e.r(976285),i=e.r(625331),a="Mysql2",s=i.generateInstrumentOnce(a,()=>new r.MySQL2Instrumentation({responseHook(e){i.addOriginToSpan(e,"auto.db.otel.mysql2")}})),l=o.defineIntegration(()=>({name:a,setupOnce(){s()}}));n.instrumentMysql2=s,n.mysql2Integration=l},458792,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_REDIS=n.DB_SYSTEM_NAME_VALUE_REDIS=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_REDIS="redis",n.DB_SYSTEM_VALUE_REDIS="redis"},678116,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.endSpan=void 0;let r=e.r(357762);n.endSpan=(e,t)=>{t&&(e.recordException(t),e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message})),e.end()}},744606,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.defaultDbStatementSerializer=void 0;let r=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];n.defaultDbStatementSerializer=(e,t)=>{if(Array.isArray(t)&&t.length){let n=r.find(({regex:t})=>t.test(e))?.args??0,o=n>=0?t.slice(0,n):t;return t.length>o.length&&o.push(`[${t.length-n} other arguments]`),`${e} ${o.join(" ")}`}return e}},983181,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},943579,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.IORedisInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(458792),s=e.r(204780),l=e.r(678116),u=e.r(744606),c=e.r(983181),p={requireParentSpan:!0};class _ extends o.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...p,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,o.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...p,...e})}init(){return[new o.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(e,t)=>{let n="Module"===e[Symbol.toStringTag]?e.default:e;return(0,o.isWrapped)(n.prototype.sendCommand)&&this._unwrap(n.prototype,"sendCommand"),this._wrap(n.prototype,"sendCommand",this._patchSendCommand(t)),(0,o.isWrapped)(n.prototype.connect)&&this._unwrap(n.prototype,"connect"),this._wrap(n.prototype,"connect",this._patchConnection()),e},e=>{if(void 0===e)return;let t="Module"===e[Symbol.toStringTag]?e.default:e;this._unwrap(t.prototype,"sendCommand"),this._unwrap(t.prototype,"connect")})]}_patchSendCommand(e){return t=>this._traceSendCommand(t,e)}_patchConnection(){return e=>this._traceConnection(e)}_traceSendCommand(e,t){let n=this;return function(c){if(arguments.length<1||"object"!=typeof c)return e.apply(this,arguments);let p=n.getConfig(),_=p.dbStatementSerializer||u.defaultDbStatementSerializer,T=void 0===r.trace.getSpan(r.context.active());if(!0===p.requireParentSpan&&T)return e.apply(this,arguments);let d={},{host:E,port:S}=this.options,A=_(c.name,c.args);n._dbSemconvStability&o.SemconvStability.OLD&&(d[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_REDIS,d[a.ATTR_DB_STATEMENT]=A,d[a.ATTR_DB_CONNECTION_STRING]=`redis://${E}:${S}`),n._dbSemconvStability&o.SemconvStability.STABLE&&(d[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_REDIS,d[i.ATTR_DB_QUERY_TEXT]=A),n._netSemconvStability&o.SemconvStability.OLD&&(d[a.ATTR_NET_PEER_NAME]=E,d[a.ATTR_NET_PEER_PORT]=S),n._netSemconvStability&o.SemconvStability.STABLE&&(d[i.ATTR_SERVER_ADDRESS]=E,d[i.ATTR_SERVER_PORT]=S);let g=n.tracer.startSpan(c.name,{kind:r.SpanKind.CLIENT,attributes:d}),{requestHook:m}=p;m&&(0,s.safeExecuteInTheMiddle)(()=>m(g,{moduleVersion:t,cmdName:c.name,cmdArgs:c.args}),e=>{e&&r.diag.error("ioredis instrumentation: request hook failed",e)},!0);try{let t=e.apply(this,arguments),n=c.resolve;c.resolve=function(e){(0,s.safeExecuteInTheMiddle)(()=>p.responseHook?.(g,c.name,c.args,e),e=>{e&&r.diag.error("ioredis instrumentation: response hook failed",e)},!0),(0,l.endSpan)(g,null),n(e)};let o=c.reject;return c.reject=function(e){(0,l.endSpan)(g,e),o(e)},t}catch(e){throw(0,l.endSpan)(g,e),e}}}_traceConnection(e){let t=this;return function(){let n=void 0===r.trace.getSpan(r.context.active());if(!0===t.getConfig().requireParentSpan&&n)return e.apply(this,arguments);let s={},{host:u,port:c}=this.options;t._dbSemconvStability&o.SemconvStability.OLD&&(s[a.ATTR_DB_SYSTEM]=a.DB_SYSTEM_VALUE_REDIS,s[a.ATTR_DB_STATEMENT]="connect",s[a.ATTR_DB_CONNECTION_STRING]=`redis://${u}:${c}`),t._dbSemconvStability&o.SemconvStability.STABLE&&(s[i.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_REDIS,s[i.ATTR_DB_QUERY_TEXT]="connect"),t._netSemconvStability&o.SemconvStability.OLD&&(s[a.ATTR_NET_PEER_NAME]=u,s[a.ATTR_NET_PEER_PORT]=c),t._netSemconvStability&o.SemconvStability.STABLE&&(s[i.ATTR_SERVER_ADDRESS]=u,s[i.ATTR_SERVER_PORT]=c);let p=t.tracer.startSpan("connect",{kind:r.SpanKind.CLIENT,attributes:s});try{let t=e.apply(this,arguments);return(0,l.endSpan)(p,null),t}catch(e){throw(0,l.endSpan)(p,e),e}}}}n.IORedisInstrumentation=_},788406,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.IORedisInstrumentation=void 0;var r=e.r(943579);Object.defineProperty(n,"IORedisInstrumentation",{enumerable:!0,get:function(){return r.IORedisInstrumentation}})},680749,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},324932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getTracedCreateStreamTrace=n.getTracedCreateClient=n.endSpan=void 0;let r=e.r(357762);n.endSpan=(e,t)=>{t&&e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.end()},n.getTracedCreateClient=e=>function(){let t=e.apply(this,arguments);return r.context.bind(r.context.active(),t)},n.getTracedCreateStreamTrace=e=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(e){r.context.bind(r.context.active(),e),this._patched_redis_stream=e}}),e.apply(this,arguments)}},985163,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_REDIS=n.DB_SYSTEM_NAME_VALUE_REDIS=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_CONNECTION_STRING=void 0,n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_NAME_VALUE_REDIS="redis",n.DB_SYSTEM_VALUE_REDIS="redis"},868434,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentationV2_V3=void 0;let r=e.r(204780),o=e.r(324932),i=e.r(680749),a=e.r(357762),s=e.r(808119),l=e.r(985163),u=e.r(744606);class c extends r.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e),this._semconvStability=e.semconvStability?e.semconvStability:(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig(e),this._semconvStability=e.semconvStability?e.semconvStability:(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new r.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],e=>((0,r.isWrapped)(e.RedisClient.prototype.internal_send_command)&&this._unwrap(e.RedisClient.prototype,"internal_send_command"),this._wrap(e.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,r.isWrapped)(e.RedisClient.prototype.create_stream)&&this._unwrap(e.RedisClient.prototype,"create_stream"),this._wrap(e.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,r.isWrapped)(e.createClient)&&this._unwrap(e,"createClient"),this._wrap(e,"createClient",this._getPatchCreateClient()),e),e=>{void 0!==e&&(this._unwrap(e.RedisClient.prototype,"internal_send_command"),this._unwrap(e.RedisClient.prototype,"create_stream"),this._unwrap(e,"createClient"))})]}_getPatchInternalSendCommand(){let e=this;return function(t){return function(n){if(1!=arguments.length||"object"!=typeof n)return t.apply(this,arguments);let i=e.getConfig(),p=void 0===a.trace.getSpan(a.context.active());if(!0===i.requireParentSpan&&p)return t.apply(this,arguments);let _=i?.dbStatementSerializer||u.defaultDbStatementSerializer,T={};e._semconvStability&r.SemconvStability.OLD&&Object.assign(T,{[l.ATTR_DB_SYSTEM]:l.DB_SYSTEM_VALUE_REDIS,[l.ATTR_DB_STATEMENT]:_(n.command,n.args)}),e._semconvStability&r.SemconvStability.STABLE&&Object.assign(T,{[s.ATTR_DB_SYSTEM_NAME]:l.DB_SYSTEM_NAME_VALUE_REDIS,[s.ATTR_DB_OPERATION_NAME]:n.command,[s.ATTR_DB_QUERY_TEXT]:_(n.command,n.args)});let d=e.tracer.startSpan(`${c.COMPONENT}-${n.command}`,{kind:a.SpanKind.CLIENT,attributes:T});if(this.connection_options){let t={};e._semconvStability&r.SemconvStability.OLD&&Object.assign(t,{[l.ATTR_NET_PEER_NAME]:this.connection_options.host,[l.ATTR_NET_PEER_PORT]:this.connection_options.port}),e._semconvStability&r.SemconvStability.STABLE&&Object.assign(t,{[s.ATTR_SERVER_ADDRESS]:this.connection_options.host,[s.ATTR_SERVER_PORT]:this.connection_options.port}),d.setAttributes(t)}this.address&&e._semconvStability&r.SemconvStability.OLD&&d.setAttribute(l.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let E=arguments[0].callback;if(E){let t=a.context.active();arguments[0].callback=function(s,l){if(i?.responseHook){let t=i.responseHook;(0,r.safeExecuteInTheMiddle)(()=>{t(d,n.command,n.args,l)},t=>{t&&e._diag.error("Error executing responseHook",t)},!0)}return(0,o.endSpan)(d,s),a.context.with(t,E,this,...arguments)}}try{return t.apply(this,arguments)}catch(e){throw(0,o.endSpan)(d,e),e}}}}_getPatchCreateClient(){return function(e){return(0,o.getTracedCreateClient)(e)}}_getPatchCreateStream(){return function(e){return(0,o.getTracedCreateStreamTrace)(e)}}}n.RedisInstrumentationV2_V3=c},33280,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getClientAttributes=void 0;let r=e.r(808119),o=e.r(985163),i=e.r(204780);n.getClientAttributes=function(e,t,n){let a={};return n&i.SemconvStability.OLD&&Object.assign(a,{[o.ATTR_DB_SYSTEM]:o.DB_SYSTEM_VALUE_REDIS,[o.ATTR_NET_PEER_NAME]:t?.socket?.host,[o.ATTR_NET_PEER_PORT]:t?.socket?.port,[o.ATTR_DB_CONNECTION_STRING]:function(e,t){if("string"==typeof t&&t)try{let e=new URL(t);return e.searchParams.delete("user_pwd"),e.username="",e.password="",e.href}catch(t){e.error("failed to sanitize redis connection url",t)}}(e,t?.url)}),n&i.SemconvStability.STABLE&&Object.assign(a,{[r.ATTR_DB_SYSTEM_NAME]:o.DB_SYSTEM_NAME_VALUE_REDIS,[r.ATTR_SERVER_ADDRESS]:t?.socket?.host,[r.ATTR_SERVER_PORT]:t?.socket?.port}),a}},130932,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentationV4_V5=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(33280),a=e.r(744606),s=e.r(680749),l=e.r(808119),u=e.r(985163),c=Symbol("opentelemetry.instrumentation.redis.open_spans"),p=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class _ extends o.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(e={}){super(s.PACKAGE_NAME,s.PACKAGE_VERSION,e),this._semconvStability=e.semconvStability?e.semconvStability:(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig(e),this._semconvStability=e.semconvStability?e.semconvStability:(0,o.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(e){let t=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/commander.js`,["^1.0.0"],(e,t)=>{let n=e.transformCommandArguments;if(!n)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),e;let r=t?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,o.isWrapped)(e?.[r])&&this._unwrap(e,r),this._wrap(e,r,this._getPatchExtendWithCommands(n)),e},e=>{(0,o.isWrapped)(e?.extendWithCommands)&&this._unwrap(e,"extendWithCommands"),(0,o.isWrapped)(e?.attachCommands)&&this._unwrap(e,"attachCommands")}),n=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],e=>{let t=e?.default?.prototype;return(0,o.isWrapped)(t?.exec)&&this._unwrap(t,"exec"),this._wrap(t,"exec",this._getPatchMultiCommandsExec(!1)),(0,o.isWrapped)(t?.execAsPipeline)&&this._unwrap(t,"execAsPipeline"),this._wrap(t,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,o.isWrapped)(t?.addCommand)&&this._unwrap(t,"addCommand"),this._wrap(t,"addCommand",this._getPatchMultiCommandsAddCommand()),e},e=>{let t=e?.default?.prototype;(0,o.isWrapped)(t?.exec)&&this._unwrap(t,"exec"),(0,o.isWrapped)(t?.addCommand)&&this._unwrap(t,"addCommand")}),r=new o.InstrumentationNodeModuleFile(`${e}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],e=>{let t=e?.default?.prototype;return t?.multi&&((0,o.isWrapped)(t?.multi)&&this._unwrap(t,"multi"),this._wrap(t,"multi",this._getPatchRedisClientMulti())),t?.MULTI&&((0,o.isWrapped)(t?.MULTI)&&this._unwrap(t,"MULTI"),this._wrap(t,"MULTI",this._getPatchRedisClientMulti())),(0,o.isWrapped)(t?.sendCommand)&&this._unwrap(t,"sendCommand"),this._wrap(t,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(t,"connect",this._getPatchedClientConnect()),e},e=>{let t=e?.default?.prototype;(0,o.isWrapped)(t?.multi)&&this._unwrap(t,"multi"),(0,o.isWrapped)(t?.MULTI)&&this._unwrap(t,"MULTI"),(0,o.isWrapped)(t?.sendCommand)&&this._unwrap(t,"sendCommand")});return new o.InstrumentationNodeModuleDefinition(e,["^1.0.0","^5.0.0"],e=>e,()=>{},[t,n,r])}_getPatchExtendWithCommands(e){let t=this;return function(n){return function(r){if(r?.BaseClass?.name!=="RedisClient")return n.apply(this,arguments);let o=r.executor;return r.executor=function(n,r){let i=e(n,r).args;return t._traceClientCommand(o,this,arguments,i)},n.apply(this,arguments)}}}_getPatchMultiCommandsExec(e){let t=this;return function(n){return function(){let r=n.apply(this,arguments);return"function"!=typeof r?.then?(t._diag.error("non-promise result when patching exec/execAsPipeline"),r):r.then(n=>{let r=this[c];return t._endSpansWithRedisReplies(r,n,e),n}).catch(n=>{let r=this[c];if(r){let o="MultiErrorReply"===n.constructor.name?n.replies:Array(r.length).fill(n);t._endSpansWithRedisReplies(r,o,e)}else t._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(n)})}}}_getPatchMultiCommandsAddCommand(){let e=this;return function(t){return function(n){return e._traceClientCommand(t,this,arguments,n)}}}_getPatchRedisClientMulti(){return function(e){return function(){let t=e.apply(this,arguments);return t[p]=this.options,t}}}_getPatchRedisClientSendCommand(){let e=this;return function(t){return function(n){return e._traceClientCommand(t,this,arguments,n)}}}_getPatchedClientConnect(){let e=this;return function(t){return function(){let n=this.options,o=(0,i.getClientAttributes)(e._diag,n,e._semconvStability),a=e.tracer.startSpan(`${_.COMPONENT}-connect`,{kind:r.SpanKind.CLIENT,attributes:o});return r.context.with(r.trace.setSpan(r.context.active(),a),()=>t.apply(this)).then(e=>(a.end(),e)).catch(e=>(a.recordException(e),a.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),a.end(),Promise.reject(e)))}}}_traceClientCommand(e,t,n,s){if(void 0===r.trace.getSpan(r.context.active())&&this.getConfig().requireParentSpan)return e.apply(t,n);let T=t.options||t[p],d=s[0],E=s.slice(1),S=this.getConfig().dbStatementSerializer||a.defaultDbStatementSerializer,A=(0,i.getClientAttributes)(this._diag,T,this._semconvStability);this._semconvStability&o.SemconvStability.STABLE&&(A[l.ATTR_DB_OPERATION_NAME]=d);try{let e=S(d,E);null!=e&&(this._semconvStability&o.SemconvStability.OLD&&(A[u.ATTR_DB_STATEMENT]=e),this._semconvStability&o.SemconvStability.STABLE&&(A[l.ATTR_DB_QUERY_TEXT]=e))}catch(e){this._diag.error("dbStatementSerializer throw an exception",e,{commandName:d})}let g=this.tracer.startSpan(`${_.COMPONENT}-${d}`,{kind:r.SpanKind.CLIENT,attributes:A}),m=r.context.with(r.trace.setSpan(r.context.active(),g),()=>e.apply(t,n));return"function"==typeof m?.then?m.then(e=>{this._endSpanWithResponse(g,d,E,e,void 0)},e=>{this._endSpanWithResponse(g,d,E,null,e)}):(m[c]=m[c]||[],m[c].push({span:g,commandName:d,commandArgs:E})),m}_endSpansWithRedisReplies(e,t,n=!1){if(!e)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(t.length!==e.length)return this._diag.error("number of multi command spans does not match response from redis");let r=e.map(e=>e.commandName),i=r.every(e=>e===r[0])?(n?"PIPELINE ":"MULTI ")+r[0]:n?"PIPELINE":"MULTI";for(let n=0;n{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentation=void 0;let r=e.r(204780),o=e.r(680749),i=e.r(868434),a=e.r(130932),s={requireParentSpan:!1};class l extends r.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(e={}){const t={...s,...e};super(o.PACKAGE_NAME,o.PACKAGE_VERSION,t),this.instrumentationV2_V3=new i.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new a.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(e={}){let t={...s,...e};super.setConfig(t),this.initialized&&(this.instrumentationV2_V3.setConfig(t),this.instrumentationV4_V5.setConfig(t))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(e){super.setTracerProvider(e),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(e),this.instrumentationV4_V5.setTracerProvider(e))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}n.RedisInstrumentation=l},339097,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.RedisInstrumentation=void 0;var r=e.r(276221);Object.defineProperty(n,"RedisInstrumentation",{enumerable:!0,get:function(){return r.RedisInstrumentation}})},688662,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=["get","set","setex"],o=["get","mget"],i=["set","setex"];function a(e,t){return e.includes(t.toLowerCase())}function s(e){return a(o,e)?"cache.get":a(i,e)?"cache.put":void 0}function l(e){let t=[],n=e=>{e.forEach(e=>{Array.isArray(e)?n(e):t.push(e)})};return n(e),t}n.GET_COMMANDS=o,n.SET_COMMANDS=i,n.calculateCacheItemSize=function(e){let t=e=>{try{if(Buffer.isBuffer(e))return e.byteLength;if("string"==typeof e)return e.length;if("number"==typeof e)return e.toString().length;else if(null==e)return 0;return JSON.stringify(e).length}catch{return}};return Array.isArray(e)?e.reduce((e,n)=>{let r=t(n);return"number"==typeof r?void 0!==e?e+r:r:e},0):t(e)},n.getCacheKeySafely=function(e,t){try{if(0===t.length)return;let n=e=>"string"==typeof e||"number"==typeof e||Buffer.isBuffer(e)?[e.toString()]:Array.isArray(e)?l(e.map(e=>n(e))):[""],o=t[0];if(a(r,e)&&null!=o)return n(o);return l(t.map(e=>n(e)))}catch{return}},n.getCacheOperation=s,n.isInCommands=a,n.shouldConsiderForCache=function(e,t,n){if(!s(e))return!1;for(let e of t)if(function(e,t){return t.some(t=>e.startsWith(t))}(e,n))return!0;return!1}},978486,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(788406),o=e.r(339097),i=e.r(976285),a=e.r(625331),s=e.r(688662),l="Redis";n._redisOptions={};let u=(e,t,r,o)=>{e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let a=s.getCacheKeySafely(t,r),l=s.getCacheOperation(t);if(!a||!l||!n._redisOptions.cachePrefixes||!s.shouldConsiderForCache(t,a,n._redisOptions.cachePrefixes))return;let u=i.spanToJSON(e).data["net.peer.name"],c=i.spanToJSON(e).data["net.peer.port"];c&&u&&e.setAttributes({"network.peer.address":u,"network.peer.port":c});let p=s.calculateCacheItemSize(o);p&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,p),s.isInCommands(s.GET_COMMANDS,t)&&void 0!==p&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_CACHE_HIT,p>0),e.setAttributes({[i.SEMANTIC_ATTRIBUTE_SENTRY_OP]:l,[i.SEMANTIC_ATTRIBUTE_CACHE_KEY]:a});let _=a.join(", ");e.updateName(n._redisOptions.maxCacheKeyLength?i.truncate(_,n._redisOptions.maxCacheKeyLength):_)},c=a.generateInstrumentOnce(`${l}.IORedis`,()=>new r.IORedisInstrumentation({responseHook:u})),p=a.generateInstrumentOnce(`${l}.Redis`,()=>new o.RedisInstrumentation({responseHook:u})),_=Object.assign(()=>{c(),p()},{id:l}),T=i.defineIntegration((e={})=>({name:l,setupOnce(){n._redisOptions=e,_()}}));n.cacheResponseHook=u,n.instrumentRedis=_,n.redisIntegration=T},400893,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EVENT_LISTENERS_SET=void 0,n.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},894105,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).PG_VALUES="db.postgresql.values",r.PG_PLAN="db.postgresql.plan",r.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",r.MAX_CLIENT="db.postgresql.max.client"},184319,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=n.METRIC_DB_CLIENT_CONNECTION_COUNT=n.DB_SYSTEM_VALUE_POSTGRESQL=n.DB_CLIENT_CONNECTION_STATE_VALUE_USED=n.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_NAME=n.ATTR_DB_CONNECTION_STRING=n.ATTR_DB_CLIENT_CONNECTION_STATE=n.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,n.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",n.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",n.ATTR_DB_CONNECTION_STRING="db.connection_string",n.ATTR_DB_NAME="db.name",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",n.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",n.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",n.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",n.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},465522,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.SpanNames=void 0,(r=n.SpanNames||(n.SpanNames={})).QUERY_PREFIX="pg.query",r.CONNECT="pg.connect",r.POOL_CONNECT="pg-pool.connect"},482101,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.sanitizedErrorMessage=n.isObjectWithTextString=n.getErrorMessage=n.patchClientConnectCallback=n.patchCallbackPGPool=n.updateCounter=n.getPoolName=n.patchCallback=n.handleExecutionResult=n.handleConfigQuery=n.shouldSkipInstrumentation=n.getSemanticAttributesFromPoolConnection=n.getSemanticAttributesFromConnection=n.getConnectionString=n.parseAndMaskConnectionString=n.parseNormalizedOperationName=n.getQuerySpanName=void 0;let r=e.r(357762),o=e.r(894105),i=e.r(808119),a=e.r(184319),s=e.r(204780),l=e.r(465522);function u(e,t){if(!t)return l.SpanNames.QUERY_PREFIX;let n="string"==typeof t.name&&t.name?t.name:c(t.text);return`${l.SpanNames.QUERY_PREFIX}:${n}${e?` ${e}`:""}`}function c(e){let t=e.trim(),n=t.indexOf(" "),r=-1===n?t:t.slice(0,n);return(r=r.toUpperCase()).endsWith(";")?r.slice(0,-1):r}function p(e){try{let t=new URL(e);return t.username="",t.password="",t.toString()}catch(e){return"postgresql://localhost:5432/"}}function _(e){if("connectionString"in e&&e.connectionString)return p(e.connectionString);let t=e.host||"localhost",n=e.port||5432,r=e.database||"";return`postgresql://${t}:${n}/${r}`}function T(e){if(Number.isInteger(e))return e}function d(e,t){let n={};return t&s.SemconvStability.OLD&&(n={...n,[a.ATTR_DB_SYSTEM]:a.DB_SYSTEM_VALUE_POSTGRESQL,[a.ATTR_DB_NAME]:e.database,[a.ATTR_DB_CONNECTION_STRING]:_(e),[a.ATTR_DB_USER]:e.user,[a.ATTR_NET_PEER_NAME]:e.host,[a.ATTR_NET_PEER_PORT]:T(e.port)}),t&s.SemconvStability.STABLE&&(n={...n,[i.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[i.ATTR_DB_NAMESPACE]:e.namespace,[i.ATTR_SERVER_ADDRESS]:e.host,[i.ATTR_SERVER_PORT]:T(e.port)}),n}function E(e,t,n){"function"==typeof e.responseHook&&(0,s.safeExecuteInTheMiddle)(()=>{e.responseHook(t,{data:n})},e=>{e&&r.diag.error("Error running response hook",e)},!0)}function S(e){let t=e?.name??"PostgreSQLError",n=e?.code??"UNKNOWN";return`PostgreSQL error of type '${t}' occurred (code: ${n})`}n.getQuerySpanName=u,n.parseNormalizedOperationName=c,n.parseAndMaskConnectionString=p,n.getConnectionString=_,n.getSemanticAttributesFromConnection=d,n.getSemanticAttributesFromPoolConnection=function(e,t){let n;try{n=e.connectionString?new URL(e.connectionString):void 0}catch(e){n=void 0}let r={[o.AttributeNames.IDLE_TIMEOUT_MILLIS]:e.idleTimeoutMillis,[o.AttributeNames.MAX_CLIENT]:e.maxClient};return t&s.SemconvStability.OLD&&(r={...r,[a.ATTR_DB_SYSTEM]:a.DB_SYSTEM_VALUE_POSTGRESQL,[a.ATTR_DB_NAME]:n?.pathname.slice(1)??e.database,[a.ATTR_DB_CONNECTION_STRING]:_(e),[a.ATTR_NET_PEER_NAME]:n?.hostname??e.host,[a.ATTR_NET_PEER_PORT]:Number(n?.port)||T(e.port),[a.ATTR_DB_USER]:n?.username??e.user}),t&s.SemconvStability.STABLE&&(r={...r,[i.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[i.ATTR_DB_NAMESPACE]:e.namespace,[i.ATTR_SERVER_ADDRESS]:n?.hostname??e.host,[i.ATTR_SERVER_PORT]:Number(n?.port)||T(e.port)}),r},n.shouldSkipInstrumentation=function(e){return!0===e.requireParentSpan&&void 0===r.trace.getSpan(r.context.active())},n.handleConfigQuery=function(e,t,n,l){let{connectionParameters:c}=this,p=u(c.database,l),_=e.startSpan(p,{kind:r.SpanKind.CLIENT,attributes:d(c,n)});if(!l)return _;if(l.text&&(n&s.SemconvStability.OLD&&_.setAttribute(a.ATTR_DB_STATEMENT,l.text),n&s.SemconvStability.STABLE&&_.setAttribute(i.ATTR_DB_QUERY_TEXT,l.text)),t.enhancedDatabaseReporting&&Array.isArray(l.values))try{let e=l.values.map(e=>null==e?"null":e instanceof Buffer?e.toString():"object"!=typeof e?e.toString():"function"==typeof e.toPostgres?e.toPostgres():JSON.stringify(e));_.setAttribute(o.AttributeNames.PG_VALUES,e)}catch(e){r.diag.error("failed to stringify ",l.values,e)}return"string"==typeof l.name&&_.setAttribute(o.AttributeNames.PG_PLAN,l.name),_},n.handleExecutionResult=E,n.patchCallback=function(e,t,n,o,a){return function(s,l){s?(Object.prototype.hasOwnProperty.call(s,"code")&&(o[i.ATTR_ERROR_TYPE]=s.code),s instanceof Error&&t.recordException(S(s)),t.setStatus({code:r.SpanStatusCode.ERROR,message:s.message})):E(e,t,l),a(),t.end(),n.call(this,s,l)}},n.getPoolName=function(e){let t="";return(t+=(e?.host?`${e.host}`:"unknown_host")+":"+(e?.port?`${e.port}`:"unknown_port")+"/"+(e?.database?`${e.database}`:"unknown_database")).trim()},n.updateCounter=function(e,t,n,r,o){let i=t.totalCount,s=t.waitingCount,l=t.idleCount,u=i-l;return n.add(u-o.used,{[a.ATTR_DB_CLIENT_CONNECTION_STATE]:a.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),n.add(l-o.idle,{[a.ATTR_DB_CLIENT_CONNECTION_STATE]:a.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),r.add(s-o.pending,{[a.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:e}),{used:u,idle:l,pending:s}},n.patchCallbackPGPool=function(e,t){return function(n,o,i){n&&(n instanceof Error&&e.recordException(S(n)),e.setStatus({code:r.SpanStatusCode.ERROR,message:n.message})),e.end(),t.call(this,n,o,i)}},n.patchClientConnectCallback=function(e,t){return function(n){n&&(n instanceof Error&&e.recordException(S(n)),e.setStatus({code:r.SpanStatusCode.ERROR,message:n.message})),e.end(),t.apply(this,arguments)}},n.getErrorMessage=function(e){return"object"==typeof e&&null!==e&&"message"in e?String(e.message):void 0},n.isObjectWithTextString=function(e){return"object"==typeof e&&"string"==typeof e?.text},n.sanitizedErrorMessage=S},324552,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.66.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},451598,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PgInstrumentation=void 0;let r=e.r(204780),o=e.r(357762),i=e.r(400893),a=e.r(482101),s=e.r(386127),l=e.r(324552),u=e.r(465522),c=e.r(385692),p=e.r(808119),_=e.r(184319);function T(e){return"Module"===e[Symbol.toStringTag]?e.default:e}class d extends r.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(e={}){super(l.PACKAGE_NAME,l.PACKAGE_VERSION,e),this._semconvStability=(0,r.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(p.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:o.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(_.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(_.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let e=[">=8.0.3 <9"],t=new r.InstrumentationNodeModuleFile("pg/lib/native/client.js",e,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),n=new r.InstrumentationNodeModuleFile("pg/lib/client.js",e,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new r.InstrumentationNodeModuleDefinition("pg",e,e=>{let t=T(e);return this._patchPgClient(t.Client),e},e=>{let t=T(e);return this._unpatchPgClient(t.Client),e},[n,t]),new r.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],e=>{let t=T(e);return(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),this._wrap(t.prototype,"connect",this._getPoolConnectPatch()),t},e=>{let t=T(e);(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect")})]}_patchPgClient(e){if(!e)return;let t=T(e);return(0,r.isWrapped)(t.prototype.query)&&this._unwrap(t.prototype,"query"),(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),this._wrap(t.prototype,"query",this._getClientQueryPatch()),this._wrap(t.prototype,"connect",this._getClientConnectPatch()),e}_unpatchPgClient(e){let t=T(e);return(0,r.isWrapped)(t.prototype.query)&&this._unwrap(t.prototype,"query"),(0,r.isWrapped)(t.prototype.connect)&&this._unwrap(t.prototype,"connect"),e}_getClientConnectPatch(){let e=this;return t=>function(n){let r=e.getConfig();if(a.shouldSkipInstrumentation(r)||r.ignoreConnectSpans)return t.call(this,n);let i=e.tracer.startSpan(u.SpanNames.CONNECT,{kind:o.SpanKind.CLIENT,attributes:a.getSemanticAttributesFromConnection(this,e._semconvStability)});if(n){let e=o.trace.getSpan(o.context.active());n=a.patchClientConnectCallback(i,n),e&&(n=o.context.bind(o.context.active(),n))}let s=o.context.with(o.trace.setSpan(o.context.active(),i),()=>t.call(this,n));return E(i,s)}}recordOperationDuration(e,t){let n={},o=[p.ATTR_DB_NAMESPACE,p.ATTR_ERROR_TYPE,p.ATTR_SERVER_PORT,p.ATTR_SERVER_ADDRESS,p.ATTR_DB_OPERATION_NAME];this._semconvStability&r.SemconvStability.OLD&&o.push(_.ATTR_DB_SYSTEM),this._semconvStability&r.SemconvStability.STABLE&&o.push(p.ATTR_DB_SYSTEM_NAME),o.forEach(t=>{t in e&&(n[t]=e[t])});let i=(0,c.hrTimeToMilliseconds)((0,c.hrTimeDuration)(t,(0,c.hrTime)()))/1e3;this._operationDuration.record(i,n)}_getClientQueryPatch(){let e=this;return t=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...n){let i;if(a.shouldSkipInstrumentation(e.getConfig()))return t.apply(this,n);let l=(0,c.hrTime)(),u=n[0],T="string"==typeof u,d=a.isObjectWithTextString(u),E=T?{text:u,values:Array.isArray(n[1])?n[1]:void 0}:d?{...u,name:u.name,text:u.text,values:u.values??(Array.isArray(n[1])?n[1]:void 0)}:void 0,S={[_.ATTR_DB_SYSTEM]:_.DB_SYSTEM_VALUE_POSTGRESQL,[p.ATTR_DB_NAMESPACE]:this.database,[p.ATTR_SERVER_PORT]:this.connectionParameters.port,[p.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};E?.text&&(S[p.ATTR_DB_OPERATION_NAME]=a.parseNormalizedOperationName(E?.text));let A=()=>{e.recordOperationDuration(S,l)},g=e.getConfig(),m=a.handleConfigQuery.call(this,e.tracer,g,e._semconvStability,E);if(g.addSqlCommenterCommentToQueries&&(T?n[0]=(0,s.addSqlCommenterComment)(m,u):!d||"name"in u||(n[0]={...u,text:(0,s.addSqlCommenterComment)(m,u.text)})),n.length>0){let t=o.trace.getSpan(o.context.active());if("function"==typeof n[n.length-1])n[n.length-1]=a.patchCallback(g,m,n[n.length-1],S,A),t&&(n[n.length-1]=o.context.bind(o.context.active(),n[n.length-1]));else if("function"==typeof E?.callback){let r=a.patchCallback(e.getConfig(),m,E.callback,S,A);t&&(r=o.context.bind(o.context.active(),r)),n[0].callback=r}}let{requestHook:h}=g;"function"==typeof h&&E&&(0,r.safeExecuteInTheMiddle)(()=>{let{database:e,host:t,port:n,user:r}=this.connectionParameters;h(m,{connection:{database:e,host:t,port:n,user:r},query:{text:E.text,values:E.values,name:E.name}})},t=>{t&&e._diag.error("Error running query hook",t)},!0);try{i=t.apply(this,n)}catch(e){throw e instanceof Error&&m.recordException(a.sanitizedErrorMessage(e)),m.setStatus({code:o.SpanStatusCode.ERROR,message:a.getErrorMessage(e)}),m.end(),e}return i instanceof Promise?i.then(t=>new Promise(n=>{a.handleExecutionResult(e.getConfig(),m,t),A(),m.end(),n(t)})).catch(e=>new Promise((t,n)=>{e instanceof Error&&m.recordException(a.sanitizedErrorMessage(e)),m.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),A(),m.end(),n(e)})):i})}_setPoolConnectEventListeners(e){if(e[i.EVENT_LISTENERS_SET])return;let t=a.getPoolName(e.options);e.on("connect",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("acquire",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("remove",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e.on("release",()=>{this._connectionsCounter=a.updateCounter(t,e,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),e[i.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let e=this;return t=>function(n){let r=e.getConfig();if(a.shouldSkipInstrumentation(r)||(e._setPoolConnectEventListeners(this),r.ignoreConnectSpans))return t.call(this,n);let i=e.tracer.startSpan(u.SpanNames.POOL_CONNECT,{kind:o.SpanKind.CLIENT,attributes:a.getSemanticAttributesFromPoolConnection(this.options,e._semconvStability)});if(n){let e=o.trace.getSpan(o.context.active());n=a.patchCallbackPGPool(i,n),e&&(n=o.context.bind(o.context.active(),n))}let s=o.context.with(o.trace.setSpan(o.context.active(),i),()=>t.call(this,n));return E(i,s)}}}function E(e,t){return t instanceof Promise?o.context.bind(o.context.active(),t.then(t=>(e.end(),t)).catch(t=>(t instanceof Error&&e.recordException(a.sanitizedErrorMessage(t)),e.setStatus({code:o.SpanStatusCode.ERROR,message:a.getErrorMessage(t)}),e.end(),Promise.reject(t)))):t}n.PgInstrumentation=d},840167,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.PgInstrumentation=void 0;var r=e.r(451598);Object.defineProperty(n,"PgInstrumentation",{enumerable:!0,get:function(){return r.PgInstrumentation}});var o=e.r(894105);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}})},832719,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(840167),o=e.r(976285),i=e.r(625331),a="Postgres",s=i.generateInstrumentOnce(a,r.PgInstrumentation,e=>({requireParentSpan:!0,requestHook(e){i.addOriginToSpan(e,"auto.db.otel.postgres")},ignoreConnectSpans:e?.ignoreConnectSpans??!1})),l=o.defineIntegration(e=>({name:a,setupOnce(){s(e)}}));n.instrumentPostgres=s,n.postgresIntegration=l},19194,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(976285),s=e.r(625331),l=e.r(866779),u="PostgresJs",c=[">=3.0.0 <4"],p=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,_=Symbol.for("sentry.query.from.instrumented.sql"),T=s.generateInstrumentOnce(u,e=>new d({requireParentSpan:e?.requireParentSpan??!0,requestHook:e?.requestHook}));class d extends o.InstrumentationBase{constructor(e){super("sentry-postgres-js",a.SDK_VERSION,e)}init(){let e=new o.InstrumentationNodeModuleDefinition("postgres",c,e=>{try{return this._patchPostgres(e)}catch(t){return l.DEBUG_BUILD&&a.debug.error("Failed to patch postgres module:",t),e}},e=>e);return["src","cf/src","cjs/src"].forEach(t=>{e.files.push(new o.InstrumentationNodeModuleFile(`postgres/${t}/query.js`,c,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),e}_patchPostgres(e){let t="function"==typeof e,n=t?e:e.default;if("function"!=typeof n)return l.DEBUG_BUILD&&a.debug.warn("postgres module does not export a function. Skipping instrumentation."),e;let r=this,o=function(...e){let t=Reflect.construct(n,e);if(!t||"function"!=typeof t)return l.DEBUG_BUILD&&a.debug.warn("postgres() did not return a valid instance"),t;let o=r.getConfig();return a.instrumentPostgresJsSql(t,{requireParentSpan:o.requireParentSpan,requestHook:o.requestHook})};for(let e of(Object.setPrototypeOf(o,n),Object.setPrototypeOf(o.prototype,n.prototype),Object.getOwnPropertyNames(n)))if(!["length","name","prototype"].includes(e)){let t=Object.getOwnPropertyDescriptor(n,e);t&&Object.defineProperty(o,e,t)}return t?o:(a.replaceExports(e,"default",o),e)}_shouldCreateSpans(){let e=this.getConfig();return void 0!==r.trace.getSpan(r.context.active())||!e.requireParentSpan}_setOperationName(e,t,n){if(n)return void e.setAttribute(i.ATTR_DB_OPERATION_NAME,n);let r=t?.match(p);r?.[1]&&e.setAttribute(i.ATTR_DB_OPERATION_NAME,r[1].toUpperCase())}_reconstructQuery(e){if(e?.length)return 1===e.length?e[0]||void 0:e.reduce((e,t,n)=>0===n?t:`${e}$${n}${t}`,"")}_sanitizeSqlQuery(e){return e?e.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{s.addOriginToSpan(r,"auto.db.postgresjs"),r.setAttributes({[i.ATTR_DB_SYSTEM_NAME]:"postgres",[i.ATTR_DB_QUERY_TEXT]:c});let{requestHook:p}=t.getConfig();p&&o.safeExecuteInTheMiddle(()=>p(r,c,void 0),e=>{e&&(r.setAttribute("sentry.hook.error","requestHook failed"),l.DEBUG_BUILD&&a.debug.error(`Error in requestHook for ${u} integration:`,e))},!0);let _=this.resolve;this.resolve=new Proxy(_,{apply:(e,n,o)=>{try{t._setOperationName(r,c,o?.[0]?.command),r.end()}catch(e){l.DEBUG_BUILD&&a.debug.error("Error ending span in resolve callback:",e)}return Reflect.apply(e,n,o)}});let T=this.reject;this.reject=new Proxy(T,{apply:(e,n,o)=>{try{r.setStatus({code:a.SPAN_STATUS_ERROR,message:o?.[0]?.message||"unknown_error"}),r.setAttribute(i.ATTR_DB_RESPONSE_STATUS_CODE,o?.[0]?.code||"unknown"),r.setAttribute(i.ATTR_ERROR_TYPE,o?.[0]?.name||"unknown"),t._setOperationName(r,c),r.end()}catch(e){l.DEBUG_BUILD&&a.debug.error("Error ending span in reject callback:",e)}return Reflect.apply(e,n,o)}});try{return n.apply(this,e)}catch(e){throw r.setStatus({code:a.SPAN_STATUS_ERROR,message:e instanceof Error?e.message:"unknown_error"}),r.end(),e}})},e.Query.prototype.handle.__sentry_original__=n,e}_unpatchQueryPrototype(e){return e.Query.prototype.handle.__sentry_original__&&(e.Query.prototype.handle=e.Query.prototype.handle.__sentry_original__),e}}let E=a.defineIntegration(e=>({name:u,setupOnce(){T(e)}}));n.PostgresJsInstrumentation=d,n.instrumentPostgresJs=T,n.postgresJsIntegration=E},816879,e=>{"use strict";e.s([],712748),e.i(712748);var t,n,r=e.i(545364),o=e.i(605809);let i="object"==typeof globalThis?globalThis:e.g,a=Symbol.for("io.opentelemetry.js.api.logs");class s{emit(e){}}let l=new s,u=new class{getLogger(e,t,n){return new s}};class c{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}emit(e){this._getLogger().emit(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider._getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):l}}class p{getLogger(e,t,n){var r;return null!=(r=this._getDelegateLogger(e,t,n))?r:new c(this,e,t,n)}_getDelegate(){var e;return null!=(e=this._delegate)?e:u}_setDelegate(e){this._delegate=e}_getDelegateLogger(e,t,n){var r;return null==(r=this._delegate)?void 0:r.getLogger(e,t,n)}}class _{constructor(){this._proxyLoggerProvider=new p}static getInstance(){return this._instance||(this._instance=new _),this._instance}setGlobalLoggerProvider(e){return i[a]?this.getLoggerProvider():(i[a]=t=>1===t?e:u,this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,t;return null!=(t=null==(e=i[a])?void 0:e.call(i,1))?t:this._proxyLoggerProvider}getLogger(e,t,n){return this.getLoggerProvider().getLogger(e,t,n)}disable(){delete i[a],this._proxyLoggerProvider=new p}}let T=_.getInstance();function d(e){let t=e.tracerProvider||r.trace.getTracerProvider(),n=e.meterProvider||o.metrics.getMeterProvider(),i=e.loggerProvider||T.getLoggerProvider(),a=e.instrumentations?.flat()??[];for(let e=0,r=a.length;e{a.forEach(e=>e.disable())}}var E=e.i(814747),S=e.i(224361),A=e.i(978116);let g=/^(?:v)?(?(?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-]+)*))?$/,m=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,h={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function R(e,t,n,r){if(t.includes("||")){for(let o of t.trim().split("||"))if(f(e,o,n,r))return!0;return!1}if(t.includes(" - ")){var o,i;o=t,i=r,t=o.replace(x,(e,t,n,r,o,a,s,l,u,c,p,_)=>(t=N(n)?"":N(r)?`>=${n}.0.0${i?.includePrerelease?"-0":""}`:N(o)?`>=${n}.${r}.0${i?.includePrerelease?"-0":""}`:a?`>=${t}`:`>=${t}${i?.includePrerelease?"-0":""}`,l=N(u)?"":N(c)?`<${+u+1}.0.0-0`:N(p)?`<${u}.${+c+1}.0-0`:_?`<=${u}.${c}.${p}-${_}`:i?.includePrerelease?`<${u}.${c}.${+p+1}-0`:`<=${l}`,`${t} ${l}`.trim()))}else if(t.includes(" ")){for(let o of t.trim().replace(/\s{2,}/g," ").split(" "))if(!f(e,o,n,r))return!1;return!0}return f(e,t,n,r)}function f(e,t,n,r){var o,i,a,s,l,u;let c;if((o=t,i=r,t=(l=o=(a=o=o.trim(),s=i,c=s?.includePrerelease?"-0":"",o=a.replace(w,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0${c} <${+t+1}.0.0-0`:N(r)?"0"===t?`>=${t}.${n}.0${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.0${c} <${+t+1}.0.0-0`:o?"0"===t?"0"===n?`>=${t}.${n}.${r}-${o} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r}-${o} <${+t+1}.0.0-0`:"0"===t?"0"===n?`>=${t}.${n}.${r}${c} <${t}.${n}.${+r+1}-0`:`>=${t}.${n}.${r}${c} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${+t+1}.0.0-0`)).replace(V,(e,t,n,r,o)=>N(t)?"":N(n)?`>=${t}.0.0 <${+t+1}.0.0-0`:N(r)?`>=${t}.${n}.0 <${t}.${+n+1}.0-0`:o?`>=${t}.${n}.${r}-${o} <${t}.${+n+1}.0-0`:`>=${t}.${n}.${r} <${t}.${+n+1}.0-0`),u=i,o=l.replace(B,(e,t,n,r,o,i)=>{let a=N(n),s=a||N(r),l=s||N(o);return"="===t&&l&&(t=""),i=u?.includePrerelease?"-0":"",a?e=">"===t||"<"===t?"<0.0.0-0":"*":t&&l?(s&&(r=0),o=0,">"===t?(t=">=",s?(n=+n+1,r=0):r=+r+1,o=0):"<="===t&&(t="<",s?n=+n+1:r=+r+1),"<"===t&&(i="-0"),e=`${t+n}.${r}.${o}${i}`):s?e=`>=${n}.0.0${i} <${+n+1}.0.0-0`:l&&(e=`>=${n}.${r}.0${i} <${n}.${+r+1}.0-0`),e})).trim()).includes(" "))return R(e,t,n,r);{let r=function(e){if(!e)return{};let t=e.match(m);if(!t)return A.diag.error(`Invalid range: ${e}`),{invalid:!0};let n=t.groups.op,r=t.groups.version,o=t.groups.prerelease,i=t.groups.build,a=r.split("."),s=o?.split(".");return"=="===n&&(n="="),{op:n||"=",version:r,versionSegments:a,versionSegmentCount:a.length,prerelease:o,prereleaseSegments:s,prereleaseSegmentCount:s?s.length:0,build:i}}(t);return n.push(r),function(e,t){if(t.invalid)return!1;if(!t.version||I(t.version))return!0;let n=y(e.versionSegments||[],t.versionSegments||[]);if(0===n){let r=e.prereleaseSegments||[],o=t.prereleaseSegments||[];n=r.length||o.length?!r.length&&o.length?1:r.length&&!o.length?-1:y(r,o):0}return h[t.op]?.includes(n)}(e,r)}}function N(e){return!e||"x"===e.toLowerCase()||"*"===e}function I(e){return"*"===e||"x"===e||"X"===e}function O(e){let t=parseInt(e,10);return isNaN(t)?e:t}function y(e,t){for(let n=0;nr?1:n)?=?)\\s*${G}$`),x=RegExp(`^\\s*(${G})\\s+-\\s+(${G})\\s*$`),V=RegExp(`^(?:~>?)${G}$`),w=RegExp(`^(?:\\^)${G}$`),H=console.error.bind(console);function k(e,t,n){let r=!!e[t]&&Object.prototype.propertyIsEnumerable.call(e,t);Object.defineProperty(e,t,{configurable:!0,enumerable:r,writable:!0,value:n})}let Y=(e,t,n)=>{if(!e||!e[t])return void H("no original function "+String(t)+" to wrap");if(!n){H("no wrapper function"),H(Error().stack);return}let r=e[t];if("function"!=typeof r||"function"!=typeof n)return void H("original object and wrapper must be functions");let o=n(r,t);return k(o,"__original",r),k(o,"__unwrap",()=>{e[t]===o&&k(e,t,r)}),k(o,"__wrapped",!0),k(e,t,o),o},j=(e,t,n)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{Y(e,t,n)})}):H("must provide one or more functions to wrap on modules")},F=(e,t)=>{if(!e||!e[t]){H("no function to unwrap."),H(Error().stack);return}let n=e[t];n.__unwrap?n.__unwrap():H("no original to unwrap to -- has "+String(t)+" already been unwrapped?")},W=(e,t)=>{if(e)Array.isArray(e)||(e=[e]);else{H("must provide one or more modules to patch"),H(Error().stack);return}t&&Array.isArray(t)?e.forEach(e=>{t.forEach(t=>{F(e,t)})}):H("must provide one or more functions to unwrap on modules")};function K(e){e&&e.logger&&("function"!=typeof e.logger?H("new logger isn't a function, not replacing"):H=e.logger)}K.wrap=Y,K.massWrap=j,K.unwrap=F,K.massUnwrap=W;class X{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(e,t,n){this.instrumentationName=e,this.instrumentationVersion=t,this.setConfig(n),this._diag=A.diag.createComponentLogger({namespace:e}),this._tracer=r.trace.getTracer(e,t),this._meter=o.metrics.getMeter(e,t),this._logger=T.getLogger(e,t),this._updateMetricInstruments()}_wrap=Y;_unwrap=F;_massWrap=j;_massUnwrap=W;get meter(){return this._meter}setMeterProvider(e){this._meter=e.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(e){this._logger=e.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let e=this.init()??[];return Array.isArray(e)?e:[e]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(e){this._config={enabled:!0,...e}}setTracerProvider(e){this._tracer=e.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(e,t,n,r){if(e)try{e(n,r)}catch(e){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:t},e)}}}var Z=e.i(156823);class J{hooks=[];children=new Map}class ${_trie=new J;_counter=0;insert(e){let t=this._trie;for(let n of e.moduleName.split("/")){let e=t.children.get(n);e||(e=new J,t.children.set(n,e)),t=e}t.hooks.push({hook:e,insertedId:this._counter++})}search(e,{maintainInsertionOrder:t,fullOnly:n}={}){let r=this._trie,o=[],i=!0;for(let t of e.split("/")){let e=r.children.get(t);if(!e){i=!1;break}n||o.push(...e.hooks),r=e}return(n&&i&&o.push(...r.hooks),0===o.length)?[]:1===o.length?[o[0].hook]:(t&&o.sort((e,t)=>e.insertedId-t.insertedId),o.map(({hook:e})=>e))}}let Q=["afterEach","after","beforeEach","before","describe","it"].every(t=>"function"==typeof e.g[t]);class z{_moduleNameTrie=new $;static _instance;constructor(){this._initialize()}_initialize(){new Z.Hook(null,{internals:!0},(e,t,n)=>{var r;let o=(r=t,"/"!==E.sep?r.split(E.sep).join("/"):r);for(let{onRequire:r}of this._moduleNameTrie.search(o,{maintainInsertionOrder:!0,fullOnly:void 0===n}))e=r(e,t,n);return e})}register(e,t){let n={moduleName:e,onRequire:t};return this._moduleNameTrie.insert(n),n}static getInstance(){return Q?new z:this._instance=this._instance??new z}}var q=e.i(74667),ee=e.i(522734);function et(e,t,n){let r,o;try{o=e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}async function en(e,t,n){let r,o;try{o=await e()}catch(e){r=e}finally{if(t(r,o),r&&!n)throw r;return o}}function er(e){return"function"==typeof e&&"function"==typeof e.__original&&"function"==typeof e.__unwrap&&!0===e.__wrapped}class eo extends X{_modules;_hooks=[];_requireInTheMiddleSingleton=z.getInstance();_enabled=!1;constructor(e,t,n){super(e,t,n);let r=this.init();r&&!Array.isArray(r)&&(r=[r]),this._modules=r||[],this._config.enabled&&this.enable()}_wrap=(e,t,n)=>{if(er(e[t])&&this._unwrap(e,t),!S.types.isProxy(e))return Y(e,t,n);{let r=Y(Object.assign({},e),t,n);return Object.defineProperty(e,t,{value:r}),r}};_unwrap=(e,t)=>S.types.isProxy(e)?Object.defineProperty(e,t,{value:e[t]}):F(e,t);_massWrap=(e,t,n)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._wrap(e,t,n)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_massUnwrap=(e,t)=>{e?(Array.isArray(e)||(e=[e]),t&&Array.isArray(t))?e.forEach(e=>{t.forEach(t=>{this._unwrap(e,t)})}):A.diag.error("must provide one or more functions to wrap on modules"):A.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(t=>{let{name:n}=t;try{let t=(()=>{let e=Error("Cannot find module as expression is too dynamic");throw e.code="MODULE_NOT_FOUND",e})();e.c[t]&&this._diag.warn(`Module ${n} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${n}`)}catch{}})}_extractPackageVersion(e){try{let t=(0,ee.readFileSync)(E.join(e,"package.json"),{encoding:"utf8"}),n=JSON.parse(t).version;return"string"==typeof n?n:void 0}catch{A.diag.warn("Failed extracting version",e)}}_onRequire(e,t,n,r){if(!r)return"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:e.name}),e.patch(t)):t;let o=this._extractPackageVersion(r);if(e.moduleVersion=o,e.name===n)return ei(e.supportedVersions,o,e.includePrerelease)&&"function"==typeof e.patch&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:e.name,version:e.moduleVersion,baseDir:r}),e.patch(t,e.moduleVersion)):t;let i=e.files??[],a=E.normalize(n);return i.filter(e=>e.name===a).filter(t=>ei(t.supportedVersions,o,e.includePrerelease)).reduce((t,n)=>(n.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:e.name,version:e.moduleVersion,fileName:n.name,baseDir:r}),n.patch(t,e.moduleVersion)):t,t)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let e of this._modules)for(let t of("function"==typeof e.patch&&e.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:e.name,version:e.moduleVersion}),e.patch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.patch(t.moduleExports,e.moduleVersion));return}for(let e of(this._warnOnPreloadedModules(),this._modules)){let t=(t,n,r)=>{if(!r&&E.isAbsolute(n)){let e=E.parse(n);n=e.name,r=e.dir}return this._onRequire(e,t,n,r)},n=(t,n,r)=>this._onRequire(e,t,n,r),r=E.isAbsolute(e.name)?new Z.Hook([e.name],{internals:!0},n):this._requireInTheMiddleSingleton.register(e.name,n);this._hooks.push(r);let o=new q.Hook([e.name],{internals:!1},t);this._hooks.push(o)}}}disable(){if(this._enabled)for(let e of(this._enabled=!1,this._modules))for(let t of("function"==typeof e.unpatch&&e.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:e.name,version:e.moduleVersion}),e.unpatch(e.moduleExports,e.moduleVersion)),e.files))t.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.unpatch(t.moduleExports,e.moduleVersion))}isEnabled(){return this._enabled}}function ei(e,t,n){return void 0===t?e.includes("*"):e.some(e=>(function(e,t,n){var r,o,i;if(!("string"==typeof(r=e)&&g.test(r)))return A.diag.error(`Invalid version: ${e}`),!1;if(!t)return!0;t=t.replace(/([<>=~^]+)\s+/g,"$1");let a=function(e){let t=e.match(g);if(!t)return void A.diag.error(`Invalid version: ${e}`);let n=t.groups.version,r=t.groups.prerelease,o=t.groups.build,i=n.split("."),a=r?.split(".");return{op:void 0,version:n,versionSegments:i,versionSegmentCount:i.length,prerelease:r,prereleaseSegments:a,prereleaseSegmentCount:a?a.length:0,build:o}}(e);if(!a)return!1;let s=[],l=R(a,t,s,n);return l&&!n?.includePrerelease?(o=a,i=s,!o.prerelease||i.some(e=>e.prerelease&&e.version===o.version)):l})(t,e,{includePrerelease:n}))}class ea{name;supportedVersions;patch;unpatch;files;constructor(e,t,n,r,o){this.name=e,this.supportedVersions=t,this.patch=n,this.unpatch=r,this.files=o||[]}}class es{supportedVersions;patch;unpatch;name;constructor(e,t,n,r){this.supportedVersions=t,this.patch=n,this.unpatch=r,this.name=(0,E.normalize)(e)}}function el(e,t){let r=n.OLD;for(let o of t?.split(",").map(e=>e.trim()).filter(e=>""!==e)??[])if(o.toLowerCase()===e+"/dup"){r=n.DUPLICATE;break}else o.toLowerCase()===e&&(r=n.STABLE);return r}(t=n||(n={}))[t.STABLE=1]="STABLE",t[t.OLD=2]="OLD",t[t.DUPLICATE=3]="DUPLICATE",e.s(["InstrumentationBase",()=>eo,"InstrumentationNodeModuleDefinition",()=>ea,"InstrumentationNodeModuleFile",()=>es,"SemconvStability",()=>n,"isWrapped",()=>er,"registerInstrumentations",()=>d,"safeExecuteInTheMiddle",()=>et,"safeExecuteInTheMiddleAsync",()=>en,"semconvStabilityFromStr",()=>el],816879)},823876,(e,t,n)=>{"use strict";var r=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,s={},l={PrismaInstrumentation:()=>f,registerInstrumentations:()=>N.registerInstrumentations};for(var u in l)r(s,u,{get:l[u],enumerable:!0});t.exports=((e,t,n,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of i(t))a.call(e,l)||l===n||r(e,l,{get:()=>t[l],enumerable:!(s=o(t,l))||s.enumerable});return e})(r({},"__esModule",{value:!0}),s);var c=e.r(357762),p=e.r(816879),_="7.6.0".split(".")[0],T="PRISMA_INSTRUMENTATION",d=`V${_}_PRISMA_INSTRUMENTATION`,E=globalThis,S=e.r(357762),A="true"===process.env.PRISMA_SHOW_ALL_TRACES,g=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:e,ignoreSpanTypes:t}){this.tracerProvider=e,this.ignoreSpanTypes=t}isEnabled(){return!0}getTraceParent(e){let t=S.trace.getSpanContext(e??S.context.active());return t?`00-${t.traceId}-${t.spanId}-0${t.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(e){let t=this.tracerProvider.getTracer("prisma"),n=new Map;for(let r of e.filter(e=>null===e.parentId))!function e(t,n,r,o,i){if(h(n.name,i))return;let a={attributes:n.attributes,kind:"client"===n.kind?S.SpanKind.CLIENT:S.SpanKind.INTERNAL,startTime:n.startTime};t.startActiveSpan(n.name,a,a=>{for(let s of(o.set(n.id,a.spanContext().spanId),n.links&&a.addLinks(n.links.flatMap(e=>{let t=o.get(e);return t?{context:{spanId:t,traceId:a.spanContext().traceId,traceFlags:a.spanContext().traceFlags}}:[]})),r.filter(e=>e.parentId===n.id)))e(t,s,r,o,i);a.end(n.endTime)})}(t,r,e,n,this.ignoreSpanTypes)}getActiveContext(){return S.context.active()}runInChildSpan(e,t){if("string"==typeof e&&(e={name:e}),e.internal&&!A)return t();let n=this.tracerProvider.getTracer("prisma"),r=e.context??this.getActiveContext(),o=`prisma:client:${e.name}`;if(h(o,this.ignoreSpanTypes))return t();if(!1===e.active){let i=n.startSpan(o,e,r);return m(i,t(i,r))}return n.startActiveSpan(o,e,e=>m(e,t(e,r)))}};function m(e,t){var n;return null!=(n=t)&&"function"==typeof n.then?t.then(t=>(e.end(),t),t=>{throw e.end(),t}):(e.end(),t)}function h(e,t){return t.some(t=>"string"==typeof t?t===e:t.test(e))}var R="7.6.0",f=class extends p.InstrumentationBase{tracerProvider;constructor(e={}){super("@prisma/instrumentation",R,e)}setTracerProvider(e){this.tracerProvider=e}init(){return[new p.InstrumentationNodeModuleDefinition("@prisma/client",[R])]}enable(){let e,t=this._config;e={helper:new g({tracerProvider:this.tracerProvider??c.trace.getTracerProvider(),ignoreSpanTypes:t.ignoreSpanTypes??[]})},E[d]=e,E[T]=e}disable(){delete E[d],delete E[T]}isEnabled(){return void 0!==function(){let e=E[d];if(e?.helper)return e.helper;let t=E[T];return t?.helper}()}},N=e.r(816879)},547683,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(823876),i=e.r(976285),a=e.r(625331),s="Prisma";function l(){let e=globalThis.PRISMA_INSTRUMENTATION;return e&&"object"==typeof e&&"helper"in e?e.helper:void 0}class u extends o.PrismaInstrumentation{constructor(e){super(e?.instrumentationConfig)}enable(){super.enable();let e=l();e&&"object"==typeof e&&"dispatchEngineSpans"in e&&(e.createEngineSpan=e=>{let t=r.trace.getTracer("prismaV5Compatibility"),n=t._idGenerator;if(!n)return void i.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{e.spans.forEach(e=>{var o;let i=(o=e.kind,"client"===o?r.SpanKind.CLIENT:r.SpanKind.INTERNAL),a=e.parent_span_id,s=e.span_id,l=e.trace_id,u=e.links?.map(e=>({context:{traceId:e.trace_id,spanId:e.span_id,traceFlags:r.TraceFlags.SAMPLED}})),c=r.trace.setSpanContext(r.context.active(),{traceId:l,spanId:a,traceFlags:r.TraceFlags.SAMPLED});r.context.with(c,()=>{t._idGenerator={generateTraceId:()=>l,generateSpanId:()=>s},t.startSpan(e.name,{kind:i,links:u,startTime:e.start_time,attributes:e.attributes}).end(e.end_time),t._idGenerator=n})})}finally{t._idGenerator=n}})}}let c=a.generateInstrumentOnce(s,e=>new u(e)),p=i.defineIntegration(e=>({name:s,setupOnce(){c(e)},setup(e){l()&&e.on("spanStart",e=>{let t=i.spanToJSON(e);t.description?.startsWith("prisma:")&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===t.description&&t.data["db.query.text"]&&e.updateName(t.data["db.query.text"]),"prisma:engine:db_query"!==t.description||t.data["db.system"]||e.setAttribute("db.system","prisma")})}}));n.instrumentPrisma=c,n.prismaIntegration=p},399189,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.60.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},318837,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HapiLifecycleMethodNames=n.HapiLayerType=n.handlerPatched=n.HapiComponentName=void 0,n.HapiComponentName="@hapi/hapi",n.handlerPatched=Symbol("hapi-handler-patched"),n.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},n.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},808139,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_HTTP_METHOD=void 0,n.ATTR_HTTP_METHOD="http.method"},180434,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).HAPI_TYPE="hapi.type",r.PLUGIN_NAME="hapi.plugin.name",r.EXT_TYPE="server.ext.type"},346711,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getPluginFromInput=n.getExtMetadata=n.getRouteMetadata=n.isPatchableExtMethod=n.isDirectExtInput=n.isLifecycleExtEventObj=n.isLifecycleExtType=n.getPluginName=void 0;let r=e.r(808119),o=e.r(808139),i=e.r(318837),a=e.r(180434),s=e.r(204780);n.getPluginName=function(e){return e.name?e.name:e.pkg.name},n.isLifecycleExtType=e=>"string"==typeof e&&i.HapiLifecycleMethodNames.has(e),n.isLifecycleExtEventObj=e=>{let t=e?.type;return void 0!==t&&(0,n.isLifecycleExtType)(t)},n.isDirectExtInput=e=>Array.isArray(e)&&e.length<=3&&(0,n.isLifecycleExtType)(e[0])&&"function"==typeof e[1],n.isPatchableExtMethod=e=>!Array.isArray(e),n.getRouteMetadata=(e,t,n)=>{let l,u={[r.ATTR_HTTP_ROUTE]:e.path};return t&s.SemconvStability.OLD&&(u[o.ATTR_HTTP_METHOD]=e.method),t&s.SemconvStability.STABLE&&(u[r.ATTR_HTTP_REQUEST_METHOD]=e.method),n?(u[a.AttributeNames.HAPI_TYPE]=i.HapiLayerType.PLUGIN,u[a.AttributeNames.PLUGIN_NAME]=n,l=`${n}: route - ${e.path}`):(u[a.AttributeNames.HAPI_TYPE]=i.HapiLayerType.ROUTER,l=`route - ${e.path}`),{attributes:u,name:l}},n.getExtMetadata=(e,t,n)=>{let r=`ext - ${e}`;return(n&&"method"!==n&&(r=`ext - ${e} - ${n}`),t)?{attributes:{[a.AttributeNames.EXT_TYPE]:e,[a.AttributeNames.HAPI_TYPE]:i.HapiLayerType.EXT,[a.AttributeNames.PLUGIN_NAME]:t},name:`${t}: ${r}`}:{attributes:{[a.AttributeNames.EXT_TYPE]:e,[a.AttributeNames.HAPI_TYPE]:i.HapiLayerType.EXT},name:r}},n.getPluginFromInput=e=>"plugin"in e?"plugin"in e.plugin?e.plugin.plugin:e.plugin:e},345301,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HapiInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(399189),s=e.r(318837),l=e.r(346711);class u extends i.InstrumentationBase{_semconvStability;constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e),this._semconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new i.InstrumentationNodeModuleDefinition(s.HapiComponentName,[">=17.0.0 <22"],e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;return(0,i.isWrapped)(t.server)||this._wrap(t,"server",this._getServerPatch.bind(this)),(0,i.isWrapped)(t.Server)||this._wrap(t,"Server",this._getServerPatch.bind(this)),t},e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;this._massUnwrap([t],["server","Server"])})}_getServerPatch(e){let t=this,n=this;return function(r){let o=e.apply(this,[r]);return n._wrap(o,"route",e=>t._getServerRoutePatch.bind(t)(e)),n._wrap(o,"ext",e=>t._getServerExtPatch.bind(t)(e)),n._wrap(o,"register",t._getServerRegisterPatch.bind(t)),o}}_getServerRegisterPatch(e){let t=this;return function(n,r){if(Array.isArray(n))for(let e of n){let n=(0,l.getPluginFromInput)(e);t._wrapRegisterHandler(n)}else{let e=(0,l.getPluginFromInput)(n);t._wrapRegisterHandler(e)}return e.apply(this,[n,r])}}_getServerExtPatch(e,t){let n=this;return function(...r){if(Array.isArray(r[0])){let e=r[0];for(let r=0;rt._getServerRoutePatch.bind(t)(e,n)),o._wrap(e,"ext",e=>t._getServerExtPatch.bind(t)(e,n)),r.call(this,e,i)}}_wrapExtMethods(e,t,n){let o=this;if(e instanceof Array)for(let n=0;nasync function(...a){if(void 0===r.trace.getSpan(r.context.active()))return await i.call(this,...a);let s=(0,o.getRPCMetadata)(r.context.active());s?.type===o.RPCType.HTTP&&(s.route=e.path);let u=(0,l.getRouteMetadata)(e,n._semconvStability,t),c=n.tracer.startSpan(u.name,{attributes:u.attributes});try{return await r.context.with(r.trace.setSpan(r.context.active(),c),()=>i.call(this,...a))}catch(e){throw c.recordException(e),c.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),e}finally{c.end()}};if("function"==typeof e.handler)e.handler=i(e.handler);else if("function"==typeof e.options){let t=e.options;e.options=function(e){let n=t(e);return"function"==typeof n.handler&&(n.handler=i(n.handler)),n}}else"function"==typeof e.options?.handler&&(e.options.handler=i(e.options.handler));return e}}n.HapiInstrumentation=u},144297,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=n.HapiInstrumentation=void 0;var r=e.r(345301);Object.defineProperty(n,"HapiInstrumentation",{enumerable:!0,get:function(){return r.HapiInstrumentation}});var o=e.r(180434);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}})},376169,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(144297),o=e.r(976285),i=e.r(625331),a=e.r(866779),s="Hapi",l=i.generateInstrumentOnce(s,()=>new r.HapiInstrumentation),u=o.defineIntegration(()=>({name:s,setupOnce(){l()}})),c={name:"SentryHapiErrorPlugin",version:o.SDK_VERSION,register:async function(e){e.events.on({name:"request",channels:["error"]},(e,t)=>{var n;if(o.getIsolationScope()!==o.getDefaultIsolationScope()){let t=e.route;t.path&&o.getIsolationScope().setTransactionName(`${t.method.toUpperCase()} ${t.path}`)}else a.DEBUG_BUILD&&o.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");t&&"object"==typeof t&&"error"in t&&t.error&&(n=t.error,o.captureException(n,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function p(e){await e.register(c);let t=o.getClient();t&&t.on("spanStart",e=>{var t;let n,r;t=e,r=(n=o.spanToJSON(t).data)["hapi.type"],!n[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&r&&t.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${r}.hapi`})}),i.ensureIsWrapped(e.register,"hapi")}n.hapiErrorPlugin=c,n.hapiIntegration=u,n.instrumentHapi=l,n.setupHapiErrorHandler=p},212994,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},n.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},29288,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780),i=e.r(976285),a=e.r(212994);class s extends o.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-hono","0.0.1",e)}init(){return[new o.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],e=>this._patch(e))]}_patch(e){let t=this;class n extends e.Hono{constructor(...e){super(...e),t._wrap(this,"get",t._patchHandler()),t._wrap(this,"post",t._patchHandler()),t._wrap(this,"put",t._patchHandler()),t._wrap(this,"delete",t._patchHandler()),t._wrap(this,"options",t._patchHandler()),t._wrap(this,"patch",t._patchHandler()),t._wrap(this,"all",t._patchHandler()),t._wrap(this,"on",t._patchOnHandler()),t._wrap(this,"use",t._patchMiddlewareHandler())}}try{e.Hono=n}catch{return{...e,Hono:n}}return e}_patchHandler(){let e=this;return function(t){return function(...n){if("string"==typeof n[0]){let r=n[0];if(1===n.length)return t.apply(this,[r]);let o=n.slice(1);return t.apply(this,[r,...o.map(t=>e._wrapHandler(t))])}return t.apply(this,n.map(t=>e._wrapHandler(t)))}}}_patchOnHandler(){let e=this;return function(t){return function(...n){let r=n.slice(2);return t.apply(this,[...n.slice(0,2),...r.map(t=>e._wrapHandler(t))])}}}_patchMiddlewareHandler(){let e=this;return function(t){return function(...n){if("string"==typeof n[0]){let r=n[0];if(1===n.length)return t.apply(this,[r]);let o=n.slice(1);return t.apply(this,[r,...o.map(t=>e._wrapHandler(t))])}return t.apply(this,n.map(t=>e._wrapHandler(t)))}}}_wrapHandler(e){let t=this;return function(n,o){if(!t.isEnabled())return e.apply(this,[n,o]);let s=n.req.path,l=t.tracer.startSpan(s);return r.context.with(r.trace.setSpan(r.context.active(),l),()=>t._safeExecute(()=>{let r=e.apply(this,[n,o]);if(i.isThenable(r))return r.then(n=>{let r=t._determineHandlerType(n);return l.setAttributes({[a.AttributeNames.HONO_TYPE]:r,[a.AttributeNames.HONO_NAME]:r===a.HonoTypes.REQUEST_HANDLER?s:e.name||"anonymous"}),t.getConfig().responseHook?.(l),n});{let n=t._determineHandlerType(r);return l.setAttributes({[a.AttributeNames.HONO_TYPE]:n,[a.AttributeNames.HONO_NAME]:n===a.HonoTypes.REQUEST_HANDLER?s:e.name||"anonymous"}),t.getConfig().responseHook?.(l),r}},()=>l.end(),e=>{t._handleError(l,e),l.end()}))}}_safeExecute(e,t,n){try{let r=e();return i.isThenable(r)?r.then(()=>t(),e=>n(e)):t(),r}catch(e){throw n(e),e}}_determineHandlerType(e){return void 0===e?a.HonoTypes.MIDDLEWARE:a.HonoTypes.REQUEST_HANDLER}_handleError(e,t){t instanceof Error&&(e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),e.recordException(t))}}n.HonoInstrumentation=s},688750,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(625331),a=e.r(866779),s=e.r(212994),l=e.r(29288),u="Hono",c=i.generateInstrumentOnce(u,()=>new l.HonoInstrumentation({responseHook:e=>{!function(e){let t=o.spanToJSON(e).data,n=t[s.AttributeNames.HONO_TYPE];if(t[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.hono`});let i=t[s.AttributeNames.HONO_NAME];if("string"==typeof i&&e.updateName(i),o.getIsolationScope()===o.getDefaultIsolationScope()){a.DEBUG_BUILD&&o.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let l=t[r.ATTR_HTTP_ROUTE],u=t[r.ATTR_HTTP_REQUEST_METHOD];"string"==typeof l&&"string"==typeof u&&o.getIsolationScope().setTransactionName(`${u} ${l}`)}(e)}})),p=o.defineIntegration(()=>({name:u,setupOnce(){c()}}));n.honoIntegration=p,n.instrumentHono=c,n.setupHonoErrorHandler=function(e,t){e.use(async function(e,t){let n=o.httpRequestToRequestData(e.req);o.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:n}),await t()}),e.use(async function(e,n){await n(),(t?.shouldHandleError||function(e){return e.res.status>=500})(e)&&(e.res.sentry=o.captureException(e.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),i.ensureIsWrapped(e.use,"hono")}},476528,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.KoaLayerType=void 0,(r=n.KoaLayerType||(n.KoaLayerType={})).ROUTER="router",r.MIDDLEWARE="middleware"},61353,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.62.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},259134,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).KOA_TYPE="koa.type",r.KOA_NAME="koa.name"},327028,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isLayerIgnored=n.getMiddlewareMetadata=void 0;let r=e.r(476528),o=e.r(259134),i=e.r(808119);n.getMiddlewareMetadata=(e,t,n,a)=>n?{attributes:{[o.AttributeNames.KOA_NAME]:a?.toString(),[o.AttributeNames.KOA_TYPE]:r.KoaLayerType.ROUTER,[i.ATTR_HTTP_ROUTE]:a?.toString()},name:e._matchedRouteName||`router - ${a}`}:{attributes:{[o.AttributeNames.KOA_NAME]:t.name??"middleware",[o.AttributeNames.KOA_TYPE]:r.KoaLayerType.MIDDLEWARE},name:`middleware - ${t.name}`},n.isLayerIgnored=(e,t)=>!!(Array.isArray(t?.ignoreLayersType)&&t?.ignoreLayersType?.includes(e))},780039,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.kLayerPatched=void 0,n.kLayerPatched=Symbol("koa-layer-patched")},166165,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KoaInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(476528),a=e.r(61353),s=e.r(327028),l=e.r(385692),u=e.r(780039);class c extends o.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return new o.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;return null==t?t:((0,o.isWrapped)(t.prototype.use)&&this._unwrap(t.prototype,"use"),this._wrap(t.prototype,"use",this._getKoaUsePatch.bind(this)),e)},e=>{let t="Module"===e[Symbol.toStringTag]?e.default:e;(0,o.isWrapped)(t.prototype.use)&&this._unwrap(t.prototype,"use")})}_getKoaUsePatch(e){let t=this;return function(n){let r;return r=n.router?t._patchRouterDispatch(n):t._patchLayer(n,!1),e.apply(this,[r])}}_patchRouterDispatch(e){r.diag.debug("Patching @koa/router dispatch");let t=e.router;for(let e of t?.stack??[]){let t=e.path,n=e.stack;for(let e=0;e{if(void 0===r.trace.getSpan(r.context.active()))return e(i,u);let c=(0,s.getMiddlewareMetadata)(i,e,t,n),p=this.tracer.startSpan(c.name,{attributes:c.attributes}),_=(0,l.getRPCMetadata)(r.context.active());_?.type===l.RPCType.HTTP&&i._matchedRoute&&(_.route=i._matchedRoute.toString());let{requestHook:T}=this.getConfig();T&&(0,o.safeExecuteInTheMiddle)(()=>T(p,{context:i,middlewareLayer:e,layerType:a}),e=>{e&&r.diag.error("koa instrumentation: request hook failed",e)},!0);let d=r.trace.setSpan(r.context.active(),p);return r.context.with(d,async()=>{try{return await e(i,u)}catch(e){throw p.recordException(e),e}finally{p.end()}})})}}n.KoaInstrumentation=c},891732,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KoaLayerType=n.AttributeNames=n.KoaInstrumentation=void 0;var r=e.r(166165);Object.defineProperty(n,"KoaInstrumentation",{enumerable:!0,get:function(){return r.KoaInstrumentation}});var o=e.r(259134);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}});var i=e.r(476528);Object.defineProperty(n,"KoaLayerType",{enumerable:!0,get:function(){return i.KoaLayerType}})},86294,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(891732),o=e.r(808119),i=e.r(976285),a=e.r(625331),s=e.r(866779),l=a.generateInstrumentOnce("Koa",r.KoaInstrumentation,(e={})=>({ignoreLayersType:e.ignoreLayersType,requestHook(e,t){a.addOriginToSpan(e,"auto.http.otel.koa");let n=i.spanToJSON(e).data,r=n["koa.type"];r&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${r}.koa`);let l=n["koa.name"];if("string"==typeof l&&e.updateName(l||"< unknown >"),i.getIsolationScope()===i.getDefaultIsolationScope()){s.DEBUG_BUILD&&i.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let u=n[o.ATTR_HTTP_ROUTE],c=t.context?.request?.method?.toUpperCase()||"GET";u&&i.getIsolationScope().setTransactionName(`${c} ${u}`)}})),u=i.defineIntegration((e={})=>({name:"Koa",setupOnce(){l(e)}}));n.instrumentKoa=l,n.koaIntegration=u,n.setupKoaErrorHandler=e=>{e.use(async(e,t)=>{try{await t()}catch(e){throw i.captureException(e,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),e}}),a.ensureIsWrapped(e.use,"koa")}},737439,(e,t,n)=>{"use strict";var r,o,i;Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectNames=n.ConnectTypes=n.AttributeNames=void 0,(r=n.AttributeNames||(n.AttributeNames={})).CONNECT_TYPE="connect.type",r.CONNECT_NAME="connect.name",(o=n.ConnectTypes||(n.ConnectTypes={})).MIDDLEWARE="middleware",o.REQUEST_HANDLER="request_handler",(i=n.ConnectNames||(n.ConnectNames={})).MIDDLEWARE="middleware",i.REQUEST_HANDLER="request handler"},927690,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.57.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},783486,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n._LAYERS_STORE_PROPERTY=void 0,n._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},674147,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.generateRoute=n.replaceCurrentStackRoute=n.addNewStackLayer=void 0;let r=e.r(357762),o=e.r(783486);n.addNewStackLayer=e=>{!1===Array.isArray(e[o._LAYERS_STORE_PROPERTY])&&Object.defineProperty(e,o._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),e[o._LAYERS_STORE_PROPERTY].push("/");let t=e[o._LAYERS_STORE_PROPERTY].length;return()=>{t===e[o._LAYERS_STORE_PROPERTY].length?e[o._LAYERS_STORE_PROPERTY].pop():r.diag.warn("Connect: Trying to pop the stack multiple time")}},n.replaceCurrentStackRoute=(e,t)=>{t&&e[o._LAYERS_STORE_PROPERTY].splice(-1,1,t)},n.generateRoute=e=>e[o._LAYERS_STORE_PROPERTY].reduce((e,t)=>e.replace(/\/+$/,"")+t)},683741,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectInstrumentation=n.ANONYMOUS_NAME=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(737439),a=e.r(927690),s=e.r(204780),l=e.r(808119),u=e.r(674147);n.ANONYMOUS_NAME="anonymous";class c extends s.InstrumentationBase{constructor(e={}){super(a.PACKAGE_NAME,a.PACKAGE_VERSION,e)}init(){return[new s.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],e=>this._patchConstructor(e))]}_patchApp(e){(0,s.isWrapped)(e.use)||this._wrap(e,"use",this._patchUse.bind(this)),(0,s.isWrapped)(e.handle)||this._wrap(e,"handle",this._patchHandle.bind(this))}_patchConstructor(e){let t=this;return function(...n){let r=e.apply(this,n);return t._patchApp(r),r}}_patchNext(e,t){return function(n){let r=e.apply(this,[n]);return t(),r}}_startSpan(e,t){let r,o,a;e?(r=i.ConnectTypes.REQUEST_HANDLER,a=i.ConnectNames.REQUEST_HANDLER,o=e):(r=i.ConnectTypes.MIDDLEWARE,a=i.ConnectNames.MIDDLEWARE,o=t.name||n.ANONYMOUS_NAME);let s=`${a} - ${o}`,u={attributes:{[l.ATTR_HTTP_ROUTE]:e.length>0?e:"/",[i.AttributeNames.CONNECT_TYPE]:r,[i.AttributeNames.CONNECT_NAME]:o}};return this.tracer.startSpan(s,u)}_patchMiddleware(e,t){let i=this,a=4===t.length;function s(){if(!i.isEnabled())return t.apply(this,arguments);let[s,l,c]=a?[1,2,3]:[0,1,2],p=arguments[s],_=arguments[l],T=arguments[c];(0,u.replaceCurrentStackRoute)(p,e);let d=(0,o.getRPCMetadata)(r.context.active());e&&d?.type===o.RPCType.HTTP&&(d.route=(0,u.generateRoute)(p));let E="";E=e?`request handler - ${e}`:`middleware - ${t.name||n.ANONYMOUS_NAME}`;let S=i._startSpan(e,t);i._diag.debug("start span",E);let A=!1;function g(){A?i._diag.debug(`span ${S.name} - already finished`):(A=!0,i._diag.debug(`finishing span ${S.name}`),S.end()),_.removeListener("close",g)}return _.addListener("close",g),arguments[c]=i._patchNext(T,g),t.apply(this,arguments)}return Object.defineProperty(s,"length",{value:t.length,writable:!1,configurable:!0}),s}_patchUse(e){let t=this;return function(...n){let r=n[n.length-1],o=n[n.length-2]||"";return n[n.length-1]=t._patchMiddleware(o,r),e.apply(this,n)}}_patchHandle(e){let t=this;return function(){let[n,r]=[0,2],o=arguments[n],i=arguments[r],a=(0,u.addNewStackLayer)(o);return"function"==typeof i&&(arguments[r]=t._patchOut(i,a)),e.apply(this,arguments)}}_patchOut(e,t){return function(...n){return t(),Reflect.apply(e,this,n)}}}n.ConnectInstrumentation=c},13613,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ConnectTypes=n.ConnectNames=n.AttributeNames=n.ANONYMOUS_NAME=n.ConnectInstrumentation=void 0;var r=e.r(683741);Object.defineProperty(n,"ConnectInstrumentation",{enumerable:!0,get:function(){return r.ConnectInstrumentation}}),Object.defineProperty(n,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return r.ANONYMOUS_NAME}});var o=e.r(737439);Object.defineProperty(n,"AttributeNames",{enumerable:!0,get:function(){return o.AttributeNames}}),Object.defineProperty(n,"ConnectNames",{enumerable:!0,get:function(){return o.ConnectNames}}),Object.defineProperty(n,"ConnectTypes",{enumerable:!0,get:function(){return o.ConnectTypes}})},953027,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(13613),o=e.r(976285),i=e.r(625331),a="Connect",s=i.generateInstrumentOnce(a,()=>new r.ConnectInstrumentation);function l(e,t,n,r){o.captureException(e,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),r(e)}n.connectIntegration=o.defineIntegration(()=>({name:a,setupOnce(){s()}})),n.instrumentConnect=s,n.setupConnectErrorHandler=e=>{e.use(l);let t=o.getClient();t&&t.on("spanStart",e=>{!function(e){let t=o.spanToJSON(e).data,n=t["connect.type"];if(t[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!n)return;e.setAttributes({[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${n}.connect`});let r=t["connect.name"];"string"==typeof r&&e.updateName(r)}(e)}),i.ensureIsWrapped(e.use,"connect")}},210033,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.58.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},312058,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SUPPORTED_VERSIONS=n.MODULE_NAME=void 0,n.MODULE_NAME="knex",n.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},77979,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_NAME_VALUE_SQLITE=n.ATTR_NET_TRANSPORT=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_SQL_TABLE=n.ATTR_DB_OPERATION=n.ATTR_DB_NAME=void 0,n.ATTR_DB_NAME="db.name",n.ATTR_DB_OPERATION="db.operation",n.ATTR_DB_SQL_TABLE="db.sql.table",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.ATTR_NET_TRANSPORT="net.transport",n.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},113622,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.extractTableName=n.extractPortFromConnectionString=n.extractHostFromConnectionString=n.extractDatabaseFromConnectionString=n.limitLength=n.getName=n.mapSystem=n.otelExceptionFromKnexError=n.getFormatter=void 0;let r=e.r(808119),o=e.r(77979);n.getFormatter=e=>{if(e){if(e.client){if(e.client._formatQuery)return e.client._formatQuery.bind(e.client);else if(e.client.SqlString)return e.client.SqlString.format.bind(e.client.SqlString)}if(e.builder)return e.builder.toString.bind(e.builder)}return()=>""},n.otelExceptionFromKnexError=function(e,t){return e&&e instanceof Error?{message:t,code:e.code,stack:e.stack,name:e.name}:e};let i=new Map([["sqlite3",o.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",r.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);n.mapSystem=e=>i.get(e)||e,n.getName=(e,t,n)=>t?n?`${t} ${e}.${n}`:`${t} ${e}`:e,n.limitLength=(e,t)=>"string"==typeof e&&"number"==typeof t&&0{if(e)try{return new URL(e).pathname?.replace(/^\//,"")||void 0}catch{return}},n.extractHostFromConnectionString=e=>{if(e)try{return new URL(e).hostname||void 0}catch{return}},n.extractPortFromConnectionString=e=>{if(e)try{let t=new URL(e).port;return t?parseInt(t,10):void 0}catch{return}},n.extractTableName=e=>{let t=e?._single?.table;return"object"==typeof t?(0,n.extractTableName)(t):t}},730413,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KnexInstrumentation=void 0;let r=e.r(357762),o=e.r(210033),i=e.r(312058),a=e.r(204780),s=e.r(113622),l=e.r(808119),u=e.r(77979),c=Symbol("opentelemetry.instrumentation-knex.context"),p={maxQueryLength:1022,requireParentSpan:!1};class _ extends a.InstrumentationBase{_semconvStability;constructor(e={}){super(o.PACKAGE_NAME,o.PACKAGE_VERSION,{...p,...e}),this._semconvStability=(0,a.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...p,...e})}init(){let e=new a.InstrumentationNodeModuleDefinition(i.MODULE_NAME,i.SUPPORTED_VERSIONS);return e.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),e}getRunnerNodeModuleFileInstrumentation(e){return new a.InstrumentationNodeModuleFile(`knex/${e}/runner.js`,i.SUPPORTED_VERSIONS,(e,t)=>(this.ensureWrapped(e.prototype,"query",this.createQueryWrapper(t)),e),(e,t)=>(this._unwrap(e.prototype,"query"),e))}getClientNodeModuleFileInstrumentation(e){return new a.InstrumentationNodeModuleFile(`knex/${e}/client.js`,i.SUPPORTED_VERSIONS,e=>(this.ensureWrapped(e.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(e.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(e.prototype,"raw",this.storeContext.bind(this)),e),e=>(this._unwrap(e.prototype,"queryBuilder"),this._unwrap(e.prototype,"schemaBuilder"),this._unwrap(e.prototype,"raw"),e))}createQueryWrapper(e){let t=this;return function(n){return function(o){let i=this.client.config,p=s.extractTableName(this.builder),_=o?.method,T=i?.connection?.connectionString,d=i?.connection?.filename||i?.connection?.database||s.extractDatabaseFromConnectionString(T),{maxQueryLength:E}=t.getConfig(),S={"knex.version":e},A=i?.connection?.filename===":memory:"?"inproc":void 0;if(t._semconvStability&a.SemconvStability.OLD&&Object.assign(S,{[u.ATTR_DB_SYSTEM]:s.mapSystem(this.client.driverName),[u.ATTR_DB_SQL_TABLE]:p,[u.ATTR_DB_OPERATION]:_,[u.ATTR_DB_USER]:i?.connection?.user,[u.ATTR_DB_NAME]:d,[u.ATTR_NET_PEER_NAME]:i?.connection?.host??s.extractHostFromConnectionString(T),[u.ATTR_NET_PEER_PORT]:i?.connection?.port??s.extractPortFromConnectionString(T),[u.ATTR_NET_TRANSPORT]:A}),t._semconvStability&a.SemconvStability.STABLE&&Object.assign(S,{[l.ATTR_DB_SYSTEM_NAME]:s.mapSystem(this.client.driverName),[l.ATTR_DB_COLLECTION_NAME]:p,[l.ATTR_DB_OPERATION_NAME]:_,[l.ATTR_DB_NAMESPACE]:d,[l.ATTR_SERVER_ADDRESS]:i?.connection?.host??s.extractHostFromConnectionString(T),[l.ATTR_SERVER_PORT]:i?.connection?.port??s.extractPortFromConnectionString(T)}),E){let e=s.limitLength(o?.sql,E);t._semconvStability&a.SemconvStability.STABLE&&(S[l.ATTR_DB_QUERY_TEXT]=e),t._semconvStability&a.SemconvStability.OLD&&(S[u.ATTR_DB_STATEMENT]=e)}let g=this.builder[c]||r.context.active(),m=r.trace.getSpan(g),h=m&&r.trace.isSpanContextValid(m.spanContext());if(t._config.requireParentSpan&&!h)return n.bind(this)(...arguments);let R=t.tracer.startSpan(s.getName(d,_,p),{kind:r.SpanKind.CLIENT,attributes:S},g),f=r.trace.setSpan(r.context.active(),R);return r.context.with(f,n,this,...arguments).then(e=>(R.end(),e)).catch(e=>{let t=s.getFormatter(this)(o.sql,o.bindings||[]),n=e.message.replace(t+" - ",""),i=s.otelExceptionFromKnexError(e,n);throw R.recordException(i),R.setStatus({code:r.SpanStatusCode.ERROR,message:n}),R.end(),e})}}}storeContext(e){return function(){let t=e.apply(this,arguments);return Object.defineProperty(t,c,{value:r.context.active()}),t}}ensureWrapped(e,t,n){(0,a.isWrapped)(e[t])&&this._unwrap(e,t),this._wrap(e,t,n)}}n.KnexInstrumentation=_},618728,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.KnexInstrumentation=void 0;var r=e.r(730413);Object.defineProperty(n,"KnexInstrumentation",{enumerable:!0,get:function(){return r.KnexInstrumentation}})},823099,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(618728),o=e.r(976285),i=e.r(625331),a="Knex",s=i.generateInstrumentOnce(a,()=>new r.KnexInstrumentation({requireParentSpan:!0})),l=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let{data:t}=o.spanToJSON(e);"knex.version"in t&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});n.instrumentKnex=s,n.knexIntegration=l},749620,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DB_SYSTEM_VALUE_MSSQL=n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_DB_USER=n.ATTR_DB_SYSTEM=n.ATTR_DB_STATEMENT=n.ATTR_DB_SQL_TABLE=n.ATTR_DB_NAME=void 0,n.ATTR_DB_NAME="db.name",n.ATTR_DB_SQL_TABLE="db.sql.table",n.ATTR_DB_STATEMENT="db.statement",n.ATTR_DB_SYSTEM="db.system",n.ATTR_DB_USER="db.user",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port",n.DB_SYSTEM_VALUE_MSSQL="mssql"},224620,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.once=n.getSpanName=void 0,n.getSpanName=function(e,t,n,r){return"execBulkLoad"===e&&r&&t?`${e} ${r} ${t}`:"callProcedure"===e?t?`${e} ${n} ${t}`:`${e} ${n}`:t?`${e} ${t}`:`${e}`},n.once=e=>{let t=!1;return(...n)=>{if(!t)return t=!0,e(...n)}}},104038,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.33.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},189155,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TediousInstrumentation=n.INJECTED_CTX=void 0;let r=e.r(357762),o=e.r(427699),i=e.r(204780),a=e.r(808119),s=e.r(749620),l=e.r(224620),u=e.r(104038),c=Symbol("opentelemetry.instrumentation-tedious.current-database");n.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let p=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function _(e){Object.defineProperty(this,c,{value:e,writable:!0})}class T extends i.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(e={}){super(u.PACKAGE_NAME,u.PACKAGE_VERSION,e),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,i.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new i.InstrumentationNodeModuleDefinition(T.COMPONENT,[">=1.11.0 <20"],e=>{let t=e.Connection.prototype;for(let n of p)(0,i.isWrapped)(t[n])&&this._unwrap(t,n),this._wrap(t,n,this._patchQuery(n,e));return(0,i.isWrapped)(t.connect)&&this._unwrap(t,"connect"),this._wrap(t,"connect",this._patchConnect),e},e=>{if(void 0===e)return;let t=e.Connection.prototype;for(let e of p)this._unwrap(t,e);this._unwrap(t,"connect")})]}_patchConnect(e){return function(){return _.call(this,this.config?.options?.database),this.removeListener("databaseChange",_),this.on("databaseChange",_),this.once("end",()=>{this.removeListener("databaseChange",_)}),e.apply(this,arguments)}}_buildTraceparent(e){let t=e.spanContext();return`00-${t.traceId}-${t.spanId}-0${Number(t.traceFlags||r.TraceFlags.NONE).toString(16)}`}_injectContextInfo(e,t,r){return new Promise(o=>{try{let i=new t.Request("set context_info @opentelemetry_traceparent",e=>{o()});Object.defineProperty(i,n.INJECTED_CTX,{value:!0});let a=Buffer.from(r,"utf8");i.addParameter("opentelemetry_traceparent",t.TYPES.VarBinary,a,{length:a.length}),e.execSql(i)}catch{o()}})}_shouldInjectFor(e){return"execSql"===e||"execSqlBatch"===e||"callProcedure"===e||"execute"===e}_patchQuery(e,t){return u=>{let p=this;function _(_){if(_?.[n.INJECTED_CTX])return u.apply(this,arguments);if(!(_ instanceof o.EventEmitter))return p._diag.warn(`Unexpected invocation of patched ${e} method. Span not recorded`),u.apply(this,arguments);let T=0,d=0,E=()=>d++,S=()=>T++,A=this[c],g="sp_prepare"===_.sqlTextOrProcedure&&_.parametersByName?.stmt?.value?_.parametersByName.stmt.value:_.sqlTextOrProcedure,m={};p._dbSemconvStability&i.SemconvStability.OLD&&(m[s.ATTR_DB_SYSTEM]=s.DB_SYSTEM_VALUE_MSSQL,m[s.ATTR_DB_NAME]=A,m[s.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,m[s.ATTR_DB_STATEMENT]=g,m[s.ATTR_DB_SQL_TABLE]=_.table),p._dbSemconvStability&i.SemconvStability.STABLE&&(m[a.ATTR_DB_NAMESPACE]=A,m[a.ATTR_DB_SYSTEM_NAME]=a.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,m[a.ATTR_DB_QUERY_TEXT]=g,m[a.ATTR_DB_COLLECTION_NAME]=_.table),p._netSemconvStability&i.SemconvStability.OLD&&(m[s.ATTR_NET_PEER_NAME]=this.config?.server,m[s.ATTR_NET_PEER_PORT]=this.config?.options?.port),p._netSemconvStability&i.SemconvStability.STABLE&&(m[a.ATTR_SERVER_ADDRESS]=this.config?.server,m[a.ATTR_SERVER_PORT]=this.config?.options?.port);let h=p.tracer.startSpan((0,l.getSpanName)(e,A,g,_.table),{kind:r.SpanKind.CLIENT,attributes:m}),R=(0,l.once)(e=>{_.removeListener("done",E),_.removeListener("doneInProc",E),_.removeListener("doneProc",S),_.removeListener("error",R),this.removeListener("end",R),h.setAttribute("tedious.procedure_count",T),h.setAttribute("tedious.statement_count",d),e&&h.setStatus({code:r.SpanStatusCode.ERROR,message:e.message}),h.end()});_.on("done",E),_.on("doneInProc",E),_.on("doneProc",S),_.once("error",R),this.on("end",R),"function"==typeof _.callback?p._wrap(_,"callback",p._patchCallbackQuery(R)):p._diag.error("Expected request.callback to be a function");let f=()=>r.context.with(r.trace.setSpan(r.context.active(),h),u,this,...arguments);if(!(p.getConfig().enableTraceContextPropagation&&p._shouldInjectFor(e)))return f();let N=p._buildTraceparent(h);p._injectContextInfo(this,t,N).finally(f)}return Object.defineProperty(_,"length",{value:u.length,writable:!1}),_}}_patchCallbackQuery(e){return t=>function(n,r,o){return e(n),t.apply(this,arguments)}}}n.TediousInstrumentation=T},537920,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TediousInstrumentation=void 0;var r=e.r(189155);Object.defineProperty(n,"TediousInstrumentation",{enumerable:!0,get:function(){return r.TediousInstrumentation}})},946603,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(537920),o=e.r(976285),i=e.r(625331),a=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),s="Tedious",l=i.generateInstrumentOnce(s,()=>new r.TediousInstrumentation({})),u=o.defineIntegration(()=>{let e;return{name:s,setupOnce(){let t=l();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let{description:t,data:n}=o.spanToJSON(e);if(!t||"mssql"!==n["db.system"])return;let r=t.split(" ")[0]||"";a.has(r)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});n.instrumentTedious=l,n.tediousIntegration=u},171476,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.57.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},936981,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GenericPoolInstrumentation=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(171476),a="generic-pool";class s extends o.InstrumentationBase{_isDisabled=!1;constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new o.InstrumentationNodeModuleDefinition(a,[">=3.0.0 <4"],e=>{let t=e.Pool;return(0,o.isWrapped)(t.prototype.acquire)&&this._unwrap(t.prototype,"acquire"),this._wrap(t.prototype,"acquire",this._acquirePatcher.bind(this)),e},e=>{let t=e.Pool;return this._unwrap(t.prototype,"acquire"),e}),new o.InstrumentationNodeModuleDefinition(a,[">=2.4.0 <3"],e=>{let t=e.Pool;return(0,o.isWrapped)(t.prototype.acquire)&&this._unwrap(t.prototype,"acquire"),this._wrap(t.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),e},e=>{let t=e.Pool;return this._unwrap(t.prototype,"acquire"),e}),new o.InstrumentationNodeModuleDefinition(a,[">=2.0.0 <2.4"],e=>(this._isDisabled=!1,(0,o.isWrapped)(e.Pool)&&this._unwrap(e,"Pool"),this._wrap(e,"Pool",this._poolWrapper.bind(this)),e),e=>(this._isDisabled=!0,e))]}_acquirePatcher(e){let t=this;return function(...n){let o=r.context.active(),i=t.tracer.startSpan("generic-pool.acquire",{},o);return r.context.with(r.trace.setSpan(o,i),()=>e.call(this,...n).then(e=>(i.end(),e),e=>{throw i.recordException(e),i.end(),e}))}}_poolWrapper(e){let t=this;return function(){let n=e.apply(this,arguments);return t._wrap(n,"acquire",t._acquireWithCallbacksPatcher.bind(t)),n}}_acquireWithCallbacksPatcher(e){let t=this;return function(n,o){if(t._isDisabled)return e.call(this,n,o);let i=r.context.active(),a=t.tracer.startSpan("generic-pool.acquire",{},i);return r.context.with(r.trace.setSpan(i,a),()=>{e.call(this,(e,t)=>{if(a.end(),n)return n(e,t)},o)})}}}n.GenericPoolInstrumentation=s},802638,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GenericPoolInstrumentation=void 0;var r=e.r(936981);Object.defineProperty(n,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return r.GenericPoolInstrumentation}})},979396,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(802638),o=e.r(976285),i=e.r(625331),a="GenericPool",s=i.generateInstrumentOnce(a,()=>new r.GenericPoolInstrumentation({}));n.genericPoolIntegration=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>t.on("spanStart",e=>{let t=o.spanToJSON(e).description;("generic-pool.aquire"===t||"generic-pool.acquire"===t)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),n.instrumentGenericPool=s},624905,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.31.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},56741,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataloaderInstrumentation=void 0;let r=e.r(204780),o=e.r(357762),i=e.r(624905),a="dataloader";function s(e){return"Module"===e[Symbol.toStringTag]?e.default:e}class l extends r.InstrumentationBase{constructor(e={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,e)}init(){return[new r.InstrumentationNodeModuleDefinition(a,[">=2.0.0 <3"],e=>{let t=s(e);return this._patchLoad(t.prototype),this._patchLoadMany(t.prototype),this._patchPrime(t.prototype),this._patchClear(t.prototype),this._patchClearAll(t.prototype),this._getPatchedConstructor(t)},e=>{let t=s(e);["load","loadMany","prime","clear","clearAll"].forEach(e=>{(0,r.isWrapped)(t.prototype[e])&&this._unwrap(t.prototype,e)})})]}shouldCreateSpans(){let e=this.getConfig();return void 0!==o.trace.getSpan(o.context.active())||!e.requireParentSpan}getSpanName(e,t){let n=e.name;return null==n?`${a}.${t}`:`${a}.${t} ${n}`}_wrapBatchLoadFn(e){let t=this;return function(...n){if(!t.isEnabled()||!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"batch"),{links:this._batch?.spanLinks},r);return o.context.with(o.trace.setSpan(r,i),()=>e.apply(this,n).then(e=>(i.end(),e)).catch(e=>{throw i.recordException(e),i.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),i.end(),e}))}}_getPatchedConstructor(e){let t=this,n=e.prototype;if(!t.isEnabled())return e;function o(...n){return"function"==typeof n[0]&&((0,r.isWrapped)(n[0])&&t._unwrap(n,0),n[0]=t._wrapBatchLoadFn(n[0])),e.apply(this,n)}return o.prototype=n,o}_patchLoad(e){(0,r.isWrapped)(e.load)&&this._unwrap(e,"load"),this._wrap(e,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"load"),{kind:o.SpanKind.CLIENT},r);return o.context.with(o.trace.setSpan(r,i),()=>{let t=e.call(this,...n).then(e=>(i.end(),e)).catch(e=>{throw i.recordException(e),i.setStatus({code:o.SpanStatusCode.ERROR,message:e.message}),i.end(),e});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:i.spanContext()})),t})}}_patchLoadMany(e){(0,r.isWrapped)(e.loadMany)&&this._unwrap(e,"loadMany"),this._wrap(e,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"loadMany"),{kind:o.SpanKind.CLIENT},r);return o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n).then(e=>(i.end(),e)))}}_patchPrime(e){(0,r.isWrapped)(e.prime)&&this._unwrap(e,"prime"),this._wrap(e,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"prime"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}_patchClear(e){(0,r.isWrapped)(e.clear)&&this._unwrap(e,"clear"),this._wrap(e,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"clear"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}_patchClearAll(e){(0,r.isWrapped)(e.clearAll)&&this._unwrap(e,"clearAll"),this._wrap(e,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(e){let t=this;return function(...n){if(!t.shouldCreateSpans())return e.call(this,...n);let r=o.context.active(),i=t.tracer.startSpan(t.getSpanName(this,"clearAll"),{kind:o.SpanKind.CLIENT},r),a=o.context.with(o.trace.setSpan(r,i),()=>e.call(this,...n));return i.end(),a}}}n.DataloaderInstrumentation=l},228251,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataloaderInstrumentation=void 0;var r=e.r(56741);Object.defineProperty(n,"DataloaderInstrumentation",{enumerable:!0,get:function(){return r.DataloaderInstrumentation}})},363082,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(228251),o=e.r(976285),i=e.r(625331),a="Dataloader",s=i.generateInstrumentOnce(a,()=>new r.DataloaderInstrumentation({requireParentSpan:!0}));n.dataloaderIntegration=o.defineIntegration(()=>{let e;return{name:a,setupOnce(){let t=s();e=i.instrumentWhenWrapped(t)},setup(t){e?.(()=>{t.on("spanStart",e=>{let t=o.spanToJSON(e);t.description?.startsWith("dataloader")&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===t.description||"dataloader.loadMany"===t.description||"dataloader.batch"===t.description)&&e.setAttribute(o.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),n.instrumentDataloader=s},58684,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_NET_PEER_PORT=n.ATTR_NET_PEER_NAME=n.ATTR_MESSAGING_SYSTEM=n.ATTR_MESSAGING_OPERATION=void 0,n.ATTR_MESSAGING_OPERATION="messaging.operation",n.ATTR_MESSAGING_SYSTEM="messaging.system",n.ATTR_NET_PEER_NAME="net.peer.name",n.ATTR_NET_PEER_PORT="net.peer.port"},980159,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ATTR_MESSAGING_CONVERSATION_ID=n.OLD_ATTR_MESSAGING_MESSAGE_ID=n.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=n.ATTR_MESSAGING_URL=n.ATTR_MESSAGING_PROTOCOL_VERSION=n.ATTR_MESSAGING_PROTOCOL=n.MESSAGING_OPERATION_VALUE_PROCESS=n.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=n.ATTR_MESSAGING_DESTINATION_KIND=n.ATTR_MESSAGING_DESTINATION=void 0,n.ATTR_MESSAGING_DESTINATION="messaging.destination",n.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",n.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",n.MESSAGING_OPERATION_VALUE_PROCESS="process",n.ATTR_MESSAGING_PROTOCOL="messaging.protocol",n.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",n.ATTR_MESSAGING_URL="messaging.url",n.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",n.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",n.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},650834,(e,t,n)=>{"use strict";var r;Object.defineProperty(n,"__esModule",{value:!0}),n.DEFAULT_CONFIG=n.EndOperation=void 0,(r=n.EndOperation||(n.EndOperation={})).AutoAck="auto ack",r.Ack="ack",r.AckAll="ackAll",r.Reject="reject",r.Nack="nack",r.NackAll="nackAll",r.ChannelClosed="channel closed",r.ChannelError="channel error",r.InstrumentationTimeout="instrumentation timeout",n.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},959801,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isConfirmChannelTracing=n.unmarkConfirmChannelTracing=n.markConfirmChannelTracing=n.getConnectionAttributesFromUrl=n.getConnectionAttributesFromServer=n.normalizeExchange=n.CONNECTION_ATTRIBUTES=n.CHANNEL_CONSUME_TIMEOUT_TIMER=n.CHANNEL_SPANS_NOT_ENDED=n.MESSAGE_STORED_SPAN=void 0;let r=e.r(357762),o=e.r(204780),i=e.r(808119),a=e.r(58684),s=e.r(980159);n.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),n.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),n.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),n.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let l=(0,r.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");n.normalizeExchange=e=>""!==e?e:"";let u=(e,t)=>e||("AMQP"===t?5672:5671),c=e=>{let t=e||"amqp";return(t.endsWith(":")?t.substring(0,t.length-1):t).toUpperCase()},p=(e,t,n,o)=>n?{[t]:n}:(r.diag.error(`amqplib instrumentation: could not extract connection attribute ${o} from user supplied url`,{url:e}),{});n.getConnectionAttributesFromServer=e=>{let t=e.serverProperties.product?.toLowerCase?.();return t?{[a.ATTR_MESSAGING_SYSTEM]:t}:{}},n.getConnectionAttributesFromUrl=(e,t)=>{let n={[s.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(e=e||"amqp://localhost")){let r=e,l=c(r?.protocol);Object.assign(n,{...p(e,s.ATTR_MESSAGING_PROTOCOL,l,"protocol")});let _=r?.hostname||"localhost";t&o.SemconvStability.OLD&&Object.assign(n,{...p(e,a.ATTR_NET_PEER_NAME,_,"hostname")}),t&o.SemconvStability.STABLE&&Object.assign(n,{...p(e,i.ATTR_SERVER_ADDRESS,_,"hostname")});let T=u(r.port,l);t&o.SemconvStability.OLD&&Object.assign(n,p(e,a.ATTR_NET_PEER_PORT,T,"port")),t&o.SemconvStability.STABLE&&Object.assign(n,p(e,i.ATTR_SERVER_PORT,T,"port"))}else{let l=e.replace(/:[^:@/]*@/,":***@");n[s.ATTR_MESSAGING_URL]=l;try{let e=new URL(l),r=c(e.protocol);Object.assign(n,{...p(l,s.ATTR_MESSAGING_PROTOCOL,r,"protocol")});let _=e.hostname||"localhost";t&o.SemconvStability.OLD&&Object.assign(n,{...p(l,a.ATTR_NET_PEER_NAME,_,"hostname")}),t&o.SemconvStability.STABLE&&Object.assign(n,{...p(l,i.ATTR_SERVER_ADDRESS,_,"hostname")});let T=u(e.port?parseInt(e.port):void 0,r);t&o.SemconvStability.OLD&&Object.assign(n,p(l,a.ATTR_NET_PEER_PORT,T,"port")),t&o.SemconvStability.STABLE&&Object.assign(n,p(l,i.ATTR_SERVER_PORT,T,"port"))}catch(e){r.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:l,err:e})}}return n},n.markConfirmChannelTracing=e=>e.setValue(l,!0),n.unmarkConfirmChannelTracing=e=>e.deleteValue(l),n.isConfirmChannelTracing=e=>!0===e.getValue(l)},36349,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PACKAGE_NAME=n.PACKAGE_VERSION=void 0,n.PACKAGE_VERSION="0.61.0",n.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},826845,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AmqplibInstrumentation=void 0;let r=e.r(357762),o=e.r(385692),i=e.r(204780),a=e.r(58684),s=e.r(980159),l=e.r(650834),u=e.r(959801),c=e.r(36349),p=[">=0.5.5 <1"];class _ extends i.InstrumentationBase{_netSemconvStability;constructor(e={}){super(c.PACKAGE_NAME,c.PACKAGE_VERSION,{...l.DEFAULT_CONFIG,...e}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(e={}){super.setConfig({...l.DEFAULT_CONFIG,...e})}init(){let e=new i.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",p,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),t=new i.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",p,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),n=new i.InstrumentationNodeModuleFile("amqplib/lib/connect.js",p,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new i.InstrumentationNodeModuleDefinition("amqplib",p,void 0,void 0,[e,n,t])}patchConnect(e){return e=this.unpatchConnect(e),(0,i.isWrapped)(e.connect)||this._wrap(e,"connect",this.getConnectPatch.bind(this)),e}unpatchConnect(e){return(0,i.isWrapped)(e.connect)&&this._unwrap(e,"connect"),e}patchChannelModel(e,t){return(0,i.isWrapped)(e.Channel.prototype.publish)||this._wrap(e.Channel.prototype,"publish",this.getPublishPatch.bind(this,t)),(0,i.isWrapped)(e.Channel.prototype.consume)||this._wrap(e.Channel.prototype,"consume",this.getConsumePatch.bind(this,t)),(0,i.isWrapped)(e.Channel.prototype.ack)||this._wrap(e.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,l.EndOperation.Ack)),(0,i.isWrapped)(e.Channel.prototype.nack)||this._wrap(e.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,l.EndOperation.Nack)),(0,i.isWrapped)(e.Channel.prototype.reject)||this._wrap(e.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,l.EndOperation.Reject)),(0,i.isWrapped)(e.Channel.prototype.ackAll)||this._wrap(e.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,l.EndOperation.AckAll)),(0,i.isWrapped)(e.Channel.prototype.nackAll)||this._wrap(e.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,l.EndOperation.NackAll)),(0,i.isWrapped)(e.Channel.prototype.emit)||this._wrap(e.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,i.isWrapped)(e.ConfirmChannel.prototype.publish)||this._wrap(e.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,t)),e}unpatchChannelModel(e){return(0,i.isWrapped)(e.Channel.prototype.publish)&&this._unwrap(e.Channel.prototype,"publish"),(0,i.isWrapped)(e.Channel.prototype.consume)&&this._unwrap(e.Channel.prototype,"consume"),(0,i.isWrapped)(e.Channel.prototype.ack)&&this._unwrap(e.Channel.prototype,"ack"),(0,i.isWrapped)(e.Channel.prototype.nack)&&this._unwrap(e.Channel.prototype,"nack"),(0,i.isWrapped)(e.Channel.prototype.reject)&&this._unwrap(e.Channel.prototype,"reject"),(0,i.isWrapped)(e.Channel.prototype.ackAll)&&this._unwrap(e.Channel.prototype,"ackAll"),(0,i.isWrapped)(e.Channel.prototype.nackAll)&&this._unwrap(e.Channel.prototype,"nackAll"),(0,i.isWrapped)(e.Channel.prototype.emit)&&this._unwrap(e.Channel.prototype,"emit"),(0,i.isWrapped)(e.ConfirmChannel.prototype.publish)&&this._unwrap(e.ConfirmChannel.prototype,"publish"),e}getConnectPatch(e){let t=this;return function(n,r,o){return e.call(this,n,r,function(e,r){if(null==e){let e=(0,u.getConnectionAttributesFromUrl)(n,t._netSemconvStability),o=(0,u.getConnectionAttributesFromServer)(r);r[u.CONNECTION_ATTRIBUTES]={...e,...o}}o.apply(this,arguments)})}}getChannelEmitPatch(e){let t=this;return function(n){if("close"===n){t.endAllSpansOnChannel(this,!0,l.EndOperation.ChannelClosed,void 0);let e=this[u.CHANNEL_CONSUME_TIMEOUT_TIMER];e&&clearInterval(e),this[u.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===n&&t.endAllSpansOnChannel(this,!0,l.EndOperation.ChannelError,void 0);return e.apply(this,arguments)}}getAckAllPatch(e,t,n){let r=this;return function(o){return r.endAllSpansOnChannel(this,e,t,o),n.apply(this,arguments)}}getAckPatch(e,t,n){let r=this;return function(o,i,a){let s=t===l.EndOperation.Reject?i:a,c=this[u.CHANNEL_SPANS_NOT_ENDED]??[],p=c.findIndex(e=>e.msg===o);if(p<0)r.endConsumerSpan(o,e,t,s);else if(t!==l.EndOperation.Reject&&i){for(let n=0;n<=p;n++)r.endConsumerSpan(c[n].msg,e,t,s);c.splice(0,p+1)}else r.endConsumerSpan(o,e,t,s),c.splice(p,1);return n.apply(this,arguments)}}getConsumePatch(e,t){let n=this;return function(c,p,_){let T=this;if(!Object.prototype.hasOwnProperty.call(T,u.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:e}=n.getConfig();if(e){let t=setInterval(()=>{n.checkConsumeTimeoutOnChannel(T)},e);t.unref(),T[u.CHANNEL_CONSUME_TIMEOUT_TIMER]=t}T[u.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(t){let d;if(!t)return p.call(this,t);let E=t.properties.headers??{},S=r.propagation.extract(r.ROOT_CONTEXT,E),A=t.fields?.exchange;if(n._config.useLinksForConsume){let e=S?r.trace.getSpan(S)?.spanContext():void 0;S=void 0,e&&(d=[{context:e}])}let g=n.tracer.startSpan(`${c} process`,{kind:r.SpanKind.CONSUMER,attributes:{...T?.connection?.[u.CONNECTION_ATTRIBUTES],[s.ATTR_MESSAGING_DESTINATION]:A,[s.ATTR_MESSAGING_DESTINATION_KIND]:s.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[s.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:t.fields?.routingKey,[a.ATTR_MESSAGING_OPERATION]:s.MESSAGING_OPERATION_VALUE_PROCESS,[s.OLD_ATTR_MESSAGING_MESSAGE_ID]:t?.properties.messageId,[s.ATTR_MESSAGING_CONVERSATION_ID]:t?.properties.correlationId},links:d},S),{consumeHook:m}=n.getConfig();m&&(0,i.safeExecuteInTheMiddle)(()=>m(g,{moduleVersion:e,msg:t}),e=>{e&&r.diag.error("amqplib instrumentation: consumerHook error",e)},!0),_?.noAck||(T[u.CHANNEL_SPANS_NOT_ENDED].push({msg:t,timeOfConsume:(0,o.hrTime)()}),t[u.MESSAGE_STORED_SPAN]=g);let h=S||r.ROOT_CONTEXT;r.context.with(r.trace.setSpan(h,g),()=>{p.call(this,t)}),_?.noAck&&(n.callConsumeEndHook(g,t,!1,l.EndOperation.AutoAck),g.end())},t.apply(this,arguments)}}getConfirmedPublishPatch(e,t){let n=this;return function(o,a,s,l,c){let{span:p,modifiedOptions:_}=n.createPublishSpan(n,o,a,this,l),{publishHook:T}=n.getConfig();T&&(0,i.safeExecuteInTheMiddle)(()=>T(p,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:_,isConfirmChannel:!0}),e=>{e&&r.diag.error("amqplib instrumentation: publishHook error",e)},!0);let d=(0,u.markConfirmChannelTracing)(r.context.active()),E=[...arguments];return E[3]=_,E[4]=r.context.bind((0,u.unmarkConfirmChannelTracing)(r.trace.setSpan(d,p)),function(t,u){try{c?.call(this,t,u)}finally{let{publishConfirmHook:u}=n.getConfig();u&&(0,i.safeExecuteInTheMiddle)(()=>u(p,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:l,isConfirmChannel:!0,confirmError:t}),e=>{e&&r.diag.error("amqplib instrumentation: publishConfirmHook error",e)},!0),t&&p.setStatus({code:r.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),p.end()}}),r.context.with(d,t.bind(this,...E))}}getPublishPatch(e,t){let n=this;return function(o,a,s,l){if((0,u.isConfirmChannelTracing)(r.context.active()))return t.apply(this,arguments);{let{span:u,modifiedOptions:c}=n.createPublishSpan(n,o,a,this,l),{publishHook:p}=n.getConfig();p&&(0,i.safeExecuteInTheMiddle)(()=>p(u,{moduleVersion:e,exchange:o,routingKey:a,content:s,options:c,isConfirmChannel:!1}),e=>{e&&r.diag.error("amqplib instrumentation: publishHook error",e)},!0);let _=[...arguments];_[3]=c;let T=t.apply(this,_);return u.end(),T}}}createPublishSpan(e,t,n,o,i){let a=(0,u.normalizeExchange)(t),l=e.tracer.startSpan(`publish ${a}`,{kind:r.SpanKind.PRODUCER,attributes:{...o.connection[u.CONNECTION_ATTRIBUTES],[s.ATTR_MESSAGING_DESTINATION]:t,[s.ATTR_MESSAGING_DESTINATION_KIND]:s.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[s.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:n,[s.OLD_ATTR_MESSAGING_MESSAGE_ID]:i?.messageId,[s.ATTR_MESSAGING_CONVERSATION_ID]:i?.correlationId}}),c=i??{};return c.headers=c.headers??{},r.propagation.inject(r.trace.setSpan(r.context.active(),l),c.headers),{span:l,modifiedOptions:c}}endConsumerSpan(e,t,n,o){let i=e[u.MESSAGE_STORED_SPAN];i&&(!1!==t&&i.setStatus({code:r.SpanStatusCode.ERROR,message:n!==l.EndOperation.ChannelClosed&&n!==l.EndOperation.ChannelError?`${n} called on message${!0===o?" with requeue":!1===o?" without requeue":""}`:n}),this.callConsumeEndHook(i,e,t,n),i.end(),e[u.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(e,t,n,r){(e[u.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(e=>{this.endConsumerSpan(e.msg,t,n,r)}),e[u.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(e,t,n,o){let{consumeEndHook:a}=this.getConfig();a&&(0,i.safeExecuteInTheMiddle)(()=>a(e,{msg:t,rejected:n,endOperation:o}),e=>{e&&r.diag.error("amqplib instrumentation: consumerEndHook error",e)},!0)}checkConsumeTimeoutOnChannel(e){let t,n=(0,o.hrTime)(),r=e[u.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:i}=this.getConfig();for(t=0;t{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.EndOperation=n.DEFAULT_CONFIG=n.AmqplibInstrumentation=void 0;var r=e.r(826845);Object.defineProperty(n,"AmqplibInstrumentation",{enumerable:!0,get:function(){return r.AmqplibInstrumentation}});var o=e.r(650834);Object.defineProperty(n,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return o.DEFAULT_CONFIG}}),Object.defineProperty(n,"EndOperation",{enumerable:!0,get:function(){return o.EndOperation}})},855902,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(908157),o=e.r(976285),i=e.r(625331),a="Amqplib",s={consumeEndHook:e=>{i.addOriginToSpan(e,"auto.amqplib.otel.consumer")},publishHook:e=>{i.addOriginToSpan(e,"auto.amqplib.otel.publisher")}},l=i.generateInstrumentOnce(a,()=>new r.AmqplibInstrumentation(s));n.amqplibIntegration=o.defineIntegration(()=>({name:a,setupOnce(){l()}})),n.instrumentAmqplib=l},197696,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.INTEGRATION_NAME="VercelAI"},696887,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(197696),a=[">=3.0.0 <7"],s=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function l(e){"object"==typeof e&&null!==e&&"content"in e&&Array.isArray(e.content)&&(function(e){for(let t of e){if(!("object"==typeof t&&null!==t&&"type"in t&&"error"in t&&"toolName"in t&&"toolCallId"in t&&"tool-error"===t.type&&t.error instanceof Error))continue;let e=o._INTERNAL_getSpanContextForToolCallId(t.toolCallId);e?o.withScope(n=>{n.setContext("trace",{trace_id:e.traceId,span_id:e.spanId}),n.setTag("vercel.ai.tool.name",t.toolName),n.setTag("vercel.ai.tool.callId",t.toolCallId),n.setLevel("error"),o.captureException(t.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):o.withScope(e=>{e.setTag("vercel.ai.tool.name",t.toolName),e.setTag("vercel.ai.tool.callId",t.toolCallId),e.setLevel("error"),o.captureException(t.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(e.content),u(e.content))}function u(e){for(let t of e)"object"==typeof t&&null!==t&&"toolCallId"in t&&"string"==typeof t.toolCallId&&o._INTERNAL_cleanupToolCallSpanContext(t.toolCallId)}function c(e,t,n,r){return{recordInputs:e?.recordInputs!==void 0?e.recordInputs:void 0!==t.recordInputs?t.recordInputs:!0===n||r,recordOutputs:e?.recordOutputs!==void 0?e.recordOutputs:void 0!==t.recordOutputs?t.recordOutputs:!0===n||r}}class p extends r.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(e={}){super("@sentry/instrumentation-vercel-ai",o.SDK_VERSION,e),p.prototype.__init.call(this),p.prototype.__init2.call(this)}init(){return new r.InstrumentationNodeModuleDefinition("ai",a,this._patch.bind(this))}callWhenPatched(e){this._isPatched?e():this._callbacks.push(e)}_patch(e){this._isPatched=!0,this._callbacks.forEach(e=>e()),this._callbacks=[];let t=e=>new Proxy(e,{apply:(e,t,n)=>{let r=n[0].experimental_telemetry||{},a=r.isEnabled,s=o.getClient(),u=s?.getIntegrationByName(i.INTEGRATION_NAME),{recordInputs:p,recordOutputs:_}=c(u?.options,r,a,!!u&&!!s?.getOptions().sendDefaultPii);return n[0].experimental_telemetry={...r,isEnabled:void 0===a||a,recordInputs:p,recordOutputs:_},o.handleCallbackErrors(()=>Reflect.apply(e,t,n),e=>{e&&"object"==typeof e&&o.addNonEnumerableProperty(e,"_sentry_active_span",o.getActiveSpan())},()=>{},e=>{l(e)})}});if("[object Module]"===Object.prototype.toString.call(e)){for(let n of s)null!=e[n]&&(e[n]=t(e[n]));return e}{let n=s.reduce((n,r)=>(null!=e[r]&&(n[r]=t(e[r])),n),{});return{...e,...n}}}}n.SentryVercelAiInstrumentation=p,n.cleanupToolCallSpanContexts=u,n.determineRecordingSettings=c,n.processToolCallResults=l},834440,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(197696),a=e.r(696887),s=o.generateInstrumentOnce(i.INTEGRATION_NAME,()=>new a.SentryVercelAiInstrumentation({})),l=r.defineIntegration((e={})=>{let t;return{name:i.INTEGRATION_NAME,options:e,setupOnce(){t=s()},afterAllSetup(n){let o;e.force??(o=n.getIntegrationByName("Modules"),!!o?.getModules?.()?.ai)?r.addVercelAiProcessors(n):t?.callWhenPatched(()=>r.addVercelAiProcessors(n))}}});n.instrumentVercelAi=s,n.vercelAIIntegration=l},116769,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=4.0.0 <7"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-openai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("openai",i,this._patch.bind(this))}_patch(e){let t=e;return t=this._patchClient(t,"OpenAI"),t=this._patchClient(t,"AzureOpenAI")}_patchClient(e,t){let n=e[t];if(!n)return e;let r=this.getConfig(),i=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.OPENAI_INTEGRATION_NAME))return Reflect.construct(n,e);let t=Reflect.construct(n,e);return o.instrumentOpenAiClient(t,r)};for(let e of(Object.setPrototypeOf(i,n),Object.setPrototypeOf(i.prototype,n.prototype),Object.getOwnPropertyNames(n)))if(!["length","name","prototype"].includes(e)){let t=Object.getOwnPropertyDescriptor(n,e);t&&Object.defineProperty(i,e,t)}try{e[t]=i}catch{Object.defineProperty(e,t,{value:i,writable:!0,configurable:!0,enumerable:!0})}if(e.default===n)try{e.default=i}catch{Object.defineProperty(e,"default",{value:i,writable:!0,configurable:!0,enumerable:!0})}return e}}n.SentryOpenAiInstrumentation=a},758158,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(116769),a=o.generateInstrumentOnce(r.OPENAI_INTEGRATION_NAME,e=>new i.SentryOpenAiInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.OPENAI_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentOpenAi=a,n.openAIIntegration=s},654826,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.19.2 <1.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-anthropic-ai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",i,this._patch.bind(this))}_patch(e){let t=e.Anthropic,n=this.getConfig(),r=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(t,e);let r=Reflect.construct(t,e);return o.instrumentAnthropicAiClient(r,n)};for(let e of(Object.setPrototypeOf(r,t),Object.setPrototypeOf(r.prototype,t.prototype),Object.getOwnPropertyNames(t)))if(!["length","name","prototype"].includes(e)){let n=Object.getOwnPropertyDescriptor(t,e);n&&Object.defineProperty(r,e,n)}try{e.Anthropic=r}catch{Object.defineProperty(e,"Anthropic",{value:r,writable:!0,configurable:!0,enumerable:!0})}if(e.default===t)try{e.default=r}catch{Object.defineProperty(e,"default",{value:r,writable:!0,configurable:!0,enumerable:!0})}return e}}n.SentryAnthropicAiInstrumentation=a},718239,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(654826),a=o.generateInstrumentOnce(r.ANTHROPIC_AI_INTEGRATION_NAME,e=>new i.SentryAnthropicAiInstrumentation(e));n.anthropicAIIntegration=r.defineIntegration((e={})=>({name:r.ANTHROPIC_AI_INTEGRATION_NAME,options:e,setupOnce(){a(e)}})),n.instrumentAnthropicAi=a},116463,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.10.0 <2"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-google-genai",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@google/genai",i,e=>this._patch(e),e=>e,[new r.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",i,e=>this._patch(e),e=>e)])}_patch(e){let t=e.GoogleGenAI,n=this.getConfig();if("function"!=typeof t)return e;let r=function(...e){if(o._INTERNAL_shouldSkipAiProviderWrapping(o.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(t,e);let r=Reflect.construct(t,e);return o.instrumentGoogleGenAIClient(r,n)};for(let e of(Object.setPrototypeOf(r,t),Object.setPrototypeOf(r.prototype,t.prototype),Object.getOwnPropertyNames(t)))if(!["length","name","prototype"].includes(e)){let n=Object.getOwnPropertyDescriptor(t,e);n&&Object.defineProperty(r,e,n)}return o.replaceExports(e,"GoogleGenAI",r),e}}n.SentryGoogleGenAiInstrumentation=a},880504,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(116463),a=o.generateInstrumentOnce(r.GOOGLE_GENAI_INTEGRATION_NAME,e=>new i.SentryGoogleGenAiInstrumentation(e));n.googleGenAIIntegration=r.defineIntegration((e={})=>({name:r.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){a(e)}})),n.instrumentGoogleGenAI=a},454883,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.1.0 <2.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-langchain",o.SDK_VERSION,e)}init(){let e=[];for(let t of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])e.push(new r.InstrumentationNodeModuleDefinition(t,i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile(`${t}/dist/index.cjs`,i,this._patch.bind(this),e=>e)]));return e.push(new r.InstrumentationNodeModuleDefinition("langchain",i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",i,this._patch.bind(this),e=>e)])),e}_patch(e){o._INTERNAL_skipAiProviderWrapping([o.OPENAI_INTEGRATION_NAME,o.ANTHROPIC_AI_INTEGRATION_NAME,o.GOOGLE_GENAI_INTEGRATION_NAME]);let t=o.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(e,t),e}_patchRunnableMethods(e,t){let n=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],r=Object.values(e.universal_exports??e).find(e=>"function"==typeof e&&n.includes(e.name));if(!r)return;let o=r.prototype;if(!o.__sentry_patched__)for(let e of(o.__sentry_patched__=!0,["invoke","stream","batch"])){let n=o[e];"function"==typeof n&&(o[e]=function(e,t,n){return new Proxy(e,{apply(e,n,r){var o,i;let a=r[1];(!a||"object"!=typeof a||Array.isArray(a))&&(a={},r[1]=a);let s=(o=a.callbacks,i=t,o?Array.isArray(o)?o.includes(i)?o:[...o,i]:"object"==typeof o?[o,i]:o:[i]);return a.callbacks=s,Reflect.apply(e,n,r)}})}(n,t))}}}n.SentryLangChainInstrumentation=a},62602,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(454883),a=o.generateInstrumentOnce(r.LANGCHAIN_INTEGRATION_NAME,e=>new i.SentryLangChainInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.LANGCHAIN_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentLangChain=a,n.langChainIntegration=s},955749,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=[">=0.0.0 <2.0.0"];class a extends r.InstrumentationBase{constructor(e={}){super("@sentry/instrumentation-langgraph",o.SDK_VERSION,e)}init(){return new r.InstrumentationNodeModuleDefinition("@langchain/langgraph",i,this._patch.bind(this),e=>e,[new r.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",i,this._patch.bind(this),e=>e)])}_patch(e){return e.StateGraph&&"function"==typeof e.StateGraph&&o.instrumentLangGraph(e.StateGraph.prototype,this.getConfig()),e}}n.SentryLangGraphInstrumentation=a},521121,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(955749),a=o.generateInstrumentOnce(r.LANGGRAPH_INTEGRATION_NAME,e=>new i.SentryLangGraphInstrumentation(e)),s=r.defineIntegration((e={})=>({name:r.LANGGRAPH_INTEGRATION_NAME,setupOnce(){a(e)}}));n.instrumentLangGraph=a,n.langGraphIntegration=s},477801,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));n.buildLaunchDarklyFlagUsedHandlerShim=function(){return r.isBrowser()||r.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},n.launchDarklyIntegrationShim=o},222267,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));n.OpenFeatureIntegrationHookShim=class{constructor(){r.isBrowser()||r.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},n.openFeatureIntegrationShim=o},742355,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.statsigIntegrationShim=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},954005,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.unleashIntegrationShim=r.defineIntegration(e=>(r.isBrowser()||r.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},822525,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.growthbookIntegrationShim=e.r(976285).growthbookIntegration},395316,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(761095),o=e.r(357762),i=e.r(204780),a=e.r(808119);function s(e,t,n,r,o){var i,a,s,p,_,T,d,E;return l(e,n),t(e,"addDoc",(i=r,a=o,function(e){return function(t,n){let r=c(i,"addDoc",t);return a(r),u(r,()=>e(t,n))}})),t(e,"getDocs",(s=r,p=o,function(e){return function(t){let n=c(s,"getDocs",t);return p(n),u(n,()=>e(t))}})),t(e,"setDoc",(_=r,T=o,function(e){return function(t,n,r){let o=c(_,"setDoc",t.parent||t);return T(o),u(o,()=>void 0!==r?e(t,n,r):e(t,n))}})),t(e,"deleteDoc",(d=r,E=o,function(e){return function(t){let n=c(d,"deleteDoc",t.parent||t);return E(n),u(n,()=>e(t))}})),e}function l(e,t){for(let n of["addDoc","getDocs","setDoc","deleteDoc"])i.isWrapped(e[n])&&t(e,n);return e}function u(e,t){return o.context.with(o.trace.setSpan(o.context.active(),e),()=>i.safeExecuteInTheMiddle(()=>t(),t=>{t&&e.recordException(t),e.end()},!0))}function c(e,t,n){let r=e.startSpan(`${t} ${n.path}`,{kind:o.SpanKind.CLIENT});return function(e,t){let n=t.firestore.app,r=n.options,o=(t.firestore.toJSON()||{}).settings||{},i={[a.ATTR_DB_COLLECTION_NAME]:t.path,[a.ATTR_DB_NAMESPACE]:n.name,[a.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":t.type,"firebase.firestore.options.projectId":r.projectId,"firebase.firestore.options.appId":r.appId,"firebase.firestore.options.messagingSenderId":r.messagingSenderId,"firebase.firestore.options.storageBucket":r.storageBucket},{address:s,port:l}=p(o);s&&(i[a.ATTR_SERVER_ADDRESS]=s),l&&(i[a.ATTR_SERVER_PORT]=l),e.setAttributes(i)}(r,n),r.setAttribute(a.ATTR_DB_OPERATION_NAME,t),r}function p(e){let t,n;if("string"==typeof e.host)if(e.host.startsWith("[")){if(e.host.endsWith("]"))t=e.host.replace(/^\[|\]$/g,"");else if(e.host.includes("]:")){let r=e.host.lastIndexOf(":");-1!==r&&(t=e.host.slice(1,r).replace(/^\[|\]$/g,""),n=e.host.slice(r+1))}}else if(r.isIPv6(e.host))t=e.host;else{let r=e.host.lastIndexOf(":");-1!==r?(t=e.host.slice(0,r),n=e.host.slice(r+1)):t=e.host}return{address:t,port:n?parseInt(n,10):void 0}}n.getPortAndAddress=p,n.patchFirestore=function(e,t,n,r,a){let u=()=>{},c=a.firestoreSpanCreationHook;"function"==typeof c&&(u=e=>{i.safeExecuteInTheMiddle(()=>c(e),e=>{e&&o.diag.error(e?.message)},!0)});let p=new i.InstrumentationNodeModuleDefinition("@firebase/firestore",t,t=>s(t,n,r,e,u));for(let o of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])p.files.push(new i.InstrumentationNodeModuleFile(o,t,t=>s(t,n,r,e,u),e=>l(e,r)));return p}},248461,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(204780);function i(e,t,n){return function(o){return function(...i){let a="function"==typeof i[0]?i[0]:i[1],s="function"==typeof i[0]?void 0:i[0];if(!a)return o.call(this,...i);let l=async function(...o){let i=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",s=e.startSpan(`firebase.function.${n}`,{kind:r.SpanKind.SERVER}),l={"faas.name":i,"faas.trigger":n,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(l["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(l["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),s.setAttributes(l),t?.requestHook?.(s),r.context.with(r.trace.setSpan(r.context.active(),s),async()=>{let e,n;try{n=await a.apply(this,o)}catch(t){e=t}if(t?.responseHook?.(s,e),e&&s.recordException(e),s.end(),e)throw await t?.errorHook?.(s,e),e;return n})};return s?o.call(this,s,l):o.call(this,l)}}}function a(e,t){for(let n of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])o.isWrapped(e[n])&&t(e,n);return e}n.patchFunctions=function(e,t,n,s,l){let u=()=>{},c=()=>{},p=l.functions?.errorHook,_=l.functions?.requestHook,T=l.functions?.responseHook;"function"==typeof T&&(c=(e,t)=>{o.safeExecuteInTheMiddle(()=>T(e,t),e=>{e&&r.diag.error(e?.message)},!0)}),"function"==typeof _&&(u=e=>{o.safeExecuteInTheMiddle(()=>_(e),e=>{e&&r.diag.error(e?.message)},!0)});let d=new o.InstrumentationNodeModuleDefinition("firebase-functions",t);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:r,triggerType:l})=>{d.files.push(new o.InstrumentationNodeModuleFile(r,t,t=>(function(e,t,n,r,o,s){switch(a(e,n),s){case"function":t(e,"onRequest",i(r,o,"http.request")),t(e,"onCall",i(r,o,"http.call"));break;case"firestore":t(e,"onDocumentCreated",i(r,o,"firestore.document.created")),t(e,"onDocumentUpdated",i(r,o,"firestore.document.updated")),t(e,"onDocumentDeleted",i(r,o,"firestore.document.deleted")),t(e,"onDocumentWritten",i(r,o,"firestore.document.written")),t(e,"onDocumentCreatedWithAuthContext",i(r,o,"firestore.document.created")),t(e,"onDocumentUpdatedWithAuthContext",i(r,o,"firestore.document.updated")),t(e,"onDocumentDeletedWithAuthContext",i(r,o,"firestore.document.deleted")),t(e,"onDocumentWrittenWithAuthContext",i(r,o,"firestore.document.written"));break;case"scheduler":t(e,"onSchedule",i(r,o,"scheduler.scheduled"));break;case"storage":t(e,"onObjectFinalized",i(r,o,"storage.object.finalized")),t(e,"onObjectArchived",i(r,o,"storage.object.archived")),t(e,"onObjectDeleted",i(r,o,"storage.object.deleted")),t(e,"onObjectMetadataUpdated",i(r,o,"storage.object.metadataUpdated"))}return e})(t,n,s,e,{requestHook:u,responseHook:c,errorHook:p},l),e=>a(e,s)))}),d},n.patchV2Functions=i},516771,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(204780),o=e.r(976285),i=e.r(395316),a=e.r(248461),s={},l=[">=3.0.0 <5"],u=[">=6.0.0 <7"];class c extends r.InstrumentationBase{constructor(e=s){super("@sentry/instrumentation-firebase",o.SDK_VERSION,e)}setConfig(e={}){super.setConfig({...s,...e})}init(){let e=[];return e.push(i.patchFirestore(this.tracer,l,this._wrap,this._unwrap,this.getConfig())),e.push(a.patchFunctions(this.tracer,u,this._wrap,this._unwrap,this.getConfig())),e}}n.FirebaseInstrumentation=c},146523,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(516771),a="Firebase",s={firestoreSpanCreationHook:e=>{o.addOriginToSpan(e,"auto.firebase.otel.firestore"),e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:e=>{o.addOriginToSpan(e,"auto.firebase.otel.functions"),e.setAttribute(r.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(e,t)=>{t&&(r.captureException(t,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await r.flush(2e3))}}},l=o.generateInstrumentOnce(a,()=>new i.FirebaseInstrumentation(s));n.firebaseIntegration=r.defineIntegration(()=>({name:a,setupOnce(){l()}})),n.instrumentFirebase=l},273273,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(738190),o=e.r(855902),i=e.r(718239),a=e.r(953027),s=e.r(429440),l=e.r(602878),u=e.r(146523),c=e.r(979396),p=e.r(880504),_=e.r(176571),T=e.r(376169),d=e.r(688750),E=e.r(934925),S=e.r(86294),A=e.r(62602),g=e.r(521121),m=e.r(888804),h=e.r(143655),R=e.r(780216),f=e.r(473485),N=e.r(625680),I=e.r(758158),O=e.r(832719),y=e.r(19194),b=e.r(547683),C=e.r(978486),M=e.r(946603),P=e.r(834440);n.getAutoPerformanceIntegrations=function(){return[s.expressIntegration(),l.fastifyIntegration(),_.graphqlIntegration(),d.honoIntegration(),h.mongoIntegration(),R.mongooseIntegration(),f.mysqlIntegration(),N.mysql2Integration(),C.redisIntegration(),O.postgresIntegration(),b.prismaIntegration(),T.hapiIntegration(),S.koaIntegration(),a.connectIntegration(),M.tediousIntegration(),c.genericPoolIntegration(),E.kafkaIntegration(),o.amqplibIntegration(),m.lruMemoizerIntegration(),A.langChainIntegration(),g.langGraphIntegration(),P.vercelAIIntegration(),I.openAIIntegration(),i.anthropicAIIntegration(),p.googleGenAIIntegration(),y.postgresJsIntegration(),u.firebaseIntegration()]},n.getOpenTelemetryInstrumentationToPreload=function(){return[r.instrumentSentryHttp,r.instrumentOtelHttp,s.instrumentExpress,a.instrumentConnect,l.instrumentFastify,l.instrumentFastifyV3,T.instrumentHapi,d.instrumentHono,E.instrumentKafka,S.instrumentKoa,m.instrumentLruMemoizer,h.instrumentMongo,R.instrumentMongoose,f.instrumentMysql,N.instrumentMysql2,O.instrumentPostgres,T.instrumentHapi,_.instrumentGraphql,C.instrumentRedis,M.instrumentTedious,c.instrumentGenericPool,o.instrumentAmqplib,A.instrumentLangChain,P.instrumentVercelAi,I.instrumentOpenAi,y.instrumentPostgresJs,u.instrumentFirebase,i.instrumentAnthropicAi,p.instrumentGoogleGenAI,g.instrumentLangGraph]}},1631,e=>{"use strict";let t;e.s([],827962),e.i(827962);var n=e.i(978116),r=e.i(670496),o=e.i(606733),i=e.i(775332);let a=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(e){let t={},r=(0,i.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),a=(0,i.getStringFromEnv)("OTEL_SERVICE_NAME");if(r)try{let e=this._parseResourceAttributes(r);Object.assign(t,e)}catch(e){n.diag.debug(`EnvDetector failed: ${e instanceof Error?e.message:e}`)}return a&&(t[o.ATTR_SERVICE_NAME]=a),{attributes:t}}_parseResourceAttributes(e){if(!e)return{};let t={};for(let n of e.split(this._COMMA_SEPARATOR)){let e,r,o=n.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==o.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${n}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[i,a]=o,s=i.trim(),l=a.trim();if(0===s.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${n}".`);try{e=decodeURIComponent(s),r=decodeURIComponent(l)}catch(e){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${n}": ${e instanceof Error?e.message:e}`)}if(e.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${e}".`);if(r.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${e}".`);t[e]=r}return t}};var s=e.i(446786),l=e.i(605365);async function u(){if(!t)switch(l.platform){case"darwin":t=(await e.A(57998)).getMachineId;break;case"linux":t=(await e.A(944291)).getMachineId;break;case"freebsd":t=(await e.A(822215)).getMachineId;break;case"win32":t=(await e.A(497519)).getMachineId;break;default:t=(await e.A(418670)).getMachineId}return t()}let c=new class{detect(e){return{attributes:{"host.name":(0,s.hostname)(),"host.arch":(e=>{switch(e){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return e}})((0,s.arch)()),"host.id":u()}}}},p=new class{detect(e){return{attributes:{"os.type":(e=>{switch(e){case"sunos":return"solaris";case"win32":return"windows";default:return e}})((0,s.platform)()),"os.version":(0,s.release)()}}}},_=new class{detect(e){let t={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(t["process.command"]=process.argv[1]);try{let e=s.userInfo();t["process.owner"]=e.username}catch(e){n.diag.debug(`error obtaining process owner: ${e}`)}return{attributes:t}}};var T=e.i(254799);let d=new class{detect(e){return{attributes:{"service.instance.id":(0,T.randomUUID)()}}}};var E=e.i(581453);e.s(["defaultResource",()=>r.defaultResource,"defaultServiceName",()=>E.defaultServiceName,"detectResources",0,(e={})=>(e.detectors||[]).map(t=>{try{let o=(0,r.resourceFromDetectedResource)(t.detect(e));return n.diag.debug(`${t.constructor.name} found resource.`,o),o}catch(e){return n.diag.debug(`${t.constructor.name} failed: ${e.message}`),(0,r.emptyResource)()}}).reduce((e,t)=>e.merge(t),(0,r.emptyResource)()),"emptyResource",()=>r.emptyResource,"envDetector",0,a,"hostDetector",0,c,"osDetector",0,p,"processDetector",0,_,"resourceFromAttributes",()=>r.resourceFromAttributes,"serviceInstanceIdDetector",0,d],1631)},815084,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(1631),i=e.r(148861),a=e.r(808119),s=e.r(976285),l=e.r(625331),u=e.r(779607),c=e.r(866779),p=e.r(273273);function _(e,t={}){let n=new i.BasicTracerProvider({sampler:new u.SentrySampler(e),resource:o.defaultResource().merge(o.resourceFromAttributes({[a.ATTR_SERVICE_NAME]:"node",[a.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[a.ATTR_SERVICE_VERSION]:s.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new u.SentrySpanProcessor({timeout:T(e.getOptions().maxSpanWaitDuration)}),...t.spanProcessors||[]]});r.trace.setGlobalTracerProvider(n),r.propagation.setGlobalPropagator(new u.SentryPropagator);let c=new l.SentryContextManager;return r.context.setGlobalContextManager(c),[n,c.getAsyncLocalStorageLookup()]}function T(e){if(null!=e){if(e>1e6)return c.DEBUG_BUILD&&s.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(e<=0||Number.isNaN(e)){c.DEBUG_BUILD&&s.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return e}}n._clampSpanProcessorTimeout=T,n.initOpenTelemetry=function(e,t={}){e.getOptions().debug&&l.setupOpenTelemetryLogger();let[n,r]=_(e,t);e.traceProvider=n,e.asyncLocalStorageLookup=r},n.preloadOpenTelemetry=function(e={}){var t;let n,{debug:r}=e;r&&s.debug.enable(),l.initializeEsmLoader(),(t=e.integrations,n=p.getOpenTelemetryInstrumentationToPreload(),t?n.filter(e=>{let n=e.id;return t.some(e=>n===e||n.startsWith(`${e}.`))}):n).forEach(e=>{e(),r&&s.debug.log(`[Sentry] Preloaded ${e.id} instrumentation`)})},n.setupOtel=_},645105,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(625331),i=e.r(738190),a=e.r(354258),s=e.r(273273),l=e.r(815084);function u(){return o.getDefaultIntegrations().filter(e=>"Http"!==e.name&&"NodeFetch"!==e.name).concat(i.httpIntegration(),a.nativeNodeFetchIntegration())}function c(e){return[...u(),...r.hasSpansEnabled(e)?s.getAutoPerformanceIntegrations():[]]}function p(e={},t){r.applySdkMetadata(e,"node");let n=o.init({...e,defaultIntegrations:e.defaultIntegrations??t(e)});return n&&!e.skipOpenTelemetrySetup&&(l.initOpenTelemetry(n,{spanProcessors:e.openTelemetrySpanProcessors}),o.validateOpenTelemetrySetup()),n}n.getDefaultIntegrations=c,n.getDefaultIntegrationsWithoutPerformance=u,n.init=function(e={}){return p(e,c)},n.initWithoutDefaultIntegrations=function(e={}){return p(e,()=>[])}},96892,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(738190),o=e.r(354258),i=e.r(174710),a=e.r(429440),s=e.r(602878),l=e.r(176571),u=e.r(934925),c=e.r(888804),p=e.r(143655),_=e.r(780216),T=e.r(473485),d=e.r(625680),E=e.r(978486),S=e.r(832719),A=e.r(19194),g=e.r(547683),m=e.r(376169),h=e.r(688750),R=e.r(86294),f=e.r(953027),N=e.r(823099),I=e.r(946603),O=e.r(979396),y=e.r(363082),b=e.r(855902),C=e.r(834440),M=e.r(758158),P=e.r(718239),L=e.r(880504),v=e.r(62602),U=e.r(521121),D=e.r(477801),G=e.r(222267),B=e.r(742355),x=e.r(954005),V=e.r(822525),w=e.r(146523),H=e.r(645105),k=e.r(815084),Y=e.r(273273),j=e.r(779607),F=e.r(976285),W=e.r(625331);n.httpIntegration=r.httpIntegration,n.nativeNodeFetchIntegration=o.nativeNodeFetchIntegration,n.fsIntegration=i.fsIntegration,n.expressErrorHandler=a.expressErrorHandler,n.expressIntegration=a.expressIntegration,n.setupExpressErrorHandler=a.setupExpressErrorHandler,n.fastifyIntegration=s.fastifyIntegration,n.setupFastifyErrorHandler=s.setupFastifyErrorHandler,n.graphqlIntegration=l.graphqlIntegration,n.kafkaIntegration=u.kafkaIntegration,n.lruMemoizerIntegration=c.lruMemoizerIntegration,n.mongoIntegration=p.mongoIntegration,n.mongooseIntegration=_.mongooseIntegration,n.mysqlIntegration=T.mysqlIntegration,n.mysql2Integration=d.mysql2Integration,n.redisIntegration=E.redisIntegration,n.postgresIntegration=S.postgresIntegration,n.postgresJsIntegration=A.postgresJsIntegration,n.prismaIntegration=g.prismaIntegration,n.hapiIntegration=m.hapiIntegration,n.setupHapiErrorHandler=m.setupHapiErrorHandler,n.honoIntegration=h.honoIntegration,n.setupHonoErrorHandler=h.setupHonoErrorHandler,n.koaIntegration=R.koaIntegration,n.setupKoaErrorHandler=R.setupKoaErrorHandler,n.connectIntegration=f.connectIntegration,n.setupConnectErrorHandler=f.setupConnectErrorHandler,n.knexIntegration=N.knexIntegration,n.tediousIntegration=I.tediousIntegration,n.genericPoolIntegration=O.genericPoolIntegration,n.dataloaderIntegration=y.dataloaderIntegration,n.amqplibIntegration=b.amqplibIntegration,n.vercelAIIntegration=C.vercelAIIntegration,n.openAIIntegration=M.openAIIntegration,n.anthropicAIIntegration=P.anthropicAIIntegration,n.googleGenAIIntegration=L.googleGenAIIntegration,n.langChainIntegration=v.langChainIntegration,n.langGraphIntegration=U.langGraphIntegration,n.buildLaunchDarklyFlagUsedHandler=D.buildLaunchDarklyFlagUsedHandlerShim,n.launchDarklyIntegration=D.launchDarklyIntegrationShim,n.OpenFeatureIntegrationHook=G.OpenFeatureIntegrationHookShim,n.openFeatureIntegration=G.openFeatureIntegrationShim,n.statsigIntegration=B.statsigIntegrationShim,n.unleashIntegration=x.unleashIntegrationShim,n.growthbookIntegration=V.growthbookIntegrationShim,n.firebaseIntegration=w.firebaseIntegration,n.getDefaultIntegrations=H.getDefaultIntegrations,n.getDefaultIntegrationsWithoutPerformance=H.getDefaultIntegrationsWithoutPerformance,n.init=H.init,n.initWithoutDefaultIntegrations=H.initWithoutDefaultIntegrations,n.initOpenTelemetry=k.initOpenTelemetry,n.preloadOpenTelemetry=k.preloadOpenTelemetry,n.getAutoPerformanceIntegrations=Y.getAutoPerformanceIntegrations,n.setNodeAsyncContextStrategy=j.setOpenTelemetryContextAsyncContextStrategy,n.SDK_VERSION=F.SDK_VERSION,n.SEMANTIC_ATTRIBUTE_SENTRY_OP=F.SEMANTIC_ATTRIBUTE_SENTRY_OP,n.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=F.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,n.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=F.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,n.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=F.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,n.Scope=F.Scope,n.addBreadcrumb=F.addBreadcrumb,n.addEventProcessor=F.addEventProcessor,n.addIntegration=F.addIntegration,n.captureCheckIn=F.captureCheckIn,n.captureConsoleIntegration=F.captureConsoleIntegration,n.captureEvent=F.captureEvent,n.captureException=F.captureException,n.captureFeedback=F.captureFeedback,n.captureMessage=F.captureMessage,n.captureSession=F.captureSession,n.close=F.close,n.consoleIntegration=F.consoleIntegration,n.consoleLoggingIntegration=F.consoleLoggingIntegration,n.continueTrace=F.continueTrace,n.createConsolaReporter=F.createConsolaReporter,n.createLangChainCallbackHandler=F.createLangChainCallbackHandler,n.createTransport=F.createTransport,n.dedupeIntegration=F.dedupeIntegration,n.endSession=F.endSession,n.eventFiltersIntegration=F.eventFiltersIntegration,n.extraErrorDataIntegration=F.extraErrorDataIntegration,n.featureFlagsIntegration=F.featureFlagsIntegration,n.flush=F.flush,n.functionToStringIntegration=F.functionToStringIntegration,n.getActiveSpan=F.getActiveSpan,n.getClient=F.getClient,n.getCurrentScope=F.getCurrentScope,n.getGlobalScope=F.getGlobalScope,n.getIsolationScope=F.getIsolationScope,n.getRootSpan=F.getRootSpan,n.getSpanDescendants=F.getSpanDescendants,n.getSpanStatusFromHttpCode=F.getSpanStatusFromHttpCode,n.getTraceData=F.getTraceData,n.getTraceMetaTags=F.getTraceMetaTags,n.httpHeadersToSpanAttributes=F.httpHeadersToSpanAttributes,n.inboundFiltersIntegration=F.inboundFiltersIntegration,n.instrumentAnthropicAiClient=F.instrumentAnthropicAiClient,n.instrumentGoogleGenAIClient=F.instrumentGoogleGenAIClient,n.instrumentLangGraph=F.instrumentLangGraph,n.instrumentOpenAiClient=F.instrumentOpenAiClient,n.instrumentStateGraphCompile=F.instrumentStateGraphCompile,n.instrumentSupabaseClient=F.instrumentSupabaseClient,n.isEnabled=F.isEnabled,n.isInitialized=F.isInitialized,n.lastEventId=F.lastEventId,n.linkedErrorsIntegration=F.linkedErrorsIntegration,n.parameterize=F.parameterize,n.profiler=F.profiler,n.requestDataIntegration=F.requestDataIntegration,n.rewriteFramesIntegration=F.rewriteFramesIntegration,n.setContext=F.setContext,n.setConversationId=F.setConversationId,n.setCurrentClient=F.setCurrentClient,n.setExtra=F.setExtra,n.setExtras=F.setExtras,n.setHttpStatus=F.setHttpStatus,n.setMeasurement=F.setMeasurement,n.setTag=F.setTag,n.setTags=F.setTags,n.setUser=F.setUser,n.spanToBaggageHeader=F.spanToBaggageHeader,n.spanToJSON=F.spanToJSON,n.spanToTraceHeader=F.spanToTraceHeader,n.startInactiveSpan=F.startInactiveSpan,n.startNewTrace=F.startNewTrace,n.startSession=F.startSession,n.startSpan=F.startSpan,n.startSpanManual=F.startSpanManual,n.supabaseIntegration=F.supabaseIntegration,n.suppressTracing=F.suppressTracing,n.trpcMiddleware=F.trpcMiddleware,n.updateSpanName=F.updateSpanName,n.winterCGHeadersToDict=F.winterCGHeadersToDict,n.withActiveSpan=F.withActiveSpan,n.withIsolationScope=F.withIsolationScope,n.withMonitor=F.withMonitor,n.withScope=F.withScope,n.wrapMcpServerWithSentry=F.wrapMcpServerWithSentry,n.zodErrorsIntegration=F.zodErrorsIntegration,n.NODE_VERSION=W.NODE_VERSION,n.NodeClient=W.NodeClient,n.SentryContextManager=W.SentryContextManager,n.anrIntegration=W.anrIntegration,n.childProcessIntegration=W.childProcessIntegration,n.contextLinesIntegration=W.contextLinesIntegration,n.createGetModuleFromFilename=W.createGetModuleFromFilename,n.createSentryWinstonTransport=W.createSentryWinstonTransport,n.cron=W.cron,n.defaultStackParser=W.defaultStackParser,n.disableAnrDetectionForCallback=W.disableAnrDetectionForCallback,n.generateInstrumentOnce=W.generateInstrumentOnce,n.getSentryRelease=W.getSentryRelease,n.httpServerIntegration=W.httpServerIntegration,n.httpServerSpansIntegration=W.httpServerSpansIntegration,n.localVariablesIntegration=W.localVariablesIntegration,n.logger=W.logger,n.makeNodeTransport=W.makeNodeTransport,n.metrics=W.metrics,n.modulesIntegration=W.modulesIntegration,n.nodeContextIntegration=W.nodeContextIntegration,n.nodeRuntimeMetricsIntegration=W.nodeRuntimeMetricsIntegration,n.onUncaughtExceptionIntegration=W.onUncaughtExceptionIntegration,n.onUnhandledRejectionIntegration=W.onUnhandledRejectionIntegration,n.pinoIntegration=W.pinoIntegration,n.processSessionIntegration=W.processSessionIntegration,n.spotlightIntegration=W.spotlightIntegration,n.systemErrorIntegration=W.systemErrorIntegration,n.validateOpenTelemetrySetup=W.validateOpenTelemetrySetup},820456,(e,t,n)=>{let r;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let o=e.r(522734),i=e.r(814747),a=null,s=null;n.createRouteManifest=function(e){let t;if(e?.appDirPath)t=e.appDirPath;else{let e=process.cwd(),n=i.join(e,"app"),r=i.join(e,"src","app");o.existsSync(n)&&o.lstatSync(n).isDirectory()?t=n:o.existsSync(r)&&o.lstatSync(r).isDirectory()&&(t=r)}if(!t)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(a&&s===t&&r===e?.includeRouteGroups)return a;let{dynamicRoutes:n,staticRoutes:l,isrRoutes:u}=function e(t,n="",r=!1){let a=[],s=[],l=[];try{let c=o.readdirSync(t,{withFileTypes:!0}),p=c.find(e=>{var t;return t=e.name,"page.tsx"===t||"page.jsx"===t||"page.ts"===t||"page.js"===t});if(p){let e=r?n||"/":(n||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),u=e.includes(":"),c=i.join(t,p.name);if(function(e){try{let t=o.readFileSync(e,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(t)}catch{return!1}}(c)&&l.push(e),u){let{regex:t,paramNames:n,hasOptionalPrefix:r}=function(e){let t,n,r=e.split("/").filter(Boolean),o=[],i=[],a=!1;for(let e of r)if(e.startsWith(":")){let t=e.substring(1);if(t.endsWith("*?")){let e=t.slice(0,-2);i.push(e),a=!0}else if(t.endsWith("*")){let e=t.slice(0,-1);i.push(e),o.push("(.+)")}else i.push(t),o.push("([^/]+)")}else o.push(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(a)if(0===o.length)n="^/(.*)$";else{let e=o.join("/");n=`^/${e}(?:/(.*))?$`}else n=`^/${o.join("/")}$`;return{regex:n,paramNames:i,hasOptionalPrefix:(t=i[0],void 0!==t&&("locale"===t||"lang"===t||"language"===t))}}(e);a.push({path:e,regex:t,paramNames:n,hasOptionalPrefix:r})}else s.push({path:e})}for(let o of c)if(o.isDirectory()){var u;let c,p=i.join(t,o.name),_=o.name.startsWith("[")&&o.name.endsWith("]"),T=(c=(u=o.name).startsWith("(")&&u.endsWith(")")?r?o.name:"":_?function(e){if(e.startsWith("[[...")&&e.endsWith("]]")){let t=e.slice(5,-2);return`:${t}*?`}if(e.startsWith("[...")&&e.endsWith("]")){let t=e.slice(4,-1);return`:${t}*`}return`:${e.slice(1,-1)}`}(o.name):o.name)?`${n}/${c}`:n,d=e(p,T,r);a.push(...d.dynamicRoutes),s.push(...d.staticRoutes),l.push(...d.isrRoutes)}}catch(e){console.warn("Error building route manifest:",e)}return{dynamicRoutes:a,staticRoutes:s,isrRoutes:l}}(t,e?.basePath,e?.includeRouteGroups),c={dynamicRoutes:n,staticRoutes:l,isrRoutes:u};return a=c,s=t,r=e?.includeRouteGroups,c}},382226,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.resolveTunnelRoute=function(e){let t;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let n="string"==typeof e?e:(t=r._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${t}`);return n&&(process.env.__SENTRY_TUNNEL_ROUTE__=n),n},n.setUpTunnelRewriteRules=function(e,t){let n=e.rewrites,r=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,o=r||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",i=r||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";e.rewrites=async(...e)=>{let r={source:`${t}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:o},a=[{source:`${t}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:i},r];if("function"!=typeof n)return a;let s=await n(...e);return Array.isArray(s)?[...a,...s]:{...s,beforeFiles:[...a,...s.beforeFiles||[]]}}}},586605,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(96892),i=e.r(522734),a=e.r(814747),s=e.r(820456),l=e.r(690268),u=e.r(934474),c=e.r(382226),p=!1,_=!1;function T(e,t){if(!t)return e;let n=e=>"function"==typeof t?t(e):t.some(t=>r.isMatchingPattern(e,t));return{staticRoutes:e.staticRoutes.filter(e=>!n(e.path)),dynamicRoutes:e.dynamicRoutes.filter(e=>!n(e.path)),isrRoutes:e.isrRoutes.filter(e=>!n(e))}}n.filterRouteManifest=T,n.getNextMajor=function(e){if(!e)return;let{major:t}=r.parseSemver(e);return t},n.maybeCreateRouteManifest=function(e,t){if(t.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==t.routeManifestInjection&&(void 0!==t.routeManifestInjection||!t.disableManifestInjection))return T(s.createRouteManifest({basePath:e.basePath}),t.routeManifestInjection?.exclude)},n.maybeGetVercelCronsConfig=function(e){let t={config:void 0,strategy:void 0};if(!process.env.VERCEL)return t;let n=e._experimental?.vercelCronsMonitoring===!0,o=e.webpack?.automaticVercelMonitors===!0;if(!n&&!o)return t;let s=function(){try{let e=a.join(process.cwd(),"vercel.json"),t=i.readFileSync(e,"utf8"),n=JSON.parse(t).crons;if(n&&Array.isArray(n)&&n.length>0)return n;return}catch(e){if("ENOENT"===e.code)return;r.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",e);return}}();return s&&(t.config=s,n&&o?(r.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),t.strategy="spans"):n?(r.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),t.strategy="spans"):(r.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),t.strategy="wrapper")),t},n.maybeSetClientTraceMetadataOption=function(e,t){if(t){let{major:n,minor:o}=r.parseSemver(t);void 0!==n&&void 0!==o&&(n>=15||14===n&&o>=3)&&(e.experimental=e.experimental||{},e.experimental.clientTraceMetadata=["baggage","sentry-trace",...e.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},n.maybeSetInstrumentationHookOption=function(e,t){if(t&&l.requiresInstrumentationHook(t)){e.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),e.experimental={instrumentationHook:!0,...e.experimental};return}t||(e.experimental&&"instrumentationHook"in e.experimental?!1===e.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),e.experimental={instrumentationHook:!0,...e.experimental}))},n.maybeSetUpTunnelRouteRewriteRules=function(e,t){if(!t.tunnelRoute)return;if("export"===e.output){p||(p=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let n=c.resolveTunnelRoute(t.tunnelRoute);t.tunnelRoute=n||void 0,c.setUpTunnelRewriteRules(e,n)},n.resolveReleaseName=function(e){return e.release?.create!==!1?e.release?.name??o.getSentryRelease()??u.getGitRevision():e.release?.name},n.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(_||(_=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},n.warnIfMissingOnRouterTransitionStartHook=function(e){let t=u.getInstrumentationClientFileContents();void 0===t||t.includes("onRouterTransitionStart")||e.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},766776,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(690268),o=e.r(934474),i=e.r(279876),a=e.r(780663),s=e.r(586605);n.getFinalConfigObject=function(e,t){i.migrateDeprecatedWebpackOptions(t);let n=s.resolveReleaseName(t);if(s.maybeSetUpTunnelRouteRewriteRules(e,t),s.shouldReturnEarlyInExperimentalBuildMode())return e;let l=s.maybeCreateRouteManifest(e,t),u=s.maybeGetVercelCronsConfig(t);o.setUpBuildTimeVariables(e,t,n);let c=r.getNextjsVersion(),p=s.getNextMajor(c);s.maybeSetClientTraceMetadataOption(e,c),s.maybeSetInstrumentationHookOption(e,c),s.warnIfMissingOnRouterTransitionStartHook(t);let _=a.getBundlerInfo(c);a.maybeWarnAboutUnsupportedTurbopack(c,_),a.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(c,t,_);let T=a.maybeConstructTurbopackConfig(e,t,l,c,_,u),d=a.resolveUseRunAfterProductionCompileHookOption(t,_);return a.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:e,userSentryOptions:t,releaseName:n,nextJsVersion:c,bundlerInfo:_,turboPackConfig:T,shouldUseRunAfterProductionCompileHook:d}),a.maybeEnableTurbopackSourcemaps(e,t,_),{...e,...a.getServerExternalPackagesPatch(e,p),...a.getWebpackPatch({incomingUserNextConfigObject:e,userSentryOptions:t,releaseName:n,routeManifest:l,nextJsVersion:c,shouldUseRunAfterProductionCompileHook:d,bundlerInfo:_,vercelCronsConfigResult:u}),...a.getTurbopackPatch(_,T)}}},256782,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(766776);n.withSentryConfig=function(e,t={}){let n=e||{};return"function"==typeof n?function(...e){let i=n.apply(this,e);return r.isThenable(i)?i.then(e=>o.getFinalConfigObject(e,t)):o.getFinalConfigObject(i,t)}:o.getFinalConfigObject(n,t)}},644247,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.DEBUG_BUILD="u"{"use strict";var t="";function n(e){return e.split("\n").reduce(function(e,n){var c,p,_,T=function(e){var n=r.exec(e);if(!n)return null;var i=n[2]&&0===n[2].indexOf("native"),a=n[2]&&0===n[2].indexOf("eval"),s=o.exec(n[2]);return a&&null!=s&&(n[2]=s[1],n[3]=s[2],n[4]=s[3]),{file:i?null:n[2],methodName:n[1]||t,arguments:i?[n[2]]:[],lineNumber:n[3]?+n[3]:null,column:n[4]?+n[4]:null}}(n)||((c=i.exec(n))?{file:c[2],methodName:c[1]||t,arguments:[],lineNumber:+c[3],column:c[4]?+c[4]:null}:null)||function(e){var n=a.exec(e);if(!n)return null;var r=n[3]&&n[3].indexOf(" > eval")>-1,o=s.exec(n[3]);return r&&null!=o&&(n[3]=o[1],n[4]=o[2],n[5]=null),{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(","):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}(n)||((p=u.exec(n))?{file:p[2],methodName:p[1]||t,arguments:[],lineNumber:+p[3],column:p[4]?+p[4]:null}:null)||((_=l.exec(n))?{file:_[3],methodName:_[1]||t,arguments:[],lineNumber:+_[4],column:_[5]?+_[5]:null}:null);return T&&e.push(T),e},[])}var r=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,o=/\((\S*)(?::(\d+))(?::(\d+))\)/,i=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,a=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,s=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,u=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;e.s(["parse",()=>n])},313627,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(695005),i=e.r(644247),a=r.GLOBAL_OBJ;function s(){let e=process.env._sentryBasePath??a._sentryBasePath??"";""===e||e.match(/^\//)||(e=`/${e}`);let t=process.env.PORT||"3000";return`http://localhost:${t}${e}`}async function l(e,t={}){let n=new AbortController,o=setTimeout(()=>n.abort(),3e3);return r.suppressTracing(()=>fetch(e,{...t,signal:n.signal}).finally(()=>{clearTimeout(o)}))}async function u(e,t){try{if(!(e.file?.startsWith("webpack-internal:")||e.file?.startsWith("file:")))return null;let n=new URLSearchParams;n.append("isServer",String(!1)),n.append("isEdgeServer",String(!1)),n.append("isAppDirectory",String(!0)),n.append("errorMessage",t.toString()),Object.keys(e).forEach(t=>{n.append(t,(e[t]??"").toString())});let r=s(),o=await l(`${r}/__nextjs_original-stack-frame?${n.toString()}`);if(!o.ok||204===o.status)return null;let i=await o.json();return{originalCodeFrame:i.originalCodeFrame,originalStackFrame:i.originalStackFrame}}catch(e){return i.DEBUG_BUILD&&r.debug.error("Failed to symbolicate event with Next.js dev server",e),null}}async function c(e){try{let t={frames:e.filter(e=>!!e.file).map(e=>(e.file=e.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:e.file,methodName:e.methodName??"",arguments:[],lineNumber:e.lineNumber??0,column:e.column??0,line1:e.lineNumber??0,column1:e.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},n=s(),r=await l(`${n}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok||204===r.status)return null;return(await r.json()).map(e=>({originalCodeFrame:e.value.originalCodeFrame,originalStackFrame:e.value.originalStackFrame}))}catch(e){return i.DEBUG_BUILD&&r.debug.error("Failed to symbolicate event with Next.js dev server",e),null}}n.devErrorSymbolicationEventProcessor=async function e(e,t){"transaction"===e.type&&(e.spans=e.spans?.filter(e=>{let t=e.data?.["http.url"];return"string"!=typeof t||!t.includes("__nextjs_original-stack-frame")}));try{if(t.originalException&&t.originalException instanceof Error&&t.originalException.stack){let n,i=o.parse(t.originalException.stack),s=a._sentryNextJsVersion;if(!s)return e;let l=r.parseSemver(s);if(l.major>15||15===l.major&&l.minor>=2){let t=await c(i);if(null===t)return e;n=t}else n=await Promise.all(i.map(e=>u(e,t.originalException)));e.exception?.values?.[0]?.stacktrace?.frames&&(e.exception.values[0].stacktrace.frames=e.exception.values[0].stacktrace.frames.map((e,t,r)=>{let o=n[r.length-1-t];if(!o?.originalStackFrame||!o.originalCodeFrame)return{...e,platform:e.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:i,preContextLines:a,postContextLines:s}=function(e){let t,n=e.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(e=>!e.match(/^\s*\|/)).map(e=>({line:e,isErrorLine:!!e.match(/^>/)})).map(e=>({...e,line:e.line.replace(/^.*\|/,"")})),r=[],o=[],i=!1;for(let e of n)e.isErrorLine?(t=e.line,i=!0):i?o.push(e.line):r.push(e.line);return{contextLine:t,preContextLines:r,postContextLines:o}}(o.originalCodeFrame);return{...e,pre_context:a,context_line:i,post_context:s,function:o.originalStackFrame.methodName,filename:o.originalStackFrame.file?function(e){if(!e)return e;let t=e.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return t?t[1]:e}(o.originalStackFrame.file):void 0,lineno:o.originalStackFrame.lineNumber||o.originalStackFrame.line1||void 0,colno:o.originalStackFrame.column||o.originalStackFrame.column1||void 0}}))}}catch{}return e}},102372,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.getVercelEnv=function(e){let t=e?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return t?`vercel-${t}`:void 0}},322192,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.ATTR_NEXT_ROUTE="next.route",n.ATTR_NEXT_SEGMENT="next.segment",n.ATTR_NEXT_SPAN_NAME="next.span_name",n.ATTR_NEXT_SPAN_TYPE="next.span_type"},753802,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",n.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",n.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},166740,(e,t,n)=>{"use strict";n._=function(e){return e&&e.__esModule?e:{default:e}}},404660,(e,t,n)=>{"use strict";t.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},473032,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return l},UNDERSCORE_NOT_FOUND_ROUTE:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return a}};for(var o in r)Object.defineProperty(n,o,{enumerable:!0,get:r[o]});let i="/_not-found",a=`${i}/page`,s="/_global-error",l=`${s}/page`},59653,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,o={APP_CLIENT_INTERNALS:function(){return et},APP_PATHS_MANIFEST:function(){return h},APP_PATH_ROUTES_MANIFEST:function(){return R},AdapterOutputType:function(){return c},BARREL_OPTIMIZATION_PREFIX:function(){return K},BLOCKED_PAGES:function(){return k},BUILD_ID_FILE:function(){return H},BUILD_MANIFEST:function(){return f},CLIENT_PUBLIC_FILES_PATH:function(){return Y},CLIENT_REFERENCE_MANIFEST:function(){return X},CLIENT_STATIC_FILES_PATH:function(){return j},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return q},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return ee},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return eo},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return ei},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return en},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return er},COMPILER_INDEXES:function(){return u},COMPILER_NAMES:function(){return l},CONFIG_FILES:function(){return w},DEFAULT_RUNTIME_WEBPACK:function(){return ea},DEFAULT_SANS_SERIF_FONT:function(){return ep},DEFAULT_SERIF_FONT:function(){return ec},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return B},DEV_CLIENT_PAGES_MANIFEST:function(){return v},DYNAMIC_CSS_MANIFEST:function(){return z},EDGE_RUNTIME_WEBPACK:function(){return es},EDGE_UNSUPPORTED_NODE_APIS:function(){return eS},EXPORT_DETAIL:function(){return b},EXPORT_MARKER:function(){return y},FUNCTIONS_CONFIG_MANIFEST:function(){return N},IMAGES_MANIFEST:function(){return P},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Q},MIDDLEWARE_BUILD_MANIFEST:function(){return J},MIDDLEWARE_MANIFEST:function(){return U},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return $},MODERN_BROWSERSLIST_TARGET:function(){return a.default},NEXT_BUILTIN_DOCUMENT:function(){return W},NEXT_FONT_MANIFEST:function(){return O},PAGES_MANIFEST:function(){return g},PHASE_ANALYZE:function(){return _},PHASE_DEVELOPMENT_SERVER:function(){return E},PHASE_EXPORT:function(){return p},PHASE_INFO:function(){return A},PHASE_PRODUCTION_BUILD:function(){return T},PHASE_PRODUCTION_SERVER:function(){return d},PHASE_TEST:function(){return S},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return x},ROUTES_MANIFEST:function(){return M},RSC_MODULE_TYPES:function(){return eE},SERVER_DIRECTORY:function(){return V},SERVER_FILES_MANIFEST:function(){return L},SERVER_PROPS_ID:function(){return eu},SERVER_REFERENCE_MANIFEST:function(){return Z},STATIC_PROPS_ID:function(){return el},STATIC_STATUS_PAGES:function(){return e_},STRING_LITERAL_DROP_BUNDLE:function(){return F},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return I},SYSTEM_ENTRYPOINTS:function(){return eA},TRACE_OUTPUT_VERSION:function(){return eT},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return G},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return D},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ed},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return s.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return s.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return m}};for(var i in o)Object.defineProperty(n,i,{enumerable:!0,get:o[i]});let a=e.r(166740)._(e.r(404660)),s=e.r(473032),l={client:"client",server:"server",edgeServer:"edge-server"},u={[l.client]:0,[l.server]:1,[l.edgeServer]:2};var c=((r={}).PAGES="PAGES",r.PAGES_API="PAGES_API",r.APP_PAGE="APP_PAGE",r.APP_ROUTE="APP_ROUTE",r.PRERENDER="PRERENDER",r.STATIC_FILE="STATIC_FILE",r.MIDDLEWARE="MIDDLEWARE",r);let p="phase-export",_="phase-analyze",T="phase-production-build",d="phase-production-server",E="phase-development-server",S="phase-test",A="phase-info",g="pages-manifest.json",m="webpack-stats.json",h="app-paths-manifest.json",R="app-path-routes-manifest.json",f="build-manifest.json",N="functions-config-manifest.json",I="subresource-integrity-manifest",O="next-font-manifest",y="export-marker.json",b="export-detail.json",C="prerender-manifest.json",M="routes-manifest.json",P="images-manifest.json",L="required-server-files",v="_devPagesManifest.json",U="middleware-manifest.json",D="_clientMiddlewareManifest.json",G="client-build-manifest.json",B="_devMiddlewareManifest.json",x="react-loadable-manifest.json",V="server",w=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],H="BUILD_ID",k=["/_document","/_app","/_error"],Y="public",j="static",F="__NEXT_DROP_CLIENT_FILE__",W="__NEXT_BUILTIN_DOCUMENT__",K="__barrel_optimize__",X="client-reference-manifest",Z="server-reference-manifest",J="middleware-build-manifest",$="middleware-react-loadable-manifest",Q="interception-route-rewrite-manifest",z="dynamic-css-manifest",q="main",ee=`${q}-app`,et="app-pages-internals",en="react-refresh",er="webpack",eo="polyfills",ei=Symbol(eo),ea="webpack-runtime",es="edge-runtime-webpack",el="__N_SSG",eu="__N_SSP",ec={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},ep={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},e_=["/500"],eT=1,ed=6e3,eE={client:"client",server:"server"},eS=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eA=new Set([q,en,ee]);("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},797121,(e,t,n)=>{t.exports=e.r(59653)},775563,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(797121);n.isBuild=function(){return process.env.NEXT_PHASE===r.PHASE_PRODUCTION_BUILD}},804822,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247);async function i(){try{o.DEBUG_BUILD&&r.debug.log("Flushing events..."),await r.flush(2e3),o.DEBUG_BUILD&&r.debug.log("Done flushing events")}catch(e){o.DEBUG_BUILD&&r.debug.log("Error while flushing events:\n",e)}}function a(){let e=Symbol.for("__cloudflare-context__");return r.GLOBAL_OBJ[e]?.ctx}function s(e){a()?.waitUntil(e)}function l(){return"function"==typeof a()?.waitUntil}n.cloudflareWaitUntil=s,n.flushSafelyWithTimeout=i,n.isCloudflareWaitUntilAvailable=l,n.waitUntil=function(e){l()?s(e):r.vercelWaitUntil(e)}},835229,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);function o(e){let t=e.split("/").filter(e=>e&&!(e.startsWith("(")&&e.endsWith(")")));return t.length>0?`/${t.join("/")}`:"/"}function i(e,t,n,i){let a=i??o(e),s=n?.["x-forwarded-proto"],l=n?.["x-forwarded-host"]||n?.host;if(!s||!l)return a;let u=`${s}://${l}${a}`,c=r.parseStringToURLObject(u);return c?r.getSanitizedUrlStringFromUrlObject(c):a}function a(e){let t=e?.referer;if(t)try{let e=new URL(t);return r.getSanitizedUrlStringFromUrlObject(e)}catch{return}}n.buildUrlFromComponentRoute=i,n.extractSanitizedUrlFromRefererHeader=a,n.getSanitizedRequestUrl=function(e,t,n,r){let o=a(n);return o||i(e,t,n,r)},n.sanitizeRoutePath=o,n.substituteRouteParams=function(e,t){return e}},638074,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(835229);n.setUrlProcessingMetadata=function(e){if("transaction"!==e.type||e.contexts?.trace?.op!=="http.server"||!e.contexts?.trace?.data)return;let t=r.getClient();if(!t?.getOptions().sendDefaultPii)return;let n=e.contexts.trace.data,i=n["next.route"]||n["http.route"],a=n["http.target"];if(!i)return;let s=e.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),l=s?.sdkProcessingMetadata?.normalizedRequest?.headers,u=o.getSanitizedRequestUrl(i,void 0,l,a?.toString());u&&s?.sdkProcessingMetadata&&(s.sdkProcessingMetadata.normalizedRequest=s.sdkProcessingMetadata.normalizedRequest||{},s.sdkProcessingMetadata.normalizedRequest.url=u)}},540886,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(814747);n.distDirRewriteFramesIntegration=r.defineIntegration(({distDirName:e})=>{let t=o.resolve(e).replace(/(\/|\\)$/,""),n=new RegExp(r.escapeStringForRegex(t));return{...r.rewriteFramesIntegration({iteratee:e=>(e.filename=e.filename?.replace(n,"app:///_next"),e)}),name:"DistDirRewriteFrames"}})},224915,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.addHeadersAsAttributes=function(e,t){if(!e)return{};let n=e instanceof Headers||"object"==typeof e&&"get"in e?r.winterCGHeadersToDict(e):e,o=r.httpHeadersToSpanAttributes(n,r.getClient()?.getOptions().sendDefaultPii??!1);return t&&t.setAttributes(o),o}},851224,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(779607),a=e.r(322192),s=e.r(753802),l=o.GLOBAL_OBJ;n.dropMiddlewareTunnelRequests=function(e,t){if(o.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let n=t?.[a.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",u=t?.[o.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",c=t?.[a.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!n&&!u&&!c)return;let p=function(e){let t=l._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!t)return!1;let n=e[r.SEMATTRS_HTTP_TARGET];if("string"==typeof n){let e=n.split("?")[0]||"";return e===t||e.startsWith(`${t}/`)}return!1}(t||{}),_=i.isSentryRequestSpan(e);(p||_)&&e.setAttribute(s.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},997574,(e,t,n)=>{let r;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let o=e.r(808119),i=e.r(976285),a=e.r(644247),s=e.r(322192),l=e.r(753802),u="__PAGE__",c=new WeakMap;function p(e){return"NextNodeServer.getLayoutOrPageModule"===e[s.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===e[s.ATTR_NEXT_SPAN_NAME]&&"string"==typeof e[s.ATTR_NEXT_SEGMENT]}function _({segment:e,route:t}){return e===u?`resolve page server component "${t}"`:""===e?"resolve root layout server component":`resolve layout server component "${e}"`}n.commonObjectToIsolationScope=function(e){if("object"!=typeof e||!e)return new i.Scope;{let t=c.get(e);if(t)return t;{let t=new i.Scope;return c.set(e,t),t}}},n.dropNextjsRootContext=function(){if(i.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let e=i.getActiveSpan();if(e){let t=i.getRootSpan(e),n=i.spanToJSON(t).data;n?.["next.span_type"]&&i.getRootSpan(e)?.setAttribute(l.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},n.escapeNextjsTracing=function(e){let t=i.GLOBAL_OBJ.AsyncLocalStorage;return t?(r||(r=new t),r.getStore())?e():i.startNewTrace(()=>r.run(!0,()=>e())):(a.DEBUG_BUILD&&i.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),e())},n.getEnhancedResolveSegmentSpanName=_,n.isResolveSegmentSpan=p,n.maybeEnhanceServerComponentSpanName=function(e,t,n){if(!p(t))return;let r=t[s.ATTR_NEXT_SEGMENT],a=n[o.ATTR_HTTP_ROUTE],l=_({segment:r,route:"string"==typeof a?a:""});e.updateName(l),e.setAttributes({"sentry.nextjs.ssr.function.type":r===u?"Page":"Layout","sentry.nextjs.ssr.function.route":a}),e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},800038,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247),i="sentry.cron.checkInId",a="sentry.cron.monitorSlug",s="sentry.cron.startTime",l="sentry.cron.schedule";n.maybeCompleteCronCheckIn=function(e){let t=r.spanToJSON(e).data,n=t?.[i],u=t?.[a],c=t?.[s],p=t?.[l];if(!n||!u||"number"!=typeof c)return;let _=r._INTERNAL_safeDateNow()/1e3-c,T=r.spanToJSON(e).status,d=T&&"ok"!==T?"error":"ok";r.captureCheckIn({checkInId:n,monitorSlug:u,status:d,duration:_},"string"==typeof p?{maxRuntime:720,schedule:{type:"crontab",value:p}}:void 0),e.setAttribute(i,void 0),e.setAttribute(a,void 0),e.setAttribute(s,void 0),e.setAttribute(l,void 0),o.DEBUG_BUILD&&r.debug.log(`[Cron] Completed check-in for "${u}" with status "${d}"`)},n.maybeStartCronCheckIn=function(e,t){let n=function(){let e=globalThis;if(e._sentryVercelCronsConfig)try{return JSON.parse(e._sentryVercelCronsConfig)}catch{o.DEBUG_BUILD&&r.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!n||!t)return;let u=r.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!u)return;let c=Array.isArray(u["user-agent"])?u["user-agent"][0]:u["user-agent"];if(!c?.includes("vercel-cron"))return;let p=n.find(e=>e.path===t);if(!p?.path||!p.schedule)return;let _=p.path,T=r._INTERNAL_safeDateNow()/1e3,d=r.captureCheckIn({monitorSlug:_,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:p.schedule}});o.DEBUG_BUILD&&r.debug.log(`[Cron] Started check-in for "${_}" with ID "${d}"`),e.setAttribute(i,d),e.setAttribute(a,_),e.setAttribute(s,T),e.setAttribute(l,p.schedule)}},383234,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o="messaging.system",i="messaging.destination.name",a="messaging.operation.name",s="sentry.queue.enriched";function l(e,t){let n=e[t];return Array.isArray(n)?n[0]:n}n.maybeCleanupQueueSpan=function(e){let t=r.spanToJSON(e).data;t?.[s]&&e.setAttribute(s,void 0)},n.maybeEnrichQueueConsumerSpan=function(e){let t=r.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!t||"com.vercel.queue.v2beta"!==(Array.isArray(t["ce-type"])?t["ce-type"][0]:t["ce-type"]))return;let n=l(t,"ce-vqsqueuename"),u=l(t,"ce-vqsmessageid"),c=l(t,"ce-vqsconsumergroup"),p=l(t,"ce-vqsdeliverycount");if(e.setAttribute(o,"vercel.queue"),e.setAttribute(a,"process"),n&&e.setAttribute(i,n),u&&e.setAttribute("messaging.message.id",u),c&&e.setAttribute("messaging.consumer.group.name",c),p){let t=parseInt(p,10);isNaN(t)||e.setAttribute("messaging.message.delivery_count",t)}e.setAttribute(s,!0)},n.maybeEnrichQueueProducerSpan=function(e){let t,n=r.spanToJSON(e).data,l=n?.["url.full"];if(!l)return;try{t=new URL(l)}catch{return}if("vercel-queue.com"!==t.hostname&&!t.hostname.endsWith(".vercel-queue.com"))return;let u=t.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!u)return;let c=decodeURIComponent(u[1]);e.setAttribute(o,"vercel.queue"),e.setAttribute(i,c),e.setAttribute(a,"send"),e.setAttribute(s,!0)}},541464,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(357762),o=e.r(808119),i=e.r(976285),a=e.r(779607),s=e.r(322192),l=e.r(224915),u=e.r(851224),c=e.r(997574),p=e.r(800038),_=e.r(383234);n.handleOnSpanStart=function(e){let t=i.spanToJSON(e).data,n=i.getRootSpan(e),T=i.spanToJSON(n).data,d=e===n;if(u.dropMiddlewareTunnelRequests(e,t),"string"==typeof t?.[s.ATTR_NEXT_ROUTE]&&(T?.[o.ATTR_HTTP_REQUEST_METHOD]||T?.[o.SEMATTRS_HTTP_METHOD])&&!T?.[o.ATTR_HTTP_ROUTE]){let e=t[s.ATTR_NEXT_ROUTE].replace(/\/route$/,"");n.updateName(e),n.setAttribute(o.ATTR_HTTP_ROUTE,e),n.setAttribute(s.ATTR_NEXT_ROUTE,e);let r=T?.[o.ATTR_HTTP_REQUEST_METHOD]||T?.[o.SEMATTRS_HTTP_METHOD];"string"==typeof r&&i.getIsolationScope().setTransactionName(`${r} ${e}`),p.maybeStartCronCheckIn(n,e),_.maybeEnrichQueueConsumerSpan(n)}if(t?.[s.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let r=t[s.ATTR_NEXT_SPAN_NAME];"string"==typeof r&&(n.updateName(r),n.setAttribute(o.ATTR_HTTP_ROUTE,r),n.setAttribute(s.ATTR_NEXT_SPAN_NAME,r)),e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(t?.[s.ATTR_NEXT_SPAN_TYPE]!==void 0&&e.setAttribute(i.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),d){let e=i.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;l.addHeadersAsAttributes(e,n)}if(t?.[s.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&d){let t=i.getCapturedScopesOnSpan(e),n=(t.isolationScope||i.getIsolationScope()).clone(),o=t.scope||i.getCurrentScope(),s=a.getScopesFromContext(r.context.active());s&&(s.isolationScope=n),i.setCapturedScopesOnSpan(e,o,n)}c.maybeEnhanceServerComponentSpanName(e,t,T),_.maybeEnrichQueueProducerSpan(e)}},280432,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247);function i(){let e=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:e}=process.getBuiltinModule("async_hooks")??{};return e}}();if(!e||"function"!=typeof e.snapshot){o.DEBUG_BUILD&&r.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return e.snapshot()}function a(e){return e instanceof Error&&e.message.includes("AsyncLocalStorage")}n.prepareSafeIdGeneratorContext=function(){let e=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),t=r.GLOBAL_OBJ,n=i();if(!n)return;let s=n;t[e]=e=>{try{return s(e)}catch(n){if(!a(n))throw n;let t=i();if(!t)return e();s=t;try{return s(e)}catch(t){if(!a(t))throw t;return e()}}},o.DEBUG_BUILD&&r.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},202446,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.captureUnderscoreErrorException=async function(e){let{req:t,res:n,err:i}=e,a=n?.statusCode||e.statusCode;if(a&&a<500||!e.pathname)return;if(i&&r.isAlreadyCaptured(i)){o.waitUntil(o.flushSafelyWithTimeout());let e="object"==typeof i?i.__sentry_event_id__:void 0;return"string"==typeof e?(r.getIsolationScope().setLastEventId(e),e):r.getIsolationScope().lastEventId()}let s=r.withScope(e=>{if(t){let n=r.httpRequestToRequestData(t);e.setSDKProcessingMetadata({normalizedRequest:n})}return r.captureException(i||`_error.js called with falsy error (${i})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return o.waitUntil(o.flushSafelyWithTimeout()),s}},144865,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),n.isUseCacheFunction=function(e){if(e.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:t}=function(e){let t=parseInt(e.slice(0,2),16),n=t>>1&63,r=Array(6);for(let e=0;e<6;e++){let t=n>>5-e&1;r[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:r,hasRestArgs:1==(1&t)}}(e.$$id);return"use-cache"===t}},584990,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(644247),i=e.r(775563),a=e.r(144865);function s(e){let t=i.isBuild(),n=!!e&&a.isUseCacheFunction(e);return n&&o.DEBUG_BUILD&&r.debug.log("Skipping span creation in Cache Components context"),t||n}function l(){return new r.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}n.startInactiveSpan=function(e){return s()?l():r.startInactiveSpan(e)},n.startSpan=function(e,t){return s(t)?t(l()):r.startSpan(e,t)},n.startSpanManual=function(e,t){if(s(t)){let e=l();return t(e,()=>e.end())}return r.startSpanManual(e,t)}},952597,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(753802);n.callDataFetcherTraced=async function(e,t){try{return await e(...t)}catch(e){throw r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),e}},n.withErrorInstrumentation=function(e){return async function(...t){try{return await e.apply(this,t)}catch(t){throw r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:e.name}}}),t}}},n.withTracedServerSideDataFetcher=function(e,t,n,i){return async function(...n){let a=r.httpRequestToRequestData(t);r.getCurrentScope().setTransactionName(`${i.dataFetchingMethodName} (${i.dataFetcherRouteName})`),r.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:a});let s=r.getActiveSpan();s&&"/_error"!==i.requestedRouteName&&r.getRootSpan(s).setAttribute(o.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,i.requestedRouteName);let{"sentry-trace":l,baggage:u}=r.getTraceData();return{sentryTrace:l,baggage:u,data:await e.apply(this,n)}}}},263350,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetStaticPropsWithSentry=function(e,t){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let i=o.withErrorInstrumentation(e);return o.callDataFetcherTraced(i,n)}})}},804806,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:i.pathname,requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,baggage:u,sentryTrace:c}=await e.apply(t,n)??{};return"object"==typeof r&&null!==r&&(c&&(r._sentryTraceData=c),u&&(r._sentryBaggage=u)),r}}})}},233160,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapAppGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i.ctx,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_app",requestedRouteName:i.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,sentryTrace:u,baggage:c}=await e.apply(t,n);return"object"==typeof r&&null!==r&&(r.pageProps||(r.pageProps={}),u&&(r.pageProps._sentryTraceData=u),c&&(r.pageProps._sentryBaggage=c)),r}}})}},935404,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapDocumentGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_document",requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r}=await e.apply(t,n);return r}}})}},914109,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapErrorGetInitialPropsWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{if(r.isBuild())return e.apply(t,n);let[i]=n,{req:a,res:s}=i,l=o.withErrorInstrumentation(e);if(!a||!s)return l.apply(t,n);{let e=o.withTracedServerSideDataFetcher(l,a,s,{dataFetcherRouteName:"/_error",requestedRouteName:i.pathname,dataFetchingMethodName:"getInitialProps"}),{data:r,baggage:u,sentryTrace:c}=await e.apply(t,n);return"object"==typeof r&&null!==r&&(c&&(r._sentryTraceData=c),u&&(r._sentryBaggage=u)),r}}})}},315469,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(775563),o=e.r(952597);n.wrapGetServerSidePropsWithSentry=function(e,t){return new Proxy(e,{apply:async(e,n,i)=>{if(r.isBuild())return e.apply(n,i);let[a]=i,{req:s,res:l}=a,u=o.withErrorInstrumentation(e),c=o.withTracedServerSideDataFetcher(u,s,l,{dataFetcherRouteName:t,requestedRouteName:t,dataFetchingMethodName:"getServerSideProps"}),{data:p,baggage:_,sentryTrace:T}=await c.apply(n,i);return"object"==typeof p&&null!==p&&"props"in p&&(T&&(p.props._sentryTraceData=T),_&&(p.props._sentryBaggage=_)),p}})}},44343,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.isNotFoundNavigationError=function(e){return r.isError(e)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(e.digest)},n.isRedirectNavigationError=function(e){return r.isError(e)&&"string"==typeof e.digest&&e.digest.startsWith("NEXT_REDIRECT;")}},461047,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);n.wrapServerComponentWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>{let s=r.getIsolationScope(),l=t.headers?r.winterCGHeadersToDict(t.headers):void 0;return s.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),r.handleCallbackErrors(()=>e.apply(n,a),e=>{let n=r.getActiveSpan(),{componentRoute:i,componentType:a}=t,l=!0;s.setTransactionName(`${a} Server Component (${i})`),n&&(o.isNotFoundNavigationError(e)?(l=!1,n.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"})):o.isRedirectNavigationError(e)?(l=!1,n.setStatus({code:r.SPAN_STATUS_OK})):n.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"})),l&&r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{i.waitUntil(i.flushSafelyWithTimeout())})}})}},839777,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);e.r(997574),n.wrapRouteHandlerWithSentry=function(e,t){let{method:n,parameterizedRoute:a,headers:s}=t;return new Proxy(e,{apply:async(e,t,s)=>{let l=r.getActiveSpan(),u=l?r.getRootSpan(l):void 0;return r.withIsolationScope(r.getIsolationScope(),()=>r.withScope(async c=>{c.setTransactionName(`${n} ${a}`);let p=await r.handleCallbackErrors(()=>e.apply(t,s),e=>{o.isRedirectNavigationError(e)||(o.isNotFoundNavigationError(e)?(l&&r.setHttpStatus(l,404),u&&r.setHttpStatus(u,404)):r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{i.waitUntil(i.flushSafelyWithTimeout())});try{p.status&&(l&&r.setHttpStatus(l,p.status),u&&r.setHttpStatus(u,p.status))}catch{}return p}))}})}},573937,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);n.wrapApiHandlerWithSentryVercelCrons=function(e,t){return new Proxy(e,{apply:(e,n,o)=>{let i;if(!o?.[0])return e.apply(n,o);let[a]=o,s="nextUrl"in a?a.nextUrl.pathname:a.url,l="nextUrl"in a?a.headers.get("user-agent"):a.headers["user-agent"];if(!t||!l?.includes("vercel-cron"))return e.apply(n,o);let u=t.find(e=>e.path===s);if(!u?.path||!u.schedule)return e.apply(n,o);let c=u.path,p=r.captureCheckIn({monitorSlug:c,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:u.schedule}}),_=r._INTERNAL_safeDateNow()/1e3,T=()=>{r.captureCheckIn({checkInId:p,monitorSlug:c,status:"error",duration:r._INTERNAL_safeDateNow()/1e3-_})};try{i=e.apply(n,o)}catch(e){throw T(),e}return"object"==typeof i&&null!==i&&"then"in i?Promise.resolve(i).then(()=>{r.captureCheckIn({checkInId:p,monitorSlug:c,status:"ok",duration:r._INTERNAL_safeDateNow()/1e3-_})},()=>{T()}):r.captureCheckIn({checkInId:p,monitorSlug:c,status:"ok",duration:r._INTERNAL_safeDateNow()/1e3-_}),i}})}},918606,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.wrapMiddlewareWithSentry=function(e){return new Proxy(e,{apply:async(e,t,n)=>{let i="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(i&&"string"==typeof i){let e=n[0];if(e instanceof Request&&new URL(e.url).pathname.startsWith(i))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return r.withIsolationScope(i=>{let a,s,l=n[0],u=r.getCurrentScope();l instanceof Request?(i.setSDKProcessingMetadata({normalizedRequest:r.winterCGRequestToRequestData(l)}),a=`middleware ${l.method}`,s="url"):(a="middleware",s="component"),u.setTransactionName(a);let c=r.getActiveSpan();if(c){a="middleware",s="component";let e=r.getRootSpan(c);e&&r.setCapturedScopesOnSpan(e,u,i)}return r.startSpan({name:a,op:"http.server.middleware",attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:s,[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>r.handleCallbackErrors(()=>e.apply(t,n),e=>{r.captureException(e,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{o.waitUntil(o.flushSafelyWithTimeout())}))})}})}},91026,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285);function o(e,t){e&&"object"==typeof e&&r.addNonEnumerableProperty(e,"__sentry_event_id__",t)}n.wrapPageComponentWithSentry=function(e){return"function"==typeof e&&e?.prototype?.isReactComponent?class extends e{render(...e){return r.withIsolationScope(()=>{let t=r.getCurrentScope(),n="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(n){let e=r.extractTraceparentData(n);t.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return super.render(...e)}catch(t){let e=r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw o(t,e),t}})}}:"function"==typeof e?new Proxy(e,{apply:(e,t,n)=>r.withIsolationScope(()=>{let i=r.getCurrentScope(),a=n?.[0]?._sentryTraceData;if(a){let e=r.extractTraceparentData(a);i.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return e.apply(t,n)}catch(t){let e=r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw o(t,e),t}})}):e}},332796,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(44343),i=e.r(804822);n.wrapGenerationFunctionWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>{let s,l=r.getIsolationScope();try{s=t.requestAsyncStorage?.getStore()?.headers}catch{}let u=s?r.winterCGHeadersToDict(s):void 0;return l.setSDKProcessingMetadata({normalizedRequest:{headers:u}}),r.handleCallbackErrors(()=>e.apply(n,a),e=>{let n=r.getActiveSpan(),{componentRoute:i,componentType:a,generationFunctionIdentifier:s}=t,u=!0;l.setTransactionName(`${a}.${s} (${i})`),n&&(o.isNotFoundNavigationError(e)?(u=!1,n.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"})):o.isRedirectNavigationError(e)?(u=!1,n.setStatus({code:r.SPAN_STATUS_OK})):n.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"})),u&&r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:s}}})},()=>{i.waitUntil(i.flushSafelyWithTimeout())})}})}},982907,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822),i=e.r(644247),a=e.r(44343);async function s(e,t,n){return r.withIsolationScope(async s=>{let l,u,c=r.getClient()?.getOptions().sendDefaultPii,p={};try{let e=await t.headers;l=e?.get("sentry-trace")??void 0,u=e?.get("baggage"),e?.forEach((e,t)=>{p[t]=e})}catch{i.DEBUG_BUILD&&r.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return s.setTransactionName(`serverAction/${e}`),s.setSDKProcessingMetadata({normalizedRequest:{headers:p}}),(r.getActiveSpan()?(e,t)=>t():r.continueTrace)({sentryTrace:l,baggage:u},async()=>{try{return await r.startSpan({op:"function.server_action",name:`serverAction/${e}`,forceTransaction:!0,attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async e=>{let o=await r.handleCallbackErrors(n,t=>{a.isNotFoundNavigationError(t)?e.setStatus({code:r.SPAN_STATUS_ERROR,message:"not_found"}):a.isRedirectNavigationError(t)||(e.setStatus({code:r.SPAN_STATUS_ERROR,message:"internal_error"}),r.captureException(t,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==t.recordResponse?t.recordResponse:c)&&r.getIsolationScope().setExtra("server_action_result",o),t.formData&&t.formData.forEach((e,t)=>{r.getIsolationScope().setExtra(`server_action_form_data.${t}`,"string"==typeof e?e:"[non-string value]")}),o})}finally{o.waitUntil(o.flushSafelyWithTimeout())}})})}n.withServerActionInstrumentation=function(...e){if("function"==typeof e[1]){let[t,n]=e;return s(t,{},n)}{let[t,n,r]=e;return s(t,n,r)}}},659534,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822);n.captureRequestError=function(e,t,n){r.withScope(i=>{i.setSDKProcessingMetadata({normalizedRequest:{headers:r.headersToDict(t.headers),method:t.method}}),i.setContext("nextjs",{request_path:t.path,router_kind:n.routerKind,router_path:n.routePath,route_type:n.routeType}),i.setTransactionName(`${t.method} ${n.routePath}`),r.captureException(e,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),o.waitUntil(o.flushSafelyWithTimeout())})}},13458,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(976285),o=e.r(804822),i=e.r(997574);n.wrapApiHandlerWithSentry=function(e,t){return new Proxy(e,{apply:(e,n,a)=>(i.dropNextjsRootContext(),i.escapeNextjsTracing(()=>{let[i,s]=a;return i?s?i.__withSentry_applied__?e.apply(n,a):(i.__withSentry_applied__=!0,r.withIsolationScope(l=>(r.getActiveSpan()?(e,t)=>t():r.continueTrace)({sentryTrace:i.headers&&r.isString(i.headers["sentry-trace"])?i.headers["sentry-trace"]:void 0,baggage:i.headers?.baggage},()=>{let u=`${(i.method||"GET").toUpperCase()} `,c=r.httpRequestToRequestData(i);return l.setSDKProcessingMetadata({normalizedRequest:c}),l.setTransactionName(`${u}${t}`),r.startSpanManual({name:`${u}${t}`,op:"http.server",forceTransaction:!0,attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async t=>{s.end=new Proxy(s.end,{apply:(e,n,i)=>(r.setHttpStatus(t,s.statusCode),t.end(),o.waitUntil(o.flushSafelyWithTimeout()),e.apply(n,i))});try{return await e.apply(n,a)}catch(i){let n=r.objectify(i);throw r.captureException(n,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:e.name,function:"withSentry"}}}),r.setHttpStatus(t,500),t.end(),await o.flushSafelyWithTimeout(),n}})}))):(r.debug.log(`Wrapped API handler on route "${t}" was not passed a response object. Will not instrument.`),e.apply(n,a)):(r.debug.log(`Wrapped API handler on route "${t}" was not passed a request object. Will not instrument.`),e.apply(n,a))}))})}},398609,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(808119),o=e.r(976285),i=e.r(96892),a=e.r(644247);e.r(313627);let s=e.r(102372),l=e.r(322192),u=e.r(753802),c=e.r(775563),p=e.r(804822),_=e.r(638074),T=e.r(540886),d=e.r(541464),E=e.r(280432),S=e.r(800038),A=e.r(383234),g=e.r(202446),m=e.r(584990),h=e.r(263350),R=e.r(804806),f=e.r(233160),N=e.r(935404),I=e.r(914109),O=e.r(315469),y=e.r(461047),b=e.r(839777),C=e.r(573937),M=e.r(918606),P=e.r(91026),L=e.r(332796),v=e.r(982907),U=e.r(659534),D=e.r(13458);o.GLOBAL_OBJ,n.captureUnderscoreErrorException=g.captureUnderscoreErrorException,n.startInactiveSpan=m.startInactiveSpan,n.startSpan=m.startSpan,n.startSpanManual=m.startSpanManual,n.wrapGetStaticPropsWithSentry=h.wrapGetStaticPropsWithSentry,n.wrapGetInitialPropsWithSentry=R.wrapGetInitialPropsWithSentry,n.wrapAppGetInitialPropsWithSentry=f.wrapAppGetInitialPropsWithSentry,n.wrapDocumentGetInitialPropsWithSentry=N.wrapDocumentGetInitialPropsWithSentry,n.wrapErrorGetInitialPropsWithSentry=I.wrapErrorGetInitialPropsWithSentry,n.wrapGetServerSidePropsWithSentry=O.wrapGetServerSidePropsWithSentry,n.wrapServerComponentWithSentry=y.wrapServerComponentWithSentry,n.wrapRouteHandlerWithSentry=b.wrapRouteHandlerWithSentry,n.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,n.wrapMiddlewareWithSentry=M.wrapMiddlewareWithSentry,n.wrapPageComponentWithSentry=P.wrapPageComponentWithSentry,n.wrapGenerationFunctionWithSentry=L.wrapGenerationFunctionWithSentry,n.withServerActionInstrumentation=v.withServerActionInstrumentation,n.captureRequestError=U.captureRequestError,n.wrapApiHandlerWithSentry=D.wrapApiHandlerWithSentry,n.ErrorBoundary=e=>e.children?"function"==typeof e.children?e.children():e.children:null,n.createReduxEnhancer=function(){return e=>e},n.init=function(e){if(E.prepareSafeIdGeneratorContext(),c.isBuild())return;!a.DEBUG_BUILD&&e.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let t=i.getDefaultIntegrations(e).filter(e=>"Http"!==e.name).concat(i.httpIntegration({disableIncomingRequestSpans:!0}));e.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),t.push(T.distDirRewriteFramesIntegration({distDirName:".next"}));let n=function(){if(p.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),g={environment:e.environment||process.env.SENTRY_ENVIRONMENT||s.getVercelEnv(!1)||"production",release:"dc62485b60679b810b5f74bfb5a22915b7a62314",defaultIntegrations:t,...e,...n};if(a.DEBUG_BUILD&&g.debug&&o.debug.enable(),a.DEBUG_BUILD&&o.debug.log("Initializing SDK..."),o.getClient()){a.DEBUG_BUILD&&o.debug.log("SDK already initialized");return}o.applySdkMetadata(g,"nextjs",["nextjs",n?"cloudflare":"node"]);let m=i.init(g);m?.on("beforeSampling",({spanAttributes:e},t)=>{("string"==typeof e[r.SEMATTRS_HTTP_TARGET]&&e[r.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&e[r.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof e[r.ATTR_URL_QUERY]&&e[r.ATTR_URL_QUERY].includes("sentry_key")&&e[r.ATTR_URL_QUERY].includes("sentry_client"))&&(t.decision=!1)}),m?.on("spanStart",d.handleOnSpanStart),m?.on("spanEnd",S.maybeCompleteCronCheckIn),m?.on("spanEnd",A.maybeCleanupQueueSpan),o.getGlobalScope().addEventProcessor(Object.assign(e=>{if("transaction"!==e.type)return e;if(e.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||e.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===e.transaction||e.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===e.transaction)return null;if("string"==typeof e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let t=o.extractTraceparentData(e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(t?.parentSampled===!1)return null}return e},{id:"NextLowQualityTransactionsFilter"})),o.getGlobalScope().addEventProcessor(Object.assign((e,t)=>{if(void 0!==e.type)return e;let n=t.originalException;if("object"==typeof n&&null!==n&&"$$typeof"in n&&n.$$typeof===Symbol.for("react.postpone"))return null;let r=e.exception?.values?.[0]?.value;return r?.includes("Suspense Exception: This is not a real error!")||r?.includes("Suspense Exception: This is not a real error, and should not leak")?null:e},{id:"DropReactControlFlowErrors"})),m?.on("preprocessEvent",e=>{if("transaction"===e.type&&e.contexts?.trace?.data?.[l.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){e.contexts.trace.data[o.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",e.contexts.trace.op="http.server",e.transaction&&(e.transaction=o.stripUrlQueryAndFragment(e.transaction));let t=e.contexts.trace.data[r.SEMATTRS_HTTP_METHOD],n=e.contexts?.trace?.data?.[r.SEMATTRS_HTTP_TARGET],i=e.contexts.trace.data[r.ATTR_HTTP_ROUTE]||e.contexts.trace.data[l.ATTR_NEXT_ROUTE],a=e.contexts.trace.data[l.ATTR_NEXT_SPAN_NAME];if("string"==typeof t&&"string"==typeof i&&!i.startsWith("middleware")){let n=i.replace(/\/route$/,"");e.transaction=`${t} ${n}`,e.contexts.trace.data[o.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",e.contexts.trace.data[l.ATTR_NEXT_ROUTE]=n}e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==e.transaction&&(e.transaction=`${t} ${e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let s="string"==typeof a&&a.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);s&&(e.transaction=`middleware ${s[1]}`,e.contexts.trace.op="http.server.middleware"),"GET /_error"===e.transaction&&n&&(e.transaction=`${t?`${t} `:""}${n}`)}if("transaction"===e.type&&"string"==typeof e.contexts?.trace?.data?.[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let t=o.extractTraceparentData(e.contexts.trace.data[u.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);t?.traceId&&(e.contexts.trace.trace_id=t.traceId),t?.parentSpanId&&(e.contexts.trace.parent_span_id=t.parentSpanId)}_.setUrlProcessingMetadata(e)});try{o.getGlobalScope().setTag("turbopack",!0)}catch{}return a.DEBUG_BUILD&&o.debug.log("SDK successfully initialized"),m},n.showReportDialog=function(){},n.withErrorBoundary=function(e){return e},Object.prototype.hasOwnProperty.call(i,"__proto__")&&!Object.prototype.hasOwnProperty.call(n,"__proto__")&&Object.defineProperty(n,"__proto__",{enumerable:!0,value:i.__proto__}),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(n,e)||(n[e]=i[e])})},755538,(e,t,n)=>{Object.defineProperty(n,Symbol.toStringTag,{value:"Module"});let r=e.r(256782),o=e.r(398609),i=e.r(96892),a=e.r(659534),s=e.r(202446),l=e.r(584990),u=e.r(982907),c=e.r(13458),p=e.r(573937),_=e.r(233160),T=e.r(935404),d=e.r(914109),E=e.r(332796),S=e.r(804806),A=e.r(315469),g=e.r(263350),m=e.r(918606),h=e.r(91026),R=e.r(839777),f=e.r(461047);n.withSentryConfig=r.withSentryConfig,n.ErrorBoundary=o.ErrorBoundary,n.createReduxEnhancer=o.createReduxEnhancer,n.init=o.init,n.showReportDialog=o.showReportDialog,n.withErrorBoundary=o.withErrorBoundary,n.captureRequestError=a.captureRequestError,n.captureUnderscoreErrorException=s.captureUnderscoreErrorException,n.startInactiveSpan=l.startInactiveSpan,n.startSpan=l.startSpan,n.startSpanManual=l.startSpanManual,n.withServerActionInstrumentation=u.withServerActionInstrumentation,n.wrapApiHandlerWithSentry=c.wrapApiHandlerWithSentry,n.wrapApiHandlerWithSentryVercelCrons=p.wrapApiHandlerWithSentryVercelCrons,n.wrapAppGetInitialPropsWithSentry=_.wrapAppGetInitialPropsWithSentry,n.wrapDocumentGetInitialPropsWithSentry=T.wrapDocumentGetInitialPropsWithSentry,n.wrapErrorGetInitialPropsWithSentry=d.wrapErrorGetInitialPropsWithSentry,n.wrapGenerationFunctionWithSentry=E.wrapGenerationFunctionWithSentry,n.wrapGetInitialPropsWithSentry=S.wrapGetInitialPropsWithSentry,n.wrapGetServerSidePropsWithSentry=A.wrapGetServerSidePropsWithSentry,n.wrapGetStaticPropsWithSentry=g.wrapGetStaticPropsWithSentry,n.wrapMiddlewareWithSentry=m.wrapMiddlewareWithSentry,n.wrapPageComponentWithSentry=h.wrapPageComponentWithSentry,n.wrapRouteHandlerWithSentry=R.wrapRouteHandlerWithSentry,n.wrapServerComponentWithSentry=f.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(i,"__proto__")&&!Object.prototype.hasOwnProperty.call(n,"__proto__")&&Object.defineProperty(n,"__proto__",{enumerable:!0,value:i.__proto__}),Object.keys(i).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(n,e)||(n[e]=i[e])})}]; -//# debugId=700e904c-e9dc-c1c5-e110-8b95775a6984 +//# debugId=33335499-202e-67bd-daff-32b8b7c5c4fc //# sourceMappingURL=node_modules__pnpm_b4ece637._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js b/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js index 436e0b346..6c33122a8 100644 --- a/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js +++ b/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bdab930._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="62ee6973-90ff-e5b3-17f4-c9c5faf22d74")}catch(e){}}(); -module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},26701,a=>{"use strict";var b=a.i(526156),c=a.i(603836),d=a.i(150765),e=a.i(110644),f=a.i(411487);a.i(594214);var g=a.i(90695),h=a.i(5515),i=a.i(544027);let j=(0,f.default)(async()=>{},{loadableGenerated:{modules:[888085]},ssr:!1});function k(){let a=(0,c.useTranslations)("Team"),[f,k]=(0,d.useState)(!1),[l,m]=(0,d.useState)(0),n=["/uploads/2024/12/DSC07539-Large-600x400.webp","/uploads/2024/12/DSC07460-Large-600x400.webp","/uploads/2024/12/DSC07469-Large-600x400.webp","/uploads/2024/12/DSC07433-Large-600x400.webp","/uploads/2024/12/DSC07387-Large-600x400.webp"];return(0,b.jsxs)(g.Section,{className:"bg-primary-dark py-16 md:py-32",children:[(0,b.jsxs)(h.Container,{children:[(0,b.jsx)(i.Heading,{level:2,subtitle:a("gallery.subtitle"),align:"center",className:"text-white mb-12 md:mb-20",children:(0,b.jsx)("span",{className:"text-white",children:a("gallery.title")})}),(0,b.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-5 gap-3 md:gap-6",children:n.map((c,d)=>(0,b.jsxs)("button",{onClick:()=>{m(d),k(!0)},className:"relative aspect-[3/4] rounded-2xl md:rounded-[32px] overflow-hidden group shadow-2xl cursor-pointer",children:[(0,b.jsx)(e.default,{src:c,alt:a("gallery.title"),fill:!0,className:"object-cover transition-transform duration-1000 group-hover:scale-110"}),(0,b.jsx)("div",{className:"absolute inset-0 bg-primary-dark/40 group-hover:bg-transparent transition-all duration-500"}),(0,b.jsx)("div",{className:"absolute inset-0 border-0 group-hover:border-[8px] md:group-hover:border-[12px] border-white/10 transition-all duration-500 pointer-events-none"})]},d))})]}),(0,b.jsx)(j,{isOpen:f,images:n,initialIndex:l,onClose:()=>k(!1)})]})}a.s(["default",()=>k])},390265,a=>{"use strict";var b=a.i(526156),c=a.i(912466),d=a.i(274209),e=a.i(281682);function f({eventName:a=e.AnalyticsEvents.BUTTON_CLICK,eventProperties:f={},onClick:g,...h}){let{trackEvent:i}=(0,d.useAnalytics)();return(0,b.jsx)(c.Button,{...h,onClick:b=>{i(a,{...f,label:"string"==typeof h.children?h.children:f.label}),g&&g(b)}})}a.s(["default",()=>f])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__5209d0e9._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="8a7da826-f94a-8396-7351-63a0775388dc")}catch(e){}}(); +module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},26701,a=>{"use strict";var b=a.i(526156),c=a.i(603836),d=a.i(150765),e=a.i(110644),f=a.i(411487);a.i(594214);var g=a.i(90695),h=a.i(5515),i=a.i(544027);let j=(0,f.default)(async()=>{},{loadableGenerated:{modules:[888085]},ssr:!1});function k(){let a=(0,c.useTranslations)("Team"),[f,k]=(0,d.useState)(!1),[l,m]=(0,d.useState)(0),n=["/uploads/2024/12/DSC07539-Large-600x400.webp","/uploads/2024/12/DSC07460-Large-600x400.webp","/uploads/2024/12/DSC07469-Large-600x400.webp","/uploads/2024/12/DSC07433-Large-600x400.webp","/uploads/2024/12/DSC07387-Large-600x400.webp"];return(0,b.jsxs)(g.Section,{className:"bg-primary-dark py-16 md:py-32",children:[(0,b.jsxs)(h.Container,{children:[(0,b.jsx)(i.Heading,{level:2,subtitle:a("gallery.subtitle"),align:"center",className:"text-white mb-12 md:mb-20",children:(0,b.jsx)("span",{className:"text-white",children:a("gallery.title")})}),(0,b.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-5 gap-3 md:gap-6",children:n.map((c,d)=>(0,b.jsxs)("button",{onClick:()=>{m(d),k(!0)},className:"relative aspect-[3/4] rounded-2xl md:rounded-[32px] overflow-hidden group shadow-2xl cursor-pointer",children:[(0,b.jsx)(e.default,{src:c,alt:a("gallery.title"),fill:!0,className:"object-cover transition-transform duration-1000 group-hover:scale-110"}),(0,b.jsx)("div",{className:"absolute inset-0 bg-primary-dark/40 group-hover:bg-transparent transition-all duration-500"}),(0,b.jsx)("div",{className:"absolute inset-0 border-0 group-hover:border-[8px] md:group-hover:border-[12px] border-white/10 transition-all duration-500 pointer-events-none"})]},d))})]}),(0,b.jsx)(j,{isOpen:f,images:n,initialIndex:l,onClose:()=>k(!1)})]})}a.s(["default",()=>k])},390265,a=>{"use strict";var b=a.i(526156),c=a.i(912466),d=a.i(274209),e=a.i(281682);function f({eventName:a=e.AnalyticsEvents.BUTTON_CLICK,eventProperties:f={},onClick:g,...h}){let{trackEvent:i}=(0,d.useAnalytics)();return(0,b.jsx)(c.Button,{...h,onClick:b=>{i(a,{...f,label:"string"==typeof h.children?h.children:f.label}),g&&g(b)}})}a.s(["default",()=>f])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__5209d0e9._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; -//# debugId=62ee6973-90ff-e5b3-17f4-c9c5faf22d74 +//# debugId=8a7da826-f94a-8396-7351-63a0775388dc //# sourceMappingURL=%5Broot-of-the-server%5D__0bdab930._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__34977423._.js b/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__34977423._.js index eaa10a0cc..76dde41f8 100644 --- a/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__34977423._.js +++ b/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__34977423._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="705d570d-4c83-c603-3478-874f0ed3db1f")}catch(e){}}(); -module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},991320,a=>{"use strict";var b=a.i(526156);a.i(594214);var c=a.i(829091);function d({variant:a,className:d,color:e="#82ed20"}){return"circle"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:e,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:e,strokeWidth:"20",fill:"none"})}):null}a.s(["default",()=>d])},497627,a=>{"use strict";var b=a.i(526156),c=a.i(150765),d=a.i(603836),e=a.i(475625);a.i(594214);var f=a.i(5515),g=a.i(912466),h=a.i(544027),i=a.i(991320);function j({error:a,reset:j}){let k=(0,d.useTranslations)("Error");return(0,c.useEffect)(()=>{if(a?.message?.includes("Failed to find Server Action"))return void window.location.reload();let b=(0,e.getAppServices)();return b.errors.captureException(a),b.logger.error("Application error caught by boundary",{message:a?.message||"Unknown error",stack:a?.stack,digest:a?.digest}),document.body.setAttribute("data-force-solid-header","true"),()=>{document.body.removeAttribute("data-force-solid-header")}},[a]),(0,b.jsx)(b.Fragment,{children:(0,b.jsxs)(f.Container,{className:"relative py-32 mt-16 flex flex-col items-center justify-center text-center min-h-[70vh] overflow-hidden",children:[(0,b.jsx)("div",{className:"absolute inset-0 -z-10 opacity-[0.03] pointer-events-none flex items-center justify-center",children:(0,b.jsx)("span",{className:"text-[20rem] font-bold select-none",children:"500"})}),(0,b.jsxs)("div",{className:"relative mb-8",children:[(0,b.jsx)(h.Heading,{level:1,className:"text-6xl md:text-8xl font-bold mb-2 text-saturated",children:"500"}),(0,b.jsx)(i.default,{variant:"underline",className:"w-full h-6 -bottom-2 left-0 text-saturated/40"})]}),(0,b.jsx)(h.Heading,{level:2,className:"text-2xl md:text-3xl font-bold mb-4 text-primary",children:k("title")}),(0,b.jsx)("p",{className:"text-text-secondary mb-10 max-w-md text-lg mx-auto",children:k("description")}),(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[(0,b.jsx)(g.Button,{onClick:()=>j(),variant:"saturated",size:"lg",children:k("tryAgain")}),(0,b.jsx)(g.Button,{href:"/",variant:"outline",size:"lg",children:k("goHome")})]}),(0,b.jsx)("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-px h-24 bg-gradient-to-b from-saturated/50 to-transparent"})]})})}a.s(["default",()=>j])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__047498e4._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="7883262c-4160-8a31-b4cf-ff6362e425c4")}catch(e){}}(); +module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},991320,a=>{"use strict";var b=a.i(526156);a.i(594214);var c=a.i(829091);function d({variant:a,className:d,color:e="#82ed20"}){return"circle"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:e,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:e,strokeWidth:"20",fill:"none"})}):null}a.s(["default",()=>d])},497627,a=>{"use strict";var b=a.i(526156),c=a.i(150765),d=a.i(603836),e=a.i(475625);a.i(594214);var f=a.i(5515),g=a.i(912466),h=a.i(544027),i=a.i(991320);function j({error:a,reset:j}){let k=(0,d.useTranslations)("Error");return(0,c.useEffect)(()=>{if(a?.message?.includes("Failed to find Server Action"))return void window.location.reload();let b=(0,e.getAppServices)();return b.errors.captureException(a),b.logger.error("Application error caught by boundary",{message:a?.message||"Unknown error",stack:a?.stack,digest:a?.digest}),document.body.setAttribute("data-force-solid-header","true"),()=>{document.body.removeAttribute("data-force-solid-header")}},[a]),(0,b.jsx)(b.Fragment,{children:(0,b.jsxs)(f.Container,{className:"relative py-32 mt-16 flex flex-col items-center justify-center text-center min-h-[70vh] overflow-hidden",children:[(0,b.jsx)("div",{className:"absolute inset-0 -z-10 opacity-[0.03] pointer-events-none flex items-center justify-center",children:(0,b.jsx)("span",{className:"text-[20rem] font-bold select-none",children:"500"})}),(0,b.jsxs)("div",{className:"relative mb-8",children:[(0,b.jsx)(h.Heading,{level:1,className:"text-6xl md:text-8xl font-bold mb-2 text-saturated",children:"500"}),(0,b.jsx)(i.default,{variant:"underline",className:"w-full h-6 -bottom-2 left-0 text-saturated/40"})]}),(0,b.jsx)(h.Heading,{level:2,className:"text-2xl md:text-3xl font-bold mb-4 text-primary",children:k("title")}),(0,b.jsx)("p",{className:"text-text-secondary mb-10 max-w-md text-lg mx-auto",children:k("description")}),(0,b.jsxs)("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[(0,b.jsx)(g.Button,{onClick:()=>j(),variant:"saturated",size:"lg",children:k("tryAgain")}),(0,b.jsx)(g.Button,{href:"/",variant:"outline",size:"lg",children:k("goHome")})]}),(0,b.jsx)("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-px h-24 bg-gradient-to-b from-saturated/50 to-transparent"})]})})}a.s(["default",()=>j])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__047498e4._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; -//# debugId=705d570d-4c83-c603-3478-874f0ed3db1f +//# debugId=7883262c-4160-8a31-b4cf-ff6362e425c4 //# sourceMappingURL=%5Broot-of-the-server%5D__34977423._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js b/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js index 6f06334ef..6ab554574 100644 --- a/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js +++ b/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__63a582be._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="cabc1c22-9ae0-3f71-7467-1c4ff5313f07")}catch(e){}}(); -module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},991320,a=>{"use strict";var b=a.i(526156);a.i(594214);var c=a.i(829091);function d({variant:a,className:d,color:e="#82ed20"}){return"circle"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:e,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:e,strokeWidth:"20",fill:"none"})}):null}a.s(["default",()=>d])},868513,a=>{"use strict";var b=a.i(150765),c=a.i(274209),d=a.i(281682);function e({path:e}){let{trackEvent:f}=(0,c.useAnalytics)();return(0,b.useEffect)(()=>{f(d.AnalyticsEvents.ERROR,{type:"404_not_found",path:e}),a.A(163041).then(a=>{a.withScope(b=>{b.setTag("status_code","404"),b.setTag("path",e),a.captureMessage(`Route Not Found: ${e}`,"warning")})})},[f,e]),null}a.s(["default",()=>e])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__d3969a9f._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="f2d46975-0ecf-96dc-e3d0-554e1dbcdfba")}catch(e){}}(); +module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},991320,a=>{"use strict";var b=a.i(526156);a.i(594214);var c=a.i(829091);function d({variant:a,className:d,color:e="#82ed20"}){return"circle"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:e,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===a?(0,b.jsx)("svg",{className:(0,c.cn)("absolute pointer-events-none",d),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,b.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:e,strokeWidth:"20",fill:"none"})}):null}a.s(["default",()=>d])},868513,a=>{"use strict";var b=a.i(150765),c=a.i(274209),d=a.i(281682);function e({path:e}){let{trackEvent:f}=(0,c.useAnalytics)();return(0,b.useEffect)(()=>{f(d.AnalyticsEvents.ERROR,{type:"404_not_found",path:e}),a.A(163041).then(a=>{a.withScope(b=>{b.setTag("status_code","404"),b.setTag("path",e),a.captureMessage(`Route Not Found: ${e}`,"warning")})})},[f,e]),null}a.s(["default",()=>e])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__d3969a9f._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; -//# debugId=cabc1c22-9ae0-3f71-7467-1c4ff5313f07 +//# debugId=f2d46975-0ecf-96dc-e3d0-554e1dbcdfba //# sourceMappingURL=%5Broot-of-the-server%5D__63a582be._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js b/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js index be58bac6c..3882c89e8 100644 --- a/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js +++ b/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b20a6437._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="8fd69152-5b36-40dd-aea8-ff70fad106eb")}catch(e){}}(); -module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},100249,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(297622),g=a.r(308360),h=a.r(770173)},366014,a=>{"use strict";var b=a.i(526156),c=a.i(150765),d=a.i(603836);a.i(594214);var e=a.i(912466),f=a.i(544027),g=a.i(434904),h=a.i(618180),i=a.i(781027),j=a.i(41100),k=a.i(100249);let l=(0,k.createServerReference)("406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5",k.callServer,void 0,k.findSourceMapURL,"sendContactFormAction");var m=a.i(274209),n=a.i(281682);function o(){let a=(0,d.useTranslations)("Contact"),{trackEvent:k}=(0,m.useAnalytics)(),[o,p]=(0,c.useState)("idle"),[q,r]=(0,c.useState)(!1),s=a=>{q||(r(!0),k(n.AnalyticsEvents.FORM_START,{form_id:"contact_form",form_name:"Contact"})),k(n.AnalyticsEvents.FORM_FIELD_FOCUS,{form_id:"contact_form",field_id:a})};async function t(a){a.preventDefault(),p("submitting");let b=new FormData(a.currentTarget),c=b.get("email");try{let d=await l(b);d?.success?(k("contact_form_submission",{form_type:"general",email:c}),p("success"),a.target.reset()):(console.error("Contact form submission failed:",{email:c,error:d.error}),k(n.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:d.error||"submission_failed"}),p("error"))}catch(a){console.error("Contact form submission error:",{email:c,error:a}),k(n.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:a.message||"unexpected_error"}),p("error")}}return"success"===o?(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl text-center",role:"alert","aria-live":"polite",children:[(0,b.jsx)("div",{className:"w-20 h-20 bg-accent rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-accent/20",children:(0,b.jsx)("svg",{className:"w-10 h-10 text-primary-dark",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M5 13l4 4L19 7"})})}),(0,b.jsx)(f.Heading,{level:3,className:"mb-4",children:a("form.successTitle")||"Message Sent!"}),(0,b.jsx)("p",{className:"text-text-secondary text-lg mb-8",children:a("form.successDesc")||"Thank you for your message. We will get back to you as soon as possible."}),(0,b.jsx)(e.Button,{onClick:()=>p("idle"),variant:"saturated",children:a("form.sendAnother")||"Send another message"})]}):"error"===o?(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-destructive/20 shadow-2xl text-center bg-destructive/5 animate-slide-up",role:"alert","aria-live":"assertive",children:[(0,b.jsx)("div",{className:"w-20 h-20 bg-destructive rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-destructive/20",children:(0,b.jsxs)("svg",{className:"w-10 h-10 text-destructive-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,b.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"}),(0,b.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"})]})}),(0,b.jsx)(f.Heading,{level:3,className:"mb-4 text-destructive font-black",children:a("form.errorTitle")||"Submission Failed!"}),(0,b.jsx)("p",{className:"text-destructive/80 text-lg mb-8 leading-relaxed font-medium",children:a("form.error")||"Something went wrong. Please check your input and try again."}),(0,b.jsx)(e.Button,{onClick:()=>p("idle"),variant:"destructive",size:"lg",className:"w-full",children:a("form.tryAgain")||"Try Again"})]}):(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl animate-slide-up",children:[(0,b.jsx)(f.Heading,{level:3,subtitle:a("form.subtitle"),className:"mb-6 md:mb-10",children:a("form.title")}),(0,b.jsxs)("form",{id:"contact-form",onSubmit:t,className:"grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-8",children:[(0,b.jsx)("input",{type:"text",name:"company_website",tabIndex:-1,autoComplete:"off",style:{display:"none"},"aria-hidden":"true"}),(0,b.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-name",children:a("form.name")}),(0,b.jsx)(h.Input,{type:"text",id:"contact-name",name:"name",autoComplete:"name",enterKeyHint:"next",onFocus:()=>s("contact-name"),required:!0})]}),(0,b.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-email",children:a("form.email")}),(0,b.jsx)(h.Input,{type:"email",id:"contact-email",name:"email",autoComplete:"email",inputMode:"email",enterKeyHint:"next",placeholder:a("form.emailPlaceholder"),onFocus:()=>s("contact-email"),required:!0})]}),(0,b.jsxs)("div",{className:"md:col-span-2 space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-message",children:a("form.message")}),(0,b.jsx)(i.Textarea,{id:"contact-message",name:"message",rows:4,enterKeyHint:"send",placeholder:a("form.messagePlaceholder"),onFocus:()=>s("contact-message"),required:!0})]}),(0,b.jsx)("div",{className:"md:col-span-2 pt-2 md:pt-4",children:(0,b.jsx)(e.Button,{type:"submit",variant:"saturated",size:"lg",disabled:"submitting"===o,className:"w-full shadow-xl shadow-saturated/20 md:h-16 md:px-10 md:text-xl active:scale-[0.98] transition-transform",children:"submitting"===o?(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsxs)("svg",{className:"animate-spin h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),a("form.submitting")||"Sending..."]}):a("form.submit")})})]})]})}a.s(["default",()=>o],366014)},648658,a=>{"use strict";var b=a.i(526156);let c=(0,a.i(411487).default)(async()=>{},{loadableGenerated:{modules:[408235]},ssr:!1,loading:()=>(0,b.jsx)("div",{className:"h-full w-full bg-neutral-medium flex items-center justify-center",children:(0,b.jsx)("div",{className:"animate-pulse text-primary font-medium",children:"Loading Map..."})})});function d({address:a,lat:d,lng:e}){return(0,b.jsx)(c,{locations:[{name:"E-TIB Gruppe",address:a,lat:d,lng:e}]})}a.s(["default",()=>d])},567784,a=>{"use strict";var b=a.i(526156),c=a.i(150765);function d({email:a,className:d="",children:e}){let[f,g]=(0,c.useState)(!1);return((0,c.useEffect)(()=>{g(!0)},[]),f)?(0,b.jsx)("a",{href:`mailto:${a}`,className:d,children:e||a}):(0,b.jsx)("span",{className:d,"aria-hidden":"true",children:e||a.replace("@"," [at] ").replace(/\./g," [dot] ")})}a.s(["default",()=>d])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__00212f08._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="a5dfd7b8-c2aa-6494-36fb-8eae4b70a6ff")}catch(e){}}(); +module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},100249,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(297622),g=a.r(308360),h=a.r(770173)},366014,a=>{"use strict";var b=a.i(526156),c=a.i(150765),d=a.i(603836);a.i(594214);var e=a.i(912466),f=a.i(544027),g=a.i(434904),h=a.i(618180),i=a.i(781027),j=a.i(41100),k=a.i(100249);let l=(0,k.createServerReference)("406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5",k.callServer,void 0,k.findSourceMapURL,"sendContactFormAction");var m=a.i(274209),n=a.i(281682);function o(){let a=(0,d.useTranslations)("Contact"),{trackEvent:k}=(0,m.useAnalytics)(),[o,p]=(0,c.useState)("idle"),[q,r]=(0,c.useState)(!1),s=a=>{q||(r(!0),k(n.AnalyticsEvents.FORM_START,{form_id:"contact_form",form_name:"Contact"})),k(n.AnalyticsEvents.FORM_FIELD_FOCUS,{form_id:"contact_form",field_id:a})};async function t(a){a.preventDefault(),p("submitting");let b=new FormData(a.currentTarget),c=b.get("email");try{let d=await l(b);d?.success?(k("contact_form_submission",{form_type:"general",email:c}),p("success"),a.target.reset()):(console.error("Contact form submission failed:",{email:c,error:d.error}),k(n.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:d.error||"submission_failed"}),p("error"))}catch(a){console.error("Contact form submission error:",{email:c,error:a}),k(n.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:a.message||"unexpected_error"}),p("error")}}return"success"===o?(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl text-center",role:"alert","aria-live":"polite",children:[(0,b.jsx)("div",{className:"w-20 h-20 bg-accent rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-accent/20",children:(0,b.jsx)("svg",{className:"w-10 h-10 text-primary-dark",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M5 13l4 4L19 7"})})}),(0,b.jsx)(f.Heading,{level:3,className:"mb-4",children:a("form.successTitle")||"Message Sent!"}),(0,b.jsx)("p",{className:"text-text-secondary text-lg mb-8",children:a("form.successDesc")||"Thank you for your message. We will get back to you as soon as possible."}),(0,b.jsx)(e.Button,{onClick:()=>p("idle"),variant:"saturated",children:a("form.sendAnother")||"Send another message"})]}):"error"===o?(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-destructive/20 shadow-2xl text-center bg-destructive/5 animate-slide-up",role:"alert","aria-live":"assertive",children:[(0,b.jsx)("div",{className:"w-20 h-20 bg-destructive rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-destructive/20",children:(0,b.jsxs)("svg",{className:"w-10 h-10 text-destructive-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",children:[(0,b.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,b.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"}),(0,b.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"})]})}),(0,b.jsx)(f.Heading,{level:3,className:"mb-4 text-destructive font-black",children:a("form.errorTitle")||"Submission Failed!"}),(0,b.jsx)("p",{className:"text-destructive/80 text-lg mb-8 leading-relaxed font-medium",children:a("form.error")||"Something went wrong. Please check your input and try again."}),(0,b.jsx)(e.Button,{onClick:()=>p("idle"),variant:"destructive",size:"lg",className:"w-full",children:a("form.tryAgain")||"Try Again"})]}):(0,b.jsxs)(g.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl animate-slide-up",children:[(0,b.jsx)(f.Heading,{level:3,subtitle:a("form.subtitle"),className:"mb-6 md:mb-10",children:a("form.title")}),(0,b.jsxs)("form",{id:"contact-form",onSubmit:t,className:"grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-8",children:[(0,b.jsx)("input",{type:"text",name:"company_website",tabIndex:-1,autoComplete:"off",style:{display:"none"},"aria-hidden":"true"}),(0,b.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-name",children:a("form.name")}),(0,b.jsx)(h.Input,{type:"text",id:"contact-name",name:"name",autoComplete:"name",enterKeyHint:"next",onFocus:()=>s("contact-name"),required:!0})]}),(0,b.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-email",children:a("form.email")}),(0,b.jsx)(h.Input,{type:"email",id:"contact-email",name:"email",autoComplete:"email",inputMode:"email",enterKeyHint:"next",placeholder:a("form.emailPlaceholder"),onFocus:()=>s("contact-email"),required:!0})]}),(0,b.jsxs)("div",{className:"md:col-span-2 space-y-1 md:space-y-2",children:[(0,b.jsx)(j.Label,{htmlFor:"contact-message",children:a("form.message")}),(0,b.jsx)(i.Textarea,{id:"contact-message",name:"message",rows:4,enterKeyHint:"send",placeholder:a("form.messagePlaceholder"),onFocus:()=>s("contact-message"),required:!0})]}),(0,b.jsx)("div",{className:"md:col-span-2 pt-2 md:pt-4",children:(0,b.jsx)(e.Button,{type:"submit",variant:"saturated",size:"lg",disabled:"submitting"===o,className:"w-full shadow-xl shadow-saturated/20 md:h-16 md:px-10 md:text-xl active:scale-[0.98] transition-transform",children:"submitting"===o?(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsxs)("svg",{className:"animate-spin h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,b.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,b.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),a("form.submitting")||"Sending..."]}):a("form.submit")})})]})]})}a.s(["default",()=>o],366014)},648658,a=>{"use strict";var b=a.i(526156);let c=(0,a.i(411487).default)(async()=>{},{loadableGenerated:{modules:[408235]},ssr:!1,loading:()=>(0,b.jsx)("div",{className:"h-full w-full bg-neutral-medium flex items-center justify-center",children:(0,b.jsx)("div",{className:"animate-pulse text-primary font-medium",children:"Loading Map..."})})});function d({address:a,lat:d,lng:e}){return(0,b.jsx)(c,{locations:[{name:"E-TIB Gruppe",address:a,lat:d,lng:e}]})}a.s(["default",()=>d])},567784,a=>{"use strict";var b=a.i(526156),c=a.i(150765);function d({email:a,className:d="",children:e}){let[f,g]=(0,c.useState)(!1);return((0,c.useEffect)(()=>{g(!0)},[]),f)?(0,b.jsx)("a",{href:`mailto:${a}`,className:d,children:e||a}):(0,b.jsx)("span",{className:d,"aria-hidden":"true",children:e||a.replace("@"," [at] ").replace(/\./g," [dot] ")})}a.s(["default",()=>d])},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__00212f08._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}]; -//# debugId=8fd69152-5b36-40dd-aea8-ff70fad106eb +//# debugId=a5dfd7b8-c2aa-6494-36fb-8eae4b70a6ff //# sourceMappingURL=%5Broot-of-the-server%5D__b20a6437._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/chunks/ssr/components_5d55bae9._.js b/.next/standalone/.next/server/chunks/ssr/components_5d55bae9._.js index bc2bc839f..093f4923e 100644 --- a/.next/standalone/.next/server/chunks/ssr/components_5d55bae9._.js +++ b/.next/standalone/.next/server/chunks/ssr/components_5d55bae9._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="43e96792-ea07-2dfb-fdae-df98cc56aa4b")}catch(e){}}(); -module.exports=[594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},281104,a=>{"use strict";var b=a.i(150765),c=a.i(5423);function d({currentPage:a,totalPages:d,locale:e}){let f=(0,c.useRouter)();return(0,b.useEffect)(()=>{let b=b=>{document.activeElement?.tagName!=="INPUT"&&document.activeElement?.tagName!=="TEXTAREA"&&document.activeElement?.tagName!=="SELECT"&&("ArrowLeft"===b.key&&a>1?f.push(`/${e}/blog?page=${a-1}`):"ArrowRight"===b.key&&awindow.removeEventListener("keydown",b)},[a,d,e,f]),null}a.s(["BlogPaginationKeyboardObserver",()=>d])}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="371097cc-74ee-6094-693e-8d3b67267b07")}catch(e){}}(); +module.exports=[594214,90695,5515,544027,434904,618180,781027,41100,a=>{"use strict";var b=a.i(829091);a.i(912466);var c=a.i(526156);function d({className:a,children:d,...e}){return(0,c.jsx)("section",{className:(0,b.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",a),...e,children:d})}function e({className:a,children:d,...e}){return(0,c.jsx)("div",{className:(0,b.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",a),...e,children:d})}function f({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,c.jsxs)("div",{className:(0,b.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,c.jsxs)("span",{className:(0,b.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,c.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,c.jsx)("span",{className:(0,b.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,c.jsx)("span",{className:(0,b.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,c.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,c.jsx)("span",{className:(0,b.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,c.jsx)(l,{className:(0,b.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}function g({className:a,children:d,tag:e="div",...f}){return(0,c.jsx)(e,{className:(0,b.cn)("premium-card overflow-hidden",a),...f,children:d})}function h({className:a,...d}){return(0,c.jsx)("input",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",a),...d})}function i({className:a,...d}){return(0,c.jsx)("textarea",{className:(0,b.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",a),...d})}function j({className:a,...d}){return(0,c.jsx)("label",{className:(0,b.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",a),...d})}a.s(["Section",()=>d],90695),a.s(["Container",()=>e],5515),a.s(["Heading",()=>f],544027),a.s(["Card",()=>g],434904),a.s(["Input",()=>h],618180),a.s(["Textarea",()=>i],781027),a.s(["Label",()=>j],41100),a.s([],594214)},188457,a=>{"use strict";var b=a.i(526156),c=a.i(150765);a.i(594214);var d=a.i(829091);function e({children:a,className:e,threshold:f=.1,delay:g=0}){let[h,i]=(0,c.useState)(!1),j=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let a=new IntersectionObserver(([b])=>{b.isIntersecting&&(i(!0),a.unobserve(b.target))},{threshold:f}),b=j.current;return b&&a.observe(b),()=>{b&&a.unobserve(b)}},[f]),(0,b.jsx)("div",{ref:j,className:(0,d.cn)("reveal-on-scroll",h&&"is-visible",e),style:{transitionDelay:`${g}ms`},children:a})}a.s(["default",()=>e])},281104,a=>{"use strict";var b=a.i(150765),c=a.i(5423);function d({currentPage:a,totalPages:d,locale:e}){let f=(0,c.useRouter)();return(0,b.useEffect)(()=>{let b=b=>{document.activeElement?.tagName!=="INPUT"&&document.activeElement?.tagName!=="TEXTAREA"&&document.activeElement?.tagName!=="SELECT"&&("ArrowLeft"===b.key&&a>1?f.push(`/${e}/blog?page=${a-1}`):"ArrowRight"===b.key&&awindow.removeEventListener("keydown",b)},[a,d,e,f]),null}a.s(["BlogPaginationKeyboardObserver",()=>d])}]; -//# debugId=43e96792-ea07-2dfb-fdae-df98cc56aa4b +//# debugId=371097cc-74ee-6094-693e-8d3b67267b07 //# sourceMappingURL=components_5d55bae9._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/chunks/ssr/components_ui_c944c65b._.js b/.next/standalone/.next/server/chunks/ssr/components_ui_c944c65b._.js index 0f01f9c41..ffecdb132 100644 --- a/.next/standalone/.next/server/chunks/ssr/components_ui_c944c65b._.js +++ b/.next/standalone/.next/server/chunks/ssr/components_ui_c944c65b._.js @@ -1,5 +1,5 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="fc4d0ef2-948e-142d-5b3b-af74de050af8")}catch(e){}}(); -module.exports=[976957,a=>{"use strict";let b=(a=new Map,b=null,c)=>({nextPart:a,validators:b,classGroupId:c}),c=[],d=(a,b,c)=>{if(0==a.length-b)return c.classGroupId;let e=a[b],f=c.nextPart.get(e);if(f){let c=d(a,b+1,f);if(c)return c}let g=c.validators;if(null===g)return;let h=0===b?a.join("-"):a.slice(b).join("-"),i=g.length;for(let a=0;a{let d=b();for(let b in a)f(a[b],d,b,c);return d},f=(a,b,c,d)=>{let e=a.length;for(let f=0;f{"string"==typeof a?h(a,b,c):"function"==typeof a?i(a,b,c,d):j(a,b,c,d)},h=(a,b,c)=>{(""===a?b:k(b,a)).classGroupId=c},i=(a,b,c,d)=>{l(a)?f(a(d),b,c,d):(null===b.validators&&(b.validators=[]),b.validators.push({classGroupId:c,validator:a}))},j=(a,b,c,d)=>{let e=Object.entries(a),g=e.length;for(let a=0;a{let d=a,e=c.split("-"),f=e.length;for(let a=0;a"isThemeGetter"in a&&!0===a.isThemeGetter,m=[],n=(a,b,c,d,e)=>({modifiers:a,hasImportantModifier:b,baseClassName:c,maybePostfixModifierPosition:d,isExternal:e}),o=/\s+/,p=a=>{let b;if("string"==typeof a)return a;let c="";for(let d=0;d{let b=b=>b[a]||q;return b.isThemeGetter=!0,b},s=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,t=/^\((?:(\w[\w-]*):)?(.+)\)$/i,u=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,v=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,w=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,x=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,y=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,z=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,A=a=>u.test(a),B=a=>!!a&&!Number.isNaN(Number(a)),C=a=>!!a&&Number.isInteger(Number(a)),D=a=>a.endsWith("%")&&B(a.slice(0,-1)),E=a=>v.test(a),F=()=>!0,G=a=>w.test(a)&&!x.test(a),H=()=>!1,I=a=>y.test(a),J=a=>z.test(a),K=a=>!M(a)&&!U(a),L=a=>aa(a,ae,H),M=a=>s.test(a),N=a=>aa(a,af,G),O=a=>aa(a,ag,B),P=a=>aa(a,ai,F),Q=a=>aa(a,ah,H),R=a=>aa(a,ac,H),S=a=>aa(a,ad,J),T=a=>aa(a,aj,I),U=a=>t.test(a),V=a=>ab(a,af),W=a=>ab(a,ah),X=a=>ab(a,ac),Y=a=>ab(a,ae),Z=a=>ab(a,ad),$=a=>ab(a,aj,!0),_=a=>ab(a,ai,!0),aa=(a,b,c)=>{let d=s.exec(a);return!!d&&(d[1]?b(d[1]):c(d[2]))},ab=(a,b,c=!1)=>{let d=t.exec(a);return!!d&&(d[1]?b(d[1]):c)},ac=a=>"position"===a||"percentage"===a,ad=a=>"image"===a||"url"===a,ae=a=>"length"===a||"size"===a||"bg-size"===a,af=a=>"length"===a,ag=a=>"number"===a,ah=a=>"family-name"===a,ai=a=>"number"===a||"weight"===a,aj=a=>"shadow"===a,ak=((a,...b)=>{let f,g,h,i,j=a=>{let b=g(a);if(b)return b;let c=((a,b)=>{let{parseClassName:c,getClassGroupId:d,getConflictingClassGroupIds:e,sortModifiers:f}=b,g=[],h=a.trim().split(o),i="";for(let a=h.length-1;a>=0;a-=1){let b=h[a],{isExternal:j,modifiers:k,hasImportantModifier:l,baseClassName:m,maybePostfixModifierPosition:n}=c(b);if(j){i=b+(i.length>0?" "+i:i);continue}let o=!!n,p=d(o?m.substring(0,n):m);if(!p){if(!o||!(p=d(m))){i=b+(i.length>0?" "+i:i);continue}o=!1}let q=0===k.length?"":1===k.length?k[0]:f(k).join(":"),r=l?q+"!":q,s=r+p;if(g.indexOf(s)>-1)continue;g.push(s);let t=e(p,o);for(let a=0;a0?" "+i:i)}return i})(a,f);return h(a,c),c};return i=k=>{var l;let o;return g=(f={cache:(a=>{if(a<1)return{get:()=>void 0,set:()=>{}};let b=0,c=Object.create(null),d=Object.create(null),e=(e,f)=>{c[e]=f,++b>a&&(b=0,d=c,c=Object.create(null))};return{get(a){let b=c[a];return void 0!==b?b:void 0!==(b=d[a])?(e(a,b),b):void 0},set(a,b){a in c?c[a]=b:e(a,b)}}})((l=b.reduce((a,b)=>b(a),a())).cacheSize),parseClassName:(a=>{let{prefix:b,experimentalParseClassName:c}=a,d=a=>{let b,c=[],d=0,e=0,f=0,g=a.length;for(let h=0;hf?b-f:void 0)};if(b){let a=b+":",c=d;d=b=>b.startsWith(a)?c(b.slice(a.length)):n(m,!1,b,void 0,!0)}if(c){let a=d;d=b=>c({className:b,parseClassName:a})}return d})(l),sortModifiers:(o=new Map,l.orderSensitiveModifiers.forEach((a,b)=>{o.set(a,1e6+b)}),a=>{let b=[],c=[];for(let d=0;d0&&(c.sort(),b.push(...c),c=[]),b.push(e)):c.push(e)}return c.length>0&&(c.sort(),b.push(...c)),b}),...(a=>{let b=(a=>{let{theme:b,classGroups:c}=a;return e(c,b)})(a),{conflictingClassGroups:f,conflictingClassGroupModifiers:g}=a;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]")){var c;let b,d,e;return -1===(c=a).slice(1,-1).indexOf(":")?void 0:(d=(b=c.slice(1,-1)).indexOf(":"),(e=b.slice(0,d))?"arbitrary.."+e:void 0)}let e=a.split("-"),f=+(""===e[0]&&e.length>1);return d(e,f,b)},getConflictingClassGroupIds:(a,b)=>{if(b){let b=g[a],d=f[a];if(b){if(d){let a=Array(d.length+b.length);for(let b=0;bi(((...a)=>{let b,c,d=0,e="";for(;d{let a=r("color"),b=r("font"),c=r("text"),d=r("font-weight"),e=r("tracking"),f=r("leading"),g=r("breakpoint"),h=r("container"),i=r("spacing"),j=r("radius"),k=r("shadow"),l=r("inset-shadow"),m=r("text-shadow"),n=r("drop-shadow"),o=r("blur"),p=r("perspective"),q=r("aspect"),s=r("ease"),t=r("animate"),u=()=>["auto","avoid","all","avoid-page","page","left","right","column"],v=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],w=()=>[...v(),U,M],x=()=>["auto","hidden","clip","visible","scroll"],y=()=>["auto","contain","none"],z=()=>[U,M,i],G=()=>[A,"full","auto",...z()],H=()=>[C,"none","subgrid",U,M],I=()=>["auto",{span:["full",C,U,M]},C,U,M],J=()=>[C,"auto",U,M],aa=()=>["auto","min","max","fr",U,M],ab=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ac=()=>["start","end","center","stretch","center-safe","end-safe"],ad=()=>["auto",...z()],ae=()=>[A,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],af=()=>[A,"screen","full","dvw","lvw","svw","min","max","fit",...z()],ag=()=>[A,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],ah=()=>[a,U,M],ai=()=>[...v(),X,R,{position:[U,M]}],aj=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ak=()=>["auto","cover","contain",Y,L,{size:[U,M]}],al=()=>[D,V,N],am=()=>["","none","full",j,U,M],an=()=>["",B,V,N],ao=()=>["solid","dashed","dotted","double"],ap=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],aq=()=>[B,D,X,R],ar=()=>["","none",o,U,M],as=()=>["none",B,U,M],at=()=>["none",B,U,M],au=()=>[B,U,M],av=()=>[A,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[E],breakpoint:[E],color:[F],container:[E],"drop-shadow":[E],ease:["in","out","in-out"],font:[K],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[E],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[E],shadow:[E],spacing:["px",B],text:[E],"text-shadow":[E],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",A,M,U,q]}],container:["container"],columns:[{columns:[B,M,U,h]}],"break-after":[{"break-after":u()}],"break-before":[{"break-before":u()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:w()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:y()}],"overscroll-x":[{"overscroll-x":y()}],"overscroll-y":[{"overscroll-y":y()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:G()}],"inset-x":[{"inset-x":G()}],"inset-y":[{"inset-y":G()}],start:[{"inset-s":G(),start:G()}],end:[{"inset-e":G(),end:G()}],"inset-bs":[{"inset-bs":G()}],"inset-be":[{"inset-be":G()}],top:[{top:G()}],right:[{right:G()}],bottom:[{bottom:G()}],left:[{left:G()}],visibility:["visible","invisible","collapse"],z:[{z:[C,"auto",U,M]}],basis:[{basis:[A,"full","auto",h,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[B,A,"auto","initial","none",M]}],grow:[{grow:["",B,U,M]}],shrink:[{shrink:["",B,U,M]}],order:[{order:[C,"first","last","none",U,M]}],"grid-cols":[{"grid-cols":H()}],"col-start-end":[{col:I()}],"col-start":[{"col-start":J()}],"col-end":[{"col-end":J()}],"grid-rows":[{"grid-rows":H()}],"row-start-end":[{row:I()}],"row-start":[{"row-start":J()}],"row-end":[{"row-end":J()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":aa()}],"auto-rows":[{"auto-rows":aa()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...ab(),"normal"]}],"justify-items":[{"justify-items":[...ac(),"normal"]}],"justify-self":[{"justify-self":["auto",...ac()]}],"align-content":[{content:["normal",...ab()]}],"align-items":[{items:[...ac(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ac(),{baseline:["","last"]}]}],"place-content":[{"place-content":ab()}],"place-items":[{"place-items":[...ac(),"baseline"]}],"place-self":[{"place-self":["auto",...ac()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:ad()}],mx:[{mx:ad()}],my:[{my:ad()}],ms:[{ms:ad()}],me:[{me:ad()}],mbs:[{mbs:ad()}],mbe:[{mbe:ad()}],mt:[{mt:ad()}],mr:[{mr:ad()}],mb:[{mb:ad()}],ml:[{ml:ad()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...af()]}],"min-inline-size":[{"min-inline":["auto",...af()]}],"max-inline-size":[{"max-inline":["none",...af()]}],"block-size":[{block:["auto",...ag()]}],"min-block-size":[{"min-block":["auto",...ag()]}],"max-block-size":[{"max-block":["none",...ag()]}],w:[{w:[h,"screen",...ae()]}],"min-w":[{"min-w":[h,"screen","none",...ae()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[g]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",c,V,N]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,_,P]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",D,M]}],"font-family":[{font:[W,Q,b]}],"font-features":[{"font-features":[M]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[e,U,M]}],"line-clamp":[{"line-clamp":[B,"none",U,O]}],leading:[{leading:[f,...z()]}],"list-image":[{"list-image":["none",U,M]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",U,M]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ah()}],"text-color":[{text:ah()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ao(),"wavy"]}],"text-decoration-thickness":[{decoration:[B,"from-font","auto",U,N]}],"text-decoration-color":[{decoration:ah()}],"underline-offset":[{"underline-offset":[B,"auto",U,M]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",U,M]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",U,M]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ai()}],"bg-repeat":[{bg:aj()}],"bg-size":[{bg:ak()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},C,U,M],radial:["",U,M],conic:[C,U,M]},Z,S]}],"bg-color":[{bg:ah()}],"gradient-from-pos":[{from:al()}],"gradient-via-pos":[{via:al()}],"gradient-to-pos":[{to:al()}],"gradient-from":[{from:ah()}],"gradient-via":[{via:ah()}],"gradient-to":[{to:ah()}],rounded:[{rounded:am()}],"rounded-s":[{"rounded-s":am()}],"rounded-e":[{"rounded-e":am()}],"rounded-t":[{"rounded-t":am()}],"rounded-r":[{"rounded-r":am()}],"rounded-b":[{"rounded-b":am()}],"rounded-l":[{"rounded-l":am()}],"rounded-ss":[{"rounded-ss":am()}],"rounded-se":[{"rounded-se":am()}],"rounded-ee":[{"rounded-ee":am()}],"rounded-es":[{"rounded-es":am()}],"rounded-tl":[{"rounded-tl":am()}],"rounded-tr":[{"rounded-tr":am()}],"rounded-br":[{"rounded-br":am()}],"rounded-bl":[{"rounded-bl":am()}],"border-w":[{border:an()}],"border-w-x":[{"border-x":an()}],"border-w-y":[{"border-y":an()}],"border-w-s":[{"border-s":an()}],"border-w-e":[{"border-e":an()}],"border-w-bs":[{"border-bs":an()}],"border-w-be":[{"border-be":an()}],"border-w-t":[{"border-t":an()}],"border-w-r":[{"border-r":an()}],"border-w-b":[{"border-b":an()}],"border-w-l":[{"border-l":an()}],"divide-x":[{"divide-x":an()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":an()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ao(),"hidden","none"]}],"divide-style":[{divide:[...ao(),"hidden","none"]}],"border-color":[{border:ah()}],"border-color-x":[{"border-x":ah()}],"border-color-y":[{"border-y":ah()}],"border-color-s":[{"border-s":ah()}],"border-color-e":[{"border-e":ah()}],"border-color-bs":[{"border-bs":ah()}],"border-color-be":[{"border-be":ah()}],"border-color-t":[{"border-t":ah()}],"border-color-r":[{"border-r":ah()}],"border-color-b":[{"border-b":ah()}],"border-color-l":[{"border-l":ah()}],"divide-color":[{divide:ah()}],"outline-style":[{outline:[...ao(),"none","hidden"]}],"outline-offset":[{"outline-offset":[B,U,M]}],"outline-w":[{outline:["",B,V,N]}],"outline-color":[{outline:ah()}],shadow:[{shadow:["","none",k,$,T]}],"shadow-color":[{shadow:ah()}],"inset-shadow":[{"inset-shadow":["none",l,$,T]}],"inset-shadow-color":[{"inset-shadow":ah()}],"ring-w":[{ring:an()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ah()}],"ring-offset-w":[{"ring-offset":[B,N]}],"ring-offset-color":[{"ring-offset":ah()}],"inset-ring-w":[{"inset-ring":an()}],"inset-ring-color":[{"inset-ring":ah()}],"text-shadow":[{"text-shadow":["none",m,$,T]}],"text-shadow-color":[{"text-shadow":ah()}],opacity:[{opacity:[B,U,M]}],"mix-blend":[{"mix-blend":[...ap(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ap()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[B]}],"mask-image-linear-from-pos":[{"mask-linear-from":aq()}],"mask-image-linear-to-pos":[{"mask-linear-to":aq()}],"mask-image-linear-from-color":[{"mask-linear-from":ah()}],"mask-image-linear-to-color":[{"mask-linear-to":ah()}],"mask-image-t-from-pos":[{"mask-t-from":aq()}],"mask-image-t-to-pos":[{"mask-t-to":aq()}],"mask-image-t-from-color":[{"mask-t-from":ah()}],"mask-image-t-to-color":[{"mask-t-to":ah()}],"mask-image-r-from-pos":[{"mask-r-from":aq()}],"mask-image-r-to-pos":[{"mask-r-to":aq()}],"mask-image-r-from-color":[{"mask-r-from":ah()}],"mask-image-r-to-color":[{"mask-r-to":ah()}],"mask-image-b-from-pos":[{"mask-b-from":aq()}],"mask-image-b-to-pos":[{"mask-b-to":aq()}],"mask-image-b-from-color":[{"mask-b-from":ah()}],"mask-image-b-to-color":[{"mask-b-to":ah()}],"mask-image-l-from-pos":[{"mask-l-from":aq()}],"mask-image-l-to-pos":[{"mask-l-to":aq()}],"mask-image-l-from-color":[{"mask-l-from":ah()}],"mask-image-l-to-color":[{"mask-l-to":ah()}],"mask-image-x-from-pos":[{"mask-x-from":aq()}],"mask-image-x-to-pos":[{"mask-x-to":aq()}],"mask-image-x-from-color":[{"mask-x-from":ah()}],"mask-image-x-to-color":[{"mask-x-to":ah()}],"mask-image-y-from-pos":[{"mask-y-from":aq()}],"mask-image-y-to-pos":[{"mask-y-to":aq()}],"mask-image-y-from-color":[{"mask-y-from":ah()}],"mask-image-y-to-color":[{"mask-y-to":ah()}],"mask-image-radial":[{"mask-radial":[U,M]}],"mask-image-radial-from-pos":[{"mask-radial-from":aq()}],"mask-image-radial-to-pos":[{"mask-radial-to":aq()}],"mask-image-radial-from-color":[{"mask-radial-from":ah()}],"mask-image-radial-to-color":[{"mask-radial-to":ah()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":v()}],"mask-image-conic-pos":[{"mask-conic":[B]}],"mask-image-conic-from-pos":[{"mask-conic-from":aq()}],"mask-image-conic-to-pos":[{"mask-conic-to":aq()}],"mask-image-conic-from-color":[{"mask-conic-from":ah()}],"mask-image-conic-to-color":[{"mask-conic-to":ah()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ai()}],"mask-repeat":[{mask:aj()}],"mask-size":[{mask:ak()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",U,M]}],filter:[{filter:["","none",U,M]}],blur:[{blur:ar()}],brightness:[{brightness:[B,U,M]}],contrast:[{contrast:[B,U,M]}],"drop-shadow":[{"drop-shadow":["","none",n,$,T]}],"drop-shadow-color":[{"drop-shadow":ah()}],grayscale:[{grayscale:["",B,U,M]}],"hue-rotate":[{"hue-rotate":[B,U,M]}],invert:[{invert:["",B,U,M]}],saturate:[{saturate:[B,U,M]}],sepia:[{sepia:["",B,U,M]}],"backdrop-filter":[{"backdrop-filter":["","none",U,M]}],"backdrop-blur":[{"backdrop-blur":ar()}],"backdrop-brightness":[{"backdrop-brightness":[B,U,M]}],"backdrop-contrast":[{"backdrop-contrast":[B,U,M]}],"backdrop-grayscale":[{"backdrop-grayscale":["",B,U,M]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[B,U,M]}],"backdrop-invert":[{"backdrop-invert":["",B,U,M]}],"backdrop-opacity":[{"backdrop-opacity":[B,U,M]}],"backdrop-saturate":[{"backdrop-saturate":[B,U,M]}],"backdrop-sepia":[{"backdrop-sepia":["",B,U,M]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",U,M]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[B,"initial",U,M]}],ease:[{ease:["linear","initial",s,U,M]}],delay:[{delay:[B,U,M]}],animate:[{animate:["none",t,U,M]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,U,M]}],"perspective-origin":[{"perspective-origin":w()}],rotate:[{rotate:as()}],"rotate-x":[{"rotate-x":as()}],"rotate-y":[{"rotate-y":as()}],"rotate-z":[{"rotate-z":as()}],scale:[{scale:at()}],"scale-x":[{"scale-x":at()}],"scale-y":[{"scale-y":at()}],"scale-z":[{"scale-z":at()}],"scale-3d":["scale-3d"],skew:[{skew:au()}],"skew-x":[{"skew-x":au()}],"skew-y":[{"skew-y":au()}],transform:[{transform:[U,M,"","none","gpu","cpu"]}],"transform-origin":[{origin:w()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:av()}],"translate-x":[{"translate-x":av()}],"translate-y":[{"translate-y":av()}],"translate-z":[{"translate-z":av()}],"translate-none":["translate-none"],accent:[{accent:ah()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ah()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",U,M]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",U,M]}],fill:[{fill:["none",...ah()]}],"stroke-w":[{stroke:[B,V,N,O]}],stroke:[{stroke:["none",...ah()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function al(...a){return ak(function(){for(var a,b,c=0,d="",e=arguments.length;cal],976957)},401719,a=>{"use strict";var b=a.i(998511),c=a.i(892858),d=a.i(976957);let e={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},f={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},g={primary:"bg-primary-dark",secondary:"bg-secondary-light",accent:"bg-accent-dark",saturated:"bg-primary",outline:"bg-primary",ghost:"bg-primary-light/10",white:"bg-primary-light",destructive:"bg-destructive/90"};function h(a="primary",b="md",c){return(0,d.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",e[a],f[b],c)}function i({variant:a="primary"}){return(0,b.jsx)("span",{className:(0,d.cn)("absolute inset-0 translate-y-[101%] group-hover/btn:translate-y-0 transition-transform duration-500 ease-out",g[a])})}function j({className:a,variant:e="primary",size:f="md",href:g,...j}){let k=h(e,f,a),l=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:(0,d.cn)("relative z-10 flex items-center justify-center gap-2 transition-colors duration-500","white"===e?"group-hover/btn:text-primary-dark":""),children:j.children}),(0,b.jsx)(i,{variant:e})]});return g?(0,b.jsx)(c.default,{href:g,className:k,children:l}):(0,b.jsx)("button",{className:k,...j,children:l})}a.s(["Button",()=>j,"ButtonOverlay",()=>i,"getButtonClasses",()=>h])},277870,a=>{"use strict";var b=a.i(998511),c=a.i(976957);function d({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,b.jsxs)("div",{className:(0,c.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,b.jsxs)("span",{className:(0,c.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,b.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,b.jsx)("span",{className:(0,c.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,b.jsx)("span",{className:(0,c.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,b.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,b.jsx)("span",{className:(0,c.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,b.jsx)(l,{className:(0,c.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}a.s(["Heading",()=>d])}]; +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="3c897582-a4d1-8e25-0542-a4aa7f91f5ef")}catch(e){}}(); +module.exports=[976957,a=>{"use strict";let b=(a=new Map,b=null,c)=>({nextPart:a,validators:b,classGroupId:c}),c=[],d=(a,b,c)=>{if(0==a.length-b)return c.classGroupId;let e=a[b],f=c.nextPart.get(e);if(f){let c=d(a,b+1,f);if(c)return c}let g=c.validators;if(null===g)return;let h=0===b?a.join("-"):a.slice(b).join("-"),i=g.length;for(let a=0;a{let d=b();for(let b in a)f(a[b],d,b,c);return d},f=(a,b,c,d)=>{let e=a.length;for(let f=0;f{"string"==typeof a?h(a,b,c):"function"==typeof a?i(a,b,c,d):j(a,b,c,d)},h=(a,b,c)=>{(""===a?b:k(b,a)).classGroupId=c},i=(a,b,c,d)=>{l(a)?f(a(d),b,c,d):(null===b.validators&&(b.validators=[]),b.validators.push({classGroupId:c,validator:a}))},j=(a,b,c,d)=>{let e=Object.entries(a),g=e.length;for(let a=0;a{let d=a,e=c.split("-"),f=e.length;for(let a=0;a"isThemeGetter"in a&&!0===a.isThemeGetter,m=[],n=(a,b,c,d,e)=>({modifiers:a,hasImportantModifier:b,baseClassName:c,maybePostfixModifierPosition:d,isExternal:e}),o=/\s+/,p=a=>{let b;if("string"==typeof a)return a;let c="";for(let d=0;d{let b=b=>b[a]||q;return b.isThemeGetter=!0,b},s=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,t=/^\((?:(\w[\w-]*):)?(.+)\)$/i,u=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,v=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,w=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,x=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,y=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,z=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,A=a=>u.test(a),B=a=>!!a&&!Number.isNaN(Number(a)),C=a=>!!a&&Number.isInteger(Number(a)),D=a=>a.endsWith("%")&&B(a.slice(0,-1)),E=a=>v.test(a),F=()=>!0,G=a=>w.test(a)&&!x.test(a),H=()=>!1,I=a=>y.test(a),J=a=>z.test(a),K=a=>!M(a)&&!U(a),L=a=>aa(a,ae,H),M=a=>s.test(a),N=a=>aa(a,af,G),O=a=>aa(a,ag,B),P=a=>aa(a,ai,F),Q=a=>aa(a,ah,H),R=a=>aa(a,ac,H),S=a=>aa(a,ad,J),T=a=>aa(a,aj,I),U=a=>t.test(a),V=a=>ab(a,af),W=a=>ab(a,ah),X=a=>ab(a,ac),Y=a=>ab(a,ae),Z=a=>ab(a,ad),$=a=>ab(a,aj,!0),_=a=>ab(a,ai,!0),aa=(a,b,c)=>{let d=s.exec(a);return!!d&&(d[1]?b(d[1]):c(d[2]))},ab=(a,b,c=!1)=>{let d=t.exec(a);return!!d&&(d[1]?b(d[1]):c)},ac=a=>"position"===a||"percentage"===a,ad=a=>"image"===a||"url"===a,ae=a=>"length"===a||"size"===a||"bg-size"===a,af=a=>"length"===a,ag=a=>"number"===a,ah=a=>"family-name"===a,ai=a=>"number"===a||"weight"===a,aj=a=>"shadow"===a,ak=((a,...b)=>{let f,g,h,i,j=a=>{let b=g(a);if(b)return b;let c=((a,b)=>{let{parseClassName:c,getClassGroupId:d,getConflictingClassGroupIds:e,sortModifiers:f}=b,g=[],h=a.trim().split(o),i="";for(let a=h.length-1;a>=0;a-=1){let b=h[a],{isExternal:j,modifiers:k,hasImportantModifier:l,baseClassName:m,maybePostfixModifierPosition:n}=c(b);if(j){i=b+(i.length>0?" "+i:i);continue}let o=!!n,p=d(o?m.substring(0,n):m);if(!p){if(!o||!(p=d(m))){i=b+(i.length>0?" "+i:i);continue}o=!1}let q=0===k.length?"":1===k.length?k[0]:f(k).join(":"),r=l?q+"!":q,s=r+p;if(g.indexOf(s)>-1)continue;g.push(s);let t=e(p,o);for(let a=0;a0?" "+i:i)}return i})(a,f);return h(a,c),c};return i=k=>{var l;let o;return g=(f={cache:(a=>{if(a<1)return{get:()=>void 0,set:()=>{}};let b=0,c=Object.create(null),d=Object.create(null),e=(e,f)=>{c[e]=f,++b>a&&(b=0,d=c,c=Object.create(null))};return{get(a){let b=c[a];return void 0!==b?b:void 0!==(b=d[a])?(e(a,b),b):void 0},set(a,b){a in c?c[a]=b:e(a,b)}}})((l=b.reduce((a,b)=>b(a),a())).cacheSize),parseClassName:(a=>{let{prefix:b,experimentalParseClassName:c}=a,d=a=>{let b,c=[],d=0,e=0,f=0,g=a.length;for(let h=0;hf?b-f:void 0)};if(b){let a=b+":",c=d;d=b=>b.startsWith(a)?c(b.slice(a.length)):n(m,!1,b,void 0,!0)}if(c){let a=d;d=b=>c({className:b,parseClassName:a})}return d})(l),sortModifiers:(o=new Map,l.orderSensitiveModifiers.forEach((a,b)=>{o.set(a,1e6+b)}),a=>{let b=[],c=[];for(let d=0;d0&&(c.sort(),b.push(...c),c=[]),b.push(e)):c.push(e)}return c.length>0&&(c.sort(),b.push(...c)),b}),...(a=>{let b=(a=>{let{theme:b,classGroups:c}=a;return e(c,b)})(a),{conflictingClassGroups:f,conflictingClassGroupModifiers:g}=a;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]")){var c;let b,d,e;return -1===(c=a).slice(1,-1).indexOf(":")?void 0:(d=(b=c.slice(1,-1)).indexOf(":"),(e=b.slice(0,d))?"arbitrary.."+e:void 0)}let e=a.split("-"),f=+(""===e[0]&&e.length>1);return d(e,f,b)},getConflictingClassGroupIds:(a,b)=>{if(b){let b=g[a],d=f[a];if(b){if(d){let a=Array(d.length+b.length);for(let b=0;bi(((...a)=>{let b,c,d=0,e="";for(;d{let a=r("color"),b=r("font"),c=r("text"),d=r("font-weight"),e=r("tracking"),f=r("leading"),g=r("breakpoint"),h=r("container"),i=r("spacing"),j=r("radius"),k=r("shadow"),l=r("inset-shadow"),m=r("text-shadow"),n=r("drop-shadow"),o=r("blur"),p=r("perspective"),q=r("aspect"),s=r("ease"),t=r("animate"),u=()=>["auto","avoid","all","avoid-page","page","left","right","column"],v=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],w=()=>[...v(),U,M],x=()=>["auto","hidden","clip","visible","scroll"],y=()=>["auto","contain","none"],z=()=>[U,M,i],G=()=>[A,"full","auto",...z()],H=()=>[C,"none","subgrid",U,M],I=()=>["auto",{span:["full",C,U,M]},C,U,M],J=()=>[C,"auto",U,M],aa=()=>["auto","min","max","fr",U,M],ab=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ac=()=>["start","end","center","stretch","center-safe","end-safe"],ad=()=>["auto",...z()],ae=()=>[A,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],af=()=>[A,"screen","full","dvw","lvw","svw","min","max","fit",...z()],ag=()=>[A,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],ah=()=>[a,U,M],ai=()=>[...v(),X,R,{position:[U,M]}],aj=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ak=()=>["auto","cover","contain",Y,L,{size:[U,M]}],al=()=>[D,V,N],am=()=>["","none","full",j,U,M],an=()=>["",B,V,N],ao=()=>["solid","dashed","dotted","double"],ap=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],aq=()=>[B,D,X,R],ar=()=>["","none",o,U,M],as=()=>["none",B,U,M],at=()=>["none",B,U,M],au=()=>[B,U,M],av=()=>[A,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[E],breakpoint:[E],color:[F],container:[E],"drop-shadow":[E],ease:["in","out","in-out"],font:[K],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[E],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[E],shadow:[E],spacing:["px",B],text:[E],"text-shadow":[E],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",A,M,U,q]}],container:["container"],columns:[{columns:[B,M,U,h]}],"break-after":[{"break-after":u()}],"break-before":[{"break-before":u()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:w()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:y()}],"overscroll-x":[{"overscroll-x":y()}],"overscroll-y":[{"overscroll-y":y()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:G()}],"inset-x":[{"inset-x":G()}],"inset-y":[{"inset-y":G()}],start:[{"inset-s":G(),start:G()}],end:[{"inset-e":G(),end:G()}],"inset-bs":[{"inset-bs":G()}],"inset-be":[{"inset-be":G()}],top:[{top:G()}],right:[{right:G()}],bottom:[{bottom:G()}],left:[{left:G()}],visibility:["visible","invisible","collapse"],z:[{z:[C,"auto",U,M]}],basis:[{basis:[A,"full","auto",h,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[B,A,"auto","initial","none",M]}],grow:[{grow:["",B,U,M]}],shrink:[{shrink:["",B,U,M]}],order:[{order:[C,"first","last","none",U,M]}],"grid-cols":[{"grid-cols":H()}],"col-start-end":[{col:I()}],"col-start":[{"col-start":J()}],"col-end":[{"col-end":J()}],"grid-rows":[{"grid-rows":H()}],"row-start-end":[{row:I()}],"row-start":[{"row-start":J()}],"row-end":[{"row-end":J()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":aa()}],"auto-rows":[{"auto-rows":aa()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...ab(),"normal"]}],"justify-items":[{"justify-items":[...ac(),"normal"]}],"justify-self":[{"justify-self":["auto",...ac()]}],"align-content":[{content:["normal",...ab()]}],"align-items":[{items:[...ac(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ac(),{baseline:["","last"]}]}],"place-content":[{"place-content":ab()}],"place-items":[{"place-items":[...ac(),"baseline"]}],"place-self":[{"place-self":["auto",...ac()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:ad()}],mx:[{mx:ad()}],my:[{my:ad()}],ms:[{ms:ad()}],me:[{me:ad()}],mbs:[{mbs:ad()}],mbe:[{mbe:ad()}],mt:[{mt:ad()}],mr:[{mr:ad()}],mb:[{mb:ad()}],ml:[{ml:ad()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...af()]}],"min-inline-size":[{"min-inline":["auto",...af()]}],"max-inline-size":[{"max-inline":["none",...af()]}],"block-size":[{block:["auto",...ag()]}],"min-block-size":[{"min-block":["auto",...ag()]}],"max-block-size":[{"max-block":["none",...ag()]}],w:[{w:[h,"screen",...ae()]}],"min-w":[{"min-w":[h,"screen","none",...ae()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[g]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",c,V,N]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,_,P]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",D,M]}],"font-family":[{font:[W,Q,b]}],"font-features":[{"font-features":[M]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[e,U,M]}],"line-clamp":[{"line-clamp":[B,"none",U,O]}],leading:[{leading:[f,...z()]}],"list-image":[{"list-image":["none",U,M]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",U,M]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ah()}],"text-color":[{text:ah()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ao(),"wavy"]}],"text-decoration-thickness":[{decoration:[B,"from-font","auto",U,N]}],"text-decoration-color":[{decoration:ah()}],"underline-offset":[{"underline-offset":[B,"auto",U,M]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",U,M]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",U,M]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ai()}],"bg-repeat":[{bg:aj()}],"bg-size":[{bg:ak()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},C,U,M],radial:["",U,M],conic:[C,U,M]},Z,S]}],"bg-color":[{bg:ah()}],"gradient-from-pos":[{from:al()}],"gradient-via-pos":[{via:al()}],"gradient-to-pos":[{to:al()}],"gradient-from":[{from:ah()}],"gradient-via":[{via:ah()}],"gradient-to":[{to:ah()}],rounded:[{rounded:am()}],"rounded-s":[{"rounded-s":am()}],"rounded-e":[{"rounded-e":am()}],"rounded-t":[{"rounded-t":am()}],"rounded-r":[{"rounded-r":am()}],"rounded-b":[{"rounded-b":am()}],"rounded-l":[{"rounded-l":am()}],"rounded-ss":[{"rounded-ss":am()}],"rounded-se":[{"rounded-se":am()}],"rounded-ee":[{"rounded-ee":am()}],"rounded-es":[{"rounded-es":am()}],"rounded-tl":[{"rounded-tl":am()}],"rounded-tr":[{"rounded-tr":am()}],"rounded-br":[{"rounded-br":am()}],"rounded-bl":[{"rounded-bl":am()}],"border-w":[{border:an()}],"border-w-x":[{"border-x":an()}],"border-w-y":[{"border-y":an()}],"border-w-s":[{"border-s":an()}],"border-w-e":[{"border-e":an()}],"border-w-bs":[{"border-bs":an()}],"border-w-be":[{"border-be":an()}],"border-w-t":[{"border-t":an()}],"border-w-r":[{"border-r":an()}],"border-w-b":[{"border-b":an()}],"border-w-l":[{"border-l":an()}],"divide-x":[{"divide-x":an()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":an()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ao(),"hidden","none"]}],"divide-style":[{divide:[...ao(),"hidden","none"]}],"border-color":[{border:ah()}],"border-color-x":[{"border-x":ah()}],"border-color-y":[{"border-y":ah()}],"border-color-s":[{"border-s":ah()}],"border-color-e":[{"border-e":ah()}],"border-color-bs":[{"border-bs":ah()}],"border-color-be":[{"border-be":ah()}],"border-color-t":[{"border-t":ah()}],"border-color-r":[{"border-r":ah()}],"border-color-b":[{"border-b":ah()}],"border-color-l":[{"border-l":ah()}],"divide-color":[{divide:ah()}],"outline-style":[{outline:[...ao(),"none","hidden"]}],"outline-offset":[{"outline-offset":[B,U,M]}],"outline-w":[{outline:["",B,V,N]}],"outline-color":[{outline:ah()}],shadow:[{shadow:["","none",k,$,T]}],"shadow-color":[{shadow:ah()}],"inset-shadow":[{"inset-shadow":["none",l,$,T]}],"inset-shadow-color":[{"inset-shadow":ah()}],"ring-w":[{ring:an()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ah()}],"ring-offset-w":[{"ring-offset":[B,N]}],"ring-offset-color":[{"ring-offset":ah()}],"inset-ring-w":[{"inset-ring":an()}],"inset-ring-color":[{"inset-ring":ah()}],"text-shadow":[{"text-shadow":["none",m,$,T]}],"text-shadow-color":[{"text-shadow":ah()}],opacity:[{opacity:[B,U,M]}],"mix-blend":[{"mix-blend":[...ap(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ap()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[B]}],"mask-image-linear-from-pos":[{"mask-linear-from":aq()}],"mask-image-linear-to-pos":[{"mask-linear-to":aq()}],"mask-image-linear-from-color":[{"mask-linear-from":ah()}],"mask-image-linear-to-color":[{"mask-linear-to":ah()}],"mask-image-t-from-pos":[{"mask-t-from":aq()}],"mask-image-t-to-pos":[{"mask-t-to":aq()}],"mask-image-t-from-color":[{"mask-t-from":ah()}],"mask-image-t-to-color":[{"mask-t-to":ah()}],"mask-image-r-from-pos":[{"mask-r-from":aq()}],"mask-image-r-to-pos":[{"mask-r-to":aq()}],"mask-image-r-from-color":[{"mask-r-from":ah()}],"mask-image-r-to-color":[{"mask-r-to":ah()}],"mask-image-b-from-pos":[{"mask-b-from":aq()}],"mask-image-b-to-pos":[{"mask-b-to":aq()}],"mask-image-b-from-color":[{"mask-b-from":ah()}],"mask-image-b-to-color":[{"mask-b-to":ah()}],"mask-image-l-from-pos":[{"mask-l-from":aq()}],"mask-image-l-to-pos":[{"mask-l-to":aq()}],"mask-image-l-from-color":[{"mask-l-from":ah()}],"mask-image-l-to-color":[{"mask-l-to":ah()}],"mask-image-x-from-pos":[{"mask-x-from":aq()}],"mask-image-x-to-pos":[{"mask-x-to":aq()}],"mask-image-x-from-color":[{"mask-x-from":ah()}],"mask-image-x-to-color":[{"mask-x-to":ah()}],"mask-image-y-from-pos":[{"mask-y-from":aq()}],"mask-image-y-to-pos":[{"mask-y-to":aq()}],"mask-image-y-from-color":[{"mask-y-from":ah()}],"mask-image-y-to-color":[{"mask-y-to":ah()}],"mask-image-radial":[{"mask-radial":[U,M]}],"mask-image-radial-from-pos":[{"mask-radial-from":aq()}],"mask-image-radial-to-pos":[{"mask-radial-to":aq()}],"mask-image-radial-from-color":[{"mask-radial-from":ah()}],"mask-image-radial-to-color":[{"mask-radial-to":ah()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":v()}],"mask-image-conic-pos":[{"mask-conic":[B]}],"mask-image-conic-from-pos":[{"mask-conic-from":aq()}],"mask-image-conic-to-pos":[{"mask-conic-to":aq()}],"mask-image-conic-from-color":[{"mask-conic-from":ah()}],"mask-image-conic-to-color":[{"mask-conic-to":ah()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ai()}],"mask-repeat":[{mask:aj()}],"mask-size":[{mask:ak()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",U,M]}],filter:[{filter:["","none",U,M]}],blur:[{blur:ar()}],brightness:[{brightness:[B,U,M]}],contrast:[{contrast:[B,U,M]}],"drop-shadow":[{"drop-shadow":["","none",n,$,T]}],"drop-shadow-color":[{"drop-shadow":ah()}],grayscale:[{grayscale:["",B,U,M]}],"hue-rotate":[{"hue-rotate":[B,U,M]}],invert:[{invert:["",B,U,M]}],saturate:[{saturate:[B,U,M]}],sepia:[{sepia:["",B,U,M]}],"backdrop-filter":[{"backdrop-filter":["","none",U,M]}],"backdrop-blur":[{"backdrop-blur":ar()}],"backdrop-brightness":[{"backdrop-brightness":[B,U,M]}],"backdrop-contrast":[{"backdrop-contrast":[B,U,M]}],"backdrop-grayscale":[{"backdrop-grayscale":["",B,U,M]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[B,U,M]}],"backdrop-invert":[{"backdrop-invert":["",B,U,M]}],"backdrop-opacity":[{"backdrop-opacity":[B,U,M]}],"backdrop-saturate":[{"backdrop-saturate":[B,U,M]}],"backdrop-sepia":[{"backdrop-sepia":["",B,U,M]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",U,M]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[B,"initial",U,M]}],ease:[{ease:["linear","initial",s,U,M]}],delay:[{delay:[B,U,M]}],animate:[{animate:["none",t,U,M]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,U,M]}],"perspective-origin":[{"perspective-origin":w()}],rotate:[{rotate:as()}],"rotate-x":[{"rotate-x":as()}],"rotate-y":[{"rotate-y":as()}],"rotate-z":[{"rotate-z":as()}],scale:[{scale:at()}],"scale-x":[{"scale-x":at()}],"scale-y":[{"scale-y":at()}],"scale-z":[{"scale-z":at()}],"scale-3d":["scale-3d"],skew:[{skew:au()}],"skew-x":[{"skew-x":au()}],"skew-y":[{"skew-y":au()}],transform:[{transform:[U,M,"","none","gpu","cpu"]}],"transform-origin":[{origin:w()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:av()}],"translate-x":[{"translate-x":av()}],"translate-y":[{"translate-y":av()}],"translate-z":[{"translate-z":av()}],"translate-none":["translate-none"],accent:[{accent:ah()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ah()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",U,M]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",U,M]}],fill:[{fill:["none",...ah()]}],"stroke-w":[{stroke:[B,V,N,O]}],stroke:[{stroke:["none",...ah()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function al(...a){return ak(function(){for(var a,b,c=0,d="",e=arguments.length;cal],976957)},401719,a=>{"use strict";var b=a.i(998511),c=a.i(892858),d=a.i(976957);let e={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},f={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},g={primary:"bg-primary-dark",secondary:"bg-secondary-light",accent:"bg-accent-dark",saturated:"bg-primary",outline:"bg-primary",ghost:"bg-primary-light/10",white:"bg-primary-light",destructive:"bg-destructive/90"};function h(a="primary",b="md",c){return(0,d.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",e[a],f[b],c)}function i({variant:a="primary"}){return(0,b.jsx)("span",{className:(0,d.cn)("absolute inset-0 translate-y-[101%] group-hover/btn:translate-y-0 transition-transform duration-500 ease-out",g[a])})}function j({className:a,variant:e="primary",size:f="md",href:g,...j}){let k=h(e,f,a),l=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:(0,d.cn)("relative z-10 flex items-center justify-center gap-2 transition-colors duration-500","white"===e?"group-hover/btn:text-primary-dark":""),children:j.children}),(0,b.jsx)(i,{variant:e})]});return g?(0,b.jsx)(c.default,{href:g,className:k,children:l}):(0,b.jsx)("button",{className:k,...j,children:l})}a.s(["Button",()=>j,"ButtonOverlay",()=>i,"getButtonClasses",()=>h])},277870,a=>{"use strict";var b=a.i(998511),c=a.i(976957);function d({level:a=2,size:d,variant:e="dark",align:f="left",subtitle:g,children:h,className:i,subtitleClassName:j,badgeStyle:k="industrial"}){let l=`h${a}`,m=d||String(a);return(0,b.jsxs)("div",{className:(0,c.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[f],i),children:[g&&"industrial"===k&&(0,b.jsxs)("span",{className:(0,c.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===e?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",j),children:[(0,b.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,b.jsx)("span",{className:(0,c.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===e?"bg-white":"bg-primary")}),(0,b.jsx)("span",{className:(0,c.cn)("relative inline-flex rounded-full h-2 w-2","white"===e?"bg-white":"bg-primary")})]}),(0,b.jsx)("span",{children:g})]}),g&&"simple"===k&&(0,b.jsx)("span",{className:(0,c.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===e?"text-white/80":"text-accent",j),children:g}),(0,b.jsx)(l,{className:(0,c.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[e]),children:h})]})}a.s(["Heading",()=>d])}]; -//# debugId=fc4d0ef2-948e-142d-5b3b-af74de050af8 +//# debugId=3c897582-a4d1-8e25-0542-a4aa7f91f5ef //# sourceMappingURL=components_ui_c944c65b._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js b/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js index 892f04432..1641d9b57 100644 --- a/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js +++ b/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="de2c1a74-3f86-153e-3829-ec16c4c99ae1")}catch(e){}}(); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="1a5b8728-ca5f-4a09-bec2-4f5e70493008")}catch(e){}}(); module.exports=[220468,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.GLOBAL_OBJ=globalThis},801739,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.SDK_VERSION="10.47.0"},738265,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(801739),e=a.r(799657);function f(a){let b=a.__SENTRY__=a.__SENTRY__||{};return b.version=b.version||d.SDK_VERSION,b[d.SDK_VERSION]=b[d.SDK_VERSION]||{}}c.getGlobalSingleton=function(a,b,c=e.GLOBAL_OBJ){let f=c.__SENTRY__=c.__SENTRY__||{},g=f[d.SDK_VERSION]=f[d.SDK_VERSION]||{};return g[a]||(g[a]=b())},c.getMainCarrier=function(){return f(e.GLOBAL_OBJ),e.GLOBAL_OBJ},c.getSentryCarrier=f},55915,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(738265),e=a.r(220468),f=a.r(799657),g={};function h(a){if(!("console"in f.GLOBAL_OBJ))return a();let b=f.GLOBAL_OBJ.console,c={},d=Object.keys(g);d.forEach(a=>{let d=g[a];c[a]=b[a],b[a]=d});try{return a()}finally{d.forEach(a=>{b[a]=c[a]})}}function i(){return k().enabled}function j(a,...b){e.DEBUG_BUILD&&i()&&h(()=>{f.GLOBAL_OBJ.console[a](`Sentry Logger [${a}]:`,...b)})}function k(){return e.DEBUG_BUILD?d.getGlobalSingleton("loggerSettings",()=>({enabled:!1})):{enabled:!1}}c.CONSOLE_LEVELS=["debug","info","warn","error","log","assert","trace"],c.consoleSandbox=h,c.debug={enable:function(){k().enabled=!0},disable:function(){k().enabled=!1},isEnabled:i,log:function(...a){j("log",...a)},warn:function(...a){j("warn",...a)},error:function(...a){j("error",...a)}},c.originalConsoleMethods=g},696937,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=/\(error: (.*)\)/,e=/captureMessage|captureException/;function f(...a){let b=a.sort((a,b)=>a[0]-b[0]).map(a=>a[1]);return(a,c=0,e=0)=>{let f=[],h=a.split("\n");for(let a=c;a1024&&(c=c.slice(0,1024));let g=d.test(c)?c.replace(d,"$1"):c;if(!g.match(/\S*Error: /)){for(let a of b){let b=a(g);if(b){f.push(b);break}}if(f.length>=50+e)break}}return g(f.slice(e))}}function g(a){if(!a.length)return[];let b=Array.from(a);return/sentryWrapped/.test(h(b).function||"")&&b.pop(),b.reverse(),e.test(h(b).function||"")&&(b.pop(),e.test(h(b).function||"")&&b.pop()),b.slice(0,50).map(a=>({...a,filename:a.filename||h(b).filename,function:a.function||"?"}))}function h(a){return a[a.length-1]||{}}let i="";c.UNKNOWN_FUNCTION="?",c.createStackParser=f,c.getFramesFromEvent=function(a){let b=a.exception;if(b){let a=[];try{return b.values.forEach(b=>{b.stacktrace.frames&&a.push(...b.stacktrace.frames)}),a}catch{}}},c.getFunctionName=function(a){try{if(!a||"function"!=typeof a)return i;return a.name||i}catch{return i}},c.getVueInternalName=function(a){return"__v_isVNode"in a&&a.__v_isVNode?"[VueVNode]":"[VueViewModel]"},c.normalizeStackTracePath=function(a){let b=a?.startsWith("file://")?a.slice(7):a;return b?.match(/\/[A-Z]:/)&&(b=b.slice(1)),b},c.stackParserFromStackParserOptions=function(a){return Array.isArray(a)?f(...a):a},c.stripSentryFramesAndReverse=g},621762,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(220468),e=a.r(55915),f=a.r(696937),g={},h={};c.addHandler=function(a,b){g[a]=g[a]||[],g[a].push(b)},c.maybeInstrument=function(a,b){if(!h[a]){h[a]=!0;try{b()}catch(b){d.DEBUG_BUILD&&e.debug.error(`Error while instrumenting ${a}`,b)}}},c.resetInstrumentationHandlers=function(){Object.keys(g).forEach(a=>{g[a]=void 0})},c.triggerHandlers=function(a,b){let c=a&&g[a];if(c)for(let g of c)try{g(b)}catch(b){d.DEBUG_BUILD&&e.debug.error(`Error while triggering instrumentation handler. Type: ${a} Name: ${f.getFunctionName(g)} @@ -20,7 +20,7 @@ ${a.stack}`:"unknown"}}}}}let k=d.defineIntegration((a={})=>{let b=a.limit??10;r `;let n=h.parseProxyResponse(c);c.write(`${m}\r `);let{connect:o,buffered:p}=await n;if(a.emit("proxyConnect",o),this.emit("proxyConnect",o,a),200===o.statusCode){if(a.once("socket",k),b.secureEndpoint){i("Upgrading socket connection to TLS");let a=b.servername||b.host;return e.connect({...l(b,"host","path","port"),socket:c,servername:d.isIP(a)?void 0:a})}return c}c.destroy();let q=new d.Socket({writable:!1});return q.readable=!0,a.once("socket",a=>{i("Replaying proxy buffer for failed request"),a.push(p),a.push(null)}),q}}function k(a){a.resume()}function l(a,...b){let c,d={};for(c in a)b.includes(c)||(d[c]=a[c]);return d}j.__initStatic(),c.HttpsProxyAgent=j},936232,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(347299),e=a.r(743698),f=a.r(81111),g=a.r(727028),h=a.r(97153),i=a.r(470351);c.makeNodeTransport=function(a){let b;try{b=new URL(a.url)}catch(b){return h.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),h.createTransport(a,()=>Promise.resolve({}))}let c="https:"===b.protocol,j=function(a,b){let{no_proxy:c}=process.env;if(!c?.split(",").some(b=>a.host.endsWith(b)||a.hostname.endsWith(b)))return b}(b,a.proxy||(c?process.env.https_proxy:void 0)||process.env.http_proxy),k=c?e:d,l=void 0!==a.keepAlive&&a.keepAlive,m=j?new i.HttpsProxyAgent(j):new k.Agent({keepAlive:l,maxSockets:30,timeout:2e3}),n=function(a,b,c){let{hostname:d,pathname:e,port:i,protocol:j,search:k}=new URL(a.url);return function(l){return new Promise((m,n)=>{h.suppressTracing(()=>{var h;let o=(h=l.body,new f.Readable({read(){this.push(h),this.push(null)}})),p={...a.headers};l.body.length>32768&&(p["content-encoding"]="gzip",o=o.pipe(g.createGzip()));let q=d.startsWith("["),r=b.request({method:"POST",agent:c,headers:p,hostname:q?d.slice(1,-1):d,path:`${e}${k}`,port:i,protocol:j,ca:a.caCerts},a=>{a.on("data",()=>{}),a.on("end",()=>{}),a.setEncoding("utf8");let b=a.headers["retry-after"]??null,c=a.headers["x-sentry-rate-limits"]??null;m({statusCode:a.statusCode,headers:{"retry-after":b,"x-sentry-rate-limits":Array.isArray(c)?c[0]||null:c}})});r.on("error",n),o.pipe(r)})})}}(a,a.httpModule??k,m);return h.createTransport(a,n)}},458577,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.getSpotlightConfig=function(a){if(!1===a)return!1;if("string"==typeof a)return a;let b=d.envToBool(process.env.SENTRY_SPOTLIGHT,{strict:!0}),c=null===b&&process.env.SENTRY_SPOTLIGHT?process.env.SENTRY_SPOTLIGHT:void 0;return!0===a?c??!0:b??c}},774056,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(750227),e=a.r(97153);function f(a){return a.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}c.createGetModuleFromFilename=function(a=process.argv[1]?e.dirname(process.argv[1]):process.cwd(),b="\\"===d.sep){let c=b?f(a):a;return a=>{if(!a)return;let e=b?f(a):a,{dir:g,base:h,ext:i}=d.posix.parse(e);(".js"===i||".mjs"===i||".cjs"===i)&&(h=h.slice(0,-1*i.length));let j=decodeURIComponent(h);g||(g=".");let k=g.lastIndexOf("/node_modules");if(k>-1)return`${g.slice(k+14).replace(/\//g,".")}:${j}`;if(g.startsWith(c)){let a=g.slice(c.length+1).replace(/\//g,".");return a?`${a}:${j}`:j}return j}}},563422,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(774056);c.defaultStackParser=d.createStackParser(d.nodeStackLineParser(e.createGetModuleFromFilename())),c.getSentryRelease=function(a){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(d.GLOBAL_OBJ.SENTRY_RELEASE?.id)return d.GLOBAL_OBJ.SENTRY_RELEASE.id;let b=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,c=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_BUILD_COMMIT||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,e=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return b||c||e||a}},18272,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(660526),e=a.r(854230),f=a.r(621472),g=a.r(97153),h=a.r(960535),i=a.r(37702),j=a.r(355055);class k extends g.ServerRuntimeClient{constructor(b){const c=!1===b.includeServerName?void 0:b.serverName||a.g.process.env.SENTRY_NAME||d.hostname(),e={...b,platform:"node",runtime:b.runtime||{name:"node",version:a.g.process.version},serverName:c};b.openTelemetryInstrumentations&&f.registerInstrumentations({instrumentations:b.openTelemetryInstrumentations}),g.applySdkMetadata(e,"node"),g.debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${i.isMainThread?"main":`worker-${i.threadId}`}.`),super(e),this.getOptions().enableLogs&&(this._logOnExitFlushListener=()=>{g._INTERNAL_flushLogsBuffer(this)},c&&this.on("beforeCaptureLog",a=>{a.attributes={...a.attributes,"server.address":c}}),process.on("beforeExit",this._logOnExitFlushListener))}get tracer(){if(this._tracer)return this._tracer;let a=g.SDK_VERSION,b=e.trace.getTracer("@sentry/node",a);return this._tracer=b,b}async flush(a){return await this.traceProvider?.forceFlush(),this.getOptions().sendClientReports&&this._flushOutcomes(),super.flush(a)}async close(a){this._clientReportInterval&&clearInterval(this._clientReportInterval),this._clientReportOnExitFlushListener&&process.off("beforeExit",this._clientReportOnExitFlushListener),this._logOnExitFlushListener&&process.off("beforeExit",this._logOnExitFlushListener);let b=await super.close(a);return this.traceProvider&&await this.traceProvider.shutdown(),b}startClientReportTracking(){let a=this.getOptions();a.sendClientReports&&(this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{j.DEBUG_BUILD&&g.debug.log("Flushing client reports based on interval."),this._flushOutcomes()},a.clientReportFlushInterval??6e4).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener))}_setupIntegrations(){g._INTERNAL_clearAiProviderSkips(),super._setupIntegrations()}_getTraceInfoFromScope(a){return a?h.getTraceContextForScope(this,a):[void 0,void 0]}}c.NodeClient=k},139392,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(285512),f=a.r(362562),g=a.r(226798);var h="u">typeof document?document.currentScript:null;c.initializeEsmLoader=function(){if(g.supportsEsmLoaderHooks()&&!d.GLOBAL_OBJ._sentryEsmLoaderHookRegistered){d.GLOBAL_OBJ._sentryEsmLoaderHookRegistered=!0;try{let{addHookMessagePort:b}=e.createAddHookMessageChannel();f.register("import-in-the-middle/hook.mjs","u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(960535),f=a.r(355055),g=a.r(468915),h=a.r(732257),i=a.r(17454),j=a.r(596290),k=a.r(200526),l=a.r(646711),m=a.r(486417),n=a.r(9332),o=a.r(437659),p=a.r(369330),q=a.r(249942),r=a.r(355329),s=a.r(936232),t=a.r(226798),u=a.r(458577),v=a.r(563422),w=a.r(18272),x=a.r(139392);function y(){return[d.inboundFiltersIntegration(),d.functionToStringIntegration(),d.linkedErrorsIntegration(),d.requestDataIntegration(),r.systemErrorIntegration(),d.conversationIdIntegration(),d.consoleIntegration(),j.httpIntegration(),m.nativeNodeFetchIntegration(),n.onUncaughtExceptionIntegration(),o.onUnhandledRejectionIntegration(),i.contextLinesIntegration(),k.localVariablesIntegration(),h.nodeContextIntegration(),g.childProcessIntegration(),p.processSessionIntegration(),l.modulesIntegration()]}function z(a={},b){var c,g;let h,i,j,k,l,m,n=(c=a,g=b,h=function(a){if(void 0!==a)return a;let b=v.getSentryRelease();if(void 0!==b)return b}(c.release),i=u.getSpotlightConfig(c.spotlight),j=function(a){if(void 0!==a)return a;let b=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!b)return;let c=parseFloat(b);return isFinite(c)?c:void 0}(c.tracesSampleRate),k={...c,dsn:c.dsn??process.env.SENTRY_DSN,environment:c.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:c.sendClientReports??!0,transport:c.transport??s.makeNodeTransport,stackParser:d.stackParserFromStackParserOptions(c.stackParser||v.defaultStackParser),release:h,tracesSampleRate:j,spotlight:i,debug:d.envToBool(c.debug??process.env.SENTRY_DEBUG)},l=c.integrations,m=c.defaultIntegrations??g(k),{...k,integrations:d.getIntegrationsToSetup({defaultIntegrations:m,integrations:l})});!0===n.debug&&(f.DEBUG_BUILD?d.debug.enable():d.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),!1!==n.registerEsmLoaderHooks&&x.initializeEsmLoader(),e.setOpenTelemetryContextAsyncContextStrategy(),d.getCurrentScope().update(n.initialScope),n.spotlight&&!n.integrations.some(({name:a})=>a===q.INTEGRATION_NAME)&&n.integrations.push(q.spotlightIntegration({sidecarUrl:"string"==typeof n.spotlight?n.spotlight:void 0})),d.applySdkMetadata(n,"node-core");let o=new w.NodeClient(n);return d.getCurrentScope().setClient(o),o.init(),d.debug.log(`SDK initialized from ${t.isCjs()?"CommonJS":"ESM"}`),o.startClientReportTracking(),function(){if(!1!==d.envToBool(process.env.SENTRY_USE_ENVIRONMENT)){let a=process.env.SENTRY_TRACE,b=process.env.SENTRY_BAGGAGE,c=d.propagationContextFromHeaders(a,b);d.getCurrentScope().setPropagationContext(c)}}(),e.enhanceDscWithOpenTelemetryRootSpanName(o),e.setupEventContextTrace(o),process.env.VERCEL&&process.on("SIGTERM",async()=>{await o.flush(200)}),o}c.getDefaultIntegrations=y,c.init=function(a={}){return z(a,y)},c.initWithoutDefaultIntegrations=function(a={}){return z(a,()=>[])},c.validateOpenTelemetrySetup=function(){if(!f.DEBUG_BUILD)return;let a=e.openTelemetrySetupCheck(),b=["SentryContextManager","SentryPropagator"];for(let c of(d.hasSpansEnabled()&&b.push("SentrySpanProcessor"),b))a.includes(c)||d.debug.error(`You have to set up the ${c}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);a.includes("SentrySampler")||d.debug.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}},284211,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(960535);c.setIsolationScope=function(a){let b=e.getScopesFromContext(d.context.active());b&&(b.isolationScope=a)}},509014,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(226798);c.createMissingInstrumentationContext=a=>({package:a,"javascript.is_cjs":d.isCjs()})},495406,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(509014),g=a.r(226798);c.ensureIsWrapped=function(a,b){let c=e.getClient()?.getOptions();!c?.disableInstrumentationWarnings&&!d.isWrapped(a)&&e.isEnabled()&&e.hasSpansEnabled(c)&&(e.consoleSandbox(()=>{g.isCjs()?console.warn(`[Sentry] ${b} is not instrumented. This is likely because you required/imported ${b} before calling \`Sentry.init()\`.`):console.warn(`[Sentry] ${b} is not instrumented. Please make sure to initialize Sentry in a separate file that you \`--import\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${b}/install/esm/.`)}),e.getGlobalScope().setContext("missing_instrumentation",f.createMissingInstrumentationContext(b)))}},406219,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(812057),e=a.r(925127),f=a.r(97153),g=a.r(176004),h=a.r(985313),{isPromise:i}=d.types,j="LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ3LjAgKGE1YTRlNzMpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyB0fWZyb20ibm9kZTppbnNwZWN0b3IiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIG4scGFyZW50UG9ydCBhcyBlfWZyb20ibm9kZTp3b3JrZXJfdGhyZWFkcyI7aW1wb3J0e3Bvc2l4IGFzIHIsc2VwIGFzIG99ZnJvbSJub2RlOnBhdGgiO2ltcG9ydCphcyBpIGZyb20ibm9kZTpodHRwIjtpbXBvcnQqYXMgcyBmcm9tIm5vZGU6aHR0cHMiO2ltcG9ydHtSZWFkYWJsZSBhcyBjfWZyb20ibm9kZTpzdHJlYW0iO2ltcG9ydHtjcmVhdGVHemlwIGFzIHV9ZnJvbSJub2RlOnpsaWIiO2ltcG9ydCphcyBhIGZyb20ibm9kZTpuZXQiO2ltcG9ydCphcyBmIGZyb20ibm9kZTp0bHMiO2NvbnN0IGg9InVuZGVmaW5lZCI9PXR5cGVvZiBfX1NFTlRSWV9ERUJVR19ffHxfX1NFTlRSWV9ERUJVR19fLHA9Z2xvYmFsVGhpcyxkPSIxMC40Ny4wIjtmdW5jdGlvbiBsKCl7cmV0dXJuIG0ocCkscH1mdW5jdGlvbiBtKHQpe2NvbnN0IG49dC5fX1NFTlRSWV9fPXQuX19TRU5UUllfX3x8e307cmV0dXJuIG4udmVyc2lvbj1uLnZlcnNpb258fGQsbltkXT1uW2RdfHx7fX1mdW5jdGlvbiBnKHQsbixlPXApe2NvbnN0IHI9ZS5fX1NFTlRSWV9fPWUuX19TRU5UUllfX3x8e30sbz1yW2RdPXJbZF18fHt9O3JldHVybiBvW3RdfHwob1t0XT1uKCkpfWNvbnN0IHk9e307ZnVuY3Rpb24gYih0KXtpZighKCJjb25zb2xlImluIHApKXJldHVybiB0KCk7Y29uc3Qgbj1wLmNvbnNvbGUsZT17fSxyPU9iamVjdC5rZXlzKHkpO3IuZm9yRWFjaCh0PT57Y29uc3Qgcj15W3RdO2VbdF09blt0XSxuW3RdPXJ9KTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3IuZm9yRWFjaCh0PT57blt0XT1lW3RdfSl9fWZ1bmN0aW9uIHYoKXtyZXR1cm4gdygpLmVuYWJsZWR9ZnVuY3Rpb24gXyh0LC4uLm4pe2gmJnYoKSYmYigoKT0+e3AuY29uc29sZVt0XShgU2VudHJ5IExvZ2dlciBbJHt0fV06YCwuLi5uKX0pfWZ1bmN0aW9uIHcoKXtyZXR1cm4gaD9nKCJsb2dnZXJTZXR0aW5ncyIsKCk9Pih7ZW5hYmxlZDohMX0pKTp7ZW5hYmxlZDohMX19Y29uc3QgUz17ZW5hYmxlOmZ1bmN0aW9uKCl7dygpLmVuYWJsZWQ9ITB9LGRpc2FibGU6ZnVuY3Rpb24oKXt3KCkuZW5hYmxlZD0hMX0saXNFbmFibGVkOnYsbG9nOmZ1bmN0aW9uKC4uLnQpe18oImxvZyIsLi4udCl9LHdhcm46ZnVuY3Rpb24oLi4udCl7Xygid2FybiIsLi4udCl9LGVycm9yOmZ1bmN0aW9uKC4uLnQpe18oImVycm9yIiwuLi50KX19LCQ9L2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vO2Z1bmN0aW9uIEUodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV18fHt9fWNvbnN0IHg9Ijxhbm9ueW1vdXM+Ijtjb25zdCBOPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gaih0LG4pe3JldHVybiBOLmNhbGwodCk9PT1gW29iamVjdCAke259XWB9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gaih0LCJTdHJpbmciKX1mdW5jdGlvbiBBKHQpe3JldHVybiBqKHQsIk9iamVjdCIpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEJvb2xlYW4odD8udGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbil9ZnVuY3Rpb24gayh0LG4pe3RyeXtyZXR1cm4gdCBpbnN0YW5jZW9mIG59Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEk9cDtmdW5jdGlvbiBPKHQsbil7Y29uc3QgZT10LHI9W107aWYoIWU/LnRhZ05hbWUpcmV0dXJuIiI7aWYoSS5IVE1MRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZlLmRhdGFzZXQpe2lmKGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQ7aWYoZS5kYXRhc2V0LnNlbnRyeUVsZW1lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlFbGVtZW50fXIucHVzaChlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSk7Y29uc3Qgbz1uPy5sZW5ndGg/bi5maWx0ZXIodD0+ZS5nZXRBdHRyaWJ1dGUodCkpLm1hcCh0PT5bdCxlLmdldEF0dHJpYnV0ZSh0KV0pOm51bGw7aWYobz8ubGVuZ3RoKW8uZm9yRWFjaCh0PT57ci5wdXNoKGBbJHt0WzBdfT0iJHt0WzFdfSJdYCl9KTtlbHNle2UuaWQmJnIucHVzaChgIyR7ZS5pZH1gKTtjb25zdCB0PWUuY2xhc3NOYW1lO2lmKHQmJkModCkpe2NvbnN0IG49dC5zcGxpdCgvXHMrLyk7Zm9yKGNvbnN0IHQgb2YgbilyLnB1c2goYC4ke3R9YCl9fWZvcihjb25zdCB0IG9mWyJhcmlhLWxhYmVsIiwidHlwZSIsIm5hbWUiLCJ0aXRsZSIsImFsdCJdKXtjb25zdCBuPWUuZ2V0QXR0cmlidXRlKHQpO24mJnIucHVzaChgWyR7dH09IiR7bn0iXWApfXJldHVybiByLmpvaW4oIiIpfWZ1bmN0aW9uIFIodCl7aWYoZnVuY3Rpb24odCl7c3dpdGNoKE4uY2FsbCh0KSl7Y2FzZSJbb2JqZWN0IEVycm9yXSI6Y2FzZSJbb2JqZWN0IEV4Y2VwdGlvbl0iOmNhc2UiW29iamVjdCBET01FeGNlcHRpb25dIjpjYXNlIltvYmplY3QgV2ViQXNzZW1ibHkuRXhjZXB0aW9uXSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gayh0LEVycm9yKX19KHQpKXJldHVybnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrLC4uLkQodCl9O2lmKG49dCwidW5kZWZpbmVkIiE9dHlwZW9mIEV2ZW50JiZrKG4sRXZlbnQpKXtjb25zdCBuPXt0eXBlOnQudHlwZSx0YXJnZXQ6UCh0LnRhcmdldCksY3VycmVudFRhcmdldDpQKHQuY3VycmVudFRhcmdldCksLi4uRCh0KX07cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBDdXN0b21FdmVudCYmayh0LEN1c3RvbUV2ZW50KSYmKG4uZGV0YWlsPXQuZGV0YWlsKSxufXJldHVybiB0O3ZhciBufWZ1bmN0aW9uIFAodCl7dHJ5e3JldHVybiBuPXQsInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50JiZrKG4sRWxlbWVudCk/ZnVuY3Rpb24odCxuPXt9KXtpZighdClyZXR1cm4iPHVua25vd24+Ijt0cnl7bGV0IGU9dDtjb25zdCByPTUsbz1bXTtsZXQgaT0wLHM9MDtjb25zdCBjPSIgPiAiLHU9Yy5sZW5ndGg7bGV0IGE7Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP246bi5rZXlBdHRycyxoPSFBcnJheS5pc0FycmF5KG4pJiZuLm1heFN0cmluZ0xlbmd0aHx8ODA7Zm9yKDtlJiZpKys8ciYmKGE9TyhlLGYpLCEoImh0bWwiPT09YXx8aT4xJiZzK28ubGVuZ3RoKnUrYS5sZW5ndGg+PWgpKTspby5wdXNoKGEpLHMrPWEubGVuZ3RoLGU9ZS5wYXJlbnROb2RlO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGMpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifX0odCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifXZhciBufWZ1bmN0aW9uIEQodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dD9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkpOnt9fWxldCBVLEw7ZnVuY3Rpb24gTSh0KXtpZih2b2lkIDAhPT1VKXJldHVybiBVP1UodCk6dCgpO2NvbnN0IG49U3ltYm9sLmZvcigiX19TRU5UUllfU0FGRV9SQU5ET01fSURfV1JBUFBFUl9fIiksZT1wO3JldHVybiBuIGluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW25dPyhVPWVbbl0sVSh0KSk6KFU9bnVsbCx0KCkpfWZ1bmN0aW9uIEIoKXtyZXR1cm4gTSgoKT0+TWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gVygpe3JldHVybiBNKCgpPT5EYXRlLm5vdygpKX1mdW5jdGlvbiB6KHQsbj0wKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fDA9PT1ufHx0Lmxlbmd0aDw9bj90OmAke3Quc2xpY2UoMCxuKX0uLi5gfWZ1bmN0aW9uIEYodD1mdW5jdGlvbigpe2NvbnN0IHQ9cDtyZXR1cm4gdC5jcnlwdG98fHQubXNDcnlwdG99KCkpe3RyeXtpZih0Py5yYW5kb21VVUlEKXJldHVybiBNKCgpPT50LnJhbmRvbVVVSUQoKSkucmVwbGFjZSgvLS9nLCIiKX1jYXRjaHt9cmV0dXJuIEx8fChMPVsxZTddKzFlMys0ZTMrOGUzKzFlMTEpLEwucmVwbGFjZSgvWzAxOF0vZyx0PT4odF4oMTYqQigpJjE1KT4+dC80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gVygpLzFlM31sZXQgSDtmdW5jdGlvbiBKKCl7cmV0dXJuKEg/PyhIPWZ1bmN0aW9uKCl7Y29uc3R7cGVyZm9ybWFuY2U6dH09cDtpZighdD8ubm93fHwhdC50aW1lT3JpZ2luKXJldHVybiBHO2NvbnN0IG49dC50aW1lT3JpZ2luO3JldHVybigpPT4obitNKCgpPT50Lm5vdygpKSkvMWUzfSgpKSkoKX1mdW5jdGlvbiBZKHQpe2NvbnN0IG49SigpLGU9e3NpZDpGKCksaW5pdDohMCx0aW1lc3RhbXA6bixzdGFydGVkOm4sZHVyYXRpb246MCxzdGF0dXM6Im9rIixlcnJvcnM6MCxpZ25vcmVEdXJhdGlvbjohMSx0b0pTT046KCk9PmZ1bmN0aW9uKHQpe3JldHVybntzaWQ6YCR7dC5zaWR9YCxpbml0OnQuaW5pdCxzdGFydGVkOm5ldyBEYXRlKDFlMyp0LnN0YXJ0ZWQpLnRvSVNPU3RyaW5nKCksdGltZXN0YW1wOm5ldyBEYXRlKDFlMyp0LnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxzdGF0dXM6dC5zdGF0dXMsZXJyb3JzOnQuZXJyb3JzLGRpZDoibnVtYmVyIj09dHlwZW9mIHQuZGlkfHwic3RyaW5nIj09dHlwZW9mIHQuZGlkP2Ake3QuZGlkfWA6dm9pZCAwLGR1cmF0aW9uOnQuZHVyYXRpb24sYWJub3JtYWxfbWVjaGFuaXNtOnQuYWJub3JtYWxfbWVjaGFuaXNtLGF0dHJzOntyZWxlYXNlOnQucmVsZWFzZSxlbnZpcm9ubWVudDp0LmVudmlyb25tZW50LGlwX2FkZHJlc3M6dC5pcEFkZHJlc3MsdXNlcl9hZ2VudDp0LnVzZXJBZ2VudH19fShlKX07cmV0dXJuIHQmJlYoZSx0KSxlfWZ1bmN0aW9uIFYodCxuPXt9KXtpZihuLnVzZXImJighdC5pcEFkZHJlc3MmJm4udXNlci5pcF9hZGRyZXNzJiYodC5pcEFkZHJlc3M9bi51c2VyLmlwX2FkZHJlc3MpLHQuZGlkfHxuLmRpZHx8KHQuZGlkPW4udXNlci5pZHx8bi51c2VyLmVtYWlsfHxuLnVzZXIudXNlcm5hbWUpKSx0LnRpbWVzdGFtcD1uLnRpbWVzdGFtcHx8SigpLG4uYWJub3JtYWxfbWVjaGFuaXNtJiYodC5hYm5vcm1hbF9tZWNoYW5pc209bi5hYm5vcm1hbF9tZWNoYW5pc20pLG4uaWdub3JlRHVyYXRpb24mJih0Lmlnbm9yZUR1cmF0aW9uPW4uaWdub3JlRHVyYXRpb24pLG4uc2lkJiYodC5zaWQ9MzI9PT1uLnNpZC5sZW5ndGg/bi5zaWQ6RigpKSx2b2lkIDAhPT1uLmluaXQmJih0LmluaXQ9bi5pbml0KSwhdC5kaWQmJm4uZGlkJiYodC5kaWQ9YCR7bi5kaWR9YCksIm51bWJlciI9PXR5cGVvZiBuLnN0YXJ0ZWQmJih0LnN0YXJ0ZWQ9bi5zdGFydGVkKSx0Lmlnbm9yZUR1cmF0aW9uKXQuZHVyYXRpb249dm9pZCAwO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBuLmR1cmF0aW9uKXQuZHVyYXRpb249bi5kdXJhdGlvbjtlbHNle2NvbnN0IG49dC50aW1lc3RhbXAtdC5zdGFydGVkO3QuZHVyYXRpb249bj49MD9uOjB9bi5yZWxlYXNlJiYodC5yZWxlYXNlPW4ucmVsZWFzZSksbi5lbnZpcm9ubWVudCYmKHQuZW52aXJvbm1lbnQ9bi5lbnZpcm9ubWVudCksIXQuaXBBZGRyZXNzJiZuLmlwQWRkcmVzcyYmKHQuaXBBZGRyZXNzPW4uaXBBZGRyZXNzKSwhdC51c2VyQWdlbnQmJm4udXNlckFnZW50JiYodC51c2VyQWdlbnQ9bi51c2VyQWdlbnQpLCJudW1iZXIiPT10eXBlb2Ygbi5lcnJvcnMmJih0LmVycm9ycz1uLmVycm9ycyksbi5zdGF0dXMmJih0LnN0YXR1cz1uLnN0YXR1cyl9ZnVuY3Rpb24gSyh0LG4sZT0yKXtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHxlPD0wKXJldHVybiBuO2lmKHQmJjA9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IHQgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSYmKHJbdF09SyhyW3RdLG5bdF0sZS0xKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gWigpe3JldHVybiBGKCl9ZnVuY3Rpb24gcSgpe3JldHVybiBGKCkuc3Vic3RyaW5nKDE2KX1jb25zdCBRPSJfc2VudHJ5U3BhbiI7ZnVuY3Rpb24gWCh0LG4pe24/ZnVuY3Rpb24odCxuLGUpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWNhdGNoe2gmJlMubG9nKGBGYWlsZWQgdG8gYWRkIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5ICIke259IiB0byBvYmplY3RgLHQpfX0odCxRLG4pOmRlbGV0ZSB0W1FdfWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0W1FdfWNsYXNzIG50e2NvbnN0cnVjdG9yKCl7dGhpcy50PSExLHRoaXMubz1bXSx0aGlzLmk9W10sdGhpcy51PVtdLHRoaXMuaD1bXSx0aGlzLnA9e30sdGhpcy5sPXt9LHRoaXMubT17fSx0aGlzLnY9e30sdGhpcy5fPXt9LHRoaXMuUz17fSx0aGlzLk49e3RyYWNlSWQ6WigpLHNhbXBsZVJhbmQ6QigpfX1jbG9uZSgpe2NvbnN0IHQ9bmV3IG50O3JldHVybiB0LnU9Wy4uLnRoaXMudV0sdC5sPXsuLi50aGlzLmx9LHQubT17Li4udGhpcy5tfSx0LnY9ey4uLnRoaXMudn0sdC5fPXsuLi50aGlzLl99LHRoaXMuXy5mbGFncyYmKHQuXy5mbGFncz17dmFsdWVzOlsuLi50aGlzLl8uZmxhZ3MudmFsdWVzXX0pLHQucD10aGlzLnAsdC5qPXRoaXMuaix0LkM9dGhpcy5DLHQuQT10aGlzLkEsdC5UPXRoaXMuVCx0Lmk9Wy4uLnRoaXMuaV0sdC5oPVsuLi50aGlzLmhdLHQuUz17Li4udGhpcy5TfSx0Lk49ey4uLnRoaXMuTn0sdC5rPXRoaXMuayx0Lkk9dGhpcy5JLHQuTz10aGlzLk8sWCh0LHR0KHRoaXMpKSx0fXNldENsaWVudCh0KXt0aGlzLms9dH1zZXRMYXN0RXZlbnRJZCh0KXt0aGlzLkk9dH1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5rfWxhc3RFdmVudElkKCl7cmV0dXJuIHRoaXMuSX1hZGRTY29wZUxpc3RlbmVyKHQpe3RoaXMuby5wdXNoKHQpfWFkZEV2ZW50UHJvY2Vzc29yKHQpe3JldHVybiB0aGlzLmkucHVzaCh0KSx0aGlzfXNldFVzZXIodCl7cmV0dXJuIHRoaXMucD10fHx7ZW1haWw6dm9pZCAwLGlkOnZvaWQgMCxpcF9hZGRyZXNzOnZvaWQgMCx1c2VybmFtZTp2b2lkIDB9LHRoaXMuQyYmVih0aGlzLkMse3VzZXI6dH0pLHRoaXMuUigpLHRoaXN9Z2V0VXNlcigpe3JldHVybiB0aGlzLnB9c2V0Q29udmVyc2F0aW9uSWQodCl7cmV0dXJuIHRoaXMuTz10fHx2b2lkIDAsdGhpcy5SKCksdGhpc31zZXRUYWdzKHQpe3JldHVybiB0aGlzLmw9ey4uLnRoaXMubCwuLi50fSx0aGlzLlIoKSx0aGlzfXNldFRhZyh0LG4pe3JldHVybiB0aGlzLnNldFRhZ3Moe1t0XTpufSl9c2V0QXR0cmlidXRlcyh0KXtyZXR1cm4gdGhpcy5tPXsuLi50aGlzLm0sLi4udH0sdGhpcy5SKCksdGhpc31zZXRBdHRyaWJ1dGUodCxuKXtyZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVzKHtbdF06bn0pfXJlbW92ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gdCBpbiB0aGlzLm0mJihkZWxldGUgdGhpcy5tW3RdLHRoaXMuUigpKSx0aGlzfXNldEV4dHJhcyh0KXtyZXR1cm4gdGhpcy52PXsuLi50aGlzLnYsLi4udH0sdGhpcy5SKCksdGhpc31zZXRFeHRyYSh0LG4pe3JldHVybiB0aGlzLnY9ey4uLnRoaXMudixbdF06bn0sdGhpcy5SKCksdGhpc31zZXRGaW5nZXJwcmludCh0KXtyZXR1cm4gdGhpcy5UPXQsdGhpcy5SKCksdGhpc31zZXRMZXZlbCh0KXtyZXR1cm4gdGhpcy5qPXQsdGhpcy5SKCksdGhpc31zZXRUcmFuc2FjdGlvbk5hbWUodCl7cmV0dXJuIHRoaXMuQT10LHRoaXMuUigpLHRoaXN9c2V0Q29udGV4dCh0LG4pe3JldHVybiBudWxsPT09bj9kZWxldGUgdGhpcy5fW3RdOnRoaXMuX1t0XT1uLHRoaXMuUigpLHRoaXN9c2V0U2Vzc2lvbih0KXtyZXR1cm4gdD90aGlzLkM9dDpkZWxldGUgdGhpcy5DLHRoaXMuUigpLHRoaXN9Z2V0U2Vzc2lvbigpe3JldHVybiB0aGlzLkN9dXBkYXRlKHQpe2lmKCF0KXJldHVybiB0aGlzO2NvbnN0IG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dCh0aGlzKTp0LGU9biBpbnN0YW5jZW9mIG50P24uZ2V0U2NvcGVEYXRhKCk6QShuKT90OnZvaWQgMCx7dGFnczpyLGF0dHJpYnV0ZXM6byxleHRyYTppLHVzZXI6cyxjb250ZXh0czpjLGxldmVsOnUsZmluZ2VycHJpbnQ6YT1bXSxwcm9wYWdhdGlvbkNvbnRleHQ6Zixjb252ZXJzYXRpb25JZDpofT1lfHx7fTtyZXR1cm4gdGhpcy5sPXsuLi50aGlzLmwsLi4ucn0sdGhpcy5tPXsuLi50aGlzLm0sLi4ub30sdGhpcy52PXsuLi50aGlzLnYsLi4uaX0sdGhpcy5fPXsuLi50aGlzLl8sLi4uY30scyYmT2JqZWN0LmtleXMocykubGVuZ3RoJiYodGhpcy5wPXMpLHUmJih0aGlzLmo9dSksYS5sZW5ndGgmJih0aGlzLlQ9YSksZiYmKHRoaXMuTj1mKSxoJiYodGhpcy5PPWgpLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy51PVtdLHRoaXMubD17fSx0aGlzLm09e30sdGhpcy52PXt9LHRoaXMucD17fSx0aGlzLl89e30sdGhpcy5qPXZvaWQgMCx0aGlzLkE9dm9pZCAwLHRoaXMuVD12b2lkIDAsdGhpcy5DPXZvaWQgMCx0aGlzLk89dm9pZCAwLFgodGhpcyx2b2lkIDApLHRoaXMuaD1bXSx0aGlzLnNldFByb3BhZ2F0aW9uQ29udGV4dCh7dHJhY2VJZDpaKCksc2FtcGxlUmFuZDpCKCl9KSx0aGlzLlIoKSx0aGlzfWFkZEJyZWFkY3J1bWIodCxuKXtjb25zdCBlPSJudW1iZXIiPT10eXBlb2Ygbj9uOjEwMDtpZihlPD0wKXJldHVybiB0aGlzO2NvbnN0IHI9e3RpbWVzdGFtcDpHKCksLi4udCxtZXNzYWdlOnQubWVzc2FnZT96KHQubWVzc2FnZSwyMDQ4KTp0Lm1lc3NhZ2V9O3JldHVybiB0aGlzLnUucHVzaChyKSx0aGlzLnUubGVuZ3RoPmUmJih0aGlzLnU9dGhpcy51LnNsaWNlKC1lKSx0aGlzLms/LnJlY29yZERyb3BwZWRFdmVudCgiYnVmZmVyX292ZXJmbG93IiwibG9nX2l0ZW0iKSksdGhpcy5SKCksdGhpc31nZXRMYXN0QnJlYWRjcnVtYigpe3JldHVybiB0aGlzLnVbdGhpcy51Lmxlbmd0aC0xXX1jbGVhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMudT1bXSx0aGlzLlIoKSx0aGlzfWFkZEF0dGFjaG1lbnQodCl7cmV0dXJuIHRoaXMuaC5wdXNoKHQpLHRoaXN9Y2xlYXJBdHRhY2htZW50cygpe3JldHVybiB0aGlzLmg9W10sdGhpc31nZXRTY29wZURhdGEoKXtyZXR1cm57YnJlYWRjcnVtYnM6dGhpcy51LGF0dGFjaG1lbnRzOnRoaXMuaCxjb250ZXh0czp0aGlzLl8sdGFnczp0aGlzLmwsYXR0cmlidXRlczp0aGlzLm0sZXh0cmE6dGhpcy52LHVzZXI6dGhpcy5wLGxldmVsOnRoaXMuaixmaW5nZXJwcmludDp0aGlzLlR8fFtdLGV2ZW50UHJvY2Vzc29yczp0aGlzLmkscHJvcGFnYXRpb25Db250ZXh0OnRoaXMuTixzZGtQcm9jZXNzaW5nTWV0YWRhdGE6dGhpcy5TLHRyYW5zYWN0aW9uTmFtZTp0aGlzLkEsc3Bhbjp0dCh0aGlzKSxjb252ZXJzYXRpb25JZDp0aGlzLk99fXNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh0KXtyZXR1cm4gdGhpcy5TPUsodGhpcy5TLHQsMiksdGhpc31zZXRQcm9wYWdhdGlvbkNvbnRleHQodCl7cmV0dXJuIHRoaXMuTj10LHRoaXN9Z2V0UHJvcGFnYXRpb25Db250ZXh0KCl7cmV0dXJuIHRoaXMuTn1jYXB0dXJlRXhjZXB0aW9uKHQsbil7Y29uc3QgZT1uPy5ldmVudF9pZHx8RigpO2lmKCF0aGlzLmspcmV0dXJuIGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV4Y2VwdGlvbiEiKSxlO2NvbnN0IHI9bmV3IEVycm9yKCJTZW50cnkgc3ludGhldGljRXhjZXB0aW9uIik7cmV0dXJuIHRoaXMuay5jYXB0dXJlRXhjZXB0aW9uKHQse29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOnIsLi4ubixldmVudF9pZDplfSx0aGlzKSxlfWNhcHR1cmVNZXNzYWdlKHQsbixlKXtjb25zdCByPWU/LmV2ZW50X2lkfHxGKCk7aWYoIXRoaXMuaylyZXR1cm4gaCYmUy53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgbWVzc2FnZSEiKSxyO2NvbnN0IG89ZT8uc3ludGhldGljRXhjZXB0aW9uPz9uZXcgRXJyb3IodCk7cmV0dXJuIHRoaXMuay5jYXB0dXJlTWVzc2FnZSh0LG4se29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOm8sLi4uZSxldmVudF9pZDpyfSx0aGlzKSxyfWNhcHR1cmVFdmVudCh0LG4pe2NvbnN0IGU9dC5ldmVudF9pZHx8bj8uZXZlbnRfaWR8fEYoKTtyZXR1cm4gdGhpcy5rPyh0aGlzLmsuY2FwdHVyZUV2ZW50KHQsey4uLm4sZXZlbnRfaWQ6ZX0sdGhpcyksZSk6KGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50ISIpLGUpfVIoKXt0aGlzLnR8fCh0aGlzLnQ9ITAsdGhpcy5vLmZvckVhY2godD0+e3QodGhpcyl9KSx0aGlzLnQ9ITEpfX1jb25zdCBldD10PT50IGluc3RhbmNlb2YgUHJvbWlzZSYmIXRbcnRdLHJ0PVN5bWJvbCgiY2hhaW5lZCBQcm9taXNlTGlrZSIpLG90PSh0LG4pPT57bGV0IGU9ITE7Zm9yKGNvbnN0IHIgaW4gdCl7aWYociBpbiBuKWNvbnRpbnVlO2U9ITA7Y29uc3Qgbz10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBvP09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHIse3ZhbHVlOiguLi5uKT0+by5hcHBseSh0LG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vfXJldHVybiBlJiZPYmplY3QuYXNzaWduKG4se1tydF06ITB9KSxufTtjbGFzcyBpdHtjb25zdHJ1Y3Rvcih0LG4pe2xldCBlLHI7ZT10fHxuZXcgbnQscj1ufHxuZXcgbnQsdGhpcy5QPVt7c2NvcGU6ZX1dLHRoaXMuRD1yfXdpdGhTY29wZSh0KXtjb25zdCBuPXRoaXMuVSgpO2xldCBlO3RyeXtlPXQobil9Y2F0Y2godCl7dGhyb3cgdGhpcy5MKCksdH1yZXR1cm4gVChlKT8oKHQsbixlKT0+e2NvbnN0IHI9dC50aGVuKHQ9PihuKHQpLHQpLHQ9Pnt0aHJvdyBlKHQpLHR9KTtyZXR1cm4gZXQocikmJmV0KHQpP3I6b3QodCxyKX0pKGUsKCk9PnRoaXMuTCgpLCgpPT50aGlzLkwoKSk6KHRoaXMuTCgpLGUpfWdldENsaWVudCgpe3JldHVybiB0aGlzLmdldFN0YWNrVG9wKCkuY2xpZW50fWdldFNjb3BlKCl7cmV0dXJuIHRoaXMuZ2V0U3RhY2tUb3AoKS5zY29wZX1nZXRJc29sYXRpb25TY29wZSgpe3JldHVybiB0aGlzLkR9Z2V0U3RhY2tUb3AoKXtyZXR1cm4gdGhpcy5QW3RoaXMuUC5sZW5ndGgtMV19VSgpe2NvbnN0IHQ9dGhpcy5nZXRTY29wZSgpLmNsb25lKCk7cmV0dXJuIHRoaXMuUC5wdXNoKHtjbGllbnQ6dGhpcy5nZXRDbGllbnQoKSxzY29wZTp0fSksdH1MKCl7cmV0dXJuISh0aGlzLlAubGVuZ3RoPD0xKSYmISF0aGlzLlAucG9wKCl9fWZ1bmN0aW9uIHN0KCl7Y29uc3QgdD1tKGwoKSk7cmV0dXJuIHQuc3RhY2s9dC5zdGFja3x8bmV3IGl0KGcoImRlZmF1bHRDdXJyZW50U2NvcGUiLCgpPT5uZXcgbnQpLGcoImRlZmF1bHRJc29sYXRpb25TY29wZSIsKCk9Pm5ldyBudCkpfWZ1bmN0aW9uIGN0KHQpe3JldHVybiBzdCgpLndpdGhTY29wZSh0KX1mdW5jdGlvbiB1dCh0LG4pe2NvbnN0IGU9c3QoKTtyZXR1cm4gZS53aXRoU2NvcGUoKCk9PihlLmdldFN0YWNrVG9wKCkuc2NvcGU9dCxuKHQpKSl9ZnVuY3Rpb24gYXQodCl7cmV0dXJuIHN0KCkud2l0aFNjb3BlKCgpPT50KHN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKSkpfWZ1bmN0aW9uIGZ0KHQpe2NvbnN0IG49bSh0KTtyZXR1cm4gbi5hY3M/bi5hY3M6e3dpdGhJc29sYXRpb25TY29wZTphdCx3aXRoU2NvcGU6Y3Qsd2l0aFNldFNjb3BlOnV0LHdpdGhTZXRJc29sYXRpb25TY29wZToodCxuKT0+YXQobiksZ2V0Q3VycmVudFNjb3BlOigpPT5zdCgpLmdldFNjb3BlKCksZ2V0SXNvbGF0aW9uU2NvcGU6KCk9PnN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKX19ZnVuY3Rpb24gaHQoKXtyZXR1cm4gZnQobCgpKS5nZXRDdXJyZW50U2NvcGUoKS5nZXRDbGllbnQoKX1mdW5jdGlvbiBwdCh0KXtpZih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJiJkZXJlZiJpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5kZXJlZil0cnl7cmV0dXJuIHQuZGVyZWYoKX1jYXRjaHtyZXR1cm59cmV0dXJuIHR9fWZ1bmN0aW9uIGR0KHQpe2NvbnN0IG49dDtyZXR1cm57c2NvcGU6bi5fc2VudHJ5U2NvcGUsaXNvbGF0aW9uU2NvcGU6cHQobi5fc2VudHJ5SXNvbGF0aW9uU2NvcGUpfX1jb25zdCBsdD0ic2VudHJ5LSI7ZnVuY3Rpb24gbXQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdHx8IUModCkmJiFBcnJheS5pc0FycmF5KHQpKXJldHVybjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGU9Z3Qobik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtuLGVdKT0+e3Rbbl09ZX0pLHR9LHt9KTtyZXR1cm4gZ3QodCl9KHQpO2lmKCFuKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgodCxbbixlXSk9PntpZihuLnN0YXJ0c1dpdGgobHQpKXt0W24uc2xpY2UoNyldPWV9cmV0dXJuIHR9LHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjA/ZTp2b2lkIDB9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAodD0+e2NvbnN0IG49dC5pbmRleE9mKCI9Iik7aWYoLTE9PT1uKXJldHVybltdO3JldHVyblt0LnNsaWNlKDAsbiksdC5zbGljZShuKzEpXS5tYXAodD0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQudHJpbSgpKX1jYXRjaHtyZXR1cm59fSl9KS5yZWR1Y2UoKHQsW24sZV0pPT4obiYmZSYmKHRbbl09ZSksdCkse30pfWNvbnN0IHl0PS9ebyhcZCspXC4vO2Z1bmN0aW9uIGJ0KHQsbj0hMSl7Y29uc3R7aG9zdDplLHBhdGg6cixwYXNzOm8scG9ydDppLHByb2plY3RJZDpzLHByb3RvY29sOmMscHVibGljS2V5OnV9PXQ7cmV0dXJuYCR7Y306Ly8ke3V9JHtuJiZvP2A6JHtvfWA6IiJ9QCR7ZX0ke2k/YDoke2l9YDoiIn0vJHtyP2Ake3J9L2A6cn0ke3N9YH1mdW5jdGlvbiB2dCh0KXtjb25zdCBuPXQuZ2V0T3B0aW9ucygpLHtob3N0OmV9PXQuZ2V0RHNuKCl8fHt9O2xldCByO3JldHVybiBuLm9yZ0lkP3I9U3RyaW5nKG4ub3JnSWQpOmUmJihyPWZ1bmN0aW9uKHQpe2NvbnN0IG49dC5tYXRjaCh5dCk7cmV0dXJuIG4/LlsxXX0oZSkpLHJ9ZnVuY3Rpb24gX3QodCl7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplLGlzUmVtb3RlOnJ9PXQuc3BhbkNvbnRleHQoKSxvPXI/bjpFdCh0KS5wYXJlbnRfc3Bhbl9pZCxpPWR0KHQpLnNjb3BlO3JldHVybntwYXJlbnRfc3Bhbl9pZDpvLHNwYW5faWQ6cj9pPy5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKS5wcm9wYWdhdGlvblNwYW5JZHx8cSgpOm4sdHJhY2VfaWQ6ZX19ZnVuY3Rpb24gd3QodCl7cmV0dXJuIHQmJnQubGVuZ3RoPjA/dC5tYXAoKHtjb250ZXh0OntzcGFuSWQ6dCx0cmFjZUlkOm4sdHJhY2VGbGFnczplLC4uLnJ9LGF0dHJpYnV0ZXM6b30pPT4oe3NwYW5faWQ6dCx0cmFjZV9pZDpuLHNhbXBsZWQ6MT09PWUsYXR0cmlidXRlczpvLC4uLnJ9KSk6dm9pZCAwfWZ1bmN0aW9uIFN0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD8kdCh0KTpBcnJheS5pc0FycmF5KHQpP3RbMF0rdFsxXS8xZTk6dCBpbnN0YW5jZW9mIERhdGU/JHQodC5nZXRUaW1lKCkpOkooKX1mdW5jdGlvbiAkdCh0KXtyZXR1cm4gdD45OTk5OTk5OTk5P3QvMWUzOnR9ZnVuY3Rpb24gRXQodCl7aWYoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0U3BhbkpTT059KHQpKXJldHVybiB0LmdldFNwYW5KU09OKCk7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplfT10LnNwYW5Db250ZXh0KCk7aWYoZnVuY3Rpb24odCl7Y29uc3Qgbj10O3JldHVybiEhKG4uYXR0cmlidXRlcyYmbi5zdGFydFRpbWUmJm4ubmFtZSYmbi5lbmRUaW1lJiZuLnN0YXR1cyl9KHQpKXtjb25zdHthdHRyaWJ1dGVzOnIsc3RhcnRUaW1lOm8sbmFtZTppLGVuZFRpbWU6cyxzdGF0dXM6YyxsaW5rczp1fT10O3JldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxkYXRhOnIsZGVzY3JpcHRpb246aSxwYXJlbnRfc3Bhbl9pZDoicGFyZW50U3BhbklkImluIHQ/dC5wYXJlbnRTcGFuSWQ6InBhcmVudFNwYW5Db250ZXh0ImluIHQ/dC5wYXJlbnRTcGFuQ29udGV4dD8uc3BhbklkOnZvaWQgMCxzdGFydF90aW1lc3RhbXA6U3QobyksdGltZXN0YW1wOlN0KHMpfHx2b2lkIDAsc3RhdHVzOnh0KGMpLG9wOnJbInNlbnRyeS5vcCJdLG9yaWdpbjpyWyJzZW50cnkub3JpZ2luIl0sbGlua3M6d3QodSl9fXJldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxzdGFydF90aW1lc3RhbXA6MCxkYXRhOnt9fX1mdW5jdGlvbiB4dCh0KXtpZih0JiYwIT09dC5jb2RlKXJldHVybiAxPT09dC5jb2RlPyJvayI6dC5tZXNzYWdlfHwiaW50ZXJuYWxfZXJyb3IifWZ1bmN0aW9uIE50KHQpe3JldHVybiB0Ll9zZW50cnlSb290U3Bhbnx8dH1mdW5jdGlvbiBqdCh0KXtjb25zdCBuPWh0KCk7aWYoIW4pcmV0dXJue307Y29uc3QgZT1OdCh0KSxyPUV0KGUpLG89ci5kYXRhLGk9ZS5zcGFuQ29udGV4dCgpLnRyYWNlU3RhdGUscz1pPy5nZXQoInNlbnRyeS5zYW1wbGVfcmF0ZSIpPz9vWyJzZW50cnkuc2FtcGxlX3JhdGUiXT8/b1sic2VudHJ5LnByZXZpb3VzX3RyYWNlX3NhbXBsZV9yYXRlIl07ZnVuY3Rpb24gYyh0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHMmJiJzdHJpbmciIT10eXBlb2Ygc3x8KHQuc2FtcGxlX3JhdGU9YCR7c31gKSx0fWNvbnN0IHU9ZS5fZnJvemVuRHNjO2lmKHUpcmV0dXJuIGModSk7Y29uc3QgYT1pPy5nZXQoInNlbnRyeS5kc2MiKSxmPWEmJm10KGEpO2lmKGYpcmV0dXJuIGMoZik7Y29uc3QgaD1mdW5jdGlvbih0LG4pe2NvbnN0IGU9bi5nZXRPcHRpb25zKCkse3B1YmxpY0tleTpyfT1uLmdldERzbigpfHx7fSxvPXtlbnZpcm9ubWVudDplLmVudmlyb25tZW50fHwicHJvZHVjdGlvbiIscmVsZWFzZTplLnJlbGVhc2UscHVibGljX2tleTpyLHRyYWNlX2lkOnQsb3JnX2lkOnZ0KG4pfTtyZXR1cm4gbi5lbWl0KCJjcmVhdGVEc2MiLG8pLG99KHQuc3BhbkNvbnRleHQoKS50cmFjZUlkLG4pLHA9b1sic2VudHJ5LnNvdXJjZSJdLGQ9ci5kZXNjcmlwdGlvbjtyZXR1cm4idXJsIiE9PXAmJmQmJihoLnRyYW5zYWN0aW9uPWQpLGZ1bmN0aW9uKCl7aWYoImJvb2xlYW4iPT10eXBlb2YgX19TRU5UUllfVFJBQ0lOR19fJiYhX19TRU5UUllfVFJBQ0lOR19fKXJldHVybiExO2NvbnN0IHQ9aHQoKT8uZ2V0T3B0aW9ucygpO3JldHVybiEoIXR8fG51bGw9PXQudHJhY2VzU2FtcGxlUmF0ZSYmIXQudHJhY2VzU2FtcGxlcil9KCkmJihoLnNhbXBsZWQ9U3RyaW5nKGZ1bmN0aW9uKHQpe2NvbnN0e3RyYWNlRmxhZ3M6bn09dC5zcGFuQ29udGV4dCgpO3JldHVybiAxPT09bn0oZSkpLGguc2FtcGxlX3JhbmQ9aT8uZ2V0KCJzZW50cnkuc2FtcGxlX3JhbmQiKT8/ZHQoZSkuc2NvcGU/LmdldFByb3BhZ2F0aW9uQ29udGV4dCgpLnNhbXBsZVJhbmQudG9TdHJpbmcoKSksYyhoKSxuLmVtaXQoImNyZWF0ZURzYyIsaCxlKSxofWZ1bmN0aW9uIEN0KHQsbj0xMDAsZT0xLzApe3RyeXtyZXR1cm4gQXQoIiIsdCxuLGUpfWNhdGNoKHQpe3JldHVybntFUlJPUjpgKipub24tc2VyaWFsaXphYmxlKiogKCR7dH0pYH19fWZ1bmN0aW9uIEF0KHQsbixlPTEvMCxyPTEvMCxvPWZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgV2Vha1NldDtmdW5jdGlvbiBuKG4pe3JldHVybiEhdC5oYXMobil8fCh0LmFkZChuKSwhMSl9ZnVuY3Rpb24gZShuKXt0LmRlbGV0ZShuKX1yZXR1cm5bbixlXX0oKSl7Y29uc3RbaSxzXT1vO2lmKG51bGw9PW58fFsiYm9vbGVhbiIsInN0cmluZyJdLmluY2x1ZGVzKHR5cGVvZiBuKXx8Im51bWJlciI9PXR5cGVvZiBuJiZOdW1iZXIuaXNGaW5pdGUobikpcmV0dXJuIG47Y29uc3QgYz1mdW5jdGlvbih0LG4pe3RyeXtpZigiZG9tYWluIj09PXQmJm4mJiJvYmplY3QiPT10eXBlb2YgbiYmbi5NKXJldHVybiJbRG9tYWluXSI7aWYoImRvbWFpbkVtaXR0ZXIiPT09dClyZXR1cm4iW0RvbWFpbkVtaXR0ZXJdIjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbj09PWdsb2JhbClyZXR1cm4iW0dsb2JhbF0iO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZuPT09d2luZG93KXJldHVybiJbV2luZG93XSI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmbj09PWRvY3VtZW50KXJldHVybiJbRG9jdW1lbnRdIjtpZigib2JqZWN0Ij09dHlwZW9mKGU9bikmJm51bGwhPT1lJiYoZS5fX2lzVnVlfHxlLkJ8fGUuX192X2lzVk5vZGUpKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4iX192X2lzVk5vZGUiaW4gdCYmdC5fX3ZfaXNWTm9kZT8iW1Z1ZVZOb2RlXSI6IltWdWVWaWV3TW9kZWxdIn0obik7aWYoZnVuY3Rpb24odCl7cmV0dXJuIEEodCkmJiJuYXRpdmVFdmVudCJpbiB0JiYicHJldmVudERlZmF1bHQiaW4gdCYmInN0b3BQcm9wYWdhdGlvbiJpbiB0fShuKSlyZXR1cm4iW1N5bnRoZXRpY0V2ZW50XSI7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYhTnVtYmVyLmlzRmluaXRlKG4pKXJldHVybmBbJHtufV1gO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybmBbRnVuY3Rpb246ICR7ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5uYW1lfHx4fWNhdGNoe3JldHVybiB4fX0obil9XWA7aWYoInN5bWJvbCI9PXR5cGVvZiBuKXJldHVybmBbJHtTdHJpbmcobil9XWA7aWYoImJpZ2ludCI9PXR5cGVvZiBuKXJldHVybmBbQmlnSW50OiAke1N0cmluZyhuKX1dYDtjb25zdCByPWZ1bmN0aW9uKHQpe2NvbnN0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBuPy5jb25zdHJ1Y3Rvcj9uLmNvbnN0cnVjdG9yLm5hbWU6Im51bGwgcHJvdG90eXBlIn0obik7cmV0dXJuL15IVE1MKFx3KilFbGVtZW50JC8udGVzdChyKT9gW0hUTUxFbGVtZW50OiAke3J9XWA6YFtvYmplY3QgJHtyfV1gfWNhdGNoKHQpe3JldHVybmAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHt0fSlgfXZhciBlfSh0LG4pO2lmKCFjLnN0YXJ0c1dpdGgoIltvYmplY3QgIikpcmV0dXJuIGM7aWYobi5fX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXylyZXR1cm4gbjtjb25zdCB1PSJudW1iZXIiPT10eXBlb2Ygbi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18/bi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX186ZTtpZigwPT09dSlyZXR1cm4gYy5yZXBsYWNlKCJvYmplY3QgIiwiIik7aWYoaShuKSlyZXR1cm4iW0NpcmN1bGFyIH5dIjtjb25zdCBhPW47aWYoYSYmImZ1bmN0aW9uIj09dHlwZW9mIGEudG9KU09OKXRyeXtyZXR1cm4gQXQoIiIsYS50b0pTT04oKSx1LTEscixvKX1jYXRjaHt9Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP1tdOnt9O2xldCBoPTA7Y29uc3QgcD1SKG4pO2Zvcihjb25zdCB0IGluIHApe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCx0KSljb250aW51ZTtpZihoPj1yKXtmW3RdPSJbTWF4UHJvcGVydGllcyB+XSI7YnJlYWt9Y29uc3Qgbj1wW3RdO2ZbdF09QXQodCxuLHUtMSxyLG8pLGgrK31yZXR1cm4gcyhuKSxmfWZ1bmN0aW9uIFR0KHQsbil7Y29uc3QgZT1uLnJlcGxhY2UoL1xcL2csIi8iKS5yZXBsYWNlKC9bfFxce30oKVtcXV4kKyo/Ll0vZywiXFwkJiIpO2xldCByPXQ7dHJ5e3I9ZGVjb2RlVVJJKHQpfWNhdGNoe31yZXR1cm4gci5yZXBsYWNlKC9cXC9nLCIvIikucmVwbGFjZSgvd2VicGFjazpcLz8vZywiIikucmVwbGFjZShuZXcgUmVnRXhwKGAoZmlsZTovLyk/Lyoke2V9LypgLCJpZyIpLCJhcHA6Ly8vIil9ZnVuY3Rpb24ga3QodCxuPVtdKXtyZXR1cm5bdCxuXX1mdW5jdGlvbiBJdCh0LG4pe2NvbnN0IGU9dFsxXTtmb3IoY29uc3QgdCBvZiBlKXtpZihuKHQsdFswXS50eXBlKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBPdCh0KXtjb25zdCBuPW0ocCk7cmV0dXJuIG4uZW5jb2RlUG9seWZpbGw/bi5lbmNvZGVQb2x5ZmlsbCh0KToobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodCl9ZnVuY3Rpb24gUnQodCl7Y29uc3RbbixlXT10O2xldCByPUpTT04uc3RyaW5naWZ5KG4pO2Z1bmN0aW9uIG8odCl7InN0cmluZyI9PXR5cGVvZiByP3I9InN0cmluZyI9PXR5cGVvZiB0P3IrdDpbT3QociksdF06ci5wdXNoKCJzdHJpbmciPT10eXBlb2YgdD9PdCh0KTp0KX1mb3IoY29uc3QgdCBvZiBlKXtjb25zdFtuLGVdPXQ7aWYobyhgXG4ke0pTT04uc3RyaW5naWZ5KG4pfVxuYCksInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSlvKGUpO2Vsc2V7bGV0IHQ7dHJ5e3Q9SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2h7dD1KU09OLnN0cmluZ2lmeShDdChlKSl9byh0KX19cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3I6ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnJlZHVjZSgodCxuKT0+dCtuLmxlbmd0aCwwKSxlPW5ldyBVaW50OEFycmF5KG4pO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgdCllLnNldChuLHIpLHIrPW4ubGVuZ3RoO3JldHVybiBlfShyKX1jb25zdCBQdD17c2Vzc2lvbnM6InNlc3Npb24iLGV2ZW50OiJlcnJvciIsY2xpZW50X3JlcG9ydDoiaW50ZXJuYWwiLHVzZXJfcmVwb3J0OiJkZWZhdWx0Iixwcm9maWxlX2NodW5rOiJwcm9maWxlIixyZXBsYXlfZXZlbnQ6InJlcGxheSIscmVwbGF5X3JlY29yZGluZzoicmVwbGF5IixjaGVja19pbjoibW9uaXRvciIscmF3X3NlY3VyaXR5OiJzZWN1cml0eSIsbG9nOiJsb2dfaXRlbSIsdHJhY2VfbWV0cmljOiJtZXRyaWMifTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gUHR9KHQpP1B0W3RdOnR9ZnVuY3Rpb24gVXQodCl7aWYoIXQ/LnNkaylyZXR1cm47Y29uc3R7bmFtZTpuLHZlcnNpb246ZX09dC5zZGs7cmV0dXJue25hbWU6bix2ZXJzaW9uOmV9fWZ1bmN0aW9uIEx0KHQsbixlLHIpe2NvbnN0IG89VXQoZSksaT10LnR5cGUmJiJyZXBsYXlfZXZlbnQiIT09dC50eXBlP3QudHlwZToiZXZlbnQiOyFmdW5jdGlvbih0LG4pe2lmKCFuKXJldHVybiB0O2NvbnN0IGU9dC5zZGt8fHt9O3Quc2RrPXsuLi5lLG5hbWU6ZS5uYW1lfHxuLm5hbWUsdmVyc2lvbjplLnZlcnNpb258fG4udmVyc2lvbixpbnRlZ3JhdGlvbnM6Wy4uLnQuc2RrPy5pbnRlZ3JhdGlvbnN8fFtdLC4uLm4uaW50ZWdyYXRpb25zfHxbXV0scGFja2FnZXM6Wy4uLnQuc2RrPy5wYWNrYWdlc3x8W10sLi4ubi5wYWNrYWdlc3x8W11dLHNldHRpbmdzOnQuc2RrPy5zZXR0aW5nc3x8bi5zZXR0aW5ncz97Li4udC5zZGs/LnNldHRpbmdzLC4uLm4uc2V0dGluZ3N9OnZvaWQgMH19KHQsZT8uc2RrKTtjb25zdCBzPWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89dC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE/LmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7cmV0dXJue2V2ZW50X2lkOnQuZXZlbnRfaWQsc2VudF9hdDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCksLi4ubiYme3NkazpufSwuLi4hIWUmJnImJntkc246YnQocil9LC4uLm8mJnt0cmFjZTpvfX19KHQsbyxyLG4pO2RlbGV0ZSB0LnNka1Byb2Nlc3NpbmdNZXRhZGF0YTtyZXR1cm4ga3QocyxbW3t0eXBlOml9LHRdXSl9Y29uc3QgTXQ9Il9fU0VOVFJZX1NVUFBSRVNTX1RSQUNJTkdfXyI7ZnVuY3Rpb24gQnQodCl7Y29uc3Qgbj1mdChsKCkpO3JldHVybiBuLnN1cHByZXNzVHJhY2luZz9uLnN1cHByZXNzVHJhY2luZyh0KTpmdW5jdGlvbiguLi50KXtjb25zdCBuPWZ0KGwoKSk7aWYoMj09PXQubGVuZ3RoKXtjb25zdFtlLHJdPXQ7cmV0dXJuIGU/bi53aXRoU2V0U2NvcGUoZSxyKTpuLndpdGhTY29wZShyKX1yZXR1cm4gbi53aXRoU2NvcGUodFswXSl9KG49PntuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTohMH0pO2NvbnN0IGU9dCgpO3JldHVybiBuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTp2b2lkIDB9KSxlfSl9Y2xhc3MgV3R7Y29uc3RydWN0b3IodCl7dGhpcy5XPTAsdGhpcy5GPVtdLHRoaXMuRyh0KX10aGVuKHQsbil7cmV0dXJuIG5ldyBXdCgoZSxyKT0+e3RoaXMuRi5wdXNoKFshMSxuPT57aWYodCl0cnl7ZSh0KG4pKX1jYXRjaCh0KXtyKHQpfWVsc2UgZShuKX0sdD0+e2lmKG4pdHJ5e2Uobih0KSl9Y2F0Y2godCl7cih0KX1lbHNlIHIodCl9XSksdGhpcy5IKCl9KX1jYXRjaCh0KXtyZXR1cm4gdGhpcy50aGVuKHQ9PnQsdCl9ZmluYWxseSh0KXtyZXR1cm4gbmV3IFd0KChuLGUpPT57bGV0IHIsbztyZXR1cm4gdGhpcy50aGVuKG49PntvPSExLHI9bix0JiZ0KCl9LG49PntvPSEwLHI9bix0JiZ0KCl9KS50aGVuKCgpPT57bz9lKHIpOm4ocil9KX0pfUgoKXtpZigwPT09dGhpcy5XKXJldHVybjtjb25zdCB0PXRoaXMuRi5zbGljZSgpO3RoaXMuRj1bXSx0LmZvckVhY2godD0+e3RbMF18fCgxPT09dGhpcy5XJiZ0WzFdKHRoaXMuSiksMj09PXRoaXMuVyYmdFsyXSh0aGlzLkopLHRbMF09ITApfSl9Ryh0KXtjb25zdCBuPSh0LG4pPT57MD09PXRoaXMuVyYmKFQobik/bi50aGVuKGUscik6KHRoaXMuVz10LHRoaXMuSj1uLHRoaXMuSCgpKSl9LGU9dD0+e24oMSx0KX0scj10PT57bigyLHQpfTt0cnl7dChlLHIpfWNhdGNoKHQpe3IodCl9fX1mdW5jdGlvbiB6dCh0LG4pe2NvbnN0e2ZpbmdlcnByaW50OmUsc3BhbjpyLGJyZWFkY3J1bWJzOm8sc2RrUHJvY2Vzc2luZ01ldGFkYXRhOml9PW47IWZ1bmN0aW9uKHQsbil7Y29uc3R7ZXh0cmE6ZSx0YWdzOnIsdXNlcjpvLGNvbnRleHRzOmksbGV2ZWw6cyx0cmFuc2FjdGlvbk5hbWU6Y309bjtPYmplY3Qua2V5cyhlKS5sZW5ndGgmJih0LmV4dHJhPXsuLi5lLC4uLnQuZXh0cmF9KTtPYmplY3Qua2V5cyhyKS5sZW5ndGgmJih0LnRhZ3M9ey4uLnIsLi4udC50YWdzfSk7T2JqZWN0LmtleXMobykubGVuZ3RoJiYodC51c2VyPXsuLi5vLC4uLnQudXNlcn0pO09iamVjdC5rZXlzKGkpLmxlbmd0aCYmKHQuY29udGV4dHM9ey4uLmksLi4udC5jb250ZXh0c30pO3MmJih0LmxldmVsPXMpO2MmJiJ0cmFuc2FjdGlvbiIhPT10LnR5cGUmJih0LnRyYW5zYWN0aW9uPWMpfSh0LG4pLHImJmZ1bmN0aW9uKHQsbil7dC5jb250ZXh0cz17dHJhY2U6X3QobiksLi4udC5jb250ZXh0c30sdC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE9e2R5bmFtaWNTYW1wbGluZ0NvbnRleHQ6anQobiksLi4udC5zZGtQcm9jZXNzaW5nTWV0YWRhdGF9O2NvbnN0IGU9TnQobikscj1FdChlKS5kZXNjcmlwdGlvbjtyJiYhdC50cmFuc2FjdGlvbiYmInRyYW5zYWN0aW9uIj09PXQudHlwZSYmKHQudHJhbnNhY3Rpb249cil9KHQsciksZnVuY3Rpb24odCxuKXt0LmZpbmdlcnByaW50PXQuZmluZ2VycHJpbnQ/QXJyYXkuaXNBcnJheSh0LmZpbmdlcnByaW50KT90LmZpbmdlcnByaW50Olt0LmZpbmdlcnByaW50XTpbXSxuJiYodC5maW5nZXJwcmludD10LmZpbmdlcnByaW50LmNvbmNhdChuKSk7dC5maW5nZXJwcmludC5sZW5ndGh8fGRlbGV0ZSB0LmZpbmdlcnByaW50fSh0LGUpLGZ1bmN0aW9uKHQsbil7Y29uc3QgZT1bLi4udC5icmVhZGNydW1ic3x8W10sLi4ubl07dC5icmVhZGNydW1icz1lLmxlbmd0aD9lOnZvaWQgMH0odCxvKSxmdW5jdGlvbih0LG4pe3Quc2RrUHJvY2Vzc2luZ01ldGFkYXRhPXsuLi50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwuLi5ufX0odCxpKX1jb25zdCBGdD1TeW1ib2wuZm9yKCJTZW50cnlCdWZmZXJGdWxsRXJyb3IiKTtmdW5jdGlvbiBHdCh0PTEwMCl7Y29uc3Qgbj1uZXcgU2V0O2Z1bmN0aW9uIGUodCl7bi5kZWxldGUodCl9cmV0dXJue2dldCAkKCl7cmV0dXJuIEFycmF5LmZyb20obil9LGFkZDpmdW5jdGlvbihyKXtpZighKG4uc2l6ZTx0KSlyZXR1cm4gbz1GdCxuZXcgV3QoKHQsbik9PntuKG8pfSk7dmFyIG87Y29uc3QgaT1yKCk7cmV0dXJuIG4uYWRkKGkpLGkudGhlbigoKT0+ZShpKSwoKT0+ZShpKSksaX0sZHJhaW46ZnVuY3Rpb24odCl7aWYoIW4uc2l6ZSlyZXR1cm4gZT0hMCxuZXcgV3QodD0+e3QoZSl9KTt2YXIgZTtjb25zdCByPVByb21pc2UuYWxsU2V0dGxlZChBcnJheS5mcm9tKG4pKS50aGVuKCgpPT4hMCk7aWYoIXQpcmV0dXJuIHI7Y29uc3Qgbz1bcixuZXcgUHJvbWlzZShuPT57cmV0dXJuIm9iamVjdCI9PXR5cGVvZihlPXNldFRpbWVvdXQoKCk9Pm4oITEpLHQpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudW5yZWYmJmUudW5yZWYoKSxlO3ZhciBlfSldO3JldHVybiBQcm9taXNlLnJhY2Uobyl9fX1mdW5jdGlvbiBIdCh0LHtzdGF0dXNDb2RlOm4saGVhZGVyczplfSxyPVcoKSl7Y29uc3Qgbz17Li4udH0saT1lPy5bIngtc2VudHJ5LXJhdGUtbGltaXRzIl0scz1lPy5bInJldHJ5LWFmdGVyIl07aWYoaSlmb3IoY29uc3QgdCBvZiBpLnRyaW0oKS5zcGxpdCgiLCIpKXtjb25zdFtuLGUsLCxpXT10LnNwbGl0KCI6Iiw1KSxzPXBhcnNlSW50KG4sMTApLGM9MWUzKihpc05hTihzKT82MDpzKTtpZihlKWZvcihjb25zdCB0IG9mIGUuc3BsaXQoIjsiKSkibWV0cmljX2J1Y2tldCI9PT10JiZpJiYhaS5zcGxpdCgiOyIpLmluY2x1ZGVzKCJjdXN0b20iKXx8KG9bdF09citjKTtlbHNlIG8uYWxsPXIrY31lbHNlIHM/by5hbGw9citmdW5jdGlvbih0LG49VygpKXtjb25zdCBlPXBhcnNlSW50KGAke3R9YCwxMCk7aWYoIWlzTmFOKGUpKXJldHVybiAxZTMqZTtjb25zdCByPURhdGUucGFyc2UoYCR7dH1gKTtyZXR1cm4gaXNOYU4ocik/NmU0OnItbn0ocyxyKTo0Mjk9PT1uJiYoby5hbGw9cis2ZTQpO3JldHVybiBvfWZ1bmN0aW9uIEp0KHQsbixlPUd0KHQuYnVmZmVyU2l6ZXx8NjQpKXtsZXQgcj17fTtyZXR1cm57c2VuZDpmdW5jdGlvbih0KXtjb25zdCBvPVtdO2lmKEl0KHQsKHQsbik9Pntjb25zdCBlPUR0KG4pOyhmdW5jdGlvbih0LG4sZT1XKCkpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB0W25dfHx0LmFsbHx8MH0odCxuKT5lfSkocixlKXx8by5wdXNoKHQpfSksMD09PW8ubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO2NvbnN0IGk9a3QodFswXSxvKSxzPXQ9PnshZnVuY3Rpb24odCxuKXtyZXR1cm4gSXQodCwodCxlKT0+bi5pbmNsdWRlcyhlKSl9KGksWyJjbGllbnRfcmVwb3J0Il0pP0l0KGksKHQsbik9Pnt9KTpoJiZTLndhcm4oYERyb3BwaW5nIGNsaWVudCByZXBvcnQuIFdpbGwgbm90IHNlbmQgb3V0Y29tZXMgKHJlYXNvbjogJHt0fSkuYCl9O3JldHVybiBlLmFkZCgoKT0+bih7Ym9keTpSdChpKX0pLnRoZW4odD0+NDEzPT09dC5zdGF0dXNDb2RlPyhoJiZTLmVycm9yKCJTZW50cnkgcmVzcG9uZGVkIHdpdGggc3RhdHVzIGNvZGUgNDEzLiBFbnZlbG9wZSB3YXMgZGlzY2FyZGVkIGR1ZSB0byBleGNlZWRpbmcgc2l6ZSBsaW1pdHMuIikscygic2VuZF9lcnJvciIpLHQpOihoJiZ2b2lkIDAhPT10LnN0YXR1c0NvZGUmJih0LnN0YXR1c0NvZGU8MjAwfHx0LnN0YXR1c0NvZGU+PTMwMCkmJlMud2FybihgU2VudHJ5IHJlc3BvbmRlZCB3aXRoIHN0YXR1cyBjb2RlICR7dC5zdGF0dXNDb2RlfSB0byBzZW50IGV2ZW50LmApLHI9SHQocix0KSx0KSx0PT57dGhyb3cgcygibmV0d29ya19lcnJvciIpLGgmJlMuZXJyb3IoIkVuY291bnRlcmVkIGVycm9yIHJ1bm5pbmcgdHJhbnNwb3J0IHJlcXVlc3Q6Iix0KSx0fSkpLnRoZW4odD0+dCx0PT57aWYodD09PUZ0KXJldHVybiBoJiZTLmVycm9yKCJTa2lwcGVkIHNlbmRpbmcgZXZlbnQgYmVjYXVzZSBidWZmZXIgaXMgZnVsbC4iKSxzKCJxdWV1ZV9vdmVyZmxvdyIpLFByb21pc2UucmVzb2x2ZSh7fSk7dGhyb3cgdH0pfSxmbHVzaDp0PT5lLmRyYWluKHQpfX1jb25zdCBZdD0vXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87ZnVuY3Rpb24gVnQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtjb25zdCBuPXQubGVuZ3RoPjEwMjQ/YDx0cnVuY2F0ZWQ+JHt0LnNsaWNlKC0xMDI0KX1gOnQsZT1ZdC5leGVjKG4pO3JldHVybiBlP2Uuc2xpY2UoMSk6W119KHQpLGU9blswXXx8IiI7bGV0IHI9blsxXTtyZXR1cm4gZXx8cj8ociYmKHI9ci5zbGljZSgwLHIubGVuZ3RoLTEpKSxlK3IpOiIuIn1mdW5jdGlvbiBLdCh0LG49ITEpe3JldHVybiEobnx8dCYmIXQuc3RhcnRzV2l0aCgiLyIpJiYhdC5tYXRjaCgvXltBLVpdOi8pJiYhdC5zdGFydHNXaXRoKCIuIikmJiF0Lm1hdGNoKC9eW2EtekEtWl0oW2EtekEtWjAtOS5cLStdKSo6XC9cLy8pKSYmdm9pZCAwIT09dCYmIXQuaW5jbHVkZXMoIm5vZGVfbW9kdWxlcy8iKX1jb25zdCBadD1TeW1ib2woIkFnZW50QmFzZUludGVybmFsU3RhdGUiKTtjbGFzcyBxdCBleHRlbmRzIGkuQWdlbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpc1tadF09e319aXNTZWN1cmVFbmRwb2ludCh0KXtpZih0KXtpZigiYm9vbGVhbiI9PXR5cGVvZiB0LnNlY3VyZUVuZHBvaW50KXJldHVybiB0LnNlY3VyZUVuZHBvaW50O2lmKCJzdHJpbmciPT10eXBlb2YgdC5wcm90b2NvbClyZXR1cm4iaHR0cHM6Ij09PXQucHJvdG9jb2x9Y29uc3R7c3RhY2s6bn09bmV3IEVycm9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmbi5zcGxpdCgiXG4iKS5zb21lKHQ9Pi0xIT09dC5pbmRleE9mKCIoaHR0cHMuanM6Iil8fC0xIT09dC5pbmRleE9mKCJub2RlOmh0dHBzOiIpKX1jcmVhdGVTb2NrZXQodCxuLGUpe2NvbnN0IHI9ey4uLm4sc2VjdXJlRW5kcG9pbnQ6dGhpcy5pc1NlY3VyZUVuZHBvaW50KG4pfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbm5lY3QodCxyKSkudGhlbihvPT57aWYobyBpbnN0YW5jZW9mIGkuQWdlbnQpcmV0dXJuIG8uYWRkUmVxdWVzdCh0LHIpO3RoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9byxzdXBlci5jcmVhdGVTb2NrZXQodCxuLGUpfSxlKX1jcmVhdGVDb25uZWN0aW9uKCl7Y29uc3QgdD10aGlzW1p0XS5jdXJyZW50U29ja2V0O2lmKHRoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9dm9pZCAwLCF0KXRocm93IG5ldyBFcnJvcigiTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24iKTtyZXR1cm4gdH1nZXQgZGVmYXVsdFBvcnQoKXtyZXR1cm4gdGhpc1tadF0uZGVmYXVsdFBvcnQ/PygiaHR0cHM6Ij09PXRoaXMucHJvdG9jb2w/NDQzOjgwKX1zZXQgZGVmYXVsdFBvcnQodCl7dGhpc1tadF0mJih0aGlzW1p0XS5kZWZhdWx0UG9ydD10KX1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpc1tadF0ucHJvdG9jb2w/Pyh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKT8iaHR0cHM6IjoiaHR0cDoiKX1zZXQgcHJvdG9jb2wodCl7dGhpc1tadF0mJih0aGlzW1p0XS5wcm90b2NvbD10KX19ZnVuY3Rpb24gUXQoLi4udCl7Uy5sb2coIltodHRwcy1wcm94eS1hZ2VudDpwYXJzZS1wcm94eS1yZXNwb25zZV0iLC4uLnQpfWZ1bmN0aW9uIFh0KHQpe3JldHVybiBuZXcgUHJvbWlzZSgobixlKT0+e2xldCByPTA7Y29uc3Qgbz1bXTtmdW5jdGlvbiBpKCl7Y29uc3QgYz10LnJlYWQoKTtjP2Z1bmN0aW9uKGMpe28ucHVzaChjKSxyKz1jLmxlbmd0aDtjb25zdCB1PUJ1ZmZlci5jb25jYXQobyxyKSxhPXUuaW5kZXhPZigiXHJcblxyXG4iKTtpZigtMT09PWEpcmV0dXJuIFF0KCJoYXZlIG5vdCByZWNlaXZlZCBlbmQgb2YgSFRUUCBoZWFkZXJzIHlldC4uLiIpLHZvaWQgaSgpO2NvbnN0IGY9dS5zdWJhcnJheSgwLGEpLnRvU3RyaW5nKCJhc2NpaSIpLnNwbGl0KCJcclxuIiksaD1mLnNoaWZ0KCk7aWYoIWgpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKCJObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlIikpO2NvbnN0IHA9aC5zcGxpdCgiICIpLGQ9KyhwWzFdfHwwKSxsPXAuc2xpY2UoMikuam9pbigiICIpLG09e307Zm9yKGNvbnN0IG4gb2YgZil7aWYoIW4pY29udGludWU7Y29uc3Qgcj1uLmluZGV4T2YoIjoiKTtpZigtMT09PXIpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKGBJbnZhbGlkIGhlYWRlciBmcm9tIHByb3h5IENPTk5FQ1QgcmVzcG9uc2U6ICIke259ImApKTtjb25zdCBvPW4uc2xpY2UoMCxyKS50b0xvd2VyQ2FzZSgpLGk9bi5zbGljZShyKzEpLnRyaW1TdGFydCgpLHM9bVtvXTsic3RyaW5nIj09dHlwZW9mIHM/bVtvXT1bcyxpXTpBcnJheS5pc0FycmF5KHMpP3MucHVzaChpKTptW29dPWl9UXQoImdvdCBwcm94eSBzZXJ2ZXIgcmVzcG9uc2U6ICVvICVvIixoLG0pLHMoKSxuKHtjb25uZWN0OntzdGF0dXNDb2RlOmQsc3RhdHVzVGV4dDpsLGhlYWRlcnM6bX0sYnVmZmVyZWQ6dX0pfShjKTp0Lm9uY2UoInJlYWRhYmxlIixpKX1mdW5jdGlvbiBzKCl7dC5yZW1vdmVMaXN0ZW5lcigiZW5kIixjKSx0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsdSksdC5yZW1vdmVMaXN0ZW5lcigicmVhZGFibGUiLGkpfWZ1bmN0aW9uIGMoKXtzKCksUXQoIm9uZW5kIiksZShuZXcgRXJyb3IoIlByb3h5IGNvbm5lY3Rpb24gZW5kZWQgYmVmb3JlIHJlY2VpdmluZyBDT05ORUNUIHJlc3BvbnNlIikpfWZ1bmN0aW9uIHUodCl7cygpLFF0KCJvbmVycm9yICVvIix0KSxlKHQpfXQub24oImVycm9yIix1KSx0Lm9uKCJlbmQiLGMpLGkoKX0pfWZ1bmN0aW9uIHRuKC4uLnQpe1MubG9nKCJbaHR0cHMtcHJveHktYWdlbnRdIiwuLi50KX1jbGFzcyBubiBleHRlbmRzIHF0e3N0YXRpYyBfX2luaXRTdGF0aWMoKXt0aGlzLnByb3RvY29scz1bImh0dHAiLCJodHRwcyJdfWNvbnN0cnVjdG9yKHQsbil7c3VwZXIobiksdGhpcy5vcHRpb25zPXt9LHRoaXMucHJveHk9InN0cmluZyI9PXR5cGVvZiB0P25ldyBVUkwodCk6dCx0aGlzLnByb3h5SGVhZGVycz1uPy5oZWFkZXJzPz97fSx0bigiQ3JlYXRpbmcgbmV3IEh0dHBzUHJveHlBZ2VudCBpbnN0YW5jZTogJW8iLHRoaXMucHJveHkuaHJlZik7Y29uc3QgZT0odGhpcy5wcm94eS5ob3N0bmFtZXx8dGhpcy5wcm94eS5ob3N0KS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpLHI9dGhpcy5wcm94eS5wb3J0P3BhcnNlSW50KHRoaXMucHJveHkucG9ydCwxMCk6Imh0dHBzOiI9PT10aGlzLnByb3h5LnByb3RvY29sPzQ0Mzo4MDt0aGlzLmNvbm5lY3RPcHRzPXtBTFBOUHJvdG9jb2xzOlsiaHR0cC8xLjEiXSwuLi5uP3JuKG4sImhlYWRlcnMiKTpudWxsLGhvc3Q6ZSxwb3J0OnJ9fWFzeW5jIGNvbm5lY3QodCxuKXtjb25zdHtwcm94eTplfT10aGlzO2lmKCFuLmhvc3QpdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gImhvc3QiIHByb3ZpZGVkJyk7bGV0IHI7aWYoImh0dHBzOiI9PT1lLnByb3RvY29sKXt0bigiQ3JlYXRpbmcgYHRscy5Tb2NrZXRgOiAlbyIsdGhpcy5jb25uZWN0T3B0cyk7Y29uc3QgdD10aGlzLmNvbm5lY3RPcHRzLnNlcnZlcm5hbWV8fHRoaXMuY29ubmVjdE9wdHMuaG9zdDtyPWYuY29ubmVjdCh7Li4udGhpcy5jb25uZWN0T3B0cyxzZXJ2ZXJuYW1lOnQmJmEuaXNJUCh0KT92b2lkIDA6dH0pfWVsc2UgdG4oIkNyZWF0aW5nIGBuZXQuU29ja2V0YDogJW8iLHRoaXMuY29ubmVjdE9wdHMpLHI9YS5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpO2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucHJveHlIZWFkZXJzP3RoaXMucHJveHlIZWFkZXJzKCk6ey4uLnRoaXMucHJveHlIZWFkZXJzfSxpPWEuaXNJUHY2KG4uaG9zdCk/YFske24uaG9zdH1dYDpuLmhvc3Q7bGV0IHM9YENPTk5FQ1QgJHtpfToke24ucG9ydH0gSFRUUC8xLjFcclxuYDtpZihlLnVzZXJuYW1lfHxlLnBhc3N3b3JkKXtjb25zdCB0PWAke2RlY29kZVVSSUNvbXBvbmVudChlLnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQoZS5wYXNzd29yZCl9YDtvWyJQcm94eS1BdXRob3JpemF0aW9uIl09YEJhc2ljICR7QnVmZmVyLmZyb20odCkudG9TdHJpbmcoImJhc2U2NCIpfWB9by5Ib3N0PWAke2l9OiR7bi5wb3J0fWAsb1siUHJveHktQ29ubmVjdGlvbiJdfHwob1siUHJveHktQ29ubmVjdGlvbiJdPXRoaXMua2VlcEFsaXZlPyJLZWVwLUFsaXZlIjoiY2xvc2UiKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhvKSlzKz1gJHt0fTogJHtvW3RdfVxyXG5gO2NvbnN0IGM9WHQocik7ci53cml0ZShgJHtzfVxyXG5gKTtjb25zdHtjb25uZWN0OnUsYnVmZmVyZWQ6aH09YXdhaXQgYztpZih0LmVtaXQoInByb3h5Q29ubmVjdCIsdSksdGhpcy5lbWl0KCJwcm94eUNvbm5lY3QiLHUsdCksMjAwPT09dS5zdGF0dXNDb2RlKXtpZih0Lm9uY2UoInNvY2tldCIsZW4pLG4uc2VjdXJlRW5kcG9pbnQpe3RuKCJVcGdyYWRpbmcgc29ja2V0IGNvbm5lY3Rpb24gdG8gVExTIik7Y29uc3QgdD1uLnNlcnZlcm5hbWV8fG4uaG9zdDtyZXR1cm4gZi5jb25uZWN0KHsuLi5ybihuLCJob3N0IiwicGF0aCIsInBvcnQiKSxzb2NrZXQ6cixzZXJ2ZXJuYW1lOmEuaXNJUCh0KT92b2lkIDA6dH0pfXJldHVybiByfXIuZGVzdHJveSgpO2NvbnN0IHA9bmV3IGEuU29ja2V0KHt3cml0YWJsZTohMX0pO3JldHVybiBwLnJlYWRhYmxlPSEwLHQub25jZSgic29ja2V0Iix0PT57dG4oIlJlcGxheWluZyBwcm94eSBidWZmZXIgZm9yIGZhaWxlZCByZXF1ZXN0IiksdC5wdXNoKGgpLHQucHVzaChudWxsKX0pLHB9fWZ1bmN0aW9uIGVuKHQpe3QucmVzdW1lKCl9ZnVuY3Rpb24gcm4odCwuLi5uKXtjb25zdCBlPXt9O2xldCByO2ZvcihyIGluIHQpbi5pbmNsdWRlcyhyKXx8KGVbcl09dFtyXSk7cmV0dXJuIGV9bm4uX19pbml0U3RhdGljKCk7ZnVuY3Rpb24gb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXltBLVpdOi8sIiIpLnJlcGxhY2UoL1xcL2csIi8iKX1jb25zdCBzbj1uO2xldCBjbix1bj0wLGFuPXt9O2Z1bmN0aW9uIGZuKHQpe3NuLmRlYnVnJiZjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7dH1gKX12YXIgaG4scG4sZG47Y29uc3QgbG49ZnVuY3Rpb24odCl7bGV0IG47dHJ5e249bmV3IFVSTCh0LnVybCl9Y2F0Y2gobil7cmV0dXJuIGIoKCk9Pntjb25zb2xlLndhcm4oIltAc2VudHJ5L25vZGVdOiBJbnZhbGlkIGRzbiBvciB0dW5uZWwgb3B0aW9uLCB3aWxsIG5vdCBzZW5kIGFueSBldmVudHMuIFRoZSB0dW5uZWwgb3B0aW9uIG11c3QgYmUgYSBmdWxsIFVSTCB3aGVuIHVzZWQuIil9KSxKdCh0LCgpPT5Qcm9taXNlLnJlc29sdmUoe30pKX1jb25zdCBlPSJodHRwczoiPT09bi5wcm90b2NvbCxyPWZ1bmN0aW9uKHQsbil7Y29uc3R7bm9fcHJveHk6ZX09cHJvY2Vzcy5lbnYscj1lPy5zcGxpdCgiLCIpLnNvbWUobj0+dC5ob3N0LmVuZHNXaXRoKG4pfHx0Lmhvc3RuYW1lLmVuZHNXaXRoKG4pKTtyZXR1cm4gcj92b2lkIDA6bn0obix0LnByb3h5fHwoZT9wcm9jZXNzLmVudi5odHRwc19wcm94eTp2b2lkIDApfHxwcm9jZXNzLmVudi5odHRwX3Byb3h5KSxvPWU/czppLGE9dm9pZCAwIT09dC5rZWVwQWxpdmUmJnQua2VlcEFsaXZlLGY9cj9uZXcgbm4ocik6bmV3IG8uQWdlbnQoe2tlZXBBbGl2ZTphLG1heFNvY2tldHM6MzAsdGltZW91dDoyZTN9KSxoPWZ1bmN0aW9uKHQsbixlKXtjb25zdHtob3N0bmFtZTpyLHBhdGhuYW1lOm8scG9ydDppLHByb3RvY29sOnMsc2VhcmNoOmF9PW5ldyBVUkwodC51cmwpO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gbmV3IFByb21pc2UoKGgscCk9PntCdCgoKT0+e2xldCBkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYyh7cmVhZCgpe3RoaXMucHVzaCh0KSx0aGlzLnB1c2gobnVsbCl9fSl9KGYuYm9keSk7Y29uc3QgbD17Li4udC5oZWFkZXJzfTtmLmJvZHkubGVuZ3RoPjMyNzY4JiYobFsiY29udGVudC1lbmNvZGluZyJdPSJnemlwIixkPWQucGlwZSh1KCkpKTtjb25zdCBtPXIuc3RhcnRzV2l0aCgiWyIpLGc9bi5yZXF1ZXN0KHttZXRob2Q6IlBPU1QiLGFnZW50OmUsaGVhZGVyczpsLGhvc3RuYW1lOm0/ci5zbGljZSgxLC0xKTpyLHBhdGg6YCR7b30ke2F9YCxwb3J0OmkscHJvdG9jb2w6cyxjYTp0LmNhQ2VydHN9LHQ9Pnt0Lm9uKCJkYXRhIiwoKT0+e30pLHQub24oImVuZCIsKCk9Pnt9KSx0LnNldEVuY29kaW5nKCJ1dGY4Iik7Y29uc3Qgbj10LmhlYWRlcnNbInJldHJ5LWFmdGVyIl0/P251bGwsZT10LmhlYWRlcnNbIngtc2VudHJ5LXJhdGUtbGltaXRzIl0/P251bGw7aCh7c3RhdHVzQ29kZTp0LnN0YXR1c0NvZGUsaGVhZGVyczp7InJldHJ5LWFmdGVyIjpuLCJ4LXNlbnRyeS1yYXRlLWxpbWl0cyI6QXJyYXkuaXNBcnJheShlKT9lWzBdfHxudWxsOmV9fSl9KTtnLm9uKCJlcnJvciIscCksZC5waXBlKGcpfSl9KX19KHQsdC5odHRwTW9kdWxlPz9vLGYpO3JldHVybiBKdCh0LGgpfSh7dXJsOihobj1zbi5kc24scG49c24udHVubmVsLGRuPXNuLnNka01ldGFkYXRhLnNkayxwbnx8YCR7ZnVuY3Rpb24odCl7cmV0dXJuYCR7ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnByb3RvY29sP2Ake3QucHJvdG9jb2x9OmA6IiIsZT10LnBvcnQ/YDoke3QucG9ydH1gOiIiO3JldHVybmAke259Ly8ke3QuaG9zdH0ke2V9JHt0LnBhdGg/YC8ke3QucGF0aH1gOiIifS9hcGkvYH0odCl9JHt0LnByb2plY3RJZH0vZW52ZWxvcGUvYH0oaG4pfT8ke2Z1bmN0aW9uKHQsbil7Y29uc3QgZT17c2VudHJ5X3ZlcnNpb246IjcifTtyZXR1cm4gdC5wdWJsaWNLZXkmJihlLnNlbnRyeV9rZXk9dC5wdWJsaWNLZXkpLG4mJihlLnNlbnRyeV9jbGllbnQ9YCR7bi5uYW1lfS8ke24udmVyc2lvbn1gKSxuZXcgVVJMU2VhcmNoUGFyYW1zKGUpLnRvU3RyaW5nKCl9KGhuLGRuKX1gKX0pO2FzeW5jIGZ1bmN0aW9uIG1uKCl7aWYoY24pe2ZuKCJTZW5kaW5nIGFibm9ybWFsIHNlc3Npb24iKSxWKGNuLHtzdGF0dXM6ImFibm9ybWFsIixhYm5vcm1hbF9tZWNoYW5pc206ImFucl9mb3JlZ3JvdW5kIixyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnR9KTtjb25zdCB0PWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89VXQoZSk7cmV0dXJuIGt0KHtzZW50X2F0OihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwuLi5vJiZ7c2RrOm99LC4uLiEhciYmbiYme2RzbjpidChuKX19LFsiYWdncmVnYXRlcyJpbiB0P1t7dHlwZToic2Vzc2lvbnMifSx0XTpbe3R5cGU6InNlc3Npb24ifSx0LnRvSlNPTigpXV0pfShjbixzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeSh0KSksYXdhaXQgbG4uc2VuZCh0KTt0cnl7ZT8ucG9zdE1lc3NhZ2UoInNlc3Npb24tZW5kZWQiKX1jYXRjaHt9fX1mdW5jdGlvbiBnbih0KXtpZighdClyZXR1cm47Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdC5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1BcnJheS5mcm9tKHQpO3JldHVybi9zZW50cnlXcmFwcGVkLy50ZXN0KEUobikuZnVuY3Rpb258fCIiKSYmbi5wb3AoKSxuLnJldmVyc2UoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiYobi5wb3AoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiZuLnBvcCgpKSxuLnNsaWNlKDAsNTApLm1hcCh0PT4oey4uLnQsZmlsZW5hbWU6dC5maWxlbmFtZXx8RShuKS5maWxlbmFtZSxmdW5jdGlvbjp0LmZ1bmN0aW9ufHwiPyJ9KSl9KHQpO2lmKHNuLmFwcFJvb3RQYXRoKWZvcihjb25zdCB0IG9mIG4pdC5maWxlbmFtZSYmKHQuZmlsZW5hbWU9VHQodC5maWxlbmFtZSxzbi5hcHBSb290UGF0aCkpO3JldHVybiBufWFzeW5jIGZ1bmN0aW9uIHluKHQsbil7aWYodW4+PXNuLm1heEFuckV2ZW50cylyZXR1cm47dW4rPTEsYXdhaXQgbW4oKSxmbigiU2VuZGluZyBldmVudCIpO2NvbnN0IGU9e2V2ZW50X2lkOkYoKSxjb250ZXh0czpzbi5jb250ZXh0cyxyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnQsZGlzdDpzbi5kaXN0LHBsYXRmb3JtOiJub2RlIixsZXZlbDoiZXJyb3IiLGV4Y2VwdGlvbjp7dmFsdWVzOlt7dHlwZToiQXBwbGljYXRpb25Ob3RSZXNwb25kaW5nIix2YWx1ZTpgQXBwbGljYXRpb24gTm90IFJlc3BvbmRpbmcgZm9yIGF0IGxlYXN0ICR7c24uYW5yVGhyZXNob2xkfSBtc2Asc3RhY2t0cmFjZTp7ZnJhbWVzOmduKHQpfSxtZWNoYW5pc206e3R5cGU6IkFOUiJ9fV19LHRhZ3M6c24uc3RhdGljVGFnc307biYmZnVuY3Rpb24odCxuKXtpZih6dCh0LG4pLCF0LmNvbnRleHRzPy50cmFjZSl7Y29uc3R7dHJhY2VJZDplLHBhcmVudFNwYW5JZDpyLHByb3BhZ2F0aW9uU3BhbklkOm99PW4ucHJvcGFnYXRpb25Db250ZXh0O3QuY29udGV4dHM9e3RyYWNlOnt0cmFjZV9pZDplLHNwYW5faWQ6b3x8cSgpLHBhcmVudF9zcGFuX2lkOnJ9LC4uLnQuY29udGV4dHN9fX0oZSxuKSxmdW5jdGlvbih0KXtpZigwPT09T2JqZWN0LmtleXMoYW4pLmxlbmd0aClyZXR1cm47Y29uc3Qgbj1zbi5hcHBSb290UGF0aD97fTphbjtpZihzbi5hcHBSb290UGF0aClmb3IoY29uc3RbdCxlXW9mIE9iamVjdC5lbnRyaWVzKGFuKSluW1R0KHQsc24uYXBwUm9vdFBhdGgpXT1lO2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3QgciBvZiB0LmV4Y2VwdGlvbj8udmFsdWVzfHxbXSlmb3IoY29uc3QgdCBvZiByLnN0YWNrdHJhY2U/LmZyYW1lc3x8W10pe2NvbnN0IHI9dC5hYnNfcGF0aHx8dC5maWxlbmFtZTtyJiZuW3JdJiZlLnNldChyLG5bcl0pfWlmKGUuc2l6ZT4wKXtjb25zdCBuPVtdO2Zvcihjb25zdFt0LHJdb2YgZS5lbnRyaWVzKCkpbi5wdXNoKHt0eXBlOiJzb3VyY2VtYXAiLGNvZGVfZmlsZTp0LGRlYnVnX2lkOnJ9KTt0LmRlYnVnX21ldGE9e2ltYWdlczpufX19KGUpO2NvbnN0IHI9THQoZSxzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeShyKSksYXdhaXQgbG4uc2VuZChyKSxhd2FpdCBsbi5mbHVzaCgyZTMpLHVuPj1zbi5tYXhBbnJFdmVudHMmJnNldFRpbWVvdXQoKCk9Pntwcm9jZXNzLmV4aXQoMCl9LDVlMyl9bGV0IGJuO2lmKGZuKCJTdGFydGVkIiksc24uY2FwdHVyZVN0YWNrVHJhY2Upe2ZuKCJDb25uZWN0aW5nIHRvIGRlYnVnZ2VyIik7Y29uc3Qgbj1uZXcgdDtuLmNvbm5lY3RUb01haW5UaHJlYWQoKSxmbigiQ29ubmVjdGVkIHRvIGRlYnVnZ2VyIik7Y29uc3QgZT1uZXcgTWFwO24ub24oIkRlYnVnZ2VyLnNjcmlwdFBhcnNlZCIsdD0+e2Uuc2V0KHQucGFyYW1zLnNjcmlwdElkLHQucGFyYW1zLnVybCl9KSxuLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLHQ9PntpZigib3RoZXIiPT09dC5wYXJhbXMucmVhc29uKXRyeXtmbigiRGVidWdnZXIgcGF1c2VkIik7Y29uc3QgaT1bLi4udC5wYXJhbXMuY2FsbEZyYW1lc10scz1zbi5hcHBSb290UGF0aD9mdW5jdGlvbih0PShwcm9jZXNzLmFyZ3ZbMV0/VnQocHJvY2Vzcy5hcmd2WzFdKTpwcm9jZXNzLmN3ZCgpKSxuPSJcXCI9PT1vKXtjb25zdCBlPW4/b24odCk6dDtyZXR1cm4gdD0+e2lmKCF0KXJldHVybjtjb25zdCBvPW4/b24odCk6dDtsZXR7ZGlyOmksYmFzZTpzLGV4dDpjfT1yLnBhcnNlKG8pOyIuanMiIT09YyYmIi5tanMiIT09YyYmIi5janMiIT09Y3x8KHM9cy5zbGljZSgwLC0xKmMubGVuZ3RoKSk7Y29uc3QgdT1kZWNvZGVVUklDb21wb25lbnQocyk7aXx8KGk9Ii4iKTtjb25zdCBhPWkubGFzdEluZGV4T2YoIi9ub2RlX21vZHVsZXMiKTtpZihhPi0xKXJldHVybmAke2kuc2xpY2UoYSsxNCkucmVwbGFjZSgvXC8vZywiLiIpfToke3V9YDtpZihpLnN0YXJ0c1dpdGgoZSkpe2NvbnN0IHQ9aS5zbGljZShlLmxlbmd0aCsxKS5yZXBsYWNlKC9cLy9nLCIuIik7cmV0dXJuIHQ/YCR7dH06JHt1fWA6dX1yZXR1cm4gdX19KHNuLmFwcFJvb3RQYXRoKTooKT0+e30sYz1pLm1hcCh0PT5mdW5jdGlvbih0LG4sZSl7Y29uc3Qgcj1uP24ucmVwbGFjZSgvXmZpbGU6XC9cLy8sIiIpOnZvaWQgMCxvPXQubG9jYXRpb24uY29sdW1uTnVtYmVyP3QubG9jYXRpb24uY29sdW1uTnVtYmVyKzE6dm9pZCAwLGk9dC5sb2NhdGlvbi5saW5lTnVtYmVyP3QubG9jYXRpb24ubGluZU51bWJlcisxOnZvaWQgMDtyZXR1cm57ZmlsZW5hbWU6cixtb2R1bGU6ZShyKSxmdW5jdGlvbjp0LmZ1bmN0aW9uTmFtZXx8Ij8iLGNvbG5vOm8sbGluZW5vOmksaW5fYXBwOnI/S3Qocik6dm9pZCAwfX0odCxlLmdldCh0LmxvY2F0aW9uLnNjcmlwdElkKSxzKSksdT1zZXRUaW1lb3V0KCgpPT57eW4oYykudGhlbihudWxsLCgpPT57Zm4oIlNlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZC4iKX0pfSw1ZTMpO24ucG9zdCgiUnVudGltZS5ldmFsdWF0ZSIse2V4cHJlc3Npb246Imdsb2JhbC5fX1NFTlRSWV9HRVRfU0NPUEVTX18oKTsiLHNpbGVudDohMCxyZXR1cm5CeVZhbHVlOiEwfSwodCxlKT0+e3QmJmZuKGBFcnJvciBleGVjdXRpbmcgc2NyaXB0OiAnJHt0Lm1lc3NhZ2V9J2ApLGNsZWFyVGltZW91dCh1KTtjb25zdCByPWU/LnJlc3VsdD9lLnJlc3VsdC52YWx1ZTp2b2lkIDA7bi5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKSxuLnBvc3QoIkRlYnVnZ2VyLmRpc2FibGUiKSx5bihjLHIpLnRoZW4obnVsbCwoKT0+e2ZuKCJTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuIil9KX0pfWNhdGNoKHQpe3Rocm93IG4ucG9zdCgiRGVidWdnZXIucmVzdW1lIiksbi5wb3N0KCJEZWJ1Z2dlci5kaXNhYmxlIiksdH19KSxibj0oKT0+e3RyeXtuLnBvc3QoIkRlYnVnZ2VyLmVuYWJsZSIsKCk9PntuLnBvc3QoIkRlYnVnZ2VyLnBhdXNlIil9KX1jYXRjaHt9fX1jb25zdHtwb2xsOnZufT1mdW5jdGlvbih0LG4sZSxyKXtjb25zdCBvPXQoKTtsZXQgaT0hMSxzPSEwO3JldHVybiBzZXRJbnRlcnZhbCgoKT0+e2NvbnN0IHQ9by5nZXRUaW1lTXMoKTshMT09PWkmJnQ+bitlJiYoaT0hMCxzJiZyKCkpLHQ8bitlJiYoaT0hMSl9LDIwKSx7cG9sbDooKT0+e28ucmVzZXQoKX0sZW5hYmxlZDp0PT57cz10fX19KGZ1bmN0aW9uKCl7bGV0IHQ9cHJvY2Vzcy5ocnRpbWUoKTtyZXR1cm57Z2V0VGltZU1zOigpPT57Y29uc3RbbixlXT1wcm9jZXNzLmhydGltZSh0KTtyZXR1cm4gTWF0aC5mbG9vcigxZTMqbitlLzFlNil9LHJlc2V0OigpPT57dD1wcm9jZXNzLmhydGltZSgpfX19LHNuLnBvbGxJbnRlcnZhbCxzbi5hbnJUaHJlc2hvbGQsZnVuY3Rpb24oKXtmbigiV2F0Y2hkb2cgdGltZW91dCIpLGJuPyhmbigiUGF1c2luZyBkZWJ1Z2dlciB0byBjYXB0dXJlIHN0YWNrIHRyYWNlIiksYm4oKSk6KGZuKCJDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlIikseW4oKS50aGVuKG51bGwsKCk9PntmbigiU2VuZGluZyBBTlIgZXZlbnQgZmFpbGVkIG9uIHdhdGNoZG9nIHRpbWVvdXQuIil9KSl9KTtlPy5vbigibWVzc2FnZSIsdD0+e3Quc2Vzc2lvbiYmKGNuPVkodC5zZXNzaW9uKSksdC5kZWJ1Z0ltYWdlcyYmKGFuPXQuZGVidWdJbWFnZXMpLHZuKCl9KTs=";function k(a,...b){f.debug.log(`[ANR] ${a}`,...b)}function l(){let a=f.getCombinedScopeData(f.getIsolationScope(),f.getCurrentScope());return a.attachments=[],a.eventProcessors=[],a}async function m(a){let b={message:"ANR"},c={};for(let d of a.getEventProcessors()){if(null===b)break;b=await d(b,c)}return b?.contexts||{}}async function n(b,c){let d=b.getDsn();if(!d)return()=>{};let g=await m(b);delete g.app?.app_memory,delete g.device?.free_memory;let h=b.getOptions(),i=b.getSdkMetadata()||{};i.sdk&&(i.sdk.integrations=h.integrations.map(a=>a.name));let l={debug:f.debug.isEnabled(),dsn:d,tunnel:h.tunnel,environment:h.environment||"production",release:h.release,dist:h.dist,sdkMetadata:i,appRootPath:c.appRootPath,pollInterval:c.pollInterval||50,anrThreshold:c.anrThreshold||5e3,captureStackTrace:!!c.captureStackTrace,maxAnrEvents:c.maxAnrEvents||1,staticTags:c.staticTags||{},contexts:g};if(l.captureStackTrace){let b=await a.A(234177);b.url()||b.open(0)}let n=new e.Worker(new URL(`data:application/javascript;base64,${j}`),{workerData:l,execArgv:[],env:{...process.env,NODE_OPTIONS:void 0}});process.on("exit",()=>{n.terminate()});let o=setInterval(()=>{try{let a=f.getIsolationScope().getSession(),b=a?{...a,toJSON:void 0}:void 0;n.postMessage({session:b,debugImages:f.getFilenameToDebugIdMap(h.stackParser)})}catch{}},l.pollInterval);return o.unref(),n.on("message",a=>{"session-ended"===a&&(k("ANR event sent from ANR worker. Clearing session in this thread."),f.getIsolationScope().setSession(void 0))}),n.once("error",a=>{clearInterval(o),k("ANR worker error",a)}),n.once("exit",a=>{clearInterval(o),k("ANR worker exit",a)}),n.unref(),()=>{n.terminate(),clearInterval(o)}}c.anrIntegration=f.defineIntegration((a={})=>{let b,c;if(g.NODE_VERSION.major<16||16===g.NODE_VERSION.major&&g.NODE_VERSION.minor<17)throw Error("ANR detection requires Node 16.17.0 or later");return f.GLOBAL_OBJ.__SENTRY_GET_SCOPES__=l,{name:"Anr",startWorker:()=>{!b&&c&&(b=n(c,a))},stopWorker:()=>{b&&b.then(a=>{a(),b=void 0})},async setup(b){c=b,a.captureStackTrace&&await h.isDebuggerEnabled()&&(f.debug.warn("ANR captureStackTrace has been disabled because the debugger was already enabled"),a.captureStackTrace=!1),setImmediate(()=>this.startWorker())}}}),c.base64WorkerScript=j,c.disableAnrDetectionForCallback=function(a){let b=f.getClient()?.getIntegrationByName("Anr");if(!b)return a();b.stopWorker();let c=a();return i(c)?c.finally(()=>b.startWorker()):(b.startWorker(),c)}},354566,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(812057),e=a.r(97153);c.captureLog=function(a,...b){let[c,f,g,h]=b;if(Array.isArray(f)){let b={...g};b["sentry.message.template"]=c,f.forEach((a,c)=>{b[`sentry.message.parameter.${c}`]=a});let i=d.format(c,...f);e._INTERNAL_captureLog({level:a,message:i,attributes:b},h?.scope)}else e._INTERNAL_captureLog({level:a,message:c,attributes:f},g?.scope??h?.scope)}},55530,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(354566);c.fmt=a.r(97153).fmt,c.debug=function(...a){d.captureLog("debug",...a)},c.error=function(...a){d.captureLog("error",...a)},c.fatal=function(...a){d.captureLog("fatal",...a)},c.info=function(...a){d.captureLog("info",...a)},c.trace=function(...a){d.captureLog("trace",...a)},c.warn=function(...a){d.captureLog("warn",...a)}},962987,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(60438),e=a.r(97153);c.nodeRuntimeMetricsIntegration=e.defineIntegration((a={})=>{let b,c,f,g,h=a.collectionIntervalMs??3e4,i={cpuUtilization:!0,memHeapUsed:!0,memHeapTotal:!0,memRss:!0,eventLoopDelayP50:!0,eventLoopDelayP99:!0,eventLoopUtilization:!0,uptime:!0,cpuTime:!1,memExternal:!1,eventLoopDelayMin:!1,eventLoopDelayMax:!1,eventLoopDelayMean:!1,eventLoopDelayP90:!1,...a.collect},j=i.eventLoopDelayP99||i.eventLoopDelayMin||i.eventLoopDelayMax||i.eventLoopDelayMean||i.eventLoopDelayP50||i.eventLoopDelayP90,k=i.cpuUtilization||i.cpuTime,l=0,m=a=>Math.max(0,(a-1e7)/1e9),n={attributes:{"sentry.origin":"auto.node.runtime_metrics"}},o={unit:"byte",attributes:{"sentry.origin":"auto.node.runtime_metrics"}},p={unit:"second",attributes:{"sentry.origin":"auto.node.runtime_metrics"}};function q(){let a=e._INTERNAL_safeDateNow(),b=a-l;if(k&&void 0!==c){let a=process.cpuUsage(c);i.cpuTime&&(e.metrics.gauge("node.runtime.cpu.user",a.user/1e6,p),e.metrics.gauge("node.runtime.cpu.system",a.system/1e6,p)),i.cpuUtilization&&b>0&&e.metrics.gauge("node.runtime.cpu.utilization",(a.user+a.system)/(1e3*b),n),c=process.cpuUsage()}if(i.memRss||i.memHeapUsed||i.memHeapTotal||i.memExternal){let a=process.memoryUsage();i.memRss&&e.metrics.gauge("node.runtime.mem.rss",a.rss,o),i.memHeapUsed&&e.metrics.gauge("node.runtime.mem.heap_used",a.heapUsed,o),i.memHeapTotal&&e.metrics.gauge("node.runtime.mem.heap_total",a.heapTotal,o),i.memExternal&&(e.metrics.gauge("node.runtime.mem.external",a.external,o),e.metrics.gauge("node.runtime.mem.array_buffers",a.arrayBuffers,o))}if(j&&g&&(i.eventLoopDelayMin&&e.metrics.gauge("node.runtime.event_loop.delay.min",m(g.min),p),i.eventLoopDelayMax&&e.metrics.gauge("node.runtime.event_loop.delay.max",m(g.max),p),i.eventLoopDelayMean&&e.metrics.gauge("node.runtime.event_loop.delay.mean",m(g.mean),p),i.eventLoopDelayP50&&e.metrics.gauge("node.runtime.event_loop.delay.p50",m(g.percentile(50)),p),i.eventLoopDelayP90&&e.metrics.gauge("node.runtime.event_loop.delay.p90",m(g.percentile(90)),p),i.eventLoopDelayP99&&e.metrics.gauge("node.runtime.event_loop.delay.p99",m(g.percentile(99)),p),g.reset()),i.eventLoopUtilization&&void 0!==f){let a=d.performance.eventLoopUtilization(),b=d.performance.eventLoopUtilization(a,f);e.metrics.gauge("node.runtime.event_loop.utilization",b.utilization,n),f=a}i.uptime&&b>0&&e.metrics.count("node.runtime.process.uptime",b/1e3,p),l=a}return{name:"NodeRuntimeMetrics",setup(){if(j){g?.disable();try{(g=d.monitorEventLoopDelay({resolution:10})).enable()}catch{g=void 0}}k&&(c=process.cpuUsage()),i.eventLoopUtilization&&(f=d.performance.eventLoopUtilization()),l=e._INTERNAL_safeDateNow(),b&&clearInterval(b),b=e._INTERNAL_safeUnref(setInterval(q,h))}}})},740254,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(355055),f=a.r(354566),g=["trace","debug","info","warn","error","fatal"],h=Symbol.for("level"),i=Symbol.for("message"),j=Symbol.for("splat"),k={silly:"trace",debug:"debug",verbose:"debug",http:"debug",info:"info",notice:"info",warn:"warn",warning:"warn",error:"error",emerg:"fatal",alert:"fatal",crit:"fatal"};c.createSentryWinstonTransport=function(a,b){return class extends a{constructor(a){super(a),this._levels=new Set(b?.levels??g)}log(a,c){try{var g;if(setImmediate(()=>{this.emit("logged",a)}),g=a,"object"!=typeof g||null==g)return;let c=a[h],{level:l,message:m,timestamp:n,...o}=a;o[h]=void 0,o[i]=void 0,o[j]=void 0;let p=b?.customLevelMap?.[c],q=k[c],r=p??q??"info";this._levels.has(r)?f.captureLog(r,m,{...o,"sentry.origin":"auto.log.winston"}):p||q||!e.DEBUG_BUILD||d.debug.log(`Winston log level ${c} is not captured by Sentry. Please add ${c} to the "customLevelMap" option of the Sentry Winston transport.`)}catch{}c&&c()}}}},680424,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(677652),e=a.r(97153),f=Symbol("sentry-track-pino-logger");function g(a,b,c){let d=Object.getOwnPropertySymbols(a),e=`Symbol(${b})`;for(let b of d)if(b.toString()===e){let d=a[b];return"string"==typeof d?d:c}return c}let h={levels:[],handled:!0},i={levels:["trace","debug","info","warn","error","fatal"]};c.pinoIntegration=Object.assign(e.defineIntegration((a={})=>{let b={autoInstrument:!1!==a.autoInstrument,error:{...h,...a.error},log:{...i,...a.log}};return{name:"Pino",setup:a=>{let c=!!a.getOptions().enableLogs;d.tracingChannel("pino_asJson").end.subscribe(a=>{let{instance:d,arguments:h,result:i}=a;!function(a,d,h){let i;if("track"!==(i=a[f])&&("ignore"===i||!b.autoInstrument))return;let j=function(a){let{level:b,time:c,pid:d,hostname:e,...f}=a;return f}(h),[k,l,m]=d,n=a?.levels?.labels?.[m]||"info",o=g(a,"pino.messageKey","msg"),p=l||j?.[o]||"";if(c&&b.log.levels.includes(n)){let a={...j,"sentry.origin":"auto.log.pino","pino.logger.level":m};e._INTERNAL_captureLog({level:n,message:p,attributes:a})}if(b.error.levels.includes(n)){let c={level:e.severityLevelFromString(n)};e.withScope(d=>{d.addEventProcessor(a=>(a.logger="pino",e.addExceptionMechanism(a,{handled:b.error.handled,type:"auto.log.pino"}),a));let f=k[g(a,"pino.errorKey","err")];f?e.captureException(f,c):e.captureMessage(p,c)})}}(d,h,JSON.parse(i))})}}}),{trackLogger(a){a&&"object"==typeof a&&"levels"in a&&(a[f]="track")},untrackLogger(a){a&&"object"==typeof a&&"levels"in a&&(a[f]="ignore")}})},400788,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.addOriginToSpan=function(a,b){a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,b)}},629636,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getRequestUrl=function(a){let b=a.protocol||"",c=a.hostname||a.host||"",d=!a.port||80===a.port||443===a.port||/^(.*):(\d+)$/.test(c)?"":`:${a.port}`,e=a.path?a.path:"/";return`${b}//${c}${d}${e}`}},54016,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];c.replaceCronNames=function(a){return d.reduce((a,[b,c])=>a.replace(RegExp(b,"gi"),c),a)}},542829,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(54016),f="Automatic instrumentation of CronJob only supports crontab string";c.instrumentCron=function(a,b){let c=!1;return new Proxy(a,{construct(a,g){let[h,i,j,k,l,...m]=g;if("string"!=typeof h)throw Error(f);if(c)throw Error(`A job named '${b}' has already been scheduled`);c=!0;let n=e.replaceCronNames(h);return new a(h,async function(a,c){return d.withMonitor(b,async()=>{try{await i(a,c)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),a}},{schedule:{type:"crontab",value:n},timezone:l||void 0})},j,k,l,...m)},get:(a,g)=>"from"===g?g=>{let{cronTime:h,onTick:i,timeZone:j}=g;if("string"!=typeof h)throw Error(f);if(c)throw Error(`A job named '${b}' has already been scheduled`);c=!0;let k=e.replaceCronNames(h);return g.onTick=async(a,c)=>d.withMonitor(b,async()=>{try{await i(a,c)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),a}},{schedule:{type:"crontab",value:k},timezone:j||void 0}),a.from(g)}:a[g]})}},801702,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(54016);c.instrumentNodeCron=function(a,b={}){return new Proxy(a,{get:(a,c)=>"schedule"===c&&a.schedule?new Proxy(a.schedule,{apply(a,c,f){let[g,h,i]=f,j=i?.name,k=i?.timezone;if(!j)throw Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');let l=async(...a)=>d.withMonitor(j,async()=>{try{return await h(...a)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.node-cron.instrumentNodeCron"}}),a}},{schedule:{type:"crontab",value:e.replaceCronNames(g)},timezone:k,...b});return a.apply(c,[g,l,i])}}):a[c]})}},695102,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(54016);c.instrumentNodeSchedule=function(a){return new Proxy(a,{get:(a,b)=>"scheduleJob"===b?new Proxy(a.scheduleJob,{apply(a,b,c){let[f,g,h]=c;if("string"!=typeof f||"string"!=typeof g||"function"!=typeof h)throw Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");async function i(){return d.withMonitor(f,async()=>{await h?.()},{schedule:{type:"crontab",value:e.replaceCronNames(g)}})}return a.apply(b,[f,g,i])}}):a[b]})}},784021,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(542829),e=a.r(801702),f=a.r(695102);c.cron={instrumentCron:d.instrumentCron,instrumentNodeCron:e.instrumentNodeCron,instrumentNodeSchedule:f.instrumentNodeSchedule}},829770,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(596290),e=a.r(781994),f=a.r(742341),g=a.r(716987),h=a.r(486417),i=a.r(230797),j=a.r(791249),k=a.r(721424),l=a.r(538276),m=a.r(328625),n=a.r(284211),o=a.r(18272),p=a.r(495406),q=a.r(369330),r=a.r(960535),s=a.r(406219),t=a.r(97153),u=a.r(55530),v=a.r(732257),w=a.r(962987),x=a.r(17454),y=a.r(200526),z=a.r(646711),A=a.r(9332),B=a.r(437659),C=a.r(249942),D=a.r(355329),E=a.r(468915),F=a.r(740254),G=a.r(680424),H=a.r(563422),I=a.r(774056),J=a.r(400788),K=a.r(629636),L=a.r(139392),M=a.r(226798),N=a.r(509014),O=a.r(936232),P=a.r(784021),Q=a.r(176004);c.httpIntegration=d.httpIntegration,c.httpServerSpansIntegration=e.httpServerSpansIntegration,c.httpServerIntegration=f.httpServerIntegration,c.SentryHttpInstrumentation=g.SentryHttpInstrumentation,c.nativeNodeFetchIntegration=h.nativeNodeFetchIntegration,c.SentryNodeFetchInstrumentation=i.SentryNodeFetchInstrumentation,c.SentryContextManager=j.SentryContextManager,c.setupOpenTelemetryLogger=k.setupOpenTelemetryLogger,c.INSTRUMENTED=l.INSTRUMENTED,c.generateInstrumentOnce=l.generateInstrumentOnce,c.instrumentWhenWrapped=l.instrumentWhenWrapped,c.getDefaultIntegrations=m.getDefaultIntegrations,c.init=m.init,c.initWithoutDefaultIntegrations=m.initWithoutDefaultIntegrations,c.validateOpenTelemetrySetup=m.validateOpenTelemetrySetup,c.setIsolationScope=n.setIsolationScope,c.NodeClient=o.NodeClient,c.ensureIsWrapped=p.ensureIsWrapped,c.processSessionIntegration=q.processSessionIntegration,c.setNodeAsyncContextStrategy=r.setOpenTelemetryContextAsyncContextStrategy,c.anrIntegration=s.anrIntegration,c.disableAnrDetectionForCallback=s.disableAnrDetectionForCallback,c.SDK_VERSION=t.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=t.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=t.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=t.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=t.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=t.Scope,c.addBreadcrumb=t.addBreadcrumb,c.addEventProcessor=t.addEventProcessor,c.addIntegration=t.addIntegration,c.captureCheckIn=t.captureCheckIn,c.captureConsoleIntegration=t.captureConsoleIntegration,c.captureEvent=t.captureEvent,c.captureException=t.captureException,c.captureFeedback=t.captureFeedback,c.captureMessage=t.captureMessage,c.captureSession=t.captureSession,c.close=t.close,c.consoleIntegration=t.consoleIntegration,c.consoleLoggingIntegration=t.consoleLoggingIntegration,c.continueTrace=t.continueTrace,c.createConsolaReporter=t.createConsolaReporter,c.createTransport=t.createTransport,c.dedupeIntegration=t.dedupeIntegration,c.endSession=t.endSession,c.envToBool=t.envToBool,c.eventFiltersIntegration=t.eventFiltersIntegration,c.extraErrorDataIntegration=t.extraErrorDataIntegration,c.featureFlagsIntegration=t.featureFlagsIntegration,c.flush=t.flush,c.functionToStringIntegration=t.functionToStringIntegration,c.getActiveSpan=t.getActiveSpan,c.getClient=t.getClient,c.getCurrentScope=t.getCurrentScope,c.getGlobalScope=t.getGlobalScope,c.getIsolationScope=t.getIsolationScope,c.getRootSpan=t.getRootSpan,c.getSpanDescendants=t.getSpanDescendants,c.getSpanStatusFromHttpCode=t.getSpanStatusFromHttpCode,c.getTraceData=t.getTraceData,c.getTraceMetaTags=t.getTraceMetaTags,c.inboundFiltersIntegration=t.inboundFiltersIntegration,c.instrumentSupabaseClient=t.instrumentSupabaseClient,c.isEnabled=t.isEnabled,c.isInitialized=t.isInitialized,c.lastEventId=t.lastEventId,c.linkedErrorsIntegration=t.linkedErrorsIntegration,c.metrics=t.metrics,c.parameterize=t.parameterize,c.profiler=t.profiler,c.requestDataIntegration=t.requestDataIntegration,c.rewriteFramesIntegration=t.rewriteFramesIntegration,c.setContext=t.setContext,c.setCurrentClient=t.setCurrentClient,c.setExtra=t.setExtra,c.setExtras=t.setExtras,c.setHttpStatus=t.setHttpStatus,c.setMeasurement=t.setMeasurement,c.setTag=t.setTag,c.setTags=t.setTags,c.setUser=t.setUser,c.spanToBaggageHeader=t.spanToBaggageHeader,c.spanToJSON=t.spanToJSON,c.spanToTraceHeader=t.spanToTraceHeader,c.startInactiveSpan=t.startInactiveSpan,c.startNewTrace=t.startNewTrace,c.startSession=t.startSession,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.supabaseIntegration=t.supabaseIntegration,c.suppressTracing=t.suppressTracing,c.trpcMiddleware=t.trpcMiddleware,c.updateSpanName=t.updateSpanName,c.withActiveSpan=t.withActiveSpan,c.withIsolationScope=t.withIsolationScope,c.withMonitor=t.withMonitor,c.withScope=t.withScope,c.wrapMcpServerWithSentry=t.wrapMcpServerWithSentry,c.zodErrorsIntegration=t.zodErrorsIntegration,c.logger=u,c.nodeContextIntegration=v.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=w.nodeRuntimeMetricsIntegration,c.contextLinesIntegration=x.contextLinesIntegration,c.localVariablesIntegration=y.localVariablesIntegration,c.modulesIntegration=z.modulesIntegration,c.onUncaughtExceptionIntegration=A.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=B.onUnhandledRejectionIntegration,c.spotlightIntegration=C.spotlightIntegration,c.systemErrorIntegration=D.systemErrorIntegration,c.childProcessIntegration=E.childProcessIntegration,c.createSentryWinstonTransport=F.createSentryWinstonTransport,c.pinoIntegration=G.pinoIntegration,c.defaultStackParser=H.defaultStackParser,c.getSentryRelease=H.getSentryRelease,c.createGetModuleFromFilename=I.createGetModuleFromFilename,c.addOriginToSpan=J.addOriginToSpan,c.getRequestUrl=K.getRequestUrl,c.initializeEsmLoader=L.initializeEsmLoader,c.isCjs=M.isCjs,c.createMissingInstrumentationContext=N.createMissingInstrumentationContext,c.makeNodeTransport=O.makeNodeTransport,c.cron=P.cron,c.NODE_VERSION=Q.NODE_VERSION},506596,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(794595),f=a.r(97153),g=a.r(829770),h="Http",i="@opentelemetry_sentry-patched/instrumentation-http",j=22===g.NODE_VERSION.major&&g.NODE_VERSION.minor>=12||23===g.NODE_VERSION.major&&g.NODE_VERSION.minor>=2||g.NODE_VERSION.major>=24,k=g.generateInstrumentOnce(`${h}.sentry`,a=>new g.SentryHttpInstrumentation(a)),l=g.generateInstrumentOnce(h,a=>{let b=new e.HttpInstrumentation({...a,disableIncomingRequestInstrumentation:!0});try{b._diag=d.diag.createComponentLogger({namespace:i}),b.instrumentationName=i}catch{}try{let a={get:()=>!1,set:()=>{}};Object.defineProperty(b,"_httpPatched",a),Object.defineProperty(b,"_httpsPatched",a)}catch{}return b});function m(a,b={}){return"boolean"==typeof a.spans?a.spans:!b.skipOpenTelemetrySetup&&(!!f.hasSpansEnabled(b)||!j)}let n=f.defineIntegration((a={})=>{let b=a.spans??!0,c=a.disableIncomingRequestSpans,d={sessions:a.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:a.sessionFlushingDelayMS,ignoreRequestBody:a.ignoreIncomingRequestBody,maxRequestBodySize:a.maxIncomingRequestBodySize},e={ignoreIncomingRequests:a.ignoreIncomingRequests,ignoreStaticAssets:a.ignoreStaticAssets,ignoreStatusCodes:a.dropSpansForIncomingRequestStatusCodes,instrumentation:a.instrumentation,onSpanCreated:a.incomingRequestSpanHook},i=g.httpServerIntegration(d),n=g.httpServerSpansIntegration(e),o=b&&!c;return{name:h,setup(a){let b=a.getOptions();o&&f.hasSpansEnabled(b)&&n.setup(a)},setupOnce(){let b=m(a,f.getClient()?.getOptions()||{});i.setupOnce(),k({breadcrumbs:a.breadcrumbs,propagateTraceInOutgoingRequests:"boolean"==typeof a.tracePropagation?a.tracePropagation:j||!b,createSpansForOutgoingRequests:j,spans:a.spans,ignoreOutgoingRequests:a.ignoreOutgoingRequests,outgoingRequestHook:(b,c)=>{let d=g.getRequestUrl(c);if(d.startsWith("data:")){let a=f.stripDataUrlContent(d);b.setAttribute("http.url",a),b.setAttribute(f.SEMANTIC_ATTRIBUTE_URL_FULL,a),b.updateName(`${c.method||"GET"} ${a}`)}a.instrumentation?.requestHook?.(b,c)},outgoingResponseHook:a.instrumentation?.responseHook,outgoingRequestApplyCustomAttributes:a.instrumentation?.applyCustomAttributesOnSpan}),b&&l(function(a={}){return{disableOutgoingRequestInstrumentation:j,ignoreOutgoingRequestHook:b=>{let c=g.getRequestUrl(b);if(!c)return!1;let d=a.ignoreOutgoingRequests;return!!d?.(c,b)},requireParentforOutgoingSpans:!1,requestHook:(b,c)=>{g.addOriginToSpan(b,"auto.http.otel.http");let d=g.getRequestUrl(c);if(d.startsWith("data:")){let a=f.stripDataUrlContent(d);b.setAttribute("http.url",a),b.setAttribute(f.SEMANTIC_ATTRIBUTE_URL_FULL,a),b.updateName(`${c.method||"GET"} ${a}`)}a.instrumentation?.requestHook?.(b,c)},responseHook:(b,c)=>{a.instrumentation?.responseHook?.(b,c)},applyCustomAttributesOnSpan:(b,c,d)=>{a.instrumentation?.applyCustomAttributesOnSpan?.(b,c,d)}}}(a))},processEvent:a=>n.processEvent(a)}});c._shouldUseOtelHttpInstrumentation=m,c.httpIntegration=n,c.instrumentOtelHttp=l,c.instrumentSentryHttp=k},474158,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.24.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-undici"},275482,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.UndiciInstrumentation=void 0;let d=a.r(154993),e=a.r(792509),f=a.r(621472),g=a.r(854230),h=a.r(35492),i=a.r(357223),j=a.r(474158);class k extends f.InstrumentationBase{_recordFromReq=new WeakMap;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a)}init(){}disable(){super.disable(),this._channelSubs.forEach(a=>a.unsubscribe()),this._channelSubs.length=0}enable(){super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0||(this.subscribeToChannel("undici:request:create",this.onRequestCreated.bind(this)),this.subscribeToChannel("undici:client:sendHeaders",this.onRequestHeaders.bind(this)),this.subscribeToChannel("undici:request:headers",this.onResponseHeaders.bind(this)),this.subscribeToChannel("undici:request:trailers",this.onDone.bind(this)),this.subscribeToChannel("undici:request:error",this.onError.bind(this)))}_updateMetricInstruments(){this._httpClientDurationHistogram=this.meter.createHistogram(i.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Measures the duration of outbound HTTP requests.",unit:"s",valueType:g.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10]}})}subscribeToChannel(a,b){let c,[e,f]=process.version.replace("v","").split(".").map(a=>Number(a));if(e>18||18===e&&f>=19)d.subscribe?.(a,b),c=()=>d.unsubscribe?.(a,b);else{let e=d.channel(a);e.subscribe(b),c=()=>e.unsubscribe(b)}this._channelSubs.push({name:a,unsubscribe:c})}parseRequestHeaders(a){let b=new Map;if(Array.isArray(a.headers))for(let c=0;c!j||"CONNECT"===a.method||d.ignoreRequestHook?.(a),a=>a&&this._diag.error("caught ignoreRequestHook error: ",a),!0))return;let k=(0,h.hrTime)();try{b=new e.URL(a.path,a.origin)}catch(a){this._diag.warn("could not determine url.full:",a);return}let l=b.protocol.replace(":",""),m=this.getRequestMethod(a.method),n={[i.ATTR_HTTP_REQUEST_METHOD]:m,[i.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]:a.method,[i.ATTR_URL_FULL]:b.toString(),[i.ATTR_URL_PATH]:b.pathname,[i.ATTR_URL_QUERY]:b.search,[i.ATTR_URL_SCHEME]:l},o=b.hostname,p=b.port||({https:"443",http:"80"})[l];n[i.ATTR_SERVER_ADDRESS]=o,p&&!isNaN(Number(p))&&(n[i.ATTR_SERVER_PORT]=Number(p));let q=this.parseRequestHeaders(a).get("user-agent");if(q){let a=Array.isArray(q)?q[q.length-1]:q;n[i.ATTR_USER_AGENT_ORIGINAL]=a}let r=(0,f.safeExecuteInTheMiddle)(()=>d.startSpanHook?.(a),a=>a&&this._diag.error("caught startSpanHook error: ",a),!0);r&&Object.entries(r).forEach(([a,b])=>{n[a]=b});let s=g.context.active(),t=g.trace.getSpan(s);c=!d.requireParentforSpans||t&&g.trace.isSpanContextValid(t.spanContext())?this.tracer.startSpan("_OTHER"===m?"HTTP":m,{kind:g.SpanKind.CLIENT,attributes:n},s):g.trace.wrapSpanContext(g.INVALID_SPAN_CONTEXT),(0,f.safeExecuteInTheMiddle)(()=>d.requestHook?.(c,a),a=>a&&this._diag.error("caught requestHook error: ",a),!0);let u=g.trace.setSpan(g.context.active(),c),v={};g.propagation.inject(u,v);let w=Object.entries(v);for(let b=0;ba.toLowerCase()));for(let[c,d]of this.parseRequestHeaders(a).entries())if(b.has(c)){let a=Array.isArray(d)?d:[d];h[`http.request.header.${c}`]=a}}e.setAttributes(h)}onResponseHeaders({request:a,response:b}){let c=this._recordFromReq.get(a);if(!c)return;let{span:d,attributes:e}=c,h={[i.ATTR_HTTP_RESPONSE_STATUS_CODE]:b.statusCode},j=this.getConfig();if((0,f.safeExecuteInTheMiddle)(()=>j.responseHook?.(d,{request:a,response:b}),a=>a&&this._diag.error("caught responseHook error: ",a),!0),j.headersToSpanAttributes?.responseHeaders){let a=new Set;j.headersToSpanAttributes?.responseHeaders.forEach(b=>a.add(b.toLowerCase()));for(let c=0;c=400?g.SpanStatusCode.ERROR:g.SpanStatusCode.UNSET}),c.attributes=Object.assign(e,h)}onDone({request:a}){let b=this._recordFromReq.get(a);if(!b)return;let{span:c,attributes:d,startTime:e}=b;c.end(),this._recordFromReq.delete(a),this.recordRequestDuration(d,e)}onError({request:a,error:b}){let c=this._recordFromReq.get(a);if(!c)return;let{span:d,attributes:e,startTime:f}=c;d.recordException(b),d.setStatus({code:g.SpanStatusCode.ERROR,message:b.message}),d.end(),this._recordFromReq.delete(a),e[i.ATTR_ERROR_TYPE]=b.message,this.recordRequestDuration(e,f)}recordRequestDuration(a,b){let c={};[i.ATTR_HTTP_RESPONSE_STATUS_CODE,i.ATTR_HTTP_REQUEST_METHOD,i.ATTR_SERVER_ADDRESS,i.ATTR_SERVER_PORT,i.ATTR_URL_SCHEME,i.ATTR_ERROR_TYPE].forEach(b=>{b in a&&(c[b]=a[b])});let d=(0,h.hrTimeToMilliseconds)((0,h.hrTimeDuration)(b,(0,h.hrTime)()))/1e3;this._httpClientDurationHistogram.record(d,c)}getRequestMethod(a){return a.toUpperCase()in{CONNECT:!0,OPTIONS:!0,HEAD:!0,GET:!0,POST:!0,PUT:!0,PATCH:!0,DELETE:!0,TRACE:!0,QUERY:!0}?a.toUpperCase():"_OTHER"}}c.UndiciInstrumentation=k},501028,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.UndiciInstrumentation=void 0;var d=a.r(275482);Object.defineProperty(c,"UndiciInstrumentation",{enumerable:!0,get:function(){return d.UndiciInstrumentation}})},383093,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(501028),e=a.r(97153),f=a.r(829770),g="NodeFetch",h=f.generateInstrumentOnce(g,d.UndiciInstrumentation,a=>l(a)),i=f.generateInstrumentOnce(`${g}.sentry`,f.SentryNodeFetchInstrumentation,a=>a),j=e.defineIntegration((a={})=>({name:"NodeFetch",setupOnce(){(function(a,b={}){return"boolean"==typeof a.spans?a.spans:!b.skipOpenTelemetrySetup&&e.hasSpansEnabled(b)})(a,e.getClient()?.getOptions())&&h(a),i(a)}}));function k(a,b="/"){let c=`${a}`;return c.endsWith("/")&&b.startsWith("/")?`${c}${b.slice(1)}`:c.endsWith("/")||b.startsWith("/")?`${c}${b}`:`${c}/${b}`}function l(a={}){return{requireParentforSpans:!1,ignoreRequestHook:b=>{let c=k(b.origin,b.path),d=a.ignoreOutgoingRequests;return!!(d&&c&&d(c))},startSpanHook:a=>{let b=k(a.origin,a.path);if(b.startsWith("data:")){let c=e.stripDataUrlContent(b);return{[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch","http.url":c,[e.SEMANTIC_ATTRIBUTE_URL_FULL]:c,[e.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]:`${a.method||"GET"} ${c}`}}return{[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch"}},requestHook:a.requestHook,responseHook:a.responseHook,headersToSpanAttributes:a.headersToSpanAttributes}}c._getConfigWithDefaults=l,c.nativeNodeFetchIntegration=j},989370,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-fs"},501791,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SYNC_FUNCTIONS=c.CALLBACK_FUNCTIONS=c.PROMISE_FUNCTIONS=void 0,c.PROMISE_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],c.CALLBACK_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","exists","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],c.SYNC_FUNCTIONS=["accessSync","appendFileSync","chmodSync","chownSync","copyFileSync","cpSync","existsSync","lchownSync","linkSync","lstatSync","lutimesSync","mkdirSync","mkdtempSync","opendirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","unlinkSync","utimesSync","writeFileSync"]},674491,(a,b,c)=>{"use strict";function d(a){let b=a.split(".");if(!(b.length>1))return[a];if(2!==b.length)throw Error(`Invalid member function name ${a}`);return b}Object.defineProperty(c,"__esModule",{value:!0}),c.indexFs=c.splitTwoLevels=void 0,c.splitTwoLevels=d,c.indexFs=function(a,b){if(!b)throw Error(JSON.stringify({member:b}));let[c,e]=d(b);return e?{objectToPatch:a[c],functionNameToPatch:e}:{objectToPatch:a,functionNameToPatch:c}}},585672,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.FsInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(989370),h=a.r(501791),i=a.r(224361),j=a.r(674491);function k(a,b){return Object.assign(a,b)}class l extends f.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new f.InstrumentationNodeModuleDefinition("fs",["*"],a=>{for(let b of h.SYNC_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d),this._wrap(c,d,this._patchSyncFunction.bind(this,b))}for(let b of h.CALLBACK_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);if((0,f.isWrapped)(c[d])&&this._unwrap(c,d),"exists"===b){this._wrap(c,d,this._patchExistsCallbackFunction.bind(this,b));continue}this._wrap(c,d,this._patchCallbackFunction.bind(this,b))}for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a.promises[b])&&this._unwrap(a.promises,b),this._wrap(a.promises,b,this._patchPromiseFunction.bind(this,b));return a},a=>{if(void 0!==a){for(let b of h.SYNC_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d)}for(let b of h.CALLBACK_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d)}for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a.promises[b])&&this._unwrap(a.promises,b)}}),new f.InstrumentationNodeModuleDefinition("fs/promises",["*"],a=>{for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,this._patchPromiseFunction.bind(this,b));return a},a=>{if(void 0!==a)for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a[b])&&this._unwrap(a,b)})]}_patchSyncFunction(a,b){let c=this;return k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=c.tracer.startSpan(`fs ${a}`);try{let i=d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,h)),b,this,...f);return c._runEndHook(a,{args:f,span:h}),i}catch(b){throw h.recordException(b),h.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:h,error:b}),b}finally{h.end()}},b)}_patchCallbackFunction(a,b){let c=this;return k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=f.length-1,i=f[h];if("function"!=typeof i)return b.apply(this,f);{let j=c.tracer.startSpan(`fs ${a}`);f[h]=d.context.bind(g,function(b){return b&&(j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR})),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),i.apply(this,arguments)});try{return d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,j)),b,this,...f)}catch(b){throw j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),b}}},b)}_patchExistsCallbackFunction(a,b){let c=this,f=k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=f.length-1,i=f[h];if("function"!=typeof i)return b.apply(this,f);{let j=c.tracer.startSpan(`fs ${a}`);f[h]=d.context.bind(g,function(){return c._runEndHook(a,{args:f,span:j}),j.end(),i.apply(this,arguments)});try{return d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,j)),b,this,...f)}catch(b){throw j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),b}}},b),g=function(a){return new Promise(b=>f(a,b))};return Object.defineProperty(g,"name",{value:a}),Object.defineProperty(f,i.promisify.custom,{value:g}),f}_patchPromiseFunction(a,b){let c=this;return k(async function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=c.tracer.startSpan(`fs ${a}`);try{let i=await d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,h)),b,this,...f);return c._runEndHook(a,{args:f,span:h}),i}catch(b){throw h.recordException(b),h.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:h,error:b}),b}finally{h.end()}},b)}_runCreateHook(...a){let{createHook:b}=this.getConfig();if("function"==typeof b)try{return b(...a)}catch(a){this._diag.error("caught createHook error",a)}return!0}_runEndHook(...a){let{endHook:b}=this.getConfig();if("function"==typeof b)try{b(...a)}catch(a){this._diag.error("caught endHook error",a)}}_shouldTrace(a){if((0,e.isTracingSuppressed)(a))return!1;let{requireParentSpan:b}=this.getConfig();return(!b||null!=d.trace.getSpan(a))&&!0}}c.FsInstrumentation=l},41654,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.FsInstrumentation=void 0;var d=a.r(585672);Object.defineProperty(c,"FsInstrumentation",{enumerable:!0,get:function(){return d.FsInstrumentation}})},706317,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(41654),e=a.r(97153),f=a.r(829770),g="FileSystem",h=e.defineIntegration((a={})=>({name:g,setupOnce(){f.generateInstrumentOnce(g,()=>new d.FsInstrumentation({requireParentSpan:!0,endHook(b,{args:c,span:d,error:f}){d.updateName(`fs.${b}`),d.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"file",[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.file.fs"}),a.recordErrorMessagesAsSpanAttributes&&("string"==typeof c[0]&&n.includes(b)?d.setAttribute("path_argument",c[0]):"string"==typeof c[0]&&"string"==typeof c[1]&&m.includes(b)?(d.setAttribute("target_argument",c[0]),d.setAttribute("path_argument",c[1])):"string"==typeof c[0]&&l.includes(b)?d.setAttribute("prefix_argument",c[0]):"string"==typeof c[0]&&"string"==typeof c[1]&&k.includes(b)?(d.setAttribute("existing_path_argument",c[0]),d.setAttribute("new_path_argument",c[1])):"string"==typeof c[0]&&"string"==typeof c[1]&&j.includes(b)?(d.setAttribute("src_argument",c[0]),d.setAttribute("dest_argument",c[1])):"string"==typeof c[0]&&"string"==typeof c[1]&&i.includes(b)&&(d.setAttribute("old_path_argument",c[0]),d.setAttribute("new_path_argument",c[1]))),f&&a.recordErrorMessagesAsSpanAttributes&&d.setAttribute("fs_error",f.message)}}))()}})),i=["rename","renameSync"],j=["copyFile","cp","copyFileSync","cpSync"],k=["link","linkSync"],l=["mkdtemp","mkdtempSync"],m=["symlink","symlinkSync"],n=["access","appendFile","chmod","chown","exists","mkdir","lchown","lstat","lutimes","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rm","rmdir","stat","truncate","unlink","utimes","writeFile","accessSync","appendFileSync","chmodSync","chownSync","existsSync","lchownSync","lstatSync","lutimesSync","opendirSync","mkdirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","rmdirSync","rmSync","statSync","truncateSync","unlinkSync","utimesSync","writeFileSync"];c.fsIntegration=h},193912,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.ExpressLayerType=void 0,(d=c.ExpressLayerType||(c.ExpressLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware",d.REQUEST_HANDLER="request_handler"},773359,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).EXPRESS_TYPE="express.type",d.EXPRESS_NAME="express.name"},726522,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=c.kLayerPatched=void 0,c.kLayerPatched=Symbol("express-layer-patched"),c._LAYERS_STORE_PROPERTY="__ot_middlewares"},57899,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getActualMatchedRoute=c.getConstructedRoute=c.getLayerPath=c.asErrorAndMessage=c.isLayerIgnored=c.getLayerMetadata=c.getRouterPath=c.storeLayerPath=void 0;let d=a.r(193912),e=a.r(773359),f=a.r(726522);c.storeLayerPath=(a,b)=>(!1===Array.isArray(a[f._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,f._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),void 0===b)?{isLayerPathStored:!1}:(a[f._LAYERS_STORE_PROPERTY].push(b),{isLayerPathStored:!0}),c.getRouterPath=(a,b)=>{let d=b.handle?.stack?.[0];return d?.route?.path?`${a}${d.route.path}`:d?.handle?.stack?(0,c.getRouterPath)(a,d):a},c.getLayerMetadata=(a,b,f)=>{if("router"===b.name){let g=(0,c.getRouterPath)("",b)||f||a||"/";return{attributes:{[e.AttributeNames.EXPRESS_NAME]:g,[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.ROUTER},name:`router - ${g}`}}return"bound dispatch"===b.name||"handle"===b.name?{attributes:{[e.AttributeNames.EXPRESS_NAME]:(a||f)??"request handler",[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.REQUEST_HANDLER},name:`request handler${b.path?` - ${a||f}`:""}`}:{attributes:{[e.AttributeNames.EXPRESS_NAME]:b.name,[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.MIDDLEWARE},name:`middleware - ${b.name}`}};let g=(a,b)=>{if("string"==typeof b)return b===a;if(b instanceof RegExp)return b.test(a);if("function"==typeof b)return b(a);throw TypeError("Pattern is in unsupported datatype")};c.isLayerIgnored=(a,b,c)=>{if(Array.isArray(c?.ignoreLayersType)&&c?.ignoreLayersType?.includes(b))return!0;if(!1===Array.isArray(c?.ignoreLayers))return!1;try{for(let b of c.ignoreLayers)if(g(a,b))return!0}catch(a){}return!1},c.asErrorAndMessage=a=>a instanceof Error?[a,a.message]:[String(a),String(a)],c.getLayerPath=a=>{let b=a[0];return Array.isArray(b)?b.map(a=>h(a)||"").join(","):h(b)};let h=a=>"string"==typeof a?a:a instanceof RegExp||"number"==typeof a?a.toString():void 0;function i(a){let b=(Array.isArray(a[f._LAYERS_STORE_PROPERTY])?a[f._LAYERS_STORE_PROPERTY]:[]).filter(a=>"/"!==a&&"/*"!==a);return 1===b.length&&"*"===b[0]?"*":b.join("").replace(/\/{2,}/g,"/")}c.getConstructedRoute=i,c.getActualMatchedRoute=function(a){var b;let c=Array.isArray(a[f._LAYERS_STORE_PROPERTY])?a[f._LAYERS_STORE_PROPERTY]:[];if(0===c.length)return;if(c.every(a=>"/"===a))return"/"===a.originalUrl?"/":void 0;let d=i(a);if("*"===d||d.includes("/")&&(d.includes(",")||d.includes("\\")||d.includes("*")||d.includes("[")))return d;let e=d.startsWith("/")?d:`/${d}`;return e.length>0&&(a.originalUrl===e||a.originalUrl.startsWith(e)||(b=e).includes(":")||b.includes("*"))?e:void 0}},496973,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-express"},471238,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ExpressInstrumentation=void 0;let d=a.r(35492),e=a.r(854230),f=a.r(193912),g=a.r(773359),h=a.r(57899),i=a.r(496973),j=a.r(621472),k=a.r(357223),l=a.r(726522);class m extends j.InstrumentationBase{constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a)}init(){return[new j.InstrumentationNodeModuleDefinition("express",[">=4.0.0 <6"],a=>{let b="function"==typeof a?.Router?.prototype?.route,c=b?a.Router.prototype:a.Router;return(0,j.isWrapped)(c.route)&&this._unwrap(c,"route"),this._wrap(c,"route",this._getRoutePatch()),(0,j.isWrapped)(c.use)&&this._unwrap(c,"use"),this._wrap(c,"use",this._getRouterUsePatch()),(0,j.isWrapped)(a.application.use)&&this._unwrap(a.application,"use"),this._wrap(a.application,"use",this._getAppUsePatch(b)),a},a=>{if(void 0===a)return;let b="function"==typeof a?.Router?.prototype?.route?a.Router.prototype:a.Router;this._unwrap(b,"route"),this._unwrap(b,"use"),this._unwrap(a.application,"use")})]}_getRoutePatch(){let a=this;return function(b){return function(...c){let d=b.apply(this,c),e=this.stack[this.stack.length-1];return a._applyPatch(e,(0,h.getLayerPath)(c)),d}}}_getRouterUsePatch(){let a=this;return function(b){return function(...c){let d=b.apply(this,c),e=this.stack[this.stack.length-1];return a._applyPatch(e,(0,h.getLayerPath)(c)),d}}}_getAppUsePatch(a){let b=this;return function(c){return function(...d){let e=a?this.router:this._router,f=c.apply(this,d);if(e){let a=e.stack[e.stack.length-1];b._applyPatch(a,(0,h.getLayerPath)(d))}return f}}}_applyPatch(a,b){let c=this;!0!==a[l.kLayerPatched]&&(a[l.kLayerPatched]=!0,this._wrap(a,"handle",i=>{if(4===i.length)return i;let m=function(m,n){let{isLayerPathStored:o}=(0,h.storeLayerPath)(m,b),p=(0,h.getConstructedRoute)(m),q=(0,h.getActualMatchedRoute)(m),r={[k.ATTR_HTTP_ROUTE]:q},s=(0,h.getLayerMetadata)(p,a,b),t=s.attributes[g.AttributeNames.EXPRESS_TYPE],u=(0,d.getRPCMetadata)(e.context.active());if(u?.type===d.RPCType.HTTP&&(u.route=q),(0,h.isLayerIgnored)(s.name,t,c.getConfig()))return t===f.ExpressLayerType.MIDDLEWARE&&m[l._LAYERS_STORE_PROPERTY].pop(),i.apply(this,arguments);if(void 0===e.trace.getSpan(e.context.active()))return i.apply(this,arguments);let v=c._getSpanName({request:m,layerType:t,route:p},s.name),w=c.tracer.startSpan(v,{attributes:Object.assign(r,s.attributes)}),x=e.context.active(),y=e.trace.setSpan(x,w),{requestHook:z}=c.getConfig();z&&(0,j.safeExecuteInTheMiddle)(()=>z(w,{request:m,layerType:t,route:p}),a=>{a&&e.diag.error("express instrumentation: request hook failed",a)},!0);let A=!1;s.attributes[g.AttributeNames.EXPRESS_TYPE]===f.ExpressLayerType.ROUTER&&(w.end(),A=!0,y=x);let B=()=>{!1===A&&(A=!0,w.end())},C=Array.from(arguments),D=C.findIndex(a=>"function"==typeof a);D>=0&&(arguments[D]=function(){let a=arguments[0],b=![void 0,null,"route","router"].includes(a);if(!A&&b){let[b,c]=(0,h.asErrorAndMessage)(a);w.recordException(b),w.setStatus({code:e.SpanStatusCode.ERROR,message:c})}!1===A&&(A=!0,m.res?.removeListener("finish",B),w.end()),!(m.route&&b)&&o&&m[l._LAYERS_STORE_PROPERTY].pop();let c=C[D],d=e.context.active(),f=e.trace.getSpan(x),g=f?e.trace.setSpan(d,f):d;return e.context.bind(g,c).apply(this,arguments)});try{return e.context.bind(y,i).apply(this,arguments)}catch(c){let[a,b]=(0,h.asErrorAndMessage)(c);throw w.recordException(a),w.setStatus({code:e.SpanStatusCode.ERROR,message:b}),c}finally{A||n.once("finish",B)}};for(let a in i)Object.defineProperty(m,a,{get:()=>i[a],set(b){i[a]=b}});return m}))}_getSpanName(a,b){let{spanNameHook:c}=this.getConfig();if(!(c instanceof Function))return b;try{return c(a,b)??b}catch(a){return e.diag.error("express instrumentation: error calling span name rewrite hook",a),b}}}c.ExpressInstrumentation=m},650086,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.ExpressLayerType=c.ExpressInstrumentation=void 0;var d=a.r(471238);Object.defineProperty(c,"ExpressInstrumentation",{enumerable:!0,get:function(){return d.ExpressInstrumentation}});var e=a.r(193912);Object.defineProperty(c,"ExpressLayerType",{enumerable:!0,get:function(){return e.ExpressLayerType}});var f=a.r(773359);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return f.AttributeNames}})},560192,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(650086),e=a.r(97153),f=a.r(829770),g=a.r(560192),h="Express",i=f.generateInstrumentOnce(h,()=>new d.ExpressInstrumentation({requestHook:a=>{let b,c,d;return f.addOriginToSpan(a,"auto.http.otel.express"),(c=(b=e.spanToJSON(a).data)["express.type"])&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${c}.express`),void("string"==typeof(d=b["express.name"])&&a.updateName(d))},spanNameHook:(a,b)=>(function(a,b){if(e.getIsolationScope()===e.getDefaultIsolationScope())return g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still default isolation scope - skipping setting transactionName"),b;if("request_handler"===a.layerType){let b=a.request,c=b.method?b.method.toUpperCase():"GET";e.getIsolationScope().setTransactionName(`${c} ${a.route}`)}return b})(a,b)})),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}}));function k(a){return function(b,c,d,f){let g=e.httpRequestToRequestData(c);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g}),(a?.shouldHandleError||function(a){let b;return((b=a.status||a.statusCode||a.status_code||a.output?.statusCode)?parseInt(b,10):500)>=500})(b)&&(d.sentry=e.captureException(b,{mechanism:{type:"auto.middleware.express",handled:!1}})),f(b)}}c.expressErrorHandler=k,c.expressIntegration=j,c.instrumentExpress=i,c.setupExpressErrorHandler=function(a,b){a.use(function(a,b,c){let d=e.httpRequestToRequestData(a);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:d}),c()}),a.use(k(b)),f.ensureIsWrapped(a.use,"express")}},349576,a=>{"use strict";a.s([],147311),a.i(147311);var b,c,d=a.i(818414),e=a.i(286508);let f=Symbol.for("io.opentelemetry.js.api.logs"),g=globalThis;class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return g[f]?this.getLoggerProvider():(g[f]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=g[f])?void 0:a.call(g,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete g[f],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(385603);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(await b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(b=>b.name===g&&af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!0},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{files;name;supportedVersions;patch;unpatch;constructor(a,b,c,d,e){this.files=e||[],this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d}}class ah{name;supportedVersions;patch;unpatch;constructor(a,b,c,d){this.name=(0,p.normalize)(a),this.supportedVersions=b,this.patch=c,this.unpatch=d}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],349576)},178902,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.range=c.balanced=void 0,c.balanced=(a,b,e)=>{let f=a instanceof RegExp?d(a,e):a,g=b instanceof RegExp?d(b,e):b,h=null!==f&&null!=g&&(0,c.range)(f,g,e);return h&&{start:h[0],end:h[1],pre:e.slice(0,h[0]),body:e.slice(h[0]+f.length,h[1]),post:e.slice(h[1]+g.length)}};let d=(a,b)=>{let c=b.match(a);return c?c[0]:null};c.range=(a,b,c)=>{let d,e,f,g,h,i=c.indexOf(a),j=c.indexOf(b,i+1),k=i;if(i>=0&&j>0){if(a===b)return[i,j];for(d=[],f=c.length;k>=0&&!h;){if(k===i)d.push(k),i=c.indexOf(a,k+1);else if(1===d.length){let a=d.pop();void 0!==a&&(h=[a,j])}else void 0!==(e=d.pop())&&e=0?i:j}d.length&&void 0!==g&&(h=[f,g])}return h}},332896,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EXPANSION_MAX=void 0,c.expand=function(a,b={}){if(!a)return[];let{max:j=c.EXPANSION_MAX}=b;return"{}"===a.slice(0,2)&&(a="\\{\\}"+a.slice(2)),(function a(b,c,e){let f=[],h=(0,d.balanced)("{","}",b);if(!h)return[b];let i=h.pre,j=h.post.length?a(h.post,c,!1):[""];if(/\$$/.test(h.pre))for(let a=0;a=0;if(!o&&!p)return h.post.match(/,(?!,).*\}/)?a(b=h.pre+"{"+h.body+g+h.post,c,!0):[b];if(o)k=h.body.split(/\.\./);else if(1===(k=function a(b){if(!b)return[""];let c=[],e=(0,d.balanced)("{","}",b);if(!e)return b.split(",");let{pre:f,body:g,post:h}=e,i=f.split(",");i[i.length-1]+="{"+g+"}";let j=a(h);return h.length&&(i[i.length-1]+=j.shift(),i.push.apply(i,j)),c.push.apply(c,i),c}(h.body)).length&&void 0!==k[0]&&1===(k=a(k[0],c,!1).map(v)).length)return j.map(a=>h.pre+k[0]+a);if(o&&void 0!==k[0]&&void 0!==k[1]){let a=t(k[0]),b=t(k[1]),c=Math.max(k[0].length,k[1].length),d=3===k.length&&void 0!==k[2]?Math.max(Math.abs(t(k[2])),1):1,e=x;b0){let c=Array(b+1).join("0");a=g<0?"-"+c+a.slice(1):c+a}}l.push(a)}}else{l=[];for(let b=0;b=b}c.EXPANSION_MAX=1e5},777306,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.assertValidPattern=void 0,c.assertValidPattern=a=>{if("string"!=typeof a)throw TypeError("invalid pattern");if(a.length>65536)throw TypeError("pattern is too long")}},14745,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.parseClass=void 0;let d={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},e=a=>a.replace(/[[\]\\-]/g,"\\$&");c.parseClass=(a,b)=>{if("["!==a.charAt(b))throw Error("not in a brace expression");let c=[],f=[],g=b+1,h=!1,i=!1,j=!1,k=!1,l=b,m="";a:for(;gm?c.push(e(m)+"-"+e(n)):n===m&&c.push(e(n)),m="",g++;continue}if(a.startsWith("-]",g+1)){c.push(e(n+"-")),g+=2;continue}if(a.startsWith("-",g+1)){m=n,g+=2;continue}c.push(e(n)),g++}if(l{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.unescape=void 0,c.unescape=(a,{windowsPathsNoEscape:b=!1,magicalBraces:c=!0}={})=>c?b?a.replace(/\[([^/\\])\]/g,"$1"):a.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):b?a.replace(/\[([^/\\{}])\]/g,"$1"):a.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1")},558282,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AST=void 0;let e=a.r(14745),f=a.r(202704),g=new Set(["!","?","+","*","@"]),h=a=>g.has(a),i=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),j=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),k=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),l=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),m="(?!\\.)",n=new Set(["[","."]),o=new Set(["..","."]),p=new Set("().*{}+?[]^$\\!"),q=a=>a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),r="[^/]",s=r+"*?",t=r+"+?",u=0;class v{type;#a;#b;#c=!1;#d=[];#e;#f;#g;#h=!1;#i;#j;#k=!1;id=++u;get depth(){return(this.#e?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#a.id,parent:this.#e?.id,depth:this.depth,partsLength:this.#d.length,parts:this.#d}}constructor(a,b,c={}){this.type=a,a&&(this.#b=!0),this.#e=b,this.#a=this.#e?this.#e.#a:this,this.#i=this.#a===this?c:this.#a.#i,this.#g=this.#a===this?[]:this.#a.#g,"!"!==a||this.#a.#h||this.#g.push(this),this.#f=this.#e?this.#e.#d.length:0}get hasMagic(){if(void 0!==this.#b)return this.#b;for(let a of this.#d)if("string"!=typeof a&&(a.type||a.hasMagic))return this.#b=!0;return this.#b}toString(){return void 0!==this.#j?this.#j:this.type?this.#j=this.type+"("+this.#d.map(a=>String(a)).join("|")+")":this.#j=this.#d.map(a=>String(a)).join("")}#l(){let a;if(this!==this.#a)throw Error("should only call on root");if(this.#h)return this;for(this.toString(),this.#h=!0;a=this.#g.pop();){if("!"!==a.type)continue;let b=a,c=b.#e;for(;c;){for(let d=b.#f+1;!c.type&&d"string"==typeof a?a:a.toJSON()):[this.type,...this.#d.map(a=>a.toJSON())];return this.isStart()&&!this.type&&a.unshift([]),this.isEnd()&&(this===this.#a||this.#a.#h&&this.#e?.type==="!")&&a.push({}),a}isStart(){if(this.#a===this)return!0;if(!this.#e?.isStart())return!1;if(0===this.#f)return!0;let a=this.#e;for(let b=0;b"string"!=typeof a),e=this.#d.map(b=>{let[e,f,g,h]="string"==typeof b?d.#w(b,this.#b,c):b.toRegExpSource(a);return this.#b=this.#b||g,this.#c=this.#c||h,e}).join(""),g="";if(this.isStart()&&"string"==typeof this.#d[0]&&!(1===this.#d.length&&o.has(this.#d[0]))){let c=b&&n.has(e.charAt(0))||e.startsWith("\\.")&&n.has(e.charAt(2))||e.startsWith("\\.\\.")&&n.has(e.charAt(4)),d=!b&&!a&&n.has(e.charAt(0));g=c?"(?!(?:^|/)\\.\\.?(?:$|/))":d?m:""}let h="";return this.isEnd()&&this.#a.#h&&this.#e?.type==="!"&&(h="(?:$|\\/)"),[g+e+h,(0,f.unescape)(e),this.#b=!!this.#b,this.#c]}let c="*"===this.type||"+"===this.type,e="!"===this.type?"(?:(?!(?:":"(?:",g=this.#x(b);if(this.isStart()&&this.isEnd()&&!g&&"!"!==this.type){let a=this.toString();return this.#d=[a],this.type=null,this.#b=void 0,[a,(0,f.unescape)(this.toString()),!1,!1]}let i=!c||a||b||!m?"":this.#x(!0);i===g&&(i=""),i&&(g=`(?:${g})(?:${i})*?`);return["!"===this.type&&this.#k?(this.isStart()&&!b?m:"")+t:e+g+("!"===this.type?"))"+(!this.isStart()||b||a?"":m)+s+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":`)${this.type}`),(0,f.unescape)(g),this.#b=!!this.#b,this.#c]}#v(){if(h(this.type)){let a=0,b=!1;do{b=!0;for(let a=0;a{if("string"==typeof b)throw Error("string type in extglob ast??");let[c,d,e,f]=b.toRegExpSource(a);return this.#c=this.#c||f,c}).filter(a=>!(this.isStart()&&this.isEnd())||!!a).join("|")}static #w(a,b,c=!1){let d=!1,g="",h=!1,i=!1;for(let f=0;f{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.escape=void 0,c.escape=(a,{windowsPathsNoEscape:b=!1,magicalBraces:c=!1}={})=>c?b?a.replace(/[?*()[\]{}]/g,"[$&]"):a.replace(/[?*()[\]\\{}]/g,"\\$&"):b?a.replace(/[?*()[\]]/g,"[$&]"):a.replace(/[?*()[\]\\]/g,"\\$&")},40728,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.unescape=c.escape=c.AST=c.Minimatch=c.match=c.makeRe=c.braceExpand=c.defaults=c.filter=c.GLOBSTAR=c.sep=c.minimatch=void 0;let d=a.r(332896),e=a.r(777306),f=a.r(558282),g=a.r(850747),h=a.r(202704);c.minimatch=(a,b,c={})=>((0,e.assertValidPattern)(b),(!!c.nocomment||"#"!==b.charAt(0))&&new x(b,c).match(a));let i=/^\*+([^+@!?*[(]*)$/,j=/^\*+\.\*+$/,k=a=>!a.startsWith(".")&&a.includes("."),l=a=>"."!==a&&".."!==a&&a.includes("."),m=/^\.\*+$/,n=a=>"."!==a&&".."!==a&&a.startsWith("."),o=/^\*+$/,p=a=>0!==a.length&&!a.startsWith("."),q=a=>0!==a.length&&"."!==a&&".."!==a,r=/^\?+([^+@!?*[(]*)?$/,s=([a])=>{let b=a.length;return a=>a.length===b&&!a.startsWith(".")},t=([a])=>{let b=a.length;return a=>a.length===b&&"."!==a&&".."!==a},u="object"==typeof process&&process?"object"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";c.sep="win32"===u?"\\":"/",c.minimatch.sep=c.sep,c.GLOBSTAR=Symbol("globstar **"),c.minimatch.GLOBSTAR=c.GLOBSTAR;c.filter=(a,b={})=>d=>(0,c.minimatch)(d,a,b),c.minimatch.filter=c.filter;let v=(a,b={})=>Object.assign({},a,b);c.defaults=a=>{if(!a||"object"!=typeof a||!Object.keys(a).length)return c.minimatch;let b=c.minimatch;return Object.assign((c,d,e={})=>b(c,d,v(a,e)),{Minimatch:class extends b.Minimatch{constructor(b,c={}){super(b,v(a,c))}static defaults(c){return b.defaults(v(a,c)).Minimatch}},AST:class extends b.AST{constructor(b,c,d={}){super(b,c,v(a,d))}static fromGlob(c,d={}){return b.AST.fromGlob(c,v(a,d))}},unescape:(c,d={})=>b.unescape(c,v(a,d)),escape:(c,d={})=>b.escape(c,v(a,d)),filter:(c,d={})=>b.filter(c,v(a,d)),defaults:c=>b.defaults(v(a,c)),makeRe:(c,d={})=>b.makeRe(c,v(a,d)),braceExpand:(c,d={})=>b.braceExpand(c,v(a,d)),match:(c,d,e={})=>b.match(c,d,v(a,e)),sep:b.sep,GLOBSTAR:c.GLOBSTAR})},c.minimatch.defaults=c.defaults,c.braceExpand=(a,b={})=>((0,e.assertValidPattern)(a),b.nobrace||!/\{(?:(?!\{).)*\}/.test(a))?[a]:(0,d.expand)(a,{max:b.braceExpandMax}),c.minimatch.braceExpand=c.braceExpand,c.makeRe=(a,b={})=>new x(a,b).makeRe(),c.minimatch.makeRe=c.makeRe,c.match=(a,b,c={})=>{let d=new x(b,c);return a=a.filter(a=>d.match(a)),d.options.nonull&&!a.length&&a.push(b),a},c.minimatch.match=c.match;let w=/[?*]|[+@!]\(.*?\)|\[|\]/;class x{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(a,b={}){(0,e.assertValidPattern)(a),b=b||{},this.options=b,this.maxGlobstarRecursion=b.maxGlobstarRecursion??200,this.pattern=a,this.platform=b.platform||u,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!b.windowsPathsNoEscape||!1===b.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!b.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!b.nonegate,this.comment=!1,this.empty=!1,this.partial=!!b.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==b.windowsNoMagicRoot?b.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let a of this.set)for(let b of a)if("string"!=typeof b)return!0;return!1}debug(){}make(){let a=this.pattern,b=this.options;if(!b.nocomment&&"#"===a.charAt(0)){this.comment=!0;return}if(!a){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],b.debug&&(this.debug=(...a)=>console.error(...a)),this.debug(this.pattern,this.globSet);let c=this.globSet.map(a=>this.slashSplit(a));this.globParts=this.preprocess(c),this.debug(this.pattern,this.globParts);let d=this.globParts.map((a,b,c)=>{if(this.isWindows&&this.windowsNoMagicRoot){let b=""===a[0]&&""===a[1]&&("?"===a[2]||!w.test(a[2]))&&!w.test(a[3]),c=/^[a-z]:/i.test(a[0]);if(b)return[...a.slice(0,4),...a.slice(4).map(a=>this.parse(a))];if(c)return[a[0],...a.slice(1).map(a=>this.parse(a))]}return a.map(a=>this.parse(a))});if(this.debug(this.pattern,d),this.set=d.filter(a=>-1===a.indexOf(!1)),this.isWindows)for(let a=0;a=2?(a=this.firstPhasePreProcess(a),a=this.secondPhasePreProcess(a)):a=b>=1?this.levelOneOptimize(a):this.adjascentGlobstarOptimize(a),a}adjascentGlobstarOptimize(a){return a.map(a=>{let b=-1;for(;-1!==(b=a.indexOf("**",b+1));){let c=b;for(;"**"===a[c+1];)c++;c!==b&&a.splice(b,c-b)}return a})}levelOneOptimize(a){return a.map(a=>0===(a=a.reduce((a,b)=>{let c=a[a.length-1];return"**"===b&&"**"===c||(".."===b&&c&&".."!==c&&"."!==c&&"**"!==c?a.pop():a.push(b)),a},[])).length?[""]:a)}levelTwoFileOptimize(a){Array.isArray(a)||(a=this.slashSplit(a));let b=!1;do{if(b=!1,!this.preserveMultipleSlashes){for(let c=1;cd&&c.splice(d+1,e-d);let f=c[d+1],g=c[d+2],h=c[d+3];if(".."!==f||!g||"."===g||".."===g||!h||"."===h||".."===h)continue;b=!0,c.splice(d,1);let i=c.slice(0);i[d]="**",a.push(i),d--}if(!this.preserveMultipleSlashes){for(let a=1;aa.length)}partsMatch(a,b,c=!1){let d=0,e=0,f=[],g="";for(;d=2&&(a=this.levelTwoFileOptimize(a)),b.includes(c.GLOBSTAR))?this.#y(a,b,d,e,f):this.#z(a,b,d,e,f)}#y(a,b,d,e,f){let g=b.indexOf(c.GLOBSTAR,f),h=b.lastIndexOf(c.GLOBSTAR),[i,j,k]=d?[b.slice(f,g),b.slice(g+1),[]]:[b.slice(f,g),b.slice(g+1,h),b.slice(h+1)];if(i.length){let b=a.slice(e,e+i.length);if(!this.#z(b,i,d,0,0))return!1;e+=i.length,f+=i.length}let l=0;if(k.length){if(k.length+e>a.length)return!1;let b=a.length-k.length;if(this.#z(a,k,d,b,0))l=k.length;else{if(""!==a[a.length-1]||e+k.length===a.length||(b--,!this.#z(a,k,d,b,0)))return!1;l=k.length+1}}if(!j.length){let b=!!l;for(let c=e;c(a=a.toLowerCase(),b=>b.toLowerCase().endsWith(a)):a=>(a=a.toLowerCase(),b=>!b.startsWith(".")&&b.toLowerCase().endsWith(a)):d.dot?a=>b=>b.endsWith(a):a=>b=>!b.startsWith(".")&&b.endsWith(a))(b[1]):(b=a.match(r))?g=(d.nocase?d.dot?([a,b=""])=>{let c=t([a]);return b?(b=b.toLowerCase(),a=>c(a)&&a.toLowerCase().endsWith(b)):c}:([a,b=""])=>{let c=s([a]);return b?(b=b.toLowerCase(),a=>c(a)&&a.toLowerCase().endsWith(b)):c}:d.dot?([a,b=""])=>{let c=t([a]);return b?a=>c(a)&&a.endsWith(b):c}:([a,b=""])=>{let c=s([a]);return b?a=>c(a)&&a.endsWith(b):c})(b):(b=a.match(j))?g=d.dot?l:k:(b=a.match(m))&&(g=n);let h=f.AST.fromGlob(a,this.options).toMMPattern();return g&&"object"==typeof h&&Reflect.defineProperty(h,"test",{value:g}),h}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;let a=this.set;if(!a.length)return this.regexp=!1,this.regexp;let b=this.options,d=b.noglobstar?"[^/]*?":b.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",e=new Set(b.nocase?["i"]:[]),f=a.map(a=>{let b=a.map(a=>{if(a instanceof RegExp)for(let b of a.flags.split(""))e.add(b);return"string"==typeof a?a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):a===c.GLOBSTAR?c.GLOBSTAR:a._src});b.forEach((a,e)=>{let f=b[e+1],g=b[e-1];a===c.GLOBSTAR&&g!==c.GLOBSTAR&&(void 0===g?void 0!==f&&f!==c.GLOBSTAR?b[e+1]="(?:\\/|"+d+"\\/)?"+f:b[e]=d:void 0===f?b[e-1]=g+"(?:\\/|\\/"+d+")?":f!==c.GLOBSTAR&&(b[e-1]=g+"(?:\\/|\\/"+d+"\\/)"+f,b[e+1]=c.GLOBSTAR))});let f=b.filter(a=>a!==c.GLOBSTAR);if(this.partial&&f.length>=1){let a=[];for(let b=1;b<=f.length;b++)a.push(f.slice(0,b).join("/"));return"(?:"+a.join("|")+")"}return f.join("/")}).join("|"),[g,h]=a.length>1?["(?:",")"]:["",""];f="^"+g+f+h+"$",this.partial&&(f="^(?:\\/|"+g+f.slice(1,-1)+h+")$"),this.negate&&(f="^(?!"+f+").+$");try{this.regexp=new RegExp(f,[...e].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(a){return this.preserveMultipleSlashes?a.split("/"):this.isWindows&&/^\/\/[^/]+/.test(a)?["",...a.split(/\/+/)]:a.split(/\/+/)}match(a,b=this.partial){if(this.debug("match",a,this.pattern),this.comment)return!1;if(this.empty)return""===a;if("/"===a&&b)return!0;let c=this.options;this.isWindows&&(a=a.split("\\").join("/"));let d=this.slashSplit(a);this.debug(this.pattern,"split",d);let e=this.set;this.debug(this.pattern,"set",e);let f=d[d.length-1];if(!f)for(let a=d.length-2;!f&&a>=0;a--)f=d[a];for(let a of e){let e=d;if(c.matchBase&&1===a.length&&(e=[f]),this.matchOne(e,a,b)){if(c.flipNegate)return!0;return!this.negate}}return!c.flipNegate&&this.negate}static defaults(a){return c.minimatch.defaults(a).Minimatch}}c.Minimatch=x;var y=a.r(558282);Object.defineProperty(c,"AST",{enumerable:!0,get:function(){return y.AST}});var z=a.r(850747);Object.defineProperty(c,"escape",{enumerable:!0,get:function(){return z.escape}});var A=a.r(202704);Object.defineProperty(c,"unescape",{enumerable:!0,get:function(){return A.unescape}}),c.minimatch.AST=f.AST,c.minimatch.Minimatch=x,c.minimatch.escape=g.escape,c.minimatch.unescape=h.unescape},289563,(a,b,c)=>{"use strict";let d=a.r(677652),{context:e,trace:f,SpanStatusCode:g,propagation:h,diag:i}=a.r(854230),{getRPCMetadata:j,RPCType:k}=a.r(35492),{ATTR_HTTP_ROUTE:l,ATTR_HTTP_RESPONSE_STATUS_CODE:m,ATTR_HTTP_REQUEST_METHOD:n,ATTR_URL_PATH:o}=a.r(357223),{InstrumentationBase:p}=a.r(349576),{version:q,name:r}=a.r(989801),s=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend","onResponse","onError"],t="hook.name",u="fastify.type",v="hook.callback.name",w="route-hook",x="hook",y="anonymous",z=Symbol("fastify otel instance"),A=Symbol("fastify otel request spans"),B=Symbol("fastify otel request context"),C=Symbol("fastify otel addhook original"),D=Symbol("fastify otel setnotfound original"),E=Symbol("fastify otel ignore path"),F=Symbol("fastify otel record exceptions");class G extends p{logger=null;_requestHook=null;_lifecycleHook=null;constructor(b){if(super(r,q,b),this.logger=i.createComponentLogger({namespace:r}),this[E]=null,this[F]=!0,b?.recordExceptions!=null){if("boolean"!=typeof b.recordExceptions)throw TypeError("recordExceptions must be a boolean");this[F]=b.recordExceptions}if("function"==typeof b?.requestHook&&(this._requestHook=b.requestHook),"function"==typeof b?.lifecycleHook&&(this._lifecycleHook=b.lifecycleHook),b?.ignorePaths!=null||null!=process.env.OTEL_FASTIFY_IGNORE_PATHS){const c=b?.ignorePaths??process.env.OTEL_FASTIFY_IGNORE_PATHS;if(("string"!=typeof c||0===c.length)&&"function"!=typeof c)throw TypeError("ignorePaths must be a string or a function");let d=null;this[E]=b=>"function"==typeof c?c(b):(null==d&&(d=a.r(40728).minimatch),d(b.url,c))}}enable(){return void 0===this._handleInitialization&&this.getConfig().registerOnInitialization&&(this._handleInitialization=a=>{this.plugin()(a.fastify,void 0,()=>{});let b=(a,b,c)=>{c()};b[Symbol.for("skip-override")]=!0,b[Symbol.for("fastify.display-name")]="@fastify/otel",a.fastify.register(b)},d.subscribe("fastify.initialization",this._handleInitialization)),super.enable()}disable(){return this._handleInitialization&&(d.unsubscribe("fastify.initialization",this._handleInitialization),this._handleInitialization=void 0),super.disable()}init(){return[]}plugin(){let a=this;return b[Symbol.for("skip-override")]=!0,b[Symbol.for("fastify.display-name")]="@fastify/otel",b[Symbol.for("plugin-meta")]={fastify:">=4.0.0 <6",name:"@fastify/otel"},b;function b(b,c,d){function i(a,b,c,d){let e=a[A];null!=e&&(b.statusCode>=500&&e.setStatus({code:g.ERROR}),e.setAttributes({[m]:b.statusCode}),e.end()),a[A]=null,d(null,c)}function p(b,c,d,e){let f=b[A];null!=f&&(f.setStatus({code:g.ERROR,message:d.message}),!1!==a[F]&&f.recordException(d)),e()}function q(a,b,c={}){return function(...d){let h=this[z],i=function(a){for(let b of a)if(b?.routeOptions&&b.url&&b.method)return b;return null}(d);if(null===i)return h.logger.debug(`Ignoring route instrumentation because ${b} was called without a Fastify request argument`),a.call(this,...d);if(!1===h.isEnabled()||i.routeOptions.config?.otel===!1)return h.logger.debug(`Ignoring route instrumentation ${i.routeOptions.method} ${i.routeOptions.url} because it is disabled`),a.call(this,...d);if(h[E]?.({url:i.url,method:i.method})===!0)return h.logger.debug(`Ignoring route instrumentation ${i.routeOptions.method} ${i.routeOptions.url} because it matches the ignore path`),a.call(this,...d);let j=i[B]??e.active(),k=a.name?.length>0?a.name:this.pluginName??y,l=h.tracer.startSpan(`${b} - ${k}`,{attributes:c},j);if(null!=h._lifecycleHook)try{h._lifecycleHook(l,{hookName:b,request:i,handler:k})}catch(a){h.logger.error({err:a},"Execution of lifecycleHook failed")}return e.with(f.setSpan(j,l),function(){try{let b=a.call(this,...d);if("function"==typeof b?.then)return b.then(a=>(l.end(),a),a=>(l.setStatus({code:g.ERROR,message:a.message}),!1!==h[F]&&l.recordException(a),l.end(),Promise.reject(a)));return l.end(),b}catch(a){throw l.setStatus({code:g.ERROR,message:a.message}),!1!==h[F]&&l.recordException(a),l.end(),a}},this)}}b.decorate(z,a),b.decorate(C,b.addHook),b.decorate(D,b.setNotFoundHandler),b.decorateRequest("opentelemetry",function(){let b=this[B],c=this[A];return{enabled:this.routeOptions.config?.otel!==!1,span:c,tracer:a.tracer,context:b,inject:(a,c)=>h.inject(b,a,c),extract:(a,c)=>h.extract(b,a,c)}}),b.decorateRequest(A,null),b.decorateRequest(B,null),b.addHook("onRoute",function(b){if(a[E]?.(b)===!0)return void a.logger.debug(`Ignoring route instrumentation ${b.method} ${b.url} because it matches the ignore path`);if(b.config?.otel===!1)return void a.logger.debug(`Ignoring route instrumentation ${b.method} ${b.url} because it is disabled`);for(let a of s)if(null!=b[a]){let c=b[a];if("function"==typeof c)b[a]=q(c,a,{[t]:`${this.pluginName} - route -> ${a}`,[u]:w,[l]:b.url,[v]:c.name?.length>0?c.name:y});else if(Array.isArray(c)){let d=[];for(let e of c)d.push(q(e,a,{[t]:`${this.pluginName} - route -> ${a}`,[u]:w,[l]:b.url,[v]:e.name?.length>0?e.name:y}));b[a]=d}}null!=b.onSend?b.onSend=Array.isArray(b.onSend)?[...b.onSend,i]:[b.onSend,i]:b.onSend=i,null!=b.onError?b.onError=Array.isArray(b.onError)?[...b.onError,p]:[b.onError,p]:b.onError=p,b.handler=q(b.handler,"handler",{[t]:`${this.pluginName} - route-handler`,[u]:"request-handler",[l]:b.url,[v]:b.handler.name.length>0?b.handler.name:y})}),b.addHook("onRequest",function(a,b,c){if(!1===this[z].isEnabled()||a.routeOptions.config?.otel===!1)return c();if(this[z][E]?.({url:a.url,method:a.method})===!0)return this[z].logger.debug(`Ignoring request ${a.method} ${a.url} because it matches the ignore path`),c();let d=e.active();null==f.getSpan(d)&&(d=h.extract(d,a.headers));let g=j(d);null!=a.routeOptions.url&&g?.type===k.HTTP&&(g.route=a.routeOptions.url);let i={"fastify.root":"@fastify/otel",[n]:a.method,[o]:a.url};null!=a.routeOptions.url&&(i[l]=a.routeOptions.url);let m=this[z].tracer.startSpan("request",{attributes:i},d);try{this[z]._requestHook?.(m,a)}catch(a){this[z].logger.error({err:a},"requestHook threw")}a[B]=f.setSpan(d,m),a[A]=m,e.with(a[B],()=>{c()})}),b.addHook("onResponse",function(a,b,c){let d=a[A];null!=d&&(d.setAttributes({[m]:b.statusCode}),d.end()),a[A]=null,c()}),b.addHook=function(a,b){let c=this[C];return s.includes(a)?c.call(this,a,q(b,a,{[t]:`${this.pluginName} - ${a}`,[u]:x,[v]:b.name?.length>0?b.name:y})):c.call(this,a,b)},b.setNotFoundHandler=function(a,b){let c=this[D];"function"==typeof a?(b=q(a,"notFoundHandler",{[t]:`${this.pluginName} - not-found-handler`,[u]:x,[v]:a.name?.length>0?a.name:y}),c.call(this,b)):(null!=a.preValidation&&(a.preValidation=q(a.preValidation,"notFoundHandler - preValidation",{[t]:`${this.pluginName} - not-found-handler - preValidation`,[u]:x,[v]:a.preValidation.name?.length>0?a.preValidation.name:y})),null!=a.preHandler&&(a.preHandler=q(a.preHandler,"notFoundHandler - preHandler",{[t]:`${this.pluginName} - not-found-handler - preHandler`,[u]:x,[v]:a.preHandler.name?.length>0?a.preHandler.name:y})),b=q(b,"notFoundHandler",{[t]:`${this.pluginName} - not-found-handler`,[u]:x,[v]:b.name?.length>0?b.name:y}),c.call(this,a,b))},d()}}}b.exports=G,b.exports.FastifyOtelInstrumentation=G},541750,(a,b,c)=>{var d,e,f;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).FASTIFY_NAME="fastify.name",d.FASTIFY_TYPE="fastify.type",d.HOOK_NAME="hook.name",d.PLUGIN_NAME="plugin.name",c.FastifyTypes=void 0,(e=c.FastifyTypes||(c.FastifyTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",c.FastifyNames=void 0,(f=c.FastifyNames||(c.FastifyNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},895502,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.spanRequestSymbol=Symbol("opentelemetry.instrumentation.fastify.request_active_span")},24033,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(895502);function f(a){return"object"==typeof a&&a&&"function"==typeof Object.getOwnPropertyDescriptor(a,"then")?.value||!1}c.endSpan=function(a,b){let c=a[e.spanRequestSymbol]||[];c.length&&(c.forEach(a=>{b&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b)),a.end()}),delete a[e.spanRequestSymbol])},c.safeExecuteInTheMiddleMaybePromise=function(a,b,c){let d,e;try{e=a(),f(e)&&e.then(a=>b(void 0,a),a=>b(a))}catch(a){d=a}finally{if(!f(e)&&(b(d,e),d&&1))throw d;return e}},c.startSpan=function(a,b,c,d={}){let f=b.startSpan(c,{attributes:d}),g=a[e.spanRequestSymbol]||[];return g.push(f),Object.defineProperty(a,e.spanRequestSymbol,{enumerable:!1,configurable:!0,value:g}),f}},620604,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(357223),h=a.r(97153),i=a.r(541750),j=a.r(24033),k="anonymous",l=new Set(["onTimeout","onRequest","preParsing","preValidation","preSerialization","preHandler","onSend","onResponse","onError"]);class m extends f.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-fastify-v3","0.1.0",a)}init(){return[new f.InstrumentationNodeModuleDefinition("fastify",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_hookOnRequest(){let a=this;return function(b,c,f){if(!a.isEnabled())return f();a._wrap(c,"send",a._patchSend());let g=e.getRPCMetadata(d.context.active()),i=b.routeOptions?b.routeOptions.url:b.routerPath;i&&g?.type===e.RPCType.HTTP&&(g.route=i);let j=b.method||"GET";h.getIsolationScope().setTransactionName(`${j} ${i}`),f()}}_wrapHandler(a,b,c,e){let f=this;return this._diag.debug("Patching fastify route.handler function"),function(...g){if(!f.isEnabled())return c.apply(this,g);let h=c.name||a||k,l=`${i.FastifyNames.MIDDLEWARE} - ${h}`,m=g[1],n=j.startSpan(m,f.tracer,l,{[i.AttributeNames.FASTIFY_TYPE]:i.FastifyTypes.MIDDLEWARE,[i.AttributeNames.PLUGIN_NAME]:a,[i.AttributeNames.HOOK_NAME]:b}),o=e&&g[g.length-1];return o&&(g[g.length-1]=function(...a){j.endSpan(m),o.apply(this,a)}),d.context.with(d.trace.setSpan(d.context.active(),n),()=>j.safeExecuteInTheMiddleMaybePromise(()=>c.apply(this,g),a=>{a instanceof Error&&(n.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),n.recordException(a)),e||j.endSpan(m)}))}}_wrapAddHook(){let a=this;return this._diag.debug("Patching fastify server.addHook function"),function(b){return function(...c){let d=c[0],e=c[1],f=this.pluginName;if(!l.has(d))return b.apply(this,c);let g="function"==typeof c[c.length-1]&&"AsyncFunction"!==e.constructor.name;return b.apply(this,[d,a._wrapHandler(f,d,e,g)])}}}_patchConstructor(a){let b=this;function c(...d){let e,f=a.fastify.apply(this,d);return f.addHook("onRequest",b._hookOnRequest()),f.addHook("preHandler",b._hookPreHandler()),(e=h.getClient())&&e.on("spanStart",a=>{n(a)}),b._wrap(f,"addHook",b._wrapAddHook()),f}return void 0!==a.errorCodes&&(c.errorCodes=a.errorCodes),c.fastify=c,c.default=c,c}_patchSend(){let a=this;return this._diag.debug("Patching fastify reply.send function"),function(b){return function(...c){let d=c[0];return a.isEnabled()?f.safeExecuteInTheMiddle(()=>b.apply(this,c),a=>{!a&&d instanceof Error&&(a=d),j.endSpan(this,a)}):b.apply(this,c)}}}_hookPreHandler(){let a=this;return this._diag.debug("Patching fastify preHandler function"),function(b,c,e){if(!a.isEnabled())return e();let h=b.routeOptions?.handler||b.context?.handler,l=h?.name.startsWith("bound ")?h.name.substring(6):h?.name,m=`${i.FastifyNames.REQUEST_HANDLER} - ${l||this.pluginName||k}`,o={[i.AttributeNames.PLUGIN_NAME]:this.pluginName,[i.AttributeNames.FASTIFY_TYPE]:i.FastifyTypes.REQUEST_HANDLER,[g.SEMATTRS_HTTP_ROUTE]:b.routeOptions?b.routeOptions.url:b.routerPath};l&&(o[i.AttributeNames.FASTIFY_NAME]=l);let p=j.startSpan(c,a.tracer,m,o);n(p);let{requestHook:q}=a.getConfig();return q&&f.safeExecuteInTheMiddle(()=>q(p,{request:b}),b=>{b&&a._diag.error("request hook failed",b)},!0),d.context.with(d.trace.setSpan(d.context.active(),p),()=>{e()})}}}function n(a){let b=h.spanToJSON(a).data,c=b["fastify.type"];if(b[h.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[h.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[h.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.fastify`});let d=b["fastify.name"]||b["plugin.name"]||b["hook.name"];if("string"==typeof d){let b=d.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");a.updateName(b)}}c.FastifyInstrumentationV3=m},946634,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(677652),e=a.r(289563),f=a.r(97153),g=a.r(829770),h=a.r(560192),i=a.r(620604),j="Fastify",k=g.generateInstrumentOnce(`${j}.v3`,()=>new i.FastifyInstrumentationV3);function l(){let a=f.getClient();if(a)return a.getIntegrationByName(j)}function m(a,b,c,d){let e=l()?.getShouldHandleError()||o;if("diagnostics-channel"===d&&(this.diagnosticsChannelExists=!0),this.diagnosticsChannelExists&&"onError-hook"===d){h.DEBUG_BUILD&&f.debug.warn("Fastify error handler was already registered via diagnostics channel.","You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.");return}e(a,b,c)&&f.captureException(a,{mechanism:{handled:!1,type:"auto.function.fastify"}})}let n=g.generateInstrumentOnce(`${j}.v5`,()=>{let a=new e.FastifyOtelInstrumentation,b=a.plugin();return d.subscribe("fastify.initialization",a=>{let c=a.fastify;c?.register(b).after(a=>{let b;a?h.DEBUG_BUILD&&f.debug.error("Failed to setup Fastify instrumentation",a):((b=f.getClient())&&b.on("spanStart",a=>{p(a)}),c&&c.addHook("onRequest",async(a,b)=>{if(a.opentelemetry){let{span:b}=a.opentelemetry();b&&p(b)}let c=a.routeOptions?.url,d=a.method||"GET";f.getIsolationScope().setTransactionName(`${d} ${c}`)}))})}),d.subscribe("tracing:fastify.request.handler:error",a=>{let{error:b,request:c,reply:d}=a;m.call(m,b,c,d,"diagnostics-channel")}),a});function o(a,b,c){let d=c.statusCode;return d>=500||d<=299}function p(a){let b=f.spanToJSON(a),c=b.description,d=b.data,e=d["fastify.type"],g="hook"===e,h=e===c?.startsWith("handler -"),i="request"===c||"request-handler"===e;if(d[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!h&&!i&&!g)return;a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${g?"hook":h?"middleware":i?"request_handler":""}.fastify`});let j=d["fastify.name"]||d["plugin.name"]||d["hook.name"];if("string"==typeof j){let b=j.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");a.updateName(b)}}c.fastifyIntegration=f.defineIntegration((a={})=>(({shouldHandleError:a})=>{let b;return{name:j,setupOnce(){b=a||o,k(),n()},getShouldHandleError:()=>b,setShouldHandleError(a){b=a}}})(a)),c.instrumentFastify=n,c.instrumentFastifyV3=k,c.setupFastifyErrorHandler=function(a,b){b?.shouldHandleError&&l()?.setShouldHandleError(b.shouldHandleError);let c=Object.assign(function(a,b,c){a.addHook("onError",async(a,b,c)=>{m.call(m,c,a,b,"onError-hook")}),c()},{[Symbol.for("skip-override")]:!0,[Symbol.for("fastify.display-name")]:"sentry-fastify-error-handler"});a.register(c)}},462367,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=c.TokenKind=c.AllowedOperationTypes=void 0,(d=c.AllowedOperationTypes||(c.AllowedOperationTypes={})).QUERY="query",d.MUTATION="mutation",d.SUBSCRIPTION="subscription",(e=c.TokenKind||(c.TokenKind={})).SOF="",e.EOF="",e.BANG="!",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment",(f=c.SpanNames||(c.SpanNames={})).EXECUTE="graphql.execute",f.PARSE="graphql.parse",f.RESOLVE="graphql.resolve",f.VALIDATE="graphql.validate",f.SCHEMA_VALIDATE="graphql.validateSchema",f.SCHEMA_PARSE="graphql.parseSchema"},943551,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).SOURCE="graphql.source",d.FIELD_NAME="graphql.field.name",d.FIELD_PATH="graphql.field.path",d.FIELD_TYPE="graphql.field.type",d.PARENT_NAME="graphql.parent.name",d.OPERATION_TYPE="graphql.operation.type",d.OPERATION_NAME="graphql.operation.name",d.VARIABLES="graphql.variables.",d.ERROR_VALIDATION_NAME="graphql.validation.error"},538507,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.OTEL_GRAPHQL_DATA_SYMBOL=c.OTEL_PATCHED_SYMBOL=void 0,c.OTEL_PATCHED_SYMBOL=Symbol.for("opentelemetry.patched"),c.OTEL_GRAPHQL_DATA_SYMBOL=Symbol.for("opentelemetry.graphql_data")},793029,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.OPERATION_NOT_SUPPORTED=void 0,a.r(538507),c.OPERATION_NOT_SUPPORTED="Operation$operationName$not supported"},289968,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.wrapFieldResolver=c.wrapFields=c.getSourceFromLocation=c.getOperation=c.endSpan=c.addSpanSource=c.addInputVariableAttributes=c.isPromise=void 0;let d=a.r(854230),e=a.r(462367),f=a.r(943551),g=a.r(538507),h=Object.values(e.AllowedOperationTypes);function i(a,b,c,d,e){let g=o(b,c,d,e);a.setAttribute(f.AttributeNames.SOURCE,g)}function j(a,b){return a[g.OTEL_GRAPHQL_DATA_SYMBOL].fields[b.join(".")]}function k(a,b){for(let c=b.length-1;c>0;c--){let d=j(a,b.slice(0,c));if(d)return d.span}return l(a)}function l(a){return a[g.OTEL_GRAPHQL_DATA_SYMBOL].span}c.isPromise=a=>"function"==typeof a?.then,c.addInputVariableAttributes=function(a,b){Object.entries(b).forEach(([b,c])=>{!function a(b,c,d){Array.isArray(d)?d.forEach((d,e)=>{a(b,`${c}.${e}`,d)}):d instanceof Object?Object.entries(d).forEach(([d,e])=>{a(b,`${c}.${d}`,e)}):b.setAttribute(`${f.AttributeNames.VARIABLES}${String(c)}`,d)}(a,b,c)})},c.addSpanSource=i,c.endSpan=function(a,b){b&&a.recordException(b),a.end()},c.getOperation=function(a,b){if(a&&Array.isArray(a.definitions))if(b)return a.definitions.filter(a=>-1!==h.indexOf(a?.operation)).find(a=>b===a?.name?.value);else return a.definitions.find(a=>-1!==h.indexOf(a?.operation))};function m(a,b){let c="";for(let d=0;dh){i=i.next,j=i?.line;continue}let a=i.value||i.kind,c="";(!b&&n.indexOf(i.kind)>=0&&(a="*"),i.kind===e.TokenKind.STRING&&(a=`"${a}"`),i.kind===e.TokenKind.EOF&&(a=""),i.line>j)?(f+=m("\n",i.line-j),j=i.line,c=m(" ",i.column-1)):i.line===i.prev?.line&&(c=m(" ",i.start-(i.prev?.end||0))),f+=c+a,i&&(i=i.next)}}return f}c.getSourceFromLocation=o,c.wrapFields=function a(b,c,d){if(!b||b[g.OTEL_PATCHED_SYMBOL])return;let e=b.getFields();b[g.OTEL_PATCHED_SYMBOL]=!0,Object.keys(e).forEach(b=>{let f=e[b];if(f&&(f.resolve&&(f.resolve=r(c,d,f.resolve)),f.type))for(let b of function a(b){var c,d;return"ofType"in b?a(b.ofType):"getTypes"in(c=b)&&"function"==typeof c.getTypes?b.getTypes():"getFields"in(d=b)&&"function"==typeof d.getFields?[b]:[]}(f.type))a(b,c,d)})};let p=(a,b,c)=>{c&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end())},q=(a,b)=>{b&&a.end()};function r(a,b,h,m=!1){if(n[g.OTEL_PATCHED_SYMBOL]||"function"!=typeof h)return h;function n(n,o,r,s){let t;if(!h)return;let u=b();if(u.ignoreTrivialResolveSpans&&m&&("object"==typeof n&&null!==n||"function"==typeof n)&&"function"!=typeof n[s.fieldName]||!r[g.OTEL_GRAPHQL_DATA_SYMBOL])return h.call(this,n,o,r,s);let v=function(a,b){let c=[],d=b;for(;d;){let b=d.key;a&&"number"==typeof b&&(b="*"),c.push(String(b)),d=d.prev}return c.reverse()}(u.mergeItems,s&&s.path),w=v.filter(a=>"string"==typeof a).length,x=!1;if(u.depth>=0&&u.depth"Field"===a.kind))&&i(x,y.loc,o().allowValues,z.loc?.start,z.loc?.end),x)},t=c,u=m,v=A,t[g.OTEL_GRAPHQL_DATA_SYMBOL].fields[u.join(".")]=v,{field:A,spanAdded:!0}}(a,b,r,s,v);t=c.span,x=h}return d.context.with(d.trace.setSpan(d.context.active(),t),()=>{try{let a=h.call(this,n,o,r,s);if((0,c.isPromise)(a))return a.then(a=>(q(t,x),a),a=>{throw p(t,a,x),a});return q(t,x),a}catch(a){throw p(t,a,x),a}})}return n[g.OTEL_PATCHED_SYMBOL]=!0,n}c.wrapFieldResolver=r},880691,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-graphql"},874253,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GraphQLInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(462367),g=a.r(943551),h=a.r(538507),i=a.r(793029),j=a.r(289968),k=a.r(880691),l={mergeItems:!1,depth:-1,allowValues:!1,ignoreResolveSpans:!1},m=[">=14.0.0 <17"];class n extends e.InstrumentationBase{constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a})}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new e.InstrumentationNodeModuleDefinition("graphql",m);return a.files.push(this._addPatchingExecute()),a.files.push(this._addPatchingParser()),a.files.push(this._addPatchingValidate()),a}_addPatchingExecute(){return new e.InstrumentationNodeModuleFile("graphql/execution/execute.js",m,a=>((0,e.isWrapped)(a.execute)&&this._unwrap(a,"execute"),this._wrap(a,"execute",this._patchExecute(a.defaultFieldResolver)),a),a=>{a&&this._unwrap(a,"execute")})}_addPatchingParser(){return new e.InstrumentationNodeModuleFile("graphql/language/parser.js",m,a=>((0,e.isWrapped)(a.parse)&&this._unwrap(a,"parse"),this._wrap(a,"parse",this._patchParse()),a),a=>{a&&this._unwrap(a,"parse")})}_addPatchingValidate(){return new e.InstrumentationNodeModuleFile("graphql/validation/validate.js",m,a=>((0,e.isWrapped)(a.validate)&&this._unwrap(a,"validate"),this._wrap(a,"validate",this._patchValidate()),a),a=>{a&&this._unwrap(a,"validate")})}_patchExecute(a){let b=this;return function(c){return function(){let f;if(arguments.length>=2){let c=arguments;f=b._wrapExecuteArgs(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],a)}else{let c=arguments[0];f=b._wrapExecuteArgs(c.schema,c.document,c.rootValue,c.contextValue,c.variableValues,c.operationName,c.fieldResolver,c.typeResolver,a)}let g=(0,j.getOperation)(f.document,f.operationName),i=b._createExecuteSpan(g,f);return f.contextValue[h.OTEL_GRAPHQL_DATA_SYMBOL]={source:f.document?f.document||f.document[h.OTEL_GRAPHQL_DATA_SYMBOL]:void 0,span:i,fields:{}},d.context.with(d.trace.setSpan(d.context.active(),i),()=>(0,e.safeExecuteInTheMiddle)(()=>c.apply(this,[f]),(a,c)=>{b._handleExecutionResult(i,a,c)}))}}}_handleExecutionResult(a,b,c){let d=this.getConfig();if(void 0===c||b)return void(0,j.endSpan)(a,b);if((0,j.isPromise)(c))c.then(b=>{"function"!=typeof d.responseHook?(0,j.endSpan)(a):this._executeResponseHook(a,b)},b=>{(0,j.endSpan)(a,b)});else{if("function"!=typeof d.responseHook)return void(0,j.endSpan)(a);this._executeResponseHook(a,c)}}_executeResponseHook(a,b){let{responseHook:c}=this.getConfig();c&&(0,e.safeExecuteInTheMiddle)(()=>{c(a,b)},b=>{b&&this._diag.error("Error running response hook",b),(0,j.endSpan)(a,void 0)},!0)}_patchParse(){let a=this;return function(b){return function(c,d){return a._parse(this,b,c,d)}}}_patchValidate(){let a=this;return function(b){return function(c,d,e,f,g){return a._validate(this,b,c,d,e,g,f)}}}_parse(a,b,c,g){let h=this.getConfig(),i=this.tracer.startSpan(f.SpanNames.PARSE);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>(0,e.safeExecuteInTheMiddle)(()=>b.call(a,c,g),(a,b)=>{b&&((0,j.getOperation)(b)?b.loc&&(0,j.addSpanSource)(i,b.loc,h.allowValues):i.updateName(f.SpanNames.SCHEMA_PARSE)),(0,j.endSpan)(i,a)}))}_validate(a,b,c,h,i,k,l){let m=this.tracer.startSpan(f.SpanNames.VALIDATE,{});return d.context.with(d.trace.setSpan(d.context.active(),m),()=>(0,e.safeExecuteInTheMiddle)(()=>b.call(a,c,h,i,l,k),(a,b)=>{h.loc||m.updateName(f.SpanNames.SCHEMA_VALIDATE),b&&b.length&&m.recordException({name:g.AttributeNames.ERROR_VALIDATION_NAME,message:JSON.stringify(b)}),(0,j.endSpan)(m,a)}))}_createExecuteSpan(a,b){let c=this.getConfig(),d=this.tracer.startSpan(f.SpanNames.EXECUTE,{});if(a){let{operation:b,name:c}=a;d.setAttribute(g.AttributeNames.OPERATION_TYPE,b);let e=c?.value;e?(d.setAttribute(g.AttributeNames.OPERATION_NAME,e),d.updateName(`${b} ${e}`)):d.updateName(b)}else{let a=" ";b.operationName&&(a=` "${b.operationName}" `),a=i.OPERATION_NOT_SUPPORTED.replace("$operationName$",a),d.setAttribute(g.AttributeNames.OPERATION_NAME,a)}return b.document?.loc&&(0,j.addSpanSource)(d,b.document.loc,c.allowValues),b.variableValues&&c.allowValues&&(0,j.addInputVariableAttributes)(d,b.variableValues),d}_wrapExecuteArgs(a,b,c,d,e,f,g,i,k){if(d||(d={}),d[h.OTEL_GRAPHQL_DATA_SYMBOL]||this.getConfig().ignoreResolveSpans)return{schema:a,document:b,rootValue:c,contextValue:d,variableValues:e,operationName:f,fieldResolver:g,typeResolver:i};let l=null==g,m=g??k;return g=(0,j.wrapFieldResolver)(this.tracer,()=>this.getConfig(),m,l),a&&((0,j.wrapFields)(a.getQueryType(),this.tracer,()=>this.getConfig()),(0,j.wrapFields)(a.getMutationType(),this.tracer,()=>this.getConfig())),{schema:a,document:b,rootValue:c,contextValue:d,variableValues:e,operationName:f,fieldResolver:g,typeResolver:i}}}c.GraphQLInstrumentation=n},58047,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GraphQLInstrumentation=void 0;var d=a.r(874253);Object.defineProperty(c,"GraphQLInstrumentation",{enumerable:!0,get:function(){return d.GraphQLInstrumentation}})},804666,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(58047),f=a.r(97153),g=a.r(829770),h=a.r(960535),i="Graphql",j=g.generateInstrumentOnce(i,e.GraphQLInstrumentation,a=>{let b=k(a);return{...b,responseHook(a,c){g.addOriginToSpan(a,"auto.graphql.otel.graphql"),c.errors?.length&&!f.spanToJSON(a).status&&a.setStatus({code:d.SpanStatusCode.ERROR});let e=f.spanToJSON(a).data,i=e["graphql.operation.type"],j=e["graphql.operation.name"];if(b.useOperationNameForRootSpan&&i){let b=f.getRootSpan(a),c=f.spanToJSON(b).data[h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION]||[],d=j?`${i} ${j}`:`${i}`;Array.isArray(c)?(c.push(d),b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,c)):"string"==typeof c?b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,[c,d]):b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,d),f.spanToJSON(b).data["original-description"]||b.setAttribute("original-description",f.spanToJSON(b).description),b.updateName(`${f.spanToJSON(b).data["original-description"]} (${function(a){if(Array.isArray(a)){let b=a.slice().sort();return b.length<=5?b.join(", "):`${b.slice(0,5).join(", ")}, +${b.length-5}`}return`${a}`}(c)})`)}}}});function k(a){return{ignoreResolveSpans:!0,ignoreTrivialResolveSpans:!0,useOperationNameForRootSpan:!0,...a}}c.graphqlIntegration=f.defineIntegration((a={})=>({name:i,setupOnce(){j(k(a))}})),c.instrumentGraphql=j},650996,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.kafkajs.eventListenersSet")},231987,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.bufferTextMapGetter=void 0,c.bufferTextMapGetter={get(a,b){if(a){for(let c of Object.keys(a))if(c===b||c.toLowerCase()===b)return a[c]?.toString()}},keys:a=>a?Object.keys(a):[]}},140938,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_MESSAGING_PROCESS_DURATION=c.METRIC_MESSAGING_CLIENT_SENT_MESSAGES=c.METRIC_MESSAGING_CLIENT_OPERATION_DURATION=c.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES=c.MESSAGING_SYSTEM_VALUE_KAFKA=c.MESSAGING_OPERATION_TYPE_VALUE_SEND=c.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE=c.MESSAGING_OPERATION_TYPE_VALUE_PROCESS=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION_TYPE=c.ATTR_MESSAGING_OPERATION_NAME=c.ATTR_MESSAGING_KAFKA_OFFSET=c.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE=c.ATTR_MESSAGING_KAFKA_MESSAGE_KEY=c.ATTR_MESSAGING_DESTINATION_PARTITION_ID=c.ATTR_MESSAGING_DESTINATION_NAME=c.ATTR_MESSAGING_BATCH_MESSAGE_COUNT=void 0,c.ATTR_MESSAGING_BATCH_MESSAGE_COUNT="messaging.batch.message_count",c.ATTR_MESSAGING_DESTINATION_NAME="messaging.destination.name",c.ATTR_MESSAGING_DESTINATION_PARTITION_ID="messaging.destination.partition.id",c.ATTR_MESSAGING_KAFKA_MESSAGE_KEY="messaging.kafka.message.key",c.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE="messaging.kafka.message.tombstone",c.ATTR_MESSAGING_KAFKA_OFFSET="messaging.kafka.offset",c.ATTR_MESSAGING_OPERATION_NAME="messaging.operation.name",c.ATTR_MESSAGING_OPERATION_TYPE="messaging.operation.type",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.MESSAGING_OPERATION_TYPE_VALUE_PROCESS="process",c.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE="receive",c.MESSAGING_OPERATION_TYPE_VALUE_SEND="send",c.MESSAGING_SYSTEM_VALUE_KAFKA="kafka",c.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES="messaging.client.consumed.messages",c.METRIC_MESSAGING_CLIENT_OPERATION_DURATION="messaging.client.operation.duration",c.METRIC_MESSAGING_CLIENT_SENT_MESSAGES="messaging.client.sent.messages",c.METRIC_MESSAGING_PROCESS_DURATION="messaging.process.duration"},230086,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.23.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-kafkajs"},32999,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KafkaJsInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(650996),h=a.r(231987),i=a.r(140938),j=a.r(230086);function k(a,b,c){return d=>{a.add(b,{...c,...d?{[f.ATTR_ERROR_TYPE]:d}:{}})}}function l(a,b,c){return d=>{a.record((Date.now()-b)/1e3,{...c,...d?{[f.ATTR_ERROR_TYPE]:d}:{}})}}let m=[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10];class n extends e.InstrumentationBase{constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a)}_updateMetricInstruments(){this._clientDuration=this.meter.createHistogram(i.METRIC_MESSAGING_CLIENT_OPERATION_DURATION,{advice:{explicitBucketBoundaries:m}}),this._sentMessages=this.meter.createCounter(i.METRIC_MESSAGING_CLIENT_SENT_MESSAGES),this._consumedMessages=this.meter.createCounter(i.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES),this._processDuration=this.meter.createHistogram(i.METRIC_MESSAGING_PROCESS_DURATION,{advice:{explicitBucketBoundaries:m}})}init(){let a=a=>{(0,e.isWrapped)(a?.Kafka?.prototype.producer)&&this._unwrap(a.Kafka.prototype,"producer"),(0,e.isWrapped)(a?.Kafka?.prototype.consumer)&&this._unwrap(a.Kafka.prototype,"consumer")};return new e.InstrumentationNodeModuleDefinition("kafkajs",[">=0.3.0 <3"],b=>(a(b),this._wrap(b?.Kafka?.prototype,"producer",this._getProducerPatch()),this._wrap(b?.Kafka?.prototype,"consumer",this._getConsumerPatch()),b),a)}_getConsumerPatch(){let a=this;return b=>function(...c){let d=b.apply(this,c);return(0,e.isWrapped)(d.run)&&a._unwrap(d,"run"),a._wrap(d,"run",a._getConsumerRunPatch()),a._setKafkaEventListeners(d),d}}_setKafkaEventListeners(a){a[g.EVENT_LISTENERS_SET]||(a.events?.REQUEST&&a.on(a.events.REQUEST,this._recordClientDurationMetric.bind(this)),a[g.EVENT_LISTENERS_SET]=!0)}_recordClientDurationMetric(a){let[b,c]=a.payload.broker.split(":");this._clientDuration.record(a.payload.duration/1e3,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:`${a.payload.apiName}`,[f.ATTR_SERVER_ADDRESS]:b,[f.ATTR_SERVER_PORT]:Number.parseInt(c,10)})}_getProducerPatch(){let a=this;return b=>function(...c){let d=b.apply(this,c);return(0,e.isWrapped)(d.sendBatch)&&a._unwrap(d,"sendBatch"),a._wrap(d,"sendBatch",a._getSendBatchPatch()),(0,e.isWrapped)(d.send)&&a._unwrap(d,"send"),a._wrap(d,"send",a._getSendPatch()),(0,e.isWrapped)(d.transaction)&&a._unwrap(d,"transaction"),a._wrap(d,"transaction",a._getProducerTransactionPatch()),a._setKafkaEventListeners(d),d}}_getConsumerRunPatch(){let a=this;return b=>function(...c){let d=c[0];return d?.eachMessage&&((0,e.isWrapped)(d.eachMessage)&&a._unwrap(d,"eachMessage"),a._wrap(d,"eachMessage",a._getConsumerEachMessagePatch())),d?.eachBatch&&((0,e.isWrapped)(d.eachBatch)&&a._unwrap(d,"eachBatch"),a._wrap(d,"eachBatch",a._getConsumerEachBatchPatch())),b.call(this,d)}}_getConsumerEachMessagePatch(){let a=this;return b=>function(...c){let e=c[0],f=d.propagation.extract(d.ROOT_CONTEXT,e.message.headers,h.bufferTextMapGetter),g=a._startConsumerSpan({topic:e.topic,message:e.message,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,ctx:f,attributes:{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)}}),j=[l(a._processDuration,Date.now(),{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)}),k(a._consumedMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)})],m=d.context.with(d.trace.setSpan(f,g),()=>b.apply(this,c));return a._endSpansOnPromise([g],j,m)}}_getConsumerEachBatchPatch(){return a=>{let b=this;return function(...c){let e=c[0],f=b._startConsumerSpan({topic:e.batch.topic,message:void 0,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,ctx:d.ROOT_CONTEXT,attributes:{[i.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]:e.batch.messages.length,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}});return d.context.with(d.trace.setSpan(d.context.active(),f),()=>{let g=Date.now(),j=[],m=[k(b._consumedMessages,e.batch.messages.length,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.batch.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)})];e.batch.messages.forEach(a=>{let c,f=d.propagation.extract(d.ROOT_CONTEXT,a.headers,h.bufferTextMapGetter),k=d.trace.getSpan(f)?.spanContext();k&&(c={context:k}),j.push(b._startConsumerSpan({topic:e.batch.topic,message:a,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,link:c,attributes:{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}})),m.push(l(b._processDuration,g,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.batch.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}))});let n=a.apply(this,c);return j.unshift(f),b._endSpansOnPromise(j,m,n)})}}}_getProducerTransactionPatch(){let a=this;return b=>function(...c){let e=a.tracer.startSpan("transaction"),f=b.apply(this,c);return f.then(b=>{let c=b.send;b.send=function(...b){return d.context.with(d.trace.setSpan(d.context.active(),e),()=>a._getSendPatch()(c).apply(this,b).catch(a=>{throw e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),a}))};let f=b.sendBatch;b.sendBatch=function(...b){return d.context.with(d.trace.setSpan(d.context.active(),e),()=>a._getSendBatchPatch()(f).apply(this,b).catch(a=>{throw e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),a}))};let g=b.commit;b.commit=function(...b){let c=g.apply(this,b).then(()=>{e.setStatus({code:d.SpanStatusCode.OK})});return a._endSpansOnPromise([e],[],c)};let h=b.abort;b.abort=function(...b){let c=h.apply(this,b);return a._endSpansOnPromise([e],[],c)}}).catch(a=>{e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),e.end()}),f}}_getSendBatchPatch(){let a=this;return b=>function(...c){let d=c[0].topicMessages||[],e=[],f=[];d.forEach(b=>{b.messages.forEach(c=>{e.push(a._startProducerSpan(b.topic,c)),f.push(k(a._sentMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_DESTINATION_NAME]:b.topic,...void 0!==c.partition?{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(c.partition)}:{}}))})});let g=b.apply(this,c);return a._endSpansOnPromise(e,f,g)}}_getSendPatch(){let a=this;return b=>function(...c){let d=c[0],e=d.messages.map(b=>a._startProducerSpan(d.topic,b)),f=d.messages.map(b=>k(a._sentMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_DESTINATION_NAME]:d.topic,...void 0!==b.partition?{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(b.partition)}:{}})),g=b.apply(this,c);return a._endSpansOnPromise(e,f,g)}}_endSpansOnPromise(a,b,c){return Promise.resolve(c).then(a=>(b.forEach(a=>a()),a)).catch(c=>{let e,g=f.ERROR_TYPE_VALUE_OTHER;throw"string"==typeof c||void 0===c?e=c:"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,"message")&&(e=c.message,g=c.constructor.name),b.forEach(a=>a(g)),a.forEach(a=>{a.setAttribute(f.ATTR_ERROR_TYPE,g),a.setStatus({code:d.SpanStatusCode.ERROR,message:e})}),c}).finally(()=>{a.forEach(a=>a.end())})}_startConsumerSpan({topic:a,message:b,operationType:c,ctx:f,link:g,attributes:h}){let j=c===i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?"poll":c,k=this.tracer.startSpan(`${j} ${a}`,{kind:c===i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?d.SpanKind.CLIENT:d.SpanKind.CONSUMER,attributes:{...h,[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_DESTINATION_NAME]:a,[i.ATTR_MESSAGING_OPERATION_TYPE]:c,[i.ATTR_MESSAGING_OPERATION_NAME]:j,[i.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:b?.key?String(b.key):void 0,[i.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!b?.key&&null===b.value||void 0,[i.ATTR_MESSAGING_KAFKA_OFFSET]:b?.offset},links:g?[g]:[]},f),{consumerHook:l}=this.getConfig();return l&&b&&(0,e.safeExecuteInTheMiddle)(()=>l(k,{topic:a,message:b}),a=>{a&&this._diag.error("consumerHook error",a)},!0),k}_startProducerSpan(a,b){let c=this.tracer.startSpan(`send ${a}`,{kind:d.SpanKind.PRODUCER,attributes:{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_DESTINATION_NAME]:a,[i.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:b.key?String(b.key):void 0,[i.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!b.key&&null===b.value||void 0,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:void 0!==b.partition?String(b.partition):void 0,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_OPERATION_TYPE]:i.MESSAGING_OPERATION_TYPE_VALUE_SEND}});b.headers=b.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),c),b.headers);let{producerHook:f}=this.getConfig();return f&&(0,e.safeExecuteInTheMiddle)(()=>f(c,{topic:a,message:b}),a=>{a&&this._diag.error("producerHook error",a)},!0),c}}c.KafkaJsInstrumentation=n},962620,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KafkaJsInstrumentation=void 0;var d=a.r(32999);Object.defineProperty(c,"KafkaJsInstrumentation",{enumerable:!0,get:function(){return d.KafkaJsInstrumentation}})},547611,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(962620),e=a.r(97153),f=a.r(829770),g="Kafka",h=f.generateInstrumentOnce(g,()=>new d.KafkaJsInstrumentation({consumerHook(a){f.addOriginToSpan(a,"auto.kafkajs.otel.consumer")},producerHook(a){f.addOriginToSpan(a,"auto.kafkajs.otel.producer")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentKafka=h,c.kafkaIntegration=i},102569,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-lru-memoizer"},511230,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.LruMemoizerInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(102569);class g extends e.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition("lru-memoizer",[">=1.3 <4"],a=>{let b=function(){let b=a.apply(this,arguments);return function(){let a=[...arguments],c=a.pop(),e="function"==typeof c?d.context.bind(d.context.active(),c):c;return a.push(e),b.apply(this,a)}};return b.sync=a.sync,b},void 0)]}}c.LruMemoizerInstrumentation=g},88155,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.LruMemoizerInstrumentation=void 0;var d=a.r(511230);Object.defineProperty(c,"LruMemoizerInstrumentation",{enumerable:!0,get:function(){return d.LruMemoizerInstrumentation}})},569473,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(88155),e=a.r(97153),f=a.r(829770),g="LruMemoizer",h=f.generateInstrumentOnce(g,()=>new d.LruMemoizerInstrumentation),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentLruMemoizer=h,c.lruMemoizerIntegration=i},649111,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MONGODB=c.DB_SYSTEM_NAME_VALUE_MONGODB=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=c.ATTR_DB_MONGODB_COLLECTION=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb",c.DB_SYSTEM_VALUE_MONGODB="mongodb",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},128584,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=void 0,(d=c.MongodbCommandType||(c.MongodbCommandType={})).CREATE_INDEXES="createIndexes",d.FIND_AND_MODIFY="findAndModify",d.IS_MASTER="isMaster",d.COUNT="count",d.AGGREGATE="aggregate",d.UNKNOWN="unknown"},768162,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.67.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongodb"},573784,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongoDBInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(649111),h=a.r(128584),i=a.r(768162),j={requireParentSpan:!0};class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,{...j,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...j,...a})}_updateMetricInstruments(){this._connectionsUsage=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsage?.add(a,{"pool.name":b,state:c})}init(){let{v3PatchConnection:a,v3UnpatchConnection:b}=this._getV3ConnectionPatches(),{v4PatchConnect:c,v4UnpatchConnect:d}=this._getV4ConnectPatches(),{v4PatchConnectionCallback:f,v4PatchConnectionPromise:g,v4UnpatchConnection:h}=this._getV4ConnectionPatches(),{v4PatchConnectionPool:i,v4UnpatchConnectionPool:j}=this._getV4ConnectionPoolPatches(),{v4PatchSessions:k,v4UnpatchSessions:l}=this._getV4SessionsPatches();return[new e.InstrumentationNodeModuleDefinition("mongodb",[">=3.3.0 <4"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/core/wireprotocol/index.js",[">=3.3.0 <4"],a,b)]),new e.InstrumentationNodeModuleDefinition("mongodb",[">=4.0.0 <8"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=4.0.0 <6.4"],f,h),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=6.4.0 <8"],g,h),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection_pool.js",[">=4.0.0 <6.4"],i,j),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connect.js",[">=4.0.0 <8"],c,d),new e.InstrumentationNodeModuleFile("mongodb/lib/sessions.js",[">=4.0.0 <8"],k,l)])]}_getV3ConnectionPatches(){return{v3PatchConnection:a=>((0,e.isWrapped)(a.insert)&&this._unwrap(a,"insert"),this._wrap(a,"insert",this._getV3PatchOperation("insert")),(0,e.isWrapped)(a.remove)&&this._unwrap(a,"remove"),this._wrap(a,"remove",this._getV3PatchOperation("remove")),(0,e.isWrapped)(a.update)&&this._unwrap(a,"update"),this._wrap(a,"update",this._getV3PatchOperation("update")),(0,e.isWrapped)(a.command)&&this._unwrap(a,"command"),this._wrap(a,"command",this._getV3PatchCommand()),(0,e.isWrapped)(a.query)&&this._unwrap(a,"query"),this._wrap(a,"query",this._getV3PatchFind()),(0,e.isWrapped)(a.getMore)&&this._unwrap(a,"getMore"),this._wrap(a,"getMore",this._getV3PatchCursor()),a),v3UnpatchConnection:a=>{void 0!==a&&(this._unwrap(a,"insert"),this._unwrap(a,"remove"),this._unwrap(a,"update"),this._unwrap(a,"command"),this._unwrap(a,"query"),this._unwrap(a,"getMore"))}}}_getV4SessionsPatches(){return{v4PatchSessions:a=>((0,e.isWrapped)(a.acquire)&&this._unwrap(a,"acquire"),this._wrap(a.ServerSessionPool.prototype,"acquire",this._getV4AcquireCommand()),(0,e.isWrapped)(a.release)&&this._unwrap(a,"release"),this._wrap(a.ServerSessionPool.prototype,"release",this._getV4ReleaseCommand()),a),v4UnpatchSessions:a=>{void 0!==a&&((0,e.isWrapped)(a.acquire)&&this._unwrap(a,"acquire"),(0,e.isWrapped)(a.release)&&this._unwrap(a,"release"))}}}_getV4AcquireCommand(){let a=this;return b=>function(){let c=this.sessions.length,d=b.call(this),e=this.sessions.length;return c===e?a._connCountAdd(1,a._poolName,"used"):c-1===e&&(a._connCountAdd(-1,a._poolName,"idle"),a._connCountAdd(1,a._poolName,"used")),d}}_getV4ReleaseCommand(){let a=this;return b=>function(c){let d=b.call(this,c);return a._connCountAdd(-1,a._poolName,"used"),a._connCountAdd(1,a._poolName,"idle"),d}}_getV4ConnectionPoolPatches(){return{v4PatchConnectionPool:a=>{let b=a.ConnectionPool.prototype;return(0,e.isWrapped)(b.checkOut)&&this._unwrap(b,"checkOut"),this._wrap(b,"checkOut",this._getV4ConnectionPoolCheckOut()),a},v4UnpatchConnectionPool:a=>{void 0!==a&&this._unwrap(a.ConnectionPool.prototype,"checkOut")}}}_getV4ConnectPatches(){return{v4PatchConnect:a=>((0,e.isWrapped)(a.connect)&&this._unwrap(a,"connect"),this._wrap(a,"connect",this._getV4ConnectCommand()),a),v4UnpatchConnect:a=>{void 0!==a&&this._unwrap(a,"connect")}}}_getV4ConnectionPoolCheckOut(){return a=>function(b){let c=d.context.bind(d.context.active(),b);return a.call(this,c)}}_getV4ConnectCommand(){let a=this;return b=>function(c,d){if(1===b.length){let d=b.call(this,c);return d&&"function"==typeof d.then&&d.then(()=>a.setPoolName(c),()=>void 0),d}return b.call(this,c,function(b,e){b||!e||a.setPoolName(c),d(b,e)})}}_getV4ConnectionPatches(){return{v4PatchConnectionCallback:a=>((0,e.isWrapped)(a.Connection.prototype.command)&&this._unwrap(a.Connection.prototype,"command"),this._wrap(a.Connection.prototype,"command",this._getV4PatchCommandCallback()),a),v4PatchConnectionPromise:a=>((0,e.isWrapped)(a.Connection.prototype.command)&&this._unwrap(a.Connection.prototype,"command"),this._wrap(a.Connection.prototype,"command",this._getV4PatchCommandPromise()),a),v4UnpatchConnection:a=>{void 0!==a&&this._unwrap(a.Connection.prototype,"command")}}}_getV3PatchOperation(a){let b=this;return c=>function(e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=b._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l||"object"!=typeof g)if("function"==typeof h)return c.call(this,e,f,g,h);else return c.call(this,e,f,g,h,i);let m=b._getV3SpanAttributes(f,e,g[0],a),n=b._spanNameFromAttrs(m),o=b.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=b._patchEnd(o,l);return"function"==typeof h?c.call(this,e,f,g,p):c.call(this,e,f,g,h,p)}}_getV3PatchCommand(){let a=this;return b=>function(c,e,f,g,i){let j=d.trace.getSpan(d.context.active()),l=a._checkSkipInstrumentation(j),m="function"==typeof g?g:i;if(l||"function"!=typeof m||"object"!=typeof f)if("function"==typeof g)return b.call(this,c,e,f,g);else return b.call(this,c,e,f,g,i);let n=k._getCommandType(f),o=n===h.MongodbCommandType.UNKNOWN?void 0:n,p=a._getV3SpanAttributes(e,c,f,o),q=a._spanNameFromAttrs(p),r=a.tracer.startSpan(q,{kind:d.SpanKind.CLIENT,attributes:p}),s=a._patchEnd(r,m);return"function"==typeof g?b.call(this,c,e,f,s):b.call(this,c,e,f,g,s)}}_getV4PatchCommandCallback(){let a=this;return b=>function(c,e,f,g){let h,i=d.trace.getSpan(d.context.active()),j=a._checkSkipInstrumentation(i),k=Object.keys(e)[0];if("object"!=typeof e||e.ismaster||e.hello)return b.call(this,c,e,f,g);if(!j){let b=a._getV4SpanAttributes(this,c,e,k),f=a._spanNameFromAttrs(b);h=a.tracer.startSpan(f,{kind:d.SpanKind.CLIENT,attributes:b})}let l=a._patchEnd(h,g,this.id,k);return b.call(this,c,e,f,l)}}_getV4PatchCommandPromise(){let a=this;return b=>function(...c){let e,[f,g]=c,h=d.trace.getSpan(d.context.active()),i=a._checkSkipInstrumentation(h),j=Object.keys(g)[0];if("object"!=typeof g||g.ismaster||g.hello)return b.apply(this,c);if(!i){let b=a._getV4SpanAttributes(this,f,g,j),c=a._spanNameFromAttrs(b);e=a.tracer.startSpan(c,{kind:d.SpanKind.CLIENT,attributes:b})}let k=a._patchEnd(e,()=>void 0,this.id,j),l=b.apply(this,c);return l.then(a=>k(null,a),a=>k(a)),l}}_getV3PatchFind(){let a=this;return b=>function(c,e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=a._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l||"object"!=typeof f)if("function"==typeof h)return b.call(this,c,e,f,g,h);else return b.call(this,c,e,f,g,h,i);let m=a._getV3SpanAttributes(e,c,f,"find"),n=a._spanNameFromAttrs(m),o=a.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=a._patchEnd(o,l);return"function"==typeof h?b.call(this,c,e,f,g,p):b.call(this,c,e,f,g,h,p)}}_getV3PatchCursor(){let a=this;return b=>function(c,e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=a._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l)if("function"==typeof h)return b.call(this,c,e,f,g,h);else return b.call(this,c,e,f,g,h,i);let m=a._getV3SpanAttributes(e,c,f.cmd,"getMore"),n=a._spanNameFromAttrs(m),o=a.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=a._patchEnd(o,l);return"function"==typeof h?b.call(this,c,e,f,g,p):b.call(this,c,e,f,g,h,p)}}static _getCommandType(a){if(void 0!==a.createIndexes)return h.MongodbCommandType.CREATE_INDEXES;if(void 0!==a.findandmodify)return h.MongodbCommandType.FIND_AND_MODIFY;if(void 0!==a.ismaster)return h.MongodbCommandType.IS_MASTER;if(void 0!==a.count)return h.MongodbCommandType.COUNT;if(void 0!==a.aggregate)return h.MongodbCommandType.AGGREGATE;else return h.MongodbCommandType.UNKNOWN}_getV4SpanAttributes(a,b,c,d){let e,f,g;if(a){let b="string"==typeof a.address?a.address.split(":"):"";2===b.length&&(e=b[0],f=b[1])}return g=c?.documents&&c.documents[0]?c.documents[0]:c?.cursors?c.cursors:c,this._getSpanAttributes(b.db,b.collection,e,f,g,d)}_getV3SpanAttributes(a,b,c,d){let e,f;if(b&&b.s&&(e=b.s.options?.host??b.s.host,f=(b.s.options?.port??b.s.port)?.toString(),null==e||null==f)){let a=b.description?.address;if(a){let b=a.split(":");e=b[0],f=b[1]}}let[g,h]=a.toString().split("."),i=c?.query??c?.q??c;return this._getSpanAttributes(g,h,e,f,i,d)}_getSpanAttributes(a,b,c,d,h,i){let j={};if(this._dbSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MONGODB,j[g.ATTR_DB_NAME]=a,j[g.ATTR_DB_MONGODB_COLLECTION]=b,j[g.ATTR_DB_OPERATION]=i,j[g.ATTR_DB_CONNECTION_STRING]=`mongodb://${c}:${d}/${a}`),this._dbSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MONGODB,j[f.ATTR_DB_NAMESPACE]=a,j[f.ATTR_DB_OPERATION_NAME]=i,j[f.ATTR_DB_COLLECTION_NAME]=b),c&&d){this._netSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_NET_PEER_NAME]=c),this._netSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_SERVER_ADDRESS]=c);let a=parseInt(d,10);!isNaN(a)&&(this._netSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_NET_PEER_PORT]=a),this._netSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_SERVER_PORT]=a))}if(h){let{dbStatementSerializer:a}=this.getConfig(),b="function"==typeof a?a:this._defaultDbStatementSerializer.bind(this);(0,e.safeExecuteInTheMiddle)(()=>{let a=b(h);this._dbSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_DB_STATEMENT]=a),this._dbSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_DB_QUERY_TEXT]=a)},a=>{a&&this._diag.error("Error running dbStatementSerializer hook",a)},!0)}return j}_spanNameFromAttrs(a){return this._dbSemconvStability&e.SemconvStability.STABLE?[a[f.ATTR_DB_OPERATION_NAME],a[f.ATTR_DB_COLLECTION_NAME]].filter(a=>a).join(" ")||g.DB_SYSTEM_NAME_VALUE_MONGODB:`mongodb.${a[g.ATTR_DB_OPERATION]||"command"}`}_getDefaultDbStatementReplacer(){let a=new WeakSet;return(b,c)=>"object"==typeof c&&c?a.has(c)?"[Circular]":(a.add(c),c):"?"}_defaultDbStatementSerializer(a){let{enhancedDatabaseReporting:b}=this.getConfig();return b?JSON.stringify(a):JSON.stringify(a,this._getDefaultDbStatementReplacer())}_handleExecutionResult(a,b){let{responseHook:c}=this.getConfig();"function"==typeof c&&(0,e.safeExecuteInTheMiddle)(()=>{c(a,{data:b})},a=>{a&&this._diag.error("Error running response hook",a)},!0)}_patchEnd(a,b,c,e){let f=d.context.active(),g=this,h=!1;return function(...c){if(!h){h=!0;let b=c[0];if(a){if(b instanceof Error)a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message});else{let b=c[1];g._handleExecutionResult(a,b)}a.end()}"endSessions"===e&&g._connCountAdd(-1,g._poolName,"idle")}return d.context.with(f,()=>b.apply(this,c))}}setPoolName(a){let b=a.hostAddress?.host,c=a.hostAddress?.port,d=a.dbName,e=`mongodb://${b}:${c}/${d}`;this._poolName=e}_checkSkipInstrumentation(a){return!0===this.getConfig().requireParentSpan&&void 0===a}}c.MongoDBInstrumentation=k},369517,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=void 0,(d=c.MongodbCommandType||(c.MongodbCommandType={})).CREATE_INDEXES="createIndexes",d.FIND_AND_MODIFY="findAndModify",d.IS_MASTER="isMaster",d.COUNT="count",d.UNKNOWN="unknown"},117904,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=c.MongoDBInstrumentation=void 0;var d=a.r(573784);Object.defineProperty(c,"MongoDBInstrumentation",{enumerable:!0,get:function(){return d.MongoDBInstrumentation}});var e=a.r(369517);Object.defineProperty(c,"MongodbCommandType",{enumerable:!0,get:function(){return e.MongodbCommandType}})},464048,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(117904),e=a.r(97153),f=a.r(829770),g="Mongo",h=f.generateInstrumentOnce(g,()=>new d.MongoDBInstrumentation({dbStatementSerializer:i,responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongo")}}));function i(a){return JSON.stringify(function a(b){var c,d;let e;return Array.isArray(b)?b.map(b=>a(b)):"object"!=typeof(c=b)||null===c||(d=c,e=!1,"u">typeof Buffer&&(e=Buffer.isBuffer(d)),e)?"?":Object.entries(b).map(([b,c])=>[b,a(c)]).reduce((a,b)=>(Array.isArray(b)&&(a[b[0]]=b[1]),a),{})}(a))}let j=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c._defaultDbStatementSerializer=i,c.instrumentMongo=h,c.mongoIntegration=j},324007,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_MONGODB=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=c.ATTR_DB_MONGODB_COLLECTION=void 0,c.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb"},6977,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.handleCallbackResponse=c.handlePromiseResponse=c.getAttributesFromCollection=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(324007),g=a.r(357223);function h(a,b={}){a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:`${b.message} ${b.code?` -Mongoose Error Code: ${b.code}`:""}`})}function i(a,b,c,f){c&&(0,e.safeExecuteInTheMiddle)(()=>c(a,{moduleVersion:f,response:b}),a=>{a&&d.diag.error("mongoose instrumentation: responseHook error",a)},!0)}c.getAttributesFromCollection=function(a,b,c){let d={};return b&e.SemconvStability.OLD&&(d[f.ATTR_DB_MONGODB_COLLECTION]=a.name,d[f.ATTR_DB_NAME]=a.conn.name,d[f.ATTR_DB_USER]=a.conn.user),b&e.SemconvStability.STABLE&&(d[g.ATTR_DB_COLLECTION_NAME]=a.name,d[g.ATTR_DB_NAMESPACE]=a.conn.name),c&e.SemconvStability.OLD&&(d[f.ATTR_NET_PEER_NAME]=a.conn.host,d[f.ATTR_NET_PEER_PORT]=a.conn.port),c&e.SemconvStability.STABLE&&(d[g.ATTR_SERVER_ADDRESS]=a.conn.host,d[g.ATTR_SERVER_PORT]=a.conn.port),d},c.handlePromiseResponse=function(a,b,c,d){return a instanceof Promise?a.then(a=>(i(b,a,c,d),a)).catch(a=>{throw h(b,a),a}).finally(()=>b.end()):(i(b,a,c,d),b.end(),a)},c.handleCallbackResponse=function(a,b,c,d,e,f,g){let j=0;return 2===e.length?j=1:3===e.length&&(j=2),e[j]=(b,c)=>(b?h(d,b):i(d,c,f,g),d.end(),a(b,c)),b.apply(c,e)}},879045,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},22751,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=c._ALREADY_INSTRUMENTED=c._STORED_PARENT_SPAN=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(6977),g=a.r(621472),h=a.r(879045),i=a.r(324007),j=a.r(357223),k=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],l=["remove","count","findOneAndRemove",...k],m=["count","findOneAndRemove",...k],n=[...k];function o(a){return a?a.startsWith("6.")||a.startsWith("5.")?l:a.startsWith("7.")?m:n:k}function p(a){return a&&(a.startsWith("5.")||a.startsWith("6."))||!1}function q(a){return!!a&&!!a.startsWith("8.")&&parseInt(a.split(".")[1],10)>=21}c._STORED_PARENT_SPAN=Symbol("stored-parent-span"),c._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class r extends g.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,g.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new g.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a;return this._wrap(c.Model.prototype,"save",this.patchOnModelMethods("save",b)),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._wrap(c.Model.prototype,"remove",this.patchOnModelMethods("remove",b)),q(b)&&(this._wrap(c.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",b)),this._wrap(c.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",b))),this._wrap(c.Query.prototype,"exec",this.patchQueryExec(b)),this._wrap(c.Aggregate.prototype,"exec",this.patchAggregateExec(b)),o(b).forEach(a=>{this._wrap(c.Query.prototype,a,this.patchAndCaptureSpanContext(a))}),this._wrap(c.Model,"aggregate",this.patchModelAggregate()),this._wrap(c.Model,"insertMany",this.patchModelStatic("insertMany",b)),this._wrap(c.Model,"bulkWrite",this.patchModelStatic("bulkWrite",b)),c}unpatch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a,d=o(b);this._unwrap(c.Model.prototype,"save"),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._unwrap(c.Model.prototype,"remove"),q(b)&&(this._unwrap(c.Model.prototype,"updateOne"),this._unwrap(c.Model.prototype,"deleteOne")),this._unwrap(c.Query.prototype,"exec"),this._unwrap(c.Aggregate.prototype,"exec"),d.forEach(a=>{this._unwrap(c.Query.prototype,a)}),this._unwrap(c.Model,"aggregate"),this._unwrap(c.Model,"insertMany"),this._unwrap(c.Model,"bulkWrite")}patchAggregateExec(a){let b=this;return e=>function(f){if(b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l("aggregate",{options:this.options,aggregatePipeline:this._pipeline});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this._model.collection,this._model?.modelName,"aggregate",k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchQueryExec(a){let b=this;return e=>function(f){if(this[c._ALREADY_INSTRUMENTED]||b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this.mongooseCollection,this.model.modelName,this.op,k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchOnModelMethods(a,b){let c=this;return e=>function(f,h){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let k={document:this};!f||f instanceof Function||(k.options=f);let l={},{dbStatementSerializer:m}=c.getConfig();if(m){let b=m(a,k);c._dbSemconvStability&g.SemconvStability.OLD&&(l[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(l[j.ATTR_DB_QUERY_TEXT]=b)}let n=c._startSpan(this.constructor.collection,this.constructor.modelName,a,l);return f instanceof Function&&(h=f,f=void 0),c._handleResponse(n,e,this,arguments,h,b)}}_patchDocumentUpdateMethods(a,b){let e=this;return f=>function(h,k,l){if(e.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return f.apply(this,arguments);let m=l,n=h,o=k;"function"==typeof h?(m=h,n=void 0,o=void 0):"function"==typeof k&&(m=k,o=void 0);let p={},q=e.getConfig().dbStatementSerializer;if(q){let b=q(a,{condition:{_id:this._id},updates:n,options:o});e._dbSemconvStability&g.SemconvStability.OLD&&(p[i.ATTR_DB_STATEMENT]=b),e._dbSemconvStability&g.SemconvStability.STABLE&&(p[j.ATTR_DB_QUERY_TEXT]=b)}let r=e._startSpan(this.constructor.collection,this.constructor.modelName,a,p),s=e._handleResponse(r,f,this,arguments,m,b);return s&&"object"==typeof s&&(s[c._ALREADY_INSTRUMENTED]=!0),s}}patchModelStatic(a,b){let c=this;return e=>function(f,h,k){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);"function"==typeof h&&(k=h,h=void 0);let l={};switch(a){case"insertMany":l.documents=f;break;case"bulkWrite":l.operations=f;break;default:l.document=f}void 0!==h&&(l.options=h);let m={},{dbStatementSerializer:n}=c.getConfig();if(n){let b=n(a,l);c._dbSemconvStability&g.SemconvStability.OLD&&(m[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(m[j.ATTR_DB_QUERY_TEXT]=b)}let o=c._startSpan(this.collection,this.modelName,a,m);return c._handleResponse(o,e,this,arguments,k,b)}}patchModelAggregate(){let a=this;return b=>function(){let e=d.trace.getSpan(d.context.active()),f=a._callOriginalFunction(()=>b.apply(this,arguments));return f&&(f[c._STORED_PARENT_SPAN]=e),f}}patchAndCaptureSpanContext(a){let b=this;return a=>function(){return this[c._STORED_PARENT_SPAN]=d.trace.getSpan(d.context.active()),b._callOriginalFunction(()=>a.apply(this,arguments))}}_startSpan(a,b,c,e,h){let k={...e,...(0,f.getAttributesFromCollection)(a,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_OPERATION]=c,k[i.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_OPERATION_NAME]=c,k[j.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MONGODB);let l=this._dbSemconvStability&g.SemconvStability.STABLE?`${c} ${a.name}`:`mongoose.${b}.${c}`;return this.tracer.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:k},h?d.trace.setSpan(d.context.active(),h):void 0)}_handleResponse(a,b,c,d,e,g){let h=this;if(e instanceof Function)return h._callOriginalFunction(()=>(0,f.handleCallbackResponse)(e,b,c,a,d,h.getConfig().responseHook,g));{let e=h._callOriginalFunction(()=>b.apply(c,d));return(0,f.handlePromiseResponse)(e,a,h.getConfig().responseHook,g)}}_callOriginalFunction(a){return this.getConfig().suppressInternalInstrumentation?d.context.with((0,e.suppressTracing)(d.context.active()),a):a()}}c.MongooseInstrumentation=r},63680,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=void 0;var d=a.r(22751);Object.defineProperty(c,"MongooseInstrumentation",{enumerable:!0,get:function(){return d.MongooseInstrumentation}})},473965,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(63680),e=a.r(97153),f=a.r(829770),g="Mongoose",h=f.generateInstrumentOnce(g,()=>new d.MongooseInstrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongoose")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMongoose=h,c.mongooseIntegration=i},117257,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},849068,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(c.AttributeNames||(c.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},101776,(a,b,c)=>{"use strict";function d(a){return a?`[${a.toString()}]`:""}Object.defineProperty(c,"__esModule",{value:!0}),c.getPoolNameOld=c.arrayStringifyHelper=c.getSpanName=c.getDbValues=c.getDbQueryText=c.getJDBCString=c.getConfig=void 0,c.getConfig=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}},c.getJDBCString=function(a,b,c){let d=`jdbc:mysql://${a||"localhost"}`;return"number"==typeof b&&(d+=`:${b}`),"string"==typeof c&&(d+=`/${c}`),d},c.getDbQueryText=function(a){return"string"==typeof a?a:a.sql},c.getDbValues=function(a,b){return"string"==typeof a?d(b):d(b||a.values)},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.arrayStringifyHelper=d,c.getPoolNameOld=function(a){let b=a.config.connectionConfig,c="";return c+=b.host?`host: '${b.host}', `:"",c+=b.port?`port: ${b.port}, `:"",c+=b.database?`database: '${b.database}', `:"",c+=b.user?`user: '${b.user}'`:"",b.user||(c=c.substring(0,c.length-2)),c.trim()}},880731,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},176475,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(117257),h=a.r(849068),i=a.r(101776),j=a.r(880731);class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsageOld?.add(a,{state:c,name:b})}init(){return[new e.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],a=>((0,e.isWrapped)(a.createConnection)&&this._unwrap(a,"createConnection"),this._wrap(a,"createConnection",this._patchCreateConnection()),(0,e.isWrapped)(a.createPool)&&this._unwrap(a,"createPool"),this._wrap(a,"createPool",this._patchCreatePool()),(0,e.isWrapped)(a.createPoolCluster)&&this._unwrap(a,"createPoolCluster"),this._wrap(a,"createPoolCluster",this._patchCreatePoolCluster()),a),a=>{void 0!==a&&(this._unwrap(a,"createConnection"),this._unwrap(a,"createPool"),this._unwrap(a,"createPoolCluster"))})]}_patchCreateConnection(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),d}}}_patchCreatePool(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"end",b._patchPoolEnd(d)),b._setPoolCallbacks(d,""),d}}}_patchPoolEnd(a){return b=>{let c=this;return function(d){let e=a._allConnections.length,f=a._freeConnections.length,g=(0,i.getPoolNameOld)(a);c._connCountAdd(-(e-f),g,"used"),c._connCountAdd(-f,g,"idle"),b.apply(a,arguments)}}}_patchCreatePoolCluster(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"add",b._patchAdd(d)),d}}}_patchAdd(a){return b=>{let c=this;return function(d,e){if(!c._enabled)return c._unwrap(a,"add"),b.apply(a,arguments);b.apply(a,arguments);let f=a._nodes;if(f){let b=f["object"==typeof d?"CLUSTER::"+a._lastId:String(d)].pool;c._setPoolCallbacks(b,d)}}}}_patchGetConnection(a){return b=>{let c=this;return function(d,e,f){if(!c._enabled)return c._unwrap(a,"getConnection"),b.apply(a,arguments);if(1==arguments.length&&"function"==typeof d){let e=c._getConnectionCallbackPatchFn(d);return b.call(a,e)}if(2==arguments.length&&"function"==typeof e){let f=c._getConnectionCallbackPatchFn(e);return b.call(a,d,f)}if(3==arguments.length&&"function"==typeof f){let g=c._getConnectionCallbackPatchFn(f);return b.call(a,d,e,g)}return b.apply(a,arguments)}}}_getConnectionCallbackPatchFn(a){let b=this,c=d.context.active();return function(f,g){g&&!(0,e.isWrapped)(g.query)&&b._wrap(g,"query",b._patchQuery(g)),"function"==typeof a&&d.context.with(c,a,this,f,g)}}_patchQuery(a){return b=>{let c=this;return function(j,k,l){if(!c._enabled)return c._unwrap(a,"query"),b.apply(a,arguments);let m={},{host:n,port:o,database:p,user:q}=(0,i.getConfig)(a.config),r=parseInt(o,10),s=(0,i.getDbQueryText)(j);c._dbSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MYSQL,m[g.ATTR_DB_CONNECTION_STRING]=(0,i.getJDBCString)(n,o,p),m[g.ATTR_DB_NAME]=p,m[g.ATTR_DB_USER]=q,m[g.ATTR_DB_STATEMENT]=s),c._dbSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_DB_SYSTEM_NAME]=f.DB_SYSTEM_NAME_VALUE_MYSQL,m[f.ATTR_DB_NAMESPACE]=p,m[f.ATTR_DB_QUERY_TEXT]=s),c._netSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_NET_PEER_NAME]=n,isNaN(r)||(m[g.ATTR_NET_PEER_PORT]=r)),c._netSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_SERVER_ADDRESS]=n,isNaN(r)||(m[f.ATTR_SERVER_PORT]=r));let t=c.tracer.startSpan((0,i.getSpanName)(j),{kind:d.SpanKind.CLIENT,attributes:m});if(c.getConfig().enhancedDatabaseReporting){let a;Array.isArray(k)?a=k:arguments[2]&&(a=[k]),t.setAttribute(h.AttributeNames.MYSQL_VALUES,(0,i.getDbValues)(j,a))}let u=Array.from(arguments).findIndex(a=>"function"==typeof a),v=d.context.active();if(-1!==u)return c._wrap(arguments,u,c._patchCallbackQuery(t,v)),d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));{let c=d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));return d.context.bind(v,c),c.on("error",a=>t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message})).on("end",()=>{t.end()})}}}}_patchCallbackQuery(a,b){return c=>function(e,f,g){return e&&a.setStatus({code:d.SpanStatusCode.ERROR,message:e.message}),a.end(),d.context.with(b,()=>c(...arguments))}}_setPoolCallbacks(a,b){let c=b||(0,i.getPoolNameOld)(a);a.on("connection",a=>{this._connCountAdd(1,c,"idle")}),a.on("acquire",a=>{this._connCountAdd(-1,c,"idle"),this._connCountAdd(1,c,"used")}),a.on("release",a=>{this._connCountAdd(1,c,"idle"),this._connCountAdd(-1,c,"used")})}}c.MySQLInstrumentation=k},669807,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;var d=a.r(176475);Object.defineProperty(c,"MySQLInstrumentation",{enumerable:!0,get:function(){return d.MySQLInstrumentation}})},848855,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(669807),e=a.r(97153),f=a.r(829770),g="Mysql",h=f.generateInstrumentOnce(g,()=>new d.MySQLInstrumentation({})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql=h,c.mysqlIntegration=i},361795,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql"},780071,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.addSqlCommenterComment=void 0;let d=a.r(854230),e=a.r(35492);c.addSqlCommenterComment=function(a,b){let c;if("string"!=typeof b||0===b.length||(c=b.indexOf("--"))>=0||!(0>b.indexOf("/*"))&&c{let b=encodeURIComponent(g[a]).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`);return`${a}='${b}'`}).join(",");return`${b} /*${i}*/`}},538335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getConnectionPrototypeToInstrument=c.once=c.getSpanName=c.getQueryText=c.getConnectionAttributes=void 0;let d=a.r(361795),e=a.r(621472),f=a.r(357223);function g(a){return a.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}c.getConnectionAttributes=function(a,b,c){var g,h,i;let j,{host:k,port:l,database:m,user:n}=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}}(a),o={};b&e.SemconvStability.OLD&&(o[d.ATTR_DB_CONNECTION_STRING]=(g=k,h=l,i=m,j=`jdbc:mysql://${g||"localhost"}`,"number"==typeof h&&(j+=`:${h}`),"string"==typeof i&&(j+=`/${i}`),j),o[d.ATTR_DB_NAME]=m,o[d.ATTR_DB_USER]=n),b&e.SemconvStability.STABLE&&(o[f.ATTR_DB_NAMESPACE]=m);let p=parseInt(l,10);return c&e.SemconvStability.OLD&&(o[d.ATTR_NET_PEER_NAME]=k,isNaN(p)||(o[d.ATTR_NET_PEER_PORT]=p)),c&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=k,isNaN(p)||(o[f.ATTR_SERVER_PORT]=p)),o},c.getQueryText=function(a,b,c,d=!1,e=g){let[f,h]="string"==typeof a?[a,c]:[a.sql,"values"in a?c||a.values:c];try{if(d)return e(f);if(b&&h)return b(f,h);return f}catch(a){return"Could not determine the query due to an error in masking or formatting"}},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}},c.getConnectionPrototypeToInstrument=function(a){let b=a.prototype,c=Object.getPrototypeOf(b);return"function"==typeof c?.query&&"function"==typeof c?.execute?c:b}},229514,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},249556,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(361795),g=a.r(780071),h=a.r(538335),i=a.r(229514),j=a.r(357223),k=[">=1.4.2 <4"];class l extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let a;function b(b){!a&&b.format&&(a=b.format)}let c=b=>{(0,e.isWrapped)(b.query)&&this._unwrap(b,"query"),this._wrap(b,"query",this._patchQuery(a,!1)),(0,e.isWrapped)(b.execute)&&this._unwrap(b,"execute"),this._wrap(b,"execute",this._patchQuery(a,!0))},d=a=>{this._unwrap(a,"query"),this._unwrap(a,"execute")};return[new e.InstrumentationNodeModuleDefinition("mysql2",k,a=>(b(a),a),()=>{},[new e.InstrumentationNodeModuleFile("mysql2/promise.js",k,a=>(b(a),a),()=>{}),new e.InstrumentationNodeModuleFile("mysql2/lib/connection.js",k,a=>(c((0,h.getConnectionPrototypeToInstrument)(a)),a),a=>{void 0===a||d((0,h.getConnectionPrototypeToInstrument)(a))})])]}_patchQuery(a,b){return c=>{let i=this;return function(k,l,m){let n;Array.isArray(l)?n=l:arguments[2]&&(n=[l]);let{maskStatement:o,maskStatementHook:p,responseHook:q}=i.getConfig(),r=(0,h.getConnectionAttributes)(this.config,i._dbSemconvStability,i._netSemconvStability),s=(0,h.getQueryText)(k,a,n,o,p);i._dbSemconvStability&e.SemconvStability.OLD&&(r[f.ATTR_DB_SYSTEM]=f.DB_SYSTEM_VALUE_MYSQL,r[f.ATTR_DB_STATEMENT]=s),i._dbSemconvStability&e.SemconvStability.STABLE&&(r[j.ATTR_DB_SYSTEM_NAME]=j.DB_SYSTEM_NAME_VALUE_MYSQL,r[j.ATTR_DB_QUERY_TEXT]=s);let t=i.tracer.startSpan((0,h.getSpanName)(k),{kind:d.SpanKind.CLIENT,attributes:r});!b&&i.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=k="string"==typeof k?(0,g.addSqlCommenterComment)(t,k):Object.assign(k,{sql:(0,g.addSqlCommenterComment)(t,k.sql)}));let u=(0,h.once)((a,b)=>{a?t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}):"function"==typeof q&&(0,e.safeExecuteInTheMiddle)(()=>{q(t,{queryResults:b})},a=>{a&&i._diag.warn("Failed executing responseHook",a)},!0),t.end()});if(1==arguments.length){"function"==typeof k.onResult&&i._wrap(k,"onResult",i._patchCallbackQuery(u));let a=c.apply(this,arguments);return a.once("error",a=>{u(a)}).once("result",a=>{u(void 0,a)}),a}return"function"==typeof arguments[1]?i._wrap(arguments,1,i._patchCallbackQuery(u)):"function"==typeof arguments[2]&&i._wrap(arguments,2,i._patchCallbackQuery(u)),c.apply(this,arguments)}}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c,d),b(...arguments)}}}c.MySQL2Instrumentation=l},402179,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;var d=a.r(249556);Object.defineProperty(c,"MySQL2Instrumentation",{enumerable:!0,get:function(){return d.MySQL2Instrumentation}})},757586,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(402179),e=a.r(97153),f=a.r(829770),g="Mysql2",h=f.generateInstrumentOnce(g,()=>new d.MySQL2Instrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mysql2")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql2=h,c.mysql2Integration=i},918346,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},432614,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.endSpan=void 0;let d=a.r(854230);c.endSpan=(a,b)=>{b&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message})),a.end()}},881924,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.defaultDbStatementSerializer=void 0;let d=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];c.defaultDbStatementSerializer=(a,b)=>{if(Array.isArray(b)&&b.length){let c=d.find(({regex:b})=>b.test(a))?.args??0,e=c>=0?b.slice(0,c):b;return b.length>e.length&&e.push(`[${b.length-c} other arguments]`),`${a} ${e.join(" ")}`}return a}},325345,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},591386,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(918346),h=a.r(621472),i=a.r(432614),j=a.r(881924),k=a.r(325345),l={requireParentSpan:!0};class m extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){return[new e.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(a,b)=>{let c="Module"===a[Symbol.toStringTag]?a.default:a;return(0,e.isWrapped)(c.prototype.sendCommand)&&this._unwrap(c.prototype,"sendCommand"),this._wrap(c.prototype,"sendCommand",this._patchSendCommand(b)),(0,e.isWrapped)(c.prototype.connect)&&this._unwrap(c.prototype,"connect"),this._wrap(c.prototype,"connect",this._patchConnection()),a},a=>{if(void 0===a)return;let b="Module"===a[Symbol.toStringTag]?a.default:a;this._unwrap(b.prototype,"sendCommand"),this._unwrap(b.prototype,"connect")})]}_patchSendCommand(a){return b=>this._traceSendCommand(b,a)}_patchConnection(){return a=>this._traceConnection(a)}_traceSendCommand(a,b){let c=this;return function(k){if(arguments.length<1||"object"!=typeof k)return a.apply(this,arguments);let l=c.getConfig(),m=l.dbStatementSerializer||j.defaultDbStatementSerializer,n=void 0===d.trace.getSpan(d.context.active());if(!0===l.requireParentSpan&&n)return a.apply(this,arguments);let o={},{host:p,port:q}=this.options,r=m(k.name,k.args);c._dbSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,o[g.ATTR_DB_STATEMENT]=r,o[g.ATTR_DB_CONNECTION_STRING]=`redis://${p}:${q}`),c._dbSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,o[f.ATTR_DB_QUERY_TEXT]=r),c._netSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_NET_PEER_NAME]=p,o[g.ATTR_NET_PEER_PORT]=q),c._netSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=p,o[f.ATTR_SERVER_PORT]=q);let s=c.tracer.startSpan(k.name,{kind:d.SpanKind.CLIENT,attributes:o}),{requestHook:t}=l;t&&(0,h.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:b,cmdName:k.name,cmdArgs:k.args}),a=>{a&&d.diag.error("ioredis instrumentation: request hook failed",a)},!0);try{let b=a.apply(this,arguments),c=k.resolve;k.resolve=function(a){(0,h.safeExecuteInTheMiddle)(()=>l.responseHook?.(s,k.name,k.args,a),a=>{a&&d.diag.error("ioredis instrumentation: response hook failed",a)},!0),(0,i.endSpan)(s,null),c(a)};let e=k.reject;return k.reject=function(a){(0,i.endSpan)(s,a),e(a)},b}catch(a){throw(0,i.endSpan)(s,a),a}}}_traceConnection(a){let b=this;return function(){let c=void 0===d.trace.getSpan(d.context.active());if(!0===b.getConfig().requireParentSpan&&c)return a.apply(this,arguments);let h={},{host:j,port:k}=this.options;b._dbSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,h[g.ATTR_DB_STATEMENT]="connect",h[g.ATTR_DB_CONNECTION_STRING]=`redis://${j}:${k}`),b._dbSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,h[f.ATTR_DB_QUERY_TEXT]="connect"),b._netSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_NET_PEER_NAME]=j,h[g.ATTR_NET_PEER_PORT]=k),b._netSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_SERVER_ADDRESS]=j,h[f.ATTR_SERVER_PORT]=k);let l=b.tracer.startSpan("connect",{kind:d.SpanKind.CLIENT,attributes:h});try{let b=a.apply(this,arguments);return(0,i.endSpan)(l,null),b}catch(a){throw(0,i.endSpan)(l,a),a}}}}c.IORedisInstrumentation=m},294614,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;var d=a.r(591386);Object.defineProperty(c,"IORedisInstrumentation",{enumerable:!0,get:function(){return d.IORedisInstrumentation}})},232887,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},808776,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getTracedCreateStreamTrace=c.getTracedCreateClient=c.endSpan=void 0;let d=a.r(854230);c.endSpan=(a,b)=>{b&&a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end()},c.getTracedCreateClient=a=>function(){let b=a.apply(this,arguments);return d.context.bind(d.context.active(),b)},c.getTracedCreateStreamTrace=a=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(a){d.context.bind(d.context.active(),a),this._patched_redis_stream=a}}),a.apply(this,arguments)}},672921,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},806841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV2_V3=void 0;let d=a.r(621472),e=a.r(808776),f=a.r(232887),g=a.r(854230),h=a.r(357223),i=a.r(672921),j=a.r(881924);class k extends d.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new d.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],a=>((0,d.isWrapped)(a.RedisClient.prototype.internal_send_command)&&this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._wrap(a.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,d.isWrapped)(a.RedisClient.prototype.create_stream)&&this._unwrap(a.RedisClient.prototype,"create_stream"),this._wrap(a.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,d.isWrapped)(a.createClient)&&this._unwrap(a,"createClient"),this._wrap(a,"createClient",this._getPatchCreateClient()),a),a=>{void 0!==a&&(this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._unwrap(a.RedisClient.prototype,"create_stream"),this._unwrap(a,"createClient"))})]}_getPatchInternalSendCommand(){let a=this;return function(b){return function(c){if(1!=arguments.length||"object"!=typeof c)return b.apply(this,arguments);let f=a.getConfig(),l=void 0===g.trace.getSpan(g.context.active());if(!0===f.requireParentSpan&&l)return b.apply(this,arguments);let m=f?.dbStatementSerializer||j.defaultDbStatementSerializer,n={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(n,{[i.ATTR_DB_SYSTEM]:i.DB_SYSTEM_VALUE_REDIS,[i.ATTR_DB_STATEMENT]:m(c.command,c.args)}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(n,{[h.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_REDIS,[h.ATTR_DB_OPERATION_NAME]:c.command,[h.ATTR_DB_QUERY_TEXT]:m(c.command,c.args)});let o=a.tracer.startSpan(`${k.COMPONENT}-${c.command}`,{kind:g.SpanKind.CLIENT,attributes:n});if(this.connection_options){let b={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(b,{[i.ATTR_NET_PEER_NAME]:this.connection_options.host,[i.ATTR_NET_PEER_PORT]:this.connection_options.port}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(b,{[h.ATTR_SERVER_ADDRESS]:this.connection_options.host,[h.ATTR_SERVER_PORT]:this.connection_options.port}),o.setAttributes(b)}this.address&&a._semconvStability&d.SemconvStability.OLD&&o.setAttribute(i.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let p=arguments[0].callback;if(p){let b=g.context.active();arguments[0].callback=function(h,i){if(f?.responseHook){let b=f.responseHook;(0,d.safeExecuteInTheMiddle)(()=>{b(o,c.command,c.args,i)},b=>{b&&a._diag.error("Error executing responseHook",b)},!0)}return(0,e.endSpan)(o,h),g.context.with(b,p,this,...arguments)}}try{return b.apply(this,arguments)}catch(a){throw(0,e.endSpan)(o,a),a}}}}_getPatchCreateClient(){return function(a){return(0,e.getTracedCreateClient)(a)}}_getPatchCreateStream(){return function(a){return(0,e.getTracedCreateStreamTrace)(a)}}}c.RedisInstrumentationV2_V3=k},553053,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getClientAttributes=void 0;let d=a.r(357223),e=a.r(672921),f=a.r(621472);c.getClientAttributes=function(a,b,c){let g={};return c&f.SemconvStability.OLD&&Object.assign(g,{[e.ATTR_DB_SYSTEM]:e.DB_SYSTEM_VALUE_REDIS,[e.ATTR_NET_PEER_NAME]:b?.socket?.host,[e.ATTR_NET_PEER_PORT]:b?.socket?.port,[e.ATTR_DB_CONNECTION_STRING]:function(a,b){if("string"==typeof b&&b)try{let a=new URL(b);return a.searchParams.delete("user_pwd"),a.username="",a.password="",a.href}catch(b){a.error("failed to sanitize redis connection url",b)}}(a,b?.url)}),c&f.SemconvStability.STABLE&&Object.assign(g,{[d.ATTR_DB_SYSTEM_NAME]:e.DB_SYSTEM_NAME_VALUE_REDIS,[d.ATTR_SERVER_ADDRESS]:b?.socket?.host,[d.ATTR_SERVER_PORT]:b?.socket?.port}),g}},80145,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV4_V5=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(553053),g=a.r(881924),h=a.r(232887),i=a.r(357223),j=a.r(672921),k=Symbol("opentelemetry.instrumentation.redis.open_spans"),l=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class m extends e.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(a){let b=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/commander.js`,["^1.0.0"],(a,b)=>{let c=a.transformCommandArguments;if(!c)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),a;let d=b?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,e.isWrapped)(a?.[d])&&this._unwrap(a,d),this._wrap(a,d,this._getPatchExtendWithCommands(c)),a},a=>{(0,e.isWrapped)(a?.extendWithCommands)&&this._unwrap(a,"extendWithCommands"),(0,e.isWrapped)(a?.attachCommands)&&this._unwrap(a,"attachCommands")}),c=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),this._wrap(b,"exec",this._getPatchMultiCommandsExec(!1)),(0,e.isWrapped)(b?.execAsPipeline)&&this._unwrap(b,"execAsPipeline"),this._wrap(b,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand"),this._wrap(b,"addCommand",this._getPatchMultiCommandsAddCommand()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand")}),d=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return b?.multi&&((0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),this._wrap(b,"multi",this._getPatchRedisClientMulti())),b?.MULTI&&((0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),this._wrap(b,"MULTI",this._getPatchRedisClientMulti())),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand"),this._wrap(b,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(b,"connect",this._getPatchedClientConnect()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),(0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand")});return new e.InstrumentationNodeModuleDefinition(a,["^1.0.0","^5.0.0"],a=>a,()=>{},[b,c,d])}_getPatchExtendWithCommands(a){let b=this;return function(c){return function(d){if(d?.BaseClass?.name!=="RedisClient")return c.apply(this,arguments);let e=d.executor;return d.executor=function(c,d){let f=a(c,d).args;return b._traceClientCommand(e,this,arguments,f)},c.apply(this,arguments)}}}_getPatchMultiCommandsExec(a){let b=this;return function(c){return function(){let d=c.apply(this,arguments);return"function"!=typeof d?.then?(b._diag.error("non-promise result when patching exec/execAsPipeline"),d):d.then(c=>{let d=this[k];return b._endSpansWithRedisReplies(d,c,a),c}).catch(c=>{let d=this[k];if(d){let e="MultiErrorReply"===c.constructor.name?c.replies:Array(d.length).fill(c);b._endSpansWithRedisReplies(d,e,a)}else b._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(c)})}}}_getPatchMultiCommandsAddCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchRedisClientMulti(){return function(a){return function(){let b=a.apply(this,arguments);return b[l]=this.options,b}}}_getPatchRedisClientSendCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchedClientConnect(){let a=this;return function(b){return function(){let c=this.options,e=(0,f.getClientAttributes)(a._diag,c,a._semconvStability),g=a.tracer.startSpan(`${m.COMPONENT}-connect`,{kind:d.SpanKind.CLIENT,attributes:e});return d.context.with(d.trace.setSpan(d.context.active(),g),()=>b.apply(this)).then(a=>(g.end(),a)).catch(a=>(g.recordException(a),g.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),g.end(),Promise.reject(a)))}}}_traceClientCommand(a,b,c,h){if(void 0===d.trace.getSpan(d.context.active())&&this.getConfig().requireParentSpan)return a.apply(b,c);let n=b.options||b[l],o=h[0],p=h.slice(1),q=this.getConfig().dbStatementSerializer||g.defaultDbStatementSerializer,r=(0,f.getClientAttributes)(this._diag,n,this._semconvStability);this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_OPERATION_NAME]=o);try{let a=q(o,p);null!=a&&(this._semconvStability&e.SemconvStability.OLD&&(r[j.ATTR_DB_STATEMENT]=a),this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_QUERY_TEXT]=a))}catch(a){this._diag.error("dbStatementSerializer throw an exception",a,{commandName:o})}let s=this.tracer.startSpan(`${m.COMPONENT}-${o}`,{kind:d.SpanKind.CLIENT,attributes:r}),t=d.context.with(d.trace.setSpan(d.context.active(),s),()=>a.apply(b,c));return"function"==typeof t?.then?t.then(a=>{this._endSpanWithResponse(s,o,p,a,void 0)},a=>{this._endSpanWithResponse(s,o,p,null,a)}):(t[k]=t[k]||[],t[k].push({span:s,commandName:o,commandArgs:p})),t}_endSpansWithRedisReplies(a,b,c=!1){if(!a)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(b.length!==a.length)return this._diag.error("number of multi command spans does not match response from redis");let d=a.map(a=>a.commandName),f=d.every(a=>a===d[0])?(c?"PIPELINE ":"MULTI ")+d[0]:c?"PIPELINE":"MULTI";for(let c=0;c{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;let d=a.r(621472),e=a.r(232887),f=a.r(806841),g=a.r(80145),h={requireParentSpan:!1};class i extends d.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(a={}){const b={...h,...a};super(e.PACKAGE_NAME,e.PACKAGE_VERSION,b),this.instrumentationV2_V3=new f.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new g.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(a={}){let b={...h,...a};super.setConfig(b),this.initialized&&(this.instrumentationV2_V3.setConfig(b),this.instrumentationV4_V5.setConfig(b))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(a){super.setTracerProvider(a),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(a),this.instrumentationV4_V5.setTracerProvider(a))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}c.RedisInstrumentation=i},16860,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;var d=a.r(922540);Object.defineProperty(c,"RedisInstrumentation",{enumerable:!0,get:function(){return d.RedisInstrumentation}})},454951,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=["get","set","setex"],e=["get","mget"],f=["set","setex"];function g(a,b){return a.includes(b.toLowerCase())}function h(a){return g(e,a)?"cache.get":g(f,a)?"cache.put":void 0}function i(a){let b=[],c=a=>{a.forEach(a=>{Array.isArray(a)?c(a):b.push(a)})};return c(a),b}c.GET_COMMANDS=e,c.SET_COMMANDS=f,c.calculateCacheItemSize=function(a){let b=a=>{try{if(Buffer.isBuffer(a))return a.byteLength;if("string"==typeof a)return a.length;if("number"==typeof a)return a.toString().length;else if(null==a)return 0;return JSON.stringify(a).length}catch{return}};return Array.isArray(a)?a.reduce((a,c)=>{let d=b(c);return"number"==typeof d?void 0!==a?a+d:d:a},0):b(a)},c.getCacheKeySafely=function(a,b){try{if(0===b.length)return;let c=a=>"string"==typeof a||"number"==typeof a||Buffer.isBuffer(a)?[a.toString()]:Array.isArray(a)?i(a.map(a=>c(a))):[""],e=b[0];if(g(d,a)&&null!=e)return c(e);return i(b.map(a=>c(a)))}catch{return}},c.getCacheOperation=h,c.isInCommands=g,c.shouldConsiderForCache=function(a,b,c){if(!h(a))return!1;for(let a of b)if(function(a,b){return b.some(b=>a.startsWith(b))}(a,c))return!0;return!1}},745584,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(294614),e=a.r(16860),f=a.r(97153),g=a.r(829770),h=a.r(454951),i="Redis";c._redisOptions={};let j=(a,b,d,e)=>{a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let g=h.getCacheKeySafely(b,d),i=h.getCacheOperation(b);if(!g||!i||!c._redisOptions.cachePrefixes||!h.shouldConsiderForCache(b,g,c._redisOptions.cachePrefixes))return;let j=f.spanToJSON(a).data["net.peer.name"],k=f.spanToJSON(a).data["net.peer.port"];k&&j&&a.setAttributes({"network.peer.address":j,"network.peer.port":k});let l=h.calculateCacheItemSize(e);l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,l),h.isInCommands(h.GET_COMMANDS,b)&&void 0!==l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_HIT,l>0),a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:i,[f.SEMANTIC_ATTRIBUTE_CACHE_KEY]:g});let m=g.join(", ");a.updateName(c._redisOptions.maxCacheKeyLength?f.truncate(m,c._redisOptions.maxCacheKeyLength):m)},k=g.generateInstrumentOnce(`${i}.IORedis`,()=>new d.IORedisInstrumentation({responseHook:j})),l=g.generateInstrumentOnce(`${i}.Redis`,()=>new e.RedisInstrumentation({responseHook:j})),m=Object.assign(()=>{k(),l()},{id:i}),n=f.defineIntegration((a={})=>({name:i,setupOnce(){c._redisOptions=a,m()}}));c.cacheResponseHook=j,c.instrumentRedis=m,c.redisIntegration=n},247765,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},625531,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).PG_VALUES="db.postgresql.values",d.PG_PLAN="db.postgresql.plan",d.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",d.MAX_CLIENT="db.postgresql.max.client"},337652,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=c.METRIC_DB_CLIENT_CONNECTION_COUNT=c.DB_SYSTEM_VALUE_POSTGRESQL=c.DB_CLIENT_CONNECTION_STATE_VALUE_USED=c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=c.ATTR_DB_CLIENT_CONNECTION_STATE=c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",c.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",c.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",c.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",c.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},10035,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=void 0,(d=c.SpanNames||(c.SpanNames={})).QUERY_PREFIX="pg.query",d.CONNECT="pg.connect",d.POOL_CONNECT="pg-pool.connect"},277678,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizedErrorMessage=c.isObjectWithTextString=c.getErrorMessage=c.patchClientConnectCallback=c.patchCallbackPGPool=c.updateCounter=c.getPoolName=c.patchCallback=c.handleExecutionResult=c.handleConfigQuery=c.shouldSkipInstrumentation=c.getSemanticAttributesFromPoolConnection=c.getSemanticAttributesFromConnection=c.getConnectionString=c.parseAndMaskConnectionString=c.parseNormalizedOperationName=c.getQuerySpanName=void 0;let d=a.r(854230),e=a.r(625531),f=a.r(357223),g=a.r(337652),h=a.r(621472),i=a.r(10035);function j(a,b){if(!b)return i.SpanNames.QUERY_PREFIX;let c="string"==typeof b.name&&b.name?b.name:k(b.text);return`${i.SpanNames.QUERY_PREFIX}:${c}${a?` ${a}`:""}`}function k(a){let b=a.trim(),c=b.indexOf(" "),d=-1===c?b:b.slice(0,c);return(d=d.toUpperCase()).endsWith(";")?d.slice(0,-1):d}function l(a){try{let b=new URL(a);return b.username="",b.password="",b.toString()}catch(a){return"postgresql://localhost:5432/"}}function m(a){if("connectionString"in a&&a.connectionString)return l(a.connectionString);let b=a.host||"localhost",c=a.port||5432,d=a.database||"";return`postgresql://${b}:${c}/${d}`}function n(a){if(Number.isInteger(a))return a}function o(a,b){let c={};return b&h.SemconvStability.OLD&&(c={...c,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_DB_USER]:a.user,[g.ATTR_NET_PEER_NAME]:a.host,[g.ATTR_NET_PEER_PORT]:n(a.port)}),b&h.SemconvStability.STABLE&&(c={...c,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:a.host,[f.ATTR_SERVER_PORT]:n(a.port)}),c}function p(a,b,c){"function"==typeof a.responseHook&&(0,h.safeExecuteInTheMiddle)(()=>{a.responseHook(b,{data:c})},a=>{a&&d.diag.error("Error running response hook",a)},!0)}function q(a){let b=a?.name??"PostgreSQLError",c=a?.code??"UNKNOWN";return`PostgreSQL error of type '${b}' occurred (code: ${c})`}c.getQuerySpanName=j,c.parseNormalizedOperationName=k,c.parseAndMaskConnectionString=l,c.getConnectionString=m,c.getSemanticAttributesFromConnection=o,c.getSemanticAttributesFromPoolConnection=function(a,b){let c;try{c=a.connectionString?new URL(a.connectionString):void 0}catch(a){c=void 0}let d={[e.AttributeNames.IDLE_TIMEOUT_MILLIS]:a.idleTimeoutMillis,[e.AttributeNames.MAX_CLIENT]:a.maxClient};return b&h.SemconvStability.OLD&&(d={...d,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:c?.pathname.slice(1)??a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_NET_PEER_NAME]:c?.hostname??a.host,[g.ATTR_NET_PEER_PORT]:Number(c?.port)||n(a.port),[g.ATTR_DB_USER]:c?.username??a.user}),b&h.SemconvStability.STABLE&&(d={...d,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:c?.hostname??a.host,[f.ATTR_SERVER_PORT]:Number(c?.port)||n(a.port)}),d},c.shouldSkipInstrumentation=function(a){return!0===a.requireParentSpan&&void 0===d.trace.getSpan(d.context.active())},c.handleConfigQuery=function(a,b,c,i){let{connectionParameters:k}=this,l=j(k.database,i),m=a.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:o(k,c)});if(!i)return m;if(i.text&&(c&h.SemconvStability.OLD&&m.setAttribute(g.ATTR_DB_STATEMENT,i.text),c&h.SemconvStability.STABLE&&m.setAttribute(f.ATTR_DB_QUERY_TEXT,i.text)),b.enhancedDatabaseReporting&&Array.isArray(i.values))try{let a=i.values.map(a=>null==a?"null":a instanceof Buffer?a.toString():"object"!=typeof a?a.toString():"function"==typeof a.toPostgres?a.toPostgres():JSON.stringify(a));m.setAttribute(e.AttributeNames.PG_VALUES,a)}catch(a){d.diag.error("failed to stringify ",i.values,a)}return"string"==typeof i.name&&m.setAttribute(e.AttributeNames.PG_PLAN,i.name),m},c.handleExecutionResult=p,c.patchCallback=function(a,b,c,e,g){return function(h,i){h?(Object.prototype.hasOwnProperty.call(h,"code")&&(e[f.ATTR_ERROR_TYPE]=h.code),h instanceof Error&&b.recordException(q(h)),b.setStatus({code:d.SpanStatusCode.ERROR,message:h.message})):p(a,b,i),g(),b.end(),c.call(this,h,i)}},c.getPoolName=function(a){let b="";return(b+=(a?.host?`${a.host}`:"unknown_host")+":"+(a?.port?`${a.port}`:"unknown_port")+"/"+(a?.database?`${a.database}`:"unknown_database")).trim()},c.updateCounter=function(a,b,c,d,e){let f=b.totalCount,h=b.waitingCount,i=b.idleCount,j=f-i;return c.add(j-e.used,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),c.add(i-e.idle,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),d.add(h-e.pending,{[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),{used:j,idle:i,pending:h}},c.patchCallbackPGPool=function(a,b){return function(c,e,f){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.call(this,c,e,f)}},c.patchClientConnectCallback=function(a,b){return function(c){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.apply(this,arguments)}},c.getErrorMessage=function(a){return"object"==typeof a&&null!==a&&"message"in a?String(a.message):void 0},c.isObjectWithTextString=function(a){return"object"==typeof a&&"string"==typeof a?.text},c.sanitizedErrorMessage=q},412962,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.66.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},352271,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PgInstrumentation=void 0;let d=a.r(621472),e=a.r(854230),f=a.r(247765),g=a.r(277678),h=a.r(780071),i=a.r(412962),j=a.r(10035),k=a.r(35492),l=a.r(357223),m=a.r(337652);function n(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class o extends d.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._semconvStability=(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(l.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:e.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let a=[">=8.0.3 <9"],b=new d.InstrumentationNodeModuleFile("pg/lib/native/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),c=new d.InstrumentationNodeModuleFile("pg/lib/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new d.InstrumentationNodeModuleDefinition("pg",a,a=>{let b=n(a);return this._patchPgClient(b.Client),a},a=>{let b=n(a);return this._unpatchPgClient(b.Client),a},[c,b]),new d.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],a=>{let b=n(a);return(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"connect",this._getPoolConnectPatch()),b},a=>{let b=n(a);(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect")})]}_patchPgClient(a){if(!a)return;let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"query",this._getClientQueryPatch()),this._wrap(b.prototype,"connect",this._getClientConnectPatch()),a}_unpatchPgClient(a){let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),a}_getClientConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||d.ignoreConnectSpans)return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromConnection(this,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchClientConnectCallback(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}recordOperationDuration(a,b){let c={},e=[l.ATTR_DB_NAMESPACE,l.ATTR_ERROR_TYPE,l.ATTR_SERVER_PORT,l.ATTR_SERVER_ADDRESS,l.ATTR_DB_OPERATION_NAME];this._semconvStability&d.SemconvStability.OLD&&e.push(m.ATTR_DB_SYSTEM),this._semconvStability&d.SemconvStability.STABLE&&e.push(l.ATTR_DB_SYSTEM_NAME),e.forEach(b=>{b in a&&(c[b]=a[b])});let f=(0,k.hrTimeToMilliseconds)((0,k.hrTimeDuration)(b,(0,k.hrTime)()))/1e3;this._operationDuration.record(f,c)}_getClientQueryPatch(){let a=this;return b=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...c){let f;if(g.shouldSkipInstrumentation(a.getConfig()))return b.apply(this,c);let i=(0,k.hrTime)(),j=c[0],n="string"==typeof j,o=g.isObjectWithTextString(j),p=n?{text:j,values:Array.isArray(c[1])?c[1]:void 0}:o?{...j,name:j.name,text:j.text,values:j.values??(Array.isArray(c[1])?c[1]:void 0)}:void 0,q={[m.ATTR_DB_SYSTEM]:m.DB_SYSTEM_VALUE_POSTGRESQL,[l.ATTR_DB_NAMESPACE]:this.database,[l.ATTR_SERVER_PORT]:this.connectionParameters.port,[l.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};p?.text&&(q[l.ATTR_DB_OPERATION_NAME]=g.parseNormalizedOperationName(p?.text));let r=()=>{a.recordOperationDuration(q,i)},s=a.getConfig(),t=g.handleConfigQuery.call(this,a.tracer,s,a._semconvStability,p);if(s.addSqlCommenterCommentToQueries&&(n?c[0]=(0,h.addSqlCommenterComment)(t,j):!o||"name"in j||(c[0]={...j,text:(0,h.addSqlCommenterComment)(t,j.text)})),c.length>0){let b=e.trace.getSpan(e.context.active());if("function"==typeof c[c.length-1])c[c.length-1]=g.patchCallback(s,t,c[c.length-1],q,r),b&&(c[c.length-1]=e.context.bind(e.context.active(),c[c.length-1]));else if("function"==typeof p?.callback){let d=g.patchCallback(a.getConfig(),t,p.callback,q,r);b&&(d=e.context.bind(e.context.active(),d)),c[0].callback=d}}let{requestHook:u}=s;"function"==typeof u&&p&&(0,d.safeExecuteInTheMiddle)(()=>{let{database:a,host:b,port:c,user:d}=this.connectionParameters;u(t,{connection:{database:a,host:b,port:c,user:d},query:{text:p.text,values:p.values,name:p.name}})},b=>{b&&a._diag.error("Error running query hook",b)},!0);try{f=b.apply(this,c)}catch(a){throw a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(a)}),t.end(),a}return f instanceof Promise?f.then(b=>new Promise(c=>{g.handleExecutionResult(a.getConfig(),t,b),r(),t.end(),c(b)})).catch(a=>new Promise((b,c)=>{a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),r(),t.end(),c(a)})):f})}_setPoolConnectEventListeners(a){if(a[f.EVENT_LISTENERS_SET])return;let b=g.getPoolName(a.options);a.on("connect",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("acquire",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("remove",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("release",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a[f.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||(a._setPoolConnectEventListeners(this),d.ignoreConnectSpans))return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.POOL_CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromPoolConnection(this.options,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchCallbackPGPool(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}}function p(a,b){return b instanceof Promise?e.context.bind(e.context.active(),b.then(b=>(a.end(),b)).catch(b=>(b instanceof Error&&a.recordException(g.sanitizedErrorMessage(b)),a.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(b)}),a.end(),Promise.reject(b)))):b}c.PgInstrumentation=o},95274,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.PgInstrumentation=void 0;var d=a.r(352271);Object.defineProperty(c,"PgInstrumentation",{enumerable:!0,get:function(){return d.PgInstrumentation}});var e=a.r(625531);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},277029,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(95274),e=a.r(97153),f=a.r(829770),g="Postgres",h=f.generateInstrumentOnce(g,d.PgInstrumentation,a=>({requireParentSpan:!0,requestHook(a){f.addOriginToSpan(a,"auto.db.otel.postgres")},ignoreConnectSpans:a?.ignoreConnectSpans??!1})),i=e.defineIntegration(a=>({name:g,setupOnce(){h(a)}}));c.instrumentPostgres=h,c.postgresIntegration=i},551578,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(97153),h=a.r(829770),i=a.r(560192),j="PostgresJs",k=[">=3.0.0 <4"],l=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,m=Symbol.for("sentry.query.from.instrumented.sql"),n=h.generateInstrumentOnce(j,a=>new o({requireParentSpan:a?.requireParentSpan??!0,requestHook:a?.requestHook}));class o extends e.InstrumentationBase{constructor(a){super("sentry-postgres-js",g.SDK_VERSION,a)}init(){let a=new e.InstrumentationNodeModuleDefinition("postgres",k,a=>{try{return this._patchPostgres(a)}catch(b){return i.DEBUG_BUILD&&g.debug.error("Failed to patch postgres module:",b),a}},a=>a);return["src","cf/src","cjs/src"].forEach(b=>{a.files.push(new e.InstrumentationNodeModuleFile(`postgres/${b}/query.js`,k,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),a}_patchPostgres(a){let b="function"==typeof a,c=b?a:a.default;if("function"!=typeof c)return i.DEBUG_BUILD&&g.debug.warn("postgres module does not export a function. Skipping instrumentation."),a;let d=this,e=function(...a){let b=Reflect.construct(c,a);if(!b||"function"!=typeof b)return i.DEBUG_BUILD&&g.debug.warn("postgres() did not return a valid instance"),b;let e=d.getConfig();return g.instrumentPostgresJsSql(b,{requireParentSpan:e.requireParentSpan,requestHook:e.requestHook})};for(let a of(Object.setPrototypeOf(e,c),Object.setPrototypeOf(e.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(e,a,b)}return b?e:(g.replaceExports(a,"default",e),a)}_shouldCreateSpans(){let a=this.getConfig();return void 0!==d.trace.getSpan(d.context.active())||!a.requireParentSpan}_setOperationName(a,b,c){if(c)return void a.setAttribute(f.ATTR_DB_OPERATION_NAME,c);let d=b?.match(l);d?.[1]&&a.setAttribute(f.ATTR_DB_OPERATION_NAME,d[1].toUpperCase())}_reconstructQuery(a){if(a?.length)return 1===a.length?a[0]||void 0:a.reduce((a,b,c)=>0===c?b:`${a}$${c}${b}`,"")}_sanitizeSqlQuery(a){return a?a.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{h.addOriginToSpan(d,"auto.db.postgresjs"),d.setAttributes({[f.ATTR_DB_SYSTEM_NAME]:"postgres",[f.ATTR_DB_QUERY_TEXT]:k});let{requestHook:l}=b.getConfig();l&&e.safeExecuteInTheMiddle(()=>l(d,k,void 0),a=>{a&&(d.setAttribute("sentry.hook.error","requestHook failed"),i.DEBUG_BUILD&&g.debug.error(`Error in requestHook for ${j} integration:`,a))},!0);let m=this.resolve;this.resolve=new Proxy(m,{apply:(a,c,e)=>{try{b._setOperationName(d,k,e?.[0]?.command),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in resolve callback:",a)}return Reflect.apply(a,c,e)}});let n=this.reject;this.reject=new Proxy(n,{apply:(a,c,e)=>{try{d.setStatus({code:g.SPAN_STATUS_ERROR,message:e?.[0]?.message||"unknown_error"}),d.setAttribute(f.ATTR_DB_RESPONSE_STATUS_CODE,e?.[0]?.code||"unknown"),d.setAttribute(f.ATTR_ERROR_TYPE,e?.[0]?.name||"unknown"),b._setOperationName(d,k),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in reject callback:",a)}return Reflect.apply(a,c,e)}});try{return c.apply(this,a)}catch(a){throw d.setStatus({code:g.SPAN_STATUS_ERROR,message:a instanceof Error?a.message:"unknown_error"}),d.end(),a}})},a.Query.prototype.handle.__sentry_original__=c,a}_unpatchQueryPrototype(a){return a.Query.prototype.handle.__sentry_original__&&(a.Query.prototype.handle=a.Query.prototype.handle.__sentry_original__),a}}let p=g.defineIntegration(a=>({name:j,setupOnce(){n(a)}}));c.PostgresJsInstrumentation=o,c.instrumentPostgresJs=n,c.postgresJsIntegration=p},882435,a=>{"use strict";a.s([],209479),a.i(209479);var b,c,d=a.i(818414),e=a.i(286508);let f="object"==typeof globalThis?globalThis:a.g,g=Symbol.for("io.opentelemetry.js.api.logs");class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return f[g]?this.getLoggerProvider():(f[g]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=f[g])?void 0:a.call(f,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete f[g],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(385603);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(a=>a.name===g).filter(b=>af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!1},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{name;supportedVersions;patch;unpatch;files;constructor(a,b,c,d,e){this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d,this.files=e||[]}}class ah{supportedVersions;patch;unpatch;name;constructor(a,b,c,d){this.supportedVersions=b,this.patch=c,this.unpatch=d,this.name=(0,p.normalize)(a)}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],882435)},686922,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={PrismaInstrumentation:()=>w,registerInstrumentations:()=>x.registerInstrumentations};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let i of f(b))g.call(a,i)||i===c||d(a,i,{get:()=>b[i],enumerable:!(h=e(b,i))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(854230),l=a.r(882435),m="7.6.0".split(".")[0],n="PRISMA_INSTRUMENTATION",o=`V${m}_PRISMA_INSTRUMENTATION`,p=globalThis,q=a.r(854230),r="true"===process.env.PRISMA_SHOW_ALL_TRACES,s=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:a,ignoreSpanTypes:b}){this.tracerProvider=a,this.ignoreSpanTypes=b}isEnabled(){return!0}getTraceParent(a){let b=q.trace.getSpanContext(a??q.context.active());return b?`00-${b.traceId}-${b.spanId}-0${b.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(a){let b=this.tracerProvider.getTracer("prisma"),c=new Map;for(let d of a.filter(a=>null===a.parentId))!function a(b,c,d,e,f){if(u(c.name,f))return;let g={attributes:c.attributes,kind:"client"===c.kind?q.SpanKind.CLIENT:q.SpanKind.INTERNAL,startTime:c.startTime};b.startActiveSpan(c.name,g,g=>{for(let h of(e.set(c.id,g.spanContext().spanId),c.links&&g.addLinks(c.links.flatMap(a=>{let b=e.get(a);return b?{context:{spanId:b,traceId:g.spanContext().traceId,traceFlags:g.spanContext().traceFlags}}:[]})),d.filter(a=>a.parentId===c.id)))a(b,h,d,e,f);g.end(c.endTime)})}(b,d,a,c,this.ignoreSpanTypes)}getActiveContext(){return q.context.active()}runInChildSpan(a,b){if("string"==typeof a&&(a={name:a}),a.internal&&!r)return b();let c=this.tracerProvider.getTracer("prisma"),d=a.context??this.getActiveContext(),e=`prisma:client:${a.name}`;if(u(e,this.ignoreSpanTypes))return b();if(!1===a.active){let f=c.startSpan(e,a,d);return t(f,b(f,d))}return c.startActiveSpan(e,a,a=>t(a,b(a,d)))}};function t(a,b){var c;return null!=(c=b)&&"function"==typeof c.then?b.then(b=>(a.end(),b),b=>{throw a.end(),b}):(a.end(),b)}function u(a,b){return b.some(b=>"string"==typeof b?b===a:b.test(a))}var v="7.6.0",w=class extends l.InstrumentationBase{tracerProvider;constructor(a={}){super("@prisma/instrumentation",v,a)}setTracerProvider(a){this.tracerProvider=a}init(){return[new l.InstrumentationNodeModuleDefinition("@prisma/client",[v])]}enable(){let a,b=this._config;a={helper:new s({tracerProvider:this.tracerProvider??k.trace.getTracerProvider(),ignoreSpanTypes:b.ignoreSpanTypes??[]})},p[o]=a,p[n]=a}disable(){delete p[o],delete p[n]}isEnabled(){return void 0!==function(){let a=p[o];if(a?.helper)return a.helper;let b=p[n];return b?.helper}()}},x=a.r(882435)},302889,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(686922),f=a.r(97153),g=a.r(829770),h="Prisma";function i(){let a=globalThis.PRISMA_INSTRUMENTATION;return a&&"object"==typeof a&&"helper"in a?a.helper:void 0}class j extends e.PrismaInstrumentation{constructor(a){super(a?.instrumentationConfig)}enable(){super.enable();let a=i();a&&"object"==typeof a&&"dispatchEngineSpans"in a&&(a.createEngineSpan=a=>{let b=d.trace.getTracer("prismaV5Compatibility"),c=b._idGenerator;if(!c)return void f.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{a.spans.forEach(a=>{var e;let f=(e=a.kind,"client"===e?d.SpanKind.CLIENT:d.SpanKind.INTERNAL),g=a.parent_span_id,h=a.span_id,i=a.trace_id,j=a.links?.map(a=>({context:{traceId:a.trace_id,spanId:a.span_id,traceFlags:d.TraceFlags.SAMPLED}})),k=d.trace.setSpanContext(d.context.active(),{traceId:i,spanId:g,traceFlags:d.TraceFlags.SAMPLED});d.context.with(k,()=>{b._idGenerator={generateTraceId:()=>i,generateSpanId:()=>h},b.startSpan(a.name,{kind:f,links:j,startTime:a.start_time,attributes:a.attributes}).end(a.end_time),b._idGenerator=c})})}finally{b._idGenerator=c}})}}let k=g.generateInstrumentOnce(h,a=>new j(a)),l=f.defineIntegration(a=>({name:h,setupOnce(){k(a)},setup(a){i()&&a.on("spanStart",a=>{let b=f.spanToJSON(a);b.description?.startsWith("prisma:")&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===b.description&&b.data["db.query.text"]&&a.updateName(b.data["db.query.text"]),"prisma:engine:db_query"!==b.description||b.data["db.system"]||a.setAttribute("db.system","prisma")})}}));c.instrumentPrisma=k,c.prismaIntegration=l},612971,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},968427,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiLifecycleMethodNames=c.HapiLayerType=c.handlerPatched=c.HapiComponentName=void 0,c.HapiComponentName="@hapi/hapi",c.handlerPatched=Symbol("hapi-handler-patched"),c.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},c.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},19822,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_HTTP_METHOD=void 0,c.ATTR_HTTP_METHOD="http.method"},100306,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).HAPI_TYPE="hapi.type",d.PLUGIN_NAME="hapi.plugin.name",d.EXT_TYPE="server.ext.type"},1606,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getPluginFromInput=c.getExtMetadata=c.getRouteMetadata=c.isPatchableExtMethod=c.isDirectExtInput=c.isLifecycleExtEventObj=c.isLifecycleExtType=c.getPluginName=void 0;let d=a.r(357223),e=a.r(19822),f=a.r(968427),g=a.r(100306),h=a.r(621472);c.getPluginName=function(a){return a.name?a.name:a.pkg.name},c.isLifecycleExtType=a=>"string"==typeof a&&f.HapiLifecycleMethodNames.has(a),c.isLifecycleExtEventObj=a=>{let b=a?.type;return void 0!==b&&(0,c.isLifecycleExtType)(b)},c.isDirectExtInput=a=>Array.isArray(a)&&a.length<=3&&(0,c.isLifecycleExtType)(a[0])&&"function"==typeof a[1],c.isPatchableExtMethod=a=>!Array.isArray(a),c.getRouteMetadata=(a,b,c)=>{let i,j={[d.ATTR_HTTP_ROUTE]:a.path};return b&h.SemconvStability.OLD&&(j[e.ATTR_HTTP_METHOD]=a.method),b&h.SemconvStability.STABLE&&(j[d.ATTR_HTTP_REQUEST_METHOD]=a.method),c?(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.PLUGIN,j[g.AttributeNames.PLUGIN_NAME]=c,i=`${c}: route - ${a.path}`):(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.ROUTER,i=`route - ${a.path}`),{attributes:j,name:i}},c.getExtMetadata=(a,b,c)=>{let d=`ext - ${a}`;return(c&&"method"!==c&&(d=`ext - ${a} - ${c}`),b)?{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT,[g.AttributeNames.PLUGIN_NAME]:b},name:`${b}: ${d}`}:{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT},name:d}},c.getPluginFromInput=a=>"plugin"in a?"plugin"in a.plugin?a.plugin.plugin:a.plugin:a},315858,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(612971),h=a.r(968427),i=a.r(1606);class j extends f.InstrumentationBase{_semconvStability;constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a),this._semconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new f.InstrumentationNodeModuleDefinition(h.HapiComponentName,[">=17.0.0 <22"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return(0,f.isWrapped)(b.server)||this._wrap(b,"server",this._getServerPatch.bind(this)),(0,f.isWrapped)(b.Server)||this._wrap(b,"Server",this._getServerPatch.bind(this)),b},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;this._massUnwrap([b],["server","Server"])})}_getServerPatch(a){let b=this,c=this;return function(d){let e=a.apply(this,[d]);return c._wrap(e,"route",a=>b._getServerRoutePatch.bind(b)(a)),c._wrap(e,"ext",a=>b._getServerExtPatch.bind(b)(a)),c._wrap(e,"register",b._getServerRegisterPatch.bind(b)),e}}_getServerRegisterPatch(a){let b=this;return function(c,d){if(Array.isArray(c))for(let a of c){let c=(0,i.getPluginFromInput)(a);b._wrapRegisterHandler(c)}else{let a=(0,i.getPluginFromInput)(c);b._wrapRegisterHandler(a)}return a.apply(this,[c,d])}}_getServerExtPatch(a,b){let c=this;return function(...d){if(Array.isArray(d[0])){let a=d[0];for(let d=0;db._getServerRoutePatch.bind(b)(a,c)),e._wrap(a,"ext",a=>b._getServerExtPatch.bind(b)(a,c)),d.call(this,a,f)}}_wrapExtMethods(a,b,c){let e=this;if(a instanceof Array)for(let c=0;casync function(...g){if(void 0===d.trace.getSpan(d.context.active()))return await f.call(this,...g);let h=(0,e.getRPCMetadata)(d.context.active());h?.type===e.RPCType.HTTP&&(h.route=a.path);let j=(0,i.getRouteMetadata)(a,c._semconvStability,b),k=c.tracer.startSpan(j.name,{attributes:j.attributes});try{return await d.context.with(d.trace.setSpan(d.context.active(),k),()=>f.call(this,...g))}catch(a){throw k.recordException(a),k.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),a}finally{k.end()}};if("function"==typeof a.handler)a.handler=f(a.handler);else if("function"==typeof a.options){let b=a.options;a.options=function(a){let c=b(a);return"function"==typeof c.handler&&(c.handler=f(c.handler)),c}}else"function"==typeof a.options?.handler&&(a.options.handler=f(a.options.handler));return a}}c.HapiInstrumentation=j},83238,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.HapiInstrumentation=void 0;var d=a.r(315858);Object.defineProperty(c,"HapiInstrumentation",{enumerable:!0,get:function(){return d.HapiInstrumentation}});var e=a.r(100306);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},546750,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(83238),e=a.r(97153),f=a.r(829770),g=a.r(560192),h="Hapi",i=f.generateInstrumentOnce(h,()=>new d.HapiInstrumentation),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}})),k={name:"SentryHapiErrorPlugin",version:e.SDK_VERSION,register:async function(a){a.events.on({name:"request",channels:["error"]},(a,b)=>{var c;if(e.getIsolationScope()!==e.getDefaultIsolationScope()){let b=a.route;b.path&&e.getIsolationScope().setTransactionName(`${b.method.toUpperCase()} ${b.path}`)}else g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");b&&"object"==typeof b&&"error"in b&&b.error&&(c=b.error,e.captureException(c,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function l(a){await a.register(k);let b=e.getClient();b&&b.on("spanStart",a=>{var b;let c,d;b=a,d=(c=e.spanToJSON(b).data)["hapi.type"],!c[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&d&&b.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${d}.hapi`})}),f.ensureIsWrapped(a.register,"hapi")}c.hapiErrorPlugin=k,c.hapiIntegration=j,c.instrumentHapi=i,c.setupHapiErrorHandler=l},749024,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},c.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},64759,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472),f=a.r(97153),g=a.r(749024);class h extends e.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-hono","0.0.1",a)}init(){return[new e.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],a=>this._patch(a))]}_patch(a){let b=this;class c extends a.Hono{constructor(...a){super(...a),b._wrap(this,"get",b._patchHandler()),b._wrap(this,"post",b._patchHandler()),b._wrap(this,"put",b._patchHandler()),b._wrap(this,"delete",b._patchHandler()),b._wrap(this,"options",b._patchHandler()),b._wrap(this,"patch",b._patchHandler()),b._wrap(this,"all",b._patchHandler()),b._wrap(this,"on",b._patchOnHandler()),b._wrap(this,"use",b._patchMiddlewareHandler())}}try{a.Hono=c}catch{return{...a,Hono:c}}return a}_patchHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_patchOnHandler(){let a=this;return function(b){return function(...c){let d=c.slice(2);return b.apply(this,[...c.slice(0,2),...d.map(b=>a._wrapHandler(b))])}}}_patchMiddlewareHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_wrapHandler(a){let b=this;return function(c,e){if(!b.isEnabled())return a.apply(this,[c,e]);let h=c.req.path,i=b.tracer.startSpan(h);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>b._safeExecute(()=>{let d=a.apply(this,[c,e]);if(f.isThenable(d))return d.then(c=>{let d=b._determineHandlerType(c);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:d,[g.AttributeNames.HONO_NAME]:d===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),c});{let c=b._determineHandlerType(d);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:c,[g.AttributeNames.HONO_NAME]:c===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),d}},()=>i.end(),a=>{b._handleError(i,a),i.end()}))}}_safeExecute(a,b,c){try{let d=a();return f.isThenable(d)?d.then(()=>b(),a=>c(a)):b(),d}catch(a){throw c(a),a}}_determineHandlerType(a){return void 0===a?g.HonoTypes.MIDDLEWARE:g.HonoTypes.REQUEST_HANDLER}_handleError(a,b){b instanceof Error&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b))}}c.HonoInstrumentation=h},228328,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(829770),g=a.r(560192),h=a.r(749024),i=a.r(64759),j="Hono",k=f.generateInstrumentOnce(j,()=>new i.HonoInstrumentation({responseHook:a=>{!function(a){let b=e.spanToJSON(a).data,c=b[h.AttributeNames.HONO_TYPE];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.hono`});let f=b[h.AttributeNames.HONO_NAME];if("string"==typeof f&&a.updateName(f),e.getIsolationScope()===e.getDefaultIsolationScope()){g.DEBUG_BUILD&&e.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let i=b[d.ATTR_HTTP_ROUTE],j=b[d.ATTR_HTTP_REQUEST_METHOD];"string"==typeof i&&"string"==typeof j&&e.getIsolationScope().setTransactionName(`${j} ${i}`)}(a)}})),l=e.defineIntegration(()=>({name:j,setupOnce(){k()}}));c.honoIntegration=l,c.instrumentHono=k,c.setupHonoErrorHandler=function(a,b){a.use(async function(a,b){let c=e.httpRequestToRequestData(a.req);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:c}),await b()}),a.use(async function(a,c){await c(),(b?.shouldHandleError||function(a){return a.res.status>=500})(a)&&(a.res.sentry=e.captureException(a.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),f.ensureIsWrapped(a.use,"hono")}},633428,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=void 0,(d=c.KoaLayerType||(c.KoaLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware"},223086,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},689826,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).KOA_TYPE="koa.type",d.KOA_NAME="koa.name"},48355,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isLayerIgnored=c.getMiddlewareMetadata=void 0;let d=a.r(633428),e=a.r(689826),f=a.r(357223);c.getMiddlewareMetadata=(a,b,c,g)=>c?{attributes:{[e.AttributeNames.KOA_NAME]:g?.toString(),[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.ROUTER,[f.ATTR_HTTP_ROUTE]:g?.toString()},name:a._matchedRouteName||`router - ${g}`}:{attributes:{[e.AttributeNames.KOA_NAME]:b.name??"middleware",[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.MIDDLEWARE},name:`middleware - ${b.name}`},c.isLayerIgnored=(a,b)=>!!(Array.isArray(b?.ignoreLayersType)&&b?.ignoreLayersType?.includes(a))},208864,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.kLayerPatched=void 0,c.kLayerPatched=Symbol("koa-layer-patched")},335708,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(633428),g=a.r(223086),h=a.r(48355),i=a.r(35492),j=a.r(208864);class k extends e.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return new e.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return null==b?b:((0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use"),this._wrap(b.prototype,"use",this._getKoaUsePatch.bind(this)),a)},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;(0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use")})}_getKoaUsePatch(a){let b=this;return function(c){let d;return d=c.router?b._patchRouterDispatch(c):b._patchLayer(c,!1),a.apply(this,[d])}}_patchRouterDispatch(a){d.diag.debug("Patching @koa/router dispatch");let b=a.router;for(let a of b?.stack??[]){let b=a.path,c=a.stack;for(let a=0;a{if(void 0===d.trace.getSpan(d.context.active()))return a(f,j);let k=(0,h.getMiddlewareMetadata)(f,a,b,c),l=this.tracer.startSpan(k.name,{attributes:k.attributes}),m=(0,i.getRPCMetadata)(d.context.active());m?.type===i.RPCType.HTTP&&f._matchedRoute&&(m.route=f._matchedRoute.toString());let{requestHook:n}=this.getConfig();n&&(0,e.safeExecuteInTheMiddle)(()=>n(l,{context:f,middlewareLayer:a,layerType:g}),a=>{a&&d.diag.error("koa instrumentation: request hook failed",a)},!0);let o=d.trace.setSpan(d.context.active(),l);return d.context.with(o,async()=>{try{return await a(f,j)}catch(a){throw l.recordException(a),a}finally{l.end()}})})}}c.KoaInstrumentation=k},784208,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=c.AttributeNames=c.KoaInstrumentation=void 0;var d=a.r(335708);Object.defineProperty(c,"KoaInstrumentation",{enumerable:!0,get:function(){return d.KoaInstrumentation}});var e=a.r(689826);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}});var f=a.r(633428);Object.defineProperty(c,"KoaLayerType",{enumerable:!0,get:function(){return f.KoaLayerType}})},326259,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(784208),e=a.r(357223),f=a.r(97153),g=a.r(829770),h=a.r(560192),i=g.generateInstrumentOnce("Koa",d.KoaInstrumentation,(a={})=>({ignoreLayersType:a.ignoreLayersType,requestHook(a,b){g.addOriginToSpan(a,"auto.http.otel.koa");let c=f.spanToJSON(a).data,d=c["koa.type"];d&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${d}.koa`);let i=c["koa.name"];if("string"==typeof i&&a.updateName(i||"< unknown >"),f.getIsolationScope()===f.getDefaultIsolationScope()){h.DEBUG_BUILD&&f.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let j=c[e.ATTR_HTTP_ROUTE],k=b.context?.request?.method?.toUpperCase()||"GET";j&&f.getIsolationScope().setTransactionName(`${k} ${j}`)}})),j=f.defineIntegration((a={})=>({name:"Koa",setupOnce(){i(a)}}));c.instrumentKoa=i,c.koaIntegration=j,c.setupKoaErrorHandler=a=>{a.use(async(a,b)=>{try{await b()}catch(a){throw f.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),a}}),g.ensureIsWrapped(a.use,"koa")}},571897,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectNames=c.ConnectTypes=c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).CONNECT_TYPE="connect.type",d.CONNECT_NAME="connect.name",(e=c.ConnectTypes||(c.ConnectTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",(f=c.ConnectNames||(c.ConnectNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},838828,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},169073,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=void 0,c._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},471850,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.generateRoute=c.replaceCurrentStackRoute=c.addNewStackLayer=void 0;let d=a.r(854230),e=a.r(169073);c.addNewStackLayer=a=>{!1===Array.isArray(a[e._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,e._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),a[e._LAYERS_STORE_PROPERTY].push("/");let b=a[e._LAYERS_STORE_PROPERTY].length;return()=>{b===a[e._LAYERS_STORE_PROPERTY].length?a[e._LAYERS_STORE_PROPERTY].pop():d.diag.warn("Connect: Trying to pop the stack multiple time")}},c.replaceCurrentStackRoute=(a,b)=>{b&&a[e._LAYERS_STORE_PROPERTY].splice(-1,1,b)},c.generateRoute=a=>a[e._LAYERS_STORE_PROPERTY].reduce((a,b)=>a.replace(/\/+$/,"")+b)},822198,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectInstrumentation=c.ANONYMOUS_NAME=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(571897),g=a.r(838828),h=a.r(621472),i=a.r(357223),j=a.r(471850);c.ANONYMOUS_NAME="anonymous";class k extends h.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new h.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_patchApp(a){(0,h.isWrapped)(a.use)||this._wrap(a,"use",this._patchUse.bind(this)),(0,h.isWrapped)(a.handle)||this._wrap(a,"handle",this._patchHandle.bind(this))}_patchConstructor(a){let b=this;return function(...c){let d=a.apply(this,c);return b._patchApp(d),d}}_patchNext(a,b){return function(c){let d=a.apply(this,[c]);return b(),d}}_startSpan(a,b){let d,e,g;a?(d=f.ConnectTypes.REQUEST_HANDLER,g=f.ConnectNames.REQUEST_HANDLER,e=a):(d=f.ConnectTypes.MIDDLEWARE,g=f.ConnectNames.MIDDLEWARE,e=b.name||c.ANONYMOUS_NAME);let h=`${g} - ${e}`,j={attributes:{[i.ATTR_HTTP_ROUTE]:a.length>0?a:"/",[f.AttributeNames.CONNECT_TYPE]:d,[f.AttributeNames.CONNECT_NAME]:e}};return this.tracer.startSpan(h,j)}_patchMiddleware(a,b){let f=this,g=4===b.length;function h(){if(!f.isEnabled())return b.apply(this,arguments);let[h,i,k]=g?[1,2,3]:[0,1,2],l=arguments[h],m=arguments[i],n=arguments[k];(0,j.replaceCurrentStackRoute)(l,a);let o=(0,e.getRPCMetadata)(d.context.active());a&&o?.type===e.RPCType.HTTP&&(o.route=(0,j.generateRoute)(l));let p="";p=a?`request handler - ${a}`:`middleware - ${b.name||c.ANONYMOUS_NAME}`;let q=f._startSpan(a,b);f._diag.debug("start span",p);let r=!1;function s(){r?f._diag.debug(`span ${q.name} - already finished`):(r=!0,f._diag.debug(`finishing span ${q.name}`),q.end()),m.removeListener("close",s)}return m.addListener("close",s),arguments[k]=f._patchNext(n,s),b.apply(this,arguments)}return Object.defineProperty(h,"length",{value:b.length,writable:!1,configurable:!0}),h}_patchUse(a){let b=this;return function(...c){let d=c[c.length-1],e=c[c.length-2]||"";return c[c.length-1]=b._patchMiddleware(e,d),a.apply(this,c)}}_patchHandle(a){let b=this;return function(){let[c,d]=[0,2],e=arguments[c],f=arguments[d],g=(0,j.addNewStackLayer)(e);return"function"==typeof f&&(arguments[d]=b._patchOut(f,g)),a.apply(this,arguments)}}_patchOut(a,b){return function(...c){return b(),Reflect.apply(a,this,c)}}}c.ConnectInstrumentation=k},590396,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectTypes=c.ConnectNames=c.AttributeNames=c.ANONYMOUS_NAME=c.ConnectInstrumentation=void 0;var d=a.r(822198);Object.defineProperty(c,"ConnectInstrumentation",{enumerable:!0,get:function(){return d.ConnectInstrumentation}}),Object.defineProperty(c,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return d.ANONYMOUS_NAME}});var e=a.r(571897);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}}),Object.defineProperty(c,"ConnectNames",{enumerable:!0,get:function(){return e.ConnectNames}}),Object.defineProperty(c,"ConnectTypes",{enumerable:!0,get:function(){return e.ConnectTypes}})},89709,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(590396),e=a.r(97153),f=a.r(829770),g="Connect",h=f.generateInstrumentOnce(g,()=>new d.ConnectInstrumentation);function i(a,b,c,d){e.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),d(a)}c.connectIntegration=e.defineIntegration(()=>({name:g,setupOnce(){h()}})),c.instrumentConnect=h,c.setupConnectErrorHandler=a=>{a.use(i);let b=e.getClient();b&&b.on("spanStart",a=>{!function(a){let b=e.spanToJSON(a).data,c=b["connect.type"];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.connect`});let d=b["connect.name"];"string"==typeof d&&a.updateName(d)}(a)}),f.ensureIsWrapped(a.use,"connect")}},489149,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},1789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SUPPORTED_VERSIONS=c.MODULE_NAME=void 0,c.MODULE_NAME="knex",c.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},453173,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_SQLITE=c.ATTR_NET_TRANSPORT=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.ATTR_NET_TRANSPORT="net.transport",c.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},152691,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.extractTableName=c.extractPortFromConnectionString=c.extractHostFromConnectionString=c.extractDatabaseFromConnectionString=c.limitLength=c.getName=c.mapSystem=c.otelExceptionFromKnexError=c.getFormatter=void 0;let d=a.r(357223),e=a.r(453173);c.getFormatter=a=>{if(a){if(a.client){if(a.client._formatQuery)return a.client._formatQuery.bind(a.client);else if(a.client.SqlString)return a.client.SqlString.format.bind(a.client.SqlString)}if(a.builder)return a.builder.toString.bind(a.builder)}return()=>""},c.otelExceptionFromKnexError=function(a,b){return a&&a instanceof Error?{message:b,code:a.code,stack:a.stack,name:a.name}:a};let f=new Map([["sqlite3",e.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",d.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);c.mapSystem=a=>f.get(a)||a,c.getName=(a,b,c)=>b?c?`${b} ${a}.${c}`:`${b} ${a}`:a,c.limitLength=(a,b)=>"string"==typeof a&&"number"==typeof b&&0{if(a)try{return new URL(a).pathname?.replace(/^\//,"")||void 0}catch{return}},c.extractHostFromConnectionString=a=>{if(a)try{return new URL(a).hostname||void 0}catch{return}},c.extractPortFromConnectionString=a=>{if(a)try{let b=new URL(a).port;return b?parseInt(b,10):void 0}catch{return}},c.extractTableName=a=>{let b=a?._single?.table;return"object"==typeof b?(0,c.extractTableName)(b):b}},645449,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;let d=a.r(854230),e=a.r(489149),f=a.r(1789),g=a.r(621472),h=a.r(152691),i=a.r(357223),j=a.r(453173),k=Symbol("opentelemetry.instrumentation-knex.context"),l={maxQueryLength:1022,requireParentSpan:!1};class m extends g.InstrumentationBase{_semconvStability;constructor(a={}){super(e.PACKAGE_NAME,e.PACKAGE_VERSION,{...l,...a}),this._semconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new g.InstrumentationNodeModuleDefinition(f.MODULE_NAME,f.SUPPORTED_VERSIONS);return a.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),a}getRunnerNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/runner.js`,f.SUPPORTED_VERSIONS,(a,b)=>(this.ensureWrapped(a.prototype,"query",this.createQueryWrapper(b)),a),(a,b)=>(this._unwrap(a.prototype,"query"),a))}getClientNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/client.js`,f.SUPPORTED_VERSIONS,a=>(this.ensureWrapped(a.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"raw",this.storeContext.bind(this)),a),a=>(this._unwrap(a.prototype,"queryBuilder"),this._unwrap(a.prototype,"schemaBuilder"),this._unwrap(a.prototype,"raw"),a))}createQueryWrapper(a){let b=this;return function(c){return function(e){let f=this.client.config,l=h.extractTableName(this.builder),m=e?.method,n=f?.connection?.connectionString,o=f?.connection?.filename||f?.connection?.database||h.extractDatabaseFromConnectionString(n),{maxQueryLength:p}=b.getConfig(),q={"knex.version":a},r=f?.connection?.filename===":memory:"?"inproc":void 0;if(b._semconvStability&g.SemconvStability.OLD&&Object.assign(q,{[j.ATTR_DB_SYSTEM]:h.mapSystem(this.client.driverName),[j.ATTR_DB_SQL_TABLE]:l,[j.ATTR_DB_OPERATION]:m,[j.ATTR_DB_USER]:f?.connection?.user,[j.ATTR_DB_NAME]:o,[j.ATTR_NET_PEER_NAME]:f?.connection?.host??h.extractHostFromConnectionString(n),[j.ATTR_NET_PEER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n),[j.ATTR_NET_TRANSPORT]:r}),b._semconvStability&g.SemconvStability.STABLE&&Object.assign(q,{[i.ATTR_DB_SYSTEM_NAME]:h.mapSystem(this.client.driverName),[i.ATTR_DB_COLLECTION_NAME]:l,[i.ATTR_DB_OPERATION_NAME]:m,[i.ATTR_DB_NAMESPACE]:o,[i.ATTR_SERVER_ADDRESS]:f?.connection?.host??h.extractHostFromConnectionString(n),[i.ATTR_SERVER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n)}),p){let a=h.limitLength(e?.sql,p);b._semconvStability&g.SemconvStability.STABLE&&(q[i.ATTR_DB_QUERY_TEXT]=a),b._semconvStability&g.SemconvStability.OLD&&(q[j.ATTR_DB_STATEMENT]=a)}let s=this.builder[k]||d.context.active(),t=d.trace.getSpan(s),u=t&&d.trace.isSpanContextValid(t.spanContext());if(b._config.requireParentSpan&&!u)return c.bind(this)(...arguments);let v=b.tracer.startSpan(h.getName(o,m,l),{kind:d.SpanKind.CLIENT,attributes:q},s),w=d.trace.setSpan(d.context.active(),v);return d.context.with(w,c,this,...arguments).then(a=>(v.end(),a)).catch(a=>{let b=h.getFormatter(this)(e.sql,e.bindings||[]),c=a.message.replace(b+" - ",""),f=h.otelExceptionFromKnexError(a,c);throw v.recordException(f),v.setStatus({code:d.SpanStatusCode.ERROR,message:c}),v.end(),a})}}}storeContext(a){return function(){let b=a.apply(this,arguments);return Object.defineProperty(b,k,{value:d.context.active()}),b}}ensureWrapped(a,b,c){(0,g.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,c)}}c.KnexInstrumentation=m},82600,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;var d=a.r(645449);Object.defineProperty(c,"KnexInstrumentation",{enumerable:!0,get:function(){return d.KnexInstrumentation}})},722836,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(82600),e=a.r(97153),f=a.r(829770),g="Knex",h=f.generateInstrumentOnce(g,()=>new d.KnexInstrumentation({requireParentSpan:!0})),i=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{data:b}=e.spanToJSON(a);"knex.version"in b&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});c.instrumentKnex=h,c.knexIntegration=i},724445,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MSSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MSSQL="mssql"},99286,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.once=c.getSpanName=void 0,c.getSpanName=function(a,b,c,d){return"execBulkLoad"===a&&d&&b?`${a} ${d} ${b}`:"callProcedure"===a?b?`${a} ${c} ${b}`:`${a} ${c}`:b?`${a} ${b}`:`${a}`},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}}},348421,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},511311,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=c.INJECTED_CTX=void 0;let d=a.r(854230),e=a.r(427699),f=a.r(621472),g=a.r(357223),h=a.r(724445),i=a.r(99286),j=a.r(348421),k=Symbol("opentelemetry.instrumentation-tedious.current-database");c.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let l=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function m(a){Object.defineProperty(this,k,{value:a,writable:!0})}class n extends f.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,f.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new f.InstrumentationNodeModuleDefinition(n.COMPONENT,[">=1.11.0 <20"],a=>{let b=a.Connection.prototype;for(let c of l)(0,f.isWrapped)(b[c])&&this._unwrap(b,c),this._wrap(b,c,this._patchQuery(c,a));return(0,f.isWrapped)(b.connect)&&this._unwrap(b,"connect"),this._wrap(b,"connect",this._patchConnect),a},a=>{if(void 0===a)return;let b=a.Connection.prototype;for(let a of l)this._unwrap(b,a);this._unwrap(b,"connect")})]}_patchConnect(a){return function(){return m.call(this,this.config?.options?.database),this.removeListener("databaseChange",m),this.on("databaseChange",m),this.once("end",()=>{this.removeListener("databaseChange",m)}),a.apply(this,arguments)}}_buildTraceparent(a){let b=a.spanContext();return`00-${b.traceId}-${b.spanId}-0${Number(b.traceFlags||d.TraceFlags.NONE).toString(16)}`}_injectContextInfo(a,b,d){return new Promise(e=>{try{let f=new b.Request("set context_info @opentelemetry_traceparent",a=>{e()});Object.defineProperty(f,c.INJECTED_CTX,{value:!0});let g=Buffer.from(d,"utf8");f.addParameter("opentelemetry_traceparent",b.TYPES.VarBinary,g,{length:g.length}),a.execSql(f)}catch{e()}})}_shouldInjectFor(a){return"execSql"===a||"execSqlBatch"===a||"callProcedure"===a||"execute"===a}_patchQuery(a,b){return j=>{let l=this;function m(m){if(m?.[c.INJECTED_CTX])return j.apply(this,arguments);if(!(m instanceof e.EventEmitter))return l._diag.warn(`Unexpected invocation of patched ${a} method. Span not recorded`),j.apply(this,arguments);let n=0,o=0,p=()=>o++,q=()=>n++,r=this[k],s="sp_prepare"===m.sqlTextOrProcedure&&m.parametersByName?.stmt?.value?m.parametersByName.stmt.value:m.sqlTextOrProcedure,t={};l._dbSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_DB_SYSTEM]=h.DB_SYSTEM_VALUE_MSSQL,t[h.ATTR_DB_NAME]=r,t[h.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,t[h.ATTR_DB_STATEMENT]=s,t[h.ATTR_DB_SQL_TABLE]=m.table),l._dbSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_DB_NAMESPACE]=r,t[g.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,t[g.ATTR_DB_QUERY_TEXT]=s,t[g.ATTR_DB_COLLECTION_NAME]=m.table),l._netSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_NET_PEER_NAME]=this.config?.server,t[h.ATTR_NET_PEER_PORT]=this.config?.options?.port),l._netSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_SERVER_ADDRESS]=this.config?.server,t[g.ATTR_SERVER_PORT]=this.config?.options?.port);let u=l.tracer.startSpan((0,i.getSpanName)(a,r,s,m.table),{kind:d.SpanKind.CLIENT,attributes:t}),v=(0,i.once)(a=>{m.removeListener("done",p),m.removeListener("doneInProc",p),m.removeListener("doneProc",q),m.removeListener("error",v),this.removeListener("end",v),u.setAttribute("tedious.procedure_count",n),u.setAttribute("tedious.statement_count",o),a&&u.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),u.end()});m.on("done",p),m.on("doneInProc",p),m.on("doneProc",q),m.once("error",v),this.on("end",v),"function"==typeof m.callback?l._wrap(m,"callback",l._patchCallbackQuery(v)):l._diag.error("Expected request.callback to be a function");let w=()=>d.context.with(d.trace.setSpan(d.context.active(),u),j,this,...arguments);if(!(l.getConfig().enableTraceContextPropagation&&l._shouldInjectFor(a)))return w();let x=l._buildTraceparent(u);l._injectContextInfo(this,b,x).finally(w)}return Object.defineProperty(m,"length",{value:j.length,writable:!1}),m}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c),b.apply(this,arguments)}}}c.TediousInstrumentation=n},734036,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=void 0;var d=a.r(511311);Object.defineProperty(c,"TediousInstrumentation",{enumerable:!0,get:function(){return d.TediousInstrumentation}})},441418,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(734036),e=a.r(97153),f=a.r(829770),g=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),h="Tedious",i=f.generateInstrumentOnce(h,()=>new d.TediousInstrumentation({})),j=e.defineIntegration(()=>{let a;return{name:h,setupOnce(){let b=i();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{description:b,data:c}=e.spanToJSON(a);if(!b||"mssql"!==c["db.system"])return;let d=b.split(" ")[0]||"";g.has(d)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});c.instrumentTedious=i,c.tediousIntegration=j},93496,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},779155,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(93496),g="generic-pool";class h extends e.InstrumentationBase{_isDisabled=!1;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition(g,[">=3.0.0 <4"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquirePatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.4.0 <3"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <2.4"],a=>(this._isDisabled=!1,(0,e.isWrapped)(a.Pool)&&this._unwrap(a,"Pool"),this._wrap(a,"Pool",this._poolWrapper.bind(this)),a),a=>(this._isDisabled=!0,a))]}_acquirePatcher(a){let b=this;return function(...c){let e=d.context.active(),f=b.tracer.startSpan("generic-pool.acquire",{},e);return d.context.with(d.trace.setSpan(e,f),()=>a.call(this,...c).then(a=>(f.end(),a),a=>{throw f.recordException(a),f.end(),a}))}}_poolWrapper(a){let b=this;return function(){let c=a.apply(this,arguments);return b._wrap(c,"acquire",b._acquireWithCallbacksPatcher.bind(b)),c}}_acquireWithCallbacksPatcher(a){let b=this;return function(c,e){if(b._isDisabled)return a.call(this,c,e);let f=d.context.active(),g=b.tracer.startSpan("generic-pool.acquire",{},f);return d.context.with(d.trace.setSpan(f,g),()=>{a.call(this,(a,b)=>{if(g.end(),c)return c(a,b)},e)})}}}c.GenericPoolInstrumentation=h},790504,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;var d=a.r(779155);Object.defineProperty(c,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return d.GenericPoolInstrumentation}})},975446,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(790504),e=a.r(97153),f=a.r(829770),g="GenericPool",h=f.generateInstrumentOnce(g,()=>new d.GenericPoolInstrumentation({}));c.genericPoolIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let b=e.spanToJSON(a).description;("generic-pool.aquire"===b||"generic-pool.acquire"===b)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),c.instrumentGenericPool=h},915181,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.31.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},366750,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;let d=a.r(621472),e=a.r(854230),f=a.r(915181),g="dataloader";function h(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class i extends d.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new d.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <3"],a=>{let b=h(a);return this._patchLoad(b.prototype),this._patchLoadMany(b.prototype),this._patchPrime(b.prototype),this._patchClear(b.prototype),this._patchClearAll(b.prototype),this._getPatchedConstructor(b)},a=>{let b=h(a);["load","loadMany","prime","clear","clearAll"].forEach(a=>{(0,d.isWrapped)(b.prototype[a])&&this._unwrap(b.prototype,a)})})]}shouldCreateSpans(){let a=this.getConfig();return void 0!==e.trace.getSpan(e.context.active())||!a.requireParentSpan}getSpanName(a,b){let c=a.name;return null==c?`${g}.${b}`:`${g}.${b} ${c}`}_wrapBatchLoadFn(a){let b=this;return function(...c){if(!b.isEnabled()||!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"batch"),{links:this._batch?.spanLinks},d);return e.context.with(e.trace.setSpan(d,f),()=>a.apply(this,c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a}))}}_getPatchedConstructor(a){let b=this,c=a.prototype;if(!b.isEnabled())return a;function e(...c){return"function"==typeof c[0]&&((0,d.isWrapped)(c[0])&&b._unwrap(c,0),c[0]=b._wrapBatchLoadFn(c[0])),a.apply(this,c)}return e.prototype=c,e}_patchLoad(a){(0,d.isWrapped)(a.load)&&this._unwrap(a,"load"),this._wrap(a,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"load"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>{let b=a.call(this,...c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:f.spanContext()})),b})}}_patchLoadMany(a){(0,d.isWrapped)(a.loadMany)&&this._unwrap(a,"loadMany"),this._wrap(a,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"loadMany"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c).then(a=>(f.end(),a)))}}_patchPrime(a){(0,d.isWrapped)(a.prime)&&this._unwrap(a,"prime"),this._wrap(a,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"prime"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClear(a){(0,d.isWrapped)(a.clear)&&this._unwrap(a,"clear"),this._wrap(a,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clear"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClearAll(a){(0,d.isWrapped)(a.clearAll)&&this._unwrap(a,"clearAll"),this._wrap(a,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clearAll"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}}c.DataloaderInstrumentation=i},430363,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;var d=a.r(366750);Object.defineProperty(c,"DataloaderInstrumentation",{enumerable:!0,get:function(){return d.DataloaderInstrumentation}})},235153,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(430363),e=a.r(97153),f=a.r(829770),g="Dataloader",h=f.generateInstrumentOnce(g,()=>new d.DataloaderInstrumentation({requireParentSpan:!0}));c.dataloaderIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>{b.on("spanStart",a=>{let b=e.spanToJSON(a);b.description?.startsWith("dataloader")&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===b.description||"dataloader.loadMany"===b.description||"dataloader.batch"===b.description)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),c.instrumentDataloader=h},73198,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION=void 0,c.ATTR_MESSAGING_OPERATION="messaging.operation",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port"},638354,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_MESSAGING_CONVERSATION_ID=c.OLD_ATTR_MESSAGING_MESSAGE_ID=c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=c.ATTR_MESSAGING_URL=c.ATTR_MESSAGING_PROTOCOL_VERSION=c.ATTR_MESSAGING_PROTOCOL=c.MESSAGING_OPERATION_VALUE_PROCESS=c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=c.ATTR_MESSAGING_DESTINATION_KIND=c.ATTR_MESSAGING_DESTINATION=void 0,c.ATTR_MESSAGING_DESTINATION="messaging.destination",c.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",c.MESSAGING_OPERATION_VALUE_PROCESS="process",c.ATTR_MESSAGING_PROTOCOL="messaging.protocol",c.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",c.ATTR_MESSAGING_URL="messaging.url",c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",c.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",c.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},677887,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.DEFAULT_CONFIG=c.EndOperation=void 0,(d=c.EndOperation||(c.EndOperation={})).AutoAck="auto ack",d.Ack="ack",d.AckAll="ackAll",d.Reject="reject",d.Nack="nack",d.NackAll="nackAll",d.ChannelClosed="channel closed",d.ChannelError="channel error",d.InstrumentationTimeout="instrumentation timeout",c.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},722650,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isConfirmChannelTracing=c.unmarkConfirmChannelTracing=c.markConfirmChannelTracing=c.getConnectionAttributesFromUrl=c.getConnectionAttributesFromServer=c.normalizeExchange=c.CONNECTION_ATTRIBUTES=c.CHANNEL_CONSUME_TIMEOUT_TIMER=c.CHANNEL_SPANS_NOT_ENDED=c.MESSAGE_STORED_SPAN=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(73198),h=a.r(638354);c.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),c.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),c.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),c.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let i=(0,d.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");c.normalizeExchange=a=>""!==a?a:"";let j=(a,b)=>a||("AMQP"===b?5672:5671),k=a=>{let b=a||"amqp";return(b.endsWith(":")?b.substring(0,b.length-1):b).toUpperCase()},l=(a,b,c,e)=>c?{[b]:c}:(d.diag.error(`amqplib instrumentation: could not extract connection attribute ${e} from user supplied url`,{url:a}),{});c.getConnectionAttributesFromServer=a=>{let b=a.serverProperties.product?.toLowerCase?.();return b?{[g.ATTR_MESSAGING_SYSTEM]:b}:{}},c.getConnectionAttributesFromUrl=(a,b)=>{let c={[h.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(a=a||"amqp://localhost")){let d=a,i=k(d?.protocol);Object.assign(c,{...l(a,h.ATTR_MESSAGING_PROTOCOL,i,"protocol")});let m=d?.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(a,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(a,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(d.port,i);b&e.SemconvStability.OLD&&Object.assign(c,l(a,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(a,f.ATTR_SERVER_PORT,n,"port"))}else{let i=a.replace(/:[^:@/]*@/,":***@");c[h.ATTR_MESSAGING_URL]=i;try{let a=new URL(i),d=k(a.protocol);Object.assign(c,{...l(i,h.ATTR_MESSAGING_PROTOCOL,d,"protocol")});let m=a.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(i,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(i,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(a.port?parseInt(a.port):void 0,d);b&e.SemconvStability.OLD&&Object.assign(c,l(i,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(i,f.ATTR_SERVER_PORT,n,"port"))}catch(a){d.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:i,err:a})}}return c},c.markConfirmChannelTracing=a=>a.setValue(i,!0),c.unmarkConfirmChannelTracing=a=>a.deleteValue(i),c.isConfirmChannelTracing=a=>!0===a.getValue(i)},109866,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.61.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},232536,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AmqplibInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(73198),h=a.r(638354),i=a.r(677887),j=a.r(722650),k=a.r(109866),l=[">=0.5.5 <1"];class m extends f.InstrumentationBase{_netSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...i.DEFAULT_CONFIG,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...i.DEFAULT_CONFIG,...a})}init(){let a=new f.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),b=new f.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),c=new f.InstrumentationNodeModuleFile("amqplib/lib/connect.js",l,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new f.InstrumentationNodeModuleDefinition("amqplib",l,void 0,void 0,[a,c,b])}patchConnect(a){return a=this.unpatchConnect(a),(0,f.isWrapped)(a.connect)||this._wrap(a,"connect",this.getConnectPatch.bind(this)),a}unpatchConnect(a){return(0,f.isWrapped)(a.connect)&&this._unwrap(a,"connect"),a}patchChannelModel(a,b){return(0,f.isWrapped)(a.Channel.prototype.publish)||this._wrap(a.Channel.prototype,"publish",this.getPublishPatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.consume)||this._wrap(a.Channel.prototype,"consume",this.getConsumePatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.ack)||this._wrap(a.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,i.EndOperation.Ack)),(0,f.isWrapped)(a.Channel.prototype.nack)||this._wrap(a.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,i.EndOperation.Nack)),(0,f.isWrapped)(a.Channel.prototype.reject)||this._wrap(a.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,i.EndOperation.Reject)),(0,f.isWrapped)(a.Channel.prototype.ackAll)||this._wrap(a.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,i.EndOperation.AckAll)),(0,f.isWrapped)(a.Channel.prototype.nackAll)||this._wrap(a.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,i.EndOperation.NackAll)),(0,f.isWrapped)(a.Channel.prototype.emit)||this._wrap(a.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)||this._wrap(a.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,b)),a}unpatchChannelModel(a){return(0,f.isWrapped)(a.Channel.prototype.publish)&&this._unwrap(a.Channel.prototype,"publish"),(0,f.isWrapped)(a.Channel.prototype.consume)&&this._unwrap(a.Channel.prototype,"consume"),(0,f.isWrapped)(a.Channel.prototype.ack)&&this._unwrap(a.Channel.prototype,"ack"),(0,f.isWrapped)(a.Channel.prototype.nack)&&this._unwrap(a.Channel.prototype,"nack"),(0,f.isWrapped)(a.Channel.prototype.reject)&&this._unwrap(a.Channel.prototype,"reject"),(0,f.isWrapped)(a.Channel.prototype.ackAll)&&this._unwrap(a.Channel.prototype,"ackAll"),(0,f.isWrapped)(a.Channel.prototype.nackAll)&&this._unwrap(a.Channel.prototype,"nackAll"),(0,f.isWrapped)(a.Channel.prototype.emit)&&this._unwrap(a.Channel.prototype,"emit"),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)&&this._unwrap(a.ConfirmChannel.prototype,"publish"),a}getConnectPatch(a){let b=this;return function(c,d,e){return a.call(this,c,d,function(a,d){if(null==a){let a=(0,j.getConnectionAttributesFromUrl)(c,b._netSemconvStability),e=(0,j.getConnectionAttributesFromServer)(d);d[j.CONNECTION_ATTRIBUTES]={...a,...e}}e.apply(this,arguments)})}}getChannelEmitPatch(a){let b=this;return function(c){if("close"===c){b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelClosed,void 0);let a=this[j.CHANNEL_CONSUME_TIMEOUT_TIMER];a&&clearInterval(a),this[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===c&&b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelError,void 0);return a.apply(this,arguments)}}getAckAllPatch(a,b,c){let d=this;return function(e){return d.endAllSpansOnChannel(this,a,b,e),c.apply(this,arguments)}}getAckPatch(a,b,c){let d=this;return function(e,f,g){let h=b===i.EndOperation.Reject?f:g,k=this[j.CHANNEL_SPANS_NOT_ENDED]??[],l=k.findIndex(a=>a.msg===e);if(l<0)d.endConsumerSpan(e,a,b,h);else if(b!==i.EndOperation.Reject&&f){for(let c=0;c<=l;c++)d.endConsumerSpan(k[c].msg,a,b,h);k.splice(0,l+1)}else d.endConsumerSpan(e,a,b,h),k.splice(l,1);return c.apply(this,arguments)}}getConsumePatch(a,b){let c=this;return function(k,l,m){let n=this;if(!Object.prototype.hasOwnProperty.call(n,j.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:a}=c.getConfig();if(a){let b=setInterval(()=>{c.checkConsumeTimeoutOnChannel(n)},a);b.unref(),n[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=b}n[j.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(b){let o;if(!b)return l.call(this,b);let p=b.properties.headers??{},q=d.propagation.extract(d.ROOT_CONTEXT,p),r=b.fields?.exchange;if(c._config.useLinksForConsume){let a=q?d.trace.getSpan(q)?.spanContext():void 0;q=void 0,a&&(o=[{context:a}])}let s=c.tracer.startSpan(`${k} process`,{kind:d.SpanKind.CONSUMER,attributes:{...n?.connection?.[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:r,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:b.fields?.routingKey,[g.ATTR_MESSAGING_OPERATION]:h.MESSAGING_OPERATION_VALUE_PROCESS,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:b?.properties.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:b?.properties.correlationId},links:o},q),{consumeHook:t}=c.getConfig();t&&(0,f.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:a,msg:b}),a=>{a&&d.diag.error("amqplib instrumentation: consumerHook error",a)},!0),m?.noAck||(n[j.CHANNEL_SPANS_NOT_ENDED].push({msg:b,timeOfConsume:(0,e.hrTime)()}),b[j.MESSAGE_STORED_SPAN]=s);let u=q||d.ROOT_CONTEXT;d.context.with(d.trace.setSpan(u,s),()=>{l.call(this,b)}),m?.noAck&&(c.callConsumeEndHook(s,b,!1,i.EndOperation.AutoAck),s.end())},b.apply(this,arguments)}}getConfirmedPublishPatch(a,b){let c=this;return function(e,g,h,i,k){let{span:l,modifiedOptions:m}=c.createPublishSpan(c,e,g,this,i),{publishHook:n}=c.getConfig();n&&(0,f.safeExecuteInTheMiddle)(()=>n(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:m,isConfirmChannel:!0}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let o=(0,j.markConfirmChannelTracing)(d.context.active()),p=[...arguments];return p[3]=m,p[4]=d.context.bind((0,j.unmarkConfirmChannelTracing)(d.trace.setSpan(o,l)),function(b,j){try{k?.call(this,b,j)}finally{let{publishConfirmHook:j}=c.getConfig();j&&(0,f.safeExecuteInTheMiddle)(()=>j(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:i,isConfirmChannel:!0,confirmError:b}),a=>{a&&d.diag.error("amqplib instrumentation: publishConfirmHook error",a)},!0),b&&l.setStatus({code:d.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),l.end()}}),d.context.with(o,b.bind(this,...p))}}getPublishPatch(a,b){let c=this;return function(e,g,h,i){if((0,j.isConfirmChannelTracing)(d.context.active()))return b.apply(this,arguments);{let{span:j,modifiedOptions:k}=c.createPublishSpan(c,e,g,this,i),{publishHook:l}=c.getConfig();l&&(0,f.safeExecuteInTheMiddle)(()=>l(j,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:k,isConfirmChannel:!1}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let m=[...arguments];m[3]=k;let n=b.apply(this,m);return j.end(),n}}}createPublishSpan(a,b,c,e,f){let g=(0,j.normalizeExchange)(b),i=a.tracer.startSpan(`publish ${g}`,{kind:d.SpanKind.PRODUCER,attributes:{...e.connection[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:b,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:c,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:f?.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:f?.correlationId}}),k=f??{};return k.headers=k.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),i),k.headers),{span:i,modifiedOptions:k}}endConsumerSpan(a,b,c,e){let f=a[j.MESSAGE_STORED_SPAN];f&&(!1!==b&&f.setStatus({code:d.SpanStatusCode.ERROR,message:c!==i.EndOperation.ChannelClosed&&c!==i.EndOperation.ChannelError?`${c} called on message${!0===e?" with requeue":!1===e?" without requeue":""}`:c}),this.callConsumeEndHook(f,a,b,c),f.end(),a[j.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(a,b,c,d){(a[j.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(a=>{this.endConsumerSpan(a.msg,b,c,d)}),a[j.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(a,b,c,e){let{consumeEndHook:g}=this.getConfig();g&&(0,f.safeExecuteInTheMiddle)(()=>g(a,{msg:b,rejected:c,endOperation:e}),a=>{a&&d.diag.error("amqplib instrumentation: consumerEndHook error",a)},!0)}checkConsumeTimeoutOnChannel(a){let b,c=(0,e.hrTime)(),d=a[j.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:f}=this.getConfig();for(b=0;b{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EndOperation=c.DEFAULT_CONFIG=c.AmqplibInstrumentation=void 0;var d=a.r(232536);Object.defineProperty(c,"AmqplibInstrumentation",{enumerable:!0,get:function(){return d.AmqplibInstrumentation}});var e=a.r(677887);Object.defineProperty(c,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return e.DEFAULT_CONFIG}}),Object.defineProperty(c,"EndOperation",{enumerable:!0,get:function(){return e.EndOperation}})},109041,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(129728),e=a.r(97153),f=a.r(829770),g="Amqplib",h={consumeEndHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.consumer")},publishHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.publisher")}},i=f.generateInstrumentOnce(g,()=>new d.AmqplibInstrumentation(h));c.amqplibIntegration=e.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentAmqplib=i},413990,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.INTEGRATION_NAME="VercelAI"},167991,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(413990),g=[">=3.0.0 <7"],h=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function i(a){"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)&&(function(a){for(let b of a){if(!("object"==typeof b&&null!==b&&"type"in b&&"error"in b&&"toolName"in b&&"toolCallId"in b&&"tool-error"===b.type&&b.error instanceof Error))continue;let a=e._INTERNAL_getSpanContextForToolCallId(b.toolCallId);a?e.withScope(c=>{c.setContext("trace",{trace_id:a.traceId,span_id:a.spanId}),c.setTag("vercel.ai.tool.name",b.toolName),c.setTag("vercel.ai.tool.callId",b.toolCallId),c.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):e.withScope(a=>{a.setTag("vercel.ai.tool.name",b.toolName),a.setTag("vercel.ai.tool.callId",b.toolCallId),a.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(a.content),j(a.content))}function j(a){for(let b of a)"object"==typeof b&&null!==b&&"toolCallId"in b&&"string"==typeof b.toolCallId&&e._INTERNAL_cleanupToolCallSpanContext(b.toolCallId)}function k(a,b,c,d){return{recordInputs:a?.recordInputs!==void 0?a.recordInputs:void 0!==b.recordInputs?b.recordInputs:!0===c||d,recordOutputs:a?.recordOutputs!==void 0?a.recordOutputs:void 0!==b.recordOutputs?b.recordOutputs:!0===c||d}}class l extends d.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(a={}){super("@sentry/instrumentation-vercel-ai",e.SDK_VERSION,a),l.prototype.__init.call(this),l.prototype.__init2.call(this)}init(){return new d.InstrumentationNodeModuleDefinition("ai",g,this._patch.bind(this))}callWhenPatched(a){this._isPatched?a():this._callbacks.push(a)}_patch(a){this._isPatched=!0,this._callbacks.forEach(a=>a()),this._callbacks=[];let b=a=>new Proxy(a,{apply:(a,b,c)=>{let d=c[0].experimental_telemetry||{},g=d.isEnabled,h=e.getClient(),j=h?.getIntegrationByName(f.INTEGRATION_NAME),{recordInputs:l,recordOutputs:m}=k(j?.options,d,g,!!j&&!!h?.getOptions().sendDefaultPii);return c[0].experimental_telemetry={...d,isEnabled:void 0===g||g,recordInputs:l,recordOutputs:m},e.handleCallbackErrors(()=>Reflect.apply(a,b,c),a=>{a&&"object"==typeof a&&e.addNonEnumerableProperty(a,"_sentry_active_span",e.getActiveSpan())},()=>{},a=>{i(a)})}});if("[object Module]"===Object.prototype.toString.call(a)){for(let c of h)null!=a[c]&&(a[c]=b(a[c]));return a}{let c=h.reduce((c,d)=>(null!=a[d]&&(c[d]=b(a[d])),c),{});return{...a,...c}}}}c.SentryVercelAiInstrumentation=l,c.cleanupToolCallSpanContexts=j,c.determineRecordingSettings=k,c.processToolCallResults=i},846940,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(413990),g=a.r(167991),h=e.generateInstrumentOnce(f.INTEGRATION_NAME,()=>new g.SentryVercelAiInstrumentation({})),i=d.defineIntegration((a={})=>{let b;return{name:f.INTEGRATION_NAME,options:a,setupOnce(){b=h()},afterAllSetup(c){let e;a.force??(e=c.getIntegrationByName("Modules"),!!e?.getModules?.()?.ai)?d.addVercelAiProcessors(c):b?.callWhenPatched(()=>d.addVercelAiProcessors(c))}}});c.instrumentVercelAi=h,c.vercelAIIntegration=i},921823,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=4.0.0 <7"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-openai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("openai",f,this._patch.bind(this))}_patch(a){let b=a;return b=this._patchClient(b,"OpenAI"),b=this._patchClient(b,"AzureOpenAI")}_patchClient(a,b){let c=a[b];if(!c)return a;let d=this.getConfig(),f=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.OPENAI_INTEGRATION_NAME))return Reflect.construct(c,a);let b=Reflect.construct(c,a);return e.instrumentOpenAiClient(b,d)};for(let a of(Object.setPrototypeOf(f,c),Object.setPrototypeOf(f.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(f,a,b)}try{a[b]=f}catch{Object.defineProperty(a,b,{value:f,writable:!0,configurable:!0,enumerable:!0})}if(a.default===c)try{a.default=f}catch{Object.defineProperty(a,"default",{value:f,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryOpenAiInstrumentation=g},245727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(921823),g=e.generateInstrumentOnce(d.OPENAI_INTEGRATION_NAME,a=>new f.SentryOpenAiInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.OPENAI_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentOpenAi=g,c.openAIIntegration=h},749490,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.19.2 <1.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-anthropic-ai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",f,this._patch.bind(this))}_patch(a){let b=a.Anthropic,c=this.getConfig(),d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentAnthropicAiClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}try{a.Anthropic=d}catch{Object.defineProperty(a,"Anthropic",{value:d,writable:!0,configurable:!0,enumerable:!0})}if(a.default===b)try{a.default=d}catch{Object.defineProperty(a,"default",{value:d,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryAnthropicAiInstrumentation=g},655203,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(749490),g=e.generateInstrumentOnce(d.ANTHROPIC_AI_INTEGRATION_NAME,a=>new f.SentryAnthropicAiInstrumentation(a));c.anthropicAIIntegration=d.defineIntegration((a={})=>({name:d.ANTHROPIC_AI_INTEGRATION_NAME,options:a,setupOnce(){g(a)}})),c.instrumentAnthropicAi=g},376746,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.10.0 <2"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-google-genai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@google/genai",f,a=>this._patch(a),a=>a,[new d.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",f,a=>this._patch(a),a=>a)])}_patch(a){let b=a.GoogleGenAI,c=this.getConfig();if("function"!=typeof b)return a;let d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentGoogleGenAIClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}return e.replaceExports(a,"GoogleGenAI",d),a}}c.SentryGoogleGenAiInstrumentation=g},257489,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(376746),g=e.generateInstrumentOnce(d.GOOGLE_GENAI_INTEGRATION_NAME,a=>new f.SentryGoogleGenAiInstrumentation(a));c.googleGenAIIntegration=d.defineIntegration((a={})=>({name:d.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){g(a)}})),c.instrumentGoogleGenAI=g},853076,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.1.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langchain",e.SDK_VERSION,a)}init(){let a=[];for(let b of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])a.push(new d.InstrumentationNodeModuleDefinition(b,f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile(`${b}/dist/index.cjs`,f,this._patch.bind(this),a=>a)]));return a.push(new d.InstrumentationNodeModuleDefinition("langchain",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",f,this._patch.bind(this),a=>a)])),a}_patch(a){e._INTERNAL_skipAiProviderWrapping([e.OPENAI_INTEGRATION_NAME,e.ANTHROPIC_AI_INTEGRATION_NAME,e.GOOGLE_GENAI_INTEGRATION_NAME]);let b=e.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(a,b),a}_patchRunnableMethods(a,b){let c=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],d=Object.values(a.universal_exports??a).find(a=>"function"==typeof a&&c.includes(a.name));if(!d)return;let e=d.prototype;if(!e.__sentry_patched__)for(let a of(e.__sentry_patched__=!0,["invoke","stream","batch"])){let c=e[a];"function"==typeof c&&(e[a]=function(a,b,c){return new Proxy(a,{apply(a,c,d){var e,f;let g=d[1];(!g||"object"!=typeof g||Array.isArray(g))&&(g={},d[1]=g);let h=(e=g.callbacks,f=b,e?Array.isArray(e)?e.includes(f)?e:[...e,f]:"object"==typeof e?[e,f]:e:[f]);return g.callbacks=h,Reflect.apply(a,c,d)}})}(c,b))}}}c.SentryLangChainInstrumentation=g},301180,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(853076),g=e.generateInstrumentOnce(d.LANGCHAIN_INTEGRATION_NAME,a=>new f.SentryLangChainInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGCHAIN_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangChain=g,c.langChainIntegration=h},411643,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.0.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langgraph",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@langchain/langgraph",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",f,this._patch.bind(this),a=>a)])}_patch(a){return a.StateGraph&&"function"==typeof a.StateGraph&&e.instrumentLangGraph(a.StateGraph.prototype,this.getConfig()),a}}c.SentryLangGraphInstrumentation=g},586973,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(411643),g=e.generateInstrumentOnce(d.LANGGRAPH_INTEGRATION_NAME,a=>new f.SentryLangGraphInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGGRAPH_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangGraph=g,c.langGraphIntegration=h},630843,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));c.buildLaunchDarklyFlagUsedHandlerShim=function(){return d.isBrowser()||d.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},c.launchDarklyIntegrationShim=e},521745,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));c.OpenFeatureIntegrationHookShim=class{constructor(){d.isBrowser()||d.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},c.openFeatureIntegrationShim=e},55267,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.statsigIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},224314,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.unleashIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},916562,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.growthbookIntegrationShim=a.r(97153).growthbookIntegration},114498,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(761095),e=a.r(854230),f=a.r(621472),g=a.r(357223);function h(a,b,c,d,e){var f,g,h,l,m,n,o,p;return i(a,c),b(a,"addDoc",(f=d,g=e,function(a){return function(b,c){let d=k(f,"addDoc",b);return g(d),j(d,()=>a(b,c))}})),b(a,"getDocs",(h=d,l=e,function(a){return function(b){let c=k(h,"getDocs",b);return l(c),j(c,()=>a(b))}})),b(a,"setDoc",(m=d,n=e,function(a){return function(b,c,d){let e=k(m,"setDoc",b.parent||b);return n(e),j(e,()=>void 0!==d?a(b,c,d):a(b,c))}})),b(a,"deleteDoc",(o=d,p=e,function(a){return function(b){let c=k(o,"deleteDoc",b.parent||b);return p(c),j(c,()=>a(b))}})),a}function i(a,b){for(let c of["addDoc","getDocs","setDoc","deleteDoc"])f.isWrapped(a[c])&&b(a,c);return a}function j(a,b){return e.context.with(e.trace.setSpan(e.context.active(),a),()=>f.safeExecuteInTheMiddle(()=>b(),b=>{b&&a.recordException(b),a.end()},!0))}function k(a,b,c){let d=a.startSpan(`${b} ${c.path}`,{kind:e.SpanKind.CLIENT});return function(a,b){let c=b.firestore.app,d=c.options,e=(b.firestore.toJSON()||{}).settings||{},f={[g.ATTR_DB_COLLECTION_NAME]:b.path,[g.ATTR_DB_NAMESPACE]:c.name,[g.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":b.type,"firebase.firestore.options.projectId":d.projectId,"firebase.firestore.options.appId":d.appId,"firebase.firestore.options.messagingSenderId":d.messagingSenderId,"firebase.firestore.options.storageBucket":d.storageBucket},{address:h,port:i}=l(e);h&&(f[g.ATTR_SERVER_ADDRESS]=h),i&&(f[g.ATTR_SERVER_PORT]=i),a.setAttributes(f)}(d,c),d.setAttribute(g.ATTR_DB_OPERATION_NAME,b),d}function l(a){let b,c;if("string"==typeof a.host)if(a.host.startsWith("[")){if(a.host.endsWith("]"))b=a.host.replace(/^\[|\]$/g,"");else if(a.host.includes("]:")){let d=a.host.lastIndexOf(":");-1!==d&&(b=a.host.slice(1,d).replace(/^\[|\]$/g,""),c=a.host.slice(d+1))}}else if(d.isIPv6(a.host))b=a.host;else{let d=a.host.lastIndexOf(":");-1!==d?(b=a.host.slice(0,d),c=a.host.slice(d+1)):b=a.host}return{address:b,port:c?parseInt(c,10):void 0}}c.getPortAndAddress=l,c.patchFirestore=function(a,b,c,d,g){let j=()=>{},k=g.firestoreSpanCreationHook;"function"==typeof k&&(j=a=>{f.safeExecuteInTheMiddle(()=>k(a),a=>{a&&e.diag.error(a?.message)},!0)});let l=new f.InstrumentationNodeModuleDefinition("@firebase/firestore",b,b=>h(b,c,d,a,j));for(let e of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])l.files.push(new f.InstrumentationNodeModuleFile(e,b,b=>h(b,c,d,a,j),a=>i(a,d)));return l}},10223,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472);function f(a,b,c){return function(e){return function(...f){let g="function"==typeof f[0]?f[0]:f[1],h="function"==typeof f[0]?void 0:f[0];if(!g)return e.call(this,...f);let i=async function(...e){let f=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",h=a.startSpan(`firebase.function.${c}`,{kind:d.SpanKind.SERVER}),i={"faas.name":f,"faas.trigger":c,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(i["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(i["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),h.setAttributes(i),b?.requestHook?.(h),d.context.with(d.trace.setSpan(d.context.active(),h),async()=>{let a,c;try{c=await g.apply(this,e)}catch(b){a=b}if(b?.responseHook?.(h,a),a&&h.recordException(a),h.end(),a)throw await b?.errorHook?.(h,a),a;return c})};return h?e.call(this,h,i):e.call(this,i)}}}function g(a,b){for(let c of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])e.isWrapped(a[c])&&b(a,c);return a}c.patchFunctions=function(a,b,c,h,i){let j=()=>{},k=()=>{},l=i.functions?.errorHook,m=i.functions?.requestHook,n=i.functions?.responseHook;"function"==typeof n&&(k=(a,b)=>{e.safeExecuteInTheMiddle(()=>n(a,b),a=>{a&&d.diag.error(a?.message)},!0)}),"function"==typeof m&&(j=a=>{e.safeExecuteInTheMiddle(()=>m(a),a=>{a&&d.diag.error(a?.message)},!0)});let o=new e.InstrumentationNodeModuleDefinition("firebase-functions",b);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:d,triggerType:i})=>{o.files.push(new e.InstrumentationNodeModuleFile(d,b,b=>(function(a,b,c,d,e,h){switch(g(a,c),h){case"function":b(a,"onRequest",f(d,e,"http.request")),b(a,"onCall",f(d,e,"http.call"));break;case"firestore":b(a,"onDocumentCreated",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdated",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeleted",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWritten",f(d,e,"firestore.document.written")),b(a,"onDocumentCreatedWithAuthContext",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdatedWithAuthContext",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeletedWithAuthContext",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWrittenWithAuthContext",f(d,e,"firestore.document.written"));break;case"scheduler":b(a,"onSchedule",f(d,e,"scheduler.scheduled"));break;case"storage":b(a,"onObjectFinalized",f(d,e,"storage.object.finalized")),b(a,"onObjectArchived",f(d,e,"storage.object.archived")),b(a,"onObjectDeleted",f(d,e,"storage.object.deleted")),b(a,"onObjectMetadataUpdated",f(d,e,"storage.object.metadataUpdated"))}return a})(b,c,h,a,{requestHook:j,responseHook:k,errorHook:l},i),a=>g(a,h)))}),o},c.patchV2Functions=f},770392,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(114498),g=a.r(10223),h={},i=[">=3.0.0 <5"],j=[">=6.0.0 <7"];class k extends d.InstrumentationBase{constructor(a=h){super("@sentry/instrumentation-firebase",e.SDK_VERSION,a)}setConfig(a={}){super.setConfig({...h,...a})}init(){let a=[];return a.push(f.patchFirestore(this.tracer,i,this._wrap,this._unwrap,this.getConfig())),a.push(g.patchFunctions(this.tracer,j,this._wrap,this._unwrap,this.getConfig())),a}}c.FirebaseInstrumentation=k},884348,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(770392),g="Firebase",h={firestoreSpanCreationHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.firestore"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.functions"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(a,b)=>{b&&(d.captureException(b,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d.flush(2e3))}}},i=e.generateInstrumentOnce(g,()=>new f.FirebaseInstrumentation(h));c.firebaseIntegration=d.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentFirebase=i},483727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(506596),e=a.r(109041),f=a.r(655203),g=a.r(89709),h=a.r(985248),i=a.r(946634),j=a.r(884348),k=a.r(975446),l=a.r(257489),m=a.r(804666),n=a.r(546750),o=a.r(228328),p=a.r(547611),q=a.r(326259),r=a.r(301180),s=a.r(586973),t=a.r(569473),u=a.r(464048),v=a.r(473965),w=a.r(848855),x=a.r(757586),y=a.r(245727),z=a.r(277029),A=a.r(551578),B=a.r(302889),C=a.r(745584),D=a.r(441418),E=a.r(846940);c.getAutoPerformanceIntegrations=function(){return[h.expressIntegration(),i.fastifyIntegration(),m.graphqlIntegration(),o.honoIntegration(),u.mongoIntegration(),v.mongooseIntegration(),w.mysqlIntegration(),x.mysql2Integration(),C.redisIntegration(),z.postgresIntegration(),B.prismaIntegration(),n.hapiIntegration(),q.koaIntegration(),g.connectIntegration(),D.tediousIntegration(),k.genericPoolIntegration(),p.kafkaIntegration(),e.amqplibIntegration(),t.lruMemoizerIntegration(),r.langChainIntegration(),s.langGraphIntegration(),E.vercelAIIntegration(),y.openAIIntegration(),f.anthropicAIIntegration(),l.googleGenAIIntegration(),A.postgresJsIntegration(),j.firebaseIntegration()]},c.getOpenTelemetryInstrumentationToPreload=function(){return[d.instrumentSentryHttp,d.instrumentOtelHttp,h.instrumentExpress,g.instrumentConnect,i.instrumentFastify,i.instrumentFastifyV3,n.instrumentHapi,o.instrumentHono,p.instrumentKafka,q.instrumentKoa,t.instrumentLruMemoizer,u.instrumentMongo,v.instrumentMongoose,w.instrumentMysql,x.instrumentMysql2,z.instrumentPostgres,n.instrumentHapi,m.instrumentGraphql,C.instrumentRedis,D.instrumentTedious,k.instrumentGenericPool,e.instrumentAmqplib,r.instrumentLangChain,E.instrumentVercelAi,y.instrumentOpenAi,A.instrumentPostgresJs,j.instrumentFirebase,f.instrumentAnthropicAi,l.instrumentGoogleGenAI,s.instrumentLangGraph]}},636371,a=>{"use strict";let b;a.s([],433629),a.i(433629);var c=a.i(385603),d=a.i(432238),e=a.i(291723),f=a.i(970544);let g=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(a){let b={},d=(0,f.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),g=(0,f.getStringFromEnv)("OTEL_SERVICE_NAME");if(d)try{let a=this._parseResourceAttributes(d);Object.assign(b,a)}catch(a){c.diag.debug(`EnvDetector failed: ${a instanceof Error?a.message:a}`)}return g&&(b[e.ATTR_SERVICE_NAME]=g),{attributes:b}}_parseResourceAttributes(a){if(!a)return{};let b={};for(let c of a.split(this._COMMA_SEPARATOR)){let a,d,e=c.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==e.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${c}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[f,g]=e,h=f.trim(),i=g.trim();if(0===h.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${c}".`);try{a=decodeURIComponent(h),d=decodeURIComponent(i)}catch(a){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${c}": ${a instanceof Error?a.message:a}`)}if(a.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${a}".`);if(d.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${a}".`);b[a]=d}return b}};var h=a.i(446786),i=a.i(605365);async function j(){if(!b)switch(i.platform){case"darwin":b=(await a.A(872097)).getMachineId;break;case"linux":b=(await a.A(992965)).getMachineId;break;case"freebsd":b=(await a.A(846524)).getMachineId;break;case"win32":b=(await a.A(189011)).getMachineId;break;default:b=(await a.A(18291)).getMachineId}return b()}let k=new class{detect(a){return{attributes:{"host.name":(0,h.hostname)(),"host.arch":(a=>{switch(a){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return a}})((0,h.arch)()),"host.id":j()}}}},l=new class{detect(a){return{attributes:{"os.type":(a=>{switch(a){case"sunos":return"solaris";case"win32":return"windows";default:return a}})((0,h.platform)()),"os.version":(0,h.release)()}}}},m=new class{detect(a){let b={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(b["process.command"]=process.argv[1]);try{let a=h.userInfo();b["process.owner"]=a.username}catch(a){c.diag.debug(`error obtaining process owner: ${a}`)}return{attributes:b}}};var n=a.i(254799);let o=new class{detect(a){return{attributes:{"service.instance.id":(0,n.randomUUID)()}}}};var p=a.i(814232);a.s(["defaultResource",()=>d.defaultResource,"defaultServiceName",()=>p.defaultServiceName,"detectResources",0,(a={})=>(a.detectors||[]).map(b=>{try{let e=(0,d.resourceFromDetectedResource)(b.detect(a));return c.diag.debug(`${b.constructor.name} found resource.`,e),e}catch(a){return c.diag.debug(`${b.constructor.name} failed: ${a.message}`),(0,d.emptyResource)()}}).reduce((a,b)=>a.merge(b),(0,d.emptyResource)()),"emptyResource",()=>d.emptyResource,"envDetector",0,g,"hostDetector",0,k,"osDetector",0,l,"processDetector",0,m,"resourceFromAttributes",()=>d.resourceFromAttributes,"serviceInstanceIdDetector",0,o],636371)},305722,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(636371),f=a.r(878176),g=a.r(357223),h=a.r(97153),i=a.r(829770),j=a.r(960535),k=a.r(560192),l=a.r(483727);function m(a,b={}){let c=new f.BasicTracerProvider({sampler:new j.SentrySampler(a),resource:e.defaultResource().merge(e.resourceFromAttributes({[g.ATTR_SERVICE_NAME]:"node",[g.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[g.ATTR_SERVICE_VERSION]:h.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new j.SentrySpanProcessor({timeout:n(a.getOptions().maxSpanWaitDuration)}),...b.spanProcessors||[]]});d.trace.setGlobalTracerProvider(c),d.propagation.setGlobalPropagator(new j.SentryPropagator);let k=new i.SentryContextManager;return d.context.setGlobalContextManager(k),[c,k.getAsyncLocalStorageLookup()]}function n(a){if(null!=a){if(a>1e6)return k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(a<=0||Number.isNaN(a)){k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return a}}c._clampSpanProcessorTimeout=n,c.initOpenTelemetry=function(a,b={}){a.getOptions().debug&&i.setupOpenTelemetryLogger();let[c,d]=m(a,b);a.traceProvider=c,a.asyncLocalStorageLookup=d},c.preloadOpenTelemetry=function(a={}){var b;let c,{debug:d}=a;d&&h.debug.enable(),i.initializeEsmLoader(),(b=a.integrations,c=l.getOpenTelemetryInstrumentationToPreload(),b?c.filter(a=>{let c=a.id;return b.some(a=>c===a||c.startsWith(`${a}.`))}):c).forEach(a=>{a(),d&&h.debug.log(`[Sentry] Preloaded ${a.id} instrumentation`)})},c.setupOtel=m},741067,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(506596),g=a.r(383093),h=a.r(483727),i=a.r(305722);function j(){return e.getDefaultIntegrations().filter(a=>"Http"!==a.name&&"NodeFetch"!==a.name).concat(f.httpIntegration(),g.nativeNodeFetchIntegration())}function k(a){return[...j(),...d.hasSpansEnabled(a)?h.getAutoPerformanceIntegrations():[]]}function l(a={},b){d.applySdkMetadata(a,"node");let c=e.init({...a,defaultIntegrations:a.defaultIntegrations??b(a)});return c&&!a.skipOpenTelemetrySetup&&(i.initOpenTelemetry(c,{spanProcessors:a.openTelemetrySpanProcessors}),e.validateOpenTelemetrySetup()),c}c.getDefaultIntegrations=k,c.getDefaultIntegrationsWithoutPerformance=j,c.init=function(a={}){return l(a,k)},c.initWithoutDefaultIntegrations=function(a={}){return l(a,()=>[])}},874208,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(506596),e=a.r(383093),f=a.r(706317),g=a.r(985248),h=a.r(946634),i=a.r(804666),j=a.r(547611),k=a.r(569473),l=a.r(464048),m=a.r(473965),n=a.r(848855),o=a.r(757586),p=a.r(745584),q=a.r(277029),r=a.r(551578),s=a.r(302889),t=a.r(546750),u=a.r(228328),v=a.r(326259),w=a.r(89709),x=a.r(722836),y=a.r(441418),z=a.r(975446),A=a.r(235153),B=a.r(109041),C=a.r(846940),D=a.r(245727),E=a.r(655203),F=a.r(257489),G=a.r(301180),H=a.r(586973),I=a.r(630843),J=a.r(521745),K=a.r(55267),L=a.r(224314),M=a.r(916562),N=a.r(884348),O=a.r(741067),P=a.r(305722),Q=a.r(483727),R=a.r(960535),S=a.r(97153),T=a.r(829770);c.httpIntegration=d.httpIntegration,c.nativeNodeFetchIntegration=e.nativeNodeFetchIntegration,c.fsIntegration=f.fsIntegration,c.expressErrorHandler=g.expressErrorHandler,c.expressIntegration=g.expressIntegration,c.setupExpressErrorHandler=g.setupExpressErrorHandler,c.fastifyIntegration=h.fastifyIntegration,c.setupFastifyErrorHandler=h.setupFastifyErrorHandler,c.graphqlIntegration=i.graphqlIntegration,c.kafkaIntegration=j.kafkaIntegration,c.lruMemoizerIntegration=k.lruMemoizerIntegration,c.mongoIntegration=l.mongoIntegration,c.mongooseIntegration=m.mongooseIntegration,c.mysqlIntegration=n.mysqlIntegration,c.mysql2Integration=o.mysql2Integration,c.redisIntegration=p.redisIntegration,c.postgresIntegration=q.postgresIntegration,c.postgresJsIntegration=r.postgresJsIntegration,c.prismaIntegration=s.prismaIntegration,c.hapiIntegration=t.hapiIntegration,c.setupHapiErrorHandler=t.setupHapiErrorHandler,c.honoIntegration=u.honoIntegration,c.setupHonoErrorHandler=u.setupHonoErrorHandler,c.koaIntegration=v.koaIntegration,c.setupKoaErrorHandler=v.setupKoaErrorHandler,c.connectIntegration=w.connectIntegration,c.setupConnectErrorHandler=w.setupConnectErrorHandler,c.knexIntegration=x.knexIntegration,c.tediousIntegration=y.tediousIntegration,c.genericPoolIntegration=z.genericPoolIntegration,c.dataloaderIntegration=A.dataloaderIntegration,c.amqplibIntegration=B.amqplibIntegration,c.vercelAIIntegration=C.vercelAIIntegration,c.openAIIntegration=D.openAIIntegration,c.anthropicAIIntegration=E.anthropicAIIntegration,c.googleGenAIIntegration=F.googleGenAIIntegration,c.langChainIntegration=G.langChainIntegration,c.langGraphIntegration=H.langGraphIntegration,c.buildLaunchDarklyFlagUsedHandler=I.buildLaunchDarklyFlagUsedHandlerShim,c.launchDarklyIntegration=I.launchDarklyIntegrationShim,c.OpenFeatureIntegrationHook=J.OpenFeatureIntegrationHookShim,c.openFeatureIntegration=J.openFeatureIntegrationShim,c.statsigIntegration=K.statsigIntegrationShim,c.unleashIntegration=L.unleashIntegrationShim,c.growthbookIntegration=M.growthbookIntegrationShim,c.firebaseIntegration=N.firebaseIntegration,c.getDefaultIntegrations=O.getDefaultIntegrations,c.getDefaultIntegrationsWithoutPerformance=O.getDefaultIntegrationsWithoutPerformance,c.init=O.init,c.initWithoutDefaultIntegrations=O.initWithoutDefaultIntegrations,c.initOpenTelemetry=P.initOpenTelemetry,c.preloadOpenTelemetry=P.preloadOpenTelemetry,c.getAutoPerformanceIntegrations=Q.getAutoPerformanceIntegrations,c.setNodeAsyncContextStrategy=R.setOpenTelemetryContextAsyncContextStrategy,c.SDK_VERSION=S.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=S.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=S.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=S.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=S.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=S.Scope,c.addBreadcrumb=S.addBreadcrumb,c.addEventProcessor=S.addEventProcessor,c.addIntegration=S.addIntegration,c.captureCheckIn=S.captureCheckIn,c.captureConsoleIntegration=S.captureConsoleIntegration,c.captureEvent=S.captureEvent,c.captureException=S.captureException,c.captureFeedback=S.captureFeedback,c.captureMessage=S.captureMessage,c.captureSession=S.captureSession,c.close=S.close,c.consoleIntegration=S.consoleIntegration,c.consoleLoggingIntegration=S.consoleLoggingIntegration,c.continueTrace=S.continueTrace,c.createConsolaReporter=S.createConsolaReporter,c.createLangChainCallbackHandler=S.createLangChainCallbackHandler,c.createTransport=S.createTransport,c.dedupeIntegration=S.dedupeIntegration,c.endSession=S.endSession,c.eventFiltersIntegration=S.eventFiltersIntegration,c.extraErrorDataIntegration=S.extraErrorDataIntegration,c.featureFlagsIntegration=S.featureFlagsIntegration,c.flush=S.flush,c.functionToStringIntegration=S.functionToStringIntegration,c.getActiveSpan=S.getActiveSpan,c.getClient=S.getClient,c.getCurrentScope=S.getCurrentScope,c.getGlobalScope=S.getGlobalScope,c.getIsolationScope=S.getIsolationScope,c.getRootSpan=S.getRootSpan,c.getSpanDescendants=S.getSpanDescendants,c.getSpanStatusFromHttpCode=S.getSpanStatusFromHttpCode,c.getTraceData=S.getTraceData,c.getTraceMetaTags=S.getTraceMetaTags,c.httpHeadersToSpanAttributes=S.httpHeadersToSpanAttributes,c.inboundFiltersIntegration=S.inboundFiltersIntegration,c.instrumentAnthropicAiClient=S.instrumentAnthropicAiClient,c.instrumentGoogleGenAIClient=S.instrumentGoogleGenAIClient,c.instrumentLangGraph=S.instrumentLangGraph,c.instrumentOpenAiClient=S.instrumentOpenAiClient,c.instrumentStateGraphCompile=S.instrumentStateGraphCompile,c.instrumentSupabaseClient=S.instrumentSupabaseClient,c.isEnabled=S.isEnabled,c.isInitialized=S.isInitialized,c.lastEventId=S.lastEventId,c.linkedErrorsIntegration=S.linkedErrorsIntegration,c.parameterize=S.parameterize,c.profiler=S.profiler,c.requestDataIntegration=S.requestDataIntegration,c.rewriteFramesIntegration=S.rewriteFramesIntegration,c.setContext=S.setContext,c.setConversationId=S.setConversationId,c.setCurrentClient=S.setCurrentClient,c.setExtra=S.setExtra,c.setExtras=S.setExtras,c.setHttpStatus=S.setHttpStatus,c.setMeasurement=S.setMeasurement,c.setTag=S.setTag,c.setTags=S.setTags,c.setUser=S.setUser,c.spanToBaggageHeader=S.spanToBaggageHeader,c.spanToJSON=S.spanToJSON,c.spanToTraceHeader=S.spanToTraceHeader,c.startInactiveSpan=S.startInactiveSpan,c.startNewTrace=S.startNewTrace,c.startSession=S.startSession,c.startSpan=S.startSpan,c.startSpanManual=S.startSpanManual,c.supabaseIntegration=S.supabaseIntegration,c.suppressTracing=S.suppressTracing,c.trpcMiddleware=S.trpcMiddleware,c.updateSpanName=S.updateSpanName,c.winterCGHeadersToDict=S.winterCGHeadersToDict,c.withActiveSpan=S.withActiveSpan,c.withIsolationScope=S.withIsolationScope,c.withMonitor=S.withMonitor,c.withScope=S.withScope,c.wrapMcpServerWithSentry=S.wrapMcpServerWithSentry,c.zodErrorsIntegration=S.zodErrorsIntegration,c.NODE_VERSION=T.NODE_VERSION,c.NodeClient=T.NodeClient,c.SentryContextManager=T.SentryContextManager,c.anrIntegration=T.anrIntegration,c.childProcessIntegration=T.childProcessIntegration,c.contextLinesIntegration=T.contextLinesIntegration,c.createGetModuleFromFilename=T.createGetModuleFromFilename,c.createSentryWinstonTransport=T.createSentryWinstonTransport,c.cron=T.cron,c.defaultStackParser=T.defaultStackParser,c.disableAnrDetectionForCallback=T.disableAnrDetectionForCallback,c.generateInstrumentOnce=T.generateInstrumentOnce,c.getSentryRelease=T.getSentryRelease,c.httpServerIntegration=T.httpServerIntegration,c.httpServerSpansIntegration=T.httpServerSpansIntegration,c.localVariablesIntegration=T.localVariablesIntegration,c.logger=T.logger,c.makeNodeTransport=T.makeNodeTransport,c.metrics=T.metrics,c.modulesIntegration=T.modulesIntegration,c.nodeContextIntegration=T.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=T.nodeRuntimeMetricsIntegration,c.onUncaughtExceptionIntegration=T.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=T.onUnhandledRejectionIntegration,c.pinoIntegration=T.pinoIntegration,c.processSessionIntegration=T.processSessionIntegration,c.spotlightIntegration=T.spotlightIntegration,c.systemErrorIntegration=T.systemErrorIntegration,c.validateOpenTelemetrySetup=T.validateOpenTelemetrySetup},98251,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(522734),f=a.r(814747),g=null,h=null;c.createRouteManifest=function(a){let b;if(a?.appDirPath)b=a.appDirPath;else{let a=process.cwd(),c=f.join(a,"app"),d=f.join(a,"src","app");e.existsSync(c)&&e.lstatSync(c).isDirectory()?b=c:e.existsSync(d)&&e.lstatSync(d).isDirectory()&&(b=d)}if(!b)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(g&&h===b&&d===a?.includeRouteGroups)return g;let{dynamicRoutes:c,staticRoutes:i,isrRoutes:j}=function a(b,c="",d=!1){let g=[],h=[],i=[];try{let k=e.readdirSync(b,{withFileTypes:!0}),l=k.find(a=>{var b;return b=a.name,"page.tsx"===b||"page.jsx"===b||"page.ts"===b||"page.js"===b});if(l){let a=d?c||"/":(c||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),j=a.includes(":"),k=f.join(b,l.name);if(function(a){try{let b=e.readFileSync(a,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(b)}catch{return!1}}(k)&&i.push(a),j){let{regex:b,paramNames:c,hasOptionalPrefix:d}=function(a){let b,c,d=a.split("/").filter(Boolean),e=[],f=[],g=!1;for(let a of d)if(a.startsWith(":")){let b=a.substring(1);if(b.endsWith("*?")){let a=b.slice(0,-2);f.push(a),g=!0}else if(b.endsWith("*")){let a=b.slice(0,-1);f.push(a),e.push("(.+)")}else f.push(b),e.push("([^/]+)")}else e.push(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(g)if(0===e.length)c="^/(.*)$";else{let a=e.join("/");c=`^/${a}(?:/(.*))?$`}else c=`^/${e.join("/")}$`;return{regex:c,paramNames:f,hasOptionalPrefix:(b=f[0],void 0!==b&&("locale"===b||"lang"===b||"language"===b))}}(a);g.push({path:a,regex:b,paramNames:c,hasOptionalPrefix:d})}else h.push({path:a})}for(let e of k)if(e.isDirectory()){var j;let k,l=f.join(b,e.name),m=e.name.startsWith("[")&&e.name.endsWith("]"),n=(k=(j=e.name).startsWith("(")&&j.endsWith(")")?d?e.name:"":m?function(a){if(a.startsWith("[[...")&&a.endsWith("]]")){let b=a.slice(5,-2);return`:${b}*?`}if(a.startsWith("[...")&&a.endsWith("]")){let b=a.slice(4,-1);return`:${b}*`}return`:${a.slice(1,-1)}`}(e.name):e.name)?`${c}/${k}`:c,o=a(l,n,d);g.push(...o.dynamicRoutes),h.push(...o.staticRoutes),i.push(...o.isrRoutes)}}catch(a){console.warn("Error building route manifest:",a)}return{dynamicRoutes:g,staticRoutes:h,isrRoutes:i}}(b,a?.basePath,a?.includeRouteGroups),k={dynamicRoutes:c,staticRoutes:i,isrRoutes:j};return g=k,h=b,d=a?.includeRouteGroups,k}},318976,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.resolveTunnelRoute=function(a){let b;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let c="string"==typeof a?a:(b=d._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${b}`);return c&&(process.env.__SENTRY_TUNNEL_ROUTE__=c),c},c.setUpTunnelRewriteRules=function(a,b){let c=a.rewrites,d=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,e=d||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",f=d||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";a.rewrites=async(...a)=>{let d={source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:e},g=[{source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:f},d];if("function"!=typeof c)return g;let h=await c(...a);return Array.isArray(h)?[...g,...h]:{...h,beforeFiles:[...g,...h.beforeFiles||[]]}}}},546626,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(874208),f=a.r(522734),g=a.r(814747),h=a.r(98251),i=a.r(53556),j=a.r(883264),k=a.r(318976),l=!1,m=!1;function n(a,b){if(!b)return a;let c=a=>"function"==typeof b?b(a):b.some(b=>d.isMatchingPattern(a,b));return{staticRoutes:a.staticRoutes.filter(a=>!c(a.path)),dynamicRoutes:a.dynamicRoutes.filter(a=>!c(a.path)),isrRoutes:a.isrRoutes.filter(a=>!c(a))}}c.filterRouteManifest=n,c.getNextMajor=function(a){if(!a)return;let{major:b}=d.parseSemver(a);return b},c.maybeCreateRouteManifest=function(a,b){if(b.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==b.routeManifestInjection&&(void 0!==b.routeManifestInjection||!b.disableManifestInjection))return n(h.createRouteManifest({basePath:a.basePath}),b.routeManifestInjection?.exclude)},c.maybeGetVercelCronsConfig=function(a){let b={config:void 0,strategy:void 0};if(!process.env.VERCEL)return b;let c=a._experimental?.vercelCronsMonitoring===!0,e=a.webpack?.automaticVercelMonitors===!0;if(!c&&!e)return b;let h=function(){try{let a=g.join(process.cwd(),"vercel.json"),b=f.readFileSync(a,"utf8"),c=JSON.parse(b).crons;if(c&&Array.isArray(c)&&c.length>0)return c;return}catch(a){if("ENOENT"===a.code)return;d.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",a);return}}();return h&&(b.config=h,c&&e?(d.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),b.strategy="spans"):c?(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),b.strategy="spans"):(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),b.strategy="wrapper")),b},c.maybeSetClientTraceMetadataOption=function(a,b){if(b){let{major:c,minor:e}=d.parseSemver(b);void 0!==c&&void 0!==e&&(c>=15||14===c&&e>=3)&&(a.experimental=a.experimental||{},a.experimental.clientTraceMetadata=["baggage","sentry-trace",...a.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},c.maybeSetInstrumentationHookOption=function(a,b){if(b&&i.requiresInstrumentationHook(b)){a.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),a.experimental={instrumentationHook:!0,...a.experimental};return}b||(a.experimental&&"instrumentationHook"in a.experimental?!1===a.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),a.experimental={instrumentationHook:!0,...a.experimental}))},c.maybeSetUpTunnelRouteRewriteRules=function(a,b){if(!b.tunnelRoute)return;if("export"===a.output){l||(l=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let c=k.resolveTunnelRoute(b.tunnelRoute);b.tunnelRoute=c||void 0,k.setUpTunnelRewriteRules(a,c)},c.resolveReleaseName=function(a){return a.release?.create!==!1?a.release?.name??e.getSentryRelease()??j.getGitRevision():a.release?.name},c.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(m||(m=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},c.warnIfMissingOnRouterTransitionStartHook=function(a){let b=j.getInstrumentationClientFileContents();void 0===b||b.includes("onRouterTransitionStart")||a.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},804312,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(53556),e=a.r(883264),f=a.r(464917),g=a.r(360366),h=a.r(546626);c.getFinalConfigObject=function(a,b){f.migrateDeprecatedWebpackOptions(b);let c=h.resolveReleaseName(b);if(h.maybeSetUpTunnelRouteRewriteRules(a,b),h.shouldReturnEarlyInExperimentalBuildMode())return a;let i=h.maybeCreateRouteManifest(a,b),j=h.maybeGetVercelCronsConfig(b);e.setUpBuildTimeVariables(a,b,c);let k=d.getNextjsVersion(),l=h.getNextMajor(k);h.maybeSetClientTraceMetadataOption(a,k),h.maybeSetInstrumentationHookOption(a,k),h.warnIfMissingOnRouterTransitionStartHook(b);let m=g.getBundlerInfo(k);g.maybeWarnAboutUnsupportedTurbopack(k,m),g.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(k,b,m);let n=g.maybeConstructTurbopackConfig(a,b,i,k,m,j),o=g.resolveUseRunAfterProductionCompileHookOption(b,m);return g.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,nextJsVersion:k,bundlerInfo:m,turboPackConfig:n,shouldUseRunAfterProductionCompileHook:o}),g.maybeEnableTurbopackSourcemaps(a,b,m),{...a,...g.getServerExternalPackagesPatch(a,l),...g.getWebpackPatch({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,routeManifest:i,nextJsVersion:k,shouldUseRunAfterProductionCompileHook:o,bundlerInfo:m,vercelCronsConfigResult:j}),...g.getTurbopackPatch(m,n)}}},114530,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(804312);c.withSentryConfig=function(a,b={}){let c=a||{};return"function"==typeof c?function(...a){let f=c.apply(this,a);return d.isThenable(f)?f.then(a=>e.getFinalConfigObject(a,b)):e.getFinalConfigObject(f,b)}:e.getFinalConfigObject(c,b)}},373328,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{"use strict";var b="";function c(a){return a.split("\n").reduce(function(a,c){var k,l,m,n=function(a){var c=d.exec(a);if(!c)return null;var f=c[2]&&0===c[2].indexOf("native"),g=c[2]&&0===c[2].indexOf("eval"),h=e.exec(c[2]);return g&&null!=h&&(c[2]=h[1],c[3]=h[2],c[4]=h[3]),{file:f?null:c[2],methodName:c[1]||b,arguments:f?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}(c)||((k=f.exec(c))?{file:k[2],methodName:k[1]||b,arguments:[],lineNumber:+k[3],column:k[4]?+k[4]:null}:null)||function(a){var c=g.exec(a);if(!c)return null;var d=c[3]&&c[3].indexOf(" > eval")>-1,e=h.exec(c[3]);return d&&null!=e&&(c[3]=e[1],c[4]=e[2],c[5]=null),{file:c[3],methodName:c[1]||b,arguments:c[2]?c[2].split(","):[],lineNumber:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}(c)||((l=j.exec(c))?{file:l[2],methodName:l[1]||b,arguments:[],lineNumber:+l[3],column:l[4]?+l[4]:null}:null)||((m=i.exec(c))?{file:m[3],methodName:m[1]||b,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return n&&a.push(n),a},[])}var d=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,e=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;a.s(["parse",()=>c])},967602,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(384899),f=a.r(373328),g=d.GLOBAL_OBJ;function h(){let a=process.env._sentryBasePath??g._sentryBasePath??"";""===a||a.match(/^\//)||(a=`/${a}`);let b=process.env.PORT||"3000";return`http://localhost:${b}${a}`}async function i(a,b={}){let c=new AbortController,e=setTimeout(()=>c.abort(),3e3);return d.suppressTracing(()=>fetch(a,{...b,signal:c.signal}).finally(()=>{clearTimeout(e)}))}async function j(a,b){try{if(!(a.file?.startsWith("webpack-internal:")||a.file?.startsWith("file:")))return null;let c=new URLSearchParams;c.append("isServer",String(!1)),c.append("isEdgeServer",String(!1)),c.append("isAppDirectory",String(!0)),c.append("errorMessage",b.toString()),Object.keys(a).forEach(b=>{c.append(b,(a[b]??"").toString())});let d=h(),e=await i(`${d}/__nextjs_original-stack-frame?${c.toString()}`);if(!e.ok||204===e.status)return null;let f=await e.json();return{originalCodeFrame:f.originalCodeFrame,originalStackFrame:f.originalStackFrame}}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}async function k(a){try{let b={frames:a.filter(a=>!!a.file).map(a=>(a.file=a.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:a.file,methodName:a.methodName??"",arguments:[],lineNumber:a.lineNumber??0,column:a.column??0,line1:a.lineNumber??0,column1:a.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},c=h(),d=await i(`${c}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok||204===d.status)return null;return(await d.json()).map(a=>({originalCodeFrame:a.value.originalCodeFrame,originalStackFrame:a.value.originalStackFrame}))}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}c.devErrorSymbolicationEventProcessor=async function a(a,b){"transaction"===a.type&&(a.spans=a.spans?.filter(a=>{let b=a.data?.["http.url"];return"string"!=typeof b||!b.includes("__nextjs_original-stack-frame")}));try{if(b.originalException&&b.originalException instanceof Error&&b.originalException.stack){let c,f=e.parse(b.originalException.stack),h=g._sentryNextJsVersion;if(!h)return a;let i=d.parseSemver(h);if(i.major>15||15===i.major&&i.minor>=2){let b=await k(f);if(null===b)return a;c=b}else c=await Promise.all(f.map(a=>j(a,b.originalException)));a.exception?.values?.[0]?.stacktrace?.frames&&(a.exception.values[0].stacktrace.frames=a.exception.values[0].stacktrace.frames.map((a,b,d)=>{let e=c[d.length-1-b];if(!e?.originalStackFrame||!e.originalCodeFrame)return{...a,platform:a.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:f,preContextLines:g,postContextLines:h}=function(a){let b,c=a.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(a=>!a.match(/^\s*\|/)).map(a=>({line:a,isErrorLine:!!a.match(/^>/)})).map(a=>({...a,line:a.line.replace(/^.*\|/,"")})),d=[],e=[],f=!1;for(let a of c)a.isErrorLine?(b=a.line,f=!0):f?e.push(a.line):d.push(a.line);return{contextLine:b,preContextLines:d,postContextLines:e}}(e.originalCodeFrame);return{...a,pre_context:g,context_line:f,post_context:h,function:e.originalStackFrame.methodName,filename:e.originalStackFrame.file?function(a){if(!a)return a;let b=a.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return b?b[1]:a}(e.originalStackFrame.file):void 0,lineno:e.originalStackFrame.lineNumber||e.originalStackFrame.line1||void 0,colno:e.originalStackFrame.column||e.originalStackFrame.column1||void 0}}))}}catch{}return a}},562293,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getVercelEnv=function(a){let b=a?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return b?`vercel-${b}`:void 0}},473132,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.ATTR_NEXT_ROUTE="next.route",c.ATTR_NEXT_SEGMENT="next.segment",c.ATTR_NEXT_SPAN_NAME="next.span_name",c.ATTR_NEXT_SPAN_TYPE="next.span_type"},268404,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",c.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",c.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},873364,(a,b,c)=>{"use strict";b.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},767685,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE:function(){return f},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="/_not-found",g=`${f}/page`,h="/_global-error",i=`${h}/page`},874492,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={APP_CLIENT_INTERNALS:function(){return ab},APP_PATHS_MANIFEST:function(){return u},APP_PATH_ROUTES_MANIFEST:function(){return v},AdapterOutputType:function(){return k},BARREL_OPTIMIZATION_PREFIX:function(){return U},BLOCKED_PAGES:function(){return P},BUILD_ID_FILE:function(){return O},BUILD_MANIFEST:function(){return w},CLIENT_PUBLIC_FILES_PATH:function(){return Q},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return R},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return _},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return aa},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ae},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return af},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ac},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ad},COMPILER_INDEXES:function(){return j},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return N},DEFAULT_RUNTIME_WEBPACK:function(){return ag},DEFAULT_SANS_SERIF_FONT:function(){return al},DEFAULT_SERIF_FONT:function(){return ak},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return K},DEV_CLIENT_PAGES_MANIFEST:function(){return G},DYNAMIC_CSS_MANIFEST:function(){return $},EDGE_RUNTIME_WEBPACK:function(){return ah},EDGE_UNSUPPORTED_NODE_APIS:function(){return aq},EXPORT_DETAIL:function(){return B},EXPORT_MARKER:function(){return A},FUNCTIONS_CONFIG_MANIFEST:function(){return x},IMAGES_MANIFEST:function(){return E},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Z},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return H},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return Y},MODERN_BROWSERSLIST_TARGET:function(){return g.default},NEXT_BUILTIN_DOCUMENT:function(){return T},NEXT_FONT_MANIFEST:function(){return z},PAGES_MANIFEST:function(){return s},PHASE_ANALYZE:function(){return m},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return r},PHASE_PRODUCTION_BUILD:function(){return n},PHASE_PRODUCTION_SERVER:function(){return o},PHASE_TEST:function(){return q},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return L},ROUTES_MANIFEST:function(){return D},RSC_MODULE_TYPES:function(){return ap},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return F},SERVER_PROPS_ID:function(){return aj},SERVER_REFERENCE_MANIFEST:function(){return W},STATIC_PROPS_ID:function(){return ai},STATIC_STATUS_PAGES:function(){return am},STRING_LITERAL_DROP_BUNDLE:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},SYSTEM_ENTRYPOINTS:function(){return ar},TRACE_OUTPUT_VERSION:function(){return an},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return J},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ao},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return t}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(463652)._(a.r(873364)),h=a.r(767685),i={client:"client",server:"server",edgeServer:"edge-server"},j={[i.client]:0,[i.server]:1,[i.edgeServer]:2};var k=((d={}).PAGES="PAGES",d.PAGES_API="PAGES_API",d.APP_PAGE="APP_PAGE",d.APP_ROUTE="APP_ROUTE",d.PRERENDER="PRERENDER",d.STATIC_FILE="STATIC_FILE",d.MIDDLEWARE="MIDDLEWARE",d);let l="phase-export",m="phase-analyze",n="phase-production-build",o="phase-production-server",p="phase-development-server",q="phase-test",r="phase-info",s="pages-manifest.json",t="webpack-stats.json",u="app-paths-manifest.json",v="app-path-routes-manifest.json",w="build-manifest.json",x="functions-config-manifest.json",y="subresource-integrity-manifest",z="next-font-manifest",A="export-marker.json",B="export-detail.json",C="prerender-manifest.json",D="routes-manifest.json",E="images-manifest.json",F="required-server-files",G="_devPagesManifest.json",H="middleware-manifest.json",I="_clientMiddlewareManifest.json",J="client-build-manifest.json",K="_devMiddlewareManifest.json",L="react-loadable-manifest.json",M="server",N=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],O="BUILD_ID",P=["/_document","/_app","/_error"],Q="public",R="static",S="__NEXT_DROP_CLIENT_FILE__",T="__NEXT_BUILTIN_DOCUMENT__",U="__barrel_optimize__",V="client-reference-manifest",W="server-reference-manifest",X="middleware-build-manifest",Y="middleware-react-loadable-manifest",Z="interception-route-rewrite-manifest",$="dynamic-css-manifest",_="main",aa=`${_}-app`,ab="app-pages-internals",ac="react-refresh",ad="webpack",ae="polyfills",af=Symbol(ae),ag="webpack-runtime",ah="edge-runtime-webpack",ai="__N_SSG",aj="__N_SSP",ak={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},al={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},am=["/500"],an=1,ao=6e3,ap={client:"client",server:"server"},aq=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ar=new Set([_,ac,aa]);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},334327,(a,b,c)=>{b.exports=a.r(874492)},929689,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(334327);c.isBuild=function(){return process.env.NEXT_PHASE===d.PHASE_PRODUCTION_BUILD}},498934,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328);async function f(){try{e.DEBUG_BUILD&&d.debug.log("Flushing events..."),await d.flush(2e3),e.DEBUG_BUILD&&d.debug.log("Done flushing events")}catch(a){e.DEBUG_BUILD&&d.debug.log("Error while flushing events:\n",a)}}function g(){let a=Symbol.for("__cloudflare-context__");return d.GLOBAL_OBJ[a]?.ctx}function h(a){g()?.waitUntil(a)}function i(){return"function"==typeof g()?.waitUntil}c.cloudflareWaitUntil=h,c.flushSafelyWithTimeout=f,c.isCloudflareWaitUntilAvailable=i,c.waitUntil=function(a){i()?h(a):d.vercelWaitUntil(a)}},723136,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);function e(a){let b=a.split("/").filter(a=>a&&!(a.startsWith("(")&&a.endsWith(")")));return b.length>0?`/${b.join("/")}`:"/"}function f(a,b,c,f){let g=f??e(a),h=c?.["x-forwarded-proto"],i=c?.["x-forwarded-host"]||c?.host;if(!h||!i)return g;let j=`${h}://${i}${g}`,k=d.parseStringToURLObject(j);return k?d.getSanitizedUrlStringFromUrlObject(k):g}function g(a){let b=a?.referer;if(b)try{let a=new URL(b);return d.getSanitizedUrlStringFromUrlObject(a)}catch{return}}c.buildUrlFromComponentRoute=f,c.extractSanitizedUrlFromRefererHeader=g,c.getSanitizedRequestUrl=function(a,b,c,d){let e=g(c);return e||f(a,b,c,d)},c.sanitizeRoutePath=e,c.substituteRouteParams=function(a,b){return a}},816617,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(723136);c.setUrlProcessingMetadata=function(a){if("transaction"!==a.type||a.contexts?.trace?.op!=="http.server"||!a.contexts?.trace?.data)return;let b=d.getClient();if(!b?.getOptions().sendDefaultPii)return;let c=a.contexts.trace.data,f=c["next.route"]||c["http.route"],g=c["http.target"];if(!f)return;let h=a.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),i=h?.sdkProcessingMetadata?.normalizedRequest?.headers,j=e.getSanitizedRequestUrl(f,void 0,i,g?.toString());j&&h?.sdkProcessingMetadata&&(h.sdkProcessingMetadata.normalizedRequest=h.sdkProcessingMetadata.normalizedRequest||{},h.sdkProcessingMetadata.normalizedRequest.url=j)}},734080,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(814747);c.distDirRewriteFramesIntegration=d.defineIntegration(({distDirName:a})=>{let b=e.resolve(a).replace(/(\/|\\)$/,""),c=new RegExp(d.escapeStringForRegex(b));return{...d.rewriteFramesIntegration({iteratee:a=>(a.filename=a.filename?.replace(c,"app:///_next"),a)}),name:"DistDirRewriteFrames"}})},943167,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.addHeadersAsAttributes=function(a,b){if(!a)return{};let c=a instanceof Headers||"object"==typeof a&&"get"in a?d.winterCGHeadersToDict(a):a,e=d.httpHeadersToSpanAttributes(c,d.getClient()?.getOptions().sendDefaultPii??!1);return b&&b.setAttributes(e),e}},398359,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(960535),g=a.r(473132),h=a.r(268404),i=e.GLOBAL_OBJ;c.dropMiddlewareTunnelRequests=function(a,b){if(e.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let c=b?.[g.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",j=b?.[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",k=b?.[g.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!c&&!j&&!k)return;let l=function(a){let b=i._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!b)return!1;let c=a[d.SEMATTRS_HTTP_TARGET];if("string"==typeof c){let a=c.split("?")[0]||"";return a===b||a.startsWith(`${b}/`)}return!1}(b||{}),m=f.isSentryRequestSpan(a);(l||m)&&a.setAttribute(h.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},858952,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(357223),f=a.r(97153),g=a.r(373328),h=a.r(473132),i=a.r(268404),j="__PAGE__",k=new WeakMap;function l(a){return"NextNodeServer.getLayoutOrPageModule"===a[h.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===a[h.ATTR_NEXT_SPAN_NAME]&&"string"==typeof a[h.ATTR_NEXT_SEGMENT]}function m({segment:a,route:b}){return a===j?`resolve page server component "${b}"`:""===a?"resolve root layout server component":`resolve layout server component "${a}"`}c.commonObjectToIsolationScope=function(a){if("object"!=typeof a||!a)return new f.Scope;{let b=k.get(a);if(b)return b;{let b=new f.Scope;return k.set(a,b),b}}},c.dropNextjsRootContext=function(){if(f.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let a=f.getActiveSpan();if(a){let b=f.getRootSpan(a),c=f.spanToJSON(b).data;c?.["next.span_type"]&&f.getRootSpan(a)?.setAttribute(i.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},c.escapeNextjsTracing=function(a){let b=f.GLOBAL_OBJ.AsyncLocalStorage;return b?(d||(d=new b),d.getStore())?a():f.startNewTrace(()=>d.run(!0,()=>a())):(g.DEBUG_BUILD&&f.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),a())},c.getEnhancedResolveSegmentSpanName=m,c.isResolveSegmentSpan=l,c.maybeEnhanceServerComponentSpanName=function(a,b,c){if(!l(b))return;let d=b[h.ATTR_NEXT_SEGMENT],g=c[e.ATTR_HTTP_ROUTE],i=m({segment:d,route:"string"==typeof g?g:""});a.updateName(i),a.setAttributes({"sentry.nextjs.ssr.function.type":d===j?"Page":"Layout","sentry.nextjs.ssr.function.route":g}),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},431385,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328),f="sentry.cron.checkInId",g="sentry.cron.monitorSlug",h="sentry.cron.startTime",i="sentry.cron.schedule";c.maybeCompleteCronCheckIn=function(a){let b=d.spanToJSON(a).data,c=b?.[f],j=b?.[g],k=b?.[h],l=b?.[i];if(!c||!j||"number"!=typeof k)return;let m=d._INTERNAL_safeDateNow()/1e3-k,n=d.spanToJSON(a).status,o=n&&"ok"!==n?"error":"ok";d.captureCheckIn({checkInId:c,monitorSlug:j,status:o,duration:m},"string"==typeof l?{maxRuntime:720,schedule:{type:"crontab",value:l}}:void 0),a.setAttribute(f,void 0),a.setAttribute(g,void 0),a.setAttribute(h,void 0),a.setAttribute(i,void 0),e.DEBUG_BUILD&&d.debug.log(`[Cron] Completed check-in for "${j}" with status "${o}"`)},c.maybeStartCronCheckIn=function(a,b){let c=function(){let a=globalThis;if(a._sentryVercelCronsConfig)try{return JSON.parse(a._sentryVercelCronsConfig)}catch{e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!c||!b)return;let j=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!j)return;let k=Array.isArray(j["user-agent"])?j["user-agent"][0]:j["user-agent"];if(!k?.includes("vercel-cron"))return;let l=c.find(a=>a.path===b);if(!l?.path||!l.schedule)return;let m=l.path,n=d._INTERNAL_safeDateNow()/1e3,o=d.captureCheckIn({monitorSlug:m,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}});e.DEBUG_BUILD&&d.debug.log(`[Cron] Started check-in for "${m}" with ID "${o}"`),a.setAttribute(f,o),a.setAttribute(g,m),a.setAttribute(h,n),a.setAttribute(i,l.schedule)}},766711,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e="messaging.system",f="messaging.destination.name",g="messaging.operation.name",h="sentry.queue.enriched";function i(a,b){let c=a[b];return Array.isArray(c)?c[0]:c}c.maybeCleanupQueueSpan=function(a){let b=d.spanToJSON(a).data;b?.[h]&&a.setAttribute(h,void 0)},c.maybeEnrichQueueConsumerSpan=function(a){let b=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!b||"com.vercel.queue.v2beta"!==(Array.isArray(b["ce-type"])?b["ce-type"][0]:b["ce-type"]))return;let c=i(b,"ce-vqsqueuename"),j=i(b,"ce-vqsmessageid"),k=i(b,"ce-vqsconsumergroup"),l=i(b,"ce-vqsdeliverycount");if(a.setAttribute(e,"vercel.queue"),a.setAttribute(g,"process"),c&&a.setAttribute(f,c),j&&a.setAttribute("messaging.message.id",j),k&&a.setAttribute("messaging.consumer.group.name",k),l){let b=parseInt(l,10);isNaN(b)||a.setAttribute("messaging.message.delivery_count",b)}a.setAttribute(h,!0)},c.maybeEnrichQueueProducerSpan=function(a){let b,c=d.spanToJSON(a).data,i=c?.["url.full"];if(!i)return;try{b=new URL(i)}catch{return}if("vercel-queue.com"!==b.hostname&&!b.hostname.endsWith(".vercel-queue.com"))return;let j=b.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!j)return;let k=decodeURIComponent(j[1]);a.setAttribute(e,"vercel.queue"),a.setAttribute(f,k),a.setAttribute(g,"send"),a.setAttribute(h,!0)}},368517,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(357223),f=a.r(97153),g=a.r(960535),h=a.r(473132),i=a.r(943167),j=a.r(398359),k=a.r(858952),l=a.r(431385),m=a.r(766711);c.handleOnSpanStart=function(a){let b=f.spanToJSON(a).data,c=f.getRootSpan(a),n=f.spanToJSON(c).data,o=a===c;if(j.dropMiddlewareTunnelRequests(a,b),"string"==typeof b?.[h.ATTR_NEXT_ROUTE]&&(n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD])&&!n?.[e.ATTR_HTTP_ROUTE]){let a=b[h.ATTR_NEXT_ROUTE].replace(/\/route$/,"");c.updateName(a),c.setAttribute(e.ATTR_HTTP_ROUTE,a),c.setAttribute(h.ATTR_NEXT_ROUTE,a);let d=n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD];"string"==typeof d&&f.getIsolationScope().setTransactionName(`${d} ${a}`),l.maybeStartCronCheckIn(c,a),m.maybeEnrichQueueConsumerSpan(c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let d=b[h.ATTR_NEXT_SPAN_NAME];"string"==typeof d&&(c.updateName(d),c.setAttribute(e.ATTR_HTTP_ROUTE,d),c.setAttribute(h.ATTR_NEXT_SPAN_NAME,d)),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(b?.[h.ATTR_NEXT_SPAN_TYPE]!==void 0&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),o){let a=f.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;i.addHeadersAsAttributes(a,c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&o){let b=f.getCapturedScopesOnSpan(a),c=(b.isolationScope||f.getIsolationScope()).clone(),e=b.scope||f.getCurrentScope(),h=g.getScopesFromContext(d.context.active());h&&(h.isolationScope=c),f.setCapturedScopesOnSpan(a,e,c)}k.maybeEnhanceServerComponentSpanName(a,b,n),m.maybeEnrichQueueProducerSpan(a)}},58753,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328);function f(){let a=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:a}=process.getBuiltinModule("async_hooks")??{};return a}}();if(!a||"function"!=typeof a.snapshot){e.DEBUG_BUILD&&d.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return a.snapshot()}function g(a){return a instanceof Error&&a.message.includes("AsyncLocalStorage")}c.prepareSafeIdGeneratorContext=function(){let a=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),b=d.GLOBAL_OBJ,c=f();if(!c)return;let h=c;b[a]=a=>{try{return h(a)}catch(c){if(!g(c))throw c;let b=f();if(!b)return a();h=b;try{return h(a)}catch(b){if(!g(b))throw b;return a()}}},e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},535727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.captureUnderscoreErrorException=async function(a){let{req:b,res:c,err:f}=a,g=c?.statusCode||a.statusCode;if(g&&g<500||!a.pathname)return;if(f&&d.isAlreadyCaptured(f)){e.waitUntil(e.flushSafelyWithTimeout());let a="object"==typeof f?f.__sentry_event_id__:void 0;return"string"==typeof a?(d.getIsolationScope().setLastEventId(a),a):d.getIsolationScope().lastEventId()}let h=d.withScope(a=>{if(b){let c=d.httpRequestToRequestData(b);a.setSDKProcessingMetadata({normalizedRequest:c})}return d.captureException(f||`_error.js called with falsy error (${f})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return e.waitUntil(e.flushSafelyWithTimeout()),h}},720432,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.isUseCacheFunction=function(a){if(a.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:b}=function(a){let b=parseInt(a.slice(0,2),16),c=b>>1&63,d=Array(6);for(let a=0;a<6;a++){let b=c>>5-a&1;d[a]=1===b}return{type:1==(b>>7&1)?"use-cache":"server-action",usedArgs:d,hasRestArgs:1==(1&b)}}(a.$$id);return"use-cache"===b}},320495,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328),f=a.r(929689),g=a.r(720432);function h(a){let b=f.isBuild(),c=!!a&&g.isUseCacheFunction(a);return c&&e.DEBUG_BUILD&&d.debug.log("Skipping span creation in Cache Components context"),b||c}function i(){return new d.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}c.startInactiveSpan=function(a){return h()?i():d.startInactiveSpan(a)},c.startSpan=function(a,b){return h(b)?b(i()):d.startSpan(a,b)},c.startSpanManual=function(a,b){if(h(b)){let a=i();return b(a,()=>a.end())}return d.startSpanManual(a,b)}},734313,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(268404);c.callDataFetcherTraced=async function(a,b){try{return await a(...b)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),a}},c.withErrorInstrumentation=function(a){return async function(...b){try{return await a.apply(this,b)}catch(b){throw d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:a.name}}}),b}}},c.withTracedServerSideDataFetcher=function(a,b,c,f){return async function(...c){let g=d.httpRequestToRequestData(b);d.getCurrentScope().setTransactionName(`${f.dataFetchingMethodName} (${f.dataFetcherRouteName})`),d.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g});let h=d.getActiveSpan();h&&"/_error"!==f.requestedRouteName&&d.getRootSpan(h).setAttribute(e.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,f.requestedRouteName);let{"sentry-trace":i,baggage:j}=d.getTraceData();return{sentryTrace:i,baggage:j,data:await a.apply(this,c)}}}},772759,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetStaticPropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let f=e.withErrorInstrumentation(a);return e.callDataFetcherTraced(f,c)}})}},244416,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:f.pathname,requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c)??{};return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},823519,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapAppGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f.ctx,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_app",requestedRouteName:f.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,sentryTrace:j,baggage:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(d.pageProps||(d.pageProps={}),j&&(d.pageProps._sentryTraceData=j),k&&(d.pageProps._sentryBaggage=k)),d}}})}},534813,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapDocumentGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_document",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d}=await a.apply(b,c);return d}}})}},772851,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapErrorGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_error",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},774424,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetServerSidePropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,c,f)=>{if(d.isBuild())return a.apply(c,f);let[g]=f,{req:h,res:i}=g,j=e.withErrorInstrumentation(a),k=e.withTracedServerSideDataFetcher(j,h,i,{dataFetcherRouteName:b,requestedRouteName:b,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:m,sentryTrace:n}=await k.apply(c,f);return"object"==typeof l&&null!==l&&"props"in l&&(n&&(l.props._sentryTraceData=n),m&&(l.props._sentryBaggage=m)),l}})}},971876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.isNotFoundNavigationError=function(a){return d.isError(a)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(a.digest)},c.isRedirectNavigationError=function(a){return d.isError(a)&&"string"==typeof a.digest&&a.digest.startsWith("NEXT_REDIRECT;")}},538357,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);c.wrapServerComponentWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h=d.getIsolationScope(),i=b.headers?d.winterCGHeadersToDict(b.headers):void 0;return h.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g}=b,i=!0;h.setTransactionName(`${g} Server Component (${f})`),c&&(e.isNotFoundNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),i&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},18905,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);a.r(858952),c.wrapRouteHandlerWithSentry=function(a,b){let{method:c,parameterizedRoute:g,headers:h}=b;return new Proxy(a,{apply:async(a,b,h)=>{let i=d.getActiveSpan(),j=i?d.getRootSpan(i):void 0;return d.withIsolationScope(d.getIsolationScope(),()=>d.withScope(async k=>{k.setTransactionName(`${c} ${g}`);let l=await d.handleCallbackErrors(()=>a.apply(b,h),a=>{e.isRedirectNavigationError(a)||(e.isNotFoundNavigationError(a)?(i&&d.setHttpStatus(i,404),j&&d.setHttpStatus(j,404)):d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{f.waitUntil(f.flushSafelyWithTimeout())});try{l.status&&(i&&d.setHttpStatus(i,l.status),j&&d.setHttpStatus(j,l.status))}catch{}return l}))}})}},573248,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.wrapApiHandlerWithSentryVercelCrons=function(a,b){return new Proxy(a,{apply:(a,c,e)=>{let f;if(!e?.[0])return a.apply(c,e);let[g]=e,h="nextUrl"in g?g.nextUrl.pathname:g.url,i="nextUrl"in g?g.headers.get("user-agent"):g.headers["user-agent"];if(!b||!i?.includes("vercel-cron"))return a.apply(c,e);let j=b.find(a=>a.path===h);if(!j?.path||!j.schedule)return a.apply(c,e);let k=j.path,l=d.captureCheckIn({monitorSlug:k,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:j.schedule}}),m=d._INTERNAL_safeDateNow()/1e3,n=()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"error",duration:d._INTERNAL_safeDateNow()/1e3-m})};try{f=a.apply(c,e)}catch(a){throw n(),a}return"object"==typeof f&&null!==f&&"then"in f?Promise.resolve(f).then(()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m})},()=>{n()}):d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m}),f}})}},918691,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.wrapMiddlewareWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{let f="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(f&&"string"==typeof f){let a=c[0];if(a instanceof Request&&new URL(a.url).pathname.startsWith(f))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return d.withIsolationScope(f=>{let g,h,i=c[0],j=d.getCurrentScope();i instanceof Request?(f.setSDKProcessingMetadata({normalizedRequest:d.winterCGRequestToRequestData(i)}),g=`middleware ${i.method}`,h="url"):(g="middleware",h="component"),j.setTransactionName(g);let k=d.getActiveSpan();if(k){g="middleware",h="component";let a=d.getRootSpan(k);a&&d.setCapturedScopesOnSpan(a,j,f)}return d.startSpan({name:g,op:"http.server.middleware",attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h,[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>d.handleCallbackErrors(()=>a.apply(b,c),a=>{d.captureException(a,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{e.waitUntil(e.flushSafelyWithTimeout())}))})}})}},131427,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);function e(a,b){a&&"object"==typeof a&&d.addNonEnumerableProperty(a,"__sentry_event_id__",b)}c.wrapPageComponentWithSentry=function(a){return"function"==typeof a&&a?.prototype?.isReactComponent?class extends a{render(...a){return d.withIsolationScope(()=>{let b=d.getCurrentScope(),c="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(c){let a=d.extractTraceparentData(c);b.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return super.render(...a)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw e(b,a),b}})}}:"function"==typeof a?new Proxy(a,{apply:(a,b,c)=>d.withIsolationScope(()=>{let f=d.getCurrentScope(),g=c?.[0]?._sentryTraceData;if(g){let a=d.extractTraceparentData(g);f.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return a.apply(b,c)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw e(b,a),b}})}):a}},708403,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);c.wrapGenerationFunctionWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h,i=d.getIsolationScope();try{h=b.requestAsyncStorage?.getStore()?.headers}catch{}let j=h?d.winterCGHeadersToDict(h):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:j}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g,generationFunctionIdentifier:h}=b,j=!0;i.setTransactionName(`${g}.${h} (${f})`),c&&(e.isNotFoundNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),j&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:h}}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},603642,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934),f=a.r(373328),g=a.r(971876);async function h(a,b,c){return d.withIsolationScope(async h=>{let i,j,k=d.getClient()?.getOptions().sendDefaultPii,l={};try{let a=await b.headers;i=a?.get("sentry-trace")??void 0,j=a?.get("baggage"),a?.forEach((a,b)=>{l[b]=a})}catch{f.DEBUG_BUILD&&d.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return h.setTransactionName(`serverAction/${a}`),h.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:i,baggage:j},async()=>{try{return await d.startSpan({op:"function.server_action",name:`serverAction/${a}`,forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async a=>{let e=await d.handleCallbackErrors(c,b=>{g.isNotFoundNavigationError(b)?a.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"}):g.isRedirectNavigationError(b)||(a.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"}),d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==b.recordResponse?b.recordResponse:k)&&d.getIsolationScope().setExtra("server_action_result",e),b.formData&&b.formData.forEach((a,b)=>{d.getIsolationScope().setExtra(`server_action_form_data.${b}`,"string"==typeof a?a:"[non-string value]")}),e})}finally{e.waitUntil(e.flushSafelyWithTimeout())}})})}c.withServerActionInstrumentation=function(...a){if("function"==typeof a[1]){let[b,c]=a;return h(b,{},c)}{let[b,c,d]=a;return h(b,c,d)}}},506983,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.captureRequestError=function(a,b,c){d.withScope(f=>{f.setSDKProcessingMetadata({normalizedRequest:{headers:d.headersToDict(b.headers),method:b.method}}),f.setContext("nextjs",{request_path:b.path,router_kind:c.routerKind,router_path:c.routePath,route_type:c.routeType}),f.setTransactionName(`${b.method} ${c.routePath}`),d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),e.waitUntil(e.flushSafelyWithTimeout())})}},12234,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934),f=a.r(858952);c.wrapApiHandlerWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>(f.dropNextjsRootContext(),f.escapeNextjsTracing(()=>{let[f,h]=g;return f?h?f.__withSentry_applied__?a.apply(c,g):(f.__withSentry_applied__=!0,d.withIsolationScope(i=>(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:f.headers&&d.isString(f.headers["sentry-trace"])?f.headers["sentry-trace"]:void 0,baggage:f.headers?.baggage},()=>{let j=`${(f.method||"GET").toUpperCase()} `,k=d.httpRequestToRequestData(f);return i.setSDKProcessingMetadata({normalizedRequest:k}),i.setTransactionName(`${j}${b}`),d.startSpanManual({name:`${j}${b}`,op:"http.server",forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async b=>{h.end=new Proxy(h.end,{apply:(a,c,f)=>(d.setHttpStatus(b,h.statusCode),b.end(),e.waitUntil(e.flushSafelyWithTimeout()),a.apply(c,f))});try{return await a.apply(c,g)}catch(f){let c=d.objectify(f);throw d.captureException(c,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:a.name,function:"withSentry"}}}),d.setHttpStatus(b,500),b.end(),await e.flushSafelyWithTimeout(),c}})}))):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a response object. Will not instrument.`),a.apply(c,g)):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a request object. Will not instrument.`),a.apply(c,g))}))})}},797822,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(874208),g=a.r(373328);a.r(967602);let h=a.r(562293),i=a.r(473132),j=a.r(268404),k=a.r(929689),l=a.r(498934),m=a.r(816617),n=a.r(734080),o=a.r(368517),p=a.r(58753),q=a.r(431385),r=a.r(766711),s=a.r(535727),t=a.r(320495),u=a.r(772759),v=a.r(244416),w=a.r(823519),x=a.r(534813),y=a.r(772851),z=a.r(774424),A=a.r(538357),B=a.r(18905),C=a.r(573248),D=a.r(918691),E=a.r(131427),F=a.r(708403),G=a.r(603642),H=a.r(506983),I=a.r(12234);e.GLOBAL_OBJ,c.captureUnderscoreErrorException=s.captureUnderscoreErrorException,c.startInactiveSpan=t.startInactiveSpan,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.wrapGetStaticPropsWithSentry=u.wrapGetStaticPropsWithSentry,c.wrapGetInitialPropsWithSentry=v.wrapGetInitialPropsWithSentry,c.wrapAppGetInitialPropsWithSentry=w.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=x.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=y.wrapErrorGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=z.wrapGetServerSidePropsWithSentry,c.wrapServerComponentWithSentry=A.wrapServerComponentWithSentry,c.wrapRouteHandlerWithSentry=B.wrapRouteHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,c.wrapMiddlewareWithSentry=D.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=E.wrapPageComponentWithSentry,c.wrapGenerationFunctionWithSentry=F.wrapGenerationFunctionWithSentry,c.withServerActionInstrumentation=G.withServerActionInstrumentation,c.captureRequestError=H.captureRequestError,c.wrapApiHandlerWithSentry=I.wrapApiHandlerWithSentry,c.ErrorBoundary=a=>a.children?"function"==typeof a.children?a.children():a.children:null,c.createReduxEnhancer=function(){return a=>a},c.init=function(a){if(p.prepareSafeIdGeneratorContext(),k.isBuild())return;!g.DEBUG_BUILD&&a.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let b=f.getDefaultIntegrations(a).filter(a=>"Http"!==a.name).concat(f.httpIntegration({disableIncomingRequestSpans:!0}));a.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),b.push(n.distDirRewriteFramesIntegration({distDirName:".next"}));let c=function(){if(l.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),s={environment:a.environment||process.env.SENTRY_ENVIRONMENT||h.getVercelEnv(!1)||"production",release:"9dad66acd3deb36c6e51fae1fdce6de96dd992c7",defaultIntegrations:b,...a,...c};if(g.DEBUG_BUILD&&s.debug&&e.debug.enable(),g.DEBUG_BUILD&&e.debug.log("Initializing SDK..."),e.getClient()){g.DEBUG_BUILD&&e.debug.log("SDK already initialized");return}e.applySdkMetadata(s,"nextjs",["nextjs",c?"cloudflare":"node"]);let t=f.init(s);t?.on("beforeSampling",({spanAttributes:a},b)=>{("string"==typeof a[d.SEMATTRS_HTTP_TARGET]&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof a[d.ATTR_URL_QUERY]&&a[d.ATTR_URL_QUERY].includes("sentry_key")&&a[d.ATTR_URL_QUERY].includes("sentry_client"))&&(b.decision=!1)}),t?.on("spanStart",o.handleOnSpanStart),t?.on("spanEnd",q.maybeCompleteCronCheckIn),t?.on("spanEnd",r.maybeCleanupQueueSpan),e.getGlobalScope().addEventProcessor(Object.assign(a=>{if("transaction"!==a.type)return a;if(a.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||a.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===a.transaction||a.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===a.transaction)return null;if("string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(b?.parentSampled===!1)return null}return a},{id:"NextLowQualityTransactionsFilter"})),e.getGlobalScope().addEventProcessor(Object.assign((a,b)=>{if(void 0!==a.type)return a;let c=b.originalException;if("object"==typeof c&&null!==c&&"$$typeof"in c&&c.$$typeof===Symbol.for("react.postpone"))return null;let d=a.exception?.values?.[0]?.value;return d?.includes("Suspense Exception: This is not a real error!")||d?.includes("Suspense Exception: This is not a real error, and should not leak")?null:a},{id:"DropReactControlFlowErrors"})),t?.on("preprocessEvent",a=>{if("transaction"===a.type&&a.contexts?.trace?.data?.[i.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",a.contexts.trace.op="http.server",a.transaction&&(a.transaction=e.stripUrlQueryAndFragment(a.transaction));let b=a.contexts.trace.data[d.SEMATTRS_HTTP_METHOD],c=a.contexts?.trace?.data?.[d.SEMATTRS_HTTP_TARGET],f=a.contexts.trace.data[d.ATTR_HTTP_ROUTE]||a.contexts.trace.data[i.ATTR_NEXT_ROUTE],g=a.contexts.trace.data[i.ATTR_NEXT_SPAN_NAME];if("string"==typeof b&&"string"==typeof f&&!f.startsWith("middleware")){let c=f.replace(/\/route$/,"");a.transaction=`${b} ${c}`,a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",a.contexts.trace.data[i.ATTR_NEXT_ROUTE]=c}a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==a.transaction&&(a.transaction=`${b} ${a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let h="string"==typeof g&&g.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);h&&(a.transaction=`middleware ${h[1]}`,a.contexts.trace.op="http.server.middleware"),"GET /_error"===a.transaction&&c&&(a.transaction=`${b?`${b} `:""}${c}`)}if("transaction"===a.type&&"string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);b?.traceId&&(a.contexts.trace.trace_id=b.traceId),b?.parentSpanId&&(a.contexts.trace.parent_span_id=b.parentSpanId)}m.setUrlProcessingMetadata(a)});try{e.getGlobalScope().setTag("turbopack",!0)}catch{}return g.DEBUG_BUILD&&e.debug.log("SDK successfully initialized"),t},c.showReportDialog=function(){},c.withErrorBoundary=function(a){return a},Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})},17814,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(114530),e=a.r(797822),f=a.r(874208),g=a.r(506983),h=a.r(535727),i=a.r(320495),j=a.r(603642),k=a.r(12234),l=a.r(573248),m=a.r(823519),n=a.r(534813),o=a.r(772851),p=a.r(708403),q=a.r(244416),r=a.r(774424),s=a.r(772759),t=a.r(918691),u=a.r(131427),v=a.r(18905),w=a.r(538357);c.withSentryConfig=d.withSentryConfig,c.ErrorBoundary=e.ErrorBoundary,c.createReduxEnhancer=e.createReduxEnhancer,c.init=e.init,c.showReportDialog=e.showReportDialog,c.withErrorBoundary=e.withErrorBoundary,c.captureRequestError=g.captureRequestError,c.captureUnderscoreErrorException=h.captureUnderscoreErrorException,c.startInactiveSpan=i.startInactiveSpan,c.startSpan=i.startSpan,c.startSpanManual=i.startSpanManual,c.withServerActionInstrumentation=j.withServerActionInstrumentation,c.wrapApiHandlerWithSentry=k.wrapApiHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=l.wrapApiHandlerWithSentryVercelCrons,c.wrapAppGetInitialPropsWithSentry=m.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=n.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=o.wrapErrorGetInitialPropsWithSentry,c.wrapGenerationFunctionWithSentry=p.wrapGenerationFunctionWithSentry,c.wrapGetInitialPropsWithSentry=q.wrapGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=r.wrapGetServerSidePropsWithSentry,c.wrapGetStaticPropsWithSentry=s.wrapGetStaticPropsWithSentry,c.wrapMiddlewareWithSentry=t.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=u.wrapPageComponentWithSentry,c.wrapRouteHandlerWithSentry=v.wrapRouteHandlerWithSentry,c.wrapServerComponentWithSentry=w.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})}]; +Mongoose Error Code: ${b.code}`:""}`})}function i(a,b,c,f){c&&(0,e.safeExecuteInTheMiddle)(()=>c(a,{moduleVersion:f,response:b}),a=>{a&&d.diag.error("mongoose instrumentation: responseHook error",a)},!0)}c.getAttributesFromCollection=function(a,b,c){let d={};return b&e.SemconvStability.OLD&&(d[f.ATTR_DB_MONGODB_COLLECTION]=a.name,d[f.ATTR_DB_NAME]=a.conn.name,d[f.ATTR_DB_USER]=a.conn.user),b&e.SemconvStability.STABLE&&(d[g.ATTR_DB_COLLECTION_NAME]=a.name,d[g.ATTR_DB_NAMESPACE]=a.conn.name),c&e.SemconvStability.OLD&&(d[f.ATTR_NET_PEER_NAME]=a.conn.host,d[f.ATTR_NET_PEER_PORT]=a.conn.port),c&e.SemconvStability.STABLE&&(d[g.ATTR_SERVER_ADDRESS]=a.conn.host,d[g.ATTR_SERVER_PORT]=a.conn.port),d},c.handlePromiseResponse=function(a,b,c,d){return a instanceof Promise?a.then(a=>(i(b,a,c,d),a)).catch(a=>{throw h(b,a),a}).finally(()=>b.end()):(i(b,a,c,d),b.end(),a)},c.handleCallbackResponse=function(a,b,c,d,e,f,g){let j=0;return 2===e.length?j=1:3===e.length&&(j=2),e[j]=(b,c)=>(b?h(d,b):i(d,c,f,g),d.end(),a(b,c)),b.apply(c,e)}},879045,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},22751,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=c._ALREADY_INSTRUMENTED=c._STORED_PARENT_SPAN=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(6977),g=a.r(621472),h=a.r(879045),i=a.r(324007),j=a.r(357223),k=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],l=["remove","count","findOneAndRemove",...k],m=["count","findOneAndRemove",...k],n=[...k];function o(a){return a?a.startsWith("6.")||a.startsWith("5.")?l:a.startsWith("7.")?m:n:k}function p(a){return a&&(a.startsWith("5.")||a.startsWith("6."))||!1}function q(a){return!!a&&!!a.startsWith("8.")&&parseInt(a.split(".")[1],10)>=21}c._STORED_PARENT_SPAN=Symbol("stored-parent-span"),c._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class r extends g.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,g.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new g.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a;return this._wrap(c.Model.prototype,"save",this.patchOnModelMethods("save",b)),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._wrap(c.Model.prototype,"remove",this.patchOnModelMethods("remove",b)),q(b)&&(this._wrap(c.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",b)),this._wrap(c.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",b))),this._wrap(c.Query.prototype,"exec",this.patchQueryExec(b)),this._wrap(c.Aggregate.prototype,"exec",this.patchAggregateExec(b)),o(b).forEach(a=>{this._wrap(c.Query.prototype,a,this.patchAndCaptureSpanContext(a))}),this._wrap(c.Model,"aggregate",this.patchModelAggregate()),this._wrap(c.Model,"insertMany",this.patchModelStatic("insertMany",b)),this._wrap(c.Model,"bulkWrite",this.patchModelStatic("bulkWrite",b)),c}unpatch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a,d=o(b);this._unwrap(c.Model.prototype,"save"),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._unwrap(c.Model.prototype,"remove"),q(b)&&(this._unwrap(c.Model.prototype,"updateOne"),this._unwrap(c.Model.prototype,"deleteOne")),this._unwrap(c.Query.prototype,"exec"),this._unwrap(c.Aggregate.prototype,"exec"),d.forEach(a=>{this._unwrap(c.Query.prototype,a)}),this._unwrap(c.Model,"aggregate"),this._unwrap(c.Model,"insertMany"),this._unwrap(c.Model,"bulkWrite")}patchAggregateExec(a){let b=this;return e=>function(f){if(b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l("aggregate",{options:this.options,aggregatePipeline:this._pipeline});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this._model.collection,this._model?.modelName,"aggregate",k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchQueryExec(a){let b=this;return e=>function(f){if(this[c._ALREADY_INSTRUMENTED]||b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this.mongooseCollection,this.model.modelName,this.op,k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchOnModelMethods(a,b){let c=this;return e=>function(f,h){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let k={document:this};!f||f instanceof Function||(k.options=f);let l={},{dbStatementSerializer:m}=c.getConfig();if(m){let b=m(a,k);c._dbSemconvStability&g.SemconvStability.OLD&&(l[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(l[j.ATTR_DB_QUERY_TEXT]=b)}let n=c._startSpan(this.constructor.collection,this.constructor.modelName,a,l);return f instanceof Function&&(h=f,f=void 0),c._handleResponse(n,e,this,arguments,h,b)}}_patchDocumentUpdateMethods(a,b){let e=this;return f=>function(h,k,l){if(e.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return f.apply(this,arguments);let m=l,n=h,o=k;"function"==typeof h?(m=h,n=void 0,o=void 0):"function"==typeof k&&(m=k,o=void 0);let p={},q=e.getConfig().dbStatementSerializer;if(q){let b=q(a,{condition:{_id:this._id},updates:n,options:o});e._dbSemconvStability&g.SemconvStability.OLD&&(p[i.ATTR_DB_STATEMENT]=b),e._dbSemconvStability&g.SemconvStability.STABLE&&(p[j.ATTR_DB_QUERY_TEXT]=b)}let r=e._startSpan(this.constructor.collection,this.constructor.modelName,a,p),s=e._handleResponse(r,f,this,arguments,m,b);return s&&"object"==typeof s&&(s[c._ALREADY_INSTRUMENTED]=!0),s}}patchModelStatic(a,b){let c=this;return e=>function(f,h,k){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);"function"==typeof h&&(k=h,h=void 0);let l={};switch(a){case"insertMany":l.documents=f;break;case"bulkWrite":l.operations=f;break;default:l.document=f}void 0!==h&&(l.options=h);let m={},{dbStatementSerializer:n}=c.getConfig();if(n){let b=n(a,l);c._dbSemconvStability&g.SemconvStability.OLD&&(m[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(m[j.ATTR_DB_QUERY_TEXT]=b)}let o=c._startSpan(this.collection,this.modelName,a,m);return c._handleResponse(o,e,this,arguments,k,b)}}patchModelAggregate(){let a=this;return b=>function(){let e=d.trace.getSpan(d.context.active()),f=a._callOriginalFunction(()=>b.apply(this,arguments));return f&&(f[c._STORED_PARENT_SPAN]=e),f}}patchAndCaptureSpanContext(a){let b=this;return a=>function(){return this[c._STORED_PARENT_SPAN]=d.trace.getSpan(d.context.active()),b._callOriginalFunction(()=>a.apply(this,arguments))}}_startSpan(a,b,c,e,h){let k={...e,...(0,f.getAttributesFromCollection)(a,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_OPERATION]=c,k[i.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_OPERATION_NAME]=c,k[j.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MONGODB);let l=this._dbSemconvStability&g.SemconvStability.STABLE?`${c} ${a.name}`:`mongoose.${b}.${c}`;return this.tracer.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:k},h?d.trace.setSpan(d.context.active(),h):void 0)}_handleResponse(a,b,c,d,e,g){let h=this;if(e instanceof Function)return h._callOriginalFunction(()=>(0,f.handleCallbackResponse)(e,b,c,a,d,h.getConfig().responseHook,g));{let e=h._callOriginalFunction(()=>b.apply(c,d));return(0,f.handlePromiseResponse)(e,a,h.getConfig().responseHook,g)}}_callOriginalFunction(a){return this.getConfig().suppressInternalInstrumentation?d.context.with((0,e.suppressTracing)(d.context.active()),a):a()}}c.MongooseInstrumentation=r},63680,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=void 0;var d=a.r(22751);Object.defineProperty(c,"MongooseInstrumentation",{enumerable:!0,get:function(){return d.MongooseInstrumentation}})},473965,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(63680),e=a.r(97153),f=a.r(829770),g="Mongoose",h=f.generateInstrumentOnce(g,()=>new d.MongooseInstrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongoose")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMongoose=h,c.mongooseIntegration=i},117257,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},849068,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(c.AttributeNames||(c.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},101776,(a,b,c)=>{"use strict";function d(a){return a?`[${a.toString()}]`:""}Object.defineProperty(c,"__esModule",{value:!0}),c.getPoolNameOld=c.arrayStringifyHelper=c.getSpanName=c.getDbValues=c.getDbQueryText=c.getJDBCString=c.getConfig=void 0,c.getConfig=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}},c.getJDBCString=function(a,b,c){let d=`jdbc:mysql://${a||"localhost"}`;return"number"==typeof b&&(d+=`:${b}`),"string"==typeof c&&(d+=`/${c}`),d},c.getDbQueryText=function(a){return"string"==typeof a?a:a.sql},c.getDbValues=function(a,b){return"string"==typeof a?d(b):d(b||a.values)},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.arrayStringifyHelper=d,c.getPoolNameOld=function(a){let b=a.config.connectionConfig,c="";return c+=b.host?`host: '${b.host}', `:"",c+=b.port?`port: ${b.port}, `:"",c+=b.database?`database: '${b.database}', `:"",c+=b.user?`user: '${b.user}'`:"",b.user||(c=c.substring(0,c.length-2)),c.trim()}},880731,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},176475,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(117257),h=a.r(849068),i=a.r(101776),j=a.r(880731);class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsageOld?.add(a,{state:c,name:b})}init(){return[new e.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],a=>((0,e.isWrapped)(a.createConnection)&&this._unwrap(a,"createConnection"),this._wrap(a,"createConnection",this._patchCreateConnection()),(0,e.isWrapped)(a.createPool)&&this._unwrap(a,"createPool"),this._wrap(a,"createPool",this._patchCreatePool()),(0,e.isWrapped)(a.createPoolCluster)&&this._unwrap(a,"createPoolCluster"),this._wrap(a,"createPoolCluster",this._patchCreatePoolCluster()),a),a=>{void 0!==a&&(this._unwrap(a,"createConnection"),this._unwrap(a,"createPool"),this._unwrap(a,"createPoolCluster"))})]}_patchCreateConnection(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),d}}}_patchCreatePool(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"end",b._patchPoolEnd(d)),b._setPoolCallbacks(d,""),d}}}_patchPoolEnd(a){return b=>{let c=this;return function(d){let e=a._allConnections.length,f=a._freeConnections.length,g=(0,i.getPoolNameOld)(a);c._connCountAdd(-(e-f),g,"used"),c._connCountAdd(-f,g,"idle"),b.apply(a,arguments)}}}_patchCreatePoolCluster(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"add",b._patchAdd(d)),d}}}_patchAdd(a){return b=>{let c=this;return function(d,e){if(!c._enabled)return c._unwrap(a,"add"),b.apply(a,arguments);b.apply(a,arguments);let f=a._nodes;if(f){let b=f["object"==typeof d?"CLUSTER::"+a._lastId:String(d)].pool;c._setPoolCallbacks(b,d)}}}}_patchGetConnection(a){return b=>{let c=this;return function(d,e,f){if(!c._enabled)return c._unwrap(a,"getConnection"),b.apply(a,arguments);if(1==arguments.length&&"function"==typeof d){let e=c._getConnectionCallbackPatchFn(d);return b.call(a,e)}if(2==arguments.length&&"function"==typeof e){let f=c._getConnectionCallbackPatchFn(e);return b.call(a,d,f)}if(3==arguments.length&&"function"==typeof f){let g=c._getConnectionCallbackPatchFn(f);return b.call(a,d,e,g)}return b.apply(a,arguments)}}}_getConnectionCallbackPatchFn(a){let b=this,c=d.context.active();return function(f,g){g&&!(0,e.isWrapped)(g.query)&&b._wrap(g,"query",b._patchQuery(g)),"function"==typeof a&&d.context.with(c,a,this,f,g)}}_patchQuery(a){return b=>{let c=this;return function(j,k,l){if(!c._enabled)return c._unwrap(a,"query"),b.apply(a,arguments);let m={},{host:n,port:o,database:p,user:q}=(0,i.getConfig)(a.config),r=parseInt(o,10),s=(0,i.getDbQueryText)(j);c._dbSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MYSQL,m[g.ATTR_DB_CONNECTION_STRING]=(0,i.getJDBCString)(n,o,p),m[g.ATTR_DB_NAME]=p,m[g.ATTR_DB_USER]=q,m[g.ATTR_DB_STATEMENT]=s),c._dbSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_DB_SYSTEM_NAME]=f.DB_SYSTEM_NAME_VALUE_MYSQL,m[f.ATTR_DB_NAMESPACE]=p,m[f.ATTR_DB_QUERY_TEXT]=s),c._netSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_NET_PEER_NAME]=n,isNaN(r)||(m[g.ATTR_NET_PEER_PORT]=r)),c._netSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_SERVER_ADDRESS]=n,isNaN(r)||(m[f.ATTR_SERVER_PORT]=r));let t=c.tracer.startSpan((0,i.getSpanName)(j),{kind:d.SpanKind.CLIENT,attributes:m});if(c.getConfig().enhancedDatabaseReporting){let a;Array.isArray(k)?a=k:arguments[2]&&(a=[k]),t.setAttribute(h.AttributeNames.MYSQL_VALUES,(0,i.getDbValues)(j,a))}let u=Array.from(arguments).findIndex(a=>"function"==typeof a),v=d.context.active();if(-1!==u)return c._wrap(arguments,u,c._patchCallbackQuery(t,v)),d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));{let c=d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));return d.context.bind(v,c),c.on("error",a=>t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message})).on("end",()=>{t.end()})}}}}_patchCallbackQuery(a,b){return c=>function(e,f,g){return e&&a.setStatus({code:d.SpanStatusCode.ERROR,message:e.message}),a.end(),d.context.with(b,()=>c(...arguments))}}_setPoolCallbacks(a,b){let c=b||(0,i.getPoolNameOld)(a);a.on("connection",a=>{this._connCountAdd(1,c,"idle")}),a.on("acquire",a=>{this._connCountAdd(-1,c,"idle"),this._connCountAdd(1,c,"used")}),a.on("release",a=>{this._connCountAdd(1,c,"idle"),this._connCountAdd(-1,c,"used")})}}c.MySQLInstrumentation=k},669807,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;var d=a.r(176475);Object.defineProperty(c,"MySQLInstrumentation",{enumerable:!0,get:function(){return d.MySQLInstrumentation}})},848855,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(669807),e=a.r(97153),f=a.r(829770),g="Mysql",h=f.generateInstrumentOnce(g,()=>new d.MySQLInstrumentation({})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql=h,c.mysqlIntegration=i},361795,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql"},780071,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.addSqlCommenterComment=void 0;let d=a.r(854230),e=a.r(35492);c.addSqlCommenterComment=function(a,b){let c;if("string"!=typeof b||0===b.length||(c=b.indexOf("--"))>=0||!(0>b.indexOf("/*"))&&c{let b=encodeURIComponent(g[a]).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`);return`${a}='${b}'`}).join(",");return`${b} /*${i}*/`}},538335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getConnectionPrototypeToInstrument=c.once=c.getSpanName=c.getQueryText=c.getConnectionAttributes=void 0;let d=a.r(361795),e=a.r(621472),f=a.r(357223);function g(a){return a.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}c.getConnectionAttributes=function(a,b,c){var g,h,i;let j,{host:k,port:l,database:m,user:n}=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}}(a),o={};b&e.SemconvStability.OLD&&(o[d.ATTR_DB_CONNECTION_STRING]=(g=k,h=l,i=m,j=`jdbc:mysql://${g||"localhost"}`,"number"==typeof h&&(j+=`:${h}`),"string"==typeof i&&(j+=`/${i}`),j),o[d.ATTR_DB_NAME]=m,o[d.ATTR_DB_USER]=n),b&e.SemconvStability.STABLE&&(o[f.ATTR_DB_NAMESPACE]=m);let p=parseInt(l,10);return c&e.SemconvStability.OLD&&(o[d.ATTR_NET_PEER_NAME]=k,isNaN(p)||(o[d.ATTR_NET_PEER_PORT]=p)),c&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=k,isNaN(p)||(o[f.ATTR_SERVER_PORT]=p)),o},c.getQueryText=function(a,b,c,d=!1,e=g){let[f,h]="string"==typeof a?[a,c]:[a.sql,"values"in a?c||a.values:c];try{if(d)return e(f);if(b&&h)return b(f,h);return f}catch(a){return"Could not determine the query due to an error in masking or formatting"}},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}},c.getConnectionPrototypeToInstrument=function(a){let b=a.prototype,c=Object.getPrototypeOf(b);return"function"==typeof c?.query&&"function"==typeof c?.execute?c:b}},229514,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},249556,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(361795),g=a.r(780071),h=a.r(538335),i=a.r(229514),j=a.r(357223),k=[">=1.4.2 <4"];class l extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let a;function b(b){!a&&b.format&&(a=b.format)}let c=b=>{(0,e.isWrapped)(b.query)&&this._unwrap(b,"query"),this._wrap(b,"query",this._patchQuery(a,!1)),(0,e.isWrapped)(b.execute)&&this._unwrap(b,"execute"),this._wrap(b,"execute",this._patchQuery(a,!0))},d=a=>{this._unwrap(a,"query"),this._unwrap(a,"execute")};return[new e.InstrumentationNodeModuleDefinition("mysql2",k,a=>(b(a),a),()=>{},[new e.InstrumentationNodeModuleFile("mysql2/promise.js",k,a=>(b(a),a),()=>{}),new e.InstrumentationNodeModuleFile("mysql2/lib/connection.js",k,a=>(c((0,h.getConnectionPrototypeToInstrument)(a)),a),a=>{void 0===a||d((0,h.getConnectionPrototypeToInstrument)(a))})])]}_patchQuery(a,b){return c=>{let i=this;return function(k,l,m){let n;Array.isArray(l)?n=l:arguments[2]&&(n=[l]);let{maskStatement:o,maskStatementHook:p,responseHook:q}=i.getConfig(),r=(0,h.getConnectionAttributes)(this.config,i._dbSemconvStability,i._netSemconvStability),s=(0,h.getQueryText)(k,a,n,o,p);i._dbSemconvStability&e.SemconvStability.OLD&&(r[f.ATTR_DB_SYSTEM]=f.DB_SYSTEM_VALUE_MYSQL,r[f.ATTR_DB_STATEMENT]=s),i._dbSemconvStability&e.SemconvStability.STABLE&&(r[j.ATTR_DB_SYSTEM_NAME]=j.DB_SYSTEM_NAME_VALUE_MYSQL,r[j.ATTR_DB_QUERY_TEXT]=s);let t=i.tracer.startSpan((0,h.getSpanName)(k),{kind:d.SpanKind.CLIENT,attributes:r});!b&&i.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=k="string"==typeof k?(0,g.addSqlCommenterComment)(t,k):Object.assign(k,{sql:(0,g.addSqlCommenterComment)(t,k.sql)}));let u=(0,h.once)((a,b)=>{a?t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}):"function"==typeof q&&(0,e.safeExecuteInTheMiddle)(()=>{q(t,{queryResults:b})},a=>{a&&i._diag.warn("Failed executing responseHook",a)},!0),t.end()});if(1==arguments.length){"function"==typeof k.onResult&&i._wrap(k,"onResult",i._patchCallbackQuery(u));let a=c.apply(this,arguments);return a.once("error",a=>{u(a)}).once("result",a=>{u(void 0,a)}),a}return"function"==typeof arguments[1]?i._wrap(arguments,1,i._patchCallbackQuery(u)):"function"==typeof arguments[2]&&i._wrap(arguments,2,i._patchCallbackQuery(u)),c.apply(this,arguments)}}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c,d),b(...arguments)}}}c.MySQL2Instrumentation=l},402179,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;var d=a.r(249556);Object.defineProperty(c,"MySQL2Instrumentation",{enumerable:!0,get:function(){return d.MySQL2Instrumentation}})},757586,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(402179),e=a.r(97153),f=a.r(829770),g="Mysql2",h=f.generateInstrumentOnce(g,()=>new d.MySQL2Instrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mysql2")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql2=h,c.mysql2Integration=i},918346,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},432614,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.endSpan=void 0;let d=a.r(854230);c.endSpan=(a,b)=>{b&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message})),a.end()}},881924,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.defaultDbStatementSerializer=void 0;let d=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];c.defaultDbStatementSerializer=(a,b)=>{if(Array.isArray(b)&&b.length){let c=d.find(({regex:b})=>b.test(a))?.args??0,e=c>=0?b.slice(0,c):b;return b.length>e.length&&e.push(`[${b.length-c} other arguments]`),`${a} ${e.join(" ")}`}return a}},325345,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},591386,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(918346),h=a.r(621472),i=a.r(432614),j=a.r(881924),k=a.r(325345),l={requireParentSpan:!0};class m extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){return[new e.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(a,b)=>{let c="Module"===a[Symbol.toStringTag]?a.default:a;return(0,e.isWrapped)(c.prototype.sendCommand)&&this._unwrap(c.prototype,"sendCommand"),this._wrap(c.prototype,"sendCommand",this._patchSendCommand(b)),(0,e.isWrapped)(c.prototype.connect)&&this._unwrap(c.prototype,"connect"),this._wrap(c.prototype,"connect",this._patchConnection()),a},a=>{if(void 0===a)return;let b="Module"===a[Symbol.toStringTag]?a.default:a;this._unwrap(b.prototype,"sendCommand"),this._unwrap(b.prototype,"connect")})]}_patchSendCommand(a){return b=>this._traceSendCommand(b,a)}_patchConnection(){return a=>this._traceConnection(a)}_traceSendCommand(a,b){let c=this;return function(k){if(arguments.length<1||"object"!=typeof k)return a.apply(this,arguments);let l=c.getConfig(),m=l.dbStatementSerializer||j.defaultDbStatementSerializer,n=void 0===d.trace.getSpan(d.context.active());if(!0===l.requireParentSpan&&n)return a.apply(this,arguments);let o={},{host:p,port:q}=this.options,r=m(k.name,k.args);c._dbSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,o[g.ATTR_DB_STATEMENT]=r,o[g.ATTR_DB_CONNECTION_STRING]=`redis://${p}:${q}`),c._dbSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,o[f.ATTR_DB_QUERY_TEXT]=r),c._netSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_NET_PEER_NAME]=p,o[g.ATTR_NET_PEER_PORT]=q),c._netSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=p,o[f.ATTR_SERVER_PORT]=q);let s=c.tracer.startSpan(k.name,{kind:d.SpanKind.CLIENT,attributes:o}),{requestHook:t}=l;t&&(0,h.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:b,cmdName:k.name,cmdArgs:k.args}),a=>{a&&d.diag.error("ioredis instrumentation: request hook failed",a)},!0);try{let b=a.apply(this,arguments),c=k.resolve;k.resolve=function(a){(0,h.safeExecuteInTheMiddle)(()=>l.responseHook?.(s,k.name,k.args,a),a=>{a&&d.diag.error("ioredis instrumentation: response hook failed",a)},!0),(0,i.endSpan)(s,null),c(a)};let e=k.reject;return k.reject=function(a){(0,i.endSpan)(s,a),e(a)},b}catch(a){throw(0,i.endSpan)(s,a),a}}}_traceConnection(a){let b=this;return function(){let c=void 0===d.trace.getSpan(d.context.active());if(!0===b.getConfig().requireParentSpan&&c)return a.apply(this,arguments);let h={},{host:j,port:k}=this.options;b._dbSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,h[g.ATTR_DB_STATEMENT]="connect",h[g.ATTR_DB_CONNECTION_STRING]=`redis://${j}:${k}`),b._dbSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,h[f.ATTR_DB_QUERY_TEXT]="connect"),b._netSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_NET_PEER_NAME]=j,h[g.ATTR_NET_PEER_PORT]=k),b._netSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_SERVER_ADDRESS]=j,h[f.ATTR_SERVER_PORT]=k);let l=b.tracer.startSpan("connect",{kind:d.SpanKind.CLIENT,attributes:h});try{let b=a.apply(this,arguments);return(0,i.endSpan)(l,null),b}catch(a){throw(0,i.endSpan)(l,a),a}}}}c.IORedisInstrumentation=m},294614,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;var d=a.r(591386);Object.defineProperty(c,"IORedisInstrumentation",{enumerable:!0,get:function(){return d.IORedisInstrumentation}})},232887,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},808776,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getTracedCreateStreamTrace=c.getTracedCreateClient=c.endSpan=void 0;let d=a.r(854230);c.endSpan=(a,b)=>{b&&a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end()},c.getTracedCreateClient=a=>function(){let b=a.apply(this,arguments);return d.context.bind(d.context.active(),b)},c.getTracedCreateStreamTrace=a=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(a){d.context.bind(d.context.active(),a),this._patched_redis_stream=a}}),a.apply(this,arguments)}},672921,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},806841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV2_V3=void 0;let d=a.r(621472),e=a.r(808776),f=a.r(232887),g=a.r(854230),h=a.r(357223),i=a.r(672921),j=a.r(881924);class k extends d.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new d.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],a=>((0,d.isWrapped)(a.RedisClient.prototype.internal_send_command)&&this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._wrap(a.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,d.isWrapped)(a.RedisClient.prototype.create_stream)&&this._unwrap(a.RedisClient.prototype,"create_stream"),this._wrap(a.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,d.isWrapped)(a.createClient)&&this._unwrap(a,"createClient"),this._wrap(a,"createClient",this._getPatchCreateClient()),a),a=>{void 0!==a&&(this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._unwrap(a.RedisClient.prototype,"create_stream"),this._unwrap(a,"createClient"))})]}_getPatchInternalSendCommand(){let a=this;return function(b){return function(c){if(1!=arguments.length||"object"!=typeof c)return b.apply(this,arguments);let f=a.getConfig(),l=void 0===g.trace.getSpan(g.context.active());if(!0===f.requireParentSpan&&l)return b.apply(this,arguments);let m=f?.dbStatementSerializer||j.defaultDbStatementSerializer,n={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(n,{[i.ATTR_DB_SYSTEM]:i.DB_SYSTEM_VALUE_REDIS,[i.ATTR_DB_STATEMENT]:m(c.command,c.args)}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(n,{[h.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_REDIS,[h.ATTR_DB_OPERATION_NAME]:c.command,[h.ATTR_DB_QUERY_TEXT]:m(c.command,c.args)});let o=a.tracer.startSpan(`${k.COMPONENT}-${c.command}`,{kind:g.SpanKind.CLIENT,attributes:n});if(this.connection_options){let b={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(b,{[i.ATTR_NET_PEER_NAME]:this.connection_options.host,[i.ATTR_NET_PEER_PORT]:this.connection_options.port}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(b,{[h.ATTR_SERVER_ADDRESS]:this.connection_options.host,[h.ATTR_SERVER_PORT]:this.connection_options.port}),o.setAttributes(b)}this.address&&a._semconvStability&d.SemconvStability.OLD&&o.setAttribute(i.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let p=arguments[0].callback;if(p){let b=g.context.active();arguments[0].callback=function(h,i){if(f?.responseHook){let b=f.responseHook;(0,d.safeExecuteInTheMiddle)(()=>{b(o,c.command,c.args,i)},b=>{b&&a._diag.error("Error executing responseHook",b)},!0)}return(0,e.endSpan)(o,h),g.context.with(b,p,this,...arguments)}}try{return b.apply(this,arguments)}catch(a){throw(0,e.endSpan)(o,a),a}}}}_getPatchCreateClient(){return function(a){return(0,e.getTracedCreateClient)(a)}}_getPatchCreateStream(){return function(a){return(0,e.getTracedCreateStreamTrace)(a)}}}c.RedisInstrumentationV2_V3=k},553053,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getClientAttributes=void 0;let d=a.r(357223),e=a.r(672921),f=a.r(621472);c.getClientAttributes=function(a,b,c){let g={};return c&f.SemconvStability.OLD&&Object.assign(g,{[e.ATTR_DB_SYSTEM]:e.DB_SYSTEM_VALUE_REDIS,[e.ATTR_NET_PEER_NAME]:b?.socket?.host,[e.ATTR_NET_PEER_PORT]:b?.socket?.port,[e.ATTR_DB_CONNECTION_STRING]:function(a,b){if("string"==typeof b&&b)try{let a=new URL(b);return a.searchParams.delete("user_pwd"),a.username="",a.password="",a.href}catch(b){a.error("failed to sanitize redis connection url",b)}}(a,b?.url)}),c&f.SemconvStability.STABLE&&Object.assign(g,{[d.ATTR_DB_SYSTEM_NAME]:e.DB_SYSTEM_NAME_VALUE_REDIS,[d.ATTR_SERVER_ADDRESS]:b?.socket?.host,[d.ATTR_SERVER_PORT]:b?.socket?.port}),g}},80145,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV4_V5=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(553053),g=a.r(881924),h=a.r(232887),i=a.r(357223),j=a.r(672921),k=Symbol("opentelemetry.instrumentation.redis.open_spans"),l=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class m extends e.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(a){let b=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/commander.js`,["^1.0.0"],(a,b)=>{let c=a.transformCommandArguments;if(!c)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),a;let d=b?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,e.isWrapped)(a?.[d])&&this._unwrap(a,d),this._wrap(a,d,this._getPatchExtendWithCommands(c)),a},a=>{(0,e.isWrapped)(a?.extendWithCommands)&&this._unwrap(a,"extendWithCommands"),(0,e.isWrapped)(a?.attachCommands)&&this._unwrap(a,"attachCommands")}),c=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),this._wrap(b,"exec",this._getPatchMultiCommandsExec(!1)),(0,e.isWrapped)(b?.execAsPipeline)&&this._unwrap(b,"execAsPipeline"),this._wrap(b,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand"),this._wrap(b,"addCommand",this._getPatchMultiCommandsAddCommand()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand")}),d=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return b?.multi&&((0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),this._wrap(b,"multi",this._getPatchRedisClientMulti())),b?.MULTI&&((0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),this._wrap(b,"MULTI",this._getPatchRedisClientMulti())),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand"),this._wrap(b,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(b,"connect",this._getPatchedClientConnect()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),(0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand")});return new e.InstrumentationNodeModuleDefinition(a,["^1.0.0","^5.0.0"],a=>a,()=>{},[b,c,d])}_getPatchExtendWithCommands(a){let b=this;return function(c){return function(d){if(d?.BaseClass?.name!=="RedisClient")return c.apply(this,arguments);let e=d.executor;return d.executor=function(c,d){let f=a(c,d).args;return b._traceClientCommand(e,this,arguments,f)},c.apply(this,arguments)}}}_getPatchMultiCommandsExec(a){let b=this;return function(c){return function(){let d=c.apply(this,arguments);return"function"!=typeof d?.then?(b._diag.error("non-promise result when patching exec/execAsPipeline"),d):d.then(c=>{let d=this[k];return b._endSpansWithRedisReplies(d,c,a),c}).catch(c=>{let d=this[k];if(d){let e="MultiErrorReply"===c.constructor.name?c.replies:Array(d.length).fill(c);b._endSpansWithRedisReplies(d,e,a)}else b._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(c)})}}}_getPatchMultiCommandsAddCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchRedisClientMulti(){return function(a){return function(){let b=a.apply(this,arguments);return b[l]=this.options,b}}}_getPatchRedisClientSendCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchedClientConnect(){let a=this;return function(b){return function(){let c=this.options,e=(0,f.getClientAttributes)(a._diag,c,a._semconvStability),g=a.tracer.startSpan(`${m.COMPONENT}-connect`,{kind:d.SpanKind.CLIENT,attributes:e});return d.context.with(d.trace.setSpan(d.context.active(),g),()=>b.apply(this)).then(a=>(g.end(),a)).catch(a=>(g.recordException(a),g.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),g.end(),Promise.reject(a)))}}}_traceClientCommand(a,b,c,h){if(void 0===d.trace.getSpan(d.context.active())&&this.getConfig().requireParentSpan)return a.apply(b,c);let n=b.options||b[l],o=h[0],p=h.slice(1),q=this.getConfig().dbStatementSerializer||g.defaultDbStatementSerializer,r=(0,f.getClientAttributes)(this._diag,n,this._semconvStability);this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_OPERATION_NAME]=o);try{let a=q(o,p);null!=a&&(this._semconvStability&e.SemconvStability.OLD&&(r[j.ATTR_DB_STATEMENT]=a),this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_QUERY_TEXT]=a))}catch(a){this._diag.error("dbStatementSerializer throw an exception",a,{commandName:o})}let s=this.tracer.startSpan(`${m.COMPONENT}-${o}`,{kind:d.SpanKind.CLIENT,attributes:r}),t=d.context.with(d.trace.setSpan(d.context.active(),s),()=>a.apply(b,c));return"function"==typeof t?.then?t.then(a=>{this._endSpanWithResponse(s,o,p,a,void 0)},a=>{this._endSpanWithResponse(s,o,p,null,a)}):(t[k]=t[k]||[],t[k].push({span:s,commandName:o,commandArgs:p})),t}_endSpansWithRedisReplies(a,b,c=!1){if(!a)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(b.length!==a.length)return this._diag.error("number of multi command spans does not match response from redis");let d=a.map(a=>a.commandName),f=d.every(a=>a===d[0])?(c?"PIPELINE ":"MULTI ")+d[0]:c?"PIPELINE":"MULTI";for(let c=0;c{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;let d=a.r(621472),e=a.r(232887),f=a.r(806841),g=a.r(80145),h={requireParentSpan:!1};class i extends d.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(a={}){const b={...h,...a};super(e.PACKAGE_NAME,e.PACKAGE_VERSION,b),this.instrumentationV2_V3=new f.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new g.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(a={}){let b={...h,...a};super.setConfig(b),this.initialized&&(this.instrumentationV2_V3.setConfig(b),this.instrumentationV4_V5.setConfig(b))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(a){super.setTracerProvider(a),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(a),this.instrumentationV4_V5.setTracerProvider(a))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}c.RedisInstrumentation=i},16860,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;var d=a.r(922540);Object.defineProperty(c,"RedisInstrumentation",{enumerable:!0,get:function(){return d.RedisInstrumentation}})},454951,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=["get","set","setex"],e=["get","mget"],f=["set","setex"];function g(a,b){return a.includes(b.toLowerCase())}function h(a){return g(e,a)?"cache.get":g(f,a)?"cache.put":void 0}function i(a){let b=[],c=a=>{a.forEach(a=>{Array.isArray(a)?c(a):b.push(a)})};return c(a),b}c.GET_COMMANDS=e,c.SET_COMMANDS=f,c.calculateCacheItemSize=function(a){let b=a=>{try{if(Buffer.isBuffer(a))return a.byteLength;if("string"==typeof a)return a.length;if("number"==typeof a)return a.toString().length;else if(null==a)return 0;return JSON.stringify(a).length}catch{return}};return Array.isArray(a)?a.reduce((a,c)=>{let d=b(c);return"number"==typeof d?void 0!==a?a+d:d:a},0):b(a)},c.getCacheKeySafely=function(a,b){try{if(0===b.length)return;let c=a=>"string"==typeof a||"number"==typeof a||Buffer.isBuffer(a)?[a.toString()]:Array.isArray(a)?i(a.map(a=>c(a))):[""],e=b[0];if(g(d,a)&&null!=e)return c(e);return i(b.map(a=>c(a)))}catch{return}},c.getCacheOperation=h,c.isInCommands=g,c.shouldConsiderForCache=function(a,b,c){if(!h(a))return!1;for(let a of b)if(function(a,b){return b.some(b=>a.startsWith(b))}(a,c))return!0;return!1}},745584,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(294614),e=a.r(16860),f=a.r(97153),g=a.r(829770),h=a.r(454951),i="Redis";c._redisOptions={};let j=(a,b,d,e)=>{a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let g=h.getCacheKeySafely(b,d),i=h.getCacheOperation(b);if(!g||!i||!c._redisOptions.cachePrefixes||!h.shouldConsiderForCache(b,g,c._redisOptions.cachePrefixes))return;let j=f.spanToJSON(a).data["net.peer.name"],k=f.spanToJSON(a).data["net.peer.port"];k&&j&&a.setAttributes({"network.peer.address":j,"network.peer.port":k});let l=h.calculateCacheItemSize(e);l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,l),h.isInCommands(h.GET_COMMANDS,b)&&void 0!==l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_HIT,l>0),a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:i,[f.SEMANTIC_ATTRIBUTE_CACHE_KEY]:g});let m=g.join(", ");a.updateName(c._redisOptions.maxCacheKeyLength?f.truncate(m,c._redisOptions.maxCacheKeyLength):m)},k=g.generateInstrumentOnce(`${i}.IORedis`,()=>new d.IORedisInstrumentation({responseHook:j})),l=g.generateInstrumentOnce(`${i}.Redis`,()=>new e.RedisInstrumentation({responseHook:j})),m=Object.assign(()=>{k(),l()},{id:i}),n=f.defineIntegration((a={})=>({name:i,setupOnce(){c._redisOptions=a,m()}}));c.cacheResponseHook=j,c.instrumentRedis=m,c.redisIntegration=n},247765,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},625531,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).PG_VALUES="db.postgresql.values",d.PG_PLAN="db.postgresql.plan",d.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",d.MAX_CLIENT="db.postgresql.max.client"},337652,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=c.METRIC_DB_CLIENT_CONNECTION_COUNT=c.DB_SYSTEM_VALUE_POSTGRESQL=c.DB_CLIENT_CONNECTION_STATE_VALUE_USED=c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=c.ATTR_DB_CLIENT_CONNECTION_STATE=c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",c.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",c.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",c.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",c.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},10035,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=void 0,(d=c.SpanNames||(c.SpanNames={})).QUERY_PREFIX="pg.query",d.CONNECT="pg.connect",d.POOL_CONNECT="pg-pool.connect"},277678,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizedErrorMessage=c.isObjectWithTextString=c.getErrorMessage=c.patchClientConnectCallback=c.patchCallbackPGPool=c.updateCounter=c.getPoolName=c.patchCallback=c.handleExecutionResult=c.handleConfigQuery=c.shouldSkipInstrumentation=c.getSemanticAttributesFromPoolConnection=c.getSemanticAttributesFromConnection=c.getConnectionString=c.parseAndMaskConnectionString=c.parseNormalizedOperationName=c.getQuerySpanName=void 0;let d=a.r(854230),e=a.r(625531),f=a.r(357223),g=a.r(337652),h=a.r(621472),i=a.r(10035);function j(a,b){if(!b)return i.SpanNames.QUERY_PREFIX;let c="string"==typeof b.name&&b.name?b.name:k(b.text);return`${i.SpanNames.QUERY_PREFIX}:${c}${a?` ${a}`:""}`}function k(a){let b=a.trim(),c=b.indexOf(" "),d=-1===c?b:b.slice(0,c);return(d=d.toUpperCase()).endsWith(";")?d.slice(0,-1):d}function l(a){try{let b=new URL(a);return b.username="",b.password="",b.toString()}catch(a){return"postgresql://localhost:5432/"}}function m(a){if("connectionString"in a&&a.connectionString)return l(a.connectionString);let b=a.host||"localhost",c=a.port||5432,d=a.database||"";return`postgresql://${b}:${c}/${d}`}function n(a){if(Number.isInteger(a))return a}function o(a,b){let c={};return b&h.SemconvStability.OLD&&(c={...c,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_DB_USER]:a.user,[g.ATTR_NET_PEER_NAME]:a.host,[g.ATTR_NET_PEER_PORT]:n(a.port)}),b&h.SemconvStability.STABLE&&(c={...c,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:a.host,[f.ATTR_SERVER_PORT]:n(a.port)}),c}function p(a,b,c){"function"==typeof a.responseHook&&(0,h.safeExecuteInTheMiddle)(()=>{a.responseHook(b,{data:c})},a=>{a&&d.diag.error("Error running response hook",a)},!0)}function q(a){let b=a?.name??"PostgreSQLError",c=a?.code??"UNKNOWN";return`PostgreSQL error of type '${b}' occurred (code: ${c})`}c.getQuerySpanName=j,c.parseNormalizedOperationName=k,c.parseAndMaskConnectionString=l,c.getConnectionString=m,c.getSemanticAttributesFromConnection=o,c.getSemanticAttributesFromPoolConnection=function(a,b){let c;try{c=a.connectionString?new URL(a.connectionString):void 0}catch(a){c=void 0}let d={[e.AttributeNames.IDLE_TIMEOUT_MILLIS]:a.idleTimeoutMillis,[e.AttributeNames.MAX_CLIENT]:a.maxClient};return b&h.SemconvStability.OLD&&(d={...d,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:c?.pathname.slice(1)??a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_NET_PEER_NAME]:c?.hostname??a.host,[g.ATTR_NET_PEER_PORT]:Number(c?.port)||n(a.port),[g.ATTR_DB_USER]:c?.username??a.user}),b&h.SemconvStability.STABLE&&(d={...d,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:c?.hostname??a.host,[f.ATTR_SERVER_PORT]:Number(c?.port)||n(a.port)}),d},c.shouldSkipInstrumentation=function(a){return!0===a.requireParentSpan&&void 0===d.trace.getSpan(d.context.active())},c.handleConfigQuery=function(a,b,c,i){let{connectionParameters:k}=this,l=j(k.database,i),m=a.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:o(k,c)});if(!i)return m;if(i.text&&(c&h.SemconvStability.OLD&&m.setAttribute(g.ATTR_DB_STATEMENT,i.text),c&h.SemconvStability.STABLE&&m.setAttribute(f.ATTR_DB_QUERY_TEXT,i.text)),b.enhancedDatabaseReporting&&Array.isArray(i.values))try{let a=i.values.map(a=>null==a?"null":a instanceof Buffer?a.toString():"object"!=typeof a?a.toString():"function"==typeof a.toPostgres?a.toPostgres():JSON.stringify(a));m.setAttribute(e.AttributeNames.PG_VALUES,a)}catch(a){d.diag.error("failed to stringify ",i.values,a)}return"string"==typeof i.name&&m.setAttribute(e.AttributeNames.PG_PLAN,i.name),m},c.handleExecutionResult=p,c.patchCallback=function(a,b,c,e,g){return function(h,i){h?(Object.prototype.hasOwnProperty.call(h,"code")&&(e[f.ATTR_ERROR_TYPE]=h.code),h instanceof Error&&b.recordException(q(h)),b.setStatus({code:d.SpanStatusCode.ERROR,message:h.message})):p(a,b,i),g(),b.end(),c.call(this,h,i)}},c.getPoolName=function(a){let b="";return(b+=(a?.host?`${a.host}`:"unknown_host")+":"+(a?.port?`${a.port}`:"unknown_port")+"/"+(a?.database?`${a.database}`:"unknown_database")).trim()},c.updateCounter=function(a,b,c,d,e){let f=b.totalCount,h=b.waitingCount,i=b.idleCount,j=f-i;return c.add(j-e.used,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),c.add(i-e.idle,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),d.add(h-e.pending,{[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),{used:j,idle:i,pending:h}},c.patchCallbackPGPool=function(a,b){return function(c,e,f){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.call(this,c,e,f)}},c.patchClientConnectCallback=function(a,b){return function(c){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.apply(this,arguments)}},c.getErrorMessage=function(a){return"object"==typeof a&&null!==a&&"message"in a?String(a.message):void 0},c.isObjectWithTextString=function(a){return"object"==typeof a&&"string"==typeof a?.text},c.sanitizedErrorMessage=q},412962,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.66.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},352271,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PgInstrumentation=void 0;let d=a.r(621472),e=a.r(854230),f=a.r(247765),g=a.r(277678),h=a.r(780071),i=a.r(412962),j=a.r(10035),k=a.r(35492),l=a.r(357223),m=a.r(337652);function n(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class o extends d.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._semconvStability=(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(l.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:e.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let a=[">=8.0.3 <9"],b=new d.InstrumentationNodeModuleFile("pg/lib/native/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),c=new d.InstrumentationNodeModuleFile("pg/lib/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new d.InstrumentationNodeModuleDefinition("pg",a,a=>{let b=n(a);return this._patchPgClient(b.Client),a},a=>{let b=n(a);return this._unpatchPgClient(b.Client),a},[c,b]),new d.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],a=>{let b=n(a);return(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"connect",this._getPoolConnectPatch()),b},a=>{let b=n(a);(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect")})]}_patchPgClient(a){if(!a)return;let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"query",this._getClientQueryPatch()),this._wrap(b.prototype,"connect",this._getClientConnectPatch()),a}_unpatchPgClient(a){let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),a}_getClientConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||d.ignoreConnectSpans)return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromConnection(this,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchClientConnectCallback(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}recordOperationDuration(a,b){let c={},e=[l.ATTR_DB_NAMESPACE,l.ATTR_ERROR_TYPE,l.ATTR_SERVER_PORT,l.ATTR_SERVER_ADDRESS,l.ATTR_DB_OPERATION_NAME];this._semconvStability&d.SemconvStability.OLD&&e.push(m.ATTR_DB_SYSTEM),this._semconvStability&d.SemconvStability.STABLE&&e.push(l.ATTR_DB_SYSTEM_NAME),e.forEach(b=>{b in a&&(c[b]=a[b])});let f=(0,k.hrTimeToMilliseconds)((0,k.hrTimeDuration)(b,(0,k.hrTime)()))/1e3;this._operationDuration.record(f,c)}_getClientQueryPatch(){let a=this;return b=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...c){let f;if(g.shouldSkipInstrumentation(a.getConfig()))return b.apply(this,c);let i=(0,k.hrTime)(),j=c[0],n="string"==typeof j,o=g.isObjectWithTextString(j),p=n?{text:j,values:Array.isArray(c[1])?c[1]:void 0}:o?{...j,name:j.name,text:j.text,values:j.values??(Array.isArray(c[1])?c[1]:void 0)}:void 0,q={[m.ATTR_DB_SYSTEM]:m.DB_SYSTEM_VALUE_POSTGRESQL,[l.ATTR_DB_NAMESPACE]:this.database,[l.ATTR_SERVER_PORT]:this.connectionParameters.port,[l.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};p?.text&&(q[l.ATTR_DB_OPERATION_NAME]=g.parseNormalizedOperationName(p?.text));let r=()=>{a.recordOperationDuration(q,i)},s=a.getConfig(),t=g.handleConfigQuery.call(this,a.tracer,s,a._semconvStability,p);if(s.addSqlCommenterCommentToQueries&&(n?c[0]=(0,h.addSqlCommenterComment)(t,j):!o||"name"in j||(c[0]={...j,text:(0,h.addSqlCommenterComment)(t,j.text)})),c.length>0){let b=e.trace.getSpan(e.context.active());if("function"==typeof c[c.length-1])c[c.length-1]=g.patchCallback(s,t,c[c.length-1],q,r),b&&(c[c.length-1]=e.context.bind(e.context.active(),c[c.length-1]));else if("function"==typeof p?.callback){let d=g.patchCallback(a.getConfig(),t,p.callback,q,r);b&&(d=e.context.bind(e.context.active(),d)),c[0].callback=d}}let{requestHook:u}=s;"function"==typeof u&&p&&(0,d.safeExecuteInTheMiddle)(()=>{let{database:a,host:b,port:c,user:d}=this.connectionParameters;u(t,{connection:{database:a,host:b,port:c,user:d},query:{text:p.text,values:p.values,name:p.name}})},b=>{b&&a._diag.error("Error running query hook",b)},!0);try{f=b.apply(this,c)}catch(a){throw a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(a)}),t.end(),a}return f instanceof Promise?f.then(b=>new Promise(c=>{g.handleExecutionResult(a.getConfig(),t,b),r(),t.end(),c(b)})).catch(a=>new Promise((b,c)=>{a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),r(),t.end(),c(a)})):f})}_setPoolConnectEventListeners(a){if(a[f.EVENT_LISTENERS_SET])return;let b=g.getPoolName(a.options);a.on("connect",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("acquire",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("remove",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("release",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a[f.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||(a._setPoolConnectEventListeners(this),d.ignoreConnectSpans))return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.POOL_CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromPoolConnection(this.options,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchCallbackPGPool(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}}function p(a,b){return b instanceof Promise?e.context.bind(e.context.active(),b.then(b=>(a.end(),b)).catch(b=>(b instanceof Error&&a.recordException(g.sanitizedErrorMessage(b)),a.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(b)}),a.end(),Promise.reject(b)))):b}c.PgInstrumentation=o},95274,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.PgInstrumentation=void 0;var d=a.r(352271);Object.defineProperty(c,"PgInstrumentation",{enumerable:!0,get:function(){return d.PgInstrumentation}});var e=a.r(625531);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},277029,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(95274),e=a.r(97153),f=a.r(829770),g="Postgres",h=f.generateInstrumentOnce(g,d.PgInstrumentation,a=>({requireParentSpan:!0,requestHook(a){f.addOriginToSpan(a,"auto.db.otel.postgres")},ignoreConnectSpans:a?.ignoreConnectSpans??!1})),i=e.defineIntegration(a=>({name:g,setupOnce(){h(a)}}));c.instrumentPostgres=h,c.postgresIntegration=i},551578,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(97153),h=a.r(829770),i=a.r(560192),j="PostgresJs",k=[">=3.0.0 <4"],l=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,m=Symbol.for("sentry.query.from.instrumented.sql"),n=h.generateInstrumentOnce(j,a=>new o({requireParentSpan:a?.requireParentSpan??!0,requestHook:a?.requestHook}));class o extends e.InstrumentationBase{constructor(a){super("sentry-postgres-js",g.SDK_VERSION,a)}init(){let a=new e.InstrumentationNodeModuleDefinition("postgres",k,a=>{try{return this._patchPostgres(a)}catch(b){return i.DEBUG_BUILD&&g.debug.error("Failed to patch postgres module:",b),a}},a=>a);return["src","cf/src","cjs/src"].forEach(b=>{a.files.push(new e.InstrumentationNodeModuleFile(`postgres/${b}/query.js`,k,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),a}_patchPostgres(a){let b="function"==typeof a,c=b?a:a.default;if("function"!=typeof c)return i.DEBUG_BUILD&&g.debug.warn("postgres module does not export a function. Skipping instrumentation."),a;let d=this,e=function(...a){let b=Reflect.construct(c,a);if(!b||"function"!=typeof b)return i.DEBUG_BUILD&&g.debug.warn("postgres() did not return a valid instance"),b;let e=d.getConfig();return g.instrumentPostgresJsSql(b,{requireParentSpan:e.requireParentSpan,requestHook:e.requestHook})};for(let a of(Object.setPrototypeOf(e,c),Object.setPrototypeOf(e.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(e,a,b)}return b?e:(g.replaceExports(a,"default",e),a)}_shouldCreateSpans(){let a=this.getConfig();return void 0!==d.trace.getSpan(d.context.active())||!a.requireParentSpan}_setOperationName(a,b,c){if(c)return void a.setAttribute(f.ATTR_DB_OPERATION_NAME,c);let d=b?.match(l);d?.[1]&&a.setAttribute(f.ATTR_DB_OPERATION_NAME,d[1].toUpperCase())}_reconstructQuery(a){if(a?.length)return 1===a.length?a[0]||void 0:a.reduce((a,b,c)=>0===c?b:`${a}$${c}${b}`,"")}_sanitizeSqlQuery(a){return a?a.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{h.addOriginToSpan(d,"auto.db.postgresjs"),d.setAttributes({[f.ATTR_DB_SYSTEM_NAME]:"postgres",[f.ATTR_DB_QUERY_TEXT]:k});let{requestHook:l}=b.getConfig();l&&e.safeExecuteInTheMiddle(()=>l(d,k,void 0),a=>{a&&(d.setAttribute("sentry.hook.error","requestHook failed"),i.DEBUG_BUILD&&g.debug.error(`Error in requestHook for ${j} integration:`,a))},!0);let m=this.resolve;this.resolve=new Proxy(m,{apply:(a,c,e)=>{try{b._setOperationName(d,k,e?.[0]?.command),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in resolve callback:",a)}return Reflect.apply(a,c,e)}});let n=this.reject;this.reject=new Proxy(n,{apply:(a,c,e)=>{try{d.setStatus({code:g.SPAN_STATUS_ERROR,message:e?.[0]?.message||"unknown_error"}),d.setAttribute(f.ATTR_DB_RESPONSE_STATUS_CODE,e?.[0]?.code||"unknown"),d.setAttribute(f.ATTR_ERROR_TYPE,e?.[0]?.name||"unknown"),b._setOperationName(d,k),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in reject callback:",a)}return Reflect.apply(a,c,e)}});try{return c.apply(this,a)}catch(a){throw d.setStatus({code:g.SPAN_STATUS_ERROR,message:a instanceof Error?a.message:"unknown_error"}),d.end(),a}})},a.Query.prototype.handle.__sentry_original__=c,a}_unpatchQueryPrototype(a){return a.Query.prototype.handle.__sentry_original__&&(a.Query.prototype.handle=a.Query.prototype.handle.__sentry_original__),a}}let p=g.defineIntegration(a=>({name:j,setupOnce(){n(a)}}));c.PostgresJsInstrumentation=o,c.instrumentPostgresJs=n,c.postgresJsIntegration=p},882435,a=>{"use strict";a.s([],209479),a.i(209479);var b,c,d=a.i(818414),e=a.i(286508);let f="object"==typeof globalThis?globalThis:a.g,g=Symbol.for("io.opentelemetry.js.api.logs");class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return f[g]?this.getLoggerProvider():(f[g]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=f[g])?void 0:a.call(f,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete f[g],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(385603);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(a=>a.name===g).filter(b=>af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!1},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{name;supportedVersions;patch;unpatch;files;constructor(a,b,c,d,e){this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d,this.files=e||[]}}class ah{supportedVersions;patch;unpatch;name;constructor(a,b,c,d){this.supportedVersions=b,this.patch=c,this.unpatch=d,this.name=(0,p.normalize)(a)}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],882435)},686922,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={PrismaInstrumentation:()=>w,registerInstrumentations:()=>x.registerInstrumentations};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let i of f(b))g.call(a,i)||i===c||d(a,i,{get:()=>b[i],enumerable:!(h=e(b,i))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(854230),l=a.r(882435),m="7.6.0".split(".")[0],n="PRISMA_INSTRUMENTATION",o=`V${m}_PRISMA_INSTRUMENTATION`,p=globalThis,q=a.r(854230),r="true"===process.env.PRISMA_SHOW_ALL_TRACES,s=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:a,ignoreSpanTypes:b}){this.tracerProvider=a,this.ignoreSpanTypes=b}isEnabled(){return!0}getTraceParent(a){let b=q.trace.getSpanContext(a??q.context.active());return b?`00-${b.traceId}-${b.spanId}-0${b.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(a){let b=this.tracerProvider.getTracer("prisma"),c=new Map;for(let d of a.filter(a=>null===a.parentId))!function a(b,c,d,e,f){if(u(c.name,f))return;let g={attributes:c.attributes,kind:"client"===c.kind?q.SpanKind.CLIENT:q.SpanKind.INTERNAL,startTime:c.startTime};b.startActiveSpan(c.name,g,g=>{for(let h of(e.set(c.id,g.spanContext().spanId),c.links&&g.addLinks(c.links.flatMap(a=>{let b=e.get(a);return b?{context:{spanId:b,traceId:g.spanContext().traceId,traceFlags:g.spanContext().traceFlags}}:[]})),d.filter(a=>a.parentId===c.id)))a(b,h,d,e,f);g.end(c.endTime)})}(b,d,a,c,this.ignoreSpanTypes)}getActiveContext(){return q.context.active()}runInChildSpan(a,b){if("string"==typeof a&&(a={name:a}),a.internal&&!r)return b();let c=this.tracerProvider.getTracer("prisma"),d=a.context??this.getActiveContext(),e=`prisma:client:${a.name}`;if(u(e,this.ignoreSpanTypes))return b();if(!1===a.active){let f=c.startSpan(e,a,d);return t(f,b(f,d))}return c.startActiveSpan(e,a,a=>t(a,b(a,d)))}};function t(a,b){var c;return null!=(c=b)&&"function"==typeof c.then?b.then(b=>(a.end(),b),b=>{throw a.end(),b}):(a.end(),b)}function u(a,b){return b.some(b=>"string"==typeof b?b===a:b.test(a))}var v="7.6.0",w=class extends l.InstrumentationBase{tracerProvider;constructor(a={}){super("@prisma/instrumentation",v,a)}setTracerProvider(a){this.tracerProvider=a}init(){return[new l.InstrumentationNodeModuleDefinition("@prisma/client",[v])]}enable(){let a,b=this._config;a={helper:new s({tracerProvider:this.tracerProvider??k.trace.getTracerProvider(),ignoreSpanTypes:b.ignoreSpanTypes??[]})},p[o]=a,p[n]=a}disable(){delete p[o],delete p[n]}isEnabled(){return void 0!==function(){let a=p[o];if(a?.helper)return a.helper;let b=p[n];return b?.helper}()}},x=a.r(882435)},302889,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(686922),f=a.r(97153),g=a.r(829770),h="Prisma";function i(){let a=globalThis.PRISMA_INSTRUMENTATION;return a&&"object"==typeof a&&"helper"in a?a.helper:void 0}class j extends e.PrismaInstrumentation{constructor(a){super(a?.instrumentationConfig)}enable(){super.enable();let a=i();a&&"object"==typeof a&&"dispatchEngineSpans"in a&&(a.createEngineSpan=a=>{let b=d.trace.getTracer("prismaV5Compatibility"),c=b._idGenerator;if(!c)return void f.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{a.spans.forEach(a=>{var e;let f=(e=a.kind,"client"===e?d.SpanKind.CLIENT:d.SpanKind.INTERNAL),g=a.parent_span_id,h=a.span_id,i=a.trace_id,j=a.links?.map(a=>({context:{traceId:a.trace_id,spanId:a.span_id,traceFlags:d.TraceFlags.SAMPLED}})),k=d.trace.setSpanContext(d.context.active(),{traceId:i,spanId:g,traceFlags:d.TraceFlags.SAMPLED});d.context.with(k,()=>{b._idGenerator={generateTraceId:()=>i,generateSpanId:()=>h},b.startSpan(a.name,{kind:f,links:j,startTime:a.start_time,attributes:a.attributes}).end(a.end_time),b._idGenerator=c})})}finally{b._idGenerator=c}})}}let k=g.generateInstrumentOnce(h,a=>new j(a)),l=f.defineIntegration(a=>({name:h,setupOnce(){k(a)},setup(a){i()&&a.on("spanStart",a=>{let b=f.spanToJSON(a);b.description?.startsWith("prisma:")&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===b.description&&b.data["db.query.text"]&&a.updateName(b.data["db.query.text"]),"prisma:engine:db_query"!==b.description||b.data["db.system"]||a.setAttribute("db.system","prisma")})}}));c.instrumentPrisma=k,c.prismaIntegration=l},612971,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},968427,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiLifecycleMethodNames=c.HapiLayerType=c.handlerPatched=c.HapiComponentName=void 0,c.HapiComponentName="@hapi/hapi",c.handlerPatched=Symbol("hapi-handler-patched"),c.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},c.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},19822,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_HTTP_METHOD=void 0,c.ATTR_HTTP_METHOD="http.method"},100306,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).HAPI_TYPE="hapi.type",d.PLUGIN_NAME="hapi.plugin.name",d.EXT_TYPE="server.ext.type"},1606,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getPluginFromInput=c.getExtMetadata=c.getRouteMetadata=c.isPatchableExtMethod=c.isDirectExtInput=c.isLifecycleExtEventObj=c.isLifecycleExtType=c.getPluginName=void 0;let d=a.r(357223),e=a.r(19822),f=a.r(968427),g=a.r(100306),h=a.r(621472);c.getPluginName=function(a){return a.name?a.name:a.pkg.name},c.isLifecycleExtType=a=>"string"==typeof a&&f.HapiLifecycleMethodNames.has(a),c.isLifecycleExtEventObj=a=>{let b=a?.type;return void 0!==b&&(0,c.isLifecycleExtType)(b)},c.isDirectExtInput=a=>Array.isArray(a)&&a.length<=3&&(0,c.isLifecycleExtType)(a[0])&&"function"==typeof a[1],c.isPatchableExtMethod=a=>!Array.isArray(a),c.getRouteMetadata=(a,b,c)=>{let i,j={[d.ATTR_HTTP_ROUTE]:a.path};return b&h.SemconvStability.OLD&&(j[e.ATTR_HTTP_METHOD]=a.method),b&h.SemconvStability.STABLE&&(j[d.ATTR_HTTP_REQUEST_METHOD]=a.method),c?(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.PLUGIN,j[g.AttributeNames.PLUGIN_NAME]=c,i=`${c}: route - ${a.path}`):(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.ROUTER,i=`route - ${a.path}`),{attributes:j,name:i}},c.getExtMetadata=(a,b,c)=>{let d=`ext - ${a}`;return(c&&"method"!==c&&(d=`ext - ${a} - ${c}`),b)?{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT,[g.AttributeNames.PLUGIN_NAME]:b},name:`${b}: ${d}`}:{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT},name:d}},c.getPluginFromInput=a=>"plugin"in a?"plugin"in a.plugin?a.plugin.plugin:a.plugin:a},315858,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(612971),h=a.r(968427),i=a.r(1606);class j extends f.InstrumentationBase{_semconvStability;constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a),this._semconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new f.InstrumentationNodeModuleDefinition(h.HapiComponentName,[">=17.0.0 <22"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return(0,f.isWrapped)(b.server)||this._wrap(b,"server",this._getServerPatch.bind(this)),(0,f.isWrapped)(b.Server)||this._wrap(b,"Server",this._getServerPatch.bind(this)),b},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;this._massUnwrap([b],["server","Server"])})}_getServerPatch(a){let b=this,c=this;return function(d){let e=a.apply(this,[d]);return c._wrap(e,"route",a=>b._getServerRoutePatch.bind(b)(a)),c._wrap(e,"ext",a=>b._getServerExtPatch.bind(b)(a)),c._wrap(e,"register",b._getServerRegisterPatch.bind(b)),e}}_getServerRegisterPatch(a){let b=this;return function(c,d){if(Array.isArray(c))for(let a of c){let c=(0,i.getPluginFromInput)(a);b._wrapRegisterHandler(c)}else{let a=(0,i.getPluginFromInput)(c);b._wrapRegisterHandler(a)}return a.apply(this,[c,d])}}_getServerExtPatch(a,b){let c=this;return function(...d){if(Array.isArray(d[0])){let a=d[0];for(let d=0;db._getServerRoutePatch.bind(b)(a,c)),e._wrap(a,"ext",a=>b._getServerExtPatch.bind(b)(a,c)),d.call(this,a,f)}}_wrapExtMethods(a,b,c){let e=this;if(a instanceof Array)for(let c=0;casync function(...g){if(void 0===d.trace.getSpan(d.context.active()))return await f.call(this,...g);let h=(0,e.getRPCMetadata)(d.context.active());h?.type===e.RPCType.HTTP&&(h.route=a.path);let j=(0,i.getRouteMetadata)(a,c._semconvStability,b),k=c.tracer.startSpan(j.name,{attributes:j.attributes});try{return await d.context.with(d.trace.setSpan(d.context.active(),k),()=>f.call(this,...g))}catch(a){throw k.recordException(a),k.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),a}finally{k.end()}};if("function"==typeof a.handler)a.handler=f(a.handler);else if("function"==typeof a.options){let b=a.options;a.options=function(a){let c=b(a);return"function"==typeof c.handler&&(c.handler=f(c.handler)),c}}else"function"==typeof a.options?.handler&&(a.options.handler=f(a.options.handler));return a}}c.HapiInstrumentation=j},83238,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.HapiInstrumentation=void 0;var d=a.r(315858);Object.defineProperty(c,"HapiInstrumentation",{enumerable:!0,get:function(){return d.HapiInstrumentation}});var e=a.r(100306);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},546750,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(83238),e=a.r(97153),f=a.r(829770),g=a.r(560192),h="Hapi",i=f.generateInstrumentOnce(h,()=>new d.HapiInstrumentation),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}})),k={name:"SentryHapiErrorPlugin",version:e.SDK_VERSION,register:async function(a){a.events.on({name:"request",channels:["error"]},(a,b)=>{var c;if(e.getIsolationScope()!==e.getDefaultIsolationScope()){let b=a.route;b.path&&e.getIsolationScope().setTransactionName(`${b.method.toUpperCase()} ${b.path}`)}else g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");b&&"object"==typeof b&&"error"in b&&b.error&&(c=b.error,e.captureException(c,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function l(a){await a.register(k);let b=e.getClient();b&&b.on("spanStart",a=>{var b;let c,d;b=a,d=(c=e.spanToJSON(b).data)["hapi.type"],!c[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&d&&b.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${d}.hapi`})}),f.ensureIsWrapped(a.register,"hapi")}c.hapiErrorPlugin=k,c.hapiIntegration=j,c.instrumentHapi=i,c.setupHapiErrorHandler=l},749024,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},c.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},64759,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472),f=a.r(97153),g=a.r(749024);class h extends e.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-hono","0.0.1",a)}init(){return[new e.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],a=>this._patch(a))]}_patch(a){let b=this;class c extends a.Hono{constructor(...a){super(...a),b._wrap(this,"get",b._patchHandler()),b._wrap(this,"post",b._patchHandler()),b._wrap(this,"put",b._patchHandler()),b._wrap(this,"delete",b._patchHandler()),b._wrap(this,"options",b._patchHandler()),b._wrap(this,"patch",b._patchHandler()),b._wrap(this,"all",b._patchHandler()),b._wrap(this,"on",b._patchOnHandler()),b._wrap(this,"use",b._patchMiddlewareHandler())}}try{a.Hono=c}catch{return{...a,Hono:c}}return a}_patchHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_patchOnHandler(){let a=this;return function(b){return function(...c){let d=c.slice(2);return b.apply(this,[...c.slice(0,2),...d.map(b=>a._wrapHandler(b))])}}}_patchMiddlewareHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_wrapHandler(a){let b=this;return function(c,e){if(!b.isEnabled())return a.apply(this,[c,e]);let h=c.req.path,i=b.tracer.startSpan(h);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>b._safeExecute(()=>{let d=a.apply(this,[c,e]);if(f.isThenable(d))return d.then(c=>{let d=b._determineHandlerType(c);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:d,[g.AttributeNames.HONO_NAME]:d===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),c});{let c=b._determineHandlerType(d);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:c,[g.AttributeNames.HONO_NAME]:c===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),d}},()=>i.end(),a=>{b._handleError(i,a),i.end()}))}}_safeExecute(a,b,c){try{let d=a();return f.isThenable(d)?d.then(()=>b(),a=>c(a)):b(),d}catch(a){throw c(a),a}}_determineHandlerType(a){return void 0===a?g.HonoTypes.MIDDLEWARE:g.HonoTypes.REQUEST_HANDLER}_handleError(a,b){b instanceof Error&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b))}}c.HonoInstrumentation=h},228328,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(829770),g=a.r(560192),h=a.r(749024),i=a.r(64759),j="Hono",k=f.generateInstrumentOnce(j,()=>new i.HonoInstrumentation({responseHook:a=>{!function(a){let b=e.spanToJSON(a).data,c=b[h.AttributeNames.HONO_TYPE];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.hono`});let f=b[h.AttributeNames.HONO_NAME];if("string"==typeof f&&a.updateName(f),e.getIsolationScope()===e.getDefaultIsolationScope()){g.DEBUG_BUILD&&e.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let i=b[d.ATTR_HTTP_ROUTE],j=b[d.ATTR_HTTP_REQUEST_METHOD];"string"==typeof i&&"string"==typeof j&&e.getIsolationScope().setTransactionName(`${j} ${i}`)}(a)}})),l=e.defineIntegration(()=>({name:j,setupOnce(){k()}}));c.honoIntegration=l,c.instrumentHono=k,c.setupHonoErrorHandler=function(a,b){a.use(async function(a,b){let c=e.httpRequestToRequestData(a.req);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:c}),await b()}),a.use(async function(a,c){await c(),(b?.shouldHandleError||function(a){return a.res.status>=500})(a)&&(a.res.sentry=e.captureException(a.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),f.ensureIsWrapped(a.use,"hono")}},633428,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=void 0,(d=c.KoaLayerType||(c.KoaLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware"},223086,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},689826,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).KOA_TYPE="koa.type",d.KOA_NAME="koa.name"},48355,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isLayerIgnored=c.getMiddlewareMetadata=void 0;let d=a.r(633428),e=a.r(689826),f=a.r(357223);c.getMiddlewareMetadata=(a,b,c,g)=>c?{attributes:{[e.AttributeNames.KOA_NAME]:g?.toString(),[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.ROUTER,[f.ATTR_HTTP_ROUTE]:g?.toString()},name:a._matchedRouteName||`router - ${g}`}:{attributes:{[e.AttributeNames.KOA_NAME]:b.name??"middleware",[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.MIDDLEWARE},name:`middleware - ${b.name}`},c.isLayerIgnored=(a,b)=>!!(Array.isArray(b?.ignoreLayersType)&&b?.ignoreLayersType?.includes(a))},208864,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.kLayerPatched=void 0,c.kLayerPatched=Symbol("koa-layer-patched")},335708,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(633428),g=a.r(223086),h=a.r(48355),i=a.r(35492),j=a.r(208864);class k extends e.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return new e.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return null==b?b:((0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use"),this._wrap(b.prototype,"use",this._getKoaUsePatch.bind(this)),a)},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;(0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use")})}_getKoaUsePatch(a){let b=this;return function(c){let d;return d=c.router?b._patchRouterDispatch(c):b._patchLayer(c,!1),a.apply(this,[d])}}_patchRouterDispatch(a){d.diag.debug("Patching @koa/router dispatch");let b=a.router;for(let a of b?.stack??[]){let b=a.path,c=a.stack;for(let a=0;a{if(void 0===d.trace.getSpan(d.context.active()))return a(f,j);let k=(0,h.getMiddlewareMetadata)(f,a,b,c),l=this.tracer.startSpan(k.name,{attributes:k.attributes}),m=(0,i.getRPCMetadata)(d.context.active());m?.type===i.RPCType.HTTP&&f._matchedRoute&&(m.route=f._matchedRoute.toString());let{requestHook:n}=this.getConfig();n&&(0,e.safeExecuteInTheMiddle)(()=>n(l,{context:f,middlewareLayer:a,layerType:g}),a=>{a&&d.diag.error("koa instrumentation: request hook failed",a)},!0);let o=d.trace.setSpan(d.context.active(),l);return d.context.with(o,async()=>{try{return await a(f,j)}catch(a){throw l.recordException(a),a}finally{l.end()}})})}}c.KoaInstrumentation=k},784208,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=c.AttributeNames=c.KoaInstrumentation=void 0;var d=a.r(335708);Object.defineProperty(c,"KoaInstrumentation",{enumerable:!0,get:function(){return d.KoaInstrumentation}});var e=a.r(689826);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}});var f=a.r(633428);Object.defineProperty(c,"KoaLayerType",{enumerable:!0,get:function(){return f.KoaLayerType}})},326259,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(784208),e=a.r(357223),f=a.r(97153),g=a.r(829770),h=a.r(560192),i=g.generateInstrumentOnce("Koa",d.KoaInstrumentation,(a={})=>({ignoreLayersType:a.ignoreLayersType,requestHook(a,b){g.addOriginToSpan(a,"auto.http.otel.koa");let c=f.spanToJSON(a).data,d=c["koa.type"];d&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${d}.koa`);let i=c["koa.name"];if("string"==typeof i&&a.updateName(i||"< unknown >"),f.getIsolationScope()===f.getDefaultIsolationScope()){h.DEBUG_BUILD&&f.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let j=c[e.ATTR_HTTP_ROUTE],k=b.context?.request?.method?.toUpperCase()||"GET";j&&f.getIsolationScope().setTransactionName(`${k} ${j}`)}})),j=f.defineIntegration((a={})=>({name:"Koa",setupOnce(){i(a)}}));c.instrumentKoa=i,c.koaIntegration=j,c.setupKoaErrorHandler=a=>{a.use(async(a,b)=>{try{await b()}catch(a){throw f.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),a}}),g.ensureIsWrapped(a.use,"koa")}},571897,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectNames=c.ConnectTypes=c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).CONNECT_TYPE="connect.type",d.CONNECT_NAME="connect.name",(e=c.ConnectTypes||(c.ConnectTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",(f=c.ConnectNames||(c.ConnectNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},838828,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},169073,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=void 0,c._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},471850,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.generateRoute=c.replaceCurrentStackRoute=c.addNewStackLayer=void 0;let d=a.r(854230),e=a.r(169073);c.addNewStackLayer=a=>{!1===Array.isArray(a[e._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,e._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),a[e._LAYERS_STORE_PROPERTY].push("/");let b=a[e._LAYERS_STORE_PROPERTY].length;return()=>{b===a[e._LAYERS_STORE_PROPERTY].length?a[e._LAYERS_STORE_PROPERTY].pop():d.diag.warn("Connect: Trying to pop the stack multiple time")}},c.replaceCurrentStackRoute=(a,b)=>{b&&a[e._LAYERS_STORE_PROPERTY].splice(-1,1,b)},c.generateRoute=a=>a[e._LAYERS_STORE_PROPERTY].reduce((a,b)=>a.replace(/\/+$/,"")+b)},822198,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectInstrumentation=c.ANONYMOUS_NAME=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(571897),g=a.r(838828),h=a.r(621472),i=a.r(357223),j=a.r(471850);c.ANONYMOUS_NAME="anonymous";class k extends h.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new h.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_patchApp(a){(0,h.isWrapped)(a.use)||this._wrap(a,"use",this._patchUse.bind(this)),(0,h.isWrapped)(a.handle)||this._wrap(a,"handle",this._patchHandle.bind(this))}_patchConstructor(a){let b=this;return function(...c){let d=a.apply(this,c);return b._patchApp(d),d}}_patchNext(a,b){return function(c){let d=a.apply(this,[c]);return b(),d}}_startSpan(a,b){let d,e,g;a?(d=f.ConnectTypes.REQUEST_HANDLER,g=f.ConnectNames.REQUEST_HANDLER,e=a):(d=f.ConnectTypes.MIDDLEWARE,g=f.ConnectNames.MIDDLEWARE,e=b.name||c.ANONYMOUS_NAME);let h=`${g} - ${e}`,j={attributes:{[i.ATTR_HTTP_ROUTE]:a.length>0?a:"/",[f.AttributeNames.CONNECT_TYPE]:d,[f.AttributeNames.CONNECT_NAME]:e}};return this.tracer.startSpan(h,j)}_patchMiddleware(a,b){let f=this,g=4===b.length;function h(){if(!f.isEnabled())return b.apply(this,arguments);let[h,i,k]=g?[1,2,3]:[0,1,2],l=arguments[h],m=arguments[i],n=arguments[k];(0,j.replaceCurrentStackRoute)(l,a);let o=(0,e.getRPCMetadata)(d.context.active());a&&o?.type===e.RPCType.HTTP&&(o.route=(0,j.generateRoute)(l));let p="";p=a?`request handler - ${a}`:`middleware - ${b.name||c.ANONYMOUS_NAME}`;let q=f._startSpan(a,b);f._diag.debug("start span",p);let r=!1;function s(){r?f._diag.debug(`span ${q.name} - already finished`):(r=!0,f._diag.debug(`finishing span ${q.name}`),q.end()),m.removeListener("close",s)}return m.addListener("close",s),arguments[k]=f._patchNext(n,s),b.apply(this,arguments)}return Object.defineProperty(h,"length",{value:b.length,writable:!1,configurable:!0}),h}_patchUse(a){let b=this;return function(...c){let d=c[c.length-1],e=c[c.length-2]||"";return c[c.length-1]=b._patchMiddleware(e,d),a.apply(this,c)}}_patchHandle(a){let b=this;return function(){let[c,d]=[0,2],e=arguments[c],f=arguments[d],g=(0,j.addNewStackLayer)(e);return"function"==typeof f&&(arguments[d]=b._patchOut(f,g)),a.apply(this,arguments)}}_patchOut(a,b){return function(...c){return b(),Reflect.apply(a,this,c)}}}c.ConnectInstrumentation=k},590396,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectTypes=c.ConnectNames=c.AttributeNames=c.ANONYMOUS_NAME=c.ConnectInstrumentation=void 0;var d=a.r(822198);Object.defineProperty(c,"ConnectInstrumentation",{enumerable:!0,get:function(){return d.ConnectInstrumentation}}),Object.defineProperty(c,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return d.ANONYMOUS_NAME}});var e=a.r(571897);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}}),Object.defineProperty(c,"ConnectNames",{enumerable:!0,get:function(){return e.ConnectNames}}),Object.defineProperty(c,"ConnectTypes",{enumerable:!0,get:function(){return e.ConnectTypes}})},89709,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(590396),e=a.r(97153),f=a.r(829770),g="Connect",h=f.generateInstrumentOnce(g,()=>new d.ConnectInstrumentation);function i(a,b,c,d){e.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),d(a)}c.connectIntegration=e.defineIntegration(()=>({name:g,setupOnce(){h()}})),c.instrumentConnect=h,c.setupConnectErrorHandler=a=>{a.use(i);let b=e.getClient();b&&b.on("spanStart",a=>{!function(a){let b=e.spanToJSON(a).data,c=b["connect.type"];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.connect`});let d=b["connect.name"];"string"==typeof d&&a.updateName(d)}(a)}),f.ensureIsWrapped(a.use,"connect")}},489149,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},1789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SUPPORTED_VERSIONS=c.MODULE_NAME=void 0,c.MODULE_NAME="knex",c.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},453173,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_SQLITE=c.ATTR_NET_TRANSPORT=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.ATTR_NET_TRANSPORT="net.transport",c.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},152691,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.extractTableName=c.extractPortFromConnectionString=c.extractHostFromConnectionString=c.extractDatabaseFromConnectionString=c.limitLength=c.getName=c.mapSystem=c.otelExceptionFromKnexError=c.getFormatter=void 0;let d=a.r(357223),e=a.r(453173);c.getFormatter=a=>{if(a){if(a.client){if(a.client._formatQuery)return a.client._formatQuery.bind(a.client);else if(a.client.SqlString)return a.client.SqlString.format.bind(a.client.SqlString)}if(a.builder)return a.builder.toString.bind(a.builder)}return()=>""},c.otelExceptionFromKnexError=function(a,b){return a&&a instanceof Error?{message:b,code:a.code,stack:a.stack,name:a.name}:a};let f=new Map([["sqlite3",e.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",d.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);c.mapSystem=a=>f.get(a)||a,c.getName=(a,b,c)=>b?c?`${b} ${a}.${c}`:`${b} ${a}`:a,c.limitLength=(a,b)=>"string"==typeof a&&"number"==typeof b&&0{if(a)try{return new URL(a).pathname?.replace(/^\//,"")||void 0}catch{return}},c.extractHostFromConnectionString=a=>{if(a)try{return new URL(a).hostname||void 0}catch{return}},c.extractPortFromConnectionString=a=>{if(a)try{let b=new URL(a).port;return b?parseInt(b,10):void 0}catch{return}},c.extractTableName=a=>{let b=a?._single?.table;return"object"==typeof b?(0,c.extractTableName)(b):b}},645449,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;let d=a.r(854230),e=a.r(489149),f=a.r(1789),g=a.r(621472),h=a.r(152691),i=a.r(357223),j=a.r(453173),k=Symbol("opentelemetry.instrumentation-knex.context"),l={maxQueryLength:1022,requireParentSpan:!1};class m extends g.InstrumentationBase{_semconvStability;constructor(a={}){super(e.PACKAGE_NAME,e.PACKAGE_VERSION,{...l,...a}),this._semconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new g.InstrumentationNodeModuleDefinition(f.MODULE_NAME,f.SUPPORTED_VERSIONS);return a.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),a}getRunnerNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/runner.js`,f.SUPPORTED_VERSIONS,(a,b)=>(this.ensureWrapped(a.prototype,"query",this.createQueryWrapper(b)),a),(a,b)=>(this._unwrap(a.prototype,"query"),a))}getClientNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/client.js`,f.SUPPORTED_VERSIONS,a=>(this.ensureWrapped(a.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"raw",this.storeContext.bind(this)),a),a=>(this._unwrap(a.prototype,"queryBuilder"),this._unwrap(a.prototype,"schemaBuilder"),this._unwrap(a.prototype,"raw"),a))}createQueryWrapper(a){let b=this;return function(c){return function(e){let f=this.client.config,l=h.extractTableName(this.builder),m=e?.method,n=f?.connection?.connectionString,o=f?.connection?.filename||f?.connection?.database||h.extractDatabaseFromConnectionString(n),{maxQueryLength:p}=b.getConfig(),q={"knex.version":a},r=f?.connection?.filename===":memory:"?"inproc":void 0;if(b._semconvStability&g.SemconvStability.OLD&&Object.assign(q,{[j.ATTR_DB_SYSTEM]:h.mapSystem(this.client.driverName),[j.ATTR_DB_SQL_TABLE]:l,[j.ATTR_DB_OPERATION]:m,[j.ATTR_DB_USER]:f?.connection?.user,[j.ATTR_DB_NAME]:o,[j.ATTR_NET_PEER_NAME]:f?.connection?.host??h.extractHostFromConnectionString(n),[j.ATTR_NET_PEER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n),[j.ATTR_NET_TRANSPORT]:r}),b._semconvStability&g.SemconvStability.STABLE&&Object.assign(q,{[i.ATTR_DB_SYSTEM_NAME]:h.mapSystem(this.client.driverName),[i.ATTR_DB_COLLECTION_NAME]:l,[i.ATTR_DB_OPERATION_NAME]:m,[i.ATTR_DB_NAMESPACE]:o,[i.ATTR_SERVER_ADDRESS]:f?.connection?.host??h.extractHostFromConnectionString(n),[i.ATTR_SERVER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n)}),p){let a=h.limitLength(e?.sql,p);b._semconvStability&g.SemconvStability.STABLE&&(q[i.ATTR_DB_QUERY_TEXT]=a),b._semconvStability&g.SemconvStability.OLD&&(q[j.ATTR_DB_STATEMENT]=a)}let s=this.builder[k]||d.context.active(),t=d.trace.getSpan(s),u=t&&d.trace.isSpanContextValid(t.spanContext());if(b._config.requireParentSpan&&!u)return c.bind(this)(...arguments);let v=b.tracer.startSpan(h.getName(o,m,l),{kind:d.SpanKind.CLIENT,attributes:q},s),w=d.trace.setSpan(d.context.active(),v);return d.context.with(w,c,this,...arguments).then(a=>(v.end(),a)).catch(a=>{let b=h.getFormatter(this)(e.sql,e.bindings||[]),c=a.message.replace(b+" - ",""),f=h.otelExceptionFromKnexError(a,c);throw v.recordException(f),v.setStatus({code:d.SpanStatusCode.ERROR,message:c}),v.end(),a})}}}storeContext(a){return function(){let b=a.apply(this,arguments);return Object.defineProperty(b,k,{value:d.context.active()}),b}}ensureWrapped(a,b,c){(0,g.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,c)}}c.KnexInstrumentation=m},82600,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;var d=a.r(645449);Object.defineProperty(c,"KnexInstrumentation",{enumerable:!0,get:function(){return d.KnexInstrumentation}})},722836,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(82600),e=a.r(97153),f=a.r(829770),g="Knex",h=f.generateInstrumentOnce(g,()=>new d.KnexInstrumentation({requireParentSpan:!0})),i=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{data:b}=e.spanToJSON(a);"knex.version"in b&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});c.instrumentKnex=h,c.knexIntegration=i},724445,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MSSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MSSQL="mssql"},99286,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.once=c.getSpanName=void 0,c.getSpanName=function(a,b,c,d){return"execBulkLoad"===a&&d&&b?`${a} ${d} ${b}`:"callProcedure"===a?b?`${a} ${c} ${b}`:`${a} ${c}`:b?`${a} ${b}`:`${a}`},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}}},348421,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},511311,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=c.INJECTED_CTX=void 0;let d=a.r(854230),e=a.r(427699),f=a.r(621472),g=a.r(357223),h=a.r(724445),i=a.r(99286),j=a.r(348421),k=Symbol("opentelemetry.instrumentation-tedious.current-database");c.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let l=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function m(a){Object.defineProperty(this,k,{value:a,writable:!0})}class n extends f.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,f.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new f.InstrumentationNodeModuleDefinition(n.COMPONENT,[">=1.11.0 <20"],a=>{let b=a.Connection.prototype;for(let c of l)(0,f.isWrapped)(b[c])&&this._unwrap(b,c),this._wrap(b,c,this._patchQuery(c,a));return(0,f.isWrapped)(b.connect)&&this._unwrap(b,"connect"),this._wrap(b,"connect",this._patchConnect),a},a=>{if(void 0===a)return;let b=a.Connection.prototype;for(let a of l)this._unwrap(b,a);this._unwrap(b,"connect")})]}_patchConnect(a){return function(){return m.call(this,this.config?.options?.database),this.removeListener("databaseChange",m),this.on("databaseChange",m),this.once("end",()=>{this.removeListener("databaseChange",m)}),a.apply(this,arguments)}}_buildTraceparent(a){let b=a.spanContext();return`00-${b.traceId}-${b.spanId}-0${Number(b.traceFlags||d.TraceFlags.NONE).toString(16)}`}_injectContextInfo(a,b,d){return new Promise(e=>{try{let f=new b.Request("set context_info @opentelemetry_traceparent",a=>{e()});Object.defineProperty(f,c.INJECTED_CTX,{value:!0});let g=Buffer.from(d,"utf8");f.addParameter("opentelemetry_traceparent",b.TYPES.VarBinary,g,{length:g.length}),a.execSql(f)}catch{e()}})}_shouldInjectFor(a){return"execSql"===a||"execSqlBatch"===a||"callProcedure"===a||"execute"===a}_patchQuery(a,b){return j=>{let l=this;function m(m){if(m?.[c.INJECTED_CTX])return j.apply(this,arguments);if(!(m instanceof e.EventEmitter))return l._diag.warn(`Unexpected invocation of patched ${a} method. Span not recorded`),j.apply(this,arguments);let n=0,o=0,p=()=>o++,q=()=>n++,r=this[k],s="sp_prepare"===m.sqlTextOrProcedure&&m.parametersByName?.stmt?.value?m.parametersByName.stmt.value:m.sqlTextOrProcedure,t={};l._dbSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_DB_SYSTEM]=h.DB_SYSTEM_VALUE_MSSQL,t[h.ATTR_DB_NAME]=r,t[h.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,t[h.ATTR_DB_STATEMENT]=s,t[h.ATTR_DB_SQL_TABLE]=m.table),l._dbSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_DB_NAMESPACE]=r,t[g.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,t[g.ATTR_DB_QUERY_TEXT]=s,t[g.ATTR_DB_COLLECTION_NAME]=m.table),l._netSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_NET_PEER_NAME]=this.config?.server,t[h.ATTR_NET_PEER_PORT]=this.config?.options?.port),l._netSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_SERVER_ADDRESS]=this.config?.server,t[g.ATTR_SERVER_PORT]=this.config?.options?.port);let u=l.tracer.startSpan((0,i.getSpanName)(a,r,s,m.table),{kind:d.SpanKind.CLIENT,attributes:t}),v=(0,i.once)(a=>{m.removeListener("done",p),m.removeListener("doneInProc",p),m.removeListener("doneProc",q),m.removeListener("error",v),this.removeListener("end",v),u.setAttribute("tedious.procedure_count",n),u.setAttribute("tedious.statement_count",o),a&&u.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),u.end()});m.on("done",p),m.on("doneInProc",p),m.on("doneProc",q),m.once("error",v),this.on("end",v),"function"==typeof m.callback?l._wrap(m,"callback",l._patchCallbackQuery(v)):l._diag.error("Expected request.callback to be a function");let w=()=>d.context.with(d.trace.setSpan(d.context.active(),u),j,this,...arguments);if(!(l.getConfig().enableTraceContextPropagation&&l._shouldInjectFor(a)))return w();let x=l._buildTraceparent(u);l._injectContextInfo(this,b,x).finally(w)}return Object.defineProperty(m,"length",{value:j.length,writable:!1}),m}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c),b.apply(this,arguments)}}}c.TediousInstrumentation=n},734036,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=void 0;var d=a.r(511311);Object.defineProperty(c,"TediousInstrumentation",{enumerable:!0,get:function(){return d.TediousInstrumentation}})},441418,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(734036),e=a.r(97153),f=a.r(829770),g=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),h="Tedious",i=f.generateInstrumentOnce(h,()=>new d.TediousInstrumentation({})),j=e.defineIntegration(()=>{let a;return{name:h,setupOnce(){let b=i();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{description:b,data:c}=e.spanToJSON(a);if(!b||"mssql"!==c["db.system"])return;let d=b.split(" ")[0]||"";g.has(d)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});c.instrumentTedious=i,c.tediousIntegration=j},93496,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},779155,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(93496),g="generic-pool";class h extends e.InstrumentationBase{_isDisabled=!1;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition(g,[">=3.0.0 <4"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquirePatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.4.0 <3"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <2.4"],a=>(this._isDisabled=!1,(0,e.isWrapped)(a.Pool)&&this._unwrap(a,"Pool"),this._wrap(a,"Pool",this._poolWrapper.bind(this)),a),a=>(this._isDisabled=!0,a))]}_acquirePatcher(a){let b=this;return function(...c){let e=d.context.active(),f=b.tracer.startSpan("generic-pool.acquire",{},e);return d.context.with(d.trace.setSpan(e,f),()=>a.call(this,...c).then(a=>(f.end(),a),a=>{throw f.recordException(a),f.end(),a}))}}_poolWrapper(a){let b=this;return function(){let c=a.apply(this,arguments);return b._wrap(c,"acquire",b._acquireWithCallbacksPatcher.bind(b)),c}}_acquireWithCallbacksPatcher(a){let b=this;return function(c,e){if(b._isDisabled)return a.call(this,c,e);let f=d.context.active(),g=b.tracer.startSpan("generic-pool.acquire",{},f);return d.context.with(d.trace.setSpan(f,g),()=>{a.call(this,(a,b)=>{if(g.end(),c)return c(a,b)},e)})}}}c.GenericPoolInstrumentation=h},790504,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;var d=a.r(779155);Object.defineProperty(c,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return d.GenericPoolInstrumentation}})},975446,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(790504),e=a.r(97153),f=a.r(829770),g="GenericPool",h=f.generateInstrumentOnce(g,()=>new d.GenericPoolInstrumentation({}));c.genericPoolIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let b=e.spanToJSON(a).description;("generic-pool.aquire"===b||"generic-pool.acquire"===b)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),c.instrumentGenericPool=h},915181,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.31.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},366750,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;let d=a.r(621472),e=a.r(854230),f=a.r(915181),g="dataloader";function h(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class i extends d.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new d.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <3"],a=>{let b=h(a);return this._patchLoad(b.prototype),this._patchLoadMany(b.prototype),this._patchPrime(b.prototype),this._patchClear(b.prototype),this._patchClearAll(b.prototype),this._getPatchedConstructor(b)},a=>{let b=h(a);["load","loadMany","prime","clear","clearAll"].forEach(a=>{(0,d.isWrapped)(b.prototype[a])&&this._unwrap(b.prototype,a)})})]}shouldCreateSpans(){let a=this.getConfig();return void 0!==e.trace.getSpan(e.context.active())||!a.requireParentSpan}getSpanName(a,b){let c=a.name;return null==c?`${g}.${b}`:`${g}.${b} ${c}`}_wrapBatchLoadFn(a){let b=this;return function(...c){if(!b.isEnabled()||!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"batch"),{links:this._batch?.spanLinks},d);return e.context.with(e.trace.setSpan(d,f),()=>a.apply(this,c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a}))}}_getPatchedConstructor(a){let b=this,c=a.prototype;if(!b.isEnabled())return a;function e(...c){return"function"==typeof c[0]&&((0,d.isWrapped)(c[0])&&b._unwrap(c,0),c[0]=b._wrapBatchLoadFn(c[0])),a.apply(this,c)}return e.prototype=c,e}_patchLoad(a){(0,d.isWrapped)(a.load)&&this._unwrap(a,"load"),this._wrap(a,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"load"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>{let b=a.call(this,...c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:f.spanContext()})),b})}}_patchLoadMany(a){(0,d.isWrapped)(a.loadMany)&&this._unwrap(a,"loadMany"),this._wrap(a,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"loadMany"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c).then(a=>(f.end(),a)))}}_patchPrime(a){(0,d.isWrapped)(a.prime)&&this._unwrap(a,"prime"),this._wrap(a,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"prime"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClear(a){(0,d.isWrapped)(a.clear)&&this._unwrap(a,"clear"),this._wrap(a,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clear"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClearAll(a){(0,d.isWrapped)(a.clearAll)&&this._unwrap(a,"clearAll"),this._wrap(a,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clearAll"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}}c.DataloaderInstrumentation=i},430363,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;var d=a.r(366750);Object.defineProperty(c,"DataloaderInstrumentation",{enumerable:!0,get:function(){return d.DataloaderInstrumentation}})},235153,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(430363),e=a.r(97153),f=a.r(829770),g="Dataloader",h=f.generateInstrumentOnce(g,()=>new d.DataloaderInstrumentation({requireParentSpan:!0}));c.dataloaderIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>{b.on("spanStart",a=>{let b=e.spanToJSON(a);b.description?.startsWith("dataloader")&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===b.description||"dataloader.loadMany"===b.description||"dataloader.batch"===b.description)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),c.instrumentDataloader=h},73198,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION=void 0,c.ATTR_MESSAGING_OPERATION="messaging.operation",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port"},638354,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_MESSAGING_CONVERSATION_ID=c.OLD_ATTR_MESSAGING_MESSAGE_ID=c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=c.ATTR_MESSAGING_URL=c.ATTR_MESSAGING_PROTOCOL_VERSION=c.ATTR_MESSAGING_PROTOCOL=c.MESSAGING_OPERATION_VALUE_PROCESS=c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=c.ATTR_MESSAGING_DESTINATION_KIND=c.ATTR_MESSAGING_DESTINATION=void 0,c.ATTR_MESSAGING_DESTINATION="messaging.destination",c.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",c.MESSAGING_OPERATION_VALUE_PROCESS="process",c.ATTR_MESSAGING_PROTOCOL="messaging.protocol",c.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",c.ATTR_MESSAGING_URL="messaging.url",c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",c.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",c.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},677887,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.DEFAULT_CONFIG=c.EndOperation=void 0,(d=c.EndOperation||(c.EndOperation={})).AutoAck="auto ack",d.Ack="ack",d.AckAll="ackAll",d.Reject="reject",d.Nack="nack",d.NackAll="nackAll",d.ChannelClosed="channel closed",d.ChannelError="channel error",d.InstrumentationTimeout="instrumentation timeout",c.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},722650,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isConfirmChannelTracing=c.unmarkConfirmChannelTracing=c.markConfirmChannelTracing=c.getConnectionAttributesFromUrl=c.getConnectionAttributesFromServer=c.normalizeExchange=c.CONNECTION_ATTRIBUTES=c.CHANNEL_CONSUME_TIMEOUT_TIMER=c.CHANNEL_SPANS_NOT_ENDED=c.MESSAGE_STORED_SPAN=void 0;let d=a.r(854230),e=a.r(621472),f=a.r(357223),g=a.r(73198),h=a.r(638354);c.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),c.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),c.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),c.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let i=(0,d.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");c.normalizeExchange=a=>""!==a?a:"";let j=(a,b)=>a||("AMQP"===b?5672:5671),k=a=>{let b=a||"amqp";return(b.endsWith(":")?b.substring(0,b.length-1):b).toUpperCase()},l=(a,b,c,e)=>c?{[b]:c}:(d.diag.error(`amqplib instrumentation: could not extract connection attribute ${e} from user supplied url`,{url:a}),{});c.getConnectionAttributesFromServer=a=>{let b=a.serverProperties.product?.toLowerCase?.();return b?{[g.ATTR_MESSAGING_SYSTEM]:b}:{}},c.getConnectionAttributesFromUrl=(a,b)=>{let c={[h.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(a=a||"amqp://localhost")){let d=a,i=k(d?.protocol);Object.assign(c,{...l(a,h.ATTR_MESSAGING_PROTOCOL,i,"protocol")});let m=d?.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(a,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(a,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(d.port,i);b&e.SemconvStability.OLD&&Object.assign(c,l(a,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(a,f.ATTR_SERVER_PORT,n,"port"))}else{let i=a.replace(/:[^:@/]*@/,":***@");c[h.ATTR_MESSAGING_URL]=i;try{let a=new URL(i),d=k(a.protocol);Object.assign(c,{...l(i,h.ATTR_MESSAGING_PROTOCOL,d,"protocol")});let m=a.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(i,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(i,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(a.port?parseInt(a.port):void 0,d);b&e.SemconvStability.OLD&&Object.assign(c,l(i,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(i,f.ATTR_SERVER_PORT,n,"port"))}catch(a){d.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:i,err:a})}}return c},c.markConfirmChannelTracing=a=>a.setValue(i,!0),c.unmarkConfirmChannelTracing=a=>a.deleteValue(i),c.isConfirmChannelTracing=a=>!0===a.getValue(i)},109866,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.61.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},232536,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AmqplibInstrumentation=void 0;let d=a.r(854230),e=a.r(35492),f=a.r(621472),g=a.r(73198),h=a.r(638354),i=a.r(677887),j=a.r(722650),k=a.r(109866),l=[">=0.5.5 <1"];class m extends f.InstrumentationBase{_netSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...i.DEFAULT_CONFIG,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...i.DEFAULT_CONFIG,...a})}init(){let a=new f.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),b=new f.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),c=new f.InstrumentationNodeModuleFile("amqplib/lib/connect.js",l,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new f.InstrumentationNodeModuleDefinition("amqplib",l,void 0,void 0,[a,c,b])}patchConnect(a){return a=this.unpatchConnect(a),(0,f.isWrapped)(a.connect)||this._wrap(a,"connect",this.getConnectPatch.bind(this)),a}unpatchConnect(a){return(0,f.isWrapped)(a.connect)&&this._unwrap(a,"connect"),a}patchChannelModel(a,b){return(0,f.isWrapped)(a.Channel.prototype.publish)||this._wrap(a.Channel.prototype,"publish",this.getPublishPatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.consume)||this._wrap(a.Channel.prototype,"consume",this.getConsumePatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.ack)||this._wrap(a.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,i.EndOperation.Ack)),(0,f.isWrapped)(a.Channel.prototype.nack)||this._wrap(a.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,i.EndOperation.Nack)),(0,f.isWrapped)(a.Channel.prototype.reject)||this._wrap(a.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,i.EndOperation.Reject)),(0,f.isWrapped)(a.Channel.prototype.ackAll)||this._wrap(a.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,i.EndOperation.AckAll)),(0,f.isWrapped)(a.Channel.prototype.nackAll)||this._wrap(a.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,i.EndOperation.NackAll)),(0,f.isWrapped)(a.Channel.prototype.emit)||this._wrap(a.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)||this._wrap(a.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,b)),a}unpatchChannelModel(a){return(0,f.isWrapped)(a.Channel.prototype.publish)&&this._unwrap(a.Channel.prototype,"publish"),(0,f.isWrapped)(a.Channel.prototype.consume)&&this._unwrap(a.Channel.prototype,"consume"),(0,f.isWrapped)(a.Channel.prototype.ack)&&this._unwrap(a.Channel.prototype,"ack"),(0,f.isWrapped)(a.Channel.prototype.nack)&&this._unwrap(a.Channel.prototype,"nack"),(0,f.isWrapped)(a.Channel.prototype.reject)&&this._unwrap(a.Channel.prototype,"reject"),(0,f.isWrapped)(a.Channel.prototype.ackAll)&&this._unwrap(a.Channel.prototype,"ackAll"),(0,f.isWrapped)(a.Channel.prototype.nackAll)&&this._unwrap(a.Channel.prototype,"nackAll"),(0,f.isWrapped)(a.Channel.prototype.emit)&&this._unwrap(a.Channel.prototype,"emit"),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)&&this._unwrap(a.ConfirmChannel.prototype,"publish"),a}getConnectPatch(a){let b=this;return function(c,d,e){return a.call(this,c,d,function(a,d){if(null==a){let a=(0,j.getConnectionAttributesFromUrl)(c,b._netSemconvStability),e=(0,j.getConnectionAttributesFromServer)(d);d[j.CONNECTION_ATTRIBUTES]={...a,...e}}e.apply(this,arguments)})}}getChannelEmitPatch(a){let b=this;return function(c){if("close"===c){b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelClosed,void 0);let a=this[j.CHANNEL_CONSUME_TIMEOUT_TIMER];a&&clearInterval(a),this[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===c&&b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelError,void 0);return a.apply(this,arguments)}}getAckAllPatch(a,b,c){let d=this;return function(e){return d.endAllSpansOnChannel(this,a,b,e),c.apply(this,arguments)}}getAckPatch(a,b,c){let d=this;return function(e,f,g){let h=b===i.EndOperation.Reject?f:g,k=this[j.CHANNEL_SPANS_NOT_ENDED]??[],l=k.findIndex(a=>a.msg===e);if(l<0)d.endConsumerSpan(e,a,b,h);else if(b!==i.EndOperation.Reject&&f){for(let c=0;c<=l;c++)d.endConsumerSpan(k[c].msg,a,b,h);k.splice(0,l+1)}else d.endConsumerSpan(e,a,b,h),k.splice(l,1);return c.apply(this,arguments)}}getConsumePatch(a,b){let c=this;return function(k,l,m){let n=this;if(!Object.prototype.hasOwnProperty.call(n,j.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:a}=c.getConfig();if(a){let b=setInterval(()=>{c.checkConsumeTimeoutOnChannel(n)},a);b.unref(),n[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=b}n[j.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(b){let o;if(!b)return l.call(this,b);let p=b.properties.headers??{},q=d.propagation.extract(d.ROOT_CONTEXT,p),r=b.fields?.exchange;if(c._config.useLinksForConsume){let a=q?d.trace.getSpan(q)?.spanContext():void 0;q=void 0,a&&(o=[{context:a}])}let s=c.tracer.startSpan(`${k} process`,{kind:d.SpanKind.CONSUMER,attributes:{...n?.connection?.[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:r,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:b.fields?.routingKey,[g.ATTR_MESSAGING_OPERATION]:h.MESSAGING_OPERATION_VALUE_PROCESS,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:b?.properties.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:b?.properties.correlationId},links:o},q),{consumeHook:t}=c.getConfig();t&&(0,f.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:a,msg:b}),a=>{a&&d.diag.error("amqplib instrumentation: consumerHook error",a)},!0),m?.noAck||(n[j.CHANNEL_SPANS_NOT_ENDED].push({msg:b,timeOfConsume:(0,e.hrTime)()}),b[j.MESSAGE_STORED_SPAN]=s);let u=q||d.ROOT_CONTEXT;d.context.with(d.trace.setSpan(u,s),()=>{l.call(this,b)}),m?.noAck&&(c.callConsumeEndHook(s,b,!1,i.EndOperation.AutoAck),s.end())},b.apply(this,arguments)}}getConfirmedPublishPatch(a,b){let c=this;return function(e,g,h,i,k){let{span:l,modifiedOptions:m}=c.createPublishSpan(c,e,g,this,i),{publishHook:n}=c.getConfig();n&&(0,f.safeExecuteInTheMiddle)(()=>n(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:m,isConfirmChannel:!0}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let o=(0,j.markConfirmChannelTracing)(d.context.active()),p=[...arguments];return p[3]=m,p[4]=d.context.bind((0,j.unmarkConfirmChannelTracing)(d.trace.setSpan(o,l)),function(b,j){try{k?.call(this,b,j)}finally{let{publishConfirmHook:j}=c.getConfig();j&&(0,f.safeExecuteInTheMiddle)(()=>j(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:i,isConfirmChannel:!0,confirmError:b}),a=>{a&&d.diag.error("amqplib instrumentation: publishConfirmHook error",a)},!0),b&&l.setStatus({code:d.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),l.end()}}),d.context.with(o,b.bind(this,...p))}}getPublishPatch(a,b){let c=this;return function(e,g,h,i){if((0,j.isConfirmChannelTracing)(d.context.active()))return b.apply(this,arguments);{let{span:j,modifiedOptions:k}=c.createPublishSpan(c,e,g,this,i),{publishHook:l}=c.getConfig();l&&(0,f.safeExecuteInTheMiddle)(()=>l(j,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:k,isConfirmChannel:!1}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let m=[...arguments];m[3]=k;let n=b.apply(this,m);return j.end(),n}}}createPublishSpan(a,b,c,e,f){let g=(0,j.normalizeExchange)(b),i=a.tracer.startSpan(`publish ${g}`,{kind:d.SpanKind.PRODUCER,attributes:{...e.connection[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:b,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:c,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:f?.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:f?.correlationId}}),k=f??{};return k.headers=k.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),i),k.headers),{span:i,modifiedOptions:k}}endConsumerSpan(a,b,c,e){let f=a[j.MESSAGE_STORED_SPAN];f&&(!1!==b&&f.setStatus({code:d.SpanStatusCode.ERROR,message:c!==i.EndOperation.ChannelClosed&&c!==i.EndOperation.ChannelError?`${c} called on message${!0===e?" with requeue":!1===e?" without requeue":""}`:c}),this.callConsumeEndHook(f,a,b,c),f.end(),a[j.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(a,b,c,d){(a[j.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(a=>{this.endConsumerSpan(a.msg,b,c,d)}),a[j.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(a,b,c,e){let{consumeEndHook:g}=this.getConfig();g&&(0,f.safeExecuteInTheMiddle)(()=>g(a,{msg:b,rejected:c,endOperation:e}),a=>{a&&d.diag.error("amqplib instrumentation: consumerEndHook error",a)},!0)}checkConsumeTimeoutOnChannel(a){let b,c=(0,e.hrTime)(),d=a[j.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:f}=this.getConfig();for(b=0;b{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EndOperation=c.DEFAULT_CONFIG=c.AmqplibInstrumentation=void 0;var d=a.r(232536);Object.defineProperty(c,"AmqplibInstrumentation",{enumerable:!0,get:function(){return d.AmqplibInstrumentation}});var e=a.r(677887);Object.defineProperty(c,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return e.DEFAULT_CONFIG}}),Object.defineProperty(c,"EndOperation",{enumerable:!0,get:function(){return e.EndOperation}})},109041,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(129728),e=a.r(97153),f=a.r(829770),g="Amqplib",h={consumeEndHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.consumer")},publishHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.publisher")}},i=f.generateInstrumentOnce(g,()=>new d.AmqplibInstrumentation(h));c.amqplibIntegration=e.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentAmqplib=i},413990,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.INTEGRATION_NAME="VercelAI"},167991,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(413990),g=[">=3.0.0 <7"],h=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function i(a){"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)&&(function(a){for(let b of a){if(!("object"==typeof b&&null!==b&&"type"in b&&"error"in b&&"toolName"in b&&"toolCallId"in b&&"tool-error"===b.type&&b.error instanceof Error))continue;let a=e._INTERNAL_getSpanContextForToolCallId(b.toolCallId);a?e.withScope(c=>{c.setContext("trace",{trace_id:a.traceId,span_id:a.spanId}),c.setTag("vercel.ai.tool.name",b.toolName),c.setTag("vercel.ai.tool.callId",b.toolCallId),c.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):e.withScope(a=>{a.setTag("vercel.ai.tool.name",b.toolName),a.setTag("vercel.ai.tool.callId",b.toolCallId),a.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(a.content),j(a.content))}function j(a){for(let b of a)"object"==typeof b&&null!==b&&"toolCallId"in b&&"string"==typeof b.toolCallId&&e._INTERNAL_cleanupToolCallSpanContext(b.toolCallId)}function k(a,b,c,d){return{recordInputs:a?.recordInputs!==void 0?a.recordInputs:void 0!==b.recordInputs?b.recordInputs:!0===c||d,recordOutputs:a?.recordOutputs!==void 0?a.recordOutputs:void 0!==b.recordOutputs?b.recordOutputs:!0===c||d}}class l extends d.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(a={}){super("@sentry/instrumentation-vercel-ai",e.SDK_VERSION,a),l.prototype.__init.call(this),l.prototype.__init2.call(this)}init(){return new d.InstrumentationNodeModuleDefinition("ai",g,this._patch.bind(this))}callWhenPatched(a){this._isPatched?a():this._callbacks.push(a)}_patch(a){this._isPatched=!0,this._callbacks.forEach(a=>a()),this._callbacks=[];let b=a=>new Proxy(a,{apply:(a,b,c)=>{let d=c[0].experimental_telemetry||{},g=d.isEnabled,h=e.getClient(),j=h?.getIntegrationByName(f.INTEGRATION_NAME),{recordInputs:l,recordOutputs:m}=k(j?.options,d,g,!!j&&!!h?.getOptions().sendDefaultPii);return c[0].experimental_telemetry={...d,isEnabled:void 0===g||g,recordInputs:l,recordOutputs:m},e.handleCallbackErrors(()=>Reflect.apply(a,b,c),a=>{a&&"object"==typeof a&&e.addNonEnumerableProperty(a,"_sentry_active_span",e.getActiveSpan())},()=>{},a=>{i(a)})}});if("[object Module]"===Object.prototype.toString.call(a)){for(let c of h)null!=a[c]&&(a[c]=b(a[c]));return a}{let c=h.reduce((c,d)=>(null!=a[d]&&(c[d]=b(a[d])),c),{});return{...a,...c}}}}c.SentryVercelAiInstrumentation=l,c.cleanupToolCallSpanContexts=j,c.determineRecordingSettings=k,c.processToolCallResults=i},846940,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(413990),g=a.r(167991),h=e.generateInstrumentOnce(f.INTEGRATION_NAME,()=>new g.SentryVercelAiInstrumentation({})),i=d.defineIntegration((a={})=>{let b;return{name:f.INTEGRATION_NAME,options:a,setupOnce(){b=h()},afterAllSetup(c){let e;a.force??(e=c.getIntegrationByName("Modules"),!!e?.getModules?.()?.ai)?d.addVercelAiProcessors(c):b?.callWhenPatched(()=>d.addVercelAiProcessors(c))}}});c.instrumentVercelAi=h,c.vercelAIIntegration=i},921823,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=4.0.0 <7"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-openai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("openai",f,this._patch.bind(this))}_patch(a){let b=a;return b=this._patchClient(b,"OpenAI"),b=this._patchClient(b,"AzureOpenAI")}_patchClient(a,b){let c=a[b];if(!c)return a;let d=this.getConfig(),f=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.OPENAI_INTEGRATION_NAME))return Reflect.construct(c,a);let b=Reflect.construct(c,a);return e.instrumentOpenAiClient(b,d)};for(let a of(Object.setPrototypeOf(f,c),Object.setPrototypeOf(f.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(f,a,b)}try{a[b]=f}catch{Object.defineProperty(a,b,{value:f,writable:!0,configurable:!0,enumerable:!0})}if(a.default===c)try{a.default=f}catch{Object.defineProperty(a,"default",{value:f,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryOpenAiInstrumentation=g},245727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(921823),g=e.generateInstrumentOnce(d.OPENAI_INTEGRATION_NAME,a=>new f.SentryOpenAiInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.OPENAI_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentOpenAi=g,c.openAIIntegration=h},749490,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.19.2 <1.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-anthropic-ai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",f,this._patch.bind(this))}_patch(a){let b=a.Anthropic,c=this.getConfig(),d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentAnthropicAiClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}try{a.Anthropic=d}catch{Object.defineProperty(a,"Anthropic",{value:d,writable:!0,configurable:!0,enumerable:!0})}if(a.default===b)try{a.default=d}catch{Object.defineProperty(a,"default",{value:d,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryAnthropicAiInstrumentation=g},655203,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(749490),g=e.generateInstrumentOnce(d.ANTHROPIC_AI_INTEGRATION_NAME,a=>new f.SentryAnthropicAiInstrumentation(a));c.anthropicAIIntegration=d.defineIntegration((a={})=>({name:d.ANTHROPIC_AI_INTEGRATION_NAME,options:a,setupOnce(){g(a)}})),c.instrumentAnthropicAi=g},376746,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.10.0 <2"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-google-genai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@google/genai",f,a=>this._patch(a),a=>a,[new d.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",f,a=>this._patch(a),a=>a)])}_patch(a){let b=a.GoogleGenAI,c=this.getConfig();if("function"!=typeof b)return a;let d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentGoogleGenAIClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}return e.replaceExports(a,"GoogleGenAI",d),a}}c.SentryGoogleGenAiInstrumentation=g},257489,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(376746),g=e.generateInstrumentOnce(d.GOOGLE_GENAI_INTEGRATION_NAME,a=>new f.SentryGoogleGenAiInstrumentation(a));c.googleGenAIIntegration=d.defineIntegration((a={})=>({name:d.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){g(a)}})),c.instrumentGoogleGenAI=g},853076,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.1.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langchain",e.SDK_VERSION,a)}init(){let a=[];for(let b of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])a.push(new d.InstrumentationNodeModuleDefinition(b,f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile(`${b}/dist/index.cjs`,f,this._patch.bind(this),a=>a)]));return a.push(new d.InstrumentationNodeModuleDefinition("langchain",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",f,this._patch.bind(this),a=>a)])),a}_patch(a){e._INTERNAL_skipAiProviderWrapping([e.OPENAI_INTEGRATION_NAME,e.ANTHROPIC_AI_INTEGRATION_NAME,e.GOOGLE_GENAI_INTEGRATION_NAME]);let b=e.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(a,b),a}_patchRunnableMethods(a,b){let c=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],d=Object.values(a.universal_exports??a).find(a=>"function"==typeof a&&c.includes(a.name));if(!d)return;let e=d.prototype;if(!e.__sentry_patched__)for(let a of(e.__sentry_patched__=!0,["invoke","stream","batch"])){let c=e[a];"function"==typeof c&&(e[a]=function(a,b,c){return new Proxy(a,{apply(a,c,d){var e,f;let g=d[1];(!g||"object"!=typeof g||Array.isArray(g))&&(g={},d[1]=g);let h=(e=g.callbacks,f=b,e?Array.isArray(e)?e.includes(f)?e:[...e,f]:"object"==typeof e?[e,f]:e:[f]);return g.callbacks=h,Reflect.apply(a,c,d)}})}(c,b))}}}c.SentryLangChainInstrumentation=g},301180,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(853076),g=e.generateInstrumentOnce(d.LANGCHAIN_INTEGRATION_NAME,a=>new f.SentryLangChainInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGCHAIN_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangChain=g,c.langChainIntegration=h},411643,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=[">=0.0.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langgraph",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@langchain/langgraph",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",f,this._patch.bind(this),a=>a)])}_patch(a){return a.StateGraph&&"function"==typeof a.StateGraph&&e.instrumentLangGraph(a.StateGraph.prototype,this.getConfig()),a}}c.SentryLangGraphInstrumentation=g},586973,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(411643),g=e.generateInstrumentOnce(d.LANGGRAPH_INTEGRATION_NAME,a=>new f.SentryLangGraphInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGGRAPH_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangGraph=g,c.langGraphIntegration=h},630843,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));c.buildLaunchDarklyFlagUsedHandlerShim=function(){return d.isBrowser()||d.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},c.launchDarklyIntegrationShim=e},521745,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));c.OpenFeatureIntegrationHookShim=class{constructor(){d.isBrowser()||d.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},c.openFeatureIntegrationShim=e},55267,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.statsigIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},224314,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.unleashIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},916562,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.growthbookIntegrationShim=a.r(97153).growthbookIntegration},114498,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(761095),e=a.r(854230),f=a.r(621472),g=a.r(357223);function h(a,b,c,d,e){var f,g,h,l,m,n,o,p;return i(a,c),b(a,"addDoc",(f=d,g=e,function(a){return function(b,c){let d=k(f,"addDoc",b);return g(d),j(d,()=>a(b,c))}})),b(a,"getDocs",(h=d,l=e,function(a){return function(b){let c=k(h,"getDocs",b);return l(c),j(c,()=>a(b))}})),b(a,"setDoc",(m=d,n=e,function(a){return function(b,c,d){let e=k(m,"setDoc",b.parent||b);return n(e),j(e,()=>void 0!==d?a(b,c,d):a(b,c))}})),b(a,"deleteDoc",(o=d,p=e,function(a){return function(b){let c=k(o,"deleteDoc",b.parent||b);return p(c),j(c,()=>a(b))}})),a}function i(a,b){for(let c of["addDoc","getDocs","setDoc","deleteDoc"])f.isWrapped(a[c])&&b(a,c);return a}function j(a,b){return e.context.with(e.trace.setSpan(e.context.active(),a),()=>f.safeExecuteInTheMiddle(()=>b(),b=>{b&&a.recordException(b),a.end()},!0))}function k(a,b,c){let d=a.startSpan(`${b} ${c.path}`,{kind:e.SpanKind.CLIENT});return function(a,b){let c=b.firestore.app,d=c.options,e=(b.firestore.toJSON()||{}).settings||{},f={[g.ATTR_DB_COLLECTION_NAME]:b.path,[g.ATTR_DB_NAMESPACE]:c.name,[g.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":b.type,"firebase.firestore.options.projectId":d.projectId,"firebase.firestore.options.appId":d.appId,"firebase.firestore.options.messagingSenderId":d.messagingSenderId,"firebase.firestore.options.storageBucket":d.storageBucket},{address:h,port:i}=l(e);h&&(f[g.ATTR_SERVER_ADDRESS]=h),i&&(f[g.ATTR_SERVER_PORT]=i),a.setAttributes(f)}(d,c),d.setAttribute(g.ATTR_DB_OPERATION_NAME,b),d}function l(a){let b,c;if("string"==typeof a.host)if(a.host.startsWith("[")){if(a.host.endsWith("]"))b=a.host.replace(/^\[|\]$/g,"");else if(a.host.includes("]:")){let d=a.host.lastIndexOf(":");-1!==d&&(b=a.host.slice(1,d).replace(/^\[|\]$/g,""),c=a.host.slice(d+1))}}else if(d.isIPv6(a.host))b=a.host;else{let d=a.host.lastIndexOf(":");-1!==d?(b=a.host.slice(0,d),c=a.host.slice(d+1)):b=a.host}return{address:b,port:c?parseInt(c,10):void 0}}c.getPortAndAddress=l,c.patchFirestore=function(a,b,c,d,g){let j=()=>{},k=g.firestoreSpanCreationHook;"function"==typeof k&&(j=a=>{f.safeExecuteInTheMiddle(()=>k(a),a=>{a&&e.diag.error(a?.message)},!0)});let l=new f.InstrumentationNodeModuleDefinition("@firebase/firestore",b,b=>h(b,c,d,a,j));for(let e of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])l.files.push(new f.InstrumentationNodeModuleFile(e,b,b=>h(b,c,d,a,j),a=>i(a,d)));return l}},10223,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(621472);function f(a,b,c){return function(e){return function(...f){let g="function"==typeof f[0]?f[0]:f[1],h="function"==typeof f[0]?void 0:f[0];if(!g)return e.call(this,...f);let i=async function(...e){let f=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",h=a.startSpan(`firebase.function.${c}`,{kind:d.SpanKind.SERVER}),i={"faas.name":f,"faas.trigger":c,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(i["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(i["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),h.setAttributes(i),b?.requestHook?.(h),d.context.with(d.trace.setSpan(d.context.active(),h),async()=>{let a,c;try{c=await g.apply(this,e)}catch(b){a=b}if(b?.responseHook?.(h,a),a&&h.recordException(a),h.end(),a)throw await b?.errorHook?.(h,a),a;return c})};return h?e.call(this,h,i):e.call(this,i)}}}function g(a,b){for(let c of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])e.isWrapped(a[c])&&b(a,c);return a}c.patchFunctions=function(a,b,c,h,i){let j=()=>{},k=()=>{},l=i.functions?.errorHook,m=i.functions?.requestHook,n=i.functions?.responseHook;"function"==typeof n&&(k=(a,b)=>{e.safeExecuteInTheMiddle(()=>n(a,b),a=>{a&&d.diag.error(a?.message)},!0)}),"function"==typeof m&&(j=a=>{e.safeExecuteInTheMiddle(()=>m(a),a=>{a&&d.diag.error(a?.message)},!0)});let o=new e.InstrumentationNodeModuleDefinition("firebase-functions",b);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:d,triggerType:i})=>{o.files.push(new e.InstrumentationNodeModuleFile(d,b,b=>(function(a,b,c,d,e,h){switch(g(a,c),h){case"function":b(a,"onRequest",f(d,e,"http.request")),b(a,"onCall",f(d,e,"http.call"));break;case"firestore":b(a,"onDocumentCreated",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdated",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeleted",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWritten",f(d,e,"firestore.document.written")),b(a,"onDocumentCreatedWithAuthContext",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdatedWithAuthContext",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeletedWithAuthContext",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWrittenWithAuthContext",f(d,e,"firestore.document.written"));break;case"scheduler":b(a,"onSchedule",f(d,e,"scheduler.scheduled"));break;case"storage":b(a,"onObjectFinalized",f(d,e,"storage.object.finalized")),b(a,"onObjectArchived",f(d,e,"storage.object.archived")),b(a,"onObjectDeleted",f(d,e,"storage.object.deleted")),b(a,"onObjectMetadataUpdated",f(d,e,"storage.object.metadataUpdated"))}return a})(b,c,h,a,{requestHook:j,responseHook:k,errorHook:l},i),a=>g(a,h)))}),o},c.patchV2Functions=f},770392,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621472),e=a.r(97153),f=a.r(114498),g=a.r(10223),h={},i=[">=3.0.0 <5"],j=[">=6.0.0 <7"];class k extends d.InstrumentationBase{constructor(a=h){super("@sentry/instrumentation-firebase",e.SDK_VERSION,a)}setConfig(a={}){super.setConfig({...h,...a})}init(){let a=[];return a.push(f.patchFirestore(this.tracer,i,this._wrap,this._unwrap,this.getConfig())),a.push(g.patchFunctions(this.tracer,j,this._wrap,this._unwrap,this.getConfig())),a}}c.FirebaseInstrumentation=k},884348,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(770392),g="Firebase",h={firestoreSpanCreationHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.firestore"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.functions"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(a,b)=>{b&&(d.captureException(b,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d.flush(2e3))}}},i=e.generateInstrumentOnce(g,()=>new f.FirebaseInstrumentation(h));c.firebaseIntegration=d.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentFirebase=i},483727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(506596),e=a.r(109041),f=a.r(655203),g=a.r(89709),h=a.r(985248),i=a.r(946634),j=a.r(884348),k=a.r(975446),l=a.r(257489),m=a.r(804666),n=a.r(546750),o=a.r(228328),p=a.r(547611),q=a.r(326259),r=a.r(301180),s=a.r(586973),t=a.r(569473),u=a.r(464048),v=a.r(473965),w=a.r(848855),x=a.r(757586),y=a.r(245727),z=a.r(277029),A=a.r(551578),B=a.r(302889),C=a.r(745584),D=a.r(441418),E=a.r(846940);c.getAutoPerformanceIntegrations=function(){return[h.expressIntegration(),i.fastifyIntegration(),m.graphqlIntegration(),o.honoIntegration(),u.mongoIntegration(),v.mongooseIntegration(),w.mysqlIntegration(),x.mysql2Integration(),C.redisIntegration(),z.postgresIntegration(),B.prismaIntegration(),n.hapiIntegration(),q.koaIntegration(),g.connectIntegration(),D.tediousIntegration(),k.genericPoolIntegration(),p.kafkaIntegration(),e.amqplibIntegration(),t.lruMemoizerIntegration(),r.langChainIntegration(),s.langGraphIntegration(),E.vercelAIIntegration(),y.openAIIntegration(),f.anthropicAIIntegration(),l.googleGenAIIntegration(),A.postgresJsIntegration(),j.firebaseIntegration()]},c.getOpenTelemetryInstrumentationToPreload=function(){return[d.instrumentSentryHttp,d.instrumentOtelHttp,h.instrumentExpress,g.instrumentConnect,i.instrumentFastify,i.instrumentFastifyV3,n.instrumentHapi,o.instrumentHono,p.instrumentKafka,q.instrumentKoa,t.instrumentLruMemoizer,u.instrumentMongo,v.instrumentMongoose,w.instrumentMysql,x.instrumentMysql2,z.instrumentPostgres,n.instrumentHapi,m.instrumentGraphql,C.instrumentRedis,D.instrumentTedious,k.instrumentGenericPool,e.instrumentAmqplib,r.instrumentLangChain,E.instrumentVercelAi,y.instrumentOpenAi,A.instrumentPostgresJs,j.instrumentFirebase,f.instrumentAnthropicAi,l.instrumentGoogleGenAI,s.instrumentLangGraph]}},636371,a=>{"use strict";let b;a.s([],433629),a.i(433629);var c=a.i(385603),d=a.i(432238),e=a.i(291723),f=a.i(970544);let g=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(a){let b={},d=(0,f.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),g=(0,f.getStringFromEnv)("OTEL_SERVICE_NAME");if(d)try{let a=this._parseResourceAttributes(d);Object.assign(b,a)}catch(a){c.diag.debug(`EnvDetector failed: ${a instanceof Error?a.message:a}`)}return g&&(b[e.ATTR_SERVICE_NAME]=g),{attributes:b}}_parseResourceAttributes(a){if(!a)return{};let b={};for(let c of a.split(this._COMMA_SEPARATOR)){let a,d,e=c.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==e.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${c}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[f,g]=e,h=f.trim(),i=g.trim();if(0===h.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${c}".`);try{a=decodeURIComponent(h),d=decodeURIComponent(i)}catch(a){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${c}": ${a instanceof Error?a.message:a}`)}if(a.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${a}".`);if(d.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${a}".`);b[a]=d}return b}};var h=a.i(446786),i=a.i(605365);async function j(){if(!b)switch(i.platform){case"darwin":b=(await a.A(872097)).getMachineId;break;case"linux":b=(await a.A(992965)).getMachineId;break;case"freebsd":b=(await a.A(846524)).getMachineId;break;case"win32":b=(await a.A(189011)).getMachineId;break;default:b=(await a.A(18291)).getMachineId}return b()}let k=new class{detect(a){return{attributes:{"host.name":(0,h.hostname)(),"host.arch":(a=>{switch(a){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return a}})((0,h.arch)()),"host.id":j()}}}},l=new class{detect(a){return{attributes:{"os.type":(a=>{switch(a){case"sunos":return"solaris";case"win32":return"windows";default:return a}})((0,h.platform)()),"os.version":(0,h.release)()}}}},m=new class{detect(a){let b={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(b["process.command"]=process.argv[1]);try{let a=h.userInfo();b["process.owner"]=a.username}catch(a){c.diag.debug(`error obtaining process owner: ${a}`)}return{attributes:b}}};var n=a.i(254799);let o=new class{detect(a){return{attributes:{"service.instance.id":(0,n.randomUUID)()}}}};var p=a.i(814232);a.s(["defaultResource",()=>d.defaultResource,"defaultServiceName",()=>p.defaultServiceName,"detectResources",0,(a={})=>(a.detectors||[]).map(b=>{try{let e=(0,d.resourceFromDetectedResource)(b.detect(a));return c.diag.debug(`${b.constructor.name} found resource.`,e),e}catch(a){return c.diag.debug(`${b.constructor.name} failed: ${a.message}`),(0,d.emptyResource)()}}).reduce((a,b)=>a.merge(b),(0,d.emptyResource)()),"emptyResource",()=>d.emptyResource,"envDetector",0,g,"hostDetector",0,k,"osDetector",0,l,"processDetector",0,m,"resourceFromAttributes",()=>d.resourceFromAttributes,"serviceInstanceIdDetector",0,o],636371)},305722,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(636371),f=a.r(878176),g=a.r(357223),h=a.r(97153),i=a.r(829770),j=a.r(960535),k=a.r(560192),l=a.r(483727);function m(a,b={}){let c=new f.BasicTracerProvider({sampler:new j.SentrySampler(a),resource:e.defaultResource().merge(e.resourceFromAttributes({[g.ATTR_SERVICE_NAME]:"node",[g.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[g.ATTR_SERVICE_VERSION]:h.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new j.SentrySpanProcessor({timeout:n(a.getOptions().maxSpanWaitDuration)}),...b.spanProcessors||[]]});d.trace.setGlobalTracerProvider(c),d.propagation.setGlobalPropagator(new j.SentryPropagator);let k=new i.SentryContextManager;return d.context.setGlobalContextManager(k),[c,k.getAsyncLocalStorageLookup()]}function n(a){if(null!=a){if(a>1e6)return k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(a<=0||Number.isNaN(a)){k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return a}}c._clampSpanProcessorTimeout=n,c.initOpenTelemetry=function(a,b={}){a.getOptions().debug&&i.setupOpenTelemetryLogger();let[c,d]=m(a,b);a.traceProvider=c,a.asyncLocalStorageLookup=d},c.preloadOpenTelemetry=function(a={}){var b;let c,{debug:d}=a;d&&h.debug.enable(),i.initializeEsmLoader(),(b=a.integrations,c=l.getOpenTelemetryInstrumentationToPreload(),b?c.filter(a=>{let c=a.id;return b.some(a=>c===a||c.startsWith(`${a}.`))}):c).forEach(a=>{a(),d&&h.debug.log(`[Sentry] Preloaded ${a.id} instrumentation`)})},c.setupOtel=m},741067,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(829770),f=a.r(506596),g=a.r(383093),h=a.r(483727),i=a.r(305722);function j(){return e.getDefaultIntegrations().filter(a=>"Http"!==a.name&&"NodeFetch"!==a.name).concat(f.httpIntegration(),g.nativeNodeFetchIntegration())}function k(a){return[...j(),...d.hasSpansEnabled(a)?h.getAutoPerformanceIntegrations():[]]}function l(a={},b){d.applySdkMetadata(a,"node");let c=e.init({...a,defaultIntegrations:a.defaultIntegrations??b(a)});return c&&!a.skipOpenTelemetrySetup&&(i.initOpenTelemetry(c,{spanProcessors:a.openTelemetrySpanProcessors}),e.validateOpenTelemetrySetup()),c}c.getDefaultIntegrations=k,c.getDefaultIntegrationsWithoutPerformance=j,c.init=function(a={}){return l(a,k)},c.initWithoutDefaultIntegrations=function(a={}){return l(a,()=>[])}},874208,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(506596),e=a.r(383093),f=a.r(706317),g=a.r(985248),h=a.r(946634),i=a.r(804666),j=a.r(547611),k=a.r(569473),l=a.r(464048),m=a.r(473965),n=a.r(848855),o=a.r(757586),p=a.r(745584),q=a.r(277029),r=a.r(551578),s=a.r(302889),t=a.r(546750),u=a.r(228328),v=a.r(326259),w=a.r(89709),x=a.r(722836),y=a.r(441418),z=a.r(975446),A=a.r(235153),B=a.r(109041),C=a.r(846940),D=a.r(245727),E=a.r(655203),F=a.r(257489),G=a.r(301180),H=a.r(586973),I=a.r(630843),J=a.r(521745),K=a.r(55267),L=a.r(224314),M=a.r(916562),N=a.r(884348),O=a.r(741067),P=a.r(305722),Q=a.r(483727),R=a.r(960535),S=a.r(97153),T=a.r(829770);c.httpIntegration=d.httpIntegration,c.nativeNodeFetchIntegration=e.nativeNodeFetchIntegration,c.fsIntegration=f.fsIntegration,c.expressErrorHandler=g.expressErrorHandler,c.expressIntegration=g.expressIntegration,c.setupExpressErrorHandler=g.setupExpressErrorHandler,c.fastifyIntegration=h.fastifyIntegration,c.setupFastifyErrorHandler=h.setupFastifyErrorHandler,c.graphqlIntegration=i.graphqlIntegration,c.kafkaIntegration=j.kafkaIntegration,c.lruMemoizerIntegration=k.lruMemoizerIntegration,c.mongoIntegration=l.mongoIntegration,c.mongooseIntegration=m.mongooseIntegration,c.mysqlIntegration=n.mysqlIntegration,c.mysql2Integration=o.mysql2Integration,c.redisIntegration=p.redisIntegration,c.postgresIntegration=q.postgresIntegration,c.postgresJsIntegration=r.postgresJsIntegration,c.prismaIntegration=s.prismaIntegration,c.hapiIntegration=t.hapiIntegration,c.setupHapiErrorHandler=t.setupHapiErrorHandler,c.honoIntegration=u.honoIntegration,c.setupHonoErrorHandler=u.setupHonoErrorHandler,c.koaIntegration=v.koaIntegration,c.setupKoaErrorHandler=v.setupKoaErrorHandler,c.connectIntegration=w.connectIntegration,c.setupConnectErrorHandler=w.setupConnectErrorHandler,c.knexIntegration=x.knexIntegration,c.tediousIntegration=y.tediousIntegration,c.genericPoolIntegration=z.genericPoolIntegration,c.dataloaderIntegration=A.dataloaderIntegration,c.amqplibIntegration=B.amqplibIntegration,c.vercelAIIntegration=C.vercelAIIntegration,c.openAIIntegration=D.openAIIntegration,c.anthropicAIIntegration=E.anthropicAIIntegration,c.googleGenAIIntegration=F.googleGenAIIntegration,c.langChainIntegration=G.langChainIntegration,c.langGraphIntegration=H.langGraphIntegration,c.buildLaunchDarklyFlagUsedHandler=I.buildLaunchDarklyFlagUsedHandlerShim,c.launchDarklyIntegration=I.launchDarklyIntegrationShim,c.OpenFeatureIntegrationHook=J.OpenFeatureIntegrationHookShim,c.openFeatureIntegration=J.openFeatureIntegrationShim,c.statsigIntegration=K.statsigIntegrationShim,c.unleashIntegration=L.unleashIntegrationShim,c.growthbookIntegration=M.growthbookIntegrationShim,c.firebaseIntegration=N.firebaseIntegration,c.getDefaultIntegrations=O.getDefaultIntegrations,c.getDefaultIntegrationsWithoutPerformance=O.getDefaultIntegrationsWithoutPerformance,c.init=O.init,c.initWithoutDefaultIntegrations=O.initWithoutDefaultIntegrations,c.initOpenTelemetry=P.initOpenTelemetry,c.preloadOpenTelemetry=P.preloadOpenTelemetry,c.getAutoPerformanceIntegrations=Q.getAutoPerformanceIntegrations,c.setNodeAsyncContextStrategy=R.setOpenTelemetryContextAsyncContextStrategy,c.SDK_VERSION=S.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=S.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=S.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=S.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=S.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=S.Scope,c.addBreadcrumb=S.addBreadcrumb,c.addEventProcessor=S.addEventProcessor,c.addIntegration=S.addIntegration,c.captureCheckIn=S.captureCheckIn,c.captureConsoleIntegration=S.captureConsoleIntegration,c.captureEvent=S.captureEvent,c.captureException=S.captureException,c.captureFeedback=S.captureFeedback,c.captureMessage=S.captureMessage,c.captureSession=S.captureSession,c.close=S.close,c.consoleIntegration=S.consoleIntegration,c.consoleLoggingIntegration=S.consoleLoggingIntegration,c.continueTrace=S.continueTrace,c.createConsolaReporter=S.createConsolaReporter,c.createLangChainCallbackHandler=S.createLangChainCallbackHandler,c.createTransport=S.createTransport,c.dedupeIntegration=S.dedupeIntegration,c.endSession=S.endSession,c.eventFiltersIntegration=S.eventFiltersIntegration,c.extraErrorDataIntegration=S.extraErrorDataIntegration,c.featureFlagsIntegration=S.featureFlagsIntegration,c.flush=S.flush,c.functionToStringIntegration=S.functionToStringIntegration,c.getActiveSpan=S.getActiveSpan,c.getClient=S.getClient,c.getCurrentScope=S.getCurrentScope,c.getGlobalScope=S.getGlobalScope,c.getIsolationScope=S.getIsolationScope,c.getRootSpan=S.getRootSpan,c.getSpanDescendants=S.getSpanDescendants,c.getSpanStatusFromHttpCode=S.getSpanStatusFromHttpCode,c.getTraceData=S.getTraceData,c.getTraceMetaTags=S.getTraceMetaTags,c.httpHeadersToSpanAttributes=S.httpHeadersToSpanAttributes,c.inboundFiltersIntegration=S.inboundFiltersIntegration,c.instrumentAnthropicAiClient=S.instrumentAnthropicAiClient,c.instrumentGoogleGenAIClient=S.instrumentGoogleGenAIClient,c.instrumentLangGraph=S.instrumentLangGraph,c.instrumentOpenAiClient=S.instrumentOpenAiClient,c.instrumentStateGraphCompile=S.instrumentStateGraphCompile,c.instrumentSupabaseClient=S.instrumentSupabaseClient,c.isEnabled=S.isEnabled,c.isInitialized=S.isInitialized,c.lastEventId=S.lastEventId,c.linkedErrorsIntegration=S.linkedErrorsIntegration,c.parameterize=S.parameterize,c.profiler=S.profiler,c.requestDataIntegration=S.requestDataIntegration,c.rewriteFramesIntegration=S.rewriteFramesIntegration,c.setContext=S.setContext,c.setConversationId=S.setConversationId,c.setCurrentClient=S.setCurrentClient,c.setExtra=S.setExtra,c.setExtras=S.setExtras,c.setHttpStatus=S.setHttpStatus,c.setMeasurement=S.setMeasurement,c.setTag=S.setTag,c.setTags=S.setTags,c.setUser=S.setUser,c.spanToBaggageHeader=S.spanToBaggageHeader,c.spanToJSON=S.spanToJSON,c.spanToTraceHeader=S.spanToTraceHeader,c.startInactiveSpan=S.startInactiveSpan,c.startNewTrace=S.startNewTrace,c.startSession=S.startSession,c.startSpan=S.startSpan,c.startSpanManual=S.startSpanManual,c.supabaseIntegration=S.supabaseIntegration,c.suppressTracing=S.suppressTracing,c.trpcMiddleware=S.trpcMiddleware,c.updateSpanName=S.updateSpanName,c.winterCGHeadersToDict=S.winterCGHeadersToDict,c.withActiveSpan=S.withActiveSpan,c.withIsolationScope=S.withIsolationScope,c.withMonitor=S.withMonitor,c.withScope=S.withScope,c.wrapMcpServerWithSentry=S.wrapMcpServerWithSentry,c.zodErrorsIntegration=S.zodErrorsIntegration,c.NODE_VERSION=T.NODE_VERSION,c.NodeClient=T.NodeClient,c.SentryContextManager=T.SentryContextManager,c.anrIntegration=T.anrIntegration,c.childProcessIntegration=T.childProcessIntegration,c.contextLinesIntegration=T.contextLinesIntegration,c.createGetModuleFromFilename=T.createGetModuleFromFilename,c.createSentryWinstonTransport=T.createSentryWinstonTransport,c.cron=T.cron,c.defaultStackParser=T.defaultStackParser,c.disableAnrDetectionForCallback=T.disableAnrDetectionForCallback,c.generateInstrumentOnce=T.generateInstrumentOnce,c.getSentryRelease=T.getSentryRelease,c.httpServerIntegration=T.httpServerIntegration,c.httpServerSpansIntegration=T.httpServerSpansIntegration,c.localVariablesIntegration=T.localVariablesIntegration,c.logger=T.logger,c.makeNodeTransport=T.makeNodeTransport,c.metrics=T.metrics,c.modulesIntegration=T.modulesIntegration,c.nodeContextIntegration=T.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=T.nodeRuntimeMetricsIntegration,c.onUncaughtExceptionIntegration=T.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=T.onUnhandledRejectionIntegration,c.pinoIntegration=T.pinoIntegration,c.processSessionIntegration=T.processSessionIntegration,c.spotlightIntegration=T.spotlightIntegration,c.systemErrorIntegration=T.systemErrorIntegration,c.validateOpenTelemetrySetup=T.validateOpenTelemetrySetup},98251,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(522734),f=a.r(814747),g=null,h=null;c.createRouteManifest=function(a){let b;if(a?.appDirPath)b=a.appDirPath;else{let a=process.cwd(),c=f.join(a,"app"),d=f.join(a,"src","app");e.existsSync(c)&&e.lstatSync(c).isDirectory()?b=c:e.existsSync(d)&&e.lstatSync(d).isDirectory()&&(b=d)}if(!b)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(g&&h===b&&d===a?.includeRouteGroups)return g;let{dynamicRoutes:c,staticRoutes:i,isrRoutes:j}=function a(b,c="",d=!1){let g=[],h=[],i=[];try{let k=e.readdirSync(b,{withFileTypes:!0}),l=k.find(a=>{var b;return b=a.name,"page.tsx"===b||"page.jsx"===b||"page.ts"===b||"page.js"===b});if(l){let a=d?c||"/":(c||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),j=a.includes(":"),k=f.join(b,l.name);if(function(a){try{let b=e.readFileSync(a,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(b)}catch{return!1}}(k)&&i.push(a),j){let{regex:b,paramNames:c,hasOptionalPrefix:d}=function(a){let b,c,d=a.split("/").filter(Boolean),e=[],f=[],g=!1;for(let a of d)if(a.startsWith(":")){let b=a.substring(1);if(b.endsWith("*?")){let a=b.slice(0,-2);f.push(a),g=!0}else if(b.endsWith("*")){let a=b.slice(0,-1);f.push(a),e.push("(.+)")}else f.push(b),e.push("([^/]+)")}else e.push(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(g)if(0===e.length)c="^/(.*)$";else{let a=e.join("/");c=`^/${a}(?:/(.*))?$`}else c=`^/${e.join("/")}$`;return{regex:c,paramNames:f,hasOptionalPrefix:(b=f[0],void 0!==b&&("locale"===b||"lang"===b||"language"===b))}}(a);g.push({path:a,regex:b,paramNames:c,hasOptionalPrefix:d})}else h.push({path:a})}for(let e of k)if(e.isDirectory()){var j;let k,l=f.join(b,e.name),m=e.name.startsWith("[")&&e.name.endsWith("]"),n=(k=(j=e.name).startsWith("(")&&j.endsWith(")")?d?e.name:"":m?function(a){if(a.startsWith("[[...")&&a.endsWith("]]")){let b=a.slice(5,-2);return`:${b}*?`}if(a.startsWith("[...")&&a.endsWith("]")){let b=a.slice(4,-1);return`:${b}*`}return`:${a.slice(1,-1)}`}(e.name):e.name)?`${c}/${k}`:c,o=a(l,n,d);g.push(...o.dynamicRoutes),h.push(...o.staticRoutes),i.push(...o.isrRoutes)}}catch(a){console.warn("Error building route manifest:",a)}return{dynamicRoutes:g,staticRoutes:h,isrRoutes:i}}(b,a?.basePath,a?.includeRouteGroups),k={dynamicRoutes:c,staticRoutes:i,isrRoutes:j};return g=k,h=b,d=a?.includeRouteGroups,k}},318976,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.resolveTunnelRoute=function(a){let b;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let c="string"==typeof a?a:(b=d._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${b}`);return c&&(process.env.__SENTRY_TUNNEL_ROUTE__=c),c},c.setUpTunnelRewriteRules=function(a,b){let c=a.rewrites,d=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,e=d||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",f=d||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";a.rewrites=async(...a)=>{let d={source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:e},g=[{source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:f},d];if("function"!=typeof c)return g;let h=await c(...a);return Array.isArray(h)?[...g,...h]:{...h,beforeFiles:[...g,...h.beforeFiles||[]]}}}},546626,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(874208),f=a.r(522734),g=a.r(814747),h=a.r(98251),i=a.r(53556),j=a.r(883264),k=a.r(318976),l=!1,m=!1;function n(a,b){if(!b)return a;let c=a=>"function"==typeof b?b(a):b.some(b=>d.isMatchingPattern(a,b));return{staticRoutes:a.staticRoutes.filter(a=>!c(a.path)),dynamicRoutes:a.dynamicRoutes.filter(a=>!c(a.path)),isrRoutes:a.isrRoutes.filter(a=>!c(a))}}c.filterRouteManifest=n,c.getNextMajor=function(a){if(!a)return;let{major:b}=d.parseSemver(a);return b},c.maybeCreateRouteManifest=function(a,b){if(b.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==b.routeManifestInjection&&(void 0!==b.routeManifestInjection||!b.disableManifestInjection))return n(h.createRouteManifest({basePath:a.basePath}),b.routeManifestInjection?.exclude)},c.maybeGetVercelCronsConfig=function(a){let b={config:void 0,strategy:void 0};if(!process.env.VERCEL)return b;let c=a._experimental?.vercelCronsMonitoring===!0,e=a.webpack?.automaticVercelMonitors===!0;if(!c&&!e)return b;let h=function(){try{let a=g.join(process.cwd(),"vercel.json"),b=f.readFileSync(a,"utf8"),c=JSON.parse(b).crons;if(c&&Array.isArray(c)&&c.length>0)return c;return}catch(a){if("ENOENT"===a.code)return;d.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",a);return}}();return h&&(b.config=h,c&&e?(d.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),b.strategy="spans"):c?(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),b.strategy="spans"):(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),b.strategy="wrapper")),b},c.maybeSetClientTraceMetadataOption=function(a,b){if(b){let{major:c,minor:e}=d.parseSemver(b);void 0!==c&&void 0!==e&&(c>=15||14===c&&e>=3)&&(a.experimental=a.experimental||{},a.experimental.clientTraceMetadata=["baggage","sentry-trace",...a.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},c.maybeSetInstrumentationHookOption=function(a,b){if(b&&i.requiresInstrumentationHook(b)){a.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),a.experimental={instrumentationHook:!0,...a.experimental};return}b||(a.experimental&&"instrumentationHook"in a.experimental?!1===a.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),a.experimental={instrumentationHook:!0,...a.experimental}))},c.maybeSetUpTunnelRouteRewriteRules=function(a,b){if(!b.tunnelRoute)return;if("export"===a.output){l||(l=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let c=k.resolveTunnelRoute(b.tunnelRoute);b.tunnelRoute=c||void 0,k.setUpTunnelRewriteRules(a,c)},c.resolveReleaseName=function(a){return a.release?.create!==!1?a.release?.name??e.getSentryRelease()??j.getGitRevision():a.release?.name},c.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(m||(m=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},c.warnIfMissingOnRouterTransitionStartHook=function(a){let b=j.getInstrumentationClientFileContents();void 0===b||b.includes("onRouterTransitionStart")||a.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},804312,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(53556),e=a.r(883264),f=a.r(464917),g=a.r(360366),h=a.r(546626);c.getFinalConfigObject=function(a,b){f.migrateDeprecatedWebpackOptions(b);let c=h.resolveReleaseName(b);if(h.maybeSetUpTunnelRouteRewriteRules(a,b),h.shouldReturnEarlyInExperimentalBuildMode())return a;let i=h.maybeCreateRouteManifest(a,b),j=h.maybeGetVercelCronsConfig(b);e.setUpBuildTimeVariables(a,b,c);let k=d.getNextjsVersion(),l=h.getNextMajor(k);h.maybeSetClientTraceMetadataOption(a,k),h.maybeSetInstrumentationHookOption(a,k),h.warnIfMissingOnRouterTransitionStartHook(b);let m=g.getBundlerInfo(k);g.maybeWarnAboutUnsupportedTurbopack(k,m),g.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(k,b,m);let n=g.maybeConstructTurbopackConfig(a,b,i,k,m,j),o=g.resolveUseRunAfterProductionCompileHookOption(b,m);return g.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,nextJsVersion:k,bundlerInfo:m,turboPackConfig:n,shouldUseRunAfterProductionCompileHook:o}),g.maybeEnableTurbopackSourcemaps(a,b,m),{...a,...g.getServerExternalPackagesPatch(a,l),...g.getWebpackPatch({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,routeManifest:i,nextJsVersion:k,shouldUseRunAfterProductionCompileHook:o,bundlerInfo:m,vercelCronsConfigResult:j}),...g.getTurbopackPatch(m,n)}}},114530,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(804312);c.withSentryConfig=function(a,b={}){let c=a||{};return"function"==typeof c?function(...a){let f=c.apply(this,a);return d.isThenable(f)?f.then(a=>e.getFinalConfigObject(a,b)):e.getFinalConfigObject(f,b)}:e.getFinalConfigObject(c,b)}},373328,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{"use strict";var b="";function c(a){return a.split("\n").reduce(function(a,c){var k,l,m,n=function(a){var c=d.exec(a);if(!c)return null;var f=c[2]&&0===c[2].indexOf("native"),g=c[2]&&0===c[2].indexOf("eval"),h=e.exec(c[2]);return g&&null!=h&&(c[2]=h[1],c[3]=h[2],c[4]=h[3]),{file:f?null:c[2],methodName:c[1]||b,arguments:f?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}(c)||((k=f.exec(c))?{file:k[2],methodName:k[1]||b,arguments:[],lineNumber:+k[3],column:k[4]?+k[4]:null}:null)||function(a){var c=g.exec(a);if(!c)return null;var d=c[3]&&c[3].indexOf(" > eval")>-1,e=h.exec(c[3]);return d&&null!=e&&(c[3]=e[1],c[4]=e[2],c[5]=null),{file:c[3],methodName:c[1]||b,arguments:c[2]?c[2].split(","):[],lineNumber:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}(c)||((l=j.exec(c))?{file:l[2],methodName:l[1]||b,arguments:[],lineNumber:+l[3],column:l[4]?+l[4]:null}:null)||((m=i.exec(c))?{file:m[3],methodName:m[1]||b,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return n&&a.push(n),a},[])}var d=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,e=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;a.s(["parse",()=>c])},967602,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(384899),f=a.r(373328),g=d.GLOBAL_OBJ;function h(){let a=process.env._sentryBasePath??g._sentryBasePath??"";""===a||a.match(/^\//)||(a=`/${a}`);let b=process.env.PORT||"3000";return`http://localhost:${b}${a}`}async function i(a,b={}){let c=new AbortController,e=setTimeout(()=>c.abort(),3e3);return d.suppressTracing(()=>fetch(a,{...b,signal:c.signal}).finally(()=>{clearTimeout(e)}))}async function j(a,b){try{if(!(a.file?.startsWith("webpack-internal:")||a.file?.startsWith("file:")))return null;let c=new URLSearchParams;c.append("isServer",String(!1)),c.append("isEdgeServer",String(!1)),c.append("isAppDirectory",String(!0)),c.append("errorMessage",b.toString()),Object.keys(a).forEach(b=>{c.append(b,(a[b]??"").toString())});let d=h(),e=await i(`${d}/__nextjs_original-stack-frame?${c.toString()}`);if(!e.ok||204===e.status)return null;let f=await e.json();return{originalCodeFrame:f.originalCodeFrame,originalStackFrame:f.originalStackFrame}}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}async function k(a){try{let b={frames:a.filter(a=>!!a.file).map(a=>(a.file=a.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:a.file,methodName:a.methodName??"",arguments:[],lineNumber:a.lineNumber??0,column:a.column??0,line1:a.lineNumber??0,column1:a.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},c=h(),d=await i(`${c}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok||204===d.status)return null;return(await d.json()).map(a=>({originalCodeFrame:a.value.originalCodeFrame,originalStackFrame:a.value.originalStackFrame}))}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}c.devErrorSymbolicationEventProcessor=async function a(a,b){"transaction"===a.type&&(a.spans=a.spans?.filter(a=>{let b=a.data?.["http.url"];return"string"!=typeof b||!b.includes("__nextjs_original-stack-frame")}));try{if(b.originalException&&b.originalException instanceof Error&&b.originalException.stack){let c,f=e.parse(b.originalException.stack),h=g._sentryNextJsVersion;if(!h)return a;let i=d.parseSemver(h);if(i.major>15||15===i.major&&i.minor>=2){let b=await k(f);if(null===b)return a;c=b}else c=await Promise.all(f.map(a=>j(a,b.originalException)));a.exception?.values?.[0]?.stacktrace?.frames&&(a.exception.values[0].stacktrace.frames=a.exception.values[0].stacktrace.frames.map((a,b,d)=>{let e=c[d.length-1-b];if(!e?.originalStackFrame||!e.originalCodeFrame)return{...a,platform:a.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:f,preContextLines:g,postContextLines:h}=function(a){let b,c=a.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(a=>!a.match(/^\s*\|/)).map(a=>({line:a,isErrorLine:!!a.match(/^>/)})).map(a=>({...a,line:a.line.replace(/^.*\|/,"")})),d=[],e=[],f=!1;for(let a of c)a.isErrorLine?(b=a.line,f=!0):f?e.push(a.line):d.push(a.line);return{contextLine:b,preContextLines:d,postContextLines:e}}(e.originalCodeFrame);return{...a,pre_context:g,context_line:f,post_context:h,function:e.originalStackFrame.methodName,filename:e.originalStackFrame.file?function(a){if(!a)return a;let b=a.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return b?b[1]:a}(e.originalStackFrame.file):void 0,lineno:e.originalStackFrame.lineNumber||e.originalStackFrame.line1||void 0,colno:e.originalStackFrame.column||e.originalStackFrame.column1||void 0}}))}}catch{}return a}},562293,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getVercelEnv=function(a){let b=a?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return b?`vercel-${b}`:void 0}},473132,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.ATTR_NEXT_ROUTE="next.route",c.ATTR_NEXT_SEGMENT="next.segment",c.ATTR_NEXT_SPAN_NAME="next.span_name",c.ATTR_NEXT_SPAN_TYPE="next.span_type"},268404,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",c.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",c.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},873364,(a,b,c)=>{"use strict";b.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},767685,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE:function(){return f},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="/_not-found",g=`${f}/page`,h="/_global-error",i=`${h}/page`},874492,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={APP_CLIENT_INTERNALS:function(){return ab},APP_PATHS_MANIFEST:function(){return u},APP_PATH_ROUTES_MANIFEST:function(){return v},AdapterOutputType:function(){return k},BARREL_OPTIMIZATION_PREFIX:function(){return U},BLOCKED_PAGES:function(){return P},BUILD_ID_FILE:function(){return O},BUILD_MANIFEST:function(){return w},CLIENT_PUBLIC_FILES_PATH:function(){return Q},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return R},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return _},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return aa},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ae},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return af},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ac},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ad},COMPILER_INDEXES:function(){return j},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return N},DEFAULT_RUNTIME_WEBPACK:function(){return ag},DEFAULT_SANS_SERIF_FONT:function(){return al},DEFAULT_SERIF_FONT:function(){return ak},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return K},DEV_CLIENT_PAGES_MANIFEST:function(){return G},DYNAMIC_CSS_MANIFEST:function(){return $},EDGE_RUNTIME_WEBPACK:function(){return ah},EDGE_UNSUPPORTED_NODE_APIS:function(){return aq},EXPORT_DETAIL:function(){return B},EXPORT_MARKER:function(){return A},FUNCTIONS_CONFIG_MANIFEST:function(){return x},IMAGES_MANIFEST:function(){return E},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Z},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return H},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return Y},MODERN_BROWSERSLIST_TARGET:function(){return g.default},NEXT_BUILTIN_DOCUMENT:function(){return T},NEXT_FONT_MANIFEST:function(){return z},PAGES_MANIFEST:function(){return s},PHASE_ANALYZE:function(){return m},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return r},PHASE_PRODUCTION_BUILD:function(){return n},PHASE_PRODUCTION_SERVER:function(){return o},PHASE_TEST:function(){return q},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return L},ROUTES_MANIFEST:function(){return D},RSC_MODULE_TYPES:function(){return ap},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return F},SERVER_PROPS_ID:function(){return aj},SERVER_REFERENCE_MANIFEST:function(){return W},STATIC_PROPS_ID:function(){return ai},STATIC_STATUS_PAGES:function(){return am},STRING_LITERAL_DROP_BUNDLE:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},SYSTEM_ENTRYPOINTS:function(){return ar},TRACE_OUTPUT_VERSION:function(){return an},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return J},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ao},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return t}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(463652)._(a.r(873364)),h=a.r(767685),i={client:"client",server:"server",edgeServer:"edge-server"},j={[i.client]:0,[i.server]:1,[i.edgeServer]:2};var k=((d={}).PAGES="PAGES",d.PAGES_API="PAGES_API",d.APP_PAGE="APP_PAGE",d.APP_ROUTE="APP_ROUTE",d.PRERENDER="PRERENDER",d.STATIC_FILE="STATIC_FILE",d.MIDDLEWARE="MIDDLEWARE",d);let l="phase-export",m="phase-analyze",n="phase-production-build",o="phase-production-server",p="phase-development-server",q="phase-test",r="phase-info",s="pages-manifest.json",t="webpack-stats.json",u="app-paths-manifest.json",v="app-path-routes-manifest.json",w="build-manifest.json",x="functions-config-manifest.json",y="subresource-integrity-manifest",z="next-font-manifest",A="export-marker.json",B="export-detail.json",C="prerender-manifest.json",D="routes-manifest.json",E="images-manifest.json",F="required-server-files",G="_devPagesManifest.json",H="middleware-manifest.json",I="_clientMiddlewareManifest.json",J="client-build-manifest.json",K="_devMiddlewareManifest.json",L="react-loadable-manifest.json",M="server",N=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],O="BUILD_ID",P=["/_document","/_app","/_error"],Q="public",R="static",S="__NEXT_DROP_CLIENT_FILE__",T="__NEXT_BUILTIN_DOCUMENT__",U="__barrel_optimize__",V="client-reference-manifest",W="server-reference-manifest",X="middleware-build-manifest",Y="middleware-react-loadable-manifest",Z="interception-route-rewrite-manifest",$="dynamic-css-manifest",_="main",aa=`${_}-app`,ab="app-pages-internals",ac="react-refresh",ad="webpack",ae="polyfills",af=Symbol(ae),ag="webpack-runtime",ah="edge-runtime-webpack",ai="__N_SSG",aj="__N_SSP",ak={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},al={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},am=["/500"],an=1,ao=6e3,ap={client:"client",server:"server"},aq=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ar=new Set([_,ac,aa]);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},334327,(a,b,c)=>{b.exports=a.r(874492)},929689,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(334327);c.isBuild=function(){return process.env.NEXT_PHASE===d.PHASE_PRODUCTION_BUILD}},498934,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328);async function f(){try{e.DEBUG_BUILD&&d.debug.log("Flushing events..."),await d.flush(2e3),e.DEBUG_BUILD&&d.debug.log("Done flushing events")}catch(a){e.DEBUG_BUILD&&d.debug.log("Error while flushing events:\n",a)}}function g(){let a=Symbol.for("__cloudflare-context__");return d.GLOBAL_OBJ[a]?.ctx}function h(a){g()?.waitUntil(a)}function i(){return"function"==typeof g()?.waitUntil}c.cloudflareWaitUntil=h,c.flushSafelyWithTimeout=f,c.isCloudflareWaitUntilAvailable=i,c.waitUntil=function(a){i()?h(a):d.vercelWaitUntil(a)}},723136,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);function e(a){let b=a.split("/").filter(a=>a&&!(a.startsWith("(")&&a.endsWith(")")));return b.length>0?`/${b.join("/")}`:"/"}function f(a,b,c,f){let g=f??e(a),h=c?.["x-forwarded-proto"],i=c?.["x-forwarded-host"]||c?.host;if(!h||!i)return g;let j=`${h}://${i}${g}`,k=d.parseStringToURLObject(j);return k?d.getSanitizedUrlStringFromUrlObject(k):g}function g(a){let b=a?.referer;if(b)try{let a=new URL(b);return d.getSanitizedUrlStringFromUrlObject(a)}catch{return}}c.buildUrlFromComponentRoute=f,c.extractSanitizedUrlFromRefererHeader=g,c.getSanitizedRequestUrl=function(a,b,c,d){let e=g(c);return e||f(a,b,c,d)},c.sanitizeRoutePath=e,c.substituteRouteParams=function(a,b){return a}},816617,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(723136);c.setUrlProcessingMetadata=function(a){if("transaction"!==a.type||a.contexts?.trace?.op!=="http.server"||!a.contexts?.trace?.data)return;let b=d.getClient();if(!b?.getOptions().sendDefaultPii)return;let c=a.contexts.trace.data,f=c["next.route"]||c["http.route"],g=c["http.target"];if(!f)return;let h=a.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),i=h?.sdkProcessingMetadata?.normalizedRequest?.headers,j=e.getSanitizedRequestUrl(f,void 0,i,g?.toString());j&&h?.sdkProcessingMetadata&&(h.sdkProcessingMetadata.normalizedRequest=h.sdkProcessingMetadata.normalizedRequest||{},h.sdkProcessingMetadata.normalizedRequest.url=j)}},734080,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(814747);c.distDirRewriteFramesIntegration=d.defineIntegration(({distDirName:a})=>{let b=e.resolve(a).replace(/(\/|\\)$/,""),c=new RegExp(d.escapeStringForRegex(b));return{...d.rewriteFramesIntegration({iteratee:a=>(a.filename=a.filename?.replace(c,"app:///_next"),a)}),name:"DistDirRewriteFrames"}})},943167,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.addHeadersAsAttributes=function(a,b){if(!a)return{};let c=a instanceof Headers||"object"==typeof a&&"get"in a?d.winterCGHeadersToDict(a):a,e=d.httpHeadersToSpanAttributes(c,d.getClient()?.getOptions().sendDefaultPii??!1);return b&&b.setAttributes(e),e}},398359,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(960535),g=a.r(473132),h=a.r(268404),i=e.GLOBAL_OBJ;c.dropMiddlewareTunnelRequests=function(a,b){if(e.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let c=b?.[g.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",j=b?.[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",k=b?.[g.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!c&&!j&&!k)return;let l=function(a){let b=i._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!b)return!1;let c=a[d.SEMATTRS_HTTP_TARGET];if("string"==typeof c){let a=c.split("?")[0]||"";return a===b||a.startsWith(`${b}/`)}return!1}(b||{}),m=f.isSentryRequestSpan(a);(l||m)&&a.setAttribute(h.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},858952,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(357223),f=a.r(97153),g=a.r(373328),h=a.r(473132),i=a.r(268404),j="__PAGE__",k=new WeakMap;function l(a){return"NextNodeServer.getLayoutOrPageModule"===a[h.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===a[h.ATTR_NEXT_SPAN_NAME]&&"string"==typeof a[h.ATTR_NEXT_SEGMENT]}function m({segment:a,route:b}){return a===j?`resolve page server component "${b}"`:""===a?"resolve root layout server component":`resolve layout server component "${a}"`}c.commonObjectToIsolationScope=function(a){if("object"!=typeof a||!a)return new f.Scope;{let b=k.get(a);if(b)return b;{let b=new f.Scope;return k.set(a,b),b}}},c.dropNextjsRootContext=function(){if(f.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let a=f.getActiveSpan();if(a){let b=f.getRootSpan(a),c=f.spanToJSON(b).data;c?.["next.span_type"]&&f.getRootSpan(a)?.setAttribute(i.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},c.escapeNextjsTracing=function(a){let b=f.GLOBAL_OBJ.AsyncLocalStorage;return b?(d||(d=new b),d.getStore())?a():f.startNewTrace(()=>d.run(!0,()=>a())):(g.DEBUG_BUILD&&f.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),a())},c.getEnhancedResolveSegmentSpanName=m,c.isResolveSegmentSpan=l,c.maybeEnhanceServerComponentSpanName=function(a,b,c){if(!l(b))return;let d=b[h.ATTR_NEXT_SEGMENT],g=c[e.ATTR_HTTP_ROUTE],i=m({segment:d,route:"string"==typeof g?g:""});a.updateName(i),a.setAttributes({"sentry.nextjs.ssr.function.type":d===j?"Page":"Layout","sentry.nextjs.ssr.function.route":g}),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},431385,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328),f="sentry.cron.checkInId",g="sentry.cron.monitorSlug",h="sentry.cron.startTime",i="sentry.cron.schedule";c.maybeCompleteCronCheckIn=function(a){let b=d.spanToJSON(a).data,c=b?.[f],j=b?.[g],k=b?.[h],l=b?.[i];if(!c||!j||"number"!=typeof k)return;let m=d._INTERNAL_safeDateNow()/1e3-k,n=d.spanToJSON(a).status,o=n&&"ok"!==n?"error":"ok";d.captureCheckIn({checkInId:c,monitorSlug:j,status:o,duration:m},"string"==typeof l?{maxRuntime:720,schedule:{type:"crontab",value:l}}:void 0),a.setAttribute(f,void 0),a.setAttribute(g,void 0),a.setAttribute(h,void 0),a.setAttribute(i,void 0),e.DEBUG_BUILD&&d.debug.log(`[Cron] Completed check-in for "${j}" with status "${o}"`)},c.maybeStartCronCheckIn=function(a,b){let c=function(){let a=globalThis;if(a._sentryVercelCronsConfig)try{return JSON.parse(a._sentryVercelCronsConfig)}catch{e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!c||!b)return;let j=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!j)return;let k=Array.isArray(j["user-agent"])?j["user-agent"][0]:j["user-agent"];if(!k?.includes("vercel-cron"))return;let l=c.find(a=>a.path===b);if(!l?.path||!l.schedule)return;let m=l.path,n=d._INTERNAL_safeDateNow()/1e3,o=d.captureCheckIn({monitorSlug:m,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}});e.DEBUG_BUILD&&d.debug.log(`[Cron] Started check-in for "${m}" with ID "${o}"`),a.setAttribute(f,o),a.setAttribute(g,m),a.setAttribute(h,n),a.setAttribute(i,l.schedule)}},766711,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e="messaging.system",f="messaging.destination.name",g="messaging.operation.name",h="sentry.queue.enriched";function i(a,b){let c=a[b];return Array.isArray(c)?c[0]:c}c.maybeCleanupQueueSpan=function(a){let b=d.spanToJSON(a).data;b?.[h]&&a.setAttribute(h,void 0)},c.maybeEnrichQueueConsumerSpan=function(a){let b=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!b||"com.vercel.queue.v2beta"!==(Array.isArray(b["ce-type"])?b["ce-type"][0]:b["ce-type"]))return;let c=i(b,"ce-vqsqueuename"),j=i(b,"ce-vqsmessageid"),k=i(b,"ce-vqsconsumergroup"),l=i(b,"ce-vqsdeliverycount");if(a.setAttribute(e,"vercel.queue"),a.setAttribute(g,"process"),c&&a.setAttribute(f,c),j&&a.setAttribute("messaging.message.id",j),k&&a.setAttribute("messaging.consumer.group.name",k),l){let b=parseInt(l,10);isNaN(b)||a.setAttribute("messaging.message.delivery_count",b)}a.setAttribute(h,!0)},c.maybeEnrichQueueProducerSpan=function(a){let b,c=d.spanToJSON(a).data,i=c?.["url.full"];if(!i)return;try{b=new URL(i)}catch{return}if("vercel-queue.com"!==b.hostname&&!b.hostname.endsWith(".vercel-queue.com"))return;let j=b.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!j)return;let k=decodeURIComponent(j[1]);a.setAttribute(e,"vercel.queue"),a.setAttribute(f,k),a.setAttribute(g,"send"),a.setAttribute(h,!0)}},368517,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(854230),e=a.r(357223),f=a.r(97153),g=a.r(960535),h=a.r(473132),i=a.r(943167),j=a.r(398359),k=a.r(858952),l=a.r(431385),m=a.r(766711);c.handleOnSpanStart=function(a){let b=f.spanToJSON(a).data,c=f.getRootSpan(a),n=f.spanToJSON(c).data,o=a===c;if(j.dropMiddlewareTunnelRequests(a,b),"string"==typeof b?.[h.ATTR_NEXT_ROUTE]&&(n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD])&&!n?.[e.ATTR_HTTP_ROUTE]){let a=b[h.ATTR_NEXT_ROUTE].replace(/\/route$/,"");c.updateName(a),c.setAttribute(e.ATTR_HTTP_ROUTE,a),c.setAttribute(h.ATTR_NEXT_ROUTE,a);let d=n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD];"string"==typeof d&&f.getIsolationScope().setTransactionName(`${d} ${a}`),l.maybeStartCronCheckIn(c,a),m.maybeEnrichQueueConsumerSpan(c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let d=b[h.ATTR_NEXT_SPAN_NAME];"string"==typeof d&&(c.updateName(d),c.setAttribute(e.ATTR_HTTP_ROUTE,d),c.setAttribute(h.ATTR_NEXT_SPAN_NAME,d)),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(b?.[h.ATTR_NEXT_SPAN_TYPE]!==void 0&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),o){let a=f.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;i.addHeadersAsAttributes(a,c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&o){let b=f.getCapturedScopesOnSpan(a),c=(b.isolationScope||f.getIsolationScope()).clone(),e=b.scope||f.getCurrentScope(),h=g.getScopesFromContext(d.context.active());h&&(h.isolationScope=c),f.setCapturedScopesOnSpan(a,e,c)}k.maybeEnhanceServerComponentSpanName(a,b,n),m.maybeEnrichQueueProducerSpan(a)}},58753,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328);function f(){let a=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:a}=process.getBuiltinModule("async_hooks")??{};return a}}();if(!a||"function"!=typeof a.snapshot){e.DEBUG_BUILD&&d.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return a.snapshot()}function g(a){return a instanceof Error&&a.message.includes("AsyncLocalStorage")}c.prepareSafeIdGeneratorContext=function(){let a=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),b=d.GLOBAL_OBJ,c=f();if(!c)return;let h=c;b[a]=a=>{try{return h(a)}catch(c){if(!g(c))throw c;let b=f();if(!b)return a();h=b;try{return h(a)}catch(b){if(!g(b))throw b;return a()}}},e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},535727,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.captureUnderscoreErrorException=async function(a){let{req:b,res:c,err:f}=a,g=c?.statusCode||a.statusCode;if(g&&g<500||!a.pathname)return;if(f&&d.isAlreadyCaptured(f)){e.waitUntil(e.flushSafelyWithTimeout());let a="object"==typeof f?f.__sentry_event_id__:void 0;return"string"==typeof a?(d.getIsolationScope().setLastEventId(a),a):d.getIsolationScope().lastEventId()}let h=d.withScope(a=>{if(b){let c=d.httpRequestToRequestData(b);a.setSDKProcessingMetadata({normalizedRequest:c})}return d.captureException(f||`_error.js called with falsy error (${f})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return e.waitUntil(e.flushSafelyWithTimeout()),h}},720432,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.isUseCacheFunction=function(a){if(a.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:b}=function(a){let b=parseInt(a.slice(0,2),16),c=b>>1&63,d=Array(6);for(let a=0;a<6;a++){let b=c>>5-a&1;d[a]=1===b}return{type:1==(b>>7&1)?"use-cache":"server-action",usedArgs:d,hasRestArgs:1==(1&b)}}(a.$$id);return"use-cache"===b}},320495,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(373328),f=a.r(929689),g=a.r(720432);function h(a){let b=f.isBuild(),c=!!a&&g.isUseCacheFunction(a);return c&&e.DEBUG_BUILD&&d.debug.log("Skipping span creation in Cache Components context"),b||c}function i(){return new d.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}c.startInactiveSpan=function(a){return h()?i():d.startInactiveSpan(a)},c.startSpan=function(a,b){return h(b)?b(i()):d.startSpan(a,b)},c.startSpanManual=function(a,b){if(h(b)){let a=i();return b(a,()=>a.end())}return d.startSpanManual(a,b)}},734313,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(268404);c.callDataFetcherTraced=async function(a,b){try{return await a(...b)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),a}},c.withErrorInstrumentation=function(a){return async function(...b){try{return await a.apply(this,b)}catch(b){throw d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:a.name}}}),b}}},c.withTracedServerSideDataFetcher=function(a,b,c,f){return async function(...c){let g=d.httpRequestToRequestData(b);d.getCurrentScope().setTransactionName(`${f.dataFetchingMethodName} (${f.dataFetcherRouteName})`),d.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g});let h=d.getActiveSpan();h&&"/_error"!==f.requestedRouteName&&d.getRootSpan(h).setAttribute(e.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,f.requestedRouteName);let{"sentry-trace":i,baggage:j}=d.getTraceData();return{sentryTrace:i,baggage:j,data:await a.apply(this,c)}}}},772759,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetStaticPropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let f=e.withErrorInstrumentation(a);return e.callDataFetcherTraced(f,c)}})}},244416,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:f.pathname,requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c)??{};return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},823519,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapAppGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f.ctx,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_app",requestedRouteName:f.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,sentryTrace:j,baggage:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(d.pageProps||(d.pageProps={}),j&&(d.pageProps._sentryTraceData=j),k&&(d.pageProps._sentryBaggage=k)),d}}})}},534813,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapDocumentGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_document",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d}=await a.apply(b,c);return d}}})}},772851,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapErrorGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_error",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},774424,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(929689),e=a.r(734313);c.wrapGetServerSidePropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,c,f)=>{if(d.isBuild())return a.apply(c,f);let[g]=f,{req:h,res:i}=g,j=e.withErrorInstrumentation(a),k=e.withTracedServerSideDataFetcher(j,h,i,{dataFetcherRouteName:b,requestedRouteName:b,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:m,sentryTrace:n}=await k.apply(c,f);return"object"==typeof l&&null!==l&&"props"in l&&(n&&(l.props._sentryTraceData=n),m&&(l.props._sentryBaggage=m)),l}})}},971876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.isNotFoundNavigationError=function(a){return d.isError(a)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(a.digest)},c.isRedirectNavigationError=function(a){return d.isError(a)&&"string"==typeof a.digest&&a.digest.startsWith("NEXT_REDIRECT;")}},538357,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);c.wrapServerComponentWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h=d.getIsolationScope(),i=b.headers?d.winterCGHeadersToDict(b.headers):void 0;return h.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g}=b,i=!0;h.setTransactionName(`${g} Server Component (${f})`),c&&(e.isNotFoundNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),i&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},18905,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);a.r(858952),c.wrapRouteHandlerWithSentry=function(a,b){let{method:c,parameterizedRoute:g,headers:h}=b;return new Proxy(a,{apply:async(a,b,h)=>{let i=d.getActiveSpan(),j=i?d.getRootSpan(i):void 0;return d.withIsolationScope(d.getIsolationScope(),()=>d.withScope(async k=>{k.setTransactionName(`${c} ${g}`);let l=await d.handleCallbackErrors(()=>a.apply(b,h),a=>{e.isRedirectNavigationError(a)||(e.isNotFoundNavigationError(a)?(i&&d.setHttpStatus(i,404),j&&d.setHttpStatus(j,404)):d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{f.waitUntil(f.flushSafelyWithTimeout())});try{l.status&&(i&&d.setHttpStatus(i,l.status),j&&d.setHttpStatus(j,l.status))}catch{}return l}))}})}},573248,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);c.wrapApiHandlerWithSentryVercelCrons=function(a,b){return new Proxy(a,{apply:(a,c,e)=>{let f;if(!e?.[0])return a.apply(c,e);let[g]=e,h="nextUrl"in g?g.nextUrl.pathname:g.url,i="nextUrl"in g?g.headers.get("user-agent"):g.headers["user-agent"];if(!b||!i?.includes("vercel-cron"))return a.apply(c,e);let j=b.find(a=>a.path===h);if(!j?.path||!j.schedule)return a.apply(c,e);let k=j.path,l=d.captureCheckIn({monitorSlug:k,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:j.schedule}}),m=d._INTERNAL_safeDateNow()/1e3,n=()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"error",duration:d._INTERNAL_safeDateNow()/1e3-m})};try{f=a.apply(c,e)}catch(a){throw n(),a}return"object"==typeof f&&null!==f&&"then"in f?Promise.resolve(f).then(()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m})},()=>{n()}):d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m}),f}})}},918691,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.wrapMiddlewareWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{let f="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(f&&"string"==typeof f){let a=c[0];if(a instanceof Request&&new URL(a.url).pathname.startsWith(f))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return d.withIsolationScope(f=>{let g,h,i=c[0],j=d.getCurrentScope();i instanceof Request?(f.setSDKProcessingMetadata({normalizedRequest:d.winterCGRequestToRequestData(i)}),g=`middleware ${i.method}`,h="url"):(g="middleware",h="component"),j.setTransactionName(g);let k=d.getActiveSpan();if(k){g="middleware",h="component";let a=d.getRootSpan(k);a&&d.setCapturedScopesOnSpan(a,j,f)}return d.startSpan({name:g,op:"http.server.middleware",attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h,[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>d.handleCallbackErrors(()=>a.apply(b,c),a=>{d.captureException(a,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{e.waitUntil(e.flushSafelyWithTimeout())}))})}})}},131427,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153);function e(a,b){a&&"object"==typeof a&&d.addNonEnumerableProperty(a,"__sentry_event_id__",b)}c.wrapPageComponentWithSentry=function(a){return"function"==typeof a&&a?.prototype?.isReactComponent?class extends a{render(...a){return d.withIsolationScope(()=>{let b=d.getCurrentScope(),c="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(c){let a=d.extractTraceparentData(c);b.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return super.render(...a)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw e(b,a),b}})}}:"function"==typeof a?new Proxy(a,{apply:(a,b,c)=>d.withIsolationScope(()=>{let f=d.getCurrentScope(),g=c?.[0]?._sentryTraceData;if(g){let a=d.extractTraceparentData(g);f.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return a.apply(b,c)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw e(b,a),b}})}):a}},708403,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(971876),f=a.r(498934);c.wrapGenerationFunctionWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h,i=d.getIsolationScope();try{h=b.requestAsyncStorage?.getStore()?.headers}catch{}let j=h?d.winterCGHeadersToDict(h):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:j}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g,generationFunctionIdentifier:h}=b,j=!0;i.setTransactionName(`${g}.${h} (${f})`),c&&(e.isNotFoundNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),j&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:h}}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},603642,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934),f=a.r(373328),g=a.r(971876);async function h(a,b,c){return d.withIsolationScope(async h=>{let i,j,k=d.getClient()?.getOptions().sendDefaultPii,l={};try{let a=await b.headers;i=a?.get("sentry-trace")??void 0,j=a?.get("baggage"),a?.forEach((a,b)=>{l[b]=a})}catch{f.DEBUG_BUILD&&d.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return h.setTransactionName(`serverAction/${a}`),h.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:i,baggage:j},async()=>{try{return await d.startSpan({op:"function.server_action",name:`serverAction/${a}`,forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async a=>{let e=await d.handleCallbackErrors(c,b=>{g.isNotFoundNavigationError(b)?a.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"}):g.isRedirectNavigationError(b)||(a.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"}),d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==b.recordResponse?b.recordResponse:k)&&d.getIsolationScope().setExtra("server_action_result",e),b.formData&&b.formData.forEach((a,b)=>{d.getIsolationScope().setExtra(`server_action_form_data.${b}`,"string"==typeof a?a:"[non-string value]")}),e})}finally{e.waitUntil(e.flushSafelyWithTimeout())}})})}c.withServerActionInstrumentation=function(...a){if("function"==typeof a[1]){let[b,c]=a;return h(b,{},c)}{let[b,c,d]=a;return h(b,c,d)}}},506983,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934);c.captureRequestError=function(a,b,c){d.withScope(f=>{f.setSDKProcessingMetadata({normalizedRequest:{headers:d.headersToDict(b.headers),method:b.method}}),f.setContext("nextjs",{request_path:b.path,router_kind:c.routerKind,router_path:c.routePath,route_type:c.routeType}),f.setTransactionName(`${b.method} ${c.routePath}`),d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),e.waitUntil(e.flushSafelyWithTimeout())})}},12234,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97153),e=a.r(498934),f=a.r(858952);c.wrapApiHandlerWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>(f.dropNextjsRootContext(),f.escapeNextjsTracing(()=>{let[f,h]=g;return f?h?f.__withSentry_applied__?a.apply(c,g):(f.__withSentry_applied__=!0,d.withIsolationScope(i=>(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:f.headers&&d.isString(f.headers["sentry-trace"])?f.headers["sentry-trace"]:void 0,baggage:f.headers?.baggage},()=>{let j=`${(f.method||"GET").toUpperCase()} `,k=d.httpRequestToRequestData(f);return i.setSDKProcessingMetadata({normalizedRequest:k}),i.setTransactionName(`${j}${b}`),d.startSpanManual({name:`${j}${b}`,op:"http.server",forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async b=>{h.end=new Proxy(h.end,{apply:(a,c,f)=>(d.setHttpStatus(b,h.statusCode),b.end(),e.waitUntil(e.flushSafelyWithTimeout()),a.apply(c,f))});try{return await a.apply(c,g)}catch(f){let c=d.objectify(f);throw d.captureException(c,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:a.name,function:"withSentry"}}}),d.setHttpStatus(b,500),b.end(),await e.flushSafelyWithTimeout(),c}})}))):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a response object. Will not instrument.`),a.apply(c,g)):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a request object. Will not instrument.`),a.apply(c,g))}))})}},797822,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357223),e=a.r(97153),f=a.r(874208),g=a.r(373328);a.r(967602);let h=a.r(562293),i=a.r(473132),j=a.r(268404),k=a.r(929689),l=a.r(498934),m=a.r(816617),n=a.r(734080),o=a.r(368517),p=a.r(58753),q=a.r(431385),r=a.r(766711),s=a.r(535727),t=a.r(320495),u=a.r(772759),v=a.r(244416),w=a.r(823519),x=a.r(534813),y=a.r(772851),z=a.r(774424),A=a.r(538357),B=a.r(18905),C=a.r(573248),D=a.r(918691),E=a.r(131427),F=a.r(708403),G=a.r(603642),H=a.r(506983),I=a.r(12234);e.GLOBAL_OBJ,c.captureUnderscoreErrorException=s.captureUnderscoreErrorException,c.startInactiveSpan=t.startInactiveSpan,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.wrapGetStaticPropsWithSentry=u.wrapGetStaticPropsWithSentry,c.wrapGetInitialPropsWithSentry=v.wrapGetInitialPropsWithSentry,c.wrapAppGetInitialPropsWithSentry=w.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=x.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=y.wrapErrorGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=z.wrapGetServerSidePropsWithSentry,c.wrapServerComponentWithSentry=A.wrapServerComponentWithSentry,c.wrapRouteHandlerWithSentry=B.wrapRouteHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,c.wrapMiddlewareWithSentry=D.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=E.wrapPageComponentWithSentry,c.wrapGenerationFunctionWithSentry=F.wrapGenerationFunctionWithSentry,c.withServerActionInstrumentation=G.withServerActionInstrumentation,c.captureRequestError=H.captureRequestError,c.wrapApiHandlerWithSentry=I.wrapApiHandlerWithSentry,c.ErrorBoundary=a=>a.children?"function"==typeof a.children?a.children():a.children:null,c.createReduxEnhancer=function(){return a=>a},c.init=function(a){if(p.prepareSafeIdGeneratorContext(),k.isBuild())return;!g.DEBUG_BUILD&&a.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let b=f.getDefaultIntegrations(a).filter(a=>"Http"!==a.name).concat(f.httpIntegration({disableIncomingRequestSpans:!0}));a.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),b.push(n.distDirRewriteFramesIntegration({distDirName:".next"}));let c=function(){if(l.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),s={environment:a.environment||process.env.SENTRY_ENVIRONMENT||h.getVercelEnv(!1)||"production",release:"dc62485b60679b810b5f74bfb5a22915b7a62314",defaultIntegrations:b,...a,...c};if(g.DEBUG_BUILD&&s.debug&&e.debug.enable(),g.DEBUG_BUILD&&e.debug.log("Initializing SDK..."),e.getClient()){g.DEBUG_BUILD&&e.debug.log("SDK already initialized");return}e.applySdkMetadata(s,"nextjs",["nextjs",c?"cloudflare":"node"]);let t=f.init(s);t?.on("beforeSampling",({spanAttributes:a},b)=>{("string"==typeof a[d.SEMATTRS_HTTP_TARGET]&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof a[d.ATTR_URL_QUERY]&&a[d.ATTR_URL_QUERY].includes("sentry_key")&&a[d.ATTR_URL_QUERY].includes("sentry_client"))&&(b.decision=!1)}),t?.on("spanStart",o.handleOnSpanStart),t?.on("spanEnd",q.maybeCompleteCronCheckIn),t?.on("spanEnd",r.maybeCleanupQueueSpan),e.getGlobalScope().addEventProcessor(Object.assign(a=>{if("transaction"!==a.type)return a;if(a.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||a.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===a.transaction||a.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===a.transaction)return null;if("string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(b?.parentSampled===!1)return null}return a},{id:"NextLowQualityTransactionsFilter"})),e.getGlobalScope().addEventProcessor(Object.assign((a,b)=>{if(void 0!==a.type)return a;let c=b.originalException;if("object"==typeof c&&null!==c&&"$$typeof"in c&&c.$$typeof===Symbol.for("react.postpone"))return null;let d=a.exception?.values?.[0]?.value;return d?.includes("Suspense Exception: This is not a real error!")||d?.includes("Suspense Exception: This is not a real error, and should not leak")?null:a},{id:"DropReactControlFlowErrors"})),t?.on("preprocessEvent",a=>{if("transaction"===a.type&&a.contexts?.trace?.data?.[i.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",a.contexts.trace.op="http.server",a.transaction&&(a.transaction=e.stripUrlQueryAndFragment(a.transaction));let b=a.contexts.trace.data[d.SEMATTRS_HTTP_METHOD],c=a.contexts?.trace?.data?.[d.SEMATTRS_HTTP_TARGET],f=a.contexts.trace.data[d.ATTR_HTTP_ROUTE]||a.contexts.trace.data[i.ATTR_NEXT_ROUTE],g=a.contexts.trace.data[i.ATTR_NEXT_SPAN_NAME];if("string"==typeof b&&"string"==typeof f&&!f.startsWith("middleware")){let c=f.replace(/\/route$/,"");a.transaction=`${b} ${c}`,a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",a.contexts.trace.data[i.ATTR_NEXT_ROUTE]=c}a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==a.transaction&&(a.transaction=`${b} ${a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let h="string"==typeof g&&g.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);h&&(a.transaction=`middleware ${h[1]}`,a.contexts.trace.op="http.server.middleware"),"GET /_error"===a.transaction&&c&&(a.transaction=`${b?`${b} `:""}${c}`)}if("transaction"===a.type&&"string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);b?.traceId&&(a.contexts.trace.trace_id=b.traceId),b?.parentSpanId&&(a.contexts.trace.parent_span_id=b.parentSpanId)}m.setUrlProcessingMetadata(a)});try{e.getGlobalScope().setTag("turbopack",!0)}catch{}return g.DEBUG_BUILD&&e.debug.log("SDK successfully initialized"),t},c.showReportDialog=function(){},c.withErrorBoundary=function(a){return a},Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})},17814,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(114530),e=a.r(797822),f=a.r(874208),g=a.r(506983),h=a.r(535727),i=a.r(320495),j=a.r(603642),k=a.r(12234),l=a.r(573248),m=a.r(823519),n=a.r(534813),o=a.r(772851),p=a.r(708403),q=a.r(244416),r=a.r(774424),s=a.r(772759),t=a.r(918691),u=a.r(131427),v=a.r(18905),w=a.r(538357);c.withSentryConfig=d.withSentryConfig,c.ErrorBoundary=e.ErrorBoundary,c.createReduxEnhancer=e.createReduxEnhancer,c.init=e.init,c.showReportDialog=e.showReportDialog,c.withErrorBoundary=e.withErrorBoundary,c.captureRequestError=g.captureRequestError,c.captureUnderscoreErrorException=h.captureUnderscoreErrorException,c.startInactiveSpan=i.startInactiveSpan,c.startSpan=i.startSpan,c.startSpanManual=i.startSpanManual,c.withServerActionInstrumentation=j.withServerActionInstrumentation,c.wrapApiHandlerWithSentry=k.wrapApiHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=l.wrapApiHandlerWithSentryVercelCrons,c.wrapAppGetInitialPropsWithSentry=m.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=n.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=o.wrapErrorGetInitialPropsWithSentry,c.wrapGenerationFunctionWithSentry=p.wrapGenerationFunctionWithSentry,c.wrapGetInitialPropsWithSentry=q.wrapGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=r.wrapGetServerSidePropsWithSentry,c.wrapGetStaticPropsWithSentry=s.wrapGetStaticPropsWithSentry,c.wrapMiddlewareWithSentry=t.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=u.wrapPageComponentWithSentry,c.wrapRouteHandlerWithSentry=v.wrapRouteHandlerWithSentry,c.wrapServerComponentWithSentry=w.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})}]; -//# debugId=de2c1a74-3f86-153e-3829-ec16c4c99ae1 +//# debugId=1a5b8728-ca5f-4a09-bec2-4f5e70493008 //# sourceMappingURL=node_modules__pnpm_2ad0b5ae._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js b/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js index 317bdcfba..f99a594e8 100644 --- a/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js +++ b/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_66399b09._.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="4de6bcc9-110d-c5e1-84bb-f8ff52794f2a")}catch(e){}}(); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="85b2df47-db08-9f4c-e7fd-3b057452485d")}catch(e){}}(); module.exports=[492856,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.GLOBAL_OBJ=globalThis},633232,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.SDK_VERSION="10.47.0"},785734,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(633232),e=a.r(159409);function f(a){let b=a.__SENTRY__=a.__SENTRY__||{};return b.version=b.version||d.SDK_VERSION,b[d.SDK_VERSION]=b[d.SDK_VERSION]||{}}c.getGlobalSingleton=function(a,b,c=e.GLOBAL_OBJ){let f=c.__SENTRY__=c.__SENTRY__||{},g=f[d.SDK_VERSION]=f[d.SDK_VERSION]||{};return g[a]||(g[a]=b())},c.getMainCarrier=function(){return f(e.GLOBAL_OBJ),e.GLOBAL_OBJ},c.getSentryCarrier=f},451079,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(785734),e=a.r(492856),f=a.r(159409),g={};function h(a){if(!("console"in f.GLOBAL_OBJ))return a();let b=f.GLOBAL_OBJ.console,c={},d=Object.keys(g);d.forEach(a=>{let d=g[a];c[a]=b[a],b[a]=d});try{return a()}finally{d.forEach(a=>{b[a]=c[a]})}}function i(){return k().enabled}function j(a,...b){e.DEBUG_BUILD&&i()&&h(()=>{f.GLOBAL_OBJ.console[a](`Sentry Logger [${a}]:`,...b)})}function k(){return e.DEBUG_BUILD?d.getGlobalSingleton("loggerSettings",()=>({enabled:!1})):{enabled:!1}}c.CONSOLE_LEVELS=["debug","info","warn","error","log","assert","trace"],c.consoleSandbox=h,c.debug={enable:function(){k().enabled=!0},disable:function(){k().enabled=!1},isEnabled:i,log:function(...a){j("log",...a)},warn:function(...a){j("warn",...a)},error:function(...a){j("error",...a)}},c.originalConsoleMethods=g},456081,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=/\(error: (.*)\)/,e=/captureMessage|captureException/;function f(...a){let b=a.sort((a,b)=>a[0]-b[0]).map(a=>a[1]);return(a,c=0,e=0)=>{let f=[],h=a.split("\n");for(let a=c;a1024&&(c=c.slice(0,1024));let g=d.test(c)?c.replace(d,"$1"):c;if(!g.match(/\S*Error: /)){for(let a of b){let b=a(g);if(b){f.push(b);break}}if(f.length>=50+e)break}}return g(f.slice(e))}}function g(a){if(!a.length)return[];let b=Array.from(a);return/sentryWrapped/.test(h(b).function||"")&&b.pop(),b.reverse(),e.test(h(b).function||"")&&(b.pop(),e.test(h(b).function||"")&&b.pop()),b.slice(0,50).map(a=>({...a,filename:a.filename||h(b).filename,function:a.function||"?"}))}function h(a){return a[a.length-1]||{}}let i="";c.UNKNOWN_FUNCTION="?",c.createStackParser=f,c.getFramesFromEvent=function(a){let b=a.exception;if(b){let a=[];try{return b.values.forEach(b=>{b.stacktrace.frames&&a.push(...b.stacktrace.frames)}),a}catch{}}},c.getFunctionName=function(a){try{if(!a||"function"!=typeof a)return i;return a.name||i}catch{return i}},c.getVueInternalName=function(a){return"__v_isVNode"in a&&a.__v_isVNode?"[VueVNode]":"[VueViewModel]"},c.normalizeStackTracePath=function(a){let b=a?.startsWith("file://")?a.slice(7):a;return b?.match(/\/[A-Z]:/)&&(b=b.slice(1)),b},c.stackParserFromStackParserOptions=function(a){return Array.isArray(a)?f(...a):a},c.stripSentryFramesAndReverse=g},723381,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(492856),e=a.r(451079),f=a.r(456081),g={},h={};c.addHandler=function(a,b){g[a]=g[a]||[],g[a].push(b)},c.maybeInstrument=function(a,b){if(!h[a]){h[a]=!0;try{b()}catch(b){d.DEBUG_BUILD&&e.debug.error(`Error while instrumenting ${a}`,b)}}},c.resetInstrumentationHandlers=function(){Object.keys(g).forEach(a=>{g[a]=void 0})},c.triggerHandlers=function(a,b){let c=a&&g[a];if(c)for(let g of c)try{g(b)}catch(b){d.DEBUG_BUILD&&e.debug.error(`Error while triggering instrumentation handler. Type: ${a} Name: ${f.getFunctionName(g)} @@ -20,7 +20,7 @@ ${a.stack}`:"unknown"}}}}}let k=d.defineIntegration((a={})=>{let b=a.limit??10;r `;let n=h.parseProxyResponse(c);c.write(`${m}\r `);let{connect:o,buffered:p}=await n;if(a.emit("proxyConnect",o),this.emit("proxyConnect",o,a),200===o.statusCode){if(a.once("socket",k),b.secureEndpoint){i("Upgrading socket connection to TLS");let a=b.servername||b.host;return e.connect({...l(b,"host","path","port"),socket:c,servername:d.isIP(a)?void 0:a})}return c}c.destroy();let q=new d.Socket({writable:!1});return q.readable=!0,a.once("socket",a=>{i("Replaying proxy buffer for failed request"),a.push(p),a.push(null)}),q}}function k(a){a.resume()}function l(a,...b){let c,d={};for(c in a)b.includes(c)||(d[c]=a[c]);return d}j.__initStatic(),c.HttpsProxyAgent=j},667678,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(347299),e=a.r(743698),f=a.r(81111),g=a.r(727028),h=a.r(187845),i=a.r(454973);c.makeNodeTransport=function(a){let b;try{b=new URL(a.url)}catch(b){return h.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),h.createTransport(a,()=>Promise.resolve({}))}let c="https:"===b.protocol,j=function(a,b){let{no_proxy:c}=process.env;if(!c?.split(",").some(b=>a.host.endsWith(b)||a.hostname.endsWith(b)))return b}(b,a.proxy||(c?process.env.https_proxy:void 0)||process.env.http_proxy),k=c?e:d,l=void 0!==a.keepAlive&&a.keepAlive,m=j?new i.HttpsProxyAgent(j):new k.Agent({keepAlive:l,maxSockets:30,timeout:2e3}),n=function(a,b,c){let{hostname:d,pathname:e,port:i,protocol:j,search:k}=new URL(a.url);return function(l){return new Promise((m,n)=>{h.suppressTracing(()=>{var h;let o=(h=l.body,new f.Readable({read(){this.push(h),this.push(null)}})),p={...a.headers};l.body.length>32768&&(p["content-encoding"]="gzip",o=o.pipe(g.createGzip()));let q=d.startsWith("["),r=b.request({method:"POST",agent:c,headers:p,hostname:q?d.slice(1,-1):d,path:`${e}${k}`,port:i,protocol:j,ca:a.caCerts},a=>{a.on("data",()=>{}),a.on("end",()=>{}),a.setEncoding("utf8");let b=a.headers["retry-after"]??null,c=a.headers["x-sentry-rate-limits"]??null;m({statusCode:a.statusCode,headers:{"retry-after":b,"x-sentry-rate-limits":Array.isArray(c)?c[0]||null:c}})});r.on("error",n),o.pipe(r)})})}}(a,a.httpModule??k,m);return h.createTransport(a,n)}},82981,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.getSpotlightConfig=function(a){if(!1===a)return!1;if("string"==typeof a)return a;let b=d.envToBool(process.env.SENTRY_SPOTLIGHT,{strict:!0}),c=null===b&&process.env.SENTRY_SPOTLIGHT?process.env.SENTRY_SPOTLIGHT:void 0;return!0===a?c??!0:b??c}},97632,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(750227),e=a.r(187845);function f(a){return a.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}c.createGetModuleFromFilename=function(a=process.argv[1]?e.dirname(process.argv[1]):process.cwd(),b="\\"===d.sep){let c=b?f(a):a;return a=>{if(!a)return;let e=b?f(a):a,{dir:g,base:h,ext:i}=d.posix.parse(e);(".js"===i||".mjs"===i||".cjs"===i)&&(h=h.slice(0,-1*i.length));let j=decodeURIComponent(h);g||(g=".");let k=g.lastIndexOf("/node_modules");if(k>-1)return`${g.slice(k+14).replace(/\//g,".")}:${j}`;if(g.startsWith(c)){let a=g.slice(c.length+1).replace(/\//g,".");return a?`${a}:${j}`:j}return j}}},688113,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(97632);c.defaultStackParser=d.createStackParser(d.nodeStackLineParser(e.createGetModuleFromFilename())),c.getSentryRelease=function(a){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(d.GLOBAL_OBJ.SENTRY_RELEASE?.id)return d.GLOBAL_OBJ.SENTRY_RELEASE.id;let b=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,c=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_BUILD_COMMIT||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,e=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return b||c||e||a}},647260,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(660526),e=a.r(832528),f=a.r(167300),g=a.r(187845),h=a.r(221598),i=a.r(37702),j=a.r(970626);class k extends g.ServerRuntimeClient{constructor(b){const c=!1===b.includeServerName?void 0:b.serverName||a.g.process.env.SENTRY_NAME||d.hostname(),e={...b,platform:"node",runtime:b.runtime||{name:"node",version:a.g.process.version},serverName:c};b.openTelemetryInstrumentations&&f.registerInstrumentations({instrumentations:b.openTelemetryInstrumentations}),g.applySdkMetadata(e,"node"),g.debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${i.isMainThread?"main":`worker-${i.threadId}`}.`),super(e),this.getOptions().enableLogs&&(this._logOnExitFlushListener=()=>{g._INTERNAL_flushLogsBuffer(this)},c&&this.on("beforeCaptureLog",a=>{a.attributes={...a.attributes,"server.address":c}}),process.on("beforeExit",this._logOnExitFlushListener))}get tracer(){if(this._tracer)return this._tracer;let a=g.SDK_VERSION,b=e.trace.getTracer("@sentry/node",a);return this._tracer=b,b}async flush(a){return await this.traceProvider?.forceFlush(),this.getOptions().sendClientReports&&this._flushOutcomes(),super.flush(a)}async close(a){this._clientReportInterval&&clearInterval(this._clientReportInterval),this._clientReportOnExitFlushListener&&process.off("beforeExit",this._clientReportOnExitFlushListener),this._logOnExitFlushListener&&process.off("beforeExit",this._logOnExitFlushListener);let b=await super.close(a);return this.traceProvider&&await this.traceProvider.shutdown(),b}startClientReportTracking(){let a=this.getOptions();a.sendClientReports&&(this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{j.DEBUG_BUILD&&g.debug.log("Flushing client reports based on interval."),this._flushOutcomes()},a.clientReportFlushInterval??6e4).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener))}_setupIntegrations(){g._INTERNAL_clearAiProviderSkips(),super._setupIntegrations()}_getTraceInfoFromScope(a){return a?h.getTraceContextForScope(this,a):[void 0,void 0]}}c.NodeClient=k},995166,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(285512),f=a.r(362562),g=a.r(769575);var h="u">typeof document?document.currentScript:null;c.initializeEsmLoader=function(){if(g.supportsEsmLoaderHooks()&&!d.GLOBAL_OBJ._sentryEsmLoaderHookRegistered){d.GLOBAL_OBJ._sentryEsmLoaderHookRegistered=!0;try{let{addHookMessagePort:b}=e.createAddHookMessageChannel();f.register("import-in-the-middle/hook.mjs","u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(221598),f=a.r(970626),g=a.r(741677),h=a.r(255980),i=a.r(751233),j=a.r(97209),k=a.r(881969),l=a.r(899800),m=a.r(440222),n=a.r(548957),o=a.r(375821),p=a.r(173240),q=a.r(930951),r=a.r(367287),s=a.r(667678),t=a.r(769575),u=a.r(82981),v=a.r(688113),w=a.r(647260),x=a.r(995166);function y(){return[d.inboundFiltersIntegration(),d.functionToStringIntegration(),d.linkedErrorsIntegration(),d.requestDataIntegration(),r.systemErrorIntegration(),d.conversationIdIntegration(),d.consoleIntegration(),j.httpIntegration(),m.nativeNodeFetchIntegration(),n.onUncaughtExceptionIntegration(),o.onUnhandledRejectionIntegration(),i.contextLinesIntegration(),k.localVariablesIntegration(),h.nodeContextIntegration(),g.childProcessIntegration(),p.processSessionIntegration(),l.modulesIntegration()]}function z(a={},b){var c,g;let h,i,j,k,l,m,n=(c=a,g=b,h=function(a){if(void 0!==a)return a;let b=v.getSentryRelease();if(void 0!==b)return b}(c.release),i=u.getSpotlightConfig(c.spotlight),j=function(a){if(void 0!==a)return a;let b=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!b)return;let c=parseFloat(b);return isFinite(c)?c:void 0}(c.tracesSampleRate),k={...c,dsn:c.dsn??process.env.SENTRY_DSN,environment:c.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:c.sendClientReports??!0,transport:c.transport??s.makeNodeTransport,stackParser:d.stackParserFromStackParserOptions(c.stackParser||v.defaultStackParser),release:h,tracesSampleRate:j,spotlight:i,debug:d.envToBool(c.debug??process.env.SENTRY_DEBUG)},l=c.integrations,m=c.defaultIntegrations??g(k),{...k,integrations:d.getIntegrationsToSetup({defaultIntegrations:m,integrations:l})});!0===n.debug&&(f.DEBUG_BUILD?d.debug.enable():d.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),!1!==n.registerEsmLoaderHooks&&x.initializeEsmLoader(),e.setOpenTelemetryContextAsyncContextStrategy(),d.getCurrentScope().update(n.initialScope),n.spotlight&&!n.integrations.some(({name:a})=>a===q.INTEGRATION_NAME)&&n.integrations.push(q.spotlightIntegration({sidecarUrl:"string"==typeof n.spotlight?n.spotlight:void 0})),d.applySdkMetadata(n,"node-core");let o=new w.NodeClient(n);return d.getCurrentScope().setClient(o),o.init(),d.debug.log(`SDK initialized from ${t.isCjs()?"CommonJS":"ESM"}`),o.startClientReportTracking(),function(){if(!1!==d.envToBool(process.env.SENTRY_USE_ENVIRONMENT)){let a=process.env.SENTRY_TRACE,b=process.env.SENTRY_BAGGAGE,c=d.propagationContextFromHeaders(a,b);d.getCurrentScope().setPropagationContext(c)}}(),e.enhanceDscWithOpenTelemetryRootSpanName(o),e.setupEventContextTrace(o),process.env.VERCEL&&process.on("SIGTERM",async()=>{await o.flush(200)}),o}c.getDefaultIntegrations=y,c.init=function(a={}){return z(a,y)},c.initWithoutDefaultIntegrations=function(a={}){return z(a,()=>[])},c.validateOpenTelemetrySetup=function(){if(!f.DEBUG_BUILD)return;let a=e.openTelemetrySetupCheck(),b=["SentryContextManager","SentryPropagator"];for(let c of(d.hasSpansEnabled()&&b.push("SentrySpanProcessor"),b))a.includes(c)||d.debug.error(`You have to set up the ${c}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);a.includes("SentrySampler")||d.debug.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}},262955,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(221598);c.setIsolationScope=function(a){let b=e.getScopesFromContext(d.context.active());b&&(b.isolationScope=a)}},97827,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(769575);c.createMissingInstrumentationContext=a=>({package:a,"javascript.is_cjs":d.isCjs()})},125677,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(97827),g=a.r(769575);c.ensureIsWrapped=function(a,b){let c=e.getClient()?.getOptions();!c?.disableInstrumentationWarnings&&!d.isWrapped(a)&&e.isEnabled()&&e.hasSpansEnabled(c)&&(e.consoleSandbox(()=>{g.isCjs()?console.warn(`[Sentry] ${b} is not instrumented. This is likely because you required/imported ${b} before calling \`Sentry.init()\`.`):console.warn(`[Sentry] ${b} is not instrumented. Please make sure to initialize Sentry in a separate file that you \`--import\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${b}/install/esm/.`)}),e.getGlobalScope().setContext("missing_instrumentation",f.createMissingInstrumentationContext(b)))}},874835,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(812057),e=a.r(925127),f=a.r(187845),g=a.r(175262),h=a.r(558930),{isPromise:i}=d.types,j="LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ3LjAgKGE1YTRlNzMpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyB0fWZyb20ibm9kZTppbnNwZWN0b3IiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIG4scGFyZW50UG9ydCBhcyBlfWZyb20ibm9kZTp3b3JrZXJfdGhyZWFkcyI7aW1wb3J0e3Bvc2l4IGFzIHIsc2VwIGFzIG99ZnJvbSJub2RlOnBhdGgiO2ltcG9ydCphcyBpIGZyb20ibm9kZTpodHRwIjtpbXBvcnQqYXMgcyBmcm9tIm5vZGU6aHR0cHMiO2ltcG9ydHtSZWFkYWJsZSBhcyBjfWZyb20ibm9kZTpzdHJlYW0iO2ltcG9ydHtjcmVhdGVHemlwIGFzIHV9ZnJvbSJub2RlOnpsaWIiO2ltcG9ydCphcyBhIGZyb20ibm9kZTpuZXQiO2ltcG9ydCphcyBmIGZyb20ibm9kZTp0bHMiO2NvbnN0IGg9InVuZGVmaW5lZCI9PXR5cGVvZiBfX1NFTlRSWV9ERUJVR19ffHxfX1NFTlRSWV9ERUJVR19fLHA9Z2xvYmFsVGhpcyxkPSIxMC40Ny4wIjtmdW5jdGlvbiBsKCl7cmV0dXJuIG0ocCkscH1mdW5jdGlvbiBtKHQpe2NvbnN0IG49dC5fX1NFTlRSWV9fPXQuX19TRU5UUllfX3x8e307cmV0dXJuIG4udmVyc2lvbj1uLnZlcnNpb258fGQsbltkXT1uW2RdfHx7fX1mdW5jdGlvbiBnKHQsbixlPXApe2NvbnN0IHI9ZS5fX1NFTlRSWV9fPWUuX19TRU5UUllfX3x8e30sbz1yW2RdPXJbZF18fHt9O3JldHVybiBvW3RdfHwob1t0XT1uKCkpfWNvbnN0IHk9e307ZnVuY3Rpb24gYih0KXtpZighKCJjb25zb2xlImluIHApKXJldHVybiB0KCk7Y29uc3Qgbj1wLmNvbnNvbGUsZT17fSxyPU9iamVjdC5rZXlzKHkpO3IuZm9yRWFjaCh0PT57Y29uc3Qgcj15W3RdO2VbdF09blt0XSxuW3RdPXJ9KTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3IuZm9yRWFjaCh0PT57blt0XT1lW3RdfSl9fWZ1bmN0aW9uIHYoKXtyZXR1cm4gdygpLmVuYWJsZWR9ZnVuY3Rpb24gXyh0LC4uLm4pe2gmJnYoKSYmYigoKT0+e3AuY29uc29sZVt0XShgU2VudHJ5IExvZ2dlciBbJHt0fV06YCwuLi5uKX0pfWZ1bmN0aW9uIHcoKXtyZXR1cm4gaD9nKCJsb2dnZXJTZXR0aW5ncyIsKCk9Pih7ZW5hYmxlZDohMX0pKTp7ZW5hYmxlZDohMX19Y29uc3QgUz17ZW5hYmxlOmZ1bmN0aW9uKCl7dygpLmVuYWJsZWQ9ITB9LGRpc2FibGU6ZnVuY3Rpb24oKXt3KCkuZW5hYmxlZD0hMX0saXNFbmFibGVkOnYsbG9nOmZ1bmN0aW9uKC4uLnQpe18oImxvZyIsLi4udCl9LHdhcm46ZnVuY3Rpb24oLi4udCl7Xygid2FybiIsLi4udCl9LGVycm9yOmZ1bmN0aW9uKC4uLnQpe18oImVycm9yIiwuLi50KX19LCQ9L2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vO2Z1bmN0aW9uIEUodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV18fHt9fWNvbnN0IHg9Ijxhbm9ueW1vdXM+Ijtjb25zdCBOPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gaih0LG4pe3JldHVybiBOLmNhbGwodCk9PT1gW29iamVjdCAke259XWB9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gaih0LCJTdHJpbmciKX1mdW5jdGlvbiBBKHQpe3JldHVybiBqKHQsIk9iamVjdCIpfWZ1bmN0aW9uIFQodCl7cmV0dXJuIEJvb2xlYW4odD8udGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbil9ZnVuY3Rpb24gayh0LG4pe3RyeXtyZXR1cm4gdCBpbnN0YW5jZW9mIG59Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IEk9cDtmdW5jdGlvbiBPKHQsbil7Y29uc3QgZT10LHI9W107aWYoIWU/LnRhZ05hbWUpcmV0dXJuIiI7aWYoSS5IVE1MRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZlLmRhdGFzZXQpe2lmKGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlDb21wb25lbnQ7aWYoZS5kYXRhc2V0LnNlbnRyeUVsZW1lbnQpcmV0dXJuIGUuZGF0YXNldC5zZW50cnlFbGVtZW50fXIucHVzaChlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSk7Y29uc3Qgbz1uPy5sZW5ndGg/bi5maWx0ZXIodD0+ZS5nZXRBdHRyaWJ1dGUodCkpLm1hcCh0PT5bdCxlLmdldEF0dHJpYnV0ZSh0KV0pOm51bGw7aWYobz8ubGVuZ3RoKW8uZm9yRWFjaCh0PT57ci5wdXNoKGBbJHt0WzBdfT0iJHt0WzFdfSJdYCl9KTtlbHNle2UuaWQmJnIucHVzaChgIyR7ZS5pZH1gKTtjb25zdCB0PWUuY2xhc3NOYW1lO2lmKHQmJkModCkpe2NvbnN0IG49dC5zcGxpdCgvXHMrLyk7Zm9yKGNvbnN0IHQgb2YgbilyLnB1c2goYC4ke3R9YCl9fWZvcihjb25zdCB0IG9mWyJhcmlhLWxhYmVsIiwidHlwZSIsIm5hbWUiLCJ0aXRsZSIsImFsdCJdKXtjb25zdCBuPWUuZ2V0QXR0cmlidXRlKHQpO24mJnIucHVzaChgWyR7dH09IiR7bn0iXWApfXJldHVybiByLmpvaW4oIiIpfWZ1bmN0aW9uIFIodCl7aWYoZnVuY3Rpb24odCl7c3dpdGNoKE4uY2FsbCh0KSl7Y2FzZSJbb2JqZWN0IEVycm9yXSI6Y2FzZSJbb2JqZWN0IEV4Y2VwdGlvbl0iOmNhc2UiW29iamVjdCBET01FeGNlcHRpb25dIjpjYXNlIltvYmplY3QgV2ViQXNzZW1ibHkuRXhjZXB0aW9uXSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gayh0LEVycm9yKX19KHQpKXJldHVybnttZXNzYWdlOnQubWVzc2FnZSxuYW1lOnQubmFtZSxzdGFjazp0LnN0YWNrLC4uLkQodCl9O2lmKG49dCwidW5kZWZpbmVkIiE9dHlwZW9mIEV2ZW50JiZrKG4sRXZlbnQpKXtjb25zdCBuPXt0eXBlOnQudHlwZSx0YXJnZXQ6UCh0LnRhcmdldCksY3VycmVudFRhcmdldDpQKHQuY3VycmVudFRhcmdldCksLi4uRCh0KX07cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBDdXN0b21FdmVudCYmayh0LEN1c3RvbUV2ZW50KSYmKG4uZGV0YWlsPXQuZGV0YWlsKSxufXJldHVybiB0O3ZhciBufWZ1bmN0aW9uIFAodCl7dHJ5e3JldHVybiBuPXQsInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50JiZrKG4sRWxlbWVudCk/ZnVuY3Rpb24odCxuPXt9KXtpZighdClyZXR1cm4iPHVua25vd24+Ijt0cnl7bGV0IGU9dDtjb25zdCByPTUsbz1bXTtsZXQgaT0wLHM9MDtjb25zdCBjPSIgPiAiLHU9Yy5sZW5ndGg7bGV0IGE7Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP246bi5rZXlBdHRycyxoPSFBcnJheS5pc0FycmF5KG4pJiZuLm1heFN0cmluZ0xlbmd0aHx8ODA7Zm9yKDtlJiZpKys8ciYmKGE9TyhlLGYpLCEoImh0bWwiPT09YXx8aT4xJiZzK28ubGVuZ3RoKnUrYS5sZW5ndGg+PWgpKTspby5wdXNoKGEpLHMrPWEubGVuZ3RoLGU9ZS5wYXJlbnROb2RlO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGMpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifX0odCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNhdGNoe3JldHVybiI8dW5rbm93bj4ifXZhciBufWZ1bmN0aW9uIEQodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dD9PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkpOnt9fWxldCBVLEw7ZnVuY3Rpb24gTSh0KXtpZih2b2lkIDAhPT1VKXJldHVybiBVP1UodCk6dCgpO2NvbnN0IG49U3ltYm9sLmZvcigiX19TRU5UUllfU0FGRV9SQU5ET01fSURfV1JBUFBFUl9fIiksZT1wO3JldHVybiBuIGluIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW25dPyhVPWVbbl0sVSh0KSk6KFU9bnVsbCx0KCkpfWZ1bmN0aW9uIEIoKXtyZXR1cm4gTSgoKT0+TWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gVygpe3JldHVybiBNKCgpPT5EYXRlLm5vdygpKX1mdW5jdGlvbiB6KHQsbj0wKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fDA9PT1ufHx0Lmxlbmd0aDw9bj90OmAke3Quc2xpY2UoMCxuKX0uLi5gfWZ1bmN0aW9uIEYodD1mdW5jdGlvbigpe2NvbnN0IHQ9cDtyZXR1cm4gdC5jcnlwdG98fHQubXNDcnlwdG99KCkpe3RyeXtpZih0Py5yYW5kb21VVUlEKXJldHVybiBNKCgpPT50LnJhbmRvbVVVSUQoKSkucmVwbGFjZSgvLS9nLCIiKX1jYXRjaHt9cmV0dXJuIEx8fChMPVsxZTddKzFlMys0ZTMrOGUzKzFlMTEpLEwucmVwbGFjZSgvWzAxOF0vZyx0PT4odF4oMTYqQigpJjE1KT4+dC80KS50b1N0cmluZygxNikpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gVygpLzFlM31sZXQgSDtmdW5jdGlvbiBKKCl7cmV0dXJuKEg/PyhIPWZ1bmN0aW9uKCl7Y29uc3R7cGVyZm9ybWFuY2U6dH09cDtpZighdD8ubm93fHwhdC50aW1lT3JpZ2luKXJldHVybiBHO2NvbnN0IG49dC50aW1lT3JpZ2luO3JldHVybigpPT4obitNKCgpPT50Lm5vdygpKSkvMWUzfSgpKSkoKX1mdW5jdGlvbiBZKHQpe2NvbnN0IG49SigpLGU9e3NpZDpGKCksaW5pdDohMCx0aW1lc3RhbXA6bixzdGFydGVkOm4sZHVyYXRpb246MCxzdGF0dXM6Im9rIixlcnJvcnM6MCxpZ25vcmVEdXJhdGlvbjohMSx0b0pTT046KCk9PmZ1bmN0aW9uKHQpe3JldHVybntzaWQ6YCR7dC5zaWR9YCxpbml0OnQuaW5pdCxzdGFydGVkOm5ldyBEYXRlKDFlMyp0LnN0YXJ0ZWQpLnRvSVNPU3RyaW5nKCksdGltZXN0YW1wOm5ldyBEYXRlKDFlMyp0LnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxzdGF0dXM6dC5zdGF0dXMsZXJyb3JzOnQuZXJyb3JzLGRpZDoibnVtYmVyIj09dHlwZW9mIHQuZGlkfHwic3RyaW5nIj09dHlwZW9mIHQuZGlkP2Ake3QuZGlkfWA6dm9pZCAwLGR1cmF0aW9uOnQuZHVyYXRpb24sYWJub3JtYWxfbWVjaGFuaXNtOnQuYWJub3JtYWxfbWVjaGFuaXNtLGF0dHJzOntyZWxlYXNlOnQucmVsZWFzZSxlbnZpcm9ubWVudDp0LmVudmlyb25tZW50LGlwX2FkZHJlc3M6dC5pcEFkZHJlc3MsdXNlcl9hZ2VudDp0LnVzZXJBZ2VudH19fShlKX07cmV0dXJuIHQmJlYoZSx0KSxlfWZ1bmN0aW9uIFYodCxuPXt9KXtpZihuLnVzZXImJighdC5pcEFkZHJlc3MmJm4udXNlci5pcF9hZGRyZXNzJiYodC5pcEFkZHJlc3M9bi51c2VyLmlwX2FkZHJlc3MpLHQuZGlkfHxuLmRpZHx8KHQuZGlkPW4udXNlci5pZHx8bi51c2VyLmVtYWlsfHxuLnVzZXIudXNlcm5hbWUpKSx0LnRpbWVzdGFtcD1uLnRpbWVzdGFtcHx8SigpLG4uYWJub3JtYWxfbWVjaGFuaXNtJiYodC5hYm5vcm1hbF9tZWNoYW5pc209bi5hYm5vcm1hbF9tZWNoYW5pc20pLG4uaWdub3JlRHVyYXRpb24mJih0Lmlnbm9yZUR1cmF0aW9uPW4uaWdub3JlRHVyYXRpb24pLG4uc2lkJiYodC5zaWQ9MzI9PT1uLnNpZC5sZW5ndGg/bi5zaWQ6RigpKSx2b2lkIDAhPT1uLmluaXQmJih0LmluaXQ9bi5pbml0KSwhdC5kaWQmJm4uZGlkJiYodC5kaWQ9YCR7bi5kaWR9YCksIm51bWJlciI9PXR5cGVvZiBuLnN0YXJ0ZWQmJih0LnN0YXJ0ZWQ9bi5zdGFydGVkKSx0Lmlnbm9yZUR1cmF0aW9uKXQuZHVyYXRpb249dm9pZCAwO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBuLmR1cmF0aW9uKXQuZHVyYXRpb249bi5kdXJhdGlvbjtlbHNle2NvbnN0IG49dC50aW1lc3RhbXAtdC5zdGFydGVkO3QuZHVyYXRpb249bj49MD9uOjB9bi5yZWxlYXNlJiYodC5yZWxlYXNlPW4ucmVsZWFzZSksbi5lbnZpcm9ubWVudCYmKHQuZW52aXJvbm1lbnQ9bi5lbnZpcm9ubWVudCksIXQuaXBBZGRyZXNzJiZuLmlwQWRkcmVzcyYmKHQuaXBBZGRyZXNzPW4uaXBBZGRyZXNzKSwhdC51c2VyQWdlbnQmJm4udXNlckFnZW50JiYodC51c2VyQWdlbnQ9bi51c2VyQWdlbnQpLCJudW1iZXIiPT10eXBlb2Ygbi5lcnJvcnMmJih0LmVycm9ycz1uLmVycm9ycyksbi5zdGF0dXMmJih0LnN0YXR1cz1uLnN0YXR1cyl9ZnVuY3Rpb24gSyh0LG4sZT0yKXtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHxlPD0wKXJldHVybiBuO2lmKHQmJjA9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IHQgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KSYmKHJbdF09SyhyW3RdLG5bdF0sZS0xKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gWigpe3JldHVybiBGKCl9ZnVuY3Rpb24gcSgpe3JldHVybiBGKCkuc3Vic3RyaW5nKDE2KX1jb25zdCBRPSJfc2VudHJ5U3BhbiI7ZnVuY3Rpb24gWCh0LG4pe24/ZnVuY3Rpb24odCxuLGUpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWNhdGNoe2gmJlMubG9nKGBGYWlsZWQgdG8gYWRkIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5ICIke259IiB0byBvYmplY3RgLHQpfX0odCxRLG4pOmRlbGV0ZSB0W1FdfWZ1bmN0aW9uIHR0KHQpe3JldHVybiB0W1FdfWNsYXNzIG50e2NvbnN0cnVjdG9yKCl7dGhpcy50PSExLHRoaXMubz1bXSx0aGlzLmk9W10sdGhpcy51PVtdLHRoaXMuaD1bXSx0aGlzLnA9e30sdGhpcy5sPXt9LHRoaXMubT17fSx0aGlzLnY9e30sdGhpcy5fPXt9LHRoaXMuUz17fSx0aGlzLk49e3RyYWNlSWQ6WigpLHNhbXBsZVJhbmQ6QigpfX1jbG9uZSgpe2NvbnN0IHQ9bmV3IG50O3JldHVybiB0LnU9Wy4uLnRoaXMudV0sdC5sPXsuLi50aGlzLmx9LHQubT17Li4udGhpcy5tfSx0LnY9ey4uLnRoaXMudn0sdC5fPXsuLi50aGlzLl99LHRoaXMuXy5mbGFncyYmKHQuXy5mbGFncz17dmFsdWVzOlsuLi50aGlzLl8uZmxhZ3MudmFsdWVzXX0pLHQucD10aGlzLnAsdC5qPXRoaXMuaix0LkM9dGhpcy5DLHQuQT10aGlzLkEsdC5UPXRoaXMuVCx0Lmk9Wy4uLnRoaXMuaV0sdC5oPVsuLi50aGlzLmhdLHQuUz17Li4udGhpcy5TfSx0Lk49ey4uLnRoaXMuTn0sdC5rPXRoaXMuayx0Lkk9dGhpcy5JLHQuTz10aGlzLk8sWCh0LHR0KHRoaXMpKSx0fXNldENsaWVudCh0KXt0aGlzLms9dH1zZXRMYXN0RXZlbnRJZCh0KXt0aGlzLkk9dH1nZXRDbGllbnQoKXtyZXR1cm4gdGhpcy5rfWxhc3RFdmVudElkKCl7cmV0dXJuIHRoaXMuSX1hZGRTY29wZUxpc3RlbmVyKHQpe3RoaXMuby5wdXNoKHQpfWFkZEV2ZW50UHJvY2Vzc29yKHQpe3JldHVybiB0aGlzLmkucHVzaCh0KSx0aGlzfXNldFVzZXIodCl7cmV0dXJuIHRoaXMucD10fHx7ZW1haWw6dm9pZCAwLGlkOnZvaWQgMCxpcF9hZGRyZXNzOnZvaWQgMCx1c2VybmFtZTp2b2lkIDB9LHRoaXMuQyYmVih0aGlzLkMse3VzZXI6dH0pLHRoaXMuUigpLHRoaXN9Z2V0VXNlcigpe3JldHVybiB0aGlzLnB9c2V0Q29udmVyc2F0aW9uSWQodCl7cmV0dXJuIHRoaXMuTz10fHx2b2lkIDAsdGhpcy5SKCksdGhpc31zZXRUYWdzKHQpe3JldHVybiB0aGlzLmw9ey4uLnRoaXMubCwuLi50fSx0aGlzLlIoKSx0aGlzfXNldFRhZyh0LG4pe3JldHVybiB0aGlzLnNldFRhZ3Moe1t0XTpufSl9c2V0QXR0cmlidXRlcyh0KXtyZXR1cm4gdGhpcy5tPXsuLi50aGlzLm0sLi4udH0sdGhpcy5SKCksdGhpc31zZXRBdHRyaWJ1dGUodCxuKXtyZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVzKHtbdF06bn0pfXJlbW92ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gdCBpbiB0aGlzLm0mJihkZWxldGUgdGhpcy5tW3RdLHRoaXMuUigpKSx0aGlzfXNldEV4dHJhcyh0KXtyZXR1cm4gdGhpcy52PXsuLi50aGlzLnYsLi4udH0sdGhpcy5SKCksdGhpc31zZXRFeHRyYSh0LG4pe3JldHVybiB0aGlzLnY9ey4uLnRoaXMudixbdF06bn0sdGhpcy5SKCksdGhpc31zZXRGaW5nZXJwcmludCh0KXtyZXR1cm4gdGhpcy5UPXQsdGhpcy5SKCksdGhpc31zZXRMZXZlbCh0KXtyZXR1cm4gdGhpcy5qPXQsdGhpcy5SKCksdGhpc31zZXRUcmFuc2FjdGlvbk5hbWUodCl7cmV0dXJuIHRoaXMuQT10LHRoaXMuUigpLHRoaXN9c2V0Q29udGV4dCh0LG4pe3JldHVybiBudWxsPT09bj9kZWxldGUgdGhpcy5fW3RdOnRoaXMuX1t0XT1uLHRoaXMuUigpLHRoaXN9c2V0U2Vzc2lvbih0KXtyZXR1cm4gdD90aGlzLkM9dDpkZWxldGUgdGhpcy5DLHRoaXMuUigpLHRoaXN9Z2V0U2Vzc2lvbigpe3JldHVybiB0aGlzLkN9dXBkYXRlKHQpe2lmKCF0KXJldHVybiB0aGlzO2NvbnN0IG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dCh0aGlzKTp0LGU9biBpbnN0YW5jZW9mIG50P24uZ2V0U2NvcGVEYXRhKCk6QShuKT90OnZvaWQgMCx7dGFnczpyLGF0dHJpYnV0ZXM6byxleHRyYTppLHVzZXI6cyxjb250ZXh0czpjLGxldmVsOnUsZmluZ2VycHJpbnQ6YT1bXSxwcm9wYWdhdGlvbkNvbnRleHQ6Zixjb252ZXJzYXRpb25JZDpofT1lfHx7fTtyZXR1cm4gdGhpcy5sPXsuLi50aGlzLmwsLi4ucn0sdGhpcy5tPXsuLi50aGlzLm0sLi4ub30sdGhpcy52PXsuLi50aGlzLnYsLi4uaX0sdGhpcy5fPXsuLi50aGlzLl8sLi4uY30scyYmT2JqZWN0LmtleXMocykubGVuZ3RoJiYodGhpcy5wPXMpLHUmJih0aGlzLmo9dSksYS5sZW5ndGgmJih0aGlzLlQ9YSksZiYmKHRoaXMuTj1mKSxoJiYodGhpcy5PPWgpLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy51PVtdLHRoaXMubD17fSx0aGlzLm09e30sdGhpcy52PXt9LHRoaXMucD17fSx0aGlzLl89e30sdGhpcy5qPXZvaWQgMCx0aGlzLkE9dm9pZCAwLHRoaXMuVD12b2lkIDAsdGhpcy5DPXZvaWQgMCx0aGlzLk89dm9pZCAwLFgodGhpcyx2b2lkIDApLHRoaXMuaD1bXSx0aGlzLnNldFByb3BhZ2F0aW9uQ29udGV4dCh7dHJhY2VJZDpaKCksc2FtcGxlUmFuZDpCKCl9KSx0aGlzLlIoKSx0aGlzfWFkZEJyZWFkY3J1bWIodCxuKXtjb25zdCBlPSJudW1iZXIiPT10eXBlb2Ygbj9uOjEwMDtpZihlPD0wKXJldHVybiB0aGlzO2NvbnN0IHI9e3RpbWVzdGFtcDpHKCksLi4udCxtZXNzYWdlOnQubWVzc2FnZT96KHQubWVzc2FnZSwyMDQ4KTp0Lm1lc3NhZ2V9O3JldHVybiB0aGlzLnUucHVzaChyKSx0aGlzLnUubGVuZ3RoPmUmJih0aGlzLnU9dGhpcy51LnNsaWNlKC1lKSx0aGlzLms/LnJlY29yZERyb3BwZWRFdmVudCgiYnVmZmVyX292ZXJmbG93IiwibG9nX2l0ZW0iKSksdGhpcy5SKCksdGhpc31nZXRMYXN0QnJlYWRjcnVtYigpe3JldHVybiB0aGlzLnVbdGhpcy51Lmxlbmd0aC0xXX1jbGVhckJyZWFkY3J1bWJzKCl7cmV0dXJuIHRoaXMudT1bXSx0aGlzLlIoKSx0aGlzfWFkZEF0dGFjaG1lbnQodCl7cmV0dXJuIHRoaXMuaC5wdXNoKHQpLHRoaXN9Y2xlYXJBdHRhY2htZW50cygpe3JldHVybiB0aGlzLmg9W10sdGhpc31nZXRTY29wZURhdGEoKXtyZXR1cm57YnJlYWRjcnVtYnM6dGhpcy51LGF0dGFjaG1lbnRzOnRoaXMuaCxjb250ZXh0czp0aGlzLl8sdGFnczp0aGlzLmwsYXR0cmlidXRlczp0aGlzLm0sZXh0cmE6dGhpcy52LHVzZXI6dGhpcy5wLGxldmVsOnRoaXMuaixmaW5nZXJwcmludDp0aGlzLlR8fFtdLGV2ZW50UHJvY2Vzc29yczp0aGlzLmkscHJvcGFnYXRpb25Db250ZXh0OnRoaXMuTixzZGtQcm9jZXNzaW5nTWV0YWRhdGE6dGhpcy5TLHRyYW5zYWN0aW9uTmFtZTp0aGlzLkEsc3Bhbjp0dCh0aGlzKSxjb252ZXJzYXRpb25JZDp0aGlzLk99fXNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh0KXtyZXR1cm4gdGhpcy5TPUsodGhpcy5TLHQsMiksdGhpc31zZXRQcm9wYWdhdGlvbkNvbnRleHQodCl7cmV0dXJuIHRoaXMuTj10LHRoaXN9Z2V0UHJvcGFnYXRpb25Db250ZXh0KCl7cmV0dXJuIHRoaXMuTn1jYXB0dXJlRXhjZXB0aW9uKHQsbil7Y29uc3QgZT1uPy5ldmVudF9pZHx8RigpO2lmKCF0aGlzLmspcmV0dXJuIGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV4Y2VwdGlvbiEiKSxlO2NvbnN0IHI9bmV3IEVycm9yKCJTZW50cnkgc3ludGhldGljRXhjZXB0aW9uIik7cmV0dXJuIHRoaXMuay5jYXB0dXJlRXhjZXB0aW9uKHQse29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOnIsLi4ubixldmVudF9pZDplfSx0aGlzKSxlfWNhcHR1cmVNZXNzYWdlKHQsbixlKXtjb25zdCByPWU/LmV2ZW50X2lkfHxGKCk7aWYoIXRoaXMuaylyZXR1cm4gaCYmUy53YXJuKCJObyBjbGllbnQgY29uZmlndXJlZCBvbiBzY29wZSAtIHdpbGwgbm90IGNhcHR1cmUgbWVzc2FnZSEiKSxyO2NvbnN0IG89ZT8uc3ludGhldGljRXhjZXB0aW9uPz9uZXcgRXJyb3IodCk7cmV0dXJuIHRoaXMuay5jYXB0dXJlTWVzc2FnZSh0LG4se29yaWdpbmFsRXhjZXB0aW9uOnQsc3ludGhldGljRXhjZXB0aW9uOm8sLi4uZSxldmVudF9pZDpyfSx0aGlzKSxyfWNhcHR1cmVFdmVudCh0LG4pe2NvbnN0IGU9dC5ldmVudF9pZHx8bj8uZXZlbnRfaWR8fEYoKTtyZXR1cm4gdGhpcy5rPyh0aGlzLmsuY2FwdHVyZUV2ZW50KHQsey4uLm4sZXZlbnRfaWQ6ZX0sdGhpcyksZSk6KGgmJlMud2FybigiTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50ISIpLGUpfVIoKXt0aGlzLnR8fCh0aGlzLnQ9ITAsdGhpcy5vLmZvckVhY2godD0+e3QodGhpcyl9KSx0aGlzLnQ9ITEpfX1jb25zdCBldD10PT50IGluc3RhbmNlb2YgUHJvbWlzZSYmIXRbcnRdLHJ0PVN5bWJvbCgiY2hhaW5lZCBQcm9taXNlTGlrZSIpLG90PSh0LG4pPT57bGV0IGU9ITE7Zm9yKGNvbnN0IHIgaW4gdCl7aWYociBpbiBuKWNvbnRpbnVlO2U9ITA7Y29uc3Qgbz10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBvP09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHIse3ZhbHVlOiguLi5uKT0+by5hcHBseSh0LG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6bltyXT1vfXJldHVybiBlJiZPYmplY3QuYXNzaWduKG4se1tydF06ITB9KSxufTtjbGFzcyBpdHtjb25zdHJ1Y3Rvcih0LG4pe2xldCBlLHI7ZT10fHxuZXcgbnQscj1ufHxuZXcgbnQsdGhpcy5QPVt7c2NvcGU6ZX1dLHRoaXMuRD1yfXdpdGhTY29wZSh0KXtjb25zdCBuPXRoaXMuVSgpO2xldCBlO3RyeXtlPXQobil9Y2F0Y2godCl7dGhyb3cgdGhpcy5MKCksdH1yZXR1cm4gVChlKT8oKHQsbixlKT0+e2NvbnN0IHI9dC50aGVuKHQ9PihuKHQpLHQpLHQ9Pnt0aHJvdyBlKHQpLHR9KTtyZXR1cm4gZXQocikmJmV0KHQpP3I6b3QodCxyKX0pKGUsKCk9PnRoaXMuTCgpLCgpPT50aGlzLkwoKSk6KHRoaXMuTCgpLGUpfWdldENsaWVudCgpe3JldHVybiB0aGlzLmdldFN0YWNrVG9wKCkuY2xpZW50fWdldFNjb3BlKCl7cmV0dXJuIHRoaXMuZ2V0U3RhY2tUb3AoKS5zY29wZX1nZXRJc29sYXRpb25TY29wZSgpe3JldHVybiB0aGlzLkR9Z2V0U3RhY2tUb3AoKXtyZXR1cm4gdGhpcy5QW3RoaXMuUC5sZW5ndGgtMV19VSgpe2NvbnN0IHQ9dGhpcy5nZXRTY29wZSgpLmNsb25lKCk7cmV0dXJuIHRoaXMuUC5wdXNoKHtjbGllbnQ6dGhpcy5nZXRDbGllbnQoKSxzY29wZTp0fSksdH1MKCl7cmV0dXJuISh0aGlzLlAubGVuZ3RoPD0xKSYmISF0aGlzLlAucG9wKCl9fWZ1bmN0aW9uIHN0KCl7Y29uc3QgdD1tKGwoKSk7cmV0dXJuIHQuc3RhY2s9dC5zdGFja3x8bmV3IGl0KGcoImRlZmF1bHRDdXJyZW50U2NvcGUiLCgpPT5uZXcgbnQpLGcoImRlZmF1bHRJc29sYXRpb25TY29wZSIsKCk9Pm5ldyBudCkpfWZ1bmN0aW9uIGN0KHQpe3JldHVybiBzdCgpLndpdGhTY29wZSh0KX1mdW5jdGlvbiB1dCh0LG4pe2NvbnN0IGU9c3QoKTtyZXR1cm4gZS53aXRoU2NvcGUoKCk9PihlLmdldFN0YWNrVG9wKCkuc2NvcGU9dCxuKHQpKSl9ZnVuY3Rpb24gYXQodCl7cmV0dXJuIHN0KCkud2l0aFNjb3BlKCgpPT50KHN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKSkpfWZ1bmN0aW9uIGZ0KHQpe2NvbnN0IG49bSh0KTtyZXR1cm4gbi5hY3M/bi5hY3M6e3dpdGhJc29sYXRpb25TY29wZTphdCx3aXRoU2NvcGU6Y3Qsd2l0aFNldFNjb3BlOnV0LHdpdGhTZXRJc29sYXRpb25TY29wZToodCxuKT0+YXQobiksZ2V0Q3VycmVudFNjb3BlOigpPT5zdCgpLmdldFNjb3BlKCksZ2V0SXNvbGF0aW9uU2NvcGU6KCk9PnN0KCkuZ2V0SXNvbGF0aW9uU2NvcGUoKX19ZnVuY3Rpb24gaHQoKXtyZXR1cm4gZnQobCgpKS5nZXRDdXJyZW50U2NvcGUoKS5nZXRDbGllbnQoKX1mdW5jdGlvbiBwdCh0KXtpZih0KXtpZigib2JqZWN0Ij09dHlwZW9mIHQmJiJkZXJlZiJpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5kZXJlZil0cnl7cmV0dXJuIHQuZGVyZWYoKX1jYXRjaHtyZXR1cm59cmV0dXJuIHR9fWZ1bmN0aW9uIGR0KHQpe2NvbnN0IG49dDtyZXR1cm57c2NvcGU6bi5fc2VudHJ5U2NvcGUsaXNvbGF0aW9uU2NvcGU6cHQobi5fc2VudHJ5SXNvbGF0aW9uU2NvcGUpfX1jb25zdCBsdD0ic2VudHJ5LSI7ZnVuY3Rpb24gbXQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdHx8IUModCkmJiFBcnJheS5pc0FycmF5KHQpKXJldHVybjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LnJlZHVjZSgodCxuKT0+e2NvbnN0IGU9Z3Qobik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZvckVhY2goKFtuLGVdKT0+e3Rbbl09ZX0pLHR9LHt9KTtyZXR1cm4gZ3QodCl9KHQpO2lmKCFuKXJldHVybjtjb25zdCBlPU9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgodCxbbixlXSk9PntpZihuLnN0YXJ0c1dpdGgobHQpKXt0W24uc2xpY2UoNyldPWV9cmV0dXJuIHR9LHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjA/ZTp2b2lkIDB9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAodD0+e2NvbnN0IG49dC5pbmRleE9mKCI9Iik7aWYoLTE9PT1uKXJldHVybltdO3JldHVyblt0LnNsaWNlKDAsbiksdC5zbGljZShuKzEpXS5tYXAodD0+e3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQudHJpbSgpKX1jYXRjaHtyZXR1cm59fSl9KS5yZWR1Y2UoKHQsW24sZV0pPT4obiYmZSYmKHRbbl09ZSksdCkse30pfWNvbnN0IHl0PS9ebyhcZCspXC4vO2Z1bmN0aW9uIGJ0KHQsbj0hMSl7Y29uc3R7aG9zdDplLHBhdGg6cixwYXNzOm8scG9ydDppLHByb2plY3RJZDpzLHByb3RvY29sOmMscHVibGljS2V5OnV9PXQ7cmV0dXJuYCR7Y306Ly8ke3V9JHtuJiZvP2A6JHtvfWA6IiJ9QCR7ZX0ke2k/YDoke2l9YDoiIn0vJHtyP2Ake3J9L2A6cn0ke3N9YH1mdW5jdGlvbiB2dCh0KXtjb25zdCBuPXQuZ2V0T3B0aW9ucygpLHtob3N0OmV9PXQuZ2V0RHNuKCl8fHt9O2xldCByO3JldHVybiBuLm9yZ0lkP3I9U3RyaW5nKG4ub3JnSWQpOmUmJihyPWZ1bmN0aW9uKHQpe2NvbnN0IG49dC5tYXRjaCh5dCk7cmV0dXJuIG4/LlsxXX0oZSkpLHJ9ZnVuY3Rpb24gX3QodCl7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplLGlzUmVtb3RlOnJ9PXQuc3BhbkNvbnRleHQoKSxvPXI/bjpFdCh0KS5wYXJlbnRfc3Bhbl9pZCxpPWR0KHQpLnNjb3BlO3JldHVybntwYXJlbnRfc3Bhbl9pZDpvLHNwYW5faWQ6cj9pPy5nZXRQcm9wYWdhdGlvbkNvbnRleHQoKS5wcm9wYWdhdGlvblNwYW5JZHx8cSgpOm4sdHJhY2VfaWQ6ZX19ZnVuY3Rpb24gd3QodCl7cmV0dXJuIHQmJnQubGVuZ3RoPjA/dC5tYXAoKHtjb250ZXh0OntzcGFuSWQ6dCx0cmFjZUlkOm4sdHJhY2VGbGFnczplLC4uLnJ9LGF0dHJpYnV0ZXM6b30pPT4oe3NwYW5faWQ6dCx0cmFjZV9pZDpuLHNhbXBsZWQ6MT09PWUsYXR0cmlidXRlczpvLC4uLnJ9KSk6dm9pZCAwfWZ1bmN0aW9uIFN0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD8kdCh0KTpBcnJheS5pc0FycmF5KHQpP3RbMF0rdFsxXS8xZTk6dCBpbnN0YW5jZW9mIERhdGU/JHQodC5nZXRUaW1lKCkpOkooKX1mdW5jdGlvbiAkdCh0KXtyZXR1cm4gdD45OTk5OTk5OTk5P3QvMWUzOnR9ZnVuY3Rpb24gRXQodCl7aWYoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0U3BhbkpTT059KHQpKXJldHVybiB0LmdldFNwYW5KU09OKCk7Y29uc3R7c3BhbklkOm4sdHJhY2VJZDplfT10LnNwYW5Db250ZXh0KCk7aWYoZnVuY3Rpb24odCl7Y29uc3Qgbj10O3JldHVybiEhKG4uYXR0cmlidXRlcyYmbi5zdGFydFRpbWUmJm4ubmFtZSYmbi5lbmRUaW1lJiZuLnN0YXR1cyl9KHQpKXtjb25zdHthdHRyaWJ1dGVzOnIsc3RhcnRUaW1lOm8sbmFtZTppLGVuZFRpbWU6cyxzdGF0dXM6YyxsaW5rczp1fT10O3JldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxkYXRhOnIsZGVzY3JpcHRpb246aSxwYXJlbnRfc3Bhbl9pZDoicGFyZW50U3BhbklkImluIHQ/dC5wYXJlbnRTcGFuSWQ6InBhcmVudFNwYW5Db250ZXh0ImluIHQ/dC5wYXJlbnRTcGFuQ29udGV4dD8uc3BhbklkOnZvaWQgMCxzdGFydF90aW1lc3RhbXA6U3QobyksdGltZXN0YW1wOlN0KHMpfHx2b2lkIDAsc3RhdHVzOnh0KGMpLG9wOnJbInNlbnRyeS5vcCJdLG9yaWdpbjpyWyJzZW50cnkub3JpZ2luIl0sbGlua3M6d3QodSl9fXJldHVybntzcGFuX2lkOm4sdHJhY2VfaWQ6ZSxzdGFydF90aW1lc3RhbXA6MCxkYXRhOnt9fX1mdW5jdGlvbiB4dCh0KXtpZih0JiYwIT09dC5jb2RlKXJldHVybiAxPT09dC5jb2RlPyJvayI6dC5tZXNzYWdlfHwiaW50ZXJuYWxfZXJyb3IifWZ1bmN0aW9uIE50KHQpe3JldHVybiB0Ll9zZW50cnlSb290U3Bhbnx8dH1mdW5jdGlvbiBqdCh0KXtjb25zdCBuPWh0KCk7aWYoIW4pcmV0dXJue307Y29uc3QgZT1OdCh0KSxyPUV0KGUpLG89ci5kYXRhLGk9ZS5zcGFuQ29udGV4dCgpLnRyYWNlU3RhdGUscz1pPy5nZXQoInNlbnRyeS5zYW1wbGVfcmF0ZSIpPz9vWyJzZW50cnkuc2FtcGxlX3JhdGUiXT8/b1sic2VudHJ5LnByZXZpb3VzX3RyYWNlX3NhbXBsZV9yYXRlIl07ZnVuY3Rpb24gYyh0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHMmJiJzdHJpbmciIT10eXBlb2Ygc3x8KHQuc2FtcGxlX3JhdGU9YCR7c31gKSx0fWNvbnN0IHU9ZS5fZnJvemVuRHNjO2lmKHUpcmV0dXJuIGModSk7Y29uc3QgYT1pPy5nZXQoInNlbnRyeS5kc2MiKSxmPWEmJm10KGEpO2lmKGYpcmV0dXJuIGMoZik7Y29uc3QgaD1mdW5jdGlvbih0LG4pe2NvbnN0IGU9bi5nZXRPcHRpb25zKCkse3B1YmxpY0tleTpyfT1uLmdldERzbigpfHx7fSxvPXtlbnZpcm9ubWVudDplLmVudmlyb25tZW50fHwicHJvZHVjdGlvbiIscmVsZWFzZTplLnJlbGVhc2UscHVibGljX2tleTpyLHRyYWNlX2lkOnQsb3JnX2lkOnZ0KG4pfTtyZXR1cm4gbi5lbWl0KCJjcmVhdGVEc2MiLG8pLG99KHQuc3BhbkNvbnRleHQoKS50cmFjZUlkLG4pLHA9b1sic2VudHJ5LnNvdXJjZSJdLGQ9ci5kZXNjcmlwdGlvbjtyZXR1cm4idXJsIiE9PXAmJmQmJihoLnRyYW5zYWN0aW9uPWQpLGZ1bmN0aW9uKCl7aWYoImJvb2xlYW4iPT10eXBlb2YgX19TRU5UUllfVFJBQ0lOR19fJiYhX19TRU5UUllfVFJBQ0lOR19fKXJldHVybiExO2NvbnN0IHQ9aHQoKT8uZ2V0T3B0aW9ucygpO3JldHVybiEoIXR8fG51bGw9PXQudHJhY2VzU2FtcGxlUmF0ZSYmIXQudHJhY2VzU2FtcGxlcil9KCkmJihoLnNhbXBsZWQ9U3RyaW5nKGZ1bmN0aW9uKHQpe2NvbnN0e3RyYWNlRmxhZ3M6bn09dC5zcGFuQ29udGV4dCgpO3JldHVybiAxPT09bn0oZSkpLGguc2FtcGxlX3JhbmQ9aT8uZ2V0KCJzZW50cnkuc2FtcGxlX3JhbmQiKT8/ZHQoZSkuc2NvcGU/LmdldFByb3BhZ2F0aW9uQ29udGV4dCgpLnNhbXBsZVJhbmQudG9TdHJpbmcoKSksYyhoKSxuLmVtaXQoImNyZWF0ZURzYyIsaCxlKSxofWZ1bmN0aW9uIEN0KHQsbj0xMDAsZT0xLzApe3RyeXtyZXR1cm4gQXQoIiIsdCxuLGUpfWNhdGNoKHQpe3JldHVybntFUlJPUjpgKipub24tc2VyaWFsaXphYmxlKiogKCR7dH0pYH19fWZ1bmN0aW9uIEF0KHQsbixlPTEvMCxyPTEvMCxvPWZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgV2Vha1NldDtmdW5jdGlvbiBuKG4pe3JldHVybiEhdC5oYXMobil8fCh0LmFkZChuKSwhMSl9ZnVuY3Rpb24gZShuKXt0LmRlbGV0ZShuKX1yZXR1cm5bbixlXX0oKSl7Y29uc3RbaSxzXT1vO2lmKG51bGw9PW58fFsiYm9vbGVhbiIsInN0cmluZyJdLmluY2x1ZGVzKHR5cGVvZiBuKXx8Im51bWJlciI9PXR5cGVvZiBuJiZOdW1iZXIuaXNGaW5pdGUobikpcmV0dXJuIG47Y29uc3QgYz1mdW5jdGlvbih0LG4pe3RyeXtpZigiZG9tYWluIj09PXQmJm4mJiJvYmplY3QiPT10eXBlb2YgbiYmbi5NKXJldHVybiJbRG9tYWluXSI7aWYoImRvbWFpbkVtaXR0ZXIiPT09dClyZXR1cm4iW0RvbWFpbkVtaXR0ZXJdIjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbj09PWdsb2JhbClyZXR1cm4iW0dsb2JhbF0iO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZuPT09d2luZG93KXJldHVybiJbV2luZG93XSI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmbj09PWRvY3VtZW50KXJldHVybiJbRG9jdW1lbnRdIjtpZigib2JqZWN0Ij09dHlwZW9mKGU9bikmJm51bGwhPT1lJiYoZS5fX2lzVnVlfHxlLkJ8fGUuX192X2lzVk5vZGUpKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4iX192X2lzVk5vZGUiaW4gdCYmdC5fX3ZfaXNWTm9kZT8iW1Z1ZVZOb2RlXSI6IltWdWVWaWV3TW9kZWxdIn0obik7aWYoZnVuY3Rpb24odCl7cmV0dXJuIEEodCkmJiJuYXRpdmVFdmVudCJpbiB0JiYicHJldmVudERlZmF1bHQiaW4gdCYmInN0b3BQcm9wYWdhdGlvbiJpbiB0fShuKSlyZXR1cm4iW1N5bnRoZXRpY0V2ZW50XSI7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYhTnVtYmVyLmlzRmluaXRlKG4pKXJldHVybmBbJHtufV1gO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybmBbRnVuY3Rpb246ICR7ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5uYW1lfHx4fWNhdGNoe3JldHVybiB4fX0obil9XWA7aWYoInN5bWJvbCI9PXR5cGVvZiBuKXJldHVybmBbJHtTdHJpbmcobil9XWA7aWYoImJpZ2ludCI9PXR5cGVvZiBuKXJldHVybmBbQmlnSW50OiAke1N0cmluZyhuKX1dYDtjb25zdCByPWZ1bmN0aW9uKHQpe2NvbnN0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBuPy5jb25zdHJ1Y3Rvcj9uLmNvbnN0cnVjdG9yLm5hbWU6Im51bGwgcHJvdG90eXBlIn0obik7cmV0dXJuL15IVE1MKFx3KilFbGVtZW50JC8udGVzdChyKT9gW0hUTUxFbGVtZW50OiAke3J9XWA6YFtvYmplY3QgJHtyfV1gfWNhdGNoKHQpe3JldHVybmAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHt0fSlgfXZhciBlfSh0LG4pO2lmKCFjLnN0YXJ0c1dpdGgoIltvYmplY3QgIikpcmV0dXJuIGM7aWYobi5fX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXylyZXR1cm4gbjtjb25zdCB1PSJudW1iZXIiPT10eXBlb2Ygbi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18/bi5fX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX186ZTtpZigwPT09dSlyZXR1cm4gYy5yZXBsYWNlKCJvYmplY3QgIiwiIik7aWYoaShuKSlyZXR1cm4iW0NpcmN1bGFyIH5dIjtjb25zdCBhPW47aWYoYSYmImZ1bmN0aW9uIj09dHlwZW9mIGEudG9KU09OKXRyeXtyZXR1cm4gQXQoIiIsYS50b0pTT04oKSx1LTEscixvKX1jYXRjaHt9Y29uc3QgZj1BcnJheS5pc0FycmF5KG4pP1tdOnt9O2xldCBoPTA7Y29uc3QgcD1SKG4pO2Zvcihjb25zdCB0IGluIHApe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCx0KSljb250aW51ZTtpZihoPj1yKXtmW3RdPSJbTWF4UHJvcGVydGllcyB+XSI7YnJlYWt9Y29uc3Qgbj1wW3RdO2ZbdF09QXQodCxuLHUtMSxyLG8pLGgrK31yZXR1cm4gcyhuKSxmfWZ1bmN0aW9uIFR0KHQsbil7Y29uc3QgZT1uLnJlcGxhY2UoL1xcL2csIi8iKS5yZXBsYWNlKC9bfFxce30oKVtcXV4kKyo/Ll0vZywiXFwkJiIpO2xldCByPXQ7dHJ5e3I9ZGVjb2RlVVJJKHQpfWNhdGNoe31yZXR1cm4gci5yZXBsYWNlKC9cXC9nLCIvIikucmVwbGFjZSgvd2VicGFjazpcLz8vZywiIikucmVwbGFjZShuZXcgUmVnRXhwKGAoZmlsZTovLyk/Lyoke2V9LypgLCJpZyIpLCJhcHA6Ly8vIil9ZnVuY3Rpb24ga3QodCxuPVtdKXtyZXR1cm5bdCxuXX1mdW5jdGlvbiBJdCh0LG4pe2NvbnN0IGU9dFsxXTtmb3IoY29uc3QgdCBvZiBlKXtpZihuKHQsdFswXS50eXBlKSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBPdCh0KXtjb25zdCBuPW0ocCk7cmV0dXJuIG4uZW5jb2RlUG9seWZpbGw/bi5lbmNvZGVQb2x5ZmlsbCh0KToobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUodCl9ZnVuY3Rpb24gUnQodCl7Y29uc3RbbixlXT10O2xldCByPUpTT04uc3RyaW5naWZ5KG4pO2Z1bmN0aW9uIG8odCl7InN0cmluZyI9PXR5cGVvZiByP3I9InN0cmluZyI9PXR5cGVvZiB0P3IrdDpbT3QociksdF06ci5wdXNoKCJzdHJpbmciPT10eXBlb2YgdD9PdCh0KTp0KX1mb3IoY29uc3QgdCBvZiBlKXtjb25zdFtuLGVdPXQ7aWYobyhgXG4ke0pTT04uc3RyaW5naWZ5KG4pfVxuYCksInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSlvKGUpO2Vsc2V7bGV0IHQ7dHJ5e3Q9SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2h7dD1KU09OLnN0cmluZ2lmeShDdChlKSl9byh0KX19cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3I6ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnJlZHVjZSgodCxuKT0+dCtuLmxlbmd0aCwwKSxlPW5ldyBVaW50OEFycmF5KG4pO2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgdCllLnNldChuLHIpLHIrPW4ubGVuZ3RoO3JldHVybiBlfShyKX1jb25zdCBQdD17c2Vzc2lvbnM6InNlc3Npb24iLGV2ZW50OiJlcnJvciIsY2xpZW50X3JlcG9ydDoiaW50ZXJuYWwiLHVzZXJfcmVwb3J0OiJkZWZhdWx0Iixwcm9maWxlX2NodW5rOiJwcm9maWxlIixyZXBsYXlfZXZlbnQ6InJlcGxheSIscmVwbGF5X3JlY29yZGluZzoicmVwbGF5IixjaGVja19pbjoibW9uaXRvciIscmF3X3NlY3VyaXR5OiJzZWN1cml0eSIsbG9nOiJsb2dfaXRlbSIsdHJhY2VfbWV0cmljOiJtZXRyaWMifTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gUHR9KHQpP1B0W3RdOnR9ZnVuY3Rpb24gVXQodCl7aWYoIXQ/LnNkaylyZXR1cm47Y29uc3R7bmFtZTpuLHZlcnNpb246ZX09dC5zZGs7cmV0dXJue25hbWU6bix2ZXJzaW9uOmV9fWZ1bmN0aW9uIEx0KHQsbixlLHIpe2NvbnN0IG89VXQoZSksaT10LnR5cGUmJiJyZXBsYXlfZXZlbnQiIT09dC50eXBlP3QudHlwZToiZXZlbnQiOyFmdW5jdGlvbih0LG4pe2lmKCFuKXJldHVybiB0O2NvbnN0IGU9dC5zZGt8fHt9O3Quc2RrPXsuLi5lLG5hbWU6ZS5uYW1lfHxuLm5hbWUsdmVyc2lvbjplLnZlcnNpb258fG4udmVyc2lvbixpbnRlZ3JhdGlvbnM6Wy4uLnQuc2RrPy5pbnRlZ3JhdGlvbnN8fFtdLC4uLm4uaW50ZWdyYXRpb25zfHxbXV0scGFja2FnZXM6Wy4uLnQuc2RrPy5wYWNrYWdlc3x8W10sLi4ubi5wYWNrYWdlc3x8W11dLHNldHRpbmdzOnQuc2RrPy5zZXR0aW5nc3x8bi5zZXR0aW5ncz97Li4udC5zZGs/LnNldHRpbmdzLC4uLm4uc2V0dGluZ3N9OnZvaWQgMH19KHQsZT8uc2RrKTtjb25zdCBzPWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89dC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE/LmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7cmV0dXJue2V2ZW50X2lkOnQuZXZlbnRfaWQsc2VudF9hdDoobmV3IERhdGUpLnRvSVNPU3RyaW5nKCksLi4ubiYme3NkazpufSwuLi4hIWUmJnImJntkc246YnQocil9LC4uLm8mJnt0cmFjZTpvfX19KHQsbyxyLG4pO2RlbGV0ZSB0LnNka1Byb2Nlc3NpbmdNZXRhZGF0YTtyZXR1cm4ga3QocyxbW3t0eXBlOml9LHRdXSl9Y29uc3QgTXQ9Il9fU0VOVFJZX1NVUFBSRVNTX1RSQUNJTkdfXyI7ZnVuY3Rpb24gQnQodCl7Y29uc3Qgbj1mdChsKCkpO3JldHVybiBuLnN1cHByZXNzVHJhY2luZz9uLnN1cHByZXNzVHJhY2luZyh0KTpmdW5jdGlvbiguLi50KXtjb25zdCBuPWZ0KGwoKSk7aWYoMj09PXQubGVuZ3RoKXtjb25zdFtlLHJdPXQ7cmV0dXJuIGU/bi53aXRoU2V0U2NvcGUoZSxyKTpuLndpdGhTY29wZShyKX1yZXR1cm4gbi53aXRoU2NvcGUodFswXSl9KG49PntuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTohMH0pO2NvbnN0IGU9dCgpO3JldHVybiBuLnNldFNES1Byb2Nlc3NpbmdNZXRhZGF0YSh7W010XTp2b2lkIDB9KSxlfSl9Y2xhc3MgV3R7Y29uc3RydWN0b3IodCl7dGhpcy5XPTAsdGhpcy5GPVtdLHRoaXMuRyh0KX10aGVuKHQsbil7cmV0dXJuIG5ldyBXdCgoZSxyKT0+e3RoaXMuRi5wdXNoKFshMSxuPT57aWYodCl0cnl7ZSh0KG4pKX1jYXRjaCh0KXtyKHQpfWVsc2UgZShuKX0sdD0+e2lmKG4pdHJ5e2Uobih0KSl9Y2F0Y2godCl7cih0KX1lbHNlIHIodCl9XSksdGhpcy5IKCl9KX1jYXRjaCh0KXtyZXR1cm4gdGhpcy50aGVuKHQ9PnQsdCl9ZmluYWxseSh0KXtyZXR1cm4gbmV3IFd0KChuLGUpPT57bGV0IHIsbztyZXR1cm4gdGhpcy50aGVuKG49PntvPSExLHI9bix0JiZ0KCl9LG49PntvPSEwLHI9bix0JiZ0KCl9KS50aGVuKCgpPT57bz9lKHIpOm4ocil9KX0pfUgoKXtpZigwPT09dGhpcy5XKXJldHVybjtjb25zdCB0PXRoaXMuRi5zbGljZSgpO3RoaXMuRj1bXSx0LmZvckVhY2godD0+e3RbMF18fCgxPT09dGhpcy5XJiZ0WzFdKHRoaXMuSiksMj09PXRoaXMuVyYmdFsyXSh0aGlzLkopLHRbMF09ITApfSl9Ryh0KXtjb25zdCBuPSh0LG4pPT57MD09PXRoaXMuVyYmKFQobik/bi50aGVuKGUscik6KHRoaXMuVz10LHRoaXMuSj1uLHRoaXMuSCgpKSl9LGU9dD0+e24oMSx0KX0scj10PT57bigyLHQpfTt0cnl7dChlLHIpfWNhdGNoKHQpe3IodCl9fX1mdW5jdGlvbiB6dCh0LG4pe2NvbnN0e2ZpbmdlcnByaW50OmUsc3BhbjpyLGJyZWFkY3J1bWJzOm8sc2RrUHJvY2Vzc2luZ01ldGFkYXRhOml9PW47IWZ1bmN0aW9uKHQsbil7Y29uc3R7ZXh0cmE6ZSx0YWdzOnIsdXNlcjpvLGNvbnRleHRzOmksbGV2ZWw6cyx0cmFuc2FjdGlvbk5hbWU6Y309bjtPYmplY3Qua2V5cyhlKS5sZW5ndGgmJih0LmV4dHJhPXsuLi5lLC4uLnQuZXh0cmF9KTtPYmplY3Qua2V5cyhyKS5sZW5ndGgmJih0LnRhZ3M9ey4uLnIsLi4udC50YWdzfSk7T2JqZWN0LmtleXMobykubGVuZ3RoJiYodC51c2VyPXsuLi5vLC4uLnQudXNlcn0pO09iamVjdC5rZXlzKGkpLmxlbmd0aCYmKHQuY29udGV4dHM9ey4uLmksLi4udC5jb250ZXh0c30pO3MmJih0LmxldmVsPXMpO2MmJiJ0cmFuc2FjdGlvbiIhPT10LnR5cGUmJih0LnRyYW5zYWN0aW9uPWMpfSh0LG4pLHImJmZ1bmN0aW9uKHQsbil7dC5jb250ZXh0cz17dHJhY2U6X3QobiksLi4udC5jb250ZXh0c30sdC5zZGtQcm9jZXNzaW5nTWV0YWRhdGE9e2R5bmFtaWNTYW1wbGluZ0NvbnRleHQ6anQobiksLi4udC5zZGtQcm9jZXNzaW5nTWV0YWRhdGF9O2NvbnN0IGU9TnQobikscj1FdChlKS5kZXNjcmlwdGlvbjtyJiYhdC50cmFuc2FjdGlvbiYmInRyYW5zYWN0aW9uIj09PXQudHlwZSYmKHQudHJhbnNhY3Rpb249cil9KHQsciksZnVuY3Rpb24odCxuKXt0LmZpbmdlcnByaW50PXQuZmluZ2VycHJpbnQ/QXJyYXkuaXNBcnJheSh0LmZpbmdlcnByaW50KT90LmZpbmdlcnByaW50Olt0LmZpbmdlcnByaW50XTpbXSxuJiYodC5maW5nZXJwcmludD10LmZpbmdlcnByaW50LmNvbmNhdChuKSk7dC5maW5nZXJwcmludC5sZW5ndGh8fGRlbGV0ZSB0LmZpbmdlcnByaW50fSh0LGUpLGZ1bmN0aW9uKHQsbil7Y29uc3QgZT1bLi4udC5icmVhZGNydW1ic3x8W10sLi4ubl07dC5icmVhZGNydW1icz1lLmxlbmd0aD9lOnZvaWQgMH0odCxvKSxmdW5jdGlvbih0LG4pe3Quc2RrUHJvY2Vzc2luZ01ldGFkYXRhPXsuLi50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwuLi5ufX0odCxpKX1jb25zdCBGdD1TeW1ib2wuZm9yKCJTZW50cnlCdWZmZXJGdWxsRXJyb3IiKTtmdW5jdGlvbiBHdCh0PTEwMCl7Y29uc3Qgbj1uZXcgU2V0O2Z1bmN0aW9uIGUodCl7bi5kZWxldGUodCl9cmV0dXJue2dldCAkKCl7cmV0dXJuIEFycmF5LmZyb20obil9LGFkZDpmdW5jdGlvbihyKXtpZighKG4uc2l6ZTx0KSlyZXR1cm4gbz1GdCxuZXcgV3QoKHQsbik9PntuKG8pfSk7dmFyIG87Y29uc3QgaT1yKCk7cmV0dXJuIG4uYWRkKGkpLGkudGhlbigoKT0+ZShpKSwoKT0+ZShpKSksaX0sZHJhaW46ZnVuY3Rpb24odCl7aWYoIW4uc2l6ZSlyZXR1cm4gZT0hMCxuZXcgV3QodD0+e3QoZSl9KTt2YXIgZTtjb25zdCByPVByb21pc2UuYWxsU2V0dGxlZChBcnJheS5mcm9tKG4pKS50aGVuKCgpPT4hMCk7aWYoIXQpcmV0dXJuIHI7Y29uc3Qgbz1bcixuZXcgUHJvbWlzZShuPT57cmV0dXJuIm9iamVjdCI9PXR5cGVvZihlPXNldFRpbWVvdXQoKCk9Pm4oITEpLHQpKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudW5yZWYmJmUudW5yZWYoKSxlO3ZhciBlfSldO3JldHVybiBQcm9taXNlLnJhY2Uobyl9fX1mdW5jdGlvbiBIdCh0LHtzdGF0dXNDb2RlOm4saGVhZGVyczplfSxyPVcoKSl7Y29uc3Qgbz17Li4udH0saT1lPy5bIngtc2VudHJ5LXJhdGUtbGltaXRzIl0scz1lPy5bInJldHJ5LWFmdGVyIl07aWYoaSlmb3IoY29uc3QgdCBvZiBpLnRyaW0oKS5zcGxpdCgiLCIpKXtjb25zdFtuLGUsLCxpXT10LnNwbGl0KCI6Iiw1KSxzPXBhcnNlSW50KG4sMTApLGM9MWUzKihpc05hTihzKT82MDpzKTtpZihlKWZvcihjb25zdCB0IG9mIGUuc3BsaXQoIjsiKSkibWV0cmljX2J1Y2tldCI9PT10JiZpJiYhaS5zcGxpdCgiOyIpLmluY2x1ZGVzKCJjdXN0b20iKXx8KG9bdF09citjKTtlbHNlIG8uYWxsPXIrY31lbHNlIHM/by5hbGw9citmdW5jdGlvbih0LG49VygpKXtjb25zdCBlPXBhcnNlSW50KGAke3R9YCwxMCk7aWYoIWlzTmFOKGUpKXJldHVybiAxZTMqZTtjb25zdCByPURhdGUucGFyc2UoYCR7dH1gKTtyZXR1cm4gaXNOYU4ocik/NmU0OnItbn0ocyxyKTo0Mjk9PT1uJiYoby5hbGw9cis2ZTQpO3JldHVybiBvfWZ1bmN0aW9uIEp0KHQsbixlPUd0KHQuYnVmZmVyU2l6ZXx8NjQpKXtsZXQgcj17fTtyZXR1cm57c2VuZDpmdW5jdGlvbih0KXtjb25zdCBvPVtdO2lmKEl0KHQsKHQsbik9Pntjb25zdCBlPUR0KG4pOyhmdW5jdGlvbih0LG4sZT1XKCkpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB0W25dfHx0LmFsbHx8MH0odCxuKT5lfSkocixlKXx8by5wdXNoKHQpfSksMD09PW8ubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO2NvbnN0IGk9a3QodFswXSxvKSxzPXQ9PnshZnVuY3Rpb24odCxuKXtyZXR1cm4gSXQodCwodCxlKT0+bi5pbmNsdWRlcyhlKSl9KGksWyJjbGllbnRfcmVwb3J0Il0pP0l0KGksKHQsbik9Pnt9KTpoJiZTLndhcm4oYERyb3BwaW5nIGNsaWVudCByZXBvcnQuIFdpbGwgbm90IHNlbmQgb3V0Y29tZXMgKHJlYXNvbjogJHt0fSkuYCl9O3JldHVybiBlLmFkZCgoKT0+bih7Ym9keTpSdChpKX0pLnRoZW4odD0+NDEzPT09dC5zdGF0dXNDb2RlPyhoJiZTLmVycm9yKCJTZW50cnkgcmVzcG9uZGVkIHdpdGggc3RhdHVzIGNvZGUgNDEzLiBFbnZlbG9wZSB3YXMgZGlzY2FyZGVkIGR1ZSB0byBleGNlZWRpbmcgc2l6ZSBsaW1pdHMuIikscygic2VuZF9lcnJvciIpLHQpOihoJiZ2b2lkIDAhPT10LnN0YXR1c0NvZGUmJih0LnN0YXR1c0NvZGU8MjAwfHx0LnN0YXR1c0NvZGU+PTMwMCkmJlMud2FybihgU2VudHJ5IHJlc3BvbmRlZCB3aXRoIHN0YXR1cyBjb2RlICR7dC5zdGF0dXNDb2RlfSB0byBzZW50IGV2ZW50LmApLHI9SHQocix0KSx0KSx0PT57dGhyb3cgcygibmV0d29ya19lcnJvciIpLGgmJlMuZXJyb3IoIkVuY291bnRlcmVkIGVycm9yIHJ1bm5pbmcgdHJhbnNwb3J0IHJlcXVlc3Q6Iix0KSx0fSkpLnRoZW4odD0+dCx0PT57aWYodD09PUZ0KXJldHVybiBoJiZTLmVycm9yKCJTa2lwcGVkIHNlbmRpbmcgZXZlbnQgYmVjYXVzZSBidWZmZXIgaXMgZnVsbC4iKSxzKCJxdWV1ZV9vdmVyZmxvdyIpLFByb21pc2UucmVzb2x2ZSh7fSk7dGhyb3cgdH0pfSxmbHVzaDp0PT5lLmRyYWluKHQpfX1jb25zdCBZdD0vXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87ZnVuY3Rpb24gVnQodCl7Y29uc3Qgbj1mdW5jdGlvbih0KXtjb25zdCBuPXQubGVuZ3RoPjEwMjQ/YDx0cnVuY2F0ZWQ+JHt0LnNsaWNlKC0xMDI0KX1gOnQsZT1ZdC5leGVjKG4pO3JldHVybiBlP2Uuc2xpY2UoMSk6W119KHQpLGU9blswXXx8IiI7bGV0IHI9blsxXTtyZXR1cm4gZXx8cj8ociYmKHI9ci5zbGljZSgwLHIubGVuZ3RoLTEpKSxlK3IpOiIuIn1mdW5jdGlvbiBLdCh0LG49ITEpe3JldHVybiEobnx8dCYmIXQuc3RhcnRzV2l0aCgiLyIpJiYhdC5tYXRjaCgvXltBLVpdOi8pJiYhdC5zdGFydHNXaXRoKCIuIikmJiF0Lm1hdGNoKC9eW2EtekEtWl0oW2EtekEtWjAtOS5cLStdKSo6XC9cLy8pKSYmdm9pZCAwIT09dCYmIXQuaW5jbHVkZXMoIm5vZGVfbW9kdWxlcy8iKX1jb25zdCBadD1TeW1ib2woIkFnZW50QmFzZUludGVybmFsU3RhdGUiKTtjbGFzcyBxdCBleHRlbmRzIGkuQWdlbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpc1tadF09e319aXNTZWN1cmVFbmRwb2ludCh0KXtpZih0KXtpZigiYm9vbGVhbiI9PXR5cGVvZiB0LnNlY3VyZUVuZHBvaW50KXJldHVybiB0LnNlY3VyZUVuZHBvaW50O2lmKCJzdHJpbmciPT10eXBlb2YgdC5wcm90b2NvbClyZXR1cm4iaHR0cHM6Ij09PXQucHJvdG9jb2x9Y29uc3R7c3RhY2s6bn09bmV3IEVycm9yO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmbi5zcGxpdCgiXG4iKS5zb21lKHQ9Pi0xIT09dC5pbmRleE9mKCIoaHR0cHMuanM6Iil8fC0xIT09dC5pbmRleE9mKCJub2RlOmh0dHBzOiIpKX1jcmVhdGVTb2NrZXQodCxuLGUpe2NvbnN0IHI9ey4uLm4sc2VjdXJlRW5kcG9pbnQ6dGhpcy5pc1NlY3VyZUVuZHBvaW50KG4pfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50aGlzLmNvbm5lY3QodCxyKSkudGhlbihvPT57aWYobyBpbnN0YW5jZW9mIGkuQWdlbnQpcmV0dXJuIG8uYWRkUmVxdWVzdCh0LHIpO3RoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9byxzdXBlci5jcmVhdGVTb2NrZXQodCxuLGUpfSxlKX1jcmVhdGVDb25uZWN0aW9uKCl7Y29uc3QgdD10aGlzW1p0XS5jdXJyZW50U29ja2V0O2lmKHRoaXNbWnRdLmN1cnJlbnRTb2NrZXQ9dm9pZCAwLCF0KXRocm93IG5ldyBFcnJvcigiTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24iKTtyZXR1cm4gdH1nZXQgZGVmYXVsdFBvcnQoKXtyZXR1cm4gdGhpc1tadF0uZGVmYXVsdFBvcnQ/PygiaHR0cHM6Ij09PXRoaXMucHJvdG9jb2w/NDQzOjgwKX1zZXQgZGVmYXVsdFBvcnQodCl7dGhpc1tadF0mJih0aGlzW1p0XS5kZWZhdWx0UG9ydD10KX1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpc1tadF0ucHJvdG9jb2w/Pyh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKT8iaHR0cHM6IjoiaHR0cDoiKX1zZXQgcHJvdG9jb2wodCl7dGhpc1tadF0mJih0aGlzW1p0XS5wcm90b2NvbD10KX19ZnVuY3Rpb24gUXQoLi4udCl7Uy5sb2coIltodHRwcy1wcm94eS1hZ2VudDpwYXJzZS1wcm94eS1yZXNwb25zZV0iLC4uLnQpfWZ1bmN0aW9uIFh0KHQpe3JldHVybiBuZXcgUHJvbWlzZSgobixlKT0+e2xldCByPTA7Y29uc3Qgbz1bXTtmdW5jdGlvbiBpKCl7Y29uc3QgYz10LnJlYWQoKTtjP2Z1bmN0aW9uKGMpe28ucHVzaChjKSxyKz1jLmxlbmd0aDtjb25zdCB1PUJ1ZmZlci5jb25jYXQobyxyKSxhPXUuaW5kZXhPZigiXHJcblxyXG4iKTtpZigtMT09PWEpcmV0dXJuIFF0KCJoYXZlIG5vdCByZWNlaXZlZCBlbmQgb2YgSFRUUCBoZWFkZXJzIHlldC4uLiIpLHZvaWQgaSgpO2NvbnN0IGY9dS5zdWJhcnJheSgwLGEpLnRvU3RyaW5nKCJhc2NpaSIpLnNwbGl0KCJcclxuIiksaD1mLnNoaWZ0KCk7aWYoIWgpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKCJObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlIikpO2NvbnN0IHA9aC5zcGxpdCgiICIpLGQ9KyhwWzFdfHwwKSxsPXAuc2xpY2UoMikuam9pbigiICIpLG09e307Zm9yKGNvbnN0IG4gb2YgZil7aWYoIW4pY29udGludWU7Y29uc3Qgcj1uLmluZGV4T2YoIjoiKTtpZigtMT09PXIpcmV0dXJuIHQuZGVzdHJveSgpLGUobmV3IEVycm9yKGBJbnZhbGlkIGhlYWRlciBmcm9tIHByb3h5IENPTk5FQ1QgcmVzcG9uc2U6ICIke259ImApKTtjb25zdCBvPW4uc2xpY2UoMCxyKS50b0xvd2VyQ2FzZSgpLGk9bi5zbGljZShyKzEpLnRyaW1TdGFydCgpLHM9bVtvXTsic3RyaW5nIj09dHlwZW9mIHM/bVtvXT1bcyxpXTpBcnJheS5pc0FycmF5KHMpP3MucHVzaChpKTptW29dPWl9UXQoImdvdCBwcm94eSBzZXJ2ZXIgcmVzcG9uc2U6ICVvICVvIixoLG0pLHMoKSxuKHtjb25uZWN0OntzdGF0dXNDb2RlOmQsc3RhdHVzVGV4dDpsLGhlYWRlcnM6bX0sYnVmZmVyZWQ6dX0pfShjKTp0Lm9uY2UoInJlYWRhYmxlIixpKX1mdW5jdGlvbiBzKCl7dC5yZW1vdmVMaXN0ZW5lcigiZW5kIixjKSx0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsdSksdC5yZW1vdmVMaXN0ZW5lcigicmVhZGFibGUiLGkpfWZ1bmN0aW9uIGMoKXtzKCksUXQoIm9uZW5kIiksZShuZXcgRXJyb3IoIlByb3h5IGNvbm5lY3Rpb24gZW5kZWQgYmVmb3JlIHJlY2VpdmluZyBDT05ORUNUIHJlc3BvbnNlIikpfWZ1bmN0aW9uIHUodCl7cygpLFF0KCJvbmVycm9yICVvIix0KSxlKHQpfXQub24oImVycm9yIix1KSx0Lm9uKCJlbmQiLGMpLGkoKX0pfWZ1bmN0aW9uIHRuKC4uLnQpe1MubG9nKCJbaHR0cHMtcHJveHktYWdlbnRdIiwuLi50KX1jbGFzcyBubiBleHRlbmRzIHF0e3N0YXRpYyBfX2luaXRTdGF0aWMoKXt0aGlzLnByb3RvY29scz1bImh0dHAiLCJodHRwcyJdfWNvbnN0cnVjdG9yKHQsbil7c3VwZXIobiksdGhpcy5vcHRpb25zPXt9LHRoaXMucHJveHk9InN0cmluZyI9PXR5cGVvZiB0P25ldyBVUkwodCk6dCx0aGlzLnByb3h5SGVhZGVycz1uPy5oZWFkZXJzPz97fSx0bigiQ3JlYXRpbmcgbmV3IEh0dHBzUHJveHlBZ2VudCBpbnN0YW5jZTogJW8iLHRoaXMucHJveHkuaHJlZik7Y29uc3QgZT0odGhpcy5wcm94eS5ob3N0bmFtZXx8dGhpcy5wcm94eS5ob3N0KS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpLHI9dGhpcy5wcm94eS5wb3J0P3BhcnNlSW50KHRoaXMucHJveHkucG9ydCwxMCk6Imh0dHBzOiI9PT10aGlzLnByb3h5LnByb3RvY29sPzQ0Mzo4MDt0aGlzLmNvbm5lY3RPcHRzPXtBTFBOUHJvdG9jb2xzOlsiaHR0cC8xLjEiXSwuLi5uP3JuKG4sImhlYWRlcnMiKTpudWxsLGhvc3Q6ZSxwb3J0OnJ9fWFzeW5jIGNvbm5lY3QodCxuKXtjb25zdHtwcm94eTplfT10aGlzO2lmKCFuLmhvc3QpdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gImhvc3QiIHByb3ZpZGVkJyk7bGV0IHI7aWYoImh0dHBzOiI9PT1lLnByb3RvY29sKXt0bigiQ3JlYXRpbmcgYHRscy5Tb2NrZXRgOiAlbyIsdGhpcy5jb25uZWN0T3B0cyk7Y29uc3QgdD10aGlzLmNvbm5lY3RPcHRzLnNlcnZlcm5hbWV8fHRoaXMuY29ubmVjdE9wdHMuaG9zdDtyPWYuY29ubmVjdCh7Li4udGhpcy5jb25uZWN0T3B0cyxzZXJ2ZXJuYW1lOnQmJmEuaXNJUCh0KT92b2lkIDA6dH0pfWVsc2UgdG4oIkNyZWF0aW5nIGBuZXQuU29ja2V0YDogJW8iLHRoaXMuY29ubmVjdE9wdHMpLHI9YS5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpO2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucHJveHlIZWFkZXJzP3RoaXMucHJveHlIZWFkZXJzKCk6ey4uLnRoaXMucHJveHlIZWFkZXJzfSxpPWEuaXNJUHY2KG4uaG9zdCk/YFske24uaG9zdH1dYDpuLmhvc3Q7bGV0IHM9YENPTk5FQ1QgJHtpfToke24ucG9ydH0gSFRUUC8xLjFcclxuYDtpZihlLnVzZXJuYW1lfHxlLnBhc3N3b3JkKXtjb25zdCB0PWAke2RlY29kZVVSSUNvbXBvbmVudChlLnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQoZS5wYXNzd29yZCl9YDtvWyJQcm94eS1BdXRob3JpemF0aW9uIl09YEJhc2ljICR7QnVmZmVyLmZyb20odCkudG9TdHJpbmcoImJhc2U2NCIpfWB9by5Ib3N0PWAke2l9OiR7bi5wb3J0fWAsb1siUHJveHktQ29ubmVjdGlvbiJdfHwob1siUHJveHktQ29ubmVjdGlvbiJdPXRoaXMua2VlcEFsaXZlPyJLZWVwLUFsaXZlIjoiY2xvc2UiKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhvKSlzKz1gJHt0fTogJHtvW3RdfVxyXG5gO2NvbnN0IGM9WHQocik7ci53cml0ZShgJHtzfVxyXG5gKTtjb25zdHtjb25uZWN0OnUsYnVmZmVyZWQ6aH09YXdhaXQgYztpZih0LmVtaXQoInByb3h5Q29ubmVjdCIsdSksdGhpcy5lbWl0KCJwcm94eUNvbm5lY3QiLHUsdCksMjAwPT09dS5zdGF0dXNDb2RlKXtpZih0Lm9uY2UoInNvY2tldCIsZW4pLG4uc2VjdXJlRW5kcG9pbnQpe3RuKCJVcGdyYWRpbmcgc29ja2V0IGNvbm5lY3Rpb24gdG8gVExTIik7Y29uc3QgdD1uLnNlcnZlcm5hbWV8fG4uaG9zdDtyZXR1cm4gZi5jb25uZWN0KHsuLi5ybihuLCJob3N0IiwicGF0aCIsInBvcnQiKSxzb2NrZXQ6cixzZXJ2ZXJuYW1lOmEuaXNJUCh0KT92b2lkIDA6dH0pfXJldHVybiByfXIuZGVzdHJveSgpO2NvbnN0IHA9bmV3IGEuU29ja2V0KHt3cml0YWJsZTohMX0pO3JldHVybiBwLnJlYWRhYmxlPSEwLHQub25jZSgic29ja2V0Iix0PT57dG4oIlJlcGxheWluZyBwcm94eSBidWZmZXIgZm9yIGZhaWxlZCByZXF1ZXN0IiksdC5wdXNoKGgpLHQucHVzaChudWxsKX0pLHB9fWZ1bmN0aW9uIGVuKHQpe3QucmVzdW1lKCl9ZnVuY3Rpb24gcm4odCwuLi5uKXtjb25zdCBlPXt9O2xldCByO2ZvcihyIGluIHQpbi5pbmNsdWRlcyhyKXx8KGVbcl09dFtyXSk7cmV0dXJuIGV9bm4uX19pbml0U3RhdGljKCk7ZnVuY3Rpb24gb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXltBLVpdOi8sIiIpLnJlcGxhY2UoL1xcL2csIi8iKX1jb25zdCBzbj1uO2xldCBjbix1bj0wLGFuPXt9O2Z1bmN0aW9uIGZuKHQpe3NuLmRlYnVnJiZjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7dH1gKX12YXIgaG4scG4sZG47Y29uc3QgbG49ZnVuY3Rpb24odCl7bGV0IG47dHJ5e249bmV3IFVSTCh0LnVybCl9Y2F0Y2gobil7cmV0dXJuIGIoKCk9Pntjb25zb2xlLndhcm4oIltAc2VudHJ5L25vZGVdOiBJbnZhbGlkIGRzbiBvciB0dW5uZWwgb3B0aW9uLCB3aWxsIG5vdCBzZW5kIGFueSBldmVudHMuIFRoZSB0dW5uZWwgb3B0aW9uIG11c3QgYmUgYSBmdWxsIFVSTCB3aGVuIHVzZWQuIil9KSxKdCh0LCgpPT5Qcm9taXNlLnJlc29sdmUoe30pKX1jb25zdCBlPSJodHRwczoiPT09bi5wcm90b2NvbCxyPWZ1bmN0aW9uKHQsbil7Y29uc3R7bm9fcHJveHk6ZX09cHJvY2Vzcy5lbnYscj1lPy5zcGxpdCgiLCIpLnNvbWUobj0+dC5ob3N0LmVuZHNXaXRoKG4pfHx0Lmhvc3RuYW1lLmVuZHNXaXRoKG4pKTtyZXR1cm4gcj92b2lkIDA6bn0obix0LnByb3h5fHwoZT9wcm9jZXNzLmVudi5odHRwc19wcm94eTp2b2lkIDApfHxwcm9jZXNzLmVudi5odHRwX3Byb3h5KSxvPWU/czppLGE9dm9pZCAwIT09dC5rZWVwQWxpdmUmJnQua2VlcEFsaXZlLGY9cj9uZXcgbm4ocik6bmV3IG8uQWdlbnQoe2tlZXBBbGl2ZTphLG1heFNvY2tldHM6MzAsdGltZW91dDoyZTN9KSxoPWZ1bmN0aW9uKHQsbixlKXtjb25zdHtob3N0bmFtZTpyLHBhdGhuYW1lOm8scG9ydDppLHByb3RvY29sOnMsc2VhcmNoOmF9PW5ldyBVUkwodC51cmwpO3JldHVybiBmdW5jdGlvbihmKXtyZXR1cm4gbmV3IFByb21pc2UoKGgscCk9PntCdCgoKT0+e2xldCBkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYyh7cmVhZCgpe3RoaXMucHVzaCh0KSx0aGlzLnB1c2gobnVsbCl9fSl9KGYuYm9keSk7Y29uc3QgbD17Li4udC5oZWFkZXJzfTtmLmJvZHkubGVuZ3RoPjMyNzY4JiYobFsiY29udGVudC1lbmNvZGluZyJdPSJnemlwIixkPWQucGlwZSh1KCkpKTtjb25zdCBtPXIuc3RhcnRzV2l0aCgiWyIpLGc9bi5yZXF1ZXN0KHttZXRob2Q6IlBPU1QiLGFnZW50OmUsaGVhZGVyczpsLGhvc3RuYW1lOm0/ci5zbGljZSgxLC0xKTpyLHBhdGg6YCR7b30ke2F9YCxwb3J0OmkscHJvdG9jb2w6cyxjYTp0LmNhQ2VydHN9LHQ9Pnt0Lm9uKCJkYXRhIiwoKT0+e30pLHQub24oImVuZCIsKCk9Pnt9KSx0LnNldEVuY29kaW5nKCJ1dGY4Iik7Y29uc3Qgbj10LmhlYWRlcnNbInJldHJ5LWFmdGVyIl0/P251bGwsZT10LmhlYWRlcnNbIngtc2VudHJ5LXJhdGUtbGltaXRzIl0/P251bGw7aCh7c3RhdHVzQ29kZTp0LnN0YXR1c0NvZGUsaGVhZGVyczp7InJldHJ5LWFmdGVyIjpuLCJ4LXNlbnRyeS1yYXRlLWxpbWl0cyI6QXJyYXkuaXNBcnJheShlKT9lWzBdfHxudWxsOmV9fSl9KTtnLm9uKCJlcnJvciIscCksZC5waXBlKGcpfSl9KX19KHQsdC5odHRwTW9kdWxlPz9vLGYpO3JldHVybiBKdCh0LGgpfSh7dXJsOihobj1zbi5kc24scG49c24udHVubmVsLGRuPXNuLnNka01ldGFkYXRhLnNkayxwbnx8YCR7ZnVuY3Rpb24odCl7cmV0dXJuYCR7ZnVuY3Rpb24odCl7Y29uc3Qgbj10LnByb3RvY29sP2Ake3QucHJvdG9jb2x9OmA6IiIsZT10LnBvcnQ/YDoke3QucG9ydH1gOiIiO3JldHVybmAke259Ly8ke3QuaG9zdH0ke2V9JHt0LnBhdGg/YC8ke3QucGF0aH1gOiIifS9hcGkvYH0odCl9JHt0LnByb2plY3RJZH0vZW52ZWxvcGUvYH0oaG4pfT8ke2Z1bmN0aW9uKHQsbil7Y29uc3QgZT17c2VudHJ5X3ZlcnNpb246IjcifTtyZXR1cm4gdC5wdWJsaWNLZXkmJihlLnNlbnRyeV9rZXk9dC5wdWJsaWNLZXkpLG4mJihlLnNlbnRyeV9jbGllbnQ9YCR7bi5uYW1lfS8ke24udmVyc2lvbn1gKSxuZXcgVVJMU2VhcmNoUGFyYW1zKGUpLnRvU3RyaW5nKCl9KGhuLGRuKX1gKX0pO2FzeW5jIGZ1bmN0aW9uIG1uKCl7aWYoY24pe2ZuKCJTZW5kaW5nIGFibm9ybWFsIHNlc3Npb24iKSxWKGNuLHtzdGF0dXM6ImFibm9ybWFsIixhYm5vcm1hbF9tZWNoYW5pc206ImFucl9mb3JlZ3JvdW5kIixyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnR9KTtjb25zdCB0PWZ1bmN0aW9uKHQsbixlLHIpe2NvbnN0IG89VXQoZSk7cmV0dXJuIGt0KHtzZW50X2F0OihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwuLi5vJiZ7c2RrOm99LC4uLiEhciYmbiYme2RzbjpidChuKX19LFsiYWdncmVnYXRlcyJpbiB0P1t7dHlwZToic2Vzc2lvbnMifSx0XTpbe3R5cGU6InNlc3Npb24ifSx0LnRvSlNPTigpXV0pfShjbixzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeSh0KSksYXdhaXQgbG4uc2VuZCh0KTt0cnl7ZT8ucG9zdE1lc3NhZ2UoInNlc3Npb24tZW5kZWQiKX1jYXRjaHt9fX1mdW5jdGlvbiBnbih0KXtpZighdClyZXR1cm47Y29uc3Qgbj1mdW5jdGlvbih0KXtpZighdC5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1BcnJheS5mcm9tKHQpO3JldHVybi9zZW50cnlXcmFwcGVkLy50ZXN0KEUobikuZnVuY3Rpb258fCIiKSYmbi5wb3AoKSxuLnJldmVyc2UoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiYobi5wb3AoKSwkLnRlc3QoRShuKS5mdW5jdGlvbnx8IiIpJiZuLnBvcCgpKSxuLnNsaWNlKDAsNTApLm1hcCh0PT4oey4uLnQsZmlsZW5hbWU6dC5maWxlbmFtZXx8RShuKS5maWxlbmFtZSxmdW5jdGlvbjp0LmZ1bmN0aW9ufHwiPyJ9KSl9KHQpO2lmKHNuLmFwcFJvb3RQYXRoKWZvcihjb25zdCB0IG9mIG4pdC5maWxlbmFtZSYmKHQuZmlsZW5hbWU9VHQodC5maWxlbmFtZSxzbi5hcHBSb290UGF0aCkpO3JldHVybiBufWFzeW5jIGZ1bmN0aW9uIHluKHQsbil7aWYodW4+PXNuLm1heEFuckV2ZW50cylyZXR1cm47dW4rPTEsYXdhaXQgbW4oKSxmbigiU2VuZGluZyBldmVudCIpO2NvbnN0IGU9e2V2ZW50X2lkOkYoKSxjb250ZXh0czpzbi5jb250ZXh0cyxyZWxlYXNlOnNuLnJlbGVhc2UsZW52aXJvbm1lbnQ6c24uZW52aXJvbm1lbnQsZGlzdDpzbi5kaXN0LHBsYXRmb3JtOiJub2RlIixsZXZlbDoiZXJyb3IiLGV4Y2VwdGlvbjp7dmFsdWVzOlt7dHlwZToiQXBwbGljYXRpb25Ob3RSZXNwb25kaW5nIix2YWx1ZTpgQXBwbGljYXRpb24gTm90IFJlc3BvbmRpbmcgZm9yIGF0IGxlYXN0ICR7c24uYW5yVGhyZXNob2xkfSBtc2Asc3RhY2t0cmFjZTp7ZnJhbWVzOmduKHQpfSxtZWNoYW5pc206e3R5cGU6IkFOUiJ9fV19LHRhZ3M6c24uc3RhdGljVGFnc307biYmZnVuY3Rpb24odCxuKXtpZih6dCh0LG4pLCF0LmNvbnRleHRzPy50cmFjZSl7Y29uc3R7dHJhY2VJZDplLHBhcmVudFNwYW5JZDpyLHByb3BhZ2F0aW9uU3BhbklkOm99PW4ucHJvcGFnYXRpb25Db250ZXh0O3QuY29udGV4dHM9e3RyYWNlOnt0cmFjZV9pZDplLHNwYW5faWQ6b3x8cSgpLHBhcmVudF9zcGFuX2lkOnJ9LC4uLnQuY29udGV4dHN9fX0oZSxuKSxmdW5jdGlvbih0KXtpZigwPT09T2JqZWN0LmtleXMoYW4pLmxlbmd0aClyZXR1cm47Y29uc3Qgbj1zbi5hcHBSb290UGF0aD97fTphbjtpZihzbi5hcHBSb290UGF0aClmb3IoY29uc3RbdCxlXW9mIE9iamVjdC5lbnRyaWVzKGFuKSluW1R0KHQsc24uYXBwUm9vdFBhdGgpXT1lO2NvbnN0IGU9bmV3IE1hcDtmb3IoY29uc3QgciBvZiB0LmV4Y2VwdGlvbj8udmFsdWVzfHxbXSlmb3IoY29uc3QgdCBvZiByLnN0YWNrdHJhY2U/LmZyYW1lc3x8W10pe2NvbnN0IHI9dC5hYnNfcGF0aHx8dC5maWxlbmFtZTtyJiZuW3JdJiZlLnNldChyLG5bcl0pfWlmKGUuc2l6ZT4wKXtjb25zdCBuPVtdO2Zvcihjb25zdFt0LHJdb2YgZS5lbnRyaWVzKCkpbi5wdXNoKHt0eXBlOiJzb3VyY2VtYXAiLGNvZGVfZmlsZTp0LGRlYnVnX2lkOnJ9KTt0LmRlYnVnX21ldGE9e2ltYWdlczpufX19KGUpO2NvbnN0IHI9THQoZSxzbi5kc24sc24uc2RrTWV0YWRhdGEsc24udHVubmVsKTtmbihKU09OLnN0cmluZ2lmeShyKSksYXdhaXQgbG4uc2VuZChyKSxhd2FpdCBsbi5mbHVzaCgyZTMpLHVuPj1zbi5tYXhBbnJFdmVudHMmJnNldFRpbWVvdXQoKCk9Pntwcm9jZXNzLmV4aXQoMCl9LDVlMyl9bGV0IGJuO2lmKGZuKCJTdGFydGVkIiksc24uY2FwdHVyZVN0YWNrVHJhY2Upe2ZuKCJDb25uZWN0aW5nIHRvIGRlYnVnZ2VyIik7Y29uc3Qgbj1uZXcgdDtuLmNvbm5lY3RUb01haW5UaHJlYWQoKSxmbigiQ29ubmVjdGVkIHRvIGRlYnVnZ2VyIik7Y29uc3QgZT1uZXcgTWFwO24ub24oIkRlYnVnZ2VyLnNjcmlwdFBhcnNlZCIsdD0+e2Uuc2V0KHQucGFyYW1zLnNjcmlwdElkLHQucGFyYW1zLnVybCl9KSxuLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLHQ9PntpZigib3RoZXIiPT09dC5wYXJhbXMucmVhc29uKXRyeXtmbigiRGVidWdnZXIgcGF1c2VkIik7Y29uc3QgaT1bLi4udC5wYXJhbXMuY2FsbEZyYW1lc10scz1zbi5hcHBSb290UGF0aD9mdW5jdGlvbih0PShwcm9jZXNzLmFyZ3ZbMV0/VnQocHJvY2Vzcy5hcmd2WzFdKTpwcm9jZXNzLmN3ZCgpKSxuPSJcXCI9PT1vKXtjb25zdCBlPW4/b24odCk6dDtyZXR1cm4gdD0+e2lmKCF0KXJldHVybjtjb25zdCBvPW4/b24odCk6dDtsZXR7ZGlyOmksYmFzZTpzLGV4dDpjfT1yLnBhcnNlKG8pOyIuanMiIT09YyYmIi5tanMiIT09YyYmIi5janMiIT09Y3x8KHM9cy5zbGljZSgwLC0xKmMubGVuZ3RoKSk7Y29uc3QgdT1kZWNvZGVVUklDb21wb25lbnQocyk7aXx8KGk9Ii4iKTtjb25zdCBhPWkubGFzdEluZGV4T2YoIi9ub2RlX21vZHVsZXMiKTtpZihhPi0xKXJldHVybmAke2kuc2xpY2UoYSsxNCkucmVwbGFjZSgvXC8vZywiLiIpfToke3V9YDtpZihpLnN0YXJ0c1dpdGgoZSkpe2NvbnN0IHQ9aS5zbGljZShlLmxlbmd0aCsxKS5yZXBsYWNlKC9cLy9nLCIuIik7cmV0dXJuIHQ/YCR7dH06JHt1fWA6dX1yZXR1cm4gdX19KHNuLmFwcFJvb3RQYXRoKTooKT0+e30sYz1pLm1hcCh0PT5mdW5jdGlvbih0LG4sZSl7Y29uc3Qgcj1uP24ucmVwbGFjZSgvXmZpbGU6XC9cLy8sIiIpOnZvaWQgMCxvPXQubG9jYXRpb24uY29sdW1uTnVtYmVyP3QubG9jYXRpb24uY29sdW1uTnVtYmVyKzE6dm9pZCAwLGk9dC5sb2NhdGlvbi5saW5lTnVtYmVyP3QubG9jYXRpb24ubGluZU51bWJlcisxOnZvaWQgMDtyZXR1cm57ZmlsZW5hbWU6cixtb2R1bGU6ZShyKSxmdW5jdGlvbjp0LmZ1bmN0aW9uTmFtZXx8Ij8iLGNvbG5vOm8sbGluZW5vOmksaW5fYXBwOnI/S3Qocik6dm9pZCAwfX0odCxlLmdldCh0LmxvY2F0aW9uLnNjcmlwdElkKSxzKSksdT1zZXRUaW1lb3V0KCgpPT57eW4oYykudGhlbihudWxsLCgpPT57Zm4oIlNlbmRpbmcgQU5SIGV2ZW50IGZhaWxlZC4iKX0pfSw1ZTMpO24ucG9zdCgiUnVudGltZS5ldmFsdWF0ZSIse2V4cHJlc3Npb246Imdsb2JhbC5fX1NFTlRSWV9HRVRfU0NPUEVTX18oKTsiLHNpbGVudDohMCxyZXR1cm5CeVZhbHVlOiEwfSwodCxlKT0+e3QmJmZuKGBFcnJvciBleGVjdXRpbmcgc2NyaXB0OiAnJHt0Lm1lc3NhZ2V9J2ApLGNsZWFyVGltZW91dCh1KTtjb25zdCByPWU/LnJlc3VsdD9lLnJlc3VsdC52YWx1ZTp2b2lkIDA7bi5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKSxuLnBvc3QoIkRlYnVnZ2VyLmRpc2FibGUiKSx5bihjLHIpLnRoZW4obnVsbCwoKT0+e2ZuKCJTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuIil9KX0pfWNhdGNoKHQpe3Rocm93IG4ucG9zdCgiRGVidWdnZXIucmVzdW1lIiksbi5wb3N0KCJEZWJ1Z2dlci5kaXNhYmxlIiksdH19KSxibj0oKT0+e3RyeXtuLnBvc3QoIkRlYnVnZ2VyLmVuYWJsZSIsKCk9PntuLnBvc3QoIkRlYnVnZ2VyLnBhdXNlIil9KX1jYXRjaHt9fX1jb25zdHtwb2xsOnZufT1mdW5jdGlvbih0LG4sZSxyKXtjb25zdCBvPXQoKTtsZXQgaT0hMSxzPSEwO3JldHVybiBzZXRJbnRlcnZhbCgoKT0+e2NvbnN0IHQ9by5nZXRUaW1lTXMoKTshMT09PWkmJnQ+bitlJiYoaT0hMCxzJiZyKCkpLHQ8bitlJiYoaT0hMSl9LDIwKSx7cG9sbDooKT0+e28ucmVzZXQoKX0sZW5hYmxlZDp0PT57cz10fX19KGZ1bmN0aW9uKCl7bGV0IHQ9cHJvY2Vzcy5ocnRpbWUoKTtyZXR1cm57Z2V0VGltZU1zOigpPT57Y29uc3RbbixlXT1wcm9jZXNzLmhydGltZSh0KTtyZXR1cm4gTWF0aC5mbG9vcigxZTMqbitlLzFlNil9LHJlc2V0OigpPT57dD1wcm9jZXNzLmhydGltZSgpfX19LHNuLnBvbGxJbnRlcnZhbCxzbi5hbnJUaHJlc2hvbGQsZnVuY3Rpb24oKXtmbigiV2F0Y2hkb2cgdGltZW91dCIpLGJuPyhmbigiUGF1c2luZyBkZWJ1Z2dlciB0byBjYXB0dXJlIHN0YWNrIHRyYWNlIiksYm4oKSk6KGZuKCJDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlIikseW4oKS50aGVuKG51bGwsKCk9PntmbigiU2VuZGluZyBBTlIgZXZlbnQgZmFpbGVkIG9uIHdhdGNoZG9nIHRpbWVvdXQuIil9KSl9KTtlPy5vbigibWVzc2FnZSIsdD0+e3Quc2Vzc2lvbiYmKGNuPVkodC5zZXNzaW9uKSksdC5kZWJ1Z0ltYWdlcyYmKGFuPXQuZGVidWdJbWFnZXMpLHZuKCl9KTs=";function k(a,...b){f.debug.log(`[ANR] ${a}`,...b)}function l(){let a=f.getCombinedScopeData(f.getIsolationScope(),f.getCurrentScope());return a.attachments=[],a.eventProcessors=[],a}async function m(a){let b={message:"ANR"},c={};for(let d of a.getEventProcessors()){if(null===b)break;b=await d(b,c)}return b?.contexts||{}}async function n(b,c){let d=b.getDsn();if(!d)return()=>{};let g=await m(b);delete g.app?.app_memory,delete g.device?.free_memory;let h=b.getOptions(),i=b.getSdkMetadata()||{};i.sdk&&(i.sdk.integrations=h.integrations.map(a=>a.name));let l={debug:f.debug.isEnabled(),dsn:d,tunnel:h.tunnel,environment:h.environment||"production",release:h.release,dist:h.dist,sdkMetadata:i,appRootPath:c.appRootPath,pollInterval:c.pollInterval||50,anrThreshold:c.anrThreshold||5e3,captureStackTrace:!!c.captureStackTrace,maxAnrEvents:c.maxAnrEvents||1,staticTags:c.staticTags||{},contexts:g};if(l.captureStackTrace){let b=await a.A(234177);b.url()||b.open(0)}let n=new e.Worker(new URL(`data:application/javascript;base64,${j}`),{workerData:l,execArgv:[],env:{...process.env,NODE_OPTIONS:void 0}});process.on("exit",()=>{n.terminate()});let o=setInterval(()=>{try{let a=f.getIsolationScope().getSession(),b=a?{...a,toJSON:void 0}:void 0;n.postMessage({session:b,debugImages:f.getFilenameToDebugIdMap(h.stackParser)})}catch{}},l.pollInterval);return o.unref(),n.on("message",a=>{"session-ended"===a&&(k("ANR event sent from ANR worker. Clearing session in this thread."),f.getIsolationScope().setSession(void 0))}),n.once("error",a=>{clearInterval(o),k("ANR worker error",a)}),n.once("exit",a=>{clearInterval(o),k("ANR worker exit",a)}),n.unref(),()=>{n.terminate(),clearInterval(o)}}c.anrIntegration=f.defineIntegration((a={})=>{let b,c;if(g.NODE_VERSION.major<16||16===g.NODE_VERSION.major&&g.NODE_VERSION.minor<17)throw Error("ANR detection requires Node 16.17.0 or later");return f.GLOBAL_OBJ.__SENTRY_GET_SCOPES__=l,{name:"Anr",startWorker:()=>{!b&&c&&(b=n(c,a))},stopWorker:()=>{b&&b.then(a=>{a(),b=void 0})},async setup(b){c=b,a.captureStackTrace&&await h.isDebuggerEnabled()&&(f.debug.warn("ANR captureStackTrace has been disabled because the debugger was already enabled"),a.captureStackTrace=!1),setImmediate(()=>this.startWorker())}}}),c.base64WorkerScript=j,c.disableAnrDetectionForCallback=function(a){let b=f.getClient()?.getIntegrationByName("Anr");if(!b)return a();b.stopWorker();let c=a();return i(c)?c.finally(()=>b.startWorker()):(b.startWorker(),c)}},820876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(812057),e=a.r(187845);c.captureLog=function(a,...b){let[c,f,g,h]=b;if(Array.isArray(f)){let b={...g};b["sentry.message.template"]=c,f.forEach((a,c)=>{b[`sentry.message.parameter.${c}`]=a});let i=d.format(c,...f);e._INTERNAL_captureLog({level:a,message:i,attributes:b},h?.scope)}else e._INTERNAL_captureLog({level:a,message:c,attributes:f},g?.scope??h?.scope)}},218921,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(820876);c.fmt=a.r(187845).fmt,c.debug=function(...a){d.captureLog("debug",...a)},c.error=function(...a){d.captureLog("error",...a)},c.fatal=function(...a){d.captureLog("fatal",...a)},c.info=function(...a){d.captureLog("info",...a)},c.trace=function(...a){d.captureLog("trace",...a)},c.warn=function(...a){d.captureLog("warn",...a)}},975798,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(60438),e=a.r(187845);c.nodeRuntimeMetricsIntegration=e.defineIntegration((a={})=>{let b,c,f,g,h=a.collectionIntervalMs??3e4,i={cpuUtilization:!0,memHeapUsed:!0,memHeapTotal:!0,memRss:!0,eventLoopDelayP50:!0,eventLoopDelayP99:!0,eventLoopUtilization:!0,uptime:!0,cpuTime:!1,memExternal:!1,eventLoopDelayMin:!1,eventLoopDelayMax:!1,eventLoopDelayMean:!1,eventLoopDelayP90:!1,...a.collect},j=i.eventLoopDelayP99||i.eventLoopDelayMin||i.eventLoopDelayMax||i.eventLoopDelayMean||i.eventLoopDelayP50||i.eventLoopDelayP90,k=i.cpuUtilization||i.cpuTime,l=0,m=a=>Math.max(0,(a-1e7)/1e9),n={attributes:{"sentry.origin":"auto.node.runtime_metrics"}},o={unit:"byte",attributes:{"sentry.origin":"auto.node.runtime_metrics"}},p={unit:"second",attributes:{"sentry.origin":"auto.node.runtime_metrics"}};function q(){let a=e._INTERNAL_safeDateNow(),b=a-l;if(k&&void 0!==c){let a=process.cpuUsage(c);i.cpuTime&&(e.metrics.gauge("node.runtime.cpu.user",a.user/1e6,p),e.metrics.gauge("node.runtime.cpu.system",a.system/1e6,p)),i.cpuUtilization&&b>0&&e.metrics.gauge("node.runtime.cpu.utilization",(a.user+a.system)/(1e3*b),n),c=process.cpuUsage()}if(i.memRss||i.memHeapUsed||i.memHeapTotal||i.memExternal){let a=process.memoryUsage();i.memRss&&e.metrics.gauge("node.runtime.mem.rss",a.rss,o),i.memHeapUsed&&e.metrics.gauge("node.runtime.mem.heap_used",a.heapUsed,o),i.memHeapTotal&&e.metrics.gauge("node.runtime.mem.heap_total",a.heapTotal,o),i.memExternal&&(e.metrics.gauge("node.runtime.mem.external",a.external,o),e.metrics.gauge("node.runtime.mem.array_buffers",a.arrayBuffers,o))}if(j&&g&&(i.eventLoopDelayMin&&e.metrics.gauge("node.runtime.event_loop.delay.min",m(g.min),p),i.eventLoopDelayMax&&e.metrics.gauge("node.runtime.event_loop.delay.max",m(g.max),p),i.eventLoopDelayMean&&e.metrics.gauge("node.runtime.event_loop.delay.mean",m(g.mean),p),i.eventLoopDelayP50&&e.metrics.gauge("node.runtime.event_loop.delay.p50",m(g.percentile(50)),p),i.eventLoopDelayP90&&e.metrics.gauge("node.runtime.event_loop.delay.p90",m(g.percentile(90)),p),i.eventLoopDelayP99&&e.metrics.gauge("node.runtime.event_loop.delay.p99",m(g.percentile(99)),p),g.reset()),i.eventLoopUtilization&&void 0!==f){let a=d.performance.eventLoopUtilization(),b=d.performance.eventLoopUtilization(a,f);e.metrics.gauge("node.runtime.event_loop.utilization",b.utilization,n),f=a}i.uptime&&b>0&&e.metrics.count("node.runtime.process.uptime",b/1e3,p),l=a}return{name:"NodeRuntimeMetrics",setup(){if(j){g?.disable();try{(g=d.monitorEventLoopDelay({resolution:10})).enable()}catch{g=void 0}}k&&(c=process.cpuUsage()),i.eventLoopUtilization&&(f=d.performance.eventLoopUtilization()),l=e._INTERNAL_safeDateNow(),b&&clearInterval(b),b=e._INTERNAL_safeUnref(setInterval(q,h))}}})},872360,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(970626),f=a.r(820876),g=["trace","debug","info","warn","error","fatal"],h=Symbol.for("level"),i=Symbol.for("message"),j=Symbol.for("splat"),k={silly:"trace",debug:"debug",verbose:"debug",http:"debug",info:"info",notice:"info",warn:"warn",warning:"warn",error:"error",emerg:"fatal",alert:"fatal",crit:"fatal"};c.createSentryWinstonTransport=function(a,b){return class extends a{constructor(a){super(a),this._levels=new Set(b?.levels??g)}log(a,c){try{var g;if(setImmediate(()=>{this.emit("logged",a)}),g=a,"object"!=typeof g||null==g)return;let c=a[h],{level:l,message:m,timestamp:n,...o}=a;o[h]=void 0,o[i]=void 0,o[j]=void 0;let p=b?.customLevelMap?.[c],q=k[c],r=p??q??"info";this._levels.has(r)?f.captureLog(r,m,{...o,"sentry.origin":"auto.log.winston"}):p||q||!e.DEBUG_BUILD||d.debug.log(`Winston log level ${c} is not captured by Sentry. Please add ${c} to the "customLevelMap" option of the Sentry Winston transport.`)}catch{}c&&c()}}}},380448,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(677652),e=a.r(187845),f=Symbol("sentry-track-pino-logger");function g(a,b,c){let d=Object.getOwnPropertySymbols(a),e=`Symbol(${b})`;for(let b of d)if(b.toString()===e){let d=a[b];return"string"==typeof d?d:c}return c}let h={levels:[],handled:!0},i={levels:["trace","debug","info","warn","error","fatal"]};c.pinoIntegration=Object.assign(e.defineIntegration((a={})=>{let b={autoInstrument:!1!==a.autoInstrument,error:{...h,...a.error},log:{...i,...a.log}};return{name:"Pino",setup:a=>{let c=!!a.getOptions().enableLogs;d.tracingChannel("pino_asJson").end.subscribe(a=>{let{instance:d,arguments:h,result:i}=a;!function(a,d,h){let i;if("track"!==(i=a[f])&&("ignore"===i||!b.autoInstrument))return;let j=function(a){let{level:b,time:c,pid:d,hostname:e,...f}=a;return f}(h),[k,l,m]=d,n=a?.levels?.labels?.[m]||"info",o=g(a,"pino.messageKey","msg"),p=l||j?.[o]||"";if(c&&b.log.levels.includes(n)){let a={...j,"sentry.origin":"auto.log.pino","pino.logger.level":m};e._INTERNAL_captureLog({level:n,message:p,attributes:a})}if(b.error.levels.includes(n)){let c={level:e.severityLevelFromString(n)};e.withScope(d=>{d.addEventProcessor(a=>(a.logger="pino",e.addExceptionMechanism(a,{handled:b.error.handled,type:"auto.log.pino"}),a));let f=k[g(a,"pino.errorKey","err")];f?e.captureException(f,c):e.captureMessage(p,c)})}}(d,h,JSON.parse(i))})}}}),{trackLogger(a){a&&"object"==typeof a&&"levels"in a&&(a[f]="track")},untrackLogger(a){a&&"object"==typeof a&&"levels"in a&&(a[f]="ignore")}})},42517,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.addOriginToSpan=function(a,b){a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,b)}},726848,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getRequestUrl=function(a){let b=a.protocol||"",c=a.hostname||a.host||"",d=!a.port||80===a.port||443===a.port||/^(.*):(\d+)$/.test(c)?"":`:${a.port}`,e=a.path?a.path:"/";return`${b}//${c}${d}${e}`}},483623,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];c.replaceCronNames=function(a){return d.reduce((a,[b,c])=>a.replace(RegExp(b,"gi"),c),a)}},43501,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(483623),f="Automatic instrumentation of CronJob only supports crontab string";c.instrumentCron=function(a,b){let c=!1;return new Proxy(a,{construct(a,g){let[h,i,j,k,l,...m]=g;if("string"!=typeof h)throw Error(f);if(c)throw Error(`A job named '${b}' has already been scheduled`);c=!0;let n=e.replaceCronNames(h);return new a(h,async function(a,c){return d.withMonitor(b,async()=>{try{await i(a,c)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),a}},{schedule:{type:"crontab",value:n},timezone:l||void 0})},j,k,l,...m)},get:(a,g)=>"from"===g?g=>{let{cronTime:h,onTick:i,timeZone:j}=g;if("string"!=typeof h)throw Error(f);if(c)throw Error(`A job named '${b}' has already been scheduled`);c=!0;let k=e.replaceCronNames(h);return g.onTick=async(a,c)=>d.withMonitor(b,async()=>{try{await i(a,c)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.cron.instrumentCron"}}),a}},{schedule:{type:"crontab",value:k},timezone:j||void 0}),a.from(g)}:a[g]})}},573612,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(483623);c.instrumentNodeCron=function(a,b={}){return new Proxy(a,{get:(a,c)=>"schedule"===c&&a.schedule?new Proxy(a.schedule,{apply(a,c,f){let[g,h,i]=f,j=i?.name,k=i?.timezone;if(!j)throw Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');let l=async(...a)=>d.withMonitor(j,async()=>{try{return await h(...a)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.node-cron.instrumentNodeCron"}}),a}},{schedule:{type:"crontab",value:e.replaceCronNames(g)},timezone:k,...b});return a.apply(c,[g,l,i])}}):a[c]})}},353133,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(483623);c.instrumentNodeSchedule=function(a){return new Proxy(a,{get:(a,b)=>"scheduleJob"===b?new Proxy(a.scheduleJob,{apply(a,b,c){let[f,g,h]=c;if("string"!=typeof f||"string"!=typeof g||"function"!=typeof h)throw Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");async function i(){return d.withMonitor(f,async()=>{await h?.()},{schedule:{type:"crontab",value:e.replaceCronNames(g)}})}return a.apply(b,[f,g,i])}}):a[b]})}},980683,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(43501),e=a.r(573612),f=a.r(353133);c.cron={instrumentCron:d.instrumentCron,instrumentNodeCron:e.instrumentNodeCron,instrumentNodeSchedule:f.instrumentNodeSchedule}},309569,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(97209),e=a.r(427477),f=a.r(445138),g=a.r(800750),h=a.r(440222),i=a.r(778524),j=a.r(629823),k=a.r(601619),l=a.r(547783),m=a.r(533091),n=a.r(262955),o=a.r(647260),p=a.r(125677),q=a.r(173240),r=a.r(221598),s=a.r(874835),t=a.r(187845),u=a.r(218921),v=a.r(255980),w=a.r(975798),x=a.r(751233),y=a.r(881969),z=a.r(899800),A=a.r(548957),B=a.r(375821),C=a.r(930951),D=a.r(367287),E=a.r(741677),F=a.r(872360),G=a.r(380448),H=a.r(688113),I=a.r(97632),J=a.r(42517),K=a.r(726848),L=a.r(995166),M=a.r(769575),N=a.r(97827),O=a.r(667678),P=a.r(980683),Q=a.r(175262);c.httpIntegration=d.httpIntegration,c.httpServerSpansIntegration=e.httpServerSpansIntegration,c.httpServerIntegration=f.httpServerIntegration,c.SentryHttpInstrumentation=g.SentryHttpInstrumentation,c.nativeNodeFetchIntegration=h.nativeNodeFetchIntegration,c.SentryNodeFetchInstrumentation=i.SentryNodeFetchInstrumentation,c.SentryContextManager=j.SentryContextManager,c.setupOpenTelemetryLogger=k.setupOpenTelemetryLogger,c.INSTRUMENTED=l.INSTRUMENTED,c.generateInstrumentOnce=l.generateInstrumentOnce,c.instrumentWhenWrapped=l.instrumentWhenWrapped,c.getDefaultIntegrations=m.getDefaultIntegrations,c.init=m.init,c.initWithoutDefaultIntegrations=m.initWithoutDefaultIntegrations,c.validateOpenTelemetrySetup=m.validateOpenTelemetrySetup,c.setIsolationScope=n.setIsolationScope,c.NodeClient=o.NodeClient,c.ensureIsWrapped=p.ensureIsWrapped,c.processSessionIntegration=q.processSessionIntegration,c.setNodeAsyncContextStrategy=r.setOpenTelemetryContextAsyncContextStrategy,c.anrIntegration=s.anrIntegration,c.disableAnrDetectionForCallback=s.disableAnrDetectionForCallback,c.SDK_VERSION=t.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=t.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=t.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=t.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=t.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=t.Scope,c.addBreadcrumb=t.addBreadcrumb,c.addEventProcessor=t.addEventProcessor,c.addIntegration=t.addIntegration,c.captureCheckIn=t.captureCheckIn,c.captureConsoleIntegration=t.captureConsoleIntegration,c.captureEvent=t.captureEvent,c.captureException=t.captureException,c.captureFeedback=t.captureFeedback,c.captureMessage=t.captureMessage,c.captureSession=t.captureSession,c.close=t.close,c.consoleIntegration=t.consoleIntegration,c.consoleLoggingIntegration=t.consoleLoggingIntegration,c.continueTrace=t.continueTrace,c.createConsolaReporter=t.createConsolaReporter,c.createTransport=t.createTransport,c.dedupeIntegration=t.dedupeIntegration,c.endSession=t.endSession,c.envToBool=t.envToBool,c.eventFiltersIntegration=t.eventFiltersIntegration,c.extraErrorDataIntegration=t.extraErrorDataIntegration,c.featureFlagsIntegration=t.featureFlagsIntegration,c.flush=t.flush,c.functionToStringIntegration=t.functionToStringIntegration,c.getActiveSpan=t.getActiveSpan,c.getClient=t.getClient,c.getCurrentScope=t.getCurrentScope,c.getGlobalScope=t.getGlobalScope,c.getIsolationScope=t.getIsolationScope,c.getRootSpan=t.getRootSpan,c.getSpanDescendants=t.getSpanDescendants,c.getSpanStatusFromHttpCode=t.getSpanStatusFromHttpCode,c.getTraceData=t.getTraceData,c.getTraceMetaTags=t.getTraceMetaTags,c.inboundFiltersIntegration=t.inboundFiltersIntegration,c.instrumentSupabaseClient=t.instrumentSupabaseClient,c.isEnabled=t.isEnabled,c.isInitialized=t.isInitialized,c.lastEventId=t.lastEventId,c.linkedErrorsIntegration=t.linkedErrorsIntegration,c.metrics=t.metrics,c.parameterize=t.parameterize,c.profiler=t.profiler,c.requestDataIntegration=t.requestDataIntegration,c.rewriteFramesIntegration=t.rewriteFramesIntegration,c.setContext=t.setContext,c.setCurrentClient=t.setCurrentClient,c.setExtra=t.setExtra,c.setExtras=t.setExtras,c.setHttpStatus=t.setHttpStatus,c.setMeasurement=t.setMeasurement,c.setTag=t.setTag,c.setTags=t.setTags,c.setUser=t.setUser,c.spanToBaggageHeader=t.spanToBaggageHeader,c.spanToJSON=t.spanToJSON,c.spanToTraceHeader=t.spanToTraceHeader,c.startInactiveSpan=t.startInactiveSpan,c.startNewTrace=t.startNewTrace,c.startSession=t.startSession,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.supabaseIntegration=t.supabaseIntegration,c.suppressTracing=t.suppressTracing,c.trpcMiddleware=t.trpcMiddleware,c.updateSpanName=t.updateSpanName,c.withActiveSpan=t.withActiveSpan,c.withIsolationScope=t.withIsolationScope,c.withMonitor=t.withMonitor,c.withScope=t.withScope,c.wrapMcpServerWithSentry=t.wrapMcpServerWithSentry,c.zodErrorsIntegration=t.zodErrorsIntegration,c.logger=u,c.nodeContextIntegration=v.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=w.nodeRuntimeMetricsIntegration,c.contextLinesIntegration=x.contextLinesIntegration,c.localVariablesIntegration=y.localVariablesIntegration,c.modulesIntegration=z.modulesIntegration,c.onUncaughtExceptionIntegration=A.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=B.onUnhandledRejectionIntegration,c.spotlightIntegration=C.spotlightIntegration,c.systemErrorIntegration=D.systemErrorIntegration,c.childProcessIntegration=E.childProcessIntegration,c.createSentryWinstonTransport=F.createSentryWinstonTransport,c.pinoIntegration=G.pinoIntegration,c.defaultStackParser=H.defaultStackParser,c.getSentryRelease=H.getSentryRelease,c.createGetModuleFromFilename=I.createGetModuleFromFilename,c.addOriginToSpan=J.addOriginToSpan,c.getRequestUrl=K.getRequestUrl,c.initializeEsmLoader=L.initializeEsmLoader,c.isCjs=M.isCjs,c.createMissingInstrumentationContext=N.createMissingInstrumentationContext,c.makeNodeTransport=O.makeNodeTransport,c.cron=P.cron,c.NODE_VERSION=Q.NODE_VERSION},948678,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(944851),f=a.r(187845),g=a.r(309569),h="Http",i="@opentelemetry_sentry-patched/instrumentation-http",j=22===g.NODE_VERSION.major&&g.NODE_VERSION.minor>=12||23===g.NODE_VERSION.major&&g.NODE_VERSION.minor>=2||g.NODE_VERSION.major>=24,k=g.generateInstrumentOnce(`${h}.sentry`,a=>new g.SentryHttpInstrumentation(a)),l=g.generateInstrumentOnce(h,a=>{let b=new e.HttpInstrumentation({...a,disableIncomingRequestInstrumentation:!0});try{b._diag=d.diag.createComponentLogger({namespace:i}),b.instrumentationName=i}catch{}try{let a={get:()=>!1,set:()=>{}};Object.defineProperty(b,"_httpPatched",a),Object.defineProperty(b,"_httpsPatched",a)}catch{}return b});function m(a,b={}){return"boolean"==typeof a.spans?a.spans:!b.skipOpenTelemetrySetup&&(!!f.hasSpansEnabled(b)||!j)}let n=f.defineIntegration((a={})=>{let b=a.spans??!0,c=a.disableIncomingRequestSpans,d={sessions:a.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:a.sessionFlushingDelayMS,ignoreRequestBody:a.ignoreIncomingRequestBody,maxRequestBodySize:a.maxIncomingRequestBodySize},e={ignoreIncomingRequests:a.ignoreIncomingRequests,ignoreStaticAssets:a.ignoreStaticAssets,ignoreStatusCodes:a.dropSpansForIncomingRequestStatusCodes,instrumentation:a.instrumentation,onSpanCreated:a.incomingRequestSpanHook},i=g.httpServerIntegration(d),n=g.httpServerSpansIntegration(e),o=b&&!c;return{name:h,setup(a){let b=a.getOptions();o&&f.hasSpansEnabled(b)&&n.setup(a)},setupOnce(){let b=m(a,f.getClient()?.getOptions()||{});i.setupOnce(),k({breadcrumbs:a.breadcrumbs,propagateTraceInOutgoingRequests:"boolean"==typeof a.tracePropagation?a.tracePropagation:j||!b,createSpansForOutgoingRequests:j,spans:a.spans,ignoreOutgoingRequests:a.ignoreOutgoingRequests,outgoingRequestHook:(b,c)=>{let d=g.getRequestUrl(c);if(d.startsWith("data:")){let a=f.stripDataUrlContent(d);b.setAttribute("http.url",a),b.setAttribute(f.SEMANTIC_ATTRIBUTE_URL_FULL,a),b.updateName(`${c.method||"GET"} ${a}`)}a.instrumentation?.requestHook?.(b,c)},outgoingResponseHook:a.instrumentation?.responseHook,outgoingRequestApplyCustomAttributes:a.instrumentation?.applyCustomAttributesOnSpan}),b&&l(function(a={}){return{disableOutgoingRequestInstrumentation:j,ignoreOutgoingRequestHook:b=>{let c=g.getRequestUrl(b);if(!c)return!1;let d=a.ignoreOutgoingRequests;return!!d?.(c,b)},requireParentforOutgoingSpans:!1,requestHook:(b,c)=>{g.addOriginToSpan(b,"auto.http.otel.http");let d=g.getRequestUrl(c);if(d.startsWith("data:")){let a=f.stripDataUrlContent(d);b.setAttribute("http.url",a),b.setAttribute(f.SEMANTIC_ATTRIBUTE_URL_FULL,a),b.updateName(`${c.method||"GET"} ${a}`)}a.instrumentation?.requestHook?.(b,c)},responseHook:(b,c)=>{a.instrumentation?.responseHook?.(b,c)},applyCustomAttributesOnSpan:(b,c,d)=>{a.instrumentation?.applyCustomAttributesOnSpan?.(b,c,d)}}}(a))},processEvent:a=>n.processEvent(a)}});c._shouldUseOtelHttpInstrumentation=m,c.httpIntegration=n,c.instrumentOtelHttp=l,c.instrumentSentryHttp=k},955818,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.24.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-undici"},329133,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.UndiciInstrumentation=void 0;let d=a.r(154993),e=a.r(792509),f=a.r(167300),g=a.r(832528),h=a.r(498562),i=a.r(357122),j=a.r(955818);class k extends f.InstrumentationBase{_recordFromReq=new WeakMap;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a)}init(){}disable(){super.disable(),this._channelSubs.forEach(a=>a.unsubscribe()),this._channelSubs.length=0}enable(){super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0||(this.subscribeToChannel("undici:request:create",this.onRequestCreated.bind(this)),this.subscribeToChannel("undici:client:sendHeaders",this.onRequestHeaders.bind(this)),this.subscribeToChannel("undici:request:headers",this.onResponseHeaders.bind(this)),this.subscribeToChannel("undici:request:trailers",this.onDone.bind(this)),this.subscribeToChannel("undici:request:error",this.onError.bind(this)))}_updateMetricInstruments(){this._httpClientDurationHistogram=this.meter.createHistogram(i.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Measures the duration of outbound HTTP requests.",unit:"s",valueType:g.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10]}})}subscribeToChannel(a,b){let c,[e,f]=process.version.replace("v","").split(".").map(a=>Number(a));if(e>18||18===e&&f>=19)d.subscribe?.(a,b),c=()=>d.unsubscribe?.(a,b);else{let e=d.channel(a);e.subscribe(b),c=()=>e.unsubscribe(b)}this._channelSubs.push({name:a,unsubscribe:c})}parseRequestHeaders(a){let b=new Map;if(Array.isArray(a.headers))for(let c=0;c!j||"CONNECT"===a.method||d.ignoreRequestHook?.(a),a=>a&&this._diag.error("caught ignoreRequestHook error: ",a),!0))return;let k=(0,h.hrTime)();try{b=new e.URL(a.path,a.origin)}catch(a){this._diag.warn("could not determine url.full:",a);return}let l=b.protocol.replace(":",""),m=this.getRequestMethod(a.method),n={[i.ATTR_HTTP_REQUEST_METHOD]:m,[i.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]:a.method,[i.ATTR_URL_FULL]:b.toString(),[i.ATTR_URL_PATH]:b.pathname,[i.ATTR_URL_QUERY]:b.search,[i.ATTR_URL_SCHEME]:l},o=b.hostname,p=b.port||({https:"443",http:"80"})[l];n[i.ATTR_SERVER_ADDRESS]=o,p&&!isNaN(Number(p))&&(n[i.ATTR_SERVER_PORT]=Number(p));let q=this.parseRequestHeaders(a).get("user-agent");if(q){let a=Array.isArray(q)?q[q.length-1]:q;n[i.ATTR_USER_AGENT_ORIGINAL]=a}let r=(0,f.safeExecuteInTheMiddle)(()=>d.startSpanHook?.(a),a=>a&&this._diag.error("caught startSpanHook error: ",a),!0);r&&Object.entries(r).forEach(([a,b])=>{n[a]=b});let s=g.context.active(),t=g.trace.getSpan(s);c=!d.requireParentforSpans||t&&g.trace.isSpanContextValid(t.spanContext())?this.tracer.startSpan("_OTHER"===m?"HTTP":m,{kind:g.SpanKind.CLIENT,attributes:n},s):g.trace.wrapSpanContext(g.INVALID_SPAN_CONTEXT),(0,f.safeExecuteInTheMiddle)(()=>d.requestHook?.(c,a),a=>a&&this._diag.error("caught requestHook error: ",a),!0);let u=g.trace.setSpan(g.context.active(),c),v={};g.propagation.inject(u,v);let w=Object.entries(v);for(let b=0;ba.toLowerCase()));for(let[c,d]of this.parseRequestHeaders(a).entries())if(b.has(c)){let a=Array.isArray(d)?d:[d];h[`http.request.header.${c}`]=a}}e.setAttributes(h)}onResponseHeaders({request:a,response:b}){let c=this._recordFromReq.get(a);if(!c)return;let{span:d,attributes:e}=c,h={[i.ATTR_HTTP_RESPONSE_STATUS_CODE]:b.statusCode},j=this.getConfig();if((0,f.safeExecuteInTheMiddle)(()=>j.responseHook?.(d,{request:a,response:b}),a=>a&&this._diag.error("caught responseHook error: ",a),!0),j.headersToSpanAttributes?.responseHeaders){let a=new Set;j.headersToSpanAttributes?.responseHeaders.forEach(b=>a.add(b.toLowerCase()));for(let c=0;c=400?g.SpanStatusCode.ERROR:g.SpanStatusCode.UNSET}),c.attributes=Object.assign(e,h)}onDone({request:a}){let b=this._recordFromReq.get(a);if(!b)return;let{span:c,attributes:d,startTime:e}=b;c.end(),this._recordFromReq.delete(a),this.recordRequestDuration(d,e)}onError({request:a,error:b}){let c=this._recordFromReq.get(a);if(!c)return;let{span:d,attributes:e,startTime:f}=c;d.recordException(b),d.setStatus({code:g.SpanStatusCode.ERROR,message:b.message}),d.end(),this._recordFromReq.delete(a),e[i.ATTR_ERROR_TYPE]=b.message,this.recordRequestDuration(e,f)}recordRequestDuration(a,b){let c={};[i.ATTR_HTTP_RESPONSE_STATUS_CODE,i.ATTR_HTTP_REQUEST_METHOD,i.ATTR_SERVER_ADDRESS,i.ATTR_SERVER_PORT,i.ATTR_URL_SCHEME,i.ATTR_ERROR_TYPE].forEach(b=>{b in a&&(c[b]=a[b])});let d=(0,h.hrTimeToMilliseconds)((0,h.hrTimeDuration)(b,(0,h.hrTime)()))/1e3;this._httpClientDurationHistogram.record(d,c)}getRequestMethod(a){return a.toUpperCase()in{CONNECT:!0,OPTIONS:!0,HEAD:!0,GET:!0,POST:!0,PUT:!0,PATCH:!0,DELETE:!0,TRACE:!0,QUERY:!0}?a.toUpperCase():"_OTHER"}}c.UndiciInstrumentation=k},47523,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.UndiciInstrumentation=void 0;var d=a.r(329133);Object.defineProperty(c,"UndiciInstrumentation",{enumerable:!0,get:function(){return d.UndiciInstrumentation}})},412292,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(47523),e=a.r(187845),f=a.r(309569),g="NodeFetch",h=f.generateInstrumentOnce(g,d.UndiciInstrumentation,a=>l(a)),i=f.generateInstrumentOnce(`${g}.sentry`,f.SentryNodeFetchInstrumentation,a=>a),j=e.defineIntegration((a={})=>({name:"NodeFetch",setupOnce(){(function(a,b={}){return"boolean"==typeof a.spans?a.spans:!b.skipOpenTelemetrySetup&&e.hasSpansEnabled(b)})(a,e.getClient()?.getOptions())&&h(a),i(a)}}));function k(a,b="/"){let c=`${a}`;return c.endsWith("/")&&b.startsWith("/")?`${c}${b.slice(1)}`:c.endsWith("/")||b.startsWith("/")?`${c}${b}`:`${c}/${b}`}function l(a={}){return{requireParentforSpans:!1,ignoreRequestHook:b=>{let c=k(b.origin,b.path),d=a.ignoreOutgoingRequests;return!!(d&&c&&d(c))},startSpanHook:a=>{let b=k(a.origin,a.path);if(b.startsWith("data:")){let c=e.stripDataUrlContent(b);return{[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch","http.url":c,[e.SEMANTIC_ATTRIBUTE_URL_FULL]:c,[e.SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]:`${a.method||"GET"} ${c}`}}return{[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.node_fetch"}},requestHook:a.requestHook,responseHook:a.responseHook,headersToSpanAttributes:a.headersToSpanAttributes}}c._getConfigWithDefaults=l,c.nativeNodeFetchIntegration=j},565954,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-fs"},563036,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SYNC_FUNCTIONS=c.CALLBACK_FUNCTIONS=c.PROMISE_FUNCTIONS=void 0,c.PROMISE_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],c.CALLBACK_FUNCTIONS=["access","appendFile","chmod","chown","copyFile","cp","exists","lchown","link","lstat","lutimes","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rename","rm","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"],c.SYNC_FUNCTIONS=["accessSync","appendFileSync","chmodSync","chownSync","copyFileSync","cpSync","existsSync","lchownSync","linkSync","lstatSync","lutimesSync","mkdirSync","mkdtempSync","opendirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","renameSync","rmdirSync","rmSync","statSync","symlinkSync","truncateSync","unlinkSync","utimesSync","writeFileSync"]},932593,(a,b,c)=>{"use strict";function d(a){let b=a.split(".");if(!(b.length>1))return[a];if(2!==b.length)throw Error(`Invalid member function name ${a}`);return b}Object.defineProperty(c,"__esModule",{value:!0}),c.indexFs=c.splitTwoLevels=void 0,c.splitTwoLevels=d,c.indexFs=function(a,b){if(!b)throw Error(JSON.stringify({member:b}));let[c,e]=d(b);return e?{objectToPatch:a[c],functionNameToPatch:e}:{objectToPatch:a,functionNameToPatch:c}}},9856,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.FsInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(565954),h=a.r(563036),i=a.r(224361),j=a.r(932593);function k(a,b){return Object.assign(a,b)}class l extends f.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new f.InstrumentationNodeModuleDefinition("fs",["*"],a=>{for(let b of h.SYNC_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d),this._wrap(c,d,this._patchSyncFunction.bind(this,b))}for(let b of h.CALLBACK_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);if((0,f.isWrapped)(c[d])&&this._unwrap(c,d),"exists"===b){this._wrap(c,d,this._patchExistsCallbackFunction.bind(this,b));continue}this._wrap(c,d,this._patchCallbackFunction.bind(this,b))}for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a.promises[b])&&this._unwrap(a.promises,b),this._wrap(a.promises,b,this._patchPromiseFunction.bind(this,b));return a},a=>{if(void 0!==a){for(let b of h.SYNC_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d)}for(let b of h.CALLBACK_FUNCTIONS){let{objectToPatch:c,functionNameToPatch:d}=(0,j.indexFs)(a,b);(0,f.isWrapped)(c[d])&&this._unwrap(c,d)}for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a.promises[b])&&this._unwrap(a.promises,b)}}),new f.InstrumentationNodeModuleDefinition("fs/promises",["*"],a=>{for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,this._patchPromiseFunction.bind(this,b));return a},a=>{if(void 0!==a)for(let b of h.PROMISE_FUNCTIONS)(0,f.isWrapped)(a[b])&&this._unwrap(a,b)})]}_patchSyncFunction(a,b){let c=this;return k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=c.tracer.startSpan(`fs ${a}`);try{let i=d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,h)),b,this,...f);return c._runEndHook(a,{args:f,span:h}),i}catch(b){throw h.recordException(b),h.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:h,error:b}),b}finally{h.end()}},b)}_patchCallbackFunction(a,b){let c=this;return k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=f.length-1,i=f[h];if("function"!=typeof i)return b.apply(this,f);{let j=c.tracer.startSpan(`fs ${a}`);f[h]=d.context.bind(g,function(b){return b&&(j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR})),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),i.apply(this,arguments)});try{return d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,j)),b,this,...f)}catch(b){throw j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),b}}},b)}_patchExistsCallbackFunction(a,b){let c=this,f=k(function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=f.length-1,i=f[h];if("function"!=typeof i)return b.apply(this,f);{let j=c.tracer.startSpan(`fs ${a}`);f[h]=d.context.bind(g,function(){return c._runEndHook(a,{args:f,span:j}),j.end(),i.apply(this,arguments)});try{return d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,j)),b,this,...f)}catch(b){throw j.recordException(b),j.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:j,error:b}),j.end(),b}}},b),g=function(a){return new Promise(b=>f(a,b))};return Object.defineProperty(g,"name",{value:a}),Object.defineProperty(f,i.promisify.custom,{value:g}),f}_patchPromiseFunction(a,b){let c=this;return k(async function(...f){let g=d.context.active();if(!c._shouldTrace(g))return b.apply(this,f);if(!1===c._runCreateHook(a,{args:f}))return d.context.with((0,e.suppressTracing)(g),b,this,...f);let h=c.tracer.startSpan(`fs ${a}`);try{let i=await d.context.with((0,e.suppressTracing)(d.trace.setSpan(g,h)),b,this,...f);return c._runEndHook(a,{args:f,span:h}),i}catch(b){throw h.recordException(b),h.setStatus({message:b.message,code:d.SpanStatusCode.ERROR}),c._runEndHook(a,{args:f,span:h,error:b}),b}finally{h.end()}},b)}_runCreateHook(...a){let{createHook:b}=this.getConfig();if("function"==typeof b)try{return b(...a)}catch(a){this._diag.error("caught createHook error",a)}return!0}_runEndHook(...a){let{endHook:b}=this.getConfig();if("function"==typeof b)try{b(...a)}catch(a){this._diag.error("caught endHook error",a)}}_shouldTrace(a){if((0,e.isTracingSuppressed)(a))return!1;let{requireParentSpan:b}=this.getConfig();return(!b||null!=d.trace.getSpan(a))&&!0}}c.FsInstrumentation=l},784987,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.FsInstrumentation=void 0;var d=a.r(9856);Object.defineProperty(c,"FsInstrumentation",{enumerable:!0,get:function(){return d.FsInstrumentation}})},56551,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(784987),e=a.r(187845),f=a.r(309569),g="FileSystem",h=e.defineIntegration((a={})=>({name:g,setupOnce(){f.generateInstrumentOnce(g,()=>new d.FsInstrumentation({requireParentSpan:!0,endHook(b,{args:c,span:d,error:f}){d.updateName(`fs.${b}`),d.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"file",[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.file.fs"}),a.recordErrorMessagesAsSpanAttributes&&("string"==typeof c[0]&&n.includes(b)?d.setAttribute("path_argument",c[0]):"string"==typeof c[0]&&"string"==typeof c[1]&&m.includes(b)?(d.setAttribute("target_argument",c[0]),d.setAttribute("path_argument",c[1])):"string"==typeof c[0]&&l.includes(b)?d.setAttribute("prefix_argument",c[0]):"string"==typeof c[0]&&"string"==typeof c[1]&&k.includes(b)?(d.setAttribute("existing_path_argument",c[0]),d.setAttribute("new_path_argument",c[1])):"string"==typeof c[0]&&"string"==typeof c[1]&&j.includes(b)?(d.setAttribute("src_argument",c[0]),d.setAttribute("dest_argument",c[1])):"string"==typeof c[0]&&"string"==typeof c[1]&&i.includes(b)&&(d.setAttribute("old_path_argument",c[0]),d.setAttribute("new_path_argument",c[1]))),f&&a.recordErrorMessagesAsSpanAttributes&&d.setAttribute("fs_error",f.message)}}))()}})),i=["rename","renameSync"],j=["copyFile","cp","copyFileSync","cpSync"],k=["link","linkSync"],l=["mkdtemp","mkdtempSync"],m=["symlink","symlinkSync"],n=["access","appendFile","chmod","chown","exists","mkdir","lchown","lstat","lutimes","open","opendir","readdir","readFile","readlink","realpath","realpath.native","rm","rmdir","stat","truncate","unlink","utimes","writeFile","accessSync","appendFileSync","chmodSync","chownSync","existsSync","lchownSync","lstatSync","lutimesSync","opendirSync","mkdirSync","openSync","readdirSync","readFileSync","readlinkSync","realpathSync","realpathSync.native","rmdirSync","rmSync","statSync","truncateSync","unlinkSync","utimesSync","writeFileSync"];c.fsIntegration=h},19293,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.ExpressLayerType=void 0,(d=c.ExpressLayerType||(c.ExpressLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware",d.REQUEST_HANDLER="request_handler"},852025,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).EXPRESS_TYPE="express.type",d.EXPRESS_NAME="express.name"},434300,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=c.kLayerPatched=void 0,c.kLayerPatched=Symbol("express-layer-patched"),c._LAYERS_STORE_PROPERTY="__ot_middlewares"},962983,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getActualMatchedRoute=c.getConstructedRoute=c.getLayerPath=c.asErrorAndMessage=c.isLayerIgnored=c.getLayerMetadata=c.getRouterPath=c.storeLayerPath=void 0;let d=a.r(19293),e=a.r(852025),f=a.r(434300);c.storeLayerPath=(a,b)=>(!1===Array.isArray(a[f._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,f._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),void 0===b)?{isLayerPathStored:!1}:(a[f._LAYERS_STORE_PROPERTY].push(b),{isLayerPathStored:!0}),c.getRouterPath=(a,b)=>{let d=b.handle?.stack?.[0];return d?.route?.path?`${a}${d.route.path}`:d?.handle?.stack?(0,c.getRouterPath)(a,d):a},c.getLayerMetadata=(a,b,f)=>{if("router"===b.name){let g=(0,c.getRouterPath)("",b)||f||a||"/";return{attributes:{[e.AttributeNames.EXPRESS_NAME]:g,[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.ROUTER},name:`router - ${g}`}}return"bound dispatch"===b.name||"handle"===b.name?{attributes:{[e.AttributeNames.EXPRESS_NAME]:(a||f)??"request handler",[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.REQUEST_HANDLER},name:`request handler${b.path?` - ${a||f}`:""}`}:{attributes:{[e.AttributeNames.EXPRESS_NAME]:b.name,[e.AttributeNames.EXPRESS_TYPE]:d.ExpressLayerType.MIDDLEWARE},name:`middleware - ${b.name}`}};let g=(a,b)=>{if("string"==typeof b)return b===a;if(b instanceof RegExp)return b.test(a);if("function"==typeof b)return b(a);throw TypeError("Pattern is in unsupported datatype")};c.isLayerIgnored=(a,b,c)=>{if(Array.isArray(c?.ignoreLayersType)&&c?.ignoreLayersType?.includes(b))return!0;if(!1===Array.isArray(c?.ignoreLayers))return!1;try{for(let b of c.ignoreLayers)if(g(a,b))return!0}catch(a){}return!1},c.asErrorAndMessage=a=>a instanceof Error?[a,a.message]:[String(a),String(a)],c.getLayerPath=a=>{let b=a[0];return Array.isArray(b)?b.map(a=>h(a)||"").join(","):h(b)};let h=a=>"string"==typeof a?a:a instanceof RegExp||"number"==typeof a?a.toString():void 0;function i(a){let b=(Array.isArray(a[f._LAYERS_STORE_PROPERTY])?a[f._LAYERS_STORE_PROPERTY]:[]).filter(a=>"/"!==a&&"/*"!==a);return 1===b.length&&"*"===b[0]?"*":b.join("").replace(/\/{2,}/g,"/")}c.getConstructedRoute=i,c.getActualMatchedRoute=function(a){var b;let c=Array.isArray(a[f._LAYERS_STORE_PROPERTY])?a[f._LAYERS_STORE_PROPERTY]:[];if(0===c.length)return;if(c.every(a=>"/"===a))return"/"===a.originalUrl?"/":void 0;let d=i(a);if("*"===d||d.includes("/")&&(d.includes(",")||d.includes("\\")||d.includes("*")||d.includes("[")))return d;let e=d.startsWith("/")?d:`/${d}`;return e.length>0&&(a.originalUrl===e||a.originalUrl.startsWith(e)||(b=e).includes(":")||b.includes("*"))?e:void 0}},219306,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-express"},995882,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ExpressInstrumentation=void 0;let d=a.r(498562),e=a.r(832528),f=a.r(19293),g=a.r(852025),h=a.r(962983),i=a.r(219306),j=a.r(167300),k=a.r(357122),l=a.r(434300);class m extends j.InstrumentationBase{constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a)}init(){return[new j.InstrumentationNodeModuleDefinition("express",[">=4.0.0 <6"],a=>{let b="function"==typeof a?.Router?.prototype?.route,c=b?a.Router.prototype:a.Router;return(0,j.isWrapped)(c.route)&&this._unwrap(c,"route"),this._wrap(c,"route",this._getRoutePatch()),(0,j.isWrapped)(c.use)&&this._unwrap(c,"use"),this._wrap(c,"use",this._getRouterUsePatch()),(0,j.isWrapped)(a.application.use)&&this._unwrap(a.application,"use"),this._wrap(a.application,"use",this._getAppUsePatch(b)),a},a=>{if(void 0===a)return;let b="function"==typeof a?.Router?.prototype?.route?a.Router.prototype:a.Router;this._unwrap(b,"route"),this._unwrap(b,"use"),this._unwrap(a.application,"use")})]}_getRoutePatch(){let a=this;return function(b){return function(...c){let d=b.apply(this,c),e=this.stack[this.stack.length-1];return a._applyPatch(e,(0,h.getLayerPath)(c)),d}}}_getRouterUsePatch(){let a=this;return function(b){return function(...c){let d=b.apply(this,c),e=this.stack[this.stack.length-1];return a._applyPatch(e,(0,h.getLayerPath)(c)),d}}}_getAppUsePatch(a){let b=this;return function(c){return function(...d){let e=a?this.router:this._router,f=c.apply(this,d);if(e){let a=e.stack[e.stack.length-1];b._applyPatch(a,(0,h.getLayerPath)(d))}return f}}}_applyPatch(a,b){let c=this;!0!==a[l.kLayerPatched]&&(a[l.kLayerPatched]=!0,this._wrap(a,"handle",i=>{if(4===i.length)return i;let m=function(m,n){let{isLayerPathStored:o}=(0,h.storeLayerPath)(m,b),p=(0,h.getConstructedRoute)(m),q=(0,h.getActualMatchedRoute)(m),r={[k.ATTR_HTTP_ROUTE]:q},s=(0,h.getLayerMetadata)(p,a,b),t=s.attributes[g.AttributeNames.EXPRESS_TYPE],u=(0,d.getRPCMetadata)(e.context.active());if(u?.type===d.RPCType.HTTP&&(u.route=q),(0,h.isLayerIgnored)(s.name,t,c.getConfig()))return t===f.ExpressLayerType.MIDDLEWARE&&m[l._LAYERS_STORE_PROPERTY].pop(),i.apply(this,arguments);if(void 0===e.trace.getSpan(e.context.active()))return i.apply(this,arguments);let v=c._getSpanName({request:m,layerType:t,route:p},s.name),w=c.tracer.startSpan(v,{attributes:Object.assign(r,s.attributes)}),x=e.context.active(),y=e.trace.setSpan(x,w),{requestHook:z}=c.getConfig();z&&(0,j.safeExecuteInTheMiddle)(()=>z(w,{request:m,layerType:t,route:p}),a=>{a&&e.diag.error("express instrumentation: request hook failed",a)},!0);let A=!1;s.attributes[g.AttributeNames.EXPRESS_TYPE]===f.ExpressLayerType.ROUTER&&(w.end(),A=!0,y=x);let B=()=>{!1===A&&(A=!0,w.end())},C=Array.from(arguments),D=C.findIndex(a=>"function"==typeof a);D>=0&&(arguments[D]=function(){let a=arguments[0],b=![void 0,null,"route","router"].includes(a);if(!A&&b){let[b,c]=(0,h.asErrorAndMessage)(a);w.recordException(b),w.setStatus({code:e.SpanStatusCode.ERROR,message:c})}!1===A&&(A=!0,m.res?.removeListener("finish",B),w.end()),!(m.route&&b)&&o&&m[l._LAYERS_STORE_PROPERTY].pop();let c=C[D],d=e.context.active(),f=e.trace.getSpan(x),g=f?e.trace.setSpan(d,f):d;return e.context.bind(g,c).apply(this,arguments)});try{return e.context.bind(y,i).apply(this,arguments)}catch(c){let[a,b]=(0,h.asErrorAndMessage)(c);throw w.recordException(a),w.setStatus({code:e.SpanStatusCode.ERROR,message:b}),c}finally{A||n.once("finish",B)}};for(let a in i)Object.defineProperty(m,a,{get:()=>i[a],set(b){i[a]=b}});return m}))}_getSpanName(a,b){let{spanNameHook:c}=this.getConfig();if(!(c instanceof Function))return b;try{return c(a,b)??b}catch(a){return e.diag.error("express instrumentation: error calling span name rewrite hook",a),b}}}c.ExpressInstrumentation=m},584767,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.ExpressLayerType=c.ExpressInstrumentation=void 0;var d=a.r(995882);Object.defineProperty(c,"ExpressInstrumentation",{enumerable:!0,get:function(){return d.ExpressInstrumentation}});var e=a.r(19293);Object.defineProperty(c,"ExpressLayerType",{enumerable:!0,get:function(){return e.ExpressLayerType}});var f=a.r(852025);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return f.AttributeNames}})},852223,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(584767),e=a.r(187845),f=a.r(309569),g=a.r(852223),h="Express",i=f.generateInstrumentOnce(h,()=>new d.ExpressInstrumentation({requestHook:a=>{let b,c,d;return f.addOriginToSpan(a,"auto.http.otel.express"),(c=(b=e.spanToJSON(a).data)["express.type"])&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${c}.express`),void("string"==typeof(d=b["express.name"])&&a.updateName(d))},spanNameHook:(a,b)=>(function(a,b){if(e.getIsolationScope()===e.getDefaultIsolationScope())return g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still default isolation scope - skipping setting transactionName"),b;if("request_handler"===a.layerType){let b=a.request,c=b.method?b.method.toUpperCase():"GET";e.getIsolationScope().setTransactionName(`${c} ${a.route}`)}return b})(a,b)})),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}}));function k(a){return function(b,c,d,f){let g=e.httpRequestToRequestData(c);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g}),(a?.shouldHandleError||function(a){let b;return((b=a.status||a.statusCode||a.status_code||a.output?.statusCode)?parseInt(b,10):500)>=500})(b)&&(d.sentry=e.captureException(b,{mechanism:{type:"auto.middleware.express",handled:!1}})),f(b)}}c.expressErrorHandler=k,c.expressIntegration=j,c.instrumentExpress=i,c.setupExpressErrorHandler=function(a,b){a.use(function(a,b,c){let d=e.httpRequestToRequestData(a);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:d}),c()}),a.use(k(b)),f.ensureIsWrapped(a.use,"express")}},535049,a=>{"use strict";a.s([],373438),a.i(373438);var b,c,d=a.i(236471),e=a.i(231261);let f=Symbol.for("io.opentelemetry.js.api.logs"),g=globalThis;class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return g[f]?this.getLoggerProvider():(g[f]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=g[f])?void 0:a.call(g,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete g[f],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(984414);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(await b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(b=>b.name===g&&af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!0},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{files;name;supportedVersions;patch;unpatch;constructor(a,b,c,d,e){this.files=e||[],this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d}}class ah{name;supportedVersions;patch;unpatch;constructor(a,b,c,d){this.name=(0,p.normalize)(a),this.supportedVersions=b,this.patch=c,this.unpatch=d}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],535049)},69464,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.range=c.balanced=void 0,c.balanced=(a,b,e)=>{let f=a instanceof RegExp?d(a,e):a,g=b instanceof RegExp?d(b,e):b,h=null!==f&&null!=g&&(0,c.range)(f,g,e);return h&&{start:h[0],end:h[1],pre:e.slice(0,h[0]),body:e.slice(h[0]+f.length,h[1]),post:e.slice(h[1]+g.length)}};let d=(a,b)=>{let c=b.match(a);return c?c[0]:null};c.range=(a,b,c)=>{let d,e,f,g,h,i=c.indexOf(a),j=c.indexOf(b,i+1),k=i;if(i>=0&&j>0){if(a===b)return[i,j];for(d=[],f=c.length;k>=0&&!h;){if(k===i)d.push(k),i=c.indexOf(a,k+1);else if(1===d.length){let a=d.pop();void 0!==a&&(h=[a,j])}else void 0!==(e=d.pop())&&e=0?i:j}d.length&&void 0!==g&&(h=[f,g])}return h}},53509,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EXPANSION_MAX=void 0,c.expand=function(a,b={}){if(!a)return[];let{max:j=c.EXPANSION_MAX}=b;return"{}"===a.slice(0,2)&&(a="\\{\\}"+a.slice(2)),(function a(b,c,e){let f=[],h=(0,d.balanced)("{","}",b);if(!h)return[b];let i=h.pre,j=h.post.length?a(h.post,c,!1):[""];if(/\$$/.test(h.pre))for(let a=0;a=0;if(!o&&!p)return h.post.match(/,(?!,).*\}/)?a(b=h.pre+"{"+h.body+g+h.post,c,!0):[b];if(o)k=h.body.split(/\.\./);else if(1===(k=function a(b){if(!b)return[""];let c=[],e=(0,d.balanced)("{","}",b);if(!e)return b.split(",");let{pre:f,body:g,post:h}=e,i=f.split(",");i[i.length-1]+="{"+g+"}";let j=a(h);return h.length&&(i[i.length-1]+=j.shift(),i.push.apply(i,j)),c.push.apply(c,i),c}(h.body)).length&&void 0!==k[0]&&1===(k=a(k[0],c,!1).map(v)).length)return j.map(a=>h.pre+k[0]+a);if(o&&void 0!==k[0]&&void 0!==k[1]){let a=t(k[0]),b=t(k[1]),c=Math.max(k[0].length,k[1].length),d=3===k.length&&void 0!==k[2]?Math.max(Math.abs(t(k[2])),1):1,e=x;b0){let c=Array(b+1).join("0");a=g<0?"-"+c+a.slice(1):c+a}}l.push(a)}}else{l=[];for(let b=0;b=b}c.EXPANSION_MAX=1e5},244900,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.assertValidPattern=void 0,c.assertValidPattern=a=>{if("string"!=typeof a)throw TypeError("invalid pattern");if(a.length>65536)throw TypeError("pattern is too long")}},126118,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.parseClass=void 0;let d={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},e=a=>a.replace(/[[\]\\-]/g,"\\$&");c.parseClass=(a,b)=>{if("["!==a.charAt(b))throw Error("not in a brace expression");let c=[],f=[],g=b+1,h=!1,i=!1,j=!1,k=!1,l=b,m="";a:for(;gm?c.push(e(m)+"-"+e(n)):n===m&&c.push(e(n)),m="",g++;continue}if(a.startsWith("-]",g+1)){c.push(e(n+"-")),g+=2;continue}if(a.startsWith("-",g+1)){m=n,g+=2;continue}c.push(e(n)),g++}if(l{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.unescape=void 0,c.unescape=(a,{windowsPathsNoEscape:b=!1,magicalBraces:c=!0}={})=>c?b?a.replace(/\[([^/\\])\]/g,"$1"):a.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):b?a.replace(/\[([^/\\{}])\]/g,"$1"):a.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1")},86329,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AST=void 0;let e=a.r(126118),f=a.r(961730),g=new Set(["!","?","+","*","@"]),h=a=>g.has(a),i=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),j=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),k=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),l=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),m="(?!\\.)",n=new Set(["[","."]),o=new Set(["..","."]),p=new Set("().*{}+?[]^$\\!"),q=a=>a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),r="[^/]",s=r+"*?",t=r+"+?",u=0;class v{type;#a;#b;#c=!1;#d=[];#e;#f;#g;#h=!1;#i;#j;#k=!1;id=++u;get depth(){return(this.#e?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#a.id,parent:this.#e?.id,depth:this.depth,partsLength:this.#d.length,parts:this.#d}}constructor(a,b,c={}){this.type=a,a&&(this.#b=!0),this.#e=b,this.#a=this.#e?this.#e.#a:this,this.#i=this.#a===this?c:this.#a.#i,this.#g=this.#a===this?[]:this.#a.#g,"!"!==a||this.#a.#h||this.#g.push(this),this.#f=this.#e?this.#e.#d.length:0}get hasMagic(){if(void 0!==this.#b)return this.#b;for(let a of this.#d)if("string"!=typeof a&&(a.type||a.hasMagic))return this.#b=!0;return this.#b}toString(){return void 0!==this.#j?this.#j:this.type?this.#j=this.type+"("+this.#d.map(a=>String(a)).join("|")+")":this.#j=this.#d.map(a=>String(a)).join("")}#l(){let a;if(this!==this.#a)throw Error("should only call on root");if(this.#h)return this;for(this.toString(),this.#h=!0;a=this.#g.pop();){if("!"!==a.type)continue;let b=a,c=b.#e;for(;c;){for(let d=b.#f+1;!c.type&&d"string"==typeof a?a:a.toJSON()):[this.type,...this.#d.map(a=>a.toJSON())];return this.isStart()&&!this.type&&a.unshift([]),this.isEnd()&&(this===this.#a||this.#a.#h&&this.#e?.type==="!")&&a.push({}),a}isStart(){if(this.#a===this)return!0;if(!this.#e?.isStart())return!1;if(0===this.#f)return!0;let a=this.#e;for(let b=0;b"string"!=typeof a),e=this.#d.map(b=>{let[e,f,g,h]="string"==typeof b?d.#w(b,this.#b,c):b.toRegExpSource(a);return this.#b=this.#b||g,this.#c=this.#c||h,e}).join(""),g="";if(this.isStart()&&"string"==typeof this.#d[0]&&!(1===this.#d.length&&o.has(this.#d[0]))){let c=b&&n.has(e.charAt(0))||e.startsWith("\\.")&&n.has(e.charAt(2))||e.startsWith("\\.\\.")&&n.has(e.charAt(4)),d=!b&&!a&&n.has(e.charAt(0));g=c?"(?!(?:^|/)\\.\\.?(?:$|/))":d?m:""}let h="";return this.isEnd()&&this.#a.#h&&this.#e?.type==="!"&&(h="(?:$|\\/)"),[g+e+h,(0,f.unescape)(e),this.#b=!!this.#b,this.#c]}let c="*"===this.type||"+"===this.type,e="!"===this.type?"(?:(?!(?:":"(?:",g=this.#x(b);if(this.isStart()&&this.isEnd()&&!g&&"!"!==this.type){let a=this.toString();return this.#d=[a],this.type=null,this.#b=void 0,[a,(0,f.unescape)(this.toString()),!1,!1]}let i=!c||a||b||!m?"":this.#x(!0);i===g&&(i=""),i&&(g=`(?:${g})(?:${i})*?`);return["!"===this.type&&this.#k?(this.isStart()&&!b?m:"")+t:e+g+("!"===this.type?"))"+(!this.isStart()||b||a?"":m)+s+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":`)${this.type}`),(0,f.unescape)(g),this.#b=!!this.#b,this.#c]}#v(){if(h(this.type)){let a=0,b=!1;do{b=!0;for(let a=0;a{if("string"==typeof b)throw Error("string type in extglob ast??");let[c,d,e,f]=b.toRegExpSource(a);return this.#c=this.#c||f,c}).filter(a=>!(this.isStart()&&this.isEnd())||!!a).join("|")}static #w(a,b,c=!1){let d=!1,g="",h=!1,i=!1;for(let f=0;f{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.escape=void 0,c.escape=(a,{windowsPathsNoEscape:b=!1,magicalBraces:c=!1}={})=>c?b?a.replace(/[?*()[\]{}]/g,"[$&]"):a.replace(/[?*()[\]\\{}]/g,"\\$&"):b?a.replace(/[?*()[\]]/g,"[$&]"):a.replace(/[?*()[\]\\]/g,"\\$&")},179388,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.unescape=c.escape=c.AST=c.Minimatch=c.match=c.makeRe=c.braceExpand=c.defaults=c.filter=c.GLOBSTAR=c.sep=c.minimatch=void 0;let d=a.r(53509),e=a.r(244900),f=a.r(86329),g=a.r(620843),h=a.r(961730);c.minimatch=(a,b,c={})=>((0,e.assertValidPattern)(b),(!!c.nocomment||"#"!==b.charAt(0))&&new x(b,c).match(a));let i=/^\*+([^+@!?*[(]*)$/,j=/^\*+\.\*+$/,k=a=>!a.startsWith(".")&&a.includes("."),l=a=>"."!==a&&".."!==a&&a.includes("."),m=/^\.\*+$/,n=a=>"."!==a&&".."!==a&&a.startsWith("."),o=/^\*+$/,p=a=>0!==a.length&&!a.startsWith("."),q=a=>0!==a.length&&"."!==a&&".."!==a,r=/^\?+([^+@!?*[(]*)?$/,s=([a])=>{let b=a.length;return a=>a.length===b&&!a.startsWith(".")},t=([a])=>{let b=a.length;return a=>a.length===b&&"."!==a&&".."!==a},u="object"==typeof process&&process?"object"==typeof process.env&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";c.sep="win32"===u?"\\":"/",c.minimatch.sep=c.sep,c.GLOBSTAR=Symbol("globstar **"),c.minimatch.GLOBSTAR=c.GLOBSTAR;c.filter=(a,b={})=>d=>(0,c.minimatch)(d,a,b),c.minimatch.filter=c.filter;let v=(a,b={})=>Object.assign({},a,b);c.defaults=a=>{if(!a||"object"!=typeof a||!Object.keys(a).length)return c.minimatch;let b=c.minimatch;return Object.assign((c,d,e={})=>b(c,d,v(a,e)),{Minimatch:class extends b.Minimatch{constructor(b,c={}){super(b,v(a,c))}static defaults(c){return b.defaults(v(a,c)).Minimatch}},AST:class extends b.AST{constructor(b,c,d={}){super(b,c,v(a,d))}static fromGlob(c,d={}){return b.AST.fromGlob(c,v(a,d))}},unescape:(c,d={})=>b.unescape(c,v(a,d)),escape:(c,d={})=>b.escape(c,v(a,d)),filter:(c,d={})=>b.filter(c,v(a,d)),defaults:c=>b.defaults(v(a,c)),makeRe:(c,d={})=>b.makeRe(c,v(a,d)),braceExpand:(c,d={})=>b.braceExpand(c,v(a,d)),match:(c,d,e={})=>b.match(c,d,v(a,e)),sep:b.sep,GLOBSTAR:c.GLOBSTAR})},c.minimatch.defaults=c.defaults,c.braceExpand=(a,b={})=>((0,e.assertValidPattern)(a),b.nobrace||!/\{(?:(?!\{).)*\}/.test(a))?[a]:(0,d.expand)(a,{max:b.braceExpandMax}),c.minimatch.braceExpand=c.braceExpand,c.makeRe=(a,b={})=>new x(a,b).makeRe(),c.minimatch.makeRe=c.makeRe,c.match=(a,b,c={})=>{let d=new x(b,c);return a=a.filter(a=>d.match(a)),d.options.nonull&&!a.length&&a.push(b),a},c.minimatch.match=c.match;let w=/[?*]|[+@!]\(.*?\)|\[|\]/;class x{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(a,b={}){(0,e.assertValidPattern)(a),b=b||{},this.options=b,this.maxGlobstarRecursion=b.maxGlobstarRecursion??200,this.pattern=a,this.platform=b.platform||u,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!b.windowsPathsNoEscape||!1===b.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!b.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!b.nonegate,this.comment=!1,this.empty=!1,this.partial=!!b.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==b.windowsNoMagicRoot?b.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let a of this.set)for(let b of a)if("string"!=typeof b)return!0;return!1}debug(){}make(){let a=this.pattern,b=this.options;if(!b.nocomment&&"#"===a.charAt(0)){this.comment=!0;return}if(!a){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],b.debug&&(this.debug=(...a)=>console.error(...a)),this.debug(this.pattern,this.globSet);let c=this.globSet.map(a=>this.slashSplit(a));this.globParts=this.preprocess(c),this.debug(this.pattern,this.globParts);let d=this.globParts.map((a,b,c)=>{if(this.isWindows&&this.windowsNoMagicRoot){let b=""===a[0]&&""===a[1]&&("?"===a[2]||!w.test(a[2]))&&!w.test(a[3]),c=/^[a-z]:/i.test(a[0]);if(b)return[...a.slice(0,4),...a.slice(4).map(a=>this.parse(a))];if(c)return[a[0],...a.slice(1).map(a=>this.parse(a))]}return a.map(a=>this.parse(a))});if(this.debug(this.pattern,d),this.set=d.filter(a=>-1===a.indexOf(!1)),this.isWindows)for(let a=0;a=2?(a=this.firstPhasePreProcess(a),a=this.secondPhasePreProcess(a)):a=b>=1?this.levelOneOptimize(a):this.adjascentGlobstarOptimize(a),a}adjascentGlobstarOptimize(a){return a.map(a=>{let b=-1;for(;-1!==(b=a.indexOf("**",b+1));){let c=b;for(;"**"===a[c+1];)c++;c!==b&&a.splice(b,c-b)}return a})}levelOneOptimize(a){return a.map(a=>0===(a=a.reduce((a,b)=>{let c=a[a.length-1];return"**"===b&&"**"===c||(".."===b&&c&&".."!==c&&"."!==c&&"**"!==c?a.pop():a.push(b)),a},[])).length?[""]:a)}levelTwoFileOptimize(a){Array.isArray(a)||(a=this.slashSplit(a));let b=!1;do{if(b=!1,!this.preserveMultipleSlashes){for(let c=1;cd&&c.splice(d+1,e-d);let f=c[d+1],g=c[d+2],h=c[d+3];if(".."!==f||!g||"."===g||".."===g||!h||"."===h||".."===h)continue;b=!0,c.splice(d,1);let i=c.slice(0);i[d]="**",a.push(i),d--}if(!this.preserveMultipleSlashes){for(let a=1;aa.length)}partsMatch(a,b,c=!1){let d=0,e=0,f=[],g="";for(;d=2&&(a=this.levelTwoFileOptimize(a)),b.includes(c.GLOBSTAR))?this.#y(a,b,d,e,f):this.#z(a,b,d,e,f)}#y(a,b,d,e,f){let g=b.indexOf(c.GLOBSTAR,f),h=b.lastIndexOf(c.GLOBSTAR),[i,j,k]=d?[b.slice(f,g),b.slice(g+1),[]]:[b.slice(f,g),b.slice(g+1,h),b.slice(h+1)];if(i.length){let b=a.slice(e,e+i.length);if(!this.#z(b,i,d,0,0))return!1;e+=i.length,f+=i.length}let l=0;if(k.length){if(k.length+e>a.length)return!1;let b=a.length-k.length;if(this.#z(a,k,d,b,0))l=k.length;else{if(""!==a[a.length-1]||e+k.length===a.length||(b--,!this.#z(a,k,d,b,0)))return!1;l=k.length+1}}if(!j.length){let b=!!l;for(let c=e;c(a=a.toLowerCase(),b=>b.toLowerCase().endsWith(a)):a=>(a=a.toLowerCase(),b=>!b.startsWith(".")&&b.toLowerCase().endsWith(a)):d.dot?a=>b=>b.endsWith(a):a=>b=>!b.startsWith(".")&&b.endsWith(a))(b[1]):(b=a.match(r))?g=(d.nocase?d.dot?([a,b=""])=>{let c=t([a]);return b?(b=b.toLowerCase(),a=>c(a)&&a.toLowerCase().endsWith(b)):c}:([a,b=""])=>{let c=s([a]);return b?(b=b.toLowerCase(),a=>c(a)&&a.toLowerCase().endsWith(b)):c}:d.dot?([a,b=""])=>{let c=t([a]);return b?a=>c(a)&&a.endsWith(b):c}:([a,b=""])=>{let c=s([a]);return b?a=>c(a)&&a.endsWith(b):c})(b):(b=a.match(j))?g=d.dot?l:k:(b=a.match(m))&&(g=n);let h=f.AST.fromGlob(a,this.options).toMMPattern();return g&&"object"==typeof h&&Reflect.defineProperty(h,"test",{value:g}),h}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;let a=this.set;if(!a.length)return this.regexp=!1,this.regexp;let b=this.options,d=b.noglobstar?"[^/]*?":b.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",e=new Set(b.nocase?["i"]:[]),f=a.map(a=>{let b=a.map(a=>{if(a instanceof RegExp)for(let b of a.flags.split(""))e.add(b);return"string"==typeof a?a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):a===c.GLOBSTAR?c.GLOBSTAR:a._src});b.forEach((a,e)=>{let f=b[e+1],g=b[e-1];a===c.GLOBSTAR&&g!==c.GLOBSTAR&&(void 0===g?void 0!==f&&f!==c.GLOBSTAR?b[e+1]="(?:\\/|"+d+"\\/)?"+f:b[e]=d:void 0===f?b[e-1]=g+"(?:\\/|\\/"+d+")?":f!==c.GLOBSTAR&&(b[e-1]=g+"(?:\\/|\\/"+d+"\\/)"+f,b[e+1]=c.GLOBSTAR))});let f=b.filter(a=>a!==c.GLOBSTAR);if(this.partial&&f.length>=1){let a=[];for(let b=1;b<=f.length;b++)a.push(f.slice(0,b).join("/"));return"(?:"+a.join("|")+")"}return f.join("/")}).join("|"),[g,h]=a.length>1?["(?:",")"]:["",""];f="^"+g+f+h+"$",this.partial&&(f="^(?:\\/|"+g+f.slice(1,-1)+h+")$"),this.negate&&(f="^(?!"+f+").+$");try{this.regexp=new RegExp(f,[...e].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(a){return this.preserveMultipleSlashes?a.split("/"):this.isWindows&&/^\/\/[^/]+/.test(a)?["",...a.split(/\/+/)]:a.split(/\/+/)}match(a,b=this.partial){if(this.debug("match",a,this.pattern),this.comment)return!1;if(this.empty)return""===a;if("/"===a&&b)return!0;let c=this.options;this.isWindows&&(a=a.split("\\").join("/"));let d=this.slashSplit(a);this.debug(this.pattern,"split",d);let e=this.set;this.debug(this.pattern,"set",e);let f=d[d.length-1];if(!f)for(let a=d.length-2;!f&&a>=0;a--)f=d[a];for(let a of e){let e=d;if(c.matchBase&&1===a.length&&(e=[f]),this.matchOne(e,a,b)){if(c.flipNegate)return!0;return!this.negate}}return!c.flipNegate&&this.negate}static defaults(a){return c.minimatch.defaults(a).Minimatch}}c.Minimatch=x;var y=a.r(86329);Object.defineProperty(c,"AST",{enumerable:!0,get:function(){return y.AST}});var z=a.r(620843);Object.defineProperty(c,"escape",{enumerable:!0,get:function(){return z.escape}});var A=a.r(961730);Object.defineProperty(c,"unescape",{enumerable:!0,get:function(){return A.unescape}}),c.minimatch.AST=f.AST,c.minimatch.Minimatch=x,c.minimatch.escape=g.escape,c.minimatch.unescape=h.unescape},18779,(a,b,c)=>{"use strict";let d=a.r(677652),{context:e,trace:f,SpanStatusCode:g,propagation:h,diag:i}=a.r(832528),{getRPCMetadata:j,RPCType:k}=a.r(498562),{ATTR_HTTP_ROUTE:l,ATTR_HTTP_RESPONSE_STATUS_CODE:m,ATTR_HTTP_REQUEST_METHOD:n,ATTR_URL_PATH:o}=a.r(357122),{InstrumentationBase:p}=a.r(535049),{version:q,name:r}=a.r(989801),s=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend","onResponse","onError"],t="hook.name",u="fastify.type",v="hook.callback.name",w="route-hook",x="hook",y="anonymous",z=Symbol("fastify otel instance"),A=Symbol("fastify otel request spans"),B=Symbol("fastify otel request context"),C=Symbol("fastify otel addhook original"),D=Symbol("fastify otel setnotfound original"),E=Symbol("fastify otel ignore path"),F=Symbol("fastify otel record exceptions");class G extends p{logger=null;_requestHook=null;_lifecycleHook=null;constructor(b){if(super(r,q,b),this.logger=i.createComponentLogger({namespace:r}),this[E]=null,this[F]=!0,b?.recordExceptions!=null){if("boolean"!=typeof b.recordExceptions)throw TypeError("recordExceptions must be a boolean");this[F]=b.recordExceptions}if("function"==typeof b?.requestHook&&(this._requestHook=b.requestHook),"function"==typeof b?.lifecycleHook&&(this._lifecycleHook=b.lifecycleHook),b?.ignorePaths!=null||null!=process.env.OTEL_FASTIFY_IGNORE_PATHS){const c=b?.ignorePaths??process.env.OTEL_FASTIFY_IGNORE_PATHS;if(("string"!=typeof c||0===c.length)&&"function"!=typeof c)throw TypeError("ignorePaths must be a string or a function");let d=null;this[E]=b=>"function"==typeof c?c(b):(null==d&&(d=a.r(179388).minimatch),d(b.url,c))}}enable(){return void 0===this._handleInitialization&&this.getConfig().registerOnInitialization&&(this._handleInitialization=a=>{this.plugin()(a.fastify,void 0,()=>{});let b=(a,b,c)=>{c()};b[Symbol.for("skip-override")]=!0,b[Symbol.for("fastify.display-name")]="@fastify/otel",a.fastify.register(b)},d.subscribe("fastify.initialization",this._handleInitialization)),super.enable()}disable(){return this._handleInitialization&&(d.unsubscribe("fastify.initialization",this._handleInitialization),this._handleInitialization=void 0),super.disable()}init(){return[]}plugin(){let a=this;return b[Symbol.for("skip-override")]=!0,b[Symbol.for("fastify.display-name")]="@fastify/otel",b[Symbol.for("plugin-meta")]={fastify:">=4.0.0 <6",name:"@fastify/otel"},b;function b(b,c,d){function i(a,b,c,d){let e=a[A];null!=e&&(b.statusCode>=500&&e.setStatus({code:g.ERROR}),e.setAttributes({[m]:b.statusCode}),e.end()),a[A]=null,d(null,c)}function p(b,c,d,e){let f=b[A];null!=f&&(f.setStatus({code:g.ERROR,message:d.message}),!1!==a[F]&&f.recordException(d)),e()}function q(a,b,c={}){return function(...d){let h=this[z],i=function(a){for(let b of a)if(b?.routeOptions&&b.url&&b.method)return b;return null}(d);if(null===i)return h.logger.debug(`Ignoring route instrumentation because ${b} was called without a Fastify request argument`),a.call(this,...d);if(!1===h.isEnabled()||i.routeOptions.config?.otel===!1)return h.logger.debug(`Ignoring route instrumentation ${i.routeOptions.method} ${i.routeOptions.url} because it is disabled`),a.call(this,...d);if(h[E]?.({url:i.url,method:i.method})===!0)return h.logger.debug(`Ignoring route instrumentation ${i.routeOptions.method} ${i.routeOptions.url} because it matches the ignore path`),a.call(this,...d);let j=i[B]??e.active(),k=a.name?.length>0?a.name:this.pluginName??y,l=h.tracer.startSpan(`${b} - ${k}`,{attributes:c},j);if(null!=h._lifecycleHook)try{h._lifecycleHook(l,{hookName:b,request:i,handler:k})}catch(a){h.logger.error({err:a},"Execution of lifecycleHook failed")}return e.with(f.setSpan(j,l),function(){try{let b=a.call(this,...d);if("function"==typeof b?.then)return b.then(a=>(l.end(),a),a=>(l.setStatus({code:g.ERROR,message:a.message}),!1!==h[F]&&l.recordException(a),l.end(),Promise.reject(a)));return l.end(),b}catch(a){throw l.setStatus({code:g.ERROR,message:a.message}),!1!==h[F]&&l.recordException(a),l.end(),a}},this)}}b.decorate(z,a),b.decorate(C,b.addHook),b.decorate(D,b.setNotFoundHandler),b.decorateRequest("opentelemetry",function(){let b=this[B],c=this[A];return{enabled:this.routeOptions.config?.otel!==!1,span:c,tracer:a.tracer,context:b,inject:(a,c)=>h.inject(b,a,c),extract:(a,c)=>h.extract(b,a,c)}}),b.decorateRequest(A,null),b.decorateRequest(B,null),b.addHook("onRoute",function(b){if(a[E]?.(b)===!0)return void a.logger.debug(`Ignoring route instrumentation ${b.method} ${b.url} because it matches the ignore path`);if(b.config?.otel===!1)return void a.logger.debug(`Ignoring route instrumentation ${b.method} ${b.url} because it is disabled`);for(let a of s)if(null!=b[a]){let c=b[a];if("function"==typeof c)b[a]=q(c,a,{[t]:`${this.pluginName} - route -> ${a}`,[u]:w,[l]:b.url,[v]:c.name?.length>0?c.name:y});else if(Array.isArray(c)){let d=[];for(let e of c)d.push(q(e,a,{[t]:`${this.pluginName} - route -> ${a}`,[u]:w,[l]:b.url,[v]:e.name?.length>0?e.name:y}));b[a]=d}}null!=b.onSend?b.onSend=Array.isArray(b.onSend)?[...b.onSend,i]:[b.onSend,i]:b.onSend=i,null!=b.onError?b.onError=Array.isArray(b.onError)?[...b.onError,p]:[b.onError,p]:b.onError=p,b.handler=q(b.handler,"handler",{[t]:`${this.pluginName} - route-handler`,[u]:"request-handler",[l]:b.url,[v]:b.handler.name.length>0?b.handler.name:y})}),b.addHook("onRequest",function(a,b,c){if(!1===this[z].isEnabled()||a.routeOptions.config?.otel===!1)return c();if(this[z][E]?.({url:a.url,method:a.method})===!0)return this[z].logger.debug(`Ignoring request ${a.method} ${a.url} because it matches the ignore path`),c();let d=e.active();null==f.getSpan(d)&&(d=h.extract(d,a.headers));let g=j(d);null!=a.routeOptions.url&&g?.type===k.HTTP&&(g.route=a.routeOptions.url);let i={"fastify.root":"@fastify/otel",[n]:a.method,[o]:a.url};null!=a.routeOptions.url&&(i[l]=a.routeOptions.url);let m=this[z].tracer.startSpan("request",{attributes:i},d);try{this[z]._requestHook?.(m,a)}catch(a){this[z].logger.error({err:a},"requestHook threw")}a[B]=f.setSpan(d,m),a[A]=m,e.with(a[B],()=>{c()})}),b.addHook("onResponse",function(a,b,c){let d=a[A];null!=d&&(d.setAttributes({[m]:b.statusCode}),d.end()),a[A]=null,c()}),b.addHook=function(a,b){let c=this[C];return s.includes(a)?c.call(this,a,q(b,a,{[t]:`${this.pluginName} - ${a}`,[u]:x,[v]:b.name?.length>0?b.name:y})):c.call(this,a,b)},b.setNotFoundHandler=function(a,b){let c=this[D];"function"==typeof a?(b=q(a,"notFoundHandler",{[t]:`${this.pluginName} - not-found-handler`,[u]:x,[v]:a.name?.length>0?a.name:y}),c.call(this,b)):(null!=a.preValidation&&(a.preValidation=q(a.preValidation,"notFoundHandler - preValidation",{[t]:`${this.pluginName} - not-found-handler - preValidation`,[u]:x,[v]:a.preValidation.name?.length>0?a.preValidation.name:y})),null!=a.preHandler&&(a.preHandler=q(a.preHandler,"notFoundHandler - preHandler",{[t]:`${this.pluginName} - not-found-handler - preHandler`,[u]:x,[v]:a.preHandler.name?.length>0?a.preHandler.name:y})),b=q(b,"notFoundHandler",{[t]:`${this.pluginName} - not-found-handler`,[u]:x,[v]:b.name?.length>0?b.name:y}),c.call(this,a,b))},d()}}}b.exports=G,b.exports.FastifyOtelInstrumentation=G},487554,(a,b,c)=>{var d,e,f;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).FASTIFY_NAME="fastify.name",d.FASTIFY_TYPE="fastify.type",d.HOOK_NAME="hook.name",d.PLUGIN_NAME="plugin.name",c.FastifyTypes=void 0,(e=c.FastifyTypes||(c.FastifyTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",c.FastifyNames=void 0,(f=c.FastifyNames||(c.FastifyNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},269212,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.spanRequestSymbol=Symbol("opentelemetry.instrumentation.fastify.request_active_span")},63015,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(269212);function f(a){return"object"==typeof a&&a&&"function"==typeof Object.getOwnPropertyDescriptor(a,"then")?.value||!1}c.endSpan=function(a,b){let c=a[e.spanRequestSymbol]||[];c.length&&(c.forEach(a=>{b&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b)),a.end()}),delete a[e.spanRequestSymbol])},c.safeExecuteInTheMiddleMaybePromise=function(a,b,c){let d,e;try{e=a(),f(e)&&e.then(a=>b(void 0,a),a=>b(a))}catch(a){d=a}finally{if(!f(e)&&(b(d,e),d&&1))throw d;return e}},c.startSpan=function(a,b,c,d={}){let f=b.startSpan(c,{attributes:d}),g=a[e.spanRequestSymbol]||[];return g.push(f),Object.defineProperty(a,e.spanRequestSymbol,{enumerable:!1,configurable:!0,value:g}),f}},235988,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(357122),h=a.r(187845),i=a.r(487554),j=a.r(63015),k="anonymous",l=new Set(["onTimeout","onRequest","preParsing","preValidation","preSerialization","preHandler","onSend","onResponse","onError"]);class m extends f.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-fastify-v3","0.1.0",a)}init(){return[new f.InstrumentationNodeModuleDefinition("fastify",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_hookOnRequest(){let a=this;return function(b,c,f){if(!a.isEnabled())return f();a._wrap(c,"send",a._patchSend());let g=e.getRPCMetadata(d.context.active()),i=b.routeOptions?b.routeOptions.url:b.routerPath;i&&g?.type===e.RPCType.HTTP&&(g.route=i);let j=b.method||"GET";h.getIsolationScope().setTransactionName(`${j} ${i}`),f()}}_wrapHandler(a,b,c,e){let f=this;return this._diag.debug("Patching fastify route.handler function"),function(...g){if(!f.isEnabled())return c.apply(this,g);let h=c.name||a||k,l=`${i.FastifyNames.MIDDLEWARE} - ${h}`,m=g[1],n=j.startSpan(m,f.tracer,l,{[i.AttributeNames.FASTIFY_TYPE]:i.FastifyTypes.MIDDLEWARE,[i.AttributeNames.PLUGIN_NAME]:a,[i.AttributeNames.HOOK_NAME]:b}),o=e&&g[g.length-1];return o&&(g[g.length-1]=function(...a){j.endSpan(m),o.apply(this,a)}),d.context.with(d.trace.setSpan(d.context.active(),n),()=>j.safeExecuteInTheMiddleMaybePromise(()=>c.apply(this,g),a=>{a instanceof Error&&(n.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),n.recordException(a)),e||j.endSpan(m)}))}}_wrapAddHook(){let a=this;return this._diag.debug("Patching fastify server.addHook function"),function(b){return function(...c){let d=c[0],e=c[1],f=this.pluginName;if(!l.has(d))return b.apply(this,c);let g="function"==typeof c[c.length-1]&&"AsyncFunction"!==e.constructor.name;return b.apply(this,[d,a._wrapHandler(f,d,e,g)])}}}_patchConstructor(a){let b=this;function c(...d){let e,f=a.fastify.apply(this,d);return f.addHook("onRequest",b._hookOnRequest()),f.addHook("preHandler",b._hookPreHandler()),(e=h.getClient())&&e.on("spanStart",a=>{n(a)}),b._wrap(f,"addHook",b._wrapAddHook()),f}return void 0!==a.errorCodes&&(c.errorCodes=a.errorCodes),c.fastify=c,c.default=c,c}_patchSend(){let a=this;return this._diag.debug("Patching fastify reply.send function"),function(b){return function(...c){let d=c[0];return a.isEnabled()?f.safeExecuteInTheMiddle(()=>b.apply(this,c),a=>{!a&&d instanceof Error&&(a=d),j.endSpan(this,a)}):b.apply(this,c)}}}_hookPreHandler(){let a=this;return this._diag.debug("Patching fastify preHandler function"),function(b,c,e){if(!a.isEnabled())return e();let h=b.routeOptions?.handler||b.context?.handler,l=h?.name.startsWith("bound ")?h.name.substring(6):h?.name,m=`${i.FastifyNames.REQUEST_HANDLER} - ${l||this.pluginName||k}`,o={[i.AttributeNames.PLUGIN_NAME]:this.pluginName,[i.AttributeNames.FASTIFY_TYPE]:i.FastifyTypes.REQUEST_HANDLER,[g.SEMATTRS_HTTP_ROUTE]:b.routeOptions?b.routeOptions.url:b.routerPath};l&&(o[i.AttributeNames.FASTIFY_NAME]=l);let p=j.startSpan(c,a.tracer,m,o);n(p);let{requestHook:q}=a.getConfig();return q&&f.safeExecuteInTheMiddle(()=>q(p,{request:b}),b=>{b&&a._diag.error("request hook failed",b)},!0),d.context.with(d.trace.setSpan(d.context.active(),p),()=>{e()})}}}function n(a){let b=h.spanToJSON(a).data,c=b["fastify.type"];if(b[h.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[h.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[h.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.fastify`});let d=b["fastify.name"]||b["plugin.name"]||b["hook.name"];if("string"==typeof d){let b=d.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");a.updateName(b)}}c.FastifyInstrumentationV3=m},533819,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(677652),e=a.r(18779),f=a.r(187845),g=a.r(309569),h=a.r(852223),i=a.r(235988),j="Fastify",k=g.generateInstrumentOnce(`${j}.v3`,()=>new i.FastifyInstrumentationV3);function l(){let a=f.getClient();if(a)return a.getIntegrationByName(j)}function m(a,b,c,d){let e=l()?.getShouldHandleError()||o;if("diagnostics-channel"===d&&(this.diagnosticsChannelExists=!0),this.diagnosticsChannelExists&&"onError-hook"===d){h.DEBUG_BUILD&&f.debug.warn("Fastify error handler was already registered via diagnostics channel.","You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.");return}e(a,b,c)&&f.captureException(a,{mechanism:{handled:!1,type:"auto.function.fastify"}})}let n=g.generateInstrumentOnce(`${j}.v5`,()=>{let a=new e.FastifyOtelInstrumentation,b=a.plugin();return d.subscribe("fastify.initialization",a=>{let c=a.fastify;c?.register(b).after(a=>{let b;a?h.DEBUG_BUILD&&f.debug.error("Failed to setup Fastify instrumentation",a):((b=f.getClient())&&b.on("spanStart",a=>{p(a)}),c&&c.addHook("onRequest",async(a,b)=>{if(a.opentelemetry){let{span:b}=a.opentelemetry();b&&p(b)}let c=a.routeOptions?.url,d=a.method||"GET";f.getIsolationScope().setTransactionName(`${d} ${c}`)}))})}),d.subscribe("tracing:fastify.request.handler:error",a=>{let{error:b,request:c,reply:d}=a;m.call(m,b,c,d,"diagnostics-channel")}),a});function o(a,b,c){let d=c.statusCode;return d>=500||d<=299}function p(a){let b=f.spanToJSON(a),c=b.description,d=b.data,e=d["fastify.type"],g="hook"===e,h=e===c?.startsWith("handler -"),i="request"===c||"request-handler"===e;if(d[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!h&&!i&&!g)return;a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.fastify",[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${g?"hook":h?"middleware":i?"request_handler":""}.fastify`});let j=d["fastify.name"]||d["plugin.name"]||d["hook.name"];if("string"==typeof j){let b=j.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");a.updateName(b)}}c.fastifyIntegration=f.defineIntegration((a={})=>(({shouldHandleError:a})=>{let b;return{name:j,setupOnce(){b=a||o,k(),n()},getShouldHandleError:()=>b,setShouldHandleError(a){b=a}}})(a)),c.instrumentFastify=n,c.instrumentFastifyV3=k,c.setupFastifyErrorHandler=function(a,b){b?.shouldHandleError&&l()?.setShouldHandleError(b.shouldHandleError);let c=Object.assign(function(a,b,c){a.addHook("onError",async(a,b,c)=>{m.call(m,c,a,b,"onError-hook")}),c()},{[Symbol.for("skip-override")]:!0,[Symbol.for("fastify.display-name")]:"sentry-fastify-error-handler"});a.register(c)}},34463,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=c.TokenKind=c.AllowedOperationTypes=void 0,(d=c.AllowedOperationTypes||(c.AllowedOperationTypes={})).QUERY="query",d.MUTATION="mutation",d.SUBSCRIPTION="subscription",(e=c.TokenKind||(c.TokenKind={})).SOF="",e.EOF="",e.BANG="!",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment",(f=c.SpanNames||(c.SpanNames={})).EXECUTE="graphql.execute",f.PARSE="graphql.parse",f.RESOLVE="graphql.resolve",f.VALIDATE="graphql.validate",f.SCHEMA_VALIDATE="graphql.validateSchema",f.SCHEMA_PARSE="graphql.parseSchema"},802147,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).SOURCE="graphql.source",d.FIELD_NAME="graphql.field.name",d.FIELD_PATH="graphql.field.path",d.FIELD_TYPE="graphql.field.type",d.PARENT_NAME="graphql.parent.name",d.OPERATION_TYPE="graphql.operation.type",d.OPERATION_NAME="graphql.operation.name",d.VARIABLES="graphql.variables.",d.ERROR_VALIDATION_NAME="graphql.validation.error"},897510,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.OTEL_GRAPHQL_DATA_SYMBOL=c.OTEL_PATCHED_SYMBOL=void 0,c.OTEL_PATCHED_SYMBOL=Symbol.for("opentelemetry.patched"),c.OTEL_GRAPHQL_DATA_SYMBOL=Symbol.for("opentelemetry.graphql_data")},452735,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.OPERATION_NOT_SUPPORTED=void 0,a.r(897510),c.OPERATION_NOT_SUPPORTED="Operation$operationName$not supported"},858879,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.wrapFieldResolver=c.wrapFields=c.getSourceFromLocation=c.getOperation=c.endSpan=c.addSpanSource=c.addInputVariableAttributes=c.isPromise=void 0;let d=a.r(832528),e=a.r(34463),f=a.r(802147),g=a.r(897510),h=Object.values(e.AllowedOperationTypes);function i(a,b,c,d,e){let g=o(b,c,d,e);a.setAttribute(f.AttributeNames.SOURCE,g)}function j(a,b){return a[g.OTEL_GRAPHQL_DATA_SYMBOL].fields[b.join(".")]}function k(a,b){for(let c=b.length-1;c>0;c--){let d=j(a,b.slice(0,c));if(d)return d.span}return l(a)}function l(a){return a[g.OTEL_GRAPHQL_DATA_SYMBOL].span}c.isPromise=a=>"function"==typeof a?.then,c.addInputVariableAttributes=function(a,b){Object.entries(b).forEach(([b,c])=>{!function a(b,c,d){Array.isArray(d)?d.forEach((d,e)=>{a(b,`${c}.${e}`,d)}):d instanceof Object?Object.entries(d).forEach(([d,e])=>{a(b,`${c}.${d}`,e)}):b.setAttribute(`${f.AttributeNames.VARIABLES}${String(c)}`,d)}(a,b,c)})},c.addSpanSource=i,c.endSpan=function(a,b){b&&a.recordException(b),a.end()},c.getOperation=function(a,b){if(a&&Array.isArray(a.definitions))if(b)return a.definitions.filter(a=>-1!==h.indexOf(a?.operation)).find(a=>b===a?.name?.value);else return a.definitions.find(a=>-1!==h.indexOf(a?.operation))};function m(a,b){let c="";for(let d=0;dh){i=i.next,j=i?.line;continue}let a=i.value||i.kind,c="";(!b&&n.indexOf(i.kind)>=0&&(a="*"),i.kind===e.TokenKind.STRING&&(a=`"${a}"`),i.kind===e.TokenKind.EOF&&(a=""),i.line>j)?(f+=m("\n",i.line-j),j=i.line,c=m(" ",i.column-1)):i.line===i.prev?.line&&(c=m(" ",i.start-(i.prev?.end||0))),f+=c+a,i&&(i=i.next)}}return f}c.getSourceFromLocation=o,c.wrapFields=function a(b,c,d){if(!b||b[g.OTEL_PATCHED_SYMBOL])return;let e=b.getFields();b[g.OTEL_PATCHED_SYMBOL]=!0,Object.keys(e).forEach(b=>{let f=e[b];if(f&&(f.resolve&&(f.resolve=r(c,d,f.resolve)),f.type))for(let b of function a(b){var c,d;return"ofType"in b?a(b.ofType):"getTypes"in(c=b)&&"function"==typeof c.getTypes?b.getTypes():"getFields"in(d=b)&&"function"==typeof d.getFields?[b]:[]}(f.type))a(b,c,d)})};let p=(a,b,c)=>{c&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end())},q=(a,b)=>{b&&a.end()};function r(a,b,h,m=!1){if(n[g.OTEL_PATCHED_SYMBOL]||"function"!=typeof h)return h;function n(n,o,r,s){let t;if(!h)return;let u=b();if(u.ignoreTrivialResolveSpans&&m&&("object"==typeof n&&null!==n||"function"==typeof n)&&"function"!=typeof n[s.fieldName]||!r[g.OTEL_GRAPHQL_DATA_SYMBOL])return h.call(this,n,o,r,s);let v=function(a,b){let c=[],d=b;for(;d;){let b=d.key;a&&"number"==typeof b&&(b="*"),c.push(String(b)),d=d.prev}return c.reverse()}(u.mergeItems,s&&s.path),w=v.filter(a=>"string"==typeof a).length,x=!1;if(u.depth>=0&&u.depth"Field"===a.kind))&&i(x,y.loc,o().allowValues,z.loc?.start,z.loc?.end),x)},t=c,u=m,v=A,t[g.OTEL_GRAPHQL_DATA_SYMBOL].fields[u.join(".")]=v,{field:A,spanAdded:!0}}(a,b,r,s,v);t=c.span,x=h}return d.context.with(d.trace.setSpan(d.context.active(),t),()=>{try{let a=h.call(this,n,o,r,s);if((0,c.isPromise)(a))return a.then(a=>(q(t,x),a),a=>{throw p(t,a,x),a});return q(t,x),a}catch(a){throw p(t,a,x),a}})}return n[g.OTEL_PATCHED_SYMBOL]=!0,n}c.wrapFieldResolver=r},658558,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-graphql"},858152,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GraphQLInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(34463),g=a.r(802147),h=a.r(897510),i=a.r(452735),j=a.r(858879),k=a.r(658558),l={mergeItems:!1,depth:-1,allowValues:!1,ignoreResolveSpans:!1},m=[">=14.0.0 <17"];class n extends e.InstrumentationBase{constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a})}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new e.InstrumentationNodeModuleDefinition("graphql",m);return a.files.push(this._addPatchingExecute()),a.files.push(this._addPatchingParser()),a.files.push(this._addPatchingValidate()),a}_addPatchingExecute(){return new e.InstrumentationNodeModuleFile("graphql/execution/execute.js",m,a=>((0,e.isWrapped)(a.execute)&&this._unwrap(a,"execute"),this._wrap(a,"execute",this._patchExecute(a.defaultFieldResolver)),a),a=>{a&&this._unwrap(a,"execute")})}_addPatchingParser(){return new e.InstrumentationNodeModuleFile("graphql/language/parser.js",m,a=>((0,e.isWrapped)(a.parse)&&this._unwrap(a,"parse"),this._wrap(a,"parse",this._patchParse()),a),a=>{a&&this._unwrap(a,"parse")})}_addPatchingValidate(){return new e.InstrumentationNodeModuleFile("graphql/validation/validate.js",m,a=>((0,e.isWrapped)(a.validate)&&this._unwrap(a,"validate"),this._wrap(a,"validate",this._patchValidate()),a),a=>{a&&this._unwrap(a,"validate")})}_patchExecute(a){let b=this;return function(c){return function(){let f;if(arguments.length>=2){let c=arguments;f=b._wrapExecuteArgs(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],a)}else{let c=arguments[0];f=b._wrapExecuteArgs(c.schema,c.document,c.rootValue,c.contextValue,c.variableValues,c.operationName,c.fieldResolver,c.typeResolver,a)}let g=(0,j.getOperation)(f.document,f.operationName),i=b._createExecuteSpan(g,f);return f.contextValue[h.OTEL_GRAPHQL_DATA_SYMBOL]={source:f.document?f.document||f.document[h.OTEL_GRAPHQL_DATA_SYMBOL]:void 0,span:i,fields:{}},d.context.with(d.trace.setSpan(d.context.active(),i),()=>(0,e.safeExecuteInTheMiddle)(()=>c.apply(this,[f]),(a,c)=>{b._handleExecutionResult(i,a,c)}))}}}_handleExecutionResult(a,b,c){let d=this.getConfig();if(void 0===c||b)return void(0,j.endSpan)(a,b);if((0,j.isPromise)(c))c.then(b=>{"function"!=typeof d.responseHook?(0,j.endSpan)(a):this._executeResponseHook(a,b)},b=>{(0,j.endSpan)(a,b)});else{if("function"!=typeof d.responseHook)return void(0,j.endSpan)(a);this._executeResponseHook(a,c)}}_executeResponseHook(a,b){let{responseHook:c}=this.getConfig();c&&(0,e.safeExecuteInTheMiddle)(()=>{c(a,b)},b=>{b&&this._diag.error("Error running response hook",b),(0,j.endSpan)(a,void 0)},!0)}_patchParse(){let a=this;return function(b){return function(c,d){return a._parse(this,b,c,d)}}}_patchValidate(){let a=this;return function(b){return function(c,d,e,f,g){return a._validate(this,b,c,d,e,g,f)}}}_parse(a,b,c,g){let h=this.getConfig(),i=this.tracer.startSpan(f.SpanNames.PARSE);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>(0,e.safeExecuteInTheMiddle)(()=>b.call(a,c,g),(a,b)=>{b&&((0,j.getOperation)(b)?b.loc&&(0,j.addSpanSource)(i,b.loc,h.allowValues):i.updateName(f.SpanNames.SCHEMA_PARSE)),(0,j.endSpan)(i,a)}))}_validate(a,b,c,h,i,k,l){let m=this.tracer.startSpan(f.SpanNames.VALIDATE,{});return d.context.with(d.trace.setSpan(d.context.active(),m),()=>(0,e.safeExecuteInTheMiddle)(()=>b.call(a,c,h,i,l,k),(a,b)=>{h.loc||m.updateName(f.SpanNames.SCHEMA_VALIDATE),b&&b.length&&m.recordException({name:g.AttributeNames.ERROR_VALIDATION_NAME,message:JSON.stringify(b)}),(0,j.endSpan)(m,a)}))}_createExecuteSpan(a,b){let c=this.getConfig(),d=this.tracer.startSpan(f.SpanNames.EXECUTE,{});if(a){let{operation:b,name:c}=a;d.setAttribute(g.AttributeNames.OPERATION_TYPE,b);let e=c?.value;e?(d.setAttribute(g.AttributeNames.OPERATION_NAME,e),d.updateName(`${b} ${e}`)):d.updateName(b)}else{let a=" ";b.operationName&&(a=` "${b.operationName}" `),a=i.OPERATION_NOT_SUPPORTED.replace("$operationName$",a),d.setAttribute(g.AttributeNames.OPERATION_NAME,a)}return b.document?.loc&&(0,j.addSpanSource)(d,b.document.loc,c.allowValues),b.variableValues&&c.allowValues&&(0,j.addInputVariableAttributes)(d,b.variableValues),d}_wrapExecuteArgs(a,b,c,d,e,f,g,i,k){if(d||(d={}),d[h.OTEL_GRAPHQL_DATA_SYMBOL]||this.getConfig().ignoreResolveSpans)return{schema:a,document:b,rootValue:c,contextValue:d,variableValues:e,operationName:f,fieldResolver:g,typeResolver:i};let l=null==g,m=g??k;return g=(0,j.wrapFieldResolver)(this.tracer,()=>this.getConfig(),m,l),a&&((0,j.wrapFields)(a.getQueryType(),this.tracer,()=>this.getConfig()),(0,j.wrapFields)(a.getMutationType(),this.tracer,()=>this.getConfig())),{schema:a,document:b,rootValue:c,contextValue:d,variableValues:e,operationName:f,fieldResolver:g,typeResolver:i}}}c.GraphQLInstrumentation=n},763696,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GraphQLInstrumentation=void 0;var d=a.r(858152);Object.defineProperty(c,"GraphQLInstrumentation",{enumerable:!0,get:function(){return d.GraphQLInstrumentation}})},534849,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(763696),f=a.r(187845),g=a.r(309569),h=a.r(221598),i="Graphql",j=g.generateInstrumentOnce(i,e.GraphQLInstrumentation,a=>{let b=k(a);return{...b,responseHook(a,c){g.addOriginToSpan(a,"auto.graphql.otel.graphql"),c.errors?.length&&!f.spanToJSON(a).status&&a.setStatus({code:d.SpanStatusCode.ERROR});let e=f.spanToJSON(a).data,i=e["graphql.operation.type"],j=e["graphql.operation.name"];if(b.useOperationNameForRootSpan&&i){let b=f.getRootSpan(a),c=f.spanToJSON(b).data[h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION]||[],d=j?`${i} ${j}`:`${i}`;Array.isArray(c)?(c.push(d),b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,c)):"string"==typeof c?b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,[c,d]):b.setAttribute(h.SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION,d),f.spanToJSON(b).data["original-description"]||b.setAttribute("original-description",f.spanToJSON(b).description),b.updateName(`${f.spanToJSON(b).data["original-description"]} (${function(a){if(Array.isArray(a)){let b=a.slice().sort();return b.length<=5?b.join(", "):`${b.slice(0,5).join(", ")}, +${b.length-5}`}return`${a}`}(c)})`)}}}});function k(a){return{ignoreResolveSpans:!0,ignoreTrivialResolveSpans:!0,useOperationNameForRootSpan:!0,...a}}c.graphqlIntegration=f.defineIntegration((a={})=>({name:i,setupOnce(){j(k(a))}})),c.instrumentGraphql=j},410220,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.kafkajs.eventListenersSet")},192374,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.bufferTextMapGetter=void 0,c.bufferTextMapGetter={get(a,b){if(a){for(let c of Object.keys(a))if(c===b||c.toLowerCase()===b)return a[c]?.toString()}},keys:a=>a?Object.keys(a):[]}},616311,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_MESSAGING_PROCESS_DURATION=c.METRIC_MESSAGING_CLIENT_SENT_MESSAGES=c.METRIC_MESSAGING_CLIENT_OPERATION_DURATION=c.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES=c.MESSAGING_SYSTEM_VALUE_KAFKA=c.MESSAGING_OPERATION_TYPE_VALUE_SEND=c.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE=c.MESSAGING_OPERATION_TYPE_VALUE_PROCESS=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION_TYPE=c.ATTR_MESSAGING_OPERATION_NAME=c.ATTR_MESSAGING_KAFKA_OFFSET=c.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE=c.ATTR_MESSAGING_KAFKA_MESSAGE_KEY=c.ATTR_MESSAGING_DESTINATION_PARTITION_ID=c.ATTR_MESSAGING_DESTINATION_NAME=c.ATTR_MESSAGING_BATCH_MESSAGE_COUNT=void 0,c.ATTR_MESSAGING_BATCH_MESSAGE_COUNT="messaging.batch.message_count",c.ATTR_MESSAGING_DESTINATION_NAME="messaging.destination.name",c.ATTR_MESSAGING_DESTINATION_PARTITION_ID="messaging.destination.partition.id",c.ATTR_MESSAGING_KAFKA_MESSAGE_KEY="messaging.kafka.message.key",c.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE="messaging.kafka.message.tombstone",c.ATTR_MESSAGING_KAFKA_OFFSET="messaging.kafka.offset",c.ATTR_MESSAGING_OPERATION_NAME="messaging.operation.name",c.ATTR_MESSAGING_OPERATION_TYPE="messaging.operation.type",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.MESSAGING_OPERATION_TYPE_VALUE_PROCESS="process",c.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE="receive",c.MESSAGING_OPERATION_TYPE_VALUE_SEND="send",c.MESSAGING_SYSTEM_VALUE_KAFKA="kafka",c.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES="messaging.client.consumed.messages",c.METRIC_MESSAGING_CLIENT_OPERATION_DURATION="messaging.client.operation.duration",c.METRIC_MESSAGING_CLIENT_SENT_MESSAGES="messaging.client.sent.messages",c.METRIC_MESSAGING_PROCESS_DURATION="messaging.process.duration"},53386,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.23.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-kafkajs"},277460,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KafkaJsInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(410220),h=a.r(192374),i=a.r(616311),j=a.r(53386);function k(a,b,c){return d=>{a.add(b,{...c,...d?{[f.ATTR_ERROR_TYPE]:d}:{}})}}function l(a,b,c){return d=>{a.record((Date.now()-b)/1e3,{...c,...d?{[f.ATTR_ERROR_TYPE]:d}:{}})}}let m=[.005,.01,.025,.05,.075,.1,.25,.5,.75,1,2.5,5,7.5,10];class n extends e.InstrumentationBase{constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a)}_updateMetricInstruments(){this._clientDuration=this.meter.createHistogram(i.METRIC_MESSAGING_CLIENT_OPERATION_DURATION,{advice:{explicitBucketBoundaries:m}}),this._sentMessages=this.meter.createCounter(i.METRIC_MESSAGING_CLIENT_SENT_MESSAGES),this._consumedMessages=this.meter.createCounter(i.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES),this._processDuration=this.meter.createHistogram(i.METRIC_MESSAGING_PROCESS_DURATION,{advice:{explicitBucketBoundaries:m}})}init(){let a=a=>{(0,e.isWrapped)(a?.Kafka?.prototype.producer)&&this._unwrap(a.Kafka.prototype,"producer"),(0,e.isWrapped)(a?.Kafka?.prototype.consumer)&&this._unwrap(a.Kafka.prototype,"consumer")};return new e.InstrumentationNodeModuleDefinition("kafkajs",[">=0.3.0 <3"],b=>(a(b),this._wrap(b?.Kafka?.prototype,"producer",this._getProducerPatch()),this._wrap(b?.Kafka?.prototype,"consumer",this._getConsumerPatch()),b),a)}_getConsumerPatch(){let a=this;return b=>function(...c){let d=b.apply(this,c);return(0,e.isWrapped)(d.run)&&a._unwrap(d,"run"),a._wrap(d,"run",a._getConsumerRunPatch()),a._setKafkaEventListeners(d),d}}_setKafkaEventListeners(a){a[g.EVENT_LISTENERS_SET]||(a.events?.REQUEST&&a.on(a.events.REQUEST,this._recordClientDurationMetric.bind(this)),a[g.EVENT_LISTENERS_SET]=!0)}_recordClientDurationMetric(a){let[b,c]=a.payload.broker.split(":");this._clientDuration.record(a.payload.duration/1e3,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:`${a.payload.apiName}`,[f.ATTR_SERVER_ADDRESS]:b,[f.ATTR_SERVER_PORT]:Number.parseInt(c,10)})}_getProducerPatch(){let a=this;return b=>function(...c){let d=b.apply(this,c);return(0,e.isWrapped)(d.sendBatch)&&a._unwrap(d,"sendBatch"),a._wrap(d,"sendBatch",a._getSendBatchPatch()),(0,e.isWrapped)(d.send)&&a._unwrap(d,"send"),a._wrap(d,"send",a._getSendPatch()),(0,e.isWrapped)(d.transaction)&&a._unwrap(d,"transaction"),a._wrap(d,"transaction",a._getProducerTransactionPatch()),a._setKafkaEventListeners(d),d}}_getConsumerRunPatch(){let a=this;return b=>function(...c){let d=c[0];return d?.eachMessage&&((0,e.isWrapped)(d.eachMessage)&&a._unwrap(d,"eachMessage"),a._wrap(d,"eachMessage",a._getConsumerEachMessagePatch())),d?.eachBatch&&((0,e.isWrapped)(d.eachBatch)&&a._unwrap(d,"eachBatch"),a._wrap(d,"eachBatch",a._getConsumerEachBatchPatch())),b.call(this,d)}}_getConsumerEachMessagePatch(){let a=this;return b=>function(...c){let e=c[0],f=d.propagation.extract(d.ROOT_CONTEXT,e.message.headers,h.bufferTextMapGetter),g=a._startConsumerSpan({topic:e.topic,message:e.message,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,ctx:f,attributes:{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)}}),j=[l(a._processDuration,Date.now(),{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)}),k(a._consumedMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.partition)})],m=d.context.with(d.trace.setSpan(f,g),()=>b.apply(this,c));return a._endSpansOnPromise([g],j,m)}}_getConsumerEachBatchPatch(){return a=>{let b=this;return function(...c){let e=c[0],f=b._startConsumerSpan({topic:e.batch.topic,message:void 0,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,ctx:d.ROOT_CONTEXT,attributes:{[i.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]:e.batch.messages.length,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}});return d.context.with(d.trace.setSpan(d.context.active(),f),()=>{let g=Date.now(),j=[],m=[k(b._consumedMessages,e.batch.messages.length,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.batch.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)})];e.batch.messages.forEach(a=>{let c,f=d.propagation.extract(d.ROOT_CONTEXT,a.headers,h.bufferTextMapGetter),k=d.trace.getSpan(f)?.spanContext();k&&(c={context:k}),j.push(b._startConsumerSpan({topic:e.batch.topic,message:a,operationType:i.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,link:c,attributes:{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}})),m.push(l(b._processDuration,g,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"process",[i.ATTR_MESSAGING_DESTINATION_NAME]:e.batch.topic,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(e.batch.partition)}))});let n=a.apply(this,c);return j.unshift(f),b._endSpansOnPromise(j,m,n)})}}}_getProducerTransactionPatch(){let a=this;return b=>function(...c){let e=a.tracer.startSpan("transaction"),f=b.apply(this,c);return f.then(b=>{let c=b.send;b.send=function(...b){return d.context.with(d.trace.setSpan(d.context.active(),e),()=>a._getSendPatch()(c).apply(this,b).catch(a=>{throw e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),a}))};let f=b.sendBatch;b.sendBatch=function(...b){return d.context.with(d.trace.setSpan(d.context.active(),e),()=>a._getSendBatchPatch()(f).apply(this,b).catch(a=>{throw e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),a}))};let g=b.commit;b.commit=function(...b){let c=g.apply(this,b).then(()=>{e.setStatus({code:d.SpanStatusCode.OK})});return a._endSpansOnPromise([e],[],c)};let h=b.abort;b.abort=function(...b){let c=h.apply(this,b);return a._endSpansOnPromise([e],[],c)}}).catch(a=>{e.setStatus({code:d.SpanStatusCode.ERROR,message:a?.message}),e.recordException(a),e.end()}),f}}_getSendBatchPatch(){let a=this;return b=>function(...c){let d=c[0].topicMessages||[],e=[],f=[];d.forEach(b=>{b.messages.forEach(c=>{e.push(a._startProducerSpan(b.topic,c)),f.push(k(a._sentMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_DESTINATION_NAME]:b.topic,...void 0!==c.partition?{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(c.partition)}:{}}))})});let g=b.apply(this,c);return a._endSpansOnPromise(e,f,g)}}_getSendPatch(){let a=this;return b=>function(...c){let d=c[0],e=d.messages.map(b=>a._startProducerSpan(d.topic,b)),f=d.messages.map(b=>k(a._sentMessages,1,{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_DESTINATION_NAME]:d.topic,...void 0!==b.partition?{[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(b.partition)}:{}})),g=b.apply(this,c);return a._endSpansOnPromise(e,f,g)}}_endSpansOnPromise(a,b,c){return Promise.resolve(c).then(a=>(b.forEach(a=>a()),a)).catch(c=>{let e,g=f.ERROR_TYPE_VALUE_OTHER;throw"string"==typeof c||void 0===c?e=c:"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,"message")&&(e=c.message,g=c.constructor.name),b.forEach(a=>a(g)),a.forEach(a=>{a.setAttribute(f.ATTR_ERROR_TYPE,g),a.setStatus({code:d.SpanStatusCode.ERROR,message:e})}),c}).finally(()=>{a.forEach(a=>a.end())})}_startConsumerSpan({topic:a,message:b,operationType:c,ctx:f,link:g,attributes:h}){let j=c===i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?"poll":c,k=this.tracer.startSpan(`${j} ${a}`,{kind:c===i.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?d.SpanKind.CLIENT:d.SpanKind.CONSUMER,attributes:{...h,[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_DESTINATION_NAME]:a,[i.ATTR_MESSAGING_OPERATION_TYPE]:c,[i.ATTR_MESSAGING_OPERATION_NAME]:j,[i.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:b?.key?String(b.key):void 0,[i.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!b?.key&&null===b.value||void 0,[i.ATTR_MESSAGING_KAFKA_OFFSET]:b?.offset},links:g?[g]:[]},f),{consumerHook:l}=this.getConfig();return l&&b&&(0,e.safeExecuteInTheMiddle)(()=>l(k,{topic:a,message:b}),a=>{a&&this._diag.error("consumerHook error",a)},!0),k}_startProducerSpan(a,b){let c=this.tracer.startSpan(`send ${a}`,{kind:d.SpanKind.PRODUCER,attributes:{[i.ATTR_MESSAGING_SYSTEM]:i.MESSAGING_SYSTEM_VALUE_KAFKA,[i.ATTR_MESSAGING_DESTINATION_NAME]:a,[i.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:b.key?String(b.key):void 0,[i.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:!!b.key&&null===b.value||void 0,[i.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:void 0!==b.partition?String(b.partition):void 0,[i.ATTR_MESSAGING_OPERATION_NAME]:"send",[i.ATTR_MESSAGING_OPERATION_TYPE]:i.MESSAGING_OPERATION_TYPE_VALUE_SEND}});b.headers=b.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),c),b.headers);let{producerHook:f}=this.getConfig();return f&&(0,e.safeExecuteInTheMiddle)(()=>f(c,{topic:a,message:b}),a=>{a&&this._diag.error("producerHook error",a)},!0),c}}c.KafkaJsInstrumentation=n},236140,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KafkaJsInstrumentation=void 0;var d=a.r(277460);Object.defineProperty(c,"KafkaJsInstrumentation",{enumerable:!0,get:function(){return d.KafkaJsInstrumentation}})},142670,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(236140),e=a.r(187845),f=a.r(309569),g="Kafka",h=f.generateInstrumentOnce(g,()=>new d.KafkaJsInstrumentation({consumerHook(a){f.addOriginToSpan(a,"auto.kafkajs.otel.consumer")},producerHook(a){f.addOriginToSpan(a,"auto.kafkajs.otel.producer")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentKafka=h,c.kafkaIntegration=i},419633,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-lru-memoizer"},60335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.LruMemoizerInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(419633);class g extends e.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition("lru-memoizer",[">=1.3 <4"],a=>{let b=function(){let b=a.apply(this,arguments);return function(){let a=[...arguments],c=a.pop(),e="function"==typeof c?d.context.bind(d.context.active(),c):c;return a.push(e),b.apply(this,a)}};return b.sync=a.sync,b},void 0)]}}c.LruMemoizerInstrumentation=g},301936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.LruMemoizerInstrumentation=void 0;var d=a.r(60335);Object.defineProperty(c,"LruMemoizerInstrumentation",{enumerable:!0,get:function(){return d.LruMemoizerInstrumentation}})},268935,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(301936),e=a.r(187845),f=a.r(309569),g="LruMemoizer",h=f.generateInstrumentOnce(g,()=>new d.LruMemoizerInstrumentation),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentLruMemoizer=h,c.lruMemoizerIntegration=i},337045,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MONGODB=c.DB_SYSTEM_NAME_VALUE_MONGODB=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=c.ATTR_DB_MONGODB_COLLECTION=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb",c.DB_SYSTEM_VALUE_MONGODB="mongodb",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},848295,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=void 0,(d=c.MongodbCommandType||(c.MongodbCommandType={})).CREATE_INDEXES="createIndexes",d.FIND_AND_MODIFY="findAndModify",d.IS_MASTER="isMaster",d.COUNT="count",d.AGGREGATE="aggregate",d.UNKNOWN="unknown"},515299,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.67.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongodb"},115451,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongoDBInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(337045),h=a.r(848295),i=a.r(515299),j={requireParentSpan:!0};class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,{...j,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...j,...a})}_updateMetricInstruments(){this._connectionsUsage=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsage?.add(a,{"pool.name":b,state:c})}init(){let{v3PatchConnection:a,v3UnpatchConnection:b}=this._getV3ConnectionPatches(),{v4PatchConnect:c,v4UnpatchConnect:d}=this._getV4ConnectPatches(),{v4PatchConnectionCallback:f,v4PatchConnectionPromise:g,v4UnpatchConnection:h}=this._getV4ConnectionPatches(),{v4PatchConnectionPool:i,v4UnpatchConnectionPool:j}=this._getV4ConnectionPoolPatches(),{v4PatchSessions:k,v4UnpatchSessions:l}=this._getV4SessionsPatches();return[new e.InstrumentationNodeModuleDefinition("mongodb",[">=3.3.0 <4"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/core/wireprotocol/index.js",[">=3.3.0 <4"],a,b)]),new e.InstrumentationNodeModuleDefinition("mongodb",[">=4.0.0 <8"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=4.0.0 <6.4"],f,h),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=6.4.0 <8"],g,h),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection_pool.js",[">=4.0.0 <6.4"],i,j),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connect.js",[">=4.0.0 <8"],c,d),new e.InstrumentationNodeModuleFile("mongodb/lib/sessions.js",[">=4.0.0 <8"],k,l)])]}_getV3ConnectionPatches(){return{v3PatchConnection:a=>((0,e.isWrapped)(a.insert)&&this._unwrap(a,"insert"),this._wrap(a,"insert",this._getV3PatchOperation("insert")),(0,e.isWrapped)(a.remove)&&this._unwrap(a,"remove"),this._wrap(a,"remove",this._getV3PatchOperation("remove")),(0,e.isWrapped)(a.update)&&this._unwrap(a,"update"),this._wrap(a,"update",this._getV3PatchOperation("update")),(0,e.isWrapped)(a.command)&&this._unwrap(a,"command"),this._wrap(a,"command",this._getV3PatchCommand()),(0,e.isWrapped)(a.query)&&this._unwrap(a,"query"),this._wrap(a,"query",this._getV3PatchFind()),(0,e.isWrapped)(a.getMore)&&this._unwrap(a,"getMore"),this._wrap(a,"getMore",this._getV3PatchCursor()),a),v3UnpatchConnection:a=>{void 0!==a&&(this._unwrap(a,"insert"),this._unwrap(a,"remove"),this._unwrap(a,"update"),this._unwrap(a,"command"),this._unwrap(a,"query"),this._unwrap(a,"getMore"))}}}_getV4SessionsPatches(){return{v4PatchSessions:a=>((0,e.isWrapped)(a.acquire)&&this._unwrap(a,"acquire"),this._wrap(a.ServerSessionPool.prototype,"acquire",this._getV4AcquireCommand()),(0,e.isWrapped)(a.release)&&this._unwrap(a,"release"),this._wrap(a.ServerSessionPool.prototype,"release",this._getV4ReleaseCommand()),a),v4UnpatchSessions:a=>{void 0!==a&&((0,e.isWrapped)(a.acquire)&&this._unwrap(a,"acquire"),(0,e.isWrapped)(a.release)&&this._unwrap(a,"release"))}}}_getV4AcquireCommand(){let a=this;return b=>function(){let c=this.sessions.length,d=b.call(this),e=this.sessions.length;return c===e?a._connCountAdd(1,a._poolName,"used"):c-1===e&&(a._connCountAdd(-1,a._poolName,"idle"),a._connCountAdd(1,a._poolName,"used")),d}}_getV4ReleaseCommand(){let a=this;return b=>function(c){let d=b.call(this,c);return a._connCountAdd(-1,a._poolName,"used"),a._connCountAdd(1,a._poolName,"idle"),d}}_getV4ConnectionPoolPatches(){return{v4PatchConnectionPool:a=>{let b=a.ConnectionPool.prototype;return(0,e.isWrapped)(b.checkOut)&&this._unwrap(b,"checkOut"),this._wrap(b,"checkOut",this._getV4ConnectionPoolCheckOut()),a},v4UnpatchConnectionPool:a=>{void 0!==a&&this._unwrap(a.ConnectionPool.prototype,"checkOut")}}}_getV4ConnectPatches(){return{v4PatchConnect:a=>((0,e.isWrapped)(a.connect)&&this._unwrap(a,"connect"),this._wrap(a,"connect",this._getV4ConnectCommand()),a),v4UnpatchConnect:a=>{void 0!==a&&this._unwrap(a,"connect")}}}_getV4ConnectionPoolCheckOut(){return a=>function(b){let c=d.context.bind(d.context.active(),b);return a.call(this,c)}}_getV4ConnectCommand(){let a=this;return b=>function(c,d){if(1===b.length){let d=b.call(this,c);return d&&"function"==typeof d.then&&d.then(()=>a.setPoolName(c),()=>void 0),d}return b.call(this,c,function(b,e){b||!e||a.setPoolName(c),d(b,e)})}}_getV4ConnectionPatches(){return{v4PatchConnectionCallback:a=>((0,e.isWrapped)(a.Connection.prototype.command)&&this._unwrap(a.Connection.prototype,"command"),this._wrap(a.Connection.prototype,"command",this._getV4PatchCommandCallback()),a),v4PatchConnectionPromise:a=>((0,e.isWrapped)(a.Connection.prototype.command)&&this._unwrap(a.Connection.prototype,"command"),this._wrap(a.Connection.prototype,"command",this._getV4PatchCommandPromise()),a),v4UnpatchConnection:a=>{void 0!==a&&this._unwrap(a.Connection.prototype,"command")}}}_getV3PatchOperation(a){let b=this;return c=>function(e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=b._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l||"object"!=typeof g)if("function"==typeof h)return c.call(this,e,f,g,h);else return c.call(this,e,f,g,h,i);let m=b._getV3SpanAttributes(f,e,g[0],a),n=b._spanNameFromAttrs(m),o=b.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=b._patchEnd(o,l);return"function"==typeof h?c.call(this,e,f,g,p):c.call(this,e,f,g,h,p)}}_getV3PatchCommand(){let a=this;return b=>function(c,e,f,g,i){let j=d.trace.getSpan(d.context.active()),l=a._checkSkipInstrumentation(j),m="function"==typeof g?g:i;if(l||"function"!=typeof m||"object"!=typeof f)if("function"==typeof g)return b.call(this,c,e,f,g);else return b.call(this,c,e,f,g,i);let n=k._getCommandType(f),o=n===h.MongodbCommandType.UNKNOWN?void 0:n,p=a._getV3SpanAttributes(e,c,f,o),q=a._spanNameFromAttrs(p),r=a.tracer.startSpan(q,{kind:d.SpanKind.CLIENT,attributes:p}),s=a._patchEnd(r,m);return"function"==typeof g?b.call(this,c,e,f,s):b.call(this,c,e,f,g,s)}}_getV4PatchCommandCallback(){let a=this;return b=>function(c,e,f,g){let h,i=d.trace.getSpan(d.context.active()),j=a._checkSkipInstrumentation(i),k=Object.keys(e)[0];if("object"!=typeof e||e.ismaster||e.hello)return b.call(this,c,e,f,g);if(!j){let b=a._getV4SpanAttributes(this,c,e,k),f=a._spanNameFromAttrs(b);h=a.tracer.startSpan(f,{kind:d.SpanKind.CLIENT,attributes:b})}let l=a._patchEnd(h,g,this.id,k);return b.call(this,c,e,f,l)}}_getV4PatchCommandPromise(){let a=this;return b=>function(...c){let e,[f,g]=c,h=d.trace.getSpan(d.context.active()),i=a._checkSkipInstrumentation(h),j=Object.keys(g)[0];if("object"!=typeof g||g.ismaster||g.hello)return b.apply(this,c);if(!i){let b=a._getV4SpanAttributes(this,f,g,j),c=a._spanNameFromAttrs(b);e=a.tracer.startSpan(c,{kind:d.SpanKind.CLIENT,attributes:b})}let k=a._patchEnd(e,()=>void 0,this.id,j),l=b.apply(this,c);return l.then(a=>k(null,a),a=>k(a)),l}}_getV3PatchFind(){let a=this;return b=>function(c,e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=a._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l||"object"!=typeof f)if("function"==typeof h)return b.call(this,c,e,f,g,h);else return b.call(this,c,e,f,g,h,i);let m=a._getV3SpanAttributes(e,c,f,"find"),n=a._spanNameFromAttrs(m),o=a.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=a._patchEnd(o,l);return"function"==typeof h?b.call(this,c,e,f,g,p):b.call(this,c,e,f,g,h,p)}}_getV3PatchCursor(){let a=this;return b=>function(c,e,f,g,h,i){let j=d.trace.getSpan(d.context.active()),k=a._checkSkipInstrumentation(j),l="function"==typeof h?h:i;if(k||"function"!=typeof l)if("function"==typeof h)return b.call(this,c,e,f,g,h);else return b.call(this,c,e,f,g,h,i);let m=a._getV3SpanAttributes(e,c,f.cmd,"getMore"),n=a._spanNameFromAttrs(m),o=a.tracer.startSpan(n,{kind:d.SpanKind.CLIENT,attributes:m}),p=a._patchEnd(o,l);return"function"==typeof h?b.call(this,c,e,f,g,p):b.call(this,c,e,f,g,h,p)}}static _getCommandType(a){if(void 0!==a.createIndexes)return h.MongodbCommandType.CREATE_INDEXES;if(void 0!==a.findandmodify)return h.MongodbCommandType.FIND_AND_MODIFY;if(void 0!==a.ismaster)return h.MongodbCommandType.IS_MASTER;if(void 0!==a.count)return h.MongodbCommandType.COUNT;if(void 0!==a.aggregate)return h.MongodbCommandType.AGGREGATE;else return h.MongodbCommandType.UNKNOWN}_getV4SpanAttributes(a,b,c,d){let e,f,g;if(a){let b="string"==typeof a.address?a.address.split(":"):"";2===b.length&&(e=b[0],f=b[1])}return g=c?.documents&&c.documents[0]?c.documents[0]:c?.cursors?c.cursors:c,this._getSpanAttributes(b.db,b.collection,e,f,g,d)}_getV3SpanAttributes(a,b,c,d){let e,f;if(b&&b.s&&(e=b.s.options?.host??b.s.host,f=(b.s.options?.port??b.s.port)?.toString(),null==e||null==f)){let a=b.description?.address;if(a){let b=a.split(":");e=b[0],f=b[1]}}let[g,h]=a.toString().split("."),i=c?.query??c?.q??c;return this._getSpanAttributes(g,h,e,f,i,d)}_getSpanAttributes(a,b,c,d,h,i){let j={};if(this._dbSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MONGODB,j[g.ATTR_DB_NAME]=a,j[g.ATTR_DB_MONGODB_COLLECTION]=b,j[g.ATTR_DB_OPERATION]=i,j[g.ATTR_DB_CONNECTION_STRING]=`mongodb://${c}:${d}/${a}`),this._dbSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MONGODB,j[f.ATTR_DB_NAMESPACE]=a,j[f.ATTR_DB_OPERATION_NAME]=i,j[f.ATTR_DB_COLLECTION_NAME]=b),c&&d){this._netSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_NET_PEER_NAME]=c),this._netSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_SERVER_ADDRESS]=c);let a=parseInt(d,10);!isNaN(a)&&(this._netSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_NET_PEER_PORT]=a),this._netSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_SERVER_PORT]=a))}if(h){let{dbStatementSerializer:a}=this.getConfig(),b="function"==typeof a?a:this._defaultDbStatementSerializer.bind(this);(0,e.safeExecuteInTheMiddle)(()=>{let a=b(h);this._dbSemconvStability&e.SemconvStability.OLD&&(j[g.ATTR_DB_STATEMENT]=a),this._dbSemconvStability&e.SemconvStability.STABLE&&(j[f.ATTR_DB_QUERY_TEXT]=a)},a=>{a&&this._diag.error("Error running dbStatementSerializer hook",a)},!0)}return j}_spanNameFromAttrs(a){return this._dbSemconvStability&e.SemconvStability.STABLE?[a[f.ATTR_DB_OPERATION_NAME],a[f.ATTR_DB_COLLECTION_NAME]].filter(a=>a).join(" ")||g.DB_SYSTEM_NAME_VALUE_MONGODB:`mongodb.${a[g.ATTR_DB_OPERATION]||"command"}`}_getDefaultDbStatementReplacer(){let a=new WeakSet;return(b,c)=>"object"==typeof c&&c?a.has(c)?"[Circular]":(a.add(c),c):"?"}_defaultDbStatementSerializer(a){let{enhancedDatabaseReporting:b}=this.getConfig();return b?JSON.stringify(a):JSON.stringify(a,this._getDefaultDbStatementReplacer())}_handleExecutionResult(a,b){let{responseHook:c}=this.getConfig();"function"==typeof c&&(0,e.safeExecuteInTheMiddle)(()=>{c(a,{data:b})},a=>{a&&this._diag.error("Error running response hook",a)},!0)}_patchEnd(a,b,c,e){let f=d.context.active(),g=this,h=!1;return function(...c){if(!h){h=!0;let b=c[0];if(a){if(b instanceof Error)a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message});else{let b=c[1];g._handleExecutionResult(a,b)}a.end()}"endSessions"===e&&g._connCountAdd(-1,g._poolName,"idle")}return d.context.with(f,()=>b.apply(this,c))}}setPoolName(a){let b=a.hostAddress?.host,c=a.hostAddress?.port,d=a.dbName,e=`mongodb://${b}:${c}/${d}`;this._poolName=e}_checkSkipInstrumentation(a){return!0===this.getConfig().requireParentSpan&&void 0===a}}c.MongoDBInstrumentation=k},440391,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=void 0,(d=c.MongodbCommandType||(c.MongodbCommandType={})).CREATE_INDEXES="createIndexes",d.FIND_AND_MODIFY="findAndModify",d.IS_MASTER="isMaster",d.COUNT="count",d.UNKNOWN="unknown"},767835,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongodbCommandType=c.MongoDBInstrumentation=void 0;var d=a.r(115451);Object.defineProperty(c,"MongoDBInstrumentation",{enumerable:!0,get:function(){return d.MongoDBInstrumentation}});var e=a.r(440391);Object.defineProperty(c,"MongodbCommandType",{enumerable:!0,get:function(){return e.MongodbCommandType}})},228663,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(767835),e=a.r(187845),f=a.r(309569),g="Mongo",h=f.generateInstrumentOnce(g,()=>new d.MongoDBInstrumentation({dbStatementSerializer:i,responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongo")}}));function i(a){return JSON.stringify(function a(b){var c,d;let e;return Array.isArray(b)?b.map(b=>a(b)):"object"!=typeof(c=b)||null===c||(d=c,e=!1,"u">typeof Buffer&&(e=Buffer.isBuffer(d)),e)?"?":Object.entries(b).map(([b,c])=>[b,a(c)]).reduce((a,b)=>(Array.isArray(b)&&(a[b[0]]=b[1]),a),{})}(a))}let j=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c._defaultDbStatementSerializer=i,c.instrumentMongo=h,c.mongoIntegration=j},442679,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_MONGODB=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=c.ATTR_DB_MONGODB_COLLECTION=void 0,c.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection",c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb"},306195,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.handleCallbackResponse=c.handlePromiseResponse=c.getAttributesFromCollection=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(442679),g=a.r(357122);function h(a,b={}){a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:`${b.message} ${b.code?` -Mongoose Error Code: ${b.code}`:""}`})}function i(a,b,c,f){c&&(0,e.safeExecuteInTheMiddle)(()=>c(a,{moduleVersion:f,response:b}),a=>{a&&d.diag.error("mongoose instrumentation: responseHook error",a)},!0)}c.getAttributesFromCollection=function(a,b,c){let d={};return b&e.SemconvStability.OLD&&(d[f.ATTR_DB_MONGODB_COLLECTION]=a.name,d[f.ATTR_DB_NAME]=a.conn.name,d[f.ATTR_DB_USER]=a.conn.user),b&e.SemconvStability.STABLE&&(d[g.ATTR_DB_COLLECTION_NAME]=a.name,d[g.ATTR_DB_NAMESPACE]=a.conn.name),c&e.SemconvStability.OLD&&(d[f.ATTR_NET_PEER_NAME]=a.conn.host,d[f.ATTR_NET_PEER_PORT]=a.conn.port),c&e.SemconvStability.STABLE&&(d[g.ATTR_SERVER_ADDRESS]=a.conn.host,d[g.ATTR_SERVER_PORT]=a.conn.port),d},c.handlePromiseResponse=function(a,b,c,d){return a instanceof Promise?a.then(a=>(i(b,a,c,d),a)).catch(a=>{throw h(b,a),a}).finally(()=>b.end()):(i(b,a,c,d),b.end(),a)},c.handleCallbackResponse=function(a,b,c,d,e,f,g){let j=0;return 2===e.length?j=1:3===e.length&&(j=2),e[j]=(b,c)=>(b?h(d,b):i(d,c,f,g),d.end(),a(b,c)),b.apply(c,e)}},464532,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},625098,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=c._ALREADY_INSTRUMENTED=c._STORED_PARENT_SPAN=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(306195),g=a.r(167300),h=a.r(464532),i=a.r(442679),j=a.r(357122),k=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],l=["remove","count","findOneAndRemove",...k],m=["count","findOneAndRemove",...k],n=[...k];function o(a){return a?a.startsWith("6.")||a.startsWith("5.")?l:a.startsWith("7.")?m:n:k}function p(a){return a&&(a.startsWith("5.")||a.startsWith("6."))||!1}function q(a){return!!a&&!!a.startsWith("8.")&&parseInt(a.split(".")[1],10)>=21}c._STORED_PARENT_SPAN=Symbol("stored-parent-span"),c._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class r extends g.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,g.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new g.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a;return this._wrap(c.Model.prototype,"save",this.patchOnModelMethods("save",b)),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._wrap(c.Model.prototype,"remove",this.patchOnModelMethods("remove",b)),q(b)&&(this._wrap(c.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",b)),this._wrap(c.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",b))),this._wrap(c.Query.prototype,"exec",this.patchQueryExec(b)),this._wrap(c.Aggregate.prototype,"exec",this.patchAggregateExec(b)),o(b).forEach(a=>{this._wrap(c.Query.prototype,a,this.patchAndCaptureSpanContext(a))}),this._wrap(c.Model,"aggregate",this.patchModelAggregate()),this._wrap(c.Model,"insertMany",this.patchModelStatic("insertMany",b)),this._wrap(c.Model,"bulkWrite",this.patchModelStatic("bulkWrite",b)),c}unpatch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a,d=o(b);this._unwrap(c.Model.prototype,"save"),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._unwrap(c.Model.prototype,"remove"),q(b)&&(this._unwrap(c.Model.prototype,"updateOne"),this._unwrap(c.Model.prototype,"deleteOne")),this._unwrap(c.Query.prototype,"exec"),this._unwrap(c.Aggregate.prototype,"exec"),d.forEach(a=>{this._unwrap(c.Query.prototype,a)}),this._unwrap(c.Model,"aggregate"),this._unwrap(c.Model,"insertMany"),this._unwrap(c.Model,"bulkWrite")}patchAggregateExec(a){let b=this;return e=>function(f){if(b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l("aggregate",{options:this.options,aggregatePipeline:this._pipeline});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this._model.collection,this._model?.modelName,"aggregate",k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchQueryExec(a){let b=this;return e=>function(f){if(this[c._ALREADY_INSTRUMENTED]||b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this.mongooseCollection,this.model.modelName,this.op,k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchOnModelMethods(a,b){let c=this;return e=>function(f,h){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let k={document:this};!f||f instanceof Function||(k.options=f);let l={},{dbStatementSerializer:m}=c.getConfig();if(m){let b=m(a,k);c._dbSemconvStability&g.SemconvStability.OLD&&(l[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(l[j.ATTR_DB_QUERY_TEXT]=b)}let n=c._startSpan(this.constructor.collection,this.constructor.modelName,a,l);return f instanceof Function&&(h=f,f=void 0),c._handleResponse(n,e,this,arguments,h,b)}}_patchDocumentUpdateMethods(a,b){let e=this;return f=>function(h,k,l){if(e.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return f.apply(this,arguments);let m=l,n=h,o=k;"function"==typeof h?(m=h,n=void 0,o=void 0):"function"==typeof k&&(m=k,o=void 0);let p={},q=e.getConfig().dbStatementSerializer;if(q){let b=q(a,{condition:{_id:this._id},updates:n,options:o});e._dbSemconvStability&g.SemconvStability.OLD&&(p[i.ATTR_DB_STATEMENT]=b),e._dbSemconvStability&g.SemconvStability.STABLE&&(p[j.ATTR_DB_QUERY_TEXT]=b)}let r=e._startSpan(this.constructor.collection,this.constructor.modelName,a,p),s=e._handleResponse(r,f,this,arguments,m,b);return s&&"object"==typeof s&&(s[c._ALREADY_INSTRUMENTED]=!0),s}}patchModelStatic(a,b){let c=this;return e=>function(f,h,k){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);"function"==typeof h&&(k=h,h=void 0);let l={};switch(a){case"insertMany":l.documents=f;break;case"bulkWrite":l.operations=f;break;default:l.document=f}void 0!==h&&(l.options=h);let m={},{dbStatementSerializer:n}=c.getConfig();if(n){let b=n(a,l);c._dbSemconvStability&g.SemconvStability.OLD&&(m[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(m[j.ATTR_DB_QUERY_TEXT]=b)}let o=c._startSpan(this.collection,this.modelName,a,m);return c._handleResponse(o,e,this,arguments,k,b)}}patchModelAggregate(){let a=this;return b=>function(){let e=d.trace.getSpan(d.context.active()),f=a._callOriginalFunction(()=>b.apply(this,arguments));return f&&(f[c._STORED_PARENT_SPAN]=e),f}}patchAndCaptureSpanContext(a){let b=this;return a=>function(){return this[c._STORED_PARENT_SPAN]=d.trace.getSpan(d.context.active()),b._callOriginalFunction(()=>a.apply(this,arguments))}}_startSpan(a,b,c,e,h){let k={...e,...(0,f.getAttributesFromCollection)(a,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_OPERATION]=c,k[i.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_OPERATION_NAME]=c,k[j.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MONGODB);let l=this._dbSemconvStability&g.SemconvStability.STABLE?`${c} ${a.name}`:`mongoose.${b}.${c}`;return this.tracer.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:k},h?d.trace.setSpan(d.context.active(),h):void 0)}_handleResponse(a,b,c,d,e,g){let h=this;if(e instanceof Function)return h._callOriginalFunction(()=>(0,f.handleCallbackResponse)(e,b,c,a,d,h.getConfig().responseHook,g));{let e=h._callOriginalFunction(()=>b.apply(c,d));return(0,f.handlePromiseResponse)(e,a,h.getConfig().responseHook,g)}}_callOriginalFunction(a){return this.getConfig().suppressInternalInstrumentation?d.context.with((0,e.suppressTracing)(d.context.active()),a):a()}}c.MongooseInstrumentation=r},969069,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=void 0;var d=a.r(625098);Object.defineProperty(c,"MongooseInstrumentation",{enumerable:!0,get:function(){return d.MongooseInstrumentation}})},720382,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(969069),e=a.r(187845),f=a.r(309569),g="Mongoose",h=f.generateInstrumentOnce(g,()=>new d.MongooseInstrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongoose")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMongoose=h,c.mongooseIntegration=i},859284,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},217073,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(c.AttributeNames||(c.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},839212,(a,b,c)=>{"use strict";function d(a){return a?`[${a.toString()}]`:""}Object.defineProperty(c,"__esModule",{value:!0}),c.getPoolNameOld=c.arrayStringifyHelper=c.getSpanName=c.getDbValues=c.getDbQueryText=c.getJDBCString=c.getConfig=void 0,c.getConfig=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}},c.getJDBCString=function(a,b,c){let d=`jdbc:mysql://${a||"localhost"}`;return"number"==typeof b&&(d+=`:${b}`),"string"==typeof c&&(d+=`/${c}`),d},c.getDbQueryText=function(a){return"string"==typeof a?a:a.sql},c.getDbValues=function(a,b){return"string"==typeof a?d(b):d(b||a.values)},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.arrayStringifyHelper=d,c.getPoolNameOld=function(a){let b=a.config.connectionConfig,c="";return c+=b.host?`host: '${b.host}', `:"",c+=b.port?`port: ${b.port}, `:"",c+=b.database?`database: '${b.database}', `:"",c+=b.user?`user: '${b.user}'`:"",b.user||(c=c.substring(0,c.length-2)),c.trim()}},922059,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},101052,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(859284),h=a.r(217073),i=a.r(839212),j=a.r(922059);class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsageOld?.add(a,{state:c,name:b})}init(){return[new e.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],a=>((0,e.isWrapped)(a.createConnection)&&this._unwrap(a,"createConnection"),this._wrap(a,"createConnection",this._patchCreateConnection()),(0,e.isWrapped)(a.createPool)&&this._unwrap(a,"createPool"),this._wrap(a,"createPool",this._patchCreatePool()),(0,e.isWrapped)(a.createPoolCluster)&&this._unwrap(a,"createPoolCluster"),this._wrap(a,"createPoolCluster",this._patchCreatePoolCluster()),a),a=>{void 0!==a&&(this._unwrap(a,"createConnection"),this._unwrap(a,"createPool"),this._unwrap(a,"createPoolCluster"))})]}_patchCreateConnection(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),d}}}_patchCreatePool(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"end",b._patchPoolEnd(d)),b._setPoolCallbacks(d,""),d}}}_patchPoolEnd(a){return b=>{let c=this;return function(d){let e=a._allConnections.length,f=a._freeConnections.length,g=(0,i.getPoolNameOld)(a);c._connCountAdd(-(e-f),g,"used"),c._connCountAdd(-f,g,"idle"),b.apply(a,arguments)}}}_patchCreatePoolCluster(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"add",b._patchAdd(d)),d}}}_patchAdd(a){return b=>{let c=this;return function(d,e){if(!c._enabled)return c._unwrap(a,"add"),b.apply(a,arguments);b.apply(a,arguments);let f=a._nodes;if(f){let b=f["object"==typeof d?"CLUSTER::"+a._lastId:String(d)].pool;c._setPoolCallbacks(b,d)}}}}_patchGetConnection(a){return b=>{let c=this;return function(d,e,f){if(!c._enabled)return c._unwrap(a,"getConnection"),b.apply(a,arguments);if(1==arguments.length&&"function"==typeof d){let e=c._getConnectionCallbackPatchFn(d);return b.call(a,e)}if(2==arguments.length&&"function"==typeof e){let f=c._getConnectionCallbackPatchFn(e);return b.call(a,d,f)}if(3==arguments.length&&"function"==typeof f){let g=c._getConnectionCallbackPatchFn(f);return b.call(a,d,e,g)}return b.apply(a,arguments)}}}_getConnectionCallbackPatchFn(a){let b=this,c=d.context.active();return function(f,g){g&&!(0,e.isWrapped)(g.query)&&b._wrap(g,"query",b._patchQuery(g)),"function"==typeof a&&d.context.with(c,a,this,f,g)}}_patchQuery(a){return b=>{let c=this;return function(j,k,l){if(!c._enabled)return c._unwrap(a,"query"),b.apply(a,arguments);let m={},{host:n,port:o,database:p,user:q}=(0,i.getConfig)(a.config),r=parseInt(o,10),s=(0,i.getDbQueryText)(j);c._dbSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MYSQL,m[g.ATTR_DB_CONNECTION_STRING]=(0,i.getJDBCString)(n,o,p),m[g.ATTR_DB_NAME]=p,m[g.ATTR_DB_USER]=q,m[g.ATTR_DB_STATEMENT]=s),c._dbSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_DB_SYSTEM_NAME]=f.DB_SYSTEM_NAME_VALUE_MYSQL,m[f.ATTR_DB_NAMESPACE]=p,m[f.ATTR_DB_QUERY_TEXT]=s),c._netSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_NET_PEER_NAME]=n,isNaN(r)||(m[g.ATTR_NET_PEER_PORT]=r)),c._netSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_SERVER_ADDRESS]=n,isNaN(r)||(m[f.ATTR_SERVER_PORT]=r));let t=c.tracer.startSpan((0,i.getSpanName)(j),{kind:d.SpanKind.CLIENT,attributes:m});if(c.getConfig().enhancedDatabaseReporting){let a;Array.isArray(k)?a=k:arguments[2]&&(a=[k]),t.setAttribute(h.AttributeNames.MYSQL_VALUES,(0,i.getDbValues)(j,a))}let u=Array.from(arguments).findIndex(a=>"function"==typeof a),v=d.context.active();if(-1!==u)return c._wrap(arguments,u,c._patchCallbackQuery(t,v)),d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));{let c=d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));return d.context.bind(v,c),c.on("error",a=>t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message})).on("end",()=>{t.end()})}}}}_patchCallbackQuery(a,b){return c=>function(e,f,g){return e&&a.setStatus({code:d.SpanStatusCode.ERROR,message:e.message}),a.end(),d.context.with(b,()=>c(...arguments))}}_setPoolCallbacks(a,b){let c=b||(0,i.getPoolNameOld)(a);a.on("connection",a=>{this._connCountAdd(1,c,"idle")}),a.on("acquire",a=>{this._connCountAdd(-1,c,"idle"),this._connCountAdd(1,c,"used")}),a.on("release",a=>{this._connCountAdd(1,c,"idle"),this._connCountAdd(-1,c,"used")})}}c.MySQLInstrumentation=k},992288,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;var d=a.r(101052);Object.defineProperty(c,"MySQLInstrumentation",{enumerable:!0,get:function(){return d.MySQLInstrumentation}})},370840,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(992288),e=a.r(187845),f=a.r(309569),g="Mysql",h=f.generateInstrumentOnce(g,()=>new d.MySQLInstrumentation({})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql=h,c.mysqlIntegration=i},246060,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql"},481992,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.addSqlCommenterComment=void 0;let d=a.r(832528),e=a.r(498562);c.addSqlCommenterComment=function(a,b){let c;if("string"!=typeof b||0===b.length||(c=b.indexOf("--"))>=0||!(0>b.indexOf("/*"))&&c{let b=encodeURIComponent(g[a]).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`);return`${a}='${b}'`}).join(",");return`${b} /*${i}*/`}},762015,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getConnectionPrototypeToInstrument=c.once=c.getSpanName=c.getQueryText=c.getConnectionAttributes=void 0;let d=a.r(246060),e=a.r(167300),f=a.r(357122);function g(a){return a.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}c.getConnectionAttributes=function(a,b,c){var g,h,i;let j,{host:k,port:l,database:m,user:n}=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}}(a),o={};b&e.SemconvStability.OLD&&(o[d.ATTR_DB_CONNECTION_STRING]=(g=k,h=l,i=m,j=`jdbc:mysql://${g||"localhost"}`,"number"==typeof h&&(j+=`:${h}`),"string"==typeof i&&(j+=`/${i}`),j),o[d.ATTR_DB_NAME]=m,o[d.ATTR_DB_USER]=n),b&e.SemconvStability.STABLE&&(o[f.ATTR_DB_NAMESPACE]=m);let p=parseInt(l,10);return c&e.SemconvStability.OLD&&(o[d.ATTR_NET_PEER_NAME]=k,isNaN(p)||(o[d.ATTR_NET_PEER_PORT]=p)),c&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=k,isNaN(p)||(o[f.ATTR_SERVER_PORT]=p)),o},c.getQueryText=function(a,b,c,d=!1,e=g){let[f,h]="string"==typeof a?[a,c]:[a.sql,"values"in a?c||a.values:c];try{if(d)return e(f);if(b&&h)return b(f,h);return f}catch(a){return"Could not determine the query due to an error in masking or formatting"}},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}},c.getConnectionPrototypeToInstrument=function(a){let b=a.prototype,c=Object.getPrototypeOf(b);return"function"==typeof c?.query&&"function"==typeof c?.execute?c:b}},729087,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},980415,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(246060),g=a.r(481992),h=a.r(762015),i=a.r(729087),j=a.r(357122),k=[">=1.4.2 <4"];class l extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let a;function b(b){!a&&b.format&&(a=b.format)}let c=b=>{(0,e.isWrapped)(b.query)&&this._unwrap(b,"query"),this._wrap(b,"query",this._patchQuery(a,!1)),(0,e.isWrapped)(b.execute)&&this._unwrap(b,"execute"),this._wrap(b,"execute",this._patchQuery(a,!0))},d=a=>{this._unwrap(a,"query"),this._unwrap(a,"execute")};return[new e.InstrumentationNodeModuleDefinition("mysql2",k,a=>(b(a),a),()=>{},[new e.InstrumentationNodeModuleFile("mysql2/promise.js",k,a=>(b(a),a),()=>{}),new e.InstrumentationNodeModuleFile("mysql2/lib/connection.js",k,a=>(c((0,h.getConnectionPrototypeToInstrument)(a)),a),a=>{void 0===a||d((0,h.getConnectionPrototypeToInstrument)(a))})])]}_patchQuery(a,b){return c=>{let i=this;return function(k,l,m){let n;Array.isArray(l)?n=l:arguments[2]&&(n=[l]);let{maskStatement:o,maskStatementHook:p,responseHook:q}=i.getConfig(),r=(0,h.getConnectionAttributes)(this.config,i._dbSemconvStability,i._netSemconvStability),s=(0,h.getQueryText)(k,a,n,o,p);i._dbSemconvStability&e.SemconvStability.OLD&&(r[f.ATTR_DB_SYSTEM]=f.DB_SYSTEM_VALUE_MYSQL,r[f.ATTR_DB_STATEMENT]=s),i._dbSemconvStability&e.SemconvStability.STABLE&&(r[j.ATTR_DB_SYSTEM_NAME]=j.DB_SYSTEM_NAME_VALUE_MYSQL,r[j.ATTR_DB_QUERY_TEXT]=s);let t=i.tracer.startSpan((0,h.getSpanName)(k),{kind:d.SpanKind.CLIENT,attributes:r});!b&&i.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=k="string"==typeof k?(0,g.addSqlCommenterComment)(t,k):Object.assign(k,{sql:(0,g.addSqlCommenterComment)(t,k.sql)}));let u=(0,h.once)((a,b)=>{a?t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}):"function"==typeof q&&(0,e.safeExecuteInTheMiddle)(()=>{q(t,{queryResults:b})},a=>{a&&i._diag.warn("Failed executing responseHook",a)},!0),t.end()});if(1==arguments.length){"function"==typeof k.onResult&&i._wrap(k,"onResult",i._patchCallbackQuery(u));let a=c.apply(this,arguments);return a.once("error",a=>{u(a)}).once("result",a=>{u(void 0,a)}),a}return"function"==typeof arguments[1]?i._wrap(arguments,1,i._patchCallbackQuery(u)):"function"==typeof arguments[2]&&i._wrap(arguments,2,i._patchCallbackQuery(u)),c.apply(this,arguments)}}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c,d),b(...arguments)}}}c.MySQL2Instrumentation=l},542331,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;var d=a.r(980415);Object.defineProperty(c,"MySQL2Instrumentation",{enumerable:!0,get:function(){return d.MySQL2Instrumentation}})},592734,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(542331),e=a.r(187845),f=a.r(309569),g="Mysql2",h=f.generateInstrumentOnce(g,()=>new d.MySQL2Instrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mysql2")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql2=h,c.mysql2Integration=i},44518,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},678432,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.endSpan=void 0;let d=a.r(832528);c.endSpan=(a,b)=>{b&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message})),a.end()}},901032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.defaultDbStatementSerializer=void 0;let d=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];c.defaultDbStatementSerializer=(a,b)=>{if(Array.isArray(b)&&b.length){let c=d.find(({regex:b})=>b.test(a))?.args??0,e=c>=0?b.slice(0,c):b;return b.length>e.length&&e.push(`[${b.length-c} other arguments]`),`${a} ${e.join(" ")}`}return a}},164022,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},523602,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(44518),h=a.r(167300),i=a.r(678432),j=a.r(901032),k=a.r(164022),l={requireParentSpan:!0};class m extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){return[new e.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(a,b)=>{let c="Module"===a[Symbol.toStringTag]?a.default:a;return(0,e.isWrapped)(c.prototype.sendCommand)&&this._unwrap(c.prototype,"sendCommand"),this._wrap(c.prototype,"sendCommand",this._patchSendCommand(b)),(0,e.isWrapped)(c.prototype.connect)&&this._unwrap(c.prototype,"connect"),this._wrap(c.prototype,"connect",this._patchConnection()),a},a=>{if(void 0===a)return;let b="Module"===a[Symbol.toStringTag]?a.default:a;this._unwrap(b.prototype,"sendCommand"),this._unwrap(b.prototype,"connect")})]}_patchSendCommand(a){return b=>this._traceSendCommand(b,a)}_patchConnection(){return a=>this._traceConnection(a)}_traceSendCommand(a,b){let c=this;return function(k){if(arguments.length<1||"object"!=typeof k)return a.apply(this,arguments);let l=c.getConfig(),m=l.dbStatementSerializer||j.defaultDbStatementSerializer,n=void 0===d.trace.getSpan(d.context.active());if(!0===l.requireParentSpan&&n)return a.apply(this,arguments);let o={},{host:p,port:q}=this.options,r=m(k.name,k.args);c._dbSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,o[g.ATTR_DB_STATEMENT]=r,o[g.ATTR_DB_CONNECTION_STRING]=`redis://${p}:${q}`),c._dbSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,o[f.ATTR_DB_QUERY_TEXT]=r),c._netSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_NET_PEER_NAME]=p,o[g.ATTR_NET_PEER_PORT]=q),c._netSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=p,o[f.ATTR_SERVER_PORT]=q);let s=c.tracer.startSpan(k.name,{kind:d.SpanKind.CLIENT,attributes:o}),{requestHook:t}=l;t&&(0,h.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:b,cmdName:k.name,cmdArgs:k.args}),a=>{a&&d.diag.error("ioredis instrumentation: request hook failed",a)},!0);try{let b=a.apply(this,arguments),c=k.resolve;k.resolve=function(a){(0,h.safeExecuteInTheMiddle)(()=>l.responseHook?.(s,k.name,k.args,a),a=>{a&&d.diag.error("ioredis instrumentation: response hook failed",a)},!0),(0,i.endSpan)(s,null),c(a)};let e=k.reject;return k.reject=function(a){(0,i.endSpan)(s,a),e(a)},b}catch(a){throw(0,i.endSpan)(s,a),a}}}_traceConnection(a){let b=this;return function(){let c=void 0===d.trace.getSpan(d.context.active());if(!0===b.getConfig().requireParentSpan&&c)return a.apply(this,arguments);let h={},{host:j,port:k}=this.options;b._dbSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,h[g.ATTR_DB_STATEMENT]="connect",h[g.ATTR_DB_CONNECTION_STRING]=`redis://${j}:${k}`),b._dbSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,h[f.ATTR_DB_QUERY_TEXT]="connect"),b._netSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_NET_PEER_NAME]=j,h[g.ATTR_NET_PEER_PORT]=k),b._netSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_SERVER_ADDRESS]=j,h[f.ATTR_SERVER_PORT]=k);let l=b.tracer.startSpan("connect",{kind:d.SpanKind.CLIENT,attributes:h});try{let b=a.apply(this,arguments);return(0,i.endSpan)(l,null),b}catch(a){throw(0,i.endSpan)(l,a),a}}}}c.IORedisInstrumentation=m},417236,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;var d=a.r(523602);Object.defineProperty(c,"IORedisInstrumentation",{enumerable:!0,get:function(){return d.IORedisInstrumentation}})},56335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},426925,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getTracedCreateStreamTrace=c.getTracedCreateClient=c.endSpan=void 0;let d=a.r(832528);c.endSpan=(a,b)=>{b&&a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end()},c.getTracedCreateClient=a=>function(){let b=a.apply(this,arguments);return d.context.bind(d.context.active(),b)},c.getTracedCreateStreamTrace=a=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(a){d.context.bind(d.context.active(),a),this._patched_redis_stream=a}}),a.apply(this,arguments)}},484312,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},776491,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV2_V3=void 0;let d=a.r(167300),e=a.r(426925),f=a.r(56335),g=a.r(832528),h=a.r(357122),i=a.r(484312),j=a.r(901032);class k extends d.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new d.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],a=>((0,d.isWrapped)(a.RedisClient.prototype.internal_send_command)&&this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._wrap(a.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,d.isWrapped)(a.RedisClient.prototype.create_stream)&&this._unwrap(a.RedisClient.prototype,"create_stream"),this._wrap(a.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,d.isWrapped)(a.createClient)&&this._unwrap(a,"createClient"),this._wrap(a,"createClient",this._getPatchCreateClient()),a),a=>{void 0!==a&&(this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._unwrap(a.RedisClient.prototype,"create_stream"),this._unwrap(a,"createClient"))})]}_getPatchInternalSendCommand(){let a=this;return function(b){return function(c){if(1!=arguments.length||"object"!=typeof c)return b.apply(this,arguments);let f=a.getConfig(),l=void 0===g.trace.getSpan(g.context.active());if(!0===f.requireParentSpan&&l)return b.apply(this,arguments);let m=f?.dbStatementSerializer||j.defaultDbStatementSerializer,n={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(n,{[i.ATTR_DB_SYSTEM]:i.DB_SYSTEM_VALUE_REDIS,[i.ATTR_DB_STATEMENT]:m(c.command,c.args)}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(n,{[h.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_REDIS,[h.ATTR_DB_OPERATION_NAME]:c.command,[h.ATTR_DB_QUERY_TEXT]:m(c.command,c.args)});let o=a.tracer.startSpan(`${k.COMPONENT}-${c.command}`,{kind:g.SpanKind.CLIENT,attributes:n});if(this.connection_options){let b={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(b,{[i.ATTR_NET_PEER_NAME]:this.connection_options.host,[i.ATTR_NET_PEER_PORT]:this.connection_options.port}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(b,{[h.ATTR_SERVER_ADDRESS]:this.connection_options.host,[h.ATTR_SERVER_PORT]:this.connection_options.port}),o.setAttributes(b)}this.address&&a._semconvStability&d.SemconvStability.OLD&&o.setAttribute(i.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let p=arguments[0].callback;if(p){let b=g.context.active();arguments[0].callback=function(h,i){if(f?.responseHook){let b=f.responseHook;(0,d.safeExecuteInTheMiddle)(()=>{b(o,c.command,c.args,i)},b=>{b&&a._diag.error("Error executing responseHook",b)},!0)}return(0,e.endSpan)(o,h),g.context.with(b,p,this,...arguments)}}try{return b.apply(this,arguments)}catch(a){throw(0,e.endSpan)(o,a),a}}}}_getPatchCreateClient(){return function(a){return(0,e.getTracedCreateClient)(a)}}_getPatchCreateStream(){return function(a){return(0,e.getTracedCreateStreamTrace)(a)}}}c.RedisInstrumentationV2_V3=k},223134,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getClientAttributes=void 0;let d=a.r(357122),e=a.r(484312),f=a.r(167300);c.getClientAttributes=function(a,b,c){let g={};return c&f.SemconvStability.OLD&&Object.assign(g,{[e.ATTR_DB_SYSTEM]:e.DB_SYSTEM_VALUE_REDIS,[e.ATTR_NET_PEER_NAME]:b?.socket?.host,[e.ATTR_NET_PEER_PORT]:b?.socket?.port,[e.ATTR_DB_CONNECTION_STRING]:function(a,b){if("string"==typeof b&&b)try{let a=new URL(b);return a.searchParams.delete("user_pwd"),a.username="",a.password="",a.href}catch(b){a.error("failed to sanitize redis connection url",b)}}(a,b?.url)}),c&f.SemconvStability.STABLE&&Object.assign(g,{[d.ATTR_DB_SYSTEM_NAME]:e.DB_SYSTEM_NAME_VALUE_REDIS,[d.ATTR_SERVER_ADDRESS]:b?.socket?.host,[d.ATTR_SERVER_PORT]:b?.socket?.port}),g}},823723,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV4_V5=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(223134),g=a.r(901032),h=a.r(56335),i=a.r(357122),j=a.r(484312),k=Symbol("opentelemetry.instrumentation.redis.open_spans"),l=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class m extends e.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(a){let b=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/commander.js`,["^1.0.0"],(a,b)=>{let c=a.transformCommandArguments;if(!c)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),a;let d=b?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,e.isWrapped)(a?.[d])&&this._unwrap(a,d),this._wrap(a,d,this._getPatchExtendWithCommands(c)),a},a=>{(0,e.isWrapped)(a?.extendWithCommands)&&this._unwrap(a,"extendWithCommands"),(0,e.isWrapped)(a?.attachCommands)&&this._unwrap(a,"attachCommands")}),c=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),this._wrap(b,"exec",this._getPatchMultiCommandsExec(!1)),(0,e.isWrapped)(b?.execAsPipeline)&&this._unwrap(b,"execAsPipeline"),this._wrap(b,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand"),this._wrap(b,"addCommand",this._getPatchMultiCommandsAddCommand()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand")}),d=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return b?.multi&&((0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),this._wrap(b,"multi",this._getPatchRedisClientMulti())),b?.MULTI&&((0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),this._wrap(b,"MULTI",this._getPatchRedisClientMulti())),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand"),this._wrap(b,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(b,"connect",this._getPatchedClientConnect()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),(0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand")});return new e.InstrumentationNodeModuleDefinition(a,["^1.0.0","^5.0.0"],a=>a,()=>{},[b,c,d])}_getPatchExtendWithCommands(a){let b=this;return function(c){return function(d){if(d?.BaseClass?.name!=="RedisClient")return c.apply(this,arguments);let e=d.executor;return d.executor=function(c,d){let f=a(c,d).args;return b._traceClientCommand(e,this,arguments,f)},c.apply(this,arguments)}}}_getPatchMultiCommandsExec(a){let b=this;return function(c){return function(){let d=c.apply(this,arguments);return"function"!=typeof d?.then?(b._diag.error("non-promise result when patching exec/execAsPipeline"),d):d.then(c=>{let d=this[k];return b._endSpansWithRedisReplies(d,c,a),c}).catch(c=>{let d=this[k];if(d){let e="MultiErrorReply"===c.constructor.name?c.replies:Array(d.length).fill(c);b._endSpansWithRedisReplies(d,e,a)}else b._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(c)})}}}_getPatchMultiCommandsAddCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchRedisClientMulti(){return function(a){return function(){let b=a.apply(this,arguments);return b[l]=this.options,b}}}_getPatchRedisClientSendCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchedClientConnect(){let a=this;return function(b){return function(){let c=this.options,e=(0,f.getClientAttributes)(a._diag,c,a._semconvStability),g=a.tracer.startSpan(`${m.COMPONENT}-connect`,{kind:d.SpanKind.CLIENT,attributes:e});return d.context.with(d.trace.setSpan(d.context.active(),g),()=>b.apply(this)).then(a=>(g.end(),a)).catch(a=>(g.recordException(a),g.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),g.end(),Promise.reject(a)))}}}_traceClientCommand(a,b,c,h){if(void 0===d.trace.getSpan(d.context.active())&&this.getConfig().requireParentSpan)return a.apply(b,c);let n=b.options||b[l],o=h[0],p=h.slice(1),q=this.getConfig().dbStatementSerializer||g.defaultDbStatementSerializer,r=(0,f.getClientAttributes)(this._diag,n,this._semconvStability);this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_OPERATION_NAME]=o);try{let a=q(o,p);null!=a&&(this._semconvStability&e.SemconvStability.OLD&&(r[j.ATTR_DB_STATEMENT]=a),this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_QUERY_TEXT]=a))}catch(a){this._diag.error("dbStatementSerializer throw an exception",a,{commandName:o})}let s=this.tracer.startSpan(`${m.COMPONENT}-${o}`,{kind:d.SpanKind.CLIENT,attributes:r}),t=d.context.with(d.trace.setSpan(d.context.active(),s),()=>a.apply(b,c));return"function"==typeof t?.then?t.then(a=>{this._endSpanWithResponse(s,o,p,a,void 0)},a=>{this._endSpanWithResponse(s,o,p,null,a)}):(t[k]=t[k]||[],t[k].push({span:s,commandName:o,commandArgs:p})),t}_endSpansWithRedisReplies(a,b,c=!1){if(!a)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(b.length!==a.length)return this._diag.error("number of multi command spans does not match response from redis");let d=a.map(a=>a.commandName),f=d.every(a=>a===d[0])?(c?"PIPELINE ":"MULTI ")+d[0]:c?"PIPELINE":"MULTI";for(let c=0;c{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;let d=a.r(167300),e=a.r(56335),f=a.r(776491),g=a.r(823723),h={requireParentSpan:!1};class i extends d.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(a={}){const b={...h,...a};super(e.PACKAGE_NAME,e.PACKAGE_VERSION,b),this.instrumentationV2_V3=new f.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new g.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(a={}){let b={...h,...a};super.setConfig(b),this.initialized&&(this.instrumentationV2_V3.setConfig(b),this.instrumentationV4_V5.setConfig(b))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(a){super.setTracerProvider(a),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(a),this.instrumentationV4_V5.setTracerProvider(a))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}c.RedisInstrumentation=i},365261,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;var d=a.r(451985);Object.defineProperty(c,"RedisInstrumentation",{enumerable:!0,get:function(){return d.RedisInstrumentation}})},461429,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=["get","set","setex"],e=["get","mget"],f=["set","setex"];function g(a,b){return a.includes(b.toLowerCase())}function h(a){return g(e,a)?"cache.get":g(f,a)?"cache.put":void 0}function i(a){let b=[],c=a=>{a.forEach(a=>{Array.isArray(a)?c(a):b.push(a)})};return c(a),b}c.GET_COMMANDS=e,c.SET_COMMANDS=f,c.calculateCacheItemSize=function(a){let b=a=>{try{if(Buffer.isBuffer(a))return a.byteLength;if("string"==typeof a)return a.length;if("number"==typeof a)return a.toString().length;else if(null==a)return 0;return JSON.stringify(a).length}catch{return}};return Array.isArray(a)?a.reduce((a,c)=>{let d=b(c);return"number"==typeof d?void 0!==a?a+d:d:a},0):b(a)},c.getCacheKeySafely=function(a,b){try{if(0===b.length)return;let c=a=>"string"==typeof a||"number"==typeof a||Buffer.isBuffer(a)?[a.toString()]:Array.isArray(a)?i(a.map(a=>c(a))):[""],e=b[0];if(g(d,a)&&null!=e)return c(e);return i(b.map(a=>c(a)))}catch{return}},c.getCacheOperation=h,c.isInCommands=g,c.shouldConsiderForCache=function(a,b,c){if(!h(a))return!1;for(let a of b)if(function(a,b){return b.some(b=>a.startsWith(b))}(a,c))return!0;return!1}},461054,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(417236),e=a.r(365261),f=a.r(187845),g=a.r(309569),h=a.r(461429),i="Redis";c._redisOptions={};let j=(a,b,d,e)=>{a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let g=h.getCacheKeySafely(b,d),i=h.getCacheOperation(b);if(!g||!i||!c._redisOptions.cachePrefixes||!h.shouldConsiderForCache(b,g,c._redisOptions.cachePrefixes))return;let j=f.spanToJSON(a).data["net.peer.name"],k=f.spanToJSON(a).data["net.peer.port"];k&&j&&a.setAttributes({"network.peer.address":j,"network.peer.port":k});let l=h.calculateCacheItemSize(e);l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,l),h.isInCommands(h.GET_COMMANDS,b)&&void 0!==l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_HIT,l>0),a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:i,[f.SEMANTIC_ATTRIBUTE_CACHE_KEY]:g});let m=g.join(", ");a.updateName(c._redisOptions.maxCacheKeyLength?f.truncate(m,c._redisOptions.maxCacheKeyLength):m)},k=g.generateInstrumentOnce(`${i}.IORedis`,()=>new d.IORedisInstrumentation({responseHook:j})),l=g.generateInstrumentOnce(`${i}.Redis`,()=>new e.RedisInstrumentation({responseHook:j})),m=Object.assign(()=>{k(),l()},{id:i}),n=f.defineIntegration((a={})=>({name:i,setupOnce(){c._redisOptions=a,m()}}));c.cacheResponseHook=j,c.instrumentRedis=m,c.redisIntegration=n},754229,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},263318,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).PG_VALUES="db.postgresql.values",d.PG_PLAN="db.postgresql.plan",d.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",d.MAX_CLIENT="db.postgresql.max.client"},283302,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=c.METRIC_DB_CLIENT_CONNECTION_COUNT=c.DB_SYSTEM_VALUE_POSTGRESQL=c.DB_CLIENT_CONNECTION_STATE_VALUE_USED=c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=c.ATTR_DB_CLIENT_CONNECTION_STATE=c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",c.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",c.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",c.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",c.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},684683,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=void 0,(d=c.SpanNames||(c.SpanNames={})).QUERY_PREFIX="pg.query",d.CONNECT="pg.connect",d.POOL_CONNECT="pg-pool.connect"},182032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizedErrorMessage=c.isObjectWithTextString=c.getErrorMessage=c.patchClientConnectCallback=c.patchCallbackPGPool=c.updateCounter=c.getPoolName=c.patchCallback=c.handleExecutionResult=c.handleConfigQuery=c.shouldSkipInstrumentation=c.getSemanticAttributesFromPoolConnection=c.getSemanticAttributesFromConnection=c.getConnectionString=c.parseAndMaskConnectionString=c.parseNormalizedOperationName=c.getQuerySpanName=void 0;let d=a.r(832528),e=a.r(263318),f=a.r(357122),g=a.r(283302),h=a.r(167300),i=a.r(684683);function j(a,b){if(!b)return i.SpanNames.QUERY_PREFIX;let c="string"==typeof b.name&&b.name?b.name:k(b.text);return`${i.SpanNames.QUERY_PREFIX}:${c}${a?` ${a}`:""}`}function k(a){let b=a.trim(),c=b.indexOf(" "),d=-1===c?b:b.slice(0,c);return(d=d.toUpperCase()).endsWith(";")?d.slice(0,-1):d}function l(a){try{let b=new URL(a);return b.username="",b.password="",b.toString()}catch(a){return"postgresql://localhost:5432/"}}function m(a){if("connectionString"in a&&a.connectionString)return l(a.connectionString);let b=a.host||"localhost",c=a.port||5432,d=a.database||"";return`postgresql://${b}:${c}/${d}`}function n(a){if(Number.isInteger(a))return a}function o(a,b){let c={};return b&h.SemconvStability.OLD&&(c={...c,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_DB_USER]:a.user,[g.ATTR_NET_PEER_NAME]:a.host,[g.ATTR_NET_PEER_PORT]:n(a.port)}),b&h.SemconvStability.STABLE&&(c={...c,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:a.host,[f.ATTR_SERVER_PORT]:n(a.port)}),c}function p(a,b,c){"function"==typeof a.responseHook&&(0,h.safeExecuteInTheMiddle)(()=>{a.responseHook(b,{data:c})},a=>{a&&d.diag.error("Error running response hook",a)},!0)}function q(a){let b=a?.name??"PostgreSQLError",c=a?.code??"UNKNOWN";return`PostgreSQL error of type '${b}' occurred (code: ${c})`}c.getQuerySpanName=j,c.parseNormalizedOperationName=k,c.parseAndMaskConnectionString=l,c.getConnectionString=m,c.getSemanticAttributesFromConnection=o,c.getSemanticAttributesFromPoolConnection=function(a,b){let c;try{c=a.connectionString?new URL(a.connectionString):void 0}catch(a){c=void 0}let d={[e.AttributeNames.IDLE_TIMEOUT_MILLIS]:a.idleTimeoutMillis,[e.AttributeNames.MAX_CLIENT]:a.maxClient};return b&h.SemconvStability.OLD&&(d={...d,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:c?.pathname.slice(1)??a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_NET_PEER_NAME]:c?.hostname??a.host,[g.ATTR_NET_PEER_PORT]:Number(c?.port)||n(a.port),[g.ATTR_DB_USER]:c?.username??a.user}),b&h.SemconvStability.STABLE&&(d={...d,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:c?.hostname??a.host,[f.ATTR_SERVER_PORT]:Number(c?.port)||n(a.port)}),d},c.shouldSkipInstrumentation=function(a){return!0===a.requireParentSpan&&void 0===d.trace.getSpan(d.context.active())},c.handleConfigQuery=function(a,b,c,i){let{connectionParameters:k}=this,l=j(k.database,i),m=a.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:o(k,c)});if(!i)return m;if(i.text&&(c&h.SemconvStability.OLD&&m.setAttribute(g.ATTR_DB_STATEMENT,i.text),c&h.SemconvStability.STABLE&&m.setAttribute(f.ATTR_DB_QUERY_TEXT,i.text)),b.enhancedDatabaseReporting&&Array.isArray(i.values))try{let a=i.values.map(a=>null==a?"null":a instanceof Buffer?a.toString():"object"!=typeof a?a.toString():"function"==typeof a.toPostgres?a.toPostgres():JSON.stringify(a));m.setAttribute(e.AttributeNames.PG_VALUES,a)}catch(a){d.diag.error("failed to stringify ",i.values,a)}return"string"==typeof i.name&&m.setAttribute(e.AttributeNames.PG_PLAN,i.name),m},c.handleExecutionResult=p,c.patchCallback=function(a,b,c,e,g){return function(h,i){h?(Object.prototype.hasOwnProperty.call(h,"code")&&(e[f.ATTR_ERROR_TYPE]=h.code),h instanceof Error&&b.recordException(q(h)),b.setStatus({code:d.SpanStatusCode.ERROR,message:h.message})):p(a,b,i),g(),b.end(),c.call(this,h,i)}},c.getPoolName=function(a){let b="";return(b+=(a?.host?`${a.host}`:"unknown_host")+":"+(a?.port?`${a.port}`:"unknown_port")+"/"+(a?.database?`${a.database}`:"unknown_database")).trim()},c.updateCounter=function(a,b,c,d,e){let f=b.totalCount,h=b.waitingCount,i=b.idleCount,j=f-i;return c.add(j-e.used,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),c.add(i-e.idle,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),d.add(h-e.pending,{[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),{used:j,idle:i,pending:h}},c.patchCallbackPGPool=function(a,b){return function(c,e,f){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.call(this,c,e,f)}},c.patchClientConnectCallback=function(a,b){return function(c){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.apply(this,arguments)}},c.getErrorMessage=function(a){return"object"==typeof a&&null!==a&&"message"in a?String(a.message):void 0},c.isObjectWithTextString=function(a){return"object"==typeof a&&"string"==typeof a?.text},c.sanitizedErrorMessage=q},499741,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.66.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},928742,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PgInstrumentation=void 0;let d=a.r(167300),e=a.r(832528),f=a.r(754229),g=a.r(182032),h=a.r(481992),i=a.r(499741),j=a.r(684683),k=a.r(498562),l=a.r(357122),m=a.r(283302);function n(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class o extends d.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._semconvStability=(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(l.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:e.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let a=[">=8.0.3 <9"],b=new d.InstrumentationNodeModuleFile("pg/lib/native/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),c=new d.InstrumentationNodeModuleFile("pg/lib/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new d.InstrumentationNodeModuleDefinition("pg",a,a=>{let b=n(a);return this._patchPgClient(b.Client),a},a=>{let b=n(a);return this._unpatchPgClient(b.Client),a},[c,b]),new d.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],a=>{let b=n(a);return(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"connect",this._getPoolConnectPatch()),b},a=>{let b=n(a);(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect")})]}_patchPgClient(a){if(!a)return;let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"query",this._getClientQueryPatch()),this._wrap(b.prototype,"connect",this._getClientConnectPatch()),a}_unpatchPgClient(a){let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),a}_getClientConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||d.ignoreConnectSpans)return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromConnection(this,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchClientConnectCallback(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}recordOperationDuration(a,b){let c={},e=[l.ATTR_DB_NAMESPACE,l.ATTR_ERROR_TYPE,l.ATTR_SERVER_PORT,l.ATTR_SERVER_ADDRESS,l.ATTR_DB_OPERATION_NAME];this._semconvStability&d.SemconvStability.OLD&&e.push(m.ATTR_DB_SYSTEM),this._semconvStability&d.SemconvStability.STABLE&&e.push(l.ATTR_DB_SYSTEM_NAME),e.forEach(b=>{b in a&&(c[b]=a[b])});let f=(0,k.hrTimeToMilliseconds)((0,k.hrTimeDuration)(b,(0,k.hrTime)()))/1e3;this._operationDuration.record(f,c)}_getClientQueryPatch(){let a=this;return b=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...c){let f;if(g.shouldSkipInstrumentation(a.getConfig()))return b.apply(this,c);let i=(0,k.hrTime)(),j=c[0],n="string"==typeof j,o=g.isObjectWithTextString(j),p=n?{text:j,values:Array.isArray(c[1])?c[1]:void 0}:o?{...j,name:j.name,text:j.text,values:j.values??(Array.isArray(c[1])?c[1]:void 0)}:void 0,q={[m.ATTR_DB_SYSTEM]:m.DB_SYSTEM_VALUE_POSTGRESQL,[l.ATTR_DB_NAMESPACE]:this.database,[l.ATTR_SERVER_PORT]:this.connectionParameters.port,[l.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};p?.text&&(q[l.ATTR_DB_OPERATION_NAME]=g.parseNormalizedOperationName(p?.text));let r=()=>{a.recordOperationDuration(q,i)},s=a.getConfig(),t=g.handleConfigQuery.call(this,a.tracer,s,a._semconvStability,p);if(s.addSqlCommenterCommentToQueries&&(n?c[0]=(0,h.addSqlCommenterComment)(t,j):!o||"name"in j||(c[0]={...j,text:(0,h.addSqlCommenterComment)(t,j.text)})),c.length>0){let b=e.trace.getSpan(e.context.active());if("function"==typeof c[c.length-1])c[c.length-1]=g.patchCallback(s,t,c[c.length-1],q,r),b&&(c[c.length-1]=e.context.bind(e.context.active(),c[c.length-1]));else if("function"==typeof p?.callback){let d=g.patchCallback(a.getConfig(),t,p.callback,q,r);b&&(d=e.context.bind(e.context.active(),d)),c[0].callback=d}}let{requestHook:u}=s;"function"==typeof u&&p&&(0,d.safeExecuteInTheMiddle)(()=>{let{database:a,host:b,port:c,user:d}=this.connectionParameters;u(t,{connection:{database:a,host:b,port:c,user:d},query:{text:p.text,values:p.values,name:p.name}})},b=>{b&&a._diag.error("Error running query hook",b)},!0);try{f=b.apply(this,c)}catch(a){throw a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(a)}),t.end(),a}return f instanceof Promise?f.then(b=>new Promise(c=>{g.handleExecutionResult(a.getConfig(),t,b),r(),t.end(),c(b)})).catch(a=>new Promise((b,c)=>{a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),r(),t.end(),c(a)})):f})}_setPoolConnectEventListeners(a){if(a[f.EVENT_LISTENERS_SET])return;let b=g.getPoolName(a.options);a.on("connect",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("acquire",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("remove",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("release",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a[f.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||(a._setPoolConnectEventListeners(this),d.ignoreConnectSpans))return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.POOL_CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromPoolConnection(this.options,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchCallbackPGPool(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}}function p(a,b){return b instanceof Promise?e.context.bind(e.context.active(),b.then(b=>(a.end(),b)).catch(b=>(b instanceof Error&&a.recordException(g.sanitizedErrorMessage(b)),a.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(b)}),a.end(),Promise.reject(b)))):b}c.PgInstrumentation=o},146635,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.PgInstrumentation=void 0;var d=a.r(928742);Object.defineProperty(c,"PgInstrumentation",{enumerable:!0,get:function(){return d.PgInstrumentation}});var e=a.r(263318);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},257141,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(146635),e=a.r(187845),f=a.r(309569),g="Postgres",h=f.generateInstrumentOnce(g,d.PgInstrumentation,a=>({requireParentSpan:!0,requestHook(a){f.addOriginToSpan(a,"auto.db.otel.postgres")},ignoreConnectSpans:a?.ignoreConnectSpans??!1})),i=e.defineIntegration(a=>({name:g,setupOnce(){h(a)}}));c.instrumentPostgres=h,c.postgresIntegration=i},870983,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(187845),h=a.r(309569),i=a.r(852223),j="PostgresJs",k=[">=3.0.0 <4"],l=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,m=Symbol.for("sentry.query.from.instrumented.sql"),n=h.generateInstrumentOnce(j,a=>new o({requireParentSpan:a?.requireParentSpan??!0,requestHook:a?.requestHook}));class o extends e.InstrumentationBase{constructor(a){super("sentry-postgres-js",g.SDK_VERSION,a)}init(){let a=new e.InstrumentationNodeModuleDefinition("postgres",k,a=>{try{return this._patchPostgres(a)}catch(b){return i.DEBUG_BUILD&&g.debug.error("Failed to patch postgres module:",b),a}},a=>a);return["src","cf/src","cjs/src"].forEach(b=>{a.files.push(new e.InstrumentationNodeModuleFile(`postgres/${b}/query.js`,k,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),a}_patchPostgres(a){let b="function"==typeof a,c=b?a:a.default;if("function"!=typeof c)return i.DEBUG_BUILD&&g.debug.warn("postgres module does not export a function. Skipping instrumentation."),a;let d=this,e=function(...a){let b=Reflect.construct(c,a);if(!b||"function"!=typeof b)return i.DEBUG_BUILD&&g.debug.warn("postgres() did not return a valid instance"),b;let e=d.getConfig();return g.instrumentPostgresJsSql(b,{requireParentSpan:e.requireParentSpan,requestHook:e.requestHook})};for(let a of(Object.setPrototypeOf(e,c),Object.setPrototypeOf(e.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(e,a,b)}return b?e:(g.replaceExports(a,"default",e),a)}_shouldCreateSpans(){let a=this.getConfig();return void 0!==d.trace.getSpan(d.context.active())||!a.requireParentSpan}_setOperationName(a,b,c){if(c)return void a.setAttribute(f.ATTR_DB_OPERATION_NAME,c);let d=b?.match(l);d?.[1]&&a.setAttribute(f.ATTR_DB_OPERATION_NAME,d[1].toUpperCase())}_reconstructQuery(a){if(a?.length)return 1===a.length?a[0]||void 0:a.reduce((a,b,c)=>0===c?b:`${a}$${c}${b}`,"")}_sanitizeSqlQuery(a){return a?a.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{h.addOriginToSpan(d,"auto.db.postgresjs"),d.setAttributes({[f.ATTR_DB_SYSTEM_NAME]:"postgres",[f.ATTR_DB_QUERY_TEXT]:k});let{requestHook:l}=b.getConfig();l&&e.safeExecuteInTheMiddle(()=>l(d,k,void 0),a=>{a&&(d.setAttribute("sentry.hook.error","requestHook failed"),i.DEBUG_BUILD&&g.debug.error(`Error in requestHook for ${j} integration:`,a))},!0);let m=this.resolve;this.resolve=new Proxy(m,{apply:(a,c,e)=>{try{b._setOperationName(d,k,e?.[0]?.command),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in resolve callback:",a)}return Reflect.apply(a,c,e)}});let n=this.reject;this.reject=new Proxy(n,{apply:(a,c,e)=>{try{d.setStatus({code:g.SPAN_STATUS_ERROR,message:e?.[0]?.message||"unknown_error"}),d.setAttribute(f.ATTR_DB_RESPONSE_STATUS_CODE,e?.[0]?.code||"unknown"),d.setAttribute(f.ATTR_ERROR_TYPE,e?.[0]?.name||"unknown"),b._setOperationName(d,k),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in reject callback:",a)}return Reflect.apply(a,c,e)}});try{return c.apply(this,a)}catch(a){throw d.setStatus({code:g.SPAN_STATUS_ERROR,message:a instanceof Error?a.message:"unknown_error"}),d.end(),a}})},a.Query.prototype.handle.__sentry_original__=c,a}_unpatchQueryPrototype(a){return a.Query.prototype.handle.__sentry_original__&&(a.Query.prototype.handle=a.Query.prototype.handle.__sentry_original__),a}}let p=g.defineIntegration(a=>({name:j,setupOnce(){n(a)}}));c.PostgresJsInstrumentation=o,c.instrumentPostgresJs=n,c.postgresJsIntegration=p},116141,a=>{"use strict";a.s([],613895),a.i(613895);var b,c,d=a.i(236471),e=a.i(231261);let f="object"==typeof globalThis?globalThis:a.g,g=Symbol.for("io.opentelemetry.js.api.logs");class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return f[g]?this.getLoggerProvider():(f[g]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=f[g])?void 0:a.call(f,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete f[g],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(984414);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(a=>a.name===g).filter(b=>af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!1},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{name;supportedVersions;patch;unpatch;files;constructor(a,b,c,d,e){this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d,this.files=e||[]}}class ah{supportedVersions;patch;unpatch;name;constructor(a,b,c,d){this.supportedVersions=b,this.patch=c,this.unpatch=d,this.name=(0,p.normalize)(a)}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],116141)},634149,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={PrismaInstrumentation:()=>w,registerInstrumentations:()=>x.registerInstrumentations};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let i of f(b))g.call(a,i)||i===c||d(a,i,{get:()=>b[i],enumerable:!(h=e(b,i))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(832528),l=a.r(116141),m="7.6.0".split(".")[0],n="PRISMA_INSTRUMENTATION",o=`V${m}_PRISMA_INSTRUMENTATION`,p=globalThis,q=a.r(832528),r="true"===process.env.PRISMA_SHOW_ALL_TRACES,s=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:a,ignoreSpanTypes:b}){this.tracerProvider=a,this.ignoreSpanTypes=b}isEnabled(){return!0}getTraceParent(a){let b=q.trace.getSpanContext(a??q.context.active());return b?`00-${b.traceId}-${b.spanId}-0${b.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(a){let b=this.tracerProvider.getTracer("prisma"),c=new Map;for(let d of a.filter(a=>null===a.parentId))!function a(b,c,d,e,f){if(u(c.name,f))return;let g={attributes:c.attributes,kind:"client"===c.kind?q.SpanKind.CLIENT:q.SpanKind.INTERNAL,startTime:c.startTime};b.startActiveSpan(c.name,g,g=>{for(let h of(e.set(c.id,g.spanContext().spanId),c.links&&g.addLinks(c.links.flatMap(a=>{let b=e.get(a);return b?{context:{spanId:b,traceId:g.spanContext().traceId,traceFlags:g.spanContext().traceFlags}}:[]})),d.filter(a=>a.parentId===c.id)))a(b,h,d,e,f);g.end(c.endTime)})}(b,d,a,c,this.ignoreSpanTypes)}getActiveContext(){return q.context.active()}runInChildSpan(a,b){if("string"==typeof a&&(a={name:a}),a.internal&&!r)return b();let c=this.tracerProvider.getTracer("prisma"),d=a.context??this.getActiveContext(),e=`prisma:client:${a.name}`;if(u(e,this.ignoreSpanTypes))return b();if(!1===a.active){let f=c.startSpan(e,a,d);return t(f,b(f,d))}return c.startActiveSpan(e,a,a=>t(a,b(a,d)))}};function t(a,b){var c;return null!=(c=b)&&"function"==typeof c.then?b.then(b=>(a.end(),b),b=>{throw a.end(),b}):(a.end(),b)}function u(a,b){return b.some(b=>"string"==typeof b?b===a:b.test(a))}var v="7.6.0",w=class extends l.InstrumentationBase{tracerProvider;constructor(a={}){super("@prisma/instrumentation",v,a)}setTracerProvider(a){this.tracerProvider=a}init(){return[new l.InstrumentationNodeModuleDefinition("@prisma/client",[v])]}enable(){let a,b=this._config;a={helper:new s({tracerProvider:this.tracerProvider??k.trace.getTracerProvider(),ignoreSpanTypes:b.ignoreSpanTypes??[]})},p[o]=a,p[n]=a}disable(){delete p[o],delete p[n]}isEnabled(){return void 0!==function(){let a=p[o];if(a?.helper)return a.helper;let b=p[n];return b?.helper}()}},x=a.r(116141)},770948,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(634149),f=a.r(187845),g=a.r(309569),h="Prisma";function i(){let a=globalThis.PRISMA_INSTRUMENTATION;return a&&"object"==typeof a&&"helper"in a?a.helper:void 0}class j extends e.PrismaInstrumentation{constructor(a){super(a?.instrumentationConfig)}enable(){super.enable();let a=i();a&&"object"==typeof a&&"dispatchEngineSpans"in a&&(a.createEngineSpan=a=>{let b=d.trace.getTracer("prismaV5Compatibility"),c=b._idGenerator;if(!c)return void f.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{a.spans.forEach(a=>{var e;let f=(e=a.kind,"client"===e?d.SpanKind.CLIENT:d.SpanKind.INTERNAL),g=a.parent_span_id,h=a.span_id,i=a.trace_id,j=a.links?.map(a=>({context:{traceId:a.trace_id,spanId:a.span_id,traceFlags:d.TraceFlags.SAMPLED}})),k=d.trace.setSpanContext(d.context.active(),{traceId:i,spanId:g,traceFlags:d.TraceFlags.SAMPLED});d.context.with(k,()=>{b._idGenerator={generateTraceId:()=>i,generateSpanId:()=>h},b.startSpan(a.name,{kind:f,links:j,startTime:a.start_time,attributes:a.attributes}).end(a.end_time),b._idGenerator=c})})}finally{b._idGenerator=c}})}}let k=g.generateInstrumentOnce(h,a=>new j(a)),l=f.defineIntegration(a=>({name:h,setupOnce(){k(a)},setup(a){i()&&a.on("spanStart",a=>{let b=f.spanToJSON(a);b.description?.startsWith("prisma:")&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===b.description&&b.data["db.query.text"]&&a.updateName(b.data["db.query.text"]),"prisma:engine:db_query"!==b.description||b.data["db.system"]||a.setAttribute("db.system","prisma")})}}));c.instrumentPrisma=k,c.prismaIntegration=l},327397,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},31093,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiLifecycleMethodNames=c.HapiLayerType=c.handlerPatched=c.HapiComponentName=void 0,c.HapiComponentName="@hapi/hapi",c.handlerPatched=Symbol("hapi-handler-patched"),c.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},c.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},437108,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_HTTP_METHOD=void 0,c.ATTR_HTTP_METHOD="http.method"},678965,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).HAPI_TYPE="hapi.type",d.PLUGIN_NAME="hapi.plugin.name",d.EXT_TYPE="server.ext.type"},636223,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getPluginFromInput=c.getExtMetadata=c.getRouteMetadata=c.isPatchableExtMethod=c.isDirectExtInput=c.isLifecycleExtEventObj=c.isLifecycleExtType=c.getPluginName=void 0;let d=a.r(357122),e=a.r(437108),f=a.r(31093),g=a.r(678965),h=a.r(167300);c.getPluginName=function(a){return a.name?a.name:a.pkg.name},c.isLifecycleExtType=a=>"string"==typeof a&&f.HapiLifecycleMethodNames.has(a),c.isLifecycleExtEventObj=a=>{let b=a?.type;return void 0!==b&&(0,c.isLifecycleExtType)(b)},c.isDirectExtInput=a=>Array.isArray(a)&&a.length<=3&&(0,c.isLifecycleExtType)(a[0])&&"function"==typeof a[1],c.isPatchableExtMethod=a=>!Array.isArray(a),c.getRouteMetadata=(a,b,c)=>{let i,j={[d.ATTR_HTTP_ROUTE]:a.path};return b&h.SemconvStability.OLD&&(j[e.ATTR_HTTP_METHOD]=a.method),b&h.SemconvStability.STABLE&&(j[d.ATTR_HTTP_REQUEST_METHOD]=a.method),c?(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.PLUGIN,j[g.AttributeNames.PLUGIN_NAME]=c,i=`${c}: route - ${a.path}`):(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.ROUTER,i=`route - ${a.path}`),{attributes:j,name:i}},c.getExtMetadata=(a,b,c)=>{let d=`ext - ${a}`;return(c&&"method"!==c&&(d=`ext - ${a} - ${c}`),b)?{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT,[g.AttributeNames.PLUGIN_NAME]:b},name:`${b}: ${d}`}:{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT},name:d}},c.getPluginFromInput=a=>"plugin"in a?"plugin"in a.plugin?a.plugin.plugin:a.plugin:a},487995,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(327397),h=a.r(31093),i=a.r(636223);class j extends f.InstrumentationBase{_semconvStability;constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a),this._semconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new f.InstrumentationNodeModuleDefinition(h.HapiComponentName,[">=17.0.0 <22"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return(0,f.isWrapped)(b.server)||this._wrap(b,"server",this._getServerPatch.bind(this)),(0,f.isWrapped)(b.Server)||this._wrap(b,"Server",this._getServerPatch.bind(this)),b},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;this._massUnwrap([b],["server","Server"])})}_getServerPatch(a){let b=this,c=this;return function(d){let e=a.apply(this,[d]);return c._wrap(e,"route",a=>b._getServerRoutePatch.bind(b)(a)),c._wrap(e,"ext",a=>b._getServerExtPatch.bind(b)(a)),c._wrap(e,"register",b._getServerRegisterPatch.bind(b)),e}}_getServerRegisterPatch(a){let b=this;return function(c,d){if(Array.isArray(c))for(let a of c){let c=(0,i.getPluginFromInput)(a);b._wrapRegisterHandler(c)}else{let a=(0,i.getPluginFromInput)(c);b._wrapRegisterHandler(a)}return a.apply(this,[c,d])}}_getServerExtPatch(a,b){let c=this;return function(...d){if(Array.isArray(d[0])){let a=d[0];for(let d=0;db._getServerRoutePatch.bind(b)(a,c)),e._wrap(a,"ext",a=>b._getServerExtPatch.bind(b)(a,c)),d.call(this,a,f)}}_wrapExtMethods(a,b,c){let e=this;if(a instanceof Array)for(let c=0;casync function(...g){if(void 0===d.trace.getSpan(d.context.active()))return await f.call(this,...g);let h=(0,e.getRPCMetadata)(d.context.active());h?.type===e.RPCType.HTTP&&(h.route=a.path);let j=(0,i.getRouteMetadata)(a,c._semconvStability,b),k=c.tracer.startSpan(j.name,{attributes:j.attributes});try{return await d.context.with(d.trace.setSpan(d.context.active(),k),()=>f.call(this,...g))}catch(a){throw k.recordException(a),k.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),a}finally{k.end()}};if("function"==typeof a.handler)a.handler=f(a.handler);else if("function"==typeof a.options){let b=a.options;a.options=function(a){let c=b(a);return"function"==typeof c.handler&&(c.handler=f(c.handler)),c}}else"function"==typeof a.options?.handler&&(a.options.handler=f(a.options.handler));return a}}c.HapiInstrumentation=j},984769,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.HapiInstrumentation=void 0;var d=a.r(487995);Object.defineProperty(c,"HapiInstrumentation",{enumerable:!0,get:function(){return d.HapiInstrumentation}});var e=a.r(678965);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},969899,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(984769),e=a.r(187845),f=a.r(309569),g=a.r(852223),h="Hapi",i=f.generateInstrumentOnce(h,()=>new d.HapiInstrumentation),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}})),k={name:"SentryHapiErrorPlugin",version:e.SDK_VERSION,register:async function(a){a.events.on({name:"request",channels:["error"]},(a,b)=>{var c;if(e.getIsolationScope()!==e.getDefaultIsolationScope()){let b=a.route;b.path&&e.getIsolationScope().setTransactionName(`${b.method.toUpperCase()} ${b.path}`)}else g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");b&&"object"==typeof b&&"error"in b&&b.error&&(c=b.error,e.captureException(c,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function l(a){await a.register(k);let b=e.getClient();b&&b.on("spanStart",a=>{var b;let c,d;b=a,d=(c=e.spanToJSON(b).data)["hapi.type"],!c[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&d&&b.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${d}.hapi`})}),f.ensureIsWrapped(a.register,"hapi")}c.hapiErrorPlugin=k,c.hapiIntegration=j,c.instrumentHapi=i,c.setupHapiErrorHandler=l},547707,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},c.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},106789,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300),f=a.r(187845),g=a.r(547707);class h extends e.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-hono","0.0.1",a)}init(){return[new e.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],a=>this._patch(a))]}_patch(a){let b=this;class c extends a.Hono{constructor(...a){super(...a),b._wrap(this,"get",b._patchHandler()),b._wrap(this,"post",b._patchHandler()),b._wrap(this,"put",b._patchHandler()),b._wrap(this,"delete",b._patchHandler()),b._wrap(this,"options",b._patchHandler()),b._wrap(this,"patch",b._patchHandler()),b._wrap(this,"all",b._patchHandler()),b._wrap(this,"on",b._patchOnHandler()),b._wrap(this,"use",b._patchMiddlewareHandler())}}try{a.Hono=c}catch{return{...a,Hono:c}}return a}_patchHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_patchOnHandler(){let a=this;return function(b){return function(...c){let d=c.slice(2);return b.apply(this,[...c.slice(0,2),...d.map(b=>a._wrapHandler(b))])}}}_patchMiddlewareHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_wrapHandler(a){let b=this;return function(c,e){if(!b.isEnabled())return a.apply(this,[c,e]);let h=c.req.path,i=b.tracer.startSpan(h);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>b._safeExecute(()=>{let d=a.apply(this,[c,e]);if(f.isThenable(d))return d.then(c=>{let d=b._determineHandlerType(c);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:d,[g.AttributeNames.HONO_NAME]:d===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),c});{let c=b._determineHandlerType(d);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:c,[g.AttributeNames.HONO_NAME]:c===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),d}},()=>i.end(),a=>{b._handleError(i,a),i.end()}))}}_safeExecute(a,b,c){try{let d=a();return f.isThenable(d)?d.then(()=>b(),a=>c(a)):b(),d}catch(a){throw c(a),a}}_determineHandlerType(a){return void 0===a?g.HonoTypes.MIDDLEWARE:g.HonoTypes.REQUEST_HANDLER}_handleError(a,b){b instanceof Error&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b))}}c.HonoInstrumentation=h},27047,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(309569),g=a.r(852223),h=a.r(547707),i=a.r(106789),j="Hono",k=f.generateInstrumentOnce(j,()=>new i.HonoInstrumentation({responseHook:a=>{!function(a){let b=e.spanToJSON(a).data,c=b[h.AttributeNames.HONO_TYPE];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.hono`});let f=b[h.AttributeNames.HONO_NAME];if("string"==typeof f&&a.updateName(f),e.getIsolationScope()===e.getDefaultIsolationScope()){g.DEBUG_BUILD&&e.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let i=b[d.ATTR_HTTP_ROUTE],j=b[d.ATTR_HTTP_REQUEST_METHOD];"string"==typeof i&&"string"==typeof j&&e.getIsolationScope().setTransactionName(`${j} ${i}`)}(a)}})),l=e.defineIntegration(()=>({name:j,setupOnce(){k()}}));c.honoIntegration=l,c.instrumentHono=k,c.setupHonoErrorHandler=function(a,b){a.use(async function(a,b){let c=e.httpRequestToRequestData(a.req);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:c}),await b()}),a.use(async function(a,c){await c(),(b?.shouldHandleError||function(a){return a.res.status>=500})(a)&&(a.res.sentry=e.captureException(a.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),f.ensureIsWrapped(a.use,"hono")}},784005,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=void 0,(d=c.KoaLayerType||(c.KoaLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware"},327081,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},325778,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).KOA_TYPE="koa.type",d.KOA_NAME="koa.name"},703707,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isLayerIgnored=c.getMiddlewareMetadata=void 0;let d=a.r(784005),e=a.r(325778),f=a.r(357122);c.getMiddlewareMetadata=(a,b,c,g)=>c?{attributes:{[e.AttributeNames.KOA_NAME]:g?.toString(),[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.ROUTER,[f.ATTR_HTTP_ROUTE]:g?.toString()},name:a._matchedRouteName||`router - ${g}`}:{attributes:{[e.AttributeNames.KOA_NAME]:b.name??"middleware",[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.MIDDLEWARE},name:`middleware - ${b.name}`},c.isLayerIgnored=(a,b)=>!!(Array.isArray(b?.ignoreLayersType)&&b?.ignoreLayersType?.includes(a))},730772,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.kLayerPatched=void 0,c.kLayerPatched=Symbol("koa-layer-patched")},151114,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(784005),g=a.r(327081),h=a.r(703707),i=a.r(498562),j=a.r(730772);class k extends e.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return new e.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return null==b?b:((0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use"),this._wrap(b.prototype,"use",this._getKoaUsePatch.bind(this)),a)},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;(0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use")})}_getKoaUsePatch(a){let b=this;return function(c){let d;return d=c.router?b._patchRouterDispatch(c):b._patchLayer(c,!1),a.apply(this,[d])}}_patchRouterDispatch(a){d.diag.debug("Patching @koa/router dispatch");let b=a.router;for(let a of b?.stack??[]){let b=a.path,c=a.stack;for(let a=0;a{if(void 0===d.trace.getSpan(d.context.active()))return a(f,j);let k=(0,h.getMiddlewareMetadata)(f,a,b,c),l=this.tracer.startSpan(k.name,{attributes:k.attributes}),m=(0,i.getRPCMetadata)(d.context.active());m?.type===i.RPCType.HTTP&&f._matchedRoute&&(m.route=f._matchedRoute.toString());let{requestHook:n}=this.getConfig();n&&(0,e.safeExecuteInTheMiddle)(()=>n(l,{context:f,middlewareLayer:a,layerType:g}),a=>{a&&d.diag.error("koa instrumentation: request hook failed",a)},!0);let o=d.trace.setSpan(d.context.active(),l);return d.context.with(o,async()=>{try{return await a(f,j)}catch(a){throw l.recordException(a),a}finally{l.end()}})})}}c.KoaInstrumentation=k},474061,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=c.AttributeNames=c.KoaInstrumentation=void 0;var d=a.r(151114);Object.defineProperty(c,"KoaInstrumentation",{enumerable:!0,get:function(){return d.KoaInstrumentation}});var e=a.r(325778);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}});var f=a.r(784005);Object.defineProperty(c,"KoaLayerType",{enumerable:!0,get:function(){return f.KoaLayerType}})},550583,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(474061),e=a.r(357122),f=a.r(187845),g=a.r(309569),h=a.r(852223),i=g.generateInstrumentOnce("Koa",d.KoaInstrumentation,(a={})=>({ignoreLayersType:a.ignoreLayersType,requestHook(a,b){g.addOriginToSpan(a,"auto.http.otel.koa");let c=f.spanToJSON(a).data,d=c["koa.type"];d&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${d}.koa`);let i=c["koa.name"];if("string"==typeof i&&a.updateName(i||"< unknown >"),f.getIsolationScope()===f.getDefaultIsolationScope()){h.DEBUG_BUILD&&f.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let j=c[e.ATTR_HTTP_ROUTE],k=b.context?.request?.method?.toUpperCase()||"GET";j&&f.getIsolationScope().setTransactionName(`${k} ${j}`)}})),j=f.defineIntegration((a={})=>({name:"Koa",setupOnce(){i(a)}}));c.instrumentKoa=i,c.koaIntegration=j,c.setupKoaErrorHandler=a=>{a.use(async(a,b)=>{try{await b()}catch(a){throw f.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),a}}),g.ensureIsWrapped(a.use,"koa")}},791516,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectNames=c.ConnectTypes=c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).CONNECT_TYPE="connect.type",d.CONNECT_NAME="connect.name",(e=c.ConnectTypes||(c.ConnectTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",(f=c.ConnectNames||(c.ConnectNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},544769,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},109564,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=void 0,c._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},679231,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.generateRoute=c.replaceCurrentStackRoute=c.addNewStackLayer=void 0;let d=a.r(832528),e=a.r(109564);c.addNewStackLayer=a=>{!1===Array.isArray(a[e._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,e._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),a[e._LAYERS_STORE_PROPERTY].push("/");let b=a[e._LAYERS_STORE_PROPERTY].length;return()=>{b===a[e._LAYERS_STORE_PROPERTY].length?a[e._LAYERS_STORE_PROPERTY].pop():d.diag.warn("Connect: Trying to pop the stack multiple time")}},c.replaceCurrentStackRoute=(a,b)=>{b&&a[e._LAYERS_STORE_PROPERTY].splice(-1,1,b)},c.generateRoute=a=>a[e._LAYERS_STORE_PROPERTY].reduce((a,b)=>a.replace(/\/+$/,"")+b)},161740,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectInstrumentation=c.ANONYMOUS_NAME=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(791516),g=a.r(544769),h=a.r(167300),i=a.r(357122),j=a.r(679231);c.ANONYMOUS_NAME="anonymous";class k extends h.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new h.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_patchApp(a){(0,h.isWrapped)(a.use)||this._wrap(a,"use",this._patchUse.bind(this)),(0,h.isWrapped)(a.handle)||this._wrap(a,"handle",this._patchHandle.bind(this))}_patchConstructor(a){let b=this;return function(...c){let d=a.apply(this,c);return b._patchApp(d),d}}_patchNext(a,b){return function(c){let d=a.apply(this,[c]);return b(),d}}_startSpan(a,b){let d,e,g;a?(d=f.ConnectTypes.REQUEST_HANDLER,g=f.ConnectNames.REQUEST_HANDLER,e=a):(d=f.ConnectTypes.MIDDLEWARE,g=f.ConnectNames.MIDDLEWARE,e=b.name||c.ANONYMOUS_NAME);let h=`${g} - ${e}`,j={attributes:{[i.ATTR_HTTP_ROUTE]:a.length>0?a:"/",[f.AttributeNames.CONNECT_TYPE]:d,[f.AttributeNames.CONNECT_NAME]:e}};return this.tracer.startSpan(h,j)}_patchMiddleware(a,b){let f=this,g=4===b.length;function h(){if(!f.isEnabled())return b.apply(this,arguments);let[h,i,k]=g?[1,2,3]:[0,1,2],l=arguments[h],m=arguments[i],n=arguments[k];(0,j.replaceCurrentStackRoute)(l,a);let o=(0,e.getRPCMetadata)(d.context.active());a&&o?.type===e.RPCType.HTTP&&(o.route=(0,j.generateRoute)(l));let p="";p=a?`request handler - ${a}`:`middleware - ${b.name||c.ANONYMOUS_NAME}`;let q=f._startSpan(a,b);f._diag.debug("start span",p);let r=!1;function s(){r?f._diag.debug(`span ${q.name} - already finished`):(r=!0,f._diag.debug(`finishing span ${q.name}`),q.end()),m.removeListener("close",s)}return m.addListener("close",s),arguments[k]=f._patchNext(n,s),b.apply(this,arguments)}return Object.defineProperty(h,"length",{value:b.length,writable:!1,configurable:!0}),h}_patchUse(a){let b=this;return function(...c){let d=c[c.length-1],e=c[c.length-2]||"";return c[c.length-1]=b._patchMiddleware(e,d),a.apply(this,c)}}_patchHandle(a){let b=this;return function(){let[c,d]=[0,2],e=arguments[c],f=arguments[d],g=(0,j.addNewStackLayer)(e);return"function"==typeof f&&(arguments[d]=b._patchOut(f,g)),a.apply(this,arguments)}}_patchOut(a,b){return function(...c){return b(),Reflect.apply(a,this,c)}}}c.ConnectInstrumentation=k},403473,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectTypes=c.ConnectNames=c.AttributeNames=c.ANONYMOUS_NAME=c.ConnectInstrumentation=void 0;var d=a.r(161740);Object.defineProperty(c,"ConnectInstrumentation",{enumerable:!0,get:function(){return d.ConnectInstrumentation}}),Object.defineProperty(c,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return d.ANONYMOUS_NAME}});var e=a.r(791516);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}}),Object.defineProperty(c,"ConnectNames",{enumerable:!0,get:function(){return e.ConnectNames}}),Object.defineProperty(c,"ConnectTypes",{enumerable:!0,get:function(){return e.ConnectTypes}})},617413,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(403473),e=a.r(187845),f=a.r(309569),g="Connect",h=f.generateInstrumentOnce(g,()=>new d.ConnectInstrumentation);function i(a,b,c,d){e.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),d(a)}c.connectIntegration=e.defineIntegration(()=>({name:g,setupOnce(){h()}})),c.instrumentConnect=h,c.setupConnectErrorHandler=a=>{a.use(i);let b=e.getClient();b&&b.on("spanStart",a=>{!function(a){let b=e.spanToJSON(a).data,c=b["connect.type"];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.connect`});let d=b["connect.name"];"string"==typeof d&&a.updateName(d)}(a)}),f.ensureIsWrapped(a.use,"connect")}},194619,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},11859,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SUPPORTED_VERSIONS=c.MODULE_NAME=void 0,c.MODULE_NAME="knex",c.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},764122,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_SQLITE=c.ATTR_NET_TRANSPORT=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.ATTR_NET_TRANSPORT="net.transport",c.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},496910,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.extractTableName=c.extractPortFromConnectionString=c.extractHostFromConnectionString=c.extractDatabaseFromConnectionString=c.limitLength=c.getName=c.mapSystem=c.otelExceptionFromKnexError=c.getFormatter=void 0;let d=a.r(357122),e=a.r(764122);c.getFormatter=a=>{if(a){if(a.client){if(a.client._formatQuery)return a.client._formatQuery.bind(a.client);else if(a.client.SqlString)return a.client.SqlString.format.bind(a.client.SqlString)}if(a.builder)return a.builder.toString.bind(a.builder)}return()=>""},c.otelExceptionFromKnexError=function(a,b){return a&&a instanceof Error?{message:b,code:a.code,stack:a.stack,name:a.name}:a};let f=new Map([["sqlite3",e.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",d.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);c.mapSystem=a=>f.get(a)||a,c.getName=(a,b,c)=>b?c?`${b} ${a}.${c}`:`${b} ${a}`:a,c.limitLength=(a,b)=>"string"==typeof a&&"number"==typeof b&&0{if(a)try{return new URL(a).pathname?.replace(/^\//,"")||void 0}catch{return}},c.extractHostFromConnectionString=a=>{if(a)try{return new URL(a).hostname||void 0}catch{return}},c.extractPortFromConnectionString=a=>{if(a)try{let b=new URL(a).port;return b?parseInt(b,10):void 0}catch{return}},c.extractTableName=a=>{let b=a?._single?.table;return"object"==typeof b?(0,c.extractTableName)(b):b}},242713,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;let d=a.r(832528),e=a.r(194619),f=a.r(11859),g=a.r(167300),h=a.r(496910),i=a.r(357122),j=a.r(764122),k=Symbol("opentelemetry.instrumentation-knex.context"),l={maxQueryLength:1022,requireParentSpan:!1};class m extends g.InstrumentationBase{_semconvStability;constructor(a={}){super(e.PACKAGE_NAME,e.PACKAGE_VERSION,{...l,...a}),this._semconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new g.InstrumentationNodeModuleDefinition(f.MODULE_NAME,f.SUPPORTED_VERSIONS);return a.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),a}getRunnerNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/runner.js`,f.SUPPORTED_VERSIONS,(a,b)=>(this.ensureWrapped(a.prototype,"query",this.createQueryWrapper(b)),a),(a,b)=>(this._unwrap(a.prototype,"query"),a))}getClientNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/client.js`,f.SUPPORTED_VERSIONS,a=>(this.ensureWrapped(a.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"raw",this.storeContext.bind(this)),a),a=>(this._unwrap(a.prototype,"queryBuilder"),this._unwrap(a.prototype,"schemaBuilder"),this._unwrap(a.prototype,"raw"),a))}createQueryWrapper(a){let b=this;return function(c){return function(e){let f=this.client.config,l=h.extractTableName(this.builder),m=e?.method,n=f?.connection?.connectionString,o=f?.connection?.filename||f?.connection?.database||h.extractDatabaseFromConnectionString(n),{maxQueryLength:p}=b.getConfig(),q={"knex.version":a},r=f?.connection?.filename===":memory:"?"inproc":void 0;if(b._semconvStability&g.SemconvStability.OLD&&Object.assign(q,{[j.ATTR_DB_SYSTEM]:h.mapSystem(this.client.driverName),[j.ATTR_DB_SQL_TABLE]:l,[j.ATTR_DB_OPERATION]:m,[j.ATTR_DB_USER]:f?.connection?.user,[j.ATTR_DB_NAME]:o,[j.ATTR_NET_PEER_NAME]:f?.connection?.host??h.extractHostFromConnectionString(n),[j.ATTR_NET_PEER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n),[j.ATTR_NET_TRANSPORT]:r}),b._semconvStability&g.SemconvStability.STABLE&&Object.assign(q,{[i.ATTR_DB_SYSTEM_NAME]:h.mapSystem(this.client.driverName),[i.ATTR_DB_COLLECTION_NAME]:l,[i.ATTR_DB_OPERATION_NAME]:m,[i.ATTR_DB_NAMESPACE]:o,[i.ATTR_SERVER_ADDRESS]:f?.connection?.host??h.extractHostFromConnectionString(n),[i.ATTR_SERVER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n)}),p){let a=h.limitLength(e?.sql,p);b._semconvStability&g.SemconvStability.STABLE&&(q[i.ATTR_DB_QUERY_TEXT]=a),b._semconvStability&g.SemconvStability.OLD&&(q[j.ATTR_DB_STATEMENT]=a)}let s=this.builder[k]||d.context.active(),t=d.trace.getSpan(s),u=t&&d.trace.isSpanContextValid(t.spanContext());if(b._config.requireParentSpan&&!u)return c.bind(this)(...arguments);let v=b.tracer.startSpan(h.getName(o,m,l),{kind:d.SpanKind.CLIENT,attributes:q},s),w=d.trace.setSpan(d.context.active(),v);return d.context.with(w,c,this,...arguments).then(a=>(v.end(),a)).catch(a=>{let b=h.getFormatter(this)(e.sql,e.bindings||[]),c=a.message.replace(b+" - ",""),f=h.otelExceptionFromKnexError(a,c);throw v.recordException(f),v.setStatus({code:d.SpanStatusCode.ERROR,message:c}),v.end(),a})}}}storeContext(a){return function(){let b=a.apply(this,arguments);return Object.defineProperty(b,k,{value:d.context.active()}),b}}ensureWrapped(a,b,c){(0,g.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,c)}}c.KnexInstrumentation=m},555384,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;var d=a.r(242713);Object.defineProperty(c,"KnexInstrumentation",{enumerable:!0,get:function(){return d.KnexInstrumentation}})},523682,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(555384),e=a.r(187845),f=a.r(309569),g="Knex",h=f.generateInstrumentOnce(g,()=>new d.KnexInstrumentation({requireParentSpan:!0})),i=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{data:b}=e.spanToJSON(a);"knex.version"in b&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});c.instrumentKnex=h,c.knexIntegration=i},895264,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MSSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MSSQL="mssql"},910191,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.once=c.getSpanName=void 0,c.getSpanName=function(a,b,c,d){return"execBulkLoad"===a&&d&&b?`${a} ${d} ${b}`:"callProcedure"===a?b?`${a} ${c} ${b}`:`${a} ${c}`:b?`${a} ${b}`:`${a}`},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}}},855594,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},407612,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=c.INJECTED_CTX=void 0;let d=a.r(832528),e=a.r(427699),f=a.r(167300),g=a.r(357122),h=a.r(895264),i=a.r(910191),j=a.r(855594),k=Symbol("opentelemetry.instrumentation-tedious.current-database");c.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let l=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function m(a){Object.defineProperty(this,k,{value:a,writable:!0})}class n extends f.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,f.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new f.InstrumentationNodeModuleDefinition(n.COMPONENT,[">=1.11.0 <20"],a=>{let b=a.Connection.prototype;for(let c of l)(0,f.isWrapped)(b[c])&&this._unwrap(b,c),this._wrap(b,c,this._patchQuery(c,a));return(0,f.isWrapped)(b.connect)&&this._unwrap(b,"connect"),this._wrap(b,"connect",this._patchConnect),a},a=>{if(void 0===a)return;let b=a.Connection.prototype;for(let a of l)this._unwrap(b,a);this._unwrap(b,"connect")})]}_patchConnect(a){return function(){return m.call(this,this.config?.options?.database),this.removeListener("databaseChange",m),this.on("databaseChange",m),this.once("end",()=>{this.removeListener("databaseChange",m)}),a.apply(this,arguments)}}_buildTraceparent(a){let b=a.spanContext();return`00-${b.traceId}-${b.spanId}-0${Number(b.traceFlags||d.TraceFlags.NONE).toString(16)}`}_injectContextInfo(a,b,d){return new Promise(e=>{try{let f=new b.Request("set context_info @opentelemetry_traceparent",a=>{e()});Object.defineProperty(f,c.INJECTED_CTX,{value:!0});let g=Buffer.from(d,"utf8");f.addParameter("opentelemetry_traceparent",b.TYPES.VarBinary,g,{length:g.length}),a.execSql(f)}catch{e()}})}_shouldInjectFor(a){return"execSql"===a||"execSqlBatch"===a||"callProcedure"===a||"execute"===a}_patchQuery(a,b){return j=>{let l=this;function m(m){if(m?.[c.INJECTED_CTX])return j.apply(this,arguments);if(!(m instanceof e.EventEmitter))return l._diag.warn(`Unexpected invocation of patched ${a} method. Span not recorded`),j.apply(this,arguments);let n=0,o=0,p=()=>o++,q=()=>n++,r=this[k],s="sp_prepare"===m.sqlTextOrProcedure&&m.parametersByName?.stmt?.value?m.parametersByName.stmt.value:m.sqlTextOrProcedure,t={};l._dbSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_DB_SYSTEM]=h.DB_SYSTEM_VALUE_MSSQL,t[h.ATTR_DB_NAME]=r,t[h.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,t[h.ATTR_DB_STATEMENT]=s,t[h.ATTR_DB_SQL_TABLE]=m.table),l._dbSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_DB_NAMESPACE]=r,t[g.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,t[g.ATTR_DB_QUERY_TEXT]=s,t[g.ATTR_DB_COLLECTION_NAME]=m.table),l._netSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_NET_PEER_NAME]=this.config?.server,t[h.ATTR_NET_PEER_PORT]=this.config?.options?.port),l._netSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_SERVER_ADDRESS]=this.config?.server,t[g.ATTR_SERVER_PORT]=this.config?.options?.port);let u=l.tracer.startSpan((0,i.getSpanName)(a,r,s,m.table),{kind:d.SpanKind.CLIENT,attributes:t}),v=(0,i.once)(a=>{m.removeListener("done",p),m.removeListener("doneInProc",p),m.removeListener("doneProc",q),m.removeListener("error",v),this.removeListener("end",v),u.setAttribute("tedious.procedure_count",n),u.setAttribute("tedious.statement_count",o),a&&u.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),u.end()});m.on("done",p),m.on("doneInProc",p),m.on("doneProc",q),m.once("error",v),this.on("end",v),"function"==typeof m.callback?l._wrap(m,"callback",l._patchCallbackQuery(v)):l._diag.error("Expected request.callback to be a function");let w=()=>d.context.with(d.trace.setSpan(d.context.active(),u),j,this,...arguments);if(!(l.getConfig().enableTraceContextPropagation&&l._shouldInjectFor(a)))return w();let x=l._buildTraceparent(u);l._injectContextInfo(this,b,x).finally(w)}return Object.defineProperty(m,"length",{value:j.length,writable:!1}),m}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c),b.apply(this,arguments)}}}c.TediousInstrumentation=n},752273,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=void 0;var d=a.r(407612);Object.defineProperty(c,"TediousInstrumentation",{enumerable:!0,get:function(){return d.TediousInstrumentation}})},903664,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(752273),e=a.r(187845),f=a.r(309569),g=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),h="Tedious",i=f.generateInstrumentOnce(h,()=>new d.TediousInstrumentation({})),j=e.defineIntegration(()=>{let a;return{name:h,setupOnce(){let b=i();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{description:b,data:c}=e.spanToJSON(a);if(!b||"mssql"!==c["db.system"])return;let d=b.split(" ")[0]||"";g.has(d)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});c.instrumentTedious=i,c.tediousIntegration=j},824688,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},998342,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(824688),g="generic-pool";class h extends e.InstrumentationBase{_isDisabled=!1;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition(g,[">=3.0.0 <4"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquirePatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.4.0 <3"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <2.4"],a=>(this._isDisabled=!1,(0,e.isWrapped)(a.Pool)&&this._unwrap(a,"Pool"),this._wrap(a,"Pool",this._poolWrapper.bind(this)),a),a=>(this._isDisabled=!0,a))]}_acquirePatcher(a){let b=this;return function(...c){let e=d.context.active(),f=b.tracer.startSpan("generic-pool.acquire",{},e);return d.context.with(d.trace.setSpan(e,f),()=>a.call(this,...c).then(a=>(f.end(),a),a=>{throw f.recordException(a),f.end(),a}))}}_poolWrapper(a){let b=this;return function(){let c=a.apply(this,arguments);return b._wrap(c,"acquire",b._acquireWithCallbacksPatcher.bind(b)),c}}_acquireWithCallbacksPatcher(a){let b=this;return function(c,e){if(b._isDisabled)return a.call(this,c,e);let f=d.context.active(),g=b.tracer.startSpan("generic-pool.acquire",{},f);return d.context.with(d.trace.setSpan(f,g),()=>{a.call(this,(a,b)=>{if(g.end(),c)return c(a,b)},e)})}}}c.GenericPoolInstrumentation=h},985162,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;var d=a.r(998342);Object.defineProperty(c,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return d.GenericPoolInstrumentation}})},785663,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(985162),e=a.r(187845),f=a.r(309569),g="GenericPool",h=f.generateInstrumentOnce(g,()=>new d.GenericPoolInstrumentation({}));c.genericPoolIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let b=e.spanToJSON(a).description;("generic-pool.aquire"===b||"generic-pool.acquire"===b)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),c.instrumentGenericPool=h},951712,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.31.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},521492,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;let d=a.r(167300),e=a.r(832528),f=a.r(951712),g="dataloader";function h(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class i extends d.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new d.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <3"],a=>{let b=h(a);return this._patchLoad(b.prototype),this._patchLoadMany(b.prototype),this._patchPrime(b.prototype),this._patchClear(b.prototype),this._patchClearAll(b.prototype),this._getPatchedConstructor(b)},a=>{let b=h(a);["load","loadMany","prime","clear","clearAll"].forEach(a=>{(0,d.isWrapped)(b.prototype[a])&&this._unwrap(b.prototype,a)})})]}shouldCreateSpans(){let a=this.getConfig();return void 0!==e.trace.getSpan(e.context.active())||!a.requireParentSpan}getSpanName(a,b){let c=a.name;return null==c?`${g}.${b}`:`${g}.${b} ${c}`}_wrapBatchLoadFn(a){let b=this;return function(...c){if(!b.isEnabled()||!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"batch"),{links:this._batch?.spanLinks},d);return e.context.with(e.trace.setSpan(d,f),()=>a.apply(this,c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a}))}}_getPatchedConstructor(a){let b=this,c=a.prototype;if(!b.isEnabled())return a;function e(...c){return"function"==typeof c[0]&&((0,d.isWrapped)(c[0])&&b._unwrap(c,0),c[0]=b._wrapBatchLoadFn(c[0])),a.apply(this,c)}return e.prototype=c,e}_patchLoad(a){(0,d.isWrapped)(a.load)&&this._unwrap(a,"load"),this._wrap(a,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"load"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>{let b=a.call(this,...c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:f.spanContext()})),b})}}_patchLoadMany(a){(0,d.isWrapped)(a.loadMany)&&this._unwrap(a,"loadMany"),this._wrap(a,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"loadMany"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c).then(a=>(f.end(),a)))}}_patchPrime(a){(0,d.isWrapped)(a.prime)&&this._unwrap(a,"prime"),this._wrap(a,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"prime"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClear(a){(0,d.isWrapped)(a.clear)&&this._unwrap(a,"clear"),this._wrap(a,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clear"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClearAll(a){(0,d.isWrapped)(a.clearAll)&&this._unwrap(a,"clearAll"),this._wrap(a,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clearAll"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}}c.DataloaderInstrumentation=i},621292,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;var d=a.r(521492);Object.defineProperty(c,"DataloaderInstrumentation",{enumerable:!0,get:function(){return d.DataloaderInstrumentation}})},141019,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621292),e=a.r(187845),f=a.r(309569),g="Dataloader",h=f.generateInstrumentOnce(g,()=>new d.DataloaderInstrumentation({requireParentSpan:!0}));c.dataloaderIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>{b.on("spanStart",a=>{let b=e.spanToJSON(a);b.description?.startsWith("dataloader")&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===b.description||"dataloader.loadMany"===b.description||"dataloader.batch"===b.description)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),c.instrumentDataloader=h},363619,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION=void 0,c.ATTR_MESSAGING_OPERATION="messaging.operation",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port"},31854,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_MESSAGING_CONVERSATION_ID=c.OLD_ATTR_MESSAGING_MESSAGE_ID=c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=c.ATTR_MESSAGING_URL=c.ATTR_MESSAGING_PROTOCOL_VERSION=c.ATTR_MESSAGING_PROTOCOL=c.MESSAGING_OPERATION_VALUE_PROCESS=c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=c.ATTR_MESSAGING_DESTINATION_KIND=c.ATTR_MESSAGING_DESTINATION=void 0,c.ATTR_MESSAGING_DESTINATION="messaging.destination",c.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",c.MESSAGING_OPERATION_VALUE_PROCESS="process",c.ATTR_MESSAGING_PROTOCOL="messaging.protocol",c.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",c.ATTR_MESSAGING_URL="messaging.url",c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",c.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",c.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},215900,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.DEFAULT_CONFIG=c.EndOperation=void 0,(d=c.EndOperation||(c.EndOperation={})).AutoAck="auto ack",d.Ack="ack",d.AckAll="ackAll",d.Reject="reject",d.Nack="nack",d.NackAll="nackAll",d.ChannelClosed="channel closed",d.ChannelError="channel error",d.InstrumentationTimeout="instrumentation timeout",c.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},486569,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isConfirmChannelTracing=c.unmarkConfirmChannelTracing=c.markConfirmChannelTracing=c.getConnectionAttributesFromUrl=c.getConnectionAttributesFromServer=c.normalizeExchange=c.CONNECTION_ATTRIBUTES=c.CHANNEL_CONSUME_TIMEOUT_TIMER=c.CHANNEL_SPANS_NOT_ENDED=c.MESSAGE_STORED_SPAN=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(363619),h=a.r(31854);c.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),c.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),c.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),c.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let i=(0,d.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");c.normalizeExchange=a=>""!==a?a:"";let j=(a,b)=>a||("AMQP"===b?5672:5671),k=a=>{let b=a||"amqp";return(b.endsWith(":")?b.substring(0,b.length-1):b).toUpperCase()},l=(a,b,c,e)=>c?{[b]:c}:(d.diag.error(`amqplib instrumentation: could not extract connection attribute ${e} from user supplied url`,{url:a}),{});c.getConnectionAttributesFromServer=a=>{let b=a.serverProperties.product?.toLowerCase?.();return b?{[g.ATTR_MESSAGING_SYSTEM]:b}:{}},c.getConnectionAttributesFromUrl=(a,b)=>{let c={[h.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(a=a||"amqp://localhost")){let d=a,i=k(d?.protocol);Object.assign(c,{...l(a,h.ATTR_MESSAGING_PROTOCOL,i,"protocol")});let m=d?.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(a,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(a,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(d.port,i);b&e.SemconvStability.OLD&&Object.assign(c,l(a,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(a,f.ATTR_SERVER_PORT,n,"port"))}else{let i=a.replace(/:[^:@/]*@/,":***@");c[h.ATTR_MESSAGING_URL]=i;try{let a=new URL(i),d=k(a.protocol);Object.assign(c,{...l(i,h.ATTR_MESSAGING_PROTOCOL,d,"protocol")});let m=a.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(i,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(i,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(a.port?parseInt(a.port):void 0,d);b&e.SemconvStability.OLD&&Object.assign(c,l(i,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(i,f.ATTR_SERVER_PORT,n,"port"))}catch(a){d.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:i,err:a})}}return c},c.markConfirmChannelTracing=a=>a.setValue(i,!0),c.unmarkConfirmChannelTracing=a=>a.deleteValue(i),c.isConfirmChannelTracing=a=>!0===a.getValue(i)},557061,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.61.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},284258,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AmqplibInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(363619),h=a.r(31854),i=a.r(215900),j=a.r(486569),k=a.r(557061),l=[">=0.5.5 <1"];class m extends f.InstrumentationBase{_netSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...i.DEFAULT_CONFIG,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...i.DEFAULT_CONFIG,...a})}init(){let a=new f.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),b=new f.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),c=new f.InstrumentationNodeModuleFile("amqplib/lib/connect.js",l,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new f.InstrumentationNodeModuleDefinition("amqplib",l,void 0,void 0,[a,c,b])}patchConnect(a){return a=this.unpatchConnect(a),(0,f.isWrapped)(a.connect)||this._wrap(a,"connect",this.getConnectPatch.bind(this)),a}unpatchConnect(a){return(0,f.isWrapped)(a.connect)&&this._unwrap(a,"connect"),a}patchChannelModel(a,b){return(0,f.isWrapped)(a.Channel.prototype.publish)||this._wrap(a.Channel.prototype,"publish",this.getPublishPatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.consume)||this._wrap(a.Channel.prototype,"consume",this.getConsumePatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.ack)||this._wrap(a.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,i.EndOperation.Ack)),(0,f.isWrapped)(a.Channel.prototype.nack)||this._wrap(a.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,i.EndOperation.Nack)),(0,f.isWrapped)(a.Channel.prototype.reject)||this._wrap(a.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,i.EndOperation.Reject)),(0,f.isWrapped)(a.Channel.prototype.ackAll)||this._wrap(a.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,i.EndOperation.AckAll)),(0,f.isWrapped)(a.Channel.prototype.nackAll)||this._wrap(a.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,i.EndOperation.NackAll)),(0,f.isWrapped)(a.Channel.prototype.emit)||this._wrap(a.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)||this._wrap(a.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,b)),a}unpatchChannelModel(a){return(0,f.isWrapped)(a.Channel.prototype.publish)&&this._unwrap(a.Channel.prototype,"publish"),(0,f.isWrapped)(a.Channel.prototype.consume)&&this._unwrap(a.Channel.prototype,"consume"),(0,f.isWrapped)(a.Channel.prototype.ack)&&this._unwrap(a.Channel.prototype,"ack"),(0,f.isWrapped)(a.Channel.prototype.nack)&&this._unwrap(a.Channel.prototype,"nack"),(0,f.isWrapped)(a.Channel.prototype.reject)&&this._unwrap(a.Channel.prototype,"reject"),(0,f.isWrapped)(a.Channel.prototype.ackAll)&&this._unwrap(a.Channel.prototype,"ackAll"),(0,f.isWrapped)(a.Channel.prototype.nackAll)&&this._unwrap(a.Channel.prototype,"nackAll"),(0,f.isWrapped)(a.Channel.prototype.emit)&&this._unwrap(a.Channel.prototype,"emit"),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)&&this._unwrap(a.ConfirmChannel.prototype,"publish"),a}getConnectPatch(a){let b=this;return function(c,d,e){return a.call(this,c,d,function(a,d){if(null==a){let a=(0,j.getConnectionAttributesFromUrl)(c,b._netSemconvStability),e=(0,j.getConnectionAttributesFromServer)(d);d[j.CONNECTION_ATTRIBUTES]={...a,...e}}e.apply(this,arguments)})}}getChannelEmitPatch(a){let b=this;return function(c){if("close"===c){b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelClosed,void 0);let a=this[j.CHANNEL_CONSUME_TIMEOUT_TIMER];a&&clearInterval(a),this[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===c&&b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelError,void 0);return a.apply(this,arguments)}}getAckAllPatch(a,b,c){let d=this;return function(e){return d.endAllSpansOnChannel(this,a,b,e),c.apply(this,arguments)}}getAckPatch(a,b,c){let d=this;return function(e,f,g){let h=b===i.EndOperation.Reject?f:g,k=this[j.CHANNEL_SPANS_NOT_ENDED]??[],l=k.findIndex(a=>a.msg===e);if(l<0)d.endConsumerSpan(e,a,b,h);else if(b!==i.EndOperation.Reject&&f){for(let c=0;c<=l;c++)d.endConsumerSpan(k[c].msg,a,b,h);k.splice(0,l+1)}else d.endConsumerSpan(e,a,b,h),k.splice(l,1);return c.apply(this,arguments)}}getConsumePatch(a,b){let c=this;return function(k,l,m){let n=this;if(!Object.prototype.hasOwnProperty.call(n,j.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:a}=c.getConfig();if(a){let b=setInterval(()=>{c.checkConsumeTimeoutOnChannel(n)},a);b.unref(),n[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=b}n[j.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(b){let o;if(!b)return l.call(this,b);let p=b.properties.headers??{},q=d.propagation.extract(d.ROOT_CONTEXT,p),r=b.fields?.exchange;if(c._config.useLinksForConsume){let a=q?d.trace.getSpan(q)?.spanContext():void 0;q=void 0,a&&(o=[{context:a}])}let s=c.tracer.startSpan(`${k} process`,{kind:d.SpanKind.CONSUMER,attributes:{...n?.connection?.[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:r,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:b.fields?.routingKey,[g.ATTR_MESSAGING_OPERATION]:h.MESSAGING_OPERATION_VALUE_PROCESS,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:b?.properties.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:b?.properties.correlationId},links:o},q),{consumeHook:t}=c.getConfig();t&&(0,f.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:a,msg:b}),a=>{a&&d.diag.error("amqplib instrumentation: consumerHook error",a)},!0),m?.noAck||(n[j.CHANNEL_SPANS_NOT_ENDED].push({msg:b,timeOfConsume:(0,e.hrTime)()}),b[j.MESSAGE_STORED_SPAN]=s);let u=q||d.ROOT_CONTEXT;d.context.with(d.trace.setSpan(u,s),()=>{l.call(this,b)}),m?.noAck&&(c.callConsumeEndHook(s,b,!1,i.EndOperation.AutoAck),s.end())},b.apply(this,arguments)}}getConfirmedPublishPatch(a,b){let c=this;return function(e,g,h,i,k){let{span:l,modifiedOptions:m}=c.createPublishSpan(c,e,g,this,i),{publishHook:n}=c.getConfig();n&&(0,f.safeExecuteInTheMiddle)(()=>n(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:m,isConfirmChannel:!0}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let o=(0,j.markConfirmChannelTracing)(d.context.active()),p=[...arguments];return p[3]=m,p[4]=d.context.bind((0,j.unmarkConfirmChannelTracing)(d.trace.setSpan(o,l)),function(b,j){try{k?.call(this,b,j)}finally{let{publishConfirmHook:j}=c.getConfig();j&&(0,f.safeExecuteInTheMiddle)(()=>j(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:i,isConfirmChannel:!0,confirmError:b}),a=>{a&&d.diag.error("amqplib instrumentation: publishConfirmHook error",a)},!0),b&&l.setStatus({code:d.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),l.end()}}),d.context.with(o,b.bind(this,...p))}}getPublishPatch(a,b){let c=this;return function(e,g,h,i){if((0,j.isConfirmChannelTracing)(d.context.active()))return b.apply(this,arguments);{let{span:j,modifiedOptions:k}=c.createPublishSpan(c,e,g,this,i),{publishHook:l}=c.getConfig();l&&(0,f.safeExecuteInTheMiddle)(()=>l(j,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:k,isConfirmChannel:!1}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let m=[...arguments];m[3]=k;let n=b.apply(this,m);return j.end(),n}}}createPublishSpan(a,b,c,e,f){let g=(0,j.normalizeExchange)(b),i=a.tracer.startSpan(`publish ${g}`,{kind:d.SpanKind.PRODUCER,attributes:{...e.connection[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:b,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:c,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:f?.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:f?.correlationId}}),k=f??{};return k.headers=k.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),i),k.headers),{span:i,modifiedOptions:k}}endConsumerSpan(a,b,c,e){let f=a[j.MESSAGE_STORED_SPAN];f&&(!1!==b&&f.setStatus({code:d.SpanStatusCode.ERROR,message:c!==i.EndOperation.ChannelClosed&&c!==i.EndOperation.ChannelError?`${c} called on message${!0===e?" with requeue":!1===e?" without requeue":""}`:c}),this.callConsumeEndHook(f,a,b,c),f.end(),a[j.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(a,b,c,d){(a[j.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(a=>{this.endConsumerSpan(a.msg,b,c,d)}),a[j.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(a,b,c,e){let{consumeEndHook:g}=this.getConfig();g&&(0,f.safeExecuteInTheMiddle)(()=>g(a,{msg:b,rejected:c,endOperation:e}),a=>{a&&d.diag.error("amqplib instrumentation: consumerEndHook error",a)},!0)}checkConsumeTimeoutOnChannel(a){let b,c=(0,e.hrTime)(),d=a[j.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:f}=this.getConfig();for(b=0;b{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EndOperation=c.DEFAULT_CONFIG=c.AmqplibInstrumentation=void 0;var d=a.r(284258);Object.defineProperty(c,"AmqplibInstrumentation",{enumerable:!0,get:function(){return d.AmqplibInstrumentation}});var e=a.r(215900);Object.defineProperty(c,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return e.DEFAULT_CONFIG}}),Object.defineProperty(c,"EndOperation",{enumerable:!0,get:function(){return e.EndOperation}})},372233,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(991031),e=a.r(187845),f=a.r(309569),g="Amqplib",h={consumeEndHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.consumer")},publishHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.publisher")}},i=f.generateInstrumentOnce(g,()=>new d.AmqplibInstrumentation(h));c.amqplibIntegration=e.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentAmqplib=i},370289,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.INTEGRATION_NAME="VercelAI"},209207,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(370289),g=[">=3.0.0 <7"],h=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function i(a){"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)&&(function(a){for(let b of a){if(!("object"==typeof b&&null!==b&&"type"in b&&"error"in b&&"toolName"in b&&"toolCallId"in b&&"tool-error"===b.type&&b.error instanceof Error))continue;let a=e._INTERNAL_getSpanContextForToolCallId(b.toolCallId);a?e.withScope(c=>{c.setContext("trace",{trace_id:a.traceId,span_id:a.spanId}),c.setTag("vercel.ai.tool.name",b.toolName),c.setTag("vercel.ai.tool.callId",b.toolCallId),c.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):e.withScope(a=>{a.setTag("vercel.ai.tool.name",b.toolName),a.setTag("vercel.ai.tool.callId",b.toolCallId),a.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(a.content),j(a.content))}function j(a){for(let b of a)"object"==typeof b&&null!==b&&"toolCallId"in b&&"string"==typeof b.toolCallId&&e._INTERNAL_cleanupToolCallSpanContext(b.toolCallId)}function k(a,b,c,d){return{recordInputs:a?.recordInputs!==void 0?a.recordInputs:void 0!==b.recordInputs?b.recordInputs:!0===c||d,recordOutputs:a?.recordOutputs!==void 0?a.recordOutputs:void 0!==b.recordOutputs?b.recordOutputs:!0===c||d}}class l extends d.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(a={}){super("@sentry/instrumentation-vercel-ai",e.SDK_VERSION,a),l.prototype.__init.call(this),l.prototype.__init2.call(this)}init(){return new d.InstrumentationNodeModuleDefinition("ai",g,this._patch.bind(this))}callWhenPatched(a){this._isPatched?a():this._callbacks.push(a)}_patch(a){this._isPatched=!0,this._callbacks.forEach(a=>a()),this._callbacks=[];let b=a=>new Proxy(a,{apply:(a,b,c)=>{let d=c[0].experimental_telemetry||{},g=d.isEnabled,h=e.getClient(),j=h?.getIntegrationByName(f.INTEGRATION_NAME),{recordInputs:l,recordOutputs:m}=k(j?.options,d,g,!!j&&!!h?.getOptions().sendDefaultPii);return c[0].experimental_telemetry={...d,isEnabled:void 0===g||g,recordInputs:l,recordOutputs:m},e.handleCallbackErrors(()=>Reflect.apply(a,b,c),a=>{a&&"object"==typeof a&&e.addNonEnumerableProperty(a,"_sentry_active_span",e.getActiveSpan())},()=>{},a=>{i(a)})}});if("[object Module]"===Object.prototype.toString.call(a)){for(let c of h)null!=a[c]&&(a[c]=b(a[c]));return a}{let c=h.reduce((c,d)=>(null!=a[d]&&(c[d]=b(a[d])),c),{});return{...a,...c}}}}c.SentryVercelAiInstrumentation=l,c.cleanupToolCallSpanContexts=j,c.determineRecordingSettings=k,c.processToolCallResults=i},602959,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(370289),g=a.r(209207),h=e.generateInstrumentOnce(f.INTEGRATION_NAME,()=>new g.SentryVercelAiInstrumentation({})),i=d.defineIntegration((a={})=>{let b;return{name:f.INTEGRATION_NAME,options:a,setupOnce(){b=h()},afterAllSetup(c){let e;a.force??(e=c.getIntegrationByName("Modules"),!!e?.getModules?.()?.ai)?d.addVercelAiProcessors(c):b?.callWhenPatched(()=>d.addVercelAiProcessors(c))}}});c.instrumentVercelAi=h,c.vercelAIIntegration=i},339499,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=4.0.0 <7"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-openai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("openai",f,this._patch.bind(this))}_patch(a){let b=a;return b=this._patchClient(b,"OpenAI"),b=this._patchClient(b,"AzureOpenAI")}_patchClient(a,b){let c=a[b];if(!c)return a;let d=this.getConfig(),f=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.OPENAI_INTEGRATION_NAME))return Reflect.construct(c,a);let b=Reflect.construct(c,a);return e.instrumentOpenAiClient(b,d)};for(let a of(Object.setPrototypeOf(f,c),Object.setPrototypeOf(f.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(f,a,b)}try{a[b]=f}catch{Object.defineProperty(a,b,{value:f,writable:!0,configurable:!0,enumerable:!0})}if(a.default===c)try{a.default=f}catch{Object.defineProperty(a,"default",{value:f,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryOpenAiInstrumentation=g},783325,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(339499),g=e.generateInstrumentOnce(d.OPENAI_INTEGRATION_NAME,a=>new f.SentryOpenAiInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.OPENAI_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentOpenAi=g,c.openAIIntegration=h},297431,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.19.2 <1.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-anthropic-ai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",f,this._patch.bind(this))}_patch(a){let b=a.Anthropic,c=this.getConfig(),d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentAnthropicAiClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}try{a.Anthropic=d}catch{Object.defineProperty(a,"Anthropic",{value:d,writable:!0,configurable:!0,enumerable:!0})}if(a.default===b)try{a.default=d}catch{Object.defineProperty(a,"default",{value:d,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryAnthropicAiInstrumentation=g},876254,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(297431),g=e.generateInstrumentOnce(d.ANTHROPIC_AI_INTEGRATION_NAME,a=>new f.SentryAnthropicAiInstrumentation(a));c.anthropicAIIntegration=d.defineIntegration((a={})=>({name:d.ANTHROPIC_AI_INTEGRATION_NAME,options:a,setupOnce(){g(a)}})),c.instrumentAnthropicAi=g},702821,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.10.0 <2"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-google-genai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@google/genai",f,a=>this._patch(a),a=>a,[new d.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",f,a=>this._patch(a),a=>a)])}_patch(a){let b=a.GoogleGenAI,c=this.getConfig();if("function"!=typeof b)return a;let d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentGoogleGenAIClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}return e.replaceExports(a,"GoogleGenAI",d),a}}c.SentryGoogleGenAiInstrumentation=g},2031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(702821),g=e.generateInstrumentOnce(d.GOOGLE_GENAI_INTEGRATION_NAME,a=>new f.SentryGoogleGenAiInstrumentation(a));c.googleGenAIIntegration=d.defineIntegration((a={})=>({name:d.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){g(a)}})),c.instrumentGoogleGenAI=g},721669,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.1.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langchain",e.SDK_VERSION,a)}init(){let a=[];for(let b of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])a.push(new d.InstrumentationNodeModuleDefinition(b,f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile(`${b}/dist/index.cjs`,f,this._patch.bind(this),a=>a)]));return a.push(new d.InstrumentationNodeModuleDefinition("langchain",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",f,this._patch.bind(this),a=>a)])),a}_patch(a){e._INTERNAL_skipAiProviderWrapping([e.OPENAI_INTEGRATION_NAME,e.ANTHROPIC_AI_INTEGRATION_NAME,e.GOOGLE_GENAI_INTEGRATION_NAME]);let b=e.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(a,b),a}_patchRunnableMethods(a,b){let c=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],d=Object.values(a.universal_exports??a).find(a=>"function"==typeof a&&c.includes(a.name));if(!d)return;let e=d.prototype;if(!e.__sentry_patched__)for(let a of(e.__sentry_patched__=!0,["invoke","stream","batch"])){let c=e[a];"function"==typeof c&&(e[a]=function(a,b,c){return new Proxy(a,{apply(a,c,d){var e,f;let g=d[1];(!g||"object"!=typeof g||Array.isArray(g))&&(g={},d[1]=g);let h=(e=g.callbacks,f=b,e?Array.isArray(e)?e.includes(f)?e:[...e,f]:"object"==typeof e?[e,f]:e:[f]);return g.callbacks=h,Reflect.apply(a,c,d)}})}(c,b))}}}c.SentryLangChainInstrumentation=g},252877,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(721669),g=e.generateInstrumentOnce(d.LANGCHAIN_INTEGRATION_NAME,a=>new f.SentryLangChainInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGCHAIN_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangChain=g,c.langChainIntegration=h},750457,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.0.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langgraph",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@langchain/langgraph",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",f,this._patch.bind(this),a=>a)])}_patch(a){return a.StateGraph&&"function"==typeof a.StateGraph&&e.instrumentLangGraph(a.StateGraph.prototype,this.getConfig()),a}}c.SentryLangGraphInstrumentation=g},365497,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(750457),g=e.generateInstrumentOnce(d.LANGGRAPH_INTEGRATION_NAME,a=>new f.SentryLangGraphInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGGRAPH_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangGraph=g,c.langGraphIntegration=h},571160,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));c.buildLaunchDarklyFlagUsedHandlerShim=function(){return d.isBrowser()||d.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},c.launchDarklyIntegrationShim=e},980419,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));c.OpenFeatureIntegrationHookShim=class{constructor(){d.isBrowser()||d.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},c.openFeatureIntegrationShim=e},351649,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.statsigIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},420316,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.unleashIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},535383,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.growthbookIntegrationShim=a.r(187845).growthbookIntegration},41036,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(761095),e=a.r(832528),f=a.r(167300),g=a.r(357122);function h(a,b,c,d,e){var f,g,h,l,m,n,o,p;return i(a,c),b(a,"addDoc",(f=d,g=e,function(a){return function(b,c){let d=k(f,"addDoc",b);return g(d),j(d,()=>a(b,c))}})),b(a,"getDocs",(h=d,l=e,function(a){return function(b){let c=k(h,"getDocs",b);return l(c),j(c,()=>a(b))}})),b(a,"setDoc",(m=d,n=e,function(a){return function(b,c,d){let e=k(m,"setDoc",b.parent||b);return n(e),j(e,()=>void 0!==d?a(b,c,d):a(b,c))}})),b(a,"deleteDoc",(o=d,p=e,function(a){return function(b){let c=k(o,"deleteDoc",b.parent||b);return p(c),j(c,()=>a(b))}})),a}function i(a,b){for(let c of["addDoc","getDocs","setDoc","deleteDoc"])f.isWrapped(a[c])&&b(a,c);return a}function j(a,b){return e.context.with(e.trace.setSpan(e.context.active(),a),()=>f.safeExecuteInTheMiddle(()=>b(),b=>{b&&a.recordException(b),a.end()},!0))}function k(a,b,c){let d=a.startSpan(`${b} ${c.path}`,{kind:e.SpanKind.CLIENT});return function(a,b){let c=b.firestore.app,d=c.options,e=(b.firestore.toJSON()||{}).settings||{},f={[g.ATTR_DB_COLLECTION_NAME]:b.path,[g.ATTR_DB_NAMESPACE]:c.name,[g.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":b.type,"firebase.firestore.options.projectId":d.projectId,"firebase.firestore.options.appId":d.appId,"firebase.firestore.options.messagingSenderId":d.messagingSenderId,"firebase.firestore.options.storageBucket":d.storageBucket},{address:h,port:i}=l(e);h&&(f[g.ATTR_SERVER_ADDRESS]=h),i&&(f[g.ATTR_SERVER_PORT]=i),a.setAttributes(f)}(d,c),d.setAttribute(g.ATTR_DB_OPERATION_NAME,b),d}function l(a){let b,c;if("string"==typeof a.host)if(a.host.startsWith("[")){if(a.host.endsWith("]"))b=a.host.replace(/^\[|\]$/g,"");else if(a.host.includes("]:")){let d=a.host.lastIndexOf(":");-1!==d&&(b=a.host.slice(1,d).replace(/^\[|\]$/g,""),c=a.host.slice(d+1))}}else if(d.isIPv6(a.host))b=a.host;else{let d=a.host.lastIndexOf(":");-1!==d?(b=a.host.slice(0,d),c=a.host.slice(d+1)):b=a.host}return{address:b,port:c?parseInt(c,10):void 0}}c.getPortAndAddress=l,c.patchFirestore=function(a,b,c,d,g){let j=()=>{},k=g.firestoreSpanCreationHook;"function"==typeof k&&(j=a=>{f.safeExecuteInTheMiddle(()=>k(a),a=>{a&&e.diag.error(a?.message)},!0)});let l=new f.InstrumentationNodeModuleDefinition("@firebase/firestore",b,b=>h(b,c,d,a,j));for(let e of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])l.files.push(new f.InstrumentationNodeModuleFile(e,b,b=>h(b,c,d,a,j),a=>i(a,d)));return l}},647427,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300);function f(a,b,c){return function(e){return function(...f){let g="function"==typeof f[0]?f[0]:f[1],h="function"==typeof f[0]?void 0:f[0];if(!g)return e.call(this,...f);let i=async function(...e){let f=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",h=a.startSpan(`firebase.function.${c}`,{kind:d.SpanKind.SERVER}),i={"faas.name":f,"faas.trigger":c,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(i["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(i["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),h.setAttributes(i),b?.requestHook?.(h),d.context.with(d.trace.setSpan(d.context.active(),h),async()=>{let a,c;try{c=await g.apply(this,e)}catch(b){a=b}if(b?.responseHook?.(h,a),a&&h.recordException(a),h.end(),a)throw await b?.errorHook?.(h,a),a;return c})};return h?e.call(this,h,i):e.call(this,i)}}}function g(a,b){for(let c of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])e.isWrapped(a[c])&&b(a,c);return a}c.patchFunctions=function(a,b,c,h,i){let j=()=>{},k=()=>{},l=i.functions?.errorHook,m=i.functions?.requestHook,n=i.functions?.responseHook;"function"==typeof n&&(k=(a,b)=>{e.safeExecuteInTheMiddle(()=>n(a,b),a=>{a&&d.diag.error(a?.message)},!0)}),"function"==typeof m&&(j=a=>{e.safeExecuteInTheMiddle(()=>m(a),a=>{a&&d.diag.error(a?.message)},!0)});let o=new e.InstrumentationNodeModuleDefinition("firebase-functions",b);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:d,triggerType:i})=>{o.files.push(new e.InstrumentationNodeModuleFile(d,b,b=>(function(a,b,c,d,e,h){switch(g(a,c),h){case"function":b(a,"onRequest",f(d,e,"http.request")),b(a,"onCall",f(d,e,"http.call"));break;case"firestore":b(a,"onDocumentCreated",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdated",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeleted",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWritten",f(d,e,"firestore.document.written")),b(a,"onDocumentCreatedWithAuthContext",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdatedWithAuthContext",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeletedWithAuthContext",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWrittenWithAuthContext",f(d,e,"firestore.document.written"));break;case"scheduler":b(a,"onSchedule",f(d,e,"scheduler.scheduled"));break;case"storage":b(a,"onObjectFinalized",f(d,e,"storage.object.finalized")),b(a,"onObjectArchived",f(d,e,"storage.object.archived")),b(a,"onObjectDeleted",f(d,e,"storage.object.deleted")),b(a,"onObjectMetadataUpdated",f(d,e,"storage.object.metadataUpdated"))}return a})(b,c,h,a,{requestHook:j,responseHook:k,errorHook:l},i),a=>g(a,h)))}),o},c.patchV2Functions=f},562446,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(41036),g=a.r(647427),h={},i=[">=3.0.0 <5"],j=[">=6.0.0 <7"];class k extends d.InstrumentationBase{constructor(a=h){super("@sentry/instrumentation-firebase",e.SDK_VERSION,a)}setConfig(a={}){super.setConfig({...h,...a})}init(){let a=[];return a.push(f.patchFirestore(this.tracer,i,this._wrap,this._unwrap,this.getConfig())),a.push(g.patchFunctions(this.tracer,j,this._wrap,this._unwrap,this.getConfig())),a}}c.FirebaseInstrumentation=k},562382,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(562446),g="Firebase",h={firestoreSpanCreationHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.firestore"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.functions"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(a,b)=>{b&&(d.captureException(b,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d.flush(2e3))}}},i=e.generateInstrumentOnce(g,()=>new f.FirebaseInstrumentation(h));c.firebaseIntegration=d.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentFirebase=i},426414,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(948678),e=a.r(372233),f=a.r(876254),g=a.r(617413),h=a.r(31953),i=a.r(533819),j=a.r(562382),k=a.r(785663),l=a.r(2031),m=a.r(534849),n=a.r(969899),o=a.r(27047),p=a.r(142670),q=a.r(550583),r=a.r(252877),s=a.r(365497),t=a.r(268935),u=a.r(228663),v=a.r(720382),w=a.r(370840),x=a.r(592734),y=a.r(783325),z=a.r(257141),A=a.r(870983),B=a.r(770948),C=a.r(461054),D=a.r(903664),E=a.r(602959);c.getAutoPerformanceIntegrations=function(){return[h.expressIntegration(),i.fastifyIntegration(),m.graphqlIntegration(),o.honoIntegration(),u.mongoIntegration(),v.mongooseIntegration(),w.mysqlIntegration(),x.mysql2Integration(),C.redisIntegration(),z.postgresIntegration(),B.prismaIntegration(),n.hapiIntegration(),q.koaIntegration(),g.connectIntegration(),D.tediousIntegration(),k.genericPoolIntegration(),p.kafkaIntegration(),e.amqplibIntegration(),t.lruMemoizerIntegration(),r.langChainIntegration(),s.langGraphIntegration(),E.vercelAIIntegration(),y.openAIIntegration(),f.anthropicAIIntegration(),l.googleGenAIIntegration(),A.postgresJsIntegration(),j.firebaseIntegration()]},c.getOpenTelemetryInstrumentationToPreload=function(){return[d.instrumentSentryHttp,d.instrumentOtelHttp,h.instrumentExpress,g.instrumentConnect,i.instrumentFastify,i.instrumentFastifyV3,n.instrumentHapi,o.instrumentHono,p.instrumentKafka,q.instrumentKoa,t.instrumentLruMemoizer,u.instrumentMongo,v.instrumentMongoose,w.instrumentMysql,x.instrumentMysql2,z.instrumentPostgres,n.instrumentHapi,m.instrumentGraphql,C.instrumentRedis,D.instrumentTedious,k.instrumentGenericPool,e.instrumentAmqplib,r.instrumentLangChain,E.instrumentVercelAi,y.instrumentOpenAi,A.instrumentPostgresJs,j.instrumentFirebase,f.instrumentAnthropicAi,l.instrumentGoogleGenAI,s.instrumentLangGraph]}},319410,a=>{"use strict";let b;a.s([],485393),a.i(485393);var c=a.i(984414),d=a.i(928530),e=a.i(307554),f=a.i(39342);let g=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(a){let b={},d=(0,f.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),g=(0,f.getStringFromEnv)("OTEL_SERVICE_NAME");if(d)try{let a=this._parseResourceAttributes(d);Object.assign(b,a)}catch(a){c.diag.debug(`EnvDetector failed: ${a instanceof Error?a.message:a}`)}return g&&(b[e.ATTR_SERVICE_NAME]=g),{attributes:b}}_parseResourceAttributes(a){if(!a)return{};let b={};for(let c of a.split(this._COMMA_SEPARATOR)){let a,d,e=c.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==e.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${c}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[f,g]=e,h=f.trim(),i=g.trim();if(0===h.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${c}".`);try{a=decodeURIComponent(h),d=decodeURIComponent(i)}catch(a){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${c}": ${a instanceof Error?a.message:a}`)}if(a.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${a}".`);if(d.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${a}".`);b[a]=d}return b}};var h=a.i(446786),i=a.i(605365);async function j(){if(!b)switch(i.platform){case"darwin":b=(await a.A(939510)).getMachineId;break;case"linux":b=(await a.A(962327)).getMachineId;break;case"freebsd":b=(await a.A(665688)).getMachineId;break;case"win32":b=(await a.A(256493)).getMachineId;break;default:b=(await a.A(205639)).getMachineId}return b()}let k=new class{detect(a){return{attributes:{"host.name":(0,h.hostname)(),"host.arch":(a=>{switch(a){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return a}})((0,h.arch)()),"host.id":j()}}}},l=new class{detect(a){return{attributes:{"os.type":(a=>{switch(a){case"sunos":return"solaris";case"win32":return"windows";default:return a}})((0,h.platform)()),"os.version":(0,h.release)()}}}},m=new class{detect(a){let b={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(b["process.command"]=process.argv[1]);try{let a=h.userInfo();b["process.owner"]=a.username}catch(a){c.diag.debug(`error obtaining process owner: ${a}`)}return{attributes:b}}};var n=a.i(254799);let o=new class{detect(a){return{attributes:{"service.instance.id":(0,n.randomUUID)()}}}};var p=a.i(726435);a.s(["defaultResource",()=>d.defaultResource,"defaultServiceName",()=>p.defaultServiceName,"detectResources",0,(a={})=>(a.detectors||[]).map(b=>{try{let e=(0,d.resourceFromDetectedResource)(b.detect(a));return c.diag.debug(`${b.constructor.name} found resource.`,e),e}catch(a){return c.diag.debug(`${b.constructor.name} failed: ${a.message}`),(0,d.emptyResource)()}}).reduce((a,b)=>a.merge(b),(0,d.emptyResource)()),"emptyResource",()=>d.emptyResource,"envDetector",0,g,"hostDetector",0,k,"osDetector",0,l,"processDetector",0,m,"resourceFromAttributes",()=>d.resourceFromAttributes,"serviceInstanceIdDetector",0,o],319410)},562622,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(319410),f=a.r(409633),g=a.r(357122),h=a.r(187845),i=a.r(309569),j=a.r(221598),k=a.r(852223),l=a.r(426414);function m(a,b={}){let c=new f.BasicTracerProvider({sampler:new j.SentrySampler(a),resource:e.defaultResource().merge(e.resourceFromAttributes({[g.ATTR_SERVICE_NAME]:"node",[g.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[g.ATTR_SERVICE_VERSION]:h.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new j.SentrySpanProcessor({timeout:n(a.getOptions().maxSpanWaitDuration)}),...b.spanProcessors||[]]});d.trace.setGlobalTracerProvider(c),d.propagation.setGlobalPropagator(new j.SentryPropagator);let k=new i.SentryContextManager;return d.context.setGlobalContextManager(k),[c,k.getAsyncLocalStorageLookup()]}function n(a){if(null!=a){if(a>1e6)return k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(a<=0||Number.isNaN(a)){k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return a}}c._clampSpanProcessorTimeout=n,c.initOpenTelemetry=function(a,b={}){a.getOptions().debug&&i.setupOpenTelemetryLogger();let[c,d]=m(a,b);a.traceProvider=c,a.asyncLocalStorageLookup=d},c.preloadOpenTelemetry=function(a={}){var b;let c,{debug:d}=a;d&&h.debug.enable(),i.initializeEsmLoader(),(b=a.integrations,c=l.getOpenTelemetryInstrumentationToPreload(),b?c.filter(a=>{let c=a.id;return b.some(a=>c===a||c.startsWith(`${a}.`))}):c).forEach(a=>{a(),d&&h.debug.log(`[Sentry] Preloaded ${a.id} instrumentation`)})},c.setupOtel=m},969031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(948678),g=a.r(412292),h=a.r(426414),i=a.r(562622);function j(){return e.getDefaultIntegrations().filter(a=>"Http"!==a.name&&"NodeFetch"!==a.name).concat(f.httpIntegration(),g.nativeNodeFetchIntegration())}function k(a){return[...j(),...d.hasSpansEnabled(a)?h.getAutoPerformanceIntegrations():[]]}function l(a={},b){d.applySdkMetadata(a,"node");let c=e.init({...a,defaultIntegrations:a.defaultIntegrations??b(a)});return c&&!a.skipOpenTelemetrySetup&&(i.initOpenTelemetry(c,{spanProcessors:a.openTelemetrySpanProcessors}),e.validateOpenTelemetrySetup()),c}c.getDefaultIntegrations=k,c.getDefaultIntegrationsWithoutPerformance=j,c.init=function(a={}){return l(a,k)},c.initWithoutDefaultIntegrations=function(a={}){return l(a,()=>[])}},848074,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(948678),e=a.r(412292),f=a.r(56551),g=a.r(31953),h=a.r(533819),i=a.r(534849),j=a.r(142670),k=a.r(268935),l=a.r(228663),m=a.r(720382),n=a.r(370840),o=a.r(592734),p=a.r(461054),q=a.r(257141),r=a.r(870983),s=a.r(770948),t=a.r(969899),u=a.r(27047),v=a.r(550583),w=a.r(617413),x=a.r(523682),y=a.r(903664),z=a.r(785663),A=a.r(141019),B=a.r(372233),C=a.r(602959),D=a.r(783325),E=a.r(876254),F=a.r(2031),G=a.r(252877),H=a.r(365497),I=a.r(571160),J=a.r(980419),K=a.r(351649),L=a.r(420316),M=a.r(535383),N=a.r(562382),O=a.r(969031),P=a.r(562622),Q=a.r(426414),R=a.r(221598),S=a.r(187845),T=a.r(309569);c.httpIntegration=d.httpIntegration,c.nativeNodeFetchIntegration=e.nativeNodeFetchIntegration,c.fsIntegration=f.fsIntegration,c.expressErrorHandler=g.expressErrorHandler,c.expressIntegration=g.expressIntegration,c.setupExpressErrorHandler=g.setupExpressErrorHandler,c.fastifyIntegration=h.fastifyIntegration,c.setupFastifyErrorHandler=h.setupFastifyErrorHandler,c.graphqlIntegration=i.graphqlIntegration,c.kafkaIntegration=j.kafkaIntegration,c.lruMemoizerIntegration=k.lruMemoizerIntegration,c.mongoIntegration=l.mongoIntegration,c.mongooseIntegration=m.mongooseIntegration,c.mysqlIntegration=n.mysqlIntegration,c.mysql2Integration=o.mysql2Integration,c.redisIntegration=p.redisIntegration,c.postgresIntegration=q.postgresIntegration,c.postgresJsIntegration=r.postgresJsIntegration,c.prismaIntegration=s.prismaIntegration,c.hapiIntegration=t.hapiIntegration,c.setupHapiErrorHandler=t.setupHapiErrorHandler,c.honoIntegration=u.honoIntegration,c.setupHonoErrorHandler=u.setupHonoErrorHandler,c.koaIntegration=v.koaIntegration,c.setupKoaErrorHandler=v.setupKoaErrorHandler,c.connectIntegration=w.connectIntegration,c.setupConnectErrorHandler=w.setupConnectErrorHandler,c.knexIntegration=x.knexIntegration,c.tediousIntegration=y.tediousIntegration,c.genericPoolIntegration=z.genericPoolIntegration,c.dataloaderIntegration=A.dataloaderIntegration,c.amqplibIntegration=B.amqplibIntegration,c.vercelAIIntegration=C.vercelAIIntegration,c.openAIIntegration=D.openAIIntegration,c.anthropicAIIntegration=E.anthropicAIIntegration,c.googleGenAIIntegration=F.googleGenAIIntegration,c.langChainIntegration=G.langChainIntegration,c.langGraphIntegration=H.langGraphIntegration,c.buildLaunchDarklyFlagUsedHandler=I.buildLaunchDarklyFlagUsedHandlerShim,c.launchDarklyIntegration=I.launchDarklyIntegrationShim,c.OpenFeatureIntegrationHook=J.OpenFeatureIntegrationHookShim,c.openFeatureIntegration=J.openFeatureIntegrationShim,c.statsigIntegration=K.statsigIntegrationShim,c.unleashIntegration=L.unleashIntegrationShim,c.growthbookIntegration=M.growthbookIntegrationShim,c.firebaseIntegration=N.firebaseIntegration,c.getDefaultIntegrations=O.getDefaultIntegrations,c.getDefaultIntegrationsWithoutPerformance=O.getDefaultIntegrationsWithoutPerformance,c.init=O.init,c.initWithoutDefaultIntegrations=O.initWithoutDefaultIntegrations,c.initOpenTelemetry=P.initOpenTelemetry,c.preloadOpenTelemetry=P.preloadOpenTelemetry,c.getAutoPerformanceIntegrations=Q.getAutoPerformanceIntegrations,c.setNodeAsyncContextStrategy=R.setOpenTelemetryContextAsyncContextStrategy,c.SDK_VERSION=S.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=S.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=S.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=S.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=S.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=S.Scope,c.addBreadcrumb=S.addBreadcrumb,c.addEventProcessor=S.addEventProcessor,c.addIntegration=S.addIntegration,c.captureCheckIn=S.captureCheckIn,c.captureConsoleIntegration=S.captureConsoleIntegration,c.captureEvent=S.captureEvent,c.captureException=S.captureException,c.captureFeedback=S.captureFeedback,c.captureMessage=S.captureMessage,c.captureSession=S.captureSession,c.close=S.close,c.consoleIntegration=S.consoleIntegration,c.consoleLoggingIntegration=S.consoleLoggingIntegration,c.continueTrace=S.continueTrace,c.createConsolaReporter=S.createConsolaReporter,c.createLangChainCallbackHandler=S.createLangChainCallbackHandler,c.createTransport=S.createTransport,c.dedupeIntegration=S.dedupeIntegration,c.endSession=S.endSession,c.eventFiltersIntegration=S.eventFiltersIntegration,c.extraErrorDataIntegration=S.extraErrorDataIntegration,c.featureFlagsIntegration=S.featureFlagsIntegration,c.flush=S.flush,c.functionToStringIntegration=S.functionToStringIntegration,c.getActiveSpan=S.getActiveSpan,c.getClient=S.getClient,c.getCurrentScope=S.getCurrentScope,c.getGlobalScope=S.getGlobalScope,c.getIsolationScope=S.getIsolationScope,c.getRootSpan=S.getRootSpan,c.getSpanDescendants=S.getSpanDescendants,c.getSpanStatusFromHttpCode=S.getSpanStatusFromHttpCode,c.getTraceData=S.getTraceData,c.getTraceMetaTags=S.getTraceMetaTags,c.httpHeadersToSpanAttributes=S.httpHeadersToSpanAttributes,c.inboundFiltersIntegration=S.inboundFiltersIntegration,c.instrumentAnthropicAiClient=S.instrumentAnthropicAiClient,c.instrumentGoogleGenAIClient=S.instrumentGoogleGenAIClient,c.instrumentLangGraph=S.instrumentLangGraph,c.instrumentOpenAiClient=S.instrumentOpenAiClient,c.instrumentStateGraphCompile=S.instrumentStateGraphCompile,c.instrumentSupabaseClient=S.instrumentSupabaseClient,c.isEnabled=S.isEnabled,c.isInitialized=S.isInitialized,c.lastEventId=S.lastEventId,c.linkedErrorsIntegration=S.linkedErrorsIntegration,c.parameterize=S.parameterize,c.profiler=S.profiler,c.requestDataIntegration=S.requestDataIntegration,c.rewriteFramesIntegration=S.rewriteFramesIntegration,c.setContext=S.setContext,c.setConversationId=S.setConversationId,c.setCurrentClient=S.setCurrentClient,c.setExtra=S.setExtra,c.setExtras=S.setExtras,c.setHttpStatus=S.setHttpStatus,c.setMeasurement=S.setMeasurement,c.setTag=S.setTag,c.setTags=S.setTags,c.setUser=S.setUser,c.spanToBaggageHeader=S.spanToBaggageHeader,c.spanToJSON=S.spanToJSON,c.spanToTraceHeader=S.spanToTraceHeader,c.startInactiveSpan=S.startInactiveSpan,c.startNewTrace=S.startNewTrace,c.startSession=S.startSession,c.startSpan=S.startSpan,c.startSpanManual=S.startSpanManual,c.supabaseIntegration=S.supabaseIntegration,c.suppressTracing=S.suppressTracing,c.trpcMiddleware=S.trpcMiddleware,c.updateSpanName=S.updateSpanName,c.winterCGHeadersToDict=S.winterCGHeadersToDict,c.withActiveSpan=S.withActiveSpan,c.withIsolationScope=S.withIsolationScope,c.withMonitor=S.withMonitor,c.withScope=S.withScope,c.wrapMcpServerWithSentry=S.wrapMcpServerWithSentry,c.zodErrorsIntegration=S.zodErrorsIntegration,c.NODE_VERSION=T.NODE_VERSION,c.NodeClient=T.NodeClient,c.SentryContextManager=T.SentryContextManager,c.anrIntegration=T.anrIntegration,c.childProcessIntegration=T.childProcessIntegration,c.contextLinesIntegration=T.contextLinesIntegration,c.createGetModuleFromFilename=T.createGetModuleFromFilename,c.createSentryWinstonTransport=T.createSentryWinstonTransport,c.cron=T.cron,c.defaultStackParser=T.defaultStackParser,c.disableAnrDetectionForCallback=T.disableAnrDetectionForCallback,c.generateInstrumentOnce=T.generateInstrumentOnce,c.getSentryRelease=T.getSentryRelease,c.httpServerIntegration=T.httpServerIntegration,c.httpServerSpansIntegration=T.httpServerSpansIntegration,c.localVariablesIntegration=T.localVariablesIntegration,c.logger=T.logger,c.makeNodeTransport=T.makeNodeTransport,c.metrics=T.metrics,c.modulesIntegration=T.modulesIntegration,c.nodeContextIntegration=T.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=T.nodeRuntimeMetricsIntegration,c.onUncaughtExceptionIntegration=T.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=T.onUnhandledRejectionIntegration,c.pinoIntegration=T.pinoIntegration,c.processSessionIntegration=T.processSessionIntegration,c.spotlightIntegration=T.spotlightIntegration,c.systemErrorIntegration=T.systemErrorIntegration,c.validateOpenTelemetrySetup=T.validateOpenTelemetrySetup},505891,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(522734),f=a.r(814747),g=null,h=null;c.createRouteManifest=function(a){let b;if(a?.appDirPath)b=a.appDirPath;else{let a=process.cwd(),c=f.join(a,"app"),d=f.join(a,"src","app");e.existsSync(c)&&e.lstatSync(c).isDirectory()?b=c:e.existsSync(d)&&e.lstatSync(d).isDirectory()&&(b=d)}if(!b)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(g&&h===b&&d===a?.includeRouteGroups)return g;let{dynamicRoutes:c,staticRoutes:i,isrRoutes:j}=function a(b,c="",d=!1){let g=[],h=[],i=[];try{let k=e.readdirSync(b,{withFileTypes:!0}),l=k.find(a=>{var b;return b=a.name,"page.tsx"===b||"page.jsx"===b||"page.ts"===b||"page.js"===b});if(l){let a=d?c||"/":(c||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),j=a.includes(":"),k=f.join(b,l.name);if(function(a){try{let b=e.readFileSync(a,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(b)}catch{return!1}}(k)&&i.push(a),j){let{regex:b,paramNames:c,hasOptionalPrefix:d}=function(a){let b,c,d=a.split("/").filter(Boolean),e=[],f=[],g=!1;for(let a of d)if(a.startsWith(":")){let b=a.substring(1);if(b.endsWith("*?")){let a=b.slice(0,-2);f.push(a),g=!0}else if(b.endsWith("*")){let a=b.slice(0,-1);f.push(a),e.push("(.+)")}else f.push(b),e.push("([^/]+)")}else e.push(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(g)if(0===e.length)c="^/(.*)$";else{let a=e.join("/");c=`^/${a}(?:/(.*))?$`}else c=`^/${e.join("/")}$`;return{regex:c,paramNames:f,hasOptionalPrefix:(b=f[0],void 0!==b&&("locale"===b||"lang"===b||"language"===b))}}(a);g.push({path:a,regex:b,paramNames:c,hasOptionalPrefix:d})}else h.push({path:a})}for(let e of k)if(e.isDirectory()){var j;let k,l=f.join(b,e.name),m=e.name.startsWith("[")&&e.name.endsWith("]"),n=(k=(j=e.name).startsWith("(")&&j.endsWith(")")?d?e.name:"":m?function(a){if(a.startsWith("[[...")&&a.endsWith("]]")){let b=a.slice(5,-2);return`:${b}*?`}if(a.startsWith("[...")&&a.endsWith("]")){let b=a.slice(4,-1);return`:${b}*`}return`:${a.slice(1,-1)}`}(e.name):e.name)?`${c}/${k}`:c,o=a(l,n,d);g.push(...o.dynamicRoutes),h.push(...o.staticRoutes),i.push(...o.isrRoutes)}}catch(a){console.warn("Error building route manifest:",a)}return{dynamicRoutes:g,staticRoutes:h,isrRoutes:i}}(b,a?.basePath,a?.includeRouteGroups),k={dynamicRoutes:c,staticRoutes:i,isrRoutes:j};return g=k,h=b,d=a?.includeRouteGroups,k}},520112,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.resolveTunnelRoute=function(a){let b;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let c="string"==typeof a?a:(b=d._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${b}`);return c&&(process.env.__SENTRY_TUNNEL_ROUTE__=c),c},c.setUpTunnelRewriteRules=function(a,b){let c=a.rewrites,d=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,e=d||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",f=d||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";a.rewrites=async(...a)=>{let d={source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:e},g=[{source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:f},d];if("function"!=typeof c)return g;let h=await c(...a);return Array.isArray(h)?[...g,...h]:{...h,beforeFiles:[...g,...h.beforeFiles||[]]}}}},563540,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(848074),f=a.r(522734),g=a.r(814747),h=a.r(505891),i=a.r(832609),j=a.r(183276),k=a.r(520112),l=!1,m=!1;function n(a,b){if(!b)return a;let c=a=>"function"==typeof b?b(a):b.some(b=>d.isMatchingPattern(a,b));return{staticRoutes:a.staticRoutes.filter(a=>!c(a.path)),dynamicRoutes:a.dynamicRoutes.filter(a=>!c(a.path)),isrRoutes:a.isrRoutes.filter(a=>!c(a))}}c.filterRouteManifest=n,c.getNextMajor=function(a){if(!a)return;let{major:b}=d.parseSemver(a);return b},c.maybeCreateRouteManifest=function(a,b){if(b.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==b.routeManifestInjection&&(void 0!==b.routeManifestInjection||!b.disableManifestInjection))return n(h.createRouteManifest({basePath:a.basePath}),b.routeManifestInjection?.exclude)},c.maybeGetVercelCronsConfig=function(a){let b={config:void 0,strategy:void 0};if(!process.env.VERCEL)return b;let c=a._experimental?.vercelCronsMonitoring===!0,e=a.webpack?.automaticVercelMonitors===!0;if(!c&&!e)return b;let h=function(){try{let a=g.join(process.cwd(),"vercel.json"),b=f.readFileSync(a,"utf8"),c=JSON.parse(b).crons;if(c&&Array.isArray(c)&&c.length>0)return c;return}catch(a){if("ENOENT"===a.code)return;d.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",a);return}}();return h&&(b.config=h,c&&e?(d.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),b.strategy="spans"):c?(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),b.strategy="spans"):(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),b.strategy="wrapper")),b},c.maybeSetClientTraceMetadataOption=function(a,b){if(b){let{major:c,minor:e}=d.parseSemver(b);void 0!==c&&void 0!==e&&(c>=15||14===c&&e>=3)&&(a.experimental=a.experimental||{},a.experimental.clientTraceMetadata=["baggage","sentry-trace",...a.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},c.maybeSetInstrumentationHookOption=function(a,b){if(b&&i.requiresInstrumentationHook(b)){a.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),a.experimental={instrumentationHook:!0,...a.experimental};return}b||(a.experimental&&"instrumentationHook"in a.experimental?!1===a.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),a.experimental={instrumentationHook:!0,...a.experimental}))},c.maybeSetUpTunnelRouteRewriteRules=function(a,b){if(!b.tunnelRoute)return;if("export"===a.output){l||(l=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let c=k.resolveTunnelRoute(b.tunnelRoute);b.tunnelRoute=c||void 0,k.setUpTunnelRewriteRules(a,c)},c.resolveReleaseName=function(a){return a.release?.create!==!1?a.release?.name??e.getSentryRelease()??j.getGitRevision():a.release?.name},c.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(m||(m=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},c.warnIfMissingOnRouterTransitionStartHook=function(a){let b=j.getInstrumentationClientFileContents();void 0===b||b.includes("onRouterTransitionStart")||a.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},253989,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832609),e=a.r(183276),f=a.r(920753),g=a.r(993918),h=a.r(563540);c.getFinalConfigObject=function(a,b){f.migrateDeprecatedWebpackOptions(b);let c=h.resolveReleaseName(b);if(h.maybeSetUpTunnelRouteRewriteRules(a,b),h.shouldReturnEarlyInExperimentalBuildMode())return a;let i=h.maybeCreateRouteManifest(a,b),j=h.maybeGetVercelCronsConfig(b);e.setUpBuildTimeVariables(a,b,c);let k=d.getNextjsVersion(),l=h.getNextMajor(k);h.maybeSetClientTraceMetadataOption(a,k),h.maybeSetInstrumentationHookOption(a,k),h.warnIfMissingOnRouterTransitionStartHook(b);let m=g.getBundlerInfo(k);g.maybeWarnAboutUnsupportedTurbopack(k,m),g.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(k,b,m);let n=g.maybeConstructTurbopackConfig(a,b,i,k,m,j),o=g.resolveUseRunAfterProductionCompileHookOption(b,m);return g.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,nextJsVersion:k,bundlerInfo:m,turboPackConfig:n,shouldUseRunAfterProductionCompileHook:o}),g.maybeEnableTurbopackSourcemaps(a,b,m),{...a,...g.getServerExternalPackagesPatch(a,l),...g.getWebpackPatch({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,routeManifest:i,nextJsVersion:k,shouldUseRunAfterProductionCompileHook:o,bundlerInfo:m,vercelCronsConfigResult:j}),...g.getTurbopackPatch(m,n)}}},474224,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(253989);c.withSentryConfig=function(a,b={}){let c=a||{};return"function"==typeof c?function(...a){let f=c.apply(this,a);return d.isThenable(f)?f.then(a=>e.getFinalConfigObject(a,b)):e.getFinalConfigObject(f,b)}:e.getFinalConfigObject(c,b)}},263581,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{"use strict";var b="";function c(a){return a.split("\n").reduce(function(a,c){var k,l,m,n=function(a){var c=d.exec(a);if(!c)return null;var f=c[2]&&0===c[2].indexOf("native"),g=c[2]&&0===c[2].indexOf("eval"),h=e.exec(c[2]);return g&&null!=h&&(c[2]=h[1],c[3]=h[2],c[4]=h[3]),{file:f?null:c[2],methodName:c[1]||b,arguments:f?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}(c)||((k=f.exec(c))?{file:k[2],methodName:k[1]||b,arguments:[],lineNumber:+k[3],column:k[4]?+k[4]:null}:null)||function(a){var c=g.exec(a);if(!c)return null;var d=c[3]&&c[3].indexOf(" > eval")>-1,e=h.exec(c[3]);return d&&null!=e&&(c[3]=e[1],c[4]=e[2],c[5]=null),{file:c[3],methodName:c[1]||b,arguments:c[2]?c[2].split(","):[],lineNumber:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}(c)||((l=j.exec(c))?{file:l[2],methodName:l[1]||b,arguments:[],lineNumber:+l[3],column:l[4]?+l[4]:null}:null)||((m=i.exec(c))?{file:m[3],methodName:m[1]||b,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return n&&a.push(n),a},[])}var d=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,e=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;a.s(["parse",()=>c])},10308,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(641235),f=a.r(263581),g=d.GLOBAL_OBJ;function h(){let a=process.env._sentryBasePath??g._sentryBasePath??"";""===a||a.match(/^\//)||(a=`/${a}`);let b=process.env.PORT||"3000";return`http://localhost:${b}${a}`}async function i(a,b={}){let c=new AbortController,e=setTimeout(()=>c.abort(),3e3);return d.suppressTracing(()=>fetch(a,{...b,signal:c.signal}).finally(()=>{clearTimeout(e)}))}async function j(a,b){try{if(!(a.file?.startsWith("webpack-internal:")||a.file?.startsWith("file:")))return null;let c=new URLSearchParams;c.append("isServer",String(!1)),c.append("isEdgeServer",String(!1)),c.append("isAppDirectory",String(!0)),c.append("errorMessage",b.toString()),Object.keys(a).forEach(b=>{c.append(b,(a[b]??"").toString())});let d=h(),e=await i(`${d}/__nextjs_original-stack-frame?${c.toString()}`);if(!e.ok||204===e.status)return null;let f=await e.json();return{originalCodeFrame:f.originalCodeFrame,originalStackFrame:f.originalStackFrame}}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}async function k(a){try{let b={frames:a.filter(a=>!!a.file).map(a=>(a.file=a.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:a.file,methodName:a.methodName??"",arguments:[],lineNumber:a.lineNumber??0,column:a.column??0,line1:a.lineNumber??0,column1:a.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},c=h(),d=await i(`${c}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok||204===d.status)return null;return(await d.json()).map(a=>({originalCodeFrame:a.value.originalCodeFrame,originalStackFrame:a.value.originalStackFrame}))}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}c.devErrorSymbolicationEventProcessor=async function a(a,b){"transaction"===a.type&&(a.spans=a.spans?.filter(a=>{let b=a.data?.["http.url"];return"string"!=typeof b||!b.includes("__nextjs_original-stack-frame")}));try{if(b.originalException&&b.originalException instanceof Error&&b.originalException.stack){let c,f=e.parse(b.originalException.stack),h=g._sentryNextJsVersion;if(!h)return a;let i=d.parseSemver(h);if(i.major>15||15===i.major&&i.minor>=2){let b=await k(f);if(null===b)return a;c=b}else c=await Promise.all(f.map(a=>j(a,b.originalException)));a.exception?.values?.[0]?.stacktrace?.frames&&(a.exception.values[0].stacktrace.frames=a.exception.values[0].stacktrace.frames.map((a,b,d)=>{let e=c[d.length-1-b];if(!e?.originalStackFrame||!e.originalCodeFrame)return{...a,platform:a.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:f,preContextLines:g,postContextLines:h}=function(a){let b,c=a.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(a=>!a.match(/^\s*\|/)).map(a=>({line:a,isErrorLine:!!a.match(/^>/)})).map(a=>({...a,line:a.line.replace(/^.*\|/,"")})),d=[],e=[],f=!1;for(let a of c)a.isErrorLine?(b=a.line,f=!0):f?e.push(a.line):d.push(a.line);return{contextLine:b,preContextLines:d,postContextLines:e}}(e.originalCodeFrame);return{...a,pre_context:g,context_line:f,post_context:h,function:e.originalStackFrame.methodName,filename:e.originalStackFrame.file?function(a){if(!a)return a;let b=a.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return b?b[1]:a}(e.originalStackFrame.file):void 0,lineno:e.originalStackFrame.lineNumber||e.originalStackFrame.line1||void 0,colno:e.originalStackFrame.column||e.originalStackFrame.column1||void 0}}))}}catch{}return a}},983894,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getVercelEnv=function(a){let b=a?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return b?`vercel-${b}`:void 0}},411290,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.ATTR_NEXT_ROUTE="next.route",c.ATTR_NEXT_SEGMENT="next.segment",c.ATTR_NEXT_SPAN_NAME="next.span_name",c.ATTR_NEXT_SPAN_TYPE="next.span_type"},228551,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",c.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",c.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},948358,(a,b,c)=>{"use strict";b.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},686758,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE:function(){return f},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="/_not-found",g=`${f}/page`,h="/_global-error",i=`${h}/page`},850067,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={APP_CLIENT_INTERNALS:function(){return ab},APP_PATHS_MANIFEST:function(){return u},APP_PATH_ROUTES_MANIFEST:function(){return v},AdapterOutputType:function(){return k},BARREL_OPTIMIZATION_PREFIX:function(){return U},BLOCKED_PAGES:function(){return P},BUILD_ID_FILE:function(){return O},BUILD_MANIFEST:function(){return w},CLIENT_PUBLIC_FILES_PATH:function(){return Q},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return R},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return _},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return aa},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ae},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return af},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ac},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ad},COMPILER_INDEXES:function(){return j},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return N},DEFAULT_RUNTIME_WEBPACK:function(){return ag},DEFAULT_SANS_SERIF_FONT:function(){return al},DEFAULT_SERIF_FONT:function(){return ak},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return K},DEV_CLIENT_PAGES_MANIFEST:function(){return G},DYNAMIC_CSS_MANIFEST:function(){return $},EDGE_RUNTIME_WEBPACK:function(){return ah},EDGE_UNSUPPORTED_NODE_APIS:function(){return aq},EXPORT_DETAIL:function(){return B},EXPORT_MARKER:function(){return A},FUNCTIONS_CONFIG_MANIFEST:function(){return x},IMAGES_MANIFEST:function(){return E},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Z},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return H},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return Y},MODERN_BROWSERSLIST_TARGET:function(){return g.default},NEXT_BUILTIN_DOCUMENT:function(){return T},NEXT_FONT_MANIFEST:function(){return z},PAGES_MANIFEST:function(){return s},PHASE_ANALYZE:function(){return m},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return r},PHASE_PRODUCTION_BUILD:function(){return n},PHASE_PRODUCTION_SERVER:function(){return o},PHASE_TEST:function(){return q},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return L},ROUTES_MANIFEST:function(){return D},RSC_MODULE_TYPES:function(){return ap},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return F},SERVER_PROPS_ID:function(){return aj},SERVER_REFERENCE_MANIFEST:function(){return W},STATIC_PROPS_ID:function(){return ai},STATIC_STATUS_PAGES:function(){return am},STRING_LITERAL_DROP_BUNDLE:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},SYSTEM_ENTRYPOINTS:function(){return ar},TRACE_OUTPUT_VERSION:function(){return an},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return J},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ao},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return t}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(955289)._(a.r(948358)),h=a.r(686758),i={client:"client",server:"server",edgeServer:"edge-server"},j={[i.client]:0,[i.server]:1,[i.edgeServer]:2};var k=((d={}).PAGES="PAGES",d.PAGES_API="PAGES_API",d.APP_PAGE="APP_PAGE",d.APP_ROUTE="APP_ROUTE",d.PRERENDER="PRERENDER",d.STATIC_FILE="STATIC_FILE",d.MIDDLEWARE="MIDDLEWARE",d);let l="phase-export",m="phase-analyze",n="phase-production-build",o="phase-production-server",p="phase-development-server",q="phase-test",r="phase-info",s="pages-manifest.json",t="webpack-stats.json",u="app-paths-manifest.json",v="app-path-routes-manifest.json",w="build-manifest.json",x="functions-config-manifest.json",y="subresource-integrity-manifest",z="next-font-manifest",A="export-marker.json",B="export-detail.json",C="prerender-manifest.json",D="routes-manifest.json",E="images-manifest.json",F="required-server-files",G="_devPagesManifest.json",H="middleware-manifest.json",I="_clientMiddlewareManifest.json",J="client-build-manifest.json",K="_devMiddlewareManifest.json",L="react-loadable-manifest.json",M="server",N=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],O="BUILD_ID",P=["/_document","/_app","/_error"],Q="public",R="static",S="__NEXT_DROP_CLIENT_FILE__",T="__NEXT_BUILTIN_DOCUMENT__",U="__barrel_optimize__",V="client-reference-manifest",W="server-reference-manifest",X="middleware-build-manifest",Y="middleware-react-loadable-manifest",Z="interception-route-rewrite-manifest",$="dynamic-css-manifest",_="main",aa=`${_}-app`,ab="app-pages-internals",ac="react-refresh",ad="webpack",ae="polyfills",af=Symbol(ae),ag="webpack-runtime",ah="edge-runtime-webpack",ai="__N_SSG",aj="__N_SSP",ak={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},al={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},am=["/500"],an=1,ao=6e3,ap={client:"client",server:"server"},aq=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ar=new Set([_,ac,aa]);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},517613,(a,b,c)=>{b.exports=a.r(850067)},494409,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(517613);c.isBuild=function(){return process.env.NEXT_PHASE===d.PHASE_PRODUCTION_BUILD}},291230,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581);async function f(){try{e.DEBUG_BUILD&&d.debug.log("Flushing events..."),await d.flush(2e3),e.DEBUG_BUILD&&d.debug.log("Done flushing events")}catch(a){e.DEBUG_BUILD&&d.debug.log("Error while flushing events:\n",a)}}function g(){let a=Symbol.for("__cloudflare-context__");return d.GLOBAL_OBJ[a]?.ctx}function h(a){g()?.waitUntil(a)}function i(){return"function"==typeof g()?.waitUntil}c.cloudflareWaitUntil=h,c.flushSafelyWithTimeout=f,c.isCloudflareWaitUntilAvailable=i,c.waitUntil=function(a){i()?h(a):d.vercelWaitUntil(a)}},289467,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);function e(a){let b=a.split("/").filter(a=>a&&!(a.startsWith("(")&&a.endsWith(")")));return b.length>0?`/${b.join("/")}`:"/"}function f(a,b,c,f){let g=f??e(a),h=c?.["x-forwarded-proto"],i=c?.["x-forwarded-host"]||c?.host;if(!h||!i)return g;let j=`${h}://${i}${g}`,k=d.parseStringToURLObject(j);return k?d.getSanitizedUrlStringFromUrlObject(k):g}function g(a){let b=a?.referer;if(b)try{let a=new URL(b);return d.getSanitizedUrlStringFromUrlObject(a)}catch{return}}c.buildUrlFromComponentRoute=f,c.extractSanitizedUrlFromRefererHeader=g,c.getSanitizedRequestUrl=function(a,b,c,d){let e=g(c);return e||f(a,b,c,d)},c.sanitizeRoutePath=e,c.substituteRouteParams=function(a,b){return a}},521467,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(289467);c.setUrlProcessingMetadata=function(a){if("transaction"!==a.type||a.contexts?.trace?.op!=="http.server"||!a.contexts?.trace?.data)return;let b=d.getClient();if(!b?.getOptions().sendDefaultPii)return;let c=a.contexts.trace.data,f=c["next.route"]||c["http.route"],g=c["http.target"];if(!f)return;let h=a.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),i=h?.sdkProcessingMetadata?.normalizedRequest?.headers,j=e.getSanitizedRequestUrl(f,void 0,i,g?.toString());j&&h?.sdkProcessingMetadata&&(h.sdkProcessingMetadata.normalizedRequest=h.sdkProcessingMetadata.normalizedRequest||{},h.sdkProcessingMetadata.normalizedRequest.url=j)}},553484,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(814747);c.distDirRewriteFramesIntegration=d.defineIntegration(({distDirName:a})=>{let b=e.resolve(a).replace(/(\/|\\)$/,""),c=new RegExp(d.escapeStringForRegex(b));return{...d.rewriteFramesIntegration({iteratee:a=>(a.filename=a.filename?.replace(c,"app:///_next"),a)}),name:"DistDirRewriteFrames"}})},447537,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.addHeadersAsAttributes=function(a,b){if(!a)return{};let c=a instanceof Headers||"object"==typeof a&&"get"in a?d.winterCGHeadersToDict(a):a,e=d.httpHeadersToSpanAttributes(c,d.getClient()?.getOptions().sendDefaultPii??!1);return b&&b.setAttributes(e),e}},146939,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(221598),g=a.r(411290),h=a.r(228551),i=e.GLOBAL_OBJ;c.dropMiddlewareTunnelRequests=function(a,b){if(e.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let c=b?.[g.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",j=b?.[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",k=b?.[g.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!c&&!j&&!k)return;let l=function(a){let b=i._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!b)return!1;let c=a[d.SEMATTRS_HTTP_TARGET];if("string"==typeof c){let a=c.split("?")[0]||"";return a===b||a.startsWith(`${b}/`)}return!1}(b||{}),m=f.isSentryRequestSpan(a);(l||m)&&a.setAttribute(h.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},571795,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(357122),f=a.r(187845),g=a.r(263581),h=a.r(411290),i=a.r(228551),j="__PAGE__",k=new WeakMap;function l(a){return"NextNodeServer.getLayoutOrPageModule"===a[h.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===a[h.ATTR_NEXT_SPAN_NAME]&&"string"==typeof a[h.ATTR_NEXT_SEGMENT]}function m({segment:a,route:b}){return a===j?`resolve page server component "${b}"`:""===a?"resolve root layout server component":`resolve layout server component "${a}"`}c.commonObjectToIsolationScope=function(a){if("object"!=typeof a||!a)return new f.Scope;{let b=k.get(a);if(b)return b;{let b=new f.Scope;return k.set(a,b),b}}},c.dropNextjsRootContext=function(){if(f.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let a=f.getActiveSpan();if(a){let b=f.getRootSpan(a),c=f.spanToJSON(b).data;c?.["next.span_type"]&&f.getRootSpan(a)?.setAttribute(i.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},c.escapeNextjsTracing=function(a){let b=f.GLOBAL_OBJ.AsyncLocalStorage;return b?(d||(d=new b),d.getStore())?a():f.startNewTrace(()=>d.run(!0,()=>a())):(g.DEBUG_BUILD&&f.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),a())},c.getEnhancedResolveSegmentSpanName=m,c.isResolveSegmentSpan=l,c.maybeEnhanceServerComponentSpanName=function(a,b,c){if(!l(b))return;let d=b[h.ATTR_NEXT_SEGMENT],g=c[e.ATTR_HTTP_ROUTE],i=m({segment:d,route:"string"==typeof g?g:""});a.updateName(i),a.setAttributes({"sentry.nextjs.ssr.function.type":d===j?"Page":"Layout","sentry.nextjs.ssr.function.route":g}),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},266098,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581),f="sentry.cron.checkInId",g="sentry.cron.monitorSlug",h="sentry.cron.startTime",i="sentry.cron.schedule";c.maybeCompleteCronCheckIn=function(a){let b=d.spanToJSON(a).data,c=b?.[f],j=b?.[g],k=b?.[h],l=b?.[i];if(!c||!j||"number"!=typeof k)return;let m=d._INTERNAL_safeDateNow()/1e3-k,n=d.spanToJSON(a).status,o=n&&"ok"!==n?"error":"ok";d.captureCheckIn({checkInId:c,monitorSlug:j,status:o,duration:m},"string"==typeof l?{maxRuntime:720,schedule:{type:"crontab",value:l}}:void 0),a.setAttribute(f,void 0),a.setAttribute(g,void 0),a.setAttribute(h,void 0),a.setAttribute(i,void 0),e.DEBUG_BUILD&&d.debug.log(`[Cron] Completed check-in for "${j}" with status "${o}"`)},c.maybeStartCronCheckIn=function(a,b){let c=function(){let a=globalThis;if(a._sentryVercelCronsConfig)try{return JSON.parse(a._sentryVercelCronsConfig)}catch{e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!c||!b)return;let j=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!j)return;let k=Array.isArray(j["user-agent"])?j["user-agent"][0]:j["user-agent"];if(!k?.includes("vercel-cron"))return;let l=c.find(a=>a.path===b);if(!l?.path||!l.schedule)return;let m=l.path,n=d._INTERNAL_safeDateNow()/1e3,o=d.captureCheckIn({monitorSlug:m,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}});e.DEBUG_BUILD&&d.debug.log(`[Cron] Started check-in for "${m}" with ID "${o}"`),a.setAttribute(f,o),a.setAttribute(g,m),a.setAttribute(h,n),a.setAttribute(i,l.schedule)}},658788,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e="messaging.system",f="messaging.destination.name",g="messaging.operation.name",h="sentry.queue.enriched";function i(a,b){let c=a[b];return Array.isArray(c)?c[0]:c}c.maybeCleanupQueueSpan=function(a){let b=d.spanToJSON(a).data;b?.[h]&&a.setAttribute(h,void 0)},c.maybeEnrichQueueConsumerSpan=function(a){let b=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!b||"com.vercel.queue.v2beta"!==(Array.isArray(b["ce-type"])?b["ce-type"][0]:b["ce-type"]))return;let c=i(b,"ce-vqsqueuename"),j=i(b,"ce-vqsmessageid"),k=i(b,"ce-vqsconsumergroup"),l=i(b,"ce-vqsdeliverycount");if(a.setAttribute(e,"vercel.queue"),a.setAttribute(g,"process"),c&&a.setAttribute(f,c),j&&a.setAttribute("messaging.message.id",j),k&&a.setAttribute("messaging.consumer.group.name",k),l){let b=parseInt(l,10);isNaN(b)||a.setAttribute("messaging.message.delivery_count",b)}a.setAttribute(h,!0)},c.maybeEnrichQueueProducerSpan=function(a){let b,c=d.spanToJSON(a).data,i=c?.["url.full"];if(!i)return;try{b=new URL(i)}catch{return}if("vercel-queue.com"!==b.hostname&&!b.hostname.endsWith(".vercel-queue.com"))return;let j=b.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!j)return;let k=decodeURIComponent(j[1]);a.setAttribute(e,"vercel.queue"),a.setAttribute(f,k),a.setAttribute(g,"send"),a.setAttribute(h,!0)}},155672,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(357122),f=a.r(187845),g=a.r(221598),h=a.r(411290),i=a.r(447537),j=a.r(146939),k=a.r(571795),l=a.r(266098),m=a.r(658788);c.handleOnSpanStart=function(a){let b=f.spanToJSON(a).data,c=f.getRootSpan(a),n=f.spanToJSON(c).data,o=a===c;if(j.dropMiddlewareTunnelRequests(a,b),"string"==typeof b?.[h.ATTR_NEXT_ROUTE]&&(n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD])&&!n?.[e.ATTR_HTTP_ROUTE]){let a=b[h.ATTR_NEXT_ROUTE].replace(/\/route$/,"");c.updateName(a),c.setAttribute(e.ATTR_HTTP_ROUTE,a),c.setAttribute(h.ATTR_NEXT_ROUTE,a);let d=n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD];"string"==typeof d&&f.getIsolationScope().setTransactionName(`${d} ${a}`),l.maybeStartCronCheckIn(c,a),m.maybeEnrichQueueConsumerSpan(c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let d=b[h.ATTR_NEXT_SPAN_NAME];"string"==typeof d&&(c.updateName(d),c.setAttribute(e.ATTR_HTTP_ROUTE,d),c.setAttribute(h.ATTR_NEXT_SPAN_NAME,d)),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(b?.[h.ATTR_NEXT_SPAN_TYPE]!==void 0&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),o){let a=f.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;i.addHeadersAsAttributes(a,c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&o){let b=f.getCapturedScopesOnSpan(a),c=(b.isolationScope||f.getIsolationScope()).clone(),e=b.scope||f.getCurrentScope(),h=g.getScopesFromContext(d.context.active());h&&(h.isolationScope=c),f.setCapturedScopesOnSpan(a,e,c)}k.maybeEnhanceServerComponentSpanName(a,b,n),m.maybeEnrichQueueProducerSpan(a)}},342069,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581);function f(){let a=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:a}=process.getBuiltinModule("async_hooks")??{};return a}}();if(!a||"function"!=typeof a.snapshot){e.DEBUG_BUILD&&d.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return a.snapshot()}function g(a){return a instanceof Error&&a.message.includes("AsyncLocalStorage")}c.prepareSafeIdGeneratorContext=function(){let a=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),b=d.GLOBAL_OBJ,c=f();if(!c)return;let h=c;b[a]=a=>{try{return h(a)}catch(c){if(!g(c))throw c;let b=f();if(!b)return a();h=b;try{return h(a)}catch(b){if(!g(b))throw b;return a()}}},e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},575672,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.captureUnderscoreErrorException=async function(a){let{req:b,res:c,err:f}=a,g=c?.statusCode||a.statusCode;if(g&&g<500||!a.pathname)return;if(f&&d.isAlreadyCaptured(f)){e.waitUntil(e.flushSafelyWithTimeout());let a="object"==typeof f?f.__sentry_event_id__:void 0;return"string"==typeof a?(d.getIsolationScope().setLastEventId(a),a):d.getIsolationScope().lastEventId()}let h=d.withScope(a=>{if(b){let c=d.httpRequestToRequestData(b);a.setSDKProcessingMetadata({normalizedRequest:c})}return d.captureException(f||`_error.js called with falsy error (${f})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return e.waitUntil(e.flushSafelyWithTimeout()),h}},333299,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.isUseCacheFunction=function(a){if(a.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:b}=function(a){let b=parseInt(a.slice(0,2),16),c=b>>1&63,d=Array(6);for(let a=0;a<6;a++){let b=c>>5-a&1;d[a]=1===b}return{type:1==(b>>7&1)?"use-cache":"server-action",usedArgs:d,hasRestArgs:1==(1&b)}}(a.$$id);return"use-cache"===b}},145408,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581),f=a.r(494409),g=a.r(333299);function h(a){let b=f.isBuild(),c=!!a&&g.isUseCacheFunction(a);return c&&e.DEBUG_BUILD&&d.debug.log("Skipping span creation in Cache Components context"),b||c}function i(){return new d.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}c.startInactiveSpan=function(a){return h()?i():d.startInactiveSpan(a)},c.startSpan=function(a,b){return h(b)?b(i()):d.startSpan(a,b)},c.startSpanManual=function(a,b){if(h(b)){let a=i();return b(a,()=>a.end())}return d.startSpanManual(a,b)}},988136,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(228551);c.callDataFetcherTraced=async function(a,b){try{return await a(...b)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),a}},c.withErrorInstrumentation=function(a){return async function(...b){try{return await a.apply(this,b)}catch(b){throw d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:a.name}}}),b}}},c.withTracedServerSideDataFetcher=function(a,b,c,f){return async function(...c){let g=d.httpRequestToRequestData(b);d.getCurrentScope().setTransactionName(`${f.dataFetchingMethodName} (${f.dataFetcherRouteName})`),d.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g});let h=d.getActiveSpan();h&&"/_error"!==f.requestedRouteName&&d.getRootSpan(h).setAttribute(e.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,f.requestedRouteName);let{"sentry-trace":i,baggage:j}=d.getTraceData();return{sentryTrace:i,baggage:j,data:await a.apply(this,c)}}}},709897,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetStaticPropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let f=e.withErrorInstrumentation(a);return e.callDataFetcherTraced(f,c)}})}},890588,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:f.pathname,requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c)??{};return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},739941,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapAppGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f.ctx,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_app",requestedRouteName:f.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,sentryTrace:j,baggage:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(d.pageProps||(d.pageProps={}),j&&(d.pageProps._sentryTraceData=j),k&&(d.pageProps._sentryBaggage=k)),d}}})}},588876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapDocumentGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_document",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d}=await a.apply(b,c);return d}}})}},178211,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapErrorGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_error",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},193860,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetServerSidePropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,c,f)=>{if(d.isBuild())return a.apply(c,f);let[g]=f,{req:h,res:i}=g,j=e.withErrorInstrumentation(a),k=e.withTracedServerSideDataFetcher(j,h,i,{dataFetcherRouteName:b,requestedRouteName:b,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:m,sentryTrace:n}=await k.apply(c,f);return"object"==typeof l&&null!==l&&"props"in l&&(n&&(l.props._sentryTraceData=n),m&&(l.props._sentryBaggage=m)),l}})}},902363,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.isNotFoundNavigationError=function(a){return d.isError(a)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(a.digest)},c.isRedirectNavigationError=function(a){return d.isError(a)&&"string"==typeof a.digest&&a.digest.startsWith("NEXT_REDIRECT;")}},655243,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);c.wrapServerComponentWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h=d.getIsolationScope(),i=b.headers?d.winterCGHeadersToDict(b.headers):void 0;return h.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g}=b,i=!0;h.setTransactionName(`${g} Server Component (${f})`),c&&(e.isNotFoundNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),i&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},22912,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);a.r(571795),c.wrapRouteHandlerWithSentry=function(a,b){let{method:c,parameterizedRoute:g,headers:h}=b;return new Proxy(a,{apply:async(a,b,h)=>{let i=d.getActiveSpan(),j=i?d.getRootSpan(i):void 0;return d.withIsolationScope(d.getIsolationScope(),()=>d.withScope(async k=>{k.setTransactionName(`${c} ${g}`);let l=await d.handleCallbackErrors(()=>a.apply(b,h),a=>{e.isRedirectNavigationError(a)||(e.isNotFoundNavigationError(a)?(i&&d.setHttpStatus(i,404),j&&d.setHttpStatus(j,404)):d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{f.waitUntil(f.flushSafelyWithTimeout())});try{l.status&&(i&&d.setHttpStatus(i,l.status),j&&d.setHttpStatus(j,l.status))}catch{}return l}))}})}},102626,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.wrapApiHandlerWithSentryVercelCrons=function(a,b){return new Proxy(a,{apply:(a,c,e)=>{let f;if(!e?.[0])return a.apply(c,e);let[g]=e,h="nextUrl"in g?g.nextUrl.pathname:g.url,i="nextUrl"in g?g.headers.get("user-agent"):g.headers["user-agent"];if(!b||!i?.includes("vercel-cron"))return a.apply(c,e);let j=b.find(a=>a.path===h);if(!j?.path||!j.schedule)return a.apply(c,e);let k=j.path,l=d.captureCheckIn({monitorSlug:k,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:j.schedule}}),m=d._INTERNAL_safeDateNow()/1e3,n=()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"error",duration:d._INTERNAL_safeDateNow()/1e3-m})};try{f=a.apply(c,e)}catch(a){throw n(),a}return"object"==typeof f&&null!==f&&"then"in f?Promise.resolve(f).then(()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m})},()=>{n()}):d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m}),f}})}},689914,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.wrapMiddlewareWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{let f="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(f&&"string"==typeof f){let a=c[0];if(a instanceof Request&&new URL(a.url).pathname.startsWith(f))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return d.withIsolationScope(f=>{let g,h,i=c[0],j=d.getCurrentScope();i instanceof Request?(f.setSDKProcessingMetadata({normalizedRequest:d.winterCGRequestToRequestData(i)}),g=`middleware ${i.method}`,h="url"):(g="middleware",h="component"),j.setTransactionName(g);let k=d.getActiveSpan();if(k){g="middleware",h="component";let a=d.getRootSpan(k);a&&d.setCapturedScopesOnSpan(a,j,f)}return d.startSpan({name:g,op:"http.server.middleware",attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h,[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>d.handleCallbackErrors(()=>a.apply(b,c),a=>{d.captureException(a,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{e.waitUntil(e.flushSafelyWithTimeout())}))})}})}},260329,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);function e(a,b){a&&"object"==typeof a&&d.addNonEnumerableProperty(a,"__sentry_event_id__",b)}c.wrapPageComponentWithSentry=function(a){return"function"==typeof a&&a?.prototype?.isReactComponent?class extends a{render(...a){return d.withIsolationScope(()=>{let b=d.getCurrentScope(),c="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(c){let a=d.extractTraceparentData(c);b.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return super.render(...a)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw e(b,a),b}})}}:"function"==typeof a?new Proxy(a,{apply:(a,b,c)=>d.withIsolationScope(()=>{let f=d.getCurrentScope(),g=c?.[0]?._sentryTraceData;if(g){let a=d.extractTraceparentData(g);f.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return a.apply(b,c)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw e(b,a),b}})}):a}},773896,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);c.wrapGenerationFunctionWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h,i=d.getIsolationScope();try{h=b.requestAsyncStorage?.getStore()?.headers}catch{}let j=h?d.winterCGHeadersToDict(h):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:j}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g,generationFunctionIdentifier:h}=b,j=!0;i.setTransactionName(`${g}.${h} (${f})`),c&&(e.isNotFoundNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),j&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:h}}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},341264,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230),f=a.r(263581),g=a.r(902363);async function h(a,b,c){return d.withIsolationScope(async h=>{let i,j,k=d.getClient()?.getOptions().sendDefaultPii,l={};try{let a=await b.headers;i=a?.get("sentry-trace")??void 0,j=a?.get("baggage"),a?.forEach((a,b)=>{l[b]=a})}catch{f.DEBUG_BUILD&&d.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return h.setTransactionName(`serverAction/${a}`),h.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:i,baggage:j},async()=>{try{return await d.startSpan({op:"function.server_action",name:`serverAction/${a}`,forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async a=>{let e=await d.handleCallbackErrors(c,b=>{g.isNotFoundNavigationError(b)?a.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"}):g.isRedirectNavigationError(b)||(a.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"}),d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==b.recordResponse?b.recordResponse:k)&&d.getIsolationScope().setExtra("server_action_result",e),b.formData&&b.formData.forEach((a,b)=>{d.getIsolationScope().setExtra(`server_action_form_data.${b}`,"string"==typeof a?a:"[non-string value]")}),e})}finally{e.waitUntil(e.flushSafelyWithTimeout())}})})}c.withServerActionInstrumentation=function(...a){if("function"==typeof a[1]){let[b,c]=a;return h(b,{},c)}{let[b,c,d]=a;return h(b,c,d)}}},958031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.captureRequestError=function(a,b,c){d.withScope(f=>{f.setSDKProcessingMetadata({normalizedRequest:{headers:d.headersToDict(b.headers),method:b.method}}),f.setContext("nextjs",{request_path:b.path,router_kind:c.routerKind,router_path:c.routePath,route_type:c.routeType}),f.setTransactionName(`${b.method} ${c.routePath}`),d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),e.waitUntil(e.flushSafelyWithTimeout())})}},427967,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230),f=a.r(571795);c.wrapApiHandlerWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>(f.dropNextjsRootContext(),f.escapeNextjsTracing(()=>{let[f,h]=g;return f?h?f.__withSentry_applied__?a.apply(c,g):(f.__withSentry_applied__=!0,d.withIsolationScope(i=>(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:f.headers&&d.isString(f.headers["sentry-trace"])?f.headers["sentry-trace"]:void 0,baggage:f.headers?.baggage},()=>{let j=`${(f.method||"GET").toUpperCase()} `,k=d.httpRequestToRequestData(f);return i.setSDKProcessingMetadata({normalizedRequest:k}),i.setTransactionName(`${j}${b}`),d.startSpanManual({name:`${j}${b}`,op:"http.server",forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async b=>{h.end=new Proxy(h.end,{apply:(a,c,f)=>(d.setHttpStatus(b,h.statusCode),b.end(),e.waitUntil(e.flushSafelyWithTimeout()),a.apply(c,f))});try{return await a.apply(c,g)}catch(f){let c=d.objectify(f);throw d.captureException(c,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:a.name,function:"withSentry"}}}),d.setHttpStatus(b,500),b.end(),await e.flushSafelyWithTimeout(),c}})}))):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a response object. Will not instrument.`),a.apply(c,g)):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a request object. Will not instrument.`),a.apply(c,g))}))})}},610599,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(848074),g=a.r(263581);a.r(10308);let h=a.r(983894),i=a.r(411290),j=a.r(228551),k=a.r(494409),l=a.r(291230),m=a.r(521467),n=a.r(553484),o=a.r(155672),p=a.r(342069),q=a.r(266098),r=a.r(658788),s=a.r(575672),t=a.r(145408),u=a.r(709897),v=a.r(890588),w=a.r(739941),x=a.r(588876),y=a.r(178211),z=a.r(193860),A=a.r(655243),B=a.r(22912),C=a.r(102626),D=a.r(689914),E=a.r(260329),F=a.r(773896),G=a.r(341264),H=a.r(958031),I=a.r(427967);e.GLOBAL_OBJ,c.captureUnderscoreErrorException=s.captureUnderscoreErrorException,c.startInactiveSpan=t.startInactiveSpan,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.wrapGetStaticPropsWithSentry=u.wrapGetStaticPropsWithSentry,c.wrapGetInitialPropsWithSentry=v.wrapGetInitialPropsWithSentry,c.wrapAppGetInitialPropsWithSentry=w.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=x.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=y.wrapErrorGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=z.wrapGetServerSidePropsWithSentry,c.wrapServerComponentWithSentry=A.wrapServerComponentWithSentry,c.wrapRouteHandlerWithSentry=B.wrapRouteHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,c.wrapMiddlewareWithSentry=D.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=E.wrapPageComponentWithSentry,c.wrapGenerationFunctionWithSentry=F.wrapGenerationFunctionWithSentry,c.withServerActionInstrumentation=G.withServerActionInstrumentation,c.captureRequestError=H.captureRequestError,c.wrapApiHandlerWithSentry=I.wrapApiHandlerWithSentry,c.ErrorBoundary=a=>a.children?"function"==typeof a.children?a.children():a.children:null,c.createReduxEnhancer=function(){return a=>a},c.init=function(a){if(p.prepareSafeIdGeneratorContext(),k.isBuild())return;!g.DEBUG_BUILD&&a.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let b=f.getDefaultIntegrations(a).filter(a=>"Http"!==a.name).concat(f.httpIntegration({disableIncomingRequestSpans:!0}));a.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),b.push(n.distDirRewriteFramesIntegration({distDirName:".next"}));let c=function(){if(l.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),s={environment:a.environment||process.env.SENTRY_ENVIRONMENT||h.getVercelEnv(!1)||"production",release:"9dad66acd3deb36c6e51fae1fdce6de96dd992c7",defaultIntegrations:b,...a,...c};if(g.DEBUG_BUILD&&s.debug&&e.debug.enable(),g.DEBUG_BUILD&&e.debug.log("Initializing SDK..."),e.getClient()){g.DEBUG_BUILD&&e.debug.log("SDK already initialized");return}e.applySdkMetadata(s,"nextjs",["nextjs",c?"cloudflare":"node"]);let t=f.init(s);t?.on("beforeSampling",({spanAttributes:a},b)=>{("string"==typeof a[d.SEMATTRS_HTTP_TARGET]&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof a[d.ATTR_URL_QUERY]&&a[d.ATTR_URL_QUERY].includes("sentry_key")&&a[d.ATTR_URL_QUERY].includes("sentry_client"))&&(b.decision=!1)}),t?.on("spanStart",o.handleOnSpanStart),t?.on("spanEnd",q.maybeCompleteCronCheckIn),t?.on("spanEnd",r.maybeCleanupQueueSpan),e.getGlobalScope().addEventProcessor(Object.assign(a=>{if("transaction"!==a.type)return a;if(a.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||a.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===a.transaction||a.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===a.transaction)return null;if("string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(b?.parentSampled===!1)return null}return a},{id:"NextLowQualityTransactionsFilter"})),e.getGlobalScope().addEventProcessor(Object.assign((a,b)=>{if(void 0!==a.type)return a;let c=b.originalException;if("object"==typeof c&&null!==c&&"$$typeof"in c&&c.$$typeof===Symbol.for("react.postpone"))return null;let d=a.exception?.values?.[0]?.value;return d?.includes("Suspense Exception: This is not a real error!")||d?.includes("Suspense Exception: This is not a real error, and should not leak")?null:a},{id:"DropReactControlFlowErrors"})),t?.on("preprocessEvent",a=>{if("transaction"===a.type&&a.contexts?.trace?.data?.[i.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",a.contexts.trace.op="http.server",a.transaction&&(a.transaction=e.stripUrlQueryAndFragment(a.transaction));let b=a.contexts.trace.data[d.SEMATTRS_HTTP_METHOD],c=a.contexts?.trace?.data?.[d.SEMATTRS_HTTP_TARGET],f=a.contexts.trace.data[d.ATTR_HTTP_ROUTE]||a.contexts.trace.data[i.ATTR_NEXT_ROUTE],g=a.contexts.trace.data[i.ATTR_NEXT_SPAN_NAME];if("string"==typeof b&&"string"==typeof f&&!f.startsWith("middleware")){let c=f.replace(/\/route$/,"");a.transaction=`${b} ${c}`,a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",a.contexts.trace.data[i.ATTR_NEXT_ROUTE]=c}a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==a.transaction&&(a.transaction=`${b} ${a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let h="string"==typeof g&&g.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);h&&(a.transaction=`middleware ${h[1]}`,a.contexts.trace.op="http.server.middleware"),"GET /_error"===a.transaction&&c&&(a.transaction=`${b?`${b} `:""}${c}`)}if("transaction"===a.type&&"string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);b?.traceId&&(a.contexts.trace.trace_id=b.traceId),b?.parentSpanId&&(a.contexts.trace.parent_span_id=b.parentSpanId)}m.setUrlProcessingMetadata(a)});try{e.getGlobalScope().setTag("turbopack",!0)}catch{}return g.DEBUG_BUILD&&e.debug.log("SDK successfully initialized"),t},c.showReportDialog=function(){},c.withErrorBoundary=function(a){return a},Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})},305803,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(474224),e=a.r(610599),f=a.r(848074),g=a.r(958031),h=a.r(575672),i=a.r(145408),j=a.r(341264),k=a.r(427967),l=a.r(102626),m=a.r(739941),n=a.r(588876),o=a.r(178211),p=a.r(773896),q=a.r(890588),r=a.r(193860),s=a.r(709897),t=a.r(689914),u=a.r(260329),v=a.r(22912),w=a.r(655243);c.withSentryConfig=d.withSentryConfig,c.ErrorBoundary=e.ErrorBoundary,c.createReduxEnhancer=e.createReduxEnhancer,c.init=e.init,c.showReportDialog=e.showReportDialog,c.withErrorBoundary=e.withErrorBoundary,c.captureRequestError=g.captureRequestError,c.captureUnderscoreErrorException=h.captureUnderscoreErrorException,c.startInactiveSpan=i.startInactiveSpan,c.startSpan=i.startSpan,c.startSpanManual=i.startSpanManual,c.withServerActionInstrumentation=j.withServerActionInstrumentation,c.wrapApiHandlerWithSentry=k.wrapApiHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=l.wrapApiHandlerWithSentryVercelCrons,c.wrapAppGetInitialPropsWithSentry=m.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=n.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=o.wrapErrorGetInitialPropsWithSentry,c.wrapGenerationFunctionWithSentry=p.wrapGenerationFunctionWithSentry,c.wrapGetInitialPropsWithSentry=q.wrapGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=r.wrapGetServerSidePropsWithSentry,c.wrapGetStaticPropsWithSentry=s.wrapGetStaticPropsWithSentry,c.wrapMiddlewareWithSentry=t.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=u.wrapPageComponentWithSentry,c.wrapRouteHandlerWithSentry=v.wrapRouteHandlerWithSentry,c.wrapServerComponentWithSentry=w.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})}]; +Mongoose Error Code: ${b.code}`:""}`})}function i(a,b,c,f){c&&(0,e.safeExecuteInTheMiddle)(()=>c(a,{moduleVersion:f,response:b}),a=>{a&&d.diag.error("mongoose instrumentation: responseHook error",a)},!0)}c.getAttributesFromCollection=function(a,b,c){let d={};return b&e.SemconvStability.OLD&&(d[f.ATTR_DB_MONGODB_COLLECTION]=a.name,d[f.ATTR_DB_NAME]=a.conn.name,d[f.ATTR_DB_USER]=a.conn.user),b&e.SemconvStability.STABLE&&(d[g.ATTR_DB_COLLECTION_NAME]=a.name,d[g.ATTR_DB_NAMESPACE]=a.conn.name),c&e.SemconvStability.OLD&&(d[f.ATTR_NET_PEER_NAME]=a.conn.host,d[f.ATTR_NET_PEER_PORT]=a.conn.port),c&e.SemconvStability.STABLE&&(d[g.ATTR_SERVER_ADDRESS]=a.conn.host,d[g.ATTR_SERVER_PORT]=a.conn.port),d},c.handlePromiseResponse=function(a,b,c,d){return a instanceof Promise?a.then(a=>(i(b,a,c,d),a)).catch(a=>{throw h(b,a),a}).finally(()=>b.end()):(i(b,a,c,d),b.end(),a)},c.handleCallbackResponse=function(a,b,c,d,e,f,g){let j=0;return 2===e.length?j=1:3===e.length&&(j=2),e[j]=(b,c)=>(b?h(d,b):i(d,c,f,g),d.end(),a(b,c)),b.apply(c,e)}},464532,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"},625098,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=c._ALREADY_INSTRUMENTED=c._STORED_PARENT_SPAN=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(306195),g=a.r(167300),h=a.r(464532),i=a.r(442679),j=a.r(357122),k=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],l=["remove","count","findOneAndRemove",...k],m=["count","findOneAndRemove",...k],n=[...k];function o(a){return a?a.startsWith("6.")||a.startsWith("5.")?l:a.startsWith("7.")?m:n:k}function p(a){return a&&(a.startsWith("5.")||a.startsWith("6."))||!1}function q(a){return!!a&&!!a.startsWith("8.")&&parseInt(a.split(".")[1],10)>=21}c._STORED_PARENT_SPAN=Symbol("stored-parent-span"),c._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class r extends g.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,g.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new g.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a;return this._wrap(c.Model.prototype,"save",this.patchOnModelMethods("save",b)),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._wrap(c.Model.prototype,"remove",this.patchOnModelMethods("remove",b)),q(b)&&(this._wrap(c.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",b)),this._wrap(c.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",b))),this._wrap(c.Query.prototype,"exec",this.patchQueryExec(b)),this._wrap(c.Aggregate.prototype,"exec",this.patchAggregateExec(b)),o(b).forEach(a=>{this._wrap(c.Query.prototype,a,this.patchAndCaptureSpanContext(a))}),this._wrap(c.Model,"aggregate",this.patchModelAggregate()),this._wrap(c.Model,"insertMany",this.patchModelStatic("insertMany",b)),this._wrap(c.Model,"bulkWrite",this.patchModelStatic("bulkWrite",b)),c}unpatch(a,b){let c="Module"===a[Symbol.toStringTag]?a.default:a,d=o(b);this._unwrap(c.Model.prototype,"save"),c.Model.prototype.$save=c.Model.prototype.save,p(b)&&this._unwrap(c.Model.prototype,"remove"),q(b)&&(this._unwrap(c.Model.prototype,"updateOne"),this._unwrap(c.Model.prototype,"deleteOne")),this._unwrap(c.Query.prototype,"exec"),this._unwrap(c.Aggregate.prototype,"exec"),d.forEach(a=>{this._unwrap(c.Query.prototype,a)}),this._unwrap(c.Model,"aggregate"),this._unwrap(c.Model,"insertMany"),this._unwrap(c.Model,"bulkWrite")}patchAggregateExec(a){let b=this;return e=>function(f){if(b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l("aggregate",{options:this.options,aggregatePipeline:this._pipeline});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this._model.collection,this._model?.modelName,"aggregate",k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchQueryExec(a){let b=this;return e=>function(f){if(this[c._ALREADY_INSTRUMENTED]||b.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let h=this[c._STORED_PARENT_SPAN],k={},{dbStatementSerializer:l}=b.getConfig();if(l){let a=l(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});b._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_STATEMENT]=a),b._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_QUERY_TEXT]=a)}let m=b._startSpan(this.mongooseCollection,this.model.modelName,this.op,k,h);return b._handleResponse(m,e,this,arguments,f,a)}}patchOnModelMethods(a,b){let c=this;return e=>function(f,h){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);let k={document:this};!f||f instanceof Function||(k.options=f);let l={},{dbStatementSerializer:m}=c.getConfig();if(m){let b=m(a,k);c._dbSemconvStability&g.SemconvStability.OLD&&(l[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(l[j.ATTR_DB_QUERY_TEXT]=b)}let n=c._startSpan(this.constructor.collection,this.constructor.modelName,a,l);return f instanceof Function&&(h=f,f=void 0),c._handleResponse(n,e,this,arguments,h,b)}}_patchDocumentUpdateMethods(a,b){let e=this;return f=>function(h,k,l){if(e.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return f.apply(this,arguments);let m=l,n=h,o=k;"function"==typeof h?(m=h,n=void 0,o=void 0):"function"==typeof k&&(m=k,o=void 0);let p={},q=e.getConfig().dbStatementSerializer;if(q){let b=q(a,{condition:{_id:this._id},updates:n,options:o});e._dbSemconvStability&g.SemconvStability.OLD&&(p[i.ATTR_DB_STATEMENT]=b),e._dbSemconvStability&g.SemconvStability.STABLE&&(p[j.ATTR_DB_QUERY_TEXT]=b)}let r=e._startSpan(this.constructor.collection,this.constructor.modelName,a,p),s=e._handleResponse(r,f,this,arguments,m,b);return s&&"object"==typeof s&&(s[c._ALREADY_INSTRUMENTED]=!0),s}}patchModelStatic(a,b){let c=this;return e=>function(f,h,k){if(c.getConfig().requireParentSpan&&void 0===d.trace.getSpan(d.context.active()))return e.apply(this,arguments);"function"==typeof h&&(k=h,h=void 0);let l={};switch(a){case"insertMany":l.documents=f;break;case"bulkWrite":l.operations=f;break;default:l.document=f}void 0!==h&&(l.options=h);let m={},{dbStatementSerializer:n}=c.getConfig();if(n){let b=n(a,l);c._dbSemconvStability&g.SemconvStability.OLD&&(m[i.ATTR_DB_STATEMENT]=b),c._dbSemconvStability&g.SemconvStability.STABLE&&(m[j.ATTR_DB_QUERY_TEXT]=b)}let o=c._startSpan(this.collection,this.modelName,a,m);return c._handleResponse(o,e,this,arguments,k,b)}}patchModelAggregate(){let a=this;return b=>function(){let e=d.trace.getSpan(d.context.active()),f=a._callOriginalFunction(()=>b.apply(this,arguments));return f&&(f[c._STORED_PARENT_SPAN]=e),f}}patchAndCaptureSpanContext(a){let b=this;return a=>function(){return this[c._STORED_PARENT_SPAN]=d.trace.getSpan(d.context.active()),b._callOriginalFunction(()=>a.apply(this,arguments))}}_startSpan(a,b,c,e,h){let k={...e,...(0,f.getAttributesFromCollection)(a,this._dbSemconvStability,this._netSemconvStability)};this._dbSemconvStability&g.SemconvStability.OLD&&(k[i.ATTR_DB_OPERATION]=c,k[i.ATTR_DB_SYSTEM]="mongoose"),this._dbSemconvStability&g.SemconvStability.STABLE&&(k[j.ATTR_DB_OPERATION_NAME]=c,k[j.ATTR_DB_SYSTEM_NAME]=i.DB_SYSTEM_NAME_VALUE_MONGODB);let l=this._dbSemconvStability&g.SemconvStability.STABLE?`${c} ${a.name}`:`mongoose.${b}.${c}`;return this.tracer.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:k},h?d.trace.setSpan(d.context.active(),h):void 0)}_handleResponse(a,b,c,d,e,g){let h=this;if(e instanceof Function)return h._callOriginalFunction(()=>(0,f.handleCallbackResponse)(e,b,c,a,d,h.getConfig().responseHook,g));{let e=h._callOriginalFunction(()=>b.apply(c,d));return(0,f.handlePromiseResponse)(e,a,h.getConfig().responseHook,g)}}_callOriginalFunction(a){return this.getConfig().suppressInternalInstrumentation?d.context.with((0,e.suppressTracing)(d.context.active()),a):a()}}c.MongooseInstrumentation=r},969069,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MongooseInstrumentation=void 0;var d=a.r(625098);Object.defineProperty(c,"MongooseInstrumentation",{enumerable:!0,get:function(){return d.MongooseInstrumentation}})},720382,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(969069),e=a.r(187845),f=a.r(309569),g="Mongoose",h=f.generateInstrumentOnce(g,()=>new d.MongooseInstrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mongoose")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMongoose=h,c.mongooseIntegration=i},859284,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTIONS_USAGE=c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql",c.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"},217073,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(c.AttributeNames||(c.AttributeNames={})).MYSQL_VALUES="db.mysql.values"},839212,(a,b,c)=>{"use strict";function d(a){return a?`[${a.toString()}]`:""}Object.defineProperty(c,"__esModule",{value:!0}),c.getPoolNameOld=c.arrayStringifyHelper=c.getSpanName=c.getDbValues=c.getDbQueryText=c.getJDBCString=c.getConfig=void 0,c.getConfig=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}},c.getJDBCString=function(a,b,c){let d=`jdbc:mysql://${a||"localhost"}`;return"number"==typeof b&&(d+=`:${b}`),"string"==typeof c&&(d+=`/${c}`),d},c.getDbQueryText=function(a){return"string"==typeof a?a:a.sql},c.getDbValues=function(a,b){return"string"==typeof a?d(b):d(b||a.values)},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.arrayStringifyHelper=d,c.getPoolNameOld=function(a){let b=a.config.connectionConfig,c="";return c+=b.host?`host: '${b.host}', `:"",c+=b.port?`port: ${b.port}, `:"",c+=b.database?`database: '${b.database}', `:"",c+=b.user?`user: '${b.user}'`:"",b.user||(c=c.substring(0,c.length-2)),c.trim()}},922059,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"},101052,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(859284),h=a.r(217073),i=a.r(839212),j=a.r(922059);class k extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(g.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(a,b,c){this._connectionsUsageOld?.add(a,{state:c,name:b})}init(){return[new e.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],a=>((0,e.isWrapped)(a.createConnection)&&this._unwrap(a,"createConnection"),this._wrap(a,"createConnection",this._patchCreateConnection()),(0,e.isWrapped)(a.createPool)&&this._unwrap(a,"createPool"),this._wrap(a,"createPool",this._patchCreatePool()),(0,e.isWrapped)(a.createPoolCluster)&&this._unwrap(a,"createPoolCluster"),this._wrap(a,"createPoolCluster",this._patchCreatePoolCluster()),a),a=>{void 0!==a&&(this._unwrap(a,"createConnection"),this._unwrap(a,"createPool"),this._unwrap(a,"createPoolCluster"))})]}_patchCreateConnection(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),d}}}_patchCreatePool(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"query",b._patchQuery(d)),b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"end",b._patchPoolEnd(d)),b._setPoolCallbacks(d,""),d}}}_patchPoolEnd(a){return b=>{let c=this;return function(d){let e=a._allConnections.length,f=a._freeConnections.length,g=(0,i.getPoolNameOld)(a);c._connCountAdd(-(e-f),g,"used"),c._connCountAdd(-f,g,"idle"),b.apply(a,arguments)}}}_patchCreatePoolCluster(){return a=>{let b=this;return function(c){let d=a(...arguments);return b._wrap(d,"getConnection",b._patchGetConnection(d)),b._wrap(d,"add",b._patchAdd(d)),d}}}_patchAdd(a){return b=>{let c=this;return function(d,e){if(!c._enabled)return c._unwrap(a,"add"),b.apply(a,arguments);b.apply(a,arguments);let f=a._nodes;if(f){let b=f["object"==typeof d?"CLUSTER::"+a._lastId:String(d)].pool;c._setPoolCallbacks(b,d)}}}}_patchGetConnection(a){return b=>{let c=this;return function(d,e,f){if(!c._enabled)return c._unwrap(a,"getConnection"),b.apply(a,arguments);if(1==arguments.length&&"function"==typeof d){let e=c._getConnectionCallbackPatchFn(d);return b.call(a,e)}if(2==arguments.length&&"function"==typeof e){let f=c._getConnectionCallbackPatchFn(e);return b.call(a,d,f)}if(3==arguments.length&&"function"==typeof f){let g=c._getConnectionCallbackPatchFn(f);return b.call(a,d,e,g)}return b.apply(a,arguments)}}}_getConnectionCallbackPatchFn(a){let b=this,c=d.context.active();return function(f,g){g&&!(0,e.isWrapped)(g.query)&&b._wrap(g,"query",b._patchQuery(g)),"function"==typeof a&&d.context.with(c,a,this,f,g)}}_patchQuery(a){return b=>{let c=this;return function(j,k,l){if(!c._enabled)return c._unwrap(a,"query"),b.apply(a,arguments);let m={},{host:n,port:o,database:p,user:q}=(0,i.getConfig)(a.config),r=parseInt(o,10),s=(0,i.getDbQueryText)(j);c._dbSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_MYSQL,m[g.ATTR_DB_CONNECTION_STRING]=(0,i.getJDBCString)(n,o,p),m[g.ATTR_DB_NAME]=p,m[g.ATTR_DB_USER]=q,m[g.ATTR_DB_STATEMENT]=s),c._dbSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_DB_SYSTEM_NAME]=f.DB_SYSTEM_NAME_VALUE_MYSQL,m[f.ATTR_DB_NAMESPACE]=p,m[f.ATTR_DB_QUERY_TEXT]=s),c._netSemconvStability&e.SemconvStability.OLD&&(m[g.ATTR_NET_PEER_NAME]=n,isNaN(r)||(m[g.ATTR_NET_PEER_PORT]=r)),c._netSemconvStability&e.SemconvStability.STABLE&&(m[f.ATTR_SERVER_ADDRESS]=n,isNaN(r)||(m[f.ATTR_SERVER_PORT]=r));let t=c.tracer.startSpan((0,i.getSpanName)(j),{kind:d.SpanKind.CLIENT,attributes:m});if(c.getConfig().enhancedDatabaseReporting){let a;Array.isArray(k)?a=k:arguments[2]&&(a=[k]),t.setAttribute(h.AttributeNames.MYSQL_VALUES,(0,i.getDbValues)(j,a))}let u=Array.from(arguments).findIndex(a=>"function"==typeof a),v=d.context.active();if(-1!==u)return c._wrap(arguments,u,c._patchCallbackQuery(t,v)),d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));{let c=d.context.with(d.trace.setSpan(d.context.active(),t),()=>b.apply(a,arguments));return d.context.bind(v,c),c.on("error",a=>t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message})).on("end",()=>{t.end()})}}}}_patchCallbackQuery(a,b){return c=>function(e,f,g){return e&&a.setStatus({code:d.SpanStatusCode.ERROR,message:e.message}),a.end(),d.context.with(b,()=>c(...arguments))}}_setPoolCallbacks(a,b){let c=b||(0,i.getPoolNameOld)(a);a.on("connection",a=>{this._connCountAdd(1,c,"idle")}),a.on("acquire",a=>{this._connCountAdd(-1,c,"idle"),this._connCountAdd(1,c,"used")}),a.on("release",a=>{this._connCountAdd(1,c,"idle"),this._connCountAdd(-1,c,"used")})}}c.MySQLInstrumentation=k},992288,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQLInstrumentation=void 0;var d=a.r(101052);Object.defineProperty(c,"MySQLInstrumentation",{enumerable:!0,get:function(){return d.MySQLInstrumentation}})},370840,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(992288),e=a.r(187845),f=a.r(309569),g="Mysql",h=f.generateInstrumentOnce(g,()=>new d.MySQLInstrumentation({})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql=h,c.mysqlIntegration=i},246060,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MYSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MYSQL="mysql"},481992,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.addSqlCommenterComment=void 0;let d=a.r(832528),e=a.r(498562);c.addSqlCommenterComment=function(a,b){let c;if("string"!=typeof b||0===b.length||(c=b.indexOf("--"))>=0||!(0>b.indexOf("/*"))&&c{let b=encodeURIComponent(g[a]).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`);return`${a}='${b}'`}).join(",");return`${b} /*${i}*/`}},762015,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getConnectionPrototypeToInstrument=c.once=c.getSpanName=c.getQueryText=c.getConnectionAttributes=void 0;let d=a.r(246060),e=a.r(167300),f=a.r(357122);function g(a){return a.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}c.getConnectionAttributes=function(a,b,c){var g,h,i;let j,{host:k,port:l,database:m,user:n}=function(a){let{host:b,port:c,database:d,user:e}=a&&a.connectionConfig||a||{};return{host:b,port:c,database:d,user:e}}(a),o={};b&e.SemconvStability.OLD&&(o[d.ATTR_DB_CONNECTION_STRING]=(g=k,h=l,i=m,j=`jdbc:mysql://${g||"localhost"}`,"number"==typeof h&&(j+=`:${h}`),"string"==typeof i&&(j+=`/${i}`),j),o[d.ATTR_DB_NAME]=m,o[d.ATTR_DB_USER]=n),b&e.SemconvStability.STABLE&&(o[f.ATTR_DB_NAMESPACE]=m);let p=parseInt(l,10);return c&e.SemconvStability.OLD&&(o[d.ATTR_NET_PEER_NAME]=k,isNaN(p)||(o[d.ATTR_NET_PEER_PORT]=p)),c&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=k,isNaN(p)||(o[f.ATTR_SERVER_PORT]=p)),o},c.getQueryText=function(a,b,c,d=!1,e=g){let[f,h]="string"==typeof a?[a,c]:[a.sql,"values"in a?c||a.values:c];try{if(d)return e(f);if(b&&h)return b(f,h);return f}catch(a){return"Could not determine the query due to an error in masking or formatting"}},c.getSpanName=function(a){let b="object"==typeof a?a.sql:a,c=b?.indexOf(" ");return"number"==typeof c&&-1!==c?b?.substring(0,c):b},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}},c.getConnectionPrototypeToInstrument=function(a){let b=a.prototype,c=Object.getPrototypeOf(b);return"function"==typeof c?.query&&"function"==typeof c?.execute?c:b}},729087,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"},980415,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(246060),g=a.r(481992),h=a.r(762015),i=a.r(729087),j=a.r(357122),k=[">=1.4.2 <4"];class l extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let a;function b(b){!a&&b.format&&(a=b.format)}let c=b=>{(0,e.isWrapped)(b.query)&&this._unwrap(b,"query"),this._wrap(b,"query",this._patchQuery(a,!1)),(0,e.isWrapped)(b.execute)&&this._unwrap(b,"execute"),this._wrap(b,"execute",this._patchQuery(a,!0))},d=a=>{this._unwrap(a,"query"),this._unwrap(a,"execute")};return[new e.InstrumentationNodeModuleDefinition("mysql2",k,a=>(b(a),a),()=>{},[new e.InstrumentationNodeModuleFile("mysql2/promise.js",k,a=>(b(a),a),()=>{}),new e.InstrumentationNodeModuleFile("mysql2/lib/connection.js",k,a=>(c((0,h.getConnectionPrototypeToInstrument)(a)),a),a=>{void 0===a||d((0,h.getConnectionPrototypeToInstrument)(a))})])]}_patchQuery(a,b){return c=>{let i=this;return function(k,l,m){let n;Array.isArray(l)?n=l:arguments[2]&&(n=[l]);let{maskStatement:o,maskStatementHook:p,responseHook:q}=i.getConfig(),r=(0,h.getConnectionAttributes)(this.config,i._dbSemconvStability,i._netSemconvStability),s=(0,h.getQueryText)(k,a,n,o,p);i._dbSemconvStability&e.SemconvStability.OLD&&(r[f.ATTR_DB_SYSTEM]=f.DB_SYSTEM_VALUE_MYSQL,r[f.ATTR_DB_STATEMENT]=s),i._dbSemconvStability&e.SemconvStability.STABLE&&(r[j.ATTR_DB_SYSTEM_NAME]=j.DB_SYSTEM_NAME_VALUE_MYSQL,r[j.ATTR_DB_QUERY_TEXT]=s);let t=i.tracer.startSpan((0,h.getSpanName)(k),{kind:d.SpanKind.CLIENT,attributes:r});!b&&i.getConfig().addSqlCommenterCommentToQueries&&(arguments[0]=k="string"==typeof k?(0,g.addSqlCommenterComment)(t,k):Object.assign(k,{sql:(0,g.addSqlCommenterComment)(t,k.sql)}));let u=(0,h.once)((a,b)=>{a?t.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}):"function"==typeof q&&(0,e.safeExecuteInTheMiddle)(()=>{q(t,{queryResults:b})},a=>{a&&i._diag.warn("Failed executing responseHook",a)},!0),t.end()});if(1==arguments.length){"function"==typeof k.onResult&&i._wrap(k,"onResult",i._patchCallbackQuery(u));let a=c.apply(this,arguments);return a.once("error",a=>{u(a)}).once("result",a=>{u(void 0,a)}),a}return"function"==typeof arguments[1]?i._wrap(arguments,1,i._patchCallbackQuery(u)):"function"==typeof arguments[2]&&i._wrap(arguments,2,i._patchCallbackQuery(u)),c.apply(this,arguments)}}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c,d),b(...arguments)}}}c.MySQL2Instrumentation=l},542331,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.MySQL2Instrumentation=void 0;var d=a.r(980415);Object.defineProperty(c,"MySQL2Instrumentation",{enumerable:!0,get:function(){return d.MySQL2Instrumentation}})},592734,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(542331),e=a.r(187845),f=a.r(309569),g="Mysql2",h=f.generateInstrumentOnce(g,()=>new d.MySQL2Instrumentation({responseHook(a){f.addOriginToSpan(a,"auto.db.otel.mysql2")}})),i=e.defineIntegration(()=>({name:g,setupOnce(){h()}}));c.instrumentMysql2=h,c.mysql2Integration=i},44518,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},678432,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.endSpan=void 0;let d=a.r(832528);c.endSpan=(a,b)=>{b&&(a.recordException(b),a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message})),a.end()}},901032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.defaultDbStatementSerializer=void 0;let d=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];c.defaultDbStatementSerializer=(a,b)=>{if(Array.isArray(b)&&b.length){let c=d.find(({regex:b})=>b.test(a))?.args??0,e=c>=0?b.slice(0,c):b;return b.length>e.length&&e.push(`[${b.length-c} other arguments]`),`${a} ${e.join(" ")}`}return a}},164022,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"},523602,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(44518),h=a.r(167300),i=a.r(678432),j=a.r(901032),k=a.r(164022),l={requireParentSpan:!0};class m extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...l,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){return[new e.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(a,b)=>{let c="Module"===a[Symbol.toStringTag]?a.default:a;return(0,e.isWrapped)(c.prototype.sendCommand)&&this._unwrap(c.prototype,"sendCommand"),this._wrap(c.prototype,"sendCommand",this._patchSendCommand(b)),(0,e.isWrapped)(c.prototype.connect)&&this._unwrap(c.prototype,"connect"),this._wrap(c.prototype,"connect",this._patchConnection()),a},a=>{if(void 0===a)return;let b="Module"===a[Symbol.toStringTag]?a.default:a;this._unwrap(b.prototype,"sendCommand"),this._unwrap(b.prototype,"connect")})]}_patchSendCommand(a){return b=>this._traceSendCommand(b,a)}_patchConnection(){return a=>this._traceConnection(a)}_traceSendCommand(a,b){let c=this;return function(k){if(arguments.length<1||"object"!=typeof k)return a.apply(this,arguments);let l=c.getConfig(),m=l.dbStatementSerializer||j.defaultDbStatementSerializer,n=void 0===d.trace.getSpan(d.context.active());if(!0===l.requireParentSpan&&n)return a.apply(this,arguments);let o={},{host:p,port:q}=this.options,r=m(k.name,k.args);c._dbSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,o[g.ATTR_DB_STATEMENT]=r,o[g.ATTR_DB_CONNECTION_STRING]=`redis://${p}:${q}`),c._dbSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,o[f.ATTR_DB_QUERY_TEXT]=r),c._netSemconvStability&e.SemconvStability.OLD&&(o[g.ATTR_NET_PEER_NAME]=p,o[g.ATTR_NET_PEER_PORT]=q),c._netSemconvStability&e.SemconvStability.STABLE&&(o[f.ATTR_SERVER_ADDRESS]=p,o[f.ATTR_SERVER_PORT]=q);let s=c.tracer.startSpan(k.name,{kind:d.SpanKind.CLIENT,attributes:o}),{requestHook:t}=l;t&&(0,h.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:b,cmdName:k.name,cmdArgs:k.args}),a=>{a&&d.diag.error("ioredis instrumentation: request hook failed",a)},!0);try{let b=a.apply(this,arguments),c=k.resolve;k.resolve=function(a){(0,h.safeExecuteInTheMiddle)(()=>l.responseHook?.(s,k.name,k.args,a),a=>{a&&d.diag.error("ioredis instrumentation: response hook failed",a)},!0),(0,i.endSpan)(s,null),c(a)};let e=k.reject;return k.reject=function(a){(0,i.endSpan)(s,a),e(a)},b}catch(a){throw(0,i.endSpan)(s,a),a}}}_traceConnection(a){let b=this;return function(){let c=void 0===d.trace.getSpan(d.context.active());if(!0===b.getConfig().requireParentSpan&&c)return a.apply(this,arguments);let h={},{host:j,port:k}=this.options;b._dbSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_DB_SYSTEM]=g.DB_SYSTEM_VALUE_REDIS,h[g.ATTR_DB_STATEMENT]="connect",h[g.ATTR_DB_CONNECTION_STRING]=`redis://${j}:${k}`),b._dbSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_REDIS,h[f.ATTR_DB_QUERY_TEXT]="connect"),b._netSemconvStability&e.SemconvStability.OLD&&(h[g.ATTR_NET_PEER_NAME]=j,h[g.ATTR_NET_PEER_PORT]=k),b._netSemconvStability&e.SemconvStability.STABLE&&(h[f.ATTR_SERVER_ADDRESS]=j,h[f.ATTR_SERVER_PORT]=k);let l=b.tracer.startSpan("connect",{kind:d.SpanKind.CLIENT,attributes:h});try{let b=a.apply(this,arguments);return(0,i.endSpan)(l,null),b}catch(a){throw(0,i.endSpan)(l,a),a}}}}c.IORedisInstrumentation=m},417236,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.IORedisInstrumentation=void 0;var d=a.r(523602);Object.defineProperty(c,"IORedisInstrumentation",{enumerable:!0,get:function(){return d.IORedisInstrumentation}})},56335,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-redis"},426925,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getTracedCreateStreamTrace=c.getTracedCreateClient=c.endSpan=void 0;let d=a.r(832528);c.endSpan=(a,b)=>{b&&a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.end()},c.getTracedCreateClient=a=>function(){let b=a.apply(this,arguments);return d.context.bind(d.context.active(),b)},c.getTracedCreateStreamTrace=a=>function(){return Object.prototype.hasOwnProperty.call(this,"stream")||Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(a){d.context.bind(d.context.active(),a),this._patched_redis_stream=a}}),a.apply(this,arguments)}},484312,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_REDIS=c.DB_SYSTEM_NAME_VALUE_REDIS=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_CONNECTION_STRING=void 0,c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_NAME_VALUE_REDIS="redis",c.DB_SYSTEM_VALUE_REDIS="redis"},776491,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV2_V3=void 0;let d=a.r(167300),e=a.r(426925),f=a.r(56335),g=a.r(832528),h=a.r(357122),i=a.r(484312),j=a.r(901032);class k extends d.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new d.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],a=>((0,d.isWrapped)(a.RedisClient.prototype.internal_send_command)&&this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._wrap(a.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,d.isWrapped)(a.RedisClient.prototype.create_stream)&&this._unwrap(a.RedisClient.prototype,"create_stream"),this._wrap(a.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,d.isWrapped)(a.createClient)&&this._unwrap(a,"createClient"),this._wrap(a,"createClient",this._getPatchCreateClient()),a),a=>{void 0!==a&&(this._unwrap(a.RedisClient.prototype,"internal_send_command"),this._unwrap(a.RedisClient.prototype,"create_stream"),this._unwrap(a,"createClient"))})]}_getPatchInternalSendCommand(){let a=this;return function(b){return function(c){if(1!=arguments.length||"object"!=typeof c)return b.apply(this,arguments);let f=a.getConfig(),l=void 0===g.trace.getSpan(g.context.active());if(!0===f.requireParentSpan&&l)return b.apply(this,arguments);let m=f?.dbStatementSerializer||j.defaultDbStatementSerializer,n={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(n,{[i.ATTR_DB_SYSTEM]:i.DB_SYSTEM_VALUE_REDIS,[i.ATTR_DB_STATEMENT]:m(c.command,c.args)}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(n,{[h.ATTR_DB_SYSTEM_NAME]:i.DB_SYSTEM_NAME_VALUE_REDIS,[h.ATTR_DB_OPERATION_NAME]:c.command,[h.ATTR_DB_QUERY_TEXT]:m(c.command,c.args)});let o=a.tracer.startSpan(`${k.COMPONENT}-${c.command}`,{kind:g.SpanKind.CLIENT,attributes:n});if(this.connection_options){let b={};a._semconvStability&d.SemconvStability.OLD&&Object.assign(b,{[i.ATTR_NET_PEER_NAME]:this.connection_options.host,[i.ATTR_NET_PEER_PORT]:this.connection_options.port}),a._semconvStability&d.SemconvStability.STABLE&&Object.assign(b,{[h.ATTR_SERVER_ADDRESS]:this.connection_options.host,[h.ATTR_SERVER_PORT]:this.connection_options.port}),o.setAttributes(b)}this.address&&a._semconvStability&d.SemconvStability.OLD&&o.setAttribute(i.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let p=arguments[0].callback;if(p){let b=g.context.active();arguments[0].callback=function(h,i){if(f?.responseHook){let b=f.responseHook;(0,d.safeExecuteInTheMiddle)(()=>{b(o,c.command,c.args,i)},b=>{b&&a._diag.error("Error executing responseHook",b)},!0)}return(0,e.endSpan)(o,h),g.context.with(b,p,this,...arguments)}}try{return b.apply(this,arguments)}catch(a){throw(0,e.endSpan)(o,a),a}}}}_getPatchCreateClient(){return function(a){return(0,e.getTracedCreateClient)(a)}}_getPatchCreateStream(){return function(a){return(0,e.getTracedCreateStreamTrace)(a)}}}c.RedisInstrumentationV2_V3=k},223134,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getClientAttributes=void 0;let d=a.r(357122),e=a.r(484312),f=a.r(167300);c.getClientAttributes=function(a,b,c){let g={};return c&f.SemconvStability.OLD&&Object.assign(g,{[e.ATTR_DB_SYSTEM]:e.DB_SYSTEM_VALUE_REDIS,[e.ATTR_NET_PEER_NAME]:b?.socket?.host,[e.ATTR_NET_PEER_PORT]:b?.socket?.port,[e.ATTR_DB_CONNECTION_STRING]:function(a,b){if("string"==typeof b&&b)try{let a=new URL(b);return a.searchParams.delete("user_pwd"),a.username="",a.password="",a.href}catch(b){a.error("failed to sanitize redis connection url",b)}}(a,b?.url)}),c&f.SemconvStability.STABLE&&Object.assign(g,{[d.ATTR_DB_SYSTEM_NAME]:e.DB_SYSTEM_NAME_VALUE_REDIS,[d.ATTR_SERVER_ADDRESS]:b?.socket?.host,[d.ATTR_SERVER_PORT]:b?.socket?.port}),g}},823723,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentationV4_V5=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(223134),g=a.r(901032),h=a.r(56335),i=a.r(357122),j=a.r(484312),k=Symbol("opentelemetry.instrumentation.redis.open_spans"),l=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class m extends e.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(a={}){super(h.PACKAGE_NAME,h.PACKAGE_VERSION,a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig(a),this._semconvStability=a.semconvStability?a.semconvStability:(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(a){let b=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/commander.js`,["^1.0.0"],(a,b)=>{let c=a.transformCommandArguments;if(!c)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),a;let d=b?.startsWith("1.0.")?"extendWithCommands":"attachCommands";return(0,e.isWrapped)(a?.[d])&&this._unwrap(a,d),this._wrap(a,d,this._getPatchExtendWithCommands(c)),a},a=>{(0,e.isWrapped)(a?.extendWithCommands)&&this._unwrap(a,"extendWithCommands"),(0,e.isWrapped)(a?.attachCommands)&&this._unwrap(a,"attachCommands")}),c=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),this._wrap(b,"exec",this._getPatchMultiCommandsExec(!1)),(0,e.isWrapped)(b?.execAsPipeline)&&this._unwrap(b,"execAsPipeline"),this._wrap(b,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand"),this._wrap(b,"addCommand",this._getPatchMultiCommandsAddCommand()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.exec)&&this._unwrap(b,"exec"),(0,e.isWrapped)(b?.addCommand)&&this._unwrap(b,"addCommand")}),d=new e.InstrumentationNodeModuleFile(`${a}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],a=>{let b=a?.default?.prototype;return b?.multi&&((0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),this._wrap(b,"multi",this._getPatchRedisClientMulti())),b?.MULTI&&((0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),this._wrap(b,"MULTI",this._getPatchRedisClientMulti())),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand"),this._wrap(b,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(b,"connect",this._getPatchedClientConnect()),a},a=>{let b=a?.default?.prototype;(0,e.isWrapped)(b?.multi)&&this._unwrap(b,"multi"),(0,e.isWrapped)(b?.MULTI)&&this._unwrap(b,"MULTI"),(0,e.isWrapped)(b?.sendCommand)&&this._unwrap(b,"sendCommand")});return new e.InstrumentationNodeModuleDefinition(a,["^1.0.0","^5.0.0"],a=>a,()=>{},[b,c,d])}_getPatchExtendWithCommands(a){let b=this;return function(c){return function(d){if(d?.BaseClass?.name!=="RedisClient")return c.apply(this,arguments);let e=d.executor;return d.executor=function(c,d){let f=a(c,d).args;return b._traceClientCommand(e,this,arguments,f)},c.apply(this,arguments)}}}_getPatchMultiCommandsExec(a){let b=this;return function(c){return function(){let d=c.apply(this,arguments);return"function"!=typeof d?.then?(b._diag.error("non-promise result when patching exec/execAsPipeline"),d):d.then(c=>{let d=this[k];return b._endSpansWithRedisReplies(d,c,a),c}).catch(c=>{let d=this[k];if(d){let e="MultiErrorReply"===c.constructor.name?c.replies:Array(d.length).fill(c);b._endSpansWithRedisReplies(d,e,a)}else b._diag.error("cannot find open spans to end for multi/pipeline");return Promise.reject(c)})}}}_getPatchMultiCommandsAddCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchRedisClientMulti(){return function(a){return function(){let b=a.apply(this,arguments);return b[l]=this.options,b}}}_getPatchRedisClientSendCommand(){let a=this;return function(b){return function(c){return a._traceClientCommand(b,this,arguments,c)}}}_getPatchedClientConnect(){let a=this;return function(b){return function(){let c=this.options,e=(0,f.getClientAttributes)(a._diag,c,a._semconvStability),g=a.tracer.startSpan(`${m.COMPONENT}-connect`,{kind:d.SpanKind.CLIENT,attributes:e});return d.context.with(d.trace.setSpan(d.context.active(),g),()=>b.apply(this)).then(a=>(g.end(),a)).catch(a=>(g.recordException(a),g.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),g.end(),Promise.reject(a)))}}}_traceClientCommand(a,b,c,h){if(void 0===d.trace.getSpan(d.context.active())&&this.getConfig().requireParentSpan)return a.apply(b,c);let n=b.options||b[l],o=h[0],p=h.slice(1),q=this.getConfig().dbStatementSerializer||g.defaultDbStatementSerializer,r=(0,f.getClientAttributes)(this._diag,n,this._semconvStability);this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_OPERATION_NAME]=o);try{let a=q(o,p);null!=a&&(this._semconvStability&e.SemconvStability.OLD&&(r[j.ATTR_DB_STATEMENT]=a),this._semconvStability&e.SemconvStability.STABLE&&(r[i.ATTR_DB_QUERY_TEXT]=a))}catch(a){this._diag.error("dbStatementSerializer throw an exception",a,{commandName:o})}let s=this.tracer.startSpan(`${m.COMPONENT}-${o}`,{kind:d.SpanKind.CLIENT,attributes:r}),t=d.context.with(d.trace.setSpan(d.context.active(),s),()=>a.apply(b,c));return"function"==typeof t?.then?t.then(a=>{this._endSpanWithResponse(s,o,p,a,void 0)},a=>{this._endSpanWithResponse(s,o,p,null,a)}):(t[k]=t[k]||[],t[k].push({span:s,commandName:o,commandArgs:p})),t}_endSpansWithRedisReplies(a,b,c=!1){if(!a)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(b.length!==a.length)return this._diag.error("number of multi command spans does not match response from redis");let d=a.map(a=>a.commandName),f=d.every(a=>a===d[0])?(c?"PIPELINE ":"MULTI ")+d[0]:c?"PIPELINE":"MULTI";for(let c=0;c{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;let d=a.r(167300),e=a.r(56335),f=a.r(776491),g=a.r(823723),h={requireParentSpan:!1};class i extends d.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(a={}){const b={...h,...a};super(e.PACKAGE_NAME,e.PACKAGE_VERSION,b),this.instrumentationV2_V3=new f.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new g.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(a={}){let b={...h,...a};super.setConfig(b),this.initialized&&(this.instrumentationV2_V3.setConfig(b),this.instrumentationV4_V5.setConfig(b))}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(a){super.setTracerProvider(a),this.initialized&&(this.instrumentationV2_V3.setTracerProvider(a),this.instrumentationV4_V5.setTracerProvider(a))}enable(){super.enable(),this.initialized&&(this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable())}disable(){super.disable(),this.initialized&&(this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable())}}c.RedisInstrumentation=i},365261,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.RedisInstrumentation=void 0;var d=a.r(451985);Object.defineProperty(c,"RedisInstrumentation",{enumerable:!0,get:function(){return d.RedisInstrumentation}})},461429,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=["get","set","setex"],e=["get","mget"],f=["set","setex"];function g(a,b){return a.includes(b.toLowerCase())}function h(a){return g(e,a)?"cache.get":g(f,a)?"cache.put":void 0}function i(a){let b=[],c=a=>{a.forEach(a=>{Array.isArray(a)?c(a):b.push(a)})};return c(a),b}c.GET_COMMANDS=e,c.SET_COMMANDS=f,c.calculateCacheItemSize=function(a){let b=a=>{try{if(Buffer.isBuffer(a))return a.byteLength;if("string"==typeof a)return a.length;if("number"==typeof a)return a.toString().length;else if(null==a)return 0;return JSON.stringify(a).length}catch{return}};return Array.isArray(a)?a.reduce((a,c)=>{let d=b(c);return"number"==typeof d?void 0!==a?a+d:d:a},0):b(a)},c.getCacheKeySafely=function(a,b){try{if(0===b.length)return;let c=a=>"string"==typeof a||"number"==typeof a||Buffer.isBuffer(a)?[a.toString()]:Array.isArray(a)?i(a.map(a=>c(a))):[""],e=b[0];if(g(d,a)&&null!=e)return c(e);return i(b.map(a=>c(a)))}catch{return}},c.getCacheOperation=h,c.isInCommands=g,c.shouldConsiderForCache=function(a,b,c){if(!h(a))return!1;for(let a of b)if(function(a,b){return b.some(b=>a.startsWith(b))}(a,c))return!0;return!1}},461054,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(417236),e=a.r(365261),f=a.r(187845),g=a.r(309569),h=a.r(461429),i="Redis";c._redisOptions={};let j=(a,b,d,e)=>{a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.redis");let g=h.getCacheKeySafely(b,d),i=h.getCacheOperation(b);if(!g||!i||!c._redisOptions.cachePrefixes||!h.shouldConsiderForCache(b,g,c._redisOptions.cachePrefixes))return;let j=f.spanToJSON(a).data["net.peer.name"],k=f.spanToJSON(a).data["net.peer.port"];k&&j&&a.setAttributes({"network.peer.address":j,"network.peer.port":k});let l=h.calculateCacheItemSize(e);l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,l),h.isInCommands(h.GET_COMMANDS,b)&&void 0!==l&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_CACHE_HIT,l>0),a.setAttributes({[f.SEMANTIC_ATTRIBUTE_SENTRY_OP]:i,[f.SEMANTIC_ATTRIBUTE_CACHE_KEY]:g});let m=g.join(", ");a.updateName(c._redisOptions.maxCacheKeyLength?f.truncate(m,c._redisOptions.maxCacheKeyLength):m)},k=g.generateInstrumentOnce(`${i}.IORedis`,()=>new d.IORedisInstrumentation({responseHook:j})),l=g.generateInstrumentOnce(`${i}.Redis`,()=>new e.RedisInstrumentation({responseHook:j})),m=Object.assign(()=>{k(),l()},{id:i}),n=f.defineIntegration((a={})=>({name:i,setupOnce(){c._redisOptions=a,m()}}));c.cacheResponseHook=j,c.instrumentRedis=m,c.redisIntegration=n},754229,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EVENT_LISTENERS_SET=void 0,c.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")},263318,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).PG_VALUES="db.postgresql.values",d.PG_PLAN="db.postgresql.plan",d.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",d.MAX_CLIENT="db.postgresql.max.client"},283302,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=c.METRIC_DB_CLIENT_CONNECTION_COUNT=c.DB_SYSTEM_VALUE_POSTGRESQL=c.DB_CLIENT_CONNECTION_STATE_VALUE_USED=c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_NAME=c.ATTR_DB_CONNECTION_STRING=c.ATTR_DB_CLIENT_CONNECTION_STATE=c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0,c.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name",c.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state",c.ATTR_DB_CONNECTION_STRING="db.connection_string",c.ATTR_DB_NAME="db.name",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle",c.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used",c.DB_SYSTEM_VALUE_POSTGRESQL="postgresql",c.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count",c.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"},684683,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.SpanNames=void 0,(d=c.SpanNames||(c.SpanNames={})).QUERY_PREFIX="pg.query",d.CONNECT="pg.connect",d.POOL_CONNECT="pg-pool.connect"},182032,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.sanitizedErrorMessage=c.isObjectWithTextString=c.getErrorMessage=c.patchClientConnectCallback=c.patchCallbackPGPool=c.updateCounter=c.getPoolName=c.patchCallback=c.handleExecutionResult=c.handleConfigQuery=c.shouldSkipInstrumentation=c.getSemanticAttributesFromPoolConnection=c.getSemanticAttributesFromConnection=c.getConnectionString=c.parseAndMaskConnectionString=c.parseNormalizedOperationName=c.getQuerySpanName=void 0;let d=a.r(832528),e=a.r(263318),f=a.r(357122),g=a.r(283302),h=a.r(167300),i=a.r(684683);function j(a,b){if(!b)return i.SpanNames.QUERY_PREFIX;let c="string"==typeof b.name&&b.name?b.name:k(b.text);return`${i.SpanNames.QUERY_PREFIX}:${c}${a?` ${a}`:""}`}function k(a){let b=a.trim(),c=b.indexOf(" "),d=-1===c?b:b.slice(0,c);return(d=d.toUpperCase()).endsWith(";")?d.slice(0,-1):d}function l(a){try{let b=new URL(a);return b.username="",b.password="",b.toString()}catch(a){return"postgresql://localhost:5432/"}}function m(a){if("connectionString"in a&&a.connectionString)return l(a.connectionString);let b=a.host||"localhost",c=a.port||5432,d=a.database||"";return`postgresql://${b}:${c}/${d}`}function n(a){if(Number.isInteger(a))return a}function o(a,b){let c={};return b&h.SemconvStability.OLD&&(c={...c,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_DB_USER]:a.user,[g.ATTR_NET_PEER_NAME]:a.host,[g.ATTR_NET_PEER_PORT]:n(a.port)}),b&h.SemconvStability.STABLE&&(c={...c,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:a.host,[f.ATTR_SERVER_PORT]:n(a.port)}),c}function p(a,b,c){"function"==typeof a.responseHook&&(0,h.safeExecuteInTheMiddle)(()=>{a.responseHook(b,{data:c})},a=>{a&&d.diag.error("Error running response hook",a)},!0)}function q(a){let b=a?.name??"PostgreSQLError",c=a?.code??"UNKNOWN";return`PostgreSQL error of type '${b}' occurred (code: ${c})`}c.getQuerySpanName=j,c.parseNormalizedOperationName=k,c.parseAndMaskConnectionString=l,c.getConnectionString=m,c.getSemanticAttributesFromConnection=o,c.getSemanticAttributesFromPoolConnection=function(a,b){let c;try{c=a.connectionString?new URL(a.connectionString):void 0}catch(a){c=void 0}let d={[e.AttributeNames.IDLE_TIMEOUT_MILLIS]:a.idleTimeoutMillis,[e.AttributeNames.MAX_CLIENT]:a.maxClient};return b&h.SemconvStability.OLD&&(d={...d,[g.ATTR_DB_SYSTEM]:g.DB_SYSTEM_VALUE_POSTGRESQL,[g.ATTR_DB_NAME]:c?.pathname.slice(1)??a.database,[g.ATTR_DB_CONNECTION_STRING]:m(a),[g.ATTR_NET_PEER_NAME]:c?.hostname??a.host,[g.ATTR_NET_PEER_PORT]:Number(c?.port)||n(a.port),[g.ATTR_DB_USER]:c?.username??a.user}),b&h.SemconvStability.STABLE&&(d={...d,[f.ATTR_DB_SYSTEM_NAME]:f.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[f.ATTR_DB_NAMESPACE]:a.namespace,[f.ATTR_SERVER_ADDRESS]:c?.hostname??a.host,[f.ATTR_SERVER_PORT]:Number(c?.port)||n(a.port)}),d},c.shouldSkipInstrumentation=function(a){return!0===a.requireParentSpan&&void 0===d.trace.getSpan(d.context.active())},c.handleConfigQuery=function(a,b,c,i){let{connectionParameters:k}=this,l=j(k.database,i),m=a.startSpan(l,{kind:d.SpanKind.CLIENT,attributes:o(k,c)});if(!i)return m;if(i.text&&(c&h.SemconvStability.OLD&&m.setAttribute(g.ATTR_DB_STATEMENT,i.text),c&h.SemconvStability.STABLE&&m.setAttribute(f.ATTR_DB_QUERY_TEXT,i.text)),b.enhancedDatabaseReporting&&Array.isArray(i.values))try{let a=i.values.map(a=>null==a?"null":a instanceof Buffer?a.toString():"object"!=typeof a?a.toString():"function"==typeof a.toPostgres?a.toPostgres():JSON.stringify(a));m.setAttribute(e.AttributeNames.PG_VALUES,a)}catch(a){d.diag.error("failed to stringify ",i.values,a)}return"string"==typeof i.name&&m.setAttribute(e.AttributeNames.PG_PLAN,i.name),m},c.handleExecutionResult=p,c.patchCallback=function(a,b,c,e,g){return function(h,i){h?(Object.prototype.hasOwnProperty.call(h,"code")&&(e[f.ATTR_ERROR_TYPE]=h.code),h instanceof Error&&b.recordException(q(h)),b.setStatus({code:d.SpanStatusCode.ERROR,message:h.message})):p(a,b,i),g(),b.end(),c.call(this,h,i)}},c.getPoolName=function(a){let b="";return(b+=(a?.host?`${a.host}`:"unknown_host")+":"+(a?.port?`${a.port}`:"unknown_port")+"/"+(a?.database?`${a.database}`:"unknown_database")).trim()},c.updateCounter=function(a,b,c,d,e){let f=b.totalCount,h=b.waitingCount,i=b.idleCount,j=f-i;return c.add(j-e.used,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),c.add(i-e.idle,{[g.ATTR_DB_CLIENT_CONNECTION_STATE]:g.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),d.add(h-e.pending,{[g.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:a}),{used:j,idle:i,pending:h}},c.patchCallbackPGPool=function(a,b){return function(c,e,f){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.call(this,c,e,f)}},c.patchClientConnectCallback=function(a,b){return function(c){c&&(c instanceof Error&&a.recordException(q(c)),a.setStatus({code:d.SpanStatusCode.ERROR,message:c.message})),a.end(),b.apply(this,arguments)}},c.getErrorMessage=function(a){return"object"==typeof a&&null!==a&&"message"in a?String(a.message):void 0},c.isObjectWithTextString=function(a){return"object"==typeof a&&"string"==typeof a?.text},c.sanitizedErrorMessage=q},499741,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.66.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-pg"},928742,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PgInstrumentation=void 0;let d=a.r(167300),e=a.r(832528),f=a.r(754229),g=a.r(182032),h=a.r(481992),i=a.r(499741),j=a.r(684683),k=a.r(498562),l=a.r(357122),m=a.r(283302);function n(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class o extends d.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(a={}){super(i.PACKAGE_NAME,i.PACKAGE_VERSION,a),this._semconvStability=(0,d.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(l.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:e.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[.001,.005,.01,.05,.1,.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(m.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let a=[">=8.0.3 <9"],b=new d.InstrumentationNodeModuleFile("pg/lib/native/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),c=new d.InstrumentationNodeModuleFile("pg/lib/client.js",a,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this));return[new d.InstrumentationNodeModuleDefinition("pg",a,a=>{let b=n(a);return this._patchPgClient(b.Client),a},a=>{let b=n(a);return this._unpatchPgClient(b.Client),a},[c,b]),new d.InstrumentationNodeModuleDefinition("pg-pool",[">=2.0.0 <4"],a=>{let b=n(a);return(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"connect",this._getPoolConnectPatch()),b},a=>{let b=n(a);(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect")})]}_patchPgClient(a){if(!a)return;let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),this._wrap(b.prototype,"query",this._getClientQueryPatch()),this._wrap(b.prototype,"connect",this._getClientConnectPatch()),a}_unpatchPgClient(a){let b=n(a);return(0,d.isWrapped)(b.prototype.query)&&this._unwrap(b.prototype,"query"),(0,d.isWrapped)(b.prototype.connect)&&this._unwrap(b.prototype,"connect"),a}_getClientConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||d.ignoreConnectSpans)return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromConnection(this,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchClientConnectCallback(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}recordOperationDuration(a,b){let c={},e=[l.ATTR_DB_NAMESPACE,l.ATTR_ERROR_TYPE,l.ATTR_SERVER_PORT,l.ATTR_SERVER_ADDRESS,l.ATTR_DB_OPERATION_NAME];this._semconvStability&d.SemconvStability.OLD&&e.push(m.ATTR_DB_SYSTEM),this._semconvStability&d.SemconvStability.STABLE&&e.push(l.ATTR_DB_SYSTEM_NAME),e.forEach(b=>{b in a&&(c[b]=a[b])});let f=(0,k.hrTimeToMilliseconds)((0,k.hrTimeDuration)(b,(0,k.hrTime)()))/1e3;this._operationDuration.record(f,c)}_getClientQueryPatch(){let a=this;return b=>(this._diag.debug("Patching pg.Client.prototype.query"),function(...c){let f;if(g.shouldSkipInstrumentation(a.getConfig()))return b.apply(this,c);let i=(0,k.hrTime)(),j=c[0],n="string"==typeof j,o=g.isObjectWithTextString(j),p=n?{text:j,values:Array.isArray(c[1])?c[1]:void 0}:o?{...j,name:j.name,text:j.text,values:j.values??(Array.isArray(c[1])?c[1]:void 0)}:void 0,q={[m.ATTR_DB_SYSTEM]:m.DB_SYSTEM_VALUE_POSTGRESQL,[l.ATTR_DB_NAMESPACE]:this.database,[l.ATTR_SERVER_PORT]:this.connectionParameters.port,[l.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};p?.text&&(q[l.ATTR_DB_OPERATION_NAME]=g.parseNormalizedOperationName(p?.text));let r=()=>{a.recordOperationDuration(q,i)},s=a.getConfig(),t=g.handleConfigQuery.call(this,a.tracer,s,a._semconvStability,p);if(s.addSqlCommenterCommentToQueries&&(n?c[0]=(0,h.addSqlCommenterComment)(t,j):!o||"name"in j||(c[0]={...j,text:(0,h.addSqlCommenterComment)(t,j.text)})),c.length>0){let b=e.trace.getSpan(e.context.active());if("function"==typeof c[c.length-1])c[c.length-1]=g.patchCallback(s,t,c[c.length-1],q,r),b&&(c[c.length-1]=e.context.bind(e.context.active(),c[c.length-1]));else if("function"==typeof p?.callback){let d=g.patchCallback(a.getConfig(),t,p.callback,q,r);b&&(d=e.context.bind(e.context.active(),d)),c[0].callback=d}}let{requestHook:u}=s;"function"==typeof u&&p&&(0,d.safeExecuteInTheMiddle)(()=>{let{database:a,host:b,port:c,user:d}=this.connectionParameters;u(t,{connection:{database:a,host:b,port:c,user:d},query:{text:p.text,values:p.values,name:p.name}})},b=>{b&&a._diag.error("Error running query hook",b)},!0);try{f=b.apply(this,c)}catch(a){throw a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(a)}),t.end(),a}return f instanceof Promise?f.then(b=>new Promise(c=>{g.handleExecutionResult(a.getConfig(),t,b),r(),t.end(),c(b)})).catch(a=>new Promise((b,c)=>{a instanceof Error&&t.recordException(g.sanitizedErrorMessage(a)),t.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),r(),t.end(),c(a)})):f})}_setPoolConnectEventListeners(a){if(a[f.EVENT_LISTENERS_SET])return;let b=g.getPoolName(a.options);a.on("connect",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("acquire",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("remove",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a.on("release",()=>{this._connectionsCounter=g.updateCounter(b,a,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),a[f.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let a=this;return b=>function(c){let d=a.getConfig();if(g.shouldSkipInstrumentation(d)||(a._setPoolConnectEventListeners(this),d.ignoreConnectSpans))return b.call(this,c);let f=a.tracer.startSpan(j.SpanNames.POOL_CONNECT,{kind:e.SpanKind.CLIENT,attributes:g.getSemanticAttributesFromPoolConnection(this.options,a._semconvStability)});if(c){let a=e.trace.getSpan(e.context.active());c=g.patchCallbackPGPool(f,c),a&&(c=e.context.bind(e.context.active(),c))}let h=e.context.with(e.trace.setSpan(e.context.active(),f),()=>b.call(this,c));return p(f,h)}}}function p(a,b){return b instanceof Promise?e.context.bind(e.context.active(),b.then(b=>(a.end(),b)).catch(b=>(b instanceof Error&&a.recordException(g.sanitizedErrorMessage(b)),a.setStatus({code:e.SpanStatusCode.ERROR,message:g.getErrorMessage(b)}),a.end(),Promise.reject(b)))):b}c.PgInstrumentation=o},146635,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.PgInstrumentation=void 0;var d=a.r(928742);Object.defineProperty(c,"PgInstrumentation",{enumerable:!0,get:function(){return d.PgInstrumentation}});var e=a.r(263318);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},257141,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(146635),e=a.r(187845),f=a.r(309569),g="Postgres",h=f.generateInstrumentOnce(g,d.PgInstrumentation,a=>({requireParentSpan:!0,requestHook(a){f.addOriginToSpan(a,"auto.db.otel.postgres")},ignoreConnectSpans:a?.ignoreConnectSpans??!1})),i=e.defineIntegration(a=>({name:g,setupOnce(){h(a)}}));c.instrumentPostgres=h,c.postgresIntegration=i},870983,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(187845),h=a.r(309569),i=a.r(852223),j="PostgresJs",k=[">=3.0.0 <4"],l=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,m=Symbol.for("sentry.query.from.instrumented.sql"),n=h.generateInstrumentOnce(j,a=>new o({requireParentSpan:a?.requireParentSpan??!0,requestHook:a?.requestHook}));class o extends e.InstrumentationBase{constructor(a){super("sentry-postgres-js",g.SDK_VERSION,a)}init(){let a=new e.InstrumentationNodeModuleDefinition("postgres",k,a=>{try{return this._patchPostgres(a)}catch(b){return i.DEBUG_BUILD&&g.debug.error("Failed to patch postgres module:",b),a}},a=>a);return["src","cf/src","cjs/src"].forEach(b=>{a.files.push(new e.InstrumentationNodeModuleFile(`postgres/${b}/query.js`,k,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),a}_patchPostgres(a){let b="function"==typeof a,c=b?a:a.default;if("function"!=typeof c)return i.DEBUG_BUILD&&g.debug.warn("postgres module does not export a function. Skipping instrumentation."),a;let d=this,e=function(...a){let b=Reflect.construct(c,a);if(!b||"function"!=typeof b)return i.DEBUG_BUILD&&g.debug.warn("postgres() did not return a valid instance"),b;let e=d.getConfig();return g.instrumentPostgresJsSql(b,{requireParentSpan:e.requireParentSpan,requestHook:e.requestHook})};for(let a of(Object.setPrototypeOf(e,c),Object.setPrototypeOf(e.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(e,a,b)}return b?e:(g.replaceExports(a,"default",e),a)}_shouldCreateSpans(){let a=this.getConfig();return void 0!==d.trace.getSpan(d.context.active())||!a.requireParentSpan}_setOperationName(a,b,c){if(c)return void a.setAttribute(f.ATTR_DB_OPERATION_NAME,c);let d=b?.match(l);d?.[1]&&a.setAttribute(f.ATTR_DB_OPERATION_NAME,d[1].toUpperCase())}_reconstructQuery(a){if(a?.length)return 1===a.length?a[0]||void 0:a.reduce((a,b,c)=>0===c?b:`${a}$${c}${b}`,"")}_sanitizeSqlQuery(a){return a?a.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{h.addOriginToSpan(d,"auto.db.postgresjs"),d.setAttributes({[f.ATTR_DB_SYSTEM_NAME]:"postgres",[f.ATTR_DB_QUERY_TEXT]:k});let{requestHook:l}=b.getConfig();l&&e.safeExecuteInTheMiddle(()=>l(d,k,void 0),a=>{a&&(d.setAttribute("sentry.hook.error","requestHook failed"),i.DEBUG_BUILD&&g.debug.error(`Error in requestHook for ${j} integration:`,a))},!0);let m=this.resolve;this.resolve=new Proxy(m,{apply:(a,c,e)=>{try{b._setOperationName(d,k,e?.[0]?.command),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in resolve callback:",a)}return Reflect.apply(a,c,e)}});let n=this.reject;this.reject=new Proxy(n,{apply:(a,c,e)=>{try{d.setStatus({code:g.SPAN_STATUS_ERROR,message:e?.[0]?.message||"unknown_error"}),d.setAttribute(f.ATTR_DB_RESPONSE_STATUS_CODE,e?.[0]?.code||"unknown"),d.setAttribute(f.ATTR_ERROR_TYPE,e?.[0]?.name||"unknown"),b._setOperationName(d,k),d.end()}catch(a){i.DEBUG_BUILD&&g.debug.error("Error ending span in reject callback:",a)}return Reflect.apply(a,c,e)}});try{return c.apply(this,a)}catch(a){throw d.setStatus({code:g.SPAN_STATUS_ERROR,message:a instanceof Error?a.message:"unknown_error"}),d.end(),a}})},a.Query.prototype.handle.__sentry_original__=c,a}_unpatchQueryPrototype(a){return a.Query.prototype.handle.__sentry_original__&&(a.Query.prototype.handle=a.Query.prototype.handle.__sentry_original__),a}}let p=g.defineIntegration(a=>({name:j,setupOnce(){n(a)}}));c.PostgresJsInstrumentation=o,c.instrumentPostgresJs=n,c.postgresJsIntegration=p},116141,a=>{"use strict";a.s([],613895),a.i(613895);var b,c,d=a.i(236471),e=a.i(231261);let f="object"==typeof globalThis?globalThis:a.g,g=Symbol.for("io.opentelemetry.js.api.logs");class h{emit(a){}}let i=new h,j=new class{getLogger(a,b,c){return new h}};class k{constructor(a,b,c,d){this._provider=a,this.name=b,this.version=c,this.options=d}emit(a){this._getLogger().emit(a)}_getLogger(){if(this._delegate)return this._delegate;let a=this._provider._getDelegateLogger(this.name,this.version,this.options);return a?(this._delegate=a,this._delegate):i}}class l{getLogger(a,b,c){var d;return null!=(d=this._getDelegateLogger(a,b,c))?d:new k(this,a,b,c)}_getDelegate(){var a;return null!=(a=this._delegate)?a:j}_setDelegate(a){this._delegate=a}_getDelegateLogger(a,b,c){var d;return null==(d=this._delegate)?void 0:d.getLogger(a,b,c)}}class m{constructor(){this._proxyLoggerProvider=new l}static getInstance(){return this._instance||(this._instance=new m),this._instance}setGlobalLoggerProvider(a){return f[g]?this.getLoggerProvider():(f[g]=b=>1===b?a:j,this._proxyLoggerProvider._setDelegate(a),a)}getLoggerProvider(){var a,b;return null!=(b=null==(a=f[g])?void 0:a.call(f,1))?b:this._proxyLoggerProvider}getLogger(a,b,c){return this.getLoggerProvider().getLogger(a,b,c)}disable(){delete f[g],this._proxyLoggerProvider=new l}}let n=m.getInstance();function o(a){let b=a.tracerProvider||d.trace.getTracerProvider(),c=a.meterProvider||e.metrics.getMeterProvider(),f=a.loggerProvider||n.getLoggerProvider(),g=a.instrumentations?.flat()??[];for(let a=0,d=g.length;a{g.forEach(a=>a.disable())}}var p=a.i(814747),q=a.i(224361),r=a.i(984414);let s=/^(?:v)?(?(?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-]+)*))?$/,t=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|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-]+)*))?$/,u={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function v(a,b,c,d){if(b.includes("||")){for(let e of b.trim().split("||"))if(w(a,e,c,d))return!0;return!1}if(b.includes(" - ")){var e,f;e=b,f=d,b=e.replace(L,(a,b,c,d,e,g,h,i,j,k,l,m)=>(b=x(c)?"":x(d)?`>=${c}.0.0${f?.includePrerelease?"-0":""}`:x(e)?`>=${c}.${d}.0${f?.includePrerelease?"-0":""}`:g?`>=${b}`:`>=${b}${f?.includePrerelease?"-0":""}`,i=x(j)?"":x(k)?`<${+j+1}.0.0-0`:x(l)?`<${j}.${+k+1}.0-0`:m?`<=${j}.${k}.${l}-${m}`:f?.includePrerelease?`<${j}.${k}.${+l+1}-0`:`<=${i}`,`${b} ${i}`.trim()))}else if(b.includes(" ")){for(let e of b.trim().replace(/\s{2,}/g," ").split(" "))if(!w(a,e,c,d))return!1;return!0}return w(a,b,c,d)}function w(a,b,c,d){var e,f,g,h,i,j;let k;if((e=b,f=d,b=(i=e=(g=e=e.trim(),h=f,k=h?.includePrerelease?"-0":"",e=g.replace(N,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0${k} <${+b+1}.0.0-0`:x(d)?"0"===b?`>=${b}.${c}.0${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.0${k} <${+b+1}.0.0-0`:e?"0"===b?"0"===c?`>=${b}.${c}.${d}-${e} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d}-${e} <${+b+1}.0.0-0`:"0"===b?"0"===c?`>=${b}.${c}.${d}${k} <${b}.${c}.${+d+1}-0`:`>=${b}.${c}.${d}${k} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${+b+1}.0.0-0`)).replace(M,(a,b,c,d,e)=>x(b)?"":x(c)?`>=${b}.0.0 <${+b+1}.0.0-0`:x(d)?`>=${b}.${c}.0 <${b}.${+c+1}.0-0`:e?`>=${b}.${c}.${d}-${e} <${b}.${+c+1}.0-0`:`>=${b}.${c}.${d} <${b}.${+c+1}.0-0`),j=f,e=i.replace(K,(a,b,c,d,e,f)=>{let g=x(c),h=g||x(d),i=h||x(e);return"="===b&&i&&(b=""),f=j?.includePrerelease?"-0":"",g?a=">"===b||"<"===b?"<0.0.0-0":"*":b&&i?(h&&(d=0),e=0,">"===b?(b=">=",h?(c=+c+1,d=0):d=+d+1,e=0):"<="===b&&(b="<",h?c=+c+1:d=+d+1),"<"===b&&(f="-0"),a=`${b+c}.${d}.${e}${f}`):h?a=`>=${c}.0.0${f} <${+c+1}.0.0-0`:i&&(a=`>=${c}.${d}.0${f} <${c}.${+d+1}.0-0`),a})).trim()).includes(" "))return v(a,b,c,d);{let d=function(a){if(!a)return{};let b=a.match(t);if(!b)return r.diag.error(`Invalid range: ${a}`),{invalid:!0};let c=b.groups.op,d=b.groups.version,e=b.groups.prerelease,f=b.groups.build,g=d.split("."),h=e?.split(".");return"=="===c&&(c="="),{op:c||"=",version:d,versionSegments:g,versionSegmentCount:g.length,prerelease:e,prereleaseSegments:h,prereleaseSegmentCount:h?h.length:0,build:f}}(b);return c.push(d),function(a,b){if(b.invalid)return!1;if(!b.version||y(b.version))return!0;let c=A(a.versionSegments||[],b.versionSegments||[]);if(0===c){let d=a.prereleaseSegments||[],e=b.prereleaseSegments||[];c=d.length||e.length?!d.length&&e.length?1:d.length&&!e.length?-1:A(d,e):0}return u[b.op]?.includes(c)}(a,d)}}function x(a){return!a||"x"===a.toLowerCase()||"*"===a}function y(a){return"*"===a||"x"===a||"X"===a}function z(a){let b=parseInt(a,10);return isNaN(b)?a:b}function A(a,b){for(let c=0;cd?1:c)?=?)\\s*${J}$`),L=RegExp(`^\\s*(${J})\\s+-\\s+(${J})\\s*$`),M=RegExp(`^(?:~>?)${J}$`),N=RegExp(`^(?:\\^)${J}$`),O=console.error.bind(console);function P(a,b,c){let d=!!a[b]&&Object.prototype.propertyIsEnumerable.call(a,b);Object.defineProperty(a,b,{configurable:!0,enumerable:d,writable:!0,value:c})}let Q=(a,b,c)=>{if(!a||!a[b])return void O("no original function "+String(b)+" to wrap");if(!c){O("no wrapper function"),O(Error().stack);return}let d=a[b];if("function"!=typeof d||"function"!=typeof c)return void O("original object and wrapper must be functions");let e=c(d,b);return P(e,"__original",d),P(e,"__unwrap",()=>{a[b]===e&&P(a,b,d)}),P(e,"__wrapped",!0),P(a,b,e),e},R=(a,b,c)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{Q(a,b,c)})}):O("must provide one or more functions to wrap on modules")},S=(a,b)=>{if(!a||!a[b]){O("no function to unwrap."),O(Error().stack);return}let c=a[b];c.__unwrap?c.__unwrap():O("no original to unwrap to -- has "+String(b)+" already been unwrapped?")},T=(a,b)=>{if(a)Array.isArray(a)||(a=[a]);else{O("must provide one or more modules to patch"),O(Error().stack);return}b&&Array.isArray(b)?a.forEach(a=>{b.forEach(b=>{S(a,b)})}):O("must provide one or more functions to unwrap on modules")};function U(a){a&&a.logger&&("function"!=typeof a.logger?O("new logger isn't a function, not replacing"):O=a.logger)}U.wrap=Q,U.massWrap=R,U.unwrap=S,U.massUnwrap=T;class V{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(a,b,c){this.instrumentationName=a,this.instrumentationVersion=b,this.setConfig(c),this._diag=r.diag.createComponentLogger({namespace:a}),this._tracer=d.trace.getTracer(a,b),this._meter=e.metrics.getMeter(a,b),this._logger=n.getLogger(a,b),this._updateMetricInstruments()}_wrap=Q;_unwrap=S;_massWrap=R;_massUnwrap=T;get meter(){return this._meter}setMeterProvider(a){this._meter=a.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(a){this._logger=a.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let a=this.init()??[];return Array.isArray(a)?a:[a]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(a){this._config={enabled:!0,...a}}setTracerProvider(a){this._tracer=a.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(a,b,c,d){if(a)try{a(c,d)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:b},a)}}}var W=a.i(156823);class X{hooks=[];children=new Map}class Y{_trie=new X;_counter=0;insert(a){let b=this._trie;for(let c of a.moduleName.split("/")){let a=b.children.get(c);a||(a=new X,b.children.set(c,a)),b=a}b.hooks.push({hook:a,insertedId:this._counter++})}search(a,{maintainInsertionOrder:b,fullOnly:c}={}){let d=this._trie,e=[],f=!0;for(let b of a.split("/")){let a=d.children.get(b);if(!a){f=!1;break}c||e.push(...a.hooks),d=a}return(c&&f&&e.push(...d.hooks),0===e.length)?[]:1===e.length?[e[0].hook]:(b&&e.sort((a,b)=>a.insertedId-b.insertedId),e.map(({hook:a})=>a))}}let Z=["afterEach","after","beforeEach","before","describe","it"].every(b=>"function"==typeof a.g[b]);class ${_moduleNameTrie=new Y;static _instance;constructor(){this._initialize()}_initialize(){new W.Hook(null,{internals:!0},(a,b,c)=>{var d;let e=(d=b,"/"!==p.sep?d.split(p.sep).join("/"):d);for(let{onRequire:d}of this._moduleNameTrie.search(e,{maintainInsertionOrder:!0,fullOnly:void 0===c}))a=d(a,b,c);return a})}register(a,b){let c={moduleName:a,onRequire:b};return this._moduleNameTrie.insert(c),c}static getInstance(){return Z?new $:this._instance=this._instance??new $}}var _=a.i(74667),aa=a.i(522734);function ab(a,b,c){let d,e;try{e=a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}async function ac(a,b,c){let d,e;try{e=await a()}catch(a){d=a}finally{if(b(d,e),d&&!c)throw d;return e}}function ad(a){return"function"==typeof a&&"function"==typeof a.__original&&"function"==typeof a.__unwrap&&!0===a.__wrapped}class ae extends V{_modules;_hooks=[];_requireInTheMiddleSingleton=$.getInstance();_enabled=!1;constructor(a,b,c){super(a,b,c);let d=this.init();d&&!Array.isArray(d)&&(d=[d]),this._modules=d||[],this._config.enabled&&this.enable()}_wrap=(a,b,c)=>{if(ad(a[b])&&this._unwrap(a,b),!q.types.isProxy(a))return Q(a,b,c);{let d=Q(Object.assign({},a),b,c);return Object.defineProperty(a,b,{value:d}),d}};_unwrap=(a,b)=>q.types.isProxy(a)?Object.defineProperty(a,b,{value:a[b]}):S(a,b);_massWrap=(a,b,c)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._wrap(a,b,c)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_massUnwrap=(a,b)=>{a?(Array.isArray(a)||(a=[a]),b&&Array.isArray(b))?a.forEach(a=>{b.forEach(b=>{this._unwrap(a,b)})}):r.diag.error("must provide one or more functions to wrap on modules"):r.diag.error("must provide one or more modules to patch")};_warnOnPreloadedModules(){this._modules.forEach(b=>{let{name:c}=b;try{let b=(()=>{let a=Error("Cannot find module as expression is too dynamic");throw a.code="MODULE_NOT_FOUND",a})();a.c[b]&&this._diag.warn(`Module ${c} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${c}`)}catch{}})}_extractPackageVersion(a){try{let b=(0,aa.readFileSync)(p.join(a,"package.json"),{encoding:"utf8"}),c=JSON.parse(b).version;return"string"==typeof c?c:void 0}catch{r.diag.warn("Failed extracting version",a)}}_onRequire(a,b,c,d){if(!d)return"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:a.name}),a.patch(b)):b;let e=this._extractPackageVersion(d);if(a.moduleVersion=e,a.name===c)return af(a.supportedVersions,e,a.includePrerelease)&&"function"==typeof a.patch&&(a.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:a.name,version:a.moduleVersion,baseDir:d}),a.patch(b,a.moduleVersion)):b;let f=a.files??[],g=p.normalize(c);return f.filter(a=>a.name===g).filter(b=>af(b.supportedVersions,e,a.includePrerelease)).reduce((b,c)=>(c.moduleExports=b,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:a.name,version:a.moduleVersion,fileName:c.name,baseDir:d}),c.patch(b,a.moduleVersion)):b,b)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let a of this._modules)for(let b of("function"==typeof a.patch&&a.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:a.name,version:a.moduleVersion}),a.patch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.patch(b.moduleExports,a.moduleVersion));return}for(let a of(this._warnOnPreloadedModules(),this._modules)){let b=(b,c,d)=>{if(!d&&p.isAbsolute(c)){let a=p.parse(c);c=a.name,d=a.dir}return this._onRequire(a,b,c,d)},c=(b,c,d)=>this._onRequire(a,b,c,d),d=p.isAbsolute(a.name)?new W.Hook([a.name],{internals:!0},c):this._requireInTheMiddleSingleton.register(a.name,c);this._hooks.push(d);let e=new _.Hook([a.name],{internals:!1},b);this._hooks.push(e)}}}disable(){if(this._enabled)for(let a of(this._enabled=!1,this._modules))for(let b of("function"==typeof a.unpatch&&a.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:a.name,version:a.moduleVersion}),a.unpatch(a.moduleExports,a.moduleVersion)),a.files))b.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:a.name,version:a.moduleVersion,fileName:b.name}),b.unpatch(b.moduleExports,a.moduleVersion))}isEnabled(){return this._enabled}}function af(a,b,c){return void 0===b?a.includes("*"):a.some(a=>(function(a,b,c){var d,e,f;if(!("string"==typeof(d=a)&&s.test(d)))return r.diag.error(`Invalid version: ${a}`),!1;if(!b)return!0;b=b.replace(/([<>=~^]+)\s+/g,"$1");let g=function(a){let b=a.match(s);if(!b)return void r.diag.error(`Invalid version: ${a}`);let c=b.groups.version,d=b.groups.prerelease,e=b.groups.build,f=c.split("."),g=d?.split(".");return{op:void 0,version:c,versionSegments:f,versionSegmentCount:f.length,prerelease:d,prereleaseSegments:g,prereleaseSegmentCount:g?g.length:0,build:e}}(a);if(!g)return!1;let h=[],i=v(g,b,h,c);return i&&!c?.includePrerelease?(e=g,f=h,!e.prerelease||f.some(a=>a.prerelease&&a.version===e.version)):i})(b,a,{includePrerelease:c}))}class ag{name;supportedVersions;patch;unpatch;files;constructor(a,b,c,d,e){this.name=a,this.supportedVersions=b,this.patch=c,this.unpatch=d,this.files=e||[]}}class ah{supportedVersions;patch;unpatch;name;constructor(a,b,c,d){this.supportedVersions=b,this.patch=c,this.unpatch=d,this.name=(0,p.normalize)(a)}}function ai(a,b){let d=c.OLD;for(let e of b?.split(",").map(a=>a.trim()).filter(a=>""!==a)??[])if(e.toLowerCase()===a+"/dup"){d=c.DUPLICATE;break}else e.toLowerCase()===a&&(d=c.STABLE);return d}(b=c||(c={}))[b.STABLE=1]="STABLE",b[b.OLD=2]="OLD",b[b.DUPLICATE=3]="DUPLICATE",a.s(["InstrumentationBase",()=>ae,"InstrumentationNodeModuleDefinition",()=>ag,"InstrumentationNodeModuleFile",()=>ah,"SemconvStability",()=>c,"isWrapped",()=>ad,"registerInstrumentations",()=>o,"safeExecuteInTheMiddle",()=>ab,"safeExecuteInTheMiddleAsync",()=>ac,"semconvStabilityFromStr",()=>ai],116141)},634149,(a,b,c)=>{"use strict";var d=Object.defineProperty,e=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,g=Object.prototype.hasOwnProperty,h={},i={PrismaInstrumentation:()=>w,registerInstrumentations:()=>x.registerInstrumentations};for(var j in i)d(h,j,{get:i[j],enumerable:!0});b.exports=((a,b,c,h)=>{if(b&&"object"==typeof b||"function"==typeof b)for(let i of f(b))g.call(a,i)||i===c||d(a,i,{get:()=>b[i],enumerable:!(h=e(b,i))||h.enumerable});return a})(d({},"__esModule",{value:!0}),h);var k=a.r(832528),l=a.r(116141),m="7.6.0".split(".")[0],n="PRISMA_INSTRUMENTATION",o=`V${m}_PRISMA_INSTRUMENTATION`,p=globalThis,q=a.r(832528),r="true"===process.env.PRISMA_SHOW_ALL_TRACES,s=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:a,ignoreSpanTypes:b}){this.tracerProvider=a,this.ignoreSpanTypes=b}isEnabled(){return!0}getTraceParent(a){let b=q.trace.getSpanContext(a??q.context.active());return b?`00-${b.traceId}-${b.spanId}-0${b.traceFlags}`:"00-10-10-00"}dispatchEngineSpans(a){let b=this.tracerProvider.getTracer("prisma"),c=new Map;for(let d of a.filter(a=>null===a.parentId))!function a(b,c,d,e,f){if(u(c.name,f))return;let g={attributes:c.attributes,kind:"client"===c.kind?q.SpanKind.CLIENT:q.SpanKind.INTERNAL,startTime:c.startTime};b.startActiveSpan(c.name,g,g=>{for(let h of(e.set(c.id,g.spanContext().spanId),c.links&&g.addLinks(c.links.flatMap(a=>{let b=e.get(a);return b?{context:{spanId:b,traceId:g.spanContext().traceId,traceFlags:g.spanContext().traceFlags}}:[]})),d.filter(a=>a.parentId===c.id)))a(b,h,d,e,f);g.end(c.endTime)})}(b,d,a,c,this.ignoreSpanTypes)}getActiveContext(){return q.context.active()}runInChildSpan(a,b){if("string"==typeof a&&(a={name:a}),a.internal&&!r)return b();let c=this.tracerProvider.getTracer("prisma"),d=a.context??this.getActiveContext(),e=`prisma:client:${a.name}`;if(u(e,this.ignoreSpanTypes))return b();if(!1===a.active){let f=c.startSpan(e,a,d);return t(f,b(f,d))}return c.startActiveSpan(e,a,a=>t(a,b(a,d)))}};function t(a,b){var c;return null!=(c=b)&&"function"==typeof c.then?b.then(b=>(a.end(),b),b=>{throw a.end(),b}):(a.end(),b)}function u(a,b){return b.some(b=>"string"==typeof b?b===a:b.test(a))}var v="7.6.0",w=class extends l.InstrumentationBase{tracerProvider;constructor(a={}){super("@prisma/instrumentation",v,a)}setTracerProvider(a){this.tracerProvider=a}init(){return[new l.InstrumentationNodeModuleDefinition("@prisma/client",[v])]}enable(){let a,b=this._config;a={helper:new s({tracerProvider:this.tracerProvider??k.trace.getTracerProvider(),ignoreSpanTypes:b.ignoreSpanTypes??[]})},p[o]=a,p[n]=a}disable(){delete p[o],delete p[n]}isEnabled(){return void 0!==function(){let a=p[o];if(a?.helper)return a.helper;let b=p[n];return b?.helper}()}},x=a.r(116141)},770948,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(634149),f=a.r(187845),g=a.r(309569),h="Prisma";function i(){let a=globalThis.PRISMA_INSTRUMENTATION;return a&&"object"==typeof a&&"helper"in a?a.helper:void 0}class j extends e.PrismaInstrumentation{constructor(a){super(a?.instrumentationConfig)}enable(){super.enable();let a=i();a&&"object"==typeof a&&"dispatchEngineSpans"in a&&(a.createEngineSpan=a=>{let b=d.trace.getTracer("prismaV5Compatibility"),c=b._idGenerator;if(!c)return void f.consoleSandbox(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});try{a.spans.forEach(a=>{var e;let f=(e=a.kind,"client"===e?d.SpanKind.CLIENT:d.SpanKind.INTERNAL),g=a.parent_span_id,h=a.span_id,i=a.trace_id,j=a.links?.map(a=>({context:{traceId:a.trace_id,spanId:a.span_id,traceFlags:d.TraceFlags.SAMPLED}})),k=d.trace.setSpanContext(d.context.active(),{traceId:i,spanId:g,traceFlags:d.TraceFlags.SAMPLED});d.context.with(k,()=>{b._idGenerator={generateTraceId:()=>i,generateSpanId:()=>h},b.startSpan(a.name,{kind:f,links:j,startTime:a.start_time,attributes:a.attributes}).end(a.end_time),b._idGenerator=c})})}finally{b._idGenerator=c}})}}let k=g.generateInstrumentOnce(h,a=>new j(a)),l=f.defineIntegration(a=>({name:h,setupOnce(){k(a)},setup(a){i()&&a.on("spanStart",a=>{let b=f.spanToJSON(a);b.description?.startsWith("prisma:")&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.prisma"),"prisma:engine:db_query"===b.description&&b.data["db.query.text"]&&a.updateName(b.data["db.query.text"]),"prisma:engine:db_query"!==b.description||b.data["db.system"]||a.setAttribute("db.system","prisma")})}}));c.instrumentPrisma=k,c.prismaIntegration=l},327397,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.60.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"},31093,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiLifecycleMethodNames=c.HapiLayerType=c.handlerPatched=c.HapiComponentName=void 0,c.HapiComponentName="@hapi/hapi",c.handlerPatched=Symbol("hapi-handler-patched"),c.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"},c.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])},437108,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_HTTP_METHOD=void 0,c.ATTR_HTTP_METHOD="http.method"},678965,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).HAPI_TYPE="hapi.type",d.PLUGIN_NAME="hapi.plugin.name",d.EXT_TYPE="server.ext.type"},636223,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.getPluginFromInput=c.getExtMetadata=c.getRouteMetadata=c.isPatchableExtMethod=c.isDirectExtInput=c.isLifecycleExtEventObj=c.isLifecycleExtType=c.getPluginName=void 0;let d=a.r(357122),e=a.r(437108),f=a.r(31093),g=a.r(678965),h=a.r(167300);c.getPluginName=function(a){return a.name?a.name:a.pkg.name},c.isLifecycleExtType=a=>"string"==typeof a&&f.HapiLifecycleMethodNames.has(a),c.isLifecycleExtEventObj=a=>{let b=a?.type;return void 0!==b&&(0,c.isLifecycleExtType)(b)},c.isDirectExtInput=a=>Array.isArray(a)&&a.length<=3&&(0,c.isLifecycleExtType)(a[0])&&"function"==typeof a[1],c.isPatchableExtMethod=a=>!Array.isArray(a),c.getRouteMetadata=(a,b,c)=>{let i,j={[d.ATTR_HTTP_ROUTE]:a.path};return b&h.SemconvStability.OLD&&(j[e.ATTR_HTTP_METHOD]=a.method),b&h.SemconvStability.STABLE&&(j[d.ATTR_HTTP_REQUEST_METHOD]=a.method),c?(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.PLUGIN,j[g.AttributeNames.PLUGIN_NAME]=c,i=`${c}: route - ${a.path}`):(j[g.AttributeNames.HAPI_TYPE]=f.HapiLayerType.ROUTER,i=`route - ${a.path}`),{attributes:j,name:i}},c.getExtMetadata=(a,b,c)=>{let d=`ext - ${a}`;return(c&&"method"!==c&&(d=`ext - ${a} - ${c}`),b)?{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT,[g.AttributeNames.PLUGIN_NAME]:b},name:`${b}: ${d}`}:{attributes:{[g.AttributeNames.EXT_TYPE]:a,[g.AttributeNames.HAPI_TYPE]:f.HapiLayerType.EXT},name:d}},c.getPluginFromInput=a=>"plugin"in a?"plugin"in a.plugin?a.plugin.plugin:a.plugin:a},487995,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.HapiInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(327397),h=a.r(31093),i=a.r(636223);class j extends f.InstrumentationBase{_semconvStability;constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a),this._semconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new f.InstrumentationNodeModuleDefinition(h.HapiComponentName,[">=17.0.0 <22"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return(0,f.isWrapped)(b.server)||this._wrap(b,"server",this._getServerPatch.bind(this)),(0,f.isWrapped)(b.Server)||this._wrap(b,"Server",this._getServerPatch.bind(this)),b},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;this._massUnwrap([b],["server","Server"])})}_getServerPatch(a){let b=this,c=this;return function(d){let e=a.apply(this,[d]);return c._wrap(e,"route",a=>b._getServerRoutePatch.bind(b)(a)),c._wrap(e,"ext",a=>b._getServerExtPatch.bind(b)(a)),c._wrap(e,"register",b._getServerRegisterPatch.bind(b)),e}}_getServerRegisterPatch(a){let b=this;return function(c,d){if(Array.isArray(c))for(let a of c){let c=(0,i.getPluginFromInput)(a);b._wrapRegisterHandler(c)}else{let a=(0,i.getPluginFromInput)(c);b._wrapRegisterHandler(a)}return a.apply(this,[c,d])}}_getServerExtPatch(a,b){let c=this;return function(...d){if(Array.isArray(d[0])){let a=d[0];for(let d=0;db._getServerRoutePatch.bind(b)(a,c)),e._wrap(a,"ext",a=>b._getServerExtPatch.bind(b)(a,c)),d.call(this,a,f)}}_wrapExtMethods(a,b,c){let e=this;if(a instanceof Array)for(let c=0;casync function(...g){if(void 0===d.trace.getSpan(d.context.active()))return await f.call(this,...g);let h=(0,e.getRPCMetadata)(d.context.active());h?.type===e.RPCType.HTTP&&(h.route=a.path);let j=(0,i.getRouteMetadata)(a,c._semconvStability,b),k=c.tracer.startSpan(j.name,{attributes:j.attributes});try{return await d.context.with(d.trace.setSpan(d.context.active(),k),()=>f.call(this,...g))}catch(a){throw k.recordException(a),k.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),a}finally{k.end()}};if("function"==typeof a.handler)a.handler=f(a.handler);else if("function"==typeof a.options){let b=a.options;a.options=function(a){let c=b(a);return"function"==typeof c.handler&&(c.handler=f(c.handler)),c}}else"function"==typeof a.options?.handler&&(a.options.handler=f(a.options.handler));return a}}c.HapiInstrumentation=j},984769,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=c.HapiInstrumentation=void 0;var d=a.r(487995);Object.defineProperty(c,"HapiInstrumentation",{enumerable:!0,get:function(){return d.HapiInstrumentation}});var e=a.r(678965);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}})},969899,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(984769),e=a.r(187845),f=a.r(309569),g=a.r(852223),h="Hapi",i=f.generateInstrumentOnce(h,()=>new d.HapiInstrumentation),j=e.defineIntegration(()=>({name:h,setupOnce(){i()}})),k={name:"SentryHapiErrorPlugin",version:e.SDK_VERSION,register:async function(a){a.events.on({name:"request",channels:["error"]},(a,b)=>{var c;if(e.getIsolationScope()!==e.getDefaultIsolationScope()){let b=a.route;b.path&&e.getIsolationScope().setTransactionName(`${b.method.toUpperCase()} ${b.path}`)}else g.DEBUG_BUILD&&e.debug.warn("Isolation scope is still the default isolation scope - skipping setting transactionName");b&&"object"==typeof b&&"error"in b&&b.error&&(c=b.error,e.captureException(c,{mechanism:{type:"auto.function.hapi",handled:!1}}))})}};async function l(a){await a.register(k);let b=e.getClient();b&&b.on("spanStart",a=>{var b;let c,d;b=a,d=(c=e.spanToJSON(b).data)["hapi.type"],!c[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]&&d&&b.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hapi",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${d}.hapi`})}),f.ensureIsWrapped(a.register,"hapi")}c.hapiErrorPlugin=k,c.hapiIntegration=j,c.instrumentHapi=i,c.setupHapiErrorHandler=l},547707,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.AttributeNames={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},c.HonoTypes={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"}},106789,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300),f=a.r(187845),g=a.r(547707);class h extends e.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-hono","0.0.1",a)}init(){return[new e.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],a=>this._patch(a))]}_patch(a){let b=this;class c extends a.Hono{constructor(...a){super(...a),b._wrap(this,"get",b._patchHandler()),b._wrap(this,"post",b._patchHandler()),b._wrap(this,"put",b._patchHandler()),b._wrap(this,"delete",b._patchHandler()),b._wrap(this,"options",b._patchHandler()),b._wrap(this,"patch",b._patchHandler()),b._wrap(this,"all",b._patchHandler()),b._wrap(this,"on",b._patchOnHandler()),b._wrap(this,"use",b._patchMiddlewareHandler())}}try{a.Hono=c}catch{return{...a,Hono:c}}return a}_patchHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_patchOnHandler(){let a=this;return function(b){return function(...c){let d=c.slice(2);return b.apply(this,[...c.slice(0,2),...d.map(b=>a._wrapHandler(b))])}}}_patchMiddlewareHandler(){let a=this;return function(b){return function(...c){if("string"==typeof c[0]){let d=c[0];if(1===c.length)return b.apply(this,[d]);let e=c.slice(1);return b.apply(this,[d,...e.map(b=>a._wrapHandler(b))])}return b.apply(this,c.map(b=>a._wrapHandler(b)))}}}_wrapHandler(a){let b=this;return function(c,e){if(!b.isEnabled())return a.apply(this,[c,e]);let h=c.req.path,i=b.tracer.startSpan(h);return d.context.with(d.trace.setSpan(d.context.active(),i),()=>b._safeExecute(()=>{let d=a.apply(this,[c,e]);if(f.isThenable(d))return d.then(c=>{let d=b._determineHandlerType(c);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:d,[g.AttributeNames.HONO_NAME]:d===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),c});{let c=b._determineHandlerType(d);return i.setAttributes({[g.AttributeNames.HONO_TYPE]:c,[g.AttributeNames.HONO_NAME]:c===g.HonoTypes.REQUEST_HANDLER?h:a.name||"anonymous"}),b.getConfig().responseHook?.(i),d}},()=>i.end(),a=>{b._handleError(i,a),i.end()}))}}_safeExecute(a,b,c){try{let d=a();return f.isThenable(d)?d.then(()=>b(),a=>c(a)):b(),d}catch(a){throw c(a),a}}_determineHandlerType(a){return void 0===a?g.HonoTypes.MIDDLEWARE:g.HonoTypes.REQUEST_HANDLER}_handleError(a,b){b instanceof Error&&(a.setStatus({code:d.SpanStatusCode.ERROR,message:b.message}),a.recordException(b))}}c.HonoInstrumentation=h},27047,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(309569),g=a.r(852223),h=a.r(547707),i=a.r(106789),j="Hono",k=f.generateInstrumentOnce(j,()=>new i.HonoInstrumentation({responseHook:a=>{!function(a){let b=e.spanToJSON(a).data,c=b[h.AttributeNames.HONO_TYPE];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.hono",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.hono`});let f=b[h.AttributeNames.HONO_NAME];if("string"==typeof f&&a.updateName(f),e.getIsolationScope()===e.getDefaultIsolationScope()){g.DEBUG_BUILD&&e.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let i=b[d.ATTR_HTTP_ROUTE],j=b[d.ATTR_HTTP_REQUEST_METHOD];"string"==typeof i&&"string"==typeof j&&e.getIsolationScope().setTransactionName(`${j} ${i}`)}(a)}})),l=e.defineIntegration(()=>({name:j,setupOnce(){k()}}));c.honoIntegration=l,c.instrumentHono=k,c.setupHonoErrorHandler=function(a,b){a.use(async function(a,b){let c=e.httpRequestToRequestData(a.req);e.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:c}),await b()}),a.use(async function(a,c){await c(),(b?.shouldHandleError||function(a){return a.res.status>=500})(a)&&(a.res.sentry=e.captureException(a.error,{mechanism:{type:"auto.middleware.hono",handled:!1}}))}),f.ensureIsWrapped(a.use,"hono")}},784005,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=void 0,(d=c.KoaLayerType||(c.KoaLayerType={})).ROUTER="router",d.MIDDLEWARE="middleware"},327081,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.62.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-koa"},325778,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).KOA_TYPE="koa.type",d.KOA_NAME="koa.name"},703707,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isLayerIgnored=c.getMiddlewareMetadata=void 0;let d=a.r(784005),e=a.r(325778),f=a.r(357122);c.getMiddlewareMetadata=(a,b,c,g)=>c?{attributes:{[e.AttributeNames.KOA_NAME]:g?.toString(),[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.ROUTER,[f.ATTR_HTTP_ROUTE]:g?.toString()},name:a._matchedRouteName||`router - ${g}`}:{attributes:{[e.AttributeNames.KOA_NAME]:b.name??"middleware",[e.AttributeNames.KOA_TYPE]:d.KoaLayerType.MIDDLEWARE},name:`middleware - ${b.name}`},c.isLayerIgnored=(a,b)=>!!(Array.isArray(b?.ignoreLayersType)&&b?.ignoreLayersType?.includes(a))},730772,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.kLayerPatched=void 0,c.kLayerPatched=Symbol("koa-layer-patched")},151114,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(784005),g=a.r(327081),h=a.r(703707),i=a.r(498562),j=a.r(730772);class k extends e.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return new e.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;return null==b?b:((0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use"),this._wrap(b.prototype,"use",this._getKoaUsePatch.bind(this)),a)},a=>{let b="Module"===a[Symbol.toStringTag]?a.default:a;(0,e.isWrapped)(b.prototype.use)&&this._unwrap(b.prototype,"use")})}_getKoaUsePatch(a){let b=this;return function(c){let d;return d=c.router?b._patchRouterDispatch(c):b._patchLayer(c,!1),a.apply(this,[d])}}_patchRouterDispatch(a){d.diag.debug("Patching @koa/router dispatch");let b=a.router;for(let a of b?.stack??[]){let b=a.path,c=a.stack;for(let a=0;a{if(void 0===d.trace.getSpan(d.context.active()))return a(f,j);let k=(0,h.getMiddlewareMetadata)(f,a,b,c),l=this.tracer.startSpan(k.name,{attributes:k.attributes}),m=(0,i.getRPCMetadata)(d.context.active());m?.type===i.RPCType.HTTP&&f._matchedRoute&&(m.route=f._matchedRoute.toString());let{requestHook:n}=this.getConfig();n&&(0,e.safeExecuteInTheMiddle)(()=>n(l,{context:f,middlewareLayer:a,layerType:g}),a=>{a&&d.diag.error("koa instrumentation: request hook failed",a)},!0);let o=d.trace.setSpan(d.context.active(),l);return d.context.with(o,async()=>{try{return await a(f,j)}catch(a){throw l.recordException(a),a}finally{l.end()}})})}}c.KoaInstrumentation=k},474061,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KoaLayerType=c.AttributeNames=c.KoaInstrumentation=void 0;var d=a.r(151114);Object.defineProperty(c,"KoaInstrumentation",{enumerable:!0,get:function(){return d.KoaInstrumentation}});var e=a.r(325778);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}});var f=a.r(784005);Object.defineProperty(c,"KoaLayerType",{enumerable:!0,get:function(){return f.KoaLayerType}})},550583,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(474061),e=a.r(357122),f=a.r(187845),g=a.r(309569),h=a.r(852223),i=g.generateInstrumentOnce("Koa",d.KoaInstrumentation,(a={})=>({ignoreLayersType:a.ignoreLayersType,requestHook(a,b){g.addOriginToSpan(a,"auto.http.otel.koa");let c=f.spanToJSON(a).data,d=c["koa.type"];d&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,`${d}.koa`);let i=c["koa.name"];if("string"==typeof i&&a.updateName(i||"< unknown >"),f.getIsolationScope()===f.getDefaultIsolationScope()){h.DEBUG_BUILD&&f.debug.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let j=c[e.ATTR_HTTP_ROUTE],k=b.context?.request?.method?.toUpperCase()||"GET";j&&f.getIsolationScope().setTransactionName(`${k} ${j}`)}})),j=f.defineIntegration((a={})=>({name:"Koa",setupOnce(){i(a)}}));c.instrumentKoa=i,c.koaIntegration=j,c.setupKoaErrorHandler=a=>{a.use(async(a,b)=>{try{await b()}catch(a){throw f.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.koa"}}),a}}),g.ensureIsWrapped(a.use,"koa")}},791516,(a,b,c)=>{"use strict";var d,e,f;Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectNames=c.ConnectTypes=c.AttributeNames=void 0,(d=c.AttributeNames||(c.AttributeNames={})).CONNECT_TYPE="connect.type",d.CONNECT_NAME="connect.name",(e=c.ConnectTypes||(c.ConnectTypes={})).MIDDLEWARE="middleware",e.REQUEST_HANDLER="request_handler",(f=c.ConnectNames||(c.ConnectNames={})).MIDDLEWARE="middleware",f.REQUEST_HANDLER="request handler"},544769,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-connect"},109564,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c._LAYERS_STORE_PROPERTY=void 0,c._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")},679231,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.generateRoute=c.replaceCurrentStackRoute=c.addNewStackLayer=void 0;let d=a.r(832528),e=a.r(109564);c.addNewStackLayer=a=>{!1===Array.isArray(a[e._LAYERS_STORE_PROPERTY])&&Object.defineProperty(a,e._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]}),a[e._LAYERS_STORE_PROPERTY].push("/");let b=a[e._LAYERS_STORE_PROPERTY].length;return()=>{b===a[e._LAYERS_STORE_PROPERTY].length?a[e._LAYERS_STORE_PROPERTY].pop():d.diag.warn("Connect: Trying to pop the stack multiple time")}},c.replaceCurrentStackRoute=(a,b)=>{b&&a[e._LAYERS_STORE_PROPERTY].splice(-1,1,b)},c.generateRoute=a=>a[e._LAYERS_STORE_PROPERTY].reduce((a,b)=>a.replace(/\/+$/,"")+b)},161740,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectInstrumentation=c.ANONYMOUS_NAME=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(791516),g=a.r(544769),h=a.r(167300),i=a.r(357122),j=a.r(679231);c.ANONYMOUS_NAME="anonymous";class k extends h.InstrumentationBase{constructor(a={}){super(g.PACKAGE_NAME,g.PACKAGE_VERSION,a)}init(){return[new h.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],a=>this._patchConstructor(a))]}_patchApp(a){(0,h.isWrapped)(a.use)||this._wrap(a,"use",this._patchUse.bind(this)),(0,h.isWrapped)(a.handle)||this._wrap(a,"handle",this._patchHandle.bind(this))}_patchConstructor(a){let b=this;return function(...c){let d=a.apply(this,c);return b._patchApp(d),d}}_patchNext(a,b){return function(c){let d=a.apply(this,[c]);return b(),d}}_startSpan(a,b){let d,e,g;a?(d=f.ConnectTypes.REQUEST_HANDLER,g=f.ConnectNames.REQUEST_HANDLER,e=a):(d=f.ConnectTypes.MIDDLEWARE,g=f.ConnectNames.MIDDLEWARE,e=b.name||c.ANONYMOUS_NAME);let h=`${g} - ${e}`,j={attributes:{[i.ATTR_HTTP_ROUTE]:a.length>0?a:"/",[f.AttributeNames.CONNECT_TYPE]:d,[f.AttributeNames.CONNECT_NAME]:e}};return this.tracer.startSpan(h,j)}_patchMiddleware(a,b){let f=this,g=4===b.length;function h(){if(!f.isEnabled())return b.apply(this,arguments);let[h,i,k]=g?[1,2,3]:[0,1,2],l=arguments[h],m=arguments[i],n=arguments[k];(0,j.replaceCurrentStackRoute)(l,a);let o=(0,e.getRPCMetadata)(d.context.active());a&&o?.type===e.RPCType.HTTP&&(o.route=(0,j.generateRoute)(l));let p="";p=a?`request handler - ${a}`:`middleware - ${b.name||c.ANONYMOUS_NAME}`;let q=f._startSpan(a,b);f._diag.debug("start span",p);let r=!1;function s(){r?f._diag.debug(`span ${q.name} - already finished`):(r=!0,f._diag.debug(`finishing span ${q.name}`),q.end()),m.removeListener("close",s)}return m.addListener("close",s),arguments[k]=f._patchNext(n,s),b.apply(this,arguments)}return Object.defineProperty(h,"length",{value:b.length,writable:!1,configurable:!0}),h}_patchUse(a){let b=this;return function(...c){let d=c[c.length-1],e=c[c.length-2]||"";return c[c.length-1]=b._patchMiddleware(e,d),a.apply(this,c)}}_patchHandle(a){let b=this;return function(){let[c,d]=[0,2],e=arguments[c],f=arguments[d],g=(0,j.addNewStackLayer)(e);return"function"==typeof f&&(arguments[d]=b._patchOut(f,g)),a.apply(this,arguments)}}_patchOut(a,b){return function(...c){return b(),Reflect.apply(a,this,c)}}}c.ConnectInstrumentation=k},403473,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ConnectTypes=c.ConnectNames=c.AttributeNames=c.ANONYMOUS_NAME=c.ConnectInstrumentation=void 0;var d=a.r(161740);Object.defineProperty(c,"ConnectInstrumentation",{enumerable:!0,get:function(){return d.ConnectInstrumentation}}),Object.defineProperty(c,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return d.ANONYMOUS_NAME}});var e=a.r(791516);Object.defineProperty(c,"AttributeNames",{enumerable:!0,get:function(){return e.AttributeNames}}),Object.defineProperty(c,"ConnectNames",{enumerable:!0,get:function(){return e.ConnectNames}}),Object.defineProperty(c,"ConnectTypes",{enumerable:!0,get:function(){return e.ConnectTypes}})},617413,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(403473),e=a.r(187845),f=a.r(309569),g="Connect",h=f.generateInstrumentOnce(g,()=>new d.ConnectInstrumentation);function i(a,b,c,d){e.captureException(a,{mechanism:{handled:!1,type:"auto.middleware.connect"}}),d(a)}c.connectIntegration=e.defineIntegration(()=>({name:g,setupOnce(){h()}})),c.instrumentConnect=h,c.setupConnectErrorHandler=a=>{a.use(i);let b=e.getClient();b&&b.on("spanStart",a=>{!function(a){let b=e.spanToJSON(a).data,c=b["connect.type"];if(b[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]||!c)return;a.setAttributes({[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.otel.connect",[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`${c}.connect`});let d=b["connect.name"];"string"==typeof d&&a.updateName(d)}(a)}),f.ensureIsWrapped(a.use,"connect")}},194619,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.58.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-knex"},11859,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.SUPPORTED_VERSIONS=c.MODULE_NAME=void 0,c.MODULE_NAME="knex",c.SUPPORTED_VERSIONS=[">=0.22.0 <4",">=0.10.0 <0.18.0",">=0.19.0 <0.22.0",">=0.18.0 <0.19.0"]},764122,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_NAME_VALUE_SQLITE=c.ATTR_NET_TRANSPORT=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_OPERATION=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_OPERATION="db.operation",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.ATTR_NET_TRANSPORT="net.transport",c.DB_SYSTEM_NAME_VALUE_SQLITE="sqlite"},496910,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.extractTableName=c.extractPortFromConnectionString=c.extractHostFromConnectionString=c.extractDatabaseFromConnectionString=c.limitLength=c.getName=c.mapSystem=c.otelExceptionFromKnexError=c.getFormatter=void 0;let d=a.r(357122),e=a.r(764122);c.getFormatter=a=>{if(a){if(a.client){if(a.client._formatQuery)return a.client._formatQuery.bind(a.client);else if(a.client.SqlString)return a.client.SqlString.format.bind(a.client.SqlString)}if(a.builder)return a.builder.toString.bind(a.builder)}return()=>""},c.otelExceptionFromKnexError=function(a,b){return a&&a instanceof Error?{message:b,code:a.code,stack:a.stack,name:a.name}:a};let f=new Map([["sqlite3",e.DB_SYSTEM_NAME_VALUE_SQLITE],["pg",d.DB_SYSTEM_NAME_VALUE_POSTGRESQL]]);c.mapSystem=a=>f.get(a)||a,c.getName=(a,b,c)=>b?c?`${b} ${a}.${c}`:`${b} ${a}`:a,c.limitLength=(a,b)=>"string"==typeof a&&"number"==typeof b&&0{if(a)try{return new URL(a).pathname?.replace(/^\//,"")||void 0}catch{return}},c.extractHostFromConnectionString=a=>{if(a)try{return new URL(a).hostname||void 0}catch{return}},c.extractPortFromConnectionString=a=>{if(a)try{let b=new URL(a).port;return b?parseInt(b,10):void 0}catch{return}},c.extractTableName=a=>{let b=a?._single?.table;return"object"==typeof b?(0,c.extractTableName)(b):b}},242713,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;let d=a.r(832528),e=a.r(194619),f=a.r(11859),g=a.r(167300),h=a.r(496910),i=a.r(357122),j=a.r(764122),k=Symbol("opentelemetry.instrumentation-knex.context"),l={maxQueryLength:1022,requireParentSpan:!1};class m extends g.InstrumentationBase{_semconvStability;constructor(a={}){super(e.PACKAGE_NAME,e.PACKAGE_VERSION,{...l,...a}),this._semconvStability=(0,g.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...l,...a})}init(){let a=new g.InstrumentationNodeModuleDefinition(f.MODULE_NAME,f.SUPPORTED_VERSIONS);return a.files.push(this.getClientNodeModuleFileInstrumentation("src"),this.getClientNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("src"),this.getRunnerNodeModuleFileInstrumentation("lib"),this.getRunnerNodeModuleFileInstrumentation("lib/execution")),a}getRunnerNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/runner.js`,f.SUPPORTED_VERSIONS,(a,b)=>(this.ensureWrapped(a.prototype,"query",this.createQueryWrapper(b)),a),(a,b)=>(this._unwrap(a.prototype,"query"),a))}getClientNodeModuleFileInstrumentation(a){return new g.InstrumentationNodeModuleFile(`knex/${a}/client.js`,f.SUPPORTED_VERSIONS,a=>(this.ensureWrapped(a.prototype,"queryBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"schemaBuilder",this.storeContext.bind(this)),this.ensureWrapped(a.prototype,"raw",this.storeContext.bind(this)),a),a=>(this._unwrap(a.prototype,"queryBuilder"),this._unwrap(a.prototype,"schemaBuilder"),this._unwrap(a.prototype,"raw"),a))}createQueryWrapper(a){let b=this;return function(c){return function(e){let f=this.client.config,l=h.extractTableName(this.builder),m=e?.method,n=f?.connection?.connectionString,o=f?.connection?.filename||f?.connection?.database||h.extractDatabaseFromConnectionString(n),{maxQueryLength:p}=b.getConfig(),q={"knex.version":a},r=f?.connection?.filename===":memory:"?"inproc":void 0;if(b._semconvStability&g.SemconvStability.OLD&&Object.assign(q,{[j.ATTR_DB_SYSTEM]:h.mapSystem(this.client.driverName),[j.ATTR_DB_SQL_TABLE]:l,[j.ATTR_DB_OPERATION]:m,[j.ATTR_DB_USER]:f?.connection?.user,[j.ATTR_DB_NAME]:o,[j.ATTR_NET_PEER_NAME]:f?.connection?.host??h.extractHostFromConnectionString(n),[j.ATTR_NET_PEER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n),[j.ATTR_NET_TRANSPORT]:r}),b._semconvStability&g.SemconvStability.STABLE&&Object.assign(q,{[i.ATTR_DB_SYSTEM_NAME]:h.mapSystem(this.client.driverName),[i.ATTR_DB_COLLECTION_NAME]:l,[i.ATTR_DB_OPERATION_NAME]:m,[i.ATTR_DB_NAMESPACE]:o,[i.ATTR_SERVER_ADDRESS]:f?.connection?.host??h.extractHostFromConnectionString(n),[i.ATTR_SERVER_PORT]:f?.connection?.port??h.extractPortFromConnectionString(n)}),p){let a=h.limitLength(e?.sql,p);b._semconvStability&g.SemconvStability.STABLE&&(q[i.ATTR_DB_QUERY_TEXT]=a),b._semconvStability&g.SemconvStability.OLD&&(q[j.ATTR_DB_STATEMENT]=a)}let s=this.builder[k]||d.context.active(),t=d.trace.getSpan(s),u=t&&d.trace.isSpanContextValid(t.spanContext());if(b._config.requireParentSpan&&!u)return c.bind(this)(...arguments);let v=b.tracer.startSpan(h.getName(o,m,l),{kind:d.SpanKind.CLIENT,attributes:q},s),w=d.trace.setSpan(d.context.active(),v);return d.context.with(w,c,this,...arguments).then(a=>(v.end(),a)).catch(a=>{let b=h.getFormatter(this)(e.sql,e.bindings||[]),c=a.message.replace(b+" - ",""),f=h.otelExceptionFromKnexError(a,c);throw v.recordException(f),v.setStatus({code:d.SpanStatusCode.ERROR,message:c}),v.end(),a})}}}storeContext(a){return function(){let b=a.apply(this,arguments);return Object.defineProperty(b,k,{value:d.context.active()}),b}}ensureWrapped(a,b,c){(0,g.isWrapped)(a[b])&&this._unwrap(a,b),this._wrap(a,b,c)}}c.KnexInstrumentation=m},555384,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.KnexInstrumentation=void 0;var d=a.r(242713);Object.defineProperty(c,"KnexInstrumentation",{enumerable:!0,get:function(){return d.KnexInstrumentation}})},523682,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(555384),e=a.r(187845),f=a.r(309569),g="Knex",h=f.generateInstrumentOnce(g,()=>new d.KnexInstrumentation({requireParentSpan:!0})),i=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{data:b}=e.spanToJSON(a);"knex.version"in b&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.knex")}))}}});c.instrumentKnex=h,c.knexIntegration=i},895264,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DB_SYSTEM_VALUE_MSSQL=c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_DB_USER=c.ATTR_DB_SYSTEM=c.ATTR_DB_STATEMENT=c.ATTR_DB_SQL_TABLE=c.ATTR_DB_NAME=void 0,c.ATTR_DB_NAME="db.name",c.ATTR_DB_SQL_TABLE="db.sql.table",c.ATTR_DB_STATEMENT="db.statement",c.ATTR_DB_SYSTEM="db.system",c.ATTR_DB_USER="db.user",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port",c.DB_SYSTEM_VALUE_MSSQL="mssql"},910191,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.once=c.getSpanName=void 0,c.getSpanName=function(a,b,c,d){return"execBulkLoad"===a&&d&&b?`${a} ${d} ${b}`:"callProcedure"===a?b?`${a} ${c} ${b}`:`${a} ${c}`:b?`${a} ${b}`:`${a}`},c.once=a=>{let b=!1;return(...c)=>{if(!b)return b=!0,a(...c)}}},855594,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.33.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"},407612,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=c.INJECTED_CTX=void 0;let d=a.r(832528),e=a.r(427699),f=a.r(167300),g=a.r(357122),h=a.r(895264),i=a.r(910191),j=a.r(855594),k=Symbol("opentelemetry.instrumentation-tedious.current-database");c.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");let l=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function m(a){Object.defineProperty(this,k,{value:a,writable:!0})}class n extends f.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(a={}){super(j.PACKAGE_NAME,j.PACKAGE_VERSION,a),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,f.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new f.InstrumentationNodeModuleDefinition(n.COMPONENT,[">=1.11.0 <20"],a=>{let b=a.Connection.prototype;for(let c of l)(0,f.isWrapped)(b[c])&&this._unwrap(b,c),this._wrap(b,c,this._patchQuery(c,a));return(0,f.isWrapped)(b.connect)&&this._unwrap(b,"connect"),this._wrap(b,"connect",this._patchConnect),a},a=>{if(void 0===a)return;let b=a.Connection.prototype;for(let a of l)this._unwrap(b,a);this._unwrap(b,"connect")})]}_patchConnect(a){return function(){return m.call(this,this.config?.options?.database),this.removeListener("databaseChange",m),this.on("databaseChange",m),this.once("end",()=>{this.removeListener("databaseChange",m)}),a.apply(this,arguments)}}_buildTraceparent(a){let b=a.spanContext();return`00-${b.traceId}-${b.spanId}-0${Number(b.traceFlags||d.TraceFlags.NONE).toString(16)}`}_injectContextInfo(a,b,d){return new Promise(e=>{try{let f=new b.Request("set context_info @opentelemetry_traceparent",a=>{e()});Object.defineProperty(f,c.INJECTED_CTX,{value:!0});let g=Buffer.from(d,"utf8");f.addParameter("opentelemetry_traceparent",b.TYPES.VarBinary,g,{length:g.length}),a.execSql(f)}catch{e()}})}_shouldInjectFor(a){return"execSql"===a||"execSqlBatch"===a||"callProcedure"===a||"execute"===a}_patchQuery(a,b){return j=>{let l=this;function m(m){if(m?.[c.INJECTED_CTX])return j.apply(this,arguments);if(!(m instanceof e.EventEmitter))return l._diag.warn(`Unexpected invocation of patched ${a} method. Span not recorded`),j.apply(this,arguments);let n=0,o=0,p=()=>o++,q=()=>n++,r=this[k],s="sp_prepare"===m.sqlTextOrProcedure&&m.parametersByName?.stmt?.value?m.parametersByName.stmt.value:m.sqlTextOrProcedure,t={};l._dbSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_DB_SYSTEM]=h.DB_SYSTEM_VALUE_MSSQL,t[h.ATTR_DB_NAME]=r,t[h.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,t[h.ATTR_DB_STATEMENT]=s,t[h.ATTR_DB_SQL_TABLE]=m.table),l._dbSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_DB_NAMESPACE]=r,t[g.ATTR_DB_SYSTEM_NAME]=g.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,t[g.ATTR_DB_QUERY_TEXT]=s,t[g.ATTR_DB_COLLECTION_NAME]=m.table),l._netSemconvStability&f.SemconvStability.OLD&&(t[h.ATTR_NET_PEER_NAME]=this.config?.server,t[h.ATTR_NET_PEER_PORT]=this.config?.options?.port),l._netSemconvStability&f.SemconvStability.STABLE&&(t[g.ATTR_SERVER_ADDRESS]=this.config?.server,t[g.ATTR_SERVER_PORT]=this.config?.options?.port);let u=l.tracer.startSpan((0,i.getSpanName)(a,r,s,m.table),{kind:d.SpanKind.CLIENT,attributes:t}),v=(0,i.once)(a=>{m.removeListener("done",p),m.removeListener("doneInProc",p),m.removeListener("doneProc",q),m.removeListener("error",v),this.removeListener("end",v),u.setAttribute("tedious.procedure_count",n),u.setAttribute("tedious.statement_count",o),a&&u.setStatus({code:d.SpanStatusCode.ERROR,message:a.message}),u.end()});m.on("done",p),m.on("doneInProc",p),m.on("doneProc",q),m.once("error",v),this.on("end",v),"function"==typeof m.callback?l._wrap(m,"callback",l._patchCallbackQuery(v)):l._diag.error("Expected request.callback to be a function");let w=()=>d.context.with(d.trace.setSpan(d.context.active(),u),j,this,...arguments);if(!(l.getConfig().enableTraceContextPropagation&&l._shouldInjectFor(a)))return w();let x=l._buildTraceparent(u);l._injectContextInfo(this,b,x).finally(w)}return Object.defineProperty(m,"length",{value:j.length,writable:!1}),m}}_patchCallbackQuery(a){return b=>function(c,d,e){return a(c),b.apply(this,arguments)}}}c.TediousInstrumentation=n},752273,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.TediousInstrumentation=void 0;var d=a.r(407612);Object.defineProperty(c,"TediousInstrumentation",{enumerable:!0,get:function(){return d.TediousInstrumentation}})},903664,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(752273),e=a.r(187845),f=a.r(309569),g=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),h="Tedious",i=f.generateInstrumentOnce(h,()=>new d.TediousInstrumentation({})),j=e.defineIntegration(()=>{let a;return{name:h,setupOnce(){let b=i();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let{description:b,data:c}=e.spanToJSON(a);if(!b||"mssql"!==c["db.system"])return;let d=b.split(" ")[0]||"";g.has(d)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.tedious")}))}}});c.instrumentTedious=i,c.tediousIntegration=j},824688,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.57.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"},998342,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(824688),g="generic-pool";class h extends e.InstrumentationBase{_isDisabled=!1;constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new e.InstrumentationNodeModuleDefinition(g,[">=3.0.0 <4"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquirePatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.4.0 <3"],a=>{let b=a.Pool;return(0,e.isWrapped)(b.prototype.acquire)&&this._unwrap(b.prototype,"acquire"),this._wrap(b.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),a},a=>{let b=a.Pool;return this._unwrap(b.prototype,"acquire"),a}),new e.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <2.4"],a=>(this._isDisabled=!1,(0,e.isWrapped)(a.Pool)&&this._unwrap(a,"Pool"),this._wrap(a,"Pool",this._poolWrapper.bind(this)),a),a=>(this._isDisabled=!0,a))]}_acquirePatcher(a){let b=this;return function(...c){let e=d.context.active(),f=b.tracer.startSpan("generic-pool.acquire",{},e);return d.context.with(d.trace.setSpan(e,f),()=>a.call(this,...c).then(a=>(f.end(),a),a=>{throw f.recordException(a),f.end(),a}))}}_poolWrapper(a){let b=this;return function(){let c=a.apply(this,arguments);return b._wrap(c,"acquire",b._acquireWithCallbacksPatcher.bind(b)),c}}_acquireWithCallbacksPatcher(a){let b=this;return function(c,e){if(b._isDisabled)return a.call(this,c,e);let f=d.context.active(),g=b.tracer.startSpan("generic-pool.acquire",{},f);return d.context.with(d.trace.setSpan(f,g),()=>{a.call(this,(a,b)=>{if(g.end(),c)return c(a,b)},e)})}}}c.GenericPoolInstrumentation=h},985162,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.GenericPoolInstrumentation=void 0;var d=a.r(998342);Object.defineProperty(c,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return d.GenericPoolInstrumentation}})},785663,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(985162),e=a.r(187845),f=a.r(309569),g="GenericPool",h=f.generateInstrumentOnce(g,()=>new d.GenericPoolInstrumentation({}));c.genericPoolIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>b.on("spanStart",a=>{let b=e.spanToJSON(a).description;("generic-pool.aquire"===b||"generic-pool.acquire"===b)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.generic_pool")}))}}}),c.instrumentGenericPool=h},951712,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.31.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-dataloader"},521492,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;let d=a.r(167300),e=a.r(832528),f=a.r(951712),g="dataloader";function h(a){return"Module"===a[Symbol.toStringTag]?a.default:a}class i extends d.InstrumentationBase{constructor(a={}){super(f.PACKAGE_NAME,f.PACKAGE_VERSION,a)}init(){return[new d.InstrumentationNodeModuleDefinition(g,[">=2.0.0 <3"],a=>{let b=h(a);return this._patchLoad(b.prototype),this._patchLoadMany(b.prototype),this._patchPrime(b.prototype),this._patchClear(b.prototype),this._patchClearAll(b.prototype),this._getPatchedConstructor(b)},a=>{let b=h(a);["load","loadMany","prime","clear","clearAll"].forEach(a=>{(0,d.isWrapped)(b.prototype[a])&&this._unwrap(b.prototype,a)})})]}shouldCreateSpans(){let a=this.getConfig();return void 0!==e.trace.getSpan(e.context.active())||!a.requireParentSpan}getSpanName(a,b){let c=a.name;return null==c?`${g}.${b}`:`${g}.${b} ${c}`}_wrapBatchLoadFn(a){let b=this;return function(...c){if(!b.isEnabled()||!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"batch"),{links:this._batch?.spanLinks},d);return e.context.with(e.trace.setSpan(d,f),()=>a.apply(this,c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a}))}}_getPatchedConstructor(a){let b=this,c=a.prototype;if(!b.isEnabled())return a;function e(...c){return"function"==typeof c[0]&&((0,d.isWrapped)(c[0])&&b._unwrap(c,0),c[0]=b._wrapBatchLoadFn(c[0])),a.apply(this,c)}return e.prototype=c,e}_patchLoad(a){(0,d.isWrapped)(a.load)&&this._unwrap(a,"load"),this._wrap(a,"load",this._getPatchedLoad.bind(this))}_getPatchedLoad(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"load"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>{let b=a.call(this,...c).then(a=>(f.end(),a)).catch(a=>{throw f.recordException(a),f.setStatus({code:e.SpanStatusCode.ERROR,message:a.message}),f.end(),a});return this._batch&&(this._batch.spanLinks||(this._batch.spanLinks=[]),this._batch.spanLinks.push({context:f.spanContext()})),b})}}_patchLoadMany(a){(0,d.isWrapped)(a.loadMany)&&this._unwrap(a,"loadMany"),this._wrap(a,"loadMany",this._getPatchedLoadMany.bind(this))}_getPatchedLoadMany(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"loadMany"),{kind:e.SpanKind.CLIENT},d);return e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c).then(a=>(f.end(),a)))}}_patchPrime(a){(0,d.isWrapped)(a.prime)&&this._unwrap(a,"prime"),this._wrap(a,"prime",this._getPatchedPrime.bind(this))}_getPatchedPrime(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"prime"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClear(a){(0,d.isWrapped)(a.clear)&&this._unwrap(a,"clear"),this._wrap(a,"clear",this._getPatchedClear.bind(this))}_getPatchedClear(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clear"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}_patchClearAll(a){(0,d.isWrapped)(a.clearAll)&&this._unwrap(a,"clearAll"),this._wrap(a,"clearAll",this._getPatchedClearAll.bind(this))}_getPatchedClearAll(a){let b=this;return function(...c){if(!b.shouldCreateSpans())return a.call(this,...c);let d=e.context.active(),f=b.tracer.startSpan(b.getSpanName(this,"clearAll"),{kind:e.SpanKind.CLIENT},d),g=e.context.with(e.trace.setSpan(d,f),()=>a.call(this,...c));return f.end(),g}}}c.DataloaderInstrumentation=i},621292,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.DataloaderInstrumentation=void 0;var d=a.r(521492);Object.defineProperty(c,"DataloaderInstrumentation",{enumerable:!0,get:function(){return d.DataloaderInstrumentation}})},141019,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(621292),e=a.r(187845),f=a.r(309569),g="Dataloader",h=f.generateInstrumentOnce(g,()=>new d.DataloaderInstrumentation({requireParentSpan:!0}));c.dataloaderIntegration=e.defineIntegration(()=>{let a;return{name:g,setupOnce(){let b=h();a=f.instrumentWhenWrapped(b)},setup(b){a?.(()=>{b.on("spanStart",a=>{let b=e.spanToJSON(a);b.description?.startsWith("dataloader")&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto.db.otel.dataloader"),("dataloader.load"===b.description||"dataloader.loadMany"===b.description||"dataloader.batch"===b.description)&&a.setAttribute(e.SEMANTIC_ATTRIBUTE_SENTRY_OP,"cache.get")})})}}}),c.instrumentDataloader=h},363619,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_NET_PEER_PORT=c.ATTR_NET_PEER_NAME=c.ATTR_MESSAGING_SYSTEM=c.ATTR_MESSAGING_OPERATION=void 0,c.ATTR_MESSAGING_OPERATION="messaging.operation",c.ATTR_MESSAGING_SYSTEM="messaging.system",c.ATTR_NET_PEER_NAME="net.peer.name",c.ATTR_NET_PEER_PORT="net.peer.port"},31854,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.ATTR_MESSAGING_CONVERSATION_ID=c.OLD_ATTR_MESSAGING_MESSAGE_ID=c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=c.ATTR_MESSAGING_URL=c.ATTR_MESSAGING_PROTOCOL_VERSION=c.ATTR_MESSAGING_PROTOCOL=c.MESSAGING_OPERATION_VALUE_PROCESS=c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=c.ATTR_MESSAGING_DESTINATION_KIND=c.ATTR_MESSAGING_DESTINATION=void 0,c.ATTR_MESSAGING_DESTINATION="messaging.destination",c.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind",c.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key",c.MESSAGING_OPERATION_VALUE_PROCESS="process",c.ATTR_MESSAGING_PROTOCOL="messaging.protocol",c.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version",c.ATTR_MESSAGING_URL="messaging.url",c.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic",c.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id",c.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"},215900,(a,b,c)=>{"use strict";var d;Object.defineProperty(c,"__esModule",{value:!0}),c.DEFAULT_CONFIG=c.EndOperation=void 0,(d=c.EndOperation||(c.EndOperation={})).AutoAck="auto ack",d.Ack="ack",d.AckAll="ackAll",d.Reject="reject",d.Nack="nack",d.NackAll="nackAll",d.ChannelClosed="channel closed",d.ChannelError="channel error",d.InstrumentationTimeout="instrumentation timeout",c.DEFAULT_CONFIG={consumeTimeoutMs:6e4,useLinksForConsume:!1}},486569,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.isConfirmChannelTracing=c.unmarkConfirmChannelTracing=c.markConfirmChannelTracing=c.getConnectionAttributesFromUrl=c.getConnectionAttributesFromServer=c.normalizeExchange=c.CONNECTION_ATTRIBUTES=c.CHANNEL_CONSUME_TIMEOUT_TIMER=c.CHANNEL_SPANS_NOT_ENDED=c.MESSAGE_STORED_SPAN=void 0;let d=a.r(832528),e=a.r(167300),f=a.r(357122),g=a.r(363619),h=a.r(31854);c.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span"),c.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended"),c.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer"),c.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");let i=(0,d.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel");c.normalizeExchange=a=>""!==a?a:"";let j=(a,b)=>a||("AMQP"===b?5672:5671),k=a=>{let b=a||"amqp";return(b.endsWith(":")?b.substring(0,b.length-1):b).toUpperCase()},l=(a,b,c,e)=>c?{[b]:c}:(d.diag.error(`amqplib instrumentation: could not extract connection attribute ${e} from user supplied url`,{url:a}),{});c.getConnectionAttributesFromServer=a=>{let b=a.serverProperties.product?.toLowerCase?.();return b?{[g.ATTR_MESSAGING_SYSTEM]:b}:{}},c.getConnectionAttributesFromUrl=(a,b)=>{let c={[h.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if("object"==typeof(a=a||"amqp://localhost")){let d=a,i=k(d?.protocol);Object.assign(c,{...l(a,h.ATTR_MESSAGING_PROTOCOL,i,"protocol")});let m=d?.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(a,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(a,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(d.port,i);b&e.SemconvStability.OLD&&Object.assign(c,l(a,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(a,f.ATTR_SERVER_PORT,n,"port"))}else{let i=a.replace(/:[^:@/]*@/,":***@");c[h.ATTR_MESSAGING_URL]=i;try{let a=new URL(i),d=k(a.protocol);Object.assign(c,{...l(i,h.ATTR_MESSAGING_PROTOCOL,d,"protocol")});let m=a.hostname||"localhost";b&e.SemconvStability.OLD&&Object.assign(c,{...l(i,g.ATTR_NET_PEER_NAME,m,"hostname")}),b&e.SemconvStability.STABLE&&Object.assign(c,{...l(i,f.ATTR_SERVER_ADDRESS,m,"hostname")});let n=j(a.port?parseInt(a.port):void 0,d);b&e.SemconvStability.OLD&&Object.assign(c,l(i,g.ATTR_NET_PEER_PORT,n,"port")),b&e.SemconvStability.STABLE&&Object.assign(c,l(i,f.ATTR_SERVER_PORT,n,"port"))}catch(a){d.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:i,err:a})}}return c},c.markConfirmChannelTracing=a=>a.setValue(i,!0),c.unmarkConfirmChannelTracing=a=>a.deleteValue(i),c.isConfirmChannelTracing=a=>!0===a.getValue(i)},557061,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.PACKAGE_NAME=c.PACKAGE_VERSION=void 0,c.PACKAGE_VERSION="0.61.0",c.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"},284258,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.AmqplibInstrumentation=void 0;let d=a.r(832528),e=a.r(498562),f=a.r(167300),g=a.r(363619),h=a.r(31854),i=a.r(215900),j=a.r(486569),k=a.r(557061),l=[">=0.5.5 <1"];class m extends f.InstrumentationBase{_netSemconvStability;constructor(a={}){super(k.PACKAGE_NAME,k.PACKAGE_VERSION,{...i.DEFAULT_CONFIG,...a}),this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,f.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(a={}){super.setConfig({...i.DEFAULT_CONFIG,...a})}init(){let a=new f.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),b=new f.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",l,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),c=new f.InstrumentationNodeModuleFile("amqplib/lib/connect.js",l,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new f.InstrumentationNodeModuleDefinition("amqplib",l,void 0,void 0,[a,c,b])}patchConnect(a){return a=this.unpatchConnect(a),(0,f.isWrapped)(a.connect)||this._wrap(a,"connect",this.getConnectPatch.bind(this)),a}unpatchConnect(a){return(0,f.isWrapped)(a.connect)&&this._unwrap(a,"connect"),a}patchChannelModel(a,b){return(0,f.isWrapped)(a.Channel.prototype.publish)||this._wrap(a.Channel.prototype,"publish",this.getPublishPatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.consume)||this._wrap(a.Channel.prototype,"consume",this.getConsumePatch.bind(this,b)),(0,f.isWrapped)(a.Channel.prototype.ack)||this._wrap(a.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,i.EndOperation.Ack)),(0,f.isWrapped)(a.Channel.prototype.nack)||this._wrap(a.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,i.EndOperation.Nack)),(0,f.isWrapped)(a.Channel.prototype.reject)||this._wrap(a.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,i.EndOperation.Reject)),(0,f.isWrapped)(a.Channel.prototype.ackAll)||this._wrap(a.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,i.EndOperation.AckAll)),(0,f.isWrapped)(a.Channel.prototype.nackAll)||this._wrap(a.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,i.EndOperation.NackAll)),(0,f.isWrapped)(a.Channel.prototype.emit)||this._wrap(a.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this)),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)||this._wrap(a.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,b)),a}unpatchChannelModel(a){return(0,f.isWrapped)(a.Channel.prototype.publish)&&this._unwrap(a.Channel.prototype,"publish"),(0,f.isWrapped)(a.Channel.prototype.consume)&&this._unwrap(a.Channel.prototype,"consume"),(0,f.isWrapped)(a.Channel.prototype.ack)&&this._unwrap(a.Channel.prototype,"ack"),(0,f.isWrapped)(a.Channel.prototype.nack)&&this._unwrap(a.Channel.prototype,"nack"),(0,f.isWrapped)(a.Channel.prototype.reject)&&this._unwrap(a.Channel.prototype,"reject"),(0,f.isWrapped)(a.Channel.prototype.ackAll)&&this._unwrap(a.Channel.prototype,"ackAll"),(0,f.isWrapped)(a.Channel.prototype.nackAll)&&this._unwrap(a.Channel.prototype,"nackAll"),(0,f.isWrapped)(a.Channel.prototype.emit)&&this._unwrap(a.Channel.prototype,"emit"),(0,f.isWrapped)(a.ConfirmChannel.prototype.publish)&&this._unwrap(a.ConfirmChannel.prototype,"publish"),a}getConnectPatch(a){let b=this;return function(c,d,e){return a.call(this,c,d,function(a,d){if(null==a){let a=(0,j.getConnectionAttributesFromUrl)(c,b._netSemconvStability),e=(0,j.getConnectionAttributesFromServer)(d);d[j.CONNECTION_ATTRIBUTES]={...a,...e}}e.apply(this,arguments)})}}getChannelEmitPatch(a){let b=this;return function(c){if("close"===c){b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelClosed,void 0);let a=this[j.CHANNEL_CONSUME_TIMEOUT_TIMER];a&&clearInterval(a),this[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else"error"===c&&b.endAllSpansOnChannel(this,!0,i.EndOperation.ChannelError,void 0);return a.apply(this,arguments)}}getAckAllPatch(a,b,c){let d=this;return function(e){return d.endAllSpansOnChannel(this,a,b,e),c.apply(this,arguments)}}getAckPatch(a,b,c){let d=this;return function(e,f,g){let h=b===i.EndOperation.Reject?f:g,k=this[j.CHANNEL_SPANS_NOT_ENDED]??[],l=k.findIndex(a=>a.msg===e);if(l<0)d.endConsumerSpan(e,a,b,h);else if(b!==i.EndOperation.Reject&&f){for(let c=0;c<=l;c++)d.endConsumerSpan(k[c].msg,a,b,h);k.splice(0,l+1)}else d.endConsumerSpan(e,a,b,h),k.splice(l,1);return c.apply(this,arguments)}}getConsumePatch(a,b){let c=this;return function(k,l,m){let n=this;if(!Object.prototype.hasOwnProperty.call(n,j.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:a}=c.getConfig();if(a){let b=setInterval(()=>{c.checkConsumeTimeoutOnChannel(n)},a);b.unref(),n[j.CHANNEL_CONSUME_TIMEOUT_TIMER]=b}n[j.CHANNEL_SPANS_NOT_ENDED]=[]}return arguments[1]=function(b){let o;if(!b)return l.call(this,b);let p=b.properties.headers??{},q=d.propagation.extract(d.ROOT_CONTEXT,p),r=b.fields?.exchange;if(c._config.useLinksForConsume){let a=q?d.trace.getSpan(q)?.spanContext():void 0;q=void 0,a&&(o=[{context:a}])}let s=c.tracer.startSpan(`${k} process`,{kind:d.SpanKind.CONSUMER,attributes:{...n?.connection?.[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:r,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:b.fields?.routingKey,[g.ATTR_MESSAGING_OPERATION]:h.MESSAGING_OPERATION_VALUE_PROCESS,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:b?.properties.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:b?.properties.correlationId},links:o},q),{consumeHook:t}=c.getConfig();t&&(0,f.safeExecuteInTheMiddle)(()=>t(s,{moduleVersion:a,msg:b}),a=>{a&&d.diag.error("amqplib instrumentation: consumerHook error",a)},!0),m?.noAck||(n[j.CHANNEL_SPANS_NOT_ENDED].push({msg:b,timeOfConsume:(0,e.hrTime)()}),b[j.MESSAGE_STORED_SPAN]=s);let u=q||d.ROOT_CONTEXT;d.context.with(d.trace.setSpan(u,s),()=>{l.call(this,b)}),m?.noAck&&(c.callConsumeEndHook(s,b,!1,i.EndOperation.AutoAck),s.end())},b.apply(this,arguments)}}getConfirmedPublishPatch(a,b){let c=this;return function(e,g,h,i,k){let{span:l,modifiedOptions:m}=c.createPublishSpan(c,e,g,this,i),{publishHook:n}=c.getConfig();n&&(0,f.safeExecuteInTheMiddle)(()=>n(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:m,isConfirmChannel:!0}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let o=(0,j.markConfirmChannelTracing)(d.context.active()),p=[...arguments];return p[3]=m,p[4]=d.context.bind((0,j.unmarkConfirmChannelTracing)(d.trace.setSpan(o,l)),function(b,j){try{k?.call(this,b,j)}finally{let{publishConfirmHook:j}=c.getConfig();j&&(0,f.safeExecuteInTheMiddle)(()=>j(l,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:i,isConfirmChannel:!0,confirmError:b}),a=>{a&&d.diag.error("amqplib instrumentation: publishConfirmHook error",a)},!0),b&&l.setStatus({code:d.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"}),l.end()}}),d.context.with(o,b.bind(this,...p))}}getPublishPatch(a,b){let c=this;return function(e,g,h,i){if((0,j.isConfirmChannelTracing)(d.context.active()))return b.apply(this,arguments);{let{span:j,modifiedOptions:k}=c.createPublishSpan(c,e,g,this,i),{publishHook:l}=c.getConfig();l&&(0,f.safeExecuteInTheMiddle)(()=>l(j,{moduleVersion:a,exchange:e,routingKey:g,content:h,options:k,isConfirmChannel:!1}),a=>{a&&d.diag.error("amqplib instrumentation: publishHook error",a)},!0);let m=[...arguments];m[3]=k;let n=b.apply(this,m);return j.end(),n}}}createPublishSpan(a,b,c,e,f){let g=(0,j.normalizeExchange)(b),i=a.tracer.startSpan(`publish ${g}`,{kind:d.SpanKind.PRODUCER,attributes:{...e.connection[j.CONNECTION_ATTRIBUTES],[h.ATTR_MESSAGING_DESTINATION]:b,[h.ATTR_MESSAGING_DESTINATION_KIND]:h.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[h.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:c,[h.OLD_ATTR_MESSAGING_MESSAGE_ID]:f?.messageId,[h.ATTR_MESSAGING_CONVERSATION_ID]:f?.correlationId}}),k=f??{};return k.headers=k.headers??{},d.propagation.inject(d.trace.setSpan(d.context.active(),i),k.headers),{span:i,modifiedOptions:k}}endConsumerSpan(a,b,c,e){let f=a[j.MESSAGE_STORED_SPAN];f&&(!1!==b&&f.setStatus({code:d.SpanStatusCode.ERROR,message:c!==i.EndOperation.ChannelClosed&&c!==i.EndOperation.ChannelError?`${c} called on message${!0===e?" with requeue":!1===e?" without requeue":""}`:c}),this.callConsumeEndHook(f,a,b,c),f.end(),a[j.MESSAGE_STORED_SPAN]=void 0)}endAllSpansOnChannel(a,b,c,d){(a[j.CHANNEL_SPANS_NOT_ENDED]??[]).forEach(a=>{this.endConsumerSpan(a.msg,b,c,d)}),a[j.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(a,b,c,e){let{consumeEndHook:g}=this.getConfig();g&&(0,f.safeExecuteInTheMiddle)(()=>g(a,{msg:b,rejected:c,endOperation:e}),a=>{a&&d.diag.error("amqplib instrumentation: consumerEndHook error",a)},!0)}checkConsumeTimeoutOnChannel(a){let b,c=(0,e.hrTime)(),d=a[j.CHANNEL_SPANS_NOT_ENDED]??[],{consumeTimeoutMs:f}=this.getConfig();for(b=0;b{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),c.EndOperation=c.DEFAULT_CONFIG=c.AmqplibInstrumentation=void 0;var d=a.r(284258);Object.defineProperty(c,"AmqplibInstrumentation",{enumerable:!0,get:function(){return d.AmqplibInstrumentation}});var e=a.r(215900);Object.defineProperty(c,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return e.DEFAULT_CONFIG}}),Object.defineProperty(c,"EndOperation",{enumerable:!0,get:function(){return e.EndOperation}})},372233,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(991031),e=a.r(187845),f=a.r(309569),g="Amqplib",h={consumeEndHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.consumer")},publishHook:a=>{f.addOriginToSpan(a,"auto.amqplib.otel.publisher")}},i=f.generateInstrumentOnce(g,()=>new d.AmqplibInstrumentation(h));c.amqplibIntegration=e.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentAmqplib=i},370289,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.INTEGRATION_NAME="VercelAI"},209207,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(370289),g=[">=3.0.0 <7"],h=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function i(a){"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)&&(function(a){for(let b of a){if(!("object"==typeof b&&null!==b&&"type"in b&&"error"in b&&"toolName"in b&&"toolCallId"in b&&"tool-error"===b.type&&b.error instanceof Error))continue;let a=e._INTERNAL_getSpanContextForToolCallId(b.toolCallId);a?e.withScope(c=>{c.setContext("trace",{trace_id:a.traceId,span_id:a.spanId}),c.setTag("vercel.ai.tool.name",b.toolName),c.setTag("vercel.ai.tool.callId",b.toolCallId),c.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})}):e.withScope(a=>{a.setTag("vercel.ai.tool.name",b.toolName),a.setTag("vercel.ai.tool.callId",b.toolCallId),a.setLevel("error"),e.captureException(b.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}(a.content),j(a.content))}function j(a){for(let b of a)"object"==typeof b&&null!==b&&"toolCallId"in b&&"string"==typeof b.toolCallId&&e._INTERNAL_cleanupToolCallSpanContext(b.toolCallId)}function k(a,b,c,d){return{recordInputs:a?.recordInputs!==void 0?a.recordInputs:void 0!==b.recordInputs?b.recordInputs:!0===c||d,recordOutputs:a?.recordOutputs!==void 0?a.recordOutputs:void 0!==b.recordOutputs?b.recordOutputs:!0===c||d}}class l extends d.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(a={}){super("@sentry/instrumentation-vercel-ai",e.SDK_VERSION,a),l.prototype.__init.call(this),l.prototype.__init2.call(this)}init(){return new d.InstrumentationNodeModuleDefinition("ai",g,this._patch.bind(this))}callWhenPatched(a){this._isPatched?a():this._callbacks.push(a)}_patch(a){this._isPatched=!0,this._callbacks.forEach(a=>a()),this._callbacks=[];let b=a=>new Proxy(a,{apply:(a,b,c)=>{let d=c[0].experimental_telemetry||{},g=d.isEnabled,h=e.getClient(),j=h?.getIntegrationByName(f.INTEGRATION_NAME),{recordInputs:l,recordOutputs:m}=k(j?.options,d,g,!!j&&!!h?.getOptions().sendDefaultPii);return c[0].experimental_telemetry={...d,isEnabled:void 0===g||g,recordInputs:l,recordOutputs:m},e.handleCallbackErrors(()=>Reflect.apply(a,b,c),a=>{a&&"object"==typeof a&&e.addNonEnumerableProperty(a,"_sentry_active_span",e.getActiveSpan())},()=>{},a=>{i(a)})}});if("[object Module]"===Object.prototype.toString.call(a)){for(let c of h)null!=a[c]&&(a[c]=b(a[c]));return a}{let c=h.reduce((c,d)=>(null!=a[d]&&(c[d]=b(a[d])),c),{});return{...a,...c}}}}c.SentryVercelAiInstrumentation=l,c.cleanupToolCallSpanContexts=j,c.determineRecordingSettings=k,c.processToolCallResults=i},602959,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(370289),g=a.r(209207),h=e.generateInstrumentOnce(f.INTEGRATION_NAME,()=>new g.SentryVercelAiInstrumentation({})),i=d.defineIntegration((a={})=>{let b;return{name:f.INTEGRATION_NAME,options:a,setupOnce(){b=h()},afterAllSetup(c){let e;a.force??(e=c.getIntegrationByName("Modules"),!!e?.getModules?.()?.ai)?d.addVercelAiProcessors(c):b?.callWhenPatched(()=>d.addVercelAiProcessors(c))}}});c.instrumentVercelAi=h,c.vercelAIIntegration=i},339499,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=4.0.0 <7"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-openai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("openai",f,this._patch.bind(this))}_patch(a){let b=a;return b=this._patchClient(b,"OpenAI"),b=this._patchClient(b,"AzureOpenAI")}_patchClient(a,b){let c=a[b];if(!c)return a;let d=this.getConfig(),f=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.OPENAI_INTEGRATION_NAME))return Reflect.construct(c,a);let b=Reflect.construct(c,a);return e.instrumentOpenAiClient(b,d)};for(let a of(Object.setPrototypeOf(f,c),Object.setPrototypeOf(f.prototype,c.prototype),Object.getOwnPropertyNames(c)))if(!["length","name","prototype"].includes(a)){let b=Object.getOwnPropertyDescriptor(c,a);b&&Object.defineProperty(f,a,b)}try{a[b]=f}catch{Object.defineProperty(a,b,{value:f,writable:!0,configurable:!0,enumerable:!0})}if(a.default===c)try{a.default=f}catch{Object.defineProperty(a,"default",{value:f,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryOpenAiInstrumentation=g},783325,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(339499),g=e.generateInstrumentOnce(d.OPENAI_INTEGRATION_NAME,a=>new f.SentryOpenAiInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.OPENAI_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentOpenAi=g,c.openAIIntegration=h},297431,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.19.2 <1.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-anthropic-ai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",f,this._patch.bind(this))}_patch(a){let b=a.Anthropic,c=this.getConfig(),d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.ANTHROPIC_AI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentAnthropicAiClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}try{a.Anthropic=d}catch{Object.defineProperty(a,"Anthropic",{value:d,writable:!0,configurable:!0,enumerable:!0})}if(a.default===b)try{a.default=d}catch{Object.defineProperty(a,"default",{value:d,writable:!0,configurable:!0,enumerable:!0})}return a}}c.SentryAnthropicAiInstrumentation=g},876254,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(297431),g=e.generateInstrumentOnce(d.ANTHROPIC_AI_INTEGRATION_NAME,a=>new f.SentryAnthropicAiInstrumentation(a));c.anthropicAIIntegration=d.defineIntegration((a={})=>({name:d.ANTHROPIC_AI_INTEGRATION_NAME,options:a,setupOnce(){g(a)}})),c.instrumentAnthropicAi=g},702821,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.10.0 <2"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-google-genai",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@google/genai",f,a=>this._patch(a),a=>a,[new d.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",f,a=>this._patch(a),a=>a)])}_patch(a){let b=a.GoogleGenAI,c=this.getConfig();if("function"!=typeof b)return a;let d=function(...a){if(e._INTERNAL_shouldSkipAiProviderWrapping(e.GOOGLE_GENAI_INTEGRATION_NAME))return Reflect.construct(b,a);let d=Reflect.construct(b,a);return e.instrumentGoogleGenAIClient(d,c)};for(let a of(Object.setPrototypeOf(d,b),Object.setPrototypeOf(d.prototype,b.prototype),Object.getOwnPropertyNames(b)))if(!["length","name","prototype"].includes(a)){let c=Object.getOwnPropertyDescriptor(b,a);c&&Object.defineProperty(d,a,c)}return e.replaceExports(a,"GoogleGenAI",d),a}}c.SentryGoogleGenAiInstrumentation=g},2031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(702821),g=e.generateInstrumentOnce(d.GOOGLE_GENAI_INTEGRATION_NAME,a=>new f.SentryGoogleGenAiInstrumentation(a));c.googleGenAIIntegration=d.defineIntegration((a={})=>({name:d.GOOGLE_GENAI_INTEGRATION_NAME,setupOnce(){g(a)}})),c.instrumentGoogleGenAI=g},721669,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.1.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langchain",e.SDK_VERSION,a)}init(){let a=[];for(let b of["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"])a.push(new d.InstrumentationNodeModuleDefinition(b,f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile(`${b}/dist/index.cjs`,f,this._patch.bind(this),a=>a)]));return a.push(new d.InstrumentationNodeModuleDefinition("langchain",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",f,this._patch.bind(this),a=>a)])),a}_patch(a){e._INTERNAL_skipAiProviderWrapping([e.OPENAI_INTEGRATION_NAME,e.ANTHROPIC_AI_INTEGRATION_NAME,e.GOOGLE_GENAI_INTEGRATION_NAME]);let b=e.createLangChainCallbackHandler(this.getConfig());return this._patchRunnableMethods(a,b),a}_patchRunnableMethods(a,b){let c=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],d=Object.values(a.universal_exports??a).find(a=>"function"==typeof a&&c.includes(a.name));if(!d)return;let e=d.prototype;if(!e.__sentry_patched__)for(let a of(e.__sentry_patched__=!0,["invoke","stream","batch"])){let c=e[a];"function"==typeof c&&(e[a]=function(a,b,c){return new Proxy(a,{apply(a,c,d){var e,f;let g=d[1];(!g||"object"!=typeof g||Array.isArray(g))&&(g={},d[1]=g);let h=(e=g.callbacks,f=b,e?Array.isArray(e)?e.includes(f)?e:[...e,f]:"object"==typeof e?[e,f]:e:[f]);return g.callbacks=h,Reflect.apply(a,c,d)}})}(c,b))}}}c.SentryLangChainInstrumentation=g},252877,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(721669),g=e.generateInstrumentOnce(d.LANGCHAIN_INTEGRATION_NAME,a=>new f.SentryLangChainInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGCHAIN_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangChain=g,c.langChainIntegration=h},750457,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=[">=0.0.0 <2.0.0"];class g extends d.InstrumentationBase{constructor(a={}){super("@sentry/instrumentation-langgraph",e.SDK_VERSION,a)}init(){return new d.InstrumentationNodeModuleDefinition("@langchain/langgraph",f,this._patch.bind(this),a=>a,[new d.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",f,this._patch.bind(this),a=>a)])}_patch(a){return a.StateGraph&&"function"==typeof a.StateGraph&&e.instrumentLangGraph(a.StateGraph.prototype,this.getConfig()),a}}c.SentryLangGraphInstrumentation=g},365497,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(750457),g=e.generateInstrumentOnce(d.LANGGRAPH_INTEGRATION_NAME,a=>new f.SentryLangGraphInstrumentation(a)),h=d.defineIntegration((a={})=>({name:d.LANGGRAPH_INTEGRATION_NAME,setupOnce(){g(a)}}));c.instrumentLangGraph=g,c.langGraphIntegration=h},571160,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The launchDarklyIntegration() can only be used in the browser.")}),{name:"LaunchDarkly"}));c.buildLaunchDarklyFlagUsedHandlerShim=function(){return d.isBrowser()||d.consoleSandbox(()=>{console.warn("The buildLaunchDarklyFlagUsedHandler() can only be used in the browser.")}),{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:()=>null}},c.launchDarklyIntegrationShim=e},980419,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The openFeatureIntegration() can only be used in the browser.")}),{name:"OpenFeature"}));c.OpenFeatureIntegrationHookShim=class{constructor(){d.isBrowser()||d.consoleSandbox(()=>{console.warn("The OpenFeatureIntegrationHook can only be used in the browser.")})}after(){}error(){}},c.openFeatureIntegrationShim=e},351649,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.statsigIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The statsigIntegration() can only be used in the browser.")}),{name:"Statsig"}))},420316,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.unleashIntegrationShim=d.defineIntegration(a=>(d.isBrowser()||d.consoleSandbox(()=>{console.warn("The unleashIntegration() can only be used in the browser.")}),{name:"Unleash"}))},535383,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.growthbookIntegrationShim=a.r(187845).growthbookIntegration},41036,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(761095),e=a.r(832528),f=a.r(167300),g=a.r(357122);function h(a,b,c,d,e){var f,g,h,l,m,n,o,p;return i(a,c),b(a,"addDoc",(f=d,g=e,function(a){return function(b,c){let d=k(f,"addDoc",b);return g(d),j(d,()=>a(b,c))}})),b(a,"getDocs",(h=d,l=e,function(a){return function(b){let c=k(h,"getDocs",b);return l(c),j(c,()=>a(b))}})),b(a,"setDoc",(m=d,n=e,function(a){return function(b,c,d){let e=k(m,"setDoc",b.parent||b);return n(e),j(e,()=>void 0!==d?a(b,c,d):a(b,c))}})),b(a,"deleteDoc",(o=d,p=e,function(a){return function(b){let c=k(o,"deleteDoc",b.parent||b);return p(c),j(c,()=>a(b))}})),a}function i(a,b){for(let c of["addDoc","getDocs","setDoc","deleteDoc"])f.isWrapped(a[c])&&b(a,c);return a}function j(a,b){return e.context.with(e.trace.setSpan(e.context.active(),a),()=>f.safeExecuteInTheMiddle(()=>b(),b=>{b&&a.recordException(b),a.end()},!0))}function k(a,b,c){let d=a.startSpan(`${b} ${c.path}`,{kind:e.SpanKind.CLIENT});return function(a,b){let c=b.firestore.app,d=c.options,e=(b.firestore.toJSON()||{}).settings||{},f={[g.ATTR_DB_COLLECTION_NAME]:b.path,[g.ATTR_DB_NAMESPACE]:c.name,[g.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":b.type,"firebase.firestore.options.projectId":d.projectId,"firebase.firestore.options.appId":d.appId,"firebase.firestore.options.messagingSenderId":d.messagingSenderId,"firebase.firestore.options.storageBucket":d.storageBucket},{address:h,port:i}=l(e);h&&(f[g.ATTR_SERVER_ADDRESS]=h),i&&(f[g.ATTR_SERVER_PORT]=i),a.setAttributes(f)}(d,c),d.setAttribute(g.ATTR_DB_OPERATION_NAME,b),d}function l(a){let b,c;if("string"==typeof a.host)if(a.host.startsWith("[")){if(a.host.endsWith("]"))b=a.host.replace(/^\[|\]$/g,"");else if(a.host.includes("]:")){let d=a.host.lastIndexOf(":");-1!==d&&(b=a.host.slice(1,d).replace(/^\[|\]$/g,""),c=a.host.slice(d+1))}}else if(d.isIPv6(a.host))b=a.host;else{let d=a.host.lastIndexOf(":");-1!==d?(b=a.host.slice(0,d),c=a.host.slice(d+1)):b=a.host}return{address:b,port:c?parseInt(c,10):void 0}}c.getPortAndAddress=l,c.patchFirestore=function(a,b,c,d,g){let j=()=>{},k=g.firestoreSpanCreationHook;"function"==typeof k&&(j=a=>{f.safeExecuteInTheMiddle(()=>k(a),a=>{a&&e.diag.error(a?.message)},!0)});let l=new f.InstrumentationNodeModuleDefinition("@firebase/firestore",b,b=>h(b,c,d,a,j));for(let e of["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"])l.files.push(new f.InstrumentationNodeModuleFile(e,b,b=>h(b,c,d,a,j),a=>i(a,d)));return l}},647427,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(167300);function f(a,b,c){return function(e){return function(...f){let g="function"==typeof f[0]?f[0]:f[1],h="function"==typeof f[0]?void 0:f[0];if(!g)return e.call(this,...f);let i=async function(...e){let f=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",h=a.startSpan(`firebase.function.${c}`,{kind:d.SpanKind.SERVER}),i={"faas.name":f,"faas.trigger":c,"faas.provider":"firebase"};return process.env.GCLOUD_PROJECT&&(i["cloud.project_id"]=process.env.GCLOUD_PROJECT),process.env.EVENTARC_CLOUD_EVENT_SOURCE&&(i["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE),h.setAttributes(i),b?.requestHook?.(h),d.context.with(d.trace.setSpan(d.context.active(),h),async()=>{let a,c;try{c=await g.apply(this,e)}catch(b){a=b}if(b?.responseHook?.(h,a),a&&h.recordException(a),h.end(),a)throw await b?.errorHook?.(h,a),a;return c})};return h?e.call(this,h,i):e.call(this,i)}}}function g(a,b){for(let c of["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"])e.isWrapped(a[c])&&b(a,c);return a}c.patchFunctions=function(a,b,c,h,i){let j=()=>{},k=()=>{},l=i.functions?.errorHook,m=i.functions?.requestHook,n=i.functions?.responseHook;"function"==typeof n&&(k=(a,b)=>{e.safeExecuteInTheMiddle(()=>n(a,b),a=>{a&&d.diag.error(a?.message)},!0)}),"function"==typeof m&&(j=a=>{e.safeExecuteInTheMiddle(()=>m(a),a=>{a&&d.diag.error(a?.message)},!0)});let o=new e.InstrumentationNodeModuleDefinition("firebase-functions",b);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:d,triggerType:i})=>{o.files.push(new e.InstrumentationNodeModuleFile(d,b,b=>(function(a,b,c,d,e,h){switch(g(a,c),h){case"function":b(a,"onRequest",f(d,e,"http.request")),b(a,"onCall",f(d,e,"http.call"));break;case"firestore":b(a,"onDocumentCreated",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdated",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeleted",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWritten",f(d,e,"firestore.document.written")),b(a,"onDocumentCreatedWithAuthContext",f(d,e,"firestore.document.created")),b(a,"onDocumentUpdatedWithAuthContext",f(d,e,"firestore.document.updated")),b(a,"onDocumentDeletedWithAuthContext",f(d,e,"firestore.document.deleted")),b(a,"onDocumentWrittenWithAuthContext",f(d,e,"firestore.document.written"));break;case"scheduler":b(a,"onSchedule",f(d,e,"scheduler.scheduled"));break;case"storage":b(a,"onObjectFinalized",f(d,e,"storage.object.finalized")),b(a,"onObjectArchived",f(d,e,"storage.object.archived")),b(a,"onObjectDeleted",f(d,e,"storage.object.deleted")),b(a,"onObjectMetadataUpdated",f(d,e,"storage.object.metadataUpdated"))}return a})(b,c,h,a,{requestHook:j,responseHook:k,errorHook:l},i),a=>g(a,h)))}),o},c.patchV2Functions=f},562446,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(167300),e=a.r(187845),f=a.r(41036),g=a.r(647427),h={},i=[">=3.0.0 <5"],j=[">=6.0.0 <7"];class k extends d.InstrumentationBase{constructor(a=h){super("@sentry/instrumentation-firebase",e.SDK_VERSION,a)}setConfig(a={}){super.setConfig({...h,...a})}init(){let a=[];return a.push(f.patchFirestore(this.tracer,i,this._wrap,this._unwrap,this.getConfig())),a.push(g.patchFunctions(this.tracer,j,this._wrap,this._unwrap,this.getConfig())),a}}c.FirebaseInstrumentation=k},562382,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(562446),g="Firebase",h={firestoreSpanCreationHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.firestore"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"db.query")},functions:{requestHook:a=>{e.addOriginToSpan(a,"auto.firebase.otel.functions"),a.setAttribute(d.SEMANTIC_ATTRIBUTE_SENTRY_OP,"http.request")},errorHook:async(a,b)=>{b&&(d.captureException(b,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d.flush(2e3))}}},i=e.generateInstrumentOnce(g,()=>new f.FirebaseInstrumentation(h));c.firebaseIntegration=d.defineIntegration(()=>({name:g,setupOnce(){i()}})),c.instrumentFirebase=i},426414,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(948678),e=a.r(372233),f=a.r(876254),g=a.r(617413),h=a.r(31953),i=a.r(533819),j=a.r(562382),k=a.r(785663),l=a.r(2031),m=a.r(534849),n=a.r(969899),o=a.r(27047),p=a.r(142670),q=a.r(550583),r=a.r(252877),s=a.r(365497),t=a.r(268935),u=a.r(228663),v=a.r(720382),w=a.r(370840),x=a.r(592734),y=a.r(783325),z=a.r(257141),A=a.r(870983),B=a.r(770948),C=a.r(461054),D=a.r(903664),E=a.r(602959);c.getAutoPerformanceIntegrations=function(){return[h.expressIntegration(),i.fastifyIntegration(),m.graphqlIntegration(),o.honoIntegration(),u.mongoIntegration(),v.mongooseIntegration(),w.mysqlIntegration(),x.mysql2Integration(),C.redisIntegration(),z.postgresIntegration(),B.prismaIntegration(),n.hapiIntegration(),q.koaIntegration(),g.connectIntegration(),D.tediousIntegration(),k.genericPoolIntegration(),p.kafkaIntegration(),e.amqplibIntegration(),t.lruMemoizerIntegration(),r.langChainIntegration(),s.langGraphIntegration(),E.vercelAIIntegration(),y.openAIIntegration(),f.anthropicAIIntegration(),l.googleGenAIIntegration(),A.postgresJsIntegration(),j.firebaseIntegration()]},c.getOpenTelemetryInstrumentationToPreload=function(){return[d.instrumentSentryHttp,d.instrumentOtelHttp,h.instrumentExpress,g.instrumentConnect,i.instrumentFastify,i.instrumentFastifyV3,n.instrumentHapi,o.instrumentHono,p.instrumentKafka,q.instrumentKoa,t.instrumentLruMemoizer,u.instrumentMongo,v.instrumentMongoose,w.instrumentMysql,x.instrumentMysql2,z.instrumentPostgres,n.instrumentHapi,m.instrumentGraphql,C.instrumentRedis,D.instrumentTedious,k.instrumentGenericPool,e.instrumentAmqplib,r.instrumentLangChain,E.instrumentVercelAi,y.instrumentOpenAi,A.instrumentPostgresJs,j.instrumentFirebase,f.instrumentAnthropicAi,l.instrumentGoogleGenAI,s.instrumentLangGraph]}},319410,a=>{"use strict";let b;a.s([],485393),a.i(485393);var c=a.i(984414),d=a.i(928530),e=a.i(307554),f=a.i(39342);let g=new class{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(a){let b={},d=(0,f.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),g=(0,f.getStringFromEnv)("OTEL_SERVICE_NAME");if(d)try{let a=this._parseResourceAttributes(d);Object.assign(b,a)}catch(a){c.diag.debug(`EnvDetector failed: ${a instanceof Error?a.message:a}`)}return g&&(b[e.ATTR_SERVICE_NAME]=g),{attributes:b}}_parseResourceAttributes(a){if(!a)return{};let b={};for(let c of a.split(this._COMMA_SEPARATOR)){let a,d,e=c.split(this._LABEL_KEY_VALUE_SPLITTER);if(2!==e.length)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${c}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[f,g]=e,h=f.trim(),i=g.trim();if(0===h.length)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${c}".`);try{a=decodeURIComponent(h),d=decodeURIComponent(i)}catch(a){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${c}": ${a instanceof Error?a.message:a}`)}if(a.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${a}".`);if(d.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${a}".`);b[a]=d}return b}};var h=a.i(446786),i=a.i(605365);async function j(){if(!b)switch(i.platform){case"darwin":b=(await a.A(939510)).getMachineId;break;case"linux":b=(await a.A(962327)).getMachineId;break;case"freebsd":b=(await a.A(665688)).getMachineId;break;case"win32":b=(await a.A(256493)).getMachineId;break;default:b=(await a.A(205639)).getMachineId}return b()}let k=new class{detect(a){return{attributes:{"host.name":(0,h.hostname)(),"host.arch":(a=>{switch(a){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return a}})((0,h.arch)()),"host.id":j()}}}},l=new class{detect(a){return{attributes:{"os.type":(a=>{switch(a){case"sunos":return"solaris";case"win32":return"windows";default:return a}})((0,h.platform)()),"os.version":(0,h.release)()}}}},m=new class{detect(a){let b={"process.pid":process.pid,"process.executable.name":process.title,"process.executable.path":process.execPath,"process.command_args":[process.argv[0],...process.execArgv,...process.argv.slice(1)],"process.runtime.version":process.versions.node,"process.runtime.name":"nodejs","process.runtime.description":"Node.js"};process.argv.length>1&&(b["process.command"]=process.argv[1]);try{let a=h.userInfo();b["process.owner"]=a.username}catch(a){c.diag.debug(`error obtaining process owner: ${a}`)}return{attributes:b}}};var n=a.i(254799);let o=new class{detect(a){return{attributes:{"service.instance.id":(0,n.randomUUID)()}}}};var p=a.i(726435);a.s(["defaultResource",()=>d.defaultResource,"defaultServiceName",()=>p.defaultServiceName,"detectResources",0,(a={})=>(a.detectors||[]).map(b=>{try{let e=(0,d.resourceFromDetectedResource)(b.detect(a));return c.diag.debug(`${b.constructor.name} found resource.`,e),e}catch(a){return c.diag.debug(`${b.constructor.name} failed: ${a.message}`),(0,d.emptyResource)()}}).reduce((a,b)=>a.merge(b),(0,d.emptyResource)()),"emptyResource",()=>d.emptyResource,"envDetector",0,g,"hostDetector",0,k,"osDetector",0,l,"processDetector",0,m,"resourceFromAttributes",()=>d.resourceFromAttributes,"serviceInstanceIdDetector",0,o],319410)},562622,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(319410),f=a.r(409633),g=a.r(357122),h=a.r(187845),i=a.r(309569),j=a.r(221598),k=a.r(852223),l=a.r(426414);function m(a,b={}){let c=new f.BasicTracerProvider({sampler:new j.SentrySampler(a),resource:e.defaultResource().merge(e.resourceFromAttributes({[g.ATTR_SERVICE_NAME]:"node",[g.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[g.ATTR_SERVICE_VERSION]:h.SDK_VERSION})),forceFlushTimeoutMillis:500,spanProcessors:[new j.SentrySpanProcessor({timeout:n(a.getOptions().maxSpanWaitDuration)}),...b.spanProcessors||[]]});d.trace.setGlobalTracerProvider(c),d.propagation.setGlobalPropagator(new j.SentryPropagator);let k=new i.SentryContextManager;return d.context.setGlobalContextManager(k),[c,k.getAsyncLocalStorageLookup()]}function n(a){if(null!=a){if(a>1e6)return k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` is too high, using the maximum value of 1000000"),1e6;if(a<=0||Number.isNaN(a)){k.DEBUG_BUILD&&h.debug.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return a}}c._clampSpanProcessorTimeout=n,c.initOpenTelemetry=function(a,b={}){a.getOptions().debug&&i.setupOpenTelemetryLogger();let[c,d]=m(a,b);a.traceProvider=c,a.asyncLocalStorageLookup=d},c.preloadOpenTelemetry=function(a={}){var b;let c,{debug:d}=a;d&&h.debug.enable(),i.initializeEsmLoader(),(b=a.integrations,c=l.getOpenTelemetryInstrumentationToPreload(),b?c.filter(a=>{let c=a.id;return b.some(a=>c===a||c.startsWith(`${a}.`))}):c).forEach(a=>{a(),d&&h.debug.log(`[Sentry] Preloaded ${a.id} instrumentation`)})},c.setupOtel=m},969031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(309569),f=a.r(948678),g=a.r(412292),h=a.r(426414),i=a.r(562622);function j(){return e.getDefaultIntegrations().filter(a=>"Http"!==a.name&&"NodeFetch"!==a.name).concat(f.httpIntegration(),g.nativeNodeFetchIntegration())}function k(a){return[...j(),...d.hasSpansEnabled(a)?h.getAutoPerformanceIntegrations():[]]}function l(a={},b){d.applySdkMetadata(a,"node");let c=e.init({...a,defaultIntegrations:a.defaultIntegrations??b(a)});return c&&!a.skipOpenTelemetrySetup&&(i.initOpenTelemetry(c,{spanProcessors:a.openTelemetrySpanProcessors}),e.validateOpenTelemetrySetup()),c}c.getDefaultIntegrations=k,c.getDefaultIntegrationsWithoutPerformance=j,c.init=function(a={}){return l(a,k)},c.initWithoutDefaultIntegrations=function(a={}){return l(a,()=>[])}},848074,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(948678),e=a.r(412292),f=a.r(56551),g=a.r(31953),h=a.r(533819),i=a.r(534849),j=a.r(142670),k=a.r(268935),l=a.r(228663),m=a.r(720382),n=a.r(370840),o=a.r(592734),p=a.r(461054),q=a.r(257141),r=a.r(870983),s=a.r(770948),t=a.r(969899),u=a.r(27047),v=a.r(550583),w=a.r(617413),x=a.r(523682),y=a.r(903664),z=a.r(785663),A=a.r(141019),B=a.r(372233),C=a.r(602959),D=a.r(783325),E=a.r(876254),F=a.r(2031),G=a.r(252877),H=a.r(365497),I=a.r(571160),J=a.r(980419),K=a.r(351649),L=a.r(420316),M=a.r(535383),N=a.r(562382),O=a.r(969031),P=a.r(562622),Q=a.r(426414),R=a.r(221598),S=a.r(187845),T=a.r(309569);c.httpIntegration=d.httpIntegration,c.nativeNodeFetchIntegration=e.nativeNodeFetchIntegration,c.fsIntegration=f.fsIntegration,c.expressErrorHandler=g.expressErrorHandler,c.expressIntegration=g.expressIntegration,c.setupExpressErrorHandler=g.setupExpressErrorHandler,c.fastifyIntegration=h.fastifyIntegration,c.setupFastifyErrorHandler=h.setupFastifyErrorHandler,c.graphqlIntegration=i.graphqlIntegration,c.kafkaIntegration=j.kafkaIntegration,c.lruMemoizerIntegration=k.lruMemoizerIntegration,c.mongoIntegration=l.mongoIntegration,c.mongooseIntegration=m.mongooseIntegration,c.mysqlIntegration=n.mysqlIntegration,c.mysql2Integration=o.mysql2Integration,c.redisIntegration=p.redisIntegration,c.postgresIntegration=q.postgresIntegration,c.postgresJsIntegration=r.postgresJsIntegration,c.prismaIntegration=s.prismaIntegration,c.hapiIntegration=t.hapiIntegration,c.setupHapiErrorHandler=t.setupHapiErrorHandler,c.honoIntegration=u.honoIntegration,c.setupHonoErrorHandler=u.setupHonoErrorHandler,c.koaIntegration=v.koaIntegration,c.setupKoaErrorHandler=v.setupKoaErrorHandler,c.connectIntegration=w.connectIntegration,c.setupConnectErrorHandler=w.setupConnectErrorHandler,c.knexIntegration=x.knexIntegration,c.tediousIntegration=y.tediousIntegration,c.genericPoolIntegration=z.genericPoolIntegration,c.dataloaderIntegration=A.dataloaderIntegration,c.amqplibIntegration=B.amqplibIntegration,c.vercelAIIntegration=C.vercelAIIntegration,c.openAIIntegration=D.openAIIntegration,c.anthropicAIIntegration=E.anthropicAIIntegration,c.googleGenAIIntegration=F.googleGenAIIntegration,c.langChainIntegration=G.langChainIntegration,c.langGraphIntegration=H.langGraphIntegration,c.buildLaunchDarklyFlagUsedHandler=I.buildLaunchDarklyFlagUsedHandlerShim,c.launchDarklyIntegration=I.launchDarklyIntegrationShim,c.OpenFeatureIntegrationHook=J.OpenFeatureIntegrationHookShim,c.openFeatureIntegration=J.openFeatureIntegrationShim,c.statsigIntegration=K.statsigIntegrationShim,c.unleashIntegration=L.unleashIntegrationShim,c.growthbookIntegration=M.growthbookIntegrationShim,c.firebaseIntegration=N.firebaseIntegration,c.getDefaultIntegrations=O.getDefaultIntegrations,c.getDefaultIntegrationsWithoutPerformance=O.getDefaultIntegrationsWithoutPerformance,c.init=O.init,c.initWithoutDefaultIntegrations=O.initWithoutDefaultIntegrations,c.initOpenTelemetry=P.initOpenTelemetry,c.preloadOpenTelemetry=P.preloadOpenTelemetry,c.getAutoPerformanceIntegrations=Q.getAutoPerformanceIntegrations,c.setNodeAsyncContextStrategy=R.setOpenTelemetryContextAsyncContextStrategy,c.SDK_VERSION=S.SDK_VERSION,c.SEMANTIC_ATTRIBUTE_SENTRY_OP=S.SEMANTIC_ATTRIBUTE_SENTRY_OP,c.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=S.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,c.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=S.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,c.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=S.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,c.Scope=S.Scope,c.addBreadcrumb=S.addBreadcrumb,c.addEventProcessor=S.addEventProcessor,c.addIntegration=S.addIntegration,c.captureCheckIn=S.captureCheckIn,c.captureConsoleIntegration=S.captureConsoleIntegration,c.captureEvent=S.captureEvent,c.captureException=S.captureException,c.captureFeedback=S.captureFeedback,c.captureMessage=S.captureMessage,c.captureSession=S.captureSession,c.close=S.close,c.consoleIntegration=S.consoleIntegration,c.consoleLoggingIntegration=S.consoleLoggingIntegration,c.continueTrace=S.continueTrace,c.createConsolaReporter=S.createConsolaReporter,c.createLangChainCallbackHandler=S.createLangChainCallbackHandler,c.createTransport=S.createTransport,c.dedupeIntegration=S.dedupeIntegration,c.endSession=S.endSession,c.eventFiltersIntegration=S.eventFiltersIntegration,c.extraErrorDataIntegration=S.extraErrorDataIntegration,c.featureFlagsIntegration=S.featureFlagsIntegration,c.flush=S.flush,c.functionToStringIntegration=S.functionToStringIntegration,c.getActiveSpan=S.getActiveSpan,c.getClient=S.getClient,c.getCurrentScope=S.getCurrentScope,c.getGlobalScope=S.getGlobalScope,c.getIsolationScope=S.getIsolationScope,c.getRootSpan=S.getRootSpan,c.getSpanDescendants=S.getSpanDescendants,c.getSpanStatusFromHttpCode=S.getSpanStatusFromHttpCode,c.getTraceData=S.getTraceData,c.getTraceMetaTags=S.getTraceMetaTags,c.httpHeadersToSpanAttributes=S.httpHeadersToSpanAttributes,c.inboundFiltersIntegration=S.inboundFiltersIntegration,c.instrumentAnthropicAiClient=S.instrumentAnthropicAiClient,c.instrumentGoogleGenAIClient=S.instrumentGoogleGenAIClient,c.instrumentLangGraph=S.instrumentLangGraph,c.instrumentOpenAiClient=S.instrumentOpenAiClient,c.instrumentStateGraphCompile=S.instrumentStateGraphCompile,c.instrumentSupabaseClient=S.instrumentSupabaseClient,c.isEnabled=S.isEnabled,c.isInitialized=S.isInitialized,c.lastEventId=S.lastEventId,c.linkedErrorsIntegration=S.linkedErrorsIntegration,c.parameterize=S.parameterize,c.profiler=S.profiler,c.requestDataIntegration=S.requestDataIntegration,c.rewriteFramesIntegration=S.rewriteFramesIntegration,c.setContext=S.setContext,c.setConversationId=S.setConversationId,c.setCurrentClient=S.setCurrentClient,c.setExtra=S.setExtra,c.setExtras=S.setExtras,c.setHttpStatus=S.setHttpStatus,c.setMeasurement=S.setMeasurement,c.setTag=S.setTag,c.setTags=S.setTags,c.setUser=S.setUser,c.spanToBaggageHeader=S.spanToBaggageHeader,c.spanToJSON=S.spanToJSON,c.spanToTraceHeader=S.spanToTraceHeader,c.startInactiveSpan=S.startInactiveSpan,c.startNewTrace=S.startNewTrace,c.startSession=S.startSession,c.startSpan=S.startSpan,c.startSpanManual=S.startSpanManual,c.supabaseIntegration=S.supabaseIntegration,c.suppressTracing=S.suppressTracing,c.trpcMiddleware=S.trpcMiddleware,c.updateSpanName=S.updateSpanName,c.winterCGHeadersToDict=S.winterCGHeadersToDict,c.withActiveSpan=S.withActiveSpan,c.withIsolationScope=S.withIsolationScope,c.withMonitor=S.withMonitor,c.withScope=S.withScope,c.wrapMcpServerWithSentry=S.wrapMcpServerWithSentry,c.zodErrorsIntegration=S.zodErrorsIntegration,c.NODE_VERSION=T.NODE_VERSION,c.NodeClient=T.NodeClient,c.SentryContextManager=T.SentryContextManager,c.anrIntegration=T.anrIntegration,c.childProcessIntegration=T.childProcessIntegration,c.contextLinesIntegration=T.contextLinesIntegration,c.createGetModuleFromFilename=T.createGetModuleFromFilename,c.createSentryWinstonTransport=T.createSentryWinstonTransport,c.cron=T.cron,c.defaultStackParser=T.defaultStackParser,c.disableAnrDetectionForCallback=T.disableAnrDetectionForCallback,c.generateInstrumentOnce=T.generateInstrumentOnce,c.getSentryRelease=T.getSentryRelease,c.httpServerIntegration=T.httpServerIntegration,c.httpServerSpansIntegration=T.httpServerSpansIntegration,c.localVariablesIntegration=T.localVariablesIntegration,c.logger=T.logger,c.makeNodeTransport=T.makeNodeTransport,c.metrics=T.metrics,c.modulesIntegration=T.modulesIntegration,c.nodeContextIntegration=T.nodeContextIntegration,c.nodeRuntimeMetricsIntegration=T.nodeRuntimeMetricsIntegration,c.onUncaughtExceptionIntegration=T.onUncaughtExceptionIntegration,c.onUnhandledRejectionIntegration=T.onUnhandledRejectionIntegration,c.pinoIntegration=T.pinoIntegration,c.processSessionIntegration=T.processSessionIntegration,c.spotlightIntegration=T.spotlightIntegration,c.systemErrorIntegration=T.systemErrorIntegration,c.validateOpenTelemetrySetup=T.validateOpenTelemetrySetup},505891,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(522734),f=a.r(814747),g=null,h=null;c.createRouteManifest=function(a){let b;if(a?.appDirPath)b=a.appDirPath;else{let a=process.cwd(),c=f.join(a,"app"),d=f.join(a,"src","app");e.existsSync(c)&&e.lstatSync(c).isDirectory()?b=c:e.existsSync(d)&&e.lstatSync(d).isDirectory()&&(b=d)}if(!b)return{isrRoutes:[],dynamicRoutes:[],staticRoutes:[]};if(g&&h===b&&d===a?.includeRouteGroups)return g;let{dynamicRoutes:c,staticRoutes:i,isrRoutes:j}=function a(b,c="",d=!1){let g=[],h=[],i=[];try{let k=e.readdirSync(b,{withFileTypes:!0}),l=k.find(a=>{var b;return b=a.name,"page.tsx"===b||"page.jsx"===b||"page.ts"===b||"page.js"===b});if(l){let a=d?c||"/":(c||"/").replace(/\/\((?=[^)/]*\))[^)/]+\)/g,""),j=a.includes(":"),k=f.join(b,l.name);if(function(a){try{let b=e.readFileSync(a,"utf8");return/export\s+(async\s+)?function\s+generateStaticParams|export\s+const\s+generateStaticParams/.test(b)}catch{return!1}}(k)&&i.push(a),j){let{regex:b,paramNames:c,hasOptionalPrefix:d}=function(a){let b,c,d=a.split("/").filter(Boolean),e=[],f=[],g=!1;for(let a of d)if(a.startsWith(":")){let b=a.substring(1);if(b.endsWith("*?")){let a=b.slice(0,-2);f.push(a),g=!0}else if(b.endsWith("*")){let a=b.slice(0,-1);f.push(a),e.push("(.+)")}else f.push(b),e.push("([^/]+)")}else e.push(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(g)if(0===e.length)c="^/(.*)$";else{let a=e.join("/");c=`^/${a}(?:/(.*))?$`}else c=`^/${e.join("/")}$`;return{regex:c,paramNames:f,hasOptionalPrefix:(b=f[0],void 0!==b&&("locale"===b||"lang"===b||"language"===b))}}(a);g.push({path:a,regex:b,paramNames:c,hasOptionalPrefix:d})}else h.push({path:a})}for(let e of k)if(e.isDirectory()){var j;let k,l=f.join(b,e.name),m=e.name.startsWith("[")&&e.name.endsWith("]"),n=(k=(j=e.name).startsWith("(")&&j.endsWith(")")?d?e.name:"":m?function(a){if(a.startsWith("[[...")&&a.endsWith("]]")){let b=a.slice(5,-2);return`:${b}*?`}if(a.startsWith("[...")&&a.endsWith("]")){let b=a.slice(4,-1);return`:${b}*`}return`:${a.slice(1,-1)}`}(e.name):e.name)?`${c}/${k}`:c,o=a(l,n,d);g.push(...o.dynamicRoutes),h.push(...o.staticRoutes),i.push(...o.isrRoutes)}}catch(a){console.warn("Error building route manifest:",a)}return{dynamicRoutes:g,staticRoutes:h,isrRoutes:i}}(b,a?.basePath,a?.includeRouteGroups),k={dynamicRoutes:c,staticRoutes:i,isrRoutes:j};return g=k,h=b,d=a?.includeRouteGroups,k}},520112,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.resolveTunnelRoute=function(a){let b;if(process.env.__SENTRY_TUNNEL_ROUTE__)return process.env.__SENTRY_TUNNEL_ROUTE__;let c="string"==typeof a?a:(b=d._INTERNAL_safeMathRandom().toString(36).substring(2,10),`/${b}`);return c&&(process.env.__SENTRY_TUNNEL_ROUTE__=c),c},c.setUpTunnelRewriteRules=function(a,b){let c=a.rewrites,d=process.env._SENTRY_TUNNEL_DESTINATION_OVERRIDE,e=d||"https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0",f=d||"https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0";a.rewrites=async(...a)=>{let d={source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"}],destination:e},g=[{source:`${b}(/?)`,has:[{type:"query",key:"o",value:"(?\\d*)"},{type:"query",key:"p",value:"(?\\d*)"},{type:"query",key:"r",value:"(?[a-z]{2})"}],destination:f},d];if("function"!=typeof c)return g;let h=await c(...a);return Array.isArray(h)?[...g,...h]:{...h,beforeFiles:[...g,...h.beforeFiles||[]]}}}},563540,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(848074),f=a.r(522734),g=a.r(814747),h=a.r(505891),i=a.r(832609),j=a.r(183276),k=a.r(520112),l=!1,m=!1;function n(a,b){if(!b)return a;let c=a=>"function"==typeof b?b(a):b.some(b=>d.isMatchingPattern(a,b));return{staticRoutes:a.staticRoutes.filter(a=>!c(a.path)),dynamicRoutes:a.dynamicRoutes.filter(a=>!c(a.path)),isrRoutes:a.isrRoutes.filter(a=>!c(a))}}c.filterRouteManifest=n,c.getNextMajor=function(a){if(!a)return;let{major:b}=d.parseSemver(a);return b},c.maybeCreateRouteManifest=function(a,b){if(b.disableManifestInjection&&console.warn("[@sentry/nextjs] The `disableManifestInjection` option is deprecated. Use `routeManifestInjection: false` instead."),!1!==b.routeManifestInjection&&(void 0!==b.routeManifestInjection||!b.disableManifestInjection))return n(h.createRouteManifest({basePath:a.basePath}),b.routeManifestInjection?.exclude)},c.maybeGetVercelCronsConfig=function(a){let b={config:void 0,strategy:void 0};if(!process.env.VERCEL)return b;let c=a._experimental?.vercelCronsMonitoring===!0,e=a.webpack?.automaticVercelMonitors===!0;if(!c&&!e)return b;let h=function(){try{let a=g.join(process.cwd(),"vercel.json"),b=f.readFileSync(a,"utf8"),c=JSON.parse(b).crons;if(c&&Array.isArray(c)&&c.length>0)return c;return}catch(a){if("ENOENT"===a.code)return;d.debug.error("[@sentry/nextjs] Failed to read vercel.json for automatic cron job monitoring instrumentation",a);return}}();return h&&(b.config=h,c&&e?(d.debug.warn("[@sentry/nextjs] Both '_experimental.vercelCronsMonitoring' and 'webpack.automaticVercelMonitors' are enabled. Using the new span-based approach from '_experimental.vercelCronsMonitoring'. You can remove 'webpack.automaticVercelMonitors' from your config."),b.strategy="spans"):c?(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs using span-based instrumentation."),b.strategy="spans"):(d.debug.log("[@sentry/nextjs] Creating Sentry cron monitors for your Vercel Cron Jobs. You can disable this feature by setting the 'automaticVercelMonitors' option to false in your Next.js config."),b.strategy="wrapper")),b},c.maybeSetClientTraceMetadataOption=function(a,b){if(b){let{major:c,minor:e}=d.parseSemver(b);void 0!==c&&void 0!==e&&(c>=15||14===c&&e>=3)&&(a.experimental=a.experimental||{},a.experimental.clientTraceMetadata=["baggage","sentry-trace",...a.experimental?.clientTraceMetadata||[]])}else console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, please add `experimental.clientTraceMetadata: ['sentry-trace', 'baggage']` to your Next.js config to enable pageload tracing for App Router.")},c.maybeSetInstrumentationHookOption=function(a,b){if(b&&i.requiresInstrumentationHook(b)){a.experimental?.instrumentationHook===!1&&console.warn("[@sentry/nextjs] You turned off the `experimental.instrumentationHook` option. Note that Sentry will not be initialized if you did not set it up inside `instrumentation.(js|ts)`."),a.experimental={instrumentationHook:!0,...a.experimental};return}b||(a.experimental&&"instrumentationHook"in a.experimental?!1===a.experimental.instrumentationHook&&console.warn("[@sentry/nextjs] You set `experimental.instrumentationHook` to `false`. If you are using Next.js version 15 or greater, you can remove that option. If you are using Next.js version 14 or lower, you need to set `experimental.instrumentationHook` in your `next.config.(js|mjs)` to `true` for the SDK to be properly initialized in combination with `instrumentation.(js|ts)`."):(console.log("[@sentry/nextjs] The Sentry SDK was not able to determine your Next.js version. If you are using Next.js version 15 or greater, Next.js will probably show you a warning about the `experimental.instrumentationHook` being set. To silence Next.js' warning, explicitly set the `experimental.instrumentationHook` option in your `next.config.(js|mjs|ts)` to `undefined`. If you are on Next.js version 14 or lower, you can silence this particular warning by explicitly setting the `experimental.instrumentationHook` option in your `next.config.(js|mjs)` to `true`."),a.experimental={instrumentationHook:!0,...a.experimental}))},c.maybeSetUpTunnelRouteRewriteRules=function(a,b){if(!b.tunnelRoute)return;if("export"===a.output){l||(l=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK `tunnelRoute` option will not work in combination with Next.js static exports. The `tunnelRoute` option uses server-side features that cannot be accessed in export mode. If you still want to tunnel Sentry events, set up your own tunnel: https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option"));return}let c=k.resolveTunnelRoute(b.tunnelRoute);b.tunnelRoute=c||void 0,k.setUpTunnelRewriteRules(a,c)},c.resolveReleaseName=function(a){return a.release?.create!==!1?a.release?.name??e.getSentryRelease()??j.getGitRevision():a.release?.name},c.shouldReturnEarlyInExperimentalBuildMode=function(){return!!process.argv.includes("--experimental-build-mode")&&(m||(m=!0,console.warn("[@sentry/nextjs] The Sentry Next.js SDK does not currently fully support next build --experimental-build-mode")),process.argv.includes("generate"))},c.warnIfMissingOnRouterTransitionStartHook=function(a){let b=j.getInstrumentationClientFileContents();void 0===b||b.includes("onRouterTransitionStart")||a.suppressOnRouterTransitionStartWarning||console.warn("[@sentry/nextjs] ACTION REQUIRED: To instrument navigations, the Sentry SDK requires you to export an `onRouterTransitionStart` hook from your `instrumentation-client.(js|ts)` file. You can do so by adding `export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;` to the file.")}},253989,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832609),e=a.r(183276),f=a.r(920753),g=a.r(993918),h=a.r(563540);c.getFinalConfigObject=function(a,b){f.migrateDeprecatedWebpackOptions(b);let c=h.resolveReleaseName(b);if(h.maybeSetUpTunnelRouteRewriteRules(a,b),h.shouldReturnEarlyInExperimentalBuildMode())return a;let i=h.maybeCreateRouteManifest(a,b),j=h.maybeGetVercelCronsConfig(b);e.setUpBuildTimeVariables(a,b,c);let k=d.getNextjsVersion(),l=h.getNextMajor(k);h.maybeSetClientTraceMetadataOption(a,k),h.maybeSetInstrumentationHookOption(a,k),h.warnIfMissingOnRouterTransitionStartHook(b);let m=g.getBundlerInfo(k);g.maybeWarnAboutUnsupportedTurbopack(k,m),g.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(k,b,m);let n=g.maybeConstructTurbopackConfig(a,b,i,k,m,j),o=g.resolveUseRunAfterProductionCompileHookOption(b,m);return g.maybeSetUpRunAfterProductionCompileHook({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,nextJsVersion:k,bundlerInfo:m,turboPackConfig:n,shouldUseRunAfterProductionCompileHook:o}),g.maybeEnableTurbopackSourcemaps(a,b,m),{...a,...g.getServerExternalPackagesPatch(a,l),...g.getWebpackPatch({incomingUserNextConfigObject:a,userSentryOptions:b,releaseName:c,routeManifest:i,nextJsVersion:k,shouldUseRunAfterProductionCompileHook:o,bundlerInfo:m,vercelCronsConfigResult:j}),...g.getTurbopackPatch(m,n)}}},474224,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(253989);c.withSentryConfig=function(a,b={}){let c=a||{};return"function"==typeof c?function(...a){let f=c.apply(this,a);return d.isThenable(f)?f.then(a=>e.getFinalConfigObject(a,b)):e.getFinalConfigObject(f,b)}:e.getFinalConfigObject(c,b)}},263581,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.DEBUG_BUILD="u"{"use strict";var b="";function c(a){return a.split("\n").reduce(function(a,c){var k,l,m,n=function(a){var c=d.exec(a);if(!c)return null;var f=c[2]&&0===c[2].indexOf("native"),g=c[2]&&0===c[2].indexOf("eval"),h=e.exec(c[2]);return g&&null!=h&&(c[2]=h[1],c[3]=h[2],c[4]=h[3]),{file:f?null:c[2],methodName:c[1]||b,arguments:f?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}(c)||((k=f.exec(c))?{file:k[2],methodName:k[1]||b,arguments:[],lineNumber:+k[3],column:k[4]?+k[4]:null}:null)||function(a){var c=g.exec(a);if(!c)return null;var d=c[3]&&c[3].indexOf(" > eval")>-1,e=h.exec(c[3]);return d&&null!=e&&(c[3]=e[1],c[4]=e[2],c[5]=null),{file:c[3],methodName:c[1]||b,arguments:c[2]?c[2].split(","):[],lineNumber:c[4]?+c[4]:null,column:c[5]?+c[5]:null}}(c)||((l=j.exec(c))?{file:l[2],methodName:l[1]||b,arguments:[],lineNumber:+l[3],column:l[4]?+l[4]:null}:null)||((m=i.exec(c))?{file:m[3],methodName:m[1]||b,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return n&&a.push(n),a},[])}var d=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|rsc||\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,e=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,g=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,h=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,i=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,j=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;a.s(["parse",()=>c])},10308,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(641235),f=a.r(263581),g=d.GLOBAL_OBJ;function h(){let a=process.env._sentryBasePath??g._sentryBasePath??"";""===a||a.match(/^\//)||(a=`/${a}`);let b=process.env.PORT||"3000";return`http://localhost:${b}${a}`}async function i(a,b={}){let c=new AbortController,e=setTimeout(()=>c.abort(),3e3);return d.suppressTracing(()=>fetch(a,{...b,signal:c.signal}).finally(()=>{clearTimeout(e)}))}async function j(a,b){try{if(!(a.file?.startsWith("webpack-internal:")||a.file?.startsWith("file:")))return null;let c=new URLSearchParams;c.append("isServer",String(!1)),c.append("isEdgeServer",String(!1)),c.append("isAppDirectory",String(!0)),c.append("errorMessage",b.toString()),Object.keys(a).forEach(b=>{c.append(b,(a[b]??"").toString())});let d=h(),e=await i(`${d}/__nextjs_original-stack-frame?${c.toString()}`);if(!e.ok||204===e.status)return null;let f=await e.json();return{originalCodeFrame:f.originalCodeFrame,originalStackFrame:f.originalStackFrame}}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}async function k(a){try{let b={frames:a.filter(a=>!!a.file).map(a=>(a.file=a.file.replace(/^rsc:\/\/React\/[^/]+\//,"").replace(/\?\d+$/,""),{file:a.file,methodName:a.methodName??"",arguments:[],lineNumber:a.lineNumber??0,column:a.column??0,line1:a.lineNumber??0,column1:a.column??0})),isServer:!1,isEdgeServer:!1,isAppDirectory:!0},c=h(),d=await i(`${c}/__nextjs_original-stack-frames`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!d.ok||204===d.status)return null;return(await d.json()).map(a=>({originalCodeFrame:a.value.originalCodeFrame,originalStackFrame:a.value.originalStackFrame}))}catch(a){return f.DEBUG_BUILD&&d.debug.error("Failed to symbolicate event with Next.js dev server",a),null}}c.devErrorSymbolicationEventProcessor=async function a(a,b){"transaction"===a.type&&(a.spans=a.spans?.filter(a=>{let b=a.data?.["http.url"];return"string"!=typeof b||!b.includes("__nextjs_original-stack-frame")}));try{if(b.originalException&&b.originalException instanceof Error&&b.originalException.stack){let c,f=e.parse(b.originalException.stack),h=g._sentryNextJsVersion;if(!h)return a;let i=d.parseSemver(h);if(i.major>15||15===i.major&&i.minor>=2){let b=await k(f);if(null===b)return a;c=b}else c=await Promise.all(f.map(a=>j(a,b.originalException)));a.exception?.values?.[0]?.stacktrace?.frames&&(a.exception.values[0].stacktrace.frames=a.exception.values[0].stacktrace.frames.map((a,b,d)=>{let e=c[d.length-1-b];if(!e?.originalStackFrame||!e.originalCodeFrame)return{...a,platform:a.filename?.startsWith("node:internal")?"nodejs":void 0,in_app:!1};let{contextLine:f,preContextLines:g,postContextLines:h}=function(a){let b,c=a.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,"").split("\n").filter(a=>!a.match(/^\s*\|/)).map(a=>({line:a,isErrorLine:!!a.match(/^>/)})).map(a=>({...a,line:a.line.replace(/^.*\|/,"")})),d=[],e=[],f=!1;for(let a of c)a.isErrorLine?(b=a.line,f=!0):f?e.push(a.line):d.push(a.line);return{contextLine:b,preContextLines:d,postContextLines:e}}(e.originalCodeFrame);return{...a,pre_context:g,context_line:f,post_context:h,function:e.originalStackFrame.methodName,filename:e.originalStackFrame.file?function(a){if(!a)return a;let b=a.match(/^webpack-internal:(?:\/+)?(?:\([^)]*\)\/)?(.+)$/);return b?b[1]:a}(e.originalStackFrame.file):void 0,lineno:e.originalStackFrame.lineNumber||e.originalStackFrame.line1||void 0,colno:e.originalStackFrame.column||e.originalStackFrame.column1||void 0}}))}}catch{}return a}},983894,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.getVercelEnv=function(a){let b=a?process.env.NEXT_PUBLIC_VERCEL_ENV:process.env.VERCEL_ENV;return b?`vercel-${b}`:void 0}},411290,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.ATTR_NEXT_ROUTE="next.route",c.ATTR_NEXT_SEGMENT="next.segment",c.ATTR_NEXT_SPAN_NAME="next.span_name",c.ATTR_NEXT_SPAN_TYPE="next.span_type"},228551,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL="sentry.route_backfill",c.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL="sentry.sentry_trace_backfill",c.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION="sentry.drop_transaction"},948358,(a,b,c)=>{"use strict";b.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},686758,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE:function(){return f},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="/_not-found",g=`${f}/page`,h="/_global-error",i=`${h}/page`},850067,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={APP_CLIENT_INTERNALS:function(){return ab},APP_PATHS_MANIFEST:function(){return u},APP_PATH_ROUTES_MANIFEST:function(){return v},AdapterOutputType:function(){return k},BARREL_OPTIMIZATION_PREFIX:function(){return U},BLOCKED_PAGES:function(){return P},BUILD_ID_FILE:function(){return O},BUILD_MANIFEST:function(){return w},CLIENT_PUBLIC_FILES_PATH:function(){return Q},CLIENT_REFERENCE_MANIFEST:function(){return V},CLIENT_STATIC_FILES_PATH:function(){return R},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return _},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return aa},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return ae},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return af},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return ac},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ad},COMPILER_INDEXES:function(){return j},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return N},DEFAULT_RUNTIME_WEBPACK:function(){return ag},DEFAULT_SANS_SERIF_FONT:function(){return al},DEFAULT_SERIF_FONT:function(){return ak},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return K},DEV_CLIENT_PAGES_MANIFEST:function(){return G},DYNAMIC_CSS_MANIFEST:function(){return $},EDGE_RUNTIME_WEBPACK:function(){return ah},EDGE_UNSUPPORTED_NODE_APIS:function(){return aq},EXPORT_DETAIL:function(){return B},EXPORT_MARKER:function(){return A},FUNCTIONS_CONFIG_MANIFEST:function(){return x},IMAGES_MANIFEST:function(){return E},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Z},MIDDLEWARE_BUILD_MANIFEST:function(){return X},MIDDLEWARE_MANIFEST:function(){return H},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return Y},MODERN_BROWSERSLIST_TARGET:function(){return g.default},NEXT_BUILTIN_DOCUMENT:function(){return T},NEXT_FONT_MANIFEST:function(){return z},PAGES_MANIFEST:function(){return s},PHASE_ANALYZE:function(){return m},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return r},PHASE_PRODUCTION_BUILD:function(){return n},PHASE_PRODUCTION_SERVER:function(){return o},PHASE_TEST:function(){return q},PRERENDER_MANIFEST:function(){return C},REACT_LOADABLE_MANIFEST:function(){return L},ROUTES_MANIFEST:function(){return D},RSC_MODULE_TYPES:function(){return ap},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return F},SERVER_PROPS_ID:function(){return aj},SERVER_REFERENCE_MANIFEST:function(){return W},STATIC_PROPS_ID:function(){return ai},STATIC_STATUS_PAGES:function(){return am},STRING_LITERAL_DROP_BUNDLE:function(){return S},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return y},SYSTEM_ENTRYPOINTS:function(){return ar},TRACE_OUTPUT_VERSION:function(){return an},TURBOPACK_CLIENT_BUILD_MANIFEST:function(){return J},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ao},UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return h.UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY},UNDERSCORE_NOT_FOUND_ROUTE:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return h.UNDERSCORE_NOT_FOUND_ROUTE_ENTRY},WEBPACK_STATS:function(){return t}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(955289)._(a.r(948358)),h=a.r(686758),i={client:"client",server:"server",edgeServer:"edge-server"},j={[i.client]:0,[i.server]:1,[i.edgeServer]:2};var k=((d={}).PAGES="PAGES",d.PAGES_API="PAGES_API",d.APP_PAGE="APP_PAGE",d.APP_ROUTE="APP_ROUTE",d.PRERENDER="PRERENDER",d.STATIC_FILE="STATIC_FILE",d.MIDDLEWARE="MIDDLEWARE",d);let l="phase-export",m="phase-analyze",n="phase-production-build",o="phase-production-server",p="phase-development-server",q="phase-test",r="phase-info",s="pages-manifest.json",t="webpack-stats.json",u="app-paths-manifest.json",v="app-path-routes-manifest.json",w="build-manifest.json",x="functions-config-manifest.json",y="subresource-integrity-manifest",z="next-font-manifest",A="export-marker.json",B="export-detail.json",C="prerender-manifest.json",D="routes-manifest.json",E="images-manifest.json",F="required-server-files",G="_devPagesManifest.json",H="middleware-manifest.json",I="_clientMiddlewareManifest.json",J="client-build-manifest.json",K="_devMiddlewareManifest.json",L="react-loadable-manifest.json",M="server",N=["next.config.js","next.config.mjs","next.config.ts",...process?.features?.typescript?["next.config.mts"]:[]],O="BUILD_ID",P=["/_document","/_app","/_error"],Q="public",R="static",S="__NEXT_DROP_CLIENT_FILE__",T="__NEXT_BUILTIN_DOCUMENT__",U="__barrel_optimize__",V="client-reference-manifest",W="server-reference-manifest",X="middleware-build-manifest",Y="middleware-react-loadable-manifest",Z="interception-route-rewrite-manifest",$="dynamic-css-manifest",_="main",aa=`${_}-app`,ab="app-pages-internals",ac="react-refresh",ad="webpack",ae="polyfills",af=Symbol(ae),ag="webpack-runtime",ah="edge-runtime-webpack",ai="__N_SSG",aj="__N_SSP",ak={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},al={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},am=["/500"],an=1,ao=6e3,ap={client:"client",server:"server"},aq=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],ar=new Set([_,ac,aa]);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},517613,(a,b,c)=>{b.exports=a.r(850067)},494409,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(517613);c.isBuild=function(){return process.env.NEXT_PHASE===d.PHASE_PRODUCTION_BUILD}},291230,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581);async function f(){try{e.DEBUG_BUILD&&d.debug.log("Flushing events..."),await d.flush(2e3),e.DEBUG_BUILD&&d.debug.log("Done flushing events")}catch(a){e.DEBUG_BUILD&&d.debug.log("Error while flushing events:\n",a)}}function g(){let a=Symbol.for("__cloudflare-context__");return d.GLOBAL_OBJ[a]?.ctx}function h(a){g()?.waitUntil(a)}function i(){return"function"==typeof g()?.waitUntil}c.cloudflareWaitUntil=h,c.flushSafelyWithTimeout=f,c.isCloudflareWaitUntilAvailable=i,c.waitUntil=function(a){i()?h(a):d.vercelWaitUntil(a)}},289467,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);function e(a){let b=a.split("/").filter(a=>a&&!(a.startsWith("(")&&a.endsWith(")")));return b.length>0?`/${b.join("/")}`:"/"}function f(a,b,c,f){let g=f??e(a),h=c?.["x-forwarded-proto"],i=c?.["x-forwarded-host"]||c?.host;if(!h||!i)return g;let j=`${h}://${i}${g}`,k=d.parseStringToURLObject(j);return k?d.getSanitizedUrlStringFromUrlObject(k):g}function g(a){let b=a?.referer;if(b)try{let a=new URL(b);return d.getSanitizedUrlStringFromUrlObject(a)}catch{return}}c.buildUrlFromComponentRoute=f,c.extractSanitizedUrlFromRefererHeader=g,c.getSanitizedRequestUrl=function(a,b,c,d){let e=g(c);return e||f(a,b,c,d)},c.sanitizeRoutePath=e,c.substituteRouteParams=function(a,b){return a}},521467,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(289467);c.setUrlProcessingMetadata=function(a){if("transaction"!==a.type||a.contexts?.trace?.op!=="http.server"||!a.contexts?.trace?.data)return;let b=d.getClient();if(!b?.getOptions().sendDefaultPii)return;let c=a.contexts.trace.data,f=c["next.route"]||c["http.route"],g=c["http.target"];if(!f)return;let h=a.sdkProcessingMetadata?.capturedSpanIsolationScope?.getScopeData(),i=h?.sdkProcessingMetadata?.normalizedRequest?.headers,j=e.getSanitizedRequestUrl(f,void 0,i,g?.toString());j&&h?.sdkProcessingMetadata&&(h.sdkProcessingMetadata.normalizedRequest=h.sdkProcessingMetadata.normalizedRequest||{},h.sdkProcessingMetadata.normalizedRequest.url=j)}},553484,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(814747);c.distDirRewriteFramesIntegration=d.defineIntegration(({distDirName:a})=>{let b=e.resolve(a).replace(/(\/|\\)$/,""),c=new RegExp(d.escapeStringForRegex(b));return{...d.rewriteFramesIntegration({iteratee:a=>(a.filename=a.filename?.replace(c,"app:///_next"),a)}),name:"DistDirRewriteFrames"}})},447537,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.addHeadersAsAttributes=function(a,b){if(!a)return{};let c=a instanceof Headers||"object"==typeof a&&"get"in a?d.winterCGHeadersToDict(a):a,e=d.httpHeadersToSpanAttributes(c,d.getClient()?.getOptions().sendDefaultPii??!1);return b&&b.setAttributes(e),e}},146939,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(221598),g=a.r(411290),h=a.r(228551),i=e.GLOBAL_OBJ;c.dropMiddlewareTunnelRequests=function(a,b){if(e.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let c=b?.[g.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute",j=b?.[e.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]==="auto.http.otel.node_fetch",k=b?.[g.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest";if(!c&&!j&&!k)return;let l=function(a){let b=i._sentryRewritesTunnelPath||process.env._sentryRewritesTunnelPath;if(!b)return!1;let c=a[d.SEMATTRS_HTTP_TARGET];if("string"==typeof c){let a=c.split("?")[0]||"";return a===b||a.startsWith(`${b}/`)}return!1}(b||{}),m=f.isSentryRequestSpan(a);(l||m)&&a.setAttribute(h.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},571795,(a,b,c)=>{let d;Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let e=a.r(357122),f=a.r(187845),g=a.r(263581),h=a.r(411290),i=a.r(228551),j="__PAGE__",k=new WeakMap;function l(a){return"NextNodeServer.getLayoutOrPageModule"===a[h.ATTR_NEXT_SPAN_TYPE]&&"resolve segment modules"===a[h.ATTR_NEXT_SPAN_NAME]&&"string"==typeof a[h.ATTR_NEXT_SEGMENT]}function m({segment:a,route:b}){return a===j?`resolve page server component "${b}"`:""===a?"resolve root layout server component":`resolve layout server component "${a}"`}c.commonObjectToIsolationScope=function(a){if("object"!=typeof a||!a)return new f.Scope;{let b=k.get(a);if(b)return b;{let b=new f.Scope;return k.set(a,b),b}}},c.dropNextjsRootContext=function(){if(f.getClient()?.getOptions()?.skipOpenTelemetrySetup)return;let a=f.getActiveSpan();if(a){let b=f.getRootSpan(a),c=f.spanToJSON(b).data;c?.["next.span_type"]&&f.getRootSpan(a)?.setAttribute(i.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION,!0)}},c.escapeNextjsTracing=function(a){let b=f.GLOBAL_OBJ.AsyncLocalStorage;return b?(d||(d=new b),d.getStore())?a():f.startNewTrace(()=>d.run(!0,()=>a())):(g.DEBUG_BUILD&&f.debug.warn("Tried to register AsyncLocalStorage async context strategy in a runtime that doesn't support AsyncLocalStorage."),a())},c.getEnhancedResolveSegmentSpanName=m,c.isResolveSegmentSpan=l,c.maybeEnhanceServerComponentSpanName=function(a,b,c){if(!l(b))return;let d=b[h.ATTR_NEXT_SEGMENT],g=c[e.ATTR_HTTP_ROUTE],i=m({segment:d,route:"string"==typeof g?g:""});a.updateName(i),a.setAttributes({"sentry.nextjs.ssr.function.type":d===j?"Page":"Layout","sentry.nextjs.ssr.function.route":g}),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_OP,"function.nextjs")}},266098,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581),f="sentry.cron.checkInId",g="sentry.cron.monitorSlug",h="sentry.cron.startTime",i="sentry.cron.schedule";c.maybeCompleteCronCheckIn=function(a){let b=d.spanToJSON(a).data,c=b?.[f],j=b?.[g],k=b?.[h],l=b?.[i];if(!c||!j||"number"!=typeof k)return;let m=d._INTERNAL_safeDateNow()/1e3-k,n=d.spanToJSON(a).status,o=n&&"ok"!==n?"error":"ok";d.captureCheckIn({checkInId:c,monitorSlug:j,status:o,duration:m},"string"==typeof l?{maxRuntime:720,schedule:{type:"crontab",value:l}}:void 0),a.setAttribute(f,void 0),a.setAttribute(g,void 0),a.setAttribute(h,void 0),a.setAttribute(i,void 0),e.DEBUG_BUILD&&d.debug.log(`[Cron] Completed check-in for "${j}" with status "${o}"`)},c.maybeStartCronCheckIn=function(a,b){let c=function(){let a=globalThis;if(a._sentryVercelCronsConfig)try{return JSON.parse(a._sentryVercelCronsConfig)}catch{e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Failed to parse Vercel crons config");return}}();if(!c||!b)return;let j=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!j)return;let k=Array.isArray(j["user-agent"])?j["user-agent"][0]:j["user-agent"];if(!k?.includes("vercel-cron"))return;let l=c.find(a=>a.path===b);if(!l?.path||!l.schedule)return;let m=l.path,n=d._INTERNAL_safeDateNow()/1e3,o=d.captureCheckIn({monitorSlug:m,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}});e.DEBUG_BUILD&&d.debug.log(`[Cron] Started check-in for "${m}" with ID "${o}"`),a.setAttribute(f,o),a.setAttribute(g,m),a.setAttribute(h,n),a.setAttribute(i,l.schedule)}},658788,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e="messaging.system",f="messaging.destination.name",g="messaging.operation.name",h="sentry.queue.enriched";function i(a,b){let c=a[b];return Array.isArray(c)?c[0]:c}c.maybeCleanupQueueSpan=function(a){let b=d.spanToJSON(a).data;b?.[h]&&a.setAttribute(h,void 0)},c.maybeEnrichQueueConsumerSpan=function(a){let b=d.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;if(!b||"com.vercel.queue.v2beta"!==(Array.isArray(b["ce-type"])?b["ce-type"][0]:b["ce-type"]))return;let c=i(b,"ce-vqsqueuename"),j=i(b,"ce-vqsmessageid"),k=i(b,"ce-vqsconsumergroup"),l=i(b,"ce-vqsdeliverycount");if(a.setAttribute(e,"vercel.queue"),a.setAttribute(g,"process"),c&&a.setAttribute(f,c),j&&a.setAttribute("messaging.message.id",j),k&&a.setAttribute("messaging.consumer.group.name",k),l){let b=parseInt(l,10);isNaN(b)||a.setAttribute("messaging.message.delivery_count",b)}a.setAttribute(h,!0)},c.maybeEnrichQueueProducerSpan=function(a){let b,c=d.spanToJSON(a).data,i=c?.["url.full"];if(!i)return;try{b=new URL(i)}catch{return}if("vercel-queue.com"!==b.hostname&&!b.hostname.endsWith(".vercel-queue.com"))return;let j=b.pathname.match(/^\/api\/v3\/topic\/([^/]+)/);if(!j)return;let k=decodeURIComponent(j[1]);a.setAttribute(e,"vercel.queue"),a.setAttribute(f,k),a.setAttribute(g,"send"),a.setAttribute(h,!0)}},155672,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(832528),e=a.r(357122),f=a.r(187845),g=a.r(221598),h=a.r(411290),i=a.r(447537),j=a.r(146939),k=a.r(571795),l=a.r(266098),m=a.r(658788);c.handleOnSpanStart=function(a){let b=f.spanToJSON(a).data,c=f.getRootSpan(a),n=f.spanToJSON(c).data,o=a===c;if(j.dropMiddlewareTunnelRequests(a,b),"string"==typeof b?.[h.ATTR_NEXT_ROUTE]&&(n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD])&&!n?.[e.ATTR_HTTP_ROUTE]){let a=b[h.ATTR_NEXT_ROUTE].replace(/\/route$/,"");c.updateName(a),c.setAttribute(e.ATTR_HTTP_ROUTE,a),c.setAttribute(h.ATTR_NEXT_ROUTE,a);let d=n?.[e.ATTR_HTTP_REQUEST_METHOD]||n?.[e.SEMATTRS_HTTP_METHOD];"string"==typeof d&&f.getIsolationScope().setTransactionName(`${d} ${a}`),l.maybeStartCronCheckIn(c,a),m.maybeEnrichQueueConsumerSpan(c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="Middleware.execute"){let d=b[h.ATTR_NEXT_SPAN_NAME];"string"==typeof d&&(c.updateName(d),c.setAttribute(e.ATTR_HTTP_ROUTE,d),c.setAttribute(h.ATTR_NEXT_SPAN_NAME,d)),a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto")}if(b?.[h.ATTR_NEXT_SPAN_TYPE]!==void 0&&a.setAttribute(f.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"auto"),o){let a=f.getIsolationScope().getScopeData().sdkProcessingMetadata?.normalizedRequest?.headers;i.addHeadersAsAttributes(a,c)}if(b?.[h.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"&&o){let b=f.getCapturedScopesOnSpan(a),c=(b.isolationScope||f.getIsolationScope()).clone(),e=b.scope||f.getCurrentScope(),h=g.getScopesFromContext(d.context.active());h&&(h.isolationScope=c),f.setCapturedScopesOnSpan(a,e,c)}k.maybeEnhanceServerComponentSpanName(a,b,n),m.maybeEnrichQueueProducerSpan(a)}},342069,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581);function f(){let a=function(){if("u">typeof AsyncLocalStorage)return AsyncLocalStorage;if("getBuiltinModule"in process&&"function"==typeof process.getBuiltinModule){let{AsyncLocalStorage:a}=process.getBuiltinModule("async_hooks")??{};return a}}();if(!a||"function"!=typeof a.snapshot){e.DEBUG_BUILD&&d.debug.warn("[@sentry/nextjs] No AsyncLocalStorage found in the runtime or AsyncLocalStorage.snapshot() is not available, skipping safe random ID generator context preparation, you may see some errors with cache components.");return}return a.snapshot()}function g(a){return a instanceof Error&&a.message.includes("AsyncLocalStorage")}c.prepareSafeIdGeneratorContext=function(){let a=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),b=d.GLOBAL_OBJ,c=f();if(!c)return;let h=c;b[a]=a=>{try{return h(a)}catch(c){if(!g(c))throw c;let b=f();if(!b)return a();h=b;try{return h(a)}catch(b){if(!g(b))throw b;return a()}}},e.DEBUG_BUILD&&d.debug.log("[@sentry/nextjs] Prepared safe random ID generator context")}},575672,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.captureUnderscoreErrorException=async function(a){let{req:b,res:c,err:f}=a,g=c?.statusCode||a.statusCode;if(g&&g<500||!a.pathname)return;if(f&&d.isAlreadyCaptured(f)){e.waitUntil(e.flushSafelyWithTimeout());let a="object"==typeof f?f.__sentry_event_id__:void 0;return"string"==typeof a?(d.getIsolationScope().setLastEventId(a),a):d.getIsolationScope().lastEventId()}let h=d.withScope(a=>{if(b){let c=d.httpRequestToRequestData(b);a.setSDKProcessingMetadata({normalizedRequest:c})}return d.captureException(f||`_error.js called with falsy error (${f})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return e.waitUntil(e.flushSafelyWithTimeout()),h}},333299,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),c.isUseCacheFunction=function(a){if(a.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:b}=function(a){let b=parseInt(a.slice(0,2),16),c=b>>1&63,d=Array(6);for(let a=0;a<6;a++){let b=c>>5-a&1;d[a]=1===b}return{type:1==(b>>7&1)?"use-cache":"server-action",usedArgs:d,hasRestArgs:1==(1&b)}}(a.$$id);return"use-cache"===b}},145408,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(263581),f=a.r(494409),g=a.r(333299);function h(a){let b=f.isBuild(),c=!!a&&g.isUseCacheFunction(a);return c&&e.DEBUG_BUILD&&d.debug.log("Skipping span creation in Cache Components context"),b||c}function i(){return new d.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}c.startInactiveSpan=function(a){return h()?i():d.startInactiveSpan(a)},c.startSpan=function(a,b){return h(b)?b(i()):d.startSpan(a,b)},c.startSpanManual=function(a,b){if(h(b)){let a=i();return b(a,()=>a.end())}return d.startSpanManual(a,b)}},988136,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(228551);c.callDataFetcherTraced=async function(a,b){try{return await a(...b)}catch(a){throw d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),a}},c.withErrorInstrumentation=function(a){return async function(...b){try{return await a.apply(this,b)}catch(b){throw d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:a.name}}}),b}}},c.withTracedServerSideDataFetcher=function(a,b,c,f){return async function(...c){let g=d.httpRequestToRequestData(b);d.getCurrentScope().setTransactionName(`${f.dataFetchingMethodName} (${f.dataFetcherRouteName})`),d.getIsolationScope().setSDKProcessingMetadata({normalizedRequest:g});let h=d.getActiveSpan();h&&"/_error"!==f.requestedRouteName&&d.getRootSpan(h).setAttribute(e.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL,f.requestedRouteName);let{"sentry-trace":i,baggage:j}=d.getTraceData();return{sentryTrace:i,baggage:j,data:await a.apply(this,c)}}}},709897,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetStaticPropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let f=e.withErrorInstrumentation(a);return e.callDataFetcherTraced(f,c)}})}},890588,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:f.pathname,requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c)??{};return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},739941,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapAppGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f.ctx,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_app",requestedRouteName:f.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,sentryTrace:j,baggage:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(d.pageProps||(d.pageProps={}),j&&(d.pageProps._sentryTraceData=j),k&&(d.pageProps._sentryBaggage=k)),d}}})}},588876,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapDocumentGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_document",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d}=await a.apply(b,c);return d}}})}},178211,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapErrorGetInitialPropsWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{if(d.isBuild())return a.apply(b,c);let[f]=c,{req:g,res:h}=f,i=e.withErrorInstrumentation(a);if(!g||!h)return i.apply(b,c);{let a=e.withTracedServerSideDataFetcher(i,g,h,{dataFetcherRouteName:"/_error",requestedRouteName:f.pathname,dataFetchingMethodName:"getInitialProps"}),{data:d,baggage:j,sentryTrace:k}=await a.apply(b,c);return"object"==typeof d&&null!==d&&(k&&(d._sentryTraceData=k),j&&(d._sentryBaggage=j)),d}}})}},193860,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(494409),e=a.r(988136);c.wrapGetServerSidePropsWithSentry=function(a,b){return new Proxy(a,{apply:async(a,c,f)=>{if(d.isBuild())return a.apply(c,f);let[g]=f,{req:h,res:i}=g,j=e.withErrorInstrumentation(a),k=e.withTracedServerSideDataFetcher(j,h,i,{dataFetcherRouteName:b,requestedRouteName:b,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:m,sentryTrace:n}=await k.apply(c,f);return"object"==typeof l&&null!==l&&"props"in l&&(n&&(l.props._sentryTraceData=n),m&&(l.props._sentryBaggage=m)),l}})}},902363,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.isNotFoundNavigationError=function(a){return d.isError(a)&&["NEXT_NOT_FOUND","NEXT_HTTP_ERROR_FALLBACK;404"].includes(a.digest)},c.isRedirectNavigationError=function(a){return d.isError(a)&&"string"==typeof a.digest&&a.digest.startsWith("NEXT_REDIRECT;")}},655243,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);c.wrapServerComponentWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h=d.getIsolationScope(),i=b.headers?d.winterCGHeadersToDict(b.headers):void 0;return h.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g}=b,i=!0;h.setTransactionName(`${g} Server Component (${f})`),c&&(e.isNotFoundNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(i=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),i&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},22912,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);a.r(571795),c.wrapRouteHandlerWithSentry=function(a,b){let{method:c,parameterizedRoute:g,headers:h}=b;return new Proxy(a,{apply:async(a,b,h)=>{let i=d.getActiveSpan(),j=i?d.getRootSpan(i):void 0;return d.withIsolationScope(d.getIsolationScope(),()=>d.withScope(async k=>{k.setTransactionName(`${c} ${g}`);let l=await d.handleCallbackErrors(()=>a.apply(b,h),a=>{e.isRedirectNavigationError(a)||(e.isNotFoundNavigationError(a)?(i&&d.setHttpStatus(i,404),j&&d.setHttpStatus(j,404)):d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{f.waitUntil(f.flushSafelyWithTimeout())});try{l.status&&(i&&d.setHttpStatus(i,l.status),j&&d.setHttpStatus(j,l.status))}catch{}return l}))}})}},102626,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);c.wrapApiHandlerWithSentryVercelCrons=function(a,b){return new Proxy(a,{apply:(a,c,e)=>{let f;if(!e?.[0])return a.apply(c,e);let[g]=e,h="nextUrl"in g?g.nextUrl.pathname:g.url,i="nextUrl"in g?g.headers.get("user-agent"):g.headers["user-agent"];if(!b||!i?.includes("vercel-cron"))return a.apply(c,e);let j=b.find(a=>a.path===h);if(!j?.path||!j.schedule)return a.apply(c,e);let k=j.path,l=d.captureCheckIn({monitorSlug:k,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:j.schedule}}),m=d._INTERNAL_safeDateNow()/1e3,n=()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"error",duration:d._INTERNAL_safeDateNow()/1e3-m})};try{f=a.apply(c,e)}catch(a){throw n(),a}return"object"==typeof f&&null!==f&&"then"in f?Promise.resolve(f).then(()=>{d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m})},()=>{n()}):d.captureCheckIn({checkInId:l,monitorSlug:k,status:"ok",duration:d._INTERNAL_safeDateNow()/1e3-m}),f}})}},689914,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.wrapMiddlewareWithSentry=function(a){return new Proxy(a,{apply:async(a,b,c)=>{let f="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(f&&"string"==typeof f){let a=c[0];if(a instanceof Request&&new URL(a.url).pathname.startsWith(f))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return d.withIsolationScope(f=>{let g,h,i=c[0],j=d.getCurrentScope();i instanceof Request?(f.setSDKProcessingMetadata({normalizedRequest:d.winterCGRequestToRequestData(i)}),g=`middleware ${i.method}`,h="url"):(g="middleware",h="component"),j.setTransactionName(g);let k=d.getActiveSpan();if(k){g="middleware",h="component";let a=d.getRootSpan(k);a&&d.setCapturedScopesOnSpan(a,j,f)}return d.startSpan({name:g,op:"http.server.middleware",attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:h,[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>d.handleCallbackErrors(()=>a.apply(b,c),a=>{d.captureException(a,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{e.waitUntil(e.flushSafelyWithTimeout())}))})}})}},260329,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845);function e(a,b){a&&"object"==typeof a&&d.addNonEnumerableProperty(a,"__sentry_event_id__",b)}c.wrapPageComponentWithSentry=function(a){return"function"==typeof a&&a?.prototype?.isReactComponent?class extends a{render(...a){return d.withIsolationScope(()=>{let b=d.getCurrentScope(),c="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(c){let a=d.extractTraceparentData(c);b.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return super.render(...a)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw e(b,a),b}})}}:"function"==typeof a?new Proxy(a,{apply:(a,b,c)=>d.withIsolationScope(()=>{let f=d.getCurrentScope(),g=c?.[0]?._sentryTraceData;if(g){let a=d.extractTraceparentData(g);f.setContext("trace",{span_id:a?.parentSpanId,trace_id:a?.traceId})}try{return a.apply(b,c)}catch(b){let a=d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw e(b,a),b}})}):a}},773896,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(902363),f=a.r(291230);c.wrapGenerationFunctionWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>{let h,i=d.getIsolationScope();try{h=b.requestAsyncStorage?.getStore()?.headers}catch{}let j=h?d.winterCGHeadersToDict(h):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:j}}),d.handleCallbackErrors(()=>a.apply(c,g),a=>{let c=d.getActiveSpan(),{componentRoute:f,componentType:g,generationFunctionIdentifier:h}=b,j=!0;i.setTransactionName(`${g}.${h} (${f})`),c&&(e.isNotFoundNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"})):e.isRedirectNavigationError(a)?(j=!1,c.setStatus({code:d.SPAN_STATUS_OK})):c.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"})),j&&d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:h}}})},()=>{f.waitUntil(f.flushSafelyWithTimeout())})}})}},341264,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230),f=a.r(263581),g=a.r(902363);async function h(a,b,c){return d.withIsolationScope(async h=>{let i,j,k=d.getClient()?.getOptions().sendDefaultPii,l={};try{let a=await b.headers;i=a?.get("sentry-trace")??void 0,j=a?.get("baggage"),a?.forEach((a,b)=>{l[b]=a})}catch{f.DEBUG_BUILD&&d.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return h.setTransactionName(`serverAction/${a}`),h.setSDKProcessingMetadata({normalizedRequest:{headers:l}}),(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:i,baggage:j},async()=>{try{return await d.startSpan({op:"function.server_action",name:`serverAction/${a}`,forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async a=>{let e=await d.handleCallbackErrors(c,b=>{g.isNotFoundNavigationError(b)?a.setStatus({code:d.SPAN_STATUS_ERROR,message:"not_found"}):g.isRedirectNavigationError(b)||(a.setStatus({code:d.SPAN_STATUS_ERROR,message:"internal_error"}),d.captureException(b,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==b.recordResponse?b.recordResponse:k)&&d.getIsolationScope().setExtra("server_action_result",e),b.formData&&b.formData.forEach((a,b)=>{d.getIsolationScope().setExtra(`server_action_form_data.${b}`,"string"==typeof a?a:"[non-string value]")}),e})}finally{e.waitUntil(e.flushSafelyWithTimeout())}})})}c.withServerActionInstrumentation=function(...a){if("function"==typeof a[1]){let[b,c]=a;return h(b,{},c)}{let[b,c,d]=a;return h(b,c,d)}}},958031,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230);c.captureRequestError=function(a,b,c){d.withScope(f=>{f.setSDKProcessingMetadata({normalizedRequest:{headers:d.headersToDict(b.headers),method:b.method}}),f.setContext("nextjs",{request_path:b.path,router_kind:c.routerKind,router_path:c.routePath,route_type:c.routeType}),f.setTransactionName(`${b.method} ${c.routePath}`),d.captureException(a,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),e.waitUntil(e.flushSafelyWithTimeout())})}},427967,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(187845),e=a.r(291230),f=a.r(571795);c.wrapApiHandlerWithSentry=function(a,b){return new Proxy(a,{apply:(a,c,g)=>(f.dropNextjsRootContext(),f.escapeNextjsTracing(()=>{let[f,h]=g;return f?h?f.__withSentry_applied__?a.apply(c,g):(f.__withSentry_applied__=!0,d.withIsolationScope(i=>(d.getActiveSpan()?(a,b)=>b():d.continueTrace)({sentryTrace:f.headers&&d.isString(f.headers["sentry-trace"])?f.headers["sentry-trace"]:void 0,baggage:f.headers?.baggage},()=>{let j=`${(f.method||"GET").toUpperCase()} `,k=d.httpRequestToRequestData(f);return i.setSDKProcessingMetadata({normalizedRequest:k}),i.setTransactionName(`${j}${b}`),d.startSpanManual({name:`${j}${b}`,op:"http.server",forceTransaction:!0,attributes:{[d.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[d.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.nextjs"}},async b=>{h.end=new Proxy(h.end,{apply:(a,c,f)=>(d.setHttpStatus(b,h.statusCode),b.end(),e.waitUntil(e.flushSafelyWithTimeout()),a.apply(c,f))});try{return await a.apply(c,g)}catch(f){let c=d.objectify(f);throw d.captureException(c,{mechanism:{type:"auto.http.nextjs.api_handler",handled:!1,data:{wrapped_handler:a.name,function:"withSentry"}}}),d.setHttpStatus(b,500),b.end(),await e.flushSafelyWithTimeout(),c}})}))):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a response object. Will not instrument.`),a.apply(c,g)):(d.debug.log(`Wrapped API handler on route "${b}" was not passed a request object. Will not instrument.`),a.apply(c,g))}))})}},610599,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(357122),e=a.r(187845),f=a.r(848074),g=a.r(263581);a.r(10308);let h=a.r(983894),i=a.r(411290),j=a.r(228551),k=a.r(494409),l=a.r(291230),m=a.r(521467),n=a.r(553484),o=a.r(155672),p=a.r(342069),q=a.r(266098),r=a.r(658788),s=a.r(575672),t=a.r(145408),u=a.r(709897),v=a.r(890588),w=a.r(739941),x=a.r(588876),y=a.r(178211),z=a.r(193860),A=a.r(655243),B=a.r(22912),C=a.r(102626),D=a.r(689914),E=a.r(260329),F=a.r(773896),G=a.r(341264),H=a.r(958031),I=a.r(427967);e.GLOBAL_OBJ,c.captureUnderscoreErrorException=s.captureUnderscoreErrorException,c.startInactiveSpan=t.startInactiveSpan,c.startSpan=t.startSpan,c.startSpanManual=t.startSpanManual,c.wrapGetStaticPropsWithSentry=u.wrapGetStaticPropsWithSentry,c.wrapGetInitialPropsWithSentry=v.wrapGetInitialPropsWithSentry,c.wrapAppGetInitialPropsWithSentry=w.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=x.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=y.wrapErrorGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=z.wrapGetServerSidePropsWithSentry,c.wrapServerComponentWithSentry=A.wrapServerComponentWithSentry,c.wrapRouteHandlerWithSentry=B.wrapRouteHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=C.wrapApiHandlerWithSentryVercelCrons,c.wrapMiddlewareWithSentry=D.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=E.wrapPageComponentWithSentry,c.wrapGenerationFunctionWithSentry=F.wrapGenerationFunctionWithSentry,c.withServerActionInstrumentation=G.withServerActionInstrumentation,c.captureRequestError=H.captureRequestError,c.wrapApiHandlerWithSentry=I.wrapApiHandlerWithSentry,c.ErrorBoundary=a=>a.children?"function"==typeof a.children?a.children():a.children:null,c.createReduxEnhancer=function(){return a=>a},c.init=function(a){if(p.prepareSafeIdGeneratorContext(),k.isBuild())return;!g.DEBUG_BUILD&&a.debug&&console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.");let b=f.getDefaultIntegrations(a).filter(a=>"Http"!==a.name).concat(f.httpIntegration({disableIncomingRequestSpans:!0}));a.skipOpenTelemetrySetup||(process.env.NEXT_OTEL_FETCH_DISABLED="1"),b.push(n.distDirRewriteFramesIntegration({distDirName:".next"}));let c=function(){if(l.isCloudflareWaitUntilAvailable())return{runtime:{name:"cloudflare"}}}(),s={environment:a.environment||process.env.SENTRY_ENVIRONMENT||h.getVercelEnv(!1)||"production",release:"dc62485b60679b810b5f74bfb5a22915b7a62314",defaultIntegrations:b,...a,...c};if(g.DEBUG_BUILD&&s.debug&&e.debug.enable(),g.DEBUG_BUILD&&e.debug.log("Initializing SDK..."),e.getClient()){g.DEBUG_BUILD&&e.debug.log("SDK already initialized");return}e.applySdkMetadata(s,"nextjs",["nextjs",c?"cloudflare":"node"]);let t=f.init(s);t?.on("beforeSampling",({spanAttributes:a},b)=>{("string"==typeof a[d.SEMATTRS_HTTP_TARGET]&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_key")&&a[d.SEMATTRS_HTTP_TARGET].includes("sentry_client")||"string"==typeof a[d.ATTR_URL_QUERY]&&a[d.ATTR_URL_QUERY].includes("sentry_key")&&a[d.ATTR_URL_QUERY].includes("sentry_client"))&&(b.decision=!1)}),t?.on("spanStart",o.handleOnSpanStart),t?.on("spanEnd",q.maybeCompleteCronCheckIn),t?.on("spanEnd",r.maybeCleanupQueueSpan),e.getGlobalScope().addEventProcessor(Object.assign(a=>{if("transaction"!==a.type)return a;if(a.transaction?.match(/^GET (\/.*)?\/_next\/static\//)||a.transaction?.match(/\/__nextjs_original-stack-frame/)||"/404"===a.transaction||a.transaction?.match(/^(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH) \/(404|_not-found)$/)||a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION]||"NextServer.getRequestHandler"===a.transaction)return null;if("string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);if(b?.parentSampled===!1)return null}return a},{id:"NextLowQualityTransactionsFilter"})),e.getGlobalScope().addEventProcessor(Object.assign((a,b)=>{if(void 0!==a.type)return a;let c=b.originalException;if("object"==typeof c&&null!==c&&"$$typeof"in c&&c.$$typeof===Symbol.for("react.postpone"))return null;let d=a.exception?.values?.[0]?.value;return d?.includes("Suspense Exception: This is not a real error!")||d?.includes("Suspense Exception: This is not a real error, and should not leak")?null:a},{id:"DropReactControlFlowErrors"})),t?.on("preprocessEvent",a=>{if("transaction"===a.type&&a.contexts?.trace?.data?.[i.ATTR_NEXT_SPAN_TYPE]==="BaseServer.handleRequest"){a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_OP]="http.server",a.contexts.trace.op="http.server",a.transaction&&(a.transaction=e.stripUrlQueryAndFragment(a.transaction));let b=a.contexts.trace.data[d.SEMATTRS_HTTP_METHOD],c=a.contexts?.trace?.data?.[d.SEMATTRS_HTTP_TARGET],f=a.contexts.trace.data[d.ATTR_HTTP_ROUTE]||a.contexts.trace.data[i.ATTR_NEXT_ROUTE],g=a.contexts.trace.data[i.ATTR_NEXT_SPAN_NAME];if("string"==typeof b&&"string"==typeof f&&!f.startsWith("middleware")){let c=f.replace(/\/route$/,"");a.transaction=`${b} ${c}`,a.contexts.trace.data[e.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="route",a.contexts.trace.data[i.ATTR_NEXT_ROUTE]=c}a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]&&"GET /_app"!==a.transaction&&(a.transaction=`${b} ${a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_ROUTE_BACKFILL]}`);let h="string"==typeof g&&g.match(/^middleware (GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)/);h&&(a.transaction=`middleware ${h[1]}`,a.contexts.trace.op="http.server.middleware"),"GET /_error"===a.transaction&&c&&(a.transaction=`${b?`${b} `:""}${c}`)}if("transaction"===a.type&&"string"==typeof a.contexts?.trace?.data?.[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]){let b=e.extractTraceparentData(a.contexts.trace.data[j.TRANSACTION_ATTR_SENTRY_TRACE_BACKFILL]);b?.traceId&&(a.contexts.trace.trace_id=b.traceId),b?.parentSpanId&&(a.contexts.trace.parent_span_id=b.parentSpanId)}m.setUrlProcessingMetadata(a)});try{e.getGlobalScope().setTag("turbopack",!0)}catch{}return g.DEBUG_BUILD&&e.debug.log("SDK successfully initialized"),t},c.showReportDialog=function(){},c.withErrorBoundary=function(a){return a},Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})},305803,(a,b,c)=>{Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});let d=a.r(474224),e=a.r(610599),f=a.r(848074),g=a.r(958031),h=a.r(575672),i=a.r(145408),j=a.r(341264),k=a.r(427967),l=a.r(102626),m=a.r(739941),n=a.r(588876),o=a.r(178211),p=a.r(773896),q=a.r(890588),r=a.r(193860),s=a.r(709897),t=a.r(689914),u=a.r(260329),v=a.r(22912),w=a.r(655243);c.withSentryConfig=d.withSentryConfig,c.ErrorBoundary=e.ErrorBoundary,c.createReduxEnhancer=e.createReduxEnhancer,c.init=e.init,c.showReportDialog=e.showReportDialog,c.withErrorBoundary=e.withErrorBoundary,c.captureRequestError=g.captureRequestError,c.captureUnderscoreErrorException=h.captureUnderscoreErrorException,c.startInactiveSpan=i.startInactiveSpan,c.startSpan=i.startSpan,c.startSpanManual=i.startSpanManual,c.withServerActionInstrumentation=j.withServerActionInstrumentation,c.wrapApiHandlerWithSentry=k.wrapApiHandlerWithSentry,c.wrapApiHandlerWithSentryVercelCrons=l.wrapApiHandlerWithSentryVercelCrons,c.wrapAppGetInitialPropsWithSentry=m.wrapAppGetInitialPropsWithSentry,c.wrapDocumentGetInitialPropsWithSentry=n.wrapDocumentGetInitialPropsWithSentry,c.wrapErrorGetInitialPropsWithSentry=o.wrapErrorGetInitialPropsWithSentry,c.wrapGenerationFunctionWithSentry=p.wrapGenerationFunctionWithSentry,c.wrapGetInitialPropsWithSentry=q.wrapGetInitialPropsWithSentry,c.wrapGetServerSidePropsWithSentry=r.wrapGetServerSidePropsWithSentry,c.wrapGetStaticPropsWithSentry=s.wrapGetStaticPropsWithSentry,c.wrapMiddlewareWithSentry=t.wrapMiddlewareWithSentry,c.wrapPageComponentWithSentry=u.wrapPageComponentWithSentry,c.wrapRouteHandlerWithSentry=v.wrapRouteHandlerWithSentry,c.wrapServerComponentWithSentry=w.wrapServerComponentWithSentry,Object.prototype.hasOwnProperty.call(f,"__proto__")&&!Object.prototype.hasOwnProperty.call(c,"__proto__")&&Object.defineProperty(c,"__proto__",{enumerable:!0,value:f.__proto__}),Object.keys(f).forEach(a=>{"default"===a||Object.prototype.hasOwnProperty.call(c,a)||(c[a]=f[a])})}]; -//# debugId=4de6bcc9-110d-c5e1-84bb-f8ff52794f2a +//# debugId=85b2df47-db08-9f4c-e7fd-3b057452485d //# sourceMappingURL=node_modules__pnpm_66399b09._.js.map \ No newline at end of file diff --git a/.next/standalone/.next/server/pages/404.html b/.next/standalone/.next/server/pages/404.html index 83b002999..98cfb6c39 100644 --- a/.next/standalone/.next/server/pages/404.html +++ b/.next/standalone/.next/server/pages/404.html @@ -1 +1 @@ -404: This page could not be found.

      404

      This page could not be found.

      \ No newline at end of file +404: This page could not be found.

      404

      This page could not be found.

      \ No newline at end of file diff --git a/.next/standalone/.next/server/pages/500.html b/.next/standalone/.next/server/pages/500.html index 65f9a031c..e83f19541 100644 --- a/.next/standalone/.next/server/pages/500.html +++ b/.next/standalone/.next/server/pages/500.html @@ -1,2 +1,2 @@ -500: Internal Server Error.

      500

      Internal Server Error.

      \ No newline at end of file +500: Internal Server Error.

      500

      Internal Server Error.

      \ No newline at end of file diff --git a/.next/standalone/server.js b/.next/standalone/server.js index 5c16eb387..dae58cc28 100644 --- a/.next/standalone/server.js +++ b/.next/standalone/server.js @@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000 const hostname = process.env.HOSTNAME || '0.0.0.0' let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10) -const nextConfig = {"env":{"_sentryRewriteFramesDistDir":".next","_sentryRewriteFramesAssetPrefixPath":"","_sentryRelease":"9dad66acd3deb36c6e51fae1fdce6de96dd992c7"},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[{"protocol":"https","hostname":"e-tib.com"},{"protocol":"https","hostname":"*.e-tib.com"},{"protocol":"http","hostname":"e-tib.com"},{"protocol":"http","hostname":"*.e-tib.com"},{"protocol":"http","hostname":"etib.localhost"},{"protocol":"http","hostname":"localhost"}],"qualities":[25,50,75,100],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":300000,"pagesBufferLength":2},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":false,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"fetches":{"fullUrl":true}},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/Volumes/Alpha SSD/Coding/e-tib.com","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":15,"memoryBasedWorkersCount":true,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"clientTraceMetadata":["baggage","sentry-trace"],"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","framer-motion","@/components/ui","@sentry/nextjs","react-hook-form","zod","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"serverActions":{"allowedOrigins":["*.e-tib.com","*.branch.e-tib.com","localhost:3000","etib.localhost"]},"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","turbopack":{"resolveAlias":{"next-intl/config":"./i18n/request.ts","next-mdx-import-source-file":"@vercel/turbopack-next/mdx-import-source"},"debugIds":true,"rules":{"**/instrumentation-client.*":{"condition":{"not":"foreign"},"loaders":[{"loader":"/Volumes/Alpha SSD/Coding/e-tib.com/node_modules/.pnpm/@sentry+nextjs@10.47.0_@opentelemetry+context-async-hooks@2.6.1_@opentelemetry+api@1.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/@sentry/nextjs/build/cjs/config/loaders/valueInjectionLoader.js","options":{"values":{"_sentryRouteManifest":"{\"dynamicRoutes\":[{\"path\":\"/:locale\",\"regex\":\"^/([^/]+)$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/:slug\",\"regex\":\"^/([^/]+)/([^/]+)$\",\"paramNames\":[\"locale\",\"slug\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/blog\",\"regex\":\"^/([^/]+)/blog$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/blog/:slug\",\"regex\":\"^/([^/]+)/blog/([^/]+)$\",\"paramNames\":[\"locale\",\"slug\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/contact\",\"regex\":\"^/([^/]+)/contact$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/team\",\"regex\":\"^/([^/]+)/team$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/test\",\"regex\":\"^/([^/]+)/test$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true}],\"staticRoutes\":[{\"path\":\"/test\"}],\"isrRoutes\":[\"/:locale/contact\"]}","_sentryNextJsVersion":"16.1.6"}}}]},"**/instrumentation.*":{"condition":{"not":"foreign"},"loaders":[{"loader":"/Volumes/Alpha SSD/Coding/e-tib.com/node_modules/.pnpm/@sentry+nextjs@10.47.0_@opentelemetry+context-async-hooks@2.6.1_@opentelemetry+api@1.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/@sentry/nextjs/build/cjs/config/loaders/valueInjectionLoader.js","options":{"values":{"__SENTRY_SERVER_MODULES__":{"@mintel/mail":"1.9.5","@mintel/next-config":"1.9.5","@mintel/next-feedback":"1.9.5","@mintel/next-utils":"1.9.5","@next/mdx":"^16.1.6","@react-email/components":"1.0.8","@react-pdf/renderer":"^4.3.2","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@sentry/nextjs":"^10.39.0","@types/recharts":"^2.0.1","axios":"^1.13.5","clsx":"^2.1.1","framer-motion":"^12.34.0","graphql":"^16.12.0","gray-matter":"^4.0.3","i18next":"^25.7.3","import-in-the-middle":"^1.11.0","ioredis":"^5.9.3","jsdom":"^27.4.0","leaflet":"^1.9.4","next":"16.1.6","next-i18next":"^15.4.3","next-intl":"^4.8.2","next-mdx-remote":"^5.0.0","nodemailer":"^8.0.7","pdf-lib":"^1.17.1","pino":"^10.3.0","pino-pretty":"^13.1.3","react":"^19.2.4","react-dom":"^19.2.4","react-email":"^5.2.5","react-leaflet":"^4.2.1","react-markdown":"^10.1.0","recharts":"^3.7.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.1","require-in-the-middle":"^8.0.1","resend":"^3.5.0","schema-dts":"^1.1.5","sharp":"^0.34.5","svg-to-pdfkit":"^0.1.8","tailwind-merge":"^3.4.0","three":"^0.183.1","xlsx":"npm:@e965/xlsx@^0.20.3","zod":"3.25.76","@commitlint/cli":"^20.4.0","@commitlint/config-conventional":"^20.4.0","@cspell/dict-de-de":"^4.1.2","@lhci/cli":"^0.15.1","@mintel/eslint-config":"^1.9.0","@mintel/tsconfig":"^1.9.0","@next/bundle-analyzer":"^16.1.6","@tailwindcss/cli":"^4.1.18","@tailwindcss/postcss":"^4.1.18","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/node":"^22.19.3","@types/nodemailer":"^7.0.5","@types/react":"^19.2.7","@types/react-dom":"^19.2.3","@types/sharp":"^0.31.1","@types/three":"^0.183.1","@vitejs/plugin-react":"^5.1.4","@vitest/ui":"^4.0.16","autoprefixer":"^10.4.23","cheerio":"^1.2.0","critters":"^0.0.25","cspell":"^9.6.4","dotenv":"^17.3.1","eslint":"^9.18.0","happy-dom":"^20.6.1","html-validate":"^10.8.0","husky":"^9.1.7","lint-staged":"^16.2.7","lucide-react":"^0.563.0","pa11y-ci":"^4.0.1","pdf-parse":"^2.4.5","postcss":"^8.5.6","prettier":"^3.8.1","puppeteer":"^24.37.3","sass":"^1.97.1","start-server-and-test":"^2.1.3","tailwindcss":"^4.1.18","tsx":"^4.21.0","turbo":"^2.8.10","typescript":"^5.7.2","vitest":"^4.0.16","xlsx-cli":"^1.1.3"},"_sentryNextJsVersion":"16.1.6"}}}]},"{*,next-mdx-rule}":[{"loaders":[{"loader":"/Volumes/Alpha SSD/Coding/e-tib.com/node_modules/.pnpm/@next+mdx@16.2.4_@mdx-js+react@3.1.1_@types+react@19.2.14_react@19.2.4_/node_modules/@next/mdx/mdx-js-loader.js","options":{"providerImportSource":"next-mdx-import-source-file"}}],"as":"*.tsx","condition":{"path":{}}}]},"root":"/Volumes/Alpha SSD/Coding/e-tib.com"},"transpilePackages":["react-image-crop","@react-three/fiber"],"serverExternalPackages":["amqplib","connect","dataloader","express","generic-pool","graphql","@hapi/hapi","ioredis","kafkajs","koa","lru-memoizer","mongodb","mongoose","mysql","mysql2","knex","pg","pg-pool","@node-redis/client","@redis/client","redis","tedious"],"distDirRoot":".next","_originalRewrites":{"beforeFiles":[{"source":"/:locale/datasheets/:path*","destination":"/api/datasheets/:path*"},{"source":"/:locale/brochures/:path*","destination":"/api/brochures/:path*"},{"source":"/datasheets/:path*","destination":"/api/datasheets/:path*"},{"source":"/brochures/:path*","destination":"/api/brochures/:path*"},{"source":"/de/produkte","destination":"/de/products"},{"source":"/de/produkte/:path*","destination":"/de/products/:path*"},{"source":"/de/kontakt","destination":"/de/contact"},{"source":"/en/produkte","destination":"/en/products"},{"source":"/en/produkte/:path*","destination":"/en/products/:path*"},{"source":"/en/kontakt","destination":"/en/contact"},{"source":"/en/impressum","destination":"/en/legal-notice"},{"source":"/en/datenschutz","destination":"/en/privacy-policy"},{"source":"/en/agbs","destination":"/en/terms"}],"afterFiles":[],"fallback":[]},"_originalRedirects":[{"source":"/blog","destination":"/de/blog","permanent":true},{"source":"/contact","destination":"/de/contact","permanent":true},{"source":"/team","destination":"/de/team","permanent":true},{"source":"/products","destination":"/de/products","permanent":true},{"source":"/posts/100-renewable-energy-only-with-the-right-cable-infrastructure.html","destination":"/de/blog/100-renewable-energy-only-with-the-right-cable-infrastructure","permanent":true},{"source":"/posts/billion-euro-package-for-infrastructure-the-cable-boom-is-coming.html","destination":"/de/blog/billion-euro-package-for-infrastructure-the-cable-boom-is-coming","permanent":true},{"source":"/posts/cable-abbreviations-decoded-the-key-to-choosing-the-right-cable.html","destination":"/de/blog/cable-abbreviations-decoded-the-key-to-choosing-the-right-cable","permanent":true},{"source":"/posts/cable-drum-quality-the-foundation-of-cable-reliability.html","destination":"/de/blog/cable-drum-quality-the-foundation-of-cable-reliability","permanent":true},{"source":"/posts/cable-drum-safety-ensuring-smooth-operations-and-accident-free-environments.html","destination":"/de/blog/cable-drum-safety-ensuring-smooth-operations-and-accident-free-environments","permanent":true},{"source":"/posts/climate-neutral-by-2050-what-we-need-to-do-to-achieve-this-goal.html","destination":"/de/blog/climate-neutral-by-2050-what-we-need-to-do-to-achieve-this-goal","permanent":true},{"source":"/posts/cost-comparison-copper-vs-aluminum-cables-in-wind-farms-which-is-worthwhile-in-the-long-term.html","destination":"/de/blog/cost-comparison-copper-vs-aluminum-cables-in-wind-farms-which-is-worthwhile-in-the-long-term","permanent":true},{"source":"/posts/expanding-the-grid-by-2025-building-the-foundation-for-a-successful-energy-transition.html","destination":"/de/blog/expanding-the-grid-by-2025-building-the-foundation-for-a-successful-energy-transition","permanent":true},{"source":"/posts/eye-opening-realities-of-green-energy-transformation.html","destination":"/de/blog/eye-opening-realities-of-green-energy-transformation","permanent":true},{"source":"/posts/focus-on-wind-farm-construction-three-typical-cable-challenges.html","destination":"/de/blog/focus-on-wind-farm-construction-three-typical-cable-challenges","permanent":true},{"source":"/posts/from-smart-to-sustainable-this-is-what-the-energy-industry-will-look-like-in-the-near-future.html","destination":"/de/blog/from-smart-to-sustainable-this-is-what-the-energy-industry-will-look-like-in-the-near-future","permanent":true},{"source":"/posts/green-energy-starts-underground-and-with-a-plan.html","destination":"/de/blog/green-energy-starts-underground-and-with-a-plan","permanent":true},{"source":"/posts/how-the-cable-industry-is-driving-sustainability-and-renewable-energies-forward.html","destination":"/de/blog/how-the-cable-industry-is-driving-sustainability-and-renewable-energies-forward","permanent":true},{"source":"/posts/how-the-right-cables-quietly-power-the-green-energy-revolution.html","destination":"/de/blog/how-the-right-cables-quietly-power-the-green-energy-revolution","permanent":true},{"source":"/posts/how-to-choose-the-right-cable-for-your-next-project.html","destination":"/de/blog/how-to-choose-the-right-cable-for-your-next-project","permanent":true},{"source":"/posts/is-wind-energy-really-enough-a-deeper-dive-behind-the-headlines.html","destination":"/de/blog/is-wind-energy-really-enough-a-deeper-dive-behind-the-headlines","permanent":true},{"source":"/posts/etib-in-the-directory-of-wind-energy-2025.html","destination":"/de/blog/etib-in-the-directory-of-wind-energy-2025","permanent":true},{"source":"/posts/na2xsf2y-three-conductor-medium-voltage-cable-available.html","destination":"/de/blog/na2xsf2y-three-conductor-medium-voltage-cable-available","permanent":true},{"source":"/posts/recycling-of-cable-drums-sustainability-in-wind-power-projects.html","destination":"/de/blog/recycling-of-cable-drums-sustainability-in-wind-power-projects","permanent":true},{"source":"/posts/securing-the-future-with-h1z2z2-k-our-solar-cable-for-intersolar-2025.html","destination":"/de/blog/securing-the-future-with-h1z2z2-k-our-solar-cable-for-intersolar-2025","permanent":true},{"source":"/posts/the-art-of-cable-logistics-moving-the-backbone-of-modern-energy-networks.html","destination":"/de/blog/the-art-of-cable-logistics-moving-the-backbone-of-modern-energy-networks","permanent":true},{"source":"/posts/the-best-underground-cables-for-wind-power-and-solar-order-from-us-now.html","destination":"/de/blog/the-best-underground-cables-for-wind-power-and-solar-order-from-us-now","permanent":true},{"source":"/posts/the-perfect-cable-inquiry-how-to-save-yourself-unnecessary-queries.html","destination":"/de/blog/the-perfect-cable-inquiry-how-to-save-yourself-unnecessary-queries","permanent":true},{"source":"/posts/this-what-you-need-to-know-about-renewable-energies-in-2025.html","destination":"/de/blog/this-what-you-need-to-know-about-renewable-energies-in-2025","permanent":true},{"source":"/posts/welcome-to-the-future-of-etib-our-new-website-is-live.html","destination":"/de/blog/welcome-to-the-future-of-etib-our-new-website-is-live","permanent":true},{"source":"/posts/what-makes-a-first-class-cable-find-out-here.html","destination":"/de/blog/what-makes-a-first-class-cable-find-out-here","permanent":true},{"source":"/posts/which-cables-for-wind-power-differences-from-low-to-extra-high-voltage-explained-2.html","destination":"/de/blog/which-cables-for-wind-power-differences-from-low-to-extra-high-voltage-explained-2","permanent":true},{"source":"/posts/why-the-n2xsf2y-is-the-ideal-cable-for-your-energy-project.html","destination":"/de/blog/why-the-n2xsf2y-is-the-ideal-cable-for-your-energy-project","permanent":true},{"source":"/posts/why-wind-farm-grid-connection-cables-must-withstand-extreme-loads.html","destination":"/de/blog/why-wind-farm-grid-connection-cables-must-withstand-extreme-loads","permanent":true},{"source":"/products/power-cables/high-voltage-cables/n2xsfl2y","destination":"/de/products/n2xsfl2y-hv","permanent":true},{"source":"/products/power-cables/high-voltage-cables/na2xsfl2y-3","destination":"/de/products/na2xsfl2y-hv","permanent":true},{"source":"/products/power-cables/low-voltage-cables/n2x2y","destination":"/de/products/n2x2y","permanent":true},{"source":"/products/power-cables/low-voltage-cables/n2xy","destination":"/de/products/n2xy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/na2x2y","destination":"/de/products/na2x2y","permanent":true},{"source":"/products/power-cables/low-voltage-cables/na2xy","destination":"/de/products/na2xy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/nay2y","destination":"/de/products/nay2y","permanent":true},{"source":"/products/power-cables/low-voltage-cables/naycwy","destination":"/de/products/naycwy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/nayy","destination":"/de/products/nayy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/ny2y","destination":"/de/products/ny2y","permanent":true},{"source":"/products/power-cables/low-voltage-cables/nycwy","destination":"/de/products/nycwy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/nyy","destination":"/de/products/nyy","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/n2xs2y","destination":"/de/products/n2xs2y","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/n2xsf2y","destination":"/de/products/n2xsf2y","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/n2xsfl2y-3","destination":"/de/products/n2xsfl2y-mv","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/na2xs2y","destination":"/de/products/na2xs2y","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/na2xsf2y","destination":"/de/products/na2xsf2y","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/na2xsfl2y","destination":"/de/products/na2xsfl2y-mv","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/na2xsy","destination":"/de/products/na2xsy","permanent":true},{"source":"/products/solar-cables/h1z2z2-k","destination":"/de/products/solar-cables/h1z2z2-k","permanent":true},{"source":"/de/produkte/stromkabel/solarkabel/h1z2z2-k","destination":"/de/produkte/solarkabel/h1z2z2-k","permanent":true},{"source":"/de/produkte/stromkabel/niederspannungskabel/naycwy-2","destination":"/de/produkte/niederspannungskabel/naycwy","permanent":true},{"source":"/de/produkte/stromkabel/niederspannungskabel/ny2y-2","destination":"/de/produkte/niederspannungskabel/ny2y","permanent":true},{"source":"/vcf/klaus-mintel","destination":"/klaus-mintel.vcf","permanent":true},{"source":"/vcf/michael-bodemer","destination":"/michael-bodemer.vcf","permanent":true}]} +const nextConfig = {"env":{"_sentryRewriteFramesDistDir":".next","_sentryRewriteFramesAssetPrefixPath":"","_sentryRelease":"dc62485b60679b810b5f74bfb5a22915b7a62314"},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[{"protocol":"https","hostname":"e-tib.com"},{"protocol":"https","hostname":"*.e-tib.com"},{"protocol":"http","hostname":"e-tib.com"},{"protocol":"http","hostname":"*.e-tib.com"},{"protocol":"http","hostname":"etib.localhost"},{"protocol":"http","hostname":"localhost"}],"qualities":[25,50,75,100],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":300000,"pagesBufferLength":2},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":false,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"fetches":{"fullUrl":true}},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/Volumes/Alpha SSD/Coding/e-tib.com","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":15,"memoryBasedWorkersCount":true,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"clientTraceMetadata":["baggage","sentry-trace"],"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","framer-motion","@/components/ui","@sentry/nextjs","react-hook-form","zod","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"serverActions":{"allowedOrigins":["*.e-tib.com","*.branch.e-tib.com","localhost:3000","etib.localhost"]},"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","turbopack":{"resolveAlias":{"next-intl/config":"./i18n/request.ts","next-mdx-import-source-file":"@vercel/turbopack-next/mdx-import-source"},"debugIds":true,"rules":{"**/instrumentation-client.*":{"condition":{"not":"foreign"},"loaders":[{"loader":"/Volumes/Alpha SSD/Coding/e-tib.com/node_modules/.pnpm/@sentry+nextjs@10.47.0_@opentelemetry+context-async-hooks@2.6.1_@opentelemetry+api@1.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/@sentry/nextjs/build/cjs/config/loaders/valueInjectionLoader.js","options":{"values":{"_sentryRouteManifest":"{\"dynamicRoutes\":[{\"path\":\"/:locale\",\"regex\":\"^/([^/]+)$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/:slug\",\"regex\":\"^/([^/]+)/([^/]+)$\",\"paramNames\":[\"locale\",\"slug\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/blog\",\"regex\":\"^/([^/]+)/blog$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/blog/:slug\",\"regex\":\"^/([^/]+)/blog/([^/]+)$\",\"paramNames\":[\"locale\",\"slug\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/contact\",\"regex\":\"^/([^/]+)/contact$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/team\",\"regex\":\"^/([^/]+)/team$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true},{\"path\":\"/:locale/test\",\"regex\":\"^/([^/]+)/test$\",\"paramNames\":[\"locale\"],\"hasOptionalPrefix\":true}],\"staticRoutes\":[{\"path\":\"/test\"}],\"isrRoutes\":[\"/:locale/contact\"]}","_sentryNextJsVersion":"16.1.6"}}}]},"**/instrumentation.*":{"condition":{"not":"foreign"},"loaders":[{"loader":"/Volumes/Alpha SSD/Coding/e-tib.com/node_modules/.pnpm/@sentry+nextjs@10.47.0_@opentelemetry+context-async-hooks@2.6.1_@opentelemetry+api@1.9._592068e1ec60e8e26228b1be96d6d8d5/node_modules/@sentry/nextjs/build/cjs/config/loaders/valueInjectionLoader.js","options":{"values":{"__SENTRY_SERVER_MODULES__":{"@mintel/mail":"1.9.5","@mintel/next-config":"1.9.5","@mintel/next-feedback":"1.9.5","@mintel/next-utils":"1.9.5","@next/mdx":"^16.1.6","@react-email/components":"1.0.8","@react-pdf/renderer":"^4.3.2","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.5.0","@sentry/nextjs":"^10.39.0","@types/recharts":"^2.0.1","axios":"^1.13.5","clsx":"^2.1.1","framer-motion":"^12.34.0","graphql":"^16.12.0","gray-matter":"^4.0.3","i18next":"^25.7.3","import-in-the-middle":"^1.11.0","ioredis":"^5.9.3","jsdom":"^27.4.0","leaflet":"^1.9.4","next":"16.1.6","next-i18next":"^15.4.3","next-intl":"^4.8.2","next-mdx-remote":"^5.0.0","nodemailer":"^8.0.7","pdf-lib":"^1.17.1","pino":"^10.3.0","pino-pretty":"^13.1.3","react":"^19.2.4","react-dom":"^19.2.4","react-email":"^5.2.5","react-leaflet":"^4.2.1","react-markdown":"^10.1.0","recharts":"^3.7.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.1","require-in-the-middle":"^8.0.1","resend":"^3.5.0","schema-dts":"^1.1.5","sharp":"^0.34.5","svg-to-pdfkit":"^0.1.8","tailwind-merge":"^3.4.0","three":"^0.183.1","xlsx":"npm:@e965/xlsx@^0.20.3","zod":"3.25.76","@commitlint/cli":"^20.4.0","@commitlint/config-conventional":"^20.4.0","@cspell/dict-de-de":"^4.1.2","@lhci/cli":"^0.15.1","@mintel/eslint-config":"^1.9.0","@mintel/tsconfig":"^1.9.0","@next/bundle-analyzer":"^16.1.6","@tailwindcss/cli":"^4.1.18","@tailwindcss/postcss":"^4.1.18","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/node":"^22.19.3","@types/nodemailer":"^7.0.5","@types/react":"^19.2.7","@types/react-dom":"^19.2.3","@types/sharp":"^0.31.1","@types/three":"^0.183.1","@vitejs/plugin-react":"^5.1.4","@vitest/ui":"^4.0.16","autoprefixer":"^10.4.23","cheerio":"^1.2.0","critters":"^0.0.25","cspell":"^9.6.4","dotenv":"^17.3.1","eslint":"^9.18.0","happy-dom":"^20.6.1","html-validate":"^10.8.0","husky":"^9.1.7","lint-staged":"^16.2.7","lucide-react":"^0.563.0","pa11y-ci":"^4.0.1","pdf-parse":"^2.4.5","postcss":"^8.5.6","prettier":"^3.8.1","puppeteer":"^24.37.3","sass":"^1.97.1","start-server-and-test":"^2.1.3","tailwindcss":"^4.1.18","tsx":"^4.21.0","turbo":"^2.8.10","typescript":"^5.7.2","vitest":"^4.0.16","xlsx-cli":"^1.1.3"},"_sentryNextJsVersion":"16.1.6"}}}]},"{*,next-mdx-rule}":[{"loaders":[{"loader":"/Volumes/Alpha SSD/Coding/e-tib.com/node_modules/.pnpm/@next+mdx@16.2.4_@mdx-js+react@3.1.1_@types+react@19.2.14_react@19.2.4_/node_modules/@next/mdx/mdx-js-loader.js","options":{"providerImportSource":"next-mdx-import-source-file"}}],"as":"*.tsx","condition":{"path":{}}}]},"root":"/Volumes/Alpha SSD/Coding/e-tib.com"},"transpilePackages":["react-image-crop","@react-three/fiber"],"serverExternalPackages":["amqplib","connect","dataloader","express","generic-pool","graphql","@hapi/hapi","ioredis","kafkajs","koa","lru-memoizer","mongodb","mongoose","mysql","mysql2","knex","pg","pg-pool","@node-redis/client","@redis/client","redis","tedious"],"distDirRoot":".next","_originalRewrites":{"beforeFiles":[{"source":"/:locale/datasheets/:path*","destination":"/api/datasheets/:path*"},{"source":"/:locale/brochures/:path*","destination":"/api/brochures/:path*"},{"source":"/datasheets/:path*","destination":"/api/datasheets/:path*"},{"source":"/brochures/:path*","destination":"/api/brochures/:path*"},{"source":"/de/produkte","destination":"/de/products"},{"source":"/de/produkte/:path*","destination":"/de/products/:path*"},{"source":"/de/kontakt","destination":"/de/contact"},{"source":"/en/produkte","destination":"/en/products"},{"source":"/en/produkte/:path*","destination":"/en/products/:path*"},{"source":"/en/kontakt","destination":"/en/contact"},{"source":"/en/impressum","destination":"/en/legal-notice"},{"source":"/en/datenschutz","destination":"/en/privacy-policy"},{"source":"/en/agbs","destination":"/en/terms"}],"afterFiles":[],"fallback":[]},"_originalRedirects":[{"source":"/blog","destination":"/de/blog","permanent":true},{"source":"/contact","destination":"/de/contact","permanent":true},{"source":"/team","destination":"/de/team","permanent":true},{"source":"/products","destination":"/de/products","permanent":true},{"source":"/posts/100-renewable-energy-only-with-the-right-cable-infrastructure.html","destination":"/de/blog/100-renewable-energy-only-with-the-right-cable-infrastructure","permanent":true},{"source":"/posts/billion-euro-package-for-infrastructure-the-cable-boom-is-coming.html","destination":"/de/blog/billion-euro-package-for-infrastructure-the-cable-boom-is-coming","permanent":true},{"source":"/posts/cable-abbreviations-decoded-the-key-to-choosing-the-right-cable.html","destination":"/de/blog/cable-abbreviations-decoded-the-key-to-choosing-the-right-cable","permanent":true},{"source":"/posts/cable-drum-quality-the-foundation-of-cable-reliability.html","destination":"/de/blog/cable-drum-quality-the-foundation-of-cable-reliability","permanent":true},{"source":"/posts/cable-drum-safety-ensuring-smooth-operations-and-accident-free-environments.html","destination":"/de/blog/cable-drum-safety-ensuring-smooth-operations-and-accident-free-environments","permanent":true},{"source":"/posts/climate-neutral-by-2050-what-we-need-to-do-to-achieve-this-goal.html","destination":"/de/blog/climate-neutral-by-2050-what-we-need-to-do-to-achieve-this-goal","permanent":true},{"source":"/posts/cost-comparison-copper-vs-aluminum-cables-in-wind-farms-which-is-worthwhile-in-the-long-term.html","destination":"/de/blog/cost-comparison-copper-vs-aluminum-cables-in-wind-farms-which-is-worthwhile-in-the-long-term","permanent":true},{"source":"/posts/expanding-the-grid-by-2025-building-the-foundation-for-a-successful-energy-transition.html","destination":"/de/blog/expanding-the-grid-by-2025-building-the-foundation-for-a-successful-energy-transition","permanent":true},{"source":"/posts/eye-opening-realities-of-green-energy-transformation.html","destination":"/de/blog/eye-opening-realities-of-green-energy-transformation","permanent":true},{"source":"/posts/focus-on-wind-farm-construction-three-typical-cable-challenges.html","destination":"/de/blog/focus-on-wind-farm-construction-three-typical-cable-challenges","permanent":true},{"source":"/posts/from-smart-to-sustainable-this-is-what-the-energy-industry-will-look-like-in-the-near-future.html","destination":"/de/blog/from-smart-to-sustainable-this-is-what-the-energy-industry-will-look-like-in-the-near-future","permanent":true},{"source":"/posts/green-energy-starts-underground-and-with-a-plan.html","destination":"/de/blog/green-energy-starts-underground-and-with-a-plan","permanent":true},{"source":"/posts/how-the-cable-industry-is-driving-sustainability-and-renewable-energies-forward.html","destination":"/de/blog/how-the-cable-industry-is-driving-sustainability-and-renewable-energies-forward","permanent":true},{"source":"/posts/how-the-right-cables-quietly-power-the-green-energy-revolution.html","destination":"/de/blog/how-the-right-cables-quietly-power-the-green-energy-revolution","permanent":true},{"source":"/posts/how-to-choose-the-right-cable-for-your-next-project.html","destination":"/de/blog/how-to-choose-the-right-cable-for-your-next-project","permanent":true},{"source":"/posts/is-wind-energy-really-enough-a-deeper-dive-behind-the-headlines.html","destination":"/de/blog/is-wind-energy-really-enough-a-deeper-dive-behind-the-headlines","permanent":true},{"source":"/posts/etib-in-the-directory-of-wind-energy-2025.html","destination":"/de/blog/etib-in-the-directory-of-wind-energy-2025","permanent":true},{"source":"/posts/na2xsf2y-three-conductor-medium-voltage-cable-available.html","destination":"/de/blog/na2xsf2y-three-conductor-medium-voltage-cable-available","permanent":true},{"source":"/posts/recycling-of-cable-drums-sustainability-in-wind-power-projects.html","destination":"/de/blog/recycling-of-cable-drums-sustainability-in-wind-power-projects","permanent":true},{"source":"/posts/securing-the-future-with-h1z2z2-k-our-solar-cable-for-intersolar-2025.html","destination":"/de/blog/securing-the-future-with-h1z2z2-k-our-solar-cable-for-intersolar-2025","permanent":true},{"source":"/posts/the-art-of-cable-logistics-moving-the-backbone-of-modern-energy-networks.html","destination":"/de/blog/the-art-of-cable-logistics-moving-the-backbone-of-modern-energy-networks","permanent":true},{"source":"/posts/the-best-underground-cables-for-wind-power-and-solar-order-from-us-now.html","destination":"/de/blog/the-best-underground-cables-for-wind-power-and-solar-order-from-us-now","permanent":true},{"source":"/posts/the-perfect-cable-inquiry-how-to-save-yourself-unnecessary-queries.html","destination":"/de/blog/the-perfect-cable-inquiry-how-to-save-yourself-unnecessary-queries","permanent":true},{"source":"/posts/this-what-you-need-to-know-about-renewable-energies-in-2025.html","destination":"/de/blog/this-what-you-need-to-know-about-renewable-energies-in-2025","permanent":true},{"source":"/posts/welcome-to-the-future-of-etib-our-new-website-is-live.html","destination":"/de/blog/welcome-to-the-future-of-etib-our-new-website-is-live","permanent":true},{"source":"/posts/what-makes-a-first-class-cable-find-out-here.html","destination":"/de/blog/what-makes-a-first-class-cable-find-out-here","permanent":true},{"source":"/posts/which-cables-for-wind-power-differences-from-low-to-extra-high-voltage-explained-2.html","destination":"/de/blog/which-cables-for-wind-power-differences-from-low-to-extra-high-voltage-explained-2","permanent":true},{"source":"/posts/why-the-n2xsf2y-is-the-ideal-cable-for-your-energy-project.html","destination":"/de/blog/why-the-n2xsf2y-is-the-ideal-cable-for-your-energy-project","permanent":true},{"source":"/posts/why-wind-farm-grid-connection-cables-must-withstand-extreme-loads.html","destination":"/de/blog/why-wind-farm-grid-connection-cables-must-withstand-extreme-loads","permanent":true},{"source":"/products/power-cables/high-voltage-cables/n2xsfl2y","destination":"/de/products/n2xsfl2y-hv","permanent":true},{"source":"/products/power-cables/high-voltage-cables/na2xsfl2y-3","destination":"/de/products/na2xsfl2y-hv","permanent":true},{"source":"/products/power-cables/low-voltage-cables/n2x2y","destination":"/de/products/n2x2y","permanent":true},{"source":"/products/power-cables/low-voltage-cables/n2xy","destination":"/de/products/n2xy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/na2x2y","destination":"/de/products/na2x2y","permanent":true},{"source":"/products/power-cables/low-voltage-cables/na2xy","destination":"/de/products/na2xy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/nay2y","destination":"/de/products/nay2y","permanent":true},{"source":"/products/power-cables/low-voltage-cables/naycwy","destination":"/de/products/naycwy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/nayy","destination":"/de/products/nayy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/ny2y","destination":"/de/products/ny2y","permanent":true},{"source":"/products/power-cables/low-voltage-cables/nycwy","destination":"/de/products/nycwy","permanent":true},{"source":"/products/power-cables/low-voltage-cables/nyy","destination":"/de/products/nyy","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/n2xs2y","destination":"/de/products/n2xs2y","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/n2xsf2y","destination":"/de/products/n2xsf2y","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/n2xsfl2y-3","destination":"/de/products/n2xsfl2y-mv","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/na2xs2y","destination":"/de/products/na2xs2y","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/na2xsf2y","destination":"/de/products/na2xsf2y","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/na2xsfl2y","destination":"/de/products/na2xsfl2y-mv","permanent":true},{"source":"/products/power-cables/medium-voltage-cables/na2xsy","destination":"/de/products/na2xsy","permanent":true},{"source":"/products/solar-cables/h1z2z2-k","destination":"/de/products/solar-cables/h1z2z2-k","permanent":true},{"source":"/de/produkte/stromkabel/solarkabel/h1z2z2-k","destination":"/de/produkte/solarkabel/h1z2z2-k","permanent":true},{"source":"/de/produkte/stromkabel/niederspannungskabel/naycwy-2","destination":"/de/produkte/niederspannungskabel/naycwy","permanent":true},{"source":"/de/produkte/stromkabel/niederspannungskabel/ny2y-2","destination":"/de/produkte/niederspannungskabel/ny2y","permanent":true},{"source":"/vcf/klaus-mintel","destination":"/klaus-mintel.vcf","permanent":true},{"source":"/vcf/michael-bodemer","destination":"/michael-bodemer.vcf","permanent":true}]} process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig) diff --git a/.next/static/ON8Osmtbmq5s2e697_K2w/_buildManifest.js b/.next/static/XENt8yYSMkapksfMi5ncI/_buildManifest.js similarity index 100% rename from .next/static/ON8Osmtbmq5s2e697_K2w/_buildManifest.js rename to .next/static/XENt8yYSMkapksfMi5ncI/_buildManifest.js diff --git a/.next/static/ON8Osmtbmq5s2e697_K2w/_clientMiddlewareManifest.json b/.next/static/XENt8yYSMkapksfMi5ncI/_clientMiddlewareManifest.json similarity index 100% rename from .next/static/ON8Osmtbmq5s2e697_K2w/_clientMiddlewareManifest.json rename to .next/static/XENt8yYSMkapksfMi5ncI/_clientMiddlewareManifest.json diff --git a/.next/static/ON8Osmtbmq5s2e697_K2w/_ssgManifest.js b/.next/static/XENt8yYSMkapksfMi5ncI/_ssgManifest.js similarity index 100% rename from .next/static/ON8Osmtbmq5s2e697_K2w/_ssgManifest.js rename to .next/static/XENt8yYSMkapksfMi5ncI/_ssgManifest.js diff --git a/.next/static/chunks/2c80c6d8e77ec885.js b/.next/static/chunks/0fb0262dbadeeecd.js similarity index 99% rename from .next/static/chunks/2c80c6d8e77ec885.js rename to .next/static/chunks/0fb0262dbadeeecd.js index c85dceb1a..43f42413a 100644 --- a/.next/static/chunks/2c80c6d8e77ec885.js +++ b/.next/static/chunks/0fb0262dbadeeecd.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="e33c6a8a-6f21-88ba-e9a0-f69771bc63d5")}catch(e){}}(); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="70641956-3a12-cbe6-0e2e-ee9184986bda")}catch(e){}}(); (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,769117,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"BloomFilter",{enumerable:!0,get:function(){return n}});class n{constructor(e,t=1e-4){this.numItems=e,this.errorRate=t,this.numBits=Math.ceil(-(e*Math.log(t))/(Math.log(2)*Math.log(2))),this.numHashes=Math.ceil(this.numBits/e*Math.log(2)),this.bitArray=Array(this.numBits).fill(0)}static from(e,t=1e-4){let r=new n(e.length,t);for(let t of e)r.add(t);return r}export(){return{numItems:this.numItems,errorRate:this.errorRate,numBits:this.numBits,numHashes:this.numHashes,bitArray:this.bitArray}}import(e){this.numItems=e.numItems,this.errorRate=e.errorRate,this.numBits=e.numBits,this.numHashes=e.numHashes,this.bitArray=e.bitArray}add(e){this.getHashValues(e).forEach(e=>{this.bitArray[e]=1})}contains(e){return this.getHashValues(e).every(e=>this.bitArray[e])}getHashValues(e){let t=[];for(let r=1;r<=this.numHashes;r++){let n=function(e){let t=0;for(let r=0;r>>13,t=Math.imul(t,0x5bd1e995);return t>>>0}(`${e}${r}`)%this.numBits;t.push(n)}return t}}},667210,(e,t,r)=>{"use strict";function n(e,t=""){return("/"===e?"/index":/^\/index(\/|$)/.test(e)?`/index${e}`:e)+t}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return n}})},230868,(e,t,r)=>{"use strict";let n;function a(e){return(void 0===n&&"u">typeof window&&(n=window.trustedTypes?.createPolicy("nextjs",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})||null),n)?.createScriptURL(e)||e}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"__unsafeCreateTrustedScriptURL",{enumerable:!0,get:function(){return a}}),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},91266,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={cancelIdleCallback:function(){return o},requestIdleCallback:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="u">typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},o="u">typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},598896,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createRouteLoader:function(){return y},getClientBuildManifest:function(){return g},isAssetError:function(){return p},markAssetError:function(){return d}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});e.r(481258),e.r(667210);let i=e.r(230868),o=e.r(91266),s=e.r(954633),l=e.r(818127);function u(e,t,r){let n,a=t.get(e);if(a)return"future"in a?a.future:Promise.resolve(a);let i=new Promise(e=>{n=e});return t.set(e,{resolve:n,future:i}),r?r().then(e=>(n(e),e)).catch(r=>{throw t.delete(e),r}):i}let c=Symbol("ASSET_LOAD_ERROR");function d(e){return Object.defineProperty(e,c,{})}function p(e){return e&&c in e}let f=function(e){try{return e=document.createElement("link"),!!window.MSInputMethodContext&&!!document.documentMode||e.relList.supports("prefetch")}catch{return!1}}(),h=()=>(0,s.getDeploymentIdQueryOrEmptyString)();function m(e,t,r){return new Promise((n,a)=>{let i=!1;e.then(e=>{i=!0,n(e)}).catch(a),(0,o.requestIdleCallback)(()=>setTimeout(()=>{i||a(r)},t))})}function g(){return self.__BUILD_MANIFEST?Promise.resolve(self.__BUILD_MANIFEST):m(new Promise(e=>{let t=self.__BUILD_MANIFEST_CB;self.__BUILD_MANIFEST_CB=()=>{e(self.__BUILD_MANIFEST),t&&t()}}),3800,d(Object.defineProperty(Error("Failed to load client build manifest"),"__NEXT_ERROR_CODE",{value:"E273",enumerable:!1,configurable:!0})))}function _(e,t){return g().then(r=>{if(!(t in r))throw d(Object.defineProperty(Error(`Failed to lookup route: ${t}`),"__NEXT_ERROR_CODE",{value:"E446",enumerable:!1,configurable:!0}));let n=r[t].map(t=>e+"/_next/"+(0,l.encodeURIPath)(t));return{scripts:n.filter(e=>e.endsWith(".js")).map(e=>(0,i.__unsafeCreateTrustedScriptURL)(e)+h()),css:n.filter(e=>e.endsWith(".css")).map(e=>e+h())}})}function y(e){let t=new Map,r=new Map,n=new Map,a=new Map;function i(e){{var t;let n=r.get(e.toString());return n?n:document.querySelector(`script[src^="${e}"]`)?Promise.resolve():(r.set(e.toString(),n=new Promise((r,n)=>{(t=document.createElement("script")).onload=r,t.onerror=()=>n(d(Object.defineProperty(Error(`Failed to load script: ${e}`),"__NEXT_ERROR_CODE",{value:"E74",enumerable:!1,configurable:!0}))),t.crossOrigin=void 0,t.src=e,document.body.appendChild(t)})),n)}}function s(e){let t=n.get(e);return t||n.set(e,t=fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw Object.defineProperty(Error(`Failed to load stylesheet: ${e}`),"__NEXT_ERROR_CODE",{value:"E189",enumerable:!1,configurable:!0});return t.text().then(t=>({href:e,content:t}))}).catch(e=>{throw d(e)})),t}return{whenEntrypoint:e=>u(e,t),onEntrypoint(e,r){(r?Promise.resolve().then(()=>r()).then(e=>({component:e&&e.default||e,exports:e}),e=>({error:e})):Promise.resolve(void 0)).then(r=>{let n=t.get(e);n&&"resolve"in n?r&&(t.set(e,r),n.resolve(r)):(r?t.set(e,r):t.delete(e),a.delete(e))})},loadRoute(r,n){return u(r,a,()=>{let a;return m(_(e,r).then(({scripts:e,css:n})=>Promise.all([t.has(r)?[]:Promise.all(e.map(i)),Promise.all(n.map(s))])).then(e=>this.whenEntrypoint(r).then(t=>({entrypoint:t,styles:e[1]}))),3800,d(Object.defineProperty(Error(`Route did not complete loading: ${r}`),"__NEXT_ERROR_CODE",{value:"E12",enumerable:!1,configurable:!0}))).then(({entrypoint:e,styles:t})=>{let r=Object.assign({styles:t},e);return"error"in e?e:r}).catch(e=>{if(n)throw e;return{error:e}}).finally(()=>a?.())})},prefetch(t){let r;return(r=navigator.connection)&&(r.saveData||/2g/.test(r.effectiveType))?Promise.resolve():_(e,t).then(e=>Promise.all(f?e.scripts.map(e=>{var t,r,n;return t=e.toString(),r="script",new Promise((e,a)=>{let i=` link[rel="prefetch"][href^="${t}"], link[rel="preload"][href^="${t}"], @@ -17,7 +17,7 @@ Name: ${(0,em.getFunctionName)(n)} Error:`,t)}}function tB(e){let t="console";tL(t,e),tD(t,tj)}function tj(){"console"in Y.GLOBAL_OBJ&&z.CONSOLE_LEVELS.forEach(function(e){e in Y.GLOBAL_OBJ.console&&(0,ed.fill)(Y.GLOBAL_OBJ.console,e,function(t){return z.originalConsoleMethods[e]=t,function(...t){tU("console",{args:t,level:e});let r=z.originalConsoleMethods[e];r?.apply(Y.GLOBAL_OBJ.console,t)}})})}let t$=Y.GLOBAL_OBJ;function tF(e){return e&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(e.toString())}function tH(){if("string"==typeof EdgeRuntime)return!0;if(!function(){if(!("fetch"in t$))return!1;try{return new Headers,new Request("data:,"),new Response,!0}catch{return!1}}())return!1;if(tF(t$.fetch))return!0;let e=!1,t=t$.document;if(t&&"function"==typeof t.createElement)try{let r=t.createElement("iframe");r.hidden=!0,t.head.appendChild(r),r.contentWindow?.fetch&&(e=tF(r.contentWindow.fetch)),t.head.removeChild(r)}catch(e){Q.DEBUG_BUILD&&z.debug.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",e)}return e}function tW(e,t){let r="fetch";tL(r,e),tD(r,()=>tq(void 0,t))}function tq(e,t=!1){(!t||tH())&&(0,ed.fill)(Y.GLOBAL_OBJ,"fetch",function(t){return function(...r){let n=Error(),{method:a,url:i}=function(e){if(0===e.length)return{method:"GET",url:""};if(2===e.length){let[t,r]=e;return{url:tJ(t),method:tY(r,"method")?String(r.method).toUpperCase():(0,eA.isRequest)(t)&&tY(t,"method")?String(t.method).toUpperCase():"GET"}}let t=e[0];return{url:tJ(t),method:tY(t,"method")?String(t.method).toUpperCase():"GET"}}(r),o={args:r,fetchData:{method:a,url:i},startTimestamp:1e3*(0,eO.timestampInSeconds)(),virtualError:n,headers:function(e){let[t,r]=e;try{if("object"==typeof r&&null!==r&&"headers"in r&&r.headers)return new Headers(r.headers);if((0,eA.isRequest)(t))return new Headers(t.headers)}catch{}}(r)};return e||tU("fetch",{...o}),t.apply(Y.GLOBAL_OBJ,r).then(async t=>(e?e(t):tU("fetch",{...o,endTimestamp:1e3*(0,eO.timestampInSeconds)(),response:t}),t),e=>{tU("fetch",{...o,endTimestamp:1e3*(0,eO.timestampInSeconds)(),error:e}),(0,eA.isError)(e)&&void 0===e.stack&&(e.stack=n.stack,(0,ed.addNonEnumerableProperty)(e,"framesToPop",1));let t=(0,X.getClient)(),r=t?.getOptions().enhanceFetchErrorMessages??"always";if(!1!==r&&e instanceof TypeError&&("Failed to fetch"===e.message||"Load failed"===e.message||"NetworkError when attempting to fetch resource."===e.message))try{let t=new URL(o.fetchData.url).host;"always"===r?e.message=`${e.message} (${t})`:(0,ed.addNonEnumerableProperty)(e,"__sentry_fetch_url_host__",t)}catch{}throw e})}})}async function tG(e,t){if(e?.body){let r=e.body,n=r.getReader(),a=setTimeout(()=>{r.cancel().then(null,()=>{})},9e4),i=!0;for(;i;){let e;try{e=setTimeout(()=>{r.cancel().then(null,()=>{})},5e3);let{done:a}=await n.read();clearTimeout(e),a&&(t(),i=!1)}catch{i=!1}finally{clearTimeout(e)}}clearTimeout(a),n.releaseLock(),r.cancel().then(null,()=>{})}}function tz(e){let t;try{t=e.clone()}catch{return}tG(t,()=>{tU("fetch-body-resolved",{endTimestamp:1e3*(0,eO.timestampInSeconds)(),response:e})})}function tY(e,t){return!!e&&"object"==typeof e&&!!e[t]}function tJ(e){return"string"==typeof e?e:e?tY(e,"url")?e.url:e.toString?e.toString():"":""}function tV(e){return"warn"===e?"warning":["fatal","error","warning","log","info","debug"].includes(e)?e:"log"}function tK(e,t){let r=(0,X.getClient)(),n=(0,X.getIsolationScope)();if(!r)return;let{beforeBreadcrumb:a=null,maxBreadcrumbs:i=100}=r.getOptions();if(i<=0)return;let o={timestamp:(0,eO.dateTimestampInSeconds)(),...e},s=a?(0,z.consoleSandbox)(()=>a(o,t)):o;null!==s&&(r.emit&&r.emit("beforeAddBreadcrumb",s,t),n.addBreadcrumb(s,i))}function tX(e){if(void 0!==e)return e>=400&&e<500?"warning":e>=500?"error":void 0}function tQ(e){return"isRelative"in e}function tZ(e,t){let r=0>=e.indexOf("://")&&0!==e.indexOf("//"),n=t??(r?"thismessage:/":void 0);try{if("canParse"in URL&&!URL.canParse(e,n))return;let t=new URL(e,n);if(r)return{isRelative:r,pathname:t.pathname,search:t.search,hash:t.hash};return t}catch{}}function t0(e){if(!e)return{};let t=e.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};let r=t[6]||"",n=t[8]||"";return{host:t[4],path:t[5],protocol:t[2],search:r,hash:n,relative:t[5]+r+n}}function t1(e){return e.split(/[?#]/,1)[0]}function t2(e,t=!0){if(e.startsWith("data:")){let r=e.match(/^data:([^;,]+)/),n=r?r[1]:"text/plain",a=e.includes(";base64,"),i=e.indexOf(","),o="";if(t&&-1!==i){let t=e.slice(i+1);o=t.length>10?`${t.slice(0,10)}... [truncated]`:t}return`data:${n}${a?",base64":""}${o?`,${o}`:""}`}return e}let t3=Y.GLOBAL_OBJ;function t5(e){tL("dom",e),tD("dom",t4)}function t4(){if(!t3.document)return;let e=tU.bind(null,"dom"),t=t6(e,!0);t3.document.addEventListener("click",t,!1),t3.document.addEventListener("keypress",t,!1),["EventTarget","Node"].forEach(t=>{let r=t3[t]?.prototype;r?.hasOwnProperty?.("addEventListener")&&((0,ed.fill)(r,"addEventListener",function(t){return function(r,n,a){if("click"===r||"keypress"==r)try{let n=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},i=n[r]=n[r]||{refCount:0};if(!i.handler){let n=t6(e);i.handler=n,t.call(this,r,n,a)}i.refCount++}catch{}return t.call(this,r,n,a)}}),(0,ed.fill)(r,"removeEventListener",function(e){return function(t,r,n){if("click"===t||"keypress"==t)try{let r=this.__sentry_instrumentation_handlers__||{},a=r[t];a&&(a.refCount--,a.refCount<=0&&(e.call(this,t,a.handler,n),a.handler=void 0,delete r[t]),0===Object.keys(r).length&&delete this.__sentry_instrumentation_handlers__)}catch{}return e.call(this,t,r,n)}}))})}function t6(e,t=!1){return r=>{var o;if(!r||r._sentryCaptured)return;let s=function(e){try{return e.target}catch{return null}}(r);if(o=r.type,"keypress"===o&&(!s?.tagName||"INPUT"!==s.tagName&&"TEXTAREA"!==s.tagName&&!s.isContentEditable&&1))return;(0,ed.addNonEnumerableProperty)(r,"_sentryCaptured",!0),s&&!s._sentryId&&(0,ed.addNonEnumerableProperty)(s,"_sentryId",(0,ea.uuid4)());let l="keypress"===r.type?"input":r.type;!function(e){if(e.type!==a)return!1;try{if(!e.target||e.target._sentryId!==i)return!1}catch{}return!0}(r)&&(e({event:r,name:l,global:t}),a=r.type,i=s?s._sentryId:void 0),clearTimeout(n),n=t3.setTimeout(()=>{i=void 0,a=void 0},1e3)}}let t8="__sentry_xhr_v3__";function t7(e){tL("xhr",e),tD("xhr",t9)}function t9(){if(!t3.XMLHttpRequest)return;let e=XMLHttpRequest.prototype;e.open=new Proxy(e.open,{apply(e,t,r){let n=Error(),a=1e3*(0,eO.timestampInSeconds)(),i=(0,eA.isString)(r[0])?r[0].toUpperCase():void 0,o=function(e){if((0,eA.isString)(e))return e;try{return e.toString()}catch{}}(r[1]);if(!i||!o)return e.apply(t,r);t[t8]={method:i,url:o,request_headers:{}},"POST"===i&&o.match(/sentry_key/)&&(t.__sentry_own_request__=!0);let s=()=>{let e=t[t8];if(e&&4===t.readyState){try{e.status_code=t.status}catch{}tU("xhr",{endTimestamp:1e3*(0,eO.timestampInSeconds)(),startTimestamp:a,xhr:t,virtualError:n})}};return"onreadystatechange"in t&&"function"==typeof t.onreadystatechange?t.onreadystatechange=new Proxy(t.onreadystatechange,{apply:(e,t,r)=>(s(),e.apply(t,r))}):t.addEventListener("readystatechange",s),t.setRequestHeader=new Proxy(t.setRequestHeader,{apply(e,t,r){let[n,a]=r,i=t[t8];return i&&(0,eA.isString)(n)&&(0,eA.isString)(a)&&(i.request_headers[n.toLowerCase()]=a),e.apply(t,r)}}),e.apply(t,r)}}),e.send=new Proxy(e.send,{apply(e,t,r){let n=t[t8];return n&&(void 0!==r[0]&&(n.body=r[0]),tU("xhr",{startTimestamp:1e3*(0,eO.timestampInSeconds)(),xhr:t})),e.apply(t,r)}})}function re(e){let t="history";tL(t,e),tD(t,rt)}function rt(){function e(e){return function(...t){let r=t.length>2?t[2]:void 0;if(r){let n=o,a=function(e){try{return new URL(e,t3.location.origin).toString()}catch{return e}}(String(r));if(o=a,n===a)return e.apply(this,t);tU("history",{from:n,to:a})}return e.apply(this,t)}}t3.addEventListener("popstate",()=>{let e=t3.location.href,t=o;o=e,t===e||tU("history",{from:t,to:e})}),"history"in t$&&t$.history&&((0,ed.fill)(t3.history,"pushState",e),(0,ed.fill)(t3.history,"replaceState",e))}let rr="u"{let t={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...e};return{name:"Breadcrumbs",setup(e){var r,n,a,i,o,s,l;t.console&&tB((r=e,function(e){if((0,X.getClient)()!==r)return;let t={category:"console",data:{arguments:e.args,logger:"console"},level:tV(e.level),message:(0,ei.safeJoin)(e.args," ")};if("assert"===e.level)if(!1!==e.args[0])return;else t.message=`Assertion failed: ${(0,ei.safeJoin)(e.args.slice(1)," ")||"console.assert"}`,t.data.arguments=e.args.slice(1);tK(t,{input:e.args,level:e.level})})),t.dom&&t5((n=e,a=t.dom,function(e){let t,r;if((0,X.getClient)()!==n)return;let i="object"==typeof a?a.serializeAttribute:void 0,o="object"==typeof a&&"number"==typeof a.maxStringLength?a.maxStringLength:void 0;o&&o>1024&&(rr&&z.debug.warn(`\`dom.maxStringLength\` cannot exceed 1024, but a value of ${o} was configured. Sentry will use 1024 instead.`),o=1024),"string"==typeof i&&(i=[i]);try{var s;let n=e.event,a=(s=n)&&s.target?n.target:n;t=(0,tC.htmlTreeAsString)(a,{keyAttrs:i,maxStringLength:o}),r=(0,tC.getComponentName)(a)}catch{t=""}if(0===t.length)return;let l={category:`ui.${e.name}`,message:t};r&&(l.data={"ui.component_name":r}),tK(l,{event:e.event,name:e.name,global:e.global})})),t.xhr&&t7((i=e,function(e){if((0,X.getClient)()!==i)return;let{startTimestamp:t,endTimestamp:r}=e,n=e.xhr[t8];if(!t||!r||!n)return;let{method:a,url:o,status_code:s,body:l}=n,u={xhr:e.xhr,input:l,startTimestamp:t,endTimestamp:r},c={category:"xhr",data:{method:a,url:o,status_code:s},type:"http",level:tX(s)};i.emit("beforeOutgoingRequestBreadcrumb",c,u),tK(c,u)})),t.fetch&&tW((o=e,function(e){if((0,X.getClient)()!==o)return;let{startTimestamp:t,endTimestamp:r}=e;if(r&&(!e.fetchData.url.match(/sentry_key/)||"POST"!==e.fetchData.method))if(e.error){let n={data:e.error,input:e.args,startTimestamp:t,endTimestamp:r},a={category:"fetch",data:e.fetchData,level:"error",type:"http"};o.emit("beforeOutgoingRequestBreadcrumb",a,n),tK(a,n)}else{let n=e.response,a={...e.fetchData,status_code:n?.status},i={input:e.args,response:n,startTimestamp:t,endTimestamp:r},s={category:"fetch",data:a,type:"http",level:tX(a.status_code)};o.emit("beforeOutgoingRequestBreadcrumb",s,i),tK(s,i)}})),t.history&&re((s=e,function(e){if((0,X.getClient)()!==s)return;let t=e.from,r=e.to,n=t0(tA.location.href),a=t?t0(t):void 0,i=t0(r);a?.path||(a=n),n.protocol===i.protocol&&n.host===i.host&&(r=i.relative),n.protocol===a.protocol&&n.host===a.host&&(t=a.relative),tK({category:"navigation",data:{from:t,to:r}})})),t.sentry&&e.on("beforeSendEvent",(l=e,function(e){(0,X.getClient)()===l&&tK({category:`sentry.${"transaction"===e.type?"transaction":"event"}`,event_id:e.event_id,level:e.level,message:(0,ea.getEventDescription)(e)},{event:e})}))}}},ra="EventTarget,Window,Node,ApplicationCache,AudioTrackList,BroadcastChannel,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(","),ri=(e={})=>{let t={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...e};return{name:"BrowserApiErrors",setupOnce(){t.setTimeout&&(0,ed.fill)(tA,"setTimeout",ro),t.setInterval&&(0,ed.fill)(tA,"setInterval",ro),t.requestAnimationFrame&&(0,ed.fill)(tA,"requestAnimationFrame",rs),t.XMLHttpRequest&&"XMLHttpRequest"in tA&&(0,ed.fill)(XMLHttpRequest.prototype,"send",rl);let e=t.eventTarget;e&&(Array.isArray(e)?e:ra).forEach(e=>{var r,n;let a;return r=e,n=t,a=tA[r]?.prototype,void(a?.hasOwnProperty?.("addEventListener")&&((0,ed.fill)(a,"addEventListener",function(e){return function(t,a,i){var o,s,l,u;try{o=a,"function"==typeof o.handleEvent&&(a.handleEvent=tN(a.handleEvent,{mechanism:{data:{handler:(0,em.getFunctionName)(a),target:r},handled:!1,type:"auto.browser.browserapierrors.handleEvent"}}))}catch{}return n.unregisterOriginalCallbacks&&(s=this,l=t,u=a,s&&"object"==typeof s&&"removeEventListener"in s&&"function"==typeof s.removeEventListener&&s.removeEventListener(l,u)),e.apply(this,[t,tN(a,{mechanism:{data:{handler:(0,em.getFunctionName)(a),target:r},handled:!1,type:"auto.browser.browserapierrors.addEventListener"}}),i])}}),(0,ed.fill)(a,"removeEventListener",function(e){return function(t,r,n){try{let a=r.__sentry_wrapped__;a&&e.call(this,t,a,n)}catch{}return e.call(this,t,r,n)}})))})}}};function ro(e){return function(...t){let r=t[0];return t[0]=tN(r,{mechanism:{handled:!1,type:`auto.browser.browserapierrors.${(0,em.getFunctionName)(e)}`}}),e.apply(this,t)}}function rs(e){return function(t){return e.apply(this,[tN(t,{mechanism:{data:{handler:(0,em.getFunctionName)(e)},handled:!1,type:"auto.browser.browserapierrors.requestAnimationFrame"}})])}}function rl(e){return function(...t){let r=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(e=>{e in r&&"function"==typeof r[e]&&(0,ed.fill)(r,e,function(t){let r={mechanism:{data:{handler:(0,em.getFunctionName)(t)},handled:!1,type:`auto.browser.browserapierrors.xhr.${e}`}},n=(0,ed.getOriginalFunction)(t);return n&&(r.mechanism.data.handler=(0,em.getFunctionName)(n)),tN(t,r)})}),e.apply(this,t)}}let ru=(e={})=>{let t=e.lifecycle??"route";return{name:"BrowserSession",setupOnce(){if(void 0===tA.document){rr&&z.debug.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.");return}(0,K.startSession)({ignoreDuration:!0}),(0,K.captureSession)();let e=(0,X.getIsolationScope)(),r=e.getUser();e.addScopeListener(e=>{let t=e.getUser();(r?.id!==t?.id||r?.ip_address!==t?.ip_address)&&((0,K.captureSession)(),r=t)}),"route"===t&&re(({from:e,to:t})=>{e!==t&&((0,K.startSession)({ignoreDuration:!0}),(0,K.captureSession)())})}}},rc=()=>({name:"CultureContext",preprocessEvent(e){let t=function(){try{let e=tA.Intl;if(!e)return;let t=e.DateTimeFormat().resolvedOptions();return{locale:t.locale,timezone:t.timeZone,calendar:t.calendar}}catch{return}}();t&&(e.contexts={...e.contexts,culture:{...t,...e.contexts?.culture}})}}),rd=null;function rp(e){let t="error";tL(t,e),tD(t,rf)}function rf(){rd=Y.GLOBAL_OBJ.onerror,Y.GLOBAL_OBJ.onerror=function(e,t,r,n,a){return tU("error",{column:n,error:a,line:r,msg:e,url:t}),!!rd&&rd.apply(this,arguments)},Y.GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__=!0}let rh=null;function rm(e){let t="unhandledrejection";tL(t,e),tD(t,rg)}function rg(){rh=Y.GLOBAL_OBJ.onunhandledrejection,Y.GLOBAL_OBJ.onunhandledrejection=function(e){return tU("unhandledrejection",e),!rh||rh.apply(this,arguments)},Y.GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}let r_=(e={})=>{let t={onerror:!0,onunhandledrejection:!0,...e};return{name:"GlobalHandlers",setupOnce(){Error.stackTraceLimit=50},setup(e){var r,n;t.onerror&&(r=e,rp(e=>{var t,n,a,i;let o,s,l,u,c,{stackParser:d,attachStacktrace:p}=rS();if((0,X.getClient)()!==r||tk>0)return;let{msg:f,url:h,line:m,column:g,error:_}=e,y=(t=tR(d,_||f,void 0,p,!1),n=h,a=m,i=g,0===(c=(u=(l=(s=(o=t.exception=t.exception||{}).values=o.values||[])[0]=s[0]||{}).stacktrace=l.stacktrace||{}).frames=u.frames||[]).length&&c.push({colno:i,lineno:a,filename:function(e){if((0,eA.isString)(e)&&0!==e.length)return e.startsWith("data:")?`<${t2(e,!1)}>`:e}(n)??(0,tC.getLocationHref)(),function:em.UNKNOWN_FUNCTION,in_app:!0}),t);y.level="error",(0,K.captureEvent)(y,{originalException:_,mechanism:{handled:!1,type:"auto.browser.global_handlers.onerror"}})}),rb("onerror")),t.onunhandledrejection&&(n=e,rm(e=>{let{stackParser:t,attachStacktrace:r}=rS();if((0,X.getClient)()!==n||tk>0)return;let a=ry(e),i=(0,eA.isPrimitive)(a)?rv(a):tR(t,a,void 0,r,!0);i.level="error",(0,K.captureEvent)(i,{originalException:a,mechanism:{handled:!1,type:"auto.browser.global_handlers.onunhandledrejection"}})}),rb("onunhandledrejection"))}}};function ry(e){if((0,eA.isPrimitive)(e))return e;try{if("reason"in e)return e.reason;if("detail"in e&&"reason"in e.detail)return e.detail.reason}catch{}return e}function rv(e){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(e)}`}]}}}function rb(e){rr&&z.debug.log(`Global Handler attached: ${e}`)}function rS(){let e=(0,X.getClient)();return e?.getOptions()||{stackParser:()=>[],attachStacktrace:!1}}let rE=()=>({name:"HttpContext",preprocessEvent(e){if(!tA.navigator&&!tA.location&&!tA.document)return;let t=tO(),r={...t.headers,...e.request?.headers};e.request={...t,...e.request,headers:r}}});function rT(e){return Array.isArray(e.errors)}function rw(e,t,r){e.mechanism={handled:!0,type:"auto.core.linked_errors",...rT(r)&&{is_exception_group:!0},...e.mechanism,exception_id:t}}function rR(e,t,r,n){e.mechanism={handled:!0,...e.mechanism,type:"chained",source:t,exception_id:r,parent_id:n}}let rI=(e={})=>{let t=e.limit||5,r=e.key||"cause";return{name:"LinkedErrors",preprocessEvent(e,n,a){!function(e,t,r,n,a,i){if(!a.exception?.values||!i||!(0,eA.isInstanceOf)(i.originalException,Error))return;let o=a.exception.values.length>0?a.exception.values[a.exception.values.length-1]:void 0;o&&(a.exception.values=function e(t,r,n,a,i,o,s,l){if(o.length>=n+1)return o;let u=[...o];if((0,eA.isInstanceOf)(a[i],Error)){rw(s,l,a);let o=t(r,a[i]),c=u.length;rR(o,i,c,l),u=e(t,r,n,a[i],i,[o,...u],o,c)}return rT(a)&&a.errors.forEach((o,c)=>{if((0,eA.isInstanceOf)(o,Error)){rw(s,l,a);let d=t(r,o),p=u.length;rR(d,`errors[${c}]`,p,l),u=e(t,r,n,o,i,[d,...u],d,p)}}),u}(e,t,n,i.originalException,r,a.exception.values,o,0))}(ty,a.getOptions().stackParser,r,t,e,n)}}};function rC(e,t,r,n){let a={filename:e,function:""===t?em.UNKNOWN_FUNCTION:t,in_app:!0};return void 0!==r&&(a.lineno=r),void 0!==n&&(a.colno=n),a}let rA=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,rk=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,rN=/\((\S*)(?::(\d+))(?::(\d+))\)/,rO=/at (.+?) ?\(data:(.+?),/,rx=[30,e=>{let t=e.match(rO);if(t)return{filename:``,function:t[1]};let r=rA.exec(e);if(r){let[,e,t,n]=r;return rC(e,em.UNKNOWN_FUNCTION,+t,+n)}let n=rk.exec(e);if(n){if(n[2]?.indexOf("eval")===0){let e=rN.exec(n[2]);e&&(n[2]=e[1],n[3]=e[2],n[4]=e[3])}let[e,t]=rq(n[1]||em.UNKNOWN_FUNCTION,n[2]);return rC(t,e,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}}],rP=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,rM=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,rL=[50,e=>{let t=rP.exec(e);if(t){if(t[3]&&t[3].indexOf(" > eval")>-1){let e=rM.exec(t[3]);e&&(t[1]=t[1]||"eval",t[3]=e[1],t[4]=e[2],t[5]="")}let e=t[3],r=t[1]||em.UNKNOWN_FUNCTION;return[r,e]=rq(r,e),rC(e,r,t[4]?+t[4]:void 0,t[5]?+t[5]:void 0)}}],rD=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,rU=[40,e=>{let t=rD.exec(e);return t?rC(t[2],t[1]||em.UNKNOWN_FUNCTION,+t[3],t[4]?+t[4]:void 0):void 0}],rB=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,rj=[10,e=>{let t=rB.exec(e);return t?rC(t[2],t[3]||em.UNKNOWN_FUNCTION,+t[1]):void 0}],r$=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,rF=[20,e=>{let t=r$.exec(e);return t?rC(t[5],t[3]||t[4]||em.UNKNOWN_FUNCTION,+t[1],+t[2]):void 0}],rH=[rx,rL],rW=(0,em.createStackParser)(...rH),rq=(e,t)=>{let r=-1!==e.indexOf("safari-extension"),n=-1!==e.indexOf("safari-web-extension");return r||n?[-1!==e.indexOf("@")?e.split("@")[0]:em.UNKNOWN_FUNCTION,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]},rG="u"{let t=(0,X.getCurrentScope)().getScopeData(),r=(0,X.getIsolationScope)().getScopeData(),n=t.conversationId||r.conversationId;n&&e.setAttribute(eh.GEN_AI_CONVERSATION_ID_ATTRIBUTE,n)})}},ri(),rn(),r_(),rI(),eg(),rE(),rc(),ru()]}function rX(e={}){let t,r=!e.skipBrowserExtensionCheck&&!!function(){if(void 0===tA.window||tA.nw)return!1;let e=tA.chrome||tA.browser;if(!e?.runtime?.id)return!1;let t=(0,tC.getLocationHref)();return!(tA===tA.top&&/^(?:chrome-extension|moz-extension|ms-browser-extension|safari-web-extension):\/\//.test(t))}()&&(rr&&(0,z.consoleSandbox)(()=>{console.error("[Sentry] You cannot use Sentry.init() in a browser extension, see: https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/")}),!0),n=null==e.defaultIntegrations?rK():e.defaultIntegrations,a={...e,enabled:!r&&e.enabled,stackParser:(0,em.stackParserFromStackParserOptions)(e.stackParser||rW),integrations:function(e){let t,r,n=e.defaultIntegrations||[],a=e.integrations;if(n.forEach(e=>{e.isDefaultInstance=!0}),Array.isArray(a))t=[...n,...a];else if("function"==typeof a){let e=a(n);t=Array.isArray(e)?e:[e]}else t=n;return r={},t.forEach(e=>{let{name:t}=e,n=r[t];n&&!n.isDefaultInstance&&e.isDefaultInstance||(r[t]=e)}),Object.values(r)}({integrations:e.integrations,defaultIntegrations:n}),transport:e.transport||rV};return!0===a.debug&&(Q.DEBUG_BUILD?z.debug.enable():(0,z.consoleSandbox)(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),(0,X.getCurrentScope)().update(a.initialScope),eb(t=new tx(a)),t.init(),t}function rQ(){}function rZ(e){e()}var r0=e.i(907358);function r1(e){let t={...e};return V(t,"react"),(0,K.setContext)("react",{version:r0.version}),rX(t)}let r2="u"{!o&&0===i.size&&l&&(s="idleTimeout",y.end(e))},c)}function S(e){a=setTimeout(()=>{!o&&l&&(s="heartbeatFailed",y.end(e))},p)}function E(e){o=!0,i.clear(),u.forEach(e=>e()),(0,eN._setSpanForScope)(g,_);let t=(0,eL.spanToJSON)(y),{start_timestamp:r}=t;if(!r)return;t.data[eh.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON]||y.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON,s);let n=t.status;n&&"unknown"!==n||y.setStatus({code:r7.SPAN_STATUS_OK}),z.debug.log(`[Tracing] Idle span "${t.op}" finished`);let a=(0,eL.getSpanDescendants)(y).filter(e=>e!==y),l=0;a.forEach(t=>{t.isRecording()&&(t.setStatus({code:r7.SPAN_STATUS_ERROR,message:"cancelled"}),t.end(e),Q.DEBUG_BUILD&&z.debug.log("[Tracing] Cancelling span since span ended early",JSON.stringify(t,void 0,2)));let{timestamp:r=0,start_timestamp:n=0}=(0,eL.spanToJSON)(t),a=n<=e,i=r-n<=(d+c)/1e3;if(Q.DEBUG_BUILD){let e=JSON.stringify(t,void 0,2);a?i||z.debug.log("[Tracing] Discarding span since it finished after idle span final timeout",e):z.debug.log("[Tracing] Discarding span since it happened after idle span was finished",e)}(!i||!a)&&((0,eL.removeChildSpanFromSpan)(y,t),l++)}),l>0&&y.setAttribute("sentry.idle_span_discarded_spans",l)}return y.end=new Proxy(y.end,{apply(e,t,r){if(f&&f(y),t instanceof r6.SentryNonRecordingSpan)return;let[n,...a]=r,i=n||(0,eO.timestampInSeconds)(),o=(0,eL.spanTimeInputToSeconds)(i),s=(0,eL.getSpanDescendants)(y).filter(e=>e!==y),l=(0,eL.spanToJSON)(y);if(!s.length||!h)return E(o),Reflect.apply(e,t,[o,...a]);let u=m.getOptions().ignoreSpans,c=s?.reduce((e,t)=>{let r=(0,eL.spanToJSON)(t);return!r.timestamp||u&&(0,e8.shouldIgnoreSpan)(r,u)?e:e?Math.max(e,r.timestamp):r.timestamp},void 0),p=l.start_timestamp,g=Math.min(p?p+d/1e3:1/0,Math.max(p||-1/0,Math.min(o,c||1/0)));return E(g),Reflect.apply(e,t,[g,...a])}}),u.push(m.on("spanStart",e=>{var t;!(o||e===y||(0,eL.spanToJSON)(e).timestamp||e instanceof r8.SentrySpan&&e.isStandaloneSpan())&&(0,eL.getSpanDescendants)(y).includes(e)&&(t=e.spanContext().spanId,v(),i.set(t,!0),S((0,eO.timestampInSeconds)()+p/1e3))})),u.push(m.on("spanEnd",e=>{if(!o){var t;t=e.spanContext().spanId,i.has(t)&&i.delete(t),0===i.size&&b((0,eO.timestampInSeconds)()+c/1e3)}})),u.push(m.on("idleSpanEnableAutoFinish",e=>{e===y&&(l=!0,b(),i.size&&S())})),t.disableAutoFinish||b(),setTimeout(()=>{o||(y.setStatus({code:r7.SPAN_STATUS_ERROR,message:"deadline_exceeded"}),s="finalTimeout",y.end())},d),y}let nr=!1;function nn(){nr||(e.tag="sentry_tracingErrorCallback",nr=!0,rp(e),rm(e));function e(){let e=(0,eL.getActiveSpan)(),t=e&&(0,eL.getRootSpan)(e);if(t){let e="internal_error";Q.DEBUG_BUILD&&z.debug.log(`[Tracing] Root span: ${e} -> Global error occurred`),t.setStatus({code:r7.SPAN_STATUS_ERROR,message:e})}}}var na=e.i(230757),ni=e.i(518510);function no(){let e;return"u">typeof window&&(!(!("u">typeof __SENTRY_BROWSER_BUNDLE__&&__SENTRY_BROWSER_BUNDLE__)&&"[object process]"===Object.prototype.toString.call(void 0!==G.default?G.default:0))||(e=Y.GLOBAL_OBJ.process,e?.type==="renderer"))}let ns=(e,t,r,n)=>{let a,i;return o=>{if(t.value>=0&&(o||n)&&((i=t.value-(a??0))||void 0===a)){var s;a=t.value,t.delta=i,s=t.value,t.rating=s>r[1]?"poor":s>r[0]?"needs-improvement":"good",e(t)}}},nl=(e=!0)=>{let t=t3.performance?.getEntriesByType?.("navigation")[0];if(!e||t&&t.responseStart>0&&t.responseStart{let e=nl();return e?.activationStart??0};function nc(e,t,r){t3.document&&t3.addEventListener(e,t,r)}function nd(e,t,r){t3.document&&t3.removeEventListener(e,t,r)}let np=-1,nf=new Set,nh=e=>{if(("pagehide"===e.type||t3.document?.visibilityState==="hidden")&&np>-1){if("visibilitychange"===e.type||"pagehide"===e.type)for(let e of nf)e();isFinite(np)||(np="visibilitychange"===e.type?e.timeStamp:0,nd("prerenderingchange",nh,!0))}},nm=()=>{if(t3.document&&np<0){let e=nu();np=(t3.document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter(t=>"hidden"===t.name&&t.startTime>e)[0]?.startTime)??(t3.document?.visibilityState!=="hidden"||t3.document?.prerendering?1/0:0),nc("visibilitychange",nh,!0),nc("pagehide",nh,!0),nc("prerenderingchange",nh,!0)}return{get firstHiddenTime(){return np},onHidden(e){nf.add(e)}}},ng=(e,t=-1)=>{let r=nl(),n="navigate";return r&&(t3.document?.prerendering||nu()>0?n="prerender":t3.document?.wasDiscarded?n="restore":r.type&&(n=r.type.replace(/_/g,"-"))),{name:e,value:t,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`,navigationType:n}},n_=new WeakMap;function ny(e,t){try{return n_.get(e)||n_.set(e,new t),n_.get(e)}catch(e){return new t}}class nv{constructor(){nv.prototype.__init.call(this),nv.prototype.__init2.call(this)}__init(){this._sessionValue=0}__init2(){this._sessionEntries=[]}_processEntry(e){if(e.hadRecentInput)return;let t=this._sessionEntries[0],r=this._sessionEntries[this._sessionEntries.length-1];this._sessionValue&&t&&r&&e.startTime-r.startTime<1e3&&e.startTime-t.startTime<5e3?(this._sessionValue+=e.value,this._sessionEntries.push(e)):(this._sessionValue=e.value,this._sessionEntries=[e]),this._onAfterProcessingUnexpectedShift?.(e)}}let nb=(e,t,r={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){let n=new PerformanceObserver(e=>{Promise.resolve().then(()=>{t(e.getEntries())})});return n.observe({type:e,buffered:!0,...r}),n}}catch{}},nS=e=>{let t=!1;return()=>{t||(e(),t=!0)}},nE=e=>{t3.document?.prerendering?addEventListener("prerenderingchange",()=>e(),!0):e()},nT=[1800,3e3],nw=[.1,.25],nR=0,nI=1/0,nC=0,nA=e=>{e.forEach(e=>{e.interactionId&&(nI=Math.min(nI,e.interactionId),nR=(nC=Math.max(nC,e.interactionId))?(nC-nI)/7+1:0)})},nk=()=>s?nR:performance.interactionCount||0,nN=0;class nO{constructor(){nO.prototype.__init.call(this),nO.prototype.__init2.call(this)}__init(){this._longestInteractionList=[]}__init2(){this._longestInteractionMap=new Map}_resetInteractions(){nN=nk(),this._longestInteractionList.length=0,this._longestInteractionMap.clear()}_estimateP98LongestInteraction(){let e=Math.min(this._longestInteractionList.length-1,Math.floor((nk()-nN)/50));return this._longestInteractionList[e]}_processEntry(e){if(this._onBeforeProcessingEntry?.(e),!(e.interactionId||"first-input"===e.entryType))return;let t=this._longestInteractionList.at(-1),r=this._longestInteractionMap.get(e.interactionId);if(r||this._longestInteractionList.length<10||e.duration>t._latency){if(r?e.duration>r._latency?(r.entries=[e],r._latency=e.duration):e.duration===r._latency&&e.startTime===r.entries[0].startTime&&r.entries.push(e):(r={id:e.interactionId,entries:[e],_latency:e.duration},this._longestInteractionMap.set(r.id,r),this._longestInteractionList.push(r)),this._longestInteractionList.sort((e,t)=>t._latency-e._latency),this._longestInteractionList.length>10)for(let e of this._longestInteractionList.splice(10))this._longestInteractionMap.delete(e.id);this._onAfterProcessingINPCandidate?.(r)}}}let nx=e=>{let t=t3.requestIdleCallback||t3.setTimeout;t3.document?.visibilityState==="hidden"?e():(nc("visibilitychange",e=nS(e),{once:!0,capture:!0}),nc("pagehide",e,{once:!0,capture:!0}),t(()=>{e(),nd("visibilitychange",e,{capture:!0}),nd("pagehide",e,{capture:!0})}))},nP=[200,500];class nM{_processEntry(e){this._onBeforeProcessingEntry?.(e)}}let nL=[2500,4e3],nD=[800,1800],nU=e=>{t3.document?.prerendering?nE(()=>nU(e)):t3.document?.readyState!=="complete"?addEventListener("load",()=>nU(e),!0):setTimeout(e)},nB={},nj={};function n$(e,t=!1){return nV("cls",e,nG,l,t)}function nF(e,t=!1){return nV("lcp",e,nz,u,t)}function nH(e){return nV("inp",e,nJ,d)}function nW(e,t){var r;let n;return nK(e,t),nj[e]||(n={},"event"===(r=e)&&(n.durationThreshold=0),nb(r,e=>{nq(r,{entries:e})},n),nj[e]=!0),nX(e,t)}function nq(e,t){let r=nB[e];if(r?.length)for(let n of r)try{n(t)}catch(t){rG&&z.debug.error(`Error while triggering instrumentation handler. Type: ${e} Name: ${(0,em.getFunctionName)(n)} -Error:`,t)}}function nG(){return((e,t={})=>{((e,t={})=>{nE(()=>{let r,n=nm(),a=ng("FCP"),i=nb("paint",e=>{for(let t of e)"first-contentful-paint"===t.name&&(i.disconnect(),t.startTime{let r,n=ng("CLS",0),a=nm(),i=ny(t,nv),o=e=>{for(let t of e)i._processEntry(t);i._sessionValue>n.value&&(n.value=i._sessionValue,n.entries=i._sessionEntries,r())},s=nb("layout-shift",o);s&&(r=ns(e,n,nw,t.reportAllChanges),a.onHidden(()=>{o(s.takeRecords()),r(!0)}),t3?.setTimeout?.(r))}))})(e=>{nq("cls",{metric:e}),l=e},{reportAllChanges:!0})}function nz(){return((e,t={})=>{nE(()=>{let r,n=nm(),a=ng("LCP"),i=ny(t,nM),o=e=>{for(let o of(t.reportAllChanges||(e=e.slice(-1)),e))i._processEntry(o),o.startTime{o(s.takeRecords()),s.disconnect(),r(!0)}),i=e=>{e.isTrusted&&(nx(n),nd(e.type,i,{capture:!0}))};for(let e of["keydown","click","visibilitychange"])nc(e,i,{capture:!0})}})})(e=>{nq("lcp",{metric:e}),u=e},{reportAllChanges:!0})}function nY(){return((e,t={})=>{let r=ng("TTFB"),n=ns(e,r,nD,t.reportAllChanges);nU(()=>{let e=nl();e&&(r.value=Math.max(e.responseStart-nu(),0),r.entries=[e],n(!0))})})(e=>{nq("ttfb",{metric:e}),c=e})}function nJ(){return((e,t={})=>{if(!(globalThis.PerformanceEventTiming&&"interactionId"in PerformanceEventTiming.prototype))return;let r=nm();nE(()=>{let n;"interactionCount"in performance||s||(s=nb("event",nA,{type:"event",buffered:!0,durationThreshold:0}));let a=ng("INP"),i=ny(t,nO),o=e=>{nx(()=>{for(let t of e)i._processEntry(t);let t=i._estimateP98LongestInteraction();t&&t._latency!==a.value&&(a.value=t._latency,a.entries=t.entries,n())})},l=nb("event",o,{durationThreshold:t.durationThreshold??40});n=ns(e,a,nP,t.reportAllChanges),l&&(l.observe({type:"first-input",buffered:!0}),r.onHidden(()=>{o(l.takeRecords()),n(!0)}))})})(e=>{nq("inp",{metric:e}),d=e})}function nV(e,t,r,n,a=!1){let i;return nK(e,t),nj[e]||(i=r(),nj[e]=!0),n&&t({metric:n}),nX(e,t,a?i:void 0)}function nK(e,t){nB[e]=nB[e]||[],nB[e].push(t)}function nX(e,t,r){return()=>{r&&r();let n=nB[e];if(!n)return;let a=n.indexOf(t);-1!==a&&n.splice(a,1)}}function nQ(e){return"number"==typeof e&&isFinite(e)}function nZ(e,t,r,{...n}){let a=(0,eL.spanToJSON)(e).start_timestamp;return a&&a>t&&"function"==typeof e.updateStartTime&&e.updateStartTime(t),(0,r9.withActiveSpan)(e,()=>{let e=(0,r9.startInactiveSpan)({startTime:t,...n});return e&&e.end(r),e})}function n0(e){let t,r=(0,X.getClient)();if(!r)return;let{name:n,transaction:a,attributes:i,startTime:o}=e,{release:s,environment:l,sendDefaultPii:u}=r.getOptions(),c=r.getIntegrationByName("Replay"),d=c?.getReplayId(),p=(0,X.getCurrentScope)(),f=p.getUser(),h=void 0!==f?f.email||f.id||f.ip_address:void 0;try{t=p.getScopeData().contexts.profile.profile_id}catch{}let m={release:s,environment:l,user:h||void 0,profile_id:t||void 0,replay_id:d||void 0,transaction:a,"user_agent.original":t3.navigator?.userAgent,"client.address":u?"{{auto}}":void 0,...i};return(0,r9.startInactiveSpan)({name:n,attributes:m,startTime:o,experimental:{standalone:!0}})}function n1(){return t3.addEventListener&&t3.performance}function n2(e){return e/1e3}function n3(e){try{return PerformanceObserver.supportedEntryTypes.includes(e)}catch{return!1}}function n5(e,t){let r,n,a=!1;function i(e){!a&&n&&t(e,n),a=!0}nc("visibilitychange",r=e=>{("pagehide"===e.type||t3.document?.visibilityState==="hidden")&&(()=>{i("pagehide")})(e)},{capture:!0,once:!0}),nc("pagehide",r,{capture:!0,once:!0});let o=e.on("beforeStartNavigationSpan",(e,t)=>{t?.isRedirect||(i("navigation"),o(),s())}),s=e.on("afterStartPageLoadSpan",e=>{n=e.spanContext().spanId,s()})}let n4=[],n6=new Map,n8=new Map,n7={click:"click",pointerdown:"click",pointerup:"click",mousedown:"click",mouseup:"click",touchstart:"click",touchend:"click",mouseover:"hover",mouseout:"hover",mouseenter:"hover",mouseleave:"hover",pointerover:"hover",pointerout:"hover",pointerenter:"hover",pointerleave:"hover",dragstart:"drag",dragend:"drag",drag:"drag",dragenter:"drag",dragleave:"drag",dragover:"drag",drop:"drag",keydown:"press",keyup:"press",keypress:"press",input:"press"},n9=({metric:e})=>{if(void 0==e.value)return;let t=n2(e.value);if(t>60)return;let r=e.entries.find(t=>t.duration===e.value&&n7[t.name]);if(!r)return;let{interactionId:n}=r,a=n7[r.name],i=n2((0,eO.browserPerformanceTimeOrigin)()+r.startTime),o=(0,eL.getActiveSpan)(),s=o?(0,eL.getRootSpan)(o):void 0,l=null!=n?n6.get(n):void 0,u=l?.span||s,c=u?(0,eL.spanToJSON)(u).description:(0,X.getCurrentScope)().getScopeData().transactionName,d=n0({name:l?.elementName||(0,tC.htmlTreeAsString)(r.target),transaction:c,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser.inp",[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`ui.interaction.${a}`,[eh.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]:r.duration},startTime:i});d&&(d.addEvent("inp",{[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]:"millisecond",[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]:e.value}),d.end(i+t))};var ae=e.i(967703);function at(e){return e?(((0,eO.browserPerformanceTimeOrigin)()||performance.timeOrigin)+e)/1e3:e}function ar(e){let t={};if(void 0!=e.nextHopProtocol){let{name:r,version:n}=function(e){let t="unknown",r="unknown",n="";for(let a of e){if("/"===a){[t,r]=e.split("/");break}if(!isNaN(Number(a))){t="h"===n?"http":n,r=e.split(n)[1];break}n+=a}return n===e&&(t=n),{name:t,version:r}}(e.nextHopProtocol);t["network.protocol.version"]=n,t["network.protocol.name"]=r}return(0,eO.browserPerformanceTimeOrigin)()||n1()?.timeOrigin?Object.fromEntries(Object.entries({...t,"http.request.redirect_start":at(e.redirectStart),"http.request.redirect_end":at(e.redirectEnd),"http.request.worker_start":at(e.workerStart),"http.request.fetch_start":at(e.fetchStart),"http.request.domain_lookup_start":at(e.domainLookupStart),"http.request.domain_lookup_end":at(e.domainLookupEnd),"http.request.connect_start":at(e.connectStart),"http.request.secure_connection_start":at(e.secureConnectionStart),"http.request.connection_end":at(e.connectEnd),"http.request.request_start":at(e.requestStart),"http.request.response_start":at(e.responseStart),"http.request.response_end":at(e.responseEnd),"http.request.time_to_first_byte":null!=e.responseStart?e.responseStart/1e3:void 0}).filter(([,e])=>null!=e)):t}let an=0,aa={};function ai(e,t,r,n,a=r){var i;let o=t["secureConnection"===(i=r)?"connectEnd":"fetch"===i?"domainLookupStart":`${i}End`],s=t[`${r}Start`];s&&o&&nZ(e,n+n2(s),n+n2(o),{op:`browser.${a}`,name:t.name,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.browser.metrics",..."redirect"===r&&null!=t.redirectCount?{"http.redirect_count":t.redirectCount}:{}}})}let ao="sentry_previous_trace";function as(e){return 1===e.traceFlags}var al=e.i(439611),au=e.i(679162);function ac(e={}){let t=e.client||(0,X.getClient)();if(!(0,K.isEnabled)()||!t)return{};let r=(0,eC.getMainCarrier)(),n=(0,au.getAsyncContextStrategy)(r);if(n.getTraceData)return n.getTraceData(e);let a=e.scope||(0,X.getCurrentScope)(),i=e.span||(0,eL.getActiveSpan)();if(!i&&(0,X.hasExternalPropagationContext)())return{};let o=i?(0,eL.spanToTraceHeader)(i):function(e){let{traceId:t,sampled:r,propagationSpanId:n}=e.getPropagationContext();return(0,ni.generateSentryTraceHeader)(t,n,r)}(a),s=i?(0,eM.getDynamicSamplingContextFromSpan)(i):(0,eM.getDynamicSamplingContextFromScope)(t,a),l=(0,al.dynamicSamplingContextToSentryBaggageHeader)(s);if(!ni.TRACEPARENT_REGEXP.test(o))return z.debug.warn("Invalid sentry-trace data. Cannot generate trace data"),{};let u={"sentry-trace":o,baggage:l};return e.propagateTraceparent&&(u.traceparent=i?(0,eL.spanToTraceparentHeader)(i):function(e){let{traceId:t,sampled:r,propagationSpanId:n}=e.getPropagationContext();return(0,ni.generateTraceparentHeader)(t,n,r)}(a)),u}function ad(e){return e.split(",").some(e=>e.trim().startsWith(al.SENTRY_BAGGAGE_KEY_PREFIX))}function ap(e,t,r,n){let a={url:t2(e),type:"fetch","http.method":r,[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:n,[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"http.client"};return t&&(tQ(t)||(a["http.url"]=t2(t.href),a["server.address"]=t.host),t.search&&(a["http.query"]=t.search),t.hash&&(a["http.fragment"]=t.hash)),a}let af=Symbol.for("sentry__originalRequestBody");function ah(e){return new URLSearchParams(e).toString()}function am(e,t=z.debug){try{if("string"==typeof e)return[e];if(e instanceof URLSearchParams)return[e.toString()];if(e instanceof FormData)return[ah(e)];if(!e)return[void 0]}catch(r){return rG&&t.error(r,"Failed to serialize body",e),[void 0,"BODY_PARSE_ERROR"]}return rG&&t.log("Skipping network body because of body type",e),[void 0,"UNPARSEABLE_BODY_TYPE"]}function ag(e=[]){if(e.length>=2&&e[1]&&"object"==typeof e[1]&&"body"in e[1])return e[1].body;if(e.length>=1&&e[0]instanceof Request){let t=e[0][af];if(void 0!==t)return t}}function a_(e){let t;try{t=e.getAllResponseHeaders()}catch(t){return rG&&z.debug.error(t,"Failed to get xhr response headers",e),{}}return t?t.split("\r\n").reduce((e,t)=>{let[r,n]=t.split(": ");return n&&(e[r.toLowerCase()]=n),e},{}):{}}function ay(e){try{return new URL(e,tA.location.origin).href}catch{return}}function av(e){try{return new Headers(e)}catch{return}}let ab=new WeakMap,aS=new Map,aE={traceFetch:!0,traceXHR:!0,enableHTTPTimings:!0,trackFetchStreamPerformance:!1};function aT(e,t){let{traceFetch:r,traceXHR:n,trackFetchStreamPerformance:a,shouldCreateSpanForRequest:i,enableHTTPTimings:o,tracePropagationTargets:s,onRequestSpanStart:l,onRequestSpanEnd:u}={...aE,...t},c="function"==typeof i?i:e=>!0,d=e=>(function(e,t){let r=(0,tC.getLocationHref)();if(r){let n,a;try{n=new URL(e,r),a=new URL(r).origin}catch{return!1}let i=n.origin===a;return t?(0,ei.stringMatchesSomePattern)(n.toString(),t)||i&&(0,ei.stringMatchesSomePattern)(n.pathname,t):i}{let r=!!e.match(/^\/(?!\/)/);return t?(0,ei.stringMatchesSomePattern)(e,t):r}})(e,s),p={},f=e.getOptions().propagateTraceparent;if(r){let t;e.addEventProcessor(e=>("transaction"===e.type&&e.spans&&e.spans.forEach(e=>{if("http.client"===e.op){let t=aS.get(e.span_id);t&&(e.timestamp=t/1e3,aS.delete(e.span_id))}}),e)),a&&(tL(t="fetch-body-resolved",e=>{if(e.response){let t=ab.get(e.response);t&&e.endTimestamp&&aS.set(t,e.endTimestamp)}}),tD(t,()=>tq(tz))),tW(e=>{let t=function(e,t,r,n,a){if(!e.fetchData)return;let{method:i,url:o}=e.fetchData,s=(0,r4.hasSpansEnabled)()&&t(o);if(e.endTimestamp){var l,u,c;let t,r=e.fetchData.__span;if(!r)return;let i=n[r];i&&(s&&(function(e,t){if(t.response){(0,r7.setHttpStatus)(e,t.response.status);let r=t.response?.headers?.get("content-length");if(r){let t=parseInt(r);t>0&&e.setAttribute("http.response_content_length",t)}}else t.error&&e.setStatus({code:r7.SPAN_STATUS_ERROR,message:"internal_error"});e.end()}(i,e),l=i,u=e,t="object"==typeof(c=a)&&null!==c?c.onRequestSpanEnd:void 0,t?.(l,{headers:u.response?.headers,error:u.error})),delete n[r]);return}let{spanOrigin:d="auto.http.browser",propagateTraceparent:p=!1}="object"==typeof a?a:{spanOrigin:a},f=!!(0,eL.getActiveSpan)(),h=s&&f?(0,r9.startInactiveSpan)(function(e,t,r){if(e.startsWith("data:")){let n=t2(e);return{name:`${t} ${n}`,attributes:ap(e,void 0,t,r)}}let n=tZ(e),a=n?function(e){if(tQ(e))return e.pathname;let t=new URL(e);return t.search="",t.hash="",["80","443"].includes(t.port)&&(t.port=""),t.password&&(t.password="%filtered%"),t.username&&(t.username="%filtered%"),t.toString()}(n):e;return{name:`${t} ${a}`,attributes:ap(e,n,t,r)}}(o,i,d)):new r6.SentryNonRecordingSpan;if(e.fetchData.__span=h.spanContext().spanId,n[h.spanContext().spanId]=h,r(e.fetchData.url)){let t=e.args[0],r={...e.args[1]||{}},n=function(e,t,r,n){var a;let i=ac({span:r,propagateTraceparent:n}),o=i["sentry-trace"],s=i.baggage,l=i.traceparent;if(!o)return;let u=t.headers||((0,eA.isRequest)(e)?e.headers:void 0);if(!u)return{...i};if(a=u,"u">typeof Headers&&(0,eA.isInstanceOf)(a,Headers)){let e=new Headers(u);if(e.get("sentry-trace")||e.set("sentry-trace",o),n&&l&&!e.get("traceparent")&&e.set("traceparent",l),s){let t=e.get("baggage");t?ad(t)||e.set("baggage",`${t},${s}`):e.set("baggage",s)}return e}if(Array.isArray(u)){let e=[...u];u.find(e=>"sentry-trace"===e[0])||e.push(["sentry-trace",o]),n&&l&&!u.find(e=>"traceparent"===e[0])&&e.push(["traceparent",l]);let t=u.find(e=>"baggage"===e[0]&&ad(e[1]));return s&&!t&&e.push(["baggage",s]),e}{let e="sentry-trace"in u?u["sentry-trace"]:void 0,t="traceparent"in u?u.traceparent:void 0,r="baggage"in u?u.baggage:void 0,a=r?Array.isArray(r)?[...r]:[r]:[],i=r&&(Array.isArray(r)?r.find(e=>ad(e)):ad(r));s&&!i&&a.push(s);let c={...u,"sentry-trace":e??o,baggage:a.length>0?a.join(","):void 0};return n&&l&&!t&&(c.traceparent=l),c}}(t,r,(0,r4.hasSpansEnabled)()&&f?h:void 0,p);n&&(e.args[1]=r,r.headers=n)}let m=(0,X.getClient)();if(m){let t={input:e.args,response:e.response,startTimestamp:e.startTimestamp,endTimestamp:e.endTimestamp};m.emit("beforeOutgoingRequestSpan",h,t)}return h}(e,c,d,p,{propagateTraceparent:f,onRequestSpanEnd:u});if(e.response&&e.fetchData.__span&&ab.set(e.response,e.fetchData.__span),t){let r=ay(e.fetchData.url),n=r?t0(r).host:void 0;t.setAttributes({"http.url":r?t2(r):void 0,"server.address":n}),o&&aw(t),l?.(t,{headers:e.headers})}})}n&&t7(e=>{let t=function(e,t,r,n,a,i){let o=e.xhr,s=o?.[t8];if(!o||o.__sentry_own_request__||!s)return;let{url:l,method:u}=s,c=(0,r4.hasSpansEnabled)()&&t(l);if(e.endTimestamp){let t=o.__sentry_xhr_span_id__;if(!t)return;let r=n[t];r&&(c&&void 0!==s.status_code&&((0,r7.setHttpStatus)(r,s.status_code),r.end(),i?.(r,{headers:av(a_(o)),error:e.error})),delete n[t]);return}let d=ay(l),p=d?t0(d):t0(l),f=t2(t1(l)),h=!!(0,eL.getActiveSpan)(),m=c&&h?(0,r9.startInactiveSpan)({name:`${u} ${f}`,attributes:{url:t2(l),type:"xhr","http.method":u,"http.url":d?t2(d):void 0,"server.address":p?.host,[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser",[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"http.client",...p?.search&&{"http.query":p?.search},...p?.hash&&{"http.fragment":p?.hash}}}):new r6.SentryNonRecordingSpan;o.__sentry_xhr_span_id__=m.spanContext().spanId,n[o.__sentry_xhr_span_id__]=m,r(l)&&function(e,t,r){let{"sentry-trace":n,baggage:a,traceparent:i}=ac({span:t,propagateTraceparent:r});n&&function(e,t,r,n){let a=e.__sentry_xhr_v3__?.request_headers;if(!a?.["sentry-trace"]&&e.setRequestHeader)try{if(e.setRequestHeader("sentry-trace",t),n&&!a?.traceparent&&e.setRequestHeader("traceparent",n),r){let t=a?.baggage;t&&t.split(",").some(e=>e.trim().startsWith("sentry-"))||e.setRequestHeader("baggage",r)}}catch{}}(e,n,a,i)}(o,(0,r4.hasSpansEnabled)()&&h?m:void 0,a);let g=(0,X.getClient)();return g&&g.emit("beforeOutgoingRequestSpan",m,e),m}(e,c,d,p,f,u);t&&(o&&aw(t),l?.(t,{headers:av(e.xhr.__sentry_xhr_v3__?.request_headers)}))})}function aw(e){let{url:t}=(0,eL.spanToJSON)(e).data;if(!t||"string"!=typeof t)return;let r=nW("resource",({entries:n})=>{n.forEach(n=>{"resource"===n.entryType&&"initiatorType"in n&&"string"==typeof n.nextHopProtocol&&("fetch"===n.initiatorType||"xmlhttprequest"===n.initiatorType)&&n.name.endsWith(t)&&(e.setAttributes(ar(n)),setTimeout(r))})})}let aR=/Googlebot|Google-InspectionTool|Storebot-Google|Bingbot|Slurp|DuckDuckBot|Baiduspider|YandexBot|Facebot|facebookexternalhit|LinkedInBot|Twitterbot|Applebot/i,aI={...ne,instrumentNavigation:!0,instrumentPageLoad:!0,markBackgroundSpan:!0,enableLongTask:!0,enableLongAnimationFrame:!0,enableInp:!0,ignoreResourceSpans:[],ignorePerformanceApiSpans:[],detectRedirects:!0,linkPreviousTrace:"in-memory",consistentTraceSampling:!1,enableReportPageLoaded:!1,_experiments:{},...aE},aC=(e={})=>{let t,r,n,a;"enableElementTiming"in e&&(0,z.consoleSandbox)(()=>{console.warn("[Sentry] `enableElementTiming` is deprecated and no longer has any effect. Use the standalone `elementTimingIntegration` instead.")});let i={name:void 0,source:void 0},o=tA.document,{enableInp:s,enableLongTask:l,enableLongAnimationFrame:u,_experiments:{enableInteractions:d,enableStandaloneClsSpans:h,enableStandaloneLcpSpans:m},beforeStartSpan:g,idleTimeout:_,finalTimeout:y,childSpanTimeout:v,markBackgroundSpan:b,traceFetch:S,traceXHR:E,trackFetchStreamPerformance:T,shouldCreateSpanForRequest:w,enableHTTPTimings:R,ignoreResourceSpans:I,ignorePerformanceApiSpans:C,instrumentPageLoad:A,instrumentNavigation:k,detectRedirects:N,linkPreviousTrace:O,consistentTraceSampling:x,enableReportPageLoaded:P,onRequestSpanStart:M,onRequestSpanEnd:L}={...aI,...e},D=(a=tA.navigator,!!a?.userAgent&&aR.test(a.userAgent));function U(e,r,a=!0){let s="pageload"===r.op,l=r.name,u=g?g(r):r,c=u.attributes||{};if(l!==u.name&&(c[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="custom",u.attributes=c),!a){let e=(0,eO.dateTimestampInSeconds)();(0,r9.startInactiveSpan)({...u,startTime:e}).end(e);return}i.name=u.name,i.source=c[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];let d=nt(u,{idleTimeout:_,finalTimeout:y,childSpanTimeout:v,disableAutoFinish:s,beforeSpanEnd:r=>{t?.(),function(e,t){var r,n;let a=n1(),i=(0,eO.browserPerformanceTimeOrigin)();if(!a?.getEntries||!i)return;let o=n2(i),s=a.getEntries(),{op:l,start_timestamp:u}=(0,eL.spanToJSON)(e);s.slice(an).forEach(r=>{let n=n2(r.startTime),a=n2(Math.max(0,r.duration));if("navigation"!==l||!u||!(o+n{ai(i,s,e,c)}),ai(i,s,"secureConnection",c,"TLS/SSL"),ai(i,s,"fetch",c,"cache"),ai(i,s,"domainLookup",c,"DNS"),d=i,p=s,h=(f=c)+n2(p.requestStart),m=f+n2(p.responseEnd),g=f+n2(p.responseStart),p.responseEnd&&(nZ(d,h,m,{op:"browser.request",name:p.name,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.browser.metrics"}}),nZ(d,g,m,{op:"browser.response",name:p.name,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.browser.metrics"}}));break;case"mark":case"paint":case"measure":{!function(e,t,r,n,a,i){if(function(e){if(e?.entryType==="measure")try{return"Components ⚛"===e.detail.devtools.track}catch{return}}(t)||["mark","measure"].includes(t.entryType)&&(0,ei.stringMatchesSomePattern)(t.name,i))return;let o=nl(!1),s=a+Math.max(r,n2(o?o.requestStart:0)),l=a+r,u=l+n,c={[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.resource.browser.metrics"};s!==l&&(c["sentry.browser.measure_happened_before_request"]=!0,c["sentry.browser.measure_start_time"]=s),function(e,t){try{let r=t.detail;if(!r)return;if("object"==typeof r){for(let[t,n]of Object.entries(r))if(n&&(0,eA.isPrimitive)(n))e[`sentry.browser.measure.detail.${t}`]=n;else if(void 0!==n)try{e[`sentry.browser.measure.detail.${t}`]=JSON.stringify(n)}catch{}return}if((0,eA.isPrimitive)(r)){e["sentry.browser.measure.detail"]=r;return}try{e["sentry.browser.measure.detail"]=JSON.stringify(r)}catch{}}catch{}}(c,t),s<=u&&nZ(e,s,u,{name:t.name,op:t.entryType,attributes:c})}(e,r,n,a,o,t.ignorePerformanceApiSpans);let i=nm(),s=r.startTime{let r=s[e];null!=r&&("number"==typeof r&&r<0x7fffffff||"string"==typeof r)&&(l[t]=r)});let p={...c,...ar(t)},f=i+n;nZ(e,f,f+a,{name:r.replace(t3.location.origin,""),op:u,attributes:p})}(e,r,r.name,n,a,o,t.ignoreResourceSpans)}}),an=Math.max(s.length-1,0),function(e){let t=t3.navigator;if(!t)return;let r=t.connection;r&&(r.effectiveType&&e.setAttribute("effectiveConnectionType",r.effectiveType),r.type&&e.setAttribute("connectionType",r.type),nQ(r.rtt)&&(aa["connection.rtt"]={value:r.rtt,unit:"millisecond"})),nQ(t.deviceMemory)&&e.setAttribute("deviceMemory",`${t.deviceMemory} GB`),nQ(t.hardwareConcurrency)&&e.setAttribute("hardwareConcurrency",String(t.hardwareConcurrency))}(e),"pageload"===l&&(function(e){let t=nl(!1);if(!t)return;let{responseStart:r,requestStart:n}=t;n<=r&&(e["ttfb.requestTime"]={value:r-n,unit:"millisecond"})}(aa),t.recordClsOnPageloadSpan||delete aa.cls,t.recordLcpOnPageloadSpan||delete aa.lcp,Object.entries(aa).forEach(([e,t])=>{(0,ae.setMeasurement)(e,t.value,t.unit)}),e.setAttribute("performance.timeOrigin",o),e.setAttribute("performance.activationStart",nu()),r=e,n=t,p&&n.recordLcpOnPageloadSpan&&(p.element&&r.setAttribute("lcp.element",(0,tC.htmlTreeAsString)(p.element)),p.id&&r.setAttribute("lcp.id",p.id),p.url&&r.setAttribute("lcp.url",p.url.trim().slice(0,200)),null!=p.loadTime&&r.setAttribute("lcp.loadTime",p.loadTime),null!=p.renderTime&&r.setAttribute("lcp.renderTime",p.renderTime),r.setAttribute("lcp.size",p.size)),f?.sources&&n.recordClsOnPageloadSpan&&f.sources.forEach((e,t)=>r.setAttribute(`cls.source.${t+1}`,(0,tC.htmlTreeAsString)(e.node)))),p=void 0,f=void 0,aa={}}(r,{recordClsOnPageloadSpan:!h,recordLcpOnPageloadSpan:!m,ignoreResourceSpans:I,ignorePerformanceApiSpans:C}),aP(e,void 0);let a=(0,X.getCurrentScope)(),i=a.getPropagationContext();a.setPropagationContext({...i,traceId:d.spanContext().traceId,sampled:(0,eL.spanIsSampled)(d),dsc:(0,eM.getDynamicSamplingContextFromSpan)(r)}),s&&(n=void 0)},trimIdleSpanEndTimestamp:!P});function b(){o&&["interactive","complete"].includes(o.readyState)&&e.emit("idleSpanEnableAutoFinish",d)}s&&P&&(n=d),aP(e,d),s&&!P&&o&&(o.addEventListener("readystatechange",()=>{b()}),b())}return{name:"BrowserTracing",setup(e){if(D){rr&&z.debug.log("[Tracing] Skipping browserTracingIntegration setup for bot user agent.");return}if(nn(),t=function({recordClsStandaloneSpans:e,recordLcpStandaloneSpans:t,client:r}){let n=n1();if(n&&(0,eO.browserPerformanceTimeOrigin)()){n.mark&&t3.performance.mark("sentry-tracing-init");let a=t?function(e){let t,r=0;if(!n3("largest-contentful-paint"))return;let n=nF(({metric:e})=>{let n=e.entries[e.entries.length-1];n&&(r=e.value,t=n)},!0);n5(e,(e,a)=>{var i,o,s,l;let u,c,d,p,f;i=r,o=t,s=a,l=e,rG&&z.debug.log(`Sending LCP span (${i})`),u=n2(((0,eO.browserPerformanceTimeOrigin)()||0)+(o?.startTime||0)),c=(0,X.getCurrentScope)().getScopeData().transactionName,d=o?(0,tC.htmlTreeAsString)(o.element):"Largest contentful paint",p={[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser.lcp",[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"ui.webvital.lcp",[eh.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]:0,"sentry.pageload.span_id":s,"sentry.report_event":l},o&&(o.element&&(p["lcp.element"]=(0,tC.htmlTreeAsString)(o.element)),o.id&&(p["lcp.id"]=o.id),o.url&&(p["lcp.url"]=o.url),null!=o.loadTime&&(p["lcp.loadTime"]=o.loadTime),null!=o.renderTime&&(p["lcp.renderTime"]=o.renderTime),null!=o.size&&(p["lcp.size"]=o.size)),(f=n0({name:d,transaction:c,attributes:p,startTime:u}))&&(f.addEvent("lcp",{[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]:"millisecond",[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]:i}),f.end(u)),n()})}(r):nF(({metric:e})=>{let t=e.entries[e.entries.length-1];t&&(aa.lcp={value:e.value,unit:"millisecond"},p=t)},!0),i=nV("ttfb",({metric:e})=>{e.entries[e.entries.length-1]&&(aa.ttfb={value:e.value,unit:"millisecond"})},nY,c),o=e?function(e){let t,r=0;if(!n3("layout-shift"))return;let n=n$(({metric:e})=>{let n=e.entries[e.entries.length-1];n&&(r=e.value,t=n)},!0);n5(e,(e,a)=>{var i,o,s,l;let u,c,d,p,f;i=r,o=t,s=a,l=e,rG&&z.debug.log(`Sending CLS span (${i})`),u=o?n2(((0,eO.browserPerformanceTimeOrigin)()||0)+o.startTime):(0,eO.timestampInSeconds)(),c=(0,X.getCurrentScope)().getScopeData().transactionName,d=o?(0,tC.htmlTreeAsString)(o.sources[0]?.node):"Layout shift",p={[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser.cls",[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"ui.webvital.cls",[eh.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]:0,"sentry.pageload.span_id":s,"sentry.report_event":l},o?.sources&&o.sources.forEach((e,t)=>{p[`cls.source.${t+1}`]=(0,tC.htmlTreeAsString)(e.node)}),(f=n0({name:d,transaction:c,attributes:p,startTime:u}))&&(f.addEvent("cls",{[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]:"",[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]:i}),f.end(u)),n()})}(r):n$(({metric:e})=>{let t=e.entries[e.entries.length-1];t&&(aa.cls={value:e.value,unit:""},f=t)},!0);return()=>{a?.(),i(),o?.()}}return()=>void 0}({recordClsStandaloneSpans:h||!1,recordLcpStandaloneSpans:m||!1,client:e}),s&&function(){if(n1()&&(0,eO.browserPerformanceTimeOrigin)()){let e=nH(n9);()=>{e()}}}(),u&&Y.GLOBAL_OBJ.PerformanceObserver&&PerformanceObserver.supportedEntryTypes?.includes("long-animation-frame")?new PerformanceObserver(e=>{let t=(0,eL.getActiveSpan)();if(t)for(let r of e.getEntries()){if(!r.scripts[0])continue;let e=n2((0,eO.browserPerformanceTimeOrigin)()+r.startTime),{start_timestamp:n,op:a}=(0,eL.spanToJSON)(t);if("navigation"===a&&n&&e{let t=(0,eL.getActiveSpan)();if(!t)return;let{op:r,start_timestamp:n}=(0,eL.spanToJSON)(t);for(let a of e){let e=n2((0,eO.browserPerformanceTimeOrigin)()+a.startTime),i=n2(a.duration);"navigation"===r&&n&&e{let t=(0,eL.getActiveSpan)();if(t){for(let r of e)if("click"===r.name){let e=n2((0,eO.browserPerformanceTimeOrigin)()+r.startTime),n=n2(r.duration),a={name:(0,tC.htmlTreeAsString)(r.target),op:`ui.interaction.${r.name}`,startTime:e,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.browser.metrics"}},i=(0,tC.getComponentName)(r.target);i&&(a.attributes["ui.component_name"]=i),nZ(t,e,e+n,a)}}}),N&&o){let e=()=>{r=(0,eO.timestampInSeconds)()};addEventListener("click",e,{capture:!0}),addEventListener("keydown",e,{capture:!0,passive:!0})}function a(){let t=e[ax];t&&!(0,eL.spanToJSON)(t).timestamp&&(rr&&z.debug.log(`[Tracing] Finishing current active span with op: ${(0,eL.spanToJSON)(t).op}`),t.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON,"cancelled"),t.end())}e.on("startNavigationSpan",(t,n)=>{if((0,X.getClient)()!==e)return;if(n?.isRedirect){rr&&z.debug.warn("[Tracing] Detected redirect, navigation span will not be the root span, but a child span."),U(e,{op:"navigation.redirect",...t},!1);return}r=void 0,a(),(0,X.getIsolationScope)().setPropagationContext({traceId:(0,na.generateTraceId)(),sampleRand:Math.random(),propagationSpanId:(0,r4.hasSpansEnabled)()?void 0:(0,na.generateSpanId)()});let i=(0,X.getCurrentScope)();i.setPropagationContext({traceId:(0,na.generateTraceId)(),sampleRand:Math.random(),propagationSpanId:(0,r4.hasSpansEnabled)()?void 0:(0,na.generateSpanId)()}),i.setSDKProcessingMetadata({normalizedRequest:void 0}),U(e,{op:"navigation",...t,parentSpan:null,forceTransaction:!0})}),e.on("startPageLoadSpan",(t,r={})=>{if((0,X.getClient)()!==e)return;a();let n=r.sentryTrace||aN("sentry-trace")||aO("sentry-trace"),i=r.baggage||aN("baggage")||aO("baggage"),o=(0,ni.propagationContextFromHeaders)(n,i),s=(0,X.getCurrentScope)();s.setPropagationContext(o),(0,r4.hasSpansEnabled)()||(s.getPropagationContext().propagationSpanId=(0,na.generateSpanId)()),s.setSDKProcessingMetadata({normalizedRequest:tO()}),U(e,{op:"pageload",...t})}),e.on("endPageloadSpan",()=>{P&&n&&(n.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON,"reportPageLoaded"),n.end())})},afterAllSetup(e){var t,n,a,o,l;let u;if(D)return;let c=(0,tC.getLocationHref)();if("off"!==O&&function(e,{linkPreviousTrace:t,consistentTraceSampling:r}){let n="session-storage"===t,a=n?function(){try{let e=tA.sessionStorage?.getItem(ao);return JSON.parse(e)}catch{return}}():void 0;e.on("spanStart",e=>{if((0,eL.getRootSpan)(e)!==e)return;let t=(0,X.getCurrentScope)().getPropagationContext();a=function(e,t,r){let n=(0,eL.spanToJSON)(t),a={spanContext:t.spanContext(),startTimestamp:n.start_timestamp,sampleRate:function(){try{return Number(r.dsc?.sample_rate)??Number(n.data?.[eh.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE])}catch{return 0}}(),sampleRand:r.sampleRand};if(!e)return a;let i=e.spanContext;return i.traceId===n.trace_id?e:(Date.now()/1e3-e.startTimestamp<=3600&&(rr&&z.debug.log(`Adding previous_trace \`${JSON.stringify(i)}\` link to span \`${JSON.stringify({op:n.op,...t.spanContext()})}\``),t.addLink({context:i,attributes:{[eh.SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE]:"previous_trace"}}),t.setAttribute("sentry.previous_trace",`${i.traceId}-${i.spanId}-${+!!as(i)}`)),a)}(a,e,t),n&&function(e){try{tA.sessionStorage.setItem(ao,JSON.stringify(e))}catch(e){rr&&z.debug.warn("Could not store previous trace in sessionStorage",e)}}(a)});let i=!0;r&&e.on("beforeSampling",e=>{if(!a)return;let t=(0,X.getCurrentScope)(),r=t.getPropagationContext();if(i&&r.parentSpanId){i=!1;return}t.setPropagationContext({...r,dsc:{...r.dsc,sample_rate:String(a.sampleRate),sampled:String(as(a.spanContext))},sampleRand:a.sampleRand}),e.parentSampled=as(a.spanContext),e.parentSampleRate=a.sampleRate,e.spanAttributes={...e.spanAttributes,[eh.SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE]:a.sampleRate}})}(e,{linkPreviousTrace:O,consistentTraceSampling:x}),tA.location){if(A){let t=(0,eO.browserPerformanceTimeOrigin)();aA(e,{name:tA.location.pathname,startTime:t?t/1e3:void 0,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.pageload.browser"}})}k&&re(({to:t,from:n})=>{var a,i;let o,s;if(void 0===n&&c?.indexOf(t)!==-1){c=void 0;return}c=void 0;let l=tZ(t),u=e[ax],d=u&&N&&(a=u,i=r,o=(0,eL.spanToJSON)(a),!((s=(0,eO.dateTimestampInSeconds)())-o.start_timestamp>1.5)&&(!i||!(s-i<=1.5)));ak(e,{name:l?.pathname||tA.location.pathname,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.browser"}},{url:t,isRedirect:d})})}b&&(tA.document?tA.document.addEventListener("visibilitychange",()=>{let e=(0,eL.getActiveSpan)();if(!e)return;let t=(0,eL.getRootSpan)(e);if(tA.document.hidden&&t){let e="cancelled",{op:r,status:n}=(0,eL.spanToJSON)(t);rr&&z.debug.log(`[Tracing] Transaction: ${e} -> since tab moved to the background, op: ${r}`),n||t.setStatus({code:r7.SPAN_STATUS_ERROR,message:e}),t.setAttribute("sentry.cancellation_reason","document.hidden"),t.end()}}):rr&&z.debug.warn("[Tracing] Could not set up background tab detection due to lack of global document")),d&&(t=e,n=_,a=y,o=v,l=i,tA.document&&addEventListener("click",()=>{let e="ui.action.click",r=function(e){return e[ax]}(t);if(r&&["navigation","pageload"].includes((0,eL.spanToJSON)(r).op)){rr&&z.debug.warn(`[Tracing] Did not create ${e} span because a pageload or navigation span is in progress.`);return}if(u&&(u.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON,"interactionInterrupted"),u.end(),u=void 0),!l.name){rr&&z.debug.warn(`[Tracing] Did not create ${e} transaction because _latestRouteName is missing.`);return}u=nt({name:l.name,op:e,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:l.source||"url"}},{idleTimeout:n,finalTimeout:a,childSpanTimeout:o})},{capture:!0})),s&&function(){let e=Object.keys(n7);function t(e){let t=e.target;if(!t)return;let r=(0,tC.htmlTreeAsString)(t),n=Math.round(e.timeStamp);if(n8.set(n,r),n8.size>50){let e=n8.keys().next().value;void 0!==e&&n8.delete(e)}}no()&&e.forEach(e=>{t3.addEventListener(e,t,{capture:!0,passive:!0})});let r=({entries:e})=>{let t=(0,eL.getActiveSpan)(),r=t&&(0,eL.getRootSpan)(t);e.forEach(e=>{if(!("duration"in e))return;let t=e.interactionId;if(null==t||n6.has(t))return;let n=e.target?(0,tC.htmlTreeAsString)(e.target):function(e){let t=Math.round(e.startTime),r=n8.get(t);if(!r)for(let e=-5;e<=5;e++){let n=n8.get(t+e);if(n){r=n;break}}return r||""}(e);if(n4.length>10){let e=n4.shift();n6.delete(e)}n4.push(t),n6.set(t,{span:r,elementName:n})})};nW("event",r),nW("first-input",r)}(),aT(e,{traceFetch:S,traceXHR:E,trackFetchStreamPerformance:T,tracePropagationTargets:e.getOptions().tracePropagationTargets,shouldCreateSpanForRequest:w,enableHTTPTimings:R,onRequestSpanStart:M,onRequestSpanEnd:L})}}};function aA(e,t,r){e.emit("startPageLoadSpan",t,r),(0,X.getCurrentScope)().setTransactionName(t.name);let n=e[ax];return n&&e.emit("afterStartPageLoadSpan",n),n}function ak(e,t,r){let{url:n,isRedirect:a}=r||{};e.emit("beforeStartNavigationSpan",t,{isRedirect:a}),e.emit("startNavigationSpan",t,{isRedirect:a});let i=(0,X.getCurrentScope)();return i.setTransactionName(t.name),n&&!a&&i.setSDKProcessingMetadata({normalizedRequest:{...tO(),url:n}}),e[ax]}function aN(e){let t=tA.document,r=t?.querySelector(`meta[name=${e}]`);return r?.getAttribute("content")||void 0}function aO(e){let t=tA.performance?.getEntriesByType?.("navigation")[0],r=t?.serverTiming?.find(t=>t.name===e);return r?.description}let ax="_sentry_idleSpan";function aP(e,t){(0,ed.addNonEnumerableProperty)(e,ax,t)}let aM=Y.GLOBAL_OBJ,aL=null,aD=new Map,aU=new Map;function aB(e){let t=e.split("/").filter(Boolean),r=0;for(let e of t)if(e.startsWith(":")){let t=e.substring(1);t.endsWith("*?")?r+=1e3:t.endsWith("*")?r+=100:r+=10}return t.length>0&&(r+=1/t.length),r}function aj(e){if(aD.has(e))return aD.get(e)??null;try{let t=new RegExp(e);return aD.set(e,t),t}catch(t){return r2&&z.debug.warn("Could not compile regex",{regexString:e,error:t}),null}}function a$(){if(!aM?._sentryRouteManifest||"string"!=typeof aM._sentryRouteManifest)return null;let e=aM._sentryRouteManifest;if(aL&&A===e)return aL;aD.clear(),aU.clear();let t={staticRoutes:[],dynamicRoutes:[],isrRoutes:[]};try{if(t=JSON.parse(e),!Array.isArray(t.staticRoutes)||!Array.isArray(t.dynamicRoutes))return null;return aL=t,A=e,t}catch{return r2&&z.debug.warn("Could not extract route manifest"),null}}let aF=e=>{let t=a$();if(!t)return;let r=e.length>1&&e.endsWith("/")?e.slice(0,-1):e;if(aU.has(r))return aU.get(r);let{staticRoutes:n,dynamicRoutes:a}=t;if(!Array.isArray(n)||!Array.isArray(a))return;let i=(function(e,t,r){let n=[];if(t.some(t=>t.path===e))return n;for(let t of r)if(t.regex){let r=aj(t.regex);r?.test(e)&&n.push(t.path)}if(!e.startsWith("/:")){for(let t of r)if(t.hasOptionalPrefix&&t.regex){let r="/"===e?"/SENTRY_OPTIONAL_PREFIX":`/SENTRY_OPTIONAL_PREFIX${e}`,a=aj(t.regex);a?.test(r)&&n.push(t.path)}}return n})(r,n,a).sort((e,t)=>aB(e)-aB(t))[0];return aU.set(r,i),i};function aH(e){return e.length>1&&e.endsWith("/")?e.slice(0,-1):e}let aW="incomplete-app-router-transaction",aq="router-patch",aG={current:void 0},az=Y.GLOBAL_OBJ,aY=Y.GLOBAL_OBJ;function aJ(e){try{return new URL(e,"http://example.com/").pathname}catch{return"/"}}let aV=new WeakSet;function aK(e,t,r){aV.has(t)||(aV.add(t),["back","forward","push","replace"].forEach(n=>{t?.[n]&&(t[n]=new Proxy(t[n],{apply(t,a,i){if("router-patch"!==aq)return t.apply(a,i);let o=aW,s={[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"navigation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.nextjs.app_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url"},l=i[0],u=G.default.env._sentryBasePath??aY._sentryBasePath,c=u&&"string"==typeof l&&!l.startsWith(u)?`${u}${l}`:l;"push"===n?(o=aH(aJ(c)),s["navigation.type"]="router.push"):"replace"===n?(o=aH(aJ(c)),s["navigation.type"]="router.replace"):"back"===n?s["navigation.type"]="router.back":"forward"===n&&(s["navigation.type"]="router.forward");let d=aF(o);return r.current=ak(e,{name:d??o,attributes:{...s,[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:d?"route":"url"}}),t.apply(a,i)}}))}))}function aX(e,t){k&&k(e,t)}var aQ=e.i(896389);let aZ=aQ.default.events?aQ.default:aQ.default.default;function a0(e={}){let t=aC({...e,instrumentNavigation:!1,instrumentPageLoad:!1,onRequestSpanStart(...t){let[r,{headers:n}]=t;return n?.get("next-router-prefetch")&&r?.setAttribute("http.request.prefetch",!0),e.onRequestSpanStart?.(...t)}}),{instrumentPageLoad:r=!0,instrumentNavigation:n=!0}=e;return{...t,afterAllSetup(e){n&&function(e){if(tA.document.getElementById("__NEXT_DATA__"))aZ.events.on("routeChangeStart",t=>{let r,n,a=t1(t),i=function(e){let t=tA.__BUILD_MANIFEST?.sortedPages;if(t)return t.find(t=>{let r,n,a,i=(r=t.split("/"),n="",r[r.length-1]?.match(/^\[\[\.\.\..+\]\]$/)&&(r.pop(),n="(?:/(.+?))?"),a=r.map(e=>e.replace(/^\[\.\.\..+\]$/,"(.+?)").replace(/^\[.*\]$/,"([^/]+?)")).join("/"),RegExp(`^${a}${n}(?:/)?$`));return e.match(i)})}(a);i?(r=i,n="route"):(r=a,n="url"),ak(e,{name:r,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"navigation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.nextjs.pages_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:n}})});else{let t,r,n;k=(t,r)=>{let n=G.default.env._sentryBasePath??aY._sentryBasePath,a=aH(new URL(n&&!t.startsWith(n)?`${n}${t}`:t,tA.location.href).pathname),i=aF(a),o=i??a;"router-patch"===aq&&(aq="transition-start-hook");let s=aG.current;s?(s.updateName(o),s.setAttributes({"navigation.type":`router.${r}`,[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:i?"route":"url"}),aG.current=void 0):ak(e,{name:o,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"navigation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.nextjs.app_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:i?"route":"url","navigation.type":`router.${r}`}})},tA.addEventListener("popstate",()=>{let t=aH(tA.location.pathname),r=aF(t);aG.current?.isRecording()?(aG.current.updateName(r??t),aG.current.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,r?"route":"url")):aG.current=ak(e,{name:r??t,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.nextjs.app_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:r?"route":"url","navigation.type":"browser.popstate"}})}),t=!1,r=0,n=setInterval(()=>{r++;let a=az?.next?.router??az?.nd?.router;t||r>500?clearInterval(n):a&&(clearInterval(n),t=!0,aK(e,a,aG),["nd","next"].forEach(t=>{let r=az[t];r&&(az[t]=new Proxy(r,{set:(t,r,n)=>("router"===r&&"object"==typeof n&&null!==n&&aK(e,n,aG),t[r]=n,!0)}))}))},20)}}(e),t.afterAllSetup(e),r&&function(e){if(tA.document.getElementById("__NEXT_DATA__"))!function(e){let{route:t,params:r,sentryTrace:n,baggage:a}=function(){let e,t=tA.document.getElementById("__NEXT_DATA__");if(t?.innerHTML)try{e=JSON.parse(t.innerHTML)}catch{r2&&z.debug.warn("Could not extract __NEXT_DATA__")}if(!e)return{};let r={},{page:n,query:a,props:i}=e;return r.route=n,r.params=a,i?.pageProps&&(r.sentryTrace=i.pageProps._sentryTraceData,r.baggage=i.pageProps._sentryBaggage),r}(),i=(0,al.parseBaggageHeader)(a),o=t||tA.location.pathname;i?.["sentry-transaction"]&&"/_error"===o&&(o=(o=i["sentry-transaction"]).replace(/^(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS|TRACE|CONNECT)\s+/i,""));let s=(0,eO.browserPerformanceTimeOrigin)();aA(e,{name:o,startTime:s?s/1e3:void 0,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"pageload",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.pageload.nextjs.pages_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:t?"route":"url",...r&&e.getOptions().sendDefaultPii&&{...r}}},{sentryTrace:n,baggage:a})}(e);else{let t,r,n;r=aF(t=aH(tA.location.pathname)),aA(e,{name:r??t,startTime:(n=(0,eO.browserPerformanceTimeOrigin)())?n/1e3:void 0,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"pageload",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.pageload.nextjs.app_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:r?"route":"url"}})}}(e)}}}let a1=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function a2(...e){let t="",r=!1;for(let n=e.length-1;n>=-1&&!r;n--){let a=n>=0?e[n]:"/";a&&(t=`${a}/${t}`,r="/"===a.charAt(0))}return t=(function(e,t){let r=0;for(let t=e.length-1;t>=0;t--){let n=e[t];"."===n?e.splice(t,1):".."===n?(e.splice(t,1),r++):r&&(e.splice(t,1),r--)}if(t)for(;r--;)e.unshift("..");return e})(t.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+t||"."}function a3(e){let t=0;for(;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}let a5=(e={})=>{let t=e.root,r=e.prefix||"app:///",n="window"in Y.GLOBAL_OBJ&&!!Y.GLOBAL_OBJ.window,a=e.iteratee||function({isBrowser:e,root:t,prefix:r}){return n=>{if(!n.filename)return n;let a=/^[a-zA-Z]:\\/.test(n.filename)||n.filename.includes("\\")&&!n.filename.includes("/"),i=/^\//.test(n.filename);if(e){if(t){let e=n.filename;0===e.indexOf(t)&&(n.filename=e.replace(t,r))}}else if(a||i){let e,i,o=a?n.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):n.filename,s=t?function(e,t){e=a2(e).slice(1),t=a2(t).slice(1);let r=a3(e.split("/")),n=a3(t.split("/")),a=Math.min(r.length,n.length),i=a;for(let e=0;e1024?`${o.slice(-1024)}`:o,(i=a1.exec(e))?i.slice(1):[])[2]||"";n.filename=`${r}${s}`}return n}}({isBrowser:n,root:t,prefix:r});return{name:"RewriteFrames",processEvent(e){let t=e;return e.exception&&Array.isArray(e.exception.values)&&(t=function(e){try{return{...e,exception:{...e.exception,values:e.exception.values.map(e=>{var t;return{...e,...e.stacktrace&&{stacktrace:{...t=e.stacktrace,frames:t?.frames?.map(e=>a(e))}}}})}}}catch{return e}}(t)),t}}},a4=new class{constructor(e){this._maxSize=e,this._cache=new Map}get size(){return this._cache.size}get(e){let t=this._cache.get(e);if(void 0!==t)return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){if(this._cache.size>=this._maxSize){let e=this._cache.keys().next().value;this._cache.delete(e)}this._cache.set(e,t)}remove(e){let t=this._cache.get(e);return t&&this._cache.delete(e),t}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){let e=[];return this._cache.forEach(t=>e.push(t)),e}}(100),a6=Y.GLOBAL_OBJ,a8=!1,a7=Y.GLOBAL_OBJ;function a9(e){let t,r,n,a,i,o;a8&&(0,z.consoleSandbox)(()=>{console.warn("[@sentry/nextjs] You are calling `Sentry.init()` more than once on the client. This can happen if you have both a `sentry.client.config.ts` and a `instrumentation-client.ts` file with `Sentry.init()` calls. It is recommended to call `Sentry.init()` once in `instrumentation-client.ts`.")}),a8=!0,!r2&&e.debug&&(0,z.consoleSandbox)(()=>{console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.")}),("u"({...a5({iteratee:a=>{if(n){let r="u">typeof window&&window.location?window.location.origin:"";if(a.filename?.startsWith(r)&&!a.filename.endsWith(".js"))return a;if(e)a.filename?.startsWith(e)&&(a.filename=a.filename.replace(e,"app://"));else if(t)try{let{origin:e}=new URL(a.filename);e===r&&(a.filename=a.filename?.replace(e,"app://").replace(t,""))}catch{}}else try{let{origin:e}=new URL(a.filename);a.filename=a.filename?.replace(e,"app://").replace(r,"")}catch{}return n?(a.filename?.includes("/_next")&&(a.filename=decodeURI(a.filename)),a.filename?.match(/\/_next\/static\/chunks\/(main-|main-app-|polyfills-|webpack-|framework-|framework\.)[0-9a-f]+\.js$/)&&(a.in_app=!1)):(a.filename?.startsWith("app:///_next")&&(a.filename=decodeURI(a.filename)),a.filename?.match(/^app:\/\/\/_next\/static\/chunks\/(main-|main-app-|polyfills-|webpack-|framework-|framework\.)[0-9a-f]+\.js$/)&&(a.in_app=!1)),a}}),name:"NextjsClientStackFrameNormalization"}))({assetPrefix:a,basePath:i,rewriteFramesAssetPrefixPath:n,experimentalThirdPartyOriginStackFrames:o})),r),release:"9dad66acd3deb36c6e51fae1fdce6de96dd992c7",...e};!function(e){let t=G.default.env._sentryRewritesTunnelPath||a6._sentryRewritesTunnelPath;if(t&&e.dsn){let r=(0,eS.dsnFromString)(e.dsn);if(!r)return;let n=r.host.match(/^o(\d+)\.ingest(?:\.([a-z]{2}))?\.sentry\.io$/);if(n){let a=n[1],i=n[2],o=`${t}?o=${a}&p=${r.projectId}`;i&&(o+=`&r=${i}`),e.tunnel=o,r2&&z.debug.log(`Tunneling events to "${o}"`)}else r2&&z.debug.warn("Provided DSN is not a Sentry SaaS DSN. Will not tunnel events.")}}(s),V(s,"nextjs",["nextjs","react"]);let l=r1(s),u=e=>"transaction"===e.type&&"/404"===e.transaction?null:e;u.id="NextClient404Filter",(0,K.addEventProcessor)(u);let c=e=>"transaction"===e.type&&e.transaction===aW?null:e;c.id="IncompleteTransactionFilter",(0,K.addEventProcessor)(c);let d=(e,t)=>r5(t?.originalException)||e.exception?.values?.[0]?.value==="NEXT_REDIRECT"?null:e;d.id="NextRedirectErrorFilter",(0,K.addEventProcessor)(d);try{(0,X.getGlobalScope)().setTag("turbopack",!0)}catch{}return l}function ie(e){return e}function it(e,t={},r=(0,X.getCurrentScope)()){let{message:n,name:a,email:i,url:o,source:s,associatedEventId:l,tags:u}=e,c={contexts:{feedback:{contact_email:i,name:a,message:n,url:o,source:s,associated_event_id:l}},type:"feedback",level:"info",tags:u},d=r?.getClient()||(0,X.getClient)();return d&&d.emit("beforeSendFeedback",c,t),r.captureEvent(c,t)}e.s([],955364),e.i(955364),e.s([],227209),e.i(227209);let ir=Y.GLOBAL_OBJ,ia=ir.document,ii=ir.navigator,io="Report a Bug",is="Cancel",il="Send Bug Report",iu="Confirm",ic="Report a Bug",id="your.email@example.org",ip="Email",ih="What's the bug? What did you expect?",im="Description",ig="Your Name",i_="Name",iy="Thank you for your report!",iv="(required)",ib="Add a screenshot",iS="Remove screenshot",iE="Highlight",iT="Hide",iw="Remove",iR=(e,t={includeReplay:!0})=>{if(!e.message)throw Error("Unable to submit feedback with empty message");let r=(0,X.getClient)();if(!r)throw Error("No client setup, cannot send feedback.");e.tags&&Object.keys(e.tags).length&&(0,X.getCurrentScope)().setTags(e.tags);let n=it({source:"api",url:(0,tC.getLocationHref)(),...e},t);return new Promise((e,t)=>{let a=setTimeout(()=>t("Unable to determine if Feedback was correctly sent."),3e4),i=r.on("afterSendEvent",(r,o)=>{if(r.event_id===n)return(clearTimeout(a),i(),o?.statusCode&&o.statusCode>=200&&o.statusCode<300)?e(n):o?.statusCode===403?t("Unable to send feedback. This could be because this domain is not in your list of allowed domains."):t("Unable to send feedback. This could be because of network issues, or because you are using an ad-blocker.")})})},iI="u"{t.onFormOpen?.(),e.onFormOpen?.()},onFormClose:()=>{t.onFormClose?.(),e.onFormClose?.()},onSubmitSuccess:(r,n)=>{t.onSubmitSuccess?.(r,n),e.onSubmitSuccess?.(r,n)},onSubmitError:r=>{t.onSubmitError?.(r),e.onSubmitError?.(r)},onFormSubmitted:()=>{t.onFormSubmitted?.(),e.onFormSubmitted?.()},themeDark:{...e.themeDark,...t.themeDark},themeLight:{...e.themeLight,...t.themeLight}}}function iA(e,t){return Object.entries(t).forEach(([t,r])=>{e.setAttributeNS(null,t,r)}),e}let ik="rgba(88, 74, 192, 1)",iN={foreground:"#2b2233",background:"#ffffff",accentForeground:"white",accentBackground:ik,successColor:"#268d75",errorColor:"#df3338",border:"1.5px solid rgba(41, 35, 47, 0.13)",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",outline:"1px auto var(--accent-background)",interactiveFilter:"brightness(95%)"},iO={foreground:"#ebe6ef",background:"#29232f",accentForeground:"white",accentBackground:ik,successColor:"#2da98c",errorColor:"#f55459",border:"1.5px solid rgba(235, 230, 239, 0.15)",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",outline:"1px auto var(--accent-background)",interactiveFilter:"brightness(150%)"};function ix(e){return` +Error:`,t)}}function nG(){return((e,t={})=>{((e,t={})=>{nE(()=>{let r,n=nm(),a=ng("FCP"),i=nb("paint",e=>{for(let t of e)"first-contentful-paint"===t.name&&(i.disconnect(),t.startTime{let r,n=ng("CLS",0),a=nm(),i=ny(t,nv),o=e=>{for(let t of e)i._processEntry(t);i._sessionValue>n.value&&(n.value=i._sessionValue,n.entries=i._sessionEntries,r())},s=nb("layout-shift",o);s&&(r=ns(e,n,nw,t.reportAllChanges),a.onHidden(()=>{o(s.takeRecords()),r(!0)}),t3?.setTimeout?.(r))}))})(e=>{nq("cls",{metric:e}),l=e},{reportAllChanges:!0})}function nz(){return((e,t={})=>{nE(()=>{let r,n=nm(),a=ng("LCP"),i=ny(t,nM),o=e=>{for(let o of(t.reportAllChanges||(e=e.slice(-1)),e))i._processEntry(o),o.startTime{o(s.takeRecords()),s.disconnect(),r(!0)}),i=e=>{e.isTrusted&&(nx(n),nd(e.type,i,{capture:!0}))};for(let e of["keydown","click","visibilitychange"])nc(e,i,{capture:!0})}})})(e=>{nq("lcp",{metric:e}),u=e},{reportAllChanges:!0})}function nY(){return((e,t={})=>{let r=ng("TTFB"),n=ns(e,r,nD,t.reportAllChanges);nU(()=>{let e=nl();e&&(r.value=Math.max(e.responseStart-nu(),0),r.entries=[e],n(!0))})})(e=>{nq("ttfb",{metric:e}),c=e})}function nJ(){return((e,t={})=>{if(!(globalThis.PerformanceEventTiming&&"interactionId"in PerformanceEventTiming.prototype))return;let r=nm();nE(()=>{let n;"interactionCount"in performance||s||(s=nb("event",nA,{type:"event",buffered:!0,durationThreshold:0}));let a=ng("INP"),i=ny(t,nO),o=e=>{nx(()=>{for(let t of e)i._processEntry(t);let t=i._estimateP98LongestInteraction();t&&t._latency!==a.value&&(a.value=t._latency,a.entries=t.entries,n())})},l=nb("event",o,{durationThreshold:t.durationThreshold??40});n=ns(e,a,nP,t.reportAllChanges),l&&(l.observe({type:"first-input",buffered:!0}),r.onHidden(()=>{o(l.takeRecords()),n(!0)}))})})(e=>{nq("inp",{metric:e}),d=e})}function nV(e,t,r,n,a=!1){let i;return nK(e,t),nj[e]||(i=r(),nj[e]=!0),n&&t({metric:n}),nX(e,t,a?i:void 0)}function nK(e,t){nB[e]=nB[e]||[],nB[e].push(t)}function nX(e,t,r){return()=>{r&&r();let n=nB[e];if(!n)return;let a=n.indexOf(t);-1!==a&&n.splice(a,1)}}function nQ(e){return"number"==typeof e&&isFinite(e)}function nZ(e,t,r,{...n}){let a=(0,eL.spanToJSON)(e).start_timestamp;return a&&a>t&&"function"==typeof e.updateStartTime&&e.updateStartTime(t),(0,r9.withActiveSpan)(e,()=>{let e=(0,r9.startInactiveSpan)({startTime:t,...n});return e&&e.end(r),e})}function n0(e){let t,r=(0,X.getClient)();if(!r)return;let{name:n,transaction:a,attributes:i,startTime:o}=e,{release:s,environment:l,sendDefaultPii:u}=r.getOptions(),c=r.getIntegrationByName("Replay"),d=c?.getReplayId(),p=(0,X.getCurrentScope)(),f=p.getUser(),h=void 0!==f?f.email||f.id||f.ip_address:void 0;try{t=p.getScopeData().contexts.profile.profile_id}catch{}let m={release:s,environment:l,user:h||void 0,profile_id:t||void 0,replay_id:d||void 0,transaction:a,"user_agent.original":t3.navigator?.userAgent,"client.address":u?"{{auto}}":void 0,...i};return(0,r9.startInactiveSpan)({name:n,attributes:m,startTime:o,experimental:{standalone:!0}})}function n1(){return t3.addEventListener&&t3.performance}function n2(e){return e/1e3}function n3(e){try{return PerformanceObserver.supportedEntryTypes.includes(e)}catch{return!1}}function n5(e,t){let r,n,a=!1;function i(e){!a&&n&&t(e,n),a=!0}nc("visibilitychange",r=e=>{("pagehide"===e.type||t3.document?.visibilityState==="hidden")&&(()=>{i("pagehide")})(e)},{capture:!0,once:!0}),nc("pagehide",r,{capture:!0,once:!0});let o=e.on("beforeStartNavigationSpan",(e,t)=>{t?.isRedirect||(i("navigation"),o(),s())}),s=e.on("afterStartPageLoadSpan",e=>{n=e.spanContext().spanId,s()})}let n4=[],n6=new Map,n8=new Map,n7={click:"click",pointerdown:"click",pointerup:"click",mousedown:"click",mouseup:"click",touchstart:"click",touchend:"click",mouseover:"hover",mouseout:"hover",mouseenter:"hover",mouseleave:"hover",pointerover:"hover",pointerout:"hover",pointerenter:"hover",pointerleave:"hover",dragstart:"drag",dragend:"drag",drag:"drag",dragenter:"drag",dragleave:"drag",dragover:"drag",drop:"drag",keydown:"press",keyup:"press",keypress:"press",input:"press"},n9=({metric:e})=>{if(void 0==e.value)return;let t=n2(e.value);if(t>60)return;let r=e.entries.find(t=>t.duration===e.value&&n7[t.name]);if(!r)return;let{interactionId:n}=r,a=n7[r.name],i=n2((0,eO.browserPerformanceTimeOrigin)()+r.startTime),o=(0,eL.getActiveSpan)(),s=o?(0,eL.getRootSpan)(o):void 0,l=null!=n?n6.get(n):void 0,u=l?.span||s,c=u?(0,eL.spanToJSON)(u).description:(0,X.getCurrentScope)().getScopeData().transactionName,d=n0({name:l?.elementName||(0,tC.htmlTreeAsString)(r.target),transaction:c,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser.inp",[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:`ui.interaction.${a}`,[eh.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]:r.duration},startTime:i});d&&(d.addEvent("inp",{[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]:"millisecond",[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]:e.value}),d.end(i+t))};var ae=e.i(967703);function at(e){return e?(((0,eO.browserPerformanceTimeOrigin)()||performance.timeOrigin)+e)/1e3:e}function ar(e){let t={};if(void 0!=e.nextHopProtocol){let{name:r,version:n}=function(e){let t="unknown",r="unknown",n="";for(let a of e){if("/"===a){[t,r]=e.split("/");break}if(!isNaN(Number(a))){t="h"===n?"http":n,r=e.split(n)[1];break}n+=a}return n===e&&(t=n),{name:t,version:r}}(e.nextHopProtocol);t["network.protocol.version"]=n,t["network.protocol.name"]=r}return(0,eO.browserPerformanceTimeOrigin)()||n1()?.timeOrigin?Object.fromEntries(Object.entries({...t,"http.request.redirect_start":at(e.redirectStart),"http.request.redirect_end":at(e.redirectEnd),"http.request.worker_start":at(e.workerStart),"http.request.fetch_start":at(e.fetchStart),"http.request.domain_lookup_start":at(e.domainLookupStart),"http.request.domain_lookup_end":at(e.domainLookupEnd),"http.request.connect_start":at(e.connectStart),"http.request.secure_connection_start":at(e.secureConnectionStart),"http.request.connection_end":at(e.connectEnd),"http.request.request_start":at(e.requestStart),"http.request.response_start":at(e.responseStart),"http.request.response_end":at(e.responseEnd),"http.request.time_to_first_byte":null!=e.responseStart?e.responseStart/1e3:void 0}).filter(([,e])=>null!=e)):t}let an=0,aa={};function ai(e,t,r,n,a=r){var i;let o=t["secureConnection"===(i=r)?"connectEnd":"fetch"===i?"domainLookupStart":`${i}End`],s=t[`${r}Start`];s&&o&&nZ(e,n+n2(s),n+n2(o),{op:`browser.${a}`,name:t.name,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.browser.metrics",..."redirect"===r&&null!=t.redirectCount?{"http.redirect_count":t.redirectCount}:{}}})}let ao="sentry_previous_trace";function as(e){return 1===e.traceFlags}var al=e.i(439611),au=e.i(679162);function ac(e={}){let t=e.client||(0,X.getClient)();if(!(0,K.isEnabled)()||!t)return{};let r=(0,eC.getMainCarrier)(),n=(0,au.getAsyncContextStrategy)(r);if(n.getTraceData)return n.getTraceData(e);let a=e.scope||(0,X.getCurrentScope)(),i=e.span||(0,eL.getActiveSpan)();if(!i&&(0,X.hasExternalPropagationContext)())return{};let o=i?(0,eL.spanToTraceHeader)(i):function(e){let{traceId:t,sampled:r,propagationSpanId:n}=e.getPropagationContext();return(0,ni.generateSentryTraceHeader)(t,n,r)}(a),s=i?(0,eM.getDynamicSamplingContextFromSpan)(i):(0,eM.getDynamicSamplingContextFromScope)(t,a),l=(0,al.dynamicSamplingContextToSentryBaggageHeader)(s);if(!ni.TRACEPARENT_REGEXP.test(o))return z.debug.warn("Invalid sentry-trace data. Cannot generate trace data"),{};let u={"sentry-trace":o,baggage:l};return e.propagateTraceparent&&(u.traceparent=i?(0,eL.spanToTraceparentHeader)(i):function(e){let{traceId:t,sampled:r,propagationSpanId:n}=e.getPropagationContext();return(0,ni.generateTraceparentHeader)(t,n,r)}(a)),u}function ad(e){return e.split(",").some(e=>e.trim().startsWith(al.SENTRY_BAGGAGE_KEY_PREFIX))}function ap(e,t,r,n){let a={url:t2(e),type:"fetch","http.method":r,[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:n,[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"http.client"};return t&&(tQ(t)||(a["http.url"]=t2(t.href),a["server.address"]=t.host),t.search&&(a["http.query"]=t.search),t.hash&&(a["http.fragment"]=t.hash)),a}let af=Symbol.for("sentry__originalRequestBody");function ah(e){return new URLSearchParams(e).toString()}function am(e,t=z.debug){try{if("string"==typeof e)return[e];if(e instanceof URLSearchParams)return[e.toString()];if(e instanceof FormData)return[ah(e)];if(!e)return[void 0]}catch(r){return rG&&t.error(r,"Failed to serialize body",e),[void 0,"BODY_PARSE_ERROR"]}return rG&&t.log("Skipping network body because of body type",e),[void 0,"UNPARSEABLE_BODY_TYPE"]}function ag(e=[]){if(e.length>=2&&e[1]&&"object"==typeof e[1]&&"body"in e[1])return e[1].body;if(e.length>=1&&e[0]instanceof Request){let t=e[0][af];if(void 0!==t)return t}}function a_(e){let t;try{t=e.getAllResponseHeaders()}catch(t){return rG&&z.debug.error(t,"Failed to get xhr response headers",e),{}}return t?t.split("\r\n").reduce((e,t)=>{let[r,n]=t.split(": ");return n&&(e[r.toLowerCase()]=n),e},{}):{}}function ay(e){try{return new URL(e,tA.location.origin).href}catch{return}}function av(e){try{return new Headers(e)}catch{return}}let ab=new WeakMap,aS=new Map,aE={traceFetch:!0,traceXHR:!0,enableHTTPTimings:!0,trackFetchStreamPerformance:!1};function aT(e,t){let{traceFetch:r,traceXHR:n,trackFetchStreamPerformance:a,shouldCreateSpanForRequest:i,enableHTTPTimings:o,tracePropagationTargets:s,onRequestSpanStart:l,onRequestSpanEnd:u}={...aE,...t},c="function"==typeof i?i:e=>!0,d=e=>(function(e,t){let r=(0,tC.getLocationHref)();if(r){let n,a;try{n=new URL(e,r),a=new URL(r).origin}catch{return!1}let i=n.origin===a;return t?(0,ei.stringMatchesSomePattern)(n.toString(),t)||i&&(0,ei.stringMatchesSomePattern)(n.pathname,t):i}{let r=!!e.match(/^\/(?!\/)/);return t?(0,ei.stringMatchesSomePattern)(e,t):r}})(e,s),p={},f=e.getOptions().propagateTraceparent;if(r){let t;e.addEventProcessor(e=>("transaction"===e.type&&e.spans&&e.spans.forEach(e=>{if("http.client"===e.op){let t=aS.get(e.span_id);t&&(e.timestamp=t/1e3,aS.delete(e.span_id))}}),e)),a&&(tL(t="fetch-body-resolved",e=>{if(e.response){let t=ab.get(e.response);t&&e.endTimestamp&&aS.set(t,e.endTimestamp)}}),tD(t,()=>tq(tz))),tW(e=>{let t=function(e,t,r,n,a){if(!e.fetchData)return;let{method:i,url:o}=e.fetchData,s=(0,r4.hasSpansEnabled)()&&t(o);if(e.endTimestamp){var l,u,c;let t,r=e.fetchData.__span;if(!r)return;let i=n[r];i&&(s&&(function(e,t){if(t.response){(0,r7.setHttpStatus)(e,t.response.status);let r=t.response?.headers?.get("content-length");if(r){let t=parseInt(r);t>0&&e.setAttribute("http.response_content_length",t)}}else t.error&&e.setStatus({code:r7.SPAN_STATUS_ERROR,message:"internal_error"});e.end()}(i,e),l=i,u=e,t="object"==typeof(c=a)&&null!==c?c.onRequestSpanEnd:void 0,t?.(l,{headers:u.response?.headers,error:u.error})),delete n[r]);return}let{spanOrigin:d="auto.http.browser",propagateTraceparent:p=!1}="object"==typeof a?a:{spanOrigin:a},f=!!(0,eL.getActiveSpan)(),h=s&&f?(0,r9.startInactiveSpan)(function(e,t,r){if(e.startsWith("data:")){let n=t2(e);return{name:`${t} ${n}`,attributes:ap(e,void 0,t,r)}}let n=tZ(e),a=n?function(e){if(tQ(e))return e.pathname;let t=new URL(e);return t.search="",t.hash="",["80","443"].includes(t.port)&&(t.port=""),t.password&&(t.password="%filtered%"),t.username&&(t.username="%filtered%"),t.toString()}(n):e;return{name:`${t} ${a}`,attributes:ap(e,n,t,r)}}(o,i,d)):new r6.SentryNonRecordingSpan;if(e.fetchData.__span=h.spanContext().spanId,n[h.spanContext().spanId]=h,r(e.fetchData.url)){let t=e.args[0],r={...e.args[1]||{}},n=function(e,t,r,n){var a;let i=ac({span:r,propagateTraceparent:n}),o=i["sentry-trace"],s=i.baggage,l=i.traceparent;if(!o)return;let u=t.headers||((0,eA.isRequest)(e)?e.headers:void 0);if(!u)return{...i};if(a=u,"u">typeof Headers&&(0,eA.isInstanceOf)(a,Headers)){let e=new Headers(u);if(e.get("sentry-trace")||e.set("sentry-trace",o),n&&l&&!e.get("traceparent")&&e.set("traceparent",l),s){let t=e.get("baggage");t?ad(t)||e.set("baggage",`${t},${s}`):e.set("baggage",s)}return e}if(Array.isArray(u)){let e=[...u];u.find(e=>"sentry-trace"===e[0])||e.push(["sentry-trace",o]),n&&l&&!u.find(e=>"traceparent"===e[0])&&e.push(["traceparent",l]);let t=u.find(e=>"baggage"===e[0]&&ad(e[1]));return s&&!t&&e.push(["baggage",s]),e}{let e="sentry-trace"in u?u["sentry-trace"]:void 0,t="traceparent"in u?u.traceparent:void 0,r="baggage"in u?u.baggage:void 0,a=r?Array.isArray(r)?[...r]:[r]:[],i=r&&(Array.isArray(r)?r.find(e=>ad(e)):ad(r));s&&!i&&a.push(s);let c={...u,"sentry-trace":e??o,baggage:a.length>0?a.join(","):void 0};return n&&l&&!t&&(c.traceparent=l),c}}(t,r,(0,r4.hasSpansEnabled)()&&f?h:void 0,p);n&&(e.args[1]=r,r.headers=n)}let m=(0,X.getClient)();if(m){let t={input:e.args,response:e.response,startTimestamp:e.startTimestamp,endTimestamp:e.endTimestamp};m.emit("beforeOutgoingRequestSpan",h,t)}return h}(e,c,d,p,{propagateTraceparent:f,onRequestSpanEnd:u});if(e.response&&e.fetchData.__span&&ab.set(e.response,e.fetchData.__span),t){let r=ay(e.fetchData.url),n=r?t0(r).host:void 0;t.setAttributes({"http.url":r?t2(r):void 0,"server.address":n}),o&&aw(t),l?.(t,{headers:e.headers})}})}n&&t7(e=>{let t=function(e,t,r,n,a,i){let o=e.xhr,s=o?.[t8];if(!o||o.__sentry_own_request__||!s)return;let{url:l,method:u}=s,c=(0,r4.hasSpansEnabled)()&&t(l);if(e.endTimestamp){let t=o.__sentry_xhr_span_id__;if(!t)return;let r=n[t];r&&(c&&void 0!==s.status_code&&((0,r7.setHttpStatus)(r,s.status_code),r.end(),i?.(r,{headers:av(a_(o)),error:e.error})),delete n[t]);return}let d=ay(l),p=d?t0(d):t0(l),f=t2(t1(l)),h=!!(0,eL.getActiveSpan)(),m=c&&h?(0,r9.startInactiveSpan)({name:`${u} ${f}`,attributes:{url:t2(l),type:"xhr","http.method":u,"http.url":d?t2(d):void 0,"server.address":p?.host,[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser",[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"http.client",...p?.search&&{"http.query":p?.search},...p?.hash&&{"http.fragment":p?.hash}}}):new r6.SentryNonRecordingSpan;o.__sentry_xhr_span_id__=m.spanContext().spanId,n[o.__sentry_xhr_span_id__]=m,r(l)&&function(e,t,r){let{"sentry-trace":n,baggage:a,traceparent:i}=ac({span:t,propagateTraceparent:r});n&&function(e,t,r,n){let a=e.__sentry_xhr_v3__?.request_headers;if(!a?.["sentry-trace"]&&e.setRequestHeader)try{if(e.setRequestHeader("sentry-trace",t),n&&!a?.traceparent&&e.setRequestHeader("traceparent",n),r){let t=a?.baggage;t&&t.split(",").some(e=>e.trim().startsWith("sentry-"))||e.setRequestHeader("baggage",r)}}catch{}}(e,n,a,i)}(o,(0,r4.hasSpansEnabled)()&&h?m:void 0,a);let g=(0,X.getClient)();return g&&g.emit("beforeOutgoingRequestSpan",m,e),m}(e,c,d,p,f,u);t&&(o&&aw(t),l?.(t,{headers:av(e.xhr.__sentry_xhr_v3__?.request_headers)}))})}function aw(e){let{url:t}=(0,eL.spanToJSON)(e).data;if(!t||"string"!=typeof t)return;let r=nW("resource",({entries:n})=>{n.forEach(n=>{"resource"===n.entryType&&"initiatorType"in n&&"string"==typeof n.nextHopProtocol&&("fetch"===n.initiatorType||"xmlhttprequest"===n.initiatorType)&&n.name.endsWith(t)&&(e.setAttributes(ar(n)),setTimeout(r))})})}let aR=/Googlebot|Google-InspectionTool|Storebot-Google|Bingbot|Slurp|DuckDuckBot|Baiduspider|YandexBot|Facebot|facebookexternalhit|LinkedInBot|Twitterbot|Applebot/i,aI={...ne,instrumentNavigation:!0,instrumentPageLoad:!0,markBackgroundSpan:!0,enableLongTask:!0,enableLongAnimationFrame:!0,enableInp:!0,ignoreResourceSpans:[],ignorePerformanceApiSpans:[],detectRedirects:!0,linkPreviousTrace:"in-memory",consistentTraceSampling:!1,enableReportPageLoaded:!1,_experiments:{},...aE},aC=(e={})=>{let t,r,n,a;"enableElementTiming"in e&&(0,z.consoleSandbox)(()=>{console.warn("[Sentry] `enableElementTiming` is deprecated and no longer has any effect. Use the standalone `elementTimingIntegration` instead.")});let i={name:void 0,source:void 0},o=tA.document,{enableInp:s,enableLongTask:l,enableLongAnimationFrame:u,_experiments:{enableInteractions:d,enableStandaloneClsSpans:h,enableStandaloneLcpSpans:m},beforeStartSpan:g,idleTimeout:_,finalTimeout:y,childSpanTimeout:v,markBackgroundSpan:b,traceFetch:S,traceXHR:E,trackFetchStreamPerformance:T,shouldCreateSpanForRequest:w,enableHTTPTimings:R,ignoreResourceSpans:I,ignorePerformanceApiSpans:C,instrumentPageLoad:A,instrumentNavigation:k,detectRedirects:N,linkPreviousTrace:O,consistentTraceSampling:x,enableReportPageLoaded:P,onRequestSpanStart:M,onRequestSpanEnd:L}={...aI,...e},D=(a=tA.navigator,!!a?.userAgent&&aR.test(a.userAgent));function U(e,r,a=!0){let s="pageload"===r.op,l=r.name,u=g?g(r):r,c=u.attributes||{};if(l!==u.name&&(c[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]="custom",u.attributes=c),!a){let e=(0,eO.dateTimestampInSeconds)();(0,r9.startInactiveSpan)({...u,startTime:e}).end(e);return}i.name=u.name,i.source=c[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];let d=nt(u,{idleTimeout:_,finalTimeout:y,childSpanTimeout:v,disableAutoFinish:s,beforeSpanEnd:r=>{t?.(),function(e,t){var r,n;let a=n1(),i=(0,eO.browserPerformanceTimeOrigin)();if(!a?.getEntries||!i)return;let o=n2(i),s=a.getEntries(),{op:l,start_timestamp:u}=(0,eL.spanToJSON)(e);s.slice(an).forEach(r=>{let n=n2(r.startTime),a=n2(Math.max(0,r.duration));if("navigation"!==l||!u||!(o+n{ai(i,s,e,c)}),ai(i,s,"secureConnection",c,"TLS/SSL"),ai(i,s,"fetch",c,"cache"),ai(i,s,"domainLookup",c,"DNS"),d=i,p=s,h=(f=c)+n2(p.requestStart),m=f+n2(p.responseEnd),g=f+n2(p.responseStart),p.responseEnd&&(nZ(d,h,m,{op:"browser.request",name:p.name,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.browser.metrics"}}),nZ(d,g,m,{op:"browser.response",name:p.name,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.browser.metrics"}}));break;case"mark":case"paint":case"measure":{!function(e,t,r,n,a,i){if(function(e){if(e?.entryType==="measure")try{return"Components ⚛"===e.detail.devtools.track}catch{return}}(t)||["mark","measure"].includes(t.entryType)&&(0,ei.stringMatchesSomePattern)(t.name,i))return;let o=nl(!1),s=a+Math.max(r,n2(o?o.requestStart:0)),l=a+r,u=l+n,c={[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.resource.browser.metrics"};s!==l&&(c["sentry.browser.measure_happened_before_request"]=!0,c["sentry.browser.measure_start_time"]=s),function(e,t){try{let r=t.detail;if(!r)return;if("object"==typeof r){for(let[t,n]of Object.entries(r))if(n&&(0,eA.isPrimitive)(n))e[`sentry.browser.measure.detail.${t}`]=n;else if(void 0!==n)try{e[`sentry.browser.measure.detail.${t}`]=JSON.stringify(n)}catch{}return}if((0,eA.isPrimitive)(r)){e["sentry.browser.measure.detail"]=r;return}try{e["sentry.browser.measure.detail"]=JSON.stringify(r)}catch{}}catch{}}(c,t),s<=u&&nZ(e,s,u,{name:t.name,op:t.entryType,attributes:c})}(e,r,n,a,o,t.ignorePerformanceApiSpans);let i=nm(),s=r.startTime{let r=s[e];null!=r&&("number"==typeof r&&r<0x7fffffff||"string"==typeof r)&&(l[t]=r)});let p={...c,...ar(t)},f=i+n;nZ(e,f,f+a,{name:r.replace(t3.location.origin,""),op:u,attributes:p})}(e,r,r.name,n,a,o,t.ignoreResourceSpans)}}),an=Math.max(s.length-1,0),function(e){let t=t3.navigator;if(!t)return;let r=t.connection;r&&(r.effectiveType&&e.setAttribute("effectiveConnectionType",r.effectiveType),r.type&&e.setAttribute("connectionType",r.type),nQ(r.rtt)&&(aa["connection.rtt"]={value:r.rtt,unit:"millisecond"})),nQ(t.deviceMemory)&&e.setAttribute("deviceMemory",`${t.deviceMemory} GB`),nQ(t.hardwareConcurrency)&&e.setAttribute("hardwareConcurrency",String(t.hardwareConcurrency))}(e),"pageload"===l&&(function(e){let t=nl(!1);if(!t)return;let{responseStart:r,requestStart:n}=t;n<=r&&(e["ttfb.requestTime"]={value:r-n,unit:"millisecond"})}(aa),t.recordClsOnPageloadSpan||delete aa.cls,t.recordLcpOnPageloadSpan||delete aa.lcp,Object.entries(aa).forEach(([e,t])=>{(0,ae.setMeasurement)(e,t.value,t.unit)}),e.setAttribute("performance.timeOrigin",o),e.setAttribute("performance.activationStart",nu()),r=e,n=t,p&&n.recordLcpOnPageloadSpan&&(p.element&&r.setAttribute("lcp.element",(0,tC.htmlTreeAsString)(p.element)),p.id&&r.setAttribute("lcp.id",p.id),p.url&&r.setAttribute("lcp.url",p.url.trim().slice(0,200)),null!=p.loadTime&&r.setAttribute("lcp.loadTime",p.loadTime),null!=p.renderTime&&r.setAttribute("lcp.renderTime",p.renderTime),r.setAttribute("lcp.size",p.size)),f?.sources&&n.recordClsOnPageloadSpan&&f.sources.forEach((e,t)=>r.setAttribute(`cls.source.${t+1}`,(0,tC.htmlTreeAsString)(e.node)))),p=void 0,f=void 0,aa={}}(r,{recordClsOnPageloadSpan:!h,recordLcpOnPageloadSpan:!m,ignoreResourceSpans:I,ignorePerformanceApiSpans:C}),aP(e,void 0);let a=(0,X.getCurrentScope)(),i=a.getPropagationContext();a.setPropagationContext({...i,traceId:d.spanContext().traceId,sampled:(0,eL.spanIsSampled)(d),dsc:(0,eM.getDynamicSamplingContextFromSpan)(r)}),s&&(n=void 0)},trimIdleSpanEndTimestamp:!P});function b(){o&&["interactive","complete"].includes(o.readyState)&&e.emit("idleSpanEnableAutoFinish",d)}s&&P&&(n=d),aP(e,d),s&&!P&&o&&(o.addEventListener("readystatechange",()=>{b()}),b())}return{name:"BrowserTracing",setup(e){if(D){rr&&z.debug.log("[Tracing] Skipping browserTracingIntegration setup for bot user agent.");return}if(nn(),t=function({recordClsStandaloneSpans:e,recordLcpStandaloneSpans:t,client:r}){let n=n1();if(n&&(0,eO.browserPerformanceTimeOrigin)()){n.mark&&t3.performance.mark("sentry-tracing-init");let a=t?function(e){let t,r=0;if(!n3("largest-contentful-paint"))return;let n=nF(({metric:e})=>{let n=e.entries[e.entries.length-1];n&&(r=e.value,t=n)},!0);n5(e,(e,a)=>{var i,o,s,l;let u,c,d,p,f;i=r,o=t,s=a,l=e,rG&&z.debug.log(`Sending LCP span (${i})`),u=n2(((0,eO.browserPerformanceTimeOrigin)()||0)+(o?.startTime||0)),c=(0,X.getCurrentScope)().getScopeData().transactionName,d=o?(0,tC.htmlTreeAsString)(o.element):"Largest contentful paint",p={[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser.lcp",[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"ui.webvital.lcp",[eh.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]:0,"sentry.pageload.span_id":s,"sentry.report_event":l},o&&(o.element&&(p["lcp.element"]=(0,tC.htmlTreeAsString)(o.element)),o.id&&(p["lcp.id"]=o.id),o.url&&(p["lcp.url"]=o.url),null!=o.loadTime&&(p["lcp.loadTime"]=o.loadTime),null!=o.renderTime&&(p["lcp.renderTime"]=o.renderTime),null!=o.size&&(p["lcp.size"]=o.size)),(f=n0({name:d,transaction:c,attributes:p,startTime:u}))&&(f.addEvent("lcp",{[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]:"millisecond",[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]:i}),f.end(u)),n()})}(r):nF(({metric:e})=>{let t=e.entries[e.entries.length-1];t&&(aa.lcp={value:e.value,unit:"millisecond"},p=t)},!0),i=nV("ttfb",({metric:e})=>{e.entries[e.entries.length-1]&&(aa.ttfb={value:e.value,unit:"millisecond"})},nY,c),o=e?function(e){let t,r=0;if(!n3("layout-shift"))return;let n=n$(({metric:e})=>{let n=e.entries[e.entries.length-1];n&&(r=e.value,t=n)},!0);n5(e,(e,a)=>{var i,o,s,l;let u,c,d,p,f;i=r,o=t,s=a,l=e,rG&&z.debug.log(`Sending CLS span (${i})`),u=o?n2(((0,eO.browserPerformanceTimeOrigin)()||0)+o.startTime):(0,eO.timestampInSeconds)(),c=(0,X.getCurrentScope)().getScopeData().transactionName,d=o?(0,tC.htmlTreeAsString)(o.sources[0]?.node):"Layout shift",p={[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser.cls",[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"ui.webvital.cls",[eh.SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]:0,"sentry.pageload.span_id":s,"sentry.report_event":l},o?.sources&&o.sources.forEach((e,t)=>{p[`cls.source.${t+1}`]=(0,tC.htmlTreeAsString)(e.node)}),(f=n0({name:d,transaction:c,attributes:p,startTime:u}))&&(f.addEvent("cls",{[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]:"",[eh.SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]:i}),f.end(u)),n()})}(r):n$(({metric:e})=>{let t=e.entries[e.entries.length-1];t&&(aa.cls={value:e.value,unit:""},f=t)},!0);return()=>{a?.(),i(),o?.()}}return()=>void 0}({recordClsStandaloneSpans:h||!1,recordLcpStandaloneSpans:m||!1,client:e}),s&&function(){if(n1()&&(0,eO.browserPerformanceTimeOrigin)()){let e=nH(n9);()=>{e()}}}(),u&&Y.GLOBAL_OBJ.PerformanceObserver&&PerformanceObserver.supportedEntryTypes?.includes("long-animation-frame")?new PerformanceObserver(e=>{let t=(0,eL.getActiveSpan)();if(t)for(let r of e.getEntries()){if(!r.scripts[0])continue;let e=n2((0,eO.browserPerformanceTimeOrigin)()+r.startTime),{start_timestamp:n,op:a}=(0,eL.spanToJSON)(t);if("navigation"===a&&n&&e{let t=(0,eL.getActiveSpan)();if(!t)return;let{op:r,start_timestamp:n}=(0,eL.spanToJSON)(t);for(let a of e){let e=n2((0,eO.browserPerformanceTimeOrigin)()+a.startTime),i=n2(a.duration);"navigation"===r&&n&&e{let t=(0,eL.getActiveSpan)();if(t){for(let r of e)if("click"===r.name){let e=n2((0,eO.browserPerformanceTimeOrigin)()+r.startTime),n=n2(r.duration),a={name:(0,tC.htmlTreeAsString)(r.target),op:`ui.interaction.${r.name}`,startTime:e,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.browser.metrics"}},i=(0,tC.getComponentName)(r.target);i&&(a.attributes["ui.component_name"]=i),nZ(t,e,e+n,a)}}}),N&&o){let e=()=>{r=(0,eO.timestampInSeconds)()};addEventListener("click",e,{capture:!0}),addEventListener("keydown",e,{capture:!0,passive:!0})}function a(){let t=e[ax];t&&!(0,eL.spanToJSON)(t).timestamp&&(rr&&z.debug.log(`[Tracing] Finishing current active span with op: ${(0,eL.spanToJSON)(t).op}`),t.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON,"cancelled"),t.end())}e.on("startNavigationSpan",(t,n)=>{if((0,X.getClient)()!==e)return;if(n?.isRedirect){rr&&z.debug.warn("[Tracing] Detected redirect, navigation span will not be the root span, but a child span."),U(e,{op:"navigation.redirect",...t},!1);return}r=void 0,a(),(0,X.getIsolationScope)().setPropagationContext({traceId:(0,na.generateTraceId)(),sampleRand:Math.random(),propagationSpanId:(0,r4.hasSpansEnabled)()?void 0:(0,na.generateSpanId)()});let i=(0,X.getCurrentScope)();i.setPropagationContext({traceId:(0,na.generateTraceId)(),sampleRand:Math.random(),propagationSpanId:(0,r4.hasSpansEnabled)()?void 0:(0,na.generateSpanId)()}),i.setSDKProcessingMetadata({normalizedRequest:void 0}),U(e,{op:"navigation",...t,parentSpan:null,forceTransaction:!0})}),e.on("startPageLoadSpan",(t,r={})=>{if((0,X.getClient)()!==e)return;a();let n=r.sentryTrace||aN("sentry-trace")||aO("sentry-trace"),i=r.baggage||aN("baggage")||aO("baggage"),o=(0,ni.propagationContextFromHeaders)(n,i),s=(0,X.getCurrentScope)();s.setPropagationContext(o),(0,r4.hasSpansEnabled)()||(s.getPropagationContext().propagationSpanId=(0,na.generateSpanId)()),s.setSDKProcessingMetadata({normalizedRequest:tO()}),U(e,{op:"pageload",...t})}),e.on("endPageloadSpan",()=>{P&&n&&(n.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON,"reportPageLoaded"),n.end())})},afterAllSetup(e){var t,n,a,o,l;let u;if(D)return;let c=(0,tC.getLocationHref)();if("off"!==O&&function(e,{linkPreviousTrace:t,consistentTraceSampling:r}){let n="session-storage"===t,a=n?function(){try{let e=tA.sessionStorage?.getItem(ao);return JSON.parse(e)}catch{return}}():void 0;e.on("spanStart",e=>{if((0,eL.getRootSpan)(e)!==e)return;let t=(0,X.getCurrentScope)().getPropagationContext();a=function(e,t,r){let n=(0,eL.spanToJSON)(t),a={spanContext:t.spanContext(),startTimestamp:n.start_timestamp,sampleRate:function(){try{return Number(r.dsc?.sample_rate)??Number(n.data?.[eh.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE])}catch{return 0}}(),sampleRand:r.sampleRand};if(!e)return a;let i=e.spanContext;return i.traceId===n.trace_id?e:(Date.now()/1e3-e.startTimestamp<=3600&&(rr&&z.debug.log(`Adding previous_trace \`${JSON.stringify(i)}\` link to span \`${JSON.stringify({op:n.op,...t.spanContext()})}\``),t.addLink({context:i,attributes:{[eh.SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE]:"previous_trace"}}),t.setAttribute("sentry.previous_trace",`${i.traceId}-${i.spanId}-${+!!as(i)}`)),a)}(a,e,t),n&&function(e){try{tA.sessionStorage.setItem(ao,JSON.stringify(e))}catch(e){rr&&z.debug.warn("Could not store previous trace in sessionStorage",e)}}(a)});let i=!0;r&&e.on("beforeSampling",e=>{if(!a)return;let t=(0,X.getCurrentScope)(),r=t.getPropagationContext();if(i&&r.parentSpanId){i=!1;return}t.setPropagationContext({...r,dsc:{...r.dsc,sample_rate:String(a.sampleRate),sampled:String(as(a.spanContext))},sampleRand:a.sampleRand}),e.parentSampled=as(a.spanContext),e.parentSampleRate=a.sampleRate,e.spanAttributes={...e.spanAttributes,[eh.SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE]:a.sampleRate}})}(e,{linkPreviousTrace:O,consistentTraceSampling:x}),tA.location){if(A){let t=(0,eO.browserPerformanceTimeOrigin)();aA(e,{name:tA.location.pathname,startTime:t?t/1e3:void 0,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.pageload.browser"}})}k&&re(({to:t,from:n})=>{var a,i;let o,s;if(void 0===n&&c?.indexOf(t)!==-1){c=void 0;return}c=void 0;let l=tZ(t),u=e[ax],d=u&&N&&(a=u,i=r,o=(0,eL.spanToJSON)(a),!((s=(0,eO.dateTimestampInSeconds)())-o.start_timestamp>1.5)&&(!i||!(s-i<=1.5)));ak(e,{name:l?.pathname||tA.location.pathname,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.browser"}},{url:t,isRedirect:d})})}b&&(tA.document?tA.document.addEventListener("visibilitychange",()=>{let e=(0,eL.getActiveSpan)();if(!e)return;let t=(0,eL.getRootSpan)(e);if(tA.document.hidden&&t){let e="cancelled",{op:r,status:n}=(0,eL.spanToJSON)(t);rr&&z.debug.log(`[Tracing] Transaction: ${e} -> since tab moved to the background, op: ${r}`),n||t.setStatus({code:r7.SPAN_STATUS_ERROR,message:e}),t.setAttribute("sentry.cancellation_reason","document.hidden"),t.end()}}):rr&&z.debug.warn("[Tracing] Could not set up background tab detection due to lack of global document")),d&&(t=e,n=_,a=y,o=v,l=i,tA.document&&addEventListener("click",()=>{let e="ui.action.click",r=function(e){return e[ax]}(t);if(r&&["navigation","pageload"].includes((0,eL.spanToJSON)(r).op)){rr&&z.debug.warn(`[Tracing] Did not create ${e} span because a pageload or navigation span is in progress.`);return}if(u&&(u.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON,"interactionInterrupted"),u.end(),u=void 0),!l.name){rr&&z.debug.warn(`[Tracing] Did not create ${e} transaction because _latestRouteName is missing.`);return}u=nt({name:l.name,op:e,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:l.source||"url"}},{idleTimeout:n,finalTimeout:a,childSpanTimeout:o})},{capture:!0})),s&&function(){let e=Object.keys(n7);function t(e){let t=e.target;if(!t)return;let r=(0,tC.htmlTreeAsString)(t),n=Math.round(e.timeStamp);if(n8.set(n,r),n8.size>50){let e=n8.keys().next().value;void 0!==e&&n8.delete(e)}}no()&&e.forEach(e=>{t3.addEventListener(e,t,{capture:!0,passive:!0})});let r=({entries:e})=>{let t=(0,eL.getActiveSpan)(),r=t&&(0,eL.getRootSpan)(t);e.forEach(e=>{if(!("duration"in e))return;let t=e.interactionId;if(null==t||n6.has(t))return;let n=e.target?(0,tC.htmlTreeAsString)(e.target):function(e){let t=Math.round(e.startTime),r=n8.get(t);if(!r)for(let e=-5;e<=5;e++){let n=n8.get(t+e);if(n){r=n;break}}return r||""}(e);if(n4.length>10){let e=n4.shift();n6.delete(e)}n4.push(t),n6.set(t,{span:r,elementName:n})})};nW("event",r),nW("first-input",r)}(),aT(e,{traceFetch:S,traceXHR:E,trackFetchStreamPerformance:T,tracePropagationTargets:e.getOptions().tracePropagationTargets,shouldCreateSpanForRequest:w,enableHTTPTimings:R,onRequestSpanStart:M,onRequestSpanEnd:L})}}};function aA(e,t,r){e.emit("startPageLoadSpan",t,r),(0,X.getCurrentScope)().setTransactionName(t.name);let n=e[ax];return n&&e.emit("afterStartPageLoadSpan",n),n}function ak(e,t,r){let{url:n,isRedirect:a}=r||{};e.emit("beforeStartNavigationSpan",t,{isRedirect:a}),e.emit("startNavigationSpan",t,{isRedirect:a});let i=(0,X.getCurrentScope)();return i.setTransactionName(t.name),n&&!a&&i.setSDKProcessingMetadata({normalizedRequest:{...tO(),url:n}}),e[ax]}function aN(e){let t=tA.document,r=t?.querySelector(`meta[name=${e}]`);return r?.getAttribute("content")||void 0}function aO(e){let t=tA.performance?.getEntriesByType?.("navigation")[0],r=t?.serverTiming?.find(t=>t.name===e);return r?.description}let ax="_sentry_idleSpan";function aP(e,t){(0,ed.addNonEnumerableProperty)(e,ax,t)}let aM=Y.GLOBAL_OBJ,aL=null,aD=new Map,aU=new Map;function aB(e){let t=e.split("/").filter(Boolean),r=0;for(let e of t)if(e.startsWith(":")){let t=e.substring(1);t.endsWith("*?")?r+=1e3:t.endsWith("*")?r+=100:r+=10}return t.length>0&&(r+=1/t.length),r}function aj(e){if(aD.has(e))return aD.get(e)??null;try{let t=new RegExp(e);return aD.set(e,t),t}catch(t){return r2&&z.debug.warn("Could not compile regex",{regexString:e,error:t}),null}}function a$(){if(!aM?._sentryRouteManifest||"string"!=typeof aM._sentryRouteManifest)return null;let e=aM._sentryRouteManifest;if(aL&&A===e)return aL;aD.clear(),aU.clear();let t={staticRoutes:[],dynamicRoutes:[],isrRoutes:[]};try{if(t=JSON.parse(e),!Array.isArray(t.staticRoutes)||!Array.isArray(t.dynamicRoutes))return null;return aL=t,A=e,t}catch{return r2&&z.debug.warn("Could not extract route manifest"),null}}let aF=e=>{let t=a$();if(!t)return;let r=e.length>1&&e.endsWith("/")?e.slice(0,-1):e;if(aU.has(r))return aU.get(r);let{staticRoutes:n,dynamicRoutes:a}=t;if(!Array.isArray(n)||!Array.isArray(a))return;let i=(function(e,t,r){let n=[];if(t.some(t=>t.path===e))return n;for(let t of r)if(t.regex){let r=aj(t.regex);r?.test(e)&&n.push(t.path)}if(!e.startsWith("/:")){for(let t of r)if(t.hasOptionalPrefix&&t.regex){let r="/"===e?"/SENTRY_OPTIONAL_PREFIX":`/SENTRY_OPTIONAL_PREFIX${e}`,a=aj(t.regex);a?.test(r)&&n.push(t.path)}}return n})(r,n,a).sort((e,t)=>aB(e)-aB(t))[0];return aU.set(r,i),i};function aH(e){return e.length>1&&e.endsWith("/")?e.slice(0,-1):e}let aW="incomplete-app-router-transaction",aq="router-patch",aG={current:void 0},az=Y.GLOBAL_OBJ,aY=Y.GLOBAL_OBJ;function aJ(e){try{return new URL(e,"http://example.com/").pathname}catch{return"/"}}let aV=new WeakSet;function aK(e,t,r){aV.has(t)||(aV.add(t),["back","forward","push","replace"].forEach(n=>{t?.[n]&&(t[n]=new Proxy(t[n],{apply(t,a,i){if("router-patch"!==aq)return t.apply(a,i);let o=aW,s={[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"navigation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.nextjs.app_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url"},l=i[0],u=G.default.env._sentryBasePath??aY._sentryBasePath,c=u&&"string"==typeof l&&!l.startsWith(u)?`${u}${l}`:l;"push"===n?(o=aH(aJ(c)),s["navigation.type"]="router.push"):"replace"===n?(o=aH(aJ(c)),s["navigation.type"]="router.replace"):"back"===n?s["navigation.type"]="router.back":"forward"===n&&(s["navigation.type"]="router.forward");let d=aF(o);return r.current=ak(e,{name:d??o,attributes:{...s,[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:d?"route":"url"}}),t.apply(a,i)}}))}))}function aX(e,t){k&&k(e,t)}var aQ=e.i(896389);let aZ=aQ.default.events?aQ.default:aQ.default.default;function a0(e={}){let t=aC({...e,instrumentNavigation:!1,instrumentPageLoad:!1,onRequestSpanStart(...t){let[r,{headers:n}]=t;return n?.get("next-router-prefetch")&&r?.setAttribute("http.request.prefetch",!0),e.onRequestSpanStart?.(...t)}}),{instrumentPageLoad:r=!0,instrumentNavigation:n=!0}=e;return{...t,afterAllSetup(e){n&&function(e){if(tA.document.getElementById("__NEXT_DATA__"))aZ.events.on("routeChangeStart",t=>{let r,n,a=t1(t),i=function(e){let t=tA.__BUILD_MANIFEST?.sortedPages;if(t)return t.find(t=>{let r,n,a,i=(r=t.split("/"),n="",r[r.length-1]?.match(/^\[\[\.\.\..+\]\]$/)&&(r.pop(),n="(?:/(.+?))?"),a=r.map(e=>e.replace(/^\[\.\.\..+\]$/,"(.+?)").replace(/^\[.*\]$/,"([^/]+?)")).join("/"),RegExp(`^${a}${n}(?:/)?$`));return e.match(i)})}(a);i?(r=i,n="route"):(r=a,n="url"),ak(e,{name:r,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"navigation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.nextjs.pages_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:n}})});else{let t,r,n;k=(t,r)=>{let n=G.default.env._sentryBasePath??aY._sentryBasePath,a=aH(new URL(n&&!t.startsWith(n)?`${n}${t}`:t,tA.location.href).pathname),i=aF(a),o=i??a;"router-patch"===aq&&(aq="transition-start-hook");let s=aG.current;s?(s.updateName(o),s.setAttributes({"navigation.type":`router.${r}`,[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:i?"route":"url"}),aG.current=void 0):ak(e,{name:o,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"navigation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.nextjs.app_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:i?"route":"url","navigation.type":`router.${r}`}})},tA.addEventListener("popstate",()=>{let t=aH(tA.location.pathname),r=aF(t);aG.current?.isRecording()?(aG.current.updateName(r??t),aG.current.setAttribute(eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,r?"route":"url")):aG.current=ak(e,{name:r??t,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.navigation.nextjs.app_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:r?"route":"url","navigation.type":"browser.popstate"}})}),t=!1,r=0,n=setInterval(()=>{r++;let a=az?.next?.router??az?.nd?.router;t||r>500?clearInterval(n):a&&(clearInterval(n),t=!0,aK(e,a,aG),["nd","next"].forEach(t=>{let r=az[t];r&&(az[t]=new Proxy(r,{set:(t,r,n)=>("router"===r&&"object"==typeof n&&null!==n&&aK(e,n,aG),t[r]=n,!0)}))}))},20)}}(e),t.afterAllSetup(e),r&&function(e){if(tA.document.getElementById("__NEXT_DATA__"))!function(e){let{route:t,params:r,sentryTrace:n,baggage:a}=function(){let e,t=tA.document.getElementById("__NEXT_DATA__");if(t?.innerHTML)try{e=JSON.parse(t.innerHTML)}catch{r2&&z.debug.warn("Could not extract __NEXT_DATA__")}if(!e)return{};let r={},{page:n,query:a,props:i}=e;return r.route=n,r.params=a,i?.pageProps&&(r.sentryTrace=i.pageProps._sentryTraceData,r.baggage=i.pageProps._sentryBaggage),r}(),i=(0,al.parseBaggageHeader)(a),o=t||tA.location.pathname;i?.["sentry-transaction"]&&"/_error"===o&&(o=(o=i["sentry-transaction"]).replace(/^(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS|TRACE|CONNECT)\s+/i,""));let s=(0,eO.browserPerformanceTimeOrigin)();aA(e,{name:o,startTime:s?s/1e3:void 0,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"pageload",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.pageload.nextjs.pages_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:t?"route":"url",...r&&e.getOptions().sendDefaultPii&&{...r}}},{sentryTrace:n,baggage:a})}(e);else{let t,r,n;r=aF(t=aH(tA.location.pathname)),aA(e,{name:r??t,startTime:(n=(0,eO.browserPerformanceTimeOrigin)())?n/1e3:void 0,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_OP]:"pageload",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.pageload.nextjs.app_router_instrumentation",[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:r?"route":"url"}})}}(e)}}}let a1=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function a2(...e){let t="",r=!1;for(let n=e.length-1;n>=-1&&!r;n--){let a=n>=0?e[n]:"/";a&&(t=`${a}/${t}`,r="/"===a.charAt(0))}return t=(function(e,t){let r=0;for(let t=e.length-1;t>=0;t--){let n=e[t];"."===n?e.splice(t,1):".."===n?(e.splice(t,1),r++):r&&(e.splice(t,1),r--)}if(t)for(;r--;)e.unshift("..");return e})(t.split("/").filter(e=>!!e),!r).join("/"),(r?"/":"")+t||"."}function a3(e){let t=0;for(;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}let a5=(e={})=>{let t=e.root,r=e.prefix||"app:///",n="window"in Y.GLOBAL_OBJ&&!!Y.GLOBAL_OBJ.window,a=e.iteratee||function({isBrowser:e,root:t,prefix:r}){return n=>{if(!n.filename)return n;let a=/^[a-zA-Z]:\\/.test(n.filename)||n.filename.includes("\\")&&!n.filename.includes("/"),i=/^\//.test(n.filename);if(e){if(t){let e=n.filename;0===e.indexOf(t)&&(n.filename=e.replace(t,r))}}else if(a||i){let e,i,o=a?n.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):n.filename,s=t?function(e,t){e=a2(e).slice(1),t=a2(t).slice(1);let r=a3(e.split("/")),n=a3(t.split("/")),a=Math.min(r.length,n.length),i=a;for(let e=0;e1024?`${o.slice(-1024)}`:o,(i=a1.exec(e))?i.slice(1):[])[2]||"";n.filename=`${r}${s}`}return n}}({isBrowser:n,root:t,prefix:r});return{name:"RewriteFrames",processEvent(e){let t=e;return e.exception&&Array.isArray(e.exception.values)&&(t=function(e){try{return{...e,exception:{...e.exception,values:e.exception.values.map(e=>{var t;return{...e,...e.stacktrace&&{stacktrace:{...t=e.stacktrace,frames:t?.frames?.map(e=>a(e))}}}})}}}catch{return e}}(t)),t}}},a4=new class{constructor(e){this._maxSize=e,this._cache=new Map}get size(){return this._cache.size}get(e){let t=this._cache.get(e);if(void 0!==t)return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){if(this._cache.size>=this._maxSize){let e=this._cache.keys().next().value;this._cache.delete(e)}this._cache.set(e,t)}remove(e){let t=this._cache.get(e);return t&&this._cache.delete(e),t}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){let e=[];return this._cache.forEach(t=>e.push(t)),e}}(100),a6=Y.GLOBAL_OBJ,a8=!1,a7=Y.GLOBAL_OBJ;function a9(e){let t,r,n,a,i,o;a8&&(0,z.consoleSandbox)(()=>{console.warn("[@sentry/nextjs] You are calling `Sentry.init()` more than once on the client. This can happen if you have both a `sentry.client.config.ts` and a `instrumentation-client.ts` file with `Sentry.init()` calls. It is recommended to call `Sentry.init()` once in `instrumentation-client.ts`.")}),a8=!0,!r2&&e.debug&&(0,z.consoleSandbox)(()=>{console.warn("[@sentry/nextjs] You have enabled `debug: true`, but Sentry debug logging was removed from your bundle (likely via `withSentryConfig({ disableLogger: true })` / `webpack.treeshake.removeDebugLogging: true`). Set that option to `false` to see Sentry debug output.")}),("u"({...a5({iteratee:a=>{if(n){let r="u">typeof window&&window.location?window.location.origin:"";if(a.filename?.startsWith(r)&&!a.filename.endsWith(".js"))return a;if(e)a.filename?.startsWith(e)&&(a.filename=a.filename.replace(e,"app://"));else if(t)try{let{origin:e}=new URL(a.filename);e===r&&(a.filename=a.filename?.replace(e,"app://").replace(t,""))}catch{}}else try{let{origin:e}=new URL(a.filename);a.filename=a.filename?.replace(e,"app://").replace(r,"")}catch{}return n?(a.filename?.includes("/_next")&&(a.filename=decodeURI(a.filename)),a.filename?.match(/\/_next\/static\/chunks\/(main-|main-app-|polyfills-|webpack-|framework-|framework\.)[0-9a-f]+\.js$/)&&(a.in_app=!1)):(a.filename?.startsWith("app:///_next")&&(a.filename=decodeURI(a.filename)),a.filename?.match(/^app:\/\/\/_next\/static\/chunks\/(main-|main-app-|polyfills-|webpack-|framework-|framework\.)[0-9a-f]+\.js$/)&&(a.in_app=!1)),a}}),name:"NextjsClientStackFrameNormalization"}))({assetPrefix:a,basePath:i,rewriteFramesAssetPrefixPath:n,experimentalThirdPartyOriginStackFrames:o})),r),release:"dc62485b60679b810b5f74bfb5a22915b7a62314",...e};!function(e){let t=G.default.env._sentryRewritesTunnelPath||a6._sentryRewritesTunnelPath;if(t&&e.dsn){let r=(0,eS.dsnFromString)(e.dsn);if(!r)return;let n=r.host.match(/^o(\d+)\.ingest(?:\.([a-z]{2}))?\.sentry\.io$/);if(n){let a=n[1],i=n[2],o=`${t}?o=${a}&p=${r.projectId}`;i&&(o+=`&r=${i}`),e.tunnel=o,r2&&z.debug.log(`Tunneling events to "${o}"`)}else r2&&z.debug.warn("Provided DSN is not a Sentry SaaS DSN. Will not tunnel events.")}}(s),V(s,"nextjs",["nextjs","react"]);let l=r1(s),u=e=>"transaction"===e.type&&"/404"===e.transaction?null:e;u.id="NextClient404Filter",(0,K.addEventProcessor)(u);let c=e=>"transaction"===e.type&&e.transaction===aW?null:e;c.id="IncompleteTransactionFilter",(0,K.addEventProcessor)(c);let d=(e,t)=>r5(t?.originalException)||e.exception?.values?.[0]?.value==="NEXT_REDIRECT"?null:e;d.id="NextRedirectErrorFilter",(0,K.addEventProcessor)(d);try{(0,X.getGlobalScope)().setTag("turbopack",!0)}catch{}return l}function ie(e){return e}function it(e,t={},r=(0,X.getCurrentScope)()){let{message:n,name:a,email:i,url:o,source:s,associatedEventId:l,tags:u}=e,c={contexts:{feedback:{contact_email:i,name:a,message:n,url:o,source:s,associated_event_id:l}},type:"feedback",level:"info",tags:u},d=r?.getClient()||(0,X.getClient)();return d&&d.emit("beforeSendFeedback",c,t),r.captureEvent(c,t)}e.s([],955364),e.i(955364),e.s([],227209),e.i(227209);let ir=Y.GLOBAL_OBJ,ia=ir.document,ii=ir.navigator,io="Report a Bug",is="Cancel",il="Send Bug Report",iu="Confirm",ic="Report a Bug",id="your.email@example.org",ip="Email",ih="What's the bug? What did you expect?",im="Description",ig="Your Name",i_="Name",iy="Thank you for your report!",iv="(required)",ib="Add a screenshot",iS="Remove screenshot",iE="Highlight",iT="Hide",iw="Remove",iR=(e,t={includeReplay:!0})=>{if(!e.message)throw Error("Unable to submit feedback with empty message");let r=(0,X.getClient)();if(!r)throw Error("No client setup, cannot send feedback.");e.tags&&Object.keys(e.tags).length&&(0,X.getCurrentScope)().setTags(e.tags);let n=it({source:"api",url:(0,tC.getLocationHref)(),...e},t);return new Promise((e,t)=>{let a=setTimeout(()=>t("Unable to determine if Feedback was correctly sent."),3e4),i=r.on("afterSendEvent",(r,o)=>{if(r.event_id===n)return(clearTimeout(a),i(),o?.statusCode&&o.statusCode>=200&&o.statusCode<300)?e(n):o?.statusCode===403?t("Unable to send feedback. This could be because this domain is not in your list of allowed domains."):t("Unable to send feedback. This could be because of network issues, or because you are using an ad-blocker.")})})},iI="u"{t.onFormOpen?.(),e.onFormOpen?.()},onFormClose:()=>{t.onFormClose?.(),e.onFormClose?.()},onSubmitSuccess:(r,n)=>{t.onSubmitSuccess?.(r,n),e.onSubmitSuccess?.(r,n)},onSubmitError:r=>{t.onSubmitError?.(r),e.onSubmitError?.(r)},onFormSubmitted:()=>{t.onFormSubmitted?.(),e.onFormSubmitted?.()},themeDark:{...e.themeDark,...t.themeDark},themeLight:{...e.themeLight,...t.themeLight}}}function iA(e,t){return Object.entries(t).forEach(([t,r])=>{e.setAttributeNS(null,t,r)}),e}let ik="rgba(88, 74, 192, 1)",iN={foreground:"#2b2233",background:"#ffffff",accentForeground:"white",accentBackground:ik,successColor:"#268d75",errorColor:"#df3338",border:"1.5px solid rgba(41, 35, 47, 0.13)",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",outline:"1px auto var(--accent-background)",interactiveFilter:"brightness(95%)"},iO={foreground:"#ebe6ef",background:"#29232f",accentForeground:"white",accentBackground:ik,successColor:"#2da98c",errorColor:"#f55459",border:"1.5px solid rgba(235, 230, 239, 0.15)",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",outline:"1px auto var(--accent-background)",interactiveFilter:"brightness(150%)"};function ix(e){return` --foreground: ${e.foreground}; --background: ${e.background}; --accent-foreground: ${e.accentForeground}; @@ -493,4 +493,4 @@ ${e.stack}`:"unknown"}}}}})(t,e.saveZodIssuesAsAttachment,r,n)}},ut={startProfil useEffect: ${E}. useLocation: ${T}. useNavigationType: ${w}. createRoutesFromChildren: ${R}. matchRoutes: ${I}.`),e;let r=r=>{let n=r0.useRef(!0),a=T(),i=w();return E(()=>{let e=R(r.children);n.current?(hz(e),hY({activeRootSpan:hS(),location:a,routes:e,allRoutes:Array.from(hA)}),n.current=!1):hG({location:a,routes:e,navigationType:i,version:t,allRoutes:Array.from(hA)})},[a,i]),r0.createElement(e,{...r})};return fV(r,e),r}function hX(e){return hH(e,"6")}function hQ(e){return hW(e,"6")}function hZ(e){return h$(e,"6")}function h0(e){return hF(e,"6")}function h1(e){return hK(e,"6")}function h2(e){return hH(e,"7")}function h3(e){return hK(e,"7")}function h5(e){return h$(e,"7")}function h4(e){return hF(e,"7")}function h6(e){return hW(e,"7")}function h8(e){let t={};try{e.forEach((e,r)=>{"string"==typeof e&&(t[r]=e)})}catch{}return t}function h7(e){let t=Object.create(null);try{Object.entries(e).forEach(([e,r])=>{"string"==typeof r&&(t[e]=r)})}catch{}return t}function h9(e){let t=e.headers||{},r=("string"==typeof t["x-forwarded-host"]?t["x-forwarded-host"]:void 0)||("string"==typeof t.host?t.host:void 0),n=("string"==typeof t["x-forwarded-proto"]?t["x-forwarded-proto"]:void 0)||e.protocol||(e.socket?.encrypted?"https":"http"),a=e.url||"",i=function({url:e,protocol:t,host:r}){return e?.startsWith("http")?e:e&&r?`${t}://${r}${e}`:void 0}({url:a,host:r,protocol:n}),o=e.body||void 0,s=e.cookies;return{url:i,method:e.method,query_string:me(a),headers:h7(t),cookies:s,data:o}}function me(e){if(e)try{let t=new URL(e,"http://s.io").search.slice(1);return t.length?t:void 0}catch{return}}async function mt(){try{r2&&z.debug.log("Flushing events..."),await (0,K.flush)(2e3),r2&&z.debug.log("Done flushing events")}catch(e){r2&&z.debug.log("Error while flushing events:\n",e)}}function mr(e){var t;"function"==typeof mn()?.waitUntil?(t=e,mn()?.waitUntil(t)):function(e){if("string"!=typeof EdgeRuntime)return;let t=Y.GLOBAL_OBJ[Symbol.for("@vercel/request-context")],r=t?.get?.();r?.waitUntil&&r.waitUntil(e)}(e)}function mn(){let e=Symbol.for("__cloudflare-context__");return Y.GLOBAL_OBJ[e]?.ctx}function ma(e,t,r){(0,X.withScope)(n=>{n.setSDKProcessingMetadata({normalizedRequest:{headers:h7(t.headers),method:t.method}}),n.setContext("nextjs",{request_path:t.path,router_kind:r.routerKind,router_path:r.routePath,route_type:r.routeType}),n.setTransactionName(`${t.method} ${r.routePath}`),(0,K.captureException)(e,{mechanism:{handled:!1,type:"auto.function.nextjs.on_request_error"}}),mr(mt())})}async function mi(e){let{req:t,res:r,err:n}=e,a=r?.statusCode||e.statusCode;if(a&&a<500||!e.pathname)return;if(n&&(0,ea.isAlreadyCaptured)(n)){mr(mt());let e="object"==typeof n?n.__sentry_event_id__:void 0;return"string"==typeof e?((0,X.getIsolationScope)().setLastEventId(e),e):(0,X.getIsolationScope)().lastEventId()}let i=(0,X.withScope)(e=>{if(t){let r=h9(t);e.setSDKProcessingMetadata({normalizedRequest:r})}return(0,K.captureException)(n||`_error.js called with falsy error (${n})`,{mechanism:{type:"auto.function.nextjs.underscore_error",handled:!1,data:{function:"_error.getInitialProps"}}})});return mr(mt()),i}e.s(["BrowserClient",()=>tx,"ErrorBoundary",()=>f2,"MULTIPLEXED_TRANSPORT_EXTRA_KEY",()=>oV,"OpenFeatureIntegrationHook",()=>fS,"Profiler",()=>fK,"SDK_VERSION",()=>J.SDK_VERSION,"SEMANTIC_ATTRIBUTE_SENTRY_OP",()=>eh.SEMANTIC_ATTRIBUTE_SENTRY_OP,"SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN",()=>eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE",()=>eh.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,"SEMANTIC_ATTRIBUTE_SENTRY_SOURCE",()=>eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,"Scope",()=>oQ.Scope,"WINDOW",()=>tA,"addBreadcrumb",()=>tK,"addEventProcessor",()=>K.addEventProcessor,"addIntegration",()=>er,"breadcrumbsIntegration",()=>rn,"browserApiErrorsIntegration",()=>ri,"browserProfilingIntegration",()=>fg,"browserSessionIntegration",()=>ru,"browserTracingIntegration",()=>aC,"buildLaunchDarklyFlagUsedHandler",()=>fv,"captureConsoleIntegration",()=>oZ,"captureEvent",()=>K.captureEvent,"captureException",()=>K.captureException,"captureFeedback",()=>it,"captureMessage",()=>K.captureMessage,"captureReactException",()=>fO,"captureSession",()=>K.captureSession,"chromeStackLineParser",()=>rx,"close",()=>K.close,"consoleLoggingIntegration",()=>o5,"contextLinesIntegration",()=>ug,"continueTrace",()=>r9.continueTrace,"createConsolaReporter",()=>o6,"createLangChainCallbackHandler",()=>s7,"createReduxEnhancer",()=>f4,"createTransport",()=>e3,"createUserFeedbackEnvelope",()=>ur,"cultureContextIntegration",()=>rc,"dedupeIntegration",()=>eg,"defaultRequestInstrumentationOptions",()=>aE,"defaultStackLineParsers",()=>rH,"defaultStackParser",()=>rW,"diagnoseSdkConnectivity",()=>fC,"elementTimingIntegration",()=>pX,"endSession",()=>K.endSession,"eventFiltersIntegration",()=>es,"eventFromException",()=>tT,"eventFromMessage",()=>tw,"exceptionFromError",()=>ty,"extraErrorDataIntegration",()=>s9,"featureFlagsIntegration",()=>la,"feedbackAsyncIntegration",()=>oY,"feedbackIntegration",()=>oJ,"feedbackSyncIntegration",()=>oJ,"flush",()=>K.flush,"forceLoad",()=>rQ,"functionToStringIntegration",()=>ef,"geckoStackLineParser",()=>rL,"getActiveSpan",()=>eL.getActiveSpan,"getClient",()=>X.getClient,"getCurrentScope",()=>X.getCurrentScope,"getDefaultIntegrations",()=>rK,"getFeedback",()=>iL,"getGlobalScope",()=>X.getGlobalScope,"getIsolationScope",()=>X.getIsolationScope,"getReplay",()=>pE,"getRootSpan",()=>eL.getRootSpan,"getSpanDescendants",()=>eL.getSpanDescendants,"getSpanStatusFromHttpCode",()=>r7.getSpanStatusFromHttpCode,"getTraceData",()=>ac,"globalHandlersIntegration",()=>r_,"graphqlClientIntegration",()=>uT,"growthbookIntegration",()=>fR,"httpClientIntegration",()=>uu,"httpContextIntegration",()=>rE,"inboundFiltersIntegration",()=>el,"init",()=>r1,"instrumentAnthropicAiClient",()=>lp,"instrumentGoogleGenAIClient",()=>lS,"instrumentLangGraph",()=>lT,"instrumentOpenAiClient",()=>lN,"instrumentOutgoingRequests",()=>aT,"instrumentSupabaseClient",()=>lB,"isEnabled",()=>K.isEnabled,"isInitialized",()=>K.isInitialized,"lastEventId",()=>K.lastEventId,"launchDarklyIntegration",()=>fy,"lazyLoadIntegration",()=>oz,"linkedErrorsIntegration",()=>rI,"logger",()=>lJ,"makeBrowserOfflineTransport",()=>p3,"makeFetchTransport",()=>rV,"makeMultiplexedTransport",()=>oX,"metrics",()=>lZ,"moduleMetadataIntegration",()=>l5,"onLoad",()=>rZ,"openFeatureIntegration",()=>fb,"opera10StackLineParser",()=>rj,"opera11StackLineParser",()=>rF,"parameterize",()=>lY,"reactErrorHandler",()=>fx,"reactRouterV3BrowserTracingIntegration",()=>f6,"reactRouterV4BrowserTracingIntegration",()=>he,"reactRouterV5BrowserTracingIntegration",()=>ht,"reactRouterV6BrowserTracingIntegration",()=>hX,"reactRouterV7BrowserTracingIntegration",()=>h2,"registerSpanErrorInstrumentation",()=>nn,"registerWebWorker",()=>fN,"replayCanvasIntegration",()=>pK,"replayIntegration",()=>pv,"reportPageLoaded",()=>pQ,"reportingObserverIntegration",()=>uo,"rewriteFramesIntegration",()=>a5,"sendFeedback",()=>iR,"setActiveSpanInBrowser",()=>pZ,"setContext",()=>K.setContext,"setConversationId",()=>K.setConversationId,"setCurrentClient",()=>eb,"setExtra",()=>K.setExtra,"setExtras",()=>K.setExtras,"setHttpStatus",()=>r7.setHttpStatus,"setMeasurement",()=>ae.setMeasurement,"setTag",()=>K.setTag,"setTags",()=>K.setTags,"setUser",()=>K.setUser,"showReportDialog",()=>un,"spanToBaggageHeader",()=>eM.spanToBaggageHeader,"spanToJSON",()=>eL.spanToJSON,"spanToTraceHeader",()=>eL.spanToTraceHeader,"spotlightBrowserIntegration",()=>f_,"startBrowserTracingNavigationSpan",()=>ak,"startBrowserTracingPageLoadSpan",()=>aA,"startInactiveSpan",()=>r9.startInactiveSpan,"startNewTrace",()=>r9.startNewTrace,"startSession",()=>K.startSession,"startSpan",()=>r9.startSpan,"startSpanManual",()=>r9.startSpanManual,"statsigIntegration",()=>fI,"supabaseIntegration",()=>lj,"suppressTracing",()=>r9.suppressTracing,"tanstackRouterBrowserTracingIntegration",()=>f7,"thirdPartyErrorFilterIntegration",()=>l4,"uiProfiler",()=>ut,"unleashIntegration",()=>fE,"updateSpanName",()=>eL.updateSpanName,"useProfiler",()=>fQ,"webWorkerIntegration",()=>fA,"winjsStackLineParser",()=>rU,"withActiveSpan",()=>r9.withActiveSpan,"withErrorBoundary",()=>f3,"withIsolationScope",()=>X.withIsolationScope,"withProfiler",()=>fX,"withScope",()=>X.withScope,"withSentryReactRouterV6Routing",()=>h1,"withSentryReactRouterV7Routing",()=>h3,"withSentryRouting",()=>hn,"wrapCreateBrowserRouterV6",()=>hZ,"wrapCreateBrowserRouterV7",()=>h5,"wrapCreateMemoryRouterV6",()=>h0,"wrapCreateMemoryRouterV7",()=>h4,"wrapUseRoutesV6",()=>hQ,"wrapUseRoutesV7",()=>h6,"zodErrorsIntegration",()=>ue],38748),e.i(38748);var mo=e.i(331912);function ms(){return G.default.env.NEXT_PHASE===mo.PHASE_PRODUCTION_BUILD}function ml(e){let t=ms(),r=!!e&&function(e){if(e.$$typeof!==Symbol.for("react.server.reference"))return!1;let{type:t}=function(e){let t=parseInt(e.slice(0,2),16),r=t>>1&63,n=Array(6);for(let e=0;e<6;e++){let t=r>>5-e&1;n[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:n,hasRestArgs:1==(1&t)}}(e.$$id);return"use-cache"===t}(e);return r&&r2&&z.debug.log("Skipping span creation in Cache Components context"),t||r}function mu(){return new r6.SentryNonRecordingSpan({traceId:"00000000000000000000000000000000",spanId:"0000000000000000"})}function mc(e,t){return ml(t)?t(mu()):(0,r9.startSpan)(e,t)}function md(e,t){if(ml(t)){let e=mu();return t(e,()=>e.end())}return(0,r9.startSpanManual)(e,t)}function mp(e){return ml()?mu():(0,r9.startInactiveSpan)(e)}function mf(...e){if("function"==typeof e[1]){let[t,r]=e;return mh(t,{},r)}{let[t,r,n]=e;return mh(t,r,n)}}async function mh(e,t,r){return(0,X.withIsolationScope)(async n=>{let a,i,o=(0,X.getClient)()?.getOptions().sendDefaultPii,s={};try{let e=await t.headers;a=e?.get("sentry-trace")??void 0,i=e?.get("baggage"),e?.forEach((e,t)=>{s[t]=e})}catch{r2&&z.debug.warn("Sentry wasn't able to extract the tracing headers for a server action. Will not trace this request.")}return n.setTransactionName(`serverAction/${e}`),n.setSDKProcessingMetadata({normalizedRequest:{headers:s}}),((0,eL.getActiveSpan)()?(e,t)=>t():r9.continueTrace)({sentryTrace:a,baggage:i},async()=>{try{return await (0,r9.startSpan)({op:"function.server_action",name:`serverAction/${e}`,forceTransaction:!0,attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route",[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.server_action"}},async e=>{let n=await (0,lf.handleCallbackErrors)(r,t=>{r3(t)?e.setStatus({code:r7.SPAN_STATUS_ERROR,message:"not_found"}):r5(t)||(e.setStatus({code:r7.SPAN_STATUS_ERROR,message:"internal_error"}),(0,K.captureException)(t,{mechanism:{handled:!1,type:"auto.function.nextjs.server_action"}}))});return(void 0!==t.recordResponse?t.recordResponse:o)&&(0,X.getIsolationScope)().setExtra("server_action_result",n),t.formData&&t.formData.forEach((e,t)=>{(0,X.getIsolationScope)().setExtra(`server_action_form_data.${t}`,"string"==typeof e?e:"[non-string value]")}),n})}finally{mr(mt())}})})}function mm(e,t){return new Proxy(e,{apply:(e,r,n)=>{let a;if(!n?.[0])return e.apply(r,n);let[i]=n,o="nextUrl"in i?i.nextUrl.pathname:i.url,s="nextUrl"in i?i.headers.get("user-agent"):i.headers["user-agent"];if(!t||!s?.includes("vercel-cron"))return e.apply(r,n);let l=t.find(e=>e.path===o);if(!l?.path||!l.schedule)return e.apply(r,n);let u=l.path,c=(0,K.captureCheckIn)({monitorSlug:u,status:"in_progress"},{maxRuntime:720,schedule:{type:"crontab",value:l.schedule}}),d=(0,eZ.safeDateNow)()/1e3,p=()=>{(0,K.captureCheckIn)({checkInId:c,monitorSlug:u,status:"error",duration:(0,eZ.safeDateNow)()/1e3-d})};try{a=e.apply(r,n)}catch(e){throw p(),e}return"object"==typeof a&&null!==a&&"then"in a?Promise.resolve(a).then(()=>{(0,K.captureCheckIn)({checkInId:c,monitorSlug:u,status:"ok",duration:(0,eZ.safeDateNow)()/1e3-d})},()=>{p()}):(0,K.captureCheckIn)({checkInId:c,monitorSlug:u,status:"ok",duration:(0,eZ.safeDateNow)()/1e3-d}),a}})}function mg(e){return async function(...t){try{return await e.apply(this,t)}catch(t){throw(0,K.captureException)(t,{mechanism:{handled:!1,type:"auto.function.nextjs.wrapped",data:{function:e.name}}}),t}}}function m_(e,t,r,n){return async function(...r){let a=h9(t);(0,X.getCurrentScope)().setTransactionName(`${n.dataFetchingMethodName} (${n.dataFetcherRouteName})`),(0,X.getIsolationScope)().setSDKProcessingMetadata({normalizedRequest:a});let i=(0,eL.getActiveSpan)();i&&"/_error"!==n.requestedRouteName&&(0,eL.getRootSpan)(i).setAttribute("sentry.route_backfill",n.requestedRouteName);let{"sentry-trace":o,baggage:s}=ac();return{sentryTrace:o,baggage:s,data:await e.apply(this,r)}}}async function my(e,t){try{return await e(...t)}catch(e){throw(0,K.captureException)(e,{mechanism:{handled:!1,type:"auto.function.nextjs.data_fetcher"}}),e}}function mv(e){return new Proxy(e,{apply:async(e,t,r)=>{if(ms())return e.apply(t,r);let[n]=r,{req:a,res:i}=n.ctx,o=mg(e);if(!a||!i)return o.apply(t,r);{let e=m_(o,a,i,{dataFetcherRouteName:"/_app",requestedRouteName:n.ctx.pathname,dataFetchingMethodName:"getInitialProps"}),{data:s,sentryTrace:l,baggage:u}=await e.apply(t,r);return"object"==typeof s&&null!==s&&(s.pageProps||(s.pageProps={}),l&&(s.pageProps._sentryTraceData=l),u&&(s.pageProps._sentryBaggage=u)),s}}})}function mb(e){return new Proxy(e,{apply:async(e,t,r)=>{if(ms())return e.apply(t,r);let[n]=r,{req:a,res:i}=n,o=mg(e);if(!a||!i)return o.apply(t,r);{let e=m_(o,a,i,{dataFetcherRouteName:"/_document",requestedRouteName:n.pathname,dataFetchingMethodName:"getInitialProps"}),{data:s}=await e.apply(t,r);return s}}})}function mS(e){return new Proxy(e,{apply:async(e,t,r)=>{if(ms())return e.apply(t,r);let[n]=r,{req:a,res:i}=n,o=mg(e);if(!a||!i)return o.apply(t,r);{let e=m_(o,a,i,{dataFetcherRouteName:"/_error",requestedRouteName:n.pathname,dataFetchingMethodName:"getInitialProps"}),{data:s,baggage:l,sentryTrace:u}=await e.apply(t,r);return"object"==typeof s&&null!==s&&(u&&(s._sentryTraceData=u),l&&(s._sentryBaggage=l)),s}}})}function mE(e,t){return new Proxy(e,{apply:(e,r,n)=>{let a,i=(0,X.getIsolationScope)();try{a=t.requestAsyncStorage?.getStore()?.headers}catch{}let o=a?h8(a):void 0;return i.setSDKProcessingMetadata({normalizedRequest:{headers:o}}),(0,lf.handleCallbackErrors)(()=>e.apply(r,n),e=>{let r=(0,eL.getActiveSpan)(),{componentRoute:n,componentType:a,generationFunctionIdentifier:o}=t,s=!0;i.setTransactionName(`${a}.${o} (${n})`),r&&(r3(e)?(s=!1,r.setStatus({code:r7.SPAN_STATUS_ERROR,message:"not_found"})):r5(e)?(s=!1,r.setStatus({code:r7.SPAN_STATUS_OK})):r.setStatus({code:r7.SPAN_STATUS_ERROR,message:"internal_error"})),s&&(0,K.captureException)(e,{mechanism:{handled:!1,type:"auto.function.nextjs.generation_function",data:{function:o}}})},()=>{mr(mt())})}})}function mT(e){return new Proxy(e,{apply:async(e,t,r)=>{if(ms())return e.apply(t,r);let[n]=r,{req:a,res:i}=n,o=mg(e);if(!a||!i)return o.apply(t,r);{let e=m_(o,a,i,{dataFetcherRouteName:n.pathname,requestedRouteName:n.pathname,dataFetchingMethodName:"getInitialProps"}),{data:s,baggage:l,sentryTrace:u}=await e.apply(t,r)??{};return"object"==typeof s&&null!==s&&(u&&(s._sentryTraceData=u),l&&(s._sentryBaggage=l)),s}}})}function mw(e,t){return new Proxy(e,{apply:async(e,r,n)=>{if(ms())return e.apply(r,n);let[a]=n,{req:i,res:o}=a,s=m_(mg(e),i,o,{dataFetcherRouteName:t,requestedRouteName:t,dataFetchingMethodName:"getServerSideProps"}),{data:l,baggage:u,sentryTrace:c}=await s.apply(r,n);return"object"==typeof l&&null!==l&&"props"in l&&(c&&(l.props._sentryTraceData=c),u&&(l.props._sentryBaggage=u)),l}})}function mR(e,t){return new Proxy(e,{apply:async(e,t,r)=>ms()?e.apply(t,r):my(mg(e),r)})}var mI=e.i(216351);function mC(e){return new Proxy(e,{apply:async(e,t,r)=>{let n="_sentryRewritesTunnelPath"in globalThis?globalThis._sentryRewritesTunnelPath:void 0;if(n&&"string"==typeof n){let e=r[0];if(e instanceof Request&&new URL(e.url).pathname.startsWith(n))return new Response(null,{status:200,headers:{"x-middleware-next":"1"}})}return(0,X.withIsolationScope)(n=>{let a,i,o=r[0],s=(0,X.getCurrentScope)();if(o instanceof Request){let e;n.setSDKProcessingMetadata({normalizedRequest:(e=h8(o.headers),{method:o.method,url:o.url,query_string:me(o.url),headers:e})}),a=`middleware ${o.method}`,i="url"}else a="middleware",i="component";s.setTransactionName(a);let l=(0,eL.getActiveSpan)();if(l){a="middleware",i="component";let e=(0,eL.getRootSpan)(l);e&&(0,mI.setCapturedScopesOnSpan)(e,s,n)}return(0,r9.startSpan)({name:a,op:"http.server.middleware",attributes:{[eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:i,[eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.function.nextjs.wrap_middleware"}},()=>(0,lf.handleCallbackErrors)(()=>e.apply(t,r),e=>{(0,K.captureException)(e,{mechanism:{type:"auto.function.nextjs.wrap_middleware",handled:!1}})},()=>{mr(mt())}))})}})}function mA(e,t){e&&"object"==typeof e&&(0,ed.addNonEnumerableProperty)(e,"__sentry_event_id__",t)}function mk(e){return"function"==typeof e&&e?.prototype?.isReactComponent?class extends e{render(...e){return(0,X.withIsolationScope)(()=>{let t=(0,X.getCurrentScope)(),r="object"==typeof this.props&&null!==this.props&&"_sentryTraceData"in this.props&&"string"==typeof this.props._sentryTraceData?this.props._sentryTraceData:void 0;if(r){let e=(0,ni.extractTraceparentData)(r);t.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return super.render(...e)}catch(t){let e=(0,K.captureException)(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_class"}});throw mA(t,e),t}})}}:"function"==typeof e?new Proxy(e,{apply:(e,t,r)=>(0,X.withIsolationScope)(()=>{let n=(0,X.getCurrentScope)(),a=r?.[0]?._sentryTraceData;if(a){let e=(0,ni.extractTraceparentData)(a);n.setContext("trace",{span_id:e?.parentSpanId,trace_id:e?.traceId})}try{return e.apply(t,r)}catch(t){let e=(0,K.captureException)(t,{mechanism:{handled:!1,type:"auto.function.nextjs.page_function"}});throw mA(t,e),t}})}):e}function mN(e,t){let{method:r,parameterizedRoute:n,headers:a}=t;return new Proxy(e,{apply:async(e,t,a)=>{let i=(0,eL.getActiveSpan)(),o=i?(0,eL.getRootSpan)(i):void 0;return(0,X.withIsolationScope)((0,X.getIsolationScope)(),()=>(0,X.withScope)(async s=>{s.setTransactionName(`${r} ${n}`);let l=await (0,lf.handleCallbackErrors)(()=>e.apply(t,a),e=>{r5(e)||(r3(e)?(i&&(0,r7.setHttpStatus)(i,404),o&&(0,r7.setHttpStatus)(o,404)):(0,K.captureException)(e,{mechanism:{handled:!1,type:"auto.function.nextjs.route_handler"}}))},()=>{mr(mt())});try{l.status&&(i&&(0,r7.setHttpStatus)(i,l.status),o&&(0,r7.setHttpStatus)(o,l.status))}catch{}return l}))}})}function mO(e,t){return new Proxy(e,{apply:(e,r,n)=>{let a=(0,X.getIsolationScope)(),i=t.headers?h8(t.headers):void 0;return a.setSDKProcessingMetadata({normalizedRequest:{headers:i}}),(0,lf.handleCallbackErrors)(()=>e.apply(r,n),e=>{let r=(0,eL.getActiveSpan)(),{componentRoute:n,componentType:i}=t,o=!0;a.setTransactionName(`${i} Server Component (${n})`),r&&(r3(e)?(o=!1,r.setStatus({code:r7.SPAN_STATUS_ERROR,message:"not_found"})):r5(e)?(o=!1,r.setStatus({code:r7.SPAN_STATUS_OK})):r.setStatus({code:r7.SPAN_STATUS_ERROR,message:"internal_error"})),o&&(0,K.captureException)(e,{mechanism:{handled:!1,type:"auto.function.nextjs.server_component"}})},()=>{mr(mt())})}})}e.s(["BrowserClient",()=>tx,"ErrorBoundary",()=>f2,"MULTIPLEXED_TRANSPORT_EXTRA_KEY",()=>oV,"OpenFeatureIntegrationHook",()=>fS,"Profiler",()=>fK,"SDK_VERSION",()=>J.SDK_VERSION,"SEMANTIC_ATTRIBUTE_SENTRY_OP",()=>eh.SEMANTIC_ATTRIBUTE_SENTRY_OP,"SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN",()=>eh.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,"SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE",()=>eh.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,"SEMANTIC_ATTRIBUTE_SENTRY_SOURCE",()=>eh.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,"Scope",()=>oQ.Scope,"WINDOW",()=>tA,"addBreadcrumb",()=>tK,"addEventProcessor",()=>K.addEventProcessor,"addIntegration",()=>er,"breadcrumbsIntegration",()=>rn,"browserApiErrorsIntegration",()=>ri,"browserProfilingIntegration",()=>fg,"browserSessionIntegration",()=>ru,"browserTracingIntegration",()=>a0,"buildLaunchDarklyFlagUsedHandler",()=>fv,"captureConsoleIntegration",()=>oZ,"captureEvent",()=>K.captureEvent,"captureException",()=>K.captureException,"captureFeedback",()=>it,"captureMessage",()=>K.captureMessage,"captureReactException",()=>fO,"captureRequestError",()=>ma,"captureRouterTransitionStart",()=>aX,"captureSession",()=>K.captureSession,"captureUnderscoreErrorException",()=>mi,"chromeStackLineParser",()=>rx,"close",()=>K.close,"consoleLoggingIntegration",()=>o5,"contextLinesIntegration",()=>ug,"continueTrace",()=>r9.continueTrace,"createConsolaReporter",()=>o6,"createLangChainCallbackHandler",()=>s7,"createReduxEnhancer",()=>f4,"createTransport",()=>e3,"createUserFeedbackEnvelope",()=>ur,"cultureContextIntegration",()=>rc,"dedupeIntegration",()=>eg,"defaultRequestInstrumentationOptions",()=>aE,"defaultStackLineParsers",()=>rH,"defaultStackParser",()=>rW,"diagnoseSdkConnectivity",()=>fC,"elementTimingIntegration",()=>pX,"endSession",()=>K.endSession,"eventFiltersIntegration",()=>es,"eventFromException",()=>tT,"eventFromMessage",()=>tw,"exceptionFromError",()=>ty,"extraErrorDataIntegration",()=>s9,"featureFlagsIntegration",()=>la,"feedbackAsyncIntegration",()=>oY,"feedbackIntegration",()=>oJ,"feedbackSyncIntegration",()=>oJ,"flush",()=>K.flush,"forceLoad",()=>rQ,"functionToStringIntegration",()=>ef,"geckoStackLineParser",()=>rL,"getActiveSpan",()=>eL.getActiveSpan,"getClient",()=>X.getClient,"getCurrentScope",()=>X.getCurrentScope,"getDefaultIntegrations",()=>rK,"getFeedback",()=>iL,"getGlobalScope",()=>X.getGlobalScope,"getIsolationScope",()=>X.getIsolationScope,"getReplay",()=>pE,"getRootSpan",()=>eL.getRootSpan,"getSpanDescendants",()=>eL.getSpanDescendants,"getSpanStatusFromHttpCode",()=>r7.getSpanStatusFromHttpCode,"getTraceData",()=>ac,"globalHandlersIntegration",()=>r_,"graphqlClientIntegration",()=>uT,"growthbookIntegration",()=>fR,"httpClientIntegration",()=>uu,"httpContextIntegration",()=>rE,"inboundFiltersIntegration",()=>el,"init",()=>a9,"instrumentAnthropicAiClient",()=>lp,"instrumentGoogleGenAIClient",()=>lS,"instrumentLangGraph",()=>lT,"instrumentOpenAiClient",()=>lN,"instrumentOutgoingRequests",()=>aT,"instrumentSupabaseClient",()=>lB,"isEnabled",()=>K.isEnabled,"isInitialized",()=>K.isInitialized,"lastEventId",()=>K.lastEventId,"launchDarklyIntegration",()=>fy,"lazyLoadIntegration",()=>oz,"linkedErrorsIntegration",()=>rI,"logger",()=>lJ,"makeBrowserOfflineTransport",()=>p3,"makeFetchTransport",()=>rV,"makeMultiplexedTransport",()=>oX,"metrics",()=>lZ,"moduleMetadataIntegration",()=>l5,"onLoad",()=>rZ,"openFeatureIntegration",()=>fb,"opera10StackLineParser",()=>rj,"opera11StackLineParser",()=>rF,"parameterize",()=>lY,"reactErrorHandler",()=>fx,"reactRouterV3BrowserTracingIntegration",()=>f6,"reactRouterV4BrowserTracingIntegration",()=>he,"reactRouterV5BrowserTracingIntegration",()=>ht,"reactRouterV6BrowserTracingIntegration",()=>hX,"reactRouterV7BrowserTracingIntegration",()=>h2,"registerSpanErrorInstrumentation",()=>nn,"registerWebWorker",()=>fN,"replayCanvasIntegration",()=>pK,"replayIntegration",()=>pv,"reportPageLoaded",()=>pQ,"reportingObserverIntegration",()=>uo,"rewriteFramesIntegration",()=>a5,"sendFeedback",()=>iR,"setActiveSpanInBrowser",()=>pZ,"setContext",()=>K.setContext,"setConversationId",()=>K.setConversationId,"setCurrentClient",()=>eb,"setExtra",()=>K.setExtra,"setExtras",()=>K.setExtras,"setHttpStatus",()=>r7.setHttpStatus,"setMeasurement",()=>ae.setMeasurement,"setTag",()=>K.setTag,"setTags",()=>K.setTags,"setUser",()=>K.setUser,"showReportDialog",()=>un,"spanToBaggageHeader",()=>eM.spanToBaggageHeader,"spanToJSON",()=>eL.spanToJSON,"spanToTraceHeader",()=>eL.spanToTraceHeader,"spotlightBrowserIntegration",()=>f_,"startBrowserTracingNavigationSpan",()=>ak,"startBrowserTracingPageLoadSpan",()=>aA,"startInactiveSpan",()=>mp,"startNewTrace",()=>r9.startNewTrace,"startSession",()=>K.startSession,"startSpan",()=>mc,"startSpanManual",()=>md,"statsigIntegration",()=>fI,"supabaseIntegration",()=>lj,"suppressTracing",()=>r9.suppressTracing,"tanstackRouterBrowserTracingIntegration",()=>f7,"thirdPartyErrorFilterIntegration",()=>l4,"uiProfiler",()=>ut,"unleashIntegration",()=>fE,"updateSpanName",()=>eL.updateSpanName,"useProfiler",()=>fQ,"webWorkerIntegration",()=>fA,"winjsStackLineParser",()=>rU,"withActiveSpan",()=>r9.withActiveSpan,"withErrorBoundary",()=>f3,"withIsolationScope",()=>X.withIsolationScope,"withProfiler",()=>fX,"withScope",()=>X.withScope,"withSentryConfig",()=>ie,"withSentryReactRouterV6Routing",()=>h1,"withSentryReactRouterV7Routing",()=>h3,"withSentryRouting",()=>hn,"withServerActionInstrumentation",()=>mf,"wrapApiHandlerWithSentryVercelCrons",()=>mm,"wrapAppGetInitialPropsWithSentry",()=>mv,"wrapCreateBrowserRouterV6",()=>hZ,"wrapCreateBrowserRouterV7",()=>h5,"wrapCreateMemoryRouterV6",()=>h0,"wrapCreateMemoryRouterV7",()=>h4,"wrapDocumentGetInitialPropsWithSentry",()=>mb,"wrapErrorGetInitialPropsWithSentry",()=>mS,"wrapGenerationFunctionWithSentry",()=>mE,"wrapGetInitialPropsWithSentry",()=>mT,"wrapGetServerSidePropsWithSentry",()=>mw,"wrapGetStaticPropsWithSentry",()=>mR,"wrapMiddlewareWithSentry",()=>mC,"wrapPageComponentWithSentry",()=>mk,"wrapRouteHandlerWithSentry",()=>mN,"wrapServerComponentWithSentry",()=>mO,"wrapUseRoutesV6",()=>hQ,"wrapUseRoutesV7",()=>h6,"zodErrorsIntegration",()=>ue],502456)}]); -//# debugId=e33c6a8a-6f21-88ba-e9a0-f69771bc63d5 \ No newline at end of file +//# debugId=70641956-3a12-cbe6-0e2e-ee9184986bda \ No newline at end of file diff --git a/.next/static/chunks/a9e41f7e725e0855.js b/.next/static/chunks/15da4f80e6e79aca.js similarity index 65% rename from .next/static/chunks/a9e41f7e725e0855.js rename to .next/static/chunks/15da4f80e6e79aca.js index 44ce30576..f369543b3 100644 --- a/.next/static/chunks/a9e41f7e725e0855.js +++ b/.next/static/chunks/15da4f80e6e79aca.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="e9a572c1-5142-66ff-9293-28a3e3b30358")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return l},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function l(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return l}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class l{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(u),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(u),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(u),o}}function u(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let l=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],l="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=l)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(l):(0,n.normalizeLocalePath)(l,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return g},APP_DIR_ALIAS:function(){return F},CACHE_ONE_YEAR:function(){return y},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return I},INSTRUMENTATION_HOOK_FILENAME:function(){return L},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return u},MIDDLEWARE_FILENAME:function(){return C},MIDDLEWARE_LOCATION_REGEXP:function(){return N},NEXT_BODY_SUFFIX:function(){return E},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return O},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return R},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return b},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return A},NEXT_CACHE_TAGS_HEADER:function(){return S},NEXT_CACHE_TAG_MAX_ITEMS:function(){return v},NEXT_CACHE_TAG_MAX_LENGTH:function(){return T},NEXT_DATA_SUFFIX:function(){return h},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return l},NEXT_META_SUFFIX:function(){return x},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return P},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return D},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return m},PROXY_FILENAME:function(){return w},PROXY_LOCATION_REGEXP:function(){return j},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return Y},ROOT_DIR_ALIAS:function(){return k},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return V},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return H},RSC_CACHE_WRAPPER_ALIAS:function(){return X},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return B},RSC_MOD_REF_PROXY_ALIAS:function(){return U},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return _},RSC_SUFFIX:function(){return p},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return z},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return q},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return el},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",l="nxtI",u="x-matched-path",d="x-prerender-revalidate",m="x-prerender-revalidate-if-generated",f=".segments",_=".segment.rsc",p=".rsc",g=".action",h=".json",x=".meta",E=".body",S="x-next-cache-tags",R="x-next-revalidated-tags",b="x-next-revalidate-tag-token",P="next-resume",v=128,T=256,A=1024,O="_N_T_",y=31536e3,I=0xfffffffe,C="middleware",N=`(?:src/)?${C}`,w="proxy",j=`(?:src/)?${w}`,L="instrumentation",D="private-next-pages",M="private-dot-next",k="private-next-root-dir",F="private-next-app-dir",U="private-next-rsc-mod-ref-proxy",H="private-next-rsc-action-validate",G="private-next-rsc-server-reference",X="private-next-rsc-cache-wrapper",B="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",V="private-next-rsc-action-client-wrapper",Y="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",z="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",q="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},el={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var r=e.i(452797);function n({className:e,children:n,...a}){return(0,r.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...a,children:n})}function a({className:e,children:n,...a}){return(0,r.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...a,children:n})}function i({level:e=2,size:n,variant:a="dark",align:i="left",subtitle:s,children:o,className:c,subtitleClassName:l,badgeStyle:u="industrial"}){let d=`h${e}`,m=n||String(e);return(0,r.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],c),children:[s&&"industrial"===u&&(0,r.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===a?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",l),children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===a?"bg-white":"bg-primary")}),(0,r.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===a?"bg-white":"bg-primary")})]}),(0,r.jsx)("span",{children:s})]}),s&&"simple"===u&&(0,r.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===a?"text-white/80":"text-accent",l),children:s}),(0,r.jsx)(d,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[a]),children:o})]})}function s({className:e,children:n,tag:a="div",...i}){return(0,r.jsx)(a,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:n})}function o({className:e,...n}){return(0,r.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...n})}function c({className:e,...n}){return(0,r.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...n})}function l({className:e,...n}){return(0,r.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...n})}e.s(["Section",()=>n],370476),e.s(["Container",()=>a],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>s],105050),e.s(["Input",()=>o],801206),e.s(["Textarea",()=>c],587778),e.s(["Label",()=>l],9797),e.s([],445774)},759095,e=>{"use strict";var t=e.i(452797),r=e.i(907358);e.i(445774);var n=e.i(111023);function a({children:e,className:a,threshold:i=.1,delay:s=0}){let[o,c]=(0,r.useState)(!1),l=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(c(!0),e.unobserve(t.target))},{threshold:i}),t=l.current;return t&&e.observe(t),()=>{t&&e.unobserve(t)}},[i]),(0,t.jsx)("div",{ref:l,className:(0,n.cn)("reveal-on-scroll",o&&"is-visible",a),style:{transitionDelay:`${s}ms`},children:e})}e.s(["default",()=>a])},73191,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={callServer:function(){return i.callServer},createServerReference:function(){return o.createServerReference},findSourceMapURL:function(){return s.findSourceMapURL}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(273136),s=e.r(694658),o=e.r(429220)},833128,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(190422);e.i(445774);var a=e.i(676525),i=e.i(982016),s=e.i(105050),o=e.i(801206),c=e.i(587778),l=e.i(9797),u=e.i(73191);let d=(0,u.createServerReference)("406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5",u.callServer,void 0,u.findSourceMapURL,"sendContactFormAction");var m=e.i(630655),f=e.i(216033);function _(){let e=(0,n.useTranslations)("Contact"),{trackEvent:u}=(0,m.useAnalytics)(),[_,p]=(0,r.useState)("idle"),[g,h]=(0,r.useState)(!1),x=e=>{g||(h(!0),u(f.AnalyticsEvents.FORM_START,{form_id:"contact_form",form_name:"Contact"})),u(f.AnalyticsEvents.FORM_FIELD_FOCUS,{form_id:"contact_form",field_id:e})};async function E(e){e.preventDefault(),p("submitting");let t=new FormData(e.currentTarget),r=t.get("email");try{let n=await d(t);n?.success?(u("contact_form_submission",{form_type:"general",email:r}),p("success"),e.target.reset()):(console.error("Contact form submission failed:",{email:r,error:n.error}),u(f.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:n.error||"submission_failed"}),p("error"))}catch(e){console.error("Contact form submission error:",{email:r,error:e}),u(f.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:e.message||"unexpected_error"}),p("error")}}return"success"===_?(0,t.jsxs)(s.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl text-center",role:"alert","aria-live":"polite",children:[(0,t.jsx)("div",{className:"w-20 h-20 bg-accent rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-accent/20",children:(0,t.jsx)("svg",{className:"w-10 h-10 text-primary-dark",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M5 13l4 4L19 7"})})}),(0,t.jsx)(i.Heading,{level:3,className:"mb-4",children:e("form.successTitle")||"Message Sent!"}),(0,t.jsx)("p",{className:"text-text-secondary text-lg mb-8",children:e("form.successDesc")||"Thank you for your message. We will get back to you as soon as possible."}),(0,t.jsx)(a.Button,{onClick:()=>p("idle"),variant:"saturated",children:e("form.sendAnother")||"Send another message"})]}):"error"===_?(0,t.jsxs)(s.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-destructive/20 shadow-2xl text-center bg-destructive/5 animate-slide-up",role:"alert","aria-live":"assertive",children:[(0,t.jsx)("div",{className:"w-20 h-20 bg-destructive rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-destructive/20",children:(0,t.jsxs)("svg",{className:"w-10 h-10 text-destructive-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,t.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"}),(0,t.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"})]})}),(0,t.jsx)(i.Heading,{level:3,className:"mb-4 text-destructive font-black",children:e("form.errorTitle")||"Submission Failed!"}),(0,t.jsx)("p",{className:"text-destructive/80 text-lg mb-8 leading-relaxed font-medium",children:e("form.error")||"Something went wrong. Please check your input and try again."}),(0,t.jsx)(a.Button,{onClick:()=>p("idle"),variant:"destructive",size:"lg",className:"w-full",children:e("form.tryAgain")||"Try Again"})]}):(0,t.jsxs)(s.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl animate-slide-up",children:[(0,t.jsx)(i.Heading,{level:3,subtitle:e("form.subtitle"),className:"mb-6 md:mb-10",children:e("form.title")}),(0,t.jsxs)("form",{id:"contact-form",onSubmit:E,className:"grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-8",children:[(0,t.jsx)("input",{type:"text",name:"company_website",tabIndex:-1,autoComplete:"off",style:{display:"none"},"aria-hidden":"true"}),(0,t.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"contact-name",children:e("form.name")}),(0,t.jsx)(o.Input,{type:"text",id:"contact-name",name:"name",autoComplete:"name",enterKeyHint:"next",onFocus:()=>x("contact-name"),required:!0})]}),(0,t.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"contact-email",children:e("form.email")}),(0,t.jsx)(o.Input,{type:"email",id:"contact-email",name:"email",autoComplete:"email",inputMode:"email",enterKeyHint:"next",placeholder:e("form.emailPlaceholder"),onFocus:()=>x("contact-email"),required:!0})]}),(0,t.jsxs)("div",{className:"md:col-span-2 space-y-1 md:space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"contact-message",children:e("form.message")}),(0,t.jsx)(c.Textarea,{id:"contact-message",name:"message",rows:4,enterKeyHint:"send",placeholder:e("form.messagePlaceholder"),onFocus:()=>x("contact-message"),required:!0})]}),(0,t.jsx)("div",{className:"md:col-span-2 pt-2 md:pt-4",children:(0,t.jsx)(a.Button,{type:"submit",variant:"saturated",size:"lg",disabled:"submitting"===_,className:"w-full shadow-xl shadow-saturated/20 md:h-16 md:px-10 md:text-xl active:scale-[0.98] transition-transform",children:"submitting"===_?(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsxs)("svg",{className:"animate-spin h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,t.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,t.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),e("form.submitting")||"Sending..."]}):e("form.submit")})})]})]})}e.s(["default",()=>_],833128)},936744,e=>{"use strict";var t=e.i(452797);let r=(0,e.i(902498).default)(()=>e.A(246796),{loadableGenerated:{modules:[408235]},ssr:!1,loading:()=>(0,t.jsx)("div",{className:"h-full w-full bg-neutral-medium flex items-center justify-center",children:(0,t.jsx)("div",{className:"animate-pulse text-primary font-medium",children:"Loading Map..."})})});function n({address:e,lat:n,lng:a}){return(0,t.jsx)(r,{locations:[{name:"E-TIB Gruppe",address:e,lat:n,lng:a}]})}e.s(["default",()=>n])},499139,e=>{"use strict";var t=e.i(452797),r=e.i(907358);function n({email:e,className:n="",children:a}){let[i,s]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{s(!0)},[]),i)?(0,t.jsx)("a",{href:`mailto:${e}`,className:n,children:a||e}):(0,t.jsx)("span",{className:n,"aria-hidden":"true",children:a||e.replace("@"," [at] ").replace(/\./g," [dot] ")})}e.s(["default",()=>n])},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))},246796,e=>{e.v(t=>Promise.all(["static/chunks/c3e8a4ea96f068f8.js","static/chunks/e637d58b27e09d36.css"].map(t=>e.l(t))).then(()=>t(408235)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="ba7f5aec-8ee3-2e88-0669-72e6fbfa8bf5")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return l},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function l(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return l}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class l{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(u),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(u),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(u),o}}function u(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let l=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],l="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=l)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(l):(0,n.normalizeLocalePath)(l,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return g},APP_DIR_ALIAS:function(){return F},CACHE_ONE_YEAR:function(){return y},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return I},INSTRUMENTATION_HOOK_FILENAME:function(){return L},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return u},MIDDLEWARE_FILENAME:function(){return C},MIDDLEWARE_LOCATION_REGEXP:function(){return N},NEXT_BODY_SUFFIX:function(){return E},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return O},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return R},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return b},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return A},NEXT_CACHE_TAGS_HEADER:function(){return S},NEXT_CACHE_TAG_MAX_ITEMS:function(){return v},NEXT_CACHE_TAG_MAX_LENGTH:function(){return T},NEXT_DATA_SUFFIX:function(){return h},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return l},NEXT_META_SUFFIX:function(){return x},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return P},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return D},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return m},PROXY_FILENAME:function(){return w},PROXY_LOCATION_REGEXP:function(){return j},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return Y},ROOT_DIR_ALIAS:function(){return k},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return V},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return H},RSC_CACHE_WRAPPER_ALIAS:function(){return X},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return B},RSC_MOD_REF_PROXY_ALIAS:function(){return U},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return _},RSC_SUFFIX:function(){return p},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return z},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return q},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return el},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",l="nxtI",u="x-matched-path",d="x-prerender-revalidate",m="x-prerender-revalidate-if-generated",f=".segments",_=".segment.rsc",p=".rsc",g=".action",h=".json",x=".meta",E=".body",S="x-next-cache-tags",R="x-next-revalidated-tags",b="x-next-revalidate-tag-token",P="next-resume",v=128,T=256,A=1024,O="_N_T_",y=31536e3,I=0xfffffffe,C="middleware",N=`(?:src/)?${C}`,w="proxy",j=`(?:src/)?${w}`,L="instrumentation",D="private-next-pages",M="private-dot-next",k="private-next-root-dir",F="private-next-app-dir",U="private-next-rsc-mod-ref-proxy",H="private-next-rsc-action-validate",G="private-next-rsc-server-reference",X="private-next-rsc-cache-wrapper",B="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",V="private-next-rsc-action-client-wrapper",Y="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",z="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",q="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},el={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var r=e.i(452797);function n({className:e,children:n,...a}){return(0,r.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...a,children:n})}function a({className:e,children:n,...a}){return(0,r.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...a,children:n})}function i({level:e=2,size:n,variant:a="dark",align:i="left",subtitle:s,children:o,className:c,subtitleClassName:l,badgeStyle:u="industrial"}){let d=`h${e}`,m=n||String(e);return(0,r.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],c),children:[s&&"industrial"===u&&(0,r.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===a?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",l),children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===a?"bg-white":"bg-primary")}),(0,r.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===a?"bg-white":"bg-primary")})]}),(0,r.jsx)("span",{children:s})]}),s&&"simple"===u&&(0,r.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===a?"text-white/80":"text-accent",l),children:s}),(0,r.jsx)(d,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[a]),children:o})]})}function s({className:e,children:n,tag:a="div",...i}){return(0,r.jsx)(a,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:n})}function o({className:e,...n}){return(0,r.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...n})}function c({className:e,...n}){return(0,r.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...n})}function l({className:e,...n}){return(0,r.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...n})}e.s(["Section",()=>n],370476),e.s(["Container",()=>a],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>s],105050),e.s(["Input",()=>o],801206),e.s(["Textarea",()=>c],587778),e.s(["Label",()=>l],9797),e.s([],445774)},759095,e=>{"use strict";var t=e.i(452797),r=e.i(907358);e.i(445774);var n=e.i(111023);function a({children:e,className:a,threshold:i=.1,delay:s=0}){let[o,c]=(0,r.useState)(!1),l=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(c(!0),e.unobserve(t.target))},{threshold:i}),t=l.current;return t&&e.observe(t),()=>{t&&e.unobserve(t)}},[i]),(0,t.jsx)("div",{ref:l,className:(0,n.cn)("reveal-on-scroll",o&&"is-visible",a),style:{transitionDelay:`${s}ms`},children:e})}e.s(["default",()=>a])},73191,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={callServer:function(){return i.callServer},createServerReference:function(){return o.createServerReference},findSourceMapURL:function(){return s.findSourceMapURL}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(273136),s=e.r(694658),o=e.r(429220)},833128,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(190422);e.i(445774);var a=e.i(676525),i=e.i(982016),s=e.i(105050),o=e.i(801206),c=e.i(587778),l=e.i(9797),u=e.i(73191);let d=(0,u.createServerReference)("406fa8a8e7f827b5ac517f1985fa7a67a217b1e6b5",u.callServer,void 0,u.findSourceMapURL,"sendContactFormAction");var m=e.i(630655),f=e.i(216033);function _(){let e=(0,n.useTranslations)("Contact"),{trackEvent:u}=(0,m.useAnalytics)(),[_,p]=(0,r.useState)("idle"),[g,h]=(0,r.useState)(!1),x=e=>{g||(h(!0),u(f.AnalyticsEvents.FORM_START,{form_id:"contact_form",form_name:"Contact"})),u(f.AnalyticsEvents.FORM_FIELD_FOCUS,{form_id:"contact_form",field_id:e})};async function E(e){e.preventDefault(),p("submitting");let t=new FormData(e.currentTarget),r=t.get("email");try{let n=await d(t);n?.success?(u("contact_form_submission",{form_type:"general",email:r}),p("success"),e.target.reset()):(console.error("Contact form submission failed:",{email:r,error:n.error}),u(f.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:n.error||"submission_failed"}),p("error"))}catch(e){console.error("Contact form submission error:",{email:r,error:e}),u(f.AnalyticsEvents.FORM_ERROR,{form_id:"contact_form",error:e.message||"unexpected_error"}),p("error")}}return"success"===_?(0,t.jsxs)(s.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl text-center",role:"alert","aria-live":"polite",children:[(0,t.jsx)("div",{className:"w-20 h-20 bg-accent rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-accent/20",children:(0,t.jsx)("svg",{className:"w-10 h-10 text-primary-dark",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M5 13l4 4L19 7"})})}),(0,t.jsx)(i.Heading,{level:3,className:"mb-4",children:e("form.successTitle")||"Message Sent!"}),(0,t.jsx)("p",{className:"text-text-secondary text-lg mb-8",children:e("form.successDesc")||"Thank you for your message. We will get back to you as soon as possible."}),(0,t.jsx)(a.Button,{onClick:()=>p("idle"),variant:"saturated",children:e("form.sendAnother")||"Send another message"})]}):"error"===_?(0,t.jsxs)(s.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-destructive/20 shadow-2xl text-center bg-destructive/5 animate-slide-up",role:"alert","aria-live":"assertive",children:[(0,t.jsx)("div",{className:"w-20 h-20 bg-destructive rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-destructive/20",children:(0,t.jsxs)("svg",{className:"w-10 h-10 text-destructive-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"2",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,t.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"}),(0,t.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15",strokeLinecap:"round",strokeLinejoin:"round"})]})}),(0,t.jsx)(i.Heading,{level:3,className:"mb-4 text-destructive font-black",children:e("form.errorTitle")||"Submission Failed!"}),(0,t.jsx)("p",{className:"text-destructive/80 text-lg mb-8 leading-relaxed font-medium",children:e("form.error")||"Something went wrong. Please check your input and try again."}),(0,t.jsx)(a.Button,{onClick:()=>p("idle"),variant:"destructive",size:"lg",className:"w-full",children:e("form.tryAgain")||"Try Again"})]}):(0,t.jsxs)(s.Card,{className:"p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl animate-slide-up",children:[(0,t.jsx)(i.Heading,{level:3,subtitle:e("form.subtitle"),className:"mb-6 md:mb-10",children:e("form.title")}),(0,t.jsxs)("form",{id:"contact-form",onSubmit:E,className:"grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-8",children:[(0,t.jsx)("input",{type:"text",name:"company_website",tabIndex:-1,autoComplete:"off",style:{display:"none"},"aria-hidden":"true"}),(0,t.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"contact-name",children:e("form.name")}),(0,t.jsx)(o.Input,{type:"text",id:"contact-name",name:"name",autoComplete:"name",enterKeyHint:"next",onFocus:()=>x("contact-name"),required:!0})]}),(0,t.jsxs)("div",{className:"space-y-1 md:space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"contact-email",children:e("form.email")}),(0,t.jsx)(o.Input,{type:"email",id:"contact-email",name:"email",autoComplete:"email",inputMode:"email",enterKeyHint:"next",placeholder:e("form.emailPlaceholder"),onFocus:()=>x("contact-email"),required:!0})]}),(0,t.jsxs)("div",{className:"md:col-span-2 space-y-1 md:space-y-2",children:[(0,t.jsx)(l.Label,{htmlFor:"contact-message",children:e("form.message")}),(0,t.jsx)(c.Textarea,{id:"contact-message",name:"message",rows:4,enterKeyHint:"send",placeholder:e("form.messagePlaceholder"),onFocus:()=>x("contact-message"),required:!0})]}),(0,t.jsx)("div",{className:"md:col-span-2 pt-2 md:pt-4",children:(0,t.jsx)(a.Button,{type:"submit",variant:"saturated",size:"lg",disabled:"submitting"===_,className:"w-full shadow-xl shadow-saturated/20 md:h-16 md:px-10 md:text-xl active:scale-[0.98] transition-transform",children:"submitting"===_?(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsxs)("svg",{className:"animate-spin h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,t.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,t.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),e("form.submitting")||"Sending..."]}):e("form.submit")})})]})]})}e.s(["default",()=>_],833128)},936744,e=>{"use strict";var t=e.i(452797);let r=(0,e.i(902498).default)(()=>e.A(246796),{loadableGenerated:{modules:[408235]},ssr:!1,loading:()=>(0,t.jsx)("div",{className:"h-full w-full bg-neutral-medium flex items-center justify-center",children:(0,t.jsx)("div",{className:"animate-pulse text-primary font-medium",children:"Loading Map..."})})});function n({address:e,lat:n,lng:a}){return(0,t.jsx)(r,{locations:[{name:"E-TIB Gruppe",address:e,lat:n,lng:a}]})}e.s(["default",()=>n])},499139,e=>{"use strict";var t=e.i(452797),r=e.i(907358);function n({email:e,className:n="",children:a}){let[i,s]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{s(!0)},[]),i)?(0,t.jsx)("a",{href:`mailto:${e}`,className:n,children:a||e}):(0,t.jsx)("span",{className:n,"aria-hidden":"true",children:a||e.replace("@"," [at] ").replace(/\./g," [dot] ")})}e.s(["default",()=>n])},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))},246796,e=>{e.v(t=>Promise.all(["static/chunks/c3e8a4ea96f068f8.js","static/chunks/e637d58b27e09d36.css"].map(t=>e.l(t))).then(()=>t(408235)))}]); -//# debugId=e9a572c1-5142-66ff-9293-28a3e3b30358 \ No newline at end of file +//# debugId=ba7f5aec-8ee3-2e88-0669-72e6fbfa8bf5 \ No newline at end of file diff --git a/.next/static/chunks/9dd118ede697d679.js b/.next/static/chunks/218ae81565b48aff.js similarity index 78% rename from .next/static/chunks/9dd118ede697d679.js rename to .next/static/chunks/218ae81565b48aff.js index 547d4795c..fb70b75f0 100644 --- a/.next/static/chunks/9dd118ede697d679.js +++ b/.next/static/chunks/218ae81565b48aff.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="36c7caa6-c4fb-f2f0-0141-452aa9ef55af")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(l),o}}function l(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return f},APP_DIR_ALIAS:function(){return k},CACHE_ONE_YEAR:function(){return v},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return C},INSTRUMENTATION_HOOK_FILENAME:function(){return D},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return l},MIDDLEWARE_FILENAME:function(){return N},MIDDLEWARE_LOCATION_REGEXP:function(){return y},NEXT_BODY_SUFFIX:function(){return S},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return I},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return x},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return b},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return O},NEXT_CACHE_TAGS_HEADER:function(){return R},NEXT_CACHE_TAG_MAX_ITEMS:function(){return T},NEXT_CACHE_TAG_MAX_LENGTH:function(){return A},NEXT_DATA_SUFFIX:function(){return h},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return E},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return P},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return j},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return _},PROXY_FILENAME:function(){return L},PROXY_LOCATION_REGEXP:function(){return w},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return U},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return X},RSC_ACTION_VALIDATE_ALIAS:function(){return G},RSC_CACHE_WRAPPER_ALIAS:function(){return H},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return B},RSC_MOD_REF_PROXY_ALIAS:function(){return F},RSC_SEGMENTS_DIR_SUFFIX:function(){return p},RSC_SEGMENT_SUFFIX:function(){return g},RSC_SUFFIX:function(){return m},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",u="nxtI",l="x-matched-path",d="x-prerender-revalidate",_="x-prerender-revalidate-if-generated",p=".segments",g=".segment.rsc",m=".rsc",f=".action",h=".json",E=".meta",S=".body",R="x-next-cache-tags",x="x-next-revalidated-tags",b="x-next-revalidate-tag-token",P="next-resume",T=128,A=256,O=1024,I="_N_T_",v=31536e3,C=0xfffffffe,N="middleware",y=`(?:src/)?${N}`,L="proxy",w=`(?:src/)?${L}`,D="instrumentation",j="private-next-pages",M="private-dot-next",U="private-next-root-dir",k="private-next-app-dir",F="private-next-rsc-mod-ref-proxy",G="private-next-rsc-action-validate",X="private-next-rsc-server-reference",H="private-next-rsc-cache-wrapper",B="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var r=e.i(452797);function n({className:e,children:n,...a}){return(0,r.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...a,children:n})}function a({className:e,children:n,...a}){return(0,r.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...a,children:n})}function i({level:e=2,size:n,variant:a="dark",align:i="left",subtitle:s,children:o,className:c,subtitleClassName:u,badgeStyle:l="industrial"}){let d=`h${e}`,_=n||String(e);return(0,r.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],c),children:[s&&"industrial"===l&&(0,r.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===a?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",u),children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===a?"bg-white":"bg-primary")}),(0,r.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===a?"bg-white":"bg-primary")})]}),(0,r.jsx)("span",{children:s})]}),s&&"simple"===l&&(0,r.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===a?"text-white/80":"text-accent",u),children:s}),(0,r.jsx)(d,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[_],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[a]),children:o})]})}function s({className:e,children:n,tag:a="div",...i}){return(0,r.jsx)(a,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:n})}function o({className:e,...n}){return(0,r.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...n})}function c({className:e,...n}){return(0,r.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...n})}function u({className:e,...n}){return(0,r.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...n})}e.s(["Section",()=>n],370476),e.s(["Container",()=>a],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>s],105050),e.s(["Input",()=>o],801206),e.s(["Textarea",()=>c],587778),e.s(["Label",()=>u],9797),e.s([],445774)},759095,e=>{"use strict";var t=e.i(452797),r=e.i(907358);e.i(445774);var n=e.i(111023);function a({children:e,className:a,threshold:i=.1,delay:s=0}){let[o,c]=(0,r.useState)(!1),u=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(c(!0),e.unobserve(t.target))},{threshold:i}),t=u.current;return t&&e.observe(t),()=>{t&&e.unobserve(t)}},[i]),(0,t.jsx)("div",{ref:u,className:(0,n.cn)("reveal-on-scroll",o&&"is-visible",a),style:{transitionDelay:`${s}ms`},children:e})}e.s(["default",()=>a])},7278,e=>{"use strict";var t=e.i(452797),r=e.i(190422),n=e.i(907358),a=e.i(663067),i=e.i(902498);e.i(445774);var s=e.i(370476),o=e.i(575003),c=e.i(982016);let u=(0,i.default)(()=>e.A(357643),{loadableGenerated:{modules:[888085]},ssr:!1});function l(){let e=(0,r.useTranslations)("Team"),[i,l]=(0,n.useState)(!1),[d,_]=(0,n.useState)(0),p=["/uploads/2024/12/DSC07539-Large-600x400.webp","/uploads/2024/12/DSC07460-Large-600x400.webp","/uploads/2024/12/DSC07469-Large-600x400.webp","/uploads/2024/12/DSC07433-Large-600x400.webp","/uploads/2024/12/DSC07387-Large-600x400.webp"];return(0,t.jsxs)(s.Section,{className:"bg-primary-dark py-16 md:py-32",children:[(0,t.jsxs)(o.Container,{children:[(0,t.jsx)(c.Heading,{level:2,subtitle:e("gallery.subtitle"),align:"center",className:"text-white mb-12 md:mb-20",children:(0,t.jsx)("span",{className:"text-white",children:e("gallery.title")})}),(0,t.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-5 gap-3 md:gap-6",children:p.map((r,n)=>(0,t.jsxs)("button",{onClick:()=>{_(n),l(!0)},className:"relative aspect-[3/4] rounded-2xl md:rounded-[32px] overflow-hidden group shadow-2xl cursor-pointer",children:[(0,t.jsx)(a.default,{src:r,alt:e("gallery.title"),fill:!0,className:"object-cover transition-transform duration-1000 group-hover:scale-110"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-primary-dark/40 group-hover:bg-transparent transition-all duration-500"}),(0,t.jsx)("div",{className:"absolute inset-0 border-0 group-hover:border-[8px] md:group-hover:border-[12px] border-white/10 transition-all duration-500 pointer-events-none"})]},n))})]}),(0,t.jsx)(u,{isOpen:i,images:p,initialIndex:d,onClose:()=>l(!1)})]})}e.s(["default",()=>l])},132273,e=>{"use strict";var t=e.i(452797),r=e.i(676525),n=e.i(630655),a=e.i(216033);function i({eventName:e=a.AnalyticsEvents.BUTTON_CLICK,eventProperties:i={},onClick:s,...o}){let{trackEvent:c}=(0,n.useAnalytics)();return(0,t.jsx)(r.Button,{...o,onClick:t=>{c(e,{...i,label:"string"==typeof o.children?o.children:i.label}),s&&s(t)}})}e.s(["default",()=>i])},357643,e=>{e.v(t=>Promise.all(["static/chunks/39db22b959bfa285.js"].map(t=>e.l(t))).then(()=>t(888085)))},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="3a62379a-ba3c-a3e8-2ede-851aadcd9adc")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(l),o}}function l(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return f},APP_DIR_ALIAS:function(){return k},CACHE_ONE_YEAR:function(){return v},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return C},INSTRUMENTATION_HOOK_FILENAME:function(){return D},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return l},MIDDLEWARE_FILENAME:function(){return N},MIDDLEWARE_LOCATION_REGEXP:function(){return y},NEXT_BODY_SUFFIX:function(){return S},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return I},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return x},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return b},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return O},NEXT_CACHE_TAGS_HEADER:function(){return R},NEXT_CACHE_TAG_MAX_ITEMS:function(){return T},NEXT_CACHE_TAG_MAX_LENGTH:function(){return A},NEXT_DATA_SUFFIX:function(){return h},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return E},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return P},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return j},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return _},PROXY_FILENAME:function(){return L},PROXY_LOCATION_REGEXP:function(){return w},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return U},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return X},RSC_ACTION_VALIDATE_ALIAS:function(){return G},RSC_CACHE_WRAPPER_ALIAS:function(){return H},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return B},RSC_MOD_REF_PROXY_ALIAS:function(){return F},RSC_SEGMENTS_DIR_SUFFIX:function(){return g},RSC_SEGMENT_SUFFIX:function(){return p},RSC_SUFFIX:function(){return m},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",u="nxtI",l="x-matched-path",d="x-prerender-revalidate",_="x-prerender-revalidate-if-generated",g=".segments",p=".segment.rsc",m=".rsc",f=".action",h=".json",E=".meta",S=".body",R="x-next-cache-tags",x="x-next-revalidated-tags",b="x-next-revalidate-tag-token",P="next-resume",T=128,A=256,O=1024,I="_N_T_",v=31536e3,C=0xfffffffe,N="middleware",y=`(?:src/)?${N}`,L="proxy",w=`(?:src/)?${L}`,D="instrumentation",j="private-next-pages",M="private-dot-next",U="private-next-root-dir",k="private-next-app-dir",F="private-next-rsc-mod-ref-proxy",G="private-next-rsc-action-validate",X="private-next-rsc-server-reference",H="private-next-rsc-cache-wrapper",B="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var r=e.i(452797);function n({className:e,children:n,...a}){return(0,r.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...a,children:n})}function a({className:e,children:n,...a}){return(0,r.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...a,children:n})}function i({level:e=2,size:n,variant:a="dark",align:i="left",subtitle:s,children:o,className:c,subtitleClassName:u,badgeStyle:l="industrial"}){let d=`h${e}`,_=n||String(e);return(0,r.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],c),children:[s&&"industrial"===l&&(0,r.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===a?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",u),children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===a?"bg-white":"bg-primary")}),(0,r.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===a?"bg-white":"bg-primary")})]}),(0,r.jsx)("span",{children:s})]}),s&&"simple"===l&&(0,r.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===a?"text-white/80":"text-accent",u),children:s}),(0,r.jsx)(d,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[_],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[a]),children:o})]})}function s({className:e,children:n,tag:a="div",...i}){return(0,r.jsx)(a,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:n})}function o({className:e,...n}){return(0,r.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...n})}function c({className:e,...n}){return(0,r.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...n})}function u({className:e,...n}){return(0,r.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...n})}e.s(["Section",()=>n],370476),e.s(["Container",()=>a],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>s],105050),e.s(["Input",()=>o],801206),e.s(["Textarea",()=>c],587778),e.s(["Label",()=>u],9797),e.s([],445774)},759095,e=>{"use strict";var t=e.i(452797),r=e.i(907358);e.i(445774);var n=e.i(111023);function a({children:e,className:a,threshold:i=.1,delay:s=0}){let[o,c]=(0,r.useState)(!1),u=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(c(!0),e.unobserve(t.target))},{threshold:i}),t=u.current;return t&&e.observe(t),()=>{t&&e.unobserve(t)}},[i]),(0,t.jsx)("div",{ref:u,className:(0,n.cn)("reveal-on-scroll",o&&"is-visible",a),style:{transitionDelay:`${s}ms`},children:e})}e.s(["default",()=>a])},7278,e=>{"use strict";var t=e.i(452797),r=e.i(190422),n=e.i(907358),a=e.i(663067),i=e.i(902498);e.i(445774);var s=e.i(370476),o=e.i(575003),c=e.i(982016);let u=(0,i.default)(()=>e.A(357643),{loadableGenerated:{modules:[888085]},ssr:!1});function l(){let e=(0,r.useTranslations)("Team"),[i,l]=(0,n.useState)(!1),[d,_]=(0,n.useState)(0),g=["/uploads/2024/12/DSC07539-Large-600x400.webp","/uploads/2024/12/DSC07460-Large-600x400.webp","/uploads/2024/12/DSC07469-Large-600x400.webp","/uploads/2024/12/DSC07433-Large-600x400.webp","/uploads/2024/12/DSC07387-Large-600x400.webp"];return(0,t.jsxs)(s.Section,{className:"bg-primary-dark py-16 md:py-32",children:[(0,t.jsxs)(o.Container,{children:[(0,t.jsx)(c.Heading,{level:2,subtitle:e("gallery.subtitle"),align:"center",className:"text-white mb-12 md:mb-20",children:(0,t.jsx)("span",{className:"text-white",children:e("gallery.title")})}),(0,t.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-5 gap-3 md:gap-6",children:g.map((r,n)=>(0,t.jsxs)("button",{onClick:()=>{_(n),l(!0)},className:"relative aspect-[3/4] rounded-2xl md:rounded-[32px] overflow-hidden group shadow-2xl cursor-pointer",children:[(0,t.jsx)(a.default,{src:r,alt:e("gallery.title"),fill:!0,className:"object-cover transition-transform duration-1000 group-hover:scale-110"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-primary-dark/40 group-hover:bg-transparent transition-all duration-500"}),(0,t.jsx)("div",{className:"absolute inset-0 border-0 group-hover:border-[8px] md:group-hover:border-[12px] border-white/10 transition-all duration-500 pointer-events-none"})]},n))})]}),(0,t.jsx)(u,{isOpen:i,images:g,initialIndex:d,onClose:()=>l(!1)})]})}e.s(["default",()=>l])},132273,e=>{"use strict";var t=e.i(452797),r=e.i(676525),n=e.i(630655),a=e.i(216033);function i({eventName:e=a.AnalyticsEvents.BUTTON_CLICK,eventProperties:i={},onClick:s,...o}){let{trackEvent:c}=(0,n.useAnalytics)();return(0,t.jsx)(r.Button,{...o,onClick:t=>{c(e,{...i,label:"string"==typeof o.children?o.children:i.label}),s&&s(t)}})}e.s(["default",()=>i])},357643,e=>{e.v(t=>Promise.all(["static/chunks/39db22b959bfa285.js"].map(t=>e.l(t))).then(()=>t(888085)))},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); -//# debugId=36c7caa6-c4fb-f2f0-0141-452aa9ef55af \ No newline at end of file +//# debugId=3a62379a-ba3c-a3e8-2ede-851aadcd9adc \ No newline at end of file diff --git a/.next/static/chunks/aec2fa7d5c9477d9.js b/.next/static/chunks/2f9e45ecb224d02b.js similarity index 98% rename from .next/static/chunks/aec2fa7d5c9477d9.js rename to .next/static/chunks/2f9e45ecb224d02b.js index 3e96dbdd2..2acd5d93b 100644 --- a/.next/static/chunks/aec2fa7d5c9477d9.js +++ b/.next/static/chunks/2f9e45ecb224d02b.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="2b871db9-2c76-2193-9b13-0a8b37d83797")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),o=e.r(517110);function s(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=o.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let o=e.r(436120),s=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,s.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,s.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(_),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(_),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new o.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(o.displayName=a),o);return this.abortSignal&&s.catch(_),s}}function _(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let o=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(o,"/api")||(0,a.pathHasPrefix)(o,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),o=e.r(446247);function s(e){let t=(0,o.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let o=i[1].toLowerCase(),s=a.indexOf(o);return s<0?{pathname:e}:(r=t[s],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function o(e,t){let{basePath:r,i18n:o,trailingSlash:s}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):s};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(o){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,o.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,o.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return h},APP_DIR_ALIAS:function(){return F},CACHE_ONE_YEAR:function(){return b},DOT_NEXT_ALIAS:function(){return j},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return o},INFINITE_CACHE:function(){return N},INSTRUMENTATION_HOOK_FILENAME:function(){return x},JSON_CONTENT_TYPE_HEADER:function(){return s},MATCHED_PATH_HEADER:function(){return _},MIDDLEWARE_FILENAME:function(){return L},MIDDLEWARE_LOCATION_REGEXP:function(){return y},NEXT_BODY_SUFFIX:function(){return g},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return v},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return P},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return T},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return C},NEXT_CACHE_TAGS_HEADER:function(){return m},NEXT_CACHE_TAG_MAX_ITEMS:function(){return O},NEXT_CACHE_TAG_MAX_LENGTH:function(){return I},NEXT_DATA_SUFFIX:function(){return S},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return R},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return A},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return M},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return l},PROXY_FILENAME:function(){return D},PROXY_LOCATION_REGEXP:function(){return w},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return U},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return k},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return X},RSC_CACHE_WRAPPER_ALIAS:function(){return B},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return W},RSC_MOD_REF_PROXY_ALIAS:function(){return H},RSC_SEGMENTS_DIR_SUFFIX:function(){return E},RSC_SEGMENT_SUFFIX:function(){return f},RSC_SUFFIX:function(){return p},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return eo}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",o="text/html; charset=utf-8",s="application/json; charset=utf-8",c="nxtP",u="nxtI",_="x-matched-path",d="x-prerender-revalidate",l="x-prerender-revalidate-if-generated",E=".segments",f=".segment.rsc",p=".rsc",h=".action",S=".json",R=".meta",g=".body",m="x-next-cache-tags",P="x-next-revalidated-tags",T="x-next-revalidate-tag-token",A="next-resume",O=128,I=256,C=1024,v="_N_T_",b=31536e3,N=0xfffffffe,L="middleware",y=`(?:src/)?${L}`,D="proxy",w=`(?:src/)?${D}`,x="instrumentation",M="private-next-pages",j="private-dot-next",U="private-next-root-dir",F="private-next-app-dir",H="private-next-rsc-mod-ref-proxy",X="private-next-rsc-action-validate",G="private-next-rsc-server-reference",B="private-next-rsc-cache-wrapper",W="private-next-rsc-track-dynamic-import",k="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},eo=12,es={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...es,GROUP:{builtinReact:[es.reactServerComponents,es.actionBrowser],serverOnly:[es.reactServerComponents,es.actionBrowser,es.instrument,es.middleware],neutralTarget:[es.apiNode,es.apiEdge],clientOnly:[es.serverSideRendering,es.appPagesBrowser],bundled:[es.reactServerComponents,es.actionBrowser,es.serverSideRendering,es.appPagesBrowser,es.shared,es.instrument,es.middleware],appPages:[es.reactServerComponents,es.serverSideRendering,es.appPagesBrowser,es.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},315391,e=>{"use strict";var t=e.i(907358),r=e.i(976819),n=e.i(630655),a=e.i(216033);function i(){let e=(0,r.usePathname)(),{trackEvent:i}=(0,n.useAnalytics)(),o=(0,t.useRef)(new Set);return(0,t.useEffect)(()=>{o.current.clear()},[e]),(0,t.useEffect)(()=>{let t=()=>{let t=window.scrollY,r=window.innerHeight,n=document.documentElement.scrollHeight-r;if(n<=0)return;let s=Math.round(t/n*100);[25,50,75,100].forEach(t=>{s>=t&&!o.current.has(t)&&(o.current.add(t),i(a.AnalyticsEvents.SCROLL_DEPTH,{depth:t,path:e}))})};return window.addEventListener("scroll",t,{passive:!0}),t(),()=>{window.removeEventListener("scroll",t)}},[e,i]),null}e.s(["default",()=>i])},248785,e=>{e.n(e.i(315391))},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="c591be5a-a497-9a7c-0dd5-6b68218167fe")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),o=e.r(517110);function s(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=o.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let o=e.r(436120),s=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,s.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,s.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(_),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(_),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new o.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(o.displayName=a),o);return this.abortSignal&&s.catch(_),s}}function _(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let o=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(o,"/api")||(0,a.pathHasPrefix)(o,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),o=e.r(446247);function s(e){let t=(0,o.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let o=i[1].toLowerCase(),s=a.indexOf(o);return s<0?{pathname:e}:(r=t[s],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function o(e,t){let{basePath:r,i18n:o,trailingSlash:s}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):s};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(o){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,o.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,o.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return h},APP_DIR_ALIAS:function(){return F},CACHE_ONE_YEAR:function(){return b},DOT_NEXT_ALIAS:function(){return j},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return o},INFINITE_CACHE:function(){return N},INSTRUMENTATION_HOOK_FILENAME:function(){return x},JSON_CONTENT_TYPE_HEADER:function(){return s},MATCHED_PATH_HEADER:function(){return _},MIDDLEWARE_FILENAME:function(){return L},MIDDLEWARE_LOCATION_REGEXP:function(){return y},NEXT_BODY_SUFFIX:function(){return g},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return v},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return P},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return T},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return C},NEXT_CACHE_TAGS_HEADER:function(){return m},NEXT_CACHE_TAG_MAX_ITEMS:function(){return O},NEXT_CACHE_TAG_MAX_LENGTH:function(){return I},NEXT_DATA_SUFFIX:function(){return S},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return R},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return A},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return M},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return l},PROXY_FILENAME:function(){return D},PROXY_LOCATION_REGEXP:function(){return w},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return U},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return k},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return X},RSC_CACHE_WRAPPER_ALIAS:function(){return B},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return W},RSC_MOD_REF_PROXY_ALIAS:function(){return H},RSC_SEGMENTS_DIR_SUFFIX:function(){return E},RSC_SEGMENT_SUFFIX:function(){return f},RSC_SUFFIX:function(){return p},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return eo}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",o="text/html; charset=utf-8",s="application/json; charset=utf-8",c="nxtP",u="nxtI",_="x-matched-path",d="x-prerender-revalidate",l="x-prerender-revalidate-if-generated",E=".segments",f=".segment.rsc",p=".rsc",h=".action",S=".json",R=".meta",g=".body",m="x-next-cache-tags",P="x-next-revalidated-tags",T="x-next-revalidate-tag-token",A="next-resume",O=128,I=256,C=1024,v="_N_T_",b=31536e3,N=0xfffffffe,L="middleware",y=`(?:src/)?${L}`,D="proxy",w=`(?:src/)?${D}`,x="instrumentation",M="private-next-pages",j="private-dot-next",U="private-next-root-dir",F="private-next-app-dir",H="private-next-rsc-mod-ref-proxy",X="private-next-rsc-action-validate",G="private-next-rsc-server-reference",B="private-next-rsc-cache-wrapper",W="private-next-rsc-track-dynamic-import",k="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},eo=12,es={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...es,GROUP:{builtinReact:[es.reactServerComponents,es.actionBrowser],serverOnly:[es.reactServerComponents,es.actionBrowser,es.instrument,es.middleware],neutralTarget:[es.apiNode,es.apiEdge],clientOnly:[es.serverSideRendering,es.appPagesBrowser],bundled:[es.reactServerComponents,es.actionBrowser,es.serverSideRendering,es.appPagesBrowser,es.shared,es.instrument,es.middleware],appPages:[es.reactServerComponents,es.serverSideRendering,es.appPagesBrowser,es.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},315391,e=>{"use strict";var t=e.i(907358),r=e.i(976819),n=e.i(630655),a=e.i(216033);function i(){let e=(0,r.usePathname)(),{trackEvent:i}=(0,n.useAnalytics)(),o=(0,t.useRef)(new Set);return(0,t.useEffect)(()=>{o.current.clear()},[e]),(0,t.useEffect)(()=>{let t=()=>{let t=window.scrollY,r=window.innerHeight,n=document.documentElement.scrollHeight-r;if(n<=0)return;let s=Math.round(t/n*100);[25,50,75,100].forEach(t=>{s>=t&&!o.current.has(t)&&(o.current.add(t),i(a.AnalyticsEvents.SCROLL_DEPTH,{depth:t,path:e}))})};return window.addEventListener("scroll",t,{passive:!0}),t(),()=>{window.removeEventListener("scroll",t)}},[e,i]),null}e.s(["default",()=>i])},248785,e=>{e.n(e.i(315391))},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); -//# debugId=2b871db9-2c76-2193-9b13-0a8b37d83797 \ No newline at end of file +//# debugId=c591be5a-a497-9a7c-0dd5-6b68218167fe \ No newline at end of file diff --git a/.next/static/chunks/e30faaa1d932575b.js b/.next/static/chunks/40c364ffa4723488.js similarity index 95% rename from .next/static/chunks/e30faaa1d932575b.js rename to .next/static/chunks/40c364ffa4723488.js index d9ec9ff74..5cdd18d45 100644 --- a/.next/static/chunks/e30faaa1d932575b.js +++ b/.next/static/chunks/40c364ffa4723488.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="089cdde3-46d8-5837-33ff-f8d072ada1f7")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(l),o}}function l(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return m},APP_DIR_ALIAS:function(){return F},CACHE_ONE_YEAR:function(){return C},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return N},INSTRUMENTATION_HOOK_FILENAME:function(){return w},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return l},MIDDLEWARE_FILENAME:function(){return y},MIDDLEWARE_LOCATION_REGEXP:function(){return L},NEXT_BODY_SUFFIX:function(){return S},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return v},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return P},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return T},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return b},NEXT_CACHE_TAGS_HEADER:function(){return R},NEXT_CACHE_TAG_MAX_ITEMS:function(){return O},NEXT_CACHE_TAG_MAX_LENGTH:function(){return I},NEXT_DATA_SUFFIX:function(){return h},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return g},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return A},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return j},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return _},PROXY_FILENAME:function(){return x},PROXY_LOCATION_REGEXP:function(){return D},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return U},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return k},RSC_ACTION_PROXY_ALIAS:function(){return H},RSC_ACTION_VALIDATE_ALIAS:function(){return X},RSC_CACHE_WRAPPER_ALIAS:function(){return B},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return W},RSC_MOD_REF_PROXY_ALIAS:function(){return G},RSC_SEGMENTS_DIR_SUFFIX:function(){return E},RSC_SEGMENT_SUFFIX:function(){return p},RSC_SUFFIX:function(){return f},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",u="nxtI",l="x-matched-path",d="x-prerender-revalidate",_="x-prerender-revalidate-if-generated",E=".segments",p=".segment.rsc",f=".rsc",m=".action",h=".json",g=".meta",S=".body",R="x-next-cache-tags",P="x-next-revalidated-tags",T="x-next-revalidate-tag-token",A="next-resume",O=128,I=256,b=1024,v="_N_T_",C=31536e3,N=0xfffffffe,y="middleware",L=`(?:src/)?${y}`,x="proxy",D=`(?:src/)?${x}`,w="instrumentation",j="private-next-pages",M="private-dot-next",U="private-next-root-dir",F="private-next-app-dir",G="private-next-rsc-mod-ref-proxy",X="private-next-rsc-action-validate",H="private-next-rsc-server-reference",B="private-next-rsc-cache-wrapper",W="private-next-rsc-track-dynamic-import",k="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},959504,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(111023),a=e.i(630655),i=e.i(216033);function s({headings:e,locale:s}){let[o,c]=(0,r.useState)(""),{trackEvent:u}=(0,a.useAnalytics)();return((0,r.useEffect)(()=>{let t=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&c(e.target.id)})},{rootMargin:"-10% 0% -70% 0%",threshold:0}),r=setTimeout(()=>{e.map(e=>document.getElementById(e.id)).forEach(e=>{e&&t.observe(e)})},500);return()=>{clearTimeout(r),t.disconnect()}},[e]),0===e.length)?null:(0,t.jsx)("nav",{className:"hidden lg:block w-full ml-12",children:(0,t.jsxs)("div",{className:"relative pl-6 border-l border-neutral-200",children:[(0,t.jsx)("h4",{className:"text-xs md:text-sm font-bold uppercase tracking-[0.2em] text-text-primary/70 mb-6",children:"de"===s?"Inhalt":"Table of Contents"}),(0,t.jsx)("ul",{className:"space-y-4",children:e.map(e=>(0,t.jsxs)("li",{style:{paddingLeft:`${(e.level-2)*1}rem`},className:"relative",children:[o===e.id&&(0,t.jsx)("div",{className:"absolute -left-[25px] top-0 w-[2px] h-full bg-primary transition-all duration-300"}),(0,t.jsx)("a",{href:`#${e.id}`,className:(0,n.cn)("text-sm md:text-base transition-all duration-300 hover:text-primary block leading-snug",o===e.id?"text-primary font-bold translate-x-1":"text-text-secondary font-medium hover:translate-x-1"),onClick:t=>{t.preventDefault();let r=document.getElementById(e.id);if(r){u(i.AnalyticsEvents.TOC_CLICK,{heading_id:e.id,heading_text:e.text,location:"blog_sidebar"});let t=r.getBoundingClientRect().top+window.pageYOffset+-100;window.scrollTo({top:t,behavior:"smooth"})}},children:e.text.replace(/\*\*(.*?)\*\*/g,"$1")})]},e.id))})]})})}e.s(["default",()=>s])},59828,e=>{"use strict";var t=e.i(907358),r=e.i(630655),n=e.i(216033);function a({title:e,slug:a,category:i,readingTime:s}){let{trackEvent:o}=(0,r.useAnalytics)();return(0,t.useEffect)(()=>{o(n.AnalyticsEvents.BLOG_POST_VIEW,{title:e,slug:a,category:i,estimated_reading_time:s,location:"blog_post_pdp"});let t=Date.now();return()=>{let r=Math.round((Date.now()-t)/1e3);o("blog_dwell_time",{title:e,slug:a,seconds:r,reading_time_completion:Math.min(100,Math.round(r/(60*s)*100))})}},[e,a,i,s,o]),null}e.s(["default",()=>a])},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="42e296c8-04f8-13d7-853e-7cdf08e26cf1")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(d),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(d),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(d),o}}function d(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return m},APP_DIR_ALIAS:function(){return F},CACHE_ONE_YEAR:function(){return C},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return N},INSTRUMENTATION_HOOK_FILENAME:function(){return w},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return d},MIDDLEWARE_FILENAME:function(){return y},MIDDLEWARE_LOCATION_REGEXP:function(){return L},NEXT_BODY_SUFFIX:function(){return S},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return v},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return P},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return T},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return b},NEXT_CACHE_TAGS_HEADER:function(){return R},NEXT_CACHE_TAG_MAX_ITEMS:function(){return O},NEXT_CACHE_TAG_MAX_LENGTH:function(){return I},NEXT_DATA_SUFFIX:function(){return h},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return g},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return A},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return j},PRERENDER_REVALIDATE_HEADER:function(){return l},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return _},PROXY_FILENAME:function(){return x},PROXY_LOCATION_REGEXP:function(){return D},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return U},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return k},RSC_ACTION_PROXY_ALIAS:function(){return H},RSC_ACTION_VALIDATE_ALIAS:function(){return X},RSC_CACHE_WRAPPER_ALIAS:function(){return B},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return W},RSC_MOD_REF_PROXY_ALIAS:function(){return G},RSC_SEGMENTS_DIR_SUFFIX:function(){return E},RSC_SEGMENT_SUFFIX:function(){return f},RSC_SUFFIX:function(){return p},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",u="nxtI",d="x-matched-path",l="x-prerender-revalidate",_="x-prerender-revalidate-if-generated",E=".segments",f=".segment.rsc",p=".rsc",m=".action",h=".json",g=".meta",S=".body",R="x-next-cache-tags",P="x-next-revalidated-tags",T="x-next-revalidate-tag-token",A="next-resume",O=128,I=256,b=1024,v="_N_T_",C=31536e3,N=0xfffffffe,y="middleware",L=`(?:src/)?${y}`,x="proxy",D=`(?:src/)?${x}`,w="instrumentation",j="private-next-pages",M="private-dot-next",U="private-next-root-dir",F="private-next-app-dir",G="private-next-rsc-mod-ref-proxy",X="private-next-rsc-action-validate",H="private-next-rsc-server-reference",B="private-next-rsc-cache-wrapper",W="private-next-rsc-track-dynamic-import",k="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},959504,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(111023),a=e.i(630655),i=e.i(216033);function s({headings:e,locale:s}){let[o,c]=(0,r.useState)(""),{trackEvent:u}=(0,a.useAnalytics)();return((0,r.useEffect)(()=>{let t=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&c(e.target.id)})},{rootMargin:"-10% 0% -70% 0%",threshold:0}),r=setTimeout(()=>{e.map(e=>document.getElementById(e.id)).forEach(e=>{e&&t.observe(e)})},500);return()=>{clearTimeout(r),t.disconnect()}},[e]),0===e.length)?null:(0,t.jsx)("nav",{className:"hidden lg:block w-full ml-12",children:(0,t.jsxs)("div",{className:"relative pl-6 border-l border-neutral-200",children:[(0,t.jsx)("h4",{className:"text-xs md:text-sm font-bold uppercase tracking-[0.2em] text-text-primary/70 mb-6",children:"de"===s?"Inhalt":"Table of Contents"}),(0,t.jsx)("ul",{className:"space-y-4",children:e.map(e=>(0,t.jsxs)("li",{style:{paddingLeft:`${(e.level-2)*1}rem`},className:"relative",children:[o===e.id&&(0,t.jsx)("div",{className:"absolute -left-[25px] top-0 w-[2px] h-full bg-primary transition-all duration-300"}),(0,t.jsx)("a",{href:`#${e.id}`,className:(0,n.cn)("text-sm md:text-base transition-all duration-300 hover:text-primary block leading-snug",o===e.id?"text-primary font-bold translate-x-1":"text-text-secondary font-medium hover:translate-x-1"),onClick:t=>{t.preventDefault();let r=document.getElementById(e.id);if(r){u(i.AnalyticsEvents.TOC_CLICK,{heading_id:e.id,heading_text:e.text,location:"blog_sidebar"});let t=r.getBoundingClientRect().top+window.pageYOffset+-100;window.scrollTo({top:t,behavior:"smooth"})}},children:e.text.replace(/\*\*(.*?)\*\*/g,"$1")})]},e.id))})]})})}e.s(["default",()=>s])},59828,e=>{"use strict";var t=e.i(907358),r=e.i(630655),n=e.i(216033);function a({title:e,slug:a,category:i,readingTime:s}){let{trackEvent:o}=(0,r.useAnalytics)();return(0,t.useEffect)(()=>{o(n.AnalyticsEvents.BLOG_POST_VIEW,{title:e,slug:a,category:i,estimated_reading_time:s,location:"blog_post_pdp"});let t=Date.now();return()=>{let r=Math.round((Date.now()-t)/1e3);o("blog_dwell_time",{title:e,slug:a,seconds:r,reading_time_completion:Math.min(100,Math.round(r/(60*s)*100))})}},[e,a,i,s,o]),null}e.s(["default",()=>a])},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); -//# debugId=089cdde3-46d8-5837-33ff-f8d072ada1f7 \ No newline at end of file +//# debugId=42e296c8-04f8-13d7-853e-7cdf08e26cf1 \ No newline at end of file diff --git a/.next/static/chunks/507106f8cc18accf.js b/.next/static/chunks/507106f8cc18accf.js new file mode 100644 index 000000000..2235c3462 --- /dev/null +++ b/.next/static/chunks/507106f8cc18accf.js @@ -0,0 +1,4 @@ +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="5bc0d3b7-04c5-5526-e83d-880418f557b6")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var n=e.i(452797);function l({className:e,children:l,...r}){return(0,n.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...r,children:l})}function r({className:e,children:l,...r}){return(0,n.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...r,children:l})}function i({level:e=2,size:l,variant:r="dark",align:i="left",subtitle:a,children:s,className:d,subtitleClassName:o,badgeStyle:x="industrial"}){let c=`h${e}`,u=l||String(e);return(0,n.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],d),children:[a&&"industrial"===x&&(0,n.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===r?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",o),children:[(0,n.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,n.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===r?"bg-white":"bg-primary")}),(0,n.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===r?"bg-white":"bg-primary")})]}),(0,n.jsx)("span",{children:a})]}),a&&"simple"===x&&(0,n.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===r?"text-white/80":"text-accent",o),children:a}),(0,n.jsx)(c,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[u],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[r]),children:s})]})}function a({className:e,children:l,tag:r="div",...i}){return(0,n.jsx)(r,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:l})}function s({className:e,...l}){return(0,n.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...l})}function d({className:e,...l}){return(0,n.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...l})}function o({className:e,...l}){return(0,n.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...l})}e.s(["Section",()=>l],370476),e.s(["Container",()=>r],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>a],105050),e.s(["Input",()=>s],801206),e.s(["Textarea",()=>d],587778),e.s(["Label",()=>o],9797),e.s([],445774)},759095,e=>{"use strict";var t=e.i(452797),n=e.i(907358);e.i(445774);var l=e.i(111023);function r({children:e,className:r,threshold:i=.1,delay:a=0}){let[s,d]=(0,n.useState)(!1),o=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(d(!0),e.unobserve(t.target))},{threshold:i}),t=o.current;return t&&e.observe(t),()=>{t&&e.unobserve(t)}},[i]),(0,t.jsx)("div",{ref:o,className:(0,l.cn)("reveal-on-scroll",s&&"is-visible",r),style:{transitionDelay:`${a}ms`},children:e})}e.s(["default",()=>r])},783488,e=>{"use strict";var t=e.i(907358),n=e.i(976819);function l({currentPage:e,totalPages:l,locale:r}){let i=(0,n.useRouter)();return(0,t.useEffect)(()=>{let t=t=>{document.activeElement?.tagName!=="INPUT"&&document.activeElement?.tagName!=="TEXTAREA"&&document.activeElement?.tagName!=="SELECT"&&("ArrowLeft"===t.key&&e>1?i.push(`/${r}/blog?page=${e-1}`):"ArrowRight"===t.key&&ewindow.removeEventListener("keydown",t)},[e,l,r,i]),null}e.s(["BlogPaginationKeyboardObserver",()=>l])}]); + +//# debugId=5bc0d3b7-04c5-5526-e83d-880418f557b6 \ No newline at end of file diff --git a/.next/static/chunks/8d21a9c9b9b42088.js b/.next/static/chunks/5a836673698c817b.js similarity index 82% rename from .next/static/chunks/8d21a9c9b9b42088.js rename to .next/static/chunks/5a836673698c817b.js index fe9d5d238..be0430111 100644 --- a/.next/static/chunks/8d21a9c9b9b42088.js +++ b/.next/static/chunks/5a836673698c817b.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="e223ee93-3a57-a449-881c-26614096d623")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(l),o}}function l(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return m},APP_DIR_ALIAS:function(){return U},CACHE_ONE_YEAR:function(){return v},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return C},INSTRUMENTATION_HOOK_FILENAME:function(){return D},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return l},MIDDLEWARE_FILENAME:function(){return N},MIDDLEWARE_LOCATION_REGEXP:function(){return y},NEXT_BODY_SUFFIX:function(){return R},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return I},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return x},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return P},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return O},NEXT_CACHE_TAGS_HEADER:function(){return S},NEXT_CACHE_TAG_MAX_ITEMS:function(){return b},NEXT_CACHE_TAG_MAX_LENGTH:function(){return A},NEXT_DATA_SUFFIX:function(){return h},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return E},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return T},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return j},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return _},PROXY_FILENAME:function(){return L},PROXY_LOCATION_REGEXP:function(){return w},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return k},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return X},RSC_CACHE_WRAPPER_ALIAS:function(){return H},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return B},RSC_MOD_REF_PROXY_ALIAS:function(){return F},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return p},RSC_SUFFIX:function(){return g},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",u="nxtI",l="x-matched-path",d="x-prerender-revalidate",_="x-prerender-revalidate-if-generated",f=".segments",p=".segment.rsc",g=".rsc",m=".action",h=".json",E=".meta",R=".body",S="x-next-cache-tags",x="x-next-revalidated-tags",P="x-next-revalidate-tag-token",T="next-resume",b=128,A=256,O=1024,I="_N_T_",v=31536e3,C=0xfffffffe,N="middleware",y=`(?:src/)?${N}`,L="proxy",w=`(?:src/)?${L}`,D="instrumentation",j="private-next-pages",M="private-dot-next",k="private-next-root-dir",U="private-next-app-dir",F="private-next-rsc-mod-ref-proxy",X="private-next-rsc-action-validate",G="private-next-rsc-server-reference",H="private-next-rsc-cache-wrapper",B="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var r=e.i(452797);function n({className:e,children:n,...a}){return(0,r.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...a,children:n})}function a({className:e,children:n,...a}){return(0,r.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...a,children:n})}function i({level:e=2,size:n,variant:a="dark",align:i="left",subtitle:s,children:o,className:c,subtitleClassName:u,badgeStyle:l="industrial"}){let d=`h${e}`,_=n||String(e);return(0,r.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],c),children:[s&&"industrial"===l&&(0,r.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===a?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",u),children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===a?"bg-white":"bg-primary")}),(0,r.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===a?"bg-white":"bg-primary")})]}),(0,r.jsx)("span",{children:s})]}),s&&"simple"===l&&(0,r.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===a?"text-white/80":"text-accent",u),children:s}),(0,r.jsx)(d,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[_],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[a]),children:o})]})}function s({className:e,children:n,tag:a="div",...i}){return(0,r.jsx)(a,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:n})}function o({className:e,...n}){return(0,r.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...n})}function c({className:e,...n}){return(0,r.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...n})}function u({className:e,...n}){return(0,r.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...n})}e.s(["Section",()=>n],370476),e.s(["Container",()=>a],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>s],105050),e.s(["Input",()=>o],801206),e.s(["Textarea",()=>c],587778),e.s(["Label",()=>u],9797),e.s([],445774)},224038,e=>{"use strict";var t=e.i(452797);e.i(445774);var r=e.i(111023);function n({variant:e,className:n,color:a="#82ed20"}){return"circle"===e?(0,t.jsx)("svg",{className:(0,r.cn)("absolute pointer-events-none",n),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,t.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:a,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===e?(0,t.jsx)("svg",{className:(0,r.cn)("absolute pointer-events-none",n),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,t.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:a,strokeWidth:"20",fill:"none"})}):null}e.s(["default",()=>n])},555331,e=>{"use strict";var t=e.i(907358),r=e.i(630655),n=e.i(216033);function a({path:a}){let{trackEvent:i}=(0,r.useAnalytics)();return(0,t.useEffect)(()=>{i(n.AnalyticsEvents.ERROR,{type:"404_not_found",path:a}),e.A(919007).then(e=>{e.withScope(t=>{t.setTag("status_code","404"),t.setTag("path",a),e.captureMessage(`Route Not Found: ${a}`,"warning")})})},[i,a]),null}e.s(["default",()=>a])},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="83a11220-3510-9e99-bbf9-e18fa8264c93")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(l),o}}function l(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return m},APP_DIR_ALIAS:function(){return U},CACHE_ONE_YEAR:function(){return v},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return C},INSTRUMENTATION_HOOK_FILENAME:function(){return D},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return l},MIDDLEWARE_FILENAME:function(){return N},MIDDLEWARE_LOCATION_REGEXP:function(){return y},NEXT_BODY_SUFFIX:function(){return R},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return I},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return x},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return P},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return O},NEXT_CACHE_TAGS_HEADER:function(){return S},NEXT_CACHE_TAG_MAX_ITEMS:function(){return b},NEXT_CACHE_TAG_MAX_LENGTH:function(){return A},NEXT_DATA_SUFFIX:function(){return h},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return E},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return T},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return j},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return _},PROXY_FILENAME:function(){return L},PROXY_LOCATION_REGEXP:function(){return w},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return k},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return X},RSC_CACHE_WRAPPER_ALIAS:function(){return H},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return B},RSC_MOD_REF_PROXY_ALIAS:function(){return F},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return p},RSC_SUFFIX:function(){return g},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return $},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",u="nxtI",l="x-matched-path",d="x-prerender-revalidate",_="x-prerender-revalidate-if-generated",f=".segments",p=".segment.rsc",g=".rsc",m=".action",h=".json",E=".meta",R=".body",S="x-next-cache-tags",x="x-next-revalidated-tags",P="x-next-revalidate-tag-token",T="next-resume",b=128,A=256,O=1024,I="_N_T_",v=31536e3,C=0xfffffffe,N="middleware",y=`(?:src/)?${N}`,L="proxy",w=`(?:src/)?${L}`,D="instrumentation",j="private-next-pages",M="private-dot-next",k="private-next-root-dir",U="private-next-app-dir",F="private-next-rsc-mod-ref-proxy",X="private-next-rsc-action-validate",G="private-next-rsc-server-reference",H="private-next-rsc-cache-wrapper",B="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",$="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var r=e.i(452797);function n({className:e,children:n,...a}){return(0,r.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...a,children:n})}function a({className:e,children:n,...a}){return(0,r.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...a,children:n})}function i({level:e=2,size:n,variant:a="dark",align:i="left",subtitle:s,children:o,className:c,subtitleClassName:u,badgeStyle:l="industrial"}){let d=`h${e}`,_=n||String(e);return(0,r.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],c),children:[s&&"industrial"===l&&(0,r.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===a?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",u),children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===a?"bg-white":"bg-primary")}),(0,r.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===a?"bg-white":"bg-primary")})]}),(0,r.jsx)("span",{children:s})]}),s&&"simple"===l&&(0,r.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===a?"text-white/80":"text-accent",u),children:s}),(0,r.jsx)(d,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[_],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[a]),children:o})]})}function s({className:e,children:n,tag:a="div",...i}){return(0,r.jsx)(a,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:n})}function o({className:e,...n}){return(0,r.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...n})}function c({className:e,...n}){return(0,r.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...n})}function u({className:e,...n}){return(0,r.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...n})}e.s(["Section",()=>n],370476),e.s(["Container",()=>a],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>s],105050),e.s(["Input",()=>o],801206),e.s(["Textarea",()=>c],587778),e.s(["Label",()=>u],9797),e.s([],445774)},224038,e=>{"use strict";var t=e.i(452797);e.i(445774);var r=e.i(111023);function n({variant:e,className:n,color:a="#82ed20"}){return"circle"===e?(0,t.jsx)("svg",{className:(0,r.cn)("absolute pointer-events-none",n),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,t.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:a,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===e?(0,t.jsx)("svg",{className:(0,r.cn)("absolute pointer-events-none",n),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,t.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:a,strokeWidth:"20",fill:"none"})}):null}e.s(["default",()=>n])},555331,e=>{"use strict";var t=e.i(907358),r=e.i(630655),n=e.i(216033);function a({path:a}){let{trackEvent:i}=(0,r.useAnalytics)();return(0,t.useEffect)(()=>{i(n.AnalyticsEvents.ERROR,{type:"404_not_found",path:a}),e.A(919007).then(e=>{e.withScope(t=>{t.setTag("status_code","404"),t.setTag("path",a),e.captureMessage(`Route Not Found: ${a}`,"warning")})})},[i,a]),null}e.s(["default",()=>a])},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); -//# debugId=e223ee93-3a57-a449-881c-26614096d623 \ No newline at end of file +//# debugId=83a11220-3510-9e99-bbf9-e18fa8264c93 \ No newline at end of file diff --git a/.next/static/chunks/5b986d05c5eeddd1.js b/.next/static/chunks/5dced52d81a603a9.js similarity index 98% rename from .next/static/chunks/5b986d05c5eeddd1.js rename to .next/static/chunks/5dced52d81a603a9.js index 11494317b..d0125833c 100644 --- a/.next/static/chunks/5b986d05c5eeddd1.js +++ b/.next/static/chunks/5dced52d81a603a9.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="66793ba6-301a-4194-cae0-4e2532358fbd")}catch(e){}}(); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="d063168c-9fa7-d981-0aa9-85bf2170da65")}catch(e){}}(); (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,209157,e=>{"use strict";function t(e,t){let i=t&&t.cache?t.cache:a,s=t&&t.serializer?t.serializer:o;return(t&&t.strategy?t.strategy:function(e,t){var o,i;let a=1===e.length?r:n;return o=t.cache.create(),i=t.serializer,a.bind(this,e,o,i)})(e,{cache:i,serializer:s})}function r(e,t,r,n){let o=null==n||"number"==typeof n||"boolean"==typeof n?n:r(n),i=t.get(o);return void 0===i&&(i=e.call(this,n),t.set(o,i)),i}function n(e,t,r){let n=Array.prototype.slice.call(arguments,3),o=r(n),i=t.get(o);return void 0===i&&(i=e.apply(this,n),t.set(o,i)),i}let o=function(){return JSON.stringify(arguments)};class i{cache;constructor(){this.cache=Object.create(null)}get(e){return this.cache[e]}set(e,t){this.cache[e]=t}}let a={create:function(){return new i}};e.s(["memoize",()=>t,"strategies",0,{variadic:function(e,t){var r,o;return r=t.cache.create(),o=t.serializer,n.bind(this,e,r,o)},monadic:function(e,t){var n,o;return n=t.cache.create(),o=t.serializer,r.bind(this,e,n,o)}}])},801296,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return l},searchParamsToUrlQuery:function(){return i},urlQueryToSearchParams:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function i(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function a(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function s(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,a(e));else t.set(r,a(n));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},462307,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return s},formatWithValidation:function(){return u},urlObjectKeys:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=e.r(744066)._(e.r(801296)),a=/https?|ftp|gopher|file/;function s(e){let{auth:t,hostname:r}=e,n=e.protocol||"",o=e.pathname||"",s=e.hash||"",l=e.query||"",u=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?u=t+e.host:r&&(u=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(u+=":"+e.port)),l&&"object"==typeof l&&(l=String(i.urlQueryToSearchParams(l)));let c=e.search||l&&`?${l}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||a.test(n))&&!1!==u?(u="//"+(u||""),o&&"/"!==o[0]&&(o="/"+o)):u||(u=""),s&&"#"!==s[0]&&(s="#"+s),c&&"?"!==c[0]&&(c="?"+c),o=o.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${u}${o}${c}${s}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function u(e){return s(e)}},97872,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return j},MissingStaticPage:function(){return v},NormalizeError:function(){return b},PageNotFoundError:function(){return y},SP:function(){return m},ST:function(){return x},WEB_VITALS:function(){return i},execOnce:function(){return a},getDisplayName:function(){return d},getLocationOrigin:function(){return u},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return f},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return h},stringifyError:function(){return w}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=["CLS","FCP","FID","INP","LCP","TTFB"];function a(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let s=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>s.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=u();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function h(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let m="u">typeof performance,x=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class b extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class v extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class j extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function w(e){return JSON.stringify({message:e.message,stack:e.stack})}},171064,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return i}});let n=e.r(97872),o=e.r(33905);function i(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},7284,e=>{"use strict";function t(){for(var e,t,r=0,n="",o=arguments.length;rt])},437698,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},391736,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=e.r(907358);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=i(e,n)),t&&(o.current=i(t,n))},[e,t])}function i(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},676525,e=>{"use strict";var t=e.i(452797),r=e.i(184868),n=e.i(111023);let o={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},i={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},a={primary:"bg-primary-dark",secondary:"bg-secondary-light",accent:"bg-accent-dark",saturated:"bg-primary",outline:"bg-primary",ghost:"bg-primary-light/10",white:"bg-primary-light",destructive:"bg-destructive/90"};function s({variant:e="primary"}){return(0,t.jsx)("span",{className:(0,n.cn)("absolute inset-0 translate-y-[101%] group-hover/btn:translate-y-0 transition-transform duration-500 ease-out",a[e])})}function l({className:e,variant:a="primary",size:l="md",href:u,...c}){let d=function(e="primary",t="md",r){return(0,n.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",o[e],i[t],r)}(a,l,e),f=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:(0,n.cn)("relative z-10 flex items-center justify-center gap-2 transition-colors duration-500","white"===a?"group-hover/btn:text-primary-dark":""),children:c.children}),(0,t.jsx)(s,{variant:a})]});return u?(0,t.jsx)(r.default,{href:u,className:d,children:f}):(0,t.jsx)("button",{className:d,...c,children:f})}e.s(["Button",()=>l])},818127,(e,t,r)=>{"use strict";function n(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"encodeURIPath",{enumerable:!0,get:function(){return n}})},50239,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"BailoutToCSR",{enumerable:!0,get:function(){return o}});let n=e.r(880813);function o({reason:e,children:t}){if("u"{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"PreloadChunks",{enumerable:!0,get:function(){return l}});let n=e.r(452797),o=e.r(910353),i=e.r(306648),a=e.r(818127),s=e.r(954633);function l({moduleIds:e}){if("u">typeof window)return null;let t=i.workAsyncStorage.getStore();if(void 0===t)return null;let r=[];if(t.reactLoadableManifest&&e){let n=t.reactLoadableManifest;for(let t of e){if(!n[t])continue;let e=n[t].files;r.push(...e)}}if(0===r.length)return null;let l=(0,s.getDeploymentIdQueryOrEmptyString)();return(0,n.jsx)(n.Fragment,{children:r.map(e=>{let r=`${t.assetPrefix}/_next/${(0,a.encodeURIPath)(e)}${l}`;return e.endsWith(".css")?(0,n.jsx)("link",{precedence:"dynamic",href:r,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,o.preload)(r,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},768337,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return u}});let n=e.r(452797),o=e.r(907358),i=e.r(50239),a=e.r(445929);function s(e){return{default:e&&"default"in e?e.default:e}}let l={loader:()=>Promise.resolve(s(()=>null)),loading:null,ssr:!0},u=function(e){let t={...l,...e},r=(0,o.lazy)(()=>t.loader().then(s)),u=t.loading;function c(e){let s=u?(0,n.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,l=!t.ssr||!!t.loading,c=l?o.Suspense:o.Fragment,d=t.ssr?(0,n.jsxs)(n.Fragment,{children:["u"{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let n=e.r(481258)._(e.r(768337));function o(e,t){let r={};"function"==typeof e&&(r.loader=e);let o={...r,...t};return(0,n.default)({...o,modules:o.loadableGenerated?.modules})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},140802,e=>{"use strict";e.i(653782);var t=e.i(452797),r=e.i(907358),n=e.i(807464),o=e.i(134174),i=e.i(736986),a=e.i(370338),s=e.i(250438),l=r,u=e.i(753942);function c(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class d extends l.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if((0,s.isHTMLElement)(t)&&e.isPresent&&!this.props.isPresent&&!1!==this.props.pop){let e=t.offsetParent,r=(0,s.isHTMLElement)(e)&&e.offsetWidth||0,n=(0,s.isHTMLElement)(e)&&e.offsetHeight||0,o=getComputedStyle(t),i=this.props.sizeRef.current;i.height=parseFloat(o.height),i.width=parseFloat(o.width),i.top=t.offsetTop,i.left=t.offsetLeft,i.right=r-i.width-i.left,i.bottom=n-i.height-i.top}return null}componentDidUpdate(){}render(){return this.props.children}}function f({children:e,isPresent:n,anchorX:o,anchorY:i,root:a,pop:s}){let f=(0,l.useId)(),h=(0,l.useRef)(null),p=(0,l.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:m}=(0,l.useContext)(u.MotionConfigContext),x=function(...e){return r.useCallback(function(...e){return t=>{let r=!1,n=e.map(e=>{let n=c(e,t);return r||"function"!=typeof n||(r=!0),n});if(r)return()=>{for(let t=0;t{let{width:e,height:t,top:r,left:l,right:u,bottom:c}=p.current;if(n||!1===s||!h.current||!e||!t)return;let d="left"===o?`left: ${l}`:`right: ${u}`,x="bottom"===i?`bottom: ${c}`:`top: ${r}`;h.current.dataset.motionPopId=f;let g=document.createElement("style");m&&(g.nonce=m);let b=a??document.head;return b.appendChild(g),g.sheet&&g.sheet.insertRule(` [data-motion-pop-id="${f}"] { position: absolute !important; @@ -7,6 +7,6 @@ ${d}px !important; ${x}px !important; } - `),()=>{h.current?.removeAttribute("data-motion-pop-id"),b.contains(g)&&b.removeChild(g)}},[n]),(0,t.jsx)(d,{isPresent:n,childRef:h,sizeRef:p,pop:s,children:!1===s?e:l.cloneElement(e,{ref:x})})}let h=({children:e,initial:n,isPresent:i,onExitComplete:s,custom:l,presenceAffectsLayout:u,mode:c,anchorX:d,anchorY:h,root:m})=>{let x=(0,o.useConstant)(p),g=(0,r.useId)(),b=!0,y=(0,r.useMemo)(()=>(b=!1,{id:g,initial:n,isPresent:i,custom:l,onExitComplete:e=>{for(let t of(x.set(e,!0),x.values()))if(!t)return;s&&s()},register:e=>(x.set(e,!1),()=>x.delete(e))}),[i,x,s]);return u&&b&&(y={...y}),(0,r.useMemo)(()=>{x.forEach((e,t)=>x.set(t,!1))},[i]),r.useEffect(()=>{i||x.size||!s||s()},[i]),e=(0,t.jsx)(f,{pop:"popLayout"===c,isPresent:i,anchorX:d,anchorY:h,root:m,children:e}),(0,t.jsx)(a.PresenceContext.Provider,{value:y,children:e})};function p(){return new Map}var m=e.i(718015);let x=e=>e.key||"";function g(e){let t=[];return r.Children.forEach(e,e=>{(0,r.isValidElement)(e)&&t.push(e)}),t}let b=({children:e,custom:a,initial:s=!0,onExitComplete:l,presenceAffectsLayout:u=!0,mode:c="sync",propagate:d=!1,anchorX:f="left",anchorY:p="top",root:b})=>{let[y,v]=(0,m.usePresence)(d),j=(0,r.useMemo)(()=>g(e),[e]),w=d&&!y?[]:j.map(x),P=(0,r.useRef)(!0),E=(0,r.useRef)(j),k=(0,o.useConstant)(()=>new Map),N=(0,r.useRef)(new Set),[O,C]=(0,r.useState)(j),[$,_]=(0,r.useState)(j);(0,i.useIsomorphicLayoutEffect)(()=>{P.current=!1,E.current=j;for(let e=0;e<$.length;e++){let t=x($[e]);w.includes(t)?(k.delete(t),N.current.delete(t)):!0!==k.get(t)&&k.set(t,!1)}},[$,w.length,w.join("-")]);let S=[];if(j!==O){let e=[...j];for(let t=0;t<$.length;t++){let r=$[t],n=x(r);w.includes(n)||(e.splice(t,0,r),S.push(r))}return"wait"===c&&S.length&&(e=S),_(g(e)),C(j),null}let{forceRender:L}=(0,r.useContext)(n.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:$.map(e=>{let r=x(e),n=(!d||!!y)&&(j===$||w.includes(r));return(0,t.jsx)(h,{isPresent:n,initial:(!P.current||!!s)&&void 0,custom:a,presenceAffectsLayout:u,mode:c,root:b,onExitComplete:n?void 0:()=>{if(N.current.has(r)||!k.has(r))return;N.current.add(r),k.set(r,!0);let e=!0;k.forEach(t=>{t||(e=!1)}),e&&(L?.(),_(E.current),d&&v?.(),l&&l())},anchorX:f,anchorY:p,children:e},r)})})};e.s(["AnimatePresence",()=>b],140802)},287564,e=>{"use strict";var t=e.i(452797),r=e.i(184868),n=e.i(976819);function o({mobile:e=!1,isSolidMode:o=!1}){let i=(0,n.usePathname)()||"/",a=i.startsWith("/en")?"en":"de",s=e=>{let t=i.replace(/^\/(en|de)/,"");return`/${e}${""===t?"":t}`},l=[{code:"de",label:"DE",fullLabel:"Deutsch",flag:"🇩🇪"},{code:"en",label:"EN",fullLabel:"English",flag:"🇬🇧"}];return e?(0,t.jsx)("div",{className:"flex flex-col gap-3",children:l.map(e=>(0,t.jsxs)(r.default,{href:s(e.code),className:`flex items-center gap-3 px-5 py-3 rounded-xl text-lg font-semibold transition-all duration-300 ${a===e.code?"bg-primary/10 text-primary border border-primary/20":"text-text-secondary hover:bg-neutral-50 border border-transparent"}`,children:[(0,t.jsx)("span",{className:"text-2xl","aria-hidden":"true",children:e.flag}),(0,t.jsx)("span",{children:e.fullLabel}),a===e.code&&(0,t.jsx)("svg",{className:"w-5 h-5 ml-auto text-primary",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("polyline",{points:"20 6 9 17 4 12"})})]},e.code))}):(0,t.jsx)("div",{className:`flex items-center rounded-full p-0.5 border ${o?"bg-neutral-100 border-neutral-200":"bg-white/10 backdrop-blur-sm border-white/10"} transition-colors duration-300`,children:l.map(e=>{let n=a===e.code,i="";return i=n?"bg-white text-primary shadow-sm":o?"text-text-secondary hover:text-primary":"text-white/70 hover:text-white",(0,t.jsxs)(r.default,{href:s(e.code),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs font-bold uppercase tracking-wider transition-all duration-300 ${i}`,"aria-label":`Switch to ${e.fullLabel}`,children:[(0,t.jsx)("span",{className:"text-sm","aria-hidden":"true",children:e.flag}),(0,t.jsx)("span",{children:e.label})]},e.code)})})}e.s(["LanguageSwitcher",()=>o])},993983,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(184868),o=e.i(663067),i=e.i(976819),a=e.i(112086),s=e.i(140802),l=e.i(287564),u=e.i(676525);function c({navLinks:e}){let[c,d]=r.useState(!1),[f,h]=r.useState(!1),[p,m]=r.useState(!1),x=(0,i.usePathname)()||"/",g=x.startsWith("/en")?"en":"de";r.useEffect(()=>{let e=()=>{d(window.scrollY>20)};window.addEventListener("scroll",e);let t=()=>{m("true"===document.body.getAttribute("data-force-solid-header"))};t();let r=new MutationObserver(t);return r.observe(document.body,{attributes:!0,attributeFilter:["data-force-solid-header"]}),t(),()=>{window.removeEventListener("scroll",e),r.disconnect()}},[x]),r.useEffect(()=>{h(!1)},[x]);let b=c||p;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("header",{className:`fixed top-0 left-0 right-0 z-50 transition-all duration-300 ease-in-out ${b?"bg-neutral-light/90 backdrop-blur-md shadow-sm py-4":"bg-transparent py-6"}`,children:(0,t.jsxs)("div",{className:"container flex items-center justify-between",children:[(0,t.jsx)(n.default,{href:`/${g}`,className:"relative flex items-center h-12 w-48 z-50",children:(0,t.jsx)(o.default,{src:b||f?"/assets/logo.png":"/assets/logo-white.png",alt:"E-TIB Gruppe",fill:!0,className:"object-contain object-left",priority:!0,sizes:"192px"})}),(0,t.jsxs)("nav",{className:"hidden md:flex items-center gap-10",children:[e&&e.length>0&&e.map(e=>{let r=e.url.startsWith("/")&&!e.url.match(/^\/(en|de)/)?`/${g}${e.url}`:e.url;return(0,t.jsx)(n.default,{href:r,className:`font-semibold text-sm uppercase tracking-widest transition-all duration-300 ${b?"text-text-primary hover:text-primary":"text-neutral-light hover:text-primary-light"}`,children:e.label},e.url)}),(0,t.jsx)("div",{className:`h-4 w-px mx-2 transition-colors duration-300 ${b?"bg-neutral-300":"bg-white/20"}`}),(0,t.jsx)(l.LanguageSwitcher,{isSolidMode:b}),(0,t.jsx)(u.Button,{href:`/${g}/${"de"===g?"kontakt":"contact"}`,variant:"primary",className:"px-8",children:"de"===g?"Kontakt":"Contact"})]}),(0,t.jsx)("button",{className:"md:hidden z-50 text-primary p-2",onClick:()=>h(!f),"aria-label":"Toggle menu",children:(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:b||f?"currentColor":"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:f?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,t.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("line",{x1:"3",x2:"21",y1:"6",y2:"6"}),(0,t.jsx)("line",{x1:"3",x2:"21",y1:"12",y2:"12"}),(0,t.jsx)("line",{x1:"3",x2:"21",y1:"18",y2:"18"})]})})})]})}),(0,t.jsx)(s.AnimatePresence,{children:f&&(0,t.jsx)(a.motion.div,{initial:{opacity:0,y:-20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2},className:"fixed inset-0 z-40 bg-white md:hidden pt-32 pb-8 px-6 overflow-y-auto",children:(0,t.jsxs)("nav",{className:"flex flex-col gap-6",children:[e&&e.length>0&&e.map(e=>{let r=e.url.startsWith("/")&&!e.url.match(/^\/(en|de)/)?`/${g}${e.url}`:e.url;return(0,t.jsx)(n.default,{href:r,className:"text-2xl font-heading font-bold text-neutral-dark border-b border-neutral-100 pb-4",children:e.label},e.url)}),(0,t.jsx)(n.default,{href:`/${g}/${"de"===g?"kontakt":"contact"}`,className:"text-2xl font-heading font-bold text-primary border-b border-neutral-100 pb-4",children:"de"===g?"Kontakt":"Contact"}),(0,t.jsxs)("div",{className:"mt-8 pt-6",children:[(0,t.jsx)("p",{className:"text-text-secondary text-sm font-bold uppercase tracking-widest mb-4",children:"Sprache wählen"}),(0,t.jsx)(l.LanguageSwitcher,{mobile:!0})]})]})})})]})}e.s(["Header",()=>c])},814508,e=>{"use strict";var t=e.i(452797),r=e.i(190422);function n(){let e=(0,r.useTranslations)("Navigation");return(0,t.jsx)("a",{href:"#main-content",className:"fixed -top-full left-4 z-[100] px-6 py-3 bg-white text-primary-dark font-bold rounded-lg shadow-xl outline-none ring-2 ring-accent transition-all duration-300 focus:top-4",children:e("skipToContent")})}e.s(["default",()=>n])},531518,e=>{"use strict";var t=e.i(653782),r=e.i(452797),n=e.i(902498),o=e.i(907358);let i=(0,n.default)(()=>e.A(348814),{loadableGenerated:{modules:[565071]},ssr:!1}),a=(0,n.default)(()=>e.A(740018),{loadableGenerated:{modules:[248785]},ssr:!1}),s=(0,n.default)(()=>e.A(225514),{loadableGenerated:{modules:[950648]},ssr:!1});function l(){let[e,n]=(0,o.useState)(!1);return((0,o.useEffect)(()=>{if("true"!==t.default.env.NEXT_PUBLIC_CI)if("requestIdleCallback"in window)window.requestIdleCallback(()=>n(!0),{timeout:3e3});else{let e=setTimeout(()=>n(!0),2500);return()=>clearTimeout(e)}},[]),e)?(0,r.jsxs)(o.Suspense,{fallback:null,children:[(0,r.jsx)(i,{}),(0,r.jsx)(a,{}),(0,r.jsx)(s,{})]}):null}e.s(["default",()=>l])},600023,e=>{"use strict";var t=e.i(883647),r=e.i(452797);function n({locale:e,...n}){if(!e)throw Error(void 0);return(0,r.jsx)(t.IntlProvider,{locale:e,...n})}e.s(["default",()=>n])},689647,e=>{"use strict";var t=e.i(452797);let r=(0,e.i(902498).default)(()=>e.A(262386).then(e=>e.FeedbackOverlay),{loadableGenerated:{modules:[566137]},ssr:!1});function n({feedbackEnabled:e}){return e?(0,t.jsx)(r,{}):null}e.s(["default",()=>n])},348814,e=>{e.v(t=>Promise.all(["static/chunks/ad93c165b40135d0.js","static/chunks/0ff158dd58fe47c8.js"].map(t=>e.l(t))).then(()=>t(565071)))},740018,e=>{e.v(t=>Promise.all(["static/chunks/aec2fa7d5c9477d9.js","static/chunks/0ff158dd58fe47c8.js"].map(t=>e.l(t))).then(()=>t(248785)))},225514,e=>{e.v(t=>Promise.all(["static/chunks/092693b3be4c94df.js","static/chunks/0ff158dd58fe47c8.js"].map(t=>e.l(t))).then(()=>t(950648)))},262386,e=>{e.v(t=>Promise.all(["static/chunks/9c4a690cd48e1298.js","static/chunks/c9e4534297dc4d54.js"].map(t=>e.l(t))).then(()=>t(566137)))}]); + `),()=>{h.current?.removeAttribute("data-motion-pop-id"),b.contains(g)&&b.removeChild(g)}},[n]),(0,t.jsx)(d,{isPresent:n,childRef:h,sizeRef:p,pop:s,children:!1===s?e:l.cloneElement(e,{ref:x})})}let h=({children:e,initial:n,isPresent:i,onExitComplete:s,custom:l,presenceAffectsLayout:u,mode:c,anchorX:d,anchorY:h,root:m})=>{let x=(0,o.useConstant)(p),g=(0,r.useId)(),b=!0,y=(0,r.useMemo)(()=>(b=!1,{id:g,initial:n,isPresent:i,custom:l,onExitComplete:e=>{for(let t of(x.set(e,!0),x.values()))if(!t)return;s&&s()},register:e=>(x.set(e,!1),()=>x.delete(e))}),[i,x,s]);return u&&b&&(y={...y}),(0,r.useMemo)(()=>{x.forEach((e,t)=>x.set(t,!1))},[i]),r.useEffect(()=>{i||x.size||!s||s()},[i]),e=(0,t.jsx)(f,{pop:"popLayout"===c,isPresent:i,anchorX:d,anchorY:h,root:m,children:e}),(0,t.jsx)(a.PresenceContext.Provider,{value:y,children:e})};function p(){return new Map}var m=e.i(718015);let x=e=>e.key||"";function g(e){let t=[];return r.Children.forEach(e,e=>{(0,r.isValidElement)(e)&&t.push(e)}),t}let b=({children:e,custom:a,initial:s=!0,onExitComplete:l,presenceAffectsLayout:u=!0,mode:c="sync",propagate:d=!1,anchorX:f="left",anchorY:p="top",root:b})=>{let[y,v]=(0,m.usePresence)(d),j=(0,r.useMemo)(()=>g(e),[e]),w=d&&!y?[]:j.map(x),P=(0,r.useRef)(!0),E=(0,r.useRef)(j),k=(0,o.useConstant)(()=>new Map),N=(0,r.useRef)(new Set),[O,C]=(0,r.useState)(j),[$,_]=(0,r.useState)(j);(0,i.useIsomorphicLayoutEffect)(()=>{P.current=!1,E.current=j;for(let e=0;e<$.length;e++){let t=x($[e]);w.includes(t)?(k.delete(t),N.current.delete(t)):!0!==k.get(t)&&k.set(t,!1)}},[$,w.length,w.join("-")]);let S=[];if(j!==O){let e=[...j];for(let t=0;t<$.length;t++){let r=$[t],n=x(r);w.includes(n)||(e.splice(t,0,r),S.push(r))}return"wait"===c&&S.length&&(e=S),_(g(e)),C(j),null}let{forceRender:L}=(0,r.useContext)(n.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:$.map(e=>{let r=x(e),n=(!d||!!y)&&(j===$||w.includes(r));return(0,t.jsx)(h,{isPresent:n,initial:(!P.current||!!s)&&void 0,custom:a,presenceAffectsLayout:u,mode:c,root:b,onExitComplete:n?void 0:()=>{if(N.current.has(r)||!k.has(r))return;N.current.add(r),k.set(r,!0);let e=!0;k.forEach(t=>{t||(e=!1)}),e&&(L?.(),_(E.current),d&&v?.(),l&&l())},anchorX:f,anchorY:p,children:e},r)})})};e.s(["AnimatePresence",()=>b],140802)},287564,e=>{"use strict";var t=e.i(452797),r=e.i(184868),n=e.i(976819);function o({mobile:e=!1,isSolidMode:o=!1}){let i=(0,n.usePathname)()||"/",a=i.startsWith("/en")?"en":"de",s=e=>{let t=i.replace(/^\/(en|de)/,"");return`/${e}${""===t?"":t}`},l=[{code:"de",label:"DE",fullLabel:"Deutsch",flag:"🇩🇪"},{code:"en",label:"EN",fullLabel:"English",flag:"🇬🇧"}];return e?(0,t.jsx)("div",{className:"flex flex-col gap-3",children:l.map(e=>(0,t.jsxs)(r.default,{href:s(e.code),className:`flex items-center gap-3 px-5 py-3 rounded-xl text-lg font-semibold transition-all duration-300 ${a===e.code?"bg-primary/10 text-primary border border-primary/20":"text-text-secondary hover:bg-neutral-50 border border-transparent"}`,children:[(0,t.jsx)("span",{className:"text-2xl","aria-hidden":"true",children:e.flag}),(0,t.jsx)("span",{children:e.fullLabel}),a===e.code&&(0,t.jsx)("svg",{className:"w-5 h-5 ml-auto text-primary",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("polyline",{points:"20 6 9 17 4 12"})})]},e.code))}):(0,t.jsx)("div",{className:`flex items-center rounded-full p-0.5 border ${o?"bg-neutral-100 border-neutral-200":"bg-white/10 backdrop-blur-sm border-white/10"} transition-colors duration-300`,children:l.map(e=>{let n=a===e.code,i="";return i=n?"bg-white text-primary shadow-sm":o?"text-text-secondary hover:text-primary":"text-white/70 hover:text-white",(0,t.jsxs)(r.default,{href:s(e.code),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs font-bold uppercase tracking-wider transition-all duration-300 ${i}`,"aria-label":`Switch to ${e.fullLabel}`,children:[(0,t.jsx)("span",{className:"text-sm","aria-hidden":"true",children:e.flag}),(0,t.jsx)("span",{children:e.label})]},e.code)})})}e.s(["LanguageSwitcher",()=>o])},993983,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(184868),o=e.i(663067),i=e.i(976819),a=e.i(112086),s=e.i(140802),l=e.i(287564),u=e.i(676525);function c({navLinks:e}){let[c,d]=r.useState(!1),[f,h]=r.useState(!1),[p,m]=r.useState(!1),x=(0,i.usePathname)()||"/",g=x.startsWith("/en")?"en":"de";r.useEffect(()=>{let e=()=>{d(window.scrollY>20)};window.addEventListener("scroll",e);let t=()=>{m("true"===document.body.getAttribute("data-force-solid-header"))};t();let r=new MutationObserver(t);return r.observe(document.body,{attributes:!0,attributeFilter:["data-force-solid-header"]}),t(),()=>{window.removeEventListener("scroll",e),r.disconnect()}},[x]),r.useEffect(()=>{h(!1)},[x]);let b=c||p;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("header",{className:`fixed top-0 left-0 right-0 z-50 transition-all duration-300 ease-in-out ${b?"bg-neutral-light/90 backdrop-blur-md shadow-sm py-4":"bg-transparent py-6"}`,children:(0,t.jsxs)("div",{className:"container flex items-center justify-between",children:[(0,t.jsx)(n.default,{href:`/${g}`,className:"relative flex items-center h-12 w-48 z-50",children:(0,t.jsx)(o.default,{src:b||f?"/assets/logo.png":"/assets/logo-white.png",alt:"E-TIB Gruppe",fill:!0,className:"object-contain object-left",priority:!0,sizes:"192px"})}),(0,t.jsxs)("nav",{className:"hidden md:flex items-center gap-10",children:[e&&e.length>0&&e.map(e=>{let r=e.url.startsWith("/")&&!e.url.match(/^\/(en|de)/)?`/${g}${e.url}`:e.url;return(0,t.jsx)(n.default,{href:r,className:`font-semibold text-sm uppercase tracking-widest transition-all duration-300 ${b?"text-text-primary hover:text-primary":"text-neutral-light hover:text-primary-light"}`,children:e.label},e.url)}),(0,t.jsx)("div",{className:`h-4 w-px mx-2 transition-colors duration-300 ${b?"bg-neutral-300":"bg-white/20"}`}),(0,t.jsx)(l.LanguageSwitcher,{isSolidMode:b}),(0,t.jsx)(u.Button,{href:`/${g}/${"de"===g?"kontakt":"contact"}`,variant:"primary",className:"px-8",children:"de"===g?"Kontakt":"Contact"})]}),(0,t.jsx)("button",{className:"md:hidden z-50 text-primary p-2",onClick:()=>h(!f),"aria-label":"Toggle menu",children:(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:b||f?"currentColor":"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:f?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,t.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("line",{x1:"3",x2:"21",y1:"6",y2:"6"}),(0,t.jsx)("line",{x1:"3",x2:"21",y1:"12",y2:"12"}),(0,t.jsx)("line",{x1:"3",x2:"21",y1:"18",y2:"18"})]})})})]})}),(0,t.jsx)(s.AnimatePresence,{children:f&&(0,t.jsx)(a.motion.div,{initial:{opacity:0,y:-20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2},className:"fixed inset-0 z-40 bg-white md:hidden pt-32 pb-8 px-6 overflow-y-auto",children:(0,t.jsxs)("nav",{className:"flex flex-col gap-6",children:[e&&e.length>0&&e.map(e=>{let r=e.url.startsWith("/")&&!e.url.match(/^\/(en|de)/)?`/${g}${e.url}`:e.url;return(0,t.jsx)(n.default,{href:r,className:"text-2xl font-heading font-bold text-neutral-dark border-b border-neutral-100 pb-4",children:e.label},e.url)}),(0,t.jsx)(n.default,{href:`/${g}/${"de"===g?"kontakt":"contact"}`,className:"text-2xl font-heading font-bold text-primary border-b border-neutral-100 pb-4",children:"de"===g?"Kontakt":"Contact"}),(0,t.jsxs)("div",{className:"mt-8 pt-6",children:[(0,t.jsx)("p",{className:"text-text-secondary text-sm font-bold uppercase tracking-widest mb-4",children:"Sprache wählen"}),(0,t.jsx)(l.LanguageSwitcher,{mobile:!0})]})]})})})]})}e.s(["Header",()=>c])},814508,e=>{"use strict";var t=e.i(452797),r=e.i(190422);function n(){let e=(0,r.useTranslations)("Navigation");return(0,t.jsx)("a",{href:"#main-content",className:"fixed -top-full left-4 z-[100] px-6 py-3 bg-white text-primary-dark font-bold rounded-lg shadow-xl outline-none ring-2 ring-accent transition-all duration-300 focus:top-4",children:e("skipToContent")})}e.s(["default",()=>n])},531518,e=>{"use strict";var t=e.i(653782),r=e.i(452797),n=e.i(902498),o=e.i(907358);let i=(0,n.default)(()=>e.A(348814),{loadableGenerated:{modules:[565071]},ssr:!1}),a=(0,n.default)(()=>e.A(740018),{loadableGenerated:{modules:[248785]},ssr:!1}),s=(0,n.default)(()=>e.A(225514),{loadableGenerated:{modules:[950648]},ssr:!1});function l(){let[e,n]=(0,o.useState)(!1);return((0,o.useEffect)(()=>{if("true"!==t.default.env.NEXT_PUBLIC_CI)if("requestIdleCallback"in window)window.requestIdleCallback(()=>n(!0),{timeout:3e3});else{let e=setTimeout(()=>n(!0),2500);return()=>clearTimeout(e)}},[]),e)?(0,r.jsxs)(o.Suspense,{fallback:null,children:[(0,r.jsx)(i,{}),(0,r.jsx)(a,{}),(0,r.jsx)(s,{})]}):null}e.s(["default",()=>l])},600023,e=>{"use strict";var t=e.i(883647),r=e.i(452797);function n({locale:e,...n}){if(!e)throw Error(void 0);return(0,r.jsx)(t.IntlProvider,{locale:e,...n})}e.s(["default",()=>n])},689647,e=>{"use strict";var t=e.i(452797);let r=(0,e.i(902498).default)(()=>e.A(262386).then(e=>e.FeedbackOverlay),{loadableGenerated:{modules:[566137]},ssr:!1});function n({feedbackEnabled:e}){return e?(0,t.jsx)(r,{}):null}e.s(["default",()=>n])},348814,e=>{e.v(t=>Promise.all(["static/chunks/fdf84fd199216566.js","static/chunks/0ff158dd58fe47c8.js"].map(t=>e.l(t))).then(()=>t(565071)))},740018,e=>{e.v(t=>Promise.all(["static/chunks/2f9e45ecb224d02b.js","static/chunks/0ff158dd58fe47c8.js"].map(t=>e.l(t))).then(()=>t(248785)))},225514,e=>{e.v(t=>Promise.all(["static/chunks/fd2d3a68c2dda793.js","static/chunks/0ff158dd58fe47c8.js"].map(t=>e.l(t))).then(()=>t(950648)))},262386,e=>{e.v(t=>Promise.all(["static/chunks/9c4a690cd48e1298.js","static/chunks/c9e4534297dc4d54.js"].map(t=>e.l(t))).then(()=>t(566137)))}]); -//# debugId=66793ba6-301a-4194-cae0-4e2532358fbd \ No newline at end of file +//# debugId=d063168c-9fa7-d981-0aa9-85bf2170da65 \ No newline at end of file diff --git a/.next/static/chunks/96ab9ac4f103512c.js b/.next/static/chunks/8eda4ccbc7682bed.js similarity index 74% rename from .next/static/chunks/96ab9ac4f103512c.js rename to .next/static/chunks/8eda4ccbc7682bed.js index 2bea6cdc3..b3640b53a 100644 --- a/.next/static/chunks/96ab9ac4f103512c.js +++ b/.next/static/chunks/8eda4ccbc7682bed.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="15e184fb-d9cf-4957-591b-85311c81eb07")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(l),o}}function l(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return p},APP_DIR_ALIAS:function(){return X},CACHE_ONE_YEAR:function(){return I},DOT_NEXT_ALIAS:function(){return k},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return N},INSTRUMENTATION_HOOK_FILENAME:function(){return L},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return l},MIDDLEWARE_FILENAME:function(){return O},MIDDLEWARE_LOCATION_REGEXP:function(){return w},NEXT_BODY_SUFFIX:function(){return E},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return y},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return R},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return b},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return T},NEXT_CACHE_TAGS_HEADER:function(){return S},NEXT_CACHE_TAG_MAX_ITEMS:function(){return v},NEXT_CACHE_TAG_MAX_LENGTH:function(){return A},NEXT_DATA_SUFFIX:function(){return _},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return x},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return P},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return D},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return m},PROXY_FILENAME:function(){return C},PROXY_LOCATION_REGEXP:function(){return j},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return $},ROOT_DIR_ALIAS:function(){return M},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return F},RSC_CACHE_WRAPPER_ALIAS:function(){return B},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return U},RSC_MOD_REF_PROXY_ALIAS:function(){return H},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return g},RSC_SUFFIX:function(){return h},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return z},SERVER_PROPS_SSG_CONFLICT:function(){return K},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return V},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return q},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",u="nxtI",l="x-matched-path",d="x-prerender-revalidate",m="x-prerender-revalidate-if-generated",f=".segments",g=".segment.rsc",h=".rsc",p=".action",_=".json",x=".meta",E=".body",S="x-next-cache-tags",R="x-next-revalidated-tags",b="x-next-revalidate-tag-token",P="next-resume",v=128,A=256,T=1024,y="_N_T_",I=31536e3,N=0xfffffffe,O="middleware",w=`(?:src/)?${O}`,C="proxy",j=`(?:src/)?${C}`,L="instrumentation",D="private-next-pages",k="private-dot-next",M="private-next-root-dir",X="private-next-app-dir",H="private-next-rsc-mod-ref-proxy",F="private-next-rsc-action-validate",G="private-next-rsc-server-reference",B="private-next-rsc-cache-wrapper",U="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",$="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",V="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",z="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",K="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",q="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var r=e.i(452797);function n({className:e,children:n,...a}){return(0,r.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...a,children:n})}function a({className:e,children:n,...a}){return(0,r.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...a,children:n})}function i({level:e=2,size:n,variant:a="dark",align:i="left",subtitle:s,children:o,className:c,subtitleClassName:u,badgeStyle:l="industrial"}){let d=`h${e}`,m=n||String(e);return(0,r.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],c),children:[s&&"industrial"===l&&(0,r.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===a?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",u),children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===a?"bg-white":"bg-primary")}),(0,r.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===a?"bg-white":"bg-primary")})]}),(0,r.jsx)("span",{children:s})]}),s&&"simple"===l&&(0,r.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===a?"text-white/80":"text-accent",u),children:s}),(0,r.jsx)(d,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[a]),children:o})]})}function s({className:e,children:n,tag:a="div",...i}){return(0,r.jsx)(a,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:n})}function o({className:e,...n}){return(0,r.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...n})}function c({className:e,...n}){return(0,r.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...n})}function u({className:e,...n}){return(0,r.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...n})}e.s(["Section",()=>n],370476),e.s(["Container",()=>a],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>s],105050),e.s(["Input",()=>o],801206),e.s(["Textarea",()=>c],587778),e.s(["Label",()=>u],9797),e.s([],445774)},224038,e=>{"use strict";var t=e.i(452797);e.i(445774);var r=e.i(111023);function n({variant:e,className:n,color:a="#82ed20"}){return"circle"===e?(0,t.jsx)("svg",{className:(0,r.cn)("absolute pointer-events-none",n),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,t.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:a,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===e?(0,t.jsx)("svg",{className:(0,r.cn)("absolute pointer-events-none",n),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,t.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:a,strokeWidth:"20",fill:"none"})}):null}e.s(["default",()=>n])},309974,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(190422),a=e.i(777616);e.i(445774);var i=e.i(575003),s=e.i(676525),o=e.i(982016),c=e.i(224038);function u({error:e,reset:u}){let l=(0,n.useTranslations)("Error");return(0,r.useEffect)(()=>{if(e?.message?.includes("Failed to find Server Action"))return void window.location.reload();let t=(0,a.getAppServices)();return t.errors.captureException(e),t.logger.error("Application error caught by boundary",{message:e?.message||"Unknown error",stack:e?.stack,digest:e?.digest}),document.body.setAttribute("data-force-solid-header","true"),()=>{document.body.removeAttribute("data-force-solid-header")}},[e]),(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(i.Container,{className:"relative py-32 mt-16 flex flex-col items-center justify-center text-center min-h-[70vh] overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute inset-0 -z-10 opacity-[0.03] pointer-events-none flex items-center justify-center",children:(0,t.jsx)("span",{className:"text-[20rem] font-bold select-none",children:"500"})}),(0,t.jsxs)("div",{className:"relative mb-8",children:[(0,t.jsx)(o.Heading,{level:1,className:"text-6xl md:text-8xl font-bold mb-2 text-saturated",children:"500"}),(0,t.jsx)(c.default,{variant:"underline",className:"w-full h-6 -bottom-2 left-0 text-saturated/40"})]}),(0,t.jsx)(o.Heading,{level:2,className:"text-2xl md:text-3xl font-bold mb-4 text-primary",children:l("title")}),(0,t.jsx)("p",{className:"text-text-secondary mb-10 max-w-md text-lg mx-auto",children:l("description")}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[(0,t.jsx)(s.Button,{onClick:()=>u(),variant:"saturated",size:"lg",children:l("tryAgain")}),(0,t.jsx)(s.Button,{href:"/",variant:"outline",size:"lg",children:l("goHome")})]}),(0,t.jsx)("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-px h-24 bg-gradient-to-b from-saturated/50 to-transparent"})]})})}e.s(["default",()=>u])},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="add49218-d29b-e4e5-b456-410ddf2020d1")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return u},throwForSearchParamsAccessInUseCache:function(){return c},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function c(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function u(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return u}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var c=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class u{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(l),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(l),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(l),o}}function l(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(c.pathname,r)&&(c.pathname=(0,a.removePathPrefix)(c.pathname,r),c.basePath=r);let u=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],u="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(c.pathname=u)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,s.locales);c.locale=e.detectedLocale,c.pathname=e.pathname??c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(u):(0,n.normalizeLocalePath)(u,s.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return p},APP_DIR_ALIAS:function(){return X},CACHE_ONE_YEAR:function(){return I},DOT_NEXT_ALIAS:function(){return k},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return N},INSTRUMENTATION_HOOK_FILENAME:function(){return L},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return l},MIDDLEWARE_FILENAME:function(){return O},MIDDLEWARE_LOCATION_REGEXP:function(){return w},NEXT_BODY_SUFFIX:function(){return E},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return y},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return b},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return R},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return T},NEXT_CACHE_TAGS_HEADER:function(){return S},NEXT_CACHE_TAG_MAX_ITEMS:function(){return v},NEXT_CACHE_TAG_MAX_LENGTH:function(){return A},NEXT_DATA_SUFFIX:function(){return _},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return u},NEXT_META_SUFFIX:function(){return x},NEXT_QUERY_PARAM_PREFIX:function(){return c},NEXT_RESUME_HEADER:function(){return P},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return D},PRERENDER_REVALIDATE_HEADER:function(){return d},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return m},PROXY_FILENAME:function(){return C},PROXY_LOCATION_REGEXP:function(){return j},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return $},ROOT_DIR_ALIAS:function(){return M},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return F},RSC_CACHE_WRAPPER_ALIAS:function(){return B},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return U},RSC_MOD_REF_PROXY_ALIAS:function(){return H},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return g},RSC_SUFFIX:function(){return h},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return z},SERVER_PROPS_SSG_CONFLICT:function(){return K},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return V},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return q},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return ec},WEBPACK_RESOURCE_QUERIES:function(){return eu},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",c="nxtP",u="nxtI",l="x-matched-path",d="x-prerender-revalidate",m="x-prerender-revalidate-if-generated",f=".segments",g=".segment.rsc",h=".rsc",p=".action",_=".json",x=".meta",E=".body",S="x-next-cache-tags",b="x-next-revalidated-tags",R="x-next-revalidate-tag-token",P="next-resume",v=128,A=256,T=1024,y="_N_T_",I=31536e3,N=0xfffffffe,O="middleware",w=`(?:src/)?${O}`,C="proxy",j=`(?:src/)?${C}`,L="instrumentation",D="private-next-pages",k="private-dot-next",M="private-next-root-dir",X="private-next-app-dir",H="private-next-rsc-mod-ref-proxy",F="private-next-rsc-action-validate",G="private-next-rsc-server-reference",B="private-next-rsc-cache-wrapper",U="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",$="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",V="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",z="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",K="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",q="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},ec={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},eu={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var r=e.i(452797);function n({className:e,children:n,...a}){return(0,r.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...a,children:n})}function a({className:e,children:n,...a}){return(0,r.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...a,children:n})}function i({level:e=2,size:n,variant:a="dark",align:i="left",subtitle:s,children:o,className:c,subtitleClassName:u,badgeStyle:l="industrial"}){let d=`h${e}`,m=n||String(e);return(0,r.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],c),children:[s&&"industrial"===l&&(0,r.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===a?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",u),children:[(0,r.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,r.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===a?"bg-white":"bg-primary")}),(0,r.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===a?"bg-white":"bg-primary")})]}),(0,r.jsx)("span",{children:s})]}),s&&"simple"===l&&(0,r.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===a?"text-white/80":"text-accent",u),children:s}),(0,r.jsx)(d,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-snug",5:"text-base md:text-lg font-bold leading-normal",6:"text-base md:text-lg font-semibold leading-normal"}[m],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[a]),children:o})]})}function s({className:e,children:n,tag:a="div",...i}){return(0,r.jsx)(a,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:n})}function o({className:e,...n}){return(0,r.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...n})}function c({className:e,...n}){return(0,r.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...n})}function u({className:e,...n}){return(0,r.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...n})}e.s(["Section",()=>n],370476),e.s(["Container",()=>a],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>s],105050),e.s(["Input",()=>o],801206),e.s(["Textarea",()=>c],587778),e.s(["Label",()=>u],9797),e.s([],445774)},224038,e=>{"use strict";var t=e.i(452797);e.i(445774);var r=e.i(111023);function n({variant:e,className:n,color:a="#82ed20"}){return"circle"===e?(0,t.jsx)("svg",{className:(0,r.cn)("absolute pointer-events-none",n),"aria-hidden":"true",viewBox:"0 0 800 350",preserveAspectRatio:"none",children:(0,t.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},transform:"matrix(0.9791300296783447,0,0,0.9791300296783447,400,179)",strokeLinejoin:"miter",fillOpacity:"0",strokeMiterlimit:"4",stroke:a,strokeOpacity:"1",strokeWidth:"20",d:" M253,-161 C253,-161 -284.78900146484375,-201.4600067138672 -376,-21 C-469,163 67.62300109863281,174.2100067138672 256,121 C564,34 250.82899475097656,-141.6929931640625 19.10700035095215,-116.93599700927734"})}):"underline"===e?(0,t.jsx)("svg",{className:(0,r.cn)("absolute pointer-events-none",n),"aria-hidden":"true",viewBox:"-400 -55 730 60",preserveAspectRatio:"none",children:(0,t.jsx)("path",{className:"animate-draw-stroke",pathLength:"1",style:{strokeDasharray:1,strokeDashoffset:1,animation:"draw-stroke 1.8s ease-in-out 0.5s forwards"},d:"m -383.25 -6 c 55.25 -22 130.75 -33.5 293.25 -38 c 54.5 -0.5 195 -2.5 401 15",stroke:a,strokeWidth:"20",fill:"none"})}):null}e.s(["default",()=>n])},309974,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(190422),a=e.i(777616);e.i(445774);var i=e.i(575003),s=e.i(676525),o=e.i(982016),c=e.i(224038);function u({error:e,reset:u}){let l=(0,n.useTranslations)("Error");return(0,r.useEffect)(()=>{if(e?.message?.includes("Failed to find Server Action"))return void window.location.reload();let t=(0,a.getAppServices)();return t.errors.captureException(e),t.logger.error("Application error caught by boundary",{message:e?.message||"Unknown error",stack:e?.stack,digest:e?.digest}),document.body.setAttribute("data-force-solid-header","true"),()=>{document.body.removeAttribute("data-force-solid-header")}},[e]),(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(i.Container,{className:"relative py-32 mt-16 flex flex-col items-center justify-center text-center min-h-[70vh] overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute inset-0 -z-10 opacity-[0.03] pointer-events-none flex items-center justify-center",children:(0,t.jsx)("span",{className:"text-[20rem] font-bold select-none",children:"500"})}),(0,t.jsxs)("div",{className:"relative mb-8",children:[(0,t.jsx)(o.Heading,{level:1,className:"text-6xl md:text-8xl font-bold mb-2 text-saturated",children:"500"}),(0,t.jsx)(c.default,{variant:"underline",className:"w-full h-6 -bottom-2 left-0 text-saturated/40"})]}),(0,t.jsx)(o.Heading,{level:2,className:"text-2xl md:text-3xl font-bold mb-4 text-primary",children:l("title")}),(0,t.jsx)("p",{className:"text-text-secondary mb-10 max-w-md text-lg mx-auto",children:l("description")}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[(0,t.jsx)(s.Button,{onClick:()=>u(),variant:"saturated",size:"lg",children:l("tryAgain")}),(0,t.jsx)(s.Button,{href:"/",variant:"outline",size:"lg",children:l("goHome")})]}),(0,t.jsx)("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-px h-24 bg-gradient-to-b from-saturated/50 to-transparent"})]})})}e.s(["default",()=>u])},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); -//# debugId=15e184fb-d9cf-4957-591b-85311c81eb07 \ No newline at end of file +//# debugId=add49218-d29b-e4e5-b456-410ddf2020d1 \ No newline at end of file diff --git a/.next/static/chunks/a551d00bdf29b7b5.js b/.next/static/chunks/a551d00bdf29b7b5.js deleted file mode 100644 index 7e7d6e397..000000000 --- a/.next/static/chunks/a551d00bdf29b7b5.js +++ /dev/null @@ -1,4 +0,0 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="f6f37750-285d-740d-e9ad-acc60bf82ecb")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,445774,370476,575003,982016,105050,801206,587778,9797,e=>{"use strict";var t=e.i(111023);e.i(676525);var n=e.i(452797);function l({className:e,children:l,...r}){return(0,n.jsx)("section",{className:(0,t.cn)("py-16 md:py-28 lg:py-36 overflow-hidden content-visibility-auto",e),...r,children:l})}function r({className:e,children:l,...r}){return(0,n.jsx)("div",{className:(0,t.cn)("container mx-auto px-4 md:px-12 lg:px-16 max-w-7xl",e),...r,children:l})}function i({level:e=2,size:l,variant:r="dark",align:i="left",subtitle:a,children:s,className:d,subtitleClassName:o,badgeStyle:x="industrial"}){let c=`h${e}`,u=l||String(e);return(0,n.jsxs)("div",{className:(0,t.cn)("mb-6 md:mb-8",{left:"text-left",center:"text-center mx-auto",right:"text-right"}[i],d),children:[a&&"industrial"===x&&(0,n.jsxs)("span",{className:(0,t.cn)("inline-flex items-center space-x-2 px-3 py-1.5 rounded-full mb-6 border shadow-sm text-xs font-bold uppercase tracking-widest","white"===r?"bg-white/10 text-white border-white/20":"bg-primary/5 text-primary border-primary/20",o),children:[(0,n.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,n.jsx)("span",{className:(0,t.cn)("animate-ping absolute inline-flex h-full w-full rounded-full opacity-75","white"===r?"bg-white":"bg-primary")}),(0,n.jsx)("span",{className:(0,t.cn)("relative inline-flex rounded-full h-2 w-2","white"===r?"bg-white":"bg-primary")})]}),(0,n.jsx)("span",{children:a})]}),a&&"simple"===x&&(0,n.jsx)("span",{className:(0,t.cn)("inline-block font-bold tracking-widest uppercase text-xs md:text-sm mb-3 md:mb-4 animate-fade-in","white"===r?"text-white/80":"text-accent",o),children:a}),(0,n.jsx)(c,{className:(0,t.cn)({hero:"font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]",section:"font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]",subsection:"font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]",card:"text-xl md:text-2xl font-bold leading-snug",small:"text-lg font-semibold leading-snug",1:"text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight",2:"text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight",3:"text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight",4:"text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]",5:"text-base md:text-lg font-bold leading-[1.3]",6:"text-base md:text-lg font-semibold leading-[1.4]"}[u],{primary:"text-primary",neutral:"text-text-primary",white:"text-white",dark:"text-neutral-dark"}[r]),children:s})]})}function a({className:e,children:l,tag:r="div",...i}){return(0,n.jsx)(r,{className:(0,t.cn)("premium-card overflow-hidden",e),...i,children:l})}function s({className:e,...l}){return(0,n.jsx)("input",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg",e),...l})}function d({className:e,...l}){return(0,n.jsx)("textarea",{className:(0,t.cn)("w-full px-4 md:px-6 py-2.5 md:py-4 bg-neutral-light/50 border border-neutral-dark/10 rounded-xl md:rounded-2xl focus:outline-none focus:ring-2 focus:ring-accent/20 focus:border-accent focus:bg-white transition-all duration-300 placeholder:text-neutral-dark/40 text-sm md:text-lg resize-none",e),...l})}function o({className:e,...l}){return(0,n.jsx)("label",{className:(0,t.cn)("text-[10px] md:text-xs font-extrabold text-primary uppercase tracking-widest",e),...l})}e.s(["Section",()=>l],370476),e.s(["Container",()=>r],575003),e.s(["Heading",()=>i],982016),e.s(["Card",()=>a],105050),e.s(["Input",()=>s],801206),e.s(["Textarea",()=>d],587778),e.s(["Label",()=>o],9797),e.s([],445774)},759095,e=>{"use strict";var t=e.i(452797),n=e.i(907358);e.i(445774);var l=e.i(111023);function r({children:e,className:r,threshold:i=.1,delay:a=0}){let[s,d]=(0,n.useState)(!1),o=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(d(!0),e.unobserve(t.target))},{threshold:i}),t=o.current;return t&&e.observe(t),()=>{t&&e.unobserve(t)}},[i]),(0,t.jsx)("div",{ref:o,className:(0,l.cn)("reveal-on-scroll",s&&"is-visible",r),style:{transitionDelay:`${a}ms`},children:e})}e.s(["default",()=>r])},783488,e=>{"use strict";var t=e.i(907358),n=e.i(976819);function l({currentPage:e,totalPages:l,locale:r}){let i=(0,n.useRouter)();return(0,t.useEffect)(()=>{let t=t=>{document.activeElement?.tagName!=="INPUT"&&document.activeElement?.tagName!=="TEXTAREA"&&document.activeElement?.tagName!=="SELECT"&&("ArrowLeft"===t.key&&e>1?i.push(`/${r}/blog?page=${e-1}`):"ArrowRight"===t.key&&ewindow.removeEventListener("keydown",t)},[e,l,r,i]),null}e.s(["BlogPaginationKeyboardObserver",()=>l])}]); - -//# debugId=f6f37750-285d-740d-e9ad-acc60bf82ecb \ No newline at end of file diff --git a/.next/static/chunks/bead93b8f9ff3f6c.css b/.next/static/chunks/bead93b8f9ff3f6c.css deleted file mode 100644 index deed695d4..000000000 --- a/.next/static/chunks/bead93b8f9ff3f6c.css +++ /dev/null @@ -1 +0,0 @@ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:var(--font-inter),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-200:oklch(92.5% .084 155.995);--color-green-500:oklch(72.3% .219 149.579);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-teal-400:oklch(77.7% .152 181.912);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-900:oklch(38.1% .176 304.987);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-7xl:80rem;--font-weight-extralight:200;--font-weight-normal:400;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-3xl:1.5rem;--drop-shadow-sm:0 1px 2px #00000026;--drop-shadow-md:0 3px 3px #0000001f;--drop-shadow-lg:0 4px 4px #00000026;--drop-shadow-2xl:0 25px 25px #00000026;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-heading:"Inter",system-ui,sans-serif;--color-primary:#0e7a5c;--color-primary-dark:#084c39;--color-primary-light:#e6f5f0;--color-saturated:#10a379;--color-secondary:#003d82;--color-secondary-light:#0056b3;--color-accent:#82ed20;--color-accent-dark:#14532d;--color-accent-light:#f0f9e6;--color-neutral:#f8f9fa;--color-neutral-light:#fff;--color-neutral-dark:#0a0a0a;--color-neutral-medium:#e5e7eb;--color-text-primary:#111827;--color-text-secondary:#4b5563;--color-text-light:#9ca3af;--color-destructive:#ef4444;--color-destructive-foreground:#fff;--animate-fade-in:fade-in .5s ease-out;--animate-slide-up:slide-up .6s ease-out;--animate-slow-zoom:slow-zoom 20s linear infinite;--animate-slight-fade-in-from-bottom:slight-fade-in-from-bottom .8s cubic-bezier(.16,1,.3,1)forwards;--animate-gradient-x:gradient-x 15s ease infinite;--animate-draw-stroke:draw-stroke 1.8s ease-in-out .5s forwards}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{font-size:87.5%}@media (min-width:768px){html{font-size:100%}}.bg-primary a,.bg-primary-dark a{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-primary a,.bg-primary-dark a{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.bg-primary a,.bg-primary-dark a{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){:is(.bg-primary a,.bg-primary-dark a):hover{color:var(--color-white)}}body{font-size:1rem;line-height:var(--tw-leading,1.7)}@media (min-width:768px){body{font-size:1.125rem;line-height:var(--tw-leading,1.7)}}body{text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.7}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);--tw-font-weight:700;--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);font-weight:700;line-height:1.2}h1{font-size:1.875rem;line-height:var(--tw-leading,1.4);--tw-leading:1.1;line-height:1.1}@media (min-width:768px){h1{font-size:3rem;line-height:var(--tw-leading,1.25)}}@media (min-width:1024px){h1{font-size:3.75rem;line-height:var(--tw-leading,1.2)}}h2{font-size:1.5rem;line-height:var(--tw-leading,1.5);--tw-leading:1.2;line-height:1.2}@media (min-width:768px){h2{font-size:2.25rem;line-height:var(--tw-leading,1.3)}}@media (min-width:1024px){h2{font-size:3rem;line-height:var(--tw-leading,1.25)}}h3{font-size:1.25rem;line-height:var(--tw-leading,1.6);--tw-leading:1.3;line-height:1.3}@media (min-width:768px){h3{font-size:1.5rem;line-height:var(--tw-leading,1.5)}}@media (min-width:1024px){h3{font-size:1.875rem;line-height:var(--tw-leading,1.4)}}h4{font-size:1.125rem;line-height:var(--tw-leading,1.7);--tw-leading:1.4;line-height:1.4}@media (min-width:768px){h4{font-size:1.25rem;line-height:var(--tw-leading,1.6)}}@media (min-width:1024px){h4{font-size:1.5rem;line-height:var(--tw-leading,1.5)}}h5{font-size:1rem;line-height:var(--tw-leading,1.7);--tw-leading:1.5;line-height:1.5}@media (min-width:768px){h5{font-size:1.125rem;line-height:var(--tw-leading,1.7)}}h6{font-size:.875rem;line-height:var(--tw-leading,1.6);--tw-leading:1.6;line-height:1.6}@media (min-width:768px){h6{font-size:1rem;line-height:var(--tw-leading,1.7)}}p{margin-bottom:calc(var(--spacing)*4);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}a{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;text-decoration-line:none;transition-duration:.2s}ul,ol{margin-block:calc(var(--spacing)*4);margin-left:calc(var(--spacing)*6)}li{margin-bottom:calc(var(--spacing)*2);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}small{font-size:.875rem;line-height:var(--tw-leading,1.6)}@media (min-width:768px){small{font-size:1rem;line-height:var(--tw-leading,1.7)}}strong{--tw-font-weight:700;font-weight:700}em{font-style:italic}blockquote{margin-block:calc(var(--spacing)*6);border-left-style:var(--tw-border-style);padding-left:calc(var(--spacing)*6);border-left-width:4px;font-style:italic}code{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-family:var(--font-mono);font-size:.875rem;line-height:var(--tw-leading,1.6);border-radius:.5rem}hr{margin-block:calc(var(--spacing)*8)}}@layer components{.glass-panel{border-style:var(--tw-border-style);border-width:1px;border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.glass-panel{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.glass-panel{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.glass-panel{background-color:color-mix(in oklab,var(--color-white)80%,transparent)}}.glass-panel{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.image-overlay-gradient{inset:calc(var(--spacing)*0);--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:color-mix(in oklab,var(--color-black)90%,transparent);--tw-gradient-via:color-mix(in oklab,var(--color-black)40%,transparent);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));--tw-gradient-to:transparent;position:absolute}.premium-card{border-radius:var(--radius-3xl);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.5s;transition-duration:.5s}@media (hover:hover){.premium-card:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.sticky-narrative-container{gap:calc(var(--spacing)*12);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:1024px){.sticky-narrative-container{gap:calc(var(--spacing)*20);grid-template-columns:repeat(12,minmax(0,1fr))}}.sticky-narrative-sidebar{height:fit-content}@media (min-width:1024px){.sticky-narrative-sidebar{top:calc(var(--spacing)*32);grid-column:span 4/span 4;position:sticky}.sticky-narrative-content{grid-column:span 8/span 8}}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-\[20\%\]{top:-20%}.-top-\[25\%\]{top:-25%}.-top-full{top:-100%}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-6{top:calc(var(--spacing)*6)}.top-8{top:calc(var(--spacing)*8)}.top-32{top:calc(var(--spacing)*32)}.-right-8{right:calc(var(--spacing)*-8)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.right-8{right:calc(var(--spacing)*8)}.-bottom-2{bottom:calc(var(--spacing)*-2)}.-bottom-3{bottom:calc(var(--spacing)*-3)}.-bottom-8{bottom:calc(var(--spacing)*-8)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-6{bottom:calc(var(--spacing)*6)}.-left-4{left:calc(var(--spacing)*-4)}.-left-8{left:calc(var(--spacing)*-8)}.-left-\[20\%\]{left:-20%}.-left-\[25\%\]{left:-25%}.-left-\[25px\]{left:-25px}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing)*4)}.left-6{left:calc(var(--spacing)*6)}.left-8{left:calc(var(--spacing)*8)}.isolate{isolation:isolate}.-z-10{z-index:calc(10*-1)}.z-0{z-index:0}.z-1{z-index:1}.z-7{z-index:7}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[2\]{z-index:2}.z-\[3\]{z-index:3}.z-\[4\]{z-index:4}.z-\[100\]{z-index:100}.z-\[10000\]{z-index:10000}.z-\[99999\]{z-index:99999}.order-1{order:1}.order-2{order:2}.col-span-1{grid-column:span 1/span 1}.container{width:100%}@media (min-width:475px){.container{max-width:475px}}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1400px){.container{max-width:1400px}}@media (min-width:1600px){.container{max-width:1600px}}.fluid-spacing{margin:clamp(.5rem,2vw,2rem);padding:clamp(1rem,3vw,3rem);margin:clamp(1rem,3vw,3rem);padding:clamp(1.5rem,5vw,5rem)}.-m-4{margin:calc(var(--spacing)*-4)}.m-0{margin:calc(var(--spacing)*0)}.m-5{margin:calc(var(--spacing)*5)}.container{margin-inline:auto;padding-inline:1rem}@media (min-width:475px){.container{max-width:475px}}@media (min-width:640px){.container{max-width:640px;padding-inline:1.5rem}}@media (min-width:768px){.container{max-width:768px;padding-inline:2rem}}@media (min-width:1024px){.container{max-width:1024px;padding-inline:2.5rem}}@media (min-width:1280px){.container{max-width:1280px;padding-inline:3rem}}@media (min-width:1400px){.container{max-width:1400px;padding-inline:4rem}}@media (min-width:1600px){.container{max-width:1600px}}.-mx-5{margin-inline:calc(var(--spacing)*-5)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-auto{margin-inline:auto}.my-8{margin-block:calc(var(--spacing)*8)}.my-10{margin-block:calc(var(--spacing)*10)}.my-12{margin-block:calc(var(--spacing)*12)}.my-16{margin-block:calc(var(--spacing)*16)}.my-24{margin-block:calc(var(--spacing)*24)}.\!mt-0{margin-top:calc(var(--spacing)*0)!important}.\!mt-1{margin-top:calc(var(--spacing)*1)!important}.-mt-6{margin-top:calc(var(--spacing)*-6)}.-mt-8{margin-top:calc(var(--spacing)*-8)}.-mt-10{margin-top:calc(var(--spacing)*-10)}.-mt-32{margin-top:calc(var(--spacing)*-32)}.-mt-px{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-2\.5{margin-top:calc(var(--spacing)*2.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-16{margin-top:calc(var(--spacing)*16)}.mt-24{margin-top:calc(var(--spacing)*24)}.mt-\[80px\]{margin-top:80px}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing)*-1)}.-mr-6{margin-right:calc(var(--spacing)*-6)}.-mr-8{margin-right:calc(var(--spacing)*-8)}.-mr-10{margin-right:calc(var(--spacing)*-10)}.-mr-32{margin-right:calc(var(--spacing)*-32)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.\!mb-0{margin-bottom:calc(var(--spacing)*0)!important}.mb-0{margin-bottom:calc(var(--spacing)*0)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.mb-16{margin-bottom:calc(var(--spacing)*16)}.mb-20{margin-bottom:calc(var(--spacing)*20)}.mb-\[-80px\]{margin-bottom:-80px}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-12{margin-left:calc(var(--spacing)*12)}.ml-auto{margin-left:auto}.touch-target{justify-content:center;align-items:center;min-width:48px;min-height:48px;display:inline-flex}.grid-mobile-stacked{gap:calc(var(--spacing)*6);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:768px){.grid-mobile-stacked{gap:calc(var(--spacing)*8);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.grid-mobile-stacked{gap:calc(var(--spacing)*12);grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:767px){.grid-mobile-stacked{flex-direction:column;gap:1rem;display:flex}}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}@media (min-width:1024px){.desktop-hidden{display:none!important}}@media (max-width:1023px){.desktop-only{display:none!important}}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}@media (max-width:767px){.mobile-hidden{display:none!important}}@media (min-width:768px){.mobile-only{display:none!important}}.table{display:table}@media (min-width:768px) and (max-width:1023px){.tablet-hidden{display:none!important}}@media (max-width:767px),(min-width:1024px){.tablet-only{display:none!important}}.aspect-\[3\/4\]{aspect-ratio:3/4}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-\[16\/10\]{aspect-ratio:16/10}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-40{height:calc(var(--spacing)*40)}.h-48{height:calc(var(--spacing)*48)}.h-64{height:calc(var(--spacing)*64)}.h-96{height:calc(var(--spacing)*96)}.h-\[2px\]{height:2px}.h-\[40vh\]{height:40vh}.h-\[50vh\]{height:50vh}.h-\[70vh\]{height:70vh}.h-\[100svh\]{height:100svh}.h-\[140\%\]{height:140%}.h-\[150\%\]{height:150%}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-\[85vh\]{max-height:85vh}.max-h-\[400px\]{max-height:400px}.max-h-\[none\]{max-height:none}.min-h-\[50vh\]{min-height:50vh}.min-h-\[70vh\]{min-height:70vh}.min-h-\[85vh\]{min-height:85vh}.min-h-\[400px\]{min-height:400px}.min-h-\[450px\]{min-height:450px}.min-h-\[500px\]{min-height:500px}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-\[2px\]{width:2px}.w-\[140\%\]{width:140%}.w-\[150\%\]{width:150%}.w-\[320px\]{width:320px}.w-\[350px\]{width:350px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[85\%\]{max-width:85%}.max-w-\[90\%\]{max-width:90%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x:calc(1/2*100%);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-1\/2{--tw-translate-y:calc(1/2*100%);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[101\%\]{--tw-translate-y:101%;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-45{rotate:45deg}.-skew-x-12{--tw-skew-x:skewX(calc(12deg*-1));transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.skew-x-12{--tw-skew-x:skewX(12deg);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.reveal-on-scroll{opacity:0;filter:blur(8px);transition:opacity .6s ease-out,transform .8s cubic-bezier(.16,1,.3,1),filter .8s cubic-bezier(.16,1,.3,1);transform:translateY(20px)}.reveal-on-scroll.is-visible{opacity:1;filter:blur();transform:translateY(0)}@media (prefers-reduced-motion:reduce){.reveal-on-scroll{opacity:1;transition:opacity .3s ease-out;filter:none!important;transform:none!important}}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-draw-stroke{animation:var(--animate-draw-stroke)}.animate-fade-in{animation:var(--animate-fade-in)}.animate-gradient-x{animation:var(--animate-gradient-x)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-slide-up{animation:var(--animate-slide-up)}.animate-slight-fade-in-from-bottom{animation:var(--animate-slight-fade-in-from-bottom)}.animate-slow-zoom{animation:var(--animate-slow-zoom)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-center{scroll-snap-align:center}.list-none{list-style-type:none}.auto-rows-\[220px\]{grid-auto-rows:220px}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.gap-10{gap:calc(var(--spacing)*10)}.gap-12{gap:calc(var(--spacing)*12)}.gap-16{gap:calc(var(--spacing)*16)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-24>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*24)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*24)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{-moz-column-gap:calc(var(--spacing)*6);column-gap:calc(var(--spacing)*6)}.gap-x-8{-moz-column-gap:calc(var(--spacing)*8);column-gap:calc(var(--spacing)*8)}.gap-x-12{-moz-column-gap:calc(var(--spacing)*12);column-gap:calc(var(--spacing)*12)}:where(.-space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*-4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*-4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-0{row-gap:calc(var(--spacing)*0)}.gap-y-3{row-gap:calc(var(--spacing)*3)}.gap-y-6{row-gap:calc(var(--spacing)*6)}.gap-y-12{row-gap:calc(var(--spacing)*12)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-neutral-dark\/5>:not(:last-child)){border-color:#0a0a0a0d}@supports (color:color-mix(in lab, red, red)){:where(.divide-neutral-dark\/5>:not(:last-child)){border-color:color-mix(in oklab,var(--color-neutral-dark)5%,transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.5rem}.rounded-2xl{border-radius:1.5rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2rem\]{border-radius:2rem}.rounded-\[20px\]{border-radius:20px}.rounded-\[31px\]{border-radius:31px}.rounded-\[32px\]{border-radius:32px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.75rem}.rounded-sm{border-radius:.25rem}.rounded-xl{border-radius:1rem}.rounded-tl-none{border-top-left-radius:0}.rounded-r-xl{border-top-right-radius:1rem;border-bottom-right-radius:1rem}.rounded-tr-none{border-top-right-radius:0}.rounded-br-lg{border-bottom-right-radius:.75rem}.rounded-bl-lg{border-bottom-left-radius:.75rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-none{--tw-border-style:none;border-style:none}.border-accent{border-color:var(--color-accent)}.border-accent\/20{border-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.border-accent\/20{border-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.border-accent\/30{border-color:#82ed204d}@supports (color:color-mix(in lab, red, red)){.border-accent\/30{border-color:color-mix(in oklab,var(--color-accent)30%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-200\/50{border-color:#bedbff80}@supports (color:color-mix(in lab, red, red)){.border-blue-200\/50{border-color:color-mix(in oklab,var(--color-blue-200)50%,transparent)}}.border-destructive\/20{border-color:#ef444433}@supports (color:color-mix(in lab, red, red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--color-destructive)20%,transparent)}}.border-green-200{border-color:var(--color-green-200)}.border-neutral-100{border-color:var(--color-neutral-100)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-200\/50{border-color:#e5e5e580}@supports (color:color-mix(in lab, red, red)){.border-neutral-200\/50{border-color:color-mix(in oklab,var(--color-neutral-200)50%,transparent)}}.border-neutral-800{border-color:var(--color-neutral-800)}.border-neutral-dark{border-color:var(--color-neutral-dark)}.border-neutral-dark\/5{border-color:#0a0a0a0d}@supports (color:color-mix(in lab, red, red)){.border-neutral-dark\/5{border-color:color-mix(in oklab,var(--color-neutral-dark)5%,transparent)}}.border-neutral-dark\/10{border-color:#0a0a0a1a}@supports (color:color-mix(in lab, red, red)){.border-neutral-dark\/10{border-color:color-mix(in oklab,var(--color-neutral-dark)10%,transparent)}}.border-neutral-medium{border-color:var(--color-neutral-medium)}.border-orange-500\/50{border-color:#fe6e0080}@supports (color:color-mix(in lab, red, red)){.border-orange-500\/50{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.border-primary{border-color:var(--color-primary)}.border-primary\/10{border-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.border-primary\/10{border-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.border-primary\/20{border-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-primary\/30{border-color:#0e7a5c4d}@supports (color:color-mix(in lab, red, red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-primary\/40{border-color:#0e7a5c66}@supports (color:color-mix(in lab, red, red)){.border-primary\/40{border-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.border-primary\/50{border-color:#0e7a5c80}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.border-saturated\/10{border-color:#10a3791a}@supports (color:color-mix(in lab, red, red)){.border-saturated\/10{border-color:color-mix(in oklab,var(--color-saturated)10%,transparent)}}.border-transparent{border-color:#0000}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white)40%,transparent)}}.border-white\/60{border-color:#fff9}@supports (color:color-mix(in lab, red, red)){.border-white\/60{border-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.border-white\/\[0\.04\]{border-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.04\]{border-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.border-yellow-200{border-color:var(--color-yellow-200)}.bg-\[\#0a192f\]{background-color:#0a192f}.bg-\[\#0a192f\]\/30{background-color:oklab(21.3588% -.0100861 -.047253/.3)}.bg-\[\#000a18\]\/90{background-color:oklab(14.1232% -.0143141 -.0349624/.9)}.bg-accent{background-color:var(--color-accent)}.bg-accent-dark{background-color:var(--color-accent-dark)}.bg-accent-light{background-color:var(--color-accent-light)}.bg-accent\/5{background-color:#82ed200d}@supports (color:color-mix(in lab, red, red)){.bg-accent\/5{background-color:color-mix(in oklab,var(--color-accent)5%,transparent)}}.bg-accent\/10{background-color:#82ed201a}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent)10%,transparent)}}.bg-accent\/20{background-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.bg-accent\/40{background-color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.bg-accent\/40{background-color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-destructive{background-color:var(--color-destructive)}.bg-destructive\/5{background-color:#ef44440d}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab,var(--color-destructive)5%,transparent)}}.bg-destructive\/90{background-color:#ef4444e6}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/90{background-color:color-mix(in oklab,var(--color-destructive)90%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.bg-green-50{background-color:var(--color-green-50)}.bg-neutral{background-color:var(--color-neutral)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-neutral-400{background-color:var(--color-neutral-400)}.bg-neutral-800{background-color:var(--color-neutral-800)}.bg-neutral-dark{background-color:var(--color-neutral-dark)}.bg-neutral-dark\/10{background-color:#0a0a0a1a}@supports (color:color-mix(in lab, red, red)){.bg-neutral-dark\/10{background-color:color-mix(in oklab,var(--color-neutral-dark)10%,transparent)}}.bg-neutral-dark\/20{background-color:#0a0a0a33}@supports (color:color-mix(in lab, red, red)){.bg-neutral-dark\/20{background-color:color-mix(in oklab,var(--color-neutral-dark)20%,transparent)}}.bg-neutral-dark\/40{background-color:#0a0a0a66}@supports (color:color-mix(in lab, red, red)){.bg-neutral-dark\/40{background-color:color-mix(in oklab,var(--color-neutral-dark)40%,transparent)}}.bg-neutral-dark\/80{background-color:#0a0a0acc}@supports (color:color-mix(in lab, red, red)){.bg-neutral-dark\/80{background-color:color-mix(in oklab,var(--color-neutral-dark)80%,transparent)}}.bg-neutral-light{background-color:var(--color-neutral-light)}.bg-neutral-light\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-neutral-light\/50{background-color:color-mix(in oklab,var(--color-neutral-light)50%,transparent)}}.bg-neutral-light\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-neutral-light\/90{background-color:color-mix(in oklab,var(--color-neutral-light)90%,transparent)}}.bg-neutral-medium{background-color:var(--color-neutral-medium)}.bg-primary{background-color:var(--color-primary)}.bg-primary-dark{background-color:var(--color-primary-dark)}.bg-primary-dark\/20{background-color:#084c3933}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/20{background-color:color-mix(in oklab,var(--color-primary-dark)20%,transparent)}}.bg-primary-dark\/40{background-color:#084c3966}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/40{background-color:color-mix(in oklab,var(--color-primary-dark)40%,transparent)}}.bg-primary-dark\/50{background-color:#084c3980}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/50{background-color:color-mix(in oklab,var(--color-primary-dark)50%,transparent)}}.bg-primary-dark\/60{background-color:#084c3999}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/60{background-color:color-mix(in oklab,var(--color-primary-dark)60%,transparent)}}.bg-primary-dark\/90{background-color:#084c39e6}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/90{background-color:color-mix(in oklab,var(--color-primary-dark)90%,transparent)}}.bg-primary-light{background-color:var(--color-primary-light)}.bg-primary-light\/10{background-color:#e6f5f01a}@supports (color:color-mix(in lab, red, red)){.bg-primary-light\/10{background-color:color-mix(in oklab,var(--color-primary-light)10%,transparent)}}.bg-primary\/5{background-color:#0e7a5c0d}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--color-primary)5%,transparent)}}.bg-primary\/10{background-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/20{background-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.bg-primary\/30{background-color:#0e7a5c4d}@supports (color:color-mix(in lab, red, red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.bg-primary\/70{background-color:#0e7a5cb3}@supports (color:color-mix(in lab, red, red)){.bg-primary\/70{background-color:color-mix(in oklab,var(--color-primary)70%,transparent)}}.bg-primary\/80{background-color:#0e7a5ccc}@supports (color:color-mix(in lab, red, red)){.bg-primary\/80{background-color:color-mix(in oklab,var(--color-primary)80%,transparent)}}.bg-primary\/95{background-color:#0e7a5cf2}@supports (color:color-mix(in lab, red, red)){.bg-primary\/95{background-color:color-mix(in oklab,var(--color-primary)95%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-red-500\/\[0\.06\]{background-color:#fb2c360f}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-red-500)6%,transparent)}}.bg-saturated{background-color:var(--color-saturated)}.bg-saturated\/5{background-color:#10a3790d}@supports (color:color-mix(in lab, red, red)){.bg-saturated\/5{background-color:color-mix(in oklab,var(--color-saturated)5%,transparent)}}.bg-saturated\/10{background-color:#10a3791a}@supports (color:color-mix(in lab, red, red)){.bg-saturated\/10{background-color:color-mix(in oklab,var(--color-saturated)10%,transparent)}}.bg-saturated\/30{background-color:#10a3794d}@supports (color:color-mix(in lab, red, red)){.bg-saturated\/30{background-color:color-mix(in oklab,var(--color-saturated)30%,transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-secondary-light{background-color:var(--color-secondary-light)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.bg-white\/30{background-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-white)3%,transparent)}}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.bg-white\/\[0\.05\]{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.05\]{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\/\[0\.08\]{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.08\]{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[radial-gradient\(\#3b82f6_1px\,transparent_1px\)\]{background-image:radial-gradient(#3b82f6 1px,#0000 1px)}.bg-\[radial-gradient\(circle_at_center\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(circle at center,var(--tw-gradient-stops))}.bg-\[radial-gradient\(ellipse_at_center\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(ellipse at center,var(--tw-gradient-stops))}.bg-\[url\(\'\/grid\.svg\'\)\]{background-image:url(/grid.svg)}.from-\[\#0a192f\]\/90{--tw-gradient-from:oklab(21.3588% -.0100861 -.047253/.9);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent{--tw-gradient-from:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent\/5{--tw-gradient-from:#82ed200d}@supports (color:color-mix(in lab, red, red)){.from-accent\/5{--tw-gradient-from:color-mix(in oklab,var(--color-accent)5%,transparent)}}.from-accent\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent\/50{--tw-gradient-from:#82ed2080}@supports (color:color-mix(in lab, red, red)){.from-accent\/50{--tw-gradient-from:color-mix(in oklab,var(--color-accent)50%,transparent)}}.from-accent\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-black\/80{--tw-gradient-from:#000c}@supports (color:color-mix(in lab, red, red)){.from-black\/80{--tw-gradient-from:color-mix(in oklab,var(--color-black)80%,transparent)}}.from-black\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-black\/90{--tw-gradient-from:#000000e6}@supports (color:color-mix(in lab, red, red)){.from-black\/90{--tw-gradient-from:color-mix(in oklab,var(--color-black)90%,transparent)}}.from-black\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-50\/50{--tw-gradient-from:#eff6ff80}@supports (color:color-mix(in lab, red, red)){.from-blue-50\/50{--tw-gradient-from:color-mix(in oklab,var(--color-blue-50)50%,transparent)}}.from-blue-50\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-emerald-500{--tw-gradient-from:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-neutral-dark{--tw-gradient-from:var(--color-neutral-dark);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-neutral-dark\/90{--tw-gradient-from:#0a0a0ae6}@supports (color:color-mix(in lab, red, red)){.from-neutral-dark\/90{--tw-gradient-from:color-mix(in oklab,var(--color-neutral-dark)90%,transparent)}}.from-neutral-dark\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-neutral-dark\/95{--tw-gradient-from:#0a0a0af2}@supports (color:color-mix(in lab, red, red)){.from-neutral-dark\/95{--tw-gradient-from:color-mix(in oklab,var(--color-neutral-dark)95%,transparent)}}.from-neutral-dark\/95{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-dark\/60{--tw-gradient-from:#084c3999}@supports (color:color-mix(in lab, red, red)){.from-primary-dark\/60{--tw-gradient-from:color-mix(in oklab,var(--color-primary-dark)60%,transparent)}}.from-primary-dark\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-dark\/80{--tw-gradient-from:#084c39cc}@supports (color:color-mix(in lab, red, red)){.from-primary-dark\/80{--tw-gradient-from:color-mix(in oklab,var(--color-primary-dark)80%,transparent)}}.from-primary-dark\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/5{--tw-gradient-from:#0e7a5c0d}@supports (color:color-mix(in lab, red, red)){.from-primary\/5{--tw-gradient-from:color-mix(in oklab,var(--color-primary)5%,transparent)}}.from-primary\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/10{--tw-gradient-from:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.from-primary\/10{--tw-gradient-from:color-mix(in oklab,var(--color-primary)10%,transparent)}}.from-primary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/60{--tw-gradient-from:#0e7a5c99}@supports (color:color-mix(in lab, red, red)){.from-primary\/60{--tw-gradient-from:color-mix(in oklab,var(--color-primary)60%,transparent)}}.from-primary\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-saturated\/50{--tw-gradient-from:#10a37980}@supports (color:color-mix(in lab, red, red)){.from-saturated\/50{--tw-gradient-from:color-mix(in oklab,var(--color-saturated)50%,transparent)}}.from-saturated\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/5{--tw-gradient-from:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.from-white\/5{--tw-gradient-from:color-mix(in oklab,var(--color-white)5%,transparent)}}.from-white\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/10{--tw-gradient-from:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.from-white\/10{--tw-gradient-from:color-mix(in oklab,var(--color-white)10%,transparent)}}.from-white\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/20{--tw-gradient-from:#fff3}@supports (color:color-mix(in lab, red, red)){.from-white\/20{--tw-gradient-from:color-mix(in oklab,var(--color-white)20%,transparent)}}.from-white\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/60{--tw-gradient-from:#fff9}@supports (color:color-mix(in lab, red, red)){.from-white\/60{--tw-gradient-from:color-mix(in oklab,var(--color-white)60%,transparent)}}.from-white\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/\[0\.06\]{--tw-gradient-from:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.from-white\/\[0\.06\]{--tw-gradient-from:color-mix(in oklab,var(--color-white)6%,transparent)}}.from-white\/\[0\.06\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-\[\#0a192f\]\/60{--tw-gradient-via:oklab(21.3588% -.0100861 -.047253/.6);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/20{--tw-gradient-via:#0003}@supports (color:color-mix(in lab, red, red)){.via-black\/20{--tw-gradient-via:color-mix(in oklab,var(--color-black)20%,transparent)}}.via-black\/20{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/30{--tw-gradient-via:#0000004d}@supports (color:color-mix(in lab, red, red)){.via-black\/30{--tw-gradient-via:color-mix(in oklab,var(--color-black)30%,transparent)}}.via-black\/30{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-neutral-900{--tw-gradient-via:var(--color-neutral-900);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-neutral-dark\/40{--tw-gradient-via:#0a0a0a66}@supports (color:color-mix(in lab, red, red)){.via-neutral-dark\/40{--tw-gradient-via:color-mix(in oklab,var(--color-neutral-dark)40%,transparent)}}.via-neutral-dark\/40{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-neutral-dark\/60{--tw-gradient-via:#0a0a0a99}@supports (color:color-mix(in lab, red, red)){.via-neutral-dark\/60{--tw-gradient-via:color-mix(in oklab,var(--color-neutral-dark)60%,transparent)}}.via-neutral-dark\/60{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-neutral-dark\/70{--tw-gradient-via:#0a0a0ab3}@supports (color:color-mix(in lab, red, red)){.via-neutral-dark\/70{--tw-gradient-via:color-mix(in oklab,var(--color-neutral-dark)70%,transparent)}}.via-neutral-dark\/70{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary-dark\/40{--tw-gradient-via:#084c3966}@supports (color:color-mix(in lab, red, red)){.via-primary-dark\/40{--tw-gradient-via:color-mix(in oklab,var(--color-primary-dark)40%,transparent)}}.via-primary-dark\/40{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/20{--tw-gradient-via:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.via-primary\/20{--tw-gradient-via:color-mix(in oklab,var(--color-primary)20%,transparent)}}.via-primary\/20{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/40{--tw-gradient-via:#0e7a5c66}@supports (color:color-mix(in lab, red, red)){.via-primary\/40{--tw-gradient-via:color-mix(in oklab,var(--color-primary)40%,transparent)}}.via-primary\/40{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-saturated{--tw-gradient-via:var(--color-saturated);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-teal-400{--tw-gradient-via:var(--color-teal-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/10{--tw-gradient-via:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.via-white\/10{--tw-gradient-via:color-mix(in oklab,var(--color-white)10%,transparent)}}.via-white\/10{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/80{--tw-gradient-via:#fffc}@supports (color:color-mix(in lab, red, red)){.via-white\/80{--tw-gradient-via:color-mix(in oklab,var(--color-white)80%,transparent)}}.via-white\/80{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-\[\#0a192f\]\/40{--tw-gradient-to:oklab(21.3588% -.0100861 -.047253/.4);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent{--tw-gradient-to:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-black\/80{--tw-gradient-to:#000c}@supports (color:color-mix(in lab, red, red)){.to-black\/80{--tw-gradient-to:color-mix(in oklab,var(--color-black)80%,transparent)}}.to-black\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-500{--tw-gradient-to:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-neutral-dark{--tw-gradient-to:var(--color-neutral-dark);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary-dark\/80{--tw-gradient-to:#084c39cc}@supports (color:color-mix(in lab, red, red)){.to-primary-dark\/80{--tw-gradient-to:color-mix(in oklab,var(--color-primary-dark)80%,transparent)}}.to-primary-dark\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary-light{--tw-gradient-to:var(--color-primary-light);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary\/9{--tw-gradient-to:#0e7a5c17}@supports (color:color-mix(in lab, red, red)){.to-primary\/9{--tw-gradient-to:color-mix(in oklab,var(--color-primary)9%,transparent)}}.to-primary\/9{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary\/60{--tw-gradient-to:#0e7a5c99}@supports (color:color-mix(in lab, red, red)){.to-primary\/60{--tw-gradient-to:color-mix(in oklab,var(--color-primary)60%,transparent)}}.to-primary\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-white\/\[0\.02\]{--tw-gradient-to:#ffffff05}@supports (color:color-mix(in lab, red, red)){.to-white\/\[0\.02\]{--tw-gradient-to:color-mix(in oklab,var(--color-white)2%,transparent)}}.to-white\/\[0\.02\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.\[background-size\:40px_40px\]{background-size:40px 40px}.bg-cover{background-size:cover}.bg-repeat{background-repeat:repeat}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.object-left{-o-object-position:left;object-position:left}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-10{padding:calc(var(--spacing)*10)}.p-12{padding:calc(var(--spacing)*12)}.p-35{padding:calc(var(--spacing)*35)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-12{padding-inline:calc(var(--spacing)*12)}.px-\[calc\(\(100vw-min\(100\%\,1280px\)\)\/2\)\]{padding-inline:calc(50vw - min(100%,1280px)/2)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-3\.5{padding-block:calc(var(--spacing)*3.5)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-20{padding-block:calc(var(--spacing)*20)}.py-24{padding-block:calc(var(--spacing)*24)}.py-32{padding-block:calc(var(--spacing)*32)}.safe-area-p{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-top:max(1rem,env(safe-area-inset-top));padding-bottom:max(1rem,env(safe-area-inset-bottom));padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right))}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-10{padding-top:calc(var(--spacing)*10)}.pt-24{padding-top:calc(var(--spacing)*24)}.pt-32{padding-top:calc(var(--spacing)*32)}.pt-40{padding-top:calc(var(--spacing)*40)}.pr-2{padding-right:calc(var(--spacing)*2)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pb-12{padding-bottom:calc(var(--spacing)*12)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pb-24{padding-bottom:calc(var(--spacing)*24)}.pl-5{padding-left:calc(var(--spacing)*5)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-9{padding-left:calc(var(--spacing)*9)}.pl-16{padding-left:calc(var(--spacing)*16)}.pl-20{padding-left:calc(var(--spacing)*20)}.text-center{text-align:center}@media (max-width:767px){.text-center-mobile{text-align:center}.text-end-mobile{text-align:right}}.text-left{text-align:left}.text-right{text-align:right}@media (max-width:767px){.text-start-mobile{text-align:left}}.font-heading{font-family:var(--font-heading)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:1.5rem;line-height:var(--tw-leading,1.5)}.text-3xl{font-size:1.875rem;line-height:var(--tw-leading,1.4)}.text-4xl{font-size:2.25rem;line-height:var(--tw-leading,1.3)}.text-5xl{font-size:3rem;line-height:var(--tw-leading,1.25)}.text-6xl{font-size:3.75rem;line-height:var(--tw-leading,1.2)}.text-base{font-size:1rem;line-height:var(--tw-leading,1.7)}.text-lg{font-size:1.125rem;line-height:var(--tw-leading,1.7)}.text-sm{font-size:.875rem;line-height:var(--tw-leading,1.6)}.text-xl{font-size:1.25rem;line-height:var(--tw-leading,1.6)}.text-xs{font-size:.75rem;line-height:var(--tw-leading,1.6)}.text-\[7px\]{font-size:7px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[20rem\]{font-size:20rem}.leading-\[1\.0\]{--tw-leading:1;line-height:1}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-\[1\.2\]{--tw-leading:1.2;line-height:1.2}.leading-\[1\.3\]{--tw-leading:1.3;line-height:1.3}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[1\.15\]{--tw-leading:1.15;line-height:1.15}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:700;font-weight:700}.font-extrabold{--tw-font-weight:800;font-weight:800}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-medium{--tw-font-weight:500;font-weight:500}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:600;font-weight:600}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.3em\]{--tw-tracking:.3em;letter-spacing:.3em}.tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-accent-dark{color:var(--color-accent-dark)}.text-accent\/30{color:#82ed204d}@supports (color:color-mix(in lab, red, red)){.text-accent\/30{color:color-mix(in oklab,var(--color-accent)30%,transparent)}}.text-accent\/40{color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.text-accent\/40{color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.text-accent\/50{color:#82ed2080}@supports (color:color-mix(in lab, red, red)){.text-accent\/50{color:color-mix(in oklab,var(--color-accent)50%,transparent)}}.text-accent\/60{color:#82ed2099}@supports (color:color-mix(in lab, red, red)){.text-accent\/60{color:color-mix(in oklab,var(--color-accent)60%,transparent)}}.text-accent\/80{color:#82ed20cc}@supports (color:color-mix(in lab, red, red)){.text-accent\/80{color:color-mix(in oklab,var(--color-accent)80%,transparent)}}.text-blue-500{color:var(--color-blue-500)}.text-blue-900{color:var(--color-blue-900)}.text-destructive{color:var(--color-destructive)}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-destructive\/80{color:#ef4444cc}@supports (color:color-mix(in lab, red, red)){.text-destructive\/80{color:color-mix(in oklab,var(--color-destructive)80%,transparent)}}.text-emerald-400{color:var(--color-emerald-400)}.text-green-500{color:var(--color-green-500)}.text-green-900{color:var(--color-green-900)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-dark{color:var(--color-neutral-dark)}.text-neutral-light{color:var(--color-neutral-light)}.text-orange-600{color:var(--color-orange-600)}.text-primary{color:var(--color-primary)}.text-primary-dark{color:var(--color-primary-dark)}.text-primary-light{color:var(--color-primary-light)}.text-primary\/20{color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.text-primary\/20{color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.text-primary\/40{color:#0e7a5c66}@supports (color:color-mix(in lab, red, red)){.text-primary\/40{color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.text-primary\/60{color:#0e7a5c99}@supports (color:color-mix(in lab, red, red)){.text-primary\/60{color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.text-primary\/80{color:#0e7a5ccc}@supports (color:color-mix(in lab, red, red)){.text-primary\/80{color:color-mix(in oklab,var(--color-primary)80%,transparent)}}.text-primary\/90{color:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.text-primary\/90{color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.text-purple-500{color:var(--color-purple-500)}.text-purple-900{color:var(--color-purple-900)}.text-red-300{color:var(--color-red-300)}.text-red-300\/50{color:#ffa3a380}@supports (color:color-mix(in lab, red, red)){.text-red-300\/50{color:color-mix(in oklab,var(--color-red-300)50%,transparent)}}.text-red-300\/60{color:#ffa3a399}@supports (color:color-mix(in lab, red, red)){.text-red-300\/60{color:color-mix(in oklab,var(--color-red-300)60%,transparent)}}.text-saturated{color:var(--color-saturated)}.text-saturated\/40{color:#10a37966}@supports (color:color-mix(in lab, red, red)){.text-saturated\/40{color:color-mix(in oklab,var(--color-saturated)40%,transparent)}}.text-text-light{color:var(--color-text-light)}.text-text-primary{color:var(--color-text-primary)}.text-text-primary\/70{color:#111827b3}@supports (color:color-mix(in lab, red, red)){.text-text-primary\/70{color:color-mix(in oklab,var(--color-text-primary)70%,transparent)}}.text-text-primary\/80{color:#111827cc}@supports (color:color-mix(in lab, red, red)){.text-text-primary\/80{color:color-mix(in oklab,var(--color-text-primary)80%,transparent)}}.text-text-secondary{color:var(--color-text-secondary)}.text-text-secondary\/40{color:#4b556366}@supports (color:color-mix(in lab, red, red)){.text-text-secondary\/40{color:color-mix(in oklab,var(--color-text-secondary)40%,transparent)}}.text-text-secondary\/80{color:#4b5563cc}@supports (color:color-mix(in lab, red, red)){.text-text-secondary\/80{color:color-mix(in oklab,var(--color-text-secondary)80%,transparent)}}.text-white{color:var(--color-white)}.text-white\/15{color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.text-white\/15{color:color-mix(in oklab,var(--color-white)15%,transparent)}}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab, red, red)){.text-white\/20{color:color-mix(in oklab,var(--color-white)20%,transparent)}}.text-white\/25{color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.text-white\/25{color:color-mix(in oklab,var(--color-white)25%,transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.text-white\/30{color:color-mix(in oklab,var(--color-white)30%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab, red, red)){.text-white\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.text-white\/50{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab, red, red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\/90{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-900{color:var(--color-yellow-900)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-2{text-decoration-thickness:2px}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.opacity-\[0\.03\]{opacity:.03}.mix-blend-multiply{mix-blend-mode:multiply}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_20px_-4px_rgba\(130\,237\,32\,0\.1\)\]{--tw-shadow:0 0 20px -4px var(--tw-shadow-color,#82ed201a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_30px_rgba\(17\,124\,97\,0\.15\)\]{--tw-shadow:0 0 30px var(--tw-shadow-color,#117c6126);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_32px_64px_-12px_rgba\(0\,0\,0\,0\.6\)\]{--tw-shadow:0 32px 64px -12px var(--tw-shadow-color,#0009);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_40px_100px_-20px_rgba\(0\,0\,0\,0\.6\)\]{--tw-shadow:0 40px 100px -20px var(--tw-shadow-color,#0009);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -1px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 10px 10px -5px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-accent\/20{--tw-shadow-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.shadow-accent\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent)20%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-destructive\/20{--tw-shadow-color:#ef444433}@supports (color:color-mix(in lab, red, red)){.shadow-destructive\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-destructive)20%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-saturated\/20{--tw-shadow-color:#10a37933}@supports (color:color-mix(in lab, red, red)){.shadow-saturated\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-saturated)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-accent{--tw-ring-color:var(--color-accent)}.ring-white\/20{--tw-ring-color:#fff3}@supports (color:color-mix(in lab, red, red)){.ring-white\/20{--tw-ring-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-2xl{--tw-blur:blur(var(--blur-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-\[80px\]{--tw-blur:blur(80px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-xl{--tw-blur:blur(var(--blur-xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.brightness-0{--tw-brightness:brightness(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.brightness-90{--tw-brightness:brightness(90%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.contrast-125{--tw-contrast:contrast(125%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-2xl{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-\[0_20px_30px_rgba\(0\,0\,0\,0\.4\)\]{--tw-drop-shadow-size:drop-shadow(0 20px 30px var(--tw-drop-shadow-color,#0006));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale-0{--tw-grayscale:grayscale(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale-\[50\%\]{--tw-grayscale:grayscale(50%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.saturate-50{--tw-saturate:saturate(50%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.saturate-110{--tw-saturate:saturate(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-100{transition-delay:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.duration-1000{--tw-duration:1s;transition-duration:1s}.duration-\[1\.5s\]{--tw-duration:1.5s;transition-duration:1.5s}.duration-\[3s\]{--tw-duration:3s;transition-duration:3s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.content-visibility-auto{content-visibility:auto;contain-intrinsic-size:1px 1000px}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{user-select:none}.\[-ms-overflow-style\:none\]{-ms-overflow-style:none}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[text-shadow\:_-2px_-2px_0_\#002b49\,_2px_-2px_0_\#002b49\,_-2px_2px_0_\#002b49\,_2px_2px_0_\#002b49\,_-2px_0_0_\#002b49\,_2px_0_0_\#002b49\,_0_-2px_0_\#002b49\,_0_2px_0_\#002b49\]{text-shadow:-2px -2px #002b49,2px -2px #002b49,-2px 2px #002b49,2px 2px #002b49,-2px 0 #002b49,2px 0 #002b49,0 -2px #002b49,0 2px #002b49}@media (hover:hover){.group-hover\:max-h-32:is(:where(.group):hover *){max-height:calc(var(--spacing)*32)}.group-hover\:w-16:is(:where(.group):hover *){width:calc(var(--spacing)*16)}.group-hover\:w-full:is(:where(.group):hover *){width:100%}.group-hover\:-translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:-translate-x-2:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-0:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-1\/3:is(:where(.group):hover *){--tw-translate-x:calc(1/3*100%);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-2:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:-translate-y-4:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing)*-4);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-y-0:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:scale-12:is(:where(.group):hover *){--tw-scale-x:12%;--tw-scale-y:12%;--tw-scale-z:12%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-100:is(:where(.group):hover *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:rotate-3:is(:where(.group):hover *){rotate:3deg}.group-hover\:rotate-90:is(:where(.group):hover *){rotate:90deg}.group-hover\:border-\[8px\]:is(:where(.group):hover *){border-style:var(--tw-border-style);border-width:8px}.group-hover\:border-\[16px\]:is(:where(.group):hover *){border-style:var(--tw-border-style);border-width:16px}.group-hover\:border-accent:is(:where(.group):hover *){border-color:var(--color-accent)}.group-hover\:border-accent\/40:is(:where(.group):hover *){border-color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.group-hover\:border-accent\/40:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.group-hover\:border-white\/20:is(:where(.group):hover *){border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.group-hover\:border-white\/20:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.group-hover\:bg-accent:is(:where(.group):hover *){background-color:var(--color-accent)}.group-hover\:bg-black\/50:is(:where(.group):hover *){background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-black\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.group-hover\:bg-emerald-600:is(:where(.group):hover *){background-color:var(--color-emerald-600)}.group-hover\:bg-neutral-dark\/5:is(:where(.group):hover *){background-color:#0a0a0a0d}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-neutral-dark\/5:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-neutral-dark)5%,transparent)}}.group-hover\:bg-neutral-light\/50:is(:where(.group):hover *){background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-neutral-light\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-neutral-light)50%,transparent)}}.group-hover\:bg-primary:is(:where(.group):hover *){background-color:var(--color-primary)}.group-hover\:bg-primary-dark:is(:where(.group):hover *){background-color:var(--color-primary-dark)}.group-hover\:bg-primary-dark\/60:is(:where(.group):hover *){background-color:#084c3999}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-primary-dark\/60:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-primary-dark)60%,transparent)}}.group-hover\:bg-primary\/50:is(:where(.group):hover *){background-color:#0e7a5c80}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-primary\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.group-hover\:bg-transparent:is(:where(.group):hover *){background-color:#0000}.group-hover\:from-primary\/90:is(:where(.group):hover *){--tw-gradient-from:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.group-hover\:from-primary\/90:is(:where(.group):hover *){--tw-gradient-from:color-mix(in oklab,var(--color-primary)90%,transparent)}}.group-hover\:from-primary\/90:is(:where(.group):hover *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.group-hover\:to-primary\/20:is(:where(.group):hover *){--tw-gradient-to:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.group-hover\:to-primary\/20:is(:where(.group):hover *){--tw-gradient-to:color-mix(in oklab,var(--color-primary)20%,transparent)}}.group-hover\:to-primary\/20:is(:where(.group):hover *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.group-hover\:text-accent:is(:where(.group):hover *){color:var(--color-accent)}.group-hover\:text-accent-dark:is(:where(.group):hover *){color:var(--color-accent-dark)}.group-hover\:text-emerald-400:is(:where(.group):hover *){color:var(--color-emerald-400)}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--color-primary)}.group-hover\:text-primary-dark:is(:where(.group):hover *){color:var(--color-primary-dark)}.group-hover\:text-text-primary:is(:where(.group):hover *){color:var(--color-text-primary)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:underline:is(:where(.group):hover *){text-decoration-line:underline}.group-hover\:opacity-30:is(:where(.group):hover *){opacity:.3}.group-hover\:opacity-40:is(:where(.group):hover *){opacity:.4}.group-hover\:opacity-90:is(:where(.group):hover *){opacity:.9}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:grayscale-0:is(:where(.group):hover *){--tw-grayscale:grayscale(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.group-hover\:saturate-100:is(:where(.group):hover *){--tw-saturate:saturate(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.group-hover\/btn\:translate-x-1:is(:where(.group\/btn):hover *){--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/btn\:translate-x-2:is(:where(.group\/btn):hover *){--tw-translate-x:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/btn\:translate-y-0:is(:where(.group\/btn):hover *){--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/btn\:text-primary-dark:is(:where(.group\/btn):hover *){color:var(--color-primary-dark)}.group-hover\/btn\:text-white:is(:where(.group\/btn):hover *){color:var(--color-white)}}.group-active\:w-full:is(:where(.group):active *){width:100%}.selection\:bg-primary\/10 ::selection{background-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/10 ::selection{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.selection\:bg-primary\/10::selection{background-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/10::selection{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.selection\:bg-primary\/90 ::selection{background-color:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/90 ::selection{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.selection\:bg-primary\/90::selection{background-color:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/90::selection{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.selection\:text-primary ::selection{color:var(--color-primary)}.selection\:text-primary::selection{color:var(--color-primary)}.selection\:text-white ::selection{color:var(--color-white)}.selection\:text-white::selection{color:var(--color-white)}.placeholder\:text-neutral-dark\/40::placeholder{color:#0a0a0a66}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-neutral-dark\/40::placeholder{color:color-mix(in oklab,var(--color-neutral-dark)40%,transparent)}}.placeholder\:text-white\/20::placeholder{color:#fff3}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-white\/20::placeholder{color:color-mix(in oklab,var(--color-white)20%,transparent)}}.placeholder\:text-white\/50::placeholder{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-white\/50::placeholder{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing)*0)}.focus-within\:border-accent:focus-within{border-color:var(--color-accent)}.focus-within\:bg-white\/15:focus-within{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.focus-within\:bg-white\/15:focus-within{background-color:color-mix(in oklab,var(--color-white)15%,transparent)}}@media (hover:hover){.hover\:translate-x-1:hover{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:scale-\[1\.03\]:hover{scale:1.03}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-accent\/30:hover{border-color:#82ed204d}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/30:hover{border-color:color-mix(in oklab,var(--color-accent)30%,transparent)}}.hover\:border-accent\/40:hover{border-color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.hover\:border-primary\/20:hover{border-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/20:hover{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.hover\:border-primary\/50:hover{border-color:#0e7a5c80}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.hover\:border-white:hover{border-color:var(--color-white)}.hover\:border-white\/10:hover{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/10:hover{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:border-white\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/20:hover{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-neutral-50:hover{background-color:var(--color-neutral-50)}.hover\:bg-neutral-light:hover{background-color:var(--color-neutral-light)}.hover\:bg-neutral-light\/50:hover{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-neutral-light\/50:hover{background-color:color-mix(in oklab,var(--color-neutral-light)50%,transparent)}}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-primary-dark:hover{background-color:var(--color-primary-dark)}.hover\:bg-primary\/10:hover{background-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.hover\:bg-primary\/20:hover{background-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.hover\:bg-primary\/90:hover{background-color:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.08\]:hover{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-neutral-dark:hover{color:var(--color-neutral-dark)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:text-primary-dark:hover{color:var(--color-primary-dark)}.hover\:text-primary-light:hover{color:var(--color-primary-light)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-white\/60:hover{color:#fff9}@supports (color:color-mix(in lab, red, red)){.hover\:text-white\/60:hover{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.hover\:text-white\/80:hover{color:#fffc}@supports (color:color-mix(in lab, red, red)){.hover\:text-white\/80:hover{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.hover\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_0_20px_rgba\(255\,255\,255\,0\.3\)\]:hover{--tw-shadow:0 0 20px var(--tw-shadow-color,#ffffff4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_20px_50px_rgba\(0\,0\,0\,0\.2\)\]:hover{--tw-shadow:0 20px 50px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -1px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 10px 10px -5px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-accent\/20:hover{--tw-shadow-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-accent\/20:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent)20%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-accent\/30:hover{--tw-shadow-color:#82ed204d}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-accent\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent)30%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-accent\/40:hover{--tw-shadow-color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-accent\/40:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent)40%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-destructive\/30:hover{--tw-shadow-color:#ef44444d}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-destructive\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-destructive)30%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-primary\/20:hover{--tw-shadow-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-primary\/20:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-primary)20%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-primary\/30:hover{--tw-shadow-color:#0e7a5c4d}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-primary\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-primary)30%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-secondary\/30:hover{--tw-shadow-color:#003d824d}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-secondary\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-secondary)30%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.hover\:grayscale-0:hover{--tw-grayscale:grayscale(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:top-4:focus{top:calc(var(--spacing)*4)}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:bg-white:focus{background-color:var(--color-white)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent\/20:focus{--tw-ring-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.focus\:ring-accent\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.focus\:ring-primary\/20:focus{--tw-ring-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:var(--color-primary)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.active\:scale-\[0\.98\]:active{scale:.98}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:640px){.sm\:block{display:block}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:rounded-xl{border-radius:1rem}.sm\:text-5xl{font-size:3rem;line-height:var(--tw-leading,1.25)}}@media (min-width:768px){.md\:absolute{position:absolute}.md\:top-1\/2{top:50%}.md\:bottom-10{bottom:calc(var(--spacing)*10)}.md\:-left-8{left:calc(var(--spacing)*-8)}.md\:left-1\/2{left:50%}.md\:order-none{order:0}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:row-span-2{grid-row:span 2/span 2}.md\:-mx-12{margin-inline:calc(var(--spacing)*-12)}.md\:mx-0{margin-inline:calc(var(--spacing)*0)}.md\:-mt-20{margin-top:calc(var(--spacing)*-20)}.md\:mt-0{margin-top:calc(var(--spacing)*0)}.md\:mt-12{margin-top:calc(var(--spacing)*12)}.md\:mt-24{margin-top:calc(var(--spacing)*24)}.md\:mr-auto{margin-right:auto}.md\:mb-0{margin-bottom:calc(var(--spacing)*0)}.md\:mb-2{margin-bottom:calc(var(--spacing)*2)}.md\:mb-4{margin-bottom:calc(var(--spacing)*4)}.md\:mb-6{margin-bottom:calc(var(--spacing)*6)}.md\:mb-8{margin-bottom:calc(var(--spacing)*8)}.md\:mb-10{margin-bottom:calc(var(--spacing)*10)}.md\:mb-12{margin-bottom:calc(var(--spacing)*12)}.md\:mb-16{margin-bottom:calc(var(--spacing)*16)}.md\:mb-20{margin-bottom:calc(var(--spacing)*20)}.md\:ml-auto{margin-left:auto}.md\:line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.md\:line-clamp-none{-webkit-line-clamp:unset;-webkit-box-orient:horizontal;display:block;overflow:visible}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:aspect-\[16\/9\]{aspect-ratio:16/9}.md\:h-7{height:calc(var(--spacing)*7)}.md\:h-10{height:calc(var(--spacing)*10)}.md\:h-11{height:calc(var(--spacing)*11)}.md\:h-12{height:calc(var(--spacing)*12)}.md\:h-14{height:calc(var(--spacing)*14)}.md\:h-16{height:calc(var(--spacing)*16)}.md\:h-80{height:calc(var(--spacing)*80)}.md\:h-\[70vh\]{height:70vh}.md\:h-\[90vh\]{height:90vh}.md\:h-\[500px\]{height:500px}.md\:h-auto{height:auto}.md\:h-full{height:100%}.md\:max-h-0{max-height:calc(var(--spacing)*0)}.md\:min-h-\[70vh\]{min-height:70vh}.md\:min-h-\[500px\]{min-height:500px}.md\:min-h-\[600px\]{min-height:600px}.md\:w-1\.5{width:calc(var(--spacing)*1.5)}.md\:w-7{width:calc(var(--spacing)*7)}.md\:w-10{width:calc(var(--spacing)*10)}.md\:w-12{width:calc(var(--spacing)*12)}.md\:w-14{width:calc(var(--spacing)*14)}.md\:w-16{width:calc(var(--spacing)*16)}.md\:w-64{width:calc(var(--spacing)*64)}.md\:w-\[480px\]{width:480px}.md\:w-\[calc\(50\%-2\.5rem\)\]{width:calc(50% - 2.5rem)}.md\:w-auto{width:auto}.md\:max-w-none{max-width:none}.md\:-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:justify-start{justify-content:flex-start}.md\:gap-4{gap:calc(var(--spacing)*4)}.md\:gap-6{gap:calc(var(--spacing)*6)}.md\:gap-8{gap:calc(var(--spacing)*8)}.md\:gap-10{gap:calc(var(--spacing)*10)}.md\:gap-16{gap:calc(var(--spacing)*16)}:where(.md\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-16>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*16)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*16)*calc(1 - var(--tw-space-y-reverse)))}.md\:gap-x-12{-moz-column-gap:calc(var(--spacing)*12);column-gap:calc(var(--spacing)*12)}.md\:gap-y-8{row-gap:calc(var(--spacing)*8)}.md\:gap-y-20{row-gap:calc(var(--spacing)*20)}.md\:rounded-2xl{border-radius:1.5rem}.md\:rounded-3xl{border-radius:var(--radius-3xl)}.md\:rounded-\[32px\]{border-radius:32px}.md\:rounded-\[40px\]{border-radius:40px}.md\:rounded-r-2xl{border-top-right-radius:1.5rem;border-bottom-right-radius:1.5rem}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:border-neutral-100{border-color:var(--color-neutral-100)}.md\:p-6{padding:calc(var(--spacing)*6)}.md\:p-8{padding:calc(var(--spacing)*8)}.md\:p-10{padding:calc(var(--spacing)*10)}.md\:p-12{padding:calc(var(--spacing)*12)}.md\:p-16{padding:calc(var(--spacing)*16)}.md\:p-24{padding:calc(var(--spacing)*24)}.md\:px-4{padding-inline:calc(var(--spacing)*4)}.md\:px-6{padding-inline:calc(var(--spacing)*6)}.md\:px-8{padding-inline:calc(var(--spacing)*8)}.md\:px-10{padding-inline:calc(var(--spacing)*10)}.md\:px-12{padding-inline:calc(var(--spacing)*12)}.md\:py-0{padding-block:calc(var(--spacing)*0)}.md\:py-4{padding-block:calc(var(--spacing)*4)}.md\:py-6{padding-block:calc(var(--spacing)*6)}.md\:py-16{padding-block:calc(var(--spacing)*16)}.md\:py-24{padding-block:calc(var(--spacing)*24)}.md\:py-28{padding-block:calc(var(--spacing)*28)}.md\:py-32{padding-block:calc(var(--spacing)*32)}.md\:py-48{padding-block:calc(var(--spacing)*48)}.md\:pt-4{padding-top:calc(var(--spacing)*4)}.md\:pt-12{padding-top:calc(var(--spacing)*12)}.md\:pt-40{padding-top:calc(var(--spacing)*40)}.md\:pt-\[14\%\]{padding-top:14%}.md\:pb-4{padding-bottom:calc(var(--spacing)*4)}.md\:pb-24{padding-bottom:calc(var(--spacing)*24)}.md\:pb-32{padding-bottom:calc(var(--spacing)*32)}.md\:pb-\[12\%\]{padding-bottom:12%}.md\:pl-0{padding-left:calc(var(--spacing)*0)}.md\:pl-8{padding-left:calc(var(--spacing)*8)}.md\:pl-9{padding-left:calc(var(--spacing)*9)}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-2xl{font-size:1.5rem;line-height:var(--tw-leading,1.5)}.md\:text-3xl{font-size:1.875rem;line-height:var(--tw-leading,1.4)}.md\:text-4xl{font-size:2.25rem;line-height:var(--tw-leading,1.3)}.md\:text-5xl{font-size:3rem;line-height:var(--tw-leading,1.25)}.md\:text-6xl{font-size:3.75rem;line-height:var(--tw-leading,1.2)}.md\:text-7xl{font-size:4.5rem;line-height:var(--tw-leading,1.15)}.md\:text-8xl{font-size:6rem;line-height:var(--tw-leading,1.1)}.md\:text-base{font-size:1rem;line-height:var(--tw-leading,1.7)}.md\:text-lg{font-size:1.125rem;line-height:var(--tw-leading,1.7)}.md\:text-sm{font-size:.875rem;line-height:var(--tw-leading,1.6)}.md\:text-xl{font-size:1.25rem;line-height:var(--tw-leading,1.6)}.md\:text-xs{font-size:.75rem;line-height:var(--tw-leading,1.6)}.md\:text-\[15px\]{font-size:15px}.md\:opacity-0{opacity:0}.md\:opacity-30{opacity:.3}.md\:opacity-40{opacity:.4}.md\:opacity-60{opacity:.6}@media (hover:hover){.md\:group-hover\:border-\[12px\]:is(:where(.group):hover *){border-style:var(--tw-border-style);border-width:12px}}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:top-32{top:calc(var(--spacing)*32)}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-start-6{grid-column-start:6}.lg\:mb-0{margin-bottom:calc(var(--spacing)*0)}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:aspect-\[4\/3\]{aspect-ratio:4/3}.lg\:h-\[650px\]{height:650px}.lg\:min-h-screen{min-height:100vh}.lg\:w-1\/2{width:50%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-8{gap:calc(var(--spacing)*8)}.lg\:gap-20{gap:calc(var(--spacing)*20)}.lg\:gap-24{gap:calc(var(--spacing)*24)}.lg\:bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.lg\:bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.lg\:from-primary-dark\/20{--tw-gradient-from:#084c3933}@supports (color:color-mix(in lab, red, red)){.lg\:from-primary-dark\/20{--tw-gradient-from:color-mix(in oklab,var(--color-primary-dark)20%,transparent)}}.lg\:from-primary-dark\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.lg\:p-32{padding:calc(var(--spacing)*32)}.lg\:px-16{padding-inline:calc(var(--spacing)*16)}.lg\:py-0{padding-block:calc(var(--spacing)*0)}.lg\:py-36{padding-block:calc(var(--spacing)*36)}.lg\:text-left{text-align:left}.lg\:text-2xl{font-size:1.5rem;line-height:var(--tw-leading,1.5)}.lg\:text-3xl{font-size:1.875rem;line-height:var(--tw-leading,1.4)}.lg\:text-4xl{font-size:2.25rem;line-height:var(--tw-leading,1.3)}.lg\:text-5xl{font-size:3rem;line-height:var(--tw-leading,1.25)}.lg\:text-6xl{font-size:3.75rem;line-height:var(--tw-leading,1.2)}.lg\:text-8xl{font-size:6rem;line-height:var(--tw-leading,1.1)}.lg\:text-xl{font-size:1.25rem;line-height:var(--tw-leading,1.6)}}@media (min-width:1280px){.xl\:w-\[400px\]{width:400px}}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes draw-stroke{0%{stroke-dasharray:1;stroke-dashoffset:1px}to{stroke-dasharray:1;stroke-dashoffset:0}}@keyframes gradient-x{0%,to{background-position:0%}50%{background-position:100%}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slow-zoom{0%{transform:scale(1)}to{transform:scale(1.1)}}@keyframes slight-fade-in-from-bottom{0%{opacity:0;filter:blur(4px);transform:translateY(10px)}to{opacity:1;filter:blur();transform:translateY(0)}} diff --git a/.next/static/chunks/c4abba184b151b69.css b/.next/static/chunks/c4abba184b151b69.css new file mode 100644 index 000000000..1dad6841f --- /dev/null +++ b/.next/static/chunks/c4abba184b151b69.css @@ -0,0 +1 @@ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:var(--font-inter),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-200:oklch(92.5% .084 155.995);--color-green-500:oklch(72.3% .219 149.579);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-teal-400:oklch(77.7% .152 181.912);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-900:oklch(38.1% .176 304.987);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-7xl:80rem;--font-weight-extralight:200;--font-weight-normal:400;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-3xl:1.5rem;--drop-shadow-sm:0 1px 2px #00000026;--drop-shadow-md:0 3px 3px #0000001f;--drop-shadow-lg:0 4px 4px #00000026;--drop-shadow-2xl:0 25px 25px #00000026;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-heading:"Inter",system-ui,sans-serif;--color-primary:#0e7a5c;--color-primary-dark:#084c39;--color-primary-light:#e6f5f0;--color-saturated:#10a379;--color-secondary:#003d82;--color-secondary-light:#0056b3;--color-accent:#82ed20;--color-accent-dark:#14532d;--color-accent-light:#f0f9e6;--color-neutral:#f8f9fa;--color-neutral-light:#fff;--color-neutral-dark:#0a0a0a;--color-neutral-medium:#e5e7eb;--color-text-primary:#111827;--color-text-secondary:#4b5563;--color-text-light:#9ca3af;--color-destructive:#ef4444;--color-destructive-foreground:#fff;--animate-fade-in:fade-in .5s ease-out;--animate-slide-up:slide-up .6s ease-out;--animate-slow-zoom:slow-zoom 20s linear infinite;--animate-slight-fade-in-from-bottom:slight-fade-in-from-bottom .8s cubic-bezier(.16,1,.3,1)forwards;--animate-gradient-x:gradient-x 15s ease infinite;--animate-draw-stroke:draw-stroke 1.8s ease-in-out .5s forwards}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{font-size:87.5%}@media (min-width:768px){html{font-size:100%}}.bg-primary a,.bg-primary-dark a{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-primary a,.bg-primary-dark a{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.bg-primary a,.bg-primary-dark a{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){:is(.bg-primary a,.bg-primary-dark a):hover{color:var(--color-white)}}body{font-size:1rem;line-height:var(--tw-leading,1.7)}@media (min-width:768px){body{font-size:1.125rem;line-height:var(--tw-leading,1.7)}}body{text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.7}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);--tw-font-weight:700;--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);font-weight:700;line-height:1.2}h1{font-size:1.875rem;line-height:var(--tw-leading,1.4);--tw-leading:1.1;line-height:1.1}@media (min-width:768px){h1{font-size:3rem;line-height:var(--tw-leading,1.25)}}@media (min-width:1024px){h1{font-size:3.75rem;line-height:var(--tw-leading,1.2)}}h2{font-size:1.5rem;line-height:var(--tw-leading,1.5);--tw-leading:1.2;line-height:1.2}@media (min-width:768px){h2{font-size:2.25rem;line-height:var(--tw-leading,1.3)}}@media (min-width:1024px){h2{font-size:3rem;line-height:var(--tw-leading,1.25)}}h3{font-size:1.25rem;line-height:var(--tw-leading,1.6);--tw-leading:1.3;line-height:1.3}@media (min-width:768px){h3{font-size:1.5rem;line-height:var(--tw-leading,1.5)}}@media (min-width:1024px){h3{font-size:1.875rem;line-height:var(--tw-leading,1.4)}}h4{font-size:1.125rem;line-height:var(--tw-leading,1.7);--tw-leading:1.4;line-height:1.4}@media (min-width:768px){h4{font-size:1.25rem;line-height:var(--tw-leading,1.6)}}@media (min-width:1024px){h4{font-size:1.5rem;line-height:var(--tw-leading,1.5)}}h5{font-size:1rem;line-height:var(--tw-leading,1.7);--tw-leading:1.5;line-height:1.5}@media (min-width:768px){h5{font-size:1.125rem;line-height:var(--tw-leading,1.7)}}h6{font-size:.875rem;line-height:var(--tw-leading,1.6);--tw-leading:1.6;line-height:1.6}@media (min-width:768px){h6{font-size:1rem;line-height:var(--tw-leading,1.7)}}p{margin-bottom:calc(var(--spacing)*4);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}a{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;text-decoration-line:none;transition-duration:.2s}ul,ol{margin-block:calc(var(--spacing)*4);margin-left:calc(var(--spacing)*6)}li{margin-bottom:calc(var(--spacing)*2);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}small{font-size:.875rem;line-height:var(--tw-leading,1.6)}@media (min-width:768px){small{font-size:1rem;line-height:var(--tw-leading,1.7)}}strong{--tw-font-weight:700;font-weight:700}em{font-style:italic}blockquote{margin-block:calc(var(--spacing)*6);border-left-style:var(--tw-border-style);padding-left:calc(var(--spacing)*6);border-left-width:4px;font-style:italic}code{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-family:var(--font-mono);font-size:.875rem;line-height:var(--tw-leading,1.6);border-radius:.5rem}hr{margin-block:calc(var(--spacing)*8)}}@layer components{.glass-panel{border-style:var(--tw-border-style);border-width:1px;border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.glass-panel{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.glass-panel{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.glass-panel{background-color:color-mix(in oklab,var(--color-white)80%,transparent)}}.glass-panel{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.image-overlay-gradient{inset:calc(var(--spacing)*0);--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:color-mix(in oklab,var(--color-black)90%,transparent);--tw-gradient-via:color-mix(in oklab,var(--color-black)40%,transparent);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));--tw-gradient-to:transparent;position:absolute}.premium-card{border-radius:var(--radius-3xl);background-color:var(--color-white);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.5s;transition-duration:.5s}@media (hover:hover){.premium-card:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.sticky-narrative-container{gap:calc(var(--spacing)*12);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:1024px){.sticky-narrative-container{gap:calc(var(--spacing)*20);grid-template-columns:repeat(12,minmax(0,1fr))}}.sticky-narrative-sidebar{height:fit-content}@media (min-width:1024px){.sticky-narrative-sidebar{top:calc(var(--spacing)*32);grid-column:span 4/span 4;position:sticky}.sticky-narrative-content{grid-column:span 8/span 8}}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-\[20\%\]{top:-20%}.-top-\[25\%\]{top:-25%}.-top-full{top:-100%}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-6{top:calc(var(--spacing)*6)}.top-8{top:calc(var(--spacing)*8)}.top-32{top:calc(var(--spacing)*32)}.-right-8{right:calc(var(--spacing)*-8)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-6{right:calc(var(--spacing)*6)}.right-8{right:calc(var(--spacing)*8)}.-bottom-2{bottom:calc(var(--spacing)*-2)}.-bottom-3{bottom:calc(var(--spacing)*-3)}.-bottom-8{bottom:calc(var(--spacing)*-8)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-6{bottom:calc(var(--spacing)*6)}.-left-4{left:calc(var(--spacing)*-4)}.-left-8{left:calc(var(--spacing)*-8)}.-left-\[20\%\]{left:-20%}.-left-\[25\%\]{left:-25%}.-left-\[25px\]{left:-25px}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing)*4)}.left-6{left:calc(var(--spacing)*6)}.left-8{left:calc(var(--spacing)*8)}.isolate{isolation:isolate}.-z-10{z-index:calc(10*-1)}.z-0{z-index:0}.z-1{z-index:1}.z-7{z-index:7}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[2\]{z-index:2}.z-\[3\]{z-index:3}.z-\[4\]{z-index:4}.z-\[100\]{z-index:100}.z-\[10000\]{z-index:10000}.z-\[99999\]{z-index:99999}.order-1{order:1}.order-2{order:2}.col-span-1{grid-column:span 1/span 1}.container{width:100%}@media (min-width:475px){.container{max-width:475px}}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1400px){.container{max-width:1400px}}@media (min-width:1600px){.container{max-width:1600px}}.fluid-spacing{margin:clamp(.5rem,2vw,2rem);padding:clamp(1rem,3vw,3rem);margin:clamp(1rem,3vw,3rem);padding:clamp(1.5rem,5vw,5rem)}.-m-4{margin:calc(var(--spacing)*-4)}.m-0{margin:calc(var(--spacing)*0)}.m-5{margin:calc(var(--spacing)*5)}.container{margin-inline:auto;padding-inline:1rem}@media (min-width:475px){.container{max-width:475px}}@media (min-width:640px){.container{max-width:640px;padding-inline:1.5rem}}@media (min-width:768px){.container{max-width:768px;padding-inline:2rem}}@media (min-width:1024px){.container{max-width:1024px;padding-inline:2.5rem}}@media (min-width:1280px){.container{max-width:1280px;padding-inline:3rem}}@media (min-width:1400px){.container{max-width:1400px;padding-inline:4rem}}@media (min-width:1600px){.container{max-width:1600px}}.-mx-5{margin-inline:calc(var(--spacing)*-5)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-auto{margin-inline:auto}.my-8{margin-block:calc(var(--spacing)*8)}.my-10{margin-block:calc(var(--spacing)*10)}.my-12{margin-block:calc(var(--spacing)*12)}.my-16{margin-block:calc(var(--spacing)*16)}.my-24{margin-block:calc(var(--spacing)*24)}.\!mt-0{margin-top:calc(var(--spacing)*0)!important}.\!mt-1{margin-top:calc(var(--spacing)*1)!important}.-mt-6{margin-top:calc(var(--spacing)*-6)}.-mt-8{margin-top:calc(var(--spacing)*-8)}.-mt-10{margin-top:calc(var(--spacing)*-10)}.-mt-32{margin-top:calc(var(--spacing)*-32)}.-mt-px{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-2\.5{margin-top:calc(var(--spacing)*2.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-16{margin-top:calc(var(--spacing)*16)}.mt-24{margin-top:calc(var(--spacing)*24)}.mt-\[80px\]{margin-top:80px}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing)*-1)}.-mr-6{margin-right:calc(var(--spacing)*-6)}.-mr-8{margin-right:calc(var(--spacing)*-8)}.-mr-10{margin-right:calc(var(--spacing)*-10)}.-mr-32{margin-right:calc(var(--spacing)*-32)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mr-4{margin-right:calc(var(--spacing)*4)}.\!mb-0{margin-bottom:calc(var(--spacing)*0)!important}.mb-0{margin-bottom:calc(var(--spacing)*0)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.mb-16{margin-bottom:calc(var(--spacing)*16)}.mb-20{margin-bottom:calc(var(--spacing)*20)}.mb-\[-80px\]{margin-bottom:-80px}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-12{margin-left:calc(var(--spacing)*12)}.ml-auto{margin-left:auto}.touch-target{justify-content:center;align-items:center;min-width:48px;min-height:48px;display:inline-flex}.grid-mobile-stacked{gap:calc(var(--spacing)*6);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:768px){.grid-mobile-stacked{gap:calc(var(--spacing)*8);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.grid-mobile-stacked{gap:calc(var(--spacing)*12);grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:767px){.grid-mobile-stacked{flex-direction:column;gap:1rem;display:flex}}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}@media (min-width:1024px){.desktop-hidden{display:none!important}}@media (max-width:1023px){.desktop-only{display:none!important}}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}@media (max-width:767px){.mobile-hidden{display:none!important}}@media (min-width:768px){.mobile-only{display:none!important}}.table{display:table}@media (min-width:768px) and (max-width:1023px){.tablet-hidden{display:none!important}}@media (max-width:767px),(min-width:1024px){.tablet-only{display:none!important}}.aspect-\[3\/4\]{aspect-ratio:3/4}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-\[16\/10\]{aspect-ratio:16/10}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-40{height:calc(var(--spacing)*40)}.h-48{height:calc(var(--spacing)*48)}.h-64{height:calc(var(--spacing)*64)}.h-96{height:calc(var(--spacing)*96)}.h-\[2px\]{height:2px}.h-\[40vh\]{height:40vh}.h-\[50vh\]{height:50vh}.h-\[70vh\]{height:70vh}.h-\[100svh\]{height:100svh}.h-\[140\%\]{height:140%}.h-\[150\%\]{height:150%}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-\[85vh\]{max-height:85vh}.max-h-\[400px\]{max-height:400px}.max-h-\[none\]{max-height:none}.min-h-\[50vh\]{min-height:50vh}.min-h-\[70vh\]{min-height:70vh}.min-h-\[85vh\]{min-height:85vh}.min-h-\[400px\]{min-height:400px}.min-h-\[450px\]{min-height:450px}.min-h-\[500px\]{min-height:500px}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-\[2px\]{width:2px}.w-\[140\%\]{width:140%}.w-\[150\%\]{width:150%}.w-\[320px\]{width:320px}.w-\[350px\]{width:350px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[85\%\]{max-width:85%}.max-w-\[90\%\]{max-width:90%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x:calc(1/2*100%);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-1\/2{--tw-translate-y:calc(1/2*100%);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[101\%\]{--tw-translate-y:101%;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-45{rotate:45deg}.-skew-x-12{--tw-skew-x:skewX(calc(12deg*-1));transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.skew-x-12{--tw-skew-x:skewX(12deg);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.reveal-on-scroll{opacity:0;filter:blur(8px);transition:opacity .6s ease-out,transform .8s cubic-bezier(.16,1,.3,1),filter .8s cubic-bezier(.16,1,.3,1);transform:translateY(20px)}.reveal-on-scroll.is-visible{opacity:1;filter:blur();transform:translateY(0)}@media (prefers-reduced-motion:reduce){.reveal-on-scroll{opacity:1;transition:opacity .3s ease-out;filter:none!important;transform:none!important}}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-draw-stroke{animation:var(--animate-draw-stroke)}.animate-fade-in{animation:var(--animate-fade-in)}.animate-gradient-x{animation:var(--animate-gradient-x)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-slide-up{animation:var(--animate-slide-up)}.animate-slight-fade-in-from-bottom{animation:var(--animate-slight-fade-in-from-bottom)}.animate-slow-zoom{animation:var(--animate-slow-zoom)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-center{scroll-snap-align:center}.list-none{list-style-type:none}.auto-rows-\[220px\]{grid-auto-rows:220px}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.gap-10{gap:calc(var(--spacing)*10)}.gap-12{gap:calc(var(--spacing)*12)}.gap-16{gap:calc(var(--spacing)*16)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-24>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*24)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*24)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{-moz-column-gap:calc(var(--spacing)*6);column-gap:calc(var(--spacing)*6)}.gap-x-8{-moz-column-gap:calc(var(--spacing)*8);column-gap:calc(var(--spacing)*8)}.gap-x-12{-moz-column-gap:calc(var(--spacing)*12);column-gap:calc(var(--spacing)*12)}:where(.-space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*-4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*-4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-0{row-gap:calc(var(--spacing)*0)}.gap-y-3{row-gap:calc(var(--spacing)*3)}.gap-y-6{row-gap:calc(var(--spacing)*6)}.gap-y-12{row-gap:calc(var(--spacing)*12)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-neutral-dark\/5>:not(:last-child)){border-color:#0a0a0a0d}@supports (color:color-mix(in lab, red, red)){:where(.divide-neutral-dark\/5>:not(:last-child)){border-color:color-mix(in oklab,var(--color-neutral-dark)5%,transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.5rem}.rounded-2xl{border-radius:1.5rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2rem\]{border-radius:2rem}.rounded-\[20px\]{border-radius:20px}.rounded-\[31px\]{border-radius:31px}.rounded-\[32px\]{border-radius:32px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.75rem}.rounded-sm{border-radius:.25rem}.rounded-xl{border-radius:1rem}.rounded-tl-none{border-top-left-radius:0}.rounded-r-xl{border-top-right-radius:1rem;border-bottom-right-radius:1rem}.rounded-tr-none{border-top-right-radius:0}.rounded-br-lg{border-bottom-right-radius:.75rem}.rounded-bl-lg{border-bottom-left-radius:.75rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-none{--tw-border-style:none;border-style:none}.border-accent{border-color:var(--color-accent)}.border-accent\/20{border-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.border-accent\/20{border-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.border-accent\/30{border-color:#82ed204d}@supports (color:color-mix(in lab, red, red)){.border-accent\/30{border-color:color-mix(in oklab,var(--color-accent)30%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-200\/50{border-color:#bedbff80}@supports (color:color-mix(in lab, red, red)){.border-blue-200\/50{border-color:color-mix(in oklab,var(--color-blue-200)50%,transparent)}}.border-destructive\/20{border-color:#ef444433}@supports (color:color-mix(in lab, red, red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--color-destructive)20%,transparent)}}.border-green-200{border-color:var(--color-green-200)}.border-neutral-100{border-color:var(--color-neutral-100)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-200\/50{border-color:#e5e5e580}@supports (color:color-mix(in lab, red, red)){.border-neutral-200\/50{border-color:color-mix(in oklab,var(--color-neutral-200)50%,transparent)}}.border-neutral-800{border-color:var(--color-neutral-800)}.border-neutral-dark{border-color:var(--color-neutral-dark)}.border-neutral-dark\/5{border-color:#0a0a0a0d}@supports (color:color-mix(in lab, red, red)){.border-neutral-dark\/5{border-color:color-mix(in oklab,var(--color-neutral-dark)5%,transparent)}}.border-neutral-dark\/10{border-color:#0a0a0a1a}@supports (color:color-mix(in lab, red, red)){.border-neutral-dark\/10{border-color:color-mix(in oklab,var(--color-neutral-dark)10%,transparent)}}.border-neutral-medium{border-color:var(--color-neutral-medium)}.border-orange-500\/50{border-color:#fe6e0080}@supports (color:color-mix(in lab, red, red)){.border-orange-500\/50{border-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.border-primary{border-color:var(--color-primary)}.border-primary\/10{border-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.border-primary\/10{border-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.border-primary\/20{border-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-primary\/30{border-color:#0e7a5c4d}@supports (color:color-mix(in lab, red, red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-primary\/40{border-color:#0e7a5c66}@supports (color:color-mix(in lab, red, red)){.border-primary\/40{border-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.border-primary\/50{border-color:#0e7a5c80}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.border-saturated\/10{border-color:#10a3791a}@supports (color:color-mix(in lab, red, red)){.border-saturated\/10{border-color:color-mix(in oklab,var(--color-saturated)10%,transparent)}}.border-transparent{border-color:#0000}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white)40%,transparent)}}.border-white\/60{border-color:#fff9}@supports (color:color-mix(in lab, red, red)){.border-white\/60{border-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.border-white\/\[0\.04\]{border-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.04\]{border-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.border-yellow-200{border-color:var(--color-yellow-200)}.bg-\[\#0a192f\]{background-color:#0a192f}.bg-\[\#0a192f\]\/30{background-color:oklab(21.3588% -.0100861 -.047253/.3)}.bg-\[\#000a18\]\/90{background-color:oklab(14.1232% -.0143141 -.0349624/.9)}.bg-accent{background-color:var(--color-accent)}.bg-accent-dark{background-color:var(--color-accent-dark)}.bg-accent-light{background-color:var(--color-accent-light)}.bg-accent\/5{background-color:#82ed200d}@supports (color:color-mix(in lab, red, red)){.bg-accent\/5{background-color:color-mix(in oklab,var(--color-accent)5%,transparent)}}.bg-accent\/10{background-color:#82ed201a}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent)10%,transparent)}}.bg-accent\/20{background-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.bg-accent\/40{background-color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.bg-accent\/40{background-color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-destructive{background-color:var(--color-destructive)}.bg-destructive\/5{background-color:#ef44440d}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab,var(--color-destructive)5%,transparent)}}.bg-destructive\/90{background-color:#ef4444e6}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/90{background-color:color-mix(in oklab,var(--color-destructive)90%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.bg-green-50{background-color:var(--color-green-50)}.bg-neutral{background-color:var(--color-neutral)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-neutral-400{background-color:var(--color-neutral-400)}.bg-neutral-800{background-color:var(--color-neutral-800)}.bg-neutral-dark{background-color:var(--color-neutral-dark)}.bg-neutral-dark\/10{background-color:#0a0a0a1a}@supports (color:color-mix(in lab, red, red)){.bg-neutral-dark\/10{background-color:color-mix(in oklab,var(--color-neutral-dark)10%,transparent)}}.bg-neutral-dark\/20{background-color:#0a0a0a33}@supports (color:color-mix(in lab, red, red)){.bg-neutral-dark\/20{background-color:color-mix(in oklab,var(--color-neutral-dark)20%,transparent)}}.bg-neutral-dark\/40{background-color:#0a0a0a66}@supports (color:color-mix(in lab, red, red)){.bg-neutral-dark\/40{background-color:color-mix(in oklab,var(--color-neutral-dark)40%,transparent)}}.bg-neutral-dark\/80{background-color:#0a0a0acc}@supports (color:color-mix(in lab, red, red)){.bg-neutral-dark\/80{background-color:color-mix(in oklab,var(--color-neutral-dark)80%,transparent)}}.bg-neutral-light{background-color:var(--color-neutral-light)}.bg-neutral-light\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-neutral-light\/50{background-color:color-mix(in oklab,var(--color-neutral-light)50%,transparent)}}.bg-neutral-light\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-neutral-light\/90{background-color:color-mix(in oklab,var(--color-neutral-light)90%,transparent)}}.bg-neutral-medium{background-color:var(--color-neutral-medium)}.bg-primary{background-color:var(--color-primary)}.bg-primary-dark{background-color:var(--color-primary-dark)}.bg-primary-dark\/20{background-color:#084c3933}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/20{background-color:color-mix(in oklab,var(--color-primary-dark)20%,transparent)}}.bg-primary-dark\/40{background-color:#084c3966}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/40{background-color:color-mix(in oklab,var(--color-primary-dark)40%,transparent)}}.bg-primary-dark\/50{background-color:#084c3980}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/50{background-color:color-mix(in oklab,var(--color-primary-dark)50%,transparent)}}.bg-primary-dark\/60{background-color:#084c3999}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/60{background-color:color-mix(in oklab,var(--color-primary-dark)60%,transparent)}}.bg-primary-dark\/90{background-color:#084c39e6}@supports (color:color-mix(in lab, red, red)){.bg-primary-dark\/90{background-color:color-mix(in oklab,var(--color-primary-dark)90%,transparent)}}.bg-primary-light{background-color:var(--color-primary-light)}.bg-primary-light\/10{background-color:#e6f5f01a}@supports (color:color-mix(in lab, red, red)){.bg-primary-light\/10{background-color:color-mix(in oklab,var(--color-primary-light)10%,transparent)}}.bg-primary\/5{background-color:#0e7a5c0d}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--color-primary)5%,transparent)}}.bg-primary\/10{background-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/20{background-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.bg-primary\/30{background-color:#0e7a5c4d}@supports (color:color-mix(in lab, red, red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.bg-primary\/70{background-color:#0e7a5cb3}@supports (color:color-mix(in lab, red, red)){.bg-primary\/70{background-color:color-mix(in oklab,var(--color-primary)70%,transparent)}}.bg-primary\/80{background-color:#0e7a5ccc}@supports (color:color-mix(in lab, red, red)){.bg-primary\/80{background-color:color-mix(in oklab,var(--color-primary)80%,transparent)}}.bg-primary\/95{background-color:#0e7a5cf2}@supports (color:color-mix(in lab, red, red)){.bg-primary\/95{background-color:color-mix(in oklab,var(--color-primary)95%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-red-500\/\[0\.06\]{background-color:#fb2c360f}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-red-500)6%,transparent)}}.bg-saturated{background-color:var(--color-saturated)}.bg-saturated\/5{background-color:#10a3790d}@supports (color:color-mix(in lab, red, red)){.bg-saturated\/5{background-color:color-mix(in oklab,var(--color-saturated)5%,transparent)}}.bg-saturated\/10{background-color:#10a3791a}@supports (color:color-mix(in lab, red, red)){.bg-saturated\/10{background-color:color-mix(in oklab,var(--color-saturated)10%,transparent)}}.bg-saturated\/30{background-color:#10a3794d}@supports (color:color-mix(in lab, red, red)){.bg-saturated\/30{background-color:color-mix(in oklab,var(--color-saturated)30%,transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-secondary-light{background-color:var(--color-secondary-light)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.bg-white\/30{background-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-white)3%,transparent)}}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.bg-white\/\[0\.05\]{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.05\]{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\/\[0\.08\]{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.08\]{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[radial-gradient\(\#3b82f6_1px\,transparent_1px\)\]{background-image:radial-gradient(#3b82f6 1px,#0000 1px)}.bg-\[radial-gradient\(circle_at_center\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(circle at center,var(--tw-gradient-stops))}.bg-\[radial-gradient\(ellipse_at_center\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(ellipse at center,var(--tw-gradient-stops))}.bg-\[url\(\'\/grid\.svg\'\)\]{background-image:url(/grid.svg)}.from-\[\#0a192f\]\/90{--tw-gradient-from:oklab(21.3588% -.0100861 -.047253/.9);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent{--tw-gradient-from:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent\/5{--tw-gradient-from:#82ed200d}@supports (color:color-mix(in lab, red, red)){.from-accent\/5{--tw-gradient-from:color-mix(in oklab,var(--color-accent)5%,transparent)}}.from-accent\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent\/50{--tw-gradient-from:#82ed2080}@supports (color:color-mix(in lab, red, red)){.from-accent\/50{--tw-gradient-from:color-mix(in oklab,var(--color-accent)50%,transparent)}}.from-accent\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-black\/80{--tw-gradient-from:#000c}@supports (color:color-mix(in lab, red, red)){.from-black\/80{--tw-gradient-from:color-mix(in oklab,var(--color-black)80%,transparent)}}.from-black\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-black\/90{--tw-gradient-from:#000000e6}@supports (color:color-mix(in lab, red, red)){.from-black\/90{--tw-gradient-from:color-mix(in oklab,var(--color-black)90%,transparent)}}.from-black\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-50\/50{--tw-gradient-from:#eff6ff80}@supports (color:color-mix(in lab, red, red)){.from-blue-50\/50{--tw-gradient-from:color-mix(in oklab,var(--color-blue-50)50%,transparent)}}.from-blue-50\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-emerald-500{--tw-gradient-from:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-neutral-dark{--tw-gradient-from:var(--color-neutral-dark);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-neutral-dark\/90{--tw-gradient-from:#0a0a0ae6}@supports (color:color-mix(in lab, red, red)){.from-neutral-dark\/90{--tw-gradient-from:color-mix(in oklab,var(--color-neutral-dark)90%,transparent)}}.from-neutral-dark\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-neutral-dark\/95{--tw-gradient-from:#0a0a0af2}@supports (color:color-mix(in lab, red, red)){.from-neutral-dark\/95{--tw-gradient-from:color-mix(in oklab,var(--color-neutral-dark)95%,transparent)}}.from-neutral-dark\/95{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-dark\/60{--tw-gradient-from:#084c3999}@supports (color:color-mix(in lab, red, red)){.from-primary-dark\/60{--tw-gradient-from:color-mix(in oklab,var(--color-primary-dark)60%,transparent)}}.from-primary-dark\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-dark\/80{--tw-gradient-from:#084c39cc}@supports (color:color-mix(in lab, red, red)){.from-primary-dark\/80{--tw-gradient-from:color-mix(in oklab,var(--color-primary-dark)80%,transparent)}}.from-primary-dark\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/5{--tw-gradient-from:#0e7a5c0d}@supports (color:color-mix(in lab, red, red)){.from-primary\/5{--tw-gradient-from:color-mix(in oklab,var(--color-primary)5%,transparent)}}.from-primary\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/10{--tw-gradient-from:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.from-primary\/10{--tw-gradient-from:color-mix(in oklab,var(--color-primary)10%,transparent)}}.from-primary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/60{--tw-gradient-from:#0e7a5c99}@supports (color:color-mix(in lab, red, red)){.from-primary\/60{--tw-gradient-from:color-mix(in oklab,var(--color-primary)60%,transparent)}}.from-primary\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-saturated\/50{--tw-gradient-from:#10a37980}@supports (color:color-mix(in lab, red, red)){.from-saturated\/50{--tw-gradient-from:color-mix(in oklab,var(--color-saturated)50%,transparent)}}.from-saturated\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white{--tw-gradient-from:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/5{--tw-gradient-from:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.from-white\/5{--tw-gradient-from:color-mix(in oklab,var(--color-white)5%,transparent)}}.from-white\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/10{--tw-gradient-from:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.from-white\/10{--tw-gradient-from:color-mix(in oklab,var(--color-white)10%,transparent)}}.from-white\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/20{--tw-gradient-from:#fff3}@supports (color:color-mix(in lab, red, red)){.from-white\/20{--tw-gradient-from:color-mix(in oklab,var(--color-white)20%,transparent)}}.from-white\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/60{--tw-gradient-from:#fff9}@supports (color:color-mix(in lab, red, red)){.from-white\/60{--tw-gradient-from:color-mix(in oklab,var(--color-white)60%,transparent)}}.from-white\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/\[0\.06\]{--tw-gradient-from:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.from-white\/\[0\.06\]{--tw-gradient-from:color-mix(in oklab,var(--color-white)6%,transparent)}}.from-white\/\[0\.06\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-\[\#0a192f\]\/60{--tw-gradient-via:oklab(21.3588% -.0100861 -.047253/.6);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/20{--tw-gradient-via:#0003}@supports (color:color-mix(in lab, red, red)){.via-black\/20{--tw-gradient-via:color-mix(in oklab,var(--color-black)20%,transparent)}}.via-black\/20{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/30{--tw-gradient-via:#0000004d}@supports (color:color-mix(in lab, red, red)){.via-black\/30{--tw-gradient-via:color-mix(in oklab,var(--color-black)30%,transparent)}}.via-black\/30{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-neutral-900{--tw-gradient-via:var(--color-neutral-900);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-neutral-dark\/40{--tw-gradient-via:#0a0a0a66}@supports (color:color-mix(in lab, red, red)){.via-neutral-dark\/40{--tw-gradient-via:color-mix(in oklab,var(--color-neutral-dark)40%,transparent)}}.via-neutral-dark\/40{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-neutral-dark\/60{--tw-gradient-via:#0a0a0a99}@supports (color:color-mix(in lab, red, red)){.via-neutral-dark\/60{--tw-gradient-via:color-mix(in oklab,var(--color-neutral-dark)60%,transparent)}}.via-neutral-dark\/60{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-neutral-dark\/70{--tw-gradient-via:#0a0a0ab3}@supports (color:color-mix(in lab, red, red)){.via-neutral-dark\/70{--tw-gradient-via:color-mix(in oklab,var(--color-neutral-dark)70%,transparent)}}.via-neutral-dark\/70{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary-dark\/40{--tw-gradient-via:#084c3966}@supports (color:color-mix(in lab, red, red)){.via-primary-dark\/40{--tw-gradient-via:color-mix(in oklab,var(--color-primary-dark)40%,transparent)}}.via-primary-dark\/40{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/20{--tw-gradient-via:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.via-primary\/20{--tw-gradient-via:color-mix(in oklab,var(--color-primary)20%,transparent)}}.via-primary\/20{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/40{--tw-gradient-via:#0e7a5c66}@supports (color:color-mix(in lab, red, red)){.via-primary\/40{--tw-gradient-via:color-mix(in oklab,var(--color-primary)40%,transparent)}}.via-primary\/40{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-saturated{--tw-gradient-via:var(--color-saturated);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-teal-400{--tw-gradient-via:var(--color-teal-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/10{--tw-gradient-via:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.via-white\/10{--tw-gradient-via:color-mix(in oklab,var(--color-white)10%,transparent)}}.via-white\/10{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/80{--tw-gradient-via:#fffc}@supports (color:color-mix(in lab, red, red)){.via-white\/80{--tw-gradient-via:color-mix(in oklab,var(--color-white)80%,transparent)}}.via-white\/80{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-\[\#0a192f\]\/40{--tw-gradient-to:oklab(21.3588% -.0100861 -.047253/.4);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent{--tw-gradient-to:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-black\/80{--tw-gradient-to:#000c}@supports (color:color-mix(in lab, red, red)){.to-black\/80{--tw-gradient-to:color-mix(in oklab,var(--color-black)80%,transparent)}}.to-black\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-500{--tw-gradient-to:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-neutral-dark{--tw-gradient-to:var(--color-neutral-dark);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary-dark\/80{--tw-gradient-to:#084c39cc}@supports (color:color-mix(in lab, red, red)){.to-primary-dark\/80{--tw-gradient-to:color-mix(in oklab,var(--color-primary-dark)80%,transparent)}}.to-primary-dark\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary-light{--tw-gradient-to:var(--color-primary-light);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary\/9{--tw-gradient-to:#0e7a5c17}@supports (color:color-mix(in lab, red, red)){.to-primary\/9{--tw-gradient-to:color-mix(in oklab,var(--color-primary)9%,transparent)}}.to-primary\/9{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary\/60{--tw-gradient-to:#0e7a5c99}@supports (color:color-mix(in lab, red, red)){.to-primary\/60{--tw-gradient-to:color-mix(in oklab,var(--color-primary)60%,transparent)}}.to-primary\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-white\/\[0\.02\]{--tw-gradient-to:#ffffff05}@supports (color:color-mix(in lab, red, red)){.to-white\/\[0\.02\]{--tw-gradient-to:color-mix(in oklab,var(--color-white)2%,transparent)}}.to-white\/\[0\.02\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.\[background-size\:40px_40px\]{background-size:40px 40px}.bg-cover{background-size:cover}.bg-repeat{background-repeat:repeat}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.object-left{-o-object-position:left;object-position:left}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-10{padding:calc(var(--spacing)*10)}.p-12{padding:calc(var(--spacing)*12)}.p-35{padding:calc(var(--spacing)*35)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-12{padding-inline:calc(var(--spacing)*12)}.px-\[calc\(\(100vw-min\(100\%\,1280px\)\)\/2\)\]{padding-inline:calc(50vw - min(100%,1280px)/2)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-3\.5{padding-block:calc(var(--spacing)*3.5)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-20{padding-block:calc(var(--spacing)*20)}.py-24{padding-block:calc(var(--spacing)*24)}.py-32{padding-block:calc(var(--spacing)*32)}.safe-area-p{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-top:max(1rem,env(safe-area-inset-top));padding-bottom:max(1rem,env(safe-area-inset-bottom));padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right))}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-10{padding-top:calc(var(--spacing)*10)}.pt-24{padding-top:calc(var(--spacing)*24)}.pt-32{padding-top:calc(var(--spacing)*32)}.pt-40{padding-top:calc(var(--spacing)*40)}.pr-2{padding-right:calc(var(--spacing)*2)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pb-12{padding-bottom:calc(var(--spacing)*12)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pb-24{padding-bottom:calc(var(--spacing)*24)}.pl-5{padding-left:calc(var(--spacing)*5)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-9{padding-left:calc(var(--spacing)*9)}.pl-16{padding-left:calc(var(--spacing)*16)}.pl-20{padding-left:calc(var(--spacing)*20)}.text-center{text-align:center}@media (max-width:767px){.text-center-mobile{text-align:center}.text-end-mobile{text-align:right}}.text-left{text-align:left}.text-right{text-align:right}@media (max-width:767px){.text-start-mobile{text-align:left}}.font-heading{font-family:var(--font-heading)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:1.5rem;line-height:var(--tw-leading,1.5)}.text-3xl{font-size:1.875rem;line-height:var(--tw-leading,1.4)}.text-4xl{font-size:2.25rem;line-height:var(--tw-leading,1.3)}.text-5xl{font-size:3rem;line-height:var(--tw-leading,1.25)}.text-6xl{font-size:3.75rem;line-height:var(--tw-leading,1.2)}.text-base{font-size:1rem;line-height:var(--tw-leading,1.7)}.text-lg{font-size:1.125rem;line-height:var(--tw-leading,1.7)}.text-sm{font-size:.875rem;line-height:var(--tw-leading,1.6)}.text-xl{font-size:1.25rem;line-height:var(--tw-leading,1.6)}.text-xs{font-size:.75rem;line-height:var(--tw-leading,1.6)}.text-\[7px\]{font-size:7px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[20rem\]{font-size:20rem}.leading-\[0\.9\]{--tw-leading:.9;line-height:.9}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:700;font-weight:700}.font-extrabold{--tw-font-weight:800;font-weight:800}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-medium{--tw-font-weight:500;font-weight:500}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:600;font-weight:600}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.3em\]{--tw-tracking:.3em;letter-spacing:.3em}.tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-accent-dark{color:var(--color-accent-dark)}.text-accent\/30{color:#82ed204d}@supports (color:color-mix(in lab, red, red)){.text-accent\/30{color:color-mix(in oklab,var(--color-accent)30%,transparent)}}.text-accent\/40{color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.text-accent\/40{color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.text-accent\/50{color:#82ed2080}@supports (color:color-mix(in lab, red, red)){.text-accent\/50{color:color-mix(in oklab,var(--color-accent)50%,transparent)}}.text-accent\/60{color:#82ed2099}@supports (color:color-mix(in lab, red, red)){.text-accent\/60{color:color-mix(in oklab,var(--color-accent)60%,transparent)}}.text-accent\/80{color:#82ed20cc}@supports (color:color-mix(in lab, red, red)){.text-accent\/80{color:color-mix(in oklab,var(--color-accent)80%,transparent)}}.text-blue-500{color:var(--color-blue-500)}.text-blue-900{color:var(--color-blue-900)}.text-destructive{color:var(--color-destructive)}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-destructive\/80{color:#ef4444cc}@supports (color:color-mix(in lab, red, red)){.text-destructive\/80{color:color-mix(in oklab,var(--color-destructive)80%,transparent)}}.text-emerald-400{color:var(--color-emerald-400)}.text-green-500{color:var(--color-green-500)}.text-green-900{color:var(--color-green-900)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-dark{color:var(--color-neutral-dark)}.text-neutral-light{color:var(--color-neutral-light)}.text-orange-600{color:var(--color-orange-600)}.text-primary{color:var(--color-primary)}.text-primary-dark{color:var(--color-primary-dark)}.text-primary-light{color:var(--color-primary-light)}.text-primary\/20{color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.text-primary\/20{color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.text-primary\/40{color:#0e7a5c66}@supports (color:color-mix(in lab, red, red)){.text-primary\/40{color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.text-primary\/60{color:#0e7a5c99}@supports (color:color-mix(in lab, red, red)){.text-primary\/60{color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.text-primary\/80{color:#0e7a5ccc}@supports (color:color-mix(in lab, red, red)){.text-primary\/80{color:color-mix(in oklab,var(--color-primary)80%,transparent)}}.text-primary\/90{color:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.text-primary\/90{color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.text-purple-500{color:var(--color-purple-500)}.text-purple-900{color:var(--color-purple-900)}.text-red-300{color:var(--color-red-300)}.text-red-300\/50{color:#ffa3a380}@supports (color:color-mix(in lab, red, red)){.text-red-300\/50{color:color-mix(in oklab,var(--color-red-300)50%,transparent)}}.text-red-300\/60{color:#ffa3a399}@supports (color:color-mix(in lab, red, red)){.text-red-300\/60{color:color-mix(in oklab,var(--color-red-300)60%,transparent)}}.text-saturated{color:var(--color-saturated)}.text-saturated\/40{color:#10a37966}@supports (color:color-mix(in lab, red, red)){.text-saturated\/40{color:color-mix(in oklab,var(--color-saturated)40%,transparent)}}.text-text-light{color:var(--color-text-light)}.text-text-primary{color:var(--color-text-primary)}.text-text-primary\/70{color:#111827b3}@supports (color:color-mix(in lab, red, red)){.text-text-primary\/70{color:color-mix(in oklab,var(--color-text-primary)70%,transparent)}}.text-text-primary\/80{color:#111827cc}@supports (color:color-mix(in lab, red, red)){.text-text-primary\/80{color:color-mix(in oklab,var(--color-text-primary)80%,transparent)}}.text-text-secondary{color:var(--color-text-secondary)}.text-text-secondary\/40{color:#4b556366}@supports (color:color-mix(in lab, red, red)){.text-text-secondary\/40{color:color-mix(in oklab,var(--color-text-secondary)40%,transparent)}}.text-text-secondary\/80{color:#4b5563cc}@supports (color:color-mix(in lab, red, red)){.text-text-secondary\/80{color:color-mix(in oklab,var(--color-text-secondary)80%,transparent)}}.text-white{color:var(--color-white)}.text-white\/15{color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.text-white\/15{color:color-mix(in oklab,var(--color-white)15%,transparent)}}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab, red, red)){.text-white\/20{color:color-mix(in oklab,var(--color-white)20%,transparent)}}.text-white\/25{color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.text-white\/25{color:color-mix(in oklab,var(--color-white)25%,transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.text-white\/30{color:color-mix(in oklab,var(--color-white)30%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab, red, red)){.text-white\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.text-white\/50{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab, red, red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\/90{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-900{color:var(--color-yellow-900)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-2{text-decoration-thickness:2px}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.opacity-\[0\.03\]{opacity:.03}.mix-blend-multiply{mix-blend-mode:multiply}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_20px_-4px_rgba\(130\,237\,32\,0\.1\)\]{--tw-shadow:0 0 20px -4px var(--tw-shadow-color,#82ed201a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_30px_rgba\(17\,124\,97\,0\.15\)\]{--tw-shadow:0 0 30px var(--tw-shadow-color,#117c6126);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_32px_64px_-12px_rgba\(0\,0\,0\,0\.6\)\]{--tw-shadow:0 32px 64px -12px var(--tw-shadow-color,#0009);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_40px_100px_-20px_rgba\(0\,0\,0\,0\.6\)\]{--tw-shadow:0 40px 100px -20px var(--tw-shadow-color,#0009);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -1px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 10px 10px -5px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-accent\/20{--tw-shadow-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.shadow-accent\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent)20%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-destructive\/20{--tw-shadow-color:#ef444433}@supports (color:color-mix(in lab, red, red)){.shadow-destructive\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-destructive)20%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-saturated\/20{--tw-shadow-color:#10a37933}@supports (color:color-mix(in lab, red, red)){.shadow-saturated\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-saturated)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-accent{--tw-ring-color:var(--color-accent)}.ring-white\/20{--tw-ring-color:#fff3}@supports (color:color-mix(in lab, red, red)){.ring-white\/20{--tw-ring-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-2xl{--tw-blur:blur(var(--blur-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-\[80px\]{--tw-blur:blur(80px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-xl{--tw-blur:blur(var(--blur-xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.brightness-0{--tw-brightness:brightness(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.brightness-90{--tw-brightness:brightness(90%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.contrast-125{--tw-contrast:contrast(125%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-2xl{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-\[0_20px_30px_rgba\(0\,0\,0\,0\.4\)\]{--tw-drop-shadow-size:drop-shadow(0 20px 30px var(--tw-drop-shadow-color,#0006));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale-0{--tw-grayscale:grayscale(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale-\[50\%\]{--tw-grayscale:grayscale(50%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.saturate-50{--tw-saturate:saturate(50%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.saturate-110{--tw-saturate:saturate(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-100{transition-delay:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.duration-1000{--tw-duration:1s;transition-duration:1s}.duration-\[1\.5s\]{--tw-duration:1.5s;transition-duration:1.5s}.duration-\[3s\]{--tw-duration:3s;transition-duration:3s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.content-visibility-auto{content-visibility:auto;contain-intrinsic-size:1px 1000px}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{user-select:none}.\[-ms-overflow-style\:none\]{-ms-overflow-style:none}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[text-shadow\:_-2px_-2px_0_\#002b49\,_2px_-2px_0_\#002b49\,_-2px_2px_0_\#002b49\,_2px_2px_0_\#002b49\,_-2px_0_0_\#002b49\,_2px_0_0_\#002b49\,_0_-2px_0_\#002b49\,_0_2px_0_\#002b49\]{text-shadow:-2px -2px #002b49,2px -2px #002b49,-2px 2px #002b49,2px 2px #002b49,-2px 0 #002b49,2px 0 #002b49,0 -2px #002b49,0 2px #002b49}@media (hover:hover){.group-hover\:max-h-32:is(:where(.group):hover *){max-height:calc(var(--spacing)*32)}.group-hover\:w-16:is(:where(.group):hover *){width:calc(var(--spacing)*16)}.group-hover\:w-full:is(:where(.group):hover *){width:100%}.group-hover\:-translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:-translate-x-2:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-0:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-1\/3:is(:where(.group):hover *){--tw-translate-x:calc(1/3*100%);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-x-2:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:-translate-y-4:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing)*-4);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-y-0:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:scale-12:is(:where(.group):hover *){--tw-scale-x:12%;--tw-scale-y:12%;--tw-scale-z:12%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-100:is(:where(.group):hover *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:rotate-3:is(:where(.group):hover *){rotate:3deg}.group-hover\:rotate-90:is(:where(.group):hover *){rotate:90deg}.group-hover\:border-\[8px\]:is(:where(.group):hover *){border-style:var(--tw-border-style);border-width:8px}.group-hover\:border-\[16px\]:is(:where(.group):hover *){border-style:var(--tw-border-style);border-width:16px}.group-hover\:border-accent:is(:where(.group):hover *){border-color:var(--color-accent)}.group-hover\:border-accent\/40:is(:where(.group):hover *){border-color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.group-hover\:border-accent\/40:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.group-hover\:border-white\/20:is(:where(.group):hover *){border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.group-hover\:border-white\/20:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.group-hover\:bg-accent:is(:where(.group):hover *){background-color:var(--color-accent)}.group-hover\:bg-black\/50:is(:where(.group):hover *){background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-black\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.group-hover\:bg-emerald-600:is(:where(.group):hover *){background-color:var(--color-emerald-600)}.group-hover\:bg-neutral-dark\/5:is(:where(.group):hover *){background-color:#0a0a0a0d}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-neutral-dark\/5:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-neutral-dark)5%,transparent)}}.group-hover\:bg-neutral-light\/50:is(:where(.group):hover *){background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-neutral-light\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-neutral-light)50%,transparent)}}.group-hover\:bg-primary:is(:where(.group):hover *){background-color:var(--color-primary)}.group-hover\:bg-primary-dark:is(:where(.group):hover *){background-color:var(--color-primary-dark)}.group-hover\:bg-primary-dark\/60:is(:where(.group):hover *){background-color:#084c3999}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-primary-dark\/60:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-primary-dark)60%,transparent)}}.group-hover\:bg-primary\/50:is(:where(.group):hover *){background-color:#0e7a5c80}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-primary\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.group-hover\:bg-transparent:is(:where(.group):hover *){background-color:#0000}.group-hover\:from-primary\/90:is(:where(.group):hover *){--tw-gradient-from:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.group-hover\:from-primary\/90:is(:where(.group):hover *){--tw-gradient-from:color-mix(in oklab,var(--color-primary)90%,transparent)}}.group-hover\:from-primary\/90:is(:where(.group):hover *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.group-hover\:to-primary\/20:is(:where(.group):hover *){--tw-gradient-to:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.group-hover\:to-primary\/20:is(:where(.group):hover *){--tw-gradient-to:color-mix(in oklab,var(--color-primary)20%,transparent)}}.group-hover\:to-primary\/20:is(:where(.group):hover *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.group-hover\:text-accent:is(:where(.group):hover *){color:var(--color-accent)}.group-hover\:text-accent-dark:is(:where(.group):hover *){color:var(--color-accent-dark)}.group-hover\:text-emerald-400:is(:where(.group):hover *){color:var(--color-emerald-400)}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--color-primary)}.group-hover\:text-primary-dark:is(:where(.group):hover *){color:var(--color-primary-dark)}.group-hover\:text-text-primary:is(:where(.group):hover *){color:var(--color-text-primary)}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:underline:is(:where(.group):hover *){text-decoration-line:underline}.group-hover\:opacity-30:is(:where(.group):hover *){opacity:.3}.group-hover\:opacity-40:is(:where(.group):hover *){opacity:.4}.group-hover\:opacity-90:is(:where(.group):hover *){opacity:.9}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:grayscale-0:is(:where(.group):hover *){--tw-grayscale:grayscale(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.group-hover\:saturate-100:is(:where(.group):hover *){--tw-saturate:saturate(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.group-hover\/btn\:translate-x-1:is(:where(.group\/btn):hover *){--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/btn\:translate-x-2:is(:where(.group\/btn):hover *){--tw-translate-x:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/btn\:translate-y-0:is(:where(.group\/btn):hover *){--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\/btn\:text-primary-dark:is(:where(.group\/btn):hover *){color:var(--color-primary-dark)}.group-hover\/btn\:text-white:is(:where(.group\/btn):hover *){color:var(--color-white)}}.group-active\:w-full:is(:where(.group):active *){width:100%}.selection\:bg-primary\/10 ::selection{background-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/10 ::selection{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.selection\:bg-primary\/10::selection{background-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/10::selection{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.selection\:bg-primary\/90 ::selection{background-color:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/90 ::selection{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.selection\:bg-primary\/90::selection{background-color:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/90::selection{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.selection\:text-primary ::selection{color:var(--color-primary)}.selection\:text-primary::selection{color:var(--color-primary)}.selection\:text-white ::selection{color:var(--color-white)}.selection\:text-white::selection{color:var(--color-white)}.placeholder\:text-neutral-dark\/40::placeholder{color:#0a0a0a66}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-neutral-dark\/40::placeholder{color:color-mix(in oklab,var(--color-neutral-dark)40%,transparent)}}.placeholder\:text-white\/20::placeholder{color:#fff3}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-white\/20::placeholder{color:color-mix(in oklab,var(--color-white)20%,transparent)}}.placeholder\:text-white\/50::placeholder{color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-white\/50::placeholder{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing)*0)}.focus-within\:border-accent:focus-within{border-color:var(--color-accent)}.focus-within\:bg-white\/15:focus-within{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.focus-within\:bg-white\/15:focus-within{background-color:color-mix(in oklab,var(--color-white)15%,transparent)}}@media (hover:hover){.hover\:translate-x-1:hover{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:scale-\[1\.03\]:hover{scale:1.03}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-accent\/30:hover{border-color:#82ed204d}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/30:hover{border-color:color-mix(in oklab,var(--color-accent)30%,transparent)}}.hover\:border-accent\/40:hover{border-color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab,var(--color-accent)40%,transparent)}}.hover\:border-primary\/20:hover{border-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/20:hover{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.hover\:border-primary\/50:hover{border-color:#0e7a5c80}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.hover\:border-white:hover{border-color:var(--color-white)}.hover\:border-white\/10:hover{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/10:hover{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:border-white\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/20:hover{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-neutral-50:hover{background-color:var(--color-neutral-50)}.hover\:bg-neutral-light:hover{background-color:var(--color-neutral-light)}.hover\:bg-neutral-light\/50:hover{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-neutral-light\/50:hover{background-color:color-mix(in oklab,var(--color-neutral-light)50%,transparent)}}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-primary-dark:hover{background-color:var(--color-primary-dark)}.hover\:bg-primary\/10:hover{background-color:#0e7a5c1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.hover\:bg-primary\/20:hover{background-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.hover\:bg-primary\/90:hover{background-color:#0e7a5ce6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.08\]:hover{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-neutral-dark:hover{color:var(--color-neutral-dark)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:text-primary-dark:hover{color:var(--color-primary-dark)}.hover\:text-primary-light:hover{color:var(--color-primary-light)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-white\/60:hover{color:#fff9}@supports (color:color-mix(in lab, red, red)){.hover\:text-white\/60:hover{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.hover\:text-white\/80:hover{color:#fffc}@supports (color:color-mix(in lab, red, red)){.hover\:text-white\/80:hover{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.hover\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_0_20px_rgba\(255\,255\,255\,0\.3\)\]:hover{--tw-shadow:0 0 20px var(--tw-shadow-color,#ffffff4d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-\[0_20px_50px_rgba\(0\,0\,0\,0\.2\)\]:hover{--tw-shadow:0 20px 50px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -1px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 10px 10px -5px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-accent\/20:hover{--tw-shadow-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-accent\/20:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent)20%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-accent\/30:hover{--tw-shadow-color:#82ed204d}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-accent\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent)30%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-accent\/40:hover{--tw-shadow-color:#82ed2066}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-accent\/40:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-accent)40%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-destructive\/30:hover{--tw-shadow-color:#ef44444d}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-destructive\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-destructive)30%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-primary\/20:hover{--tw-shadow-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-primary\/20:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-primary)20%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-primary\/30:hover{--tw-shadow-color:#0e7a5c4d}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-primary\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-primary)30%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:shadow-secondary\/30:hover{--tw-shadow-color:#003d824d}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-secondary\/30:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-secondary)30%,transparent)var(--tw-shadow-alpha),transparent)}}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.hover\:grayscale-0:hover{--tw-grayscale:grayscale(0%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:top-4:focus{top:calc(var(--spacing)*4)}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:bg-white:focus{background-color:var(--color-white)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent\/20:focus{--tw-ring-color:#82ed2033}@supports (color:color-mix(in lab, red, red)){.focus\:ring-accent\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.focus\:ring-primary\/20:focus{--tw-ring-color:#0e7a5c33}@supports (color:color-mix(in lab, red, red)){.focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:var(--color-primary)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.active\:scale-\[0\.98\]:active{scale:.98}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:640px){.sm\:block{display:block}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:rounded-xl{border-radius:1rem}.sm\:text-5xl{font-size:3rem;line-height:var(--tw-leading,1.25)}}@media (min-width:768px){.md\:absolute{position:absolute}.md\:top-1\/2{top:50%}.md\:bottom-10{bottom:calc(var(--spacing)*10)}.md\:-left-8{left:calc(var(--spacing)*-8)}.md\:left-1\/2{left:50%}.md\:order-none{order:0}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:row-span-2{grid-row:span 2/span 2}.md\:-mx-12{margin-inline:calc(var(--spacing)*-12)}.md\:mx-0{margin-inline:calc(var(--spacing)*0)}.md\:-mt-20{margin-top:calc(var(--spacing)*-20)}.md\:mt-0{margin-top:calc(var(--spacing)*0)}.md\:mt-12{margin-top:calc(var(--spacing)*12)}.md\:mt-24{margin-top:calc(var(--spacing)*24)}.md\:mr-auto{margin-right:auto}.md\:mb-0{margin-bottom:calc(var(--spacing)*0)}.md\:mb-2{margin-bottom:calc(var(--spacing)*2)}.md\:mb-4{margin-bottom:calc(var(--spacing)*4)}.md\:mb-6{margin-bottom:calc(var(--spacing)*6)}.md\:mb-8{margin-bottom:calc(var(--spacing)*8)}.md\:mb-10{margin-bottom:calc(var(--spacing)*10)}.md\:mb-12{margin-bottom:calc(var(--spacing)*12)}.md\:mb-16{margin-bottom:calc(var(--spacing)*16)}.md\:mb-20{margin-bottom:calc(var(--spacing)*20)}.md\:ml-auto{margin-left:auto}.md\:line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.md\:line-clamp-none{-webkit-line-clamp:unset;-webkit-box-orient:horizontal;display:block;overflow:visible}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:aspect-\[16\/9\]{aspect-ratio:16/9}.md\:h-7{height:calc(var(--spacing)*7)}.md\:h-10{height:calc(var(--spacing)*10)}.md\:h-11{height:calc(var(--spacing)*11)}.md\:h-12{height:calc(var(--spacing)*12)}.md\:h-14{height:calc(var(--spacing)*14)}.md\:h-16{height:calc(var(--spacing)*16)}.md\:h-80{height:calc(var(--spacing)*80)}.md\:h-\[70vh\]{height:70vh}.md\:h-\[90vh\]{height:90vh}.md\:h-\[500px\]{height:500px}.md\:h-auto{height:auto}.md\:h-full{height:100%}.md\:max-h-0{max-height:calc(var(--spacing)*0)}.md\:min-h-\[70vh\]{min-height:70vh}.md\:min-h-\[500px\]{min-height:500px}.md\:min-h-\[600px\]{min-height:600px}.md\:w-1\.5{width:calc(var(--spacing)*1.5)}.md\:w-7{width:calc(var(--spacing)*7)}.md\:w-10{width:calc(var(--spacing)*10)}.md\:w-12{width:calc(var(--spacing)*12)}.md\:w-14{width:calc(var(--spacing)*14)}.md\:w-16{width:calc(var(--spacing)*16)}.md\:w-64{width:calc(var(--spacing)*64)}.md\:w-\[480px\]{width:480px}.md\:w-\[calc\(50\%-2\.5rem\)\]{width:calc(50% - 2.5rem)}.md\:w-auto{width:auto}.md\:max-w-none{max-width:none}.md\:-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:justify-start{justify-content:flex-start}.md\:gap-4{gap:calc(var(--spacing)*4)}.md\:gap-6{gap:calc(var(--spacing)*6)}.md\:gap-8{gap:calc(var(--spacing)*8)}.md\:gap-10{gap:calc(var(--spacing)*10)}.md\:gap-16{gap:calc(var(--spacing)*16)}:where(.md\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-16>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*16)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*16)*calc(1 - var(--tw-space-y-reverse)))}.md\:gap-x-12{-moz-column-gap:calc(var(--spacing)*12);column-gap:calc(var(--spacing)*12)}.md\:gap-y-8{row-gap:calc(var(--spacing)*8)}.md\:gap-y-20{row-gap:calc(var(--spacing)*20)}.md\:rounded-2xl{border-radius:1.5rem}.md\:rounded-3xl{border-radius:var(--radius-3xl)}.md\:rounded-\[32px\]{border-radius:32px}.md\:rounded-\[40px\]{border-radius:40px}.md\:rounded-r-2xl{border-top-right-radius:1.5rem;border-bottom-right-radius:1.5rem}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:border-neutral-100{border-color:var(--color-neutral-100)}.md\:p-6{padding:calc(var(--spacing)*6)}.md\:p-8{padding:calc(var(--spacing)*8)}.md\:p-10{padding:calc(var(--spacing)*10)}.md\:p-12{padding:calc(var(--spacing)*12)}.md\:p-16{padding:calc(var(--spacing)*16)}.md\:p-24{padding:calc(var(--spacing)*24)}.md\:px-4{padding-inline:calc(var(--spacing)*4)}.md\:px-6{padding-inline:calc(var(--spacing)*6)}.md\:px-8{padding-inline:calc(var(--spacing)*8)}.md\:px-10{padding-inline:calc(var(--spacing)*10)}.md\:px-12{padding-inline:calc(var(--spacing)*12)}.md\:py-0{padding-block:calc(var(--spacing)*0)}.md\:py-4{padding-block:calc(var(--spacing)*4)}.md\:py-6{padding-block:calc(var(--spacing)*6)}.md\:py-16{padding-block:calc(var(--spacing)*16)}.md\:py-24{padding-block:calc(var(--spacing)*24)}.md\:py-28{padding-block:calc(var(--spacing)*28)}.md\:py-32{padding-block:calc(var(--spacing)*32)}.md\:py-48{padding-block:calc(var(--spacing)*48)}.md\:pt-4{padding-top:calc(var(--spacing)*4)}.md\:pt-12{padding-top:calc(var(--spacing)*12)}.md\:pt-40{padding-top:calc(var(--spacing)*40)}.md\:pt-\[14\%\]{padding-top:14%}.md\:pb-4{padding-bottom:calc(var(--spacing)*4)}.md\:pb-24{padding-bottom:calc(var(--spacing)*24)}.md\:pb-32{padding-bottom:calc(var(--spacing)*32)}.md\:pb-\[12\%\]{padding-bottom:12%}.md\:pl-0{padding-left:calc(var(--spacing)*0)}.md\:pl-8{padding-left:calc(var(--spacing)*8)}.md\:pl-9{padding-left:calc(var(--spacing)*9)}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-2xl{font-size:1.5rem;line-height:var(--tw-leading,1.5)}.md\:text-3xl{font-size:1.875rem;line-height:var(--tw-leading,1.4)}.md\:text-4xl{font-size:2.25rem;line-height:var(--tw-leading,1.3)}.md\:text-5xl{font-size:3rem;line-height:var(--tw-leading,1.25)}.md\:text-6xl{font-size:3.75rem;line-height:var(--tw-leading,1.2)}.md\:text-7xl{font-size:4.5rem;line-height:var(--tw-leading,1.15)}.md\:text-8xl{font-size:6rem;line-height:var(--tw-leading,1.1)}.md\:text-base{font-size:1rem;line-height:var(--tw-leading,1.7)}.md\:text-lg{font-size:1.125rem;line-height:var(--tw-leading,1.7)}.md\:text-sm{font-size:.875rem;line-height:var(--tw-leading,1.6)}.md\:text-xl{font-size:1.25rem;line-height:var(--tw-leading,1.6)}.md\:text-xs{font-size:.75rem;line-height:var(--tw-leading,1.6)}.md\:text-\[15px\]{font-size:15px}.md\:opacity-0{opacity:0}.md\:opacity-30{opacity:.3}.md\:opacity-40{opacity:.4}.md\:opacity-60{opacity:.6}@media (hover:hover){.md\:group-hover\:border-\[12px\]:is(:where(.group):hover *){border-style:var(--tw-border-style);border-width:12px}}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:top-32{top:calc(var(--spacing)*32)}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-start-6{grid-column-start:6}.lg\:mb-0{margin-bottom:calc(var(--spacing)*0)}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:aspect-\[4\/3\]{aspect-ratio:4/3}.lg\:h-\[650px\]{height:650px}.lg\:min-h-screen{min-height:100vh}.lg\:w-1\/2{width:50%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-8{gap:calc(var(--spacing)*8)}.lg\:gap-20{gap:calc(var(--spacing)*20)}.lg\:gap-24{gap:calc(var(--spacing)*24)}.lg\:bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.lg\:bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.lg\:from-primary-dark\/20{--tw-gradient-from:#084c3933}@supports (color:color-mix(in lab, red, red)){.lg\:from-primary-dark\/20{--tw-gradient-from:color-mix(in oklab,var(--color-primary-dark)20%,transparent)}}.lg\:from-primary-dark\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.lg\:p-32{padding:calc(var(--spacing)*32)}.lg\:px-16{padding-inline:calc(var(--spacing)*16)}.lg\:py-0{padding-block:calc(var(--spacing)*0)}.lg\:py-36{padding-block:calc(var(--spacing)*36)}.lg\:text-left{text-align:left}.lg\:text-2xl{font-size:1.5rem;line-height:var(--tw-leading,1.5)}.lg\:text-3xl{font-size:1.875rem;line-height:var(--tw-leading,1.4)}.lg\:text-4xl{font-size:2.25rem;line-height:var(--tw-leading,1.3)}.lg\:text-5xl{font-size:3rem;line-height:var(--tw-leading,1.25)}.lg\:text-6xl{font-size:3.75rem;line-height:var(--tw-leading,1.2)}.lg\:text-8xl{font-size:6rem;line-height:var(--tw-leading,1.1)}.lg\:text-xl{font-size:1.25rem;line-height:var(--tw-leading,1.6)}}@media (min-width:1280px){.xl\:w-\[400px\]{width:400px}}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes draw-stroke{0%{stroke-dasharray:1;stroke-dashoffset:1px}to{stroke-dasharray:1;stroke-dashoffset:0}}@keyframes gradient-x{0%,to{background-position:0%}50%{background-position:100%}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slow-zoom{0%{transform:scale(1)}to{transform:scale(1.1)}}@keyframes slight-fade-in-from-bottom{0%{opacity:0;filter:blur(4px);transform:translateY(10px)}to{opacity:1;filter:blur();transform:translateY(0)}} diff --git a/.next/static/chunks/bb67666abbf0faf9.js b/.next/static/chunks/d029331c34817a47.js similarity index 99% rename from .next/static/chunks/bb67666abbf0faf9.js rename to .next/static/chunks/d029331c34817a47.js index 7c2485525..c591570d3 100644 --- a/.next/static/chunks/bb67666abbf0faf9.js +++ b/.next/static/chunks/d029331c34817a47.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="68c70fb4-c946-5f0c-af64-9b4d9328944b")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return c},throwForSearchParamsAccessInUseCache:function(){return l},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function l(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function c(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return l},StagedRenderingController:function(){return c}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var l=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class c{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(d),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(d),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(d),o}}function d(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},l={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(l.pathname,r)&&(l.pathname=(0,a.removePathPrefix)(l.pathname,r),l.basePath=r);let c=l.pathname;if(l.pathname.startsWith("/_next/data/")&&l.pathname.endsWith(".json")){let e=l.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");l.buildId=e[0],c="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(l.pathname=c)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(l.pathname):(0,n.normalizeLocalePath)(l.pathname,s.locales);l.locale=e.detectedLocale,l.pathname=e.pathname??l.pathname,!e.detectedLocale&&l.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(c):(0,n.normalizeLocalePath)(c,s.locales)).detectedLocale&&(l.locale=e.detectedLocale)}return l}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return g},APP_DIR_ALIAS:function(){return H},CACHE_ONE_YEAR:function(){return T},DOT_NEXT_ALIAS:function(){return D},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return Q},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return j},INSTRUMENTATION_HOOK_FILENAME:function(){return L},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return d},MIDDLEWARE_FILENAME:function(){return I},MIDDLEWARE_LOCATION_REGEXP:function(){return A},NEXT_BODY_SUFFIX:function(){return _},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return P},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return E},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return y},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return N},NEXT_CACHE_TAGS_HEADER:function(){return v},NEXT_CACHE_TAG_MAX_ITEMS:function(){return S},NEXT_CACHE_TAG_MAX_LENGTH:function(){return R},NEXT_DATA_SUFFIX:function(){return x},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return c},NEXT_META_SUFFIX:function(){return b},NEXT_QUERY_PARAM_PREFIX:function(){return l},NEXT_RESUME_HEADER:function(){return w},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return k},PRERENDER_REVALIDATE_HEADER:function(){return u},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return m},PROXY_FILENAME:function(){return O},PROXY_LOCATION_REGEXP:function(){return C},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return M},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return X},RSC_ACTION_ENCRYPTION_ALIAS:function(){return F},RSC_ACTION_PROXY_ALIAS:function(){return U},RSC_ACTION_VALIDATE_ALIAS:function(){return G},RSC_CACHE_WRAPPER_ALIAS:function(){return W},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return z},RSC_MOD_REF_PROXY_ALIAS:function(){return B},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return h},RSC_SUFFIX:function(){return p},SERVER_PROPS_EXPORT_ERROR:function(){return q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return $},SERVER_PROPS_SSG_CONFLICT:function(){return K},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return Y},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return J},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return el},WEBPACK_RESOURCE_QUERIES:function(){return ec},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",l="nxtP",c="nxtI",d="x-matched-path",u="x-prerender-revalidate",m="x-prerender-revalidate-if-generated",f=".segments",h=".segment.rsc",p=".rsc",g=".action",x=".json",b=".meta",_=".body",v="x-next-cache-tags",E="x-next-revalidated-tags",y="x-next-revalidate-tag-token",w="next-resume",S=128,R=256,N=1024,P="_N_T_",T=31536e3,j=0xfffffffe,I="middleware",A=`(?:src/)?${I}`,O="proxy",C=`(?:src/)?${O}`,L="instrumentation",k="private-next-pages",D="private-dot-next",M="private-next-root-dir",H="private-next-app-dir",B="private-next-rsc-mod-ref-proxy",G="private-next-rsc-action-validate",U="private-next-rsc-server-reference",W="private-next-rsc-cache-wrapper",z="private-next-rsc-track-dynamic-import",F="private-next-rsc-action-encryption",X="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",Y="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",$="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",K="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",J="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",Q="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},el={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},ec={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},610408,e=>{"use strict";var t=e.i(452797),r=e.i(676525),n=e.i(112086);function a(e){let{data:a}=e,i=e.title||a?.title||"DIE EXPERTEN FÜR KABELTIEFBAU",s=e.subtitle||e.description||a?.subtitle||"Wir verbinden Infrastruktur mit Präzision. Von Horizontalbohrungen bis zu komplexen Leitungsnetzen.",o=e.videoUrl||a?.videoUrl||"/assets/dummy-hero.mp4",l=a?.posterImage?.url||"/assets/photos/DJI_0048.JPG";a?.posterImage?.alt;let c=e.ctaLabel||e.linkText||a?.ctaLabel||"Unternehmen entdecken",d=e.ctaHref||e.linkHref||a?.ctaHref||"#unternehmen",u=e.secondaryCtaLabel||a?.secondaryCtaLabel||"Projekt anfragen",m=e.secondaryCtaHref||a?.secondaryCtaHref||"/kontakt";return(0,t.jsxs)("div",{className:"relative w-full h-[100svh] flex items-center justify-center overflow-hidden bg-neutral-dark",children:[(0,t.jsx)("div",{className:"absolute inset-0 z-0 bg-neutral-dark"}),o&&(0,t.jsx)("video",{className:"absolute inset-0 w-full h-full object-cover z-1 pointer-events-none filter contrast-125 saturate-110 brightness-90",src:o,poster:l,autoPlay:!0,muted:!0,loop:!0,playsInline:!0,preload:"auto"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-[#0a192f]/30 z-[2] mix-blend-multiply"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_center,_var(--tw-gradient-stops))] from-transparent via-black/20 to-black/80 z-[2]"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-neutral-dark via-neutral-dark/60 to-transparent z-[3]"}),(0,t.jsx)("div",{className:"container relative z-[4] text-center px-4",children:(0,t.jsxs)(n.motion.div,{initial:{opacity:0,y:40},animate:{opacity:1,y:0},transition:{duration:1.2,ease:[.16,1,.3,1]},children:[(0,t.jsx)("h1",{className:"font-heading font-bold text-4xl md:text-6xl lg:text-8xl text-white mb-6 uppercase tracking-tight drop-shadow-lg",dangerouslySetInnerHTML:{__html:i.replace("KABELTIEFBAU",'KABELTIEFBAU').replace(/\n/g,"
      ")}}),(0,t.jsx)("p",{className:"text-lg md:text-xl lg:text-2xl text-white/90 max-w-3xl mx-auto mb-12 drop-shadow",children:s}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-6",children:[(0,t.jsx)(r.Button,{href:d,variant:"primary",size:"lg",children:c}),(0,t.jsx)(r.Button,{href:m,variant:"outline",size:"lg",className:"border-white/60 text-white hover:text-primary hover:bg-white",children:u})]})]})})]})}e.s(["HeroVideo",()=>a])},138557,e=>{"use strict";var t=e.i(452797),r=e.i(112086),n=e.i(663067),a=e.i(976819);let i=[{title:"E-TIB GmbH",backgroundImage:"/assets/photos/DJI_0243.JPG"},{title:"E-TIB Ingenieurgesellschaft mbH",url:"https://www.etib-ing.com/",backgroundImage:"/assets/photos/DSC01137.JPG"},{title:"NEMO GmbH",url:"https://www.nemo-gmbh.de/",backgroundImage:"/assets/photos/DJI_0048.JPG"}],s={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.15}}},o={hidden:{opacity:0,y:30},visible:{opacity:1,y:0,transition:{duration:.8,ease:[.16,1,.3,1]}}};function l(e){let{data:l}=e,c=e.badge||l?.badge,d=e.title||l?.title,u=e.companies||l?.companies,m=(0,a.usePathname)(),f=m?.startsWith("/de")??!0,h=u?.map(e=>({title:e.title,url:e.url,backgroundImage:e.backgroundImage?.url||e.backgroundImage||"/assets/photos/DJI_0243.JPG"}))||i;return(0,t.jsx)("section",{id:"unternehmen",className:"py-24 bg-neutral-dark border-b border-neutral-800",children:(0,t.jsxs)("div",{className:"container relative z-10 px-4",children:[(c||d)&&(0,t.jsxs)("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[c&&(0,t.jsx)("h2",{className:"text-primary font-bold tracking-wider uppercase text-sm mb-3",children:c}),d&&(0,t.jsx)("h3",{className:"font-heading text-4xl md:text-5xl font-extrabold text-white",children:d})]}),(0,t.jsx)(r.motion.div,{className:"grid grid-cols-1 md:grid-cols-3 gap-6",variants:s,initial:"hidden",whileInView:"visible",viewport:{once:!0,margin:"-50px"},children:h.map((e,a)=>{let i=!e.url,s=i?{}:{href:e.url,target:"_blank",rel:"noopener noreferrer"},l=e.title.includes("E-TIB"),c=e.title.includes("Ingenieur"),d=e.title.includes("NEMO");return(0,t.jsx)(r.motion.div,{variants:o,className:"h-full",children:(0,t.jsxs)(i?"div":"a",{...s,className:`group relative overflow-hidden aspect-[4/3] flex flex-col justify-center items-center shadow-xl transition-all duration-500 bg-neutral-dark block w-full h-full sm:rounded-xl ${i?"border-2 border-primary shadow-[0_0_30px_rgba(17,124,97,0.15)] cursor-default":"border border-white/5 hover:shadow-2xl hover:-translate-y-1 hover:border-white/10 cursor-pointer"}`,children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-[#0a192f] z-0",children:(0,t.jsx)(n.default,{src:e.backgroundImage,alt:"Background",fill:!0,className:`object-cover transition-all duration-1000 ease-out ${i?"opacity-30 grayscale-0 scale-105":"opacity-40 grayscale-[50%] group-hover:opacity-30 group-hover:grayscale-0 group-hover:scale-110"}`,sizes:"(max-width: 768px) 100vw, 33vw"})}),(0,t.jsx)("div",{className:`absolute inset-0 z-0 transition-colors duration-700 mix-blend-multiply ${i?"bg-gradient-to-t from-[#0a192f]/90 via-[#0a192f]/60 to-[#0a192f]/40":"bg-gradient-to-t from-[#0a192f]/90 via-[#0a192f]/60 to-[#0a192f]/40 group-hover:from-primary/90 group-hover:to-primary/20"}`}),i&&(0,t.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,t.jsxs)("div",{className:"flex items-center space-x-2 bg-neutral-dark/80 backdrop-blur-md border border-primary/40 px-3 py-1.5 rounded-full shadow-lg",children:[(0,t.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,t.jsx)("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75"}),(0,t.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-primary"})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold uppercase tracking-widest text-primary/90",children:f?"Aktuell hier":"You are here"})]})}),(0,t.jsx)("div",{className:"relative z-10 flex flex-col items-center justify-center w-full h-full p-8 transform group-hover:scale-105 transition-transform duration-500",children:l?(0,t.jsxs)("div",{className:"flex flex-col items-center",children:[(0,t.jsx)("div",{className:"relative w-48 h-14 mb-2",children:(0,t.jsx)(n.default,{src:"/assets/logo-white.png",alt:"E-TIB Logo",fill:!0,className:"object-contain"})}),c&&(0,t.jsx)("div",{className:"text-white/80 tracking-[0.3em] text-xs font-semibold uppercase mt-1",children:"Ingenieurgesellschaft"})]}):d?(0,t.jsxs)("div",{className:"flex flex-col items-center",children:[(0,t.jsx)("div",{className:"text-5xl font-heading font-black text-white tracking-tight",children:"NEMO"}),(0,t.jsx)("div",{className:"text-white/60 tracking-widest text-xs font-semibold uppercase mt-1",children:"GmbH"})]}):(0,t.jsx)("div",{className:"text-2xl font-heading font-bold text-white uppercase text-center",children:e.title})}),e.url&&(0,t.jsx)("div",{className:"absolute bottom-6 left-0 right-0 flex justify-center opacity-0 group-hover:opacity-100 transform translate-y-4 group-hover:translate-y-0 transition-all duration-500 z-20",children:(0,t.jsxs)("div",{className:"flex items-center text-white font-bold uppercase text-xs tracking-widest bg-white/10 backdrop-blur-md px-4 py-2 rounded-full border border-white/20",children:["Website Besuchen",(0,t.jsx)("svg",{className:"w-4 h-4 ml-2",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,t.jsx)("path",{d:"M5 12h14M12 5l7 7-7 7"})})]})})]})},a)})})]})})}e.s(["SubCompanyTiles",()=>l])},285997,e=>{"use strict";var t=e.i(452797),r=e.i(663067),n=e.i(112086),a=e.i(907358),i=e.i(676525);function s(e){let{data:s}=e,[o,l]=(0,a.useState)(!1);(0,a.useEffect)(()=>{l(!0)},[]);let c=e.badge||s?.badge||"Leistungsspektrum",d=e.title||s?.title||"Umfassende Lösungen für komplexe Netzwerke",u=e.ctaLabel||s?.ctaLabel||"Alle Kompetenzen ansehen",m=e.ctaHref||s?.ctaHref||"/kompetenzen",f=e.items||s?.items||[];return o?(0,t.jsx)("section",{className:"py-24 bg-neutral text-neutral-dark overflow-hidden relative",children:(0,t.jsxs)("div",{className:"container",children:[(0,t.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-end mb-12",children:[(0,t.jsxs)("div",{className:"max-w-2xl",children:[(0,t.jsx)("h2",{className:"text-primary font-bold tracking-wider uppercase text-sm mb-3",children:c}),(0,t.jsx)("h3",{className:"font-heading text-4xl md:text-5xl font-extrabold text-neutral-dark mb-4",children:d})]}),(0,t.jsxs)(i.Button,{href:m,variant:"ghost",className:"mt-6 md:mt-0 bg-primary/5 hover:bg-primary/10",children:[u,(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-5 h-5 ml-2 transform group-hover:translate-x-1 transition-transform",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,t.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4 auto-rows-[220px]",children:f.map((e,a)=>{let i="large"===e.size,s="medium"===e.size,o="accent"===e.size,l=e.image?.url,c="rounded-2xl overflow-hidden relative group ";return(i?c+="md:col-span-2 md:row-span-2":s?c+="md:col-span-2 lg:col-span-2":o?c+="md:col-span-1 bg-primary text-white p-6 md:p-8 flex flex-col justify-center border-none shadow-md":c+="md:col-span-1",o)?(0,t.jsxs)(n.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{delay:.1*a},className:c,children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-primary/30 blur-3xl rounded-full -mr-10 -mt-10 group-hover:bg-primary/50 transition-colors duration-500"}),(0,t.jsx)("h4",{className:"font-bold text-xl md:text-2xl relative z-10 leading-snug",children:e.title}),e.description&&(0,t.jsx)("p",{className:"text-white/60 text-sm mt-3 relative z-10",children:e.description})]},a):(0,t.jsxs)(n.motion.div,{initial:{opacity:0,scale:.95},whileInView:{opacity:1,scale:1},viewport:{once:!0},transition:{delay:.1*a},className:c,children:[!l&&(0,t.jsx)("div",{className:"absolute inset-0 bg-neutral-dark z-0 transition-colors duration-500 group-hover:bg-primary-dark"}),l&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-white z-0",children:(0,t.jsx)(r.default,{src:l,alt:e.title||"",fill:!0,className:"object-cover opacity-90 group-hover:scale-105 group-hover:opacity-100 transition-all duration-700 ease-in-out",sizes:i?"(max-width: 768px) 100vw, 50vw":"(max-width: 768px) 100vw, 25vw"})}),(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-black/80 via-black/20 to-transparent opacity-90 transition-opacity duration-500 z-0"})]}),(0,t.jsxs)("div",{className:"relative z-10 p-8 flex flex-col justify-end h-full text-white",children:[e.tag&&(0,t.jsx)("span",{className:"inline-block px-3 py-1 bg-primary/20 backdrop-blur-md rounded-full text-xs font-bold uppercase tracking-wider text-primary-light mb-3 w-fit border border-primary/30",children:e.tag}),(0,t.jsx)("h4",{className:`font-heading font-extrabold mb-2 ${i?"text-3xl md:text-5xl":"text-xl md:text-2xl"}`,children:e.title}),e.description&&(0,t.jsx)("p",{className:`text-white/80 ${i?"text-lg md:text-xl max-w-sm":"text-sm"}`,children:e.description})]})]},a)})})]})}):(0,t.jsx)("section",{className:"py-24 bg-neutral text-neutral-dark overflow-hidden relative",children:(0,t.jsxs)("div",{className:"container",children:[(0,t.jsx)("div",{className:"flex flex-col md:flex-row justify-between items-end mb-12",children:(0,t.jsxs)("div",{className:"max-w-2xl",children:[(0,t.jsx)("h2",{className:"text-primary font-bold tracking-wider uppercase text-sm mb-3",children:c}),(0,t.jsx)("h3",{className:"font-heading text-4xl md:text-5xl font-extrabold text-neutral-dark mb-4",children:d})]})}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4 auto-rows-[220px]"})]})})}e.s(["CompetenceBentoGrid",()=>s])},677705,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(112086),a=e.i(184868),i=e.i(663067);function s(e){let{data:s}=e,o=e.references||[],l=r.useRef(null),c=e.badge||s?.badge||"Ausgewählte Projekte",d=e.title||s?.title||"Referenzen & Erfolge",u=e.description||s?.description||"Ein Auszug unserer erfolgreich abgeschlossenen Projekte im Bereich Kabeltiefbau, Bohrtechnik und Netzinfrastruktur.",m=e.ctaLabel||s?.ctaLabel||"Alle Referenzen ansehen",f=e.ctaHref||s?.ctaHref||"/referenzen";if(!o||0===o.length)return null;let h=["/assets/photos/DSC01123.JPG","/assets/photos/DSC00850.JPG","/assets/photos/DSC01129.JPG","/assets/photos/DSC00010.JPG"];return(0,t.jsxs)("section",{className:"py-24 bg-neutral-dark text-white overflow-hidden relative",children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-b from-neutral-dark via-neutral-900 to-neutral-dark z-0"}),(0,t.jsxs)("div",{className:"container relative z-10 mb-12 flex flex-col md:flex-row justify-between items-end gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-primary-light font-bold tracking-wider uppercase text-sm mb-3",children:c}),(0,t.jsx)("h3",{className:"font-heading text-4xl md:text-5xl font-extrabold",children:d})]}),(0,t.jsx)("p",{className:"text-white/60 max-w-md",children:u})]}),(0,t.jsx)("div",{className:"relative z-10",children:(0,t.jsx)("div",{ref:l,className:"flex gap-6 overflow-x-auto pb-12 pt-4 snap-x snap-mandatory px-[calc((100vw-min(100%,1280px))/2)] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",children:o.map((e,r)=>{let a=e.image&&"object"==typeof e.image&&e.image.url?e.image.url:h[r%h.length];return(0,t.jsx)(n.motion.div,{initial:{opacity:0,x:50},whileInView:{opacity:1,x:0},viewport:{once:!0},transition:{delay:.1*r,duration:.6,ease:"easeOut"},className:"flex-shrink-0 w-[320px] md:w-[480px] snap-center group cursor-pointer",children:(0,t.jsxs)("div",{className:"relative aspect-[16/10] bg-neutral-800 rounded-2xl overflow-hidden mb-5 border border-white/5 shadow-2xl",children:[(0,t.jsx)(i.default,{src:a,alt:e.title,fill:!0,sizes:"(max-width: 768px) 320px, 480px",className:"object-cover saturate-50 opacity-70 group-hover:scale-105 group-hover:opacity-100 group-hover:saturate-100 transition-all duration-700 ease-in-out"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-black/90 via-black/30 to-transparent opacity-80 group-hover:opacity-90 transition-opacity duration-300"}),(0,t.jsxs)("div",{className:"absolute bottom-6 left-8 right-8 transform translate-y-4 group-hover:translate-y-0 transition-transform duration-500",children:[(0,t.jsx)("span",{className:"inline-block py-1.5 px-4 rounded-full bg-primary/30 backdrop-blur-md text-white text-xs font-bold uppercase tracking-widest mb-3 border border-primary/50",children:e.category}),(0,t.jsx)("h4",{className:"font-heading text-2xl md:text-3xl font-bold line-clamp-2",children:e.title})]})]})},e.id)})})}),(0,t.jsx)("div",{className:"container relative z-10 mt-4 flex justify-center",children:(0,t.jsxs)(a.default,{href:f,className:"px-8 py-4 rounded-xl bg-white/5 border border-white/20 hover:bg-white hover:text-neutral-dark hover:shadow-[0_0_20px_rgba(255,255,255,0.3)] transition-all font-bold flex items-center gap-3 backdrop-blur-sm",children:[m,(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-5 h-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,t.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})})]})}e.s(["ReferencesSlider",()=>s])},813804,e=>{"use strict";var t=e.i(452797),r=e.i(184868),n=e.i(630655),a=e.i(216033);function i({href:e,eventName:i=a.AnalyticsEvents.LINK_CLICK,eventProperties:s={},className:o,children:l,onClick:c}){let{trackEvent:d}=(0,n.useAnalytics)();return(0,t.jsx)(r.default,{href:e,className:o,onClick:()=>{try{d(i,{href:e,...s})}catch{}c&&c()},children:l})}e.s(["default",()=>i])},287980,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(112086),a=e.i(651692),i=e.i(702915),s=e.i(26809),o=e.i(470919),l=e.i(967682);function c(e,t){let r,n=()=>{let{currentTime:n}=t,a=(null===n?0:n.value)/100;r!==a&&e(a),r=a};return l.frame.preUpdate(n,!0),()=>(0,l.cancelFrame)(n)}function d(e){return!("u"({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),p={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function g(e,t,r,n){let a=r[t],{length:i,position:s}=p[t],o=a.current,l=r.time;a.current=Math.abs(e[`scroll${s}`]),a.scrollLength=e[`scroll${i}`]-e[`client${i}`],a.offset.length=0,a.offset[0]=0,a.offset[1]=a.scrollLength,a.progress=(0,m.progress)(0,a.scrollLength,a.current);let c=n-l;a.velocity=c>50?0:(0,f.velocityPerSecond)(a.current-o,c)}e.i(653782);var x=e.i(498920),b=e.i(805639),_=e.i(493858),v=e.i(250438);let E={start:0,center:.5,end:1};function y(e,t,r=0){let n=0;if(e in E&&(e=E[e]),"string"==typeof e){let t=parseFloat(e);e.endsWith("px")?n=t:e.endsWith("%")?e=t/100:e.endsWith("vw")?n=t/100*document.documentElement.clientWidth:e.endsWith("vh")?n=t/100*document.documentElement.clientHeight:e=t}return"number"==typeof e&&(n=t*e),r+n}let w=[0,0],S=[[0,0],[1,1]],R={x:0,y:0},N=new WeakMap,P=new WeakMap,T=new WeakMap,j=new WeakMap,I=new WeakMap,A=e=>e===document.scrollingElement?window:e;function O(e,{container:t=document.scrollingElement,trackContentSize:r=!1,...n}={}){if(!t)return o.noop;let a=T.get(t);a||(a=new Set,T.set(t,a));let i=function(e,t,r,n={}){return{measure:t=>{!function(e,t=e,r){if(r.x.targetOffset=0,r.y.targetOffset=0,t!==e){let n=t;for(;n&&n!==e;)r.x.targetOffset+=n.offsetLeft,r.y.targetOffset+=n.offsetTop,n=n.offsetParent}r.x.targetLength=t===e?t.scrollWidth:t.clientWidth,r.y.targetLength=t===e?t.scrollHeight:t.clientHeight,r.x.containerLength=e.clientWidth,r.y.containerLength=e.clientHeight}(e,n.target,r),g(e,"x",r,t),g(e,"y",r,t),r.time=t,(n.offset||n.target)&&function(e,t,r){let{offset:n=S}=r,{target:a=e,axis:i="y"}=r,s="y"===i?"height":"width",o=a!==e?function(e,t){let r={x:0,y:0},n=e;for(;n&&n!==t;)if((0,v.isHTMLElement)(n))r.x+=n.offsetLeft,r.y+=n.offsetTop,n=n.offsetParent;else if("svg"===n.tagName){let e=n.getBoundingClientRect(),t=(n=n.parentElement).getBoundingClientRect();r.x+=e.left-t.left,r.y+=e.top-t.top}else if(n instanceof SVGGraphicsElement){let{x:e,y:t}=n.getBBox();r.x+=e,r.y+=t;let a=null,i=n.parentNode;for(;!a;)"svg"===i.tagName&&(a=i),i=n.parentNode;n=a}else break;return r}(a,e):R,l=a===e?{width:e.scrollWidth,height:e.scrollHeight}:"getBBox"in a&&"svg"!==a.tagName?a.getBBox():{width:a.clientWidth,height:a.clientHeight},c={width:e.clientWidth,height:e.clientHeight};t[i].offset.length=0;let d=!t[i].interpolate,u=n.length;for(let e=0;et(r)}}(t,e,{time:0,x:h(),y:h()},n);if(a.add(i),!N.has(t)){let e=()=>{for(let e of a)e.measure(l.frameData.timestamp);l.frame.preUpdate(r)},r=()=>{for(let e of a)e.notify()},n=()=>l.frame.read(e);N.set(t,n);let i=A(t);window.addEventListener("resize",n),t!==document.documentElement&&P.set(t,(0,u.resize)(t,n)),i.addEventListener("scroll",n),n()}if(r&&!I.has(t)){let e=N.get(t),r={width:t.scrollWidth,height:t.scrollHeight};j.set(t,r);let n=l.frame.read(()=>{let n=t.scrollWidth,a=t.scrollHeight;(r.width!==n||r.height!==a)&&(e(),r.width=n,r.height=a)},!0);I.set(t,n)}let s=N.get(t);return l.frame.read(s,!1,!0),()=>{(0,l.cancelFrame)(s);let e=T.get(t);if(!e||(e.delete(i),e.size))return;let r=N.get(t);N.delete(t),r&&(A(t).removeEventListener("scroll",r),P.get(t)?.(),window.removeEventListener("resize",r));let n=I.get(t);n&&((0,l.cancelFrame)(n),I.delete(t)),j.delete(t)}}let C=[[[[0,1],[1,1]],"entry"],[[[0,0],[1,0]],"exit"],[[[1,0],[0,1]],"cover"],[S,"contain"]],L={start:0,end:1};function k(e){if(!e)return{rangeStart:"contain 0%",rangeEnd:"contain 100%"};for(let[t,r]of C)if(function(e,t){let r=function(e){if(2!==e.length)return;let t=[];for(let r of e)if(Array.isArray(r))t.push(r);else{if("string"!=typeof r)return;let e=function(e){let t=e.trim().split(/\s+/);if(2!==t.length)return;let r=L[t[0]],n=L[t[1]];if(void 0!==r&&void 0!==n)return[r,n]}(r);if(!e)return;t.push(e)}return t}(e);if(!r)return!1;for(let e=0;e<2;e++){let n=r[e],a=t[e];if(n[0]!==a[0]||n[1]!==a[1])return!1}return!0}(e,t))return{rangeStart:`${r} 0%`,rangeEnd:`${r} 100%`}}let D=new Map;function M(e){let t={value:0},r=O(r=>{t.value=100*r[e.axis].progress},e);return{currentTime:t,cancel:r}}function H({source:e,container:t,...r}){let{axis:n}=r;e&&(t=e);let a=D.get(t);a||(a=new Map,D.set(t,a));let i=r.target??"self",s=a.get(i);s||(s={},a.set(i,s));let o=n+(r.offset??[]).join(",");return s[o]||(r.target&&d(r.target)?k(r.offset)?s[o]=new ViewTimeline({subject:r.target,axis:n}):s[o]=M({container:t,...r}):d()?s[o]=new ScrollTimeline({source:t,axis:n}):s[o]=M({container:t,...r})),s[o]}function B(e,{axis:t="y",container:r=document.scrollingElement,...n}={}){var a,i;let s,l,u;if(!r)return o.noop;let m={axis:t,container:r,...n};return"function"==typeof e?(a=e,i=m,2===a.length?O(e=>{a(e[i.axis].progress,e)},i):c(a,H(i))):(s=H(m),l=m.target?k(m.offset):void 0,u=m.target?d(m.target)&&!!l:d(),e.attachTimeline({timeline:u?s:void 0,...l&&u&&{rangeStart:l.rangeStart,rangeEnd:l.rangeEnd},observe:e=>(e.pause(),c(t=>{e.time=e.iterationDuration*t},s))}))}var G=e.i(134174),U=e.i(736986);let W=()=>({scrollX:(0,i.motionValue)(0),scrollY:(0,i.motionValue)(0),scrollXProgress:(0,i.motionValue)(0),scrollYProgress:(0,i.motionValue)(0)}),z=e=>!!e&&!e.current;function F(e,t,r,n){return{factory:a=>B(a,{...t,axis:e,container:r?.current||void 0,target:n?.current||void 0}),times:[0,1],keyframes:[0,1],ease:e=>e,duration:1}}var X=e.i(753942);function V(e,t){let n=function(e){let t=(0,G.useConstant)(()=>(0,i.motionValue)(e)),{isStatic:n}=(0,r.useContext)(X.MotionConfigContext);if(n){let[,n]=(0,r.useState)(e);(0,r.useEffect)(()=>t.on("change",n),[])}return t}(t()),a=()=>n.set(t());return a(),(0,U.useIsomorphicLayoutEffect)(()=>{let t=()=>l.frame.preRender(a,!1,!0),r=e.map(e=>e.on("change",t));return()=>{r.forEach(e=>e()),(0,l.cancelFrame)(a)}}),n}function Y(e,t){let r=(0,G.useConstant)(()=>[]);return V(e,()=>{r.length=0;let n=e.length;for(let t=0;t(l.current=B((e,{x:t,y:r})=>{o.scrollX.set(t.current),o.scrollXProgress.set(t.progress),o.scrollY.set(r.current),o.scrollYProgress.set(r.progress)},{...n,container:e?.current||void 0,target:t?.current||void 0}),()=>{l.current?.()}),[e,t,JSON.stringify(n.offset)]);return(0,U.useIsomorphicLayoutEffect)(()=>{if(c.current=!1,!(z(e)||z(t)))return d();c.current=!0},[d]),(0,r.useEffect)(()=>c.current?((0,s.invariant)(!z(e),"Container ref is defined but not hydrated","use-scroll-ref"),(0,s.invariant)(!z(t),"Target ref is defined but not hydrated","use-scroll-ref"),d()):void 0,[d]),o}({target:c,offset:["start center","end center"]}),u=function e(t,r,n,a){if("function"==typeof t){let e;return i.collectMotionValues.current=[],t(),e=V(i.collectMotionValues.current,t),i.collectMotionValues.current=void 0,e}if(void 0!==n&&!Array.isArray(n)&&"function"!=typeof r){var s=t,o=r,l=n,c=a;let i=(0,G.useConstant)(()=>Object.keys(l)),d=(0,G.useConstant)(()=>({}));for(let t of i)d[t]=e(s,o,l[t],c);return d}let d="function"==typeof r?r:function(...e){let t=!Array.isArray(e[0]),r=t?0:-1,n=e[0+r],a=e[1+r],i=e[2+r],s=e[3+r],o=(0,x.interpolate)(a,i,s);return t?o(n):o}(r,n,a),u=Array.isArray(t)?Y(t,d):Y([t],([e])=>d(e)),m=Array.isArray(t)?void 0:t.accelerate;return m&&!m.isTransformed&&"function"!=typeof r&&Array.isArray(n)&&a?.clamp!==!1&&(u.accelerate={...m,times:r,keyframes:n,isTransformed:!0,...a?.ease?{ease:a.ease}:{}}),u}(d,[0,1],["0%","100%"]);return(0,t.jsx)("section",{className:"py-24 bg-white relative",children:(0,t.jsxs)("div",{className:"container max-w-4xl",children:[(0,t.jsxs)("div",{className:"text-center mb-16",children:[(0,t.jsx)("h2",{className:"text-primary font-bold tracking-wider uppercase text-sm mb-3",children:e}),(0,t.jsx)("h3",{className:"font-heading text-4xl font-extrabold text-neutral-dark",children:o})]}),(0,t.jsxs)("div",{ref:c,className:"relative",children:[(0,t.jsx)("div",{className:"absolute left-4 md:left-1/2 top-0 bottom-0 w-1 bg-neutral-200 -translate-x-1/2 rounded-full overflow-hidden",children:(0,t.jsx)(n.motion.div,{className:"w-full bg-primary",style:{height:u}})}),(0,t.jsx)("div",{className:"space-y-12 md:space-y-0",children:l.map((e,r)=>{let a=r%2==0;return(0,t.jsxs)(n.motion.div,{initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-100px"},transition:{duration:.6},className:"relative flex flex-col w-full",children:[(0,t.jsx)("div",{className:"absolute left-4 md:left-1/2 top-8 md:top-1/2 w-6 h-6 rounded-full bg-white border-4 border-primary z-10 -translate-x-1/2 md:-translate-y-1/2 shadow-lg"}),(0,t.jsx)("div",{className:`w-full md:w-[calc(50%-2.5rem)] pl-16 md:pl-0 ${a?"md:mr-auto md:text-right":"md:ml-auto md:text-left"}`,children:(0,t.jsxs)("div",{className:"bg-neutral-50 p-6 md:p-8 rounded-2xl shadow-sm border border-neutral-100 hover:shadow-md transition-shadow relative",children:[(0,t.jsx)("span",{className:"inline-block py-1.5 px-4 rounded-full bg-primary/10 text-primary font-bold text-sm mb-4",children:e.date}),(0,t.jsx)("h4",{className:"font-heading font-bold text-2xl md:text-3xl mb-3 text-neutral-dark leading-tight",children:e.title}),(0,t.jsx)("p",{className:"text-text-secondary leading-relaxed",children:e.desc})]})})]},r)})})]})]})})}e.s(["CompanyTimeline",()=>K],287980)},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="4a77e010-6e3c-cced-afe6-b95a00016f2c")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return c},throwForSearchParamsAccessInUseCache:function(){return l},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function l(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function c(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return l},StagedRenderingController:function(){return c}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var l=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class c{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(d),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(d),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(d),o}}function d(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},l={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(l.pathname,r)&&(l.pathname=(0,a.removePathPrefix)(l.pathname,r),l.basePath=r);let c=l.pathname;if(l.pathname.startsWith("/_next/data/")&&l.pathname.endsWith(".json")){let e=l.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");l.buildId=e[0],c="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(l.pathname=c)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(l.pathname):(0,n.normalizeLocalePath)(l.pathname,s.locales);l.locale=e.detectedLocale,l.pathname=e.pathname??l.pathname,!e.detectedLocale&&l.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(c):(0,n.normalizeLocalePath)(c,s.locales)).detectedLocale&&(l.locale=e.detectedLocale)}return l}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return g},APP_DIR_ALIAS:function(){return H},CACHE_ONE_YEAR:function(){return T},DOT_NEXT_ALIAS:function(){return D},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return Q},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return j},INSTRUMENTATION_HOOK_FILENAME:function(){return L},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return d},MIDDLEWARE_FILENAME:function(){return I},MIDDLEWARE_LOCATION_REGEXP:function(){return A},NEXT_BODY_SUFFIX:function(){return _},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return P},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return E},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return y},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return N},NEXT_CACHE_TAGS_HEADER:function(){return v},NEXT_CACHE_TAG_MAX_ITEMS:function(){return S},NEXT_CACHE_TAG_MAX_LENGTH:function(){return R},NEXT_DATA_SUFFIX:function(){return x},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return c},NEXT_META_SUFFIX:function(){return b},NEXT_QUERY_PARAM_PREFIX:function(){return l},NEXT_RESUME_HEADER:function(){return w},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return k},PRERENDER_REVALIDATE_HEADER:function(){return u},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return m},PROXY_FILENAME:function(){return O},PROXY_LOCATION_REGEXP:function(){return C},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return V},ROOT_DIR_ALIAS:function(){return M},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return X},RSC_ACTION_ENCRYPTION_ALIAS:function(){return F},RSC_ACTION_PROXY_ALIAS:function(){return U},RSC_ACTION_VALIDATE_ALIAS:function(){return G},RSC_CACHE_WRAPPER_ALIAS:function(){return W},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return z},RSC_MOD_REF_PROXY_ALIAS:function(){return B},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return h},RSC_SUFFIX:function(){return p},SERVER_PROPS_EXPORT_ERROR:function(){return q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return $},SERVER_PROPS_SSG_CONFLICT:function(){return K},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return Y},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return J},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return el},WEBPACK_RESOURCE_QUERIES:function(){return ec},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",l="nxtP",c="nxtI",d="x-matched-path",u="x-prerender-revalidate",m="x-prerender-revalidate-if-generated",f=".segments",h=".segment.rsc",p=".rsc",g=".action",x=".json",b=".meta",_=".body",v="x-next-cache-tags",E="x-next-revalidated-tags",y="x-next-revalidate-tag-token",w="next-resume",S=128,R=256,N=1024,P="_N_T_",T=31536e3,j=0xfffffffe,I="middleware",A=`(?:src/)?${I}`,O="proxy",C=`(?:src/)?${O}`,L="instrumentation",k="private-next-pages",D="private-dot-next",M="private-next-root-dir",H="private-next-app-dir",B="private-next-rsc-mod-ref-proxy",G="private-next-rsc-action-validate",U="private-next-rsc-server-reference",W="private-next-rsc-cache-wrapper",z="private-next-rsc-track-dynamic-import",F="private-next-rsc-action-encryption",X="private-next-rsc-action-client-wrapper",V="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",Y="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",$="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",K="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",J="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",Q="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},el={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},ec={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),r=e.i(777616);function n(){let e=(0,r.getAppServices)();return{trackEvent:(0,t.useCallback)((t,r)=>{e.analytics.track(t,r)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>n])},216033,e=>{"use strict";e.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}])},610408,e=>{"use strict";var t=e.i(452797),r=e.i(676525),n=e.i(112086);function a(e){let{data:a}=e,i=e.title||a?.title||"DIE EXPERTEN FÜR KABELTIEFBAU",s=e.subtitle||e.description||a?.subtitle||"Wir verbinden Infrastruktur mit Präzision. Von Horizontalbohrungen bis zu komplexen Leitungsnetzen.",o=e.videoUrl||a?.videoUrl||"/assets/dummy-hero.mp4",l=a?.posterImage?.url||"/assets/photos/DJI_0048.JPG";a?.posterImage?.alt;let c=e.ctaLabel||e.linkText||a?.ctaLabel||"Unternehmen entdecken",d=e.ctaHref||e.linkHref||a?.ctaHref||"#unternehmen",u=e.secondaryCtaLabel||a?.secondaryCtaLabel||"Projekt anfragen",m=e.secondaryCtaHref||a?.secondaryCtaHref||"/kontakt";return(0,t.jsxs)("div",{className:"relative w-full h-[100svh] flex items-center justify-center overflow-hidden bg-neutral-dark",children:[(0,t.jsx)("div",{className:"absolute inset-0 z-0 bg-neutral-dark"}),o&&(0,t.jsx)("video",{className:"absolute inset-0 w-full h-full object-cover z-1 pointer-events-none filter contrast-125 saturate-110 brightness-90",src:o,poster:l,autoPlay:!0,muted:!0,loop:!0,playsInline:!0,preload:"auto"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-[#0a192f]/30 z-[2] mix-blend-multiply"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_center,_var(--tw-gradient-stops))] from-transparent via-black/20 to-black/80 z-[2]"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-neutral-dark via-neutral-dark/60 to-transparent z-[3]"}),(0,t.jsx)("div",{className:"container relative z-[4] text-center px-4",children:(0,t.jsxs)(n.motion.div,{initial:{opacity:0,y:40},animate:{opacity:1,y:0},transition:{duration:1.2,ease:[.16,1,.3,1]},children:[(0,t.jsx)("h1",{className:"font-heading font-bold text-4xl md:text-6xl lg:text-8xl text-white mb-6 uppercase tracking-tight drop-shadow-lg",dangerouslySetInnerHTML:{__html:i.replace("KABELTIEFBAU",'KABELTIEFBAU').replace(/\n/g,"
      ")}}),(0,t.jsx)("p",{className:"text-lg md:text-xl lg:text-2xl text-white/90 max-w-3xl mx-auto mb-12 drop-shadow",children:s}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-6",children:[(0,t.jsx)(r.Button,{href:d,variant:"primary",size:"lg",children:c}),(0,t.jsx)(r.Button,{href:m,variant:"outline",size:"lg",className:"border-white/60 text-white hover:text-primary hover:bg-white",children:u})]})]})})]})}e.s(["HeroVideo",()=>a])},138557,e=>{"use strict";var t=e.i(452797),r=e.i(112086),n=e.i(663067),a=e.i(976819);let i=[{title:"E-TIB GmbH",backgroundImage:"/assets/photos/DJI_0243.JPG"},{title:"E-TIB Ingenieurgesellschaft mbH",url:"https://www.etib-ing.com/",backgroundImage:"/assets/photos/DSC01137.JPG"},{title:"NEMO GmbH",url:"https://www.nemo-gmbh.de/",backgroundImage:"/assets/photos/DJI_0048.JPG"}],s={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.15}}},o={hidden:{opacity:0,y:30},visible:{opacity:1,y:0,transition:{duration:.8,ease:[.16,1,.3,1]}}};function l(e){let{data:l}=e,c=e.badge||l?.badge,d=e.title||l?.title,u=e.companies||l?.companies,m=(0,a.usePathname)(),f=m?.startsWith("/de")??!0,h=u?.map(e=>({title:e.title,url:e.url,backgroundImage:e.backgroundImage?.url||e.backgroundImage||"/assets/photos/DJI_0243.JPG"}))||i;return(0,t.jsx)("section",{id:"unternehmen",className:"py-24 bg-neutral-dark border-b border-neutral-800",children:(0,t.jsxs)("div",{className:"container relative z-10 px-4",children:[(c||d)&&(0,t.jsxs)("div",{className:"text-center max-w-3xl mx-auto mb-16",children:[c&&(0,t.jsx)("h2",{className:"text-primary font-bold tracking-wider uppercase text-sm mb-3",children:c}),d&&(0,t.jsx)("h3",{className:"font-heading text-4xl md:text-5xl font-extrabold text-white",children:d})]}),(0,t.jsx)(r.motion.div,{className:"grid grid-cols-1 md:grid-cols-3 gap-6",variants:s,initial:"hidden",whileInView:"visible",viewport:{once:!0,margin:"-50px"},children:h.map((e,a)=>{let i=!e.url,s=i?{}:{href:e.url,target:"_blank",rel:"noopener noreferrer"},l=e.title.includes("E-TIB"),c=e.title.includes("Ingenieur"),d=e.title.includes("NEMO");return(0,t.jsx)(r.motion.div,{variants:o,className:"h-full",children:(0,t.jsxs)(i?"div":"a",{...s,className:`group relative overflow-hidden aspect-[4/3] flex flex-col justify-center items-center shadow-xl transition-all duration-500 bg-neutral-dark block w-full h-full sm:rounded-xl ${i?"border-2 border-primary shadow-[0_0_30px_rgba(17,124,97,0.15)] cursor-default":"border border-white/5 hover:shadow-2xl hover:-translate-y-1 hover:border-white/10 cursor-pointer"}`,children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-[#0a192f] z-0",children:(0,t.jsx)(n.default,{src:e.backgroundImage,alt:"Background",fill:!0,className:`object-cover transition-all duration-1000 ease-out ${i?"opacity-30 grayscale-0 scale-105":"opacity-40 grayscale-[50%] group-hover:opacity-30 group-hover:grayscale-0 group-hover:scale-110"}`,sizes:"(max-width: 768px) 100vw, 33vw"})}),(0,t.jsx)("div",{className:`absolute inset-0 z-0 transition-colors duration-700 mix-blend-multiply ${i?"bg-gradient-to-t from-[#0a192f]/90 via-[#0a192f]/60 to-[#0a192f]/40":"bg-gradient-to-t from-[#0a192f]/90 via-[#0a192f]/60 to-[#0a192f]/40 group-hover:from-primary/90 group-hover:to-primary/20"}`}),i&&(0,t.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,t.jsxs)("div",{className:"flex items-center space-x-2 bg-neutral-dark/80 backdrop-blur-md border border-primary/40 px-3 py-1.5 rounded-full shadow-lg",children:[(0,t.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,t.jsx)("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75"}),(0,t.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-primary"})]}),(0,t.jsx)("span",{className:"text-[10px] font-bold uppercase tracking-widest text-primary/90",children:f?"Aktuell hier":"You are here"})]})}),(0,t.jsx)("div",{className:"relative z-10 flex flex-col items-center justify-center w-full h-full p-8 transform group-hover:scale-105 transition-transform duration-500",children:l?(0,t.jsxs)("div",{className:"flex flex-col items-center",children:[(0,t.jsx)("div",{className:"relative w-48 h-14 mb-2",children:(0,t.jsx)(n.default,{src:"/assets/logo-white.png",alt:"E-TIB Logo",fill:!0,className:"object-contain"})}),c&&(0,t.jsx)("div",{className:"text-white/80 tracking-[0.3em] text-xs font-semibold uppercase mt-1",children:"Ingenieurgesellschaft"})]}):d?(0,t.jsxs)("div",{className:"flex flex-col items-center",children:[(0,t.jsx)("div",{className:"text-5xl font-heading font-black text-white tracking-tight",children:"NEMO"}),(0,t.jsx)("div",{className:"text-white/60 tracking-widest text-xs font-semibold uppercase mt-1",children:"GmbH"})]}):(0,t.jsx)("div",{className:"text-2xl font-heading font-bold text-white uppercase text-center",children:e.title})}),e.url&&(0,t.jsx)("div",{className:"absolute bottom-6 left-0 right-0 flex justify-center opacity-0 group-hover:opacity-100 transform translate-y-4 group-hover:translate-y-0 transition-all duration-500 z-20",children:(0,t.jsxs)("div",{className:"flex items-center text-white font-bold uppercase text-xs tracking-widest bg-white/10 backdrop-blur-md px-4 py-2 rounded-full border border-white/20",children:["Website Besuchen",(0,t.jsx)("svg",{className:"w-4 h-4 ml-2",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,t.jsx)("path",{d:"M5 12h14M12 5l7 7-7 7"})})]})})]})},a)})})]})})}e.s(["SubCompanyTiles",()=>l])},285997,e=>{"use strict";var t=e.i(452797),r=e.i(663067),n=e.i(112086),a=e.i(907358),i=e.i(676525);function s(e){let{data:s}=e,[o,l]=(0,a.useState)(!1);(0,a.useEffect)(()=>{l(!0)},[]);let c=e.badge||s?.badge||"Leistungsspektrum",d=e.title||s?.title||"Umfassende Lösungen für komplexe Netzwerke",u=e.ctaLabel||s?.ctaLabel||"Alle Kompetenzen ansehen",m=e.ctaHref||s?.ctaHref||"/kompetenzen",f=e.items||s?.items||[];return o?(0,t.jsx)("section",{className:"py-24 bg-neutral text-neutral-dark overflow-hidden relative",children:(0,t.jsxs)("div",{className:"container",children:[(0,t.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-end mb-12",children:[(0,t.jsxs)("div",{className:"max-w-2xl",children:[(0,t.jsx)("h2",{className:"text-primary font-bold tracking-wider uppercase text-sm mb-3",children:c}),(0,t.jsx)("h3",{className:"font-heading text-4xl md:text-5xl font-extrabold text-neutral-dark mb-4",children:d})]}),(0,t.jsxs)(i.Button,{href:m,variant:"ghost",className:"mt-6 md:mt-0 bg-primary/5 hover:bg-primary/10",children:[u,(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-5 h-5 ml-2 transform group-hover:translate-x-1 transition-transform",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,t.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4 auto-rows-[220px]",children:f.map((e,a)=>{let i="large"===e.size,s="medium"===e.size,o="accent"===e.size,l=e.image?.url,c="rounded-2xl overflow-hidden relative group ";return(i?c+="md:col-span-2 md:row-span-2":s?c+="md:col-span-2 lg:col-span-2":o?c+="md:col-span-1 bg-primary text-white p-6 md:p-8 flex flex-col justify-center border-none shadow-md":c+="md:col-span-1",o)?(0,t.jsxs)(n.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{delay:.1*a},className:c,children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-primary/30 blur-3xl rounded-full -mr-10 -mt-10 group-hover:bg-primary/50 transition-colors duration-500"}),(0,t.jsx)("h4",{className:"font-bold text-xl md:text-2xl relative z-10 leading-snug",children:e.title}),e.description&&(0,t.jsx)("p",{className:"text-white/60 text-sm mt-3 relative z-10",children:e.description})]},a):(0,t.jsxs)(n.motion.div,{initial:{opacity:0,scale:.95},whileInView:{opacity:1,scale:1},viewport:{once:!0},transition:{delay:.1*a},className:c,children:[!l&&(0,t.jsx)("div",{className:"absolute inset-0 bg-neutral-dark z-0 transition-colors duration-500 group-hover:bg-primary-dark"}),l&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-white z-0",children:(0,t.jsx)(r.default,{src:l,alt:e.title||"",fill:!0,className:"object-cover opacity-90 group-hover:scale-105 group-hover:opacity-100 transition-all duration-700 ease-in-out",sizes:i?"(max-width: 768px) 100vw, 50vw":"(max-width: 768px) 100vw, 25vw"})}),(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-black/80 via-black/20 to-transparent opacity-90 transition-opacity duration-500 z-0"})]}),(0,t.jsxs)("div",{className:"relative z-10 p-8 flex flex-col justify-end h-full text-white",children:[e.tag&&(0,t.jsx)("span",{className:"inline-block px-3 py-1 bg-primary/20 backdrop-blur-md rounded-full text-xs font-bold uppercase tracking-wider text-primary-light mb-3 w-fit border border-primary/30",children:e.tag}),(0,t.jsx)("h4",{className:`font-heading font-extrabold mb-2 ${i?"text-3xl md:text-5xl":"text-xl md:text-2xl"}`,children:e.title}),e.description&&(0,t.jsx)("p",{className:`text-white/80 ${i?"text-lg md:text-xl max-w-sm":"text-sm"}`,children:e.description})]})]},a)})})]})}):(0,t.jsx)("section",{className:"py-24 bg-neutral text-neutral-dark overflow-hidden relative",children:(0,t.jsxs)("div",{className:"container",children:[(0,t.jsx)("div",{className:"flex flex-col md:flex-row justify-between items-end mb-12",children:(0,t.jsxs)("div",{className:"max-w-2xl",children:[(0,t.jsx)("h2",{className:"text-primary font-bold tracking-wider uppercase text-sm mb-3",children:c}),(0,t.jsx)("h3",{className:"font-heading text-4xl md:text-5xl font-extrabold text-neutral-dark mb-4",children:d})]})}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4 auto-rows-[220px]"})]})})}e.s(["CompetenceBentoGrid",()=>s])},677705,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(112086),a=e.i(184868),i=e.i(663067);function s(e){let{data:s}=e,o=e.references||[],l=r.useRef(null),c=e.badge||s?.badge||"Ausgewählte Projekte",d=e.title||s?.title||"Referenzen & Erfolge",u=e.description||s?.description||"Ein Auszug unserer erfolgreich abgeschlossenen Projekte im Bereich Kabeltiefbau, Bohrtechnik und Netzinfrastruktur.",m=e.ctaLabel||s?.ctaLabel||"Alle Referenzen ansehen",f=e.ctaHref||s?.ctaHref||"/referenzen";if(!o||0===o.length)return null;let h=["/assets/photos/DSC01123.JPG","/assets/photos/DSC00850.JPG","/assets/photos/DSC01129.JPG","/assets/photos/DSC00010.JPG"];return(0,t.jsxs)("section",{className:"py-24 bg-neutral-dark text-white overflow-hidden relative",children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-b from-neutral-dark via-neutral-900 to-neutral-dark z-0"}),(0,t.jsxs)("div",{className:"container relative z-10 mb-12 flex flex-col md:flex-row justify-between items-end gap-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-primary-light font-bold tracking-wider uppercase text-sm mb-3",children:c}),(0,t.jsx)("h3",{className:"font-heading text-4xl md:text-5xl font-extrabold",children:d})]}),(0,t.jsx)("p",{className:"text-white/60 max-w-md",children:u})]}),(0,t.jsx)("div",{className:"relative z-10",children:(0,t.jsx)("div",{ref:l,className:"flex gap-6 overflow-x-auto pb-12 pt-4 snap-x snap-mandatory px-[calc((100vw-min(100%,1280px))/2)] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",children:o.map((e,r)=>{let a=e.image&&"object"==typeof e.image&&e.image.url?e.image.url:h[r%h.length];return(0,t.jsx)(n.motion.div,{initial:{opacity:0,x:50},whileInView:{opacity:1,x:0},viewport:{once:!0},transition:{delay:.1*r,duration:.6,ease:"easeOut"},className:"flex-shrink-0 w-[320px] md:w-[480px] snap-center group cursor-pointer",children:(0,t.jsxs)("div",{className:"relative aspect-[16/10] bg-neutral-800 rounded-2xl overflow-hidden mb-5 border border-white/5 shadow-2xl",children:[(0,t.jsx)(i.default,{src:a,alt:e.title,fill:!0,sizes:"(max-width: 768px) 320px, 480px",className:"object-cover saturate-50 opacity-70 group-hover:scale-105 group-hover:opacity-100 group-hover:saturate-100 transition-all duration-700 ease-in-out"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-black/90 via-black/30 to-transparent opacity-80 group-hover:opacity-90 transition-opacity duration-300"}),(0,t.jsxs)("div",{className:"absolute bottom-6 left-8 right-8 transform translate-y-4 group-hover:translate-y-0 transition-transform duration-500",children:[(0,t.jsx)("span",{className:"inline-block py-1.5 px-4 rounded-full bg-primary/30 backdrop-blur-md text-white text-xs font-bold uppercase tracking-widest mb-3 border border-primary/50",children:e.category}),(0,t.jsx)("h4",{className:"font-heading text-2xl md:text-3xl font-bold line-clamp-2",children:e.title})]})]})},e.id)})})}),(0,t.jsx)("div",{className:"container relative z-10 mt-4 flex justify-center",children:(0,t.jsxs)(a.default,{href:f,className:"px-8 py-4 rounded-xl bg-white/5 border border-white/20 hover:bg-white hover:text-neutral-dark hover:shadow-[0_0_20px_rgba(255,255,255,0.3)] transition-all font-bold flex items-center gap-3 backdrop-blur-sm",children:[m,(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"w-5 h-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,t.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})})]})}e.s(["ReferencesSlider",()=>s])},813804,e=>{"use strict";var t=e.i(452797),r=e.i(184868),n=e.i(630655),a=e.i(216033);function i({href:e,eventName:i=a.AnalyticsEvents.LINK_CLICK,eventProperties:s={},className:o,children:l,onClick:c}){let{trackEvent:d}=(0,n.useAnalytics)();return(0,t.jsx)(r.default,{href:e,className:o,onClick:()=>{try{d(i,{href:e,...s})}catch{}c&&c()},children:l})}e.s(["default",()=>i])},287980,e=>{"use strict";var t=e.i(452797),r=e.i(907358),n=e.i(112086),a=e.i(651692),i=e.i(702915),s=e.i(26809),o=e.i(470919),l=e.i(967682);function c(e,t){let r,n=()=>{let{currentTime:n}=t,a=(null===n?0:n.value)/100;r!==a&&e(a),r=a};return l.frame.preUpdate(n,!0),()=>(0,l.cancelFrame)(n)}function d(e){return!("u"({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),p={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function g(e,t,r,n){let a=r[t],{length:i,position:s}=p[t],o=a.current,l=r.time;a.current=Math.abs(e[`scroll${s}`]),a.scrollLength=e[`scroll${i}`]-e[`client${i}`],a.offset.length=0,a.offset[0]=0,a.offset[1]=a.scrollLength,a.progress=(0,m.progress)(0,a.scrollLength,a.current);let c=n-l;a.velocity=c>50?0:(0,f.velocityPerSecond)(a.current-o,c)}e.i(653782);var x=e.i(498920),b=e.i(805639),_=e.i(493858),v=e.i(250438);let E={start:0,center:.5,end:1};function y(e,t,r=0){let n=0;if(e in E&&(e=E[e]),"string"==typeof e){let t=parseFloat(e);e.endsWith("px")?n=t:e.endsWith("%")?e=t/100:e.endsWith("vw")?n=t/100*document.documentElement.clientWidth:e.endsWith("vh")?n=t/100*document.documentElement.clientHeight:e=t}return"number"==typeof e&&(n=t*e),r+n}let w=[0,0],S=[[0,0],[1,1]],R={x:0,y:0},N=new WeakMap,P=new WeakMap,T=new WeakMap,j=new WeakMap,I=new WeakMap,A=e=>e===document.scrollingElement?window:e;function O(e,{container:t=document.scrollingElement,trackContentSize:r=!1,...n}={}){if(!t)return o.noop;let a=T.get(t);a||(a=new Set,T.set(t,a));let i=function(e,t,r,n={}){return{measure:t=>{!function(e,t=e,r){if(r.x.targetOffset=0,r.y.targetOffset=0,t!==e){let n=t;for(;n&&n!==e;)r.x.targetOffset+=n.offsetLeft,r.y.targetOffset+=n.offsetTop,n=n.offsetParent}r.x.targetLength=t===e?t.scrollWidth:t.clientWidth,r.y.targetLength=t===e?t.scrollHeight:t.clientHeight,r.x.containerLength=e.clientWidth,r.y.containerLength=e.clientHeight}(e,n.target,r),g(e,"x",r,t),g(e,"y",r,t),r.time=t,(n.offset||n.target)&&function(e,t,r){let{offset:n=S}=r,{target:a=e,axis:i="y"}=r,s="y"===i?"height":"width",o=a!==e?function(e,t){let r={x:0,y:0},n=e;for(;n&&n!==t;)if((0,v.isHTMLElement)(n))r.x+=n.offsetLeft,r.y+=n.offsetTop,n=n.offsetParent;else if("svg"===n.tagName){let e=n.getBoundingClientRect(),t=(n=n.parentElement).getBoundingClientRect();r.x+=e.left-t.left,r.y+=e.top-t.top}else if(n instanceof SVGGraphicsElement){let{x:e,y:t}=n.getBBox();r.x+=e,r.y+=t;let a=null,i=n.parentNode;for(;!a;)"svg"===i.tagName&&(a=i),i=n.parentNode;n=a}else break;return r}(a,e):R,l=a===e?{width:e.scrollWidth,height:e.scrollHeight}:"getBBox"in a&&"svg"!==a.tagName?a.getBBox():{width:a.clientWidth,height:a.clientHeight},c={width:e.clientWidth,height:e.clientHeight};t[i].offset.length=0;let d=!t[i].interpolate,u=n.length;for(let e=0;et(r)}}(t,e,{time:0,x:h(),y:h()},n);if(a.add(i),!N.has(t)){let e=()=>{for(let e of a)e.measure(l.frameData.timestamp);l.frame.preUpdate(r)},r=()=>{for(let e of a)e.notify()},n=()=>l.frame.read(e);N.set(t,n);let i=A(t);window.addEventListener("resize",n),t!==document.documentElement&&P.set(t,(0,u.resize)(t,n)),i.addEventListener("scroll",n),n()}if(r&&!I.has(t)){let e=N.get(t),r={width:t.scrollWidth,height:t.scrollHeight};j.set(t,r);let n=l.frame.read(()=>{let n=t.scrollWidth,a=t.scrollHeight;(r.width!==n||r.height!==a)&&(e(),r.width=n,r.height=a)},!0);I.set(t,n)}let s=N.get(t);return l.frame.read(s,!1,!0),()=>{(0,l.cancelFrame)(s);let e=T.get(t);if(!e||(e.delete(i),e.size))return;let r=N.get(t);N.delete(t),r&&(A(t).removeEventListener("scroll",r),P.get(t)?.(),window.removeEventListener("resize",r));let n=I.get(t);n&&((0,l.cancelFrame)(n),I.delete(t)),j.delete(t)}}let C=[[[[0,1],[1,1]],"entry"],[[[0,0],[1,0]],"exit"],[[[1,0],[0,1]],"cover"],[S,"contain"]],L={start:0,end:1};function k(e){if(!e)return{rangeStart:"contain 0%",rangeEnd:"contain 100%"};for(let[t,r]of C)if(function(e,t){let r=function(e){if(2!==e.length)return;let t=[];for(let r of e)if(Array.isArray(r))t.push(r);else{if("string"!=typeof r)return;let e=function(e){let t=e.trim().split(/\s+/);if(2!==t.length)return;let r=L[t[0]],n=L[t[1]];if(void 0!==r&&void 0!==n)return[r,n]}(r);if(!e)return;t.push(e)}return t}(e);if(!r)return!1;for(let e=0;e<2;e++){let n=r[e],a=t[e];if(n[0]!==a[0]||n[1]!==a[1])return!1}return!0}(e,t))return{rangeStart:`${r} 0%`,rangeEnd:`${r} 100%`}}let D=new Map;function M(e){let t={value:0},r=O(r=>{t.value=100*r[e.axis].progress},e);return{currentTime:t,cancel:r}}function H({source:e,container:t,...r}){let{axis:n}=r;e&&(t=e);let a=D.get(t);a||(a=new Map,D.set(t,a));let i=r.target??"self",s=a.get(i);s||(s={},a.set(i,s));let o=n+(r.offset??[]).join(",");return s[o]||(r.target&&d(r.target)?k(r.offset)?s[o]=new ViewTimeline({subject:r.target,axis:n}):s[o]=M({container:t,...r}):d()?s[o]=new ScrollTimeline({source:t,axis:n}):s[o]=M({container:t,...r})),s[o]}function B(e,{axis:t="y",container:r=document.scrollingElement,...n}={}){var a,i;let s,l,u;if(!r)return o.noop;let m={axis:t,container:r,...n};return"function"==typeof e?(a=e,i=m,2===a.length?O(e=>{a(e[i.axis].progress,e)},i):c(a,H(i))):(s=H(m),l=m.target?k(m.offset):void 0,u=m.target?d(m.target)&&!!l:d(),e.attachTimeline({timeline:u?s:void 0,...l&&u&&{rangeStart:l.rangeStart,rangeEnd:l.rangeEnd},observe:e=>(e.pause(),c(t=>{e.time=e.iterationDuration*t},s))}))}var G=e.i(134174),U=e.i(736986);let W=()=>({scrollX:(0,i.motionValue)(0),scrollY:(0,i.motionValue)(0),scrollXProgress:(0,i.motionValue)(0),scrollYProgress:(0,i.motionValue)(0)}),z=e=>!!e&&!e.current;function F(e,t,r,n){return{factory:a=>B(a,{...t,axis:e,container:r?.current||void 0,target:n?.current||void 0}),times:[0,1],keyframes:[0,1],ease:e=>e,duration:1}}var X=e.i(753942);function V(e,t){let n=function(e){let t=(0,G.useConstant)(()=>(0,i.motionValue)(e)),{isStatic:n}=(0,r.useContext)(X.MotionConfigContext);if(n){let[,n]=(0,r.useState)(e);(0,r.useEffect)(()=>t.on("change",n),[])}return t}(t()),a=()=>n.set(t());return a(),(0,U.useIsomorphicLayoutEffect)(()=>{let t=()=>l.frame.preRender(a,!1,!0),r=e.map(e=>e.on("change",t));return()=>{r.forEach(e=>e()),(0,l.cancelFrame)(a)}}),n}function Y(e,t){let r=(0,G.useConstant)(()=>[]);return V(e,()=>{r.length=0;let n=e.length;for(let t=0;t(l.current=B((e,{x:t,y:r})=>{o.scrollX.set(t.current),o.scrollXProgress.set(t.progress),o.scrollY.set(r.current),o.scrollYProgress.set(r.progress)},{...n,container:e?.current||void 0,target:t?.current||void 0}),()=>{l.current?.()}),[e,t,JSON.stringify(n.offset)]);return(0,U.useIsomorphicLayoutEffect)(()=>{if(c.current=!1,!(z(e)||z(t)))return d();c.current=!0},[d]),(0,r.useEffect)(()=>c.current?((0,s.invariant)(!z(e),"Container ref is defined but not hydrated","use-scroll-ref"),(0,s.invariant)(!z(t),"Target ref is defined but not hydrated","use-scroll-ref"),d()):void 0,[d]),o}({target:c,offset:["start center","end center"]}),u=function e(t,r,n,a){if("function"==typeof t){let e;return i.collectMotionValues.current=[],t(),e=V(i.collectMotionValues.current,t),i.collectMotionValues.current=void 0,e}if(void 0!==n&&!Array.isArray(n)&&"function"!=typeof r){var s=t,o=r,l=n,c=a;let i=(0,G.useConstant)(()=>Object.keys(l)),d=(0,G.useConstant)(()=>({}));for(let t of i)d[t]=e(s,o,l[t],c);return d}let d="function"==typeof r?r:function(...e){let t=!Array.isArray(e[0]),r=t?0:-1,n=e[0+r],a=e[1+r],i=e[2+r],s=e[3+r],o=(0,x.interpolate)(a,i,s);return t?o(n):o}(r,n,a),u=Array.isArray(t)?Y(t,d):Y([t],([e])=>d(e)),m=Array.isArray(t)?void 0:t.accelerate;return m&&!m.isTransformed&&"function"!=typeof r&&Array.isArray(n)&&a?.clamp!==!1&&(u.accelerate={...m,times:r,keyframes:n,isTransformed:!0,...a?.ease?{ease:a.ease}:{}}),u}(d,[0,1],["0%","100%"]);return(0,t.jsx)("section",{className:"py-24 bg-white relative",children:(0,t.jsxs)("div",{className:"container max-w-4xl",children:[(0,t.jsxs)("div",{className:"text-center mb-16",children:[(0,t.jsx)("h2",{className:"text-primary font-bold tracking-wider uppercase text-sm mb-3",children:e}),(0,t.jsx)("h3",{className:"font-heading text-4xl font-extrabold text-neutral-dark",children:o})]}),(0,t.jsxs)("div",{ref:c,className:"relative",children:[(0,t.jsx)("div",{className:"absolute left-4 md:left-1/2 top-0 bottom-0 w-1 bg-neutral-200 -translate-x-1/2 rounded-full overflow-hidden",children:(0,t.jsx)(n.motion.div,{className:"w-full bg-primary",style:{height:u}})}),(0,t.jsx)("div",{className:"space-y-12 md:space-y-0",children:l.map((e,r)=>{let a=r%2==0;return(0,t.jsxs)(n.motion.div,{initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-100px"},transition:{duration:.6},className:"relative flex flex-col w-full",children:[(0,t.jsx)("div",{className:"absolute left-4 md:left-1/2 top-8 md:top-1/2 w-6 h-6 rounded-full bg-white border-4 border-primary z-10 -translate-x-1/2 md:-translate-y-1/2 shadow-lg"}),(0,t.jsx)("div",{className:`w-full md:w-[calc(50%-2.5rem)] pl-16 md:pl-0 ${a?"md:mr-auto md:text-right":"md:ml-auto md:text-left"}`,children:(0,t.jsxs)("div",{className:"bg-neutral-50 p-6 md:p-8 rounded-2xl shadow-sm border border-neutral-100 hover:shadow-md transition-shadow relative",children:[(0,t.jsx)("span",{className:"inline-block py-1.5 px-4 rounded-full bg-primary/10 text-primary font-bold text-sm mb-4",children:e.date}),(0,t.jsx)("h4",{className:"font-heading font-bold text-2xl md:text-3xl mb-3 text-neutral-dark leading-tight",children:e.title}),(0,t.jsx)("p",{className:"text-text-secondary leading-relaxed",children:e.desc})]})})]},r)})})]})]})})}e.s(["CompanyTimeline",()=>K],287980)},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); -//# debugId=68c70fb4-c946-5f0c-af64-9b4d9328944b \ No newline at end of file +//# debugId=4a77e010-6e3c-cced-afe6-b95a00016f2c \ No newline at end of file diff --git a/.next/static/chunks/092693b3be4c94df.js b/.next/static/chunks/fd2d3a68c2dda793.js similarity index 99% rename from .next/static/chunks/092693b3be4c94df.js rename to .next/static/chunks/fd2d3a68c2dda793.js index b61beda2e..d56822e5b 100644 --- a/.next/static/chunks/092693b3be4c94df.js +++ b/.next/static/chunks/fd2d3a68c2dda793.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="9a232c44-b399-b777-1680-6228398070a0")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,n){let r=Reflect.get(e,t,n);return"function"==typeof r?r.bind(e):r}static set(e,t,n,r){return Reflect.set(e,t,n,r)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return r}});let r=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return r.afterTaskAsyncStorageInstance}});let r=e.r(365278)},780329,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={isRequestAPICallableInsideAfter:function(){return c},throwForSearchParamsAccessInUseCache:function(){return u},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return s}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let a=e.r(579781),o=e.r(517110);function s(e,t){throw Object.defineProperty(new a.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function u(e,t){let n=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(n,t),e.invalidDynamicUsageError??=n,n}function c(){let e=o.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i={RenderStage:function(){return u},StagedRenderingController:function(){return c}};for(var a in i)Object.defineProperty(n,a,{enumerable:!0,get:i[a]});let o=e.r(436120),s=e.r(444841);var u=((r={})[r.Before=1]="Before",r[r.Static=2]="Static",r[r.Runtime=3]="Runtime",r[r.Dynamic=4]="Dynamic",r[r.Abandoned=5]="Abandoned",r);class c{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,s.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,s.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(d),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(d),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new o.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{r.then(e.bind(null,a),t)}),void 0!==i&&(o.displayName=i),o);return this.abortSignal&&s.catch(d),s}}function d(){}},118720,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"addPathSuffix",{enumerable:!0,get:function(){return i}});let r=e.r(506985);function i(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:n,query:i,hash:a}=(0,r.parsePath)(e);return`${n}${t}${i}${a}`}},446247,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"addLocale",{enumerable:!0,get:function(){return a}});let r=e.r(688391),i=e.r(712550);function a(e,t,n,a){if(!t||t===n)return e;let o=e.toLowerCase();return!a&&((0,i.pathHasPrefix)(o,"/api")||(0,i.pathHasPrefix)(o,`/${t.toLowerCase()}`))?e:(0,r.addPathPrefix)(e,`/${t}`)}},971560,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"formatNextPathnameInfo",{enumerable:!0,get:function(){return s}});let r=e.r(895708),i=e.r(688391),a=e.r(118720),o=e.r(446247);function s(e){let t=(0,o.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,r.removeTrailingSlash)(t)),e.buildId&&(t=(0,a.addPathSuffix)((0,i.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,i.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,a.addPathSuffix)(t,"/"):(0,r.removeTrailingSlash)(t)}},866140,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"normalizeLocalePath",{enumerable:!0,get:function(){return i}});let r=new WeakMap;function i(e,t){let n;if(!t)return{pathname:e};let i=r.get(t);i||(i=t.map(e=>e.toLowerCase()),r.set(t,i));let a=e.split("/",2);if(!a[1])return{pathname:e};let o=a[1].toLowerCase(),s=i.indexOf(o);return s<0?{pathname:e}:(n=t[s],{pathname:e=e.slice(n.length+1)||"/",detectedLocale:n})}},857436,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"removePathPrefix",{enumerable:!0,get:function(){return i}});let r=e.r(712550);function i(e,t){if(!(0,r.pathHasPrefix)(e,t))return e;let n=e.slice(t.length);return n.startsWith("/")?n:`/${n}`}},707723,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getNextPathnameInfo",{enumerable:!0,get:function(){return o}});let r=e.r(866140),i=e.r(857436),a=e.r(712550);function o(e,t){let{basePath:n,i18n:o,trailingSlash:s}=t.nextConfig??{},u={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):s};n&&(0,a.pathHasPrefix)(u.pathname,n)&&(u.pathname=(0,i.removePathPrefix)(u.pathname,n),u.basePath=n);let c=u.pathname;if(u.pathname.startsWith("/_next/data/")&&u.pathname.endsWith(".json")){let e=u.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");u.buildId=e[0],c="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(u.pathname=c)}if(o){let e=t.i18nProvider?t.i18nProvider.analyze(u.pathname):(0,r.normalizeLocalePath)(u.pathname,o.locales);u.locale=e.detectedLocale,u.pathname=e.pathname??u.pathname,!e.detectedLocale&&u.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(c):(0,r.normalizeLocalePath)(c,o.locales)).detectedLocale&&(u.locale=e.detectedLocale)}return u}},955973,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={ACTION_SUFFIX:function(){return g},APP_DIR_ALIAS:function(){return X},CACHE_ONE_YEAR:function(){return C},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ei},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return o},INFINITE_CACHE:function(){return O},INSTRUMENTATION_HOOK_FILENAME:function(){return D},JSON_CONTENT_TYPE_HEADER:function(){return s},MATCHED_PATH_HEADER:function(){return d},MIDDLEWARE_FILENAME:function(){return N},MIDDLEWARE_LOCATION_REGEXP:function(){return L},NEXT_BODY_SUFFIX:function(){return S},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return I},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return P},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return R},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return y},NEXT_CACHE_TAGS_HEADER:function(){return v},NEXT_CACHE_TAG_MAX_ITEMS:function(){return b},NEXT_CACHE_TAG_MAX_LENGTH:function(){return A},NEXT_DATA_SUFFIX:function(){return _},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return c},NEXT_META_SUFFIX:function(){return E},NEXT_QUERY_PARAM_PREFIX:function(){return u},NEXT_RESUME_HEADER:function(){return T},NON_STANDARD_NODE_ENV:function(){return en},PAGES_DIR_ALIAS:function(){return j},PRERENDER_REVALIDATE_HEADER:function(){return l},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return f},PROXY_FILENAME:function(){return x},PROXY_LOCATION_REGEXP:function(){return w},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return $},ROOT_DIR_ALIAS:function(){return F},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return B},RSC_CACHE_WRAPPER_ALIAS:function(){return k},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return U},RSC_MOD_REF_PROXY_ALIAS:function(){return H},RSC_SEGMENTS_DIR_SUFFIX:function(){return p},RSC_SEGMENT_SUFFIX:function(){return m},RSC_SUFFIX:function(){return h},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ea},SSG_FALLBACK_EXPORT_ERROR:function(){return er},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return V},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return a},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return eu},WEBPACK_RESOURCE_QUERIES:function(){return ec},WEB_SOCKET_MAX_RECONNECTIONS:function(){return eo}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let a="text/plain",o="text/html; charset=utf-8",s="application/json; charset=utf-8",u="nxtP",c="nxtI",d="x-matched-path",l="x-prerender-revalidate",f="x-prerender-revalidate-if-generated",p=".segments",m=".segment.rsc",h=".rsc",g=".action",_=".json",E=".meta",S=".body",v="x-next-cache-tags",P="x-next-revalidated-tags",R="x-next-revalidate-tag-token",T="next-resume",b=128,A=256,y=1024,I="_N_T_",C=31536e3,O=0xfffffffe,N="middleware",L=`(?:src/)?${N}`,x="proxy",w=`(?:src/)?${x}`,D="instrumentation",j="private-next-pages",M="private-dot-next",F="private-next-root-dir",X="private-next-app-dir",H="private-next-rsc-mod-ref-proxy",B="private-next-rsc-action-validate",G="private-next-rsc-server-reference",k="private-next-rsc-cache-wrapper",U="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",$="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",V="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",en='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',er="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ei=["app","pages","components","lib","src"],ea={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},eo=12,es={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},eu={...es,GROUP:{builtinReact:[es.reactServerComponents,es.actionBrowser],serverOnly:[es.reactServerComponents,es.actionBrowser,es.instrument,es.middleware],neutralTarget:[es.apiNode,es.apiEdge],clientOnly:[es.serverSideRendering,es.appPagesBrowser],bundled:[es.reactServerComponents,es.actionBrowser,es.serverSideRendering,es.appPagesBrowser,es.shared,es.instrument,es.middleware],appPages:[es.reactServerComponents,es.serverSideRendering,es.appPagesBrowser,es.actionBrowser]}},ec={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),n=e.i(777616);function r(){let e=(0,n.getAppServices)();return{trackEvent:(0,t.useCallback)((t,n)=>{e.analytics.track(t,n)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>r])},182069,(e,t,n)=>{!function(){"use strict";var e={};e.d=function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},e.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},void 0!==e&&(e.ab="/ROOT/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/compiled/web-vitals/");var n={};e.r(n),e.d(n,{CLSThresholds:function(){return I},FCPThresholds:function(){return A},FIDThresholds:function(){return ee},INPThresholds:function(){return B},LCPThresholds:function(){return k},TTFBThresholds:function(){return Y},onCLS:function(){return C},onFCP:function(){return y},onFID:function(){return et},onINP:function(){return G},onLCP:function(){return W},onTTFB:function(){return V}});var r,i,a,o,s,u=-1,c=function(e){addEventListener("pageshow",function(t){t.persisted&&(u=t.timeStamp,e(t))},!0)},d=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart=0?r="back-forward-cache":n&&(document.prerendering||l()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(0x82f79cd8fff*Math.random())+1e12),navigationType:r}},p=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver(function(e){Promise.resolve().then(function(){t(e.getEntries())})});return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},m=function(e,t,n,r){var i,a;return function(o){var s;t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,s=t.value,t.rating=s>n[1]?"poor":s>n[0]?"needs-improvement":"good",e(t))}},h=function(e){requestAnimationFrame(function(){return requestAnimationFrame(function(){return e()})})},g=function(e){document.addEventListener("visibilitychange",function(){"hidden"===document.visibilityState&&e()})},_=function(e){var t=!1;return function(){t||(e(),t=!0)}},E=-1,S=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},v=function(e){"hidden"===document.visibilityState&&E>-1&&(E="visibilitychange"===e.type?e.timeStamp:0,R())},P=function(){addEventListener("visibilitychange",v,!0),addEventListener("prerenderingchange",v,!0)},R=function(){removeEventListener("visibilitychange",v,!0),removeEventListener("prerenderingchange",v,!0)},T=function(){return E<0&&(E=S(),P(),c(function(){setTimeout(function(){E=S(),P()},0)})),{get firstHiddenTime(){return E}}},b=function(e){document.prerendering?addEventListener("prerenderingchange",function(){return e()},!0):e()},A=[1800,3e3],y=function(e,t){t=t||{},b(function(){var n,r=T(),i=f("FCP"),a=p("paint",function(e){e.forEach(function(e){"first-contentful-paint"===e.name&&(a.disconnect(),e.startTimer.value&&(r.value=i,r.entries=a,n())},s=p("layout-shift",o);s&&(n=m(e,r,I,t.reportAllChanges),g(function(){o(s.takeRecords()),n(!0)}),c(function(){i=0,n=m(e,r=f("CLS",0),I,t.reportAllChanges),h(function(){return n()})}),setTimeout(n,0))}))},O=0,N=1/0,L=0,x=function(e){e.forEach(function(e){e.interactionId&&(N=Math.min(N,e.interactionId),O=(L=Math.max(L,e.interactionId))?(L-N)/7+1:0)})},w=function(){"interactionCount"in performance||r||(r=p("event",x,{type:"event",buffered:!0,durationThreshold:0}))},D=[],j=new Map,M=0,F=[],X=function(e){if(F.forEach(function(t){return t(e)}),e.interactionId||"first-input"===e.entryType){var t=D[D.length-1],n=j.get(e.interactionId);if(n||D.length<10||e.duration>t.latency){if(n)e.duration>n.latency?(n.entries=[e],n.latency=e.duration):e.duration===n.latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};j.set(r.id,r),D.push(r)}D.sort(function(e,t){return t.latency-e.latency}),D.length>10&&D.splice(10).forEach(function(e){return j.delete(e.id)})}}},H=function(e){var t=self.requestIdleCallback||self.setTimeout,n=-1;return e=_(e),"hidden"===document.visibilityState?e():(n=t(e),g(e)),n},B=[200,500],G=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},b(function(){w();var n,i,a=f("INP"),o=function(e){H(function(){e.forEach(X);var t,n=(t=Math.min(D.length-1,Math.floor(((r?O:performance.interactionCount||0)-M)/50)),D[t]);n&&n.latency!==a.value&&(a.value=n.latency,a.entries=n.entries,i())})},s=p("event",o,{durationThreshold:null!=(n=t.durationThreshold)?n:40});i=m(e,a,B,t.reportAllChanges),s&&(s.observe({type:"first-input",buffered:!0}),g(function(){o(s.takeRecords()),i(!0)}),c(function(){M=0,D.length=0,j.clear(),i=m(e,a=f("INP"),B,t.reportAllChanges)}))}))},k=[2500,4e3],U={},W=function(e,t){t=t||{},b(function(){var n,r=T(),i=f("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach(function(e){e.startTime=0&&a1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?(t=function(){z(i,e),r()},n=function(){r()},r=function(){removeEventListener("pointerup",t,K),removeEventListener("pointercancel",n,K)},addEventListener("pointerup",t,K),addEventListener("pointercancel",n,K)):z(i,e)}},Z=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach(function(t){return e(t,J,K)})},ee=[100,300],et=function(e,t){t=t||{},b(function(){var n,r=T(),o=f("FID"),u=function(e){e.startTime{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"useReportWebVitals",{enumerable:!0,get:function(){return a}});let r=e.r(907358),i=e.r(182069);function a(e){(0,r.useEffect)(()=>{(0,i.onCLS)(e),(0,i.onFID)(e),(0,i.onLCP)(e),(0,i.onINP)(e),(0,i.onFCP)(e),(0,i.onTTFB)(e)},[e])}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},729932,(e,t,n)=>{t.exports=e.r(34986)},727825,e=>{"use strict";var t=e.i(729932),n=e.i(630655);function r(){let{trackEvent:e}=(0,n.useAnalytics)();return(0,t.useReportWebVitals)(t=>{let{name:n,value:r,id:i,label:a}=t,o="good";"LCP"===n?r>4e3?o="poor":r>2500&&(o="needs-improvement"):"CLS"===n?r>.25?o="poor":r>.1&&(o="needs-improvement"):"FID"===n?r>300?o="poor":r>100&&(o="needs-improvement"):"FCP"===n?r>3e3?o="poor":r>1800&&(o="needs-improvement"):"TTFB"===n?r>1500?o="poor":r>800&&(o="needs-improvement"):"INP"===n&&(r>500?o="poor":r>200&&(o="needs-improvement")),e("web-vital",{metric:n,value:Math.round("CLS"===n?1e3*r:r),rating:o,id:i,label:a,path:window.location.pathname})}),null}e.s(["default",()=>r])},950648,e=>{e.n(e.i(727825))},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="ae60b5aa-7d43-b3f2-2f6c-0c6549561aef")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,n){let r=Reflect.get(e,t,n);return"function"==typeof r?r.bind(e):r}static set(e,t,n,r){return Reflect.set(e,t,n,r)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return r}});let r=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return r.afterTaskAsyncStorageInstance}});let r=e.r(365278)},780329,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={isRequestAPICallableInsideAfter:function(){return c},throwForSearchParamsAccessInUseCache:function(){return u},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return s}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let a=e.r(579781),o=e.r(517110);function s(e,t){throw Object.defineProperty(new a.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function u(e,t){let n=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(n,t),e.invalidDynamicUsageError??=n,n}function c(){let e=o.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i={RenderStage:function(){return u},StagedRenderingController:function(){return c}};for(var a in i)Object.defineProperty(n,a,{enumerable:!0,get:i[a]});let o=e.r(436120),s=e.r(444841);var u=((r={})[r.Before=1]="Before",r[r.Static=2]="Static",r[r.Runtime=3]="Runtime",r[r.Dynamic=4]="Dynamic",r[r.Abandoned=5]="Abandoned",r);class c{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,s.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,s.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(d),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(d),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new o.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{r.then(e.bind(null,a),t)}),void 0!==i&&(o.displayName=i),o);return this.abortSignal&&s.catch(d),s}}function d(){}},118720,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"addPathSuffix",{enumerable:!0,get:function(){return i}});let r=e.r(506985);function i(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:n,query:i,hash:a}=(0,r.parsePath)(e);return`${n}${t}${i}${a}`}},446247,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"addLocale",{enumerable:!0,get:function(){return a}});let r=e.r(688391),i=e.r(712550);function a(e,t,n,a){if(!t||t===n)return e;let o=e.toLowerCase();return!a&&((0,i.pathHasPrefix)(o,"/api")||(0,i.pathHasPrefix)(o,`/${t.toLowerCase()}`))?e:(0,r.addPathPrefix)(e,`/${t}`)}},971560,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"formatNextPathnameInfo",{enumerable:!0,get:function(){return s}});let r=e.r(895708),i=e.r(688391),a=e.r(118720),o=e.r(446247);function s(e){let t=(0,o.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,r.removeTrailingSlash)(t)),e.buildId&&(t=(0,a.addPathSuffix)((0,i.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,i.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,a.addPathSuffix)(t,"/"):(0,r.removeTrailingSlash)(t)}},866140,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"normalizeLocalePath",{enumerable:!0,get:function(){return i}});let r=new WeakMap;function i(e,t){let n;if(!t)return{pathname:e};let i=r.get(t);i||(i=t.map(e=>e.toLowerCase()),r.set(t,i));let a=e.split("/",2);if(!a[1])return{pathname:e};let o=a[1].toLowerCase(),s=i.indexOf(o);return s<0?{pathname:e}:(n=t[s],{pathname:e=e.slice(n.length+1)||"/",detectedLocale:n})}},857436,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"removePathPrefix",{enumerable:!0,get:function(){return i}});let r=e.r(712550);function i(e,t){if(!(0,r.pathHasPrefix)(e,t))return e;let n=e.slice(t.length);return n.startsWith("/")?n:`/${n}`}},707723,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getNextPathnameInfo",{enumerable:!0,get:function(){return o}});let r=e.r(866140),i=e.r(857436),a=e.r(712550);function o(e,t){let{basePath:n,i18n:o,trailingSlash:s}=t.nextConfig??{},u={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):s};n&&(0,a.pathHasPrefix)(u.pathname,n)&&(u.pathname=(0,i.removePathPrefix)(u.pathname,n),u.basePath=n);let c=u.pathname;if(u.pathname.startsWith("/_next/data/")&&u.pathname.endsWith(".json")){let e=u.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");u.buildId=e[0],c="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(u.pathname=c)}if(o){let e=t.i18nProvider?t.i18nProvider.analyze(u.pathname):(0,r.normalizeLocalePath)(u.pathname,o.locales);u.locale=e.detectedLocale,u.pathname=e.pathname??u.pathname,!e.detectedLocale&&u.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(c):(0,r.normalizeLocalePath)(c,o.locales)).detectedLocale&&(u.locale=e.detectedLocale)}return u}},955973,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={ACTION_SUFFIX:function(){return g},APP_DIR_ALIAS:function(){return X},CACHE_ONE_YEAR:function(){return C},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ei},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return o},INFINITE_CACHE:function(){return O},INSTRUMENTATION_HOOK_FILENAME:function(){return D},JSON_CONTENT_TYPE_HEADER:function(){return s},MATCHED_PATH_HEADER:function(){return d},MIDDLEWARE_FILENAME:function(){return N},MIDDLEWARE_LOCATION_REGEXP:function(){return L},NEXT_BODY_SUFFIX:function(){return S},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return I},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return P},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return R},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return y},NEXT_CACHE_TAGS_HEADER:function(){return v},NEXT_CACHE_TAG_MAX_ITEMS:function(){return b},NEXT_CACHE_TAG_MAX_LENGTH:function(){return A},NEXT_DATA_SUFFIX:function(){return _},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return c},NEXT_META_SUFFIX:function(){return E},NEXT_QUERY_PARAM_PREFIX:function(){return u},NEXT_RESUME_HEADER:function(){return T},NON_STANDARD_NODE_ENV:function(){return en},PAGES_DIR_ALIAS:function(){return j},PRERENDER_REVALIDATE_HEADER:function(){return l},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return f},PROXY_FILENAME:function(){return x},PROXY_LOCATION_REGEXP:function(){return w},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return $},ROOT_DIR_ALIAS:function(){return F},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return Y},RSC_ACTION_ENCRYPTION_ALIAS:function(){return W},RSC_ACTION_PROXY_ALIAS:function(){return G},RSC_ACTION_VALIDATE_ALIAS:function(){return B},RSC_CACHE_WRAPPER_ALIAS:function(){return k},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return U},RSC_MOD_REF_PROXY_ALIAS:function(){return H},RSC_SEGMENTS_DIR_SUFFIX:function(){return p},RSC_SEGMENT_SUFFIX:function(){return m},RSC_SUFFIX:function(){return h},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return q},SERVER_RUNTIME:function(){return ea},SSG_FALLBACK_EXPORT_ERROR:function(){return er},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return V},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return z},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return a},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return eu},WEBPACK_RESOURCE_QUERIES:function(){return ec},WEB_SOCKET_MAX_RECONNECTIONS:function(){return eo}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let a="text/plain",o="text/html; charset=utf-8",s="application/json; charset=utf-8",u="nxtP",c="nxtI",d="x-matched-path",l="x-prerender-revalidate",f="x-prerender-revalidate-if-generated",p=".segments",m=".segment.rsc",h=".rsc",g=".action",_=".json",E=".meta",S=".body",v="x-next-cache-tags",P="x-next-revalidated-tags",R="x-next-revalidate-tag-token",T="next-resume",b=128,A=256,y=1024,I="_N_T_",C=31536e3,O=0xfffffffe,N="middleware",L=`(?:src/)?${N}`,x="proxy",w=`(?:src/)?${x}`,D="instrumentation",j="private-next-pages",M="private-dot-next",F="private-next-root-dir",X="private-next-app-dir",H="private-next-rsc-mod-ref-proxy",B="private-next-rsc-action-validate",G="private-next-rsc-server-reference",k="private-next-rsc-cache-wrapper",U="private-next-rsc-track-dynamic-import",W="private-next-rsc-action-encryption",Y="private-next-rsc-action-client-wrapper",$="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",V="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",q="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",z="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",en='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',er="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ei=["app","pages","components","lib","src"],ea={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},eo=12,es={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},eu={...es,GROUP:{builtinReact:[es.reactServerComponents,es.actionBrowser],serverOnly:[es.reactServerComponents,es.actionBrowser,es.instrument,es.middleware],neutralTarget:[es.apiNode,es.apiEdge],clientOnly:[es.serverSideRendering,es.appPagesBrowser],bundled:[es.reactServerComponents,es.actionBrowser,es.serverSideRendering,es.appPagesBrowser,es.shared,es.instrument,es.middleware],appPages:[es.reactServerComponents,es.serverSideRendering,es.appPagesBrowser,es.actionBrowser]}},ec={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},630655,e=>{"use strict";var t=e.i(907358),n=e.i(777616);function r(){let e=(0,n.getAppServices)();return{trackEvent:(0,t.useCallback)((t,n)=>{e.analytics.track(t,n)},[e]),trackPageview:(0,t.useCallback)(t=>{e.analytics.trackPageview(t)},[e])}}e.s(["useAnalytics",()=>r])},182069,(e,t,n)=>{!function(){"use strict";var e={};e.d=function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},e.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},e.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},void 0!==e&&(e.ab="/ROOT/node_modules/.pnpm/next@16.1.6_@babel+core@7.29.0_@opentelemetry+api@1.9.1_react-dom@19.2.4_react@19.2.4__react@19.2.4_sass@1.98.0/node_modules/next/dist/compiled/web-vitals/");var n={};e.r(n),e.d(n,{CLSThresholds:function(){return I},FCPThresholds:function(){return A},FIDThresholds:function(){return ee},INPThresholds:function(){return B},LCPThresholds:function(){return k},TTFBThresholds:function(){return Y},onCLS:function(){return C},onFCP:function(){return y},onFID:function(){return et},onINP:function(){return G},onLCP:function(){return W},onTTFB:function(){return V}});var r,i,a,o,s,u=-1,c=function(e){addEventListener("pageshow",function(t){t.persisted&&(u=t.timeStamp,e(t))},!0)},d=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart=0?r="back-forward-cache":n&&(document.prerendering||l()>0?r="prerender":document.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(0x82f79cd8fff*Math.random())+1e12),navigationType:r}},p=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver(function(e){Promise.resolve().then(function(){t(e.getEntries())})});return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},m=function(e,t,n,r){var i,a;return function(o){var s;t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,s=t.value,t.rating=s>n[1]?"poor":s>n[0]?"needs-improvement":"good",e(t))}},h=function(e){requestAnimationFrame(function(){return requestAnimationFrame(function(){return e()})})},g=function(e){document.addEventListener("visibilitychange",function(){"hidden"===document.visibilityState&&e()})},_=function(e){var t=!1;return function(){t||(e(),t=!0)}},E=-1,S=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},v=function(e){"hidden"===document.visibilityState&&E>-1&&(E="visibilitychange"===e.type?e.timeStamp:0,R())},P=function(){addEventListener("visibilitychange",v,!0),addEventListener("prerenderingchange",v,!0)},R=function(){removeEventListener("visibilitychange",v,!0),removeEventListener("prerenderingchange",v,!0)},T=function(){return E<0&&(E=S(),P(),c(function(){setTimeout(function(){E=S(),P()},0)})),{get firstHiddenTime(){return E}}},b=function(e){document.prerendering?addEventListener("prerenderingchange",function(){return e()},!0):e()},A=[1800,3e3],y=function(e,t){t=t||{},b(function(){var n,r=T(),i=f("FCP"),a=p("paint",function(e){e.forEach(function(e){"first-contentful-paint"===e.name&&(a.disconnect(),e.startTimer.value&&(r.value=i,r.entries=a,n())},s=p("layout-shift",o);s&&(n=m(e,r,I,t.reportAllChanges),g(function(){o(s.takeRecords()),n(!0)}),c(function(){i=0,n=m(e,r=f("CLS",0),I,t.reportAllChanges),h(function(){return n()})}),setTimeout(n,0))}))},O=0,N=1/0,L=0,x=function(e){e.forEach(function(e){e.interactionId&&(N=Math.min(N,e.interactionId),O=(L=Math.max(L,e.interactionId))?(L-N)/7+1:0)})},w=function(){"interactionCount"in performance||r||(r=p("event",x,{type:"event",buffered:!0,durationThreshold:0}))},D=[],j=new Map,M=0,F=[],X=function(e){if(F.forEach(function(t){return t(e)}),e.interactionId||"first-input"===e.entryType){var t=D[D.length-1],n=j.get(e.interactionId);if(n||D.length<10||e.duration>t.latency){if(n)e.duration>n.latency?(n.entries=[e],n.latency=e.duration):e.duration===n.latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};j.set(r.id,r),D.push(r)}D.sort(function(e,t){return t.latency-e.latency}),D.length>10&&D.splice(10).forEach(function(e){return j.delete(e.id)})}}},H=function(e){var t=self.requestIdleCallback||self.setTimeout,n=-1;return e=_(e),"hidden"===document.visibilityState?e():(n=t(e),g(e)),n},B=[200,500],G=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},b(function(){w();var n,i,a=f("INP"),o=function(e){H(function(){e.forEach(X);var t,n=(t=Math.min(D.length-1,Math.floor(((r?O:performance.interactionCount||0)-M)/50)),D[t]);n&&n.latency!==a.value&&(a.value=n.latency,a.entries=n.entries,i())})},s=p("event",o,{durationThreshold:null!=(n=t.durationThreshold)?n:40});i=m(e,a,B,t.reportAllChanges),s&&(s.observe({type:"first-input",buffered:!0}),g(function(){o(s.takeRecords()),i(!0)}),c(function(){M=0,D.length=0,j.clear(),i=m(e,a=f("INP"),B,t.reportAllChanges)}))}))},k=[2500,4e3],U={},W=function(e,t){t=t||{},b(function(){var n,r=T(),i=f("LCP"),a=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach(function(e){e.startTime=0&&a1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?(t=function(){z(i,e),r()},n=function(){r()},r=function(){removeEventListener("pointerup",t,K),removeEventListener("pointercancel",n,K)},addEventListener("pointerup",t,K),addEventListener("pointercancel",n,K)):z(i,e)}},Z=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach(function(t){return e(t,J,K)})},ee=[100,300],et=function(e,t){t=t||{},b(function(){var n,r=T(),o=f("FID"),u=function(e){e.startTime{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"useReportWebVitals",{enumerable:!0,get:function(){return a}});let r=e.r(907358),i=e.r(182069);function a(e){(0,r.useEffect)(()=>{(0,i.onCLS)(e),(0,i.onFID)(e),(0,i.onLCP)(e),(0,i.onINP)(e),(0,i.onFCP)(e),(0,i.onTTFB)(e)},[e])}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},729932,(e,t,n)=>{t.exports=e.r(34986)},727825,e=>{"use strict";var t=e.i(729932),n=e.i(630655);function r(){let{trackEvent:e}=(0,n.useAnalytics)();return(0,t.useReportWebVitals)(t=>{let{name:n,value:r,id:i,label:a}=t,o="good";"LCP"===n?r>4e3?o="poor":r>2500&&(o="needs-improvement"):"CLS"===n?r>.25?o="poor":r>.1&&(o="needs-improvement"):"FID"===n?r>300?o="poor":r>100&&(o="needs-improvement"):"FCP"===n?r>3e3?o="poor":r>1800&&(o="needs-improvement"):"TTFB"===n?r>1500?o="poor":r>800&&(o="needs-improvement"):"INP"===n&&(r>500?o="poor":r>200&&(o="needs-improvement")),e("web-vital",{metric:n,value:Math.round("CLS"===n?1e3*r:r),rating:o,id:i,label:a,path:window.location.pathname})}),null}e.s(["default",()=>r])},950648,e=>{e.n(e.i(727825))},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); -//# debugId=9a232c44-b399-b777-1680-6228398070a0 \ No newline at end of file +//# debugId=ae60b5aa-7d43-b3f2-2f6c-0c6549561aef \ No newline at end of file diff --git a/.next/static/chunks/ad93c165b40135d0.js b/.next/static/chunks/fdf84fd199216566.js similarity index 98% rename from .next/static/chunks/ad93c165b40135d0.js rename to .next/static/chunks/fdf84fd199216566.js index 10f236e22..85a4e7fd1 100644 --- a/.next/static/chunks/ad93c165b40135d0.js +++ b/.next/static/chunks/fdf84fd199216566.js @@ -1,4 +1,4 @@ -;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="8803641a-fe30-a64a-8ca6-a2ded8296c99")}catch(e){}}(); -(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return c},throwForSearchParamsAccessInUseCache:function(){return u},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function u(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function c(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return u},StagedRenderingController:function(){return c}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var u=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class c{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(d),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(d),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(d),o}}function d(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},u={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(u.pathname,r)&&(u.pathname=(0,a.removePathPrefix)(u.pathname,r),u.basePath=r);let c=u.pathname;if(u.pathname.startsWith("/_next/data/")&&u.pathname.endsWith(".json")){let e=u.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");u.buildId=e[0],c="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(u.pathname=c)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(u.pathname):(0,n.normalizeLocalePath)(u.pathname,s.locales);u.locale=e.detectedLocale,u.pathname=e.pathname??u.pathname,!e.detectedLocale&&u.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(c):(0,n.normalizeLocalePath)(c,s.locales)).detectedLocale&&(u.locale=e.detectedLocale)}return u}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return E},APP_DIR_ALIAS:function(){return F},CACHE_ONE_YEAR:function(){return N},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return y},INSTRUMENTATION_HOOK_FILENAME:function(){return j},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return d},MIDDLEWARE_FILENAME:function(){return C},MIDDLEWARE_LOCATION_REGEXP:function(){return x},NEXT_BODY_SUFFIX:function(){return S},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return v},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return P},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return A},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return O},NEXT_CACHE_TAGS_HEADER:function(){return R},NEXT_CACHE_TAG_MAX_ITEMS:function(){return I},NEXT_CACHE_TAG_MAX_LENGTH:function(){return b},NEXT_DATA_SUFFIX:function(){return g},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return c},NEXT_META_SUFFIX:function(){return m},NEXT_QUERY_PARAM_PREFIX:function(){return u},NEXT_RESUME_HEADER:function(){return T},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return w},PRERENDER_REVALIDATE_HEADER:function(){return l},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return _},PROXY_FILENAME:function(){return L},PROXY_LOCATION_REGEXP:function(){return D},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return k},ROOT_DIR_ALIAS:function(){return X},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return $},RSC_ACTION_ENCRYPTION_ALIAS:function(){return Y},RSC_ACTION_PROXY_ALIAS:function(){return U},RSC_ACTION_VALIDATE_ALIAS:function(){return H},RSC_CACHE_WRAPPER_ALIAS:function(){return B},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return W},RSC_MOD_REF_PROXY_ALIAS:function(){return G},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return p},RSC_SUFFIX:function(){return h},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return z},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return V},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return q},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return eu},WEBPACK_RESOURCE_QUERIES:function(){return ec},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",u="nxtP",c="nxtI",d="x-matched-path",l="x-prerender-revalidate",_="x-prerender-revalidate-if-generated",f=".segments",p=".segment.rsc",h=".rsc",E=".action",g=".json",m=".meta",S=".body",R="x-next-cache-tags",P="x-next-revalidated-tags",A="x-next-revalidate-tag-token",T="next-resume",I=128,b=256,O=1024,v="_N_T_",N=31536e3,y=0xfffffffe,C="middleware",x=`(?:src/)?${C}`,L="proxy",D=`(?:src/)?${L}`,j="instrumentation",w="private-next-pages",M="private-dot-next",X="private-next-root-dir",F="private-next-app-dir",G="private-next-rsc-mod-ref-proxy",H="private-next-rsc-action-validate",U="private-next-rsc-server-reference",B="private-next-rsc-cache-wrapper",W="private-next-rsc-track-dynamic-import",Y="private-next-rsc-action-encryption",$="private-next-rsc-action-client-wrapper",k="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",V="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",z="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",q="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},eu={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},ec={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},987143,e=>{"use strict";var t=e.i(907358),r=e.i(976819),n=e.i(777616);function a(){let e=(0,r.usePathname)(),a=(0,r.useSearchParams)();return(0,t.useEffect)(()=>{if(!e)return;let t=(0,n.getAppServices)(),r=`${e}${a?.size?`?${a.toString()}`:""}`;t.analytics.trackPageview(r)},[e,a]),null}e.s(["default",()=>a])},565071,e=>{e.n(e.i(987143))},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/2c80c6d8e77ec885.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); +;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="479c9da1-6957-5de9-9f04-66b359305309")}catch(e){}}(); +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,102227,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReflectAdapter",{enumerable:!0,get:function(){return n}});class n{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},365278,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(496932).createAsyncLocalStorage)()},517110,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=e.r(365278)},780329,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isRequestAPICallableInsideAfter:function(){return c},throwForSearchParamsAccessInUseCache:function(){return u},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i=e.r(579781),s=e.r(517110);function o(e,t){throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function u(e,t){let r=Object.defineProperty(Error(`Route ${e.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(r,t),e.invalidDynamicUsageError??=r,r}function c(){let e=s.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}},759823,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return u},StagedRenderingController:function(){return c}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});let s=e.r(436120),o=e.r(444841);var u=((n={})[n.Before=1]="Before",n[n.Static=2]="Static",n[n.Runtime=3]="Runtime",n[n.Dynamic=4]="Dynamic",n[n.Abandoned=5]="Abandoned",n);class c{constructor(e=null,t){this.abortSignal=e,this.hasRuntimePrefetch=t,this.currentStage=1,this.staticInterruptReason=null,this.runtimeInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.runtimeStagePromise=(0,o.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,o.createPromiseWithResolvers)(),this.mayAbandon=!1,e&&(e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<3&&(this.runtimeStagePromise.promise.catch(d),this.runtimeStagePromise.reject(t)),(this.currentStage<4||5===this.currentStage)&&(this.dynamicStagePromise.promise.catch(d),this.dynamicStagePromise.reject(t))},{once:!0}),this.mayAbandon=!0)}onStage(e,t){if(this.currentStage>=e)t();else if(3===e)this.runtimeStageListeners.push(t);else if(4===e)this.dynamicStageListeners.push(t);else throw Object.defineProperty(new s.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}canSyncInterrupt(){if(1===this.currentStage)return!1;let e=this.hasRuntimePrefetch?4:3;return this.currentStage=3&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),t<4&&e>=4){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveRuntimeStage(){let e=this.runtimeStageListeners;for(let t=0;t{n.then(e.bind(null,i),t)}),void 0!==a&&(s.displayName=a),s);return this.abortSignal&&o.catch(d),o}}function d(){}},118720,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=e.r(506985);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:i}=(0,n.parsePath)(e);return`${r}${t}${a}${i}`}},446247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"addLocale",{enumerable:!0,get:function(){return i}});let n=e.r(688391),a=e.r(712550);function i(e,t,r,i){if(!t||t===r)return e;let s=e.toLowerCase();return!i&&((0,a.pathHasPrefix)(s,"/api")||(0,a.pathHasPrefix)(s,`/${t.toLowerCase()}`))?e:(0,n.addPathPrefix)(e,`/${t}`)}},971560,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"formatNextPathnameInfo",{enumerable:!0,get:function(){return o}});let n=e.r(895708),a=e.r(688391),i=e.r(118720),s=e.r(446247);function o(e){let t=(0,s.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,i.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,i.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},866140,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"normalizeLocalePath",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e,t){let r;if(!t)return{pathname:e};let a=n.get(t);a||(a=t.map(e=>e.toLowerCase()),n.set(t,a));let i=e.split("/",2);if(!i[1])return{pathname:e};let s=i[1].toLowerCase(),o=a.indexOf(s);return o<0?{pathname:e}:(r=t[o],{pathname:e=e.slice(r.length+1)||"/",detectedLocale:r})}},857436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=e.r(712550);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},707723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getNextPathnameInfo",{enumerable:!0,get:function(){return s}});let n=e.r(866140),a=e.r(857436),i=e.r(712550);function s(e,t){let{basePath:r,i18n:s,trailingSlash:o}=t.nextConfig??{},u={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):o};r&&(0,i.pathHasPrefix)(u.pathname,r)&&(u.pathname=(0,a.removePathPrefix)(u.pathname,r),u.basePath=r);let c=u.pathname;if(u.pathname.startsWith("/_next/data/")&&u.pathname.endsWith(".json")){let e=u.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");u.buildId=e[0],c="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(u.pathname=c)}if(s){let e=t.i18nProvider?t.i18nProvider.analyze(u.pathname):(0,n.normalizeLocalePath)(u.pathname,s.locales);u.locale=e.detectedLocale,u.pathname=e.pathname??u.pathname,!e.detectedLocale&&u.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(c):(0,n.normalizeLocalePath)(c,s.locales)).detectedLocale&&(u.locale=e.detectedLocale)}return u}},955973,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_SUFFIX:function(){return E},APP_DIR_ALIAS:function(){return F},CACHE_ONE_YEAR:function(){return N},DOT_NEXT_ALIAS:function(){return M},ESLINT_DEFAULT_DIRS:function(){return ea},GSP_NO_RETURNED_VALUE:function(){return J},GSSP_COMPONENT_MEMBER_ERROR:function(){return et},GSSP_NO_RETURNED_VALUE:function(){return Z},HTML_CONTENT_TYPE_HEADER:function(){return s},INFINITE_CACHE:function(){return y},INSTRUMENTATION_HOOK_FILENAME:function(){return j},JSON_CONTENT_TYPE_HEADER:function(){return o},MATCHED_PATH_HEADER:function(){return d},MIDDLEWARE_FILENAME:function(){return C},MIDDLEWARE_LOCATION_REGEXP:function(){return x},NEXT_BODY_SUFFIX:function(){return S},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return v},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return P},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return A},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return O},NEXT_CACHE_TAGS_HEADER:function(){return R},NEXT_CACHE_TAG_MAX_ITEMS:function(){return I},NEXT_CACHE_TAG_MAX_LENGTH:function(){return b},NEXT_DATA_SUFFIX:function(){return g},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return c},NEXT_META_SUFFIX:function(){return m},NEXT_QUERY_PARAM_PREFIX:function(){return u},NEXT_RESUME_HEADER:function(){return T},NON_STANDARD_NODE_ENV:function(){return er},PAGES_DIR_ALIAS:function(){return w},PRERENDER_REVALIDATE_HEADER:function(){return l},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return _},PROXY_FILENAME:function(){return L},PROXY_LOCATION_REGEXP:function(){return D},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return k},ROOT_DIR_ALIAS:function(){return X},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return $},RSC_ACTION_ENCRYPTION_ALIAS:function(){return Y},RSC_ACTION_PROXY_ALIAS:function(){return U},RSC_ACTION_VALIDATE_ALIAS:function(){return H},RSC_CACHE_WRAPPER_ALIAS:function(){return B},RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS:function(){return W},RSC_MOD_REF_PROXY_ALIAS:function(){return G},RSC_SEGMENTS_DIR_SUFFIX:function(){return f},RSC_SEGMENT_SUFFIX:function(){return p},RSC_SUFFIX:function(){return h},SERVER_PROPS_EXPORT_ERROR:function(){return Q},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return K},SERVER_PROPS_SSG_CONFLICT:function(){return z},SERVER_RUNTIME:function(){return ei},SSG_FALLBACK_EXPORT_ERROR:function(){return en},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return V},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return q},TEXT_PLAIN_CONTENT_TYPE_HEADER:function(){return i},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return ee},WEBPACK_LAYERS:function(){return eu},WEBPACK_RESOURCE_QUERIES:function(){return ec},WEB_SOCKET_MAX_RECONNECTIONS:function(){return es}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let i="text/plain",s="text/html; charset=utf-8",o="application/json; charset=utf-8",u="nxtP",c="nxtI",d="x-matched-path",l="x-prerender-revalidate",_="x-prerender-revalidate-if-generated",f=".segments",p=".segment.rsc",h=".rsc",E=".action",g=".json",m=".meta",S=".body",R="x-next-cache-tags",P="x-next-revalidated-tags",A="x-next-revalidate-tag-token",T="next-resume",I=128,b=256,O=1024,v="_N_T_",N=31536e3,y=0xfffffffe,C="middleware",x=`(?:src/)?${C}`,L="proxy",D=`(?:src/)?${L}`,j="instrumentation",w="private-next-pages",M="private-dot-next",X="private-next-root-dir",F="private-next-app-dir",G="private-next-rsc-mod-ref-proxy",H="private-next-rsc-action-validate",U="private-next-rsc-server-reference",B="private-next-rsc-cache-wrapper",W="private-next-rsc-track-dynamic-import",Y="private-next-rsc-action-encryption",$="private-next-rsc-action-client-wrapper",k="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",V="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",K="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",z="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",q="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",Q="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",J="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",Z="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",ee="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",et="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",er='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',en="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",ea=["app","pages","components","lib","src"],ei={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},es=12,eo={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},eu={...eo,GROUP:{builtinReact:[eo.reactServerComponents,eo.actionBrowser],serverOnly:[eo.reactServerComponents,eo.actionBrowser,eo.instrument,eo.middleware],neutralTarget:[eo.apiNode,eo.apiEdge],clientOnly:[eo.serverSideRendering,eo.appPagesBrowser],bundled:[eo.reactServerComponents,eo.actionBrowser,eo.serverSideRendering,eo.appPagesBrowser,eo.shared,eo.instrument,eo.middleware],appPages:[eo.reactServerComponents,eo.serverSideRendering,eo.appPagesBrowser,eo.actionBrowser]}},ec={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},987143,e=>{"use strict";var t=e.i(907358),r=e.i(976819),n=e.i(777616);function a(){let e=(0,r.usePathname)(),a=(0,r.useSearchParams)();return(0,t.useEffect)(()=>{if(!e)return;let t=(0,n.getAppServices)(),r=`${e}${a?.size?`?${a.toString()}`:""}`;t.analytics.trackPageview(r)},[e,a]),null}e.s(["default",()=>a])},565071,e=>{e.n(e.i(987143))},919007,e=>{e.v(t=>Promise.all(["static/chunks/3ffd2a1cf95ceb60.js","static/chunks/0fb0262dbadeeecd.js","static/chunks/6d182a34db4f4c54.js"].map(t=>e.l(t))).then(()=>t(502456)))}]); -//# debugId=8803641a-fe30-a64a-8ca6-a2ded8296c99 \ No newline at end of file +//# debugId=479c9da1-6957-5de9-9f04-66b359305309 \ No newline at end of file diff --git a/.next/trace b/.next/trace index 064a7cfbd..a543a3d79 100644 --- a/.next/trace +++ b/.next/trace @@ -1 +1 @@ -[{"name":"generate-buildid","duration":143,"timestamp":1872989285157,"id":4,"parentId":1,"tags":{},"startTime":1778154956650,"traceId":"9e2b79e1f2aae9f4"},{"name":"load-custom-routes","duration":8143,"timestamp":1872989285348,"id":5,"parentId":1,"tags":{},"startTime":1778154956650,"traceId":"9e2b79e1f2aae9f4"},{"name":"create-dist-dir","duration":367,"timestamp":1872989293514,"id":6,"parentId":1,"tags":{},"startTime":1778154956658,"traceId":"9e2b79e1f2aae9f4"},{"name":"clean","duration":29347,"timestamp":1872989295744,"id":7,"parentId":1,"tags":{},"startTime":1778154956660,"traceId":"9e2b79e1f2aae9f4"},{"name":"create-pages-mapping","duration":115,"timestamp":1872989338585,"id":8,"parentId":1,"tags":{},"startTime":1778154956703,"traceId":"9e2b79e1f2aae9f4"},{"name":"collect-app-files","duration":1693,"timestamp":1872989338723,"id":9,"parentId":1,"tags":{},"startTime":1778154956703,"traceId":"9e2b79e1f2aae9f4"},{"name":"create-app-mapping","duration":34786,"timestamp":1872989340434,"id":10,"parentId":1,"tags":{},"startTime":1778154956705,"traceId":"9e2b79e1f2aae9f4"},{"name":"create-app-layouts","duration":96,"timestamp":1872989375241,"id":11,"parentId":1,"tags":{},"startTime":1778154956740,"traceId":"9e2b79e1f2aae9f4"},{"name":"collect-default-files","duration":507,"timestamp":1872989376419,"id":13,"parentId":1,"tags":{},"startTime":1778154956741,"traceId":"9e2b79e1f2aae9f4"},{"name":"generate-route-types","duration":4438,"timestamp":1872989376102,"id":12,"parentId":1,"tags":{},"startTime":1778154956741,"traceId":"9e2b79e1f2aae9f4"},{"name":"public-dir-conflict-check","duration":99,"timestamp":1872989380589,"id":14,"parentId":1,"tags":{},"startTime":1778154956745,"traceId":"9e2b79e1f2aae9f4"},{"name":"generate-routes-manifest","duration":1469,"timestamp":1872989380749,"id":15,"parentId":1,"tags":{},"startTime":1778154956745,"traceId":"9e2b79e1f2aae9f4"},{"name":"run-turbopack","duration":5186513,"timestamp":1872989387484,"id":17,"parentId":1,"tags":{},"startTime":1778154956752,"traceId":"9e2b79e1f2aae9f4"},{"name":"after-production-compile","duration":236715,"timestamp":1872994576612,"id":19,"parentId":1,"tags":{},"startTime":1778154961941,"traceId":"9e2b79e1f2aae9f4"},{"name":"run-typescript","duration":6915264,"timestamp":1872994815398,"id":20,"parentId":1,"tags":{},"startTime":1778154962180,"traceId":"9e2b79e1f2aae9f4"},{"name":"generate-required-server-files","duration":457,"timestamp":1873001731251,"id":22,"parentId":1,"tags":{},"startTime":1778154969096,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-static-error-page","duration":1603,"timestamp":1873001736738,"id":24,"parentId":23,"tags":{},"startTime":1778154969101,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":196257,"timestamp":1873001739467,"id":50,"parentId":27,"tags":{},"startTime":1778154969104,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":197792,"timestamp":1873001737998,"id":27,"parentId":23,"tags":{"page":"/[locale]/[slug]/opengraph-image"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":200314,"timestamp":1873001739206,"id":49,"parentId":29,"tags":{},"startTime":1778154969104,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":201508,"timestamp":1873001738039,"id":29,"parentId":23,"tags":{"page":"/[locale]/blog/[slug]/opengraph-image"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":229105,"timestamp":1873001739786,"id":52,"parentId":33,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":230810,"timestamp":1873001738107,"id":33,"parentId":23,"tags":{"page":"/[locale]/contact/opengraph-image"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":229690,"timestamp":1873001739712,"id":51,"parentId":31,"tags":{},"startTime":1778154969104,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":231338,"timestamp":1873001738069,"id":31,"parentId":23,"tags":{"page":"/[locale]/blog/opengraph-image"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":230777,"timestamp":1873001740225,"id":56,"parentId":41,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":232780,"timestamp":1873001738241,"id":41,"parentId":23,"tags":{"page":"/api/save-session"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":241003,"timestamp":1873001739970,"id":53,"parentId":35,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":242854,"timestamp":1873001738142,"id":35,"parentId":23,"tags":{"page":"/[locale]/opengraph-image"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":242266,"timestamp":1873001740272,"id":58,"parentId":44,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":244275,"timestamp":1873001738277,"id":44,"parentId":23,"tags":{"page":"/manifest.webmanifest"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":243307,"timestamp":1873001740126,"id":55,"parentId":40,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":245223,"timestamp":1873001738229,"id":40,"parentId":23,"tags":{"page":"/api/feedback"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":245305,"timestamp":1873001740036,"id":54,"parentId":37,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":247186,"timestamp":1873001738170,"id":37,"parentId":23,"tags":{"page":"/[locale]/team/opengraph-image"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":245234,"timestamp":1873001740259,"id":57,"parentId":42,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":247251,"timestamp":1873001738253,"id":42,"parentId":23,"tags":{"page":"/api/whoami"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":248755,"timestamp":1873001740285,"id":59,"parentId":45,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":250776,"timestamp":1873001738289,"id":45,"parentId":23,"tags":{"page":"/robots.txt"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":251656,"timestamp":1873001740352,"id":60,"parentId":46,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":253722,"timestamp":1873001738301,"id":46,"parentId":23,"tags":{"page":"/sitemap.xml"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":251577,"timestamp":1873001740587,"id":64,"parentId":26,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":254284,"timestamp":1873001737896,"id":26,"parentId":23,"tags":{"page":"/_global-error"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":256840,"timestamp":1873001740380,"id":61,"parentId":48,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":258913,"timestamp":1873001738325,"id":48,"parentId":23,"tags":{"page":"/test"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":259455,"timestamp":1873001740577,"id":63,"parentId":25,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":262553,"timestamp":1873001737489,"id":25,"parentId":23,"tags":{"page":"/_not-found"},"startTime":1778154969102,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":261502,"timestamp":1873001740568,"id":62,"parentId":43,"tags":{},"startTime":1778154969105,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":263817,"timestamp":1873001738265,"id":43,"parentId":23,"tags":{"page":"/health"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":260626,"timestamp":1873001741493,"id":65,"parentId":47,"tags":{},"startTime":1778154969106,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":263815,"timestamp":1873001738313,"id":47,"parentId":23,"tags":{"page":"/stats/api/send"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":322083,"timestamp":1873001742611,"id":68,"parentId":38,"tags":{},"startTime":1778154969107,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":326526,"timestamp":1873001738187,"id":38,"parentId":23,"tags":{"page":"/[locale]/team"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":324444,"timestamp":1873001742614,"id":70,"parentId":39,"tags":{},"startTime":1778154969107,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":328852,"timestamp":1873001738214,"id":39,"parentId":23,"tags":{"page":"/[locale]/test"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":326926,"timestamp":1873001742612,"id":69,"parentId":32,"tags":{},"startTime":1778154969107,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":331466,"timestamp":1873001738086,"id":32,"parentId":23,"tags":{"page":"/[locale]/blog"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":336138,"timestamp":1873001742617,"id":72,"parentId":34,"tags":{},"startTime":1778154969107,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":340671,"timestamp":1873001738124,"id":34,"parentId":23,"tags":{"page":"/[locale]/contact"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":512534,"timestamp":1873001742615,"id":71,"parentId":36,"tags":{},"startTime":1778154969107,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":517017,"timestamp":1873001738157,"id":36,"parentId":23,"tags":{"page":"/[locale]"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":512780,"timestamp":1873001742608,"id":67,"parentId":30,"tags":{},"startTime":1778154969107,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":517351,"timestamp":1873001738056,"id":30,"parentId":23,"tags":{"page":"/[locale]/blog/[slug]"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"is-page-static","duration":512835,"timestamp":1873001742597,"id":66,"parentId":28,"tags":{},"startTime":1778154969107,"traceId":"9e2b79e1f2aae9f4"},{"name":"check-page","duration":517419,"timestamp":1873001738020,"id":28,"parentId":23,"tags":{"page":"/[locale]/[slug]"},"startTime":1778154969103,"traceId":"9e2b79e1f2aae9f4"},{"name":"static-check","duration":519173,"timestamp":1873001736288,"id":23,"parentId":1,"tags":{},"startTime":1778154969101,"traceId":"9e2b79e1f2aae9f4"},{"name":"write-routes-manifest","duration":980,"timestamp":1873002257248,"id":74,"parentId":1,"tags":{},"startTime":1778154969622,"traceId":"9e2b79e1f2aae9f4"},{"name":"load-dotenv","duration":12,"timestamp":1873002262825,"id":77,"parentId":76,"tags":{},"startTime":1778154969628,"traceId":"9e2b79e1f2aae9f4"},{"name":"run-export-path-map","duration":208,"timestamp":1873002264152,"id":78,"parentId":76,"tags":{},"startTime":1778154969629,"traceId":"9e2b79e1f2aae9f4"},{"name":"next-export","duration":184715,"timestamp":1873002262326,"id":76,"parentId":1,"tags":{},"startTime":1778154969627,"traceId":"9e2b79e1f2aae9f4"},{"name":"move-exported-app-not-found-","duration":438,"timestamp":1873002447802,"id":79,"parentId":75,"tags":{},"startTime":1778154969813,"traceId":"9e2b79e1f2aae9f4"},{"name":"move-exported-app-global-error-","duration":256,"timestamp":1873002448265,"id":80,"parentId":75,"tags":{},"startTime":1778154969813,"traceId":"9e2b79e1f2aae9f4"},{"name":"static-generation","duration":190401,"timestamp":1873002259328,"id":75,"parentId":1,"tags":{},"startTime":1778154969624,"traceId":"9e2b79e1f2aae9f4"},{"name":"write-routes-manifest","duration":348,"timestamp":1873002449859,"id":81,"parentId":1,"tags":{},"startTime":1778154969815,"traceId":"9e2b79e1f2aae9f4"},{"name":"write-standalone-directory","duration":469840,"timestamp":1873002459785,"id":83,"parentId":1,"tags":{},"startTime":1778154969825,"traceId":"9e2b79e1f2aae9f4"},{"name":"output-standalone","duration":469931,"timestamp":1873002459709,"id":82,"parentId":1,"tags":{},"startTime":1778154969824,"traceId":"9e2b79e1f2aae9f4"},{"name":"print-tree-view","duration":965,"timestamp":1873002929801,"id":84,"parentId":1,"tags":{},"startTime":1778154970295,"traceId":"9e2b79e1f2aae9f4"},{"name":"telemetry-flush","duration":21246,"timestamp":1873002930772,"id":85,"parentId":1,"tags":{},"startTime":1778154970296,"traceId":"9e2b79e1f2aae9f4"},{"name":"next-build","duration":14243627,"timestamp":1872988708404,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1778154956073,"traceId":"9e2b79e1f2aae9f4"}] +[{"name":"generate-buildid","duration":139,"timestamp":1873216185248,"id":4,"parentId":1,"tags":{},"startTime":1778155183551,"traceId":"048c4a81a9d3773a"},{"name":"load-custom-routes","duration":6128,"timestamp":1873216185438,"id":5,"parentId":1,"tags":{},"startTime":1778155183551,"traceId":"048c4a81a9d3773a"},{"name":"create-dist-dir","duration":337,"timestamp":1873216191594,"id":6,"parentId":1,"tags":{},"startTime":1778155183557,"traceId":"048c4a81a9d3773a"},{"name":"clean","duration":205836,"timestamp":1873216193434,"id":7,"parentId":1,"tags":{},"startTime":1778155183559,"traceId":"048c4a81a9d3773a"},{"name":"create-pages-mapping","duration":124,"timestamp":1873216413238,"id":8,"parentId":1,"tags":{},"startTime":1778155183779,"traceId":"048c4a81a9d3773a"},{"name":"collect-app-files","duration":1573,"timestamp":1873216413385,"id":9,"parentId":1,"tags":{},"startTime":1778155183779,"traceId":"048c4a81a9d3773a"},{"name":"create-app-mapping","duration":31041,"timestamp":1873216414974,"id":10,"parentId":1,"tags":{},"startTime":1778155183781,"traceId":"048c4a81a9d3773a"},{"name":"create-app-layouts","duration":75,"timestamp":1873216446035,"id":11,"parentId":1,"tags":{},"startTime":1778155183812,"traceId":"048c4a81a9d3773a"},{"name":"collect-default-files","duration":767,"timestamp":1873216447180,"id":13,"parentId":1,"tags":{},"startTime":1778155183813,"traceId":"048c4a81a9d3773a"},{"name":"generate-route-types","duration":5721,"timestamp":1873216446754,"id":12,"parentId":1,"tags":{},"startTime":1778155183812,"traceId":"048c4a81a9d3773a"},{"name":"public-dir-conflict-check","duration":48,"timestamp":1873216452505,"id":14,"parentId":1,"tags":{},"startTime":1778155183818,"traceId":"048c4a81a9d3773a"},{"name":"generate-routes-manifest","duration":1794,"timestamp":1873216452604,"id":15,"parentId":1,"tags":{},"startTime":1778155183818,"traceId":"048c4a81a9d3773a"},{"name":"run-turbopack","duration":5874058,"timestamp":1873216456437,"id":17,"parentId":1,"tags":{},"startTime":1778155183822,"traceId":"048c4a81a9d3773a"},{"name":"after-production-compile","duration":209541,"timestamp":1873222332625,"id":19,"parentId":1,"tags":{},"startTime":1778155189698,"traceId":"048c4a81a9d3773a"},{"name":"run-typescript","duration":6766778,"timestamp":1873222543066,"id":20,"parentId":1,"tags":{},"startTime":1778155189909,"traceId":"048c4a81a9d3773a"},{"name":"generate-required-server-files","duration":819,"timestamp":1873229311246,"id":22,"parentId":1,"tags":{},"startTime":1778155196677,"traceId":"048c4a81a9d3773a"},{"name":"check-static-error-page","duration":1589,"timestamp":1873229328106,"id":24,"parentId":23,"tags":{},"startTime":1778155196694,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":196957,"timestamp":1873229330472,"id":49,"parentId":27,"tags":{},"startTime":1778155196696,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":198206,"timestamp":1873229329289,"id":27,"parentId":23,"tags":{"page":"/[locale]/[slug]/opengraph-image"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":200665,"timestamp":1873229330707,"id":50,"parentId":29,"tags":{},"startTime":1778155196696,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":202057,"timestamp":1873229329332,"id":29,"parentId":23,"tags":{"page":"/[locale]/blog/[slug]/opengraph-image"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":227099,"timestamp":1873229330851,"id":51,"parentId":31,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":228598,"timestamp":1873229329370,"id":31,"parentId":23,"tags":{"page":"/[locale]/blog/opengraph-image"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":227053,"timestamp":1873229330961,"id":52,"parentId":33,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":228616,"timestamp":1873229329405,"id":33,"parentId":23,"tags":{"page":"/[locale]/contact/opengraph-image"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":228209,"timestamp":1873229331345,"id":56,"parentId":41,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":230006,"timestamp":1873229329576,"id":41,"parentId":23,"tags":{"page":"/api/save-session"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":238634,"timestamp":1873229331147,"id":53,"parentId":35,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":240353,"timestamp":1873229329448,"id":35,"parentId":23,"tags":{"page":"/[locale]/opengraph-image"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":239983,"timestamp":1873229331388,"id":58,"parentId":44,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":241760,"timestamp":1873229329622,"id":44,"parentId":23,"tags":{"page":"/manifest.webmanifest"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":240732,"timestamp":1873229331326,"id":55,"parentId":40,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":242507,"timestamp":1873229329559,"id":40,"parentId":23,"tags":{"page":"/api/feedback"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":241453,"timestamp":1873229331355,"id":57,"parentId":42,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":243226,"timestamp":1873229329593,"id":42,"parentId":23,"tags":{"page":"/api/whoami"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":244747,"timestamp":1873229331218,"id":54,"parentId":37,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":246487,"timestamp":1873229329485,"id":37,"parentId":23,"tags":{"page":"/[locale]/team/opengraph-image"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":246274,"timestamp":1873229331405,"id":59,"parentId":45,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":248057,"timestamp":1873229329635,"id":45,"parentId":23,"tags":{"page":"/robots.txt"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":249026,"timestamp":1873229331463,"id":60,"parentId":46,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":250850,"timestamp":1873229329650,"id":46,"parentId":23,"tags":{"page":"/sitemap.xml"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":248588,"timestamp":1873229331988,"id":64,"parentId":26,"tags":{},"startTime":1778155196698,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":251391,"timestamp":1873229329190,"id":26,"parentId":23,"tags":{"page":"/_global-error"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":251506,"timestamp":1873229331610,"id":61,"parentId":48,"tags":{},"startTime":1778155196697,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":253444,"timestamp":1873229329678,"id":48,"parentId":23,"tags":{"page":"/test"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":255991,"timestamp":1873229331977,"id":63,"parentId":25,"tags":{},"startTime":1778155196698,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":259368,"timestamp":1873229328611,"id":25,"parentId":23,"tags":{"page":"/_not-found"},"startTime":1778155196694,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":258589,"timestamp":1873229332785,"id":65,"parentId":47,"tags":{},"startTime":1778155196699,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":261724,"timestamp":1873229329663,"id":47,"parentId":23,"tags":{"page":"/stats/api/send"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":259638,"timestamp":1873229331785,"id":62,"parentId":43,"tags":{},"startTime":1778155196698,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":261820,"timestamp":1873229329608,"id":43,"parentId":23,"tags":{"page":"/health"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":317091,"timestamp":1873229333852,"id":69,"parentId":38,"tags":{},"startTime":1778155196700,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":321461,"timestamp":1873229329504,"id":38,"parentId":23,"tags":{"page":"/[locale]/team"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":319421,"timestamp":1873229333854,"id":70,"parentId":39,"tags":{},"startTime":1778155196700,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":323755,"timestamp":1873229329532,"id":39,"parentId":23,"tags":{"page":"/[locale]/test"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":323369,"timestamp":1873229333849,"id":68,"parentId":32,"tags":{},"startTime":1778155196700,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":327849,"timestamp":1873229329387,"id":32,"parentId":23,"tags":{"page":"/[locale]/blog"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":331254,"timestamp":1873229333856,"id":72,"parentId":34,"tags":{},"startTime":1778155196700,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":335727,"timestamp":1873229329422,"id":34,"parentId":23,"tags":{"page":"/[locale]/contact"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":506426,"timestamp":1873229333855,"id":71,"parentId":36,"tags":{},"startTime":1778155196700,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":510833,"timestamp":1873229329468,"id":36,"parentId":23,"tags":{"page":"/[locale]"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":506815,"timestamp":1873229333844,"id":66,"parentId":28,"tags":{},"startTime":1778155196700,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":511363,"timestamp":1873229329313,"id":28,"parentId":23,"tags":{"page":"/[locale]/[slug]"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"is-page-static","duration":506852,"timestamp":1873229333847,"id":67,"parentId":30,"tags":{},"startTime":1778155196700,"traceId":"048c4a81a9d3773a"},{"name":"check-page","duration":511356,"timestamp":1873229329349,"id":30,"parentId":23,"tags":{"page":"/[locale]/blog/[slug]"},"startTime":1778155196695,"traceId":"048c4a81a9d3773a"},{"name":"static-check","duration":512912,"timestamp":1873229327806,"id":23,"parentId":1,"tags":{},"startTime":1778155196694,"traceId":"048c4a81a9d3773a"},{"name":"write-routes-manifest","duration":603,"timestamp":1873229843337,"id":74,"parentId":1,"tags":{},"startTime":1778155197209,"traceId":"048c4a81a9d3773a"},{"name":"load-dotenv","duration":15,"timestamp":1873229849523,"id":77,"parentId":76,"tags":{},"startTime":1778155197215,"traceId":"048c4a81a9d3773a"},{"name":"run-export-path-map","duration":175,"timestamp":1873229850858,"id":78,"parentId":76,"tags":{},"startTime":1778155197217,"traceId":"048c4a81a9d3773a"},{"name":"next-export","duration":181360,"timestamp":1873229849040,"id":76,"parentId":1,"tags":{},"startTime":1778155197215,"traceId":"048c4a81a9d3773a"},{"name":"move-exported-app-not-found-","duration":519,"timestamp":1873230031220,"id":79,"parentId":75,"tags":{},"startTime":1778155197397,"traceId":"048c4a81a9d3773a"},{"name":"move-exported-app-global-error-","duration":257,"timestamp":1873230031764,"id":80,"parentId":75,"tags":{},"startTime":1778155197398,"traceId":"048c4a81a9d3773a"},{"name":"static-generation","duration":187218,"timestamp":1873229845711,"id":75,"parentId":1,"tags":{},"startTime":1778155197211,"traceId":"048c4a81a9d3773a"},{"name":"write-routes-manifest","duration":437,"timestamp":1873230033027,"id":81,"parentId":1,"tags":{},"startTime":1778155197399,"traceId":"048c4a81a9d3773a"},{"name":"write-standalone-directory","duration":465171,"timestamp":1873230041130,"id":83,"parentId":1,"tags":{},"startTime":1778155197407,"traceId":"048c4a81a9d3773a"},{"name":"output-standalone","duration":465337,"timestamp":1873230040982,"id":82,"parentId":1,"tags":{},"startTime":1778155197407,"traceId":"048c4a81a9d3773a"},{"name":"print-tree-view","duration":938,"timestamp":1873230506479,"id":84,"parentId":1,"tags":{},"startTime":1778155197872,"traceId":"048c4a81a9d3773a"},{"name":"telemetry-flush","duration":27507,"timestamp":1873230507421,"id":85,"parentId":1,"tags":{},"startTime":1778155197873,"traceId":"048c4a81a9d3773a"},{"name":"next-build","duration":14945075,"timestamp":1873215589869,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1778155182956,"traceId":"048c4a81a9d3773a"}] diff --git a/.next/trace-build b/.next/trace-build index d23b1c9e5..08b44b51d 100644 --- a/.next/trace-build +++ b/.next/trace-build @@ -1 +1 @@ -[{"name":"run-turbopack","duration":5186513,"timestamp":1872989387484,"id":17,"parentId":1,"tags":{},"startTime":1778154956752,"traceId":"9e2b79e1f2aae9f4"},{"name":"run-typescript","duration":6915264,"timestamp":1872994815398,"id":20,"parentId":1,"tags":{},"startTime":1778154962180,"traceId":"9e2b79e1f2aae9f4"},{"name":"static-check","duration":519173,"timestamp":1873001736288,"id":23,"parentId":1,"tags":{},"startTime":1778154969101,"traceId":"9e2b79e1f2aae9f4"},{"name":"static-generation","duration":190401,"timestamp":1873002259328,"id":75,"parentId":1,"tags":{},"startTime":1778154969624,"traceId":"9e2b79e1f2aae9f4"},{"name":"output-standalone","duration":469931,"timestamp":1873002459709,"id":82,"parentId":1,"tags":{},"startTime":1778154969824,"traceId":"9e2b79e1f2aae9f4"},{"name":"telemetry-flush","duration":21246,"timestamp":1873002930772,"id":85,"parentId":1,"tags":{},"startTime":1778154970296,"traceId":"9e2b79e1f2aae9f4"},{"name":"next-build","duration":14243627,"timestamp":1872988708404,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1778154956073,"traceId":"9e2b79e1f2aae9f4"}] +[{"name":"run-turbopack","duration":5874058,"timestamp":1873216456437,"id":17,"parentId":1,"tags":{},"startTime":1778155183822,"traceId":"048c4a81a9d3773a"},{"name":"run-typescript","duration":6766778,"timestamp":1873222543066,"id":20,"parentId":1,"tags":{},"startTime":1778155189909,"traceId":"048c4a81a9d3773a"},{"name":"static-check","duration":512912,"timestamp":1873229327806,"id":23,"parentId":1,"tags":{},"startTime":1778155196694,"traceId":"048c4a81a9d3773a"},{"name":"static-generation","duration":187218,"timestamp":1873229845711,"id":75,"parentId":1,"tags":{},"startTime":1778155197211,"traceId":"048c4a81a9d3773a"},{"name":"output-standalone","duration":465337,"timestamp":1873230040982,"id":82,"parentId":1,"tags":{},"startTime":1778155197407,"traceId":"048c4a81a9d3773a"},{"name":"telemetry-flush","duration":27507,"timestamp":1873230507421,"id":85,"parentId":1,"tags":{},"startTime":1778155197873,"traceId":"048c4a81a9d3773a"},{"name":"next-build","duration":14945075,"timestamp":1873215589869,"id":1,"tags":{"buildMode":"default","version":"16.1.6","bundler":"turbopack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1778155182956,"traceId":"048c4a81a9d3773a"}] diff --git a/components/ui/Heading.tsx b/components/ui/Heading.tsx index c3adbd8f3..154093c43 100644 --- a/components/ui/Heading.tsx +++ b/components/ui/Heading.tsx @@ -32,18 +32,18 @@ export function Heading({ const effectiveSize = size || String(level) as HeadingSize; const sizes: Record = { - 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[1.0]', - 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[1.1]', - 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-[1.15]', + 'hero': 'font-heading text-4xl md:text-5xl lg:text-6xl font-black tracking-tight leading-[0.9]', + 'section': 'font-heading text-3xl md:text-4xl lg:text-5xl font-extrabold tracking-tight leading-[0.95]', + 'subsection': 'font-heading text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight leading-tight', 'card': 'text-xl md:text-2xl font-bold leading-snug', 'small': 'text-lg font-semibold leading-snug', // Legacy support - '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[1.0] tracking-tight', - '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[1.1] tracking-tight', - '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-[1.15] tracking-tight', - '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-[1.2]', - '5': 'text-base md:text-lg font-bold leading-[1.3]', - '6': 'text-base md:text-lg font-semibold leading-[1.4]', + '1': 'text-2xl md:text-4xl lg:text-5xl font-bold leading-[0.9] tracking-tight', + '2': 'text-xl md:text-3xl lg:text-4xl font-bold leading-[0.95] tracking-tight', + '3': 'text-lg md:text-2xl lg:text-3xl font-bold leading-tight tracking-tight', + '4': 'text-lg md:text-xl lg:text-2xl font-bold leading-snug', + '5': 'text-base md:text-lg font-bold leading-normal', + '6': 'text-base md:text-lg font-semibold leading-normal', }; const variants = {

      NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nexport function callWithTimeout(\n promise: Promise,\n timeout: number\n): Promise {\n let timeoutHandle: ReturnType;\n\n const timeoutPromise = new Promise(function timeoutFunction(\n _resolve,\n reject\n ) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).then(\n result => {\n clearTimeout(timeoutHandle);\n return result;\n },\n reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package.\n * @param timer\n */\nexport function unrefTimer(timer: { unref(): unknown } | number): void {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport interface Clock {\n /**\n * Return the current time in milliseconds from some epoch such as the Unix epoch or process start\n */\n now(): number;\n}\n\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nexport class AnchoredClock implements Clock {\n private _monotonicClock: Clock;\n private _epochMillis: number;\n private _performanceMillis: number;\n\n /**\n * Create a new AnchoredClock anchored to the current time returned by systemClock.\n *\n * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n */\n public constructor(systemClock: Clock, monotonicClock: Clock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\n\n /**\n * Returns the current time by adding the number of milliseconds since the\n * AnchoredClock was created to the creation epoch time\n */\n public now(): number {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.214.0';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from './types/LoggerProvider';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport type { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport type { Logger } from '../types/Logger';\nimport type { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport type { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n DiagLogger,\n Meter,\n MeterProvider,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { diag, metrics, trace } from '@opentelemetry/api';\nimport type { Logger, LoggerProvider } from '@opentelemetry/api-logs';\nimport { logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport type {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\n\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\n }\n\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from './types/LoggerProvider';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { NOOP_LOGGER } from './NoopLogger';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport type { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\n\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport type { massWrap, massUnwrap } from '../../shimmer';\nimport { wrap, unwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport type { Hooked } from './RequireInTheMiddleSingleton';\nimport { RequireInTheMiddleSingleton } from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport type {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n // Access require via globalThis to prevent webpack from analyzing it as a dependency expression\n const nodeRequire = globalThis.require;\n if (!nodeRequire?.resolve || !nodeRequire?.cache) return;\n\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\n const { name } = module;\n try {\n const resolvedModule = nodeRequire.resolve(name);\n if (nodeRequire.cache[resolvedModule]?.loaded) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(\n `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n );\n }\n } catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = readFileSync(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\n );\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: HookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: true },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport type { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Logger } from './types/Logger';\nimport type { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges: string[] = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n } else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\n } finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\n } finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport type { Instrumentation } from './types';\nimport type { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUD_PROVIDER = 'cloud.provider';\nconst TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nconst TMP_CLOUD_REGION = 'cloud.region';\nconst TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nconst TMP_CLOUD_PLATFORM = 'cloud.platform';\nconst TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nconst TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nconst TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nconst TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nconst TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nconst TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nconst TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nconst TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nconst TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nconst TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nconst TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nconst TMP_CONTAINER_NAME = 'container.name';\nconst TMP_CONTAINER_ID = 'container.id';\nconst TMP_CONTAINER_RUNTIME = 'container.runtime';\nconst TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nconst TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nconst TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nconst TMP_DEVICE_ID = 'device.id';\nconst TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nconst TMP_DEVICE_MODEL_NAME = 'device.model.name';\nconst TMP_FAAS_NAME = 'faas.name';\nconst TMP_FAAS_ID = 'faas.id';\nconst TMP_FAAS_VERSION = 'faas.version';\nconst TMP_FAAS_INSTANCE = 'faas.instance';\nconst TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nconst TMP_HOST_ID = 'host.id';\nconst TMP_HOST_NAME = 'host.name';\nconst TMP_HOST_TYPE = 'host.type';\nconst TMP_HOST_ARCH = 'host.arch';\nconst TMP_HOST_IMAGE_NAME = 'host.image.name';\nconst TMP_HOST_IMAGE_ID = 'host.image.id';\nconst TMP_HOST_IMAGE_VERSION = 'host.image.version';\nconst TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nconst TMP_K8S_NODE_NAME = 'k8s.node.name';\nconst TMP_K8S_NODE_UID = 'k8s.node.uid';\nconst TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nconst TMP_K8S_POD_UID = 'k8s.pod.uid';\nconst TMP_K8S_POD_NAME = 'k8s.pod.name';\nconst TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nconst TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nconst TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nconst TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nconst TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nconst TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nconst TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nconst TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nconst TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nconst TMP_K8S_JOB_UID = 'k8s.job.uid';\nconst TMP_K8S_JOB_NAME = 'k8s.job.name';\nconst TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nconst TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nconst TMP_OS_TYPE = 'os.type';\nconst TMP_OS_DESCRIPTION = 'os.description';\nconst TMP_OS_NAME = 'os.name';\nconst TMP_OS_VERSION = 'os.version';\nconst TMP_PROCESS_PID = 'process.pid';\nconst TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nconst TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nconst TMP_PROCESS_COMMAND = 'process.command';\nconst TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nconst TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nconst TMP_PROCESS_OWNER = 'process.owner';\nconst TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nconst TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nconst TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nconst TMP_SERVICE_NAME = 'service.name';\nconst TMP_SERVICE_NAMESPACE = 'service.namespace';\nconst TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nconst TMP_SERVICE_VERSION = 'service.version';\nconst TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nconst TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nconst TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nconst TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nconst TMP_WEBENGINE_NAME = 'webengine.name';\nconst TMP_WEBENGINE_VERSION = 'webengine.version';\nconst TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n\n/**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n\n/**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n\n/**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION =\n TMP_PROCESS_RUNTIME_DESCRIPTION;\n\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexport const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n\n/**\n * Definition of available values for SemanticResourceAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification.\n */\nexport type SemanticResourceAttributes = {\n /**\n * Name of the cloud provider.\n */\n CLOUD_PROVIDER: 'cloud.provider';\n\n /**\n * The cloud account ID the resource is assigned to.\n */\n CLOUD_ACCOUNT_ID: 'cloud.account.id';\n\n /**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n */\n CLOUD_REGION: 'cloud.region';\n\n /**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n */\n CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone';\n\n /**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\n CLOUD_PLATFORM: 'cloud.platform';\n\n /**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n */\n AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn';\n\n /**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n */\n AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn';\n\n /**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\n AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype';\n\n /**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n */\n AWS_ECS_TASK_ARN: 'aws.ecs.task.arn';\n\n /**\n * The task definition family this task definition is a member of.\n */\n AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family';\n\n /**\n * The revision for this task definition.\n */\n AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision';\n\n /**\n * The ARN of an EKS cluster.\n */\n AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn';\n\n /**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n */\n AWS_LOG_GROUP_NAMES: 'aws.log.group.names';\n\n /**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n */\n AWS_LOG_GROUP_ARNS: 'aws.log.group.arns';\n\n /**\n * The name(s) of the AWS log stream(s) an application is writing to.\n */\n AWS_LOG_STREAM_NAMES: 'aws.log.stream.names';\n\n /**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n */\n AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns';\n\n /**\n * Container name.\n */\n CONTAINER_NAME: 'container.name';\n\n /**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n */\n CONTAINER_ID: 'container.id';\n\n /**\n * The container runtime managing this container.\n */\n CONTAINER_RUNTIME: 'container.runtime';\n\n /**\n * Name of the image the container was built on.\n */\n CONTAINER_IMAGE_NAME: 'container.image.name';\n\n /**\n * Container image tag.\n */\n CONTAINER_IMAGE_TAG: 'container.image.tag';\n\n /**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n */\n DEPLOYMENT_ENVIRONMENT: 'deployment.environment';\n\n /**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n */\n DEVICE_ID: 'device.id';\n\n /**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n */\n DEVICE_MODEL_IDENTIFIER: 'device.model.identifier';\n\n /**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n */\n DEVICE_MODEL_NAME: 'device.model.name';\n\n /**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n */\n FAAS_NAME: 'faas.name';\n\n /**\n * The unique ID of the single function that this runtime instance executes.\n *\n * Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n */\n FAAS_ID: 'faas.id';\n\n /**\n * The immutable version of the function being executed.\n *\n * Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n */\n FAAS_VERSION: 'faas.version';\n\n /**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n */\n FAAS_INSTANCE: 'faas.instance';\n\n /**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n */\n FAAS_MAX_MEMORY: 'faas.max_memory';\n\n /**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n */\n HOST_ID: 'host.id';\n\n /**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n */\n HOST_NAME: 'host.name';\n\n /**\n * Type of host. For Cloud, this must be the machine type.\n */\n HOST_TYPE: 'host.type';\n\n /**\n * The CPU architecture the host system is running on.\n */\n HOST_ARCH: 'host.arch';\n\n /**\n * Name of the VM image or OS install the host was instantiated from.\n */\n HOST_IMAGE_NAME: 'host.image.name';\n\n /**\n * VM image ID. For Cloud, this value is from the provider.\n */\n HOST_IMAGE_ID: 'host.image.id';\n\n /**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n */\n HOST_IMAGE_VERSION: 'host.image.version';\n\n /**\n * The name of the cluster.\n */\n K8S_CLUSTER_NAME: 'k8s.cluster.name';\n\n /**\n * The name of the Node.\n */\n K8S_NODE_NAME: 'k8s.node.name';\n\n /**\n * The UID of the Node.\n */\n K8S_NODE_UID: 'k8s.node.uid';\n\n /**\n * The name of the namespace that the pod is running in.\n */\n K8S_NAMESPACE_NAME: 'k8s.namespace.name';\n\n /**\n * The UID of the Pod.\n */\n K8S_POD_UID: 'k8s.pod.uid';\n\n /**\n * The name of the Pod.\n */\n K8S_POD_NAME: 'k8s.pod.name';\n\n /**\n * The name of the Container in a Pod template.\n */\n K8S_CONTAINER_NAME: 'k8s.container.name';\n\n /**\n * The UID of the ReplicaSet.\n */\n K8S_REPLICASET_UID: 'k8s.replicaset.uid';\n\n /**\n * The name of the ReplicaSet.\n */\n K8S_REPLICASET_NAME: 'k8s.replicaset.name';\n\n /**\n * The UID of the Deployment.\n */\n K8S_DEPLOYMENT_UID: 'k8s.deployment.uid';\n\n /**\n * The name of the Deployment.\n */\n K8S_DEPLOYMENT_NAME: 'k8s.deployment.name';\n\n /**\n * The UID of the StatefulSet.\n */\n K8S_STATEFULSET_UID: 'k8s.statefulset.uid';\n\n /**\n * The name of the StatefulSet.\n */\n K8S_STATEFULSET_NAME: 'k8s.statefulset.name';\n\n /**\n * The UID of the DaemonSet.\n */\n K8S_DAEMONSET_UID: 'k8s.daemonset.uid';\n\n /**\n * The name of the DaemonSet.\n */\n K8S_DAEMONSET_NAME: 'k8s.daemonset.name';\n\n /**\n * The UID of the Job.\n */\n K8S_JOB_UID: 'k8s.job.uid';\n\n /**\n * The name of the Job.\n */\n K8S_JOB_NAME: 'k8s.job.name';\n\n /**\n * The UID of the CronJob.\n */\n K8S_CRONJOB_UID: 'k8s.cronjob.uid';\n\n /**\n * The name of the CronJob.\n */\n K8S_CRONJOB_NAME: 'k8s.cronjob.name';\n\n /**\n * The operating system type.\n */\n OS_TYPE: 'os.type';\n\n /**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n */\n OS_DESCRIPTION: 'os.description';\n\n /**\n * Human readable operating system name.\n */\n OS_NAME: 'os.name';\n\n /**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n */\n OS_VERSION: 'os.version';\n\n /**\n * Process identifier (PID).\n */\n PROCESS_PID: 'process.pid';\n\n /**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n */\n PROCESS_EXECUTABLE_NAME: 'process.executable.name';\n\n /**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n */\n PROCESS_EXECUTABLE_PATH: 'process.executable.path';\n\n /**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n */\n PROCESS_COMMAND: 'process.command';\n\n /**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n */\n PROCESS_COMMAND_LINE: 'process.command_line';\n\n /**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n */\n PROCESS_COMMAND_ARGS: 'process.command_args';\n\n /**\n * The username of the user that owns the process.\n */\n PROCESS_OWNER: 'process.owner';\n\n /**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n */\n PROCESS_RUNTIME_NAME: 'process.runtime.name';\n\n /**\n * The version of the runtime of this process, as returned by the runtime without modification.\n */\n PROCESS_RUNTIME_VERSION: 'process.runtime.version';\n\n /**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n */\n PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description';\n\n /**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n */\n SERVICE_NAME: 'service.name';\n\n /**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\n SERVICE_NAMESPACE: 'service.namespace';\n\n /**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n */\n SERVICE_INSTANCE_ID: 'service.instance.id';\n\n /**\n * The version string of the service API or implementation.\n */\n SERVICE_VERSION: 'service.version';\n\n /**\n * The name of the telemetry SDK as defined above.\n */\n TELEMETRY_SDK_NAME: 'telemetry.sdk.name';\n\n /**\n * The language of the telemetry SDK.\n */\n TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language';\n\n /**\n * The version string of the telemetry SDK.\n */\n TELEMETRY_SDK_VERSION: 'telemetry.sdk.version';\n\n /**\n * The version string of the auto instrumentation agent, if used.\n */\n TELEMETRY_AUTO_VERSION: 'telemetry.auto.version';\n\n /**\n * The name of the web engine.\n */\n WEBENGINE_NAME: 'webengine.name';\n\n /**\n * The version of the web engine.\n */\n WEBENGINE_VERSION: 'webengine.version';\n\n /**\n * Additional description of the web engine (e.g. detailed version and edition information).\n */\n WEBENGINE_DESCRIPTION: 'webengine.description';\n};\n\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexport const SemanticResourceAttributes: SemanticResourceAttributes =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUD_PROVIDER,\n TMP_CLOUD_ACCOUNT_ID,\n TMP_CLOUD_REGION,\n TMP_CLOUD_AVAILABILITY_ZONE,\n TMP_CLOUD_PLATFORM,\n TMP_AWS_ECS_CONTAINER_ARN,\n TMP_AWS_ECS_CLUSTER_ARN,\n TMP_AWS_ECS_LAUNCHTYPE,\n TMP_AWS_ECS_TASK_ARN,\n TMP_AWS_ECS_TASK_FAMILY,\n TMP_AWS_ECS_TASK_REVISION,\n TMP_AWS_EKS_CLUSTER_ARN,\n TMP_AWS_LOG_GROUP_NAMES,\n TMP_AWS_LOG_GROUP_ARNS,\n TMP_AWS_LOG_STREAM_NAMES,\n TMP_AWS_LOG_STREAM_ARNS,\n TMP_CONTAINER_NAME,\n TMP_CONTAINER_ID,\n TMP_CONTAINER_RUNTIME,\n TMP_CONTAINER_IMAGE_NAME,\n TMP_CONTAINER_IMAGE_TAG,\n TMP_DEPLOYMENT_ENVIRONMENT,\n TMP_DEVICE_ID,\n TMP_DEVICE_MODEL_IDENTIFIER,\n TMP_DEVICE_MODEL_NAME,\n TMP_FAAS_NAME,\n TMP_FAAS_ID,\n TMP_FAAS_VERSION,\n TMP_FAAS_INSTANCE,\n TMP_FAAS_MAX_MEMORY,\n TMP_HOST_ID,\n TMP_HOST_NAME,\n TMP_HOST_TYPE,\n TMP_HOST_ARCH,\n TMP_HOST_IMAGE_NAME,\n TMP_HOST_IMAGE_ID,\n TMP_HOST_IMAGE_VERSION,\n TMP_K8S_CLUSTER_NAME,\n TMP_K8S_NODE_NAME,\n TMP_K8S_NODE_UID,\n TMP_K8S_NAMESPACE_NAME,\n TMP_K8S_POD_UID,\n TMP_K8S_POD_NAME,\n TMP_K8S_CONTAINER_NAME,\n TMP_K8S_REPLICASET_UID,\n TMP_K8S_REPLICASET_NAME,\n TMP_K8S_DEPLOYMENT_UID,\n TMP_K8S_DEPLOYMENT_NAME,\n TMP_K8S_STATEFULSET_UID,\n TMP_K8S_STATEFULSET_NAME,\n TMP_K8S_DAEMONSET_UID,\n TMP_K8S_DAEMONSET_NAME,\n TMP_K8S_JOB_UID,\n TMP_K8S_JOB_NAME,\n TMP_K8S_CRONJOB_UID,\n TMP_K8S_CRONJOB_NAME,\n TMP_OS_TYPE,\n TMP_OS_DESCRIPTION,\n TMP_OS_NAME,\n TMP_OS_VERSION,\n TMP_PROCESS_PID,\n TMP_PROCESS_EXECUTABLE_NAME,\n TMP_PROCESS_EXECUTABLE_PATH,\n TMP_PROCESS_COMMAND,\n TMP_PROCESS_COMMAND_LINE,\n TMP_PROCESS_COMMAND_ARGS,\n TMP_PROCESS_OWNER,\n TMP_PROCESS_RUNTIME_NAME,\n TMP_PROCESS_RUNTIME_VERSION,\n TMP_PROCESS_RUNTIME_DESCRIPTION,\n TMP_SERVICE_NAME,\n TMP_SERVICE_NAMESPACE,\n TMP_SERVICE_INSTANCE_ID,\n TMP_SERVICE_VERSION,\n TMP_TELEMETRY_SDK_NAME,\n TMP_TELEMETRY_SDK_LANGUAGE,\n TMP_TELEMETRY_SDK_VERSION,\n TMP_TELEMETRY_AUTO_VERSION,\n TMP_WEBENGINE_NAME,\n TMP_WEBENGINE_VERSION,\n TMP_WEBENGINE_DESCRIPTION,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nconst TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport type CloudProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport const CloudProviderValues: CloudProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nconst TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n 'azure_container_instances';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nconst TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nconst TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nconst TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_LAMBDA =\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK =\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE =\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_APP_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n\n/**\n * Identifies the Values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport type CloudPlatformValues = {\n /** Alibaba Cloud Elastic Compute Service. */\n ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs';\n\n /** Alibaba Cloud Function Compute. */\n ALIBABA_CLOUD_FC: 'alibaba_cloud_fc';\n\n /** AWS Elastic Compute Cloud. */\n AWS_EC2: 'aws_ec2';\n\n /** AWS Elastic Container Service. */\n AWS_ECS: 'aws_ecs';\n\n /** AWS Elastic Kubernetes Service. */\n AWS_EKS: 'aws_eks';\n\n /** AWS Lambda. */\n AWS_LAMBDA: 'aws_lambda';\n\n /** AWS Elastic Beanstalk. */\n AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk';\n\n /** Azure Virtual Machines. */\n AZURE_VM: 'azure_vm';\n\n /** Azure Container Instances. */\n AZURE_CONTAINER_INSTANCES: 'azure_container_instances';\n\n /** Azure Kubernetes Service. */\n AZURE_AKS: 'azure_aks';\n\n /** Azure Functions. */\n AZURE_FUNCTIONS: 'azure_functions';\n\n /** Azure App Service. */\n AZURE_APP_SERVICE: 'azure_app_service';\n\n /** Google Cloud Compute Engine (GCE). */\n GCP_COMPUTE_ENGINE: 'gcp_compute_engine';\n\n /** Google Cloud Run. */\n GCP_CLOUD_RUN: 'gcp_cloud_run';\n\n /** Google Cloud Kubernetes Engine (GKE). */\n GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine';\n\n /** Google Cloud Functions (GCF). */\n GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions';\n\n /** Google Cloud App Engine (GAE). */\n GCP_APP_ENGINE: 'gcp_app_engine';\n};\n\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport const CloudPlatformValues: CloudPlatformValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nconst TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const AWSECSLAUNCHTYPEVALUES_FARGATE =\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n\n/**\n * Identifies the Values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport type AwsEcsLaunchtypeValues = {\n /** ec2. */\n EC2: 'ec2';\n\n /** fargate. */\n FARGATE: 'fargate';\n};\n\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nconst TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nconst TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nconst TMP_HOSTARCHVALUES_IA64 = 'ia64';\nconst TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nconst TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nconst TMP_HOSTARCHVALUES_X86 = 'x86';\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n\n/**\n * Identifies the Values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport type HostArchValues = {\n /** AMD64. */\n AMD64: 'amd64';\n\n /** ARM32. */\n ARM32: 'arm32';\n\n /** ARM64. */\n ARM64: 'arm64';\n\n /** Itanium. */\n IA64: 'ia64';\n\n /** 32-bit PowerPC. */\n PPC32: 'ppc32';\n\n /** 64-bit PowerPC. */\n PPC64: 'ppc64';\n\n /** 32-bit x86. */\n X86: 'x86';\n};\n\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport const HostArchValues: HostArchValues =\n /*#__PURE__*/ createConstMap([\n TMP_HOSTARCHVALUES_AMD64,\n TMP_HOSTARCHVALUES_ARM32,\n TMP_HOSTARCHVALUES_ARM64,\n TMP_HOSTARCHVALUES_IA64,\n TMP_HOSTARCHVALUES_PPC32,\n TMP_HOSTARCHVALUES_PPC64,\n TMP_HOSTARCHVALUES_X86,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_OSTYPEVALUES_WINDOWS = 'windows';\nconst TMP_OSTYPEVALUES_LINUX = 'linux';\nconst TMP_OSTYPEVALUES_DARWIN = 'darwin';\nconst TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nconst TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nconst TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nconst TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nconst TMP_OSTYPEVALUES_HPUX = 'hpux';\nconst TMP_OSTYPEVALUES_AIX = 'aix';\nconst TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nconst TMP_OSTYPEVALUES_Z_OS = 'z_os';\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n\n/**\n * Identifies the Values for OsTypeValues enum definition\n *\n * The operating system type.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport type OsTypeValues = {\n /** Microsoft Windows. */\n WINDOWS: 'windows';\n\n /** Linux. */\n LINUX: 'linux';\n\n /** Apple Darwin. */\n DARWIN: 'darwin';\n\n /** FreeBSD. */\n FREEBSD: 'freebsd';\n\n /** NetBSD. */\n NETBSD: 'netbsd';\n\n /** OpenBSD. */\n OPENBSD: 'openbsd';\n\n /** DragonFly BSD. */\n DRAGONFLYBSD: 'dragonflybsd';\n\n /** HP-UX (Hewlett Packard Unix). */\n HPUX: 'hpux';\n\n /** AIX (Advanced Interactive eXecutive). */\n AIX: 'aix';\n\n /** Oracle Solaris. */\n SOLARIS: 'solaris';\n\n /** IBM z/OS. */\n Z_OS: 'z_os';\n};\n\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport const OsTypeValues: OsTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_OSTYPEVALUES_WINDOWS,\n TMP_OSTYPEVALUES_LINUX,\n TMP_OSTYPEVALUES_DARWIN,\n TMP_OSTYPEVALUES_FREEBSD,\n TMP_OSTYPEVALUES_NETBSD,\n TMP_OSTYPEVALUES_OPENBSD,\n TMP_OSTYPEVALUES_DRAGONFLYBSD,\n TMP_OSTYPEVALUES_HPUX,\n TMP_OSTYPEVALUES_AIX,\n TMP_OSTYPEVALUES_SOLARIS,\n TMP_OSTYPEVALUES_Z_OS,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_CPP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_DOTNET =\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_ERLANG =\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_JAVA =\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_NODEJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PHP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PYTHON =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_RUBY =\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_WEBJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n\n/**\n * Identifies the Values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport type TelemetrySdkLanguageValues = {\n /** cpp. */\n CPP: 'cpp';\n\n /** dotnet. */\n DOTNET: 'dotnet';\n\n /** erlang. */\n ERLANG: 'erlang';\n\n /** go. */\n GO: 'go';\n\n /** java. */\n JAVA: 'java';\n\n /** nodejs. */\n NODEJS: 'nodejs';\n\n /** php. */\n PHP: 'php';\n\n /** python. */\n PYTHON: 'python';\n\n /** ruby. */\n RUBY: 'ruby';\n\n /** webjs. */\n WEBJS: 'webjs';\n};\n\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues =\n /*#__PURE__*/ createConstMap([\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n ]);\n","/*\n * Copyright The OpenTelemetry Authors\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 * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function createConstMap(values: Array): T {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res: any = {};\n const len = values.length;\n for (let lp = 0; lp < len; lp++) {\n const val = values[lp];\n if (val) {\n res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n }\n }\n\n return res as T;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticAttributes';\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticResourceAttributes';\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nconst TMP_DB_SYSTEM = 'db.system';\nconst TMP_DB_CONNECTION_STRING = 'db.connection_string';\nconst TMP_DB_USER = 'db.user';\nconst TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nconst TMP_DB_NAME = 'db.name';\nconst TMP_DB_STATEMENT = 'db.statement';\nconst TMP_DB_OPERATION = 'db.operation';\nconst TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nconst TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nconst TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nconst TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nconst TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nconst TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nconst TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n 'db.cassandra.speculative_execution_count';\nconst TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nconst TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nconst TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nconst TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nconst TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nconst TMP_DB_SQL_TABLE = 'db.sql.table';\nconst TMP_EXCEPTION_TYPE = 'exception.type';\nconst TMP_EXCEPTION_MESSAGE = 'exception.message';\nconst TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nconst TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nconst TMP_FAAS_TRIGGER = 'faas.trigger';\nconst TMP_FAAS_EXECUTION = 'faas.execution';\nconst TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nconst TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nconst TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nconst TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nconst TMP_FAAS_TIME = 'faas.time';\nconst TMP_FAAS_CRON = 'faas.cron';\nconst TMP_FAAS_COLDSTART = 'faas.coldstart';\nconst TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nconst TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nconst TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nconst TMP_NET_TRANSPORT = 'net.transport';\nconst TMP_NET_PEER_IP = 'net.peer.ip';\nconst TMP_NET_PEER_PORT = 'net.peer.port';\nconst TMP_NET_PEER_NAME = 'net.peer.name';\nconst TMP_NET_HOST_IP = 'net.host.ip';\nconst TMP_NET_HOST_PORT = 'net.host.port';\nconst TMP_NET_HOST_NAME = 'net.host.name';\nconst TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nconst TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nconst TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nconst TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nconst TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nconst TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nconst TMP_PEER_SERVICE = 'peer.service';\nconst TMP_ENDUSER_ID = 'enduser.id';\nconst TMP_ENDUSER_ROLE = 'enduser.role';\nconst TMP_ENDUSER_SCOPE = 'enduser.scope';\nconst TMP_THREAD_ID = 'thread.id';\nconst TMP_THREAD_NAME = 'thread.name';\nconst TMP_CODE_FUNCTION = 'code.function';\nconst TMP_CODE_NAMESPACE = 'code.namespace';\nconst TMP_CODE_FILEPATH = 'code.filepath';\nconst TMP_CODE_LINENO = 'code.lineno';\nconst TMP_HTTP_METHOD = 'http.method';\nconst TMP_HTTP_URL = 'http.url';\nconst TMP_HTTP_TARGET = 'http.target';\nconst TMP_HTTP_HOST = 'http.host';\nconst TMP_HTTP_SCHEME = 'http.scheme';\nconst TMP_HTTP_STATUS_CODE = 'http.status_code';\nconst TMP_HTTP_FLAVOR = 'http.flavor';\nconst TMP_HTTP_USER_AGENT = 'http.user_agent';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.response_content_length_uncompressed';\nconst TMP_HTTP_SERVER_NAME = 'http.server_name';\nconst TMP_HTTP_ROUTE = 'http.route';\nconst TMP_HTTP_CLIENT_IP = 'http.client_ip';\nconst TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nconst TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nconst TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n 'aws.dynamodb.provisioned_write_capacity';\nconst TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nconst TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nconst TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nconst TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nconst TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nconst TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n 'aws.dynamodb.exclusive_start_table';\nconst TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nconst TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nconst TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nconst TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nconst TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nconst TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nconst TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n 'aws.dynamodb.global_secondary_index_updates';\nconst TMP_MESSAGING_SYSTEM = 'messaging.system';\nconst TMP_MESSAGING_DESTINATION = 'messaging.destination';\nconst TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nconst TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nconst TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nconst TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nconst TMP_MESSAGING_URL = 'messaging.url';\nconst TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nconst TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n 'messaging.message_payload_compressed_size_bytes';\nconst TMP_MESSAGING_OPERATION = 'messaging.operation';\nconst TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nconst TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nconst TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nconst TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nconst TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nconst TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nconst TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nconst TMP_RPC_SYSTEM = 'rpc.system';\nconst TMP_RPC_SERVICE = 'rpc.service';\nconst TMP_RPC_METHOD = 'rpc.method';\nconst TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nconst TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nconst TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nconst TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nconst TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nconst TMP_MESSAGE_TYPE = 'message.type';\nconst TMP_MESSAGE_ID = 'message.id';\nconst TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nconst TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_USER = TMP_DB_USER;\n\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_NAME = TMP_DB_NAME;\n\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL =\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID =\n TMP_DB_CASSANDRA_COORDINATOR_ID;\n\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC =\n TMP_DB_CASSANDRA_COORDINATOR_DC;\n\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexport const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexport const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexport const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE =\n TMP_NET_HOST_CONNECTION_SUBTYPE;\n\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n\n/**\n * Current "managed" thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n\n/**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH =\n TMP_HTTP_REQUEST_CONTENT_LENGTH;\n\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY =\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ =\n TMP_AWS_DYNAMODB_CONSISTENT_READ;\n\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET =\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS =\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT =\n TMP_AWS_DYNAMODB_SCANNED_COUNT;\n\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const SEMATTRS_MESSAGING_DESTINATION_KIND =\n TMP_MESSAGING_DESTINATION_KIND;\n\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_TEMP_DESTINATION =\n TMP_MESSAGING_TEMP_DESTINATION;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL_VERSION =\n TMP_MESSAGING_PROTOCOL_VERSION;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexport const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY =\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY =\n TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP =\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n\n/**\n * Definition of available values for SemanticAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification.\n */\nexport type SemanticAttributes = {\n /**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n */\n AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn';\n\n /**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\n DB_SYSTEM: 'db.system';\n\n /**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n */\n DB_CONNECTION_STRING: 'db.connection_string';\n\n /**\n * Username for accessing the database.\n */\n DB_USER: 'db.user';\n\n /**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n */\n DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname';\n\n /**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n */\n DB_NAME: 'db.name';\n\n /**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n */\n DB_STATEMENT: 'db.statement';\n\n /**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n */\n DB_OPERATION: 'db.operation';\n\n /**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n */\n DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name';\n\n /**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace';\n\n /**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n */\n DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size';\n\n /**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\n DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level';\n\n /**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n */\n DB_CASSANDRA_TABLE: 'db.cassandra.table';\n\n /**\n * Whether or not the query is idempotent.\n */\n DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence';\n\n /**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n */\n DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count';\n\n /**\n * The ID of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id';\n\n /**\n * The data center of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc';\n\n /**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_HBASE_NAMESPACE: 'db.hbase.namespace';\n\n /**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n */\n DB_REDIS_DATABASE_INDEX: 'db.redis.database_index';\n\n /**\n * The collection being accessed within the database stated in `db.name`.\n */\n DB_MONGODB_COLLECTION: 'db.mongodb.collection';\n\n /**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n */\n DB_SQL_TABLE: 'db.sql.table';\n\n /**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n */\n EXCEPTION_TYPE: 'exception.type';\n\n /**\n * The exception message.\n */\n EXCEPTION_MESSAGE: 'exception.message';\n\n /**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n */\n EXCEPTION_STACKTRACE: 'exception.stacktrace';\n\n /**\n * SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n *\n * Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n */\n EXCEPTION_ESCAPED: 'exception.escaped';\n\n /**\n * Type of the trigger on which the function is executed.\n */\n FAAS_TRIGGER: 'faas.trigger';\n\n /**\n * The execution ID of the current function execution.\n */\n FAAS_EXECUTION: 'faas.execution';\n\n /**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n */\n FAAS_DOCUMENT_COLLECTION: 'faas.document.collection';\n\n /**\n * Describes the type of the operation that was performed on the data.\n */\n FAAS_DOCUMENT_OPERATION: 'faas.document.operation';\n\n /**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n */\n FAAS_DOCUMENT_TIME: 'faas.document.time';\n\n /**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n */\n FAAS_DOCUMENT_NAME: 'faas.document.name';\n\n /**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n */\n FAAS_TIME: 'faas.time';\n\n /**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n */\n FAAS_CRON: 'faas.cron';\n\n /**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n */\n FAAS_COLDSTART: 'faas.coldstart';\n\n /**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n */\n FAAS_INVOKED_NAME: 'faas.invoked_name';\n\n /**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n */\n FAAS_INVOKED_PROVIDER: 'faas.invoked_provider';\n\n /**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n */\n FAAS_INVOKED_REGION: 'faas.invoked_region';\n\n /**\n * Transport protocol used. See note below.\n */\n NET_TRANSPORT: 'net.transport';\n\n /**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n */\n NET_PEER_IP: 'net.peer.ip';\n\n /**\n * Remote port number.\n */\n NET_PEER_PORT: 'net.peer.port';\n\n /**\n * Remote hostname or similar, see note below.\n */\n NET_PEER_NAME: 'net.peer.name';\n\n /**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n */\n NET_HOST_IP: 'net.host.ip';\n\n /**\n * Like `net.peer.port` but for the host port.\n */\n NET_HOST_PORT: 'net.host.port';\n\n /**\n * Local hostname or similar, see note below.\n */\n NET_HOST_NAME: 'net.host.name';\n\n /**\n * The internet connection type currently being used by the host.\n */\n NET_HOST_CONNECTION_TYPE: 'net.host.connection.type';\n\n /**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\n NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype';\n\n /**\n * The name of the mobile carrier.\n */\n NET_HOST_CARRIER_NAME: 'net.host.carrier.name';\n\n /**\n * The mobile carrier country code.\n */\n NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc';\n\n /**\n * The mobile carrier network code.\n */\n NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc';\n\n /**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n */\n NET_HOST_CARRIER_ICC: 'net.host.carrier.icc';\n\n /**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n */\n PEER_SERVICE: 'peer.service';\n\n /**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n */\n ENDUSER_ID: 'enduser.id';\n\n /**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n */\n ENDUSER_ROLE: 'enduser.role';\n\n /**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n */\n ENDUSER_SCOPE: 'enduser.scope';\n\n /**\n * Current "managed" thread ID (as opposed to OS thread ID).\n */\n THREAD_ID: 'thread.id';\n\n /**\n * Current thread name.\n */\n THREAD_NAME: 'thread.name';\n\n /**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n */\n CODE_FUNCTION: 'code.function';\n\n /**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n */\n CODE_NAMESPACE: 'code.namespace';\n\n /**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n */\n CODE_FILEPATH: 'code.filepath';\n\n /**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n */\n CODE_LINENO: 'code.lineno';\n\n /**\n * HTTP request method.\n */\n HTTP_METHOD: 'http.method';\n\n /**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n */\n HTTP_URL: 'http.url';\n\n /**\n * The full request target as passed in a HTTP request line or equivalent.\n */\n HTTP_TARGET: 'http.target';\n\n /**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n */\n HTTP_HOST: 'http.host';\n\n /**\n * The URI scheme identifying the used protocol.\n */\n HTTP_SCHEME: 'http.scheme';\n\n /**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n */\n HTTP_STATUS_CODE: 'http.status_code';\n\n /**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\n HTTP_FLAVOR: 'http.flavor';\n\n /**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n */\n HTTP_USER_AGENT: 'http.user_agent';\n\n /**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n */\n HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length';\n\n /**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed';\n\n /**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n */\n HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length';\n\n /**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed';\n\n /**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n */\n HTTP_SERVER_NAME: 'http.server_name';\n\n /**\n * The matched route (path template).\n */\n HTTP_ROUTE: 'http.route';\n\n /**\n * The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n *\n * Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n */\n HTTP_CLIENT_IP: 'http.client_ip';\n\n /**\n * The keys in the `RequestItems` object field.\n */\n AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names';\n\n /**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n */\n AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity';\n\n /**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n */\n AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics';\n\n /**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity';\n\n /**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity';\n\n /**\n * The value of the `ConsistentRead` request parameter.\n */\n AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read';\n\n /**\n * The value of the `ProjectionExpression` request parameter.\n */\n AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection';\n\n /**\n * The value of the `Limit` request parameter.\n */\n AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit';\n\n /**\n * The value of the `AttributesToGet` request parameter.\n */\n AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get';\n\n /**\n * The value of the `IndexName` request parameter.\n */\n AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name';\n\n /**\n * The value of the `Select` request parameter.\n */\n AWS_DYNAMODB_SELECT: 'aws.dynamodb.select';\n\n /**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes';\n\n /**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes';\n\n /**\n * The value of the `ExclusiveStartTableName` request parameter.\n */\n AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table';\n\n /**\n * The the number of items in the `TableNames` response parameter.\n */\n AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count';\n\n /**\n * The value of the `ScanIndexForward` request parameter.\n */\n AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward';\n\n /**\n * The value of the `Segment` request parameter.\n */\n AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment';\n\n /**\n * The value of the `TotalSegments` request parameter.\n */\n AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments';\n\n /**\n * The value of the `Count` response parameter.\n */\n AWS_DYNAMODB_COUNT: 'aws.dynamodb.count';\n\n /**\n * The value of the `ScannedCount` response parameter.\n */\n AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count';\n\n /**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n */\n AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions';\n\n /**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates';\n\n /**\n * A string identifying the messaging system.\n */\n MESSAGING_SYSTEM: 'messaging.system';\n\n /**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n */\n MESSAGING_DESTINATION: 'messaging.destination';\n\n /**\n * The kind of message destination.\n */\n MESSAGING_DESTINATION_KIND: 'messaging.destination_kind';\n\n /**\n * A boolean that is true if the message destination is temporary.\n */\n MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination';\n\n /**\n * The name of the transport protocol.\n */\n MESSAGING_PROTOCOL: 'messaging.protocol';\n\n /**\n * The version of the transport protocol.\n */\n MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version';\n\n /**\n * Connection string.\n */\n MESSAGING_URL: 'messaging.url';\n\n /**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n */\n MESSAGING_MESSAGE_ID: 'messaging.message_id';\n\n /**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n */\n MESSAGING_CONVERSATION_ID: 'messaging.conversation_id';\n\n /**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n */\n MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes';\n\n /**\n * The compressed size of the message payload in bytes.\n */\n MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes';\n\n /**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n */\n MESSAGING_OPERATION: 'messaging.operation';\n\n /**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n */\n MESSAGING_CONSUMER_ID: 'messaging.consumer_id';\n\n /**\n * RabbitMQ message routing key.\n */\n MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key';\n\n /**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n */\n MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key';\n\n /**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n */\n MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group';\n\n /**\n * Client Id for the Consumer or Producer that is handling the message.\n */\n MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id';\n\n /**\n * Partition the message is sent to.\n */\n MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition';\n\n /**\n * A boolean that is true if the message is a tombstone.\n */\n MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone';\n\n /**\n * A string identifying the remoting system.\n */\n RPC_SYSTEM: 'rpc.system';\n\n /**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n */\n RPC_SERVICE: 'rpc.service';\n\n /**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n */\n RPC_METHOD: 'rpc.method';\n\n /**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\n RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code';\n\n /**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n */\n RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version';\n\n /**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n */\n RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id';\n\n /**\n * `error.code` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code';\n\n /**\n * `error.message` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message';\n\n /**\n * Whether this is a received or sent message.\n */\n MESSAGE_TYPE: 'message.type';\n\n /**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n */\n MESSAGE_ID: 'message.id';\n\n /**\n * Compressed size of the message in bytes.\n */\n MESSAGE_COMPRESSED_SIZE: 'message.compressed_size';\n\n /**\n * Uncompressed size of the message in bytes.\n */\n MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size';\n};\n\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexport const SemanticAttributes: SemanticAttributes =\n /*#__PURE__*/ createConstMap([\n TMP_AWS_LAMBDA_INVOKED_ARN,\n TMP_DB_SYSTEM,\n TMP_DB_CONNECTION_STRING,\n TMP_DB_USER,\n TMP_DB_JDBC_DRIVER_CLASSNAME,\n TMP_DB_NAME,\n TMP_DB_STATEMENT,\n TMP_DB_OPERATION,\n TMP_DB_MSSQL_INSTANCE_NAME,\n TMP_DB_CASSANDRA_KEYSPACE,\n TMP_DB_CASSANDRA_PAGE_SIZE,\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n TMP_DB_CASSANDRA_TABLE,\n TMP_DB_CASSANDRA_IDEMPOTENCE,\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n TMP_DB_CASSANDRA_COORDINATOR_ID,\n TMP_DB_CASSANDRA_COORDINATOR_DC,\n TMP_DB_HBASE_NAMESPACE,\n TMP_DB_REDIS_DATABASE_INDEX,\n TMP_DB_MONGODB_COLLECTION,\n TMP_DB_SQL_TABLE,\n TMP_EXCEPTION_TYPE,\n TMP_EXCEPTION_MESSAGE,\n TMP_EXCEPTION_STACKTRACE,\n TMP_EXCEPTION_ESCAPED,\n TMP_FAAS_TRIGGER,\n TMP_FAAS_EXECUTION,\n TMP_FAAS_DOCUMENT_COLLECTION,\n TMP_FAAS_DOCUMENT_OPERATION,\n TMP_FAAS_DOCUMENT_TIME,\n TMP_FAAS_DOCUMENT_NAME,\n TMP_FAAS_TIME,\n TMP_FAAS_CRON,\n TMP_FAAS_COLDSTART,\n TMP_FAAS_INVOKED_NAME,\n TMP_FAAS_INVOKED_PROVIDER,\n TMP_FAAS_INVOKED_REGION,\n TMP_NET_TRANSPORT,\n TMP_NET_PEER_IP,\n TMP_NET_PEER_PORT,\n TMP_NET_PEER_NAME,\n TMP_NET_HOST_IP,\n TMP_NET_HOST_PORT,\n TMP_NET_HOST_NAME,\n TMP_NET_HOST_CONNECTION_TYPE,\n TMP_NET_HOST_CONNECTION_SUBTYPE,\n TMP_NET_HOST_CARRIER_NAME,\n TMP_NET_HOST_CARRIER_MCC,\n TMP_NET_HOST_CARRIER_MNC,\n TMP_NET_HOST_CARRIER_ICC,\n TMP_PEER_SERVICE,\n TMP_ENDUSER_ID,\n TMP_ENDUSER_ROLE,\n TMP_ENDUSER_SCOPE,\n TMP_THREAD_ID,\n TMP_THREAD_NAME,\n TMP_CODE_FUNCTION,\n TMP_CODE_NAMESPACE,\n TMP_CODE_FILEPATH,\n TMP_CODE_LINENO,\n TMP_HTTP_METHOD,\n TMP_HTTP_URL,\n TMP_HTTP_TARGET,\n TMP_HTTP_HOST,\n TMP_HTTP_SCHEME,\n TMP_HTTP_STATUS_CODE,\n TMP_HTTP_FLAVOR,\n TMP_HTTP_USER_AGENT,\n TMP_HTTP_REQUEST_CONTENT_LENGTH,\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_SERVER_NAME,\n TMP_HTTP_ROUTE,\n TMP_HTTP_CLIENT_IP,\n TMP_AWS_DYNAMODB_TABLE_NAMES,\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n TMP_AWS_DYNAMODB_CONSISTENT_READ,\n TMP_AWS_DYNAMODB_PROJECTION,\n TMP_AWS_DYNAMODB_LIMIT,\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n TMP_AWS_DYNAMODB_INDEX_NAME,\n TMP_AWS_DYNAMODB_SELECT,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n TMP_AWS_DYNAMODB_TABLE_COUNT,\n TMP_AWS_DYNAMODB_SCAN_FORWARD,\n TMP_AWS_DYNAMODB_SEGMENT,\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n TMP_AWS_DYNAMODB_COUNT,\n TMP_AWS_DYNAMODB_SCANNED_COUNT,\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n TMP_MESSAGING_SYSTEM,\n TMP_MESSAGING_DESTINATION,\n TMP_MESSAGING_DESTINATION_KIND,\n TMP_MESSAGING_TEMP_DESTINATION,\n TMP_MESSAGING_PROTOCOL,\n TMP_MESSAGING_PROTOCOL_VERSION,\n TMP_MESSAGING_URL,\n TMP_MESSAGING_MESSAGE_ID,\n TMP_MESSAGING_CONVERSATION_ID,\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n TMP_MESSAGING_OPERATION,\n TMP_MESSAGING_CONSUMER_ID,\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n TMP_MESSAGING_KAFKA_CLIENT_ID,\n TMP_MESSAGING_KAFKA_PARTITION,\n TMP_MESSAGING_KAFKA_TOMBSTONE,\n TMP_RPC_SYSTEM,\n TMP_RPC_SERVICE,\n TMP_RPC_METHOD,\n TMP_RPC_GRPC_STATUS_CODE,\n TMP_RPC_JSONRPC_VERSION,\n TMP_RPC_JSONRPC_REQUEST_ID,\n TMP_RPC_JSONRPC_ERROR_CODE,\n TMP_RPC_JSONRPC_ERROR_MESSAGE,\n TMP_MESSAGE_TYPE,\n TMP_MESSAGE_ID,\n TMP_MESSAGE_COMPRESSED_SIZE,\n TMP_MESSAGE_UNCOMPRESSED_SIZE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nconst TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nconst TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nconst TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nconst TMP_DBSYSTEMVALUES_DB2 = 'db2';\nconst TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nconst TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nconst TMP_DBSYSTEMVALUES_HIVE = 'hive';\nconst TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nconst TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nconst TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nconst TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nconst TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nconst TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nconst TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nconst TMP_DBSYSTEMVALUES_EDB = 'edb';\nconst TMP_DBSYSTEMVALUES_CACHE = 'cache';\nconst TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nconst TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nconst TMP_DBSYSTEMVALUES_DERBY = 'derby';\nconst TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nconst TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nconst TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nconst TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nconst TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nconst TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nconst TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nconst TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nconst TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nconst TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nconst TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nconst TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nconst TMP_DBSYSTEMVALUES_H2 = 'h2';\nconst TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nconst TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nconst TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nconst TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nconst TMP_DBSYSTEMVALUES_REDIS = 'redis';\nconst TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nconst TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nconst TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nconst TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nconst TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nconst TMP_DBSYSTEMVALUES_GEODE = 'geode';\nconst TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nconst TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nconst TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n\n/**\n * Identifies the Values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport type DbSystemValues = {\n /** Some other SQL database. Fallback only. See notes. */\n OTHER_SQL: 'other_sql';\n\n /** Microsoft SQL Server. */\n MSSQL: 'mssql';\n\n /** MySQL. */\n MYSQL: 'mysql';\n\n /** Oracle Database. */\n ORACLE: 'oracle';\n\n /** IBM Db2. */\n DB2: 'db2';\n\n /** PostgreSQL. */\n POSTGRESQL: 'postgresql';\n\n /** Amazon Redshift. */\n REDSHIFT: 'redshift';\n\n /** Apache Hive. */\n HIVE: 'hive';\n\n /** Cloudscape. */\n CLOUDSCAPE: 'cloudscape';\n\n /** HyperSQL DataBase. */\n HSQLDB: 'hsqldb';\n\n /** Progress Database. */\n PROGRESS: 'progress';\n\n /** SAP MaxDB. */\n MAXDB: 'maxdb';\n\n /** SAP HANA. */\n HANADB: 'hanadb';\n\n /** Ingres. */\n INGRES: 'ingres';\n\n /** FirstSQL. */\n FIRSTSQL: 'firstsql';\n\n /** EnterpriseDB. */\n EDB: 'edb';\n\n /** InterSystems Caché. */\n CACHE: 'cache';\n\n /** Adabas (Adaptable Database System). */\n ADABAS: 'adabas';\n\n /** Firebird. */\n FIREBIRD: 'firebird';\n\n /** Apache Derby. */\n DERBY: 'derby';\n\n /** FileMaker. */\n FILEMAKER: 'filemaker';\n\n /** Informix. */\n INFORMIX: 'informix';\n\n /** InstantDB. */\n INSTANTDB: 'instantdb';\n\n /** InterBase. */\n INTERBASE: 'interbase';\n\n /** MariaDB. */\n MARIADB: 'mariadb';\n\n /** Netezza. */\n NETEZZA: 'netezza';\n\n /** Pervasive PSQL. */\n PERVASIVE: 'pervasive';\n\n /** PointBase. */\n POINTBASE: 'pointbase';\n\n /** SQLite. */\n SQLITE: 'sqlite';\n\n /** Sybase. */\n SYBASE: 'sybase';\n\n /** Teradata. */\n TERADATA: 'teradata';\n\n /** Vertica. */\n VERTICA: 'vertica';\n\n /** H2. */\n H2: 'h2';\n\n /** ColdFusion IMQ. */\n COLDFUSION: 'coldfusion';\n\n /** Apache Cassandra. */\n CASSANDRA: 'cassandra';\n\n /** Apache HBase. */\n HBASE: 'hbase';\n\n /** MongoDB. */\n MONGODB: 'mongodb';\n\n /** Redis. */\n REDIS: 'redis';\n\n /** Couchbase. */\n COUCHBASE: 'couchbase';\n\n /** CouchDB. */\n COUCHDB: 'couchdb';\n\n /** Microsoft Azure Cosmos DB. */\n COSMOSDB: 'cosmosdb';\n\n /** Amazon DynamoDB. */\n DYNAMODB: 'dynamodb';\n\n /** Neo4j. */\n NEO4J: 'neo4j';\n\n /** Apache Geode. */\n GEODE: 'geode';\n\n /** Elasticsearch. */\n ELASTICSEARCH: 'elasticsearch';\n\n /** Memcached. */\n MEMCACHED: 'memcached';\n\n /** CockroachDB. */\n COCKROACHDB: 'cockroachdb';\n};\n\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport const DbSystemValues: DbSystemValues =\n /*#__PURE__*/ createConstMap([\n TMP_DBSYSTEMVALUES_OTHER_SQL,\n TMP_DBSYSTEMVALUES_MSSQL,\n TMP_DBSYSTEMVALUES_MYSQL,\n TMP_DBSYSTEMVALUES_ORACLE,\n TMP_DBSYSTEMVALUES_DB2,\n TMP_DBSYSTEMVALUES_POSTGRESQL,\n TMP_DBSYSTEMVALUES_REDSHIFT,\n TMP_DBSYSTEMVALUES_HIVE,\n TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n TMP_DBSYSTEMVALUES_HSQLDB,\n TMP_DBSYSTEMVALUES_PROGRESS,\n TMP_DBSYSTEMVALUES_MAXDB,\n TMP_DBSYSTEMVALUES_HANADB,\n TMP_DBSYSTEMVALUES_INGRES,\n TMP_DBSYSTEMVALUES_FIRSTSQL,\n TMP_DBSYSTEMVALUES_EDB,\n TMP_DBSYSTEMVALUES_CACHE,\n TMP_DBSYSTEMVALUES_ADABAS,\n TMP_DBSYSTEMVALUES_FIREBIRD,\n TMP_DBSYSTEMVALUES_DERBY,\n TMP_DBSYSTEMVALUES_FILEMAKER,\n TMP_DBSYSTEMVALUES_INFORMIX,\n TMP_DBSYSTEMVALUES_INSTANTDB,\n TMP_DBSYSTEMVALUES_INTERBASE,\n TMP_DBSYSTEMVALUES_MARIADB,\n TMP_DBSYSTEMVALUES_NETEZZA,\n TMP_DBSYSTEMVALUES_PERVASIVE,\n TMP_DBSYSTEMVALUES_POINTBASE,\n TMP_DBSYSTEMVALUES_SQLITE,\n TMP_DBSYSTEMVALUES_SYBASE,\n TMP_DBSYSTEMVALUES_TERADATA,\n TMP_DBSYSTEMVALUES_VERTICA,\n TMP_DBSYSTEMVALUES_H2,\n TMP_DBSYSTEMVALUES_COLDFUSION,\n TMP_DBSYSTEMVALUES_CASSANDRA,\n TMP_DBSYSTEMVALUES_HBASE,\n TMP_DBSYSTEMVALUES_MONGODB,\n TMP_DBSYSTEMVALUES_REDIS,\n TMP_DBSYSTEMVALUES_COUCHBASE,\n TMP_DBSYSTEMVALUES_COUCHDB,\n TMP_DBSYSTEMVALUES_COSMOSDB,\n TMP_DBSYSTEMVALUES_DYNAMODB,\n TMP_DBSYSTEMVALUES_NEO4J,\n TMP_DBSYSTEMVALUES_GEODE,\n TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n TMP_DBSYSTEMVALUES_MEMCACHED,\n TMP_DBSYSTEMVALUES_COCKROACHDB,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ALL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_TWO =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_THREE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ANY =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n\n/**\n * Identifies the Values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport type DbCassandraConsistencyLevelValues = {\n /** all. */\n ALL: 'all';\n\n /** each_quorum. */\n EACH_QUORUM: 'each_quorum';\n\n /** quorum. */\n QUORUM: 'quorum';\n\n /** local_quorum. */\n LOCAL_QUORUM: 'local_quorum';\n\n /** one. */\n ONE: 'one';\n\n /** two. */\n TWO: 'two';\n\n /** three. */\n THREE: 'three';\n\n /** local_one. */\n LOCAL_ONE: 'local_one';\n\n /** any. */\n ANY: 'any';\n\n /** serial. */\n SERIAL: 'serial';\n\n /** local_serial. */\n LOCAL_SERIAL: 'local_serial';\n};\n\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues =\n /*#__PURE__*/ createConstMap([\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nconst TMP_FAASTRIGGERVALUES_HTTP = 'http';\nconst TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nconst TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nconst TMP_FAASTRIGGERVALUES_OTHER = 'other';\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n\n/**\n * Identifies the Values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport type FaasTriggerValues = {\n /** A response to some data source operation such as a database or filesystem read/write. */\n DATASOURCE: 'datasource';\n\n /** To provide an answer to an inbound HTTP request. */\n HTTP: 'http';\n\n /** A function is set to be executed when messages are sent to a messaging system. */\n PUBSUB: 'pubsub';\n\n /** A function is scheduled to be executed regularly. */\n TIMER: 'timer';\n\n /** If none of the others apply. */\n OTHER: 'other';\n};\n\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport const FaasTriggerValues: FaasTriggerValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_INSERT =\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_EDIT =\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_DELETE =\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n\n/**\n * Identifies the Values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport type FaasDocumentOperationValues = {\n /** When a new object is created. */\n INSERT: 'insert';\n\n /** When an object is modified. */\n EDIT: 'edit';\n\n /** When an object is deleted. */\n DELETE: 'delete';\n};\n\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport const FaasDocumentOperationValues: FaasDocumentOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_AZURE =\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport type FaasInvokedProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport const FaasInvokedProviderValues: FaasInvokedProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nconst TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nconst TMP_NETTRANSPORTVALUES_IP = 'ip';\nconst TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nconst TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nconst TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nconst TMP_NETTRANSPORTVALUES_OTHER = 'other';\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n\n/**\n * Identifies the Values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport type NetTransportValues = {\n /** ip_tcp. */\n IP_TCP: 'ip_tcp';\n\n /** ip_udp. */\n IP_UDP: 'ip_udp';\n\n /** Another IP-based protocol. */\n IP: 'ip';\n\n /** Unix Domain socket. See below. */\n UNIX: 'unix';\n\n /** Named or anonymous pipe. See note below. */\n PIPE: 'pipe';\n\n /** In-process communication. */\n INPROC: 'inproc';\n\n /** Something else (non IP-based). */\n OTHER: 'other';\n};\n\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport const NetTransportValues: NetTransportValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETTRANSPORTVALUES_IP_TCP,\n TMP_NETTRANSPORTVALUES_IP_UDP,\n TMP_NETTRANSPORTVALUES_IP,\n TMP_NETTRANSPORTVALUES_UNIX,\n TMP_NETTRANSPORTVALUES_PIPE,\n TMP_NETTRANSPORTVALUES_INPROC,\n TMP_NETTRANSPORTVALUES_OTHER,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIFI =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIRED =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_CELL =\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n\n/**\n * Identifies the Values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionTypeValues = {\n /** wifi. */\n WIFI: 'wifi';\n\n /** wired. */\n WIRED: 'wired';\n\n /** cell. */\n CELL: 'cell';\n\n /** unavailable. */\n UNAVAILABLE: 'unavailable';\n\n /** unknown. */\n UNKNOWN: 'unknown';\n};\n\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport const NetHostConnectionTypeValues: NetHostConnectionTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GSM =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NR =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n\n/**\n * Identifies the Values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionSubtypeValues = {\n /** GPRS. */\n GPRS: 'gprs';\n\n /** EDGE. */\n EDGE: 'edge';\n\n /** UMTS. */\n UMTS: 'umts';\n\n /** CDMA. */\n CDMA: 'cdma';\n\n /** EVDO Rel. 0. */\n EVDO_0: 'evdo_0';\n\n /** EVDO Rev. A. */\n EVDO_A: 'evdo_a';\n\n /** CDMA2000 1XRTT. */\n CDMA2000_1XRTT: 'cdma2000_1xrtt';\n\n /** HSDPA. */\n HSDPA: 'hsdpa';\n\n /** HSUPA. */\n HSUPA: 'hsupa';\n\n /** HSPA. */\n HSPA: 'hspa';\n\n /** IDEN. */\n IDEN: 'iden';\n\n /** EVDO Rev. B. */\n EVDO_B: 'evdo_b';\n\n /** LTE. */\n LTE: 'lte';\n\n /** EHRPD. */\n EHRPD: 'ehrpd';\n\n /** HSPAP. */\n HSPAP: 'hspap';\n\n /** GSM. */\n GSM: 'gsm';\n\n /** TD-SCDMA. */\n TD_SCDMA: 'td_scdma';\n\n /** IWLAN. */\n IWLAN: 'iwlan';\n\n /** 5G NR (New Radio). */\n NR: 'nr';\n\n /** 5G NRNSA (New Radio Non-Standalone). */\n NRNSA: 'nrnsa';\n\n /** LTE CA. */\n LTE_CA: 'lte_ca';\n};\n\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nconst TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nconst TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nconst TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nconst TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n\n/**\n * Identifies the Values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport type HttpFlavorValues = {\n /** HTTP 1.0. */\n HTTP_1_0: '1.0';\n\n /** HTTP 1.1. */\n HTTP_1_1: '1.1';\n\n /** HTTP 2. */\n HTTP_2_0: '2.0';\n\n /** SPDY protocol. */\n SPDY: 'SPDY';\n\n /** QUIC protocol. */\n QUIC: 'QUIC';\n};\n\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport const HttpFlavorValues: HttpFlavorValues = {\n HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_QUEUE =\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_TOPIC =\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n\n/**\n * Identifies the Values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport type MessagingDestinationKindValues = {\n /** A message sent to a queue. */\n QUEUE: 'queue';\n\n /** A message sent to a topic. */\n TOPIC: 'topic';\n};\n\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport const MessagingDestinationKindValues: MessagingDestinationKindValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nconst TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGINGOPERATIONVALUES_RECEIVE =\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGINGOPERATIONVALUES_PROCESS =\n TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n\n/**\n * Identifies the Values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport type MessagingOperationValues = {\n /** receive. */\n RECEIVE: 'receive';\n\n /** process. */\n PROCESS: 'process';\n};\n\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport const MessagingOperationValues: MessagingOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nconst TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nconst TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nconst TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nconst TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nconst TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nconst TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_CANCELLED =\n TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNKNOWN =\n TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT =\n TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED =\n TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_NOT_FOUND =\n TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS =\n TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED =\n TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED =\n TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION =\n TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_ABORTED =\n TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE =\n TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_INTERNAL =\n TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_DATA_LOSS =\n TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n\n/**\n * Identifies the Values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport type RpcGrpcStatusCodeValues = {\n /** OK. */\n OK: 0;\n\n /** CANCELLED. */\n CANCELLED: 1;\n\n /** UNKNOWN. */\n UNKNOWN: 2;\n\n /** INVALID_ARGUMENT. */\n INVALID_ARGUMENT: 3;\n\n /** DEADLINE_EXCEEDED. */\n DEADLINE_EXCEEDED: 4;\n\n /** NOT_FOUND. */\n NOT_FOUND: 5;\n\n /** ALREADY_EXISTS. */\n ALREADY_EXISTS: 6;\n\n /** PERMISSION_DENIED. */\n PERMISSION_DENIED: 7;\n\n /** RESOURCE_EXHAUSTED. */\n RESOURCE_EXHAUSTED: 8;\n\n /** FAILED_PRECONDITION. */\n FAILED_PRECONDITION: 9;\n\n /** ABORTED. */\n ABORTED: 10;\n\n /** OUT_OF_RANGE. */\n OUT_OF_RANGE: 11;\n\n /** UNIMPLEMENTED. */\n UNIMPLEMENTED: 12;\n\n /** INTERNAL. */\n INTERNAL: 13;\n\n /** UNAVAILABLE. */\n UNAVAILABLE: 14;\n\n /** DATA_LOSS. */\n DATA_LOSS: 15;\n\n /** UNAUTHENTICATED. */\n UNAUTHENTICATED: 16;\n};\n\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport const RpcGrpcStatusCodeValues: RpcGrpcStatusCodeValues = {\n OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nconst TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n\n/**\n * Identifies the Values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport type MessageTypeValues = {\n /** sent. */\n SENT: 'SENT';\n\n /** received. */\n RECEIVED: 'RECEIVED';\n};\n\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport const MessageTypeValues: MessageTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n ]);\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n\n/**\n * This event describes a single exception.\n */\nexport const EVENT_EXCEPTION = 'exception' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions' as const;\n\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases' as const;\n\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests' as const;\n\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue' as const;\n\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration' as const;\n\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n * - Rejected by global or endpoint rate limiting policies\n * - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests' as const;\n\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts' as const;\n\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexport const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration' as const;\n\n/**\n * The number of .NET assemblies that are currently loaded.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies).\n */\nexport const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count' as const;\n\n/**\n * The number of exceptions that have been thrown in managed code.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception).\n */\nexport const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions' as const;\n\n/**\n * The number of garbage collections that have occurred since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation.\n */\nexport const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections' as const;\n\n/**\n * The *approximate* number of bytes allocated on the managed GC heap since the process has started. The returned value does not include any native allocations.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes).\n */\nexport const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated' as const;\n\n/**\n * The heap fragmentation, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes).\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size' as const;\n\n/**\n * The managed GC heap size (including fragmentation), as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes).\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size' as const;\n\n/**\n * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().TotalCommittedBytes`](https://learn.microsoft.com/dotnet/api/system.gcmemoryinfo.totalcommittedbytes). Committed virtual memory may be larger than the heap size because it includes both memory for storing existing objects (the heap size) and some extra memory that is ready to handle newly allocated objects in the future.\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size' as const;\n\n/**\n * The total amount of time paused in GC since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration).\n */\nexport const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time' as const;\n\n/**\n * The amount of time the JIT compiler has spent compiling methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime).\n */\nexport const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time' as const;\n\n/**\n * Count of bytes of intermediate language that have been compiled since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes).\n */\nexport const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size' as const;\n\n/**\n * The number of times the JIT compiler (re)compiled methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount).\n */\nexport const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods' as const;\n\n/**\n * The number of times there was contention when trying to acquire a monitor lock since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount).\n */\nexport const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions' as const;\n\n/**\n * The number of processors available to the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount).\n */\nexport const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count' as const;\n\n/**\n * CPU time used by the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing the corresponding processor time properties on [`System.Diagnostics.Process`](https://learn.microsoft.com/dotnet/api/system.diagnostics.process).\n */\nexport const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time' as const;\n\n/**\n * The number of bytes of physical memory mapped to the process context.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset).\n */\nexport const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set' as const;\n\n/**\n * The number of work items that are currently queued to be processed by the thread pool.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length' as const;\n\n/**\n * The number of thread pool threads that currently exist.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count' as const;\n\n/**\n * The number of work items that the thread pool has completed since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count' as const;\n\n/**\n * The number of timer instances that are currently active.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount).\n */\nexport const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count' as const;\n\n/**\n * Duration of HTTP client requests.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration' as const;\n\n/**\n * Duration of HTTP server requests.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration' as const;\n\n/**\n * Number of classes currently loaded.\n */\nexport const METRIC_JVM_CLASS_COUNT = 'jvm.class.count' as const;\n\n/**\n * Number of classes loaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded' as const;\n\n/**\n * Number of classes unloaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded' as const;\n\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count' as const;\n\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexport const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization' as const;\n\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport const METRIC_JVM_CPU_TIME = 'jvm.cpu.time' as const;\n\n/**\n * Duration of JVM garbage collection actions.\n */\nexport const METRIC_JVM_GC_DURATION = 'jvm.gc.duration' as const;\n\n/**\n * Measure of memory committed.\n */\nexport const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed' as const;\n\n/**\n * Measure of max obtainable memory.\n */\nexport const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit' as const;\n\n/**\n * Measure of memory used.\n */\nexport const METRIC_JVM_MEMORY_USED = 'jvm.memory.used' as const;\n\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc' as const;\n\n/**\n * Number of executing platform threads.\n */\nexport const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count' as const;\n\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections' as const;\n\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes' as const;\n\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration' as const;\n\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections' as const;\n\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests' as const;\n\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections' as const;\n\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration' as const;\n\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections' as const;\n\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections' as const;\n\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Specifies the category of synthetic traffic, such as tests or bots.\n *\n * @note This attribute **MAY** be derived from the contents of the `user_agent.original` attribute. Components that populate the attribute are responsible for determining what they consider to be synthetic bot or test traffic. This attribute can either be set for self-identification purposes, or on telemetry detected to be generated as a result of a synthetic request. This attribute is useful for distinguishing between genuine client traffic and synthetic traffic generated by bots or tests.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_SYNTHETIC_TYPE =\n 'user_agent.synthetic.type' as const;\n\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = 'bot' as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = 'test' as const;\n\n/**\n * Deprecated, use `client.address` instead.\n *\n * @example \"83.164.160.102\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `client.address`.\n */\nexport const ATTR_HTTP_CLIENT_IP = 'http.client_ip' as const;\n\n/**\n * Deprecated, use `network.protocol.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.protocol.name`.\n */\nexport const ATTR_HTTP_FLAVOR = 'http.flavor' as const;\n\n/**\n * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage.\n *\n * @example www.example.org\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage.\n */\nexport const ATTR_HTTP_HOST = 'http.host' as const;\n\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n\n/**\n * Deprecated, use `http.request.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.header.`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH =\n 'http.request_content_length' as const;\n\n/**\n * Deprecated, use `http.request.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.body.size`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.request_content_length_uncompressed' as const;\n\n/**\n * Deprecated, use `http.response.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.header.`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH =\n 'http.response_content_length' as const;\n\n/**\n * Deprecated, use `http.response.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replace by `http.response.body.size`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.response_content_length_uncompressed' as const;\n\n/**\n * Deprecated, use `url.scheme` instead.\n *\n * @example http\n * @example https\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.scheme` instead.\n */\nexport const ATTR_HTTP_SCHEME = 'http.scheme' as const;\n\n/**\n * Deprecated, use `server.address` instead.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_HTTP_SERVER_NAME = 'http.server_name' as const;\n\n/**\n * Deprecated, use `http.response.status_code` instead.\n *\n * @example 200\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.status_code`.\n */\nexport const ATTR_HTTP_STATUS_CODE = 'http.status_code' as const;\n\n/**\n * Deprecated, use `url.path` and `url.query` instead.\n *\n * @example /search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Split to `url.path` and `url.query.\n */\nexport const ATTR_HTTP_TARGET = 'http.target' as const;\n\n/**\n * Deprecated, use `url.full` instead.\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.full`.\n */\nexport const ATTR_HTTP_URL = 'http.url' as const;\n\n/**\n * Deprecated, use `user_agent.original` instead.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `user_agent.original`.\n */\nexport const ATTR_HTTP_USER_AGENT = 'http.user_agent' as const;\n\n/**\n * Deprecated, use `network.local.address`.\n *\n * @example \"192.168.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.local.address`.\n */\nexport const ATTR_NET_HOST_IP = 'net.host.ip' as const;\n\n/**\n * Deprecated, use `server.address`.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_NET_HOST_NAME = 'net.host.name' as const;\n\n/**\n * Deprecated, use `server.port`.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port`.\n */\nexport const ATTR_NET_HOST_PORT = 'net.host.port' as const;\n\n/**\n * Deprecated, use `network.peer.address`.\n *\n * @example \"127.0.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.peer.address`.\n */\nexport const ATTR_NET_PEER_IP = 'net.peer.ip' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.transport`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.transport`.\n */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_TCP = 'ip_tcp' as const;\n\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_UDP = 'ip_udp' as const;\n\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_1 = '1.1' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md\n */\nexport enum AttributeNames {\n HTTP_ERROR_NAME = 'http.error_name',\n HTTP_ERROR_MESSAGE = 'http.error_message',\n HTTP_STATUS_TEXT = 'http.status_text',\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as http from 'http';\nimport type * as https from 'https';\nimport type { get, IncomingMessage, request } from 'http';\nimport type * as url from 'url';\n\nexport type IgnoreMatcher = string | RegExp | ((url: string) => boolean);\nexport type HttpCallback = (res: IncomingMessage) => void;\nexport type RequestFunction = typeof request;\nexport type GetFunction = typeof get;\n\nexport type HttpCallbackOptional = HttpCallback | undefined;\n\n// from node 10+\nexport type RequestSignature = [http.RequestOptions, HttpCallbackOptional] &\n HttpCallback;\n\nexport type HttpRequestArgs = Array;\n\nexport type ParsedRequestOptions =\n | (http.RequestOptions & Partial)\n | http.RequestOptions;\nexport type Http = typeof http;\nexport type Https = typeof https;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Func = (...args: any[]) => T;\n\nexport interface Err extends Error {\n errno?: number;\n code?: string;\n path?: string;\n syscall?: string;\n stack?: string;\n}\n\n/**\n * Names of possible synthetic test sources.\n */\nexport const SYNTHETIC_TEST_NAMES = ['alwayson'];\n\n/**\n * Names of possible synthetic bot sources.\n */\nexport const SYNTHETIC_BOT_NAMES = ['googlebot', 'bingbot'];\n\n/**\n * REDACTED string used to replace sensitive information in URLs.\n */\nexport const STR_REDACTED = 'REDACTED';\n\n/**\n * List of URL query keys that are considered sensitive and whose value should be redacted.\n */\nexport const DEFAULT_QUERY_STRINGS_TO_REDACT = [\n 'sig',\n 'Signature',\n 'AWSAccessKeyId',\n 'X-Goog-Signature',\n] as const;\n","'use strict';\n\nvar util = require('util');\n\n/**\n * An error thrown by the parser on unexpected input.\n *\n * @constructor\n * @param {string} message The error message.\n * @param {string} input The unexpected input.\n * @public\n */\nfunction ParseError(message, input) {\n Error.captureStackTrace(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = message;\n this.input = input;\n}\n\nutil.inherits(ParseError, Error);\n\nmodule.exports = ParseError;\n","'use strict';\n\n/**\n * Check if a character is a delimiter as defined in section 3.2.6 of RFC 7230.\n *\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is a delimiter, else `false`.\n * @public\n */\nfunction isDelimiter(code) {\n return code === 0x22 // '\"'\n || code === 0x28 // '('\n || code === 0x29 // ')'\n || code === 0x2C // ','\n || code === 0x2F // '/'\n || code >= 0x3A && code <= 0x40 // ':', ';', '<', '=', '>', '?' '@'\n || code >= 0x5B && code <= 0x5D // '[', '\\', ']'\n || code === 0x7B // '{'\n || code === 0x7D; // '}'\n}\n\n/**\n * Check if a character is allowed in a token as defined in section 3.2.6\n * of RFC 7230.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is allowed, else `false`.\n * @public\n */\nfunction isTokenChar(code) {\n return code === 0x21 // '!'\n || code >= 0x23 && code <= 0x27 // '#', '$', '%', '&', '''\n || code === 0x2A // '*'\n || code === 0x2B // '+'\n || code === 0x2D // '-'\n || code === 0x2E // '.'\n || code >= 0x30 && code <= 0x39 // 0-9\n || code >= 0x41 && code <= 0x5A // A-Z\n || code >= 0x5E && code <= 0x7A // '^', '_', '`', a-z\n || code === 0x7C // '|'\n || code === 0x7E; // '~'\n}\n\n/**\n * Check if a character is a printable ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x20-7E range, else `false`.\n * @public\n */\nfunction isPrint(code) {\n return code >= 0x20 && code <= 0x7E;\n}\n\n/**\n * Check if a character is an extended ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x80-FF range, else `false`.\n * @public\n */\nfunction isExtended(code) {\n return code >= 0x80 && code <= 0xFF;\n}\n\nmodule.exports = {\n isDelimiter: isDelimiter,\n isTokenChar: isTokenChar,\n isExtended: isExtended,\n isPrint: isPrint\n};\n","'use strict';\n\nvar util = require('util');\n\nvar ParseError = require('./lib/error');\nvar ascii = require('./lib/ascii');\n\nvar isDelimiter = ascii.isDelimiter;\nvar isTokenChar = ascii.isTokenChar;\nvar isExtended = ascii.isExtended;\nvar isPrint = ascii.isPrint;\n\n/**\n * Unescape a string.\n *\n * @param {string} str The string to unescape.\n * @returns {string} A new unescaped string.\n * @private\n */\nfunction decode(str) {\n return str.replace(/\\\\(.)/g, '$1');\n}\n\n/**\n * Build an error message when an unexpected character is found.\n *\n * @param {string} header The header field value.\n * @param {number} position The position of the unexpected character.\n * @returns {string} The error message.\n * @private\n */\nfunction unexpectedCharacterMessage(header, position) {\n return util.format(\n \"Unexpected character '%s' at index %d\",\n header.charAt(position),\n position\n );\n}\n\n/**\n * Parse the `Forwarded` header field value into an array of objects.\n *\n * @param {string} header The header field value.\n * @returns {Object[]}\n * @public\n */\nfunction parse(header) {\n var mustUnescape = false;\n var isEscaping = false;\n var inQuotes = false;\n var forwarded = {};\n var output = [];\n var start = -1;\n var end = -1;\n var parameter;\n var code;\n\n for (var i = 0; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (parameter === undefined) {\n if (\n i !== 0 &&\n start === -1 &&\n (code === 0x20/*' '*/ || code === 0x09/*'\\t'*/)\n ) {\n continue;\n }\n\n if (isTokenChar(code)) {\n if (start === -1) start = i;\n } else if (code === 0x3D/*'='*/ && start !== -1) {\n parameter = header.slice(start, i).toLowerCase();\n start = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n if (isEscaping && (code === 0x09 || isPrint(code) || isExtended(code))) {\n isEscaping = false;\n } else if (isTokenChar(code)) {\n if (end !== -1) {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n\n if (start === -1) start = i;\n } else if (isDelimiter(code) || isExtended(code)) {\n if (inQuotes) {\n if (code === 0x22/*'\"'*/) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5C/*'\\'*/) {\n if (start === -1) start = i;\n isEscaping = mustUnescape = true;\n } else if (start === -1) {\n start = i;\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3D) {\n inQuotes = true;\n } else if (\n (code === 0x2C/*','*/|| code === 0x3B/*';'*/) &&\n (start !== -1 || end !== -1)\n ) {\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n if (code === 0x2C) {\n output.push(forwarded);\n forwarded = {};\n }\n\n parameter = undefined;\n start = end = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else if (code === 0x20 || code === 0x09) {\n if (end !== -1) continue;\n\n if (inQuotes) {\n if (start === -1) start = i;\n } else if (start !== -1) {\n end = i;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n }\n }\n\n if (\n parameter === undefined ||\n inQuotes ||\n (start === -1 && end === -1) ||\n code === 0x20 ||\n code === 0x09\n ) {\n throw new ParseError('Unexpected end of input', header);\n }\n\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n output.push(forwarded);\n return output;\n}\n\nmodule.exports = parse;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n Attributes,\n Span,\n DiagLogger,\n AttributeValue,\n} from '@opentelemetry/api';\nimport { SpanStatusCode, context, SpanKind } from '@opentelemetry/api';\nimport {\n ATTR_CLIENT_ADDRESS,\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_REQUEST_METHOD_ORIGINAL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_ROUTE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_HTTP_CLIENT_IP,\n ATTR_HTTP_FLAVOR,\n ATTR_HTTP_HOST,\n ATTR_HTTP_METHOD,\n ATTR_HTTP_REQUEST_CONTENT_LENGTH,\n ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n ATTR_HTTP_RESPONSE_CONTENT_LENGTH,\n ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n ATTR_HTTP_SCHEME,\n ATTR_HTTP_SERVER_NAME,\n ATTR_HTTP_STATUS_CODE,\n ATTR_HTTP_TARGET,\n ATTR_HTTP_URL,\n ATTR_HTTP_USER_AGENT,\n ATTR_NET_HOST_IP,\n ATTR_NET_HOST_NAME,\n ATTR_NET_HOST_PORT,\n ATTR_NET_PEER_IP,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n ATTR_NET_TRANSPORT,\n NET_TRANSPORT_VALUE_IP_TCP,\n NET_TRANSPORT_VALUE_IP_UDP,\n ATTR_USER_AGENT_SYNTHETIC_TYPE,\n USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT,\n USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST,\n} from './semconv';\nimport type {\n IncomingHttpHeaders,\n IncomingMessage,\n OutgoingHttpHeader,\n OutgoingHttpHeaders,\n RequestOptions,\n ServerResponse,\n} from 'http';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport * as url from 'url';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type {\n Err,\n IgnoreMatcher,\n ParsedRequestOptions,\n} from './internal-types';\nimport { SYNTHETIC_BOT_NAMES, SYNTHETIC_TEST_NAMES } from './internal-types';\nimport {\n DEFAULT_QUERY_STRINGS_TO_REDACT,\n STR_REDACTED,\n} from './internal-types';\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nimport forwardedParse = require('forwarded-parse');\n\n/**\n * Get an absolute url\n */\nexport const getAbsoluteUrl = (\n requestUrl: ParsedRequestOptions | null,\n headers: IncomingHttpHeaders | OutgoingHttpHeaders,\n fallbackProtocol = 'http:',\n redactedQueryParams: string[] = Array.from(DEFAULT_QUERY_STRINGS_TO_REDACT)\n): string => {\n const reqUrlObject = requestUrl || {};\n const protocol = reqUrlObject.protocol || fallbackProtocol;\n const port = (reqUrlObject.port || '').toString();\n let path = reqUrlObject.path || '/';\n let host =\n reqUrlObject.host || reqUrlObject.hostname || headers.host || 'localhost';\n // if there is no port in host and there is a port\n // it should be displayed if it's not 80 and 443 (default ports)\n if (\n (host as string).indexOf(':') === -1 &&\n port &&\n port !== '80' &&\n port !== '443'\n ) {\n host += `:${port}`;\n }\n // Redact sensitive query parameters\n if (path.includes('?')) {\n try {\n const parsedUrl = new URL(path, 'http://localhost');\n const sensitiveParamsToRedact: string[] = redactedQueryParams || [];\n\n for (const sensitiveParam of sensitiveParamsToRedact) {\n if (parsedUrl.searchParams.get(sensitiveParam)) {\n parsedUrl.searchParams.set(sensitiveParam, STR_REDACTED);\n }\n }\n\n path = `${parsedUrl.pathname}${parsedUrl.search}`;\n } catch {\n // Ignore error, as the path was not a valid URL.\n }\n }\n const authPart = reqUrlObject.auth ? `${STR_REDACTED}:${STR_REDACTED}@` : '';\n return `${protocol}//${authPart}${host}${path}`;\n};\n\n/**\n * Parse status code from HTTP response. [More details](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-http.md#status)\n */\nexport const parseResponseStatus = (\n kind: SpanKind,\n statusCode?: number\n): SpanStatusCode => {\n const upperBound = kind === SpanKind.CLIENT ? 400 : 500;\n // 1xx, 2xx, 3xx are OK on client and server\n // 4xx is OK on server\n if (statusCode && statusCode >= 100 && statusCode < upperBound) {\n return SpanStatusCode.UNSET;\n }\n\n // All other codes are error\n return SpanStatusCode.ERROR;\n};\n\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param pattern Match pattern\n */\nexport const satisfiesPattern = (\n constant: string,\n pattern: IgnoreMatcher\n): boolean => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n } else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n } else if (typeof pattern === 'function') {\n return pattern(constant);\n } else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n\n/**\n * Sets the span with the error passed in params\n * @param {Span} span the span that need to be set\n * @param {Error} error error that will be set to span\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const setSpanWithError = (\n span: Span,\n error: Err,\n semconvStability: SemconvStability\n): void => {\n const message = error.message;\n\n if (semconvStability & SemconvStability.OLD) {\n span.setAttribute(AttributeNames.HTTP_ERROR_NAME, error.name);\n span.setAttribute(AttributeNames.HTTP_ERROR_MESSAGE, message);\n }\n\n if (semconvStability & SemconvStability.STABLE) {\n span.setAttribute(ATTR_ERROR_TYPE, error.name);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR, message });\n span.recordException(error);\n};\n/**\n * Adds attributes for request content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Request object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n */\nexport const setRequestContentLengthAttribute = (\n request: IncomingMessage,\n attributes: Attributes\n): void => {\n const length = getContentLength(request.headers);\n if (length === null) return;\n\n if (isCompressed(request.headers)) {\n attributes[ATTR_HTTP_REQUEST_CONTENT_LENGTH] = length;\n } else {\n attributes[ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\n\n/**\n * Adds attributes for response content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Response object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n *\n * @deprecated this is for an older version of semconv. It is retained for compatibility using OTEL_SEMCONV_STABILITY_OPT_IN\n */\nexport const setResponseContentLengthAttribute = (\n response: IncomingMessage,\n attributes: Attributes\n): void => {\n const length = getContentLength(response.headers);\n if (length === null) return;\n\n if (isCompressed(response.headers)) {\n attributes[ATTR_HTTP_RESPONSE_CONTENT_LENGTH] = length;\n } else {\n attributes[ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\n\nfunction getContentLength(\n headers: OutgoingHttpHeaders | IncomingHttpHeaders\n): number | null {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader as string, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nexport const isCompressed = (\n headers: OutgoingHttpHeaders | IncomingHttpHeaders\n): boolean => {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n};\n\n/**\n * Mimics Node.js conversion of URL strings to RequestOptions expected by\n * `http.request` and `https.request` APIs.\n *\n * See https://github.com/nodejs/node/blob/2505e217bba05fc581b572c685c5cf280a16c5a3/lib/internal/url.js#L1415-L1437\n *\n * @param stringUrl\n * @throws TypeError if the URL is not valid.\n */\nfunction stringUrlToHttpOptions(\n stringUrl: string\n): RequestOptions & { pathname: string } {\n // This is heavily inspired by Node.js handling of the same situation, trying\n // to follow it as closely as possible while keeping in mind that we only\n // deal with string URLs, not URL objects.\n const {\n hostname,\n pathname,\n port,\n username,\n password,\n search,\n protocol,\n hash,\n href,\n origin,\n host,\n } = new URL(stringUrl);\n\n const options: RequestOptions & {\n pathname: string;\n hash: string;\n search: string;\n href: string;\n origin: string;\n } = {\n protocol: protocol,\n hostname:\n hostname && hostname[0] === '[' ? hostname.slice(1, -1) : hostname,\n hash: hash,\n search: search,\n pathname: pathname,\n path: `${pathname || ''}${search || ''}`,\n href: href,\n origin: origin,\n host: host,\n };\n if (port !== '') {\n options.port = Number(port);\n }\n if (username || password) {\n options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(\n password\n )}`;\n }\n return options;\n}\n\n/**\n * Makes sure options is an url object\n * return an object with default value and parsed options\n * @param logger component logger\n * @param options original options for the request\n * @param [extraOptions] additional options for the request\n */\nexport const getRequestInfo = (\n logger: DiagLogger,\n options: url.URL | RequestOptions | string,\n extraOptions?: RequestOptions\n): {\n origin: string;\n pathname: string;\n method: string;\n invalidUrl: boolean;\n optionsParsed: RequestOptions;\n} => {\n let pathname: string;\n let origin: string;\n let optionsParsed: RequestOptions;\n let invalidUrl = false;\n if (typeof options === 'string') {\n try {\n const convertedOptions = stringUrlToHttpOptions(options);\n optionsParsed = convertedOptions;\n pathname = convertedOptions.pathname || '/';\n } catch (e) {\n invalidUrl = true;\n logger.verbose(\n 'Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:',\n e\n );\n // for backward compatibility with how url.parse() behaved.\n optionsParsed = {\n path: options,\n };\n pathname = optionsParsed.path || '/';\n }\n\n origin = `${optionsParsed.protocol || 'http:'}//${optionsParsed.host}`;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n } else if (options instanceof url.URL) {\n optionsParsed = {\n protocol: options.protocol,\n hostname:\n typeof options.hostname === 'string' && options.hostname.startsWith('[')\n ? options.hostname.slice(1, -1)\n : options.hostname,\n path: `${options.pathname || ''}${options.search || ''}`,\n };\n if (options.port !== '') {\n optionsParsed.port = Number(options.port);\n }\n if (options.username || options.password) {\n optionsParsed.auth = `${options.username}:${options.password}`;\n }\n pathname = options.pathname;\n origin = options.origin;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n } else {\n optionsParsed = Object.assign(\n { protocol: options.host ? 'http:' : undefined },\n options\n );\n\n const hostname =\n optionsParsed.host ||\n (optionsParsed.port != null\n ? `${optionsParsed.hostname}${optionsParsed.port}`\n : optionsParsed.hostname);\n origin = `${optionsParsed.protocol || 'http:'}//${hostname}`;\n\n pathname = (options as url.URL).pathname;\n if (!pathname && optionsParsed.path) {\n try {\n const parsedUrl = new URL(optionsParsed.path, origin);\n pathname = parsedUrl.pathname || '/';\n } catch {\n pathname = '/';\n }\n }\n }\n\n // some packages return method in lowercase..\n // ensure upperCase for consistency\n const method = optionsParsed.method\n ? optionsParsed.method.toUpperCase()\n : 'GET';\n\n return { origin, pathname, method, optionsParsed, invalidUrl };\n};\n\n/**\n * Makes sure options is of type string or object\n * @param options for the request\n */\nexport const isValidOptionsType = (options: unknown): boolean => {\n if (!options) {\n return false;\n }\n\n const type = typeof options;\n return type === 'string' || (type === 'object' && !Array.isArray(options));\n};\n\nexport const extractHostnameAndPort = (\n requestOptions: Pick<\n ParsedRequestOptions,\n 'hostname' | 'host' | 'port' | 'protocol'\n >\n): { hostname: string; port: number | string } => {\n if (requestOptions.hostname && requestOptions.port) {\n return { hostname: requestOptions.hostname, port: requestOptions.port };\n }\n const matches = requestOptions.host?.match(/^([^:/ ]+)(:\\d{1,5})?/) || null;\n const hostname =\n requestOptions.hostname || (matches === null ? 'localhost' : matches[1]);\n let port = requestOptions.port;\n if (!port) {\n if (matches && matches[2]) {\n // remove the leading \":\". The extracted port would be something like \":8080\"\n port = matches[2].substring(1);\n } else {\n port = requestOptions.protocol === 'https:' ? '443' : '80';\n }\n }\n return { hostname, port };\n};\n\n/**\n * Returns outgoing request attributes scoped to the options passed to the request\n * @param {ParsedRequestOptions} requestOptions the same options used to make the request\n * @param {{ component: string, hostname: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getOutgoingRequestAttributes = (\n requestOptions: ParsedRequestOptions,\n options: {\n component: string;\n hostname: string;\n port: string | number;\n hookAttributes?: Attributes;\n redactedQueryParams?: string[];\n },\n semconvStability: SemconvStability,\n enableSyntheticSourceDetection: boolean\n): Attributes => {\n const hostname = options.hostname;\n const port = options.port;\n const method = requestOptions.method ?? 'GET';\n const normalizedMethod = normalizeMethod(method);\n const headers = (requestOptions.headers || {}) as OutgoingHttpHeaders;\n const userAgent = headers['user-agent'];\n const urlFull = getAbsoluteUrl(\n requestOptions,\n headers,\n `${options.component}:`,\n options.redactedQueryParams\n );\n\n const oldAttributes: Attributes = {\n [ATTR_HTTP_URL]: urlFull,\n [ATTR_HTTP_METHOD]: method,\n [ATTR_HTTP_TARGET]: requestOptions.path || '/',\n [ATTR_NET_PEER_NAME]: hostname,\n [ATTR_HTTP_HOST]: headers.host ?? `${hostname}:${port}`,\n };\n\n const newAttributes: Attributes = {\n // Required attributes\n [ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [ATTR_SERVER_ADDRESS]: hostname,\n [ATTR_SERVER_PORT]: Number(port),\n [ATTR_URL_FULL]: urlFull,\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n // leaving out protocol version, it is not yet negotiated\n // leaving out protocol name, it is only required when protocol version is set\n // retries and redirects not supported\n\n // Opt-in attributes left off for now\n };\n\n // conditionally required if request method required case normalization\n if (method !== normalizedMethod) {\n newAttributes[ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[ATTR_USER_AGENT_SYNTHETIC_TYPE] = getSyntheticType(userAgent);\n }\n if (userAgent !== undefined) {\n oldAttributes[ATTR_HTTP_USER_AGENT] = userAgent;\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return Object.assign(newAttributes, options.hookAttributes);\n case SemconvStability.OLD:\n return Object.assign(oldAttributes, options.hookAttributes);\n }\n\n return Object.assign(oldAttributes, newAttributes, options.hookAttributes);\n};\n\n/**\n * Returns outgoing request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getOutgoingRequestMetricAttributes = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_METHOD] = spanAttributes[ATTR_HTTP_METHOD];\n metricAttributes[ATTR_NET_PEER_NAME] = spanAttributes[ATTR_NET_PEER_NAME];\n //TODO: http.url attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\n\n/**\n * Returns attributes related to the kind of HTTP protocol used\n * @param {string} [kind] Kind of HTTP protocol used: \"1.0\", \"1.1\", \"2\", \"SPDY\" or \"QUIC\".\n */\nexport const setAttributesFromHttpKind = (\n kind: string | undefined,\n attributes: Attributes\n): void => {\n if (kind) {\n attributes[ATTR_HTTP_FLAVOR] = kind;\n if (kind.toUpperCase() !== 'QUIC') {\n attributes[ATTR_NET_TRANSPORT] = NET_TRANSPORT_VALUE_IP_TCP;\n } else {\n attributes[ATTR_NET_TRANSPORT] = NET_TRANSPORT_VALUE_IP_UDP;\n }\n }\n};\n\n/**\n * Returns the type of synthetic source based on the user agent\n * @param {OutgoingHttpHeader} userAgent the user agent string\n */\nconst getSyntheticType = (\n userAgent: OutgoingHttpHeader\n): AttributeValue | undefined => {\n const userAgentString: string = String(userAgent).toLowerCase();\n for (const name of SYNTHETIC_TEST_NAMES) {\n if (userAgentString.includes(name)) {\n return USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST;\n }\n }\n for (const name of SYNTHETIC_BOT_NAMES) {\n if (userAgentString.includes(name)) {\n return USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT;\n }\n }\n return;\n};\n\n/**\n * Returns outgoing request attributes scoped to the response data\n * @param {IncomingMessage} response the response object\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getOutgoingRequestAttributesOnResponse = (\n response: IncomingMessage,\n semconvStability: SemconvStability\n): Attributes => {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n const oldAttributes: Attributes = {};\n const stableAttributes: Attributes = {};\n\n if (statusCode != null) {\n stableAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] = statusCode;\n }\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n oldAttributes[ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[ATTR_NET_PEER_PORT] = remotePort;\n\n // Recommended\n stableAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n stableAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n stableAttributes[ATTR_NETWORK_PROTOCOL_VERSION] = response.httpVersion;\n }\n setResponseContentLengthAttribute(response, oldAttributes);\n\n if (statusCode) {\n oldAttributes[ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames.HTTP_STATUS_TEXT] = (\n statusMessage || ''\n ).toUpperCase();\n }\n\n setAttributesFromHttpKind(httpVersion, oldAttributes);\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return stableAttributes;\n case SemconvStability.OLD:\n return oldAttributes;\n }\n\n return Object.assign(oldAttributes, stableAttributes);\n};\n\n/**\n * Returns outgoing request Metric attributes scoped to the response data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getOutgoingRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_NET_PEER_PORT] = spanAttributes[ATTR_NET_PEER_PORT];\n metricAttributes[ATTR_HTTP_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_STATUS_CODE];\n metricAttributes[ATTR_HTTP_FLAVOR] = spanAttributes[ATTR_HTTP_FLAVOR];\n\n return metricAttributes;\n};\n\nexport const getOutgoingStableRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n\n if (spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n metricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n if (spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\n\nfunction parseHostHeader(\n hostHeader: string,\n proto?: string\n): { host: string; port?: string } {\n const parts = hostHeader.split(':');\n\n // no semicolon implies ipv4 dotted syntax or host name without port\n // x.x.x.x\n // example.com\n if (parts.length === 1) {\n if (proto === 'http') {\n return { host: parts[0], port: '80' };\n }\n\n if (proto === 'https') {\n return { host: parts[0], port: '443' };\n }\n\n return { host: parts[0] };\n }\n\n // single semicolon implies ipv4 dotted syntax or host name with port\n // x.x.x.x:yyyy\n // example.com:yyyy\n if (parts.length === 2) {\n return {\n host: parts[0],\n port: parts[1],\n };\n }\n\n // more than 2 parts implies ipv6 syntax with multiple colons\n // [x:x:x:x:x:x:x:x]\n // [x:x:x:x:x:x:x:x]:yyyy\n if (parts[0].startsWith('[')) {\n if (parts[parts.length - 1].endsWith(']')) {\n if (proto === 'http') {\n return { host: hostHeader, port: '80' };\n }\n\n if (proto === 'https') {\n return { host: hostHeader, port: '443' };\n }\n } else if (parts[parts.length - 2].endsWith(']')) {\n return {\n host: parts.slice(0, -1).join(':'),\n port: parts[parts.length - 1],\n };\n }\n }\n\n // if nothing above matches just return the host header\n return { host: hostHeader };\n}\n\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nfunction getServerAddress(\n request: IncomingMessage,\n component: 'http' | 'https'\n): { host: string; port?: string } | null {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.host) {\n return parseHostHeader(entry.host, entry.proto);\n }\n }\n }\n\n const xForwardedHost = request.headers['x-forwarded-host'];\n if (typeof xForwardedHost === 'string') {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(\n xForwardedHost,\n request.headers['x-forwarded-proto']\n );\n }\n\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(\n xForwardedHost,\n request.headers['x-forwarded-proto'][0]\n );\n }\n\n return parseHostHeader(xForwardedHost);\n } else if (\n Array.isArray(xForwardedHost) &&\n typeof xForwardedHost[0] === 'string' &&\n xForwardedHost[0].length > 0\n ) {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(\n xForwardedHost[0],\n request.headers['x-forwarded-proto']\n );\n }\n\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(\n xForwardedHost[0],\n request.headers['x-forwarded-proto'][0]\n );\n }\n\n return parseHostHeader(xForwardedHost[0]);\n }\n\n const host = request.headers['host'];\n if (typeof host === 'string' && host.length > 0) {\n return parseHostHeader(host, component);\n }\n\n return null;\n}\n\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nexport function getRemoteClientAddress(\n request: IncomingMessage\n): string | null {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.for) {\n return removePortFromAddress(entry.for);\n }\n }\n }\n\n const xForwardedFor = request.headers['x-forwarded-for'];\n if (xForwardedFor) {\n let xForwardedForVal;\n if (typeof xForwardedFor === 'string') {\n xForwardedForVal = xForwardedFor;\n } else if (Array.isArray(xForwardedFor)) {\n xForwardedForVal = xForwardedFor[0];\n }\n\n if (typeof xForwardedForVal === 'string') {\n xForwardedForVal = xForwardedForVal.split(',')[0].trim();\n return removePortFromAddress(xForwardedForVal);\n }\n }\n\n const remote = request.socket.remoteAddress;\n if (remote) {\n return remote;\n }\n\n return null;\n}\n\nfunction removePortFromAddress(input: string): string {\n // This function can be replaced with SocketAddress.parse() once the minimum\n // supported Node.js version allows it.\n try {\n const { hostname: address } = new URL(`http://${input}`);\n\n if (address.startsWith('[') && address.endsWith(']')) {\n return address.slice(1, -1);\n }\n\n return address;\n } catch {\n return input;\n }\n}\n\nfunction getInfoFromIncomingMessage(\n component: 'http' | 'https',\n request: IncomingMessage,\n logger: DiagLogger\n): { pathname?: string; search?: string; toString: () => string } {\n try {\n if (request.headers.host) {\n return new URL(\n request.url ?? '/',\n `${component}://${request.headers.host}`\n );\n } else {\n const unsafeParsedUrl = new URL(\n request.url ?? '/',\n // using localhost as a workaround to still use the URL constructor for parsing\n `${component}://localhost`\n );\n // since we use localhost as a workaround, ensure we hide the rest of the properties to avoid\n // our workaround leaking though.\n return {\n pathname: unsafeParsedUrl.pathname,\n search: unsafeParsedUrl.search,\n toString: function () {\n // we cannot use the result of unsafeParsedUrl.toString as it's potentially wrong.\n return unsafeParsedUrl.pathname + unsafeParsedUrl.search;\n },\n };\n }\n } catch (e) {\n // something is wrong, use undefined - this *should* never happen, logging\n // for troubleshooting in case it does happen.\n logger.verbose('Unable to get URL from request', e);\n return {};\n }\n}\n\n/**\n * Returns incoming request attributes scoped to the request data\n * @param {IncomingMessage} request the request object\n * @param {{ component: string, serverName?: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getIncomingRequestAttributes = (\n request: IncomingMessage,\n options: {\n component: 'http' | 'https';\n serverName?: string;\n hookAttributes?: Attributes;\n semconvStability: SemconvStability;\n enableSyntheticSourceDetection: boolean;\n },\n logger: DiagLogger\n): Attributes => {\n const {\n component,\n enableSyntheticSourceDetection,\n hookAttributes,\n semconvStability,\n serverName,\n } = options;\n const { headers, httpVersion, method } = request;\n const { host, 'user-agent': userAgent, 'x-forwarded-for': ips } = headers;\n const parsedUrl = getInfoFromIncomingMessage(component, request, logger);\n let newAttributes: Attributes;\n let oldAttributes: Attributes;\n\n if (semconvStability !== SemconvStability.OLD) {\n // Stable attributes are used.\n const normalizedMethod = normalizeMethod(method);\n const serverAddress = getServerAddress(request, component);\n const remoteClientAddress = getRemoteClientAddress(request);\n\n newAttributes = {\n [ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [ATTR_URL_SCHEME]: component,\n [ATTR_SERVER_ADDRESS]: serverAddress?.host,\n [ATTR_NETWORK_PEER_ADDRESS]: request.socket.remoteAddress,\n [ATTR_NETWORK_PEER_PORT]: request.socket.remotePort,\n [ATTR_NETWORK_PROTOCOL_VERSION]: request.httpVersion,\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n };\n\n if (parsedUrl.pathname != null) {\n newAttributes[ATTR_URL_PATH] = parsedUrl.pathname;\n }\n\n if (parsedUrl.search) {\n // Remove leading '?' from URL search (https://developer.mozilla.org/en-US/docs/Web/API/URL/search).\n newAttributes[ATTR_URL_QUERY] = parsedUrl.search.slice(1);\n }\n\n if (remoteClientAddress != null) {\n newAttributes[ATTR_CLIENT_ADDRESS] = remoteClientAddress;\n }\n\n if (serverAddress?.port != null) {\n newAttributes[ATTR_SERVER_PORT] = Number(serverAddress.port);\n }\n\n // Conditionally required if request method required case normalization.\n if (method !== normalizedMethod) {\n newAttributes[ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[ATTR_USER_AGENT_SYNTHETIC_TYPE] =\n getSyntheticType(userAgent);\n }\n }\n\n if (semconvStability !== SemconvStability.STABLE) {\n // Old attributes are used.\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n oldAttributes = {\n [ATTR_HTTP_URL]: parsedUrl.toString(),\n [ATTR_HTTP_HOST]: host,\n [ATTR_NET_HOST_NAME]: hostname,\n [ATTR_HTTP_METHOD]: method,\n [ATTR_HTTP_SCHEME]: component,\n };\n\n if (typeof ips === 'string') {\n oldAttributes[ATTR_HTTP_CLIENT_IP] = ips.split(',')[0];\n }\n\n if (typeof serverName === 'string') {\n oldAttributes[ATTR_HTTP_SERVER_NAME] = serverName;\n }\n\n if (parsedUrl.pathname) {\n oldAttributes[ATTR_HTTP_TARGET] =\n parsedUrl.pathname + parsedUrl.search || '/';\n }\n\n if (userAgent !== undefined) {\n oldAttributes[ATTR_HTTP_USER_AGENT] = userAgent;\n }\n\n setRequestContentLengthAttribute(request, oldAttributes);\n setAttributesFromHttpKind(httpVersion, oldAttributes);\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return Object.assign(newAttributes!, hookAttributes);\n case SemconvStability.OLD:\n return Object.assign(oldAttributes!, hookAttributes);\n default:\n return Object.assign(oldAttributes!, newAttributes!, hookAttributes);\n }\n};\n\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n * @param {{ component: string }} options used to pass data needed to create attributes\n */\nexport const getIncomingRequestMetricAttributes = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_SCHEME] = spanAttributes[ATTR_HTTP_SCHEME];\n metricAttributes[ATTR_HTTP_METHOD] = spanAttributes[ATTR_HTTP_METHOD];\n metricAttributes[ATTR_NET_HOST_NAME] = spanAttributes[ATTR_NET_HOST_NAME];\n metricAttributes[ATTR_HTTP_FLAVOR] = spanAttributes[ATTR_HTTP_FLAVOR];\n //TODO: http.target attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\n\n/**\n * Returns incoming request attributes scoped to the response data\n * @param {(ServerResponse & { socket: Socket; })} response the response object\n */\nexport const getIncomingRequestAttributesOnResponse = (\n request: IncomingMessage,\n response: ServerResponse,\n semconvStability: SemconvStability\n): Attributes => {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n\n const newAttributes: Attributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n const oldAttributes: Attributes = {};\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n oldAttributes[ATTR_NET_HOST_IP] = localAddress;\n oldAttributes[ATTR_NET_HOST_PORT] = localPort;\n oldAttributes[ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[ATTR_NET_PEER_PORT] = remotePort;\n }\n oldAttributes[ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames.HTTP_STATUS_TEXT] = (\n statusMessage || ''\n ).toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n oldAttributes[ATTR_HTTP_ROUTE] = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = rpcMetadata.route;\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return newAttributes;\n case SemconvStability.OLD:\n return oldAttributes;\n }\n\n return Object.assign(oldAttributes, newAttributes);\n};\n\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getIncomingRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_STATUS_CODE];\n metricAttributes[ATTR_NET_HOST_PORT] = spanAttributes[ATTR_NET_HOST_PORT];\n if (spanAttributes[ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[ATTR_HTTP_ROUTE] = spanAttributes[ATTR_HTTP_ROUTE];\n }\n return metricAttributes;\n};\n\n/**\n * Returns incoming stable request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getIncomingStableRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n if (spanAttributes[ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[ATTR_HTTP_ROUTE] = spanAttributes[ATTR_HTTP_ROUTE];\n }\n\n // required if and only if one was sent, same as span requirement\n if (spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\n\nexport function headerCapture(\n type: 'request' | 'response',\n headers: string[],\n semconvStability: SemconvStability\n) {\n const normalizedHeaders = new Map();\n for (let i = 0, len = headers.length; i < len; i++) {\n const capturedHeader = headers[i].toLowerCase();\n if (semconvStability & SemconvStability.STABLE) {\n normalizedHeaders.set(capturedHeader, capturedHeader);\n } else {\n // In old semconv, the header name converted hypen to underscore, e.g.:\n // `http.request.header.content_length`.\n normalizedHeaders.set(\n capturedHeader,\n capturedHeader.replaceAll('-', '_')\n );\n }\n }\n\n return (\n getHeader: (key: string) => undefined | string | string[] | number\n ): Attributes => {\n const attributes: Attributes = {};\n for (const capturedHeader of normalizedHeaders.keys()) {\n const value = getHeader(capturedHeader);\n\n if (value === undefined) {\n continue;\n }\n\n const normalizedHeader = normalizedHeaders.get(capturedHeader);\n const key = `http.${type}.header.${normalizedHeader}`;\n\n if (typeof value === 'string') {\n attributes[key] = [value];\n } else if (Array.isArray(value)) {\n attributes[key] = value;\n } else {\n attributes[key] = [value];\n }\n }\n return attributes;\n };\n}\n\nconst KNOWN_METHODS = new Set([\n // methods from https://www.rfc-editor.org/rfc/rfc9110.html#name-methods\n 'GET',\n 'HEAD',\n 'POST',\n 'PUT',\n 'DELETE',\n 'CONNECT',\n 'OPTIONS',\n 'TRACE',\n\n // PATCH from https://www.rfc-editor.org/rfc/rfc5789.html\n 'PATCH',\n\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n 'QUERY',\n]);\n\nfunction normalizeMethod(method?: string | null) {\n if (method == null) {\n return 'GET';\n }\n\n const upper = method.toUpperCase();\n if (KNOWN_METHODS.has(upper)) {\n return upper;\n }\n\n return '_OTHER';\n}\n\nfunction parseForwardedHeader(header: string): Record[] {\n try {\n return forwardedParse(header);\n } catch {\n return [];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n HrTime,\n Span,\n SpanOptions,\n SpanStatus,\n Histogram,\n Attributes,\n} from '@opentelemetry/api';\nimport {\n context,\n INVALID_SPAN_CONTEXT,\n propagation,\n ROOT_CONTEXT,\n SpanKind,\n SpanStatusCode,\n trace,\n ValueType,\n} from '@opentelemetry/api';\nimport type { RPCMetadata } from '@opentelemetry/core';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n suppressTracing,\n RPCType,\n setRPCMetadata,\n} from '@opentelemetry/core';\nimport type * as http from 'http';\nimport type * as https from 'https';\nimport type { Socket } from 'net';\nimport * as url from 'url';\nimport type { HttpInstrumentationConfig } from './types';\nimport { VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n SemconvStability,\n semconvStabilityFromStr,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { errorMonitor } from 'events';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_HTTP_ROUTE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_SCHEME,\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n METRIC_HTTP_SERVER_REQUEST_DURATION,\n} from '@opentelemetry/semantic-conventions';\nimport {\n extractHostnameAndPort,\n getIncomingRequestAttributes,\n getIncomingRequestAttributesOnResponse,\n getIncomingRequestMetricAttributes,\n getIncomingRequestMetricAttributesOnResponse,\n getIncomingStableRequestMetricAttributesOnResponse,\n getOutgoingRequestAttributes,\n getOutgoingRequestAttributesOnResponse,\n getOutgoingRequestMetricAttributes,\n getOutgoingRequestMetricAttributesOnResponse,\n getOutgoingStableRequestMetricAttributesOnResponse,\n getRequestInfo,\n headerCapture,\n isValidOptionsType,\n parseResponseStatus,\n setSpanWithError,\n} from './utils';\nimport type { Err, Func, Http, HttpRequestArgs, Https } from './internal-types';\n\n/**\n * `node:http` and `node:https` instrumentation for OpenTelemetry\n */\nexport class HttpInstrumentation extends InstrumentationBase {\n /** keep track on spans not ended */\n private readonly _spanNotEnded: WeakSet = new WeakSet();\n private _headerCapture;\n private _httpPatched: boolean = false;\n private _httpsPatched: boolean = false;\n declare private _oldHttpServerDurationHistogram: Histogram;\n declare private _stableHttpServerDurationHistogram: Histogram;\n declare private _oldHttpClientDurationHistogram: Histogram;\n declare private _stableHttpClientDurationHistogram: Histogram;\n\n private _semconvStability: SemconvStability = SemconvStability.OLD;\n\n constructor(config: HttpInstrumentationConfig = {}) {\n super('@opentelemetry/instrumentation-http', VERSION, config);\n this._semconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n\n protected override _updateMetricInstruments() {\n this._oldHttpServerDurationHistogram = this.meter.createHistogram(\n 'http.server.duration',\n {\n description: 'Measures the duration of inbound HTTP requests.',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n }\n );\n this._oldHttpClientDurationHistogram = this.meter.createHistogram(\n 'http.client.duration',\n {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n }\n );\n this._stableHttpServerDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_SERVER_REQUEST_DURATION,\n {\n description: 'Duration of HTTP server requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n this._stableHttpClientDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n {\n description: 'Duration of HTTP client requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n }\n\n private _recordServerDuration(\n durationMs: number,\n oldAttributes: Attributes,\n stableAttributes: Attributes\n ) {\n if (this._semconvStability & SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpServerDurationHistogram.record(durationMs, oldAttributes);\n }\n\n if (this._semconvStability & SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpServerDurationHistogram.record(\n durationMs / 1000,\n stableAttributes\n );\n }\n }\n\n private _recordClientDuration(\n durationMs: number,\n oldAttributes: Attributes,\n stableAttributes: Attributes\n ) {\n if (this._semconvStability & SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpClientDurationHistogram.record(durationMs, oldAttributes);\n }\n\n if (this._semconvStability & SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpClientDurationHistogram.record(\n durationMs / 1000,\n stableAttributes\n );\n }\n }\n\n override setConfig(config: HttpInstrumentationConfig = {}): void {\n super.setConfig(config);\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n\n init(): [\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleDefinition,\n ] {\n return [this._getHttpsInstrumentation(), this._getHttpInstrumentation()];\n }\n\n private _getHttpInstrumentation() {\n return new InstrumentationNodeModuleDefinition(\n 'http',\n ['*'],\n (moduleExports: Http): Http => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpPatched) {\n return moduleExports;\n }\n this._httpPatched = true;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = (moduleExports as any)[Symbol.toStringTag] === 'Module';\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(\n moduleExports,\n 'request',\n this._getPatchOutgoingRequestFunction('http')\n ) as unknown as Func;\n const patchedGet = this._wrap(\n moduleExports,\n 'get',\n this._getPatchOutgoingGetFunction(patchedRequest)\n );\n if (isESM) {\n // To handle `import http from 'http'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(\n moduleExports.Server.prototype,\n 'emit',\n this._getPatchIncomingRequestFunction('http')\n );\n }\n return moduleExports;\n },\n (moduleExports: Http) => {\n this._httpPatched = false;\n if (moduleExports === undefined) return;\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n }\n );\n }\n\n private _getHttpsInstrumentation() {\n return new InstrumentationNodeModuleDefinition(\n 'https',\n ['*'],\n (moduleExports: Https): Https => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpsPatched) {\n return moduleExports;\n }\n this._httpsPatched = true;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = (moduleExports as any)[Symbol.toStringTag] === 'Module';\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(\n moduleExports,\n 'request',\n this._getPatchHttpsOutgoingRequestFunction('https')\n ) as unknown as Func;\n const patchedGet = this._wrap(\n moduleExports,\n 'get',\n this._getPatchHttpsOutgoingGetFunction(patchedRequest)\n );\n if (isESM) {\n // To handle `import https from 'https'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(\n moduleExports.Server.prototype,\n 'emit',\n this._getPatchIncomingRequestFunction('https')\n );\n }\n return moduleExports;\n },\n (moduleExports: Https) => {\n this._httpsPatched = false;\n if (moduleExports === undefined) return;\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n }\n );\n }\n\n /**\n * Creates spans for incoming requests, restoring spans' context if applied.\n */\n private _getPatchIncomingRequestFunction(component: 'http' | 'https') {\n return (\n original: (event: string, ...args: unknown[]) => boolean\n ): ((this: unknown, event: string, ...args: unknown[]) => boolean) => {\n return this._incomingRequestFunction(component, original);\n };\n }\n\n /**\n * Creates spans for outgoing requests, sending spans' context for distributed\n * tracing.\n */\n private _getPatchOutgoingRequestFunction(component: 'http' | 'https') {\n return (original: Func): Func => {\n return this._outgoingRequestFunction(component, original);\n };\n }\n\n private _getPatchOutgoingGetFunction(\n clientRequest: (\n options: http.RequestOptions | string | url.URL,\n ...args: HttpRequestArgs\n ) => http.ClientRequest\n ) {\n return (_original: Func): Func => {\n // Re-implement http.get. This needs to be done (instead of using\n // getPatchOutgoingRequestFunction to patch it) because we need to\n // set the trace context header before the returned http.ClientRequest is\n // ended. The Node.js docs state that the only differences between\n // request and get are that (1) get defaults to the HTTP GET method and\n // (2) the returned request object is ended immediately. The former is\n // already true (at least in supported Node versions up to v10), so we\n // simply follow the latter. Ref:\n // https://nodejs.org/dist/latest/docs/api/http.html#http_http_get_options_callback\n // https://github.com/googleapis/cloud-trace-nodejs/blob/master/src/instrumentations/instrumentation-http.ts#L198\n return function outgoingGetRequest<\n T extends http.RequestOptions | string | url.URL,\n >(options: T, ...args: HttpRequestArgs): http.ClientRequest {\n const req = clientRequest(options, ...args);\n req.end();\n return req;\n };\n };\n }\n\n /** Patches HTTPS outgoing requests */\n private _getPatchHttpsOutgoingRequestFunction(component: 'http' | 'https') {\n return (original: Func): Func => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: https.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ): http.ClientRequest {\n // Makes sure options will have default HTTPS parameters\n if (\n component === 'https' &&\n typeof options === 'object' &&\n options?.constructor?.name !== 'URL'\n ) {\n options = Object.assign({}, options);\n instrumentation._setDefaultOptions(options);\n }\n return instrumentation._getPatchOutgoingRequestFunction(component)(\n original\n )(options, ...args);\n };\n };\n }\n\n private _setDefaultOptions(options: https.RequestOptions) {\n options.protocol = options.protocol || 'https:';\n options.port = options.port || 443;\n }\n\n /** Patches HTTPS outgoing get requests */\n private _getPatchHttpsOutgoingGetFunction(\n clientRequest: (\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: http.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ) => http.ClientRequest\n ) {\n return (original: Func): Func => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: https.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ): http.ClientRequest {\n return instrumentation._getPatchOutgoingGetFunction(clientRequest)(\n original\n )(options, ...args);\n };\n };\n }\n\n /**\n * Attach event listeners to a client request to end span and add span attributes.\n *\n * @param request The original request object.\n * @param span representing the current operation\n * @param startTime representing the start time of the request to calculate duration in Metric\n * @param oldMetricAttributes metric attributes for old semantic conventions\n * @param stableMetricAttributes metric attributes for new semantic conventions\n */\n private _traceClientRequest(\n request: http.ClientRequest,\n span: Span,\n startTime: HrTime,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes\n ): http.ClientRequest {\n if (this.getConfig().requestHook) {\n this._callRequestHook(span, request);\n }\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\n /*\n * User 'response' event listeners can be added before our listener,\n * force our listener to be the first, so response emitter is bound\n * before any user listeners are added to it.\n */\n request.prependListener(\n 'response',\n (response: http.IncomingMessage & { aborted?: boolean }) => {\n this._diag.debug('outgoingRequest on response()');\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n const responseAttributes = getOutgoingRequestAttributesOnResponse(\n response,\n this._semconvStability\n );\n span.setAttributes(responseAttributes);\n oldMetricAttributes = Object.assign(\n oldMetricAttributes,\n getOutgoingRequestMetricAttributesOnResponse(responseAttributes)\n );\n stableMetricAttributes = Object.assign(\n stableMetricAttributes,\n getOutgoingStableRequestMetricAttributesOnResponse(responseAttributes)\n );\n\n if (this.getConfig().responseHook) {\n this._callResponseHook(span, response);\n }\n\n span.setAttributes(\n this._headerCapture.client.captureRequestHeaders(header =>\n request.getHeader(header)\n )\n );\n span.setAttributes(\n this._headerCapture.client.captureResponseHeaders(\n header => response.headers[header]\n )\n );\n\n context.bind(context.active(), response);\n\n const endHandler = () => {\n this._diag.debug('outgoingRequest on end()');\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n let status: SpanStatus;\n\n if (response.aborted && !response.complete) {\n status = { code: SpanStatusCode.ERROR };\n } else {\n // behaves same for new and old semconv\n status = {\n code: parseResponseStatus(SpanKind.CLIENT, response.statusCode),\n };\n }\n\n span.setStatus(status);\n\n if (this.getConfig().applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () =>\n this.getConfig().applyCustomAttributesOnSpan!(\n span,\n request,\n response\n ),\n () => {},\n true\n );\n }\n\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n };\n\n response.on('end', endHandler);\n response.on(errorMonitor, (error: Err) => {\n this._diag.debug('outgoingRequest on error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n });\n }\n );\n request.on('close', () => {\n this._diag.debug('outgoingRequest on request close()');\n if (request.aborted || responseFinished) {\n return;\n }\n responseFinished = true;\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n });\n request.on(errorMonitor, (error: Err) => {\n this._diag.debug('outgoingRequest on request error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n });\n\n this._diag.debug('http.ClientRequest return request');\n return request;\n }\n\n private _incomingRequestFunction(\n component: 'http' | 'https',\n original: (event: string, ...args: unknown[]) => boolean\n ) {\n const instrumentation = this;\n return function incomingRequest(\n this: unknown,\n event: string,\n ...args: unknown[]\n ): boolean {\n // Only traces request events\n if (event !== 'request') {\n return original.apply(this, [event, ...args]);\n }\n\n const request = args[0] as http.IncomingMessage;\n const response = args[1] as http.ServerResponse & { socket: Socket };\n const method = request.method || 'GET';\n\n instrumentation._diag.debug(\n `${component} instrumentation incomingRequest`\n );\n\n if (\n safeExecuteInTheMiddle(\n () =>\n instrumentation.getConfig().ignoreIncomingRequestHook?.(request),\n (e: unknown) => {\n if (e != null) {\n instrumentation._diag.error(\n 'caught ignoreIncomingRequestHook error: ',\n e\n );\n }\n },\n true\n )\n ) {\n return context.with(suppressTracing(context.active()), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n return original.apply(this, [event, ...args]);\n });\n }\n\n const headers = request.headers;\n\n const spanAttributes = getIncomingRequestAttributes(\n request,\n {\n component: component,\n serverName: instrumentation.getConfig().serverName,\n hookAttributes: instrumentation._callStartSpanHook(\n request,\n instrumentation.getConfig().startIncomingSpanHook\n ),\n semconvStability: instrumentation._semconvStability,\n enableSyntheticSourceDetection:\n instrumentation.getConfig().enableSyntheticSourceDetection || false,\n },\n instrumentation._diag\n );\n\n Object.assign(\n spanAttributes,\n instrumentation._headerCapture.server.captureRequestHeaders(\n header => request.headers[header]\n )\n );\n\n const spanOptions: SpanOptions = {\n kind: SpanKind.SERVER,\n attributes: spanAttributes,\n };\n\n const startTime = hrTime();\n const oldMetricAttributes =\n getIncomingRequestMetricAttributes(spanAttributes);\n\n // request method and url.scheme are both required span attributes\n const stableMetricAttributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: spanAttributes[ATTR_HTTP_REQUEST_METHOD],\n [ATTR_URL_SCHEME]: spanAttributes[ATTR_URL_SCHEME],\n };\n\n // recommended if and only if one was sent, same as span recommendation\n if (spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n const ctx = propagation.extract(ROOT_CONTEXT, headers);\n const span = instrumentation._startHttpSpan(method, spanOptions, ctx);\n const rpcMetadata: RPCMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(\n setRPCMetadata(trace.setSpan(ctx, span), rpcMetadata),\n () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n if (instrumentation.getConfig().requestHook) {\n instrumentation._callRequestHook(span, request);\n }\n if (instrumentation.getConfig().responseHook) {\n instrumentation._callResponseHook(span, response);\n }\n\n // After 'error', no further events other than 'close' should be emitted.\n let hasError = false;\n response.on('close', () => {\n if (hasError) {\n return;\n }\n instrumentation._onServerResponseFinish(\n request,\n response,\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime\n );\n });\n response.on(errorMonitor, (err: Err) => {\n hasError = true;\n instrumentation._onServerResponseError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n err\n );\n });\n\n return safeExecuteInTheMiddle(\n () => original.apply(this, [event, ...args]),\n error => {\n if (error) {\n instrumentation._onServerResponseError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n throw error;\n }\n }\n );\n }\n );\n };\n }\n\n private _outgoingRequestFunction(\n component: 'http' | 'https',\n original: Func\n ): Func {\n const instrumentation = this;\n return function outgoingRequest(\n this: unknown,\n options: url.URL | http.RequestOptions | string,\n ...args: unknown[]\n ): http.ClientRequest {\n if (!isValidOptionsType(options)) {\n return original.apply(this, [options, ...args]);\n }\n const extraOptions =\n typeof args[0] === 'object' &&\n (typeof options === 'string' || options instanceof url.URL)\n ? (args.shift() as http.RequestOptions)\n : undefined;\n const { method, invalidUrl, optionsParsed } = getRequestInfo(\n instrumentation._diag,\n options,\n extraOptions\n );\n\n if (\n safeExecuteInTheMiddle(\n () =>\n instrumentation\n .getConfig()\n .ignoreOutgoingRequestHook?.(optionsParsed),\n (e: unknown) => {\n if (e != null) {\n instrumentation._diag.error(\n 'caught ignoreOutgoingRequestHook error: ',\n e\n );\n }\n },\n true\n )\n ) {\n return original.apply(this, [optionsParsed, ...args]);\n }\n\n const { hostname, port } = extractHostnameAndPort(optionsParsed);\n const attributes = getOutgoingRequestAttributes(\n optionsParsed,\n {\n component,\n port,\n hostname,\n hookAttributes: instrumentation._callStartSpanHook(\n optionsParsed,\n instrumentation.getConfig().startOutgoingSpanHook\n ),\n redactedQueryParams: instrumentation.getConfig().redactedQueryParams, // Added config for adding custom query strings\n },\n instrumentation._semconvStability,\n instrumentation.getConfig().enableSyntheticSourceDetection || false\n );\n\n const startTime = hrTime();\n const oldMetricAttributes: Attributes =\n getOutgoingRequestMetricAttributes(attributes);\n\n // request method, server address, and server port are both required span attributes\n const stableMetricAttributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: attributes[ATTR_HTTP_REQUEST_METHOD],\n [ATTR_SERVER_ADDRESS]: attributes[ATTR_SERVER_ADDRESS],\n [ATTR_SERVER_PORT]: attributes[ATTR_SERVER_PORT],\n };\n\n // required if and only if one was sent, same as span requirement\n if (attributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n stableMetricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n\n // recommended if and only if one was sent, same as span recommendation\n if (attributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n attributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n const spanOptions: SpanOptions = {\n kind: SpanKind.CLIENT,\n attributes,\n };\n const span = instrumentation._startHttpSpan(method, spanOptions);\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n if (!optionsParsed.headers) {\n optionsParsed.headers = {};\n } else {\n // Make a copy of the headers object to avoid mutating an object the\n // caller might have a reference to.\n optionsParsed.headers = Object.assign({}, optionsParsed.headers);\n }\n propagation.inject(requestContext, optionsParsed.headers);\n\n return context.with(requestContext, () => {\n /*\n * The response callback is registered before ClientRequest is bound,\n * thus it is needed to bind it before the function call.\n */\n const cb = args[args.length - 1];\n if (typeof cb === 'function') {\n args[args.length - 1] = context.bind(parentContext, cb);\n }\n\n const request: http.ClientRequest = safeExecuteInTheMiddle(\n () => {\n if (invalidUrl) {\n // we know that the url is invalid, there's no point in injecting context as it will fail validation.\n // Passing in what the user provided will give the user an error that matches what they'd see without\n // the instrumentation.\n return original.apply(this, [options, ...args]);\n } else {\n return original.apply(this, [optionsParsed, ...args]);\n }\n },\n error => {\n if (error) {\n instrumentation._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n throw error;\n }\n }\n );\n\n instrumentation._diag.debug(\n `${component} instrumentation outgoingRequest`\n );\n context.bind(parentContext, request);\n return instrumentation._traceClientRequest(\n request,\n span,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n });\n };\n }\n\n private _onServerResponseFinish(\n request: http.IncomingMessage,\n response: http.ServerResponse,\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime\n ) {\n const attributes = getIncomingRequestAttributesOnResponse(\n request,\n response,\n this._semconvStability\n );\n oldMetricAttributes = Object.assign(\n oldMetricAttributes,\n getIncomingRequestMetricAttributesOnResponse(attributes)\n );\n stableMetricAttributes = Object.assign(\n stableMetricAttributes,\n getIncomingStableRequestMetricAttributesOnResponse(attributes)\n );\n\n span.setAttributes(\n this._headerCapture.server.captureResponseHeaders(header =>\n response.getHeader(header)\n )\n );\n\n span.setAttributes(attributes).setStatus({\n code: parseResponseStatus(SpanKind.SERVER, response.statusCode),\n });\n\n const route = attributes[ATTR_HTTP_ROUTE];\n if (route) {\n span.updateName(`${request.method || 'GET'} ${route}`);\n }\n\n if (this.getConfig().applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () =>\n this.getConfig().applyCustomAttributesOnSpan!(\n span,\n request,\n response\n ),\n () => {},\n true\n );\n }\n\n this._closeHttpSpan(\n span,\n SpanKind.SERVER,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _onOutgoingRequestError(\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime,\n error: Err\n ) {\n setSpanWithError(span, error, this._semconvStability);\n stableMetricAttributes[ATTR_ERROR_TYPE] = error.name;\n\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _onServerResponseError(\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime,\n error: Err\n ) {\n setSpanWithError(span, error, this._semconvStability);\n stableMetricAttributes[ATTR_ERROR_TYPE] = error.name;\n\n this._closeHttpSpan(\n span,\n SpanKind.SERVER,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _startHttpSpan(\n name: string,\n options: SpanOptions,\n ctx = context.active()\n ) {\n /*\n * If a parent is required but not present, we use a `NoopSpan` to still\n * propagate context without recording it.\n */\n const requireParent =\n options.kind === SpanKind.CLIENT\n ? this.getConfig().requireParentforOutgoingSpans\n : this.getConfig().requireParentforIncomingSpans;\n\n let span: Span;\n const currentSpan = trace.getSpan(ctx);\n\n if (\n requireParent === true &&\n (!currentSpan || !trace.isSpanContextValid(currentSpan.spanContext()))\n ) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else if (requireParent === true && currentSpan?.spanContext().isRemote) {\n span = currentSpan;\n } else {\n span = this.tracer.startSpan(name, options, ctx);\n }\n this._spanNotEnded.add(span);\n return span;\n }\n\n private _closeHttpSpan(\n span: Span,\n spanKind: SpanKind,\n startTime: HrTime,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes\n ) {\n if (!this._spanNotEnded.has(span)) {\n return;\n }\n\n span.end();\n this._spanNotEnded.delete(span);\n\n // Record metrics\n const duration = hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime()));\n if (spanKind === SpanKind.SERVER) {\n this._recordServerDuration(\n duration,\n oldMetricAttributes,\n stableMetricAttributes\n );\n } else if (spanKind === SpanKind.CLIENT) {\n this._recordClientDuration(\n duration,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n }\n\n private _callResponseHook(\n span: Span,\n response: http.IncomingMessage | http.ServerResponse\n ) {\n safeExecuteInTheMiddle(\n () => this.getConfig().responseHook!(span, response),\n () => {},\n true\n );\n }\n\n private _callRequestHook(\n span: Span,\n request: http.ClientRequest | http.IncomingMessage\n ) {\n safeExecuteInTheMiddle(\n () => this.getConfig().requestHook!(span, request),\n () => {},\n true\n );\n }\n\n private _callStartSpanHook(\n request: http.IncomingMessage | http.RequestOptions,\n hookFunc: Function | undefined\n ) {\n if (typeof hookFunc === 'function') {\n return safeExecuteInTheMiddle(\n () => hookFunc(request),\n () => {},\n true\n );\n }\n }\n\n private _createHeaderCapture(semconvStability: SemconvStability) {\n const config = this.getConfig();\n\n return {\n client: {\n captureRequestHeaders: headerCapture(\n 'request',\n config.headersToSpanAttributes?.client?.requestHeaders ?? [],\n semconvStability\n ),\n captureResponseHeaders: headerCapture(\n 'response',\n config.headersToSpanAttributes?.client?.responseHeaders ?? [],\n semconvStability\n ),\n },\n server: {\n captureRequestHeaders: headerCapture(\n 'request',\n config.headersToSpanAttributes?.server?.requestHeaders ?? [],\n semconvStability\n ),\n captureResponseHeaders: headerCapture(\n 'response',\n config.headersToSpanAttributes?.server?.responseHeaders ?? [],\n semconvStability\n ),\n },\n };\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { HttpInstrumentation } from './http';\nexport type {\n HttpCustomAttributeFunction,\n HttpInstrumentationConfig,\n HttpRequestCustomAttributeFunction,\n HttpResponseCustomAttributeFunction,\n IgnoreIncomingRequestFunction,\n IgnoreOutgoingRequestFunction,\n StartIncomingSpanCustomAttributeFunction,\n StartOutgoingSpanCustomAttributeFunction,\n} from './types';\n","import { type Instrumentation, registerInstrumentations } from '@opentelemetry/instrumentation';\n\n/** Exported only for tests. */\nexport const INSTRUMENTED: Record = {};\n\nexport function generateInstrumentOnce<\n Options,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n InstrumentationClass extends new (...args: any[]) => Instrumentation,\n>(\n name: string,\n instrumentationClass: InstrumentationClass,\n optionsCallback: (options: Options) => ConstructorParameters[0],\n): ((options: Options) => InstanceType) & { id: string };\nexport function generateInstrumentOnce<\n Options = unknown,\n InstrumentationInstance extends Instrumentation = Instrumentation,\n>(\n name: string,\n creator: (options?: Options) => InstrumentationInstance,\n): ((options?: Options) => InstrumentationInstance) & { id: string };\n/**\n * Instrument an OpenTelemetry instrumentation once.\n * This will skip running instrumentation again if it was already instrumented.\n */\nexport function generateInstrumentOnce(\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n creatorOrClass: (new (...args: any[]) => Instrumentation) | ((options?: Options) => Instrumentation),\n optionsCallback?: (options: Options) => unknown,\n): ((options: Options) => Instrumentation) & { id: string } {\n if (optionsCallback) {\n return _generateInstrumentOnceWithOptions(\n name,\n creatorOrClass as new (...args: unknown[]) => Instrumentation,\n optionsCallback,\n );\n }\n\n return _generateInstrumentOnce(name, creatorOrClass as (options?: Options) => Instrumentation);\n}\n\n// The plain version without handling of options\n// Should not be used with custom options that are mutated in the creator!\nfunction _generateInstrumentOnce(\n name: string,\n creator: (options?: Options) => InstrumentationInstance,\n): ((options?: Options) => InstrumentationInstance) & { id: string } {\n return Object.assign(\n (options?: Options) => {\n const instrumented = INSTRUMENTED[name] as InstrumentationInstance | undefined;\n if (instrumented) {\n // If options are provided, ensure we update them\n if (options) {\n instrumented.setConfig(options);\n }\n return instrumented;\n }\n\n const instrumentation = creator(options);\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n// This version handles options properly\nfunction _generateInstrumentOnceWithOptions<\n Options,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n InstrumentationClass extends new (...args: any[]) => Instrumentation,\n>(\n name: string,\n instrumentationClass: InstrumentationClass,\n optionsCallback: (options: Options) => ConstructorParameters[0],\n): ((options: Options) => InstanceType) & { id: string } {\n return Object.assign(\n (_options: Options) => {\n const options = optionsCallback(_options);\n\n const instrumented = INSTRUMENTED[name] as InstanceType | undefined;\n if (instrumented) {\n // Ensure we update options\n instrumented.setConfig(options);\n return instrumented;\n }\n\n const instrumentation = new instrumentationClass(options) as InstanceType;\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n/**\n * Ensure a given callback is called when the instrumentation is actually wrapping something.\n * This can be used to ensure some logic is only called when the instrumentation is actually active.\n *\n * This function returns a function that can be invoked with a callback.\n * This callback will either be invoked immediately\n * (e.g. if the instrumentation was already wrapped, or if _wrap could not be patched),\n * or once the instrumentation is actually wrapping something.\n *\n * Make sure to call this function right after adding the instrumentation, otherwise it may be too late!\n * The returned callback can be used any time, and also multiple times.\n */\nexport function instrumentWhenWrapped(instrumentation: T): (callback: () => void) => void {\n let isWrapped = false;\n let callbacks: (() => void)[] = [];\n\n if (!hasWrap(instrumentation)) {\n isWrapped = true;\n } else {\n const originalWrap = instrumentation['_wrap'];\n\n instrumentation['_wrap'] = (...args: Parameters) => {\n isWrapped = true;\n callbacks.forEach(callback => callback());\n callbacks = [];\n return originalWrap(...args);\n };\n }\n\n const registerCallback = (callback: () => void): void => {\n if (isWrapped) {\n callback();\n } else {\n callbacks.push(callback);\n }\n };\n\n return registerCallback;\n}\n\nfunction hasWrap(\n instrumentation: T,\n): instrumentation is T & { _wrap: (...args: unknown[]) => unknown } {\n return typeof (instrumentation as T & { _wrap?: (...args: unknown[]) => unknown })['_wrap'] === 'function';\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","export const INSTRUMENTATION_NAME = '@sentry/instrumentation-http';\n\n/** We only want to capture request bodies up to 1mb. */\nexport const MAX_BODY_BYTE_LENGTH = 1024 * 1024;\n","import type { IncomingMessage } from 'node:http';\nimport type { Scope } from '@sentry/core';\nimport { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { MAX_BODY_BYTE_LENGTH } from '../integrations/http/constants';\n\n/**\n * This method patches the request object to capture the body.\n * Instead of actually consuming the streamed body ourselves, which has potential side effects,\n * we monkey patch `req.on('data')` to intercept the body chunks.\n * This way, we only read the body if the user also consumes the body, ensuring we do not change any behavior in unexpected ways.\n */\nexport function patchRequestToCaptureBody(\n req: IncomingMessage,\n isolationScope: Scope,\n maxIncomingRequestBodySize: 'small' | 'medium' | 'always',\n integrationName: string,\n): void {\n let bodyByteLength = 0;\n const chunks: Buffer[] = [];\n\n DEBUG_BUILD && debug.log(integrationName, 'Patching request.on');\n\n /**\n * We need to keep track of the original callbacks, in order to be able to remove listeners again.\n * Since `off` depends on having the exact same function reference passed in, we need to be able to map\n * original listeners to our wrapped ones.\n */\n const callbackMap = new WeakMap();\n\n const maxBodySize =\n maxIncomingRequestBodySize === 'small'\n ? 1_000\n : maxIncomingRequestBodySize === 'medium'\n ? 10_000\n : MAX_BODY_BYTE_LENGTH;\n\n try {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.on = new Proxy(req.on, {\n apply: (target, thisArg, args: Parameters) => {\n const [event, listener, ...restArgs] = args;\n\n if (event === 'data') {\n DEBUG_BUILD &&\n debug.log(integrationName, `Handling request.on(\"data\") with maximum body size of ${maxBodySize}b`);\n\n const callback = new Proxy(listener, {\n apply: (target, thisArg, args: Parameters) => {\n try {\n const chunk = args[0] as Buffer | string;\n const bufferifiedChunk = Buffer.from(chunk);\n\n if (bodyByteLength < maxBodySize) {\n chunks.push(bufferifiedChunk);\n bodyByteLength += bufferifiedChunk.byteLength;\n } else if (DEBUG_BUILD) {\n debug.log(\n integrationName,\n `Dropping request body chunk because maximum body length of ${maxBodySize}b is exceeded.`,\n );\n }\n } catch (_err) {\n DEBUG_BUILD && debug.error(integrationName, 'Encountered error while storing body chunk.');\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n callbackMap.set(listener, callback);\n\n return Reflect.apply(target, thisArg, [event, callback, ...restArgs]);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n // Ensure we also remove callbacks correctly\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.off = new Proxy(req.off, {\n apply: (target, thisArg, args: Parameters) => {\n const [, listener] = args;\n\n const callback = callbackMap.get(listener);\n if (callback) {\n callbackMap.delete(listener);\n\n const modifiedArgs = args.slice();\n modifiedArgs[1] = callback;\n return Reflect.apply(target, thisArg, modifiedArgs);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n req.on('end', () => {\n try {\n const body = Buffer.concat(chunks).toString('utf-8');\n if (body) {\n // Using Buffer.byteLength here, because the body may contain characters that are not 1 byte long\n const bodyByteLength = Buffer.byteLength(body, 'utf-8');\n const truncatedBody =\n bodyByteLength > maxBodySize\n ? `${Buffer.from(body)\n .subarray(0, maxBodySize - 3)\n .toString('utf-8')}...`\n : body;\n\n isolationScope.setSDKProcessingMetadata({ normalizedRequest: { data: truncatedBody } });\n }\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error building captured request body', error);\n }\n }\n });\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error patching request to capture body', error);\n }\n }\n}\n","import type { ChannelListener } from 'node:diagnostics_channel';\nimport { subscribe } from 'node:diagnostics_channel';\nimport type { EventEmitter } from 'node:events';\nimport type { IncomingMessage, RequestOptions, Server, ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport { context, createContextKey, propagation } from '@opentelemetry/api';\nimport type { AggregationCounts, Client, Integration, IntegrationFn, Scope } from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n addNonEnumerableProperty,\n debug,\n generateSpanId,\n generateTraceId,\n getClient,\n getCurrentScope,\n getIsolationScope,\n httpRequestToRequestData,\n stripUrlQueryAndFragment,\n withIsolationScope,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type { NodeClient } from '../../sdk/client';\nimport { patchRequestToCaptureBody } from '../../utils/captureRequestBody';\n\ntype ServerEmit = typeof Server.prototype.emit;\n\n// Inlining this type to not depend on newer TS types\ninterface WeakRefImpl {\n deref(): T | undefined;\n}\n\ntype StartSpanCallback = (next: () => boolean) => boolean;\ntype RequestWithOptionalStartSpanCallback = IncomingMessage & {\n _startSpanCallback?: WeakRefImpl;\n};\n\nconst HTTP_SERVER_INSTRUMENTED_KEY = createContextKey('sentry_http_server_instrumented');\nconst INTEGRATION_NAME = 'Http.Server';\n\nconst clientToRequestSessionAggregatesMap = new Map<\n Client,\n { [timestampRoundedToSeconds: string]: { exited: number; crashed: number; errored: number } }\n>();\n\n// We keep track of emit functions we wrapped, to avoid double wrapping\n// We do this instead of putting a non-enumerable property on the function, because\n// sometimes the property seems to be migrated to forks of the emit function, which we do not want to happen\n// This was the case in the nestjs-distributed-tracing E2E test\nconst wrappedEmitFns = new WeakSet();\n\nexport interface HttpServerIntegrationOptions {\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n sessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n}\n\n/**\n * Add a callback to the request object that will be called when the request is started.\n * The callback will receive the next function to continue processing the request.\n */\nexport function addStartSpanCallback(request: RequestWithOptionalStartSpanCallback, callback: StartSpanCallback): void {\n addNonEnumerableProperty(request, '_startSpanCallback', new WeakRef(callback));\n}\n\nconst _httpServerIntegration = ((options: HttpServerIntegrationOptions = {}) => {\n const _options = {\n sessions: options.sessions ?? true,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS ?? 60_000,\n maxRequestBodySize: options.maxRequestBodySize ?? 'medium',\n ignoreRequestBody: options.ignoreRequestBody,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const onHttpServerRequestStart = ((_data: unknown) => {\n const data = _data as { server: Server };\n\n instrumentServer(data.server, _options);\n }) satisfies ChannelListener;\n\n subscribe('http.server.request.start', onHttpServerRequestStart);\n },\n afterAllSetup(client) {\n if (DEBUG_BUILD && client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerIntegration` while `httpIntegration` is also present. Make sure to remove `httpServerIntegration` when adding `httpIntegration`.',\n );\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * This integration handles request isolation, trace continuation and other core Sentry functionality around incoming http requests\n * handled via the node `http` module.\n *\n * This version uses OpenTelemetry for context propagation and span management.\n *\n * @see {@link ../../light/integrations/httpServerIntegration.ts} for the lightweight version without OpenTelemetry\n */\nexport const httpServerIntegration = _httpServerIntegration as (\n options?: HttpServerIntegrationOptions,\n) => Integration & {\n name: 'HttpServer';\n setupOnce: () => void;\n};\n\n/**\n * Instrument a server to capture incoming requests.\n *\n */\nfunction instrumentServer(\n server: Server,\n {\n ignoreRequestBody,\n maxRequestBodySize,\n sessions,\n sessionFlushingDelayMS,\n }: {\n ignoreRequestBody?: (url: string, request: IncomingMessage) => boolean;\n maxRequestBodySize: 'small' | 'medium' | 'always' | 'none';\n sessions: boolean;\n sessionFlushingDelayMS: number;\n },\n): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEmit: ServerEmit = server.emit;\n\n if (wrappedEmitFns.has(originalEmit)) {\n return;\n }\n\n const newEmit = new Proxy(originalEmit, {\n apply(target, thisArg, args: [event: string, ...args: unknown[]]) {\n // Only traces request events\n if (args[0] !== 'request') {\n return target.apply(thisArg, args);\n }\n\n const client = getClient();\n\n // Make sure we do not double execute our wrapper code, for edge cases...\n // Without this check, if we double-wrap emit, for whatever reason, you'd get two http.server spans (one the children of the other)\n if (context.active().getValue(HTTP_SERVER_INSTRUMENTED_KEY) || !client) {\n return target.apply(thisArg, args);\n }\n\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Handling incoming request');\n\n const isolationScope = getIsolationScope().clone();\n const request = args[1] as IncomingMessage;\n const response = args[2] as ServerResponse & { socket: Socket };\n\n const normalizedRequest = httpRequestToRequestData(request);\n\n // request.ip is non-standard but some frameworks set this\n const ipAddress = (request as { ip?: string }).ip || request.socket?.remoteAddress;\n\n const url = request.url || '/';\n if (maxRequestBodySize !== 'none' && !ignoreRequestBody?.(url, request)) {\n patchRequestToCaptureBody(request, isolationScope, maxRequestBodySize, INTEGRATION_NAME);\n }\n\n // Update the isolation scope, isolate this request\n isolationScope.setSDKProcessingMetadata({ normalizedRequest, ipAddress });\n\n // attempt to update the scope's `transactionName` based on the request URL\n // Ideally, framework instrumentations coming after the HttpInstrumentation\n // update the transactionName once we get a parameterized route.\n const httpMethod = (request.method || 'GET').toUpperCase();\n const httpTargetWithoutQueryFragment = stripUrlQueryAndFragment(url);\n\n const bestEffortTransactionName = `${httpMethod} ${httpTargetWithoutQueryFragment}`;\n\n isolationScope.setTransactionName(bestEffortTransactionName);\n\n if (sessions && client) {\n recordRequestSession(client, {\n requestIsolationScope: isolationScope,\n response,\n sessionFlushingDelayMS: sessionFlushingDelayMS ?? 60_000,\n });\n }\n\n return withIsolationScope(isolationScope, () => {\n const newPropagationContext = {\n traceId: generateTraceId(),\n sampleRand: _INTERNAL_safeMathRandom(),\n propagationSpanId: generateSpanId(),\n };\n // - Set a fresh propagation context so each request gets a unique traceId.\n // When there are incoming trace headers, propagation.extract() below sets a remote\n // span on the OTel context which takes precedence in getTraceContextForScope().\n // - We can write directly to the current scope here because it is forked implicitly via\n // `context.with` in `withIsolationScope` (See `SentryContextManager`).\n // - explicitly making a deep copy to avoid mutation of original PC on the other scope\n getCurrentScope().setPropagationContext({ ...newPropagationContext });\n isolationScope.setPropagationContext({ ...newPropagationContext });\n\n const ctx = propagation\n .extract(context.active(), normalizedRequest.headers)\n .setValue(HTTP_SERVER_INSTRUMENTED_KEY, true);\n\n return context.with(ctx, () => {\n // This is used (optionally) by the httpServerSpansIntegration to attach _startSpanCallback to the request object\n client.emit('httpServerRequest', request, response, normalizedRequest);\n\n const callback = (request as RequestWithOptionalStartSpanCallback)._startSpanCallback?.deref();\n if (callback) {\n return callback(() => target.apply(thisArg, args));\n }\n return target.apply(thisArg, args);\n });\n });\n },\n });\n\n wrappedEmitFns.add(newEmit);\n server.emit = newEmit;\n}\n\n/**\n * Starts a session and tracks it in the context of a given isolation scope.\n * When the passed response is finished, the session is put into a task and is\n * aggregated with other sessions that may happen in a certain time window\n * (sessionFlushingDelayMs).\n *\n * The sessions are always aggregated by the client that is on the current scope\n * at the time of ending the response (if there is one).\n */\n// Exported for unit tests\nexport function recordRequestSession(\n client: Client,\n {\n requestIsolationScope,\n response,\n sessionFlushingDelayMS,\n }: {\n requestIsolationScope: Scope;\n response: EventEmitter;\n sessionFlushingDelayMS?: number;\n },\n): void {\n requestIsolationScope.setSDKProcessingMetadata({\n requestSession: { status: 'ok' },\n });\n response.once('close', () => {\n const requestSession = requestIsolationScope.getScopeData().sdkProcessingMetadata.requestSession;\n\n if (client && requestSession) {\n DEBUG_BUILD && debug.log(`Recorded request session with status: ${requestSession.status}`);\n\n const roundedDate = new Date();\n roundedDate.setSeconds(0, 0);\n const dateBucketKey = roundedDate.toISOString();\n\n const existingClientAggregate = clientToRequestSessionAggregatesMap.get(client);\n const bucket = existingClientAggregate?.[dateBucketKey] || { exited: 0, crashed: 0, errored: 0 };\n bucket[({ ok: 'exited', crashed: 'crashed', errored: 'errored' } as const)[requestSession.status]]++;\n\n if (existingClientAggregate) {\n existingClientAggregate[dateBucketKey] = bucket;\n } else {\n DEBUG_BUILD && debug.log('Opened new request session aggregate.');\n const newClientAggregate = { [dateBucketKey]: bucket };\n clientToRequestSessionAggregatesMap.set(client, newClientAggregate);\n\n const flushPendingClientAggregates = (): void => {\n clearTimeout(timeout);\n unregisterClientFlushHook();\n clientToRequestSessionAggregatesMap.delete(client);\n\n const aggregatePayload: AggregationCounts[] = Object.entries(newClientAggregate).map(\n ([timestamp, value]) => ({\n started: timestamp,\n exited: value.exited,\n errored: value.errored,\n crashed: value.crashed,\n }),\n );\n client.sendSession({ aggregates: aggregatePayload });\n };\n\n const unregisterClientFlushHook = client.on('flush', () => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to client flush');\n flushPendingClientAggregates();\n });\n const timeout = setTimeout(() => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to flushing schedule');\n flushPendingClientAggregates();\n }, sessionFlushingDelayMS).unref();\n }\n }\n });\n}\n","import { errorMonitor } from 'node:events';\nimport type { ClientRequest, IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'node:http';\nimport { context, SpanKind, trace } from '@opentelemetry/api';\nimport type { RPCMetadata } from '@opentelemetry/core';\nimport { getRPCMetadata, isTracingSuppressed, RPCType, setRPCMetadata } from '@opentelemetry/core';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_ROUTE,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_NET_HOST_IP,\n SEMATTRS_NET_HOST_PORT,\n SEMATTRS_NET_PEER_IP,\n} from '@opentelemetry/semantic-conventions';\nimport type { Event, Integration, IntegrationFn, Span, SpanAttributes, SpanStatus } from '@sentry/core';\nimport {\n debug,\n getIsolationScope,\n getSpanStatusFromHttpCode,\n httpHeadersToSpanAttributes,\n parseStringToURLObject,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_STATUS_ERROR,\n stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type { NodeClient } from '../../sdk/client';\nimport { addStartSpanCallback } from './httpServerIntegration';\n\nconst INTEGRATION_NAME = 'Http.ServerSpans';\n\n// Tree-shakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\nexport interface HttpServerSpansIntegrationOptions {\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n ignoreStatusCodes?: (number | [number, number])[];\n\n /**\n * @deprecated This is deprecated in favor of `incomingRequestSpanHook`.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: ClientRequest | IncomingMessage) => void;\n responseHook?: (span: Span, response: IncomingMessage | ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: ClientRequest | IncomingMessage,\n response: IncomingMessage | ServerResponse,\n ) => void;\n };\n\n /**\n * A hook that can be used to mutate the span for incoming requests.\n * This is triggered after the span is created, but before it is recorded.\n */\n onSpanCreated?: (span: Span, request: IncomingMessage, response: ServerResponse) => void;\n}\n\nconst _httpServerSpansIntegration = ((options: HttpServerSpansIntegrationOptions = {}) => {\n const ignoreStaticAssets = options.ignoreStaticAssets ?? true;\n const ignoreIncomingRequests = options.ignoreIncomingRequests;\n const ignoreStatusCodes = options.ignoreStatusCodes ?? [\n [401, 404],\n // 300 and 304 are possibly valid status codes we do not want to filter\n [301, 303],\n [305, 399],\n ];\n\n const { onSpanCreated } = options;\n // eslint-disable-next-line deprecation/deprecation\n const { requestHook, responseHook, applyCustomAttributesOnSpan } = options.instrumentation ?? {};\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n // If no tracing, we can just skip everything here\n if (typeof __SENTRY_TRACING__ !== 'undefined' && !__SENTRY_TRACING__) {\n return;\n }\n\n client.on('httpServerRequest', (_request, _response, normalizedRequest) => {\n // Type-casting this here because we do not want to put the node types into core\n const request = _request as IncomingMessage;\n const response = _response as ServerResponse;\n\n const startSpan = (next: () => boolean): boolean => {\n if (\n shouldIgnoreSpansForIncomingRequest(request, {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n })\n ) {\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Skipping span creation for incoming request', request.url);\n return next();\n }\n\n const fullUrl = normalizedRequest.url || request.url || '/';\n const urlObj = parseStringToURLObject(fullUrl);\n\n const headers = request.headers;\n const userAgent = headers['user-agent'];\n const ips = headers['x-forwarded-for'];\n const httpVersion = request.httpVersion;\n const host = headers.host;\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n const tracer = client.tracer;\n const scheme = fullUrl.startsWith('https') ? 'https' : 'http';\n\n const method = normalizedRequest.method || request.method?.toUpperCase() || 'GET';\n const httpTargetWithoutQueryFragment = urlObj ? urlObj.pathname : stripUrlQueryAndFragment(fullUrl);\n const bestEffortTransactionName = `${method} ${httpTargetWithoutQueryFragment}`;\n\n // We use the plain tracer.startSpan here so we can pass the span kind\n const span = tracer.startSpan(bestEffortTransactionName, {\n kind: SpanKind.SERVER,\n attributes: {\n // Sentry specific attributes\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.server',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.http',\n 'sentry.http.prefetch': isKnownPrefetchRequest(request) || undefined,\n // Old Semantic Conventions attributes - added for compatibility with what `@opentelemetry/instrumentation-http` output before\n 'http.url': fullUrl,\n 'http.method': normalizedRequest.method,\n 'http.target': urlObj ? `${urlObj.pathname}${urlObj.search}` : httpTargetWithoutQueryFragment,\n 'http.host': host,\n 'net.host.name': hostname,\n 'http.client_ip': typeof ips === 'string' ? ips.split(',')[0] : undefined,\n 'http.user_agent': userAgent,\n 'http.scheme': scheme,\n 'http.flavor': httpVersion,\n 'net.transport': httpVersion?.toUpperCase() === 'QUIC' ? 'ip_udp' : 'ip_tcp',\n ...getRequestContentLengthAttribute(request),\n ...httpHeadersToSpanAttributes(\n normalizedRequest.headers || {},\n client.getOptions().sendDefaultPii ?? false,\n ),\n },\n });\n\n // TODO v11: Remove the following three hooks, only onSpanCreated should remain\n requestHook?.(span, request);\n responseHook?.(span, response);\n applyCustomAttributesOnSpan?.(span, request, response);\n onSpanCreated?.(span, request, response);\n\n const rpcMetadata: RPCMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(setRPCMetadata(trace.setSpan(context.active(), span), rpcMetadata), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n // Ensure we only end the span once\n // E.g. error can be emitted before close is emitted\n let isEnded = false;\n function endSpan(status: SpanStatus): void {\n if (isEnded) {\n return;\n }\n\n isEnded = true;\n\n const newAttributes = getIncomingRequestAttributesOnResponse(request, response);\n span.setAttributes(newAttributes);\n span.setStatus(status);\n span.end();\n\n // Update the transaction name if the route has changed\n const route = newAttributes['http.route'];\n if (route) {\n getIsolationScope().setTransactionName(`${request.method?.toUpperCase() || 'GET'} ${route}`);\n }\n }\n\n response.on('close', () => {\n endSpan(getSpanStatusFromHttpCode(response.statusCode));\n });\n response.on(errorMonitor, () => {\n const httpStatus = getSpanStatusFromHttpCode(response.statusCode);\n // Ensure we def. have an error status here\n endSpan(httpStatus.code === SPAN_STATUS_ERROR ? httpStatus : { code: SPAN_STATUS_ERROR });\n });\n\n return next();\n });\n };\n\n addStartSpanCallback(request, startSpan);\n });\n },\n processEvent(event) {\n // Drop transaction if it has a status code that should be ignored\n if (event.type === 'transaction') {\n const statusCode = event.contexts?.trace?.data?.['http.response.status_code'];\n if (typeof statusCode === 'number') {\n const shouldDrop = shouldFilterStatusCode(statusCode, ignoreStatusCodes);\n if (shouldDrop) {\n DEBUG_BUILD && debug.log('Dropping transaction due to status code', statusCode);\n return null;\n }\n }\n }\n\n return event;\n },\n afterAllSetup(client) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n if (client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerSpansIntergation` while `httpIntegration` is also present. Make sure to remove `httpIntegration` when adding `httpServerSpansIntegration`.',\n );\n }\n\n if (!client.getIntegrationByName('Http.Server')) {\n debug.error(\n 'It seems that you have manually added `httpServerSpansIntergation` without adding `httpServerIntegration`. This is a requiement for spans to be created - please add the `httpServerIntegration` integration.',\n );\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * This integration emits spans for incoming requests handled via the node `http` module.\n * It requires the `httpServerIntegration` to be present.\n */\nexport const httpServerSpansIntegration = _httpServerSpansIntegration as (\n options?: HttpServerSpansIntegrationOptions,\n) => Integration & {\n name: 'HttpServerSpans';\n setup: (client: NodeClient) => void;\n processEvent: (event: Event) => Event | null;\n};\n\nfunction isKnownPrefetchRequest(req: IncomingMessage): boolean {\n // Currently only handles Next.js prefetch requests but may check other frameworks in the future.\n return req.headers['next-router-prefetch'] === '1';\n}\n\n/**\n * Check if a request is for a common static asset that should be ignored by default.\n *\n * Only exported for tests.\n */\nexport function isStaticAssetRequest(urlPath: string): boolean {\n const path = stripUrlQueryAndFragment(urlPath);\n // Common static file extensions\n if (path.match(/\\.(ico|png|jpg|jpeg|gif|svg|css|js|woff|woff2|ttf|eot|webp|avif)$/)) {\n return true;\n }\n\n // Common metadata files\n if (path.match(/^\\/(robots\\.txt|sitemap\\.xml|manifest\\.json|browserconfig\\.xml)$/)) {\n return true;\n }\n\n return false;\n}\n\nfunction shouldIgnoreSpansForIncomingRequest(\n request: IncomingMessage,\n {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n }: {\n ignoreStaticAssets?: boolean;\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n },\n): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // request.url is the only property that holds any information about the url\n // it only consists of the URL path and query string (if any)\n const urlPath = request.url;\n\n const method = request.method?.toUpperCase();\n // We do not capture OPTIONS/HEAD requests as spans\n if (method === 'OPTIONS' || method === 'HEAD' || !urlPath) {\n return true;\n }\n\n // Default static asset filtering\n if (ignoreStaticAssets && method === 'GET' && isStaticAssetRequest(urlPath)) {\n return true;\n }\n\n if (ignoreIncomingRequests?.(urlPath, request)) {\n return true;\n }\n\n return false;\n}\n\nfunction getRequestContentLengthAttribute(request: IncomingMessage): SpanAttributes {\n const length = getContentLength(request.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(request.headers)) {\n return {\n ['http.request_content_length']: length,\n };\n } else {\n return {\n ['http.request_content_length_uncompressed']: length,\n };\n }\n}\n\nfunction getContentLength(headers: IncomingHttpHeaders): number | null {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nfunction isCompressed(headers: IncomingHttpHeaders): boolean {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n\nfunction getIncomingRequestAttributesOnResponse(request: IncomingMessage, response: ServerResponse): SpanAttributes {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n\n const newAttributes: SpanAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n // eslint-disable-next-line deprecation/deprecation\n [SEMATTRS_HTTP_STATUS_CODE]: statusCode,\n 'http.status_text': statusMessage?.toUpperCase(),\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_IP] = localAddress;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_PORT] = localPort;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_PEER_IP] = remoteAddress;\n newAttributes['net.peer.port'] = remotePort;\n }\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_HTTP_STATUS_CODE] = statusCode;\n newAttributes['http.status_text'] = (statusMessage || '').toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n const routeName = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = routeName;\n }\n\n return newAttributes;\n}\n\n/**\n * If the given status code should be filtered for the given list of status codes/ranges.\n */\nfunction shouldFilterStatusCode(statusCode: number, dropForStatusCodes: (number | [number, number])[]): boolean {\n return dropForStatusCodes.some(code => {\n if (typeof code === 'number') {\n return code === statusCode;\n }\n\n const [min, max] = code;\n return statusCode >= min && statusCode <= max;\n });\n}\n","import { objectToBaggageHeader, parseBaggageHeader, SENTRY_BAGGAGE_KEY_PREFIX } from '@sentry/core';\n\n/**\n * Merge two baggage headers into one.\n * - Sentry-specific entries (keys starting with \"sentry-\") from the new baggage take precedence\n * - Non-Sentry entries from existing baggage take precedence\n * The order of the existing baggage will be preserved, and new entries will be added to the end.\n *\n * This matches the behavior of OTEL's propagation.inject() which uses baggage.setEntry()\n * to overwrite existing entries with the same key.\n */\nexport function mergeBaggageHeaders(\n existing: Existing,\n baggage: string,\n): string | undefined | Existing {\n if (!existing) {\n return baggage;\n }\n\n const existingBaggageEntries = parseBaggageHeader(existing);\n const newBaggageEntries = parseBaggageHeader(baggage);\n\n if (!newBaggageEntries) {\n return existing;\n }\n\n // Single pass over new entries to partition sentry vs non-sentry\n const newSentryEntries: Record = {};\n const newNonSentryEntries: Record = {};\n for (const [key, value] of Object.entries(newBaggageEntries)) {\n if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n newSentryEntries[key] = value;\n } else {\n newNonSentryEntries[key] = value;\n }\n }\n\n const hasNewSentryEntries = Object.keys(newSentryEntries).length > 0;\n\n // If new baggage contains at least one sentry- value, we remove all old sentry- values\n // otherwise, we keep old sentry- values. If we don't remove old sentry- values, we end\n // up with an inconsistent dynamic sampling context propagation.\n const mergedBaggageEntries: Record = {};\n if (existingBaggageEntries) {\n for (const [key, value] of Object.entries(existingBaggageEntries)) {\n if (hasNewSentryEntries && key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n continue;\n }\n mergedBaggageEntries[key] = value;\n }\n }\n\n // Sentry entries from new baggage always overwrite; non-sentry only if not already present\n Object.assign(mergedBaggageEntries, newSentryEntries);\n for (const [key, value] of Object.entries(newNonSentryEntries)) {\n if (!mergedBaggageEntries[key]) {\n mergedBaggageEntries[key] = value;\n }\n }\n\n return objectToBaggageHeader(mergedBaggageEntries);\n}\n","import type { LRUMap, SanitizedRequestData } from '@sentry/core';\nimport {\n addBreadcrumb,\n debug,\n getBreadcrumbLogLevelFromHttpStatusCode,\n getClient,\n getSanitizedUrlString,\n getTraceData,\n isError,\n parseUrl,\n shouldPropagateTraceForUrl,\n} from '@sentry/core';\nimport type { ClientRequest, IncomingMessage, RequestOptions } from 'http';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { mergeBaggageHeaders } from './baggage';\n\nconst LOG_PREFIX = '@sentry/instrumentation-http';\n\n/** Add a breadcrumb for outgoing requests. */\nexport function addRequestBreadcrumb(request: ClientRequest, response: IncomingMessage | undefined): void {\n const data = getBreadcrumbData(request);\n\n const statusCode = response?.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\n/**\n * Add trace propagation headers to an outgoing request.\n * This must be called _before_ the request is sent!\n */\n// eslint-disable-next-line complexity\nexport function addTracePropagationHeadersToOutgoingRequest(\n request: ClientRequest,\n propagationDecisionMap: LRUMap,\n): void {\n const url = getClientRequestUrl(request);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const headersToAdd = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!headersToAdd) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = headersToAdd;\n\n const hasExistingSentryTraceHeader = !!request.getHeader('sentry-trace');\n\n if (hasExistingSentryTraceHeader) {\n return;\n }\n\n if (sentryTrace) {\n try {\n request.setHeader('sentry-trace', sentryTrace);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added sentry-trace header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add sentry-trace header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (traceparent && !request.getHeader('traceparent')) {\n try {\n request.setHeader('traceparent', traceparent);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added traceparent header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add traceparent header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (baggage) {\n const existingBaggage = request.getHeader('baggage');\n const newBaggage = mergeBaggageHeaders(existingBaggage, baggage);\n if (newBaggage) {\n try {\n request.setHeader('baggage', newBaggage);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added baggage header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add baggage header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n }\n}\n\nfunction getBreadcrumbData(request: ClientRequest): Partial {\n try {\n // `request.host` does not contain the port, but the host header does\n const host = request.getHeader('host') || request.host;\n const url = new URL(request.path, `${request.protocol}//${host}`);\n const parsedUrl = parseUrl(url.toString());\n\n const data: Partial = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Convert an outgoing request to request options. */\nexport function getRequestOptions(request: ClientRequest): RequestOptions {\n return {\n method: request.method,\n protocol: request.protocol,\n host: request.host,\n hostname: request.host,\n path: request.path,\n headers: request.getHeaders(),\n };\n}\n\n/**\n *\n */\nexport function getClientRequestUrl(request: ClientRequest): string {\n const hostname = request.getHeader('host') || request.host;\n const protocol = request.protocol;\n const path = request.path;\n\n return `${protocol}//${hostname}${path}`;\n}\n","/* eslint-disable max-lines */\nimport type { ChannelListener } from 'node:diagnostics_channel';\nimport { subscribe, unsubscribe } from 'node:diagnostics_channel';\nimport { errorMonitor } from 'node:events';\nimport type * as http from 'node:http';\nimport type * as https from 'node:https';\nimport { context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_NETWORK_TRANSPORT,\n ATTR_URL_FULL,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n} from '@opentelemetry/semantic-conventions';\nimport type { Span, SpanAttributes, SpanStatus } from '@sentry/core';\nimport {\n debug,\n getHttpSpanDetailsFromUrlObject,\n getSpanStatusFromHttpCode,\n LRUMap,\n parseStringToURLObject,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n startInactiveSpan,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { INSTRUMENTATION_NAME } from './constants';\nimport {\n addRequestBreadcrumb,\n addTracePropagationHeadersToOutgoingRequest,\n getClientRequestUrl,\n getRequestOptions,\n} from './outgoing-requests';\n\ntype Http = typeof http;\ntype Https = typeof https;\ntype IncomingHttpHeaders = http.IncomingHttpHeaders;\ntype OutgoingHttpHeaders = http.OutgoingHttpHeaders;\n\nexport type SentryHttpInstrumentationOptions = InstrumentationConfig & {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n *\n * @default `true`\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to propagate Sentry trace headers in outgoing requests.\n * By default this is done by the HttpInstrumentation, but if that is not added (e.g. because tracing is disabled)\n * then this instrumentation can take over.\n *\n * @default `false`\n */\n propagateTraceInOutgoingRequests?: boolean;\n\n /**\n * Whether to enable the capability to create spans for outgoing requests via diagnostic channels.\n * If enabled, spans will only be created if the `spans` option is also enabled (default: true).\n *\n * This is a feature flag that should be enabled by SDKs when the runtime supports it (Node 22.12+).\n * Individual users should not need to configure this directly.\n *\n * @default `false`\n */\n createSpansForOutgoingRequests?: boolean;\n\n /**\n * Whether to create spans for outgoing requests (user preference).\n * This only takes effect if `createSpansForOutgoingRequests` is also enabled.\n * If `createSpansForOutgoingRequests` is not enabled, this option is ignored.\n *\n * @default `true`\n */\n spans?: boolean;\n\n /**\n * Do not capture breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * For the scope of this instrumentation, this callback only controls breadcrumb creation.\n * The same option can be passed to the top-level httpIntegration where it controls both, breadcrumb and\n * span creation.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * @param request Contains the {@type RequestOptions} object used to make the outgoing request.\n */\n ignoreOutgoingRequests?: (url: string, request: http.RequestOptions) => boolean;\n\n /**\n * Hooks for outgoing request spans, called when `createSpansForOutgoingRequests` is enabled.\n * These mirror the OTEL HttpInstrumentation hooks for backwards compatibility.\n */\n outgoingRequestHook?: (span: Span, request: http.ClientRequest) => void;\n outgoingResponseHook?: (span: Span, response: http.IncomingMessage) => void;\n outgoingRequestApplyCustomAttributes?: (\n span: Span,\n request: http.ClientRequest,\n response: http.IncomingMessage,\n ) => void;\n\n // All options below do not do anything anymore in this instrumentation, and will be removed in the future.\n // They are only kept here for backwards compatibility - the respective functionality is now handled by the httpServerIntegration/httpServerSpansIntegration.\n\n /**\n * @depreacted This no longer does anything.\n */\n extractIncomingTraceFromHeader?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n disableIncomingRequestSpans?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreSpansForIncomingRequests?: (urlPath: string, request: http.IncomingMessage) => boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreIncomingRequestBody?: (url: string, request: http.RequestOptions) => boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * @deprecated This no longer does anything.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: http.ClientRequest | http.IncomingMessage) => void;\n responseHook?: (span: Span, response: http.IncomingMessage | http.ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: http.ClientRequest | http.IncomingMessage,\n response: http.IncomingMessage | http.ServerResponse,\n ) => void;\n };\n\n /**\n * @deprecated This no longer does anything.\n */\n sessionFlushingDelayMS?: number;\n};\n\n/**\n * This custom HTTP instrumentation handles outgoing HTTP requests.\n *\n * It provides:\n * - Breadcrumbs for all outgoing requests\n * - Trace propagation headers (when enabled)\n * - Span creation for outgoing requests (when createSpansForOutgoingRequests is enabled)\n *\n * Span creation requires Node 22+ and uses diagnostic channels to avoid monkey-patching.\n * By default, this is only enabled in the node SDK, not in node-core or other runtime SDKs.\n *\n * Important note: Contrary to other OTEL instrumentation, this one cannot be unwrapped.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js/blob/f8ab5592ddea5cba0a3b33bf8d74f27872c0367f/experimental/packages/opentelemetry-instrumentation-http/src/http.ts\n */\nexport class SentryHttpInstrumentation extends InstrumentationBase {\n private _propagationDecisionMap: LRUMap;\n private _ignoreOutgoingRequestsMap: WeakMap;\n\n public constructor(config: SentryHttpInstrumentationOptions = {}) {\n super(INSTRUMENTATION_NAME, SDK_VERSION, config);\n\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** @inheritdoc */\n public init(): [InstrumentationNodeModuleDefinition, InstrumentationNodeModuleDefinition] {\n // We register handlers when either http or https is instrumented\n // but we only want to register them once, whichever is loaded first\n let hasRegisteredHandlers = false;\n\n const onHttpClientResponseFinish = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest; response: http.IncomingMessage };\n this._onOutgoingRequestFinish(data.request, data.response);\n }) satisfies ChannelListener;\n\n const onHttpClientRequestError = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest };\n this._onOutgoingRequestFinish(data.request, undefined);\n }) satisfies ChannelListener;\n\n const onHttpClientRequestCreated = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest };\n this._onOutgoingRequestCreated(data.request);\n }) satisfies ChannelListener;\n\n const wrap = (moduleExports: T): T => {\n if (hasRegisteredHandlers) {\n return moduleExports;\n }\n\n hasRegisteredHandlers = true;\n\n subscribe('http.client.response.finish', onHttpClientResponseFinish);\n\n // When an error happens, we still want to have a breadcrumb\n // In this case, `http.client.response.finish` is not triggered\n subscribe('http.client.request.error', onHttpClientRequestError);\n\n // NOTE: This channel only exists since Node 22.12+\n // Before that, outgoing requests are not patched\n // and trace headers are not propagated, sadly.\n if (this.getConfig().propagateTraceInOutgoingRequests || this.getConfig().createSpansForOutgoingRequests) {\n subscribe('http.client.request.created', onHttpClientRequestCreated);\n }\n return moduleExports;\n };\n\n const unwrap = (): void => {\n unsubscribe('http.client.response.finish', onHttpClientResponseFinish);\n unsubscribe('http.client.request.error', onHttpClientRequestError);\n unsubscribe('http.client.request.created', onHttpClientRequestCreated);\n };\n\n /**\n * You may be wondering why we register these diagnostics-channel listeners\n * in such a convoluted way (as InstrumentationNodeModuleDefinition...)˝,\n * instead of simply subscribing to the events once in here.\n * The reason for this is timing semantics: These functions are called once the http or https module is loaded.\n * If we'd subscribe before that, there seem to be conflicts with the OTEL native instrumentation in some scenarios,\n * especially the \"import-on-top\" pattern of setting up ESM applications.\n */\n return [\n new InstrumentationNodeModuleDefinition('http', ['*'], wrap, unwrap),\n new InstrumentationNodeModuleDefinition('https', ['*'], wrap, unwrap),\n ];\n }\n\n /**\n * Start a span for an outgoing request.\n * The span wraps the callback of the request, and ends when the response is finished.\n */\n private _startSpanForOutgoingRequest(request: http.ClientRequest): Span {\n // We monkey-patch `req.once('response'), which is used to trigger the callback of the request\n // eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation\n const originalOnce = request.once;\n\n const [name, attributes] = _getOutgoingRequestSpanData(request);\n\n const span = startInactiveSpan({\n name,\n attributes,\n onlyIfParent: true,\n });\n\n this.getConfig().outgoingRequestHook?.(span, request);\n\n const newOnce = new Proxy(originalOnce, {\n apply(target, thisArg, args: Parameters) {\n const [event] = args;\n if (event !== 'response') {\n return target.apply(thisArg, args);\n }\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n return context.with(requestContext, () => {\n return target.apply(thisArg, args);\n });\n },\n });\n\n // eslint-disable-next-line deprecation/deprecation\n request.once = newOnce;\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\n const endSpan = (status: SpanStatus): void => {\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n\n span.setStatus(status);\n span.end();\n };\n\n request.prependListener('response', response => {\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n\n context.bind(context.active(), response);\n\n const additionalAttributes = _getOutgoingRequestEndedSpanData(response);\n span.setAttributes(additionalAttributes);\n\n this.getConfig().outgoingResponseHook?.(span, response);\n this.getConfig().outgoingRequestApplyCustomAttributes?.(span, request, response);\n\n const endHandler = (forceError: boolean = false): void => {\n this._diag.debug('outgoingRequest on end()');\n\n const status =\n // eslint-disable-next-line deprecation/deprecation\n forceError || typeof response.statusCode !== 'number' || (response.aborted && !response.complete)\n ? { code: SpanStatusCode.ERROR }\n : getSpanStatusFromHttpCode(response.statusCode);\n\n endSpan(status);\n };\n\n response.on('end', () => {\n endHandler();\n });\n response.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on response error()', error);\n endHandler(true);\n });\n });\n\n // Fallback if proper response end handling above fails\n request.on('close', () => {\n endSpan({ code: SpanStatusCode.UNSET });\n });\n request.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on request error()', error);\n endSpan({ code: SpanStatusCode.ERROR });\n });\n\n return span;\n }\n\n /**\n * This is triggered when an outgoing request finishes.\n * It has access to the final request and response objects.\n */\n private _onOutgoingRequestFinish(request: http.ClientRequest, response?: http.IncomingMessage): void {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling finished outgoing request');\n\n const _breadcrumbs = this.getConfig().breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n // Note: We cannot rely on the map being set by `_onOutgoingRequestCreated`, because that is not run in Node <22\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addRequestBreadcrumb(request, response);\n }\n }\n\n /**\n * This is triggered when an outgoing request is created.\n * It creates a span (if enabled) and propagates trace headers within the span's context,\n * so downstream services link to the outgoing HTTP span rather than its parent.\n */\n private _onOutgoingRequestCreated(request: http.ClientRequest): void {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling outgoing request created');\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n const shouldCreateSpan = this.getConfig().createSpansForOutgoingRequests && (this.getConfig().spans ?? true);\n const shouldPropagate = this.getConfig().propagateTraceInOutgoingRequests;\n\n if (shouldCreateSpan) {\n const span = this._startSpanForOutgoingRequest(request);\n\n // Propagate headers within the span's context so the sentry-trace header\n // contains the outgoing span's ID, not the parent span's ID.\n // Only do this if the span is recording (has a parent) - otherwise the non-recording\n // span would produce all-zero trace IDs instead of using the scope's propagation context.\n if (shouldPropagate && span.isRecording()) {\n const requestContext = trace.setSpan(context.active(), span);\n context.with(requestContext, () => {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n });\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n private _shouldIgnoreOutgoingRequest(request: http.ClientRequest): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (!ignoreOutgoingRequests) {\n return false;\n }\n\n const options = getRequestOptions(request);\n const url = getClientRequestUrl(request);\n return ignoreOutgoingRequests(url, options);\n }\n}\n\nfunction _getOutgoingRequestSpanData(request: http.ClientRequest): [string, SpanAttributes] {\n const url = getClientRequestUrl(request);\n\n const [name, attributes] = getHttpSpanDetailsFromUrlObject(\n parseStringToURLObject(url),\n 'client',\n 'auto.http.otel.http',\n request,\n );\n\n const userAgent = request.getHeader('user-agent');\n\n return [\n name,\n {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n 'otel.kind': 'CLIENT',\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n [ATTR_URL_FULL]: url,\n 'http.url': url,\n 'http.method': request.method,\n 'http.target': request.path || '/',\n 'net.peer.name': request.host,\n 'http.host': request.getHeader('host'),\n ...attributes,\n },\n ];\n}\n\nfunction _getOutgoingRequestEndedSpanData(response: http.IncomingMessage): SpanAttributes {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n\n const transport = httpVersion.toUpperCase() !== 'QUIC' ? 'ip_tcp' : 'ip_udp';\n\n const additionalAttributes: SpanAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n [ATTR_NETWORK_PROTOCOL_VERSION]: httpVersion,\n 'http.flavor': httpVersion,\n [ATTR_NETWORK_TRANSPORT]: transport,\n 'net.transport': transport,\n ['http.status_text']: statusMessage?.toUpperCase(),\n 'http.status_code': statusCode,\n ...getResponseContentLengthAttributes(response),\n };\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n\n additionalAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n additionalAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n additionalAttributes['net.peer.ip'] = remoteAddress;\n additionalAttributes['net.peer.port'] = remotePort;\n }\n\n return additionalAttributes;\n}\n\nfunction getResponseContentLengthAttributes(response: http.IncomingMessage): SpanAttributes {\n const length = getContentLength(response.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(response.headers)) {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]: length };\n } else {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]: length };\n }\n}\n\nfunction getContentLength(headers: http.OutgoingHttpHeaders | http.IncomingHttpHeaders): number | undefined {\n const contentLengthHeader = headers['content-length'];\n if (typeof contentLengthHeader === 'number') {\n return contentLengthHeader;\n }\n if (typeof contentLengthHeader !== 'string') {\n return undefined;\n }\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) {\n return undefined;\n }\n\n return contentLength;\n}\n\nfunction isCompressed(headers: OutgoingHttpHeaders | IncomingHttpHeaders): boolean {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n","import type { IncomingMessage, RequestOptions } from 'node:http';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument';\nimport type { NodeClient } from '../../sdk/client';\nimport type { HttpServerIntegrationOptions } from './httpServerIntegration';\nimport { httpServerIntegration } from './httpServerIntegration';\nimport type { HttpServerSpansIntegrationOptions } from './httpServerSpansIntegration';\nimport { httpServerSpansIntegration } from './httpServerSpansIntegration';\nimport type { SentryHttpInstrumentationOptions } from './SentryHttpInstrumentation';\nimport { SentryHttpInstrumentation } from './SentryHttpInstrumentation';\n\nconst INTEGRATION_NAME = 'Http';\n\ninterface HttpOptions {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to create spans for requests or not.\n * As of now, creates spans for incoming requests, but not outgoing requests.\n *\n * @default `true`\n */\n spans?: boolean;\n\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing HTTP requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled).\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n *\n * The `url` param contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * For example: `'https://someService.com/users/details?id=123'`\n *\n * The `request` param contains the original {@type RequestOptions} object used to make the outgoing request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreOutgoingRequests?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n dropSpansForIncomingRequestStatusCodes?: (number | [number, number])[];\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreIncomingRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * If true, do not generate spans for incoming requests at all.\n * This is used by Remix to avoid generating spans for incoming requests, as it generates its own spans.\n */\n disableIncomingRequestSpans?: boolean;\n}\n\nexport const instrumentSentryHttp = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n options => {\n return new SentryHttpInstrumentation(options);\n },\n);\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs for outgoing HTTP requests which will be attached to the currently active span.\n */\nexport const httpIntegration = defineIntegration((options: HttpOptions = {}) => {\n const serverOptions: HttpServerIntegrationOptions = {\n sessions: options.trackIncomingRequestsAsSessions,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n ignoreRequestBody: options.ignoreIncomingRequestBody,\n maxRequestBodySize: options.maxIncomingRequestBodySize,\n };\n\n const serverSpansOptions: HttpServerSpansIntegrationOptions = {\n ignoreIncomingRequests: options.ignoreIncomingRequests,\n ignoreStaticAssets: options.ignoreStaticAssets,\n ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n };\n\n const httpInstrumentationOptions: SentryHttpInstrumentationOptions = {\n breadcrumbs: options.breadcrumbs,\n propagateTraceInOutgoingRequests: options.tracePropagation ?? true,\n ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n };\n\n const server = httpServerIntegration(serverOptions);\n const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n // In node-core, for now we disable incoming requests spans by default\n // we may revisit this in a future release\n const spans = options.spans ?? false;\n const disableIncomingRequestSpans = options.disableIncomingRequestSpans ?? false;\n const enabledServerSpans = spans && !disableIncomingRequestSpans;\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n if (enabledServerSpans) {\n serverSpans.setup(client);\n }\n },\n setupOnce() {\n server.setupOnce();\n\n instrumentSentryHttp(httpInstrumentationOptions);\n },\n\n processEvent(event) {\n // Note: We always run this, even if spans are disabled\n // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n return serverSpans.processEvent(event);\n },\n };\n});\n","import { parseSemver } from '@sentry/core';\n\nexport const NODE_VERSION = parseSemver(process.versions.node) as { major: number; minor: number; patch: number };\nexport const NODE_MAJOR = NODE_VERSION.major;\nexport const NODE_MINOR = NODE_VERSION.minor;\n","import type { LRUMap, SanitizedRequestData } from '@sentry/core';\nimport {\n addBreadcrumb,\n getBreadcrumbLogLevelFromHttpStatusCode,\n getClient,\n getSanitizedUrlString,\n getTraceData,\n parseUrl,\n shouldPropagateTraceForUrl,\n} from '@sentry/core';\nimport type { UndiciRequest, UndiciResponse } from '../integrations/node-fetch/types';\nimport { mergeBaggageHeaders } from './baggage';\nimport { debug } from '@sentry/core';\nconst SENTRY_TRACE_HEADER = 'sentry-trace';\nconst SENTRY_BAGGAGE_HEADER = 'baggage';\nconst W3C_TRACEPARENT_HEADER = 'traceparent';\n/**\n * Add trace propagation headers to an outgoing fetch/undici request.\n *\n * Checks if the request URL matches trace propagation targets,\n * then injects sentry-trace, traceparent, and baggage headers.\n */\n// eslint-disable-next-line complexity\nexport function addTracePropagationHeadersToFetchRequest(\n request: UndiciRequest,\n propagationDecisionMap: LRUMap,\n): void {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Manually add the trace headers, if it applies\n // Note: We do not use `propagation.inject()` here, because our propagator relies on an active span\n // Which we do not have in this case\n // The propagator _may_ overwrite this, but this should be fine as it is the same data\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const addedHeaders = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!addedHeaders) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = addedHeaders;\n\n const requestHeaders = Array.isArray(request.headers) ? request.headers : stringToArrayHeaders(request.headers);\n\n // OTel's UndiciInstrumentation calls propagation.inject() which unconditionally\n // appends headers to the request. When the user also sets headers via getTraceData(),\n // this results in duplicate sentry-trace and baggage (and optionally traceparent) entries.\n // We clean these up before applying our own logic.\n _deduplicateArrayHeader(requestHeaders, SENTRY_TRACE_HEADER);\n _deduplicateArrayHeader(requestHeaders, SENTRY_BAGGAGE_HEADER);\n if (propagateTraceparent) {\n _deduplicateArrayHeader(requestHeaders, W3C_TRACEPARENT_HEADER);\n }\n\n // We do not want to overwrite existing headers here\n // If the core UndiciInstrumentation is registered, it will already have set the headers\n // We do not want to add any then\n const hasExistingSentryTraceHeader = _findExistingHeaderIndex(requestHeaders, SENTRY_TRACE_HEADER) !== -1;\n\n // We do not want to set any headers if we already have an existing sentry-trace header.\n // sentry-trace is still the source of truth, otherwise we risk mixing up baggage and sentry-trace values.\n if (!hasExistingSentryTraceHeader) {\n if (sentryTrace) {\n requestHeaders.push(SENTRY_TRACE_HEADER, sentryTrace);\n }\n\n if (traceparent && _findExistingHeaderIndex(requestHeaders, 'traceparent') === -1) {\n requestHeaders.push('traceparent', traceparent);\n }\n\n // For baggage, we make sure to merge this into a possibly existing header\n const existingBaggageIndex = _findExistingHeaderIndex(requestHeaders, SENTRY_BAGGAGE_HEADER);\n if (baggage && existingBaggageIndex === -1) {\n requestHeaders.push(SENTRY_BAGGAGE_HEADER, baggage);\n } else if (baggage) {\n // headers in format [key_0, value_0, key_1, value_1, ...], hence the +1 here\n const existingBaggageValue = requestHeaders[existingBaggageIndex + 1];\n const merged = mergeBaggageHeaders(existingBaggageValue, baggage);\n if (merged) {\n requestHeaders[existingBaggageIndex + 1] = merged;\n }\n }\n }\n\n if (!Array.isArray(request.headers)) {\n // For original string request headers, we need to write them back to the request\n request.headers = arrayToStringHeaders(requestHeaders);\n }\n}\n\nfunction stringToArrayHeaders(requestHeaders: string): string[] {\n const headersArray = requestHeaders.split('\\r\\n');\n const headers: string[] = [];\n for (const header of headersArray) {\n try {\n const colonIndex = header.indexOf(':');\n if (colonIndex === -1) {\n continue;\n }\n const key = header.slice(0, colonIndex).trim();\n const value = header.slice(colonIndex + 1).trim();\n if (key) {\n headers.push(key, value);\n }\n } catch {\n debug.warn(`Failed to convert string request header to array header: ${header}`);\n }\n }\n return headers;\n}\n\nfunction arrayToStringHeaders(headers: string[]): string {\n const headerPairs: string[] = [];\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i];\n const value = headers[i + 1];\n if (!key || value == null) {\n // skip falsy keys but only null/undefined values\n continue;\n }\n headerPairs.push(`${key}: ${value}`);\n }\n\n if (!headerPairs.length) {\n return '';\n }\n\n return headerPairs.join('\\r\\n').concat('\\r\\n');\n}\n\n/**\n * For a given header name, if there are multiple entries in the [key, value, key, value, ...] array,\n * keep the first entry and remove the rest.\n * For baggage, values are merged to preserve all entries but to dedupe sentry- values, and always\n * keep the first occurrence of them\n */\nfunction _deduplicateArrayHeader(headers: string[], headerName: string): void {\n let firstIndex = -1;\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i] !== headerName) {\n continue;\n }\n\n if (firstIndex === -1) {\n firstIndex = i;\n continue;\n }\n\n const firstHeaderValue = headers[firstIndex + 1];\n if (headerName === SENTRY_BAGGAGE_HEADER && firstHeaderValue) {\n // mergeBaggageHeaders always takes sentry- values from the new baggage (2nd param) and merges\n // it with the existing one (1st param). Here, we want to keep the first header's existing\n // sentry- values in favor of the new ones. Hence we swap the parameters.\n const merged = mergeBaggageHeaders(headers[i + 1], firstHeaderValue);\n if (merged) {\n headers[firstIndex + 1] = merged;\n }\n }\n headers.splice(i, 2);\n i -= 2;\n }\n}\n\n/**\n * Find the index of an existing header in an array of headers.\n * Only take even indices, because headers are in format [key_0, value_0, key_1, value_1, ...]\n * otherwise we could match a header _value_ with @param name\n */\nfunction _findExistingHeaderIndex(headers: string[], name: string): number {\n return headers.findIndex((header, i) => i % 2 === 0 && header === name);\n}\n\n/** Add a breadcrumb for an outgoing fetch/undici request. */\nexport function addFetchRequestBreadcrumb(request: UndiciRequest, response: UndiciResponse): void {\n const data = getBreadcrumbData(request);\n\n const statusCode = response.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\nfunction getBreadcrumbData(request: UndiciRequest): Partial {\n try {\n const url = getAbsoluteUrl(request.origin, request.path);\n const parsedUrl = parseUrl(url);\n\n const data: Partial = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Get the absolute URL from an origin and path. */\nexport function getAbsoluteUrl(origin: string, path: string = '/'): string {\n try {\n const url = new URL(path, origin);\n return url.toString();\n } catch {\n // fallback: Construct it on our own\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n }\n}\n","import { context } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport { LRUMap, SDK_VERSION } from '@sentry/core';\nimport * as diagch from 'diagnostics_channel';\nimport { NODE_MAJOR, NODE_MINOR } from '../../nodeVersion';\nimport {\n addFetchRequestBreadcrumb,\n addTracePropagationHeadersToFetchRequest,\n getAbsoluteUrl,\n} from '../../utils/outgoingFetchRequest';\nimport type { UndiciRequest, UndiciResponse } from './types';\n\nexport type SentryNodeFetchInstrumentationOptions = InstrumentationConfig & {\n /**\n * Whether breadcrumbs should be recorded for requests.\n *\n * @default `true`\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's UndiciInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture breadcrumbs or inject headers for outgoing fetch requests to URLs where the given callback returns `true`.\n * The same option can be passed to the top-level httpIntegration where it controls both, breadcrumb and\n * span creation.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n};\n\ninterface ListenerRecord {\n name: string;\n unsubscribe: () => void;\n}\n\n/**\n * This custom node-fetch instrumentation is used to instrument outgoing fetch requests.\n * It does not emit any spans.\n *\n * The reason this is isolated from the OpenTelemetry instrumentation is that users may overwrite this,\n * which would lead to Sentry not working as expected.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js-contrib/blob/28e209a9da36bc4e1f8c2b0db7360170ed46cb80/plugins/node/instrumentation-undici/src/undici.ts\n */\nexport class SentryNodeFetchInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n private _channelSubs: Array;\n private _propagationDecisionMap: LRUMap;\n private _ignoreOutgoingRequestsMap: WeakMap;\n\n public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {\n super('@sentry/instrumentation-node-fetch', SDK_VERSION, config);\n this._channelSubs = [];\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** No need to instrument files/modules. */\n public init(): void {\n return undefined;\n }\n\n /** Disable the instrumentation. */\n public disable(): void {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs = [];\n }\n\n /** Enable the instrumentation. */\n public enable(): void {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n\n this._subscribeToChannel('undici:request:create', this._onRequestCreated.bind(this));\n this._subscribeToChannel('undici:request:headers', this._onResponseHeaders.bind(this));\n }\n\n /**\n * This method is called when a request is created.\n * You can still mutate the request here before it is sent.\n */\n private _onRequestCreated({ request }: { request: UndiciRequest }): void {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const shouldIgnore = this._shouldIgnoreOutgoingRequest(request);\n // We store this decisision for later so we do not need to re-evaluate it\n // Additionally, the active context is not correct in _onResponseHeaders, so we need to make sure it is evaluated here\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n if (config.tracePropagation !== false) {\n addTracePropagationHeadersToFetchRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * This method is called when a response is received.\n */\n private _onResponseHeaders({ request, response }: { request: UndiciRequest; response: UndiciResponse }): void {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const _breadcrumbs = config.breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addFetchRequestBreadcrumb(request, response);\n }\n }\n\n /** Subscribe to a diagnostics channel. */\n private _subscribeToChannel(\n diagnosticChannel: string,\n onMessage: (message: unknown, name: string | symbol) => void,\n ): void {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const useNewSubscribe = NODE_MAJOR > 18 || (NODE_MAJOR === 18 && NODE_MINOR >= 19);\n\n let unsubscribe: () => void;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n } else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n private _shouldIgnoreOutgoingRequest(request: UndiciRequest): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // Add trace propagation headers\n const url = getAbsoluteUrl(request.origin, request.path);\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (typeof ignoreOutgoingRequests !== 'function' || !url) {\n return false;\n }\n\n return ignoreOutgoingRequests(url);\n }\n}\n","import type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument';\nimport { SentryNodeFetchInstrumentation } from './SentryNodeFetchInstrumentation';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\ninterface NodeFetchOptions {\n /**\n * Whether breadcrumbs should be recorded for requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing fetch requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n}\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options: NodeFetchOptions) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options: NodeFetchOptions = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n instrumentSentryNodeFetch(options);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ContextManager, Context } from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\n\ntype Func = (...args: unknown[]) => T;\n\n/**\n * Store a map for each event of all original listeners and their \"patched\"\n * version. So when a listener is removed by the user, the corresponding\n * patched function will be also removed.\n */\ninterface PatchMap {\n [name: string]: WeakMap, Func>;\n}\n\nconst ADD_LISTENER_METHODS = [\n 'addListener' as const,\n 'on' as const,\n 'once' as const,\n 'prependListener' as const,\n 'prependOnceListener' as const,\n];\n\nexport abstract class AbstractAsyncHooksContextManager\n implements ContextManager\n{\n abstract active(): Context;\n\n abstract with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType;\n\n abstract enable(): this;\n\n abstract disable(): this;\n\n /**\n * Binds a the certain context or the active one to the target function and then returns the target\n * @param context A context (span) to be bind to target\n * @param target a function or event emitter. When target or one of its callbacks is called,\n * the provided context will be used as the active context for the duration of the call.\n */\n bind(context: Context, target: T): T {\n if (target instanceof EventEmitter) {\n return this._bindEventEmitter(context, target);\n }\n\n if (typeof target === 'function') {\n return this._bindFunction(context, target);\n }\n return target;\n }\n\n private _bindFunction(context: Context, target: T): T {\n const manager = this;\n const contextWrapper = function (this: never, ...args: unknown[]) {\n return manager.with(context, () => target.apply(this, args));\n };\n Object.defineProperty(contextWrapper, 'length', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: target.length,\n });\n /**\n * It isn't possible to tell Typescript that contextWrapper is the same as T\n * so we forced to cast as any here.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return contextWrapper as any;\n }\n\n /**\n * By default, EventEmitter call their callback with their context, which we do\n * not want, instead we will bind a specific context to all callbacks that\n * go through it.\n * @param context the context we want to bind\n * @param ee EventEmitter an instance of EventEmitter to patch\n */\n private _bindEventEmitter(\n context: Context,\n ee: T\n ): T {\n const map = this._getPatchMap(ee);\n if (map !== undefined) return ee;\n this._createPatchMap(ee);\n\n // patch methods that add a listener to propagate context\n ADD_LISTENER_METHODS.forEach(methodName => {\n if (ee[methodName] === undefined) return;\n ee[methodName] = this._patchAddListener(ee, ee[methodName], context);\n });\n // patch methods that remove a listener\n if (typeof ee.removeListener === 'function') {\n ee.removeListener = this._patchRemoveListener(ee, ee.removeListener);\n }\n if (typeof ee.off === 'function') {\n ee.off = this._patchRemoveListener(ee, ee.off);\n }\n // patch method that remove all listeners\n if (typeof ee.removeAllListeners === 'function') {\n ee.removeAllListeners = this._patchRemoveAllListeners(\n ee,\n ee.removeAllListeners\n );\n }\n return ee;\n }\n\n /**\n * Patch methods that remove a given listener so that we match the \"patched\"\n * version of that listener (the one that propagate context).\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n private _patchRemoveListener(ee: EventEmitter, original: Function) {\n const contextManager = this;\n return function (this: never, event: string, listener: Func) {\n const events = contextManager._getPatchMap(ee)?.[event];\n if (events === undefined) {\n return original.call(this, event, listener);\n }\n const patchedListener = events.get(listener);\n return original.call(this, event, patchedListener || listener);\n };\n }\n\n /**\n * Patch methods that remove all listeners so we remove our\n * internal references for a given event.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n private _patchRemoveAllListeners(ee: EventEmitter, original: Function) {\n const contextManager = this;\n return function (this: never, event: string) {\n const map = contextManager._getPatchMap(ee);\n if (map !== undefined) {\n if (arguments.length === 0) {\n contextManager._createPatchMap(ee);\n } else if (map[event] !== undefined) {\n delete map[event];\n }\n }\n return original.apply(this, arguments);\n };\n }\n\n /**\n * Patch methods on an event emitter instance that can add listeners so we\n * can force them to propagate a given context.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n * @param [context] context to propagate when calling listeners\n */\n private _patchAddListener(\n ee: EventEmitter,\n original: Function,\n context: Context\n ) {\n const contextManager = this;\n return function (this: never, event: string, listener: Func) {\n /**\n * This check is required to prevent double-wrapping the listener.\n * The implementation for ee.once wraps the listener and calls ee.on.\n * Without this check, we would wrap that wrapped listener.\n * This causes an issue because ee.removeListener depends on the onceWrapper\n * to properly remove the listener. If we wrap their wrapper, we break\n * that detection.\n */\n if (contextManager._wrapped) {\n return original.call(this, event, listener);\n }\n let map = contextManager._getPatchMap(ee);\n if (map === undefined) {\n map = contextManager._createPatchMap(ee);\n }\n let listeners = map[event];\n if (listeners === undefined) {\n listeners = new WeakMap();\n map[event] = listeners;\n }\n const patchedListener = contextManager.bind(context, listener);\n // store a weak reference of the user listener to ours\n listeners.set(listener, patchedListener);\n\n /**\n * See comment at the start of this function for the explanation of this property.\n */\n contextManager._wrapped = true;\n try {\n return original.call(this, event, patchedListener);\n } finally {\n contextManager._wrapped = false;\n }\n };\n }\n\n private _createPatchMap(ee: EventEmitter): PatchMap {\n const map = Object.create(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (ee as any)[this._kOtListeners] = map;\n return map;\n }\n private _getPatchMap(ee: EventEmitter): PatchMap | undefined {\n return (ee as never)[this._kOtListeners];\n }\n\n private readonly _kOtListeners = Symbol('OtListeners');\n private _wrapped = false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT } from '@opentelemetry/api';\nimport * as asyncHooks from 'async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager';\n\n/**\n * @deprecated Use AsyncLocalStorageContextManager instead.\n */\nexport class AsyncHooksContextManager extends AbstractAsyncHooksContextManager {\n private _asyncHook: asyncHooks.AsyncHook;\n private _contexts: Map = new Map();\n private _stack: Array = [];\n\n constructor() {\n super();\n this._asyncHook = asyncHooks.createHook({\n init: this._init.bind(this),\n before: this._before.bind(this),\n after: this._after.bind(this),\n destroy: this._destroy.bind(this),\n promiseResolve: this._destroy.bind(this),\n });\n }\n\n active(): Context {\n return this._stack[this._stack.length - 1] ?? ROOT_CONTEXT;\n }\n\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n this._enterContext(context);\n try {\n return fn.call(thisArg!, ...args);\n } finally {\n this._exitContext();\n }\n }\n\n enable(): this {\n this._asyncHook.enable();\n return this;\n }\n\n disable(): this {\n this._asyncHook.disable();\n this._contexts.clear();\n this._stack = [];\n return this;\n }\n\n /**\n * Init hook will be called when userland create a async context, setting the\n * context as the current one if it exist.\n * @param uid id of the async context\n * @param type the resource type\n */\n private _init(uid: number, type: string) {\n // ignore TIMERWRAP as they combine timers with same timeout which can lead to\n // false context propagation. TIMERWRAP has been removed in node 11\n // every timer has it's own `Timeout` resource anyway which is used to propagate\n // context.\n if (type === 'TIMERWRAP') return;\n\n const context = this._stack[this._stack.length - 1];\n if (context !== undefined) {\n this._contexts.set(uid, context);\n }\n }\n\n /**\n * Destroy hook will be called when a given context is no longer used so we can\n * remove its attached context.\n * @param uid uid of the async context\n */\n private _destroy(uid: number) {\n this._contexts.delete(uid);\n }\n\n /**\n * Before hook is called just before executing a async context.\n * @param uid uid of the async context\n */\n private _before(uid: number) {\n const context = this._contexts.get(uid);\n if (context !== undefined) {\n this._enterContext(context);\n }\n }\n\n /**\n * After hook is called just after completing the execution of a async context.\n */\n private _after() {\n this._exitContext();\n }\n\n /**\n * Set the given context as active\n */\n private _enterContext(context: Context) {\n this._stack.push(context);\n }\n\n /**\n * Remove the context at the root of the stack\n */\n private _exitContext() {\n this._stack.pop();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT } from '@opentelemetry/api';\nimport { AsyncLocalStorage } from 'async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager';\n\nexport class AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager {\n private _asyncLocalStorage: AsyncLocalStorage;\n\n constructor() {\n super();\n this._asyncLocalStorage = new AsyncLocalStorage();\n }\n\n active(): Context {\n return this._asyncLocalStorage.getStore() ?? ROOT_CONTEXT;\n }\n\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const cb = thisArg == null ? fn : fn.bind(thisArg);\n return this._asyncLocalStorage.run(context, cb as never, ...args);\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n this._asyncLocalStorage.disable();\n return this;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { AsyncHooksContextManager } from './AsyncHooksContextManager';\nexport { AsyncLocalStorageContextManager } from './AsyncLocalStorageContextManager';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes, AttributeValue } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport { SDK_INFO } from '@opentelemetry/core';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport type { Resource } from './Resource';\nimport { defaultServiceName } from './default-service-name';\nimport type {\n DetectedResource,\n DetectedResourceAttributes,\n MaybePromise,\n RawResourceAttribute,\n ResourceOptions,\n} from './types';\nimport { isPromiseLike } from './utils';\n\nclass ResourceImpl implements Resource {\n private _rawAttributes: RawResourceAttribute[];\n private _asyncAttributesPending = false;\n private _schemaUrl?: string;\n\n private _memoizedAttributes?: Attributes;\n\n static FromAttributeList(\n attributes: [string, MaybePromise][],\n options?: ResourceOptions\n ): Resource {\n const res = new ResourceImpl({}, options);\n res._rawAttributes = guardedRawAttributes(attributes);\n res._asyncAttributesPending =\n attributes.filter(([_, val]) => isPromiseLike(val)).length > 0;\n return res;\n }\n\n constructor(\n /**\n * A dictionary of attributes with string keys and values that provide\n * information about the entity as numbers, strings or booleans\n * TODO: Consider to add check/validation on attributes.\n */\n resource: DetectedResource,\n options?: ResourceOptions\n ) {\n const attributes = resource.attributes ?? {};\n this._rawAttributes = Object.entries(attributes).map(([k, v]) => {\n if (isPromiseLike(v)) {\n // side-effect\n this._asyncAttributesPending = true;\n }\n\n return [k, v];\n });\n\n this._rawAttributes = guardedRawAttributes(this._rawAttributes);\n this._schemaUrl = validateSchemaUrl(options?.schemaUrl);\n }\n\n public get asyncAttributesPending(): boolean {\n return this._asyncAttributesPending;\n }\n\n public async waitForAsyncAttributes(): Promise {\n if (!this.asyncAttributesPending) {\n return;\n }\n\n for (let i = 0; i < this._rawAttributes.length; i++) {\n const [k, v] = this._rawAttributes[i];\n this._rawAttributes[i] = [k, isPromiseLike(v) ? await v : v];\n }\n\n this._asyncAttributesPending = false;\n }\n\n public get attributes(): Attributes {\n if (this.asyncAttributesPending) {\n diag.error(\n 'Accessing resource attributes before async attributes settled'\n );\n }\n\n if (this._memoizedAttributes) {\n return this._memoizedAttributes;\n }\n\n const attrs: Attributes = {};\n for (const [k, v] of this._rawAttributes) {\n if (isPromiseLike(v)) {\n diag.debug(`Unsettled resource attribute ${k} skipped`);\n continue;\n }\n if (v != null) {\n attrs[k] ??= v;\n }\n }\n\n // only memoize output if all attributes are settled\n if (!this._asyncAttributesPending) {\n this._memoizedAttributes = attrs;\n }\n\n return attrs;\n }\n\n public getRawAttributes(): RawResourceAttribute[] {\n return this._rawAttributes;\n }\n\n public get schemaUrl(): string | undefined {\n return this._schemaUrl;\n }\n\n public merge(resource: Resource | null): Resource {\n if (resource == null) return this;\n\n // Order is important\n // Spec states incoming attributes override existing attributes\n const mergedSchemaUrl = mergeSchemaUrl(this, resource);\n const mergedOptions: ResourceOptions | undefined = mergedSchemaUrl\n ? { schemaUrl: mergedSchemaUrl }\n : undefined;\n\n return ResourceImpl.FromAttributeList(\n [...resource.getRawAttributes(), ...this.getRawAttributes()],\n mergedOptions\n );\n }\n}\n\nexport function resourceFromAttributes(\n attributes: DetectedResourceAttributes,\n options?: ResourceOptions\n): Resource {\n return ResourceImpl.FromAttributeList(Object.entries(attributes), options);\n}\n\nexport function resourceFromDetectedResource(\n detectedResource: DetectedResource,\n options?: ResourceOptions\n): Resource {\n return new ResourceImpl(detectedResource, options);\n}\n\nexport function emptyResource(): Resource {\n return resourceFromAttributes({});\n}\n\nexport function defaultResource(): Resource {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: defaultServiceName(),\n [ATTR_TELEMETRY_SDK_LANGUAGE]: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE],\n [ATTR_TELEMETRY_SDK_NAME]: SDK_INFO[ATTR_TELEMETRY_SDK_NAME],\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION],\n });\n}\n\nfunction guardedRawAttributes(\n attributes: RawResourceAttribute[]\n): RawResourceAttribute[] {\n return attributes.map(([k, v]) => {\n if (isPromiseLike(v)) {\n return [\n k,\n v.catch(err => {\n diag.debug(\n 'promise rejection for resource attribute: %s - %s',\n k,\n err\n );\n return undefined;\n }),\n ];\n }\n return [k, v];\n });\n}\n\nfunction validateSchemaUrl(schemaUrl?: string): string | undefined {\n if (typeof schemaUrl === 'string' || schemaUrl === undefined) {\n return schemaUrl;\n }\n\n diag.warn(\n 'Schema URL must be string or undefined, got %s. Schema URL will be ignored.',\n schemaUrl\n );\n\n return undefined;\n}\n\nfunction mergeSchemaUrl(\n old: Resource,\n updating: Resource | null\n): string | undefined {\n const oldSchemaUrl = old?.schemaUrl;\n const updatingSchemaUrl = updating?.schemaUrl;\n\n const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === '';\n const isUpdatingEmpty =\n updatingSchemaUrl === undefined || updatingSchemaUrl === '';\n\n if (isOldEmpty) {\n return updatingSchemaUrl;\n }\n\n if (isUpdatingEmpty) {\n return oldSchemaUrl;\n }\n\n if (oldSchemaUrl === updatingSchemaUrl) {\n return oldSchemaUrl;\n }\n\n diag.warn(\n 'Schema URL merge conflict: old resource has \"%s\", updating resource has \"%s\". Resulting resource will have undefined Schema URL.',\n oldSchemaUrl,\n updatingSchemaUrl\n );\n\n return undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nlet serviceName: string | undefined;\n\n/**\n * Returns the default service name for OpenTelemetry resources.\n * In Node.js environments, returns \"unknown_service:\".\n * In browser/edge environments, returns \"unknown_service\".\n */\nexport function defaultServiceName(): string {\n if (serviceName === undefined) {\n try {\n const argv0 = globalThis.process.argv0;\n serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service';\n } catch {\n serviceName = 'unknown_service';\n }\n }\n return serviceName;\n}\n\n/** @internal For testing purposes only */\nexport function _clearDefaultServiceNameCache(): void {\n serviceName = undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const isPromiseLike = (val: unknown): val is PromiseLike => {\n return (\n val !== null &&\n typeof val === 'object' &&\n typeof (val as Partial>).then === 'function'\n );\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n}\n\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes: number): () => string {\n return function generateId() {\n for (let i = 0; i < bytes / 4; i++) {\n // unsigned right shift drops decimal part of the number\n // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n }\n\n // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n for (let i = 0; i < bytes; i++) {\n if (SHARED_BUFFER[i] > 0) {\n break;\n } else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanExporter } from './SpanExporter';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { ExportResultCode, hrTimeToMicroseconds } from '@opentelemetry/core';\n\n/**\n * This is implementation of {@link SpanExporter} that prints spans to the\n * console. This class can be used for diagnostic purposes.\n *\n * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time.\n */\n\n/* eslint-disable no-console */\nexport class ConsoleSpanExporter implements SpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n return this._sendSpans(spans, resultCallback);\n }\n\n /**\n * Shutdown the exporter.\n */\n shutdown(): Promise {\n this._sendSpans([]);\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n /**\n * converts span info into more readable format\n * @param span\n */\n private _exportInfo(span: ReadableSpan) {\n return {\n resource: {\n attributes: span.resource.attributes,\n },\n instrumentationScope: span.instrumentationScope,\n traceId: span.spanContext().traceId,\n parentSpanContext: span.parentSpanContext,\n traceState: span.spanContext().traceState?.serialize(),\n name: span.name,\n id: span.spanContext().spanId,\n kind: span.kind,\n timestamp: hrTimeToMicroseconds(span.startTime),\n duration: hrTimeToMicroseconds(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n private _sendSpans(\n spans: ReadableSpan[],\n done?: (result: ExportResult) => void\n ): void {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: ExportResultCode.SUCCESS });\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { getNumberFromEnv, getStringFromEnv } from '@opentelemetry/core';\nimport type { Sampler } from './Sampler';\nimport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nimport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nimport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nimport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\n\nconst enum TracesSamplerValues {\n AlwaysOff = 'always_off',\n AlwaysOn = 'always_on',\n ParentBasedAlwaysOff = 'parentbased_always_off',\n ParentBasedAlwaysOn = 'parentbased_always_on',\n ParentBasedTraceIdRatio = 'parentbased_traceidratio',\n TraceIdRatio = 'traceidratio',\n}\n\nconst DEFAULT_RATIO = 1;\n\n/**\n * Load default configuration. For fields with primitive values, any user-provided\n * value will override the corresponding default value. For fields with\n * non-primitive values (like `spanLimits`), the user-provided value will be\n * used to extend the default value.\n */\n\n// object needs to be wrapped in this function and called when needed otherwise\n// envs are parsed before tests are ran - causes tests using these envs to fail\nexport function loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n },\n spanLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n linkCountLimit: getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128,\n eventCountLimit: getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128,\n attributePerEventCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128,\n attributePerLinkCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128,\n },\n };\n}\n\n/**\n * Based on environment, builds a sampler, complies with specification.\n */\nexport function buildSamplerFromEnv(): Sampler {\n const sampler =\n getStringFromEnv('OTEL_TRACES_SAMPLER') ??\n TracesSamplerValues.ParentBasedAlwaysOn;\n switch (sampler) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler({\n root: new AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler({\n root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()),\n });\n default:\n diag.error(\n `OTEL_TRACES_SAMPLER value \"${sampler}\" invalid, defaulting to \"${TracesSamplerValues.ParentBasedAlwaysOn}\".`\n );\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n }\n}\n\nfunction getSamplerProbabilityFromEnv(): number | undefined {\n const probability = getNumberFromEnv('OTEL_TRACES_SAMPLER_ARG');\n if (probability == null) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n if (probability < 0 || probability > 1) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n return probability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api';\nimport { merge } from '@opentelemetry/core';\nimport type { Resource } from '@opentelemetry/resources';\nimport { defaultResource } from '@opentelemetry/resources';\nimport type { SpanProcessor } from './SpanProcessor';\nimport { Tracer } from './Tracer';\nimport { loadDefaultConfig } from './config';\nimport { MultiSpanProcessor } from './MultiSpanProcessor';\nimport type { TracerConfig } from './types';\nimport { reconfigureLimits } from './utility';\n\nexport enum ForceFlushState {\n 'resolved',\n 'timeout',\n 'error',\n 'unresolved',\n}\n\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nexport class BasicTracerProvider implements TracerProvider {\n private readonly _config: TracerConfig;\n private readonly _tracers: Map = new Map();\n private readonly _resource: Resource;\n private readonly _activeSpanProcessor: MultiSpanProcessor;\n\n constructor(config: TracerConfig = {}) {\n const mergedConfig = merge(\n {},\n loadDefaultConfig(),\n reconfigureLimits(config)\n );\n this._resource = mergedConfig.resource ?? defaultResource();\n\n this._config = Object.assign({}, mergedConfig, {\n resource: this._resource,\n });\n\n const spanProcessors: SpanProcessor[] = [];\n\n if (config.spanProcessors?.length) {\n spanProcessors.push(...config.spanProcessors);\n }\n\n this._activeSpanProcessor = new MultiSpanProcessor(spanProcessors);\n }\n\n getTracer(\n name: string,\n version?: string,\n options?: { schemaUrl?: string }\n ): ApiTracer {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(\n key,\n new Tracer(\n { name, version, schemaUrl: options?.schemaUrl },\n this._config,\n this._resource,\n this._activeSpanProcessor\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key)!;\n }\n\n forceFlush(): Promise {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._activeSpanProcessor['_spanProcessors'].map(\n (spanProcessor: SpanProcessor) => {\n return new Promise(resolve => {\n let state: ForceFlushState;\n const timeoutInterval = setTimeout(() => {\n resolve(\n new Error(\n `Span processor did not completed within timeout period of ${timeout} ms`\n )\n );\n state = ForceFlushState.timeout;\n }, timeout);\n\n spanProcessor\n .forceFlush()\n .then(() => {\n clearTimeout(timeoutInterval);\n if (state !== ForceFlushState.timeout) {\n state = ForceFlushState.resolved;\n resolve(state);\n }\n })\n .catch(error => {\n clearTimeout(timeoutInterval);\n state = ForceFlushState.error;\n resolve(error);\n });\n });\n }\n );\n\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(\n result => result !== ForceFlushState.resolved\n );\n if (errors.length > 0) {\n reject(errors);\n } else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n\n shutdown(): Promise {\n return this._activeSpanProcessor.shutdown();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples no traces. */\nexport class AlwaysOffSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return 'AlwaysOffSampler';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { context, diag, TraceFlags } from '@opentelemetry/api';\nimport {\n BindOnceFuture,\n ExportResultCode,\n getNumberFromEnv,\n globalErrorHandler,\n suppressTracing,\n} from '@opentelemetry/core';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\nimport type { BufferConfig } from '../types';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { SpanExporter } from './SpanExporter';\n\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nexport abstract class BatchSpanProcessorBase\n implements SpanProcessor\n{\n private readonly _maxExportBatchSize: number;\n private readonly _maxQueueSize: number;\n private readonly _scheduledDelayMillis: number;\n private readonly _exportTimeoutMillis: number;\n private readonly _exporter: SpanExporter;\n\n private _isExporting = false;\n private _finishedSpans: ReadableSpan[] = [];\n private _timer: NodeJS.Timeout | number | undefined;\n private _shutdownOnce: BindOnceFuture;\n private _droppedSpansCount: number = 0;\n\n constructor(exporter: SpanExporter, config?: T) {\n this._exporter = exporter;\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : (getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512);\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : (getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048);\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : (getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000);\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : (getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000);\n\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n\n if (this._maxExportBatchSize > this._maxQueueSize) {\n diag.warn(\n 'BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize'\n );\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n\n forceFlush(): Promise {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n\n // does nothing.\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n this._addToBuffer(span);\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown() {\n return Promise.resolve()\n .then(() => {\n return this.onShutdown();\n })\n .then(() => {\n return this._flushAll();\n })\n .then(() => {\n return this._exporter.shutdown();\n });\n }\n\n /** Add a span in the buffer. */\n private _addToBuffer(span: ReadableSpan) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n\n if (this._droppedSpansCount === 0) {\n diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n\n return;\n }\n\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n diag.warn(\n `Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`\n );\n this._droppedSpansCount = 0;\n }\n\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\n\n /**\n * Send all spans to the exporter respecting the batch size limit\n * This function is used only on forceFlush or shutdown,\n * for all other cases _flush should be used\n * */\n private _flushAll(): Promise {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(\n this._finishedSpans.length / this._maxExportBatchSize\n );\n for (let i = 0, j = count; i < j; i++) {\n promises.push(this._flushOneBatch());\n }\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n\n private _flushOneBatch(): Promise {\n this._clearTimer();\n if (this._finishedSpans.length === 0) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n // don't wait anymore for export, this way the next batch can start\n reject(new Error('Timeout'));\n }, this._exportTimeoutMillis);\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n // Reset the finished spans buffer here because the next invocations of the _flush method\n // could pass the same finished spans to the exporter if the buffer is cleared\n // outside the execution of this callback.\n let spans: ReadableSpan[];\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n } else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n\n const doExport = () =>\n this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === ExportResultCode.SUCCESS) {\n resolve();\n } else {\n reject(\n result.error ??\n new Error('BatchSpanProcessor: span export failed')\n );\n }\n });\n\n let pendingResources: Array> | null = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (\n span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes\n ) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n } else {\n Promise.all(pendingResources).then(doExport, err => {\n globalErrorHandler(err);\n reject(err);\n });\n }\n });\n });\n }\n\n private _maybeStartTimer() {\n if (this._isExporting) return;\n const flush = () => {\n this._isExporting = true;\n this._flushOneBatch()\n .finally(() => {\n this._isExporting = false;\n if (this._finishedSpans.length > 0) {\n this._clearTimer();\n this._maybeStartTimer();\n }\n })\n .catch(e => {\n this._isExporting = false;\n globalErrorHandler(e);\n });\n };\n // we only wait if the queue doesn't have enough elements yet\n if (this._finishedSpans.length >= this._maxExportBatchSize) {\n return flush();\n }\n if (this._timer !== undefined) return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n\n // depending on runtime, this may be a 'number' or NodeJS.Timeout\n if (typeof this._timer !== 'number') {\n this._timer.unref();\n }\n }\n\n private _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n\n protected abstract onShutdown(): void;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context, Link, Attributes, SpanKind } from '@opentelemetry/api';\nimport { isSpanContextValid, TraceFlags, trace } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { AlwaysOffSampler } from './AlwaysOffSampler';\nimport { AlwaysOnSampler } from './AlwaysOnSampler';\nimport type { Sampler, SamplingResult } from '../Sampler';\n\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nexport class ParentBasedSampler implements Sampler {\n private _root: Sampler;\n private _remoteParentSampled: Sampler;\n private _remoteParentNotSampled: Sampler;\n private _localParentSampled: Sampler;\n private _localParentNotSampled: Sampler;\n\n constructor(config: ParentBasedSamplerConfig) {\n this._root = config.root;\n\n if (!this._root) {\n globalErrorHandler(\n new Error('ParentBasedSampler must have a root sampler configured')\n );\n this._root = new AlwaysOnSampler();\n }\n\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler();\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult {\n const parentContext = trace.getSpanContext(context);\n\n if (!parentContext || !isSpanContextValid(parentContext)) {\n return this._root.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n return this._remoteParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n return this._localParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n toString(): string {\n return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n }\n}\n\ninterface ParentBasedSamplerConfig {\n /** Sampler called for spans with no parent */\n root: Sampler;\n /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */\n remoteParentSampled?: Sampler;\n /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */\n remoteParentNotSampled?: Sampler;\n /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */\n localParentSampled?: Sampler;\n /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */\n localParentNotSampled?: Sampler;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { buildSamplerFromEnv, loadDefaultConfig } from './config';\nimport type { Sampler } from './Sampler';\nimport type { SpanLimits, TracerConfig, GeneralLimits } from './types';\nimport { getNumberFromEnv } from '@opentelemetry/core';\n\nexport const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexport const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nexport function mergeConfig(userConfig: TracerConfig): TracerConfig & {\n sampler: Sampler;\n spanLimits: SpanLimits;\n generalLimits: GeneralLimits;\n} {\n const perInstanceDefaults: Partial = {\n sampler: buildSamplerFromEnv(),\n };\n\n const DEFAULT_CONFIG = loadDefaultConfig();\n\n const target = Object.assign(\n {},\n DEFAULT_CONFIG,\n perInstanceDefaults,\n userConfig\n );\n\n target.generalLimits = Object.assign(\n {},\n DEFAULT_CONFIG.generalLimits,\n userConfig.generalLimits || {}\n );\n\n target.spanLimits = Object.assign(\n {},\n DEFAULT_CONFIG.spanLimits,\n userConfig.spanLimits || {}\n );\n\n return target;\n}\n\n/**\n * When general limits are provided and model specific limits are not,\n * configures the model specific limits by using the values from the general ones.\n * @param userConfig User provided tracer configuration\n */\nexport function reconfigureLimits(userConfig: TracerConfig): TracerConfig {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n\n /**\n * Reassign span attribute count limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeCountLimit =\n userConfig.spanLimits?.attributeCountLimit ??\n userConfig.generalLimits?.attributeCountLimit ??\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ??\n DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n\n /**\n * Reassign span attribute value length limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeValueLengthLimit =\n userConfig.spanLimits?.attributeValueLengthLimit ??\n userConfig.generalLimits?.attributeValueLengthLimit ??\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n\n return Object.assign({}, userConfig, { spanLimits });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport type { BufferConfig } from '../../../types';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n protected onShutdown(): void {}\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { BasicTracerProvider } from './BasicTracerProvider';\nexport { BatchSpanProcessor, RandomIdGenerator } from './platform';\nexport { ConsoleSpanExporter } from './export/ConsoleSpanExporter';\nexport { InMemorySpanExporter } from './export/InMemorySpanExporter';\nexport type { ReadableSpan } from './export/ReadableSpan';\nexport { SimpleSpanProcessor } from './export/SimpleSpanProcessor';\nexport type { SpanExporter } from './export/SpanExporter';\nexport { NoopSpanProcessor } from './export/NoopSpanProcessor';\nexport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nexport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nexport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nexport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\nexport { SamplingDecision } from './Sampler';\nexport type { Sampler, SamplingResult } from './Sampler';\nexport type { Span } from './Span';\nexport type { SpanProcessor } from './SpanProcessor';\nexport type { TimedEvent } from './TimedEvent';\nexport type {\n BatchSpanProcessorBrowserConfig,\n BufferConfig,\n GeneralLimits,\n SDKRegistrationConfig,\n SpanLimits,\n TracerConfig,\n} from './types';\nexport type { IdGenerator } from './IdGenerator';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport * as api from '@opentelemetry/api';\nimport type { InstrumentationScope } from '@opentelemetry/core';\nimport { sanitizeAttributes, isTracingSuppressed } from '@opentelemetry/core';\nimport { SpanImpl } from './Span';\nimport type { GeneralLimits, SpanLimits, TracerConfig } from './types';\nimport { mergeConfig } from './utility';\nimport type { SpanProcessor } from './SpanProcessor';\nimport type { Sampler } from './Sampler';\nimport type { IdGenerator } from './IdGenerator';\nimport { RandomIdGenerator } from './platform';\nimport type { Resource } from '@opentelemetry/resources';\nimport { TracerMetrics } from './TracerMetrics';\nimport { VERSION } from './version';\n\n/**\n * This class represents a basic tracer.\n */\nexport class Tracer implements api.Tracer {\n private readonly _sampler: Sampler;\n private readonly _generalLimits: GeneralLimits;\n private readonly _spanLimits: SpanLimits;\n private readonly _idGenerator: IdGenerator;\n readonly instrumentationScope: InstrumentationScope;\n\n private readonly _resource: Resource;\n private readonly _spanProcessor: SpanProcessor;\n private readonly _tracerMetrics: TracerMetrics;\n\n /**\n * Constructs a new Tracer instance.\n */\n constructor(\n instrumentationScope: InstrumentationScope,\n config: TracerConfig,\n resource: Resource,\n spanProcessor: SpanProcessor\n ) {\n const localConfig = mergeConfig(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new RandomIdGenerator();\n this._resource = resource;\n this._spanProcessor = spanProcessor;\n this.instrumentationScope = instrumentationScope;\n\n const meter = localConfig.meterProvider\n ? localConfig.meterProvider.getMeter('@opentelemetry/sdk-trace', VERSION)\n : api.createNoopMeter();\n this._tracerMetrics = new TracerMetrics(meter);\n }\n\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(\n name: string,\n options: api.SpanOptions = {},\n context = api.context.active()\n ): api.Span {\n // remove span from context in case a root span is requested via options\n if (options.root) {\n context = api.trace.deleteSpan(context);\n }\n const parentSpan = api.trace.getSpan(context);\n\n if (isTracingSuppressed(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(\n api.INVALID_SPAN_CONTEXT\n );\n return nonRecordingSpan;\n }\n\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let validParentSpanContext;\n let traceId;\n let traceState;\n if (\n !parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)\n ) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n } else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n validParentSpanContext = parentSpanContext;\n }\n\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: sanitizeAttributes(link.attributes),\n };\n });\n const attributes = sanitizeAttributes(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(\n context,\n traceId,\n name,\n spanKind,\n attributes,\n links\n );\n\n const recordEndMetrics = this._tracerMetrics.startSpan(\n parentSpanContext,\n samplingResult.decision\n );\n\n traceState = samplingResult.traceState ?? traceState;\n\n const traceFlags =\n samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED\n ? api.TraceFlags.SAMPLED\n : api.TraceFlags.NONE;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) {\n api.diag.debug(\n 'Recording is off, propagating context in a non-recording span'\n );\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\n\n // Set initial span attributes. The attributes object may have been mutated\n // by the sampler, so we sanitize the merged attributes before setting them.\n const initAttributes = sanitizeAttributes(\n Object.assign(attributes, samplingResult.attributes)\n );\n\n const span = new SpanImpl({\n resource: this._resource,\n scope: this.instrumentationScope,\n context,\n spanContext,\n name,\n kind: spanKind,\n links,\n parentSpanContext: validParentSpanContext,\n attributes: initAttributes,\n startTime: options.startTime,\n spanProcessor: this._spanProcessor,\n spanLimits: this._spanLimits,\n recordEndMetrics,\n });\n return span;\n }\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n ctx: api.Context,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | api.SpanOptions,\n arg3?: F | api.Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: api.SpanOptions | undefined;\n let ctx: api.Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as api.SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as api.SpanOptions | undefined;\n ctx = arg3 as api.Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? api.context.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = api.trace.setSpan(parentContext, span);\n\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits(): GeneralLimits {\n return this._generalLimits;\n }\n\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits(): SpanLimits {\n return this._spanLimits;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanExporter } from './SpanExporter';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { ExportResultCode } from '@opentelemetry/core';\n\n/**\n * This class can be used for testing purposes. It stores the exported spans\n * in a list in memory that can be retrieved using the `getFinishedSpans()`\n * method.\n */\nexport class InMemorySpanExporter implements SpanExporter {\n private _finishedSpans: ReadableSpan[] = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n protected _stopped = false;\n\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n if (this._stopped)\n return resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n\n setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0);\n }\n\n shutdown(): Promise {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n reset(): void {\n this._finishedSpans = [];\n }\n\n getFinishedSpans(): ReadableSpan[] {\n return this._finishedSpans;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n Exception,\n HrTime,\n Link,\n Span as APISpan,\n SpanOptions as APISpanOptions,\n Attributes,\n AttributeValue,\n SpanContext,\n SpanKind,\n SpanStatus,\n TimeInput,\n} from '@opentelemetry/api';\nimport { diag, SpanStatusCode } from '@opentelemetry/api';\nimport type { InstrumentationScope } from '@opentelemetry/core';\nimport {\n addHrTimes,\n millisToHrTime,\n hrTime,\n hrTimeDuration,\n isAttributeValue,\n isTimeInput,\n isTimeInputHrTime,\n otperformance,\n sanitizeAttributes,\n} from '@opentelemetry/core';\nimport type { Resource } from '@opentelemetry/resources';\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport type { ReadableSpan } from './export/ReadableSpan';\nimport { ExceptionEventName } from './enums';\nimport type { SpanProcessor } from './SpanProcessor';\nimport type { TimedEvent } from './TimedEvent';\nimport type { SpanLimits } from './types';\n\n/**\n * This type provides the properties of @link{ReadableSpan} at the same time\n * of the Span API\n */\nexport type Span = APISpan & ReadableSpan;\n\n// `root` is omitted because it is consumed by Tracer.startSpan() to strip\n// parent context but it has no meaning when constructing a Span directly.\ntype SpanOptions = Omit & {\n resource: Resource;\n scope: InstrumentationScope;\n context: Context;\n spanContext: SpanContext;\n name: string;\n // Required here to override optional `kind` from the API's SpanOptions\n // SpanImpl assigns it unconditionally and ReadableSpan expects it to be set.\n kind: SpanKind;\n parentSpanContext?: SpanContext;\n spanLimits: SpanLimits;\n spanProcessor: SpanProcessor;\n recordEndMetrics?: () => void;\n};\n\n/**\n * This class represents a span.\n */\nexport class SpanImpl implements Span {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n private readonly _spanContext: SpanContext;\n readonly kind: SpanKind;\n readonly parentSpanContext?: SpanContext;\n readonly attributes: Attributes = {};\n readonly links: Link[] = [];\n readonly events: TimedEvent[] = [];\n readonly startTime: HrTime;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n\n private _droppedAttributesCount = 0;\n private _droppedEventsCount: number = 0;\n private _droppedLinksCount: number = 0;\n private _attributesCount: number = 0;\n\n name: string;\n status: SpanStatus = {\n code: SpanStatusCode.UNSET,\n };\n endTime: HrTime = [0, 0];\n private _ended = false;\n private _duration: HrTime = [-1, -1];\n private readonly _spanProcessor: SpanProcessor;\n private readonly _spanLimits: SpanLimits;\n private readonly _attributeValueLengthLimit: number;\n private readonly _recordEndMetrics?: () => void;\n\n private readonly _performanceStartTime: number;\n private readonly _performanceOffset: number;\n private readonly _startTimeProvided: boolean;\n\n /**\n * Constructs a new SpanImpl instance.\n */\n constructor(opts: SpanOptions) {\n const now = Date.now();\n\n this._spanContext = opts.spanContext;\n this._performanceStartTime = otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + otperformance.timeOrigin);\n this._startTimeProvided = opts.startTime != null;\n this._spanLimits = opts.spanLimits;\n this._attributeValueLengthLimit =\n this._spanLimits.attributeValueLengthLimit ?? 0;\n this._spanProcessor = opts.spanProcessor;\n\n this.name = opts.name;\n this.parentSpanContext = opts.parentSpanContext;\n this.kind = opts.kind;\n if (opts.links) {\n for (const link of opts.links) {\n this.addLink(link);\n }\n }\n this.startTime = this._getTime(opts.startTime ?? now);\n this.resource = opts.resource;\n this.instrumentationScope = opts.scope;\n this._recordEndMetrics = opts.recordEndMetrics;\n\n if (opts.attributes != null) {\n this.setAttributes(opts.attributes);\n }\n\n this._spanProcessor.onStart(this, opts.context);\n }\n\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n setAttribute(key: string, value?: AttributeValue): this;\n setAttribute(key: string, value: unknown): this {\n if (value == null || this._isSpanEnded()) return this;\n if (key.length === 0) {\n diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!isAttributeValue(value)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n\n const { attributeCountLimit } = this._spanLimits;\n const isNewKey = !Object.prototype.hasOwnProperty.call(\n this.attributes,\n key\n );\n\n if (\n attributeCountLimit !== undefined &&\n this._attributesCount >= attributeCountLimit &&\n isNewKey\n ) {\n this._droppedAttributesCount++;\n return this;\n }\n\n this.attributes[key] = this._truncateToSize(value);\n if (isNewKey) {\n this._attributesCount++;\n }\n return this;\n }\n\n setAttributes(attributes: Attributes): this {\n for (const key in attributes) {\n if (Object.prototype.hasOwnProperty.call(attributes, key)) {\n this.setAttribute(key, attributes[key]);\n }\n }\n return this;\n }\n\n /**\n *\n * @param name Span Name\n * @param [attributesOrStartTime] Span attributes or start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [timeStamp] Specified time stamp for the event\n */\n addEvent(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n timeStamp?: TimeInput\n ): this {\n if (this._isSpanEnded()) return this;\n\n const { eventCountLimit } = this._spanLimits;\n\n if (eventCountLimit === 0) {\n diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n\n if (\n eventCountLimit !== undefined &&\n this.events.length >= eventCountLimit\n ) {\n if (this._droppedEventsCount === 0) {\n diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n\n if (isTimeInput(attributesOrStartTime)) {\n if (!isTimeInput(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n\n const sanitized = sanitizeAttributes(attributesOrStartTime);\n const { attributePerEventCountLimit } = this._spanLimits;\n const attributes: Attributes = {};\n let droppedAttributesCount = 0;\n let eventAttributesCount = 0;\n\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (\n attributePerEventCountLimit !== undefined &&\n eventAttributesCount >= attributePerEventCountLimit\n ) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal!);\n eventAttributesCount++;\n }\n\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount,\n });\n return this;\n }\n\n addLink(link: Link): this {\n if (this._isSpanEnded()) return this;\n\n const { linkCountLimit } = this._spanLimits;\n\n if (linkCountLimit === 0) {\n this._droppedLinksCount++;\n return this;\n }\n\n if (linkCountLimit !== undefined && this.links.length >= linkCountLimit) {\n if (this._droppedLinksCount === 0) {\n diag.debug('Dropping extra links.');\n }\n this.links.shift();\n this._droppedLinksCount++;\n }\n\n const { attributePerLinkCountLimit } = this._spanLimits;\n const sanitized = sanitizeAttributes(link.attributes);\n const attributes: Attributes = {};\n let droppedAttributesCount = 0;\n let linkAttributesCount = 0;\n\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (\n attributePerLinkCountLimit !== undefined &&\n linkAttributesCount >= attributePerLinkCountLimit\n ) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal!);\n linkAttributesCount++;\n }\n\n const processedLink: Link = { context: link.context };\n if (linkAttributesCount > 0) {\n processedLink.attributes = attributes;\n }\n if (droppedAttributesCount > 0) {\n processedLink.droppedAttributesCount = droppedAttributesCount;\n }\n\n this.links.push(processedLink);\n return this;\n }\n\n addLinks(links: Link[]): this {\n for (const link of links) {\n this.addLink(link);\n }\n return this;\n }\n\n setStatus(status: SpanStatus): this {\n if (this._isSpanEnded()) return this;\n if (status.code === SpanStatusCode.UNSET) return this;\n if (this.status.code === SpanStatusCode.OK) return this;\n\n const newStatus: SpanStatus = { code: status.code };\n\n // When using try-catch, the caught \"error\" is of type `any`. When then assigning `any` to `status.message`,\n // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus()\n // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or\n // undefined to avoid an incorrect type causing issues downstream.\n if (status.code === SpanStatusCode.ERROR) {\n if (typeof status.message === 'string') {\n newStatus.message = status.message;\n } else if (status.message != null) {\n diag.warn(\n `Dropping invalid status.message of type '${typeof status.message}', expected 'string'`\n );\n }\n }\n\n this.status = newStatus;\n return this;\n }\n\n updateName(name: string): this {\n if (this._isSpanEnded()) return this;\n this.name = name;\n return this;\n }\n\n end(endTime?: TimeInput): void {\n if (this._isSpanEnded()) {\n diag.error(\n `${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`\n );\n return;\n }\n this.endTime = this._getTime(endTime);\n this._duration = hrTimeDuration(this.startTime, this.endTime);\n\n if (this._duration[0] < 0) {\n diag.warn(\n 'Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.',\n this.startTime,\n this.endTime\n );\n this.endTime = this.startTime.slice() as HrTime;\n this._duration = [0, 0];\n }\n\n if (this._droppedEventsCount > 0) {\n diag.warn(\n `Dropped ${this._droppedEventsCount} events because eventCountLimit reached`\n );\n }\n if (this._droppedLinksCount > 0) {\n diag.warn(\n `Dropped ${this._droppedLinksCount} links because linkCountLimit reached`\n );\n }\n if (this._spanProcessor.onEnding) {\n this._spanProcessor.onEnding(this);\n }\n\n this._recordEndMetrics?.();\n this._ended = true;\n this._spanProcessor.onEnd(this);\n }\n\n private _getTime(inp?: TimeInput): HrTime {\n if (typeof inp === 'number' && inp <= otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return hrTime(inp + this._performanceOffset);\n }\n\n if (typeof inp === 'number') {\n return millisToHrTime(inp);\n }\n\n if (inp instanceof Date) {\n return millisToHrTime(inp.getTime());\n }\n\n if (isTimeInputHrTime(inp)) {\n return inp;\n }\n\n if (this._startTimeProvided) {\n // if user provided a time for the start manually\n // we can't use duration to calculate event/end times\n return millisToHrTime(Date.now());\n }\n\n const msDuration = otperformance.now() - this._performanceStartTime;\n return addHrTimes(this.startTime, millisToHrTime(msDuration));\n }\n\n isRecording(): boolean {\n return this._ended === false;\n }\n\n recordException(exception: Exception, time?: TimeInput): void {\n const attributes: Attributes = {};\n if (typeof exception === 'string') {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception;\n } else if (exception) {\n if (exception.code) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.code.toString();\n } else if (exception.name) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[ATTR_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n\n // these are minimum requirements from spec\n if (attributes[ATTR_EXCEPTION_TYPE] || attributes[ATTR_EXCEPTION_MESSAGE]) {\n this.addEvent(ExceptionEventName, attributes, time);\n } else {\n diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n\n get duration(): HrTime {\n return this._duration;\n }\n\n get ended(): boolean {\n return this._ended;\n }\n\n get droppedAttributesCount(): number {\n return this._droppedAttributesCount;\n }\n\n get droppedEventsCount(): number {\n return this._droppedEventsCount;\n }\n\n get droppedLinksCount(): number {\n return this._droppedLinksCount;\n }\n\n private _isSpanEnded(): boolean {\n if (this._ended) {\n const error = new Error(\n `Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`\n );\n\n diag.warn(\n `Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,\n error\n );\n }\n return this._ended;\n }\n\n // Utility function to truncate given value within size\n // for value type of string, will truncate to given limit\n // for type of non-string, will return same value\n private _truncateToLimitUtil(value: string, limit: number): string {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\n\n /**\n * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then\n * return string with truncated to {@code attributeValueLengthLimit} characters\n *\n * If the given attribute value is array of strings then\n * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters\n *\n * Otherwise return same Attribute {@code value}\n *\n * @param value Attribute value\n * @returns truncated attribute value if required, otherwise same value\n */\n private _truncateToSize(value: AttributeValue): AttributeValue {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n\n // Array of strings\n if (Array.isArray(value)) {\n return (value as []).map(val =>\n typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val\n );\n }\n\n // Other types, no need to apply value length limit\n return value;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isValidTraceId } from '@opentelemetry/api';\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nexport class TraceIdRatioBasedSampler implements Sampler {\n private readonly _ratio;\n private _upperBound: number;\n\n constructor(ratio = 0) {\n this._ratio = this._normalize(ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n\n shouldSample(context: unknown, traceId: string): SamplingResult {\n return {\n decision:\n isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound\n ? SamplingDecision.RECORD_AND_SAMPLED\n : SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n\n private _accumulate(traceId: string): number {\n let accumulation = 0;\n for (let i = 0; i < traceId.length / 8; i++) {\n const pos = i * 8;\n const part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples all traces. */\nexport class AlwaysOnSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n\n toString(): string {\n return 'AlwaysOnSampler';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { TraceFlags } from '@opentelemetry/api';\nimport {\n internal,\n ExportResultCode,\n globalErrorHandler,\n BindOnceFuture,\n} from '@opentelemetry/core';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { SpanExporter } from './SpanExporter';\n\n/**\n * An implementation of the {@link SpanProcessor} that converts the {@link Span}\n * to {@link ReadableSpan} and passes it to the configured exporter.\n *\n * Only spans that are sampled are converted.\n *\n * NOTE: This {@link SpanProcessor} exports every ended span individually instead of batching spans together, which causes significant performance overhead with most exporters. For production use, please consider using the {@link BatchSpanProcessor} instead.\n */\nexport class SimpleSpanProcessor implements SpanProcessor {\n private readonly _exporter: SpanExporter;\n private _shutdownOnce: BindOnceFuture;\n private _pendingExports: Set>;\n\n constructor(exporter: SpanExporter) {\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._pendingExports = new Set>();\n }\n\n async forceFlush(): Promise {\n await Promise.all(Array.from(this._pendingExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n const pendingExport = this._doExport(span).catch(err =>\n globalErrorHandler(err)\n );\n // Enqueue this export to the pending list so it can be flushed by the user.\n this._pendingExports.add(pendingExport);\n void pendingExport.finally(() =>\n this._pendingExports.delete(pendingExport)\n );\n }\n\n private async _doExport(span: ReadableSpan): Promise {\n if (span.resource.asyncAttributesPending) {\n // Ensure resource is fully resolved before exporting.\n await span.resource.waitForAsyncAttributes?.();\n }\n\n const result = await internal._export(this._exporter, [span]);\n if (result.code !== ExportResultCode.SUCCESS) {\n throw (\n result.error ??\n new Error(`SimpleSpanProcessor: span export failed (status ${result})`)\n );\n }\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown(): Promise {\n return this._exporter.shutdown();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport type { ReadableSpan } from './export/ReadableSpan';\nimport type { Span } from './Span';\nimport type { SpanProcessor } from './SpanProcessor';\n\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nexport class MultiSpanProcessor implements SpanProcessor {\n private readonly _spanProcessors: SpanProcessor[];\n constructor(spanProcessors: SpanProcessor[]) {\n this._spanProcessors = spanProcessors;\n }\n\n forceFlush(): Promise {\n const promises: Promise[] = [];\n\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.forceFlush());\n }\n return new Promise(resolve => {\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(error => {\n globalErrorHandler(\n error || new Error('MultiSpanProcessor: forceFlush failed')\n );\n resolve();\n });\n });\n }\n\n onStart(span: Span, context: Context): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n\n onEnding(span: Span): void {\n for (const spanProcessor of this._spanProcessors) {\n if (spanProcessor.onEnding) {\n spanProcessor.onEnding(span);\n }\n }\n }\n\n onEnd(span: ReadableSpan): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n\n shutdown(): Promise {\n const promises: Promise[] = [];\n\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.shutdown());\n }\n return new Promise((resolve, reject) => {\n Promise.all(promises).then(() => {\n resolve();\n }, reject);\n });\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Event name definitions\nexport const ExceptionEventName = 'exception';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\n\n/** No-op implementation of SpanProcessor */\nexport class NoopSpanProcessor implements SpanProcessor {\n onStart(_span: Span, _context: Context): void {}\n onEnd(_span: ReadableSpan): void {}\n shutdown(): Promise {\n return Promise.resolve();\n }\n forceFlush(): Promise {\n return Promise.resolve();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n Counter,\n Meter,\n SpanContext,\n UpDownCounter,\n} from '@opentelemetry/api';\nimport { SamplingDecision } from './Sampler';\nimport {\n ATTR_OTEL_SPAN_PARENT_ORIGIN,\n ATTR_OTEL_SPAN_SAMPLING_RESULT,\n METRIC_OTEL_SDK_SPAN_LIVE,\n METRIC_OTEL_SDK_SPAN_STARTED,\n} from './semconv';\n\n/**\n * Generates `otel.sdk.span.*` metrics.\n * https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics/#span-metrics\n */\nexport class TracerMetrics {\n private readonly startedSpans: Counter;\n private readonly liveSpans: UpDownCounter;\n\n constructor(meter: Meter) {\n this.startedSpans = meter.createCounter(METRIC_OTEL_SDK_SPAN_STARTED, {\n unit: '{span}',\n description: 'The number of created spans.',\n });\n\n this.liveSpans = meter.createUpDownCounter(METRIC_OTEL_SDK_SPAN_LIVE, {\n unit: '{span}',\n description: 'The number of currently live spans.',\n });\n }\n\n startSpan(\n parentSpanCtx: SpanContext | undefined,\n samplingDecision: SamplingDecision\n ): () => void {\n const samplingDecisionStr = samplingDecisionToString(samplingDecision);\n this.startedSpans.add(1, {\n [ATTR_OTEL_SPAN_PARENT_ORIGIN]: parentOrigin(parentSpanCtx),\n [ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n });\n\n if (samplingDecision === SamplingDecision.NOT_RECORD) {\n return () => {};\n }\n\n const liveSpanAttributes = {\n [ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n };\n this.liveSpans.add(1, liveSpanAttributes);\n return () => {\n this.liveSpans.add(-1, liveSpanAttributes);\n };\n }\n}\n\nfunction parentOrigin(parentSpanContext: SpanContext | undefined): string {\n if (!parentSpanContext) {\n return 'none';\n }\n if (parentSpanContext.isRemote) {\n return 'remote';\n }\n return 'local';\n}\n\nfunction samplingDecisionToString(decision: SamplingDecision): string {\n switch (decision) {\n case SamplingDecision.RECORD_AND_SAMPLED:\n return 'RECORD_AND_SAMPLE';\n case SamplingDecision.RECORD:\n return 'RECORD_ONLY';\n case SamplingDecision.NOT_RECORD:\n return 'DROP';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n Link,\n Attributes,\n SpanKind,\n TraceState,\n} from '@opentelemetry/api';\n\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n\n/**\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of Attributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Determines whether the span has a parent span, and if so, [whether it is a remote parent](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin' as const;\n\n/**\n * The result value of the sampler for this span\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SPAN_SAMPLING_RESULT =\n 'otel.span.sampling_result' as const;\n\n/**\n * The number of created spans with `recording=true` for which the end operation has not been called yet.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live' as const;\n\n/**\n * The number of created spans.\n *\n * @note Implementations **MUST** record this metric for all spans, even for non-recording ones.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started' as const;\n","/** If this attribute is true, it means that the parent is a remote span. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE = 'sentry.parentIsRemote';\n\n// These are not standardized yet, but used by the graphql instrumentation\nexport const SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION = 'sentry.graphql.operation';\n","import type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\n\n/**\n * Get the parent span id from a span.\n * In OTel v1, the parent span id is accessed as `parentSpanId`\n * In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n */\nexport function getParentSpanId(span: ReadableSpan): string | undefined {\n if ('parentSpanId' in span) {\n return span.parentSpanId as string | undefined;\n } else if ('parentSpanContext' in span) {\n return (span.parentSpanContext as { spanId?: string } | undefined)?.spanId;\n }\n\n return undefined;\n}\n","import type { SpanKind, SpanStatus } from '@opentelemetry/api';\nimport type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-base';\nimport type { AbstractSpan } from '../types';\nimport { getParentSpanId } from './getParentSpanId';\n\n/**\n * Check if a given span has attributes.\n * This is necessary because the base `Span` type does not have attributes,\n * so in places where we are passed a generic span, we need to check if we want to access them.\n */\nexport function spanHasAttributes(\n span: SpanType,\n): span is SpanType & { attributes: ReadableSpan['attributes'] } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.attributes && typeof castSpan.attributes === 'object';\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasKind(span: SpanType): span is SpanType & { kind: SpanKind } {\n const castSpan = span as ReadableSpan;\n return typeof castSpan.kind === 'number';\n}\n\n/**\n * Check if a given span has a status.\n * This is necessary because the base `Span` type does not have a status,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasStatus(\n span: SpanType,\n): span is SpanType & { status: SpanStatus } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.status;\n}\n\n/**\n * Check if a given span has a name.\n * This is necessary because the base `Span` type does not have a name,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasName(span: SpanType): span is SpanType & { name: string } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.name;\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasParentId(\n span: SpanType,\n): span is SpanType & { parentSpanId: string } {\n const castSpan = span as ReadableSpan;\n return !!getParentSpanId(castSpan);\n}\n\n/**\n * Check if a given span has events.\n * This is necessary because the base `Span` type does not have events,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasEvents(\n span: SpanType,\n): span is SpanType & { events: TimedEvent[] } {\n const castSpan = span as ReadableSpan;\n return Array.isArray(castSpan.events);\n}\n","import type { Span } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { SanitizedRequestData } from '@sentry/core';\nimport { getSanitizedUrlString, parseUrl } from '@sentry/core';\nimport { spanHasAttributes } from './spanTypes';\n\n/**\n * Get sanitizied request data from an OTEL span.\n */\nexport function getRequestSpanData(span: Span | ReadableSpan): Partial {\n // The base `Span` type has no `attributes`, so we need to guard here against that\n if (!spanHasAttributes(span)) {\n return {};\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeUrlAttribute = (span.attributes[ATTR_URL_FULL] || span.attributes[SEMATTRS_HTTP_URL]) as\n | string\n | undefined;\n\n const data: Partial = {\n url: maybeUrlAttribute,\n // eslint-disable-next-line deprecation/deprecation\n 'http.method': (span.attributes[ATTR_HTTP_REQUEST_METHOD] || span.attributes[SEMATTRS_HTTP_METHOD]) as\n | string\n | undefined,\n };\n\n // Default to GET if URL is set but method is not\n if (!data['http.method'] && data.url) {\n data['http.method'] = 'GET';\n }\n\n try {\n if (typeof maybeUrlAttribute === 'string') {\n const url = parseUrl(maybeUrlAttribute);\n\n data.url = getSanitizedUrlString(url);\n\n if (url.search) {\n data['http.query'] = url.search;\n }\n if (url.hash) {\n data['http.fragment'] = url.hash;\n }\n }\n } catch {\n // ignore\n }\n\n return data;\n}\n","import type { Tracer } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\nimport type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport type { Client } from '@sentry/core';\nimport { SDK_VERSION } from '@sentry/core';\nimport type { OpenTelemetryClient as OpenTelemetryClientInterface } from '../types';\n\n// Typescript complains if we do not use `...args: any[]` for the mixin, with:\n// A mixin class must have a constructor with a single rest parameter of type 'any[]'.ts(2545)\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Wrap an Client class with things we need for OpenTelemetry support.\n * Make sure that the Client class passed in is non-abstract!\n *\n * Usage:\n * const OpenTelemetryClient = getWrappedClientClass(NodeClient);\n * const client = new OpenTelemetryClient(options);\n */\nexport function wrapClientClass<\n ClassConstructor extends new (...args: any[]) => Client,\n WrappedClassConstructor extends new (...args: any[]) => Client & OpenTelemetryClientInterface,\n>(ClientClass: ClassConstructor): WrappedClassConstructor {\n // @ts-expect-error We just assume that this is non-abstract, if you pass in an abstract class this would make it non-abstract\n class OpenTelemetryClient extends ClientClass implements OpenTelemetryClientInterface {\n public traceProvider: BasicTracerProvider | undefined;\n private _tracer: Tracer | undefined;\n\n public constructor(...args: any[]) {\n super(...args);\n }\n\n /** Get the OTEL tracer. */\n public get tracer(): Tracer {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/opentelemetry';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /**\n * @inheritDoc\n */\n public async flush(timeout?: number): Promise {\n const provider = this.traceProvider;\n await provider?.forceFlush();\n return super.flush(timeout);\n }\n }\n\n return OpenTelemetryClient as unknown as WrappedClassConstructor;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import { SpanKind } from '@opentelemetry/api';\nimport type { AbstractSpan } from '../types';\nimport { spanHasKind } from './spanTypes';\n\n/**\n * Get the span kind from a span.\n * For whatever reason, this is not public API on the generic \"Span\" type,\n * so we need to check if we actually have a `SDKTraceBaseSpan` where we can fetch this from.\n * Otherwise, we fall back to `SpanKind.INTERNAL`.\n */\nexport function getSpanKind(span: AbstractSpan): SpanKind {\n if (spanHasKind(span)) {\n return span.kind;\n }\n\n return SpanKind.INTERNAL;\n}\n","import { createContextKey } from '@opentelemetry/api';\n\nexport const SENTRY_TRACE_HEADER = 'sentry-trace';\nexport const SENTRY_BAGGAGE_HEADER = 'baggage';\n\nexport const SENTRY_TRACE_STATE_DSC = 'sentry.dsc';\nexport const SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING = 'sentry.sampled_not_recording';\nexport const SENTRY_TRACE_STATE_URL = 'sentry.url';\nexport const SENTRY_TRACE_STATE_SAMPLE_RAND = 'sentry.sample_rand';\nexport const SENTRY_TRACE_STATE_SAMPLE_RATE = 'sentry.sample_rate';\n\nexport const SENTRY_SCOPES_CONTEXT_KEY = createContextKey('sentry_scopes');\n\nexport const SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_isolation_scope');\n\nexport const SENTRY_FORK_SET_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_scope');\n\nexport const SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_isolation_scope');\n","import type { Context } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { addNonEnumerableProperty } from '@sentry/core';\nimport { SENTRY_SCOPES_CONTEXT_KEY } from '../constants';\nimport type { CurrentScopes } from '../types';\n\nconst SCOPE_CONTEXT_FIELD = '_scopeContext';\n\n/**\n * Try to get the current scopes from the given OTEL context.\n * This requires a Context Manager that was wrapped with getWrappedContextManager.\n */\nexport function getScopesFromContext(context: Context): CurrentScopes | undefined {\n return context.getValue(SENTRY_SCOPES_CONTEXT_KEY) as CurrentScopes | undefined;\n}\n\n/**\n * Set the current scopes on an OTEL context.\n * This will return a forked context with the Propagation Context set.\n */\nexport function setScopesOnContext(context: Context, scopes: CurrentScopes): Context {\n return context.setValue(SENTRY_SCOPES_CONTEXT_KEY, scopes);\n}\n\n/**\n * Set the context on the scope so we can later look it up.\n * We need this to get the context from the scope in the `trace` functions.\n */\nexport function setContextOnScope(scope: Scope, context: Context): void {\n addNonEnumerableProperty(scope, SCOPE_CONTEXT_FIELD, context);\n}\n\n/**\n * Get the context related to a scope.\n */\nexport function getContextFromScope(scope: Scope): Context | undefined {\n return (scope as { [SCOPE_CONTEXT_FIELD]?: Context })[SCOPE_CONTEXT_FIELD];\n}\n","import { ATTR_URL_FULL, SEMATTRS_HTTP_URL } from '@opentelemetry/semantic-conventions';\nimport { getClient, isSentryRequestUrl } from '@sentry/core';\nimport type { AbstractSpan } from '../types';\nimport { spanHasAttributes } from './spanTypes';\n\n/**\n *\n * @param otelSpan Checks whether a given OTEL Span is an http request to sentry.\n * @returns boolean\n */\nexport function isSentryRequestSpan(span: AbstractSpan): boolean {\n if (!spanHasAttributes(span)) {\n return false;\n }\n\n const { attributes } = span;\n\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n\n if (!httpUrl) {\n return false;\n }\n\n return isSentryRequestUrl(httpUrl.toString(), getClient());\n}\n","import type { SpanContext } from '@opentelemetry/api';\nimport { TraceFlags } from '@opentelemetry/api';\nimport { baggageHeaderToDynamicSamplingContext } from '@sentry/core';\nimport { SENTRY_TRACE_STATE_DSC, SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING } from '../constants';\n\n/**\n * OpenTelemetry only knows about SAMPLED or NONE decision,\n * but for us it is important to differentiate between unset and unsampled.\n *\n * Both of these are identified as `traceFlags === TracegFlags.NONE`,\n * but we additionally look at a special trace state to differentiate between them.\n */\nexport function getSamplingDecision(spanContext: SpanContext): boolean | undefined {\n const { traceFlags, traceState } = spanContext;\n\n const sampledNotRecording = traceState ? traceState.get(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING) === '1' : false;\n\n // If trace flag is `SAMPLED`, we interpret this as sampled\n // If it is `NONE`, it could mean either it was sampled to be not recorder, or that it was not sampled at all\n // For us this is an important difference, sow e look at the SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING\n // to identify which it is\n if (traceFlags === TraceFlags.SAMPLED) {\n return true;\n }\n\n if (sampledNotRecording) {\n return false;\n }\n\n // Fall back to DSC as a last resort, that may also contain `sampled`...\n const dscString = traceState ? traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n if (dsc?.sampled === 'true') {\n return true;\n }\n if (dsc?.sampled === 'false') {\n return false;\n }\n\n return undefined;\n}\n","import type { Attributes, AttributeValue } from '@opentelemetry/api';\nimport { SpanKind } from '@opentelemetry/api';\nimport {\n ATTR_DB_SYSTEM_NAME,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_ROUTE,\n ATTR_URL_FULL,\n SEMATTRS_DB_STATEMENT,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_FAAS_TRIGGER,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_TARGET,\n SEMATTRS_HTTP_URL,\n SEMATTRS_MESSAGING_SYSTEM,\n SEMATTRS_RPC_SERVICE,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes, TransactionSource } from '@sentry/core';\nimport {\n getSanitizedUrlString,\n parseUrl,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '../semanticAttributes';\nimport type { AbstractSpan } from '../types';\nimport { getSpanKind } from './getSpanKind';\nimport { spanHasAttributes, spanHasName } from './spanTypes';\n\ninterface SpanDescription {\n op: string | undefined;\n description: string;\n source: TransactionSource;\n data?: Record;\n}\n\n/**\n * Infer the op & description for a set of name, attributes and kind of a span.\n */\nexport function inferSpanData(spanName: string, attributes: SpanAttributes, kind: SpanKind): SpanDescription {\n // if http.method exists, this is an http request span\n // eslint-disable-next-line deprecation/deprecation\n const httpMethod = attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD];\n if (httpMethod) {\n return descriptionForHttpMethod({ attributes, name: spanName, kind }, httpMethod);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const dbSystem = attributes[ATTR_DB_SYSTEM_NAME] || attributes[SEMATTRS_DB_SYSTEM];\n const opIsCache =\n typeof attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] === 'string' &&\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP].startsWith('cache.');\n\n // If db.type exists then this is a database call span\n // If the Redis DB is used as a cache, the span description should not be changed\n if (dbSystem && !opIsCache) {\n return descriptionForDbSystem({ attributes, name: spanName });\n }\n\n const customSourceOrRoute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom' ? 'custom' : 'route';\n\n // If rpc.service exists then this is a rpc call span.\n // eslint-disable-next-line deprecation/deprecation\n const rpcService = attributes[SEMATTRS_RPC_SERVICE];\n if (rpcService) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, 'route'),\n op: 'rpc',\n };\n }\n\n // If messaging.system exists then this is a messaging system span.\n // eslint-disable-next-line deprecation/deprecation\n const messagingSystem = attributes[SEMATTRS_MESSAGING_SYSTEM];\n if (messagingSystem) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: 'message',\n };\n }\n\n // If faas.trigger exists then this is a function as a service span.\n // eslint-disable-next-line deprecation/deprecation\n const faasTrigger = attributes[SEMATTRS_FAAS_TRIGGER];\n if (faasTrigger) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: faasTrigger.toString(),\n };\n }\n\n return { op: undefined, description: spanName, source: 'custom' };\n}\n\n/**\n * Extract better op/description from an otel span.\n *\n * Does not overwrite the span name if the source is already set to custom to ensure\n * that user-updated span names are preserved. In this case, we only adjust the op but\n * leave span description and source unchanged.\n *\n * Based on https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/7422ce2a06337f68a59b552b8c5a2ac125d6bae5/exporter/sentryexporter/sentry_exporter.go#L306\n */\nexport function parseSpanDescription(span: AbstractSpan): SpanDescription {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const name = spanHasName(span) ? span.name : '';\n const kind = getSpanKind(span);\n\n return inferSpanData(name, attributes, kind);\n}\n\nfunction descriptionForDbSystem({ attributes, name }: { attributes: Attributes; name: string }): SpanDescription {\n // if we already have a custom name, we don't overwrite it but only set the op\n const userDefinedName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n if (typeof userDefinedName === 'string') {\n return {\n op: 'db',\n description: userDefinedName,\n source: (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource) || 'custom',\n };\n }\n\n // if we already have the source set to custom, we don't overwrite the span description but only set the op\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom') {\n return { op: 'db', description: name, source: 'custom' };\n }\n\n // Use DB statement (Ex \"SELECT * FROM table\") if possible as description.\n // eslint-disable-next-line deprecation/deprecation\n const statement = attributes[SEMATTRS_DB_STATEMENT];\n\n const description = statement ? statement.toString() : name;\n\n return { op: 'db', description, source: 'task' };\n}\n\n/** Only exported for tests. */\nexport function descriptionForHttpMethod(\n { name, kind, attributes }: { name: string; attributes: Attributes; kind: SpanKind },\n httpMethod: AttributeValue,\n): SpanDescription {\n const opParts = ['http'];\n\n switch (kind) {\n case SpanKind.CLIENT:\n opParts.push('client');\n break;\n case SpanKind.SERVER:\n opParts.push('server');\n break;\n }\n\n // Spans for HTTP requests we have determined to be prefetch requests will have a `.prefetch` postfix in the op\n if (attributes['sentry.http.prefetch']) {\n opParts.push('prefetch');\n }\n\n const { urlPath, url, query, fragment, hasRoute } = getSanitizedUrl(attributes, kind);\n\n if (!urlPath) {\n return { ...getUserUpdatedNameAndSource(name, attributes), op: opParts.join('.') };\n }\n\n const graphqlOperationsAttribute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION];\n\n // Ex. GET /api/users\n const baseDescription = `${httpMethod} ${urlPath}`;\n\n // When the http span has a graphql operation, append it to the description\n // We add these in the graphqlIntegration\n const inferredDescription = graphqlOperationsAttribute\n ? `${baseDescription} (${getGraphqlOperationNamesFromAttribute(graphqlOperationsAttribute)})`\n : baseDescription;\n\n // If `httpPath` is a root path, then we can categorize the transaction source as route.\n const inferredSource: TransactionSource = hasRoute || urlPath === '/' ? 'route' : 'url';\n\n const data: Record = {};\n\n if (url) {\n data.url = url;\n }\n if (query) {\n data['http.query'] = query;\n }\n if (fragment) {\n data['http.fragment'] = fragment;\n }\n\n // If the span kind is neither client nor server, we use the original name\n // this infers that somebody manually started this span, in which case we don't want to overwrite the name\n const isClientOrServerKind = kind === SpanKind.CLIENT || kind === SpanKind.SERVER;\n\n // If the span is an auto-span (=it comes from one of our instrumentations),\n // we always want to infer the name\n // this is necessary because some of the auto-instrumentation we use uses kind=INTERNAL\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] || 'manual';\n const isManualSpan = !`${origin}`.startsWith('auto');\n\n // If users (or in very rare occasions we) set the source to custom, we don't overwrite the name\n const alreadyHasCustomSource = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom';\n const customSpanName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n const useInferredDescription =\n !alreadyHasCustomSource && customSpanName == null && (isClientOrServerKind || !isManualSpan);\n\n const { description, source } = useInferredDescription\n ? { description: inferredDescription, source: inferredSource }\n : getUserUpdatedNameAndSource(name, attributes);\n\n return {\n op: opParts.join('.'),\n description,\n source,\n data,\n };\n}\n\nfunction getGraphqlOperationNamesFromAttribute(attr: AttributeValue): string {\n if (Array.isArray(attr)) {\n // oxlint-disable-next-line typescript/require-array-sort-compare\n const sorted = attr.slice().sort();\n\n // Up to 5 items, we just add all of them\n if (sorted.length <= 5) {\n return sorted.join(', ');\n } else {\n // Else, we add the first 5 and the diff of other operations\n return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n }\n }\n\n return `${attr}`;\n}\n\n/** Exported for tests only */\nexport function getSanitizedUrl(\n attributes: Attributes,\n kind: SpanKind,\n): {\n url: string | undefined;\n urlPath: string | undefined;\n query: string | undefined;\n fragment: string | undefined;\n hasRoute: boolean;\n} {\n // This is the relative path of the URL, e.g. /sub\n // eslint-disable-next-line deprecation/deprecation\n const httpTarget = attributes[SEMATTRS_HTTP_TARGET];\n // This is the full URL, including host & query params etc., e.g. https://example.com/sub?foo=bar\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n // This is the normalized route name - may not always be available!\n const httpRoute = attributes[ATTR_HTTP_ROUTE];\n\n const parsedUrl = typeof httpUrl === 'string' ? parseUrl(httpUrl) : undefined;\n const url = parsedUrl ? getSanitizedUrlString(parsedUrl) : undefined;\n const query = parsedUrl?.search || undefined;\n const fragment = parsedUrl?.hash || undefined;\n\n if (typeof httpRoute === 'string') {\n return { urlPath: httpRoute, url, query, fragment, hasRoute: true };\n }\n\n if (kind === SpanKind.SERVER && typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n if (parsedUrl) {\n return { urlPath: url, url, query, fragment, hasRoute: false };\n }\n\n // fall back to target even for client spans, if no URL is present\n if (typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n return { urlPath: undefined, url, query, fragment, hasRoute: false };\n}\n\n/**\n * Because Otel instrumentation sometimes mutates span names via `span.updateName`, the only way\n * to ensure that a user-set span name is preserved is to store it as a tmp attribute on the span.\n * We delete this attribute once we're done with it when preparing the event envelope.\n *\n * This temp attribute always takes precedence over the original name.\n *\n * We also need to take care of setting the correct source. Users can always update the source\n * after updating the name, so we need to respect that.\n *\n * @internal exported only for testing\n */\nexport function getUserUpdatedNameAndSource(\n originalName: string,\n attributes: Attributes,\n fallbackSource: TransactionSource = 'custom',\n): {\n description: string;\n source: TransactionSource;\n} {\n const source = (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource) || fallbackSource;\n const description = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n if (description && typeof description === 'string') {\n return {\n description,\n source,\n };\n }\n\n return { description: originalName, source };\n}\n","import type { Client } from '@sentry/core';\nimport { hasSpansEnabled, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, spanToJSON } from '@sentry/core';\nimport { getSamplingDecision } from './getSamplingDecision';\nimport { parseSpanDescription } from './parseSpanDescription';\nimport { spanHasName } from './spanTypes';\n\n/**\n * Setup a DSC handler on the passed client,\n * ensuring that the transaction name is inferred from the span correctly.\n */\nexport function enhanceDscWithOpenTelemetryRootSpanName(client: Client): void {\n client.on('createDsc', (dsc, rootSpan) => {\n if (!rootSpan) {\n return;\n }\n\n // We want to overwrite the transaction on the DSC that is created by default in core\n // The reason for this is that we want to infer the span name, not use the initial one\n // Otherwise, we'll get names like \"GET\" instead of e.g. \"GET /foo\"\n // `parseSpanDescription` takes the attributes of the span into account for the name\n // This mutates the passed-in DSC\n\n const jsonSpan = spanToJSON(rootSpan);\n const attributes = jsonSpan.data;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n const { description } = spanHasName(rootSpan) ? parseSpanDescription(rootSpan) : { description: undefined };\n if (source !== 'url' && description) {\n dsc.transaction = description;\n }\n\n // Also ensure sampling decision is correctly inferred\n // In core, we use `spanIsSampled`, which just looks at the trace flags\n // but in OTEL, we use a slightly more complex logic to be able to differntiate between unsampled and deferred sampling\n if (hasSpansEnabled()) {\n const sampled = getSamplingDecision(rootSpan.spanContext());\n dsc.sampled = sampled == undefined ? undefined : String(sampled);\n }\n });\n}\n","import type { Span } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n return trace.getActiveSpan();\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { TraceState } from '@opentelemetry/core';\nimport type { DynamicSamplingContext } from '@sentry/core';\nimport { dynamicSamplingContextToSentryBaggageHeader } from '@sentry/core';\nimport { SENTRY_TRACE_STATE_DSC, SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING } from '../constants';\n\n/**\n * Generate a TraceState for the given data.\n */\nexport function makeTraceState({\n dsc,\n sampled,\n}: {\n dsc?: Partial;\n sampled?: boolean;\n}): TraceState {\n // We store the DSC as OTEL trace state on the span context\n const dscString = dsc ? dynamicSamplingContextToSentryBaggageHeader(dsc) : undefined;\n\n const traceStateBase = new TraceState();\n\n const traceStateWithDsc = dscString ? traceStateBase.set(SENTRY_TRACE_STATE_DSC, dscString) : traceStateBase;\n\n // We also specifically want to store if this is sampled to be not recording,\n // or unsampled (=could be either sampled or not)\n return sampled === false ? traceStateWithDsc.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') : traceStateWithDsc;\n}\n","type OpenTelemetryElement = 'SentrySpanProcessor' | 'SentryContextManager' | 'SentryPropagator' | 'SentrySampler';\n\nconst setupElements = new Set();\n\n/** Get all the OpenTelemetry elements that have been set up. */\nexport function openTelemetrySetupCheck(): OpenTelemetryElement[] {\n return Array.from(setupElements);\n}\n\n/** Mark an OpenTelemetry element as setup. */\nexport function setIsSetup(element: OpenTelemetryElement): void {\n setupElements.add(element);\n}\n\n/** Only exported for tests. */\nexport function clearOpenTelemetrySetupCheck(): void {\n setupElements.clear();\n}\n","import type { Baggage, Context, Span, SpanContext, TextMapGetter, TextMapSetter } from '@opentelemetry/api';\nimport { context, INVALID_TRACEID, propagation, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed, W3CBaggagePropagator } from '@opentelemetry/core';\nimport { ATTR_URL_FULL, SEMATTRS_HTTP_URL } from '@opentelemetry/semantic-conventions';\nimport type { Client, continueTrace, DynamicSamplingContext, Scope } from '@sentry/core';\nimport {\n baggageHeaderToDynamicSamplingContext,\n debug,\n generateSentryTraceHeader,\n generateTraceparentHeader,\n getClient,\n getCurrentScope,\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n getIsolationScope,\n LRUMap,\n parseBaggageHeader,\n propagationContextFromHeaders,\n SENTRY_BAGGAGE_KEY_PREFIX,\n shouldContinueTrace,\n shouldPropagateTraceForUrl,\n spanToJSON,\n} from '@sentry/core';\nimport { SENTRY_BAGGAGE_HEADER, SENTRY_TRACE_HEADER, SENTRY_TRACE_STATE_URL } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { getScopesFromContext, setScopesOnContext } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { makeTraceState } from './utils/makeTraceState';\nimport { setIsSetup } from './utils/setupCheck';\n\n/**\n * Injects and extracts `sentry-trace` and `baggage` headers from carriers.\n */\nexport class SentryPropagator extends W3CBaggagePropagator {\n /** A map of URLs that have already been checked for if they match tracePropagationTargets. */\n private _urlMatchesTargetsMap: LRUMap;\n\n public constructor() {\n super();\n setIsSetup('SentryPropagator');\n\n // We're caching results so we don't have to recompute regexp every time we create a request.\n this._urlMatchesTargetsMap = new LRUMap(100);\n }\n\n /**\n * @inheritDoc\n */\n public inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n if (isTracingSuppressed(context)) {\n DEBUG_BUILD && debug.log('[Tracing] Not injecting trace data for url because tracing is suppressed.');\n return;\n }\n\n const activeSpan = trace.getSpan(context);\n const url = activeSpan && getCurrentURL(activeSpan);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n if (!shouldPropagateTraceForUrl(url, tracePropagationTargets, this._urlMatchesTargetsMap)) {\n DEBUG_BUILD &&\n debug.log('[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:', url);\n return;\n }\n\n const existingBaggageHeader = getExistingBaggage(carrier);\n const existingSentryTraceHeader = getExistingSentryTrace(carrier);\n\n let baggage = propagation.getBaggage(context) || propagation.createBaggage({});\n\n const { dynamicSamplingContext, traceId, spanId, sampled } = getInjectionData(context);\n\n if (existingBaggageHeader) {\n const baggageEntries = parseBaggageHeader(existingBaggageHeader);\n\n if (baggageEntries) {\n Object.entries(baggageEntries).forEach(([key, value]) => {\n if (!existingSentryTraceHeader && key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n // Edge case: A baggage header with sentry- keys was added previously but no\n // sentry-trace header. In this case we remove the old sentry-keys and add new\n // ones below.\n return;\n }\n baggage = baggage.setEntry(key, { value });\n });\n }\n }\n\n if (!existingSentryTraceHeader && dynamicSamplingContext) {\n baggage = Object.entries(dynamicSamplingContext).reduce((b, [dscKey, dscValue]) => {\n if (dscValue) {\n return b.setEntry(`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`, { value: dscValue });\n }\n return b;\n }, baggage);\n }\n\n // We also want to avoid setting the default OTEL trace ID, if we get that for whatever reason\n if (!existingSentryTraceHeader && traceId && traceId !== INVALID_TRACEID) {\n setter.set(carrier, SENTRY_TRACE_HEADER, generateSentryTraceHeader(traceId, spanId, sampled));\n\n if (propagateTraceparent) {\n setter.set(carrier, 'traceparent', generateTraceparentHeader(traceId, spanId, sampled));\n }\n }\n\n super.inject(propagation.setBaggage(context, baggage), carrier, setter);\n }\n\n /**\n * @inheritDoc\n */\n public extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const maybeSentryTraceHeader: string | string[] | undefined = getter.get(carrier, SENTRY_TRACE_HEADER);\n const baggage = getter.get(carrier, SENTRY_BAGGAGE_HEADER);\n\n const sentryTrace = maybeSentryTraceHeader\n ? Array.isArray(maybeSentryTraceHeader)\n ? maybeSentryTraceHeader[0]\n : maybeSentryTraceHeader\n : undefined;\n\n // Add remote parent span context\n // If there is no incoming trace, this will return the context as-is\n return ensureScopesOnContext(getContextWithRemoteActiveSpan(context, { sentryTrace, baggage }));\n }\n\n /**\n * @inheritDoc\n */\n public fields(): string[] {\n return [SENTRY_TRACE_HEADER, SENTRY_BAGGAGE_HEADER, 'traceparent'];\n }\n}\n\n// Re-exported from @sentry/core for backwards compatibility\nexport { shouldPropagateTraceForUrl } from '@sentry/core';\n\n/**\n * Get propagation injection data for the given context.\n * The additional options can be passed to override the scope and client that is otherwise derived from the context.\n */\nexport function getInjectionData(\n context: Context,\n options: { scope?: Scope; client?: Client } = {},\n): {\n dynamicSamplingContext: Partial | undefined;\n traceId: string | undefined;\n spanId: string | undefined;\n sampled: boolean | undefined;\n} {\n const span = trace.getSpan(context);\n\n // If we have a remote span, the spanId should be considered as the parentSpanId, not spanId itself\n // Instead, we use a virtual (generated) spanId for propagation\n if (span?.spanContext().isRemote) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: undefined,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // If we have a local span, we just use this\n if (span) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: spanContext.spanId,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // Else we try to use the propagation context from the scope\n // The only scenario where this should happen is when we neither have a span, nor an incoming trace\n const scope = options.scope || getScopesFromContext(context)?.scope || getCurrentScope();\n const client = options.client || getClient();\n\n const propagationContext = scope.getPropagationContext();\n const dynamicSamplingContext = client ? getDynamicSamplingContextFromScope(client, scope) : undefined;\n return {\n dynamicSamplingContext,\n traceId: propagationContext.traceId,\n spanId: propagationContext.propagationSpanId,\n sampled: propagationContext.sampled,\n };\n}\n\nfunction getContextWithRemoteActiveSpan(\n ctx: Context,\n { sentryTrace, baggage }: Parameters[0],\n): Context {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n\n const { traceId, parentSpanId, sampled, dsc } = propagationContext;\n\n const client = getClient();\n const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n\n // We only want to set the virtual span if we are continuing a concrete trace\n // Otherwise, we ignore the incoming trace here, e.g. if we have no trace headers\n if (!parentSpanId || (client && !shouldContinueTrace(client, incomingDsc?.org_id))) {\n return ctx;\n }\n\n const spanContext = generateRemoteSpanContext({\n traceId,\n spanId: parentSpanId,\n sampled,\n dsc,\n });\n\n return trace.setSpanContext(ctx, spanContext);\n}\n\n/**\n * Takes trace strings and propagates them as a remote active span.\n * This should be used in addition to `continueTrace` in OTEL-powered environments.\n */\nexport function continueTraceAsRemoteSpan(\n ctx: Context,\n options: Parameters[0],\n callback: () => T,\n): T {\n const ctxWithSpanContext = ensureScopesOnContext(getContextWithRemoteActiveSpan(ctx, options));\n\n return context.with(ctxWithSpanContext, callback);\n}\n\nfunction ensureScopesOnContext(ctx: Context): Context {\n // If there are no scopes yet on the context, ensure we have them\n const scopes = getScopesFromContext(ctx);\n const newScopes = {\n // If we have no scope here, this is most likely either the root context or a context manually derived from it\n // In this case, we want to fork the current scope, to ensure we do not pollute the root scope\n scope: scopes ? scopes.scope : getCurrentScope().clone(),\n isolationScope: scopes ? scopes.isolationScope : getIsolationScope(),\n };\n\n return setScopesOnContext(ctx, newScopes);\n}\n\n/** Try to get the existing baggage header so we can merge this in. */\nfunction getExistingBaggage(carrier: unknown): string | undefined {\n try {\n const baggage = (carrier as Record)[SENTRY_BAGGAGE_HEADER];\n return Array.isArray(baggage) ? baggage.join(',') : baggage;\n } catch {\n return undefined;\n }\n}\n\nfunction getExistingSentryTrace(carrier: unknown): string | string[] | undefined {\n try {\n return (carrier as Record)[SENTRY_TRACE_HEADER];\n } catch {\n return undefined;\n }\n}\n\n/**\n * It is pretty tricky to get access to the outgoing request URL of a request in the propagator.\n * As we only have access to the context of the span to be sent and the carrier (=headers),\n * but the span may be unsampled and thus have no attributes.\n *\n * So we use the following logic:\n * 1. If we have an active span, we check if it has a URL attribute.\n * 2. Else, if the active span has no URL attribute (e.g. it is unsampled), we check a special trace state (which we set in our sampler).\n */\nfunction getCurrentURL(span: Span): string | undefined {\n const spanData = spanToJSON(span).data;\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const urlAttribute = spanData[SEMATTRS_HTTP_URL] || spanData[ATTR_URL_FULL];\n if (typeof urlAttribute === 'string') {\n return urlAttribute;\n }\n\n // Also look at the traceState, which we may set in the sampler even for unsampled spans\n const urlTraceState = span.spanContext().traceState?.get(SENTRY_TRACE_STATE_URL);\n if (urlTraceState) {\n return urlTraceState;\n }\n\n return undefined;\n}\n\nfunction generateRemoteSpanContext({\n spanId,\n traceId,\n sampled,\n dsc,\n}: {\n spanId: string;\n traceId: string;\n sampled: boolean | undefined;\n dsc?: Partial;\n}): SpanContext {\n // We store the DSC as OTEL trace state on the span context\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanContext: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n return spanContext;\n}\n","import type { Context, Span, SpanContext, SpanOptions, TimeInput, Tracer } from '@opentelemetry/api';\nimport { context, SpanStatusCode, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed, suppressTracing } from '@opentelemetry/core';\nimport type {\n Client,\n continueTrace as baseContinueTrace,\n DynamicSamplingContext,\n Scope,\n Span as SentrySpan,\n TraceContext,\n} from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n generateSpanId,\n generateTraceId,\n getClient,\n getCurrentScope,\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n getRootSpan,\n getTraceContextFromScope,\n handleCallbackErrors,\n hasSpansEnabled,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n spanToJSON,\n spanToTraceContext,\n} from '@sentry/core';\nimport { continueTraceAsRemoteSpan } from './propagator';\nimport type { OpenTelemetryClient, OpenTelemetrySpanContext } from './types';\nimport { getContextFromScope } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { makeTraceState } from './utils/makeTraceState';\n\n/**\n * Internal helper for starting spans and manual spans. See {@link startSpan} and {@link startSpanManual} for the public APIs.\n * @param options - The span context options\n * @param callback - The callback to execute with the span\n * @param autoEnd - Whether to automatically end the span after the callback completes\n */\nfunction _startSpan(options: OpenTelemetrySpanContext, callback: (span: Span) => T, autoEnd: boolean): T {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n const ctx = shouldSkipSpan ? suppressTracing(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n // If spans are not enabled, ensure we suppress tracing for the span creation\n // but preserve the original context for the callback execution\n // This ensures that we don't create spans when tracing is disabled which\n // would otherwise be a problem for users that don't enable tracing but use\n // custom OpenTelemetry setups.\n if (!hasSpansEnabled()) {\n const suppressedCtx = isTracingSuppressed(ctx) ? ctx : suppressTracing(ctx);\n\n return context.with(suppressedCtx, () => {\n return tracer.startActiveSpan(name, spanOptions, suppressedCtx, span => {\n patchSpanEnd(span);\n // Restore the original unsuppressed context for the callback execution\n // so that custom OpenTelemetry spans maintain the correct context.\n // We use activeCtx (not ctx) because ctx may be suppressed when onlyIfParent is true\n // and no parent span exists. Using activeCtx ensures custom OTel spans are never\n // inadvertently suppressed.\n return context.with(activeCtx, () => {\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n });\n }\n\n return tracer.startActiveSpan(name, spanOptions, ctx, span => {\n patchSpanEnd(span);\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpan(options: OpenTelemetrySpanContext, callback: (span: Span) => T): T {\n return _startSpan(options, callback, true);\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` or the `finish` function passed to the callback manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpanManual(\n options: OpenTelemetrySpanContext,\n callback: (span: Span, finish: () => void) => T,\n): T {\n return _startSpan(options, span => callback(span, () => span.end()), false);\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startInactiveSpan(options: OpenTelemetrySpanContext): Span {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n let ctx = shouldSkipSpan ? suppressTracing(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n if (!hasSpansEnabled()) {\n ctx = isTracingSuppressed(ctx) ? ctx : suppressTracing(ctx);\n }\n\n const span = tracer.startSpan(name, spanOptions, ctx);\n patchSpanEnd(span);\n return span;\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will be root spans.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T {\n const newContextWithActiveSpan = span ? trace.setSpan(context.active(), span) : trace.deleteSpan(context.active());\n return context.with(newContextWithActiveSpan, () => callback(getCurrentScope()));\n}\n\nfunction getTracer(): Tracer {\n const client = getClient();\n return client?.tracer || trace.getTracer('@sentry/opentelemetry', SDK_VERSION);\n}\n\nfunction getSpanOptions(options: OpenTelemetrySpanContext): SpanOptions {\n const { startTime, attributes, kind, op, links } = options;\n\n // OTEL expects timestamps in ms, not seconds\n const fixedStartTime = typeof startTime === 'number' ? ensureTimestampInMilliseconds(startTime) : startTime;\n\n return {\n attributes: op\n ? {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...attributes,\n }\n : attributes,\n kind,\n links,\n startTime: fixedStartTime,\n };\n}\n\nfunction ensureTimestampInMilliseconds(timestamp: number): number {\n const isMs = timestamp < 9999999999;\n return isMs ? timestamp * 1000 : timestamp;\n}\n\n/**\n * Wraps the span's `end()` method so that numeric timestamps passed in seconds\n * are converted to milliseconds before reaching OTel's native `Span.end()`.\n */\nfunction patchSpanEnd(span: Span): void {\n const originalEnd = span.end.bind(span);\n span.end = (endTime?: TimeInput) => {\n return originalEnd(typeof endTime === 'number' ? ensureTimestampInMilliseconds(endTime) : endTime);\n };\n}\n\nfunction getContext(scope: Scope | undefined, forceTransaction: boolean | undefined): Context {\n const ctx = getContextForScope(scope);\n const parentSpan = trace.getSpan(ctx);\n\n // In the case that we have no parent span, we start a new trace\n // Note that if we continue a trace, we'll always have a remote parent span here anyhow\n if (!parentSpan) {\n return ctx;\n }\n\n // If we don't want to force a transaction, and we have a parent span, all good, we just return as-is!\n if (!forceTransaction) {\n return ctx;\n }\n\n // Else, if we do have a parent span but want to force a transaction, we have to simulate a \"root\" context\n\n // Else, we need to do two things:\n // 1. Unset the parent span from the context, so we'll create a new root span\n // 2. Ensure the propagation context is correct, so we'll continue from the parent span\n const ctxWithoutSpan = trace.deleteSpan(ctx);\n\n const { spanId, traceId } = parentSpan.spanContext();\n const sampled = getSamplingDecision(parentSpan.spanContext());\n\n // In this case, when we are forcing a transaction, we want to treat this like continuing an incoming trace\n // so we set the traceState according to the root span\n const rootSpan = getRootSpan(parentSpan);\n const dsc = getDynamicSamplingContextFromSpan(rootSpan);\n\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanOptions: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n const ctxWithSpanContext = trace.setSpanContext(ctxWithoutSpan, spanOptions);\n\n return ctxWithSpanContext;\n}\n\nfunction getContextForScope(scope?: Scope): Context {\n if (scope) {\n const ctx = getContextFromScope(scope);\n if (ctx) {\n return ctx;\n }\n }\n\n return context.active();\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * This is a custom version of `continueTrace` that is used in OTEL-powered environments.\n * It propagates the trace as a remote span, in addition to setting it on the propagation context.\n */\nexport function continueTrace(options: Parameters[0], callback: () => T): T {\n return continueTraceAsRemoteSpan(context.active(), options, callback);\n}\n\n/**\n * Start a new trace with a unique traceId, ensuring all spans created within the callback\n * share the same traceId.\n *\n * This is a custom version of `startNewTrace` for OTEL-powered environments.\n * It injects the new traceId as a remote span context into the OTEL context, so that\n * `startInactiveSpan` and `startSpan` pick it up correctly.\n */\nexport function startNewTrace(callback: () => T): T {\n const traceId = generateTraceId();\n const spanId = generateSpanId();\n\n const spanContext: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: TraceFlags.NONE,\n };\n\n const ctxWithTrace = trace.setSpanContext(context.active(), spanContext);\n\n return context.with(ctxWithTrace, () => {\n getCurrentScope().setPropagationContext({\n traceId,\n sampleRand: _INTERNAL_safeMathRandom(),\n });\n return callback();\n });\n}\n\n/**\n * Get the trace context for a given scope.\n * We have a custom implementation here because we need an OTEL-specific way to get the span from a scope.\n */\nexport function getTraceContextForScope(\n client: Client,\n scope: Scope,\n): [dynamicSamplingContext: Partial, traceContext: TraceContext] {\n const ctx = getContextFromScope(scope);\n const span = ctx && trace.getSpan(ctx);\n\n const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n\n const dynamicSamplingContext = span\n ? getDynamicSamplingContextFromSpan(span)\n : getDynamicSamplingContextFromScope(client, scope);\n return [dynamicSamplingContext, traceContext];\n}\n\nfunction getActiveSpanWrapper(parentSpan: Span | SentrySpan | undefined | null): (callback: () => T) => T {\n return parentSpan !== undefined\n ? (callback: () => T) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback: () => T) => callback();\n}\n","import { context } from '@opentelemetry/api';\nimport { suppressTracing as suppressTracingImpl } from '@opentelemetry/core';\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nexport function suppressTracing(callback: () => T): T {\n const ctx = suppressTracingImpl(context.active());\n return context.with(ctx, callback);\n}\n","import type { Client } from '@sentry/core';\nimport { getDynamicSamplingContextFromSpan, getRootSpan, spanToTraceContext } from '@sentry/core';\nimport { getActiveSpan } from './utils/getActiveSpan';\n\n/** Ensure the `trace` context is set on all events. */\nexport function setupEventContextTrace(client: Client): void {\n client.on('preprocessEvent', event => {\n const span = getActiveSpan();\n // For transaction events, this is handled separately\n // Because the active span may not be the span that is actually the transaction event\n if (!span || event.type === 'transaction') {\n return;\n }\n\n // If event has already set `trace` context, use that one.\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n const rootSpan = getRootSpan(span);\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(rootSpan),\n ...event.sdkProcessingMetadata,\n };\n\n return event;\n });\n}\n","import * as api from '@opentelemetry/api';\nimport type { Client, Scope, SerializedTraceData, Span } from '@sentry/core';\nimport {\n dynamicSamplingContextToSentryBaggageHeader,\n generateSentryTraceHeader,\n generateTraceparentHeader,\n getCapturedScopesOnSpan,\n} from '@sentry/core';\nimport { getInjectionData } from '../propagator';\nimport { getContextFromScope } from './contextData';\n\n/**\n * Otel-specific implementation of `getTraceData`.\n * @see `@sentry/core` version of `getTraceData` for more information\n */\nexport function getTraceData({\n span,\n scope,\n client,\n propagateTraceparent,\n}: { span?: Span; scope?: Scope; client?: Client; propagateTraceparent?: boolean } = {}): SerializedTraceData {\n let ctx = (scope && getContextFromScope(scope)) ?? api.context.active();\n\n if (span) {\n const { scope } = getCapturedScopesOnSpan(span);\n // fall back to current context if for whatever reason we can't find the one of the span\n ctx = (scope && getContextFromScope(scope)) || api.trace.setSpan(api.context.active(), span);\n }\n\n const { traceId, spanId, sampled, dynamicSamplingContext } = getInjectionData(ctx, { scope, client });\n\n const traceData: SerializedTraceData = {\n 'sentry-trace': generateSentryTraceHeader(traceId, spanId, sampled),\n baggage: dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext),\n };\n\n if (propagateTraceparent) {\n traceData.traceparent = generateTraceparentHeader(traceId, spanId, sampled);\n }\n\n return traceData;\n}\n","import * as api from '@opentelemetry/api';\nimport type { Scope, withActiveSpan as defaultWithActiveSpan } from '@sentry/core';\nimport { getDefaultCurrentScope, getDefaultIsolationScope, setAsyncContextStrategy } from '@sentry/core';\nimport {\n SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_SCOPE_CONTEXT_KEY,\n} from './constants';\nimport { continueTrace, startInactiveSpan, startNewTrace, startSpan, startSpanManual, withActiveSpan } from './trace';\nimport type { CurrentScopes } from './types';\nimport { getContextFromScope, getScopesFromContext } from './utils/contextData';\nimport { getActiveSpan } from './utils/getActiveSpan';\nimport { getTraceData } from './utils/getTraceData';\nimport { suppressTracing } from './utils/suppressTracing';\n\n/**\n * Sets the async context strategy to use follow the OTEL context under the hood.\n * We handle forking a hub inside of our custom OTEL Context Manager (./otelContextManager.ts)\n */\nexport function setOpenTelemetryContextAsyncContextStrategy(): void {\n function getScopes(): CurrentScopes {\n const ctx = api.context.active();\n const scopes = getScopesFromContext(ctx);\n\n if (scopes) {\n return scopes;\n }\n\n // fallback behavior:\n // if, for whatever reason, we can't find scopes on the context here, we have to fix this somehow\n return {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n function withScope(callback: (scope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n // as by default, we don't want to fork this, unless triggered explicitly by `withScope`\n return api.context.with(ctx, () => {\n return callback(getCurrentScope());\n });\n }\n\n function withSetScope(scope: Scope, callback: (scope: Scope) => T): T {\n const ctx = getContextFromScope(scope) || api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_SET_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which picks up this scope as the current scope\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY, scope), () => {\n return callback(scope);\n });\n }\n\n function withIsolationScope(callback: (isolationScope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY, true), () => {\n return callback(getIsolationScope());\n });\n }\n\n function withSetIsolationScope(isolationScope: Scope, callback: (isolationScope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY, isolationScope), () => {\n return callback(getIsolationScope());\n });\n }\n\n function getCurrentScope(): Scope {\n return getScopes().scope;\n }\n\n function getIsolationScope(): Scope {\n return getScopes().isolationScope;\n }\n\n setAsyncContextStrategy({\n withScope,\n withSetScope,\n withSetIsolationScope,\n withIsolationScope,\n getCurrentScope,\n getIsolationScope,\n startSpan,\n startSpanManual,\n startInactiveSpan,\n getActiveSpan,\n suppressTracing,\n getTraceData,\n continueTrace,\n startNewTrace,\n // The types here don't fully align, because our own `Span` type is narrower\n // than the OTEL one - but this is OK for here, as we now we'll only have OTEL spans passed around\n withActiveSpan: withActiveSpan as typeof defaultWithActiveSpan,\n });\n}\n","import type { AsyncLocalStorage } from 'node:async_hooks';\nimport type { Context, ContextManager } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { getCurrentScope, getIsolationScope } from '@sentry/core';\nimport {\n SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_SCOPE_CONTEXT_KEY,\n SENTRY_SCOPES_CONTEXT_KEY,\n} from './constants';\nimport { getScopesFromContext, setContextOnScope, setScopesOnContext } from './utils/contextData';\nimport { setIsSetup } from './utils/setupCheck';\n\nexport type AsyncLocalStorageLookup = {\n asyncLocalStorage: AsyncLocalStorage;\n contextSymbol: symbol;\n};\n\ntype ExtendedContextManagerInstance = new (\n ...args: unknown[]\n) => ContextManagerInstance & {\n getAsyncLocalStorageLookup(): AsyncLocalStorageLookup;\n};\n\n/**\n * Wrap an OpenTelemetry ContextManager in a way that ensures the context is kept in sync with the Sentry Scope.\n *\n * Usage:\n * import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\n * const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n * const contextManager = new SentryContextManager();\n */\nexport function wrapContextManagerClass(\n ContextManagerClass: new (...args: unknown[]) => ContextManagerInstance,\n): ExtendedContextManagerInstance {\n /**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create new scopes per context, so that the OTEL Context & the Sentry Scope are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\n\n // @ts-expect-error TS does not like this, but we know this is fine\n class SentryContextManager extends ContextManagerClass {\n public constructor(...args: unknown[]) {\n super(...args);\n setIsSetup('SentryContextManager');\n }\n /**\n * Overwrite with() of the original AsyncLocalStorageContextManager\n * to ensure we also create new scopes per context.\n */\n public with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const currentScopes = getScopesFromContext(context);\n const currentScope = currentScopes?.scope || getCurrentScope();\n const currentIsolationScope = currentScopes?.isolationScope || getIsolationScope();\n\n const shouldForkIsolationScope = context.getValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY) === true;\n const scope = context.getValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY) as Scope | undefined;\n const isolationScope = context.getValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY) as Scope | undefined;\n\n const newCurrentScope = scope || currentScope.clone();\n const newIsolationScope =\n isolationScope || (shouldForkIsolationScope ? currentIsolationScope.clone() : currentIsolationScope);\n const scopes = { scope: newCurrentScope, isolationScope: newIsolationScope };\n\n const ctx1 = setScopesOnContext(context, scopes);\n\n // Remove the unneeded values again\n const ctx2 = ctx1\n .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);\n\n setContextOnScope(newCurrentScope, ctx2);\n\n return super.with(ctx2, fn, thisArg, ...args);\n }\n\n /**\n * Gets underlying AsyncLocalStorage and symbol to allow lookup of scope.\n */\n public getAsyncLocalStorageLookup(): AsyncLocalStorageLookup {\n return {\n // @ts-expect-error This is on the base class, but not part of the interface\n asyncLocalStorage: this._asyncLocalStorage,\n contextSymbol: SENTRY_SCOPES_CONTEXT_KEY,\n };\n }\n }\n\n return SentryContextManager as unknown as ExtendedContextManagerInstance;\n}\n","import type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from '../semanticAttributes';\nimport { getParentSpanId } from './getParentSpanId';\n\nexport interface SpanNode {\n id: string;\n span?: ReadableSpan;\n parentNode?: SpanNode | undefined;\n children: SpanNode[];\n}\n\ntype SpanMap = Map;\n\n/**\n * This function runs through a list of OTEL Spans, and wraps them in an `SpanNode`\n * where each node holds a reference to their parent node.\n */\nexport function groupSpansWithParents(spans: ReadableSpan[]): SpanNode[] {\n const nodeMap: SpanMap = new Map();\n\n for (const span of spans) {\n createOrUpdateSpanNodeAndRefs(nodeMap, span);\n }\n\n return Array.from(nodeMap, function ([_id, spanNode]) {\n return spanNode;\n });\n}\n\n/**\n * This returns the _local_ parent ID - `parentId` on the span may point to a remote span.\n */\nexport function getLocalParentId(span: ReadableSpan): string | undefined {\n const parentIsRemote = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE] === true;\n // If the parentId is the trace parent ID, we pretend it's undefined\n // As this means the parent exists somewhere else\n return !parentIsRemote ? getParentSpanId(span) : undefined;\n}\n\nfunction createOrUpdateSpanNodeAndRefs(nodeMap: SpanMap, span: ReadableSpan): void {\n const id = span.spanContext().spanId;\n const parentId = getLocalParentId(span);\n\n if (!parentId) {\n createOrUpdateNode(nodeMap, { id, span, children: [] });\n return;\n }\n\n // Else make sure to create parent node as well\n // Note that the parent may not know it's parent _yet_, this may be updated in a later pass\n const parentNode = createOrGetParentNode(nodeMap, parentId);\n const node = createOrUpdateNode(nodeMap, { id, span, parentNode, children: [] });\n parentNode.children.push(node);\n}\n\nfunction createOrGetParentNode(nodeMap: SpanMap, id: string): SpanNode {\n const existing = nodeMap.get(id);\n\n if (existing) {\n return existing;\n }\n\n return createOrUpdateNode(nodeMap, { id, children: [] });\n}\n\nfunction createOrUpdateNode(nodeMap: SpanMap, spanNode: SpanNode): SpanNode {\n const existing = nodeMap.get(spanNode.id);\n\n // If span is already set, nothing to do here\n if (existing?.span) {\n return existing;\n }\n\n // If it exists but span is not set yet, we update it\n if (existing && !existing.span) {\n existing.span = spanNode.span;\n existing.parentNode = spanNode.parentNode;\n return existing;\n }\n\n // Else, we create a new one...\n nodeMap.set(spanNode.id, spanNode);\n return spanNode;\n}\n","import { SpanStatusCode } from '@opentelemetry/api';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes, SpanStatus } from '@sentry/core';\nimport { getSpanStatusFromHttpCode, SPAN_STATUS_ERROR, SPAN_STATUS_OK } from '@sentry/core';\nimport type { AbstractSpan } from '../types';\nimport { spanHasAttributes, spanHasStatus } from './spanTypes';\n\n// canonicalCodesGrpcMap maps some GRPC codes to Sentry's span statuses. See description in grpc documentation.\nconst canonicalGrpcErrorCodesMap: Record = {\n '1': 'cancelled',\n '2': 'unknown_error',\n '3': 'invalid_argument',\n '4': 'deadline_exceeded',\n '5': 'not_found',\n '6': 'already_exists',\n '7': 'permission_denied',\n '8': 'resource_exhausted',\n '9': 'failed_precondition',\n '10': 'aborted',\n '11': 'out_of_range',\n '12': 'unimplemented',\n '13': 'internal_error',\n '14': 'unavailable',\n '15': 'data_loss',\n '16': 'unauthenticated',\n} as const;\n\nconst isStatusErrorMessageValid = (message: string): boolean => {\n return Object.values(canonicalGrpcErrorCodesMap).includes(message as SpanStatus['message']);\n};\n\n/**\n * Get a Sentry span status from an otel span.\n */\nexport function mapStatus(span: AbstractSpan): SpanStatus {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const status = spanHasStatus(span) ? span.status : undefined;\n\n if (status) {\n // Since span status OK is not set by default, we give it priority: https://opentelemetry.io/docs/concepts/signals/traces/#span-status\n if (status.code === SpanStatusCode.OK) {\n return { code: SPAN_STATUS_OK };\n // If the span is already marked as erroneous we return that exact status\n } else if (status.code === SpanStatusCode.ERROR) {\n if (typeof status.message === 'undefined') {\n const inferredStatus = inferStatusFromAttributes(attributes);\n if (inferredStatus) {\n return inferredStatus;\n }\n }\n\n if (status.message && isStatusErrorMessageValid(status.message)) {\n return { code: SPAN_STATUS_ERROR, message: status.message };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n }\n\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n const inferredStatus = inferStatusFromAttributes(attributes);\n\n if (inferredStatus) {\n return inferredStatus;\n }\n\n // We default to setting the spans status to ok.\n if (status?.code === SpanStatusCode.UNSET) {\n return { code: SPAN_STATUS_OK };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n }\n}\n\nfunction inferStatusFromAttributes(attributes: SpanAttributes): SpanStatus | undefined {\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n\n // eslint-disable-next-line deprecation/deprecation\n const httpCodeAttribute = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE];\n // eslint-disable-next-line deprecation/deprecation\n const grpcCodeAttribute = attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n\n const numberHttpCode =\n typeof httpCodeAttribute === 'number'\n ? httpCodeAttribute\n : typeof httpCodeAttribute === 'string'\n ? parseInt(httpCodeAttribute)\n : undefined;\n\n if (typeof numberHttpCode === 'number') {\n return getSpanStatusFromHttpCode(numberHttpCode);\n }\n\n if (typeof grpcCodeAttribute === 'string') {\n return { code: SPAN_STATUS_ERROR, message: canonicalGrpcErrorCodesMap[grpcCodeAttribute] || 'unknown_error' };\n }\n\n return undefined;\n}\n","/* eslint-disable max-lines */\nimport type { Span } from '@opentelemetry/api';\nimport { SpanKind } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_HTTP_RESPONSE_STATUS_CODE, SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport type {\n SpanAttributes,\n SpanJSON,\n SpanOrigin,\n TraceContext,\n TransactionEvent,\n TransactionSource,\n} from '@sentry/core';\nimport {\n _INTERNAL_safeDateNow,\n captureEvent,\n convertSpanLinksForEnvelope,\n debounce,\n debug,\n getCapturedScopesOnSpan,\n getDynamicSamplingContextFromSpan,\n getStatusMessage,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n spanTimeInputToSeconds,\n timedEventsToMeasurements,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from './semanticAttributes';\nimport { getParentSpanId } from './utils/getParentSpanId';\nimport { getRequestSpanData } from './utils/getRequestSpanData';\nimport type { SpanNode } from './utils/groupSpansWithParents';\nimport { getLocalParentId, groupSpansWithParents } from './utils/groupSpansWithParents';\nimport { mapStatus } from './utils/mapStatus';\nimport { parseSpanDescription } from './utils/parseSpanDescription';\n\ntype SpanNodeCompleted = SpanNode & { span: ReadableSpan };\n\nconst MAX_SPAN_COUNT = 1000;\nconst DEFAULT_TIMEOUT = 300; // 5 min\n\ninterface FinishedSpanBucket {\n timestampInS: number;\n spans: Set;\n}\n\n/**\n * A Sentry-specific exporter that converts OpenTelemetry Spans to Sentry Spans & Transactions.\n */\nexport class SentrySpanExporter {\n /*\n * A quick explanation on the buckets: We do bucketing of finished spans for efficiency. This span exporter is\n * accumulating spans until a root span is encountered and then it flushes all the spans that are descendants of that\n * root span. Because it is totally in the realm of possibilities that root spans are never finished, and we don't\n * want to accumulate spans indefinitely in memory, we need to periodically evacuate spans. Naively we could simply\n * store the spans in an array and each time a new span comes in we could iterate through the entire array and\n * evacuate all spans that have an end-timestamp that is older than our limit. This could get quite expensive because\n * we would have to iterate a potentially large number of spans every time we evacuate. We want to avoid these large\n * bursts of computation.\n *\n * Instead we go for a bucketing approach and put spans into buckets, based on what second\n * (modulo the time limit) the span was put into the exporter. With buckets, when we decide to evacuate, we can\n * iterate through the bucket entries instead, which have an upper bound of items, making the evacuation much more\n * efficient. Cleaning up also becomes much more efficient since it simply involves de-referencing a bucket within the\n * bucket array, and letting garbage collection take care of the rest.\n */\n private _finishedSpanBuckets: (FinishedSpanBucket | undefined)[];\n private _finishedSpanBucketSize: number;\n private _spansToBucketEntry: WeakMap;\n private _lastCleanupTimestampInS: number;\n // Essentially a a set of span ids that are already sent. The values are expiration\n // times in this cache so we don't hold onto them indefinitely.\n private _sentSpans: Map;\n /* Internally, we use a debounced flush to give some wiggle room to the span processor to accumulate more spans. */\n private _debouncedFlush: ReturnType;\n\n public constructor(options?: {\n /** Lower bound of time in seconds until spans that are buffered but have not been sent as part of a transaction get cleared from memory. */\n timeout?: number;\n }) {\n this._finishedSpanBucketSize = options?.timeout || DEFAULT_TIMEOUT;\n this._finishedSpanBuckets = new Array(this._finishedSpanBucketSize).fill(undefined);\n this._lastCleanupTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n this._spansToBucketEntry = new WeakMap();\n this._sentSpans = new Map();\n this._debouncedFlush = debounce(this.flush.bind(this), 1, { maxWait: 100 });\n }\n\n /**\n * Export a single span.\n * This is called by the span processor whenever a span is ended.\n */\n public export(span: ReadableSpan): void {\n const currentTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n\n if (this._lastCleanupTimestampInS !== currentTimestampInS) {\n let droppedSpanCount = 0;\n this._finishedSpanBuckets.forEach((bucket, i) => {\n if (bucket && bucket.timestampInS <= currentTimestampInS - this._finishedSpanBucketSize) {\n droppedSpanCount += bucket.spans.size;\n this._finishedSpanBuckets[i] = undefined;\n }\n });\n if (droppedSpanCount > 0) {\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter dropped ${droppedSpanCount} spans because they were pending for more than ${this._finishedSpanBucketSize} seconds.`,\n );\n }\n this._lastCleanupTimestampInS = currentTimestampInS;\n }\n\n const currentBucketIndex = currentTimestampInS % this._finishedSpanBucketSize;\n const currentBucket = this._finishedSpanBuckets[currentBucketIndex] || {\n timestampInS: currentTimestampInS,\n spans: new Set(),\n };\n this._finishedSpanBuckets[currentBucketIndex] = currentBucket;\n currentBucket.spans.add(span);\n this._spansToBucketEntry.set(span, currentBucket);\n\n // If the span doesn't have a local parent ID (it's a root span), we're gonna flush all the ended spans\n const localParentId = getLocalParentId(span);\n if (!localParentId || this._sentSpans.has(localParentId)) {\n this._debouncedFlush();\n }\n }\n\n /**\n * Try to flush any pending spans immediately.\n * This is called internally by the exporter (via _debouncedFlush),\n * but can also be triggered externally if we force-flush.\n */\n public flush(): void {\n const finishedSpans = this._finishedSpanBuckets.flatMap(bucket => (bucket ? Array.from(bucket.spans) : []));\n\n this._flushSentSpanCache();\n const sentSpans = this._maybeSend(finishedSpans);\n\n const sentSpanCount = sentSpans.size;\n const remainingOpenSpanCount = finishedSpans.length - sentSpanCount;\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter exported ${sentSpanCount} spans, ${remainingOpenSpanCount} spans are waiting for their parent spans to finish`,\n );\n\n const expirationDate = _INTERNAL_safeDateNow() + DEFAULT_TIMEOUT * 1000;\n\n for (const span of sentSpans) {\n this._sentSpans.set(span.spanContext().spanId, expirationDate);\n const bucketEntry = this._spansToBucketEntry.get(span);\n if (bucketEntry) {\n bucketEntry.spans.delete(span);\n }\n }\n // Cancel a pending debounced flush, if there is one\n // This can be relevant if we directly flush, circumventing the debounce\n // in that case, we want to cancel any pending debounced flush\n this._debouncedFlush.cancel();\n }\n\n /**\n * Clear the exporter.\n * This is called when the span processor is shut down.\n */\n public clear(): void {\n this._finishedSpanBuckets = this._finishedSpanBuckets.fill(undefined);\n this._sentSpans.clear();\n this._debouncedFlush.cancel();\n }\n\n /**\n * Send the given spans, but only if they are part of a finished transaction.\n *\n * Returns the sent spans.\n * Spans remain unsent when their parent span is not yet finished.\n * This will happen regularly, as child spans are generally finished before their parents.\n * But it _could_ also happen because, for whatever reason, a parent span was lost.\n * In this case, we'll eventually need to clean this up.\n */\n private _maybeSend(spans: ReadableSpan[]): Set {\n const grouped = groupSpansWithParents(spans);\n const sentSpans = new Set();\n\n const rootNodes = this._getCompletedRootNodes(grouped);\n\n for (const root of rootNodes) {\n const span = root.span;\n sentSpans.add(span);\n const transactionEvent = createTransactionForOtelSpan(span);\n\n // Add an attribute to the transaction event to indicate that this transaction is an orphaned transaction\n if (root.parentNode && this._sentSpans.has(root.parentNode.id)) {\n const traceData = transactionEvent.contexts?.trace?.data;\n if (traceData) {\n traceData['sentry.parent_span_already_sent'] = true;\n }\n }\n\n // We'll recursively add all the child spans to this array\n const spans = transactionEvent.spans || [];\n\n for (const child of root.children) {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n }\n\n // spans.sort() mutates the array, but we do not use this anymore after this point\n // so we can safely mutate it here\n transactionEvent.spans =\n spans.length > MAX_SPAN_COUNT\n ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n : spans;\n\n const measurements = timedEventsToMeasurements(span.events);\n if (measurements) {\n transactionEvent.measurements = measurements;\n }\n\n captureEvent(transactionEvent);\n }\n\n return sentSpans;\n }\n\n /** Remove \"expired\" span id entries from the _sentSpans cache. */\n private _flushSentSpanCache(): void {\n const currentTimestamp = _INTERNAL_safeDateNow();\n // Note, it is safe to delete items from the map as we go: https://stackoverflow.com/a/35943995/90297\n for (const [spanId, expirationTime] of this._sentSpans.entries()) {\n if (expirationTime <= currentTimestamp) {\n this._sentSpans.delete(spanId);\n }\n }\n }\n\n /** Check if a node is a completed root node or a node whose parent has already been sent */\n private _nodeIsCompletedRootNodeOrHasSentParent(node: SpanNode): node is SpanNodeCompleted {\n return !!node.span && (!node.parentNode || this._sentSpans.has(node.parentNode.id));\n }\n\n /** Get all completed root nodes from a list of nodes */\n private _getCompletedRootNodes(nodes: SpanNode[]): SpanNodeCompleted[] {\n // TODO: We should be able to remove the explicit `node is SpanNodeCompleted` type guard\n // once we stop supporting TS < 5.5\n return nodes.filter((node): node is SpanNodeCompleted => this._nodeIsCompletedRootNodeOrHasSentParent(node));\n }\n}\n\nfunction parseSpan(span: ReadableSpan): { op?: string; origin?: SpanOrigin; source?: TransactionSource } {\n const attributes = span.attributes;\n\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined;\n const op = attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource | undefined;\n\n return { origin, op, source };\n}\n\n/** Exported only for tests. */\nexport function createTransactionForOtelSpan(span: ReadableSpan): TransactionEvent {\n const { op, description, data, origin = 'manual', source } = getSpanData(span);\n const capturedSpanScopes = getCapturedScopesOnSpan(span as unknown as Span);\n\n const sampleRate = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] as number | undefined;\n\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: sampleRate,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n ...data,\n ...removeSentryAttributes(span.attributes),\n };\n\n const { links } = span;\n const { traceId: trace_id, spanId: span_id } = span.spanContext();\n\n // If parentSpanIdFromTraceState is defined at all, we want it to take precedence\n // In that case, an empty string should be interpreted as \"no parent span id\",\n // even if `span.parentSpanId` is set\n // this is the case when we are starting a new trace, where we have a virtual span based on the propagationContext\n // We only want to continue the traceId in this case, but ignore the parent span\n const parent_span_id = getParentSpanId(span);\n\n const status = mapStatus(span);\n\n const traceContext: TraceContext = {\n parent_span_id,\n span_id,\n trace_id,\n data: attributes,\n origin,\n op,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n links: convertSpanLinksForEnvelope(links),\n };\n\n const statusCode = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n const responseContext = typeof statusCode === 'number' ? { response: { status_code: statusCode } } : undefined;\n\n const transactionEvent: TransactionEvent = {\n contexts: {\n trace: traceContext,\n otel: {\n resource: span.resource.attributes,\n },\n ...responseContext,\n },\n spans: [],\n start_timestamp: spanTimeInputToSeconds(span.startTime),\n timestamp: spanTimeInputToSeconds(span.endTime),\n transaction: description,\n type: 'transaction',\n sdkProcessingMetadata: {\n capturedSpanScope: capturedSpanScopes.scope,\n capturedSpanIsolationScope: capturedSpanScopes.isolationScope,\n sampleRate,\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span as unknown as Span),\n },\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n return transactionEvent;\n}\n\nfunction createAndFinishSpanForOtelSpan(node: SpanNode, spans: SpanJSON[], sentSpans: Set): void {\n const span = node.span;\n\n if (span) {\n sentSpans.add(span);\n }\n\n const shouldDrop = !span;\n\n // If this span should be dropped, we still want to create spans for the children of this\n if (shouldDrop) {\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n return;\n }\n\n const span_id = span.spanContext().spanId;\n const trace_id = span.spanContext().traceId;\n const parentSpanId = getParentSpanId(span);\n\n const { attributes, startTime, endTime, links } = span;\n\n const { op, description, data, origin = 'manual' } = getSpanData(span);\n const allData = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...removeSentryAttributes(attributes),\n ...data,\n };\n\n const status = mapStatus(span);\n\n const spanJSON: SpanJSON = {\n span_id,\n trace_id,\n data: allData,\n description,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n op,\n origin,\n measurements: timedEventsToMeasurements(span.events),\n links: convertSpanLinksForEnvelope(links),\n };\n\n spans.push(spanJSON);\n\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n}\n\nfunction getSpanData(span: ReadableSpan): {\n data: Record;\n op?: string;\n description: string;\n source?: TransactionSource;\n origin?: SpanOrigin;\n} {\n const { op: definedOp, source: definedSource, origin } = parseSpan(span);\n const { op: inferredOp, description, source: inferredSource, data: inferredData } = parseSpanDescription(span);\n\n const op = definedOp || inferredOp;\n const source = definedSource || inferredSource;\n\n const data = { ...inferredData, ...getData(span) };\n\n return {\n op,\n description,\n source,\n origin,\n data,\n };\n}\n\n/**\n * Remove custom `sentry.` attributes we do not need to send.\n * These are more carrier attributes we use inside of the SDK, we do not need to send them to the API.\n */\nfunction removeSentryAttributes(data: Record): Record {\n const cleanedData = { ...data };\n\n /* eslint-disable @typescript-eslint/no-dynamic-delete */\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n /* eslint-enable @typescript-eslint/no-dynamic-delete */\n\n return cleanedData;\n}\n\nfunction getData(span: ReadableSpan): Record {\n const attributes = span.attributes;\n const data: Record = {};\n\n if (span.kind !== SpanKind.INTERNAL) {\n data['otel.kind'] = SpanKind[span.kind];\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeHttpStatusCodeAttribute = attributes[SEMATTRS_HTTP_STATUS_CODE];\n if (maybeHttpStatusCodeAttribute) {\n data[ATTR_HTTP_RESPONSE_STATUS_CODE] = maybeHttpStatusCodeAttribute as string;\n }\n\n const requestData = getRequestSpanData(span);\n\n if (requestData.url) {\n data.url = requestData.url;\n }\n\n if (requestData['http.query']) {\n data['http.query'] = requestData['http.query'].slice(1);\n }\n if (requestData['http.fragment']) {\n data['http.fragment'] = requestData['http.fragment'].slice(1);\n }\n\n return data;\n}\n","import type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT, trace } from '@opentelemetry/api';\nimport type { ReadableSpan, Span, SpanProcessor as SpanProcessorInterface } from '@opentelemetry/sdk-trace-base';\nimport {\n addChildSpanToSpan,\n getClient,\n getDefaultCurrentScope,\n getDefaultIsolationScope,\n logSpanEnd,\n logSpanStart,\n setCapturedScopesOnSpan,\n} from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from './semanticAttributes';\nimport { SentrySpanExporter } from './spanExporter';\nimport { getScopesFromContext } from './utils/contextData';\nimport { setIsSetup } from './utils/setupCheck';\n\nfunction onSpanStart(span: Span, parentContext: Context): void {\n // This is a reliable way to get the parent span - because this is exactly how the parent is identified in the OTEL SDK\n const parentSpan = trace.getSpan(parentContext);\n\n let scopes = getScopesFromContext(parentContext);\n\n // We need access to the parent span in order to be able to move up the span tree for breadcrumbs\n if (parentSpan && !parentSpan.spanContext().isRemote) {\n addChildSpanToSpan(parentSpan, span);\n }\n\n // We need this in the span exporter\n if (parentSpan?.spanContext().isRemote) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE, true);\n }\n\n // The root context does not have scopes stored, so we check for this specifically\n // As fallback we attach the global scopes\n if (parentContext === ROOT_CONTEXT) {\n scopes = {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n // We need the scope at time of span creation in order to apply it to the event when the span is finished\n if (scopes) {\n setCapturedScopesOnSpan(span, scopes.scope, scopes.isolationScope);\n }\n\n logSpanStart(span);\n\n const client = getClient();\n client?.emit('spanStart', span);\n}\n\nfunction onSpanEnd(span: Span): void {\n logSpanEnd(span);\n\n const client = getClient();\n client?.emit('spanEnd', span);\n}\n\n/**\n * Converts OpenTelemetry Spans to Sentry Spans and sends them to Sentry via\n * the Sentry SDK.\n */\nexport class SentrySpanProcessor implements SpanProcessorInterface {\n private _exporter: SentrySpanExporter;\n\n public constructor(options?: { timeout?: number }) {\n setIsSetup('SentrySpanProcessor');\n this._exporter = new SentrySpanExporter(options);\n }\n\n /**\n * @inheritDoc\n */\n public async forceFlush(): Promise {\n this._exporter.flush();\n }\n\n /**\n * @inheritDoc\n */\n public async shutdown(): Promise {\n this._exporter.clear();\n }\n\n /**\n * @inheritDoc\n */\n public onStart(span: Span, parentContext: Context): void {\n onSpanStart(span, parentContext);\n }\n\n /** @inheritDoc */\n public onEnd(span: Span & ReadableSpan): void {\n onSpanEnd(span);\n\n this._exporter.export(span);\n }\n}\n","/* eslint-disable complexity */\nimport type { Context, Span, TraceState as TraceStateInterface } from '@opentelemetry/api';\nimport { isSpanContextValid, SpanKind, trace } from '@opentelemetry/api';\nimport { TraceState } from '@opentelemetry/core';\nimport type { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-base';\nimport { SamplingDecision } from '@opentelemetry/sdk-trace-base';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { Client, SpanAttributes } from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n baggageHeaderToDynamicSamplingContext,\n debug,\n hasSpansEnabled,\n parseSampleRate,\n sampleSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n} from '@sentry/core';\nimport {\n SENTRY_TRACE_STATE_DSC,\n SENTRY_TRACE_STATE_SAMPLE_RAND,\n SENTRY_TRACE_STATE_SAMPLE_RATE,\n SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING,\n SENTRY_TRACE_STATE_URL,\n} from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { getScopesFromContext } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { inferSpanData } from './utils/parseSpanDescription';\nimport { setIsSetup } from './utils/setupCheck';\n\n/**\n * A custom OTEL sampler that uses Sentry sampling rates to make its decision\n */\nexport class SentrySampler implements Sampler {\n private _client: Client;\n\n public constructor(client: Client) {\n this._client = client;\n setIsSetup('SentrySampler');\n }\n\n /** @inheritDoc */\n public shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n spanAttributes: SpanAttributes,\n _links: unknown,\n ): SamplingResult {\n const options = this._client.getOptions();\n\n const parentSpan = getValidSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n if (!hasSpansEnabled(options)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n // `ATTR_HTTP_REQUEST_METHOD` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_METHOD`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const maybeSpanHttpMethod = spanAttributes[SEMATTRS_HTTP_METHOD] || spanAttributes[ATTR_HTTP_REQUEST_METHOD];\n\n // If we have a http.client span that has no local parent, we never want to sample it\n // but we want to leave downstream sampling decisions up to the server\n if (spanKind === SpanKind.CLIENT && maybeSpanHttpMethod && (!parentSpan || parentContext?.isRemote)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const parentSampled = parentSpan ? getParentSampled(parentSpan, traceId, spanName) : undefined;\n const isRootSpan = !parentSpan || parentContext?.isRemote;\n\n // We only sample based on parameters (like tracesSampleRate or tracesSampler) for root spans (which is done in sampleSpan).\n // Non-root-spans simply inherit the sampling decision from their parent.\n if (!isRootSpan) {\n return wrapSamplingDecision({\n decision: parentSampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n });\n }\n\n // We want to pass the inferred name & attributes to the sampler method\n const {\n description: inferredSpanName,\n data: inferredAttributes,\n op,\n } = inferSpanData(spanName, spanAttributes, spanKind);\n\n const mergedAttributes = {\n ...inferredAttributes,\n ...spanAttributes,\n };\n\n if (op) {\n mergedAttributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] = op;\n }\n\n const mutableSamplingDecision = { decision: true };\n this._client.emit(\n 'beforeSampling',\n {\n spanAttributes: mergedAttributes,\n spanName: inferredSpanName,\n parentSampled: parentSampled,\n parentContext: parentContext,\n },\n mutableSamplingDecision,\n );\n if (!mutableSamplingDecision.decision) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const { isolationScope } = getScopesFromContext(context) ?? {};\n\n const dscString = parentContext?.traceState ? parentContext.traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n const sampleRand = parseSampleRate(dsc?.sample_rand) ?? _INTERNAL_safeMathRandom();\n\n const [sampled, sampleRate, localSampleRateWasApplied] = sampleSpan(\n options,\n {\n name: inferredSpanName,\n attributes: mergedAttributes,\n normalizedRequest: isolationScope?.getScopeData().sdkProcessingMetadata.normalizedRequest,\n parentSampled,\n parentSampleRate: parseSampleRate(dsc?.sample_rate),\n },\n sampleRand,\n );\n\n const method = `${maybeSpanHttpMethod}`.toUpperCase();\n if (method === 'OPTIONS' || method === 'HEAD') {\n DEBUG_BUILD && debug.log(`[Tracing] Not sampling span because HTTP method is '${method}' for ${spanName}`);\n\n return wrapSamplingDecision({\n decision: SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: 0, // we don't want to sample anything in the downstream trace either\n });\n }\n\n if (\n !sampled &&\n // We check for `parentSampled === undefined` because we only want to record client reports for spans that are trace roots (ie. when there was incoming trace)\n parentSampled === undefined\n ) {\n DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n this._client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return {\n ...wrapSamplingDecision({\n decision: sampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: localSampleRateWasApplied ? sampleRate : undefined,\n }),\n attributes: {\n // We set the sample rate on the span when a local sample rate was applied to better understand how traces were sampled in Sentry\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: localSampleRateWasApplied ? sampleRate : undefined,\n },\n };\n }\n\n /** Returns the sampler name or short description with the configuration. */\n public toString(): string {\n return 'SentrySampler';\n }\n}\n\nfunction getParentSampled(parentSpan: Span, traceId: string, spanName: string): boolean | undefined {\n const parentContext = parentSpan.spanContext();\n\n // Only inherit sample rate if `traceId` is the same\n // Note for testing: `isSpanContextValid()` checks the format of the traceId/spanId, so we need to pass valid ones\n if (isSpanContextValid(parentContext) && parentContext.traceId === traceId) {\n if (parentContext.isRemote) {\n const parentSampled = getSamplingDecision(parentSpan.spanContext());\n DEBUG_BUILD &&\n debug.log(`[Tracing] Inheriting remote parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n const parentSampled = getSamplingDecision(parentContext);\n DEBUG_BUILD && debug.log(`[Tracing] Inheriting parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n return undefined;\n}\n\n/**\n * Wrap a sampling decision with data that Sentry needs to work properly with it.\n * If you pass `decision: undefined`, it will be treated as `NOT_RECORDING`, but in contrast to passing `NOT_RECORDING`\n * it will not propagate this decision to downstream Sentry SDKs.\n */\nexport function wrapSamplingDecision({\n decision,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate,\n}: {\n decision: SamplingDecision | undefined;\n context: Context;\n spanAttributes: SpanAttributes;\n sampleRand?: number;\n downstreamTraceSampleRate?: number;\n}): SamplingResult {\n let traceState = getBaseTraceState(context, spanAttributes);\n\n // We will override the propagated sample rate downstream when\n // - the tracesSampleRate is applied\n // - the tracesSampler is invoked\n // Since unsampled OTEL spans (NonRecordingSpans) cannot hold attributes we need to store this on the (trace)context.\n if (downstreamTraceSampleRate !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RATE, `${downstreamTraceSampleRate}`);\n }\n\n if (sampleRand !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RAND, `${sampleRand}`);\n }\n\n // If the decision is undefined, we treat it as NOT_RECORDING, but we don't propagate this decision to downstream SDKs\n // Which is done by not setting `SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING` traceState\n if (decision == undefined) {\n return { decision: SamplingDecision.NOT_RECORD, traceState };\n }\n\n if (decision === SamplingDecision.NOT_RECORD) {\n return { decision, traceState: traceState.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') };\n }\n\n return { decision, traceState };\n}\n\nfunction getBaseTraceState(context: Context, spanAttributes: SpanAttributes): TraceStateInterface {\n const parentSpan = trace.getSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n let traceState = parentContext?.traceState || new TraceState();\n\n // We always keep the URL on the trace state, so we can access it in the propagator\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const url = spanAttributes[SEMATTRS_HTTP_URL] || spanAttributes[ATTR_URL_FULL];\n if (url && typeof url === 'string') {\n traceState = traceState.set(SENTRY_TRACE_STATE_URL, url);\n }\n\n return traceState;\n}\n\n/**\n * If the active span is invalid, we want to ignore it as parent.\n * This aligns with how otel tracers and default samplers handle these cases.\n */\nfunction getValidSpan(context: Context): Span | undefined {\n const span = trace.getSpan(context);\n return span && isSpanContextValid(span.spanContext()) ? span : undefined;\n}\n","import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { wrapContextManagerClass } from '@sentry/opentelemetry';\n\n/**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\nexport const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n","import { diag, DiagLogLevel } from '@opentelemetry/api';\nimport { debug } from '@sentry/core';\n\n/**\n * Setup the OTEL logger to use our own debug logger.\n */\nexport function setupOpenTelemetryLogger(): void {\n // Disable diag, to ensure this works even if called multiple times\n diag.disable();\n diag.setLogger(\n {\n error: debug.error,\n warn: debug.warn,\n info: debug.log,\n debug: debug.log,\n verbose: debug.log,\n },\n DiagLogLevel.DEBUG,\n );\n}\n","import type { ChildProcess } from 'node:child_process';\nimport * as diagnosticsChannel from 'node:diagnostics_channel';\nimport type { Worker } from 'node:worker_threads';\nimport { addBreadcrumb, captureException, defineIntegration } from '@sentry/core';\n\ninterface Options {\n /**\n * Whether to include child process arguments in breadcrumbs data.\n *\n * @default false\n */\n includeChildProcessArgs?: boolean;\n\n /**\n * Whether to capture errors from worker threads.\n *\n * @default true\n */\n captureWorkerErrors?: boolean;\n}\n\nconst INTEGRATION_NAME = 'ChildProcess';\n\n/**\n * Capture breadcrumbs and events for child processes and worker threads.\n */\nexport const childProcessIntegration = defineIntegration((options: Options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setup() {\n diagnosticsChannel.channel('child_process').subscribe((event: unknown) => {\n if (event && typeof event === 'object' && 'process' in event) {\n captureChildProcessEvents(event.process as ChildProcess, options);\n }\n });\n\n diagnosticsChannel.channel('worker_threads').subscribe((event: unknown) => {\n if (event && typeof event === 'object' && 'worker' in event) {\n captureWorkerThreadEvents(event.worker as Worker, options);\n }\n });\n },\n };\n});\n\nfunction captureChildProcessEvents(child: ChildProcess, options: Options): void {\n let hasExited = false;\n let data: Record | undefined;\n\n child\n .on('spawn', () => {\n // This is Sentry getting macOS OS context\n if (child.spawnfile === '/usr/bin/sw_vers') {\n hasExited = true;\n return;\n }\n\n data = { spawnfile: child.spawnfile };\n if (options.includeChildProcessArgs) {\n data.spawnargs = child.spawnargs;\n }\n })\n .on('exit', code => {\n if (!hasExited) {\n hasExited = true;\n\n // Only log for non-zero exit codes\n if (code !== null && code !== 0) {\n addBreadcrumb({\n category: 'child_process',\n message: `Child process exited with code '${code}'`,\n level: code === 0 ? 'info' : 'warning',\n data,\n });\n }\n }\n })\n .on('error', error => {\n if (!hasExited) {\n hasExited = true;\n\n addBreadcrumb({\n category: 'child_process',\n message: `Child process errored with '${error.message}'`,\n level: 'error',\n data,\n });\n }\n });\n}\n\nfunction captureWorkerThreadEvents(worker: Worker, options: Options): void {\n let threadId: number | undefined;\n\n worker\n .on('online', () => {\n threadId = worker.threadId;\n })\n .on('error', error => {\n if (options.captureWorkerErrors !== false) {\n captureException(error, {\n mechanism: { type: 'auto.child_process.worker_thread', handled: false, data: { threadId: String(threadId) } },\n });\n } else {\n addBreadcrumb({\n category: 'worker_thread',\n message: `Worker thread errored with '${error.message}'`,\n level: 'error',\n data: { threadId },\n });\n }\n });\n}\n","/* eslint-disable max-lines */\n\nimport { execFile } from 'node:child_process';\nimport { readdir, readFile } from 'node:fs';\nimport * as os from 'node:os';\nimport { join } from 'node:path';\nimport { promisify } from 'node:util';\nimport type {\n AppContext,\n CloudResourceContext,\n Contexts,\n CultureContext,\n DeviceContext,\n Event,\n IntegrationFn,\n OsContext,\n} from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\n\nexport const readFileAsync = promisify(readFile);\nexport const readDirAsync = promisify(readdir);\n\n// Process enhanced with methods from Node 18, 20, 22 as @types/node\n// is on `14.18.0` to match minimum version requirements of the SDK\ninterface ProcessWithCurrentValues extends NodeJS.Process {\n availableMemory?(): number;\n}\n\nconst INTEGRATION_NAME = 'Context';\n\ninterface DeviceContextOptions {\n cpu?: boolean;\n memory?: boolean;\n}\n\ninterface ContextOptions {\n app?: boolean;\n os?: boolean;\n device?: DeviceContextOptions | boolean;\n culture?: boolean;\n cloudResource?: boolean;\n}\n\nconst _nodeContextIntegration = ((options: ContextOptions = {}) => {\n let cachedContext: Promise | undefined;\n\n const _options = {\n app: true,\n os: true,\n device: true,\n culture: true,\n cloudResource: true,\n ...options,\n };\n\n /** Add contexts to the event. Caches the context so we only look it up once. */\n async function addContext(event: Event): Promise {\n if (cachedContext === undefined) {\n cachedContext = _getContexts();\n }\n\n const updatedContext = _updateContext(await cachedContext);\n\n // TODO(v11): conditional with `sendDefaultPii` here?\n event.contexts = {\n ...event.contexts,\n app: { ...updatedContext.app, ...event.contexts?.app },\n os: { ...updatedContext.os, ...event.contexts?.os },\n device: { ...updatedContext.device, ...event.contexts?.device },\n culture: { ...updatedContext.culture, ...event.contexts?.culture },\n cloud_resource: { ...updatedContext.cloud_resource, ...event.contexts?.cloud_resource },\n };\n\n return event;\n }\n\n /** Get the contexts from node. */\n async function _getContexts(): Promise {\n const contexts: Contexts = {};\n\n if (_options.os) {\n contexts.os = await getOsContext();\n }\n\n if (_options.app) {\n contexts.app = getAppContext();\n }\n\n if (_options.device) {\n contexts.device = getDeviceContext(_options.device);\n }\n\n if (_options.culture) {\n const culture = getCultureContext();\n\n if (culture) {\n contexts.culture = culture;\n }\n }\n\n if (_options.cloudResource) {\n contexts.cloud_resource = getCloudResourceContext();\n }\n\n return contexts;\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addContext(event);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Capture context about the environment and the device that the client is running on, to events.\n */\nexport const nodeContextIntegration = defineIntegration(_nodeContextIntegration);\n\n/**\n * Updates the context with dynamic values that can change\n */\nfunction _updateContext(contexts: Contexts): Contexts {\n // Only update properties if they exist\n\n if (contexts.app?.app_memory) {\n contexts.app.app_memory = process.memoryUsage().rss;\n }\n\n if (contexts.app?.free_memory && typeof (process as ProcessWithCurrentValues).availableMemory === 'function') {\n const freeMemory = (process as ProcessWithCurrentValues).availableMemory?.();\n if (freeMemory != null) {\n contexts.app.free_memory = freeMemory;\n }\n }\n\n if (contexts.device?.free_memory) {\n contexts.device.free_memory = os.freemem();\n }\n\n return contexts;\n}\n\n/**\n * Returns the operating system context.\n *\n * Based on the current platform, this uses a different strategy to provide the\n * most accurate OS information. Since this might involve spawning subprocesses\n * or accessing the file system, this should only be executed lazily and cached.\n *\n * - On macOS (Darwin), this will execute the `sw_vers` utility. The context\n * has a `name`, `version`, `build` and `kernel_version` set.\n * - On Linux, this will try to load a distribution release from `/etc` and set\n * the `name`, `version` and `kernel_version` fields.\n * - On all other platforms, only a `name` and `version` will be returned. Note\n * that `version` might actually be the kernel version.\n */\nasync function getOsContext(): Promise {\n const platformId = os.platform();\n switch (platformId) {\n case 'darwin':\n return getDarwinInfo();\n case 'linux':\n return getLinuxInfo();\n default:\n return {\n name: PLATFORM_NAMES[platformId] || platformId,\n version: os.release(),\n };\n }\n}\n\nfunction getCultureContext(): CultureContext | undefined {\n try {\n if (typeof process.versions.icu !== 'string') {\n // Node was built without ICU support\n return;\n }\n\n // Check that node was built with full Intl support. Its possible it was built without support for non-English\n // locales which will make resolvedOptions inaccurate\n //\n // https://nodejs.org/api/intl.html#detecting-internationalization-support\n const january = new Date(9e8);\n const spanish = new Intl.DateTimeFormat('es', { month: 'long' });\n if (spanish.format(january) === 'enero') {\n const options = Intl.DateTimeFormat().resolvedOptions();\n\n return {\n locale: options.locale,\n timezone: options.timeZone,\n };\n }\n } catch {\n //\n }\n\n return;\n}\n\n/**\n * Get app context information from process\n */\nexport function getAppContext(): AppContext {\n const app_memory = process.memoryUsage().rss;\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n const app_start_time = new Date(Date.now() - process.uptime() * 1000).toISOString();\n // https://nodejs.org/api/process.html#processavailablememory\n const appContext: AppContext = { app_start_time, app_memory };\n\n if (typeof (process as ProcessWithCurrentValues).availableMemory === 'function') {\n const freeMemory = (process as ProcessWithCurrentValues).availableMemory?.();\n if (freeMemory != null) {\n appContext.free_memory = freeMemory;\n }\n }\n\n return appContext;\n}\n\n/**\n * Gets device information from os\n */\nexport function getDeviceContext(deviceOpt: DeviceContextOptions | true): DeviceContext {\n const device: DeviceContext = {};\n\n // Sometimes os.uptime() throws due to lacking permissions: https://github.com/getsentry/sentry-javascript/issues/8202\n let uptime;\n try {\n uptime = os.uptime();\n } catch {\n // noop\n }\n\n // os.uptime or its return value seem to be undefined in certain environments (e.g. Azure functions).\n // Hence, we only set boot time, if we get a valid uptime value.\n // @see https://github.com/getsentry/sentry-javascript/issues/5856\n if (typeof uptime === 'number') {\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n device.boot_time = new Date(Date.now() - uptime * 1000).toISOString();\n }\n\n device.arch = os.arch();\n\n if (deviceOpt === true || deviceOpt.memory) {\n device.memory_size = os.totalmem();\n device.free_memory = os.freemem();\n }\n\n if (deviceOpt === true || deviceOpt.cpu) {\n const cpuInfo = os.cpus() as os.CpuInfo[] | undefined;\n const firstCpu = cpuInfo?.[0];\n if (firstCpu) {\n device.processor_count = cpuInfo.length;\n device.cpu_description = firstCpu.model;\n device.processor_frequency = firstCpu.speed;\n }\n }\n\n return device;\n}\n\n/** Mapping of Node's platform names to actual OS names. */\nconst PLATFORM_NAMES: { [platform: string]: string } = {\n aix: 'IBM AIX',\n freebsd: 'FreeBSD',\n openbsd: 'OpenBSD',\n sunos: 'SunOS',\n win32: 'Windows',\n ohos: 'OpenHarmony',\n android: 'Android',\n};\n\n/** Linux version file to check for a distribution. */\ninterface DistroFile {\n /** The file name, located in `/etc`. */\n name: string;\n /** Potential distributions to check. */\n distros: [string, ...string[]];\n}\n\n/** Mapping of linux release files located in /etc to distributions. */\nconst LINUX_DISTROS: DistroFile[] = [\n { name: 'fedora-release', distros: ['Fedora'] },\n { name: 'redhat-release', distros: ['Red Hat Linux', 'Centos'] },\n { name: 'redhat_version', distros: ['Red Hat Linux'] },\n { name: 'SuSE-release', distros: ['SUSE Linux'] },\n { name: 'lsb-release', distros: ['Ubuntu Linux', 'Arch Linux'] },\n { name: 'debian_version', distros: ['Debian'] },\n { name: 'debian_release', distros: ['Debian'] },\n { name: 'arch-release', distros: ['Arch Linux'] },\n { name: 'gentoo-release', distros: ['Gentoo Linux'] },\n { name: 'novell-release', distros: ['SUSE Linux'] },\n { name: 'alpine-release', distros: ['Alpine Linux'] },\n];\n\n/** Functions to extract the OS version from Linux release files. */\nconst LINUX_VERSIONS: {\n [identifier: string]: (content: string) => string | undefined;\n} = {\n alpine: content => content,\n arch: content => matchFirst(/distrib_release=(.*)/, content),\n centos: content => matchFirst(/release ([^ ]+)/, content),\n debian: content => content,\n fedora: content => matchFirst(/release (..)/, content),\n mint: content => matchFirst(/distrib_release=(.*)/, content),\n red: content => matchFirst(/release ([^ ]+)/, content),\n suse: content => matchFirst(/VERSION = (.*)\\n/, content),\n ubuntu: content => matchFirst(/distrib_release=(.*)/, content),\n};\n\n/**\n * Executes a regular expression with one capture group.\n *\n * @param regex A regular expression to execute.\n * @param text Content to execute the RegEx on.\n * @returns The captured string if matched; otherwise undefined.\n */\nfunction matchFirst(regex: RegExp, text: string): string | undefined {\n const match = regex.exec(text);\n return match ? match[1] : undefined;\n}\n\n/** Loads the macOS operating system context. */\nasync function getDarwinInfo(): Promise {\n // Default values that will be used in case no operating system information\n // can be loaded. The default version is computed via heuristics from the\n // kernel version, but the build ID is missing.\n const darwinInfo: OsContext = {\n kernel_version: os.release(),\n name: 'Mac OS X',\n version: `10.${Number(os.release().split('.')[0]) - 4}`,\n };\n\n try {\n // We try to load the actual macOS version by executing the `sw_vers` tool.\n // This tool should be available on every standard macOS installation. In\n // case this fails, we stick with the values computed above.\n\n const output = await new Promise((resolve, reject) => {\n execFile('/usr/bin/sw_vers', (error: Error | null, stdout: string) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(stdout);\n });\n });\n\n darwinInfo.name = matchFirst(/^ProductName:\\s+(.*)$/m, output);\n darwinInfo.version = matchFirst(/^ProductVersion:\\s+(.*)$/m, output);\n darwinInfo.build = matchFirst(/^BuildVersion:\\s+(.*)$/m, output);\n } catch {\n // ignore\n }\n\n return darwinInfo;\n}\n\n/** Returns a distribution identifier to look up version callbacks. */\nfunction getLinuxDistroId(name: string): string {\n return (name.split(' ') as [string])[0].toLowerCase();\n}\n\n/** Loads the Linux operating system context. */\nasync function getLinuxInfo(): Promise {\n // By default, we cannot assume anything about the distribution or Linux\n // version. `os.release()` returns the kernel version and we assume a generic\n // \"Linux\" name, which will be replaced down below.\n const linuxInfo: OsContext = {\n kernel_version: os.release(),\n name: 'Linux',\n };\n\n try {\n // We start guessing the distribution by listing files in the /etc\n // directory. This is were most Linux distributions (except Knoppix) store\n // release files with certain distribution-dependent meta data. We search\n // for exactly one known file defined in `LINUX_DISTROS` and exit if none\n // are found. In case there are more than one file, we just stick with the\n // first one.\n const etcFiles = await readDirAsync('/etc');\n const distroFile = LINUX_DISTROS.find(file => etcFiles.includes(file.name));\n if (!distroFile) {\n return linuxInfo;\n }\n\n // Once that file is known, load its contents. To make searching in those\n // files easier, we lowercase the file contents. Since these files are\n // usually quite small, this should not allocate too much memory and we only\n // hold on to it for a very short amount of time.\n const distroPath = join('/etc', distroFile.name);\n const contents = (await readFileAsync(distroPath, { encoding: 'utf-8' })).toLowerCase();\n\n // Some Linux distributions store their release information in the same file\n // (e.g. RHEL and Centos). In those cases, we scan the file for an\n // identifier, that basically consists of the first word of the linux\n // distribution name (e.g. \"red\" for Red Hat). In case there is no match, we\n // just assume the first distribution in our list.\n const { distros } = distroFile;\n linuxInfo.name = distros.find(d => contents.indexOf(getLinuxDistroId(d)) >= 0) || distros[0];\n\n // Based on the found distribution, we can now compute the actual version\n // number. This is different for every distribution, so several strategies\n // are computed in `LINUX_VERSIONS`.\n const id = getLinuxDistroId(linuxInfo.name);\n linuxInfo.version = LINUX_VERSIONS[id]?.(contents);\n } catch {\n // ignore\n }\n\n return linuxInfo;\n}\n\n/**\n * Grabs some information about hosting provider based on best effort.\n */\nfunction getCloudResourceContext(): CloudResourceContext | undefined {\n if (process.env.VERCEL) {\n // https://vercel.com/docs/concepts/projects/environment-variables/system-environment-variables#system-environment-variables\n return {\n 'cloud.provider': 'vercel',\n 'cloud.region': process.env.VERCEL_REGION,\n };\n } else if (process.env.AWS_REGION) {\n // https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html\n return {\n 'cloud.provider': 'aws',\n 'cloud.region': process.env.AWS_REGION,\n 'cloud.platform': process.env.AWS_EXECUTION_ENV,\n };\n } else if (process.env.GCP_PROJECT) {\n // https://cloud.google.com/composer/docs/how-to/managing/environment-variables#reserved_variables\n return {\n 'cloud.provider': 'gcp',\n };\n } else if (process.env.ALIYUN_REGION_ID) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'alibaba_cloud',\n 'cloud.region': process.env.ALIYUN_REGION_ID,\n };\n } else if (process.env.WEBSITE_SITE_NAME && process.env.REGION_NAME) {\n // https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet#app-environment\n return {\n 'cloud.provider': 'azure',\n 'cloud.region': process.env.REGION_NAME,\n };\n } else if (process.env.IBM_CLOUD_REGION) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'ibm_cloud',\n 'cloud.region': process.env.IBM_CLOUD_REGION,\n };\n } else if (process.env.TENCENTCLOUD_REGION) {\n // https://www.tencentcloud.com/document/product/583/32748\n return {\n 'cloud.provider': 'tencent_cloud',\n 'cloud.region': process.env.TENCENTCLOUD_REGION,\n 'cloud.account.id': process.env.TENCENTCLOUD_APPID,\n 'cloud.availability_zone': process.env.TENCENTCLOUD_ZONE,\n };\n } else if (process.env.NETLIFY) {\n // https://docs.netlify.com/configure-builds/environment-variables/#read-only-variables\n return {\n 'cloud.provider': 'netlify',\n };\n } else if (process.env.FLY_REGION) {\n // https://fly.io/docs/reference/runtime-environment/\n return {\n 'cloud.provider': 'fly.io',\n 'cloud.region': process.env.FLY_REGION,\n };\n } else if (process.env.DYNO) {\n // https://devcenter.heroku.com/articles/dynos#local-environment-variables\n return {\n 'cloud.provider': 'heroku',\n };\n } else {\n return undefined;\n }\n}\n","import { createReadStream } from 'node:fs';\nimport { createInterface } from 'node:readline';\nimport type { Event, IntegrationFn, StackFrame } from '@sentry/core';\nimport { debug, defineIntegration, LRUMap, snipLine } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst LRU_FILE_CONTENTS_CACHE = new LRUMap>(10);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new LRUMap(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst INTEGRATION_NAME = 'ContextLines';\n// Determines the upper bound of lineno/colno that we will attempt to read. Large colno values are likely to be\n// minified code while large lineno values are likely to be bundled code.\n// Exported for testing purposes.\nexport const MAX_CONTEXTLINES_COLNO: number = 1000;\nexport const MAX_CONTEXTLINES_LINENO: number = 10000;\n\ninterface ContextLinesOptions {\n /**\n * Sets the number of context lines for each frame when loading a file.\n * Defaults to 7.\n *\n * Set to 0 to disable loading and inclusion of source files.\n **/\n frameContextLines?: number;\n}\n\n/**\n * Exported for testing purposes.\n */\nexport function resetFileContentCache(): void {\n LRU_FILE_CONTENTS_CACHE.clear();\n}\n\n/**\n * Get or init map value\n */\nfunction emplace, K extends string, V>(map: T, key: K, contents: V): V {\n const value = map.get(key);\n\n if (value === undefined) {\n map.set(key, contents);\n return contents;\n }\n\n return value;\n}\n\n/**\n * Determines if context lines should be skipped for a file.\n * - .min.(mjs|cjs|js) files are and not useful since they dont point to the original source\n * - node: prefixed modules are part of the runtime and cannot be resolved to a file\n * - data: skip json, wasm and inline js https://nodejs.org/api/esm.html#data-imports\n */\nfunction shouldSkipContextLinesForFile(path: string): boolean {\n // Test the most common prefix and extension first. These are the ones we\n // are most likely to see in user applications and are the ones we can break out of first.\n if (path.startsWith('node:')) return true;\n if (path.endsWith('.min.js')) return true;\n if (path.endsWith('.min.cjs')) return true;\n if (path.endsWith('.min.mjs')) return true;\n if (path.startsWith('data:')) return true;\n return false;\n}\n\n/**\n * Determines if we should skip contextlines based off the max lineno and colno values.\n */\nfunction shouldSkipContextLinesForFrame(frame: StackFrame): boolean {\n if (frame.lineno !== undefined && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (frame.colno !== undefined && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\n/**\n * Checks if we have all the contents that we need in the cache.\n */\nfunction rangeExistsInContentCache(file: string, range: ReadlineRange): boolean {\n const contents = LRU_FILE_CONTENTS_CACHE.get(file);\n if (contents === undefined) return false;\n\n for (let i = range[0]; i <= range[1]; i++) {\n if (contents[i] === undefined) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates contiguous ranges of lines to read from a file. In the case where context lines overlap,\n * the ranges are merged to create a single range.\n */\nfunction makeLineReaderRanges(lines: number[], linecontext: number): ReadlineRange[] {\n if (!lines.length) {\n return [];\n }\n\n let i = 0;\n const line = lines[0];\n\n if (typeof line !== 'number') {\n return [];\n }\n\n let current = makeContextRange(line, linecontext);\n const out: ReadlineRange[] = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n\n // If the next line falls into the current range, extend the current range to lineno + linecontext.\n const next = lines[i + 1];\n if (typeof next !== 'number') {\n break;\n }\n if (next <= current[1]) {\n current[1] = next + linecontext;\n } else {\n out.push(current);\n current = makeContextRange(next, linecontext);\n }\n\n i++;\n }\n\n return out;\n}\n\n/**\n * Extracts lines from a file and stores them in a cache.\n */\nfunction getContextLinesFromFile(path: string, ranges: ReadlineRange[], output: Record): Promise {\n return new Promise((resolve, _reject) => {\n // It is important *not* to have any async code between createInterface and the 'line' event listener\n // as it will cause the 'line' event to\n // be emitted before the listener is attached.\n const stream = createReadStream(path);\n const lineReaded = createInterface({\n input: stream,\n });\n\n // We need to explicitly destroy the stream to prevent memory leaks,\n // removing the listeners on the readline interface is not enough.\n // See: https://github.com/nodejs/node/issues/9002 and https://github.com/getsentry/sentry-javascript/issues/14892\n function destroyStreamAndResolve(): void {\n stream.destroy();\n resolve();\n }\n\n // Init at zero and increment at the start of the loop because lines are 1 indexed.\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // We should never reach this point, but if we do, we should resolve the promise to prevent it from hanging.\n destroyStreamAndResolve();\n return;\n }\n let rangeStart = range[0];\n let rangeEnd = range[1];\n\n // We use this inside Promise.all, so we need to resolve the promise even if there is an error\n // to prevent Promise.all from short circuiting the rest.\n function onStreamError(e: Error): void {\n // Mark file path as failed to read and prevent multiple read attempts.\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);\n DEBUG_BUILD && debug.error(`Failed to read file: ${path}. Error: ${e}`);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve();\n }\n\n // We need to handle the error event to prevent the process from crashing in < Node 16\n // https://github.com/nodejs/node/pull/31603\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', destroyStreamAndResolve);\n\n lineReaded.on('line', line => {\n lineNumber++;\n if (lineNumber < rangeStart) return;\n\n // !Warning: This mutates the cache by storing the snipped line into the cache.\n output[lineNumber] = snipLine(line, 0);\n\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n // We need to close the file stream and remove listeners, else the reader will continue to run our listener;\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // This should never happen as it means we have a bug in the context.\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\n\n/**\n * Adds surrounding (context) lines of the line that an exception occurred on to the event.\n * This is done by reading the file line by line and extracting the lines. The extracted lines are stored in\n * a cache to prevent multiple reads of the same file. Failures to read a file are similarly cached to prevent multiple\n * failing reads from happening.\n */\n/* eslint-disable complexity */\nasync function addSourceContext(event: Event, contextLines: number): Promise {\n // keep a lookup map of which files we've already enqueued to read,\n // so we don't enqueue the same file multiple times which would cause multiple i/o reads\n const filesToLines: Record = {};\n\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (!exception.stacktrace?.frames?.length) {\n continue;\n }\n\n // Maps preserve insertion order, so we iterate in reverse, starting at the\n // outermost frame and closer to where the exception has occurred (poor mans priority)\n for (let i = exception.stacktrace.frames.length - 1; i >= 0; i--) {\n const frame: StackFrame | undefined = exception.stacktrace.frames[i];\n const filename = frame?.filename;\n\n if (\n !frame ||\n typeof filename !== 'string' ||\n typeof frame.lineno !== 'number' ||\n shouldSkipContextLinesForFile(filename) ||\n shouldSkipContextLinesForFrame(frame)\n ) {\n continue;\n }\n\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n // @ts-expect-error this is defined above\n filesToLines[filename].push(frame.lineno);\n }\n }\n }\n\n const files = Object.keys(filesToLines);\n if (files.length == 0) {\n return event;\n }\n\n const readlinePromises: Promise[] = [];\n for (const file of files) {\n // If we failed to read this before, dont try reading it again.\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) {\n continue;\n }\n\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) {\n continue;\n }\n\n // Sort ranges so that they are sorted by line increasing order and match how the file is read.\n filesToLineRanges.sort((a, b) => a - b);\n // Check if the contents are already in the cache and if we can avoid reading the file again.\n const ranges = makeLineReaderRanges(filesToLineRanges, contextLines);\n if (ranges.every(r => rangeExistsInContentCache(file, r))) {\n continue;\n }\n\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache));\n }\n\n // The promise rejections are caught in order to prevent them from short circuiting Promise.all\n await Promise.all(readlinePromises).catch(() => {\n DEBUG_BUILD && debug.log('Failed to read one or more source files and resolve context lines');\n });\n\n // Perform the same loop as above, but this time we can assume all files are in the cache\n // and attempt to add source context to frames.\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (exception.stacktrace?.frames && exception.stacktrace.frames.length > 0) {\n addSourceContextToFrames(exception.stacktrace.frames, contextLines, LRU_FILE_CONTENTS_CACHE);\n }\n }\n }\n\n return event;\n}\n/* eslint-enable complexity */\n\n/** Adds context lines to frames */\nfunction addSourceContextToFrames(\n frames: StackFrame[],\n contextLines: number,\n cache: LRUMap>,\n): void {\n for (const frame of frames) {\n // Only add context if we have a filename and it hasn't already been added\n if (frame.filename && frame.context_line === undefined && typeof frame.lineno === 'number') {\n const contents = cache.get(frame.filename);\n if (contents === undefined) {\n continue;\n }\n\n addContextToFrame(frame.lineno, frame, contextLines, contents);\n }\n }\n}\n\n/**\n * Clears the context lines from a frame, used to reset a frame to its original state\n * if we fail to resolve all context lines for it.\n */\nfunction clearLineContext(frame: StackFrame): void {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\n\n/**\n * Resolves context lines before and after the given line number and appends them to the frame;\n */\nexport function addContextToFrame(\n lineno: number,\n frame: StackFrame,\n contextLines: number,\n contents: Record | undefined,\n): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping.\n // We already check for lineno before calling this, but since StackFrame lineno ism optional, we check it again.\n if (frame.lineno === undefined || contents === undefined) {\n DEBUG_BUILD && debug.error('Cannot resolve context for frame with no lineno or file contents');\n return;\n }\n\n frame.pre_context = [];\n for (let i = makeRangeStart(lineno, contextLines); i < lineno; i++) {\n // We always expect the start context as line numbers cannot be negative. If we dont find a line, then\n // something went wrong somewhere. Clear the context and return without adding any linecontext.\n const line = contents[i];\n if (line === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${i} in file ${frame.filename}`);\n return;\n }\n\n frame.pre_context.push(line);\n }\n\n // We should always have the context line. If we dont, something went wrong, so we clear the context and return\n // without adding any linecontext.\n if (contents[lineno] === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${lineno} in file ${frame.filename}`);\n return;\n }\n\n frame.context_line = contents[lineno];\n\n const end = makeRangeEnd(lineno, contextLines);\n frame.post_context = [];\n for (let i = lineno + 1; i <= end; i++) {\n // Since we dont track when the file ends, we cant clear the context if we dont find a line as it could\n // just be that we reached the end of the file.\n const line = contents[i];\n if (line === undefined) {\n break;\n }\n frame.post_context.push(line);\n }\n}\n\n// Helper functions for generating line context ranges. They take a line number and the number of lines of context to\n// include before and after the line and generate an inclusive range of indices.\ntype ReadlineRange = [start: number, end: number];\n// Compute inclusive end context range\nfunction makeRangeStart(line: number, linecontext: number): number {\n return Math.max(1, line - linecontext);\n}\n// Compute inclusive start context range\nfunction makeRangeEnd(line: number, linecontext: number): number {\n return line + linecontext;\n}\n// Determine start and end indices for context range (inclusive);\nfunction makeContextRange(line: number, linecontext: number): [start: number, end: number] {\n return [makeRangeStart(line, linecontext), makeRangeEnd(line, linecontext)];\n}\n\n/** Exported only for tests, as a type-safe variant. */\nexport const _contextLinesIntegration = ((options: ContextLinesOptions = {}) => {\n const contextLines = options.frameContextLines !== undefined ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addSourceContext(event, contextLines);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Capture the lines before and after the frame's context.\n */\nexport const contextLinesIntegration = defineIntegration(_contextLinesIntegration);\n","let cachedDebuggerEnabled: boolean | undefined;\n\n/**\n * Was the debugger enabled when this function was first called?\n */\nexport async function isDebuggerEnabled(): Promise {\n if (cachedDebuggerEnabled === undefined) {\n try {\n // Node can be built without inspector support\n const inspector = await import('node:inspector');\n cachedDebuggerEnabled = !!inspector.url();\n } catch {\n cachedDebuggerEnabled = false;\n }\n }\n\n return cachedDebuggerEnabled;\n}\n","import type { Debugger } from 'node:inspector';\n\nexport type Variables = Record;\n\nexport type RateLimitIncrement = () => void;\n\n/**\n * The key used to store the local variables on the error object.\n */\nexport const LOCAL_VARIABLES_KEY = '__SENTRY_ERROR_LOCAL_VARIABLES__';\n\n/**\n * Creates a rate limiter that will call the disable callback when the rate limit is reached and the enable callback\n * when a timeout has occurred.\n * @param maxPerSecond Maximum number of calls per second\n * @param enable Callback to enable capture\n * @param disable Callback to disable capture\n * @returns A function to call to increment the rate limiter count\n */\nexport function createRateLimiter(\n maxPerSecond: number,\n enable: () => void,\n disable: (seconds: number) => void,\n): RateLimitIncrement {\n let count = 0;\n let retrySeconds = 5;\n let disabledTimeout = 0;\n\n setInterval(() => {\n if (disabledTimeout === 0) {\n if (count > maxPerSecond) {\n retrySeconds *= 2;\n disable(retrySeconds);\n\n // Cap at one day\n if (retrySeconds > 86400) {\n retrySeconds = 86400;\n }\n disabledTimeout = retrySeconds;\n }\n } else {\n disabledTimeout -= 1;\n\n if (disabledTimeout === 0) {\n enable();\n }\n }\n\n count = 0;\n }, 1_000).unref();\n\n return () => {\n count += 1;\n };\n}\n\n// Add types for the exception event data\nexport type PausedExceptionEvent = Debugger.PausedEventDataType & {\n data: {\n // This contains error.stack\n description: string;\n objectId?: string;\n };\n};\n\n/** Could this be an anonymous function? */\nexport function isAnonymous(name: string | undefined): boolean {\n return name !== undefined && (name.length === 0 || name === '?' || name === '');\n}\n\n/** Do the function names appear to match? */\nexport function functionNamesMatch(a: string | undefined, b: string | undefined): boolean {\n return a === b || `Object.${a}` === b || a === `Object.${b}` || (isAnonymous(a) && isAnonymous(b));\n}\n\nexport interface FrameVariables {\n function: string;\n vars?: Variables;\n}\n\nexport interface LocalVariablesIntegrationOptions {\n /**\n * Capture local variables for both caught and uncaught exceptions\n *\n * - When false, only uncaught exceptions will have local variables\n * - When true, both caught and uncaught exceptions will have local variables.\n *\n * Defaults to `true`.\n *\n * Capturing local variables for all exceptions can be expensive since the debugger pauses for every throw to collect\n * local variables.\n *\n * To reduce the likelihood of this feature impacting app performance or throughput, this feature is rate-limited.\n * Once the rate limit is reached, local variables will only be captured for uncaught exceptions until a timeout has\n * been reached.\n */\n captureAllExceptions?: boolean;\n /**\n * Maximum number of exceptions to capture local variables for per second before rate limiting is triggered.\n */\n maxExceptionsPerSecond?: number;\n /**\n * When true, local variables will be captured for all frames, including those that are not in_app.\n *\n * Defaults to `false`.\n */\n includeOutOfAppFrames?: boolean;\n}\n\nexport interface LocalVariablesWorkerArgs extends LocalVariablesIntegrationOptions {\n /**\n * Whether to enable debug logging.\n */\n debug: boolean;\n /**\n * Base path used to calculate module name.\n *\n * Defaults to `dirname(process.argv[1])` and falls back to `process.cwd()`\n */\n basePath?: string;\n}\n","import { Worker } from 'node:worker_threads';\nimport type { Event, EventHint, Exception, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration } from '@sentry/core';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type { FrameVariables, LocalVariablesIntegrationOptions, LocalVariablesWorkerArgs } from './common';\nimport { functionNamesMatch, LOCAL_VARIABLES_KEY } from './common';\n\n// This string is a placeholder that gets overwritten with the worker code.\nexport const base64WorkerScript = '###LocalVariablesWorkerScript###';\n\nfunction log(...args: unknown[]): void {\n debug.log('[LocalVariables]', ...args);\n}\n\n/**\n * Adds local variables to exception frames\n */\nexport const localVariablesAsyncIntegration = defineIntegration(((\n integrationOptions: LocalVariablesIntegrationOptions = {},\n) => {\n function addLocalVariablesToException(exception: Exception, localVariables: FrameVariables[]): void {\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const frameLocalVariables = localVariables[i];\n const frame = frames[frameIndex];\n\n if (!frame || !frameLocalVariables) {\n // Drop out if we run out of frames to match up\n break;\n }\n\n if (\n // We need to have vars to add\n frameLocalVariables.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frame.in_app === false && integrationOptions.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frame.function, frameLocalVariables.function)\n ) {\n continue;\n }\n\n frame.vars = frameLocalVariables.vars;\n }\n }\n\n function addLocalVariablesToEvent(event: Event, hint: EventHint): Event {\n if (\n hint.originalException &&\n typeof hint.originalException === 'object' &&\n LOCAL_VARIABLES_KEY in hint.originalException &&\n Array.isArray(hint.originalException[LOCAL_VARIABLES_KEY])\n ) {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception, hint.originalException[LOCAL_VARIABLES_KEY]);\n }\n\n hint.originalException[LOCAL_VARIABLES_KEY] = undefined;\n }\n\n return event;\n }\n\n async function startInspector(): Promise {\n // We load inspector dynamically because on some platforms Node is built without inspector support\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n function startWorker(options: LocalVariablesWorkerArgs): void {\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n worker.once('error', (err: Error) => {\n log('Worker error', err);\n });\n\n worker.once('exit', (code: number) => {\n log('Worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n }\n\n return {\n name: 'LocalVariablesAsync',\n async setup(client: NodeClient) {\n const clientOptions = client.getOptions();\n\n if (!clientOptions.includeLocalVariables) {\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n const options: LocalVariablesWorkerArgs = {\n ...integrationOptions,\n debug: debug.isEnabled(),\n };\n\n startInspector().then(\n () => {\n try {\n startWorker(options);\n } catch (e) {\n debug.error('Failed to start worker', e);\n }\n },\n e => {\n debug.error('Failed to start inspector', e);\n },\n );\n },\n processEvent(event: Event, hint: EventHint): Event {\n return addLocalVariablesToEvent(event, hint);\n },\n };\n}) satisfies IntegrationFn);\n","import type { Debugger, InspectorNotification, Runtime, Session } from 'node:inspector';\nimport type { Event, Exception, IntegrationFn, StackFrame, StackParser } from '@sentry/core';\nimport { debug, defineIntegration, getClient, LRUMap } from '@sentry/core';\nimport { NODE_MAJOR } from '../../nodeVersion';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type {\n FrameVariables,\n LocalVariablesIntegrationOptions,\n PausedExceptionEvent,\n RateLimitIncrement,\n Variables,\n} from './common';\nimport { createRateLimiter, functionNamesMatch } from './common';\n\n/** Creates a unique hash from stack frames */\nexport function hashFrames(frames: StackFrame[] | undefined): string | undefined {\n if (frames === undefined) {\n return;\n }\n\n // Only hash the 10 most recent frames (ie. the last 10)\n return frames.slice(-10).reduce((acc, frame) => `${acc},${frame.function},${frame.lineno},${frame.colno}`, '');\n}\n\n/**\n * We use the stack parser to create a unique hash from the exception stack trace\n * This is used to lookup vars when the exception passes through the event processor\n */\nexport function hashFromStack(stackParser: StackParser, stack: string | undefined): string | undefined {\n if (stack === undefined) {\n return undefined;\n }\n\n return hashFrames(stackParser(stack, 1));\n}\n\ntype OnPauseEvent = InspectorNotification;\nexport interface DebugSession {\n /** Configures and connects to the debug session */\n configureAndConnect(onPause: (message: OnPauseEvent, complete: () => void) => void, captureAll: boolean): void;\n /** Updates which kind of exceptions to capture */\n setPauseOnExceptions(captureAll: boolean): void;\n /** Gets local variables for an objectId */\n getLocalVariables(objectId: string, callback: (vars: Variables) => void): void;\n}\n\ntype Next = (result: T) => void;\ntype Add = (fn: Next) => void;\ntype CallbackWrapper = { add: Add; next: Next };\n\n/** Creates a container for callbacks to be called sequentially */\nexport function createCallbackList(complete: Next): CallbackWrapper {\n // A collection of callbacks to be executed last to first\n let callbacks: Next[] = [];\n\n let completedCalled = false;\n function checkedComplete(result: T): void {\n callbacks = [];\n if (completedCalled) {\n return;\n }\n completedCalled = true;\n complete(result);\n }\n\n // complete should be called last\n callbacks.push(checkedComplete);\n\n function add(fn: Next): void {\n callbacks.push(fn);\n }\n\n function next(result: T): void {\n const popped = callbacks.pop() || checkedComplete;\n\n try {\n popped(result);\n } catch {\n // If there is an error, we still want to call the complete callback\n checkedComplete(result);\n }\n }\n\n return { add, next };\n}\n\n/**\n * Promise API is available as `Experimental` and in Node 19 only.\n *\n * Callback-based API is `Stable` since v14 and `Experimental` since v8.\n * Because of that, we are creating our own `AsyncSession` class.\n *\n * https://nodejs.org/docs/latest-v19.x/api/inspector.html#promises-api\n * https://nodejs.org/docs/latest-v14.x/api/inspector.html\n */\nclass AsyncSession implements DebugSession {\n /** Throws if inspector API is not available */\n private constructor(private readonly _session: Session) {\n //\n }\n\n public static async create(orDefault?: DebugSession | undefined): Promise {\n if (orDefault) {\n return orDefault;\n }\n\n const inspector = await import('node:inspector');\n return new AsyncSession(new inspector.Session());\n }\n\n /** @inheritdoc */\n public configureAndConnect(onPause: (event: OnPauseEvent, complete: () => void) => void, captureAll: boolean): void {\n this._session.connect();\n\n this._session.on('Debugger.paused', event => {\n onPause(event, () => {\n // After the pause work is complete, resume execution or the exception context memory is leaked\n this._session.post('Debugger.resume');\n });\n });\n\n this._session.post('Debugger.enable');\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n public setPauseOnExceptions(captureAll: boolean): void {\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n /** @inheritdoc */\n public getLocalVariables(objectId: string, complete: (vars: Variables) => void): void {\n this._getProperties(objectId, props => {\n const { add, next } = createCallbackList(complete);\n\n for (const prop of props) {\n if (prop.value?.objectId && prop.value.className === 'Array') {\n const id = prop.value.objectId;\n add(vars => this._unrollArray(id, prop.name, vars, next));\n } else if (prop.value?.objectId && prop.value.className === 'Object') {\n const id = prop.value.objectId;\n add(vars => this._unrollObject(id, prop.name, vars, next));\n } else if (prop.value) {\n add(vars => this._unrollOther(prop, vars, next));\n }\n }\n\n next({});\n });\n }\n\n /**\n * Gets all the PropertyDescriptors of an object\n */\n private _getProperties(objectId: string, next: (result: Runtime.PropertyDescriptor[]) => void): void {\n this._session.post(\n 'Runtime.getProperties',\n {\n objectId,\n ownProperties: true,\n },\n (err, params) => {\n if (err) {\n next([]);\n } else {\n next(params.result);\n }\n },\n );\n }\n\n /**\n * Unrolls an array property\n */\n private _unrollArray(objectId: string, name: string, vars: Variables, next: (vars: Variables) => void): void {\n this._getProperties(objectId, props => {\n vars[name] = props\n .filter(v => v.name !== 'length' && !isNaN(parseInt(v.name, 10)))\n .sort((a, b) => parseInt(a.name, 10) - parseInt(b.name, 10))\n .map(v => v.value?.value);\n\n next(vars);\n });\n }\n\n /**\n * Unrolls an object property\n */\n private _unrollObject(objectId: string, name: string, vars: Variables, next: (obj: Variables) => void): void {\n this._getProperties(objectId, props => {\n vars[name] = props\n .map<[string, unknown]>(v => [v.name, v.value?.value])\n .reduce((obj, [key, val]) => {\n obj[key] = val;\n return obj;\n }, {} as Variables);\n\n next(vars);\n });\n }\n\n /**\n * Unrolls other properties\n */\n private _unrollOther(prop: Runtime.PropertyDescriptor, vars: Variables, next: (vars: Variables) => void): void {\n if (prop.value) {\n if ('value' in prop.value) {\n if (prop.value.value === undefined || prop.value.value === null) {\n vars[prop.name] = `<${prop.value.value}>`;\n } else {\n vars[prop.name] = prop.value.value;\n }\n } else if ('description' in prop.value && prop.value.type !== 'function') {\n vars[prop.name] = `<${prop.value.description}>`;\n } else if (prop.value.type === 'undefined') {\n vars[prop.name] = '';\n }\n }\n\n next(vars);\n }\n}\n\nconst INTEGRATION_NAME = 'LocalVariables';\n\n/**\n * Adds local variables to exception frames\n */\nconst _localVariablesSyncIntegration = ((\n options: LocalVariablesIntegrationOptions = {},\n sessionOverride?: DebugSession,\n) => {\n const cachedFrames: LRUMap = new LRUMap(20);\n let rateLimiter: RateLimitIncrement | undefined;\n let shouldProcessEvent = false;\n\n function addLocalVariablesToException(exception: Exception): void {\n const hash = hashFrames(exception.stacktrace?.frames);\n\n if (hash === undefined) {\n return;\n }\n\n // Check if we have local variables for an exception that matches the hash\n // remove is identical to get but also removes the entry from the cache\n const cachedFrame = cachedFrames.remove(hash);\n\n if (cachedFrame === undefined) {\n return;\n }\n\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const cachedFrameVariable = cachedFrame[i];\n const frameVariable = frames[frameIndex];\n\n // Drop out if we run out of frames to match up\n if (!frameVariable || !cachedFrameVariable) {\n break;\n }\n\n if (\n // We need to have vars to add\n cachedFrameVariable.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frameVariable.in_app === false && options.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frameVariable.function, cachedFrameVariable.function)\n ) {\n continue;\n }\n\n frameVariable.vars = cachedFrameVariable.vars;\n }\n }\n\n function addLocalVariablesToEvent(event: Event): Event {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception);\n }\n\n return event;\n }\n\n let setupPromise: Promise | undefined;\n\n async function setup(): Promise {\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n if (!clientOptions?.includeLocalVariables) {\n return;\n }\n\n // Only setup this integration if the Node version is >= v18\n // https://github.com/getsentry/sentry-javascript/issues/7697\n const unsupportedNodeVersion = NODE_MAJOR < 18;\n\n if (unsupportedNodeVersion) {\n debug.log('The `LocalVariables` integration is only supported on Node >= v18.');\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n try {\n const session = await AsyncSession.create(sessionOverride);\n\n const handlePaused = (\n stackParser: StackParser,\n { params: { reason, data, callFrames } }: InspectorNotification,\n complete: () => void,\n ): void => {\n if (reason !== 'exception' && reason !== 'promiseRejection') {\n complete();\n return;\n }\n\n rateLimiter?.();\n\n // data.description contains the original error.stack\n const exceptionHash = hashFromStack(stackParser, data.description);\n\n if (exceptionHash == undefined) {\n complete();\n return;\n }\n\n const { add, next } = createCallbackList(frames => {\n cachedFrames.set(exceptionHash, frames);\n complete();\n });\n\n // Because we're queuing up and making all these calls synchronously, we can potentially overflow the stack\n // For this reason we only attempt to get local variables for the first 5 frames\n for (let i = 0; i < Math.min(callFrames.length, 5); i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { scopeChain, functionName, this: obj } = callFrames[i]!;\n\n const localScope = scopeChain.find(scope => scope.type === 'local');\n\n // obj.className is undefined in ESM modules\n const fn = obj.className === 'global' || !obj.className ? functionName : `${obj.className}.${functionName}`;\n\n if (localScope?.object.objectId === undefined) {\n add(frames => {\n frames[i] = { function: fn };\n next(frames);\n });\n } else {\n const id = localScope.object.objectId;\n add(frames =>\n session.getLocalVariables(id, vars => {\n frames[i] = { function: fn, vars };\n next(frames);\n }),\n );\n }\n }\n\n next([]);\n };\n\n const captureAll = options.captureAllExceptions !== false;\n\n session.configureAndConnect(\n (ev, complete) =>\n handlePaused(clientOptions.stackParser, ev as InspectorNotification, complete),\n captureAll,\n );\n\n if (captureAll) {\n const max = options.maxExceptionsPerSecond || 50;\n\n rateLimiter = createRateLimiter(\n max,\n () => {\n debug.log('Local variables rate-limit lifted.');\n session.setPauseOnExceptions(true);\n },\n seconds => {\n debug.log(\n `Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${seconds} seconds.`,\n );\n session.setPauseOnExceptions(false);\n },\n );\n }\n\n shouldProcessEvent = true;\n } catch (error) {\n debug.log('The `LocalVariables` integration failed to start.', error);\n }\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n setupPromise = setup();\n },\n async processEvent(event: Event): Promise {\n await setupPromise;\n\n if (shouldProcessEvent) {\n return addLocalVariablesToEvent(event);\n }\n\n return event;\n },\n // These are entirely for testing\n _getCachedFramesCount(): number {\n return cachedFrames.size;\n },\n _getFirstCachedFrame(): FrameVariables[] | undefined {\n return cachedFrames.values()[0];\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds local variables to exception frames.\n */\nexport const localVariablesSyncIntegration = defineIntegration(_localVariablesSyncIntegration);\n","import type { Integration } from '@sentry/core';\nimport { NODE_VERSION } from '../../nodeVersion';\nimport type { LocalVariablesIntegrationOptions } from './common';\nimport { localVariablesAsyncIntegration } from './local-variables-async';\nimport { localVariablesSyncIntegration } from './local-variables-sync';\n\nexport const localVariablesIntegration = (options: LocalVariablesIntegrationOptions = {}): Integration => {\n return NODE_VERSION.major < 19 ? localVariablesSyncIntegration(options) : localVariablesAsyncIntegration(options);\n};\n","import { consoleSandbox } from '@sentry/core';\nimport { NODE_MAJOR, NODE_MINOR } from '../nodeVersion';\n\n/** Detect CommonJS. */\nexport function isCjs(): boolean {\n try {\n // oxlint-disable-next-line typescript/prefer-optional-chain\n return typeof module !== 'undefined' && typeof module.exports !== 'undefined';\n } catch {\n return false;\n }\n}\n\nlet hasWarnedAboutNodeVersion: boolean | undefined;\n\n/**\n * Check if the current Node.js version supports module.register\n */\nexport function supportsEsmLoaderHooks(): boolean {\n if (isCjs()) {\n return false;\n }\n\n if (NODE_MAJOR >= 21 || (NODE_MAJOR === 20 && NODE_MINOR >= 6) || (NODE_MAJOR === 18 && NODE_MINOR >= 19)) {\n return true;\n }\n\n if (!hasWarnedAboutNodeVersion) {\n hasWarnedAboutNodeVersion = true;\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] You are using Node.js v${process.versions.node} in ESM mode (\"import syntax\"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS (\"require() syntax\"), or upgrade your Node.js version.`,\n );\n });\n }\n\n return false;\n}\n","import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport type { IntegrationFn } from '@sentry/core';\nimport { isCjs } from '../utils/detection';\n\ntype ModuleInfo = Record;\n\nlet moduleCache: ModuleInfo | undefined;\n\nconst INTEGRATION_NAME = 'Modules';\n\ndeclare const __SENTRY_SERVER_MODULES__: Record;\n\n/**\n * `__SENTRY_SERVER_MODULES__` can be replaced at build time with the modules loaded by the server.\n * Right now, we leverage this in Next.js to circumvent the problem that we do not get access to these things at runtime.\n */\nconst SERVER_MODULES = typeof __SENTRY_SERVER_MODULES__ === 'undefined' ? {} : __SENTRY_SERVER_MODULES__;\n\nconst _modulesIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n event.modules = {\n ...event.modules,\n ..._getModules(),\n };\n\n return event;\n },\n getModules: _getModules,\n };\n}) satisfies IntegrationFn;\n\n/**\n * Add node modules / packages to the event.\n * For this, multiple sources are used:\n * - They can be injected at build time into the __SENTRY_SERVER_MODULES__ variable (e.g. in Next.js)\n * - They are extracted from the dependencies & devDependencies in the package.json file\n * - They are extracted from the require.cache (CJS only)\n */\nexport const modulesIntegration = _modulesIntegration;\n\nfunction getRequireCachePaths(): string[] {\n try {\n return require.cache ? Object.keys(require.cache as Record) : [];\n } catch {\n return [];\n }\n}\n\n/** Extract information about package.json modules */\nfunction collectModules(): ModuleInfo {\n return {\n ...SERVER_MODULES,\n ...getModulesFromPackageJson(),\n ...(isCjs() ? collectRequireModules() : {}),\n };\n}\n\n/** Extract information about package.json modules from require.cache */\nfunction collectRequireModules(): ModuleInfo {\n const mainPaths = require.main?.paths || [];\n const paths = getRequireCachePaths();\n\n // We start with the modules from package.json (if possible)\n // These may be overwritten by more specific versions from the require.cache\n const infos: ModuleInfo = {};\n const seen = new Set();\n\n paths.forEach(path => {\n let dir = path;\n\n /** Traverse directories upward in the search of package.json file */\n const updir = (): void | (() => void) => {\n const orig = dir;\n dir = dirname(orig);\n\n if (!dir || orig === dir || seen.has(orig)) {\n return undefined;\n }\n if (mainPaths.indexOf(dir) < 0) {\n return updir();\n }\n\n const pkgfile = join(orig, 'package.json');\n seen.add(orig);\n\n if (!existsSync(pkgfile)) {\n return updir();\n }\n\n try {\n const info = JSON.parse(readFileSync(pkgfile, 'utf8')) as {\n name: string;\n version: string;\n };\n infos[info.name] = info.version;\n } catch {\n // no-empty\n }\n };\n\n updir();\n });\n\n return infos;\n}\n\n/** Fetches the list of modules and the versions loaded by the entry file for your node.js app. */\nfunction _getModules(): ModuleInfo {\n if (!moduleCache) {\n moduleCache = collectModules();\n }\n return moduleCache;\n}\n\ninterface PackageJson {\n dependencies?: Record;\n devDependencies?: Record;\n}\n\nfunction getPackageJson(): PackageJson {\n try {\n const filePath = join(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(filePath, 'utf8')) as PackageJson;\n\n return packageJson;\n } catch {\n return {};\n }\n}\n\nfunction getModulesFromPackageJson(): ModuleInfo {\n const packageJson = getPackageJson();\n\n return {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n}\n","import { consoleSandbox, debug, getClient } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClient } from '../sdk/client';\n\nconst DEFAULT_SHUTDOWN_TIMEOUT = 2000;\n\n/**\n * @hidden\n */\nexport function logAndExitProcess(error: unknown): void {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(error);\n });\n\n const client = getClient();\n\n if (client === undefined) {\n DEBUG_BUILD && debug.warn('No NodeClient was defined, we are exiting the process now.');\n global.process.exit(1);\n return;\n }\n\n const options = client.getOptions();\n const timeout =\n options?.shutdownTimeout && options.shutdownTimeout > 0 ? options.shutdownTimeout : DEFAULT_SHUTDOWN_TIMEOUT;\n client.close(timeout).then(\n (result: boolean) => {\n if (!result) {\n DEBUG_BUILD && debug.warn('We reached the timeout for emptying the request buffer, still exiting now!');\n }\n global.process.exit(1);\n },\n error => {\n DEBUG_BUILD && debug.error(error);\n },\n );\n}\n","import { captureException, debug, defineIntegration, getClient } from '@sentry/core';\nimport { isMainThread } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClient } from '../sdk/client';\nimport { logAndExitProcess } from '../utils/errorhandling';\n\ntype OnFatalErrorHandler = (firstError: Error, secondError?: Error) => void;\n\ntype TaggedListener = NodeJS.UncaughtExceptionListener & {\n tag?: string;\n};\n\ninterface OnUncaughtExceptionOptions {\n /**\n * Controls if the SDK should register a handler to exit the process on uncaught errors:\n * - `true`: The SDK will exit the process on all uncaught errors.\n * - `false`: The SDK will only exit the process when there are no other `uncaughtException` handlers attached.\n *\n * Default: `false`\n */\n exitEvenIfOtherHandlersAreRegistered: boolean;\n\n /**\n * This is called when an uncaught error would cause the process to exit.\n *\n * @param firstError Uncaught error causing the process to exit\n * @param secondError Will be set if the handler was called multiple times. This can happen either because\n * `onFatalError` itself threw, or because an independent error happened somewhere else while `onFatalError`\n * was running.\n */\n onFatalError?(this: void, firstError: Error, secondError?: Error): void;\n}\n\nconst INTEGRATION_NAME = 'OnUncaughtException';\n\n/**\n * Add a global exception handler.\n */\nexport const onUncaughtExceptionIntegration = defineIntegration((options: Partial = {}) => {\n const optionsWithDefaults = {\n exitEvenIfOtherHandlersAreRegistered: false,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n // errors in worker threads are already handled by the childProcessIntegration\n // also we don't want to exit the Node process on worker thread errors\n if (!isMainThread) {\n return;\n }\n\n global.process.on('uncaughtException', makeErrorHandler(client, optionsWithDefaults));\n },\n };\n});\n\ntype ErrorHandler = { _errorHandler: boolean } & ((error: Error) => void);\n\n/** Exported only for tests */\nexport function makeErrorHandler(client: NodeClient, options: OnUncaughtExceptionOptions): ErrorHandler {\n const timeout = 2000;\n let caughtFirstError: boolean = false;\n let caughtSecondError: boolean = false;\n let calledFatalError: boolean = false;\n let firstError: Error;\n\n const clientOptions = client.getOptions();\n\n return Object.assign(\n (error: Error): void => {\n let onFatalError: OnFatalErrorHandler = logAndExitProcess;\n\n if (options.onFatalError) {\n onFatalError = options.onFatalError;\n } else if (clientOptions.onFatalError) {\n onFatalError = clientOptions.onFatalError as OnFatalErrorHandler;\n }\n\n // Attaching a listener to `uncaughtException` will prevent the node process from exiting. We generally do not\n // want to alter this behaviour so we check for other listeners that users may have attached themselves and adjust\n // exit behaviour of the SDK accordingly:\n // - If other listeners are attached, do not exit.\n // - If the only listener attached is ours, exit.\n const userProvidedListenersCount = (global.process.listeners('uncaughtException') as TaggedListener[]).filter(\n listener => {\n // There are 3 listeners we ignore:\n return (\n // as soon as we're using domains this listener is attached by node itself\n listener.name !== 'domainUncaughtExceptionClear' &&\n // the handler we register for tracing\n listener.tag !== 'sentry_tracingErrorCallback' &&\n // the handler we register in this integration\n (listener as ErrorHandler)._errorHandler !== true\n );\n },\n ).length;\n\n const processWouldExit = userProvidedListenersCount === 0;\n const shouldApplyFatalHandlingLogic = options.exitEvenIfOtherHandlersAreRegistered || processWouldExit;\n\n if (!caughtFirstError) {\n // this is the first uncaught error and the ultimate reason for shutting down\n // we want to do absolutely everything possible to ensure it gets captured\n // also we want to make sure we don't go recursion crazy if more errors happen after this one\n firstError = error;\n caughtFirstError = true;\n\n if (getClient() === client) {\n captureException(error, {\n originalException: error,\n captureContext: {\n level: 'fatal',\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onuncaughtexception',\n },\n });\n }\n\n if (!calledFatalError && shouldApplyFatalHandlingLogic) {\n calledFatalError = true;\n onFatalError(error);\n }\n } else {\n if (shouldApplyFatalHandlingLogic) {\n if (calledFatalError) {\n // we hit an error *after* calling onFatalError - pretty boned at this point, just shut it down\n DEBUG_BUILD &&\n debug.warn(\n 'uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown',\n );\n logAndExitProcess(error);\n } else if (!caughtSecondError) {\n // two cases for how we can hit this branch:\n // - capturing of first error blew up and we just caught the exception from that\n // - quit trying to capture, proceed with shutdown\n // - a second independent error happened while waiting for first error to capture\n // - want to avoid causing premature shutdown before first error capture finishes\n // it's hard to immediately tell case 1 from case 2 without doing some fancy/questionable domain stuff\n // so let's instead just delay a bit before we proceed with our action here\n // in case 1, we just wait a bit unnecessarily but ultimately do the same thing\n // in case 2, the delay hopefully made us wait long enough for the capture to finish\n // two potential nonideal outcomes:\n // nonideal case 1: capturing fails fast, we sit around for a few seconds unnecessarily before proceeding correctly by calling onFatalError\n // nonideal case 2: case 2 happens, 1st error is captured but slowly, timeout completes before capture and we treat second error as the sendErr of (nonexistent) failure from trying to capture first error\n // note that after hitting this branch, we might catch more errors where (caughtSecondError && !calledFatalError)\n // we ignore them - they don't matter to us, we're just waiting for the second error timeout to finish\n caughtSecondError = true;\n setTimeout(() => {\n if (!calledFatalError) {\n // it was probably case 1, let's treat err as the sendErr and call onFatalError\n calledFatalError = true;\n onFatalError(firstError, error);\n } else {\n // it was probably case 2, our first error finished capturing while we waited, cool, do nothing\n }\n }, timeout); // capturing could take at least sendTimeout to fail, plus an arbitrary second for how long it takes to collect surrounding source etc\n }\n }\n }\n },\n { _errorHandler: true },\n );\n}\n","import type { Client, IntegrationFn, SeverityLevel, Span } from '@sentry/core';\nimport {\n captureException,\n consoleSandbox,\n defineIntegration,\n getClient,\n isMatchingPattern,\n withActiveSpan,\n} from '@sentry/core';\nimport { logAndExitProcess } from '../utils/errorhandling';\n\ntype UnhandledRejectionMode = 'none' | 'warn' | 'strict';\n\ntype IgnoreMatcher = { name?: string | RegExp; message?: string | RegExp };\n\ninterface OnUnhandledRejectionOptions {\n /**\n * Option deciding what to do after capturing unhandledRejection,\n * that mimicks behavior of node's --unhandled-rejection flag.\n */\n mode: UnhandledRejectionMode;\n /** Rejection Errors to ignore (don't capture or warn). */\n ignore?: IgnoreMatcher[];\n}\n\nconst INTEGRATION_NAME = 'OnUnhandledRejection';\n\nconst DEFAULT_IGNORES: IgnoreMatcher[] = [\n {\n name: 'AI_NoOutputGeneratedError', // When stream aborts in Vercel AI SDK V5, Vercel flush() fails with an error\n },\n {\n name: 'AbortError', // When stream aborts in Vercel AI SDK V6\n },\n];\n\nconst _onUnhandledRejectionIntegration = ((options: Partial = {}) => {\n const opts: OnUnhandledRejectionOptions = {\n mode: options.mode ?? 'warn',\n ignore: [...DEFAULT_IGNORES, ...(options.ignore ?? [])],\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n global.process.on('unhandledRejection', makeUnhandledPromiseHandler(client, opts));\n },\n };\n}) satisfies IntegrationFn;\n\nexport const onUnhandledRejectionIntegration = defineIntegration(_onUnhandledRejectionIntegration);\n\n/** Extract error info safely */\nfunction extractErrorInfo(reason: unknown): { name: string; message: string } {\n // Check if reason is an object (including Error instances, not just plain objects)\n if (typeof reason !== 'object' || reason === null) {\n return { name: '', message: String(reason ?? '') };\n }\n\n const errorLike = reason as Record;\n const name = typeof errorLike.name === 'string' ? errorLike.name : '';\n const message = typeof errorLike.message === 'string' ? errorLike.message : String(reason);\n\n return { name, message };\n}\n\n/** Check if a matcher matches the reason */\nfunction isMatchingReason(matcher: IgnoreMatcher, errorInfo: ReturnType): boolean {\n // name/message matcher\n const nameMatches = matcher.name === undefined || isMatchingPattern(errorInfo.name, matcher.name, true);\n\n const messageMatches = matcher.message === undefined || isMatchingPattern(errorInfo.message, matcher.message);\n\n return nameMatches && messageMatches;\n}\n\n/** Match helper */\nfunction matchesIgnore(list: IgnoreMatcher[], reason: unknown): boolean {\n const errorInfo = extractErrorInfo(reason);\n return list.some(matcher => isMatchingReason(matcher, errorInfo));\n}\n\n/** Core handler */\nexport function makeUnhandledPromiseHandler(\n client: Client,\n options: OnUnhandledRejectionOptions,\n): (reason: unknown, promise: unknown) => void {\n return function sendUnhandledPromise(reason: unknown, promise: unknown): void {\n // Only handle for the active client\n if (getClient() !== client) {\n return;\n }\n\n // Skip if configured to ignore\n if (matchesIgnore(options.ignore ?? [], reason)) {\n return;\n }\n\n const level: SeverityLevel = options.mode === 'strict' ? 'fatal' : 'error';\n\n // this can be set in places where we cannot reliably get access to the active span/error\n // when the error bubbles up to this handler, we can use this to set the active span\n const activeSpanForError =\n reason && typeof reason === 'object' ? (reason as { _sentry_active_span?: Span })._sentry_active_span : undefined;\n\n const activeSpanWrapper = activeSpanForError\n ? (fn: () => void) => withActiveSpan(activeSpanForError, fn)\n : (fn: () => void) => fn();\n\n activeSpanWrapper(() => {\n captureException(reason, {\n originalException: promise,\n captureContext: {\n extra: { unhandledPromiseRejection: true },\n level,\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onunhandledrejection',\n },\n });\n });\n\n handleRejection(reason, options.mode);\n };\n}\n\n/**\n * Handler for `mode` option\n */\nfunction handleRejection(reason: unknown, mode: UnhandledRejectionMode): void {\n // https://github.com/nodejs/node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js#L234-L240\n const rejectionWarning =\n 'This error originated either by ' +\n 'throwing inside of an async function without a catch block, ' +\n 'or by rejecting a promise which was not handled with .catch().' +\n ' The promise rejected with the reason:';\n\n /* eslint-disable no-console */\n if (mode === 'warn') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n console.error(reason && typeof reason === 'object' && 'stack' in reason ? reason.stack : reason);\n });\n } else if (mode === 'strict') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n });\n logAndExitProcess(reason);\n }\n /* eslint-enable no-console */\n}\n","import { defineIntegration, endSession, getIsolationScope, startSession } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'ProcessSession';\n\n/**\n * Records a Session for the current process to track release health.\n */\nexport const processSessionIntegration = defineIntegration(() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n startSession();\n\n // Emitted in the case of healthy sessions, error of `mechanism.handled: true` and unhandledrejections because\n // The 'beforeExit' event is not emitted for conditions causing explicit termination,\n // such as calling process.exit() or uncaught exceptions.\n // Ref: https://nodejs.org/api/process.html#process_event_beforeexit\n process.on('beforeExit', () => {\n const session = getIsolationScope().getSession();\n\n // Only call endSession, if the Session exists on Scope and SessionStatus is not a\n // Terminal Status i.e. Exited or Crashed because\n // \"When a session is moved away from ok it must not be updated anymore.\"\n // Ref: https://develop.sentry.dev/sdk/sessions/\n if (session?.status !== 'ok') {\n endSession();\n }\n });\n },\n };\n});\n","import * as http from 'node:http';\nimport type { Client, Envelope, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration, serializeEnvelope, suppressTracing } from '@sentry/core';\n\ntype SpotlightConnectionOptions = {\n /**\n * Set this if the Spotlight Sidecar is not running on localhost:8969\n * By default, the Url is set to http://localhost:8969/stream\n */\n sidecarUrl?: string;\n};\n\nexport const INTEGRATION_NAME = 'Spotlight';\n\nconst _spotlightIntegration = ((options: Partial = {}) => {\n const _options = {\n sidecarUrl: options.sidecarUrl || 'http://localhost:8969/stream',\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n try {\n if (process.env.NODE_ENV && process.env.NODE_ENV !== 'development') {\n debug.warn(\"[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?\");\n }\n } catch {\n // ignore\n }\n connectToSpotlight(client, _options);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Use this integration to send errors and transactions to Spotlight.\n *\n * Learn more about spotlight at https://spotlightjs.com\n *\n * Important: This integration only works with Node 18 or newer.\n */\nexport const spotlightIntegration = defineIntegration(_spotlightIntegration);\n\nfunction connectToSpotlight(client: Client, options: Required): void {\n const spotlightUrl = parseSidecarUrl(options.sidecarUrl);\n if (!spotlightUrl) {\n return;\n }\n\n let failedRequests = 0;\n\n client.on('beforeEnvelope', (envelope: Envelope) => {\n if (failedRequests > 3) {\n debug.warn('[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests');\n return;\n }\n\n const serializedEnvelope = serializeEnvelope(envelope);\n suppressTracing(() => {\n const req = http.request(\n {\n method: 'POST',\n path: spotlightUrl.pathname,\n hostname: spotlightUrl.hostname,\n port: spotlightUrl.port,\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n },\n res => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 400) {\n // Reset failed requests counter on success\n failedRequests = 0;\n }\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n res.setEncoding('utf8');\n },\n );\n\n req.on('error', () => {\n failedRequests++;\n debug.warn('[Spotlight] Failed to send envelope to Spotlight Sidecar');\n });\n req.write(serializedEnvelope);\n req.end();\n });\n });\n}\n\nfunction parseSidecarUrl(url: string): URL | undefined {\n try {\n return new URL(`${url}`);\n } catch {\n debug.warn(`[Spotlight] Invalid sidecar URL: ${url}`);\n return undefined;\n }\n}\n","import * as util from 'node:util';\nimport { defineIntegration } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'NodeSystemError';\n\ntype SystemErrorContext = {\n dest?: string; // If present, the file path destination when reporting a file system error\n errno: number; // The system-provided error number\n path?: string; // If present, the file path when reporting a file system error\n};\n\ntype SystemError = Error & SystemErrorContext;\n\nfunction isSystemError(error: unknown): error is SystemError {\n if (!(error instanceof Error)) {\n return false;\n }\n\n if (!('errno' in error) || typeof error.errno !== 'number') {\n return false;\n }\n\n // Appears this is the recommended way to check for Node.js SystemError\n // https://github.com/nodejs/node/issues/46869\n return util.getSystemErrorMap().has(error.errno);\n}\n\ntype Options = {\n /**\n * If true, includes the `path` and `dest` properties in the error context.\n */\n includePaths?: boolean;\n};\n\n/**\n * Captures context for Node.js SystemError errors.\n */\nexport const systemErrorIntegration = defineIntegration((options: Options = {}) => {\n return {\n name: INTEGRATION_NAME,\n processEvent: (event, hint, client) => {\n if (!isSystemError(hint.originalException)) {\n return event;\n }\n\n const error = hint.originalException;\n\n const errorContext: SystemErrorContext = {\n ...(error as SystemErrorContext),\n };\n\n if (!client.getOptions().sendDefaultPii && options.includePaths !== true) {\n delete errorContext.path;\n delete errorContext.dest;\n }\n\n event.contexts = {\n ...event.contexts,\n node_system_error: errorContext,\n };\n\n for (const exception of event.exception?.values || []) {\n if (exception.value) {\n if (error.path && exception.value.includes(error.path)) {\n exception.value = exception.value.replace(`'${error.path}'`, '').trim();\n }\n if (error.dest && exception.value.includes(error.dest)) {\n exception.value = exception.value.replace(`'${error.dest}'`, '').trim();\n }\n }\n }\n\n return event;\n },\n };\n});\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/member-ordering */\n/* eslint-disable jsdoc/require-jsdoc */\nimport * as http from 'node:http';\nimport type * as net from 'node:net';\nimport type { Duplex } from 'node:stream';\nimport type * as tls from 'node:tls';\n\nexport * from './helpers';\n\ninterface HttpConnectOpts extends net.TcpNetConnectOpts {\n secureEndpoint: false;\n protocol?: string;\n}\n\ninterface HttpsConnectOpts extends tls.ConnectionOptions {\n secureEndpoint: true;\n protocol?: string;\n port: number;\n}\n\nexport type AgentConnectOpts = HttpConnectOpts | HttpsConnectOpts;\n\nconst INTERNAL = Symbol('AgentBaseInternalState');\n\ninterface InternalState {\n defaultPort?: number;\n protocol?: string;\n currentSocket?: Duplex;\n}\n\nexport abstract class Agent extends http.Agent {\n private [INTERNAL]: InternalState;\n\n // Set by `http.Agent` - missing from `@types/node`\n options!: Partial;\n keepAlive!: boolean;\n\n constructor(opts?: http.AgentOptions) {\n super(opts);\n this[INTERNAL] = {};\n }\n\n abstract connect(\n req: http.ClientRequest,\n options: AgentConnectOpts,\n ): Promise | Duplex | http.Agent;\n\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options?: AgentConnectOpts): boolean {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n if (typeof (options as Partial).secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string') return false;\n return stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);\n }\n\n createSocket(req: http.ClientRequest, options: AgentConnectOpts, cb: (err: Error | null, s?: Duplex) => void): void {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then(socket => {\n if (socket instanceof http.Agent) {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, cb);\n }\n\n createConnection(): Duplex {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n\n get defaultPort(): number {\n return this[INTERNAL].defaultPort ?? (this.protocol === 'https:' ? 443 : 80);\n }\n\n set defaultPort(v: number) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n\n get protocol(): string {\n return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? 'https:' : 'http:');\n }\n\n set protocol(v: string) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable jsdoc/require-jsdoc */\nimport type { IncomingHttpHeaders } from 'node:http';\nimport type { Readable } from 'node:stream';\nimport { debug } from '@sentry/core';\n\nfunction debugLog(...args: unknown[]): void {\n debug.log('[https-proxy-agent:parse-proxy-response]', ...args);\n}\n\nexport interface ConnectResponse {\n statusCode: number;\n statusText: string;\n headers: IncomingHttpHeaders;\n}\n\nexport function parseProxyResponse(socket: Readable): Promise<{ connect: ConnectResponse; buffered: Buffer }> {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers: Buffer[] = [];\n\n function read() {\n const b = socket.read();\n if (b) ondata(b);\n else socket.once('readable', read);\n }\n\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n\n function onend() {\n cleanup();\n debugLog('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n\n function onerror(err: Error) {\n cleanup();\n debugLog('onerror %o', err);\n reject(err);\n }\n\n function ondata(b: Buffer) {\n buffers.push(b);\n buffersLength += b.length;\n\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n\n if (endOfHeaders === -1) {\n // keep buffering\n debugLog('have not received end of HTTP headers yet...');\n read();\n return;\n }\n\n const headerParts = buffered.subarray(0, endOfHeaders).toString('ascii').split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +(firstLineParts[1] || 0);\n const statusText = firstLineParts.slice(2).join(' ');\n const headers: IncomingHttpHeaders = {};\n for (const header of headerParts) {\n if (!header) continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n } else if (Array.isArray(current)) {\n current.push(value);\n } else {\n headers[key] = value;\n }\n }\n debugLog('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n\n socket.on('error', onerror);\n socket.on('end', onend);\n\n read();\n });\n}\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// eslint-disable-next-line import/no-duplicates\nimport type * as http from 'node:http';\n// eslint-disable-next-line import/no-duplicates\nimport type { OutgoingHttpHeaders } from 'node:http';\nimport * as net from 'node:net';\nimport * as tls from 'node:tls';\nimport { debug } from '@sentry/core';\nimport type { AgentConnectOpts } from './base';\nimport { Agent } from './base';\nimport { parseProxyResponse } from './parse-proxy-response';\n\nfunction debugLog(...args: unknown[]): void {\n debug.log('[https-proxy-agent]', ...args);\n}\n\ntype Protocol = T extends `${infer Protocol}:${infer _}` ? Protocol : never;\n\ntype ConnectOptsMap = {\n http: Omit;\n https: Omit;\n};\n\ntype ConnectOpts = {\n [P in keyof ConnectOptsMap]: Protocol extends P ? ConnectOptsMap[P] : never;\n}[keyof ConnectOptsMap];\n\nexport type HttpsProxyAgentOptions = ConnectOpts &\n http.AgentOptions & {\n headers?: OutgoingHttpHeaders | (() => OutgoingHttpHeaders);\n };\n\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nexport class HttpsProxyAgent extends Agent {\n static protocols = ['http', 'https'] as const;\n\n readonly proxy: URL;\n proxyHeaders: OutgoingHttpHeaders | (() => OutgoingHttpHeaders);\n connectOpts: net.TcpNetConnectOpts & tls.ConnectionOptions;\n\n constructor(proxy: Uri | URL, opts?: HttpsProxyAgentOptions) {\n super(opts);\n this.options = {};\n this.proxy = typeof proxy === 'string' ? new URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debugLog('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === 'https:' ? 443 : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req: http.ClientRequest, opts: AgentConnectOpts): Promise {\n const { proxy } = this;\n\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n\n // Create a socket connection to the proxy server.\n let socket: net.Socket;\n if (proxy.protocol === 'https:') {\n debugLog('Creating `tls.Socket`: %o', this.connectOpts);\n const servername = this.connectOpts.servername || this.connectOpts.host;\n socket = tls.connect({\n ...this.connectOpts,\n servername: servername && net.isIP(servername) ? undefined : servername,\n });\n } else {\n debugLog('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n\n const headers: OutgoingHttpHeaders =\n typeof this.proxyHeaders === 'function' ? this.proxyHeaders() : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n\n headers.Host = `${host}:${opts.port}`;\n\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive ? 'Keep-Alive' : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n\n const proxyResponsePromise = parseProxyResponse(socket);\n\n socket.write(`${payload}\\r\\n`);\n\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not EventEmitter in Node types\n this.emit('proxyConnect', connect, req);\n\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debugLog('Upgrading socket connection to TLS');\n const servername = opts.servername || opts.host;\n return tls.connect({\n ...omit(opts, 'host', 'path', 'port'),\n socket,\n servername: net.isIP(servername) ? undefined : servername,\n });\n }\n\n return socket;\n }\n\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s: net.Socket) => {\n debugLog('Replaying proxy buffer for failed request');\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n\n return fakeSocket;\n }\n}\n\nfunction resume(socket: net.Socket | tls.TLSSocket): void {\n socket.resume();\n}\n\nfunction omit(\n obj: T,\n ...keys: K\n): {\n [K2 in Exclude]: T[K2];\n} {\n const ret = {} as {\n [K in keyof typeof obj]: (typeof obj)[K];\n };\n let key: keyof typeof obj;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n","import * as http from 'node:http';\nimport * as https from 'node:https';\nimport { Readable } from 'node:stream';\nimport { createGzip } from 'node:zlib';\nimport type {\n BaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequest,\n TransportRequestExecutor,\n} from '@sentry/core';\nimport { consoleSandbox, createTransport, suppressTracing } from '@sentry/core';\nimport { HttpsProxyAgent } from '../proxy';\nimport type { HTTPModule } from './http-module';\n\nexport interface NodeTransportOptions extends BaseTransportOptions {\n /** Set a proxy that should be used for outbound requests. */\n proxy?: string;\n /** HTTPS proxy CA certificates */\n caCerts?: string | Buffer | Array;\n /** Custom HTTP module. Defaults to the native 'http' and 'https' modules. */\n httpModule?: HTTPModule;\n /** Allow overriding connection keepAlive, defaults to false */\n keepAlive?: boolean;\n}\n\n// Estimated maximum size for reasonable standalone event\nconst GZIP_THRESHOLD = 1024 * 32;\n\n/**\n * Gets a stream from a Uint8Array or string\n * Readable.from is ideal but was added in node.js v12.3.0 and v10.17.0\n */\nfunction streamFromBody(body: Uint8Array | string): Readable {\n return new Readable({\n read() {\n this.push(body);\n this.push(null);\n },\n });\n}\n\n/**\n * Creates a Transport that uses native the native 'http' and 'https' modules to send events to Sentry.\n */\nexport function makeNodeTransport(options: NodeTransportOptions): Transport {\n let urlSegments: URL;\n\n try {\n urlSegments = new URL(options.url);\n } catch (_e) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.',\n );\n });\n return createTransport(options, () => Promise.resolve({}));\n }\n\n const isHttps = urlSegments.protocol === 'https:';\n\n // Proxy prioritization: http => `options.proxy` | `process.env.http_proxy`\n // Proxy prioritization: https => `options.proxy` | `process.env.https_proxy` | `process.env.http_proxy`\n const proxy = applyNoProxyOption(\n urlSegments,\n options.proxy || (isHttps ? process.env.https_proxy : undefined) || process.env.http_proxy,\n );\n\n const nativeHttpModule = isHttps ? https : http;\n const keepAlive = options.keepAlive === undefined ? false : options.keepAlive;\n\n // TODO(v11): Evaluate if we can set keepAlive to true. This would involve testing for memory leaks in older node\n // versions(>= 8) as they had memory leaks when using it: #2555\n const agent = proxy\n ? (new HttpsProxyAgent(proxy) as http.Agent)\n : new nativeHttpModule.Agent({ keepAlive, maxSockets: 30, timeout: 2000 });\n\n const requestExecutor = createRequestExecutor(options, options.httpModule ?? nativeHttpModule, agent);\n return createTransport(options, requestExecutor);\n}\n\n/**\n * Honors the `no_proxy` env variable with the highest priority to allow for hosts exclusion.\n *\n * @param transportUrl The URL the transport intends to send events to.\n * @param proxy The client configured proxy.\n * @returns A proxy the transport should use.\n */\nfunction applyNoProxyOption(transportUrlSegments: URL, proxy: string | undefined): string | undefined {\n const { no_proxy } = process.env;\n\n const urlIsExemptFromProxy = no_proxy\n ?.split(',')\n .some(\n exemption => transportUrlSegments.host.endsWith(exemption) || transportUrlSegments.hostname.endsWith(exemption),\n );\n\n if (urlIsExemptFromProxy) {\n return undefined;\n } else {\n return proxy;\n }\n}\n\n/**\n * Creates a RequestExecutor to be used with `createTransport`.\n */\nfunction createRequestExecutor(\n options: NodeTransportOptions,\n httpModule: HTTPModule,\n agent: http.Agent,\n): TransportRequestExecutor {\n const { hostname, pathname, port, protocol, search } = new URL(options.url);\n return function makeRequest(request: TransportRequest): Promise {\n return new Promise((resolve, reject) => {\n // This ensures we do not generate any spans in OpenTelemetry for the transport\n suppressTracing(() => {\n let body = streamFromBody(request.body);\n\n const headers: Record = { ...options.headers };\n\n if (request.body.length > GZIP_THRESHOLD) {\n headers['content-encoding'] = 'gzip';\n body = body.pipe(createGzip());\n }\n\n const hostnameIsIPv6 = hostname.startsWith('[');\n\n const req = httpModule.request(\n {\n method: 'POST',\n agent,\n headers,\n // Remove \"[\" and \"]\" from IPv6 hostnames\n hostname: hostnameIsIPv6 ? hostname.slice(1, -1) : hostname,\n path: `${pathname}${search}`,\n port,\n protocol,\n ca: options.caCerts,\n },\n res => {\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n\n res.setEncoding('utf8');\n\n // \"Key-value pairs of header names and values. Header names are lower-cased.\"\n // https://nodejs.org/api/http.html#http_message_headers\n const retryAfterHeader = res.headers['retry-after'] ?? null;\n const rateLimitsHeader = res.headers['x-sentry-rate-limits'] ?? null;\n\n resolve({\n statusCode: res.statusCode,\n headers: {\n 'retry-after': retryAfterHeader,\n 'x-sentry-rate-limits': Array.isArray(rateLimitsHeader)\n ? rateLimitsHeader[0] || null\n : rateLimitsHeader,\n },\n });\n },\n );\n\n req.on('error', reject);\n body.pipe(req);\n });\n });\n };\n}\n","import { envToBool } from '@sentry/core';\n\n/**\n * Parse the spotlight option with proper precedence:\n * - `false` or explicit string from options: use as-is\n * - `true`: enable spotlight, but prefer a custom URL from the env var if set\n * - `undefined`: defer entirely to the env var (bool or URL)\n */\nexport function getSpotlightConfig(optionsSpotlight: boolean | string | undefined): boolean | string | undefined {\n if (optionsSpotlight === false) {\n return false;\n }\n\n if (typeof optionsSpotlight === 'string') {\n return optionsSpotlight;\n }\n\n // optionsSpotlight is true or undefined\n const envBool = envToBool(process.env.SENTRY_SPOTLIGHT, { strict: true });\n const envUrl = envBool === null && process.env.SENTRY_SPOTLIGHT ? process.env.SENTRY_SPOTLIGHT : undefined;\n\n return optionsSpotlight === true\n ? (envUrl ?? true) // true: use env URL if present, otherwise true\n : (envBool ?? envUrl); // undefined: use env var (bool or URL)\n}\n","import { posix, sep } from 'node:path';\nimport { dirname } from '@sentry/core';\n\n/** normalizes Windows paths */\nfunction normalizeWindowsPath(path: string): string {\n return path\n .replace(/^[A-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/'); // replace all `\\` instances with `/`\n}\n\n/** Creates a function that gets the module name from a filename */\nexport function createGetModuleFromFilename(\n basePath: string = process.argv[1] ? dirname(process.argv[1]) : process.cwd(),\n isWindows: boolean = sep === '\\\\',\n): (filename: string | undefined) => string | undefined {\n const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;\n\n return (filename: string | undefined) => {\n if (!filename) {\n return;\n }\n\n const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;\n\n // eslint-disable-next-line prefer-const\n let { dir, base: file, ext } = posix.parse(normalizedFilename);\n\n if (ext === '.js' || ext === '.mjs' || ext === '.cjs') {\n file = file.slice(0, ext.length * -1);\n }\n\n // The file name might be URI-encoded which we want to decode to\n // the original file name.\n const decodedFile = decodeURIComponent(file);\n\n if (!dir) {\n // No dirname whatsoever\n dir = '.';\n }\n\n const n = dir.lastIndexOf('/node_modules');\n if (n > -1) {\n return `${dir.slice(n + 14).replace(/\\//g, '.')}:${decodedFile}`;\n }\n\n // Let's see if it's a part of the main module\n // To be a part of main module, it has to share the same base\n if (dir.startsWith(normalizedBase)) {\n const moduleName = dir.slice(normalizedBase.length + 1).replace(/\\//g, '.');\n return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;\n }\n\n return decodedFile;\n };\n}\n","// PUBLIC APIS\n\nimport type { StackParser } from '@sentry/core';\nimport { createStackParser, GLOBAL_OBJ, nodeStackLineParser } from '@sentry/core';\nimport { createGetModuleFromFilename } from '../utils/module';\n\n/**\n * Returns a release dynamically from environment variables.\n */\n// eslint-disable-next-line complexity\nexport function getSentryRelease(fallback?: string): string | undefined {\n // Always read first as Sentry takes this as precedence\n if (process.env.SENTRY_RELEASE) {\n return process.env.SENTRY_RELEASE;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (GLOBAL_OBJ.SENTRY_RELEASE?.id) {\n return GLOBAL_OBJ.SENTRY_RELEASE.id;\n }\n\n // This list is in approximate alpha order, separated into 3 categories:\n // 1. Git providers\n // 2. CI providers with specific environment variables (has the provider name in the variable name)\n // 3. CI providers with generic environment variables (checked for last to prevent possible false positives)\n\n const possibleReleaseNameOfGitProvider =\n // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables\n process.env['GITHUB_SHA'] ||\n // GitLab CI - https://docs.gitlab.com/ee/ci/variables/predefined_variables.html\n process.env['CI_MERGE_REQUEST_SOURCE_BRANCH_SHA'] ||\n process.env['CI_BUILD_REF'] ||\n process.env['CI_COMMIT_SHA'] ||\n // Bitbucket - https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/\n process.env['BITBUCKET_COMMIT'];\n\n const possibleReleaseNameOfCiProvidersWithSpecificEnvVar =\n // AppVeyor - https://www.appveyor.com/docs/environment-variables/\n process.env['APPVEYOR_PULL_REQUEST_HEAD_COMMIT'] ||\n process.env['APPVEYOR_REPO_COMMIT'] ||\n // AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html\n process.env['CODEBUILD_RESOLVED_SOURCE_VERSION'] ||\n // AWS Amplify - https://docs.aws.amazon.com/amplify/latest/userguide/environment-variables.html\n process.env['AWS_COMMIT_ID'] ||\n // Azure Pipelines - https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml\n process.env['BUILD_SOURCEVERSION'] ||\n // Bitrise - https://devcenter.bitrise.io/builds/available-environment-variables/\n process.env['GIT_CLONE_COMMIT_HASH'] ||\n // Buddy CI - https://buddy.works/docs/pipelines/environment-variables#default-environment-variables\n process.env['BUDDY_EXECUTION_REVISION'] ||\n // Builtkite - https://buildkite.com/docs/pipelines/environment-variables\n process.env['BUILDKITE_COMMIT'] ||\n // CircleCI - https://circleci.com/docs/variables/\n process.env['CIRCLE_SHA1'] ||\n // Cirrus CI - https://cirrus-ci.org/guide/writing-tasks/#environment-variables\n process.env['CIRRUS_CHANGE_IN_REPO'] ||\n // Codefresh - https://codefresh.io/docs/docs/codefresh-yaml/variables/\n process.env['CF_REVISION'] ||\n // Codemagic - https://docs.codemagic.io/yaml-basic-configuration/environment-variables/\n process.env['CM_COMMIT'] ||\n // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables\n process.env['CF_PAGES_COMMIT_SHA'] ||\n // Drone - https://docs.drone.io/pipeline/environment/reference/\n process.env['DRONE_COMMIT_SHA'] ||\n // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables\n process.env['FC_GIT_COMMIT_SHA'] ||\n // Heroku #1 https://devcenter.heroku.com/articles/heroku-ci\n process.env['HEROKU_TEST_RUN_COMMIT_VERSION'] ||\n // Heroku #2 https://devcenter.heroku.com/articles/dyno-metadata#dyno-metadata\n process.env['HEROKU_BUILD_COMMIT'] ||\n // Heroku #3 (deprecated by Heroku, kept for backward compatibility)\n process.env['HEROKU_SLUG_COMMIT'] ||\n // Railway - https://docs.railway.app/reference/variables#git-variables\n process.env['RAILWAY_GIT_COMMIT_SHA'] ||\n // Render - https://render.com/docs/environment-variables\n process.env['RENDER_GIT_COMMIT'] ||\n // Semaphore CI - https://docs.semaphoreci.com/ci-cd-environment/environment-variables\n process.env['SEMAPHORE_GIT_SHA'] ||\n // TravisCI - https://docs.travis-ci.com/user/environment-variables/#default-environment-variables\n process.env['TRAVIS_PULL_REQUEST_SHA'] ||\n // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables\n process.env['VERCEL_GIT_COMMIT_SHA'] ||\n process.env['VERCEL_GITHUB_COMMIT_SHA'] ||\n process.env['VERCEL_GITLAB_COMMIT_SHA'] ||\n process.env['VERCEL_BITBUCKET_COMMIT_SHA'] ||\n // Zeit (now known as Vercel)\n process.env['ZEIT_GITHUB_COMMIT_SHA'] ||\n process.env['ZEIT_GITLAB_COMMIT_SHA'] ||\n process.env['ZEIT_BITBUCKET_COMMIT_SHA'];\n\n const possibleReleaseNameOfCiProvidersWithGenericEnvVar =\n // CloudBees CodeShip - https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables\n process.env['CI_COMMIT_ID'] ||\n // Coolify - https://coolify.io/docs/knowledge-base/environment-variables\n process.env['SOURCE_COMMIT'] ||\n // Heroku #3 https://devcenter.heroku.com/changelog-items/630\n process.env['SOURCE_VERSION'] ||\n // Jenkins - https://plugins.jenkins.io/git/#environment-variables\n process.env['GIT_COMMIT'] ||\n // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata\n process.env['COMMIT_REF'] ||\n // TeamCity - https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html\n process.env['BUILD_VCS_NUMBER'] ||\n // Woodpecker CI - https://woodpecker-ci.org/docs/usage/environment\n process.env['CI_COMMIT_SHA'];\n\n return (\n possibleReleaseNameOfGitProvider ||\n possibleReleaseNameOfCiProvidersWithSpecificEnvVar ||\n possibleReleaseNameOfCiProvidersWithGenericEnvVar ||\n fallback\n );\n}\n\n/** Node.js stack parser */\nexport const defaultStackParser: StackParser = createStackParser(nodeStackLineParser(createGetModuleFromFilename()));\n","import * as os from 'node:os';\nimport type { Tracer } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport type { DynamicSamplingContext, Scope, ServerRuntimeClientOptions, TraceContext } from '@sentry/core';\nimport {\n _INTERNAL_clearAiProviderSkips,\n _INTERNAL_flushLogsBuffer,\n applySdkMetadata,\n debug,\n SDK_VERSION,\n ServerRuntimeClient,\n} from '@sentry/core';\nimport { type AsyncLocalStorageLookup, getTraceContextForScope } from '@sentry/opentelemetry';\nimport { isMainThread, threadId } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClientOptions } from '../types';\n\nconst DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS = 60_000; // 60s was chosen arbitrarily\n\n/** A client for using Sentry with Node & OpenTelemetry. */\nexport class NodeClient extends ServerRuntimeClient {\n public traceProvider: BasicTracerProvider | undefined;\n public asyncLocalStorageLookup: AsyncLocalStorageLookup | undefined;\n\n private _tracer: Tracer | undefined;\n private _clientReportInterval: NodeJS.Timeout | undefined;\n private _clientReportOnExitFlushListener: (() => void) | undefined;\n private _logOnExitFlushListener: (() => void) | undefined;\n\n public constructor(options: NodeClientOptions) {\n const serverName =\n options.includeServerName === false\n ? undefined\n : options.serverName || global.process.env.SENTRY_NAME || os.hostname();\n\n const clientOptions: ServerRuntimeClientOptions = {\n ...options,\n platform: 'node',\n // Use provided runtime or default to 'node' with current process version\n runtime: options.runtime || { name: 'node', version: global.process.version },\n serverName,\n };\n\n if (options.openTelemetryInstrumentations) {\n registerInstrumentations({\n instrumentations: options.openTelemetryInstrumentations,\n });\n }\n\n applySdkMetadata(clientOptions, 'node');\n\n debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${isMainThread ? 'main' : `worker-${threadId}`}.`);\n\n super(clientOptions);\n\n if (this.getOptions().enableLogs) {\n this._logOnExitFlushListener = () => {\n _INTERNAL_flushLogsBuffer(this);\n };\n\n if (serverName) {\n this.on('beforeCaptureLog', log => {\n log.attributes = {\n ...log.attributes,\n 'server.address': serverName,\n };\n });\n }\n\n process.on('beforeExit', this._logOnExitFlushListener);\n }\n }\n\n /** Get the OTEL tracer. */\n public get tracer(): Tracer {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/node';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async flush(timeout?: number): PromiseLike {\n await this.traceProvider?.forceFlush();\n\n if (this.getOptions().sendClientReports) {\n this._flushOutcomes();\n }\n\n return super.flush(timeout);\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async close(timeout?: number | undefined): PromiseLike {\n if (this._clientReportInterval) {\n clearInterval(this._clientReportInterval);\n }\n\n if (this._clientReportOnExitFlushListener) {\n process.off('beforeExit', this._clientReportOnExitFlushListener);\n }\n\n if (this._logOnExitFlushListener) {\n process.off('beforeExit', this._logOnExitFlushListener);\n }\n\n const allEventsSent = await super.close(timeout);\n if (this.traceProvider) {\n await this.traceProvider.shutdown();\n }\n\n return allEventsSent;\n }\n\n /**\n * Will start tracking client reports for this client.\n *\n * NOTICE: This method will create an interval that is periodically called and attach a `process.on('beforeExit')`\n * hook. To clean up these resources, call `.close()` when you no longer intend to use the client. Not doing so will\n * result in a memory leak.\n */\n // The reason client reports need to be manually activated with this method instead of just enabling them in a\n // constructor, is that if users periodically and unboundedly create new clients, we will create more and more\n // intervals and beforeExit listeners, thus leaking memory. In these situations, users are required to call\n // `client.close()` in order to dispose of the acquired resources.\n // We assume that calling this method in Sentry.init() is a sensible default, because calling Sentry.init() over and\n // over again would also result in memory leaks.\n // Note: We have experimented with using `FinalizationRegisty` to clear the interval when the client is garbage\n // collected, but it did not work, because the cleanup function never got called.\n public startClientReportTracking(): void {\n const clientOptions = this.getOptions();\n if (clientOptions.sendClientReports) {\n this._clientReportOnExitFlushListener = () => {\n this._flushOutcomes();\n };\n\n this._clientReportInterval = setInterval(() => {\n DEBUG_BUILD && debug.log('Flushing client reports based on interval.');\n this._flushOutcomes();\n }, clientOptions.clientReportFlushInterval ?? DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS)\n // Unref is critical for not preventing the process from exiting because the interval is active.\n .unref();\n\n process.on('beforeExit', this._clientReportOnExitFlushListener);\n }\n }\n\n /** @inheritDoc */\n protected _setupIntegrations(): void {\n // Clear AI provider skip registrations before setting up integrations\n // This ensures a clean state between different client initializations\n // (e.g., when LangChain skips OpenAI in one client, but a subsequent client uses OpenAI standalone)\n _INTERNAL_clearAiProviderSkips();\n super._setupIntegrations();\n }\n\n /** Custom implementation for OTEL, so we can handle scope-span linking. */\n protected _getTraceInfoFromScope(\n scope: Scope | undefined,\n ): [dynamicSamplingContext: Partial | undefined, traceContext: TraceContext | undefined] {\n if (!scope) {\n return [undefined, undefined];\n }\n\n return getTraceContextForScope(this, scope);\n }\n}\n","import { debug, GLOBAL_OBJ } from '@sentry/core';\nimport { createAddHookMessageChannel } from 'import-in-the-middle';\nimport * as moduleModule from 'module';\nimport { supportsEsmLoaderHooks } from '../utils/detection';\n\n/**\n * Initialize the ESM loader - This method is private and not part of the public\n * API.\n *\n * @ignore\n */\nexport function initializeEsmLoader(): void {\n if (!supportsEsmLoaderHooks()) {\n return;\n }\n\n if (!GLOBAL_OBJ._sentryEsmLoaderHookRegistered) {\n GLOBAL_OBJ._sentryEsmLoaderHookRegistered = true;\n\n try {\n const { addHookMessagePort } = createAddHookMessageChannel();\n // @ts-expect-error register is available in these versions\n moduleModule.register('import-in-the-middle/hook.mjs', import.meta.url, {\n data: { addHookMessagePort, include: [] },\n transferList: [addHookMessagePort],\n });\n } catch (error) {\n debug.warn(\"Failed to register 'import-in-the-middle' hook\", error);\n }\n }\n}\n","import type { Integration, Options } from '@sentry/core';\nimport {\n applySdkMetadata,\n consoleIntegration,\n consoleSandbox,\n conversationIdIntegration,\n debug,\n envToBool,\n functionToStringIntegration,\n getCurrentScope,\n getIntegrationsToSetup,\n hasSpansEnabled,\n inboundFiltersIntegration,\n linkedErrorsIntegration,\n propagationContextFromHeaders,\n requestDataIntegration,\n stackParserFromStackParserOptions,\n} from '@sentry/core';\nimport {\n enhanceDscWithOpenTelemetryRootSpanName,\n openTelemetrySetupCheck,\n setOpenTelemetryContextAsyncContextStrategy,\n setupEventContextTrace,\n} from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { childProcessIntegration } from '../integrations/childProcess';\nimport { nodeContextIntegration } from '../integrations/context';\nimport { contextLinesIntegration } from '../integrations/contextlines';\nimport { httpIntegration } from '../integrations/http';\nimport { localVariablesIntegration } from '../integrations/local-variables';\nimport { modulesIntegration } from '../integrations/modules';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch';\nimport { onUncaughtExceptionIntegration } from '../integrations/onuncaughtexception';\nimport { onUnhandledRejectionIntegration } from '../integrations/onunhandledrejection';\nimport { processSessionIntegration } from '../integrations/processSession';\nimport { INTEGRATION_NAME as SPOTLIGHT_INTEGRATION_NAME, spotlightIntegration } from '../integrations/spotlight';\nimport { systemErrorIntegration } from '../integrations/systemError';\nimport { makeNodeTransport } from '../transports';\nimport type { NodeClientOptions, NodeOptions } from '../types';\nimport { isCjs } from '../utils/detection';\nimport { getSpotlightConfig } from '../utils/spotlight';\nimport { defaultStackParser, getSentryRelease } from './api';\nimport { NodeClient } from './client';\nimport { initializeEsmLoader } from './esmLoader';\n\n/**\n * Get default integrations for the Node-Core SDK.\n */\nexport function getDefaultIntegrations(): Integration[] {\n return [\n // Common\n // TODO(v11): Replace with `eventFiltersIntegration` once we remove the deprecated `inboundFiltersIntegration`\n // eslint-disable-next-line deprecation/deprecation\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n linkedErrorsIntegration(),\n requestDataIntegration(),\n systemErrorIntegration(),\n conversationIdIntegration(),\n // Native Wrappers\n consoleIntegration(),\n httpIntegration(),\n nativeNodeFetchIntegration(),\n // Global Handlers\n onUncaughtExceptionIntegration(),\n onUnhandledRejectionIntegration(),\n // Event Info\n contextLinesIntegration(),\n localVariablesIntegration(),\n nodeContextIntegration(),\n childProcessIntegration(),\n processSessionIntegration(),\n modulesIntegration(),\n ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nexport function init(options: NodeOptions | undefined = {}): NodeClient | undefined {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nexport function initWithoutDefaultIntegrations(options: NodeOptions | undefined = {}): NodeClient {\n return _init(options, () => []);\n}\n\n/**\n * Initialize Sentry for Node, without performance instrumentation.\n */\nfunction _init(\n _options: NodeOptions | undefined = {},\n getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClient {\n const options = getClientOptions(_options, getDefaultIntegrationsImpl);\n\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n debug.enable();\n } else {\n // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n\n if (options.registerEsmLoaderHooks !== false) {\n initializeEsmLoader();\n }\n\n setOpenTelemetryContextAsyncContextStrategy();\n\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n if (options.spotlight && !options.integrations.some(({ name }) => name === SPOTLIGHT_INTEGRATION_NAME)) {\n options.integrations.push(\n spotlightIntegration({\n sidecarUrl: typeof options.spotlight === 'string' ? options.spotlight : undefined,\n }),\n );\n }\n\n applySdkMetadata(options, 'node-core');\n\n const client = new NodeClient(options);\n // The client is on the current scope, from where it generally is inherited\n getCurrentScope().setClient(client);\n\n client.init();\n\n debug.log(`SDK initialized from ${isCjs() ? 'CommonJS' : 'ESM'}`);\n\n client.startClientReportTracking();\n\n updateScopeFromEnvVariables();\n\n enhanceDscWithOpenTelemetryRootSpanName(client);\n setupEventContextTrace(client);\n\n // Ensure we flush events when vercel functions are ended\n // See: https://vercel.com/docs/functions/functions-api-reference#sigterm-signal\n if (process.env.VERCEL) {\n process.on('SIGTERM', async () => {\n // We have 500ms for processing here, so we try to make sure to have enough time to send the events\n await client.flush(200);\n });\n }\n\n return client;\n}\n\n/**\n * Validate that your OpenTelemetry setup is correct.\n */\nexport function validateOpenTelemetrySetup(): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n const setup = openTelemetrySetupCheck();\n\n const required: ReturnType = ['SentryContextManager', 'SentryPropagator'];\n\n if (hasSpansEnabled()) {\n required.push('SentrySpanProcessor');\n }\n\n for (const k of required) {\n if (!setup.includes(k)) {\n debug.error(\n `You have to set up the ${k}. Without this, the OpenTelemetry & Sentry integration will not work properly.`,\n );\n }\n }\n\n if (!setup.includes('SentrySampler')) {\n debug.warn(\n 'You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.',\n );\n }\n}\n\nfunction getClientOptions(\n options: NodeOptions,\n getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClientOptions {\n const release = getRelease(options.release);\n\n const spotlight = getSpotlightConfig(options.spotlight);\n\n const tracesSampleRate = getTracesSampleRate(options.tracesSampleRate);\n\n const mergedOptions = {\n ...options,\n dsn: options.dsn ?? process.env.SENTRY_DSN,\n environment: options.environment ?? process.env.SENTRY_ENVIRONMENT,\n sendClientReports: options.sendClientReports ?? true,\n transport: options.transport ?? makeNodeTransport,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n release,\n tracesSampleRate,\n spotlight,\n debug: envToBool(options.debug ?? process.env.SENTRY_DEBUG),\n };\n\n const integrations = options.integrations;\n const defaultIntegrations = options.defaultIntegrations ?? getDefaultIntegrationsImpl(mergedOptions);\n\n return {\n ...mergedOptions,\n integrations: getIntegrationsToSetup({\n defaultIntegrations,\n integrations,\n }),\n };\n}\n\nfunction getRelease(release: NodeOptions['release']): string | undefined {\n if (release !== undefined) {\n return release;\n }\n\n const detectedRelease = getSentryRelease();\n if (detectedRelease !== undefined) {\n return detectedRelease;\n }\n\n return undefined;\n}\n\nfunction getTracesSampleRate(tracesSampleRate: NodeOptions['tracesSampleRate']): number | undefined {\n if (tracesSampleRate !== undefined) {\n return tracesSampleRate;\n }\n\n const sampleRateFromEnv = process.env.SENTRY_TRACES_SAMPLE_RATE;\n if (!sampleRateFromEnv) {\n return undefined;\n }\n\n const parsed = parseFloat(sampleRateFromEnv);\n return isFinite(parsed) ? parsed : undefined;\n}\n\n/**\n * Update scope and propagation context based on environmental variables.\n *\n * See https://github.com/getsentry/rfcs/blob/main/text/0071-continue-trace-over-process-boundaries.md\n * for more details.\n */\nfunction updateScopeFromEnvVariables(): void {\n if (envToBool(process.env.SENTRY_USE_ENVIRONMENT) !== false) {\n const sentryTraceEnv = process.env.SENTRY_TRACE;\n const baggageEnv = process.env.SENTRY_BAGGAGE;\n const propagationContext = propagationContextFromHeaders(sentryTraceEnv, baggageEnv);\n getCurrentScope().setPropagationContext(propagationContext);\n }\n}\n","import { context } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { getScopesFromContext } from '@sentry/opentelemetry';\n\n/**\n * Update the active isolation scope.\n * Should be used with caution!\n */\nexport function setIsolationScope(isolationScope: Scope): void {\n const scopes = getScopesFromContext(context.active());\n if (scopes) {\n scopes.isolationScope = isolationScope;\n }\n}\n","import type { MissingInstrumentationContext } from '@sentry/core';\nimport { isCjs } from './detection';\n\nexport const createMissingInstrumentationContext = (pkg: string): MissingInstrumentationContext => ({\n package: pkg,\n 'javascript.is_cjs': isCjs(),\n});\n","import { isWrapped } from '@opentelemetry/instrumentation';\nimport { consoleSandbox, getClient, getGlobalScope, hasSpansEnabled, isEnabled } from '@sentry/core';\nimport type { NodeClient } from '../sdk/client';\nimport { createMissingInstrumentationContext } from './createMissingInstrumentationContext';\nimport { isCjs } from './detection';\n\n/**\n * Checks and warns if a framework isn't wrapped by opentelemetry.\n */\nexport function ensureIsWrapped(\n maybeWrappedFunction: unknown,\n name: 'express' | 'connect' | 'fastify' | 'hapi' | 'koa' | 'hono',\n): void {\n const clientOptions = getClient()?.getOptions();\n if (\n !clientOptions?.disableInstrumentationWarnings &&\n !isWrapped(maybeWrappedFunction) &&\n isEnabled() &&\n hasSpansEnabled(clientOptions)\n ) {\n consoleSandbox(() => {\n if (isCjs()) {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] ${name} is not instrumented. This is likely because you required/imported ${name} before calling \\`Sentry.init()\\`.`,\n );\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] ${name} is not instrumented. Please make sure to initialize Sentry in a separate file that you \\`--import\\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${name}/install/esm/.`,\n );\n }\n });\n\n getGlobalScope().setContext('missing_instrumentation', createMissingInstrumentationContext(name));\n }\n}\n","import { types } from 'node:util';\nimport { Worker } from 'node:worker_threads';\nimport type { Contexts, Event, EventHint, Integration, IntegrationFn, ScopeData } from '@sentry/core';\nimport {\n debug,\n defineIntegration,\n getClient,\n getCombinedScopeData,\n getCurrentScope,\n getFilenameToDebugIdMap,\n getIsolationScope,\n GLOBAL_OBJ,\n} from '@sentry/core';\nimport { NODE_VERSION } from '../../nodeVersion';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type { AnrIntegrationOptions, WorkerStartData } from './common';\n\nconst { isPromise } = types;\n\n// This string is a placeholder that gets overwritten with the worker code.\nexport const base64WorkerScript = '###AnrWorkerScript###';\n\nconst DEFAULT_INTERVAL = 50;\nconst DEFAULT_HANG_THRESHOLD = 5000;\n\nfunction log(message: string, ...args: unknown[]): void {\n debug.log(`[ANR] ${message}`, ...args);\n}\n\nfunction globalWithScopeFetchFn(): typeof GLOBAL_OBJ & { __SENTRY_GET_SCOPES__?: () => ScopeData } {\n return GLOBAL_OBJ;\n}\n\n/** Fetches merged scope data */\nfunction getScopeData(): ScopeData {\n const scope = getCombinedScopeData(getIsolationScope(), getCurrentScope());\n\n // We remove attachments because they likely won't serialize well as json\n scope.attachments = [];\n // We can't serialize event processor functions\n scope.eventProcessors = [];\n\n return scope;\n}\n\n/**\n * Gets contexts by calling all event processors. This shouldn't be called until all integrations are setup\n */\nasync function getContexts(client: NodeClient): Promise {\n let event: Event | null = { message: 'ANR' };\n const eventHint: EventHint = {};\n\n for (const processor of client.getEventProcessors()) {\n if (event === null) break;\n event = await processor(event, eventHint);\n }\n\n return event?.contexts || {};\n}\n\nconst INTEGRATION_NAME = 'Anr';\n\ntype AnrInternal = { startWorker: () => void; stopWorker: () => void };\n\n// eslint-disable-next-line deprecation/deprecation\nconst _anrIntegration = ((options: Partial = {}) => {\n if (NODE_VERSION.major < 16 || (NODE_VERSION.major === 16 && NODE_VERSION.minor < 17)) {\n throw new Error('ANR detection requires Node 16.17.0 or later');\n }\n\n let worker: Promise<() => void> | undefined;\n let client: NodeClient | undefined;\n\n // Hookup the scope fetch function to the global object so that it can be called from the worker thread via the\n // debugger when it pauses\n const gbl = globalWithScopeFetchFn();\n gbl.__SENTRY_GET_SCOPES__ = getScopeData;\n\n return {\n name: INTEGRATION_NAME,\n startWorker: () => {\n if (worker) {\n return;\n }\n\n if (client) {\n worker = _startWorker(client, options);\n }\n },\n stopWorker: () => {\n if (worker) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.then(stop => {\n stop();\n worker = undefined;\n });\n }\n },\n async setup(initClient: NodeClient) {\n client = initClient;\n\n if (options.captureStackTrace && (await isDebuggerEnabled())) {\n debug.warn('ANR captureStackTrace has been disabled because the debugger was already enabled');\n options.captureStackTrace = false;\n }\n\n // setImmediate is used to ensure that all other integrations have had their setup called first.\n // This allows us to call into all integrations to fetch the full context\n setImmediate(() => this.startWorker());\n },\n } as Integration & AnrInternal;\n}) satisfies IntegrationFn;\n\n// eslint-disable-next-line deprecation/deprecation\ntype AnrReturn = (options?: Partial) => Integration & AnrInternal;\n\n/**\n * Application Not Responding (ANR) integration for Node.js applications.\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n *\n * Detects when the Node.js main thread event loop is blocked for more than the configured\n * threshold (5 seconds by default) and reports these as Sentry events.\n *\n * ANR detection uses a worker thread to monitor the event loop in the main app thread.\n * The main app thread sends a heartbeat message to the ANR worker thread every 50ms by default.\n * If the ANR worker does not receive a heartbeat message for the configured threshold duration,\n * it triggers an ANR event.\n *\n * - Node.js 16.17.0 or higher\n * - Only supported in the Node.js runtime (not browsers)\n * - Not supported for Node.js clusters\n *\n * Overhead should be minimal:\n * - Main thread: Only polling the ANR worker over IPC every 50ms\n * - Worker thread: Consumes around 10-20 MB of RAM\n * - When ANR detected: Brief pause in debugger to capture stack trace (negligible compared to the blocking)\n *\n * @example\n * ```javascript\n * Sentry.init({\n * dsn: \"https://examplePublicKey@o0.ingest.sentry.io/0\",\n * integrations: [\n * Sentry.anrIntegration({\n * anrThreshold: 5000,\n * captureStackTrace: true,\n * pollInterval: 50,\n * }),\n * ],\n * });\n * ```\n */\nexport const anrIntegration = defineIntegration(_anrIntegration) as AnrReturn;\n\n/**\n * Starts the ANR worker thread\n *\n * @returns A function to stop the worker\n */\nasync function _startWorker(\n client: NodeClient,\n // eslint-disable-next-line deprecation/deprecation\n integrationOptions: Partial,\n): Promise<() => void> {\n const dsn = client.getDsn();\n\n if (!dsn) {\n return () => {\n //\n };\n }\n\n const contexts = await getContexts(client);\n\n // These will not be accurate if sent later from the worker thread\n delete contexts.app?.app_memory;\n delete contexts.device?.free_memory;\n\n const initOptions = client.getOptions();\n\n const sdkMetadata = client.getSdkMetadata() || {};\n if (sdkMetadata.sdk) {\n sdkMetadata.sdk.integrations = initOptions.integrations.map(i => i.name);\n }\n\n const options: WorkerStartData = {\n debug: debug.isEnabled(),\n dsn,\n tunnel: initOptions.tunnel,\n environment: initOptions.environment || 'production',\n release: initOptions.release,\n dist: initOptions.dist,\n sdkMetadata,\n appRootPath: integrationOptions.appRootPath,\n pollInterval: integrationOptions.pollInterval || DEFAULT_INTERVAL,\n anrThreshold: integrationOptions.anrThreshold || DEFAULT_HANG_THRESHOLD,\n captureStackTrace: !!integrationOptions.captureStackTrace,\n maxAnrEvents: integrationOptions.maxAnrEvents || 1,\n staticTags: integrationOptions.staticTags || {},\n contexts,\n };\n\n if (options.captureStackTrace) {\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n const timer = setInterval(() => {\n try {\n const currentSession = getIsolationScope().getSession();\n // We need to copy the session object and remove the toJSON method so it can be sent to the worker\n // serialized without making it a SerializedSession\n const session = currentSession ? { ...currentSession, toJSON: undefined } : undefined;\n // message the worker to tell it the main event loop is still running\n worker.postMessage({ session, debugImages: getFilenameToDebugIdMap(initOptions.stackParser) });\n } catch {\n //\n }\n }, options.pollInterval);\n // Timer should not block exit\n timer.unref();\n\n worker.on('message', (msg: string) => {\n if (msg === 'session-ended') {\n log('ANR event sent from ANR worker. Clearing session in this thread.');\n getIsolationScope().setSession(undefined);\n }\n });\n\n worker.once('error', (err: Error) => {\n clearInterval(timer);\n log('ANR worker error', err);\n });\n\n worker.once('exit', (code: number) => {\n clearInterval(timer);\n log('ANR worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n\n return () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n clearInterval(timer);\n };\n}\n\n/**\n * @see {@link disableBlockDetectionForCallback}\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => T): T;\n/**\n * @see {@link disableBlockDetectionForCallback}\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => Promise): Promise;\n/**\n * Temporarily disables ANR detection for the duration of a callback function.\n *\n * This utility function allows you to disable ANR detection during operations that\n * are expected to block the event loop, such as intensive computational tasks or\n * synchronous I/O operations.\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => T | Promise): T | Promise {\n const integration = getClient()?.getIntegrationByName(INTEGRATION_NAME) as AnrInternal | undefined;\n\n if (!integration) {\n return callback();\n }\n\n integration.stopWorker();\n\n const result = callback();\n if (isPromise(result)) {\n return result.finally(() => integration.startWorker());\n }\n\n integration.startWorker();\n return result;\n}\n","import { format } from 'node:util';\nimport type { Log, LogSeverityLevel, ParameterizedString, Scope } from '@sentry/core';\nimport { _INTERNAL_captureLog } from '@sentry/core';\n\n/**\n * Additional metadata to capture the log with.\n */\ninterface CaptureLogMetadata {\n scope?: Scope;\n}\n\ntype CaptureLogArgWithTemplate = [\n messageTemplate: string,\n messageParams: Array,\n attributes?: Log['attributes'],\n metadata?: CaptureLogMetadata,\n];\n\ntype CaptureLogArgWithoutTemplate = [\n message: ParameterizedString,\n attributes?: Log['attributes'],\n metadata?: CaptureLogMetadata,\n];\n\nexport type CaptureLogArgs = CaptureLogArgWithTemplate | CaptureLogArgWithoutTemplate;\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n */\nexport function captureLog(level: LogSeverityLevel, ...args: CaptureLogArgs): void {\n const [messageOrMessageTemplate, paramsOrAttributes, maybeAttributesOrMetadata, maybeMetadata] = args;\n if (Array.isArray(paramsOrAttributes)) {\n // type-casting here because from the type definitions we know that `maybeAttributesOrMetadata` is an attributes object (or undefined)\n const attributes = { ...(maybeAttributesOrMetadata as Log['attributes'] | undefined) };\n attributes['sentry.message.template'] = messageOrMessageTemplate;\n paramsOrAttributes.forEach((param, index) => {\n attributes[`sentry.message.parameter.${index}`] = param;\n });\n const message = format(messageOrMessageTemplate, ...paramsOrAttributes);\n _INTERNAL_captureLog({ level, message, attributes }, maybeMetadata?.scope);\n } else {\n _INTERNAL_captureLog(\n { level, message: messageOrMessageTemplate, attributes: paramsOrAttributes },\n // type-casting here because from the type definitions we know that `maybeAttributesOrMetadata` is a metadata object (or undefined)\n (maybeAttributesOrMetadata as CaptureLogMetadata | undefined)?.scope ?? maybeMetadata?.scope,\n );\n }\n}\n","import { captureLog, type CaptureLogArgs } from './capture';\n\n/**\n * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('Starting database connection', {\n * database: 'users',\n * connectionId: 'conn_123'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace('Database connection %s established for %s',\n * ['successful', 'users'],\n * { connectionId: 'conn_123' }\n * );\n * ```\n */\nexport function trace(...args: CaptureLogArgs): void {\n captureLog('trace', ...args);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Cache miss for user profile', {\n * userId: 'user_123',\n * cacheKey: 'profile:user_123'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug('Cache %s for %s: %s',\n * ['miss', 'user profile', 'key not found'],\n * { userId: 'user_123' }\n * );\n * ```\n */\nexport function debug(...args: CaptureLogArgs): void {\n captureLog('debug', ...args);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User profile updated', {\n * userId: 'user_123',\n * updatedFields: ['email', 'preferences']\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info('User %s updated their %s',\n * ['John Doe', 'profile settings'],\n * { userId: 'user_123' }\n * );\n * ```\n */\nexport function info(...args: CaptureLogArgs): void {\n captureLog('info', ...args);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Rate limit approaching', {\n * endpoint: '/api/users',\n * currentRate: '95/100',\n * resetTime: '2024-03-20T10:00:00Z'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn('Rate limit %s for %s: %s',\n * ['approaching', '/api/users', '95/100 requests'],\n * { resetTime: '2024-03-20T10:00:00Z' }\n * );\n * ```\n */\nexport function warn(...args: CaptureLogArgs): void {\n captureLog('warn', ...args);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to process payment', {\n * orderId: 'order_123',\n * errorCode: 'PAYMENT_FAILED',\n * amount: 99.99\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error('Payment processing failed for order %s: %s',\n * ['order_123', 'insufficient funds'],\n * { amount: 99.99 }\n * );\n * ```\n */\nexport function error(...args: CaptureLogArgs): void {\n captureLog('error', ...args);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Database connection pool exhausted', {\n * database: 'users',\n * activeConnections: 100,\n * maxConnections: 100\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal('Database %s: %s connections active',\n * ['connection pool exhausted', '100/100'],\n * { database: 'users' }\n * );\n * ```\n */\nexport function fatal(...args: CaptureLogArgs): void {\n captureLog('fatal', ...args);\n}\n\nexport { fmt } from '@sentry/core';\n","import { monitorEventLoopDelay, performance } from 'perf_hooks';\nimport { _INTERNAL_safeDateNow, _INTERNAL_safeUnref, defineIntegration, metrics } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'NodeRuntimeMetrics';\nconst DEFAULT_INTERVAL_MS = 30_000;\nconst EVENT_LOOP_DELAY_RESOLUTION_MS = 10;\n\nexport interface NodeRuntimeMetricsOptions {\n /**\n * Which metrics to collect.\n *\n * Default on (8 metrics):\n * - `cpuUtilization` — CPU utilization ratio\n * - `memRss` — Resident Set Size (actual memory footprint)\n * - `memHeapUsed` — V8 heap currently in use\n * - `memHeapTotal` — total V8 heap allocated (headroom paired with `memHeapUsed`)\n * - `eventLoopDelayP50` — median event loop delay (baseline latency)\n * - `eventLoopDelayP99` — 99th percentile event loop delay (tail latency / spikes)\n * - `eventLoopUtilization` — fraction of time the event loop was active\n * - `uptime` — process uptime (detect restarts/crashes)\n *\n * Default off (opt-in):\n * - `cpuTime` — raw user/system CPU time in seconds\n * - `memExternal` — external/ArrayBuffer memory (relevant for native addons)\n * - `eventLoopDelayMin` / `eventLoopDelayMax` / `eventLoopDelayMean` / `eventLoopDelayP90`\n */\n collect?: {\n // Default on\n cpuUtilization?: boolean;\n memHeapUsed?: boolean;\n memRss?: boolean;\n eventLoopDelayP99?: boolean;\n eventLoopUtilization?: boolean;\n uptime?: boolean;\n // Default off\n cpuTime?: boolean;\n memHeapTotal?: boolean;\n memExternal?: boolean;\n eventLoopDelayMin?: boolean;\n eventLoopDelayMax?: boolean;\n eventLoopDelayMean?: boolean;\n eventLoopDelayP50?: boolean;\n eventLoopDelayP90?: boolean;\n };\n /**\n * How often to collect metrics, in milliseconds.\n * @default 30000\n */\n collectionIntervalMs?: number;\n}\n\n/**\n * Automatically collects Node.js runtime metrics and emits them to Sentry.\n *\n * @example\n * ```ts\n * Sentry.init({\n * integrations: [\n * Sentry.nodeRuntimeMetricsIntegration(),\n * ],\n * });\n * ```\n */\nexport const nodeRuntimeMetricsIntegration = defineIntegration((options: NodeRuntimeMetricsOptions = {}) => {\n const collectionIntervalMs = options.collectionIntervalMs ?? DEFAULT_INTERVAL_MS;\n const collect = {\n // Default on\n cpuUtilization: true,\n memHeapUsed: true,\n memHeapTotal: true,\n memRss: true,\n eventLoopDelayP50: true,\n eventLoopDelayP99: true,\n eventLoopUtilization: true,\n uptime: true,\n // Default off\n cpuTime: false,\n memExternal: false,\n eventLoopDelayMin: false,\n eventLoopDelayMax: false,\n eventLoopDelayMean: false,\n eventLoopDelayP90: false,\n ...options.collect,\n };\n\n const needsEventLoopDelay =\n collect.eventLoopDelayP99 ||\n collect.eventLoopDelayMin ||\n collect.eventLoopDelayMax ||\n collect.eventLoopDelayMean ||\n collect.eventLoopDelayP50 ||\n collect.eventLoopDelayP90;\n\n const needsCpu = collect.cpuUtilization || collect.cpuTime;\n\n let intervalId: ReturnType | undefined;\n let prevCpuUsage: NodeJS.CpuUsage | undefined;\n let prevElu: ReturnType | undefined;\n let prevFlushTime: number = 0;\n let eventLoopDelayHistogram: ReturnType | undefined;\n\n const resolutionNs = EVENT_LOOP_DELAY_RESOLUTION_MS * 1e6;\n const nsToS = (ns: number): number => Math.max(0, (ns - resolutionNs) / 1e9);\n\n const METRIC_ATTRIBUTES = { attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n const METRIC_ATTRIBUTES_BYTE = { unit: 'byte', attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n const METRIC_ATTRIBUTES_SECOND = { unit: 'second', attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n\n function collectMetrics(): void {\n const now = _INTERNAL_safeDateNow();\n const elapsed = now - prevFlushTime;\n\n if (needsCpu && prevCpuUsage !== undefined) {\n const delta = process.cpuUsage(prevCpuUsage);\n\n if (collect.cpuTime) {\n metrics.gauge('node.runtime.cpu.user', delta.user / 1e6, METRIC_ATTRIBUTES_SECOND);\n metrics.gauge('node.runtime.cpu.system', delta.system / 1e6, METRIC_ATTRIBUTES_SECOND);\n }\n if (collect.cpuUtilization && elapsed > 0) {\n // Ratio of CPU time to wall-clock time. Can exceed 1.0 on multi-core systems.\n // TODO: In cluster mode, add a runtime_id/process_id attribute to disambiguate per-worker metrics.\n metrics.gauge(\n 'node.runtime.cpu.utilization',\n (delta.user + delta.system) / (elapsed * 1000),\n METRIC_ATTRIBUTES,\n );\n }\n\n prevCpuUsage = process.cpuUsage();\n }\n\n if (collect.memRss || collect.memHeapUsed || collect.memHeapTotal || collect.memExternal) {\n const mem = process.memoryUsage();\n if (collect.memRss) {\n metrics.gauge('node.runtime.mem.rss', mem.rss, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memHeapUsed) {\n metrics.gauge('node.runtime.mem.heap_used', mem.heapUsed, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memHeapTotal) {\n metrics.gauge('node.runtime.mem.heap_total', mem.heapTotal, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memExternal) {\n metrics.gauge('node.runtime.mem.external', mem.external, METRIC_ATTRIBUTES_BYTE);\n metrics.gauge('node.runtime.mem.array_buffers', mem.arrayBuffers, METRIC_ATTRIBUTES_BYTE);\n }\n }\n\n if (needsEventLoopDelay && eventLoopDelayHistogram) {\n if (collect.eventLoopDelayMin) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.min',\n nsToS(eventLoopDelayHistogram.min),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayMax) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.max',\n nsToS(eventLoopDelayHistogram.max),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayMean) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.mean',\n nsToS(eventLoopDelayHistogram.mean),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP50) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p50',\n nsToS(eventLoopDelayHistogram.percentile(50)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP90) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p90',\n nsToS(eventLoopDelayHistogram.percentile(90)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP99) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p99',\n nsToS(eventLoopDelayHistogram.percentile(99)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n\n eventLoopDelayHistogram.reset();\n }\n\n if (collect.eventLoopUtilization && prevElu !== undefined) {\n const currentElu = performance.eventLoopUtilization();\n const delta = performance.eventLoopUtilization(currentElu, prevElu);\n metrics.gauge('node.runtime.event_loop.utilization', delta.utilization, METRIC_ATTRIBUTES);\n prevElu = currentElu;\n }\n\n if (collect.uptime && elapsed > 0) {\n metrics.count('node.runtime.process.uptime', elapsed / 1000, METRIC_ATTRIBUTES_SECOND);\n }\n\n prevFlushTime = now;\n }\n\n return {\n name: INTEGRATION_NAME,\n\n setup(): void {\n if (needsEventLoopDelay) {\n // Disable any previous histogram before overwriting (prevents native resource leak on re-init).\n eventLoopDelayHistogram?.disable();\n try {\n eventLoopDelayHistogram = monitorEventLoopDelay({ resolution: EVENT_LOOP_DELAY_RESOLUTION_MS });\n eventLoopDelayHistogram.enable();\n } catch {\n // Not available in all runtimes (e.g. Bun throws NotImplementedError).\n eventLoopDelayHistogram = undefined;\n }\n }\n\n // Prime baselines before the first collection interval.\n if (needsCpu) {\n prevCpuUsage = process.cpuUsage();\n }\n if (collect.eventLoopUtilization) {\n prevElu = performance.eventLoopUtilization();\n }\n prevFlushTime = _INTERNAL_safeDateNow();\n\n // Guard against double setup (e.g. re-init).\n if (intervalId) {\n clearInterval(intervalId);\n }\n intervalId = _INTERNAL_safeUnref(setInterval(collectMetrics, collectionIntervalMs));\n },\n };\n});\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport type { LogSeverityLevel } from '@sentry/core';\nimport { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { captureLog } from '../logs/capture';\n\nconst DEFAULT_CAPTURED_LEVELS: Array = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n// See: https://github.com/winstonjs/triple-beam\nconst LEVEL_SYMBOL = Symbol.for('level');\nconst MESSAGE_SYMBOL = Symbol.for('message');\nconst SPLAT_SYMBOL = Symbol.for('splat');\n\n/**\n * Options for the Sentry Winston transport.\n */\ninterface WinstonTransportOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport, {\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * ```\n */\n levels?: Array;\n\n /**\n * Use this option to map custom levels to Sentry log severity levels.\n *\n * @example\n * ```ts\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport, {\n * customLevelMap: {\n * myCustomLevel: 'info',\n * customError: 'error',\n * },\n * });\n * ```\n */\n customLevelMap?: Record;\n}\n\n/**\n * Creates a new Sentry Winston transport that fowards logs to Sentry. Requires the `enableLogs` option to be enabled.\n *\n * Supports Winston 3.x.x.\n *\n * @param TransportClass - The Winston transport class to extend.\n * @returns The extended transport class.\n *\n * @example\n * ```ts\n * const winston = require('winston');\n * const Transport = require('winston-transport');\n *\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport);\n *\n * const logger = winston.createLogger({\n * transports: [new SentryWinstonTransport()],\n * });\n * ```\n */\nexport function createSentryWinstonTransport(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TransportClass: new (options?: any) => TransportStreamInstance,\n sentryWinstonOptions?: WinstonTransportOptions,\n): typeof TransportClass {\n // @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass\n class SentryWinstonTransport extends TransportClass {\n private _levels: Set;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public constructor(options?: any) {\n super(options);\n this._levels = new Set(sentryWinstonOptions?.levels ?? DEFAULT_CAPTURED_LEVELS);\n }\n\n /**\n * Forwards a winston log to the Sentry SDK.\n */\n public log(info: unknown, callback: () => void): void {\n try {\n setImmediate(() => {\n // @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass\n this.emit('logged', info);\n });\n\n if (!isObject(info)) {\n return;\n }\n\n const levelFromSymbol = info[LEVEL_SYMBOL];\n\n // See: https://github.com/winstonjs/winston?tab=readme-ov-file#streams-objectmode-and-info-objects\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { level, message, timestamp, ...attributes } = info;\n // Remove all symbols from the remaining attributes\n attributes[LEVEL_SYMBOL] = undefined;\n attributes[MESSAGE_SYMBOL] = undefined;\n attributes[SPLAT_SYMBOL] = undefined;\n\n const customLevel = sentryWinstonOptions?.customLevelMap?.[levelFromSymbol as string];\n const winstonLogLevel = WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[levelFromSymbol as string];\n const logSeverityLevel = customLevel ?? winstonLogLevel ?? 'info';\n\n if (this._levels.has(logSeverityLevel)) {\n captureLog(logSeverityLevel, message as string, {\n ...attributes,\n 'sentry.origin': 'auto.log.winston',\n });\n } else if (!customLevel && !winstonLogLevel) {\n DEBUG_BUILD &&\n debug.log(\n `Winston log level ${levelFromSymbol} is not captured by Sentry. Please add ${levelFromSymbol} to the \"customLevelMap\" option of the Sentry Winston transport.`,\n );\n }\n } catch {\n // do nothing\n }\n\n if (callback) {\n callback();\n }\n }\n }\n\n return SentryWinstonTransport as typeof TransportClass;\n}\n\nfunction isObject(anything: unknown): anything is Record {\n return typeof anything === 'object' && anything != null;\n}\n\n// npm\n// {\n// error: 0,\n// warn: 1,\n// info: 2,\n// http: 3,\n// verbose: 4,\n// debug: 5,\n// silly: 6\n// }\n//\n// syslog\n// {\n// emerg: 0,\n// alert: 1,\n// crit: 2,\n// error: 3,\n// warning: 4,\n// notice: 5,\n// info: 6,\n// debug: 7,\n// }\nconst WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n // npm\n silly: 'trace',\n // npm and syslog\n debug: 'debug',\n // npm\n verbose: 'debug',\n // npm\n http: 'debug',\n // npm and syslog\n info: 'info',\n // syslog\n notice: 'info',\n // npm\n warn: 'warn',\n // syslog\n warning: 'warn',\n // npm and syslog\n error: 'error',\n // syslog\n emerg: 'fatal',\n // syslog\n alert: 'fatal',\n // syslog\n crit: 'fatal',\n};\n","import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport type { Integration, IntegrationFn, LogSeverityLevel } from '@sentry/core';\nimport {\n _INTERNAL_captureLog,\n addExceptionMechanism,\n captureException,\n captureMessage,\n defineIntegration,\n severityLevelFromString,\n withScope,\n} from '@sentry/core';\n\nconst SENTRY_TRACK_SYMBOL = Symbol('sentry-track-pino-logger');\n\ntype LevelMapping = {\n // Fortunately pino uses the same levels as Sentry\n labels: { [level: number]: LogSeverityLevel };\n};\n\ntype Pino = {\n [key: symbol]: unknown;\n levels: LevelMapping;\n [SENTRY_TRACK_SYMBOL]?: 'track' | 'ignore';\n};\n\n/**\n * Gets a custom Pino key from a logger instance by searching for the symbol.\n * Pino uses non-global symbols like Symbol('pino.messageKey'): https://github.com/pinojs/pino/blob/8a816c0b1f72de5ae9181f3bb402109b66f7d812/lib/symbols.js\n */\nfunction getPinoKey(logger: Pino, symbolName: string, defaultKey: string): string {\n const symbols = Object.getOwnPropertySymbols(logger);\n const symbolString = `Symbol(${symbolName})`;\n for (const sym of symbols) {\n if (sym.toString() === symbolString) {\n const value = logger[sym];\n return typeof value === 'string' ? value : defaultKey;\n }\n }\n return defaultKey;\n}\n\ntype MergeObject = {\n [key: string]: unknown;\n err?: Error;\n};\n\ntype PinoHookArgs = [MergeObject, string, number];\n\ntype PinoOptions = {\n /**\n * Automatically instrument all Pino loggers.\n *\n * When set to `false`, only loggers marked with `pinoIntegration.trackLogger(logger)` will be captured.\n *\n * @default true\n */\n autoInstrument: boolean;\n /**\n * Options to enable capturing of error events.\n */\n error: {\n /**\n * Levels that trigger capturing of events.\n *\n * @default []\n */\n levels: LogSeverityLevel[];\n /**\n * By default, Sentry will mark captured errors as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled: boolean;\n };\n /**\n * Options to enable capturing of logs.\n */\n log: {\n /**\n * Levels that trigger capturing of logs. Logs are only captured if\n * `enableLogs` is enabled.\n *\n * @default [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"fatal\"]\n */\n levels: LogSeverityLevel[];\n };\n};\n\nconst DEFAULT_OPTIONS: PinoOptions = {\n autoInstrument: true,\n error: { levels: [], handled: true },\n log: { levels: ['trace', 'debug', 'info', 'warn', 'error', 'fatal'] },\n};\n\ntype DeepPartial = {\n [P in keyof T]?: T[P] extends object ? Partial : T[P];\n};\n\ntype PinoResult = {\n level?: string;\n time?: string;\n pid?: number;\n hostname?: string;\n} & Record;\n\nfunction stripIgnoredFields(result: PinoResult): PinoResult {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { level, time, pid, hostname, ...rest } = result;\n return rest;\n}\n\nconst _pinoIntegration = defineIntegration((userOptions: DeepPartial = {}) => {\n const options: PinoOptions = {\n autoInstrument: userOptions.autoInstrument !== false,\n error: { ...DEFAULT_OPTIONS.error, ...userOptions.error },\n log: { ...DEFAULT_OPTIONS.log, ...userOptions.log },\n };\n\n function shouldTrackLogger(logger: Pino): boolean {\n const override = logger[SENTRY_TRACK_SYMBOL];\n return override === 'track' || (override !== 'ignore' && options.autoInstrument);\n }\n\n return {\n name: 'Pino',\n setup: client => {\n const enableLogs = !!client.getOptions().enableLogs;\n\n const integratedChannel = diagnosticsChannel.tracingChannel('pino_asJson');\n\n function onPinoStart(self: Pino, args: PinoHookArgs, result: PinoResult): void {\n if (!shouldTrackLogger(self)) {\n return;\n }\n\n const resultObj = stripIgnoredFields(result);\n\n const [captureObj, message, levelNumber] = args;\n const level = self?.levels?.labels?.[levelNumber] || 'info';\n const messageKey = getPinoKey(self, 'pino.messageKey', 'msg');\n const logMessage = message || (resultObj?.[messageKey] as string | undefined) || '';\n\n if (enableLogs && options.log.levels.includes(level)) {\n const attributes: Record = {\n ...resultObj,\n 'sentry.origin': 'auto.log.pino',\n 'pino.logger.level': levelNumber,\n };\n\n _INTERNAL_captureLog({ level, message: logMessage, attributes });\n }\n\n if (options.error.levels.includes(level)) {\n const captureContext = {\n level: severityLevelFromString(level),\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'pino';\n\n addExceptionMechanism(event, {\n handled: options.error.handled,\n type: 'auto.log.pino',\n });\n\n return event;\n });\n\n const error = captureObj[getPinoKey(self, 'pino.errorKey', 'err')];\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n captureMessage(logMessage, captureContext);\n });\n }\n }\n\n integratedChannel.end.subscribe(data => {\n const {\n instance,\n arguments: args,\n result,\n } = data as { instance: Pino; arguments: PinoHookArgs; result: string };\n onPinoStart(instance, args, JSON.parse(result));\n });\n },\n };\n}) satisfies IntegrationFn;\n\ninterface PinoIntegrationFunction {\n (userOptions?: DeepPartial): Integration;\n /**\n * Marks a Pino logger to be tracked by the Pino integration.\n *\n * @param logger A Pino logger instance.\n */\n trackLogger(logger: unknown): void;\n /**\n * Marks a Pino logger to be ignored by the Pino integration.\n *\n * @param logger A Pino logger instance.\n */\n untrackLogger(logger: unknown): void;\n}\n\n/**\n * Integration for Pino logging library.\n * Captures Pino logs as Sentry logs and optionally captures some log levels as events.\n *\n * By default, all Pino loggers will be captured. To ignore a specific logger, use `pinoIntegration.untrackLogger(logger)`.\n *\n * If you disable automatic instrumentation with `autoInstrument: false`, you can mark specific loggers to be tracked with `pinoIntegration.trackLogger(logger)`.\n *\n * Requires Pino >=v8.0.0 and Node >=20.6.0 or >=18.19.0\n */\nexport const pinoIntegration = Object.assign(_pinoIntegration, {\n trackLogger(logger: unknown): void {\n if (logger && typeof logger === 'object' && 'levels' in logger) {\n (logger as Pino)[SENTRY_TRACK_SYMBOL] = 'track';\n }\n },\n untrackLogger(logger: unknown): void {\n if (logger && typeof logger === 'object' && 'levels' in logger) {\n (logger as Pino)[SENTRY_TRACK_SYMBOL] = 'ignore';\n }\n },\n}) as PinoIntegrationFunction;\n","import type { Span } from '@opentelemetry/api';\nimport type { SpanOrigin } from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\n\n/** Adds an origin to an OTEL Span. */\nexport function addOriginToSpan(span: Span, origin: SpanOrigin): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n}\n","/** Build a full URL from request options or a ClientRequest. */\nexport function getRequestUrl(requestOptions: {\n protocol?: string | null;\n hostname?: string | null;\n host?: string | null;\n port?: string | number | null;\n path?: string | null;\n}): string {\n const protocol = requestOptions.protocol || '';\n const hostname = requestOptions.hostname || requestOptions.host || '';\n // Don't log standard :80 (http) and :443 (https) ports to reduce the noise\n // Also don't add port if the hostname already includes a port\n const port =\n !requestOptions.port || requestOptions.port === 80 || requestOptions.port === 443 || /^(.*):(\\d+)$/.test(hostname)\n ? ''\n : `:${requestOptions.port}`;\n const path = requestOptions.path ? requestOptions.path : '/';\n return `${protocol}//${hostname}${port}${path}`;\n}\n","const replacements: [string, string][] = [\n ['january', '1'],\n ['february', '2'],\n ['march', '3'],\n ['april', '4'],\n ['may', '5'],\n ['june', '6'],\n ['july', '7'],\n ['august', '8'],\n ['september', '9'],\n ['october', '10'],\n ['november', '11'],\n ['december', '12'],\n ['jan', '1'],\n ['feb', '2'],\n ['mar', '3'],\n ['apr', '4'],\n ['may', '5'],\n ['jun', '6'],\n ['jul', '7'],\n ['aug', '8'],\n ['sep', '9'],\n ['oct', '10'],\n ['nov', '11'],\n ['dec', '12'],\n ['sunday', '0'],\n ['monday', '1'],\n ['tuesday', '2'],\n ['wednesday', '3'],\n ['thursday', '4'],\n ['friday', '5'],\n ['saturday', '6'],\n ['sun', '0'],\n ['mon', '1'],\n ['tue', '2'],\n ['wed', '3'],\n ['thu', '4'],\n ['fri', '5'],\n ['sat', '6'],\n];\n\n/**\n * Replaces names in cron expressions\n */\nexport function replaceCronNames(cronExpression: string): string {\n return replacements.reduce(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n (acc, [name, replacement]) => acc.replace(new RegExp(name, 'gi'), replacement),\n cronExpression,\n );\n}\n","import { captureException, withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport type CronJobParams = {\n cronTime: string | Date;\n onTick: (context: unknown, onComplete?: unknown) => void | Promise;\n onComplete?: () => void | Promise;\n start?: boolean | null;\n context?: unknown;\n runOnInit?: boolean | null;\n unrefTimeout?: boolean | null;\n} & (\n | {\n timeZone?: string | null;\n utcOffset?: never;\n }\n | {\n timeZone?: never;\n utcOffset?: number | null;\n }\n);\n\nexport type CronJob = {\n //\n};\n\nexport type CronJobConstructor = {\n from: (param: CronJobParams) => CronJob;\n\n new (\n cronTime: CronJobParams['cronTime'],\n onTick: CronJobParams['onTick'],\n onComplete?: CronJobParams['onComplete'],\n start?: CronJobParams['start'],\n timeZone?: CronJobParams['timeZone'],\n context?: CronJobParams['context'],\n runOnInit?: CronJobParams['runOnInit'],\n utcOffset?: null,\n unrefTimeout?: CronJobParams['unrefTimeout'],\n ): CronJob;\n new (\n cronTime: CronJobParams['cronTime'],\n onTick: CronJobParams['onTick'],\n onComplete?: CronJobParams['onComplete'],\n start?: CronJobParams['start'],\n timeZone?: null,\n context?: CronJobParams['context'],\n runOnInit?: CronJobParams['runOnInit'],\n utcOffset?: CronJobParams['utcOffset'],\n unrefTimeout?: CronJobParams['unrefTimeout'],\n ): CronJob;\n};\n\nconst ERROR_TEXT = 'Automatic instrumentation of CronJob only supports crontab string';\n\n/**\n * Instruments the `cron` library to send a check-in event to Sentry for each job execution.\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import { CronJob } from 'cron';\n *\n * const CronJobWithCheckIn = Sentry.cron.instrumentCron(CronJob, 'my-cron-job');\n *\n * // use the constructor\n * const job = new CronJobWithCheckIn('* * * * *', () => {\n * console.log('You will see this message every minute');\n * });\n *\n * // or from\n * const job = CronJobWithCheckIn.from({ cronTime: '* * * * *', onTick: () => {\n * console.log('You will see this message every minute');\n * });\n * ```\n */\nexport function instrumentCron(lib: T & CronJobConstructor, monitorSlug: string): T {\n let jobScheduled = false;\n\n return new Proxy(lib, {\n construct(target, args: ConstructorParameters) {\n const [cronTime, onTick, onComplete, start, timeZone, ...rest] = args;\n\n if (typeof cronTime !== 'string') {\n throw new Error(ERROR_TEXT);\n }\n\n if (jobScheduled) {\n throw new Error(`A job named '${monitorSlug}' has already been scheduled`);\n }\n\n jobScheduled = true;\n\n const cronString = replaceCronNames(cronTime);\n\n async function monitoredTick(context: unknown, onComplete?: unknown): Promise {\n return withMonitor(\n monitorSlug,\n async () => {\n try {\n await onTick(context, onComplete);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.cron.instrumentCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: cronString },\n timezone: timeZone || undefined,\n },\n );\n }\n\n return new target(cronTime, monitoredTick, onComplete, start, timeZone, ...rest);\n },\n get(target, prop: keyof CronJobConstructor) {\n if (prop === 'from') {\n return (param: CronJobParams) => {\n const { cronTime, onTick, timeZone } = param;\n\n if (typeof cronTime !== 'string') {\n throw new Error(ERROR_TEXT);\n }\n\n if (jobScheduled) {\n throw new Error(`A job named '${monitorSlug}' has already been scheduled`);\n }\n\n jobScheduled = true;\n\n const cronString = replaceCronNames(cronTime);\n\n param.onTick = async (context: unknown, onComplete?: unknown) => {\n return withMonitor(\n monitorSlug,\n async () => {\n try {\n await onTick(context, onComplete);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.cron.instrumentCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: cronString },\n timezone: timeZone || undefined,\n },\n );\n };\n\n return target.from(param);\n };\n } else {\n return target[prop];\n }\n },\n });\n}\n","import { captureException, type MonitorConfig, withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport interface NodeCronOptions {\n name: string;\n timezone?: string;\n}\n\nexport interface NodeCron {\n schedule: (\n cronExpression: string,\n callback: (context?: unknown) => void,\n options: NodeCronOptions | undefined,\n ) => unknown;\n}\n\n/**\n * Wraps the `node-cron` library with check-in monitoring.\n *\n * ```ts\n * import * as Sentry from \"@sentry/node\";\n * import * as cron from \"node-cron\";\n *\n * const cronWithCheckIn = Sentry.cron.instrumentNodeCron(cron);\n *\n * cronWithCheckIn.schedule(\n * \"* * * * *\",\n * () => {\n * console.log(\"running a task every minute\");\n * },\n * { name: \"my-cron-job\" },\n * );\n * ```\n */\nexport function instrumentNodeCron(\n lib: Partial & T,\n monitorConfig: Pick = {},\n): T {\n return new Proxy(lib, {\n get(target, prop) {\n if (prop === 'schedule' && target.schedule) {\n // When 'get' is called for schedule, return a proxied version of the schedule function\n return new Proxy(target.schedule, {\n apply(target, thisArg, argArray: Parameters) {\n const [expression, callback, options] = argArray;\n\n const name = options?.name;\n const timezone = options?.timezone;\n\n if (!name) {\n throw new Error('Missing \"name\" for scheduled job. A name is required for Sentry check-in monitoring.');\n }\n\n const monitoredCallback = async (...args: Parameters): Promise => {\n return withMonitor(\n name,\n async () => {\n // We have to manually catch here and capture the exception because node-cron swallows errors\n // https://github.com/node-cron/node-cron/issues/399\n try {\n // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n return await callback(...args);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.node-cron.instrumentNodeCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: replaceCronNames(expression) },\n timezone,\n ...monitorConfig,\n },\n );\n };\n\n return target.apply(thisArg, [expression, monitoredCallback, options]);\n },\n });\n } else {\n return target[prop as keyof T];\n }\n },\n });\n}\n","import { withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport interface NodeSchedule {\n scheduleJob(\n nameOrExpression: string | Date | object,\n expressionOrCallback: string | Date | object | (() => void),\n callback?: () => void,\n ): unknown;\n}\n\n/**\n * Instruments the `node-schedule` library to send a check-in event to Sentry for each job execution.\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import * as schedule from 'node-schedule';\n *\n * const scheduleWithCheckIn = Sentry.cron.instrumentNodeSchedule(schedule);\n *\n * const job = scheduleWithCheckIn.scheduleJob('my-cron-job', '* * * * *', () => {\n * console.log('You will see this message every minute');\n * });\n * ```\n */\nexport function instrumentNodeSchedule(lib: T & NodeSchedule): T {\n return new Proxy(lib, {\n get(target, prop: keyof NodeSchedule) {\n if (prop === 'scheduleJob') {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n return new Proxy(target.scheduleJob, {\n apply(target, thisArg, argArray: Parameters) {\n const [nameOrExpression, expressionOrCallback, callback] = argArray;\n\n if (\n typeof nameOrExpression !== 'string' ||\n typeof expressionOrCallback !== 'string' ||\n typeof callback !== 'function'\n ) {\n throw new Error(\n \"Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string\",\n );\n }\n\n const monitorSlug = nameOrExpression;\n const expression = expressionOrCallback;\n\n async function monitoredCallback(): Promise {\n return withMonitor(\n monitorSlug,\n async () => {\n // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n await callback?.();\n },\n {\n schedule: { type: 'crontab', value: replaceCronNames(expression) },\n },\n );\n }\n\n return target.apply(thisArg, [monitorSlug, expression, monitoredCallback]);\n },\n });\n }\n\n return target[prop];\n },\n });\n}\n","import { instrumentCron } from './cron';\nimport { instrumentNodeCron } from './node-cron';\nimport { instrumentNodeSchedule } from './node-schedule';\n\n/** Methods to instrument cron libraries for Sentry check-ins */\nexport const cron = {\n instrumentCron,\n instrumentNodeCron,\n instrumentNodeSchedule,\n};\n","import type { ClientRequest, IncomingMessage, RequestOptions, ServerResponse } from 'node:http';\nimport { diag } from '@opentelemetry/api';\nimport type { HttpInstrumentationConfig } from '@opentelemetry/instrumentation-http';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport type { Span } from '@sentry/core';\nimport {\n defineIntegration,\n getClient,\n hasSpansEnabled,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n stripDataUrlContent,\n} from '@sentry/core';\nimport type { HTTPModuleRequestIncomingMessage, NodeClient, SentryHttpInstrumentationOptions } from '@sentry/node-core';\nimport {\n addOriginToSpan,\n generateInstrumentOnce,\n getRequestUrl,\n httpServerIntegration,\n httpServerSpansIntegration,\n NODE_VERSION,\n SentryHttpInstrumentation,\n} from '@sentry/node-core';\nimport type { NodeClientOptions } from '../types';\n\nconst INTEGRATION_NAME = 'Http';\n\nconst INSTRUMENTATION_NAME = '@opentelemetry_sentry-patched/instrumentation-http';\n\n// The `http.client.request.created` diagnostics channel, needed for trace propagation,\n// was added in Node 22.12.0 (backported from 23.2.0). Earlier 22.x versions don't have it.\nconst FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL =\n (NODE_VERSION.major === 22 && NODE_VERSION.minor >= 12) ||\n (NODE_VERSION.major === 23 && NODE_VERSION.minor >= 2) ||\n NODE_VERSION.major >= 24;\n\ninterface HttpOptions {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * If set to false, do not emit any spans.\n * This will ensure that the default HttpInstrumentation from OpenTelemetry is not setup,\n * only the Sentry-specific instrumentation for request isolation is applied.\n *\n * If `skipOpenTelemetrySetup: true` is configured, this defaults to `false`, otherwise it defaults to `true`.\n */\n spans?: boolean;\n\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing HTTP requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's HttpInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n *\n * The `url` param contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * For example: `'https://someService.com/users/details?id=123'`\n *\n * The `request` param contains the original {@type RequestOptions} object used to make the outgoing request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreOutgoingRequests?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * A hook that can be used to mutate the span for incoming requests.\n * This is triggered after the span is created, but before it is recorded.\n */\n incomingRequestSpanHook?: (span: Span, request: IncomingMessage, response: ServerResponse) => void;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n dropSpansForIncomingRequestStatusCodes?: (number | [number, number])[];\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreIncomingRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * If true, do not generate spans for incoming requests at all.\n * This is used by Remix to avoid generating spans for incoming requests, as it generates its own spans.\n */\n disableIncomingRequestSpans?: boolean;\n\n /**\n * Additional instrumentation options that are passed to the underlying HttpInstrumentation.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: ClientRequest | HTTPModuleRequestIncomingMessage) => void;\n responseHook?: (span: Span, response: HTTPModuleRequestIncomingMessage | ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: ClientRequest | HTTPModuleRequestIncomingMessage,\n response: HTTPModuleRequestIncomingMessage | ServerResponse,\n ) => void;\n };\n}\n\nexport const instrumentSentryHttp = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n options => {\n return new SentryHttpInstrumentation(options);\n },\n);\n\nexport const instrumentOtelHttp = generateInstrumentOnce(INTEGRATION_NAME, config => {\n const instrumentation = new HttpInstrumentation({\n ...config,\n // This is hard-coded and can never be overridden by the user\n disableIncomingRequestInstrumentation: true,\n });\n\n // We want to update the logger namespace so we can better identify what is happening here\n try {\n instrumentation['_diag'] = diag.createComponentLogger({\n namespace: INSTRUMENTATION_NAME,\n });\n // @ts-expect-error We are writing a read-only property here...\n instrumentation.instrumentationName = INSTRUMENTATION_NAME;\n } catch {\n // ignore errors here...\n }\n\n // The OTel HttpInstrumentation (>=0.213.0) has a guard (`_httpPatched`/`_httpsPatched`)\n // that prevents patching `http`/`https` when loaded by both CJS `require()` and ESM `import`.\n // In environments like AWS Lambda, the runtime loads `http` via CJS first (for the Runtime API),\n // and then the user's ESM handler imports `node:http`. The guard blocks ESM patching after CJS,\n // which breaks HTTP spans for ESM handlers. We disable this guard to allow both to be patched.\n // TODO(andrei): Remove once https://github.com/open-telemetry/opentelemetry-js/issues/6489 is fixed.\n try {\n const noopDescriptor = { get: () => false, set: () => {} };\n Object.defineProperty(instrumentation, '_httpPatched', noopDescriptor);\n Object.defineProperty(instrumentation, '_httpsPatched', noopDescriptor);\n } catch {\n // ignore errors here...\n }\n\n return instrumentation;\n});\n\n/** Exported only for tests. */\nexport function _shouldUseOtelHttpInstrumentation(\n options: HttpOptions,\n clientOptions: Partial = {},\n): boolean {\n // If `spans` is passed in, it takes precedence\n // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n if (typeof options.spans === 'boolean') {\n return options.spans;\n }\n\n if (clientOptions.skipOpenTelemetrySetup) {\n return false;\n }\n\n // IMPORTANT: We only disable span instrumentation when spans are not enabled _and_ we are on a Node version\n // that fully supports the necessary diagnostics channels for trace propagation\n if (!hasSpansEnabled(clientOptions) && FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL) {\n return false;\n }\n\n return true;\n}\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs and spans for outgoing HTTP requests which will be attached to the currently active span.\n */\nexport const httpIntegration = defineIntegration((options: HttpOptions = {}) => {\n const spans = options.spans ?? true;\n const disableIncomingRequestSpans = options.disableIncomingRequestSpans;\n\n const serverOptions = {\n sessions: options.trackIncomingRequestsAsSessions,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n ignoreRequestBody: options.ignoreIncomingRequestBody,\n maxRequestBodySize: options.maxIncomingRequestBodySize,\n } satisfies Parameters[0];\n\n const serverSpansOptions = {\n ignoreIncomingRequests: options.ignoreIncomingRequests,\n ignoreStaticAssets: options.ignoreStaticAssets,\n ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n instrumentation: options.instrumentation,\n onSpanCreated: options.incomingRequestSpanHook,\n } satisfies Parameters[0];\n\n const server = httpServerIntegration(serverOptions);\n const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n const enableServerSpans = spans && !disableIncomingRequestSpans;\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n const clientOptions = client.getOptions();\n\n if (enableServerSpans && hasSpansEnabled(clientOptions)) {\n serverSpans.setup(client);\n }\n },\n setupOnce() {\n const clientOptions = (getClient()?.getOptions() || {}) satisfies Partial;\n const useOtelHttpInstrumentation = _shouldUseOtelHttpInstrumentation(options, clientOptions);\n\n server.setupOnce();\n\n const sentryHttpInstrumentationOptions = {\n breadcrumbs: options.breadcrumbs,\n propagateTraceInOutgoingRequests:\n typeof options.tracePropagation === 'boolean'\n ? options.tracePropagation\n : FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL || !useOtelHttpInstrumentation,\n createSpansForOutgoingRequests: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n spans: options.spans,\n ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n outgoingRequestHook: (span: Span, request: ClientRequest) => {\n // Sanitize data URLs to prevent long base64 strings in span attributes\n const url = getRequestUrl(request);\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n span.setAttribute('http.url', sanitizedUrl);\n span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n span.updateName(`${request.method || 'GET'} ${sanitizedUrl}`);\n }\n\n options.instrumentation?.requestHook?.(span, request);\n },\n outgoingResponseHook: options.instrumentation?.responseHook,\n outgoingRequestApplyCustomAttributes: options.instrumentation?.applyCustomAttributesOnSpan,\n } satisfies SentryHttpInstrumentationOptions;\n\n // This is Sentry-specific instrumentation for outgoing request breadcrumbs & trace propagation\n instrumentSentryHttp(sentryHttpInstrumentationOptions);\n\n // This is the \"regular\" OTEL instrumentation that emits outgoing request spans\n if (useOtelHttpInstrumentation) {\n const instrumentationConfig = getConfigWithDefaults(options);\n instrumentOtelHttp(instrumentationConfig);\n }\n },\n processEvent(event) {\n // Note: We always run this, even if spans are disabled\n // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n return serverSpans.processEvent(event);\n },\n };\n});\n\nfunction getConfigWithDefaults(options: Partial = {}): HttpInstrumentationConfig {\n const instrumentationConfig = {\n // This is handled by the SentryHttpInstrumentation on Node 22+\n disableOutgoingRequestInstrumentation: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n\n ignoreOutgoingRequestHook: request => {\n const url = getRequestUrl(request);\n\n if (!url) {\n return false;\n }\n\n const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n if (_ignoreOutgoingRequests?.(url, request)) {\n return true;\n }\n\n return false;\n },\n\n requireParentforOutgoingSpans: false,\n requestHook: (span, req) => {\n addOriginToSpan(span, 'auto.http.otel.http');\n\n // Sanitize data URLs to prevent long base64 strings in span attributes\n const url = getRequestUrl(req as ClientRequest);\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n span.setAttribute('http.url', sanitizedUrl);\n span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n span.updateName(`${(req as ClientRequest).method || 'GET'} ${sanitizedUrl}`);\n }\n\n options.instrumentation?.requestHook?.(span, req);\n },\n responseHook: (span, res) => {\n options.instrumentation?.responseHook?.(span, res);\n },\n applyCustomAttributesOnSpan: (\n span: Span,\n request: ClientRequest | HTTPModuleRequestIncomingMessage,\n response: HTTPModuleRequestIncomingMessage | ServerResponse,\n ) => {\n options.instrumentation?.applyCustomAttributesOnSpan?.(span, request, response);\n },\n } satisfies HttpInstrumentationConfig;\n\n return instrumentationConfig;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.24.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-undici';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport * as diagch from 'diagnostics_channel';\nimport { URL } from 'url';\n\nimport {\n InstrumentationBase,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n Attributes,\n context,\n Histogram,\n HrTime,\n INVALID_SPAN_CONTEXT,\n propagation,\n Span,\n SpanKind,\n SpanStatusCode,\n trace,\n ValueType,\n} from '@opentelemetry/api';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_REQUEST_METHOD_ORIGINAL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n} from '@opentelemetry/semantic-conventions';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nimport {\n ListenerRecord,\n RequestHeadersMessage,\n RequestMessage,\n RequestTrailersMessage,\n ResponseHeadersMessage,\n} from './internal-types';\nimport { UndiciInstrumentationConfig, UndiciRequest } from './types';\n\ninterface InstrumentationRecord {\n span: Span;\n attributes: Attributes;\n startTime: HrTime;\n}\n\n// A combination of https://github.com/elastic/apm-agent-nodejs and\n// https://github.com/gadget-inc/opentelemetry-instrumentations/blob/main/packages/opentelemetry-instrumentation-undici/src/index.ts\nexport class UndiciInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n declare private _channelSubs: Array;\n private _recordFromReq = new WeakMap();\n\n declare private _httpClientDurationHistogram: Histogram;\n\n constructor(config: UndiciInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n // No need to instrument files/modules\n protected override init() {\n return undefined;\n }\n\n override disable(): void {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs.length = 0;\n }\n\n override enable(): void {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n\n this.subscribeToChannel(\n 'undici:request:create',\n this.onRequestCreated.bind(this)\n );\n this.subscribeToChannel(\n 'undici:client:sendHeaders',\n this.onRequestHeaders.bind(this)\n );\n this.subscribeToChannel(\n 'undici:request:headers',\n this.onResponseHeaders.bind(this)\n );\n this.subscribeToChannel('undici:request:trailers', this.onDone.bind(this));\n this.subscribeToChannel('undici:request:error', this.onError.bind(this));\n }\n\n protected override _updateMetricInstruments() {\n this._httpClientDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n }\n\n private subscribeToChannel(\n diagnosticChannel: string,\n onMessage: (message: any, name: string | symbol) => void\n ) {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const [major, minor] = process.version\n .replace('v', '')\n .split('.')\n .map(n => Number(n));\n const useNewSubscribe = major > 18 || (major === 18 && minor >= 19);\n\n let unsubscribe: () => void;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n } else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n\n private parseRequestHeaders(request: UndiciRequest) {\n const result = new Map();\n\n if (Array.isArray(request.headers)) {\n // headers are an array [k1, v2, k2, v2] (undici v6+)\n // values could be string or a string[] for multiple values\n for (let i = 0; i < request.headers.length; i += 2) {\n const key = request.headers[i];\n const value = request.headers[i + 1];\n\n // Key should always be a string, but the types don't know that, and let's be safe\n if (typeof key === 'string') {\n result.set(key.toLowerCase(), value);\n }\n }\n } else if (typeof request.headers === 'string') {\n // headers are a raw string (undici v5)\n // headers could be repeated in several lines for multiple values\n const headers = request.headers.split('\\r\\n');\n for (const line of headers) {\n if (!line) {\n continue;\n }\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) {\n // Invalid header? Probably this can't happen, but again let's be safe.\n continue;\n }\n const key = line.substring(0, colonIndex).toLowerCase();\n const value = line.substring(colonIndex + 1).trim();\n const allValues = result.get(key);\n\n if (allValues && Array.isArray(allValues)) {\n allValues.push(value);\n } else if (allValues) {\n result.set(key, [allValues, value]);\n } else {\n result.set(key, value);\n }\n }\n }\n return result;\n }\n\n // This is the 1st message we receive for each request (fired after request creation). Here we will\n // create the span and populate some atttributes, then link the span to the request for further\n // span processing\n private onRequestCreated({ request }: RequestMessage): void {\n // Ignore if:\n // - instrumentation is disabled\n // - ignored by config\n // - method is 'CONNECT'\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n const shouldIgnoreReq = safeExecuteInTheMiddle(\n () =>\n !enabled ||\n request.method === 'CONNECT' ||\n config.ignoreRequestHook?.(request),\n e => e && this._diag.error('caught ignoreRequestHook error: ', e),\n true\n );\n\n if (shouldIgnoreReq) {\n return;\n }\n\n const startTime = hrTime();\n let requestUrl;\n try {\n requestUrl = new URL(request.path, request.origin);\n } catch (err) {\n this._diag.warn('could not determine url.full:', err);\n // Skip instrumenting this request.\n return;\n }\n const urlScheme = requestUrl.protocol.replace(':', '');\n const requestMethod = this.getRequestMethod(request.method);\n const attributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: requestMethod,\n [ATTR_HTTP_REQUEST_METHOD_ORIGINAL]: request.method,\n [ATTR_URL_FULL]: requestUrl.toString(),\n [ATTR_URL_PATH]: requestUrl.pathname,\n [ATTR_URL_QUERY]: requestUrl.search,\n [ATTR_URL_SCHEME]: urlScheme,\n };\n\n const schemePorts: Record = { https: '443', http: '80' };\n const serverAddress = requestUrl.hostname;\n const serverPort = requestUrl.port || schemePorts[urlScheme];\n\n attributes[ATTR_SERVER_ADDRESS] = serverAddress;\n if (serverPort && !isNaN(Number(serverPort))) {\n attributes[ATTR_SERVER_PORT] = Number(serverPort);\n }\n\n // Get user agent from headers\n const headersMap = this.parseRequestHeaders(request);\n const userAgentValues = headersMap.get('user-agent');\n\n if (userAgentValues) {\n // NOTE: having multiple user agents is not expected so\n // we're going to take last one like `curl` does\n // ref: https://curl.se/docs/manpage.html#-A\n const userAgent = Array.isArray(userAgentValues)\n ? userAgentValues[userAgentValues.length - 1]\n : userAgentValues;\n attributes[ATTR_USER_AGENT_ORIGINAL] = userAgent;\n }\n\n // Get attributes from the hook if present\n const hookAttributes = safeExecuteInTheMiddle(\n () => config.startSpanHook?.(request),\n e => e && this._diag.error('caught startSpanHook error: ', e),\n true\n );\n if (hookAttributes) {\n Object.entries(hookAttributes).forEach(([key, val]) => {\n attributes[key] = val;\n });\n }\n\n // Check if parent span is required via config and:\n // - if a parent is required but not present, we use a `NoopSpan` to still\n // propagate context without recording it.\n // - create a span otherwise\n const activeCtx = context.active();\n const currentSpan = trace.getSpan(activeCtx);\n let span: Span;\n\n if (\n config.requireParentforSpans &&\n (!currentSpan || !trace.isSpanContextValid(currentSpan.spanContext()))\n ) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n span = this.tracer.startSpan(\n requestMethod === '_OTHER' ? 'HTTP' : requestMethod,\n {\n kind: SpanKind.CLIENT,\n attributes: attributes,\n },\n activeCtx\n );\n }\n\n // Execute the request hook if defined\n safeExecuteInTheMiddle(\n () => config.requestHook?.(span, request),\n e => e && this._diag.error('caught requestHook error: ', e),\n true\n );\n\n // Context propagation goes last so no hook can tamper\n // the propagation headers\n const requestContext = trace.setSpan(context.active(), span);\n const addedHeaders: Record = {};\n propagation.inject(requestContext, addedHeaders);\n\n const headerEntries = Object.entries(addedHeaders);\n\n for (let i = 0; i < headerEntries.length; i++) {\n const [k, v] = headerEntries[i];\n\n if (typeof request.addHeader === 'function') {\n request.addHeader(k, v);\n } else if (typeof request.headers === 'string') {\n request.headers += `${k}: ${v}\\r\\n`;\n } else if (Array.isArray(request.headers)) {\n // undici@6.11.0 accidentally, briefly removed `request.addHeader()`.\n request.headers.push(k, v);\n }\n }\n this._recordFromReq.set(request, { span, attributes, startTime });\n }\n\n // This is the 2nd message we receive for each request. It is fired when connection with\n // the remote is established and about to send the first byte. Here we do have info about the\n // remote address and port so we can populate some `network.*` attributes into the span\n private onRequestHeaders({ request, socket }: RequestHeadersMessage): void {\n const record = this._recordFromReq.get(request as UndiciRequest);\n\n if (!record) {\n return;\n }\n\n const config = this.getConfig();\n const { span } = record;\n const { remoteAddress, remotePort } = socket;\n const spanAttributes: Attributes = {\n [ATTR_NETWORK_PEER_ADDRESS]: remoteAddress,\n [ATTR_NETWORK_PEER_PORT]: remotePort,\n };\n\n // After hooks have been processed (which may modify request headers)\n // we can collect the headers based on the configuration\n if (config.headersToSpanAttributes?.requestHeaders) {\n const headersToAttribs = new Set(\n config.headersToSpanAttributes.requestHeaders.map(n => n.toLowerCase())\n );\n const headersMap = this.parseRequestHeaders(request);\n\n for (const [name, value] of headersMap.entries()) {\n if (headersToAttribs.has(name)) {\n const attrValue = Array.isArray(value) ? value : [value];\n spanAttributes[`http.request.header.${name}`] = attrValue;\n }\n }\n }\n\n span.setAttributes(spanAttributes);\n }\n\n // This is the 3rd message we get for each request and it's fired when the server\n // headers are received, body may not be accessible yet.\n // From the response headers we can set the status and content length\n private onResponseHeaders({\n request,\n response,\n }: ResponseHeadersMessage): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes } = record;\n const spanAttributes: Attributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: response.statusCode,\n };\n\n const config = this.getConfig();\n\n // Execute the response hook if defined\n safeExecuteInTheMiddle(\n () => config.responseHook?.(span, { request, response }),\n e => e && this._diag.error('caught responseHook error: ', e),\n true\n );\n\n if (config.headersToSpanAttributes?.responseHeaders) {\n const headersToAttribs = new Set();\n config.headersToSpanAttributes?.responseHeaders.forEach(name =>\n headersToAttribs.add(name.toLowerCase())\n );\n\n for (let idx = 0; idx < response.headers.length; idx = idx + 2) {\n const name = response.headers[idx].toString().toLowerCase();\n const value = response.headers[idx + 1];\n\n if (headersToAttribs.has(name)) {\n const attrName = `http.response.header.${name}`;\n if (!Object.hasOwn(spanAttributes, attrName)) {\n spanAttributes[attrName] = [value.toString()];\n } else {\n (spanAttributes[attrName] as string[]).push(value.toString());\n }\n }\n }\n }\n\n span.setAttributes(spanAttributes);\n span.setStatus({\n code:\n response.statusCode >= 400\n ? SpanStatusCode.ERROR\n : SpanStatusCode.UNSET,\n });\n record.attributes = Object.assign(attributes, spanAttributes);\n }\n\n // This is the last event we receive if the request went without any errors\n private onDone({ request }: RequestTrailersMessage): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes, startTime } = record;\n\n // End the span\n span.end();\n this._recordFromReq.delete(request);\n\n // Record metrics\n this.recordRequestDuration(attributes, startTime);\n }\n\n // This is the event we get when something is wrong in the request like\n // - invalid options when calling `fetch` global API or any undici method for request\n // - connectivity errors such as unreachable host\n // - requests aborted through an `AbortController.signal`\n // NOTE: server errors are considered valid responses and it's the lib consumer\n // who should deal with that.\n private onError({ request, error }: any): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes, startTime } = record;\n\n // NOTE: in `undici@6.3.0` when request aborted the error type changes from\n // a custom error (`RequestAbortedError`) to a built-in `DOMException` carrying\n // some differences:\n // - `code` is from DOMEXception (ABORT_ERR: 20)\n // - `message` changes\n // - stacktrace is smaller and contains node internal frames\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.end();\n this._recordFromReq.delete(request);\n\n // Record metrics (with the error)\n attributes[ATTR_ERROR_TYPE] = error.message;\n this.recordRequestDuration(attributes, startTime);\n }\n\n private recordRequestDuration(attributes: Attributes, startTime: HrTime) {\n // Time to record metrics\n const metricsAttributes: Attributes = {};\n // Get the attribs already in span attributes\n const keysToCopy = [\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_SCHEME,\n ATTR_ERROR_TYPE,\n ];\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n\n // Take the duration and record it\n const durationSeconds =\n hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000;\n this._httpClientDurationHistogram.record(\n durationSeconds,\n metricsAttributes\n );\n }\n\n private getRequestMethod(original: string): string {\n const knownMethods = {\n CONNECT: true,\n OPTIONS: true,\n HEAD: true,\n GET: true,\n POST: true,\n PUT: true,\n PATCH: true,\n DELETE: true,\n TRACE: true,\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n QUERY: true,\n };\n\n if (original.toUpperCase() in knownMethods) {\n return original.toUpperCase();\n }\n\n return '_OTHER';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { UndiciInstrumentation } from './undici';\nexport type {\n IgnoreRequestFunction,\n RequestHookFunction,\n ResponseHookFunction,\n StartSpanHookFunction,\n UndiciInstrumentationConfig,\n UndiciRequest,\n UndiciResponse,\n} from './types';\n","import type { UndiciInstrumentationConfig } from '@opentelemetry/instrumentation-undici';\nimport { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n defineIntegration,\n getClient,\n hasSpansEnabled,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n stripDataUrlContent,\n} from '@sentry/core';\nimport type { NodeClient } from '@sentry/node-core';\nimport { generateInstrumentOnce, SentryNodeFetchInstrumentation } from '@sentry/node-core';\nimport type { NodeClientOptions } from '../types';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\ninterface NodeFetchOptions extends Pick<\n UndiciInstrumentationConfig,\n 'requestHook' | 'responseHook' | 'headersToSpanAttributes'\n> {\n /**\n * Whether breadcrumbs should be recorded for requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * If set to false, do not emit any spans.\n * This will ensure that the default UndiciInstrumentation from OpenTelemetry is not setup,\n * only the Sentry-specific instrumentation for breadcrumbs & trace propagation is applied.\n *\n * If `skipOpenTelemetrySetup: true` is configured, this defaults to `false`, otherwise it defaults to `true`.\n */\n spans?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's UndiciInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing fetch requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n}\n\nconst instrumentOtelNodeFetch = generateInstrumentOnce(\n INTEGRATION_NAME,\n UndiciInstrumentation,\n (options: NodeFetchOptions) => {\n return _getConfigWithDefaults(options);\n },\n);\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options: NodeFetchOptions) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options: NodeFetchOptions = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n const instrumentSpans = _shouldInstrumentSpans(options, getClient()?.getOptions());\n\n // This is the \"regular\" OTEL instrumentation that emits spans\n if (instrumentSpans) {\n instrumentOtelNodeFetch(options);\n }\n\n // This is the Sentry-specific instrumentation that creates breadcrumbs & propagates traces\n // This must be registered after the OTEL one, to ensure that the core trace propagation logic takes presedence\n // Otherwise, the sentry-trace header may be set multiple times\n instrumentSentryNodeFetch(options);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n\n// Matching the behavior of the base instrumentation\nfunction getAbsoluteUrl(origin: string, path: string = '/'): string {\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n}\n\nfunction _shouldInstrumentSpans(options: NodeFetchOptions, clientOptions: Partial = {}): boolean {\n // If `spans` is passed in, it takes precedence\n // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n return typeof options.spans === 'boolean'\n ? options.spans\n : !clientOptions.skipOpenTelemetrySetup && hasSpansEnabled(clientOptions);\n}\n\n/** Exported only for tests. */\nexport function _getConfigWithDefaults(options: Partial = {}): UndiciInstrumentationConfig {\n const instrumentationConfig = {\n requireParentforSpans: false,\n ignoreRequestHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n const shouldIgnore = _ignoreOutgoingRequests && url && _ignoreOutgoingRequests(url);\n\n return !!shouldIgnore;\n },\n startSpanHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Sanitize data URLs to prevent long base64 strings in span attributes\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n 'http.url': sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_URL_FULL]: sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: `${request.method || 'GET'} ${sanitizedUrl}`,\n };\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n };\n },\n requestHook: options.requestHook,\n responseHook: options.responseHook,\n headersToSpanAttributes: options.headersToSpanAttributes,\n } satisfies UndiciInstrumentationConfig;\n\n return instrumentationConfig;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-fs';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { FMember, FPMember } from './types';\n\nexport const PROMISE_FUNCTIONS: FPMember[] = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'copyFile',\n 'cp' as FPMember, // added in v16\n 'lchown',\n 'link',\n 'lstat',\n 'lutimes', // added in v12\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir', // added in v12\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm', // added in v14\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n // 'lchmod', // only implemented on macOS\n];\n\nexport const CALLBACK_FUNCTIONS: FMember[] = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'copyFile',\n 'cp' as FMember, // added in v16\n 'exists', // deprecated, inconsistent cb signature, handling separately when patching\n 'lchown',\n 'link',\n 'lstat',\n 'lutimes', // added in v12\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir', // added in v12\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'realpath.native',\n 'rename',\n 'rm', // added in v14\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n // 'close', // functions on file descriptor\n // 'fchmod', // functions on file descriptor\n // 'fchown', // functions on file descriptor\n // 'fdatasync', // functions on file descriptor\n // 'fstat', // functions on file descriptor\n // 'fsync', // functions on file descriptor\n // 'ftruncate', // functions on file descriptor\n // 'futimes', // functions on file descriptor\n // 'lchmod', // only implemented on macOS\n // 'read', // functions on file descriptor\n // 'readv', // functions on file descriptor\n // 'write', // functions on file descriptor\n // 'writev', // functions on file descriptor\n];\n\nexport const SYNC_FUNCTIONS: FMember[] = [\n 'accessSync',\n 'appendFileSync',\n 'chmodSync',\n 'chownSync',\n 'copyFileSync',\n 'cpSync' as FMember, // added in v16\n 'existsSync',\n 'lchownSync',\n 'linkSync',\n 'lstatSync',\n 'lutimesSync', // added in v12\n 'mkdirSync',\n 'mkdtempSync',\n 'opendirSync', // added in v12\n 'openSync',\n 'readdirSync',\n 'readFileSync',\n 'readlinkSync',\n 'realpathSync',\n 'realpathSync.native',\n 'renameSync',\n 'rmdirSync',\n 'rmSync', // added in v14\n 'statSync',\n 'symlinkSync',\n 'truncateSync',\n 'unlinkSync',\n 'utimesSync',\n 'writeFileSync',\n // 'closeSync', // functions on file descriptor\n // 'fchmodSync', // functions on file descriptor\n // 'fchownSync', // functions on file descriptor\n // 'fdatasyncSync', // functions on file descriptor\n // 'fstatSync', // functions on file descriptor\n // 'fsyncSync', // functions on file descriptor\n // 'ftruncateSync', // functions on file descriptor\n // 'futimesSync', // functions on file descriptor\n // 'lchmodSync', // only implemented on macOS\n // 'readSync', // functions on file descriptor\n // 'readvSync', // functions on file descriptor\n // 'writeSync', // functions on file descriptor\n // 'writevSync', // functions on file descriptor\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport type { FunctionPropertyNames, FMember } from './types';\nimport type * as fs from 'fs';\ntype FS = typeof fs;\n\nexport function splitTwoLevels(\n functionName: FMember\n):\n | [FunctionPropertyNames & string]\n | [FunctionPropertyNames & string, string] {\n const memberParts = functionName.split('.');\n if (memberParts.length > 1) {\n if (memberParts.length !== 2)\n throw Error(`Invalid member function name ${functionName}`);\n return memberParts as [FunctionPropertyNames & string, string];\n } else {\n return [functionName as FunctionPropertyNames & string];\n }\n}\n\nexport function indexFs(\n fs: FSObject,\n member: FMember\n): { objectToPatch: any; functionNameToPatch: string } {\n if (!member) throw new Error(JSON.stringify({ member }));\n const splitResult = splitTwoLevels(member);\n const [functionName1, functionName2] = splitResult;\n if (functionName2) {\n return {\n objectToPatch: fs[functionName1],\n functionNameToPatch: functionName2,\n };\n } else {\n return {\n objectToPatch: fs,\n functionNameToPatch: functionName1,\n };\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { isTracingSuppressed, suppressTracing } from '@opentelemetry/core';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n CALLBACK_FUNCTIONS,\n PROMISE_FUNCTIONS,\n SYNC_FUNCTIONS,\n} from './constants';\nimport type * as fs from 'fs';\nimport type {\n FMember,\n FPMember,\n CreateHook,\n EndHook,\n FsInstrumentationConfig,\n} from './types';\nimport { promisify } from 'util';\nimport { indexFs } from './utils';\n\ntype FS = typeof fs;\ntype FSPromises = (typeof fs)['promises'];\n\n/**\n * This is important for 2-level functions like `realpath.native` to retain the 2nd-level\n * when patching the 1st-level.\n */\nfunction patchedFunctionWithOriginalProperties<\n T extends (...args: any[]) => ReturnType,\n>(patchedFunction: T, original: T): T {\n return Object.assign(patchedFunction, original);\n}\n\nexport class FsInstrumentation extends InstrumentationBase {\n constructor(config: FsInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init(): (\n | InstrumentationNodeModuleDefinition\n | InstrumentationNodeModuleDefinition\n )[] {\n return [\n new InstrumentationNodeModuleDefinition(\n 'fs',\n ['*'],\n (fs: FS) => {\n for (const fName of SYNC_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchSyncFunction.bind(this, fName)\n );\n }\n for (const fName of CALLBACK_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n if (fName === 'exists') {\n // handling separately because of the inconsistent cb style:\n // `exists` doesn't have error as the first argument, but the result\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchExistsCallbackFunction.bind(this, fName)\n );\n continue;\n }\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchCallbackFunction.bind(this, fName)\n );\n }\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fs.promises[fName])) {\n this._unwrap(fs.promises, fName);\n }\n this._wrap(\n fs.promises,\n fName,\n this._patchPromiseFunction.bind(this, fName)\n );\n }\n return fs;\n },\n (fs: FS) => {\n if (fs === undefined) return;\n for (const fName of SYNC_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n }\n for (const fName of CALLBACK_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n }\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fs.promises[fName])) {\n this._unwrap(fs.promises, fName);\n }\n }\n }\n ),\n new InstrumentationNodeModuleDefinition(\n 'fs/promises',\n ['*'],\n (fsPromises: FSPromises) => {\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fsPromises[fName])) {\n this._unwrap(fsPromises, fName);\n }\n this._wrap(\n fsPromises,\n fName,\n this._patchPromiseFunction.bind(this, fName)\n );\n }\n return fsPromises;\n },\n (fsPromises: FSPromises) => {\n if (fsPromises === undefined) return;\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fsPromises[fName])) {\n this._unwrap(fsPromises, fName);\n }\n }\n }\n ),\n ];\n }\n\n protected _patchSyncFunction ReturnType>(\n functionName: FMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n try {\n // Suppress tracing for internal fs calls\n const res = api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n instrumentation._runEndHook(functionName, { args: args, span });\n return res;\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, { args: args, span, error });\n throw error;\n } finally {\n span.end();\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _patchCallbackFunction ReturnType>(\n functionName: FMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const lastIdx = args.length - 1;\n const cb = args[lastIdx];\n if (typeof cb === 'function') {\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n // Return to the context active during the call in the callback\n args[lastIdx] = api.context.bind(\n activeContext,\n function (this: unknown, error?: Error) {\n if (error) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n }\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n return cb.apply(this, arguments);\n }\n );\n\n try {\n // Suppress tracing for internal fs calls\n return api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n throw error;\n }\n } else {\n // TODO: what to do if we are pretty sure it's going to throw\n return original.apply(this, args);\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _patchExistsCallbackFunction<\n T extends (...args: any[]) => ReturnType,\n >(functionName: 'exists', original: T): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const lastIdx = args.length - 1;\n const cb = args[lastIdx];\n if (typeof cb === 'function') {\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n // Return to the context active during the call in the callback\n args[lastIdx] = api.context.bind(\n activeContext,\n function (this: unknown) {\n // `exists` never calls the callback with an error\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n });\n span.end();\n return cb.apply(this, arguments);\n }\n );\n\n try {\n // Suppress tracing for internal fs calls\n return api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n throw error;\n }\n } else {\n return original.apply(this, args);\n }\n };\n const functionWithOriginalProperties =\n patchedFunctionWithOriginalProperties(patchedFunction, original);\n\n // `exists` has a custom promisify function because of the inconsistent signature\n // replicating that on the patched function\n const promisified = function (path: unknown) {\n return new Promise(resolve =>\n functionWithOriginalProperties(path, resolve)\n );\n };\n Object.defineProperty(promisified, 'name', { value: functionName });\n Object.defineProperty(functionWithOriginalProperties, promisify.custom, {\n value: promisified,\n });\n\n return functionWithOriginalProperties;\n }\n\n protected _patchPromiseFunction ReturnType>(\n functionName: FPMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = async function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n try {\n // Suppress tracing for internal fs calls\n const res = await api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n instrumentation._runEndHook(functionName, { args: args, span });\n return res;\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, { args: args, span, error });\n throw error;\n } finally {\n span.end();\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _runCreateHook(\n ...args: Parameters\n ): ReturnType {\n const { createHook } = this.getConfig();\n if (typeof createHook === 'function') {\n try {\n return createHook(...args);\n } catch (e) {\n this._diag.error('caught createHook error', e);\n }\n }\n return true;\n }\n\n protected _runEndHook(...args: Parameters): ReturnType {\n const { endHook } = this.getConfig();\n if (typeof endHook === 'function') {\n try {\n endHook(...args);\n } catch (e) {\n this._diag.error('caught endHook error', e);\n }\n }\n }\n\n protected _shouldTrace(context: api.Context): boolean {\n if (isTracingSuppressed(context)) {\n // Performance optimization. Avoid creating additional contexts and spans\n // if we already know that the tracing is being suppressed.\n return false;\n }\n\n const { requireParentSpan } = this.getConfig();\n if (requireParentSpan) {\n const parentSpan = api.trace.getSpan(context);\n if (parentSpan == null) {\n return false;\n }\n }\n\n return true;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { FsInstrumentation } from './instrumentation';\nexport type {\n CreateHook,\n EndHook,\n FMember,\n FPMember,\n FsInstrumentationConfig,\n FunctionProperties,\n FunctionPropertyNames,\n FunctionPropertyNamesTwoLevels,\n Member,\n} from './types';\n","import { FsInstrumentation } from '@opentelemetry/instrumentation-fs';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'FileSystem';\n\n/**\n * This integration will create spans for `fs` API operations, like reading and writing files.\n *\n * **WARNING:** This integration may add significant overhead to your application. Especially in scenarios with a lot of\n * file I/O, like for example when running a framework dev server, including this integration can massively slow down\n * your application.\n *\n * @param options Configuration for this integration.\n */\nexport const fsIntegration = defineIntegration(\n (\n options: {\n /**\n * Setting this option to `true` will include any filepath arguments from your `fs` API calls as span attributes.\n *\n * Defaults to `false`.\n */\n recordFilePaths?: boolean;\n\n /**\n * Setting this option to `true` will include the error messages of failed `fs` API calls as a span attribute.\n *\n * Defaults to `false`.\n */\n recordErrorMessagesAsSpanAttributes?: boolean;\n } = {},\n ) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new FsInstrumentation({\n requireParentSpan: true,\n endHook(functionName, { args, span, error }) {\n span.updateName(`fs.${functionName}`);\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'file',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.file.fs',\n });\n\n if (options.recordErrorMessagesAsSpanAttributes) {\n if (typeof args[0] === 'string' && FS_OPERATIONS_WITH_PATH_ARG.includes(functionName)) {\n span.setAttribute('path_argument', args[0]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_TARGET_PATH.includes(functionName)\n ) {\n span.setAttribute('target_argument', args[0]);\n span.setAttribute('path_argument', args[1]);\n } else if (typeof args[0] === 'string' && FS_OPERATIONS_WITH_PREFIX.includes(functionName)) {\n span.setAttribute('prefix_argument', args[0]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_EXISTING_PATH_NEW_PATH.includes(functionName)\n ) {\n span.setAttribute('existing_path_argument', args[0]);\n span.setAttribute('new_path_argument', args[1]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_SRC_DEST.includes(functionName)\n ) {\n span.setAttribute('src_argument', args[0]);\n span.setAttribute('dest_argument', args[1]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_OLD_PATH_NEW_PATH.includes(functionName)\n ) {\n span.setAttribute('old_path_argument', args[0]);\n span.setAttribute('new_path_argument', args[1]);\n }\n }\n\n if (error && options.recordErrorMessagesAsSpanAttributes) {\n span.setAttribute('fs_error', error.message);\n }\n },\n }),\n )();\n },\n };\n },\n);\n\nconst FS_OPERATIONS_WITH_OLD_PATH_NEW_PATH = ['rename', 'renameSync'];\nconst FS_OPERATIONS_WITH_SRC_DEST = ['copyFile', 'cp', 'copyFileSync', 'cpSync'];\nconst FS_OPERATIONS_WITH_EXISTING_PATH_NEW_PATH = ['link', 'linkSync'];\nconst FS_OPERATIONS_WITH_PREFIX = ['mkdtemp', 'mkdtempSync'];\nconst FS_OPERATIONS_WITH_TARGET_PATH = ['symlink', 'symlinkSync'];\nconst FS_OPERATIONS_WITH_PATH_ARG = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'exists',\n 'mkdir',\n 'lchown',\n 'lstat',\n 'lutimes',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'realpath.native',\n 'rm',\n 'rmdir',\n 'stat',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n 'accessSync',\n 'appendFileSync',\n 'chmodSync',\n 'chownSync',\n 'existsSync',\n 'lchownSync',\n 'lstatSync',\n 'lutimesSync',\n 'opendirSync',\n 'mkdirSync',\n 'openSync',\n 'readdirSync',\n 'readFileSync',\n 'readlinkSync',\n 'realpathSync',\n 'realpathSync.native',\n 'rmdirSync',\n 'rmSync',\n 'statSync',\n 'truncateSync',\n 'unlinkSync',\n 'utimesSync',\n 'writeFileSync',\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum ExpressLayerType {\n ROUTER = 'router',\n MIDDLEWARE = 'middleware',\n REQUEST_HANDLER = 'request_handler',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n EXPRESS_TYPE = 'express.type',\n EXPRESS_NAME = 'express.name',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Request } from 'express';\nimport { Attributes } from '@opentelemetry/api';\n\n/**\n * This symbol is used to mark express layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexport const kLayerPatched: unique symbol = Symbol('express-layer-patched');\n\n/**\n * This const define where on the `request` object the Instrumentation will mount the\n * current stack of express layer.\n *\n * It is necessary because express doesn't store the different layers\n * (ie: middleware, router etc) that it called to get to the current layer.\n * Given that, the only way to know the route of a given layer is to\n * store the path of where each previous layer has been mounted.\n *\n * ex: bodyParser > auth middleware > /users router > get /:id\n * in this case the stack would be: [\"/users\", \"/:id\"]\n *\n * ex2: bodyParser > /api router > /v1 router > /users router > get /:id\n * stack: [\"/api\", \"/v1\", \"/users\", \":id\"]\n *\n */\nexport const _LAYERS_STORE_PROPERTY = '__ot_middlewares';\n\nexport type PatchedRequest = {\n [_LAYERS_STORE_PROPERTY]?: string[];\n} & Request;\nexport type PathParams = string | RegExp | Array;\n\n// https://github.com/expressjs/express/blob/main/lib/router/index.js#L53\nexport type ExpressRouter = {\n params: { [key: string]: string };\n _params: string[];\n caseSensitive: boolean;\n mergeParams: boolean;\n strict: boolean;\n stack: ExpressLayer[];\n};\n\n// https://github.com/expressjs/express/blob/main/lib/router/layer.js#L33\nexport type ExpressLayer = {\n handle: Function & Record;\n [kLayerPatched]?: boolean;\n name: string;\n params: { [key: string]: string };\n path: string;\n regexp: RegExp;\n route?: ExpressLayer;\n};\n\nexport type LayerMetadata = {\n attributes: Attributes;\n name: string;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n IgnoreMatcher,\n ExpressInstrumentationConfig,\n LayerPathSegment,\n} from './types';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n ExpressLayer,\n PatchedRequest,\n _LAYERS_STORE_PROPERTY,\n} from './internal-types';\n\n/**\n * Store layers path in the request to be able to construct route later\n * @param request The request where\n * @param [value] the value to push into the array\n */\nexport const storeLayerPath = (\n request: PatchedRequest,\n value?: string\n): { isLayerPathStored: boolean } => {\n if (Array.isArray(request[_LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, _LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n if (value === undefined) return { isLayerPathStored: false };\n\n (request[_LAYERS_STORE_PROPERTY] as string[]).push(value);\n\n return { isLayerPathStored: true };\n};\n\n/**\n * Recursively search the router path from layer stack\n * @param path The path to reconstruct\n * @param layer The layer to reconstruct from\n * @returns The reconstructed path\n */\nexport const getRouterPath = (path: string, layer: ExpressLayer): string => {\n const stackLayer = layer.handle?.stack?.[0];\n\n if (stackLayer?.route?.path) {\n return `${path}${stackLayer.route.path}`;\n }\n\n if (stackLayer?.handle?.stack) {\n return getRouterPath(path, stackLayer);\n }\n\n return path;\n};\n\n/**\n * Parse express layer context to retrieve a name and attributes.\n * @param route The route of the layer\n * @param layer Express layer\n * @param [layerPath] if present, the path on which the layer has been mounted\n */\nexport const getLayerMetadata = (\n route: string,\n layer: ExpressLayer,\n layerPath?: string\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (layer.name === 'router') {\n const maybeRouterPath = getRouterPath('', layer);\n const extractedRouterPath = maybeRouterPath\n ? maybeRouterPath\n : layerPath || route || '/';\n\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]: extractedRouterPath,\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.ROUTER,\n },\n name: `router - ${extractedRouterPath}`,\n };\n } else if (layer.name === 'bound dispatch' || layer.name === 'handle') {\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]:\n (route || layerPath) ?? 'request handler',\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.REQUEST_HANDLER,\n },\n name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]: layer.name,\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param obj obj to inspect\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (\n constant: string,\n pattern: IgnoreMatcher\n): boolean => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n } else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n } else if (typeof pattern === 'function') {\n return pattern(constant);\n } else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * It will not re-throw exceptions from `list` provided by the client\n * @param constant e.g URL of request\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (\n name: string,\n type: ExpressLayerType,\n config?: ExpressInstrumentationConfig\n): boolean => {\n if (\n Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)\n ) {\n return true;\n }\n if (Array.isArray(config?.ignoreLayers) === false) return false;\n try {\n for (const pattern of config!.ignoreLayers!) {\n if (satisfiesPattern(name, pattern)) {\n return true;\n }\n }\n } catch (e) {\n /* catch block*/\n }\n\n return false;\n};\n\n/**\n * Converts a user-provided error value into an error and error message pair\n *\n * @param error - User-provided error value\n * @returns Both an Error or string representation of the value and an error message\n */\nexport const asErrorAndMessage = (\n error: unknown\n): [error: string | Error, message: string] =>\n error instanceof Error\n ? [error, error.message]\n : [String(error), String(error)];\n\n/**\n * Extracts the layer path from the route arguments\n *\n * @param args - Arguments of the route\n * @returns The layer path\n */\nexport const getLayerPath = (\n args: [LayerPathSegment | LayerPathSegment[], ...unknown[]]\n): string | undefined => {\n const firstArg = args[0];\n\n if (Array.isArray(firstArg)) {\n return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(',');\n }\n\n return extractLayerPathSegment(firstArg);\n};\n\nconst extractLayerPathSegment = (arg: LayerPathSegment) => {\n if (typeof arg === 'string') {\n return arg;\n }\n\n if (arg instanceof RegExp || typeof arg === 'number') {\n return arg.toString();\n }\n\n return;\n};\n\nexport function getConstructedRoute(req: {\n originalUrl: PatchedRequest['originalUrl'];\n [_LAYERS_STORE_PROPERTY]?: string[];\n}) {\n const layersStore: string[] = Array.isArray(req[_LAYERS_STORE_PROPERTY])\n ? (req[_LAYERS_STORE_PROPERTY] as string[])\n : [];\n\n const meaningfulPaths = layersStore.filter(\n path => path !== '/' && path !== '/*'\n );\n\n if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') {\n return '*';\n }\n\n // Join parts and remove duplicate slashes\n return meaningfulPaths.join('').replace(/\\/{2,}/g, '/');\n}\n\n/**\n * Extracts the actual matched route from Express request for OpenTelemetry instrumentation.\n * Returns the route that should be used as the http.route attribute.\n *\n * @param req - The Express request object with layers store\n * @param layersStoreProperty - The property name where layer paths are stored\n * @returns The matched route string or undefined if no valid route is found\n */\nexport function getActualMatchedRoute(req: {\n originalUrl: PatchedRequest['originalUrl'];\n [_LAYERS_STORE_PROPERTY]?: string[];\n}): string | undefined {\n const layersStore: string[] = Array.isArray(req[_LAYERS_STORE_PROPERTY])\n ? (req[_LAYERS_STORE_PROPERTY] as string[])\n : [];\n\n // If no layers are stored, no route can be determined\n if (layersStore.length === 0) {\n return undefined;\n }\n\n // Handle root path case - if all paths are root, only return root if originalUrl is also root\n // The layer store also includes root paths in case a non-existing url was requested\n if (layersStore.every(path => path === '/')) {\n return req.originalUrl === '/' ? '/' : undefined;\n }\n\n const constructedRoute = getConstructedRoute(req);\n if (constructedRoute === '*') {\n return constructedRoute;\n }\n\n // For RegExp routes or route arrays, return the constructed route\n // This handles the case where the route is defined using RegExp or an array\n if (\n constructedRoute.includes('/') &&\n (constructedRoute.includes(',') ||\n constructedRoute.includes('\\\\') ||\n constructedRoute.includes('*') ||\n constructedRoute.includes('['))\n ) {\n return constructedRoute;\n }\n\n // Ensure route starts with '/' if it doesn't already\n const normalizedRoute = constructedRoute.startsWith('/')\n ? constructedRoute\n : `/${constructedRoute}`;\n\n // Validate that this appears to be a matched route\n // A route is considered matched if:\n // 1. We have a constructed route\n // 2. The original URL matches or starts with our route pattern\n const isValidRoute =\n normalizedRoute.length > 0 &&\n (req.originalUrl === normalizedRoute ||\n req.originalUrl.startsWith(normalizedRoute) ||\n isRoutePattern(normalizedRoute));\n\n return isValidRoute ? normalizedRoute : undefined;\n}\n\n/**\n * Checks if a route contains parameter patterns (e.g., :id, :userId)\n * which are valid even if they don't exactly match the original URL\n */\nfunction isRoutePattern(route: string): boolean {\n return route.includes(':') || route.includes('*');\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-express';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n trace,\n context,\n diag,\n Attributes,\n SpanStatusCode,\n} from '@opentelemetry/api';\nimport type * as express from 'express';\nimport { ExpressInstrumentationConfig, ExpressRequestInfo } from './types';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n asErrorAndMessage,\n getLayerMetadata,\n getLayerPath,\n isLayerIgnored,\n storeLayerPath,\n getActualMatchedRoute,\n getConstructedRoute,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport {\n ExpressLayer,\n ExpressRouter,\n kLayerPatched,\n PatchedRequest,\n _LAYERS_STORE_PROPERTY,\n} from './internal-types';\n\n/** Express instrumentation for OpenTelemetry */\nexport class ExpressInstrumentation extends InstrumentationBase {\n constructor(config: ExpressInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'express',\n ['>=4.0.0 <6'],\n moduleExports => {\n const isExpressWithRouterPrototype =\n typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype // Express v5\n : moduleExports.Router; // Express v4\n // patch express.Router.route\n if (isWrapped(routerProto.route)) {\n this._unwrap(routerProto, 'route');\n }\n this._wrap(routerProto, 'route', this._getRoutePatch());\n // patch express.Router.use\n if (isWrapped(routerProto.use)) {\n this._unwrap(routerProto, 'use');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._wrap(routerProto, 'use', this._getRouterUsePatch() as any);\n // patch express.Application.use\n if (isWrapped(moduleExports.application.use)) {\n this._unwrap(moduleExports.application, 'use');\n }\n this._wrap(\n moduleExports.application,\n 'use',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._getAppUsePatch(isExpressWithRouterPrototype) as any\n );\n return moduleExports;\n },\n moduleExports => {\n if (moduleExports === undefined) return;\n const isExpressWithRouterPrototype =\n typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype\n : moduleExports.Router;\n this._unwrap(routerProto, 'route');\n this._unwrap(routerProto, 'use');\n this._unwrap(moduleExports.application, 'use');\n }\n ),\n ];\n }\n\n /**\n * Get the patch for Router.route function\n */\n private _getRoutePatch() {\n const instrumentation = this;\n return function (original: express.Router['route']) {\n return function route_trace(\n this: ExpressRouter,\n ...args: Parameters\n ) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1] as ExpressLayer;\n instrumentation._applyPatch(layer, getLayerPath(args));\n return route;\n };\n };\n }\n\n /**\n * Get the patch for Router.use function\n */\n private _getRouterUsePatch() {\n const instrumentation = this;\n return function (original: express.Router['use']) {\n return function use(\n this: express.Application,\n ...args: Parameters\n ) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1] as ExpressLayer;\n instrumentation._applyPatch(layer, getLayerPath(args));\n return route;\n };\n };\n }\n\n /**\n * Get the patch for Application.use function\n */\n private _getAppUsePatch(isExpressWithRouterPrototype: boolean) {\n const instrumentation = this;\n return function (original: express.Application['use']) {\n return function use(\n // `router` in express@5, `_router` in express@4.\n this: { _router?: ExpressRouter; router?: ExpressRouter },\n ...args: Parameters\n ) {\n // If we access app.router in express 4.x we trigger an assertion error.\n // This property existed in v3, was removed in v4 and then re-added in v5.\n const router = isExpressWithRouterPrototype\n ? this.router\n : this._router;\n const route = original.apply(this, args);\n if (router) {\n const layer = router.stack[router.stack.length - 1];\n instrumentation._applyPatch(layer, getLayerPath(args));\n }\n return route;\n };\n };\n }\n\n /** Patch each express layer to create span and propagate context */\n private _applyPatch(\n this: ExpressInstrumentation,\n layer: ExpressLayer,\n layerPath?: string\n ) {\n const instrumentation = this;\n // avoid patching multiple times the same layer\n if (layer[kLayerPatched] === true) return;\n layer[kLayerPatched] = true;\n\n this._wrap(layer, 'handle', original => {\n // TODO: instrument error handlers\n if (original.length === 4) return original;\n\n const patched = function (\n this: ExpressLayer,\n req: PatchedRequest,\n res: express.Response\n ) {\n const { isLayerPathStored } = storeLayerPath(req, layerPath);\n\n const constructedRoute = getConstructedRoute(req);\n const actualMatchedRoute = getActualMatchedRoute(req);\n\n const attributes: Attributes = {\n [ATTR_HTTP_ROUTE]: actualMatchedRoute,\n };\n const metadata = getLayerMetadata(constructedRoute, layer, layerPath);\n const type = metadata.attributes[\n AttributeNames.EXPRESS_TYPE\n ] as ExpressLayerType;\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (rpcMetadata?.type === RPCType.HTTP) {\n rpcMetadata.route = actualMatchedRoute;\n }\n\n // verify against the config if the layer should be ignored\n if (isLayerIgnored(metadata.name, type, instrumentation.getConfig())) {\n if (type === ExpressLayerType.MIDDLEWARE) {\n (req[_LAYERS_STORE_PROPERTY] as string[]).pop();\n }\n return original.apply(this, arguments);\n }\n\n if (trace.getSpan(context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n\n const spanName = instrumentation._getSpanName(\n {\n request: req,\n layerType: type,\n route: constructedRoute,\n },\n metadata.name\n );\n const span = instrumentation.tracer.startSpan(spanName, {\n attributes: Object.assign(attributes, metadata.attributes),\n });\n\n const parentContext = context.active();\n let currentContext = trace.setSpan(parentContext, span);\n\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n safeExecuteInTheMiddle(\n () =>\n requestHook(span, {\n request: req,\n layerType: type,\n route: constructedRoute,\n }),\n e => {\n if (e) {\n diag.error('express instrumentation: request hook failed', e);\n }\n },\n true\n );\n }\n\n let spanHasEnded = false;\n // TODO: Fix router spans (getRouterPath does not work properly) to\n // have useful names before removing this branch\n if (\n metadata.attributes[AttributeNames.EXPRESS_TYPE] ===\n ExpressLayerType.ROUTER\n ) {\n span.end();\n spanHasEnded = true;\n currentContext = parentContext;\n }\n // listener for response.on('finish')\n const onResponseFinish = () => {\n if (spanHasEnded === false) {\n spanHasEnded = true;\n span.end();\n }\n };\n\n // verify we have a callback\n const args = Array.from(arguments);\n const callbackIdx = args.findIndex(arg => typeof arg === 'function');\n if (callbackIdx >= 0) {\n arguments[callbackIdx] = function () {\n // express considers anything but an empty value, \"route\" or \"router\"\n // passed to its callback to be an error\n const maybeError = arguments[0];\n const isError = ![undefined, null, 'route', 'router'].includes(\n maybeError\n );\n if (!spanHasEnded && isError) {\n const [error, message] = asErrorAndMessage(maybeError);\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n }\n\n if (spanHasEnded === false) {\n spanHasEnded = true;\n req.res?.removeListener('finish', onResponseFinish);\n span.end();\n }\n if (!(req.route && isError) && isLayerPathStored) {\n (req[_LAYERS_STORE_PROPERTY] as string[]).pop();\n }\n const callback = args[callbackIdx] as Function;\n // Preserve the active context (which may include baggage set by middleware)\n // but restore the parent span to prevent sibling middleware spans\n // from nesting under each other\n const activeContext = context.active();\n const parentSpan = trace.getSpan(parentContext);\n const nextContext = parentSpan\n ? trace.setSpan(activeContext, parentSpan)\n : activeContext;\n return context.bind(nextContext, callback).apply(this, arguments);\n };\n }\n\n try {\n return context.bind(currentContext, original).apply(this, arguments);\n } catch (anyError) {\n const [error, message] = asErrorAndMessage(anyError);\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n throw anyError;\n } finally {\n /**\n * At this point if the callback wasn't called, that means either the\n * layer is asynchronous (so it will call the callback later on) or that\n * the layer directly ends the http response, so we'll hook into the \"finish\"\n * event to handle the later case.\n */\n if (!spanHasEnded) {\n res.once('finish', onResponseFinish);\n }\n }\n };\n\n // `handle` isn't just a regular function in some cases. It also contains\n // some properties holding metadata and state so we need to proxy them\n // through through patched function\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1950\n // Also some apps/libs do their own patching before OTEL and have these properties\n // in the proptotype. So we use a `for...in` loop to get own properties and also\n // any enumerable prop in the prototype chain\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2271\n for (const key in original) {\n Object.defineProperty(patched, key, {\n get() {\n return original[key];\n },\n set(value) {\n original[key] = value;\n },\n });\n }\n return patched;\n });\n }\n\n _getSpanName(info: ExpressRequestInfo, defaultName: string) {\n const { spanNameHook } = this.getConfig();\n\n if (!(spanNameHook instanceof Function)) {\n return defaultName;\n }\n\n try {\n return spanNameHook(info, defaultName) ?? defaultName;\n } catch (err) {\n diag.error(\n 'express instrumentation: error calling span name rewrite hook',\n err\n );\n return defaultName;\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { ExpressInstrumentation } from './instrumentation';\nexport { ExpressLayerType } from './enums/ExpressLayerType';\nexport { AttributeNames } from './enums/AttributeNames';\nexport type {\n ExpressInstrumentationConfig,\n ExpressRequestCustomAttributeFunction,\n ExpressRequestInfo,\n IgnoreMatcher,\n LayerPathSegment,\n SpanNameHook,\n} from './types';\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type * as http from 'node:http';\nimport type { Span } from '@opentelemetry/api';\nimport type { ExpressRequestInfo } from '@opentelemetry/instrumentation-express';\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n captureException,\n debug,\n defineIntegration,\n getDefaultIsolationScope,\n getIsolationScope,\n httpRequestToRequestData,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n spanToJSON,\n} from '@sentry/core';\nimport { addOriginToSpan, ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\nconst INTEGRATION_NAME = 'Express';\n\nfunction requestHook(span: Span): void {\n addOriginToSpan(span, 'auto.http.otel.express');\n\n const attributes = spanToJSON(span).data;\n // this is one of: middleware, request_handler, router\n const type = attributes['express.type'];\n\n if (type) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.express`);\n }\n\n // Also update the name, we don't need to \"middleware - \" prefix\n const name = attributes['express.name'];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n}\n\nfunction spanNameHook(info: ExpressRequestInfo, defaultName: string): string {\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is still default isolation scope - skipping setting transactionName');\n return defaultName;\n }\n if (info.layerType === 'request_handler') {\n // type cast b/c Otel unfortunately types info.request as any :(\n const req = info.request as { method?: string };\n const method = req.method ? req.method.toUpperCase() : 'GET';\n getIsolationScope().setTransactionName(`${method} ${info.route}`);\n }\n return defaultName;\n}\n\nexport const instrumentExpress = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new ExpressInstrumentation({\n requestHook: span => requestHook(span),\n spanNameHook: (info, defaultName) => spanNameHook(info, defaultName),\n }),\n);\n\nconst _expressIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentExpress();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Express](https://expressjs.com/).\n *\n * If you also want to capture errors, you need to call `setupExpressErrorHandler(app)` after you set up your Express server.\n *\n * For more information, see the [express documentation](https://docs.sentry.io/platforms/javascript/guides/express/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.expressIntegration()],\n * })\n * ```\n */\nexport const expressIntegration = defineIntegration(_expressIntegration);\n\ninterface MiddlewareError extends Error {\n status?: number | string;\n statusCode?: number | string;\n status_code?: number | string;\n output?: {\n statusCode?: number | string;\n };\n}\n\ntype ExpressMiddleware = (req: http.IncomingMessage, res: http.ServerResponse, next: () => void) => void;\n\ntype ExpressErrorMiddleware = (\n error: MiddlewareError,\n req: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error: MiddlewareError) => void,\n) => void;\n\ninterface ExpressHandlerOptions {\n /**\n * Callback method deciding whether error should be captured and sent to Sentry\n * @param error Captured middleware error\n */\n shouldHandleError?(this: void, error: MiddlewareError): boolean;\n}\n\n/**\n * An Express-compatible error handler.\n */\nexport function expressErrorHandler(options?: ExpressHandlerOptions): ExpressErrorMiddleware {\n return function sentryErrorMiddleware(\n error: MiddlewareError,\n request: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error: MiddlewareError) => void,\n ): void {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n // When an error happens, the `expressRequestHandler` middleware does not run, so we set it here too\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n\n if (shouldHandleError(error)) {\n const eventId = captureException(error, { mechanism: { type: 'auto.middleware.express', handled: false } });\n (res as { sentry?: string }).sentry = eventId;\n }\n\n next(error);\n };\n}\n\nfunction expressRequestHandler(): ExpressMiddleware {\n return function sentryRequestMiddleware(\n request: http.IncomingMessage,\n _res: http.ServerResponse,\n next: () => void,\n ): void {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n next();\n };\n}\n\n/**\n * Add an Express error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const express = require(\"express\");\n *\n * const app = express();\n *\n * // Add your routes, etc.\n *\n * // Add this after all routes,\n * // but before any and other error-handling middlewares are defined\n * Sentry.setupExpressErrorHandler(app);\n *\n * app.listen(3000);\n * ```\n */\nexport function setupExpressErrorHandler(\n app: { use: (middleware: ExpressMiddleware | ExpressErrorMiddleware) => unknown },\n options?: ExpressHandlerOptions,\n): void {\n app.use(expressRequestHandler());\n app.use(expressErrorHandler(options));\n ensureIsWrapped(app.use, 'express');\n}\n\nfunction getStatusCodeFromResponse(error: MiddlewareError): number {\n const statusCode = error.status || error.statusCode || error.status_code || error.output?.statusCode;\n return statusCode ? parseInt(statusCode as string, 10) : 500;\n}\n\n/** Returns true if response code is internal server error */\nfunction defaultShouldHandleError(error: MiddlewareError): boolean {\n const status = getStatusCodeFromResponse(error);\n return status >= 500;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\n const { name } = module;\n try {\n const resolvedModule = require.resolve(name);\n if (require.cache[resolvedModule]) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(\n `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n );\n }\n } catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = readFileSync(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\n );\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: HookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: true },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\n\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\n }\n\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\n\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\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// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges: string[] = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n } else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\n } finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\n } finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","export const balanced = (\n a: string | RegExp,\n b: string | RegExp,\n str: string,\n) => {\n const ma = a instanceof RegExp ? maybeMatch(a, str) : a\n const mb = b instanceof RegExp ? maybeMatch(b, str) : b\n\n const r = ma !== null && mb != null && range(ma, mb, str)\n\n return (\n r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + ma.length, r[1]),\n post: str.slice(r[1] + mb.length),\n }\n )\n}\n\nconst maybeMatch = (reg: RegExp, str: string) => {\n const m = str.match(reg)\n return m ? m[0] : null\n}\n\nexport const range = (\n a: string,\n b: string,\n str: string,\n): undefined | [number, number] => {\n let begs: number[],\n beg: number | undefined,\n left: number,\n right: number | undefined = undefined,\n result: undefined | [number, number]\n let ai = str.indexOf(a)\n let bi = str.indexOf(b, ai + 1)\n let i = ai\n\n if (ai >= 0 && bi > 0) {\n if (a === b) {\n return [ai, bi]\n }\n begs = []\n left = str.length\n\n while (i >= 0 && !result) {\n if (i === ai) {\n begs.push(i)\n ai = str.indexOf(a, i + 1)\n } else if (begs.length === 1) {\n const r = begs.pop()\n if (r !== undefined) result = [r, bi]\n } else {\n beg = begs.pop()\n if (beg !== undefined && beg < left) {\n left = beg\n right = bi\n }\n\n bi = str.indexOf(b, i + 1)\n }\n\n i = ai < bi && ai >= 0 ? ai : bi\n }\n\n if (begs.length && right !== undefined) {\n result = [left, right]\n }\n }\n\n return result\n}\n","import { balanced } from 'balanced-match'\n\nconst escSlash = '\\0SLASH' + Math.random() + '\\0'\nconst escOpen = '\\0OPEN' + Math.random() + '\\0'\nconst escClose = '\\0CLOSE' + Math.random() + '\\0'\nconst escComma = '\\0COMMA' + Math.random() + '\\0'\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0'\nconst escSlashPattern = new RegExp(escSlash, 'g')\nconst escOpenPattern = new RegExp(escOpen, 'g')\nconst escClosePattern = new RegExp(escClose, 'g')\nconst escCommaPattern = new RegExp(escComma, 'g')\nconst escPeriodPattern = new RegExp(escPeriod, 'g')\nconst slashPattern = /\\\\\\\\/g\nconst openPattern = /\\\\{/g\nconst closePattern = /\\\\}/g\nconst commaPattern = /\\\\,/g\nconst periodPattern = /\\\\\\./g\n\nexport const EXPANSION_MAX = 100_000\n\nfunction numeric(str: string) {\n return !isNaN(str as any) ? parseInt(str, 10) : str.charCodeAt(0)\n}\n\nfunction escapeBraces(str: string) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod)\n}\n\nfunction unescapeBraces(str: string) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.')\n}\n\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str: string) {\n if (!str) {\n return ['']\n }\n\n const parts: string[] = []\n const m = balanced('{', '}', str)\n\n if (!m) {\n return str.split(',')\n }\n\n const { pre, body, post } = m\n const p = pre.split(',')\n\n p[p.length - 1] += '{' + body + '}'\n const postParts = parseCommaParts(post)\n if (post.length) {\n ;(p[p.length - 1] as string) += postParts.shift()\n p.push.apply(p, postParts)\n }\n\n parts.push.apply(parts, p)\n\n return parts\n}\n\nexport type BraceExpansionOptions = {\n max?: number\n}\n\nexport function expand(str: string, options: BraceExpansionOptions = {}) {\n if (!str) {\n return []\n }\n\n const { max = EXPANSION_MAX } = options\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2)\n }\n\n return expand_(escapeBraces(str), max, true).map(unescapeBraces)\n}\n\nfunction embrace(str: string) {\n return '{' + str + '}'\n}\n\nfunction isPadded(el: string) {\n return /^-?0\\d/.test(el)\n}\n\nfunction lte(i: number, y: number) {\n return i <= y\n}\n\nfunction gte(i: number, y: number) {\n return i >= y\n}\n\nfunction expand_(str: string, max: number, isTop: boolean): string[] {\n /** @type {string[]} */\n const expansions: string[] = []\n\n const m = balanced('{', '}', str)\n if (!m) return [str]\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre\n const post: string[] = m.post.length ? expand_(m.post, max, false) : ['']\n\n if (/\\$$/.test(m.pre)) {\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k]\n expansions.push(expansion)\n }\n } else {\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body)\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(\n m.body,\n )\n const isSequence = isNumericSequence || isAlphaSequence\n const isOptions = m.body.indexOf(',') >= 0\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post\n return expand_(str, max, true)\n }\n return [str]\n }\n\n let n: string[]\n if (isSequence) {\n n = m.body.split(/\\.\\./)\n } else {\n n = parseCommaParts(m.body)\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace)\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p)\n }\n /* c8 ignore stop */\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n let N: string[]\n\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0])\n const y = numeric(n[1])\n const width = Math.max(n[0].length, n[1].length)\n let incr =\n n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1\n let test = lte\n const reverse = y < x\n if (reverse) {\n incr *= -1\n test = gte\n }\n const pad = n.some(isPadded)\n\n N = []\n\n for (let i = x; test(i, y); i += incr) {\n let c\n if (isAlphaSequence) {\n c = String.fromCharCode(i)\n if (c === '\\\\') {\n c = ''\n }\n } else {\n c = String(i)\n if (pad) {\n const need = width - c.length\n if (need > 0) {\n const z = new Array(need + 1).join('0')\n if (i < 0) {\n c = '-' + z + c.slice(1)\n } else {\n c = z + c\n }\n }\n }\n }\n N.push(c)\n }\n } else {\n N = []\n\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j] as string, max, false))\n }\n }\n\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k]\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion)\n }\n }\n }\n }\n\n return expansions\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: unknown) => void = (\n pattern: unknown,\n): asserts pattern is string => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } =\n {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n }\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n src: string,\n uFlag: boolean,\n consumed: number,\n hasMagic: boolean,\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n glob: string,\n position: number,\n): ParseClassResult => {\n const pos = position\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression')\n }\n /* c8 ignore stop */\n const ranges: string[] = []\n const negs: string[] = []\n\n let i = pos + 1\n let sawStart = false\n let uflag = false\n let escaping = false\n let negate = false\n let endPos = pos\n let rangeStart = ''\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i)\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true\n i++\n continue\n }\n\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1\n break\n }\n\n sawStart = true\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true\n i++\n continue\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true]\n }\n i += cls.length\n if (neg) negs.push(unip)\n else ranges.push(unip)\n uflag = uflag || u\n continue WHILE\n }\n }\n }\n\n // now it's just a normal character, effectively\n escaping = false\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n } else if (c === rangeStart) {\n ranges.push(braceEscape(c))\n }\n rangeStart = ''\n i++\n continue\n }\n\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'))\n i += 2\n continue\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c\n i += 2\n continue\n }\n\n // not the start of a range, just a single character\n ranges.push(braceEscape(c))\n i++\n }\n\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false]\n }\n\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true]\n }\n\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (\n negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate\n ) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n return [regexpEscape(r), false, endPos - pos, false]\n }\n\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n const comb =\n ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n : ranges.length ? sranges\n : snegs\n\n return [comb, uflag, endPos - pos, true]\n}\n","import type { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n magicalBraces = true,\n }: Pick = {},\n) => {\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/\\[([^/\\\\])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^/\\\\])\\]/g, '$1$2')\n .replace(/\\\\([^/])/g, '$1')\n }\n return windowsPathsNoEscape ?\n s.replace(/\\[([^/\\\\{}])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^/\\\\{}])\\]/g, '$1$2')\n .replace(/\\\\([^/{}])/g, '$1')\n}\n","// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport type { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n// 1 2 3 4 5 6 1 2 3 46 5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n// v----- .* because there's more following,\n// v v otherwise, .+ because it must be\n// v v *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n// copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map<\n ExtglobType,\n Map\n>([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n type: ExtglobType | null\n readonly #root: AST\n\n #hasMagic?: boolean\n #uflag: boolean = false\n #parts: (string | AST)[] = []\n #parent?: AST\n #parentIndex: number\n #negs: AST[]\n #filledNegs: boolean = false\n #options: MinimatchOptions\n #toString?: string\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt: boolean = false\n id = ++ID\n\n get depth(): number {\n return (this.#parent?.depth ?? -1) + 1\n }\n\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n }\n }\n\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n this.type = type\n // extglobs are inherently magical\n if (type) this.#hasMagic = true\n this.#parent = parent\n this.#root = this.#parent ? this.#parent.#root : this\n this.#options = this.#root === this ? options : this.#root.#options\n this.#negs = this.#root === this ? [] : this.#root.#negs\n if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n }\n\n get hasMagic(): boolean | undefined {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined) return this.#hasMagic\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string') continue\n if (p.type || p.hasMagic) return (this.#hasMagic = true)\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic\n }\n\n // reconstructs the pattern\n toString(): string {\n return (\n this.#toString !== undefined ? this.#toString\n : !this.type ?\n (this.#toString = this.#parts.map(p => String(p)).join(''))\n : (this.#toString =\n this.type +\n '(' +\n this.#parts.map(p => String(p)).join('|') +\n ')')\n )\n }\n\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root) throw new Error('should only call on root')\n if (this.#filledNegs) return this\n /* c8 ignore stop */\n\n // call toString() once to fill this out\n this.toString()\n this.#filledNegs = true\n let n: AST | undefined\n while ((n = this.#negs.pop())) {\n if (n.type !== '!') continue\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p: AST | undefined = n\n let pp = p.#parent\n while (pp) {\n for (\n let i = p.#parentIndex + 1;\n !pp.type && i < pp.#parts.length;\n i++\n ) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??')\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i])\n }\n }\n p = pp\n pp = p.#parent\n }\n }\n return this\n }\n\n push(...parts: (string | AST)[]) {\n for (const p of parts) {\n if (p === '') continue\n /* c8 ignore start */\n if (\n typeof p !== 'string' &&\n !(p instanceof AST && p.#parent === this)\n ) {\n throw new Error('invalid part: ' + p)\n }\n /* c8 ignore stop */\n this.#parts.push(p)\n }\n }\n\n toJSON() {\n const ret: unknown[] =\n this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n if (this.isStart() && !this.type) ret.unshift([])\n if (\n this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))\n ) {\n ret.push({})\n }\n return ret\n }\n\n isStart(): boolean {\n if (this.#root === this) return true\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart()) return false\n if (this.#parentIndex === 0) return true\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i]\n if (!(pp instanceof AST && pp.type === '!')) {\n return false\n }\n }\n return true\n }\n\n isEnd(): boolean {\n if (this.#root === this) return true\n if (this.#parent?.type === '!') return true\n if (!this.#parent?.isEnd()) return false\n if (!this.type) return this.#parent?.isEnd()\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1\n }\n\n copyIn(part: AST | string) {\n if (typeof part === 'string') this.push(part)\n else this.push(part.clone(this))\n }\n\n clone(parent: AST) {\n const c = new AST(this.type, parent)\n for (const p of this.#parts) {\n c.copyIn(p)\n }\n return c\n }\n\n static #parseAST(\n str: string,\n ast: AST,\n pos: number,\n opt: MinimatchOptions,\n extDepth: number,\n ): number {\n const maxDepth = opt.maxExtglobRecursion ?? 2\n let escaping = false\n let inBrace = false\n let braceStart = -1\n let braceNeg = false\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth\n if (doRecurse) {\n ast.push(acc)\n acc = ''\n const ext = new AST(c, ast)\n i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n ast.push(ext)\n continue\n }\n acc += c\n }\n ast.push(acc)\n return i\n }\n\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1\n let part = new AST(null, ast)\n const parts: AST[] = []\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n part.push(acc)\n acc = ''\n const ext = new AST(c, part)\n part.push(ext)\n i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n continue\n }\n if (c === '|') {\n part.push(acc)\n acc = ''\n parts.push(part)\n part = new AST(null, ast)\n continue\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true\n }\n part.push(acc)\n acc = ''\n ast.push(...parts, part)\n return i\n }\n acc += c\n }\n\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null\n ast.#hasMagic = undefined\n ast.#parts = [str.substring(pos - 1)]\n return i\n }\n\n #canAdoptWithSpace(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n return this.#canAdopt(child, adoptionWithSpaceMap)\n }\n\n #canAdopt(\n child?: AST | string,\n map: Map = adoptionMap,\n ): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canAdoptType(\n gc.type,\n map,\n )\n }\n #canAdoptType(\n c: string,\n map: Map = adoptionAnyMap,\n ): c is ExtglobType {\n return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n }\n\n #adoptWithSpace(\n this: AST & { type: ExtglobType },\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const blank = new AST(null, gc, this.options)\n blank.#parts.push('')\n gc.push(blank)\n this.#adopt(child, index)\n }\n\n #adopt(\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n this.#parts.splice(index, 1, ...gc.#parts)\n for (const p of gc.#parts) {\n if (typeof p === 'object') p.#parent = this\n }\n this.#toString = undefined\n }\n\n #canUsurpType(c: string): boolean {\n const m = usurpMap.get(this.type as ExtglobType)\n return !!m?.has(c as ExtglobType)\n }\n\n #canUsurp(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n }\n\n #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n const m = usurpMap.get(this.type as ExtglobType)\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const nt = m?.get(gc.type)\n /* c8 ignore start - impossible */\n if (!nt) return false\n /* c8 ignore stop */\n this.#parts = gc.#parts\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this\n }\n }\n this.type = nt\n this.#toString = undefined\n this.#emptyExt = false\n }\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n const ast = new AST(null, undefined, options)\n AST.#parseAST(pattern, ast, 0, options, 0)\n return ast\n }\n\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern(): MMRegExp | string {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root) return this.#root.toMMPattern()\n /* c8 ignore stop */\n const glob = this.toString()\n const [re, body, hasMagic, uflag] = this.toRegExpSource()\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic =\n hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase())\n if (!anyMagic) {\n return body\n }\n\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n })\n }\n\n get options() {\n return this.#options\n }\n\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(\n allowDot?: boolean,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n const dot = allowDot ?? !!this.#options.dot\n if (this.#root === this) {\n this.#flatten()\n this.#fillNegs()\n }\n if (!isExtglobAST(this)) {\n const noEmpty =\n this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string')\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] =\n typeof p === 'string' ?\n AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot)\n this.#hasMagic = this.#hasMagic || hasMagic\n this.#uflag = this.#uflag || uflag\n return re\n })\n .join('')\n\n let start = ''\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed =\n this.#parts.length === 1 && justDots.has(this.#parts[0])\n if (!dotTravAllowed) {\n const aps = addPatternStart\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav =\n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : ''\n }\n }\n }\n\n // append the \"end of path portion\" pattern to negation tails\n let end = ''\n if (\n this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!'\n ) {\n end = '(?:$|\\\\/)'\n }\n const final = start + src + end\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n\n const repeated = this.type === '*' || this.type === '+'\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n let body = (this as AST & { type: ExtglobType }).#partsToRegExp(dot)\n\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString()\n const me = this as AST\n me.#parts = [s]\n me.type = null\n me.#hasMagic = undefined\n return [s, unescape(this.toString()), false, false]\n }\n\n let bodyDotAllowed =\n !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true)\n if (bodyDotAllowed === body) {\n bodyDotAllowed = ''\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`\n }\n\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = ''\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n } else {\n const close =\n this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`\n final = start + body + close\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten()\n }\n }\n } else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0\n let done = false\n do {\n done = true\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i]\n if (typeof c === 'object') {\n c.#flatten()\n if (this.#canAdopt(c)) {\n done = false\n this.#adopt(c, i)\n } else if (this.#canAdoptWithSpace(c)) {\n done = false\n ;(this as AST & { type: ExtglobType }).#adoptWithSpace(c, i)\n } else if (this.#canUsurp(c)) {\n done = false\n ;(this as AST & { type: ExtglobType }).#usurp(c)\n }\n }\n }\n } while (!done && ++iterations < 10)\n }\n this.#toString = undefined\n }\n\n #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??')\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n this.#uflag = this.#uflag || uflag\n return re\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|')\n }\n\n static #parseGlob(\n glob: string,\n hasMagic: boolean | undefined,\n noEmpty: boolean = false,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n let escaping = false\n let re = ''\n let uflag = false\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i)\n if (escaping) {\n escaping = false\n re += (reSpecials.has(c) ? '\\\\' : '') + c\n continue\n }\n if (c === '*') {\n if (inStar) continue\n inStar = true\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n hasMagic = true\n continue\n } else {\n inStar = false\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\'\n } else {\n escaping = true\n }\n continue\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i)\n if (consumed) {\n re += src\n uflag = uflag || needUflag\n i += consumed - 1\n hasMagic = hasMagic || magic\n continue\n }\n }\n if (c === '?') {\n re += qmark\n hasMagic = true\n continue\n }\n re += regExpEscape(c)\n }\n return [re, unescape(glob), !!hasMagic, uflag]\n }\n}\n","import type { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n magicalBraces = false,\n }: Pick = {},\n) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n","import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport type { ExtglobType } from './ast.js'\nimport { AST } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n | 'aix'\n | 'android'\n | 'darwin'\n | 'freebsd'\n | 'haiku'\n | 'linux'\n | 'openbsd'\n | 'sunos'\n | 'win32'\n | 'cygwin'\n | 'netbsd'\n\nexport interface MinimatchOptions {\n /** do not expand `{x,y}` style braces */\n nobrace?: boolean\n /** do not treat patterns starting with `#` as a comment */\n nocomment?: boolean\n /** do not treat patterns starting with `!` as a negation */\n nonegate?: boolean\n /** print LOTS of debugging output */\n debug?: boolean\n /** treat `**` the same as `*` */\n noglobstar?: boolean\n /** do not expand extglobs like `+(a|b)` */\n noext?: boolean\n /** return the pattern if nothing matches */\n nonull?: boolean\n /** treat `\\\\` as a path separator, not an escape character */\n windowsPathsNoEscape?: boolean\n /**\n * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n * @deprecated\n */\n allowWindowsEscape?: boolean\n /**\n * Compare a partial path to a pattern. As long as the parts\n * of the path that are present are not contradicted by the\n * pattern, it will be treated as a match. This is useful in\n * applications where you're walking through a folder structure,\n * and don't yet have the full path, but want to ensure that you\n * do not walk down paths that can never be a match.\n */\n partial?: boolean\n /** allow matches that start with `.` even if the pattern does not */\n dot?: boolean\n /** ignore case */\n nocase?: boolean\n /** ignore case only in wildcard patterns */\n nocaseMagicOnly?: boolean\n /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n magicalBraces?: boolean\n /**\n * If set, then patterns without slashes will be matched\n * against the basename of the path if it contains slashes.\n * For example, `a?b` would match the path `/xyz/123/acb`, but\n * not `/xyz/acb/123`.\n */\n matchBase?: boolean\n /** invert the results of negated matches */\n flipNegate?: boolean\n /** do not collapse multiple `/` into a single `/` */\n preserveMultipleSlashes?: boolean\n /**\n * A number indicating the level of optimization that should be done\n * to the pattern prior to parsing and using it for matches.\n */\n optimizationLevel?: number\n /** operating system platform */\n platform?: Platform\n /**\n * When a pattern starts with a UNC path or drive letter, and in\n * `nocase:true` mode, do not convert the root portions of the\n * pattern into a case-insensitive regular expression, and instead\n * leave them as strings.\n *\n * This is the default when the platform is `win32` and\n * `nocase:true` is set.\n */\n windowsNoMagicRoot?: boolean\n /**\n * max number of `{...}` patterns to expand. Default 100_000.\n */\n braceExpandMax?: number\n /**\n * Max number of non-adjacent `**` patterns to recursively walk down.\n *\n * The default of 200 is almost certainly high enough for most purposes,\n * and can handle absurdly excessive patterns.\n */\n maxGlobstarRecursion?: number\n\n /**\n * Max depth to traverse for nested extglobs like `*(a|b|c)`\n *\n * Default is 2, which is quite low, but any higher value\n * swiftly results in punishing performance impacts. Note\n * that this is *not* relevant when the globstar types can\n * be safely coalesced into a single set.\n *\n * For example, `*(a|@(b|c)|d)` would be flattened into\n * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n * performance and never hit this limit, even if they are\n * excessively deep and complicated.\n *\n * If the limit is hit, then the extglob characters are simply\n * not parsed, and the pattern effectively switches into\n * `noextglob: true` mode for the contents of that nested\n * sub-pattern. This will typically _not_ result in a match,\n * but is considered a valid trade-off for security and\n * performance.\n */\n maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n p: string,\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?*[(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?*[(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n typeof process === 'object' && process ?\n (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n (pattern: string, options: MinimatchOptions = {}) =>\n (p: string) =>\n minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n orig(p, pattern, ext(def, options))\n\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern: string, options: MinimatchOptions = {}) {\n super(pattern, ext(def, options))\n }\n static defaults(options: MinimatchOptions) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n },\n\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n super(type, parent, ext(def, options))\n }\n /* c8 ignore stop */\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options))\n }\n },\n\n unescape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.unescape(s, ext(def, options)),\n\n escape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.escape(s, ext(def, options)),\n\n filter: (pattern: string, options: MinimatchOptions = {}) =>\n orig.filter(pattern, ext(def, options)),\n\n defaults: (options: MinimatchOptions) =>\n orig.defaults(ext(def, options)),\n\n makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n orig.makeRe(pattern, ext(def, options)),\n\n braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n orig.braceExpand(pattern, ext(def, options)),\n\n match: (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n ) => orig.match(list, pattern, ext(def, options)),\n\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n _src?: string\n _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n options: MinimatchOptions\n set: ParseReturnFiltered[][]\n pattern: string\n\n windowsPathsNoEscape: boolean\n nonegate: boolean\n negate: boolean\n comment: boolean\n empty: boolean\n preserveMultipleSlashes: boolean\n partial: boolean\n globSet: string[]\n globParts: string[][]\n nocase: boolean\n\n isWindows: boolean\n platform: Platform\n windowsNoMagicRoot: boolean\n maxGlobstarRecursion: number\n\n regexp: false | null | MMRegExp\n constructor(pattern: string, options: MinimatchOptions = {}) {\n assertValidPattern(pattern)\n\n options = options || {}\n this.options = options\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n this.pattern = pattern\n this.platform = options.platform || defaultPlatform\n this.isWindows = this.platform === 'win32'\n // avoid the annoying deprecation flag lol\n const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options[awe] === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n this.regexp = null\n this.negate = false\n this.nonegate = !!options.nonegate\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n this.nocase = !!this.options.nocase\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined ?\n options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase)\n\n this.globSet = []\n this.globParts = []\n this.set = []\n\n // make the set of regexps etc.\n this.make()\n }\n\n hasMagic(): boolean {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string') return true\n }\n }\n return false\n }\n\n debug(..._: unknown[]) {}\n\n make() {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())]\n\n if (options.debug) {\n //oxlint-disable-next-line no-console\n this.debug = (...args: unknown[]) => console.error(...args)\n }\n\n this.debug(this.pattern, this.globSet)\n\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n this.globParts = this.preprocess(rawGlobParts)\n this.debug(this.pattern, this.globParts)\n\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3])\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [\n ...s.slice(0, 4),\n ...s.slice(4).map(ss => this.parse(ss)),\n ]\n } else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1,\n ) as ParseReturnFiltered[][]\n\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i]\n if (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])\n ) {\n p[2] = '?'\n }\n }\n }\n\n this.debug(this.pattern, this.set)\n }\n\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts: string[][]) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (const partset of globParts) {\n for (let j = 0; j < partset.length; j++) {\n if (partset[j] === '**') {\n partset[j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs\n while (parts[i + 1] === '**') {\n i++\n }\n if (i !== gs) {\n parts.splice(gs, i - gs)\n }\n }\n return parts\n })\n }\n\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop()\n return set\n }\n }\n set.push(part)\n return set\n }, [])\n return parts.length === 0 ? [''] : parts\n })\n }\n\n levelTwoFileOptimize(parts: string | string[]) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts)\n }\n let didSomething: boolean = false\n\n do {\n didSomething = false\n //

NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nexport function callWithTimeout(\n promise: Promise,\n timeout: number\n): Promise {\n let timeoutHandle: ReturnType;\n\n const timeoutPromise = new Promise(function timeoutFunction(\n _resolve,\n reject\n ) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).then(\n result => {\n clearTimeout(timeoutHandle);\n return result;\n },\n reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package.\n * @param timer\n */\nexport function unrefTimer(timer: { unref(): unknown } | number): void {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport interface Clock {\n /**\n * Return the current time in milliseconds from some epoch such as the Unix epoch or process start\n */\n now(): number;\n}\n\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nexport class AnchoredClock implements Clock {\n private _monotonicClock: Clock;\n private _epochMillis: number;\n private _performanceMillis: number;\n\n /**\n * Create a new AnchoredClock anchored to the current time returned by systemClock.\n *\n * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n */\n public constructor(systemClock: Clock, monotonicClock: Clock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\n\n /**\n * Returns the current time by adding the number of milliseconds since the\n * AnchoredClock was created to the creation epoch time\n */\n public now(): number {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.214.0';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from './types/LoggerProvider';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport type { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport type { Logger } from '../types/Logger';\nimport type { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport type { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n DiagLogger,\n Meter,\n MeterProvider,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { diag, metrics, trace } from '@opentelemetry/api';\nimport type { Logger, LoggerProvider } from '@opentelemetry/api-logs';\nimport { logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport type {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\n\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\n }\n\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from './types/LoggerProvider';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { NOOP_LOGGER } from './NoopLogger';\nimport type { Logger } from './types/Logger';\nimport type { LoggerOptions } from './types/LoggerOptions';\nimport type { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\n\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport type { massWrap, massUnwrap } from '../../shimmer';\nimport { wrap, unwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport type { Hooked } from './RequireInTheMiddleSingleton';\nimport { RequireInTheMiddleSingleton } from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport type {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n // Access require via globalThis to prevent webpack from analyzing it as a dependency expression\n const nodeRequire = globalThis.require;\n if (!nodeRequire?.resolve || !nodeRequire?.cache) return;\n\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\n const { name } = module;\n try {\n const resolvedModule = nodeRequire.resolve(name);\n if (nodeRequire.cache[resolvedModule]?.loaded) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(\n `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n );\n }\n } catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = readFileSync(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\n );\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: HookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: true },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport type { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Logger } from './types/Logger';\nimport type { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges: string[] = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n } else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\n } finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\n } finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport type { Instrumentation } from './types';\nimport type { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUD_PROVIDER = 'cloud.provider';\nconst TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nconst TMP_CLOUD_REGION = 'cloud.region';\nconst TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nconst TMP_CLOUD_PLATFORM = 'cloud.platform';\nconst TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nconst TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nconst TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nconst TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nconst TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nconst TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nconst TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nconst TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nconst TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nconst TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nconst TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nconst TMP_CONTAINER_NAME = 'container.name';\nconst TMP_CONTAINER_ID = 'container.id';\nconst TMP_CONTAINER_RUNTIME = 'container.runtime';\nconst TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nconst TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nconst TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nconst TMP_DEVICE_ID = 'device.id';\nconst TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nconst TMP_DEVICE_MODEL_NAME = 'device.model.name';\nconst TMP_FAAS_NAME = 'faas.name';\nconst TMP_FAAS_ID = 'faas.id';\nconst TMP_FAAS_VERSION = 'faas.version';\nconst TMP_FAAS_INSTANCE = 'faas.instance';\nconst TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nconst TMP_HOST_ID = 'host.id';\nconst TMP_HOST_NAME = 'host.name';\nconst TMP_HOST_TYPE = 'host.type';\nconst TMP_HOST_ARCH = 'host.arch';\nconst TMP_HOST_IMAGE_NAME = 'host.image.name';\nconst TMP_HOST_IMAGE_ID = 'host.image.id';\nconst TMP_HOST_IMAGE_VERSION = 'host.image.version';\nconst TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nconst TMP_K8S_NODE_NAME = 'k8s.node.name';\nconst TMP_K8S_NODE_UID = 'k8s.node.uid';\nconst TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nconst TMP_K8S_POD_UID = 'k8s.pod.uid';\nconst TMP_K8S_POD_NAME = 'k8s.pod.name';\nconst TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nconst TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nconst TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nconst TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nconst TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nconst TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nconst TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nconst TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nconst TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nconst TMP_K8S_JOB_UID = 'k8s.job.uid';\nconst TMP_K8S_JOB_NAME = 'k8s.job.name';\nconst TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nconst TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nconst TMP_OS_TYPE = 'os.type';\nconst TMP_OS_DESCRIPTION = 'os.description';\nconst TMP_OS_NAME = 'os.name';\nconst TMP_OS_VERSION = 'os.version';\nconst TMP_PROCESS_PID = 'process.pid';\nconst TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nconst TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nconst TMP_PROCESS_COMMAND = 'process.command';\nconst TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nconst TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nconst TMP_PROCESS_OWNER = 'process.owner';\nconst TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nconst TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nconst TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nconst TMP_SERVICE_NAME = 'service.name';\nconst TMP_SERVICE_NAMESPACE = 'service.namespace';\nconst TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nconst TMP_SERVICE_VERSION = 'service.version';\nconst TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nconst TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nconst TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nconst TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nconst TMP_WEBENGINE_NAME = 'webengine.name';\nconst TMP_WEBENGINE_VERSION = 'webengine.version';\nconst TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n\n/**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n\n/**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n\n/**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION =\n TMP_PROCESS_RUNTIME_DESCRIPTION;\n\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexport const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n\n/**\n * Definition of available values for SemanticResourceAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification.\n */\nexport type SemanticResourceAttributes = {\n /**\n * Name of the cloud provider.\n */\n CLOUD_PROVIDER: 'cloud.provider';\n\n /**\n * The cloud account ID the resource is assigned to.\n */\n CLOUD_ACCOUNT_ID: 'cloud.account.id';\n\n /**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n */\n CLOUD_REGION: 'cloud.region';\n\n /**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n */\n CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone';\n\n /**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n */\n CLOUD_PLATFORM: 'cloud.platform';\n\n /**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n */\n AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn';\n\n /**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n */\n AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn';\n\n /**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n */\n AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype';\n\n /**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n */\n AWS_ECS_TASK_ARN: 'aws.ecs.task.arn';\n\n /**\n * The task definition family this task definition is a member of.\n */\n AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family';\n\n /**\n * The revision for this task definition.\n */\n AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision';\n\n /**\n * The ARN of an EKS cluster.\n */\n AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn';\n\n /**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n */\n AWS_LOG_GROUP_NAMES: 'aws.log.group.names';\n\n /**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n */\n AWS_LOG_GROUP_ARNS: 'aws.log.group.arns';\n\n /**\n * The name(s) of the AWS log stream(s) an application is writing to.\n */\n AWS_LOG_STREAM_NAMES: 'aws.log.stream.names';\n\n /**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n */\n AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns';\n\n /**\n * Container name.\n */\n CONTAINER_NAME: 'container.name';\n\n /**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n */\n CONTAINER_ID: 'container.id';\n\n /**\n * The container runtime managing this container.\n */\n CONTAINER_RUNTIME: 'container.runtime';\n\n /**\n * Name of the image the container was built on.\n */\n CONTAINER_IMAGE_NAME: 'container.image.name';\n\n /**\n * Container image tag.\n */\n CONTAINER_IMAGE_TAG: 'container.image.tag';\n\n /**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n */\n DEPLOYMENT_ENVIRONMENT: 'deployment.environment';\n\n /**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n */\n DEVICE_ID: 'device.id';\n\n /**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n */\n DEVICE_MODEL_IDENTIFIER: 'device.model.identifier';\n\n /**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n */\n DEVICE_MODEL_NAME: 'device.model.name';\n\n /**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n */\n FAAS_NAME: 'faas.name';\n\n /**\n * The unique ID of the single function that this runtime instance executes.\n *\n * Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n */\n FAAS_ID: 'faas.id';\n\n /**\n * The immutable version of the function being executed.\n *\n * Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n */\n FAAS_VERSION: 'faas.version';\n\n /**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n */\n FAAS_INSTANCE: 'faas.instance';\n\n /**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n */\n FAAS_MAX_MEMORY: 'faas.max_memory';\n\n /**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n */\n HOST_ID: 'host.id';\n\n /**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n */\n HOST_NAME: 'host.name';\n\n /**\n * Type of host. For Cloud, this must be the machine type.\n */\n HOST_TYPE: 'host.type';\n\n /**\n * The CPU architecture the host system is running on.\n */\n HOST_ARCH: 'host.arch';\n\n /**\n * Name of the VM image or OS install the host was instantiated from.\n */\n HOST_IMAGE_NAME: 'host.image.name';\n\n /**\n * VM image ID. For Cloud, this value is from the provider.\n */\n HOST_IMAGE_ID: 'host.image.id';\n\n /**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n */\n HOST_IMAGE_VERSION: 'host.image.version';\n\n /**\n * The name of the cluster.\n */\n K8S_CLUSTER_NAME: 'k8s.cluster.name';\n\n /**\n * The name of the Node.\n */\n K8S_NODE_NAME: 'k8s.node.name';\n\n /**\n * The UID of the Node.\n */\n K8S_NODE_UID: 'k8s.node.uid';\n\n /**\n * The name of the namespace that the pod is running in.\n */\n K8S_NAMESPACE_NAME: 'k8s.namespace.name';\n\n /**\n * The UID of the Pod.\n */\n K8S_POD_UID: 'k8s.pod.uid';\n\n /**\n * The name of the Pod.\n */\n K8S_POD_NAME: 'k8s.pod.name';\n\n /**\n * The name of the Container in a Pod template.\n */\n K8S_CONTAINER_NAME: 'k8s.container.name';\n\n /**\n * The UID of the ReplicaSet.\n */\n K8S_REPLICASET_UID: 'k8s.replicaset.uid';\n\n /**\n * The name of the ReplicaSet.\n */\n K8S_REPLICASET_NAME: 'k8s.replicaset.name';\n\n /**\n * The UID of the Deployment.\n */\n K8S_DEPLOYMENT_UID: 'k8s.deployment.uid';\n\n /**\n * The name of the Deployment.\n */\n K8S_DEPLOYMENT_NAME: 'k8s.deployment.name';\n\n /**\n * The UID of the StatefulSet.\n */\n K8S_STATEFULSET_UID: 'k8s.statefulset.uid';\n\n /**\n * The name of the StatefulSet.\n */\n K8S_STATEFULSET_NAME: 'k8s.statefulset.name';\n\n /**\n * The UID of the DaemonSet.\n */\n K8S_DAEMONSET_UID: 'k8s.daemonset.uid';\n\n /**\n * The name of the DaemonSet.\n */\n K8S_DAEMONSET_NAME: 'k8s.daemonset.name';\n\n /**\n * The UID of the Job.\n */\n K8S_JOB_UID: 'k8s.job.uid';\n\n /**\n * The name of the Job.\n */\n K8S_JOB_NAME: 'k8s.job.name';\n\n /**\n * The UID of the CronJob.\n */\n K8S_CRONJOB_UID: 'k8s.cronjob.uid';\n\n /**\n * The name of the CronJob.\n */\n K8S_CRONJOB_NAME: 'k8s.cronjob.name';\n\n /**\n * The operating system type.\n */\n OS_TYPE: 'os.type';\n\n /**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n */\n OS_DESCRIPTION: 'os.description';\n\n /**\n * Human readable operating system name.\n */\n OS_NAME: 'os.name';\n\n /**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n */\n OS_VERSION: 'os.version';\n\n /**\n * Process identifier (PID).\n */\n PROCESS_PID: 'process.pid';\n\n /**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n */\n PROCESS_EXECUTABLE_NAME: 'process.executable.name';\n\n /**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n */\n PROCESS_EXECUTABLE_PATH: 'process.executable.path';\n\n /**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n */\n PROCESS_COMMAND: 'process.command';\n\n /**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n */\n PROCESS_COMMAND_LINE: 'process.command_line';\n\n /**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n */\n PROCESS_COMMAND_ARGS: 'process.command_args';\n\n /**\n * The username of the user that owns the process.\n */\n PROCESS_OWNER: 'process.owner';\n\n /**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n */\n PROCESS_RUNTIME_NAME: 'process.runtime.name';\n\n /**\n * The version of the runtime of this process, as returned by the runtime without modification.\n */\n PROCESS_RUNTIME_VERSION: 'process.runtime.version';\n\n /**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n */\n PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description';\n\n /**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n */\n SERVICE_NAME: 'service.name';\n\n /**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\n SERVICE_NAMESPACE: 'service.namespace';\n\n /**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n */\n SERVICE_INSTANCE_ID: 'service.instance.id';\n\n /**\n * The version string of the service API or implementation.\n */\n SERVICE_VERSION: 'service.version';\n\n /**\n * The name of the telemetry SDK as defined above.\n */\n TELEMETRY_SDK_NAME: 'telemetry.sdk.name';\n\n /**\n * The language of the telemetry SDK.\n */\n TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language';\n\n /**\n * The version string of the telemetry SDK.\n */\n TELEMETRY_SDK_VERSION: 'telemetry.sdk.version';\n\n /**\n * The version string of the auto instrumentation agent, if used.\n */\n TELEMETRY_AUTO_VERSION: 'telemetry.auto.version';\n\n /**\n * The name of the web engine.\n */\n WEBENGINE_NAME: 'webengine.name';\n\n /**\n * The version of the web engine.\n */\n WEBENGINE_VERSION: 'webengine.version';\n\n /**\n * Additional description of the web engine (e.g. detailed version and edition information).\n */\n WEBENGINE_DESCRIPTION: 'webengine.description';\n};\n\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexport const SemanticResourceAttributes: SemanticResourceAttributes =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUD_PROVIDER,\n TMP_CLOUD_ACCOUNT_ID,\n TMP_CLOUD_REGION,\n TMP_CLOUD_AVAILABILITY_ZONE,\n TMP_CLOUD_PLATFORM,\n TMP_AWS_ECS_CONTAINER_ARN,\n TMP_AWS_ECS_CLUSTER_ARN,\n TMP_AWS_ECS_LAUNCHTYPE,\n TMP_AWS_ECS_TASK_ARN,\n TMP_AWS_ECS_TASK_FAMILY,\n TMP_AWS_ECS_TASK_REVISION,\n TMP_AWS_EKS_CLUSTER_ARN,\n TMP_AWS_LOG_GROUP_NAMES,\n TMP_AWS_LOG_GROUP_ARNS,\n TMP_AWS_LOG_STREAM_NAMES,\n TMP_AWS_LOG_STREAM_ARNS,\n TMP_CONTAINER_NAME,\n TMP_CONTAINER_ID,\n TMP_CONTAINER_RUNTIME,\n TMP_CONTAINER_IMAGE_NAME,\n TMP_CONTAINER_IMAGE_TAG,\n TMP_DEPLOYMENT_ENVIRONMENT,\n TMP_DEVICE_ID,\n TMP_DEVICE_MODEL_IDENTIFIER,\n TMP_DEVICE_MODEL_NAME,\n TMP_FAAS_NAME,\n TMP_FAAS_ID,\n TMP_FAAS_VERSION,\n TMP_FAAS_INSTANCE,\n TMP_FAAS_MAX_MEMORY,\n TMP_HOST_ID,\n TMP_HOST_NAME,\n TMP_HOST_TYPE,\n TMP_HOST_ARCH,\n TMP_HOST_IMAGE_NAME,\n TMP_HOST_IMAGE_ID,\n TMP_HOST_IMAGE_VERSION,\n TMP_K8S_CLUSTER_NAME,\n TMP_K8S_NODE_NAME,\n TMP_K8S_NODE_UID,\n TMP_K8S_NAMESPACE_NAME,\n TMP_K8S_POD_UID,\n TMP_K8S_POD_NAME,\n TMP_K8S_CONTAINER_NAME,\n TMP_K8S_REPLICASET_UID,\n TMP_K8S_REPLICASET_NAME,\n TMP_K8S_DEPLOYMENT_UID,\n TMP_K8S_DEPLOYMENT_NAME,\n TMP_K8S_STATEFULSET_UID,\n TMP_K8S_STATEFULSET_NAME,\n TMP_K8S_DAEMONSET_UID,\n TMP_K8S_DAEMONSET_NAME,\n TMP_K8S_JOB_UID,\n TMP_K8S_JOB_NAME,\n TMP_K8S_CRONJOB_UID,\n TMP_K8S_CRONJOB_NAME,\n TMP_OS_TYPE,\n TMP_OS_DESCRIPTION,\n TMP_OS_NAME,\n TMP_OS_VERSION,\n TMP_PROCESS_PID,\n TMP_PROCESS_EXECUTABLE_NAME,\n TMP_PROCESS_EXECUTABLE_PATH,\n TMP_PROCESS_COMMAND,\n TMP_PROCESS_COMMAND_LINE,\n TMP_PROCESS_COMMAND_ARGS,\n TMP_PROCESS_OWNER,\n TMP_PROCESS_RUNTIME_NAME,\n TMP_PROCESS_RUNTIME_VERSION,\n TMP_PROCESS_RUNTIME_DESCRIPTION,\n TMP_SERVICE_NAME,\n TMP_SERVICE_NAMESPACE,\n TMP_SERVICE_INSTANCE_ID,\n TMP_SERVICE_VERSION,\n TMP_TELEMETRY_SDK_NAME,\n TMP_TELEMETRY_SDK_LANGUAGE,\n TMP_TELEMETRY_SDK_VERSION,\n TMP_TELEMETRY_AUTO_VERSION,\n TMP_WEBENGINE_NAME,\n TMP_WEBENGINE_VERSION,\n TMP_WEBENGINE_DESCRIPTION,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nconst TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport type CloudProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport const CloudProviderValues: CloudProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nconst TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n 'azure_container_instances';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nconst TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nconst TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nconst TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC =\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_LAMBDA =\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK =\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE =\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS =\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_APP_ENGINE =\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n\n/**\n * Identifies the Values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport type CloudPlatformValues = {\n /** Alibaba Cloud Elastic Compute Service. */\n ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs';\n\n /** Alibaba Cloud Function Compute. */\n ALIBABA_CLOUD_FC: 'alibaba_cloud_fc';\n\n /** AWS Elastic Compute Cloud. */\n AWS_EC2: 'aws_ec2';\n\n /** AWS Elastic Container Service. */\n AWS_ECS: 'aws_ecs';\n\n /** AWS Elastic Kubernetes Service. */\n AWS_EKS: 'aws_eks';\n\n /** AWS Lambda. */\n AWS_LAMBDA: 'aws_lambda';\n\n /** AWS Elastic Beanstalk. */\n AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk';\n\n /** Azure Virtual Machines. */\n AZURE_VM: 'azure_vm';\n\n /** Azure Container Instances. */\n AZURE_CONTAINER_INSTANCES: 'azure_container_instances';\n\n /** Azure Kubernetes Service. */\n AZURE_AKS: 'azure_aks';\n\n /** Azure Functions. */\n AZURE_FUNCTIONS: 'azure_functions';\n\n /** Azure App Service. */\n AZURE_APP_SERVICE: 'azure_app_service';\n\n /** Google Cloud Compute Engine (GCE). */\n GCP_COMPUTE_ENGINE: 'gcp_compute_engine';\n\n /** Google Cloud Run. */\n GCP_CLOUD_RUN: 'gcp_cloud_run';\n\n /** Google Cloud Kubernetes Engine (GKE). */\n GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine';\n\n /** Google Cloud Functions (GCF). */\n GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions';\n\n /** Google Cloud App Engine (GAE). */\n GCP_APP_ENGINE: 'gcp_app_engine';\n};\n\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport const CloudPlatformValues: CloudPlatformValues =\n /*#__PURE__*/ createConstMap([\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nconst TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const AWSECSLAUNCHTYPEVALUES_FARGATE =\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n\n/**\n * Identifies the Values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport type AwsEcsLaunchtypeValues = {\n /** ec2. */\n EC2: 'ec2';\n\n /** fargate. */\n FARGATE: 'fargate';\n};\n\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nconst TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nconst TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nconst TMP_HOSTARCHVALUES_IA64 = 'ia64';\nconst TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nconst TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nconst TMP_HOSTARCHVALUES_X86 = 'x86';\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n\n/**\n * Identifies the Values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport type HostArchValues = {\n /** AMD64. */\n AMD64: 'amd64';\n\n /** ARM32. */\n ARM32: 'arm32';\n\n /** ARM64. */\n ARM64: 'arm64';\n\n /** Itanium. */\n IA64: 'ia64';\n\n /** 32-bit PowerPC. */\n PPC32: 'ppc32';\n\n /** 64-bit PowerPC. */\n PPC64: 'ppc64';\n\n /** 32-bit x86. */\n X86: 'x86';\n};\n\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport const HostArchValues: HostArchValues =\n /*#__PURE__*/ createConstMap([\n TMP_HOSTARCHVALUES_AMD64,\n TMP_HOSTARCHVALUES_ARM32,\n TMP_HOSTARCHVALUES_ARM64,\n TMP_HOSTARCHVALUES_IA64,\n TMP_HOSTARCHVALUES_PPC32,\n TMP_HOSTARCHVALUES_PPC64,\n TMP_HOSTARCHVALUES_X86,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_OSTYPEVALUES_WINDOWS = 'windows';\nconst TMP_OSTYPEVALUES_LINUX = 'linux';\nconst TMP_OSTYPEVALUES_DARWIN = 'darwin';\nconst TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nconst TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nconst TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nconst TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nconst TMP_OSTYPEVALUES_HPUX = 'hpux';\nconst TMP_OSTYPEVALUES_AIX = 'aix';\nconst TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nconst TMP_OSTYPEVALUES_Z_OS = 'z_os';\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n\n/**\n * Identifies the Values for OsTypeValues enum definition\n *\n * The operating system type.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport type OsTypeValues = {\n /** Microsoft Windows. */\n WINDOWS: 'windows';\n\n /** Linux. */\n LINUX: 'linux';\n\n /** Apple Darwin. */\n DARWIN: 'darwin';\n\n /** FreeBSD. */\n FREEBSD: 'freebsd';\n\n /** NetBSD. */\n NETBSD: 'netbsd';\n\n /** OpenBSD. */\n OPENBSD: 'openbsd';\n\n /** DragonFly BSD. */\n DRAGONFLYBSD: 'dragonflybsd';\n\n /** HP-UX (Hewlett Packard Unix). */\n HPUX: 'hpux';\n\n /** AIX (Advanced Interactive eXecutive). */\n AIX: 'aix';\n\n /** Oracle Solaris. */\n SOLARIS: 'solaris';\n\n /** IBM z/OS. */\n Z_OS: 'z_os';\n};\n\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport const OsTypeValues: OsTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_OSTYPEVALUES_WINDOWS,\n TMP_OSTYPEVALUES_LINUX,\n TMP_OSTYPEVALUES_DARWIN,\n TMP_OSTYPEVALUES_FREEBSD,\n TMP_OSTYPEVALUES_NETBSD,\n TMP_OSTYPEVALUES_OPENBSD,\n TMP_OSTYPEVALUES_DRAGONFLYBSD,\n TMP_OSTYPEVALUES_HPUX,\n TMP_OSTYPEVALUES_AIX,\n TMP_OSTYPEVALUES_SOLARIS,\n TMP_OSTYPEVALUES_Z_OS,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_CPP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_DOTNET =\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_ERLANG =\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_JAVA =\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_NODEJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PHP =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PYTHON =\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_RUBY =\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_WEBJS =\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n\n/**\n * Identifies the Values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport type TelemetrySdkLanguageValues = {\n /** cpp. */\n CPP: 'cpp';\n\n /** dotnet. */\n DOTNET: 'dotnet';\n\n /** erlang. */\n ERLANG: 'erlang';\n\n /** go. */\n GO: 'go';\n\n /** java. */\n JAVA: 'java';\n\n /** nodejs. */\n NODEJS: 'nodejs';\n\n /** php. */\n PHP: 'php';\n\n /** python. */\n PYTHON: 'python';\n\n /** ruby. */\n RUBY: 'ruby';\n\n /** webjs. */\n WEBJS: 'webjs';\n};\n\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues =\n /*#__PURE__*/ createConstMap([\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n ]);\n","/*\n * Copyright The OpenTelemetry Authors\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 * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function createConstMap(values: Array): T {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res: any = {};\n const len = values.length;\n for (let lp = 0; lp < len; lp++) {\n const val = values[lp];\n if (val) {\n res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n }\n }\n\n return res as T;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticAttributes';\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticResourceAttributes';\n","/*\n * Copyright The OpenTelemetry Authors\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/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nconst TMP_DB_SYSTEM = 'db.system';\nconst TMP_DB_CONNECTION_STRING = 'db.connection_string';\nconst TMP_DB_USER = 'db.user';\nconst TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nconst TMP_DB_NAME = 'db.name';\nconst TMP_DB_STATEMENT = 'db.statement';\nconst TMP_DB_OPERATION = 'db.operation';\nconst TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nconst TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nconst TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nconst TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nconst TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nconst TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nconst TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n 'db.cassandra.speculative_execution_count';\nconst TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nconst TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nconst TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nconst TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nconst TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nconst TMP_DB_SQL_TABLE = 'db.sql.table';\nconst TMP_EXCEPTION_TYPE = 'exception.type';\nconst TMP_EXCEPTION_MESSAGE = 'exception.message';\nconst TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nconst TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nconst TMP_FAAS_TRIGGER = 'faas.trigger';\nconst TMP_FAAS_EXECUTION = 'faas.execution';\nconst TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nconst TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nconst TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nconst TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nconst TMP_FAAS_TIME = 'faas.time';\nconst TMP_FAAS_CRON = 'faas.cron';\nconst TMP_FAAS_COLDSTART = 'faas.coldstart';\nconst TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nconst TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nconst TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nconst TMP_NET_TRANSPORT = 'net.transport';\nconst TMP_NET_PEER_IP = 'net.peer.ip';\nconst TMP_NET_PEER_PORT = 'net.peer.port';\nconst TMP_NET_PEER_NAME = 'net.peer.name';\nconst TMP_NET_HOST_IP = 'net.host.ip';\nconst TMP_NET_HOST_PORT = 'net.host.port';\nconst TMP_NET_HOST_NAME = 'net.host.name';\nconst TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nconst TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nconst TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nconst TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nconst TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nconst TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nconst TMP_PEER_SERVICE = 'peer.service';\nconst TMP_ENDUSER_ID = 'enduser.id';\nconst TMP_ENDUSER_ROLE = 'enduser.role';\nconst TMP_ENDUSER_SCOPE = 'enduser.scope';\nconst TMP_THREAD_ID = 'thread.id';\nconst TMP_THREAD_NAME = 'thread.name';\nconst TMP_CODE_FUNCTION = 'code.function';\nconst TMP_CODE_NAMESPACE = 'code.namespace';\nconst TMP_CODE_FILEPATH = 'code.filepath';\nconst TMP_CODE_LINENO = 'code.lineno';\nconst TMP_HTTP_METHOD = 'http.method';\nconst TMP_HTTP_URL = 'http.url';\nconst TMP_HTTP_TARGET = 'http.target';\nconst TMP_HTTP_HOST = 'http.host';\nconst TMP_HTTP_SCHEME = 'http.scheme';\nconst TMP_HTTP_STATUS_CODE = 'http.status_code';\nconst TMP_HTTP_FLAVOR = 'http.flavor';\nconst TMP_HTTP_USER_AGENT = 'http.user_agent';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.response_content_length_uncompressed';\nconst TMP_HTTP_SERVER_NAME = 'http.server_name';\nconst TMP_HTTP_ROUTE = 'http.route';\nconst TMP_HTTP_CLIENT_IP = 'http.client_ip';\nconst TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nconst TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nconst TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n 'aws.dynamodb.provisioned_write_capacity';\nconst TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nconst TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nconst TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nconst TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nconst TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nconst TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n 'aws.dynamodb.exclusive_start_table';\nconst TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nconst TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nconst TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nconst TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nconst TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nconst TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nconst TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n 'aws.dynamodb.global_secondary_index_updates';\nconst TMP_MESSAGING_SYSTEM = 'messaging.system';\nconst TMP_MESSAGING_DESTINATION = 'messaging.destination';\nconst TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nconst TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nconst TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nconst TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nconst TMP_MESSAGING_URL = 'messaging.url';\nconst TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nconst TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n 'messaging.message_payload_compressed_size_bytes';\nconst TMP_MESSAGING_OPERATION = 'messaging.operation';\nconst TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nconst TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nconst TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nconst TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nconst TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nconst TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nconst TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nconst TMP_RPC_SYSTEM = 'rpc.system';\nconst TMP_RPC_SERVICE = 'rpc.service';\nconst TMP_RPC_METHOD = 'rpc.method';\nconst TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nconst TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nconst TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nconst TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nconst TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nconst TMP_MESSAGE_TYPE = 'message.type';\nconst TMP_MESSAGE_ID = 'message.id';\nconst TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nconst TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_USER = TMP_DB_USER;\n\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_NAME = TMP_DB_NAME;\n\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL =\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID =\n TMP_DB_CASSANDRA_COORDINATOR_ID;\n\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC =\n TMP_DB_CASSANDRA_COORDINATOR_DC;\n\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexport const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexport const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexport const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE =\n TMP_NET_HOST_CONNECTION_SUBTYPE;\n\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n\n/**\n * Current "managed" thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n\n/**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH =\n TMP_HTTP_REQUEST_CONTENT_LENGTH;\n\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY =\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ =\n TMP_AWS_DYNAMODB_CONSISTENT_READ;\n\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET =\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS =\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT =\n TMP_AWS_DYNAMODB_SCANNED_COUNT;\n\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const SEMATTRS_MESSAGING_DESTINATION_KIND =\n TMP_MESSAGING_DESTINATION_KIND;\n\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_TEMP_DESTINATION =\n TMP_MESSAGING_TEMP_DESTINATION;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL_VERSION =\n TMP_MESSAGING_PROTOCOL_VERSION;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexport const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY =\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY =\n TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP =\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n\n/**\n * Definition of available values for SemanticAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification.\n */\nexport type SemanticAttributes = {\n /**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n */\n AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn';\n\n /**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n */\n DB_SYSTEM: 'db.system';\n\n /**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n */\n DB_CONNECTION_STRING: 'db.connection_string';\n\n /**\n * Username for accessing the database.\n */\n DB_USER: 'db.user';\n\n /**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n */\n DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname';\n\n /**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n */\n DB_NAME: 'db.name';\n\n /**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n */\n DB_STATEMENT: 'db.statement';\n\n /**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n */\n DB_OPERATION: 'db.operation';\n\n /**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n */\n DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name';\n\n /**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace';\n\n /**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n */\n DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size';\n\n /**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n */\n DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level';\n\n /**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n */\n DB_CASSANDRA_TABLE: 'db.cassandra.table';\n\n /**\n * Whether or not the query is idempotent.\n */\n DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence';\n\n /**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n */\n DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count';\n\n /**\n * The ID of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id';\n\n /**\n * The data center of the coordinating node for a query.\n */\n DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc';\n\n /**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n */\n DB_HBASE_NAMESPACE: 'db.hbase.namespace';\n\n /**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n */\n DB_REDIS_DATABASE_INDEX: 'db.redis.database_index';\n\n /**\n * The collection being accessed within the database stated in `db.name`.\n */\n DB_MONGODB_COLLECTION: 'db.mongodb.collection';\n\n /**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n */\n DB_SQL_TABLE: 'db.sql.table';\n\n /**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n */\n EXCEPTION_TYPE: 'exception.type';\n\n /**\n * The exception message.\n */\n EXCEPTION_MESSAGE: 'exception.message';\n\n /**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n */\n EXCEPTION_STACKTRACE: 'exception.stacktrace';\n\n /**\n * SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n *\n * Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n */\n EXCEPTION_ESCAPED: 'exception.escaped';\n\n /**\n * Type of the trigger on which the function is executed.\n */\n FAAS_TRIGGER: 'faas.trigger';\n\n /**\n * The execution ID of the current function execution.\n */\n FAAS_EXECUTION: 'faas.execution';\n\n /**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n */\n FAAS_DOCUMENT_COLLECTION: 'faas.document.collection';\n\n /**\n * Describes the type of the operation that was performed on the data.\n */\n FAAS_DOCUMENT_OPERATION: 'faas.document.operation';\n\n /**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n */\n FAAS_DOCUMENT_TIME: 'faas.document.time';\n\n /**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n */\n FAAS_DOCUMENT_NAME: 'faas.document.name';\n\n /**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n */\n FAAS_TIME: 'faas.time';\n\n /**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n */\n FAAS_CRON: 'faas.cron';\n\n /**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n */\n FAAS_COLDSTART: 'faas.coldstart';\n\n /**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n */\n FAAS_INVOKED_NAME: 'faas.invoked_name';\n\n /**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n */\n FAAS_INVOKED_PROVIDER: 'faas.invoked_provider';\n\n /**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n */\n FAAS_INVOKED_REGION: 'faas.invoked_region';\n\n /**\n * Transport protocol used. See note below.\n */\n NET_TRANSPORT: 'net.transport';\n\n /**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n */\n NET_PEER_IP: 'net.peer.ip';\n\n /**\n * Remote port number.\n */\n NET_PEER_PORT: 'net.peer.port';\n\n /**\n * Remote hostname or similar, see note below.\n */\n NET_PEER_NAME: 'net.peer.name';\n\n /**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n */\n NET_HOST_IP: 'net.host.ip';\n\n /**\n * Like `net.peer.port` but for the host port.\n */\n NET_HOST_PORT: 'net.host.port';\n\n /**\n * Local hostname or similar, see note below.\n */\n NET_HOST_NAME: 'net.host.name';\n\n /**\n * The internet connection type currently being used by the host.\n */\n NET_HOST_CONNECTION_TYPE: 'net.host.connection.type';\n\n /**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n */\n NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype';\n\n /**\n * The name of the mobile carrier.\n */\n NET_HOST_CARRIER_NAME: 'net.host.carrier.name';\n\n /**\n * The mobile carrier country code.\n */\n NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc';\n\n /**\n * The mobile carrier network code.\n */\n NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc';\n\n /**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n */\n NET_HOST_CARRIER_ICC: 'net.host.carrier.icc';\n\n /**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n */\n PEER_SERVICE: 'peer.service';\n\n /**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n */\n ENDUSER_ID: 'enduser.id';\n\n /**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n */\n ENDUSER_ROLE: 'enduser.role';\n\n /**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n */\n ENDUSER_SCOPE: 'enduser.scope';\n\n /**\n * Current "managed" thread ID (as opposed to OS thread ID).\n */\n THREAD_ID: 'thread.id';\n\n /**\n * Current thread name.\n */\n THREAD_NAME: 'thread.name';\n\n /**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n */\n CODE_FUNCTION: 'code.function';\n\n /**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n */\n CODE_NAMESPACE: 'code.namespace';\n\n /**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n */\n CODE_FILEPATH: 'code.filepath';\n\n /**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n */\n CODE_LINENO: 'code.lineno';\n\n /**\n * HTTP request method.\n */\n HTTP_METHOD: 'http.method';\n\n /**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n */\n HTTP_URL: 'http.url';\n\n /**\n * The full request target as passed in a HTTP request line or equivalent.\n */\n HTTP_TARGET: 'http.target';\n\n /**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n */\n HTTP_HOST: 'http.host';\n\n /**\n * The URI scheme identifying the used protocol.\n */\n HTTP_SCHEME: 'http.scheme';\n\n /**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n */\n HTTP_STATUS_CODE: 'http.status_code';\n\n /**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n */\n HTTP_FLAVOR: 'http.flavor';\n\n /**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n */\n HTTP_USER_AGENT: 'http.user_agent';\n\n /**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n */\n HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length';\n\n /**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed';\n\n /**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n */\n HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length';\n\n /**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n */\n HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed';\n\n /**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n */\n HTTP_SERVER_NAME: 'http.server_name';\n\n /**\n * The matched route (path template).\n */\n HTTP_ROUTE: 'http.route';\n\n /**\n * The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n *\n * Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n */\n HTTP_CLIENT_IP: 'http.client_ip';\n\n /**\n * The keys in the `RequestItems` object field.\n */\n AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names';\n\n /**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n */\n AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity';\n\n /**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n */\n AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics';\n\n /**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity';\n\n /**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n */\n AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity';\n\n /**\n * The value of the `ConsistentRead` request parameter.\n */\n AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read';\n\n /**\n * The value of the `ProjectionExpression` request parameter.\n */\n AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection';\n\n /**\n * The value of the `Limit` request parameter.\n */\n AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit';\n\n /**\n * The value of the `AttributesToGet` request parameter.\n */\n AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get';\n\n /**\n * The value of the `IndexName` request parameter.\n */\n AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name';\n\n /**\n * The value of the `Select` request parameter.\n */\n AWS_DYNAMODB_SELECT: 'aws.dynamodb.select';\n\n /**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes';\n\n /**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n */\n AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes';\n\n /**\n * The value of the `ExclusiveStartTableName` request parameter.\n */\n AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table';\n\n /**\n * The the number of items in the `TableNames` response parameter.\n */\n AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count';\n\n /**\n * The value of the `ScanIndexForward` request parameter.\n */\n AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward';\n\n /**\n * The value of the `Segment` request parameter.\n */\n AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment';\n\n /**\n * The value of the `TotalSegments` request parameter.\n */\n AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments';\n\n /**\n * The value of the `Count` response parameter.\n */\n AWS_DYNAMODB_COUNT: 'aws.dynamodb.count';\n\n /**\n * The value of the `ScannedCount` response parameter.\n */\n AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count';\n\n /**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n */\n AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions';\n\n /**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n */\n AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates';\n\n /**\n * A string identifying the messaging system.\n */\n MESSAGING_SYSTEM: 'messaging.system';\n\n /**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n */\n MESSAGING_DESTINATION: 'messaging.destination';\n\n /**\n * The kind of message destination.\n */\n MESSAGING_DESTINATION_KIND: 'messaging.destination_kind';\n\n /**\n * A boolean that is true if the message destination is temporary.\n */\n MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination';\n\n /**\n * The name of the transport protocol.\n */\n MESSAGING_PROTOCOL: 'messaging.protocol';\n\n /**\n * The version of the transport protocol.\n */\n MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version';\n\n /**\n * Connection string.\n */\n MESSAGING_URL: 'messaging.url';\n\n /**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n */\n MESSAGING_MESSAGE_ID: 'messaging.message_id';\n\n /**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n */\n MESSAGING_CONVERSATION_ID: 'messaging.conversation_id';\n\n /**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n */\n MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes';\n\n /**\n * The compressed size of the message payload in bytes.\n */\n MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes';\n\n /**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n */\n MESSAGING_OPERATION: 'messaging.operation';\n\n /**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n */\n MESSAGING_CONSUMER_ID: 'messaging.consumer_id';\n\n /**\n * RabbitMQ message routing key.\n */\n MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key';\n\n /**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n */\n MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key';\n\n /**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n */\n MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group';\n\n /**\n * Client Id for the Consumer or Producer that is handling the message.\n */\n MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id';\n\n /**\n * Partition the message is sent to.\n */\n MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition';\n\n /**\n * A boolean that is true if the message is a tombstone.\n */\n MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone';\n\n /**\n * A string identifying the remoting system.\n */\n RPC_SYSTEM: 'rpc.system';\n\n /**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n */\n RPC_SERVICE: 'rpc.service';\n\n /**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n */\n RPC_METHOD: 'rpc.method';\n\n /**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n */\n RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code';\n\n /**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n */\n RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version';\n\n /**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n */\n RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id';\n\n /**\n * `error.code` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code';\n\n /**\n * `error.message` property of response if it is an error response.\n */\n RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message';\n\n /**\n * Whether this is a received or sent message.\n */\n MESSAGE_TYPE: 'message.type';\n\n /**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n */\n MESSAGE_ID: 'message.id';\n\n /**\n * Compressed size of the message in bytes.\n */\n MESSAGE_COMPRESSED_SIZE: 'message.compressed_size';\n\n /**\n * Uncompressed size of the message in bytes.\n */\n MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size';\n};\n\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexport const SemanticAttributes: SemanticAttributes =\n /*#__PURE__*/ createConstMap([\n TMP_AWS_LAMBDA_INVOKED_ARN,\n TMP_DB_SYSTEM,\n TMP_DB_CONNECTION_STRING,\n TMP_DB_USER,\n TMP_DB_JDBC_DRIVER_CLASSNAME,\n TMP_DB_NAME,\n TMP_DB_STATEMENT,\n TMP_DB_OPERATION,\n TMP_DB_MSSQL_INSTANCE_NAME,\n TMP_DB_CASSANDRA_KEYSPACE,\n TMP_DB_CASSANDRA_PAGE_SIZE,\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n TMP_DB_CASSANDRA_TABLE,\n TMP_DB_CASSANDRA_IDEMPOTENCE,\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n TMP_DB_CASSANDRA_COORDINATOR_ID,\n TMP_DB_CASSANDRA_COORDINATOR_DC,\n TMP_DB_HBASE_NAMESPACE,\n TMP_DB_REDIS_DATABASE_INDEX,\n TMP_DB_MONGODB_COLLECTION,\n TMP_DB_SQL_TABLE,\n TMP_EXCEPTION_TYPE,\n TMP_EXCEPTION_MESSAGE,\n TMP_EXCEPTION_STACKTRACE,\n TMP_EXCEPTION_ESCAPED,\n TMP_FAAS_TRIGGER,\n TMP_FAAS_EXECUTION,\n TMP_FAAS_DOCUMENT_COLLECTION,\n TMP_FAAS_DOCUMENT_OPERATION,\n TMP_FAAS_DOCUMENT_TIME,\n TMP_FAAS_DOCUMENT_NAME,\n TMP_FAAS_TIME,\n TMP_FAAS_CRON,\n TMP_FAAS_COLDSTART,\n TMP_FAAS_INVOKED_NAME,\n TMP_FAAS_INVOKED_PROVIDER,\n TMP_FAAS_INVOKED_REGION,\n TMP_NET_TRANSPORT,\n TMP_NET_PEER_IP,\n TMP_NET_PEER_PORT,\n TMP_NET_PEER_NAME,\n TMP_NET_HOST_IP,\n TMP_NET_HOST_PORT,\n TMP_NET_HOST_NAME,\n TMP_NET_HOST_CONNECTION_TYPE,\n TMP_NET_HOST_CONNECTION_SUBTYPE,\n TMP_NET_HOST_CARRIER_NAME,\n TMP_NET_HOST_CARRIER_MCC,\n TMP_NET_HOST_CARRIER_MNC,\n TMP_NET_HOST_CARRIER_ICC,\n TMP_PEER_SERVICE,\n TMP_ENDUSER_ID,\n TMP_ENDUSER_ROLE,\n TMP_ENDUSER_SCOPE,\n TMP_THREAD_ID,\n TMP_THREAD_NAME,\n TMP_CODE_FUNCTION,\n TMP_CODE_NAMESPACE,\n TMP_CODE_FILEPATH,\n TMP_CODE_LINENO,\n TMP_HTTP_METHOD,\n TMP_HTTP_URL,\n TMP_HTTP_TARGET,\n TMP_HTTP_HOST,\n TMP_HTTP_SCHEME,\n TMP_HTTP_STATUS_CODE,\n TMP_HTTP_FLAVOR,\n TMP_HTTP_USER_AGENT,\n TMP_HTTP_REQUEST_CONTENT_LENGTH,\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_SERVER_NAME,\n TMP_HTTP_ROUTE,\n TMP_HTTP_CLIENT_IP,\n TMP_AWS_DYNAMODB_TABLE_NAMES,\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n TMP_AWS_DYNAMODB_CONSISTENT_READ,\n TMP_AWS_DYNAMODB_PROJECTION,\n TMP_AWS_DYNAMODB_LIMIT,\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n TMP_AWS_DYNAMODB_INDEX_NAME,\n TMP_AWS_DYNAMODB_SELECT,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n TMP_AWS_DYNAMODB_TABLE_COUNT,\n TMP_AWS_DYNAMODB_SCAN_FORWARD,\n TMP_AWS_DYNAMODB_SEGMENT,\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n TMP_AWS_DYNAMODB_COUNT,\n TMP_AWS_DYNAMODB_SCANNED_COUNT,\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n TMP_MESSAGING_SYSTEM,\n TMP_MESSAGING_DESTINATION,\n TMP_MESSAGING_DESTINATION_KIND,\n TMP_MESSAGING_TEMP_DESTINATION,\n TMP_MESSAGING_PROTOCOL,\n TMP_MESSAGING_PROTOCOL_VERSION,\n TMP_MESSAGING_URL,\n TMP_MESSAGING_MESSAGE_ID,\n TMP_MESSAGING_CONVERSATION_ID,\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n TMP_MESSAGING_OPERATION,\n TMP_MESSAGING_CONSUMER_ID,\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n TMP_MESSAGING_KAFKA_CLIENT_ID,\n TMP_MESSAGING_KAFKA_PARTITION,\n TMP_MESSAGING_KAFKA_TOMBSTONE,\n TMP_RPC_SYSTEM,\n TMP_RPC_SERVICE,\n TMP_RPC_METHOD,\n TMP_RPC_GRPC_STATUS_CODE,\n TMP_RPC_JSONRPC_VERSION,\n TMP_RPC_JSONRPC_REQUEST_ID,\n TMP_RPC_JSONRPC_ERROR_CODE,\n TMP_RPC_JSONRPC_ERROR_MESSAGE,\n TMP_MESSAGE_TYPE,\n TMP_MESSAGE_ID,\n TMP_MESSAGE_COMPRESSED_SIZE,\n TMP_MESSAGE_UNCOMPRESSED_SIZE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nconst TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nconst TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nconst TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nconst TMP_DBSYSTEMVALUES_DB2 = 'db2';\nconst TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nconst TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nconst TMP_DBSYSTEMVALUES_HIVE = 'hive';\nconst TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nconst TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nconst TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nconst TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nconst TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nconst TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nconst TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nconst TMP_DBSYSTEMVALUES_EDB = 'edb';\nconst TMP_DBSYSTEMVALUES_CACHE = 'cache';\nconst TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nconst TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nconst TMP_DBSYSTEMVALUES_DERBY = 'derby';\nconst TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nconst TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nconst TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nconst TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nconst TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nconst TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nconst TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nconst TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nconst TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nconst TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nconst TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nconst TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nconst TMP_DBSYSTEMVALUES_H2 = 'h2';\nconst TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nconst TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nconst TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nconst TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nconst TMP_DBSYSTEMVALUES_REDIS = 'redis';\nconst TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nconst TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nconst TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nconst TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nconst TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nconst TMP_DBSYSTEMVALUES_GEODE = 'geode';\nconst TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nconst TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nconst TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n\n/**\n * Identifies the Values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport type DbSystemValues = {\n /** Some other SQL database. Fallback only. See notes. */\n OTHER_SQL: 'other_sql';\n\n /** Microsoft SQL Server. */\n MSSQL: 'mssql';\n\n /** MySQL. */\n MYSQL: 'mysql';\n\n /** Oracle Database. */\n ORACLE: 'oracle';\n\n /** IBM Db2. */\n DB2: 'db2';\n\n /** PostgreSQL. */\n POSTGRESQL: 'postgresql';\n\n /** Amazon Redshift. */\n REDSHIFT: 'redshift';\n\n /** Apache Hive. */\n HIVE: 'hive';\n\n /** Cloudscape. */\n CLOUDSCAPE: 'cloudscape';\n\n /** HyperSQL DataBase. */\n HSQLDB: 'hsqldb';\n\n /** Progress Database. */\n PROGRESS: 'progress';\n\n /** SAP MaxDB. */\n MAXDB: 'maxdb';\n\n /** SAP HANA. */\n HANADB: 'hanadb';\n\n /** Ingres. */\n INGRES: 'ingres';\n\n /** FirstSQL. */\n FIRSTSQL: 'firstsql';\n\n /** EnterpriseDB. */\n EDB: 'edb';\n\n /** InterSystems Caché. */\n CACHE: 'cache';\n\n /** Adabas (Adaptable Database System). */\n ADABAS: 'adabas';\n\n /** Firebird. */\n FIREBIRD: 'firebird';\n\n /** Apache Derby. */\n DERBY: 'derby';\n\n /** FileMaker. */\n FILEMAKER: 'filemaker';\n\n /** Informix. */\n INFORMIX: 'informix';\n\n /** InstantDB. */\n INSTANTDB: 'instantdb';\n\n /** InterBase. */\n INTERBASE: 'interbase';\n\n /** MariaDB. */\n MARIADB: 'mariadb';\n\n /** Netezza. */\n NETEZZA: 'netezza';\n\n /** Pervasive PSQL. */\n PERVASIVE: 'pervasive';\n\n /** PointBase. */\n POINTBASE: 'pointbase';\n\n /** SQLite. */\n SQLITE: 'sqlite';\n\n /** Sybase. */\n SYBASE: 'sybase';\n\n /** Teradata. */\n TERADATA: 'teradata';\n\n /** Vertica. */\n VERTICA: 'vertica';\n\n /** H2. */\n H2: 'h2';\n\n /** ColdFusion IMQ. */\n COLDFUSION: 'coldfusion';\n\n /** Apache Cassandra. */\n CASSANDRA: 'cassandra';\n\n /** Apache HBase. */\n HBASE: 'hbase';\n\n /** MongoDB. */\n MONGODB: 'mongodb';\n\n /** Redis. */\n REDIS: 'redis';\n\n /** Couchbase. */\n COUCHBASE: 'couchbase';\n\n /** CouchDB. */\n COUCHDB: 'couchdb';\n\n /** Microsoft Azure Cosmos DB. */\n COSMOSDB: 'cosmosdb';\n\n /** Amazon DynamoDB. */\n DYNAMODB: 'dynamodb';\n\n /** Neo4j. */\n NEO4J: 'neo4j';\n\n /** Apache Geode. */\n GEODE: 'geode';\n\n /** Elasticsearch. */\n ELASTICSEARCH: 'elasticsearch';\n\n /** Memcached. */\n MEMCACHED: 'memcached';\n\n /** CockroachDB. */\n COCKROACHDB: 'cockroachdb';\n};\n\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport const DbSystemValues: DbSystemValues =\n /*#__PURE__*/ createConstMap([\n TMP_DBSYSTEMVALUES_OTHER_SQL,\n TMP_DBSYSTEMVALUES_MSSQL,\n TMP_DBSYSTEMVALUES_MYSQL,\n TMP_DBSYSTEMVALUES_ORACLE,\n TMP_DBSYSTEMVALUES_DB2,\n TMP_DBSYSTEMVALUES_POSTGRESQL,\n TMP_DBSYSTEMVALUES_REDSHIFT,\n TMP_DBSYSTEMVALUES_HIVE,\n TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n TMP_DBSYSTEMVALUES_HSQLDB,\n TMP_DBSYSTEMVALUES_PROGRESS,\n TMP_DBSYSTEMVALUES_MAXDB,\n TMP_DBSYSTEMVALUES_HANADB,\n TMP_DBSYSTEMVALUES_INGRES,\n TMP_DBSYSTEMVALUES_FIRSTSQL,\n TMP_DBSYSTEMVALUES_EDB,\n TMP_DBSYSTEMVALUES_CACHE,\n TMP_DBSYSTEMVALUES_ADABAS,\n TMP_DBSYSTEMVALUES_FIREBIRD,\n TMP_DBSYSTEMVALUES_DERBY,\n TMP_DBSYSTEMVALUES_FILEMAKER,\n TMP_DBSYSTEMVALUES_INFORMIX,\n TMP_DBSYSTEMVALUES_INSTANTDB,\n TMP_DBSYSTEMVALUES_INTERBASE,\n TMP_DBSYSTEMVALUES_MARIADB,\n TMP_DBSYSTEMVALUES_NETEZZA,\n TMP_DBSYSTEMVALUES_PERVASIVE,\n TMP_DBSYSTEMVALUES_POINTBASE,\n TMP_DBSYSTEMVALUES_SQLITE,\n TMP_DBSYSTEMVALUES_SYBASE,\n TMP_DBSYSTEMVALUES_TERADATA,\n TMP_DBSYSTEMVALUES_VERTICA,\n TMP_DBSYSTEMVALUES_H2,\n TMP_DBSYSTEMVALUES_COLDFUSION,\n TMP_DBSYSTEMVALUES_CASSANDRA,\n TMP_DBSYSTEMVALUES_HBASE,\n TMP_DBSYSTEMVALUES_MONGODB,\n TMP_DBSYSTEMVALUES_REDIS,\n TMP_DBSYSTEMVALUES_COUCHBASE,\n TMP_DBSYSTEMVALUES_COUCHDB,\n TMP_DBSYSTEMVALUES_COSMOSDB,\n TMP_DBSYSTEMVALUES_DYNAMODB,\n TMP_DBSYSTEMVALUES_NEO4J,\n TMP_DBSYSTEMVALUES_GEODE,\n TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n TMP_DBSYSTEMVALUES_MEMCACHED,\n TMP_DBSYSTEMVALUES_COCKROACHDB,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ALL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_TWO =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_THREE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ANY =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL =\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n\n/**\n * Identifies the Values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport type DbCassandraConsistencyLevelValues = {\n /** all. */\n ALL: 'all';\n\n /** each_quorum. */\n EACH_QUORUM: 'each_quorum';\n\n /** quorum. */\n QUORUM: 'quorum';\n\n /** local_quorum. */\n LOCAL_QUORUM: 'local_quorum';\n\n /** one. */\n ONE: 'one';\n\n /** two. */\n TWO: 'two';\n\n /** three. */\n THREE: 'three';\n\n /** local_one. */\n LOCAL_ONE: 'local_one';\n\n /** any. */\n ANY: 'any';\n\n /** serial. */\n SERIAL: 'serial';\n\n /** local_serial. */\n LOCAL_SERIAL: 'local_serial';\n};\n\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues =\n /*#__PURE__*/ createConstMap([\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nconst TMP_FAASTRIGGERVALUES_HTTP = 'http';\nconst TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nconst TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nconst TMP_FAASTRIGGERVALUES_OTHER = 'other';\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n\n/**\n * Identifies the Values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport type FaasTriggerValues = {\n /** A response to some data source operation such as a database or filesystem read/write. */\n DATASOURCE: 'datasource';\n\n /** To provide an answer to an inbound HTTP request. */\n HTTP: 'http';\n\n /** A function is set to be executed when messages are sent to a messaging system. */\n PUBSUB: 'pubsub';\n\n /** A function is scheduled to be executed regularly. */\n TIMER: 'timer';\n\n /** If none of the others apply. */\n OTHER: 'other';\n};\n\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport const FaasTriggerValues: FaasTriggerValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_INSERT =\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_EDIT =\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_DELETE =\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n\n/**\n * Identifies the Values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport type FaasDocumentOperationValues = {\n /** When a new object is created. */\n INSERT: 'insert';\n\n /** When an object is modified. */\n EDIT: 'edit';\n\n /** When an object is deleted. */\n DELETE: 'delete';\n};\n\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport const FaasDocumentOperationValues: FaasDocumentOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD =\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_AZURE =\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport type FaasInvokedProviderValues = {\n /** Alibaba Cloud. */\n ALIBABA_CLOUD: 'alibaba_cloud';\n\n /** Amazon Web Services. */\n AWS: 'aws';\n\n /** Microsoft Azure. */\n AZURE: 'azure';\n\n /** Google Cloud Platform. */\n GCP: 'gcp';\n};\n\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport const FaasInvokedProviderValues: FaasInvokedProviderValues =\n /*#__PURE__*/ createConstMap([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nconst TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nconst TMP_NETTRANSPORTVALUES_IP = 'ip';\nconst TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nconst TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nconst TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nconst TMP_NETTRANSPORTVALUES_OTHER = 'other';\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n\n/**\n * Identifies the Values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport type NetTransportValues = {\n /** ip_tcp. */\n IP_TCP: 'ip_tcp';\n\n /** ip_udp. */\n IP_UDP: 'ip_udp';\n\n /** Another IP-based protocol. */\n IP: 'ip';\n\n /** Unix Domain socket. See below. */\n UNIX: 'unix';\n\n /** Named or anonymous pipe. See note below. */\n PIPE: 'pipe';\n\n /** In-process communication. */\n INPROC: 'inproc';\n\n /** Something else (non IP-based). */\n OTHER: 'other';\n};\n\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport const NetTransportValues: NetTransportValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETTRANSPORTVALUES_IP_TCP,\n TMP_NETTRANSPORTVALUES_IP_UDP,\n TMP_NETTRANSPORTVALUES_IP,\n TMP_NETTRANSPORTVALUES_UNIX,\n TMP_NETTRANSPORTVALUES_PIPE,\n TMP_NETTRANSPORTVALUES_INPROC,\n TMP_NETTRANSPORTVALUES_OTHER,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIFI =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIRED =\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_CELL =\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN =\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n\n/**\n * Identifies the Values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionTypeValues = {\n /** wifi. */\n WIFI: 'wifi';\n\n /** wired. */\n WIRED: 'wired';\n\n /** cell. */\n CELL: 'cell';\n\n /** unavailable. */\n UNAVAILABLE: 'unavailable';\n\n /** unknown. */\n UNKNOWN: 'unknown';\n};\n\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport const NetHostConnectionTypeValues: NetHostConnectionTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GSM =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NR =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA =\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n\n/**\n * Identifies the Values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionSubtypeValues = {\n /** GPRS. */\n GPRS: 'gprs';\n\n /** EDGE. */\n EDGE: 'edge';\n\n /** UMTS. */\n UMTS: 'umts';\n\n /** CDMA. */\n CDMA: 'cdma';\n\n /** EVDO Rel. 0. */\n EVDO_0: 'evdo_0';\n\n /** EVDO Rev. A. */\n EVDO_A: 'evdo_a';\n\n /** CDMA2000 1XRTT. */\n CDMA2000_1XRTT: 'cdma2000_1xrtt';\n\n /** HSDPA. */\n HSDPA: 'hsdpa';\n\n /** HSUPA. */\n HSUPA: 'hsupa';\n\n /** HSPA. */\n HSPA: 'hspa';\n\n /** IDEN. */\n IDEN: 'iden';\n\n /** EVDO Rev. B. */\n EVDO_B: 'evdo_b';\n\n /** LTE. */\n LTE: 'lte';\n\n /** EHRPD. */\n EHRPD: 'ehrpd';\n\n /** HSPAP. */\n HSPAP: 'hspap';\n\n /** GSM. */\n GSM: 'gsm';\n\n /** TD-SCDMA. */\n TD_SCDMA: 'td_scdma';\n\n /** IWLAN. */\n IWLAN: 'iwlan';\n\n /** 5G NR (New Radio). */\n NR: 'nr';\n\n /** 5G NRNSA (New Radio Non-Standalone). */\n NRNSA: 'nrnsa';\n\n /** LTE CA. */\n LTE_CA: 'lte_ca';\n};\n\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nconst TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nconst TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nconst TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nconst TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n\n/**\n * Identifies the Values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport type HttpFlavorValues = {\n /** HTTP 1.0. */\n HTTP_1_0: '1.0';\n\n /** HTTP 1.1. */\n HTTP_1_1: '1.1';\n\n /** HTTP 2. */\n HTTP_2_0: '2.0';\n\n /** SPDY protocol. */\n SPDY: 'SPDY';\n\n /** QUIC protocol. */\n QUIC: 'QUIC';\n};\n\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport const HttpFlavorValues: HttpFlavorValues = {\n HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_QUEUE =\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_TOPIC =\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n\n/**\n * Identifies the Values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport type MessagingDestinationKindValues = {\n /** A message sent to a queue. */\n QUEUE: 'queue';\n\n /** A message sent to a topic. */\n TOPIC: 'topic';\n};\n\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport const MessagingDestinationKindValues: MessagingDestinationKindValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nconst TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGINGOPERATIONVALUES_RECEIVE =\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGINGOPERATIONVALUES_PROCESS =\n TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n\n/**\n * Identifies the Values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport type MessagingOperationValues = {\n /** receive. */\n RECEIVE: 'receive';\n\n /** process. */\n PROCESS: 'process';\n};\n\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport const MessagingOperationValues: MessagingOperationValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nconst TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nconst TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nconst TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nconst TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nconst TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nconst TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_CANCELLED =\n TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNKNOWN =\n TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT =\n TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED =\n TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_NOT_FOUND =\n TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS =\n TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED =\n TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED =\n TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION =\n TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_ABORTED =\n TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE =\n TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_INTERNAL =\n TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_DATA_LOSS =\n TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED =\n TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n\n/**\n * Identifies the Values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport type RpcGrpcStatusCodeValues = {\n /** OK. */\n OK: 0;\n\n /** CANCELLED. */\n CANCELLED: 1;\n\n /** UNKNOWN. */\n UNKNOWN: 2;\n\n /** INVALID_ARGUMENT. */\n INVALID_ARGUMENT: 3;\n\n /** DEADLINE_EXCEEDED. */\n DEADLINE_EXCEEDED: 4;\n\n /** NOT_FOUND. */\n NOT_FOUND: 5;\n\n /** ALREADY_EXISTS. */\n ALREADY_EXISTS: 6;\n\n /** PERMISSION_DENIED. */\n PERMISSION_DENIED: 7;\n\n /** RESOURCE_EXHAUSTED. */\n RESOURCE_EXHAUSTED: 8;\n\n /** FAILED_PRECONDITION. */\n FAILED_PRECONDITION: 9;\n\n /** ABORTED. */\n ABORTED: 10;\n\n /** OUT_OF_RANGE. */\n OUT_OF_RANGE: 11;\n\n /** UNIMPLEMENTED. */\n UNIMPLEMENTED: 12;\n\n /** INTERNAL. */\n INTERNAL: 13;\n\n /** UNAVAILABLE. */\n UNAVAILABLE: 14;\n\n /** DATA_LOSS. */\n DATA_LOSS: 15;\n\n /** UNAUTHENTICATED. */\n UNAUTHENTICATED: 16;\n};\n\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport const RpcGrpcStatusCodeValues: RpcGrpcStatusCodeValues = {\n OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nconst TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n\n/**\n * Identifies the Values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport type MessageTypeValues = {\n /** sent. */\n SENT: 'SENT';\n\n /** received. */\n RECEIVED: 'RECEIVED';\n};\n\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport const MessageTypeValues: MessageTypeValues =\n /*#__PURE__*/ createConstMap([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n ]);\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n\n/**\n * This event describes a single exception.\n */\nexport const EVENT_EXCEPTION = 'exception' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\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// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions' as const;\n\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases' as const;\n\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests' as const;\n\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue' as const;\n\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration' as const;\n\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n * - Rejected by global or endpoint rate limiting policies\n * - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests' as const;\n\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts' as const;\n\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexport const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration' as const;\n\n/**\n * The number of .NET assemblies that are currently loaded.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies).\n */\nexport const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count' as const;\n\n/**\n * The number of exceptions that have been thrown in managed code.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception).\n */\nexport const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions' as const;\n\n/**\n * The number of garbage collections that have occurred since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation.\n */\nexport const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections' as const;\n\n/**\n * The *approximate* number of bytes allocated on the managed GC heap since the process has started. The returned value does not include any native allocations.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes).\n */\nexport const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated' as const;\n\n/**\n * The heap fragmentation, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes).\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size' as const;\n\n/**\n * The managed GC heap size (including fragmentation), as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes).\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size' as const;\n\n/**\n * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().TotalCommittedBytes`](https://learn.microsoft.com/dotnet/api/system.gcmemoryinfo.totalcommittedbytes). Committed virtual memory may be larger than the heap size because it includes both memory for storing existing objects (the heap size) and some extra memory that is ready to handle newly allocated objects in the future.\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size' as const;\n\n/**\n * The total amount of time paused in GC since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration).\n */\nexport const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time' as const;\n\n/**\n * The amount of time the JIT compiler has spent compiling methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime).\n */\nexport const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time' as const;\n\n/**\n * Count of bytes of intermediate language that have been compiled since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes).\n */\nexport const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size' as const;\n\n/**\n * The number of times the JIT compiler (re)compiled methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount).\n */\nexport const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods' as const;\n\n/**\n * The number of times there was contention when trying to acquire a monitor lock since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount).\n */\nexport const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions' as const;\n\n/**\n * The number of processors available to the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount).\n */\nexport const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count' as const;\n\n/**\n * CPU time used by the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing the corresponding processor time properties on [`System.Diagnostics.Process`](https://learn.microsoft.com/dotnet/api/system.diagnostics.process).\n */\nexport const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time' as const;\n\n/**\n * The number of bytes of physical memory mapped to the process context.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset).\n */\nexport const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set' as const;\n\n/**\n * The number of work items that are currently queued to be processed by the thread pool.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length' as const;\n\n/**\n * The number of thread pool threads that currently exist.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count' as const;\n\n/**\n * The number of work items that the thread pool has completed since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count' as const;\n\n/**\n * The number of timer instances that are currently active.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount).\n */\nexport const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count' as const;\n\n/**\n * Duration of HTTP client requests.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration' as const;\n\n/**\n * Duration of HTTP server requests.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration' as const;\n\n/**\n * Number of classes currently loaded.\n */\nexport const METRIC_JVM_CLASS_COUNT = 'jvm.class.count' as const;\n\n/**\n * Number of classes loaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded' as const;\n\n/**\n * Number of classes unloaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded' as const;\n\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count' as const;\n\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexport const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization' as const;\n\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport const METRIC_JVM_CPU_TIME = 'jvm.cpu.time' as const;\n\n/**\n * Duration of JVM garbage collection actions.\n */\nexport const METRIC_JVM_GC_DURATION = 'jvm.gc.duration' as const;\n\n/**\n * Measure of memory committed.\n */\nexport const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed' as const;\n\n/**\n * Measure of max obtainable memory.\n */\nexport const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit' as const;\n\n/**\n * Measure of memory used.\n */\nexport const METRIC_JVM_MEMORY_USED = 'jvm.memory.used' as const;\n\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc' as const;\n\n/**\n * Number of executing platform threads.\n */\nexport const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count' as const;\n\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections' as const;\n\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes' as const;\n\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration' as const;\n\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections' as const;\n\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests' as const;\n\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections' as const;\n\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration' as const;\n\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections' as const;\n\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections' as const;\n\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration' as const;\n\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Specifies the category of synthetic traffic, such as tests or bots.\n *\n * @note This attribute **MAY** be derived from the contents of the `user_agent.original` attribute. Components that populate the attribute are responsible for determining what they consider to be synthetic bot or test traffic. This attribute can either be set for self-identification purposes, or on telemetry detected to be generated as a result of a synthetic request. This attribute is useful for distinguishing between genuine client traffic and synthetic traffic generated by bots or tests.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_USER_AGENT_SYNTHETIC_TYPE =\n 'user_agent.synthetic.type' as const;\n\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = 'bot' as const;\n\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexport const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = 'test' as const;\n\n/**\n * Deprecated, use `client.address` instead.\n *\n * @example \"83.164.160.102\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `client.address`.\n */\nexport const ATTR_HTTP_CLIENT_IP = 'http.client_ip' as const;\n\n/**\n * Deprecated, use `network.protocol.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.protocol.name`.\n */\nexport const ATTR_HTTP_FLAVOR = 'http.flavor' as const;\n\n/**\n * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage.\n *\n * @example www.example.org\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage.\n */\nexport const ATTR_HTTP_HOST = 'http.host' as const;\n\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexport const ATTR_HTTP_METHOD = 'http.method' as const;\n\n/**\n * Deprecated, use `http.request.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.header.`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH =\n 'http.request_content_length' as const;\n\n/**\n * Deprecated, use `http.request.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.body.size`.\n */\nexport const ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.request_content_length_uncompressed' as const;\n\n/**\n * Deprecated, use `http.response.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.header.`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH =\n 'http.response_content_length' as const;\n\n/**\n * Deprecated, use `http.response.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replace by `http.response.body.size`.\n */\nexport const ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n 'http.response_content_length_uncompressed' as const;\n\n/**\n * Deprecated, use `url.scheme` instead.\n *\n * @example http\n * @example https\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.scheme` instead.\n */\nexport const ATTR_HTTP_SCHEME = 'http.scheme' as const;\n\n/**\n * Deprecated, use `server.address` instead.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_HTTP_SERVER_NAME = 'http.server_name' as const;\n\n/**\n * Deprecated, use `http.response.status_code` instead.\n *\n * @example 200\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.status_code`.\n */\nexport const ATTR_HTTP_STATUS_CODE = 'http.status_code' as const;\n\n/**\n * Deprecated, use `url.path` and `url.query` instead.\n *\n * @example /search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Split to `url.path` and `url.query.\n */\nexport const ATTR_HTTP_TARGET = 'http.target' as const;\n\n/**\n * Deprecated, use `url.full` instead.\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.full`.\n */\nexport const ATTR_HTTP_URL = 'http.url' as const;\n\n/**\n * Deprecated, use `user_agent.original` instead.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `user_agent.original`.\n */\nexport const ATTR_HTTP_USER_AGENT = 'http.user_agent' as const;\n\n/**\n * Deprecated, use `network.local.address`.\n *\n * @example \"192.168.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.local.address`.\n */\nexport const ATTR_NET_HOST_IP = 'net.host.ip' as const;\n\n/**\n * Deprecated, use `server.address`.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexport const ATTR_NET_HOST_NAME = 'net.host.name' as const;\n\n/**\n * Deprecated, use `server.port`.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port`.\n */\nexport const ATTR_NET_HOST_PORT = 'net.host.port' as const;\n\n/**\n * Deprecated, use `network.peer.address`.\n *\n * @example \"127.0.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.peer.address`.\n */\nexport const ATTR_NET_PEER_IP = 'net.peer.ip' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Deprecated, use `network.transport`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.transport`.\n */\nexport const ATTR_NET_TRANSPORT = 'net.transport' as const;\n\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_TCP = 'ip_tcp' as const;\n\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexport const NET_TRANSPORT_VALUE_IP_UDP = 'ip_udp' as const;\n\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexport const HTTP_FLAVOR_VALUE_HTTP_1_1 = '1.1' as const;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md\n */\nexport enum AttributeNames {\n HTTP_ERROR_NAME = 'http.error_name',\n HTTP_ERROR_MESSAGE = 'http.error_message',\n HTTP_STATUS_TEXT = 'http.status_text',\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type * as http from 'http';\nimport type * as https from 'https';\nimport type { get, IncomingMessage, request } from 'http';\nimport type * as url from 'url';\n\nexport type IgnoreMatcher = string | RegExp | ((url: string) => boolean);\nexport type HttpCallback = (res: IncomingMessage) => void;\nexport type RequestFunction = typeof request;\nexport type GetFunction = typeof get;\n\nexport type HttpCallbackOptional = HttpCallback | undefined;\n\n// from node 10+\nexport type RequestSignature = [http.RequestOptions, HttpCallbackOptional] &\n HttpCallback;\n\nexport type HttpRequestArgs = Array;\n\nexport type ParsedRequestOptions =\n | (http.RequestOptions & Partial)\n | http.RequestOptions;\nexport type Http = typeof http;\nexport type Https = typeof https;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Func = (...args: any[]) => T;\n\nexport interface Err extends Error {\n errno?: number;\n code?: string;\n path?: string;\n syscall?: string;\n stack?: string;\n}\n\n/**\n * Names of possible synthetic test sources.\n */\nexport const SYNTHETIC_TEST_NAMES = ['alwayson'];\n\n/**\n * Names of possible synthetic bot sources.\n */\nexport const SYNTHETIC_BOT_NAMES = ['googlebot', 'bingbot'];\n\n/**\n * REDACTED string used to replace sensitive information in URLs.\n */\nexport const STR_REDACTED = 'REDACTED';\n\n/**\n * List of URL query keys that are considered sensitive and whose value should be redacted.\n */\nexport const DEFAULT_QUERY_STRINGS_TO_REDACT = [\n 'sig',\n 'Signature',\n 'AWSAccessKeyId',\n 'X-Goog-Signature',\n] as const;\n","'use strict';\n\nvar util = require('util');\n\n/**\n * An error thrown by the parser on unexpected input.\n *\n * @constructor\n * @param {string} message The error message.\n * @param {string} input The unexpected input.\n * @public\n */\nfunction ParseError(message, input) {\n Error.captureStackTrace(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = message;\n this.input = input;\n}\n\nutil.inherits(ParseError, Error);\n\nmodule.exports = ParseError;\n","'use strict';\n\n/**\n * Check if a character is a delimiter as defined in section 3.2.6 of RFC 7230.\n *\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is a delimiter, else `false`.\n * @public\n */\nfunction isDelimiter(code) {\n return code === 0x22 // '\"'\n || code === 0x28 // '('\n || code === 0x29 // ')'\n || code === 0x2C // ','\n || code === 0x2F // '/'\n || code >= 0x3A && code <= 0x40 // ':', ';', '<', '=', '>', '?' '@'\n || code >= 0x5B && code <= 0x5D // '[', '\\', ']'\n || code === 0x7B // '{'\n || code === 0x7D; // '}'\n}\n\n/**\n * Check if a character is allowed in a token as defined in section 3.2.6\n * of RFC 7230.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is allowed, else `false`.\n * @public\n */\nfunction isTokenChar(code) {\n return code === 0x21 // '!'\n || code >= 0x23 && code <= 0x27 // '#', '$', '%', '&', '''\n || code === 0x2A // '*'\n || code === 0x2B // '+'\n || code === 0x2D // '-'\n || code === 0x2E // '.'\n || code >= 0x30 && code <= 0x39 // 0-9\n || code >= 0x41 && code <= 0x5A // A-Z\n || code >= 0x5E && code <= 0x7A // '^', '_', '`', a-z\n || code === 0x7C // '|'\n || code === 0x7E; // '~'\n}\n\n/**\n * Check if a character is a printable ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x20-7E range, else `false`.\n * @public\n */\nfunction isPrint(code) {\n return code >= 0x20 && code <= 0x7E;\n}\n\n/**\n * Check if a character is an extended ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x80-FF range, else `false`.\n * @public\n */\nfunction isExtended(code) {\n return code >= 0x80 && code <= 0xFF;\n}\n\nmodule.exports = {\n isDelimiter: isDelimiter,\n isTokenChar: isTokenChar,\n isExtended: isExtended,\n isPrint: isPrint\n};\n","'use strict';\n\nvar util = require('util');\n\nvar ParseError = require('./lib/error');\nvar ascii = require('./lib/ascii');\n\nvar isDelimiter = ascii.isDelimiter;\nvar isTokenChar = ascii.isTokenChar;\nvar isExtended = ascii.isExtended;\nvar isPrint = ascii.isPrint;\n\n/**\n * Unescape a string.\n *\n * @param {string} str The string to unescape.\n * @returns {string} A new unescaped string.\n * @private\n */\nfunction decode(str) {\n return str.replace(/\\\\(.)/g, '$1');\n}\n\n/**\n * Build an error message when an unexpected character is found.\n *\n * @param {string} header The header field value.\n * @param {number} position The position of the unexpected character.\n * @returns {string} The error message.\n * @private\n */\nfunction unexpectedCharacterMessage(header, position) {\n return util.format(\n \"Unexpected character '%s' at index %d\",\n header.charAt(position),\n position\n );\n}\n\n/**\n * Parse the `Forwarded` header field value into an array of objects.\n *\n * @param {string} header The header field value.\n * @returns {Object[]}\n * @public\n */\nfunction parse(header) {\n var mustUnescape = false;\n var isEscaping = false;\n var inQuotes = false;\n var forwarded = {};\n var output = [];\n var start = -1;\n var end = -1;\n var parameter;\n var code;\n\n for (var i = 0; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (parameter === undefined) {\n if (\n i !== 0 &&\n start === -1 &&\n (code === 0x20/*' '*/ || code === 0x09/*'\\t'*/)\n ) {\n continue;\n }\n\n if (isTokenChar(code)) {\n if (start === -1) start = i;\n } else if (code === 0x3D/*'='*/ && start !== -1) {\n parameter = header.slice(start, i).toLowerCase();\n start = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n if (isEscaping && (code === 0x09 || isPrint(code) || isExtended(code))) {\n isEscaping = false;\n } else if (isTokenChar(code)) {\n if (end !== -1) {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n\n if (start === -1) start = i;\n } else if (isDelimiter(code) || isExtended(code)) {\n if (inQuotes) {\n if (code === 0x22/*'\"'*/) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5C/*'\\'*/) {\n if (start === -1) start = i;\n isEscaping = mustUnescape = true;\n } else if (start === -1) {\n start = i;\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3D) {\n inQuotes = true;\n } else if (\n (code === 0x2C/*','*/|| code === 0x3B/*';'*/) &&\n (start !== -1 || end !== -1)\n ) {\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n if (code === 0x2C) {\n output.push(forwarded);\n forwarded = {};\n }\n\n parameter = undefined;\n start = end = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else if (code === 0x20 || code === 0x09) {\n if (end !== -1) continue;\n\n if (inQuotes) {\n if (start === -1) start = i;\n } else if (start !== -1) {\n end = i;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n }\n }\n\n if (\n parameter === undefined ||\n inQuotes ||\n (start === -1 && end === -1) ||\n code === 0x20 ||\n code === 0x09\n ) {\n throw new ParseError('Unexpected end of input', header);\n }\n\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n output.push(forwarded);\n return output;\n}\n\nmodule.exports = parse;\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n Attributes,\n Span,\n DiagLogger,\n AttributeValue,\n} from '@opentelemetry/api';\nimport { SpanStatusCode, context, SpanKind } from '@opentelemetry/api';\nimport {\n ATTR_CLIENT_ADDRESS,\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_REQUEST_METHOD_ORIGINAL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_ROUTE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n} from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_HTTP_CLIENT_IP,\n ATTR_HTTP_FLAVOR,\n ATTR_HTTP_HOST,\n ATTR_HTTP_METHOD,\n ATTR_HTTP_REQUEST_CONTENT_LENGTH,\n ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n ATTR_HTTP_RESPONSE_CONTENT_LENGTH,\n ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n ATTR_HTTP_SCHEME,\n ATTR_HTTP_SERVER_NAME,\n ATTR_HTTP_STATUS_CODE,\n ATTR_HTTP_TARGET,\n ATTR_HTTP_URL,\n ATTR_HTTP_USER_AGENT,\n ATTR_NET_HOST_IP,\n ATTR_NET_HOST_NAME,\n ATTR_NET_HOST_PORT,\n ATTR_NET_PEER_IP,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n ATTR_NET_TRANSPORT,\n NET_TRANSPORT_VALUE_IP_TCP,\n NET_TRANSPORT_VALUE_IP_UDP,\n ATTR_USER_AGENT_SYNTHETIC_TYPE,\n USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT,\n USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST,\n} from './semconv';\nimport type {\n IncomingHttpHeaders,\n IncomingMessage,\n OutgoingHttpHeader,\n OutgoingHttpHeaders,\n RequestOptions,\n ServerResponse,\n} from 'http';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport { SemconvStability } from '@opentelemetry/instrumentation';\nimport * as url from 'url';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type {\n Err,\n IgnoreMatcher,\n ParsedRequestOptions,\n} from './internal-types';\nimport { SYNTHETIC_BOT_NAMES, SYNTHETIC_TEST_NAMES } from './internal-types';\nimport {\n DEFAULT_QUERY_STRINGS_TO_REDACT,\n STR_REDACTED,\n} from './internal-types';\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nimport forwardedParse = require('forwarded-parse');\n\n/**\n * Get an absolute url\n */\nexport const getAbsoluteUrl = (\n requestUrl: ParsedRequestOptions | null,\n headers: IncomingHttpHeaders | OutgoingHttpHeaders,\n fallbackProtocol = 'http:',\n redactedQueryParams: string[] = Array.from(DEFAULT_QUERY_STRINGS_TO_REDACT)\n): string => {\n const reqUrlObject = requestUrl || {};\n const protocol = reqUrlObject.protocol || fallbackProtocol;\n const port = (reqUrlObject.port || '').toString();\n let path = reqUrlObject.path || '/';\n let host =\n reqUrlObject.host || reqUrlObject.hostname || headers.host || 'localhost';\n // if there is no port in host and there is a port\n // it should be displayed if it's not 80 and 443 (default ports)\n if (\n (host as string).indexOf(':') === -1 &&\n port &&\n port !== '80' &&\n port !== '443'\n ) {\n host += `:${port}`;\n }\n // Redact sensitive query parameters\n if (path.includes('?')) {\n try {\n const parsedUrl = new URL(path, 'http://localhost');\n const sensitiveParamsToRedact: string[] = redactedQueryParams || [];\n\n for (const sensitiveParam of sensitiveParamsToRedact) {\n if (parsedUrl.searchParams.get(sensitiveParam)) {\n parsedUrl.searchParams.set(sensitiveParam, STR_REDACTED);\n }\n }\n\n path = `${parsedUrl.pathname}${parsedUrl.search}`;\n } catch {\n // Ignore error, as the path was not a valid URL.\n }\n }\n const authPart = reqUrlObject.auth ? `${STR_REDACTED}:${STR_REDACTED}@` : '';\n return `${protocol}//${authPart}${host}${path}`;\n};\n\n/**\n * Parse status code from HTTP response. [More details](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-http.md#status)\n */\nexport const parseResponseStatus = (\n kind: SpanKind,\n statusCode?: number\n): SpanStatusCode => {\n const upperBound = kind === SpanKind.CLIENT ? 400 : 500;\n // 1xx, 2xx, 3xx are OK on client and server\n // 4xx is OK on server\n if (statusCode && statusCode >= 100 && statusCode < upperBound) {\n return SpanStatusCode.UNSET;\n }\n\n // All other codes are error\n return SpanStatusCode.ERROR;\n};\n\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param pattern Match pattern\n */\nexport const satisfiesPattern = (\n constant: string,\n pattern: IgnoreMatcher\n): boolean => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n } else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n } else if (typeof pattern === 'function') {\n return pattern(constant);\n } else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n\n/**\n * Sets the span with the error passed in params\n * @param {Span} span the span that need to be set\n * @param {Error} error error that will be set to span\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const setSpanWithError = (\n span: Span,\n error: Err,\n semconvStability: SemconvStability\n): void => {\n const message = error.message;\n\n if (semconvStability & SemconvStability.OLD) {\n span.setAttribute(AttributeNames.HTTP_ERROR_NAME, error.name);\n span.setAttribute(AttributeNames.HTTP_ERROR_MESSAGE, message);\n }\n\n if (semconvStability & SemconvStability.STABLE) {\n span.setAttribute(ATTR_ERROR_TYPE, error.name);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR, message });\n span.recordException(error);\n};\n/**\n * Adds attributes for request content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Request object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n */\nexport const setRequestContentLengthAttribute = (\n request: IncomingMessage,\n attributes: Attributes\n): void => {\n const length = getContentLength(request.headers);\n if (length === null) return;\n\n if (isCompressed(request.headers)) {\n attributes[ATTR_HTTP_REQUEST_CONTENT_LENGTH] = length;\n } else {\n attributes[ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\n\n/**\n * Adds attributes for response content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Response object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n *\n * @deprecated this is for an older version of semconv. It is retained for compatibility using OTEL_SEMCONV_STABILITY_OPT_IN\n */\nexport const setResponseContentLengthAttribute = (\n response: IncomingMessage,\n attributes: Attributes\n): void => {\n const length = getContentLength(response.headers);\n if (length === null) return;\n\n if (isCompressed(response.headers)) {\n attributes[ATTR_HTTP_RESPONSE_CONTENT_LENGTH] = length;\n } else {\n attributes[ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\n\nfunction getContentLength(\n headers: OutgoingHttpHeaders | IncomingHttpHeaders\n): number | null {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader as string, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nexport const isCompressed = (\n headers: OutgoingHttpHeaders | IncomingHttpHeaders\n): boolean => {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n};\n\n/**\n * Mimics Node.js conversion of URL strings to RequestOptions expected by\n * `http.request` and `https.request` APIs.\n *\n * See https://github.com/nodejs/node/blob/2505e217bba05fc581b572c685c5cf280a16c5a3/lib/internal/url.js#L1415-L1437\n *\n * @param stringUrl\n * @throws TypeError if the URL is not valid.\n */\nfunction stringUrlToHttpOptions(\n stringUrl: string\n): RequestOptions & { pathname: string } {\n // This is heavily inspired by Node.js handling of the same situation, trying\n // to follow it as closely as possible while keeping in mind that we only\n // deal with string URLs, not URL objects.\n const {\n hostname,\n pathname,\n port,\n username,\n password,\n search,\n protocol,\n hash,\n href,\n origin,\n host,\n } = new URL(stringUrl);\n\n const options: RequestOptions & {\n pathname: string;\n hash: string;\n search: string;\n href: string;\n origin: string;\n } = {\n protocol: protocol,\n hostname:\n hostname && hostname[0] === '[' ? hostname.slice(1, -1) : hostname,\n hash: hash,\n search: search,\n pathname: pathname,\n path: `${pathname || ''}${search || ''}`,\n href: href,\n origin: origin,\n host: host,\n };\n if (port !== '') {\n options.port = Number(port);\n }\n if (username || password) {\n options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(\n password\n )}`;\n }\n return options;\n}\n\n/**\n * Makes sure options is an url object\n * return an object with default value and parsed options\n * @param logger component logger\n * @param options original options for the request\n * @param [extraOptions] additional options for the request\n */\nexport const getRequestInfo = (\n logger: DiagLogger,\n options: url.URL | RequestOptions | string,\n extraOptions?: RequestOptions\n): {\n origin: string;\n pathname: string;\n method: string;\n invalidUrl: boolean;\n optionsParsed: RequestOptions;\n} => {\n let pathname: string;\n let origin: string;\n let optionsParsed: RequestOptions;\n let invalidUrl = false;\n if (typeof options === 'string') {\n try {\n const convertedOptions = stringUrlToHttpOptions(options);\n optionsParsed = convertedOptions;\n pathname = convertedOptions.pathname || '/';\n } catch (e) {\n invalidUrl = true;\n logger.verbose(\n 'Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:',\n e\n );\n // for backward compatibility with how url.parse() behaved.\n optionsParsed = {\n path: options,\n };\n pathname = optionsParsed.path || '/';\n }\n\n origin = `${optionsParsed.protocol || 'http:'}//${optionsParsed.host}`;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n } else if (options instanceof url.URL) {\n optionsParsed = {\n protocol: options.protocol,\n hostname:\n typeof options.hostname === 'string' && options.hostname.startsWith('[')\n ? options.hostname.slice(1, -1)\n : options.hostname,\n path: `${options.pathname || ''}${options.search || ''}`,\n };\n if (options.port !== '') {\n optionsParsed.port = Number(options.port);\n }\n if (options.username || options.password) {\n optionsParsed.auth = `${options.username}:${options.password}`;\n }\n pathname = options.pathname;\n origin = options.origin;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n } else {\n optionsParsed = Object.assign(\n { protocol: options.host ? 'http:' : undefined },\n options\n );\n\n const hostname =\n optionsParsed.host ||\n (optionsParsed.port != null\n ? `${optionsParsed.hostname}${optionsParsed.port}`\n : optionsParsed.hostname);\n origin = `${optionsParsed.protocol || 'http:'}//${hostname}`;\n\n pathname = (options as url.URL).pathname;\n if (!pathname && optionsParsed.path) {\n try {\n const parsedUrl = new URL(optionsParsed.path, origin);\n pathname = parsedUrl.pathname || '/';\n } catch {\n pathname = '/';\n }\n }\n }\n\n // some packages return method in lowercase..\n // ensure upperCase for consistency\n const method = optionsParsed.method\n ? optionsParsed.method.toUpperCase()\n : 'GET';\n\n return { origin, pathname, method, optionsParsed, invalidUrl };\n};\n\n/**\n * Makes sure options is of type string or object\n * @param options for the request\n */\nexport const isValidOptionsType = (options: unknown): boolean => {\n if (!options) {\n return false;\n }\n\n const type = typeof options;\n return type === 'string' || (type === 'object' && !Array.isArray(options));\n};\n\nexport const extractHostnameAndPort = (\n requestOptions: Pick<\n ParsedRequestOptions,\n 'hostname' | 'host' | 'port' | 'protocol'\n >\n): { hostname: string; port: number | string } => {\n if (requestOptions.hostname && requestOptions.port) {\n return { hostname: requestOptions.hostname, port: requestOptions.port };\n }\n const matches = requestOptions.host?.match(/^([^:/ ]+)(:\\d{1,5})?/) || null;\n const hostname =\n requestOptions.hostname || (matches === null ? 'localhost' : matches[1]);\n let port = requestOptions.port;\n if (!port) {\n if (matches && matches[2]) {\n // remove the leading \":\". The extracted port would be something like \":8080\"\n port = matches[2].substring(1);\n } else {\n port = requestOptions.protocol === 'https:' ? '443' : '80';\n }\n }\n return { hostname, port };\n};\n\n/**\n * Returns outgoing request attributes scoped to the options passed to the request\n * @param {ParsedRequestOptions} requestOptions the same options used to make the request\n * @param {{ component: string, hostname: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getOutgoingRequestAttributes = (\n requestOptions: ParsedRequestOptions,\n options: {\n component: string;\n hostname: string;\n port: string | number;\n hookAttributes?: Attributes;\n redactedQueryParams?: string[];\n },\n semconvStability: SemconvStability,\n enableSyntheticSourceDetection: boolean\n): Attributes => {\n const hostname = options.hostname;\n const port = options.port;\n const method = requestOptions.method ?? 'GET';\n const normalizedMethod = normalizeMethod(method);\n const headers = (requestOptions.headers || {}) as OutgoingHttpHeaders;\n const userAgent = headers['user-agent'];\n const urlFull = getAbsoluteUrl(\n requestOptions,\n headers,\n `${options.component}:`,\n options.redactedQueryParams\n );\n\n const oldAttributes: Attributes = {\n [ATTR_HTTP_URL]: urlFull,\n [ATTR_HTTP_METHOD]: method,\n [ATTR_HTTP_TARGET]: requestOptions.path || '/',\n [ATTR_NET_PEER_NAME]: hostname,\n [ATTR_HTTP_HOST]: headers.host ?? `${hostname}:${port}`,\n };\n\n const newAttributes: Attributes = {\n // Required attributes\n [ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [ATTR_SERVER_ADDRESS]: hostname,\n [ATTR_SERVER_PORT]: Number(port),\n [ATTR_URL_FULL]: urlFull,\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n // leaving out protocol version, it is not yet negotiated\n // leaving out protocol name, it is only required when protocol version is set\n // retries and redirects not supported\n\n // Opt-in attributes left off for now\n };\n\n // conditionally required if request method required case normalization\n if (method !== normalizedMethod) {\n newAttributes[ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[ATTR_USER_AGENT_SYNTHETIC_TYPE] = getSyntheticType(userAgent);\n }\n if (userAgent !== undefined) {\n oldAttributes[ATTR_HTTP_USER_AGENT] = userAgent;\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return Object.assign(newAttributes, options.hookAttributes);\n case SemconvStability.OLD:\n return Object.assign(oldAttributes, options.hookAttributes);\n }\n\n return Object.assign(oldAttributes, newAttributes, options.hookAttributes);\n};\n\n/**\n * Returns outgoing request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getOutgoingRequestMetricAttributes = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_METHOD] = spanAttributes[ATTR_HTTP_METHOD];\n metricAttributes[ATTR_NET_PEER_NAME] = spanAttributes[ATTR_NET_PEER_NAME];\n //TODO: http.url attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\n\n/**\n * Returns attributes related to the kind of HTTP protocol used\n * @param {string} [kind] Kind of HTTP protocol used: \"1.0\", \"1.1\", \"2\", \"SPDY\" or \"QUIC\".\n */\nexport const setAttributesFromHttpKind = (\n kind: string | undefined,\n attributes: Attributes\n): void => {\n if (kind) {\n attributes[ATTR_HTTP_FLAVOR] = kind;\n if (kind.toUpperCase() !== 'QUIC') {\n attributes[ATTR_NET_TRANSPORT] = NET_TRANSPORT_VALUE_IP_TCP;\n } else {\n attributes[ATTR_NET_TRANSPORT] = NET_TRANSPORT_VALUE_IP_UDP;\n }\n }\n};\n\n/**\n * Returns the type of synthetic source based on the user agent\n * @param {OutgoingHttpHeader} userAgent the user agent string\n */\nconst getSyntheticType = (\n userAgent: OutgoingHttpHeader\n): AttributeValue | undefined => {\n const userAgentString: string = String(userAgent).toLowerCase();\n for (const name of SYNTHETIC_TEST_NAMES) {\n if (userAgentString.includes(name)) {\n return USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST;\n }\n }\n for (const name of SYNTHETIC_BOT_NAMES) {\n if (userAgentString.includes(name)) {\n return USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT;\n }\n }\n return;\n};\n\n/**\n * Returns outgoing request attributes scoped to the response data\n * @param {IncomingMessage} response the response object\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getOutgoingRequestAttributesOnResponse = (\n response: IncomingMessage,\n semconvStability: SemconvStability\n): Attributes => {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n const oldAttributes: Attributes = {};\n const stableAttributes: Attributes = {};\n\n if (statusCode != null) {\n stableAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] = statusCode;\n }\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n oldAttributes[ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[ATTR_NET_PEER_PORT] = remotePort;\n\n // Recommended\n stableAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n stableAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n stableAttributes[ATTR_NETWORK_PROTOCOL_VERSION] = response.httpVersion;\n }\n setResponseContentLengthAttribute(response, oldAttributes);\n\n if (statusCode) {\n oldAttributes[ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames.HTTP_STATUS_TEXT] = (\n statusMessage || ''\n ).toUpperCase();\n }\n\n setAttributesFromHttpKind(httpVersion, oldAttributes);\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return stableAttributes;\n case SemconvStability.OLD:\n return oldAttributes;\n }\n\n return Object.assign(oldAttributes, stableAttributes);\n};\n\n/**\n * Returns outgoing request Metric attributes scoped to the response data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getOutgoingRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_NET_PEER_PORT] = spanAttributes[ATTR_NET_PEER_PORT];\n metricAttributes[ATTR_HTTP_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_STATUS_CODE];\n metricAttributes[ATTR_HTTP_FLAVOR] = spanAttributes[ATTR_HTTP_FLAVOR];\n\n return metricAttributes;\n};\n\nexport const getOutgoingStableRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n\n if (spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n metricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n if (spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\n\nfunction parseHostHeader(\n hostHeader: string,\n proto?: string\n): { host: string; port?: string } {\n const parts = hostHeader.split(':');\n\n // no semicolon implies ipv4 dotted syntax or host name without port\n // x.x.x.x\n // example.com\n if (parts.length === 1) {\n if (proto === 'http') {\n return { host: parts[0], port: '80' };\n }\n\n if (proto === 'https') {\n return { host: parts[0], port: '443' };\n }\n\n return { host: parts[0] };\n }\n\n // single semicolon implies ipv4 dotted syntax or host name with port\n // x.x.x.x:yyyy\n // example.com:yyyy\n if (parts.length === 2) {\n return {\n host: parts[0],\n port: parts[1],\n };\n }\n\n // more than 2 parts implies ipv6 syntax with multiple colons\n // [x:x:x:x:x:x:x:x]\n // [x:x:x:x:x:x:x:x]:yyyy\n if (parts[0].startsWith('[')) {\n if (parts[parts.length - 1].endsWith(']')) {\n if (proto === 'http') {\n return { host: hostHeader, port: '80' };\n }\n\n if (proto === 'https') {\n return { host: hostHeader, port: '443' };\n }\n } else if (parts[parts.length - 2].endsWith(']')) {\n return {\n host: parts.slice(0, -1).join(':'),\n port: parts[parts.length - 1],\n };\n }\n }\n\n // if nothing above matches just return the host header\n return { host: hostHeader };\n}\n\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nfunction getServerAddress(\n request: IncomingMessage,\n component: 'http' | 'https'\n): { host: string; port?: string } | null {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.host) {\n return parseHostHeader(entry.host, entry.proto);\n }\n }\n }\n\n const xForwardedHost = request.headers['x-forwarded-host'];\n if (typeof xForwardedHost === 'string') {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(\n xForwardedHost,\n request.headers['x-forwarded-proto']\n );\n }\n\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(\n xForwardedHost,\n request.headers['x-forwarded-proto'][0]\n );\n }\n\n return parseHostHeader(xForwardedHost);\n } else if (\n Array.isArray(xForwardedHost) &&\n typeof xForwardedHost[0] === 'string' &&\n xForwardedHost[0].length > 0\n ) {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(\n xForwardedHost[0],\n request.headers['x-forwarded-proto']\n );\n }\n\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(\n xForwardedHost[0],\n request.headers['x-forwarded-proto'][0]\n );\n }\n\n return parseHostHeader(xForwardedHost[0]);\n }\n\n const host = request.headers['host'];\n if (typeof host === 'string' && host.length > 0) {\n return parseHostHeader(host, component);\n }\n\n return null;\n}\n\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nexport function getRemoteClientAddress(\n request: IncomingMessage\n): string | null {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.for) {\n return removePortFromAddress(entry.for);\n }\n }\n }\n\n const xForwardedFor = request.headers['x-forwarded-for'];\n if (xForwardedFor) {\n let xForwardedForVal;\n if (typeof xForwardedFor === 'string') {\n xForwardedForVal = xForwardedFor;\n } else if (Array.isArray(xForwardedFor)) {\n xForwardedForVal = xForwardedFor[0];\n }\n\n if (typeof xForwardedForVal === 'string') {\n xForwardedForVal = xForwardedForVal.split(',')[0].trim();\n return removePortFromAddress(xForwardedForVal);\n }\n }\n\n const remote = request.socket.remoteAddress;\n if (remote) {\n return remote;\n }\n\n return null;\n}\n\nfunction removePortFromAddress(input: string): string {\n // This function can be replaced with SocketAddress.parse() once the minimum\n // supported Node.js version allows it.\n try {\n const { hostname: address } = new URL(`http://${input}`);\n\n if (address.startsWith('[') && address.endsWith(']')) {\n return address.slice(1, -1);\n }\n\n return address;\n } catch {\n return input;\n }\n}\n\nfunction getInfoFromIncomingMessage(\n component: 'http' | 'https',\n request: IncomingMessage,\n logger: DiagLogger\n): { pathname?: string; search?: string; toString: () => string } {\n try {\n if (request.headers.host) {\n return new URL(\n request.url ?? '/',\n `${component}://${request.headers.host}`\n );\n } else {\n const unsafeParsedUrl = new URL(\n request.url ?? '/',\n // using localhost as a workaround to still use the URL constructor for parsing\n `${component}://localhost`\n );\n // since we use localhost as a workaround, ensure we hide the rest of the properties to avoid\n // our workaround leaking though.\n return {\n pathname: unsafeParsedUrl.pathname,\n search: unsafeParsedUrl.search,\n toString: function () {\n // we cannot use the result of unsafeParsedUrl.toString as it's potentially wrong.\n return unsafeParsedUrl.pathname + unsafeParsedUrl.search;\n },\n };\n }\n } catch (e) {\n // something is wrong, use undefined - this *should* never happen, logging\n // for troubleshooting in case it does happen.\n logger.verbose('Unable to get URL from request', e);\n return {};\n }\n}\n\n/**\n * Returns incoming request attributes scoped to the request data\n * @param {IncomingMessage} request the request object\n * @param {{ component: string, serverName?: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nexport const getIncomingRequestAttributes = (\n request: IncomingMessage,\n options: {\n component: 'http' | 'https';\n serverName?: string;\n hookAttributes?: Attributes;\n semconvStability: SemconvStability;\n enableSyntheticSourceDetection: boolean;\n },\n logger: DiagLogger\n): Attributes => {\n const {\n component,\n enableSyntheticSourceDetection,\n hookAttributes,\n semconvStability,\n serverName,\n } = options;\n const { headers, httpVersion, method } = request;\n const { host, 'user-agent': userAgent, 'x-forwarded-for': ips } = headers;\n const parsedUrl = getInfoFromIncomingMessage(component, request, logger);\n let newAttributes: Attributes;\n let oldAttributes: Attributes;\n\n if (semconvStability !== SemconvStability.OLD) {\n // Stable attributes are used.\n const normalizedMethod = normalizeMethod(method);\n const serverAddress = getServerAddress(request, component);\n const remoteClientAddress = getRemoteClientAddress(request);\n\n newAttributes = {\n [ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [ATTR_URL_SCHEME]: component,\n [ATTR_SERVER_ADDRESS]: serverAddress?.host,\n [ATTR_NETWORK_PEER_ADDRESS]: request.socket.remoteAddress,\n [ATTR_NETWORK_PEER_PORT]: request.socket.remotePort,\n [ATTR_NETWORK_PROTOCOL_VERSION]: request.httpVersion,\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n };\n\n if (parsedUrl.pathname != null) {\n newAttributes[ATTR_URL_PATH] = parsedUrl.pathname;\n }\n\n if (parsedUrl.search) {\n // Remove leading '?' from URL search (https://developer.mozilla.org/en-US/docs/Web/API/URL/search).\n newAttributes[ATTR_URL_QUERY] = parsedUrl.search.slice(1);\n }\n\n if (remoteClientAddress != null) {\n newAttributes[ATTR_CLIENT_ADDRESS] = remoteClientAddress;\n }\n\n if (serverAddress?.port != null) {\n newAttributes[ATTR_SERVER_PORT] = Number(serverAddress.port);\n }\n\n // Conditionally required if request method required case normalization.\n if (method !== normalizedMethod) {\n newAttributes[ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[ATTR_USER_AGENT_SYNTHETIC_TYPE] =\n getSyntheticType(userAgent);\n }\n }\n\n if (semconvStability !== SemconvStability.STABLE) {\n // Old attributes are used.\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n oldAttributes = {\n [ATTR_HTTP_URL]: parsedUrl.toString(),\n [ATTR_HTTP_HOST]: host,\n [ATTR_NET_HOST_NAME]: hostname,\n [ATTR_HTTP_METHOD]: method,\n [ATTR_HTTP_SCHEME]: component,\n };\n\n if (typeof ips === 'string') {\n oldAttributes[ATTR_HTTP_CLIENT_IP] = ips.split(',')[0];\n }\n\n if (typeof serverName === 'string') {\n oldAttributes[ATTR_HTTP_SERVER_NAME] = serverName;\n }\n\n if (parsedUrl.pathname) {\n oldAttributes[ATTR_HTTP_TARGET] =\n parsedUrl.pathname + parsedUrl.search || '/';\n }\n\n if (userAgent !== undefined) {\n oldAttributes[ATTR_HTTP_USER_AGENT] = userAgent;\n }\n\n setRequestContentLengthAttribute(request, oldAttributes);\n setAttributesFromHttpKind(httpVersion, oldAttributes);\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return Object.assign(newAttributes!, hookAttributes);\n case SemconvStability.OLD:\n return Object.assign(oldAttributes!, hookAttributes);\n default:\n return Object.assign(oldAttributes!, newAttributes!, hookAttributes);\n }\n};\n\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n * @param {{ component: string }} options used to pass data needed to create attributes\n */\nexport const getIncomingRequestMetricAttributes = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_SCHEME] = spanAttributes[ATTR_HTTP_SCHEME];\n metricAttributes[ATTR_HTTP_METHOD] = spanAttributes[ATTR_HTTP_METHOD];\n metricAttributes[ATTR_NET_HOST_NAME] = spanAttributes[ATTR_NET_HOST_NAME];\n metricAttributes[ATTR_HTTP_FLAVOR] = spanAttributes[ATTR_HTTP_FLAVOR];\n //TODO: http.target attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\n\n/**\n * Returns incoming request attributes scoped to the response data\n * @param {(ServerResponse & { socket: Socket; })} response the response object\n */\nexport const getIncomingRequestAttributesOnResponse = (\n request: IncomingMessage,\n response: ServerResponse,\n semconvStability: SemconvStability\n): Attributes => {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n\n const newAttributes: Attributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n const oldAttributes: Attributes = {};\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n oldAttributes[ATTR_NET_HOST_IP] = localAddress;\n oldAttributes[ATTR_NET_HOST_PORT] = localPort;\n oldAttributes[ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[ATTR_NET_PEER_PORT] = remotePort;\n }\n oldAttributes[ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames.HTTP_STATUS_TEXT] = (\n statusMessage || ''\n ).toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n oldAttributes[ATTR_HTTP_ROUTE] = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = rpcMetadata.route;\n }\n\n switch (semconvStability) {\n case SemconvStability.STABLE:\n return newAttributes;\n case SemconvStability.OLD:\n return oldAttributes;\n }\n\n return Object.assign(oldAttributes, newAttributes);\n};\n\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getIncomingRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n metricAttributes[ATTR_HTTP_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_STATUS_CODE];\n metricAttributes[ATTR_NET_HOST_PORT] = spanAttributes[ATTR_NET_HOST_PORT];\n if (spanAttributes[ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[ATTR_HTTP_ROUTE] = spanAttributes[ATTR_HTTP_ROUTE];\n }\n return metricAttributes;\n};\n\n/**\n * Returns incoming stable request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nexport const getIncomingStableRequestMetricAttributesOnResponse = (\n spanAttributes: Attributes\n): Attributes => {\n const metricAttributes: Attributes = {};\n if (spanAttributes[ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[ATTR_HTTP_ROUTE] = spanAttributes[ATTR_HTTP_ROUTE];\n }\n\n // required if and only if one was sent, same as span requirement\n if (spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\n\nexport function headerCapture(\n type: 'request' | 'response',\n headers: string[],\n semconvStability: SemconvStability\n) {\n const normalizedHeaders = new Map();\n for (let i = 0, len = headers.length; i < len; i++) {\n const capturedHeader = headers[i].toLowerCase();\n if (semconvStability & SemconvStability.STABLE) {\n normalizedHeaders.set(capturedHeader, capturedHeader);\n } else {\n // In old semconv, the header name converted hypen to underscore, e.g.:\n // `http.request.header.content_length`.\n normalizedHeaders.set(\n capturedHeader,\n capturedHeader.replaceAll('-', '_')\n );\n }\n }\n\n return (\n getHeader: (key: string) => undefined | string | string[] | number\n ): Attributes => {\n const attributes: Attributes = {};\n for (const capturedHeader of normalizedHeaders.keys()) {\n const value = getHeader(capturedHeader);\n\n if (value === undefined) {\n continue;\n }\n\n const normalizedHeader = normalizedHeaders.get(capturedHeader);\n const key = `http.${type}.header.${normalizedHeader}`;\n\n if (typeof value === 'string') {\n attributes[key] = [value];\n } else if (Array.isArray(value)) {\n attributes[key] = value;\n } else {\n attributes[key] = [value];\n }\n }\n return attributes;\n };\n}\n\nconst KNOWN_METHODS = new Set([\n // methods from https://www.rfc-editor.org/rfc/rfc9110.html#name-methods\n 'GET',\n 'HEAD',\n 'POST',\n 'PUT',\n 'DELETE',\n 'CONNECT',\n 'OPTIONS',\n 'TRACE',\n\n // PATCH from https://www.rfc-editor.org/rfc/rfc5789.html\n 'PATCH',\n\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n 'QUERY',\n]);\n\nfunction normalizeMethod(method?: string | null) {\n if (method == null) {\n return 'GET';\n }\n\n const upper = method.toUpperCase();\n if (KNOWN_METHODS.has(upper)) {\n return upper;\n }\n\n return '_OTHER';\n}\n\nfunction parseForwardedHeader(header: string): Record[] {\n try {\n return forwardedParse(header);\n } catch {\n return [];\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n HrTime,\n Span,\n SpanOptions,\n SpanStatus,\n Histogram,\n Attributes,\n} from '@opentelemetry/api';\nimport {\n context,\n INVALID_SPAN_CONTEXT,\n propagation,\n ROOT_CONTEXT,\n SpanKind,\n SpanStatusCode,\n trace,\n ValueType,\n} from '@opentelemetry/api';\nimport type { RPCMetadata } from '@opentelemetry/core';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n suppressTracing,\n RPCType,\n setRPCMetadata,\n} from '@opentelemetry/core';\nimport type * as http from 'http';\nimport type * as https from 'https';\nimport type { Socket } from 'net';\nimport * as url from 'url';\nimport type { HttpInstrumentationConfig } from './types';\nimport { VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n SemconvStability,\n semconvStabilityFromStr,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { errorMonitor } from 'events';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_HTTP_ROUTE,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_SCHEME,\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n METRIC_HTTP_SERVER_REQUEST_DURATION,\n} from '@opentelemetry/semantic-conventions';\nimport {\n extractHostnameAndPort,\n getIncomingRequestAttributes,\n getIncomingRequestAttributesOnResponse,\n getIncomingRequestMetricAttributes,\n getIncomingRequestMetricAttributesOnResponse,\n getIncomingStableRequestMetricAttributesOnResponse,\n getOutgoingRequestAttributes,\n getOutgoingRequestAttributesOnResponse,\n getOutgoingRequestMetricAttributes,\n getOutgoingRequestMetricAttributesOnResponse,\n getOutgoingStableRequestMetricAttributesOnResponse,\n getRequestInfo,\n headerCapture,\n isValidOptionsType,\n parseResponseStatus,\n setSpanWithError,\n} from './utils';\nimport type { Err, Func, Http, HttpRequestArgs, Https } from './internal-types';\n\n/**\n * `node:http` and `node:https` instrumentation for OpenTelemetry\n */\nexport class HttpInstrumentation extends InstrumentationBase {\n /** keep track on spans not ended */\n private readonly _spanNotEnded: WeakSet = new WeakSet();\n private _headerCapture;\n private _httpPatched: boolean = false;\n private _httpsPatched: boolean = false;\n declare private _oldHttpServerDurationHistogram: Histogram;\n declare private _stableHttpServerDurationHistogram: Histogram;\n declare private _oldHttpClientDurationHistogram: Histogram;\n declare private _stableHttpClientDurationHistogram: Histogram;\n\n private _semconvStability: SemconvStability = SemconvStability.OLD;\n\n constructor(config: HttpInstrumentationConfig = {}) {\n super('@opentelemetry/instrumentation-http', VERSION, config);\n this._semconvStability = semconvStabilityFromStr(\n 'http',\n process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n );\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n\n protected override _updateMetricInstruments() {\n this._oldHttpServerDurationHistogram = this.meter.createHistogram(\n 'http.server.duration',\n {\n description: 'Measures the duration of inbound HTTP requests.',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n }\n );\n this._oldHttpClientDurationHistogram = this.meter.createHistogram(\n 'http.client.duration',\n {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 'ms',\n valueType: ValueType.DOUBLE,\n }\n );\n this._stableHttpServerDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_SERVER_REQUEST_DURATION,\n {\n description: 'Duration of HTTP server requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n this._stableHttpClientDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n {\n description: 'Duration of HTTP client requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n }\n\n private _recordServerDuration(\n durationMs: number,\n oldAttributes: Attributes,\n stableAttributes: Attributes\n ) {\n if (this._semconvStability & SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpServerDurationHistogram.record(durationMs, oldAttributes);\n }\n\n if (this._semconvStability & SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpServerDurationHistogram.record(\n durationMs / 1000,\n stableAttributes\n );\n }\n }\n\n private _recordClientDuration(\n durationMs: number,\n oldAttributes: Attributes,\n stableAttributes: Attributes\n ) {\n if (this._semconvStability & SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpClientDurationHistogram.record(durationMs, oldAttributes);\n }\n\n if (this._semconvStability & SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpClientDurationHistogram.record(\n durationMs / 1000,\n stableAttributes\n );\n }\n }\n\n override setConfig(config: HttpInstrumentationConfig = {}): void {\n super.setConfig(config);\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n\n init(): [\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleDefinition,\n ] {\n return [this._getHttpsInstrumentation(), this._getHttpInstrumentation()];\n }\n\n private _getHttpInstrumentation() {\n return new InstrumentationNodeModuleDefinition(\n 'http',\n ['*'],\n (moduleExports: Http): Http => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpPatched) {\n return moduleExports;\n }\n this._httpPatched = true;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = (moduleExports as any)[Symbol.toStringTag] === 'Module';\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(\n moduleExports,\n 'request',\n this._getPatchOutgoingRequestFunction('http')\n ) as unknown as Func;\n const patchedGet = this._wrap(\n moduleExports,\n 'get',\n this._getPatchOutgoingGetFunction(patchedRequest)\n );\n if (isESM) {\n // To handle `import http from 'http'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(\n moduleExports.Server.prototype,\n 'emit',\n this._getPatchIncomingRequestFunction('http')\n );\n }\n return moduleExports;\n },\n (moduleExports: Http) => {\n this._httpPatched = false;\n if (moduleExports === undefined) return;\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n }\n );\n }\n\n private _getHttpsInstrumentation() {\n return new InstrumentationNodeModuleDefinition(\n 'https',\n ['*'],\n (moduleExports: Https): Https => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpsPatched) {\n return moduleExports;\n }\n this._httpsPatched = true;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = (moduleExports as any)[Symbol.toStringTag] === 'Module';\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(\n moduleExports,\n 'request',\n this._getPatchHttpsOutgoingRequestFunction('https')\n ) as unknown as Func;\n const patchedGet = this._wrap(\n moduleExports,\n 'get',\n this._getPatchHttpsOutgoingGetFunction(patchedRequest)\n );\n if (isESM) {\n // To handle `import https from 'https'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports as any).default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(\n moduleExports.Server.prototype,\n 'emit',\n this._getPatchIncomingRequestFunction('https')\n );\n }\n return moduleExports;\n },\n (moduleExports: Https) => {\n this._httpsPatched = false;\n if (moduleExports === undefined) return;\n\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n }\n );\n }\n\n /**\n * Creates spans for incoming requests, restoring spans' context if applied.\n */\n private _getPatchIncomingRequestFunction(component: 'http' | 'https') {\n return (\n original: (event: string, ...args: unknown[]) => boolean\n ): ((this: unknown, event: string, ...args: unknown[]) => boolean) => {\n return this._incomingRequestFunction(component, original);\n };\n }\n\n /**\n * Creates spans for outgoing requests, sending spans' context for distributed\n * tracing.\n */\n private _getPatchOutgoingRequestFunction(component: 'http' | 'https') {\n return (original: Func): Func => {\n return this._outgoingRequestFunction(component, original);\n };\n }\n\n private _getPatchOutgoingGetFunction(\n clientRequest: (\n options: http.RequestOptions | string | url.URL,\n ...args: HttpRequestArgs\n ) => http.ClientRequest\n ) {\n return (_original: Func): Func => {\n // Re-implement http.get. This needs to be done (instead of using\n // getPatchOutgoingRequestFunction to patch it) because we need to\n // set the trace context header before the returned http.ClientRequest is\n // ended. The Node.js docs state that the only differences between\n // request and get are that (1) get defaults to the HTTP GET method and\n // (2) the returned request object is ended immediately. The former is\n // already true (at least in supported Node versions up to v10), so we\n // simply follow the latter. Ref:\n // https://nodejs.org/dist/latest/docs/api/http.html#http_http_get_options_callback\n // https://github.com/googleapis/cloud-trace-nodejs/blob/master/src/instrumentations/instrumentation-http.ts#L198\n return function outgoingGetRequest<\n T extends http.RequestOptions | string | url.URL,\n >(options: T, ...args: HttpRequestArgs): http.ClientRequest {\n const req = clientRequest(options, ...args);\n req.end();\n return req;\n };\n };\n }\n\n /** Patches HTTPS outgoing requests */\n private _getPatchHttpsOutgoingRequestFunction(component: 'http' | 'https') {\n return (original: Func): Func => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: https.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ): http.ClientRequest {\n // Makes sure options will have default HTTPS parameters\n if (\n component === 'https' &&\n typeof options === 'object' &&\n options?.constructor?.name !== 'URL'\n ) {\n options = Object.assign({}, options);\n instrumentation._setDefaultOptions(options);\n }\n return instrumentation._getPatchOutgoingRequestFunction(component)(\n original\n )(options, ...args);\n };\n };\n }\n\n private _setDefaultOptions(options: https.RequestOptions) {\n options.protocol = options.protocol || 'https:';\n options.port = options.port || 443;\n }\n\n /** Patches HTTPS outgoing get requests */\n private _getPatchHttpsOutgoingGetFunction(\n clientRequest: (\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: http.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ) => http.ClientRequest\n ) {\n return (original: Func): Func => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options: https.RequestOptions | string | URL,\n ...args: HttpRequestArgs\n ): http.ClientRequest {\n return instrumentation._getPatchOutgoingGetFunction(clientRequest)(\n original\n )(options, ...args);\n };\n };\n }\n\n /**\n * Attach event listeners to a client request to end span and add span attributes.\n *\n * @param request The original request object.\n * @param span representing the current operation\n * @param startTime representing the start time of the request to calculate duration in Metric\n * @param oldMetricAttributes metric attributes for old semantic conventions\n * @param stableMetricAttributes metric attributes for new semantic conventions\n */\n private _traceClientRequest(\n request: http.ClientRequest,\n span: Span,\n startTime: HrTime,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes\n ): http.ClientRequest {\n if (this.getConfig().requestHook) {\n this._callRequestHook(span, request);\n }\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\n /*\n * User 'response' event listeners can be added before our listener,\n * force our listener to be the first, so response emitter is bound\n * before any user listeners are added to it.\n */\n request.prependListener(\n 'response',\n (response: http.IncomingMessage & { aborted?: boolean }) => {\n this._diag.debug('outgoingRequest on response()');\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n const responseAttributes = getOutgoingRequestAttributesOnResponse(\n response,\n this._semconvStability\n );\n span.setAttributes(responseAttributes);\n oldMetricAttributes = Object.assign(\n oldMetricAttributes,\n getOutgoingRequestMetricAttributesOnResponse(responseAttributes)\n );\n stableMetricAttributes = Object.assign(\n stableMetricAttributes,\n getOutgoingStableRequestMetricAttributesOnResponse(responseAttributes)\n );\n\n if (this.getConfig().responseHook) {\n this._callResponseHook(span, response);\n }\n\n span.setAttributes(\n this._headerCapture.client.captureRequestHeaders(header =>\n request.getHeader(header)\n )\n );\n span.setAttributes(\n this._headerCapture.client.captureResponseHeaders(\n header => response.headers[header]\n )\n );\n\n context.bind(context.active(), response);\n\n const endHandler = () => {\n this._diag.debug('outgoingRequest on end()');\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n let status: SpanStatus;\n\n if (response.aborted && !response.complete) {\n status = { code: SpanStatusCode.ERROR };\n } else {\n // behaves same for new and old semconv\n status = {\n code: parseResponseStatus(SpanKind.CLIENT, response.statusCode),\n };\n }\n\n span.setStatus(status);\n\n if (this.getConfig().applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () =>\n this.getConfig().applyCustomAttributesOnSpan!(\n span,\n request,\n response\n ),\n () => {},\n true\n );\n }\n\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n };\n\n response.on('end', endHandler);\n response.on(errorMonitor, (error: Err) => {\n this._diag.debug('outgoingRequest on error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n });\n }\n );\n request.on('close', () => {\n this._diag.debug('outgoingRequest on request close()');\n if (request.aborted || responseFinished) {\n return;\n }\n responseFinished = true;\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n });\n request.on(errorMonitor, (error: Err) => {\n this._diag.debug('outgoingRequest on request error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n });\n\n this._diag.debug('http.ClientRequest return request');\n return request;\n }\n\n private _incomingRequestFunction(\n component: 'http' | 'https',\n original: (event: string, ...args: unknown[]) => boolean\n ) {\n const instrumentation = this;\n return function incomingRequest(\n this: unknown,\n event: string,\n ...args: unknown[]\n ): boolean {\n // Only traces request events\n if (event !== 'request') {\n return original.apply(this, [event, ...args]);\n }\n\n const request = args[0] as http.IncomingMessage;\n const response = args[1] as http.ServerResponse & { socket: Socket };\n const method = request.method || 'GET';\n\n instrumentation._diag.debug(\n `${component} instrumentation incomingRequest`\n );\n\n if (\n safeExecuteInTheMiddle(\n () =>\n instrumentation.getConfig().ignoreIncomingRequestHook?.(request),\n (e: unknown) => {\n if (e != null) {\n instrumentation._diag.error(\n 'caught ignoreIncomingRequestHook error: ',\n e\n );\n }\n },\n true\n )\n ) {\n return context.with(suppressTracing(context.active()), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n return original.apply(this, [event, ...args]);\n });\n }\n\n const headers = request.headers;\n\n const spanAttributes = getIncomingRequestAttributes(\n request,\n {\n component: component,\n serverName: instrumentation.getConfig().serverName,\n hookAttributes: instrumentation._callStartSpanHook(\n request,\n instrumentation.getConfig().startIncomingSpanHook\n ),\n semconvStability: instrumentation._semconvStability,\n enableSyntheticSourceDetection:\n instrumentation.getConfig().enableSyntheticSourceDetection || false,\n },\n instrumentation._diag\n );\n\n Object.assign(\n spanAttributes,\n instrumentation._headerCapture.server.captureRequestHeaders(\n header => request.headers[header]\n )\n );\n\n const spanOptions: SpanOptions = {\n kind: SpanKind.SERVER,\n attributes: spanAttributes,\n };\n\n const startTime = hrTime();\n const oldMetricAttributes =\n getIncomingRequestMetricAttributes(spanAttributes);\n\n // request method and url.scheme are both required span attributes\n const stableMetricAttributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: spanAttributes[ATTR_HTTP_REQUEST_METHOD],\n [ATTR_URL_SCHEME]: spanAttributes[ATTR_URL_SCHEME],\n };\n\n // recommended if and only if one was sent, same as span recommendation\n if (spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n const ctx = propagation.extract(ROOT_CONTEXT, headers);\n const span = instrumentation._startHttpSpan(method, spanOptions, ctx);\n const rpcMetadata: RPCMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(\n setRPCMetadata(trace.setSpan(ctx, span), rpcMetadata),\n () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n if (instrumentation.getConfig().requestHook) {\n instrumentation._callRequestHook(span, request);\n }\n if (instrumentation.getConfig().responseHook) {\n instrumentation._callResponseHook(span, response);\n }\n\n // After 'error', no further events other than 'close' should be emitted.\n let hasError = false;\n response.on('close', () => {\n if (hasError) {\n return;\n }\n instrumentation._onServerResponseFinish(\n request,\n response,\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime\n );\n });\n response.on(errorMonitor, (err: Err) => {\n hasError = true;\n instrumentation._onServerResponseError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n err\n );\n });\n\n return safeExecuteInTheMiddle(\n () => original.apply(this, [event, ...args]),\n error => {\n if (error) {\n instrumentation._onServerResponseError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n throw error;\n }\n }\n );\n }\n );\n };\n }\n\n private _outgoingRequestFunction(\n component: 'http' | 'https',\n original: Func\n ): Func {\n const instrumentation = this;\n return function outgoingRequest(\n this: unknown,\n options: url.URL | http.RequestOptions | string,\n ...args: unknown[]\n ): http.ClientRequest {\n if (!isValidOptionsType(options)) {\n return original.apply(this, [options, ...args]);\n }\n const extraOptions =\n typeof args[0] === 'object' &&\n (typeof options === 'string' || options instanceof url.URL)\n ? (args.shift() as http.RequestOptions)\n : undefined;\n const { method, invalidUrl, optionsParsed } = getRequestInfo(\n instrumentation._diag,\n options,\n extraOptions\n );\n\n if (\n safeExecuteInTheMiddle(\n () =>\n instrumentation\n .getConfig()\n .ignoreOutgoingRequestHook?.(optionsParsed),\n (e: unknown) => {\n if (e != null) {\n instrumentation._diag.error(\n 'caught ignoreOutgoingRequestHook error: ',\n e\n );\n }\n },\n true\n )\n ) {\n return original.apply(this, [optionsParsed, ...args]);\n }\n\n const { hostname, port } = extractHostnameAndPort(optionsParsed);\n const attributes = getOutgoingRequestAttributes(\n optionsParsed,\n {\n component,\n port,\n hostname,\n hookAttributes: instrumentation._callStartSpanHook(\n optionsParsed,\n instrumentation.getConfig().startOutgoingSpanHook\n ),\n redactedQueryParams: instrumentation.getConfig().redactedQueryParams, // Added config for adding custom query strings\n },\n instrumentation._semconvStability,\n instrumentation.getConfig().enableSyntheticSourceDetection || false\n );\n\n const startTime = hrTime();\n const oldMetricAttributes: Attributes =\n getOutgoingRequestMetricAttributes(attributes);\n\n // request method, server address, and server port are both required span attributes\n const stableMetricAttributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: attributes[ATTR_HTTP_REQUEST_METHOD],\n [ATTR_SERVER_ADDRESS]: attributes[ATTR_SERVER_ADDRESS],\n [ATTR_SERVER_PORT]: attributes[ATTR_SERVER_PORT],\n };\n\n // required if and only if one was sent, same as span requirement\n if (attributes[ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n stableMetricAttributes[ATTR_HTTP_RESPONSE_STATUS_CODE] =\n attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n\n // recommended if and only if one was sent, same as span recommendation\n if (attributes[ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[ATTR_NETWORK_PROTOCOL_VERSION] =\n attributes[ATTR_NETWORK_PROTOCOL_VERSION];\n }\n\n const spanOptions: SpanOptions = {\n kind: SpanKind.CLIENT,\n attributes,\n };\n const span = instrumentation._startHttpSpan(method, spanOptions);\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n if (!optionsParsed.headers) {\n optionsParsed.headers = {};\n } else {\n // Make a copy of the headers object to avoid mutating an object the\n // caller might have a reference to.\n optionsParsed.headers = Object.assign({}, optionsParsed.headers);\n }\n propagation.inject(requestContext, optionsParsed.headers);\n\n return context.with(requestContext, () => {\n /*\n * The response callback is registered before ClientRequest is bound,\n * thus it is needed to bind it before the function call.\n */\n const cb = args[args.length - 1];\n if (typeof cb === 'function') {\n args[args.length - 1] = context.bind(parentContext, cb);\n }\n\n const request: http.ClientRequest = safeExecuteInTheMiddle(\n () => {\n if (invalidUrl) {\n // we know that the url is invalid, there's no point in injecting context as it will fail validation.\n // Passing in what the user provided will give the user an error that matches what they'd see without\n // the instrumentation.\n return original.apply(this, [options, ...args]);\n } else {\n return original.apply(this, [optionsParsed, ...args]);\n }\n },\n error => {\n if (error) {\n instrumentation._onOutgoingRequestError(\n span,\n oldMetricAttributes,\n stableMetricAttributes,\n startTime,\n error\n );\n throw error;\n }\n }\n );\n\n instrumentation._diag.debug(\n `${component} instrumentation outgoingRequest`\n );\n context.bind(parentContext, request);\n return instrumentation._traceClientRequest(\n request,\n span,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n });\n };\n }\n\n private _onServerResponseFinish(\n request: http.IncomingMessage,\n response: http.ServerResponse,\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime\n ) {\n const attributes = getIncomingRequestAttributesOnResponse(\n request,\n response,\n this._semconvStability\n );\n oldMetricAttributes = Object.assign(\n oldMetricAttributes,\n getIncomingRequestMetricAttributesOnResponse(attributes)\n );\n stableMetricAttributes = Object.assign(\n stableMetricAttributes,\n getIncomingStableRequestMetricAttributesOnResponse(attributes)\n );\n\n span.setAttributes(\n this._headerCapture.server.captureResponseHeaders(header =>\n response.getHeader(header)\n )\n );\n\n span.setAttributes(attributes).setStatus({\n code: parseResponseStatus(SpanKind.SERVER, response.statusCode),\n });\n\n const route = attributes[ATTR_HTTP_ROUTE];\n if (route) {\n span.updateName(`${request.method || 'GET'} ${route}`);\n }\n\n if (this.getConfig().applyCustomAttributesOnSpan) {\n safeExecuteInTheMiddle(\n () =>\n this.getConfig().applyCustomAttributesOnSpan!(\n span,\n request,\n response\n ),\n () => {},\n true\n );\n }\n\n this._closeHttpSpan(\n span,\n SpanKind.SERVER,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _onOutgoingRequestError(\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime,\n error: Err\n ) {\n setSpanWithError(span, error, this._semconvStability);\n stableMetricAttributes[ATTR_ERROR_TYPE] = error.name;\n\n this._closeHttpSpan(\n span,\n SpanKind.CLIENT,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _onServerResponseError(\n span: Span,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes,\n startTime: HrTime,\n error: Err\n ) {\n setSpanWithError(span, error, this._semconvStability);\n stableMetricAttributes[ATTR_ERROR_TYPE] = error.name;\n\n this._closeHttpSpan(\n span,\n SpanKind.SERVER,\n startTime,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n\n private _startHttpSpan(\n name: string,\n options: SpanOptions,\n ctx = context.active()\n ) {\n /*\n * If a parent is required but not present, we use a `NoopSpan` to still\n * propagate context without recording it.\n */\n const requireParent =\n options.kind === SpanKind.CLIENT\n ? this.getConfig().requireParentforOutgoingSpans\n : this.getConfig().requireParentforIncomingSpans;\n\n let span: Span;\n const currentSpan = trace.getSpan(ctx);\n\n if (\n requireParent === true &&\n (!currentSpan || !trace.isSpanContextValid(currentSpan.spanContext()))\n ) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else if (requireParent === true && currentSpan?.spanContext().isRemote) {\n span = currentSpan;\n } else {\n span = this.tracer.startSpan(name, options, ctx);\n }\n this._spanNotEnded.add(span);\n return span;\n }\n\n private _closeHttpSpan(\n span: Span,\n spanKind: SpanKind,\n startTime: HrTime,\n oldMetricAttributes: Attributes,\n stableMetricAttributes: Attributes\n ) {\n if (!this._spanNotEnded.has(span)) {\n return;\n }\n\n span.end();\n this._spanNotEnded.delete(span);\n\n // Record metrics\n const duration = hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime()));\n if (spanKind === SpanKind.SERVER) {\n this._recordServerDuration(\n duration,\n oldMetricAttributes,\n stableMetricAttributes\n );\n } else if (spanKind === SpanKind.CLIENT) {\n this._recordClientDuration(\n duration,\n oldMetricAttributes,\n stableMetricAttributes\n );\n }\n }\n\n private _callResponseHook(\n span: Span,\n response: http.IncomingMessage | http.ServerResponse\n ) {\n safeExecuteInTheMiddle(\n () => this.getConfig().responseHook!(span, response),\n () => {},\n true\n );\n }\n\n private _callRequestHook(\n span: Span,\n request: http.ClientRequest | http.IncomingMessage\n ) {\n safeExecuteInTheMiddle(\n () => this.getConfig().requestHook!(span, request),\n () => {},\n true\n );\n }\n\n private _callStartSpanHook(\n request: http.IncomingMessage | http.RequestOptions,\n hookFunc: Function | undefined\n ) {\n if (typeof hookFunc === 'function') {\n return safeExecuteInTheMiddle(\n () => hookFunc(request),\n () => {},\n true\n );\n }\n }\n\n private _createHeaderCapture(semconvStability: SemconvStability) {\n const config = this.getConfig();\n\n return {\n client: {\n captureRequestHeaders: headerCapture(\n 'request',\n config.headersToSpanAttributes?.client?.requestHeaders ?? [],\n semconvStability\n ),\n captureResponseHeaders: headerCapture(\n 'response',\n config.headersToSpanAttributes?.client?.responseHeaders ?? [],\n semconvStability\n ),\n },\n server: {\n captureRequestHeaders: headerCapture(\n 'request',\n config.headersToSpanAttributes?.server?.requestHeaders ?? [],\n semconvStability\n ),\n captureResponseHeaders: headerCapture(\n 'response',\n config.headersToSpanAttributes?.server?.responseHeaders ?? [],\n semconvStability\n ),\n },\n };\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { HttpInstrumentation } from './http';\nexport type {\n HttpCustomAttributeFunction,\n HttpInstrumentationConfig,\n HttpRequestCustomAttributeFunction,\n HttpResponseCustomAttributeFunction,\n IgnoreIncomingRequestFunction,\n IgnoreOutgoingRequestFunction,\n StartIncomingSpanCustomAttributeFunction,\n StartOutgoingSpanCustomAttributeFunction,\n} from './types';\n","import { type Instrumentation, registerInstrumentations } from '@opentelemetry/instrumentation';\n\n/** Exported only for tests. */\nexport const INSTRUMENTED: Record = {};\n\nexport function generateInstrumentOnce<\n Options,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n InstrumentationClass extends new (...args: any[]) => Instrumentation,\n>(\n name: string,\n instrumentationClass: InstrumentationClass,\n optionsCallback: (options: Options) => ConstructorParameters[0],\n): ((options: Options) => InstanceType) & { id: string };\nexport function generateInstrumentOnce<\n Options = unknown,\n InstrumentationInstance extends Instrumentation = Instrumentation,\n>(\n name: string,\n creator: (options?: Options) => InstrumentationInstance,\n): ((options?: Options) => InstrumentationInstance) & { id: string };\n/**\n * Instrument an OpenTelemetry instrumentation once.\n * This will skip running instrumentation again if it was already instrumented.\n */\nexport function generateInstrumentOnce(\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n creatorOrClass: (new (...args: any[]) => Instrumentation) | ((options?: Options) => Instrumentation),\n optionsCallback?: (options: Options) => unknown,\n): ((options: Options) => Instrumentation) & { id: string } {\n if (optionsCallback) {\n return _generateInstrumentOnceWithOptions(\n name,\n creatorOrClass as new (...args: unknown[]) => Instrumentation,\n optionsCallback,\n );\n }\n\n return _generateInstrumentOnce(name, creatorOrClass as (options?: Options) => Instrumentation);\n}\n\n// The plain version without handling of options\n// Should not be used with custom options that are mutated in the creator!\nfunction _generateInstrumentOnce(\n name: string,\n creator: (options?: Options) => InstrumentationInstance,\n): ((options?: Options) => InstrumentationInstance) & { id: string } {\n return Object.assign(\n (options?: Options) => {\n const instrumented = INSTRUMENTED[name] as InstrumentationInstance | undefined;\n if (instrumented) {\n // If options are provided, ensure we update them\n if (options) {\n instrumented.setConfig(options);\n }\n return instrumented;\n }\n\n const instrumentation = creator(options);\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n// This version handles options properly\nfunction _generateInstrumentOnceWithOptions<\n Options,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n InstrumentationClass extends new (...args: any[]) => Instrumentation,\n>(\n name: string,\n instrumentationClass: InstrumentationClass,\n optionsCallback: (options: Options) => ConstructorParameters[0],\n): ((options: Options) => InstanceType) & { id: string } {\n return Object.assign(\n (_options: Options) => {\n const options = optionsCallback(_options);\n\n const instrumented = INSTRUMENTED[name] as InstanceType | undefined;\n if (instrumented) {\n // Ensure we update options\n instrumented.setConfig(options);\n return instrumented;\n }\n\n const instrumentation = new instrumentationClass(options) as InstanceType;\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n/**\n * Ensure a given callback is called when the instrumentation is actually wrapping something.\n * This can be used to ensure some logic is only called when the instrumentation is actually active.\n *\n * This function returns a function that can be invoked with a callback.\n * This callback will either be invoked immediately\n * (e.g. if the instrumentation was already wrapped, or if _wrap could not be patched),\n * or once the instrumentation is actually wrapping something.\n *\n * Make sure to call this function right after adding the instrumentation, otherwise it may be too late!\n * The returned callback can be used any time, and also multiple times.\n */\nexport function instrumentWhenWrapped(instrumentation: T): (callback: () => void) => void {\n let isWrapped = false;\n let callbacks: (() => void)[] = [];\n\n if (!hasWrap(instrumentation)) {\n isWrapped = true;\n } else {\n const originalWrap = instrumentation['_wrap'];\n\n instrumentation['_wrap'] = (...args: Parameters) => {\n isWrapped = true;\n callbacks.forEach(callback => callback());\n callbacks = [];\n return originalWrap(...args);\n };\n }\n\n const registerCallback = (callback: () => void): void => {\n if (isWrapped) {\n callback();\n } else {\n callbacks.push(callback);\n }\n };\n\n return registerCallback;\n}\n\nfunction hasWrap(\n instrumentation: T,\n): instrumentation is T & { _wrap: (...args: unknown[]) => unknown } {\n return typeof (instrumentation as T & { _wrap?: (...args: unknown[]) => unknown })['_wrap'] === 'function';\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","export const INSTRUMENTATION_NAME = '@sentry/instrumentation-http';\n\n/** We only want to capture request bodies up to 1mb. */\nexport const MAX_BODY_BYTE_LENGTH = 1024 * 1024;\n","import type { IncomingMessage } from 'node:http';\nimport type { Scope } from '@sentry/core';\nimport { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { MAX_BODY_BYTE_LENGTH } from '../integrations/http/constants';\n\n/**\n * This method patches the request object to capture the body.\n * Instead of actually consuming the streamed body ourselves, which has potential side effects,\n * we monkey patch `req.on('data')` to intercept the body chunks.\n * This way, we only read the body if the user also consumes the body, ensuring we do not change any behavior in unexpected ways.\n */\nexport function patchRequestToCaptureBody(\n req: IncomingMessage,\n isolationScope: Scope,\n maxIncomingRequestBodySize: 'small' | 'medium' | 'always',\n integrationName: string,\n): void {\n let bodyByteLength = 0;\n const chunks: Buffer[] = [];\n\n DEBUG_BUILD && debug.log(integrationName, 'Patching request.on');\n\n /**\n * We need to keep track of the original callbacks, in order to be able to remove listeners again.\n * Since `off` depends on having the exact same function reference passed in, we need to be able to map\n * original listeners to our wrapped ones.\n */\n const callbackMap = new WeakMap();\n\n const maxBodySize =\n maxIncomingRequestBodySize === 'small'\n ? 1_000\n : maxIncomingRequestBodySize === 'medium'\n ? 10_000\n : MAX_BODY_BYTE_LENGTH;\n\n try {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.on = new Proxy(req.on, {\n apply: (target, thisArg, args: Parameters) => {\n const [event, listener, ...restArgs] = args;\n\n if (event === 'data') {\n DEBUG_BUILD &&\n debug.log(integrationName, `Handling request.on(\"data\") with maximum body size of ${maxBodySize}b`);\n\n const callback = new Proxy(listener, {\n apply: (target, thisArg, args: Parameters) => {\n try {\n const chunk = args[0] as Buffer | string;\n const bufferifiedChunk = Buffer.from(chunk);\n\n if (bodyByteLength < maxBodySize) {\n chunks.push(bufferifiedChunk);\n bodyByteLength += bufferifiedChunk.byteLength;\n } else if (DEBUG_BUILD) {\n debug.log(\n integrationName,\n `Dropping request body chunk because maximum body length of ${maxBodySize}b is exceeded.`,\n );\n }\n } catch (_err) {\n DEBUG_BUILD && debug.error(integrationName, 'Encountered error while storing body chunk.');\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n callbackMap.set(listener, callback);\n\n return Reflect.apply(target, thisArg, [event, callback, ...restArgs]);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n // Ensure we also remove callbacks correctly\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.off = new Proxy(req.off, {\n apply: (target, thisArg, args: Parameters) => {\n const [, listener] = args;\n\n const callback = callbackMap.get(listener);\n if (callback) {\n callbackMap.delete(listener);\n\n const modifiedArgs = args.slice();\n modifiedArgs[1] = callback;\n return Reflect.apply(target, thisArg, modifiedArgs);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n req.on('end', () => {\n try {\n const body = Buffer.concat(chunks).toString('utf-8');\n if (body) {\n // Using Buffer.byteLength here, because the body may contain characters that are not 1 byte long\n const bodyByteLength = Buffer.byteLength(body, 'utf-8');\n const truncatedBody =\n bodyByteLength > maxBodySize\n ? `${Buffer.from(body)\n .subarray(0, maxBodySize - 3)\n .toString('utf-8')}...`\n : body;\n\n isolationScope.setSDKProcessingMetadata({ normalizedRequest: { data: truncatedBody } });\n }\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error building captured request body', error);\n }\n }\n });\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error patching request to capture body', error);\n }\n }\n}\n","import type { ChannelListener } from 'node:diagnostics_channel';\nimport { subscribe } from 'node:diagnostics_channel';\nimport type { EventEmitter } from 'node:events';\nimport type { IncomingMessage, RequestOptions, Server, ServerResponse } from 'node:http';\nimport type { Socket } from 'node:net';\nimport { context, createContextKey, propagation } from '@opentelemetry/api';\nimport type { AggregationCounts, Client, Integration, IntegrationFn, Scope } from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n addNonEnumerableProperty,\n debug,\n generateSpanId,\n generateTraceId,\n getClient,\n getCurrentScope,\n getIsolationScope,\n httpRequestToRequestData,\n stripUrlQueryAndFragment,\n withIsolationScope,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type { NodeClient } from '../../sdk/client';\nimport { patchRequestToCaptureBody } from '../../utils/captureRequestBody';\n\ntype ServerEmit = typeof Server.prototype.emit;\n\n// Inlining this type to not depend on newer TS types\ninterface WeakRefImpl {\n deref(): T | undefined;\n}\n\ntype StartSpanCallback = (next: () => boolean) => boolean;\ntype RequestWithOptionalStartSpanCallback = IncomingMessage & {\n _startSpanCallback?: WeakRefImpl;\n};\n\nconst HTTP_SERVER_INSTRUMENTED_KEY = createContextKey('sentry_http_server_instrumented');\nconst INTEGRATION_NAME = 'Http.Server';\n\nconst clientToRequestSessionAggregatesMap = new Map<\n Client,\n { [timestampRoundedToSeconds: string]: { exited: number; crashed: number; errored: number } }\n>();\n\n// We keep track of emit functions we wrapped, to avoid double wrapping\n// We do this instead of putting a non-enumerable property on the function, because\n// sometimes the property seems to be migrated to forks of the emit function, which we do not want to happen\n// This was the case in the nestjs-distributed-tracing E2E test\nconst wrappedEmitFns = new WeakSet();\n\nexport interface HttpServerIntegrationOptions {\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n sessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n}\n\n/**\n * Add a callback to the request object that will be called when the request is started.\n * The callback will receive the next function to continue processing the request.\n */\nexport function addStartSpanCallback(request: RequestWithOptionalStartSpanCallback, callback: StartSpanCallback): void {\n addNonEnumerableProperty(request, '_startSpanCallback', new WeakRef(callback));\n}\n\nconst _httpServerIntegration = ((options: HttpServerIntegrationOptions = {}) => {\n const _options = {\n sessions: options.sessions ?? true,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS ?? 60_000,\n maxRequestBodySize: options.maxRequestBodySize ?? 'medium',\n ignoreRequestBody: options.ignoreRequestBody,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const onHttpServerRequestStart = ((_data: unknown) => {\n const data = _data as { server: Server };\n\n instrumentServer(data.server, _options);\n }) satisfies ChannelListener;\n\n subscribe('http.server.request.start', onHttpServerRequestStart);\n },\n afterAllSetup(client) {\n if (DEBUG_BUILD && client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerIntegration` while `httpIntegration` is also present. Make sure to remove `httpServerIntegration` when adding `httpIntegration`.',\n );\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * This integration handles request isolation, trace continuation and other core Sentry functionality around incoming http requests\n * handled via the node `http` module.\n *\n * This version uses OpenTelemetry for context propagation and span management.\n *\n * @see {@link ../../light/integrations/httpServerIntegration.ts} for the lightweight version without OpenTelemetry\n */\nexport const httpServerIntegration = _httpServerIntegration as (\n options?: HttpServerIntegrationOptions,\n) => Integration & {\n name: 'HttpServer';\n setupOnce: () => void;\n};\n\n/**\n * Instrument a server to capture incoming requests.\n *\n */\nfunction instrumentServer(\n server: Server,\n {\n ignoreRequestBody,\n maxRequestBodySize,\n sessions,\n sessionFlushingDelayMS,\n }: {\n ignoreRequestBody?: (url: string, request: IncomingMessage) => boolean;\n maxRequestBodySize: 'small' | 'medium' | 'always' | 'none';\n sessions: boolean;\n sessionFlushingDelayMS: number;\n },\n): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEmit: ServerEmit = server.emit;\n\n if (wrappedEmitFns.has(originalEmit)) {\n return;\n }\n\n const newEmit = new Proxy(originalEmit, {\n apply(target, thisArg, args: [event: string, ...args: unknown[]]) {\n // Only traces request events\n if (args[0] !== 'request') {\n return target.apply(thisArg, args);\n }\n\n const client = getClient();\n\n // Make sure we do not double execute our wrapper code, for edge cases...\n // Without this check, if we double-wrap emit, for whatever reason, you'd get two http.server spans (one the children of the other)\n if (context.active().getValue(HTTP_SERVER_INSTRUMENTED_KEY) || !client) {\n return target.apply(thisArg, args);\n }\n\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Handling incoming request');\n\n const isolationScope = getIsolationScope().clone();\n const request = args[1] as IncomingMessage;\n const response = args[2] as ServerResponse & { socket: Socket };\n\n const normalizedRequest = httpRequestToRequestData(request);\n\n // request.ip is non-standard but some frameworks set this\n const ipAddress = (request as { ip?: string }).ip || request.socket?.remoteAddress;\n\n const url = request.url || '/';\n if (maxRequestBodySize !== 'none' && !ignoreRequestBody?.(url, request)) {\n patchRequestToCaptureBody(request, isolationScope, maxRequestBodySize, INTEGRATION_NAME);\n }\n\n // Update the isolation scope, isolate this request\n isolationScope.setSDKProcessingMetadata({ normalizedRequest, ipAddress });\n\n // attempt to update the scope's `transactionName` based on the request URL\n // Ideally, framework instrumentations coming after the HttpInstrumentation\n // update the transactionName once we get a parameterized route.\n const httpMethod = (request.method || 'GET').toUpperCase();\n const httpTargetWithoutQueryFragment = stripUrlQueryAndFragment(url);\n\n const bestEffortTransactionName = `${httpMethod} ${httpTargetWithoutQueryFragment}`;\n\n isolationScope.setTransactionName(bestEffortTransactionName);\n\n if (sessions && client) {\n recordRequestSession(client, {\n requestIsolationScope: isolationScope,\n response,\n sessionFlushingDelayMS: sessionFlushingDelayMS ?? 60_000,\n });\n }\n\n return withIsolationScope(isolationScope, () => {\n const newPropagationContext = {\n traceId: generateTraceId(),\n sampleRand: _INTERNAL_safeMathRandom(),\n propagationSpanId: generateSpanId(),\n };\n // - Set a fresh propagation context so each request gets a unique traceId.\n // When there are incoming trace headers, propagation.extract() below sets a remote\n // span on the OTel context which takes precedence in getTraceContextForScope().\n // - We can write directly to the current scope here because it is forked implicitly via\n // `context.with` in `withIsolationScope` (See `SentryContextManager`).\n // - explicitly making a deep copy to avoid mutation of original PC on the other scope\n getCurrentScope().setPropagationContext({ ...newPropagationContext });\n isolationScope.setPropagationContext({ ...newPropagationContext });\n\n const ctx = propagation\n .extract(context.active(), normalizedRequest.headers)\n .setValue(HTTP_SERVER_INSTRUMENTED_KEY, true);\n\n return context.with(ctx, () => {\n // This is used (optionally) by the httpServerSpansIntegration to attach _startSpanCallback to the request object\n client.emit('httpServerRequest', request, response, normalizedRequest);\n\n const callback = (request as RequestWithOptionalStartSpanCallback)._startSpanCallback?.deref();\n if (callback) {\n return callback(() => target.apply(thisArg, args));\n }\n return target.apply(thisArg, args);\n });\n });\n },\n });\n\n wrappedEmitFns.add(newEmit);\n server.emit = newEmit;\n}\n\n/**\n * Starts a session and tracks it in the context of a given isolation scope.\n * When the passed response is finished, the session is put into a task and is\n * aggregated with other sessions that may happen in a certain time window\n * (sessionFlushingDelayMs).\n *\n * The sessions are always aggregated by the client that is on the current scope\n * at the time of ending the response (if there is one).\n */\n// Exported for unit tests\nexport function recordRequestSession(\n client: Client,\n {\n requestIsolationScope,\n response,\n sessionFlushingDelayMS,\n }: {\n requestIsolationScope: Scope;\n response: EventEmitter;\n sessionFlushingDelayMS?: number;\n },\n): void {\n requestIsolationScope.setSDKProcessingMetadata({\n requestSession: { status: 'ok' },\n });\n response.once('close', () => {\n const requestSession = requestIsolationScope.getScopeData().sdkProcessingMetadata.requestSession;\n\n if (client && requestSession) {\n DEBUG_BUILD && debug.log(`Recorded request session with status: ${requestSession.status}`);\n\n const roundedDate = new Date();\n roundedDate.setSeconds(0, 0);\n const dateBucketKey = roundedDate.toISOString();\n\n const existingClientAggregate = clientToRequestSessionAggregatesMap.get(client);\n const bucket = existingClientAggregate?.[dateBucketKey] || { exited: 0, crashed: 0, errored: 0 };\n bucket[({ ok: 'exited', crashed: 'crashed', errored: 'errored' } as const)[requestSession.status]]++;\n\n if (existingClientAggregate) {\n existingClientAggregate[dateBucketKey] = bucket;\n } else {\n DEBUG_BUILD && debug.log('Opened new request session aggregate.');\n const newClientAggregate = { [dateBucketKey]: bucket };\n clientToRequestSessionAggregatesMap.set(client, newClientAggregate);\n\n const flushPendingClientAggregates = (): void => {\n clearTimeout(timeout);\n unregisterClientFlushHook();\n clientToRequestSessionAggregatesMap.delete(client);\n\n const aggregatePayload: AggregationCounts[] = Object.entries(newClientAggregate).map(\n ([timestamp, value]) => ({\n started: timestamp,\n exited: value.exited,\n errored: value.errored,\n crashed: value.crashed,\n }),\n );\n client.sendSession({ aggregates: aggregatePayload });\n };\n\n const unregisterClientFlushHook = client.on('flush', () => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to client flush');\n flushPendingClientAggregates();\n });\n const timeout = setTimeout(() => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to flushing schedule');\n flushPendingClientAggregates();\n }, sessionFlushingDelayMS).unref();\n }\n }\n });\n}\n","import { errorMonitor } from 'node:events';\nimport type { ClientRequest, IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'node:http';\nimport { context, SpanKind, trace } from '@opentelemetry/api';\nimport type { RPCMetadata } from '@opentelemetry/core';\nimport { getRPCMetadata, isTracingSuppressed, RPCType, setRPCMetadata } from '@opentelemetry/core';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_ROUTE,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_NET_HOST_IP,\n SEMATTRS_NET_HOST_PORT,\n SEMATTRS_NET_PEER_IP,\n} from '@opentelemetry/semantic-conventions';\nimport type { Event, Integration, IntegrationFn, Span, SpanAttributes, SpanStatus } from '@sentry/core';\nimport {\n debug,\n getIsolationScope,\n getSpanStatusFromHttpCode,\n httpHeadersToSpanAttributes,\n parseStringToURLObject,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_STATUS_ERROR,\n stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type { NodeClient } from '../../sdk/client';\nimport { addStartSpanCallback } from './httpServerIntegration';\n\nconst INTEGRATION_NAME = 'Http.ServerSpans';\n\n// Tree-shakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\nexport interface HttpServerSpansIntegrationOptions {\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n ignoreStatusCodes?: (number | [number, number])[];\n\n /**\n * @deprecated This is deprecated in favor of `incomingRequestSpanHook`.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: ClientRequest | IncomingMessage) => void;\n responseHook?: (span: Span, response: IncomingMessage | ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: ClientRequest | IncomingMessage,\n response: IncomingMessage | ServerResponse,\n ) => void;\n };\n\n /**\n * A hook that can be used to mutate the span for incoming requests.\n * This is triggered after the span is created, but before it is recorded.\n */\n onSpanCreated?: (span: Span, request: IncomingMessage, response: ServerResponse) => void;\n}\n\nconst _httpServerSpansIntegration = ((options: HttpServerSpansIntegrationOptions = {}) => {\n const ignoreStaticAssets = options.ignoreStaticAssets ?? true;\n const ignoreIncomingRequests = options.ignoreIncomingRequests;\n const ignoreStatusCodes = options.ignoreStatusCodes ?? [\n [401, 404],\n // 300 and 304 are possibly valid status codes we do not want to filter\n [301, 303],\n [305, 399],\n ];\n\n const { onSpanCreated } = options;\n // eslint-disable-next-line deprecation/deprecation\n const { requestHook, responseHook, applyCustomAttributesOnSpan } = options.instrumentation ?? {};\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n // If no tracing, we can just skip everything here\n if (typeof __SENTRY_TRACING__ !== 'undefined' && !__SENTRY_TRACING__) {\n return;\n }\n\n client.on('httpServerRequest', (_request, _response, normalizedRequest) => {\n // Type-casting this here because we do not want to put the node types into core\n const request = _request as IncomingMessage;\n const response = _response as ServerResponse;\n\n const startSpan = (next: () => boolean): boolean => {\n if (\n shouldIgnoreSpansForIncomingRequest(request, {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n })\n ) {\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Skipping span creation for incoming request', request.url);\n return next();\n }\n\n const fullUrl = normalizedRequest.url || request.url || '/';\n const urlObj = parseStringToURLObject(fullUrl);\n\n const headers = request.headers;\n const userAgent = headers['user-agent'];\n const ips = headers['x-forwarded-for'];\n const httpVersion = request.httpVersion;\n const host = headers.host;\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n const tracer = client.tracer;\n const scheme = fullUrl.startsWith('https') ? 'https' : 'http';\n\n const method = normalizedRequest.method || request.method?.toUpperCase() || 'GET';\n const httpTargetWithoutQueryFragment = urlObj ? urlObj.pathname : stripUrlQueryAndFragment(fullUrl);\n const bestEffortTransactionName = `${method} ${httpTargetWithoutQueryFragment}`;\n\n // We use the plain tracer.startSpan here so we can pass the span kind\n const span = tracer.startSpan(bestEffortTransactionName, {\n kind: SpanKind.SERVER,\n attributes: {\n // Sentry specific attributes\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.server',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.http',\n 'sentry.http.prefetch': isKnownPrefetchRequest(request) || undefined,\n // Old Semantic Conventions attributes - added for compatibility with what `@opentelemetry/instrumentation-http` output before\n 'http.url': fullUrl,\n 'http.method': normalizedRequest.method,\n 'http.target': urlObj ? `${urlObj.pathname}${urlObj.search}` : httpTargetWithoutQueryFragment,\n 'http.host': host,\n 'net.host.name': hostname,\n 'http.client_ip': typeof ips === 'string' ? ips.split(',')[0] : undefined,\n 'http.user_agent': userAgent,\n 'http.scheme': scheme,\n 'http.flavor': httpVersion,\n 'net.transport': httpVersion?.toUpperCase() === 'QUIC' ? 'ip_udp' : 'ip_tcp',\n ...getRequestContentLengthAttribute(request),\n ...httpHeadersToSpanAttributes(\n normalizedRequest.headers || {},\n client.getOptions().sendDefaultPii ?? false,\n ),\n },\n });\n\n // TODO v11: Remove the following three hooks, only onSpanCreated should remain\n requestHook?.(span, request);\n responseHook?.(span, response);\n applyCustomAttributesOnSpan?.(span, request, response);\n onSpanCreated?.(span, request, response);\n\n const rpcMetadata: RPCMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(setRPCMetadata(trace.setSpan(context.active(), span), rpcMetadata), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n // Ensure we only end the span once\n // E.g. error can be emitted before close is emitted\n let isEnded = false;\n function endSpan(status: SpanStatus): void {\n if (isEnded) {\n return;\n }\n\n isEnded = true;\n\n const newAttributes = getIncomingRequestAttributesOnResponse(request, response);\n span.setAttributes(newAttributes);\n span.setStatus(status);\n span.end();\n\n // Update the transaction name if the route has changed\n const route = newAttributes['http.route'];\n if (route) {\n getIsolationScope().setTransactionName(`${request.method?.toUpperCase() || 'GET'} ${route}`);\n }\n }\n\n response.on('close', () => {\n endSpan(getSpanStatusFromHttpCode(response.statusCode));\n });\n response.on(errorMonitor, () => {\n const httpStatus = getSpanStatusFromHttpCode(response.statusCode);\n // Ensure we def. have an error status here\n endSpan(httpStatus.code === SPAN_STATUS_ERROR ? httpStatus : { code: SPAN_STATUS_ERROR });\n });\n\n return next();\n });\n };\n\n addStartSpanCallback(request, startSpan);\n });\n },\n processEvent(event) {\n // Drop transaction if it has a status code that should be ignored\n if (event.type === 'transaction') {\n const statusCode = event.contexts?.trace?.data?.['http.response.status_code'];\n if (typeof statusCode === 'number') {\n const shouldDrop = shouldFilterStatusCode(statusCode, ignoreStatusCodes);\n if (shouldDrop) {\n DEBUG_BUILD && debug.log('Dropping transaction due to status code', statusCode);\n return null;\n }\n }\n }\n\n return event;\n },\n afterAllSetup(client) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n if (client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerSpansIntergation` while `httpIntegration` is also present. Make sure to remove `httpIntegration` when adding `httpServerSpansIntegration`.',\n );\n }\n\n if (!client.getIntegrationByName('Http.Server')) {\n debug.error(\n 'It seems that you have manually added `httpServerSpansIntergation` without adding `httpServerIntegration`. This is a requiement for spans to be created - please add the `httpServerIntegration` integration.',\n );\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * This integration emits spans for incoming requests handled via the node `http` module.\n * It requires the `httpServerIntegration` to be present.\n */\nexport const httpServerSpansIntegration = _httpServerSpansIntegration as (\n options?: HttpServerSpansIntegrationOptions,\n) => Integration & {\n name: 'HttpServerSpans';\n setup: (client: NodeClient) => void;\n processEvent: (event: Event) => Event | null;\n};\n\nfunction isKnownPrefetchRequest(req: IncomingMessage): boolean {\n // Currently only handles Next.js prefetch requests but may check other frameworks in the future.\n return req.headers['next-router-prefetch'] === '1';\n}\n\n/**\n * Check if a request is for a common static asset that should be ignored by default.\n *\n * Only exported for tests.\n */\nexport function isStaticAssetRequest(urlPath: string): boolean {\n const path = stripUrlQueryAndFragment(urlPath);\n // Common static file extensions\n if (path.match(/\\.(ico|png|jpg|jpeg|gif|svg|css|js|woff|woff2|ttf|eot|webp|avif)$/)) {\n return true;\n }\n\n // Common metadata files\n if (path.match(/^\\/(robots\\.txt|sitemap\\.xml|manifest\\.json|browserconfig\\.xml)$/)) {\n return true;\n }\n\n return false;\n}\n\nfunction shouldIgnoreSpansForIncomingRequest(\n request: IncomingMessage,\n {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n }: {\n ignoreStaticAssets?: boolean;\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n },\n): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // request.url is the only property that holds any information about the url\n // it only consists of the URL path and query string (if any)\n const urlPath = request.url;\n\n const method = request.method?.toUpperCase();\n // We do not capture OPTIONS/HEAD requests as spans\n if (method === 'OPTIONS' || method === 'HEAD' || !urlPath) {\n return true;\n }\n\n // Default static asset filtering\n if (ignoreStaticAssets && method === 'GET' && isStaticAssetRequest(urlPath)) {\n return true;\n }\n\n if (ignoreIncomingRequests?.(urlPath, request)) {\n return true;\n }\n\n return false;\n}\n\nfunction getRequestContentLengthAttribute(request: IncomingMessage): SpanAttributes {\n const length = getContentLength(request.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(request.headers)) {\n return {\n ['http.request_content_length']: length,\n };\n } else {\n return {\n ['http.request_content_length_uncompressed']: length,\n };\n }\n}\n\nfunction getContentLength(headers: IncomingHttpHeaders): number | null {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nfunction isCompressed(headers: IncomingHttpHeaders): boolean {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n\nfunction getIncomingRequestAttributesOnResponse(request: IncomingMessage, response: ServerResponse): SpanAttributes {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n\n const newAttributes: SpanAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n // eslint-disable-next-line deprecation/deprecation\n [SEMATTRS_HTTP_STATUS_CODE]: statusCode,\n 'http.status_text': statusMessage?.toUpperCase(),\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_IP] = localAddress;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_PORT] = localPort;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_PEER_IP] = remoteAddress;\n newAttributes['net.peer.port'] = remotePort;\n }\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_HTTP_STATUS_CODE] = statusCode;\n newAttributes['http.status_text'] = (statusMessage || '').toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n const routeName = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = routeName;\n }\n\n return newAttributes;\n}\n\n/**\n * If the given status code should be filtered for the given list of status codes/ranges.\n */\nfunction shouldFilterStatusCode(statusCode: number, dropForStatusCodes: (number | [number, number])[]): boolean {\n return dropForStatusCodes.some(code => {\n if (typeof code === 'number') {\n return code === statusCode;\n }\n\n const [min, max] = code;\n return statusCode >= min && statusCode <= max;\n });\n}\n","import { objectToBaggageHeader, parseBaggageHeader, SENTRY_BAGGAGE_KEY_PREFIX } from '@sentry/core';\n\n/**\n * Merge two baggage headers into one.\n * - Sentry-specific entries (keys starting with \"sentry-\") from the new baggage take precedence\n * - Non-Sentry entries from existing baggage take precedence\n * The order of the existing baggage will be preserved, and new entries will be added to the end.\n *\n * This matches the behavior of OTEL's propagation.inject() which uses baggage.setEntry()\n * to overwrite existing entries with the same key.\n */\nexport function mergeBaggageHeaders(\n existing: Existing,\n baggage: string,\n): string | undefined | Existing {\n if (!existing) {\n return baggage;\n }\n\n const existingBaggageEntries = parseBaggageHeader(existing);\n const newBaggageEntries = parseBaggageHeader(baggage);\n\n if (!newBaggageEntries) {\n return existing;\n }\n\n // Single pass over new entries to partition sentry vs non-sentry\n const newSentryEntries: Record = {};\n const newNonSentryEntries: Record = {};\n for (const [key, value] of Object.entries(newBaggageEntries)) {\n if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n newSentryEntries[key] = value;\n } else {\n newNonSentryEntries[key] = value;\n }\n }\n\n const hasNewSentryEntries = Object.keys(newSentryEntries).length > 0;\n\n // If new baggage contains at least one sentry- value, we remove all old sentry- values\n // otherwise, we keep old sentry- values. If we don't remove old sentry- values, we end\n // up with an inconsistent dynamic sampling context propagation.\n const mergedBaggageEntries: Record = {};\n if (existingBaggageEntries) {\n for (const [key, value] of Object.entries(existingBaggageEntries)) {\n if (hasNewSentryEntries && key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n continue;\n }\n mergedBaggageEntries[key] = value;\n }\n }\n\n // Sentry entries from new baggage always overwrite; non-sentry only if not already present\n Object.assign(mergedBaggageEntries, newSentryEntries);\n for (const [key, value] of Object.entries(newNonSentryEntries)) {\n if (!mergedBaggageEntries[key]) {\n mergedBaggageEntries[key] = value;\n }\n }\n\n return objectToBaggageHeader(mergedBaggageEntries);\n}\n","import type { LRUMap, SanitizedRequestData } from '@sentry/core';\nimport {\n addBreadcrumb,\n debug,\n getBreadcrumbLogLevelFromHttpStatusCode,\n getClient,\n getSanitizedUrlString,\n getTraceData,\n isError,\n parseUrl,\n shouldPropagateTraceForUrl,\n} from '@sentry/core';\nimport type { ClientRequest, IncomingMessage, RequestOptions } from 'http';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { mergeBaggageHeaders } from './baggage';\n\nconst LOG_PREFIX = '@sentry/instrumentation-http';\n\n/** Add a breadcrumb for outgoing requests. */\nexport function addRequestBreadcrumb(request: ClientRequest, response: IncomingMessage | undefined): void {\n const data = getBreadcrumbData(request);\n\n const statusCode = response?.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\n/**\n * Add trace propagation headers to an outgoing request.\n * This must be called _before_ the request is sent!\n */\n// eslint-disable-next-line complexity\nexport function addTracePropagationHeadersToOutgoingRequest(\n request: ClientRequest,\n propagationDecisionMap: LRUMap,\n): void {\n const url = getClientRequestUrl(request);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const headersToAdd = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!headersToAdd) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = headersToAdd;\n\n const hasExistingSentryTraceHeader = !!request.getHeader('sentry-trace');\n\n if (hasExistingSentryTraceHeader) {\n return;\n }\n\n if (sentryTrace) {\n try {\n request.setHeader('sentry-trace', sentryTrace);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added sentry-trace header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add sentry-trace header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (traceparent && !request.getHeader('traceparent')) {\n try {\n request.setHeader('traceparent', traceparent);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added traceparent header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add traceparent header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (baggage) {\n const existingBaggage = request.getHeader('baggage');\n const newBaggage = mergeBaggageHeaders(existingBaggage, baggage);\n if (newBaggage) {\n try {\n request.setHeader('baggage', newBaggage);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added baggage header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add baggage header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n }\n}\n\nfunction getBreadcrumbData(request: ClientRequest): Partial {\n try {\n // `request.host` does not contain the port, but the host header does\n const host = request.getHeader('host') || request.host;\n const url = new URL(request.path, `${request.protocol}//${host}`);\n const parsedUrl = parseUrl(url.toString());\n\n const data: Partial = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Convert an outgoing request to request options. */\nexport function getRequestOptions(request: ClientRequest): RequestOptions {\n return {\n method: request.method,\n protocol: request.protocol,\n host: request.host,\n hostname: request.host,\n path: request.path,\n headers: request.getHeaders(),\n };\n}\n\n/**\n *\n */\nexport function getClientRequestUrl(request: ClientRequest): string {\n const hostname = request.getHeader('host') || request.host;\n const protocol = request.protocol;\n const path = request.path;\n\n return `${protocol}//${hostname}${path}`;\n}\n","/* eslint-disable max-lines */\nimport type { ChannelListener } from 'node:diagnostics_channel';\nimport { subscribe, unsubscribe } from 'node:diagnostics_channel';\nimport { errorMonitor } from 'node:events';\nimport type * as http from 'node:http';\nimport type * as https from 'node:https';\nimport { context, SpanStatusCode, trace } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_NETWORK_PROTOCOL_VERSION,\n ATTR_NETWORK_TRANSPORT,\n ATTR_URL_FULL,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH,\n SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n} from '@opentelemetry/semantic-conventions';\nimport type { Span, SpanAttributes, SpanStatus } from '@sentry/core';\nimport {\n debug,\n getHttpSpanDetailsFromUrlObject,\n getSpanStatusFromHttpCode,\n LRUMap,\n parseStringToURLObject,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n startInactiveSpan,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport { INSTRUMENTATION_NAME } from './constants';\nimport {\n addRequestBreadcrumb,\n addTracePropagationHeadersToOutgoingRequest,\n getClientRequestUrl,\n getRequestOptions,\n} from './outgoing-requests';\n\ntype Http = typeof http;\ntype Https = typeof https;\ntype IncomingHttpHeaders = http.IncomingHttpHeaders;\ntype OutgoingHttpHeaders = http.OutgoingHttpHeaders;\n\nexport type SentryHttpInstrumentationOptions = InstrumentationConfig & {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n *\n * @default `true`\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to propagate Sentry trace headers in outgoing requests.\n * By default this is done by the HttpInstrumentation, but if that is not added (e.g. because tracing is disabled)\n * then this instrumentation can take over.\n *\n * @default `false`\n */\n propagateTraceInOutgoingRequests?: boolean;\n\n /**\n * Whether to enable the capability to create spans for outgoing requests via diagnostic channels.\n * If enabled, spans will only be created if the `spans` option is also enabled (default: true).\n *\n * This is a feature flag that should be enabled by SDKs when the runtime supports it (Node 22.12+).\n * Individual users should not need to configure this directly.\n *\n * @default `false`\n */\n createSpansForOutgoingRequests?: boolean;\n\n /**\n * Whether to create spans for outgoing requests (user preference).\n * This only takes effect if `createSpansForOutgoingRequests` is also enabled.\n * If `createSpansForOutgoingRequests` is not enabled, this option is ignored.\n *\n * @default `true`\n */\n spans?: boolean;\n\n /**\n * Do not capture breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * For the scope of this instrumentation, this callback only controls breadcrumb creation.\n * The same option can be passed to the top-level httpIntegration where it controls both, breadcrumb and\n * span creation.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * @param request Contains the {@type RequestOptions} object used to make the outgoing request.\n */\n ignoreOutgoingRequests?: (url: string, request: http.RequestOptions) => boolean;\n\n /**\n * Hooks for outgoing request spans, called when `createSpansForOutgoingRequests` is enabled.\n * These mirror the OTEL HttpInstrumentation hooks for backwards compatibility.\n */\n outgoingRequestHook?: (span: Span, request: http.ClientRequest) => void;\n outgoingResponseHook?: (span: Span, response: http.IncomingMessage) => void;\n outgoingRequestApplyCustomAttributes?: (\n span: Span,\n request: http.ClientRequest,\n response: http.IncomingMessage,\n ) => void;\n\n // All options below do not do anything anymore in this instrumentation, and will be removed in the future.\n // They are only kept here for backwards compatibility - the respective functionality is now handled by the httpServerIntegration/httpServerSpansIntegration.\n\n /**\n * @depreacted This no longer does anything.\n */\n extractIncomingTraceFromHeader?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n disableIncomingRequestSpans?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreSpansForIncomingRequests?: (urlPath: string, request: http.IncomingMessage) => boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n ignoreIncomingRequestBody?: (url: string, request: http.RequestOptions) => boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * @deprecated This no longer does anything.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * @deprecated This no longer does anything.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: http.ClientRequest | http.IncomingMessage) => void;\n responseHook?: (span: Span, response: http.IncomingMessage | http.ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: http.ClientRequest | http.IncomingMessage,\n response: http.IncomingMessage | http.ServerResponse,\n ) => void;\n };\n\n /**\n * @deprecated This no longer does anything.\n */\n sessionFlushingDelayMS?: number;\n};\n\n/**\n * This custom HTTP instrumentation handles outgoing HTTP requests.\n *\n * It provides:\n * - Breadcrumbs for all outgoing requests\n * - Trace propagation headers (when enabled)\n * - Span creation for outgoing requests (when createSpansForOutgoingRequests is enabled)\n *\n * Span creation requires Node 22+ and uses diagnostic channels to avoid monkey-patching.\n * By default, this is only enabled in the node SDK, not in node-core or other runtime SDKs.\n *\n * Important note: Contrary to other OTEL instrumentation, this one cannot be unwrapped.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js/blob/f8ab5592ddea5cba0a3b33bf8d74f27872c0367f/experimental/packages/opentelemetry-instrumentation-http/src/http.ts\n */\nexport class SentryHttpInstrumentation extends InstrumentationBase {\n private _propagationDecisionMap: LRUMap;\n private _ignoreOutgoingRequestsMap: WeakMap;\n\n public constructor(config: SentryHttpInstrumentationOptions = {}) {\n super(INSTRUMENTATION_NAME, SDK_VERSION, config);\n\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** @inheritdoc */\n public init(): [InstrumentationNodeModuleDefinition, InstrumentationNodeModuleDefinition] {\n // We register handlers when either http or https is instrumented\n // but we only want to register them once, whichever is loaded first\n let hasRegisteredHandlers = false;\n\n const onHttpClientResponseFinish = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest; response: http.IncomingMessage };\n this._onOutgoingRequestFinish(data.request, data.response);\n }) satisfies ChannelListener;\n\n const onHttpClientRequestError = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest };\n this._onOutgoingRequestFinish(data.request, undefined);\n }) satisfies ChannelListener;\n\n const onHttpClientRequestCreated = ((_data: unknown) => {\n const data = _data as { request: http.ClientRequest };\n this._onOutgoingRequestCreated(data.request);\n }) satisfies ChannelListener;\n\n const wrap = (moduleExports: T): T => {\n if (hasRegisteredHandlers) {\n return moduleExports;\n }\n\n hasRegisteredHandlers = true;\n\n subscribe('http.client.response.finish', onHttpClientResponseFinish);\n\n // When an error happens, we still want to have a breadcrumb\n // In this case, `http.client.response.finish` is not triggered\n subscribe('http.client.request.error', onHttpClientRequestError);\n\n // NOTE: This channel only exists since Node 22.12+\n // Before that, outgoing requests are not patched\n // and trace headers are not propagated, sadly.\n if (this.getConfig().propagateTraceInOutgoingRequests || this.getConfig().createSpansForOutgoingRequests) {\n subscribe('http.client.request.created', onHttpClientRequestCreated);\n }\n return moduleExports;\n };\n\n const unwrap = (): void => {\n unsubscribe('http.client.response.finish', onHttpClientResponseFinish);\n unsubscribe('http.client.request.error', onHttpClientRequestError);\n unsubscribe('http.client.request.created', onHttpClientRequestCreated);\n };\n\n /**\n * You may be wondering why we register these diagnostics-channel listeners\n * in such a convoluted way (as InstrumentationNodeModuleDefinition...)˝,\n * instead of simply subscribing to the events once in here.\n * The reason for this is timing semantics: These functions are called once the http or https module is loaded.\n * If we'd subscribe before that, there seem to be conflicts with the OTEL native instrumentation in some scenarios,\n * especially the \"import-on-top\" pattern of setting up ESM applications.\n */\n return [\n new InstrumentationNodeModuleDefinition('http', ['*'], wrap, unwrap),\n new InstrumentationNodeModuleDefinition('https', ['*'], wrap, unwrap),\n ];\n }\n\n /**\n * Start a span for an outgoing request.\n * The span wraps the callback of the request, and ends when the response is finished.\n */\n private _startSpanForOutgoingRequest(request: http.ClientRequest): Span {\n // We monkey-patch `req.once('response'), which is used to trigger the callback of the request\n // eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation\n const originalOnce = request.once;\n\n const [name, attributes] = _getOutgoingRequestSpanData(request);\n\n const span = startInactiveSpan({\n name,\n attributes,\n onlyIfParent: true,\n });\n\n this.getConfig().outgoingRequestHook?.(span, request);\n\n const newOnce = new Proxy(originalOnce, {\n apply(target, thisArg, args: Parameters) {\n const [event] = args;\n if (event !== 'response') {\n return target.apply(thisArg, args);\n }\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n return context.with(requestContext, () => {\n return target.apply(thisArg, args);\n });\n },\n });\n\n // eslint-disable-next-line deprecation/deprecation\n request.once = newOnce;\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\n const endSpan = (status: SpanStatus): void => {\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n\n span.setStatus(status);\n span.end();\n };\n\n request.prependListener('response', response => {\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n\n context.bind(context.active(), response);\n\n const additionalAttributes = _getOutgoingRequestEndedSpanData(response);\n span.setAttributes(additionalAttributes);\n\n this.getConfig().outgoingResponseHook?.(span, response);\n this.getConfig().outgoingRequestApplyCustomAttributes?.(span, request, response);\n\n const endHandler = (forceError: boolean = false): void => {\n this._diag.debug('outgoingRequest on end()');\n\n const status =\n // eslint-disable-next-line deprecation/deprecation\n forceError || typeof response.statusCode !== 'number' || (response.aborted && !response.complete)\n ? { code: SpanStatusCode.ERROR }\n : getSpanStatusFromHttpCode(response.statusCode);\n\n endSpan(status);\n };\n\n response.on('end', () => {\n endHandler();\n });\n response.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on response error()', error);\n endHandler(true);\n });\n });\n\n // Fallback if proper response end handling above fails\n request.on('close', () => {\n endSpan({ code: SpanStatusCode.UNSET });\n });\n request.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on request error()', error);\n endSpan({ code: SpanStatusCode.ERROR });\n });\n\n return span;\n }\n\n /**\n * This is triggered when an outgoing request finishes.\n * It has access to the final request and response objects.\n */\n private _onOutgoingRequestFinish(request: http.ClientRequest, response?: http.IncomingMessage): void {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling finished outgoing request');\n\n const _breadcrumbs = this.getConfig().breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n // Note: We cannot rely on the map being set by `_onOutgoingRequestCreated`, because that is not run in Node <22\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addRequestBreadcrumb(request, response);\n }\n }\n\n /**\n * This is triggered when an outgoing request is created.\n * It creates a span (if enabled) and propagates trace headers within the span's context,\n * so downstream services link to the outgoing HTTP span rather than its parent.\n */\n private _onOutgoingRequestCreated(request: http.ClientRequest): void {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling outgoing request created');\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n const shouldCreateSpan = this.getConfig().createSpansForOutgoingRequests && (this.getConfig().spans ?? true);\n const shouldPropagate = this.getConfig().propagateTraceInOutgoingRequests;\n\n if (shouldCreateSpan) {\n const span = this._startSpanForOutgoingRequest(request);\n\n // Propagate headers within the span's context so the sentry-trace header\n // contains the outgoing span's ID, not the parent span's ID.\n // Only do this if the span is recording (has a parent) - otherwise the non-recording\n // span would produce all-zero trace IDs instead of using the scope's propagation context.\n if (shouldPropagate && span.isRecording()) {\n const requestContext = trace.setSpan(context.active(), span);\n context.with(requestContext, () => {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n });\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n private _shouldIgnoreOutgoingRequest(request: http.ClientRequest): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (!ignoreOutgoingRequests) {\n return false;\n }\n\n const options = getRequestOptions(request);\n const url = getClientRequestUrl(request);\n return ignoreOutgoingRequests(url, options);\n }\n}\n\nfunction _getOutgoingRequestSpanData(request: http.ClientRequest): [string, SpanAttributes] {\n const url = getClientRequestUrl(request);\n\n const [name, attributes] = getHttpSpanDetailsFromUrlObject(\n parseStringToURLObject(url),\n 'client',\n 'auto.http.otel.http',\n request,\n );\n\n const userAgent = request.getHeader('user-agent');\n\n return [\n name,\n {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n 'otel.kind': 'CLIENT',\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n [ATTR_URL_FULL]: url,\n 'http.url': url,\n 'http.method': request.method,\n 'http.target': request.path || '/',\n 'net.peer.name': request.host,\n 'http.host': request.getHeader('host'),\n ...attributes,\n },\n ];\n}\n\nfunction _getOutgoingRequestEndedSpanData(response: http.IncomingMessage): SpanAttributes {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n\n const transport = httpVersion.toUpperCase() !== 'QUIC' ? 'ip_tcp' : 'ip_udp';\n\n const additionalAttributes: SpanAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n [ATTR_NETWORK_PROTOCOL_VERSION]: httpVersion,\n 'http.flavor': httpVersion,\n [ATTR_NETWORK_TRANSPORT]: transport,\n 'net.transport': transport,\n ['http.status_text']: statusMessage?.toUpperCase(),\n 'http.status_code': statusCode,\n ...getResponseContentLengthAttributes(response),\n };\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n\n additionalAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n additionalAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n additionalAttributes['net.peer.ip'] = remoteAddress;\n additionalAttributes['net.peer.port'] = remotePort;\n }\n\n return additionalAttributes;\n}\n\nfunction getResponseContentLengthAttributes(response: http.IncomingMessage): SpanAttributes {\n const length = getContentLength(response.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(response.headers)) {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]: length };\n } else {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]: length };\n }\n}\n\nfunction getContentLength(headers: http.OutgoingHttpHeaders | http.IncomingHttpHeaders): number | undefined {\n const contentLengthHeader = headers['content-length'];\n if (typeof contentLengthHeader === 'number') {\n return contentLengthHeader;\n }\n if (typeof contentLengthHeader !== 'string') {\n return undefined;\n }\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) {\n return undefined;\n }\n\n return contentLength;\n}\n\nfunction isCompressed(headers: OutgoingHttpHeaders | IncomingHttpHeaders): boolean {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n","import type { IncomingMessage, RequestOptions } from 'node:http';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument';\nimport type { NodeClient } from '../../sdk/client';\nimport type { HttpServerIntegrationOptions } from './httpServerIntegration';\nimport { httpServerIntegration } from './httpServerIntegration';\nimport type { HttpServerSpansIntegrationOptions } from './httpServerSpansIntegration';\nimport { httpServerSpansIntegration } from './httpServerSpansIntegration';\nimport type { SentryHttpInstrumentationOptions } from './SentryHttpInstrumentation';\nimport { SentryHttpInstrumentation } from './SentryHttpInstrumentation';\n\nconst INTEGRATION_NAME = 'Http';\n\ninterface HttpOptions {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to create spans for requests or not.\n * As of now, creates spans for incoming requests, but not outgoing requests.\n *\n * @default `true`\n */\n spans?: boolean;\n\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing HTTP requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled).\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n *\n * The `url` param contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * For example: `'https://someService.com/users/details?id=123'`\n *\n * The `request` param contains the original {@type RequestOptions} object used to make the outgoing request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreOutgoingRequests?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n dropSpansForIncomingRequestStatusCodes?: (number | [number, number])[];\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreIncomingRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * If true, do not generate spans for incoming requests at all.\n * This is used by Remix to avoid generating spans for incoming requests, as it generates its own spans.\n */\n disableIncomingRequestSpans?: boolean;\n}\n\nexport const instrumentSentryHttp = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n options => {\n return new SentryHttpInstrumentation(options);\n },\n);\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs for outgoing HTTP requests which will be attached to the currently active span.\n */\nexport const httpIntegration = defineIntegration((options: HttpOptions = {}) => {\n const serverOptions: HttpServerIntegrationOptions = {\n sessions: options.trackIncomingRequestsAsSessions,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n ignoreRequestBody: options.ignoreIncomingRequestBody,\n maxRequestBodySize: options.maxIncomingRequestBodySize,\n };\n\n const serverSpansOptions: HttpServerSpansIntegrationOptions = {\n ignoreIncomingRequests: options.ignoreIncomingRequests,\n ignoreStaticAssets: options.ignoreStaticAssets,\n ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n };\n\n const httpInstrumentationOptions: SentryHttpInstrumentationOptions = {\n breadcrumbs: options.breadcrumbs,\n propagateTraceInOutgoingRequests: options.tracePropagation ?? true,\n ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n };\n\n const server = httpServerIntegration(serverOptions);\n const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n // In node-core, for now we disable incoming requests spans by default\n // we may revisit this in a future release\n const spans = options.spans ?? false;\n const disableIncomingRequestSpans = options.disableIncomingRequestSpans ?? false;\n const enabledServerSpans = spans && !disableIncomingRequestSpans;\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n if (enabledServerSpans) {\n serverSpans.setup(client);\n }\n },\n setupOnce() {\n server.setupOnce();\n\n instrumentSentryHttp(httpInstrumentationOptions);\n },\n\n processEvent(event) {\n // Note: We always run this, even if spans are disabled\n // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n return serverSpans.processEvent(event);\n },\n };\n});\n","import { parseSemver } from '@sentry/core';\n\nexport const NODE_VERSION = parseSemver(process.versions.node) as { major: number; minor: number; patch: number };\nexport const NODE_MAJOR = NODE_VERSION.major;\nexport const NODE_MINOR = NODE_VERSION.minor;\n","import type { LRUMap, SanitizedRequestData } from '@sentry/core';\nimport {\n addBreadcrumb,\n getBreadcrumbLogLevelFromHttpStatusCode,\n getClient,\n getSanitizedUrlString,\n getTraceData,\n parseUrl,\n shouldPropagateTraceForUrl,\n} from '@sentry/core';\nimport type { UndiciRequest, UndiciResponse } from '../integrations/node-fetch/types';\nimport { mergeBaggageHeaders } from './baggage';\nimport { debug } from '@sentry/core';\nconst SENTRY_TRACE_HEADER = 'sentry-trace';\nconst SENTRY_BAGGAGE_HEADER = 'baggage';\nconst W3C_TRACEPARENT_HEADER = 'traceparent';\n/**\n * Add trace propagation headers to an outgoing fetch/undici request.\n *\n * Checks if the request URL matches trace propagation targets,\n * then injects sentry-trace, traceparent, and baggage headers.\n */\n// eslint-disable-next-line complexity\nexport function addTracePropagationHeadersToFetchRequest(\n request: UndiciRequest,\n propagationDecisionMap: LRUMap,\n): void {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Manually add the trace headers, if it applies\n // Note: We do not use `propagation.inject()` here, because our propagator relies on an active span\n // Which we do not have in this case\n // The propagator _may_ overwrite this, but this should be fine as it is the same data\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const addedHeaders = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!addedHeaders) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = addedHeaders;\n\n const requestHeaders = Array.isArray(request.headers) ? request.headers : stringToArrayHeaders(request.headers);\n\n // OTel's UndiciInstrumentation calls propagation.inject() which unconditionally\n // appends headers to the request. When the user also sets headers via getTraceData(),\n // this results in duplicate sentry-trace and baggage (and optionally traceparent) entries.\n // We clean these up before applying our own logic.\n _deduplicateArrayHeader(requestHeaders, SENTRY_TRACE_HEADER);\n _deduplicateArrayHeader(requestHeaders, SENTRY_BAGGAGE_HEADER);\n if (propagateTraceparent) {\n _deduplicateArrayHeader(requestHeaders, W3C_TRACEPARENT_HEADER);\n }\n\n // We do not want to overwrite existing headers here\n // If the core UndiciInstrumentation is registered, it will already have set the headers\n // We do not want to add any then\n const hasExistingSentryTraceHeader = _findExistingHeaderIndex(requestHeaders, SENTRY_TRACE_HEADER) !== -1;\n\n // We do not want to set any headers if we already have an existing sentry-trace header.\n // sentry-trace is still the source of truth, otherwise we risk mixing up baggage and sentry-trace values.\n if (!hasExistingSentryTraceHeader) {\n if (sentryTrace) {\n requestHeaders.push(SENTRY_TRACE_HEADER, sentryTrace);\n }\n\n if (traceparent && _findExistingHeaderIndex(requestHeaders, 'traceparent') === -1) {\n requestHeaders.push('traceparent', traceparent);\n }\n\n // For baggage, we make sure to merge this into a possibly existing header\n const existingBaggageIndex = _findExistingHeaderIndex(requestHeaders, SENTRY_BAGGAGE_HEADER);\n if (baggage && existingBaggageIndex === -1) {\n requestHeaders.push(SENTRY_BAGGAGE_HEADER, baggage);\n } else if (baggage) {\n // headers in format [key_0, value_0, key_1, value_1, ...], hence the +1 here\n const existingBaggageValue = requestHeaders[existingBaggageIndex + 1];\n const merged = mergeBaggageHeaders(existingBaggageValue, baggage);\n if (merged) {\n requestHeaders[existingBaggageIndex + 1] = merged;\n }\n }\n }\n\n if (!Array.isArray(request.headers)) {\n // For original string request headers, we need to write them back to the request\n request.headers = arrayToStringHeaders(requestHeaders);\n }\n}\n\nfunction stringToArrayHeaders(requestHeaders: string): string[] {\n const headersArray = requestHeaders.split('\\r\\n');\n const headers: string[] = [];\n for (const header of headersArray) {\n try {\n const colonIndex = header.indexOf(':');\n if (colonIndex === -1) {\n continue;\n }\n const key = header.slice(0, colonIndex).trim();\n const value = header.slice(colonIndex + 1).trim();\n if (key) {\n headers.push(key, value);\n }\n } catch {\n debug.warn(`Failed to convert string request header to array header: ${header}`);\n }\n }\n return headers;\n}\n\nfunction arrayToStringHeaders(headers: string[]): string {\n const headerPairs: string[] = [];\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i];\n const value = headers[i + 1];\n if (!key || value == null) {\n // skip falsy keys but only null/undefined values\n continue;\n }\n headerPairs.push(`${key}: ${value}`);\n }\n\n if (!headerPairs.length) {\n return '';\n }\n\n return headerPairs.join('\\r\\n').concat('\\r\\n');\n}\n\n/**\n * For a given header name, if there are multiple entries in the [key, value, key, value, ...] array,\n * keep the first entry and remove the rest.\n * For baggage, values are merged to preserve all entries but to dedupe sentry- values, and always\n * keep the first occurrence of them\n */\nfunction _deduplicateArrayHeader(headers: string[], headerName: string): void {\n let firstIndex = -1;\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i] !== headerName) {\n continue;\n }\n\n if (firstIndex === -1) {\n firstIndex = i;\n continue;\n }\n\n const firstHeaderValue = headers[firstIndex + 1];\n if (headerName === SENTRY_BAGGAGE_HEADER && firstHeaderValue) {\n // mergeBaggageHeaders always takes sentry- values from the new baggage (2nd param) and merges\n // it with the existing one (1st param). Here, we want to keep the first header's existing\n // sentry- values in favor of the new ones. Hence we swap the parameters.\n const merged = mergeBaggageHeaders(headers[i + 1], firstHeaderValue);\n if (merged) {\n headers[firstIndex + 1] = merged;\n }\n }\n headers.splice(i, 2);\n i -= 2;\n }\n}\n\n/**\n * Find the index of an existing header in an array of headers.\n * Only take even indices, because headers are in format [key_0, value_0, key_1, value_1, ...]\n * otherwise we could match a header _value_ with @param name\n */\nfunction _findExistingHeaderIndex(headers: string[], name: string): number {\n return headers.findIndex((header, i) => i % 2 === 0 && header === name);\n}\n\n/** Add a breadcrumb for an outgoing fetch/undici request. */\nexport function addFetchRequestBreadcrumb(request: UndiciRequest, response: UndiciResponse): void {\n const data = getBreadcrumbData(request);\n\n const statusCode = response.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\nfunction getBreadcrumbData(request: UndiciRequest): Partial {\n try {\n const url = getAbsoluteUrl(request.origin, request.path);\n const parsedUrl = parseUrl(url);\n\n const data: Partial = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Get the absolute URL from an origin and path. */\nexport function getAbsoluteUrl(origin: string, path: string = '/'): string {\n try {\n const url = new URL(path, origin);\n return url.toString();\n } catch {\n // fallback: Construct it on our own\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n }\n}\n","import { context } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport { LRUMap, SDK_VERSION } from '@sentry/core';\nimport * as diagch from 'diagnostics_channel';\nimport { NODE_MAJOR, NODE_MINOR } from '../../nodeVersion';\nimport {\n addFetchRequestBreadcrumb,\n addTracePropagationHeadersToFetchRequest,\n getAbsoluteUrl,\n} from '../../utils/outgoingFetchRequest';\nimport type { UndiciRequest, UndiciResponse } from './types';\n\nexport type SentryNodeFetchInstrumentationOptions = InstrumentationConfig & {\n /**\n * Whether breadcrumbs should be recorded for requests.\n *\n * @default `true`\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's UndiciInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture breadcrumbs or inject headers for outgoing fetch requests to URLs where the given callback returns `true`.\n * The same option can be passed to the top-level httpIntegration where it controls both, breadcrumb and\n * span creation.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n};\n\ninterface ListenerRecord {\n name: string;\n unsubscribe: () => void;\n}\n\n/**\n * This custom node-fetch instrumentation is used to instrument outgoing fetch requests.\n * It does not emit any spans.\n *\n * The reason this is isolated from the OpenTelemetry instrumentation is that users may overwrite this,\n * which would lead to Sentry not working as expected.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js-contrib/blob/28e209a9da36bc4e1f8c2b0db7360170ed46cb80/plugins/node/instrumentation-undici/src/undici.ts\n */\nexport class SentryNodeFetchInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n private _channelSubs: Array;\n private _propagationDecisionMap: LRUMap;\n private _ignoreOutgoingRequestsMap: WeakMap;\n\n public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {\n super('@sentry/instrumentation-node-fetch', SDK_VERSION, config);\n this._channelSubs = [];\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** No need to instrument files/modules. */\n public init(): void {\n return undefined;\n }\n\n /** Disable the instrumentation. */\n public disable(): void {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs = [];\n }\n\n /** Enable the instrumentation. */\n public enable(): void {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n\n this._subscribeToChannel('undici:request:create', this._onRequestCreated.bind(this));\n this._subscribeToChannel('undici:request:headers', this._onResponseHeaders.bind(this));\n }\n\n /**\n * This method is called when a request is created.\n * You can still mutate the request here before it is sent.\n */\n private _onRequestCreated({ request }: { request: UndiciRequest }): void {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const shouldIgnore = this._shouldIgnoreOutgoingRequest(request);\n // We store this decisision for later so we do not need to re-evaluate it\n // Additionally, the active context is not correct in _onResponseHeaders, so we need to make sure it is evaluated here\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n if (config.tracePropagation !== false) {\n addTracePropagationHeadersToFetchRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * This method is called when a response is received.\n */\n private _onResponseHeaders({ request, response }: { request: UndiciRequest; response: UndiciResponse }): void {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const _breadcrumbs = config.breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addFetchRequestBreadcrumb(request, response);\n }\n }\n\n /** Subscribe to a diagnostics channel. */\n private _subscribeToChannel(\n diagnosticChannel: string,\n onMessage: (message: unknown, name: string | symbol) => void,\n ): void {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const useNewSubscribe = NODE_MAJOR > 18 || (NODE_MAJOR === 18 && NODE_MINOR >= 19);\n\n let unsubscribe: () => void;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n } else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n private _shouldIgnoreOutgoingRequest(request: UndiciRequest): boolean {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // Add trace propagation headers\n const url = getAbsoluteUrl(request.origin, request.path);\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (typeof ignoreOutgoingRequests !== 'function' || !url) {\n return false;\n }\n\n return ignoreOutgoingRequests(url);\n }\n}\n","import type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument';\nimport { SentryNodeFetchInstrumentation } from './SentryNodeFetchInstrumentation';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\ninterface NodeFetchOptions {\n /**\n * Whether breadcrumbs should be recorded for requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing fetch requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n}\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options: NodeFetchOptions) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options: NodeFetchOptions = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n instrumentSentryNodeFetch(options);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ContextManager, Context } from '@opentelemetry/api';\nimport { EventEmitter } from 'events';\n\ntype Func = (...args: unknown[]) => T;\n\n/**\n * Store a map for each event of all original listeners and their \"patched\"\n * version. So when a listener is removed by the user, the corresponding\n * patched function will be also removed.\n */\ninterface PatchMap {\n [name: string]: WeakMap, Func>;\n}\n\nconst ADD_LISTENER_METHODS = [\n 'addListener' as const,\n 'on' as const,\n 'once' as const,\n 'prependListener' as const,\n 'prependOnceListener' as const,\n];\n\nexport abstract class AbstractAsyncHooksContextManager\n implements ContextManager\n{\n abstract active(): Context;\n\n abstract with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType;\n\n abstract enable(): this;\n\n abstract disable(): this;\n\n /**\n * Binds a the certain context or the active one to the target function and then returns the target\n * @param context A context (span) to be bind to target\n * @param target a function or event emitter. When target or one of its callbacks is called,\n * the provided context will be used as the active context for the duration of the call.\n */\n bind(context: Context, target: T): T {\n if (target instanceof EventEmitter) {\n return this._bindEventEmitter(context, target);\n }\n\n if (typeof target === 'function') {\n return this._bindFunction(context, target);\n }\n return target;\n }\n\n private _bindFunction(context: Context, target: T): T {\n const manager = this;\n const contextWrapper = function (this: never, ...args: unknown[]) {\n return manager.with(context, () => target.apply(this, args));\n };\n Object.defineProperty(contextWrapper, 'length', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: target.length,\n });\n /**\n * It isn't possible to tell Typescript that contextWrapper is the same as T\n * so we forced to cast as any here.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return contextWrapper as any;\n }\n\n /**\n * By default, EventEmitter call their callback with their context, which we do\n * not want, instead we will bind a specific context to all callbacks that\n * go through it.\n * @param context the context we want to bind\n * @param ee EventEmitter an instance of EventEmitter to patch\n */\n private _bindEventEmitter(\n context: Context,\n ee: T\n ): T {\n const map = this._getPatchMap(ee);\n if (map !== undefined) return ee;\n this._createPatchMap(ee);\n\n // patch methods that add a listener to propagate context\n ADD_LISTENER_METHODS.forEach(methodName => {\n if (ee[methodName] === undefined) return;\n ee[methodName] = this._patchAddListener(ee, ee[methodName], context);\n });\n // patch methods that remove a listener\n if (typeof ee.removeListener === 'function') {\n ee.removeListener = this._patchRemoveListener(ee, ee.removeListener);\n }\n if (typeof ee.off === 'function') {\n ee.off = this._patchRemoveListener(ee, ee.off);\n }\n // patch method that remove all listeners\n if (typeof ee.removeAllListeners === 'function') {\n ee.removeAllListeners = this._patchRemoveAllListeners(\n ee,\n ee.removeAllListeners\n );\n }\n return ee;\n }\n\n /**\n * Patch methods that remove a given listener so that we match the \"patched\"\n * version of that listener (the one that propagate context).\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n private _patchRemoveListener(ee: EventEmitter, original: Function) {\n const contextManager = this;\n return function (this: never, event: string, listener: Func) {\n const events = contextManager._getPatchMap(ee)?.[event];\n if (events === undefined) {\n return original.call(this, event, listener);\n }\n const patchedListener = events.get(listener);\n return original.call(this, event, patchedListener || listener);\n };\n }\n\n /**\n * Patch methods that remove all listeners so we remove our\n * internal references for a given event.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n private _patchRemoveAllListeners(ee: EventEmitter, original: Function) {\n const contextManager = this;\n return function (this: never, event: string) {\n const map = contextManager._getPatchMap(ee);\n if (map !== undefined) {\n if (arguments.length === 0) {\n contextManager._createPatchMap(ee);\n } else if (map[event] !== undefined) {\n delete map[event];\n }\n }\n return original.apply(this, arguments);\n };\n }\n\n /**\n * Patch methods on an event emitter instance that can add listeners so we\n * can force them to propagate a given context.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n * @param [context] context to propagate when calling listeners\n */\n private _patchAddListener(\n ee: EventEmitter,\n original: Function,\n context: Context\n ) {\n const contextManager = this;\n return function (this: never, event: string, listener: Func) {\n /**\n * This check is required to prevent double-wrapping the listener.\n * The implementation for ee.once wraps the listener and calls ee.on.\n * Without this check, we would wrap that wrapped listener.\n * This causes an issue because ee.removeListener depends on the onceWrapper\n * to properly remove the listener. If we wrap their wrapper, we break\n * that detection.\n */\n if (contextManager._wrapped) {\n return original.call(this, event, listener);\n }\n let map = contextManager._getPatchMap(ee);\n if (map === undefined) {\n map = contextManager._createPatchMap(ee);\n }\n let listeners = map[event];\n if (listeners === undefined) {\n listeners = new WeakMap();\n map[event] = listeners;\n }\n const patchedListener = contextManager.bind(context, listener);\n // store a weak reference of the user listener to ours\n listeners.set(listener, patchedListener);\n\n /**\n * See comment at the start of this function for the explanation of this property.\n */\n contextManager._wrapped = true;\n try {\n return original.call(this, event, patchedListener);\n } finally {\n contextManager._wrapped = false;\n }\n };\n }\n\n private _createPatchMap(ee: EventEmitter): PatchMap {\n const map = Object.create(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (ee as any)[this._kOtListeners] = map;\n return map;\n }\n private _getPatchMap(ee: EventEmitter): PatchMap | undefined {\n return (ee as never)[this._kOtListeners];\n }\n\n private readonly _kOtListeners = Symbol('OtListeners');\n private _wrapped = false;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT } from '@opentelemetry/api';\nimport * as asyncHooks from 'async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager';\n\n/**\n * @deprecated Use AsyncLocalStorageContextManager instead.\n */\nexport class AsyncHooksContextManager extends AbstractAsyncHooksContextManager {\n private _asyncHook: asyncHooks.AsyncHook;\n private _contexts: Map = new Map();\n private _stack: Array = [];\n\n constructor() {\n super();\n this._asyncHook = asyncHooks.createHook({\n init: this._init.bind(this),\n before: this._before.bind(this),\n after: this._after.bind(this),\n destroy: this._destroy.bind(this),\n promiseResolve: this._destroy.bind(this),\n });\n }\n\n active(): Context {\n return this._stack[this._stack.length - 1] ?? ROOT_CONTEXT;\n }\n\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n this._enterContext(context);\n try {\n return fn.call(thisArg!, ...args);\n } finally {\n this._exitContext();\n }\n }\n\n enable(): this {\n this._asyncHook.enable();\n return this;\n }\n\n disable(): this {\n this._asyncHook.disable();\n this._contexts.clear();\n this._stack = [];\n return this;\n }\n\n /**\n * Init hook will be called when userland create a async context, setting the\n * context as the current one if it exist.\n * @param uid id of the async context\n * @param type the resource type\n */\n private _init(uid: number, type: string) {\n // ignore TIMERWRAP as they combine timers with same timeout which can lead to\n // false context propagation. TIMERWRAP has been removed in node 11\n // every timer has it's own `Timeout` resource anyway which is used to propagate\n // context.\n if (type === 'TIMERWRAP') return;\n\n const context = this._stack[this._stack.length - 1];\n if (context !== undefined) {\n this._contexts.set(uid, context);\n }\n }\n\n /**\n * Destroy hook will be called when a given context is no longer used so we can\n * remove its attached context.\n * @param uid uid of the async context\n */\n private _destroy(uid: number) {\n this._contexts.delete(uid);\n }\n\n /**\n * Before hook is called just before executing a async context.\n * @param uid uid of the async context\n */\n private _before(uid: number) {\n const context = this._contexts.get(uid);\n if (context !== undefined) {\n this._enterContext(context);\n }\n }\n\n /**\n * After hook is called just after completing the execution of a async context.\n */\n private _after() {\n this._exitContext();\n }\n\n /**\n * Set the given context as active\n */\n private _enterContext(context: Context) {\n this._stack.push(context);\n }\n\n /**\n * Remove the context at the root of the stack\n */\n private _exitContext() {\n this._stack.pop();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT } from '@opentelemetry/api';\nimport { AsyncLocalStorage } from 'async_hooks';\nimport { AbstractAsyncHooksContextManager } from './AbstractAsyncHooksContextManager';\n\nexport class AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager {\n private _asyncLocalStorage: AsyncLocalStorage;\n\n constructor() {\n super();\n this._asyncLocalStorage = new AsyncLocalStorage();\n }\n\n active(): Context {\n return this._asyncLocalStorage.getStore() ?? ROOT_CONTEXT;\n }\n\n with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const cb = thisArg == null ? fn : fn.bind(thisArg);\n return this._asyncLocalStorage.run(context, cb as never, ...args);\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n this._asyncLocalStorage.disable();\n return this;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { AsyncHooksContextManager } from './AsyncHooksContextManager';\nexport { AsyncLocalStorageContextManager } from './AsyncLocalStorageContextManager';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Attributes, AttributeValue } from '@opentelemetry/api';\nimport { diag } from '@opentelemetry/api';\nimport { SDK_INFO } from '@opentelemetry/core';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_TELEMETRY_SDK_LANGUAGE,\n ATTR_TELEMETRY_SDK_NAME,\n ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport type { Resource } from './Resource';\nimport { defaultServiceName } from './default-service-name';\nimport type {\n DetectedResource,\n DetectedResourceAttributes,\n MaybePromise,\n RawResourceAttribute,\n ResourceOptions,\n} from './types';\nimport { isPromiseLike } from './utils';\n\nclass ResourceImpl implements Resource {\n private _rawAttributes: RawResourceAttribute[];\n private _asyncAttributesPending = false;\n private _schemaUrl?: string;\n\n private _memoizedAttributes?: Attributes;\n\n static FromAttributeList(\n attributes: [string, MaybePromise][],\n options?: ResourceOptions\n ): Resource {\n const res = new ResourceImpl({}, options);\n res._rawAttributes = guardedRawAttributes(attributes);\n res._asyncAttributesPending =\n attributes.filter(([_, val]) => isPromiseLike(val)).length > 0;\n return res;\n }\n\n constructor(\n /**\n * A dictionary of attributes with string keys and values that provide\n * information about the entity as numbers, strings or booleans\n * TODO: Consider to add check/validation on attributes.\n */\n resource: DetectedResource,\n options?: ResourceOptions\n ) {\n const attributes = resource.attributes ?? {};\n this._rawAttributes = Object.entries(attributes).map(([k, v]) => {\n if (isPromiseLike(v)) {\n // side-effect\n this._asyncAttributesPending = true;\n }\n\n return [k, v];\n });\n\n this._rawAttributes = guardedRawAttributes(this._rawAttributes);\n this._schemaUrl = validateSchemaUrl(options?.schemaUrl);\n }\n\n public get asyncAttributesPending(): boolean {\n return this._asyncAttributesPending;\n }\n\n public async waitForAsyncAttributes(): Promise {\n if (!this.asyncAttributesPending) {\n return;\n }\n\n for (let i = 0; i < this._rawAttributes.length; i++) {\n const [k, v] = this._rawAttributes[i];\n this._rawAttributes[i] = [k, isPromiseLike(v) ? await v : v];\n }\n\n this._asyncAttributesPending = false;\n }\n\n public get attributes(): Attributes {\n if (this.asyncAttributesPending) {\n diag.error(\n 'Accessing resource attributes before async attributes settled'\n );\n }\n\n if (this._memoizedAttributes) {\n return this._memoizedAttributes;\n }\n\n const attrs: Attributes = {};\n for (const [k, v] of this._rawAttributes) {\n if (isPromiseLike(v)) {\n diag.debug(`Unsettled resource attribute ${k} skipped`);\n continue;\n }\n if (v != null) {\n attrs[k] ??= v;\n }\n }\n\n // only memoize output if all attributes are settled\n if (!this._asyncAttributesPending) {\n this._memoizedAttributes = attrs;\n }\n\n return attrs;\n }\n\n public getRawAttributes(): RawResourceAttribute[] {\n return this._rawAttributes;\n }\n\n public get schemaUrl(): string | undefined {\n return this._schemaUrl;\n }\n\n public merge(resource: Resource | null): Resource {\n if (resource == null) return this;\n\n // Order is important\n // Spec states incoming attributes override existing attributes\n const mergedSchemaUrl = mergeSchemaUrl(this, resource);\n const mergedOptions: ResourceOptions | undefined = mergedSchemaUrl\n ? { schemaUrl: mergedSchemaUrl }\n : undefined;\n\n return ResourceImpl.FromAttributeList(\n [...resource.getRawAttributes(), ...this.getRawAttributes()],\n mergedOptions\n );\n }\n}\n\nexport function resourceFromAttributes(\n attributes: DetectedResourceAttributes,\n options?: ResourceOptions\n): Resource {\n return ResourceImpl.FromAttributeList(Object.entries(attributes), options);\n}\n\nexport function resourceFromDetectedResource(\n detectedResource: DetectedResource,\n options?: ResourceOptions\n): Resource {\n return new ResourceImpl(detectedResource, options);\n}\n\nexport function emptyResource(): Resource {\n return resourceFromAttributes({});\n}\n\nexport function defaultResource(): Resource {\n return resourceFromAttributes({\n [ATTR_SERVICE_NAME]: defaultServiceName(),\n [ATTR_TELEMETRY_SDK_LANGUAGE]: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE],\n [ATTR_TELEMETRY_SDK_NAME]: SDK_INFO[ATTR_TELEMETRY_SDK_NAME],\n [ATTR_TELEMETRY_SDK_VERSION]: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION],\n });\n}\n\nfunction guardedRawAttributes(\n attributes: RawResourceAttribute[]\n): RawResourceAttribute[] {\n return attributes.map(([k, v]) => {\n if (isPromiseLike(v)) {\n return [\n k,\n v.catch(err => {\n diag.debug(\n 'promise rejection for resource attribute: %s - %s',\n k,\n err\n );\n return undefined;\n }),\n ];\n }\n return [k, v];\n });\n}\n\nfunction validateSchemaUrl(schemaUrl?: string): string | undefined {\n if (typeof schemaUrl === 'string' || schemaUrl === undefined) {\n return schemaUrl;\n }\n\n diag.warn(\n 'Schema URL must be string or undefined, got %s. Schema URL will be ignored.',\n schemaUrl\n );\n\n return undefined;\n}\n\nfunction mergeSchemaUrl(\n old: Resource,\n updating: Resource | null\n): string | undefined {\n const oldSchemaUrl = old?.schemaUrl;\n const updatingSchemaUrl = updating?.schemaUrl;\n\n const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === '';\n const isUpdatingEmpty =\n updatingSchemaUrl === undefined || updatingSchemaUrl === '';\n\n if (isOldEmpty) {\n return updatingSchemaUrl;\n }\n\n if (isUpdatingEmpty) {\n return oldSchemaUrl;\n }\n\n if (oldSchemaUrl === updatingSchemaUrl) {\n return oldSchemaUrl;\n }\n\n diag.warn(\n 'Schema URL merge conflict: old resource has \"%s\", updating resource has \"%s\". Resulting resource will have undefined Schema URL.',\n oldSchemaUrl,\n updatingSchemaUrl\n );\n\n return undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nlet serviceName: string | undefined;\n\n/**\n * Returns the default service name for OpenTelemetry resources.\n * In Node.js environments, returns \"unknown_service:\".\n * In browser/edge environments, returns \"unknown_service\".\n */\nexport function defaultServiceName(): string {\n if (serviceName === undefined) {\n try {\n const argv0 = globalThis.process.argv0;\n serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service';\n } catch {\n serviceName = 'unknown_service';\n }\n }\n return serviceName;\n}\n\n/** @internal For testing purposes only */\nexport function _clearDefaultServiceNameCache(): void {\n serviceName = undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const isPromiseLike = (val: unknown): val is PromiseLike => {\n return (\n val !== null &&\n typeof val === 'object' &&\n typeof (val as Partial>).then === 'function'\n );\n};\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { IdGenerator } from '../../IdGenerator';\n\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n\nexport class RandomIdGenerator implements IdGenerator {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n}\n\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes: number): () => string {\n return function generateId() {\n for (let i = 0; i < bytes / 4; i++) {\n // unsigned right shift drops decimal part of the number\n // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n }\n\n // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n for (let i = 0; i < bytes; i++) {\n if (SHARED_BUFFER[i] > 0) {\n break;\n } else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanExporter } from './SpanExporter';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { ExportResultCode, hrTimeToMicroseconds } from '@opentelemetry/core';\n\n/**\n * This is implementation of {@link SpanExporter} that prints spans to the\n * console. This class can be used for diagnostic purposes.\n *\n * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time.\n */\n\n/* eslint-disable no-console */\nexport class ConsoleSpanExporter implements SpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n return this._sendSpans(spans, resultCallback);\n }\n\n /**\n * Shutdown the exporter.\n */\n shutdown(): Promise {\n this._sendSpans([]);\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n /**\n * converts span info into more readable format\n * @param span\n */\n private _exportInfo(span: ReadableSpan) {\n return {\n resource: {\n attributes: span.resource.attributes,\n },\n instrumentationScope: span.instrumentationScope,\n traceId: span.spanContext().traceId,\n parentSpanContext: span.parentSpanContext,\n traceState: span.spanContext().traceState?.serialize(),\n name: span.name,\n id: span.spanContext().spanId,\n kind: span.kind,\n timestamp: hrTimeToMicroseconds(span.startTime),\n duration: hrTimeToMicroseconds(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n private _sendSpans(\n spans: ReadableSpan[],\n done?: (result: ExportResult) => void\n ): void {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: ExportResultCode.SUCCESS });\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { getNumberFromEnv, getStringFromEnv } from '@opentelemetry/core';\nimport type { Sampler } from './Sampler';\nimport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nimport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nimport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nimport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\n\nconst enum TracesSamplerValues {\n AlwaysOff = 'always_off',\n AlwaysOn = 'always_on',\n ParentBasedAlwaysOff = 'parentbased_always_off',\n ParentBasedAlwaysOn = 'parentbased_always_on',\n ParentBasedTraceIdRatio = 'parentbased_traceidratio',\n TraceIdRatio = 'traceidratio',\n}\n\nconst DEFAULT_RATIO = 1;\n\n/**\n * Load default configuration. For fields with primitive values, any user-provided\n * value will override the corresponding default value. For fields with\n * non-primitive values (like `spanLimits`), the user-provided value will be\n * used to extend the default value.\n */\n\n// object needs to be wrapped in this function and called when needed otherwise\n// envs are parsed before tests are ran - causes tests using these envs to fail\nexport function loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n },\n spanLimits: {\n attributeValueLengthLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n linkCountLimit: getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128,\n eventCountLimit: getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128,\n attributePerEventCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128,\n attributePerLinkCountLimit:\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128,\n },\n };\n}\n\n/**\n * Based on environment, builds a sampler, complies with specification.\n */\nexport function buildSamplerFromEnv(): Sampler {\n const sampler =\n getStringFromEnv('OTEL_TRACES_SAMPLER') ??\n TracesSamplerValues.ParentBasedAlwaysOn;\n switch (sampler) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler({\n root: new AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler({\n root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()),\n });\n default:\n diag.error(\n `OTEL_TRACES_SAMPLER value \"${sampler}\" invalid, defaulting to \"${TracesSamplerValues.ParentBasedAlwaysOn}\".`\n );\n return new ParentBasedSampler({\n root: new AlwaysOnSampler(),\n });\n }\n}\n\nfunction getSamplerProbabilityFromEnv(): number | undefined {\n const probability = getNumberFromEnv('OTEL_TRACES_SAMPLER_ARG');\n if (probability == null) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n if (probability < 0 || probability > 1) {\n diag.error(\n `OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`\n );\n return DEFAULT_RATIO;\n }\n\n return probability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TracerProvider, Tracer as ApiTracer } from '@opentelemetry/api';\nimport { merge } from '@opentelemetry/core';\nimport type { Resource } from '@opentelemetry/resources';\nimport { defaultResource } from '@opentelemetry/resources';\nimport type { SpanProcessor } from './SpanProcessor';\nimport { Tracer } from './Tracer';\nimport { loadDefaultConfig } from './config';\nimport { MultiSpanProcessor } from './MultiSpanProcessor';\nimport type { TracerConfig } from './types';\nimport { reconfigureLimits } from './utility';\n\nexport enum ForceFlushState {\n 'resolved',\n 'timeout',\n 'error',\n 'unresolved',\n}\n\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nexport class BasicTracerProvider implements TracerProvider {\n private readonly _config: TracerConfig;\n private readonly _tracers: Map = new Map();\n private readonly _resource: Resource;\n private readonly _activeSpanProcessor: MultiSpanProcessor;\n\n constructor(config: TracerConfig = {}) {\n const mergedConfig = merge(\n {},\n loadDefaultConfig(),\n reconfigureLimits(config)\n );\n this._resource = mergedConfig.resource ?? defaultResource();\n\n this._config = Object.assign({}, mergedConfig, {\n resource: this._resource,\n });\n\n const spanProcessors: SpanProcessor[] = [];\n\n if (config.spanProcessors?.length) {\n spanProcessors.push(...config.spanProcessors);\n }\n\n this._activeSpanProcessor = new MultiSpanProcessor(spanProcessors);\n }\n\n getTracer(\n name: string,\n version?: string,\n options?: { schemaUrl?: string }\n ): ApiTracer {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(\n key,\n new Tracer(\n { name, version, schemaUrl: options?.schemaUrl },\n this._config,\n this._resource,\n this._activeSpanProcessor\n )\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key)!;\n }\n\n forceFlush(): Promise {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._activeSpanProcessor['_spanProcessors'].map(\n (spanProcessor: SpanProcessor) => {\n return new Promise(resolve => {\n let state: ForceFlushState;\n const timeoutInterval = setTimeout(() => {\n resolve(\n new Error(\n `Span processor did not completed within timeout period of ${timeout} ms`\n )\n );\n state = ForceFlushState.timeout;\n }, timeout);\n\n spanProcessor\n .forceFlush()\n .then(() => {\n clearTimeout(timeoutInterval);\n if (state !== ForceFlushState.timeout) {\n state = ForceFlushState.resolved;\n resolve(state);\n }\n })\n .catch(error => {\n clearTimeout(timeoutInterval);\n state = ForceFlushState.error;\n resolve(error);\n });\n });\n }\n );\n\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(\n result => result !== ForceFlushState.resolved\n );\n if (errors.length > 0) {\n reject(errors);\n } else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n\n shutdown(): Promise {\n return this._activeSpanProcessor.shutdown();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples no traces. */\nexport class AlwaysOffSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return 'AlwaysOffSampler';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { context, diag, TraceFlags } from '@opentelemetry/api';\nimport {\n BindOnceFuture,\n ExportResultCode,\n getNumberFromEnv,\n globalErrorHandler,\n suppressTracing,\n} from '@opentelemetry/core';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\nimport type { BufferConfig } from '../types';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { SpanExporter } from './SpanExporter';\n\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nexport abstract class BatchSpanProcessorBase\n implements SpanProcessor\n{\n private readonly _maxExportBatchSize: number;\n private readonly _maxQueueSize: number;\n private readonly _scheduledDelayMillis: number;\n private readonly _exportTimeoutMillis: number;\n private readonly _exporter: SpanExporter;\n\n private _isExporting = false;\n private _finishedSpans: ReadableSpan[] = [];\n private _timer: NodeJS.Timeout | number | undefined;\n private _shutdownOnce: BindOnceFuture;\n private _droppedSpansCount: number = 0;\n\n constructor(exporter: SpanExporter, config?: T) {\n this._exporter = exporter;\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : (getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512);\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : (getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048);\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : (getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000);\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : (getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000);\n\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n\n if (this._maxExportBatchSize > this._maxQueueSize) {\n diag.warn(\n 'BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize'\n );\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n\n forceFlush(): Promise {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n\n // does nothing.\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n this._addToBuffer(span);\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown() {\n return Promise.resolve()\n .then(() => {\n return this.onShutdown();\n })\n .then(() => {\n return this._flushAll();\n })\n .then(() => {\n return this._exporter.shutdown();\n });\n }\n\n /** Add a span in the buffer. */\n private _addToBuffer(span: ReadableSpan) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n\n if (this._droppedSpansCount === 0) {\n diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n\n return;\n }\n\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n diag.warn(\n `Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`\n );\n this._droppedSpansCount = 0;\n }\n\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\n\n /**\n * Send all spans to the exporter respecting the batch size limit\n * This function is used only on forceFlush or shutdown,\n * for all other cases _flush should be used\n * */\n private _flushAll(): Promise {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(\n this._finishedSpans.length / this._maxExportBatchSize\n );\n for (let i = 0, j = count; i < j; i++) {\n promises.push(this._flushOneBatch());\n }\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n\n private _flushOneBatch(): Promise {\n this._clearTimer();\n if (this._finishedSpans.length === 0) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n // don't wait anymore for export, this way the next batch can start\n reject(new Error('Timeout'));\n }, this._exportTimeoutMillis);\n // prevent downstream exporter calls from generating spans\n context.with(suppressTracing(context.active()), () => {\n // Reset the finished spans buffer here because the next invocations of the _flush method\n // could pass the same finished spans to the exporter if the buffer is cleared\n // outside the execution of this callback.\n let spans: ReadableSpan[];\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n } else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n\n const doExport = () =>\n this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === ExportResultCode.SUCCESS) {\n resolve();\n } else {\n reject(\n result.error ??\n new Error('BatchSpanProcessor: span export failed')\n );\n }\n });\n\n let pendingResources: Array> | null = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (\n span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes\n ) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n } else {\n Promise.all(pendingResources).then(doExport, err => {\n globalErrorHandler(err);\n reject(err);\n });\n }\n });\n });\n }\n\n private _maybeStartTimer() {\n if (this._isExporting) return;\n const flush = () => {\n this._isExporting = true;\n this._flushOneBatch()\n .finally(() => {\n this._isExporting = false;\n if (this._finishedSpans.length > 0) {\n this._clearTimer();\n this._maybeStartTimer();\n }\n })\n .catch(e => {\n this._isExporting = false;\n globalErrorHandler(e);\n });\n };\n // we only wait if the queue doesn't have enough elements yet\n if (this._finishedSpans.length >= this._maxExportBatchSize) {\n return flush();\n }\n if (this._timer !== undefined) return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n\n // depending on runtime, this may be a 'number' or NodeJS.Timeout\n if (typeof this._timer !== 'number') {\n this._timer.unref();\n }\n }\n\n private _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n\n protected abstract onShutdown(): void;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context, Link, Attributes, SpanKind } from '@opentelemetry/api';\nimport { isSpanContextValid, TraceFlags, trace } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport { AlwaysOffSampler } from './AlwaysOffSampler';\nimport { AlwaysOnSampler } from './AlwaysOnSampler';\nimport type { Sampler, SamplingResult } from '../Sampler';\n\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nexport class ParentBasedSampler implements Sampler {\n private _root: Sampler;\n private _remoteParentSampled: Sampler;\n private _remoteParentNotSampled: Sampler;\n private _localParentSampled: Sampler;\n private _localParentNotSampled: Sampler;\n\n constructor(config: ParentBasedSamplerConfig) {\n this._root = config.root;\n\n if (!this._root) {\n globalErrorHandler(\n new Error('ParentBasedSampler must have a root sampler configured')\n );\n this._root = new AlwaysOnSampler();\n }\n\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler();\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult {\n const parentContext = trace.getSpanContext(context);\n\n if (!parentContext || !isSpanContextValid(parentContext)) {\n return this._root.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n return this._remoteParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n if (parentContext.traceFlags & TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n return this._localParentNotSampled.shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n attributes,\n links\n );\n }\n\n toString(): string {\n return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n }\n}\n\ninterface ParentBasedSamplerConfig {\n /** Sampler called for spans with no parent */\n root: Sampler;\n /** Sampler called for spans with a remote parent which was sampled. Default AlwaysOn */\n remoteParentSampled?: Sampler;\n /** Sampler called for spans with a remote parent which was not sampled. Default AlwaysOff */\n remoteParentNotSampled?: Sampler;\n /** Sampler called for spans with a local parent which was sampled. Default AlwaysOn */\n localParentSampled?: Sampler;\n /** Sampler called for spans with a local parent which was not sampled. Default AlwaysOff */\n localParentNotSampled?: Sampler;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { buildSamplerFromEnv, loadDefaultConfig } from './config';\nimport type { Sampler } from './Sampler';\nimport type { SpanLimits, TracerConfig, GeneralLimits } from './types';\nimport { getNumberFromEnv } from '@opentelemetry/core';\n\nexport const DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexport const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nexport function mergeConfig(userConfig: TracerConfig): TracerConfig & {\n sampler: Sampler;\n spanLimits: SpanLimits;\n generalLimits: GeneralLimits;\n} {\n const perInstanceDefaults: Partial = {\n sampler: buildSamplerFromEnv(),\n };\n\n const DEFAULT_CONFIG = loadDefaultConfig();\n\n const target = Object.assign(\n {},\n DEFAULT_CONFIG,\n perInstanceDefaults,\n userConfig\n );\n\n target.generalLimits = Object.assign(\n {},\n DEFAULT_CONFIG.generalLimits,\n userConfig.generalLimits || {}\n );\n\n target.spanLimits = Object.assign(\n {},\n DEFAULT_CONFIG.spanLimits,\n userConfig.spanLimits || {}\n );\n\n return target;\n}\n\n/**\n * When general limits are provided and model specific limits are not,\n * configures the model specific limits by using the values from the general ones.\n * @param userConfig User provided tracer configuration\n */\nexport function reconfigureLimits(userConfig: TracerConfig): TracerConfig {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n\n /**\n * Reassign span attribute count limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeCountLimit =\n userConfig.spanLimits?.attributeCountLimit ??\n userConfig.generalLimits?.attributeCountLimit ??\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT') ??\n DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n\n /**\n * Reassign span attribute value length limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeValueLengthLimit =\n userConfig.spanLimits?.attributeValueLengthLimit ??\n userConfig.generalLimits?.attributeValueLengthLimit ??\n getNumberFromEnv('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n getNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n\n return Object.assign({}, userConfig, { spanLimits });\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BatchSpanProcessorBase } from '../../../export/BatchSpanProcessorBase';\nimport type { BufferConfig } from '../../../types';\n\nexport class BatchSpanProcessor extends BatchSpanProcessorBase {\n protected onShutdown(): void {}\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport { BasicTracerProvider } from './BasicTracerProvider';\nexport { BatchSpanProcessor, RandomIdGenerator } from './platform';\nexport { ConsoleSpanExporter } from './export/ConsoleSpanExporter';\nexport { InMemorySpanExporter } from './export/InMemorySpanExporter';\nexport type { ReadableSpan } from './export/ReadableSpan';\nexport { SimpleSpanProcessor } from './export/SimpleSpanProcessor';\nexport type { SpanExporter } from './export/SpanExporter';\nexport { NoopSpanProcessor } from './export/NoopSpanProcessor';\nexport { AlwaysOffSampler } from './sampler/AlwaysOffSampler';\nexport { AlwaysOnSampler } from './sampler/AlwaysOnSampler';\nexport { ParentBasedSampler } from './sampler/ParentBasedSampler';\nexport { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler';\nexport { SamplingDecision } from './Sampler';\nexport type { Sampler, SamplingResult } from './Sampler';\nexport type { Span } from './Span';\nexport type { SpanProcessor } from './SpanProcessor';\nexport type { TimedEvent } from './TimedEvent';\nexport type {\n BatchSpanProcessorBrowserConfig,\n BufferConfig,\n GeneralLimits,\n SDKRegistrationConfig,\n SpanLimits,\n TracerConfig,\n} from './types';\nexport type { IdGenerator } from './IdGenerator';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport * as api from '@opentelemetry/api';\nimport type { InstrumentationScope } from '@opentelemetry/core';\nimport { sanitizeAttributes, isTracingSuppressed } from '@opentelemetry/core';\nimport { SpanImpl } from './Span';\nimport type { GeneralLimits, SpanLimits, TracerConfig } from './types';\nimport { mergeConfig } from './utility';\nimport type { SpanProcessor } from './SpanProcessor';\nimport type { Sampler } from './Sampler';\nimport type { IdGenerator } from './IdGenerator';\nimport { RandomIdGenerator } from './platform';\nimport type { Resource } from '@opentelemetry/resources';\nimport { TracerMetrics } from './TracerMetrics';\nimport { VERSION } from './version';\n\n/**\n * This class represents a basic tracer.\n */\nexport class Tracer implements api.Tracer {\n private readonly _sampler: Sampler;\n private readonly _generalLimits: GeneralLimits;\n private readonly _spanLimits: SpanLimits;\n private readonly _idGenerator: IdGenerator;\n readonly instrumentationScope: InstrumentationScope;\n\n private readonly _resource: Resource;\n private readonly _spanProcessor: SpanProcessor;\n private readonly _tracerMetrics: TracerMetrics;\n\n /**\n * Constructs a new Tracer instance.\n */\n constructor(\n instrumentationScope: InstrumentationScope,\n config: TracerConfig,\n resource: Resource,\n spanProcessor: SpanProcessor\n ) {\n const localConfig = mergeConfig(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new RandomIdGenerator();\n this._resource = resource;\n this._spanProcessor = spanProcessor;\n this.instrumentationScope = instrumentationScope;\n\n const meter = localConfig.meterProvider\n ? localConfig.meterProvider.getMeter('@opentelemetry/sdk-trace', VERSION)\n : api.createNoopMeter();\n this._tracerMetrics = new TracerMetrics(meter);\n }\n\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(\n name: string,\n options: api.SpanOptions = {},\n context = api.context.active()\n ): api.Span {\n // remove span from context in case a root span is requested via options\n if (options.root) {\n context = api.trace.deleteSpan(context);\n }\n const parentSpan = api.trace.getSpan(context);\n\n if (isTracingSuppressed(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(\n api.INVALID_SPAN_CONTEXT\n );\n return nonRecordingSpan;\n }\n\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let validParentSpanContext;\n let traceId;\n let traceState;\n if (\n !parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)\n ) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n } else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n validParentSpanContext = parentSpanContext;\n }\n\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: sanitizeAttributes(link.attributes),\n };\n });\n const attributes = sanitizeAttributes(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(\n context,\n traceId,\n name,\n spanKind,\n attributes,\n links\n );\n\n const recordEndMetrics = this._tracerMetrics.startSpan(\n parentSpanContext,\n samplingResult.decision\n );\n\n traceState = samplingResult.traceState ?? traceState;\n\n const traceFlags =\n samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED\n ? api.TraceFlags.SAMPLED\n : api.TraceFlags.NONE;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) {\n api.diag.debug(\n 'Recording is off, propagating context in a non-recording span'\n );\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\n\n // Set initial span attributes. The attributes object may have been mutated\n // by the sampler, so we sanitize the merged attributes before setting them.\n const initAttributes = sanitizeAttributes(\n Object.assign(attributes, samplingResult.attributes)\n );\n\n const span = new SpanImpl({\n resource: this._resource,\n scope: this.instrumentationScope,\n context,\n spanContext,\n name,\n kind: spanKind,\n links,\n parentSpanContext: validParentSpanContext,\n attributes: initAttributes,\n startTime: options.startTime,\n spanProcessor: this._spanProcessor,\n spanLimits: this._spanLimits,\n recordEndMetrics,\n });\n return span;\n }\n\n /**\n * Starts a new {@link Span} and calls the given function passing it the\n * created span as first argument.\n * Additionally the new span gets set in context and this context is activated\n * for the duration of the function call.\n *\n * @param name The name of the span\n * @param [options] SpanOptions used for span creation\n * @param [context] Context to use to extract parent\n * @param fn function called in the context of the span and receives the newly created span as an argument\n * @returns return value of fn\n * @example\n * const something = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * span.setStatus({code: SpanStatusCode.OK});\n * return something;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * } finally {\n * span.end();\n * }\n * });\n * @example\n * const span = tracer.startActiveSpan('op', span => {\n * try {\n * do some work\n * return span;\n * } catch (err) {\n * span.setStatus({\n * code: SpanStatusCode.ERROR,\n * message: err.message,\n * });\n * throw err;\n * }\n * });\n * do some more work\n * span.end();\n */\n startActiveSpan ReturnType>(\n name: string,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n opts: api.SpanOptions,\n ctx: api.Context,\n fn: F\n ): ReturnType;\n startActiveSpan ReturnType>(\n name: string,\n arg2?: F | api.SpanOptions,\n arg3?: F | api.Context,\n arg4?: F\n ): ReturnType | undefined {\n let opts: api.SpanOptions | undefined;\n let ctx: api.Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as api.SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as api.SpanOptions | undefined;\n ctx = arg3 as api.Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? api.context.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = api.trace.setSpan(parentContext, span);\n\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits(): GeneralLimits {\n return this._generalLimits;\n }\n\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits(): SpanLimits {\n return this._spanLimits;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { SpanExporter } from './SpanExporter';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { ExportResultCode } from '@opentelemetry/core';\n\n/**\n * This class can be used for testing purposes. It stores the exported spans\n * in a list in memory that can be retrieved using the `getFinishedSpans()`\n * method.\n */\nexport class InMemorySpanExporter implements SpanExporter {\n private _finishedSpans: ReadableSpan[] = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n protected _stopped = false;\n\n export(\n spans: ReadableSpan[],\n resultCallback: (result: ExportResult) => void\n ): void {\n if (this._stopped)\n return resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n\n setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0);\n }\n\n shutdown(): Promise {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush(): Promise {\n return Promise.resolve();\n }\n\n reset(): void {\n this._finishedSpans = [];\n }\n\n getFinishedSpans(): ReadableSpan[] {\n return this._finishedSpans;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n Exception,\n HrTime,\n Link,\n Span as APISpan,\n SpanOptions as APISpanOptions,\n Attributes,\n AttributeValue,\n SpanContext,\n SpanKind,\n SpanStatus,\n TimeInput,\n} from '@opentelemetry/api';\nimport { diag, SpanStatusCode } from '@opentelemetry/api';\nimport type { InstrumentationScope } from '@opentelemetry/core';\nimport {\n addHrTimes,\n millisToHrTime,\n hrTime,\n hrTimeDuration,\n isAttributeValue,\n isTimeInput,\n isTimeInputHrTime,\n otperformance,\n sanitizeAttributes,\n} from '@opentelemetry/core';\nimport type { Resource } from '@opentelemetry/resources';\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions';\nimport type { ReadableSpan } from './export/ReadableSpan';\nimport { ExceptionEventName } from './enums';\nimport type { SpanProcessor } from './SpanProcessor';\nimport type { TimedEvent } from './TimedEvent';\nimport type { SpanLimits } from './types';\n\n/**\n * This type provides the properties of @link{ReadableSpan} at the same time\n * of the Span API\n */\nexport type Span = APISpan & ReadableSpan;\n\n// `root` is omitted because it is consumed by Tracer.startSpan() to strip\n// parent context but it has no meaning when constructing a Span directly.\ntype SpanOptions = Omit & {\n resource: Resource;\n scope: InstrumentationScope;\n context: Context;\n spanContext: SpanContext;\n name: string;\n // Required here to override optional `kind` from the API's SpanOptions\n // SpanImpl assigns it unconditionally and ReadableSpan expects it to be set.\n kind: SpanKind;\n parentSpanContext?: SpanContext;\n spanLimits: SpanLimits;\n spanProcessor: SpanProcessor;\n recordEndMetrics?: () => void;\n};\n\n/**\n * This class represents a span.\n */\nexport class SpanImpl implements Span {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n private readonly _spanContext: SpanContext;\n readonly kind: SpanKind;\n readonly parentSpanContext?: SpanContext;\n readonly attributes: Attributes = {};\n readonly links: Link[] = [];\n readonly events: TimedEvent[] = [];\n readonly startTime: HrTime;\n readonly resource: Resource;\n readonly instrumentationScope: InstrumentationScope;\n\n private _droppedAttributesCount = 0;\n private _droppedEventsCount: number = 0;\n private _droppedLinksCount: number = 0;\n private _attributesCount: number = 0;\n\n name: string;\n status: SpanStatus = {\n code: SpanStatusCode.UNSET,\n };\n endTime: HrTime = [0, 0];\n private _ended = false;\n private _duration: HrTime = [-1, -1];\n private readonly _spanProcessor: SpanProcessor;\n private readonly _spanLimits: SpanLimits;\n private readonly _attributeValueLengthLimit: number;\n private readonly _recordEndMetrics?: () => void;\n\n private readonly _performanceStartTime: number;\n private readonly _performanceOffset: number;\n private readonly _startTimeProvided: boolean;\n\n /**\n * Constructs a new SpanImpl instance.\n */\n constructor(opts: SpanOptions) {\n const now = Date.now();\n\n this._spanContext = opts.spanContext;\n this._performanceStartTime = otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + otperformance.timeOrigin);\n this._startTimeProvided = opts.startTime != null;\n this._spanLimits = opts.spanLimits;\n this._attributeValueLengthLimit =\n this._spanLimits.attributeValueLengthLimit ?? 0;\n this._spanProcessor = opts.spanProcessor;\n\n this.name = opts.name;\n this.parentSpanContext = opts.parentSpanContext;\n this.kind = opts.kind;\n if (opts.links) {\n for (const link of opts.links) {\n this.addLink(link);\n }\n }\n this.startTime = this._getTime(opts.startTime ?? now);\n this.resource = opts.resource;\n this.instrumentationScope = opts.scope;\n this._recordEndMetrics = opts.recordEndMetrics;\n\n if (opts.attributes != null) {\n this.setAttributes(opts.attributes);\n }\n\n this._spanProcessor.onStart(this, opts.context);\n }\n\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n setAttribute(key: string, value?: AttributeValue): this;\n setAttribute(key: string, value: unknown): this {\n if (value == null || this._isSpanEnded()) return this;\n if (key.length === 0) {\n diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!isAttributeValue(value)) {\n diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n\n const { attributeCountLimit } = this._spanLimits;\n const isNewKey = !Object.prototype.hasOwnProperty.call(\n this.attributes,\n key\n );\n\n if (\n attributeCountLimit !== undefined &&\n this._attributesCount >= attributeCountLimit &&\n isNewKey\n ) {\n this._droppedAttributesCount++;\n return this;\n }\n\n this.attributes[key] = this._truncateToSize(value);\n if (isNewKey) {\n this._attributesCount++;\n }\n return this;\n }\n\n setAttributes(attributes: Attributes): this {\n for (const key in attributes) {\n if (Object.prototype.hasOwnProperty.call(attributes, key)) {\n this.setAttribute(key, attributes[key]);\n }\n }\n return this;\n }\n\n /**\n *\n * @param name Span Name\n * @param [attributesOrStartTime] Span attributes or start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [timeStamp] Specified time stamp for the event\n */\n addEvent(\n name: string,\n attributesOrStartTime?: Attributes | TimeInput,\n timeStamp?: TimeInput\n ): this {\n if (this._isSpanEnded()) return this;\n\n const { eventCountLimit } = this._spanLimits;\n\n if (eventCountLimit === 0) {\n diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n\n if (\n eventCountLimit !== undefined &&\n this.events.length >= eventCountLimit\n ) {\n if (this._droppedEventsCount === 0) {\n diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n\n if (isTimeInput(attributesOrStartTime)) {\n if (!isTimeInput(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n\n const sanitized = sanitizeAttributes(attributesOrStartTime);\n const { attributePerEventCountLimit } = this._spanLimits;\n const attributes: Attributes = {};\n let droppedAttributesCount = 0;\n let eventAttributesCount = 0;\n\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (\n attributePerEventCountLimit !== undefined &&\n eventAttributesCount >= attributePerEventCountLimit\n ) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal!);\n eventAttributesCount++;\n }\n\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount,\n });\n return this;\n }\n\n addLink(link: Link): this {\n if (this._isSpanEnded()) return this;\n\n const { linkCountLimit } = this._spanLimits;\n\n if (linkCountLimit === 0) {\n this._droppedLinksCount++;\n return this;\n }\n\n if (linkCountLimit !== undefined && this.links.length >= linkCountLimit) {\n if (this._droppedLinksCount === 0) {\n diag.debug('Dropping extra links.');\n }\n this.links.shift();\n this._droppedLinksCount++;\n }\n\n const { attributePerLinkCountLimit } = this._spanLimits;\n const sanitized = sanitizeAttributes(link.attributes);\n const attributes: Attributes = {};\n let droppedAttributesCount = 0;\n let linkAttributesCount = 0;\n\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (\n attributePerLinkCountLimit !== undefined &&\n linkAttributesCount >= attributePerLinkCountLimit\n ) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal!);\n linkAttributesCount++;\n }\n\n const processedLink: Link = { context: link.context };\n if (linkAttributesCount > 0) {\n processedLink.attributes = attributes;\n }\n if (droppedAttributesCount > 0) {\n processedLink.droppedAttributesCount = droppedAttributesCount;\n }\n\n this.links.push(processedLink);\n return this;\n }\n\n addLinks(links: Link[]): this {\n for (const link of links) {\n this.addLink(link);\n }\n return this;\n }\n\n setStatus(status: SpanStatus): this {\n if (this._isSpanEnded()) return this;\n if (status.code === SpanStatusCode.UNSET) return this;\n if (this.status.code === SpanStatusCode.OK) return this;\n\n const newStatus: SpanStatus = { code: status.code };\n\n // When using try-catch, the caught \"error\" is of type `any`. When then assigning `any` to `status.message`,\n // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus()\n // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or\n // undefined to avoid an incorrect type causing issues downstream.\n if (status.code === SpanStatusCode.ERROR) {\n if (typeof status.message === 'string') {\n newStatus.message = status.message;\n } else if (status.message != null) {\n diag.warn(\n `Dropping invalid status.message of type '${typeof status.message}', expected 'string'`\n );\n }\n }\n\n this.status = newStatus;\n return this;\n }\n\n updateName(name: string): this {\n if (this._isSpanEnded()) return this;\n this.name = name;\n return this;\n }\n\n end(endTime?: TimeInput): void {\n if (this._isSpanEnded()) {\n diag.error(\n `${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`\n );\n return;\n }\n this.endTime = this._getTime(endTime);\n this._duration = hrTimeDuration(this.startTime, this.endTime);\n\n if (this._duration[0] < 0) {\n diag.warn(\n 'Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.',\n this.startTime,\n this.endTime\n );\n this.endTime = this.startTime.slice() as HrTime;\n this._duration = [0, 0];\n }\n\n if (this._droppedEventsCount > 0) {\n diag.warn(\n `Dropped ${this._droppedEventsCount} events because eventCountLimit reached`\n );\n }\n if (this._droppedLinksCount > 0) {\n diag.warn(\n `Dropped ${this._droppedLinksCount} links because linkCountLimit reached`\n );\n }\n if (this._spanProcessor.onEnding) {\n this._spanProcessor.onEnding(this);\n }\n\n this._recordEndMetrics?.();\n this._ended = true;\n this._spanProcessor.onEnd(this);\n }\n\n private _getTime(inp?: TimeInput): HrTime {\n if (typeof inp === 'number' && inp <= otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return hrTime(inp + this._performanceOffset);\n }\n\n if (typeof inp === 'number') {\n return millisToHrTime(inp);\n }\n\n if (inp instanceof Date) {\n return millisToHrTime(inp.getTime());\n }\n\n if (isTimeInputHrTime(inp)) {\n return inp;\n }\n\n if (this._startTimeProvided) {\n // if user provided a time for the start manually\n // we can't use duration to calculate event/end times\n return millisToHrTime(Date.now());\n }\n\n const msDuration = otperformance.now() - this._performanceStartTime;\n return addHrTimes(this.startTime, millisToHrTime(msDuration));\n }\n\n isRecording(): boolean {\n return this._ended === false;\n }\n\n recordException(exception: Exception, time?: TimeInput): void {\n const attributes: Attributes = {};\n if (typeof exception === 'string') {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception;\n } else if (exception) {\n if (exception.code) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.code.toString();\n } else if (exception.name) {\n attributes[ATTR_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[ATTR_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[ATTR_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n\n // these are minimum requirements from spec\n if (attributes[ATTR_EXCEPTION_TYPE] || attributes[ATTR_EXCEPTION_MESSAGE]) {\n this.addEvent(ExceptionEventName, attributes, time);\n } else {\n diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n\n get duration(): HrTime {\n return this._duration;\n }\n\n get ended(): boolean {\n return this._ended;\n }\n\n get droppedAttributesCount(): number {\n return this._droppedAttributesCount;\n }\n\n get droppedEventsCount(): number {\n return this._droppedEventsCount;\n }\n\n get droppedLinksCount(): number {\n return this._droppedLinksCount;\n }\n\n private _isSpanEnded(): boolean {\n if (this._ended) {\n const error = new Error(\n `Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`\n );\n\n diag.warn(\n `Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,\n error\n );\n }\n return this._ended;\n }\n\n // Utility function to truncate given value within size\n // for value type of string, will truncate to given limit\n // for type of non-string, will return same value\n private _truncateToLimitUtil(value: string, limit: number): string {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\n\n /**\n * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then\n * return string with truncated to {@code attributeValueLengthLimit} characters\n *\n * If the given attribute value is array of strings then\n * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters\n *\n * Otherwise return same Attribute {@code value}\n *\n * @param value Attribute value\n * @returns truncated attribute value if required, otherwise same value\n */\n private _truncateToSize(value: AttributeValue): AttributeValue {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n\n // Array of strings\n if (Array.isArray(value)) {\n return (value as []).map(val =>\n typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val\n );\n }\n\n // Other types, no need to apply value length limit\n return value;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isValidTraceId } from '@opentelemetry/api';\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nexport class TraceIdRatioBasedSampler implements Sampler {\n private readonly _ratio;\n private _upperBound: number;\n\n constructor(ratio = 0) {\n this._ratio = this._normalize(ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n\n shouldSample(context: unknown, traceId: string): SamplingResult {\n return {\n decision:\n isValidTraceId(traceId) && this._accumulate(traceId) < this._upperBound\n ? SamplingDecision.RECORD_AND_SAMPLED\n : SamplingDecision.NOT_RECORD,\n };\n }\n\n toString(): string {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n\n private _accumulate(traceId: string): number {\n let accumulation = 0;\n for (let i = 0; i < traceId.length / 8; i++) {\n const pos = i * 8;\n const part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Sampler, SamplingResult } from '../Sampler';\nimport { SamplingDecision } from '../Sampler';\n\n/** Sampler that samples all traces. */\nexport class AlwaysOnSampler implements Sampler {\n shouldSample(): SamplingResult {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n\n toString(): string {\n return 'AlwaysOnSampler';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { TraceFlags } from '@opentelemetry/api';\nimport {\n internal,\n ExportResultCode,\n globalErrorHandler,\n BindOnceFuture,\n} from '@opentelemetry/core';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { SpanExporter } from './SpanExporter';\n\n/**\n * An implementation of the {@link SpanProcessor} that converts the {@link Span}\n * to {@link ReadableSpan} and passes it to the configured exporter.\n *\n * Only spans that are sampled are converted.\n *\n * NOTE: This {@link SpanProcessor} exports every ended span individually instead of batching spans together, which causes significant performance overhead with most exporters. For production use, please consider using the {@link BatchSpanProcessor} instead.\n */\nexport class SimpleSpanProcessor implements SpanProcessor {\n private readonly _exporter: SpanExporter;\n private _shutdownOnce: BindOnceFuture;\n private _pendingExports: Set>;\n\n constructor(exporter: SpanExporter) {\n this._exporter = exporter;\n this._shutdownOnce = new BindOnceFuture(this._shutdown, this);\n this._pendingExports = new Set>();\n }\n\n async forceFlush(): Promise {\n await Promise.all(Array.from(this._pendingExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n\n onStart(_span: Span, _parentContext: Context): void {}\n\n onEnd(span: ReadableSpan): void {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n\n if ((span.spanContext().traceFlags & TraceFlags.SAMPLED) === 0) {\n return;\n }\n\n const pendingExport = this._doExport(span).catch(err =>\n globalErrorHandler(err)\n );\n // Enqueue this export to the pending list so it can be flushed by the user.\n this._pendingExports.add(pendingExport);\n void pendingExport.finally(() =>\n this._pendingExports.delete(pendingExport)\n );\n }\n\n private async _doExport(span: ReadableSpan): Promise {\n if (span.resource.asyncAttributesPending) {\n // Ensure resource is fully resolved before exporting.\n await span.resource.waitForAsyncAttributes?.();\n }\n\n const result = await internal._export(this._exporter, [span]);\n if (result.code !== ExportResultCode.SUCCESS) {\n throw (\n result.error ??\n new Error(`SimpleSpanProcessor: span export failed (status ${result})`)\n );\n }\n }\n\n shutdown(): Promise {\n return this._shutdownOnce.call();\n }\n\n private _shutdown(): Promise {\n return this._exporter.shutdown();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport { globalErrorHandler } from '@opentelemetry/core';\nimport type { ReadableSpan } from './export/ReadableSpan';\nimport type { Span } from './Span';\nimport type { SpanProcessor } from './SpanProcessor';\n\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nexport class MultiSpanProcessor implements SpanProcessor {\n private readonly _spanProcessors: SpanProcessor[];\n constructor(spanProcessors: SpanProcessor[]) {\n this._spanProcessors = spanProcessors;\n }\n\n forceFlush(): Promise {\n const promises: Promise[] = [];\n\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.forceFlush());\n }\n return new Promise(resolve => {\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(error => {\n globalErrorHandler(\n error || new Error('MultiSpanProcessor: forceFlush failed')\n );\n resolve();\n });\n });\n }\n\n onStart(span: Span, context: Context): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n\n onEnding(span: Span): void {\n for (const spanProcessor of this._spanProcessors) {\n if (spanProcessor.onEnding) {\n spanProcessor.onEnding(span);\n }\n }\n }\n\n onEnd(span: ReadableSpan): void {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n\n shutdown(): Promise {\n const promises: Promise[] = [];\n\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.shutdown());\n }\n return new Promise((resolve, reject) => {\n Promise.all(promises).then(() => {\n resolve();\n }, reject);\n });\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Event name definitions\nexport const ExceptionEventName = 'exception';\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Context } from '@opentelemetry/api';\nimport type { ReadableSpan } from './ReadableSpan';\nimport type { Span } from '../Span';\nimport type { SpanProcessor } from '../SpanProcessor';\n\n/** No-op implementation of SpanProcessor */\nexport class NoopSpanProcessor implements SpanProcessor {\n onStart(_span: Span, _context: Context): void {}\n onEnd(_span: ReadableSpan): void {}\n shutdown(): Promise {\n return Promise.resolve();\n }\n forceFlush(): Promise {\n return Promise.resolve();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n Counter,\n Meter,\n SpanContext,\n UpDownCounter,\n} from '@opentelemetry/api';\nimport { SamplingDecision } from './Sampler';\nimport {\n ATTR_OTEL_SPAN_PARENT_ORIGIN,\n ATTR_OTEL_SPAN_SAMPLING_RESULT,\n METRIC_OTEL_SDK_SPAN_LIVE,\n METRIC_OTEL_SDK_SPAN_STARTED,\n} from './semconv';\n\n/**\n * Generates `otel.sdk.span.*` metrics.\n * https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics/#span-metrics\n */\nexport class TracerMetrics {\n private readonly startedSpans: Counter;\n private readonly liveSpans: UpDownCounter;\n\n constructor(meter: Meter) {\n this.startedSpans = meter.createCounter(METRIC_OTEL_SDK_SPAN_STARTED, {\n unit: '{span}',\n description: 'The number of created spans.',\n });\n\n this.liveSpans = meter.createUpDownCounter(METRIC_OTEL_SDK_SPAN_LIVE, {\n unit: '{span}',\n description: 'The number of currently live spans.',\n });\n }\n\n startSpan(\n parentSpanCtx: SpanContext | undefined,\n samplingDecision: SamplingDecision\n ): () => void {\n const samplingDecisionStr = samplingDecisionToString(samplingDecision);\n this.startedSpans.add(1, {\n [ATTR_OTEL_SPAN_PARENT_ORIGIN]: parentOrigin(parentSpanCtx),\n [ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n });\n\n if (samplingDecision === SamplingDecision.NOT_RECORD) {\n return () => {};\n }\n\n const liveSpanAttributes = {\n [ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n };\n this.liveSpans.add(1, liveSpanAttributes);\n return () => {\n this.liveSpans.add(-1, liveSpanAttributes);\n };\n }\n}\n\nfunction parentOrigin(parentSpanContext: SpanContext | undefined): string {\n if (!parentSpanContext) {\n return 'none';\n }\n if (parentSpanContext.isRemote) {\n return 'remote';\n }\n return 'local';\n}\n\nfunction samplingDecisionToString(decision: SamplingDecision): string {\n switch (decision) {\n case SamplingDecision.RECORD_AND_SAMPLED:\n return 'RECORD_AND_SAMPLE';\n case SamplingDecision.RECORD:\n return 'RECORD_ONLY';\n case SamplingDecision.NOT_RECORD:\n return 'DROP';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n Context,\n Link,\n Attributes,\n SpanKind,\n TraceState,\n} from '@opentelemetry/api';\n\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n NOT_RECORD,\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n RECORD,\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n RECORD_AND_SAMPLED,\n}\n\n/**\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n /**\n * A sampling decision, refer to {@link SamplingDecision} for details.\n */\n decision: SamplingDecision;\n /**\n * The list of attributes returned by SamplingResult MUST be immutable.\n * Caller may call {@link Sampler}.shouldSample any number of times and\n * can safely cache the returned value.\n */\n attributes?: Readonly;\n /**\n * A {@link TraceState} that will be associated with the {@link Span} through\n * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n * the passed-in {@link Context} if they do not intend to change it. Leaving\n * the value undefined will also leave the TraceState unchanged.\n */\n traceState?: TraceState;\n}\n\n/**\n * This interface represent a sampler. Sampling is a mechanism to control the\n * noise and overhead introduced by OpenTelemetry by reducing the number of\n * samples of traces collected and sent to the backend.\n */\nexport interface Sampler {\n /**\n * Checks whether span needs to be created and tracked.\n *\n * @param context Parent Context which may contain a span.\n * @param traceId of the span to be created. It can be different from the\n * traceId in the {@link SpanContext}. Typically in situations when the\n * span to be created starts a new trace.\n * @param spanName of the span to be created.\n * @param spanKind of the span to be created.\n * @param attributes Initial set of Attributes for the Span being constructed.\n * @param links Collection of links that will be associated with the Span to\n * be created. Typically useful for batch operations.\n * @returns a {@link SamplingResult}.\n */\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[]\n ): SamplingResult;\n\n /** Returns the sampler name or short description with the configuration. */\n toString(): string;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Determines whether the span has a parent span, and if so, [whether it is a remote parent](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin' as const;\n\n/**\n * The result value of the sampler for this span\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_OTEL_SPAN_SAMPLING_RESULT =\n 'otel.span.sampling_result' as const;\n\n/**\n * The number of created spans with `recording=true` for which the end operation has not been called yet.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live' as const;\n\n/**\n * The number of created spans.\n *\n * @note Implementations **MUST** record this metric for all spans, even for non-recording ones.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started' as const;\n","/** If this attribute is true, it means that the parent is a remote span. */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE = 'sentry.parentIsRemote';\n\n// These are not standardized yet, but used by the graphql instrumentation\nexport const SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION = 'sentry.graphql.operation';\n","import type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\n\n/**\n * Get the parent span id from a span.\n * In OTel v1, the parent span id is accessed as `parentSpanId`\n * In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n */\nexport function getParentSpanId(span: ReadableSpan): string | undefined {\n if ('parentSpanId' in span) {\n return span.parentSpanId as string | undefined;\n } else if ('parentSpanContext' in span) {\n return (span.parentSpanContext as { spanId?: string } | undefined)?.spanId;\n }\n\n return undefined;\n}\n","import type { SpanKind, SpanStatus } from '@opentelemetry/api';\nimport type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-base';\nimport type { AbstractSpan } from '../types';\nimport { getParentSpanId } from './getParentSpanId';\n\n/**\n * Check if a given span has attributes.\n * This is necessary because the base `Span` type does not have attributes,\n * so in places where we are passed a generic span, we need to check if we want to access them.\n */\nexport function spanHasAttributes(\n span: SpanType,\n): span is SpanType & { attributes: ReadableSpan['attributes'] } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.attributes && typeof castSpan.attributes === 'object';\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasKind(span: SpanType): span is SpanType & { kind: SpanKind } {\n const castSpan = span as ReadableSpan;\n return typeof castSpan.kind === 'number';\n}\n\n/**\n * Check if a given span has a status.\n * This is necessary because the base `Span` type does not have a status,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasStatus(\n span: SpanType,\n): span is SpanType & { status: SpanStatus } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.status;\n}\n\n/**\n * Check if a given span has a name.\n * This is necessary because the base `Span` type does not have a name,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasName(span: SpanType): span is SpanType & { name: string } {\n const castSpan = span as ReadableSpan;\n return !!castSpan.name;\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasParentId(\n span: SpanType,\n): span is SpanType & { parentSpanId: string } {\n const castSpan = span as ReadableSpan;\n return !!getParentSpanId(castSpan);\n}\n\n/**\n * Check if a given span has events.\n * This is necessary because the base `Span` type does not have events,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nexport function spanHasEvents(\n span: SpanType,\n): span is SpanType & { events: TimedEvent[] } {\n const castSpan = span as ReadableSpan;\n return Array.isArray(castSpan.events);\n}\n","import type { Span } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { SanitizedRequestData } from '@sentry/core';\nimport { getSanitizedUrlString, parseUrl } from '@sentry/core';\nimport { spanHasAttributes } from './spanTypes';\n\n/**\n * Get sanitizied request data from an OTEL span.\n */\nexport function getRequestSpanData(span: Span | ReadableSpan): Partial {\n // The base `Span` type has no `attributes`, so we need to guard here against that\n if (!spanHasAttributes(span)) {\n return {};\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeUrlAttribute = (span.attributes[ATTR_URL_FULL] || span.attributes[SEMATTRS_HTTP_URL]) as\n | string\n | undefined;\n\n const data: Partial = {\n url: maybeUrlAttribute,\n // eslint-disable-next-line deprecation/deprecation\n 'http.method': (span.attributes[ATTR_HTTP_REQUEST_METHOD] || span.attributes[SEMATTRS_HTTP_METHOD]) as\n | string\n | undefined,\n };\n\n // Default to GET if URL is set but method is not\n if (!data['http.method'] && data.url) {\n data['http.method'] = 'GET';\n }\n\n try {\n if (typeof maybeUrlAttribute === 'string') {\n const url = parseUrl(maybeUrlAttribute);\n\n data.url = getSanitizedUrlString(url);\n\n if (url.search) {\n data['http.query'] = url.search;\n }\n if (url.hash) {\n data['http.fragment'] = url.hash;\n }\n }\n } catch {\n // ignore\n }\n\n return data;\n}\n","import type { Tracer } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\nimport type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport type { Client } from '@sentry/core';\nimport { SDK_VERSION } from '@sentry/core';\nimport type { OpenTelemetryClient as OpenTelemetryClientInterface } from '../types';\n\n// Typescript complains if we do not use `...args: any[]` for the mixin, with:\n// A mixin class must have a constructor with a single rest parameter of type 'any[]'.ts(2545)\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Wrap an Client class with things we need for OpenTelemetry support.\n * Make sure that the Client class passed in is non-abstract!\n *\n * Usage:\n * const OpenTelemetryClient = getWrappedClientClass(NodeClient);\n * const client = new OpenTelemetryClient(options);\n */\nexport function wrapClientClass<\n ClassConstructor extends new (...args: any[]) => Client,\n WrappedClassConstructor extends new (...args: any[]) => Client & OpenTelemetryClientInterface,\n>(ClientClass: ClassConstructor): WrappedClassConstructor {\n // @ts-expect-error We just assume that this is non-abstract, if you pass in an abstract class this would make it non-abstract\n class OpenTelemetryClient extends ClientClass implements OpenTelemetryClientInterface {\n public traceProvider: BasicTracerProvider | undefined;\n private _tracer: Tracer | undefined;\n\n public constructor(...args: any[]) {\n super(...args);\n }\n\n /** Get the OTEL tracer. */\n public get tracer(): Tracer {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/opentelemetry';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /**\n * @inheritDoc\n */\n public async flush(timeout?: number): Promise {\n const provider = this.traceProvider;\n await provider?.forceFlush();\n return super.flush(timeout);\n }\n }\n\n return OpenTelemetryClient as unknown as WrappedClassConstructor;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import { SpanKind } from '@opentelemetry/api';\nimport type { AbstractSpan } from '../types';\nimport { spanHasKind } from './spanTypes';\n\n/**\n * Get the span kind from a span.\n * For whatever reason, this is not public API on the generic \"Span\" type,\n * so we need to check if we actually have a `SDKTraceBaseSpan` where we can fetch this from.\n * Otherwise, we fall back to `SpanKind.INTERNAL`.\n */\nexport function getSpanKind(span: AbstractSpan): SpanKind {\n if (spanHasKind(span)) {\n return span.kind;\n }\n\n return SpanKind.INTERNAL;\n}\n","import { createContextKey } from '@opentelemetry/api';\n\nexport const SENTRY_TRACE_HEADER = 'sentry-trace';\nexport const SENTRY_BAGGAGE_HEADER = 'baggage';\n\nexport const SENTRY_TRACE_STATE_DSC = 'sentry.dsc';\nexport const SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING = 'sentry.sampled_not_recording';\nexport const SENTRY_TRACE_STATE_URL = 'sentry.url';\nexport const SENTRY_TRACE_STATE_SAMPLE_RAND = 'sentry.sample_rand';\nexport const SENTRY_TRACE_STATE_SAMPLE_RATE = 'sentry.sample_rate';\n\nexport const SENTRY_SCOPES_CONTEXT_KEY = createContextKey('sentry_scopes');\n\nexport const SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_isolation_scope');\n\nexport const SENTRY_FORK_SET_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_scope');\n\nexport const SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_isolation_scope');\n","import type { Context } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { addNonEnumerableProperty } from '@sentry/core';\nimport { SENTRY_SCOPES_CONTEXT_KEY } from '../constants';\nimport type { CurrentScopes } from '../types';\n\nconst SCOPE_CONTEXT_FIELD = '_scopeContext';\n\n/**\n * Try to get the current scopes from the given OTEL context.\n * This requires a Context Manager that was wrapped with getWrappedContextManager.\n */\nexport function getScopesFromContext(context: Context): CurrentScopes | undefined {\n return context.getValue(SENTRY_SCOPES_CONTEXT_KEY) as CurrentScopes | undefined;\n}\n\n/**\n * Set the current scopes on an OTEL context.\n * This will return a forked context with the Propagation Context set.\n */\nexport function setScopesOnContext(context: Context, scopes: CurrentScopes): Context {\n return context.setValue(SENTRY_SCOPES_CONTEXT_KEY, scopes);\n}\n\n/**\n * Set the context on the scope so we can later look it up.\n * We need this to get the context from the scope in the `trace` functions.\n */\nexport function setContextOnScope(scope: Scope, context: Context): void {\n addNonEnumerableProperty(scope, SCOPE_CONTEXT_FIELD, context);\n}\n\n/**\n * Get the context related to a scope.\n */\nexport function getContextFromScope(scope: Scope): Context | undefined {\n return (scope as { [SCOPE_CONTEXT_FIELD]?: Context })[SCOPE_CONTEXT_FIELD];\n}\n","import { ATTR_URL_FULL, SEMATTRS_HTTP_URL } from '@opentelemetry/semantic-conventions';\nimport { getClient, isSentryRequestUrl } from '@sentry/core';\nimport type { AbstractSpan } from '../types';\nimport { spanHasAttributes } from './spanTypes';\n\n/**\n *\n * @param otelSpan Checks whether a given OTEL Span is an http request to sentry.\n * @returns boolean\n */\nexport function isSentryRequestSpan(span: AbstractSpan): boolean {\n if (!spanHasAttributes(span)) {\n return false;\n }\n\n const { attributes } = span;\n\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n\n if (!httpUrl) {\n return false;\n }\n\n return isSentryRequestUrl(httpUrl.toString(), getClient());\n}\n","import type { SpanContext } from '@opentelemetry/api';\nimport { TraceFlags } from '@opentelemetry/api';\nimport { baggageHeaderToDynamicSamplingContext } from '@sentry/core';\nimport { SENTRY_TRACE_STATE_DSC, SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING } from '../constants';\n\n/**\n * OpenTelemetry only knows about SAMPLED or NONE decision,\n * but for us it is important to differentiate between unset and unsampled.\n *\n * Both of these are identified as `traceFlags === TracegFlags.NONE`,\n * but we additionally look at a special trace state to differentiate between them.\n */\nexport function getSamplingDecision(spanContext: SpanContext): boolean | undefined {\n const { traceFlags, traceState } = spanContext;\n\n const sampledNotRecording = traceState ? traceState.get(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING) === '1' : false;\n\n // If trace flag is `SAMPLED`, we interpret this as sampled\n // If it is `NONE`, it could mean either it was sampled to be not recorder, or that it was not sampled at all\n // For us this is an important difference, sow e look at the SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING\n // to identify which it is\n if (traceFlags === TraceFlags.SAMPLED) {\n return true;\n }\n\n if (sampledNotRecording) {\n return false;\n }\n\n // Fall back to DSC as a last resort, that may also contain `sampled`...\n const dscString = traceState ? traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n if (dsc?.sampled === 'true') {\n return true;\n }\n if (dsc?.sampled === 'false') {\n return false;\n }\n\n return undefined;\n}\n","import type { Attributes, AttributeValue } from '@opentelemetry/api';\nimport { SpanKind } from '@opentelemetry/api';\nimport {\n ATTR_DB_SYSTEM_NAME,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_ROUTE,\n ATTR_URL_FULL,\n SEMATTRS_DB_STATEMENT,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_FAAS_TRIGGER,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_TARGET,\n SEMATTRS_HTTP_URL,\n SEMATTRS_MESSAGING_SYSTEM,\n SEMATTRS_RPC_SERVICE,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes, TransactionSource } from '@sentry/core';\nimport {\n getSanitizedUrlString,\n parseUrl,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n stripUrlQueryAndFragment,\n} from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '../semanticAttributes';\nimport type { AbstractSpan } from '../types';\nimport { getSpanKind } from './getSpanKind';\nimport { spanHasAttributes, spanHasName } from './spanTypes';\n\ninterface SpanDescription {\n op: string | undefined;\n description: string;\n source: TransactionSource;\n data?: Record;\n}\n\n/**\n * Infer the op & description for a set of name, attributes and kind of a span.\n */\nexport function inferSpanData(spanName: string, attributes: SpanAttributes, kind: SpanKind): SpanDescription {\n // if http.method exists, this is an http request span\n // eslint-disable-next-line deprecation/deprecation\n const httpMethod = attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD];\n if (httpMethod) {\n return descriptionForHttpMethod({ attributes, name: spanName, kind }, httpMethod);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const dbSystem = attributes[ATTR_DB_SYSTEM_NAME] || attributes[SEMATTRS_DB_SYSTEM];\n const opIsCache =\n typeof attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] === 'string' &&\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP].startsWith('cache.');\n\n // If db.type exists then this is a database call span\n // If the Redis DB is used as a cache, the span description should not be changed\n if (dbSystem && !opIsCache) {\n return descriptionForDbSystem({ attributes, name: spanName });\n }\n\n const customSourceOrRoute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom' ? 'custom' : 'route';\n\n // If rpc.service exists then this is a rpc call span.\n // eslint-disable-next-line deprecation/deprecation\n const rpcService = attributes[SEMATTRS_RPC_SERVICE];\n if (rpcService) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, 'route'),\n op: 'rpc',\n };\n }\n\n // If messaging.system exists then this is a messaging system span.\n // eslint-disable-next-line deprecation/deprecation\n const messagingSystem = attributes[SEMATTRS_MESSAGING_SYSTEM];\n if (messagingSystem) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: 'message',\n };\n }\n\n // If faas.trigger exists then this is a function as a service span.\n // eslint-disable-next-line deprecation/deprecation\n const faasTrigger = attributes[SEMATTRS_FAAS_TRIGGER];\n if (faasTrigger) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: faasTrigger.toString(),\n };\n }\n\n return { op: undefined, description: spanName, source: 'custom' };\n}\n\n/**\n * Extract better op/description from an otel span.\n *\n * Does not overwrite the span name if the source is already set to custom to ensure\n * that user-updated span names are preserved. In this case, we only adjust the op but\n * leave span description and source unchanged.\n *\n * Based on https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/7422ce2a06337f68a59b552b8c5a2ac125d6bae5/exporter/sentryexporter/sentry_exporter.go#L306\n */\nexport function parseSpanDescription(span: AbstractSpan): SpanDescription {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const name = spanHasName(span) ? span.name : '';\n const kind = getSpanKind(span);\n\n return inferSpanData(name, attributes, kind);\n}\n\nfunction descriptionForDbSystem({ attributes, name }: { attributes: Attributes; name: string }): SpanDescription {\n // if we already have a custom name, we don't overwrite it but only set the op\n const userDefinedName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n if (typeof userDefinedName === 'string') {\n return {\n op: 'db',\n description: userDefinedName,\n source: (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource) || 'custom',\n };\n }\n\n // if we already have the source set to custom, we don't overwrite the span description but only set the op\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom') {\n return { op: 'db', description: name, source: 'custom' };\n }\n\n // Use DB statement (Ex \"SELECT * FROM table\") if possible as description.\n // eslint-disable-next-line deprecation/deprecation\n const statement = attributes[SEMATTRS_DB_STATEMENT];\n\n const description = statement ? statement.toString() : name;\n\n return { op: 'db', description, source: 'task' };\n}\n\n/** Only exported for tests. */\nexport function descriptionForHttpMethod(\n { name, kind, attributes }: { name: string; attributes: Attributes; kind: SpanKind },\n httpMethod: AttributeValue,\n): SpanDescription {\n const opParts = ['http'];\n\n switch (kind) {\n case SpanKind.CLIENT:\n opParts.push('client');\n break;\n case SpanKind.SERVER:\n opParts.push('server');\n break;\n }\n\n // Spans for HTTP requests we have determined to be prefetch requests will have a `.prefetch` postfix in the op\n if (attributes['sentry.http.prefetch']) {\n opParts.push('prefetch');\n }\n\n const { urlPath, url, query, fragment, hasRoute } = getSanitizedUrl(attributes, kind);\n\n if (!urlPath) {\n return { ...getUserUpdatedNameAndSource(name, attributes), op: opParts.join('.') };\n }\n\n const graphqlOperationsAttribute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION];\n\n // Ex. GET /api/users\n const baseDescription = `${httpMethod} ${urlPath}`;\n\n // When the http span has a graphql operation, append it to the description\n // We add these in the graphqlIntegration\n const inferredDescription = graphqlOperationsAttribute\n ? `${baseDescription} (${getGraphqlOperationNamesFromAttribute(graphqlOperationsAttribute)})`\n : baseDescription;\n\n // If `httpPath` is a root path, then we can categorize the transaction source as route.\n const inferredSource: TransactionSource = hasRoute || urlPath === '/' ? 'route' : 'url';\n\n const data: Record = {};\n\n if (url) {\n data.url = url;\n }\n if (query) {\n data['http.query'] = query;\n }\n if (fragment) {\n data['http.fragment'] = fragment;\n }\n\n // If the span kind is neither client nor server, we use the original name\n // this infers that somebody manually started this span, in which case we don't want to overwrite the name\n const isClientOrServerKind = kind === SpanKind.CLIENT || kind === SpanKind.SERVER;\n\n // If the span is an auto-span (=it comes from one of our instrumentations),\n // we always want to infer the name\n // this is necessary because some of the auto-instrumentation we use uses kind=INTERNAL\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] || 'manual';\n const isManualSpan = !`${origin}`.startsWith('auto');\n\n // If users (or in very rare occasions we) set the source to custom, we don't overwrite the name\n const alreadyHasCustomSource = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom';\n const customSpanName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n const useInferredDescription =\n !alreadyHasCustomSource && customSpanName == null && (isClientOrServerKind || !isManualSpan);\n\n const { description, source } = useInferredDescription\n ? { description: inferredDescription, source: inferredSource }\n : getUserUpdatedNameAndSource(name, attributes);\n\n return {\n op: opParts.join('.'),\n description,\n source,\n data,\n };\n}\n\nfunction getGraphqlOperationNamesFromAttribute(attr: AttributeValue): string {\n if (Array.isArray(attr)) {\n // oxlint-disable-next-line typescript/require-array-sort-compare\n const sorted = attr.slice().sort();\n\n // Up to 5 items, we just add all of them\n if (sorted.length <= 5) {\n return sorted.join(', ');\n } else {\n // Else, we add the first 5 and the diff of other operations\n return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n }\n }\n\n return `${attr}`;\n}\n\n/** Exported for tests only */\nexport function getSanitizedUrl(\n attributes: Attributes,\n kind: SpanKind,\n): {\n url: string | undefined;\n urlPath: string | undefined;\n query: string | undefined;\n fragment: string | undefined;\n hasRoute: boolean;\n} {\n // This is the relative path of the URL, e.g. /sub\n // eslint-disable-next-line deprecation/deprecation\n const httpTarget = attributes[SEMATTRS_HTTP_TARGET];\n // This is the full URL, including host & query params etc., e.g. https://example.com/sub?foo=bar\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n // This is the normalized route name - may not always be available!\n const httpRoute = attributes[ATTR_HTTP_ROUTE];\n\n const parsedUrl = typeof httpUrl === 'string' ? parseUrl(httpUrl) : undefined;\n const url = parsedUrl ? getSanitizedUrlString(parsedUrl) : undefined;\n const query = parsedUrl?.search || undefined;\n const fragment = parsedUrl?.hash || undefined;\n\n if (typeof httpRoute === 'string') {\n return { urlPath: httpRoute, url, query, fragment, hasRoute: true };\n }\n\n if (kind === SpanKind.SERVER && typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n if (parsedUrl) {\n return { urlPath: url, url, query, fragment, hasRoute: false };\n }\n\n // fall back to target even for client spans, if no URL is present\n if (typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n return { urlPath: undefined, url, query, fragment, hasRoute: false };\n}\n\n/**\n * Because Otel instrumentation sometimes mutates span names via `span.updateName`, the only way\n * to ensure that a user-set span name is preserved is to store it as a tmp attribute on the span.\n * We delete this attribute once we're done with it when preparing the event envelope.\n *\n * This temp attribute always takes precedence over the original name.\n *\n * We also need to take care of setting the correct source. Users can always update the source\n * after updating the name, so we need to respect that.\n *\n * @internal exported only for testing\n */\nexport function getUserUpdatedNameAndSource(\n originalName: string,\n attributes: Attributes,\n fallbackSource: TransactionSource = 'custom',\n): {\n description: string;\n source: TransactionSource;\n} {\n const source = (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource) || fallbackSource;\n const description = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n if (description && typeof description === 'string') {\n return {\n description,\n source,\n };\n }\n\n return { description: originalName, source };\n}\n","import type { Client } from '@sentry/core';\nimport { hasSpansEnabled, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, spanToJSON } from '@sentry/core';\nimport { getSamplingDecision } from './getSamplingDecision';\nimport { parseSpanDescription } from './parseSpanDescription';\nimport { spanHasName } from './spanTypes';\n\n/**\n * Setup a DSC handler on the passed client,\n * ensuring that the transaction name is inferred from the span correctly.\n */\nexport function enhanceDscWithOpenTelemetryRootSpanName(client: Client): void {\n client.on('createDsc', (dsc, rootSpan) => {\n if (!rootSpan) {\n return;\n }\n\n // We want to overwrite the transaction on the DSC that is created by default in core\n // The reason for this is that we want to infer the span name, not use the initial one\n // Otherwise, we'll get names like \"GET\" instead of e.g. \"GET /foo\"\n // `parseSpanDescription` takes the attributes of the span into account for the name\n // This mutates the passed-in DSC\n\n const jsonSpan = spanToJSON(rootSpan);\n const attributes = jsonSpan.data;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n const { description } = spanHasName(rootSpan) ? parseSpanDescription(rootSpan) : { description: undefined };\n if (source !== 'url' && description) {\n dsc.transaction = description;\n }\n\n // Also ensure sampling decision is correctly inferred\n // In core, we use `spanIsSampled`, which just looks at the trace flags\n // but in OTEL, we use a slightly more complex logic to be able to differntiate between unsampled and deferred sampling\n if (hasSpansEnabled()) {\n const sampled = getSamplingDecision(rootSpan.spanContext());\n dsc.sampled = sampled == undefined ? undefined : String(sampled);\n }\n });\n}\n","import type { Span } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n return trace.getActiveSpan();\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { TraceState } from '@opentelemetry/core';\nimport type { DynamicSamplingContext } from '@sentry/core';\nimport { dynamicSamplingContextToSentryBaggageHeader } from '@sentry/core';\nimport { SENTRY_TRACE_STATE_DSC, SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING } from '../constants';\n\n/**\n * Generate a TraceState for the given data.\n */\nexport function makeTraceState({\n dsc,\n sampled,\n}: {\n dsc?: Partial;\n sampled?: boolean;\n}): TraceState {\n // We store the DSC as OTEL trace state on the span context\n const dscString = dsc ? dynamicSamplingContextToSentryBaggageHeader(dsc) : undefined;\n\n const traceStateBase = new TraceState();\n\n const traceStateWithDsc = dscString ? traceStateBase.set(SENTRY_TRACE_STATE_DSC, dscString) : traceStateBase;\n\n // We also specifically want to store if this is sampled to be not recording,\n // or unsampled (=could be either sampled or not)\n return sampled === false ? traceStateWithDsc.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') : traceStateWithDsc;\n}\n","type OpenTelemetryElement = 'SentrySpanProcessor' | 'SentryContextManager' | 'SentryPropagator' | 'SentrySampler';\n\nconst setupElements = new Set();\n\n/** Get all the OpenTelemetry elements that have been set up. */\nexport function openTelemetrySetupCheck(): OpenTelemetryElement[] {\n return Array.from(setupElements);\n}\n\n/** Mark an OpenTelemetry element as setup. */\nexport function setIsSetup(element: OpenTelemetryElement): void {\n setupElements.add(element);\n}\n\n/** Only exported for tests. */\nexport function clearOpenTelemetrySetupCheck(): void {\n setupElements.clear();\n}\n","import type { Baggage, Context, Span, SpanContext, TextMapGetter, TextMapSetter } from '@opentelemetry/api';\nimport { context, INVALID_TRACEID, propagation, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed, W3CBaggagePropagator } from '@opentelemetry/core';\nimport { ATTR_URL_FULL, SEMATTRS_HTTP_URL } from '@opentelemetry/semantic-conventions';\nimport type { Client, continueTrace, DynamicSamplingContext, Scope } from '@sentry/core';\nimport {\n baggageHeaderToDynamicSamplingContext,\n debug,\n generateSentryTraceHeader,\n generateTraceparentHeader,\n getClient,\n getCurrentScope,\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n getIsolationScope,\n LRUMap,\n parseBaggageHeader,\n propagationContextFromHeaders,\n SENTRY_BAGGAGE_KEY_PREFIX,\n shouldContinueTrace,\n shouldPropagateTraceForUrl,\n spanToJSON,\n} from '@sentry/core';\nimport { SENTRY_BAGGAGE_HEADER, SENTRY_TRACE_HEADER, SENTRY_TRACE_STATE_URL } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { getScopesFromContext, setScopesOnContext } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { makeTraceState } from './utils/makeTraceState';\nimport { setIsSetup } from './utils/setupCheck';\n\n/**\n * Injects and extracts `sentry-trace` and `baggage` headers from carriers.\n */\nexport class SentryPropagator extends W3CBaggagePropagator {\n /** A map of URLs that have already been checked for if they match tracePropagationTargets. */\n private _urlMatchesTargetsMap: LRUMap;\n\n public constructor() {\n super();\n setIsSetup('SentryPropagator');\n\n // We're caching results so we don't have to recompute regexp every time we create a request.\n this._urlMatchesTargetsMap = new LRUMap(100);\n }\n\n /**\n * @inheritDoc\n */\n public inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n if (isTracingSuppressed(context)) {\n DEBUG_BUILD && debug.log('[Tracing] Not injecting trace data for url because tracing is suppressed.');\n return;\n }\n\n const activeSpan = trace.getSpan(context);\n const url = activeSpan && getCurrentURL(activeSpan);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n if (!shouldPropagateTraceForUrl(url, tracePropagationTargets, this._urlMatchesTargetsMap)) {\n DEBUG_BUILD &&\n debug.log('[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:', url);\n return;\n }\n\n const existingBaggageHeader = getExistingBaggage(carrier);\n const existingSentryTraceHeader = getExistingSentryTrace(carrier);\n\n let baggage = propagation.getBaggage(context) || propagation.createBaggage({});\n\n const { dynamicSamplingContext, traceId, spanId, sampled } = getInjectionData(context);\n\n if (existingBaggageHeader) {\n const baggageEntries = parseBaggageHeader(existingBaggageHeader);\n\n if (baggageEntries) {\n Object.entries(baggageEntries).forEach(([key, value]) => {\n if (!existingSentryTraceHeader && key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n // Edge case: A baggage header with sentry- keys was added previously but no\n // sentry-trace header. In this case we remove the old sentry-keys and add new\n // ones below.\n return;\n }\n baggage = baggage.setEntry(key, { value });\n });\n }\n }\n\n if (!existingSentryTraceHeader && dynamicSamplingContext) {\n baggage = Object.entries(dynamicSamplingContext).reduce((b, [dscKey, dscValue]) => {\n if (dscValue) {\n return b.setEntry(`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`, { value: dscValue });\n }\n return b;\n }, baggage);\n }\n\n // We also want to avoid setting the default OTEL trace ID, if we get that for whatever reason\n if (!existingSentryTraceHeader && traceId && traceId !== INVALID_TRACEID) {\n setter.set(carrier, SENTRY_TRACE_HEADER, generateSentryTraceHeader(traceId, spanId, sampled));\n\n if (propagateTraceparent) {\n setter.set(carrier, 'traceparent', generateTraceparentHeader(traceId, spanId, sampled));\n }\n }\n\n super.inject(propagation.setBaggage(context, baggage), carrier, setter);\n }\n\n /**\n * @inheritDoc\n */\n public extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n const maybeSentryTraceHeader: string | string[] | undefined = getter.get(carrier, SENTRY_TRACE_HEADER);\n const baggage = getter.get(carrier, SENTRY_BAGGAGE_HEADER);\n\n const sentryTrace = maybeSentryTraceHeader\n ? Array.isArray(maybeSentryTraceHeader)\n ? maybeSentryTraceHeader[0]\n : maybeSentryTraceHeader\n : undefined;\n\n // Add remote parent span context\n // If there is no incoming trace, this will return the context as-is\n return ensureScopesOnContext(getContextWithRemoteActiveSpan(context, { sentryTrace, baggage }));\n }\n\n /**\n * @inheritDoc\n */\n public fields(): string[] {\n return [SENTRY_TRACE_HEADER, SENTRY_BAGGAGE_HEADER, 'traceparent'];\n }\n}\n\n// Re-exported from @sentry/core for backwards compatibility\nexport { shouldPropagateTraceForUrl } from '@sentry/core';\n\n/**\n * Get propagation injection data for the given context.\n * The additional options can be passed to override the scope and client that is otherwise derived from the context.\n */\nexport function getInjectionData(\n context: Context,\n options: { scope?: Scope; client?: Client } = {},\n): {\n dynamicSamplingContext: Partial | undefined;\n traceId: string | undefined;\n spanId: string | undefined;\n sampled: boolean | undefined;\n} {\n const span = trace.getSpan(context);\n\n // If we have a remote span, the spanId should be considered as the parentSpanId, not spanId itself\n // Instead, we use a virtual (generated) spanId for propagation\n if (span?.spanContext().isRemote) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: undefined,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // If we have a local span, we just use this\n if (span) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: spanContext.spanId,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // Else we try to use the propagation context from the scope\n // The only scenario where this should happen is when we neither have a span, nor an incoming trace\n const scope = options.scope || getScopesFromContext(context)?.scope || getCurrentScope();\n const client = options.client || getClient();\n\n const propagationContext = scope.getPropagationContext();\n const dynamicSamplingContext = client ? getDynamicSamplingContextFromScope(client, scope) : undefined;\n return {\n dynamicSamplingContext,\n traceId: propagationContext.traceId,\n spanId: propagationContext.propagationSpanId,\n sampled: propagationContext.sampled,\n };\n}\n\nfunction getContextWithRemoteActiveSpan(\n ctx: Context,\n { sentryTrace, baggage }: Parameters[0],\n): Context {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n\n const { traceId, parentSpanId, sampled, dsc } = propagationContext;\n\n const client = getClient();\n const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n\n // We only want to set the virtual span if we are continuing a concrete trace\n // Otherwise, we ignore the incoming trace here, e.g. if we have no trace headers\n if (!parentSpanId || (client && !shouldContinueTrace(client, incomingDsc?.org_id))) {\n return ctx;\n }\n\n const spanContext = generateRemoteSpanContext({\n traceId,\n spanId: parentSpanId,\n sampled,\n dsc,\n });\n\n return trace.setSpanContext(ctx, spanContext);\n}\n\n/**\n * Takes trace strings and propagates them as a remote active span.\n * This should be used in addition to `continueTrace` in OTEL-powered environments.\n */\nexport function continueTraceAsRemoteSpan(\n ctx: Context,\n options: Parameters[0],\n callback: () => T,\n): T {\n const ctxWithSpanContext = ensureScopesOnContext(getContextWithRemoteActiveSpan(ctx, options));\n\n return context.with(ctxWithSpanContext, callback);\n}\n\nfunction ensureScopesOnContext(ctx: Context): Context {\n // If there are no scopes yet on the context, ensure we have them\n const scopes = getScopesFromContext(ctx);\n const newScopes = {\n // If we have no scope here, this is most likely either the root context or a context manually derived from it\n // In this case, we want to fork the current scope, to ensure we do not pollute the root scope\n scope: scopes ? scopes.scope : getCurrentScope().clone(),\n isolationScope: scopes ? scopes.isolationScope : getIsolationScope(),\n };\n\n return setScopesOnContext(ctx, newScopes);\n}\n\n/** Try to get the existing baggage header so we can merge this in. */\nfunction getExistingBaggage(carrier: unknown): string | undefined {\n try {\n const baggage = (carrier as Record)[SENTRY_BAGGAGE_HEADER];\n return Array.isArray(baggage) ? baggage.join(',') : baggage;\n } catch {\n return undefined;\n }\n}\n\nfunction getExistingSentryTrace(carrier: unknown): string | string[] | undefined {\n try {\n return (carrier as Record)[SENTRY_TRACE_HEADER];\n } catch {\n return undefined;\n }\n}\n\n/**\n * It is pretty tricky to get access to the outgoing request URL of a request in the propagator.\n * As we only have access to the context of the span to be sent and the carrier (=headers),\n * but the span may be unsampled and thus have no attributes.\n *\n * So we use the following logic:\n * 1. If we have an active span, we check if it has a URL attribute.\n * 2. Else, if the active span has no URL attribute (e.g. it is unsampled), we check a special trace state (which we set in our sampler).\n */\nfunction getCurrentURL(span: Span): string | undefined {\n const spanData = spanToJSON(span).data;\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const urlAttribute = spanData[SEMATTRS_HTTP_URL] || spanData[ATTR_URL_FULL];\n if (typeof urlAttribute === 'string') {\n return urlAttribute;\n }\n\n // Also look at the traceState, which we may set in the sampler even for unsampled spans\n const urlTraceState = span.spanContext().traceState?.get(SENTRY_TRACE_STATE_URL);\n if (urlTraceState) {\n return urlTraceState;\n }\n\n return undefined;\n}\n\nfunction generateRemoteSpanContext({\n spanId,\n traceId,\n sampled,\n dsc,\n}: {\n spanId: string;\n traceId: string;\n sampled: boolean | undefined;\n dsc?: Partial;\n}): SpanContext {\n // We store the DSC as OTEL trace state on the span context\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanContext: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n return spanContext;\n}\n","import type { Context, Span, SpanContext, SpanOptions, TimeInput, Tracer } from '@opentelemetry/api';\nimport { context, SpanStatusCode, trace, TraceFlags } from '@opentelemetry/api';\nimport { isTracingSuppressed, suppressTracing } from '@opentelemetry/core';\nimport type {\n Client,\n continueTrace as baseContinueTrace,\n DynamicSamplingContext,\n Scope,\n Span as SentrySpan,\n TraceContext,\n} from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n generateSpanId,\n generateTraceId,\n getClient,\n getCurrentScope,\n getDynamicSamplingContextFromScope,\n getDynamicSamplingContextFromSpan,\n getRootSpan,\n getTraceContextFromScope,\n handleCallbackErrors,\n hasSpansEnabled,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n spanToJSON,\n spanToTraceContext,\n} from '@sentry/core';\nimport { continueTraceAsRemoteSpan } from './propagator';\nimport type { OpenTelemetryClient, OpenTelemetrySpanContext } from './types';\nimport { getContextFromScope } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { makeTraceState } from './utils/makeTraceState';\n\n/**\n * Internal helper for starting spans and manual spans. See {@link startSpan} and {@link startSpanManual} for the public APIs.\n * @param options - The span context options\n * @param callback - The callback to execute with the span\n * @param autoEnd - Whether to automatically end the span after the callback completes\n */\nfunction _startSpan(options: OpenTelemetrySpanContext, callback: (span: Span) => T, autoEnd: boolean): T {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n const ctx = shouldSkipSpan ? suppressTracing(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n // If spans are not enabled, ensure we suppress tracing for the span creation\n // but preserve the original context for the callback execution\n // This ensures that we don't create spans when tracing is disabled which\n // would otherwise be a problem for users that don't enable tracing but use\n // custom OpenTelemetry setups.\n if (!hasSpansEnabled()) {\n const suppressedCtx = isTracingSuppressed(ctx) ? ctx : suppressTracing(ctx);\n\n return context.with(suppressedCtx, () => {\n return tracer.startActiveSpan(name, spanOptions, suppressedCtx, span => {\n patchSpanEnd(span);\n // Restore the original unsuppressed context for the callback execution\n // so that custom OpenTelemetry spans maintain the correct context.\n // We use activeCtx (not ctx) because ctx may be suppressed when onlyIfParent is true\n // and no parent span exists. Using activeCtx ensures custom OTel spans are never\n // inadvertently suppressed.\n return context.with(activeCtx, () => {\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n });\n }\n\n return tracer.startActiveSpan(name, spanOptions, ctx, span => {\n patchSpanEnd(span);\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpan(options: OpenTelemetrySpanContext, callback: (span: Span) => T): T {\n return _startSpan(options, callback, true);\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` or the `finish` function passed to the callback manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startSpanManual(\n options: OpenTelemetrySpanContext,\n callback: (span: Span, finish: () => void) => T,\n): T {\n return _startSpan(options, span => callback(span, () => span.end()), false);\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nexport function startInactiveSpan(options: OpenTelemetrySpanContext): Span {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n let ctx = shouldSkipSpan ? suppressTracing(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n if (!hasSpansEnabled()) {\n ctx = isTracingSuppressed(ctx) ? ctx : suppressTracing(ctx);\n }\n\n const span = tracer.startSpan(name, spanOptions, ctx);\n patchSpanEnd(span);\n return span;\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will be root spans.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan(span: Span | null, callback: (scope: Scope) => T): T {\n const newContextWithActiveSpan = span ? trace.setSpan(context.active(), span) : trace.deleteSpan(context.active());\n return context.with(newContextWithActiveSpan, () => callback(getCurrentScope()));\n}\n\nfunction getTracer(): Tracer {\n const client = getClient();\n return client?.tracer || trace.getTracer('@sentry/opentelemetry', SDK_VERSION);\n}\n\nfunction getSpanOptions(options: OpenTelemetrySpanContext): SpanOptions {\n const { startTime, attributes, kind, op, links } = options;\n\n // OTEL expects timestamps in ms, not seconds\n const fixedStartTime = typeof startTime === 'number' ? ensureTimestampInMilliseconds(startTime) : startTime;\n\n return {\n attributes: op\n ? {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...attributes,\n }\n : attributes,\n kind,\n links,\n startTime: fixedStartTime,\n };\n}\n\nfunction ensureTimestampInMilliseconds(timestamp: number): number {\n const isMs = timestamp < 9999999999;\n return isMs ? timestamp * 1000 : timestamp;\n}\n\n/**\n * Wraps the span's `end()` method so that numeric timestamps passed in seconds\n * are converted to milliseconds before reaching OTel's native `Span.end()`.\n */\nfunction patchSpanEnd(span: Span): void {\n const originalEnd = span.end.bind(span);\n span.end = (endTime?: TimeInput) => {\n return originalEnd(typeof endTime === 'number' ? ensureTimestampInMilliseconds(endTime) : endTime);\n };\n}\n\nfunction getContext(scope: Scope | undefined, forceTransaction: boolean | undefined): Context {\n const ctx = getContextForScope(scope);\n const parentSpan = trace.getSpan(ctx);\n\n // In the case that we have no parent span, we start a new trace\n // Note that if we continue a trace, we'll always have a remote parent span here anyhow\n if (!parentSpan) {\n return ctx;\n }\n\n // If we don't want to force a transaction, and we have a parent span, all good, we just return as-is!\n if (!forceTransaction) {\n return ctx;\n }\n\n // Else, if we do have a parent span but want to force a transaction, we have to simulate a \"root\" context\n\n // Else, we need to do two things:\n // 1. Unset the parent span from the context, so we'll create a new root span\n // 2. Ensure the propagation context is correct, so we'll continue from the parent span\n const ctxWithoutSpan = trace.deleteSpan(ctx);\n\n const { spanId, traceId } = parentSpan.spanContext();\n const sampled = getSamplingDecision(parentSpan.spanContext());\n\n // In this case, when we are forcing a transaction, we want to treat this like continuing an incoming trace\n // so we set the traceState according to the root span\n const rootSpan = getRootSpan(parentSpan);\n const dsc = getDynamicSamplingContextFromSpan(rootSpan);\n\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanOptions: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n const ctxWithSpanContext = trace.setSpanContext(ctxWithoutSpan, spanOptions);\n\n return ctxWithSpanContext;\n}\n\nfunction getContextForScope(scope?: Scope): Context {\n if (scope) {\n const ctx = getContextFromScope(scope);\n if (ctx) {\n return ctx;\n }\n }\n\n return context.active();\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * This is a custom version of `continueTrace` that is used in OTEL-powered environments.\n * It propagates the trace as a remote span, in addition to setting it on the propagation context.\n */\nexport function continueTrace(options: Parameters[0], callback: () => T): T {\n return continueTraceAsRemoteSpan(context.active(), options, callback);\n}\n\n/**\n * Start a new trace with a unique traceId, ensuring all spans created within the callback\n * share the same traceId.\n *\n * This is a custom version of `startNewTrace` for OTEL-powered environments.\n * It injects the new traceId as a remote span context into the OTEL context, so that\n * `startInactiveSpan` and `startSpan` pick it up correctly.\n */\nexport function startNewTrace(callback: () => T): T {\n const traceId = generateTraceId();\n const spanId = generateSpanId();\n\n const spanContext: SpanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: TraceFlags.NONE,\n };\n\n const ctxWithTrace = trace.setSpanContext(context.active(), spanContext);\n\n return context.with(ctxWithTrace, () => {\n getCurrentScope().setPropagationContext({\n traceId,\n sampleRand: _INTERNAL_safeMathRandom(),\n });\n return callback();\n });\n}\n\n/**\n * Get the trace context for a given scope.\n * We have a custom implementation here because we need an OTEL-specific way to get the span from a scope.\n */\nexport function getTraceContextForScope(\n client: Client,\n scope: Scope,\n): [dynamicSamplingContext: Partial, traceContext: TraceContext] {\n const ctx = getContextFromScope(scope);\n const span = ctx && trace.getSpan(ctx);\n\n const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n\n const dynamicSamplingContext = span\n ? getDynamicSamplingContextFromSpan(span)\n : getDynamicSamplingContextFromScope(client, scope);\n return [dynamicSamplingContext, traceContext];\n}\n\nfunction getActiveSpanWrapper(parentSpan: Span | SentrySpan | undefined | null): (callback: () => T) => T {\n return parentSpan !== undefined\n ? (callback: () => T) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback: () => T) => callback();\n}\n","import { context } from '@opentelemetry/api';\nimport { suppressTracing as suppressTracingImpl } from '@opentelemetry/core';\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nexport function suppressTracing(callback: () => T): T {\n const ctx = suppressTracingImpl(context.active());\n return context.with(ctx, callback);\n}\n","import type { Client } from '@sentry/core';\nimport { getDynamicSamplingContextFromSpan, getRootSpan, spanToTraceContext } from '@sentry/core';\nimport { getActiveSpan } from './utils/getActiveSpan';\n\n/** Ensure the `trace` context is set on all events. */\nexport function setupEventContextTrace(client: Client): void {\n client.on('preprocessEvent', event => {\n const span = getActiveSpan();\n // For transaction events, this is handled separately\n // Because the active span may not be the span that is actually the transaction event\n if (!span || event.type === 'transaction') {\n return;\n }\n\n // If event has already set `trace` context, use that one.\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n const rootSpan = getRootSpan(span);\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(rootSpan),\n ...event.sdkProcessingMetadata,\n };\n\n return event;\n });\n}\n","import * as api from '@opentelemetry/api';\nimport type { Client, Scope, SerializedTraceData, Span } from '@sentry/core';\nimport {\n dynamicSamplingContextToSentryBaggageHeader,\n generateSentryTraceHeader,\n generateTraceparentHeader,\n getCapturedScopesOnSpan,\n} from '@sentry/core';\nimport { getInjectionData } from '../propagator';\nimport { getContextFromScope } from './contextData';\n\n/**\n * Otel-specific implementation of `getTraceData`.\n * @see `@sentry/core` version of `getTraceData` for more information\n */\nexport function getTraceData({\n span,\n scope,\n client,\n propagateTraceparent,\n}: { span?: Span; scope?: Scope; client?: Client; propagateTraceparent?: boolean } = {}): SerializedTraceData {\n let ctx = (scope && getContextFromScope(scope)) ?? api.context.active();\n\n if (span) {\n const { scope } = getCapturedScopesOnSpan(span);\n // fall back to current context if for whatever reason we can't find the one of the span\n ctx = (scope && getContextFromScope(scope)) || api.trace.setSpan(api.context.active(), span);\n }\n\n const { traceId, spanId, sampled, dynamicSamplingContext } = getInjectionData(ctx, { scope, client });\n\n const traceData: SerializedTraceData = {\n 'sentry-trace': generateSentryTraceHeader(traceId, spanId, sampled),\n baggage: dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext),\n };\n\n if (propagateTraceparent) {\n traceData.traceparent = generateTraceparentHeader(traceId, spanId, sampled);\n }\n\n return traceData;\n}\n","import * as api from '@opentelemetry/api';\nimport type { Scope, withActiveSpan as defaultWithActiveSpan } from '@sentry/core';\nimport { getDefaultCurrentScope, getDefaultIsolationScope, setAsyncContextStrategy } from '@sentry/core';\nimport {\n SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_SCOPE_CONTEXT_KEY,\n} from './constants';\nimport { continueTrace, startInactiveSpan, startNewTrace, startSpan, startSpanManual, withActiveSpan } from './trace';\nimport type { CurrentScopes } from './types';\nimport { getContextFromScope, getScopesFromContext } from './utils/contextData';\nimport { getActiveSpan } from './utils/getActiveSpan';\nimport { getTraceData } from './utils/getTraceData';\nimport { suppressTracing } from './utils/suppressTracing';\n\n/**\n * Sets the async context strategy to use follow the OTEL context under the hood.\n * We handle forking a hub inside of our custom OTEL Context Manager (./otelContextManager.ts)\n */\nexport function setOpenTelemetryContextAsyncContextStrategy(): void {\n function getScopes(): CurrentScopes {\n const ctx = api.context.active();\n const scopes = getScopesFromContext(ctx);\n\n if (scopes) {\n return scopes;\n }\n\n // fallback behavior:\n // if, for whatever reason, we can't find scopes on the context here, we have to fix this somehow\n return {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n function withScope(callback: (scope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n // as by default, we don't want to fork this, unless triggered explicitly by `withScope`\n return api.context.with(ctx, () => {\n return callback(getCurrentScope());\n });\n }\n\n function withSetScope(scope: Scope, callback: (scope: Scope) => T): T {\n const ctx = getContextFromScope(scope) || api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_SET_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which picks up this scope as the current scope\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY, scope), () => {\n return callback(scope);\n });\n }\n\n function withIsolationScope(callback: (isolationScope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY, true), () => {\n return callback(getIsolationScope());\n });\n }\n\n function withSetIsolationScope(isolationScope: Scope, callback: (isolationScope: Scope) => T): T {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY, isolationScope), () => {\n return callback(getIsolationScope());\n });\n }\n\n function getCurrentScope(): Scope {\n return getScopes().scope;\n }\n\n function getIsolationScope(): Scope {\n return getScopes().isolationScope;\n }\n\n setAsyncContextStrategy({\n withScope,\n withSetScope,\n withSetIsolationScope,\n withIsolationScope,\n getCurrentScope,\n getIsolationScope,\n startSpan,\n startSpanManual,\n startInactiveSpan,\n getActiveSpan,\n suppressTracing,\n getTraceData,\n continueTrace,\n startNewTrace,\n // The types here don't fully align, because our own `Span` type is narrower\n // than the OTEL one - but this is OK for here, as we now we'll only have OTEL spans passed around\n withActiveSpan: withActiveSpan as typeof defaultWithActiveSpan,\n });\n}\n","import type { AsyncLocalStorage } from 'node:async_hooks';\nimport type { Context, ContextManager } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { getCurrentScope, getIsolationScope } from '@sentry/core';\nimport {\n SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY,\n SENTRY_FORK_SET_SCOPE_CONTEXT_KEY,\n SENTRY_SCOPES_CONTEXT_KEY,\n} from './constants';\nimport { getScopesFromContext, setContextOnScope, setScopesOnContext } from './utils/contextData';\nimport { setIsSetup } from './utils/setupCheck';\n\nexport type AsyncLocalStorageLookup = {\n asyncLocalStorage: AsyncLocalStorage;\n contextSymbol: symbol;\n};\n\ntype ExtendedContextManagerInstance = new (\n ...args: unknown[]\n) => ContextManagerInstance & {\n getAsyncLocalStorageLookup(): AsyncLocalStorageLookup;\n};\n\n/**\n * Wrap an OpenTelemetry ContextManager in a way that ensures the context is kept in sync with the Sentry Scope.\n *\n * Usage:\n * import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\n * const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n * const contextManager = new SentryContextManager();\n */\nexport function wrapContextManagerClass(\n ContextManagerClass: new (...args: unknown[]) => ContextManagerInstance,\n): ExtendedContextManagerInstance {\n /**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create new scopes per context, so that the OTEL Context & the Sentry Scope are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\n\n // @ts-expect-error TS does not like this, but we know this is fine\n class SentryContextManager extends ContextManagerClass {\n public constructor(...args: unknown[]) {\n super(...args);\n setIsSetup('SentryContextManager');\n }\n /**\n * Overwrite with() of the original AsyncLocalStorageContextManager\n * to ensure we also create new scopes per context.\n */\n public with ReturnType>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType,\n ...args: A\n ): ReturnType {\n const currentScopes = getScopesFromContext(context);\n const currentScope = currentScopes?.scope || getCurrentScope();\n const currentIsolationScope = currentScopes?.isolationScope || getIsolationScope();\n\n const shouldForkIsolationScope = context.getValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY) === true;\n const scope = context.getValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY) as Scope | undefined;\n const isolationScope = context.getValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY) as Scope | undefined;\n\n const newCurrentScope = scope || currentScope.clone();\n const newIsolationScope =\n isolationScope || (shouldForkIsolationScope ? currentIsolationScope.clone() : currentIsolationScope);\n const scopes = { scope: newCurrentScope, isolationScope: newIsolationScope };\n\n const ctx1 = setScopesOnContext(context, scopes);\n\n // Remove the unneeded values again\n const ctx2 = ctx1\n .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);\n\n setContextOnScope(newCurrentScope, ctx2);\n\n return super.with(ctx2, fn, thisArg, ...args);\n }\n\n /**\n * Gets underlying AsyncLocalStorage and symbol to allow lookup of scope.\n */\n public getAsyncLocalStorageLookup(): AsyncLocalStorageLookup {\n return {\n // @ts-expect-error This is on the base class, but not part of the interface\n asyncLocalStorage: this._asyncLocalStorage,\n contextSymbol: SENTRY_SCOPES_CONTEXT_KEY,\n };\n }\n }\n\n return SentryContextManager as unknown as ExtendedContextManagerInstance;\n}\n","import type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from '../semanticAttributes';\nimport { getParentSpanId } from './getParentSpanId';\n\nexport interface SpanNode {\n id: string;\n span?: ReadableSpan;\n parentNode?: SpanNode | undefined;\n children: SpanNode[];\n}\n\ntype SpanMap = Map;\n\n/**\n * This function runs through a list of OTEL Spans, and wraps them in an `SpanNode`\n * where each node holds a reference to their parent node.\n */\nexport function groupSpansWithParents(spans: ReadableSpan[]): SpanNode[] {\n const nodeMap: SpanMap = new Map();\n\n for (const span of spans) {\n createOrUpdateSpanNodeAndRefs(nodeMap, span);\n }\n\n return Array.from(nodeMap, function ([_id, spanNode]) {\n return spanNode;\n });\n}\n\n/**\n * This returns the _local_ parent ID - `parentId` on the span may point to a remote span.\n */\nexport function getLocalParentId(span: ReadableSpan): string | undefined {\n const parentIsRemote = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE] === true;\n // If the parentId is the trace parent ID, we pretend it's undefined\n // As this means the parent exists somewhere else\n return !parentIsRemote ? getParentSpanId(span) : undefined;\n}\n\nfunction createOrUpdateSpanNodeAndRefs(nodeMap: SpanMap, span: ReadableSpan): void {\n const id = span.spanContext().spanId;\n const parentId = getLocalParentId(span);\n\n if (!parentId) {\n createOrUpdateNode(nodeMap, { id, span, children: [] });\n return;\n }\n\n // Else make sure to create parent node as well\n // Note that the parent may not know it's parent _yet_, this may be updated in a later pass\n const parentNode = createOrGetParentNode(nodeMap, parentId);\n const node = createOrUpdateNode(nodeMap, { id, span, parentNode, children: [] });\n parentNode.children.push(node);\n}\n\nfunction createOrGetParentNode(nodeMap: SpanMap, id: string): SpanNode {\n const existing = nodeMap.get(id);\n\n if (existing) {\n return existing;\n }\n\n return createOrUpdateNode(nodeMap, { id, children: [] });\n}\n\nfunction createOrUpdateNode(nodeMap: SpanMap, spanNode: SpanNode): SpanNode {\n const existing = nodeMap.get(spanNode.id);\n\n // If span is already set, nothing to do here\n if (existing?.span) {\n return existing;\n }\n\n // If it exists but span is not set yet, we update it\n if (existing && !existing.span) {\n existing.span = spanNode.span;\n existing.parentNode = spanNode.parentNode;\n return existing;\n }\n\n // Else, we create a new one...\n nodeMap.set(spanNode.id, spanNode);\n return spanNode;\n}\n","import { SpanStatusCode } from '@opentelemetry/api';\nimport {\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n} from '@opentelemetry/semantic-conventions';\nimport type { SpanAttributes, SpanStatus } from '@sentry/core';\nimport { getSpanStatusFromHttpCode, SPAN_STATUS_ERROR, SPAN_STATUS_OK } from '@sentry/core';\nimport type { AbstractSpan } from '../types';\nimport { spanHasAttributes, spanHasStatus } from './spanTypes';\n\n// canonicalCodesGrpcMap maps some GRPC codes to Sentry's span statuses. See description in grpc documentation.\nconst canonicalGrpcErrorCodesMap: Record = {\n '1': 'cancelled',\n '2': 'unknown_error',\n '3': 'invalid_argument',\n '4': 'deadline_exceeded',\n '5': 'not_found',\n '6': 'already_exists',\n '7': 'permission_denied',\n '8': 'resource_exhausted',\n '9': 'failed_precondition',\n '10': 'aborted',\n '11': 'out_of_range',\n '12': 'unimplemented',\n '13': 'internal_error',\n '14': 'unavailable',\n '15': 'data_loss',\n '16': 'unauthenticated',\n} as const;\n\nconst isStatusErrorMessageValid = (message: string): boolean => {\n return Object.values(canonicalGrpcErrorCodesMap).includes(message as SpanStatus['message']);\n};\n\n/**\n * Get a Sentry span status from an otel span.\n */\nexport function mapStatus(span: AbstractSpan): SpanStatus {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const status = spanHasStatus(span) ? span.status : undefined;\n\n if (status) {\n // Since span status OK is not set by default, we give it priority: https://opentelemetry.io/docs/concepts/signals/traces/#span-status\n if (status.code === SpanStatusCode.OK) {\n return { code: SPAN_STATUS_OK };\n // If the span is already marked as erroneous we return that exact status\n } else if (status.code === SpanStatusCode.ERROR) {\n if (typeof status.message === 'undefined') {\n const inferredStatus = inferStatusFromAttributes(attributes);\n if (inferredStatus) {\n return inferredStatus;\n }\n }\n\n if (status.message && isStatusErrorMessageValid(status.message)) {\n return { code: SPAN_STATUS_ERROR, message: status.message };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n }\n\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n const inferredStatus = inferStatusFromAttributes(attributes);\n\n if (inferredStatus) {\n return inferredStatus;\n }\n\n // We default to setting the spans status to ok.\n if (status?.code === SpanStatusCode.UNSET) {\n return { code: SPAN_STATUS_OK };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n }\n}\n\nfunction inferStatusFromAttributes(attributes: SpanAttributes): SpanStatus | undefined {\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n\n // eslint-disable-next-line deprecation/deprecation\n const httpCodeAttribute = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE];\n // eslint-disable-next-line deprecation/deprecation\n const grpcCodeAttribute = attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n\n const numberHttpCode =\n typeof httpCodeAttribute === 'number'\n ? httpCodeAttribute\n : typeof httpCodeAttribute === 'string'\n ? parseInt(httpCodeAttribute)\n : undefined;\n\n if (typeof numberHttpCode === 'number') {\n return getSpanStatusFromHttpCode(numberHttpCode);\n }\n\n if (typeof grpcCodeAttribute === 'string') {\n return { code: SPAN_STATUS_ERROR, message: canonicalGrpcErrorCodesMap[grpcCodeAttribute] || 'unknown_error' };\n }\n\n return undefined;\n}\n","/* eslint-disable max-lines */\nimport type { Span } from '@opentelemetry/api';\nimport { SpanKind } from '@opentelemetry/api';\nimport type { ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_HTTP_RESPONSE_STATUS_CODE, SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport type {\n SpanAttributes,\n SpanJSON,\n SpanOrigin,\n TraceContext,\n TransactionEvent,\n TransactionSource,\n} from '@sentry/core';\nimport {\n _INTERNAL_safeDateNow,\n captureEvent,\n convertSpanLinksForEnvelope,\n debounce,\n debug,\n getCapturedScopesOnSpan,\n getDynamicSamplingContextFromSpan,\n getStatusMessage,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n spanTimeInputToSeconds,\n timedEventsToMeasurements,\n} from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from './semanticAttributes';\nimport { getParentSpanId } from './utils/getParentSpanId';\nimport { getRequestSpanData } from './utils/getRequestSpanData';\nimport type { SpanNode } from './utils/groupSpansWithParents';\nimport { getLocalParentId, groupSpansWithParents } from './utils/groupSpansWithParents';\nimport { mapStatus } from './utils/mapStatus';\nimport { parseSpanDescription } from './utils/parseSpanDescription';\n\ntype SpanNodeCompleted = SpanNode & { span: ReadableSpan };\n\nconst MAX_SPAN_COUNT = 1000;\nconst DEFAULT_TIMEOUT = 300; // 5 min\n\ninterface FinishedSpanBucket {\n timestampInS: number;\n spans: Set;\n}\n\n/**\n * A Sentry-specific exporter that converts OpenTelemetry Spans to Sentry Spans & Transactions.\n */\nexport class SentrySpanExporter {\n /*\n * A quick explanation on the buckets: We do bucketing of finished spans for efficiency. This span exporter is\n * accumulating spans until a root span is encountered and then it flushes all the spans that are descendants of that\n * root span. Because it is totally in the realm of possibilities that root spans are never finished, and we don't\n * want to accumulate spans indefinitely in memory, we need to periodically evacuate spans. Naively we could simply\n * store the spans in an array and each time a new span comes in we could iterate through the entire array and\n * evacuate all spans that have an end-timestamp that is older than our limit. This could get quite expensive because\n * we would have to iterate a potentially large number of spans every time we evacuate. We want to avoid these large\n * bursts of computation.\n *\n * Instead we go for a bucketing approach and put spans into buckets, based on what second\n * (modulo the time limit) the span was put into the exporter. With buckets, when we decide to evacuate, we can\n * iterate through the bucket entries instead, which have an upper bound of items, making the evacuation much more\n * efficient. Cleaning up also becomes much more efficient since it simply involves de-referencing a bucket within the\n * bucket array, and letting garbage collection take care of the rest.\n */\n private _finishedSpanBuckets: (FinishedSpanBucket | undefined)[];\n private _finishedSpanBucketSize: number;\n private _spansToBucketEntry: WeakMap;\n private _lastCleanupTimestampInS: number;\n // Essentially a a set of span ids that are already sent. The values are expiration\n // times in this cache so we don't hold onto them indefinitely.\n private _sentSpans: Map;\n /* Internally, we use a debounced flush to give some wiggle room to the span processor to accumulate more spans. */\n private _debouncedFlush: ReturnType;\n\n public constructor(options?: {\n /** Lower bound of time in seconds until spans that are buffered but have not been sent as part of a transaction get cleared from memory. */\n timeout?: number;\n }) {\n this._finishedSpanBucketSize = options?.timeout || DEFAULT_TIMEOUT;\n this._finishedSpanBuckets = new Array(this._finishedSpanBucketSize).fill(undefined);\n this._lastCleanupTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n this._spansToBucketEntry = new WeakMap();\n this._sentSpans = new Map();\n this._debouncedFlush = debounce(this.flush.bind(this), 1, { maxWait: 100 });\n }\n\n /**\n * Export a single span.\n * This is called by the span processor whenever a span is ended.\n */\n public export(span: ReadableSpan): void {\n const currentTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n\n if (this._lastCleanupTimestampInS !== currentTimestampInS) {\n let droppedSpanCount = 0;\n this._finishedSpanBuckets.forEach((bucket, i) => {\n if (bucket && bucket.timestampInS <= currentTimestampInS - this._finishedSpanBucketSize) {\n droppedSpanCount += bucket.spans.size;\n this._finishedSpanBuckets[i] = undefined;\n }\n });\n if (droppedSpanCount > 0) {\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter dropped ${droppedSpanCount} spans because they were pending for more than ${this._finishedSpanBucketSize} seconds.`,\n );\n }\n this._lastCleanupTimestampInS = currentTimestampInS;\n }\n\n const currentBucketIndex = currentTimestampInS % this._finishedSpanBucketSize;\n const currentBucket = this._finishedSpanBuckets[currentBucketIndex] || {\n timestampInS: currentTimestampInS,\n spans: new Set(),\n };\n this._finishedSpanBuckets[currentBucketIndex] = currentBucket;\n currentBucket.spans.add(span);\n this._spansToBucketEntry.set(span, currentBucket);\n\n // If the span doesn't have a local parent ID (it's a root span), we're gonna flush all the ended spans\n const localParentId = getLocalParentId(span);\n if (!localParentId || this._sentSpans.has(localParentId)) {\n this._debouncedFlush();\n }\n }\n\n /**\n * Try to flush any pending spans immediately.\n * This is called internally by the exporter (via _debouncedFlush),\n * but can also be triggered externally if we force-flush.\n */\n public flush(): void {\n const finishedSpans = this._finishedSpanBuckets.flatMap(bucket => (bucket ? Array.from(bucket.spans) : []));\n\n this._flushSentSpanCache();\n const sentSpans = this._maybeSend(finishedSpans);\n\n const sentSpanCount = sentSpans.size;\n const remainingOpenSpanCount = finishedSpans.length - sentSpanCount;\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter exported ${sentSpanCount} spans, ${remainingOpenSpanCount} spans are waiting for their parent spans to finish`,\n );\n\n const expirationDate = _INTERNAL_safeDateNow() + DEFAULT_TIMEOUT * 1000;\n\n for (const span of sentSpans) {\n this._sentSpans.set(span.spanContext().spanId, expirationDate);\n const bucketEntry = this._spansToBucketEntry.get(span);\n if (bucketEntry) {\n bucketEntry.spans.delete(span);\n }\n }\n // Cancel a pending debounced flush, if there is one\n // This can be relevant if we directly flush, circumventing the debounce\n // in that case, we want to cancel any pending debounced flush\n this._debouncedFlush.cancel();\n }\n\n /**\n * Clear the exporter.\n * This is called when the span processor is shut down.\n */\n public clear(): void {\n this._finishedSpanBuckets = this._finishedSpanBuckets.fill(undefined);\n this._sentSpans.clear();\n this._debouncedFlush.cancel();\n }\n\n /**\n * Send the given spans, but only if they are part of a finished transaction.\n *\n * Returns the sent spans.\n * Spans remain unsent when their parent span is not yet finished.\n * This will happen regularly, as child spans are generally finished before their parents.\n * But it _could_ also happen because, for whatever reason, a parent span was lost.\n * In this case, we'll eventually need to clean this up.\n */\n private _maybeSend(spans: ReadableSpan[]): Set {\n const grouped = groupSpansWithParents(spans);\n const sentSpans = new Set();\n\n const rootNodes = this._getCompletedRootNodes(grouped);\n\n for (const root of rootNodes) {\n const span = root.span;\n sentSpans.add(span);\n const transactionEvent = createTransactionForOtelSpan(span);\n\n // Add an attribute to the transaction event to indicate that this transaction is an orphaned transaction\n if (root.parentNode && this._sentSpans.has(root.parentNode.id)) {\n const traceData = transactionEvent.contexts?.trace?.data;\n if (traceData) {\n traceData['sentry.parent_span_already_sent'] = true;\n }\n }\n\n // We'll recursively add all the child spans to this array\n const spans = transactionEvent.spans || [];\n\n for (const child of root.children) {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n }\n\n // spans.sort() mutates the array, but we do not use this anymore after this point\n // so we can safely mutate it here\n transactionEvent.spans =\n spans.length > MAX_SPAN_COUNT\n ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n : spans;\n\n const measurements = timedEventsToMeasurements(span.events);\n if (measurements) {\n transactionEvent.measurements = measurements;\n }\n\n captureEvent(transactionEvent);\n }\n\n return sentSpans;\n }\n\n /** Remove \"expired\" span id entries from the _sentSpans cache. */\n private _flushSentSpanCache(): void {\n const currentTimestamp = _INTERNAL_safeDateNow();\n // Note, it is safe to delete items from the map as we go: https://stackoverflow.com/a/35943995/90297\n for (const [spanId, expirationTime] of this._sentSpans.entries()) {\n if (expirationTime <= currentTimestamp) {\n this._sentSpans.delete(spanId);\n }\n }\n }\n\n /** Check if a node is a completed root node or a node whose parent has already been sent */\n private _nodeIsCompletedRootNodeOrHasSentParent(node: SpanNode): node is SpanNodeCompleted {\n return !!node.span && (!node.parentNode || this._sentSpans.has(node.parentNode.id));\n }\n\n /** Get all completed root nodes from a list of nodes */\n private _getCompletedRootNodes(nodes: SpanNode[]): SpanNodeCompleted[] {\n // TODO: We should be able to remove the explicit `node is SpanNodeCompleted` type guard\n // once we stop supporting TS < 5.5\n return nodes.filter((node): node is SpanNodeCompleted => this._nodeIsCompletedRootNodeOrHasSentParent(node));\n }\n}\n\nfunction parseSpan(span: ReadableSpan): { op?: string; origin?: SpanOrigin; source?: TransactionSource } {\n const attributes = span.attributes;\n\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined;\n const op = attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionSource | undefined;\n\n return { origin, op, source };\n}\n\n/** Exported only for tests. */\nexport function createTransactionForOtelSpan(span: ReadableSpan): TransactionEvent {\n const { op, description, data, origin = 'manual', source } = getSpanData(span);\n const capturedSpanScopes = getCapturedScopesOnSpan(span as unknown as Span);\n\n const sampleRate = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] as number | undefined;\n\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: sampleRate,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n ...data,\n ...removeSentryAttributes(span.attributes),\n };\n\n const { links } = span;\n const { traceId: trace_id, spanId: span_id } = span.spanContext();\n\n // If parentSpanIdFromTraceState is defined at all, we want it to take precedence\n // In that case, an empty string should be interpreted as \"no parent span id\",\n // even if `span.parentSpanId` is set\n // this is the case when we are starting a new trace, where we have a virtual span based on the propagationContext\n // We only want to continue the traceId in this case, but ignore the parent span\n const parent_span_id = getParentSpanId(span);\n\n const status = mapStatus(span);\n\n const traceContext: TraceContext = {\n parent_span_id,\n span_id,\n trace_id,\n data: attributes,\n origin,\n op,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n links: convertSpanLinksForEnvelope(links),\n };\n\n const statusCode = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n const responseContext = typeof statusCode === 'number' ? { response: { status_code: statusCode } } : undefined;\n\n const transactionEvent: TransactionEvent = {\n contexts: {\n trace: traceContext,\n otel: {\n resource: span.resource.attributes,\n },\n ...responseContext,\n },\n spans: [],\n start_timestamp: spanTimeInputToSeconds(span.startTime),\n timestamp: spanTimeInputToSeconds(span.endTime),\n transaction: description,\n type: 'transaction',\n sdkProcessingMetadata: {\n capturedSpanScope: capturedSpanScopes.scope,\n capturedSpanIsolationScope: capturedSpanScopes.isolationScope,\n sampleRate,\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span as unknown as Span),\n },\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n return transactionEvent;\n}\n\nfunction createAndFinishSpanForOtelSpan(node: SpanNode, spans: SpanJSON[], sentSpans: Set): void {\n const span = node.span;\n\n if (span) {\n sentSpans.add(span);\n }\n\n const shouldDrop = !span;\n\n // If this span should be dropped, we still want to create spans for the children of this\n if (shouldDrop) {\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n return;\n }\n\n const span_id = span.spanContext().spanId;\n const trace_id = span.spanContext().traceId;\n const parentSpanId = getParentSpanId(span);\n\n const { attributes, startTime, endTime, links } = span;\n\n const { op, description, data, origin = 'manual' } = getSpanData(span);\n const allData = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...removeSentryAttributes(attributes),\n ...data,\n };\n\n const status = mapStatus(span);\n\n const spanJSON: SpanJSON = {\n span_id,\n trace_id,\n data: allData,\n description,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n op,\n origin,\n measurements: timedEventsToMeasurements(span.events),\n links: convertSpanLinksForEnvelope(links),\n };\n\n spans.push(spanJSON);\n\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n}\n\nfunction getSpanData(span: ReadableSpan): {\n data: Record;\n op?: string;\n description: string;\n source?: TransactionSource;\n origin?: SpanOrigin;\n} {\n const { op: definedOp, source: definedSource, origin } = parseSpan(span);\n const { op: inferredOp, description, source: inferredSource, data: inferredData } = parseSpanDescription(span);\n\n const op = definedOp || inferredOp;\n const source = definedSource || inferredSource;\n\n const data = { ...inferredData, ...getData(span) };\n\n return {\n op,\n description,\n source,\n origin,\n data,\n };\n}\n\n/**\n * Remove custom `sentry.` attributes we do not need to send.\n * These are more carrier attributes we use inside of the SDK, we do not need to send them to the API.\n */\nfunction removeSentryAttributes(data: Record): Record {\n const cleanedData = { ...data };\n\n /* eslint-disable @typescript-eslint/no-dynamic-delete */\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n /* eslint-enable @typescript-eslint/no-dynamic-delete */\n\n return cleanedData;\n}\n\nfunction getData(span: ReadableSpan): Record {\n const attributes = span.attributes;\n const data: Record = {};\n\n if (span.kind !== SpanKind.INTERNAL) {\n data['otel.kind'] = SpanKind[span.kind];\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeHttpStatusCodeAttribute = attributes[SEMATTRS_HTTP_STATUS_CODE];\n if (maybeHttpStatusCodeAttribute) {\n data[ATTR_HTTP_RESPONSE_STATUS_CODE] = maybeHttpStatusCodeAttribute as string;\n }\n\n const requestData = getRequestSpanData(span);\n\n if (requestData.url) {\n data.url = requestData.url;\n }\n\n if (requestData['http.query']) {\n data['http.query'] = requestData['http.query'].slice(1);\n }\n if (requestData['http.fragment']) {\n data['http.fragment'] = requestData['http.fragment'].slice(1);\n }\n\n return data;\n}\n","import type { Context } from '@opentelemetry/api';\nimport { ROOT_CONTEXT, trace } from '@opentelemetry/api';\nimport type { ReadableSpan, Span, SpanProcessor as SpanProcessorInterface } from '@opentelemetry/sdk-trace-base';\nimport {\n addChildSpanToSpan,\n getClient,\n getDefaultCurrentScope,\n getDefaultIsolationScope,\n logSpanEnd,\n logSpanStart,\n setCapturedScopesOnSpan,\n} from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from './semanticAttributes';\nimport { SentrySpanExporter } from './spanExporter';\nimport { getScopesFromContext } from './utils/contextData';\nimport { setIsSetup } from './utils/setupCheck';\n\nfunction onSpanStart(span: Span, parentContext: Context): void {\n // This is a reliable way to get the parent span - because this is exactly how the parent is identified in the OTEL SDK\n const parentSpan = trace.getSpan(parentContext);\n\n let scopes = getScopesFromContext(parentContext);\n\n // We need access to the parent span in order to be able to move up the span tree for breadcrumbs\n if (parentSpan && !parentSpan.spanContext().isRemote) {\n addChildSpanToSpan(parentSpan, span);\n }\n\n // We need this in the span exporter\n if (parentSpan?.spanContext().isRemote) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE, true);\n }\n\n // The root context does not have scopes stored, so we check for this specifically\n // As fallback we attach the global scopes\n if (parentContext === ROOT_CONTEXT) {\n scopes = {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n // We need the scope at time of span creation in order to apply it to the event when the span is finished\n if (scopes) {\n setCapturedScopesOnSpan(span, scopes.scope, scopes.isolationScope);\n }\n\n logSpanStart(span);\n\n const client = getClient();\n client?.emit('spanStart', span);\n}\n\nfunction onSpanEnd(span: Span): void {\n logSpanEnd(span);\n\n const client = getClient();\n client?.emit('spanEnd', span);\n}\n\n/**\n * Converts OpenTelemetry Spans to Sentry Spans and sends them to Sentry via\n * the Sentry SDK.\n */\nexport class SentrySpanProcessor implements SpanProcessorInterface {\n private _exporter: SentrySpanExporter;\n\n public constructor(options?: { timeout?: number }) {\n setIsSetup('SentrySpanProcessor');\n this._exporter = new SentrySpanExporter(options);\n }\n\n /**\n * @inheritDoc\n */\n public async forceFlush(): Promise {\n this._exporter.flush();\n }\n\n /**\n * @inheritDoc\n */\n public async shutdown(): Promise {\n this._exporter.clear();\n }\n\n /**\n * @inheritDoc\n */\n public onStart(span: Span, parentContext: Context): void {\n onSpanStart(span, parentContext);\n }\n\n /** @inheritDoc */\n public onEnd(span: Span & ReadableSpan): void {\n onSpanEnd(span);\n\n this._exporter.export(span);\n }\n}\n","/* eslint-disable complexity */\nimport type { Context, Span, TraceState as TraceStateInterface } from '@opentelemetry/api';\nimport { isSpanContextValid, SpanKind, trace } from '@opentelemetry/api';\nimport { TraceState } from '@opentelemetry/core';\nimport type { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-base';\nimport { SamplingDecision } from '@opentelemetry/sdk-trace-base';\nimport {\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_URL,\n} from '@opentelemetry/semantic-conventions';\nimport type { Client, SpanAttributes } from '@sentry/core';\nimport {\n _INTERNAL_safeMathRandom,\n baggageHeaderToDynamicSamplingContext,\n debug,\n hasSpansEnabled,\n parseSampleRate,\n sampleSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,\n} from '@sentry/core';\nimport {\n SENTRY_TRACE_STATE_DSC,\n SENTRY_TRACE_STATE_SAMPLE_RAND,\n SENTRY_TRACE_STATE_SAMPLE_RATE,\n SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING,\n SENTRY_TRACE_STATE_URL,\n} from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { getScopesFromContext } from './utils/contextData';\nimport { getSamplingDecision } from './utils/getSamplingDecision';\nimport { inferSpanData } from './utils/parseSpanDescription';\nimport { setIsSetup } from './utils/setupCheck';\n\n/**\n * A custom OTEL sampler that uses Sentry sampling rates to make its decision\n */\nexport class SentrySampler implements Sampler {\n private _client: Client;\n\n public constructor(client: Client) {\n this._client = client;\n setIsSetup('SentrySampler');\n }\n\n /** @inheritDoc */\n public shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n spanAttributes: SpanAttributes,\n _links: unknown,\n ): SamplingResult {\n const options = this._client.getOptions();\n\n const parentSpan = getValidSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n if (!hasSpansEnabled(options)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n // `ATTR_HTTP_REQUEST_METHOD` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_METHOD`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const maybeSpanHttpMethod = spanAttributes[SEMATTRS_HTTP_METHOD] || spanAttributes[ATTR_HTTP_REQUEST_METHOD];\n\n // If we have a http.client span that has no local parent, we never want to sample it\n // but we want to leave downstream sampling decisions up to the server\n if (spanKind === SpanKind.CLIENT && maybeSpanHttpMethod && (!parentSpan || parentContext?.isRemote)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const parentSampled = parentSpan ? getParentSampled(parentSpan, traceId, spanName) : undefined;\n const isRootSpan = !parentSpan || parentContext?.isRemote;\n\n // We only sample based on parameters (like tracesSampleRate or tracesSampler) for root spans (which is done in sampleSpan).\n // Non-root-spans simply inherit the sampling decision from their parent.\n if (!isRootSpan) {\n return wrapSamplingDecision({\n decision: parentSampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n });\n }\n\n // We want to pass the inferred name & attributes to the sampler method\n const {\n description: inferredSpanName,\n data: inferredAttributes,\n op,\n } = inferSpanData(spanName, spanAttributes, spanKind);\n\n const mergedAttributes = {\n ...inferredAttributes,\n ...spanAttributes,\n };\n\n if (op) {\n mergedAttributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] = op;\n }\n\n const mutableSamplingDecision = { decision: true };\n this._client.emit(\n 'beforeSampling',\n {\n spanAttributes: mergedAttributes,\n spanName: inferredSpanName,\n parentSampled: parentSampled,\n parentContext: parentContext,\n },\n mutableSamplingDecision,\n );\n if (!mutableSamplingDecision.decision) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const { isolationScope } = getScopesFromContext(context) ?? {};\n\n const dscString = parentContext?.traceState ? parentContext.traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n const sampleRand = parseSampleRate(dsc?.sample_rand) ?? _INTERNAL_safeMathRandom();\n\n const [sampled, sampleRate, localSampleRateWasApplied] = sampleSpan(\n options,\n {\n name: inferredSpanName,\n attributes: mergedAttributes,\n normalizedRequest: isolationScope?.getScopeData().sdkProcessingMetadata.normalizedRequest,\n parentSampled,\n parentSampleRate: parseSampleRate(dsc?.sample_rate),\n },\n sampleRand,\n );\n\n const method = `${maybeSpanHttpMethod}`.toUpperCase();\n if (method === 'OPTIONS' || method === 'HEAD') {\n DEBUG_BUILD && debug.log(`[Tracing] Not sampling span because HTTP method is '${method}' for ${spanName}`);\n\n return wrapSamplingDecision({\n decision: SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: 0, // we don't want to sample anything in the downstream trace either\n });\n }\n\n if (\n !sampled &&\n // We check for `parentSampled === undefined` because we only want to record client reports for spans that are trace roots (ie. when there was incoming trace)\n parentSampled === undefined\n ) {\n DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n this._client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return {\n ...wrapSamplingDecision({\n decision: sampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: localSampleRateWasApplied ? sampleRate : undefined,\n }),\n attributes: {\n // We set the sample rate on the span when a local sample rate was applied to better understand how traces were sampled in Sentry\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: localSampleRateWasApplied ? sampleRate : undefined,\n },\n };\n }\n\n /** Returns the sampler name or short description with the configuration. */\n public toString(): string {\n return 'SentrySampler';\n }\n}\n\nfunction getParentSampled(parentSpan: Span, traceId: string, spanName: string): boolean | undefined {\n const parentContext = parentSpan.spanContext();\n\n // Only inherit sample rate if `traceId` is the same\n // Note for testing: `isSpanContextValid()` checks the format of the traceId/spanId, so we need to pass valid ones\n if (isSpanContextValid(parentContext) && parentContext.traceId === traceId) {\n if (parentContext.isRemote) {\n const parentSampled = getSamplingDecision(parentSpan.spanContext());\n DEBUG_BUILD &&\n debug.log(`[Tracing] Inheriting remote parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n const parentSampled = getSamplingDecision(parentContext);\n DEBUG_BUILD && debug.log(`[Tracing] Inheriting parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n return undefined;\n}\n\n/**\n * Wrap a sampling decision with data that Sentry needs to work properly with it.\n * If you pass `decision: undefined`, it will be treated as `NOT_RECORDING`, but in contrast to passing `NOT_RECORDING`\n * it will not propagate this decision to downstream Sentry SDKs.\n */\nexport function wrapSamplingDecision({\n decision,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate,\n}: {\n decision: SamplingDecision | undefined;\n context: Context;\n spanAttributes: SpanAttributes;\n sampleRand?: number;\n downstreamTraceSampleRate?: number;\n}): SamplingResult {\n let traceState = getBaseTraceState(context, spanAttributes);\n\n // We will override the propagated sample rate downstream when\n // - the tracesSampleRate is applied\n // - the tracesSampler is invoked\n // Since unsampled OTEL spans (NonRecordingSpans) cannot hold attributes we need to store this on the (trace)context.\n if (downstreamTraceSampleRate !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RATE, `${downstreamTraceSampleRate}`);\n }\n\n if (sampleRand !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RAND, `${sampleRand}`);\n }\n\n // If the decision is undefined, we treat it as NOT_RECORDING, but we don't propagate this decision to downstream SDKs\n // Which is done by not setting `SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING` traceState\n if (decision == undefined) {\n return { decision: SamplingDecision.NOT_RECORD, traceState };\n }\n\n if (decision === SamplingDecision.NOT_RECORD) {\n return { decision, traceState: traceState.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') };\n }\n\n return { decision, traceState };\n}\n\nfunction getBaseTraceState(context: Context, spanAttributes: SpanAttributes): TraceStateInterface {\n const parentSpan = trace.getSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n let traceState = parentContext?.traceState || new TraceState();\n\n // We always keep the URL on the trace state, so we can access it in the propagator\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const url = spanAttributes[SEMATTRS_HTTP_URL] || spanAttributes[ATTR_URL_FULL];\n if (url && typeof url === 'string') {\n traceState = traceState.set(SENTRY_TRACE_STATE_URL, url);\n }\n\n return traceState;\n}\n\n/**\n * If the active span is invalid, we want to ignore it as parent.\n * This aligns with how otel tracers and default samplers handle these cases.\n */\nfunction getValidSpan(context: Context): Span | undefined {\n const span = trace.getSpan(context);\n return span && isSpanContextValid(span.spanContext()) ? span : undefined;\n}\n","import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { wrapContextManagerClass } from '@sentry/opentelemetry';\n\n/**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\nexport const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n","import { diag, DiagLogLevel } from '@opentelemetry/api';\nimport { debug } from '@sentry/core';\n\n/**\n * Setup the OTEL logger to use our own debug logger.\n */\nexport function setupOpenTelemetryLogger(): void {\n // Disable diag, to ensure this works even if called multiple times\n diag.disable();\n diag.setLogger(\n {\n error: debug.error,\n warn: debug.warn,\n info: debug.log,\n debug: debug.log,\n verbose: debug.log,\n },\n DiagLogLevel.DEBUG,\n );\n}\n","import type { ChildProcess } from 'node:child_process';\nimport * as diagnosticsChannel from 'node:diagnostics_channel';\nimport type { Worker } from 'node:worker_threads';\nimport { addBreadcrumb, captureException, defineIntegration } from '@sentry/core';\n\ninterface Options {\n /**\n * Whether to include child process arguments in breadcrumbs data.\n *\n * @default false\n */\n includeChildProcessArgs?: boolean;\n\n /**\n * Whether to capture errors from worker threads.\n *\n * @default true\n */\n captureWorkerErrors?: boolean;\n}\n\nconst INTEGRATION_NAME = 'ChildProcess';\n\n/**\n * Capture breadcrumbs and events for child processes and worker threads.\n */\nexport const childProcessIntegration = defineIntegration((options: Options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setup() {\n diagnosticsChannel.channel('child_process').subscribe((event: unknown) => {\n if (event && typeof event === 'object' && 'process' in event) {\n captureChildProcessEvents(event.process as ChildProcess, options);\n }\n });\n\n diagnosticsChannel.channel('worker_threads').subscribe((event: unknown) => {\n if (event && typeof event === 'object' && 'worker' in event) {\n captureWorkerThreadEvents(event.worker as Worker, options);\n }\n });\n },\n };\n});\n\nfunction captureChildProcessEvents(child: ChildProcess, options: Options): void {\n let hasExited = false;\n let data: Record | undefined;\n\n child\n .on('spawn', () => {\n // This is Sentry getting macOS OS context\n if (child.spawnfile === '/usr/bin/sw_vers') {\n hasExited = true;\n return;\n }\n\n data = { spawnfile: child.spawnfile };\n if (options.includeChildProcessArgs) {\n data.spawnargs = child.spawnargs;\n }\n })\n .on('exit', code => {\n if (!hasExited) {\n hasExited = true;\n\n // Only log for non-zero exit codes\n if (code !== null && code !== 0) {\n addBreadcrumb({\n category: 'child_process',\n message: `Child process exited with code '${code}'`,\n level: code === 0 ? 'info' : 'warning',\n data,\n });\n }\n }\n })\n .on('error', error => {\n if (!hasExited) {\n hasExited = true;\n\n addBreadcrumb({\n category: 'child_process',\n message: `Child process errored with '${error.message}'`,\n level: 'error',\n data,\n });\n }\n });\n}\n\nfunction captureWorkerThreadEvents(worker: Worker, options: Options): void {\n let threadId: number | undefined;\n\n worker\n .on('online', () => {\n threadId = worker.threadId;\n })\n .on('error', error => {\n if (options.captureWorkerErrors !== false) {\n captureException(error, {\n mechanism: { type: 'auto.child_process.worker_thread', handled: false, data: { threadId: String(threadId) } },\n });\n } else {\n addBreadcrumb({\n category: 'worker_thread',\n message: `Worker thread errored with '${error.message}'`,\n level: 'error',\n data: { threadId },\n });\n }\n });\n}\n","/* eslint-disable max-lines */\n\nimport { execFile } from 'node:child_process';\nimport { readdir, readFile } from 'node:fs';\nimport * as os from 'node:os';\nimport { join } from 'node:path';\nimport { promisify } from 'node:util';\nimport type {\n AppContext,\n CloudResourceContext,\n Contexts,\n CultureContext,\n DeviceContext,\n Event,\n IntegrationFn,\n OsContext,\n} from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\n\nexport const readFileAsync = promisify(readFile);\nexport const readDirAsync = promisify(readdir);\n\n// Process enhanced with methods from Node 18, 20, 22 as @types/node\n// is on `14.18.0` to match minimum version requirements of the SDK\ninterface ProcessWithCurrentValues extends NodeJS.Process {\n availableMemory?(): number;\n}\n\nconst INTEGRATION_NAME = 'Context';\n\ninterface DeviceContextOptions {\n cpu?: boolean;\n memory?: boolean;\n}\n\ninterface ContextOptions {\n app?: boolean;\n os?: boolean;\n device?: DeviceContextOptions | boolean;\n culture?: boolean;\n cloudResource?: boolean;\n}\n\nconst _nodeContextIntegration = ((options: ContextOptions = {}) => {\n let cachedContext: Promise | undefined;\n\n const _options = {\n app: true,\n os: true,\n device: true,\n culture: true,\n cloudResource: true,\n ...options,\n };\n\n /** Add contexts to the event. Caches the context so we only look it up once. */\n async function addContext(event: Event): Promise {\n if (cachedContext === undefined) {\n cachedContext = _getContexts();\n }\n\n const updatedContext = _updateContext(await cachedContext);\n\n // TODO(v11): conditional with `sendDefaultPii` here?\n event.contexts = {\n ...event.contexts,\n app: { ...updatedContext.app, ...event.contexts?.app },\n os: { ...updatedContext.os, ...event.contexts?.os },\n device: { ...updatedContext.device, ...event.contexts?.device },\n culture: { ...updatedContext.culture, ...event.contexts?.culture },\n cloud_resource: { ...updatedContext.cloud_resource, ...event.contexts?.cloud_resource },\n };\n\n return event;\n }\n\n /** Get the contexts from node. */\n async function _getContexts(): Promise {\n const contexts: Contexts = {};\n\n if (_options.os) {\n contexts.os = await getOsContext();\n }\n\n if (_options.app) {\n contexts.app = getAppContext();\n }\n\n if (_options.device) {\n contexts.device = getDeviceContext(_options.device);\n }\n\n if (_options.culture) {\n const culture = getCultureContext();\n\n if (culture) {\n contexts.culture = culture;\n }\n }\n\n if (_options.cloudResource) {\n contexts.cloud_resource = getCloudResourceContext();\n }\n\n return contexts;\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addContext(event);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Capture context about the environment and the device that the client is running on, to events.\n */\nexport const nodeContextIntegration = defineIntegration(_nodeContextIntegration);\n\n/**\n * Updates the context with dynamic values that can change\n */\nfunction _updateContext(contexts: Contexts): Contexts {\n // Only update properties if they exist\n\n if (contexts.app?.app_memory) {\n contexts.app.app_memory = process.memoryUsage().rss;\n }\n\n if (contexts.app?.free_memory && typeof (process as ProcessWithCurrentValues).availableMemory === 'function') {\n const freeMemory = (process as ProcessWithCurrentValues).availableMemory?.();\n if (freeMemory != null) {\n contexts.app.free_memory = freeMemory;\n }\n }\n\n if (contexts.device?.free_memory) {\n contexts.device.free_memory = os.freemem();\n }\n\n return contexts;\n}\n\n/**\n * Returns the operating system context.\n *\n * Based on the current platform, this uses a different strategy to provide the\n * most accurate OS information. Since this might involve spawning subprocesses\n * or accessing the file system, this should only be executed lazily and cached.\n *\n * - On macOS (Darwin), this will execute the `sw_vers` utility. The context\n * has a `name`, `version`, `build` and `kernel_version` set.\n * - On Linux, this will try to load a distribution release from `/etc` and set\n * the `name`, `version` and `kernel_version` fields.\n * - On all other platforms, only a `name` and `version` will be returned. Note\n * that `version` might actually be the kernel version.\n */\nasync function getOsContext(): Promise {\n const platformId = os.platform();\n switch (platformId) {\n case 'darwin':\n return getDarwinInfo();\n case 'linux':\n return getLinuxInfo();\n default:\n return {\n name: PLATFORM_NAMES[platformId] || platformId,\n version: os.release(),\n };\n }\n}\n\nfunction getCultureContext(): CultureContext | undefined {\n try {\n if (typeof process.versions.icu !== 'string') {\n // Node was built without ICU support\n return;\n }\n\n // Check that node was built with full Intl support. Its possible it was built without support for non-English\n // locales which will make resolvedOptions inaccurate\n //\n // https://nodejs.org/api/intl.html#detecting-internationalization-support\n const january = new Date(9e8);\n const spanish = new Intl.DateTimeFormat('es', { month: 'long' });\n if (spanish.format(january) === 'enero') {\n const options = Intl.DateTimeFormat().resolvedOptions();\n\n return {\n locale: options.locale,\n timezone: options.timeZone,\n };\n }\n } catch {\n //\n }\n\n return;\n}\n\n/**\n * Get app context information from process\n */\nexport function getAppContext(): AppContext {\n const app_memory = process.memoryUsage().rss;\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n const app_start_time = new Date(Date.now() - process.uptime() * 1000).toISOString();\n // https://nodejs.org/api/process.html#processavailablememory\n const appContext: AppContext = { app_start_time, app_memory };\n\n if (typeof (process as ProcessWithCurrentValues).availableMemory === 'function') {\n const freeMemory = (process as ProcessWithCurrentValues).availableMemory?.();\n if (freeMemory != null) {\n appContext.free_memory = freeMemory;\n }\n }\n\n return appContext;\n}\n\n/**\n * Gets device information from os\n */\nexport function getDeviceContext(deviceOpt: DeviceContextOptions | true): DeviceContext {\n const device: DeviceContext = {};\n\n // Sometimes os.uptime() throws due to lacking permissions: https://github.com/getsentry/sentry-javascript/issues/8202\n let uptime;\n try {\n uptime = os.uptime();\n } catch {\n // noop\n }\n\n // os.uptime or its return value seem to be undefined in certain environments (e.g. Azure functions).\n // Hence, we only set boot time, if we get a valid uptime value.\n // @see https://github.com/getsentry/sentry-javascript/issues/5856\n if (typeof uptime === 'number') {\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n device.boot_time = new Date(Date.now() - uptime * 1000).toISOString();\n }\n\n device.arch = os.arch();\n\n if (deviceOpt === true || deviceOpt.memory) {\n device.memory_size = os.totalmem();\n device.free_memory = os.freemem();\n }\n\n if (deviceOpt === true || deviceOpt.cpu) {\n const cpuInfo = os.cpus() as os.CpuInfo[] | undefined;\n const firstCpu = cpuInfo?.[0];\n if (firstCpu) {\n device.processor_count = cpuInfo.length;\n device.cpu_description = firstCpu.model;\n device.processor_frequency = firstCpu.speed;\n }\n }\n\n return device;\n}\n\n/** Mapping of Node's platform names to actual OS names. */\nconst PLATFORM_NAMES: { [platform: string]: string } = {\n aix: 'IBM AIX',\n freebsd: 'FreeBSD',\n openbsd: 'OpenBSD',\n sunos: 'SunOS',\n win32: 'Windows',\n ohos: 'OpenHarmony',\n android: 'Android',\n};\n\n/** Linux version file to check for a distribution. */\ninterface DistroFile {\n /** The file name, located in `/etc`. */\n name: string;\n /** Potential distributions to check. */\n distros: [string, ...string[]];\n}\n\n/** Mapping of linux release files located in /etc to distributions. */\nconst LINUX_DISTROS: DistroFile[] = [\n { name: 'fedora-release', distros: ['Fedora'] },\n { name: 'redhat-release', distros: ['Red Hat Linux', 'Centos'] },\n { name: 'redhat_version', distros: ['Red Hat Linux'] },\n { name: 'SuSE-release', distros: ['SUSE Linux'] },\n { name: 'lsb-release', distros: ['Ubuntu Linux', 'Arch Linux'] },\n { name: 'debian_version', distros: ['Debian'] },\n { name: 'debian_release', distros: ['Debian'] },\n { name: 'arch-release', distros: ['Arch Linux'] },\n { name: 'gentoo-release', distros: ['Gentoo Linux'] },\n { name: 'novell-release', distros: ['SUSE Linux'] },\n { name: 'alpine-release', distros: ['Alpine Linux'] },\n];\n\n/** Functions to extract the OS version from Linux release files. */\nconst LINUX_VERSIONS: {\n [identifier: string]: (content: string) => string | undefined;\n} = {\n alpine: content => content,\n arch: content => matchFirst(/distrib_release=(.*)/, content),\n centos: content => matchFirst(/release ([^ ]+)/, content),\n debian: content => content,\n fedora: content => matchFirst(/release (..)/, content),\n mint: content => matchFirst(/distrib_release=(.*)/, content),\n red: content => matchFirst(/release ([^ ]+)/, content),\n suse: content => matchFirst(/VERSION = (.*)\\n/, content),\n ubuntu: content => matchFirst(/distrib_release=(.*)/, content),\n};\n\n/**\n * Executes a regular expression with one capture group.\n *\n * @param regex A regular expression to execute.\n * @param text Content to execute the RegEx on.\n * @returns The captured string if matched; otherwise undefined.\n */\nfunction matchFirst(regex: RegExp, text: string): string | undefined {\n const match = regex.exec(text);\n return match ? match[1] : undefined;\n}\n\n/** Loads the macOS operating system context. */\nasync function getDarwinInfo(): Promise {\n // Default values that will be used in case no operating system information\n // can be loaded. The default version is computed via heuristics from the\n // kernel version, but the build ID is missing.\n const darwinInfo: OsContext = {\n kernel_version: os.release(),\n name: 'Mac OS X',\n version: `10.${Number(os.release().split('.')[0]) - 4}`,\n };\n\n try {\n // We try to load the actual macOS version by executing the `sw_vers` tool.\n // This tool should be available on every standard macOS installation. In\n // case this fails, we stick with the values computed above.\n\n const output = await new Promise((resolve, reject) => {\n execFile('/usr/bin/sw_vers', (error: Error | null, stdout: string) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(stdout);\n });\n });\n\n darwinInfo.name = matchFirst(/^ProductName:\\s+(.*)$/m, output);\n darwinInfo.version = matchFirst(/^ProductVersion:\\s+(.*)$/m, output);\n darwinInfo.build = matchFirst(/^BuildVersion:\\s+(.*)$/m, output);\n } catch {\n // ignore\n }\n\n return darwinInfo;\n}\n\n/** Returns a distribution identifier to look up version callbacks. */\nfunction getLinuxDistroId(name: string): string {\n return (name.split(' ') as [string])[0].toLowerCase();\n}\n\n/** Loads the Linux operating system context. */\nasync function getLinuxInfo(): Promise {\n // By default, we cannot assume anything about the distribution or Linux\n // version. `os.release()` returns the kernel version and we assume a generic\n // \"Linux\" name, which will be replaced down below.\n const linuxInfo: OsContext = {\n kernel_version: os.release(),\n name: 'Linux',\n };\n\n try {\n // We start guessing the distribution by listing files in the /etc\n // directory. This is were most Linux distributions (except Knoppix) store\n // release files with certain distribution-dependent meta data. We search\n // for exactly one known file defined in `LINUX_DISTROS` and exit if none\n // are found. In case there are more than one file, we just stick with the\n // first one.\n const etcFiles = await readDirAsync('/etc');\n const distroFile = LINUX_DISTROS.find(file => etcFiles.includes(file.name));\n if (!distroFile) {\n return linuxInfo;\n }\n\n // Once that file is known, load its contents. To make searching in those\n // files easier, we lowercase the file contents. Since these files are\n // usually quite small, this should not allocate too much memory and we only\n // hold on to it for a very short amount of time.\n const distroPath = join('/etc', distroFile.name);\n const contents = (await readFileAsync(distroPath, { encoding: 'utf-8' })).toLowerCase();\n\n // Some Linux distributions store their release information in the same file\n // (e.g. RHEL and Centos). In those cases, we scan the file for an\n // identifier, that basically consists of the first word of the linux\n // distribution name (e.g. \"red\" for Red Hat). In case there is no match, we\n // just assume the first distribution in our list.\n const { distros } = distroFile;\n linuxInfo.name = distros.find(d => contents.indexOf(getLinuxDistroId(d)) >= 0) || distros[0];\n\n // Based on the found distribution, we can now compute the actual version\n // number. This is different for every distribution, so several strategies\n // are computed in `LINUX_VERSIONS`.\n const id = getLinuxDistroId(linuxInfo.name);\n linuxInfo.version = LINUX_VERSIONS[id]?.(contents);\n } catch {\n // ignore\n }\n\n return linuxInfo;\n}\n\n/**\n * Grabs some information about hosting provider based on best effort.\n */\nfunction getCloudResourceContext(): CloudResourceContext | undefined {\n if (process.env.VERCEL) {\n // https://vercel.com/docs/concepts/projects/environment-variables/system-environment-variables#system-environment-variables\n return {\n 'cloud.provider': 'vercel',\n 'cloud.region': process.env.VERCEL_REGION,\n };\n } else if (process.env.AWS_REGION) {\n // https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html\n return {\n 'cloud.provider': 'aws',\n 'cloud.region': process.env.AWS_REGION,\n 'cloud.platform': process.env.AWS_EXECUTION_ENV,\n };\n } else if (process.env.GCP_PROJECT) {\n // https://cloud.google.com/composer/docs/how-to/managing/environment-variables#reserved_variables\n return {\n 'cloud.provider': 'gcp',\n };\n } else if (process.env.ALIYUN_REGION_ID) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'alibaba_cloud',\n 'cloud.region': process.env.ALIYUN_REGION_ID,\n };\n } else if (process.env.WEBSITE_SITE_NAME && process.env.REGION_NAME) {\n // https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet#app-environment\n return {\n 'cloud.provider': 'azure',\n 'cloud.region': process.env.REGION_NAME,\n };\n } else if (process.env.IBM_CLOUD_REGION) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'ibm_cloud',\n 'cloud.region': process.env.IBM_CLOUD_REGION,\n };\n } else if (process.env.TENCENTCLOUD_REGION) {\n // https://www.tencentcloud.com/document/product/583/32748\n return {\n 'cloud.provider': 'tencent_cloud',\n 'cloud.region': process.env.TENCENTCLOUD_REGION,\n 'cloud.account.id': process.env.TENCENTCLOUD_APPID,\n 'cloud.availability_zone': process.env.TENCENTCLOUD_ZONE,\n };\n } else if (process.env.NETLIFY) {\n // https://docs.netlify.com/configure-builds/environment-variables/#read-only-variables\n return {\n 'cloud.provider': 'netlify',\n };\n } else if (process.env.FLY_REGION) {\n // https://fly.io/docs/reference/runtime-environment/\n return {\n 'cloud.provider': 'fly.io',\n 'cloud.region': process.env.FLY_REGION,\n };\n } else if (process.env.DYNO) {\n // https://devcenter.heroku.com/articles/dynos#local-environment-variables\n return {\n 'cloud.provider': 'heroku',\n };\n } else {\n return undefined;\n }\n}\n","import { createReadStream } from 'node:fs';\nimport { createInterface } from 'node:readline';\nimport type { Event, IntegrationFn, StackFrame } from '@sentry/core';\nimport { debug, defineIntegration, LRUMap, snipLine } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst LRU_FILE_CONTENTS_CACHE = new LRUMap>(10);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new LRUMap(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst INTEGRATION_NAME = 'ContextLines';\n// Determines the upper bound of lineno/colno that we will attempt to read. Large colno values are likely to be\n// minified code while large lineno values are likely to be bundled code.\n// Exported for testing purposes.\nexport const MAX_CONTEXTLINES_COLNO: number = 1000;\nexport const MAX_CONTEXTLINES_LINENO: number = 10000;\n\ninterface ContextLinesOptions {\n /**\n * Sets the number of context lines for each frame when loading a file.\n * Defaults to 7.\n *\n * Set to 0 to disable loading and inclusion of source files.\n **/\n frameContextLines?: number;\n}\n\n/**\n * Exported for testing purposes.\n */\nexport function resetFileContentCache(): void {\n LRU_FILE_CONTENTS_CACHE.clear();\n}\n\n/**\n * Get or init map value\n */\nfunction emplace, K extends string, V>(map: T, key: K, contents: V): V {\n const value = map.get(key);\n\n if (value === undefined) {\n map.set(key, contents);\n return contents;\n }\n\n return value;\n}\n\n/**\n * Determines if context lines should be skipped for a file.\n * - .min.(mjs|cjs|js) files are and not useful since they dont point to the original source\n * - node: prefixed modules are part of the runtime and cannot be resolved to a file\n * - data: skip json, wasm and inline js https://nodejs.org/api/esm.html#data-imports\n */\nfunction shouldSkipContextLinesForFile(path: string): boolean {\n // Test the most common prefix and extension first. These are the ones we\n // are most likely to see in user applications and are the ones we can break out of first.\n if (path.startsWith('node:')) return true;\n if (path.endsWith('.min.js')) return true;\n if (path.endsWith('.min.cjs')) return true;\n if (path.endsWith('.min.mjs')) return true;\n if (path.startsWith('data:')) return true;\n return false;\n}\n\n/**\n * Determines if we should skip contextlines based off the max lineno and colno values.\n */\nfunction shouldSkipContextLinesForFrame(frame: StackFrame): boolean {\n if (frame.lineno !== undefined && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (frame.colno !== undefined && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\n/**\n * Checks if we have all the contents that we need in the cache.\n */\nfunction rangeExistsInContentCache(file: string, range: ReadlineRange): boolean {\n const contents = LRU_FILE_CONTENTS_CACHE.get(file);\n if (contents === undefined) return false;\n\n for (let i = range[0]; i <= range[1]; i++) {\n if (contents[i] === undefined) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates contiguous ranges of lines to read from a file. In the case where context lines overlap,\n * the ranges are merged to create a single range.\n */\nfunction makeLineReaderRanges(lines: number[], linecontext: number): ReadlineRange[] {\n if (!lines.length) {\n return [];\n }\n\n let i = 0;\n const line = lines[0];\n\n if (typeof line !== 'number') {\n return [];\n }\n\n let current = makeContextRange(line, linecontext);\n const out: ReadlineRange[] = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n\n // If the next line falls into the current range, extend the current range to lineno + linecontext.\n const next = lines[i + 1];\n if (typeof next !== 'number') {\n break;\n }\n if (next <= current[1]) {\n current[1] = next + linecontext;\n } else {\n out.push(current);\n current = makeContextRange(next, linecontext);\n }\n\n i++;\n }\n\n return out;\n}\n\n/**\n * Extracts lines from a file and stores them in a cache.\n */\nfunction getContextLinesFromFile(path: string, ranges: ReadlineRange[], output: Record): Promise {\n return new Promise((resolve, _reject) => {\n // It is important *not* to have any async code between createInterface and the 'line' event listener\n // as it will cause the 'line' event to\n // be emitted before the listener is attached.\n const stream = createReadStream(path);\n const lineReaded = createInterface({\n input: stream,\n });\n\n // We need to explicitly destroy the stream to prevent memory leaks,\n // removing the listeners on the readline interface is not enough.\n // See: https://github.com/nodejs/node/issues/9002 and https://github.com/getsentry/sentry-javascript/issues/14892\n function destroyStreamAndResolve(): void {\n stream.destroy();\n resolve();\n }\n\n // Init at zero and increment at the start of the loop because lines are 1 indexed.\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // We should never reach this point, but if we do, we should resolve the promise to prevent it from hanging.\n destroyStreamAndResolve();\n return;\n }\n let rangeStart = range[0];\n let rangeEnd = range[1];\n\n // We use this inside Promise.all, so we need to resolve the promise even if there is an error\n // to prevent Promise.all from short circuiting the rest.\n function onStreamError(e: Error): void {\n // Mark file path as failed to read and prevent multiple read attempts.\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);\n DEBUG_BUILD && debug.error(`Failed to read file: ${path}. Error: ${e}`);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve();\n }\n\n // We need to handle the error event to prevent the process from crashing in < Node 16\n // https://github.com/nodejs/node/pull/31603\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', destroyStreamAndResolve);\n\n lineReaded.on('line', line => {\n lineNumber++;\n if (lineNumber < rangeStart) return;\n\n // !Warning: This mutates the cache by storing the snipped line into the cache.\n output[lineNumber] = snipLine(line, 0);\n\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n // We need to close the file stream and remove listeners, else the reader will continue to run our listener;\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // This should never happen as it means we have a bug in the context.\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\n\n/**\n * Adds surrounding (context) lines of the line that an exception occurred on to the event.\n * This is done by reading the file line by line and extracting the lines. The extracted lines are stored in\n * a cache to prevent multiple reads of the same file. Failures to read a file are similarly cached to prevent multiple\n * failing reads from happening.\n */\n/* eslint-disable complexity */\nasync function addSourceContext(event: Event, contextLines: number): Promise {\n // keep a lookup map of which files we've already enqueued to read,\n // so we don't enqueue the same file multiple times which would cause multiple i/o reads\n const filesToLines: Record = {};\n\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (!exception.stacktrace?.frames?.length) {\n continue;\n }\n\n // Maps preserve insertion order, so we iterate in reverse, starting at the\n // outermost frame and closer to where the exception has occurred (poor mans priority)\n for (let i = exception.stacktrace.frames.length - 1; i >= 0; i--) {\n const frame: StackFrame | undefined = exception.stacktrace.frames[i];\n const filename = frame?.filename;\n\n if (\n !frame ||\n typeof filename !== 'string' ||\n typeof frame.lineno !== 'number' ||\n shouldSkipContextLinesForFile(filename) ||\n shouldSkipContextLinesForFrame(frame)\n ) {\n continue;\n }\n\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n // @ts-expect-error this is defined above\n filesToLines[filename].push(frame.lineno);\n }\n }\n }\n\n const files = Object.keys(filesToLines);\n if (files.length == 0) {\n return event;\n }\n\n const readlinePromises: Promise[] = [];\n for (const file of files) {\n // If we failed to read this before, dont try reading it again.\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) {\n continue;\n }\n\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) {\n continue;\n }\n\n // Sort ranges so that they are sorted by line increasing order and match how the file is read.\n filesToLineRanges.sort((a, b) => a - b);\n // Check if the contents are already in the cache and if we can avoid reading the file again.\n const ranges = makeLineReaderRanges(filesToLineRanges, contextLines);\n if (ranges.every(r => rangeExistsInContentCache(file, r))) {\n continue;\n }\n\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache));\n }\n\n // The promise rejections are caught in order to prevent them from short circuiting Promise.all\n await Promise.all(readlinePromises).catch(() => {\n DEBUG_BUILD && debug.log('Failed to read one or more source files and resolve context lines');\n });\n\n // Perform the same loop as above, but this time we can assume all files are in the cache\n // and attempt to add source context to frames.\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (exception.stacktrace?.frames && exception.stacktrace.frames.length > 0) {\n addSourceContextToFrames(exception.stacktrace.frames, contextLines, LRU_FILE_CONTENTS_CACHE);\n }\n }\n }\n\n return event;\n}\n/* eslint-enable complexity */\n\n/** Adds context lines to frames */\nfunction addSourceContextToFrames(\n frames: StackFrame[],\n contextLines: number,\n cache: LRUMap>,\n): void {\n for (const frame of frames) {\n // Only add context if we have a filename and it hasn't already been added\n if (frame.filename && frame.context_line === undefined && typeof frame.lineno === 'number') {\n const contents = cache.get(frame.filename);\n if (contents === undefined) {\n continue;\n }\n\n addContextToFrame(frame.lineno, frame, contextLines, contents);\n }\n }\n}\n\n/**\n * Clears the context lines from a frame, used to reset a frame to its original state\n * if we fail to resolve all context lines for it.\n */\nfunction clearLineContext(frame: StackFrame): void {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\n\n/**\n * Resolves context lines before and after the given line number and appends them to the frame;\n */\nexport function addContextToFrame(\n lineno: number,\n frame: StackFrame,\n contextLines: number,\n contents: Record | undefined,\n): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping.\n // We already check for lineno before calling this, but since StackFrame lineno ism optional, we check it again.\n if (frame.lineno === undefined || contents === undefined) {\n DEBUG_BUILD && debug.error('Cannot resolve context for frame with no lineno or file contents');\n return;\n }\n\n frame.pre_context = [];\n for (let i = makeRangeStart(lineno, contextLines); i < lineno; i++) {\n // We always expect the start context as line numbers cannot be negative. If we dont find a line, then\n // something went wrong somewhere. Clear the context and return without adding any linecontext.\n const line = contents[i];\n if (line === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${i} in file ${frame.filename}`);\n return;\n }\n\n frame.pre_context.push(line);\n }\n\n // We should always have the context line. If we dont, something went wrong, so we clear the context and return\n // without adding any linecontext.\n if (contents[lineno] === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${lineno} in file ${frame.filename}`);\n return;\n }\n\n frame.context_line = contents[lineno];\n\n const end = makeRangeEnd(lineno, contextLines);\n frame.post_context = [];\n for (let i = lineno + 1; i <= end; i++) {\n // Since we dont track when the file ends, we cant clear the context if we dont find a line as it could\n // just be that we reached the end of the file.\n const line = contents[i];\n if (line === undefined) {\n break;\n }\n frame.post_context.push(line);\n }\n}\n\n// Helper functions for generating line context ranges. They take a line number and the number of lines of context to\n// include before and after the line and generate an inclusive range of indices.\ntype ReadlineRange = [start: number, end: number];\n// Compute inclusive end context range\nfunction makeRangeStart(line: number, linecontext: number): number {\n return Math.max(1, line - linecontext);\n}\n// Compute inclusive start context range\nfunction makeRangeEnd(line: number, linecontext: number): number {\n return line + linecontext;\n}\n// Determine start and end indices for context range (inclusive);\nfunction makeContextRange(line: number, linecontext: number): [start: number, end: number] {\n return [makeRangeStart(line, linecontext), makeRangeEnd(line, linecontext)];\n}\n\n/** Exported only for tests, as a type-safe variant. */\nexport const _contextLinesIntegration = ((options: ContextLinesOptions = {}) => {\n const contextLines = options.frameContextLines !== undefined ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addSourceContext(event, contextLines);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Capture the lines before and after the frame's context.\n */\nexport const contextLinesIntegration = defineIntegration(_contextLinesIntegration);\n","let cachedDebuggerEnabled: boolean | undefined;\n\n/**\n * Was the debugger enabled when this function was first called?\n */\nexport async function isDebuggerEnabled(): Promise {\n if (cachedDebuggerEnabled === undefined) {\n try {\n // Node can be built without inspector support\n const inspector = await import('node:inspector');\n cachedDebuggerEnabled = !!inspector.url();\n } catch {\n cachedDebuggerEnabled = false;\n }\n }\n\n return cachedDebuggerEnabled;\n}\n","import type { Debugger } from 'node:inspector';\n\nexport type Variables = Record;\n\nexport type RateLimitIncrement = () => void;\n\n/**\n * The key used to store the local variables on the error object.\n */\nexport const LOCAL_VARIABLES_KEY = '__SENTRY_ERROR_LOCAL_VARIABLES__';\n\n/**\n * Creates a rate limiter that will call the disable callback when the rate limit is reached and the enable callback\n * when a timeout has occurred.\n * @param maxPerSecond Maximum number of calls per second\n * @param enable Callback to enable capture\n * @param disable Callback to disable capture\n * @returns A function to call to increment the rate limiter count\n */\nexport function createRateLimiter(\n maxPerSecond: number,\n enable: () => void,\n disable: (seconds: number) => void,\n): RateLimitIncrement {\n let count = 0;\n let retrySeconds = 5;\n let disabledTimeout = 0;\n\n setInterval(() => {\n if (disabledTimeout === 0) {\n if (count > maxPerSecond) {\n retrySeconds *= 2;\n disable(retrySeconds);\n\n // Cap at one day\n if (retrySeconds > 86400) {\n retrySeconds = 86400;\n }\n disabledTimeout = retrySeconds;\n }\n } else {\n disabledTimeout -= 1;\n\n if (disabledTimeout === 0) {\n enable();\n }\n }\n\n count = 0;\n }, 1_000).unref();\n\n return () => {\n count += 1;\n };\n}\n\n// Add types for the exception event data\nexport type PausedExceptionEvent = Debugger.PausedEventDataType & {\n data: {\n // This contains error.stack\n description: string;\n objectId?: string;\n };\n};\n\n/** Could this be an anonymous function? */\nexport function isAnonymous(name: string | undefined): boolean {\n return name !== undefined && (name.length === 0 || name === '?' || name === '');\n}\n\n/** Do the function names appear to match? */\nexport function functionNamesMatch(a: string | undefined, b: string | undefined): boolean {\n return a === b || `Object.${a}` === b || a === `Object.${b}` || (isAnonymous(a) && isAnonymous(b));\n}\n\nexport interface FrameVariables {\n function: string;\n vars?: Variables;\n}\n\nexport interface LocalVariablesIntegrationOptions {\n /**\n * Capture local variables for both caught and uncaught exceptions\n *\n * - When false, only uncaught exceptions will have local variables\n * - When true, both caught and uncaught exceptions will have local variables.\n *\n * Defaults to `true`.\n *\n * Capturing local variables for all exceptions can be expensive since the debugger pauses for every throw to collect\n * local variables.\n *\n * To reduce the likelihood of this feature impacting app performance or throughput, this feature is rate-limited.\n * Once the rate limit is reached, local variables will only be captured for uncaught exceptions until a timeout has\n * been reached.\n */\n captureAllExceptions?: boolean;\n /**\n * Maximum number of exceptions to capture local variables for per second before rate limiting is triggered.\n */\n maxExceptionsPerSecond?: number;\n /**\n * When true, local variables will be captured for all frames, including those that are not in_app.\n *\n * Defaults to `false`.\n */\n includeOutOfAppFrames?: boolean;\n}\n\nexport interface LocalVariablesWorkerArgs extends LocalVariablesIntegrationOptions {\n /**\n * Whether to enable debug logging.\n */\n debug: boolean;\n /**\n * Base path used to calculate module name.\n *\n * Defaults to `dirname(process.argv[1])` and falls back to `process.cwd()`\n */\n basePath?: string;\n}\n","import { Worker } from 'node:worker_threads';\nimport type { Event, EventHint, Exception, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration } from '@sentry/core';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type { FrameVariables, LocalVariablesIntegrationOptions, LocalVariablesWorkerArgs } from './common';\nimport { functionNamesMatch, LOCAL_VARIABLES_KEY } from './common';\n\n// This string is a placeholder that gets overwritten with the worker code.\nexport const base64WorkerScript = '###LocalVariablesWorkerScript###';\n\nfunction log(...args: unknown[]): void {\n debug.log('[LocalVariables]', ...args);\n}\n\n/**\n * Adds local variables to exception frames\n */\nexport const localVariablesAsyncIntegration = defineIntegration(((\n integrationOptions: LocalVariablesIntegrationOptions = {},\n) => {\n function addLocalVariablesToException(exception: Exception, localVariables: FrameVariables[]): void {\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const frameLocalVariables = localVariables[i];\n const frame = frames[frameIndex];\n\n if (!frame || !frameLocalVariables) {\n // Drop out if we run out of frames to match up\n break;\n }\n\n if (\n // We need to have vars to add\n frameLocalVariables.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frame.in_app === false && integrationOptions.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frame.function, frameLocalVariables.function)\n ) {\n continue;\n }\n\n frame.vars = frameLocalVariables.vars;\n }\n }\n\n function addLocalVariablesToEvent(event: Event, hint: EventHint): Event {\n if (\n hint.originalException &&\n typeof hint.originalException === 'object' &&\n LOCAL_VARIABLES_KEY in hint.originalException &&\n Array.isArray(hint.originalException[LOCAL_VARIABLES_KEY])\n ) {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception, hint.originalException[LOCAL_VARIABLES_KEY]);\n }\n\n hint.originalException[LOCAL_VARIABLES_KEY] = undefined;\n }\n\n return event;\n }\n\n async function startInspector(): Promise {\n // We load inspector dynamically because on some platforms Node is built without inspector support\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n function startWorker(options: LocalVariablesWorkerArgs): void {\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n worker.once('error', (err: Error) => {\n log('Worker error', err);\n });\n\n worker.once('exit', (code: number) => {\n log('Worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n }\n\n return {\n name: 'LocalVariablesAsync',\n async setup(client: NodeClient) {\n const clientOptions = client.getOptions();\n\n if (!clientOptions.includeLocalVariables) {\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n const options: LocalVariablesWorkerArgs = {\n ...integrationOptions,\n debug: debug.isEnabled(),\n };\n\n startInspector().then(\n () => {\n try {\n startWorker(options);\n } catch (e) {\n debug.error('Failed to start worker', e);\n }\n },\n e => {\n debug.error('Failed to start inspector', e);\n },\n );\n },\n processEvent(event: Event, hint: EventHint): Event {\n return addLocalVariablesToEvent(event, hint);\n },\n };\n}) satisfies IntegrationFn);\n","import type { Debugger, InspectorNotification, Runtime, Session } from 'node:inspector';\nimport type { Event, Exception, IntegrationFn, StackFrame, StackParser } from '@sentry/core';\nimport { debug, defineIntegration, getClient, LRUMap } from '@sentry/core';\nimport { NODE_MAJOR } from '../../nodeVersion';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type {\n FrameVariables,\n LocalVariablesIntegrationOptions,\n PausedExceptionEvent,\n RateLimitIncrement,\n Variables,\n} from './common';\nimport { createRateLimiter, functionNamesMatch } from './common';\n\n/** Creates a unique hash from stack frames */\nexport function hashFrames(frames: StackFrame[] | undefined): string | undefined {\n if (frames === undefined) {\n return;\n }\n\n // Only hash the 10 most recent frames (ie. the last 10)\n return frames.slice(-10).reduce((acc, frame) => `${acc},${frame.function},${frame.lineno},${frame.colno}`, '');\n}\n\n/**\n * We use the stack parser to create a unique hash from the exception stack trace\n * This is used to lookup vars when the exception passes through the event processor\n */\nexport function hashFromStack(stackParser: StackParser, stack: string | undefined): string | undefined {\n if (stack === undefined) {\n return undefined;\n }\n\n return hashFrames(stackParser(stack, 1));\n}\n\ntype OnPauseEvent = InspectorNotification;\nexport interface DebugSession {\n /** Configures and connects to the debug session */\n configureAndConnect(onPause: (message: OnPauseEvent, complete: () => void) => void, captureAll: boolean): void;\n /** Updates which kind of exceptions to capture */\n setPauseOnExceptions(captureAll: boolean): void;\n /** Gets local variables for an objectId */\n getLocalVariables(objectId: string, callback: (vars: Variables) => void): void;\n}\n\ntype Next = (result: T) => void;\ntype Add = (fn: Next) => void;\ntype CallbackWrapper = { add: Add; next: Next };\n\n/** Creates a container for callbacks to be called sequentially */\nexport function createCallbackList(complete: Next): CallbackWrapper {\n // A collection of callbacks to be executed last to first\n let callbacks: Next[] = [];\n\n let completedCalled = false;\n function checkedComplete(result: T): void {\n callbacks = [];\n if (completedCalled) {\n return;\n }\n completedCalled = true;\n complete(result);\n }\n\n // complete should be called last\n callbacks.push(checkedComplete);\n\n function add(fn: Next): void {\n callbacks.push(fn);\n }\n\n function next(result: T): void {\n const popped = callbacks.pop() || checkedComplete;\n\n try {\n popped(result);\n } catch {\n // If there is an error, we still want to call the complete callback\n checkedComplete(result);\n }\n }\n\n return { add, next };\n}\n\n/**\n * Promise API is available as `Experimental` and in Node 19 only.\n *\n * Callback-based API is `Stable` since v14 and `Experimental` since v8.\n * Because of that, we are creating our own `AsyncSession` class.\n *\n * https://nodejs.org/docs/latest-v19.x/api/inspector.html#promises-api\n * https://nodejs.org/docs/latest-v14.x/api/inspector.html\n */\nclass AsyncSession implements DebugSession {\n /** Throws if inspector API is not available */\n private constructor(private readonly _session: Session) {\n //\n }\n\n public static async create(orDefault?: DebugSession | undefined): Promise {\n if (orDefault) {\n return orDefault;\n }\n\n const inspector = await import('node:inspector');\n return new AsyncSession(new inspector.Session());\n }\n\n /** @inheritdoc */\n public configureAndConnect(onPause: (event: OnPauseEvent, complete: () => void) => void, captureAll: boolean): void {\n this._session.connect();\n\n this._session.on('Debugger.paused', event => {\n onPause(event, () => {\n // After the pause work is complete, resume execution or the exception context memory is leaked\n this._session.post('Debugger.resume');\n });\n });\n\n this._session.post('Debugger.enable');\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n public setPauseOnExceptions(captureAll: boolean): void {\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n /** @inheritdoc */\n public getLocalVariables(objectId: string, complete: (vars: Variables) => void): void {\n this._getProperties(objectId, props => {\n const { add, next } = createCallbackList(complete);\n\n for (const prop of props) {\n if (prop.value?.objectId && prop.value.className === 'Array') {\n const id = prop.value.objectId;\n add(vars => this._unrollArray(id, prop.name, vars, next));\n } else if (prop.value?.objectId && prop.value.className === 'Object') {\n const id = prop.value.objectId;\n add(vars => this._unrollObject(id, prop.name, vars, next));\n } else if (prop.value) {\n add(vars => this._unrollOther(prop, vars, next));\n }\n }\n\n next({});\n });\n }\n\n /**\n * Gets all the PropertyDescriptors of an object\n */\n private _getProperties(objectId: string, next: (result: Runtime.PropertyDescriptor[]) => void): void {\n this._session.post(\n 'Runtime.getProperties',\n {\n objectId,\n ownProperties: true,\n },\n (err, params) => {\n if (err) {\n next([]);\n } else {\n next(params.result);\n }\n },\n );\n }\n\n /**\n * Unrolls an array property\n */\n private _unrollArray(objectId: string, name: string, vars: Variables, next: (vars: Variables) => void): void {\n this._getProperties(objectId, props => {\n vars[name] = props\n .filter(v => v.name !== 'length' && !isNaN(parseInt(v.name, 10)))\n .sort((a, b) => parseInt(a.name, 10) - parseInt(b.name, 10))\n .map(v => v.value?.value);\n\n next(vars);\n });\n }\n\n /**\n * Unrolls an object property\n */\n private _unrollObject(objectId: string, name: string, vars: Variables, next: (obj: Variables) => void): void {\n this._getProperties(objectId, props => {\n vars[name] = props\n .map<[string, unknown]>(v => [v.name, v.value?.value])\n .reduce((obj, [key, val]) => {\n obj[key] = val;\n return obj;\n }, {} as Variables);\n\n next(vars);\n });\n }\n\n /**\n * Unrolls other properties\n */\n private _unrollOther(prop: Runtime.PropertyDescriptor, vars: Variables, next: (vars: Variables) => void): void {\n if (prop.value) {\n if ('value' in prop.value) {\n if (prop.value.value === undefined || prop.value.value === null) {\n vars[prop.name] = `<${prop.value.value}>`;\n } else {\n vars[prop.name] = prop.value.value;\n }\n } else if ('description' in prop.value && prop.value.type !== 'function') {\n vars[prop.name] = `<${prop.value.description}>`;\n } else if (prop.value.type === 'undefined') {\n vars[prop.name] = '';\n }\n }\n\n next(vars);\n }\n}\n\nconst INTEGRATION_NAME = 'LocalVariables';\n\n/**\n * Adds local variables to exception frames\n */\nconst _localVariablesSyncIntegration = ((\n options: LocalVariablesIntegrationOptions = {},\n sessionOverride?: DebugSession,\n) => {\n const cachedFrames: LRUMap = new LRUMap(20);\n let rateLimiter: RateLimitIncrement | undefined;\n let shouldProcessEvent = false;\n\n function addLocalVariablesToException(exception: Exception): void {\n const hash = hashFrames(exception.stacktrace?.frames);\n\n if (hash === undefined) {\n return;\n }\n\n // Check if we have local variables for an exception that matches the hash\n // remove is identical to get but also removes the entry from the cache\n const cachedFrame = cachedFrames.remove(hash);\n\n if (cachedFrame === undefined) {\n return;\n }\n\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const cachedFrameVariable = cachedFrame[i];\n const frameVariable = frames[frameIndex];\n\n // Drop out if we run out of frames to match up\n if (!frameVariable || !cachedFrameVariable) {\n break;\n }\n\n if (\n // We need to have vars to add\n cachedFrameVariable.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frameVariable.in_app === false && options.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frameVariable.function, cachedFrameVariable.function)\n ) {\n continue;\n }\n\n frameVariable.vars = cachedFrameVariable.vars;\n }\n }\n\n function addLocalVariablesToEvent(event: Event): Event {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception);\n }\n\n return event;\n }\n\n let setupPromise: Promise | undefined;\n\n async function setup(): Promise {\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n if (!clientOptions?.includeLocalVariables) {\n return;\n }\n\n // Only setup this integration if the Node version is >= v18\n // https://github.com/getsentry/sentry-javascript/issues/7697\n const unsupportedNodeVersion = NODE_MAJOR < 18;\n\n if (unsupportedNodeVersion) {\n debug.log('The `LocalVariables` integration is only supported on Node >= v18.');\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n try {\n const session = await AsyncSession.create(sessionOverride);\n\n const handlePaused = (\n stackParser: StackParser,\n { params: { reason, data, callFrames } }: InspectorNotification,\n complete: () => void,\n ): void => {\n if (reason !== 'exception' && reason !== 'promiseRejection') {\n complete();\n return;\n }\n\n rateLimiter?.();\n\n // data.description contains the original error.stack\n const exceptionHash = hashFromStack(stackParser, data.description);\n\n if (exceptionHash == undefined) {\n complete();\n return;\n }\n\n const { add, next } = createCallbackList(frames => {\n cachedFrames.set(exceptionHash, frames);\n complete();\n });\n\n // Because we're queuing up and making all these calls synchronously, we can potentially overflow the stack\n // For this reason we only attempt to get local variables for the first 5 frames\n for (let i = 0; i < Math.min(callFrames.length, 5); i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { scopeChain, functionName, this: obj } = callFrames[i]!;\n\n const localScope = scopeChain.find(scope => scope.type === 'local');\n\n // obj.className is undefined in ESM modules\n const fn = obj.className === 'global' || !obj.className ? functionName : `${obj.className}.${functionName}`;\n\n if (localScope?.object.objectId === undefined) {\n add(frames => {\n frames[i] = { function: fn };\n next(frames);\n });\n } else {\n const id = localScope.object.objectId;\n add(frames =>\n session.getLocalVariables(id, vars => {\n frames[i] = { function: fn, vars };\n next(frames);\n }),\n );\n }\n }\n\n next([]);\n };\n\n const captureAll = options.captureAllExceptions !== false;\n\n session.configureAndConnect(\n (ev, complete) =>\n handlePaused(clientOptions.stackParser, ev as InspectorNotification, complete),\n captureAll,\n );\n\n if (captureAll) {\n const max = options.maxExceptionsPerSecond || 50;\n\n rateLimiter = createRateLimiter(\n max,\n () => {\n debug.log('Local variables rate-limit lifted.');\n session.setPauseOnExceptions(true);\n },\n seconds => {\n debug.log(\n `Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${seconds} seconds.`,\n );\n session.setPauseOnExceptions(false);\n },\n );\n }\n\n shouldProcessEvent = true;\n } catch (error) {\n debug.log('The `LocalVariables` integration failed to start.', error);\n }\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n setupPromise = setup();\n },\n async processEvent(event: Event): Promise {\n await setupPromise;\n\n if (shouldProcessEvent) {\n return addLocalVariablesToEvent(event);\n }\n\n return event;\n },\n // These are entirely for testing\n _getCachedFramesCount(): number {\n return cachedFrames.size;\n },\n _getFirstCachedFrame(): FrameVariables[] | undefined {\n return cachedFrames.values()[0];\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds local variables to exception frames.\n */\nexport const localVariablesSyncIntegration = defineIntegration(_localVariablesSyncIntegration);\n","import type { Integration } from '@sentry/core';\nimport { NODE_VERSION } from '../../nodeVersion';\nimport type { LocalVariablesIntegrationOptions } from './common';\nimport { localVariablesAsyncIntegration } from './local-variables-async';\nimport { localVariablesSyncIntegration } from './local-variables-sync';\n\nexport const localVariablesIntegration = (options: LocalVariablesIntegrationOptions = {}): Integration => {\n return NODE_VERSION.major < 19 ? localVariablesSyncIntegration(options) : localVariablesAsyncIntegration(options);\n};\n","import { consoleSandbox } from '@sentry/core';\nimport { NODE_MAJOR, NODE_MINOR } from '../nodeVersion';\n\n/** Detect CommonJS. */\nexport function isCjs(): boolean {\n try {\n // oxlint-disable-next-line typescript/prefer-optional-chain\n return typeof module !== 'undefined' && typeof module.exports !== 'undefined';\n } catch {\n return false;\n }\n}\n\nlet hasWarnedAboutNodeVersion: boolean | undefined;\n\n/**\n * Check if the current Node.js version supports module.register\n */\nexport function supportsEsmLoaderHooks(): boolean {\n if (isCjs()) {\n return false;\n }\n\n if (NODE_MAJOR >= 21 || (NODE_MAJOR === 20 && NODE_MINOR >= 6) || (NODE_MAJOR === 18 && NODE_MINOR >= 19)) {\n return true;\n }\n\n if (!hasWarnedAboutNodeVersion) {\n hasWarnedAboutNodeVersion = true;\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] You are using Node.js v${process.versions.node} in ESM mode (\"import syntax\"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS (\"require() syntax\"), or upgrade your Node.js version.`,\n );\n });\n }\n\n return false;\n}\n","import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport type { IntegrationFn } from '@sentry/core';\nimport { isCjs } from '../utils/detection';\n\ntype ModuleInfo = Record;\n\nlet moduleCache: ModuleInfo | undefined;\n\nconst INTEGRATION_NAME = 'Modules';\n\ndeclare const __SENTRY_SERVER_MODULES__: Record;\n\n/**\n * `__SENTRY_SERVER_MODULES__` can be replaced at build time with the modules loaded by the server.\n * Right now, we leverage this in Next.js to circumvent the problem that we do not get access to these things at runtime.\n */\nconst SERVER_MODULES = typeof __SENTRY_SERVER_MODULES__ === 'undefined' ? {} : __SENTRY_SERVER_MODULES__;\n\nconst _modulesIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n event.modules = {\n ...event.modules,\n ..._getModules(),\n };\n\n return event;\n },\n getModules: _getModules,\n };\n}) satisfies IntegrationFn;\n\n/**\n * Add node modules / packages to the event.\n * For this, multiple sources are used:\n * - They can be injected at build time into the __SENTRY_SERVER_MODULES__ variable (e.g. in Next.js)\n * - They are extracted from the dependencies & devDependencies in the package.json file\n * - They are extracted from the require.cache (CJS only)\n */\nexport const modulesIntegration = _modulesIntegration;\n\nfunction getRequireCachePaths(): string[] {\n try {\n return require.cache ? Object.keys(require.cache as Record) : [];\n } catch {\n return [];\n }\n}\n\n/** Extract information about package.json modules */\nfunction collectModules(): ModuleInfo {\n return {\n ...SERVER_MODULES,\n ...getModulesFromPackageJson(),\n ...(isCjs() ? collectRequireModules() : {}),\n };\n}\n\n/** Extract information about package.json modules from require.cache */\nfunction collectRequireModules(): ModuleInfo {\n const mainPaths = require.main?.paths || [];\n const paths = getRequireCachePaths();\n\n // We start with the modules from package.json (if possible)\n // These may be overwritten by more specific versions from the require.cache\n const infos: ModuleInfo = {};\n const seen = new Set();\n\n paths.forEach(path => {\n let dir = path;\n\n /** Traverse directories upward in the search of package.json file */\n const updir = (): void | (() => void) => {\n const orig = dir;\n dir = dirname(orig);\n\n if (!dir || orig === dir || seen.has(orig)) {\n return undefined;\n }\n if (mainPaths.indexOf(dir) < 0) {\n return updir();\n }\n\n const pkgfile = join(orig, 'package.json');\n seen.add(orig);\n\n if (!existsSync(pkgfile)) {\n return updir();\n }\n\n try {\n const info = JSON.parse(readFileSync(pkgfile, 'utf8')) as {\n name: string;\n version: string;\n };\n infos[info.name] = info.version;\n } catch {\n // no-empty\n }\n };\n\n updir();\n });\n\n return infos;\n}\n\n/** Fetches the list of modules and the versions loaded by the entry file for your node.js app. */\nfunction _getModules(): ModuleInfo {\n if (!moduleCache) {\n moduleCache = collectModules();\n }\n return moduleCache;\n}\n\ninterface PackageJson {\n dependencies?: Record;\n devDependencies?: Record;\n}\n\nfunction getPackageJson(): PackageJson {\n try {\n const filePath = join(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(filePath, 'utf8')) as PackageJson;\n\n return packageJson;\n } catch {\n return {};\n }\n}\n\nfunction getModulesFromPackageJson(): ModuleInfo {\n const packageJson = getPackageJson();\n\n return {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n}\n","import { consoleSandbox, debug, getClient } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClient } from '../sdk/client';\n\nconst DEFAULT_SHUTDOWN_TIMEOUT = 2000;\n\n/**\n * @hidden\n */\nexport function logAndExitProcess(error: unknown): void {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(error);\n });\n\n const client = getClient();\n\n if (client === undefined) {\n DEBUG_BUILD && debug.warn('No NodeClient was defined, we are exiting the process now.');\n global.process.exit(1);\n return;\n }\n\n const options = client.getOptions();\n const timeout =\n options?.shutdownTimeout && options.shutdownTimeout > 0 ? options.shutdownTimeout : DEFAULT_SHUTDOWN_TIMEOUT;\n client.close(timeout).then(\n (result: boolean) => {\n if (!result) {\n DEBUG_BUILD && debug.warn('We reached the timeout for emptying the request buffer, still exiting now!');\n }\n global.process.exit(1);\n },\n error => {\n DEBUG_BUILD && debug.error(error);\n },\n );\n}\n","import { captureException, debug, defineIntegration, getClient } from '@sentry/core';\nimport { isMainThread } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClient } from '../sdk/client';\nimport { logAndExitProcess } from '../utils/errorhandling';\n\ntype OnFatalErrorHandler = (firstError: Error, secondError?: Error) => void;\n\ntype TaggedListener = NodeJS.UncaughtExceptionListener & {\n tag?: string;\n};\n\ninterface OnUncaughtExceptionOptions {\n /**\n * Controls if the SDK should register a handler to exit the process on uncaught errors:\n * - `true`: The SDK will exit the process on all uncaught errors.\n * - `false`: The SDK will only exit the process when there are no other `uncaughtException` handlers attached.\n *\n * Default: `false`\n */\n exitEvenIfOtherHandlersAreRegistered: boolean;\n\n /**\n * This is called when an uncaught error would cause the process to exit.\n *\n * @param firstError Uncaught error causing the process to exit\n * @param secondError Will be set if the handler was called multiple times. This can happen either because\n * `onFatalError` itself threw, or because an independent error happened somewhere else while `onFatalError`\n * was running.\n */\n onFatalError?(this: void, firstError: Error, secondError?: Error): void;\n}\n\nconst INTEGRATION_NAME = 'OnUncaughtException';\n\n/**\n * Add a global exception handler.\n */\nexport const onUncaughtExceptionIntegration = defineIntegration((options: Partial = {}) => {\n const optionsWithDefaults = {\n exitEvenIfOtherHandlersAreRegistered: false,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n // errors in worker threads are already handled by the childProcessIntegration\n // also we don't want to exit the Node process on worker thread errors\n if (!isMainThread) {\n return;\n }\n\n global.process.on('uncaughtException', makeErrorHandler(client, optionsWithDefaults));\n },\n };\n});\n\ntype ErrorHandler = { _errorHandler: boolean } & ((error: Error) => void);\n\n/** Exported only for tests */\nexport function makeErrorHandler(client: NodeClient, options: OnUncaughtExceptionOptions): ErrorHandler {\n const timeout = 2000;\n let caughtFirstError: boolean = false;\n let caughtSecondError: boolean = false;\n let calledFatalError: boolean = false;\n let firstError: Error;\n\n const clientOptions = client.getOptions();\n\n return Object.assign(\n (error: Error): void => {\n let onFatalError: OnFatalErrorHandler = logAndExitProcess;\n\n if (options.onFatalError) {\n onFatalError = options.onFatalError;\n } else if (clientOptions.onFatalError) {\n onFatalError = clientOptions.onFatalError as OnFatalErrorHandler;\n }\n\n // Attaching a listener to `uncaughtException` will prevent the node process from exiting. We generally do not\n // want to alter this behaviour so we check for other listeners that users may have attached themselves and adjust\n // exit behaviour of the SDK accordingly:\n // - If other listeners are attached, do not exit.\n // - If the only listener attached is ours, exit.\n const userProvidedListenersCount = (global.process.listeners('uncaughtException') as TaggedListener[]).filter(\n listener => {\n // There are 3 listeners we ignore:\n return (\n // as soon as we're using domains this listener is attached by node itself\n listener.name !== 'domainUncaughtExceptionClear' &&\n // the handler we register for tracing\n listener.tag !== 'sentry_tracingErrorCallback' &&\n // the handler we register in this integration\n (listener as ErrorHandler)._errorHandler !== true\n );\n },\n ).length;\n\n const processWouldExit = userProvidedListenersCount === 0;\n const shouldApplyFatalHandlingLogic = options.exitEvenIfOtherHandlersAreRegistered || processWouldExit;\n\n if (!caughtFirstError) {\n // this is the first uncaught error and the ultimate reason for shutting down\n // we want to do absolutely everything possible to ensure it gets captured\n // also we want to make sure we don't go recursion crazy if more errors happen after this one\n firstError = error;\n caughtFirstError = true;\n\n if (getClient() === client) {\n captureException(error, {\n originalException: error,\n captureContext: {\n level: 'fatal',\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onuncaughtexception',\n },\n });\n }\n\n if (!calledFatalError && shouldApplyFatalHandlingLogic) {\n calledFatalError = true;\n onFatalError(error);\n }\n } else {\n if (shouldApplyFatalHandlingLogic) {\n if (calledFatalError) {\n // we hit an error *after* calling onFatalError - pretty boned at this point, just shut it down\n DEBUG_BUILD &&\n debug.warn(\n 'uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown',\n );\n logAndExitProcess(error);\n } else if (!caughtSecondError) {\n // two cases for how we can hit this branch:\n // - capturing of first error blew up and we just caught the exception from that\n // - quit trying to capture, proceed with shutdown\n // - a second independent error happened while waiting for first error to capture\n // - want to avoid causing premature shutdown before first error capture finishes\n // it's hard to immediately tell case 1 from case 2 without doing some fancy/questionable domain stuff\n // so let's instead just delay a bit before we proceed with our action here\n // in case 1, we just wait a bit unnecessarily but ultimately do the same thing\n // in case 2, the delay hopefully made us wait long enough for the capture to finish\n // two potential nonideal outcomes:\n // nonideal case 1: capturing fails fast, we sit around for a few seconds unnecessarily before proceeding correctly by calling onFatalError\n // nonideal case 2: case 2 happens, 1st error is captured but slowly, timeout completes before capture and we treat second error as the sendErr of (nonexistent) failure from trying to capture first error\n // note that after hitting this branch, we might catch more errors where (caughtSecondError && !calledFatalError)\n // we ignore them - they don't matter to us, we're just waiting for the second error timeout to finish\n caughtSecondError = true;\n setTimeout(() => {\n if (!calledFatalError) {\n // it was probably case 1, let's treat err as the sendErr and call onFatalError\n calledFatalError = true;\n onFatalError(firstError, error);\n } else {\n // it was probably case 2, our first error finished capturing while we waited, cool, do nothing\n }\n }, timeout); // capturing could take at least sendTimeout to fail, plus an arbitrary second for how long it takes to collect surrounding source etc\n }\n }\n }\n },\n { _errorHandler: true },\n );\n}\n","import type { Client, IntegrationFn, SeverityLevel, Span } from '@sentry/core';\nimport {\n captureException,\n consoleSandbox,\n defineIntegration,\n getClient,\n isMatchingPattern,\n withActiveSpan,\n} from '@sentry/core';\nimport { logAndExitProcess } from '../utils/errorhandling';\n\ntype UnhandledRejectionMode = 'none' | 'warn' | 'strict';\n\ntype IgnoreMatcher = { name?: string | RegExp; message?: string | RegExp };\n\ninterface OnUnhandledRejectionOptions {\n /**\n * Option deciding what to do after capturing unhandledRejection,\n * that mimicks behavior of node's --unhandled-rejection flag.\n */\n mode: UnhandledRejectionMode;\n /** Rejection Errors to ignore (don't capture or warn). */\n ignore?: IgnoreMatcher[];\n}\n\nconst INTEGRATION_NAME = 'OnUnhandledRejection';\n\nconst DEFAULT_IGNORES: IgnoreMatcher[] = [\n {\n name: 'AI_NoOutputGeneratedError', // When stream aborts in Vercel AI SDK V5, Vercel flush() fails with an error\n },\n {\n name: 'AbortError', // When stream aborts in Vercel AI SDK V6\n },\n];\n\nconst _onUnhandledRejectionIntegration = ((options: Partial = {}) => {\n const opts: OnUnhandledRejectionOptions = {\n mode: options.mode ?? 'warn',\n ignore: [...DEFAULT_IGNORES, ...(options.ignore ?? [])],\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n global.process.on('unhandledRejection', makeUnhandledPromiseHandler(client, opts));\n },\n };\n}) satisfies IntegrationFn;\n\nexport const onUnhandledRejectionIntegration = defineIntegration(_onUnhandledRejectionIntegration);\n\n/** Extract error info safely */\nfunction extractErrorInfo(reason: unknown): { name: string; message: string } {\n // Check if reason is an object (including Error instances, not just plain objects)\n if (typeof reason !== 'object' || reason === null) {\n return { name: '', message: String(reason ?? '') };\n }\n\n const errorLike = reason as Record;\n const name = typeof errorLike.name === 'string' ? errorLike.name : '';\n const message = typeof errorLike.message === 'string' ? errorLike.message : String(reason);\n\n return { name, message };\n}\n\n/** Check if a matcher matches the reason */\nfunction isMatchingReason(matcher: IgnoreMatcher, errorInfo: ReturnType): boolean {\n // name/message matcher\n const nameMatches = matcher.name === undefined || isMatchingPattern(errorInfo.name, matcher.name, true);\n\n const messageMatches = matcher.message === undefined || isMatchingPattern(errorInfo.message, matcher.message);\n\n return nameMatches && messageMatches;\n}\n\n/** Match helper */\nfunction matchesIgnore(list: IgnoreMatcher[], reason: unknown): boolean {\n const errorInfo = extractErrorInfo(reason);\n return list.some(matcher => isMatchingReason(matcher, errorInfo));\n}\n\n/** Core handler */\nexport function makeUnhandledPromiseHandler(\n client: Client,\n options: OnUnhandledRejectionOptions,\n): (reason: unknown, promise: unknown) => void {\n return function sendUnhandledPromise(reason: unknown, promise: unknown): void {\n // Only handle for the active client\n if (getClient() !== client) {\n return;\n }\n\n // Skip if configured to ignore\n if (matchesIgnore(options.ignore ?? [], reason)) {\n return;\n }\n\n const level: SeverityLevel = options.mode === 'strict' ? 'fatal' : 'error';\n\n // this can be set in places where we cannot reliably get access to the active span/error\n // when the error bubbles up to this handler, we can use this to set the active span\n const activeSpanForError =\n reason && typeof reason === 'object' ? (reason as { _sentry_active_span?: Span })._sentry_active_span : undefined;\n\n const activeSpanWrapper = activeSpanForError\n ? (fn: () => void) => withActiveSpan(activeSpanForError, fn)\n : (fn: () => void) => fn();\n\n activeSpanWrapper(() => {\n captureException(reason, {\n originalException: promise,\n captureContext: {\n extra: { unhandledPromiseRejection: true },\n level,\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onunhandledrejection',\n },\n });\n });\n\n handleRejection(reason, options.mode);\n };\n}\n\n/**\n * Handler for `mode` option\n */\nfunction handleRejection(reason: unknown, mode: UnhandledRejectionMode): void {\n // https://github.com/nodejs/node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js#L234-L240\n const rejectionWarning =\n 'This error originated either by ' +\n 'throwing inside of an async function without a catch block, ' +\n 'or by rejecting a promise which was not handled with .catch().' +\n ' The promise rejected with the reason:';\n\n /* eslint-disable no-console */\n if (mode === 'warn') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n console.error(reason && typeof reason === 'object' && 'stack' in reason ? reason.stack : reason);\n });\n } else if (mode === 'strict') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n });\n logAndExitProcess(reason);\n }\n /* eslint-enable no-console */\n}\n","import { defineIntegration, endSession, getIsolationScope, startSession } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'ProcessSession';\n\n/**\n * Records a Session for the current process to track release health.\n */\nexport const processSessionIntegration = defineIntegration(() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n startSession();\n\n // Emitted in the case of healthy sessions, error of `mechanism.handled: true` and unhandledrejections because\n // The 'beforeExit' event is not emitted for conditions causing explicit termination,\n // such as calling process.exit() or uncaught exceptions.\n // Ref: https://nodejs.org/api/process.html#process_event_beforeexit\n process.on('beforeExit', () => {\n const session = getIsolationScope().getSession();\n\n // Only call endSession, if the Session exists on Scope and SessionStatus is not a\n // Terminal Status i.e. Exited or Crashed because\n // \"When a session is moved away from ok it must not be updated anymore.\"\n // Ref: https://develop.sentry.dev/sdk/sessions/\n if (session?.status !== 'ok') {\n endSession();\n }\n });\n },\n };\n});\n","import * as http from 'node:http';\nimport type { Client, Envelope, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration, serializeEnvelope, suppressTracing } from '@sentry/core';\n\ntype SpotlightConnectionOptions = {\n /**\n * Set this if the Spotlight Sidecar is not running on localhost:8969\n * By default, the Url is set to http://localhost:8969/stream\n */\n sidecarUrl?: string;\n};\n\nexport const INTEGRATION_NAME = 'Spotlight';\n\nconst _spotlightIntegration = ((options: Partial = {}) => {\n const _options = {\n sidecarUrl: options.sidecarUrl || 'http://localhost:8969/stream',\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n try {\n if (process.env.NODE_ENV && process.env.NODE_ENV !== 'development') {\n debug.warn(\"[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?\");\n }\n } catch {\n // ignore\n }\n connectToSpotlight(client, _options);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Use this integration to send errors and transactions to Spotlight.\n *\n * Learn more about spotlight at https://spotlightjs.com\n *\n * Important: This integration only works with Node 18 or newer.\n */\nexport const spotlightIntegration = defineIntegration(_spotlightIntegration);\n\nfunction connectToSpotlight(client: Client, options: Required): void {\n const spotlightUrl = parseSidecarUrl(options.sidecarUrl);\n if (!spotlightUrl) {\n return;\n }\n\n let failedRequests = 0;\n\n client.on('beforeEnvelope', (envelope: Envelope) => {\n if (failedRequests > 3) {\n debug.warn('[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests');\n return;\n }\n\n const serializedEnvelope = serializeEnvelope(envelope);\n suppressTracing(() => {\n const req = http.request(\n {\n method: 'POST',\n path: spotlightUrl.pathname,\n hostname: spotlightUrl.hostname,\n port: spotlightUrl.port,\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n },\n res => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 400) {\n // Reset failed requests counter on success\n failedRequests = 0;\n }\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n res.setEncoding('utf8');\n },\n );\n\n req.on('error', () => {\n failedRequests++;\n debug.warn('[Spotlight] Failed to send envelope to Spotlight Sidecar');\n });\n req.write(serializedEnvelope);\n req.end();\n });\n });\n}\n\nfunction parseSidecarUrl(url: string): URL | undefined {\n try {\n return new URL(`${url}`);\n } catch {\n debug.warn(`[Spotlight] Invalid sidecar URL: ${url}`);\n return undefined;\n }\n}\n","import * as util from 'node:util';\nimport { defineIntegration } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'NodeSystemError';\n\ntype SystemErrorContext = {\n dest?: string; // If present, the file path destination when reporting a file system error\n errno: number; // The system-provided error number\n path?: string; // If present, the file path when reporting a file system error\n};\n\ntype SystemError = Error & SystemErrorContext;\n\nfunction isSystemError(error: unknown): error is SystemError {\n if (!(error instanceof Error)) {\n return false;\n }\n\n if (!('errno' in error) || typeof error.errno !== 'number') {\n return false;\n }\n\n // Appears this is the recommended way to check for Node.js SystemError\n // https://github.com/nodejs/node/issues/46869\n return util.getSystemErrorMap().has(error.errno);\n}\n\ntype Options = {\n /**\n * If true, includes the `path` and `dest` properties in the error context.\n */\n includePaths?: boolean;\n};\n\n/**\n * Captures context for Node.js SystemError errors.\n */\nexport const systemErrorIntegration = defineIntegration((options: Options = {}) => {\n return {\n name: INTEGRATION_NAME,\n processEvent: (event, hint, client) => {\n if (!isSystemError(hint.originalException)) {\n return event;\n }\n\n const error = hint.originalException;\n\n const errorContext: SystemErrorContext = {\n ...(error as SystemErrorContext),\n };\n\n if (!client.getOptions().sendDefaultPii && options.includePaths !== true) {\n delete errorContext.path;\n delete errorContext.dest;\n }\n\n event.contexts = {\n ...event.contexts,\n node_system_error: errorContext,\n };\n\n for (const exception of event.exception?.values || []) {\n if (exception.value) {\n if (error.path && exception.value.includes(error.path)) {\n exception.value = exception.value.replace(`'${error.path}'`, '').trim();\n }\n if (error.dest && exception.value.includes(error.dest)) {\n exception.value = exception.value.replace(`'${error.dest}'`, '').trim();\n }\n }\n }\n\n return event;\n },\n };\n});\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/member-ordering */\n/* eslint-disable jsdoc/require-jsdoc */\nimport * as http from 'node:http';\nimport type * as net from 'node:net';\nimport type { Duplex } from 'node:stream';\nimport type * as tls from 'node:tls';\n\nexport * from './helpers';\n\ninterface HttpConnectOpts extends net.TcpNetConnectOpts {\n secureEndpoint: false;\n protocol?: string;\n}\n\ninterface HttpsConnectOpts extends tls.ConnectionOptions {\n secureEndpoint: true;\n protocol?: string;\n port: number;\n}\n\nexport type AgentConnectOpts = HttpConnectOpts | HttpsConnectOpts;\n\nconst INTERNAL = Symbol('AgentBaseInternalState');\n\ninterface InternalState {\n defaultPort?: number;\n protocol?: string;\n currentSocket?: Duplex;\n}\n\nexport abstract class Agent extends http.Agent {\n private [INTERNAL]: InternalState;\n\n // Set by `http.Agent` - missing from `@types/node`\n options!: Partial;\n keepAlive!: boolean;\n\n constructor(opts?: http.AgentOptions) {\n super(opts);\n this[INTERNAL] = {};\n }\n\n abstract connect(\n req: http.ClientRequest,\n options: AgentConnectOpts,\n ): Promise | Duplex | http.Agent;\n\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options?: AgentConnectOpts): boolean {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n if (typeof (options as Partial).secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string') return false;\n return stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);\n }\n\n createSocket(req: http.ClientRequest, options: AgentConnectOpts, cb: (err: Error | null, s?: Duplex) => void): void {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then(socket => {\n if (socket instanceof http.Agent) {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, cb);\n }\n\n createConnection(): Duplex {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n\n get defaultPort(): number {\n return this[INTERNAL].defaultPort ?? (this.protocol === 'https:' ? 443 : 80);\n }\n\n set defaultPort(v: number) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n\n get protocol(): string {\n return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? 'https:' : 'http:');\n }\n\n set protocol(v: string) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable jsdoc/require-jsdoc */\nimport type { IncomingHttpHeaders } from 'node:http';\nimport type { Readable } from 'node:stream';\nimport { debug } from '@sentry/core';\n\nfunction debugLog(...args: unknown[]): void {\n debug.log('[https-proxy-agent:parse-proxy-response]', ...args);\n}\n\nexport interface ConnectResponse {\n statusCode: number;\n statusText: string;\n headers: IncomingHttpHeaders;\n}\n\nexport function parseProxyResponse(socket: Readable): Promise<{ connect: ConnectResponse; buffered: Buffer }> {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers: Buffer[] = [];\n\n function read() {\n const b = socket.read();\n if (b) ondata(b);\n else socket.once('readable', read);\n }\n\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n\n function onend() {\n cleanup();\n debugLog('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n\n function onerror(err: Error) {\n cleanup();\n debugLog('onerror %o', err);\n reject(err);\n }\n\n function ondata(b: Buffer) {\n buffers.push(b);\n buffersLength += b.length;\n\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n\n if (endOfHeaders === -1) {\n // keep buffering\n debugLog('have not received end of HTTP headers yet...');\n read();\n return;\n }\n\n const headerParts = buffered.subarray(0, endOfHeaders).toString('ascii').split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +(firstLineParts[1] || 0);\n const statusText = firstLineParts.slice(2).join(' ');\n const headers: IncomingHttpHeaders = {};\n for (const header of headerParts) {\n if (!header) continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n } else if (Array.isArray(current)) {\n current.push(value);\n } else {\n headers[key] = value;\n }\n }\n debugLog('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n\n socket.on('error', onerror);\n socket.on('end', onend);\n\n read();\n });\n}\n","/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// eslint-disable-next-line import/no-duplicates\nimport type * as http from 'node:http';\n// eslint-disable-next-line import/no-duplicates\nimport type { OutgoingHttpHeaders } from 'node:http';\nimport * as net from 'node:net';\nimport * as tls from 'node:tls';\nimport { debug } from '@sentry/core';\nimport type { AgentConnectOpts } from './base';\nimport { Agent } from './base';\nimport { parseProxyResponse } from './parse-proxy-response';\n\nfunction debugLog(...args: unknown[]): void {\n debug.log('[https-proxy-agent]', ...args);\n}\n\ntype Protocol = T extends `${infer Protocol}:${infer _}` ? Protocol : never;\n\ntype ConnectOptsMap = {\n http: Omit;\n https: Omit;\n};\n\ntype ConnectOpts = {\n [P in keyof ConnectOptsMap]: Protocol extends P ? ConnectOptsMap[P] : never;\n}[keyof ConnectOptsMap];\n\nexport type HttpsProxyAgentOptions = ConnectOpts &\n http.AgentOptions & {\n headers?: OutgoingHttpHeaders | (() => OutgoingHttpHeaders);\n };\n\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nexport class HttpsProxyAgent extends Agent {\n static protocols = ['http', 'https'] as const;\n\n readonly proxy: URL;\n proxyHeaders: OutgoingHttpHeaders | (() => OutgoingHttpHeaders);\n connectOpts: net.TcpNetConnectOpts & tls.ConnectionOptions;\n\n constructor(proxy: Uri | URL, opts?: HttpsProxyAgentOptions) {\n super(opts);\n this.options = {};\n this.proxy = typeof proxy === 'string' ? new URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debugLog('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === 'https:' ? 443 : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req: http.ClientRequest, opts: AgentConnectOpts): Promise {\n const { proxy } = this;\n\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n\n // Create a socket connection to the proxy server.\n let socket: net.Socket;\n if (proxy.protocol === 'https:') {\n debugLog('Creating `tls.Socket`: %o', this.connectOpts);\n const servername = this.connectOpts.servername || this.connectOpts.host;\n socket = tls.connect({\n ...this.connectOpts,\n servername: servername && net.isIP(servername) ? undefined : servername,\n });\n } else {\n debugLog('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n\n const headers: OutgoingHttpHeaders =\n typeof this.proxyHeaders === 'function' ? this.proxyHeaders() : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n\n headers.Host = `${host}:${opts.port}`;\n\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive ? 'Keep-Alive' : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n\n const proxyResponsePromise = parseProxyResponse(socket);\n\n socket.write(`${payload}\\r\\n`);\n\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not EventEmitter in Node types\n this.emit('proxyConnect', connect, req);\n\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debugLog('Upgrading socket connection to TLS');\n const servername = opts.servername || opts.host;\n return tls.connect({\n ...omit(opts, 'host', 'path', 'port'),\n socket,\n servername: net.isIP(servername) ? undefined : servername,\n });\n }\n\n return socket;\n }\n\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s: net.Socket) => {\n debugLog('Replaying proxy buffer for failed request');\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n\n return fakeSocket;\n }\n}\n\nfunction resume(socket: net.Socket | tls.TLSSocket): void {\n socket.resume();\n}\n\nfunction omit(\n obj: T,\n ...keys: K\n): {\n [K2 in Exclude]: T[K2];\n} {\n const ret = {} as {\n [K in keyof typeof obj]: (typeof obj)[K];\n };\n let key: keyof typeof obj;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n","import * as http from 'node:http';\nimport * as https from 'node:https';\nimport { Readable } from 'node:stream';\nimport { createGzip } from 'node:zlib';\nimport type {\n BaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequest,\n TransportRequestExecutor,\n} from '@sentry/core';\nimport { consoleSandbox, createTransport, suppressTracing } from '@sentry/core';\nimport { HttpsProxyAgent } from '../proxy';\nimport type { HTTPModule } from './http-module';\n\nexport interface NodeTransportOptions extends BaseTransportOptions {\n /** Set a proxy that should be used for outbound requests. */\n proxy?: string;\n /** HTTPS proxy CA certificates */\n caCerts?: string | Buffer | Array;\n /** Custom HTTP module. Defaults to the native 'http' and 'https' modules. */\n httpModule?: HTTPModule;\n /** Allow overriding connection keepAlive, defaults to false */\n keepAlive?: boolean;\n}\n\n// Estimated maximum size for reasonable standalone event\nconst GZIP_THRESHOLD = 1024 * 32;\n\n/**\n * Gets a stream from a Uint8Array or string\n * Readable.from is ideal but was added in node.js v12.3.0 and v10.17.0\n */\nfunction streamFromBody(body: Uint8Array | string): Readable {\n return new Readable({\n read() {\n this.push(body);\n this.push(null);\n },\n });\n}\n\n/**\n * Creates a Transport that uses native the native 'http' and 'https' modules to send events to Sentry.\n */\nexport function makeNodeTransport(options: NodeTransportOptions): Transport {\n let urlSegments: URL;\n\n try {\n urlSegments = new URL(options.url);\n } catch (_e) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.',\n );\n });\n return createTransport(options, () => Promise.resolve({}));\n }\n\n const isHttps = urlSegments.protocol === 'https:';\n\n // Proxy prioritization: http => `options.proxy` | `process.env.http_proxy`\n // Proxy prioritization: https => `options.proxy` | `process.env.https_proxy` | `process.env.http_proxy`\n const proxy = applyNoProxyOption(\n urlSegments,\n options.proxy || (isHttps ? process.env.https_proxy : undefined) || process.env.http_proxy,\n );\n\n const nativeHttpModule = isHttps ? https : http;\n const keepAlive = options.keepAlive === undefined ? false : options.keepAlive;\n\n // TODO(v11): Evaluate if we can set keepAlive to true. This would involve testing for memory leaks in older node\n // versions(>= 8) as they had memory leaks when using it: #2555\n const agent = proxy\n ? (new HttpsProxyAgent(proxy) as http.Agent)\n : new nativeHttpModule.Agent({ keepAlive, maxSockets: 30, timeout: 2000 });\n\n const requestExecutor = createRequestExecutor(options, options.httpModule ?? nativeHttpModule, agent);\n return createTransport(options, requestExecutor);\n}\n\n/**\n * Honors the `no_proxy` env variable with the highest priority to allow for hosts exclusion.\n *\n * @param transportUrl The URL the transport intends to send events to.\n * @param proxy The client configured proxy.\n * @returns A proxy the transport should use.\n */\nfunction applyNoProxyOption(transportUrlSegments: URL, proxy: string | undefined): string | undefined {\n const { no_proxy } = process.env;\n\n const urlIsExemptFromProxy = no_proxy\n ?.split(',')\n .some(\n exemption => transportUrlSegments.host.endsWith(exemption) || transportUrlSegments.hostname.endsWith(exemption),\n );\n\n if (urlIsExemptFromProxy) {\n return undefined;\n } else {\n return proxy;\n }\n}\n\n/**\n * Creates a RequestExecutor to be used with `createTransport`.\n */\nfunction createRequestExecutor(\n options: NodeTransportOptions,\n httpModule: HTTPModule,\n agent: http.Agent,\n): TransportRequestExecutor {\n const { hostname, pathname, port, protocol, search } = new URL(options.url);\n return function makeRequest(request: TransportRequest): Promise {\n return new Promise((resolve, reject) => {\n // This ensures we do not generate any spans in OpenTelemetry for the transport\n suppressTracing(() => {\n let body = streamFromBody(request.body);\n\n const headers: Record = { ...options.headers };\n\n if (request.body.length > GZIP_THRESHOLD) {\n headers['content-encoding'] = 'gzip';\n body = body.pipe(createGzip());\n }\n\n const hostnameIsIPv6 = hostname.startsWith('[');\n\n const req = httpModule.request(\n {\n method: 'POST',\n agent,\n headers,\n // Remove \"[\" and \"]\" from IPv6 hostnames\n hostname: hostnameIsIPv6 ? hostname.slice(1, -1) : hostname,\n path: `${pathname}${search}`,\n port,\n protocol,\n ca: options.caCerts,\n },\n res => {\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n\n res.setEncoding('utf8');\n\n // \"Key-value pairs of header names and values. Header names are lower-cased.\"\n // https://nodejs.org/api/http.html#http_message_headers\n const retryAfterHeader = res.headers['retry-after'] ?? null;\n const rateLimitsHeader = res.headers['x-sentry-rate-limits'] ?? null;\n\n resolve({\n statusCode: res.statusCode,\n headers: {\n 'retry-after': retryAfterHeader,\n 'x-sentry-rate-limits': Array.isArray(rateLimitsHeader)\n ? rateLimitsHeader[0] || null\n : rateLimitsHeader,\n },\n });\n },\n );\n\n req.on('error', reject);\n body.pipe(req);\n });\n });\n };\n}\n","import { envToBool } from '@sentry/core';\n\n/**\n * Parse the spotlight option with proper precedence:\n * - `false` or explicit string from options: use as-is\n * - `true`: enable spotlight, but prefer a custom URL from the env var if set\n * - `undefined`: defer entirely to the env var (bool or URL)\n */\nexport function getSpotlightConfig(optionsSpotlight: boolean | string | undefined): boolean | string | undefined {\n if (optionsSpotlight === false) {\n return false;\n }\n\n if (typeof optionsSpotlight === 'string') {\n return optionsSpotlight;\n }\n\n // optionsSpotlight is true or undefined\n const envBool = envToBool(process.env.SENTRY_SPOTLIGHT, { strict: true });\n const envUrl = envBool === null && process.env.SENTRY_SPOTLIGHT ? process.env.SENTRY_SPOTLIGHT : undefined;\n\n return optionsSpotlight === true\n ? (envUrl ?? true) // true: use env URL if present, otherwise true\n : (envBool ?? envUrl); // undefined: use env var (bool or URL)\n}\n","import { posix, sep } from 'node:path';\nimport { dirname } from '@sentry/core';\n\n/** normalizes Windows paths */\nfunction normalizeWindowsPath(path: string): string {\n return path\n .replace(/^[A-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/'); // replace all `\\` instances with `/`\n}\n\n/** Creates a function that gets the module name from a filename */\nexport function createGetModuleFromFilename(\n basePath: string = process.argv[1] ? dirname(process.argv[1]) : process.cwd(),\n isWindows: boolean = sep === '\\\\',\n): (filename: string | undefined) => string | undefined {\n const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;\n\n return (filename: string | undefined) => {\n if (!filename) {\n return;\n }\n\n const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;\n\n // eslint-disable-next-line prefer-const\n let { dir, base: file, ext } = posix.parse(normalizedFilename);\n\n if (ext === '.js' || ext === '.mjs' || ext === '.cjs') {\n file = file.slice(0, ext.length * -1);\n }\n\n // The file name might be URI-encoded which we want to decode to\n // the original file name.\n const decodedFile = decodeURIComponent(file);\n\n if (!dir) {\n // No dirname whatsoever\n dir = '.';\n }\n\n const n = dir.lastIndexOf('/node_modules');\n if (n > -1) {\n return `${dir.slice(n + 14).replace(/\\//g, '.')}:${decodedFile}`;\n }\n\n // Let's see if it's a part of the main module\n // To be a part of main module, it has to share the same base\n if (dir.startsWith(normalizedBase)) {\n const moduleName = dir.slice(normalizedBase.length + 1).replace(/\\//g, '.');\n return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;\n }\n\n return decodedFile;\n };\n}\n","// PUBLIC APIS\n\nimport type { StackParser } from '@sentry/core';\nimport { createStackParser, GLOBAL_OBJ, nodeStackLineParser } from '@sentry/core';\nimport { createGetModuleFromFilename } from '../utils/module';\n\n/**\n * Returns a release dynamically from environment variables.\n */\n// eslint-disable-next-line complexity\nexport function getSentryRelease(fallback?: string): string | undefined {\n // Always read first as Sentry takes this as precedence\n if (process.env.SENTRY_RELEASE) {\n return process.env.SENTRY_RELEASE;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (GLOBAL_OBJ.SENTRY_RELEASE?.id) {\n return GLOBAL_OBJ.SENTRY_RELEASE.id;\n }\n\n // This list is in approximate alpha order, separated into 3 categories:\n // 1. Git providers\n // 2. CI providers with specific environment variables (has the provider name in the variable name)\n // 3. CI providers with generic environment variables (checked for last to prevent possible false positives)\n\n const possibleReleaseNameOfGitProvider =\n // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables\n process.env['GITHUB_SHA'] ||\n // GitLab CI - https://docs.gitlab.com/ee/ci/variables/predefined_variables.html\n process.env['CI_MERGE_REQUEST_SOURCE_BRANCH_SHA'] ||\n process.env['CI_BUILD_REF'] ||\n process.env['CI_COMMIT_SHA'] ||\n // Bitbucket - https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/\n process.env['BITBUCKET_COMMIT'];\n\n const possibleReleaseNameOfCiProvidersWithSpecificEnvVar =\n // AppVeyor - https://www.appveyor.com/docs/environment-variables/\n process.env['APPVEYOR_PULL_REQUEST_HEAD_COMMIT'] ||\n process.env['APPVEYOR_REPO_COMMIT'] ||\n // AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html\n process.env['CODEBUILD_RESOLVED_SOURCE_VERSION'] ||\n // AWS Amplify - https://docs.aws.amazon.com/amplify/latest/userguide/environment-variables.html\n process.env['AWS_COMMIT_ID'] ||\n // Azure Pipelines - https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml\n process.env['BUILD_SOURCEVERSION'] ||\n // Bitrise - https://devcenter.bitrise.io/builds/available-environment-variables/\n process.env['GIT_CLONE_COMMIT_HASH'] ||\n // Buddy CI - https://buddy.works/docs/pipelines/environment-variables#default-environment-variables\n process.env['BUDDY_EXECUTION_REVISION'] ||\n // Builtkite - https://buildkite.com/docs/pipelines/environment-variables\n process.env['BUILDKITE_COMMIT'] ||\n // CircleCI - https://circleci.com/docs/variables/\n process.env['CIRCLE_SHA1'] ||\n // Cirrus CI - https://cirrus-ci.org/guide/writing-tasks/#environment-variables\n process.env['CIRRUS_CHANGE_IN_REPO'] ||\n // Codefresh - https://codefresh.io/docs/docs/codefresh-yaml/variables/\n process.env['CF_REVISION'] ||\n // Codemagic - https://docs.codemagic.io/yaml-basic-configuration/environment-variables/\n process.env['CM_COMMIT'] ||\n // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables\n process.env['CF_PAGES_COMMIT_SHA'] ||\n // Drone - https://docs.drone.io/pipeline/environment/reference/\n process.env['DRONE_COMMIT_SHA'] ||\n // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables\n process.env['FC_GIT_COMMIT_SHA'] ||\n // Heroku #1 https://devcenter.heroku.com/articles/heroku-ci\n process.env['HEROKU_TEST_RUN_COMMIT_VERSION'] ||\n // Heroku #2 https://devcenter.heroku.com/articles/dyno-metadata#dyno-metadata\n process.env['HEROKU_BUILD_COMMIT'] ||\n // Heroku #3 (deprecated by Heroku, kept for backward compatibility)\n process.env['HEROKU_SLUG_COMMIT'] ||\n // Railway - https://docs.railway.app/reference/variables#git-variables\n process.env['RAILWAY_GIT_COMMIT_SHA'] ||\n // Render - https://render.com/docs/environment-variables\n process.env['RENDER_GIT_COMMIT'] ||\n // Semaphore CI - https://docs.semaphoreci.com/ci-cd-environment/environment-variables\n process.env['SEMAPHORE_GIT_SHA'] ||\n // TravisCI - https://docs.travis-ci.com/user/environment-variables/#default-environment-variables\n process.env['TRAVIS_PULL_REQUEST_SHA'] ||\n // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables\n process.env['VERCEL_GIT_COMMIT_SHA'] ||\n process.env['VERCEL_GITHUB_COMMIT_SHA'] ||\n process.env['VERCEL_GITLAB_COMMIT_SHA'] ||\n process.env['VERCEL_BITBUCKET_COMMIT_SHA'] ||\n // Zeit (now known as Vercel)\n process.env['ZEIT_GITHUB_COMMIT_SHA'] ||\n process.env['ZEIT_GITLAB_COMMIT_SHA'] ||\n process.env['ZEIT_BITBUCKET_COMMIT_SHA'];\n\n const possibleReleaseNameOfCiProvidersWithGenericEnvVar =\n // CloudBees CodeShip - https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables\n process.env['CI_COMMIT_ID'] ||\n // Coolify - https://coolify.io/docs/knowledge-base/environment-variables\n process.env['SOURCE_COMMIT'] ||\n // Heroku #3 https://devcenter.heroku.com/changelog-items/630\n process.env['SOURCE_VERSION'] ||\n // Jenkins - https://plugins.jenkins.io/git/#environment-variables\n process.env['GIT_COMMIT'] ||\n // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata\n process.env['COMMIT_REF'] ||\n // TeamCity - https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html\n process.env['BUILD_VCS_NUMBER'] ||\n // Woodpecker CI - https://woodpecker-ci.org/docs/usage/environment\n process.env['CI_COMMIT_SHA'];\n\n return (\n possibleReleaseNameOfGitProvider ||\n possibleReleaseNameOfCiProvidersWithSpecificEnvVar ||\n possibleReleaseNameOfCiProvidersWithGenericEnvVar ||\n fallback\n );\n}\n\n/** Node.js stack parser */\nexport const defaultStackParser: StackParser = createStackParser(nodeStackLineParser(createGetModuleFromFilename()));\n","import * as os from 'node:os';\nimport type { Tracer } from '@opentelemetry/api';\nimport { trace } from '@opentelemetry/api';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport type { DynamicSamplingContext, Scope, ServerRuntimeClientOptions, TraceContext } from '@sentry/core';\nimport {\n _INTERNAL_clearAiProviderSkips,\n _INTERNAL_flushLogsBuffer,\n applySdkMetadata,\n debug,\n SDK_VERSION,\n ServerRuntimeClient,\n} from '@sentry/core';\nimport { type AsyncLocalStorageLookup, getTraceContextForScope } from '@sentry/opentelemetry';\nimport { isMainThread, threadId } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { NodeClientOptions } from '../types';\n\nconst DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS = 60_000; // 60s was chosen arbitrarily\n\n/** A client for using Sentry with Node & OpenTelemetry. */\nexport class NodeClient extends ServerRuntimeClient {\n public traceProvider: BasicTracerProvider | undefined;\n public asyncLocalStorageLookup: AsyncLocalStorageLookup | undefined;\n\n private _tracer: Tracer | undefined;\n private _clientReportInterval: NodeJS.Timeout | undefined;\n private _clientReportOnExitFlushListener: (() => void) | undefined;\n private _logOnExitFlushListener: (() => void) | undefined;\n\n public constructor(options: NodeClientOptions) {\n const serverName =\n options.includeServerName === false\n ? undefined\n : options.serverName || global.process.env.SENTRY_NAME || os.hostname();\n\n const clientOptions: ServerRuntimeClientOptions = {\n ...options,\n platform: 'node',\n // Use provided runtime or default to 'node' with current process version\n runtime: options.runtime || { name: 'node', version: global.process.version },\n serverName,\n };\n\n if (options.openTelemetryInstrumentations) {\n registerInstrumentations({\n instrumentations: options.openTelemetryInstrumentations,\n });\n }\n\n applySdkMetadata(clientOptions, 'node');\n\n debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${isMainThread ? 'main' : `worker-${threadId}`}.`);\n\n super(clientOptions);\n\n if (this.getOptions().enableLogs) {\n this._logOnExitFlushListener = () => {\n _INTERNAL_flushLogsBuffer(this);\n };\n\n if (serverName) {\n this.on('beforeCaptureLog', log => {\n log.attributes = {\n ...log.attributes,\n 'server.address': serverName,\n };\n });\n }\n\n process.on('beforeExit', this._logOnExitFlushListener);\n }\n }\n\n /** Get the OTEL tracer. */\n public get tracer(): Tracer {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/node';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async flush(timeout?: number): PromiseLike {\n await this.traceProvider?.forceFlush();\n\n if (this.getOptions().sendClientReports) {\n this._flushOutcomes();\n }\n\n return super.flush(timeout);\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n public async close(timeout?: number | undefined): PromiseLike {\n if (this._clientReportInterval) {\n clearInterval(this._clientReportInterval);\n }\n\n if (this._clientReportOnExitFlushListener) {\n process.off('beforeExit', this._clientReportOnExitFlushListener);\n }\n\n if (this._logOnExitFlushListener) {\n process.off('beforeExit', this._logOnExitFlushListener);\n }\n\n const allEventsSent = await super.close(timeout);\n if (this.traceProvider) {\n await this.traceProvider.shutdown();\n }\n\n return allEventsSent;\n }\n\n /**\n * Will start tracking client reports for this client.\n *\n * NOTICE: This method will create an interval that is periodically called and attach a `process.on('beforeExit')`\n * hook. To clean up these resources, call `.close()` when you no longer intend to use the client. Not doing so will\n * result in a memory leak.\n */\n // The reason client reports need to be manually activated with this method instead of just enabling them in a\n // constructor, is that if users periodically and unboundedly create new clients, we will create more and more\n // intervals and beforeExit listeners, thus leaking memory. In these situations, users are required to call\n // `client.close()` in order to dispose of the acquired resources.\n // We assume that calling this method in Sentry.init() is a sensible default, because calling Sentry.init() over and\n // over again would also result in memory leaks.\n // Note: We have experimented with using `FinalizationRegisty` to clear the interval when the client is garbage\n // collected, but it did not work, because the cleanup function never got called.\n public startClientReportTracking(): void {\n const clientOptions = this.getOptions();\n if (clientOptions.sendClientReports) {\n this._clientReportOnExitFlushListener = () => {\n this._flushOutcomes();\n };\n\n this._clientReportInterval = setInterval(() => {\n DEBUG_BUILD && debug.log('Flushing client reports based on interval.');\n this._flushOutcomes();\n }, clientOptions.clientReportFlushInterval ?? DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS)\n // Unref is critical for not preventing the process from exiting because the interval is active.\n .unref();\n\n process.on('beforeExit', this._clientReportOnExitFlushListener);\n }\n }\n\n /** @inheritDoc */\n protected _setupIntegrations(): void {\n // Clear AI provider skip registrations before setting up integrations\n // This ensures a clean state between different client initializations\n // (e.g., when LangChain skips OpenAI in one client, but a subsequent client uses OpenAI standalone)\n _INTERNAL_clearAiProviderSkips();\n super._setupIntegrations();\n }\n\n /** Custom implementation for OTEL, so we can handle scope-span linking. */\n protected _getTraceInfoFromScope(\n scope: Scope | undefined,\n ): [dynamicSamplingContext: Partial | undefined, traceContext: TraceContext | undefined] {\n if (!scope) {\n return [undefined, undefined];\n }\n\n return getTraceContextForScope(this, scope);\n }\n}\n","import { debug, GLOBAL_OBJ } from '@sentry/core';\nimport { createAddHookMessageChannel } from 'import-in-the-middle';\nimport * as moduleModule from 'module';\nimport { supportsEsmLoaderHooks } from '../utils/detection';\n\n/**\n * Initialize the ESM loader - This method is private and not part of the public\n * API.\n *\n * @ignore\n */\nexport function initializeEsmLoader(): void {\n if (!supportsEsmLoaderHooks()) {\n return;\n }\n\n if (!GLOBAL_OBJ._sentryEsmLoaderHookRegistered) {\n GLOBAL_OBJ._sentryEsmLoaderHookRegistered = true;\n\n try {\n const { addHookMessagePort } = createAddHookMessageChannel();\n // @ts-expect-error register is available in these versions\n moduleModule.register('import-in-the-middle/hook.mjs', import.meta.url, {\n data: { addHookMessagePort, include: [] },\n transferList: [addHookMessagePort],\n });\n } catch (error) {\n debug.warn(\"Failed to register 'import-in-the-middle' hook\", error);\n }\n }\n}\n","import type { Integration, Options } from '@sentry/core';\nimport {\n applySdkMetadata,\n consoleIntegration,\n consoleSandbox,\n conversationIdIntegration,\n debug,\n envToBool,\n functionToStringIntegration,\n getCurrentScope,\n getIntegrationsToSetup,\n hasSpansEnabled,\n inboundFiltersIntegration,\n linkedErrorsIntegration,\n propagationContextFromHeaders,\n requestDataIntegration,\n stackParserFromStackParserOptions,\n} from '@sentry/core';\nimport {\n enhanceDscWithOpenTelemetryRootSpanName,\n openTelemetrySetupCheck,\n setOpenTelemetryContextAsyncContextStrategy,\n setupEventContextTrace,\n} from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { childProcessIntegration } from '../integrations/childProcess';\nimport { nodeContextIntegration } from '../integrations/context';\nimport { contextLinesIntegration } from '../integrations/contextlines';\nimport { httpIntegration } from '../integrations/http';\nimport { localVariablesIntegration } from '../integrations/local-variables';\nimport { modulesIntegration } from '../integrations/modules';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch';\nimport { onUncaughtExceptionIntegration } from '../integrations/onuncaughtexception';\nimport { onUnhandledRejectionIntegration } from '../integrations/onunhandledrejection';\nimport { processSessionIntegration } from '../integrations/processSession';\nimport { INTEGRATION_NAME as SPOTLIGHT_INTEGRATION_NAME, spotlightIntegration } from '../integrations/spotlight';\nimport { systemErrorIntegration } from '../integrations/systemError';\nimport { makeNodeTransport } from '../transports';\nimport type { NodeClientOptions, NodeOptions } from '../types';\nimport { isCjs } from '../utils/detection';\nimport { getSpotlightConfig } from '../utils/spotlight';\nimport { defaultStackParser, getSentryRelease } from './api';\nimport { NodeClient } from './client';\nimport { initializeEsmLoader } from './esmLoader';\n\n/**\n * Get default integrations for the Node-Core SDK.\n */\nexport function getDefaultIntegrations(): Integration[] {\n return [\n // Common\n // TODO(v11): Replace with `eventFiltersIntegration` once we remove the deprecated `inboundFiltersIntegration`\n // eslint-disable-next-line deprecation/deprecation\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n linkedErrorsIntegration(),\n requestDataIntegration(),\n systemErrorIntegration(),\n conversationIdIntegration(),\n // Native Wrappers\n consoleIntegration(),\n httpIntegration(),\n nativeNodeFetchIntegration(),\n // Global Handlers\n onUncaughtExceptionIntegration(),\n onUnhandledRejectionIntegration(),\n // Event Info\n contextLinesIntegration(),\n localVariablesIntegration(),\n nodeContextIntegration(),\n childProcessIntegration(),\n processSessionIntegration(),\n modulesIntegration(),\n ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nexport function init(options: NodeOptions | undefined = {}): NodeClient | undefined {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nexport function initWithoutDefaultIntegrations(options: NodeOptions | undefined = {}): NodeClient {\n return _init(options, () => []);\n}\n\n/**\n * Initialize Sentry for Node, without performance instrumentation.\n */\nfunction _init(\n _options: NodeOptions | undefined = {},\n getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClient {\n const options = getClientOptions(_options, getDefaultIntegrationsImpl);\n\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n debug.enable();\n } else {\n // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n\n if (options.registerEsmLoaderHooks !== false) {\n initializeEsmLoader();\n }\n\n setOpenTelemetryContextAsyncContextStrategy();\n\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n if (options.spotlight && !options.integrations.some(({ name }) => name === SPOTLIGHT_INTEGRATION_NAME)) {\n options.integrations.push(\n spotlightIntegration({\n sidecarUrl: typeof options.spotlight === 'string' ? options.spotlight : undefined,\n }),\n );\n }\n\n applySdkMetadata(options, 'node-core');\n\n const client = new NodeClient(options);\n // The client is on the current scope, from where it generally is inherited\n getCurrentScope().setClient(client);\n\n client.init();\n\n debug.log(`SDK initialized from ${isCjs() ? 'CommonJS' : 'ESM'}`);\n\n client.startClientReportTracking();\n\n updateScopeFromEnvVariables();\n\n enhanceDscWithOpenTelemetryRootSpanName(client);\n setupEventContextTrace(client);\n\n // Ensure we flush events when vercel functions are ended\n // See: https://vercel.com/docs/functions/functions-api-reference#sigterm-signal\n if (process.env.VERCEL) {\n process.on('SIGTERM', async () => {\n // We have 500ms for processing here, so we try to make sure to have enough time to send the events\n await client.flush(200);\n });\n }\n\n return client;\n}\n\n/**\n * Validate that your OpenTelemetry setup is correct.\n */\nexport function validateOpenTelemetrySetup(): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n const setup = openTelemetrySetupCheck();\n\n const required: ReturnType = ['SentryContextManager', 'SentryPropagator'];\n\n if (hasSpansEnabled()) {\n required.push('SentrySpanProcessor');\n }\n\n for (const k of required) {\n if (!setup.includes(k)) {\n debug.error(\n `You have to set up the ${k}. Without this, the OpenTelemetry & Sentry integration will not work properly.`,\n );\n }\n }\n\n if (!setup.includes('SentrySampler')) {\n debug.warn(\n 'You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.',\n );\n }\n}\n\nfunction getClientOptions(\n options: NodeOptions,\n getDefaultIntegrationsImpl: (options: Options) => Integration[],\n): NodeClientOptions {\n const release = getRelease(options.release);\n\n const spotlight = getSpotlightConfig(options.spotlight);\n\n const tracesSampleRate = getTracesSampleRate(options.tracesSampleRate);\n\n const mergedOptions = {\n ...options,\n dsn: options.dsn ?? process.env.SENTRY_DSN,\n environment: options.environment ?? process.env.SENTRY_ENVIRONMENT,\n sendClientReports: options.sendClientReports ?? true,\n transport: options.transport ?? makeNodeTransport,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n release,\n tracesSampleRate,\n spotlight,\n debug: envToBool(options.debug ?? process.env.SENTRY_DEBUG),\n };\n\n const integrations = options.integrations;\n const defaultIntegrations = options.defaultIntegrations ?? getDefaultIntegrationsImpl(mergedOptions);\n\n return {\n ...mergedOptions,\n integrations: getIntegrationsToSetup({\n defaultIntegrations,\n integrations,\n }),\n };\n}\n\nfunction getRelease(release: NodeOptions['release']): string | undefined {\n if (release !== undefined) {\n return release;\n }\n\n const detectedRelease = getSentryRelease();\n if (detectedRelease !== undefined) {\n return detectedRelease;\n }\n\n return undefined;\n}\n\nfunction getTracesSampleRate(tracesSampleRate: NodeOptions['tracesSampleRate']): number | undefined {\n if (tracesSampleRate !== undefined) {\n return tracesSampleRate;\n }\n\n const sampleRateFromEnv = process.env.SENTRY_TRACES_SAMPLE_RATE;\n if (!sampleRateFromEnv) {\n return undefined;\n }\n\n const parsed = parseFloat(sampleRateFromEnv);\n return isFinite(parsed) ? parsed : undefined;\n}\n\n/**\n * Update scope and propagation context based on environmental variables.\n *\n * See https://github.com/getsentry/rfcs/blob/main/text/0071-continue-trace-over-process-boundaries.md\n * for more details.\n */\nfunction updateScopeFromEnvVariables(): void {\n if (envToBool(process.env.SENTRY_USE_ENVIRONMENT) !== false) {\n const sentryTraceEnv = process.env.SENTRY_TRACE;\n const baggageEnv = process.env.SENTRY_BAGGAGE;\n const propagationContext = propagationContextFromHeaders(sentryTraceEnv, baggageEnv);\n getCurrentScope().setPropagationContext(propagationContext);\n }\n}\n","import { context } from '@opentelemetry/api';\nimport type { Scope } from '@sentry/core';\nimport { getScopesFromContext } from '@sentry/opentelemetry';\n\n/**\n * Update the active isolation scope.\n * Should be used with caution!\n */\nexport function setIsolationScope(isolationScope: Scope): void {\n const scopes = getScopesFromContext(context.active());\n if (scopes) {\n scopes.isolationScope = isolationScope;\n }\n}\n","import type { MissingInstrumentationContext } from '@sentry/core';\nimport { isCjs } from './detection';\n\nexport const createMissingInstrumentationContext = (pkg: string): MissingInstrumentationContext => ({\n package: pkg,\n 'javascript.is_cjs': isCjs(),\n});\n","import { isWrapped } from '@opentelemetry/instrumentation';\nimport { consoleSandbox, getClient, getGlobalScope, hasSpansEnabled, isEnabled } from '@sentry/core';\nimport type { NodeClient } from '../sdk/client';\nimport { createMissingInstrumentationContext } from './createMissingInstrumentationContext';\nimport { isCjs } from './detection';\n\n/**\n * Checks and warns if a framework isn't wrapped by opentelemetry.\n */\nexport function ensureIsWrapped(\n maybeWrappedFunction: unknown,\n name: 'express' | 'connect' | 'fastify' | 'hapi' | 'koa' | 'hono',\n): void {\n const clientOptions = getClient()?.getOptions();\n if (\n !clientOptions?.disableInstrumentationWarnings &&\n !isWrapped(maybeWrappedFunction) &&\n isEnabled() &&\n hasSpansEnabled(clientOptions)\n ) {\n consoleSandbox(() => {\n if (isCjs()) {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] ${name} is not instrumented. This is likely because you required/imported ${name} before calling \\`Sentry.init()\\`.`,\n );\n } else {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] ${name} is not instrumented. Please make sure to initialize Sentry in a separate file that you \\`--import\\` when running node, see: https://docs.sentry.io/platforms/javascript/guides/${name}/install/esm/.`,\n );\n }\n });\n\n getGlobalScope().setContext('missing_instrumentation', createMissingInstrumentationContext(name));\n }\n}\n","import { types } from 'node:util';\nimport { Worker } from 'node:worker_threads';\nimport type { Contexts, Event, EventHint, Integration, IntegrationFn, ScopeData } from '@sentry/core';\nimport {\n debug,\n defineIntegration,\n getClient,\n getCombinedScopeData,\n getCurrentScope,\n getFilenameToDebugIdMap,\n getIsolationScope,\n GLOBAL_OBJ,\n} from '@sentry/core';\nimport { NODE_VERSION } from '../../nodeVersion';\nimport type { NodeClient } from '../../sdk/client';\nimport { isDebuggerEnabled } from '../../utils/debug';\nimport type { AnrIntegrationOptions, WorkerStartData } from './common';\n\nconst { isPromise } = types;\n\n// This string is a placeholder that gets overwritten with the worker code.\nexport const base64WorkerScript = '###AnrWorkerScript###';\n\nconst DEFAULT_INTERVAL = 50;\nconst DEFAULT_HANG_THRESHOLD = 5000;\n\nfunction log(message: string, ...args: unknown[]): void {\n debug.log(`[ANR] ${message}`, ...args);\n}\n\nfunction globalWithScopeFetchFn(): typeof GLOBAL_OBJ & { __SENTRY_GET_SCOPES__?: () => ScopeData } {\n return GLOBAL_OBJ;\n}\n\n/** Fetches merged scope data */\nfunction getScopeData(): ScopeData {\n const scope = getCombinedScopeData(getIsolationScope(), getCurrentScope());\n\n // We remove attachments because they likely won't serialize well as json\n scope.attachments = [];\n // We can't serialize event processor functions\n scope.eventProcessors = [];\n\n return scope;\n}\n\n/**\n * Gets contexts by calling all event processors. This shouldn't be called until all integrations are setup\n */\nasync function getContexts(client: NodeClient): Promise {\n let event: Event | null = { message: 'ANR' };\n const eventHint: EventHint = {};\n\n for (const processor of client.getEventProcessors()) {\n if (event === null) break;\n event = await processor(event, eventHint);\n }\n\n return event?.contexts || {};\n}\n\nconst INTEGRATION_NAME = 'Anr';\n\ntype AnrInternal = { startWorker: () => void; stopWorker: () => void };\n\n// eslint-disable-next-line deprecation/deprecation\nconst _anrIntegration = ((options: Partial = {}) => {\n if (NODE_VERSION.major < 16 || (NODE_VERSION.major === 16 && NODE_VERSION.minor < 17)) {\n throw new Error('ANR detection requires Node 16.17.0 or later');\n }\n\n let worker: Promise<() => void> | undefined;\n let client: NodeClient | undefined;\n\n // Hookup the scope fetch function to the global object so that it can be called from the worker thread via the\n // debugger when it pauses\n const gbl = globalWithScopeFetchFn();\n gbl.__SENTRY_GET_SCOPES__ = getScopeData;\n\n return {\n name: INTEGRATION_NAME,\n startWorker: () => {\n if (worker) {\n return;\n }\n\n if (client) {\n worker = _startWorker(client, options);\n }\n },\n stopWorker: () => {\n if (worker) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.then(stop => {\n stop();\n worker = undefined;\n });\n }\n },\n async setup(initClient: NodeClient) {\n client = initClient;\n\n if (options.captureStackTrace && (await isDebuggerEnabled())) {\n debug.warn('ANR captureStackTrace has been disabled because the debugger was already enabled');\n options.captureStackTrace = false;\n }\n\n // setImmediate is used to ensure that all other integrations have had their setup called first.\n // This allows us to call into all integrations to fetch the full context\n setImmediate(() => this.startWorker());\n },\n } as Integration & AnrInternal;\n}) satisfies IntegrationFn;\n\n// eslint-disable-next-line deprecation/deprecation\ntype AnrReturn = (options?: Partial) => Integration & AnrInternal;\n\n/**\n * Application Not Responding (ANR) integration for Node.js applications.\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n *\n * Detects when the Node.js main thread event loop is blocked for more than the configured\n * threshold (5 seconds by default) and reports these as Sentry events.\n *\n * ANR detection uses a worker thread to monitor the event loop in the main app thread.\n * The main app thread sends a heartbeat message to the ANR worker thread every 50ms by default.\n * If the ANR worker does not receive a heartbeat message for the configured threshold duration,\n * it triggers an ANR event.\n *\n * - Node.js 16.17.0 or higher\n * - Only supported in the Node.js runtime (not browsers)\n * - Not supported for Node.js clusters\n *\n * Overhead should be minimal:\n * - Main thread: Only polling the ANR worker over IPC every 50ms\n * - Worker thread: Consumes around 10-20 MB of RAM\n * - When ANR detected: Brief pause in debugger to capture stack trace (negligible compared to the blocking)\n *\n * @example\n * ```javascript\n * Sentry.init({\n * dsn: \"https://examplePublicKey@o0.ingest.sentry.io/0\",\n * integrations: [\n * Sentry.anrIntegration({\n * anrThreshold: 5000,\n * captureStackTrace: true,\n * pollInterval: 50,\n * }),\n * ],\n * });\n * ```\n */\nexport const anrIntegration = defineIntegration(_anrIntegration) as AnrReturn;\n\n/**\n * Starts the ANR worker thread\n *\n * @returns A function to stop the worker\n */\nasync function _startWorker(\n client: NodeClient,\n // eslint-disable-next-line deprecation/deprecation\n integrationOptions: Partial,\n): Promise<() => void> {\n const dsn = client.getDsn();\n\n if (!dsn) {\n return () => {\n //\n };\n }\n\n const contexts = await getContexts(client);\n\n // These will not be accurate if sent later from the worker thread\n delete contexts.app?.app_memory;\n delete contexts.device?.free_memory;\n\n const initOptions = client.getOptions();\n\n const sdkMetadata = client.getSdkMetadata() || {};\n if (sdkMetadata.sdk) {\n sdkMetadata.sdk.integrations = initOptions.integrations.map(i => i.name);\n }\n\n const options: WorkerStartData = {\n debug: debug.isEnabled(),\n dsn,\n tunnel: initOptions.tunnel,\n environment: initOptions.environment || 'production',\n release: initOptions.release,\n dist: initOptions.dist,\n sdkMetadata,\n appRootPath: integrationOptions.appRootPath,\n pollInterval: integrationOptions.pollInterval || DEFAULT_INTERVAL,\n anrThreshold: integrationOptions.anrThreshold || DEFAULT_HANG_THRESHOLD,\n captureStackTrace: !!integrationOptions.captureStackTrace,\n maxAnrEvents: integrationOptions.maxAnrEvents || 1,\n staticTags: integrationOptions.staticTags || {},\n contexts,\n };\n\n if (options.captureStackTrace) {\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n const timer = setInterval(() => {\n try {\n const currentSession = getIsolationScope().getSession();\n // We need to copy the session object and remove the toJSON method so it can be sent to the worker\n // serialized without making it a SerializedSession\n const session = currentSession ? { ...currentSession, toJSON: undefined } : undefined;\n // message the worker to tell it the main event loop is still running\n worker.postMessage({ session, debugImages: getFilenameToDebugIdMap(initOptions.stackParser) });\n } catch {\n //\n }\n }, options.pollInterval);\n // Timer should not block exit\n timer.unref();\n\n worker.on('message', (msg: string) => {\n if (msg === 'session-ended') {\n log('ANR event sent from ANR worker. Clearing session in this thread.');\n getIsolationScope().setSession(undefined);\n }\n });\n\n worker.once('error', (err: Error) => {\n clearInterval(timer);\n log('ANR worker error', err);\n });\n\n worker.once('exit', (code: number) => {\n clearInterval(timer);\n log('ANR worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n\n return () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n clearInterval(timer);\n };\n}\n\n/**\n * @see {@link disableBlockDetectionForCallback}\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => T): T;\n/**\n * @see {@link disableBlockDetectionForCallback}\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => Promise): Promise;\n/**\n * Temporarily disables ANR detection for the duration of a callback function.\n *\n * This utility function allows you to disable ANR detection during operations that\n * are expected to block the event loop, such as intensive computational tasks or\n * synchronous I/O operations.\n *\n * @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.\n */\nexport function disableAnrDetectionForCallback(callback: () => T | Promise): T | Promise {\n const integration = getClient()?.getIntegrationByName(INTEGRATION_NAME) as AnrInternal | undefined;\n\n if (!integration) {\n return callback();\n }\n\n integration.stopWorker();\n\n const result = callback();\n if (isPromise(result)) {\n return result.finally(() => integration.startWorker());\n }\n\n integration.startWorker();\n return result;\n}\n","import { format } from 'node:util';\nimport type { Log, LogSeverityLevel, ParameterizedString, Scope } from '@sentry/core';\nimport { _INTERNAL_captureLog } from '@sentry/core';\n\n/**\n * Additional metadata to capture the log with.\n */\ninterface CaptureLogMetadata {\n scope?: Scope;\n}\n\ntype CaptureLogArgWithTemplate = [\n messageTemplate: string,\n messageParams: Array,\n attributes?: Log['attributes'],\n metadata?: CaptureLogMetadata,\n];\n\ntype CaptureLogArgWithoutTemplate = [\n message: ParameterizedString,\n attributes?: Log['attributes'],\n metadata?: CaptureLogMetadata,\n];\n\nexport type CaptureLogArgs = CaptureLogArgWithTemplate | CaptureLogArgWithoutTemplate;\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n */\nexport function captureLog(level: LogSeverityLevel, ...args: CaptureLogArgs): void {\n const [messageOrMessageTemplate, paramsOrAttributes, maybeAttributesOrMetadata, maybeMetadata] = args;\n if (Array.isArray(paramsOrAttributes)) {\n // type-casting here because from the type definitions we know that `maybeAttributesOrMetadata` is an attributes object (or undefined)\n const attributes = { ...(maybeAttributesOrMetadata as Log['attributes'] | undefined) };\n attributes['sentry.message.template'] = messageOrMessageTemplate;\n paramsOrAttributes.forEach((param, index) => {\n attributes[`sentry.message.parameter.${index}`] = param;\n });\n const message = format(messageOrMessageTemplate, ...paramsOrAttributes);\n _INTERNAL_captureLog({ level, message, attributes }, maybeMetadata?.scope);\n } else {\n _INTERNAL_captureLog(\n { level, message: messageOrMessageTemplate, attributes: paramsOrAttributes },\n // type-casting here because from the type definitions we know that `maybeAttributesOrMetadata` is a metadata object (or undefined)\n (maybeAttributesOrMetadata as CaptureLogMetadata | undefined)?.scope ?? maybeMetadata?.scope,\n );\n }\n}\n","import { captureLog, type CaptureLogArgs } from './capture';\n\n/**\n * @summary Capture a log with the `trace` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('Starting database connection', {\n * database: 'users',\n * connectionId: 'conn_123'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace('Database connection %s established for %s',\n * ['successful', 'users'],\n * { connectionId: 'conn_123' }\n * );\n * ```\n */\nexport function trace(...args: CaptureLogArgs): void {\n captureLog('trace', ...args);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Cache miss for user profile', {\n * userId: 'user_123',\n * cacheKey: 'profile:user_123'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug('Cache %s for %s: %s',\n * ['miss', 'user profile', 'key not found'],\n * { userId: 'user_123' }\n * );\n * ```\n */\nexport function debug(...args: CaptureLogArgs): void {\n captureLog('debug', ...args);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User profile updated', {\n * userId: 'user_123',\n * updatedFields: ['email', 'preferences']\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info('User %s updated their %s',\n * ['John Doe', 'profile settings'],\n * { userId: 'user_123' }\n * );\n * ```\n */\nexport function info(...args: CaptureLogArgs): void {\n captureLog('info', ...args);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Rate limit approaching', {\n * endpoint: '/api/users',\n * currentRate: '95/100',\n * resetTime: '2024-03-20T10:00:00Z'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn('Rate limit %s for %s: %s',\n * ['approaching', '/api/users', '95/100 requests'],\n * { resetTime: '2024-03-20T10:00:00Z' }\n * );\n * ```\n */\nexport function warn(...args: CaptureLogArgs): void {\n captureLog('warn', ...args);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to process payment', {\n * orderId: 'order_123',\n * errorCode: 'PAYMENT_FAILED',\n * amount: 99.99\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error('Payment processing failed for order %s: %s',\n * ['order_123', 'insufficient funds'],\n * { amount: 99.99 }\n * );\n * ```\n */\nexport function error(...args: CaptureLogArgs): void {\n captureLog('error', ...args);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires the `enableLogs` option to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Database connection pool exhausted', {\n * database: 'users',\n * activeConnections: 100,\n * maxConnections: 100\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal('Database %s: %s connections active',\n * ['connection pool exhausted', '100/100'],\n * { database: 'users' }\n * );\n * ```\n */\nexport function fatal(...args: CaptureLogArgs): void {\n captureLog('fatal', ...args);\n}\n\nexport { fmt } from '@sentry/core';\n","import { monitorEventLoopDelay, performance } from 'perf_hooks';\nimport { _INTERNAL_safeDateNow, _INTERNAL_safeUnref, defineIntegration, metrics } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'NodeRuntimeMetrics';\nconst DEFAULT_INTERVAL_MS = 30_000;\nconst EVENT_LOOP_DELAY_RESOLUTION_MS = 10;\n\nexport interface NodeRuntimeMetricsOptions {\n /**\n * Which metrics to collect.\n *\n * Default on (8 metrics):\n * - `cpuUtilization` — CPU utilization ratio\n * - `memRss` — Resident Set Size (actual memory footprint)\n * - `memHeapUsed` — V8 heap currently in use\n * - `memHeapTotal` — total V8 heap allocated (headroom paired with `memHeapUsed`)\n * - `eventLoopDelayP50` — median event loop delay (baseline latency)\n * - `eventLoopDelayP99` — 99th percentile event loop delay (tail latency / spikes)\n * - `eventLoopUtilization` — fraction of time the event loop was active\n * - `uptime` — process uptime (detect restarts/crashes)\n *\n * Default off (opt-in):\n * - `cpuTime` — raw user/system CPU time in seconds\n * - `memExternal` — external/ArrayBuffer memory (relevant for native addons)\n * - `eventLoopDelayMin` / `eventLoopDelayMax` / `eventLoopDelayMean` / `eventLoopDelayP90`\n */\n collect?: {\n // Default on\n cpuUtilization?: boolean;\n memHeapUsed?: boolean;\n memRss?: boolean;\n eventLoopDelayP99?: boolean;\n eventLoopUtilization?: boolean;\n uptime?: boolean;\n // Default off\n cpuTime?: boolean;\n memHeapTotal?: boolean;\n memExternal?: boolean;\n eventLoopDelayMin?: boolean;\n eventLoopDelayMax?: boolean;\n eventLoopDelayMean?: boolean;\n eventLoopDelayP50?: boolean;\n eventLoopDelayP90?: boolean;\n };\n /**\n * How often to collect metrics, in milliseconds.\n * @default 30000\n */\n collectionIntervalMs?: number;\n}\n\n/**\n * Automatically collects Node.js runtime metrics and emits them to Sentry.\n *\n * @example\n * ```ts\n * Sentry.init({\n * integrations: [\n * Sentry.nodeRuntimeMetricsIntegration(),\n * ],\n * });\n * ```\n */\nexport const nodeRuntimeMetricsIntegration = defineIntegration((options: NodeRuntimeMetricsOptions = {}) => {\n const collectionIntervalMs = options.collectionIntervalMs ?? DEFAULT_INTERVAL_MS;\n const collect = {\n // Default on\n cpuUtilization: true,\n memHeapUsed: true,\n memHeapTotal: true,\n memRss: true,\n eventLoopDelayP50: true,\n eventLoopDelayP99: true,\n eventLoopUtilization: true,\n uptime: true,\n // Default off\n cpuTime: false,\n memExternal: false,\n eventLoopDelayMin: false,\n eventLoopDelayMax: false,\n eventLoopDelayMean: false,\n eventLoopDelayP90: false,\n ...options.collect,\n };\n\n const needsEventLoopDelay =\n collect.eventLoopDelayP99 ||\n collect.eventLoopDelayMin ||\n collect.eventLoopDelayMax ||\n collect.eventLoopDelayMean ||\n collect.eventLoopDelayP50 ||\n collect.eventLoopDelayP90;\n\n const needsCpu = collect.cpuUtilization || collect.cpuTime;\n\n let intervalId: ReturnType | undefined;\n let prevCpuUsage: NodeJS.CpuUsage | undefined;\n let prevElu: ReturnType | undefined;\n let prevFlushTime: number = 0;\n let eventLoopDelayHistogram: ReturnType | undefined;\n\n const resolutionNs = EVENT_LOOP_DELAY_RESOLUTION_MS * 1e6;\n const nsToS = (ns: number): number => Math.max(0, (ns - resolutionNs) / 1e9);\n\n const METRIC_ATTRIBUTES = { attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n const METRIC_ATTRIBUTES_BYTE = { unit: 'byte', attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n const METRIC_ATTRIBUTES_SECOND = { unit: 'second', attributes: { 'sentry.origin': 'auto.node.runtime_metrics' } };\n\n function collectMetrics(): void {\n const now = _INTERNAL_safeDateNow();\n const elapsed = now - prevFlushTime;\n\n if (needsCpu && prevCpuUsage !== undefined) {\n const delta = process.cpuUsage(prevCpuUsage);\n\n if (collect.cpuTime) {\n metrics.gauge('node.runtime.cpu.user', delta.user / 1e6, METRIC_ATTRIBUTES_SECOND);\n metrics.gauge('node.runtime.cpu.system', delta.system / 1e6, METRIC_ATTRIBUTES_SECOND);\n }\n if (collect.cpuUtilization && elapsed > 0) {\n // Ratio of CPU time to wall-clock time. Can exceed 1.0 on multi-core systems.\n // TODO: In cluster mode, add a runtime_id/process_id attribute to disambiguate per-worker metrics.\n metrics.gauge(\n 'node.runtime.cpu.utilization',\n (delta.user + delta.system) / (elapsed * 1000),\n METRIC_ATTRIBUTES,\n );\n }\n\n prevCpuUsage = process.cpuUsage();\n }\n\n if (collect.memRss || collect.memHeapUsed || collect.memHeapTotal || collect.memExternal) {\n const mem = process.memoryUsage();\n if (collect.memRss) {\n metrics.gauge('node.runtime.mem.rss', mem.rss, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memHeapUsed) {\n metrics.gauge('node.runtime.mem.heap_used', mem.heapUsed, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memHeapTotal) {\n metrics.gauge('node.runtime.mem.heap_total', mem.heapTotal, METRIC_ATTRIBUTES_BYTE);\n }\n if (collect.memExternal) {\n metrics.gauge('node.runtime.mem.external', mem.external, METRIC_ATTRIBUTES_BYTE);\n metrics.gauge('node.runtime.mem.array_buffers', mem.arrayBuffers, METRIC_ATTRIBUTES_BYTE);\n }\n }\n\n if (needsEventLoopDelay && eventLoopDelayHistogram) {\n if (collect.eventLoopDelayMin) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.min',\n nsToS(eventLoopDelayHistogram.min),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayMax) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.max',\n nsToS(eventLoopDelayHistogram.max),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayMean) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.mean',\n nsToS(eventLoopDelayHistogram.mean),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP50) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p50',\n nsToS(eventLoopDelayHistogram.percentile(50)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP90) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p90',\n nsToS(eventLoopDelayHistogram.percentile(90)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n if (collect.eventLoopDelayP99) {\n metrics.gauge(\n 'node.runtime.event_loop.delay.p99',\n nsToS(eventLoopDelayHistogram.percentile(99)),\n METRIC_ATTRIBUTES_SECOND,\n );\n }\n\n eventLoopDelayHistogram.reset();\n }\n\n if (collect.eventLoopUtilization && prevElu !== undefined) {\n const currentElu = performance.eventLoopUtilization();\n const delta = performance.eventLoopUtilization(currentElu, prevElu);\n metrics.gauge('node.runtime.event_loop.utilization', delta.utilization, METRIC_ATTRIBUTES);\n prevElu = currentElu;\n }\n\n if (collect.uptime && elapsed > 0) {\n metrics.count('node.runtime.process.uptime', elapsed / 1000, METRIC_ATTRIBUTES_SECOND);\n }\n\n prevFlushTime = now;\n }\n\n return {\n name: INTEGRATION_NAME,\n\n setup(): void {\n if (needsEventLoopDelay) {\n // Disable any previous histogram before overwriting (prevents native resource leak on re-init).\n eventLoopDelayHistogram?.disable();\n try {\n eventLoopDelayHistogram = monitorEventLoopDelay({ resolution: EVENT_LOOP_DELAY_RESOLUTION_MS });\n eventLoopDelayHistogram.enable();\n } catch {\n // Not available in all runtimes (e.g. Bun throws NotImplementedError).\n eventLoopDelayHistogram = undefined;\n }\n }\n\n // Prime baselines before the first collection interval.\n if (needsCpu) {\n prevCpuUsage = process.cpuUsage();\n }\n if (collect.eventLoopUtilization) {\n prevElu = performance.eventLoopUtilization();\n }\n prevFlushTime = _INTERNAL_safeDateNow();\n\n // Guard against double setup (e.g. re-init).\n if (intervalId) {\n clearInterval(intervalId);\n }\n intervalId = _INTERNAL_safeUnref(setInterval(collectMetrics, collectionIntervalMs));\n },\n };\n});\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport type { LogSeverityLevel } from '@sentry/core';\nimport { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { captureLog } from '../logs/capture';\n\nconst DEFAULT_CAPTURED_LEVELS: Array = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n// See: https://github.com/winstonjs/triple-beam\nconst LEVEL_SYMBOL = Symbol.for('level');\nconst MESSAGE_SYMBOL = Symbol.for('message');\nconst SPLAT_SYMBOL = Symbol.for('splat');\n\n/**\n * Options for the Sentry Winston transport.\n */\ninterface WinstonTransportOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport, {\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * ```\n */\n levels?: Array;\n\n /**\n * Use this option to map custom levels to Sentry log severity levels.\n *\n * @example\n * ```ts\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport, {\n * customLevelMap: {\n * myCustomLevel: 'info',\n * customError: 'error',\n * },\n * });\n * ```\n */\n customLevelMap?: Record;\n}\n\n/**\n * Creates a new Sentry Winston transport that fowards logs to Sentry. Requires the `enableLogs` option to be enabled.\n *\n * Supports Winston 3.x.x.\n *\n * @param TransportClass - The Winston transport class to extend.\n * @returns The extended transport class.\n *\n * @example\n * ```ts\n * const winston = require('winston');\n * const Transport = require('winston-transport');\n *\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport);\n *\n * const logger = winston.createLogger({\n * transports: [new SentryWinstonTransport()],\n * });\n * ```\n */\nexport function createSentryWinstonTransport(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TransportClass: new (options?: any) => TransportStreamInstance,\n sentryWinstonOptions?: WinstonTransportOptions,\n): typeof TransportClass {\n // @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass\n class SentryWinstonTransport extends TransportClass {\n private _levels: Set;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public constructor(options?: any) {\n super(options);\n this._levels = new Set(sentryWinstonOptions?.levels ?? DEFAULT_CAPTURED_LEVELS);\n }\n\n /**\n * Forwards a winston log to the Sentry SDK.\n */\n public log(info: unknown, callback: () => void): void {\n try {\n setImmediate(() => {\n // @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass\n this.emit('logged', info);\n });\n\n if (!isObject(info)) {\n return;\n }\n\n const levelFromSymbol = info[LEVEL_SYMBOL];\n\n // See: https://github.com/winstonjs/winston?tab=readme-ov-file#streams-objectmode-and-info-objects\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { level, message, timestamp, ...attributes } = info;\n // Remove all symbols from the remaining attributes\n attributes[LEVEL_SYMBOL] = undefined;\n attributes[MESSAGE_SYMBOL] = undefined;\n attributes[SPLAT_SYMBOL] = undefined;\n\n const customLevel = sentryWinstonOptions?.customLevelMap?.[levelFromSymbol as string];\n const winstonLogLevel = WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[levelFromSymbol as string];\n const logSeverityLevel = customLevel ?? winstonLogLevel ?? 'info';\n\n if (this._levels.has(logSeverityLevel)) {\n captureLog(logSeverityLevel, message as string, {\n ...attributes,\n 'sentry.origin': 'auto.log.winston',\n });\n } else if (!customLevel && !winstonLogLevel) {\n DEBUG_BUILD &&\n debug.log(\n `Winston log level ${levelFromSymbol} is not captured by Sentry. Please add ${levelFromSymbol} to the \"customLevelMap\" option of the Sentry Winston transport.`,\n );\n }\n } catch {\n // do nothing\n }\n\n if (callback) {\n callback();\n }\n }\n }\n\n return SentryWinstonTransport as typeof TransportClass;\n}\n\nfunction isObject(anything: unknown): anything is Record {\n return typeof anything === 'object' && anything != null;\n}\n\n// npm\n// {\n// error: 0,\n// warn: 1,\n// info: 2,\n// http: 3,\n// verbose: 4,\n// debug: 5,\n// silly: 6\n// }\n//\n// syslog\n// {\n// emerg: 0,\n// alert: 1,\n// crit: 2,\n// error: 3,\n// warning: 4,\n// notice: 5,\n// info: 6,\n// debug: 7,\n// }\nconst WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record = {\n // npm\n silly: 'trace',\n // npm and syslog\n debug: 'debug',\n // npm\n verbose: 'debug',\n // npm\n http: 'debug',\n // npm and syslog\n info: 'info',\n // syslog\n notice: 'info',\n // npm\n warn: 'warn',\n // syslog\n warning: 'warn',\n // npm and syslog\n error: 'error',\n // syslog\n emerg: 'fatal',\n // syslog\n alert: 'fatal',\n // syslog\n crit: 'fatal',\n};\n","import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport type { Integration, IntegrationFn, LogSeverityLevel } from '@sentry/core';\nimport {\n _INTERNAL_captureLog,\n addExceptionMechanism,\n captureException,\n captureMessage,\n defineIntegration,\n severityLevelFromString,\n withScope,\n} from '@sentry/core';\n\nconst SENTRY_TRACK_SYMBOL = Symbol('sentry-track-pino-logger');\n\ntype LevelMapping = {\n // Fortunately pino uses the same levels as Sentry\n labels: { [level: number]: LogSeverityLevel };\n};\n\ntype Pino = {\n [key: symbol]: unknown;\n levels: LevelMapping;\n [SENTRY_TRACK_SYMBOL]?: 'track' | 'ignore';\n};\n\n/**\n * Gets a custom Pino key from a logger instance by searching for the symbol.\n * Pino uses non-global symbols like Symbol('pino.messageKey'): https://github.com/pinojs/pino/blob/8a816c0b1f72de5ae9181f3bb402109b66f7d812/lib/symbols.js\n */\nfunction getPinoKey(logger: Pino, symbolName: string, defaultKey: string): string {\n const symbols = Object.getOwnPropertySymbols(logger);\n const symbolString = `Symbol(${symbolName})`;\n for (const sym of symbols) {\n if (sym.toString() === symbolString) {\n const value = logger[sym];\n return typeof value === 'string' ? value : defaultKey;\n }\n }\n return defaultKey;\n}\n\ntype MergeObject = {\n [key: string]: unknown;\n err?: Error;\n};\n\ntype PinoHookArgs = [MergeObject, string, number];\n\ntype PinoOptions = {\n /**\n * Automatically instrument all Pino loggers.\n *\n * When set to `false`, only loggers marked with `pinoIntegration.trackLogger(logger)` will be captured.\n *\n * @default true\n */\n autoInstrument: boolean;\n /**\n * Options to enable capturing of error events.\n */\n error: {\n /**\n * Levels that trigger capturing of events.\n *\n * @default []\n */\n levels: LogSeverityLevel[];\n /**\n * By default, Sentry will mark captured errors as handled.\n * Set this to `false` if you want to mark them as unhandled instead.\n *\n * @default true\n */\n handled: boolean;\n };\n /**\n * Options to enable capturing of logs.\n */\n log: {\n /**\n * Levels that trigger capturing of logs. Logs are only captured if\n * `enableLogs` is enabled.\n *\n * @default [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"fatal\"]\n */\n levels: LogSeverityLevel[];\n };\n};\n\nconst DEFAULT_OPTIONS: PinoOptions = {\n autoInstrument: true,\n error: { levels: [], handled: true },\n log: { levels: ['trace', 'debug', 'info', 'warn', 'error', 'fatal'] },\n};\n\ntype DeepPartial = {\n [P in keyof T]?: T[P] extends object ? Partial : T[P];\n};\n\ntype PinoResult = {\n level?: string;\n time?: string;\n pid?: number;\n hostname?: string;\n} & Record;\n\nfunction stripIgnoredFields(result: PinoResult): PinoResult {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { level, time, pid, hostname, ...rest } = result;\n return rest;\n}\n\nconst _pinoIntegration = defineIntegration((userOptions: DeepPartial = {}) => {\n const options: PinoOptions = {\n autoInstrument: userOptions.autoInstrument !== false,\n error: { ...DEFAULT_OPTIONS.error, ...userOptions.error },\n log: { ...DEFAULT_OPTIONS.log, ...userOptions.log },\n };\n\n function shouldTrackLogger(logger: Pino): boolean {\n const override = logger[SENTRY_TRACK_SYMBOL];\n return override === 'track' || (override !== 'ignore' && options.autoInstrument);\n }\n\n return {\n name: 'Pino',\n setup: client => {\n const enableLogs = !!client.getOptions().enableLogs;\n\n const integratedChannel = diagnosticsChannel.tracingChannel('pino_asJson');\n\n function onPinoStart(self: Pino, args: PinoHookArgs, result: PinoResult): void {\n if (!shouldTrackLogger(self)) {\n return;\n }\n\n const resultObj = stripIgnoredFields(result);\n\n const [captureObj, message, levelNumber] = args;\n const level = self?.levels?.labels?.[levelNumber] || 'info';\n const messageKey = getPinoKey(self, 'pino.messageKey', 'msg');\n const logMessage = message || (resultObj?.[messageKey] as string | undefined) || '';\n\n if (enableLogs && options.log.levels.includes(level)) {\n const attributes: Record = {\n ...resultObj,\n 'sentry.origin': 'auto.log.pino',\n 'pino.logger.level': levelNumber,\n };\n\n _INTERNAL_captureLog({ level, message: logMessage, attributes });\n }\n\n if (options.error.levels.includes(level)) {\n const captureContext = {\n level: severityLevelFromString(level),\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'pino';\n\n addExceptionMechanism(event, {\n handled: options.error.handled,\n type: 'auto.log.pino',\n });\n\n return event;\n });\n\n const error = captureObj[getPinoKey(self, 'pino.errorKey', 'err')];\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n captureMessage(logMessage, captureContext);\n });\n }\n }\n\n integratedChannel.end.subscribe(data => {\n const {\n instance,\n arguments: args,\n result,\n } = data as { instance: Pino; arguments: PinoHookArgs; result: string };\n onPinoStart(instance, args, JSON.parse(result));\n });\n },\n };\n}) satisfies IntegrationFn;\n\ninterface PinoIntegrationFunction {\n (userOptions?: DeepPartial): Integration;\n /**\n * Marks a Pino logger to be tracked by the Pino integration.\n *\n * @param logger A Pino logger instance.\n */\n trackLogger(logger: unknown): void;\n /**\n * Marks a Pino logger to be ignored by the Pino integration.\n *\n * @param logger A Pino logger instance.\n */\n untrackLogger(logger: unknown): void;\n}\n\n/**\n * Integration for Pino logging library.\n * Captures Pino logs as Sentry logs and optionally captures some log levels as events.\n *\n * By default, all Pino loggers will be captured. To ignore a specific logger, use `pinoIntegration.untrackLogger(logger)`.\n *\n * If you disable automatic instrumentation with `autoInstrument: false`, you can mark specific loggers to be tracked with `pinoIntegration.trackLogger(logger)`.\n *\n * Requires Pino >=v8.0.0 and Node >=20.6.0 or >=18.19.0\n */\nexport const pinoIntegration = Object.assign(_pinoIntegration, {\n trackLogger(logger: unknown): void {\n if (logger && typeof logger === 'object' && 'levels' in logger) {\n (logger as Pino)[SENTRY_TRACK_SYMBOL] = 'track';\n }\n },\n untrackLogger(logger: unknown): void {\n if (logger && typeof logger === 'object' && 'levels' in logger) {\n (logger as Pino)[SENTRY_TRACK_SYMBOL] = 'ignore';\n }\n },\n}) as PinoIntegrationFunction;\n","import type { Span } from '@opentelemetry/api';\nimport type { SpanOrigin } from '@sentry/core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\n\n/** Adds an origin to an OTEL Span. */\nexport function addOriginToSpan(span: Span, origin: SpanOrigin): void {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n}\n","/** Build a full URL from request options or a ClientRequest. */\nexport function getRequestUrl(requestOptions: {\n protocol?: string | null;\n hostname?: string | null;\n host?: string | null;\n port?: string | number | null;\n path?: string | null;\n}): string {\n const protocol = requestOptions.protocol || '';\n const hostname = requestOptions.hostname || requestOptions.host || '';\n // Don't log standard :80 (http) and :443 (https) ports to reduce the noise\n // Also don't add port if the hostname already includes a port\n const port =\n !requestOptions.port || requestOptions.port === 80 || requestOptions.port === 443 || /^(.*):(\\d+)$/.test(hostname)\n ? ''\n : `:${requestOptions.port}`;\n const path = requestOptions.path ? requestOptions.path : '/';\n return `${protocol}//${hostname}${port}${path}`;\n}\n","const replacements: [string, string][] = [\n ['january', '1'],\n ['february', '2'],\n ['march', '3'],\n ['april', '4'],\n ['may', '5'],\n ['june', '6'],\n ['july', '7'],\n ['august', '8'],\n ['september', '9'],\n ['october', '10'],\n ['november', '11'],\n ['december', '12'],\n ['jan', '1'],\n ['feb', '2'],\n ['mar', '3'],\n ['apr', '4'],\n ['may', '5'],\n ['jun', '6'],\n ['jul', '7'],\n ['aug', '8'],\n ['sep', '9'],\n ['oct', '10'],\n ['nov', '11'],\n ['dec', '12'],\n ['sunday', '0'],\n ['monday', '1'],\n ['tuesday', '2'],\n ['wednesday', '3'],\n ['thursday', '4'],\n ['friday', '5'],\n ['saturday', '6'],\n ['sun', '0'],\n ['mon', '1'],\n ['tue', '2'],\n ['wed', '3'],\n ['thu', '4'],\n ['fri', '5'],\n ['sat', '6'],\n];\n\n/**\n * Replaces names in cron expressions\n */\nexport function replaceCronNames(cronExpression: string): string {\n return replacements.reduce(\n // oxlint-disable-next-line sdk/no-regexp-constructor\n (acc, [name, replacement]) => acc.replace(new RegExp(name, 'gi'), replacement),\n cronExpression,\n );\n}\n","import { captureException, withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport type CronJobParams = {\n cronTime: string | Date;\n onTick: (context: unknown, onComplete?: unknown) => void | Promise;\n onComplete?: () => void | Promise;\n start?: boolean | null;\n context?: unknown;\n runOnInit?: boolean | null;\n unrefTimeout?: boolean | null;\n} & (\n | {\n timeZone?: string | null;\n utcOffset?: never;\n }\n | {\n timeZone?: never;\n utcOffset?: number | null;\n }\n);\n\nexport type CronJob = {\n //\n};\n\nexport type CronJobConstructor = {\n from: (param: CronJobParams) => CronJob;\n\n new (\n cronTime: CronJobParams['cronTime'],\n onTick: CronJobParams['onTick'],\n onComplete?: CronJobParams['onComplete'],\n start?: CronJobParams['start'],\n timeZone?: CronJobParams['timeZone'],\n context?: CronJobParams['context'],\n runOnInit?: CronJobParams['runOnInit'],\n utcOffset?: null,\n unrefTimeout?: CronJobParams['unrefTimeout'],\n ): CronJob;\n new (\n cronTime: CronJobParams['cronTime'],\n onTick: CronJobParams['onTick'],\n onComplete?: CronJobParams['onComplete'],\n start?: CronJobParams['start'],\n timeZone?: null,\n context?: CronJobParams['context'],\n runOnInit?: CronJobParams['runOnInit'],\n utcOffset?: CronJobParams['utcOffset'],\n unrefTimeout?: CronJobParams['unrefTimeout'],\n ): CronJob;\n};\n\nconst ERROR_TEXT = 'Automatic instrumentation of CronJob only supports crontab string';\n\n/**\n * Instruments the `cron` library to send a check-in event to Sentry for each job execution.\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import { CronJob } from 'cron';\n *\n * const CronJobWithCheckIn = Sentry.cron.instrumentCron(CronJob, 'my-cron-job');\n *\n * // use the constructor\n * const job = new CronJobWithCheckIn('* * * * *', () => {\n * console.log('You will see this message every minute');\n * });\n *\n * // or from\n * const job = CronJobWithCheckIn.from({ cronTime: '* * * * *', onTick: () => {\n * console.log('You will see this message every minute');\n * });\n * ```\n */\nexport function instrumentCron(lib: T & CronJobConstructor, monitorSlug: string): T {\n let jobScheduled = false;\n\n return new Proxy(lib, {\n construct(target, args: ConstructorParameters) {\n const [cronTime, onTick, onComplete, start, timeZone, ...rest] = args;\n\n if (typeof cronTime !== 'string') {\n throw new Error(ERROR_TEXT);\n }\n\n if (jobScheduled) {\n throw new Error(`A job named '${monitorSlug}' has already been scheduled`);\n }\n\n jobScheduled = true;\n\n const cronString = replaceCronNames(cronTime);\n\n async function monitoredTick(context: unknown, onComplete?: unknown): Promise {\n return withMonitor(\n monitorSlug,\n async () => {\n try {\n await onTick(context, onComplete);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.cron.instrumentCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: cronString },\n timezone: timeZone || undefined,\n },\n );\n }\n\n return new target(cronTime, monitoredTick, onComplete, start, timeZone, ...rest);\n },\n get(target, prop: keyof CronJobConstructor) {\n if (prop === 'from') {\n return (param: CronJobParams) => {\n const { cronTime, onTick, timeZone } = param;\n\n if (typeof cronTime !== 'string') {\n throw new Error(ERROR_TEXT);\n }\n\n if (jobScheduled) {\n throw new Error(`A job named '${monitorSlug}' has already been scheduled`);\n }\n\n jobScheduled = true;\n\n const cronString = replaceCronNames(cronTime);\n\n param.onTick = async (context: unknown, onComplete?: unknown) => {\n return withMonitor(\n monitorSlug,\n async () => {\n try {\n await onTick(context, onComplete);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.cron.instrumentCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: cronString },\n timezone: timeZone || undefined,\n },\n );\n };\n\n return target.from(param);\n };\n } else {\n return target[prop];\n }\n },\n });\n}\n","import { captureException, type MonitorConfig, withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport interface NodeCronOptions {\n name: string;\n timezone?: string;\n}\n\nexport interface NodeCron {\n schedule: (\n cronExpression: string,\n callback: (context?: unknown) => void,\n options: NodeCronOptions | undefined,\n ) => unknown;\n}\n\n/**\n * Wraps the `node-cron` library with check-in monitoring.\n *\n * ```ts\n * import * as Sentry from \"@sentry/node\";\n * import * as cron from \"node-cron\";\n *\n * const cronWithCheckIn = Sentry.cron.instrumentNodeCron(cron);\n *\n * cronWithCheckIn.schedule(\n * \"* * * * *\",\n * () => {\n * console.log(\"running a task every minute\");\n * },\n * { name: \"my-cron-job\" },\n * );\n * ```\n */\nexport function instrumentNodeCron(\n lib: Partial & T,\n monitorConfig: Pick = {},\n): T {\n return new Proxy(lib, {\n get(target, prop) {\n if (prop === 'schedule' && target.schedule) {\n // When 'get' is called for schedule, return a proxied version of the schedule function\n return new Proxy(target.schedule, {\n apply(target, thisArg, argArray: Parameters) {\n const [expression, callback, options] = argArray;\n\n const name = options?.name;\n const timezone = options?.timezone;\n\n if (!name) {\n throw new Error('Missing \"name\" for scheduled job. A name is required for Sentry check-in monitoring.');\n }\n\n const monitoredCallback = async (...args: Parameters): Promise => {\n return withMonitor(\n name,\n async () => {\n // We have to manually catch here and capture the exception because node-cron swallows errors\n // https://github.com/node-cron/node-cron/issues/399\n try {\n // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n return await callback(...args);\n } catch (e) {\n captureException(e, {\n mechanism: {\n handled: false,\n type: 'auto.function.node-cron.instrumentNodeCron',\n },\n });\n throw e;\n }\n },\n {\n schedule: { type: 'crontab', value: replaceCronNames(expression) },\n timezone,\n ...monitorConfig,\n },\n );\n };\n\n return target.apply(thisArg, [expression, monitoredCallback, options]);\n },\n });\n } else {\n return target[prop as keyof T];\n }\n },\n });\n}\n","import { withMonitor } from '@sentry/core';\nimport { replaceCronNames } from './common';\n\nexport interface NodeSchedule {\n scheduleJob(\n nameOrExpression: string | Date | object,\n expressionOrCallback: string | Date | object | (() => void),\n callback?: () => void,\n ): unknown;\n}\n\n/**\n * Instruments the `node-schedule` library to send a check-in event to Sentry for each job execution.\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n * import * as schedule from 'node-schedule';\n *\n * const scheduleWithCheckIn = Sentry.cron.instrumentNodeSchedule(schedule);\n *\n * const job = scheduleWithCheckIn.scheduleJob('my-cron-job', '* * * * *', () => {\n * console.log('You will see this message every minute');\n * });\n * ```\n */\nexport function instrumentNodeSchedule(lib: T & NodeSchedule): T {\n return new Proxy(lib, {\n get(target, prop: keyof NodeSchedule) {\n if (prop === 'scheduleJob') {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n return new Proxy(target.scheduleJob, {\n apply(target, thisArg, argArray: Parameters) {\n const [nameOrExpression, expressionOrCallback, callback] = argArray;\n\n if (\n typeof nameOrExpression !== 'string' ||\n typeof expressionOrCallback !== 'string' ||\n typeof callback !== 'function'\n ) {\n throw new Error(\n \"Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string\",\n );\n }\n\n const monitorSlug = nameOrExpression;\n const expression = expressionOrCallback;\n\n async function monitoredCallback(): Promise {\n return withMonitor(\n monitorSlug,\n async () => {\n // oxlint-disable-next-line typescript/await-thenable -- callback may be async at runtime\n await callback?.();\n },\n {\n schedule: { type: 'crontab', value: replaceCronNames(expression) },\n },\n );\n }\n\n return target.apply(thisArg, [monitorSlug, expression, monitoredCallback]);\n },\n });\n }\n\n return target[prop];\n },\n });\n}\n","import { instrumentCron } from './cron';\nimport { instrumentNodeCron } from './node-cron';\nimport { instrumentNodeSchedule } from './node-schedule';\n\n/** Methods to instrument cron libraries for Sentry check-ins */\nexport const cron = {\n instrumentCron,\n instrumentNodeCron,\n instrumentNodeSchedule,\n};\n","import type { ClientRequest, IncomingMessage, RequestOptions, ServerResponse } from 'node:http';\nimport { diag } from '@opentelemetry/api';\nimport type { HttpInstrumentationConfig } from '@opentelemetry/instrumentation-http';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport type { Span } from '@sentry/core';\nimport {\n defineIntegration,\n getClient,\n hasSpansEnabled,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n stripDataUrlContent,\n} from '@sentry/core';\nimport type { HTTPModuleRequestIncomingMessage, NodeClient, SentryHttpInstrumentationOptions } from '@sentry/node-core';\nimport {\n addOriginToSpan,\n generateInstrumentOnce,\n getRequestUrl,\n httpServerIntegration,\n httpServerSpansIntegration,\n NODE_VERSION,\n SentryHttpInstrumentation,\n} from '@sentry/node-core';\nimport type { NodeClientOptions } from '../types';\n\nconst INTEGRATION_NAME = 'Http';\n\nconst INSTRUMENTATION_NAME = '@opentelemetry_sentry-patched/instrumentation-http';\n\n// The `http.client.request.created` diagnostics channel, needed for trace propagation,\n// was added in Node 22.12.0 (backported from 23.2.0). Earlier 22.x versions don't have it.\nconst FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL =\n (NODE_VERSION.major === 22 && NODE_VERSION.minor >= 12) ||\n (NODE_VERSION.major === 23 && NODE_VERSION.minor >= 2) ||\n NODE_VERSION.major >= 24;\n\ninterface HttpOptions {\n /**\n * Whether breadcrumbs should be recorded for outgoing requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * If set to false, do not emit any spans.\n * This will ensure that the default HttpInstrumentation from OpenTelemetry is not setup,\n * only the Sentry-specific instrumentation for request isolation is applied.\n *\n * If `skipOpenTelemetrySetup: true` is configured, this defaults to `false`, otherwise it defaults to `true`.\n */\n spans?: boolean;\n\n /**\n * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.\n * Read more about Release Health: https://docs.sentry.io/product/releases/health/\n *\n * Defaults to `true`.\n */\n trackIncomingRequestsAsSessions?: boolean;\n\n /**\n * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.\n *\n * Defaults to `60000` (60s).\n */\n sessionFlushingDelayMS?: number;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing HTTP requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's HttpInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n *\n * The `url` param contains the entire URL, including query string (if any), protocol, host, etc. of the outgoing request.\n * For example: `'https://someService.com/users/details?id=123'`\n *\n * The `request` param contains the original {@type RequestOptions} object used to make the outgoing request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreOutgoingRequests?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests to URLs where the given callback returns `true`.\n * Spans will be non recording if tracing is disabled.\n *\n * The `urlPath` param consists of the URL path and query string (if any) of the incoming request.\n * For example: `'/users/details?id=123'`\n *\n * The `request` param contains the original {@type IncomingMessage} object of the incoming request.\n * You can use it to filter on additional properties like method, headers, etc.\n */\n ignoreIncomingRequests?: (urlPath: string, request: IncomingMessage) => boolean;\n\n /**\n * A hook that can be used to mutate the span for incoming requests.\n * This is triggered after the span is created, but before it is recorded.\n */\n incomingRequestSpanHook?: (span: Span, request: IncomingMessage, response: ServerResponse) => void;\n\n /**\n * Whether to automatically ignore common static asset requests like favicon.ico, robots.txt, etc.\n * This helps reduce noise in your transactions.\n *\n * @default `true`\n */\n ignoreStaticAssets?: boolean;\n\n /**\n * Do not capture spans for incoming HTTP requests with the given status codes.\n * By default, spans with some 3xx and 4xx status codes are ignored (see @default).\n * Expects an array of status codes or a range of status codes, e.g. [[300,399], 404] would ignore 3xx and 404 status codes.\n *\n * @default `[[401, 404], [301, 303], [305, 399]]`\n */\n dropSpansForIncomingRequestStatusCodes?: (number | [number, number])[];\n\n /**\n * Do not capture the request body for incoming HTTP requests to URLs where the given callback returns `true`.\n * This can be useful for long running requests where the body is not needed and we want to avoid capturing it.\n *\n * @param url Contains the entire URL, including query string (if any), protocol, host, etc. of the incoming request.\n * @param request Contains the {@type RequestOptions} object used to make the incoming request.\n */\n ignoreIncomingRequestBody?: (url: string, request: RequestOptions) => boolean;\n\n /**\n * Controls the maximum size of incoming HTTP request bodies attached to events.\n *\n * Available options:\n * - 'none': No request bodies will be attached\n * - 'small': Request bodies up to 1,000 bytes will be attached\n * - 'medium': Request bodies up to 10,000 bytes will be attached (default)\n * - 'always': Request bodies will always be attached\n *\n * Note that even with 'always' setting, bodies exceeding 1MB will never be attached\n * for performance and security reasons.\n *\n * @default 'medium'\n */\n maxIncomingRequestBodySize?: 'none' | 'small' | 'medium' | 'always';\n\n /**\n * If true, do not generate spans for incoming requests at all.\n * This is used by Remix to avoid generating spans for incoming requests, as it generates its own spans.\n */\n disableIncomingRequestSpans?: boolean;\n\n /**\n * Additional instrumentation options that are passed to the underlying HttpInstrumentation.\n */\n instrumentation?: {\n requestHook?: (span: Span, req: ClientRequest | HTTPModuleRequestIncomingMessage) => void;\n responseHook?: (span: Span, response: HTTPModuleRequestIncomingMessage | ServerResponse) => void;\n applyCustomAttributesOnSpan?: (\n span: Span,\n request: ClientRequest | HTTPModuleRequestIncomingMessage,\n response: HTTPModuleRequestIncomingMessage | ServerResponse,\n ) => void;\n };\n}\n\nexport const instrumentSentryHttp = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n options => {\n return new SentryHttpInstrumentation(options);\n },\n);\n\nexport const instrumentOtelHttp = generateInstrumentOnce(INTEGRATION_NAME, config => {\n const instrumentation = new HttpInstrumentation({\n ...config,\n // This is hard-coded and can never be overridden by the user\n disableIncomingRequestInstrumentation: true,\n });\n\n // We want to update the logger namespace so we can better identify what is happening here\n try {\n instrumentation['_diag'] = diag.createComponentLogger({\n namespace: INSTRUMENTATION_NAME,\n });\n // @ts-expect-error We are writing a read-only property here...\n instrumentation.instrumentationName = INSTRUMENTATION_NAME;\n } catch {\n // ignore errors here...\n }\n\n // The OTel HttpInstrumentation (>=0.213.0) has a guard (`_httpPatched`/`_httpsPatched`)\n // that prevents patching `http`/`https` when loaded by both CJS `require()` and ESM `import`.\n // In environments like AWS Lambda, the runtime loads `http` via CJS first (for the Runtime API),\n // and then the user's ESM handler imports `node:http`. The guard blocks ESM patching after CJS,\n // which breaks HTTP spans for ESM handlers. We disable this guard to allow both to be patched.\n // TODO(andrei): Remove once https://github.com/open-telemetry/opentelemetry-js/issues/6489 is fixed.\n try {\n const noopDescriptor = { get: () => false, set: () => {} };\n Object.defineProperty(instrumentation, '_httpPatched', noopDescriptor);\n Object.defineProperty(instrumentation, '_httpsPatched', noopDescriptor);\n } catch {\n // ignore errors here...\n }\n\n return instrumentation;\n});\n\n/** Exported only for tests. */\nexport function _shouldUseOtelHttpInstrumentation(\n options: HttpOptions,\n clientOptions: Partial = {},\n): boolean {\n // If `spans` is passed in, it takes precedence\n // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n if (typeof options.spans === 'boolean') {\n return options.spans;\n }\n\n if (clientOptions.skipOpenTelemetrySetup) {\n return false;\n }\n\n // IMPORTANT: We only disable span instrumentation when spans are not enabled _and_ we are on a Node version\n // that fully supports the necessary diagnostics channels for trace propagation\n if (!hasSpansEnabled(clientOptions) && FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL) {\n return false;\n }\n\n return true;\n}\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs and spans for outgoing HTTP requests which will be attached to the currently active span.\n */\nexport const httpIntegration = defineIntegration((options: HttpOptions = {}) => {\n const spans = options.spans ?? true;\n const disableIncomingRequestSpans = options.disableIncomingRequestSpans;\n\n const serverOptions = {\n sessions: options.trackIncomingRequestsAsSessions,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n ignoreRequestBody: options.ignoreIncomingRequestBody,\n maxRequestBodySize: options.maxIncomingRequestBodySize,\n } satisfies Parameters[0];\n\n const serverSpansOptions = {\n ignoreIncomingRequests: options.ignoreIncomingRequests,\n ignoreStaticAssets: options.ignoreStaticAssets,\n ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n instrumentation: options.instrumentation,\n onSpanCreated: options.incomingRequestSpanHook,\n } satisfies Parameters[0];\n\n const server = httpServerIntegration(serverOptions);\n const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n const enableServerSpans = spans && !disableIncomingRequestSpans;\n\n return {\n name: INTEGRATION_NAME,\n setup(client: NodeClient) {\n const clientOptions = client.getOptions();\n\n if (enableServerSpans && hasSpansEnabled(clientOptions)) {\n serverSpans.setup(client);\n }\n },\n setupOnce() {\n const clientOptions = (getClient()?.getOptions() || {}) satisfies Partial;\n const useOtelHttpInstrumentation = _shouldUseOtelHttpInstrumentation(options, clientOptions);\n\n server.setupOnce();\n\n const sentryHttpInstrumentationOptions = {\n breadcrumbs: options.breadcrumbs,\n propagateTraceInOutgoingRequests:\n typeof options.tracePropagation === 'boolean'\n ? options.tracePropagation\n : FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL || !useOtelHttpInstrumentation,\n createSpansForOutgoingRequests: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n spans: options.spans,\n ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n outgoingRequestHook: (span: Span, request: ClientRequest) => {\n // Sanitize data URLs to prevent long base64 strings in span attributes\n const url = getRequestUrl(request);\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n span.setAttribute('http.url', sanitizedUrl);\n span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n span.updateName(`${request.method || 'GET'} ${sanitizedUrl}`);\n }\n\n options.instrumentation?.requestHook?.(span, request);\n },\n outgoingResponseHook: options.instrumentation?.responseHook,\n outgoingRequestApplyCustomAttributes: options.instrumentation?.applyCustomAttributesOnSpan,\n } satisfies SentryHttpInstrumentationOptions;\n\n // This is Sentry-specific instrumentation for outgoing request breadcrumbs & trace propagation\n instrumentSentryHttp(sentryHttpInstrumentationOptions);\n\n // This is the \"regular\" OTEL instrumentation that emits outgoing request spans\n if (useOtelHttpInstrumentation) {\n const instrumentationConfig = getConfigWithDefaults(options);\n instrumentOtelHttp(instrumentationConfig);\n }\n },\n processEvent(event) {\n // Note: We always run this, even if spans are disabled\n // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n return serverSpans.processEvent(event);\n },\n };\n});\n\nfunction getConfigWithDefaults(options: Partial = {}): HttpInstrumentationConfig {\n const instrumentationConfig = {\n // This is handled by the SentryHttpInstrumentation on Node 22+\n disableOutgoingRequestInstrumentation: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n\n ignoreOutgoingRequestHook: request => {\n const url = getRequestUrl(request);\n\n if (!url) {\n return false;\n }\n\n const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n if (_ignoreOutgoingRequests?.(url, request)) {\n return true;\n }\n\n return false;\n },\n\n requireParentforOutgoingSpans: false,\n requestHook: (span, req) => {\n addOriginToSpan(span, 'auto.http.otel.http');\n\n // Sanitize data URLs to prevent long base64 strings in span attributes\n const url = getRequestUrl(req as ClientRequest);\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n span.setAttribute('http.url', sanitizedUrl);\n span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n span.updateName(`${(req as ClientRequest).method || 'GET'} ${sanitizedUrl}`);\n }\n\n options.instrumentation?.requestHook?.(span, req);\n },\n responseHook: (span, res) => {\n options.instrumentation?.responseHook?.(span, res);\n },\n applyCustomAttributesOnSpan: (\n span: Span,\n request: ClientRequest | HTTPModuleRequestIncomingMessage,\n response: HTTPModuleRequestIncomingMessage | ServerResponse,\n ) => {\n options.instrumentation?.applyCustomAttributesOnSpan?.(span, request, response);\n },\n } satisfies HttpInstrumentationConfig;\n\n return instrumentationConfig;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.24.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-undici';\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport * as diagch from 'diagnostics_channel';\nimport { URL } from 'url';\n\nimport {\n InstrumentationBase,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport {\n Attributes,\n context,\n Histogram,\n HrTime,\n INVALID_SPAN_CONTEXT,\n propagation,\n Span,\n SpanKind,\n SpanStatusCode,\n trace,\n ValueType,\n} from '@opentelemetry/api';\nimport {\n hrTime,\n hrTimeDuration,\n hrTimeToMilliseconds,\n} from '@opentelemetry/core';\nimport {\n ATTR_ERROR_TYPE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_HTTP_REQUEST_METHOD_ORIGINAL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_NETWORK_PEER_PORT,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_FULL,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_URL_SCHEME,\n ATTR_USER_AGENT_ORIGINAL,\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n} from '@opentelemetry/semantic-conventions';\n\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\nimport {\n ListenerRecord,\n RequestHeadersMessage,\n RequestMessage,\n RequestTrailersMessage,\n ResponseHeadersMessage,\n} from './internal-types';\nimport { UndiciInstrumentationConfig, UndiciRequest } from './types';\n\ninterface InstrumentationRecord {\n span: Span;\n attributes: Attributes;\n startTime: HrTime;\n}\n\n// A combination of https://github.com/elastic/apm-agent-nodejs and\n// https://github.com/gadget-inc/opentelemetry-instrumentations/blob/main/packages/opentelemetry-instrumentation-undici/src/index.ts\nexport class UndiciInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n declare private _channelSubs: Array;\n private _recordFromReq = new WeakMap();\n\n declare private _httpClientDurationHistogram: Histogram;\n\n constructor(config: UndiciInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n // No need to instrument files/modules\n protected override init() {\n return undefined;\n }\n\n override disable(): void {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs.length = 0;\n }\n\n override enable(): void {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n\n this.subscribeToChannel(\n 'undici:request:create',\n this.onRequestCreated.bind(this)\n );\n this.subscribeToChannel(\n 'undici:client:sendHeaders',\n this.onRequestHeaders.bind(this)\n );\n this.subscribeToChannel(\n 'undici:request:headers',\n this.onResponseHeaders.bind(this)\n );\n this.subscribeToChannel('undici:request:trailers', this.onDone.bind(this));\n this.subscribeToChannel('undici:request:error', this.onError.bind(this));\n }\n\n protected override _updateMetricInstruments() {\n this._httpClientDurationHistogram = this.meter.createHistogram(\n METRIC_HTTP_CLIENT_REQUEST_DURATION,\n {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 's',\n valueType: ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n }\n );\n }\n\n private subscribeToChannel(\n diagnosticChannel: string,\n onMessage: (message: any, name: string | symbol) => void\n ) {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const [major, minor] = process.version\n .replace('v', '')\n .split('.')\n .map(n => Number(n));\n const useNewSubscribe = major > 18 || (major === 18 && minor >= 19);\n\n let unsubscribe: () => void;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n } else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n\n private parseRequestHeaders(request: UndiciRequest) {\n const result = new Map();\n\n if (Array.isArray(request.headers)) {\n // headers are an array [k1, v2, k2, v2] (undici v6+)\n // values could be string or a string[] for multiple values\n for (let i = 0; i < request.headers.length; i += 2) {\n const key = request.headers[i];\n const value = request.headers[i + 1];\n\n // Key should always be a string, but the types don't know that, and let's be safe\n if (typeof key === 'string') {\n result.set(key.toLowerCase(), value);\n }\n }\n } else if (typeof request.headers === 'string') {\n // headers are a raw string (undici v5)\n // headers could be repeated in several lines for multiple values\n const headers = request.headers.split('\\r\\n');\n for (const line of headers) {\n if (!line) {\n continue;\n }\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) {\n // Invalid header? Probably this can't happen, but again let's be safe.\n continue;\n }\n const key = line.substring(0, colonIndex).toLowerCase();\n const value = line.substring(colonIndex + 1).trim();\n const allValues = result.get(key);\n\n if (allValues && Array.isArray(allValues)) {\n allValues.push(value);\n } else if (allValues) {\n result.set(key, [allValues, value]);\n } else {\n result.set(key, value);\n }\n }\n }\n return result;\n }\n\n // This is the 1st message we receive for each request (fired after request creation). Here we will\n // create the span and populate some atttributes, then link the span to the request for further\n // span processing\n private onRequestCreated({ request }: RequestMessage): void {\n // Ignore if:\n // - instrumentation is disabled\n // - ignored by config\n // - method is 'CONNECT'\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n const shouldIgnoreReq = safeExecuteInTheMiddle(\n () =>\n !enabled ||\n request.method === 'CONNECT' ||\n config.ignoreRequestHook?.(request),\n e => e && this._diag.error('caught ignoreRequestHook error: ', e),\n true\n );\n\n if (shouldIgnoreReq) {\n return;\n }\n\n const startTime = hrTime();\n let requestUrl;\n try {\n requestUrl = new URL(request.path, request.origin);\n } catch (err) {\n this._diag.warn('could not determine url.full:', err);\n // Skip instrumenting this request.\n return;\n }\n const urlScheme = requestUrl.protocol.replace(':', '');\n const requestMethod = this.getRequestMethod(request.method);\n const attributes: Attributes = {\n [ATTR_HTTP_REQUEST_METHOD]: requestMethod,\n [ATTR_HTTP_REQUEST_METHOD_ORIGINAL]: request.method,\n [ATTR_URL_FULL]: requestUrl.toString(),\n [ATTR_URL_PATH]: requestUrl.pathname,\n [ATTR_URL_QUERY]: requestUrl.search,\n [ATTR_URL_SCHEME]: urlScheme,\n };\n\n const schemePorts: Record = { https: '443', http: '80' };\n const serverAddress = requestUrl.hostname;\n const serverPort = requestUrl.port || schemePorts[urlScheme];\n\n attributes[ATTR_SERVER_ADDRESS] = serverAddress;\n if (serverPort && !isNaN(Number(serverPort))) {\n attributes[ATTR_SERVER_PORT] = Number(serverPort);\n }\n\n // Get user agent from headers\n const headersMap = this.parseRequestHeaders(request);\n const userAgentValues = headersMap.get('user-agent');\n\n if (userAgentValues) {\n // NOTE: having multiple user agents is not expected so\n // we're going to take last one like `curl` does\n // ref: https://curl.se/docs/manpage.html#-A\n const userAgent = Array.isArray(userAgentValues)\n ? userAgentValues[userAgentValues.length - 1]\n : userAgentValues;\n attributes[ATTR_USER_AGENT_ORIGINAL] = userAgent;\n }\n\n // Get attributes from the hook if present\n const hookAttributes = safeExecuteInTheMiddle(\n () => config.startSpanHook?.(request),\n e => e && this._diag.error('caught startSpanHook error: ', e),\n true\n );\n if (hookAttributes) {\n Object.entries(hookAttributes).forEach(([key, val]) => {\n attributes[key] = val;\n });\n }\n\n // Check if parent span is required via config and:\n // - if a parent is required but not present, we use a `NoopSpan` to still\n // propagate context without recording it.\n // - create a span otherwise\n const activeCtx = context.active();\n const currentSpan = trace.getSpan(activeCtx);\n let span: Span;\n\n if (\n config.requireParentforSpans &&\n (!currentSpan || !trace.isSpanContextValid(currentSpan.spanContext()))\n ) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n span = this.tracer.startSpan(\n requestMethod === '_OTHER' ? 'HTTP' : requestMethod,\n {\n kind: SpanKind.CLIENT,\n attributes: attributes,\n },\n activeCtx\n );\n }\n\n // Execute the request hook if defined\n safeExecuteInTheMiddle(\n () => config.requestHook?.(span, request),\n e => e && this._diag.error('caught requestHook error: ', e),\n true\n );\n\n // Context propagation goes last so no hook can tamper\n // the propagation headers\n const requestContext = trace.setSpan(context.active(), span);\n const addedHeaders: Record = {};\n propagation.inject(requestContext, addedHeaders);\n\n const headerEntries = Object.entries(addedHeaders);\n\n for (let i = 0; i < headerEntries.length; i++) {\n const [k, v] = headerEntries[i];\n\n if (typeof request.addHeader === 'function') {\n request.addHeader(k, v);\n } else if (typeof request.headers === 'string') {\n request.headers += `${k}: ${v}\\r\\n`;\n } else if (Array.isArray(request.headers)) {\n // undici@6.11.0 accidentally, briefly removed `request.addHeader()`.\n request.headers.push(k, v);\n }\n }\n this._recordFromReq.set(request, { span, attributes, startTime });\n }\n\n // This is the 2nd message we receive for each request. It is fired when connection with\n // the remote is established and about to send the first byte. Here we do have info about the\n // remote address and port so we can populate some `network.*` attributes into the span\n private onRequestHeaders({ request, socket }: RequestHeadersMessage): void {\n const record = this._recordFromReq.get(request as UndiciRequest);\n\n if (!record) {\n return;\n }\n\n const config = this.getConfig();\n const { span } = record;\n const { remoteAddress, remotePort } = socket;\n const spanAttributes: Attributes = {\n [ATTR_NETWORK_PEER_ADDRESS]: remoteAddress,\n [ATTR_NETWORK_PEER_PORT]: remotePort,\n };\n\n // After hooks have been processed (which may modify request headers)\n // we can collect the headers based on the configuration\n if (config.headersToSpanAttributes?.requestHeaders) {\n const headersToAttribs = new Set(\n config.headersToSpanAttributes.requestHeaders.map(n => n.toLowerCase())\n );\n const headersMap = this.parseRequestHeaders(request);\n\n for (const [name, value] of headersMap.entries()) {\n if (headersToAttribs.has(name)) {\n const attrValue = Array.isArray(value) ? value : [value];\n spanAttributes[`http.request.header.${name}`] = attrValue;\n }\n }\n }\n\n span.setAttributes(spanAttributes);\n }\n\n // This is the 3rd message we get for each request and it's fired when the server\n // headers are received, body may not be accessible yet.\n // From the response headers we can set the status and content length\n private onResponseHeaders({\n request,\n response,\n }: ResponseHeadersMessage): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes } = record;\n const spanAttributes: Attributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: response.statusCode,\n };\n\n const config = this.getConfig();\n\n // Execute the response hook if defined\n safeExecuteInTheMiddle(\n () => config.responseHook?.(span, { request, response }),\n e => e && this._diag.error('caught responseHook error: ', e),\n true\n );\n\n if (config.headersToSpanAttributes?.responseHeaders) {\n const headersToAttribs = new Set();\n config.headersToSpanAttributes?.responseHeaders.forEach(name =>\n headersToAttribs.add(name.toLowerCase())\n );\n\n for (let idx = 0; idx < response.headers.length; idx = idx + 2) {\n const name = response.headers[idx].toString().toLowerCase();\n const value = response.headers[idx + 1];\n\n if (headersToAttribs.has(name)) {\n const attrName = `http.response.header.${name}`;\n if (!Object.hasOwn(spanAttributes, attrName)) {\n spanAttributes[attrName] = [value.toString()];\n } else {\n (spanAttributes[attrName] as string[]).push(value.toString());\n }\n }\n }\n }\n\n span.setAttributes(spanAttributes);\n span.setStatus({\n code:\n response.statusCode >= 400\n ? SpanStatusCode.ERROR\n : SpanStatusCode.UNSET,\n });\n record.attributes = Object.assign(attributes, spanAttributes);\n }\n\n // This is the last event we receive if the request went without any errors\n private onDone({ request }: RequestTrailersMessage): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes, startTime } = record;\n\n // End the span\n span.end();\n this._recordFromReq.delete(request);\n\n // Record metrics\n this.recordRequestDuration(attributes, startTime);\n }\n\n // This is the event we get when something is wrong in the request like\n // - invalid options when calling `fetch` global API or any undici method for request\n // - connectivity errors such as unreachable host\n // - requests aborted through an `AbortController.signal`\n // NOTE: server errors are considered valid responses and it's the lib consumer\n // who should deal with that.\n private onError({ request, error }: any): void {\n const record = this._recordFromReq.get(request);\n\n if (!record) {\n return;\n }\n\n const { span, attributes, startTime } = record;\n\n // NOTE: in `undici@6.3.0` when request aborted the error type changes from\n // a custom error (`RequestAbortedError`) to a built-in `DOMException` carrying\n // some differences:\n // - `code` is from DOMEXception (ABORT_ERR: 20)\n // - `message` changes\n // - stacktrace is smaller and contains node internal frames\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.end();\n this._recordFromReq.delete(request);\n\n // Record metrics (with the error)\n attributes[ATTR_ERROR_TYPE] = error.message;\n this.recordRequestDuration(attributes, startTime);\n }\n\n private recordRequestDuration(attributes: Attributes, startTime: HrTime) {\n // Time to record metrics\n const metricsAttributes: Attributes = {};\n // Get the attribs already in span attributes\n const keysToCopy = [\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n ATTR_URL_SCHEME,\n ATTR_ERROR_TYPE,\n ];\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n\n // Take the duration and record it\n const durationSeconds =\n hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000;\n this._httpClientDurationHistogram.record(\n durationSeconds,\n metricsAttributes\n );\n }\n\n private getRequestMethod(original: string): string {\n const knownMethods = {\n CONNECT: true,\n OPTIONS: true,\n HEAD: true,\n GET: true,\n POST: true,\n PUT: true,\n PATCH: true,\n DELETE: true,\n TRACE: true,\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n QUERY: true,\n };\n\n if (original.toUpperCase() in knownMethods) {\n return original.toUpperCase();\n }\n\n return '_OTHER';\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { UndiciInstrumentation } from './undici';\nexport type {\n IgnoreRequestFunction,\n RequestHookFunction,\n ResponseHookFunction,\n StartSpanHookFunction,\n UndiciInstrumentationConfig,\n UndiciRequest,\n UndiciResponse,\n} from './types';\n","import type { UndiciInstrumentationConfig } from '@opentelemetry/instrumentation-undici';\nimport { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n defineIntegration,\n getClient,\n hasSpansEnabled,\n SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SEMANTIC_ATTRIBUTE_URL_FULL,\n stripDataUrlContent,\n} from '@sentry/core';\nimport type { NodeClient } from '@sentry/node-core';\nimport { generateInstrumentOnce, SentryNodeFetchInstrumentation } from '@sentry/node-core';\nimport type { NodeClientOptions } from '../types';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\ninterface NodeFetchOptions extends Pick<\n UndiciInstrumentationConfig,\n 'requestHook' | 'responseHook' | 'headersToSpanAttributes'\n> {\n /**\n * Whether breadcrumbs should be recorded for requests.\n * Defaults to true\n */\n breadcrumbs?: boolean;\n\n /**\n * If set to false, do not emit any spans.\n * This will ensure that the default UndiciInstrumentation from OpenTelemetry is not setup,\n * only the Sentry-specific instrumentation for breadcrumbs & trace propagation is applied.\n *\n * If `skipOpenTelemetrySetup: true` is configured, this defaults to `false`, otherwise it defaults to `true`.\n */\n spans?: boolean;\n\n /**\n * Whether to inject trace propagation headers (sentry-trace, baggage, traceparent) into outgoing fetch requests.\n *\n * When set to `false`, Sentry will not inject any trace propagation headers, but will still create breadcrumbs\n * (if `breadcrumbs` is enabled). This is useful when `skipOpenTelemetrySetup: true` is configured and you want\n * to avoid duplicate trace headers being injected by both Sentry and OpenTelemetry's UndiciInstrumentation.\n *\n * @default `true`\n */\n tracePropagation?: boolean;\n\n /**\n * Do not capture spans or breadcrumbs for outgoing fetch requests to URLs where the given callback returns `true`.\n * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.\n */\n ignoreOutgoingRequests?: (url: string) => boolean;\n}\n\nconst instrumentOtelNodeFetch = generateInstrumentOnce(\n INTEGRATION_NAME,\n UndiciInstrumentation,\n (options: NodeFetchOptions) => {\n return _getConfigWithDefaults(options);\n },\n);\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options: NodeFetchOptions) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options: NodeFetchOptions = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n const instrumentSpans = _shouldInstrumentSpans(options, getClient()?.getOptions());\n\n // This is the \"regular\" OTEL instrumentation that emits spans\n if (instrumentSpans) {\n instrumentOtelNodeFetch(options);\n }\n\n // This is the Sentry-specific instrumentation that creates breadcrumbs & propagates traces\n // This must be registered after the OTEL one, to ensure that the core trace propagation logic takes presedence\n // Otherwise, the sentry-trace header may be set multiple times\n instrumentSentryNodeFetch(options);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n\n// Matching the behavior of the base instrumentation\nfunction getAbsoluteUrl(origin: string, path: string = '/'): string {\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n}\n\nfunction _shouldInstrumentSpans(options: NodeFetchOptions, clientOptions: Partial = {}): boolean {\n // If `spans` is passed in, it takes precedence\n // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n return typeof options.spans === 'boolean'\n ? options.spans\n : !clientOptions.skipOpenTelemetrySetup && hasSpansEnabled(clientOptions);\n}\n\n/** Exported only for tests. */\nexport function _getConfigWithDefaults(options: Partial = {}): UndiciInstrumentationConfig {\n const instrumentationConfig = {\n requireParentforSpans: false,\n ignoreRequestHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n const shouldIgnore = _ignoreOutgoingRequests && url && _ignoreOutgoingRequests(url);\n\n return !!shouldIgnore;\n },\n startSpanHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Sanitize data URLs to prevent long base64 strings in span attributes\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n 'http.url': sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_URL_FULL]: sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: `${request.method || 'GET'} ${sanitizedUrl}`,\n };\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n };\n },\n requestHook: options.requestHook,\n responseHook: options.responseHook,\n headersToSpanAttributes: options.headersToSpanAttributes,\n } satisfies UndiciInstrumentationConfig;\n\n return instrumentationConfig;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-fs';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { FMember, FPMember } from './types';\n\nexport const PROMISE_FUNCTIONS: FPMember[] = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'copyFile',\n 'cp' as FPMember, // added in v16\n 'lchown',\n 'link',\n 'lstat',\n 'lutimes', // added in v12\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir', // added in v12\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm', // added in v14\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n // 'lchmod', // only implemented on macOS\n];\n\nexport const CALLBACK_FUNCTIONS: FMember[] = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'copyFile',\n 'cp' as FMember, // added in v16\n 'exists', // deprecated, inconsistent cb signature, handling separately when patching\n 'lchown',\n 'link',\n 'lstat',\n 'lutimes', // added in v12\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir', // added in v12\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'realpath.native',\n 'rename',\n 'rm', // added in v14\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n // 'close', // functions on file descriptor\n // 'fchmod', // functions on file descriptor\n // 'fchown', // functions on file descriptor\n // 'fdatasync', // functions on file descriptor\n // 'fstat', // functions on file descriptor\n // 'fsync', // functions on file descriptor\n // 'ftruncate', // functions on file descriptor\n // 'futimes', // functions on file descriptor\n // 'lchmod', // only implemented on macOS\n // 'read', // functions on file descriptor\n // 'readv', // functions on file descriptor\n // 'write', // functions on file descriptor\n // 'writev', // functions on file descriptor\n];\n\nexport const SYNC_FUNCTIONS: FMember[] = [\n 'accessSync',\n 'appendFileSync',\n 'chmodSync',\n 'chownSync',\n 'copyFileSync',\n 'cpSync' as FMember, // added in v16\n 'existsSync',\n 'lchownSync',\n 'linkSync',\n 'lstatSync',\n 'lutimesSync', // added in v12\n 'mkdirSync',\n 'mkdtempSync',\n 'opendirSync', // added in v12\n 'openSync',\n 'readdirSync',\n 'readFileSync',\n 'readlinkSync',\n 'realpathSync',\n 'realpathSync.native',\n 'renameSync',\n 'rmdirSync',\n 'rmSync', // added in v14\n 'statSync',\n 'symlinkSync',\n 'truncateSync',\n 'unlinkSync',\n 'utimesSync',\n 'writeFileSync',\n // 'closeSync', // functions on file descriptor\n // 'fchmodSync', // functions on file descriptor\n // 'fchownSync', // functions on file descriptor\n // 'fdatasyncSync', // functions on file descriptor\n // 'fstatSync', // functions on file descriptor\n // 'fsyncSync', // functions on file descriptor\n // 'ftruncateSync', // functions on file descriptor\n // 'futimesSync', // functions on file descriptor\n // 'lchmodSync', // only implemented on macOS\n // 'readSync', // functions on file descriptor\n // 'readvSync', // functions on file descriptor\n // 'writeSync', // functions on file descriptor\n // 'writevSync', // functions on file descriptor\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nimport type { FunctionPropertyNames, FMember } from './types';\nimport type * as fs from 'fs';\ntype FS = typeof fs;\n\nexport function splitTwoLevels(\n functionName: FMember\n):\n | [FunctionPropertyNames & string]\n | [FunctionPropertyNames & string, string] {\n const memberParts = functionName.split('.');\n if (memberParts.length > 1) {\n if (memberParts.length !== 2)\n throw Error(`Invalid member function name ${functionName}`);\n return memberParts as [FunctionPropertyNames & string, string];\n } else {\n return [functionName as FunctionPropertyNames & string];\n }\n}\n\nexport function indexFs(\n fs: FSObject,\n member: FMember\n): { objectToPatch: any; functionNameToPatch: string } {\n if (!member) throw new Error(JSON.stringify({ member }));\n const splitResult = splitTwoLevels(member);\n const [functionName1, functionName2] = splitResult;\n if (functionName2) {\n return {\n objectToPatch: fs[functionName1],\n functionNameToPatch: functionName2,\n };\n } else {\n return {\n objectToPatch: fs,\n functionNameToPatch: functionName1,\n };\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as api from '@opentelemetry/api';\nimport { isTracingSuppressed, suppressTracing } from '@opentelemetry/core';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n} from '@opentelemetry/instrumentation';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n CALLBACK_FUNCTIONS,\n PROMISE_FUNCTIONS,\n SYNC_FUNCTIONS,\n} from './constants';\nimport type * as fs from 'fs';\nimport type {\n FMember,\n FPMember,\n CreateHook,\n EndHook,\n FsInstrumentationConfig,\n} from './types';\nimport { promisify } from 'util';\nimport { indexFs } from './utils';\n\ntype FS = typeof fs;\ntype FSPromises = (typeof fs)['promises'];\n\n/**\n * This is important for 2-level functions like `realpath.native` to retain the 2nd-level\n * when patching the 1st-level.\n */\nfunction patchedFunctionWithOriginalProperties<\n T extends (...args: any[]) => ReturnType,\n>(patchedFunction: T, original: T): T {\n return Object.assign(patchedFunction, original);\n}\n\nexport class FsInstrumentation extends InstrumentationBase {\n constructor(config: FsInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init(): (\n | InstrumentationNodeModuleDefinition\n | InstrumentationNodeModuleDefinition\n )[] {\n return [\n new InstrumentationNodeModuleDefinition(\n 'fs',\n ['*'],\n (fs: FS) => {\n for (const fName of SYNC_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchSyncFunction.bind(this, fName)\n );\n }\n for (const fName of CALLBACK_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n if (fName === 'exists') {\n // handling separately because of the inconsistent cb style:\n // `exists` doesn't have error as the first argument, but the result\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchExistsCallbackFunction.bind(this, fName)\n );\n continue;\n }\n this._wrap(\n objectToPatch,\n functionNameToPatch,\n this._patchCallbackFunction.bind(this, fName)\n );\n }\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fs.promises[fName])) {\n this._unwrap(fs.promises, fName);\n }\n this._wrap(\n fs.promises,\n fName,\n this._patchPromiseFunction.bind(this, fName)\n );\n }\n return fs;\n },\n (fs: FS) => {\n if (fs === undefined) return;\n for (const fName of SYNC_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n }\n for (const fName of CALLBACK_FUNCTIONS) {\n const { objectToPatch, functionNameToPatch } = indexFs(fs, fName);\n if (isWrapped(objectToPatch[functionNameToPatch])) {\n this._unwrap(objectToPatch, functionNameToPatch);\n }\n }\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fs.promises[fName])) {\n this._unwrap(fs.promises, fName);\n }\n }\n }\n ),\n new InstrumentationNodeModuleDefinition(\n 'fs/promises',\n ['*'],\n (fsPromises: FSPromises) => {\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fsPromises[fName])) {\n this._unwrap(fsPromises, fName);\n }\n this._wrap(\n fsPromises,\n fName,\n this._patchPromiseFunction.bind(this, fName)\n );\n }\n return fsPromises;\n },\n (fsPromises: FSPromises) => {\n if (fsPromises === undefined) return;\n for (const fName of PROMISE_FUNCTIONS) {\n if (isWrapped(fsPromises[fName])) {\n this._unwrap(fsPromises, fName);\n }\n }\n }\n ),\n ];\n }\n\n protected _patchSyncFunction ReturnType>(\n functionName: FMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n try {\n // Suppress tracing for internal fs calls\n const res = api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n instrumentation._runEndHook(functionName, { args: args, span });\n return res;\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, { args: args, span, error });\n throw error;\n } finally {\n span.end();\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _patchCallbackFunction ReturnType>(\n functionName: FMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const lastIdx = args.length - 1;\n const cb = args[lastIdx];\n if (typeof cb === 'function') {\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n // Return to the context active during the call in the callback\n args[lastIdx] = api.context.bind(\n activeContext,\n function (this: unknown, error?: Error) {\n if (error) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n }\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n return cb.apply(this, arguments);\n }\n );\n\n try {\n // Suppress tracing for internal fs calls\n return api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n throw error;\n }\n } else {\n // TODO: what to do if we are pretty sure it's going to throw\n return original.apply(this, args);\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _patchExistsCallbackFunction<\n T extends (...args: any[]) => ReturnType,\n >(functionName: 'exists', original: T): T {\n const instrumentation = this;\n const patchedFunction = function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const lastIdx = args.length - 1;\n const cb = args[lastIdx];\n if (typeof cb === 'function') {\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n // Return to the context active during the call in the callback\n args[lastIdx] = api.context.bind(\n activeContext,\n function (this: unknown) {\n // `exists` never calls the callback with an error\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n });\n span.end();\n return cb.apply(this, arguments);\n }\n );\n\n try {\n // Suppress tracing for internal fs calls\n return api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, {\n args: args,\n span,\n error,\n });\n span.end();\n throw error;\n }\n } else {\n return original.apply(this, args);\n }\n };\n const functionWithOriginalProperties =\n patchedFunctionWithOriginalProperties(patchedFunction, original);\n\n // `exists` has a custom promisify function because of the inconsistent signature\n // replicating that on the patched function\n const promisified = function (path: unknown) {\n return new Promise(resolve =>\n functionWithOriginalProperties(path, resolve)\n );\n };\n Object.defineProperty(promisified, 'name', { value: functionName });\n Object.defineProperty(functionWithOriginalProperties, promisify.custom, {\n value: promisified,\n });\n\n return functionWithOriginalProperties;\n }\n\n protected _patchPromiseFunction ReturnType>(\n functionName: FPMember,\n original: T\n ): T {\n const instrumentation = this;\n const patchedFunction = async function (this: any, ...args: any[]) {\n const activeContext = api.context.active();\n\n if (!instrumentation._shouldTrace(activeContext)) {\n return original.apply(this, args);\n }\n if (\n instrumentation._runCreateHook(functionName, {\n args: args,\n }) === false\n ) {\n return api.context.with(\n suppressTracing(activeContext),\n original,\n this,\n ...args\n );\n }\n\n const span = instrumentation.tracer.startSpan(\n `fs ${functionName}`\n ) as api.Span;\n\n try {\n // Suppress tracing for internal fs calls\n const res = await api.context.with(\n suppressTracing(api.trace.setSpan(activeContext, span)),\n original,\n this,\n ...args\n );\n instrumentation._runEndHook(functionName, { args: args, span });\n return res;\n } catch (error: any) {\n span.recordException(error);\n span.setStatus({\n message: error.message,\n code: api.SpanStatusCode.ERROR,\n });\n instrumentation._runEndHook(functionName, { args: args, span, error });\n throw error;\n } finally {\n span.end();\n }\n };\n return patchedFunctionWithOriginalProperties(patchedFunction, original);\n }\n\n protected _runCreateHook(\n ...args: Parameters\n ): ReturnType {\n const { createHook } = this.getConfig();\n if (typeof createHook === 'function') {\n try {\n return createHook(...args);\n } catch (e) {\n this._diag.error('caught createHook error', e);\n }\n }\n return true;\n }\n\n protected _runEndHook(...args: Parameters): ReturnType {\n const { endHook } = this.getConfig();\n if (typeof endHook === 'function') {\n try {\n endHook(...args);\n } catch (e) {\n this._diag.error('caught endHook error', e);\n }\n }\n }\n\n protected _shouldTrace(context: api.Context): boolean {\n if (isTracingSuppressed(context)) {\n // Performance optimization. Avoid creating additional contexts and spans\n // if we already know that the tracing is being suppressed.\n return false;\n }\n\n const { requireParentSpan } = this.getConfig();\n if (requireParentSpan) {\n const parentSpan = api.trace.getSpan(context);\n if (parentSpan == null) {\n return false;\n }\n }\n\n return true;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { FsInstrumentation } from './instrumentation';\nexport type {\n CreateHook,\n EndHook,\n FMember,\n FPMember,\n FsInstrumentationConfig,\n FunctionProperties,\n FunctionPropertyNames,\n FunctionPropertyNamesTwoLevels,\n Member,\n} from './types';\n","import { FsInstrumentation } from '@opentelemetry/instrumentation-fs';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'FileSystem';\n\n/**\n * This integration will create spans for `fs` API operations, like reading and writing files.\n *\n * **WARNING:** This integration may add significant overhead to your application. Especially in scenarios with a lot of\n * file I/O, like for example when running a framework dev server, including this integration can massively slow down\n * your application.\n *\n * @param options Configuration for this integration.\n */\nexport const fsIntegration = defineIntegration(\n (\n options: {\n /**\n * Setting this option to `true` will include any filepath arguments from your `fs` API calls as span attributes.\n *\n * Defaults to `false`.\n */\n recordFilePaths?: boolean;\n\n /**\n * Setting this option to `true` will include the error messages of failed `fs` API calls as a span attribute.\n *\n * Defaults to `false`.\n */\n recordErrorMessagesAsSpanAttributes?: boolean;\n } = {},\n ) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new FsInstrumentation({\n requireParentSpan: true,\n endHook(functionName, { args, span, error }) {\n span.updateName(`fs.${functionName}`);\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'file',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.file.fs',\n });\n\n if (options.recordErrorMessagesAsSpanAttributes) {\n if (typeof args[0] === 'string' && FS_OPERATIONS_WITH_PATH_ARG.includes(functionName)) {\n span.setAttribute('path_argument', args[0]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_TARGET_PATH.includes(functionName)\n ) {\n span.setAttribute('target_argument', args[0]);\n span.setAttribute('path_argument', args[1]);\n } else if (typeof args[0] === 'string' && FS_OPERATIONS_WITH_PREFIX.includes(functionName)) {\n span.setAttribute('prefix_argument', args[0]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_EXISTING_PATH_NEW_PATH.includes(functionName)\n ) {\n span.setAttribute('existing_path_argument', args[0]);\n span.setAttribute('new_path_argument', args[1]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_SRC_DEST.includes(functionName)\n ) {\n span.setAttribute('src_argument', args[0]);\n span.setAttribute('dest_argument', args[1]);\n } else if (\n typeof args[0] === 'string' &&\n typeof args[1] === 'string' &&\n FS_OPERATIONS_WITH_OLD_PATH_NEW_PATH.includes(functionName)\n ) {\n span.setAttribute('old_path_argument', args[0]);\n span.setAttribute('new_path_argument', args[1]);\n }\n }\n\n if (error && options.recordErrorMessagesAsSpanAttributes) {\n span.setAttribute('fs_error', error.message);\n }\n },\n }),\n )();\n },\n };\n },\n);\n\nconst FS_OPERATIONS_WITH_OLD_PATH_NEW_PATH = ['rename', 'renameSync'];\nconst FS_OPERATIONS_WITH_SRC_DEST = ['copyFile', 'cp', 'copyFileSync', 'cpSync'];\nconst FS_OPERATIONS_WITH_EXISTING_PATH_NEW_PATH = ['link', 'linkSync'];\nconst FS_OPERATIONS_WITH_PREFIX = ['mkdtemp', 'mkdtempSync'];\nconst FS_OPERATIONS_WITH_TARGET_PATH = ['symlink', 'symlinkSync'];\nconst FS_OPERATIONS_WITH_PATH_ARG = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'exists',\n 'mkdir',\n 'lchown',\n 'lstat',\n 'lutimes',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'realpath.native',\n 'rm',\n 'rmdir',\n 'stat',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile',\n 'accessSync',\n 'appendFileSync',\n 'chmodSync',\n 'chownSync',\n 'existsSync',\n 'lchownSync',\n 'lstatSync',\n 'lutimesSync',\n 'opendirSync',\n 'mkdirSync',\n 'openSync',\n 'readdirSync',\n 'readFileSync',\n 'readlinkSync',\n 'realpathSync',\n 'realpathSync.native',\n 'rmdirSync',\n 'rmSync',\n 'statSync',\n 'truncateSync',\n 'unlinkSync',\n 'utimesSync',\n 'writeFileSync',\n];\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum ExpressLayerType {\n ROUTER = 'router',\n MIDDLEWARE = 'middleware',\n REQUEST_HANDLER = 'request_handler',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 */\nexport enum AttributeNames {\n EXPRESS_TYPE = 'express.type',\n EXPRESS_NAME = 'express.name',\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Request } from 'express';\nimport { Attributes } from '@opentelemetry/api';\n\n/**\n * This symbol is used to mark express layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexport const kLayerPatched: unique symbol = Symbol('express-layer-patched');\n\n/**\n * This const define where on the `request` object the Instrumentation will mount the\n * current stack of express layer.\n *\n * It is necessary because express doesn't store the different layers\n * (ie: middleware, router etc) that it called to get to the current layer.\n * Given that, the only way to know the route of a given layer is to\n * store the path of where each previous layer has been mounted.\n *\n * ex: bodyParser > auth middleware > /users router > get /:id\n * in this case the stack would be: [\"/users\", \"/:id\"]\n *\n * ex2: bodyParser > /api router > /v1 router > /users router > get /:id\n * stack: [\"/api\", \"/v1\", \"/users\", \":id\"]\n *\n */\nexport const _LAYERS_STORE_PROPERTY = '__ot_middlewares';\n\nexport type PatchedRequest = {\n [_LAYERS_STORE_PROPERTY]?: string[];\n} & Request;\nexport type PathParams = string | RegExp | Array;\n\n// https://github.com/expressjs/express/blob/main/lib/router/index.js#L53\nexport type ExpressRouter = {\n params: { [key: string]: string };\n _params: string[];\n caseSensitive: boolean;\n mergeParams: boolean;\n strict: boolean;\n stack: ExpressLayer[];\n};\n\n// https://github.com/expressjs/express/blob/main/lib/router/layer.js#L33\nexport type ExpressLayer = {\n handle: Function & Record;\n [kLayerPatched]?: boolean;\n name: string;\n params: { [key: string]: string };\n path: string;\n regexp: RegExp;\n route?: ExpressLayer;\n};\n\nexport type LayerMetadata = {\n attributes: Attributes;\n name: string;\n};\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Attributes } from '@opentelemetry/api';\nimport {\n IgnoreMatcher,\n ExpressInstrumentationConfig,\n LayerPathSegment,\n} from './types';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n ExpressLayer,\n PatchedRequest,\n _LAYERS_STORE_PROPERTY,\n} from './internal-types';\n\n/**\n * Store layers path in the request to be able to construct route later\n * @param request The request where\n * @param [value] the value to push into the array\n */\nexport const storeLayerPath = (\n request: PatchedRequest,\n value?: string\n): { isLayerPathStored: boolean } => {\n if (Array.isArray(request[_LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, _LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n if (value === undefined) return { isLayerPathStored: false };\n\n (request[_LAYERS_STORE_PROPERTY] as string[]).push(value);\n\n return { isLayerPathStored: true };\n};\n\n/**\n * Recursively search the router path from layer stack\n * @param path The path to reconstruct\n * @param layer The layer to reconstruct from\n * @returns The reconstructed path\n */\nexport const getRouterPath = (path: string, layer: ExpressLayer): string => {\n const stackLayer = layer.handle?.stack?.[0];\n\n if (stackLayer?.route?.path) {\n return `${path}${stackLayer.route.path}`;\n }\n\n if (stackLayer?.handle?.stack) {\n return getRouterPath(path, stackLayer);\n }\n\n return path;\n};\n\n/**\n * Parse express layer context to retrieve a name and attributes.\n * @param route The route of the layer\n * @param layer Express layer\n * @param [layerPath] if present, the path on which the layer has been mounted\n */\nexport const getLayerMetadata = (\n route: string,\n layer: ExpressLayer,\n layerPath?: string\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (layer.name === 'router') {\n const maybeRouterPath = getRouterPath('', layer);\n const extractedRouterPath = maybeRouterPath\n ? maybeRouterPath\n : layerPath || route || '/';\n\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]: extractedRouterPath,\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.ROUTER,\n },\n name: `router - ${extractedRouterPath}`,\n };\n } else if (layer.name === 'bound dispatch' || layer.name === 'handle') {\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]:\n (route || layerPath) ?? 'request handler',\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.REQUEST_HANDLER,\n },\n name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.EXPRESS_NAME]: layer.name,\n [AttributeNames.EXPRESS_TYPE]: ExpressLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param obj obj to inspect\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (\n constant: string,\n pattern: IgnoreMatcher\n): boolean => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n } else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n } else if (typeof pattern === 'function') {\n return pattern(constant);\n } else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * It will not re-throw exceptions from `list` provided by the client\n * @param constant e.g URL of request\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (\n name: string,\n type: ExpressLayerType,\n config?: ExpressInstrumentationConfig\n): boolean => {\n if (\n Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)\n ) {\n return true;\n }\n if (Array.isArray(config?.ignoreLayers) === false) return false;\n try {\n for (const pattern of config!.ignoreLayers!) {\n if (satisfiesPattern(name, pattern)) {\n return true;\n }\n }\n } catch (e) {\n /* catch block*/\n }\n\n return false;\n};\n\n/**\n * Converts a user-provided error value into an error and error message pair\n *\n * @param error - User-provided error value\n * @returns Both an Error or string representation of the value and an error message\n */\nexport const asErrorAndMessage = (\n error: unknown\n): [error: string | Error, message: string] =>\n error instanceof Error\n ? [error, error.message]\n : [String(error), String(error)];\n\n/**\n * Extracts the layer path from the route arguments\n *\n * @param args - Arguments of the route\n * @returns The layer path\n */\nexport const getLayerPath = (\n args: [LayerPathSegment | LayerPathSegment[], ...unknown[]]\n): string | undefined => {\n const firstArg = args[0];\n\n if (Array.isArray(firstArg)) {\n return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(',');\n }\n\n return extractLayerPathSegment(firstArg);\n};\n\nconst extractLayerPathSegment = (arg: LayerPathSegment) => {\n if (typeof arg === 'string') {\n return arg;\n }\n\n if (arg instanceof RegExp || typeof arg === 'number') {\n return arg.toString();\n }\n\n return;\n};\n\nexport function getConstructedRoute(req: {\n originalUrl: PatchedRequest['originalUrl'];\n [_LAYERS_STORE_PROPERTY]?: string[];\n}) {\n const layersStore: string[] = Array.isArray(req[_LAYERS_STORE_PROPERTY])\n ? (req[_LAYERS_STORE_PROPERTY] as string[])\n : [];\n\n const meaningfulPaths = layersStore.filter(\n path => path !== '/' && path !== '/*'\n );\n\n if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') {\n return '*';\n }\n\n // Join parts and remove duplicate slashes\n return meaningfulPaths.join('').replace(/\\/{2,}/g, '/');\n}\n\n/**\n * Extracts the actual matched route from Express request for OpenTelemetry instrumentation.\n * Returns the route that should be used as the http.route attribute.\n *\n * @param req - The Express request object with layers store\n * @param layersStoreProperty - The property name where layer paths are stored\n * @returns The matched route string or undefined if no valid route is found\n */\nexport function getActualMatchedRoute(req: {\n originalUrl: PatchedRequest['originalUrl'];\n [_LAYERS_STORE_PROPERTY]?: string[];\n}): string | undefined {\n const layersStore: string[] = Array.isArray(req[_LAYERS_STORE_PROPERTY])\n ? (req[_LAYERS_STORE_PROPERTY] as string[])\n : [];\n\n // If no layers are stored, no route can be determined\n if (layersStore.length === 0) {\n return undefined;\n }\n\n // Handle root path case - if all paths are root, only return root if originalUrl is also root\n // The layer store also includes root paths in case a non-existing url was requested\n if (layersStore.every(path => path === '/')) {\n return req.originalUrl === '/' ? '/' : undefined;\n }\n\n const constructedRoute = getConstructedRoute(req);\n if (constructedRoute === '*') {\n return constructedRoute;\n }\n\n // For RegExp routes or route arrays, return the constructed route\n // This handles the case where the route is defined using RegExp or an array\n if (\n constructedRoute.includes('/') &&\n (constructedRoute.includes(',') ||\n constructedRoute.includes('\\\\') ||\n constructedRoute.includes('*') ||\n constructedRoute.includes('['))\n ) {\n return constructedRoute;\n }\n\n // Ensure route starts with '/' if it doesn't already\n const normalizedRoute = constructedRoute.startsWith('/')\n ? constructedRoute\n : `/${constructedRoute}`;\n\n // Validate that this appears to be a matched route\n // A route is considered matched if:\n // 1. We have a constructed route\n // 2. The original URL matches or starts with our route pattern\n const isValidRoute =\n normalizedRoute.length > 0 &&\n (req.originalUrl === normalizedRoute ||\n req.originalUrl.startsWith(normalizedRoute) ||\n isRoutePattern(normalizedRoute));\n\n return isValidRoute ? normalizedRoute : undefined;\n}\n\n/**\n * Checks if a route contains parameter patterns (e.g., :id, :userId)\n * which are valid even if they don't exactly match the original URL\n */\nfunction isRoutePattern(route: string): boolean {\n return route.includes(':') || route.includes('*');\n}\n","/*\n * Copyright The OpenTelemetry Authors\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// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.62.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-express';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport {\n trace,\n context,\n diag,\n Attributes,\n SpanStatusCode,\n} from '@opentelemetry/api';\nimport type * as express from 'express';\nimport { ExpressInstrumentationConfig, ExpressRequestInfo } from './types';\nimport { ExpressLayerType } from './enums/ExpressLayerType';\nimport { AttributeNames } from './enums/AttributeNames';\nimport {\n asErrorAndMessage,\n getLayerMetadata,\n getLayerPath,\n isLayerIgnored,\n storeLayerPath,\n getActualMatchedRoute,\n getConstructedRoute,\n} from './utils';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport {\n ExpressLayer,\n ExpressRouter,\n kLayerPatched,\n PatchedRequest,\n _LAYERS_STORE_PROPERTY,\n} from './internal-types';\n\n/** Express instrumentation for OpenTelemetry */\nexport class ExpressInstrumentation extends InstrumentationBase {\n constructor(config: ExpressInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'express',\n ['>=4.0.0 <6'],\n moduleExports => {\n const isExpressWithRouterPrototype =\n typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype // Express v5\n : moduleExports.Router; // Express v4\n // patch express.Router.route\n if (isWrapped(routerProto.route)) {\n this._unwrap(routerProto, 'route');\n }\n this._wrap(routerProto, 'route', this._getRoutePatch());\n // patch express.Router.use\n if (isWrapped(routerProto.use)) {\n this._unwrap(routerProto, 'use');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._wrap(routerProto, 'use', this._getRouterUsePatch() as any);\n // patch express.Application.use\n if (isWrapped(moduleExports.application.use)) {\n this._unwrap(moduleExports.application, 'use');\n }\n this._wrap(\n moduleExports.application,\n 'use',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._getAppUsePatch(isExpressWithRouterPrototype) as any\n );\n return moduleExports;\n },\n moduleExports => {\n if (moduleExports === undefined) return;\n const isExpressWithRouterPrototype =\n typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype\n : moduleExports.Router;\n this._unwrap(routerProto, 'route');\n this._unwrap(routerProto, 'use');\n this._unwrap(moduleExports.application, 'use');\n }\n ),\n ];\n }\n\n /**\n * Get the patch for Router.route function\n */\n private _getRoutePatch() {\n const instrumentation = this;\n return function (original: express.Router['route']) {\n return function route_trace(\n this: ExpressRouter,\n ...args: Parameters\n ) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1] as ExpressLayer;\n instrumentation._applyPatch(layer, getLayerPath(args));\n return route;\n };\n };\n }\n\n /**\n * Get the patch for Router.use function\n */\n private _getRouterUsePatch() {\n const instrumentation = this;\n return function (original: express.Router['use']) {\n return function use(\n this: express.Application,\n ...args: Parameters\n ) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1] as ExpressLayer;\n instrumentation._applyPatch(layer, getLayerPath(args));\n return route;\n };\n };\n }\n\n /**\n * Get the patch for Application.use function\n */\n private _getAppUsePatch(isExpressWithRouterPrototype: boolean) {\n const instrumentation = this;\n return function (original: express.Application['use']) {\n return function use(\n // `router` in express@5, `_router` in express@4.\n this: { _router?: ExpressRouter; router?: ExpressRouter },\n ...args: Parameters\n ) {\n // If we access app.router in express 4.x we trigger an assertion error.\n // This property existed in v3, was removed in v4 and then re-added in v5.\n const router = isExpressWithRouterPrototype\n ? this.router\n : this._router;\n const route = original.apply(this, args);\n if (router) {\n const layer = router.stack[router.stack.length - 1];\n instrumentation._applyPatch(layer, getLayerPath(args));\n }\n return route;\n };\n };\n }\n\n /** Patch each express layer to create span and propagate context */\n private _applyPatch(\n this: ExpressInstrumentation,\n layer: ExpressLayer,\n layerPath?: string\n ) {\n const instrumentation = this;\n // avoid patching multiple times the same layer\n if (layer[kLayerPatched] === true) return;\n layer[kLayerPatched] = true;\n\n this._wrap(layer, 'handle', original => {\n // TODO: instrument error handlers\n if (original.length === 4) return original;\n\n const patched = function (\n this: ExpressLayer,\n req: PatchedRequest,\n res: express.Response\n ) {\n const { isLayerPathStored } = storeLayerPath(req, layerPath);\n\n const constructedRoute = getConstructedRoute(req);\n const actualMatchedRoute = getActualMatchedRoute(req);\n\n const attributes: Attributes = {\n [ATTR_HTTP_ROUTE]: actualMatchedRoute,\n };\n const metadata = getLayerMetadata(constructedRoute, layer, layerPath);\n const type = metadata.attributes[\n AttributeNames.EXPRESS_TYPE\n ] as ExpressLayerType;\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (rpcMetadata?.type === RPCType.HTTP) {\n rpcMetadata.route = actualMatchedRoute;\n }\n\n // verify against the config if the layer should be ignored\n if (isLayerIgnored(metadata.name, type, instrumentation.getConfig())) {\n if (type === ExpressLayerType.MIDDLEWARE) {\n (req[_LAYERS_STORE_PROPERTY] as string[]).pop();\n }\n return original.apply(this, arguments);\n }\n\n if (trace.getSpan(context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n\n const spanName = instrumentation._getSpanName(\n {\n request: req,\n layerType: type,\n route: constructedRoute,\n },\n metadata.name\n );\n const span = instrumentation.tracer.startSpan(spanName, {\n attributes: Object.assign(attributes, metadata.attributes),\n });\n\n const parentContext = context.active();\n let currentContext = trace.setSpan(parentContext, span);\n\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n safeExecuteInTheMiddle(\n () =>\n requestHook(span, {\n request: req,\n layerType: type,\n route: constructedRoute,\n }),\n e => {\n if (e) {\n diag.error('express instrumentation: request hook failed', e);\n }\n },\n true\n );\n }\n\n let spanHasEnded = false;\n // TODO: Fix router spans (getRouterPath does not work properly) to\n // have useful names before removing this branch\n if (\n metadata.attributes[AttributeNames.EXPRESS_TYPE] ===\n ExpressLayerType.ROUTER\n ) {\n span.end();\n spanHasEnded = true;\n currentContext = parentContext;\n }\n // listener for response.on('finish')\n const onResponseFinish = () => {\n if (spanHasEnded === false) {\n spanHasEnded = true;\n span.end();\n }\n };\n\n // verify we have a callback\n const args = Array.from(arguments);\n const callbackIdx = args.findIndex(arg => typeof arg === 'function');\n if (callbackIdx >= 0) {\n arguments[callbackIdx] = function () {\n // express considers anything but an empty value, \"route\" or \"router\"\n // passed to its callback to be an error\n const maybeError = arguments[0];\n const isError = ![undefined, null, 'route', 'router'].includes(\n maybeError\n );\n if (!spanHasEnded && isError) {\n const [error, message] = asErrorAndMessage(maybeError);\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n }\n\n if (spanHasEnded === false) {\n spanHasEnded = true;\n req.res?.removeListener('finish', onResponseFinish);\n span.end();\n }\n if (!(req.route && isError) && isLayerPathStored) {\n (req[_LAYERS_STORE_PROPERTY] as string[]).pop();\n }\n const callback = args[callbackIdx] as Function;\n // Preserve the active context (which may include baggage set by middleware)\n // but restore the parent span to prevent sibling middleware spans\n // from nesting under each other\n const activeContext = context.active();\n const parentSpan = trace.getSpan(parentContext);\n const nextContext = parentSpan\n ? trace.setSpan(activeContext, parentSpan)\n : activeContext;\n return context.bind(nextContext, callback).apply(this, arguments);\n };\n }\n\n try {\n return context.bind(currentContext, original).apply(this, arguments);\n } catch (anyError) {\n const [error, message] = asErrorAndMessage(anyError);\n span.recordException(error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n throw anyError;\n } finally {\n /**\n * At this point if the callback wasn't called, that means either the\n * layer is asynchronous (so it will call the callback later on) or that\n * the layer directly ends the http response, so we'll hook into the \"finish\"\n * event to handle the later case.\n */\n if (!spanHasEnded) {\n res.once('finish', onResponseFinish);\n }\n }\n };\n\n // `handle` isn't just a regular function in some cases. It also contains\n // some properties holding metadata and state so we need to proxy them\n // through through patched function\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1950\n // Also some apps/libs do their own patching before OTEL and have these properties\n // in the proptotype. So we use a `for...in` loop to get own properties and also\n // any enumerable prop in the prototype chain\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2271\n for (const key in original) {\n Object.defineProperty(patched, key, {\n get() {\n return original[key];\n },\n set(value) {\n original[key] = value;\n },\n });\n }\n return patched;\n });\n }\n\n _getSpanName(info: ExpressRequestInfo, defaultName: string) {\n const { spanNameHook } = this.getConfig();\n\n if (!(spanNameHook instanceof Function)) {\n return defaultName;\n }\n\n try {\n return spanNameHook(info, defaultName) ?? defaultName;\n } catch (err) {\n diag.error(\n 'express instrumentation: error calling span name rewrite hook',\n err\n );\n return defaultName;\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { ExpressInstrumentation } from './instrumentation';\nexport { ExpressLayerType } from './enums/ExpressLayerType';\nexport { AttributeNames } from './enums/AttributeNames';\nexport type {\n ExpressInstrumentationConfig,\n ExpressRequestCustomAttributeFunction,\n ExpressRequestInfo,\n IgnoreMatcher,\n LayerPathSegment,\n SpanNameHook,\n} from './types';\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type * as http from 'node:http';\nimport type { Span } from '@opentelemetry/api';\nimport type { ExpressRequestInfo } from '@opentelemetry/instrumentation-express';\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n captureException,\n debug,\n defineIntegration,\n getDefaultIsolationScope,\n getIsolationScope,\n httpRequestToRequestData,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n spanToJSON,\n} from '@sentry/core';\nimport { addOriginToSpan, ensureIsWrapped, generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build';\n\nconst INTEGRATION_NAME = 'Express';\n\nfunction requestHook(span: Span): void {\n addOriginToSpan(span, 'auto.http.otel.express');\n\n const attributes = spanToJSON(span).data;\n // this is one of: middleware, request_handler, router\n const type = attributes['express.type'];\n\n if (type) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.express`);\n }\n\n // Also update the name, we don't need to \"middleware - \" prefix\n const name = attributes['express.name'];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n}\n\nfunction spanNameHook(info: ExpressRequestInfo, defaultName: string): string {\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is still default isolation scope - skipping setting transactionName');\n return defaultName;\n }\n if (info.layerType === 'request_handler') {\n // type cast b/c Otel unfortunately types info.request as any :(\n const req = info.request as { method?: string };\n const method = req.method ? req.method.toUpperCase() : 'GET';\n getIsolationScope().setTransactionName(`${method} ${info.route}`);\n }\n return defaultName;\n}\n\nexport const instrumentExpress = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new ExpressInstrumentation({\n requestHook: span => requestHook(span),\n spanNameHook: (info, defaultName) => spanNameHook(info, defaultName),\n }),\n);\n\nconst _expressIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentExpress();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for [Express](https://expressjs.com/).\n *\n * If you also want to capture errors, you need to call `setupExpressErrorHandler(app)` after you set up your Express server.\n *\n * For more information, see the [express documentation](https://docs.sentry.io/platforms/javascript/guides/express/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.expressIntegration()],\n * })\n * ```\n */\nexport const expressIntegration = defineIntegration(_expressIntegration);\n\ninterface MiddlewareError extends Error {\n status?: number | string;\n statusCode?: number | string;\n status_code?: number | string;\n output?: {\n statusCode?: number | string;\n };\n}\n\ntype ExpressMiddleware = (req: http.IncomingMessage, res: http.ServerResponse, next: () => void) => void;\n\ntype ExpressErrorMiddleware = (\n error: MiddlewareError,\n req: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error: MiddlewareError) => void,\n) => void;\n\ninterface ExpressHandlerOptions {\n /**\n * Callback method deciding whether error should be captured and sent to Sentry\n * @param error Captured middleware error\n */\n shouldHandleError?(this: void, error: MiddlewareError): boolean;\n}\n\n/**\n * An Express-compatible error handler.\n */\nexport function expressErrorHandler(options?: ExpressHandlerOptions): ExpressErrorMiddleware {\n return function sentryErrorMiddleware(\n error: MiddlewareError,\n request: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error: MiddlewareError) => void,\n ): void {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n // When an error happens, the `expressRequestHandler` middleware does not run, so we set it here too\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n\n if (shouldHandleError(error)) {\n const eventId = captureException(error, { mechanism: { type: 'auto.middleware.express', handled: false } });\n (res as { sentry?: string }).sentry = eventId;\n }\n\n next(error);\n };\n}\n\nfunction expressRequestHandler(): ExpressMiddleware {\n return function sentryRequestMiddleware(\n request: http.IncomingMessage,\n _res: http.ServerResponse,\n next: () => void,\n ): void {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n next();\n };\n}\n\n/**\n * Add an Express error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const express = require(\"express\");\n *\n * const app = express();\n *\n * // Add your routes, etc.\n *\n * // Add this after all routes,\n * // but before any and other error-handling middlewares are defined\n * Sentry.setupExpressErrorHandler(app);\n *\n * app.listen(3000);\n * ```\n */\nexport function setupExpressErrorHandler(\n app: { use: (middleware: ExpressMiddleware | ExpressErrorMiddleware) => unknown },\n options?: ExpressHandlerOptions,\n): void {\n app.use(expressRequestHandler());\n app.use(expressErrorHandler(options));\n ensureIsWrapped(app.use, 'express');\n}\n\nfunction getStatusCodeFromResponse(error: MiddlewareError): number {\n const statusCode = error.status || error.statusCode || error.status_code || error.output?.statusCode;\n return statusCode ? parseInt(statusCode as string, 10) : 500;\n}\n\n/** Returns true if response code is internal server error */\nfunction defaultShouldHandleError(error: MiddlewareError): boolean {\n const status = getStatusCodeFromResponse(error);\n return status >= 500;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport enum SemconvStability {\n /** Emit only stable semantic conventions. */\n STABLE = 0x1,\n /** Emit only old semantic conventions. */\n OLD = 0x2,\n /** Emit both stable and old semantic conventions. */\n DUPLICATE = 0x1 | 0x2,\n}\n\n// Common namespaces mentioned in semantic-conventions docs, but allow\n// other custom strings.\ntype SemConvStabilityNamespace =\n | 'http'\n | 'messaging'\n | 'database'\n | 'k8s'\n | (string & {});\n\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nexport function semconvStabilityFromStr(\n namespace: SemConvStabilityNamespace,\n str: string | undefined\n) {\n let semconvStability = SemconvStability.OLD;\n\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n } else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n\n return semconvStability;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport * as types from '../../types';\nimport * as path from 'path';\nimport { types as utilTypes } from 'util';\nimport { satisfies } from '../../semver';\nimport { wrap, unwrap, massWrap, massUnwrap } from '../../shimmer';\nimport { InstrumentationAbstract } from '../../instrumentation';\nimport {\n RequireInTheMiddleSingleton,\n Hooked,\n} from './RequireInTheMiddleSingleton';\nimport type { HookFn } from 'import-in-the-middle';\nimport { Hook as HookImport } from 'import-in-the-middle';\nimport {\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n} from '../../types';\nimport { diag } from '@opentelemetry/api';\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook as HookRequire } from 'require-in-the-middle';\nimport { readFileSync } from 'fs';\nimport { isWrapped } from '../../utils';\n\n/**\n * Base abstract class for instrumenting node plugins\n */\nexport abstract class InstrumentationBase<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n >\n extends InstrumentationAbstract\n implements types.Instrumentation\n{\n private _modules: InstrumentationModuleDefinition[];\n private _hooks: (Hooked | HookRequire)[] = [];\n private _requireInTheMiddleSingleton: RequireInTheMiddleSingleton =\n RequireInTheMiddleSingleton.getInstance();\n private _enabled = false;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n super(instrumentationName, instrumentationVersion, config);\n\n let modules = this.init();\n\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n\n this._modules = (modules as InstrumentationModuleDefinition[]) || [];\n\n if (this._config.enabled) {\n this.enable();\n }\n }\n\n protected override _wrap: typeof wrap = (moduleExports, name, wrapper) => {\n if (isWrapped(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!utilTypes.isProxy(moduleExports)) {\n return wrap(moduleExports, name, wrapper);\n } else {\n const wrapped = wrap(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n\n protected override _unwrap: typeof unwrap = (moduleExports, name) => {\n if (!utilTypes.isProxy(moduleExports)) {\n return unwrap(moduleExports, name);\n } else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n\n protected override _massWrap: typeof massWrap = (\n moduleExportsArray,\n names,\n wrapper\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n\n protected override _massUnwrap: typeof massUnwrap = (\n moduleExportsArray,\n names\n ) => {\n if (!moduleExportsArray) {\n diag.error('must provide one or more modules to patch');\n return;\n } else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n\n if (!(names && Array.isArray(names))) {\n diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n\n private _warnOnPreloadedModules(): void {\n this._modules.forEach((module: InstrumentationModuleDefinition) => {\n const { name } = module;\n try {\n const resolvedModule = require.resolve(name);\n if (require.cache[resolvedModule]) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(\n `Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`\n );\n }\n } catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n\n private _extractPackageVersion(baseDir: string): string | undefined {\n try {\n const json = readFileSync(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n } catch {\n diag.warn('Failed extracting version', baseDir);\n }\n\n return undefined;\n }\n\n private _onRequire(\n module: InstrumentationModuleDefinition,\n exports: T,\n name: string,\n baseDir?: string | void\n ): T {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs core module on require hook',\n {\n module: module.name,\n }\n );\n return module.patch(exports);\n }\n }\n return exports;\n }\n\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (\n isSupported(module.supportedVersions, version, module.includePrerelease)\n ) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for module on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n }\n );\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(\n f =>\n f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease)\n );\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on require hook',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n }\n );\n\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion) as T;\n }\n return patchedExports;\n }, exports);\n }\n\n public enable(): void {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Applying instrumentation patch for nodejs module file on instrumentation enabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn: HookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire: OnRequireFn = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new HookRequire([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n\n this._hooks.push(hook);\n const esmHook = new HookImport(\n [module.name],\n { internals: true },\n hookFn\n );\n this._hooks.push(esmHook);\n }\n }\n\n public disable(): void {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n }\n );\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug(\n 'Removing instrumentation patch for nodejs module file on instrumentation disabled',\n {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n }\n );\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n}\n\nfunction isSupported(\n supportedVersions: string[],\n version?: string,\n includePrerelease?: boolean\n): boolean {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n\n return supportedVersions.some(supportedVersion => {\n return satisfies(version, supportedVersion, { includePrerelease });\n });\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from '../types/LoggerProvider';\n\nexport const GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\n\ntype Get = (version: number) => T;\ntype OtelGlobal = Partial<{\n [GLOBAL_LOGS_API_KEY]: Get;\n}>;\n\nexport const _global = globalThis as OtelGlobal;\n\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nexport function makeGetter(\n requiredVersion: number,\n instance: T,\n fallback: T\n): Get {\n return (version: number): T =>\n version === requiredVersion ? instance : fallback;\n}\n\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexport const API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { NOOP_LOGGER } from './NoopLogger';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { LogRecord } from './types/LogRecord';\n\nexport class ProxyLogger implements Logger {\n // When a real implementation is provided, this will be it\n private _delegate?: Logger;\n private _provider: LoggerDelegator;\n public readonly name: string;\n public readonly version?: string | undefined;\n public readonly options?: LoggerOptions | undefined;\n\n constructor(\n provider: LoggerDelegator,\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord: LogRecord): void {\n this._getLogger().emit(logRecord);\n }\n\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n private _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(\n this.name,\n this.version,\n this.options\n );\n if (!logger) {\n return NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\n\nexport interface LoggerDelegator {\n _getDelegateLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n API_BACKWARDS_COMPATIBILITY_VERSION,\n GLOBAL_LOGS_API_KEY,\n _global,\n makeGetter,\n} from '../internal/global-utils';\nimport { LoggerProvider } from '../types/LoggerProvider';\nimport { NOOP_LOGGER_PROVIDER } from '../NoopLoggerProvider';\nimport { Logger } from '../types/Logger';\nimport { LoggerOptions } from '../types/LoggerOptions';\nimport { ProxyLoggerProvider } from '../ProxyLoggerProvider';\n\nexport class LogsAPI {\n private static _instance?: LogsAPI;\n\n private _proxyLoggerProvider = new ProxyLoggerProvider();\n\n private constructor() {}\n\n public static getInstance(): LogsAPI {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalLoggerProvider(provider: LoggerProvider): LoggerProvider {\n if (_global[GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n\n _global[GLOBAL_LOGS_API_KEY] = makeGetter(\n API_BACKWARDS_COMPATIBILITY_VERSION,\n provider,\n NOOP_LOGGER_PROVIDER\n );\n this._proxyLoggerProvider._setDelegate(provider);\n\n return provider;\n }\n\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n public getLoggerProvider(): LoggerProvider {\n return (\n _global[GLOBAL_LOGS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??\n this._proxyLoggerProvider\n );\n }\n\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n public getLogger(\n name: string,\n version?: string,\n options?: LoggerOptions\n ): Logger {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n\n /** Remove the global logger provider */\n public disable(): void {\n delete _global[GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { OnRequireFn } from 'require-in-the-middle';\nimport { Hook } from 'require-in-the-middle';\nimport * as path from 'path';\nimport { ModuleNameTrie, ModuleNameSeparator } from './ModuleNameTrie';\n\nexport type Hooked = {\n moduleName: string;\n onRequire: OnRequireFn;\n};\n\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nexport class RequireInTheMiddleSingleton {\n private _moduleNameTrie: ModuleNameTrie = new ModuleNameTrie();\n private static _instance?: RequireInTheMiddleSingleton;\n\n private constructor() {\n this._initialize();\n }\n\n private _initialize() {\n new Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null,\n { internals: true },\n (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n\n return exports;\n }\n );\n }\n\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName: string, onRequire: OnRequireFn): Hooked {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance(): RequireInTheMiddleSingleton {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha) return new RequireInTheMiddleSingleton();\n\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\n\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath: string): string {\n return path.sep !== ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameSeparator)\n : moduleNameOrPath;\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { InstrumentationModuleFile } from './types';\nimport { normalize } from './platform/index';\n\nexport class InstrumentationNodeModuleFile\n implements InstrumentationModuleFile\n{\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: (moduleExports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch: (moduleExports?: any, moduleVersion?: string) => void\n ) {\n this.name = normalize(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n} from './types';\n\nexport class InstrumentationNodeModuleDefinition\n implements InstrumentationModuleDefinition\n{\n files: InstrumentationModuleFile[];\n public name: string;\n public supportedVersions: string[];\n public patch;\n public unpatch;\n constructor(\n name: string,\n supportedVersions: string[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch?: (exports: any, moduleVersion?: string) => any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch?: (exports: any, moduleVersion?: string) => void,\n files?: InstrumentationModuleFile[]\n ) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport type { Logger } from './types/Logger';\nexport type { LoggerProvider } from './types/LoggerProvider';\nexport { SeverityNumber } from './types/LogRecord';\nexport type { LogAttributes, LogBody, LogRecord } from './types/LogRecord';\nexport type { LoggerOptions } from './types/LoggerOptions';\nexport type { AnyValue, AnyValueMap } from './types/AnyValue';\nexport { NOOP_LOGGER, NoopLogger } from './NoopLogger';\n\nimport { LogsAPI } from './api/logs';\nexport const logs = LogsAPI.getInstance();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { trace, metrics } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport {\n disableInstrumentations,\n enableInstrumentations,\n} from './autoLoaderUtils';\nimport { AutoLoaderOptions } from './types_internal';\n\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nexport function registerInstrumentations(\n options: AutoLoaderOptions\n): () => void {\n const tracerProvider = options.tracerProvider || trace.getTracerProvider();\n const meterProvider = options.meterProvider || metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n\n enableInstrumentations(\n instrumentations,\n tracerProvider,\n meterProvider,\n loggerProvider\n );\n\n return () => {\n disableInstrumentations(instrumentations);\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nexport { registerInstrumentations } from './autoLoader';\nexport { InstrumentationBase } from './platform/index';\nexport { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';\nexport { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';\nexport type {\n Instrumentation,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationModuleFile,\n ShimWrapped,\n SpanCustomizationHook,\n} from './types';\nexport type { AutoLoaderOptions, AutoLoaderResult } from './types_internal';\nexport {\n isWrapped,\n safeExecuteInTheMiddle,\n safeExecuteInTheMiddleAsync,\n} from './utils';\nexport { SemconvStability, semconvStabilityFromStr } from './semconvStability';\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport {\n diag,\n DiagLogger,\n metrics,\n Meter,\n MeterProvider,\n trace,\n Tracer,\n TracerProvider,\n Span,\n} from '@opentelemetry/api';\nimport { Logger, LoggerProvider, logs } from '@opentelemetry/api-logs';\nimport * as shimmer from './shimmer';\nimport {\n InstrumentationModuleDefinition,\n Instrumentation,\n InstrumentationConfig,\n SpanCustomizationHook,\n} from './types';\n\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nexport abstract class InstrumentationAbstract<\n ConfigType extends InstrumentationConfig = InstrumentationConfig,\n> implements Instrumentation\n{\n protected _config: ConfigType = {} as ConfigType;\n\n private _tracer: Tracer;\n private _meter: Meter;\n private _logger: Logger;\n protected _diag: DiagLogger;\n public readonly instrumentationName: string;\n public readonly instrumentationVersion: string;\n\n constructor(\n instrumentationName: string,\n instrumentationVersion: string,\n config: ConfigType\n ) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n\n this.setConfig(config);\n\n this._diag = diag.createComponentLogger({\n namespace: instrumentationName,\n });\n\n this._tracer = trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n\n /* Api to wrap instrumented method */\n protected _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n protected _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n protected _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n protected _massUnwrap = shimmer.massUnwrap;\n\n /* Returns meter */\n protected get meter(): Meter {\n return this._meter;\n }\n\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n public setMeterProvider(meterProvider: MeterProvider): void {\n this._meter = meterProvider.getMeter(\n this.instrumentationName,\n this.instrumentationVersion\n );\n\n this._updateMetricInstruments();\n }\n\n /* Returns logger */\n protected get logger(): Logger {\n return this._logger;\n }\n\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n public setLoggerProvider(loggerProvider: LoggerProvider): void {\n this._logger = loggerProvider.getLogger(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n public getModuleDefinitions(): InstrumentationModuleDefinition[] {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n\n return initResult;\n }\n\n /**\n * Sets the new metric instruments with the current Meter.\n */\n protected _updateMetricInstruments(): void {\n return;\n }\n\n /* Returns InstrumentationConfig */\n public getConfig(): ConfigType {\n return this._config;\n }\n\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n public setConfig(config: ConfigType): void {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n public setTracerProvider(tracerProvider: TracerProvider): void {\n this._tracer = tracerProvider.getTracer(\n this.instrumentationName,\n this.instrumentationVersion\n );\n }\n\n /* Returns tracer */\n protected get tracer(): Tracer {\n return this._tracer;\n }\n\n /* Enable plugin */\n public abstract enable(): void;\n\n /* Disable plugin */\n public abstract disable(): void;\n\n /**\n * Init method in which plugin should define _modules and patches for\n * methods.\n */\n protected abstract init():\n | InstrumentationModuleDefinition\n | InstrumentationModuleDefinition[]\n | void;\n\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n protected _runSpanCustomizationHook(\n hookHandler: SpanCustomizationHook | undefined,\n triggerName: string,\n span: Span,\n info: SpanCustomizationInfoType\n ) {\n if (!hookHandler) {\n return;\n }\n\n try {\n hookHandler(span, info);\n } catch (e) {\n this._diag.error(\n `Error running span customization hook due to exception in handler`,\n { triggerName },\n e\n );\n }\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NOOP_LOGGER_PROVIDER } from './NoopLoggerProvider';\nimport { ProxyLogger } from './ProxyLogger';\n\nexport class ProxyLoggerProvider implements LoggerProvider {\n private _delegate?: LoggerProvider;\n\n getLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger {\n return (\n this._getDelegateLogger(name, version, options) ??\n new ProxyLogger(this, name, version, options)\n );\n }\n\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate(): LoggerProvider {\n return this._delegate ?? NOOP_LOGGER_PROVIDER;\n }\n\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate: LoggerProvider) {\n this._delegate = delegate;\n }\n\n /**\n * @internal\n */\n _getDelegateLogger(\n name: string,\n version?: string | undefined,\n options?: LoggerOptions | undefined\n ): Logger | undefined {\n return this._delegate?.getLogger(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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 * BSD 2-Clause License\n *\n * Copyright (c) 2013-2019, Forrest L Norvell\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* Modified by OpenTelemetry Authors\n * - converted to TypeScript\n * - aligned with style-guide\n */\n\nimport { ShimWrapped } from './types';\n\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger: typeof console.error = console.error.bind(console);\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj: object, name: PropertyKey, value: unknown): void {\n const enumerable =\n !!obj[name as keyof typeof obj] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\n\nexport const wrap = (\n nodule: Nodule,\n name: FieldName,\n wrapper: (original: Nodule[FieldName], name: FieldName) => Nodule[FieldName]\n): ShimWrapped | undefined => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n\n const original = nodule[name];\n\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n\n const wrapped = wrapper(original, name) as object;\n\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped as ShimWrapped;\n};\n\nexport const massWrap = (\n nodules: Nodule[],\n names: FieldName[],\n wrapper: (original: Nodule[FieldName]) => Nodule[FieldName]\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n wrap(nodule, name, wrapper);\n });\n });\n};\n\nexport const unwrap = (\n nodule: Nodule,\n name: keyof Nodule\n): void => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n\n const wrapped = nodule[name] as unknown as ShimWrapped;\n\n if (!wrapped.__unwrap) {\n logger(\n 'no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?'\n );\n } else {\n wrapped.__unwrap();\n return;\n }\n};\n\nexport const massUnwrap = (\n nodules: Nodule[],\n names: Array\n): void => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n\n nodules.forEach(nodule => {\n names.forEach(name => {\n unwrap(nodule, name);\n });\n });\n};\n\nexport interface ShimmerOptions {\n logger?: typeof console.error;\n}\n\nexport default function shimmer(options: ShimmerOptions): void {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n } else {\n logger = options.logger;\n }\n }\n}\n\nshimmer.wrap = wrap;\nshimmer.massWrap = massWrap;\nshimmer.unwrap = unwrap;\nshimmer.massUnwrap = massUnwrap;\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { Logger } from './types/Logger';\nimport { LogRecord } from './types/LogRecord';\n\nexport class NoopLogger implements Logger {\n emit(_logRecord: LogRecord): void {}\n}\n\nexport const NOOP_LOGGER = new NoopLogger();\n","/*\n * Copyright The OpenTelemetry Authors\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// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\n\nimport { diag } from '@opentelemetry/api';\n\nconst VERSION_REGEXP =\n /^(?:v)?(?(?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-]+)*))?$/;\nconst RANGE_REGEXP =\n /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|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\nconst operatorResMap: { [op: string]: number[] } = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n\n/** Interface for the options to configure semantic versioning satisfy check. */\nexport interface SatisfiesOptions {\n /**\n * If set to true, the pre-release checks will be included\n * as described [here](https://github.com/npm/node-semver#prerelease-tags).\n */\n includePrerelease?: boolean;\n}\n\ninterface ParsedVersion {\n op?: string;\n\n version?: string;\n versionSegments?: string[];\n versionSegmentCount?: number;\n\n prerelease?: string;\n prereleaseSegments?: string[];\n prereleaseSegmentCount?: number;\n\n build?: string;\n\n invalid?: boolean;\n}\n\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nexport function satisfies(\n version: string,\n range: string,\n options?: SatisfiesOptions\n): boolean {\n // Strict semver format check\n if (!_validateVersion(version)) {\n diag.error(`Invalid version: ${version}`);\n return false;\n }\n\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n\n // Parse version\n const parsedVersion: ParsedVersion | undefined = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n\n const allParsedRanges: ParsedVersion[] = [];\n\n // Check given version whether it satisfies given range expression\n const checkResult: boolean = _doSatisfies(\n parsedVersion,\n range,\n allParsedRanges,\n options\n );\n\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\n\nfunction _validateVersion(version: unknown): boolean {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\n\nfunction _doSatisfies(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges: string[] = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n } else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n } else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges: string[] = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\n\nfunction _checkRange(\n parsedVersion: ParsedVersion,\n range: string,\n allParsedRanges: ParsedVersion[],\n options?: SatisfiesOptions\n): boolean {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n } else {\n // Validate and parse range\n const parsedRange: ParsedVersion = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\n\nfunction _satisfies(\n parsedVersion: ParsedVersion,\n parsedRange: ParsedVersion\n): boolean {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n\n // Compare version segment first\n let comparisonResult: number = _compareVersionSegments(\n parsedVersion.versionSegments || [],\n parsedRange.versionSegments || []\n );\n\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments: string[] =\n parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments: string[] =\n parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n } else if (\n !versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length\n ) {\n comparisonResult = 1;\n } else if (\n versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length\n ) {\n comparisonResult = -1;\n } else {\n comparisonResult = _compareVersionSegments(\n versionPrereleaseSegments,\n rangePrereleaseSegments\n );\n }\n }\n\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op!]?.includes(comparisonResult);\n}\n\nfunction _doPreleaseCheck(\n parsedVersion: ParsedVersion,\n allParsedRanges: ParsedVersion[]\n): boolean {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(\n r => r.prerelease && r.version === parsedVersion.version\n );\n }\n return true;\n}\n\nfunction _normalizeRange(range: string, options?: SatisfiesOptions): string {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\n\nfunction isX(id?: string): boolean {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\nfunction _parseVersion(versionString: string): ParsedVersion | undefined {\n const match: RegExpMatchArray | null = versionString.match(VERSION_REGEXP);\n if (!match) {\n diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n return {\n op: undefined,\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _parseRange(rangeString: string): ParsedVersion {\n if (!rangeString) {\n return {};\n }\n\n const match: RegExpMatchArray | null = rangeString.match(RANGE_REGEXP);\n if (!match) {\n diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n\n let op: string = match!.groups!.op;\n const version: string = match!.groups!.version;\n const prerelease: string = match!.groups!.prerelease;\n const build: string = match!.groups!.build;\n\n const versionSegments: string[] = version.split('.');\n const prereleaseSegments: string[] | undefined = prerelease?.split('.');\n\n if (op === '==') {\n op = '=';\n }\n\n return {\n op: op || '=',\n\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n\n build,\n };\n}\n\nfunction _isWildcard(s: string | undefined): boolean {\n return s === '*' || s === 'x' || s === 'X';\n}\n\nfunction _parseVersionString(v: string): string | number {\n const n: number = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\n\nfunction _normalizeVersionType(\n a: string | number,\n b: string | number\n): [string, string] | [number, number] {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a as number, b as number];\n } else if (typeof a === 'string') {\n return [a as string, b as string];\n } else {\n throw new Error('Version segments can only be strings or numbers');\n }\n } else {\n return [String(a), String(b)];\n }\n}\n\nfunction _compareVersionStrings(v1: string, v2: string): number {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(\n _parseVersionString(v1),\n _parseVersionString(v2)\n );\n if (parsedV1 > parsedV2) {\n return 1;\n } else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\n\nfunction _compareVersionSegments(v1: string[], v2: string[]): number {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res: number = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\n\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\n\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\n\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN =\n `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\n\nconst HYPHENRANGE =\n `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\n\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\n\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp: string): string {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n } else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp: string, options?: SatisfiesOptions): string {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n } else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n } else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n } else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n } else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp: string, options?: SatisfiesOptions): string {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n\n if (gtlt === '<') {\n pr = '-0';\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n\n return ret;\n });\n}\n\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp: string, options?: SatisfiesOptions): string {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(\n r,\n (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n } else if (fpr) {\n from = `>=${from}`;\n } else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n } else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n } else {\n to = `<=${to}`;\n }\n\n return `${from} ${to}`.trim();\n }\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { LoggerProvider } from './types/LoggerProvider';\nimport { Logger } from './types/Logger';\nimport { LoggerOptions } from './types/LoggerOptions';\nimport { NoopLogger } from './NoopLogger';\n\nexport class NoopLoggerProvider implements LoggerProvider {\n getLogger(\n _name: string,\n _version?: string | undefined,\n _options?: LoggerOptions | undefined\n ): Logger {\n return new NoopLogger();\n }\n}\n\nexport const NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport type { Hooked } from './RequireInTheMiddleSingleton';\n\nexport const ModuleNameSeparator = '/';\n\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks: Array<{ hook: Hooked; insertedId: number }> = [];\n children: Map = new Map();\n}\n\ntype ModuleNameTrieSearchOptions = {\n /**\n * Whether to return the results in insertion order\n */\n maintainInsertionOrder?: boolean;\n /**\n * Whether to return only full matches\n */\n fullOnly?: boolean;\n};\n\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nexport class ModuleNameTrie {\n private _trie: ModuleNameTrieNode = new ModuleNameTrieNode();\n private _counter: number = 0;\n\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook: Hooked) {\n let trieNode = this._trie;\n\n for (const moduleNamePart of hook.moduleName.split(ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(\n moduleName: string,\n { maintainInsertionOrder, fullOnly }: ModuleNameTrieSearchOptions = {}\n ): Hooked[] {\n let trieNode = this._trie;\n const results: ModuleNameTrieNode['hooks'] = [];\n let foundFull = true;\n\n for (const moduleNamePart of moduleName.split(ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { ShimWrapped } from './types';\n\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport function safeExecuteInTheMiddle(\n execute: () => T,\n onFinish: (e: Error | undefined, result: T | undefined) => void,\n preventThrowingError?: boolean\n): T {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = execute();\n } catch (e) {\n error = e;\n } finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nexport async function safeExecuteInTheMiddleAsync(\n execute: () => T,\n onFinish: (\n e: Error | undefined,\n result: T | undefined\n ) => Promise | void,\n preventThrowingError?: boolean\n): Promise {\n let error: Error | undefined;\n let result: T | undefined;\n try {\n result = await execute();\n } catch (e) {\n error = e;\n } finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result as T;\n }\n}\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nexport function isWrapped(func: unknown): func is ShimWrapped {\n return (\n typeof func === 'function' &&\n typeof (func as ShimWrapped).__original === 'function' &&\n typeof (func as ShimWrapped).__unwrap === 'function' &&\n (func as ShimWrapped).__wrapped === true\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\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\nimport { TracerProvider, MeterProvider } from '@opentelemetry/api';\nimport { Instrumentation } from './types';\nimport { LoggerProvider } from '@opentelemetry/api-logs';\n\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nexport function enableInstrumentations(\n instrumentations: Instrumentation[],\n tracerProvider?: TracerProvider,\n meterProvider?: MeterProvider,\n loggerProvider?: LoggerProvider\n): void {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\n\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nexport function disableInstrumentations(\n instrumentations: Instrumentation[]\n): void {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\n","export const balanced = (\n a: string | RegExp,\n b: string | RegExp,\n str: string,\n) => {\n const ma = a instanceof RegExp ? maybeMatch(a, str) : a\n const mb = b instanceof RegExp ? maybeMatch(b, str) : b\n\n const r = ma !== null && mb != null && range(ma, mb, str)\n\n return (\n r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + ma.length, r[1]),\n post: str.slice(r[1] + mb.length),\n }\n )\n}\n\nconst maybeMatch = (reg: RegExp, str: string) => {\n const m = str.match(reg)\n return m ? m[0] : null\n}\n\nexport const range = (\n a: string,\n b: string,\n str: string,\n): undefined | [number, number] => {\n let begs: number[],\n beg: number | undefined,\n left: number,\n right: number | undefined = undefined,\n result: undefined | [number, number]\n let ai = str.indexOf(a)\n let bi = str.indexOf(b, ai + 1)\n let i = ai\n\n if (ai >= 0 && bi > 0) {\n if (a === b) {\n return [ai, bi]\n }\n begs = []\n left = str.length\n\n while (i >= 0 && !result) {\n if (i === ai) {\n begs.push(i)\n ai = str.indexOf(a, i + 1)\n } else if (begs.length === 1) {\n const r = begs.pop()\n if (r !== undefined) result = [r, bi]\n } else {\n beg = begs.pop()\n if (beg !== undefined && beg < left) {\n left = beg\n right = bi\n }\n\n bi = str.indexOf(b, i + 1)\n }\n\n i = ai < bi && ai >= 0 ? ai : bi\n }\n\n if (begs.length && right !== undefined) {\n result = [left, right]\n }\n }\n\n return result\n}\n","import { balanced } from 'balanced-match'\n\nconst escSlash = '\\0SLASH' + Math.random() + '\\0'\nconst escOpen = '\\0OPEN' + Math.random() + '\\0'\nconst escClose = '\\0CLOSE' + Math.random() + '\\0'\nconst escComma = '\\0COMMA' + Math.random() + '\\0'\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0'\nconst escSlashPattern = new RegExp(escSlash, 'g')\nconst escOpenPattern = new RegExp(escOpen, 'g')\nconst escClosePattern = new RegExp(escClose, 'g')\nconst escCommaPattern = new RegExp(escComma, 'g')\nconst escPeriodPattern = new RegExp(escPeriod, 'g')\nconst slashPattern = /\\\\\\\\/g\nconst openPattern = /\\\\{/g\nconst closePattern = /\\\\}/g\nconst commaPattern = /\\\\,/g\nconst periodPattern = /\\\\\\./g\n\nexport const EXPANSION_MAX = 100_000\n\nfunction numeric(str: string) {\n return !isNaN(str as any) ? parseInt(str, 10) : str.charCodeAt(0)\n}\n\nfunction escapeBraces(str: string) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod)\n}\n\nfunction unescapeBraces(str: string) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.')\n}\n\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str: string) {\n if (!str) {\n return ['']\n }\n\n const parts: string[] = []\n const m = balanced('{', '}', str)\n\n if (!m) {\n return str.split(',')\n }\n\n const { pre, body, post } = m\n const p = pre.split(',')\n\n p[p.length - 1] += '{' + body + '}'\n const postParts = parseCommaParts(post)\n if (post.length) {\n ;(p[p.length - 1] as string) += postParts.shift()\n p.push.apply(p, postParts)\n }\n\n parts.push.apply(parts, p)\n\n return parts\n}\n\nexport type BraceExpansionOptions = {\n max?: number\n}\n\nexport function expand(str: string, options: BraceExpansionOptions = {}) {\n if (!str) {\n return []\n }\n\n const { max = EXPANSION_MAX } = options\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2)\n }\n\n return expand_(escapeBraces(str), max, true).map(unescapeBraces)\n}\n\nfunction embrace(str: string) {\n return '{' + str + '}'\n}\n\nfunction isPadded(el: string) {\n return /^-?0\\d/.test(el)\n}\n\nfunction lte(i: number, y: number) {\n return i <= y\n}\n\nfunction gte(i: number, y: number) {\n return i >= y\n}\n\nfunction expand_(str: string, max: number, isTop: boolean): string[] {\n /** @type {string[]} */\n const expansions: string[] = []\n\n const m = balanced('{', '}', str)\n if (!m) return [str]\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre\n const post: string[] = m.post.length ? expand_(m.post, max, false) : ['']\n\n if (/\\$$/.test(m.pre)) {\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k]\n expansions.push(expansion)\n }\n } else {\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body)\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(\n m.body,\n )\n const isSequence = isNumericSequence || isAlphaSequence\n const isOptions = m.body.indexOf(',') >= 0\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post\n return expand_(str, max, true)\n }\n return [str]\n }\n\n let n: string[]\n if (isSequence) {\n n = m.body.split(/\\.\\./)\n } else {\n n = parseCommaParts(m.body)\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace)\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p)\n }\n /* c8 ignore stop */\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n let N: string[]\n\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0])\n const y = numeric(n[1])\n const width = Math.max(n[0].length, n[1].length)\n let incr =\n n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1\n let test = lte\n const reverse = y < x\n if (reverse) {\n incr *= -1\n test = gte\n }\n const pad = n.some(isPadded)\n\n N = []\n\n for (let i = x; test(i, y); i += incr) {\n let c\n if (isAlphaSequence) {\n c = String.fromCharCode(i)\n if (c === '\\\\') {\n c = ''\n }\n } else {\n c = String(i)\n if (pad) {\n const need = width - c.length\n if (need > 0) {\n const z = new Array(need + 1).join('0')\n if (i < 0) {\n c = '-' + z + c.slice(1)\n } else {\n c = z + c\n }\n }\n }\n }\n N.push(c)\n }\n } else {\n N = []\n\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j] as string, max, false))\n }\n }\n\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k]\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion)\n }\n }\n }\n }\n\n return expansions\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: unknown) => void = (\n pattern: unknown,\n): asserts pattern is string => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { : [, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } =\n {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n }\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n src: string,\n uFlag: boolean,\n consumed: number,\n hasMagic: boolean,\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n glob: string,\n position: number,\n): ParseClassResult => {\n const pos = position\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression')\n }\n /* c8 ignore stop */\n const ranges: string[] = []\n const negs: string[] = []\n\n let i = pos + 1\n let sawStart = false\n let uflag = false\n let escaping = false\n let negate = false\n let endPos = pos\n let rangeStart = ''\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i)\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true\n i++\n continue\n }\n\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1\n break\n }\n\n sawStart = true\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true\n i++\n continue\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true]\n }\n i += cls.length\n if (neg) negs.push(unip)\n else ranges.push(unip)\n uflag = uflag || u\n continue WHILE\n }\n }\n }\n\n // now it's just a normal character, effectively\n escaping = false\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n } else if (c === rangeStart) {\n ranges.push(braceEscape(c))\n }\n rangeStart = ''\n i++\n continue\n }\n\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'))\n i += 2\n continue\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c\n i += 2\n continue\n }\n\n // not the start of a range, just a single character\n ranges.push(braceEscape(c))\n i++\n }\n\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false]\n }\n\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true]\n }\n\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (\n negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate\n ) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n return [regexpEscape(r), false, endPos - pos, false]\n }\n\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n const comb =\n ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n : ranges.length ? sranges\n : snegs\n\n return [comb, uflag, endPos - pos, true]\n}\n","import type { MinimatchOptions } from './index.js'\n\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\n\nexport const unescape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n magicalBraces = true,\n }: Pick = {},\n) => {\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/\\[([^/\\\\])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^/\\\\])\\]/g, '$1$2')\n .replace(/\\\\([^/])/g, '$1')\n }\n return windowsPathsNoEscape ?\n s.replace(/\\[([^/\\\\{}])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^/\\\\{}])\\]/g, '$1$2')\n .replace(/\\\\([^/{}])/g, '$1')\n}\n","// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport type { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n// 1 2 3 4 5 6 1 2 3 46 5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n// v----- .* because there's more following,\n// v v otherwise, .+ because it must be\n// v v *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n// copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string | null): c is ExtglobType =>\n types.has(c as ExtglobType)\nconst isExtglobAST = (c: AST): c is AST & { type: ExtglobType } =>\n isExtglobType(c.type)\n\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n])\n\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n])\n\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n])\n\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map<\n ExtglobType,\n Map\n>([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n])\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nlet ID = 0\nexport class AST {\n type: ExtglobType | null\n readonly #root: AST\n\n #hasMagic?: boolean\n #uflag: boolean = false\n #parts: (string | AST)[] = []\n #parent?: AST\n #parentIndex: number\n #negs: AST[]\n #filledNegs: boolean = false\n #options: MinimatchOptions\n #toString?: string\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt: boolean = false\n id = ++ID\n\n get depth(): number {\n return (this.#parent?.depth ?? -1) + 1\n }\n\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n }\n }\n\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n this.type = type\n // extglobs are inherently magical\n if (type) this.#hasMagic = true\n this.#parent = parent\n this.#root = this.#parent ? this.#parent.#root : this\n this.#options = this.#root === this ? options : this.#root.#options\n this.#negs = this.#root === this ? [] : this.#root.#negs\n if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n }\n\n get hasMagic(): boolean | undefined {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined) return this.#hasMagic\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string') continue\n if (p.type || p.hasMagic) return (this.#hasMagic = true)\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic\n }\n\n // reconstructs the pattern\n toString(): string {\n return (\n this.#toString !== undefined ? this.#toString\n : !this.type ?\n (this.#toString = this.#parts.map(p => String(p)).join(''))\n : (this.#toString =\n this.type +\n '(' +\n this.#parts.map(p => String(p)).join('|') +\n ')')\n )\n }\n\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root) throw new Error('should only call on root')\n if (this.#filledNegs) return this\n /* c8 ignore stop */\n\n // call toString() once to fill this out\n this.toString()\n this.#filledNegs = true\n let n: AST | undefined\n while ((n = this.#negs.pop())) {\n if (n.type !== '!') continue\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p: AST | undefined = n\n let pp = p.#parent\n while (pp) {\n for (\n let i = p.#parentIndex + 1;\n !pp.type && i < pp.#parts.length;\n i++\n ) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??')\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i])\n }\n }\n p = pp\n pp = p.#parent\n }\n }\n return this\n }\n\n push(...parts: (string | AST)[]) {\n for (const p of parts) {\n if (p === '') continue\n /* c8 ignore start */\n if (\n typeof p !== 'string' &&\n !(p instanceof AST && p.#parent === this)\n ) {\n throw new Error('invalid part: ' + p)\n }\n /* c8 ignore stop */\n this.#parts.push(p)\n }\n }\n\n toJSON() {\n const ret: unknown[] =\n this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n if (this.isStart() && !this.type) ret.unshift([])\n if (\n this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))\n ) {\n ret.push({})\n }\n return ret\n }\n\n isStart(): boolean {\n if (this.#root === this) return true\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart()) return false\n if (this.#parentIndex === 0) return true\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i]\n if (!(pp instanceof AST && pp.type === '!')) {\n return false\n }\n }\n return true\n }\n\n isEnd(): boolean {\n if (this.#root === this) return true\n if (this.#parent?.type === '!') return true\n if (!this.#parent?.isEnd()) return false\n if (!this.type) return this.#parent?.isEnd()\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1\n }\n\n copyIn(part: AST | string) {\n if (typeof part === 'string') this.push(part)\n else this.push(part.clone(this))\n }\n\n clone(parent: AST) {\n const c = new AST(this.type, parent)\n for (const p of this.#parts) {\n c.copyIn(p)\n }\n return c\n }\n\n static #parseAST(\n str: string,\n ast: AST,\n pos: number,\n opt: MinimatchOptions,\n extDepth: number,\n ): number {\n const maxDepth = opt.maxExtglobRecursion ?? 2\n let escaping = false\n let inBrace = false\n let braceStart = -1\n let braceNeg = false\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth\n if (doRecurse) {\n ast.push(acc)\n acc = ''\n const ext = new AST(c, ast)\n i = AST.#parseAST(str, ext, i, opt, extDepth + 1)\n ast.push(ext)\n continue\n }\n acc += c\n }\n ast.push(acc)\n return i\n }\n\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1\n let part = new AST(null, ast)\n const parts: AST[] = []\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n const doRecurse =\n !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)))\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1\n part.push(acc)\n acc = ''\n const ext = new AST(c, part)\n part.push(ext)\n i = AST.#parseAST(str, ext, i, opt, extDepth + depthAdd)\n continue\n }\n if (c === '|') {\n part.push(acc)\n acc = ''\n parts.push(part)\n part = new AST(null, ast)\n continue\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true\n }\n part.push(acc)\n acc = ''\n ast.push(...parts, part)\n return i\n }\n acc += c\n }\n\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null\n ast.#hasMagic = undefined\n ast.#parts = [str.substring(pos - 1)]\n return i\n }\n\n #canAdoptWithSpace(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n return this.#canAdopt(child, adoptionWithSpaceMap)\n }\n\n #canAdopt(\n child?: AST | string,\n map: Map = adoptionMap,\n ): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canAdoptType(\n gc.type,\n map,\n )\n }\n #canAdoptType(\n c: string,\n map: Map = adoptionAnyMap,\n ): c is ExtglobType {\n return !!map.get(this.type as ExtglobType)?.includes(c as ExtglobType)\n }\n\n #adoptWithSpace(\n this: AST & { type: ExtglobType },\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const blank = new AST(null, gc, this.options)\n blank.#parts.push('')\n gc.push(blank)\n this.#adopt(child, index)\n }\n\n #adopt(\n child: AST & {\n type: null\n },\n index: number,\n ) {\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n this.#parts.splice(index, 1, ...gc.#parts)\n for (const p of gc.#parts) {\n if (typeof p === 'object') p.#parent = this\n }\n this.#toString = undefined\n }\n\n #canUsurpType(c: string): boolean {\n const m = usurpMap.get(this.type as ExtglobType)\n return !!m?.has(c as ExtglobType)\n }\n\n #canUsurp(child?: AST | string): child is AST & {\n type: null\n parts: [AST & { type: ExtglobType }]\n } {\n if (\n !child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1\n ) {\n return false\n }\n const gc = child.#parts[0]\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false\n }\n return (this as AST & { type: ExtglobType }).#canUsurpType(gc.type)\n }\n\n #usurp(this: AST & { type: ExtglobType }, child: AST & { type: null }) {\n const m = usurpMap.get(this.type as ExtglobType)\n const gc = child.#parts[0] as AST & { type: ExtglobType }\n const nt = m?.get(gc.type)\n /* c8 ignore start - impossible */\n if (!nt) return false\n /* c8 ignore stop */\n this.#parts = gc.#parts\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this\n }\n }\n this.type = nt\n this.#toString = undefined\n this.#emptyExt = false\n }\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n const ast = new AST(null, undefined, options)\n AST.#parseAST(pattern, ast, 0, options, 0)\n return ast\n }\n\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern(): MMRegExp | string {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root) return this.#root.toMMPattern()\n /* c8 ignore stop */\n const glob = this.toString()\n const [re, body, hasMagic, uflag] = this.toRegExpSource()\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic =\n hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase())\n if (!anyMagic) {\n return body\n }\n\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n })\n }\n\n get options() {\n return this.#options\n }\n\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(\n allowDot?: boolean,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n const dot = allowDot ?? !!this.#options.dot\n if (this.#root === this) {\n this.#flatten()\n this.#fillNegs()\n }\n if (!isExtglobAST(this)) {\n const noEmpty =\n this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string')\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] =\n typeof p === 'string' ?\n AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot)\n this.#hasMagic = this.#hasMagic || hasMagic\n this.#uflag = this.#uflag || uflag\n return re\n })\n .join('')\n\n let start = ''\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed =\n this.#parts.length === 1 && justDots.has(this.#parts[0])\n if (!dotTravAllowed) {\n const aps = addPatternStart\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav =\n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : ''\n }\n }\n }\n\n // append the \"end of path portion\" pattern to negation tails\n let end = ''\n if (\n this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!'\n ) {\n end = '(?:$|\\\\/)'\n }\n const final = start + src + end\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n\n const repeated = this.type === '*' || this.type === '+'\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n let body = (this as AST & { type: ExtglobType }).#partsToRegExp(dot)\n\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString()\n const me = this as AST\n me.#parts = [s]\n me.type = null\n me.#hasMagic = undefined\n return [s, unescape(this.toString()), false, false]\n }\n\n let bodyDotAllowed =\n !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true)\n if (bodyDotAllowed === body) {\n bodyDotAllowed = ''\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`\n }\n\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = ''\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n } else {\n const close =\n this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`\n final = start + body + close\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten()\n }\n }\n } else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0\n let done = false\n do {\n done = true\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i]\n if (typeof c === 'object') {\n c.#flatten()\n if (this.#canAdopt(c)) {\n done = false\n this.#adopt(c, i)\n } else if (this.#canAdoptWithSpace(c)) {\n done = false\n ;(this as AST & { type: ExtglobType }).#adoptWithSpace(c, i)\n } else if (this.#canUsurp(c)) {\n done = false\n ;(this as AST & { type: ExtglobType }).#usurp(c)\n }\n }\n }\n } while (!done && ++iterations < 10)\n }\n this.#toString = undefined\n }\n\n #partsToRegExp(this: AST & { type: ExtglobType }, dot: boolean) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??')\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n this.#uflag = this.#uflag || uflag\n return re\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|')\n }\n\n static #parseGlob(\n glob: string,\n hasMagic: boolean | undefined,\n noEmpty: boolean = false,\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n let escaping = false\n let re = ''\n let uflag = false\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i)\n if (escaping) {\n escaping = false\n re += (reSpecials.has(c) ? '\\\\' : '') + c\n continue\n }\n if (c === '*') {\n if (inStar) continue\n inStar = true\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star\n hasMagic = true\n continue\n } else {\n inStar = false\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\'\n } else {\n escaping = true\n }\n continue\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i)\n if (consumed) {\n re += src\n uflag = uflag || needUflag\n i += consumed - 1\n hasMagic = hasMagic || magic\n continue\n }\n }\n if (c === '?') {\n re += qmark\n hasMagic = true\n continue\n }\n re += regExpEscape(c)\n }\n return [re, unescape(glob), !!hasMagic, uflag]\n }\n}\n","import type { MinimatchOptions } from './index.js'\n\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n magicalBraces = false,\n }: Pick = {},\n) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&')\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n","import { expand } from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport type { ExtglobType } from './ast.js'\nimport { AST } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n | 'aix'\n | 'android'\n | 'darwin'\n | 'freebsd'\n | 'haiku'\n | 'linux'\n | 'openbsd'\n | 'sunos'\n | 'win32'\n | 'cygwin'\n | 'netbsd'\n\nexport interface MinimatchOptions {\n /** do not expand `{x,y}` style braces */\n nobrace?: boolean\n /** do not treat patterns starting with `#` as a comment */\n nocomment?: boolean\n /** do not treat patterns starting with `!` as a negation */\n nonegate?: boolean\n /** print LOTS of debugging output */\n debug?: boolean\n /** treat `**` the same as `*` */\n noglobstar?: boolean\n /** do not expand extglobs like `+(a|b)` */\n noext?: boolean\n /** return the pattern if nothing matches */\n nonull?: boolean\n /** treat `\\\\` as a path separator, not an escape character */\n windowsPathsNoEscape?: boolean\n /**\n * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n * @deprecated\n */\n allowWindowsEscape?: boolean\n /**\n * Compare a partial path to a pattern. As long as the parts\n * of the path that are present are not contradicted by the\n * pattern, it will be treated as a match. This is useful in\n * applications where you're walking through a folder structure,\n * and don't yet have the full path, but want to ensure that you\n * do not walk down paths that can never be a match.\n */\n partial?: boolean\n /** allow matches that start with `.` even if the pattern does not */\n dot?: boolean\n /** ignore case */\n nocase?: boolean\n /** ignore case only in wildcard patterns */\n nocaseMagicOnly?: boolean\n /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n magicalBraces?: boolean\n /**\n * If set, then patterns without slashes will be matched\n * against the basename of the path if it contains slashes.\n * For example, `a?b` would match the path `/xyz/123/acb`, but\n * not `/xyz/acb/123`.\n */\n matchBase?: boolean\n /** invert the results of negated matches */\n flipNegate?: boolean\n /** do not collapse multiple `/` into a single `/` */\n preserveMultipleSlashes?: boolean\n /**\n * A number indicating the level of optimization that should be done\n * to the pattern prior to parsing and using it for matches.\n */\n optimizationLevel?: number\n /** operating system platform */\n platform?: Platform\n /**\n * When a pattern starts with a UNC path or drive letter, and in\n * `nocase:true` mode, do not convert the root portions of the\n * pattern into a case-insensitive regular expression, and instead\n * leave them as strings.\n *\n * This is the default when the platform is `win32` and\n * `nocase:true` is set.\n */\n windowsNoMagicRoot?: boolean\n /**\n * max number of `{...}` patterns to expand. Default 100_000.\n */\n braceExpandMax?: number\n /**\n * Max number of non-adjacent `**` patterns to recursively walk down.\n *\n * The default of 200 is almost certainly high enough for most purposes,\n * and can handle absurdly excessive patterns.\n */\n maxGlobstarRecursion?: number\n\n /**\n * Max depth to traverse for nested extglobs like `*(a|b|c)`\n *\n * Default is 2, which is quite low, but any higher value\n * swiftly results in punishing performance impacts. Note\n * that this is *not* relevant when the globstar types can\n * be safely coalesced into a single set.\n *\n * For example, `*(a|@(b|c)|d)` would be flattened into\n * `*(a|b|c|d)`. Thus, many common extglobs will retain good\n * performance and never hit this limit, even if they are\n * excessively deep and complicated.\n *\n * If the limit is hit, then the extglob characters are simply\n * not parsed, and the pattern effectively switches into\n * `noextglob: true` mode for the contents of that nested\n * sub-pattern. This will typically _not_ result in a match,\n * but is considered a valid trade-off for security and\n * performance.\n */\n maxExtglobRecursion?: number\n}\n\nexport const minimatch = (\n p: string,\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?*[(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) =>\n !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) =>\n f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) =>\n f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?*[(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n typeof process === 'object' && process ?\n (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n (pattern: string, options: MinimatchOptions = {}) =>\n (p: string) =>\n minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n orig(p, pattern, ext(def, options))\n\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern: string, options: MinimatchOptions = {}) {\n super(pattern, ext(def, options))\n }\n static defaults(options: MinimatchOptions) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n },\n\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {},\n ) {\n super(type, parent, ext(def, options))\n }\n /* c8 ignore stop */\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options))\n }\n },\n\n unescape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.unescape(s, ext(def, options)),\n\n escape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.escape(s, ext(def, options)),\n\n filter: (pattern: string, options: MinimatchOptions = {}) =>\n orig.filter(pattern, ext(def, options)),\n\n defaults: (options: MinimatchOptions) =>\n orig.defaults(ext(def, options)),\n\n makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n orig.makeRe(pattern, ext(def, options)),\n\n braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n orig.braceExpand(pattern, ext(def, options)),\n\n match: (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n ) => orig.match(list, pattern, ext(def, options)),\n\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n _src?: string\n _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n options: MinimatchOptions\n set: ParseReturnFiltered[][]\n pattern: string\n\n windowsPathsNoEscape: boolean\n nonegate: boolean\n negate: boolean\n comment: boolean\n empty: boolean\n preserveMultipleSlashes: boolean\n partial: boolean\n globSet: string[]\n globParts: string[][]\n nocase: boolean\n\n isWindows: boolean\n platform: Platform\n windowsNoMagicRoot: boolean\n maxGlobstarRecursion: number\n\n regexp: false | null | MMRegExp\n constructor(pattern: string, options: MinimatchOptions = {}) {\n assertValidPattern(pattern)\n\n options = options || {}\n this.options = options\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200\n this.pattern = pattern\n this.platform = options.platform || defaultPlatform\n this.isWindows = this.platform === 'win32'\n // avoid the annoying deprecation flag lol\n const awe = ('allowWindow' + 'sEscape') as keyof MinimatchOptions\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options[awe] === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n this.regexp = null\n this.negate = false\n this.nonegate = !!options.nonegate\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n this.nocase = !!this.options.nocase\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined ?\n options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase)\n\n this.globSet = []\n this.globParts = []\n this.set = []\n\n // make the set of regexps etc.\n this.make()\n }\n\n hasMagic(): boolean {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string') return true\n }\n }\n return false\n }\n\n debug(..._: unknown[]) {}\n\n make() {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())]\n\n if (options.debug) {\n //oxlint-disable-next-line no-console\n this.debug = (...args: unknown[]) => console.error(...args)\n }\n\n this.debug(this.pattern, this.globSet)\n\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n this.globParts = this.preprocess(rawGlobParts)\n this.debug(this.pattern, this.globParts)\n\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3])\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [\n ...s.slice(0, 4),\n ...s.slice(4).map(ss => this.parse(ss)),\n ]\n } else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1,\n ) as ParseReturnFiltered[][]\n\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i]\n if (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])\n ) {\n p[2] = '?'\n }\n }\n }\n\n this.debug(this.pattern, this.set)\n }\n\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts: string[][]) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (const partset of globParts) {\n for (let j = 0; j < partset.length; j++) {\n if (partset[j] === '**') {\n partset[j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs\n while (parts[i + 1] === '**') {\n i++\n }\n if (i !== gs) {\n parts.splice(gs, i - gs)\n }\n }\n return parts\n })\n }\n\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop()\n return set\n }\n }\n set.push(part)\n return set\n }, [])\n return parts.length === 0 ? [''] : parts\n })\n }\n\n levelTwoFileOptimize(parts: string | string[]) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts)\n }\n let didSomething: boolean = false\n\n do {\n didSomething = false\n //